@jumio/websdk
Version:
Jumio WebSDK is a powerful, flexible software development kit that simplifies the integration of Jumio's services into your web applications.
6 lines • 1.38 MB
JavaScript
const l = "data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KLyoqCiAqIHBkZmpzVmVyc2lvbiA9IDUuMy45MwogKiBwZGZqc0J1aWxkID0gY2JlZWYzMjMzCiAqLwpjb25zdCBlPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSx0PVsuMDAxLDAsMCwuMDAxLDAsMF0sYT0xLjM1LHI9LjM1LGk9LjI1OTI1OTI1OTI1OTI1OTI0LG49MSxzPTIsbz00LGM9OCxsPTE2LGg9NjQsdT0xMjgsZD0yNTYsZj0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyIsZz0zLHA9OSxtPTEzLGI9MTUseT0xMDEsdz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fSx4PTAsUz00LGs9MSxDPTIsdj0zLEY9MSxUPTIsTz0zLE09NCxEPTUsUj02LE49NyxFPTgsTD05LGo9MTAsXz0xMSxVPTEyLFg9MTMscT0xNCxIPTE1LFc9MTYsej0xNywkPTIwLEc9Ikdyb3VwIixWPSJSIixLPTEsSj0yLFk9NCxaPTE2LFE9MzIsZWU9MTI4LHRlPTUxMixhZT0xLHJlPTIsaWU9NDA5NixuZT04MTkyLHNlPTMyNzY4LG9lPTY1NTM2LGNlPTEzMTA3MixsZT0xMDQ4NTc2LGhlPTIwOTcxNTIsdWU9ODM4ODYwOCxkZT0xNjc3NzIxNixmZT0xLGdlPTIscGU9MyxtZT00LGJlPTUseWU9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9LHdlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifSx4ZT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9LFNlPTEsa2U9NSxBZT0xLENlPTIsdmU9MyxGZT00LEllPTUsVGU9NixPZT03LE1lPTgsRGU9OSxCZT0xMCxSZT0xMSxOZT0xMixFZT0xMyxQZT0xNCxMZT0xNSxqZT0xNixfZT0xNyxVZT0xOCxYZT0xOSxxZT0yMCxIZT0yMSxXZT0yMix6ZT0yMywkZT0yNCxHZT0yNSxWZT0yNixLZT0yNyxKZT0yOCxZZT0yOSxaZT0zMCxRZT0zMSxldD0zMix0dD0zMyxhdD0zNCxydD0zNSxpdD0zNixudD0zNyxzdD0zOCxvdD0zOSxjdD00MCxsdD00MSxodD00Mix1dD00MyxkdD00NCxmdD00NSxndD00NixwdD00NyxtdD00OCxidD00OSx5dD01MCx3dD01MSx4dD01MixTdD01MyxrdD01NCxBdD01NSxDdD01Nix2dD01NyxGdD01OCxJdD01OSxUdD02MCxPdD02MSxNdD02MixEdD02MyxCdD02NCxSdD02NSxOdD02NixFdD02NyxQdD02OCxMdD02OSxqdD03MCxfdD03MSxVdD03MixYdD03MyxxdD03NCxIdD03NSxXdD03Nix6dD03NywkdD04MCxHdD04MSxWdD04MyxLdD04NCxKdD04NSxZdD04NixadD04NyxRdD04OCxlYT04OSx0YT05MCxhYT05MSxyYT05MixpYT05MyxuYT05NCxzYT0wLG9hPTEsY2E9MixsYT0zLGhhPTEsdWE9MjtsZXQgZGE9U2U7ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gZGF9ZnVuY3Rpb24gaW5mbyhlKXtkYT49a2UmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9ZnVuY3Rpb24gd2FybihlKXtkYT49U2UmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIGFzc2VydChlLHQpe2V8fHVucmVhY2hhYmxlKHQpfWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDtpZihhJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGEuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IHI9dD9VUkwucGFyc2UoZSx0KTpVUkwucGFyc2UoZSk7cmV0dXJuIGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2woZSl7c3dpdGNoKGU/LnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpP3I6bnVsbH1mdW5jdGlvbiBzaGFkb3coZSx0LGEscj0hMSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiFyLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IGZhPWZ1bmN0aW9uIEJhc2VFeGNlcHRpb25DbG9zdXJlKCl7ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbihlLHQpe3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7Y2xhc3MgUGFzc3dvcmRFeGNlcHRpb24gZXh0ZW5kcyBmYXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPXR9fWNsYXNzIFVua25vd25FcnJvckV4Y2VwdGlvbiBleHRlbmRzIGZhe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPXR9fWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBmYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJJbnZhbGlkUERGRXhjZXB0aW9uIil9fWNsYXNzIFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgZmF7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGUsIlJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dDt0aGlzLm1pc3Npbmc9YX19Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBmYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJGb3JtYXRFcnJvciIpfX1jbGFzcyBBYm9ydEV4Y2VwdGlvbiBleHRlbmRzIGZhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkFib3J0RXhjZXB0aW9uIil9fWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZ2b2lkIDAhPT1lPy5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IGk9MDtpPHQ7aSs9YSl7Y29uc3Qgbj1NYXRoLm1pbihpK2EsdCkscz1lLnN1YmFycmF5KGksbik7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIG9iamVjdFNpemUoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aH1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDQpO2VbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9c3RhdGljIGdldCBpc0ltYWdlRGVjb2RlclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEZWNvZGVyKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3R7cGxhdGZvcm06ZSx1c2VyQWdlbnQ6dH09bmF2aWdhdG9yO3JldHVybiBzaGFkb3codGhpcywicGxhdGZvcm0iLHtpc0FuZHJvaWQ6dC5pbmNsdWRlcygiQW5kcm9pZCIpLGlzTGludXg6ZS5pbmNsdWRlcygiTGludXgiKSxpc01hYzplLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6ZS5pbmNsdWRlcygiV2luIiksaXNGaXJlZm94OnQuaW5jbHVkZXMoIkZpcmVmb3giKX0pfXN0YXRpYyBnZXQgaXNDU1NSb3VuZFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNDU1NSb3VuZFN1cHBvcnRlZCIsZ2xvYmFsVGhpcy5DU1M/LnN1cHBvcnRzPy4oIndpZHRoOiByb3VuZCgxLjVweCwgMXB4KSIpKX19Y29uc3QgZ2E9QXJyYXkuZnJvbShBcnJheSgyNTYpLmtleXMoKSwoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxhKXtyZXR1cm5gIyR7Z2FbZV19JHtnYVt0XX0ke2dhW2FdfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGE7aWYoZVswXSl7aWYoZVswXTwwKXthPXRbMF07dFswXT10WzJdO3RbMl09YX10WzBdKj1lWzBdO3RbMl0qPWVbMF07aWYoZVszXTwwKXthPXRbMV07dFsxXT10WzNdO3RbM109YX10WzFdKj1lWzNdO3RbM10qPWVbM119ZWxzZXthPXRbMF07dFswXT10WzFdO3RbMV09YTthPXRbMl07dFsyXT10WzNdO3RbM109YTtpZihlWzFdPDApe2E9dFsxXTt0WzFdPXRbM107dFszXT1hfXRbMV0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2E9dFswXTt0WzBdPXRbMl07dFsyXT1hfXRbMF0qPWVbMl07dFsyXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNV07dFsyXSs9ZVs0XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0LGE9MCl7Y29uc3Qgcj1lW2FdLGk9ZVthKzFdO2VbYV09cip0WzBdK2kqdFsyXSt0WzRdO2VbYSsxXT1yKnRbMV0raSp0WzNdK3RbNV19c3RhdGljIGFwcGx5VHJhbnNmb3JtVG9CZXppZXIoZSx0LGE9MCl7Y29uc3Qgcj10WzBdLGk9dFsxXSxuPXRbMl0scz10WzNdLG89dFs0XSxjPXRbNV07Zm9yKGxldCB0PTA7dDw2O3QrPTIpe2NvbnN0IGw9ZVthK3RdLGg9ZVthK3QrMV07ZVthK3RdPWwqcitoKm4rbztlW2ErdCsxXT1sKmkraCpzK2N9fXN0YXRpYyBhcHBseUludmVyc2VUcmFuc2Zvcm0oZSx0KXtjb25zdCBhPWVbMF0scj1lWzFdLGk9dFswXSp0WzNdLXRbMV0qdFsyXTtlWzBdPShhKnRbM10tcip0WzJdK3RbMl0qdFs1XS10WzRdKnRbM10pL2k7ZVsxXT0oLWEqdFsxXStyKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvaX1zdGF0aWMgYXhpYWxBbGlnbmVkQm91bmRpbmdCb3goZSx0LGEpe2NvbnN0IHI9dFswXSxpPXRbMV0sbj10WzJdLHM9dFszXSxvPXRbNF0sYz10WzVdLGw9ZVswXSxoPWVbMV0sdT1lWzJdLGQ9ZVszXTtsZXQgZj1yKmwrbyxnPWYscD1yKnUrbyxtPXAsYj1zKmgrYyx5PWIsdz1zKmQrYyx4PXc7aWYoMCE9PWl8fDAhPT1uKXtjb25zdCBlPWkqbCx0PWkqdSxhPW4qaCxyPW4qZDtmKz1hO20rPWE7cCs9cjtnKz1yO2IrPWU7eCs9ZTt3Kz10O3krPXR9YVswXT1NYXRoLm1pbihhWzBdLGYscCxnLG0pO2FbMV09TWF0aC5taW4oYVsxXSxiLHcseSx4KTthWzJdPU1hdGgubWF4KGFbMl0sZixwLGcsbSk7YVszXT1NYXRoLm1heChhWzNdLGIsdyx5LHgpfXN0YXRpYyBpbnZlcnNlVHJhbnNmb3JtKGUpe2NvbnN0IHQ9ZVswXSplWzNdLWVbMV0qZVsyXTtyZXR1cm5bZVszXS90LC1lWzFdL3QsLWVbMl0vdCxlWzBdL3QsKGVbMl0qZVs1XS1lWzRdKmVbM10pL3QsKGVbNF0qZVsxXS1lWzVdKmVbMF0pL3RdfXN0YXRpYyBzaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShlLHQpe2NvbnN0IGE9ZVswXSxyPWVbMV0saT1lWzJdLG49ZVszXSxzPWEqKjIrcioqMixvPWEqaStyKm4sYz1pKioyK24qKjIsbD0ocytjKS8yLGg9TWF0aC5zcXJ0KGwqKjItKHMqYy1vKioyKSk7dFswXT1NYXRoLnNxcnQobCtofHwxKTt0WzFdPU1hdGguc3FydChsLWh8fDEpfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+cilyZXR1cm4gbnVsbDtjb25zdCBpPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSksbj1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBpPm4/bnVsbDpbYSxpLHIsbl19c3RhdGljIHBvaW50Qm91bmRpbmdCb3goZSx0LGEpe2FbMF09TWF0aC5taW4oYVswXSxlKTthWzFdPU1hdGgubWluKGFbMV0sdCk7YVsyXT1NYXRoLm1heChhWzJdLGUpO2FbM109TWF0aC5tYXgoYVszXSx0KX1zdGF0aWMgcmVjdEJvdW5kaW5nQm94KGUsdCxhLHIsaSl7aVswXT1NYXRoLm1pbihpWzBdLGUsYSk7aVsxXT1NYXRoLm1pbihpWzFdLHQscik7aVsyXT1NYXRoLm1heChpWzJdLGUsYSk7aVszXT1NYXRoLm1heChpWzNdLHQscil9c3RhdGljI2UoZSx0LGEscixpLG4scyxvLGMsbCl7aWYoYzw9MHx8Yz49MSlyZXR1cm47Y29uc3QgaD0xLWMsdT1jKmMsZD11KmMsZj1oKihoKihoKmUrMypjKnQpKzMqdSphKStkKnIsZz1oKihoKihoKmkrMypjKm4pKzMqdSpzKStkKm87bFswXT1NYXRoLm1pbihsWzBdLGYpO2xbMV09TWF0aC5taW4obFsxXSxnKTtsWzJdPU1hdGgubWF4KGxbMl0sZik7bFszXT1NYXRoLm1heChsWzNdLGcpfXN0YXRpYyN0KGUsdCxhLHIsaSxuLHMsbyxjLGwsaCx1KXtpZihNYXRoLmFicyhjKTwxZS0xMil7TWF0aC5hYnMobCk+PTFlLTEyJiZ0aGlzLiNlKGUsdCxhLHIsaSxuLHMsbywtaC9sLHUpO3JldHVybn1jb25zdCBkPWwqKjItNCpoKmM7aWYoZDwwKXJldHVybjtjb25zdCBmPU1hdGguc3FydChkKSxnPTIqYzt0aGlzLiNlKGUsdCxhLHIsaSxuLHMsbywoLWwrZikvZyx1KTt0aGlzLiNlKGUsdCxhLHIsaSxuLHMsbywoLWwtZikvZyx1KX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LGEscixpLG4scyxvLGMpe2NbMF09TWF0aC5taW4oY1swXSxlLHMpO2NbMV09TWF0aC5taW4oY1sxXSx0LG8pO2NbMl09TWF0aC5tYXgoY1syXSxlLHMpO2NbM109TWF0aC5tYXgoY1szXSx0LG8pO3RoaXMuI3QoZSxhLGkscyx0LHIsbixvLDMqKDMqKGEtaSktZStzKSw2KihlLTIqYStpKSwzKihhLWUpLGMpO3RoaXMuI3QoZSxhLGkscyx0LHIsbixvLDMqKDMqKHItbiktdCtvKSw2Kih0LTIqcituKSwzKihyLXQpLGMpfX1jb25zdCBwYT1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcoZSx0PSExKXtpZihlWzBdPj0iw68iKXtsZXQgYTtpZigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0pe2E9InV0Zi0xNmJlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIGlmKCLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXSl7YT0idXRmLTE2bGUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2Uiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYoYT0idXRmLTgiKTtpZihhKXRyeXtjb25zdCByPW5ldyBUZXh0RGVjb2RlcihhLHtmYXRhbDohMH0pLGk9c3RyaW5nVG9CeXRlcyhlKSxuPXIuZGVjb2RlKGkpO3JldHVybiB0fHwhbi5pbmNsdWRlcygiGyIpP246bi5yZXBsYWNlQWxsKC9ceDFiW15ceDFiXSooPzpceDFifCQpL2csIiIpfWNhdGNoKGUpe3dhcm4oYHN0cmluZ1RvUERGU3RyaW5nOiAiJHtlfSIuYCl9fWNvbnN0IGE9W107Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdCBuPWUuY2hhckNvZGVBdChyKTtpZighdCYmMjc9PT1uKXtmb3IoOysrcjxpJiYyNyE9PWUuY2hhckNvZGVBdChyKTspO2NvbnRpbnVlfWNvbnN0IHM9cGFbbl07YS5wdXNoKHM/U3RyaW5nLmZyb21DaGFyQ29kZShzKTplLmNoYXJBdChyKSl9cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX1mdW5jdGlvbiB1dGY4U3RyaW5nVG9TdHJpbmcoZSl7cmV0dXJuIHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSl9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaWYoZVthXSE9PXRbYV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfWxldCBtYT1udWxsLGJhPW51bGw7ZnVuY3Rpb24gTWF0aENsYW1wKGUsdCxhKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxhKX1mdW5jdGlvbiB0b0hleFV0aWwoZSl7cmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSGV4P2UudG9IZXgoKTpBcnJheS5mcm9tKGUsKGU9PmdhW2VdKSkuam9pbigiIil9ImZ1bmN0aW9uIiE9dHlwZW9mIFByb21pc2UudHJ5JiYoUHJvbWlzZS50cnk9ZnVuY3Rpb24oZSwuLi50KXtyZXR1cm4gbmV3IFByb21pc2UoKGE9PnthKGUoLi4udCkpfSkpfSk7ImZ1bmN0aW9uIiE9dHlwZW9mIE1hdGguc3VtUHJlY2lzZSYmKE1hdGguc3VtUHJlY2lzZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApfSk7Y29uc3QgeWE9U3ltYm9sKCJDSVJDVUxBUl9SRUYiKSx3YT1TeW1ib2woIkVPRiIpO2xldCB4YT1PYmplY3QuY3JlYXRlKG51bGwpLFNhPU9iamVjdC5jcmVhdGUobnVsbCksa2E9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBOYW1le2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIFNhW2VdfHw9bmV3IE5hbWUoZSl9fWNsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIHhhW2VdfHw9bmV3IENtZChlKX19Y29uc3QgQWE9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBBYX07Y2xhc3MgRGljdHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX21hcD1uZXcgTWFwO3RoaXMueHJlZj1lO3RoaXMub2JqSWQ9bnVsbDt0aGlzLnN1cHByZXNzRW5jcnlwdGlvbj0hMTt0aGlzLl9fbm9uU2VyaWFsaXphYmxlX189QWF9YXNzaWduWHJlZihlKXt0aGlzLnhyZWY9ZX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSx0LGEpe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcC5nZXQoYSkpfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnJ9YXN5bmMgZ2V0QXN5bmMoZSx0LGEpe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcC5nZXQoYSkpfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwLmdldChlKTtpZih2b2lkIDA9PT1yJiZ2b2lkIDAhPT10KXtyPXRoaXMuX21hcC5nZXQodCk7dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwLmdldChhKSl9ciBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYocj10aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpO2lmKEFycmF5LmlzQXJyYXkocikpe3I9ci5zbGljZSgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylyW2VdaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKHJbZV09dGhpcy54cmVmLmZldGNoKHJbZV0sdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKX1yZXR1cm4gcn1nZXRSYXcoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZSl9Z2V0S2V5cygpe3JldHVyblsuLi50aGlzLl9tYXAua2V5cygpXX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm5bLi4udGhpcy5fbWFwLnZhbHVlcygpXX1zZXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUsdCl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUpfSpbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcihjb25zdFtlLHRdb2YgdGhpcy5fbWFwKXlpZWxkW2UsdCBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaCh0LHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTp0XX1zdGF0aWMgZ2V0IGVtcHR5KCl7Y29uc3QgZT1uZXcgRGljdChudWxsKTtlLnNldD0oZSx0KT0+e3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYHNldGAgb24gdGhlIGVtcHR5IGRpY3Rpb25hcnkuIil9O3JldHVybiBzaGFkb3codGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6YT0hMX0pe2NvbnN0IHI9bmV3IERpY3QoZSksaT1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qscl1vZiBlLl9tYXApe2xldCBlPWkuZ2V0KHQpO2lmKHZvaWQgMD09PWUpe2U9W107aS5zZXQodCxlKX1lbHNlIGlmKCEoYSYmciBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2UucHVzaChyKX1mb3IoY29uc3RbdCxhXW9mIGkpe2lmKDE9PT1hLmxlbmd0aHx8IShhWzBdaW5zdGFuY2VvZiBEaWN0KSl7ci5fbWFwLnNldCh0LGFbMF0pO2NvbnRpbnVlfWNvbnN0IGk9bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIGUuX21hcClpLl9tYXAuaGFzKHQpfHxpLl9tYXAuc2V0KHQsYSk7aS5zaXplPjAmJnIuX21hcC5zZXQodCxpKX1pLmNsZWFyKCk7cmV0dXJuIHIuc2l6ZT4wP3I6RGljdC5lbXB0eX1jbG9uZSgpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgdCBvZiB0aGlzLmdldEtleXMoKSllLnNldCh0LHRoaXMuZ2V0UmF3KHQpKTtyZXR1cm4gZX1kZWxldGUoZSl7ZGVsZXRlIHRoaXMuX21hcFtlXX19Y2xhc3MgUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5udW09ZTt0aGlzLmdlbj10fXRvU3RyaW5nKCl7cmV0dXJuIDA9PT10aGlzLmdlbj9gJHt0aGlzLm51bX1SYDpgJHt0aGlzLm51bX1SJHt0aGlzLmdlbn1gfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2NvbnN0IHQ9a2FbZV07aWYodClyZXR1cm4gdDtjb25zdCBhPS9eKFxkKylSKFxkKikkLy5leGVjKGUpO3JldHVybiBhJiYiMCIhPT1hWzFdP2thW2VdPW5ldyBSZWYocGFyc2VJbnQoYVsxXSksYVsyXT9wYXJzZUludChhWzJdKTowKTpudWxsfXN0YXRpYyBnZXQoZSx0KXtjb25zdCBhPTA9PT10P2Ake2V9UmA6YCR7ZX1SJHt0fWA7cmV0dXJuIGthW2FdfHw9bmV3IFJlZihlLHQpfX1jbGFzcyBSZWZTZXR7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9zZXQ9bmV3IFNldChlPy5fc2V0KX1oYXMoZSl7cmV0dXJuIHRoaXMuX3NldC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSl7dGhpcy5fc2V0LmFkZChlLnRvU3RyaW5nKCkpfXJlbW92ZShlKXt0aGlzLl9zZXQuZGVsZXRlKGUudG9TdHJpbmcoKSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fc2V0LnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fc2V0LmNsZWFyKCl9fWNsYXNzIFJlZlNldENhY2hle2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9cHV0QWxpYXMoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9KnZhbHVlcygpe3lpZWxkKnRoaXMuX21hcC52YWx1ZXMoKX0qaXRlbXMoKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtSZWYuZnJvbVN0cmluZyhlKSx0XX19ZnVuY3Rpb24gaXNOYW1lKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lJiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIENtZCYmKHZvaWQgMD09PXR8fGUuY21kPT09dCl9ZnVuY3Rpb24gaXNEaWN0KGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0JiYodm9pZCAwPT09dHx8aXNOYW1lKGUuZ2V0KCJUeXBlIiksdCkpfWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59Y2xhc3MgQmFzZVN0cmVhbXtnZXQgbGVuZ3RoKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgbGVuZ3RoYCBhY2Nlc3NlZCIpfWdldCBpc0VtcHR5KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgaXNFbXB0eWAgYWNjZXNzZWQiKX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe3JldHVybiB0aGlzLmdldEJ5dGVzKGUsdCl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGFzeW5jR2V0Qnl0ZXNgIGNhbGxlZCIpfWdldCBpc0FzeW5jKCl7cmV0dXJuITF9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITF9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuITF9YXN5bmMgZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKXtyZXR1cm4gbnVsbH1wZWVrQnl0ZSgpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7LTEhPT1lJiZ0aGlzLnBvcy0tO3JldHVybiBlfXBlZWtCeXRlcyhlKXtjb25zdCB0PXRoaXMuZ2V0Qnl0ZXMoZSk7dGhpcy5wb3MtPXQubGVuZ3RoO3JldHVybiB0fWdldFVpbnQxNigpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCksdD10aGlzLmdldEJ5dGUoKTtyZXR1cm4tMT09PWV8fC0xPT09dD8tMTooZTw8OCkrdH1nZXRJbnQzMigpe3JldHVybih0aGlzLmdldEJ5dGUoKTw8MjQpKyh0aGlzLmdldEJ5dGUoKTw8MTYpKyh0aGlzLmdldEJ5dGUoKTw8OCkrdGhpcy5nZXRCeXRlKCl9Z2V0Qnl0ZVJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZVJhbmdlYCBjYWxsZWQiKX1nZXRTdHJpbmcoZSl7cmV0dXJuIGJ5dGVzVG9TdHJpbmcodGhpcy5nZXRCeXRlcyhlKSl9c2tpcChlKXt0aGlzLnBvcys9ZXx8MX1yZXNldCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlc2V0YCBjYWxsZWQiKX1tb3ZlU3RhcnQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtb3ZlU3RhcnRgIGNhbGxlZCIpfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbWFrZVN1YlN0cmVhbWAgY2FsbGVkIil9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gbnVsbH19Y29uc3QgQ2E9L15bMS05XVwuXGQkLyx2YT0yKiozMS0xLEZhPVsxLDAsMCwxLDAsMF0sSWE9WyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSxUYT1bIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdO2Z1bmN0aW9uIGdldExvb2t1cFRhYmxlRmFjdG9yeShlKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24oKXtpZihlKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSh0KTtlPW51bGx9cmV0dXJuIHR9fWNsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgZmF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihgTWlzc2luZyBkYXRhIFske2V9LCAke3R9KWAsIk1pc3NpbmdEYXRhRXhjZXB0aW9uIik7dGhpcy5iZWdpbj1lO3RoaXMuZW5kPXR9fWNsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIGZhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlBhcnNlckVPRkV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmRW50cnlFeGNlcHRpb24gZXh0ZW5kcyBmYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19Y2xhc3MgWFJlZlBhcnNlRXhjZXB0aW9uIGV4dGVuZHMgZmF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZlBhcnNlRXhjZXB0aW9uIil9fWZ1bmN0aW9uIGFycmF5QnVmZmVyc1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7aWYoMT09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KGVbMF0pO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhKz1lW3JdLmJ5dGVMZW5ndGg7Y29uc3Qgcj1uZXcgVWludDhBcnJheShhKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZVthXSk7ci5zZXQodCxpKTtpKz10LmJ5dGVMZW5ndGh9cmV0dXJuIHJ9YXN5bmMgZnVuY3Rpb24gZmV0Y2hCaW5hcnlEYXRhKGUpe2NvbnN0IHQ9YXdhaXQgZmV0Y2goZSk7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHtlfSIgd2l0aCAiJHt0LnN0YXR1c1RleHR9Ii5gKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgdC5hcnJheUJ1ZmZlcigpKX1mdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6YT0hMSxzdG9wV2hlbkZvdW5kOnI9ITB9KXtsZXQgaTtjb25zdCBuPW5ldyBSZWZTZXQ7Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmKCFlLm9iaklkfHwhbi5oYXMoZS5vYmpJZCkpOyl7ZS5vYmpJZCYmbi5wdXQoZS5vYmpJZCk7Y29uc3Qgcz1hP2UuZ2V0QXJyYXkodCk6ZS5nZXQodCk7aWYodm9pZCAwIT09cyl7aWYocilyZXR1cm4gczsoaXx8PVtdKS5wdXNoKHMpfWU9ZS5nZXQoIlBhcmVudCIpfXJldHVybiBpfWNvbnN0IE9hPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gdG9Sb21hbk51bWVyYWxzKGUsdD0hMSl7YXNzZXJ0KE51bWJlci5pc0ludGVnZXIoZSkmJmU+MCwiVGhlIG51bWJlciBzaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLiIpO2NvbnN0IGE9Ik0iLnJlcGVhdChlLzFlM3wwKStPYVtlJTFlMy8xMDB8MF0rT2FbMTArKGUlMTAwLzEwfDApXStPYVsyMCtlJTEwXTtyZXR1cm4gdD9hLnRvTG93ZXJDYXNlKCk6YX1mdW5jdGlvbiBsb2cyKGUpe3JldHVybiBlPjA/TWF0aC5jZWlsKE1hdGgubG9nMihlKSk6MH1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gcmVhZEludDE2KGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTYpPj4xNn1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIHJlYWRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX1mdW5jdGlvbiBpc051bWJlckFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/KG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4ibnVtYmVyIj09dHlwZW9mIGUpKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJiEoZSBpbnN0YW5jZW9mIEJpZ0ludDY0QXJyYXl8fGUgaW5zdGFuY2VvZiBCaWdVaW50NjRBcnJheSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcCgoZT0+e2NvbnN0IGE9ZS5tYXRjaCh0KTtyZXR1cm4gYT97bmFtZTphWzFdLHBvczpwYXJzZUludChhWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBhPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdCBpPWUuY2hhckNvZGVBdChyKTtpZihpPDMzfHxpPjEyNnx8MzU9PT1pfHw0MD09PWl8fDQxPT09aXx8NjA9PT1pfHw2Mj09PWl8fDkxPT09aXx8OTM9PT1pfHwxMjM9PT1pfHwxMjU9PT1pfHw0Nz09PWl8fDM3PT09aSl7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKGAjJHtpLnRvU3RyaW5nKDE2KX1gKTthPXIrMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfWZ1bmN0aW9uIF9jb2xsZWN0SlMoZSx0LGEscil7aWYoIWUpcmV0dXJuO2xldCBpPW51bGw7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoci5oYXMoZSkpcmV0dXJuO2k9ZTtyLnB1dChpKTtlPXQuZmV0Y2goZSl9aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgaSBvZiBlKV9jb2xsZWN0SlMoaSx0LGEscik7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgcjt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9yPXQuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB0JiYocj10KTtyJiY9c3RyaW5nVG9QREZTdHJpbmcociwhMCkucmVwbGFjZUFsbCgiXDAiLCIiKTtyJiZhLnB1c2gocil9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsYSxyKX1pJiZyLnJlbW92ZShpKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihpKWZvcihsZXQgdD1pLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBuPWlbdF07aWYobiBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygbi5nZXRLZXlzKCkpe2NvbnN0IGk9YVt0XTtpZighaSljb250aW51ZTtjb25zdCBzPVtdO19jb2xsZWN0SlMobi5nZXRSYXcodCksZSxzLG5ldyBSZWZTZXQpO3MubGVuZ3RoPjAmJihyW2ldPXMpfX1pZih0LmhhcygiQSIpKXtjb25zdCBhPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGEsbmV3IFJlZlNldCk7YS5sZW5ndGg+MCYmKHIuQWN0aW9uPWEpfXJldHVybiBvYmplY3RTaXplKHIpPjA/cjpudWxsfWNvbnN0IE1hPXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY29kZVBvaW50QXQodCk7YT41NTI5NSYmKGE8NTczNDR8fGE+NjU1MzMpJiZ0Kys7eWllbGQgYX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1pJiZpPD0xMjYpe2NvbnN0IG49TWFbaV07aWYobil7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKG4pO2E9cisxfX1lbHNle2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgJiN4JHtpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJnIrKzthPXIrMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGE9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGEmJmFbMV09PT1hWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHthWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7YVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChhKXx8IS9eW1x3LVxcXSskLy50ZXN0KGEpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6cixpdGFsaWNBbmdsZTppfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGEsITApKXJldHVybiExO2NvbnN0IG49cj9yLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKG4pP246IjQwMCI7Y29uc3Qgcz1wYXJzZUZsb2F0KGkpO2UuaXRhbGljQW5nbGU9aXNOYU4ocyl8fHM8LTkwfHxzPjkwPyIxNCI6aS50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLHJdb2YgZSl7aWYoIWEuc3RhcnRzV2l0aChmKSljb250aW51ZTtsZXQgZT10LmdldChyLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoci5wYWdlSW5kZXgsZSl9ZS5wdXNoKHIpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gZnVuY3Rpb24gaXNBc2NpaShlKXtyZXR1cm4vXltceDAwLVx4N0ZdKiQvLnRlc3QoZSl9KGUpP2U6c3RyaW5nVG9VVEYxNlN0cmluZyhlLCEwKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2SGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTt0LnB1c2goZ2Fbcj4+OCYyNTVdLGdhWzI1NSZyXSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IGE9W107dCYmYS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWUuY2hhckNvZGVBdCh0KTthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmcikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsYV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19ZnVuY3Rpb24gZ2V0U2l6ZUluQnl0ZXMoZSl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmNlaWwoTWF0aC5sb2cyKDErZSkpLzgpfWNsYXNzIFFDTVN7c3RhdGljI2E9bnVsbDtzdGF0aWMgX21lbW9yeT1udWxsO3N0YXRpYyBfbXVzdEFkZEFscGhhPSExO3N0YXRpYyBfZGVzdEJ1ZmZlcj1udWxsO3N0YXRpYyBfZGVzdE9mZnNldD0wO3N0YXRpYyBfZGVzdExlbmd0aD0wO3N0YXRpYyBfY3NzQ29sb3I9IiI7c3RhdGljIF9tYWtlSGV4Q29sb3I9bnVsbDtzdGF0aWMgZ2V0IF9tZW1vcnlBcnJheSgpe2NvbnN0IGU9dGhpcy4jYTtyZXR1cm4gZT8uYnl0ZUxlbmd0aD9lOnRoaXMuI2E9bmV3IFVpbnQ4QXJyYXkodGhpcy5fbWVtb3J5LmJ1ZmZlcil9fWxldCBEYTtjb25zdCBCYT0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyP25ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtpZ25vcmVCT006ITAsZmF0YWw6ITB9KTp7ZGVjb2RlOigpPT57dGhyb3cgRXJyb3IoIlRleHREZWNvZGVyIG5vdCBhdmFpbGFibGUiKX19OyJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXImJkJhLmRlY29kZSgpO2xldCBSYT1udWxsO2Z1bmN0aW9uIGdldFVpbnQ4QXJyYXlNZW1vcnkwKCl7bnVsbCE9PVJhJiYwIT09UmEuYnl0ZUxlbmd0aHx8KFJhPW5ldyBVaW50OEFycmF5KERhLm1lbW9yeS5idWZmZXIpKTtyZXR1cm4gUmF9bGV0IE5hPTA7ZnVuY3Rpb24gcGFzc0FycmF5OFRvV2FzbTAoZSx0KXtjb25zdCBhPXQoMSplLmxlbmd0aCwxKT4+PjA7Z2V0VWludDhBcnJheU1lbW9yeTAoKS5zZXQoZSxhLzEpO05hPWUubGVuZ3RoO3JldHVybiBhfWNvbnN0IEVhPU9iamVjdC5mcmVlemUoe1JHQjg6MCwwOiJSR0I4IixSR0JBODoxLDE6IlJHQkE4IixCR1JBODoyLDI6IkJHUkE4IixHcmF5ODozLDM6IkdyYXk4IixHcmF5QTg6NCw0OiJHcmF5QTgiLENNWUs6NSw1OiJDTVlLIn0pLFBhPU9iamVjdC5mcmVlemUoe1BlcmNlcHR1YWw6MCwwOiJQZXJjZXB0dWFsIixSZWxhdGl2ZUNvbG9yaW1ldHJpYzoxLDE6IlJlbGF0aXZlQ29sb3JpbWV0cmljIixTYXR1cmF0aW9uOjIsMjoiU2F0dXJhdGlvbiIsQWJzb2x1dGVDb2xvcmltZXRyaWM6MywzOiJBYnNvbHV0ZUNvbG9yaW1ldHJpYyJ9KTtmdW5jdGlvbiBfX3diZ19nZXRfaW1wb3J0cygpe2NvbnN0IGU9e3diZzp7fX07ZS53YmcuX193YmdfY29weXJlc3VsdF9iMDhlZTdkMjczZjI5NWRkPWZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uIGNvcHlfcmVzdWx0KGUsdCl7Y29uc3R7X211c3RBZGRBbHBoYTphLF9kZXN0QnVmZmVyOnIsX2Rlc3RPZmZzZXQ6aSxfZGVzdExlbmd0aDpuLF9tZW1vcnlBcnJheTpzfT1RQ01TO2lmKHQhPT1uKWlmKGEpZm9yKGxldCBhPWUsbj1lK3Qsbz1pO2E8bjthKz0zLG8rPTQpe3Jbb109c1thXTtyW28rMV09c1thKzFdO3JbbysyXT1zW2ErMl07cltvKzNdPTI1NX1lbHNlIGZvcihsZXQgYT1lLG49ZSt0LG89aTthPG47YSs9MyxvKz00KXtyW29dPXNbYV07cltvKzFdPXNbYSsxXTtyW28rMl09c1thKzJdfWVsc2Ugci5zZXQocy5zdWJhcnJheShlLGUrdCksaSl9KGU+Pj4wLHQ+Pj4wKX07ZS53YmcuX193YmdfY29weXJnYl9kNjBjZTE3YmIwNWQ5YjY3PWZ1bmN0aW9uKGUpeyFmdW5jdGlvbiBjb3B5X3JnYihlKXtjb25zdHtfZGVzdEJ1ZmZlcjp0LF9kZXN0T2Zmc2V0OmEsX21lbW9yeUFycmF5OnJ9PVFDTVM7dFthXT1yW2VdO3RbYSsxXT1yW2UrMV07dFthKzJdPXJbZSsyXX0oZT4+PjApfTtlLndiZy5fX3diZ19tYWtlY3NzUkdCXzg5M2JmMGNkOWZkYjMwMmQ9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uIG1ha2VfY3NzUkdCKGUpe2NvbnN0e19tZW1vcnlBcnJheTp0fT1RQ01TO1FDTVMuX2Nzc0NvbG9yPVFDTVMuX21ha2VIZXhDb2xvcih0W2VdLHRbZSsxXSx0W2UrMl0pfShlPj4+MCl9O2Uud2JnLl9fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGU9ZnVuY3Rpb24oKXtjb25zdCBlPURhLl9fd2JpbmRnZW5fZXhwb3J0XzAsdD1lLmdyb3coNCk7ZS5zZXQoMCx2b2lkIDApO2Uuc2V0KHQrMCx2b2lkIDApO2Uuc2V0KHQrMSxudWxsKTtlLnNldCh0KzIsITApO2Uuc2V0KHQrMywhMSl9O2Uud2JnLl9fd2JpbmRnZW5fdGhyb3c9ZnVuY3Rpb24oZSx0KXt0aHJvdyBuZXcgRXJyb3IoZnVuY3Rpb24gZ2V0U3RyaW5nRnJvbVdhc20wKGUsdCl7ZT4+Pj0wO3JldHVybiBCYS5kZWNvZGUoZ2V0VWludDhBcnJheU1lbW9yeTAoKS5zdWJhcnJheShlLGUrdCkpfShlLHQpKX07cmV0dXJuIGV9ZnVuY3Rpb24gX193YmdfZmluYWxpemVfaW5pdChlLHQpe0RhPWUuZXhwb3J0cztfX3diZ19pbml0Ll9fd2JpbmRnZW5fd2FzbV9tb2R1bGU9dDtSYT1udWxsO0RhLl9fd2JpbmRnZW5fc3RhcnQoKTtyZXR1cm4gRGF9YXN5bmMgZnVuY3Rpb24gX193YmdfaW5pdChlKXtpZih2b2lkIDAhPT1EYSlyZXR1cm4gRGE7dm9pZCAwIT09ZSYmKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGU/KHttb2R1bGVfb3JfcGF0aDplfT1lKTpjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpO2NvbnN0IHQ9X193YmdfZ2V0X2ltcG9ydHMoKTsoInN0cmluZyI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgUmVxdWVzdCYmZSBpbnN0YW5jZW9mIFJlcXVlc3R8fCJmdW5jdGlvbiI9PXR5cGVvZiBVUkwmJmUgaW5zdGFuY2VvZiBVUkwpJiYoZT1mZXRjaChlKSk7Y29uc3R7aW5zdGFuY2U6YSxtb2R1bGU6cn09YXdhaXQgYXN5bmMgZnVuY3Rpb24gX193YmdfbG9hZChlLHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBSZXNwb25zZSYmZSBpbnN0YW5jZW9mIFJlc3BvbnNlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcpdHJ5e3JldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhlLHQpfWNhdGNoKHQpe2lmKCJhcHBsaWNhdGlvbi93YXNtIj09ZS5oZWFkZXJzLmdldCgiQ29udGVudC1UeXBlIikpdGhyb3cgdDtjb25zb2xlLndhcm4oImBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZ2AgZmFpbGVkIGJlY2F1c2UgeW91ciBzZXJ2ZXIgZG9lcyBub3Qgc2VydmUgV2FzbSB3aXRoIGBhcHBsaWNhdGlvbi93YXNtYCBNSU1FIHR5cGUuIEZhbGxpbmcgYmFjayB0byBgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVgIHdoaWNoIGlzIHNsb3dlci4gT3JpZ2luYWwgZXJyb3I6XG4iLHQpfWNvbnN0IGE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3JldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShhLHQpfXtjb25zdCBhPWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGUsdCk7cmV0dXJuIGEgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5JbnN0YW5jZT97aW5zdGFuY2U6YSxtb2R1bGU6ZX06YX19KGF3YWl0IGUsdCk7cmV0dXJuIF9fd2JnX2ZpbmFsaXplX2luaXQoYSxyKX1jbGFzcyBDb2xvclNwYWNle3N0YXRpYyNyPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0LGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpKXt0aGlzLmdldFJnYkl0ZW0oZSx0LGEsMCk7cmV0dXJuIGF9Z2V0UmdiSGV4KGUsdCl7Y29uc3QgYT10aGlzLmdldFJnYihlLHQsQ29sb3JTcGFjZS4jcik7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKGFbMF0sYVsxXSxhWzJdKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JJdGVtIil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JCdWZmZXIiKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0T3V0cHV0TGVuZ3RoIil9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4hMX1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZSx0aGlzLm51bUNvbXBzKX1maWxsUmdiKGUsdCxhLHIsaSxuLHMsbyxjKXtjb25zdCBsPXQqYTtsZXQgaD1udWxsO2NvbnN0IHU9MTw8cyxkPWEhPT1pfHx0IT09cjtpZih0aGlzLmlzUGFzc3Rocm91Z2gocykpaD1vO2Vsc2UgaWYoMT09PXRoaXMubnVtQ29tcHMmJmw+dSYmIkRldmljZUdyYXkiIT09dGhpcy5uYW1lJiYiRGV2aWNlUkdCIiE9PXRoaXMubmFtZSl7Y29uc3QgdD1zPD04P25ldyBVaW50OEFycmF5KHUpOm5ldyBVaW50MTZBcnJheSh1KTtmb3IobGV0IGU9MDtlPHU7ZSsrKXRbZV09ZTtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKnUpO3RoaXMuZ2V0UmdiQnVmZmVyKHQsMCx1LGEsMCxzLDApO2lmKGQpe2g9bmV3IFVpbnQ4QXJyYXkoMypsKTtsZXQgZT0wO2ZvcihsZXQgdD0wO3Q8bDsrK3Qpe2NvbnN0IHI9MypvW3RdO2hbZSsrXT1hW3JdO2hbZSsrXT1hW3IrMV07aFtlKytdPWFbcisyXX19ZWxzZXtsZXQgdD0wO2ZvcihsZXQgcj0wO3I8bDsrK3Ipe2NvbnN0IGk9MypvW3JdO2VbdCsrXT1hW2ldO2VbdCsrXT1hW2krMV07ZVt0KytdPWFbaSsyXTt0Kz1jfX19ZWxzZSBpZihkKXtoPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmwpO3RoaXMuZ2V0UmdiQnVmZmVyKG8sMCxsLGgsMCxzLDApfWVsc2UgdGhpcy5nZXRSZ2JCdWZmZXIobywwLHIqbixlLDAscyxjKTtpZihoKWlmKGQpIWZ1bmN0aW9uIHJlc2l6ZVJnYkltYWdlKGUsdCxhLHIsaSxuLHMpe3M9MSE9PXM/MDpzO2NvbnN0IG89YS9pLGM9ci9uO2xldCBsLGg9MDtjb25zdCB1PW5ldyBVaW50MTZBcnJheShpKSxkPTMqYTtmb3IobGV0IGU9MDtlPGk7ZSsrKXVbZV09MypNYXRoLmZsb29yKGUqbyk7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgcj1NYXRoLmZsb29yKGEqYykqZDtmb3IobGV0IGE9MDthPGk7YSsrKXtsPXIrdVthXTt0W2grK109ZVtsKytdO3RbaCsrXT1lW2wrK107dFtoKytdPWVbbCsrXTtoKz1zfX19KGgsZSx0LGEscixpLGMpO2Vsc2V7bGV0IHQ9MCxhPTA7Zm9yKGxldCBpPTAscz1yKm47aTxzO2krKyl7ZVt0KytdPWhbYSsrXTtlW3QrK109aFthKytdO2VbdCsrXT1oW2ErK107dCs9Y319fWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBpc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyKnQhPT1lLmxlbmd0aCl7d2FybigiVGhlIGRlY29kZSBtYXAgaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCIpO3JldHVybiEwfWZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrPTIpaWYoMCE9PWVbdF18fDEhPT1lW3QrMV0pcmV0dXJuITE7cmV0dXJuITB9fWNsYXNzIEFsdGVybmF0ZUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkFsdGVybmF0ZSIsZSk7dGhpcy5iYXNlPXQ7dGhpcy50aW50Rm49YTt0aGlzLnRtcEJ1Zj1uZXcgRmxvYXQzMkFycmF5KHQubnVtQ29tcHMpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3QgaT10aGlzLnRtcEJ1Zjt0aGlzLnRpbnRGbihlLHQsaSwwKTt0aGlzLmJhc2UuZ2V0UmdiSXRlbShpLDAsYSxyKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz10aGlzLnRpbnRGbixjPXRoaXMuYmFzZSxsPTEvKCgxPDxuKS0xKSxoPWMubnVtQ29tcHMsdT1jLnVzZXNaZXJvVG9PbmVSYW5nZSxkPShjLmlzUGFzc3Rocm91Z2goOCl8fCF1KSYmMD09PXM7bGV0IGY9ZD9pOjA7Y29uc3QgZz1kP3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqYSkscD10aGlzLm51bUNvbXBzLG09bmV3IEZsb2F0MzJBcnJheShwKSxiPW5ldyBGbG9hdDMyQXJyYXkoaCk7bGV0IHksdztmb3IoeT0wO3k8YTt5Kyspe2Zvcih3PTA7dzxwO3crKyltW3ddPWVbdCsrXSpsO28obSwwLGIsMCk7aWYodSlmb3Iodz0wO3c8aDt3KyspZ1tmKytdPTI1NSpiW3ddO2Vsc2V7Yy5nZXRSZ2JJdGVtKGIsMCxnLGYpO2YrPWh9fWR8fGMuZ2V0UmdiQnVmZmVyKGcsMCxhLHIsaSw4LHMpfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzL3RoaXMubnVtQ29tcHMsdCl9fWNsYXNzIFBhdHRlcm5DUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoIlBhdHRlcm4iLG51bGwpO3RoaXMuYmFzZT1lfWlzRGVmYXVsdERlY29kZShlLHQpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgUGF0dGVybkNTLmlzRGVmYXVsdERlY29kZSIpfX1jbGFzcyBJbmRleGVkQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiSW5kZXhlZCIsMSk7dGhpcy5iYXNlPWU7dGhpcy5oaWdoVmFsPXQ7Y29uc3Qgcj1lLm51bUNvbXBzKih0KzEpO3RoaXMubG9va3VwPW5ldyBVaW50OEFycmF5KHIpO2lmKGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWEuZ2V0Qnl0ZXMocik7dGhpcy5sb29rdXAuc2V0KGUpfWVsc2V7aWYoInN0cmluZyIhPXR5cGVvZiBhKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW5kZXhlZENTIC0gdW5yZWNvZ25pemVkIGxvb2t1cCB0YWJsZTogJHthfWApO2ZvcihsZXQgZT0wO2U8cjsrK2UpdGhpcy5sb29rdXBbZV09MjU1JmEuY2hhckNvZGVBdChlKX19Z2V0UmdiSXRlbShlLHQsYSxyKXtjb25zdHtiYXNlOmksaGlnaFZhbDpuLGxvb2t1cDpzfT10aGlzLG89TWF0aENsYW1wKE1hdGgucm91bmQoZVt0XSksMCxuKSppLm51bUNvbXBzO2kuZ2V0UmdiQnVmZmVyKHMsbywxLGEsciw4LDApfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtjb25zdHtiYXNlOm8saGlnaFZhbDpjLGxvb2t1cDpsfT10aGlzLHtudW1Db21wczpofT1vLHU9by5nZXRPdXRwdXRMZW5ndGgoaCxzKTtmb3IobGV0IG49MDtuPGE7KytuKXtjb25zdCBhPU1hdGhDbGFtcChNYXRoLnJvdW5kKGVbdCsrXSksMCxjKSpoO28uZ2V0UmdiQnVmZmVyKGwsYSwxLHIsaSw4LHMpO2krPXV9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7d2FybigiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXt3YXJuKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IGk9MjU1KmVbdF07YVtyXT1hW3IrMV09YVtyKzJdPWl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89MjU1LygoMTw8biktMSk7bGV0IGM9dCxsPWk7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbYysrXTtyW2wrK109dDtyW2wrK109dDtyW2wrK109dDtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxyKXthW3JdPTI1NSplW3RdO2FbcisxXT0yNTUqZVt0KzFdO2FbcisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtpZig4PT09biYmMD09PXMpe3Iuc2V0KGUuc3ViYXJyYXkodCx0KzMqYSksaSk7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8biktMSk7bGV0IGM9dCxsPWk7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtyW2wrK109byplW2MrK107bCs9c319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jbGFzcyBEZXZpY2VSZ2JhQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQkEiLDQpfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiA0KmV9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9ZmlsbFJnYihlLHQsYSxyLGksbixzLG8sYyl7YSE9PWl8fHQhPT1yP2Z1bmN0aW9uIHJlc2l6ZVJnYmFJbWFnZShlLHQsYSxyLGksbixzKXtjb25zdCBvPWEvaSxjPXIvbjtsZXQgbD0wO2NvbnN0IGg9bmV3IFVpbnQxNkFycmF5KGkpO2lmKDE9PT1zKXtmb3IobGV0IGU9MDtlPGk7ZSsrKWhbZV09TWF0aC5mbG9vcihlKm8pO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxzPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciksdT1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wO2U8bjtlKyspe2NvbnN0IHQ9ci5zdWJhcnJheShNYXRoLmZsb29yKGUqYykqYSk7Zm9yKGxldCBlPTA7ZTxpO2UrKylzW2wrK118PXRbaFtlXV0mdX19ZWxzZXtjb25zdCByPTQscz1hKnI7Zm9yKGxldCBlPTA7ZTxpO2UrKyloW2VdPU1hdGguZmxvb3IoZSpvKSpyO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IHI9ZS5zdWJhcnJheShNYXRoLmZsb29yKGEqYykqcyk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgYT1oW2VdO3RbbCsrXT1yW2FdO3RbbCsrXT1yW2ErMV07dFtsKytdPXJbYSsyXX19fX0obyxlLHQsYSxyLGksYyk6ZnVuY3Rpb24gY29weVJnYmFJbWFnZShlLHQsYSl7aWYoMT09PWEpe2NvbnN0IGE9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxyPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciksaT1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKylyW2VdfD1hW2VdJml9ZWxzZXtsZXQgYT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrPTQpe3RbYSsrXT1lW3JdO3RbYSsrXT1lW3IrMV07dFthKytdPWVbcisyXX19fShvLGUsYyl9fWNsYXNzIERldmljZUNteWtDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlQ01ZSyIsNCl9I2koZSx0LGEscixpKXtjb25zdCBuPWVbdF0qYSxzPWVbdCsxXSphLG89ZVt0KzJdKmEsYz1lW3QrM10qYTtyW2ldPTI1NStuKigtNC4zODczMzIzODQ2MDk5ODgqbis1NC40ODYxNTE5NDE4OTE3NipzKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmMtMjg1LjIzMzEwMjYxMzcwMDQpK3MqKDEuNzE0OTc2MzQ3NzM2MjEzNCpzLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqYy01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypjKzE3LjUxMTkyNzA4NDE4MTMpK2MqKC0yMS44NjEyMjE0NzQ2MzYwNSpjLTE4OS40ODE4MDgzNTkyMjc0Nyk7cltpKzFdPTI1NStuKig4Ljg0MTA0MTQyMjAzNjE0OSpuKzYwLjExODAyNzA0NTU5NzM2NipzKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmMtNzkuMjk3MDg0NDgxNjU0OCkrcyooLTE1LjMxMDM2MTMwNjk2NzgxNypzKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipjLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpjLTI0Ljg2NzQxNTgyNTU1ODc4KStjKigtMjAuNzM3MzI1NDcxMTgxMDM0KmMtMTg3LjgwNDUzNzA5NzE5NTc4KTtyW2krMl09MjU1K24qKC44ODQyNTIyNDMwMDAzMjk2Km4rOC4wNzg2Nzc1MDMxMTI5MjgqcyszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpjLTE0LjE4MzU3Njc5OTY3MzI4NikrcyooMTAuNDk1OTMyNzM0MzIwNzIqcys2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpjLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmMtMTkzLjU4MjA5MzU2ODYxNTA1KStjKigtMjIuMzM4MTY4MDczMDk4ODYqYy0xODAuMTI2MTM5NzQ3MDgzNjcpfWdldFJnYkl0ZW0oZSx0LGEscil7dGhpcy4jaShlLHQsMSxhLHIpfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtjb25zdCBvPTEvKCgxPDxuKS0xKTtmb3IobGV0IG49MDtuPGE7bisrKXt0aGlzLiNpKGUsdCxvLHIsaSk7dCs9NDtpKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlLzQqKDMrdCl8MH19Y2xhc3MgQ2FsR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkNhbEdyYXkiLDEpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXkiKTtbdGhpcy5YVyx0aGlzLllXLHRoaXMuWlddPWU7W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO3RoaXMuRz1hfHwxO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fHdhcm4oYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXtpbmZvKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fSNpKGUsdCxhLHIsaSl7Y29uc3Qgbj0oZVt0XSppKSoqdGhpcy5HLHM9dGhpcy5ZVypuLG89TWF0aC5tYXgoMjk1LjgqcyoqLjMzMzMzMzMzMzMzMzMzMzMtNDAuOCwwKTthW3JdPW87YVtyKzFdPW87YVtyKzJdPW99Z2V0UmdiSXRlbShlLHQsYSxyKXt0aGlzLiNpKGUsdCxhLHIsMSl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89MS8oKDE8PG4pLTEpO2ZvcihsZXQgbj0wO248YTsrK24pe3RoaXMuI2koZSx0LHIsaSxvKTt0Kz0xO2krPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIENhbFJHQkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtzdGF0aWMjbj1uZXcgRmxvYXQzMkFycmF5KFsuODk1MSwuMjY2NCwtLjE2MTQsLS43NTAyLDEuNzEzNSwuMDM2NywuMDM4OSwtLjA2ODUsMS4wMjk2XSk7c3RhdGljI3M9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pO3N0YXRpYyNvPW5ldyBGbG9hdDMyQXJyYXkoWzMuMjQwNDU0MiwtMS41MzcxMzg1LC0uNDk4NTMxNCwtLjk2OTI2NiwxLjg3NjAxMDgsLjA0MTU1NiwuMDU1NjQzNCwtLjIwNDAyNTksMS4wNTcyMjUyXSk7c3RhdGljI2M9bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtzdGF0aWMjbD1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNoPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI3U9bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjZD0oMjQvMTE2KSoqMy84O2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbFJHQiIpO2NvbnN0W2ksbixzXT10aGlzLndoaXRlUG9pbnQ9ZSxbbyxjLGxdPXRoaXMuYmxhY2tQb2ludD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO1t0aGlzLkdSLHRoaXMuR0csdGhpcy5HQl09YXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtbdGhpcy5NWEEsdGhpcy5NWUEsdGhpcy5NWkEsdGhpcy5NWEIsdGhpcy5NWUIsdGhpcy5NWkIsdGhpcy5NWEMsdGhpcy5NWUMsdGhpcy5NWkNdPXJ8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7aWYoaTwwfHxzPDB8fDEhPT1uKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICR7dGhpcy5uYW1lfSwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlYCk7aWYobzwwfHxjPDB8fGw8MCl7aW5mbyhgSW52YWxpZCBCbGFja1BvaW50IGZvciAke3RoaXMubmFtZX0gWyR7b30sICR7Y30sICR7bH1dLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLmJsYWNrUG9pbnQ9bmV3IEZsb2F0MzJBcnJheSgzKX1pZih0aGlzLkdSPDB8fHRoaXMuR0c8MHx8dGhpcy5HQjwwKXtpbmZvKGBJbnZhbGlkIEdhbW1hIFske3RoaXMuR1J9LCAke3RoaXMuR0d9LCAke3RoaXMuR0J9XSBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLkdSPXRoaXMuR0c9dGhpcy5HQj0xfX0jZihlLHQsYSl7YVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTthWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2FbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19I2coZSx0LGEpe2FbMF09MSp0WzBdL2VbMF07YVsxXT0xKnRbMV0vZVsxXTthWzJdPTEqdFsyXS9lWzJdfSNwKGUsdCxhKXthWzBdPS45NTA0Nyp0WzBdL2VbMF07YVsxXT0xKnRbMV0vZVsxXTthWzJdPTEuMDg4ODMqdFsyXS9lWzJdfSNtKGUpe3JldHVybiBlPD0uMDAzMTMwOD9NYXRoQ2xhbXAoMTIuOTIqZSwwLDEpOmU+PS45OTU1NDUyNT8xOk1hdGhDbGFtcCgxLjA1NSplKiooMS8yLjQpLS4wNTUsMCwxKX0jYihlKXtyZXR1cm4gZTwwPy10aGlzLiNiKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOmUqQ2FsUkdCQ1MuI2R9I3koZSx0LGEpe2lmKDA9PT1lWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0pe2FbMF09dFswXTthWzFdPXRbMV07YVsyXT10WzJdO3JldHVybn1jb25zdCByPXRoaXMuI2IoMCksaT0oMS1yKS8oMS10aGlzLiNiKGVbMF0pKSxuPTEtaSxzPSgxLXIpLygxLXRoaXMuI2IoZVsxXSkpLG89MS1zLGM9KDEtcikvKDEtdGhpcy4jYihlWzJdKSksbD0xLWM7YVswXT10WzBdKmkrbjthWzFdPXRbMV0qcytvO2FbMl09dFsyXSpjK2x9I3coZSx0LGEpe2lmKDE9PT1lWzBdJiYxPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9YTt0aGlzLiNmKENhbFJHQkNTLiNuLHQscik7Y29uc3QgaT1DYWxSR0JDUy4jbDt0aGlzLiNnKGUscixpKTt0aGlzLiNmKENhbFJHQkNTLiNzLGksYSl9I3goZSx0LGEpe2NvbnN0IHI9YTt0aGlzLiNmKENhbFJHQkNTLiNuLHQscik7Y29uc3QgaT1DYWxSR0JDUy4jbDt0aGlzLiNwKGUscixpKTt0aGlzLiNmKENhbFJHQkNTLiNzLGksYSl9I2koZSx0LGEscixpKXtjb25zdCBuPU1hdGhDbGFtcChlW3RdKmksMCwxKSxzPU1hdGhDbGFtcChlW3QrMV0qaSwwLDEpLG89TWF0aENsYW1wKGVbdCsyXSppLDAsMSksYz0xPT09bj8xOm4qKnRoaXMuR1IsbD0xPT09cz8xOnMqKnRoaXMuR0csaD0xPT09bz8xOm8qKnRoaXMuR0IsdT10aGlzLk1YQSpjK3RoaXMuTVhCKmwrdGhpcy5NWEMqaCxkPXRoaXMuTVlBKmMrdGhpcy5NWUIqbCt0aGlzLk1ZQypoLGY9dGhpcy5NWkEqYyt0aGlzLk1aQipsK3RoaXMuTVpDKmgsZz1DYWxSR0JDUy4jaDtnWzBdPXU7Z1sxXT1kO2dbMl09Zjtjb25zdCBwPUNhbFJHQkNTLiN1O3RoaXMuI3codGhpcy53aGl0ZVBvaW50LGcscCk7Y29uc3QgbT1DYWxSR0JDUy4jaDt0aGlzLiN5KHRoaXMuYmxhY2tQb2ludCxwLG0pO2NvbnN0IGI9Q2FsUkdCQ1MuI3U7dGhpcy4jeChDYWxSR0JDUy4jYyxtLGIpO2NvbnN0IHk9Q2FsUkdCQ1MuI2g7dGhpcy4jZihDYWxSR0JDUy4jbyxiLHkpO2Fbcl09MjU1KnRoaXMuI20oeVswXSk7YVtyKzFdPTI1NSp0aGlzLiNtKHlbMV0pO2FbcisyXT0yNTUqdGhpcy4jbSh5WzJdKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe3RoaXMuI2koZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0xLygoMTw8biktMSk7Zm9yKGxldCBuPTA7bjxhOysrbil7dGhpcy4jaShlLHQscixpLG8pO3QrPTM7aSs9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9fWNsYXNzIExhYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkxhYiIsMyk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLmFtaW4sdGhpcy5hbWF4LHRoaXMuYm1pbix0aGlzLmJtYXhdPWF8fFstMTAwLDEwMCwtMTAwLDEwMF07W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXtpbmZvKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fSNTKGUpe3JldHVybiBlPj02LzI5P2UqKjM6MTA4Lzg0MSooZS00LzI5KX0jayhlLHQsYSxyKXtyZXR1cm4gYStlKihyLWEpL3R9I2koZSx0LGEscixpKXtsZXQgbj1lW3RdLHM9ZVt0KzFdLG89ZVt0KzJdO2lmKCExIT09YSl7bj10aGlzLiNrKG4sYSwwLDEwMCk7cz10aGlzLiNrKHMsYSx0aGlzLmFtaW4sdGhpcy5hbWF4KTtvPXRoaXMuI2sobyxhLHRoaXMuYm1pbix0aGlzLmJtYXgpfXM+dGhpcy5hbWF4P3M9dGhpcy5hbWF4OnM8dGhpcy5hbWluJiYocz10aGlzLmFtaW4pO28+dGhpcy5ibWF4P289dGhpcy5ibWF4Om88dGhpcy5ibWluJiYobz10aGlzLmJtaW4pO2NvbnN0IGM9KG4rMTYpLzExNixsPWMrcy81MDAsaD1jLW8vMjAwLHU9dGhpcy5YVyp0aGlzLiNTKGwpLGQ9dGhpcy5ZVyp0aGlzLiNTKGMpLGY9dGhpcy5aVyp0aGlzLiNTKGgpO2xldCBnLHAsbTtpZih0aGlzLlpXPDEpe2c9My4xMzM5KnUrLTEuNjE3KmQrLS40OTA2KmY7cD0tLjk3ODUqdSsxLjkxNipkKy4wMzMzKmY7bT0uMDcyKnUrLS4yMjkqZCsxLjQwNTcqZn1lbHNle2c9My4yNDA2KnUrLTEuNTM3MipkKy0uNDk4NipmO3A9LS45Njg5KnUrMS44NzU4KmQrLjA0MTUqZjttPS4wNTU3KnUrLS4yMDQqZCsxLjA1NypmfXJbaV09MjU1Kk1hdGguc3FydChnKTtyW2krMV09MjU1Kk1hdGguc3FydChwKTtyW2krMl09MjU1Kk1hdGguc3FydChtKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe3RoaXMuI2koZSx0LCExLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89KDE8PG4pLTE7Zm9yKGxldCBuPTA7bjxhO24rKyl7dGhpcy4jaShlLHQsbyxyLGkpO3QrPTM7aSs9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuITB9Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fWZ1bmN0aW9uIGZldGNoU3luYyhlKXtjb25zdCB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIkdFVCIsZSwhMSk7dC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt0LnNlbmQobnVsbCk7cmV0dXJuIHQucmVzcG9uc2V9Y2xhc3MgSWNjQ29sb3JTcGFjZSBleHRlbmRzIENvbG9yU3BhY2V7I0E7I0M7c3RhdGljI3Y9ITA7c3RhdGljI0Y9bnVsbDtzdGF0aWMjST1uZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKGU9PnshZnVuY3Rpb24gcWNtc19kcm9wX3RyYW5zZm9ybWVyKGUpe0RhLnFjbXNfZHJvcF90cmFuc2Zvcm1lcihlKX0oZSl9KSk7Y29uc3RydWN0b3IoZSx0LGEpe2lmKCFJY2NDb2xvclNwYWNlLmlzVXNhYmxlKXRocm93IG5ldyBFcnJvcigiTm8gSUNDIGNvbG9yIHNwYWNlIHN1cHBvcnQiKTtzdXBlcih0LGEpO2xldCByO3N3aXRjaChhKXtjYXNlIDE6cj1FYS5HcmF5ODt0aGlzLiNDPShlLHQsYSk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9vbmUoZSx0LGEpe0RhLnFjbXNfY29udmVydF9vbmUoZSx0LGEpfSh0aGlzLiNBLDI1NSplW3RdLGEpO2JyZWFrO2Nhc2UgMzpyPUVhLlJHQjg7dGhpcy4jQz0oZSx0LGEpPT5mdW5jdGlvbiBxY21zX2NvbnZlcnRfdGhyZWUoZSx0LGEscixpKXtEYS5xY21zX2NvbnZlcnRfdGhyZWUoZSx0LGEscixpKX0odGhpcy4jQSwyNTUqZVt0XSwyNTUqZVt0KzFdLDI1NSplW3QrMl0sYSk7YnJlYWs7Y2FzZSA0OnI9RWEuQ01ZSzt0aGlzLiNDPShlLHQsYSk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9mb3VyKGUsdCxhLHIsaSxuKXtEYS5xY21zX2NvbnZlcnRfZm91cihlLHQsYSxyLGksbil9KHRoaXMuI0EsMjU1KmVbdF0sMjU1KmVbdCsxXSwyNTUqZVt0KzJdLDI1NSplW3QrM10sYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG51bWJlciBvZiBjb21wb25lbnRzOiAke2F9YCl9dGhpcy4jQT1mdW5jdGlvbiBxY21zX3RyYW5zZm9ybWVyX2Zyb21fbWVtb3J5KGUsdCxhKXtjb25zdCByPXBhc3NBcnJheThUb1dhc20wKGUsRGEuX193YmluZGdlbl9tYWxsb2MpLGk9TmE7cmV0dXJuIERhLnFjbXNfdHJhbnNmb3JtZXJfZnJvbV9tZW1vcnkocixpLHQsYSk+Pj4wfShlLHIsUGEuUGVyY2VwdHVhbCk7aWYoIXRoaXMuI0EpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIElDQyBjb2xvciBzcGFjZSIpO0ljY0NvbG9yU3BhY2UuI0kucmVnaXN0ZXIodGhpcyx0aGlzLiNBKX1nZXRSZ2JIZXgoZSx0KXt0aGlzLiNDKGUsdCwhMCk7cmV0dXJuIFFDTVMuX2Nzc0NvbG9yfWdldFJnYkl0ZW0oZSx0LGEscil7UUNNUy5fZGVzdEJ1ZmZlcj1hO1FDTVMuX2Rlc3RPZmZzZXQ9cjtRQ01TLl9kZXN0TGVuZ3RoPTM7dGhpcy4jQyhlLHQsITEpO1FDTVMuX2Rlc3RCdWZmZXI9bnVsbH1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7ZT1lLnN1YmFycmF5KHQsdCthKnRoaXMubnVtQ29tcHMpO2lmKDghPT1uKXtjb25zdCB0PTI1NS8oKDE8PG4pLTEpO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyllW2FdKj10fVFDTVMuX211c3RBZGRBbHBoYT1zJiZyLmJ1ZmZlcj09PWUuYnVmZmVyO1FDTVMuX2Rlc3RCdWZmZXI9cjtRQ01TLl9kZXN0T2Zmc2V0PWk7UUNNUy5fZGVzdExlbmd0aD1hKigzK3MpOyFmdW5jdGlvbiBxY21zX2NvbnZlcnRfYXJyYXkoZSx0KXtjb25zdCBhPXBhc3NBcnJheThUb1dhc20wKHQsRGEuX193YmluZGdlbl9tYWxsb2MpLHI9TmE7RGEucWNtc19jb252ZXJ0X2FycmF5KGUsYSxyKX0odGhpcy4jQSxlKTtRQ01TLl9tdXN0QWRkQWxwaGE9ITE7UUNNUy5fZGVzdEJ1ZmZlcj1udWxsfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlL3RoaXMubnVtQ29tcHMqKDMrdCl8MH1zdGF0aWMgc2V0T3B0aW9ucyh7dXNlV2FzbTplLHVzZVdvcmtlckZldGNoOnQsd2FzbVVybDphfSl7aWYodCl7dGhpcy4jdj1lO3RoaXMuI0Y9YX1lbHNlIHRoaXMuI3Y9ITF9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO2lmKHRoaXMuI3YpaWYodGhpcy4jRil0cnl7dGhpcy5fbW9kdWxlPWZ1bmN0aW9uIGluaXRTeW5jKGUpe2lmKHZvaWQgMCE9PURhKXJldHVybiBEYTt2b2lkIDAhPT1lJiYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZT8oe21vZHVsZTplfT1lKTpjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgYGluaXRTeW5jKClgOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpO2NvbnN0IHQ9X193YmdfZ2V0X2ltcG9ydHMoKTtlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTW9kdWxlfHwoZT1uZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGUpKTtyZXR1cm4gX193YmdfZmluYWxpemVfaW5pdChuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoZSx0KSxlKX0oe21vZHVsZTpmZXRjaFN5bmMoYCR7dGhpcy4jRn1xY21zX2JnLndhc21gKX0pO2U9ISF0aGlzLl9tb2R1bGU7UUNNUy5fbWVtb3J5PXRoaXMuX21vZHVsZS5tZW1vcnk7UUNNUy5fbWFrZUhleENvbG9yPVV0aWwubWFrZUhleENvbG9yfWNhdGNoKGUpe3dhcm4oYElDQ0Jhc2VkIGNvbG9yIHNwYWNlOiAiJHtlfSIuYCl9ZWxzZSB3YXJuKCJObyBJQ0MgY29sb3Igc3BhY2Ugc3VwcG9ydCBkdWUgdG8gbWlzc2luZyBgd2FzbVVybGAgQVBJIG9wdGlvbiIpO3JldHVybiBzaGFkb3codGhpcywiaXNVc2FibGUiLGUpfX1jbGFzcyBDbXlrSUNDQmFzZWRDUyBleHRlbmRzIEljY0NvbG9yU3BhY2V7c3RhdGljI1Q7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheShmZXRjaFN5bmMoYCR7Q215a0lDQ0Jhc2VkQ1MuI1R9Q0dBVFMwMDFDb21wYXQtdjItbWljcm8uaWNjYCkpLCJEZXZpY2VDTVlLIiw0KX1zdGF0aWMgc2V0T3B0aW9ucyh7aWNjVXJsOmV9KXt0aGlzLiNUPWV9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO0ljY0NvbG9yU3BhY2UuaXNVc2FibGUmJih0aGlzLiNUP2U9ITA6d2FybigiTm8gQ01ZSyBJQ0MgcHJvZmlsZSBzdXBwb3J0IGR1ZSB0byBtaXNzaW5nIGBpY2NVcmxgIEFQSSBvcHRpb24iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc1VzYWJsZSIsZSl9fWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBpPWErZTtpPnImJihpPXIpO3RoaXMucG9zPWk7cmV0dXJuIHQuc3ViYXJyYXkoYSxpKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfX1jbGFzcyBTdHJpbmdTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoc3RyaW5nVG9CeXRlcyhlKSl9fWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fWNsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxhPXRoaXMubnVtQ2h1bmtzO3Q8YTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBhPXRoaXMuY2h1bmtTaXplO2lmKGUlYSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCByPWUrdC5ieXRlTGVuZ3RoO2lmKHIlYSE9MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBpPU1hdGguZmxvb3IoZS9hKSxuPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9aTtlPG47KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgYT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGE+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IHI9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCBpPWE7aTxyOysraSlpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhpKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2NvbnN0IHI9KGUrYSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSlyZXR1cm4gcn1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxhPXRoaXMucG9zLHI9dGhpcy5lbmQ7aWYoIWUpe3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxyKTtyZXR1cm4gdC5zdWJhcnJheShhLHIpfWxldCBpPWErZTtpPnImJihpPXIpO2k+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxpKTt0aGlzLnBvcz1pO3JldHVybiB0LnN1YmFycmF5KGEsaSl9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksYT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLHI9W107Zm9yKGxldCBlPXQ7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxyLnB1c2goZSk7cmV0dXJuIHJ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IHI9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07ci5wb3M9ci5zdGFydD1lO3IuZW5kPWUrdHx8dGhpcy5lbmQ7ci5kaWN0PWE7cmV0dXJuIHJ9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgYT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTthLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoYS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgcj1bXSxpPTA7cmV0dXJuIG5ldyBQcm9taXNlKCgoZSx0KT0+e2NvbnN0IHJlYWRDaHVuaz0oe3ZhbHVlOm4sZG9uZTpzfSk9Pnt0cnl7aWYocyl7Y29uc3QgdD1hcnJheUJ1ZmZlcnNUb0J5dGVzKHIpO3I9bnVsbDtlKHQpO3JldHVybn1pKz1uLmJ5dGVMZW5ndGg7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6aX0pO3IucHVzaChuKTthLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07YS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkudGhlbigodD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD10aGlzLmN1cnJSZXF1ZXN0SWQrKyxhPW5ldyBTZXQ7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LnNldCh0LGEpO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fGEuYWRkKHQpO2lmKDA9PT1hLnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IHI9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQscik7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgYT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxhKTtpLnB1c2goZSl9YS5wdXNoKHQpfWlmKGkubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxhPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxhKS5jYXRjaChyLnJlamVjdCl9fXJldHVybiByLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLGk9W107Zm9yKGxldCBlPWE7ZTxyOysrZSlpLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3MoaSl9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KCgoZSx0KT0+ZS10KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgYT0tMSxyPS0xO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuOysraSl7Y29uc3Qgbj1lW2ldO2E8MCYmKGE9bik7aWYocj49MCYmcisxIT09bil7dC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6cisxfSk7YT1ufWkrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6YSxlbmRDaHVuazpuKzF9KTtyPW59cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssYT12b2lkIDA9PT1lLmJlZ2luLHI9YT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLGk9cit0LmJ5dGVMZW5ndGgsbj1NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpLHM9aTx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKGkvdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChpL3RoaXMuY2h1bmtTaXplKTtpZihhKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9aX1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEocix0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9bjtlPHM7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhzKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbT8uY2FuY2VsQWxsUmVxdWVzdHMoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QudmFsdWVzKCkpdC5yZWplY3QoZSl9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSBrOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIEM6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDphLGRlc3RQb3M6cj0wLHdpZHRoOmksaGVpZ2h0Om59KXtsZXQgcz0wO2NvbnN0IG89aSpuKjMsYz1vPj4yLGw9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLHQsYyk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7czxjLTI7cys9MyxyKz00KXtjb25zdCBlPWxbc10sdD1sW3MrMV0saT1sW3MrMl07YVtyXT00Mjc4MTkwMDgwfGU7YVtyKzFdPWU+Pj4yNHx0PDw4fDQyNzgxOTAwODA7YVtyKzJdPXQ+Pj4xNnxpPDwxNnw0Mjc4MTkwMDgwO2FbciszXT1pPj4+OHw0Mjc4MTkwMDgwfWZvcihsZXQgaT00KnMsbj10K287aTxuO2krPTMpYVtyKytdPWVbaV18ZVtpKzFdPDw4fGVbaSsyXTw8MTZ8NDI3ODE5MDA4MH1lbHNle2Zvcig7czxjLTI7cys9MyxyKz00KXtjb25zdCBlPWxbc10sdD1sW3MrMV0saT1sW3MrMl07YVtyXT0yNTV8ZTthW3IrMV09ZTw8MjR8dD4+Pjh8MjU1O2FbcisyXT10PDwxNnxpPj4+MTZ8MjU1O2FbciszXT1pPDw4fDI1NX1mb3IobGV0IGk9NCpzLG49dCtvO2k8bjtpKz0zKWFbcisrXT1lW2ldPDwyNHxlW2krMV08PDE2fGVbaSsyXTw8OHwyNTV9cmV0dXJue3NyY1Bvczp0K28sZGVzdFBvczpyfX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDphLHdpZHRoOnIsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjpuPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpzPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbYyxsXT1zP1tuLG9dOltvLG5dLGg9cj4+Myx1PTcmcixkPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtsZXQgZj0wO2ZvcihsZXQgcj0wO3I8aTtyKyspe2Zvcihjb25zdCByPXQraDt0PHI7dCsrKXtjb25zdCByPXQ8ZD9lW3RdOjI1NTthW2YrK109MTI4JnI/bDpjO2FbZisrXT02NCZyP2w6YzthW2YrK109MzImcj9sOmM7YVtmKytdPTE2JnI/bDpjO2FbZisrXT04JnI/bDpjO2FbZisrXT00JnI/bDpjO2FbZisrXT0yJnI/bDpjO2FbZisrXT0xJnI/bDpjfWlmKDA9PT11KWNvbnRpbnVlO2NvbnN0IHI9dDxkP2VbdCsrXToyNTU7Zm9yKGxldCBlPTA7ZTx1O2UrKylhW2YrK109ciYxPDw3LWU/bDpjfXJldHVybntzcmNQb3M6dCxkZXN0UG9zOmZ9fWNsYXNzIEltYWdlUmVzaXplcntzdGF0aWMjTz0yMDQ4O3N0YXRpYyNNPUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI00/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvYm1wIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIG5lZWRzVG9CZVJlc2l6ZWQoZSx0KXtpZihlPD10aGlzLiNPJiZ0PD10aGlzLiNPKXJldHVybiExO2NvbnN0e01BWF9ESU06YX09dGhpcztpZihlPmF8fHQ+YSlyZXR1cm4hMDtjb25zdCByPWUqdDtpZih0aGlzLl9oYXNNYXhBcmVhKXJldHVybiByPnRoaXMuTUFYX0FSRUE7aWYocjx0aGlzLiNPKioyKXJldHVybiExO2lmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCkpe3RoaXMuI089TWF0aC5tYXgodGhpcy4jTyxNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSk7cmV0dXJuITF9dGhpcy4jTz10aGlzLl9ndWVzc01heCh0aGlzLiNPLGEsMTI4LDApO3JldHVybiByPih0aGlzLk1BWF9BUkVBPXRoaXMuI08qKjIpfXN0YXRpYyBnZXRSZWR1Y2VQb3dlckZvckpQWChlLHQsYSl7Y29uc3Qgcj1lKnQsaT0yKiozMC8oNCphKTtpZighdGhpcy5uZWVkc1RvQmVSZXNpemVkKGUsdCkpcmV0dXJuIHI+aT9NYXRoLmNlaWwoTWF0aC5sb2cyKHIvaSkpOjA7Y29uc3R7TUFYX0RJTTpuLE1BWF9BUkVBOnN9PXRoaXMsbz1NYXRoLm1heChlL24sdC9uLE1hdGguc3FydChyL01hdGgubWluKGkscykpKTtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihvKSl9c3RhdGljIGdldCBNQVhfRElNKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJNQVhfRElNIix0aGlzLl9ndWVzc01heCgyMDQ4LDY1NTM3LDAsMSkpfXN0YXRpYyBnZXQgTUFYX0FSRUEoKXt0aGlzLl9oYXNNYXhBcmVhPSEwO3JldHVybiBzaGFkb3codGhpcywiTUFYX0FSRUEiLHRoaXMuX2d1ZXNzTWF4KHRoaXMuI08sdGhpcy5NQVhfRElNLDEyOCwwKSoqMil9c3RhdGljIHNldCBNQVhfQVJFQShlKXtpZihlPj0wKXt0aGlzLl9oYXNNYXhBcmVhPSEwO3NoYWRvdyh0aGlzLCJNQVhfQVJFQSIsZSl9fXN0YXRpYyBzZXRPcHRpb25zKHtjYW52YXNNYXhBcmVhSW5CeXRlczplPS0xLGlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkOnQ9ITF9KXt0aGlzLl9oYXNNYXhBcmVhfHwodGhpcy5NQVhfQVJFQT1lPj4yKTt0aGlzLiNNPXR9c3RhdGljIF9hcmVHb29kRGltcyhlLHQpe3RyeXtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoZSx0KSxyPWEuZ2V0Q29udGV4dCgiMmQiKTtyLmZpbGxSZWN0KDAsMCwxLDEpO2NvbnN0IGk9ci5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXTthLndpZHRoPWEuaGVpZ2h0PTE7cmV0dXJuIDAhPT1pfWNhdGNoe3JldHVybiExfX1zdGF0aWMgX2d1ZXNzTWF4KGUsdCxhLHIpe2Zvcig7ZSthKzE8dDspe2NvbnN0IGE9TWF0aC5mbG9vcigoZSt0KS8yKSxpPXJ8fGE7dGhpcy5fYXJlR29vZERpbXMoYSxpKT9lPWE6dD1hfXJldHVybiBlfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlLHQ9ITEpe3JldHVybiBuZXcgSW1hZ2VSZXNpemVyKGUsdCkuX2NyZWF0ZUltYWdlKCl9YXN5bmMgX2NyZWF0ZUltYWdlKCl7Y29uc3R7X2ltZ0RhdGE6ZX09dGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX09ZTtpZih0KmEqND52YSl7Y29uc3QgZT10aGlzLiNEKCk7aWYoZSlyZXR1cm4gZX1jb25zdCByPXRoaXMuX2VuY29kZUJNUCgpO2xldCBpLG47aWYoYXdhaXQgSW1hZ2VSZXNpemVyLmNhblVzZUltYWdlRGVjb2Rlcil7aT1uZXcgSW1hZ2VEZWNvZGVyKHtkYXRhOnIsdHlwZToiaW1hZ2UvYm1wIixwcmVmZXJBbmltYXRpb246ITEsdHJhbnNmZXI6W3IuYnVmZmVyXX0pO249aS5kZWNvZGUoKS5jYXRjaCgoZT0+e3dhcm4oYEJNUCBpbWFnZSBkZWNvZGluZyBmYWlsZWQ6ICR7ZX1gKTtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEJsb2IoW3RoaXMuX2VuY29kZUJNUCgpLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSl9KSkuZmluYWxseSgoKCk9PntpLmNsb3NlKCl9KSl9ZWxzZSBuPWNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFtyLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSk7Y29uc3R7TUFYX0FSRUE6cyxNQVhfRElNOm99PUltYWdlUmVzaXplcixjPU1hdGgubWF4KHQvbyxhL28sTWF0aC5zcXJ0KHQqYS9zKSksbD1NYXRoLm1heChjLDIpLGg9TWF0aC5yb3VuZCgxMCooYysxLjI1KSkvMTAvbCx1PU1hdGguZmxvb3IoTWF0aC5sb2cyKGgpKSxkPW5ldyBBcnJheSh1KzIpLmZpbGwoMik7ZFswXT1sO2Quc3BsaWNlKC0xLDEsaC8oMTw8dSkpO2xldCBmPXQsZz1hO2NvbnN0IHA9YXdhaXQgbjtsZXQgbT1wLmltYWdlfHxwO2Zvcihjb25zdCBlIG9mIGQpe2NvbnN0IHQ9ZixhPWc7Zj1NYXRoLmZsb29yKGYvZSktMTtnPU1hdGguZmxvb3IoZy9lKS0xO2NvbnN0IHI9bmV3IE9mZnNjcmVlbkNhbnZhcyhmLGcpO3IuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UobSwwLDAsdCxhLDAsMCxmLGcpO20uY2xvc2UoKTttPXIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9ZS5kYXRhPW51bGw7ZS5iaXRtYXA9bTtlLndpZHRoPWY7ZS5oZWlnaHQ9ZztyZXR1cm4gZX0jRCgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse2RhdGE6dCx3aWR0aDphLGhlaWdodDpyLGtpbmQ6aX09ZSxuPWEqcio0LHM9TWF0aC5jZWlsKE1hdGgubG9nMihuL3ZhKSksbz1hPj5zLGM9cj4+cztsZXQgbCxoPXI7dHJ5e2w9bmV3IFVpbnQ4QXJyYXkobil9Y2F0Y2h7bGV0IGU9TWF0aC5mbG9vcihNYXRoLmxvZzIobisxKSk7Zm9yKDs7KXRyeXtsPW5ldyBVaW50OEFycmF5KDIqKmUtMSk7YnJlYWt9Y2F0Y2h7ZS09MX1oPU1hdGguZmxvb3IoKDIqKmUtMSkvKDQqYSkpO2NvbnN0IHQ9YSpoKjQ7dDxsLmxlbmd0aCYmKGw9bmV3IFVpbnQ4QXJyYXkodCkpfWNvbnN0IHU9bmV3IFVpbnQzMkFycmF5KGwuYnVmZmVyKSxkPW5ldyBVaW50MzJBcnJheShvKmMpO2xldCBmPTAsZz0wO2NvbnN0IHA9TWF0aC5jZWlsKHIvaCksbT1yJWg9PTA/cjpyJWg7Zm9yKGxldCBlPTA7ZTxwO2UrKyl7Y29uc3Qgcj1lPHAtMT9oOm07KHtzcmNQb3M6Zn09Y29udmVydFRvUkdCQSh7a2luZDppLHNyYzp0LGRlc3Q6dSx3aWR0aDphLGhlaWdodDpyLGludmVyc2VEZWNvZGU6dGhpcy5faXNNYXNrLHNyY1BvczpmfSkpO2ZvcihsZXQgZT0wLHQ9cj4+cztlPHQ7ZSsrKXtjb25zdCB0PXUuc3ViYXJyYXkoKGU8PHMpKmEpO2ZvcihsZXQgZT0wO2U8bztlKyspZFtnKytdPXRbZTw8c119fWlmKEltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKG8sYykpe2UuZGF0YT1kO2Uud2lkdGg9bztlLmhlaWdodD1jO2Uua2luZD12O3JldHVybiBudWxsfWNvbnN0IGI9bmV3IE9mZnNjcmVlbkNhbnZhcyhvLGMpO2IuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KS5wdXRJbWFnZURhdGEobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoZC5idWZmZXIpLG8sYyksMCwwKTtlLmRhdGE9bnVsbDtlLmJpdG1hcD1iLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpO2Uud2lkdGg9bztlLmhlaWdodD1jO3JldHVybiBlfV9lbmNvZGVCTVAoKXtjb25zdHt3aWR0aDplLGhlaWdodDp0LGtpbmQ6YX09dGhpcy5faW1nRGF0YTtsZXQgcixpPXRoaXMuX2ltZ0RhdGEuZGF0YSxuPW5ldyBVaW50OEFycmF5KDApLHM9bixvPTA7c3dpdGNoKGEpe2Nhc2Ugazp7cj0xO249bmV3IFVpbnQ4QXJyYXkodGhpcy5faXNNYXNrP1syNTUsMjU1LDI1NSwyNTUsMCwwLDAsMF06WzAsMCwwLDAsMjU1LDI1NSwyNTUsMjU1XSk7Y29uc3QgYT1lKzc+PjMscz1hKzMmLTQ7aWYoYSE9PXMpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkocyp0KTtsZXQgcj0wO2ZvcihsZXQgbj0wLG89dCphO248bztuKz1hLHIrPXMpZS5zZXQoaS5zdWJhcnJheShuLG4rYSkscik7aT1lfWJyZWFrfWNhc2UgQzpyPTI0O2lmKDMmZSl7Y29uc3QgYT0zKmUscj1hKzMmLTQsbj1yLWEscz1uZXcgVWludDhBcnJheShyKnQpO2xldCBvPTA7Zm9yKGxldCBlPTAscj10KmE7ZTxyO2UrPWEpe2NvbnN0IHQ9aS5zdWJhcnJheShlLGUrYSk7Zm9yKGxldCBlPTA7ZTxhO2UrPTMpe3NbbysrXT10W2UrMl07c1tvKytdPXRbZSsxXTtzW28rK109dFtlXX1vKz1ufWk9c31lbHNlIGZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrPTMpe2NvbnN0IHQ9aVtlXTtpW2VdPWlbZSsyXTtpW2UrMl09dH1icmVhaztjYXNlIHY6cj0zMjtvPTM7cz1uZXcgVWludDhBcnJheSg2OCk7Y29uc3QgYT1uZXcgRGF0YVZpZXcocy5idWZmZXIpO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXthLnNldFVpbnQzMigwLDI1NSwhMCk7YS5zZXRVaW50MzIoNCw2NTI4MCwhMCk7YS5zZXRVaW50MzIoOCwxNjcxMTY4MCwhMCk7YS5zZXRVaW50MzIoMTIsNDI3ODE5MDA4MCwhMCl9ZWxzZXthLnNldFVpbnQzMigwLDQyNzgxOTAwODAsITApO2Euc2V0VWludDMyKDQsMTY3MTE2ODAsITApO2Euc2V0VWludDMyKDgsNjUyODAsITApO2Euc2V0VWludDMyKDEyLDI1NSwhMCl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0Iil9bGV0IGM9MDtjb25zdCBsPTQwK3MubGVuZ3RoLGg9MTQrbCtuLmxlbmd0aCtpLmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpLGQ9bmV3IERhdGFWaWV3KHUuYnVmZmVyKTtkLnNldFVpbnQxNihjLDE5Nzc4LCEwKTtjKz0yO2Quc2V0VWludDMyKGMsaCwhMCk7Yys9NDtkLnNldFVpbnQzMihjLDAsITApO2MrPTQ7ZC5zZXRVaW50MzIoYywxNCtsK24ubGVuZ3RoLCEwKTtjKz00O2Quc2V0VWludDMyKGMsbCwhMCk7Yys9NDtkLnNldEludDMyKGMsZSwhMCk7Yys9NDtkLnNldEludDMyKGMsLXQsITApO2MrPTQ7ZC5zZXRVaW50MTYoYywxLCEwKTtjKz0yO2Quc2V0VWludDE2KGMsciwhMCk7Yys9MjtkLnNldFVpbnQzMihjLG8sITApO2MrPTQ7ZC5zZXRVaW50MzIoYywwLCEwKTtjKz00O2Quc2V0SW50MzIoYywwLCEwKTtjKz00O2Quc2V0SW50MzIoYywwLCEwKTtjKz00O2Quc2V0VWludDMyKGMsbi5sZW5ndGgvNCwhMCk7Yys9NDtkLnNldFVpbnQzMihjLDAsITApO2MrPTQ7dS5zZXQocyxjKTtjKz1zLmxlbmd0aDt1LnNldChuLGMpO2MrPW4ubGVuZ3RoO3Uuc2V0KGksYyk7cmV0dXJuIHV9fWNvbnN0IExhPW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDt0aGlzLnBvcz0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5lb2Y9ITE7dGhpcy5idWZmZXI9TGE7dGhpcy5taW5CdWZmZXJMZW5ndGg9NTEyO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IGE9dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDthPGU7KWEqPTI7Y29uc3Qgcj1uZXcgVWludDhBcnJheShhKTtyLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9cn1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSx0PW51bGwpe2NvbnN0IGE9dGhpcy5wb3M7bGV0IHI7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIoYStlKTtyPWErZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8cjspdGhpcy5yZWFkQmxvY2sodCk7Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aDtyPmkmJihyPWkpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKHQpO3I9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9cjtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkoYSxyKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtpZighdGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcilyZXR1cm4gdGhpcy5pc0FzeW5jRGVjb2Rlcj90aGlzLmRlY29kZUltYWdlKG51bGwsdCk6dGhpcy5nZXRCeXRlcyhlLHQpO2NvbnN0IGE9YXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpO3JldHVybiB0aGlzLmRlY29kZUltYWdlKGEsdCl9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ1ZmZlcixlLHQsYSl9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gdGhpcy5zdHI/dGhpcy5zdHIuZ2V0QmFzZVN0cmVhbXMoKTpudWxsfX1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2U9ZS5maWx0ZXIoKGU9PmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSk7bGV0IGE9MDtmb3IoY29uc3QgdCBvZiBlKWErPXQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0/dC5fcmF3TWluQnVmZmVyTGVuZ3RoOnQubGVuZ3RoO3N1cGVyKGEpO3RoaXMuc3RyZWFtcz1lO3RoaXMuX29uRXJyb3I9dH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtcztpZigwPT09ZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUuc2hpZnQoKTtsZXQgYTt0cnl7YT10LmdldEJ5dGVzKCl9Y2F0Y2goZSl7aWYodGhpcy5fb25FcnJvcil7dGhpcy5fb25FcnJvcihlLHQuZGljdD8ub2JqSWQpO3JldHVybn10aHJvdyBlfWNvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGgsaT1yK2EubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKGkpLnNldChhLHIpO3RoaXMuYnVmZmVyTGVuZ3RoPWl9Z2V0QmFzZVN0cmVhbXMoKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuc3RyZWFtcyl7Y29uc3QgYT10LmdldEJhc2VTdHJlYW1zKCk7YSYmZS5wdXNoKC4uLmEpfXJldHVybiBlLmxlbmd0aD4wP2U6bnVsbH19Y2xhc3MgQ29sb3JTcGFjZVV0aWxze3N0YXRpYyBwYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpuLGFzeW5jSWZOb3RDYWNoZWQ6cz0hMX0pe2NvbnN0IG89e3hyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufTtsZXQgYyxsLGg7aWYoZSBpbnN0YW5jZW9mIFJlZil7bD1lO2NvbnN0IGE9aS5nZXRCeVJlZihsKXx8bi5nZXRCeVJlZihsKTtpZihhKXJldHVybiBhO2U9dC5mZXRjaChlKX1pZihlIGluc3RhbmNlb2YgTmFtZSl7Yz1lLm5hbWU7Y29uc3QgdD1uLmdldEJ5TmFtZShjKTtpZih0KXJldHVybiB0fXRyeXtoPXRoaXMuI0IoZSxvKX1jYXRjaChlKXtpZihzJiYhKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO3Rocm93IGV9aWYoY3x8bCl7bi5zZXQoYyxsLGgpO2wmJmkuc2V0KG51bGwsbCxoKX1yZXR1cm4gcz9Qcm9taXNlLnJlc29sdmUoaCk6aH1zdGF0aWMjUihlLHQpe2NvbnN0e2dsb2JhbENvbG9yU3BhY2VDYWNoZTphfT10O2xldCByO2lmKGUgaW5zdGFuY2VvZiBSZWYpe3I9ZTtjb25zdCB0PWEuZ2V0QnlSZWYocik7aWYodClyZXR1cm4gdH1jb25zdCBpPXRoaXMuI0IoZSx0KTtyJiZhLnNldChudWxsLHIsaSk7cmV0dXJuIGl9c3RhdGljI0IoZSx0KXtjb25zdHt4cmVmOmEscmVzb3VyY2VzOnIscGRmRnVuY3Rpb25GYWN0b3J5OmksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm59PXQ7aWYoKGU9YS5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnJnYjtjYXNlIkRldmljZVJHQkEiOnJldHVybiB0aGlzLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLmNteWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4gbmV3IFBhdHRlcm5DUyhudWxsKTtkZWZhdWx0OmlmKHIgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPXIuZ2V0KCJDb2xvclNwYWNlIik7aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9YS5nZXQoZS5uYW1lKTtpZihyKXtpZihyIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gdGhpcy4jQihyLHQpO2U9cjticmVha319fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlOiAke2UubmFtZX1gKTtyZXR1cm4gdGhpcy5ncmF5fWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9YS5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbyxjLGwsaCx1O3N3aXRjaChyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuY215aztjYXNlIkNhbEdyYXkiOnM9YS5mZXRjaElmUmVmKGVbMV0pO2w9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2g9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO3U9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MobCxoLHUpO2Nhc2UiQ2FsUkdCIjpzPWEuZmV0Y2hJZlJlZihlWzFdKTtsPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtoPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTt1PXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgZD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGwsaCx1LGQpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IGY9ZVsxXWluc3RhbmNlb2YgUmVmO2lmKGYpe2NvbnN0IHQ9bi5nZXRCeVJlZihlWzFdKTtpZih0KXJldHVybiB0fWNvbnN0IGc9YS5mZXRjaElmUmVmKGVbMV0pLHA9Zy5kaWN0O289cC5nZXQoIk4iKTtpZihJY2NDb2xvclNwYWNlLmlzVXNhYmxlKXRyeXtjb25zdCB0PW5ldyBJY2NDb2xvclNwYWNlKGcuZ2V0Qnl0ZXMoKSwiSUNDQmFzZWQiLG8pO2YmJm4uc2V0KG51bGwsZVsxXSx0KTtyZXR1cm4gdH1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgdDt3YXJuKGBJQ0NCYXNlZCBjb2xvciBzcGFjZSAoJHtlWzFdfSk6ICIke3R9Ii5gKX1jb25zdCBtPXAuZ2V0UmF3KCJBbHRlcm5hdGUiKTtpZihtKXtjb25zdCBlPXRoaXMuI1IobSx0KTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTt3YXJuKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuZ3JheTtpZigzPT09bylyZXR1cm4gdGhpcy5yZ2I7aWYoND09PW8pcmV0dXJuIHRoaXMuY215azticmVhaztjYXNlIlBhdHRlcm4iOmM9ZVsxXXx8bnVsbDtjJiYoYz10aGlzLiNSKGMsdCkpO3JldHVybiBuZXcgUGF0dGVybkNTKGMpO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpjPXRoaXMuI1IoZVsxXSx0KTtjb25zdCBiPU1hdGhDbGFtcChhLmZldGNoSWZSZWYoZVsyXSksMCwyNTUpLHk9YS5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgSW5kZXhlZENTKGMsYix5KTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3Qgdz1hLmZldGNoSWZSZWYoZVsxXSk7bz1BcnJheS5pc0FycmF5KHcpP3cubGVuZ3RoOjE7Yz10aGlzLiNSKGVbMl0sdCk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sYyx4KTtjYXNlIkxhYiI6cz1hLmZldGNoSWZSZWYoZVsxXSk7bD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7aD1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3QgUz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgTGFiQ1MobCxoLFMpO2RlZmF1bHQ6d2FybihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtyfWApO3JldHVybiB0aGlzLmdyYXl9fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApO3JldHVybiB0aGlzLmdyYXl9c3RhdGljIGdldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX1zdGF0aWMgZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfXN0YXRpYyBnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9c3RhdGljIGdldCBjbXlrKCl7aWYoQ215a0lDQ0Jhc2VkQ1MuaXNVc2FibGUpdHJ5e3JldHVybiBzaGFkb3codGhpcywiY215ayIsbmV3IENteWtJQ0NCYXNlZENTKX1jYXRjaHt3YXJuKCJDTVlLIGZhbGxiYWNrOiBEZXZpY2VDTVlLIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19Y2xhc3MgSnBlZ0Vycm9yIGV4dGVuZHMgZmF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnBlZ0Vycm9yIil9fWNsYXNzIEROTE1hcmtlckVycm9yIGV4dGVuZHMgZmF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJETkxNYXJrZXJFcnJvciIpO3RoaXMuc2NhbkxpbmVzPXR9fWNsYXNzIEVPSU1hcmtlckVycm9yIGV4dGVuZHMgZmF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgamE9bmV3IFVpbnQ4QXJyYXkoWzAsMSw4LDE2LDksMiwzLDEwLDE3LDI0LDMyLDI1LDE4LDExLDQsNSwxMiwxOSwyNiwzMyw0MCw0OCw0MSwzNCwyNywyMCwxMyw2LDcsMTQsMjEsMjgsMzUsNDIsNDksNTYsNTcsNTAsNDMsMzYsMjksMjIsMTUsMjMsMzAsMzcsNDQsNTEsNTgsNTksNTIsNDUsMzgsMzEsMzksNDYsNTMsNjAsNjEsNTQsNDcsNTUsNjIsNjNdKSxfYT00MDE3LFVhPTc5OSxYYT0zNDA2LHFhPTIyNzYsSGE9MTU2NyxXYT0zNzg0LHphPTU3OTMsJGE9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsaT0wLG49MTY7Zm9yKDtuPjAmJiFlW24tMV07KW4tLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8bjthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtpXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31pKyt9aWYoYSsxPG4pe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscixpLG4scyxvLGMsbD0hMSl7Y29uc3QgaD1hLm1jdXNQZXJMaW5lLHU9YS5wcm9ncmVzc2l2ZSxkPXQ7bGV0IGY9MCxnPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGc+MCl7Zy0tO3JldHVybiBmPj5nJjF9Zj1lW3QrK107aWYoMjU1PT09Zil7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmbCl7Y29uc3Qgcj1yZWFkVWludDE2KGUsdCs9Mik7dCs9MjtpZihyPjAmJnIhPT1hLnNjYW5MaW5lcyl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEROTCBtYXJrZXIgKDB4RkZEQykgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiLHIpfWVsc2UgaWYoMjE3PT09cil7aWYobCl7Y29uc3QgZT15Kig4PT09YS5wcmVjaXNpb24/ODowKTtpZihlPjAmJk1hdGgucm91bmQoYS5zY2FuTGluZXMvZSk+PTUpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhLCBwb3NzaWJseSBjYXVzZWQgYnkgaW5jb3JyZWN0IGBzY2FuTGluZXNgIHBhcmFtZXRlciIsZSl9dGhyb3cgbmV3IEVPSU1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIil9dGhyb3cgbmV3IEpwZWdFcnJvcihgdW5leHBlY3RlZCBtYXJrZXIgJHsoZjw8OHxyKS50b1N0cmluZygxNil9YCl9fWc9NztyZXR1cm4gZj4+Pjd9ZnVuY3Rpb24gZGVjb2RlSHVmZm1hbihlKXtsZXQgdD1lO2Zvcig7Oyl7dD10W3JlYWRCaXQoKV07c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm51bWJlciI6cmV0dXJuIHQ7Y2FzZSJvYmplY3QiOmNvbnRpbnVlfXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgaHVmZm1hbiBzZXF1ZW5jZSIpfX1mdW5jdGlvbiByZWNlaXZlKGUpe2xldCB0PTA7Zm9yKDtlPjA7KXt0PXQ8PDF8cmVhZEJpdCgpO2UtLX1yZXR1cm4gdH1mdW5jdGlvbiByZWNlaXZlQW5kRXh0ZW5kKGUpe2lmKDE9PT1lKXJldHVybiAxPT09cmVhZEJpdCgpPzE6LTE7Y29uc3QgdD1yZWNlaXZlKGUpO3JldHVybiB0Pj0xPDxlLTE/dDp0KygtMTw8ZSkrMX1sZXQgcD0wO2xldCBtLGI9MDtsZXQgeT0wO2Z1bmN0aW9uIGRlY29kZU1jdShlLHQsYSxyLGkpe2NvbnN0IG49YSVoO3k9KGEvaHwwKSplLnYrcjtjb25zdCBzPW4qZS5oK2k7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseSxzKSl9ZnVuY3Rpb24gZGVjb2RlQmxvY2soZSx0LGEpe3k9YS9lLmJsb2Nrc1BlckxpbmV8MDtjb25zdCByPWElZS5ibG9ja3NQZXJMaW5lO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHkscikpfWNvbnN0IHc9ci5sZW5ndGg7bGV0IHgsUyxrLEMsdixGO0Y9dT8wPT09bj8wPT09bz9mdW5jdGlvbiBkZWNvZGVEQ0ZpcnN0KGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpPDxjO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cn06ZnVuY3Rpb24gZGVjb2RlRENTdWNjZXNzaXZlKGUsdCl7ZS5ibG9ja0RhdGFbdF18PXJlYWRCaXQoKTw8Y306MD09PW8/ZnVuY3Rpb24gZGVjb2RlQUNGaXJzdChlLHQpe2lmKHA+MCl7cC0tO3JldHVybn1sZXQgYT1uO2NvbnN0IHI9cztmb3IoO2E8PXI7KXtjb25zdCByPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksaT0xNSZyLG49cj4+NDtpZigwPT09aSl7aWYobjwxNSl7cD1yZWNlaXZlKG4pKygxPDxuKS0xO2JyZWFrfWErPTE2O2NvbnRpbnVlfWErPW47Y29uc3Qgcz1qYVthXTtlLmJsb2NrRGF0YVt0K3NdPXJlY2VpdmVBbmRFeHRlbmQoaSkqKDE8PGMpO2ErK319OmZ1bmN0aW9uIGRlY29kZUFDU3VjY2Vzc2l2ZShlLHQpe2xldCBhPW47Y29uc3Qgcj1zO2xldCBpLG8sbD0wO2Zvcig7YTw9cjspe2NvbnN0IHI9dCtqYVthXSxuPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goYil7Y2FzZSAwOm89ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtpPTE1Jm87bD1vPj40O2lmKDA9PT1pKWlmKGw8MTUpe3A9cmVjZWl2ZShsKSsoMTw8bCk7Yj00fWVsc2V7bD0xNjtiPTF9ZWxzZXtpZigxIT09aSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO209cmVjZWl2ZUFuZEV4dGVuZChpKTtiPWw/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPW4qKHJlYWRCaXQoKTw8Yyk7ZWxzZXtsLS07MD09PWwmJihiPTI9PT1iPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1uKihyZWFkQml0KCk8PGMpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09bTw8YztiPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPW4qKHJlYWRCaXQoKTw8YykpfWErK31pZig0PT09Yil7cC0tOzA9PT1wJiYoYj0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgaT0xO2Zvcig7aTw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEsbj1hPj40O2lmKDA9PT1yKXtpZihuPDE1KWJyZWFrO2krPTE2O2NvbnRpbnVlfWkrPW47Y29uc3Qgcz1qYVtpXTtlLmJsb2NrRGF0YVt0K3NdPXJlY2VpdmVBbmRFeHRlbmQocik7aSsrfX07bGV0IFQsTz0wO2NvbnN0IE09MT09PXc/clswXS5ibG9ja3NQZXJMaW5lKnJbMF0uYmxvY2tzUGVyQ29sdW1uOmgqYS5tY3VzUGVyQ29sdW1uO2xldCBELFI7Zm9yKDtPPD1NOyl7Y29uc3QgYT1pP01hdGgubWluKE0tTyxpKTpNO2lmKGE+MCl7Zm9yKFM9MDtTPHc7UysrKXJbU10ucHJlZD0wO3A9MDtpZigxPT09dyl7eD1yWzBdO2Zvcih2PTA7djxhO3YrKyl7ZGVjb2RlQmxvY2soeCxGLE8pO08rK319ZWxzZSBmb3Iodj0wO3Y8YTt2Kyspe2ZvcihTPTA7Uzx3O1MrKyl7eD1yW1NdO0Q9eC5oO1I9eC52O2ZvcihrPTA7azxSO2srKylmb3IoQz0wO0M8RDtDKyspZGVjb2RlTWN1KHgsRixPLGssQyl9TysrfX1nPTA7VD1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighVClicmVhaztpZihULmludmFsaWQpe3dhcm4oYGRlY29kZVNjYW4gLSAke2E+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSJ9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtULmludmFsaWR9YCk7dD1ULm9mZnNldH1pZighKFQubWFya2VyPj02NTQ4OCYmVC5tYXJrZXI8PTY1NDk1KSlicmVhazt0Kz0yfXJldHVybiB0LWR9ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxhKXtjb25zdCByPWUucXVhbnRpemF0aW9uVGFibGUsaT1lLmJsb2NrRGF0YTtsZXQgbixzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5LHcseCxTO2lmKCFyKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7Zj1pW3QrZV07Zz1pW3QrZSsxXTtwPWlbdCtlKzJdO209aVt0K2UrM107Yj1pW3QrZSs0XTt5PWlbdCtlKzVdO3c9aVt0K2UrNl07eD1pW3QrZSs3XTtmKj1yW2VdO2lmKGd8cHxtfGJ8eXx3fHgpe2cqPXJbZSsxXTtwKj1yW2UrMl07bSo9cltlKzNdO2IqPXJbZSs0XTt5Kj1yW2UrNV07dyo9cltlKzZdO3gqPXJbZSs3XTtuPXphKmYrMTI4Pj44O3M9emEqYisxMjg+Pjg7bz1wO2M9dztsPSRhKihnLXgpKzEyOD4+ODtkPSRhKihnK3gpKzEyOD4+ODtoPW08PDQ7dT15PDw0O249bitzKzE+PjE7cz1uLXM7Uz1vKldhK2MqSGErMTI4Pj44O289bypIYS1jKldhKzEyOD4+ODtjPVM7bD1sK3UrMT4+MTt1PWwtdTtkPWQraCsxPj4xO2g9ZC1oO249bitjKzE+PjE7Yz1uLWM7cz1zK28rMT4+MTtvPXMtbztTPWwqcWErZCpYYSsyMDQ4Pj4xMjtsPWwqWGEtZCpxYSsyMDQ4Pj4xMjtkPVM7Uz1oKlVhK3UqX2ErMjA0OD4+MTI7aD1oKl9hLXUqVWErMjA0OD4+MTI7dT1TO2FbZV09bitkO2FbZSs3XT1uLWQ7YVtlKzFdPXMrdTthW2UrNl09cy11O2FbZSsyXT1vK2g7YVtlKzVdPW8taDthW2UrM109YytsO2FbZSs0XT1jLWx9ZWxzZXtTPXphKmYrNTEyPj4xMDthW2VdPVM7YVtlKzFdPVM7YVtlKzJdPVM7YVtlKzNdPVM7YVtlKzRdPVM7YVtlKzVdPVM7YVtlKzZdPVM7YVtlKzddPVN9fWZvcihsZXQgZT0wO2U8ODsrK2Upe2Y9YVtlXTtnPWFbZSs4XTtwPWFbZSsxNl07bT1hW2UrMjRdO2I9YVtlKzMyXTt5PWFbZSs0MF07dz1hW2UrNDhdO3g9YVtlKzU2XTtpZihnfHB8bXxifHl8d3x4KXtuPXphKmYrMjA0OD4+MTI7cz16YSpiKzIwNDg+PjEyO289cDtjPXc7bD0kYSooZy14KSsyMDQ4Pj4xMjtkPSRhKihnK3gpKzIwNDg+PjEyO2g9bTt1PXk7bj00MTEyKyhuK3MrMT4+MSk7cz1uLXM7Uz1vKldhK2MqSGErMjA0OD4+MTI7bz1vKkhhLWMqV2ErMjA0OD4+MTI7Yz1TO2w9bCt1KzE+PjE7dT1sLXU7ZD1kK2grMT4+MTtoPWQtaDtuPW4rYysxPj4xO2M9bi1jO3M9cytvKzE+PjE7bz1zLW87Uz1sKnFhK2QqWGErMjA0OD4+MTI7bD1sKlhhLWQqcWErMjA0OD4+MTI7ZD1TO1M9aCpVYSt1Kl9hKzIwNDg+PjEyO2g9aCpfYS11KlVhKzIwNDg+PjEyO3U9UztmPW4rZDt4PW4tZDtnPXMrdTt3PXMtdTtwPW8raDt5PW8taDttPWMrbDtiPWMtbDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O2c8MTY/Zz0wOmc+PTQwODA/Zz0yNTU6Zz4+PTQ7cDwxNj9wPTA6cD49NDA4MD9wPTI1NTpwPj49NDttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O2I8MTY/Yj0wOmI+PTQwODA/Yj0yNTU6Yj4+PTQ7eTwxNj95PTA6eT49NDA4MD95PTI1NTp5Pj49NDt3PDE2P3c9MDp3Pj00MDgwP3c9MjU1Onc+Pj00O3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7aVt0K2VdPWY7aVt0K2UrOF09ZztpW3QrZSsxNl09cDtpW3QrZSsyNF09bTtpW3QrZSszMl09YjtpW3QrZSs0MF09eTtpW3QrZSs0OF09dztpW3QrZSs1Nl09eH1lbHNle1M9emEqZis4MTkyPj4xNDtTPVM8LTIwNDA/MDpTPj0yMDI0PzI1NTpTKzIwNTY+PjQ7aVt0K2VdPVM7aVt0K2UrOF09UztpW3QrZSsxNl09UztpW3QrZSsyNF09UztpW3QrZSszMl09UztpW3QrZSs0MF09UztpW3QrZSs0OF09UztpW3QrZSs1Nl09U319fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGE9dC5ibG9ja3NQZXJMaW5lLHI9dC5ibG9ja3NQZXJDb2x1bW4saT1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHI9MDtyPGE7cisrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsciksaSl9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsYT10KXtjb25zdCByPWUubGVuZ3RoLTE7bGV0IGk9YTx0P2E6dDtpZih0Pj1yKXJldHVybiBudWxsO2NvbnN0IG49cmVhZFVpbnQxNihlLHQpO2lmKG4+PTY1NDcyJiZuPD02NTUzNClyZXR1cm57aW52YWxpZDpudWxsLG1hcmtlcjpuLG9mZnNldDp0fTtsZXQgcz1yZWFkVWludDE2KGUsaSk7Zm9yKDshKHM+PTY1NDcyJiZzPD02NTUzNCk7KXtpZigrK2k+PXIpcmV0dXJuIG51bGw7cz1yZWFkVWludDE2KGUsaSl9cmV0dXJue2ludmFsaWQ6bi50b1N0cmluZygxNiksbWFya2VyOnMsb2Zmc2V0Oml9fWZ1bmN0aW9uIHByZXBhcmVDb21wb25lbnRzKGUpe2NvbnN0IHQ9TWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOC9lLm1heEgpLGE9TWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgvZS5tYXhWKTtmb3IoY29uc3QgciBvZiBlLmNvbXBvbmVudHMpe2NvbnN0IGk9TWF0aC5jZWlsKE1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgpKnIuaC9lLm1heEgpLG49TWF0aC5jZWlsKE1hdGguY2VpbChlLnNjYW5MaW5lcy84KSpyLnYvZS5tYXhWKSxzPXQqci5oLG89NjQqKGEqci52KSoocysxKTtyLmJsb2NrRGF0YT1uZXcgSW50MTZBcnJheShvKTtyLmJsb2Nrc1BlckxpbmU9aTtyLmJsb2Nrc1BlckNvbHVtbj1ufWUubWN1c1BlckxpbmU9dDtlLm1jdXNQZXJDb2x1bW49YX1mdW5jdGlvbiByZWFkRGF0YUJsb2NrKGUsdCl7Y29uc3QgYT1yZWFkVWludDE2KGUsdCk7bGV0IHI9KHQrPTIpK2EtMjtjb25zdCBpPWZpbmROZXh0RmlsZU1hcmtlcihlLHIsdCk7aWYoaT8uaW52YWxpZCl7d2FybigicmVhZERhdGFCbG9jayAtIGluY29ycmVjdCBsZW5ndGgsIGN1cnJlbnQgbWFya2VyIGlzOiAiK2kuaW52YWxpZCk7cj1pLm9mZnNldH1jb25zdCBuPWUuc3ViYXJyYXkodCxyKTtyZXR1cm57YXBwRGF0YTpuLG9sZE9mZnNldDp0LG5ld09mZnNldDp0K24ubGVuZ3RofX1mdW5jdGlvbiBza2lwRGF0YShlLHQpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQpLHI9KHQrPTIpK2EtMixpPWZpbmROZXh0RmlsZU1hcmtlcihlLHIsdCk7cmV0dXJuIGk/LmludmFsaWQ/aS5vZmZzZXQ6cn1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9c3RhdGljIGNhblVzZUltYWdlRGVjb2RlcihlLHQ9LTEpe2xldCBhPW51bGwscj0wLGk9bnVsbCxuPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7bj1yZWFkVWludDE2KGUscik7cis9MjtlOmZvcig7NjU0OTchPT1uOyl7c3dpdGNoKG4pe2Nhc2UgNjU1MDU6Y29uc3R7YXBwRGF0YTp0LG9sZE9mZnNldDpzLG5ld09mZnNldDpvfT1yZWFkRGF0YUJsb2NrKGUscik7cj1vO2lmKDY5PT09dFswXSYmMTIwPT09dFsxXSYmMTA1PT09dFsyXSYmMTAyPT09dFszXSYmMD09PXRbNF0mJjA9PT10WzVdKXtpZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIkR1cGxpY2F0ZSBFWElGLWJsb2NrcyBmb3VuZC4iKTthPXtleGlmU3RhcnQ6cys2LGV4aWZFbmQ6b319bj1yZWFkVWludDE2KGUscik7cis9Mjtjb250aW51ZTtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppPWVbcis3XTticmVhayBlO2Nhc2UgNjU1MzU6MjU1IT09ZVtyXSYmci0tfXI9c2tpcERhdGEoZSxyKTtuPXJlYWRVaW50MTYoZSxyKTtyKz0yfXJldHVybiA0PT09aXx8Mz09PWkmJjA9PT10P251bGw6YXx8e319cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2xldCBhLHIsaT0wLG49bnVsbCxzPW51bGwsbz0wO2NvbnN0IGM9W10sbD1bXSxoPVtdO2xldCB1PXJlYWRVaW50MTYoZSxpKTtpKz0yO2lmKDY1NDk2IT09dSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7dT1yZWFkVWludDE2KGUsaSk7aSs9MjtlOmZvcig7NjU0OTchPT11Oyl7bGV0IGQsZixnO3N3aXRjaCh1KXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3R7YXBwRGF0YTpwLG5ld09mZnNldDptfT1yZWFkRGF0YUJsb2NrKGUsaSk7aT1tOzY1NTA0PT09dSYmNzQ9PT1wWzBdJiY3MD09PXBbMV0mJjczPT09cFsyXSYmNzA9PT1wWzNdJiYwPT09cFs0XSYmKG49e3ZlcnNpb246e21ham9yOnBbNV0sbWlub3I6cFs2XX0sZGVuc2l0eVVuaXRzOnBbN10seERlbnNpdHk6cFs4XTw8OHxwWzldLHlEZW5zaXR5OnBbMTBdPDw4fHBbMTFdLHRodW1iV2lkdGg6cFsxMl0sdGh1bWJIZWlnaHQ6cFsxM10sdGh1bWJEYXRhOnAuc3ViYXJyYXkoMTQsMTQrMypwWzEyXSpwWzEzXSl9KTs2NTUxOD09PXUmJjY1PT09cFswXSYmMTAwPT09cFsxXSYmMTExPT09cFsyXSYmOTg9PT1wWzNdJiYxMDE9PT1wWzRdJiYocz17dmVyc2lvbjpwWzVdPDw4fHBbNl0sZmxhZ3MwOnBbN108PDh8cFs4XSxmbGFnczE6cFs5XTw8OHxwWzEwXSx0cmFuc2Zvcm1Db2RlOnBbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBiPXJlYWRVaW50MTYoZSxpKTtpKz0yO2NvbnN0IHk9YitpLTI7bGV0IHc7Zm9yKDtpPHk7KXtjb25zdCB0PWVbaSsrXSxhPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoZj0wO2Y8NjQ7ZisrKXt3PWphW2ZdO2Fbd109cmVhZFVpbnQxNihlLGkpO2krPTJ9fWVsc2UgZm9yKGY9MDtmPDY0O2YrKyl7dz1qYVtmXTthW3ddPWVbaSsrXX1jWzE1JnRdPWF9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtpKz0yO2E9e307YS5leHRlbmRlZD02NTQ3Mz09PXU7YS5wcm9ncmVzc2l2ZT02NTQ3ND09PXU7YS5wcmVjaXNpb249ZVtpKytdO2NvbnN0IHg9cmVhZFVpbnQxNihlLGkpO2krPTI7YS5zY2FuTGluZXM9dHx8eDthLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxpKTtpKz0yO2EuY29tcG9uZW50cz1bXTthLmNvbXBvbmVudElkcz17fTtjb25zdCBTPWVbaSsrXTtsZXQgaz0wLEM9MDtmb3IoZD0wO2Q8UztkKyspe2NvbnN0IHQ9ZVtpXSxyPWVbaSsxXT4+NCxuPTE1JmVbaSsxXTtrPHImJihrPXIpO0M8biYmKEM9bik7Y29uc3Qgcz1lW2krMl07Zz1hLmNvbXBvbmVudHMucHVzaCh7aDpyLHY6bixxdWFudGl6YXRpb25JZDpzLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTthLmNvbXBvbmVudElkc1t0XT1nLTE7aSs9M31hLm1heEg9azthLm1heFY9QztwcmVwYXJlQ29tcG9uZW50cyhhKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IHY9cmVhZFVpbnQxNihlLGkpO2krPTI7Zm9yKGQ9MjtkPHY7KXtjb25zdCB0PWVbaSsrXSxhPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgcj0wO2ZvcihmPTA7ZjwxNjtmKyssaSsrKXIrPWFbZl09ZVtpXTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO2ZvcihmPTA7ZjxyO2YrKyxpKyspbltmXT1lW2ldO2QrPTE3K3I7KHQ+PjQ/bDpoKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShhLG4pfWJyZWFrO2Nhc2UgNjU1MDE6aSs9MjtyPXJlYWRVaW50MTYoZSxpKTtpKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3QgRj0xPT0rK28mJiF0O2krPTI7Y29uc3QgVD1lW2krK10sTz1bXTtmb3IoZD0wO2Q8VDtkKyspe2NvbnN0IHQ9ZVtpKytdLHI9YS5jb21wb25lbnRJZHNbdF0sbj1hLmNvbXBvbmVudHNbcl07bi5pbmRleD10O2NvbnN0IHM9ZVtpKytdO24uaHVmZm1hblRhYmxlREM9aFtzPj40XTtuLmh1ZmZtYW5UYWJsZUFDPWxbMTUmc107Ty5wdXNoKG4pfWNvbnN0IE09ZVtpKytdLEQ9ZVtpKytdLFI9ZVtpKytdO3RyeXtpKz1kZWNvZGVTY2FuKGUsaSxhLE8scixNLEQsUj4+NCwxNSZSLEYpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6aSs9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbaV0mJmktLTticmVhaztkZWZhdWx0OmNvbnN0IE49ZmluZE5leHRGaWxlTWFya2VyKGUsaS0yLGktMyk7aWYoTj8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIitOLmludmFsaWQpO2k9Ti5vZmZzZXQ7YnJlYWt9aWYoIU58fGk+PWUubGVuZ3RoLTEpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBlfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK3UudG9TdHJpbmcoMTYpKX11PXJlYWRVaW50MTYoZSxpKTtpKz0yfWlmKCFhKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1hLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWEuc2NhbkxpbmVzO3RoaXMuamZpZj1uO3RoaXMuYWRvYmU9czt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgYS5jb21wb25lbnRzKXtjb25zdCB0PWNbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvYS5tYXhILHNjYWxlWTplLnYvYS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxhPSExKXtjb25zdCByPXRoaXMud2lkdGgvZSxpPXRoaXMuaGVpZ2h0L3Q7bGV0IG4scyxvLGMsbCxoLHUsZCxmLGcscCxtPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHk9ZSp0KmIsdz1uZXcgVWludDhDbGFtcGVkQXJyYXkoeSkseD1uZXcgVWludDMyQXJyYXkoZSksUz00Mjk0OTY3Mjg4O2xldCBrO2Zvcih1PTA7dTxiO3UrKyl7bj10aGlzLmNvbXBvbmVudHNbdV07cz1uLnNjYWxlWCpyO289bi5zY2FsZVkqaTttPXU7cD1uLm91dHB1dDtjPW4uYmxvY2tzUGVyTGluZSsxPDwzO2lmKHMhPT1rKXtmb3IobD0wO2w8ZTtsKyspe2Q9MHxsKnM7eFtsXT0oZCZTKTw8M3w3JmR9az1zfWZvcihoPTA7aDx0O2grKyl7ZD0wfGgqbztnPWMqKGQmUyl8KDcmZCk8PDM7Zm9yKGw9MDtsPGU7bCsrKXt3W21dPXBbZyt4W2xdXTttKz1ifX19bGV0IEM9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHxDfHwoQz1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoQylmb3IodT0wO3U8eTspZm9yKGQ9MCxmPTA7ZDxiO2QrKyx1KyssZis9Mil3W3VdPSh3W3VdKkNbZl0+PjgpK0NbZisxXTtyZXR1cm4gd31nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLHI7Zm9yKGxldCBpPTAsbj1lLmxlbmd0aDtpPG47aSs9Myl7dD1lW2ldO2E9ZVtpKzFdO3I9ZVtpKzJdO2VbaV09dC0xNzkuNDU2KzEuNDAyKnI7ZVtpKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpyO2VbaSsyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgYT0wLHI9MCxpPWUubGVuZ3RoO2E8aTthKz0zLHIrPTQpe2NvbnN0IGk9ZVthXSxuPWVbYSsxXSxzPWVbYSsyXTt0W3JdPWktMTc5LjQ1NisxLjQwMipzO3RbcisxXT1pKzEzNS40NTktLjM0NCpuLS43MTQqczt0W3IrMl09aS0yMjYuODE2KzEuNzcyKm47dFtyKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXt0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhlKTtyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihlKX1fY29udmVydFljY2tUb1JnYmEoZSl7dGhpcy5fY29udmVydFljY2tUb0NteWsoZSk7cmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2JhKGUpfV9jb252ZXJ0WWNja1RvQ215ayhlKXtsZXQgdCxhLHI7Zm9yKGxldCBpPTAsbj1lLmxlbmd0aDtpPG47aSs9NCl7dD1lW2ldO2E9ZVtpKzFdO3I9ZVtpKzJdO2VbaV09NDM0LjQ1Ni10LTEuNDAyKnI7ZVtpKzFdPTExOS41NDEtdCsuMzQ0KmErLjcxNCpyO2VbaSsyXT00ODEuODE2LXQtMS43NzIqYX1yZXR1cm4gZX1fY29udmVydENteWtUb1JnYihlKXtjb25zdCB0PWUubGVuZ3RoLzQ7Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiQnVmZmVyKGUsMCx0LGUsMCw4LDApO3JldHVybiBlLnN1YmFycmF5KDAsMyp0KX1fY29udmVydENteWtUb1JnYmEoZSl7Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiQnVmZmVyKGUsMCxlLmxlbmd0aC80LGUsMCw4LDEpO2lmKENvbG9yU3BhY2VVdGlscy5jbXlrIGluc3RhbmNlb2YgRGV2aWNlQ215a0NTKWZvcihsZXQgdD0zLGE9ZS5sZW5ndGg7dDxhO3QrPTQpZVt0XT0yNTU7cmV0dXJuIGV9Z2V0RGF0YSh7d2lkdGg6ZSxoZWlnaHQ6dCxmb3JjZVJHQkE6YT0hMSxmb3JjZVJHQjpyPSExLGlzU291cmNlUERGOmk9ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgbj10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxpKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYoYXx8cikpe2NvbnN0IGU9bi5sZW5ndGgqKGE/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgcj0wO2lmKGEpIWZ1bmN0aW9uIGdyYXlUb1JHQkEoZSx0KXtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspdFthXT02NTc5MyplW2FdfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspdFthXT0xNjg0MzAwOCplW2FdfDI1NX0obixuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIG4pe3RbcisrXT1lO3RbcisrXT1lO3RbcisrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihhKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShuLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKG4sZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihuKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShuKTpyP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iobik6dGhpcy5fY29udmVydFljY2tUb0NteWsobik7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEobik7aWYocilyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihuKX1yZXR1cm4gbn19Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtzdGF0aWMjTT1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1hfXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI00/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvanBlZyIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBzZXRPcHRpb25zKHtpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDplPSExfSl7dGhpcy4jTT1lfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1nZXQganBlZ09wdGlvbnMoKXtjb25zdCBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxyPXQubGVuZ3RoLGk9bmV3IEludDMyQXJyYXkocik7bGV0IG49ITE7Y29uc3Qgcz0oMTw8YSktMTtmb3IobGV0IGU9MDtlPHI7ZSs9Mil7aVtlXT0yNTYqKHRbZSsxXS10W2VdKXwwO2lbZSsxXT10W2VdKnN8MDsyNTY9PT1pW2VdJiYwPT09aVtlKzFdfHwobj0hMCl9biYmKGUuZGVjb2RlVHJhbnNmb3JtPWkpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJqcGVnT3B0aW9ucyIsZSl9I04oZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aC0xO3Q8YTt0KyspaWYoMjU1PT09ZVt0XSYmMjE2PT09ZVt0KzFdKXt0PjAmJihlPWUuc3ViYXJyYXkodCkpO2JyZWFrfXJldHVybiBlfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPXRoaXMuI04oZXx8dGhpcy5ieXRlcyk7Y29uc3QgdD1uZXcgSnBlZ0ltYWdlKHRoaXMuanBlZ09wdGlvbnMpO3QucGFyc2UoZSk7Y29uc3QgYT10LmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPWEubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe2lmKCFhd2FpdCBKcGVnU3RyZWFtLmNhblVzZUltYWdlRGVjb2RlcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuanBlZ09wdGlvbnM7aWYoZS5kZWNvZGVUcmFuc2Zvcm0pcmV0dXJuIG51bGw7bGV0IHQ7dHJ5e2NvbnN0IGE9dGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlciYmYXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpfHx0aGlzLmJ5dGVzO2lmKCFhKXJldHVybiBudWxsO2xldCByPXRoaXMuI04oYSk7Y29uc3QgaT1KcGVnSW1hZ2UuY2FuVXNlSW1hZ2VEZWNvZGVyKHIsZS5jb2xvclRyYW5zZm9ybSk7aWYoIWkpcmV0dXJuIG51bGw7aWYoaS5leGlmU3RhcnQpe3I9ci5zbGljZSgpO3IuZmlsbCgwLGkuZXhpZlN0YXJ0LGkuZXhpZkVuZCl9dD1uZXcgSW1hZ2VEZWNvZGVyKHtkYXRhOnIsdHlwZToiaW1hZ2UvanBlZyIscHJlZmVyQW5pbWF0aW9uOiExfSk7cmV0dXJuKGF3YWl0IHQuZGVjb2RlKCkpLmltYWdlfWNhdGNoKGUpe3dhcm4oYGdldFRyYW5zZmVyYWJsZUltYWdlIC0gZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9ZmluYWxseXt0Py5jbG9zZSgpfX19dmFyIE9wZW5KUEVHPWFzeW5jIGZ1bmN0aW9uKGU9e30pe3ZhciB0LGEscj1lLGk9bmV3IFByb21pc2UoKChlLHIpPT57dD1lO2E9cn0pKSxuPSIuL3RoaXMucHJvZ3JhbSIscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxzPWltcG9ydC5tZXRhLnVybDt0cnl7bmV3IFVSTCgiLiIscykuaHJlZn1jYXRjaHt9dmFyIG8sYyxsLGgsdSxkLGY9Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSxnPWNvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlKSxwPSExO2Z1bmN0aW9uIHVwZGF0ZU1lbW9yeVZpZXdzKCl7dmFyIGU9by5idWZmZXI7bD1uZXcgSW50OEFycmF5KGUpO25ldyBJbnQxNkFycmF5KGUpO2g9bmV3IFVpbnQ4QXJyYXkoZSk7bmV3IFVpbnQxNkFycmF5KGUpO3U9bmV3IEludDMyQXJyYXkoZSk7ZD1uZXcgVWludDMyQXJyYXkoZSk7bmV3IEZsb2F0MzJBcnJheShlKTtuZXcgRmxvYXQ2NEFycmF5KGUpO25ldyBCaWdJbnQ2NEFycmF5KGUpO25ldyBCaWdVaW50NjRBcnJheShlKX12YXIgbT0wLGI9bnVsbDtjbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKGUpe3RoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWA7dGhpcy5zdGF0dXM9ZX19dmFyIGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKShyKX0seT1bXSxhZGRPblBvc3RSdW49ZT0+eS5wdXNoKGUpLHc9W10sYWRkT25QcmVSdW49ZT0+dy5wdXNoKGUpLHg9ITAsUz0wLGs9e30saGFuZGxlRXhjZXB0aW9uPWU9PntpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1c3x8InVud2luZCI9PWUpcmV0dXJuIGM7cXVpdF8oMCxlKX0sa2VlcFJ1bnRpbWVBbGl2ZT0oKT0+eHx8Uz4wLF9wcm9jX2V4aXQ9ZT0+e2M9ZTtpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXtyLm9uRXhpdD8uKGUpO3A9ITB9cXVpdF8oMCxuZXcgRXhpdFN0YXR1cyhlKSl9LF9leGl0PShlLHQpPT57Yz1lO19wcm9jX2V4aXQoZSl9LGNhbGxVc2VyQ2FsbGJhY2s9ZT0+e2lmKCFwKXRyeXtlKCk7KCgpPT57aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl0cnl7X2V4aXQoYyl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX0pKCl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX0sZ3Jvd01lbW9yeT1lPT57dmFyIHQ9KGUtby5idWZmZXIuYnl0ZUxlbmd0aCs2NTUzNSkvNjU1MzZ8MDt0cnl7by5ncm93KHQpO3VwZGF0ZU1lbW9yeVZpZXdzKCk7cmV0dXJuIDF9Y2F0Y2goZSl7fX0sQz17fSxnZXRFbnZTdHJpbmdzPSgpPT57aWYoIWdldEVudlN0cmluZ3Muc3RyaW5ncyl7dmFyIGU9e1VTRVI6IndlYl91c2VyIixMT0dOQU1FOiJ3ZWJfdXNlciIsUEFUSDoiLyIsUFdEOiIvIixIT01FOiIvaG9tZS93ZWJfdXNlciIsTEFORzooIm9iamVjdCI9PXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci5sYW5ndWFnZXMmJm5hdmlnYXRvci5sYW5ndWFnZXNbMF18fCJDIikucmVwbGFjZSgiLSIsIl8iKSsiLlVURi04IixfOm58fCIuL3RoaXMucHJvZ3JhbSJ9O2Zvcih2YXIgdCBpbiBDKXZvaWQgMD09PUNbdF0/ZGVsZXRlIGVbdF06ZVt0XT1DW3RdO3ZhciBhPVtdO2Zvcih2YXIgdCBpbiBlKWEucHVzaChgJHt0fT0ke2VbdF19YCk7Z2V0RW52U3RyaW5ncy5zdHJpbmdzPWF9cmV0dXJuIGdldEVudlN0cmluZ3Muc3RyaW5nc30sbGVuZ3RoQnl0ZXNVVEY4PWU9Pntmb3IodmFyIHQ9MCxhPTA7YTxlLmxlbmd0aDsrK2Epe3ZhciByPWUuY2hhckNvZGVBdChhKTtpZihyPD0xMjcpdCsrO2Vsc2UgaWYocjw9MjA0Nyl0Kz0yO2Vsc2UgaWYocj49NTUyOTYmJnI8PTU3MzQzKXt0Kz00OysrYX1lbHNlIHQrPTN9cmV0dXJuIHR9LHY9W251bGwsW10sW11dLEY9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXI6dm9pZCAwLFVURjhBcnJheVRvU3RyaW5nPShlLHQ9MCxhPU5hTik9Pntmb3IodmFyIHI9dCthLGk9dDtlW2ldJiYhKGk+PXIpOykrK2k7aWYoaS10PjE2JiZlLmJ1ZmZlciYmRilyZXR1cm4gRi5kZWNvZGUoZS5zdWJhcnJheSh0LGkpKTtmb3IodmFyIG49IiI7dDxpOyl7dmFyIHM9ZVt0KytdO2lmKDEyOCZzKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0JnMpKXt2YXIgYz02MyZlW3QrK107aWYoKHM9MjI0PT0oMjQwJnMpPygxNSZzKTw8MTJ8bzw8NnxjOig3JnMpPDwxOHxvPDwxMnxjPDw2fDYzJmVbdCsrXSk8NjU1MzYpbis9U3RyaW5nLmZyb21DaGFyQ29kZShzKTtlbHNle3ZhciBsPXMtNjU1MzY7bis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxsPj4xMCw1NjMyMHwxMDIzJmwpfX1lbHNlIG4rPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJnMpPDw2fG8pfWVsc2Ugbis9U3RyaW5nLmZyb21DaGFyQ29kZShzKX1yZXR1cm4gbn0scHJpbnRDaGFyPShlLHQpPT57dmFyIGE9dltlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/ZjpnKShVVEY4QXJyYXlUb1N0cmluZyhhKSk7YS5sZW5ndGg9MH1lbHNlIGEucHVzaCh0KX0sVVRGOFRvU3RyaW5nPShlLHQpPT5lP1VURjhBcnJheVRvU3RyaW5nKGgsZSx0KToiIjtyLm5vRXhpdFJ1bnRpbWUmJih4PXIubm9FeGl0UnVudGltZSk7ci5wcmludCYmKGY9ci5wcmludCk7ci5wcmludEVyciYmKGc9ci5wcmludEVycik7ci53YXNtQmluYXJ5JiZyLndhc21CaW5hcnk7ci5hcmd1bWVudHMmJnIuYXJndW1lbnRzO3IudGhpc1Byb2dyYW0mJihuPXIudGhpc1Byb2dyYW0pO3Iud3JpdGVBcnJheVRvTWVtb3J5PShlLHQpPT57bC5zZXQoZSx0KX07dmFyIFQ9e2w6KCk9PmZ1bmN0aW9uIGFib3J0KGUpe3Iub25BYm9ydD8uKGUpO2coZT0iQWJvcnRlZCgiK2UrIikiKTtwPSEwO2UrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgdD1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpO2EodCk7dGhyb3cgdH0oIiIpLGs6KCk9Pnt4PSExO1M9MH0sbTooZSx0KT0+e2lmKGtbZV0pe2NsZWFyVGltZW91dChrW2VdLmlkKTtkZWxldGUga1tlXX1pZighdClyZXR1cm4gMDt2YXIgYT1zZXRUaW1lb3V0KCgoKT0+e2RlbGV0ZSBrW2VdO2NhbGxVc2VyQ2FsbGJhY2soKCgpPT5NKGUscGVyZm9ybWFuY2Uubm93KCkpKSl9KSx0KTtrW2VdPXtpZDphLHRpbWVvdXRfbXM6dH07cmV0dXJuIDB9LGc6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzEoZSx0KXtlPj49Mjtjb25zdCBhPXIuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KSxpPXUuc3ViYXJyYXkoZSxlK3QpO2Euc2V0KGkpfSxmOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18zKGUsdCxhLGkpe2U+Pj0yO3Q+Pj0yO2E+Pj0yO2NvbnN0IG49ci5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqaSkscz11LnN1YmFycmF5KGUsZStpKSxvPXUuc3ViYXJyYXkodCx0K2kpLGM9dS5zdWJhcnJheShhLGEraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7blszKmVdPXNbZV07blszKmUrMV09b1tlXTtuWzMqZSsyXT1jW2VdfX0sZTpmdW5jdGlvbiBfY29weV9waXhlbHNfNChlLHQsYSxpLG4pe2U+Pj0yO3Q+Pj0yO2E+Pj0yO2k+Pj0yO2NvbnN0IHM9ci5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqbiksbz11LnN1YmFycmF5KGUsZStuKSxjPXUuc3ViYXJyYXkodCx0K24pLGw9dS5zdWJhcnJheShhLGErbiksaD11LnN1YmFycmF5KGksaStuKTtmb3IobGV0IGU9MDtlPG47ZSsrKXtzWzQqZV09b1tlXTtzWzQqZSsxXT1jW2VdO3NbNCplKzJdPWxbZV07c1s0KmUrM109aFtlXX19LG46ZT0+e3ZhciB0LGEscj1oLmxlbmd0aCxpPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+aSlyZXR1cm4hMTtmb3IodmFyIG49MTtuPD00O24qPTIpe3ZhciBzPXIqKDErLjIvbik7cz1NYXRoLm1pbihzLGUrMTAwNjYzMjk2KTt2YXIgbz1NYXRoLm1pbihpLCh0PU1hdGgubWF4KGUscyksYT02NTUzNixNYXRoLmNlaWwodC9hKSphKSk7aWYoZ3Jvd01lbW9yeShvKSlyZXR1cm4hMH1yZXR1cm4hMX0scDooZSx0KT0+e3ZhciBhPTAscj0wO2Zvcih2YXIgaSBvZiBnZXRFbnZTdHJpbmdzKCkpe3ZhciBuPXQrYTtkW2Urcj4+Ml09bjthKz0oKGUsdCxhLHIpPT57aWYoIShyPjApKXJldHVybiAwO2Zvcih2YXIgaT1hLG49YStyLTEscz0wO3M8ZS5sZW5ndGg7KytzKXt2YXIgbz1lLmNoYXJDb2RlQXQocyk7bz49NTUyOTYmJm88PTU3MzQzJiYobz02NTUzNisoKDEwMjMmbyk8PDEwKXwxMDIzJmUuY2hhckNvZGVBdCgrK3MpKTtpZihvPD0xMjcpe2lmKGE+PW4pYnJlYWs7dFthKytdPW99ZWxzZSBpZihvPD0yMDQ3KXtpZihhKzE+PW4pYnJlYWs7dFthKytdPTE5MnxvPj42O3RbYSsrXT0xMjh8NjMmb31lbHNlIGlmKG88PTY1NTM1KXtpZihhKzI+PW4pYnJlYWs7dFthKytdPTIyNHxvPj4xMjt0W2ErK109MTI4fG8+PjYmNjM7dFthKytdPTEyOHw2MyZvfWVsc2V7aWYoYSszPj1uKWJyZWFrO3RbYSsrXT0yNDB8bz4+MTg7dFthKytdPTEyOHxvPj4xMiY2Mzt0W2ErK109MTI4fG8+PjYmNjM7dFthKytdPTEyOHw2MyZvfX10W2FdPTA7cmV0dXJuIGEtaX0pKGksaCxuLDEvMCkrMTtyKz00fXJldHVybiAwfSxxOihlLHQpPT57dmFyIGE9Z2V0RW52U3RyaW5ncygpO2RbZT4+Ml09YS5sZW5ndGg7dmFyIHI9MDtmb3IodmFyIGkgb2YgYSlyKz1sZW5ndGhCeXRlc1VURjgoaSkrMTtkW3Q+PjJdPXI7cmV0dXJuIDB9LGI6ZT0+NTIsbzpmdW5jdGlvbiBfZmRfc2VlayhlLHQsYSxyKXt0PShpPXQpPC05MDA3MTk5MjU0NzQwOTkyfHxpPjkwMDcxOTkyNTQ3NDA5OTI/TmFOOk51bWJlcihpKTt2YXIgaTtyZXR1cm4gNzB9LGM6KGUsdCxhLHIpPT57Zm9yKHZhciBpPTAsbj0wO248YTtuKyspe3ZhciBzPWRbdD4+Ml0sbz1kW3QrND4+Ml07dCs9ODtmb3IodmFyIGM9MDtjPG87YysrKXByaW50Q2hhcihlLGhbcytjXSk7aSs9b31kW3I+PjJdPWk7cmV0dXJuIDB9LHI6ZnVuY3Rpb24gX2dyYXlfdG9fcmdiYShlLHQpe2U+Pj0yO2NvbnN0IGE9ci5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqdCksaT11LnN1YmFycmF5KGUsZSt0KTtmb3IobGV0IGU9MDtlPHQ7ZSsrKXthWzQqZV09YVs0KmUrMV09YVs0KmUrMl09aVtlXTthWzQqZSszXT0yNTV9fSxpOmZ1bmN0aW9uIF9ncmF5YV90b19yZ2JhKGUsdCxhKXtlPj49Mjt0Pj49Mjtjb25zdCBpPXIuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KmEpLG49dS5zdWJhcnJheShlLGUrYSkscz11LnN1YmFycmF5KHQsdCthKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpWzQqZV09aVs0KmUrMV09aVs0KmUrMl09bltlXTtpWzQqZSszXT1zW2VdfX0sZDpmdW5jdGlvbiBfanNQcmludFdhcm5pbmcoZSl7Y29uc3QgdD1VVEY4VG9TdHJpbmcoZSk7KHIud2Fybnx8Y29uc29sZS53YXJuKShgT3BlbkpQRUc6ICR7dH1gKX0sajpfcHJvY19leGl0LGg6ZnVuY3Rpb24gX3JnYl90b19yZ2JhKGUsdCxhLGkpe2U+Pj0yO3Q+Pj0yO2E+Pj0yO2NvbnN0IG49ci5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz11LnN1YmFycmF5KGUsZStpKSxvPXUuc3ViYXJyYXkodCx0K2kpLGM9dS5zdWJhcnJheShhLGEraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7bls0KmVdPXNbZV07bls0KmUrMV09b1tlXTtuWzQqZSsyXT1jW2VdO25bNCplKzNdPTI1NX19LGE6ZnVuY3Rpb24gX3N0b3JlRXJyb3JNZXNzYWdlKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpO3IuZXJyb3JNZXNzYWdlcz9yLmVycm9yTWVzc2FnZXMrPSJcbiIrdDpyLmVycm9yTWVzc2FnZXM9dH19LE89YXdhaXQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlLHQpe089ZS5leHBvcnRzO289Ty5zO3VwZGF0ZU1lbW9yeVZpZXdzKCk7IWZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVuZGVuY3koZSl7bS0tO3IubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKG0pO2lmKDA9PW0mJmIpe3ZhciB0PWI7Yj1udWxsO3QoKX19KCk7cmV0dXJuIE99IWZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koZSl7bSsrO3IubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKG0pfSgpO3ZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6VH19KCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxhKT0+e3IuaW5zdGFudGlhdGVXYXNtKGUsKChlLGEpPT57dChyZWNlaXZlSW5zdGFuY2UoZSkpfSkpfSkpfSgpLE09KE8udCxyLl9tYWxsb2M9Ty51LHIuX2ZyZWU9Ty52LHIuX2pwMl9kZWNvZGU9Ty53LE8ueCk7IWZ1bmN0aW9uIHByZUluaXQoKXtpZihyLnByZUluaXQpeyJmdW5jdGlvbiI9PXR5cGVvZiByLnByZUluaXQmJihyLnByZUluaXQ9W3IucHJlSW5pdF0pO2Zvcig7ci5wcmVJbml0Lmxlbmd0aD4wOylyLnByZUluaXQuc2hpZnQoKSgpfX0oKTshZnVuY3Rpb24gcnVuKCl7aWYobT4wKWI9cnVuO2Vsc2V7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKHIucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2Ygci5wcmVSdW4mJihyLnByZVJ1bj1bci5wcmVSdW5dKTtmb3IoO3IucHJlUnVuLmxlbmd0aDspYWRkT25QcmVSdW4oci5wcmVSdW4uc2hpZnQoKSl9Y2FsbFJ1bnRpbWVDYWxsYmFja3Modyl9KCk7aWYobT4wKWI9cnVuO2Vsc2UgaWYoci5zZXRTdGF0dXMpe3Iuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKCk9PntzZXRUaW1lb3V0KCgoKT0+ci5zZXRTdGF0dXMoIiIpKSwxKTtkb1J1bigpfSksMSl9ZWxzZSBkb1J1bigpfWZ1bmN0aW9uIGRvUnVuKCl7ci5jYWxsZWRSdW49ITA7aWYoIXApeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe08udCgpfSgpO3Qocik7ci5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZihyLnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiByLnBvc3RSdW4mJihyLnBvc3RSdW49W3IucG9zdFJ1bl0pO2Zvcig7ci5wb3N0UnVuLmxlbmd0aDspYWRkT25Qb3N0UnVuKHIucG9zdFJ1bi5zaGlmdCgpKX1jYWxsUnVudGltZUNhbGxiYWNrcyh5KX0oKX19fSgpO3JldHVybiBpfTtjb25zdCBHYT1PcGVuSlBFRztjbGFzcyBKcHhFcnJvciBleHRlbmRzIGZhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpweEVycm9yIil9fWNsYXNzIEpweEltYWdle3N0YXRpYyNFPW51bGw7c3RhdGljI1A9bnVsbDtzdGF0aWMjTD1udWxsO3N0YXRpYyN2PSEwO3N0YXRpYyNqPSEwO3N0YXRpYyNGPW51bGw7c3RhdGljIHNldE9wdGlvbnMoe2hhbmRsZXI6ZSx1c2VXYXNtOnQsdXNlV29ya2VyRmV0Y2g6YSx3YXNtVXJsOnJ9KXt0aGlzLiN2PXQ7dGhpcy4jaj1hO3RoaXMuI0Y9cjthfHwodGhpcy4jUD1lKX1zdGF0aWMgYXN5bmMjXyhlKXtjb25zdCB0PWAke3RoaXMuI0Z9b3BlbmpwZWdfbm93YXNtX2ZhbGxiYWNrLmpzYDtsZXQgYT1udWxsO3RyeXthPShhd2FpdCBpbXBvcnQoCi8qd2VicGFja0lnbm9yZTogdHJ1ZSovCi8qQHZpdGUtaWdub3JlKi8KdCkpLmRlZmF1bHQoKX1jYXRjaChlKXt3YXJuKGBKcHhJbWFnZSNnZXRKc01vZHVsZTogJHtlfWApfWUoYSl9c3RhdGljIGFzeW5jI1UoZSx0LGEpe2NvbnN0IHI9Im9wZW5qcGVnLndhc20iO3RyeXt0aGlzLiNFfHwodGhpcy4jaj90aGlzLiNFPWF3YWl0IGZldGNoQmluYXJ5RGF0YShgJHt0aGlzLiNGfSR7cn1gKTp0aGlzLiNFPWF3YWl0IHRoaXMuI1Auc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHt0eXBlOiJ3YXNtRmFjdG9yeSIsZmlsZW5hbWU6cn0pKTtyZXR1cm4gYSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodGhpcy4jRSx0KSkuaW5zdGFuY2UpfWNhdGNoKHQpe3dhcm4oYEpweEltYWdlI2luc3RhbnRpYXRlV2FzbTogJHt0fWApO3RoaXMuI18oZSk7cmV0dXJuIG51bGx9ZmluYWxseXt0aGlzLiNQPW51bGx9fXN0YXRpYyBhc3luYyBkZWNvZGUoZSx7bnVtQ29tcG9uZW50czp0PTQsaXNJbmRleGVkQ29sb3JtYXA6YT0hMSxzbWFza0luRGF0YTpyPSExLHJlZHVjZVBvd2VyOmk9MH09e30pe2lmKCF0aGlzLiNMKXtjb25zdHtwcm9taXNlOmUscmVzb2x2ZTp0fT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKSxhPVtlXTt0aGlzLiN2P2EucHVzaChHYSh7d2FybixpbnN0YW50aWF0ZVdhc206dGhpcy4jVS5iaW5kKHRoaXMsdCl9KSk6dGhpcy4jXyh0KTt0aGlzLiNMPVByb21pc2UucmFjZShhKX1jb25zdCBuPWF3YWl0IHRoaXMuI0w7aWYoIW4pdGhyb3cgbmV3IEpweEVycm9yKCJPcGVuSlBFRyBmYWlsZWQgdG8gaW5pdGlhbGl6ZSIpO2xldCBzO3RyeXtjb25zdCBvPWUubGVuZ3RoO3M9bi5fbWFsbG9jKG8pO24ud3JpdGVBcnJheVRvTWVtb3J5KGUscyk7aWYobi5fanAyX2RlY29kZShzLG8sdD4wP3Q6MCwhIWEsISFyLGkpKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PW47aWYoZSl7ZGVsZXRlIG4uZXJyb3JNZXNzYWdlczt0aHJvdyBuZXcgSnB4RXJyb3IoZSl9dGhyb3cgbmV3IEpweEVycm9yKCJVbmtub3duIGVycm9yIil9Y29uc3R7aW1hZ2VEYXRhOmN9PW47bi5pbWFnZURhdGE9bnVsbDtyZXR1cm4gY31maW5hbGx5e3MmJm4uX2ZyZWUocyl9fXN0YXRpYyBjbGVhbnVwKCl7dGhpcy4jTD1udWxsfXN0YXRpYyBwYXJzZUltYWdlUHJvcGVydGllcyhlKXtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO3Q+PTA7KXtjb25zdCBhPXQ7dD1lLmdldEJ5dGUoKTtpZig2NTM2MT09PShhPDw4fHQpKXtlLnNraXAoNCk7Y29uc3QgdD1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAsaT1lLmdldEludDMyKCk+Pj4wO2Uuc2tpcCgxNik7cmV0dXJue3dpZHRoOnQtcixoZWlnaHQ6YS1pLGJpdHNQZXJDb21wb25lbnQ6OCxjb21wb25lbnRzQ291bnQ6ZS5nZXRVaW50MTYoKX19fXRocm93IG5ldyBKcHhFcnJvcigiTm8gc2l6ZSBtYXJrZXIgZm91bmQgaW4gSlBYIHN0cmVhbSIpfX1mdW5jdGlvbiBhZGRTdGF0ZShlLHQsYSxyLGkpe2xldCBuPWU7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aC0xO2U8YTtlKyspe2NvbnN0IGE9dFtlXTtuPW5bYV18fD1bXX1uW3QuYXQoLTEpXT17Y2hlY2tGbjphLGl0ZXJhdGVGbjpyLHByb2Nlc3NGbjppfX1jb25zdCBWYT1bXTthZGRTdGF0ZShWYSxbQmUsTmUsWXQsUmVdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBhW3RdPT09QmU7Y2FzZSAxOnJldHVybiBhW3RdPT09TmU7Y2FzZSAyOnJldHVybiBhW3RdPT09WXQ7Y2FzZSAzOnJldHVybiBhW3RdPT09UmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke3J9YCl9KSwoZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIsbj1pLTMscz1pLTIsbz1pLTEsYz1NYXRoLm1pbihNYXRoLmZsb29yKCh0LW4pLzQpLDIwMCk7aWYoYzwxMClyZXR1cm4gdC0odC1uKSU0O2xldCBsPTA7Y29uc3QgaD1bXTtsZXQgdT0wLGQ9MSxmPTE7Zm9yKGxldCBlPTA7ZTxjO2UrKyl7Y29uc3QgdD1yW3MrKGU8PDIpXSxhPXJbbysoZTw8MildWzBdO2lmKGQrYS53aWR0aD4xZTMpe2w9TWF0aC5tYXgobCxkKTtmKz11KzI7ZD0wO3U9MH1oLnB1c2goe3RyYW5zZm9ybTp0LHg6ZCx5OmYsdzphLndpZHRoLGg6YS5oZWlnaHR9KTtkKz1hLndpZHRoKzI7dT1NYXRoLm1heCh1LGEuaGVpZ2h0KX1jb25zdCBnPU1hdGgubWF4KGwsZCkrMSxwPWYrdSsxLG09bmV3IFVpbnQ4QXJyYXkoZypwKjQpLGI9Zzw8Mjtmb3IobGV0IGU9MDtlPGM7ZSsrKXtjb25zdCB0PXJbbysoZTw8MildWzBdLmRhdGEsYT1oW2VdLnc8PDI7bGV0IGk9MCxuPWhbZV0ueCtoW2VdLnkqZzw8MjttLnNldCh0LnN1YmFycmF5KDAsYSksbi1iKTtmb3IobGV0IHI9MCxzPWhbZV0uaDtyPHM7cisrKXttLnNldCh0LnN1YmFycmF5KGksaSthKSxuKTtpKz1hO24rPWJ9bS5zZXQodC5zdWJhcnJheShpLWEsaSksbik7Zm9yKDtuPj0wOyl7dFtuLTRdPXRbbl07dFtuLTNdPXRbbisxXTt0W24tMl09dFtuKzJdO3Rbbi0xXT10W24rM107dFtuK2FdPXRbbithLTRdO3RbbithKzFdPXRbbithLTNdO3RbbithKzJdPXRbbithLTJdO3RbbithKzNdPXRbbithLTFdO24tPWJ9fWNvbnN0IHk9e3dpZHRoOmcsaGVpZ2h0OnB9O2lmKGUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhnLHApO2UuZ2V0Q29udGV4dCgiMmQiKS5wdXRJbWFnZURhdGEobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkobS5idWZmZXIpLGcscCksMCwwKTt5LmJpdG1hcD1lLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpO3kuZGF0YT1udWxsfWVsc2V7eS5raW5kPXY7eS5kYXRhPW19YS5zcGxpY2Uobiw0KmMsWnQpO3Iuc3BsaWNlKG4sNCpjLFt5LGhdKTtyZXR1cm4gbisxfSkpO2FkZFN0YXRlKFZhLFtCZSxOZSxWdCxSZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBhW3RdPT09QmU7Y2FzZSAxOnJldHVybiBhW3RdPT09TmU7Y2FzZSAyOnJldHVybiBhW3RdPT09VnQ7Y2FzZSAzOnJldHVybiBhW3RdPT09UmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxyPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixuPWktMyxzPWktMixvPWktMTtsZXQgYz1NYXRoLmZsb29yKCh0LW4pLzQpO2lmKGM8MTApcmV0dXJuIHQtKHQtbiklNDtsZXQgbCxoLHU9ITE7Y29uc3QgZD1yW29dWzBdLGY9cltzXVswXSxnPXJbc11bMV0scD1yW3NdWzJdLG09cltzXVszXTtpZihnPT09cCl7dT0hMDtsPXMrNDtsZXQgZT1vKzQ7Zm9yKGxldCB0PTE7dDxjO3QrKyxsKz00LGUrPTQpe2g9cltsXTtpZihyW2VdWzBdIT09ZHx8aFswXSE9PWZ8fGhbMV0hPT1nfHxoWzJdIT09cHx8aFszXSE9PW0pe3Q8MTA/dT0hMTpjPXQ7YnJlYWt9fX1pZih1KXtjPU1hdGgubWluKGMsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipjKTtsPXM7Zm9yKGxldCB0PTA7dDxjO3QrKyxsKz00KXtoPXJbbF07ZVt0PDwxXT1oWzRdO2VbMSsodDw8MSldPWhbNV19YS5zcGxpY2Uobiw0KmMsZWEpO3Iuc3BsaWNlKG4sNCpjLFtkLGYsZyxwLG0sZV0pfWVsc2V7Yz1NYXRoLm1pbihjLDEwMCk7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MDt0PGM7dCsrKXtoPXJbcysodDw8MildO2NvbnN0IGE9cltvKyh0PDwyKV1bMF07ZS5wdXNoKHtkYXRhOmEuZGF0YSx3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodCxpbnRlcnBvbGF0ZTphLmludGVycG9sYXRlLGNvdW50OmEuY291bnQsdHJhbnNmb3JtOmh9KX1hLnNwbGljZShuLDQqYyxLdCk7ci5zcGxpY2Uobiw0KmMsW2VdKX1yZXR1cm4gbisxfSkpO2FkZFN0YXRlKFZhLFtCZSxOZSxKdCxSZV0sKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5hcmdzQXJyYXksYT1lLmlDdXJyLTI7cmV0dXJuIDA9PT10W2FdWzFdJiYwPT09dFthXVsyXX0pLChmdW5jdGlvbiBpdGVyYXRlSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09QmU7Y2FzZSAxOmlmKGFbdF0hPT1OZSlyZXR1cm4hMTtjb25zdCBpPWUuaUN1cnItMixuPXJbaV1bMF0scz1yW2ldWzNdO3JldHVybiByW3RdWzBdPT09biYmMD09PXJbdF1bMV0mJjA9PT1yW3RdWzJdJiZyW3RdWzNdPT09cztjYXNlIDI6aWYoYVt0XSE9PUp0KXJldHVybiExO2NvbnN0IG89cltlLmlDdXJyLTFdWzBdO3JldHVybiByW3RdWzBdPT09bztjYXNlIDM6cmV0dXJuIGFbdF09PT1SZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7aX1gKX0pLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9ZS5hcmdzQXJyYXksaT1lLmlDdXJyLG49aS0zLHM9aS0yLG89cltpLTFdWzBdLGM9cltzXVswXSxsPXJbc11bM10saD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LW4pLzQpLDFlMyk7aWYoaDwzKXJldHVybiB0LSh0LW4pJTQ7Y29uc3QgdT1uZXcgRmxvYXQzMkFycmF5KDIqaCk7bGV0IGQ9cztmb3IobGV0IGU9MDtlPGg7ZSsrLGQrPTQpe2NvbnN0IHQ9cltkXTt1W2U8PDFdPXRbNF07dVsxKyhlPDwxKV09dFs1XX1jb25zdCBmPVtvLGMsbCx1XTthLnNwbGljZShuLDQqaCxRdCk7ci5zcGxpY2Uobiw0KmgsZik7cmV0dXJuIG4rMX0pKTthZGRTdGF0ZShWYSxbUWUsbnQsaHQsZHQsZXRdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVTaG93VGV4dEdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTQpKSU1O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1RZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1udDtjYXNlIDI6cmV0dXJuIGFbdF09PT1odDtjYXNlIDM6aWYoYVt0XSE9PWR0KXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0zLG49cltpXVswXSxzPXJbaV1bMV07cmV0dXJuIHJbdF1bMF09PT1uJiZyW3RdWzFdPT09cztjYXNlIDQ6cmV0dXJuIGFbdF09PT1ldH10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVTaG93VGV4dEdyb3VwIC0gaW52YWxpZCBwb3M6ICR7aX1gKX0pLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9ZS5hcmdzQXJyYXksaT1lLmlDdXJyLG49aS00LHM9aS0zLG89aS0yLGM9aS0xLGw9aSxoPXJbc11bMF0sdT1yW3NdWzFdO2xldCBkPU1hdGgubWluKE1hdGguZmxvb3IoKHQtbikvNSksMWUzKTtpZihkPDMpcmV0dXJuIHQtKHQtbiklNTtsZXQgZj1uO2lmKG4+PTQmJmFbbi00XT09PWFbc10mJmFbbi0zXT09PWFbb10mJmFbbi0yXT09PWFbY10mJmFbbi0xXT09PWFbbF0mJnJbbi00XVswXT09PWgmJnJbbi00XVsxXT09PXUpe2QrKztmLT01fWxldCBnPWYrNDtmb3IobGV0IGU9MTtlPGQ7ZSsrKXthLnNwbGljZShnLDMpO3Iuc3BsaWNlKGcsMyk7Zys9Mn1yZXR1cm4gZysxfSkpO2FkZFN0YXRlKFZhLFtCZSxOZSxhYSxSZV0sKGU9Pntjb25zdCB0PWUuYXJnc0FycmF5LGE9dFtlLmlDdXJyLTFdWzBdO2lmKGEhPT1xZSYmYSE9PUhlJiZhIT09JGUmJmEhPT1HZSYmYSE9PVZlJiZhIT09S2UpcmV0dXJuITA7Y29uc3Qgcj10W2UuaUN1cnItMl07cmV0dXJuIDE9PT1yWzBdJiYwPT09clsxXSYmMD09PXJbMl0mJjE9PT1yWzNdfSksKCgpPT4hMSksKChlLHQpPT57Y29uc3R7Zm5BcnJheTphLGFyZ3NBcnJheTpyfT1lLGk9ZS5pQ3VycixuPWktMyxzPWktMixvPXJbaS0xXSxjPXJbc10sWyxbbF0saF09bztpZihoKXtVdGlsLnNjYWxlTWluTWF4KGMsaCk7Zm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7KXN3aXRjaChsW2UrK10pe2Nhc2Ugc2E6Y2FzZSBvYTpVdGlsLmFwcGx5VHJhbnNmb3JtKGwsYyxlKTtlKz0yO2JyZWFrO2Nhc2UgY2E6VXRpbC5hcHBseVRyYW5zZm9ybVRvQmV6aWVyKGwsYyxlKTtlKz02fX1hLnNwbGljZShuLDQsYWEpO3Iuc3BsaWNlKG4sNCxvKTtyZXR1cm4gbisxfSkpO2NsYXNzIE51bGxPcHRpbWl6ZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5xdWV1ZT1lfV9vcHRpbWl6ZSgpe31wdXNoKGUsdCl7dGhpcy5xdWV1ZS5mbkFycmF5LnB1c2goZSk7dGhpcy5xdWV1ZS5hcmdzQXJyYXkucHVzaCh0KTt0aGlzLl9vcHRpbWl6ZSgpfWZsdXNoKCl7fXJlc2V0KCl7fX1jbGFzcyBRdWV1ZU9wdGltaXplciBleHRlbmRzIE51bGxPcHRpbWl6ZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5zdGF0ZT1udWxsO3RoaXMuY29udGV4dD17aUN1cnI6MCxmbkFycmF5OmUuZm5BcnJheSxhcmdzQXJyYXk6ZS5hcmdzQXJyYXksaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6T3BlcmF0b3JMaXN0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfTt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9X29wdGltaXplKCl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXk7bGV0IHQ9dGhpcy5sYXN0UHJvY2Vzc2VkLGE9ZS5sZW5ndGgscj10aGlzLnN0YXRlLGk9dGhpcy5tYXRjaDtpZighciYmIWkmJnQrMT09PWEmJiFWYVtlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPWE7cmV0dXJufWNvbnN0IG49dGhpcy5jb250ZXh0O2Zvcig7dDxhOyl7aWYoaSl7aWYoKDAsaS5pdGVyYXRlRm4pKG4sdCkpe3QrKztjb250aW51ZX10PSgwLGkucHJvY2Vzc0ZuKShuLHQrMSk7YT1lLmxlbmd0aDtpPW51bGw7cj1udWxsO2lmKHQ+PWEpYnJlYWt9cj0ocnx8VmEpW2VbdF1dO2lmKHImJiFBcnJheS5pc0FycmF5KHIpKXtuLmlDdXJyPXQ7dCsrO2lmKCFyLmNoZWNrRm58fCgwLHIuY2hlY2tGbikobikpe2k9cjtyPW51bGx9ZWxzZSByPW51bGx9ZWxzZSB0Kyt9dGhpcy5zdGF0ZT1yO3RoaXMubWF0Y2g9aTt0aGlzLmxhc3RQcm9jZXNzZWQ9dH1mbHVzaCgpe2Zvcig7dGhpcy5tYXRjaDspe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5Lmxlbmd0aDt0aGlzLmxhc3RQcm9jZXNzZWQ9KDAsdGhpcy5tYXRjaC5wcm9jZXNzRm4pKHRoaXMuY29udGV4dCxlKTt0aGlzLm1hdGNoPW51bGw7dGhpcy5zdGF0ZT1udWxsO3RoaXMuX29wdGltaXplKCl9fXJlc2V0KCl7dGhpcy5zdGF0ZT1udWxsO3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH19Y2xhc3MgT3BlcmF0b3JMaXN0e3N0YXRpYyBDSFVOS19TSVpFPTFlMztzdGF0aWMgQ0hVTktfU0laRV9BQk9VVD10aGlzLkNIVU5LX1NJWkUtNTtzdGF0aWMgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ITE7Y29uc3RydWN0b3IoZT0wLHQpe3RoaXMuX3N0cmVhbVNpbms9dDt0aGlzLmZuQXJyYXk9W107dGhpcy5hcmdzQXJyYXk9W107dGhpcy5vcHRpbWl6ZXI9IXR8fGUmZD9uZXcgTnVsbE9wdGltaXplcih0aGlzKTpuZXcgUXVldWVPcHRpbWl6ZXIodGhpcyk7dGhpcy5kZXBlbmRlbmNpZXM9bmV3IFNldDt0aGlzLl90b3RhbExlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5fcmVzb2x2ZWQ9dD9udWxsOlByb21pc2UucmVzb2x2ZSgpfXN0YXRpYyBzZXRPcHRpb25zKHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDplfSl7dGhpcy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5hcmdzQXJyYXkubGVuZ3RofWdldCByZWFkeSgpe3JldHVybiB0aGlzLl9yZXNvbHZlZHx8dGhpcy5fc3RyZWFtU2luay5yZWFkeX1nZXQgdG90YWxMZW5ndGgoKXtyZXR1cm4gdGhpcy5fdG90YWxMZW5ndGgrdGhpcy5sZW5ndGh9YWRkT3AoZSx0KXt0aGlzLm9wdGltaXplci5wdXNoKGUsdCk7dGhpcy53ZWlnaHQrKzt0aGlzLl9zdHJlYW1TaW5rJiYodGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFfHx0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkVfQUJPVVQmJihlPT09UmV8fGU9PT1ldCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEscj0hMSl7aWYocil7dGhpcy5hZGRPcChCZSk7dGhpcy5hZGRPcChEZSxbW1siU01hc2siLCExXV1dKX12b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKGp0LFsiT0MiLGFdKTt0aGlzLmFkZE9wKGUsdCk7dm9pZCAwIT09YSYmdGhpcy5hZGRPcChfdCxbXSk7ciYmdGhpcy5hZGRPcChSZSl9YWRkRGVwZW5kZW5jeShlKXtpZighdGhpcy5kZXBlbmRlbmNpZXMuaGFzKGUpKXt0aGlzLmRlcGVuZGVuY2llcy5hZGQoZSk7dGhpcy5hZGRPcChBZSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2Ugd2FybignYWRkT3BMaXN0IC0gaWdub3JpbmcgaW52YWxpZCAib3BMaXN0IiBwYXJhbWV0ZXIuJyl9Z2V0SVIoKXtyZXR1cm57Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxlbmd0aDp0aGlzLmxlbmd0aH19Z2V0IF90cmFuc2ZlcnMoKXtjb25zdCBlPVtdLHtmbkFycmF5OnQsYXJnc0FycmF5OmEsbGVuZ3RoOnJ9PXRoaXM7Zm9yKGxldCBpPTA7aTxyO2krKylzd2l0Y2godFtpXSl7Y2FzZSBZdDpjYXNlIFp0OmNhc2UgVnQ6e2NvbnN0e2JpdG1hcDp0LGRhdGE6cn09YVtpXVswXTsodHx8cj8uYnVmZmVyKSYmZS5wdXNoKHR8fHIuYnVmZmVyKTticmVha31jYXNlIGFhOntjb25zdFssW3RdLHJdPWFbaV07dCYmZS5wdXNoKHQuYnVmZmVyLHIuYnVmZmVyKTticmVha31jYXNlIHF0OmNvbnN0W3Qscl09YVtpXTt0JiZlLnB1c2godC5idWZmZXIpO3ImJmUucHVzaChyLmJ1ZmZlcik7YnJlYWs7Y2FzZSBodDplLnB1c2goYVtpXVswXS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IGE9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPWE7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6YX0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19ZnVuY3Rpb24gaGV4VG9JbnQoZSx0KXtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8PXQ7cisrKWE9YTw8OHxlW3JdO3JldHVybiBhPj4+MH1mdW5jdGlvbiBoZXhUb1N0cihlLHQpe3JldHVybiAxPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSk6Mz09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0sZVsyXSxlWzNdKTpTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBpPWE7aT49MDtpLS0pe3IrPWVbaV0rdFtpXTtlW2ldPTI1NSZyO3I+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgYT0xO2ZvcihsZXQgcj10O3I+PTAmJmE+MDtyLS0pe2ErPWVbcl07ZVtyXT0yNTUmYTthPj49OH19Y29uc3QgS2E9MTY7Y2xhc3MgQmluYXJ5Q01hcFN0cmVhbXtjb25zdHJ1Y3RvcihlKXt0aGlzLmJ1ZmZlcj1lO3RoaXMucG9zPTA7dGhpcy5lbmQ9ZS5sZW5ndGg7dGhpcy50bXBCdWY9bmV3IFVpbnQ4QXJyYXkoMTkpfXJlYWRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX1yZWFkTnVtYmVyKCl7bGV0IGUsdD0wO2Rve2NvbnN0IGE9dGhpcy5yZWFkQnl0ZSgpO2lmKGE8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7ZT0hKDEyOCZhKTt0PXQ8PDd8MTI3JmF9d2hpbGUoIWUpO3JldHVybiB0fXJlYWRTaWduZWQoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpO3JldHVybiAxJmU/fihlPj4+MSk6ZT4+PjF9cmVhZEhleChlLHQpe2Uuc2V0KHRoaXMuYnVmZmVyLnN1YmFycmF5KHRoaXMucG9zLHRoaXMucG9zK3QrMSkpO3RoaXMucG9zKz10KzF9cmVhZEhleE51bWJlcihlLHQpe2xldCBhO2NvbnN0IHI9dGhpcy50bXBCdWY7bGV0IGk9MDtkb3tjb25zdCBlPXRoaXMucmVhZEJ5dGUoKTtpZihlPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7cltpKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgbj10LHM9MCxvPTA7Zm9yKDtuPj0wOyl7Zm9yKDtvPDgmJnIubGVuZ3RoPjA7KXtzfD1yWy0taV08PG87bys9N31lW25dPTI1NSZzO24tLTtzPj49ODtvLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IHI9MDtmb3IobGV0IGk9MDtpPD10O2krKyl7cj0oMSZyKTw8OHxlW2ldO2VbaV09cj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKSx0PW5ldyBBcnJheShlKTtmb3IobGV0IGE9MDthPGU7YSsrKXRbYV09dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoLi4udCl9fWNsYXNzIEJpbmFyeUNNYXBSZWFkZXJ7YXN5bmMgcHJvY2VzcyhlLHQsYSl7Y29uc3Qgcj1uZXcgQmluYXJ5Q01hcFN0cmVhbShlKSxpPXIucmVhZEJ5dGUoKTt0LnZlcnRpY2FsPSEhKDEmaSk7bGV0IG49bnVsbDtjb25zdCBzPW5ldyBVaW50OEFycmF5KEthKSxvPW5ldyBVaW50OEFycmF5KEthKSxjPW5ldyBVaW50OEFycmF5KEthKSxsPW5ldyBVaW50OEFycmF5KEthKSxoPW5ldyBVaW50OEFycmF5KEthKTtsZXQgdSxkO2Zvcig7KGQ9ci5yZWFkQnl0ZSgpKT49MDspe2NvbnN0IGU9ZD4+NTtpZig3PT09ZSl7c3dpdGNoKDMxJmQpe2Nhc2UgMDpyLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6bj1yLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCBhPSEhKDE2JmQpLGk9MTUmZDtpZihpKzE+S2EpdGhyb3cgbmV3IEVycm9yKCJCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3M6IEludmFsaWQgZGF0YVNpemUuIik7Y29uc3QgZj0xLGc9ci5yZWFkTnVtYmVyKCk7c3dpdGNoKGUpe2Nhc2UgMDpyLnJlYWRIZXgocyxpKTtyLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxzLGkpO3QuYWRkQ29kZXNwYWNlUmFuZ2UoaSsxLGhleFRvSW50KHMsaSksaGV4VG9JbnQobyxpKSk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KG8saSk7ci5yZWFkSGV4TnVtYmVyKHMsaSk7YWRkSGV4KHMsbyxpKTtyLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxzLGkpO3QuYWRkQ29kZXNwYWNlUmFuZ2UoaSsxLGhleFRvSW50KHMsaSksaGV4VG9JbnQobyxpKSl9YnJlYWs7Y2FzZSAxOnIucmVhZEhleChzLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7ci5yZWFkTnVtYmVyKCk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KG8saSk7ci5yZWFkSGV4TnVtYmVyKHMsaSk7YWRkSGV4KHMsbyxpKTtyLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxzLGkpO3IucmVhZE51bWJlcigpfWJyZWFrO2Nhc2UgMjpyLnJlYWRIZXgoYyxpKTt1PXIucmVhZE51bWJlcigpO3QubWFwT25lKGhleFRvSW50KGMsaSksdSk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KGMsaSk7aWYoIWEpe3IucmVhZEhleE51bWJlcihoLGkpO2FkZEhleChjLGgsaSl9dT1yLnJlYWRTaWduZWQoKSsodSsxKTt0Lm1hcE9uZShoZXhUb0ludChjLGkpLHUpfWJyZWFrO2Nhc2UgMzpyLnJlYWRIZXgocyxpKTtyLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxzLGkpO3U9ci5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChzLGkpLGhleFRvSW50KG8saSksdSk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KG8saSk7aWYoYSlzLnNldChvKTtlbHNle3IucmVhZEhleE51bWJlcihzLGkpO2FkZEhleChzLG8saSl9ci5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8scyxpKTt1PXIucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQocyxpKSxoZXhUb0ludChvLGkpLHUpfWJyZWFrO2Nhc2UgNDpyLnJlYWRIZXgoYyxmKTtyLnJlYWRIZXgobCxpKTt0Lm1hcE9uZShoZXhUb0ludChjLGYpLGhleFRvU3RyKGwsaSkpO2ZvcihsZXQgZT0xO2U8ZztlKyspe2luY0hleChjLGYpO2lmKCFhKXtyLnJlYWRIZXhOdW1iZXIoaCxmKTthZGRIZXgoYyxoLGYpfWluY0hleChsLGkpO3IucmVhZEhleFNpZ25lZChoLGkpO2FkZEhleChsLGgsaSk7dC5tYXBPbmUoaGV4VG9JbnQoYyxmKSxoZXhUb1N0cihsLGkpKX1icmVhaztjYXNlIDU6ci5yZWFkSGV4KHMsZik7ci5yZWFkSGV4TnVtYmVyKG8sZik7YWRkSGV4KG8scyxmKTtyLnJlYWRIZXgobCxpKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQocyxmKSxoZXhUb0ludChvLGYpLGhleFRvU3RyKGwsaSkpO2ZvcihsZXQgZT0xO2U8ZztlKyspe2luY0hleChvLGYpO2lmKGEpcy5zZXQobyk7ZWxzZXtyLnJlYWRIZXhOdW1iZXIocyxmKTthZGRIZXgocyxvLGYpfXIucmVhZEhleE51bWJlcihvLGYpO2FkZEhleChvLHMsZik7ci5yZWFkSGV4KGwsaSk7dC5tYXBCZlJhbmdlKGhleFRvSW50KHMsZiksaGV4VG9JbnQobyxmKSxoZXhUb1N0cihsLGkpKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzIC0gdW5rbm93biB0eXBlOiAke2V9YCl9fXJldHVybiBuP2Eobik6dH19Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uOCk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuaW5wdXQ9bmV3IFVpbnQ4QXJyYXkoNSl9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cjtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZSh0KTspdD1lLmdldEJ5dGUoKTtpZigtMT09PXR8fDEyNj09PXQpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoO2xldCByLGk7aWYoMTIyPT09dCl7cj10aGlzLmVuc3VyZUJ1ZmZlcihhKzQpO2ZvcihpPTA7aTw0OysraSlyW2EraV09MDt0aGlzLmJ1ZmZlckxlbmd0aCs9NH1lbHNle2NvbnN0IG49dGhpcy5pbnB1dDtuWzBdPXQ7Zm9yKGk9MTtpPDU7KytpKXt0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO25baV09dDtpZigtMT09PXR8fDEyNj09PXQpYnJlYWt9cj10aGlzLmVuc3VyZUJ1ZmZlcihhK2ktMSk7dGhpcy5idWZmZXJMZW5ndGgrPWktMTtpZihpPDUpe2Zvcig7aTw1OysraSluW2ldPTExNzt0aGlzLmVvZj0hMH1sZXQgcz0wO2ZvcihpPTA7aTw1OysraSlzPTg1KnMrKG5baV0tMzMpO2ZvcihpPTM7aT49MDstLWkpe3JbYStpXT0yNTUmcztzPj49OH19fX1jbGFzcyBBc2NpaUhleFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLGE9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IHI9dGhpcy5idWZmZXJMZW5ndGgsaT10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKGk8MClpPWU7ZWxzZXthW3IrK109aTw8NHxlO2k9LTF9fWlmKGk+PTAmJnRoaXMuZW9mKXthW3IrK109aTw8NDtpPS0xfXRoaXMuZmlyc3REaWdpdD1pO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9fWNvbnN0IEphPS0xLFlhPVtbLTEsLTFdLFstMSwtMV0sWzcsOF0sWzcsN10sWzYsNl0sWzYsNl0sWzYsNV0sWzYsNV0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl1dLFphPVtbLTEsLTFdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNTYwXV0sUWE9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzgsMjldLFs4LDI5XSxbOCwzMF0sWzgsMzBdLFs4LDQ1XSxbOCw0NV0sWzgsNDZdLFs4LDQ2XSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjNdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs4LDQ3XSxbOCw0N10sWzgsNDhdLFs4LDQ4XSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbOCwzM10sWzgsMzNdLFs4LDM0XSxbOCwzNF0sWzgsMzVdLFs4LDM1XSxbOCwzNl0sWzgsMzZdLFs4LDM3XSxbOCwzN10sWzgsMzhdLFs4LDM4XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzgsMzFdLFs4LDMxXSxbOCwzMl0sWzgsMzJdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzgsNTNdLFs4LDUzXSxbOCw1NF0sWzgsNTRdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbOCwzOV0sWzgsMzldLFs4LDQwXSxbOCw0MF0sWzgsNDFdLFs4LDQxXSxbOCw0Ml0sWzgsNDJdLFs4LDQzXSxbOCw0M10sWzgsNDRdLFs4LDQ0XSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs4LDYxXSxbOCw2MV0sWzgsNjJdLFs4LDYyXSxbOCw2M10sWzgsNjNdLFs4LDBdLFs4LDBdLFs4LDMyMF0sWzgsMzIwXSxbOCwzODRdLFs4LDM4NF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNywyN10sWzcsMjddLFs3LDI3XSxbNywyN10sWzgsNTldLFs4LDU5XSxbOCw2MF0sWzgsNjBdLFs5LDE0NzJdLFs5LDE1MzZdLFs5LDE2MDBdLFs5LDE3MjhdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzgsNDldLFs4LDQ5XSxbOCw1MF0sWzgsNTBdLFs4LDUxXSxbOCw1MV0sWzgsNTJdLFs4LDUyXSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzgsNTVdLFs4LDU1XSxbOCw1Nl0sWzgsNTZdLFs4LDU3XSxbOCw1N10sWzgsNThdLFs4LDU4XSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzgsNDQ4XSxbOCw0NDhdLFs4LDUxMl0sWzgsNTEyXSxbOSw3MDRdLFs5LDc2OF0sWzgsNjQwXSxbOCw2NDBdLFs4LDU3Nl0sWzgsNTc2XSxbOSw4MzJdLFs5LDg5Nl0sWzksOTYwXSxbOSwxMDI0XSxbOSwxMDg4XSxbOSwxMTUyXSxbOSwxMjE2XSxbOSwxMjgwXSxbOSwxMzQ0XSxbOSwxNDA4XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN11dLGVyPVtbLTEsLTFdLFstMSwtMV0sWzEyLC0yXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjQ5Nl0sWzEyLDI1NjBdLFsxMiwyNTYwXSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEyLDUyXSxbMTIsNTJdLFsxMyw2NDBdLFsxMyw3MDRdLFsxMyw3NjhdLFsxMyw4MzJdLFsxMiw1NV0sWzEyLDU1XSxbMTIsNTZdLFsxMiw1Nl0sWzEzLDEyODBdLFsxMywxMzQ0XSxbMTMsMTQwOF0sWzEzLDE0NzJdLFsxMiw1OV0sWzEyLDU5XSxbMTIsNjBdLFsxMiw2MF0sWzEzLDE1MzZdLFsxMywxNjAwXSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzEzLDE2NjRdLFsxMywxNzI4XSxbMTIsMzIwXSxbMTIsMzIwXSxbMTIsMzg0XSxbMTIsMzg0XSxbMTIsNDQ4XSxbMTIsNDQ4XSxbMTMsNTEyXSxbMTMsNTc2XSxbMTIsNTNdLFsxMiw1M10sWzEyLDU0XSxbMTIsNTRdLFsxMyw4OTZdLFsxMyw5NjBdLFsxMywxMDI0XSxbMTMsMTA4OF0sWzEzLDExNTJdLFsxMywxMjE2XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF1dLHRyPVtbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzExLDIzXSxbMTEsMjNdLFsxMiw1MF0sWzEyLDUxXSxbMTIsNDRdLFsxMiw0NV0sWzEyLDQ2XSxbMTIsNDddLFsxMiw1N10sWzEyLDU4XSxbMTIsNjFdLFsxMiwyNTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE3XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTIsNDhdLFsxMiw0OV0sWzEyLDYyXSxbMTIsNjNdLFsxMiwzMF0sWzEyLDMxXSxbMTIsMzJdLFsxMiwzM10sWzEyLDQwXSxbMTIsNDFdLFsxMSwyMl0sWzExLDIyXSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzEyLDEyOF0sWzEyLDE5Ml0sWzEyLDI2XSxbMTIsMjddLFsxMiwyOF0sWzEyLDI5XSxbMTEsMTldLFsxMSwxOV0sWzExLDIwXSxbMTEsMjBdLFsxMiwzNF0sWzEyLDM1XSxbMTIsMzZdLFsxMiwzN10sWzEyLDM4XSxbMTIsMzldLFsxMSwyMV0sWzExLDIxXSxbMTIsNDJdLFsxMiw0M10sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzEwLDBdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl1dLGFyPVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs2LDldLFs2LDhdLFs1LDddLFs1LDddLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdXTtjbGFzcyBDQ0lUVEZheERlY29kZXJ7Y29uc3RydWN0b3IoZSx0PXt9KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZT8ubmV4dCl0aHJvdyBuZXcgRXJyb3IoJ0NDSVRURmF4RGVjb2RlciAtIGludmFsaWQgInNvdXJjZSIgcGFyYW1ldGVyLicpO3RoaXMuc291cmNlPWU7dGhpcy5lb2Y9ITE7dGhpcy5lbmNvZGluZz10Lkt8fDA7dGhpcy5lb2xpbmU9dC5FbmRPZkxpbmV8fCExO3RoaXMuYnl0ZUFsaWduPXQuRW5jb2RlZEJ5dGVBbGlnbnx8ITE7dGhpcy5jb2x1bW5zPXQuQ29sdW1uc3x8MTcyODt0aGlzLnJvd3M9dC5Sb3dzfHwwO3RoaXMuZW9ibG9jaz10LkVuZE9mQmxvY2s/PyEwO3RoaXMuYmxhY2s9dC5CbGFja0lzMXx8ITE7dGhpcy5jb2RpbmdMaW5lPW5ldyBVaW50MzJBcnJheSh0aGlzLmNvbHVtbnMrMSk7dGhpcy5yZWZMaW5lPW5ldyBVaW50MzJBcnJheSh0aGlzLmNvbHVtbnMrMik7dGhpcy5jb2RpbmdMaW5lWzBdPXRoaXMuY29sdW1uczt0aGlzLmNvZGluZ1Bvcz0wO3RoaXMucm93PTA7dGhpcy5uZXh0TGluZTJEPXRoaXMuZW5jb2Rpbmc8MDt0aGlzLmlucHV0Qml0cz0wO3RoaXMuaW5wdXRCdWY9MDt0aGlzLm91dHB1dEJpdHM9MDt0aGlzLnJvd3NEb25lPSExO2xldCBhO2Zvcig7MD09PShhPXRoaXMuX2xvb2tCaXRzKDEyKSk7KXRoaXMuX2VhdEJpdHMoMSk7MT09PWEmJnRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5uZXh0TGluZTJEPSF0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfX1yZWFkTmV4dENoYXIoKXtpZih0aGlzLmVvZilyZXR1cm4tMTtjb25zdCBlPXRoaXMucmVmTGluZSx0PXRoaXMuY29kaW5nTGluZSxhPXRoaXMuY29sdW1ucztsZXQgcixpLG4scyxvO2lmKDA9PT10aGlzLm91dHB1dEJpdHMpe3RoaXMucm93c0RvbmUmJih0aGlzLmVvZj0hMCk7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5lcnI9ITE7bGV0IG4sbyxjO2lmKHRoaXMubmV4dExpbmUyRCl7Zm9yKHM9MDt0W3NdPGE7KytzKWVbc109dFtzXTtlW3MrK109YTtlW3NdPWE7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cj0wO2k9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGE7KXtuPXRoaXMuX2dldFR3b0RpbUNvZGUoKTtzd2l0Y2gobil7Y2FzZSAwOnRoaXMuX2FkZFBpeGVscyhlW3IrMV0saSk7ZVtyKzFdPGEmJihyKz0yKTticmVhaztjYXNlIDE6bj1vPTA7aWYoaSl7ZG97bis9Yz10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShjPj02NCk7ZG97bys9Yz10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShjPj02NCl9ZWxzZXtkb3tuKz1jPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGM+PTY0KTtkb3tvKz1jPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGM+PTY0KX10aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rbixpKTt0W3RoaXMuY29kaW5nUG9zXTxhJiZ0aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rbywxXmkpO2Zvcig7ZVtyXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbcl08YTspcis9MjticmVhaztjYXNlIDc6dGhpcy5fYWRkUGl4ZWxzKGVbcl0rMyxpKTtpXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSA1OnRoaXMuX2FkZFBpeGVscyhlW3JdKzIsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK3I7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yfWJyZWFrO2Nhc2UgMzp0aGlzLl9hZGRQaXhlbHMoZVtyXSsxLGkpO2lePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytyO2Zvcig7ZVtyXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbcl08YTspcis9Mn1icmVhaztjYXNlIDI6dGhpcy5fYWRkUGl4ZWxzKGVbcl0saSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK3I7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yfWJyZWFrO2Nhc2UgODp0aGlzLl9hZGRQaXhlbHNOZWcoZVtyXS0zLGkpO2lePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7cj4wPy0tcjorK3I7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yfWJyZWFrO2Nhc2UgNjp0aGlzLl9hZGRQaXhlbHNOZWcoZVtyXS0yLGkpO2lePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7cj4wPy0tcjorK3I7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yfWJyZWFrO2Nhc2UgNDp0aGlzLl9hZGRQaXhlbHNOZWcoZVtyXS0xLGkpO2lePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7cj4wPy0tcjorK3I7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yfWJyZWFrO2Nhc2UgSmE6dGhpcy5fYWRkUGl4ZWxzKGEsMCk7dGhpcy5lb2Y9ITA7YnJlYWs7ZGVmYXVsdDppbmZvKCJiYWQgMmQgY29kZSIpO3RoaXMuX2FkZFBpeGVscyhhLDApO3RoaXMuZXJyPSEwfX19ZWxzZXt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtpPTA7Zm9yKDt0W3RoaXMuY29kaW5nUG9zXTxhOyl7bj0wO2lmKGkpZG97bis9Yz10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShjPj02NCk7ZWxzZSBkb3tuKz1jPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGM+PTY0KTt0aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rbixpKTtpXj0xfX1sZXQgbD0hMTt0aGlzLmJ5dGVBbGlnbiYmKHRoaXMuaW5wdXRCaXRzJj0tOCk7aWYodGhpcy5lb2Jsb2NrfHx0aGlzLnJvdyE9PXRoaXMucm93cy0xKXtuPXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0aGlzLmVvbGluZSlmb3IoO24hPT1KYSYmMSE9PW47KXt0aGlzLl9lYXRCaXRzKDEpO249dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09bjspe3RoaXMuX2VhdEJpdHMoMSk7bj10aGlzLl9sb29rQml0cygxMil9aWYoMT09PW4pe3RoaXMuX2VhdEJpdHMoMTIpO2w9ITB9ZWxzZSBuPT09SmEmJih0aGlzLmVvZj0hMCl9ZWxzZSB0aGlzLnJvd3NEb25lPSEwO2lmKCF0aGlzLmVvZiYmdGhpcy5lbmNvZGluZz4wJiYhdGhpcy5yb3dzRG9uZSl7dGhpcy5uZXh0TGluZTJEPSF0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfWlmKHRoaXMuZW9ibG9jayYmbCYmdGhpcy5ieXRlQWxpZ24pe249dGhpcy5fbG9va0JpdHMoMTIpO2lmKDE9PT1uKXt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lbmNvZGluZz49MClmb3Iocz0wO3M8NDsrK3Mpe249dGhpcy5fbG9va0JpdHMoMTIpOzEhPT1uJiZpbmZvKCJiYWQgcnRjIGNvZGU6ICIrbik7dGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfX10aGlzLmVvZj0hMH19ZWxzZSBpZih0aGlzLmVyciYmdGhpcy5lb2xpbmUpe2Zvcig7Oyl7bj10aGlzLl9sb29rQml0cygxMyk7aWYobj09PUphKXt0aGlzLmVvZj0hMDtyZXR1cm4tMX1pZihuPj4xPT0xKWJyZWFrO3RoaXMuX2VhdEJpdHMoMSl9dGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLl9lYXRCaXRzKDEpO3RoaXMubmV4dExpbmUyRD0hKDEmbil9fXRoaXMub3V0cHV0Qml0cz10WzBdPjA/dFt0aGlzLmNvZGluZ1Bvcz0wXTp0W3RoaXMuY29kaW5nUG9zPTFdO3RoaXMucm93Kyt9aWYodGhpcy5vdXRwdXRCaXRzPj04KXtvPTEmdGhpcy5jb2RpbmdQb3M/MDoyNTU7dGhpcy5vdXRwdXRCaXRzLT04O2lmKDA9PT10aGlzLm91dHB1dEJpdHMmJnRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19fWVsc2V7bj04O289MDtkb3tpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMub3V0cHV0Qml0cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ0ludmFsaWQgL0NDSVRURmF4RGVjb2RlIGRhdGEsICJvdXRwdXRCaXRzIiBtdXN0IGJlIGEgbnVtYmVyLicpO2lmKHRoaXMub3V0cHV0Qml0cz5uKXtvPDw9bjsxJnRoaXMuY29kaW5nUG9zfHwob3w9MjU1Pj44LW4pO3RoaXMub3V0cHV0Qml0cy09bjtuPTB9ZWxzZXtvPDw9dGhpcy5vdXRwdXRCaXRzOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+PjgtdGhpcy5vdXRwdXRCaXRzKTtuLT10aGlzLm91dHB1dEJpdHM7dGhpcy5vdXRwdXRCaXRzPTA7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX1lbHNlIGlmKG4+MCl7bzw8PW47bj0wfX19d2hpbGUobil9dGhpcy5ibGFjayYmKG9ePTI1NSk7cmV0dXJuIG99X2FkZFBpeGVscyhlLHQpe2NvbnN0IGE9dGhpcy5jb2RpbmdMaW5lO2xldCByPXRoaXMuY29kaW5nUG9zO2lmKGU+YVtyXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJnJedCYmKytyO2Fbcl09ZX10aGlzLmNvZGluZ1Bvcz1yfV9hZGRQaXhlbHNOZWcoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgcj10aGlzLmNvZGluZ1BvcztpZihlPmFbcl0pe2lmKGU+dGhpcy5jb2x1bW5zKXtpbmZvKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZyXnQmJisrcjthW3JdPWV9ZWxzZSBpZihlPGFbcl0pe2lmKGU8MCl7aW5mbygiaW52YWxpZCBjb2RlIik7dGhpcy5lcnI9ITA7ZT0wfWZvcig7cj4wJiZlPGFbci0xXTspLS1yO2Fbcl09ZX10aGlzLmNvZGluZ1Bvcz1yfV9maW5kVGFibGVDb2RlKGUsdCxhLHIpe2NvbnN0IGk9cnx8MDtmb3IobGV0IHI9ZTtyPD10Oysrcil7bGV0IGU9dGhpcy5fbG9va0JpdHMocik7aWYoZT09PUphKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighaXx8ZT49aSl7Y29uc3QgdD1hW2UtaV07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPVlhW3RdO2lmKGU/LlswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2NvbnN0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDcsWWEpO2lmKGVbMF0mJmVbMl0pcmV0dXJuIGVbMV19aW5mbygiQmFkIHR3byBkaW0gY29kZSIpO3JldHVybiBKYX1fZ2V0V2hpdGVDb2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cygxMik7aWYodD09PUphKXJldHVybiAxO2U9dD4+NT9RYVt0Pj4zXTpaYVt0XTtpZihlWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDksUWEpO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLFphKTtpZihlWzBdKXJldHVybiBlWzFdfWluZm8oImJhZCB3aGl0ZSBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fZ2V0QmxhY2tDb2RlKCl7bGV0IGUsdDtpZih0aGlzLmVvYmxvY2spe2U9dGhpcy5fbG9va0JpdHMoMTMpO2lmKGU9PT1KYSlyZXR1cm4gMTt0PWU+Pjc/IShlPj45KSYmZT4+Nz90clsoZT4+MSktNjRdOmFyW2U+PjddOmVyW2VdO2lmKHRbMF0+MCl7dGhpcy5fZWF0Qml0cyh0WzBdKTtyZXR1cm4gdFsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDIsNixhcik7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMix0ciw2NCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTAsMTMsZXIpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIGJsYWNrIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9sb29rQml0cyhlKXtsZXQgdDtmb3IoO3RoaXMuaW5wdXRCaXRzPGU7KXtpZigtMT09PSh0PXRoaXMuc291cmNlLm5leHQoKSkpcmV0dXJuIDA9PT10aGlzLmlucHV0Qml0cz9KYTp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0O3RoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX1jbGFzcyBDQ0lUVEZheFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2EgaW5zdGFuY2VvZiBEaWN0fHwoYT1EaWN0LmVtcHR5KTtjb25zdCByPXtuZXh0OigpPT5lLmdldEJ5dGUoKX07dGhpcy5jY2l0dEZheERlY29kZXI9bmV3IENDSVRURmF4RGVjb2RlcihyLHtLOmEuZ2V0KCJLIiksRW5kT2ZMaW5lOmEuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOmEuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczphLmdldCgiQ29sdW1ucyIpLFJvd3M6YS5nZXQoIlJvd3MiKSxFbmRPZkJsb2NrOmEuZ2V0KCJFbmRPZkJsb2NrIiksQmxhY2tJczE6YS5nZXQoIkJsYWNrSXMxIil9KX1yZWFkQmxvY2soKXtmb3IoOyF0aGlzLmVvZjspe2NvbnN0IGU9dGhpcy5jY2l0dEZheERlY29kZXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSk7dGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fWNvbnN0IHJyPW5ldyBJbnQzMkFycmF5KFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSksaXI9bmV3IEludDMyQXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsNjU1NDcsNjU1NDksNjU1NTEsNjU1NTMsMTMxMDkxLDEzMTA5NSwxMzEwOTksMTMxMTAzLDE5NjY0MywxOTY2NTEsMTk2NjU5LDE5NjY2NywyNjIyMTEsMjYyMjI3LDI2MjI0MywyNjIyNTksMzI3ODExLDMyNzg0MywzMjc4NzUsMzI3OTA3LDI1OCwyNTgsMjU4XSksbnI9bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxzcj1bbmV3IEludDMyQXJyYXkoWzQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTYsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg0LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OCw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjgsNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMyLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5ZTQsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY0LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjQsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkyLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Niw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzYsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQwLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOCw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzIsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMCw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODgsNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUyLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Miw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzYsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA0LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OCw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI4LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Niw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjAsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgwLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NCw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTIsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc2LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTgsNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg2LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MCw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzAsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM0LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMiw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjYsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNiw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTQsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU4LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OCw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDIsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDEwLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NCw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIyLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MCw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTQsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc0LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOCw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDYsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcwLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzAsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk4LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Miw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODIsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ2LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNCw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzgsNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNyw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODUsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ5LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OSw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzMsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTkwMDAxLDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NSw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI1LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Myw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTcsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc3LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MSw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDksNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDczLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjEsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg5LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Myw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzMsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM3LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNSw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjksNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOSw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTcsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYxLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MSw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDUsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEzLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Nyw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE5LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Nyw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTEsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcxLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNSw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDMsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY3LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjcsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk1LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OSw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzksNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQzLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMSw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzUsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMyw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTEsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU1LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NSw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzksNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA3LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MSw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMxLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OSw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjMsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgzLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Nyw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTUsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc5XSksOV0sb3I9W25ldyBJbnQzMkFycmF5KFszMjc2ODAsMzI3Njk2LDMyNzY4OCwzMjc3MDQsMzI3Njg0LDMyNzcwMCwzMjc2OTIsMzI3NzA4LDMyNzY4MiwzMjc2OTgsMzI3NjkwLDMyNzcwNiwzMjc2ODYsMzI3NzAyLDMyNzY5NCwwLDMyNzY4MSwzMjc2OTcsMzI3Njg5LDMyNzcwNSwzMjc2ODUsMzI3NzAxLDMyNzY5MywzMjc3MDksMzI3NjgzLDMyNzY5OSwzMjc2OTEsMzI3NzA3LDMyNzY4NywzMjc3MDMsMzI3Njk1LDBdKSw1XTtjbGFzcyBGbGF0ZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBhPWUuZ2V0Qnl0ZSgpLHI9ZS5nZXRCeXRlKCk7aWYoLTE9PT1hfHwtMT09PXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZig4IT0oMTUmYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigoKGE8PDgpK3IpJTMxIT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigzMiZyKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRkRJQ1QgYml0IHNldCBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTt0aGlzLmNvZGVTaXplPTA7dGhpcy5jb2RlQnVmPTB9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gYT9hLmxlbmd0aDw9ZT9hOmEuc3ViYXJyYXkoMCxlKTp0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt0aGlzLnN0ci5yZXNldCgpO2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoKTt0cnl7Y29uc3R7cmVhZGFibGU6dCx3cml0YWJsZTphfT1uZXcgRGVjb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLHI9YS5nZXRXcml0ZXIoKTthd2FpdCByLnJlYWR5O3Iud3JpdGUoZSkudGhlbigoYXN5bmMoKT0+e2F3YWl0IHIucmVhZHk7YXdhaXQgci5jbG9zZSgpfSkpLmNhdGNoKCgoKT0+e30pKTtjb25zdCBpPVtdO2xldCBuPTA7Zm9yIGF3YWl0KGNvbnN0IGUgb2YgdCl7aS5wdXNoKGUpO24rPWUuYnl0ZUxlbmd0aH1jb25zdCBzPW5ldyBVaW50OEFycmF5KG4pO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2YgaSl7cy5zZXQoZSxvKTtvKz1lLmJ5dGVMZW5ndGh9cmV0dXJuIHN9Y2F0Y2h7dGhpcy5zdHI9bmV3IFN0cmVhbShlLDIsZS5sZW5ndGgsdGhpcy5zdHIuZGljdCk7dGhpcy5yZXNldCgpO3JldHVybiBudWxsfX1nZXQgaXNBc3luYygpe3JldHVybiEwfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cjtsZXQgYSxyPXRoaXMuY29kZVNpemUsaT10aGlzLmNvZGVCdWY7Zm9yKDtyPGU7KXtpZigtMT09PShhPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtpfD1hPDxyO3IrPTh9YT1pJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1pPj5lO3RoaXMuY29kZVNpemU9ci09ZTtyZXR1cm4gYX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsYT1lWzBdLHI9ZVsxXTtsZXQgaSxuPXRoaXMuY29kZVNpemUscz10aGlzLmNvZGVCdWY7Zm9yKDtuPHImJi0xIT09KGk9dC5nZXRCeXRlKCkpOyl7c3w9aTw8bjtuKz04fWNvbnN0IG89YVtzJigxPDxyKS0xXSxjPW8+PjE2LGw9NjU1MzUmbztpZihjPDF8fG48Yyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9cz4+Yzt0aGlzLmNvZGVTaXplPW4tYztyZXR1cm4gbH1nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhLHI9MDtmb3IoYT0wO2E8dDsrK2EpZVthXT5yJiYocj1lW2FdKTtjb25zdCBpPTE8PHIsbj1uZXcgSW50MzJBcnJheShpKTtmb3IobGV0IHM9MSxvPTAsYz0yO3M8PXI7KytzLG88PD0xLGM8PD0xKWZvcihsZXQgcj0wO3I8dDsrK3IpaWYoZVtyXT09PXMpe2xldCBlPTAsdD1vO2ZvcihhPTA7YTxzOysrYSl7ZT1lPDwxfDEmdDt0Pj49MX1mb3IoYT1lO2E8aTthKz1jKW5bYV09czw8MTZ8cjsrK299cmV0dXJuW24scl19I1goZSl7aW5mbyhlKTt0aGlzLmVvZj0hMH1yZWFkQmxvY2soKXtsZXQgZSx0LGE7Y29uc3Qgcj10aGlzLnN0cjt0cnl7dD10aGlzLmdldEJpdHMoMyl9Y2F0Y2goZSl7dGhpcy4jWChlLm1lc3NhZ2UpO3JldHVybn0xJnQmJih0aGlzLmVvZj0hMCk7dD4+PTE7aWYoMD09PXQpe2xldCB0O2lmKC0xPT09KHQ9ci5nZXRCeXRlKCkpKXt0aGlzLiNYKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgYT10O2lmKC0xPT09KHQ9ci5nZXRCeXRlKCkpKXt0aGlzLiNYKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1hfD10PDw4O2lmKC0xPT09KHQ9ci5nZXRCeXRlKCkpKXt0aGlzLiNYKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgaT10O2lmKC0xPT09KHQ9ci5nZXRCeXRlKCkpKXt0aGlzLiNYKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1pfD10PDw4O2lmKGkhPT0oNjU1MzUmfmEpJiYoMCE9PWF8fDAhPT1pKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCBuPXRoaXMuYnVmZmVyTGVuZ3RoLHM9bithO2U9dGhpcy5lbnN1cmVCdWZmZXIocyk7dGhpcy5idWZmZXJMZW5ndGg9cztpZigwPT09YSktMT09PXIucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9ci5nZXRCeXRlcyhhKTtlLnNldCh0LG4pO3QubGVuZ3RoPGEmJih0aGlzLmVvZj0hMCl9cmV0dXJufWxldCBpLG47aWYoMT09PXQpe2k9c3I7bj1vcn1lbHNle2lmKDIhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsdD10aGlzLmdldEJpdHMoNSkrMSxyPXRoaXMuZ2V0Qml0cyg0KSs0LHM9bmV3IFVpbnQ4QXJyYXkocnIubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288cjsrK28pc1tycltvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShzKTthPTA7bz0wO2NvbnN0IGw9ZSt0LGg9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IHUsZCxmO2Zvcig7bzxsOyl7Y29uc3QgZT10aGlzLmdldENvZGUoYyk7aWYoMTY9PT1lKXt1PTI7ZD0zO2Y9YX1lbHNlIGlmKDE3PT09ZSl7dT0zO2Q9MztmPWE9MH1lbHNle2lmKDE4IT09ZSl7aFtvKytdPWE9ZTtjb250aW51ZX11PTc7ZD0xMTtmPWE9MH1sZXQgdD10aGlzLmdldEJpdHModSkrZDtmb3IoO3QtLSA+MDspaFtvKytdPWZ9aT10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGguc3ViYXJyYXkoMCxlKSk7bj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGguc3ViYXJyYXkoZSxsKSl9fWU9dGhpcy5idWZmZXI7bGV0IHM9ZT9lLmxlbmd0aDowLG89dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgdD10aGlzLmdldENvZGUoaSk7aWYodDwyNTYpe2lmKG8rMT49cyl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKzEpO3M9ZS5sZW5ndGh9ZVtvKytdPXQ7Y29udGludWV9aWYoMjU2PT09dCl7dGhpcy5idWZmZXJMZW5ndGg9bztyZXR1cm59dC09MjU3O3Q9aXJbdF07bGV0IHI9dD4+MTY7cj4wJiYocj10aGlzLmdldEJpdHMocikpO2E9KDY1NTM1JnQpK3I7dD10aGlzLmdldENvZGUobik7dD1uclt0XTtyPXQ+PjE2O3I+MCYmKHI9dGhpcy5nZXRCaXRzKHIpKTtjb25zdCBjPSg2NTUzNSZ0KStyO2lmKG8rYT49cyl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvK2EpO3M9ZS5sZW5ndGh9Zm9yKGxldCB0PTA7dDxhOysrdCwrK28pZVtvXT1lW28tY119fX1jb25zdCBjcj1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTtjbGFzcyBBcml0aG1ldGljRGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5icD10O3RoaXMuZGF0YUVuZD1hO3RoaXMuY2hpZ2g9ZVt0XTt0aGlzLmNsb3c9MDt0aGlzLmJ5dGVJbigpO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8NyY2NTUzNXx0aGlzLmNsb3c+PjkmMTI3O3RoaXMuY2xvdz10aGlzLmNsb3c8PDcmNjU1MzU7dGhpcy5jdC09Nzt0aGlzLmE9MzI3Njh9Ynl0ZUluKCl7Y29uc3QgZT10aGlzLmRhdGE7bGV0IHQ9dGhpcy5icDtpZigyNTU9PT1lW3RdKWlmKGVbdCsxXT4xNDMpe3RoaXMuY2xvdys9NjUyODA7dGhpcy5jdD04fWVsc2V7dCsrO3RoaXMuY2xvdys9ZVt0XTw8OTt0aGlzLmN0PTc7dGhpcy5icD10fWVsc2V7dCsrO3RoaXMuY2xvdys9dDx0aGlzLmRhdGFFbmQ/ZVt0XTw8ODo2NTI4MDt0aGlzLmN0PTg7dGhpcy5icD10fWlmKHRoaXMuY2xvdz42NTUzNSl7dGhpcy5jaGlnaCs9dGhpcy5jbG93Pj4xNjt0aGlzLmNsb3cmPTY1NTM1fX1yZWFkQml0KGUsdCl7bGV0IGE9ZVt0XT4+MSxyPTEmZVt0XTtjb25zdCBpPWNyW2FdLG49aS5xZTtsZXQgcyxvPXRoaXMuYS1uO2lmKHRoaXMuY2hpZ2g8bilpZihvPG4pe289bjtzPXI7YT1pLm5tcHN9ZWxzZXtvPW47cz0xXnI7MT09PWkuc3dpdGNoRmxhZyYmKHI9cyk7YT1pLm5scHN9ZWxzZXt0aGlzLmNoaWdoLT1uO2lmKDMyNzY4Jm8pe3RoaXMuYT1vO3JldHVybiByfWlmKG88bil7cz0xXnI7MT09PWkuc3dpdGNoRmxhZyYmKHI9cyk7YT1pLm5scHN9ZWxzZXtzPXI7YT1pLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO288PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoISgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1hPDwxfHI7cmV0dXJuIHN9fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBmYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKHQpO2xldCBpPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IG49MDtuPGU7bisrKXtjb25zdCBlPWEucmVhZEJpdChyLGkpO2k9aTwyNTY/aTw8MXxlOjUxMSYoaTw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IG49cmVhZEJpdHMoMSkscz1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7bGV0IG87MD09PW4/bz1zOnM+MCYmKG89LXMpO3JldHVybiBvPj0tMjE0NzQ4MzY0OCYmbzw9dmE/bzpudWxsfWZ1bmN0aW9uIGRlY29kZUlBSUQoZSx0LGEpe2NvbnN0IHI9ZS5nZXRDb250ZXh0cygiSUFJRCIpO2xldCBpPTE7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7aT1pPDwxfHQucmVhZEJpdChyLGkpfXJldHVybiBhPDMxP2kmKDE8PGEpLTE6MjE0NzQ4MzY0NyZpfWNvbnN0IGxyPVsiU3ltYm9sRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZVRleHRSZWdpb24iLG51bGwsIkltbWVkaWF0ZVRleHRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiUGF0dGVybkRpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbiIsIkludGVybWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsIlBhZ2VJbmZvcm1hdGlvbiIsIkVuZE9mUGFnZSIsIkVuZE9mU3RyaXBlIiwiRW5kT2ZGaWxlIiwiUHJvZmlsZXMiLCJUYWJsZXMiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiRXh0ZW5zaW9uIl0saHI9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLHVyPVt7Y29kaW5nOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4Oi0xLHk6MX0se3g6MCx5OjF9LHt4OjEseToxfV19LHtjb2Rpbmc6W3t4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4OjAseToxfSx7eDoxLHk6MX1dfV0sZHI9WzM5NzE3LDE5NDEsMjI5LDQwNV0sZnI9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsYSxyLGksbixzLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxhLCExKX1pZigwPT09ciYmIW4mJiFpJiY0PT09cy5sZW5ndGgmJjM9PT1zWzBdLngmJi0xPT09c1swXS55JiYtMz09PXNbMV0ueCYmLTE9PT1zWzFdLnkmJjI9PT1zWzJdLngmJi0yPT09c1syXS55JiYtMj09PXNbM10ueCYmLTI9PT1zWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsYSl7Y29uc3Qgcj1hLmRlY29kZXIsaT1hLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxuPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKyl7aD1uW29dPW5ldyBVaW50OEFycmF5KGUpO3U9bzwxP2g6bltvLTFdO2Q9bzwyP2g6bltvLTJdO3M9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NDtmb3IoYz0wO2M8ZTtjKyspe2hbY109bD1yLnJlYWRCaXQoaSxzKTtzPSgzMTczNSZzKTw8MXwoYyszPGU/ZFtjKzNdPDwxMTowKXwoYys0PGU/dVtjKzRdPDw0OjApfGx9fXJldHVybiBufSh0LGEsbyk7Y29uc3QgYz0hIW4sbD1ocltyXS5jb25jYXQocyk7bC5zb3J0KCgoZSx0KT0+ZS55LXQueXx8ZS54LXQueCkpO2NvbnN0IGg9bC5sZW5ndGgsdT1uZXcgSW50OEFycmF5KGgpLGQ9bmV3IEludDhBcnJheShoKSxmPVtdO2xldCBnLHAsbT0wLGI9MCx5PTAsdz0wO2ZvcihwPTA7cDxoO3ArKyl7dVtwXT1sW3BdLng7ZFtwXT1sW3BdLnk7Yj1NYXRoLm1pbihiLGxbcF0ueCk7eT1NYXRoLm1heCh5LGxbcF0ueCk7dz1NYXRoLm1pbih3LGxbcF0ueSk7cDxoLTEmJmxbcF0ueT09PWxbcCsxXS55JiZsW3BdLng9PT1sW3ArMV0ueC0xP218PTE8PGgtMS1wOmYucHVzaChwKX1jb25zdCB4PWYubGVuZ3RoLFM9bmV3IEludDhBcnJheSh4KSxrPW5ldyBJbnQ4QXJyYXkoeCksQz1uZXcgVWludDE2QXJyYXkoeCk7Zm9yKGc9MDtnPHg7ZysrKXtwPWZbZ107U1tnXT1sW3BdLng7a1tnXT1sW3BdLnk7Q1tnXT0xPDxoLTEtcH1jb25zdCB2PS1iLEY9LXcsVD10LXksTz1kcltyXTtsZXQgTT1uZXcgVWludDhBcnJheSh0KTtjb25zdCBEPVtdLFI9by5kZWNvZGVyLE49by5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIik7bGV0IEUsTCxqLF8sVSxYPTAscT0wO2ZvcihsZXQgZT0wO2U8YTtlKyspe2lmKGkpe1hePVIucmVhZEJpdChOLE8pO2lmKFgpe0QucHVzaChNKTtjb250aW51ZX19TT1uZXcgVWludDhBcnJheShNKTtELnB1c2goTSk7Zm9yKEU9MDtFPHQ7RSsrKXtpZihjJiZuW2VdW0VdKXtNW0VdPTA7Y29udGludWV9aWYoRT49diYmRTxUJiZlPj1GKXtxPXE8PDEmbTtmb3IocD0wO3A8eDtwKyspe0w9ZStrW3BdO2o9RStTW3BdO189RFtMXVtqXTtpZihfKXtfPUNbcF07cXw9X319fWVsc2V7cT0wO1U9aC0xO2ZvcihwPTA7cDxoO3ArKyxVLS0pe2o9RSt1W3BdO2lmKGo+PTAmJmo8dCl7TD1lK2RbcF07aWYoTD49MCl7Xz1EW0xdW2pdO18mJihxfD1fPDxVKX19fX1jb25zdCBhPVIucmVhZEJpdChOLHEpO01bRV09YX19cmV0dXJuIER9ZnVuY3Rpb24gZGVjb2RlUmVmaW5lbWVudChlLHQsYSxyLGksbixzLG8sYyl7bGV0IGw9dXJbYV0uY29kaW5nOzA9PT1hJiYobD1sLmNvbmNhdChbb1swXV0pKTtjb25zdCBoPWwubGVuZ3RoLHU9bmV3IEludDMyQXJyYXkoaCksZD1uZXcgSW50MzJBcnJheShoKTtsZXQgZjtmb3IoZj0wO2Y8aDtmKyspe3VbZl09bFtmXS54O2RbZl09bFtmXS55fWxldCBnPXVyW2FdLnJlZmVyZW5jZTswPT09YSYmKGc9Zy5jb25jYXQoW29bMV1dKSk7Y29uc3QgcD1nLmxlbmd0aCxtPW5ldyBJbnQzMkFycmF5KHApLGI9bmV3IEludDMyQXJyYXkocCk7Zm9yKGY9MDtmPHA7ZisrKXttW2ZdPWdbZl0ueDtiW2ZdPWdbZl0ueX1jb25zdCB5PXJbMF0ubGVuZ3RoLHc9ci5sZW5ndGgseD1mclthXSxTPVtdLGs9Yy5kZWNvZGVyLEM9Yy5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdSIik7bGV0IHY9MDtmb3IobGV0IGE9MDthPHQ7YSsrKXtpZihzKXt2Xj1rLnJlYWRCaXQoQyx4KTtpZih2KXRocm93IG5ldyBKYmlnMkVycm9yKCJwcmVkaWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKX1jb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO1MucHVzaCh0KTtmb3IobGV0IHM9MDtzPGU7cysrKXtsZXQgbyxjLGw9MDtmb3IoZj0wO2Y8aDtmKyspe289YStkW2ZdO2M9cyt1W2ZdO288MHx8YzwwfHxjPj1lP2w8PD0xOmw9bDw8MXxTW29dW2NdfWZvcihmPTA7ZjxwO2YrKyl7bz1hK2JbZl0tbjtjPXMrbVtmXS1pO288MHx8bz49d3x8YzwwfHxjPj15P2w8PD0xOmw9bDw8MXxyW29dW2NdfWNvbnN0IGc9ay5yZWFkQml0KEMsbCk7dFtzXT1nfX1yZXR1cm4gU31mdW5jdGlvbiBkZWNvZGVUZXh0UmVnaW9uKGUsdCxhLHIsaSxuLHMsbyxjLGwsaCx1LGQsZixnLHAsbSxiLHkpe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCB3PVtdO2xldCB4LFM7Zm9yKHg9MDt4PHI7eCsrKXtTPW5ldyBVaW50OEFycmF5KGEpO2kmJlMuZmlsbChpKTt3LnB1c2goUyl9Y29uc3Qgaz1tLmRlY29kZXIsQz1tLmNvbnRleHRDYWNoZTtsZXQgdj1lPy1mLnRhYmxlRGVsdGFULmRlY29kZSh5KTotZGVjb2RlSW50ZWdlcihDLCJJQURUIixrKSxGPTA7eD0wO2Zvcig7eDxuOyl7dis9ZT9mLnRhYmxlRGVsdGFULmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspO0YrPWU/Zi50YWJsZUZpcnN0Uy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQUZTIixrKTtsZXQgcj1GO2Zvcig7Oyl7bGV0IGk9MDtzPjEmJihpPWU/eS5yZWFkQml0cyhiKTpkZWNvZGVJbnRlZ2VyKEMsIklBSVQiLGspKTtjb25zdCBuPXMqditpLEY9ZT9mLnN5bWJvbElEVGFibGUuZGVjb2RlKHkpOmRlY29kZUlBSUQoQyxrLGMpLFQ9dCYmKGU/eS5yZWFkQml0KCk6ZGVjb2RlSW50ZWdlcihDLCJJQVJJIixrKSk7bGV0IE89b1tGXSxNPU9bMF0ubGVuZ3RoLEQ9Ty5sZW5ndGg7aWYoVCl7Y29uc3QgZT1kZWNvZGVJbnRlZ2VyKEMsIklBUkRXIixrKSx0PWRlY29kZUludGVnZXIoQywiSUFSREgiLGspO00rPWU7RCs9dDtPPWRlY29kZVJlZmluZW1lbnQoTSxELGcsTywoZT4+MSkrZGVjb2RlSW50ZWdlcihDLCJJQVJEWCIsayksKHQ+PjEpK2RlY29kZUludGVnZXIoQywiSUFSRFkiLGspLCExLHAsbSl9bGV0IFI9MDtsPzEmdT9SPUQtMTpyKz1ELTE6dT4xP3IrPU0tMTpSPU0tMTtjb25zdCBOPW4tKDEmdT8wOkQtMSksRT1yLSgyJnU/TS0xOjApO2xldCBMLGosXztpZihsKWZvcihMPTA7TDxEO0wrKyl7Uz13W0UrTF07aWYoIVMpY29udGludWU7Xz1PW0xdO2NvbnN0IGU9TWF0aC5taW4oYS1OLE0pO3N3aXRjaChkKXtjYXNlIDA6Zm9yKGo9MDtqPGU7aisrKVNbTitqXXw9X1tqXTticmVhaztjYXNlIDI6Zm9yKGo9MDtqPGU7aisrKVNbTitqXV49X1tqXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19ZWxzZSBmb3Ioaj0wO2o8RDtqKyspe1M9d1tOK2pdO2lmKFMpe189T1tqXTtzd2l0Y2goZCl7Y2FzZSAwOmZvcihMPTA7TDxNO0wrKylTW0UrTF18PV9bTF07YnJlYWs7Y2FzZSAyOmZvcihMPTA7TDxNO0wrKylTW0UrTF1ePV9bTF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtkfSBpcyBub3Qgc3VwcG9ydGVkYCl9fX14Kys7Y29uc3QgVT1lP2YudGFibGVEZWx0YVMuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEUyIsayk7aWYobnVsbD09PVUpYnJlYWs7cis9UitVK2h9fXJldHVybiB3fWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgYT17fTthLm51bWJlcj1yZWFkVWludDMyKGUsdCk7Y29uc3Qgcj1lW3QrNF0saT02MyZyO2lmKCFscltpXSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBzZWdtZW50IHR5cGU6ICIraSk7YS50eXBlPWk7YS50eXBlTmFtZT1scltpXTthLmRlZmVycmVkTm9uUmV0YWluPSEhKDEyOCZyKTtjb25zdCBuPSEhKDY0JnIpLHM9ZVt0KzVdO2xldCBvPXM+PjUmNztjb25zdCBjPVszMSZzXTtsZXQgbD10KzY7aWYoNz09PXMpe289NTM2ODcwOTExJnJlYWRVaW50MzIoZSxsLTEpO2wrPTM7bGV0IHQ9bys3Pj4zO2NbMF09ZVtsKytdO2Zvcig7LS10PjA7KWMucHVzaChlW2wrK10pfWVsc2UgaWYoNT09PXN8fDY9PT1zKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHJlZmVycmVkLXRvIGZsYWdzIik7YS5yZXRhaW5CaXRzPWM7bGV0IGg9NDthLm51bWJlcjw9MjU2P2g9MTphLm51bWJlcjw9NjU1MzYmJihoPTIpO2NvbnN0IHU9W107bGV0IGQsZjtmb3IoZD0wO2Q8bztkKyspe2xldCB0O3Q9MT09PWg/ZVtsXToyPT09aD9yZWFkVWludDE2KGUsbCk6cmVhZFVpbnQzMihlLGwpO3UucHVzaCh0KTtsKz1ofWEucmVmZXJyZWRUbz11O2lmKG4pe2EucGFnZUFzc29jaWF0aW9uPXJlYWRVaW50MzIoZSxsKTtsKz00fWVsc2UgYS5wYWdlQXNzb2NpYXRpb249ZVtsKytdO2EubGVuZ3RoPXJlYWRVaW50MzIoZSxsKTtsKz00O2lmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl7aWYoMzghPT1pKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgiKTt7Y29uc3QgdD1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsbCkscj0hISgxJmVbbCtncl0pLGk9NixuPW5ldyBVaW50OEFycmF5KGkpO2lmKCFyKXtuWzBdPTI1NTtuWzFdPTE3Mn1uWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O25bM109dC5oZWlnaHQ+PjE2JjI1NTtuWzRdPXQuaGVpZ2h0Pj44JjI1NTtuWzVdPTI1NSZ0LmhlaWdodDtmb3IoZD1sLGY9ZS5sZW5ndGg7ZDxmO2QrKyl7bGV0IHQ9MDtmb3IoO3Q8aSYmblt0XT09PWVbZCt0XTspdCsrO2lmKHQ9PT1pKXthLmxlbmd0aD1kK2k7YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1hLmhlYWRlckVuZD1sO3JldHVybiBhfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsYSxyKXtjb25zdCBpPVtdO2xldCBuPWE7Zm9yKDtuPHI7KXtjb25zdCBhPXJlYWRTZWdtZW50SGVhZGVyKHQsbik7bj1hLmhlYWRlckVuZDtjb25zdCByPXtoZWFkZXI6YSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7ci5zdGFydD1uO24rPWEubGVuZ3RoO3IuZW5kPW59aS5wdXNoKHIpO2lmKDUxPT09YS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrKyl7aVtlXS5zdGFydD1uO24rPWlbZV0uaGVhZGVyLmxlbmd0aDtpW2VdLmVuZD1ufXJldHVybiBpfWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6cmVhZFVpbnQzMihlLHQpLGhlaWdodDpyZWFkVWludDMyKGUsdCs0KSx4OnJlYWRVaW50MzIoZSx0KzgpLHk6cmVhZFVpbnQzMihlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBncj0xNztmdW5jdGlvbiBwcm9jZXNzU2VnbWVudChlLHQpe2NvbnN0IGE9ZS5oZWFkZXIscj1lLmRhdGEsaT1lLmVuZDtsZXQgbixzLG8sYyxsPWUuc3RhcnQ7c3dpdGNoKGEudHlwZSl7Y2FzZSAwOmNvbnN0IGU9e30sdD1yZWFkVWludDE2KHIsbCk7ZS5odWZmbWFuPSEhKDEmdCk7ZS5yZWZpbmVtZW50PSEhKDImdCk7ZS5odWZmbWFuREhTZWxlY3Rvcj10Pj4yJjM7ZS5odWZmbWFuRFdTZWxlY3Rvcj10Pj40JjM7ZS5iaXRtYXBTaXplU2VsZWN0b3I9dD4+NiYxO2UuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj10Pj43JjE7ZS5iaXRtYXBDb2RpbmdDb250ZXh0VXNlZD0hISgyNTYmdCk7ZS5iaXRtYXBDb2RpbmdDb250ZXh0UmV0YWluZWQ9ISEoNTEyJnQpO2UudGVtcGxhdGU9dD4+MTAmMztlLnJlZmluZW1lbnRUZW1wbGF0ZT10Pj4xMiYxO2wrPTI7aWYoIWUuaHVmZm1hbil7Yz0wPT09ZS50ZW1wbGF0ZT80OjE7cz1bXTtmb3Iobz0wO288YztvKyspe3MucHVzaCh7eDpyZWFkSW50OChyLGwpLHk6cmVhZEludDgocixsKzEpfSk7bCs9Mn1lLmF0PXN9aWYoZS5yZWZpbmVtZW50JiYhZS5yZWZpbmVtZW50VGVtcGxhdGUpe3M9W107Zm9yKG89MDtvPDI7bysrKXtzLnB1c2goe3g6cmVhZEludDgocixsKSx5OnJlYWRJbnQ4KHIsbCsxKX0pO2wrPTJ9ZS5yZWZpbmVtZW50QXQ9c31lLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzPXJlYWRVaW50MzIocixsKTtsKz00O2UubnVtYmVyT2ZOZXdTeW1ib2xzPXJlYWRVaW50MzIocixsKTtsKz00O249W2UsYS5udW1iZXIsYS5yZWZlcnJlZFRvLHIsbCxpXTticmVhaztjYXNlIDY6Y2FzZSA3OmNvbnN0IGg9e307aC5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixsKTtsKz1ncjtjb25zdCB1PXJlYWRVaW50MTYocixsKTtsKz0yO2guaHVmZm1hbj0hISgxJnUpO2gucmVmaW5lbWVudD0hISgyJnUpO2gubG9nU3RyaXBTaXplPXU+PjImMztoLnN0cmlwU2l6ZT0xPDxoLmxvZ1N0cmlwU2l6ZTtoLnJlZmVyZW5jZUNvcm5lcj11Pj40JjM7aC50cmFuc3Bvc2VkPSEhKDY0JnUpO2guY29tYmluYXRpb25PcGVyYXRvcj11Pj43JjM7aC5kZWZhdWx0UGl4ZWxWYWx1ZT11Pj45JjE7aC5kc09mZnNldD11PDwxNz4+Mjc7aC5yZWZpbmVtZW50VGVtcGxhdGU9dT4+MTUmMTtpZihoLmh1ZmZtYW4pe2NvbnN0IGU9cmVhZFVpbnQxNihyLGwpO2wrPTI7aC5odWZmbWFuRlM9MyZlO2guaHVmZm1hbkRTPWU+PjImMztoLmh1ZmZtYW5EVD1lPj40JjM7aC5odWZmbWFuUmVmaW5lbWVudERXPWU+PjYmMztoLmh1ZmZtYW5SZWZpbmVtZW50REg9ZT4+OCYzO2guaHVmZm1hblJlZmluZW1lbnREWD1lPj4xMCYzO2guaHVmZm1hblJlZmluZW1lbnREWT1lPj4xMiYzO2guaHVmZm1hblJlZmluZW1lbnRTaXplU2VsZWN0b3I9ISEoMTYzODQmZSl9aWYoaC5yZWZpbmVtZW50JiYhaC5yZWZpbmVtZW50VGVtcGxhdGUpe3M9W107Zm9yKG89MDtvPDI7bysrKXtzLnB1c2goe3g6cmVhZEludDgocixsKSx5OnJlYWRJbnQ4KHIsbCsxKX0pO2wrPTJ9aC5yZWZpbmVtZW50QXQ9c31oLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzPXJlYWRVaW50MzIocixsKTtsKz00O249W2gsYS5yZWZlcnJlZFRvLHIsbCxpXTticmVhaztjYXNlIDE2OmNvbnN0IGQ9e30sZj1yW2wrK107ZC5tbXI9ISEoMSZmKTtkLnRlbXBsYXRlPWY+PjEmMztkLnBhdHRlcm5XaWR0aD1yW2wrK107ZC5wYXR0ZXJuSGVpZ2h0PXJbbCsrXTtkLm1heFBhdHRlcm5JbmRleD1yZWFkVWludDMyKHIsbCk7bCs9NDtuPVtkLGEubnVtYmVyLHIsbCxpXTticmVhaztjYXNlIDIyOmNhc2UgMjM6Y29uc3QgZz17fTtnLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGwpO2wrPWdyO2NvbnN0IHA9cltsKytdO2cubW1yPSEhKDEmcCk7Zy50ZW1wbGF0ZT1wPj4xJjM7Zy5lbmFibGVTa2lwPSEhKDgmcCk7Zy5jb21iaW5hdGlvbk9wZXJhdG9yPXA+PjQmNztnLmRlZmF1bHRQaXhlbFZhbHVlPXA+PjcmMTtnLmdyaWRXaWR0aD1yZWFkVWludDMyKHIsbCk7bCs9NDtnLmdyaWRIZWlnaHQ9cmVhZFVpbnQzMihyLGwpO2wrPTQ7Zy5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JnJlYWRVaW50MzIocixsKTtsKz00O2cuZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSZyZWFkVWludDMyKHIsbCk7bCs9NDtnLmdyaWRWZWN0b3JYPXJlYWRVaW50MTYocixsKTtsKz0yO2cuZ3JpZFZlY3Rvclk9cmVhZFVpbnQxNihyLGwpO2wrPTI7bj1bZyxhLnJlZmVycmVkVG8scixsLGldO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCBtPXt9O20uaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsbCk7bCs9Z3I7Y29uc3QgYj1yW2wrK107bS5tbXI9ISEoMSZiKTttLnRlbXBsYXRlPWI+PjEmMzttLnByZWRpY3Rpb249ISEoOCZiKTtpZighbS5tbXIpe2M9MD09PW0udGVtcGxhdGU/NDoxO3M9W107Zm9yKG89MDtvPGM7bysrKXtzLnB1c2goe3g6cmVhZEludDgocixsKSx5OnJlYWRJbnQ4KHIsbCsxKX0pO2wrPTJ9bS5hdD1zfW49W20scixsLGldO2JyZWFrO2Nhc2UgNDg6Y29uc3QgeT17d2lkdGg6cmVhZFVpbnQzMihyLGwpLGhlaWdodDpyZWFkVWludDMyKHIsbCs0KSxyZXNvbHV0aW9uWDpyZWFkVWludDMyKHIsbCs4KSxyZXNvbHV0aW9uWTpyZWFkVWludDMyKHIsbCsxMil9OzQyOTQ5NjcyOTU9PT15LmhlaWdodCYmZGVsZXRlIHkuaGVpZ2h0O2NvbnN0IHc9cltsKzE2XTtyZWFkVWludDE2KHIsbCsxNyk7eS5sb3NzbGVzcz0hISgxJncpO3kucmVmaW5lbWVudD0hISgyJncpO3kuZGVmYXVsdFBpeGVsVmFsdWU9dz4+MiYxO3kuY29tYmluYXRpb25PcGVyYXRvcj13Pj4zJjM7eS5yZXF1aXJlc0J1ZmZlcj0hISgzMiZ3KTt5LmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT0hISg2NCZ3KTtuPVt5XTticmVhaztjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDYyOmJyZWFrO2Nhc2UgNTM6bj1bYS5udW1iZXIscixsLGldO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHNlZ21lbnQgdHlwZSAke2EudHlwZU5hbWV9KCR7YS50eXBlfSkgaXMgbm90IGltcGxlbWVudGVkYCl9Y29uc3QgaD0ib24iK2EudHlwZU5hbWU7aCBpbiB0JiZ0W2hdLmFwcGx5KHQsbil9ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnRzKGUsdCl7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXByb2Nlc3NTZWdtZW50KGVbYV0sdCl9Y2xhc3MgU2ltcGxlU2VnbWVudFZpc2l0b3J7b25QYWdlSW5mb3JtYXRpb24oZSl7dGhpcy5jdXJyZW50UGFnZUluZm89ZTtjb25zdCB0PWUud2lkdGgrNz4+MyxhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmUuaGVpZ2h0KTtlLmRlZmF1bHRQaXhlbFZhbHVlJiZhLmZpbGwoMjU1KTt0aGlzLmJ1ZmZlcj1hfWRyYXdCaXRtYXAoZSx0KXtjb25zdCBhPXRoaXMuY3VycmVudFBhZ2VJbmZvLHI9ZS53aWR0aCxpPWUuaGVpZ2h0LG49YS53aWR0aCs3Pj4zLHM9YS5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU/ZS5jb21iaW5hdGlvbk9wZXJhdG9yOmEuY29tYmluYXRpb25PcGVyYXRvcixvPXRoaXMuYnVmZmVyLGM9MTI4Pj4oNyZlLngpO2xldCBsLGgsdSxkLGY9ZS55Km4rKGUueD4+Myk7c3dpdGNoKHMpe2Nhc2UgMDpmb3IobD0wO2w8aTtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXXw9dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9bn1icmVhaztjYXNlIDI6Zm9yKGw9MDtsPGk7bCsrKXt1PWM7ZD1mO2ZvcihoPTA7aDxyO2grKyl7dFtsXVtoXSYmKG9bZF1ePXUpO3U+Pj0xO2lmKCF1KXt1PTEyODtkKyt9fWYrPW59YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtzfSBpcyBub3Qgc3VwcG9ydGVkYCl9fW9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbihlLHQsYSxyKXtjb25zdCBpPWUuaW5mbyxuPW5ldyBEZWNvZGluZ0NvbnRleHQodCxhLHIpLHM9ZGVjb2RlQml0bWFwKGUubW1yLGkud2lkdGgsaS5oZWlnaHQsZS50ZW1wbGF0ZSxlLnByZWRpY3Rpb24sbnVsbCxlLmF0LG4pO3RoaXMuZHJhd0JpdG1hcChpLHMpfW9uSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oLi4uYXJndW1lbnRzKX1vblN5bWJvbERpY3Rpb25hcnkoZSx0LGEscixpLG4pe2xldCBzLG87aWYoZS5odWZmbWFuKXtzPWZ1bmN0aW9uIGdldFN5bWJvbERpY3Rpb25hcnlIdWZmbWFuVGFibGVzKGUsdCxhKXtsZXQgcixpLG4scyxvPTA7c3dpdGNoKGUuaHVmZm1hbkRIU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6cj1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRIU2VsZWN0b3IrNCk7YnJlYWs7Y2FzZSAzOnI9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERIIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRXU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6aT1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRXU2VsZWN0b3IrMik7YnJlYWs7Y2FzZSAzOmk9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERXIHNlbGVjdG9yIil9aWYoZS5iaXRtYXBTaXplU2VsZWN0b3Ipe249Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTtvKyt9ZWxzZSBuPWdldFN0YW5kYXJkVGFibGUoMSk7cz1lLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I/Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxhKTpnZXRTdGFuZGFyZFRhYmxlKDEpO3JldHVybnt0YWJsZURlbHRhSGVpZ2h0OnIsdGFibGVEZWx0YVdpZHRoOmksdGFibGVCaXRtYXBTaXplOm4sdGFibGVBZ2dyZWdhdGVJbnN0YW5jZXM6c319KGUsYSx0aGlzLmN1c3RvbVRhYmxlcyk7bz1uZXcgUmVhZGVyKHIsaSxuKX1sZXQgYz10aGlzLnN5bWJvbHM7Y3x8KHRoaXMuc3ltYm9scz1jPXt9KTtjb25zdCBsPVtdO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9Y1tlXTt0JiZsLnB1c2goLi4udCl9Y29uc3QgaD1uZXcgRGVjb2RpbmdDb250ZXh0KHIsaSxuKTtjW3RdPWZ1bmN0aW9uIGRlY29kZVN5bWJvbERpY3Rpb25hcnkoZSx0LGEscixpLG4scyxvLGMsbCxoLHUpe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInN5bWJvbCByZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3QgZD1bXTtsZXQgZj0wLGc9bG9nMihhLmxlbmd0aCtyKTtjb25zdCBwPWguZGVjb2RlcixtPWguY29udGV4dENhY2hlO2xldCBiLHk7aWYoZSl7Yj1nZXRTdGFuZGFyZFRhYmxlKDEpO3k9W107Zz1NYXRoLm1heChnLDEpfWZvcig7ZC5sZW5ndGg8cjspe2YrPWU/bi50YWJsZURlbHRhSGVpZ2h0LmRlY29kZSh1KTpkZWNvZGVJbnRlZ2VyKG0sIklBREgiLHApO2xldCByPTAsaT0wO2NvbnN0IGI9ZT95Lmxlbmd0aDowO2Zvcig7Oyl7Y29uc3QgYj1lP24udGFibGVEZWx0YVdpZHRoLmRlY29kZSh1KTpkZWNvZGVJbnRlZ2VyKG0sIklBRFciLHApO2lmKG51bGw9PT1iKWJyZWFrO3IrPWI7aSs9cjtsZXQgdztpZih0KXtjb25zdCBpPWRlY29kZUludGVnZXIobSwiSUFBSSIscCk7aWYoaT4xKXc9ZGVjb2RlVGV4dFJlZ2lvbihlLHQscixmLDAsaSwxLGEuY29uY2F0KGQpLGcsMCwwLDEsMCxuLGMsbCxoLDAsdSk7ZWxzZXtjb25zdCBlPWRlY29kZUlBSUQobSxwLGcpLHQ9ZGVjb2RlSW50ZWdlcihtLCJJQVJEWCIscCksaT1kZWNvZGVJbnRlZ2VyKG0sIklBUkRZIixwKTt3PWRlY29kZVJlZmluZW1lbnQocixmLGMsZTxhLmxlbmd0aD9hW2VdOmRbZS1hLmxlbmd0aF0sdCxpLCExLGwsaCl9ZC5wdXNoKHcpfWVsc2UgaWYoZSl5LnB1c2gocik7ZWxzZXt3PWRlY29kZUJpdG1hcCghMSxyLGYscywhMSxudWxsLG8saCk7ZC5wdXNoKHcpfX1pZihlJiYhdCl7Y29uc3QgZT1uLnRhYmxlQml0bWFwU2l6ZS5kZWNvZGUodSk7dS5ieXRlQWxpZ24oKTtsZXQgdDtpZigwPT09ZSl0PXJlYWRVbmNvbXByZXNzZWRCaXRtYXAodSxpLGYpO2Vsc2V7Y29uc3QgYT11LmVuZCxyPXUucG9zaXRpb24rZTt1LmVuZD1yO3Q9ZGVjb2RlTU1SQml0bWFwKHUsaSxmLCExKTt1LmVuZD1hO3UucG9zaXRpb249cn1jb25zdCBhPXkubGVuZ3RoO2lmKGI9PT1hLTEpZC5wdXNoKHQpO2Vsc2V7bGV0IGUscixpLG4scyxvPTA7Zm9yKGU9YjtlPGE7ZSsrKXtuPXlbZV07aT1vK247cz1bXTtmb3Iocj0wO3I8ZjtyKyspcy5wdXNoKHRbcl0uc3ViYXJyYXkobyxpKSk7ZC5wdXNoKHMpO289aX19fX1jb25zdCB3PVtdLHg9W107bGV0IFMsayxDPSExO2NvbnN0IHY9YS5sZW5ndGgrcjtmb3IoO3gubGVuZ3RoPHY7KXtsZXQgdD1lP2IuZGVjb2RlKHUpOmRlY29kZUludGVnZXIobSwiSUFFWCIscCk7Zm9yKDt0LS07KXgucHVzaChDKTtDPSFDfWZvcihTPTAsaz1hLmxlbmd0aDtTPGs7UysrKXhbU10mJncucHVzaChhW1NdKTtmb3IobGV0IGU9MDtlPHI7UysrLGUrKyl4W1NdJiZ3LnB1c2goZFtlXSk7cmV0dXJuIHd9KGUuaHVmZm1hbixlLnJlZmluZW1lbnQsbCxlLm51bWJlck9mTmV3U3ltYm9scyxlLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLHMsZS50ZW1wbGF0ZSxlLmF0LGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGgsbyl9b25JbW1lZGlhdGVUZXh0UmVnaW9uKGUsdCxhLHIsaSl7Y29uc3Qgbj1lLmluZm87bGV0IHMsbztjb25zdCBjPXRoaXMuc3ltYm9scyxsPVtdO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9Y1tlXTt0JiZsLnB1c2goLi4udCl9Y29uc3QgaD1sb2cyKGwubGVuZ3RoKTtpZihlLmh1ZmZtYW4pe289bmV3IFJlYWRlcihhLHIsaSk7cz1mdW5jdGlvbiBnZXRUZXh0UmVnaW9uSHVmZm1hblRhYmxlcyhlLHQsYSxyLGkpe2NvbnN0IG49W107Zm9yKGxldCBlPTA7ZTw9MzQ7ZSsrKXtjb25zdCB0PWkucmVhZEJpdHMoNCk7bi5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKX1jb25zdCBzPW5ldyBIdWZmbWFuVGFibGUobiwhMSk7bi5sZW5ndGg9MDtmb3IobGV0IGU9MDtlPHI7KXtjb25zdCB0PXMuZGVjb2RlKGkpO2lmKHQ+PTMyKXtsZXQgYSxyLHM7c3dpdGNoKHQpe2Nhc2UgMzI6aWYoMD09PWUpdGhyb3cgbmV3IEpiaWcyRXJyb3IoIm5vIHByZXZpb3VzIHZhbHVlIGluIHN5bWJvbCBJRCB0YWJsZSIpO3I9aS5yZWFkQml0cygyKSszO2E9bltlLTFdLnByZWZpeExlbmd0aDticmVhaztjYXNlIDMzOnI9aS5yZWFkQml0cygzKSszO2E9MDticmVhaztjYXNlIDM0OnI9aS5yZWFkQml0cyg3KSsxMTthPTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aCBpbiBzeW1ib2wgSUQgdGFibGUiKX1mb3Iocz0wO3M8cjtzKyspe24ucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsYSwwLDBdKSk7ZSsrfX1lbHNle24ucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSk7ZSsrfX1pLmJ5dGVBbGlnbigpO2NvbnN0IG89bmV3IEh1ZmZtYW5UYWJsZShuLCExKTtsZXQgYyxsLGgsdT0wO3N3aXRjaChlLmh1ZmZtYW5GUyl7Y2FzZSAwOmNhc2UgMTpjPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRlMrNik7YnJlYWs7Y2FzZSAzOmM9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIEZTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRTKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpsPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFMrOCk7YnJlYWs7Y2FzZSAzOmw9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRUKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpoPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFQrMTEpO2JyZWFrO2Nhc2UgMzpoPWdldEN1c3RvbUh1ZmZtYW5UYWJsZSh1LHQsYSk7dSsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVCBzZWxlY3RvciIpfWlmKGUucmVmaW5lbWVudCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO3JldHVybntzeW1ib2xJRFRhYmxlOm8sdGFibGVGaXJzdFM6Yyx0YWJsZURlbHRhUzpsLHRhYmxlRGVsdGFUOmh9fShlLHQsdGhpcy5jdXN0b21UYWJsZXMsbC5sZW5ndGgsbyl9Y29uc3QgdT1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxkPWRlY29kZVRleHRSZWdpb24oZS5odWZmbWFuLGUucmVmaW5lbWVudCxuLndpZHRoLG4uaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcyxlLnN0cmlwU2l6ZSxsLGgsZS50cmFuc3Bvc2VkLGUuZHNPZmZzZXQsZS5yZWZlcmVuY2VDb3JuZXIsZS5jb21iaW5hdGlvbk9wZXJhdG9yLHMsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsdSxlLmxvZ1N0cmlwU2l6ZSxvKTt0aGlzLmRyYXdCaXRtYXAobixkKX1vbkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVUZXh0UmVnaW9uKC4uLmFyZ3VtZW50cyl9b25QYXR0ZXJuRGljdGlvbmFyeShlLHQsYSxyLGkpe2xldCBuPXRoaXMucGF0dGVybnM7bnx8KHRoaXMucGF0dGVybnM9bj17fSk7Y29uc3Qgcz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKTtuW3RdPWZ1bmN0aW9uIGRlY29kZVBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsaSxuKXtjb25zdCBzPVtdO2lmKCFlKXtzLnB1c2goe3g6LXQseTowfSk7MD09PWkmJnMucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBvPWRlY29kZUJpdG1hcChlLChyKzEpKnQsYSxpLCExLG51bGwscyxuKSxjPVtdO2ZvcihsZXQgZT0wO2U8PXI7ZSsrKXtjb25zdCByPVtdLGk9dCplLG49aSt0O2ZvcihsZXQgZT0wO2U8YTtlKyspci5wdXNoKG9bZV0uc3ViYXJyYXkoaSxuKSk7Yy5wdXNoKHIpfXJldHVybiBjfShlLm1tcixlLnBhdHRlcm5XaWR0aCxlLnBhdHRlcm5IZWlnaHQsZS5tYXhQYXR0ZXJuSW5kZXgsZS50ZW1wbGF0ZSxzKX1vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSl7Y29uc3Qgbj10aGlzLnBhdHRlcm5zW3RbMF1dLHM9ZS5pbmZvLG89bmV3IERlY29kaW5nQ29udGV4dChhLHIsaSksYz1mdW5jdGlvbiBkZWNvZGVIYWxmdG9uZVJlZ2lvbihlLHQsYSxyLGksbixzLG8sYyxsLGgsdSxkLGYsZyl7aWYocyl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2tpcCBpcyBub3Qgc3VwcG9ydGVkIik7aWYoMCE9PW8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICIke299IiBpcyBub3Qgc3VwcG9ydGVkIGluIGhhbGZ0b25lIHJlZ2lvbmApO2NvbnN0IHA9W107bGV0IG0sYix5O2ZvcihtPTA7bTxpO20rKyl7eT1uZXcgVWludDhBcnJheShyKTtuJiZ5LmZpbGwobik7cC5wdXNoKHkpfWNvbnN0IHc9dC5sZW5ndGgseD10WzBdLFM9eFswXS5sZW5ndGgsaz14Lmxlbmd0aCxDPWxvZzIodyksdj1bXTtpZighZSl7di5wdXNoKHt4OmE8PTE/MzoyLHk6LTF9KTswPT09YSYmdi5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IEY9W107bGV0IFQsTyxNLEQsUixOLEUsTCxqLF8sVTtlJiYoVD1uZXcgUmVhZGVyKGcuZGF0YSxnLnN0YXJ0LGcuZW5kKSk7Zm9yKG09Qy0xO20+PTA7bS0tKXtPPWU/ZGVjb2RlTU1SQml0bWFwKFQsYyxsLCEwKTpkZWNvZGVCaXRtYXAoITEsYyxsLGEsITEsbnVsbCx2LGcpO0ZbbV09T31mb3IoTT0wO008bDtNKyspZm9yKEQ9MDtEPGM7RCsrKXtSPTA7Tj0wO2ZvcihiPUMtMTtiPj0wO2ItLSl7Ul49RltiXVtNXVtEXTtOfD1SPDxifUU9dFtOXTtMPWgrTSpmK0QqZD4+ODtqPXUrTSpkLUQqZj4+ODtpZihMPj0wJiZMK1M8PXImJmo+PTAmJmorazw9aSlmb3IobT0wO208azttKyspe1U9cFtqK21dO189RVttXTtmb3IoYj0wO2I8UztiKyspVVtMK2JdfD1fW2JdfWVsc2V7bGV0IGUsdDtmb3IobT0wO208azttKyspe3Q9aittO2lmKCEodDwwfHx0Pj1pKSl7VT1wW3RdO189RVttXTtmb3IoYj0wO2I8UztiKyspe2U9TCtiO2U+PTAmJmU8ciYmKFVbZV18PV9bYl0pfX19fX1yZXR1cm4gcH0oZS5tbXIsbixlLnRlbXBsYXRlLHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLmVuYWJsZVNraXAsZS5jb21iaW5hdGlvbk9wZXJhdG9yLGUuZ3JpZFdpZHRoLGUuZ3JpZEhlaWdodCxlLmdyaWRPZmZzZXRYLGUuZ3JpZE9mZnNldFksZS5ncmlkVmVjdG9yWCxlLmdyaWRWZWN0b3JZLG8pO3RoaXMuZHJhd0JpdG1hcChzLGMpfW9uSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiguLi5hcmd1bWVudHMpfW9uVGFibGVzKGUsdCxhLHIpe2xldCBpPXRoaXMuY3VzdG9tVGFibGVzO2l8fCh0aGlzLmN1c3RvbVRhYmxlcz1pPXt9KTtpW2VdPWZ1bmN0aW9uIGRlY29kZVRhYmxlc1NlZ21lbnQoZSx0LGEpe2NvbnN0IHI9ZVt0XSxpPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihlLHQrMSksbj00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzUpLHM9bmV3IFJlYWRlcihlLHQrOSxhKSxvPTErKHI+PjEmNyksYz0xKyhyPj40JjcpLGw9W107bGV0IGgsdSxkPWk7ZG97aD1zLnJlYWRCaXRzKG8pO3U9cy5yZWFkQml0cyhjKTtsLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtkLGgsdSwwXSkpO2QrPTE8PHV9d2hpbGUoZDxuKTtoPXMucmVhZEJpdHMobyk7bC5wdXNoKG5ldyBIdWZmbWFuTGluZShbaS0xLGgsMzIsMCwibG93ZXIiXSkpO2g9cy5yZWFkQml0cyhvKTtsLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtuLGgsMzIsMF0pKTtpZigxJnIpe2g9cy5yZWFkQml0cyhvKTtsLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtoLDBdKSl9cmV0dXJuIG5ldyBIdWZmbWFuVGFibGUobCwhMSl9KHQsYSxyKX19Y2xhc3MgSHVmZm1hbkxpbmV7Y29uc3RydWN0b3IoZSl7aWYoMj09PWUubGVuZ3RoKXt0aGlzLmlzT09CPSEwO3RoaXMucmFuZ2VMb3c9MDt0aGlzLnByZWZpeExlbmd0aD1lWzBdO3RoaXMucmFuZ2VMZW5ndGg9MDt0aGlzLnByZWZpeENvZGU9ZVsxXTt0aGlzLmlzTG93ZXJSYW5nZT0hMX1lbHNle3RoaXMuaXNPT0I9ITE7dGhpcy5yYW5nZUxvdz1lWzBdO3RoaXMucHJlZml4TGVuZ3RoPWVbMV07dGhpcy5yYW5nZUxlbmd0aD1lWzJdO3RoaXMucHJlZml4Q29kZT1lWzNdO3RoaXMuaXNMb3dlclJhbmdlPSJsb3dlciI9PT1lWzRdfX19Y2xhc3MgSHVmZm1hblRyZWVOb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMuY2hpbGRyZW49W107aWYoZSl7dGhpcy5pc0xlYWY9ITA7dGhpcy5yYW5nZUxlbmd0aD1lLnJhbmdlTGVuZ3RoO3RoaXMucmFuZ2VMb3c9ZS5yYW5nZUxvdzt0aGlzLmlzTG93ZXJSYW5nZT1lLmlzTG93ZXJSYW5nZTt0aGlzLmlzT09CPWUuaXNPT0J9ZWxzZSB0aGlzLmlzTGVhZj0hMX1idWlsZFRyZWUoZSx0KXtjb25zdCBhPWUucHJlZml4Q29kZT4+dCYxO2lmKHQ8PTApdGhpcy5jaGlsZHJlblthXT1uZXcgSHVmZm1hblRyZWVOb2RlKGUpO2Vsc2V7bGV0IHI9dGhpcy5jaGlsZHJlblthXTtyfHwodGhpcy5jaGlsZHJlblthXT1yPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCkpO3IuYnVpbGRUcmVlKGUsdC0xKX19ZGVjb2RlTm9kZShlKXtpZih0aGlzLmlzTGVhZil7aWYodGhpcy5pc09PQilyZXR1cm4gbnVsbDtjb25zdCB0PWUucmVhZEJpdHModGhpcy5yYW5nZUxlbmd0aCk7cmV0dXJuIHRoaXMucmFuZ2VMb3crKHRoaXMuaXNMb3dlclJhbmdlPy10OnQpfWNvbnN0IHQ9dGhpcy5jaGlsZHJlbltlLnJlYWRCaXQoKV07aWYoIXQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBkYXRhIik7cmV0dXJuIHQuZGVjb2RlTm9kZShlKX19Y2xhc3MgSHVmZm1hblRhYmxle2NvbnN0cnVjdG9yKGUsdCl7dHx8dGhpcy5hc3NpZ25QcmVmaXhDb2RlcyhlKTt0aGlzLnJvb3ROb2RlPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCk7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWVbdF07YS5wcmVmaXhMZW5ndGg+MCYmdGhpcy5yb290Tm9kZS5idWlsZFRyZWUoYSxhLnByZWZpeExlbmd0aC0xKX19ZGVjb2RlKGUpe3JldHVybiB0aGlzLnJvb3ROb2RlLmRlY29kZU5vZGUoZSl9YXNzaWduUHJlZml4Q29kZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKyspYT1NYXRoLm1heChhLGVbcl0ucHJlZml4TGVuZ3RoKTtjb25zdCByPW5ldyBVaW50MzJBcnJheShhKzEpO2ZvcihsZXQgYT0wO2E8dDthKyspcltlW2FdLnByZWZpeExlbmd0aF0rKztsZXQgaSxuLHMsbz0xLGM9MDtyWzBdPTA7Zm9yKDtvPD1hOyl7Yz1jK3Jbby0xXTw8MTtpPWM7bj0wO2Zvcig7bjx0Oyl7cz1lW25dO2lmKHMucHJlZml4TGVuZ3RoPT09byl7cy5wcmVmaXhDb2RlPWk7aSsrfW4rK31vKyt9fX1jb25zdCBwcj17fTtmdW5jdGlvbiBnZXRTdGFuZGFyZFRhYmxlKGUpe2xldCB0LGE9cHJbZV07aWYoYSlyZXR1cm4gYTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2E9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtwcltlXT1hO3JldHVybiBhfWNsYXNzIFJlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWE7dGhpcy5wb3NpdGlvbj10O3RoaXMuc2hpZnQ9LTE7dGhpcy5jdXJyZW50Qnl0ZT0wfXJlYWRCaXQoKXtpZih0aGlzLnNoaWZ0PDApe2lmKHRoaXMucG9zaXRpb24+PXRoaXMuZW5kKXRocm93IG5ldyBKYmlnMkVycm9yKCJlbmQgb2YgZGF0YSB3aGlsZSByZWFkaW5nIGJpdCIpO3RoaXMuY3VycmVudEJ5dGU9dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK107dGhpcy5zaGlmdD03fWNvbnN0IGU9dGhpcy5jdXJyZW50Qnl0ZT4+dGhpcy5zaGlmdCYxO3RoaXMuc2hpZnQtLTtyZXR1cm4gZX1yZWFkQml0cyhlKXtsZXQgdCxhPTA7Zm9yKHQ9ZS0xO3Q+PTA7dC0tKWF8PXRoaXMucmVhZEJpdCgpPDx0O3JldHVybiBhfWJ5dGVBbGlnbigpe3RoaXMuc2hpZnQ9LTF9bmV4dCgpe3JldHVybiB0aGlzLnBvc2l0aW9uPj10aGlzLmVuZD8tMTp0aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXX19ZnVuY3Rpb24gZ2V0Q3VzdG9tSHVmZm1hblRhYmxlKGUsdCxhKXtsZXQgcj0wO2ZvcihsZXQgaT0wLG49dC5sZW5ndGg7aTxuO2krKyl7Y29uc3Qgbj1hW3RbaV1dO2lmKG4pe2lmKGU9PT1yKXJldHVybiBuO3IrK319dGhyb3cgbmV3IEpiaWcyRXJyb3IoImNhbid0IGZpbmQgY3VzdG9tIEh1ZmZtYW4gdGFibGUiKX1mdW5jdGlvbiByZWFkVW5jb21wcmVzc2VkQml0bWFwKGUsdCxhKXtjb25zdCByPVtdO2ZvcihsZXQgaT0wO2k8YTtpKyspe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkodCk7ci5wdXNoKGEpO2ZvcihsZXQgcj0wO3I8dDtyKyspYVtyXT1lLnJlYWRCaXQoKTtlLmJ5dGVBbGlnbigpfXJldHVybiByfWZ1bmN0aW9uIGRlY29kZU1NUkJpdG1hcChlLHQsYSxyKXtjb25zdCBpPW5ldyBDQ0lUVEZheERlY29kZXIoZSx7SzotMSxDb2x1bW5zOnQsUm93czphLEJsYWNrSXMxOiEwLEVuZE9mQmxvY2s6cn0pLG49W107bGV0IHMsbz0hMTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO24ucHVzaChlKTtsZXQgYT0tMTtmb3IobGV0IHI9MDtyPHQ7cisrKXtpZihhPDApe3M9aS5yZWFkTmV4dENoYXIoKTtpZigtMT09PXMpe3M9MDtvPSEwfWE9N31lW3JdPXM+PmEmMTthLS19fWlmKHImJiFvKXtjb25zdCBlPTU7Zm9yKGxldCB0PTA7dDxlJiYtMSE9PWkucmVhZE5leHRDaGFyKCk7dCsrKTt9cmV0dXJuIG59Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LHIuZGF0YSxyLnN0YXJ0LHIuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fWNsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7dGhpcy5kZWNvZGVJbWFnZSgpfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlcztjb25zdCB0PW5ldyBKYmlnMkltYWdlLGE9W107aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXRoaXMucGFyYW1zLmdldCgiSkJJRzJHbG9iYWxzIik7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IHQ9ZS5nZXRCeXRlcygpO2EucHVzaCh7ZGF0YTp0LHN0YXJ0OjAsZW5kOnQubGVuZ3RofSl9fWEucHVzaCh7ZGF0YTplLHN0YXJ0OjAsZW5kOmUubGVuZ3RofSk7Y29uc3Qgcj10LnBhcnNlQ2h1bmtzKGEpLGk9ci5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxpO2UrKylyW2VdXj0yNTU7dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1pO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY319Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe3VucmVhY2hhYmxlKCJKcHhTdHJlYW0ucmVhZEJsb2NrIil9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITB9YXN5bmMgZGVjb2RlSW1hZ2UoZSx0KXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7dGhpcy5idWZmZXI9YXdhaXQgSnB4SW1hZ2UuZGVjb2RlKGUsdCk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY319Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5jYWNoZWREYXRhPTA7dGhpcy5iaXRzQ2FjaGVkPTA7Y29uc3Qgcj00MDk2LGk9e2Vhcmx5Q2hhbmdlOmEsY29kZUxlbmd0aDo5LG5leHRDb2RlOjI1OCxkaWN0aW9uYXJ5VmFsdWVzOm5ldyBVaW50OEFycmF5KHIpLGRpY3Rpb25hcnlMZW5ndGhzOm5ldyBVaW50MTZBcnJheShyKSxkaWN0aW9uYXJ5UHJldkNvZGVzOm5ldyBVaW50MTZBcnJheShyKSxjdXJyZW50U2VxdWVuY2U6bmV3IFVpbnQ4QXJyYXkociksY3VycmVudFNlcXVlbmNlTGVuZ3RoOjB9O2ZvcihsZXQgZT0wO2U8MjU2OysrZSl7aS5kaWN0aW9uYXJ5VmFsdWVzW2VdPWU7aS5kaWN0aW9uYXJ5TGVuZ3Roc1tlXT0xfXRoaXMubHp3U3RhdGU9aX1yZWFkQml0cyhlKXtsZXQgdD10aGlzLmJpdHNDYWNoZWQsYT10aGlzLmNhY2hlZERhdGE7Zm9yKDt0PGU7KXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGUoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybiBudWxsfWE9YTw8OHxlO3QrPTh9dGhpcy5iaXRzQ2FjaGVkPXQtPWU7dGhpcy5jYWNoZWREYXRhPWE7dGhpcy5sYXN0Q29kZT1udWxsO3JldHVybiBhPj4+dCYoMTw8ZSktMX1yZWFkQmxvY2soKXtsZXQgZSx0LGEscj0xMDI0O2NvbnN0IGk9dGhpcy5sendTdGF0ZTtpZighaSlyZXR1cm47Y29uc3Qgbj1pLmVhcmx5Q2hhbmdlO2xldCBzPWkubmV4dENvZGU7Y29uc3Qgbz1pLmRpY3Rpb25hcnlWYWx1ZXMsYz1pLmRpY3Rpb25hcnlMZW5ndGhzLGw9aS5kaWN0aW9uYXJ5UHJldkNvZGVzO2xldCBoPWkuY29kZUxlbmd0aCx1PWkucHJldkNvZGU7Y29uc3QgZD1pLmN1cnJlbnRTZXF1ZW5jZTtsZXQgZj1pLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aCxnPTAscD10aGlzLmJ1ZmZlckxlbmd0aCxtPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK3IpO2ZvcihlPTA7ZTw1MTI7ZSsrKXtjb25zdCBlPXRoaXMucmVhZEJpdHMoaCksaT1mPjA7aWYoZTwyNTYpe2RbMF09ZTtmPTF9ZWxzZXtpZighKGU+PTI1OCkpe2lmKDI1Nj09PWUpe2g9OTtzPTI1ODtmPTA7Y29udGludWV9dGhpcy5lb2Y9ITA7ZGVsZXRlIHRoaXMubHp3U3RhdGU7YnJlYWt9aWYoZTxzKXtmPWNbZV07Zm9yKHQ9Zi0xLGE9ZTt0Pj0wO3QtLSl7ZFt0XT1vW2FdO2E9bFthXX19ZWxzZSBkW2YrK109ZFswXX1pZihpKXtsW3NdPXU7Y1tzXT1jW3VdKzE7b1tzXT1kWzBdO3MrKztoPXMrbiZzK24tMT9oOjB8TWF0aC5taW4oTWF0aC5sb2cocytuKS8uNjkzMTQ3MTgwNTU5OTQ1MysxLDEyKX11PWU7Zys9ZjtpZihyPGcpe2Rve3IrPTUxMn13aGlsZShyPGcpO209dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcil9Zm9yKHQ9MDt0PGY7dCsrKW1bcCsrXT1kW3RdfWkubmV4dENvZGU9cztpLmNvZGVMZW5ndGg9aDtpLnByZXZDb2RlPXU7aS5jdXJyZW50U2VxdWVuY2VMZW5ndGg9Zjt0aGlzLmJ1ZmZlckxlbmd0aD1wfX1jbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBlO2NvbnN0IHI9dGhpcy5wcmVkaWN0b3I9YS5nZXQoIlByZWRpY3RvciIpfHwxO2lmKHI8PTEpcmV0dXJuIGU7aWYoMiE9PXImJihyPDEwfHxyPjE1KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3QgaT10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbj10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxzPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9aSpuKzc+PjM7dGhpcy5yb3dCeXRlcz1zKmkqbis3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsaT10aGlzLmNvbG9ycyxuPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFuLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PWkpZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1uW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8aTsrK3MpYVt1KytdPW5bc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1pXStuW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MippO2ZvcihzPTA7czx0OysrcylhW3UrK109bltzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jm5bc10pPDw4KSsoMjU1Jm5bcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkrMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxpOysrdCl7aWYobDxyKXtvPW88PDh8MjU1Jm5bZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGgsbj10aGlzLmVuc3VyZUJ1ZmZlcihpK2UpO2xldCBzPW4uc3ViYXJyYXkoaS1lLGkpOzA9PT1zLmxlbmd0aCYmKHM9bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBvLGMsbCxoPWk7c3dpdGNoKGEpe2Nhc2UgMDpmb3Iobz0wO288ZTsrK28pbltoKytdPXJbb107YnJlYWs7Y2FzZSAxOmZvcihvPTA7bzx0OysrbyluW2grK109cltvXTtmb3IoO288ZTsrK28pe25baF09bltoLXRdK3Jbb10mMjU1O2grK31icmVhaztjYXNlIDI6Zm9yKG89MDtvPGU7KytvKW5baCsrXT1zW29dK3Jbb10mMjU1O2JyZWFrO2Nhc2UgMzpmb3Iobz0wO288dDsrK28pbltoKytdPShzW29dPj4xKStyW29dO2Zvcig7bzxlOysrbyl7bltoXT0oc1tvXStuW2gtdF0+PjEpK3Jbb10mMjU1O2grK31icmVhaztjYXNlIDQ6Zm9yKG89MDtvPHQ7KytvKXtjPXNbb107bD1yW29dO25baCsrXT1jK2x9Zm9yKDtvPGU7KytvKXtjPXNbb107Y29uc3QgZT1zW28tdF0sYT1uW2gtdF0saT1hK2MtZTtsZXQgdT1pLWE7dTwwJiYodT0tdSk7bGV0IGQ9aS1jO2Q8MCYmKGQ9LWQpO2xldCBmPWktZTtmPDAmJihmPS1mKTtsPXJbb107bltoKytdPXU8PWQmJnU8PWY/YStsOmQ8PWY/YytsOmUrbH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCl9dGhpcy5idWZmZXJMZW5ndGgrPWV9fWNsYXNzIFJ1bkxlbmd0aFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWVbMF07aWYocjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3RbYSsrXT1lWzFdO2lmKHI+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhyKTt0LnNldChlLGEpO2ErPXJ9fWVsc2V7cj0yNTctcjt0PXRoaXMuZW5zdXJlQnVmZmVyKGErcisxKTt0LmZpbGwoZVsxXSxhLGErcik7YSs9cn10aGlzLmJ1ZmZlckxlbmd0aD1hfX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpyPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9cjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbWFnZUlkPTA7dGhpcy5yZWZpbGwoKX1yZWZpbGwoKXt0aGlzLmJ1ZjE9dGhpcy5sZXhlci5nZXRPYmooKTt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX1zaGlmdCgpe2lmKHRoaXMuYnVmMiBpbnN0YW5jZW9mIENtZCYmIklEIj09PXRoaXMuYnVmMi5jbWQpe3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPW51bGx9ZWxzZXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfX10cnlTaGlmdCgpe3RyeXt0aGlzLnNoaWZ0KCk7cmV0dXJuITB9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2YgQ21kKXN3aXRjaCh0LmNtZCl7Y2FzZSJCSSI6cmV0dXJuIHRoaXMubWFrZUlubGluZUltYWdlKGUpO2Nhc2UiWyI6Y29uc3QgYT1bXTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIl0iKSYmdGhpcy5idWYxIT09d2E7KWEucHVzaCh0aGlzLmdldE9iaihlKSk7aWYodGhpcy5idWYxPT09d2Epe2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiBhO3Rocm93IG5ldyBQYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBhcnJheS4iKX10aGlzLnNoaWZ0KCk7cmV0dXJuIGE7Y2FzZSI8PCI6Y29uc3Qgcj1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09d2E7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXtpbmZvKCJNYWxmb3JtZWQgZGljdGlvbmFyeToga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO3RoaXMuc2hpZnQoKTtjb250aW51ZX1jb25zdCB0PXRoaXMuYnVmMS5uYW1lO3RoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT13YSlicmVhaztyLnNldCh0LHRoaXMuZ2V0T2JqKGUpKX1pZih0aGlzLmJ1ZjE9PT13YSl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIHI7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGRpY3Rpb25hcnkuIil9aWYoaXNDbWQodGhpcy5idWYyLCJzdHJlYW0iKSlyZXR1cm4gdGhpcy5hbGxvd1N0cmVhbXM/dGhpcy5tYWtlU3RyZWFtKHIsZSk6cjt0aGlzLnNoaWZ0KCk7cmV0dXJuIHI7ZGVmYXVsdDpyZXR1cm4gdH1pZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXtpZihOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuYnVmMSkmJmlzQ21kKHRoaXMuYnVmMiwiUiIpKXtjb25zdCBlPVJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0e2tub3duQ29tbWFuZHM6dH09dGhpcy5sZXhlcixhPWUucG9zO2xldCByLGksbj0wO2Zvcig7LTEhPT0ocj1lLmdldEJ5dGUoKSk7KWlmKDA9PT1uKW49Njk9PT1yPzE6MDtlbHNlIGlmKDE9PT1uKW49NzM9PT1yPzI6MDtlbHNlIGlmKDMyPT09cnx8MTA9PT1yfHwxMz09PXIpe2k9ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxNSkscz1hLmxlbmd0aDtpZigwPT09cylicmVhaztmb3IobGV0IGU9MDtlPHM7ZSsrKXtyPWFbZV07aWYoKDAhPT1yfHwwPT09YVtlKzFdKSYmKDEwIT09ciYmMTMhPT1yJiYocjwzMnx8cj4xMjcpKSl7bj0wO2JyZWFrfX1pZigyIT09biljb250aW51ZTtpZighdCl7d2FybigiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBgbGV4ZXIua25vd25Db21tYW5kc2AgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWNvbnN0IG89bmV3IExleGVyKG5ldyBTdHJlYW0oZS5wZWVrQnl0ZXMoNzUpKSx0KTtvLl9oZXhTdHJpbmdXYXJuPSgpPT57fTtsZXQgYz0wO2Zvcig7Oyl7Y29uc3QgZT1vLmdldE9iaigpO2lmKGU9PT13YSl7bj0wO2JyZWFrfWlmKGUgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9dFtlLmNtZF07aWYoIWEpe249MDticmVha31pZihhLnZhcmlhYmxlQXJncz9jPD1hLm51bUFyZ3M6Yz09PWEubnVtQXJncylicmVhaztjPTB9ZWxzZSBjKyt9aWYoMj09PW4pYnJlYWt9ZWxzZSBuPTA7aWYoLTE9PT1yKXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZDogUmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aG91dCBmaW5kaW5nIGEgdmFsaWQgRUkgbWFya2VyIik7aWYoaSl7d2FybignLi4uIHRyeWluZyB0byByZWNvdmVyIGJ5IHVzaW5nIHRoZSBsYXN0ICJFSSIgb2NjdXJyZW5jZS4nKTtlLnNraXAoLShlLnBvcy1pKSl9fWxldCBzPTQ7ZS5za2lwKC1zKTtyPWUucGVla0J5dGUoKTtlLnNraXAocyk7aXNXaGl0ZVNwYWNlKHIpfHxzLS07cmV0dXJuIGUucG9zLXMtYX1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGEscixpPSExO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PWEpe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6aT0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDpyPWUuZ2V0VWludDE2KCk7cj4yP2Uuc2tpcChyLTIpOmUuc2tpcCgtMil9aWYoaSlicmVha31jb25zdCBuPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigxMjY9PT1hKXtjb25zdCB0PWUucG9zO2E9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGEpOyl7ZS5za2lwKCk7YT1lLnBlZWtCeXRlKCl9aWYoNjI9PT1hKXtlLnNraXAoKTticmVha31pZihlLnBvcz50KXtjb25zdCB0PWUucGVla0J5dGVzKDIpO2lmKDY5PT09dFswXSYmNzM9PT10WzFdKWJyZWFrfX1jb25zdCByPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgQVNDSUk4NURlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSkmJjYyIT09YTspO2NvbnN0IHI9ZS5wb3MtdDtpZigtMT09PWEpe3dhcm4oIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWlubGluZVN0cmVhbVNraXBFSShlKXtsZXQgdCxhPTA7Zm9yKDstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMD09PWEpYT02OT09PXQ/MTowO2Vsc2UgaWYoMT09PWEpYT03Mz09PXQ/MjowO2Vsc2UgaWYoMj09PWEpYnJlYWt9bWFrZUlubGluZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPXQuc3RyZWFtLHI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIklEIikmJnRoaXMuYnVmMSE9PXdhOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXdhKWJyZWFrO3JbdF09dGhpcy5nZXRPYmooZSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihpPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZihyLkZ8fHIuRmlsdGVyKTtsZXQgcztpZihuIGluc3RhbmNlb2YgTmFtZSlzPW4ubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9dGhpcy54cmVmLmZldGNoSWZSZWYoblswXSk7ZSBpbnN0YW5jZW9mIE5hbWUmJihzPWUubmFtZSl9Y29uc3Qgbz1hLnBvcztsZXQgYyxsO3N3aXRjaChzKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmM9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGEpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmM9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yz10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztkZWZhdWx0OmM9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChhKX1pZihjPDFlMyYmaT4wKXtjb25zdCBlPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztsPWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxhPWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPGEtMTspdC5wdXNoKGVbcisrXTw8OHxlW3IrK10pO3I8YSYmdC5wdXNoKGVbcl0pO3JldHVybiBhKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGEuZ2V0Qnl0ZXMoaStjKSk7YS5wb3M9ZTtjb25zdCByPXRoaXMuaW1hZ2VDYWNoZVtsXTtpZih2b2lkIDAhPT1yKXt0aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7ci5yZXNldCgpO3JldHVybiByfX1jb25zdCBoPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IGUgaW4gciloLnNldChlLHJbZV0pO2xldCB1PWEubWFrZVN1YlN0cmVhbShvLGMsaCk7ZSYmKHU9ZS5jcmVhdGVTdHJlYW0odSxjKSk7dT10aGlzLmZpbHRlcih1LGgsYyk7dS5kaWN0PWg7aWYodm9pZCAwIT09bCl7dS5jYWNoZUtleT0iaW5saW5lX2ltZ18iKyArK3RoaXMuX2ltYWdlSWQ7dGhpcy5pbWFnZUNhY2hlW2xdPXV9dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiB1fSNxKGUpe2NvbnN0e3N0cmVhbTp0fT10aGlzLmxleGVyO3QucG9zPWU7Y29uc3QgYT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDBdKSxyPWEubGVuZ3RoLGk9W25ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTAxLDk3LDEwOV0pLG5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTddKV0sbj05LXI7Zm9yKDt0LnBvczx0LmVuZDspe2NvbnN0IHM9dC5wZWVrQnl0ZXMoMjA0OCksbz1zLmxlbmd0aC05O2lmKG88PTApYnJlYWs7bGV0IGM9MDtmb3IoO2M8bzspe2xldCBvPTA7Zm9yKDtvPHImJnNbYytvXT09PWFbb107KW8rKztpZihvPj1yKXtsZXQgcj0hMTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJnNbYytvK2ldPT09ZVtpXTspaSsrO2lmKGk+PW4pe3I9ITA7YnJlYWt9aWYoaT49dCl7aWYoaXNXaGl0ZVNwYWNlKHNbYytvK2ldKSl7aW5mbyhgRm91bmQgIiR7Ynl0ZXNUb1N0cmluZyhbLi4uYSwuLi5lXSl9IiB3aGVuIHNlYXJjaGluZyBmb3IgZW5kc3RyZWFtIGNvbW1hbmQuYCk7cj0hMH1icmVha319aWYocil7dC5wb3MrPWM7cmV0dXJuIHQucG9zLWV9fWMrK310LnBvcys9b31yZXR1cm4tMX1tYWtlU3RyZWFtKGUsdCl7Y29uc3QgYT10aGlzLmxleGVyO2xldCByPWEuc3RyZWFtO2Euc2tpcFRvTmV4dExpbmUoKTtjb25zdCBpPXIucG9zLTE7bGV0IG49ZS5nZXQoIkxlbmd0aCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXtpbmZvKGBCYWQgbGVuZ3RoICIke24mJm4udG9TdHJpbmcoKX0iIGluIHN0cmVhbS5gKTtuPTB9ci5wb3M9aStuO2EubmV4dENoYXIoKTtpZih0aGlzLnRyeVNoaWZ0KCkmJmlzQ21kKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7bj10aGlzLiNxKGkpO2lmKG48MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIik7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3I9ci5tYWtlU3ViU3RyZWFtKGksbixlKTt0JiYocj10LmNyZWF0ZVN0cmVhbShyLG4pKTtyPXRoaXMuZmlsdGVyKHIsZSxuKTtyLmRpY3Q9ZTtyZXR1cm4gcn1maWx0ZXIoZSx0LGEpe2xldCByPXQuZ2V0KCJGIiwiRmlsdGVyIiksaT10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKHIgaW5zdGFuY2VvZiBOYW1lKXtBcnJheS5pc0FycmF5KGkpJiZ3YXJuKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUsci5uYW1lLGEsaSl9bGV0IG49YTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCB0PXIsYT1pO2ZvcihsZXQgcz0wLG89dC5sZW5ndGg7czxvOysrcyl7cj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W3NdKTtpZighKHIgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtyfSJgKTtpPW51bGw7QXJyYXkuaXNBcnJheShhKSYmcyBpbiBhJiYoaT10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW3NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxyLm5hbWUsbixpKTtuPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEscil7aWYoMD09PWEpe3dhcm4oYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfXRyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIHI/bmV3IFByZWRpY3RvclN0cmVhbShuZXcgRmxhdGVTdHJlYW0oZSxhKSxhLHIpOm5ldyBGbGF0ZVN0cmVhbShlLGEpO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtpZihyKXtyLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9ci5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBMWldTdHJlYW0oZSxhLHQpLGEscil9cmV0dXJuIG5ldyBMWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBKcGVnU3RyZWFtKGUsYSxyKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOnJldHVybiBuZXcgSnB4U3RyZWFtKGUsYSxyKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBBc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpyZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKGUsYSxyKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IEpiaWcyU3RyZWFtKGUsYSxyKX13YXJuKGBGaWx0ZXIgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7cmV0dXJuIGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgTnVsbFN0cmVhbX19fWNvbnN0IG1yPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9ITEsYT0wLHI9MTtpZig0NT09PWUpe3I9LTE7ZT10aGlzLm5leHRDaGFyKCk7NDU9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpfWVsc2UgNDM9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpO2lmKDEwPT09ZXx8MTM9PT1lKWRve2U9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKDEwPT09ZXx8MTM9PT1lKTtpZig0Nj09PWUpe2E9MTA7ZT10aGlzLm5leHRDaGFyKCl9aWYoZTw0OHx8ZT41Nyl7Y29uc3QgdD1gSW52YWxpZCBudW1iZXI6ICR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0gKGNoYXJDb2RlICR7ZX0pYDtpZihpc1doaXRlU3BhY2UoZSl8fDQwPT09ZXx8NjA9PT1lfHwtMT09PWUpe2luZm8oYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgRm9ybWF0RXJyb3IodCl9bGV0IGk9ZS00OCxuPTAscz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodCluPTEwKm4rcjtlbHNlezAhPT1hJiYoYSo9MTApO2k9MTAqaStyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKXdhcm4oIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtzPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKGkvPWEpO3QmJihpKj0xMCoqKHMqbikpO3JldHVybiByKml9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgcj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxyKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgYS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjpyPXRoaXMubmV4dENoYXIoKTtzd2l0Y2gocil7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmEucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDphLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6YS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6YS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmEucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1JnI7cj10aGlzLm5leHRDaGFyKCk7aT0hMDtpZihyPj00OCYmcjw9NTUpe2U9KGU8PDMpKygxNSZyKTtyPXRoaXMubmV4dENoYXIoKTtpZihyPj00OCYmcjw9NTUpe2k9ITE7ZT0oZTw8MykrKDE1JnIpfX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyKSl9YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyKSl9aWYodClicmVhaztpfHwocj10aGlzLm5leHRDaGFyKCkpfXJldHVybiBhLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFtcltlXTspaWYoMzU9PT1lKXtlPXRoaXMubmV4dENoYXIoKTtpZihtcltlXSl7d2FybigiTGV4ZXJfZ2V0TmFtZTogTlVNQkVSIFNJR04gKCMpIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIGhleGFkZWNpbWFsIG51bWJlci4iKTthLnB1c2goIiMiKTticmVha31jb25zdCByPXRvSGV4RGlnaXQoZSk7aWYoLTEhPT1yKXt0PWU7ZT10aGlzLm5leHRDaGFyKCk7Y29uc3QgaT10b0hleERpZ2l0KGUpO2lmKC0xPT09aSl7d2FybihgTGV4ZXJfZ2V0TmFtZTogSWxsZWdhbCBkaWdpdCAoJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSkgaW4gaGV4YWRlY2ltYWwgbnVtYmVyLmApO2EucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7aWYobXJbZV0pYnJlYWs7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI8PDR8aSkpfWVsc2UgYS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTthLmxlbmd0aD4xMjcmJndhcm4oYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHthLmxlbmd0aH1gKTtyZXR1cm4gTmFtZS5nZXQoYS5qb2luKCIiKSl9X2hleFN0cmluZ1dhcm4oZSl7NSE9dGhpcy5faGV4U3RyaW5nTnVtV2FybisrP3RoaXMuX2hleFN0cmluZ051bVdhcm4+NXx8d2FybihgZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgaW52YWxpZCBjaGFyYWN0ZXI6ICR7ZX1gKTp3YXJuKCJnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBhZGRpdGlvbmFsIGludmFsaWQgY2hhcmFjdGVycy4iKX1nZXRIZXhTdHJpbmcoKXtjb25zdCBlPXRoaXMuc3RyQnVmO2UubGVuZ3RoPTA7bGV0IHQ9dGhpcy5jdXJyZW50Q2hhcixhPS0xLHI9LTE7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO2Zvcig7Oyl7aWYodDwwKXt3YXJuKCJVbnRlcm1pbmF0ZWQgaGV4IHN0cmluZyIpO2JyZWFrfWlmKDYyPT09dCl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEhPT1tclt0XSl7cj10b0hleERpZ2l0KHQpO2lmKC0xPT09cil0aGlzLl9oZXhTdHJpbmdXYXJuKHQpO2Vsc2UgaWYoLTE9PT1hKWE9cjtlbHNle2UucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGE8PDR8cikpO2E9LTF9dD10aGlzLm5leHRDaGFyKCl9ZWxzZSB0PXRoaXMubmV4dENoYXIoKX0tMSE9PWEmJmUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGE8PDQpKTtyZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIHdhO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PW1yW3RdKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIHRoaXMuZ2V0TnVtYmVyKCk7Y2FzZSA0MDpyZXR1cm4gdGhpcy5nZXRTdHJpbmcoKTtjYXNlIDQ3OnJldHVybiB0aGlzLmdldE5hbWUoKTtjYXNlIDkxOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiWyIpO2Nhc2UgOTM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPDwiKX1yZXR1cm4gdGhpcy5nZXRIZXhTdHJpbmcoKTtjYXNlIDYyOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYyPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI+PiIpfXJldHVybiBDbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ7Iik7Y2FzZSAxMjU6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ9Iik7Y2FzZSA0MTp0aGlzLm5leHRDaGFyKCk7dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldChhKX19Y29uc3Qgcj10aGlzLmtub3duQ29tbWFuZHM7bGV0IGk9dm9pZCAwIT09cj8uW2FdO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIW1yW3RdOyl7Y29uc3QgZT1hK1N0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYoaSYmdm9pZCAwPT09cltlXSlicmVhaztpZigxMjg9PT1hLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYENvbW1hbmQgdG9rZW4gdG9vIGxvbmc6ICR7YS5sZW5ndGh9YCk7YT1lO2k9dm9pZCAwIT09cj8uW2FdfWlmKCJ0cnVlIj09PWEpcmV0dXJuITA7aWYoImZhbHNlIj09PWEpcmV0dXJuITE7aWYoIm51bGwiPT09YSlyZXR1cm4gbnVsbDsiQkkiPT09YSYmKHRoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz10aGlzLnN0cmVhbS5wb3MpO3JldHVybiBDbWQuZ2V0KGEpfXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsYT0hMSl7Y29uc3Qgcj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoYT9yPj0wOnI+MCkpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksYT10LmdldE9iaigpLHI9dC5nZXRPYmooKSxpPXQuZ2V0T2JqKCksbj10LmdldE9iaigpO2xldCBzLG87aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZOdW1iZXIuaXNJbnRlZ2VyKHIpJiZpc0NtZChpLCJvYmoiKSYmbiBpbnN0YW5jZW9mIERpY3QmJiJudW1iZXIiPT10eXBlb2Yocz1uLmdldCgiTGluZWFyaXplZCIpKSYmcz4wKSlyZXR1cm4gbnVsbDtpZigobz1nZXRJbnQobiwiTCIpKSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcignVGhlICJMIiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2VzIG5vdCBlcXVhbCB0aGUgc3RyZWFtIGxlbmd0aC4nKTtyZXR1cm57bGVuZ3RoOm8saGludHM6ZnVuY3Rpb24gZ2V0SGludHMoZSl7Y29uc3QgdD1lLmdldCgiSCIpO2xldCBhO2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09KGE9dC5sZW5ndGgpfHw0PT09YSkpe2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGE9dFtlXTtpZighKE51bWJlci5pc0ludGVnZXIoYSkmJmE+MCkpdGhyb3cgbmV3IEVycm9yKGBIaW50ICgke2V9KSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJIaW50IGFycmF5IGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX0obiksb2JqZWN0TnVtYmVyRmlyc3Q6Z2V0SW50KG4sIk8iKSxlbmRGaXJzdDpnZXRJbnQobiwiRSIpLG51bVBhZ2VzOmdldEludChuLCJOIiksbWFpblhSZWZFbnRyaWVzT2Zmc2V0OmdldEludChuLCJUIikscGFnZUZpcnN0Om4uaGFzKCJQIik/Z2V0SW50KG4sIlAiLCEwKTowfX19Y29uc3QgYnI9WyJBZG9iZS1HQjEtVUNTMiIsIkFkb2JlLUNOUzEtVUNTMiIsIkFkb2JlLUphcGFuMS1VQ1MyIiwiQWRvYmUtS29yZWExLVVDUzIiLCI3OC1FVUMtSCIsIjc4LUVVQy1WIiwiNzgtSCIsIjc4LVJLU0otSCIsIjc4LVJLU0otViIsIjc4LVYiLCI3OG1zLVJLU0otSCIsIjc4bXMtUktTSi1WIiwiODNwdi1SS1NKLUgiLCI5MG1zLVJLU0otSCIsIjkwbXMtUktTSi1WIiwiOTBtc3AtUktTSi1IIiwiOTBtc3AtUktTSi1WIiwiOTBwdi1SS1NKLUgiLCI5MHB2LVJLU0otViIsIkFkZC1IIiwiQWRkLVJLU0otSCIsIkFkZC1SS1NKLVYiLCJBZGQtViIsIkFkb2JlLUNOUzEtMCIsIkFkb2JlLUNOUzEtMSIsIkFkb2JlLUNOUzEtMiIsIkFkb2JlLUNOUzEtMyIsIkFkb2JlLUNOUzEtNCIsIkFkb2JlLUNOUzEtNSIsIkFkb2JlLUNOUzEtNiIsIkFkb2JlLUdCMS0wIiwiQWRvYmUtR0IxLTEiLCJBZG9iZS1HQjEtMiIsIkFkb2JlLUdCMS0zIiwiQWRvYmUtR0IxLTQiLCJBZG9iZS1HQjEtNSIsIkFkb2JlLUphcGFuMS0wIiwiQWRvYmUtSmFwYW4xLTEiLCJBZG9iZS1KYXBhbjEtMiIsIkFkb2JlLUphcGFuMS0zIiwiQWRvYmUtSmFwYW4xLTQiLCJBZG9iZS1KYXBhbjEtNSIsIkFkb2JlLUphcGFuMS02IiwiQWRvYmUtS29yZWExLTAiLCJBZG9iZS1Lb3JlYTEtMSIsIkFkb2JlLUtvcmVhMS0yIiwiQjUtSCIsIkI1LVYiLCJCNXBjLUgiLCJCNXBjLVYiLCJDTlMtRVVDLUgiLCJDTlMtRVVDLVYiLCJDTlMxLUgiLCJDTlMxLVYiLCJDTlMyLUgiLCJDTlMyLVYiLCJFVEhLLUI1LUgiLCJFVEhLLUI1LVYiLCJFVGVuLUI1LUgiLCJFVGVuLUI1LVYiLCJFVGVubXMtQjUtSCIsIkVUZW5tcy1CNS1WIiwiRVVDLUgiLCJFVUMtViIsIkV4dC1IIiwiRXh0LVJLU0otSCIsIkV4dC1SS1NKLVYiLCJFeHQtViIsIkdCLUVVQy1IIiwiR0ItRVVDLVYiLCJHQi1IIiwiR0ItViIsIkdCSy1FVUMtSCIsIkdCSy1FVUMtViIsIkdCSzJLLUgiLCJHQksySy1WIiwiR0JLcC1FVUMtSCIsIkdCS3AtRVVDLVYiLCJHQlQtRVVDLUgiLCJHQlQtRVVDLVYiLCJHQlQtSCIsIkdCVC1WIiwiR0JUcGMtRVVDLUgiLCJHQlRwYy1FVUMtViIsIkdCcGMtRVVDLUgiLCJHQnBjLUVVQy1WIiwiSCIsIkhLZGxhLUI1LUgiLCJIS2RsYS1CNS1WIiwiSEtkbGItQjUtSCIsIkhLZGxiLUI1LVYiLCJIS2djY3MtQjUtSCIsIkhLZ2Njcy1CNS1WIiwiSEttMzE0LUI1LUgiLCJIS20zMTQtQjUtViIsIkhLbTQ3MS1CNS1IIiwiSEttNDcxLUI1LVYiLCJIS3Njcy1CNS1IIiwiSEtzY3MtQjUtViIsIkhhbmtha3UiLCJIaXJhZ2FuYSIsIktTQy1FVUMtSCIsIktTQy1FVUMtViIsIktTQy1IIiwiS1NDLUpvaGFiLUgiLCJLU0MtSm9oYWItViIsIktTQy1WIiwiS1NDbXMtVUhDLUgiLCJLU0Ntcy1VSEMtSFctSCIsIktTQ21zLVVIQy1IVy1WIiwiS1NDbXMtVUhDLVYiLCJLU0NwYy1FVUMtSCIsIktTQ3BjLUVVQy1WIiwiS2F0YWthbmEiLCJOV1AtSCIsIk5XUC1WIiwiUktTSi1IIiwiUktTSi1WIiwiUm9tYW4iLCJVbmlDTlMtVUNTMi1IIiwiVW5pQ05TLVVDUzItViIsIlVuaUNOUy1VVEYxNi1IIiwiVW5pQ05TLVVURjE2LVYiLCJVbmlDTlMtVVRGMzItSCIsIlVuaUNOUy1VVEYzMi1WIiwiVW5pQ05TLVVURjgtSCIsIlVuaUNOUy1VVEY4LVYiLCJVbmlHQi1VQ1MyLUgiLCJVbmlHQi1VQ1MyLVYiLCJVbmlHQi1VVEYxNi1IIiwiVW5pR0ItVVRGMTYtViIsIlVuaUdCLVVURjMyLUgiLCJVbmlHQi1VVEYzMi1WIiwiVW5pR0ItVVRGOC1IIiwiVW5pR0ItVVRGOC1WIiwiVW5pSklTLVVDUzItSCIsIlVuaUpJUy1VQ1MyLUhXLUgiLCJVbmlKSVMtVUNTMi1IVy1WIiwiVW5pSklTLVVDUzItViIsIlVuaUpJUy1VVEYxNi1IIiwiVW5pSklTLVVURjE2LVYiLCJVbmlKSVMtVVRGMzItSCIsIlVuaUpJUy1VVEYzMi1WIiwiVW5pSklTLVVURjgtSCIsIlVuaUpJUy1VVEY4LVYiLCJVbmlKSVMyMDA0LVVURjE2LUgiLCJVbmlKSVMyMDA0LVVURjE2LVYiLCJVbmlKSVMyMDA0LVVURjMyLUgiLCJVbmlKSVMyMDA0LVVURjMyLVYiLCJVbmlKSVMyMDA0LVVURjgtSCIsIlVuaUpJUzIwMDQtVVRGOC1WIiwiVW5pSklTUHJvLVVDUzItSFctViIsIlVuaUpJU1Byby1VQ1MyLVYiLCJVbmlKSVNQcm8tVVRGOC1WIiwiVW5pSklTWDAyMTMtVVRGMzItSCIsIlVuaUpJU1gwMjEzLVVURjMyLVYiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItSCIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1WIiwiVW5pS1MtVUNTMi1IIiwiVW5pS1MtVUNTMi1WIiwiVW5pS1MtVVRGMTYtSCIsIlVuaUtTLVVURjE2LVYiLCJVbmlLUy1VVEYzMi1IIiwiVW5pS1MtVVRGMzItViIsIlVuaUtTLVVURjgtSCIsIlVuaUtTLVVURjgtViIsIlYiLCJXUC1TeW1ib2wiXSx5cj0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT55cil0aHJvdyBuZXcgRXJyb3IoIm1hcENpZFJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2Zvcig7ZTw9dDspdGhpcy5fbWFwW2UrK109YSsrfW1hcEJmUmFuZ2UoZSx0LGEpe2lmKHQtZT55cil0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3Qgcj1hLmxlbmd0aC0xO2Zvcig7ZTw9dDspe3RoaXMuX21hcFtlKytdPWE7Y29uc3QgdD1hLmNoYXJDb2RlQXQocikrMTt0PjI1NT9hPWEuc3Vic3RyaW5nKDAsci0xKStTdHJpbmcuZnJvbUNoYXJDb2RlKGEuY2hhckNvZGVBdChyLTEpKzEpKyJcMCI6YT1hLnN1YnN0cmluZygwLHIpK1N0cmluZy5mcm9tQ2hhckNvZGUodCl9fW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxhKXtpZih0LWU+eXIpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoO2xldCBpPTA7Zm9yKDtlPD10JiZpPHI7KXt0aGlzLl9tYXBbZV09YVtpKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCByPTA7cjxhO3IrKyl2b2lkIDAhPT10W3JdJiZlKHIsdFtyXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IHI9MDtjb25zdCBpPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgbj0wLHM9aS5sZW5ndGg7bjxzO24rKyl7cj0ocjw8OHxlLmNoYXJDb2RlQXQodCtuKSk+Pj4wO2NvbnN0IHM9aVtuXTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDspe2NvbnN0IHQ9c1tlKytdLGk9c1tlKytdO2lmKHI+PXQmJnI8PWkpe2EuY2hhcmNvZGU9cjthLmxlbmd0aD1uKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9dFthXTtmb3IobGV0IHQ9MCxpPXIubGVuZ3RoO3Q8aTspe2NvbnN0IGk9clt0KytdLG49clt0KytdO2lmKGU+PWkmJmU8PW4pcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX1jbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX1mdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLiIpfWZ1bmN0aW9uIGV4cGVjdEludChlKXtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBpbnQuIil9ZnVuY3Rpb24gcGFyc2VCZkNoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PXdhKWJyZWFrO2lmKGlzQ21kKGEsImVuZGJmY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IGk9YTtlLm1hcE9uZShyLGkpfX1mdW5jdGlvbiBwYXJzZUJmUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PXdhKWJyZWFrO2lmKGlzQ21kKGEsImVuZGJmcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpfHwic3RyaW5nIj09dHlwZW9mIGEpe2NvbnN0IHQ9TnVtYmVyLmlzSW50ZWdlcihhKT9TdHJpbmcuZnJvbUNoYXJDb2RlKGEpOmE7ZS5tYXBCZlJhbmdlKHIsaSx0KX1lbHNle2lmKCFpc0NtZChhLCJbIikpYnJlYWs7e2E9dC5nZXRPYmooKTtjb25zdCBuPVtdO2Zvcig7IWlzQ21kKGEsIl0iKSYmYSE9PXdhOyl7bi5wdXNoKGEpO2E9dC5nZXRPYmooKX1lLm1hcEJmUmFuZ2VUb0FycmF5KHIsaSxuKX19fXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PXdhKWJyZWFrO2lmKGlzQ21kKGEsImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09d2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgbj1hO2UubWFwQ2lkUmFuZ2UocixpLG4pfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT13YSlicmVhaztpZihpc0NtZChhLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IGk9c3RyVG9JbnQoYSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShhLmxlbmd0aCxyLGkpfXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjb2Rlc3BhY2UgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VXTW9kZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTtOdW1iZXIuaXNJbnRlZ2VyKGEpJiYoZS52ZXJ0aWNhbD0hIWEpfWZ1bmN0aW9uIHBhcnNlQ01hcE5hbWUoZSx0KXtjb25zdCBhPXQuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIE5hbWUmJihlLm5hbWU9YS5uYW1lKX1hc3luYyBmdW5jdGlvbiBwYXJzZUNNYXAoZSx0LGEscil7bGV0IGksbjtlOmZvcig7Oyl0cnl7Y29uc3QgYT10LmdldE9iaigpO2lmKGE9PT13YSlicmVhaztpZihhIGluc3RhbmNlb2YgTmFtZSl7IldNb2RlIj09PWEubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWEubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO2k9YX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKGEuY21kKXtjYXNlImVuZGNtYXAiOmJyZWFrIGU7Y2FzZSJ1c2VjbWFwIjppIGluc3RhbmNlb2YgTmFtZSYmKG49aS5uYW1lKTticmVhaztjYXNlImJlZ2luY29kZXNwYWNlcmFuZ2UiOnBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luYmZjaGFyIjpwYXJzZUJmQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRjaGFyIjpwYXJzZUNpZENoYXIoZSx0KTticmVhaztjYXNlImJlZ2luYmZyYW5nZSI6cGFyc2VCZlJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZHJhbmdlIjpwYXJzZUNpZFJhbmdlKGUsdCl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFyJiZuJiYocj1uKTtyZXR1cm4gcj9leHRlbmRDTWFwKGUsYSxyKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGEpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChhLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWUuY29kZXNwYWNlUmFuZ2VzW2FdPXRbYV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsYSl9KSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWJyLmluY2x1ZGVzKGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBDTWFwIG5hbWU6ICIrZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjb25zdHtjTWFwRGF0YTphLGlzQ29tcHJlc3NlZDpyfT1hd2FpdCB0KGUpLGk9bmV3IENNYXAoITApO2lmKHIpcmV0dXJuKG5ldyBCaW5hcnlDTWFwUmVhZGVyKS5wcm9jZXNzKGEsaSwoZT0+ZXh0ZW5kQ01hcChpLHQsZSkpKTtjb25zdCBuPW5ldyBMZXhlcihuZXcgU3RyZWFtKGEpKTtyZXR1cm4gcGFyc2VDTWFwKGksbix0LG51bGwpfWNsYXNzIENNYXBGYWN0b3J5e3N0YXRpYyBhc3luYyBjcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0LHVzZUNNYXA6YX0pe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXJldHVybiBjcmVhdGVCdWlsdEluQ01hcChlLm5hbWUsdCk7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IHI9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBMZXhlcihlKSx0LGEpO3JldHVybiByLmlzSWRlbnRpdHlDTWFwP2NyZWF0ZUJ1aWx0SW5DTWFwKHIubmFtZSx0KTpyfXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgcmVxdWlyZWQuIil9fWNvbnN0IHdyPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiIiwiIiwiIiwiaXN1cGVyaW9yIiwiIiwiIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwiIiwiIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIiIsIkRvdGFjY2VudHNtYWxsIiwiIiwiIiwiTWFjcm9uc21hbGwiLCIiLCIiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCIiLCIiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0seHI9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJjZW50b2xkc3R5bGUiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsIiIsInF1ZXN0aW9uc21hbGwiLCIiLCIiLCIiLCIiLCJFdGhzbWFsbCIsIiIsIiIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCIiLCIiLCIiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbmluZmVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiYXN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiQWFjdXRlc21hbGwiLCJBZ3JhdmVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQXJpbmdzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWFjdXRlc21hbGwiLCJJZ3JhdmVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk90aWxkZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIiIsImVpZ2h0c3VwZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsIlNjYXJvbnNtYWxsIiwiIiwiY2VudGluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCIiLCJEaWVyZXNpc3NtYWxsIiwiIiwiQ2Fyb25zbWFsbCIsIm9zdXBlcmlvciIsImZpdmVpbmZlcmlvciIsIiIsImNvbW1haW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsIllhY3V0ZXNtYWxsIiwiIiwiZG9sbGFyaW5mZXJpb3IiLCIiLCIiLCJUaG9ybnNtYWxsIiwiIiwibmluZWluZmVyaW9yIiwiemVyb2luZmVyaW9yIiwiWmNhcm9uc21hbGwiLCJBRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWluZmVyaW9yIiwiTHNsYXNoc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCIiLCIiLCJPRXNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbnN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiIiwiWWRpZXJlc2lzc21hbGwiLCIiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9zdXBlcmlvciIsIiIsImVzdXBlcmlvciIsInJzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsIiIsImlzdXBlcmlvciIsInNzdXBlcmlvciIsImRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIiIsImxzdXBlcmlvciIsIk9nb25la3NtYWxsIiwiQnJldmVzbWFsbCIsIk1hY3JvbnNtYWxsIiwiYnN1cGVyaW9yIiwibnN1cGVyaW9yIiwibXN1cGVyaW9yIiwiY29tbWFzdXBlcmlvciIsInBlcmlvZHN1cGVyaW9yIiwiRG90YWNjZW50c21hbGwiLCJSaW5nc21hbGwiLCIiLCIiLCIiLCIiXSxTcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwic3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiJdLGtyPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXSxBcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJidWxsZXQiLCJFdXJvIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJmbG9yaW4iLCJxdW90ZWRibGJhc2UiLCJlbGxpcHNpcyIsImRhZ2dlciIsImRhZ2dlcmRibCIsImNpcmN1bWZsZXgiLCJwZXJ0aG91c2FuZCIsIlNjYXJvbiIsImd1aWxzaW5nbGxlZnQiLCJPRSIsImJ1bGxldCIsIlpjYXJvbiIsImJ1bGxldCIsImJ1bGxldCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwiYnVsbGV0IiwiZW5kYXNoIiwiZW1kYXNoIiwidGlsZGUiLCJ0cmFkZW1hcmsiLCJzY2Fyb24iLCJndWlsc2luZ2xyaWdodCIsIm9lIiwiYnVsbGV0IiwiemNhcm9uIiwiWWRpZXJlc2lzIiwic3BhY2UiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiY3VycmVuY3kiLCJ5ZW4iLCJicm9rZW5iYXIiLCJzZWN0aW9uIiwiZGllcmVzaXMiLCJjb3B5cmlnaHQiLCJvcmRmZW1pbmluZSIsImd1aWxsZW1vdGxlZnQiLCJsb2dpY2Fsbm90IiwiaHlwaGVuIiwicmVnaXN0ZXJlZCIsIm1hY3JvbiIsImRlZ3JlZSIsInBsdXNtaW51cyIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImFjdXRlIiwibXUiLCJwYXJhZ3JhcGgiLCJwZXJpb2RjZW50ZXJlZCIsImNlZGlsbGEiLCJvbmVzdXBlcmlvciIsIm9yZG1hc2N1bGluZSIsImd1aWxsZW1vdHJpZ2h0Iiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duIiwiQWdyYXZlIiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkFFIiwiQ2NlZGlsbGEiLCJFZ3JhdmUiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIklncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiRXRoIiwiTnRpbGRlIiwiT2dyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPdGlsZGUiLCJPZGllcmVzaXMiLCJtdWx0aXBseSIsIk9zbGFzaCIsIlVncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiWWFjdXRlIiwiVGhvcm4iLCJnZXJtYW5kYmxzIiwiYWdyYXZlIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhdGlsZGUiLCJhZGllcmVzaXMiLCJhcmluZyIsImFlIiwiY2NlZGlsbGEiLCJlZ3JhdmUiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiZXRoIiwibnRpbGRlIiwib2dyYXZlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvdGlsZGUiLCJvZGllcmVzaXMiLCJkaXZpZGUiLCJvc2xhc2giLCJ1Z3JhdmUiLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInlhY3V0ZSIsInRob3JuIiwieWRpZXJlc2lzIl0sQ3I9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXSx2cj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO2Z1bmN0aW9uIGdldEVuY29kaW5nKGUpe3N3aXRjaChlKXtjYXNlIldpbkFuc2lFbmNvZGluZyI6cmV0dXJuIEFyO2Nhc2UiU3RhbmRhcmRFbmNvZGluZyI6cmV0dXJuIGtyO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIFNyO2Nhc2UiU3ltYm9sU2V0RW5jb2RpbmciOnJldHVybiBDcjtjYXNlIlphcGZEaW5nYmF0c0VuY29kaW5nIjpyZXR1cm4gdnI7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHdyO2Nhc2UiTWFjRXhwZXJ0RW5jb2RpbmciOnJldHVybiB4cjtkZWZhdWx0OnJldHVybiBudWxsfX1jb25zdCBGcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQT02NTtlLkFFPTE5ODtlLkFFYWN1dGU9NTA4O2UuQUVtYWNyb249NDgyO2UuQUVzbWFsbD02MzQ2MjtlLkFhY3V0ZT0xOTM7ZS5BYWN1dGVzbWFsbD02MzQ1NztlLkFicmV2ZT0yNTg7ZS5BYnJldmVhY3V0ZT03ODU0O2UuQWJyZXZlY3lyaWxsaWM9MTIzMjtlLkFicmV2ZWRvdGJlbG93PTc4NjI7ZS5BYnJldmVncmF2ZT03ODU2O2UuQWJyZXZlaG9va2Fib3ZlPTc4NTg7ZS5BYnJldmV0aWxkZT03ODYwO2UuQWNhcm9uPTQ2MTtlLkFjaXJjbGU9OTM5ODtlLkFjaXJjdW1mbGV4PTE5NDtlLkFjaXJjdW1mbGV4YWN1dGU9Nzg0NDtlLkFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MjtlLkFjaXJjdW1mbGV4Z3JhdmU9Nzg0NjtlLkFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDg7ZS5BY2lyY3VtZmxleHNtYWxsPTYzNDU4O2UuQWNpcmN1bWZsZXh0aWxkZT03ODUwO2UuQWN1dGU9NjMxNzc7ZS5BY3V0ZXNtYWxsPTYzNDEyO2UuQWN5cmlsbGljPTEwNDA7ZS5BZGJsZ3JhdmU9NTEyO2UuQWRpZXJlc2lzPTE5NjtlLkFkaWVyZXNpc2N5cmlsbGljPTEyMzQ7ZS5BZGllcmVzaXNtYWNyb249NDc4O2UuQWRpZXJlc2lzc21hbGw9NjM0NjA7ZS5BZG90YmVsb3c9Nzg0MDtlLkFkb3RtYWNyb249NDgwO2UuQWdyYXZlPTE5MjtlLkFncmF2ZXNtYWxsPTYzNDU2O2UuQWhvb2thYm92ZT03ODQyO2UuQWllY3lyaWxsaWM9MTIzNjtlLkFpbnZlcnRlZGJyZXZlPTUxNDtlLkFscGhhPTkxMztlLkFscGhhdG9ub3M9OTAyO2UuQW1hY3Jvbj0yNTY7ZS5BbW9ub3NwYWNlPTY1MzEzO2UuQW9nb25laz0yNjA7ZS5BcmluZz0xOTc7ZS5BcmluZ2FjdXRlPTUwNjtlLkFyaW5nYmVsb3c9NzY4MDtlLkFyaW5nc21hbGw9NjM0NjE7ZS5Bc21hbGw9NjMzMjk7ZS5BdGlsZGU9MTk1O2UuQXRpbGRlc21hbGw9NjM0NTk7ZS5BeWJhcm1lbmlhbj0xMzI5O2UuQj02NjtlLkJjaXJjbGU9OTM5OTtlLkJkb3RhY2NlbnQ9NzY4MjtlLkJkb3RiZWxvdz03Njg0O2UuQmVjeXJpbGxpYz0xMDQxO2UuQmVuYXJtZW5pYW49MTMzMDtlLkJldGE9OTE0O2UuQmhvb2s9Mzg1O2UuQmxpbmViZWxvdz03Njg2O2UuQm1vbm9zcGFjZT02NTMxNDtlLkJyZXZlc21hbGw9NjMyMjA7ZS5Cc21hbGw9NjMzMzA7ZS5CdG9wYmFyPTM4NjtlLkM9Njc7ZS5DYWFybWVuaWFuPTEzNDI7ZS5DYWN1dGU9MjYyO2UuQ2Fyb249NjMxNzg7ZS5DYXJvbnNtYWxsPTYzMjIxO2UuQ2Nhcm9uPTI2ODtlLkNjZWRpbGxhPTE5OTtlLkNjZWRpbGxhYWN1dGU9NzY4ODtlLkNjZWRpbGxhc21hbGw9NjM0NjM7ZS5DY2lyY2xlPTk0MDA7ZS5DY2lyY3VtZmxleD0yNjQ7ZS5DZG90PTI2NjtlLkNkb3RhY2NlbnQ9MjY2O2UuQ2VkaWxsYXNtYWxsPTYzNDE2O2UuQ2hhYXJtZW5pYW49MTM1MztlLkNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTI7ZS5DaGVjeXJpbGxpYz0xMDYzO2UuQ2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNDtlLkNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDY7ZS5DaGVkaWVyZXNpc2N5cmlsbGljPTEyNjg7ZS5DaGVoYXJtZW5pYW49MTM0NztlLkNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI3O2UuQ2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA4O2UuQ2hpPTkzNTtlLkNob29rPTM5MTtlLkNpcmN1bWZsZXhzbWFsbD02MzIyMjtlLkNtb25vc3BhY2U9NjUzMTU7ZS5Db2FybWVuaWFuPTEzNjE7ZS5Dc21hbGw9NjMzMzE7ZS5EPTY4O2UuRFo9NDk3O2UuRFpjYXJvbj00NTI7ZS5EYWFybWVuaWFuPTEzMzI7ZS5EYWZyaWNhbj0zOTM7ZS5EY2Fyb249MjcwO2UuRGNlZGlsbGE9NzY5NjtlLkRjaXJjbGU9OTQwMTtlLkRjaXJjdW1mbGV4YmVsb3c9NzY5ODtlLkRjcm9hdD0yNzI7ZS5EZG90YWNjZW50PTc2OTA7ZS5EZG90YmVsb3c9NzY5MjtlLkRlY3lyaWxsaWM9MTA0NDtlLkRlaWNvcHRpYz0xMDA2O2UuRGVsdGE9ODcxMDtlLkRlbHRhZ3JlZWs9OTE2O2UuRGhvb2s9Mzk0O2UuRGllcmVzaXM9NjMxNzk7ZS5EaWVyZXNpc0FjdXRlPTYzMTgwO2UuRGllcmVzaXNHcmF2ZT02MzE4MTtlLkRpZXJlc2lzc21hbGw9NjM0MDA7ZS5EaWdhbW1hZ3JlZWs9OTg4O2UuRGplY3lyaWxsaWM9MTAyNjtlLkRsaW5lYmVsb3c9NzY5NDtlLkRtb25vc3BhY2U9NjUzMTY7ZS5Eb3RhY2NlbnRzbWFsbD02MzIyMztlLkRzbGFzaD0yNzI7ZS5Ec21hbGw9NjMzMzI7ZS5EdG9wYmFyPTM5NTtlLkR6PTQ5ODtlLkR6Y2Fyb249NDUzO2UuRHplYWJraGFzaWFuY3lyaWxsaWM9MTI0ODtlLkR6ZWN5cmlsbGljPTEwMjk7ZS5EemhlY3lyaWxsaWM9MTAzOTtlLkU9Njk7ZS5FYWN1dGU9MjAxO2UuRWFjdXRlc21hbGw9NjM0NjU7ZS5FYnJldmU9Mjc2O2UuRWNhcm9uPTI4MjtlLkVjZWRpbGxhYnJldmU9NzcwODtlLkVjaGFybWVuaWFuPTEzMzM7ZS5FY2lyY2xlPTk0MDI7ZS5FY2lyY3VtZmxleD0yMDI7ZS5FY2lyY3VtZmxleGFjdXRlPTc4NzA7ZS5FY2lyY3VtZmxleGJlbG93PTc3MDQ7ZS5FY2lyY3VtZmxleGRvdGJlbG93PTc4Nzg7ZS5FY2lyY3VtZmxleGdyYXZlPTc4NzI7ZS5FY2lyY3VtZmxleGhvb2thYm92ZT03ODc0O2UuRWNpcmN1bWZsZXhzbWFsbD02MzQ2NjtlLkVjaXJjdW1mbGV4dGlsZGU9Nzg3NjtlLkVjeXJpbGxpYz0xMDI4O2UuRWRibGdyYXZlPTUxNjtlLkVkaWVyZXNpcz0yMDM7ZS5FZGllcmVzaXNzbWFsbD02MzQ2NztlLkVkb3Q9Mjc4O2UuRWRvdGFjY2VudD0yNzg7ZS5FZG90YmVsb3c9Nzg2NDtlLkVmY3lyaWxsaWM9MTA2MDtlLkVncmF2ZT0yMDA7ZS5FZ3JhdmVzbWFsbD02MzQ2NDtlLkVoYXJtZW5pYW49MTMzNTtlLkVob29rYWJvdmU9Nzg2NjtlLkVpZ2h0cm9tYW49ODU1MTtlLkVpbnZlcnRlZGJyZXZlPTUxODtlLkVpb3RpZmllZGN5cmlsbGljPTExMjQ7ZS5FbGN5cmlsbGljPTEwNTE7ZS5FbGV2ZW5yb21hbj04NTU0O2UuRW1hY3Jvbj0yNzQ7ZS5FbWFjcm9uYWN1dGU9NzcwMjtlLkVtYWNyb25ncmF2ZT03NzAwO2UuRW1jeXJpbGxpYz0xMDUyO2UuRW1vbm9zcGFjZT02NTMxNztlLkVuY3lyaWxsaWM9MTA1MztlLkVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NjtlLkVuZz0zMzA7ZS5FbmdoZWN5cmlsbGljPTExODg7ZS5Fbmhvb2tjeXJpbGxpYz0xMjIzO2UuRW9nb25laz0yODA7ZS5Fb3Blbj00MDA7ZS5FcHNpbG9uPTkxNztlLkVwc2lsb250b25vcz05MDQ7ZS5FcmN5cmlsbGljPTEwNTY7ZS5FcmV2ZXJzZWQ9Mzk4O2UuRXJldmVyc2VkY3lyaWxsaWM9MTA2OTtlLkVzY3lyaWxsaWM9MTA1NztlLkVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NDtlLkVzaD00MjU7ZS5Fc21hbGw9NjMzMzM7ZS5FdGE9OTE5O2UuRXRhcm1lbmlhbj0xMzM2O2UuRXRhdG9ub3M9OTA1O2UuRXRoPTIwODtlLkV0aHNtYWxsPTYzNDcyO2UuRXRpbGRlPTc4Njg7ZS5FdGlsZGViZWxvdz03NzA2O2UuRXVybz04MzY0O2UuRXpoPTQzOTtlLkV6aGNhcm9uPTQ5NDtlLkV6aHJldmVyc2VkPTQ0MDtlLkY9NzA7ZS5GY2lyY2xlPTk0MDM7ZS5GZG90YWNjZW50PTc3MTA7ZS5GZWhhcm1lbmlhbj0xMzY2O2UuRmVpY29wdGljPTk5NjtlLkZob29rPTQwMTtlLkZpdGFjeXJpbGxpYz0xMTM4O2UuRml2ZXJvbWFuPTg1NDg7ZS5GbW9ub3NwYWNlPTY1MzE4O2UuRm91cnJvbWFuPTg1NDc7ZS5Gc21hbGw9NjMzMzQ7ZS5HPTcxO2UuR0JzcXVhcmU9MTMxOTE7ZS5HYWN1dGU9NTAwO2UuR2FtbWE9OTE1O2UuR2FtbWFhZnJpY2FuPTQwNDtlLkdhbmdpYWNvcHRpYz0xMDAyO2UuR2JyZXZlPTI4NjtlLkdjYXJvbj00ODY7ZS5HY2VkaWxsYT0yOTA7ZS5HY2lyY2xlPTk0MDQ7ZS5HY2lyY3VtZmxleD0yODQ7ZS5HY29tbWFhY2NlbnQ9MjkwO2UuR2RvdD0yODg7ZS5HZG90YWNjZW50PTI4ODtlLkdlY3lyaWxsaWM9MTA0MztlLkdoYWRhcm1lbmlhbj0xMzQ2O2UuR2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzI7ZS5HaGVzdHJva2VjeXJpbGxpYz0xMTcwO2UuR2hldXB0dXJuY3lyaWxsaWM9MTE2ODtlLkdob29rPTQwMztlLkdpbWFybWVuaWFuPTEzMzE7ZS5HamVjeXJpbGxpYz0xMDI3O2UuR21hY3Jvbj03NzEyO2UuR21vbm9zcGFjZT02NTMxOTtlLkdyYXZlPTYzMTgyO2UuR3JhdmVzbWFsbD02MzMyODtlLkdzbWFsbD02MzMzNTtlLkdzbWFsbGhvb2s9NjY3O2UuR3N0cm9rZT00ODQ7ZS5IPTcyO2UuSDE4NTMzPTk2Nzk7ZS5IMTg1NDM9OTY0MjtlLkgxODU1MT05NjQzO2UuSDIyMDczPTk2MzM7ZS5IUHNxdWFyZT0xMzI1OTtlLkhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MjtlLkhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMjtlLkhhcmRzaWduY3lyaWxsaWM9MTA2NjtlLkhiYXI9Mjk0O2UuSGJyZXZlYmVsb3c9NzcyMjtlLkhjZWRpbGxhPTc3MjA7ZS5IY2lyY2xlPTk0MDU7ZS5IY2lyY3VtZmxleD0yOTI7ZS5IZGllcmVzaXM9NzcxODtlLkhkb3RhY2NlbnQ9NzcxNDtlLkhkb3RiZWxvdz03NzE2O2UuSG1vbm9zcGFjZT02NTMyMDtlLkhvYXJtZW5pYW49MTM0NDtlLkhvcmljb3B0aWM9MWUzO2UuSHNtYWxsPTYzMzM2O2UuSHVuZ2FydW1sYXV0PTYzMTgzO2UuSHVuZ2FydW1sYXV0c21hbGw9NjMyMjQ7ZS5IenNxdWFyZT0xMzIwMDtlLkk9NzM7ZS5JQWN5cmlsbGljPTEwNzE7ZS5JSj0zMDY7ZS5JVWN5cmlsbGljPTEwNzA7ZS5JYWN1dGU9MjA1O2UuSWFjdXRlc21hbGw9NjM0Njk7ZS5JYnJldmU9MzAwO2UuSWNhcm9uPTQ2MztlLkljaXJjbGU9OTQwNjtlLkljaXJjdW1mbGV4PTIwNjtlLkljaXJjdW1mbGV4c21hbGw9NjM0NzA7ZS5JY3lyaWxsaWM9MTAzMDtlLklkYmxncmF2ZT01MjA7ZS5JZGllcmVzaXM9MjA3O2UuSWRpZXJlc2lzYWN1dGU9NzcyNjtlLklkaWVyZXNpc2N5cmlsbGljPTEyNTI7ZS5JZGllcmVzaXNzbWFsbD02MzQ3MTtlLklkb3Q9MzA0O2UuSWRvdGFjY2VudD0zMDQ7ZS5JZG90YmVsb3c9Nzg4MjtlLkllYnJldmVjeXJpbGxpYz0xMjM4O2UuSWVjeXJpbGxpYz0xMDQ1O2UuSWZyYWt0dXI9ODQ2NTtlLklncmF2ZT0yMDQ7ZS5JZ3JhdmVzbWFsbD02MzQ2ODtlLklob29rYWJvdmU9Nzg4MDtlLklpY3lyaWxsaWM9MTA0ODtlLklpbnZlcnRlZGJyZXZlPTUyMjtlLklpc2hvcnRjeXJpbGxpYz0xMDQ5O2UuSW1hY3Jvbj0yOTg7ZS5JbWFjcm9uY3lyaWxsaWM9MTI1MDtlLkltb25vc3BhY2U9NjUzMjE7ZS5Jbmlhcm1lbmlhbj0xMzM5O2UuSW9jeXJpbGxpYz0xMDI1O2UuSW9nb25laz0zMDI7ZS5Jb3RhPTkyMTtlLklvdGFhZnJpY2FuPTQwNjtlLklvdGFkaWVyZXNpcz05Mzg7ZS5Jb3RhdG9ub3M9OTA2O2UuSXNtYWxsPTYzMzM3O2UuSXN0cm9rZT00MDc7ZS5JdGlsZGU9Mjk2O2UuSXRpbGRlYmVsb3c9NzcyNDtlLkl6aGl0c2FjeXJpbGxpYz0xMTQwO2UuSXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MjtlLko9NzQ7ZS5KYWFybWVuaWFuPTEzNDU7ZS5KY2lyY2xlPTk0MDc7ZS5KY2lyY3VtZmxleD0zMDg7ZS5KZWN5cmlsbGljPTEwMzI7ZS5KaGVoYXJtZW5pYW49MTM1NTtlLkptb25vc3BhY2U9NjUzMjI7ZS5Kc21hbGw9NjMzMzg7ZS5LPTc1O2UuS0JzcXVhcmU9MTMxODk7ZS5LS3NxdWFyZT0xMzI2MTtlLkthYmFzaGtpcmN5cmlsbGljPTExODQ7ZS5LYWN1dGU9NzcyODtlLkthY3lyaWxsaWM9MTA1MDtlLkthZGVzY2VuZGVyY3lyaWxsaWM9MTE3ODtlLkthaG9va2N5cmlsbGljPTEyMTk7ZS5LYXBwYT05MjI7ZS5LYXN0cm9rZWN5cmlsbGljPTExODI7ZS5LYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MDtlLktjYXJvbj00ODg7ZS5LY2VkaWxsYT0zMTA7ZS5LY2lyY2xlPTk0MDg7ZS5LY29tbWFhY2NlbnQ9MzEwO2UuS2RvdGJlbG93PTc3MzA7ZS5LZWhhcm1lbmlhbj0xMzY0O2UuS2VuYXJtZW5pYW49MTM0MztlLktoYWN5cmlsbGljPTEwNjE7ZS5LaGVpY29wdGljPTk5ODtlLktob29rPTQwODtlLktqZWN5cmlsbGljPTEwMzY7ZS5LbGluZWJlbG93PTc3MzI7ZS5LbW9ub3NwYWNlPTY1MzIzO2UuS29wcGFjeXJpbGxpYz0xMTUyO2UuS29wcGFncmVlaz05OTA7ZS5Lc2ljeXJpbGxpYz0xMTM0O2UuS3NtYWxsPTYzMzM5O2UuTD03NjtlLkxKPTQ1NTtlLkxMPTYzMTY3O2UuTGFjdXRlPTMxMztlLkxhbWJkYT05MjM7ZS5MY2Fyb249MzE3O2UuTGNlZGlsbGE9MzE1O2UuTGNpcmNsZT05NDA5O2UuTGNpcmN1bWZsZXhiZWxvdz03NzQwO2UuTGNvbW1hYWNjZW50PTMxNTtlLkxkb3Q9MzE5O2UuTGRvdGFjY2VudD0zMTk7ZS5MZG90YmVsb3c9NzczNDtlLkxkb3RiZWxvd21hY3Jvbj03NzM2O2UuTGl3bmFybWVuaWFuPTEzNDA7ZS5Maj00NTY7ZS5MamVjeXJpbGxpYz0xMDMzO2UuTGxpbmViZWxvdz03NzM4O2UuTG1vbm9zcGFjZT02NTMyNDtlLkxzbGFzaD0zMjE7ZS5Mc2xhc2hzbWFsbD02MzIyNTtlLkxzbWFsbD02MzM0MDtlLk09Nzc7ZS5NQnNxdWFyZT0xMzE5MDtlLk1hY3Jvbj02MzE4NDtlLk1hY3JvbnNtYWxsPTYzNDA3O2UuTWFjdXRlPTc3NDI7ZS5NY2lyY2xlPTk0MTA7ZS5NZG90YWNjZW50PTc3NDQ7ZS5NZG90YmVsb3c9Nzc0NjtlLk1lbmFybWVuaWFuPTEzNDg7ZS5NbW9ub3NwYWNlPTY1MzI1O2UuTXNtYWxsPTYzMzQxO2UuTXR1cm5lZD00MTI7ZS5NdT05MjQ7ZS5OPTc4O2UuTko9NDU4O2UuTmFjdXRlPTMyMztlLk5jYXJvbj0zMjc7ZS5OY2VkaWxsYT0zMjU7ZS5OY2lyY2xlPTk0MTE7ZS5OY2lyY3VtZmxleGJlbG93PTc3NTQ7ZS5OY29tbWFhY2NlbnQ9MzI1O2UuTmRvdGFjY2VudD03NzQ4O2UuTmRvdGJlbG93PTc3NTA7ZS5OaG9va2xlZnQ9NDEzO2UuTmluZXJvbWFuPTg1NTI7ZS5Oaj00NTk7ZS5OamVjeXJpbGxpYz0xMDM0O2UuTmxpbmViZWxvdz03NzUyO2UuTm1vbm9zcGFjZT02NTMyNjtlLk5vd2FybWVuaWFuPTEzNTA7ZS5Oc21hbGw9NjMzNDI7ZS5OdGlsZGU9MjA5O2UuTnRpbGRlc21hbGw9NjM0NzM7ZS5OdT05MjU7ZS5PPTc5O2UuT0U9MzM4O2UuT0VzbWFsbD02MzIyNjtlLk9hY3V0ZT0yMTE7ZS5PYWN1dGVzbWFsbD02MzQ3NTtlLk9iYXJyZWRjeXJpbGxpYz0xMjU2O2UuT2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1ODtlLk9icmV2ZT0zMzQ7ZS5PY2Fyb249NDY1O2UuT2NlbnRlcmVkdGlsZGU9NDE1O2UuT2NpcmNsZT05NDEyO2UuT2NpcmN1bWZsZXg9MjEyO2UuT2NpcmN1bWZsZXhhY3V0ZT03ODg4O2UuT2NpcmN1bWZsZXhkb3RiZWxvdz03ODk2O2UuT2NpcmN1bWZsZXhncmF2ZT03ODkwO2UuT2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MjtlLk9jaXJjdW1mbGV4c21hbGw9NjM0NzY7ZS5PY2lyY3VtZmxleHRpbGRlPTc4OTQ7ZS5PY3lyaWxsaWM9MTA1NDtlLk9kYmxhY3V0ZT0zMzY7ZS5PZGJsZ3JhdmU9NTI0O2UuT2RpZXJlc2lzPTIxNDtlLk9kaWVyZXNpc2N5cmlsbGljPTEyNTQ7ZS5PZGllcmVzaXNzbWFsbD02MzQ3ODtlLk9kb3RiZWxvdz03ODg0O2UuT2dvbmVrc21hbGw9NjMyMjc7ZS5PZ3JhdmU9MjEwO2UuT2dyYXZlc21hbGw9NjM0NzQ7ZS5PaGFybWVuaWFuPTEzNjU7ZS5PaG09ODQ4NjtlLk9ob29rYWJvdmU9Nzg4NjtlLk9ob3JuPTQxNjtlLk9ob3JuYWN1dGU9Nzg5ODtlLk9ob3JuZG90YmVsb3c9NzkwNjtlLk9ob3JuZ3JhdmU9NzkwMDtlLk9ob3JuaG9va2Fib3ZlPTc5MDI7ZS5PaG9ybnRpbGRlPTc5MDQ7ZS5PaHVuZ2FydW1sYXV0PTMzNjtlLk9pPTQxODtlLk9pbnZlcnRlZGJyZXZlPTUyNjtlLk9tYWNyb249MzMyO2UuT21hY3JvbmFjdXRlPTc3NjI7ZS5PbWFjcm9uZ3JhdmU9Nzc2MDtlLk9tZWdhPTg0ODY7ZS5PbWVnYWN5cmlsbGljPTExMjA7ZS5PbWVnYWdyZWVrPTkzNztlLk9tZWdhcm91bmRjeXJpbGxpYz0xMTQ2O2UuT21lZ2F0aXRsb2N5cmlsbGljPTExNDg7ZS5PbWVnYXRvbm9zPTkxMTtlLk9taWNyb249OTI3O2UuT21pY3JvbnRvbm9zPTkwODtlLk9tb25vc3BhY2U9NjUzMjc7ZS5PbmVyb21hbj04NTQ0O2UuT29nb25laz00OTA7ZS5Pb2dvbmVrbWFjcm9uPTQ5MjtlLk9vcGVuPTM5MDtlLk9zbGFzaD0yMTY7ZS5Pc2xhc2hhY3V0ZT01MTA7ZS5Pc2xhc2hzbWFsbD02MzQ4MDtlLk9zbWFsbD02MzM0MztlLk9zdHJva2VhY3V0ZT01MTA7ZS5PdGN5cmlsbGljPTExNTA7ZS5PdGlsZGU9MjEzO2UuT3RpbGRlYWN1dGU9Nzc1NjtlLk90aWxkZWRpZXJlc2lzPTc3NTg7ZS5PdGlsZGVzbWFsbD02MzQ3NztlLlA9ODA7ZS5QYWN1dGU9Nzc2NDtlLlBjaXJjbGU9OTQxMztlLlBkb3RhY2NlbnQ9Nzc2NjtlLlBlY3lyaWxsaWM9MTA1NTtlLlBlaGFybWVuaWFuPTEzNTQ7ZS5QZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkwO2UuUGhpPTkzNDtlLlBob29rPTQyMDtlLlBpPTkyODtlLlBpd3Jhcm1lbmlhbj0xMzYzO2UuUG1vbm9zcGFjZT02NTMyODtlLlBzaT05MzY7ZS5Qc2ljeXJpbGxpYz0xMTM2O2UuUHNtYWxsPTYzMzQ0O2UuUT04MTtlLlFjaXJjbGU9OTQxNDtlLlFtb25vc3BhY2U9NjUzMjk7ZS5Rc21hbGw9NjMzNDU7ZS5SPTgyO2UuUmFhcm1lbmlhbj0xMzU2O2UuUmFjdXRlPTM0MDtlLlJjYXJvbj0zNDQ7ZS5SY2VkaWxsYT0zNDI7ZS5SY2lyY2xlPTk0MTU7ZS5SY29tbWFhY2NlbnQ9MzQyO2UuUmRibGdyYXZlPTUyODtlLlJkb3RhY2NlbnQ9Nzc2ODtlLlJkb3RiZWxvdz03NzcwO2UuUmRvdGJlbG93bWFjcm9uPTc3NzI7ZS5SZWhhcm1lbmlhbj0xMzYwO2UuUmZyYWt0dXI9ODQ3NjtlLlJobz05Mjk7ZS5SaW5nc21hbGw9NjMyMjg7ZS5SaW52ZXJ0ZWRicmV2ZT01MzA7ZS5SbGluZWJlbG93PTc3NzQ7ZS5SbW9ub3NwYWNlPTY1MzMwO2UuUnNtYWxsPTYzMzQ2O2UuUnNtYWxsaW52ZXJ0ZWQ9NjQxO2UuUnNtYWxsaW52ZXJ0ZWRzdXBlcmlvcj02OTQ7ZS5TPTgzO2UuU0YwMTAwMDA9OTQ4NDtlLlNGMDIwMDAwPTk0OTI7ZS5TRjAzMDAwMD05NDg4O2UuU0YwNDAwMDA9OTQ5NjtlLlNGMDUwMDAwPTk1MzI7ZS5TRjA2MDAwMD05NTE2O2UuU0YwNzAwMDA9OTUyNDtlLlNGMDgwMDAwPTk1MDA7ZS5TRjA5MDAwMD05NTA4O2UuU0YxMDAwMDA9OTQ3MjtlLlNGMTEwMDAwPTk0NzQ7ZS5TRjE5MDAwMD05NTY5O2UuU0YyMDAwMDA9OTU3MDtlLlNGMjEwMDAwPTk1NTg7ZS5TRjIyMDAwMD05NTU3O2UuU0YyMzAwMDA9OTU3MTtlLlNGMjQwMDAwPTk1NTM7ZS5TRjI1MDAwMD05NTU5O2UuU0YyNjAwMDA9OTU2NTtlLlNGMjcwMDAwPTk1NjQ7ZS5TRjI4MDAwMD05NTYzO2UuU0YzNjAwMDA9OTU2NjtlLlNGMzcwMDAwPTk1Njc7ZS5TRjM4MDAwMD05NTYyO2UuU0YzOTAwMDA9OTU1NjtlLlNGNDAwMDAwPTk1Nzc7ZS5TRjQxMDAwMD05NTc0O2UuU0Y0MjAwMDA9OTU2ODtlLlNGNDMwMDAwPTk1NTI7ZS5TRjQ0MDAwMD05NTgwO2UuU0Y0NTAwMDA9OTU3NTtlLlNGNDYwMDAwPTk1NzY7ZS5TRjQ3MDAwMD05NTcyO2UuU0Y0ODAwMDA9OTU3MztlLlNGNDkwMDAwPTk1NjE7ZS5TRjUwMDAwMD05NTYwO2UuU0Y1MTAwMDA9OTU1NDtlLlNGNTIwMDAwPTk1NTU7ZS5TRjUzMDAwMD05NTc5O2UuU0Y1NDAwMDA9OTU3ODtlLlNhY3V0ZT0zNDY7ZS5TYWN1dGVkb3RhY2NlbnQ9Nzc4MDtlLlNhbXBpZ3JlZWs9OTkyO2UuU2Nhcm9uPTM1MjtlLlNjYXJvbmRvdGFjY2VudD03NzgyO2UuU2Nhcm9uc21hbGw9NjMyMjk7ZS5TY2VkaWxsYT0zNTA7ZS5TY2h3YT0zOTk7ZS5TY2h3YWN5cmlsbGljPTEyNDA7ZS5TY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MjtlLlNjaXJjbGU9OTQxNjtlLlNjaXJjdW1mbGV4PTM0ODtlLlNjb21tYWFjY2VudD01MzY7ZS5TZG90YWNjZW50PTc3NzY7ZS5TZG90YmVsb3c9Nzc3ODtlLlNkb3RiZWxvd2RvdGFjY2VudD03Nzg0O2UuU2VoYXJtZW5pYW49MTM1NztlLlNldmVucm9tYW49ODU1MDtlLlNoYWFybWVuaWFuPTEzNTE7ZS5TaGFjeXJpbGxpYz0xMDY0O2UuU2hjaGFjeXJpbGxpYz0xMDY1O2UuU2hlaWNvcHRpYz05OTQ7ZS5TaGhhY3lyaWxsaWM9MTIxMDtlLlNoaW1hY29wdGljPTEwMDQ7ZS5TaWdtYT05MzE7ZS5TaXhyb21hbj04NTQ5O2UuU21vbm9zcGFjZT02NTMzMTtlLlNvZnRzaWduY3lyaWxsaWM9MTA2ODtlLlNzbWFsbD02MzM0NztlLlN0aWdtYWdyZWVrPTk4NjtlLlQ9ODQ7ZS5UYXU9OTMyO2UuVGJhcj0zNTg7ZS5UY2Fyb249MzU2O2UuVGNlZGlsbGE9MzU0O2UuVGNpcmNsZT05NDE3O2UuVGNpcmN1bWZsZXhiZWxvdz03NzkyO2UuVGNvbW1hYWNjZW50PTM1NDtlLlRkb3RhY2NlbnQ9Nzc4NjtlLlRkb3RiZWxvdz03Nzg4O2UuVGVjeXJpbGxpYz0xMDU4O2UuVGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk2O2UuVGVucm9tYW49ODU1MztlLlRldHNlY3lyaWxsaWM9MTIwNDtlLlRoZXRhPTkyMDtlLlRob29rPTQyODtlLlRob3JuPTIyMjtlLlRob3Juc21hbGw9NjM0ODY7ZS5UaHJlZXJvbWFuPTg1NDY7ZS5UaWxkZXNtYWxsPTYzMjMwO2UuVGl3bmFybWVuaWFuPTEzNTk7ZS5UbGluZWJlbG93PTc3OTA7ZS5UbW9ub3NwYWNlPTY1MzMyO2UuVG9hcm1lbmlhbj0xMzM3O2UuVG9uZWZpdmU9NDQ0O2UuVG9uZXNpeD0zODg7ZS5Ub25ldHdvPTQyMztlLlRyZXRyb2ZsZXhob29rPTQzMDtlLlRzZWN5cmlsbGljPTEwNjI7ZS5Uc2hlY3lyaWxsaWM9MTAzNTtlLlRzbWFsbD02MzM0ODtlLlR3ZWx2ZXJvbWFuPTg1NTU7ZS5Ud29yb21hbj04NTQ1O2UuVT04NTtlLlVhY3V0ZT0yMTg7ZS5VYWN1dGVzbWFsbD02MzQ4MjtlLlVicmV2ZT0zNjQ7ZS5VY2Fyb249NDY3O2UuVWNpcmNsZT05NDE4O2UuVWNpcmN1bWZsZXg9MjE5O2UuVWNpcmN1bWZsZXhiZWxvdz03Nzk4O2UuVWNpcmN1bWZsZXhzbWFsbD02MzQ4MztlLlVjeXJpbGxpYz0xMDU5O2UuVWRibGFjdXRlPTM2ODtlLlVkYmxncmF2ZT01MzI7ZS5VZGllcmVzaXM9MjIwO2UuVWRpZXJlc2lzYWN1dGU9NDcxO2UuVWRpZXJlc2lzYmVsb3c9Nzc5NDtlLlVkaWVyZXNpc2Nhcm9uPTQ3MztlLlVkaWVyZXNpc2N5cmlsbGljPTEyNjQ7ZS5VZGllcmVzaXNncmF2ZT00NzU7ZS5VZGllcmVzaXNtYWNyb249NDY5O2UuVWRpZXJlc2lzc21hbGw9NjM0ODQ7ZS5VZG90YmVsb3c9NzkwODtlLlVncmF2ZT0yMTc7ZS5VZ3JhdmVzbWFsbD02MzQ4MTtlLlVob29rYWJvdmU9NzkxMDtlLlVob3JuPTQzMTtlLlVob3JuYWN1dGU9NzkxMjtlLlVob3JuZG90YmVsb3c9NzkyMDtlLlVob3JuZ3JhdmU9NzkxNDtlLlVob3JuaG9va2Fib3ZlPTc5MTY7ZS5VaG9ybnRpbGRlPTc5MTg7ZS5VaHVuZ2FydW1sYXV0PTM2ODtlLlVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY2O2UuVWludmVydGVkYnJldmU9NTM0O2UuVWtjeXJpbGxpYz0xMTQ0O2UuVW1hY3Jvbj0zNjI7ZS5VbWFjcm9uY3lyaWxsaWM9MTI2MjtlLlVtYWNyb25kaWVyZXNpcz03ODAyO2UuVW1vbm9zcGFjZT02NTMzMztlLlVvZ29uZWs9MzcwO2UuVXBzaWxvbj05MzM7ZS5VcHNpbG9uMT05Nzg7ZS5VcHNpbG9uYWN1dGVob29rc3ltYm9sZ3JlZWs9OTc5O2UuVXBzaWxvbmFmcmljYW49NDMzO2UuVXBzaWxvbmRpZXJlc2lzPTkzOTtlLlVwc2lsb25kaWVyZXNpc2hvb2tzeW1ib2xncmVlaz05ODA7ZS5VcHNpbG9uaG9va3N5bWJvbD05Nzg7ZS5VcHNpbG9udG9ub3M9OTEwO2UuVXJpbmc9MzY2O2UuVXNob3J0Y3lyaWxsaWM9MTAzODtlLlVzbWFsbD02MzM0OTtlLlVzdHJhaWdodGN5cmlsbGljPTExOTg7ZS5Vc3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAwO2UuVXRpbGRlPTM2MDtlLlV0aWxkZWFjdXRlPTc4MDA7ZS5VdGlsZGViZWxvdz03Nzk2O2UuVj04NjtlLlZjaXJjbGU9OTQxOTtlLlZkb3RiZWxvdz03ODA2O2UuVmVjeXJpbGxpYz0xMDQyO2UuVmV3YXJtZW5pYW49MTM1ODtlLlZob29rPTQzNDtlLlZtb25vc3BhY2U9NjUzMzQ7ZS5Wb2FybWVuaWFuPTEzNTI7ZS5Wc21hbGw9NjMzNTA7ZS5WdGlsZGU9NzgwNDtlLlc9ODc7ZS5XYWN1dGU9NzgxMDtlLldjaXJjbGU9OTQyMDtlLldjaXJjdW1mbGV4PTM3MjtlLldkaWVyZXNpcz03ODEyO2UuV2RvdGFjY2VudD03ODE0O2UuV2RvdGJlbG93PTc4MTY7ZS5XZ3JhdmU9NzgwODtlLldtb25vc3BhY2U9NjUzMzU7ZS5Xc21hbGw9NjMzNTE7ZS5YPTg4O2UuWGNpcmNsZT05NDIxO2UuWGRpZXJlc2lzPTc4MjA7ZS5YZG90YWNjZW50PTc4MTg7ZS5YZWhhcm1lbmlhbj0xMzQxO2UuWGk9OTI2O2UuWG1vbm9zcGFjZT02NTMzNjtlLlhzbWFsbD02MzM1MjtlLlk9ODk7ZS5ZYWN1dGU9MjIxO2UuWWFjdXRlc21hbGw9NjM0ODU7ZS5ZYXRjeXJpbGxpYz0xMTIyO2UuWWNpcmNsZT05NDIyO2UuWWNpcmN1bWZsZXg9Mzc0O2UuWWRpZXJlc2lzPTM3NjtlLllkaWVyZXNpc3NtYWxsPTYzNDg3O2UuWWRvdGFjY2VudD03ODIyO2UuWWRvdGJlbG93PTc5MjQ7ZS5ZZXJpY3lyaWxsaWM9MTA2NztlLlllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzI7ZS5ZZ3JhdmU9NzkyMjtlLllob29rPTQzNTtlLllob29rYWJvdmU9NzkyNjtlLllpYXJtZW5pYW49MTM0OTtlLllpY3lyaWxsaWM9MTAzMTtlLllpd25hcm1lbmlhbj0xMzYyO2UuWW1vbm9zcGFjZT02NTMzNztlLllzbWFsbD02MzM1MztlLll0aWxkZT03OTI4O2UuWXVzYmlnY3lyaWxsaWM9MTEzMDtlLll1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMjtlLll1c2xpdHRsZWN5cmlsbGljPTExMjY7ZS5ZdXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjg7ZS5aPTkwO2UuWmFhcm1lbmlhbj0xMzM0O2UuWmFjdXRlPTM3NztlLlpjYXJvbj0zODE7ZS5aY2Fyb25zbWFsbD02MzIzMTtlLlpjaXJjbGU9OTQyMztlLlpjaXJjdW1mbGV4PTc4MjQ7ZS5aZG90PTM3OTtlLlpkb3RhY2NlbnQ9Mzc5O2UuWmRvdGJlbG93PTc4MjY7ZS5aZWN5cmlsbGljPTEwNDc7ZS5aZWRlc2NlbmRlcmN5cmlsbGljPTExNzY7ZS5aZWRpZXJlc2lzY3lyaWxsaWM9MTI0NjtlLlpldGE9OTE4O2UuWmhlYXJtZW5pYW49MTMzODtlLlpoZWJyZXZlY3lyaWxsaWM9MTIxNztlLlpoZWN5cmlsbGljPTEwNDY7ZS5aaGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc0O2UuWmhlZGllcmVzaXNjeXJpbGxpYz0xMjQ0O2UuWmxpbmViZWxvdz03ODI4O2UuWm1vbm9zcGFjZT02NTMzODtlLlpzbWFsbD02MzM1NDtlLlpzdHJva2U9NDM3O2UuYT05NztlLmFhYmVuZ2FsaT0yNDM4O2UuYWFjdXRlPTIyNTtlLmFhZGV2YT0yMzEwO2UuYWFndWphcmF0aT0yNjk0O2UuYWFndXJtdWtoaT0yNTY2O2UuYWFtYXRyYWd1cm11a2hpPTI2MjI7ZS5hYXJ1c3F1YXJlPTEzMDU5O2UuYWF2b3dlbHNpZ25iZW5nYWxpPTI0OTQ7ZS5hYXZvd2Vsc2lnbmRldmE9MjM2NjtlLmFhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MDtlLmFiYnJldmlhdGlvbm1hcmthcm1lbmlhbj0xMzc1O2UuYWJicmV2aWF0aW9uc2lnbmRldmE9MjQxNjtlLmFiZW5nYWxpPTI0Mzc7ZS5hYm9wb21vZm89MTI1NzA7ZS5hYnJldmU9MjU5O2UuYWJyZXZlYWN1dGU9Nzg1NTtlLmFicmV2ZWN5cmlsbGljPTEyMzM7ZS5hYnJldmVkb3RiZWxvdz03ODYzO2UuYWJyZXZlZ3JhdmU9Nzg1NztlLmFicmV2ZWhvb2thYm92ZT03ODU5O2UuYWJyZXZldGlsZGU9Nzg2MTtlLmFjYXJvbj00NjI7ZS5hY2lyY2xlPTk0MjQ7ZS5hY2lyY3VtZmxleD0yMjY7ZS5hY2lyY3VtZmxleGFjdXRlPTc4NDU7ZS5hY2lyY3VtZmxleGRvdGJlbG93PTc4NTM7ZS5hY2lyY3VtZmxleGdyYXZlPTc4NDc7ZS5hY2lyY3VtZmxleGhvb2thYm92ZT03ODQ5O2UuYWNpcmN1bWZsZXh0aWxkZT03ODUxO2UuYWN1dGU9MTgwO2UuYWN1dGViZWxvd2NtYj03OTE7ZS5hY3V0ZWNtYj03Njk7ZS5hY3V0ZWNvbWI9NzY5O2UuYWN1dGVkZXZhPTIzODg7ZS5hY3V0ZWxvd21vZD03MTk7ZS5hY3V0ZXRvbmVjbWI9ODMzO2UuYWN5cmlsbGljPTEwNzI7ZS5hZGJsZ3JhdmU9NTEzO2UuYWRkYWtndXJtdWtoaT0yNjczO2UuYWRldmE9MjMwOTtlLmFkaWVyZXNpcz0yMjg7ZS5hZGllcmVzaXNjeXJpbGxpYz0xMjM1O2UuYWRpZXJlc2lzbWFjcm9uPTQ3OTtlLmFkb3RiZWxvdz03ODQxO2UuYWRvdG1hY3Jvbj00ODE7ZS5hZT0yMzA7ZS5hZWFjdXRlPTUwOTtlLmFla29yZWFuPTEyNjI0O2UuYWVtYWNyb249NDgzO2UuYWZpaTAwMjA4PTgyMTM7ZS5hZmlpMDg5NDE9ODM1NjtlLmFmaWkxMDAxNz0xMDQwO2UuYWZpaTEwMDE4PTEwNDE7ZS5hZmlpMTAwMTk9MTA0MjtlLmFmaWkxMDAyMD0xMDQzO2UuYWZpaTEwMDIxPTEwNDQ7ZS5hZmlpMTAwMjI9MTA0NTtlLmFmaWkxMDAyMz0xMDI1O2UuYWZpaTEwMDI0PTEwNDY7ZS5hZmlpMTAwMjU9MTA0NztlLmFmaWkxMDAyNj0xMDQ4O2UuYWZpaTEwMDI3PTEwNDk7ZS5hZmlpMTAwMjg9MTA1MDtlLmFmaWkxMDAyOT0xMDUxO2UuYWZpaTEwMDMwPTEwNTI7ZS5hZmlpMTAwMzE9MTA1MztlLmFmaWkxMDAzMj0xMDU0O2UuYWZpaTEwMDMzPTEwNTU7ZS5hZmlpMTAwMzQ9MTA1NjtlLmFmaWkxMDAzNT0xMDU3O2UuYWZpaTEwMDM2PTEwNTg7ZS5hZmlpMTAwMzc9MTA1OTtlLmFmaWkxMDAzOD0xMDYwO2UuYWZpaTEwMDM5PTEwNjE7ZS5hZmlpMTAwNDA9MTA2MjtlLmFmaWkxMDA0MT0xMDYzO2UuYWZpaTEwMDQyPTEwNjQ7ZS5hZmlpMTAwNDM9MTA2NTtlLmFmaWkxMDA0ND0xMDY2O2UuYWZpaTEwMDQ1PTEwNjc7ZS5hZmlpMTAwNDY9MTA2ODtlLmFmaWkxMDA0Nz0xMDY5O2UuYWZpaTEwMDQ4PTEwNzA7ZS5hZmlpMTAwNDk9MTA3MTtlLmFmaWkxMDA1MD0xMTY4O2UuYWZpaTEwMDUxPTEwMjY7ZS5hZmlpMTAwNTI9MTAyNztlLmFmaWkxMDA1Mz0xMDI4O2UuYWZpaTEwMDU0PTEwMjk7ZS5hZmlpMTAwNTU9MTAzMDtlLmFmaWkxMDA1Nj0xMDMxO2UuYWZpaTEwMDU3PTEwMzI7ZS5hZmlpMTAwNTg9MTAzMztlLmFmaWkxMDA1OT0xMDM0O2UuYWZpaTEwMDYwPTEwMzU7ZS5hZmlpMTAwNjE9MTAzNjtlLmFmaWkxMDA2Mj0xMDM4O2UuYWZpaTEwMDYzPTYzMTcyO2UuYWZpaTEwMDY0PTYzMTczO2UuYWZpaTEwMDY1PTEwNzI7ZS5hZmlpMTAwNjY9MTA3MztlLmFmaWkxMDA2Nz0xMDc0O2UuYWZpaTEwMDY4PTEwNzU7ZS5hZmlpMTAwNjk9MTA3NjtlLmFmaWkxMDA3MD0xMDc3O2UuYWZpaTEwMDcxPTExMDU7ZS5hZmlpMTAwNzI9MTA3ODtlLmFmaWkxMDA3Mz0xMDc5O2UuYWZpaTEwMDc0PTEwODA7ZS5hZmlpMTAwNzU9MTA4MTtlLmFmaWkxMDA3Nj0xMDgyO2UuYWZpaTEwMDc3PTEwODM7ZS5hZmlpMTAwNzg9MTA4NDtlLmFmaWkxMDA3OT0xMDg1O2UuYWZpaTEwMDgwPTEwODY7ZS5hZmlpMTAwODE9MTA4NztlLmFmaWkxMDA4Mj0xMDg4O2UuYWZpaTEwMDgzPTEwODk7ZS5hZmlpMTAwODQ9MTA5MDtlLmFmaWkxMDA4NT0xMDkxO2UuYWZpaTEwMDg2PTEwOTI7ZS5hZmlpMTAwODc9MTA5MztlLmFmaWkxMDA4OD0xMDk0O2UuYWZpaTEwMDg5PTEwOTU7ZS5hZmlpMTAwOTA9MTA5NjtlLmFmaWkxMDA5MT0xMDk3O2UuYWZpaTEwMDkyPTEwOTg7ZS5hZmlpMTAwOTM9MTA5OTtlLmFmaWkxMDA5ND0xMTAwO2UuYWZpaTEwMDk1PTExMDE7ZS5hZmlpMTAwOTY9MTEwMjtlLmFmaWkxMDA5Nz0xMTAzO2UuYWZpaTEwMDk4PTExNjk7ZS5hZmlpMTAwOTk9MTEwNjtlLmFmaWkxMDEwMD0xMTA3O2UuYWZpaTEwMTAxPTExMDg7ZS5hZmlpMTAxMDI9MTEwOTtlLmFmaWkxMDEwMz0xMTEwO2UuYWZpaTEwMTA0PTExMTE7ZS5hZmlpMTAxMDU9MTExMjtlLmFmaWkxMDEwNj0xMTEzO2UuYWZpaTEwMTA3PTExMTQ7ZS5hZmlpMTAxMDg9MTExNTtlLmFmaWkxMDEwOT0xMTE2O2UuYWZpaTEwMTEwPTExMTg7ZS5hZmlpMTAxNDU9MTAzOTtlLmFmaWkxMDE0Nj0xMTIyO2UuYWZpaTEwMTQ3PTExMzg7ZS5hZmlpMTAxNDg9MTE0MDtlLmFmaWkxMDE5Mj02MzE3NDtlLmFmaWkxMDE5Mz0xMTE5O2UuYWZpaTEwMTk0PTExMjM7ZS5hZmlpMTAxOTU9MTEzOTtlLmFmaWkxMDE5Nj0xMTQxO2UuYWZpaTEwODMxPTYzMTc1O2UuYWZpaTEwODMyPTYzMTc2O2UuYWZpaTEwODQ2PTEyNDE7ZS5hZmlpMjk5PTgyMDY7ZS5hZmlpMzAwPTgyMDc7ZS5hZmlpMzAxPTgyMDU7ZS5hZmlpNTczODE9MTY0MjtlLmFmaWk1NzM4OD0xNTQ4O2UuYWZpaTU3MzkyPTE2MzI7ZS5hZmlpNTczOTM9MTYzMztlLmFmaWk1NzM5ND0xNjM0O2UuYWZpaTU3Mzk1PTE2MzU7ZS5hZmlpNTczOTY9MTYzNjtlLmFmaWk1NzM5Nz0xNjM3O2UuYWZpaTU3Mzk4PTE2Mzg7ZS5hZmlpNTczOTk9MTYzOTtlLmFmaWk1NzQwMD0xNjQwO2UuYWZpaTU3NDAxPTE2NDE7ZS5hZmlpNTc0MDM9MTU2MztlLmFmaWk1NzQwNz0xNTY3O2UuYWZpaTU3NDA5PTE1Njk7ZS5hZmlpNTc0MTA9MTU3MDtlLmFmaWk1NzQxMT0xNTcxO2UuYWZpaTU3NDEyPTE1NzI7ZS5hZmlpNTc0MTM9MTU3MztlLmFmaWk1NzQxND0xNTc0O2UuYWZpaTU3NDE1PTE1NzU7ZS5hZmlpNTc0MTY9MTU3NjtlLmFmaWk1NzQxNz0xNTc3O2UuYWZpaTU3NDE4PTE1Nzg7ZS5hZmlpNTc0MTk9MTU3OTtlLmFmaWk1NzQyMD0xNTgwO2UuYWZpaTU3NDIxPTE1ODE7ZS5hZmlpNTc0MjI9MTU4MjtlLmFmaWk1NzQyMz0xNTgzO2UuYWZpaTU3NDI0PTE1ODQ7ZS5hZmlpNTc0MjU9MTU4NTtlLmFmaWk1NzQyNj0xNTg2O2UuYWZpaTU3NDI3PTE1ODc7ZS5hZmlpNTc0Mjg9MTU4ODtlLmFmaWk1NzQyOT0xNTg5O2UuYWZpaTU3NDMwPTE1OTA7ZS5hZmlpNTc0MzE9MTU5MTtlLmFmaWk1NzQzMj0xNTkyO2UuYWZpaTU3NDMzPTE1OTM7ZS5hZmlpNTc0MzQ9MTU5NDtlLmFmaWk1NzQ0MD0xNjAwO2UuYWZpaTU3NDQxPTE2MDE7ZS5hZmlpNTc0NDI9MTYwMjtlLmFmaWk1NzQ0Mz0xNjAzO2UuYWZpaTU3NDQ0PTE2MDQ7ZS5hZmlpNTc0NDU9MTYwNTtlLmFmaWk1NzQ0Nj0xNjA2O2UuYWZpaTU3NDQ4PTE2MDg7ZS5hZmlpNTc0NDk9MTYwOTtlLmFmaWk1NzQ1MD0xNjEwO2UuYWZpaTU3NDUxPTE2MTE7ZS5hZmlpNTc0NTI9MTYxMjtlLmFmaWk1NzQ1Mz0xNjEzO2UuYWZpaTU3NDU0PTE2MTQ7ZS5hZmlpNTc0NTU9MTYxNTtlLmFmaWk1NzQ1Nj0xNjE2O2UuYWZpaTU3NDU3PTE2MTc7ZS5hZmlpNTc0NTg9MTYxODtlLmFmaWk1NzQ3MD0xNjA3O2UuYWZpaTU3NTA1PTE3MDA7ZS5hZmlpNTc1MDY9MTY2MjtlLmFmaWk1NzUwNz0xNjcwO2UuYWZpaTU3NTA4PTE2ODg7ZS5hZmlpNTc1MDk9MTcxMTtlLmFmaWk1NzUxMT0xNjU3O2UuYWZpaTU3NTEyPTE2NzI7ZS5hZmlpNTc1MTM9MTY4MTtlLmFmaWk1NzUxND0xNzIyO2UuYWZpaTU3NTE5PTE3NDY7ZS5hZmlpNTc1MzQ9MTc0OTtlLmFmaWk1NzYzNj04MzYyO2UuYWZpaTU3NjQ1PTE0NzA7ZS5hZmlpNTc2NTg9MTQ3NTtlLmFmaWk1NzY2ND0xNDg4O2UuYWZpaTU3NjY1PTE0ODk7ZS5hZmlpNTc2NjY9MTQ5MDtlLmFmaWk1NzY2Nz0xNDkxO2UuYWZpaTU3NjY4PTE0OTI7ZS5hZmlpNTc2Njk9MTQ5MztlLmFmaWk1NzY3MD0xNDk0O2UuYWZpaTU3NjcxPTE0OTU7ZS5hZmlpNTc2NzI9MTQ5NjtlLmFmaWk1NzY3Mz0xNDk3O2UuYWZpaTU3Njc0PTE0OTg7ZS5hZmlpNTc2NzU9MTQ5OTtlLmFmaWk1NzY3Nj0xNTAwO2UuYWZpaTU3Njc3PTE1MDE7ZS5hZmlpNTc2Nzg9MTUwMjtlLmFmaWk1NzY3OT0xNTAzO2UuYWZpaTU3NjgwPTE1MDQ7ZS5hZmlpNTc2ODE9MTUwNTtlLmFmaWk1NzY4Mj0xNTA2O2UuYWZpaTU3NjgzPTE1MDc7ZS5hZmlpNTc2ODQ9MTUwODtlLmFmaWk1NzY4NT0xNTA5O2UuYWZpaTU3Njg2PTE1MTA7ZS5hZmlpNTc2ODc9MTUxMTtlLmFmaWk1NzY4OD0xNTEyO2UuYWZpaTU3Njg5PTE1MTM7ZS5hZmlpNTc2OTA9MTUxNDtlLmFmaWk1NzY5ND02NDI5ODtlLmFmaWk1NzY5NT02NDI5OTtlLmFmaWk1NzcwMD02NDMzMTtlLmFmaWk1NzcwNT02NDI4NztlLmFmaWk1NzcxNj0xNTIwO2UuYWZpaTU3NzE3PTE1MjE7ZS5hZmlpNTc3MTg9MTUyMjtlLmFmaWk1NzcyMz02NDMwOTtlLmFmaWk1Nzc5Mz0xNDYwO2UuYWZpaTU3Nzk0PTE0NjE7ZS5hZmlpNTc3OTU9MTQ2MjtlLmFmaWk1Nzc5Nj0xNDY3O2UuYWZpaTU3Nzk3PTE0NjQ7ZS5hZmlpNTc3OTg9MTQ2MztlLmFmaWk1Nzc5OT0xNDU2O2UuYWZpaTU3ODAwPTE0NTg7ZS5hZmlpNTc4MDE9MTQ1NztlLmFmaWk1NzgwMj0xNDU5O2UuYWZpaTU3ODAzPTE0NzQ7ZS5hZmlpNTc4MDQ9MTQ3MztlLmFmaWk1NzgwNj0xNDY1O2UuYWZpaTU3ODA3PTE0Njg7ZS5hZmlpNTc4Mzk9MTQ2OTtlLmFmaWk1Nzg0MT0xNDcxO2UuYWZpaTU3ODQyPTE0NzI7ZS5hZmlpNTc5Mjk9NzAwO2UuYWZpaTYxMjQ4PTg0NTM7ZS5hZmlpNjEyODk9ODQ2NztlLmFmaWk2MTM1Mj04NDcwO2UuYWZpaTYxNTczPTgyMzY7ZS5hZmlpNjE1NzQ9ODIzNztlLmFmaWk2MTU3NT04MjM4O2UuYWZpaTYxNjY0PTgyMDQ7ZS5hZmlpNjMxNjc9MTY0NTtlLmFmaWk2NDkzNz03MDE7ZS5hZ3JhdmU9MjI0O2UuYWd1amFyYXRpPTI2OTM7ZS5hZ3VybXVraGk9MjU2NTtlLmFoaXJhZ2FuYT0xMjM1NDtlLmFob29rYWJvdmU9Nzg0MztlLmFpYmVuZ2FsaT0yNDQ4O2UuYWlib3BvbW9mbz0xMjU3NDtlLmFpZGV2YT0yMzIwO2UuYWllY3lyaWxsaWM9MTIzNztlLmFpZ3VqYXJhdGk9MjcwNDtlLmFpZ3VybXVraGk9MjU3NjtlLmFpbWF0cmFndXJtdWtoaT0yNjMyO2UuYWluYXJhYmljPTE1OTM7ZS5haW5maW5hbGFyYWJpYz02NTIyNjtlLmFpbmluaXRpYWxhcmFiaWM9NjUyMjc7ZS5haW5tZWRpYWxhcmFiaWM9NjUyMjg7ZS5haW52ZXJ0ZWRicmV2ZT01MTU7ZS5haXZvd2Vsc2lnbmJlbmdhbGk9MjUwNDtlLmFpdm93ZWxzaWduZGV2YT0yMzc2O2UuYWl2b3dlbHNpZ25ndWphcmF0aT0yNzYwO2UuYWthdGFrYW5hPTEyNDUwO2UuYWthdGFrYW5haGFsZndpZHRoPTY1MzkzO2UuYWtvcmVhbj0xMjYyMztlLmFsZWY9MTQ4ODtlLmFsZWZhcmFiaWM9MTU3NTtlLmFsZWZkYWdlc2hoZWJyZXc9NjQzMDQ7ZS5hbGVmZmluYWxhcmFiaWM9NjUxNjY7ZS5hbGVmaGFtemFhYm92ZWFyYWJpYz0xNTcxO2UuYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1NjtlLmFsZWZoYW16YWJlbG93YXJhYmljPTE1NzM7ZS5hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1MTYwO2UuYWxlZmhlYnJldz0xNDg4O2UuYWxlZmxhbWVkaGVicmV3PTY0MzM1O2UuYWxlZm1hZGRhYWJvdmVhcmFiaWM9MTU3MDtlLmFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUxNTQ7ZS5hbGVmbWFrc3VyYWFyYWJpYz0xNjA5O2UuYWxlZm1ha3N1cmFmaW5hbGFyYWJpYz02NTI2NDtlLmFsZWZtYWtzdXJhaW5pdGlhbGFyYWJpYz02NTI2NztlLmFsZWZtYWtzdXJhbWVkaWFsYXJhYmljPTY1MjY4O2UuYWxlZnBhdGFoaGVicmV3PTY0MzAyO2UuYWxlZnFhbWF0c2hlYnJldz02NDMwMztlLmFsZXBoPTg1MDE7ZS5hbGxlcXVhbD04NzgwO2UuYWxwaGE9OTQ1O2UuYWxwaGF0b25vcz05NDA7ZS5hbWFjcm9uPTI1NztlLmFtb25vc3BhY2U9NjUzNDU7ZS5hbXBlcnNhbmQ9Mzg7ZS5hbXBlcnNhbmRtb25vc3BhY2U9NjUyODY7ZS5hbXBlcnNhbmRzbWFsbD02MzI3MDtlLmFtc3F1YXJlPTEzMjUwO2UuYW5ib3BvbW9mbz0xMjU3ODtlLmFuZ2JvcG9tb2ZvPTEyNTgwO2UuYW5nYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdraGFua2h1dGhhaT0zNjc0O2UuYW5nbGU9ODczNjtlLmFuZ2xlYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODc7ZS5hbmdsZWJyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODg7ZS5hbmdsZWxlZnQ9OTAwMTtlLmFuZ2xlcmlnaHQ9OTAwMjtlLmFuZ3N0cm9tPTg0OTE7ZS5hbm90ZWxlaWE9OTAzO2UuYW51ZGF0dGFkZXZhPTIzODY7ZS5hbnVzdmFyYWJlbmdhbGk9MjQzNDtlLmFudXN2YXJhZGV2YT0yMzA2O2UuYW51c3ZhcmFndWphcmF0aT0yNjkwO2UuYW9nb25laz0yNjE7ZS5hcGFhdG9zcXVhcmU9MTMwNTY7ZS5hcGFyZW49OTM3MjtlLmFwb3N0cm9waGVhcm1lbmlhbj0xMzcwO2UuYXBvc3Ryb3BoZW1vZD03MDA7ZS5hcHBsZT02Mzc0MztlLmFwcHJvYWNoZXM9ODc4NDtlLmFwcHJveGVxdWFsPTg3NzY7ZS5hcHByb3hlcXVhbG9yaW1hZ2U9ODc4NjtlLmFwcHJveGltYXRlbHllcXVhbD04NzczO2UuYXJhZWFla29yZWFuPTEyNjg2O2UuYXJhZWFrb3JlYW49MTI2ODU7ZS5hcmM9ODk3ODtlLmFyaWdodGhhbGZyaW5nPTc4MzQ7ZS5hcmluZz0yMjk7ZS5hcmluZ2FjdXRlPTUwNztlLmFyaW5nYmVsb3c9NzY4MTtlLmFycm93Ym90aD04NTk2O2UuYXJyb3dkYXNoZG93bj04Njc1O2UuYXJyb3dkYXNobGVmdD04NjcyO2UuYXJyb3dkYXNocmlnaHQ9ODY3NDtlLmFycm93ZGFzaHVwPTg2NzM7ZS5hcnJvd2RibGJvdGg9ODY2MDtlLmFycm93ZGJsZG93bj04NjU5O2UuYXJyb3dkYmxsZWZ0PTg2NTY7ZS5hcnJvd2RibHJpZ2h0PTg2NTg7ZS5hcnJvd2RibHVwPTg2NTc7ZS5hcnJvd2Rvd249ODU5NTtlLmFycm93ZG93bmxlZnQ9ODYwMTtlLmFycm93ZG93bnJpZ2h0PTg2MDA7ZS5hcnJvd2Rvd253aGl0ZT04NjgxO2UuYXJyb3doZWFkZG93bm1vZD03MDk7ZS5hcnJvd2hlYWRsZWZ0bW9kPTcwNjtlLmFycm93aGVhZHJpZ2h0bW9kPTcwNztlLmFycm93aGVhZHVwbW9kPTcwODtlLmFycm93aG9yaXpleD02MzcxOTtlLmFycm93bGVmdD04NTkyO2UuYXJyb3dsZWZ0ZGJsPTg2NTY7ZS5hcnJvd2xlZnRkYmxzdHJva2U9ODY1MztlLmFycm93bGVmdG92ZXJyaWdodD04NjQ2O2UuYXJyb3dsZWZ0d2hpdGU9ODY3ODtlLmFycm93cmlnaHQ9ODU5NDtlLmFycm93cmlnaHRkYmxzdHJva2U9ODY1NTtlLmFycm93cmlnaHRoZWF2eT0xMDE0MjtlLmFycm93cmlnaHRvdmVybGVmdD04NjQ0O2UuYXJyb3dyaWdodHdoaXRlPTg2ODA7ZS5hcnJvd3RhYmxlZnQ9ODY3NjtlLmFycm93dGFicmlnaHQ9ODY3NztlLmFycm93dXA9ODU5MztlLmFycm93dXBkbj04NTk3O2UuYXJyb3d1cGRuYnNlPTg2MTY7ZS5hcnJvd3VwZG93bmJhc2U9ODYxNjtlLmFycm93dXBsZWZ0PTg1OTg7ZS5hcnJvd3VwbGVmdG9mZG93bj04NjQ1O2UuYXJyb3d1cHJpZ2h0PTg1OTk7ZS5hcnJvd3Vwd2hpdGU9ODY3OTtlLmFycm93dmVydGV4PTYzNzE4O2UuYXNjaWljaXJjdW09OTQ7ZS5hc2NpaWNpcmN1bW1vbm9zcGFjZT02NTM0MjtlLmFzY2lpdGlsZGU9MTI2O2UuYXNjaWl0aWxkZW1vbm9zcGFjZT02NTM3NDtlLmFzY3JpcHQ9NTkzO2UuYXNjcmlwdHR1cm5lZD01OTQ7ZS5hc21hbGxoaXJhZ2FuYT0xMjM1MztlLmFzbWFsbGthdGFrYW5hPTEyNDQ5O2UuYXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODM7ZS5hc3Rlcmlzaz00MjtlLmFzdGVyaXNrYWx0b25lYXJhYmljPTE2NDU7ZS5hc3Rlcmlza2FyYWJpYz0xNjQ1O2UuYXN0ZXJpc2ttYXRoPTg3Mjc7ZS5hc3Rlcmlza21vbm9zcGFjZT02NTI5MDtlLmFzdGVyaXNrc21hbGw9NjUxMjE7ZS5hc3RlcmlzbT04MjU4O2UuYXN1cGVyaW9yPTYzMjA5O2UuYXN5bXB0b3RpY2FsbHllcXVhbD04NzcxO2UuYXQ9NjQ7ZS5hdGlsZGU9MjI3O2UuYXRtb25vc3BhY2U9NjUzMTI7ZS5hdHNtYWxsPTY1MTMxO2UuYXR1cm5lZD01OTI7ZS5hdWJlbmdhbGk9MjQ1MjtlLmF1Ym9wb21vZm89MTI1NzY7ZS5hdWRldmE9MjMyNDtlLmF1Z3VqYXJhdGk9MjcwODtlLmF1Z3VybXVraGk9MjU4MDtlLmF1bGVuZ3RobWFya2JlbmdhbGk9MjUxOTtlLmF1bWF0cmFndXJtdWtoaT0yNjM2O2UuYXV2b3dlbHNpZ25iZW5nYWxpPTI1MDg7ZS5hdXZvd2Vsc2lnbmRldmE9MjM4MDtlLmF1dm93ZWxzaWduZ3VqYXJhdGk9Mjc2NDtlLmF2YWdyYWhhZGV2YT0yMzY1O2UuYXliYXJtZW5pYW49MTM3NztlLmF5aW49MTUwNjtlLmF5aW5hbHRvbmVoZWJyZXc9NjQyODg7ZS5heWluaGVicmV3PTE1MDY7ZS5iPTk4O2UuYmFiZW5nYWxpPTI0NzY7ZS5iYWNrc2xhc2g9OTI7ZS5iYWNrc2xhc2htb25vc3BhY2U9NjUzNDA7ZS5iYWRldmE9MjM0ODtlLmJhZ3VqYXJhdGk9MjczMjtlLmJhZ3VybXVraGk9MjYwNDtlLmJhaGlyYWdhbmE9MTI0MDA7ZS5iYWh0dGhhaT0zNjQ3O2UuYmFrYXRha2FuYT0xMjQ5NjtlLmJhcj0xMjQ7ZS5iYXJtb25vc3BhY2U9NjUzNzI7ZS5iYm9wb21vZm89MTI1NDk7ZS5iY2lyY2xlPTk0MjU7ZS5iZG90YWNjZW50PTc2ODM7ZS5iZG90YmVsb3c9NzY4NTtlLmJlYW1lZHNpeHRlZW50aG5vdGVzPTk4MzY7ZS5iZWNhdXNlPTg3NTc7ZS5iZWN5cmlsbGljPTEwNzM7ZS5iZWhhcmFiaWM9MTU3NjtlLmJlaGZpbmFsYXJhYmljPTY1MTY4O2UuYmVoaW5pdGlhbGFyYWJpYz02NTE2OTtlLmJlaGlyYWdhbmE9MTI0MDk7ZS5iZWhtZWRpYWxhcmFiaWM9NjUxNzA7ZS5iZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3MTtlLmJlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyMDtlLmJlaG5vb25maW5hbGFyYWJpYz02NDYyMTtlLmJla2F0YWthbmE9MTI1MDU7ZS5iZW5hcm1lbmlhbj0xMzc4O2UuYmV0PTE0ODk7ZS5iZXRhPTk0NjtlLmJldGFzeW1ib2xncmVlaz05NzY7ZS5iZXRkYWdlc2g9NjQzMDU7ZS5iZXRkYWdlc2hoZWJyZXc9NjQzMDU7ZS5iZXRoZWJyZXc9MTQ4OTtlLmJldHJhZmVoZWJyZXc9NjQzMzI7ZS5iaGFiZW5nYWxpPTI0Nzc7ZS5iaGFkZXZhPTIzNDk7ZS5iaGFndWphcmF0aT0yNzMzO2UuYmhhZ3VybXVraGk9MjYwNTtlLmJob29rPTU5NTtlLmJpaGlyYWdhbmE9MTI0MDM7ZS5iaWthdGFrYW5hPTEyNDk5O2UuYmlsYWJpYWxjbGljaz02NjQ7ZS5iaW5kaWd1cm11a2hpPTI1NjI7ZS5iaXJ1c3F1YXJlPTEzMTA1O2UuYmxhY2tjaXJjbGU9OTY3OTtlLmJsYWNrZGlhbW9uZD05NjcwO2UuYmxhY2tkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYwO2UuYmxhY2tsZWZ0cG9pbnRpbmdwb2ludGVyPTk2Njg7ZS5ibGFja2xlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMwNDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODM7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMDU7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NDtlLmJsYWNrbG93ZXJsZWZ0dHJpYW5nbGU9OTY5OTtlLmJsYWNrbG93ZXJyaWdodHRyaWFuZ2xlPTk2OTg7ZS5ibGFja3JlY3RhbmdsZT05NjQ0O2UuYmxhY2tyaWdodHBvaW50aW5ncG9pbnRlcj05NjU4O2UuYmxhY2tyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NDtlLmJsYWNrc21hbGxzcXVhcmU9OTY0MjtlLmJsYWNrc21pbGluZ2ZhY2U9OTc4NztlLmJsYWNrc3F1YXJlPTk2MzI7ZS5ibGFja3N0YXI9OTczMztlLmJsYWNrdXBwZXJsZWZ0dHJpYW5nbGU9OTcwMDtlLmJsYWNrdXBwZXJyaWdodHRyaWFuZ2xlPTk3MDE7ZS5ibGFja3VwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTI7ZS5ibGFja3VwcG9pbnRpbmd0cmlhbmdsZT05NjUwO2UuYmxhbms9OTI1MTtlLmJsaW5lYmVsb3c9NzY4NztlLmJsb2NrPTk2MDg7ZS5ibW9ub3NwYWNlPTY1MzQ2O2UuYm9iYWltYWl0aGFpPTM2MTA7ZS5ib2hpcmFnYW5hPTEyNDEyO2UuYm9rYXRha2FuYT0xMjUwODtlLmJwYXJlbj05MzczO2UuYnFzcXVhcmU9MTMyNTE7ZS5icmFjZWV4PTYzNzMyO2UuYnJhY2VsZWZ0PTEyMztlLmJyYWNlbGVmdGJ0PTYzNzMxO2UuYnJhY2VsZWZ0bWlkPTYzNzMwO2UuYnJhY2VsZWZ0bW9ub3NwYWNlPTY1MzcxO2UuYnJhY2VsZWZ0c21hbGw9NjUxMTU7ZS5icmFjZWxlZnR0cD02MzcyOTtlLmJyYWNlbGVmdHZlcnRpY2FsPTY1MDc5O2UuYnJhY2VyaWdodD0xMjU7ZS5icmFjZXJpZ2h0YnQ9NjM3NDI7ZS5icmFjZXJpZ2h0bWlkPTYzNzQxO2UuYnJhY2VyaWdodG1vbm9zcGFjZT02NTM3MztlLmJyYWNlcmlnaHRzbWFsbD02NTExNjtlLmJyYWNlcmlnaHR0cD02Mzc0MDtlLmJyYWNlcmlnaHR2ZXJ0aWNhbD02NTA4MDtlLmJyYWNrZXRsZWZ0PTkxO2UuYnJhY2tldGxlZnRidD02MzcyODtlLmJyYWNrZXRsZWZ0ZXg9NjM3Mjc7ZS5icmFja2V0bGVmdG1vbm9zcGFjZT02NTMzOTtlLmJyYWNrZXRsZWZ0dHA9NjM3MjY7ZS5icmFja2V0cmlnaHQ9OTM7ZS5icmFja2V0cmlnaHRidD02MzczOTtlLmJyYWNrZXRyaWdodGV4PTYzNzM4O2UuYnJhY2tldHJpZ2h0bW9ub3NwYWNlPTY1MzQxO2UuYnJhY2tldHJpZ2h0dHA9NjM3Mzc7ZS5icmV2ZT03Mjg7ZS5icmV2ZWJlbG93Y21iPTgxNDtlLmJyZXZlY21iPTc3NDtlLmJyZXZlaW52ZXJ0ZWRiZWxvd2NtYj04MTU7ZS5icmV2ZWludmVydGVkY21iPTc4NTtlLmJyZXZlaW52ZXJ0ZWRkb3VibGVjbWI9ODY1O2UuYnJpZGdlYmVsb3djbWI9ODEwO2UuYnJpZGdlaW52ZXJ0ZWRiZWxvd2NtYj04MjY7ZS5icm9rZW5iYXI9MTY2O2UuYnN0cm9rZT0zODQ7ZS5ic3VwZXJpb3I9NjMyMTA7ZS5idG9wYmFyPTM4NztlLmJ1aGlyYWdhbmE9MTI0MDY7ZS5idWthdGFrYW5hPTEyNTAyO2UuYnVsbGV0PTgyMjY7ZS5idWxsZXRpbnZlcnNlPTk2ODg7ZS5idWxsZXRvcGVyYXRvcj04NzI5O2UuYnVsbHNleWU9OTY3ODtlLmM9OTk7ZS5jYWFybWVuaWFuPTEzOTA7ZS5jYWJlbmdhbGk9MjQ1ODtlLmNhY3V0ZT0yNjM7ZS5jYWRldmE9MjMzMDtlLmNhZ3VqYXJhdGk9MjcxNDtlLmNhZ3VybXVraGk9MjU4NjtlLmNhbHNxdWFyZT0xMzE5MjtlLmNhbmRyYWJpbmR1YmVuZ2FsaT0yNDMzO2UuY2FuZHJhYmluZHVjbWI9Nzg0O2UuY2FuZHJhYmluZHVkZXZhPTIzMDU7ZS5jYW5kcmFiaW5kdWd1amFyYXRpPTI2ODk7ZS5jYXBzbG9jaz04NjgyO2UuY2FyZW9mPTg0NTM7ZS5jYXJvbj03MTE7ZS5jYXJvbmJlbG93Y21iPTgxMjtlLmNhcm9uY21iPTc4MDtlLmNhcnJpYWdlcmV0dXJuPTg2Mjk7ZS5jYm9wb21vZm89MTI1Njg7ZS5jY2Fyb249MjY5O2UuY2NlZGlsbGE9MjMxO2UuY2NlZGlsbGFhY3V0ZT03Njg5O2UuY2NpcmNsZT05NDI2O2UuY2NpcmN1bWZsZXg9MjY1O2UuY2N1cmw9NTk3O2UuY2RvdD0yNjc7ZS5jZG90YWNjZW50PTI2NztlLmNkc3F1YXJlPTEzMjUzO2UuY2VkaWxsYT0xODQ7ZS5jZWRpbGxhY21iPTgwNztlLmNlbnQ9MTYyO2UuY2VudGlncmFkZT04NDUxO2UuY2VudGluZmVyaW9yPTYzMTk5O2UuY2VudG1vbm9zcGFjZT02NTUwNDtlLmNlbnRvbGRzdHlsZT02MzM5NDtlLmNlbnRzdXBlcmlvcj02MzIwMDtlLmNoYWFybWVuaWFuPTE0MDE7ZS5jaGFiZW5nYWxpPTI0NTk7ZS5jaGFkZXZhPTIzMzE7ZS5jaGFndWphcmF0aT0yNzE1O2UuY2hhZ3VybXVraGk9MjU4NztlLmNoYm9wb21vZm89MTI1NjQ7ZS5jaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEzO2UuY2hlY2ttYXJrPTEwMDAzO2UuY2hlY3lyaWxsaWM9MTA5NTtlLmNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTU7ZS5jaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA3O2UuY2hlZGllcmVzaXNjeXJpbGxpYz0xMjY5O2UuY2hlaGFybWVuaWFuPTEzOTU7ZS5jaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyODtlLmNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwOTtlLmNoaT05Njc7ZS5jaGlldWNoYWNpcmNsZWtvcmVhbj0xMjkxOTtlLmNoaWV1Y2hhcGFyZW5rb3JlYW49MTI4MjM7ZS5jaGlldWNoY2lyY2xla29yZWFuPTEyOTA1O2UuY2hpZXVjaGtvcmVhbj0xMjYxODtlLmNoaWV1Y2hwYXJlbmtvcmVhbj0xMjgwOTtlLmNob2NoYW5ndGhhaT0zNTk0O2UuY2hvY2hhbnRoYWk9MzU5MjtlLmNob2NoaW5ndGhhaT0zNTkzO2UuY2hvY2hvZXRoYWk9MzU5NjtlLmNob29rPTM5MjtlLmNpZXVjYWNpcmNsZWtvcmVhbj0xMjkxODtlLmNpZXVjYXBhcmVua29yZWFuPTEyODIyO2UuY2lldWNjaXJjbGVrb3JlYW49MTI5MDQ7ZS5jaWV1Y2tvcmVhbj0xMjYxNjtlLmNpZXVjcGFyZW5rb3JlYW49MTI4MDg7ZS5jaWV1Y3VwYXJlbmtvcmVhbj0xMjgyODtlLmNpcmNsZT05Njc1O2UuY2lyY2xlY29weXJ0PTE2OTtlLmNpcmNsZW11bHRpcGx5PTg4NTU7ZS5jaXJjbGVvdD04ODU3O2UuY2lyY2xlcGx1cz04ODUzO2UuY2lyY2xlcG9zdGFsbWFyaz0xMjM0MjtlLmNpcmNsZXdpdGhsZWZ0aGFsZmJsYWNrPTk2ODA7ZS5jaXJjbGV3aXRocmlnaHRoYWxmYmxhY2s9OTY4MTtlLmNpcmN1bWZsZXg9NzEwO2UuY2lyY3VtZmxleGJlbG93Y21iPTgxMztlLmNpcmN1bWZsZXhjbWI9NzcwO2UuY2xlYXI9ODk5OTtlLmNsaWNrYWx2ZW9sYXI9NDUwO2UuY2xpY2tkZW50YWw9NDQ4O2UuY2xpY2tsYXRlcmFsPTQ0OTtlLmNsaWNrcmV0cm9mbGV4PTQ1MTtlLmNsdWI9OTgyNztlLmNsdWJzdWl0YmxhY2s9OTgyNztlLmNsdWJzdWl0d2hpdGU9OTgzMTtlLmNtY3ViZWRzcXVhcmU9MTMyMjA7ZS5jbW9ub3NwYWNlPTY1MzQ3O2UuY21zcXVhcmVkc3F1YXJlPTEzMjE2O2UuY29hcm1lbmlhbj0xNDA5O2UuY29sb249NTg7ZS5jb2xvbm1vbmV0YXJ5PTgzNTM7ZS5jb2xvbm1vbm9zcGFjZT02NTMwNjtlLmNvbG9uc2lnbj04MzUzO2UuY29sb25zbWFsbD02NTEwOTtlLmNvbG9udHJpYW5ndWxhcmhhbGZtb2Q9NzIxO2UuY29sb250cmlhbmd1bGFybW9kPTcyMDtlLmNvbW1hPTQ0O2UuY29tbWFhYm92ZWNtYj03ODc7ZS5jb21tYWFib3ZlcmlnaHRjbWI9Nzg5O2UuY29tbWFhY2NlbnQ9NjMxNzE7ZS5jb21tYWFyYWJpYz0xNTQ4O2UuY29tbWFhcm1lbmlhbj0xMzczO2UuY29tbWFpbmZlcmlvcj02MzIwMTtlLmNvbW1hbW9ub3NwYWNlPTY1MjkyO2UuY29tbWFyZXZlcnNlZGFib3ZlY21iPTc4ODtlLmNvbW1hcmV2ZXJzZWRtb2Q9NzAxO2UuY29tbWFzbWFsbD02NTEwNDtlLmNvbW1hc3VwZXJpb3I9NjMyMDI7ZS5jb21tYXR1cm5lZGFib3ZlY21iPTc4NjtlLmNvbW1hdHVybmVkbW9kPTY5OTtlLmNvbXBhc3M9OTc4ODtlLmNvbmdydWVudD04NzczO2UuY29udG91cmludGVncmFsPTg3NTA7ZS5jb250cm9sPTg5NjM7ZS5jb250cm9sQUNLPTY7ZS5jb250cm9sQkVMPTc7ZS5jb250cm9sQlM9ODtlLmNvbnRyb2xDQU49MjQ7ZS5jb250cm9sQ1I9MTM7ZS5jb250cm9sREMxPTE3O2UuY29udHJvbERDMj0xODtlLmNvbnRyb2xEQzM9MTk7ZS5jb250cm9sREM0PTIwO2UuY29udHJvbERFTD0xMjc7ZS5jb250cm9sRExFPTE2O2UuY29udHJvbEVNPTI1O2UuY29udHJvbEVOUT01O2UuY29udHJvbEVPVD00O2UuY29udHJvbEVTQz0yNztlLmNvbnRyb2xFVEI9MjM7ZS5jb250cm9sRVRYPTM7ZS5jb250cm9sRkY9MTI7ZS5jb250cm9sRlM9Mjg7ZS5jb250cm9sR1M9Mjk7ZS5jb250cm9sSFQ9OTtlLmNvbnRyb2xMRj0xMDtlLmNvbnRyb2xOQUs9MjE7ZS5jb250cm9sTlVMTD0wO2UuY29udHJvbFJTPTMwO2UuY29udHJvbFNJPTE1O2UuY29udHJvbFNPPTE0O2UuY29udHJvbFNPVD0yO2UuY29udHJvbFNUWD0xO2UuY29udHJvbFNVQj0yNjtlLmNvbnRyb2xTWU49MjI7ZS5jb250cm9sVVM9MzE7ZS5jb250cm9sVlQ9MTE7ZS5jb3B5cmlnaHQ9MTY5O2UuY29weXJpZ2h0c2Fucz02MzcyMTtlLmNvcHlyaWdodHNlcmlmPTYzMTkzO2UuY29ybmVyYnJhY2tldGxlZnQ9MTIzMDA7ZS5jb3JuZXJicmFja2V0bGVmdGhhbGZ3aWR0aD02NTM3ODtlLmNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODk7ZS5jb3JuZXJicmFja2V0cmlnaHQ9MTIzMDE7ZS5jb3JuZXJicmFja2V0cmlnaHRoYWxmd2lkdGg9NjUzNzk7ZS5jb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MDtlLmNvcnBvcmF0aW9uc3F1YXJlPTEzMTgzO2UuY29zcXVhcmU9MTMyNTU7ZS5jb3Zlcmtnc3F1YXJlPTEzMjU0O2UuY3BhcmVuPTkzNzQ7ZS5jcnV6ZWlybz04MzU0O2UuY3N0cmV0Y2hlZD02NjM7ZS5jdXJseWFuZD04OTExO2UuY3VybHlvcj04OTEwO2UuY3VycmVuY3k9MTY0O2UuY3lyQnJldmU9NjMxODU7ZS5jeXJGbGV4PTYzMTg2O2UuY3lyYnJldmU9NjMxODg7ZS5jeXJmbGV4PTYzMTg5O2UuZD0xMDA7ZS5kYWFybWVuaWFuPTEzODA7ZS5kYWJlbmdhbGk9MjQ3MDtlLmRhZGFyYWJpYz0xNTkwO2UuZGFkZXZhPTIzNDI7ZS5kYWRmaW5hbGFyYWJpYz02NTIxNDtlLmRhZGluaXRpYWxhcmFiaWM9NjUyMTU7ZS5kYWRtZWRpYWxhcmFiaWM9NjUyMTY7ZS5kYWdlc2g9MTQ2ODtlLmRhZ2VzaGhlYnJldz0xNDY4O2UuZGFnZ2VyPTgyMjQ7ZS5kYWdnZXJkYmw9ODIyNTtlLmRhZ3VqYXJhdGk9MjcyNjtlLmRhZ3VybXVraGk9MjU5ODtlLmRhaGlyYWdhbmE9MTIzODQ7ZS5kYWthdGFrYW5hPTEyNDgwO2UuZGFsYXJhYmljPTE1ODM7ZS5kYWxldD0xNDkxO2UuZGFsZXRkYWdlc2g9NjQzMDc7ZS5kYWxldGRhZ2VzaGhlYnJldz02NDMwNztlLmRhbGV0aGVicmV3PTE0OTE7ZS5kYWxmaW5hbGFyYWJpYz02NTE5NDtlLmRhbW1hYXJhYmljPTE2MTU7ZS5kYW1tYWxvd2FyYWJpYz0xNjE1O2UuZGFtbWF0YW5hbHRvbmVhcmFiaWM9MTYxMjtlLmRhbW1hdGFuYXJhYmljPTE2MTI7ZS5kYW5kYT0yNDA0O2UuZGFyZ2FoZWJyZXc9MTQ0NztlLmRhcmdhbGVmdGhlYnJldz0xNDQ3O2UuZGFzaWFwbmV1bWF0YWN5cmlsbGljY21iPTExNTc7ZS5kYmxHcmF2ZT02MzE4NztlLmRibGFuZ2xlYnJhY2tldGxlZnQ9MTIyOTg7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODU7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodD0xMjI5OTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODY7ZS5kYmxhcmNoaW52ZXJ0ZWRiZWxvd2NtYj04MTE7ZS5kYmxhcnJvd2xlZnQ9ODY2MDtlLmRibGFycm93cmlnaHQ9ODY1ODtlLmRibGRhbmRhPTI0MDU7ZS5kYmxncmF2ZT02MzE5MDtlLmRibGdyYXZlY21iPTc4MztlLmRibGludGVncmFsPTg3NDg7ZS5kYmxsb3dsaW5lPTgyMTU7ZS5kYmxsb3dsaW5lY21iPTgxOTtlLmRibG92ZXJsaW5lY21iPTgzMTtlLmRibHByaW1lbW9kPTY5ODtlLmRibHZlcnRpY2FsYmFyPTgyMTQ7ZS5kYmx2ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODI7ZS5kYm9wb21vZm89MTI1NTM7ZS5kYnNxdWFyZT0xMzI1NjtlLmRjYXJvbj0yNzE7ZS5kY2VkaWxsYT03Njk3O2UuZGNpcmNsZT05NDI3O2UuZGNpcmN1bWZsZXhiZWxvdz03Njk5O2UuZGNyb2F0PTI3MztlLmRkYWJlbmdhbGk9MjQ2NTtlLmRkYWRldmE9MjMzNztlLmRkYWd1amFyYXRpPTI3MjE7ZS5kZGFndXJtdWtoaT0yNTkzO2UuZGRhbGFyYWJpYz0xNjcyO2UuZGRhbGZpbmFsYXJhYmljPTY0MzkzO2UuZGRkaGFkZXZhPTIzOTY7ZS5kZGhhYmVuZ2FsaT0yNDY2O2UuZGRoYWRldmE9MjMzODtlLmRkaGFndWphcmF0aT0yNzIyO2UuZGRoYWd1cm11a2hpPTI1OTQ7ZS5kZG90YWNjZW50PTc2OTE7ZS5kZG90YmVsb3c9NzY5MztlLmRlY2ltYWxzZXBhcmF0b3JhcmFiaWM9MTY0MztlLmRlY2ltYWxzZXBhcmF0b3JwZXJzaWFuPTE2NDM7ZS5kZWN5cmlsbGljPTEwNzY7ZS5kZWdyZWU9MTc2O2UuZGVoaWhlYnJldz0xNDUzO2UuZGVoaXJhZ2FuYT0xMjM5MTtlLmRlaWNvcHRpYz0xMDA3O2UuZGVrYXRha2FuYT0xMjQ4NztlLmRlbGV0ZWxlZnQ9OTAwMztlLmRlbGV0ZXJpZ2h0PTg5OTg7ZS5kZWx0YT05NDg7ZS5kZWx0YXR1cm5lZD0zOTc7ZS5kZW5vbWluYXRvcm1pbnVzb25lbnVtZXJhdG9yYmVuZ2FsaT0yNTUyO2UuZGV6aD02NzY7ZS5kaGFiZW5nYWxpPTI0NzE7ZS5kaGFkZXZhPTIzNDM7ZS5kaGFndWphcmF0aT0yNzI3O2UuZGhhZ3VybXVraGk9MjU5OTtlLmRob29rPTU5OTtlLmRpYWx5dGlrYXRvbm9zPTkwMTtlLmRpYWx5dGlrYXRvbm9zY21iPTgzNjtlLmRpYW1vbmQ9OTgzMDtlLmRpYW1vbmRzdWl0d2hpdGU9OTgyNjtlLmRpZXJlc2lzPTE2ODtlLmRpZXJlc2lzYWN1dGU9NjMxOTE7ZS5kaWVyZXNpc2JlbG93Y21iPTgwNDtlLmRpZXJlc2lzY21iPTc3NjtlLmRpZXJlc2lzZ3JhdmU9NjMxOTI7ZS5kaWVyZXNpc3Rvbm9zPTkwMTtlLmRpaGlyYWdhbmE9MTIzODY7ZS5kaWthdGFrYW5hPTEyNDgyO2UuZGl0dG9tYXJrPTEyMjkxO2UuZGl2aWRlPTI0NztlLmRpdmlkZXM9ODczOTtlLmRpdmlzaW9uc2xhc2g9ODcyNTtlLmRqZWN5cmlsbGljPTExMDY7ZS5ka3NoYWRlPTk2MTk7ZS5kbGluZWJlbG93PTc2OTU7ZS5kbHNxdWFyZT0xMzIwNztlLmRtYWNyb249MjczO2UuZG1vbm9zcGFjZT02NTM0ODtlLmRuYmxvY2s9OTYwNDtlLmRvY2hhZGF0aGFpPTM1OTg7ZS5kb2Rla3RoYWk9MzYwNDtlLmRvaGlyYWdhbmE9MTIzOTM7ZS5kb2thdGFrYW5hPTEyNDg5O2UuZG9sbGFyPTM2O2UuZG9sbGFyaW5mZXJpb3I9NjMyMDM7ZS5kb2xsYXJtb25vc3BhY2U9NjUyODQ7ZS5kb2xsYXJvbGRzdHlsZT02MzI2ODtlLmRvbGxhcnNtYWxsPTY1MTI5O2UuZG9sbGFyc3VwZXJpb3I9NjMyMDQ7ZS5kb25nPTgzNjM7ZS5kb3J1c3F1YXJlPTEzMDk0O2UuZG90YWNjZW50PTcyOTtlLmRvdGFjY2VudGNtYj03NzU7ZS5kb3RiZWxvd2NtYj04MDM7ZS5kb3RiZWxvd2NvbWI9ODAzO2UuZG90a2F0YWthbmE9MTI1Mzk7ZS5kb3RsZXNzaT0zMDU7ZS5kb3RsZXNzaj02MzE2NjtlLmRvdGxlc3Nqc3Ryb2tlaG9vaz02NDQ7ZS5kb3RtYXRoPTg5MDE7ZS5kb3R0ZWRjaXJjbGU9OTY3NjtlLmRvdWJsZXlvZHBhdGFoPTY0Mjg3O2UuZG91YmxleW9kcGF0YWhoZWJyZXc9NjQyODc7ZS5kb3dudGFja2JlbG93Y21iPTc5ODtlLmRvd250YWNrbW9kPTcyNTtlLmRwYXJlbj05Mzc1O2UuZHN1cGVyaW9yPTYzMjExO2UuZHRhaWw9NTk4O2UuZHRvcGJhcj0zOTY7ZS5kdWhpcmFnYW5hPTEyMzg5O2UuZHVrYXRha2FuYT0xMjQ4NTtlLmR6PTQ5OTtlLmR6YWx0b25lPTY3NTtlLmR6Y2Fyb249NDU0O2UuZHpjdXJsPTY3NztlLmR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDk7ZS5kemVjeXJpbGxpYz0xMTA5O2UuZHpoZWN5cmlsbGljPTExMTk7ZS5lPTEwMTtlLmVhY3V0ZT0yMzM7ZS5lYXJ0aD05NzkzO2UuZWJlbmdhbGk9MjQ0NztlLmVib3BvbW9mbz0xMjU3MjtlLmVicmV2ZT0yNzc7ZS5lY2FuZHJhZGV2YT0yMzE3O2UuZWNhbmRyYWd1amFyYXRpPTI3MDE7ZS5lY2FuZHJhdm93ZWxzaWduZGV2YT0yMzczO2UuZWNhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTc7ZS5lY2Fyb249MjgzO2UuZWNlZGlsbGFicmV2ZT03NzA5O2UuZWNoYXJtZW5pYW49MTM4MTtlLmVjaHlpd25hcm1lbmlhbj0xNDE1O2UuZWNpcmNsZT05NDI4O2UuZWNpcmN1bWZsZXg9MjM0O2UuZWNpcmN1bWZsZXhhY3V0ZT03ODcxO2UuZWNpcmN1bWZsZXhiZWxvdz03NzA1O2UuZWNpcmN1bWZsZXhkb3RiZWxvdz03ODc5O2UuZWNpcmN1bWZsZXhncmF2ZT03ODczO2UuZWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NTtlLmVjaXJjdW1mbGV4dGlsZGU9Nzg3NztlLmVjeXJpbGxpYz0xMTA4O2UuZWRibGdyYXZlPTUxNztlLmVkZXZhPTIzMTk7ZS5lZGllcmVzaXM9MjM1O2UuZWRvdD0yNzk7ZS5lZG90YWNjZW50PTI3OTtlLmVkb3RiZWxvdz03ODY1O2UuZWVndXJtdWtoaT0yNTc1O2UuZWVtYXRyYWd1cm11a2hpPTI2MzE7ZS5lZmN5cmlsbGljPTEwOTI7ZS5lZ3JhdmU9MjMyO2UuZWd1amFyYXRpPTI3MDM7ZS5laGFybWVuaWFuPTEzODM7ZS5laGJvcG9tb2ZvPTEyNTczO2UuZWhpcmFnYW5hPTEyMzYwO2UuZWhvb2thYm92ZT03ODY3O2UuZWlib3BvbW9mbz0xMjU3NTtlLmVpZ2h0PTU2O2UuZWlnaHRhcmFiaWM9MTY0MDtlLmVpZ2h0YmVuZ2FsaT0yNTQyO2UuZWlnaHRjaXJjbGU9OTMxOTtlLmVpZ2h0Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyOTtlLmVpZ2h0ZGV2YT0yNDE0O2UuZWlnaHRlZW5jaXJjbGU9OTMyOTtlLmVpZ2h0ZWVucGFyZW49OTM0OTtlLmVpZ2h0ZWVucGVyaW9kPTkzNjk7ZS5laWdodGd1amFyYXRpPTI3OTg7ZS5laWdodGd1cm11a2hpPTI2NzA7ZS5laWdodGhhY2thcmFiaWM9MTY0MDtlLmVpZ2h0aGFuZ3pob3U9MTIzMjg7ZS5laWdodGhub3RlYmVhbWVkPTk4MzU7ZS5laWdodGlkZW9ncmFwaGljcGFyZW49MTI4Mzk7ZS5laWdodGluZmVyaW9yPTgzMjg7ZS5laWdodG1vbm9zcGFjZT02NTMwNDtlLmVpZ2h0b2xkc3R5bGU9NjMyODg7ZS5laWdodHBhcmVuPTkzMzk7ZS5laWdodHBlcmlvZD05MzU5O2UuZWlnaHRwZXJzaWFuPTE3ODQ7ZS5laWdodHJvbWFuPTg1Njc7ZS5laWdodHN1cGVyaW9yPTgzMTI7ZS5laWdodHRoYWk9MzY3MjtlLmVpbnZlcnRlZGJyZXZlPTUxOTtlLmVpb3RpZmllZGN5cmlsbGljPTExMjU7ZS5la2F0YWthbmE9MTI0NTY7ZS5la2F0YWthbmFoYWxmd2lkdGg9NjUzOTY7ZS5la29ua2FyZ3VybXVraGk9MjY3NjtlLmVrb3JlYW49MTI2Mjg7ZS5lbGN5cmlsbGljPTEwODM7ZS5lbGVtZW50PTg3MTI7ZS5lbGV2ZW5jaXJjbGU9OTMyMjtlLmVsZXZlbnBhcmVuPTkzNDI7ZS5lbGV2ZW5wZXJpb2Q9OTM2MjtlLmVsZXZlbnJvbWFuPTg1NzA7ZS5lbGxpcHNpcz04MjMwO2UuZWxsaXBzaXN2ZXJ0aWNhbD04OTQyO2UuZW1hY3Jvbj0yNzU7ZS5lbWFjcm9uYWN1dGU9NzcwMztlLmVtYWNyb25ncmF2ZT03NzAxO2UuZW1jeXJpbGxpYz0xMDg0O2UuZW1kYXNoPTgyMTI7ZS5lbWRhc2h2ZXJ0aWNhbD02NTA3MztlLmVtb25vc3BhY2U9NjUzNDk7ZS5lbXBoYXNpc21hcmthcm1lbmlhbj0xMzcxO2UuZW1wdHlzZXQ9ODcwOTtlLmVuYm9wb21vZm89MTI1Nzk7ZS5lbmN5cmlsbGljPTEwODU7ZS5lbmRhc2g9ODIxMTtlLmVuZGFzaHZlcnRpY2FsPTY1MDc0O2UuZW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg3O2UuZW5nPTMzMTtlLmVuZ2JvcG9tb2ZvPTEyNTgxO2UuZW5naGVjeXJpbGxpYz0xMTg5O2UuZW5ob29rY3lyaWxsaWM9MTIyNDtlLmVuc3BhY2U9ODE5NDtlLmVvZ29uZWs9MjgxO2UuZW9rb3JlYW49MTI2Mjc7ZS5lb3Blbj02MDM7ZS5lb3BlbmNsb3NlZD02NjY7ZS5lb3BlbnJldmVyc2VkPTYwNDtlLmVvcGVucmV2ZXJzZWRjbG9zZWQ9NjA2O2UuZW9wZW5yZXZlcnNlZGhvb2s9NjA1O2UuZXBhcmVuPTkzNzY7ZS5lcHNpbG9uPTk0OTtlLmVwc2lsb250b25vcz05NDE7ZS5lcXVhbD02MTtlLmVxdWFsbW9ub3NwYWNlPTY1MzA5O2UuZXF1YWxzbWFsbD02NTEyNjtlLmVxdWFsc3VwZXJpb3I9ODMxNjtlLmVxdWl2YWxlbmNlPTg4MDE7ZS5lcmJvcG9tb2ZvPTEyNTgyO2UuZXJjeXJpbGxpYz0xMDg4O2UuZXJldmVyc2VkPTYwMDtlLmVyZXZlcnNlZGN5cmlsbGljPTExMDE7ZS5lc2N5cmlsbGljPTEwODk7ZS5lc2Rlc2NlbmRlcmN5cmlsbGljPTExOTU7ZS5lc2g9NjQzO2UuZXNoY3VybD02NDY7ZS5lc2hvcnRkZXZhPTIzMTg7ZS5lc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzQ7ZS5lc2hyZXZlcnNlZGxvb3A9NDI2O2UuZXNoc3F1YXRyZXZlcnNlZD02NDU7ZS5lc21hbGxoaXJhZ2FuYT0xMjM1OTtlLmVzbWFsbGthdGFrYW5hPTEyNDU1O2UuZXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODY7ZS5lc3RpbWF0ZWQ9ODQ5NDtlLmVzdXBlcmlvcj02MzIxMjtlLmV0YT05NTE7ZS5ldGFybWVuaWFuPTEzODQ7ZS5ldGF0b25vcz05NDI7ZS5ldGg9MjQwO2UuZXRpbGRlPTc4Njk7ZS5ldGlsZGViZWxvdz03NzA3O2UuZXRuYWh0YWZvdWtoaGVicmV3PTE0MjU7ZS5ldG5haHRhZm91a2hsZWZ0aGVicmV3PTE0MjU7ZS5ldG5haHRhaGVicmV3PTE0MjU7ZS5ldG5haHRhbGVmdGhlYnJldz0xNDI1O2UuZXR1cm5lZD00Nzc7ZS5ldWtvcmVhbj0xMjY0MTtlLmV1cm89ODM2NDtlLmV2b3dlbHNpZ25iZW5nYWxpPTI1MDM7ZS5ldm93ZWxzaWduZGV2YT0yMzc1O2UuZXZvd2Vsc2lnbmd1amFyYXRpPTI3NTk7ZS5leGNsYW09MzM7ZS5leGNsYW1hcm1lbmlhbj0xMzcyO2UuZXhjbGFtZGJsPTgyNTI7ZS5leGNsYW1kb3duPTE2MTtlLmV4Y2xhbWRvd25zbWFsbD02MzM5MztlLmV4Y2xhbW1vbm9zcGFjZT02NTI4MTtlLmV4Y2xhbXNtYWxsPTYzMjY1O2UuZXhpc3RlbnRpYWw9ODcwNztlLmV6aD02NTg7ZS5lemhjYXJvbj00OTU7ZS5lemhjdXJsPTY1OTtlLmV6aHJldmVyc2VkPTQ0MTtlLmV6aHRhaWw9NDQyO2UuZj0xMDI7ZS5mYWRldmE9MjM5ODtlLmZhZ3VybXVraGk9MjY1NDtlLmZhaHJlbmhlaXQ9ODQ1NztlLmZhdGhhYXJhYmljPTE2MTQ7ZS5mYXRoYWxvd2FyYWJpYz0xNjE0O2UuZmF0aGF0YW5hcmFiaWM9MTYxMTtlLmZib3BvbW9mbz0xMjU1MjtlLmZjaXJjbGU9OTQyOTtlLmZkb3RhY2NlbnQ9NzcxMTtlLmZlaGFyYWJpYz0xNjAxO2UuZmVoYXJtZW5pYW49MTQxNDtlLmZlaGZpbmFsYXJhYmljPTY1MjM0O2UuZmVoaW5pdGlhbGFyYWJpYz02NTIzNTtlLmZlaG1lZGlhbGFyYWJpYz02NTIzNjtlLmZlaWNvcHRpYz05OTc7ZS5mZW1hbGU9OTc5MjtlLmZmPTY0MjU2O2UuZl9mPTY0MjU2O2UuZmZpPTY0MjU5O2UuZl9mX2k9NjQyNTk7ZS5mZmw9NjQyNjA7ZS5mX2ZfbD02NDI2MDtlLmZpPTY0MjU3O2UuZl9pPTY0MjU3O2UuZmlmdGVlbmNpcmNsZT05MzI2O2UuZmlmdGVlbnBhcmVuPTkzNDY7ZS5maWZ0ZWVucGVyaW9kPTkzNjY7ZS5maWd1cmVkYXNoPTgyMTA7ZS5maWxsZWRib3g9OTYzMjtlLmZpbGxlZHJlY3Q9OTY0NDtlLmZpbmFsa2FmPTE0OTg7ZS5maW5hbGthZmRhZ2VzaD02NDMxNDtlLmZpbmFsa2FmZGFnZXNoaGVicmV3PTY0MzE0O2UuZmluYWxrYWZoZWJyZXc9MTQ5ODtlLmZpbmFsbWVtPTE1MDE7ZS5maW5hbG1lbWhlYnJldz0xNTAxO2UuZmluYWxudW49MTUwMztlLmZpbmFsbnVuaGVicmV3PTE1MDM7ZS5maW5hbHBlPTE1MDc7ZS5maW5hbHBlaGVicmV3PTE1MDc7ZS5maW5hbHRzYWRpPTE1MDk7ZS5maW5hbHRzYWRpaGVicmV3PTE1MDk7ZS5maXJzdHRvbmVjaGluZXNlPTcxMztlLmZpc2hleWU9OTY3MztlLmZpdGFjeXJpbGxpYz0xMTM5O2UuZml2ZT01MztlLmZpdmVhcmFiaWM9MTYzNztlLmZpdmViZW5nYWxpPTI1Mzk7ZS5maXZlY2lyY2xlPTkzMTY7ZS5maXZlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNjtlLmZpdmVkZXZhPTI0MTE7ZS5maXZlZWlnaHRocz04NTQxO2UuZml2ZWd1amFyYXRpPTI3OTU7ZS5maXZlZ3VybXVraGk9MjY2NztlLmZpdmVoYWNrYXJhYmljPTE2Mzc7ZS5maXZlaGFuZ3pob3U9MTIzMjU7ZS5maXZlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNjtlLmZpdmVpbmZlcmlvcj04MzI1O2UuZml2ZW1vbm9zcGFjZT02NTMwMTtlLmZpdmVvbGRzdHlsZT02MzI4NTtlLmZpdmVwYXJlbj05MzM2O2UuZml2ZXBlcmlvZD05MzU2O2UuZml2ZXBlcnNpYW49MTc4MTtlLmZpdmVyb21hbj04NTY0O2UuZml2ZXN1cGVyaW9yPTgzMDk7ZS5maXZldGhhaT0zNjY5O2UuZmw9NjQyNTg7ZS5mX2w9NjQyNTg7ZS5mbG9yaW49NDAyO2UuZm1vbm9zcGFjZT02NTM1MDtlLmZtc3F1YXJlPTEzMjA5O2UuZm9mYW50aGFpPTM2MTU7ZS5mb2ZhdGhhaT0zNjEzO2UuZm9uZ21hbnRoYWk9MzY2MztlLmZvcmFsbD04NzA0O2UuZm91cj01MjtlLmZvdXJhcmFiaWM9MTYzNjtlLmZvdXJiZW5nYWxpPTI1Mzg7ZS5mb3VyY2lyY2xlPTkzMTU7ZS5mb3VyY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNTtlLmZvdXJkZXZhPTI0MTA7ZS5mb3VyZ3VqYXJhdGk9Mjc5NDtlLmZvdXJndXJtdWtoaT0yNjY2O2UuZm91cmhhY2thcmFiaWM9MTYzNjtlLmZvdXJoYW5nemhvdT0xMjMyNDtlLmZvdXJpZGVvZ3JhcGhpY3BhcmVuPTEyODM1O2UuZm91cmluZmVyaW9yPTgzMjQ7ZS5mb3VybW9ub3NwYWNlPTY1MzAwO2UuZm91cm51bWVyYXRvcmJlbmdhbGk9MjU1MTtlLmZvdXJvbGRzdHlsZT02MzI4NDtlLmZvdXJwYXJlbj05MzM1O2UuZm91cnBlcmlvZD05MzU1O2UuZm91cnBlcnNpYW49MTc4MDtlLmZvdXJyb21hbj04NTYzO2UuZm91cnN1cGVyaW9yPTgzMDg7ZS5mb3VydGVlbmNpcmNsZT05MzI1O2UuZm91cnRlZW5wYXJlbj05MzQ1O2UuZm91cnRlZW5wZXJpb2Q9OTM2NTtlLmZvdXJ0aGFpPTM2Njg7ZS5mb3VydGh0b25lY2hpbmVzZT03MTU7ZS5mcGFyZW49OTM3NztlLmZyYWN0aW9uPTgyNjA7ZS5mcmFuYz04MzU1O2UuZz0xMDM7ZS5nYWJlbmdhbGk9MjQ1NTtlLmdhY3V0ZT01MDE7ZS5nYWRldmE9MjMyNztlLmdhZmFyYWJpYz0xNzExO2UuZ2FmZmluYWxhcmFiaWM9NjQ0MDM7ZS5nYWZpbml0aWFsYXJhYmljPTY0NDA0O2UuZ2FmbWVkaWFsYXJhYmljPTY0NDA1O2UuZ2FndWphcmF0aT0yNzExO2UuZ2FndXJtdWtoaT0yNTgzO2UuZ2FoaXJhZ2FuYT0xMjM2NDtlLmdha2F0YWthbmE9MTI0NjA7ZS5nYW1tYT05NDc7ZS5nYW1tYWxhdGluc21hbGw9NjExO2UuZ2FtbWFzdXBlcmlvcj03MzY7ZS5nYW5naWFjb3B0aWM9MTAwMztlLmdib3BvbW9mbz0xMjU1NztlLmdicmV2ZT0yODc7ZS5nY2Fyb249NDg3O2UuZ2NlZGlsbGE9MjkxO2UuZ2NpcmNsZT05NDMwO2UuZ2NpcmN1bWZsZXg9Mjg1O2UuZ2NvbW1hYWNjZW50PTI5MTtlLmdkb3Q9Mjg5O2UuZ2RvdGFjY2VudD0yODk7ZS5nZWN5cmlsbGljPTEwNzU7ZS5nZWhpcmFnYW5hPTEyMzcwO2UuZ2VrYXRha2FuYT0xMjQ2NjtlLmdlb21ldHJpY2FsbHllcXVhbD04Nzg1O2UuZ2VyZXNoYWNjZW50aGVicmV3PTE0MzY7ZS5nZXJlc2hoZWJyZXc9MTUyMztlLmdlcmVzaG11cWRhbWhlYnJldz0xNDM3O2UuZ2VybWFuZGJscz0yMjM7ZS5nZXJzaGF5aW1hY2NlbnRoZWJyZXc9MTQzODtlLmdlcnNoYXlpbWhlYnJldz0xNTI0O2UuZ2V0YW1hcms9MTIzMDc7ZS5naGFiZW5nYWxpPTI0NTY7ZS5naGFkYXJtZW5pYW49MTM5NDtlLmdoYWRldmE9MjMyODtlLmdoYWd1amFyYXRpPTI3MTI7ZS5naGFndXJtdWtoaT0yNTg0O2UuZ2hhaW5hcmFiaWM9MTU5NDtlLmdoYWluZmluYWxhcmFiaWM9NjUyMzA7ZS5naGFpbmluaXRpYWxhcmFiaWM9NjUyMzE7ZS5naGFpbm1lZGlhbGFyYWJpYz02NTIzMjtlLmdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTczO2UuZ2hlc3Ryb2tlY3lyaWxsaWM9MTE3MTtlLmdoZXVwdHVybmN5cmlsbGljPTExNjk7ZS5naGhhZGV2YT0yMzk0O2UuZ2hoYWd1cm11a2hpPTI2NTA7ZS5naG9vaz02MDg7ZS5naHpzcXVhcmU9MTMyMDM7ZS5naWhpcmFnYW5hPTEyMzY2O2UuZ2lrYXRha2FuYT0xMjQ2MjtlLmdpbWFybWVuaWFuPTEzNzk7ZS5naW1lbD0xNDkwO2UuZ2ltZWxkYWdlc2g9NjQzMDY7ZS5naW1lbGRhZ2VzaGhlYnJldz02NDMwNjtlLmdpbWVsaGVicmV3PTE0OTA7ZS5namVjeXJpbGxpYz0xMTA3O2UuZ2xvdHRhbGludmVydGVkc3Ryb2tlPTQ0NjtlLmdsb3R0YWxzdG9wPTY2MDtlLmdsb3R0YWxzdG9waW52ZXJ0ZWQ9NjYyO2UuZ2xvdHRhbHN0b3Btb2Q9NzA0O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZD02NjE7ZS5nbG90dGFsc3RvcHJldmVyc2VkbW9kPTcwNTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRzdXBlcmlvcj03NDA7ZS5nbG90dGFsc3RvcHN0cm9rZT02NzM7ZS5nbG90dGFsc3RvcHN0cm9rZXJldmVyc2VkPTY3NDtlLmdtYWNyb249NzcxMztlLmdtb25vc3BhY2U9NjUzNTE7ZS5nb2hpcmFnYW5hPTEyMzcyO2UuZ29rYXRha2FuYT0xMjQ2ODtlLmdwYXJlbj05Mzc4O2UuZ3Bhc3F1YXJlPTEzMjI4O2UuZ3JhZGllbnQ9ODcxMTtlLmdyYXZlPTk2O2UuZ3JhdmViZWxvd2NtYj03OTA7ZS5ncmF2ZWNtYj03Njg7ZS5ncmF2ZWNvbWI9NzY4O2UuZ3JhdmVkZXZhPTIzODc7ZS5ncmF2ZWxvd21vZD03MTg7ZS5ncmF2ZW1vbm9zcGFjZT02NTM0NDtlLmdyYXZldG9uZWNtYj04MzI7ZS5ncmVhdGVyPTYyO2UuZ3JlYXRlcmVxdWFsPTg4MDU7ZS5ncmVhdGVyZXF1YWxvcmxlc3M9ODkyMztlLmdyZWF0ZXJtb25vc3BhY2U9NjUzMTA7ZS5ncmVhdGVyb3JlcXVpdmFsZW50PTg4MTk7ZS5ncmVhdGVyb3JsZXNzPTg4MjM7ZS5ncmVhdGVyb3ZlcmVxdWFsPTg4MDc7ZS5ncmVhdGVyc21hbGw9NjUxMjU7ZS5nc2NyaXB0PTYwOTtlLmdzdHJva2U9NDg1O2UuZ3VoaXJhZ2FuYT0xMjM2ODtlLmd1aWxsZW1vdGxlZnQ9MTcxO2UuZ3VpbGxlbW90cmlnaHQ9MTg3O2UuZ3VpbHNpbmdsbGVmdD04MjQ5O2UuZ3VpbHNpbmdscmlnaHQ9ODI1MDtlLmd1a2F0YWthbmE9MTI0NjQ7ZS5ndXJhbXVzcXVhcmU9MTMwODA7ZS5neXNxdWFyZT0xMzI1NztlLmg9MTA0O2UuaGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkzO2UuaGFhbHRvbmVhcmFiaWM9MTcyOTtlLmhhYmVuZ2FsaT0yNDg5O2UuaGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAzO2UuaGFkZXZhPTIzNjE7ZS5oYWd1amFyYXRpPTI3NDU7ZS5oYWd1cm11a2hpPTI2MTc7ZS5oYWhhcmFiaWM9MTU4MTtlLmhhaGZpbmFsYXJhYmljPTY1MTg2O2UuaGFoaW5pdGlhbGFyYWJpYz02NTE4NztlLmhhaGlyYWdhbmE9MTIzOTk7ZS5oYWhtZWRpYWxhcmFiaWM9NjUxODg7ZS5oYWl0dXNxdWFyZT0xMzA5ODtlLmhha2F0YWthbmE9MTI0OTU7ZS5oYWthdGFrYW5haGFsZndpZHRoPTY1NDE4O2UuaGFsYW50Z3VybXVraGk9MjYzNztlLmhhbXphYXJhYmljPTE1Njk7ZS5oYW16YWxvd2FyYWJpYz0xNTY5O2UuaGFuZ3VsZmlsbGVyPTEyNjQ0O2UuaGFyZHNpZ25jeXJpbGxpYz0xMDk4O2UuaGFycG9vbmxlZnRiYXJidXA9ODYzNjtlLmhhcnBvb25yaWdodGJhcmJ1cD04NjQwO2UuaGFzcXVhcmU9MTMyNTg7ZS5oYXRhZnBhdGFoPTE0NTg7ZS5oYXRhZnBhdGFoMTY9MTQ1ODtlLmhhdGFmcGF0YWgyMz0xNDU4O2UuaGF0YWZwYXRhaDJmPTE0NTg7ZS5oYXRhZnBhdGFoaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFobmFycm93aGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFocXVhcnRlcmhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHdpZGVoZWJyZXc9MTQ1ODtlLmhhdGFmcWFtYXRzPTE0NTk7ZS5oYXRhZnFhbWF0czFiPTE0NTk7ZS5oYXRhZnFhbWF0czI4PTE0NTk7ZS5oYXRhZnFhbWF0czM0PTE0NTk7ZS5oYXRhZnFhbWF0c2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNuYXJyb3doZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzcXVhcnRlcmhlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHN3aWRlaGVicmV3PTE0NTk7ZS5oYXRhZnNlZ29sPTE0NTc7ZS5oYXRhZnNlZ29sMTc9MTQ1NztlLmhhdGFmc2Vnb2wyND0xNDU3O2UuaGF0YWZzZWdvbDMwPTE0NTc7ZS5oYXRhZnNlZ29saGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sbmFycm93aGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29scXVhcnRlcmhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHdpZGVoZWJyZXc9MTQ1NztlLmhiYXI9Mjk1O2UuaGJvcG9tb2ZvPTEyNTU5O2UuaGJyZXZlYmVsb3c9NzcyMztlLmhjZWRpbGxhPTc3MjE7ZS5oY2lyY2xlPTk0MzE7ZS5oY2lyY3VtZmxleD0yOTM7ZS5oZGllcmVzaXM9NzcxOTtlLmhkb3RhY2NlbnQ9NzcxNTtlLmhkb3RiZWxvdz03NzE3O2UuaGU9MTQ5MjtlLmhlYXJ0PTk4Mjk7ZS5oZWFydHN1aXRibGFjaz05ODI5O2UuaGVhcnRzdWl0d2hpdGU9OTgyNTtlLmhlZGFnZXNoPTY0MzA4O2UuaGVkYWdlc2hoZWJyZXc9NjQzMDg7ZS5oZWhhbHRvbmVhcmFiaWM9MTcyOTtlLmhlaGFyYWJpYz0xNjA3O2UuaGVoZWJyZXc9MTQ5MjtlLmhlaGZpbmFsYWx0b25lYXJhYmljPTY0NDIzO2UuaGVoZmluYWxhbHR0d29hcmFiaWM9NjUyNTg7ZS5oZWhmaW5hbGFyYWJpYz02NTI1ODtlLmhlaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NDQyMTtlLmhlaGhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NDQyMDtlLmhlaGluaXRpYWxhbHRvbmVhcmFiaWM9NjQ0MjQ7ZS5oZWhpbml0aWFsYXJhYmljPTY1MjU5O2UuaGVoaXJhZ2FuYT0xMjQwODtlLmhlaG1lZGlhbGFsdG9uZWFyYWJpYz02NDQyNTtlLmhlaG1lZGlhbGFyYWJpYz02NTI2MDtlLmhlaXNlaWVyYXNxdWFyZT0xMzE3OTtlLmhla2F0YWthbmE9MTI1MDQ7ZS5oZWthdGFrYW5haGFsZndpZHRoPTY1NDIxO2UuaGVrdXRhYXJ1c3F1YXJlPTEzMTEwO2UuaGVuZ2hvb2s9NjE1O2UuaGVydXR1c3F1YXJlPTEzMTEzO2UuaGV0PTE0OTU7ZS5oZXRoZWJyZXc9MTQ5NTtlLmhob29rPTYxNDtlLmhob29rc3VwZXJpb3I9Njg5O2UuaGlldWhhY2lyY2xla29yZWFuPTEyOTIzO2UuaGlldWhhcGFyZW5rb3JlYW49MTI4Mjc7ZS5oaWV1aGNpcmNsZWtvcmVhbj0xMjkwOTtlLmhpZXVoa29yZWFuPTEyNjIyO2UuaGlldWhwYXJlbmtvcmVhbj0xMjgxMztlLmhpaGlyYWdhbmE9MTI0MDI7ZS5oaWthdGFrYW5hPTEyNDk4O2UuaGlrYXRha2FuYWhhbGZ3aWR0aD02NTQxOTtlLmhpcmlxPTE0NjA7ZS5oaXJpcTE0PTE0NjA7ZS5oaXJpcTIxPTE0NjA7ZS5oaXJpcTJkPTE0NjA7ZS5oaXJpcWhlYnJldz0xNDYwO2UuaGlyaXFuYXJyb3doZWJyZXc9MTQ2MDtlLmhpcmlxcXVhcnRlcmhlYnJldz0xNDYwO2UuaGlyaXF3aWRlaGVicmV3PTE0NjA7ZS5obGluZWJlbG93PTc4MzA7ZS5obW9ub3NwYWNlPTY1MzUyO2UuaG9hcm1lbmlhbj0xMzkyO2UuaG9oaXB0aGFpPTM2Mjc7ZS5ob2hpcmFnYW5hPTEyNDExO2UuaG9rYXRha2FuYT0xMjUwNztlLmhva2F0YWthbmFoYWxmd2lkdGg9NjU0MjI7ZS5ob2xhbT0xNDY1O2UuaG9sYW0xOT0xNDY1O2UuaG9sYW0yNj0xNDY1O2UuaG9sYW0zMj0xNDY1O2UuaG9sYW1oZWJyZXc9MTQ2NTtlLmhvbGFtbmFycm93aGVicmV3PTE0NjU7ZS5ob2xhbXF1YXJ0ZXJoZWJyZXc9MTQ2NTtlLmhvbGFtd2lkZWhlYnJldz0xNDY1O2UuaG9ub2todWt0aGFpPTM2MzA7ZS5ob29rYWJvdmVjb21iPTc3NztlLmhvb2tjbWI9Nzc3O2UuaG9va3BhbGF0YWxpemVkYmVsb3djbWI9ODAxO2UuaG9va3JldHJvZmxleGJlbG93Y21iPTgwMjtlLmhvb25zcXVhcmU9MTMxMjI7ZS5ob3JpY29wdGljPTEwMDE7ZS5ob3Jpem9udGFsYmFyPTgyMTM7ZS5ob3JuY21iPTc5NTtlLmhvdHNwcmluZ3M9OTgzMjtlLmhvdXNlPTg5NjI7ZS5ocGFyZW49OTM3OTtlLmhzdXBlcmlvcj02ODg7ZS5odHVybmVkPTYxMztlLmh1aGlyYWdhbmE9MTI0MDU7ZS5odWlpdG9zcXVhcmU9MTMxMDc7ZS5odWthdGFrYW5hPTEyNTAxO2UuaHVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMDtlLmh1bmdhcnVtbGF1dD03MzM7ZS5odW5nYXJ1bWxhdXRjbWI9Nzc5O2UuaHY9NDA1O2UuaHlwaGVuPTQ1O2UuaHlwaGVuaW5mZXJpb3I9NjMyMDU7ZS5oeXBoZW5tb25vc3BhY2U9NjUyOTM7ZS5oeXBoZW5zbWFsbD02NTEyMztlLmh5cGhlbnN1cGVyaW9yPTYzMjA2O2UuaHlwaGVudHdvPTgyMDg7ZS5pPTEwNTtlLmlhY3V0ZT0yMzc7ZS5pYWN5cmlsbGljPTExMDM7ZS5pYmVuZ2FsaT0yNDM5O2UuaWJvcG9tb2ZvPTEyNTgzO2UuaWJyZXZlPTMwMTtlLmljYXJvbj00NjQ7ZS5pY2lyY2xlPTk0MzI7ZS5pY2lyY3VtZmxleD0yMzg7ZS5pY3lyaWxsaWM9MTExMDtlLmlkYmxncmF2ZT01MjE7ZS5pZGVvZ3JhcGhlYXJ0aGNpcmNsZT0xMjk0MztlLmlkZW9ncmFwaGZpcmVjaXJjbGU9MTI5Mzk7ZS5pZGVvZ3JhcGhpY2FsbGlhbmNlcGFyZW49MTI4NjM7ZS5pZGVvZ3JhcGhpY2NhbGxwYXJlbj0xMjg1ODtlLmlkZW9ncmFwaGljY2VudHJlY2lyY2xlPTEyOTY1O2UuaWRlb2dyYXBoaWNjbG9zZT0xMjI5NDtlLmlkZW9ncmFwaGljY29tbWE9MTIyODk7ZS5pZGVvZ3JhcGhpY2NvbW1hbGVmdD02NTM4MDtlLmlkZW9ncmFwaGljY29uZ3JhdHVsYXRpb25wYXJlbj0xMjg1NTtlLmlkZW9ncmFwaGljY29ycmVjdGNpcmNsZT0xMjk2MztlLmlkZW9ncmFwaGljZWFydGhwYXJlbj0xMjg0NztlLmlkZW9ncmFwaGljZW50ZXJwcmlzZXBhcmVuPTEyODYxO2UuaWRlb2dyYXBoaWNleGNlbGxlbnRjaXJjbGU9MTI5NTc7ZS5pZGVvZ3JhcGhpY2Zlc3RpdmFscGFyZW49MTI4NjQ7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbGNpcmNsZT0xMjk1MDtlLmlkZW9ncmFwaGljZmluYW5jaWFscGFyZW49MTI4NTQ7ZS5pZGVvZ3JhcGhpY2ZpcmVwYXJlbj0xMjg0MztlLmlkZW9ncmFwaGljaGF2ZXBhcmVuPTEyODUwO2UuaWRlb2dyYXBoaWNoaWdoY2lyY2xlPTEyOTY0O2UuaWRlb2dyYXBoaWNpdGVyYXRpb25tYXJrPTEyMjkzO2UuaWRlb2dyYXBoaWNsYWJvcmNpcmNsZT0xMjk1MjtlLmlkZW9ncmFwaGljbGFib3JwYXJlbj0xMjg1NjtlLmlkZW9ncmFwaGljbGVmdGNpcmNsZT0xMjk2NztlLmlkZW9ncmFwaGljbG93Y2lyY2xlPTEyOTY2O2UuaWRlb2dyYXBoaWNtZWRpY2luZWNpcmNsZT0xMjk2OTtlLmlkZW9ncmFwaGljbWV0YWxwYXJlbj0xMjg0NjtlLmlkZW9ncmFwaGljbW9vbnBhcmVuPTEyODQyO2UuaWRlb2dyYXBoaWNuYW1lcGFyZW49MTI4NTI7ZS5pZGVvZ3JhcGhpY3BlcmlvZD0xMjI5MDtlLmlkZW9ncmFwaGljcHJpbnRjaXJjbGU9MTI5NTg7ZS5pZGVvZ3JhcGhpY3JlYWNocGFyZW49MTI4Njc7ZS5pZGVvZ3JhcGhpY3JlcHJlc2VudHBhcmVuPTEyODU3O2UuaWRlb2dyYXBoaWNyZXNvdXJjZXBhcmVuPTEyODYyO2UuaWRlb2dyYXBoaWNyaWdodGNpcmNsZT0xMjk2ODtlLmlkZW9ncmFwaGljc2VjcmV0Y2lyY2xlPTEyOTUzO2UuaWRlb2dyYXBoaWNzZWxmcGFyZW49MTI4NjY7ZS5pZGVvZ3JhcGhpY3NvY2lldHlwYXJlbj0xMjg1MTtlLmlkZW9ncmFwaGljc3BhY2U9MTIyODg7ZS5pZGVvZ3JhcGhpY3NwZWNpYWxwYXJlbj0xMjg1MztlLmlkZW9ncmFwaGljc3RvY2twYXJlbj0xMjg0OTtlLmlkZW9ncmFwaGljc3R1ZHlwYXJlbj0xMjg1OTtlLmlkZW9ncmFwaGljc3VucGFyZW49MTI4NDg7ZS5pZGVvZ3JhcGhpY3N1cGVydmlzZXBhcmVuPTEyODYwO2UuaWRlb2dyYXBoaWN3YXRlcnBhcmVuPTEyODQ0O2UuaWRlb2dyYXBoaWN3b29kcGFyZW49MTI4NDU7ZS5pZGVvZ3JhcGhpY3plcm89MTIyOTU7ZS5pZGVvZ3JhcGhtZXRhbGNpcmNsZT0xMjk0MjtlLmlkZW9ncmFwaG1vb25jaXJjbGU9MTI5Mzg7ZS5pZGVvZ3JhcGhuYW1lY2lyY2xlPTEyOTQ4O2UuaWRlb2dyYXBoc3VuY2lyY2xlPTEyOTQ0O2UuaWRlb2dyYXBod2F0ZXJjaXJjbGU9MTI5NDA7ZS5pZGVvZ3JhcGh3b29kY2lyY2xlPTEyOTQxO2UuaWRldmE9MjMxMTtlLmlkaWVyZXNpcz0yMzk7ZS5pZGllcmVzaXNhY3V0ZT03NzI3O2UuaWRpZXJlc2lzY3lyaWxsaWM9MTI1MztlLmlkb3RiZWxvdz03ODgzO2UuaWVicmV2ZWN5cmlsbGljPTEyMzk7ZS5pZWN5cmlsbGljPTEwNzc7ZS5pZXVuZ2FjaXJjbGVrb3JlYW49MTI5MTc7ZS5pZXVuZ2FwYXJlbmtvcmVhbj0xMjgyMTtlLmlldW5nY2lyY2xla29yZWFuPTEyOTAzO2UuaWV1bmdrb3JlYW49MTI2MTU7ZS5pZXVuZ3BhcmVua29yZWFuPTEyODA3O2UuaWdyYXZlPTIzNjtlLmlndWphcmF0aT0yNjk1O2UuaWd1cm11a2hpPTI1Njc7ZS5paGlyYWdhbmE9MTIzNTY7ZS5paG9va2Fib3ZlPTc4ODE7ZS5paWJlbmdhbGk9MjQ0MDtlLmlpY3lyaWxsaWM9MTA4MDtlLmlpZGV2YT0yMzEyO2UuaWlndWphcmF0aT0yNjk2O2UuaWlndXJtdWtoaT0yNTY4O2UuaWltYXRyYWd1cm11a2hpPTI2MjQ7ZS5paW52ZXJ0ZWRicmV2ZT01MjM7ZS5paXNob3J0Y3lyaWxsaWM9MTA4MTtlLmlpdm93ZWxzaWduYmVuZ2FsaT0yNDk2O2UuaWl2b3dlbHNpZ25kZXZhPTIzNjg7ZS5paXZvd2Vsc2lnbmd1amFyYXRpPTI3NTI7ZS5paj0zMDc7ZS5pa2F0YWthbmE9MTI0NTI7ZS5pa2F0YWthbmFoYWxmd2lkdGg9NjUzOTQ7ZS5pa29yZWFuPTEyNjQzO2UuaWxkZT03MzI7ZS5pbHV5aGVicmV3PTE0NTI7ZS5pbWFjcm9uPTI5OTtlLmltYWNyb25jeXJpbGxpYz0xMjUxO2UuaW1hZ2VvcmFwcHJveGltYXRlbHllcXVhbD04Nzg3O2UuaW1hdHJhZ3VybXVraGk9MjYyMztlLmltb25vc3BhY2U9NjUzNTM7ZS5pbmNyZW1lbnQ9ODcxMDtlLmluZmluaXR5PTg3MzQ7ZS5pbmlhcm1lbmlhbj0xMzg3O2UuaW50ZWdyYWw9ODc0NztlLmludGVncmFsYm90dG9tPTg5OTM7ZS5pbnRlZ3JhbGJ0PTg5OTM7ZS5pbnRlZ3JhbGV4PTYzNzMzO2UuaW50ZWdyYWx0b3A9ODk5MjtlLmludGVncmFsdHA9ODk5MjtlLmludGVyc2VjdGlvbj04NzQ1O2UuaW50aXNxdWFyZT0xMzA2MTtlLmludmJ1bGxldD05Njg4O2UuaW52Y2lyY2xlPTk2ODk7ZS5pbnZzbWlsZWZhY2U9OTc4NztlLmlvY3lyaWxsaWM9MTEwNTtlLmlvZ29uZWs9MzAzO2UuaW90YT05NTM7ZS5pb3RhZGllcmVzaXM9OTcwO2UuaW90YWRpZXJlc2lzdG9ub3M9OTEyO2UuaW90YWxhdGluPTYxNztlLmlvdGF0b25vcz05NDM7ZS5pcGFyZW49OTM4MDtlLmlyaWd1cm11a2hpPTI2NzQ7ZS5pc21hbGxoaXJhZ2FuYT0xMjM1NTtlLmlzbWFsbGthdGFrYW5hPTEyNDUxO2UuaXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODQ7ZS5pc3NoYXJiZW5nYWxpPTI1NTQ7ZS5pc3Ryb2tlPTYxNjtlLmlzdXBlcmlvcj02MzIxMztlLml0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ1O2UuaXRlcmF0aW9ua2F0YWthbmE9MTI1NDE7ZS5pdGlsZGU9Mjk3O2UuaXRpbGRlYmVsb3c9NzcyNTtlLml1Ym9wb21vZm89MTI1ODU7ZS5pdWN5cmlsbGljPTExMDI7ZS5pdm93ZWxzaWduYmVuZ2FsaT0yNDk1O2UuaXZvd2Vsc2lnbmRldmE9MjM2NztlLml2b3dlbHNpZ25ndWphcmF0aT0yNzUxO2UuaXpoaXRzYWN5cmlsbGljPTExNDE7ZS5pemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQzO2Uuaj0xMDY7ZS5qYWFybWVuaWFuPTEzOTM7ZS5qYWJlbmdhbGk9MjQ2MDtlLmphZGV2YT0yMzMyO2UuamFndWphcmF0aT0yNzE2O2UuamFndXJtdWtoaT0yNTg4O2UuamJvcG9tb2ZvPTEyNTYwO2UuamNhcm9uPTQ5NjtlLmpjaXJjbGU9OTQzMztlLmpjaXJjdW1mbGV4PTMwOTtlLmpjcm9zc2VkdGFpbD02Njk7ZS5qZG90bGVzc3N0cm9rZT02MDc7ZS5qZWN5cmlsbGljPTExMTI7ZS5qZWVtYXJhYmljPTE1ODA7ZS5qZWVtZmluYWxhcmFiaWM9NjUxODI7ZS5qZWVtaW5pdGlhbGFyYWJpYz02NTE4MztlLmplZW1tZWRpYWxhcmFiaWM9NjUxODQ7ZS5qZWhhcmFiaWM9MTY4ODtlLmplaGZpbmFsYXJhYmljPTY0Mzk1O2UuamhhYmVuZ2FsaT0yNDYxO2UuamhhZGV2YT0yMzMzO2UuamhhZ3VqYXJhdGk9MjcxNztlLmpoYWd1cm11a2hpPTI1ODk7ZS5qaGVoYXJtZW5pYW49MTQwMztlLmppcz0xMjI5MjtlLmptb25vc3BhY2U9NjUzNTQ7ZS5qcGFyZW49OTM4MTtlLmpzdXBlcmlvcj02OTA7ZS5rPTEwNztlLmthYmFzaGtpcmN5cmlsbGljPTExODU7ZS5rYWJlbmdhbGk9MjQ1MztlLmthY3V0ZT03NzI5O2Uua2FjeXJpbGxpYz0xMDgyO2Uua2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc5O2Uua2FkZXZhPTIzMjU7ZS5rYWY9MTQ5OTtlLmthZmFyYWJpYz0xNjAzO2Uua2FmZGFnZXNoPTY0MzE1O2Uua2FmZGFnZXNoaGVicmV3PTY0MzE1O2Uua2FmZmluYWxhcmFiaWM9NjUyNDI7ZS5rYWZoZWJyZXc9MTQ5OTtlLmthZmluaXRpYWxhcmFiaWM9NjUyNDM7ZS5rYWZtZWRpYWxhcmFiaWM9NjUyNDQ7ZS5rYWZyYWZlaGVicmV3PTY0MzMzO2Uua2FndWphcmF0aT0yNzA5O2Uua2FndXJtdWtoaT0yNTgxO2Uua2FoaXJhZ2FuYT0xMjM2MztlLmthaG9va2N5cmlsbGljPTEyMjA7ZS5rYWthdGFrYW5hPTEyNDU5O2Uua2FrYXRha2FuYWhhbGZ3aWR0aD02NTM5ODtlLmthcHBhPTk1NDtlLmthcHBhc3ltYm9sZ3JlZWs9MTAwODtlLmthcHllb3VubWlldW1rb3JlYW49MTI2NTc7ZS5rYXB5ZW91bnBoaWV1cGhrb3JlYW49MTI2NzY7ZS5rYXB5ZW91bnBpZXVwa29yZWFuPTEyNjY0O2Uua2FweWVvdW5zc2FuZ3BpZXVwa29yZWFuPTEyNjY1O2Uua2Fyb3JpaXNxdWFyZT0xMzA2OTtlLmthc2hpZGFhdXRvYXJhYmljPTE2MDA7ZS5rYXNoaWRhYXV0b25vc2lkZWJlYXJpbmdhcmFiaWM9MTYwMDtlLmthc21hbGxrYXRha2FuYT0xMjUzMztlLmthc3F1YXJlPTEzMTg4O2Uua2FzcmFhcmFiaWM9MTYxNjtlLmthc3JhdGFuYXJhYmljPTE2MTM7ZS5rYXN0cm9rZWN5cmlsbGljPTExODM7ZS5rYXRhaGlyYXByb2xvbmdtYXJraGFsZndpZHRoPTY1MzkyO2Uua2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODE7ZS5rYm9wb21vZm89MTI1NTg7ZS5rY2Fsc3F1YXJlPTEzMTkzO2Uua2Nhcm9uPTQ4OTtlLmtjZWRpbGxhPTMxMTtlLmtjaXJjbGU9OTQzNDtlLmtjb21tYWFjY2VudD0zMTE7ZS5rZG90YmVsb3c9NzczMTtlLmtlaGFybWVuaWFuPTE0MTI7ZS5rZWhpcmFnYW5hPTEyMzY5O2Uua2VrYXRha2FuYT0xMjQ2NTtlLmtla2F0YWthbmFoYWxmd2lkdGg9NjU0MDE7ZS5rZW5hcm1lbmlhbj0xMzkxO2Uua2VzbWFsbGthdGFrYW5hPTEyNTM0O2Uua2dyZWVubGFuZGljPTMxMjtlLmtoYWJlbmdhbGk9MjQ1NDtlLmtoYWN5cmlsbGljPTEwOTM7ZS5raGFkZXZhPTIzMjY7ZS5raGFndWphcmF0aT0yNzEwO2Uua2hhZ3VybXVraGk9MjU4MjtlLmtoYWhhcmFiaWM9MTU4MjtlLmtoYWhmaW5hbGFyYWJpYz02NTE5MDtlLmtoYWhpbml0aWFsYXJhYmljPTY1MTkxO2Uua2hhaG1lZGlhbGFyYWJpYz02NTE5MjtlLmtoZWljb3B0aWM9OTk5O2Uua2hoYWRldmE9MjM5MztlLmtoaGFndXJtdWtoaT0yNjQ5O2Uua2hpZXVraGFjaXJjbGVrb3JlYW49MTI5MjA7ZS5raGlldWtoYXBhcmVua29yZWFuPTEyODI0O2Uua2hpZXVraGNpcmNsZWtvcmVhbj0xMjkwNjtlLmtoaWV1a2hrb3JlYW49MTI2MTk7ZS5raGlldWtocGFyZW5rb3JlYW49MTI4MTA7ZS5raG9raGFpdGhhaT0zNTg2O2Uua2hva2hvbnRoYWk9MzU4OTtlLmtob2todWF0dGhhaT0zNTg3O2Uua2hva2h3YWl0aGFpPTM1ODg7ZS5raG9tdXR0aGFpPTM2NzU7ZS5raG9vaz00MDk7ZS5raG9yYWtoYW5ndGhhaT0zNTkwO2Uua2h6c3F1YXJlPTEzMjAxO2Uua2loaXJhZ2FuYT0xMjM2NTtlLmtpa2F0YWthbmE9MTI0NjE7ZS5raWthdGFrYW5haGFsZndpZHRoPTY1Mzk5O2Uua2lyb2d1cmFtdXNxdWFyZT0xMzA3NztlLmtpcm9tZWV0b3J1c3F1YXJlPTEzMDc4O2Uua2lyb3NxdWFyZT0xMzA3NjtlLmtpeWVva2FjaXJjbGVrb3JlYW49MTI5MTA7ZS5raXllb2thcGFyZW5rb3JlYW49MTI4MTQ7ZS5raXllb2tjaXJjbGVrb3JlYW49MTI4OTY7ZS5raXllb2trb3JlYW49MTI1OTM7ZS5raXllb2twYXJlbmtvcmVhbj0xMjgwMDtlLmtpeWVva3Npb3Nrb3JlYW49MTI1OTU7ZS5ramVjeXJpbGxpYz0xMTE2O2Uua2xpbmViZWxvdz03NzMzO2Uua2xzcXVhcmU9MTMyMDg7ZS5rbWN1YmVkc3F1YXJlPTEzMjIyO2Uua21vbm9zcGFjZT02NTM1NTtlLmttc3F1YXJlZHNxdWFyZT0xMzIxODtlLmtvaGlyYWdhbmE9MTIzNzE7ZS5rb2htc3F1YXJlPTEzMjQ4O2Uua29rYWl0aGFpPTM1ODU7ZS5rb2thdGFrYW5hPTEyNDY3O2Uua29rYXRha2FuYWhhbGZ3aWR0aD02NTQwMjtlLmtvb3Bvc3F1YXJlPTEzMDg2O2Uua29wcGFjeXJpbGxpYz0xMTUzO2Uua29yZWFuc3RhbmRhcmRzeW1ib2w9MTI5Mjc7ZS5rb3JvbmlzY21iPTgzNTtlLmtwYXJlbj05MzgyO2Uua3Bhc3F1YXJlPTEzMjI2O2Uua3NpY3lyaWxsaWM9MTEzNTtlLmt0c3F1YXJlPTEzMjYzO2Uua3R1cm5lZD02NzA7ZS5rdWhpcmFnYW5hPTEyMzY3O2Uua3VrYXRha2FuYT0xMjQ2MztlLmt1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDA7ZS5rdnNxdWFyZT0xMzI0MDtlLmt3c3F1YXJlPTEzMjQ2O2UubD0xMDg7ZS5sYWJlbmdhbGk9MjQ4MjtlLmxhY3V0ZT0zMTQ7ZS5sYWRldmE9MjM1NDtlLmxhZ3VqYXJhdGk9MjczODtlLmxhZ3VybXVraGk9MjYxMDtlLmxha2toYW5neWFvdGhhaT0zNjUzO2UubGFtYWxlZmZpbmFsYXJhYmljPTY1Mjc2O2UubGFtYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTI3MjtlLmxhbWFsZWZoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNzE7ZS5sYW1hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1Mjc0O2UubGFtYWxlZmhhbXphYmVsb3dpc29sYXRlZGFyYWJpYz02NTI3MztlLmxhbWFsZWZpc29sYXRlZGFyYWJpYz02NTI3NTtlLmxhbWFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUyNzA7ZS5sYW1hbGVmbWFkZGFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjY5O2UubGFtYXJhYmljPTE2MDQ7ZS5sYW1iZGE9OTU1O2UubGFtYmRhc3Ryb2tlPTQxMTtlLmxhbWVkPTE1MDA7ZS5sYW1lZGRhZ2VzaD02NDMxNjtlLmxhbWVkZGFnZXNoaGVicmV3PTY0MzE2O2UubGFtZWRoZWJyZXc9MTUwMDtlLmxhbWZpbmFsYXJhYmljPTY1MjQ2O2UubGFtaGFoaW5pdGlhbGFyYWJpYz02NDcxNDtlLmxhbWluaXRpYWxhcmFiaWM9NjUyNDc7ZS5sYW1qZWVtaW5pdGlhbGFyYWJpYz02NDcxMztlLmxhbWtoYWhpbml0aWFsYXJhYmljPTY0NzE1O2UubGFtbGFtaGVoaXNvbGF0ZWRhcmFiaWM9NjUwMTA7ZS5sYW1tZWRpYWxhcmFiaWM9NjUyNDg7ZS5sYW1tZWVtaGFoaW5pdGlhbGFyYWJpYz02NDkwNDtlLmxhbW1lZW1pbml0aWFsYXJhYmljPTY0NzE2O2UubGFyZ2VjaXJjbGU9OTcxMTtlLmxiYXI9NDEwO2UubGJlbHQ9NjIwO2UubGJvcG9tb2ZvPTEyNTU2O2UubGNhcm9uPTMxODtlLmxjZWRpbGxhPTMxNjtlLmxjaXJjbGU9OTQzNTtlLmxjaXJjdW1mbGV4YmVsb3c9Nzc0MTtlLmxjb21tYWFjY2VudD0zMTY7ZS5sZG90PTMyMDtlLmxkb3RhY2NlbnQ9MzIwO2UubGRvdGJlbG93PTc3MzU7ZS5sZG90YmVsb3dtYWNyb249NzczNztlLmxlZnRhbmdsZWFib3ZlY21iPTc5NDtlLmxlZnR0YWNrYmVsb3djbWI9NzkyO2UubGVzcz02MDtlLmxlc3NlcXVhbD04ODA0O2UubGVzc2VxdWFsb3JncmVhdGVyPTg5MjI7ZS5sZXNzbW9ub3NwYWNlPTY1MzA4O2UubGVzc29yZXF1aXZhbGVudD04ODE4O2UubGVzc29yZ3JlYXRlcj04ODIyO2UubGVzc292ZXJlcXVhbD04ODA2O2UubGVzc3NtYWxsPTY1MTI0O2UubGV6aD02MjI7ZS5sZmJsb2NrPTk2MTI7ZS5saG9va3JldHJvZmxleD02MjE7ZS5saXJhPTgzNTY7ZS5saXduYXJtZW5pYW49MTM4ODtlLmxqPTQ1NztlLmxqZWN5cmlsbGljPTExMTM7ZS5sbD02MzE2ODtlLmxsYWRldmE9MjM1NTtlLmxsYWd1amFyYXRpPTI3Mzk7ZS5sbGluZWJlbG93PTc3Mzk7ZS5sbGxhZGV2YT0yMzU2O2UubGx2b2NhbGljYmVuZ2FsaT0yNTI5O2UubGx2b2NhbGljZGV2YT0yNDAxO2UubGx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMxO2UubGx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAzO2UubG1pZGRsZXRpbGRlPTYxOTtlLmxtb25vc3BhY2U9NjUzNTY7ZS5sbXNxdWFyZT0xMzI2NDtlLmxvY2h1bGF0aGFpPTM2Mjg7ZS5sb2dpY2FsYW5kPTg3NDM7ZS5sb2dpY2Fsbm90PTE3MjtlLmxvZ2ljYWxub3RyZXZlcnNlZD04OTc2O2UubG9naWNhbG9yPTg3NDQ7ZS5sb2xpbmd0aGFpPTM2MjE7ZS5sb25ncz0zODM7ZS5sb3dsaW5lY2VudGVybGluZT02NTEwMjtlLmxvd2xpbmVjbWI9ODE4O2UubG93bGluZWRhc2hlZD02NTEwMTtlLmxvemVuZ2U9OTY3NDtlLmxwYXJlbj05MzgzO2UubHNsYXNoPTMyMjtlLmxzcXVhcmU9ODQ2NztlLmxzdXBlcmlvcj02MzIxNDtlLmx0c2hhZGU9OTYxNztlLmx1dGhhaT0zNjIyO2UubHZvY2FsaWNiZW5nYWxpPTI0NDQ7ZS5sdm9jYWxpY2RldmE9MjMxNjtlLmx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMwO2UubHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDI7ZS5seHNxdWFyZT0xMzI2NztlLm09MTA5O2UubWFiZW5nYWxpPTI0Nzg7ZS5tYWNyb249MTc1O2UubWFjcm9uYmVsb3djbWI9ODE3O2UubWFjcm9uY21iPTc3MjtlLm1hY3Jvbmxvd21vZD03MTc7ZS5tYWNyb25tb25vc3BhY2U9NjU1MDc7ZS5tYWN1dGU9Nzc0MztlLm1hZGV2YT0yMzUwO2UubWFndWphcmF0aT0yNzM0O2UubWFndXJtdWtoaT0yNjA2O2UubWFoYXBha2hoZWJyZXc9MTQ0NDtlLm1haGFwYWtobGVmdGhlYnJldz0xNDQ0O2UubWFoaXJhZ2FuYT0xMjQxNDtlLm1haWNoYXR0YXdhbG93bGVmdHRoYWk9NjM2Mzc7ZS5tYWljaGF0dGF3YWxvd3JpZ2h0dGhhaT02MzYzNjtlLm1haWNoYXR0YXdhdGhhaT0zNjU5O2UubWFpY2hhdHRhd2F1cHBlcmxlZnR0aGFpPTYzNjM1O2UubWFpZWtsb3dsZWZ0dGhhaT02MzYyODtlLm1haWVrbG93cmlnaHR0aGFpPTYzNjI3O2UubWFpZWt0aGFpPTM2NTY7ZS5tYWlla3VwcGVybGVmdHRoYWk9NjM2MjY7ZS5tYWloYW5ha2F0bGVmdHRoYWk9NjM2MjA7ZS5tYWloYW5ha2F0dGhhaT0zNjMzO2UubWFpdGFpa2h1bGVmdHRoYWk9NjM2MjU7ZS5tYWl0YWlraHV0aGFpPTM2NTU7ZS5tYWl0aG9sb3dsZWZ0dGhhaT02MzYzMTtlLm1haXRob2xvd3JpZ2h0dGhhaT02MzYzMDtlLm1haXRob3RoYWk9MzY1NztlLm1haXRob3VwcGVybGVmdHRoYWk9NjM2Mjk7ZS5tYWl0cmlsb3dsZWZ0dGhhaT02MzYzNDtlLm1haXRyaWxvd3JpZ2h0dGhhaT02MzYzMztlLm1haXRyaXRoYWk9MzY1ODtlLm1haXRyaXVwcGVybGVmdHRoYWk9NjM2MzI7ZS5tYWl5YW1va3RoYWk9MzY1NDtlLm1ha2F0YWthbmE9MTI1MTA7ZS5tYWthdGFrYW5haGFsZndpZHRoPTY1NDIzO2UubWFsZT05Nzk0O2UubWFuc3lvbnNxdWFyZT0xMzEyNztlLm1hcWFmaGVicmV3PTE0NzA7ZS5tYXJzPTk3OTQ7ZS5tYXNvcmFjaXJjbGVoZWJyZXc9MTQ1NTtlLm1hc3F1YXJlPTEzMTg3O2UubWJvcG9tb2ZvPTEyNTUxO2UubWJzcXVhcmU9MTMyNjg7ZS5tY2lyY2xlPTk0MzY7ZS5tY3ViZWRzcXVhcmU9MTMyMjE7ZS5tZG90YWNjZW50PTc3NDU7ZS5tZG90YmVsb3c9Nzc0NztlLm1lZW1hcmFiaWM9MTYwNTtlLm1lZW1maW5hbGFyYWJpYz02NTI1MDtlLm1lZW1pbml0aWFsYXJhYmljPTY1MjUxO2UubWVlbW1lZGlhbGFyYWJpYz02NTI1MjtlLm1lZW1tZWVtaW5pdGlhbGFyYWJpYz02NDcyMTtlLm1lZW1tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODQ7ZS5tZWV0b3J1c3F1YXJlPTEzMTMzO2UubWVoaXJhZ2FuYT0xMjQxNztlLm1laXppZXJhc3F1YXJlPTEzMTgyO2UubWVrYXRha2FuYT0xMjUxMztlLm1la2F0YWthbmFoYWxmd2lkdGg9NjU0MjY7ZS5tZW09MTUwMjtlLm1lbWRhZ2VzaD02NDMxODtlLm1lbWRhZ2VzaGhlYnJldz02NDMxODtlLm1lbWhlYnJldz0xNTAyO2UubWVuYXJtZW5pYW49MTM5NjtlLm1lcmtoYWhlYnJldz0xNDQ1O2UubWVya2hha2VmdWxhaGVicmV3PTE0NDY7ZS5tZXJraGFrZWZ1bGFsZWZ0aGVicmV3PTE0NDY7ZS5tZXJraGFsZWZ0aGVicmV3PTE0NDU7ZS5taG9vaz02MjU7ZS5taHpzcXVhcmU9MTMyMDI7ZS5taWRkbGVkb3RrYXRha2FuYWhhbGZ3aWR0aD02NTM4MTtlLm1pZGRvdD0xODM7ZS5taWV1bWFjaXJjbGVrb3JlYW49MTI5MTQ7ZS5taWV1bWFwYXJlbmtvcmVhbj0xMjgxODtlLm1pZXVtY2lyY2xla29yZWFuPTEyOTAwO2UubWlldW1rb3JlYW49MTI2MDk7ZS5taWV1bXBhbnNpb3Nrb3JlYW49MTI2NTY7ZS5taWV1bXBhcmVua29yZWFuPTEyODA0O2UubWlldW1waWV1cGtvcmVhbj0xMjY1NDtlLm1pZXVtc2lvc2tvcmVhbj0xMjY1NTtlLm1paGlyYWdhbmE9MTI0MTU7ZS5taWthdGFrYW5hPTEyNTExO2UubWlrYXRha2FuYWhhbGZ3aWR0aD02NTQyNDtlLm1pbnVzPTg3MjI7ZS5taW51c2JlbG93Y21iPTgwMDtlLm1pbnVzY2lyY2xlPTg4NTQ7ZS5taW51c21vZD03Mjc7ZS5taW51c3BsdXM9ODcyMztlLm1pbnV0ZT04MjQyO2UubWlyaWJhYXJ1c3F1YXJlPTEzMTMwO2UubWlyaXNxdWFyZT0xMzEyOTtlLm1sb25nbGVndHVybmVkPTYyNDtlLm1sc3F1YXJlPTEzMjA2O2UubW1jdWJlZHNxdWFyZT0xMzIxOTtlLm1tb25vc3BhY2U9NjUzNTc7ZS5tbXNxdWFyZWRzcXVhcmU9MTMyMTU7ZS5tb2hpcmFnYW5hPTEyNDE4O2UubW9obXNxdWFyZT0xMzI0OTtlLm1va2F0YWthbmE9MTI1MTQ7ZS5tb2thdGFrYW5haGFsZndpZHRoPTY1NDI3O2UubW9sc3F1YXJlPTEzMjcwO2UubW9tYXRoYWk9MzYxNztlLm1vdmVyc3NxdWFyZT0xMzIyMztlLm1vdmVyc3NxdWFyZWRzcXVhcmU9MTMyMjQ7ZS5tcGFyZW49OTM4NDtlLm1wYXNxdWFyZT0xMzIyNztlLm1zc3F1YXJlPTEzMjM1O2UubXN1cGVyaW9yPTYzMjE1O2UubXR1cm5lZD02MjM7ZS5tdT0xODE7ZS5tdTE9MTgxO2UubXVhc3F1YXJlPTEzMTg2O2UubXVjaGdyZWF0ZXI9ODgxMTtlLm11Y2hsZXNzPTg4MTA7ZS5tdWZzcXVhcmU9MTMxOTY7ZS5tdWdyZWVrPTk1NjtlLm11Z3NxdWFyZT0xMzE5NztlLm11aGlyYWdhbmE9MTI0MTY7ZS5tdWthdGFrYW5hPTEyNTEyO2UubXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNTtlLm11bHNxdWFyZT0xMzIwNTtlLm11bHRpcGx5PTIxNTtlLm11bXNxdWFyZT0xMzIxMTtlLm11bmFoaGVicmV3PTE0NDM7ZS5tdW5haGxlZnRoZWJyZXc9MTQ0MztlLm11c2ljYWxub3RlPTk4MzQ7ZS5tdXNpY2Fsbm90ZWRibD05ODM1O2UubXVzaWNmbGF0c2lnbj05ODM3O2UubXVzaWNzaGFycHNpZ249OTgzOTtlLm11c3NxdWFyZT0xMzIzNDtlLm11dnNxdWFyZT0xMzIzODtlLm11d3NxdWFyZT0xMzI0NDtlLm12bWVnYXNxdWFyZT0xMzI0MTtlLm12c3F1YXJlPTEzMjM5O2UubXdtZWdhc3F1YXJlPTEzMjQ3O2UubXdzcXVhcmU9MTMyNDU7ZS5uPTExMDtlLm5hYmVuZ2FsaT0yNDcyO2UubmFibGE9ODcxMTtlLm5hY3V0ZT0zMjQ7ZS5uYWRldmE9MjM0NDtlLm5hZ3VqYXJhdGk9MjcyODtlLm5hZ3VybXVraGk9MjYwMDtlLm5haGlyYWdhbmE9MTIzOTQ7ZS5uYWthdGFrYW5hPTEyNDkwO2UubmFrYXRha2FuYWhhbGZ3aWR0aD02NTQxMztlLm5hcG9zdHJvcGhlPTMyOTtlLm5hc3F1YXJlPTEzMTg1O2UubmJvcG9tb2ZvPTEyNTU1O2UubmJzcGFjZT0xNjA7ZS5uY2Fyb249MzI4O2UubmNlZGlsbGE9MzI2O2UubmNpcmNsZT05NDM3O2UubmNpcmN1bWZsZXhiZWxvdz03NzU1O2UubmNvbW1hYWNjZW50PTMyNjtlLm5kb3RhY2NlbnQ9Nzc0OTtlLm5kb3RiZWxvdz03NzUxO2UubmVoaXJhZ2FuYT0xMjM5NztlLm5la2F0YWthbmE9MTI0OTM7ZS5uZWthdGFrYW5haGFsZndpZHRoPTY1NDE2O2UubmV3c2hlcWVsc2lnbj04MzYyO2UubmZzcXVhcmU9MTMxOTU7ZS5uZ2FiZW5nYWxpPTI0NTc7ZS5uZ2FkZXZhPTIzMjk7ZS5uZ2FndWphcmF0aT0yNzEzO2UubmdhZ3VybXVraGk9MjU4NTtlLm5nb25ndXRoYWk9MzU5MTtlLm5oaXJhZ2FuYT0xMjQzNTtlLm5ob29rbGVmdD02MjY7ZS5uaG9va3JldHJvZmxleD02Mjc7ZS5uaWV1bmFjaXJjbGVrb3JlYW49MTI5MTE7ZS5uaWV1bmFwYXJlbmtvcmVhbj0xMjgxNTtlLm5pZXVuY2lldWNrb3JlYW49MTI1OTc7ZS5uaWV1bmNpcmNsZWtvcmVhbj0xMjg5NztlLm5pZXVuaGlldWhrb3JlYW49MTI1OTg7ZS5uaWV1bmtvcmVhbj0xMjU5NjtlLm5pZXVucGFuc2lvc2tvcmVhbj0xMjY0ODtlLm5pZXVucGFyZW5rb3JlYW49MTI4MDE7ZS5uaWV1bnNpb3Nrb3JlYW49MTI2NDc7ZS5uaWV1bnRpa2V1dGtvcmVhbj0xMjY0NjtlLm5paGlyYWdhbmE9MTIzOTU7ZS5uaWthdGFrYW5hPTEyNDkxO2UubmlrYXRha2FuYWhhbGZ3aWR0aD02NTQxNDtlLm5pa2hhaGl0bGVmdHRoYWk9NjM2NDE7ZS5uaWtoYWhpdHRoYWk9MzY2MTtlLm5pbmU9NTc7ZS5uaW5lYXJhYmljPTE2NDE7ZS5uaW5lYmVuZ2FsaT0yNTQzO2UubmluZWNpcmNsZT05MzIwO2UubmluZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMzA7ZS5uaW5lZGV2YT0yNDE1O2UubmluZWd1amFyYXRpPTI3OTk7ZS5uaW5lZ3VybXVraGk9MjY3MTtlLm5pbmVoYWNrYXJhYmljPTE2NDE7ZS5uaW5laGFuZ3pob3U9MTIzMjk7ZS5uaW5laWRlb2dyYXBoaWNwYXJlbj0xMjg0MDtlLm5pbmVpbmZlcmlvcj04MzI5O2UubmluZW1vbm9zcGFjZT02NTMwNTtlLm5pbmVvbGRzdHlsZT02MzI4OTtlLm5pbmVwYXJlbj05MzQwO2UubmluZXBlcmlvZD05MzYwO2UubmluZXBlcnNpYW49MTc4NTtlLm5pbmVyb21hbj04NTY4O2UubmluZXN1cGVyaW9yPTgzMTM7ZS5uaW5ldGVlbmNpcmNsZT05MzMwO2UubmluZXRlZW5wYXJlbj05MzUwO2UubmluZXRlZW5wZXJpb2Q9OTM3MDtlLm5pbmV0aGFpPTM2NzM7ZS5uaj00NjA7ZS5uamVjeXJpbGxpYz0xMTE0O2UubmthdGFrYW5hPTEyNTMxO2UubmthdGFrYW5haGFsZndpZHRoPTY1NDM3O2UubmxlZ3JpZ2h0bG9uZz00MTQ7ZS5ubGluZWJlbG93PTc3NTM7ZS5ubW9ub3NwYWNlPTY1MzU4O2Uubm1zcXVhcmU9MTMyMTA7ZS5ubmFiZW5nYWxpPTI0Njc7ZS5ubmFkZXZhPTIzMzk7ZS5ubmFndWphcmF0aT0yNzIzO2Uubm5hZ3VybXVraGk9MjU5NTtlLm5ubmFkZXZhPTIzNDU7ZS5ub2hpcmFnYW5hPTEyMzk4O2Uubm9rYXRha2FuYT0xMjQ5NDtlLm5va2F0YWthbmFoYWxmd2lkdGg9NjU0MTc7ZS5ub25icmVha2luZ3NwYWNlPTE2MDtlLm5vbmVudGhhaT0zNjAzO2Uubm9udXRoYWk9MzYwOTtlLm5vb25hcmFiaWM9MTYwNjtlLm5vb25maW5hbGFyYWJpYz02NTI1NDtlLm5vb25naHVubmFhcmFiaWM9MTcyMjtlLm5vb25naHVubmFmaW5hbGFyYWJpYz02NDQxNTtlLm5vb25pbml0aWFsYXJhYmljPTY1MjU1O2Uubm9vbmplZW1pbml0aWFsYXJhYmljPTY0NzIyO2Uubm9vbmplZW1pc29sYXRlZGFyYWJpYz02NDU4NztlLm5vb25tZWRpYWxhcmFiaWM9NjUyNTY7ZS5ub29ubWVlbWluaXRpYWxhcmFiaWM9NjQ3MjU7ZS5ub29ubWVlbWlzb2xhdGVkYXJhYmljPTY0NTkwO2Uubm9vbm5vb25maW5hbGFyYWJpYz02NDY1MztlLm5vdGNvbnRhaW5zPTg3MTY7ZS5ub3RlbGVtZW50PTg3MTM7ZS5ub3RlbGVtZW50b2Y9ODcxMztlLm5vdGVxdWFsPTg4MDA7ZS5ub3RncmVhdGVyPTg4MTU7ZS5ub3RncmVhdGVybm9yZXF1YWw9ODgxNztlLm5vdGdyZWF0ZXJub3JsZXNzPTg4MjU7ZS5ub3RpZGVudGljYWw9ODgwMjtlLm5vdGxlc3M9ODgxNDtlLm5vdGxlc3Nub3JlcXVhbD04ODE2O2Uubm90cGFyYWxsZWw9ODc0MjtlLm5vdHByZWNlZGVzPTg4MzI7ZS5ub3RzdWJzZXQ9ODgzNjtlLm5vdHN1Y2NlZWRzPTg4MzM7ZS5ub3RzdXBlcnNldD04ODM3O2Uubm93YXJtZW5pYW49MTM5ODtlLm5wYXJlbj05Mzg1O2UubnNzcXVhcmU9MTMyMzM7ZS5uc3VwZXJpb3I9ODMxOTtlLm50aWxkZT0yNDE7ZS5udT05NTc7ZS5udWhpcmFnYW5hPTEyMzk2O2UubnVrYXRha2FuYT0xMjQ5MjtlLm51a2F0YWthbmFoYWxmd2lkdGg9NjU0MTU7ZS5udWt0YWJlbmdhbGk9MjQ5MjtlLm51a3RhZGV2YT0yMzY0O2UubnVrdGFndWphcmF0aT0yNzQ4O2UubnVrdGFndXJtdWtoaT0yNjIwO2UubnVtYmVyc2lnbj0zNTtlLm51bWJlcnNpZ25tb25vc3BhY2U9NjUyODM7ZS5udW1iZXJzaWduc21hbGw9NjUxMTk7ZS5udW1lcmFsc2lnbmdyZWVrPTg4NDtlLm51bWVyYWxzaWdubG93ZXJncmVlaz04ODU7ZS5udW1lcm89ODQ3MDtlLm51bj0xNTA0O2UubnVuZGFnZXNoPTY0MzIwO2UubnVuZGFnZXNoaGVicmV3PTY0MzIwO2UubnVuaGVicmV3PTE1MDQ7ZS5udnNxdWFyZT0xMzIzNztlLm53c3F1YXJlPTEzMjQzO2UubnlhYmVuZ2FsaT0yNDYyO2UubnlhZGV2YT0yMzM0O2UubnlhZ3VqYXJhdGk9MjcxODtlLm55YWd1cm11a2hpPTI1OTA7ZS5vPTExMTtlLm9hY3V0ZT0yNDM7ZS5vYW5ndGhhaT0zNjI5O2Uub2JhcnJlZD02Mjk7ZS5vYmFycmVkY3lyaWxsaWM9MTI1NztlLm9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTk7ZS5vYmVuZ2FsaT0yNDUxO2Uub2JvcG9tb2ZvPTEyNTcxO2Uub2JyZXZlPTMzNTtlLm9jYW5kcmFkZXZhPTIzMjE7ZS5vY2FuZHJhZ3VqYXJhdGk9MjcwNTtlLm9jYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzc7ZS5vY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MTtlLm9jYXJvbj00NjY7ZS5vY2lyY2xlPTk0Mzg7ZS5vY2lyY3VtZmxleD0yNDQ7ZS5vY2lyY3VtZmxleGFjdXRlPTc4ODk7ZS5vY2lyY3VtZmxleGRvdGJlbG93PTc4OTc7ZS5vY2lyY3VtZmxleGdyYXZlPTc4OTE7ZS5vY2lyY3VtZmxleGhvb2thYm92ZT03ODkzO2Uub2NpcmN1bWZsZXh0aWxkZT03ODk1O2Uub2N5cmlsbGljPTEwODY7ZS5vZGJsYWN1dGU9MzM3O2Uub2RibGdyYXZlPTUyNTtlLm9kZXZhPTIzMjM7ZS5vZGllcmVzaXM9MjQ2O2Uub2RpZXJlc2lzY3lyaWxsaWM9MTI1NTtlLm9kb3RiZWxvdz03ODg1O2Uub2U9MzM5O2Uub2Vrb3JlYW49MTI2MzQ7ZS5vZ29uZWs9NzMxO2Uub2dvbmVrY21iPTgwODtlLm9ncmF2ZT0yNDI7ZS5vZ3VqYXJhdGk9MjcwNztlLm9oYXJtZW5pYW49MTQxMztlLm9oaXJhZ2FuYT0xMjM2MjtlLm9ob29rYWJvdmU9Nzg4NztlLm9ob3JuPTQxNztlLm9ob3JuYWN1dGU9Nzg5OTtlLm9ob3JuZG90YmVsb3c9NzkwNztlLm9ob3JuZ3JhdmU9NzkwMTtlLm9ob3JuaG9va2Fib3ZlPTc5MDM7ZS5vaG9ybnRpbGRlPTc5MDU7ZS5vaHVuZ2FydW1sYXV0PTMzNztlLm9pPTQxOTtlLm9pbnZlcnRlZGJyZXZlPTUyNztlLm9rYXRha2FuYT0xMjQ1ODtlLm9rYXRha2FuYWhhbGZ3aWR0aD02NTM5NztlLm9rb3JlYW49MTI2MzE7ZS5vbGVoZWJyZXc9MTQ1MTtlLm9tYWNyb249MzMzO2Uub21hY3JvbmFjdXRlPTc3NjM7ZS5vbWFjcm9uZ3JhdmU9Nzc2MTtlLm9tZGV2YT0yMzg0O2Uub21lZ2E9OTY5O2Uub21lZ2ExPTk4MjtlLm9tZWdhY3lyaWxsaWM9MTEyMTtlLm9tZWdhbGF0aW5jbG9zZWQ9NjMxO2Uub21lZ2Fyb3VuZGN5cmlsbGljPTExNDc7ZS5vbWVnYXRpdGxvY3lyaWxsaWM9MTE0OTtlLm9tZWdhdG9ub3M9OTc0O2Uub21ndWphcmF0aT0yNzY4O2Uub21pY3Jvbj05NTk7ZS5vbWljcm9udG9ub3M9OTcyO2Uub21vbm9zcGFjZT02NTM1OTtlLm9uZT00OTtlLm9uZWFyYWJpYz0xNjMzO2Uub25lYmVuZ2FsaT0yNTM1O2Uub25lY2lyY2xlPTkzMTI7ZS5vbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIyO2Uub25lZGV2YT0yNDA3O2Uub25lZG90ZW5sZWFkZXI9ODIyODtlLm9uZWVpZ2h0aD04NTM5O2Uub25lZml0dGVkPTYzMTk2O2Uub25lZ3VqYXJhdGk9Mjc5MTtlLm9uZWd1cm11a2hpPTI2NjM7ZS5vbmVoYWNrYXJhYmljPTE2MzM7ZS5vbmVoYWxmPTE4OTtlLm9uZWhhbmd6aG91PTEyMzIxO2Uub25laWRlb2dyYXBoaWNwYXJlbj0xMjgzMjtlLm9uZWluZmVyaW9yPTgzMjE7ZS5vbmVtb25vc3BhY2U9NjUyOTc7ZS5vbmVudW1lcmF0b3JiZW5nYWxpPTI1NDg7ZS5vbmVvbGRzdHlsZT02MzI4MTtlLm9uZXBhcmVuPTkzMzI7ZS5vbmVwZXJpb2Q9OTM1MjtlLm9uZXBlcnNpYW49MTc3NztlLm9uZXF1YXJ0ZXI9MTg4O2Uub25lcm9tYW49ODU2MDtlLm9uZXN1cGVyaW9yPTE4NTtlLm9uZXRoYWk9MzY2NTtlLm9uZXRoaXJkPTg1MzE7ZS5vb2dvbmVrPTQ5MTtlLm9vZ29uZWttYWNyb249NDkzO2Uub29ndXJtdWtoaT0yNTc5O2Uub29tYXRyYWd1cm11a2hpPTI2MzU7ZS5vb3Blbj01OTY7ZS5vcGFyZW49OTM4NjtlLm9wZW5idWxsZXQ9OTcwMjtlLm9wdGlvbj04OTk3O2Uub3JkZmVtaW5pbmU9MTcwO2Uub3JkbWFzY3VsaW5lPTE4NjtlLm9ydGhvZ29uYWw9ODczNTtlLm9zaG9ydGRldmE9MjMyMjtlLm9zaG9ydHZvd2Vsc2lnbmRldmE9MjM3ODtlLm9zbGFzaD0yNDg7ZS5vc2xhc2hhY3V0ZT01MTE7ZS5vc21hbGxoaXJhZ2FuYT0xMjM2MTtlLm9zbWFsbGthdGFrYW5hPTEyNDU3O2Uub3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODc7ZS5vc3Ryb2tlYWN1dGU9NTExO2Uub3N1cGVyaW9yPTYzMjE2O2Uub3RjeXJpbGxpYz0xMTUxO2Uub3RpbGRlPTI0NTtlLm90aWxkZWFjdXRlPTc3NTc7ZS5vdGlsZGVkaWVyZXNpcz03NzU5O2Uub3Vib3BvbW9mbz0xMjU3NztlLm92ZXJsaW5lPTgyNTQ7ZS5vdmVybGluZWNlbnRlcmxpbmU9NjUwOTg7ZS5vdmVybGluZWNtYj03NzM7ZS5vdmVybGluZWRhc2hlZD02NTA5NztlLm92ZXJsaW5lZGJsd2F2eT02NTEwMDtlLm92ZXJsaW5ld2F2eT02NTA5OTtlLm92ZXJzY29yZT0xNzU7ZS5vdm93ZWxzaWduYmVuZ2FsaT0yNTA3O2Uub3Zvd2Vsc2lnbmRldmE9MjM3OTtlLm92b3dlbHNpZ25ndWphcmF0aT0yNzYzO2UucD0xMTI7ZS5wYWFtcHNzcXVhcmU9MTMxODQ7ZS5wYWFzZW50b3NxdWFyZT0xMzA5OTtlLnBhYmVuZ2FsaT0yNDc0O2UucGFjdXRlPTc3NjU7ZS5wYWRldmE9MjM0NjtlLnBhZ2Vkb3duPTg2NzE7ZS5wYWdldXA9ODY3MDtlLnBhZ3VqYXJhdGk9MjczMDtlLnBhZ3VybXVraGk9MjYwMjtlLnBhaGlyYWdhbmE9MTI0MDE7ZS5wYWl5YW5ub2l0aGFpPTM2MzE7ZS5wYWthdGFrYW5hPTEyNDk3O2UucGFsYXRhbGl6YXRpb25jeXJpbGxpY2NtYj0xMTU2O2UucGFsb2Noa2FjeXJpbGxpYz0xMjE2O2UucGFuc2lvc2tvcmVhbj0xMjY3MTtlLnBhcmFncmFwaD0xODI7ZS5wYXJhbGxlbD04NzQxO2UucGFyZW5sZWZ0PTQwO2UucGFyZW5sZWZ0YWx0b25lYXJhYmljPTY0ODMwO2UucGFyZW5sZWZ0YnQ9NjM3MjU7ZS5wYXJlbmxlZnRleD02MzcyNDtlLnBhcmVubGVmdGluZmVyaW9yPTgzMzM7ZS5wYXJlbmxlZnRtb25vc3BhY2U9NjUyODg7ZS5wYXJlbmxlZnRzbWFsbD02NTExMztlLnBhcmVubGVmdHN1cGVyaW9yPTgzMTc7ZS5wYXJlbmxlZnR0cD02MzcyMztlLnBhcmVubGVmdHZlcnRpY2FsPTY1MDc3O2UucGFyZW5yaWdodD00MTtlLnBhcmVucmlnaHRhbHRvbmVhcmFiaWM9NjQ4MzE7ZS5wYXJlbnJpZ2h0YnQ9NjM3MzY7ZS5wYXJlbnJpZ2h0ZXg9NjM3MzU7ZS5wYXJlbnJpZ2h0aW5mZXJpb3I9ODMzNDtlLnBhcmVucmlnaHRtb25vc3BhY2U9NjUyODk7ZS5wYXJlbnJpZ2h0c21hbGw9NjUxMTQ7ZS5wYXJlbnJpZ2h0c3VwZXJpb3I9ODMxODtlLnBhcmVucmlnaHR0cD02MzczNDtlLnBhcmVucmlnaHR2ZXJ0aWNhbD02NTA3ODtlLnBhcnRpYWxkaWZmPTg3MDY7ZS5wYXNlcWhlYnJldz0xNDcyO2UucGFzaHRhaGVicmV3PTE0MzM7ZS5wYXNxdWFyZT0xMzIyNTtlLnBhdGFoPTE0NjM7ZS5wYXRhaDExPTE0NjM7ZS5wYXRhaDFkPTE0NjM7ZS5wYXRhaDJhPTE0NjM7ZS5wYXRhaGhlYnJldz0xNDYzO2UucGF0YWhuYXJyb3doZWJyZXc9MTQ2MztlLnBhdGFocXVhcnRlcmhlYnJldz0xNDYzO2UucGF0YWh3aWRlaGVicmV3PTE0NjM7ZS5wYXplcmhlYnJldz0xNDQxO2UucGJvcG9tb2ZvPTEyNTUwO2UucGNpcmNsZT05NDM5O2UucGRvdGFjY2VudD03NzY3O2UucGU9MTUwODtlLnBlY3lyaWxsaWM9MTA4NztlLnBlZGFnZXNoPTY0MzI0O2UucGVkYWdlc2hoZWJyZXc9NjQzMjQ7ZS5wZWV6aXNxdWFyZT0xMzExNTtlLnBlZmluYWxkYWdlc2hoZWJyZXc9NjQzMjM7ZS5wZWhhcmFiaWM9MTY2MjtlLnBlaGFybWVuaWFuPTE0MDI7ZS5wZWhlYnJldz0xNTA4O2UucGVoZmluYWxhcmFiaWM9NjQzNDM7ZS5wZWhpbml0aWFsYXJhYmljPTY0MzQ0O2UucGVoaXJhZ2FuYT0xMjQxMDtlLnBlaG1lZGlhbGFyYWJpYz02NDM0NTtlLnBla2F0YWthbmE9MTI1MDY7ZS5wZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkxO2UucGVyYWZlaGVicmV3PTY0MzM0O2UucGVyY2VudD0zNztlLnBlcmNlbnRhcmFiaWM9MTY0MjtlLnBlcmNlbnRtb25vc3BhY2U9NjUyODU7ZS5wZXJjZW50c21hbGw9NjUxMzA7ZS5wZXJpb2Q9NDY7ZS5wZXJpb2Rhcm1lbmlhbj0xNDE3O2UucGVyaW9kY2VudGVyZWQ9MTgzO2UucGVyaW9kaGFsZndpZHRoPTY1Mzc3O2UucGVyaW9kaW5mZXJpb3I9NjMyMDc7ZS5wZXJpb2Rtb25vc3BhY2U9NjUyOTQ7ZS5wZXJpb2RzbWFsbD02NTEwNjtlLnBlcmlvZHN1cGVyaW9yPTYzMjA4O2UucGVyaXNwb21lbmlncmVla2NtYj04MzQ7ZS5wZXJwZW5kaWN1bGFyPTg4Njk7ZS5wZXJ0aG91c2FuZD04MjQwO2UucGVzZXRhPTgzNTk7ZS5wZnNxdWFyZT0xMzE5NDtlLnBoYWJlbmdhbGk9MjQ3NTtlLnBoYWRldmE9MjM0NztlLnBoYWd1amFyYXRpPTI3MzE7ZS5waGFndXJtdWtoaT0yNjAzO2UucGhpPTk2NjtlLnBoaTE9OTgxO2UucGhpZXVwaGFjaXJjbGVrb3JlYW49MTI5MjI7ZS5waGlldXBoYXBhcmVua29yZWFuPTEyODI2O2UucGhpZXVwaGNpcmNsZWtvcmVhbj0xMjkwODtlLnBoaWV1cGhrb3JlYW49MTI2MjE7ZS5waGlldXBocGFyZW5rb3JlYW49MTI4MTI7ZS5waGlsYXRpbj02MzI7ZS5waGludGh1dGhhaT0zNjQyO2UucGhpc3ltYm9sZ3JlZWs9OTgxO2UucGhvb2s9NDIxO2UucGhvcGhhbnRoYWk9MzYxNDtlLnBob3BodW5ndGhhaT0zNjEyO2UucGhvc2FtcGhhb3RoYWk9MzYxNjtlLnBpPTk2MDtlLnBpZXVwYWNpcmNsZWtvcmVhbj0xMjkxNTtlLnBpZXVwYXBhcmVua29yZWFuPTEyODE5O2UucGlldXBjaWV1Y2tvcmVhbj0xMjY2MjtlLnBpZXVwY2lyY2xla29yZWFuPTEyOTAxO2UucGlldXBraXllb2trb3JlYW49MTI2NTg7ZS5waWV1cGtvcmVhbj0xMjYxMDtlLnBpZXVwcGFyZW5rb3JlYW49MTI4MDU7ZS5waWV1cHNpb3NraXllb2trb3JlYW49MTI2NjA7ZS5waWV1cHNpb3Nrb3JlYW49MTI2MTI7ZS5waWV1cHNpb3N0aWtldXRrb3JlYW49MTI2NjE7ZS5waWV1cHRoaWV1dGhrb3JlYW49MTI2NjM7ZS5waWV1cHRpa2V1dGtvcmVhbj0xMjY1OTtlLnBpaGlyYWdhbmE9MTI0MDQ7ZS5waWthdGFrYW5hPTEyNTAwO2UucGlzeW1ib2xncmVlaz05ODI7ZS5waXdyYXJtZW5pYW49MTQxMTtlLnBsYW5ja292ZXIycGk9ODQ2MztlLnBsYW5ja292ZXIycGkxPTg0NjM7ZS5wbHVzPTQzO2UucGx1c2JlbG93Y21iPTc5OTtlLnBsdXNjaXJjbGU9ODg1MztlLnBsdXNtaW51cz0xNzc7ZS5wbHVzbW9kPTcyNjtlLnBsdXNtb25vc3BhY2U9NjUyOTE7ZS5wbHVzc21hbGw9NjUxMjI7ZS5wbHVzc3VwZXJpb3I9ODMxNDtlLnBtb25vc3BhY2U9NjUzNjA7ZS5wbXNxdWFyZT0xMzI3MjtlLnBvaGlyYWdhbmE9MTI0MTM7ZS5wb2ludGluZ2luZGV4ZG93bndoaXRlPTk3NTk7ZS5wb2ludGluZ2luZGV4bGVmdHdoaXRlPTk3NTY7ZS5wb2ludGluZ2luZGV4cmlnaHR3aGl0ZT05NzU4O2UucG9pbnRpbmdpbmRleHVwd2hpdGU9OTc1NztlLnBva2F0YWthbmE9MTI1MDk7ZS5wb3BsYXRoYWk9MzYxMTtlLnBvc3RhbG1hcms9MTIzMDY7ZS5wb3N0YWxtYXJrZmFjZT0xMjMyMDtlLnBwYXJlbj05Mzg3O2UucHJlY2VkZXM9ODgyNjtlLnByZXNjcmlwdGlvbj04NDc4O2UucHJpbWVtb2Q9Njk3O2UucHJpbWVyZXZlcnNlZD04MjQ1O2UucHJvZHVjdD04NzE5O2UucHJvamVjdGl2ZT04OTY1O2UucHJvbG9uZ2Vka2FuYT0xMjU0MDtlLnByb3BlbGxvcj04OTg0O2UucHJvcGVyc3Vic2V0PTg4MzQ7ZS5wcm9wZXJzdXBlcnNldD04ODM1O2UucHJvcG9ydGlvbj04NzU5O2UucHJvcG9ydGlvbmFsPTg3MzM7ZS5wc2k9OTY4O2UucHNpY3lyaWxsaWM9MTEzNztlLnBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU4O2UucHNzcXVhcmU9MTMyMzI7ZS5wdWhpcmFnYW5hPTEyNDA3O2UucHVrYXRha2FuYT0xMjUwMztlLnB2c3F1YXJlPTEzMjM2O2UucHdzcXVhcmU9MTMyNDI7ZS5xPTExMztlLnFhZGV2YT0yMzkyO2UucWFkbWFoZWJyZXc9MTQ0ODtlLnFhZmFyYWJpYz0xNjAyO2UucWFmZmluYWxhcmFiaWM9NjUyMzg7ZS5xYWZpbml0aWFsYXJhYmljPTY1MjM5O2UucWFmbWVkaWFsYXJhYmljPTY1MjQwO2UucWFtYXRzPTE0NjQ7ZS5xYW1hdHMxMD0xNDY0O2UucWFtYXRzMWE9MTQ2NDtlLnFhbWF0czFjPTE0NjQ7ZS5xYW1hdHMyNz0xNDY0O2UucWFtYXRzMjk9MTQ2NDtlLnFhbWF0czMzPTE0NjQ7ZS5xYW1hdHNkZT0xNDY0O2UucWFtYXRzaGVicmV3PTE0NjQ7ZS5xYW1hdHNuYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFuaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbm5hcnJvd2hlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5xdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbndpZGVoZWJyZXc9MTQ2NDtlLnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ2NDtlLnFhbWF0c3dpZGVoZWJyZXc9MTQ2NDtlLnFhcm5leXBhcmFoZWJyZXc9MTQzOTtlLnFib3BvbW9mbz0xMjU2MTtlLnFjaXJjbGU9OTQ0MDtlLnFob29rPTY3MjtlLnFtb25vc3BhY2U9NjUzNjE7ZS5xb2Y9MTUxMTtlLnFvZmRhZ2VzaD02NDMyNztlLnFvZmRhZ2VzaGhlYnJldz02NDMyNztlLnFvZmhlYnJldz0xNTExO2UucXBhcmVuPTkzODg7ZS5xdWFydGVybm90ZT05ODMzO2UucXVidXRzPTE0Njc7ZS5xdWJ1dHMxOD0xNDY3O2UucXVidXRzMjU9MTQ2NztlLnF1YnV0czMxPTE0Njc7ZS5xdWJ1dHNoZWJyZXc9MTQ2NztlLnF1YnV0c25hcnJvd2hlYnJldz0xNDY3O2UucXVidXRzcXVhcnRlcmhlYnJldz0xNDY3O2UucXVidXRzd2lkZWhlYnJldz0xNDY3O2UucXVlc3Rpb249NjM7ZS5xdWVzdGlvbmFyYWJpYz0xNTY3O2UucXVlc3Rpb25hcm1lbmlhbj0xMzc0O2UucXVlc3Rpb25kb3duPTE5MTtlLnF1ZXN0aW9uZG93bnNtYWxsPTYzNDIzO2UucXVlc3Rpb25ncmVlaz04OTQ7ZS5xdWVzdGlvbm1vbm9zcGFjZT02NTMxMTtlLnF1ZXN0aW9uc21hbGw9NjMyOTU7ZS5xdW90ZWRibD0zNDtlLnF1b3RlZGJsYmFzZT04MjIyO2UucXVvdGVkYmxsZWZ0PTgyMjA7ZS5xdW90ZWRibG1vbm9zcGFjZT02NTI4MjtlLnF1b3RlZGJscHJpbWU9MTIzMTg7ZS5xdW90ZWRibHByaW1lcmV2ZXJzZWQ9MTIzMTc7ZS5xdW90ZWRibHJpZ2h0PTgyMjE7ZS5xdW90ZWxlZnQ9ODIxNjtlLnF1b3RlbGVmdHJldmVyc2VkPTgyMTk7ZS5xdW90ZXJldmVyc2VkPTgyMTk7ZS5xdW90ZXJpZ2h0PTgyMTc7ZS5xdW90ZXJpZ2h0bj0zMjk7ZS5xdW90ZXNpbmdsYmFzZT04MjE4O2UucXVvdGVzaW5nbGU9Mzk7ZS5xdW90ZXNpbmdsZW1vbm9zcGFjZT02NTI4NztlLnI9MTE0O2UucmFhcm1lbmlhbj0xNDA0O2UucmFiZW5nYWxpPTI0ODA7ZS5yYWN1dGU9MzQxO2UucmFkZXZhPTIzNTI7ZS5yYWRpY2FsPTg3MzA7ZS5yYWRpY2FsZXg9NjM3MTc7ZS5yYWRvdmVyc3NxdWFyZT0xMzIzMDtlLnJhZG92ZXJzc3F1YXJlZHNxdWFyZT0xMzIzMTtlLnJhZHNxdWFyZT0xMzIyOTtlLnJhZmU9MTQ3MTtlLnJhZmVoZWJyZXc9MTQ3MTtlLnJhZ3VqYXJhdGk9MjczNjtlLnJhZ3VybXVraGk9MjYwODtlLnJhaGlyYWdhbmE9MTI0MjU7ZS5yYWthdGFrYW5hPTEyNTIxO2UucmFrYXRha2FuYWhhbGZ3aWR0aD02NTQzMTtlLnJhbG93ZXJkaWFnb25hbGJlbmdhbGk9MjU0NTtlLnJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpPTI1NDQ7ZS5yYW1zaG9ybj02MTI7ZS5yYXRpbz04NzU4O2UucmJvcG9tb2ZvPTEyNTY2O2UucmNhcm9uPTM0NTtlLnJjZWRpbGxhPTM0MztlLnJjaXJjbGU9OTQ0MTtlLnJjb21tYWFjY2VudD0zNDM7ZS5yZGJsZ3JhdmU9NTI5O2UucmRvdGFjY2VudD03NzY5O2UucmRvdGJlbG93PTc3NzE7ZS5yZG90YmVsb3dtYWNyb249Nzc3MztlLnJlZmVyZW5jZW1hcms9ODI1MTtlLnJlZmxleHN1YnNldD04ODM4O2UucmVmbGV4c3VwZXJzZXQ9ODgzOTtlLnJlZ2lzdGVyZWQ9MTc0O2UucmVnaXN0ZXJzYW5zPTYzNzIwO2UucmVnaXN0ZXJzZXJpZj02MzE5NDtlLnJlaGFyYWJpYz0xNTg1O2UucmVoYXJtZW5pYW49MTQwODtlLnJlaGZpbmFsYXJhYmljPTY1MTk4O2UucmVoaXJhZ2FuYT0xMjQyODtlLnJla2F0YWthbmE9MTI1MjQ7ZS5yZWthdGFrYW5haGFsZndpZHRoPTY1NDM0O2UucmVzaD0xNTEyO2UucmVzaGRhZ2VzaGhlYnJldz02NDMyODtlLnJlc2hoZWJyZXc9MTUxMjtlLnJldmVyc2VkdGlsZGU9ODc2NTtlLnJldmlhaGVicmV3PTE0MzE7ZS5yZXZpYW11Z3Jhc2hoZWJyZXc9MTQzMTtlLnJldmxvZ2ljYWxub3Q9ODk3NjtlLnJmaXNoaG9vaz02Mzg7ZS5yZmlzaGhvb2tyZXZlcnNlZD02Mzk7ZS5yaGFiZW5nYWxpPTI1MjU7ZS5yaGFkZXZhPTIzOTc7ZS5yaG89OTYxO2Uucmhvb2s9NjM3O2Uucmhvb2t0dXJuZWQ9NjM1O2Uucmhvb2t0dXJuZWRzdXBlcmlvcj02OTM7ZS5yaG9zeW1ib2xncmVlaz0xMDA5O2UucmhvdGljaG9va21vZD03MzQ7ZS5yaWV1bGFjaXJjbGVrb3JlYW49MTI5MTM7ZS5yaWV1bGFwYXJlbmtvcmVhbj0xMjgxNztlLnJpZXVsY2lyY2xla29yZWFuPTEyODk5O2UucmlldWxoaWV1aGtvcmVhbj0xMjYwODtlLnJpZXVsa2l5ZW9ra29yZWFuPTEyNjAyO2UucmlldWxraXllb2tzaW9za29yZWFuPTEyNjQ5O2UucmlldWxrb3JlYW49MTI2MDE7ZS5yaWV1bG1pZXVta29yZWFuPTEyNjAzO2UucmlldWxwYW5zaW9za29yZWFuPTEyNjUyO2UucmlldWxwYXJlbmtvcmVhbj0xMjgwMztlLnJpZXVscGhpZXVwaGtvcmVhbj0xMjYwNztlLnJpZXVscGlldXBrb3JlYW49MTI2MDQ7ZS5yaWV1bHBpZXVwc2lvc2tvcmVhbj0xMjY1MTtlLnJpZXVsc2lvc2tvcmVhbj0xMjYwNTtlLnJpZXVsdGhpZXV0aGtvcmVhbj0xMjYwNjtlLnJpZXVsdGlrZXV0a29yZWFuPTEyNjUwO2UucmlldWx5ZW9yaW5oaWV1aGtvcmVhbj0xMjY1MztlLnJpZ2h0YW5nbGU9ODczNTtlLnJpZ2h0dGFja2JlbG93Y21iPTc5MztlLnJpZ2h0dHJpYW5nbGU9ODg5NTtlLnJpaGlyYWdhbmE9MTI0MjY7ZS5yaWthdGFrYW5hPTEyNTIyO2UucmlrYXRha2FuYWhhbGZ3aWR0aD02NTQzMjtlLnJpbmc9NzMwO2UucmluZ2JlbG93Y21iPTgwNTtlLnJpbmdjbWI9Nzc4O2UucmluZ2hhbGZsZWZ0PTcwMztlLnJpbmdoYWxmbGVmdGFybWVuaWFuPTEzNjk7ZS5yaW5naGFsZmxlZnRiZWxvd2NtYj03OTY7ZS5yaW5naGFsZmxlZnRjZW50ZXJlZD03MjM7ZS5yaW5naGFsZnJpZ2h0PTcwMjtlLnJpbmdoYWxmcmlnaHRiZWxvd2NtYj04MjU7ZS5yaW5naGFsZnJpZ2h0Y2VudGVyZWQ9NzIyO2UucmludmVydGVkYnJldmU9NTMxO2Uucml0dG9ydXNxdWFyZT0xMzEzNztlLnJsaW5lYmVsb3c9Nzc3NTtlLnJsb25nbGVnPTYzNjtlLnJsb25nbGVndHVybmVkPTYzNDtlLnJtb25vc3BhY2U9NjUzNjI7ZS5yb2hpcmFnYW5hPTEyNDI5O2Uucm9rYXRha2FuYT0xMjUyNTtlLnJva2F0YWthbmFoYWxmd2lkdGg9NjU0MzU7ZS5yb3J1YXRoYWk9MzYxOTtlLnJwYXJlbj05Mzg5O2UucnJhYmVuZ2FsaT0yNTI0O2UucnJhZGV2YT0yMzUzO2UucnJhZ3VybXVraGk9MjY1MjtlLnJyZWhhcmFiaWM9MTY4MTtlLnJyZWhmaW5hbGFyYWJpYz02NDM5NztlLnJydm9jYWxpY2JlbmdhbGk9MjUyODtlLnJydm9jYWxpY2RldmE9MjQwMDtlLnJydm9jYWxpY2d1amFyYXRpPTI3ODQ7ZS5ycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MDA7ZS5ycnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzI7ZS5ycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU2O2UucnN1cGVyaW9yPTYzMjE3O2UucnRibG9jaz05NjE2O2UucnR1cm5lZD02MzM7ZS5ydHVybmVkc3VwZXJpb3I9NjkyO2UucnVoaXJhZ2FuYT0xMjQyNztlLnJ1a2F0YWthbmE9MTI1MjM7ZS5ydWthdGFrYW5haGFsZndpZHRoPTY1NDMzO2UucnVwZWVtYXJrYmVuZ2FsaT0yNTQ2O2UucnVwZWVzaWduYmVuZ2FsaT0yNTQ3O2UucnVwaWFoPTYzMTk3O2UucnV0aGFpPTM2MjA7ZS5ydm9jYWxpY2JlbmdhbGk9MjQ0MztlLnJ2b2NhbGljZGV2YT0yMzE1O2UucnZvY2FsaWNndWphcmF0aT0yNjk5O2UucnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI0OTk7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MTtlLnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NTtlLnM9MTE1O2Uuc2FiZW5nYWxpPTI0ODg7ZS5zYWN1dGU9MzQ3O2Uuc2FjdXRlZG90YWNjZW50PTc3ODE7ZS5zYWRhcmFiaWM9MTU4OTtlLnNhZGV2YT0yMzYwO2Uuc2FkZmluYWxhcmFiaWM9NjUyMTA7ZS5zYWRpbml0aWFsYXJhYmljPTY1MjExO2Uuc2FkbWVkaWFsYXJhYmljPTY1MjEyO2Uuc2FndWphcmF0aT0yNzQ0O2Uuc2FndXJtdWtoaT0yNjE2O2Uuc2FoaXJhZ2FuYT0xMjM3MztlLnNha2F0YWthbmE9MTI0Njk7ZS5zYWthdGFrYW5haGFsZndpZHRoPTY1NDAzO2Uuc2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYz02NTAxODtlLnNhbWVraD0xNTA1O2Uuc2FtZWtoZGFnZXNoPTY0MzIxO2Uuc2FtZWtoZGFnZXNoaGVicmV3PTY0MzIxO2Uuc2FtZWtoaGVicmV3PTE1MDU7ZS5zYXJhYWF0aGFpPTM2MzQ7ZS5zYXJhYWV0aGFpPTM2NDk7ZS5zYXJhYWltYWltYWxhaXRoYWk9MzY1MjtlLnNhcmFhaW1haW11YW50aGFpPTM2NTE7ZS5zYXJhYW10aGFpPTM2MzU7ZS5zYXJhYXRoYWk9MzYzMjtlLnNhcmFldGhhaT0zNjQ4O2Uuc2FyYWlpbGVmdHRoYWk9NjM2MjI7ZS5zYXJhaWl0aGFpPTM2Mzc7ZS5zYXJhaWxlZnR0aGFpPTYzNjIxO2Uuc2FyYWl0aGFpPTM2MzY7ZS5zYXJhb3RoYWk9MzY1MDtlLnNhcmF1ZWVsZWZ0dGhhaT02MzYyNDtlLnNhcmF1ZWV0aGFpPTM2Mzk7ZS5zYXJhdWVsZWZ0dGhhaT02MzYyMztlLnNhcmF1ZXRoYWk9MzYzODtlLnNhcmF1dGhhaT0zNjQwO2Uuc2FyYXV1dGhhaT0zNjQxO2Uuc2JvcG9tb2ZvPTEyNTY5O2Uuc2Nhcm9uPTM1MztlLnNjYXJvbmRvdGFjY2VudD03NzgzO2Uuc2NlZGlsbGE9MzUxO2Uuc2Nod2E9NjAxO2Uuc2Nod2FjeXJpbGxpYz0xMjQxO2Uuc2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDM7ZS5zY2h3YWhvb2s9NjAyO2Uuc2NpcmNsZT05NDQyO2Uuc2NpcmN1bWZsZXg9MzQ5O2Uuc2NvbW1hYWNjZW50PTUzNztlLnNkb3RhY2NlbnQ9Nzc3NztlLnNkb3RiZWxvdz03Nzc5O2Uuc2RvdGJlbG93ZG90YWNjZW50PTc3ODU7ZS5zZWFndWxsYmVsb3djbWI9ODI4O2Uuc2Vjb25kPTgyNDM7ZS5zZWNvbmR0b25lY2hpbmVzZT03MTQ7ZS5zZWN0aW9uPTE2NztlLnNlZW5hcmFiaWM9MTU4NztlLnNlZW5maW5hbGFyYWJpYz02NTIwMjtlLnNlZW5pbml0aWFsYXJhYmljPTY1MjAzO2Uuc2Vlbm1lZGlhbGFyYWJpYz02NTIwNDtlLnNlZ29sPTE0NjI7ZS5zZWdvbDEzPTE0NjI7ZS5zZWdvbDFmPTE0NjI7ZS5zZWdvbDJjPTE0NjI7ZS5zZWdvbGhlYnJldz0xNDYyO2Uuc2Vnb2xuYXJyb3doZWJyZXc9MTQ2MjtlLnNlZ29scXVhcnRlcmhlYnJldz0xNDYyO2Uuc2Vnb2x0YWhlYnJldz0xNDI2O2Uuc2Vnb2x3aWRlaGVicmV3PTE0NjI7ZS5zZWhhcm1lbmlhbj0xNDA1O2Uuc2VoaXJhZ2FuYT0xMjM3OTtlLnNla2F0YWthbmE9MTI0NzU7ZS5zZWthdGFrYW5haGFsZndpZHRoPTY1NDA2O2Uuc2VtaWNvbG9uPTU5O2Uuc2VtaWNvbG9uYXJhYmljPTE1NjM7ZS5zZW1pY29sb25tb25vc3BhY2U9NjUzMDc7ZS5zZW1pY29sb25zbWFsbD02NTEwODtlLnNlbWl2b2ljZWRtYXJra2FuYT0xMjQ0NDtlLnNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzOTtlLnNlbnRpc3F1YXJlPTEzMDkwO2Uuc2VudG9zcXVhcmU9MTMwOTE7ZS5zZXZlbj01NTtlLnNldmVuYXJhYmljPTE2Mzk7ZS5zZXZlbmJlbmdhbGk9MjU0MTtlLnNldmVuY2lyY2xlPTkzMTg7ZS5zZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjg7ZS5zZXZlbmRldmE9MjQxMztlLnNldmVuZWlnaHRocz04NTQyO2Uuc2V2ZW5ndWphcmF0aT0yNzk3O2Uuc2V2ZW5ndXJtdWtoaT0yNjY5O2Uuc2V2ZW5oYWNrYXJhYmljPTE2Mzk7ZS5zZXZlbmhhbmd6aG91PTEyMzI3O2Uuc2V2ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODM4O2Uuc2V2ZW5pbmZlcmlvcj04MzI3O2Uuc2V2ZW5tb25vc3BhY2U9NjUzMDM7ZS5zZXZlbm9sZHN0eWxlPTYzMjg3O2Uuc2V2ZW5wYXJlbj05MzM4O2Uuc2V2ZW5wZXJpb2Q9OTM1ODtlLnNldmVucGVyc2lhbj0xNzgzO2Uuc2V2ZW5yb21hbj04NTY2O2Uuc2V2ZW5zdXBlcmlvcj04MzExO2Uuc2V2ZW50ZWVuY2lyY2xlPTkzMjg7ZS5zZXZlbnRlZW5wYXJlbj05MzQ4O2Uuc2V2ZW50ZWVucGVyaW9kPTkzNjg7ZS5zZXZlbnRoYWk9MzY3MTtlLnNmdGh5cGhlbj0xNzM7ZS5zaGFhcm1lbmlhbj0xMzk5O2Uuc2hhYmVuZ2FsaT0yNDg2O2Uuc2hhY3lyaWxsaWM9MTA5NjtlLnNoYWRkYWFyYWJpYz0xNjE3O2Uuc2hhZGRhZGFtbWFhcmFiaWM9NjQ2MDk7ZS5zaGFkZGFkYW1tYXRhbmFyYWJpYz02NDYwNjtlLnNoYWRkYWZhdGhhYXJhYmljPTY0NjA4O2Uuc2hhZGRha2FzcmFhcmFiaWM9NjQ2MTA7ZS5zaGFkZGFrYXNyYXRhbmFyYWJpYz02NDYwNztlLnNoYWRlPTk2MTg7ZS5zaGFkZWRhcms9OTYxOTtlLnNoYWRlbGlnaHQ9OTYxNztlLnNoYWRlbWVkaXVtPTk2MTg7ZS5zaGFkZXZhPTIzNTg7ZS5zaGFndWphcmF0aT0yNzQyO2Uuc2hhZ3VybXVraGk9MjYxNDtlLnNoYWxzaGVsZXRoZWJyZXc9MTQyNztlLnNoYm9wb21vZm89MTI1NjU7ZS5zaGNoYWN5cmlsbGljPTEwOTc7ZS5zaGVlbmFyYWJpYz0xNTg4O2Uuc2hlZW5maW5hbGFyYWJpYz02NTIwNjtlLnNoZWVuaW5pdGlhbGFyYWJpYz02NTIwNztlLnNoZWVubWVkaWFsYXJhYmljPTY1MjA4O2Uuc2hlaWNvcHRpYz05OTU7ZS5zaGVxZWw9ODM2MjtlLnNoZXFlbGhlYnJldz04MzYyO2Uuc2hldmE9MTQ1NjtlLnNoZXZhMTE1PTE0NTY7ZS5zaGV2YTE1PTE0NTY7ZS5zaGV2YTIyPTE0NTY7ZS5zaGV2YTJlPTE0NTY7ZS5zaGV2YWhlYnJldz0xNDU2O2Uuc2hldmFuYXJyb3doZWJyZXc9MTQ1NjtlLnNoZXZhcXVhcnRlcmhlYnJldz0xNDU2O2Uuc2hldmF3aWRlaGVicmV3PTE0NTY7ZS5zaGhhY3lyaWxsaWM9MTIxMTtlLnNoaW1hY29wdGljPTEwMDU7ZS5zaGluPTE1MTM7ZS5zaGluZGFnZXNoPTY0MzI5O2Uuc2hpbmRhZ2VzaGhlYnJldz02NDMyOTtlLnNoaW5kYWdlc2hzaGluZG90PTY0MzAwO2Uuc2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXc9NjQzMDA7ZS5zaGluZGFnZXNoc2luZG90PTY0MzAxO2Uuc2hpbmRhZ2VzaHNpbmRvdGhlYnJldz02NDMwMTtlLnNoaW5kb3RoZWJyZXc9MTQ3MztlLnNoaW5oZWJyZXc9MTUxMztlLnNoaW5zaGluZG90PTY0Mjk4O2Uuc2hpbnNoaW5kb3RoZWJyZXc9NjQyOTg7ZS5zaGluc2luZG90PTY0Mjk5O2Uuc2hpbnNpbmRvdGhlYnJldz02NDI5OTtlLnNob29rPTY0MjtlLnNpZ21hPTk2MztlLnNpZ21hMT05NjI7ZS5zaWdtYWZpbmFsPTk2MjtlLnNpZ21hbHVuYXRlc3ltYm9sZ3JlZWs9MTAxMDtlLnNpaGlyYWdhbmE9MTIzNzU7ZS5zaWthdGFrYW5hPTEyNDcxO2Uuc2lrYXRha2FuYWhhbGZ3aWR0aD02NTQwNDtlLnNpbHVxaGVicmV3PTE0Njk7ZS5zaWx1cWxlZnRoZWJyZXc9MTQ2OTtlLnNpbWlsYXI9ODc2NDtlLnNpbmRvdGhlYnJldz0xNDc0O2Uuc2lvc2FjaXJjbGVrb3JlYW49MTI5MTY7ZS5zaW9zYXBhcmVua29yZWFuPTEyODIwO2Uuc2lvc2NpZXVja29yZWFuPTEyNjcwO2Uuc2lvc2NpcmNsZWtvcmVhbj0xMjkwMjtlLnNpb3NraXllb2trb3JlYW49MTI2NjY7ZS5zaW9za29yZWFuPTEyNjEzO2Uuc2lvc25pZXVua29yZWFuPTEyNjY3O2Uuc2lvc3BhcmVua29yZWFuPTEyODA2O2Uuc2lvc3BpZXVwa29yZWFuPTEyNjY5O2Uuc2lvc3Rpa2V1dGtvcmVhbj0xMjY2ODtlLnNpeD01NDtlLnNpeGFyYWJpYz0xNjM4O2Uuc2l4YmVuZ2FsaT0yNTQwO2Uuc2l4Y2lyY2xlPTkzMTc7ZS5zaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI3O2Uuc2l4ZGV2YT0yNDEyO2Uuc2l4Z3VqYXJhdGk9Mjc5NjtlLnNpeGd1cm11a2hpPTI2Njg7ZS5zaXhoYWNrYXJhYmljPTE2Mzg7ZS5zaXhoYW5nemhvdT0xMjMyNjtlLnNpeGlkZW9ncmFwaGljcGFyZW49MTI4Mzc7ZS5zaXhpbmZlcmlvcj04MzI2O2Uuc2l4bW9ub3NwYWNlPTY1MzAyO2Uuc2l4b2xkc3R5bGU9NjMyODY7ZS5zaXhwYXJlbj05MzM3O2Uuc2l4cGVyaW9kPTkzNTc7ZS5zaXhwZXJzaWFuPTE3ODI7ZS5zaXhyb21hbj04NTY1O2Uuc2l4c3VwZXJpb3I9ODMxMDtlLnNpeHRlZW5jaXJjbGU9OTMyNztlLnNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaT0yNTUzO2Uuc2l4dGVlbnBhcmVuPTkzNDc7ZS5zaXh0ZWVucGVyaW9kPTkzNjc7ZS5zaXh0aGFpPTM2NzA7ZS5zbGFzaD00NztlLnNsYXNobW9ub3NwYWNlPTY1Mjk1O2Uuc2xvbmc9MzgzO2Uuc2xvbmdkb3RhY2NlbnQ9NzgzNTtlLnNtaWxlZmFjZT05Nzg2O2Uuc21vbm9zcGFjZT02NTM2MztlLnNvZnBhc3VxaGVicmV3PTE0NzU7ZS5zb2Z0aHlwaGVuPTE3MztlLnNvZnRzaWduY3lyaWxsaWM9MTEwMDtlLnNvaGlyYWdhbmE9MTIzODE7ZS5zb2thdGFrYW5hPTEyNDc3O2Uuc29rYXRha2FuYWhhbGZ3aWR0aD02NTQwNztlLnNvbGlkdXNsb25nb3ZlcmxheWNtYj04MjQ7ZS5zb2xpZHVzc2hvcnRvdmVybGF5Y21iPTgyMztlLnNvcnVzaXRoYWk9MzYyNTtlLnNvc2FsYXRoYWk9MzYyNDtlLnNvc290aGFpPTM1OTU7ZS5zb3N1YXRoYWk9MzYyNjtlLnNwYWNlPTMyO2Uuc3BhY2VoYWNrYXJhYmljPTMyO2Uuc3BhZGU9OTgyNDtlLnNwYWRlc3VpdGJsYWNrPTk4MjQ7ZS5zcGFkZXN1aXR3aGl0ZT05ODI4O2Uuc3BhcmVuPTkzOTA7ZS5zcXVhcmViZWxvd2NtYj04Mjc7ZS5zcXVhcmVjYz0xMzI1MjtlLnNxdWFyZWNtPTEzMjEzO2Uuc3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbD05NjQxO2Uuc3F1YXJlaG9yaXpvbnRhbGZpbGw9OTYzNjtlLnNxdWFyZWtnPTEzMTk5O2Uuc3F1YXJla209MTMyMTQ7ZS5zcXVhcmVrbWNhcGl0YWw9MTMyNjI7ZS5zcXVhcmVsbj0xMzI2NTtlLnNxdWFyZWxvZz0xMzI2NjtlLnNxdWFyZW1nPTEzMTk4O2Uuc3F1YXJlbWlsPTEzMjY5O2Uuc3F1YXJlbW09MTMyMTI7ZS5zcXVhcmVtc3F1YXJlZD0xMzIxNztlLnNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbD05NjM4O2Uuc3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbD05NjM5O2Uuc3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbD05NjQwO2Uuc3F1YXJldmVydGljYWxmaWxsPTk2Mzc7ZS5zcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrPTk2MzU7ZS5zcnNxdWFyZT0xMzI3NTtlLnNzYWJlbmdhbGk9MjQ4NztlLnNzYWRldmE9MjM1OTtlLnNzYWd1amFyYXRpPTI3NDM7ZS5zc2FuZ2NpZXVja29yZWFuPTEyNjE3O2Uuc3NhbmdoaWV1aGtvcmVhbj0xMjY3NztlLnNzYW5naWV1bmdrb3JlYW49MTI2NzI7ZS5zc2FuZ2tpeWVva2tvcmVhbj0xMjU5NDtlLnNzYW5nbmlldW5rb3JlYW49MTI2NDU7ZS5zc2FuZ3BpZXVwa29yZWFuPTEyNjExO2Uuc3NhbmdzaW9za29yZWFuPTEyNjE0O2Uuc3Nhbmd0aWtldXRrb3JlYW49MTI2MDA7ZS5zc3VwZXJpb3I9NjMyMTg7ZS5zdGVybGluZz0xNjM7ZS5zdGVybGluZ21vbm9zcGFjZT02NTUwNTtlLnN0cm9rZWxvbmdvdmVybGF5Y21iPTgyMjtlLnN0cm9rZXNob3J0b3ZlcmxheWNtYj04MjE7ZS5zdWJzZXQ9ODgzNDtlLnN1YnNldG5vdGVxdWFsPTg4NDI7ZS5zdWJzZXRvcmVxdWFsPTg4Mzg7ZS5zdWNjZWVkcz04ODI3O2Uuc3VjaHRoYXQ9ODcxNTtlLnN1aGlyYWdhbmE9MTIzNzc7ZS5zdWthdGFrYW5hPTEyNDczO2Uuc3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNTtlLnN1a3VuYXJhYmljPTE2MTg7ZS5zdW1tYXRpb249ODcyMTtlLnN1bj05Nzg4O2Uuc3VwZXJzZXQ9ODgzNTtlLnN1cGVyc2V0bm90ZXF1YWw9ODg0MztlLnN1cGVyc2V0b3JlcXVhbD04ODM5O2Uuc3ZzcXVhcmU9MTMyNzY7ZS5zeW91d2FlcmFzcXVhcmU9MTMxODA7ZS50PTExNjtlLnRhYmVuZ2FsaT0yNDY4O2UudGFja2Rvd249ODg2ODtlLnRhY2tsZWZ0PTg4Njc7ZS50YWRldmE9MjM0MDtlLnRhZ3VqYXJhdGk9MjcyNDtlLnRhZ3VybXVraGk9MjU5NjtlLnRhaGFyYWJpYz0xNTkxO2UudGFoZmluYWxhcmFiaWM9NjUyMTg7ZS50YWhpbml0aWFsYXJhYmljPTY1MjE5O2UudGFoaXJhZ2FuYT0xMjM4MztlLnRhaG1lZGlhbGFyYWJpYz02NTIyMDtlLnRhaXN5b3VlcmFzcXVhcmU9MTMxODE7ZS50YWthdGFrYW5hPTEyNDc5O2UudGFrYXRha2FuYWhhbGZ3aWR0aD02NTQwODtlLnRhdHdlZWxhcmFiaWM9MTYwMDtlLnRhdT05NjQ7ZS50YXY9MTUxNDtlLnRhdmRhZ2VzPTY0MzMwO2UudGF2ZGFnZXNoPTY0MzMwO2UudGF2ZGFnZXNoaGVicmV3PTY0MzMwO2UudGF2aGVicmV3PTE1MTQ7ZS50YmFyPTM1OTtlLnRib3BvbW9mbz0xMjU1NDtlLnRjYXJvbj0zNTc7ZS50Y2N1cmw9NjgwO2UudGNlZGlsbGE9MzU1O2UudGNoZWhhcmFiaWM9MTY3MDtlLnRjaGVoZmluYWxhcmFiaWM9NjQzNzk7ZS50Y2hlaGluaXRpYWxhcmFiaWM9NjQzODA7ZS50Y2hlaG1lZGlhbGFyYWJpYz02NDM4MTtlLnRjaXJjbGU9OTQ0MztlLnRjaXJjdW1mbGV4YmVsb3c9Nzc5MztlLnRjb21tYWFjY2VudD0zNTU7ZS50ZGllcmVzaXM9NzgzMTtlLnRkb3RhY2NlbnQ9Nzc4NztlLnRkb3RiZWxvdz03Nzg5O2UudGVjeXJpbGxpYz0xMDkwO2UudGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk3O2UudGVoYXJhYmljPTE1Nzg7ZS50ZWhmaW5hbGFyYWJpYz02NTE3NDtlLnRlaGhhaGluaXRpYWxhcmFiaWM9NjQ2NzQ7ZS50ZWhoYWhpc29sYXRlZGFyYWJpYz02NDUyNDtlLnRlaGluaXRpYWxhcmFiaWM9NjUxNzU7ZS50ZWhpcmFnYW5hPTEyMzkwO2UudGVoamVlbWluaXRpYWxhcmFiaWM9NjQ2NzM7ZS50ZWhqZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjM7ZS50ZWhtYXJidXRhYXJhYmljPTE1Nzc7ZS50ZWhtYXJidXRhZmluYWxhcmFiaWM9NjUxNzI7ZS50ZWhtZWRpYWxhcmFiaWM9NjUxNzY7ZS50ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3NjtlLnRlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyNjtlLnRlaG5vb25maW5hbGFyYWJpYz02NDYyNztlLnRla2F0YWthbmE9MTI0ODY7ZS50ZWthdGFrYW5haGFsZndpZHRoPTY1NDExO2UudGVsZXBob25lPTg0ODE7ZS50ZWxlcGhvbmVibGFjaz05NzQyO2UudGVsaXNoYWdlZG9sYWhlYnJldz0xNDQwO2UudGVsaXNoYXFldGFuYWhlYnJldz0xNDQ5O2UudGVuY2lyY2xlPTkzMjE7ZS50ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODQxO2UudGVucGFyZW49OTM0MTtlLnRlbnBlcmlvZD05MzYxO2UudGVucm9tYW49ODU2OTtlLnRlc2g9Njc5O2UudGV0PTE0OTY7ZS50ZXRkYWdlc2g9NjQzMTI7ZS50ZXRkYWdlc2hoZWJyZXc9NjQzMTI7ZS50ZXRoZWJyZXc9MTQ5NjtlLnRldHNlY3lyaWxsaWM9MTIwNTtlLnRldmlyaGVicmV3PTE0MzU7ZS50ZXZpcmxlZnRoZWJyZXc9MTQzNTtlLnRoYWJlbmdhbGk9MjQ2OTtlLnRoYWRldmE9MjM0MTtlLnRoYWd1amFyYXRpPTI3MjU7ZS50aGFndXJtdWtoaT0yNTk3O2UudGhhbGFyYWJpYz0xNTg0O2UudGhhbGZpbmFsYXJhYmljPTY1MTk2O2UudGhhbnRoYWtoYXRsb3dsZWZ0dGhhaT02MzY0MDtlLnRoYW50aGFraGF0bG93cmlnaHR0aGFpPTYzNjM5O2UudGhhbnRoYWtoYXR0aGFpPTM2NjA7ZS50aGFudGhha2hhdHVwcGVybGVmdHRoYWk9NjM2Mzg7ZS50aGVoYXJhYmljPTE1Nzk7ZS50aGVoZmluYWxhcmFiaWM9NjUxNzg7ZS50aGVoaW5pdGlhbGFyYWJpYz02NTE3OTtlLnRoZWhtZWRpYWxhcmFiaWM9NjUxODA7ZS50aGVyZWV4aXN0cz04NzA3O2UudGhlcmVmb3JlPTg3NTY7ZS50aGV0YT05NTI7ZS50aGV0YTE9OTc3O2UudGhldGFzeW1ib2xncmVlaz05Nzc7ZS50aGlldXRoYWNpcmNsZWtvcmVhbj0xMjkyMTtlLnRoaWV1dGhhcGFyZW5rb3JlYW49MTI4MjU7ZS50aGlldXRoY2lyY2xla29yZWFuPTEyOTA3O2UudGhpZXV0aGtvcmVhbj0xMjYyMDtlLnRoaWV1dGhwYXJlbmtvcmVhbj0xMjgxMTtlLnRoaXJ0ZWVuY2lyY2xlPTkzMjQ7ZS50aGlydGVlbnBhcmVuPTkzNDQ7ZS50aGlydGVlbnBlcmlvZD05MzY0O2UudGhvbmFuZ21vbnRob3RoYWk9MzYwMTtlLnRob29rPTQyOTtlLnRob3BodXRoYW90aGFpPTM2MDI7ZS50aG9ybj0yNTQ7ZS50aG90aGFoYW50aGFpPTM2MDc7ZS50aG90aGFudGhhaT0zNjAwO2UudGhvdGhvbmd0aGFpPTM2MDg7ZS50aG90aHVuZ3RoYWk9MzYwNjtlLnRob3VzYW5kY3lyaWxsaWM9MTE1NDtlLnRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYz0xNjQ0O2UudGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbj0xNjQ0O2UudGhyZWU9NTE7ZS50aHJlZWFyYWJpYz0xNjM1O2UudGhyZWViZW5nYWxpPTI1Mzc7ZS50aHJlZWNpcmNsZT05MzE0O2UudGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI0O2UudGhyZWVkZXZhPTI0MDk7ZS50aHJlZWVpZ2h0aHM9ODU0MDtlLnRocmVlZ3VqYXJhdGk9Mjc5MztlLnRocmVlZ3VybXVraGk9MjY2NTtlLnRocmVlaGFja2FyYWJpYz0xNjM1O2UudGhyZWVoYW5nemhvdT0xMjMyMztlLnRocmVlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNDtlLnRocmVlaW5mZXJpb3I9ODMyMztlLnRocmVlbW9ub3NwYWNlPTY1Mjk5O2UudGhyZWVudW1lcmF0b3JiZW5nYWxpPTI1NTA7ZS50aHJlZW9sZHN0eWxlPTYzMjgzO2UudGhyZWVwYXJlbj05MzM0O2UudGhyZWVwZXJpb2Q9OTM1NDtlLnRocmVlcGVyc2lhbj0xNzc5O2UudGhyZWVxdWFydGVycz0xOTA7ZS50aHJlZXF1YXJ0ZXJzZW1kYXNoPTYzMTk4O2UudGhyZWVyb21hbj04NTYyO2UudGhyZWVzdXBlcmlvcj0xNzk7ZS50aHJlZXRoYWk9MzY2NztlLnRoenNxdWFyZT0xMzIwNDtlLnRpaGlyYWdhbmE9MTIzODU7ZS50aWthdGFrYW5hPTEyNDgxO2UudGlrYXRha2FuYWhhbGZ3aWR0aD02NTQwOTtlLnRpa2V1dGFjaXJjbGVrb3JlYW49MTI5MTI7ZS50aWtldXRhcGFyZW5rb3JlYW49MTI4MTY7ZS50aWtldXRjaXJjbGVrb3JlYW49MTI4OTg7ZS50aWtldXRrb3JlYW49MTI1OTk7ZS50aWtldXRwYXJlbmtvcmVhbj0xMjgwMjtlLnRpbGRlPTczMjtlLnRpbGRlYmVsb3djbWI9ODE2O2UudGlsZGVjbWI9NzcxO2UudGlsZGVjb21iPTc3MTtlLnRpbGRlZG91YmxlY21iPTg2NDtlLnRpbGRlb3BlcmF0b3I9ODc2NDtlLnRpbGRlb3ZlcmxheWNtYj04MjA7ZS50aWxkZXZlcnRpY2FsY21iPTgzMDtlLnRpbWVzY2lyY2xlPTg4NTU7ZS50aXBlaGFoZWJyZXc9MTQzMDtlLnRpcGVoYWxlZnRoZWJyZXc9MTQzMDtlLnRpcHBpZ3VybXVraGk9MjY3MjtlLnRpdGxvY3lyaWxsaWNjbWI9MTE1NTtlLnRpd25hcm1lbmlhbj0xNDA3O2UudGxpbmViZWxvdz03NzkxO2UudG1vbm9zcGFjZT02NTM2NDtlLnRvYXJtZW5pYW49MTM4NTtlLnRvaGlyYWdhbmE9MTIzOTI7ZS50b2thdGFrYW5hPTEyNDg4O2UudG9rYXRha2FuYWhhbGZ3aWR0aD02NTQxMjtlLnRvbmViYXJleHRyYWhpZ2htb2Q9NzQxO2UudG9uZWJhcmV4dHJhbG93bW9kPTc0NTtlLnRvbmViYXJoaWdobW9kPTc0MjtlLnRvbmViYXJsb3dtb2Q9NzQ0O2UudG9uZWJhcm1pZG1vZD03NDM7ZS50b25lZml2ZT00NDU7ZS50b25lc2l4PTM4OTtlLnRvbmV0d289NDI0O2UudG9ub3M9OTAwO2UudG9uc3F1YXJlPTEzMDk1O2UudG9wYXRha3RoYWk9MzU5OTtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMwODtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsPTY1MTE3O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODE7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzA5O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsPTY1MTE4O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDgyO2UudG90YW90aGFpPTM2MDU7ZS50cGFsYXRhbGhvb2s9NDI3O2UudHBhcmVuPTkzOTE7ZS50cmFkZW1hcms9ODQ4MjtlLnRyYWRlbWFya3NhbnM9NjM3MjI7ZS50cmFkZW1hcmtzZXJpZj02MzE5NTtlLnRyZXRyb2ZsZXhob29rPTY0ODtlLnRyaWFnZG49OTY2MDtlLnRyaWFnbGY9OTY2ODtlLnRyaWFncnQ9OTY1ODtlLnRyaWFndXA9OTY1MDtlLnRzPTY3ODtlLnRzYWRpPTE1MTA7ZS50c2FkaWRhZ2VzaD02NDMyNjtlLnRzYWRpZGFnZXNoaGVicmV3PTY0MzI2O2UudHNhZGloZWJyZXc9MTUxMDtlLnRzZWN5cmlsbGljPTEwOTQ7ZS50c2VyZT0xNDYxO2UudHNlcmUxMj0xNDYxO2UudHNlcmUxZT0xNDYxO2UudHNlcmUyYj0xNDYxO2UudHNlcmVoZWJyZXc9MTQ2MTtlLnRzZXJlbmFycm93aGVicmV3PTE0NjE7ZS50c2VyZXF1YXJ0ZXJoZWJyZXc9MTQ2MTtlLnRzZXJld2lkZWhlYnJldz0xNDYxO2UudHNoZWN5cmlsbGljPTExMTU7ZS50c3VwZXJpb3I9NjMyMTk7ZS50dGFiZW5nYWxpPTI0NjM7ZS50dGFkZXZhPTIzMzU7ZS50dGFndWphcmF0aT0yNzE5O2UudHRhZ3VybXVraGk9MjU5MTtlLnR0ZWhhcmFiaWM9MTY1NztlLnR0ZWhmaW5hbGFyYWJpYz02NDM1OTtlLnR0ZWhpbml0aWFsYXJhYmljPTY0MzYwO2UudHRlaG1lZGlhbGFyYWJpYz02NDM2MTtlLnR0aGFiZW5nYWxpPTI0NjQ7ZS50dGhhZGV2YT0yMzM2O2UudHRoYWd1amFyYXRpPTI3MjA7ZS50dGhhZ3VybXVraGk9MjU5MjtlLnR0dXJuZWQ9NjQ3O2UudHVoaXJhZ2FuYT0xMjM4ODtlLnR1a2F0YWthbmE9MTI0ODQ7ZS50dWthdGFrYW5haGFsZndpZHRoPTY1NDEwO2UudHVzbWFsbGhpcmFnYW5hPTEyMzg3O2UudHVzbWFsbGthdGFrYW5hPTEyNDgzO2UudHVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkxO2UudHdlbHZlY2lyY2xlPTkzMjM7ZS50d2VsdmVwYXJlbj05MzQzO2UudHdlbHZlcGVyaW9kPTkzNjM7ZS50d2VsdmVyb21hbj04NTcxO2UudHdlbnR5Y2lyY2xlPTkzMzE7ZS50d2VudHloYW5nemhvdT0yMTMxNjtlLnR3ZW50eXBhcmVuPTkzNTE7ZS50d2VudHlwZXJpb2Q9OTM3MTtlLnR3bz01MDtlLnR3b2FyYWJpYz0xNjM0O2UudHdvYmVuZ2FsaT0yNTM2O2UudHdvY2lyY2xlPTkzMTM7ZS50d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIzO2UudHdvZGV2YT0yNDA4O2UudHdvZG90ZW5sZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcj04MjI5O2UudHdvZG90bGVhZGVydmVydGljYWw9NjUwNzI7ZS50d29ndWphcmF0aT0yNzkyO2UudHdvZ3VybXVraGk9MjY2NDtlLnR3b2hhY2thcmFiaWM9MTYzNDtlLnR3b2hhbmd6aG91PTEyMzIyO2UudHdvaWRlb2dyYXBoaWNwYXJlbj0xMjgzMztlLnR3b2luZmVyaW9yPTgzMjI7ZS50d29tb25vc3BhY2U9NjUyOTg7ZS50d29udW1lcmF0b3JiZW5nYWxpPTI1NDk7ZS50d29vbGRzdHlsZT02MzI4MjtlLnR3b3BhcmVuPTkzMzM7ZS50d29wZXJpb2Q9OTM1MztlLnR3b3BlcnNpYW49MTc3ODtlLnR3b3JvbWFuPTg1NjE7ZS50d29zdHJva2U9NDQzO2UudHdvc3VwZXJpb3I9MTc4O2UudHdvdGhhaT0zNjY2O2UudHdvdGhpcmRzPTg1MzI7ZS51PTExNztlLnVhY3V0ZT0yNTA7ZS51YmFyPTY0OTtlLnViZW5nYWxpPTI0NDE7ZS51Ym9wb21vZm89MTI1ODQ7ZS51YnJldmU9MzY1O2UudWNhcm9uPTQ2ODtlLnVjaXJjbGU9OTQ0NDtlLnVjaXJjdW1mbGV4PTI1MTtlLnVjaXJjdW1mbGV4YmVsb3c9Nzc5OTtlLnVjeXJpbGxpYz0xMDkxO2UudWRhdHRhZGV2YT0yMzg1O2UudWRibGFjdXRlPTM2OTtlLnVkYmxncmF2ZT01MzM7ZS51ZGV2YT0yMzEzO2UudWRpZXJlc2lzPTI1MjtlLnVkaWVyZXNpc2FjdXRlPTQ3MjtlLnVkaWVyZXNpc2JlbG93PTc3OTU7ZS51ZGllcmVzaXNjYXJvbj00NzQ7ZS51ZGllcmVzaXNjeXJpbGxpYz0xMjY1O2UudWRpZXJlc2lzZ3JhdmU9NDc2O2UudWRpZXJlc2lzbWFjcm9uPTQ3MDtlLnVkb3RiZWxvdz03OTA5O2UudWdyYXZlPTI0OTtlLnVndWphcmF0aT0yNjk3O2UudWd1cm11a2hpPTI1Njk7ZS51aGlyYWdhbmE9MTIzNTg7ZS51aG9va2Fib3ZlPTc5MTE7ZS51aG9ybj00MzI7ZS51aG9ybmFjdXRlPTc5MTM7ZS51aG9ybmRvdGJlbG93PTc5MjE7ZS51aG9ybmdyYXZlPTc5MTU7ZS51aG9ybmhvb2thYm92ZT03OTE3O2UudWhvcm50aWxkZT03OTE5O2UudWh1bmdhcnVtbGF1dD0zNjk7ZS51aHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NztlLnVpbnZlcnRlZGJyZXZlPTUzNTtlLnVrYXRha2FuYT0xMjQ1NDtlLnVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NTtlLnVrY3lyaWxsaWM9MTE0NTtlLnVrb3JlYW49MTI2MzY7ZS51bWFjcm9uPTM2MztlLnVtYWNyb25jeXJpbGxpYz0xMjYzO2UudW1hY3JvbmRpZXJlc2lzPTc4MDM7ZS51bWF0cmFndXJtdWtoaT0yNjI1O2UudW1vbm9zcGFjZT02NTM2NTtlLnVuZGVyc2NvcmU9OTU7ZS51bmRlcnNjb3JlZGJsPTgyMTU7ZS51bmRlcnNjb3JlbW9ub3NwYWNlPTY1MzQzO2UudW5kZXJzY29yZXZlcnRpY2FsPTY1MDc1O2UudW5kZXJzY29yZXdhdnk9NjUxMDM7ZS51bmlvbj04NzQ2O2UudW5pdmVyc2FsPTg3MDQ7ZS51b2dvbmVrPTM3MTtlLnVwYXJlbj05MzkyO2UudXBibG9jaz05NjAwO2UudXBwZXJkb3RoZWJyZXc9MTQ3NjtlLnVwc2lsb249OTY1O2UudXBzaWxvbmRpZXJlc2lzPTk3MTtlLnVwc2lsb25kaWVyZXNpc3Rvbm9zPTk0NDtlLnVwc2lsb25sYXRpbj02NTA7ZS51cHNpbG9udG9ub3M9OTczO2UudXB0YWNrYmVsb3djbWI9Nzk3O2UudXB0YWNrbW9kPTcyNDtlLnVyYWd1cm11a2hpPTI2NzU7ZS51cmluZz0zNjc7ZS51c2hvcnRjeXJpbGxpYz0xMTE4O2UudXNtYWxsaGlyYWdhbmE9MTIzNTc7ZS51c21hbGxrYXRha2FuYT0xMjQ1MztlLnVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg1O2UudXN0cmFpZ2h0Y3lyaWxsaWM9MTE5OTtlLnVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDE7ZS51dGlsZGU9MzYxO2UudXRpbGRlYWN1dGU9NzgwMTtlLnV0aWxkZWJlbG93PTc3OTc7ZS51dWJlbmdhbGk9MjQ0MjtlLnV1ZGV2YT0yMzE0O2UudXVndWphcmF0aT0yNjk4O2UudXVndXJtdWtoaT0yNTcwO2UudXVtYXRyYWd1cm11a2hpPTI2MjY7ZS51dXZvd2Vsc2lnbmJlbmdhbGk9MjQ5ODtlLnV1dm93ZWxzaWduZGV2YT0yMzcwO2UudXV2b3dlbHNpZ25ndWphcmF0aT0yNzU0O2UudXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NztlLnV2b3dlbHNpZ25kZXZhPTIzNjk7ZS51dm93ZWxzaWduZ3VqYXJhdGk9Mjc1MztlLnY9MTE4O2UudmFkZXZhPTIzNTc7ZS52YWd1amFyYXRpPTI3NDE7ZS52YWd1cm11a2hpPTI2MTM7ZS52YWthdGFrYW5hPTEyNTM1O2UudmF2PTE0OTM7ZS52YXZkYWdlc2g9NjQzMDk7ZS52YXZkYWdlc2g2NT02NDMwOTtlLnZhdmRhZ2VzaGhlYnJldz02NDMwOTtlLnZhdmhlYnJldz0xNDkzO2UudmF2aG9sYW09NjQzMzE7ZS52YXZob2xhbWhlYnJldz02NDMzMTtlLnZhdnZhdmhlYnJldz0xNTIwO2UudmF2eW9kaGVicmV3PTE1MjE7ZS52Y2lyY2xlPTk0NDU7ZS52ZG90YmVsb3c9NzgwNztlLnZlY3lyaWxsaWM9MTA3NDtlLnZlaGFyYWJpYz0xNzAwO2UudmVoZmluYWxhcmFiaWM9NjQzNjM7ZS52ZWhpbml0aWFsYXJhYmljPTY0MzY0O2UudmVobWVkaWFsYXJhYmljPTY0MzY1O2UudmVrYXRha2FuYT0xMjUzNztlLnZlbnVzPTk3OTI7ZS52ZXJ0aWNhbGJhcj0xMjQ7ZS52ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODE7ZS52ZXJ0aWNhbGxpbmViZWxvd2NtYj04MDk7ZS52ZXJ0aWNhbGxpbmVsb3dtb2Q9NzE2O2UudmVydGljYWxsaW5lbW9kPTcxMjtlLnZld2FybWVuaWFuPTE0MDY7ZS52aG9vaz02NTE7ZS52aWthdGFrYW5hPTEyNTM2O2UudmlyYW1hYmVuZ2FsaT0yNTA5O2UudmlyYW1hZGV2YT0yMzgxO2UudmlyYW1hZ3VqYXJhdGk9Mjc2NTtlLnZpc2FyZ2FiZW5nYWxpPTI0MzU7ZS52aXNhcmdhZGV2YT0yMzA3O2UudmlzYXJnYWd1amFyYXRpPTI2OTE7ZS52bW9ub3NwYWNlPTY1MzY2O2Uudm9hcm1lbmlhbj0xNDAwO2Uudm9pY2VkaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDY7ZS52b2ljZWRpdGVyYXRpb25rYXRha2FuYT0xMjU0MjtlLnZvaWNlZG1hcmtrYW5hPTEyNDQzO2Uudm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzg7ZS52b2thdGFrYW5hPTEyNTM4O2UudnBhcmVuPTkzOTM7ZS52dGlsZGU9NzgwNTtlLnZ0dXJuZWQ9NjUyO2UudnVoaXJhZ2FuYT0xMjQzNjtlLnZ1a2F0YWthbmE9MTI1MzI7ZS53PTExOTtlLndhY3V0ZT03ODExO2Uud2Fla29yZWFuPTEyNjMzO2Uud2FoaXJhZ2FuYT0xMjQzMTtlLndha2F0YWthbmE9MTI1Mjc7ZS53YWthdGFrYW5haGFsZndpZHRoPTY1NDM2O2Uud2Frb3JlYW49MTI2MzI7ZS53YXNtYWxsaGlyYWdhbmE9MTI0MzA7ZS53YXNtYWxsa2F0YWthbmE9MTI1MjY7ZS53YXR0b3NxdWFyZT0xMzE0MztlLndhdmVkYXNoPTEyMzE2O2Uud2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NjtlLndhd2FyYWJpYz0xNjA4O2Uud2F3ZmluYWxhcmFiaWM9NjUyNjI7ZS53YXdoYW16YWFib3ZlYXJhYmljPTE1NzI7ZS53YXdoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTg7ZS53YnNxdWFyZT0xMzI3NztlLndjaXJjbGU9OTQ0NjtlLndjaXJjdW1mbGV4PTM3MztlLndkaWVyZXNpcz03ODEzO2Uud2RvdGFjY2VudD03ODE1O2Uud2RvdGJlbG93PTc4MTc7ZS53ZWhpcmFnYW5hPTEyNDMzO2Uud2VpZXJzdHJhc3M9ODQ3MjtlLndla2F0YWthbmE9MTI1Mjk7ZS53ZWtvcmVhbj0xMjYzODtlLndlb2tvcmVhbj0xMjYzNztlLndncmF2ZT03ODA5O2Uud2hpdGVidWxsZXQ9OTcwMjtlLndoaXRlY2lyY2xlPTk2NzU7ZS53aGl0ZWNpcmNsZWludmVyc2U9OTY4OTtlLndoaXRlY29ybmVyYnJhY2tldGxlZnQ9MTIzMDI7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwOTE7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMztlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTI7ZS53aGl0ZWRpYW1vbmQ9OTY3MTtlLndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZD05NjcyO2Uud2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NjM7ZS53aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjE7ZS53aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2NztlLndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NTtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzEwO2Uud2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzExO2Uud2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjU3O2Uud2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NTtlLndoaXRlc21hbGxzcXVhcmU9OTY0MztlLndoaXRlc21pbGluZ2ZhY2U9OTc4NjtlLndoaXRlc3F1YXJlPTk2MzM7ZS53aGl0ZXN0YXI9OTczNDtlLndoaXRldGVsZXBob25lPTk3NDM7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMxMjtlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMxMztlLndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MztlLndoaXRldXBwb2ludGluZ3RyaWFuZ2xlPTk2NTE7ZS53aWhpcmFnYW5hPTEyNDMyO2Uud2lrYXRha2FuYT0xMjUyODtlLndpa29yZWFuPTEyNjM5O2Uud21vbm9zcGFjZT02NTM2NztlLndvaGlyYWdhbmE9MTI0MzQ7ZS53b2thdGFrYW5hPTEyNTMwO2Uud29rYXRha2FuYWhhbGZ3aWR0aD02NTM4MjtlLndvbj04MzYxO2Uud29ubW9ub3NwYWNlPTY1NTEwO2Uud293YWVudGhhaT0zNjIzO2Uud3BhcmVuPTkzOTQ7ZS53cmluZz03ODMyO2Uud3N1cGVyaW9yPTY5NTtlLnd0dXJuZWQ9NjUzO2Uud3lubj00NDc7ZS54PTEyMDtlLnhhYm92ZWNtYj04Mjk7ZS54Ym9wb21vZm89MTI1NjI7ZS54Y2lyY2xlPTk0NDc7ZS54ZGllcmVzaXM9NzgyMTtlLnhkb3RhY2NlbnQ9NzgxOTtlLnhlaGFybWVuaWFuPTEzODk7ZS54aT05NTg7ZS54bW9ub3NwYWNlPTY1MzY4O2UueHBhcmVuPTkzOTU7ZS54c3VwZXJpb3I9NzM5O2UueT0xMjE7ZS55YWFkb3NxdWFyZT0xMzEzNDtlLnlhYmVuZ2FsaT0yNDc5O2UueWFjdXRlPTI1MztlLnlhZGV2YT0yMzUxO2UueWFla29yZWFuPTEyNjI2O2UueWFndWphcmF0aT0yNzM1O2UueWFndXJtdWtoaT0yNjA3O2UueWFoaXJhZ2FuYT0xMjQyMDtlLnlha2F0YWthbmE9MTI1MTY7ZS55YWthdGFrYW5haGFsZndpZHRoPTY1NDI4O2UueWFrb3JlYW49MTI2MjU7ZS55YW1ha2thbnRoYWk9MzY2MjtlLnlhc21hbGxoaXJhZ2FuYT0xMjQxOTtlLnlhc21hbGxrYXRha2FuYT0xMjUxNTtlLnlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4ODtlLnlhdGN5cmlsbGljPTExMjM7ZS55Y2lyY2xlPTk0NDg7ZS55Y2lyY3VtZmxleD0zNzU7ZS55ZGllcmVzaXM9MjU1O2UueWRvdGFjY2VudD03ODIzO2UueWRvdGJlbG93PTc5MjU7ZS55ZWhhcmFiaWM9MTYxMDtlLnllaGJhcnJlZWFyYWJpYz0xNzQ2O2UueWVoYmFycmVlZmluYWxhcmFiaWM9NjQ0MzE7ZS55ZWhmaW5hbGFyYWJpYz02NTI2NjtlLnllaGhhbXphYWJvdmVhcmFiaWM9MTU3NDtlLnllaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE2MjtlLnllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljPTY1MTYzO2UueWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYz02NTE2NDtlLnllaGluaXRpYWxhcmFiaWM9NjUyNjc7ZS55ZWhtZWRpYWxhcmFiaWM9NjUyNjg7ZS55ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDczMztlLnllaG1lZW1pc29sYXRlZGFyYWJpYz02NDYwMDtlLnllaG5vb25maW5hbGFyYWJpYz02NDY2MDtlLnllaHRocmVlZG90c2JlbG93YXJhYmljPTE3NDU7ZS55ZWtvcmVhbj0xMjYzMDtlLnllbj0xNjU7ZS55ZW5tb25vc3BhY2U9NjU1MDk7ZS55ZW9rb3JlYW49MTI2Mjk7ZS55ZW9yaW5oaWV1aGtvcmVhbj0xMjY3ODtlLnllcmFoYmVueW9tb2hlYnJldz0xNDUwO2UueWVyYWhiZW55b21vbGVmdGhlYnJldz0xNDUwO2UueWVyaWN5cmlsbGljPTEwOTk7ZS55ZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjczO2UueWVzaWV1bmdrb3JlYW49MTI2NzM7ZS55ZXNpZXVuZ3BhbnNpb3Nrb3JlYW49MTI2NzU7ZS55ZXNpZXVuZ3Npb3Nrb3JlYW49MTI2NzQ7ZS55ZXRpdmhlYnJldz0xNDM0O2UueWdyYXZlPTc5MjM7ZS55aG9vaz00MzY7ZS55aG9va2Fib3ZlPTc5Mjc7ZS55aWFybWVuaWFuPTEzOTc7ZS55aWN5cmlsbGljPTExMTE7ZS55aWtvcmVhbj0xMjY0MjtlLnlpbnlhbmc9OTc3NTtlLnlpd25hcm1lbmlhbj0xNDEwO2UueW1vbm9zcGFjZT02NTM2OTtlLnlvZD0xNDk3O2UueW9kZGFnZXNoPTY0MzEzO2UueW9kZGFnZXNoaGVicmV3PTY0MzEzO2UueW9kaGVicmV3PTE0OTc7ZS55b2R5b2RoZWJyZXc9MTUyMjtlLnlvZHlvZHBhdGFoaGVicmV3PTY0Mjg3O2UueW9oaXJhZ2FuYT0xMjQyNDtlLnlvaWtvcmVhbj0xMjY4MTtlLnlva2F0YWthbmE9MTI1MjA7ZS55b2thdGFrYW5haGFsZndpZHRoPTY1NDMwO2UueW9rb3JlYW49MTI2MzU7ZS55b3NtYWxsaGlyYWdhbmE9MTI0MjM7ZS55b3NtYWxsa2F0YWthbmE9MTI1MTk7ZS55b3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTA7ZS55b3RncmVlaz0xMDExO2UueW95YWVrb3JlYW49MTI2ODA7ZS55b3lha29yZWFuPTEyNjc5O2UueW95YWt0aGFpPTM2MTg7ZS55b3lpbmd0aGFpPTM1OTc7ZS55cGFyZW49OTM5NjtlLnlwb2dlZ3JhbW1lbmk9ODkwO2UueXBvZ2VncmFtbWVuaWdyZWVrY21iPTgzNztlLnlyPTQyMjtlLnlyaW5nPTc4MzM7ZS55c3VwZXJpb3I9Njk2O2UueXRpbGRlPTc5Mjk7ZS55dHVybmVkPTY1NDtlLnl1aGlyYWdhbmE9MTI0MjI7ZS55dWlrb3JlYW49MTI2ODQ7ZS55dWthdGFrYW5hPTEyNTE4O2UueXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyOTtlLnl1a29yZWFuPTEyNjQwO2UueXVzYmlnY3lyaWxsaWM9MTEzMTtlLnl1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMztlLnl1c2xpdHRsZWN5cmlsbGljPTExMjc7ZS55dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjk7ZS55dXNtYWxsaGlyYWdhbmE9MTI0MjE7ZS55dXNtYWxsa2F0YWthbmE9MTI1MTc7ZS55dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODk7ZS55dXlla29yZWFuPTEyNjgzO2UueXV5ZW9rb3JlYW49MTI2ODI7ZS55eWFiZW5nYWxpPTI1Mjc7ZS55eWFkZXZhPTIzOTk7ZS56PTEyMjtlLnphYXJtZW5pYW49MTM4MjtlLnphY3V0ZT0zNzg7ZS56YWRldmE9MjM5NTtlLnphZ3VybXVraGk9MjY1MTtlLnphaGFyYWJpYz0xNTkyO2UuemFoZmluYWxhcmFiaWM9NjUyMjI7ZS56YWhpbml0aWFsYXJhYmljPTY1MjIzO2UuemFoaXJhZ2FuYT0xMjM3NDtlLnphaG1lZGlhbGFyYWJpYz02NTIyNDtlLnphaW5hcmFiaWM9MTU4NjtlLnphaW5maW5hbGFyYWJpYz02NTIwMDtlLnpha2F0YWthbmE9MTI0NzA7ZS56YXFlZmdhZG9saGVicmV3PTE0Mjk7ZS56YXFlZnFhdGFuaGVicmV3PTE0Mjg7ZS56YXJxYWhlYnJldz0xNDMyO2UuemF5aW49MTQ5NDtlLnpheWluZGFnZXNoPTY0MzEwO2UuemF5aW5kYWdlc2hoZWJyZXc9NjQzMTA7ZS56YXlpbmhlYnJldz0xNDk0O2UuemJvcG9tb2ZvPTEyNTY3O2UuemNhcm9uPTM4MjtlLnpjaXJjbGU9OTQ0OTtlLnpjaXJjdW1mbGV4PTc4MjU7ZS56Y3VybD02NTc7ZS56ZG90PTM4MDtlLnpkb3RhY2NlbnQ9MzgwO2UuemRvdGJlbG93PTc4Mjc7ZS56ZWN5cmlsbGljPTEwNzk7ZS56ZWRlc2NlbmRlcmN5cmlsbGljPTExNzc7ZS56ZWRpZXJlc2lzY3lyaWxsaWM9MTI0NztlLnplaGlyYWdhbmE9MTIzODA7ZS56ZWthdGFrYW5hPTEyNDc2O2UuemVybz00ODtlLnplcm9hcmFiaWM9MTYzMjtlLnplcm9iZW5nYWxpPTI1MzQ7ZS56ZXJvZGV2YT0yNDA2O2UuemVyb2d1amFyYXRpPTI3OTA7ZS56ZXJvZ3VybXVraGk9MjY2MjtlLnplcm9oYWNrYXJhYmljPTE2MzI7ZS56ZXJvaW5mZXJpb3I9ODMyMDtlLnplcm9tb25vc3BhY2U9NjUyOTY7ZS56ZXJvb2xkc3R5bGU9NjMyODA7ZS56ZXJvcGVyc2lhbj0xNzc2O2UuemVyb3N1cGVyaW9yPTgzMDQ7ZS56ZXJvdGhhaT0zNjY0O2UuemVyb3dpZHRoam9pbmVyPTY1Mjc5O2UuemVyb3dpZHRobm9uam9pbmVyPTgyMDQ7ZS56ZXJvd2lkdGhzcGFjZT04MjAzO2UuemV0YT05NTA7ZS56aGJvcG9tb2ZvPTEyNTYzO2UuemhlYXJtZW5pYW49MTM4NjtlLnpoZWJyZXZlY3lyaWxsaWM9MTIxODtlLnpoZWN5cmlsbGljPTEwNzg7ZS56aGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc1O2UuemhlZGllcmVzaXNjeXJpbGxpYz0xMjQ1O2UuemloaXJhZ2FuYT0xMjM3NjtlLnppa2F0YWthbmE9MTI0NzI7ZS56aW5vcmhlYnJldz0xNDU0O2UuemxpbmViZWxvdz03ODI5O2Uuem1vbm9zcGFjZT02NTM3MDtlLnpvaGlyYWdhbmE9MTIzODI7ZS56b2thdGFrYW5hPTEyNDc4O2UuenBhcmVuPTkzOTc7ZS56cmV0cm9mbGV4aG9vaz02NTY7ZS56c3Ryb2tlPTQzODtlLnp1aGlyYWdhbmE9MTIzNzg7ZS56dWthdGFrYW5hPTEyNDc0O2VbIi5ub3RkZWYiXT0wO2UuYW5nYnJhY2tldGxlZnRiaWc9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdGJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnZz05MDAxO2UuYW5nYnJhY2tldHJpZ2h0QmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWc9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodEJpZ2c9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodGJpZ2c9OTAwMjtlLmFycm93aG9va2xlZnQ9ODYxODtlLmFycm93aG9va3JpZ2h0PTg2MTc7ZS5hcnJvd2xlZnR0b3BoYWxmPTg2MzY7ZS5hcnJvd2xlZnRib3RoYWxmPTg2Mzc7ZS5hcnJvd25vcnRoZWFzdD04NTk5O2UuYXJyb3dub3J0aHdlc3Q9ODU5ODtlLmFycm93cmlnaHR0b3BoYWxmPTg2NDA7ZS5hcnJvd3JpZ2h0Ym90aGFsZj04NjQxO2UuYXJyb3dzb3V0aGVhc3Q9ODYwMDtlLmFycm93c291dGh3ZXN0PTg2MDE7ZS5iYWNrc2xhc2hiaWc9ODcyNjtlLmJhY2tzbGFzaEJpZz04NzI2O2UuYmFja3NsYXNoQmlnZz04NzI2O2UuYmFja3NsYXNoYmlnZz04NzI2O2UuYmFyZGJsPTgyMTQ7ZS5icmFjZWh0aXBkb3dubGVmdD02NTA3OTtlLmJyYWNlaHRpcGRvd25yaWdodD02NTA3OTtlLmJyYWNlaHRpcHVwbGVmdD02NTA4MDtlLmJyYWNlaHRpcHVwcmlnaHQ9NjUwODA7ZS5icmFjZWxlZnRCaWc9MTIzO2UuYnJhY2VsZWZ0YmlnPTEyMztlLmJyYWNlbGVmdGJpZ2c9MTIzO2UuYnJhY2VsZWZ0QmlnZz0xMjM7ZS5icmFjZXJpZ2h0QmlnPTEyNTtlLmJyYWNlcmlnaHRiaWc9MTI1O2UuYnJhY2VyaWdodGJpZ2c9MTI1O2UuYnJhY2VyaWdodEJpZ2c9MTI1O2UuYnJhY2tldGxlZnRiaWc9OTE7ZS5icmFja2V0bGVmdEJpZz05MTtlLmJyYWNrZXRsZWZ0YmlnZz05MTtlLmJyYWNrZXRsZWZ0QmlnZz05MTtlLmJyYWNrZXRyaWdodEJpZz05MztlLmJyYWNrZXRyaWdodGJpZz05MztlLmJyYWNrZXRyaWdodGJpZ2c9OTM7ZS5icmFja2V0cmlnaHRCaWdnPTkzO2UuY2VpbGluZ2xlZnRiaWc9ODk2ODtlLmNlaWxpbmdsZWZ0QmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZ2c9ODk2ODtlLmNlaWxpbmdsZWZ0YmlnZz04OTY4O2UuY2VpbGluZ3JpZ2h0YmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWc9ODk2OTtlLmNlaWxpbmdyaWdodGJpZ2c9ODk2OTtlLmNlaWxpbmdyaWdodEJpZ2c9ODk2OTtlLmNpcmNsZWRvdGRpc3BsYXk9ODg1NztlLmNpcmNsZWRvdHRleHQ9ODg1NztlLmNpcmNsZW11bHRpcGx5ZGlzcGxheT04ODU1O2UuY2lyY2xlbXVsdGlwbHl0ZXh0PTg4NTU7ZS5jaXJjbGVwbHVzZGlzcGxheT04ODUzO2UuY2lyY2xlcGx1c3RleHQ9ODg1MztlLmNvbnRpbnRlZ3JhbGRpc3BsYXk9ODc1MDtlLmNvbnRpbnRlZ3JhbHRleHQ9ODc1MDtlLmNvcHJvZHVjdGRpc3BsYXk9ODcyMDtlLmNvcHJvZHVjdHRleHQ9ODcyMDtlLmZsb29ybGVmdEJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnPTg5NzA7ZS5mbG9vcmxlZnRiaWdnPTg5NzA7ZS5mbG9vcmxlZnRCaWdnPTg5NzA7ZS5mbG9vcnJpZ2h0YmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnZz04OTcxO2UuZmxvb3JyaWdodGJpZ2c9ODk3MTtlLmhhdHdpZGU9NzcwO2UuaGF0d2lkZXI9NzcwO2UuaGF0d2lkZXN0PTc3MDtlLmludGVyY2FsPTc0ODg7ZS5pbnRlZ3JhbGRpc3BsYXk9ODc0NztlLmludGVncmFsdGV4dD04NzQ3O2UuaW50ZXJzZWN0aW9uZGlzcGxheT04ODk4O2UuaW50ZXJzZWN0aW9udGV4dD04ODk4O2UubG9naWNhbGFuZGRpc3BsYXk9ODc0MztlLmxvZ2ljYWxhbmR0ZXh0PTg3NDM7ZS5sb2dpY2Fsb3JkaXNwbGF5PTg3NDQ7ZS5sb2dpY2Fsb3J0ZXh0PTg3NDQ7ZS5wYXJlbmxlZnRCaWc9NDA7ZS5wYXJlbmxlZnRiaWc9NDA7ZS5wYXJlbmxlZnRCaWdnPTQwO2UucGFyZW5sZWZ0YmlnZz00MDtlLnBhcmVucmlnaHRCaWc9NDE7ZS5wYXJlbnJpZ2h0YmlnPTQxO2UucGFyZW5yaWdodEJpZ2c9NDE7ZS5wYXJlbnJpZ2h0YmlnZz00MTtlLnByaW1lPTgyNDI7ZS5wcm9kdWN0ZGlzcGxheT04NzE5O2UucHJvZHVjdHRleHQ9ODcxOTtlLnJhZGljYWxiaWc9ODczMDtlLnJhZGljYWxCaWc9ODczMDtlLnJhZGljYWxCaWdnPTg3MzA7ZS5yYWRpY2FsYmlnZz04NzMwO2UucmFkaWNhbGJ0PTg3MzA7ZS5yYWRpY2FsdHA9ODczMDtlLnJhZGljYWx2ZXJ0ZXg9ODczMDtlLnNsYXNoYmlnPTQ3O2Uuc2xhc2hCaWc9NDc7ZS5zbGFzaEJpZ2c9NDc7ZS5zbGFzaGJpZ2c9NDc7ZS5zdW1tYXRpb25kaXNwbGF5PTg3MjE7ZS5zdW1tYXRpb250ZXh0PTg3MjE7ZS50aWxkZXdpZGU9NzMyO2UudGlsZGV3aWRlcj03MzI7ZS50aWxkZXdpZGVzdD03MzI7ZS51bmlvbmRpc3BsYXk9ODg5OTtlLnVuaW9ubXVsdGlkaXNwbGF5PTg4NDY7ZS51bmlvbm11bHRpdGV4dD04ODQ2O2UudW5pb25zcWRpc3BsYXk9ODg1MjtlLnVuaW9uc3F0ZXh0PTg4NTI7ZS51bmlvbnRleHQ9ODg5OTtlLnZleHRlbmRkb3VibGU9ODc0MTtlLnZleHRlbmRzaW5nbGU9ODczOX0pKSxJcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MzI7ZS5hMT05OTg1O2UuYTI9OTk4NjtlLmEyMDI9OTk4NztlLmEzPTk5ODg7ZS5hND05NzQyO2UuYTU9OTk5MDtlLmExMTk9OTk5MTtlLmExMTg9OTk5MjtlLmExMTc9OTk5MztlLmExMT05NzU1O2UuYTEyPTk3NTg7ZS5hMTM9OTk5NjtlLmExND05OTk3O2UuYTE1PTk5OTg7ZS5hMTY9OTk5OTtlLmExMDU9MWU0O2UuYTE3PTEwMDAxO2UuYTE4PTEwMDAyO2UuYTE5PTEwMDAzO2UuYTIwPTEwMDA0O2UuYTIxPTEwMDA1O2UuYTIyPTEwMDA2O2UuYTIzPTEwMDA3O2UuYTI0PTEwMDA4O2UuYTI1PTEwMDA5O2UuYTI2PTEwMDEwO2UuYTI3PTEwMDExO2UuYTI4PTEwMDEyO2UuYTY9MTAwMTM7ZS5hNz0xMDAxNDtlLmE4PTEwMDE1O2UuYTk9MTAwMTY7ZS5hMTA9MTAwMTc7ZS5hMjk9MTAwMTg7ZS5hMzA9MTAwMTk7ZS5hMzE9MTAwMjA7ZS5hMzI9MTAwMjE7ZS5hMzM9MTAwMjI7ZS5hMzQ9MTAwMjM7ZS5hMzU9OTczMztlLmEzNj0xMDAyNTtlLmEzNz0xMDAyNjtlLmEzOD0xMDAyNztlLmEzOT0xMDAyODtlLmE0MD0xMDAyOTtlLmE0MT0xMDAzMDtlLmE0Mj0xMDAzMTtlLmE0Mz0xMDAzMjtlLmE0ND0xMDAzMztlLmE0NT0xMDAzNDtlLmE0Nj0xMDAzNTtlLmE0Nz0xMDAzNjtlLmE0OD0xMDAzNztlLmE0OT0xMDAzODtlLmE1MD0xMDAzOTtlLmE1MT0xMDA0MDtlLmE1Mj0xMDA0MTtlLmE1Mz0xMDA0MjtlLmE1ND0xMDA0MztlLmE1NT0xMDA0NDtlLmE1Nj0xMDA0NTtlLmE1Nz0xMDA0NjtlLmE1OD0xMDA0NztlLmE1OT0xMDA0ODtlLmE2MD0xMDA0OTtlLmE2MT0xMDA1MDtlLmE2Mj0xMDA1MTtlLmE2Mz0xMDA1MjtlLmE2ND0xMDA1MztlLmE2NT0xMDA1NDtlLmE2Nj0xMDA1NTtlLmE2Nz0xMDA1NjtlLmE2OD0xMDA1NztlLmE2OT0xMDA1ODtlLmE3MD0xMDA1OTtlLmE3MT05Njc5O2UuYTcyPTEwMDYxO2UuYTczPTk2MzI7ZS5hNzQ9MTAwNjM7ZS5hMjAzPTEwMDY0O2UuYTc1PTEwMDY1O2UuYTIwND0xMDA2NjtlLmE3Nj05NjUwO2UuYTc3PTk2NjA7ZS5hNzg9OTY3MDtlLmE3OT0xMDA3MDtlLmE4MT05Njg3O2UuYTgyPTEwMDcyO2UuYTgzPTEwMDczO2UuYTg0PTEwMDc0O2UuYTk3PTEwMDc1O2UuYTk4PTEwMDc2O2UuYTk5PTEwMDc3O2UuYTEwMD0xMDA3ODtlLmExMDE9MTAwODE7ZS5hMTAyPTEwMDgyO2UuYTEwMz0xMDA4MztlLmExMDQ9MTAwODQ7ZS5hMTA2PTEwMDg1O2UuYTEwNz0xMDA4NjtlLmExMDg9MTAwODc7ZS5hMTEyPTk4Mjc7ZS5hMTExPTk4MzA7ZS5hMTEwPTk4Mjk7ZS5hMTA5PTk4MjQ7ZS5hMTIwPTkzMTI7ZS5hMTIxPTkzMTM7ZS5hMTIyPTkzMTQ7ZS5hMTIzPTkzMTU7ZS5hMTI0PTkzMTY7ZS5hMTI1PTkzMTc7ZS5hMTI2PTkzMTg7ZS5hMTI3PTkzMTk7ZS5hMTI4PTkzMjA7ZS5hMTI5PTkzMjE7ZS5hMTMwPTEwMTAyO2UuYTEzMT0xMDEwMztlLmExMzI9MTAxMDQ7ZS5hMTMzPTEwMTA1O2UuYTEzND0xMDEwNjtlLmExMzU9MTAxMDc7ZS5hMTM2PTEwMTA4O2UuYTEzNz0xMDEwOTtlLmExMzg9MTAxMTA7ZS5hMTM5PTEwMTExO2UuYTE0MD0xMDExMjtlLmExNDE9MTAxMTM7ZS5hMTQyPTEwMTE0O2UuYTE0Mz0xMDExNTtlLmExNDQ9MTAxMTY7ZS5hMTQ1PTEwMTE3O2UuYTE0Nj0xMDExODtlLmExNDc9MTAxMTk7ZS5hMTQ4PTEwMTIwO2UuYTE0OT0xMDEyMTtlLmExNTA9MTAxMjI7ZS5hMTUxPTEwMTIzO2UuYTE1Mj0xMDEyNDtlLmExNTM9MTAxMjU7ZS5hMTU0PTEwMTI2O2UuYTE1NT0xMDEyNztlLmExNTY9MTAxMjg7ZS5hMTU3PTEwMTI5O2UuYTE1OD0xMDEzMDtlLmExNTk9MTAxMzE7ZS5hMTYwPTEwMTMyO2UuYTE2MT04NTk0O2UuYTE2Mz04NTk2O2UuYTE2ND04NTk3O2UuYTE5Nj0xMDEzNjtlLmExNjU9MTAxMzc7ZS5hMTkyPTEwMTM4O2UuYTE2Nj0xMDEzOTtlLmExNjc9MTAxNDA7ZS5hMTY4PTEwMTQxO2UuYTE2OT0xMDE0MjtlLmExNzA9MTAxNDM7ZS5hMTcxPTEwMTQ0O2UuYTE3Mj0xMDE0NTtlLmExNzM9MTAxNDY7ZS5hMTYyPTEwMTQ3O2UuYTE3ND0xMDE0ODtlLmExNzU9MTAxNDk7ZS5hMTc2PTEwMTUwO2UuYTE3Nz0xMDE1MTtlLmExNzg9MTAxNTI7ZS5hMTc5PTEwMTUzO2UuYTE5Mz0xMDE1NDtlLmExODA9MTAxNTU7ZS5hMTk5PTEwMTU2O2UuYTE4MT0xMDE1NztlLmEyMDA9MTAxNTg7ZS5hMTgyPTEwMTU5O2UuYTIwMT0xMDE2MTtlLmExODM9MTAxNjI7ZS5hMTg0PTEwMTYzO2UuYTE5Nz0xMDE2NDtlLmExODU9MTAxNjU7ZS5hMTk0PTEwMTY2O2UuYTE5OD0xMDE2NztlLmExODY9MTAxNjg7ZS5hMTk1PTEwMTY5O2UuYTE4Nz0xMDE3MDtlLmExODg9MTAxNzE7ZS5hMTg5PTEwMTcyO2UuYTE5MD0xMDE3MztlLmExOTE9MTAxNzQ7ZS5hODk9MTAwODg7ZS5hOTA9MTAwODk7ZS5hOTM9MTAwOTA7ZS5hOTQ9MTAwOTE7ZS5hOTE9MTAwOTI7ZS5hOTI9MTAwOTM7ZS5hMjA1PTEwMDk0O2UuYTg1PTEwMDk1O2UuYTIwNj0xMDA5NjtlLmE4Nj0xMDA5NztlLmE4Nz0xMDA5ODtlLmE4OD0xMDA5OTtlLmE5NT0xMDEwMDtlLmE5Nj0xMDEwMTtlWyIubm90ZGVmIl09MH0pKSxUcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gZ2V0VW5pY29kZUZvckdseXBoKGUsdCl7bGV0IGE9dFtlXTtpZih2b2lkIDAhPT1hKXJldHVybiBhO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI7aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pcj1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7cj1lLnN1YnN0cmluZygxKX1pZihyPT09ci50b1VwcGVyQ2FzZSgpKXthPXBhcnNlSW50KHIsMTYpO2lmKGE+PTApcmV0dXJuIGF9fXJldHVybi0xfWNvbnN0IE9yPVtbMCwxMjddLFsxMjgsMjU1XSxbMjU2LDM4M10sWzM4NCw1OTFdLFs1OTIsNjg3LDc0MjQsNzU1MSw3NTUyLDc2MTVdLFs2ODgsNzY3LDQyNzUyLDQyNzgzXSxbNzY4LDg3OSw3NjE2LDc2NzldLFs4ODAsMTAyM10sWzExMzkyLDExNTE5XSxbMTAyNCwxMjc5LDEyODAsMTMyNywxMTc0NCwxMTc3NSw0MjU2MCw0MjY1NV0sWzEzMjgsMTQyM10sWzE0MjQsMTUzNV0sWzQyMjQwLDQyNTU5XSxbMTUzNiwxNzkxLDE4NzIsMTkxOV0sWzE5ODQsMjA0N10sWzIzMDQsMjQzMV0sWzI0MzIsMjU1OV0sWzI1NjAsMjY4N10sWzI2ODgsMjgxNV0sWzI4MTYsMjk0M10sWzI5NDQsMzA3MV0sWzMwNzIsMzE5OV0sWzMyMDAsMzMyN10sWzMzMjgsMzQ1NV0sWzM1ODQsMzcxMV0sWzM3MTIsMzgzOV0sWzQyNTYsNDM1MSwxMTUyMCwxMTU2N10sWzY5MTIsNzAzOV0sWzQzNTIsNDYwN10sWzc2ODAsNzkzNSwxMTM2MCwxMTM5MSw0Mjc4NCw0MzAwN10sWzc5MzYsODE5MV0sWzgxOTIsODMwMywxMTc3NiwxMTkwM10sWzgzMDQsODM1MV0sWzgzNTIsODM5OV0sWzg0MDAsODQ0N10sWzg0NDgsODUyN10sWzg1MjgsODU5MV0sWzg1OTIsODcwMywxMDIyNCwxMDIzOSwxMDQ5NiwxMDYyMywxMTAwOCwxMTI2M10sWzg3MDQsODk1OSwxMDc1MiwxMTAwNywxMDE3NiwxMDIyMywxMDYyNCwxMDc1MV0sWzg5NjAsOTIxNV0sWzkyMTYsOTI3OV0sWzkyODAsOTMxMV0sWzkzMTIsOTQ3MV0sWzk0NzIsOTU5OV0sWzk2MDAsOTYzMV0sWzk2MzIsOTcyN10sWzk3MjgsOTk4M10sWzk5ODQsMTAxNzVdLFsxMjI4OCwxMjM1MV0sWzEyMzUyLDEyNDQ3XSxbMTI0NDgsMTI1NDMsMTI3ODQsMTI3OTldLFsxMjU0NCwxMjU5MSwxMjcwNCwxMjczNV0sWzEyNTkyLDEyNjg3XSxbNDMwNzIsNDMxMzVdLFsxMjgwMCwxMzA1NV0sWzEzMDU2LDEzMzExXSxbNDQwMzIsNTUyMTVdLFs1NTI5Niw1NzM0M10sWzY3ODQwLDY3ODcxXSxbMTk5NjgsNDA5NTksMTE5MDQsMTIwMzEsMTIwMzIsMTIyNTUsMTIyNzIsMTIyODcsMTMzMTIsMTk5MDMsMTMxMDcyLDE3Mzc5MSwxMjY4OCwxMjcwM10sWzU3MzQ0LDYzNzQzXSxbMTI3MzYsMTI3ODMsNjM3NDQsNjQyNTUsMTk0NTYwLDE5NTEwM10sWzY0MjU2LDY0MzM1XSxbNjQzMzYsNjUwMjNdLFs2NTA1Niw2NTA3MV0sWzY1MDQwLDY1MDU1XSxbNjUxMDQsNjUxMzVdLFs2NTEzNiw2NTI3OV0sWzY1MjgwLDY1NTE5XSxbNjU1MjAsNjU1MzVdLFszODQwLDQwOTVdLFsxNzkyLDE4NzFdLFsxOTIwLDE5ODNdLFszNDU2LDM1ODNdLFs0MDk2LDQyNTVdLFs0NjA4LDQ5OTEsNDk5Miw1MDIzLDExNjQ4LDExNzQzXSxbNTAyNCw1MTE5XSxbNTEyMCw1NzU5XSxbNTc2MCw1NzkxXSxbNTc5Miw1ODg3XSxbNjAxNiw2MTQzXSxbNjE0NCw2MzE5XSxbMTAyNDAsMTA0OTVdLFs0MDk2MCw0MjEyN10sWzU4ODgsNTkxOSw1OTIwLDU5NTEsNTk1Miw1OTgzLDU5ODQsNjAxNV0sWzY2MzA0LDY2MzUxXSxbNjYzNTIsNjYzODNdLFs2NjU2MCw2NjYzOV0sWzExODc4NCwxMTkwMzksMTE5MDQwLDExOTI5NSwxMTkyOTYsMTE5Mzc1XSxbMTE5ODA4LDEyMDgzMV0sWzEwNDQ0ODAsMTA0ODU3M10sWzY1MDI0LDY1MDM5LDkxNzc2MCw5MTc5OTldLFs5MTc1MDQsOTE3NjMxXSxbNjQwMCw2NDc5XSxbNjQ4MCw2NTI3XSxbNjUyOCw2NjIzXSxbNjY1Niw2Njg3XSxbMTEyNjQsMTEzNTldLFsxMTU2OCwxMTY0N10sWzE5OTA0LDE5OTY3XSxbNDMwMDgsNDMwNTVdLFs2NTUzNiw2NTY2Myw2NTY2NCw2NTc5MSw2NTc5Miw2NTg1NV0sWzY1ODU2LDY1OTM1XSxbNjY0MzIsNjY0NjNdLFs2NjQ2NCw2NjUyN10sWzY2NjQwLDY2Njg3XSxbNjY2ODgsNjY3MzVdLFs2NzU4NCw2NzY0N10sWzY4MDk2LDY4MTkxXSxbMTE5NTUyLDExOTY0N10sWzczNzI4LDc0NzUxLDc0NzUyLDc0ODc5XSxbMTE5NjQ4LDExOTY3OV0sWzcwNDAsNzEwM10sWzcxNjgsNzI0N10sWzcyNDgsNzI5NV0sWzQzMTM2LDQzMjMxXSxbNDMyNjQsNDMzMTFdLFs0MzMxMiw0MzM1OV0sWzQzNTIwLDQzNjE1XSxbNjU5MzYsNjU5OTldLFs2NmUzLDY2MDQ3XSxbNjYyMDgsNjYyNzEsNjYxNzYsNjYyMDcsNjc4NzIsNjc5MDNdLFsxMjcwMjQsMTI3MTM1LDEyNjk3NiwxMjcwMjNdXTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSx0PS0xKXtpZigtMSE9PXQpe2NvbnN0IGE9T3JbdF07Zm9yKGxldCByPTAsaT1hLmxlbmd0aDtyPGk7cis9MilpZihlPj1hW3JdJiZlPD1hW3IrMV0pcmV0dXJuIHR9Zm9yKGxldCB0PTAsYT1Pci5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1Pclt0XTtmb3IobGV0IHI9MCxpPWEubGVuZ3RoO3I8aTtyKz0yKWlmKGU+PWFbcl0mJmU8PWFbcisxXSlyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBNcj1uZXcgUmVnRXhwKCJeKFxccyl8KFxccHtNbn0pfChcXHB7Q2Z9KSQiLCJ1IiksRHI9bmV3IE1hcDtjb25zdCBScj0hMCxOcj0xLEVyPTIsUHI9NCxMcj0zMixqcj1bIi5ub3RkZWYiLCIubnVsbCIsIm5vbm1hcmtpbmdyZXR1cm4iLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsIm5vbmJyZWFraW5nc3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsIkxzbGFzaCIsImxzbGFzaCIsIlNjYXJvbiIsInNjYXJvbiIsIlpjYXJvbiIsInpjYXJvbiIsImJyb2tlbmJhciIsIkV0aCIsImV0aCIsIllhY3V0ZSIsInlhY3V0ZSIsIlRob3JuIiwidGhvcm4iLCJtaW51cyIsIm11bHRpcGx5Iiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJvbmVoYWxmIiwib25lcXVhcnRlciIsInRocmVlcXVhcnRlcnMiLCJmcmFuYyIsIkdicmV2ZSIsImdicmV2ZSIsIklkb3RhY2NlbnQiLCJTY2VkaWxsYSIsInNjZWRpbGxhIiwiQ2FjdXRlIiwiY2FjdXRlIiwiQ2Nhcm9uIiwiY2Nhcm9uIiwiZGNyb2F0Il07ZnVuY3Rpb24gcmVjb3ZlckdseXBoTmFtZShlLHQpe2lmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIGU7Y29uc3QgYT1nZXRVbmljb2RlRm9yR2x5cGgoZSx0KTtpZigtMSE9PWEpZm9yKGNvbnN0IGUgaW4gdClpZih0W2VdPT09YSlyZXR1cm4gZTtpbmZvKCJVbmFibGUgdG8gcmVjb3ZlciBhIHN0YW5kYXJkIGdseXBoIG5hbWUgZm9yOiAiK2UpO3JldHVybiBlfWZ1bmN0aW9uIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLHQsYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBpLG4scztjb25zdCBvPSEhKGUuZmxhZ3MmUHIpO2lmKGUuaXNJbnRlcm5hbEZvbnQpe3M9dDtmb3Iobj0wO248cy5sZW5ndGg7bisrKXtpPWEuaW5kZXhPZihzW25dKTtyW25dPWk+PTA/aTowfX1lbHNlIGlmKGUuYmFzZUVuY29kaW5nTmFtZSl7cz1nZXRFbmNvZGluZyhlLmJhc2VFbmNvZGluZ05hbWUpO2ZvcihuPTA7bjxzLmxlbmd0aDtuKyspe2k9YS5pbmRleE9mKHNbbl0pO3Jbbl09aT49MD9pOjB9fWVsc2UgaWYobylmb3IobiBpbiB0KXJbbl09dFtuXTtlbHNle3M9a3I7Zm9yKG49MDtuPHMubGVuZ3RoO24rKyl7aT1hLmluZGV4T2Yoc1tuXSk7cltuXT1pPj0wP2k6MH19Y29uc3QgYz1lLmRpZmZlcmVuY2VzO2xldCBsO2lmKGMpZm9yKG4gaW4gYyl7Y29uc3QgZT1jW25dO2k9YS5pbmRleE9mKGUpO2lmKC0xPT09aSl7bHx8KGw9RnIoKSk7Y29uc3QgdD1yZWNvdmVyR2x5cGhOYW1lKGUsbCk7dCE9PWUmJihpPWEuaW5kZXhPZih0KSl9cltuXT1pPj0wP2k6MH1yZXR1cm4gcn1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5yZXBsYWNlQWxsKC9ccy9nLCIiKX1jb25zdCBfcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGU9PntlWzgyMTFdPTY1MDc0O2VbODIxMl09NjUwNzM7ZVs4MjI5XT02NTA3MjtlWzgyMzBdPTY1MDQ5O2VbMTIyODldPTY1MDQxO2VbMTIyOTBdPTY1MDQyO2VbMTIyOTZdPTY1MDg3O2VbMTIyOTddPTY1MDg4O2VbMTIyOThdPTY1MDg1O2VbMTIyOTldPTY1MDg2O2VbMTIzMDBdPTY1MDg5O2VbMTIzMDFdPTY1MDkwO2VbMTIzMDJdPTY1MDkxO2VbMTIzMDNdPTY1MDkyO2VbMTIzMDRdPTY1MDgzO2VbMTIzMDVdPTY1MDg0O2VbMTIzMDhdPTY1MDgxO2VbMTIzMDldPTY1MDgyO2VbMTIzMTBdPTY1MDQ3O2VbMTIzMTFdPTY1MDQ4O2VbNjUxMDNdPTY1MDc2O2VbNjUyODFdPTY1MDQ1O2VbNjUyODhdPTY1MDc3O2VbNjUyODldPTY1MDc4O2VbNjUyOTJdPTY1MDQwO2VbNjUzMDZdPTY1MDQzO2VbNjUzMDddPTY1MDQ0O2VbNjUzMTFdPTY1MDQ2O2VbNjUzMzldPTY1MDk1O2VbNjUzNDFdPTY1MDk2O2VbNjUzNDNdPTY1MDc1O2VbNjUzNzFdPTY1MDc5O2VbNjUzNzNdPTY1MDgwfSkpO2NvbnN0IFVyPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sWHI9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0scXI9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl0sSHI9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl0sV3I9MzkxLHpyPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLCRyPVtudWxsLG51bGwsbnVsbCx7aWQ6ImFuZCIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJvciIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJub3QiLG1pbjoxLHN0YWNrRGVsdGE6MH0sbnVsbCxudWxsLG51bGwse2lkOiJhYnMiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJhZGQiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0rZVt0LTFdfX0se2lkOiJzdWIiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0tZVt0LTFdfX0se2lkOiJkaXYiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0vZVt0LTFdfX0sbnVsbCx7aWQ6Im5lZyIsbWluOjEsc3RhY2tEZWx0YTowLHN0YWNrRm4oZSx0KXtlW3QtMV09LWVbdC0xXX19LHtpZDoiZXEiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LG51bGwsbnVsbCx7aWQ6ImRyb3AiLG1pbjoxLHN0YWNrRGVsdGE6LTF9LG51bGwse2lkOiJwdXQiLG1pbjoyLHN0YWNrRGVsdGE6LTJ9LHtpZDoiZ2V0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiaWZlbHNlIixtaW46NCxzdGFja0RlbHRhOi0zfSx7aWQ6InJhbmRvbSIsbWluOjAsc3RhY2tEZWx0YToxfSx7aWQ6Im11bCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXSplW3QtMV19fSxudWxsLHtpZDoic3FydCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImR1cCIsbWluOjEsc3RhY2tEZWx0YToxfSx7aWQ6ImV4Y2giLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJpbmRleCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6InJvbGwiLG1pbjozLHN0YWNrRGVsdGE6LTJ9LG51bGwsbnVsbCxudWxsLHtpZDoiaGZsZXgiLG1pbjo3LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleCIsbWluOjEzLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGZsZXgxIixtaW46OSxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgxIixtaW46MTEscmVzZXRTdGFjazohMH1dO2NsYXNzIENGRlBhcnNlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5ieXRlcz1lLmdldEJ5dGVzKCk7dGhpcy5wcm9wZXJ0aWVzPXQ7dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhYX1wYXJzZSgpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzLHQ9bmV3IENGRjt0aGlzLmNmZj10O2NvbnN0IGE9dGhpcy5wYXJzZUhlYWRlcigpLHI9dGhpcy5wYXJzZUluZGV4KGEuZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChyLmVuZFBvcyksbj10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KG4uZW5kUG9zKSxvPXRoaXMucGFyc2VEaWN0KGkub2JqLmdldCgwKSksYz10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCxvLHQuc3RyaW5ncyk7dC5oZWFkZXI9YS5vYmo7dC5uYW1lcz10aGlzLnBhcnNlTmFtZUluZGV4KHIub2JqKTt0LnN0cmluZ3M9dGhpcy5wYXJzZVN0cmluZ0luZGV4KG4ub2JqKTt0LnRvcERpY3Q9Yzt0Lmdsb2JhbFN1YnJJbmRleD1zLm9iajt0aGlzLnBhcnNlUHJpdmF0ZURpY3QodC50b3BEaWN0KTt0LmlzQ0lERm9udD1jLmhhc05hbWUoIlJPUyIpO2NvbnN0IGw9Yy5nZXRCeU5hbWUoIkNoYXJTdHJpbmdzIiksaD10aGlzLnBhcnNlSW5kZXgobCkub2JqLHU9Yy5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTt1JiYoZS5mb250TWF0cml4PXUpO2NvbnN0IGQ9Yy5nZXRCeU5hbWUoIkZvbnRCQm94Iik7aWYoZCl7ZS5hc2NlbnQ9TWF0aC5tYXgoZFszXSxkWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oZFsxXSxkWzNdKTtlLmFzY2VudFNjYWxlZD0hMH1sZXQgZixnO2lmKHQuaXNDSURGb250KXtjb25zdCBlPXRoaXMucGFyc2VJbmRleChjLmdldEJ5TmFtZSgiRkRBcnJheSIpKS5vYmo7Zm9yKGxldCBhPTAscj1lLmNvdW50O2E8cjsrK2Epe2NvbnN0IHI9ZS5nZXQoYSksaT10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCx0aGlzLnBhcnNlRGljdChyKSx0LnN0cmluZ3MpO3RoaXMucGFyc2VQcml2YXRlRGljdChpKTt0LmZkQXJyYXkucHVzaChpKX1nPW51bGw7Zj10aGlzLnBhcnNlQ2hhcnNldHMoYy5nZXRCeU5hbWUoImNoYXJzZXQiKSxoLmNvdW50LHQuc3RyaW5ncywhMCk7dC5mZFNlbGVjdD10aGlzLnBhcnNlRkRTZWxlY3QoYy5nZXRCeU5hbWUoIkZEU2VsZWN0IiksaC5jb3VudCl9ZWxzZXtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCExKTtnPXRoaXMucGFyc2VFbmNvZGluZyhjLmdldEJ5TmFtZSgiRW5jb2RpbmciKSxlLHQuc3RyaW5ncyxmLmNoYXJzZXQpfXQuY2hhcnNldD1mO3QuZW5jb2Rpbmc9Zztjb25zdCBwPXRoaXMucGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6aCxsb2NhbFN1YnJJbmRleDpjLnByaXZhdGVEaWN0LnN1YnJzSW5kZXgsZ2xvYmFsU3VickluZGV4OnMub2JqLGZkU2VsZWN0OnQuZmRTZWxlY3QsZmRBcnJheTp0LmZkQXJyYXkscHJpdmF0ZURpY3Q6Yy5wcml2YXRlRGljdH0pO3QuY2hhclN0cmluZ3M9cC5jaGFyU3RyaW5nczt0LnNlYWNzPXAuc2VhY3M7dC53aWR0aHM9cC53aWR0aHM7cmV0dXJuIHR9cGFyc2VIZWFkZXIoKXtsZXQgZT10aGlzLmJ5dGVzO2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8dCYmMSE9PWVbYV07KSsrYTtpZihhPj10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBDRkYgaGVhZGVyIik7aWYoMCE9PWEpe2luZm8oImNmZiBkYXRhIGlzIHNoaWZ0ZWQiKTtlPWUuc3ViYXJyYXkoYSk7dGhpcy5ieXRlcz1lfWNvbnN0IHI9ZVswXSxpPWVbMV0sbj1lWzJdLHM9ZVszXTtyZXR1cm57b2JqOm5ldyBDRkZIZWFkZXIocixpLG4scyksZW5kUG9zOm59fXBhcnNlRGljdChlKXtsZXQgdD0wO2Z1bmN0aW9uIHBhcnNlT3BlcmFuZCgpe2xldCBhPWVbdCsrXTtpZigzMD09PWEpcmV0dXJuIGZ1bmN0aW9uIHBhcnNlRmxvYXRPcGVyYW5kKCl7bGV0IGE9IiI7Y29uc3Qgcj0xNSxpPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIi4iLCJFIiwiRS0iLG51bGwsIi0iXSxuPWUubGVuZ3RoO2Zvcig7dDxuOyl7Y29uc3Qgbj1lW3QrK10scz1uPj40LG89MTUmbjtpZihzPT09cilicmVhazthKz1pW3NdO2lmKG89PT1yKWJyZWFrO2ErPWlbb119cmV0dXJuIHBhcnNlRmxvYXQoYSl9KCk7aWYoMjg9PT1hKXthPXJlYWRJbnQxNihlLHQpO3QrPTI7cmV0dXJuIGF9aWYoMjk9PT1hKXthPWVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107YT1hPDw4fGVbdCsrXTtyZXR1cm4gYX1pZihhPj0zMiYmYTw9MjQ2KXJldHVybiBhLTEzOTtpZihhPj0yNDcmJmE8PTI1MClyZXR1cm4gMjU2KihhLTI0NykrZVt0KytdKzEwODtpZihhPj0yNTEmJmE8PTI1NClyZXR1cm4tMjU2KihhLTI1MSktZVt0KytdLTEwODt3YXJuKCdDRkZQYXJzZXJfcGFyc2VEaWN0OiAiJythKyciIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC4nKTtyZXR1cm4gTmFOfWxldCBhPVtdO2NvbnN0IHI9W107dD0wO2NvbnN0IGk9ZS5sZW5ndGg7Zm9yKDt0PGk7KXtsZXQgaT1lW3RdO2lmKGk8PTIxKXsxMj09PWkmJihpPWk8PDh8ZVsrK3RdKTtyLnB1c2goW2ksYV0pO2E9W107Kyt0fWVsc2UgYS5wdXNoKHBhcnNlT3BlcmFuZCgpKX1yZXR1cm4gcn1wYXJzZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4LGE9dGhpcy5ieXRlcyxyPWFbZSsrXTw8OHxhW2UrK10saT1bXTtsZXQgbixzLG89ZTtpZigwIT09cil7Y29uc3QgdD1hW2UrK10sYz1lKyhyKzEpKnQtMTtmb3Iobj0wLHM9cisxO248czsrK24pe2xldCByPTA7Zm9yKGxldCBpPTA7aTx0OysraSl7cjw8PTg7cis9YVtlKytdfWkucHVzaChjK3IpfW89aVtyXX1mb3Iobj0wLHM9aS5sZW5ndGgtMTtuPHM7KytuKXtjb25zdCBlPWlbbl0scj1pW24rMV07dC5hZGQoYS5zdWJhcnJheShlLHIpKX1yZXR1cm57b2JqOnQsZW5kUG9zOm99fXBhcnNlTmFtZUluZGV4KGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTAscj1lLmNvdW50O2E8cjsrK2Epe2NvbnN0IHI9ZS5nZXQoYSk7dC5wdXNoKGJ5dGVzVG9TdHJpbmcocikpfXJldHVybiB0fXBhcnNlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGU3RyaW5ncztmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKTt0LmFkZChieXRlc1RvU3RyaW5nKHIpKX1yZXR1cm4gdH1jcmVhdGVEaWN0KGUsdCxhKXtjb25zdCByPW5ldyBlKGEpO2Zvcihjb25zdFtlLGFdb2YgdClyLnNldEJ5S2V5KGUsYSk7cmV0dXJuIHJ9cGFyc2VDaGFyU3RyaW5nKGUsdCxhLHIpe2lmKCF0fHxlLmNhbGxEZXB0aD4xMClyZXR1cm4hMTtsZXQgaT1lLnN0YWNrU2l6ZTtjb25zdCBuPWUuc3RhY2s7bGV0IHM9dC5sZW5ndGg7Zm9yKGxldCBvPTA7bzxzOyl7Y29uc3QgYz10W28rK107bGV0IGw9bnVsbDtpZigxMj09PWMpe2NvbnN0IGU9dFtvKytdO2lmKDA9PT1lKXt0W28tMl09MTM5O3Rbby0xXT0yMjtpPTB9ZWxzZSBsPSRyW2VdfWVsc2UgaWYoMjg9PT1jKXtuW2ldPXJlYWRJbnQxNih0LG8pO28rPTI7aSsrfWVsc2UgaWYoMTQ9PT1jKXtpZihpPj00KXtpLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPW4uc2xpY2UoaSxpKzQpO3JldHVybiExfX1sPXpyW2NdfWVsc2UgaWYoYz49MzImJmM8PTI0Nil7bltpXT1jLTEzOTtpKyt9ZWxzZSBpZihjPj0yNDcmJmM8PTI1NCl7bltpXT1jPDI1MT8oYy0yNDc8PDgpK3Rbb10rMTA4Oi0oYy0yNTE8PDgpLXRbb10tMTA4O28rKztpKyt9ZWxzZSBpZigyNTU9PT1jKXtuW2ldPSh0W29dPDwyNHx0W28rMV08PDE2fHRbbysyXTw8OHx0W28rM10pLzY1NTM2O28rPTQ7aSsrfWVsc2UgaWYoMTk9PT1jfHwyMD09PWMpe2UuaGludHMrPWk+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtzLT0xO2NvbnRpbnVlfW8rPWUuaGludHMrNz4+MztpJT0yO2w9enJbY119ZWxzZXtpZigxMD09PWN8fDI5PT09Yyl7Y29uc3QgdD0xMD09PWM/YTpyO2lmKCF0KXtsPXpyW2NdO3dhcm4oIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitsLmlkKTtyZXR1cm4hMX1sZXQgcz0zMjc2ODt0LmNvdW50PDEyNDA/cz0xMDc6dC5jb3VudDwzMzkwMCYmKHM9MTEzMSk7Y29uc3Qgbz1uWy0taV0rcztpZihvPDB8fG8+PXQuY291bnR8fGlzTmFOKG8pKXtsPXpyW2NdO3dhcm4oIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2wuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPWk7ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChvKSxhLHIpKXJldHVybiExO2UuY2FsbERlcHRoLS07aT1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PWMpe2Uuc3RhY2tTaXplPWk7cmV0dXJuITB9aWYoMD09PWMmJm89PT10Lmxlbmd0aCl7dFtvLTFdPTE0O2w9enJbMTRdfWVsc2V7aWYoOT09PWMpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtzLT0xO2NvbnRpbnVlfWw9enJbY119fWlmKGwpe2lmKGwuc3RlbSl7ZS5oaW50cys9aT4+MTtpZigzPT09Y3x8MjM9PT1jKWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09Y3x8MTg9PT1jKSl7d2FybigiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtvLTFdPTE9PT1jPzM6MjN9fWlmKCJtaW4iaW4gbCYmIWUudW5kZWZTdGFjayYmaTxsLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2wuaWQrIjsgYWN0dWFsOiAiK2krIiwgZXhwZWN0ZWQ6ICIrbC5taW4pO2lmKDA9PT1pKXt0W28tMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmwuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7aS09bC5taW47aT49MiYmbC5zdGVtP2klPTI6aT4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7aT4wJiYoZS53aWR0aD1uW2ktMV0pfWlmKCJzdGFja0RlbHRhImluIGwpeyJzdGFja0ZuImluIGwmJmwuc3RhY2tGbihuLGkpO2krPWwuc3RhY2tEZWx0YX1lbHNlIGlmKGwuc3RhY2tDbGVhcmluZylpPTA7ZWxzZSBpZihsLnJlc2V0U3RhY2spe2k9MDtlLnVuZGVmU3RhY2s9ITF9ZWxzZSBpZihsLnVuZGVmU3RhY2spe2k9MDtlLnVuZGVmU3RhY2s9ITA7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITF9fX1zPHQubGVuZ3RoJiZ0LmZpbGwoMTQscyk7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmEsZmRTZWxlY3Q6cixmZEFycmF5OmkscHJpdmF0ZURpY3Q6bn0pe2NvbnN0IHM9W10sbz1bXSxjPWUuY291bnQ7Zm9yKGxldCBsPTA7bDxjO2wrKyl7Y29uc3QgYz1lLmdldChsKSxoPXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IHU9ITAsZD1udWxsLGY9bjtpZihyJiZpLmxlbmd0aCl7Y29uc3QgZT1yLmdldEZESW5kZXgobCk7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO3U9ITF9aWYoZT49aS5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO3U9ITF9aWYodSl7Zj1pW2VdLnByaXZhdGVEaWN0O2Q9Zi5zdWJyc0luZGV4fX1lbHNlIHQmJihkPXQpO3UmJih1PXRoaXMucGFyc2VDaGFyU3RyaW5nKGgsYyxkLGEpKTtpZihudWxsIT09aC53aWR0aCl7Y29uc3QgZT1mLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bbF09ZStoLndpZHRofWVsc2V7Y29uc3QgZT1mLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bbF09ZX1udWxsIT09aC5zZWFjJiYoc1tsXT1oLnNlYWMpO3V8fGUuc2V0KGwsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOnMsd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGE9dFswXSxyPXRbMV07aWYoMD09PWF8fHI+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGk9cithLG49dGhpcy5ieXRlcy5zdWJhcnJheShyLGkpLHM9dGhpcy5wYXJzZURpY3Qobiksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QscyxlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bzswPT09by5nZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIpJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKCFvLmdldEJ5TmFtZSgiU3VicnMiKSlyZXR1cm47Y29uc3QgYz1vLmdldEJ5TmFtZSgiU3VicnMiKSxsPXIrYztpZigwPT09Y3x8bD49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgaD10aGlzLnBhcnNlSW5kZXgobCk7by5zdWJyc0luZGV4PWgub2JqfXBhcnNlQ2hhcnNldHMoZSx0LGEscil7aWYoMD09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLEtyLklTT19BRE9CRSxVcik7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLEtyLkVYUEVSVCxYcik7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLEtyLkVYUEVSVF9TVUJTRVQscXIpO2NvbnN0IGk9dGhpcy5ieXRlcyxuPWUscz1pW2UrK10sbz1bcj8wOiIubm90ZGVmIl07bGV0IGMsbCxoO3QtPTE7c3dpdGNoKHMpe2Nhc2UgMDpmb3IoaD0wO2g8dDtoKyspe2M9aVtlKytdPDw4fGlbZSsrXTtvLnB1c2gocj9jOmEuZ2V0KGMpKX1icmVhaztjYXNlIDE6Zm9yKDtvLmxlbmd0aDw9dDspe2M9aVtlKytdPDw4fGlbZSsrXTtsPWlbZSsrXTtmb3IoaD0wO2g8PWw7aCsrKW8ucHVzaChyP2MrKzphLmdldChjKyspKX1icmVhaztjYXNlIDI6Zm9yKDtvLmxlbmd0aDw9dDspe2M9aVtlKytdPDw4fGlbZSsrXTtsPWlbZSsrXTw8OHxpW2UrK107Zm9yKGg9MDtoPD1sO2grKylvLnB1c2gocj9jKys6YS5nZXQoYysrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY2hhcnNldCBmb3JtYXQiKX1jb25zdCB1PWUsZD1pLnN1YmFycmF5KG4sdSk7cmV0dXJuIG5ldyBDRkZDaGFyc2V0KCExLHMsbyxkKX1wYXJzZUVuY29kaW5nKGUsdCxhLHIpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXRoaXMuYnl0ZXM7bGV0IHMsbyxjLGw9ITEsaD1udWxsO2lmKDA9PT1lfHwxPT09ZSl7bD0hMDtzPWU7Y29uc3QgdD1lP3dyOmtyO2ZvcihvPTAsYz1yLmxlbmd0aDtvPGM7bysrKXtjb25zdCBlPXQuaW5kZXhPZihyW29dKTstMSE9PWUmJihpW2VdPW8pfX1lbHNle2NvbnN0IHQ9ZTtzPW5bZSsrXTtzd2l0Y2goMTI3JnMpe2Nhc2UgMDpjb25zdCB0PW5bZSsrXTtmb3Iobz0xO288PXQ7bysrKWlbbltlKytdXT1vO2JyZWFrO2Nhc2UgMTpjb25zdCBhPW5bZSsrXTtsZXQgcj0xO2ZvcihvPTA7bzxhO28rKyl7Y29uc3QgdD1uW2UrK10sYT1uW2UrK107Zm9yKGxldCBlPXQ7ZTw9dCthO2UrKylpW2VdPXIrK31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICR7c30gaW4gQ0ZGYCl9Y29uc3QgYz1lO2lmKDEyOCZzKXtuW3RdJj0xMjc7IWZ1bmN0aW9uIHJlYWRTdXBwbGVtZW50KCl7Y29uc3QgdD1uW2UrK107Zm9yKG89MDtvPHQ7bysrKXtjb25zdCB0PW5bZSsrXSxzPShuW2UrK108PDgpKygyNTUmbltlKytdKTtpW3RdPXIuaW5kZXhPZihhLmdldChzKSl9fSgpfWg9bi5zdWJhcnJheSh0LGMpfXMmPTEyNztyZXR1cm4gbmV3IENGRkVuY29kaW5nKGwscyxpLGgpfXBhcnNlRkRTZWxlY3QoZSx0KXtjb25zdCBhPXRoaXMuYnl0ZXMscj1hW2UrK10saT1bXTtsZXQgbjtzd2l0Y2gocil7Y2FzZSAwOmZvcihuPTA7bjx0Oysrbil7Y29uc3QgdD1hW2UrK107aS5wdXNoKHQpfWJyZWFrO2Nhc2UgMzpjb25zdCBzPWFbZSsrXTw8OHxhW2UrK107Zm9yKG49MDtuPHM7KytuKXtsZXQgdD1hW2UrK108PDh8YVtlKytdO2lmKDA9PT1uJiYwIT09dCl7d2FybigicGFyc2VGRFNlbGVjdDogVGhlIGZpcnN0IHJhbmdlIG11c3QgaGF2ZSBhIGZpcnN0IEdJRCBvZiAwIC0tIHRyeWluZyB0byByZWNvdmVyLiIpO3Q9MH1jb25zdCByPWFbZSsrXSxzPWFbZV08PDh8YVtlKzFdO2ZvcihsZXQgZT10O2U8czsrK2UpaS5wdXNoKHIpfWUrPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke3J9Ii5gKX1pZihpLmxlbmd0aCE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IENGRkZEU2VsZWN0KHIsaSl9fWNsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19Y2xhc3MgQ0ZGSGVhZGVye2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMubWFqb3I9ZTt0aGlzLm1pbm9yPXQ7dGhpcy5oZHJTaXplPWE7dGhpcy5vZmZTaXplPXJ9fWNsYXNzIENGRlN0cmluZ3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmluZ3M9W119Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/SHJbZV06ZS1Xcjw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1Xcl06SHJbMF19Z2V0U0lEKGUpe2xldCB0PUhyLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrV3I6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtjb25zdHJ1Y3Rvcigpe3RoaXMub2JqZWN0cz1bXTt0aGlzLmxlbmd0aD0wfWFkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgYSBvZiB0KWlmKGlzTmFOKGEpKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBhPXRoaXMudHlwZXNbZV07Im51bSIhPT1hJiYic2lkIiE9PWEmJiJvZmZzZXQiIT09YXx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoYVswXSk/KGFbMF1bMF08PDgpK2FbMF1bMV06YVswXTt0LmtleVRvTmFtZU1hcFtlXT1hWzFdO3QubmFtZVRvS2V5TWFwW2FbMV1dPWU7dC50eXBlc1tlXT1hWzJdO3QuZGVmYXVsdHNbZV09YVszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShhWzBdKT9hWzBdOlthWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IEdyPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoR3IpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IFZyPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKFZyKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGUHJpdmF0ZURpY3QudGFibGVzLGUpO3RoaXMuc3VicnNJbmRleD1udWxsfX1jb25zdCBLcj17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7Y29uc3RydWN0b3IoKXt0aGlzLm9mZnNldHM9T2JqZWN0LmNyZWF0ZShudWxsKX1pc1RyYWNraW5nKGUpe3JldHVybiBlIGluIHRoaXMub2Zmc2V0c310cmFjayhlLHQpe2lmKGUgaW4gdGhpcy5vZmZzZXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7dGhpcy5vZmZzZXRzW2VdPXR9b2Zmc2V0KGUpe2Zvcihjb25zdCB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9c2V0RW50cnlMb2NhdGlvbihlLHQsYSl7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IHI9YS5kYXRhLGk9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUraSxuPWErMSxzPWErMixvPWErMyxjPWErNDtpZigyOSE9PXJbYV18fDAhPT1yW25dfHwwIT09cltzXXx8MCE9PXJbb118fDAhPT1yW2NdKXRocm93IG5ldyBGb3JtYXRFcnJvcigid3JpdGluZyB0byBhbiBvZmZzZXQgdGhhdCBpcyBub3QgZW1wdHkiKTtjb25zdCBsPXRbZV07clthXT0yOTtyW25dPWw+PjI0JjI1NTtyW3NdPWw+PjE2JjI1NTtyW29dPWw+PjgmMjU1O3JbY109MjU1Jmx9fX1jbGFzcyBDRkZDb21waWxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9e2RhdGE6W10sbGVuZ3RoOjAsYWRkKGUpe3RyeXt0aGlzLmRhdGEucHVzaCguLi5lKX1jYXRjaHt0aGlzLmRhdGE9dGhpcy5kYXRhLmNvbmNhdChlKX10aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RofX0sYT10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKGEpO2NvbnN0IHI9dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3QuYWRkKHIpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IGEgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO2EuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLGEuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTthLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IGk9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO2k/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBuPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChuLm91dHB1dCk7Y29uc3Qgcz1uLnRyYWNrZXJzWzBdLG89dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKG8pO2NvbnN0IGM9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3QuYWRkKGMpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZClzLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3QgYT10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtzLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3QuYWRkKGEpfWNvbnN0IGw9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO3Muc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KTt0LmFkZChsKTtjb25zdCBoPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO3Muc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5hZGQoaCk7aWYoZS5pc0NJREZvbnQpe3Muc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3QgYT10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChhKTtuPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCk7cy5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpO3QuYWRkKG4ub3V0cHV0KTtjb25zdCByPW4udHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxyLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbc10sdCk7dC5hZGQoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBhPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoYSl7Y29uc3Qgcj1wYXJzZUZsb2F0KCIxZSIrKChhWzJdPythWzJdOjApK2FbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKnIpL3IpLnRvU3RyaW5nKCl9bGV0IHIsaSxuPSIiO2ZvcihyPTAsaT10Lmxlbmd0aDtyPGk7KytyKXtjb25zdCBlPXRbcl07bis9ImUiPT09ZT8iLSI9PT10Wysrcl0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfW4rPTEmbi5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgcz1bMzBdO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cis9MilzLnB1c2gocGFyc2VJbnQobi5zdWJzdHJpbmcocixyKzIpLDE2KSk7cmV0dXJuIHN9ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGEubGVuZ3RoLDEyNyk7bGV0IHI9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWFbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7clt0XT1lfXI9ci5qb2luKCIiKTsiIj09PXImJihyPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhyKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsYSl7Y29uc3Qgcj1bXTtsZXQgaT1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IG4gb2YgZSl7aWYoYSl7bi5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7bi5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO24ucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO24ucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO24ucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixzPXRoaXMuY29tcGlsZURpY3QobixlKTtyLnB1c2goZSk7aS5hZGQocyk7ZS5vZmZzZXQodCl9aT10aGlzLmNvbXBpbGVJbmRleChpLHIpO3JldHVybnt0cmFja2VyczpyLG91dHB1dDppfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxhKXtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTsrK3Ipe2NvbnN0IGk9ZVtyXSxuPWkucHJpdmF0ZURpY3Q7aWYoIW58fCFpLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QobixzKTtsZXQgYz1hLmxlbmd0aDtzLm9mZnNldChjKTtvLmxlbmd0aHx8KGM9MCk7dFtyXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsY10sYSk7YS5hZGQobyk7aWYobi5zdWJyc0luZGV4JiZuLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgobi5zdWJyc0luZGV4KTtzLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbby5sZW5ndGhdLGEpO2EuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBhPVtdO2Zvcihjb25zdCByIG9mIGUub3JkZXIpe2lmKCEociBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IGk9ZS52YWx1ZXNbcl0sbj1lLnR5cGVzW3JdO0FycmF5LmlzQXJyYXkobil8fChuPVtuXSk7QXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKTtpZigwIT09aS5sZW5ndGgpe2ZvcihsZXQgcz0wLG89bi5sZW5ndGg7czxvOysrcyl7Y29uc3Qgbz1uW3NdLGM9aVtzXTtzd2l0Y2gobyl7Y2FzZSJudW0iOmNhc2Uic2lkIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoYykpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBuPWUua2V5VG9OYW1lTWFwW3JdO3QuaXNUcmFja2luZyhuKXx8dC50cmFjayhuLGEubGVuZ3RoKTthLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGMpKTtmb3IobGV0IGU9MSx0PWkubGVuZ3RoO2U8dDsrK2UpYS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGlbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBkYXRhIHR5cGUgb2YgJHtvfWApfX1hLnB1c2goLi4uZS5vcGNvZGVzW3JdKX19cmV0dXJuIGF9Y29tcGlsZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBhIG9mIGUpdC5hZGQoc3RyaW5nVG9CeXRlcyhhKSk7cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyU3RyaW5ncyhlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IobGV0IGE9MDthPGUuY291bnQ7YSsrKXtjb25zdCByPWUuZ2V0KGEpOzAhPT1yLmxlbmd0aD90LmFkZChyKTp0LmFkZChuZXcgVWludDhBcnJheShbMTM5LDE0XSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhcnNldChlLHQsYSxyKXtsZXQgaTtjb25zdCBuPXQtMTtpZihyKXtjb25zdCBlPW4tMTtpPW5ldyBVaW50OEFycmF5KFsyLDAsMSxlPj44JjI1NSwyNTUmZV0pfWVsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqbik7aVswXT0wO2xldCB0PTA7Y29uc3Qgcj1lLmNoYXJzZXQubGVuZ3RoO2xldCBzPSExO2ZvcihsZXQgbj0xO248aS5sZW5ndGg7bis9Mil7bGV0IG89MDtpZih0PHIpe2NvbnN0IHI9ZS5jaGFyc2V0W3QrK107bz1hLmdldFNJRChyKTtpZigtMT09PW8pe289MDtpZighcyl7cz0hMDt3YXJuKGBDb3VsZG4ndCBmaW5kICR7cn0gaW4gQ0ZGIHN0cmluZ3NgKX19fWlbbl09bz4+OCYyNTU7aVtuKzFdPTI1NSZvfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBpPTA7bGV0IG49ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxpPj44JjI1NSwyNTUmaSxuXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PW4pe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtuPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlKX1jb21waWxlSW5kZXgoZSx0PVtdKXtjb25zdCBhPWUub2JqZWN0cyxyPWEubGVuZ3RoO2lmKDA9PT1yKXJldHVyblswLDBdO2NvbnN0IGk9W3I+PjgmMjU1LDI1NSZyXTtsZXQgbixzLG89MTtmb3Iobj0wO248cjsrK24pbys9YVtuXS5sZW5ndGg7cz1vPDI1Nj8xOm88NjU1MzY/MjpvPDE2Nzc3MjE2PzM6NDtpLnB1c2gocyk7bGV0IGM9MTtmb3Iobj0wO248cisxO24rKyl7MT09PXM/aS5wdXNoKDI1NSZjKToyPT09cz9pLnB1c2goYz4+OCYyNTUsMjU1JmMpOjM9PT1zP2kucHVzaChjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpOmkucHVzaChjPj4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyk7YVtuXSYmKGMrPWFbbl0ubGVuZ3RoKX1mb3Iobj0wO248cjtuKyspe3Rbbl0mJnRbbl0ub2Zmc2V0KGkubGVuZ3RoKTtpLnB1c2goLi4uYVtuXSl9cmV0dXJuIGl9fWNvbnN0IEpyPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZE1ULUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbFVuaWNvZGVNUz0iSGVsdmV0aWNhIjtlWyJBcmlhbFVuaWNvZGVNUy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbFVuaWNvZGVNUy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxVbmljb2RlTVMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXc9IkNvdXJpZXIiO2VbIkNvdXJpZXJOZXctQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkNvdXJpZXJOZXctQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyTmV3LUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkSXRhbGljTVQiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ld1BTLUJvbGRNVCJdPSJDb3VyaWVyLUJvbGQiO2VbIkNvdXJpZXJOZXdQUy1JdGFsaWNNVCJdPSJDb3VyaWVyLU9ibGlxdWUiO2UuQ291cmllck5ld1BTTVQ9IkNvdXJpZXIiO2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSGVsdmV0aWNhLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSGVsdmV0aWNhTFRTdGQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiU3ltYm9sLUJvbGQiXT0iU3ltYm9sIjtlWyJTeW1ib2wtQm9sZEl0YWxpYyJdPSJTeW1ib2wiO2VbIlN5bWJvbC1JdGFsaWMiXT0iU3ltYm9sIjtlLlRpbWVzTmV3Um9tYW49IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW4tSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZS5UaW1lc05ld1JvbWFuUFM9IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZEl0YWxpY01UIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkTVQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWNNVCJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTTVQ9IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTTVQtSXRhbGljIl09IlRpbWVzLUl0YWxpYyJ9KSksWXI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkhlbHZldGljYS1Cb2xkIl09IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIlRpbWVzLVJvbWFuIl09IkZveGl0U2VyaWYucGZiIjtlWyJUaW1lcy1Cb2xkIl09IkZveGl0U2VyaWZCb2xkLnBmYiI7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJGb3hpdFNlcmlmQm9sZEl0YWxpYy5wZmIiO2VbIlRpbWVzLUl0YWxpYyJdPSJGb3hpdFNlcmlmSXRhbGljLnBmYiI7ZS5TeW1ib2w9IkZveGl0U3ltYm9sLnBmYiI7ZS5aYXBmRGluZ2JhdHM9IkZveGl0RGluZ2JhdHMucGZiIjtlWyJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIl09IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkIl09IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiJ9KSksWnI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNhbGlicmk9IkhlbHZldGljYSI7ZVsiQ2FsaWJyaS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDYWxpYnJpLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5DZW50dXJ5R290aGljPSJIZWx2ZXRpY2EiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2VudHVyeUdvdGhpYy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ29taWNTYW5zTVM9IkNvbWljIFNhbnMgTVMiO2VbIkNvbWljU2Fuc01TLUJvbGQiXT0iQ29taWMgU2FucyBNUy1Cb2xkIjtlWyJDb21pY1NhbnNNUy1Cb2xkSXRhbGljIl09IkNvbWljIFNhbnMgTVMtQm9sZEl0YWxpYyI7ZVsiQ29taWNTYW5zTVMtSXRhbGljIl09IkNvbWljIFNhbnMgTVMtSXRhbGljIjtlLkdpbGxTYW5zTVQ9IkhlbHZldGljYSI7ZVsiR2lsbFNhbnNNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJHaWxsU2Fuc01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJHaWxsU2Fuc01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5JbXBhY3Q9IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuTHVjaWRhQ29uc29sZT0iQ291cmllciI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIjtlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIjtlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCI7ZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyI7ZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyI7ZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiO2VbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiO2VbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyI7ZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCI7ZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiO2VbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyI7ZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCI7ZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiO2UuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIjtlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSJ9KSksUXI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5MaXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pKSxlaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuRGluZ2JhdHM9ITA7ZS5TeW1ib2w9ITA7ZS5aYXBmRGluZ2JhdHM9ITA7ZS5XaW5nZGluZ3M9ITA7ZVsiV2luZ2RpbmdzLUJvbGQiXT0hMDtlWyJXaW5nZGluZ3MtUmVndWxhciJdPSEwfSkpLHRpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsyXT0xMDtlWzNdPTMyO2VbNF09MzM7ZVs1XT0zNDtlWzZdPTM1O2VbN109MzY7ZVs4XT0zNztlWzldPTM4O2VbMTBdPTM5O2VbMTFdPTQwO2VbMTJdPTQxO2VbMTNdPTQyO2VbMTRdPTQzO2VbMTVdPTQ0O2VbMTZdPTQ1O2VbMTddPTQ2O2VbMThdPTQ3O2VbMTldPTQ4O2VbMjBdPTQ5O2VbMjFdPTUwO2VbMjJdPTUxO2VbMjNdPTUyO2VbMjRdPTUzO2VbMjVdPTU0O2VbMjZdPTU1O2VbMjddPTU2O2VbMjhdPTU3O2VbMjldPTU4O2VbMzBdPTg5NDtlWzMxXT02MDtlWzMyXT02MTtlWzMzXT02MjtlWzM0XT02MztlWzM1XT02NDtlWzM2XT02NTtlWzM3XT02NjtlWzM4XT02NztlWzM5XT02ODtlWzQwXT02OTtlWzQxXT03MDtlWzQyXT03MTtlWzQzXT03MjtlWzQ0XT03MztlWzQ1XT03NDtlWzQ2XT03NTtlWzQ3XT03NjtlWzQ4XT03NztlWzQ5XT03ODtlWzUwXT03OTtlWzUxXT04MDtlWzUyXT04MTtlWzUzXT04MjtlWzU0XT04MztlWzU1XT04NDtlWzU2XT04NTtlWzU3XT04NjtlWzU4XT04NztlWzU5XT04ODtlWzYwXT04OTtlWzYxXT05MDtlWzYyXT05MTtlWzYzXT05MjtlWzY0XT05MztlWzY1XT05NDtlWzY2XT05NTtlWzY3XT05NjtlWzY4XT05NztlWzY5XT05ODtlWzcwXT05OTtlWzcxXT0xMDA7ZVs3Ml09MTAxO2VbNzNdPTEwMjtlWzc0XT0xMDM7ZVs3NV09MTA0O2VbNzZdPTEwNTtlWzc3XT0xMDY7ZVs3OF09MTA3O2VbNzldPTEwODtlWzgwXT0xMDk7ZVs4MV09MTEwO2VbODJdPTExMTtlWzgzXT0xMTI7ZVs4NF09MTEzO2VbODVdPTExNDtlWzg2XT0xMTU7ZVs4N109MTE2O2VbODhdPTExNztlWzg5XT0xMTg7ZVs5MF09MTE5O2VbOTFdPTEyMDtlWzkyXT0xMjE7ZVs5M109MTIyO2VbOTRdPTEyMztlWzk1XT0xMjQ7ZVs5Nl09MTI1O2VbOTddPTEyNjtlWzk4XT0xOTY7ZVs5OV09MTk3O2VbMTAwXT0xOTk7ZVsxMDFdPTIwMTtlWzEwMl09MjA5O2VbMTAzXT0yMTQ7ZVsxMDRdPTIyMDtlWzEwNV09MjI1O2VbMTA2XT0yMjQ7ZVsxMDddPTIyNjtlWzEwOF09MjI4O2VbMTA5XT0yMjc7ZVsxMTBdPTIyOTtlWzExMV09MjMxO2VbMTEyXT0yMzM7ZVsxMTNdPTIzMjtlWzExNF09MjM0O2VbMTE1XT0yMzU7ZVsxMTZdPTIzNztlWzExN109MjM2O2VbMTE4XT0yMzg7ZVsxMTldPTIzOTtlWzEyMF09MjQxO2VbMTIxXT0yNDM7ZVsxMjJdPTI0MjtlWzEyM109MjQ0O2VbMTI0XT0yNDY7ZVsxMjVdPTI0NTtlWzEyNl09MjUwO2VbMTI3XT0yNDk7ZVsxMjhdPTI1MTtlWzEyOV09MjUyO2VbMTMwXT04MjI0O2VbMTMxXT0xNzY7ZVsxMzJdPTE2MjtlWzEzM109MTYzO2VbMTM0XT0xNjc7ZVsxMzVdPTgyMjY7ZVsxMzZdPTE4MjtlWzEzN109MjIzO2VbMTM4XT0xNzQ7ZVsxMzldPTE2OTtlWzE0MF09ODQ4MjtlWzE0MV09MTgwO2VbMTQyXT0xNjg7ZVsxNDNdPTg4MDA7ZVsxNDRdPTE5ODtlWzE0NV09MjE2O2VbMTQ2XT04NzM0O2VbMTQ3XT0xNzc7ZVsxNDhdPTg4MDQ7ZVsxNDldPTg4MDU7ZVsxNTBdPTE2NTtlWzE1MV09MTgxO2VbMTUyXT04NzA2O2VbMTUzXT04NzIxO2VbMTU0XT04NzE5O2VbMTU2XT04NzQ3O2VbMTU3XT0xNzA7ZVsxNThdPTE4NjtlWzE1OV09ODQ4NjtlWzE2MF09MjMwO2VbMTYxXT0yNDg7ZVsxNjJdPTE5MTtlWzE2M109MTYxO2VbMTY0XT0xNzI7ZVsxNjVdPTg3MzA7ZVsxNjZdPTQwMjtlWzE2N109ODc3NjtlWzE2OF09ODcxMDtlWzE2OV09MTcxO2VbMTcwXT0xODc7ZVsxNzFdPTgyMzA7ZVsxNzldPTgyMjA7ZVsxODBdPTgyMjE7ZVsxODFdPTgyMTY7ZVsxODJdPTgyMTc7ZVsyMDBdPTE5MztlWzIwM109MjA1O2VbMjA3XT0yMTE7ZVsyMTBdPTIxODtlWzIyM109NzExO2VbMjI0XT0zMjE7ZVsyMjVdPTMyMjtlWzIyNl09MzUyO2VbMjI3XT0zNTM7ZVsyMjhdPTM4MTtlWzIyOV09MzgyO2VbMjMzXT0yMjE7ZVsyMzRdPTI1MztlWzI1Ml09MjYzO2VbMjUzXT0yNjg7ZVsyNTRdPTI2OTtlWzI1OF09MjU4O2VbMjYwXT0yNjA7ZVsyNjFdPTI2MTtlWzI2NV09MjgwO2VbMjY2XT0yODE7ZVsyNjddPTI4MjtlWzI2OF09MjgzO2VbMjY5XT0zMTM7ZVsyNzVdPTMyMztlWzI3Nl09MzI0O2VbMjc4XT0zMjg7ZVsyODNdPTM0NDtlWzI4NF09MzQ1O2VbMjg1XT0zNDY7ZVsyODZdPTM0NztlWzI5Ml09MzY3O2VbMjk1XT0zNzc7ZVsyOTZdPTM3ODtlWzI5OF09MzgwO2VbMzA1XT05NjM7ZVszMDZdPTk2NDtlWzMwN109OTY2O2VbMzA4XT04MjE1O2VbMzA5XT04MjUyO2VbMzEwXT04MzE5O2VbMzExXT04MzU5O2VbMzEyXT04NTkyO2VbMzEzXT04NTkzO2VbMzM3XT05NTUyO2VbNDkzXT0xMDM5O2VbNDk0XT0xMDQwO2VbNTcwXT0xMDQwO2VbNTcxXT0xMDQxO2VbNTcyXT0xMDQyO2VbNTczXT0xMDQzO2VbNTc0XT0xMDQ0O2VbNTc1XT0xMDQ1O2VbNTc2XT0xMDQ2O2VbNTc3XT0xMDQ3O2VbNTc4XT0xMDQ4O2VbNTc5XT0xMDQ5O2VbNTgwXT0xMDUwO2VbNTgxXT0xMDUxO2VbNTgyXT0xMDUyO2VbNTgzXT0xMDUzO2VbNTg0XT0xMDU0O2VbNTg1XT0xMDU1O2VbNTg2XT0xMDU2O2VbNTg3XT0xMDU3O2VbNTg4XT0xMDU4O2VbNTg5XT0xMDU5O2VbNTkwXT0xMDYwO2VbNTkxXT0xMDYxO2VbNTkyXT0xMDYyO2VbNTkzXT0xMDYzO2VbNTk0XT0xMDY0O2VbNTk1XT0xMDY1O2VbNTk2XT0xMDY2O2VbNTk3XT0xMDY3O2VbNTk4XT0xMDY4O2VbNTk5XT0xMDY5O2VbNjAwXT0xMDcwO2VbNjcyXT0xNDg4O2VbNjczXT0xNDg5O2VbNjc0XT0xNDkwO2VbNjc1XT0xNDkxO2VbNjc2XT0xNDkyO2VbNjc3XT0xNDkzO2VbNjc4XT0xNDk0O2VbNjc5XT0xNDk1O2VbNjgwXT0xNDk2O2VbNjgxXT0xNDk3O2VbNjgyXT0xNDk4O2VbNjgzXT0xNDk5O2VbNjg0XT0xNTAwO2VbNjg1XT0xNTAxO2VbNjg2XT0xNTAyO2VbNjg3XT0xNTAzO2VbNjg4XT0xNTA0O2VbNjg5XT0xNTA1O2VbNjkwXT0xNTA2O2VbNjkxXT0xNTA3O2VbNjkyXT0xNTA4O2VbNjkzXT0xNTA5O2VbNjk0XT0xNTEwO2VbNjk1XT0xNTExO2VbNjk2XT0xNTEyO2VbNjk3XT0xNTEzO2VbNjk4XT0xNTE0O2VbNzA1XT0xNTI0O2VbNzA2XT04MzYyO2VbNzEwXT02NDI4ODtlWzcxMV09NjQyOTg7ZVs3NTldPTE2MTc7ZVs3NjFdPTE3NzY7ZVs3NjNdPTE3Nzg7ZVs3NzVdPTE2NTI7ZVs3NzddPTE3NjQ7ZVs3NzhdPTE3ODA7ZVs3NzldPTE3ODE7ZVs3ODBdPTE3ODI7ZVs3ODJdPTc3MTtlWzc4M109NjQ3MjY7ZVs3ODZdPTgzNjM7ZVs3ODhdPTg1MzI7ZVs3OTBdPTc2ODtlWzc5MV09NzY5O2VbNzkyXT03Njg7ZVs3OTVdPTgwMztlWzc5N109NjQzMzY7ZVs3OThdPTY0MzM3O2VbNzk5XT02NDM0MjtlWzgwMF09NjQzNDM7ZVs4MDFdPTY0MzQ0O2VbODAyXT02NDM0NTtlWzgwM109NjQzNjI7ZVs4MDRdPTY0MzYzO2VbODA1XT02NDM2NDtlWzI0MjRdPTc4MjE7ZVsyNDI1XT03ODIyO2VbMjQyNl09NzgyMztlWzI0MjddPTc4MjQ7ZVsyNDI4XT03ODI1O2VbMjQyOV09NzgyNjtlWzI0MzBdPTc4Mjc7ZVsyNDMzXT03NjgyO2VbMjY3OF09ODA0NTtlWzI2NzldPTgwNDY7ZVsyODMwXT0xNTUyO2VbMjgzOF09Njg2O2VbMjg0MF09NzUxO2VbMjg0Ml09NzUzO2VbMjg0M109NzU0O2VbMjg0NF09NzU1O2VbMjg0Nl09NzU3O2VbMjg1Nl09NzY3O2VbMjg1N109ODQ4O2VbMjg1OF09ODQ5O2VbMjg2Ml09ODUzO2VbMjg2M109ODU0O2VbMjg2NF09ODU1O2VbMjg2NV09ODYxO2VbMjg2Nl09ODYyO2VbMjkwNl09NzQ2MDtlWzI5MDhdPTc0NjI7ZVsyOTA5XT03NDYzO2VbMjkxMF09NzQ2NDtlWzI5MTJdPTc0NjY7ZVsyOTEzXT03NDY3O2VbMjkxNF09NzQ2ODtlWzI5MTZdPTc0NzA7ZVsyOTE3XT03NDcxO2VbMjkxOF09NzQ3MjtlWzI5MjBdPTc0NzQ7ZVsyOTIxXT03NDc1O2VbMjkyMl09NzQ3NjtlWzI5MjRdPTc0Nzg7ZVsyOTI1XT03NDc5O2VbMjkyNl09NzQ4MDtlWzI5MjhdPTc0ODI7ZVsyOTI5XT03NDgzO2VbMjkzMF09NzQ4NDtlWzI5MzJdPTc0ODY7ZVsyOTMzXT03NDg3O2VbMjkzNF09NzQ4ODtlWzI5MzZdPTc0OTA7ZVsyOTM3XT03NDkxO2VbMjkzOF09NzQ5MjtlWzI5NDBdPTc0OTQ7ZVsyOTQxXT03NDk1O2VbMjk0Ml09NzQ5NjtlWzI5NDRdPTc0OTg7ZVsyOTQ2XT03NTAwO2VbMjk0OF09NzUwMjtlWzI5NTBdPTc1MDQ7ZVsyOTUxXT03NTA1O2VbMjk1Ml09NzUwNjtlWzI5NTRdPTc1MDg7ZVsyOTU1XT03NTA5O2VbMjk1Nl09NzUxMDtlWzI5NThdPTc1MTI7ZVsyOTU5XT03NTEzO2VbMjk2MF09NzUxNDtlWzI5NjJdPTc1MTY7ZVsyOTYzXT03NTE3O2VbMjk2NF09NzUxODtlWzI5NjZdPTc1MjA7ZVsyOTY3XT03NTIxO2VbMjk2OF09NzUyMjtlWzI5NzBdPTc1MjQ7ZVsyOTcxXT03NTI1O2VbMjk3Ml09NzUyNjtlWzI5NzRdPTc1Mjg7ZVsyOTc1XT03NTI5O2VbMjk3Nl09NzUzMDtlWzI5NzhdPTE1Mzc7ZVsyOTc5XT0xNTM4O2VbMjk4MF09MTUzOTtlWzI5ODJdPTE1NDk7ZVsyOTgzXT0xNTUxO2VbMjk4NF09MTU1MjtlWzI5ODZdPTE1NTQ7ZVsyOTg3XT0xNTU1O2VbMjk4OF09MTU1NjtlWzI5OTBdPTE2MjM7ZVsyOTkxXT0xNjI0O2VbMjk5NV09MTc3NTtlWzI5OTldPTE3OTE7ZVszMDAyXT02NDI5MDtlWzMwMDNdPTY0MjkxO2VbMzAwNF09NjQyOTI7ZVszMDA2XT02NDI5NDtlWzMwMDddPTY0Mjk1O2VbMzAwOF09NjQyOTY7ZVszMDExXT0xOTAwO2VbMzAxNF09ODIyMztlWzMwMTVdPTgyNDQ7ZVszMDE3XT03NTMyO2VbMzAxOF09NzUzMztlWzMwMTldPTc1MzQ7ZVszMDc1XT03NTkwO2VbMzA3Nl09NzU5MTtlWzMwNzldPTc1OTQ7ZVszMDgwXT03NTk1O2VbMzA4M109NzU5ODtlWzMwODRdPTc1OTk7ZVszMDg3XT03NjAyO2VbMzA4OF09NzYwMztlWzMwOTFdPTc2MDY7ZVszMDkyXT03NjA3O2VbMzA5NV09NzYxMDtlWzMwOTZdPTc2MTE7ZVszMDk5XT03NjE0O2VbMzEwMF09NzYxNTtlWzMxMDNdPTc2MTg7ZVszMTA0XT03NjE5O2VbMzEwN109ODMzNztlWzMxMDhdPTgzMzg7ZVszMTE2XT0xODg0O2VbMzExOV09MTg4NTtlWzMxMjBdPTE4ODU7ZVszMTIzXT0xODg2O2VbMzEyNF09MTg4NjtlWzMxMjddPTE4ODc7ZVszMTI4XT0xODg3O2VbMzEzMV09MTg4ODtlWzMxMzJdPTE4ODg7ZVszMTM1XT0xODg5O2VbMzEzNl09MTg4OTtlWzMxMzldPTE4OTA7ZVszMTQwXT0xODkwO2VbMzE0M109MTg5MTtlWzMxNDRdPTE4OTE7ZVszMTQ3XT0xODkyO2VbMzE0OF09MTg5MjtlWzMxNTNdPTU4MDtlWzMxNTRdPTU4MTtlWzMxNTddPTU4NDtlWzMxNThdPTU4NTtlWzMxNjFdPTU4ODtlWzMxNjJdPTU4OTtlWzMxNjVdPTg5MTtlWzMxNjZdPTg5MjtlWzMxNjldPTEyNzQ7ZVszMTcwXT0xMjc1O2VbMzE3M109MTI3ODtlWzMxNzRdPTEyNzk7ZVszMTgxXT03NjIyO2VbMzE4Ml09NzYyMztlWzMyODJdPTExNzk5O2VbMzMxNl09NTc4O2VbMzM3OV09NDI3ODU7ZVszMzkzXT0xMTU5O2VbMzQxNl09ODM3N30pKSxhaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpLHJpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsxXT0zMjtlWzRdPTY1O2VbNV09MTkyO2VbNl09MTkzO2VbOV09MTk2O2VbMTddPTY2O2VbMThdPTY3O2VbMjFdPTI2ODtlWzI0XT02ODtlWzI4XT02OTtlWzI5XT0yMDA7ZVszMF09MjAxO2VbMzJdPTI4MjtlWzM4XT03MDtlWzM5XT03MTtlWzQ0XT03MjtlWzQ3XT03MztlWzQ4XT0yMDQ7ZVs0OV09MjA1O2VbNThdPTc0O2VbNjBdPTc1O2VbNjJdPTc2O2VbNjhdPTc3O2VbNjldPTc4O2VbNzVdPTc5O2VbNzZdPTIxMDtlWzgwXT0yMTQ7ZVs4N109ODA7ZVs4OV09ODE7ZVs5MF09ODI7ZVs5Ml09MzQ0O2VbOTRdPTgzO2VbOTddPTM1MjtlWzEwMF09ODQ7ZVsxMDRdPTg1O2VbMTA5XT0yMjA7ZVsxMTVdPTg2O2VbMTE2XT04NztlWzEyMV09ODg7ZVsxMjJdPTg5O2VbMTI0XT0yMjE7ZVsxMjddPTkwO2VbMTI5XT0zODE7ZVsyNThdPTk3O2VbMjU5XT0yMjQ7ZVsyNjBdPTIyNTtlWzI2M109MjI4O2VbMjY4XT0yNjE7ZVsyNzFdPTk4O2VbMjcyXT05OTtlWzI3M109MjYzO2VbMjc1XT0yNjk7ZVsyODJdPTEwMDtlWzI4Nl09MTAxO2VbMjg3XT0yMzI7ZVsyODhdPTIzMztlWzI5MF09MjgzO2VbMjk1XT0yODE7ZVsyOTZdPTEwMjtlWzMzNl09MTAzO2VbMzQ2XT0xMDQ7ZVszNDldPTEwNTtlWzM1MF09MjM2O2VbMzUxXT0yMzc7ZVszNjFdPTEwNjtlWzM2NF09MTA3O2VbMzY3XT0xMDg7ZVszNzFdPTMyMjtlWzM3M109MTA5O2VbMzc0XT0xMTA7ZVszODFdPTExMTtlWzM4Ml09MjQyO2VbMzgzXT0yNDM7ZVszODZdPTI0NjtlWzM5M109MTEyO2VbMzk1XT0xMTM7ZVszOTZdPTExNDtlWzM5OF09MzQ1O2VbNDAwXT0xMTU7ZVs0MDFdPTM0NztlWzQwM109MzUzO2VbNDEwXT0xMTY7ZVs0MzddPTExNztlWzQ0Ml09MjUyO2VbNDQ4XT0xMTg7ZVs0NDldPTExOTtlWzQ1NF09MTIwO2VbNDU1XT0xMjE7ZVs0NTddPTI1MztlWzQ2MF09MTIyO2VbNDYyXT0zODI7ZVs0NjNdPTM4MDtlWzg1M109NDQ7ZVs4NTVdPTU4O2VbODU2XT00NjtlWzg3Nl09NDc7ZVs4NzhdPTQ1O2VbODgyXT00NTtlWzg5NF09NDA7ZVs4OTVdPTQxO2VbODk2XT05MTtlWzg5N109OTM7ZVs5MjNdPTY0O2VbOTQwXT0xNjM7ZVsxMDA0XT00ODtlWzEwMDVdPTQ5O2VbMTAwNl09NTA7ZVsxMDA3XT01MTtlWzEwMDhdPTUyO2VbMTAwOV09NTM7ZVsxMDEwXT01NDtlWzEwMTFdPTU1O2VbMTAxMl09NTY7ZVsxMDEzXT01NztlWzEwODFdPTM3O2VbMTA4NV09NDM7ZVsxMDg2XT00NX0pKTtmdW5jdGlvbiBnZXRTdGFuZGFyZEZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIEpyKClbdF19ZnVuY3Rpb24gaXNLbm93bkZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuISEoSnIoKVt0XXx8WnIoKVt0XXx8UXIoKVt0XXx8ZWkoKVt0XSl9Y2xhc3MgVG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuX21hcD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1mb3JFYWNoKGUpe2Zvcihjb25zdCB0IGluIHRoaXMuX21hcCllKHQsdGhpcy5fbWFwW3RdLmNvZGVQb2ludEF0KDApKX1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1hbWVuZChlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sYXN0Q2hhcisxLXRoaXMuZmlyc3RDaGFyfWZvckVhY2goZSl7Zm9yKGxldCB0PXRoaXMuZmlyc3RDaGFyLGE9dGhpcy5sYXN0Q2hhcjt0PD1hO3QrKyllKHQsdCl9aGFzKGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcn1nZXQoZSl7aWYodGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49dGhpcy5maXJzdENoYXImJmU8PXRoaXMubGFzdENoYXI/ZTotMX1hbWVuZChlKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGFtZW5kKCkiKX19Y2xhc3MgQ0ZGRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydGllcz10O2NvbnN0IGE9bmV3IENGRlBhcnNlcihlLHQsUnIpO3RoaXMuY2ZmPWEucGFyc2UoKTt0aGlzLmNmZi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3Qgcj1uZXcgQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1yLmNvbXBpbGUoKX1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IG4scztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbztpZihhPy5sZW5ndGg+MCl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj1hW2VdO3ZvaWQgMCE9PXImJih0W3JdPWUpfX1uPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZS5pc0NJREZvbnQpZm9yKHM9MDtzPGkubGVuZ3RoO3MrKyl7Y29uc3QgZT1pW3NdO289ci5jaGFyQ29kZU9mKGUpO3ZvaWQgMCE9PXQ/LltvXSYmKG89dFtvXSk7bltvXT1zfWVsc2UgZm9yKHM9MDtzPGUuY2hhclN0cmluZ3MuY291bnQ7cysrKXtvPXIuY2hhckNvZGVPZihzKTtuW29dPXN9cmV0dXJuIG59bGV0IG89ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKG89dC5kZWZhdWx0RW5jb2RpbmcpO249dHlwZTFGb250R2x5cGhNYXBwaW5nKHQsbyxpKTtyZXR1cm4gbn1oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2RpbmcsaT1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihpW2VdPXIpfX1pLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1pKX19ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gcmVhZEludDE2KGUsdCkvMTYzODR9ZnVuY3Rpb24gZ2V0U3Vicm91dGluZUJpYXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0zMjc2ODt0PDEyNDA/YT0xMDc6dDwzMzkwMCYmKGE9MTEzMSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VDbWFwKGUsdCxhKXtjb25zdCByPTE9PT1yZWFkVWludDE2KGUsdCsyKT9yZWFkVWludDMyKGUsdCs4KTpyZWFkVWludDMyKGUsdCsxNiksaT1yZWFkVWludDE2KGUsdCtyKTtsZXQgbixzLG87aWYoND09PWkpe3JlYWRVaW50MTYoZSx0K3IrMik7Y29uc3QgYT1yZWFkVWludDE2KGUsdCtyKzYpPj4xO3M9dCtyKzE0O249W107Zm9yKG89MDtvPGE7bysrLHMrPTIpbltvXT17ZW5kOnJlYWRVaW50MTYoZSxzKX07cys9Mjtmb3Iobz0wO288YTtvKysscys9MiluW29dLnN0YXJ0PXJlYWRVaW50MTYoZSxzKTtmb3Iobz0wO288YTtvKysscys9MiluW29dLmlkRGVsdGE9cmVhZFVpbnQxNihlLHMpO2ZvcihvPTA7bzxhO28rKyxzKz0yKXtsZXQgdD1yZWFkVWludDE2KGUscyk7aWYoMCE9PXQpe25bb10uaWRzPVtdO2ZvcihsZXQgYT0wLHI9bltvXS5lbmQtbltvXS5zdGFydCsxO2E8cjthKyspe25bb10uaWRzW2FdPXJlYWRVaW50MTYoZSxzK3QpO3QrPTJ9fX1yZXR1cm4gbn1pZigxMj09PWkpe2NvbnN0IGE9cmVhZFVpbnQzMihlLHQrcisxMik7cz10K3IrMTY7bj1bXTtmb3Iobz0wO288YTtvKyspe3Q9cmVhZFVpbnQzMihlLHMpO24ucHVzaCh7c3RhcnQ6dCxlbmQ6cmVhZFVpbnQzMihlLHMrNCksaWREZWx0YTpyZWFkVWludDMyKGUscys4KS10fSk7cys9MTJ9cmV0dXJuIG59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bnN1cHBvcnRlZCBjbWFwOiAke2l9YCl9ZnVuY3Rpb24gcGFyc2VDZmYoZSx0LGEscil7Y29uc3QgaT1uZXcgQ0ZGUGFyc2VyKG5ldyBTdHJlYW0oZSx0LGEtdCkse30scikucGFyc2UoKTtyZXR1cm57Z2x5cGhzOmkuY2hhclN0cmluZ3Mub2JqZWN0cyxzdWJyczppLnRvcERpY3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXg/Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4Py5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsaT0wLG49ZS5sZW5ndGgtMTtmb3IoO2k8bjspe2NvbnN0IHQ9aStuKzE+PjE7YTxlW3RdLnN0YXJ0P249dC0xOmk9dH1lW2ldLnN0YXJ0PD1hJiZhPD1lW2ldLmVuZCYmKHI9ZVtpXS5pZERlbHRhKyhlW2ldLmlkcz9lW2ldLmlkc1thLWVbaV0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXtzJiZ0LmFkZCgiTCIscyk7cz1bZSxhXTt0LmFkZCgiTSIsW2UsYV0pfWZ1bmN0aW9uIGxpbmVUbyhlLGEpe3QuYWRkKCJMIixbZSxhXSl9ZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyhlLGEscixpKXt0LmFkZCgiUSIsW2UsYSxyLGldKX1sZXQgcj0wO2NvbnN0IGk9cmVhZEludDE2KGUscik7bGV0IG4scz1udWxsLG89MCxjPTA7cis9MTA7aWYoaTwwKWRve249cmVhZFVpbnQxNihlLHIpO2NvbnN0IGk9cmVhZFVpbnQxNihlLHIrMik7cis9NDtsZXQgcyxsO2lmKDEmbil7aWYoMiZuKXtzPXJlYWRJbnQxNihlLHIpO2w9cmVhZEludDE2KGUscisyKX1lbHNle3M9cmVhZFVpbnQxNihlLHIpO2w9cmVhZFVpbnQxNihlLHIrMil9cis9NH1lbHNlIGlmKDImbil7cz1yZWFkSW50OChlLHIrKyk7bD1yZWFkSW50OChlLHIrKyl9ZWxzZXtzPWVbcisrXTtsPWVbcisrXX1pZigyJm4pe289cztjPWx9ZWxzZXtvPTA7Yz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZuKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmbil7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmbil7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tpXTtpZihnKXt0LnNhdmUoKTt0LnRyYW5zZm9ybShbaCxkLGYsdSxvLGNdKTtjb21waWxlR2x5ZihnLHQsYSk7dC5yZXN0b3JlKCl9fXdoaWxlKDMyJm4pO2Vsc2V7Y29uc3QgdD1bXTtsZXQgYSxzO2ZvcihhPTA7YTxpO2ErKyl7dC5wdXNoKHJlYWRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK3JlYWRVaW50MTYoZSxyKTtjb25zdCBsPXQuYXQoLTEpKzEsaD1bXTtmb3IoO2gubGVuZ3RoPGw7KXtuPWVbcisrXTtsZXQgdD0xOzgmbiYmKHQrPWVbcisrXSk7Zm9yKDt0LS0gPjA7KWgucHVzaCh7ZmxhZ3M6bn0pfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDE4JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1yZWFkSW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgMjpvLT1lW3IrK107YnJlYWs7Y2FzZSAxODpvKz1lW3IrK119aFthXS54PW99Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMzYmaFthXS5mbGFncyl7Y2FzZSAwOmMrPXJlYWRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0OmMtPWVbcisrXTticmVhaztjYXNlIDM2OmMrPWVbcisrXX1oW2FdLnk9Y31sZXQgdT0wO2ZvcihyPTA7cjxpO3IrKyl7Y29uc3QgZT10W3JdLGk9aC5zbGljZSh1LGUrMSk7aWYoMSZpWzBdLmZsYWdzKWkucHVzaChpWzBdKTtlbHNlIGlmKDEmaS5hdCgtMSkuZmxhZ3MpaS51bnNoaWZ0KGkuYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooaVswXS54K2kuYXQoLTEpLngpLzIseTooaVswXS55K2kuYXQoLTEpLnkpLzJ9O2kudW5zaGlmdChlKTtpLnB1c2goZSl9bW92ZVRvKGlbMF0ueCxpWzBdLnkpO2ZvcihhPTEscz1pLmxlbmd0aDthPHM7YSsrKWlmKDEmaVthXS5mbGFncylsaW5lVG8oaVthXS54LGlbYV0ueSk7ZWxzZSBpZigxJmlbYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhpW2FdLngsaVthXS55LGlbYSsxXS54LGlbYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKGlbYV0ueCxpW2FdLnksKGlbYV0ueCtpW2ErMV0ueCkvMiwoaVthXS55K2lbYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLHIpe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe2MmJnQuYWRkKCJMIixjKTtjPVtlLGFdO3QuYWRkKCJNIixbZSxhXSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5hZGQoIkwiLFtlLGFdKX1mdW5jdGlvbiBiZXppZXJDdXJ2ZVRvKGUsYSxyLGksbixzKXt0LmFkZCgiQyIsW2UsYSxyLGksbixzXSl9Y29uc3QgaT1bXTtsZXQgbj0wLHM9MCxvPTAsYz1udWxsOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgYz0wO2Zvcig7YzxlLmxlbmd0aDspe2xldCBsLGgsdSxkLGYsZyxwLG0sYix5PSExLHc9ZVtjKytdO3N3aXRjaCh3KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpvKz1pLmxlbmd0aD4+MTt5PSEwO2JyZWFrO2Nhc2UgNDpzKz1pLnBvcCgpO21vdmVUbyhuLHMpO3k9ITA7YnJlYWs7Y2FzZSA1OmZvcig7aS5sZW5ndGg+MDspe24rPWkuc2hpZnQoKTtzKz1pLnNoaWZ0KCk7bGluZVRvKG4scyl9YnJlYWs7Y2FzZSA2OmZvcig7aS5sZW5ndGg+MDspe24rPWkuc2hpZnQoKTtsaW5lVG8obixzKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7cys9aS5zaGlmdCgpO2xpbmVUbyhuLHMpfWJyZWFrO2Nhc2UgNzpmb3IoO2kubGVuZ3RoPjA7KXtzKz1pLnNoaWZ0KCk7bGluZVRvKG4scyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO24rPWkuc2hpZnQoKTtsaW5lVG8obixzKX1icmVhaztjYXNlIDg6Zm9yKDtpLmxlbmd0aD4wOyl7bD1uK2kuc2hpZnQoKTt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyl9YnJlYWs7Y2FzZSAxMDptPWkucG9wKCk7Yj1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChyKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCByO3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXgmJihyPXQucHJpdmF0ZURpY3Quc3VicnNJbmRleC5vYmplY3RzKTtpZihyKXttKz1nZXRTdWJyb3V0aW5lQmlhcyhyKTtiPXJbbV19fWVsc2Ugd2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIil9ZWxzZSBiPWEuc3VicnNbbSthLnN1YnJzQmlhc107YiYmcGFyc2UoYik7YnJlYWs7Y2FzZSAxMTpyZXR1cm47Y2FzZSAxMjp3PWVbYysrXTtzd2l0Y2godyl7Y2FzZSAzNDpsPW4raS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7Zj1zK2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCxzLGgsZixuLGYpO2w9bitpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCxmLGgscyxuLHMpO2JyZWFrO2Nhc2UgMzU6bD1uK2kuc2hpZnQoKTt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyk7bD1uK2kuc2hpZnQoKTt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyk7aS5wb3AoKTticmVhaztjYXNlIDM2Omw9bitpLnNoaWZ0KCk7Zj1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsZixoLGcsbixnKTtsPW4raS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7cD1nK2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCxnLGgscCxuLHMpO2JyZWFrO2Nhc2UgMzc6Y29uc3QgZT1uLHQ9cztsPW4raS5zaGlmdCgpO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKTtsPW4raS5zaGlmdCgpO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aDtzPWQ7TWF0aC5hYnMobi1lKT5NYXRoLmFicyhzLXQpP24rPWkuc2hpZnQoKTpzKz1pLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7d31gKX1icmVhaztjYXNlIDE0OmlmKGkubGVuZ3RoPj00KXtjb25zdCBlPWkucG9wKCkscj1pLnBvcCgpO3M9aS5wb3AoKTtuPWkucG9wKCk7dC5zYXZlKCk7dC50cmFuc2xhdGUobixzKTtsZXQgbz1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW2tyW2VdXSkpO2NvbXBpbGVDaGFyU3RyaW5nKGEuZ2x5cGhzW28uZ2x5cGhJZF0sdCxhLG8uZ2x5cGhJZCk7dC5yZXN0b3JlKCk7bz1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW2tyW3JdXSkpO2NvbXBpbGVDaGFyU3RyaW5nKGEuZ2x5cGhzW28uZ2x5cGhJZF0sdCxhLG8uZ2x5cGhJZCl9cmV0dXJuO2Nhc2UgMTk6Y2FzZSAyMDpvKz1pLmxlbmd0aD4+MTtjKz1vKzc+PjM7eT0hMDticmVhaztjYXNlIDIxOnMrPWkucG9wKCk7bis9aS5wb3AoKTttb3ZlVG8obixzKTt5PSEwO2JyZWFrO2Nhc2UgMjI6bis9aS5wb3AoKTttb3ZlVG8obixzKTt5PSEwO2JyZWFrO2Nhc2UgMjQ6Zm9yKDtpLmxlbmd0aD4yOyl7bD1uK2kuc2hpZnQoKTt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyl9bis9aS5zaGlmdCgpO3MrPWkuc2hpZnQoKTtsaW5lVG8obixzKTticmVhaztjYXNlIDI1OmZvcig7aS5sZW5ndGg+Njspe24rPWkuc2hpZnQoKTtzKz1pLnNoaWZ0KCk7bGluZVRvKG4scyl9bD1uK2kuc2hpZnQoKTt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyk7YnJlYWs7Y2FzZSAyNjppLmxlbmd0aCUyJiYobis9aS5zaGlmdCgpKTtmb3IoO2kubGVuZ3RoPjA7KXtsPW47dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oO3M9ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyl9YnJlYWs7Y2FzZSAyNzppLmxlbmd0aCUyJiYocys9aS5zaGlmdCgpKTtmb3IoO2kubGVuZ3RoPjA7KXtsPW4raS5zaGlmdCgpO3U9cztoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQ7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyl9YnJlYWs7Y2FzZSAyODppLnB1c2gocmVhZEludDE2KGUsYykpO2MrPTI7YnJlYWs7Y2FzZSAyOTptPWkucG9wKCkrYS5nc3VicnNCaWFzO2I9YS5nc3VicnNbbV07YiYmcGFyc2UoYik7YnJlYWs7Y2FzZSAzMDpmb3IoO2kubGVuZ3RoPjA7KXtsPW47dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO2w9bitpLnNoaWZ0KCk7dT1zO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO249aCsoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKX1icmVhaztjYXNlIDMxOmZvcig7aS5sZW5ndGg+MDspe2w9bitpLnNoaWZ0KCk7dT1zO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO249aCsoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7bD1uO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpfWJyZWFrO2RlZmF1bHQ6aWYodzwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7d31gKTtpZih3PDI0NylpLnB1c2gody0xMzkpO2Vsc2UgaWYodzwyNTEpaS5wdXNoKDI1Nioody0yNDcpK2VbYysrXSsxMDgpO2Vsc2UgaWYodzwyNTUpaS5wdXNoKDI1NiotKHctMjUxKS1lW2MrK10tMTA4KTtlbHNle2kucHVzaCgoZVtjXTw8MjR8ZVtjKzFdPDwxNnxlW2MrMl08PDh8ZVtjKzNdKS82NTUzNik7Yys9NH19eSYmKGkubGVuZ3RoPTApfX0oZSl9Y2xhc3MgQ29tbWFuZHN7Y21kcz1bXTt0cmFuc2Zvcm1TdGFjaz1bXTtjdXJyZW50VHJhbnNmb3JtPVsxLDAsMCwxLDAsMF07YWRkKGUsdCl7aWYodCl7Y29uc3R7Y3VycmVudFRyYW5zZm9ybTphfT10aGlzO2ZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrPTIpVXRpbC5hcHBseVRyYW5zZm9ybSh0LGEsZSk7dGhpcy5jbWRzLnB1c2goYCR7ZX0ke3Quam9pbigiICIpfWApfWVsc2UgdGhpcy5jbWRzLnB1c2goZSl9dHJhbnNmb3JtKGUpe3RoaXMuY3VycmVudFRyYW5zZm9ybT1VdGlsLnRyYW5zZm9ybSh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0sZSl9dHJhbnNsYXRlKGUsdCl7dGhpcy50cmFuc2Zvcm0oWzEsMCwwLDEsZSx0XSl9c2F2ZSgpe3RoaXMudHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0uc2xpY2UoKSl9cmVzdG9yZSgpe3RoaXMuY3VycmVudFRyYW5zZm9ybT10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpfHxbMSwwLDAsMSwwLDBdfWdldFNWRygpe3JldHVybiB0aGlzLmNtZHMuam9pbigiIil9fWNsYXNzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcixpPXRoaXMuY29tcGlsZWRHbHlwaHNbYV07aWYodm9pZCAwPT09aSl7dHJ5e2k9dGhpcy5jb21waWxlR2x5cGgodGhpcy5nbHlwaHNbYV0sYSl9Y2F0Y2goZSl7aT0iIjtyPWV9dGhpcy5jb21waWxlZEdseXBoc1thXT1pfXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XT8/PWE7aWYocil0aHJvdyByO3JldHVybiBpfWNvbXBpbGVHbHlwaChlLGEpe2lmKCFlPy5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4iIjtsZXQgcj10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KGEpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7cj10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHR9ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1hc3NlcnQoaXNOdW1iZXJBcnJheShyLDYpLCJFeHBlY3RlZCBhIHZhbGlkIGZvbnRNYXRyaXguIik7Y29uc3QgaT1uZXcgQ29tbWFuZHM7aS50cmFuc2Zvcm0oci5zbGljZSgpKTt0aGlzLmNvbXBpbGVHbHlwaEltcGwoZSxpLGEpO2kuYWRkKCJaIik7cmV0dXJuIGkuZ2V0U1ZHKCl9Y29tcGlsZUdseXBoSW1wbCgpe3VucmVhY2hhYmxlKCJDaGlsZHJlbiBjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgdGhpcy4iKX1oYXNCdWlsdFBhdGgoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOmF9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO3JldHVybiB2b2lkIDAhPT10aGlzLmNvbXBpbGVkR2x5cGhzW2FdJiZ2b2lkIDAhPT10aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbdF19fWNsYXNzIFRydWVUeXBlQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGF8fFs0ODhlLTYsMCwwLDQ4OGUtNiwwLDBdKTt0aGlzLmdseXBocz1lO3RoaXMuY21hcD10fWNvbXBpbGVHbHlwaEltcGwoZSx0KXtjb21waWxlR2x5ZihlLHQsdGhpcyl9fWNsYXNzIFR5cGUyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGF8fFsuMDAxLDAsMCwuMDAxLDAsMF0pO3RoaXMuZ2x5cGhzPWUuZ2x5cGhzO3RoaXMuZ3N1YnJzPWUuZ3N1YnJzfHxbXTt0aGlzLnN1YnJzPWUuc3VicnN8fFtdO3RoaXMuY21hcD10O3RoaXMuZ2x5cGhOYW1lTWFwPUZyKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19Y2xhc3MgRm9udFJlbmRlcmVyRmFjdG9yeXtzdGF0aWMgY3JlYXRlKGUsdCl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmRhdGEpO2xldCByLGksbixzLG8sYztjb25zdCBsPXJlYWRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCxoPTEyO2U8bDtlKyssaCs9MTYpe2NvbnN0IGU9Ynl0ZXNUb1N0cmluZyhhLnN1YmFycmF5KGgsaCs0KSksbD1yZWFkVWludDMyKGEsaCs4KSx1PXJlYWRVaW50MzIoYSxoKzEyKTtzd2l0Y2goZSl7Y2FzZSJjbWFwIjpyPXBhcnNlQ21hcChhLGwpO2JyZWFrO2Nhc2UiZ2x5ZiI6aT1hLnN1YmFycmF5KGwsbCt1KTticmVhaztjYXNlImxvY2EiOm49YS5zdWJhcnJheShsLGwrdSk7YnJlYWs7Y2FzZSJoZWFkIjpjPXJlYWRVaW50MTYoYSxsKzE4KTtvPXJlYWRVaW50MTYoYSxsKzUwKTticmVhaztjYXNlIkNGRiAiOnM9cGFyc2VDZmYoYSxsLGwrdSx0KX19aWYoaSl7Y29uc3QgdD1jP1sxL2MsMCwwLDEvYywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGEpe2xldCByLGk7aWYoYSl7cj00O2k9cmVhZFVpbnQzMn1lbHNle3I9MjtpPShlLHQpPT4yKnJlYWRVaW50MTYoZSx0KX1jb25zdCBuPVtdO2xldCBzPWkodCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9aSh0LGEpO24ucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gbn0oaSxuLG8pLHIsdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKHMscixlLmZvbnRNYXRyaXgpfX1jb25zdCBpaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDA7ZVsiQ291cmllci1Cb2xkIl09NjAwO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDA7ZVsiQ291cmllci1PYmxpcXVlIl09NjAwO2UuSGVsdmV0aWNhPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1PYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZS5TeW1ib2w9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS51bml2ZXJzYWw9NzEzO2UubnVtYmVyc2lnbj01MDA7ZS5leGlzdGVudGlhbD01NDk7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5zdWNodGhhdD00Mzk7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlza21hdGg9NTAwO2UucGx1cz01NDk7ZS5jb21tYT0yNTA7ZS5taW51cz01NDk7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NDk7ZS5lcXVhbD01NDk7ZS5ncmVhdGVyPTU0OTtlLnF1ZXN0aW9uPTQ0NDtlLmNvbmdydWVudD01NDk7ZS5BbHBoYT03MjI7ZS5CZXRhPTY2NztlLkNoaT03MjI7ZS5EZWx0YT02MTI7ZS5FcHNpbG9uPTYxMTtlLlBoaT03NjM7ZS5HYW1tYT02MDM7ZS5FdGE9NzIyO2UuSW90YT0zMzM7ZS50aGV0YTE9NjMxO2UuS2FwcGE9NzIyO2UuTGFtYmRhPTY4NjtlLk11PTg4OTtlLk51PTcyMjtlLk9taWNyb249NzIyO2UuUGk9NzY4O2UuVGhldGE9NzQxO2UuUmhvPTU1NjtlLlNpZ21hPTU5MjtlLlRhdT02MTE7ZS5VcHNpbG9uPTY5MDtlLnNpZ21hMT00Mzk7ZS5PbWVnYT03Njg7ZS5YaT02NDU7ZS5Qc2k9Nzk1O2UuWmV0YT02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS50aGVyZWZvcmU9ODYzO2UuYnJhY2tldHJpZ2h0PTMzMztlLnBlcnBlbmRpY3VsYXI9NjU4O2UudW5kZXJzY29yZT01MDA7ZS5yYWRpY2FsZXg9NTAwO2UuYWxwaGE9NjMxO2UuYmV0YT01NDk7ZS5jaGk9NTQ5O2UuZGVsdGE9NDk0O2UuZXBzaWxvbj00Mzk7ZS5waGk9NTIxO2UuZ2FtbWE9NDExO2UuZXRhPTYwMztlLmlvdGE9MzI5O2UucGhpMT02MDM7ZS5rYXBwYT01NDk7ZS5sYW1iZGE9NTQ5O2UubXU9NTc2O2UubnU9NTIxO2Uub21pY3Jvbj01NDk7ZS5waT01NDk7ZS50aGV0YT01MjE7ZS5yaG89NTQ5O2Uuc2lnbWE9NjAzO2UudGF1PTQzOTtlLnVwc2lsb249NTc2O2Uub21lZ2ExPTcxMztlLm9tZWdhPTY4NjtlLnhpPTQ5MztlLnBzaT02ODY7ZS56ZXRhPTQ5NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5zaW1pbGFyPTU0OTtlLkV1cm89NzUwO2UuVXBzaWxvbjE9NjIwO2UubWludXRlPTI0NztlLmxlc3NlcXVhbD01NDk7ZS5mcmFjdGlvbj0xNjc7ZS5pbmZpbml0eT03MTM7ZS5mbG9yaW49NTAwO2UuY2x1Yj03NTM7ZS5kaWFtb25kPTc1MztlLmhlYXJ0PTc1MztlLnNwYWRlPTc1MztlLmFycm93Ym90aD0xMDQyO2UuYXJyb3dsZWZ0PTk4NztlLmFycm93dXA9NjAzO2UuYXJyb3dyaWdodD05ODc7ZS5hcnJvd2Rvd249NjAzO2UuZGVncmVlPTQwMDtlLnBsdXNtaW51cz01NDk7ZS5zZWNvbmQ9NDExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLm11bHRpcGx5PTU0OTtlLnByb3BvcnRpb25hbD03MTM7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS5idWxsZXQ9NDYwO2UuZGl2aWRlPTU0OTtlLm5vdGVxdWFsPTU0OTtlLmVxdWl2YWxlbmNlPTU0OTtlLmFwcHJveGVxdWFsPTU0OTtlLmVsbGlwc2lzPTFlMztlLmFycm93dmVydGV4PTYwMztlLmFycm93aG9yaXpleD0xZTM7ZS5jYXJyaWFnZXJldHVybj02NTg7ZS5hbGVwaD04MjM7ZS5JZnJha3R1cj02ODY7ZS5SZnJha3R1cj03OTU7ZS53ZWllcnN0cmFzcz05ODc7ZS5jaXJjbGVtdWx0aXBseT03Njg7ZS5jaXJjbGVwbHVzPTc2ODtlLmVtcHR5c2V0PTgyMztlLmludGVyc2VjdGlvbj03Njg7ZS51bmlvbj03Njg7ZS5wcm9wZXJzdXBlcnNldD03MTM7ZS5yZWZsZXhzdXBlcnNldD03MTM7ZS5ub3RzdWJzZXQ9NzEzO2UucHJvcGVyc3Vic2V0PTcxMztlLnJlZmxleHN1YnNldD03MTM7ZS5lbGVtZW50PTcxMztlLm5vdGVsZW1lbnQ9NzEzO2UuYW5nbGU9NzY4O2UuZ3JhZGllbnQ9NzEzO2UucmVnaXN0ZXJzZXJpZj03OTA7ZS5jb3B5cmlnaHRzZXJpZj03OTA7ZS50cmFkZW1hcmtzZXJpZj04OTA7ZS5wcm9kdWN0PTgyMztlLnJhZGljYWw9NTQ5O2UuZG90bWF0aD0yNTA7ZS5sb2dpY2Fsbm90PTcxMztlLmxvZ2ljYWxhbmQ9NjAzO2UubG9naWNhbG9yPTYwMztlLmFycm93ZGJsYm90aD0xMDQyO2UuYXJyb3dkYmxsZWZ0PTk4NztlLmFycm93ZGJsdXA9NjAzO2UuYXJyb3dkYmxyaWdodD05ODc7ZS5hcnJvd2RibGRvd249NjAzO2UubG96ZW5nZT00OTQ7ZS5hbmdsZWxlZnQ9MzI5O2UucmVnaXN0ZXJzYW5zPTc5MDtlLmNvcHlyaWdodHNhbnM9NzkwO2UudHJhZGVtYXJrc2Fucz03ODY7ZS5zdW1tYXRpb249NzEzO2UucGFyZW5sZWZ0dHA9Mzg0O2UucGFyZW5sZWZ0ZXg9Mzg0O2UucGFyZW5sZWZ0YnQ9Mzg0O2UuYnJhY2tldGxlZnR0cD0zODQ7ZS5icmFja2V0bGVmdGV4PTM4NDtlLmJyYWNrZXRsZWZ0YnQ9Mzg0O2UuYnJhY2VsZWZ0dHA9NDk0O2UuYnJhY2VsZWZ0bWlkPTQ5NDtlLmJyYWNlbGVmdGJ0PTQ5NDtlLmJyYWNlZXg9NDk0O2UuYW5nbGVyaWdodD0zMjk7ZS5pbnRlZ3JhbD0yNzQ7ZS5pbnRlZ3JhbHRwPTY4NjtlLmludGVncmFsZXg9Njg2O2UuaW50ZWdyYWxidD02ODY7ZS5wYXJlbnJpZ2h0dHA9Mzg0O2UucGFyZW5yaWdodGV4PTM4NDtlLnBhcmVucmlnaHRidD0zODQ7ZS5icmFja2V0cmlnaHR0cD0zODQ7ZS5icmFja2V0cmlnaHRleD0zODQ7ZS5icmFja2V0cmlnaHRidD0zODQ7ZS5icmFjZXJpZ2h0dHA9NDk0O2UuYnJhY2VyaWdodG1pZD00OTQ7ZS5icmFjZXJpZ2h0YnQ9NDk0O2UuYXBwbGU9NzkwfSkpO2VbIlRpbWVzLVJvbWFuIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MDg7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTY0O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU2NDtlLmVxdWFsPTU2NDtlLmdyZWF0ZXI9NTY0O2UucXVlc3Rpb249NDQ0O2UuYXQ9OTIxO2UuQT03MjI7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NTU2O2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj0zODk7ZS5LPTcyMjtlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD01NTY7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj03MjI7ZS5XPTk0NDtlLlg9NzIyO2UuWT03MjI7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT00NDQ7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9MzMzO2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MTgwO2UucXVvdGVkYmxsZWZ0PTQ0NDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NDUzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT00NDQ7ZS5xdW90ZWRibHJpZ2h0PTQ0NDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj00NDQ7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9ODg5O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT00NDQ7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU2NDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NDQ0O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz00NDQ7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz00NDQ7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT00NDQ7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT00NDQ7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTQ0NDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NTU2O2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj01ODg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTY0O2UudWFjdXRlPTUwMDtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz00NDQ7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTU2NDtlLmJyb2tlbmJhcj0yMDA7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTMzMztlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzI2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj00NDQ7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzQ0O2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01NjQ7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTY0O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTFlMztlLmFtcGVyc2FuZD04MzM7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9OTMwO2UuQT03MjI7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTc3ODtlLkw9NjY3O2UuTT05NDQ7ZS5OPTcyMjtlLk89Nzc4O2UuUD02MTE7ZS5RPTc3ODtlLlI9NzIyO2UuUz01NTY7ZS5UPTY2NztlLlU9NzIyO2UuVj03MjI7ZS5XPTFlMztlLlg9NzIyO2UuWT03MjI7ZS5aPTY2NztlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTgxO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTU1NjtlLmM9NDQ0O2UuZD01NTY7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0zMzM7ZS5rPTU1NjtlLmw9Mjc4O2UubT04MzM7ZS5uPTU1NjtlLm89NTAwO2UucD01NTY7ZS5xPTU1NjtlLnI9NDQ0O2Uucz0zODk7ZS50PTMzMztlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD0zOTQ7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zOTQ7ZS5hc2NpaXRpbGRlPTUyMDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTQwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTMwMDtlLkxzbGFzaD02Njc7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTMzMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01NTY7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjY3O2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTQ0NDtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjY3O2UuVGhvcm49NjExO2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02NzI7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02Njc7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTQ0NDtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTY2NztlLlpjYXJvbj02Njc7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249NDE2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249Mzk0O2UuS2NvbW1hYWNjZW50PTc3ODtlLkxhY3V0ZT02Njc7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjY3O2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9NDQ0O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTY2NztlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01NzA7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTcwO2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zODk7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9ODMyO2UuQT02Njc7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTY2NztlLkY9NjY3O2UuRz03MjI7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTY2NztlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTg4OTtlLlg9NjY3O2UuWT02MTE7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTcwO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTU1NjtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTU2O2Uudj00NDQ7ZS53PTY2NztlLng9NTAwO2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD0zNDg7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zNDg7ZS5hc2NpaXRpbGRlPTU3MDtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTAwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTk0NDtlLm9yZGZlbWluaW5lPTI2NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMwMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NjExO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT02MTE7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjY3O2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02MDg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzY2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTc2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzgyO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz02MDY7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NjA2O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1JdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQyMDtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz02NzU7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9Njc1O2UuZXF1YWw9Njc1O2UuZ3JlYXRlcj02NzU7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MjA7ZS5BPTYxMTtlLkI9NjExO2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj02MTE7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTQ0NDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NjY3O2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02MTE7ZS5TPTUwMDtlLlQ9NTU2O2UuVT03MjI7ZS5WPTYxMTtlLlc9ODMzO2UuWD02MTE7ZS5ZPTU1NjtlLlo9NTU2O2UuYnJhY2tldGxlZnQ9Mzg5O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zODk7ZS5hc2NpaWNpcmN1bT00MjI7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0yNzg7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NDQ0O2UubD0yNzg7ZS5tPTcyMjtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTQ0NDtlLnc9NjY3O2UueD00NDQ7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTQwMDtlLmJhcj0yNzU7ZS5icmFjZXJpZ2h0PTQwMDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yMTQ7ZS5xdW90ZWRibGxlZnQ9NTU2O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MjM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTU1NjtlLnF1b3RlZGJscmlnaHQ9NTU2O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9ODg5O2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9ODg5O2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT02Njc7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz01NTY7ZS5kaXZpZGU9Njc1O2UuWWFjdXRlPTU1NjtlLkFjaXJjdW1mbGV4PTYxMTtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD02Njc7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD01NTY7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02MTE7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02MTE7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD01NTY7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02MTE7ZS5TYWN1dGU9NTAwO2UuZGNhcm9uPTU0NDtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTYxMTtlLkFicmV2ZT02MTE7ZS5tdWx0aXBseT02NzU7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTU1NjtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NjY3O2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTY2NztlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9Njc1O2UuYnJva2VuYmFyPTI3NTtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NTU2O2UuWmNhcm9uPTU1NjtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMDA7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTYxMTtlLkFkaWVyZXNpcz02MTE7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTUwMDtlLmxjYXJvbj0zMDA7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTAwO2UuU2NvbW1hYWNjZW50PTUwMDtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NjY3O2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02MTE7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTYxMTtlLkFvZ29uZWs9NjExO2UuQXJpbmc9NjExO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTQ0NDtlLm1pbnVzPTY3NTtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02NzU7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2UuWmFwZkRpbmdiYXRzPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5hMT05NzQ7ZS5hMj05NjE7ZS5hMjAyPTk3NDtlLmEzPTk4MDtlLmE0PTcxOTtlLmE1PTc4OTtlLmExMTk9NzkwO2UuYTExOD03OTE7ZS5hMTE3PTY5MDtlLmExMT05NjA7ZS5hMTI9OTM5O2UuYTEzPTU0OTtlLmExND04NTU7ZS5hMTU9OTExO2UuYTE2PTkzMztlLmExMDU9OTExO2UuYTE3PTk0NTtlLmExOD05NzQ7ZS5hMTk9NzU1O2UuYTIwPTg0NjtlLmEyMT03NjI7ZS5hMjI9NzYxO2UuYTIzPTU3MTtlLmEyND02Nzc7ZS5hMjU9NzYzO2UuYTI2PTc2MDtlLmEyNz03NTk7ZS5hMjg9NzU0O2UuYTY9NDk0O2UuYTc9NTUyO2UuYTg9NTM3O2UuYTk9NTc3O2UuYTEwPTY5MjtlLmEyOT03ODY7ZS5hMzA9Nzg4O2UuYTMxPTc4ODtlLmEzMj03OTA7ZS5hMzM9NzkzO2UuYTM0PTc5NDtlLmEzNT04MTY7ZS5hMzY9ODIzO2UuYTM3PTc4OTtlLmEzOD04NDE7ZS5hMzk9ODIzO2UuYTQwPTgzMztlLmE0MT04MTY7ZS5hNDI9ODMxO2UuYTQzPTkyMztlLmE0ND03NDQ7ZS5hNDU9NzIzO2UuYTQ2PTc0OTtlLmE0Nz03OTA7ZS5hNDg9NzkyO2UuYTQ5PTY5NTtlLmE1MD03NzY7ZS5hNTE9NzY4O2UuYTUyPTc5MjtlLmE1Mz03NTk7ZS5hNTQ9NzA3O2UuYTU1PTcwODtlLmE1Nj02ODI7ZS5hNTc9NzAxO2UuYTU4PTgyNjtlLmE1OT04MTU7ZS5hNjA9Nzg5O2UuYTYxPTc4OTtlLmE2Mj03MDc7ZS5hNjM9Njg3O2UuYTY0PTY5NjtlLmE2NT02ODk7ZS5hNjY9Nzg2O2UuYTY3PTc4NztlLmE2OD03MTM7ZS5hNjk9NzkxO2UuYTcwPTc4NTtlLmE3MT03OTE7ZS5hNzI9ODczO2UuYTczPTc2MTtlLmE3ND03NjI7ZS5hMjAzPTc2MjtlLmE3NT03NTk7ZS5hMjA0PTc1OTtlLmE3Nj04OTI7ZS5hNzc9ODkyO2UuYTc4PTc4ODtlLmE3OT03ODQ7ZS5hODE9NDM4O2UuYTgyPTEzODtlLmE4Mz0yNzc7ZS5hODQ9NDE1O2UuYTk3PTM5MjtlLmE5OD0zOTI7ZS5hOTk9NjY4O2UuYTEwMD02Njg7ZS5hODk9MzkwO2UuYTkwPTM5MDtlLmE5Mz0zMTc7ZS5hOTQ9MzE3O2UuYTkxPTI3NjtlLmE5Mj0yNzY7ZS5hMjA1PTUwOTtlLmE4NT01MDk7ZS5hMjA2PTQxMDtlLmE4Nj00MTA7ZS5hODc9MjM0O2UuYTg4PTIzNDtlLmE5NT0zMzQ7ZS5hOTY9MzM0O2UuYTEwMT03MzI7ZS5hMTAyPTU0NDtlLmExMDM9NTQ0O2UuYTEwND05MTA7ZS5hMTA2PTY2NztlLmExMDc9NzYwO2UuYTEwOD03NjA7ZS5hMTEyPTc3NjtlLmExMTE9NTk1O2UuYTExMD02OTQ7ZS5hMTA5PTYyNjtlLmExMjA9Nzg4O2UuYTEyMT03ODg7ZS5hMTIyPTc4ODtlLmExMjM9Nzg4O2UuYTEyND03ODg7ZS5hMTI1PTc4ODtlLmExMjY9Nzg4O2UuYTEyNz03ODg7ZS5hMTI4PTc4ODtlLmExMjk9Nzg4O2UuYTEzMD03ODg7ZS5hMTMxPTc4ODtlLmExMzI9Nzg4O2UuYTEzMz03ODg7ZS5hMTM0PTc4ODtlLmExMzU9Nzg4O2UuYTEzNj03ODg7ZS5hMTM3PTc4ODtlLmExMzg9Nzg4O2UuYTEzOT03ODg7ZS5hMTQwPTc4ODtlLmExNDE9Nzg4O2UuYTE0Mj03ODg7ZS5hMTQzPTc4ODtlLmExNDQ9Nzg4O2UuYTE0NT03ODg7ZS5hMTQ2PTc4ODtlLmExNDc9Nzg4O2UuYTE0OD03ODg7ZS5hMTQ5PTc4ODtlLmExNTA9Nzg4O2UuYTE1MT03ODg7ZS5hMTUyPTc4ODtlLmExNTM9Nzg4O2UuYTE1ND03ODg7ZS5hMTU1PTc4ODtlLmExNTY9Nzg4O2UuYTE1Nz03ODg7ZS5hMTU4PTc4ODtlLmExNTk9Nzg4O2UuYTE2MD04OTQ7ZS5hMTYxPTgzODtlLmExNjM9MTAxNjtlLmExNjQ9NDU4O2UuYTE5Nj03NDg7ZS5hMTY1PTkyNDtlLmExOTI9NzQ4O2UuYTE2Nj05MTg7ZS5hMTY3PTkyNztlLmExNjg9OTI4O2UuYTE2OT05Mjg7ZS5hMTcwPTgzNDtlLmExNzE9ODczO2UuYTE3Mj04Mjg7ZS5hMTczPTkyNDtlLmExNjI9OTI0O2UuYTE3ND05MTc7ZS5hMTc1PTkzMDtlLmExNzY9OTMxO2UuYTE3Nz00NjM7ZS5hMTc4PTg4MztlLmExNzk9ODM2O2UuYTE5Mz04MzY7ZS5hMTgwPTg2NztlLmExOTk9ODY3O2UuYTE4MT02OTY7ZS5hMjAwPTY5NjtlLmExODI9ODc0O2UuYTIwMT04NzQ7ZS5hMTgzPTc2MDtlLmExODQ9OTQ2O2UuYTE5Nz03NzE7ZS5hMTg1PTg2NTtlLmExOTQ9NzcxO2UuYTE5OD04ODg7ZS5hMTg2PTk2NztlLmExOTU9ODg4O2UuYTE4Nz04MzE7ZS5hMTg4PTg3MztlLmExODk9OTI3O2UuYTE5MD05NzA7ZS5hMTkxPTkxOH0pKX0pKSxuaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0Oi00MjZ9O2VbIkNvdXJpZXItQm9sZCJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDM5fTtlWyJDb3VyaWVyLU9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlLkhlbHZldGljYT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGQiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIlRpbWVzLVJvbWFuIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjIseEhlaWdodDo0NTB9O2VbIlRpbWVzLUJvbGQiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY3Nix4SGVpZ2h0OjQ2MX07ZVsiVGltZXMtSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NTMseEhlaWdodDo0NDF9O2VbIlRpbWVzLUJvbGRJdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2OSx4SGVpZ2h0OjQ2Mn07ZS5TeW1ib2w9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfTtlLlphcGZEaW5nYmF0cz17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59fSkpO2NsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IGk9bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLG49bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9pLmdldFVpbnQzMigwKToyKmkuZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9pLmdldFVpbnQzMihjKToyKmkuZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxuKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiBNYXRoLnN1bVByZWNpc2UodGhpcy5nbHlwaHMubWFwKChlPT5lLmdldFNpemUoKSszJi00KSkpfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGE9ZT4xMzEwNzAscj1hPzQ6MixpPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSpyKSk7YT9pLnNldFVpbnQzMigwLDApOmkuc2V0VWludDE2KDAsMCk7bGV0IG49MCxzPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe24rPWUud3JpdGUobix0KTtuPW4rMyYtNDtzKz1yO2E/aS5zZXRVaW50MzIocyxuKTppLnNldFVpbnQxNihzLG4+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzphLGxvY2E6bmV3IFVpbnQ4QXJyYXkoaS5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxhPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGE7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixpXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKGkpO2lmKCEoMzImaS5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3QgaT1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6aX0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6TWF0aC5zdW1QcmVjaXNlKHRoaXMuY29tcG9zaXRlcy5tYXAoKGU9PmUuZ2V0U2l6ZSgpKSkpO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46YSx4TWF4OnIseU1heDppfSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWE7dGhpcy54TWF4PXI7dGhpcy55TWF4PWl9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOmF9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWE7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IGk9MDtpPGE7aSsrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IGk9clthLTFdKzEsbj10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK24pO2UrPW47Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPGk7ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBpPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8aTtlKyspby5wdXNoKHIpO2ErPWl9fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1vW2FdO2lmKDImaSl7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmaT9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2JmkpbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IGk9b1thXTtpZig0Jmkpe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJmk/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZpKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmaXw2NCZpKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IGk9MCxuPXIueENvb3JkaW5hdGVzLmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPXIueENvb3JkaW5hdGVzW2ldLHM9ci55Q29vcmRpbmF0ZXNbaV07bGV0IG89TWF0aC5hYnMobi10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9bjtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10saT1bXSxuPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtpLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O2kucHVzaChlKX1lbHNlIGkucHVzaChsKX1vPWg7bi5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBuKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLGk9ci5sZW5ndGg7YTxpO2ErKyl7Y29uc3QgaT1yW2FdLHM9blthXTtpZigyJnMpdC5zZXRVaW50OChlKyssaSk7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsaSk7ZSs9Mn19Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWlbYV0scz1uW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLGk9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8aTtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTphLGFyZ3VtZW50MjpyLHRyYW5zZjppLGluc3RydWN0aW9uczpufSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWE7dGhpcy5hcmd1bWVudDI9cjt0aGlzLnRyYW5zZj1pO3RoaXMuaW5zdHJ1Y3Rpb25zPW59c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT1lLHI9W107bGV0IGk9dC5nZXRVaW50MTYoZSk7Y29uc3Qgbj10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IHMsbztpZigxJmkpe2lmKDImaSl7cz10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7cz10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtpXj0xfWVsc2V7aWYoMiZpKXtzPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7cz10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZpKXtyLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZpKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZpKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGM9bnVsbDtpZigyNTYmaSl7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2M9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOmksZ2x5cGhJbmRleDpuLGFyZ3VtZW50MTpzLGFyZ3VtZW50MjpvLHRyYW5zZjpyLGluc3RydWN0aW9uczpjfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWF9c2NhbGUoZSx0KXt9fWZ1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGEpe2VbdF09YT4+OCYyNTU7ZVt0KzFdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGEpe2VbdF09YT4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGEpe2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGEsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpZm9yKGxldCByPTAsaT1hLmxlbmd0aDtyPGk7cisrKWVbdCsrXT0yNTUmYS5jaGFyQ29kZUF0KHIpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgYSllW3QrK109MjU1JnJ9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgYT0xLHI9MDtmb3IoOyhhXmUpPmE7KXthPDw9MTtyKyt9Y29uc3QgaT1hKnQ7cmV0dXJue3JhbmdlOmksZW50cnk6cixyYW5nZVNoaWZ0OnQqZS1pfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsYT1PYmplY3Qua2V5cyh0KTthLnNvcnQoKTtjb25zdCByPWEubGVuZ3RoO2xldCBpLG4scyxvLGMsbD0xMisxNipyO2NvbnN0IGg9W2xdO2ZvcihpPTA7aTxyO2krKyl7bz10W2FbaV1dO2wrPShvLmxlbmd0aCszJi00KT4+PjA7aC5wdXNoKGwpfWNvbnN0IHU9bmV3IFVpbnQ4QXJyYXkobCk7Zm9yKGk9MDtpPHI7aSsrKXtvPXRbYVtpXV07d3JpdGVEYXRhKHUsaFtpXSxvKX0idHJ1ZSI9PT1lJiYoZT1zdHJpbmczMig2NTUzNikpO3VbMF09MjU1JmUuY2hhckNvZGVBdCgwKTt1WzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7dVsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO3VbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KHUsNCxyKTtjb25zdCBkPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKHIsMTYpO3dyaXRlSW50MTYodSw2LGQucmFuZ2UpO3dyaXRlSW50MTYodSw4LGQuZW50cnkpO3dyaXRlSW50MTYodSwxMCxkLnJhbmdlU2hpZnQpO2w9MTI7Zm9yKGk9MDtpPHI7aSsrKXtjPWFbaV07dVtsXT0yNTUmYy5jaGFyQ29kZUF0KDApO3VbbCsxXT0yNTUmYy5jaGFyQ29kZUF0KDEpO3VbbCsyXT0yNTUmYy5jaGFyQ29kZUF0KDIpO3VbbCszXT0yNTUmYy5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKG49aFtpXSxzPWhbaSsxXTtuPHM7bis9NCl7ZT1lK3JlYWRVaW50MzIodSxuKT4+PjB9d3JpdGVJbnQzMih1LGwrNCxlKTt3cml0ZUludDMyKHUsbCs4LGhbaV0pO3dyaXRlSW50MzIodSxsKzEyLHRbY10ubGVuZ3RoKTtsKz0xNn1yZXR1cm4gdX1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fWNvbnN0IHNpPVs0XSxvaT1bNV0sY2k9WzZdLGxpPVs3XSxoaT1bOF0sdWk9WzEyLDM1XSxkaT1bMTRdLGZpPVsyMV0sZ2k9WzIyXSxwaT1bMzBdLG1pPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgaSxuLHMsbz0hMTtmb3IobGV0IGM9MDtjPHI7YysrKXtsZXQgcj1lW2NdO2lmKHI8MzIpezEyPT09ciYmKHI9KHI8PDgpK2VbKytjXSk7c3dpdGNoKHIpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLHNpKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsb2kpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxjaSk7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLGxpKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsaGkpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31zPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbc10pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtzXSx0LGEpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfWk9dGhpcy5zdGFjay5wb3AoKTtuPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9bjt0aGlzLndpZHRoPWk7dGhpcy5zdGFjay5wdXNoKGksbik7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsZ2kpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChkaVswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsZmkpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsZ2kpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQscGkpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbWkpO2JyZWFrO2Nhc2UgMzA3ODppZihhKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsZGkpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsZGkpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtuPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9bjt0aGlzLndpZHRoPWk7dGhpcy5zdGFjay5wdXNoKGksbixlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxmaSk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgYz10aGlzLnN0YWNrLnBvcCgpLGw9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2gobC9jKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31zPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgaD10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1zJiYzPT09aCl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsdWksITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PXMmJjA9PT1oJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrcisnIicpfWlmKG8pYnJlYWt9ZWxzZXtyPD0yNDY/ci09MTM5OnI9cjw9MjUwPzI1Niooci0yNDcpK2VbKytjXSsxMDg6cjw9MjU0Py0yNTYqKHItMjUxKS1lWysrY10tMTA4OigyNTUmZVsrK2NdKTw8MjR8KDI1NSZlWysrY10pPDwxNnwoMjU1JmVbKytjXSk8PDh8MjU1JmVbKytjXTt0aGlzLnN0YWNrLnB1c2gocil9fXJldHVybiBvfWV4ZWN1dGVDb21tYW5kKGUsdCxhKXtjb25zdCByPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+cilyZXR1cm4hMDtjb25zdCBpPXItZTtmb3IobGV0IGU9aTtlPHI7ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO2lmKE51bWJlci5pc0ludGVnZXIodCkpdGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk7ZWxzZXt0PTY1NTM2KnR8MDt0aGlzLm91dHB1dC5wdXNoKDI1NSx0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX19dGhpcy5vdXRwdXQucHVzaCguLi50KTthP3RoaXMuc3RhY2suc3BsaWNlKGksZSk6dGhpcy5zdGFjay5sZW5ndGg9MDtyZXR1cm4hMX19ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gZGVjcnlwdChlLHQsYSl7aWYoYT49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCByLGksbj0wfHQ7Zm9yKHI9MDtyPGE7cisrKW49NTI4NDUqKGVbcl0rbikrMjI3MTkmNjU1MzU7Y29uc3Qgcz1lLmxlbmd0aC1hLG89bmV3IFVpbnQ4QXJyYXkocyk7Zm9yKHI9YSxpPTA7aTxzO3IrKyxpKyspe2NvbnN0IHQ9ZVtyXTtvW2ldPXRebj4+ODtuPTUyODQ1Kih0K24pKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIGlzU3BlY2lhbChlKXtyZXR1cm4gNDc9PT1lfHw5MT09PWV8fDkzPT09ZXx8MTIzPT09ZXx8MTI1PT09ZXx8NDA9PT1lfHw0MT09PWV9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGE9ISgoaXNIZXhEaWdpdCh0WzBdKXx8aXNXaGl0ZVNwYWNlKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgU3RyZWFtKGE/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsYSl7bGV0IHI9MHx0O2NvbnN0IGk9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheShpPj4+MSk7bGV0IHMsbztmb3Iocz0wLG89MDtzPGk7cysrKXtjb25zdCB0PWVbc107aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7cysrO2xldCBhO2Zvcig7czxpJiYhaXNIZXhEaWdpdChhPWVbc10pOylzKys7aWYoczxpKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxhKSwxNik7bltvKytdPWVecj4+ODtyPTUyODQ1KihlK3IpKzIyNzE5JjY1NTM1fX1yZXR1cm4gbi5zbGljZShhLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgYT0iIjtkb3thKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiFpc1doaXRlU3BhY2UodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBhfXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGE9W10scj1bXSxpPU9iamVjdC5jcmVhdGUobnVsbCk7aS5sZW5JVj00O2NvbnN0IG49e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOml9fTtsZXQgcyxvLGMsbDtmb3IoO251bGwhPT0ocz10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1zKXtzPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2gocyl7Y2FzZSJDaGFyU3RyaW5ncyI6dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7Oyl7cz10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXN8fCJlbmQiPT09cylicmVhaztpZigiLyIhPT1zKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2M9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7bD1uLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgYT10aGlzLnJlYWRDaGFyU3RyaW5ncyhjLGwpO3RoaXMubmV4dENoYXIoKTtzPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09cz90aGlzLmdldFRva2VuKCk6Ii8iPT09cyYmdGhpcy5wcmV2Q2hhcigpO3IucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOmF9KX1icmVhaztjYXNlIlN1YnJzIjp0aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPW4ucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCByPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zJiZ0aGlzLmdldFRva2VuKCk7YVtlXT1yfWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOmNvbnN0IGU9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmxlbmd0aD4wJiZlLmxlbmd0aCwwO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlckFycmF5KClbMF07YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOm4ucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZE51bWJlcigpfHwuMDY7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOm4ucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWRCb29sZWFuKCl9fWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6aX1vZiByKXtjb25zdCByPW5ldyBUeXBlMUNoYXJTdHJpbmcscz1yLmNvbnZlcnQodCxhLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCk7bGV0IG89ci5vdXRwdXQ7cyYmKG89WzE0XSk7Y29uc3QgYz17Z2x5cGhOYW1lOmksY2hhcnN0cmluZzpvLHdpZHRoOnIud2lkdGgsbHNiOnIubHNiLHNlYWM6ci5zZWFjfTsiLm5vdGRlZiI9PT1pP24uY2hhcnN0cmluZ3MudW5zaGlmdChjKTpuLmNoYXJzdHJpbmdzLnB1c2goYyk7aWYoZS5idWlsdEluRW5jb2Rpbmcpe2NvbnN0IHQ9ZS5idWlsdEluRW5jb2RpbmcuaW5kZXhPZihpKTt0Pi0xJiZ2b2lkIDA9PT1lLndpZHRoc1t0XSYmdD49ZS5maXJzdENoYXImJnQ8PWUubGFzdENoYXImJihlLndpZHRoc1t0XT1yLndpZHRoKX19cmV0dXJuIG59ZXh0cmFjdEZvbnRIZWFkZXIoZSl7bGV0IHQ7Zm9yKDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dCl7dD10aGlzLmdldFRva2VuKCk7c3dpdGNoKHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3QgYT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1hO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IHI9dGhpcy5nZXRUb2tlbigpO2xldCBpO2lmKC9eXGQrJC8udGVzdChyKSl7aT1bXTtjb25zdCBlPTB8cGFyc2VJbnQociwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgYT0wO2E8ZTthKyspe3Q9dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCIhPT10JiYiZGVmIiE9PXQ7KXt0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dClyZXR1cm59aWYoImRlZiI9PT10KWJyZWFrO2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGE9dGhpcy5nZXRUb2tlbigpO2lbZV09YTt0aGlzLmdldFRva2VuKCl9fWVsc2UgaT1nZXRFbmNvZGluZyhyKTtlLmJ1aWx0SW5FbmNvZGluZz1pO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IG49dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heChuWzNdLG5bMV0pO2UuZGVzY2VudD1NYXRoLm1pbihuWzFdLG5bM10pO2UuYXNjZW50U2NhbGVkPSEwfX19fWZ1bmN0aW9uIGZpbmRCbG9jayhlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aCxpPXQubGVuZ3RoLG49ci1pO2xldCBzPWEsbz0hMTtmb3IoO3M8bjspe2xldCBhPTA7Zm9yKDthPGkmJmVbcythXT09PXRbYV07KWErKztpZihhPj1pKXtzKz1hO2Zvcig7czxyJiZpc1doaXRlU3BhY2UoZVtzXSk7KXMrKztvPSEwO2JyZWFrfXMrK31yZXR1cm57Zm91bmQ6byxsZW5ndGg6c319Y2xhc3MgVHlwZTFGb250e2NvbnN0cnVjdG9yKGUsdCxhKXtsZXQgcj1hLmxlbmd0aDEsaT1hLmxlbmd0aDIsbj10LnBlZWtCeXRlcyg2KTtjb25zdCBzPTEyOD09PW5bMF0mJjE9PT1uWzFdO2lmKHMpe3Quc2tpcCg2KTtyPW5bNV08PDI0fG5bNF08PDE2fG5bM108PDh8blsyXX1jb25zdCBvPWZ1bmN0aW9uIGdldEhlYWRlckJsb2NrKGUsdCl7Y29uc3QgYT1bMTAxLDEwMSwxMjAsMTAxLDk5XSxyPWUucG9zO2xldCBpLG4scyxvO3RyeXtpPWUuZ2V0Qnl0ZXModCk7bj1pLmxlbmd0aH1jYXRjaHt9aWYobj09PXQpe3M9ZmluZEJsb2NrKGksYSx0LTIqYS5sZW5ndGgpO2lmKHMuZm91bmQmJnMubGVuZ3RoPT09dClyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oaSksbGVuZ3RoOnR9fXdhcm4oJ0ludmFsaWQgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7ZS5wb3M9cjtmb3IoOzspe3M9ZmluZEJsb2NrKGUucGVla0J5dGVzKDIwNDgpLGEsMCk7aWYoMD09PXMubGVuZ3RoKWJyZWFrO2UucG9zKz1zLmxlbmd0aDtpZihzLmZvdW5kKXtvPWUucG9zLXI7YnJlYWt9fWUucG9zPXI7aWYobylyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyhvKSksbGVuZ3RoOm99O3dhcm4oJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKHQpKSxsZW5ndGg6dH19KHQscik7bmV3IFR5cGUxUGFyc2VyKG8uc3RyZWFtLCExLFJyKS5leHRyYWN0Rm9udEhlYWRlcihhKTtpZihzKXtuPXQuZ2V0Qnl0ZXMoNik7aT1uWzVdPDwyNHxuWzRdPDwxNnxuWzNdPDw4fG5bMl19Y29uc3QgYz1mdW5jdGlvbiBnZXRFZXhlY0Jsb2NrKGUsdCl7Y29uc3QgYT1lLmdldEJ5dGVzKCk7aWYoMD09PWEubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oYSksbGVuZ3RoOmEubGVuZ3RofX0odCksbD1uZXcgVHlwZTFQYXJzZXIoYy5zdHJlYW0sITAsUnIpLmV4dHJhY3RGb250UHJvZ3JhbShhKTtmb3IoY29uc3QgZSBpbiBsLnByb3BlcnRpZXMpYVtlXT1sLnByb3BlcnRpZXNbZV07Y29uc3QgaD1sLmNoYXJzdHJpbmdzLHU9dGhpcy5nZXRUeXBlMkNoYXJzdHJpbmdzKGgpLGQ9dGhpcy5nZXRUeXBlMlN1YnJzKGwuc3VicnMpO3RoaXMuY2hhcnN0cmluZ3M9aDt0aGlzLmRhdGE9dGhpcy53cmFwKGUsdSx0aGlzLmNoYXJzdHJpbmdzLGQsYSk7dGhpcy5zZWFjcz10aGlzLmdldFNlYWNzKGwuY2hhcnN0cmluZ3MpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGgrMX1nZXRDaGFyc2V0KCl7Y29uc3QgZT1bIi5ub3RkZWYiXTtmb3IoY29uc3R7Z2x5cGhOYW1lOnR9b2YgdGhpcy5jaGFyc3RyaW5ncyllLnB1c2godCk7cmV0dXJuIGV9Z2V0R2x5cGhNYXBwaW5nKGUpe2NvbnN0IHQ9dGhpcy5jaGFyc3RyaW5ncztpZihlLmNvbXBvc2l0ZSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgcj0wLGk9dC5sZW5ndGg7cjxpO3IrKyl7YVtlLmNNYXAuY2hhckNvZGVPZihyKV09cisxfXJldHVybiBhfWNvbnN0IGE9WyIubm90ZGVmIl07bGV0IHIsaTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKWEucHVzaCh0W2ldLmdseXBoTmFtZSk7Y29uc3Qgbj1lLmJ1aWx0SW5FbmNvZGluZztpZihuKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgaW4gbil7aT1hLmluZGV4T2YobltlXSk7aT49MCYmKHJbZV09aSl9fXJldHVybiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IGk7Zm9yKGk9MDtpPHQ7aSsrKXIucHVzaChbMTFdKTtmb3IoaT0wO2k8YTtpKyspci5wdXNoKGVbaV0pO3JldHVybiByfXdyYXAoZSx0LGEscixpKXtjb25zdCBuPW5ldyBDRkY7bi5oZWFkZXI9bmV3IENGRkhlYWRlcigxLDAsNCw0KTtuLm5hbWVzPVtlXTtjb25zdCBzPW5ldyBDRkZUb3BEaWN0O3Muc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO3Muc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7cy5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO3Muc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO3Muc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7cy5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtzLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KTtzLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCk7cy5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO3Muc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7cy5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO24udG9wRGljdD1zO2NvbnN0IG89bmV3IENGRlN0cmluZ3M7by5hZGQoIlZlcnNpb24gMC4xMSIpO28uYWRkKCJTZWUgb3JpZ2luYWwgbm90aWNlIik7by5hZGQoZSk7by5hZGQoZSk7by5hZGQoIk1lZGl1bSIpO24uc3RyaW5ncz1vO24uZ2xvYmFsU3VickluZGV4PW5ldyBDRkZJbmRleDtjb25zdCBjPXQubGVuZ3RoLGw9WyIubm90ZGVmIl07bGV0IGgsdTtmb3IoaD0wO2g8YztoKyspe2NvbnN0IGU9YVtoXS5nbHlwaE5hbWU7LTE9PT1Ici5pbmRleE9mKGUpJiZvLmFkZChlKTtsLnB1c2goZSl9bi5jaGFyc2V0PW5ldyBDRkZDaGFyc2V0KCExLDAsbCk7Y29uc3QgZD1uZXcgQ0ZGSW5kZXg7ZC5hZGQoWzEzOSwxNF0pO2ZvcihoPTA7aDxjO2grKylkLmFkZCh0W2hdKTtuLmNoYXJTdHJpbmdzPWQ7Y29uc3QgZj1uZXcgQ0ZGUHJpdmF0ZURpY3Q7Zi5zZXRCeU5hbWUoIlN1YnJzIixudWxsKTtjb25zdCBnPVsiQmx1ZVZhbHVlcyIsIk90aGVyQmx1ZXMiLCJGYW1pbHlCbHVlcyIsIkZhbWlseU90aGVyQmx1ZXMiLCJTdGVtU25hcEgiLCJTdGVtU25hcFYiLCJCbHVlU2hpZnQiLCJCbHVlRnV6eiIsIkJsdWVTY2FsZSIsIkxhbmd1YWdlR3JvdXAiLCJFeHBhbnNpb25GYWN0b3IiLCJGb3JjZUJvbGQiLCJTdGRIVyIsIlN0ZFZXIl07Zm9yKGg9MCx1PWcubGVuZ3RoO2g8dTtoKyspe2NvbnN0IGU9Z1toXTtpZighKGUgaW4gaS5wcml2YXRlRGF0YSkpY29udGludWU7Y29uc3QgdD1pLnByaXZhdGVEYXRhW2VdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPXQubGVuZ3RoLTE7ZT4wO2UtLSl0W2VdLT10W2UtMV07Zi5zZXRCeU5hbWUoZSx0KX1uLnRvcERpY3QucHJpdmF0ZURpY3Q9Zjtjb25zdCBwPW5ldyBDRkZJbmRleDtmb3IoaD0wLHU9ci5sZW5ndGg7aDx1O2grKylwLmFkZChyW2hdKTtmLnN1YnJzSW5kZXg9cDtyZXR1cm4gbmV3IENGRkNvbXBpbGVyKG4pLmNvbXBpbGUoKX19Y29uc3QgYmk9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHlpPTFlMyx3aT1bImFzY2VudCIsImJib3giLCJibGFjayIsImJvbGQiLCJjaGFyUHJvY09wZXJhdG9yTGlzdCIsImNzc0ZvbnRJbmZvIiwiZGF0YSIsImRlZmF1bHRWTWV0cmljcyIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiLCJkaXNhYmxlRm9udEZhY2UiLCJmYWxsYmFja05hbWUiLCJmb250RXh0cmFQcm9wZXJ0aWVzIiwiZm9udE1hdHJpeCIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibWlzc2luZ0ZpbGUiLCJuYW1lIiwicmVtZWFzdXJlIiwic3lzdGVtRm9udEluZm8iLCJ2ZXJ0aWNhbCJdLHhpPVsiY01hcCIsImNvbXBvc2l0ZSIsImRlZmF1bHRFbmNvZGluZyIsImRpZmZlcmVuY2VzIiwiaXNNb25vc3BhY2UiLCJpc1NlcmlmRm9udCIsImlzU3ltYm9saWNGb250Iiwic2VhY01hcCIsInN1YnR5cGUiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidHlwZSIsInZtZXRyaWNzIiwid2lkdGhzIl07ZnVuY3Rpb24gYWRqdXN0V2lkdGhzKGUpe2lmKCFlLmZvbnRNYXRyaXgpcmV0dXJuO2lmKGUuZm9udE1hdHJpeFswXT09PXRbMF0pcmV0dXJuO2NvbnN0IGE9LjAwMS9lLmZvbnRNYXRyaXhbMF0scj1lLndpZHRocztmb3IoY29uc3QgZSBpbiByKXJbZV0qPWE7ZS5kZWZhdWx0V2lkdGgqPWF9ZnVuY3Rpb24gYW1lbmRGYWxsYmFja1RvVW5pY29kZShlKXtpZighZS5mYWxsYmFja1RvVW5pY29kZSlyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBpbiBlLmZhbGxiYWNrVG9Vbmljb2RlKWUudG9Vbmljb2RlLmhhcyhhKXx8KHRbYV09ZS5mYWxsYmFja1RvVW5pY29kZVthXSk7dC5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQodCl9Y2xhc3MgZm9udHNfR2x5cGh7Y29uc3RydWN0b3IoZSx0LGEscixpLG4scyxvLGMpe3RoaXMub3JpZ2luYWxDaGFyQ29kZT1lO3RoaXMuZm9udENoYXI9dDt0aGlzLnVuaWNvZGU9YTt0aGlzLmFjY2VudD1yO3RoaXMud2lkdGg9aTt0aGlzLnZtZXRyaWM9bjt0aGlzLm9wZXJhdG9yTGlzdElkPXM7dGhpcy5pc1NwYWNlPW87dGhpcy5pc0luRm9udD1jfWdldCBjYXRlZ29yeSgpe3JldHVybiBzaGFkb3codGhpcywiY2F0ZWdvcnkiLGZ1bmN0aW9uIGdldENoYXJVbmljb2RlQ2F0ZWdvcnkoZSl7Y29uc3QgdD1Eci5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2goTXIpLHI9e2lzV2hpdGVzcGFjZTohIWE/LlsxXSxpc1plcm9XaWR0aERpYWNyaXRpYzohIWE/LlsyXSxpc0ludmlzaWJsZUZvcm1hdE1hcms6ISFhPy5bM119O0RyLnNldChlLHIpO3JldHVybiByfSh0aGlzLnVuaWNvZGUpLCEwKX19ZnVuY3Rpb24gaW50MTYoZSx0KXtyZXR1cm4oZTw8OCkrdH1mdW5jdGlvbiB3cml0ZVNpZ25lZEludDE2KGUsdCxhKXtlW3QrMV09YTtlW3RdPWE+Pj44fWZ1bmN0aW9uIHNpZ25lZEludDE2KGUsdCl7Y29uc3QgYT0oZTw8OCkrdDtyZXR1cm4gMzI3NjgmYT9hLTY1NTM2OmF9ZnVuY3Rpb24gc3RyaW5nMTYoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIHNhZmVTdHJpbmcxNihlKXtlPjMyNzY3P2U9MzI3Njc6ZTwtMzI3NjgmJihlPS0zMjc2OCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKXtyZXR1cm4idHRjZiI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6YSxjb21wb3NpdGU6cn0pe2xldCBpLG47aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT1yZWFkVWludDMyKHQsMCl8fCJ0cnVlIj09PWJ5dGVzVG9TdHJpbmcodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpaT1yPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtyZXR1cm4iT1RUTyI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX0oZSkpaT1yPyJDSURGb250VHlwZTIiOiJPcGVuVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc1R5cGUxRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDIpO3JldHVybiAzNz09PXRbMF0mJjMzPT09dFsxXXx8MTI4PT09dFswXSYmMT09PXRbMV19KGUpKWk9cj8iQ0lERm9udFR5cGUwIjoiTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO2Vsc2UgaWYoZnVuY3Rpb24gaXNDRkZGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIHRbMF0+PTEmJnRbM10+PTEmJnRbM108PTR9KGUpKWlmKHIpe2k9IkNJREZvbnRUeXBlMCI7bj0iQ0lERm9udFR5cGUwQyJ9ZWxzZXtpPSJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7bj0iVHlwZTFDIn1lbHNle3dhcm4oImdldEZvbnRGaWxlVHlwZTogVW5hYmxlIHRvIGRldGVjdCBjb3JyZWN0IGZvbnQgZmlsZSBUeXBlL1N1YnR5cGUuIik7aT10O249YX1yZXR1cm5baSxuXX1mdW5jdGlvbiBhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGUsdCl7Zm9yKGNvbnN0IGEgaW4gdCllWythXT10W2FdfWZ1bmN0aW9uIGJ1aWxkVG9Gb250Q2hhcihlLHQsYSl7Y29uc3Qgcj1bXTtsZXQgaTtmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspe2k9Z2V0VW5pY29kZUZvckdseXBoKGVbYV0sdCk7LTEhPT1pJiYoclthXT1pKX1mb3IoY29uc3QgZSBpbiBhKXtpPWdldFVuaWNvZGVGb3JHbHlwaChhW2VdLHQpOy0xIT09aSYmKHJbK2VdPWkpfXJldHVybiByfWZ1bmN0aW9uIGlzTWFjTmFtZVJlY29yZChlKXtyZXR1cm4gMT09PWUucGxhdGZvcm0mJjA9PT1lLmVuY29kaW5nJiYwPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBpc1dpbk5hbWVSZWNvcmQoZSl7cmV0dXJuIDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gY29udmVydENpZFN0cmluZyhlLHQsYT0hMSl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTw8OHx0LmNoYXJDb2RlQXQoMSl9Y29uc3Qgcj1gVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgJHtlfSk6ICIke3R9Ii5gO2lmKGEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKHIpO3dhcm4ocik7cmV0dXJuIHR9ZnVuY3Rpb24gYWRqdXN0TWFwcGluZyhlLHQsYSxyKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksbj1uZXcgTWFwLHM9W10sbz1uZXcgU2V0O2xldCBjPTA7bGV0IGw9YmlbY11bMF0saD1iaVtjXVsxXTtsZXQgdT1udWxsO2Zvcihjb25zdCBmIGluIGUpe2xldCBnPWVbZl07aWYoIXQoZykpY29udGludWU7aWYobD5oKXtjKys7aWYoYz49YmkubGVuZ3RoKXt3YXJuKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31sPWJpW2NdWzBdO2g9YmlbY11bMV19Y29uc3QgcD1sKys7MD09PWcmJihnPWEpO2xldCBtPXIuZ2V0KGYpO2lmKCJzdHJpbmciPT10eXBlb2YgbSlpZigxPT09bS5sZW5ndGgpbT1tLmNvZGVQb2ludEF0KDApO2Vsc2V7aWYoIXUpe3U9bmV3IE1hcDtmb3IobGV0IGU9NjQyNTY7ZTw9NjQzMzU7ZSsrKXtjb25zdCB0PVN0cmluZy5mcm9tQ2hhckNvZGUoZSkubm9ybWFsaXplKCJORktEIik7dC5sZW5ndGg+MSYmdS5zZXQodCxlKX19bT11LmdldChtKXx8bS5jb2RlUG9pbnRBdCgwKX1pZihtJiYhKGQ9bSxiaVswXVswXTw9ZCYmZDw9YmlbMF1bMV18fGJpWzFdWzBdPD1kJiZkPD1iaVsxXVsxXSkmJiFvLmhhcyhnKSl7bi5zZXQobSxnKTtvLmFkZChnKX1pW3BdPWc7c1tmXT1wfXZhciBkO3JldHVybnt0b0ZvbnRDaGFyOnMsY2hhckNvZGVUb0dseXBoSWQ6aSx0b1VuaWNvZGVFeHRyYU1hcDpuLG5leHRBdmFpbGFibGVGb250Q2hhckNvZGU6bH19ZnVuY3Rpb24gY3JlYXRlQ21hcFRhYmxlKGUsdCxhKXtjb25zdCByPWZ1bmN0aW9uIGdldFJhbmdlcyhlLHQsYSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgdCBpbiBlKWVbdF0+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOjB8dCxnbHlwaElkOmVbdF19KTtpZih0KWZvcihjb25zdFtlLGldb2YgdClpPj1hfHxyLnB1c2goe2ZvbnRDaGFyQ29kZTplLGdseXBoSWQ6aX0pOzA9PT1yLmxlbmd0aCYmci5wdXNoKHtmb250Q2hhckNvZGU6MCxnbHlwaElkOjB9KTtyLnNvcnQoKChlLHQpPT5lLmZvbnRDaGFyQ29kZS10LmZvbnRDaGFyQ29kZSkpO2NvbnN0IGk9W10sbj1yLmxlbmd0aDtmb3IobGV0IGU9MDtlPG47KXtjb25zdCB0PXJbZV0uZm9udENoYXJDb2RlLGE9W3JbZV0uZ2x5cGhJZF07KytlO2xldCBzPXQ7Zm9yKDtlPG4mJnMrMT09PXJbZV0uZm9udENoYXJDb2RlOyl7YS5wdXNoKHJbZV0uZ2x5cGhJZCk7KytzOysrZTtpZig2NTUzNT09PXMpYnJlYWt9aS5wdXNoKFt0LHMsYV0pfXJldHVybiBpfShlLHQsYSksaT1yLmF0KC0xKVsxXT42NTUzNT8yOjE7bGV0IG4scyxvLGMsbD0iXDBcMCIrc3RyaW5nMTYoaSkrIlwwA1wwASIrc3RyaW5nMzIoNCs4KmkpO2ZvcihuPXIubGVuZ3RoLTE7bj49MCYmIShyW25dWzBdPD02NTUzNSk7LS1uKTtjb25zdCBoPW4rMTtyW25dWzBdPDY1NTM1JiY2NTUzNT09PXJbbl1bMV0mJihyW25dWzFdPTY1NTM0KTtjb25zdCB1PXJbbl1bMV08NjU1MzU/MTowLGQ9aCt1LGY9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoZCwyKTtsZXQgZyxwLG0sYix5PSIiLHc9IiIseD0iIixTPSIiLGs9IiIsQz0wO2ZvcihuPTAscz1oO248cztuKyspe2c9cltuXTtwPWdbMF07bT1nWzFdO3krPXN0cmluZzE2KHApO3crPXN0cmluZzE2KG0pO2I9Z1syXTtsZXQgZT0hMDtmb3Iobz0xLGM9Yi5sZW5ndGg7bzxjOysrbylpZihiW29dIT09YltvLTFdKzEpe2U9ITE7YnJlYWt9aWYoZSl7eCs9c3RyaW5nMTYoYlswXS1wJjY1NTM1KTtTKz1zdHJpbmcxNigwKX1lbHNle2NvbnN0IGU9MiooZC1uKSsyKkM7Qys9bS1wKzE7eCs9c3RyaW5nMTYoMCk7Uys9c3RyaW5nMTYoZSk7Zm9yKG89MCxjPWIubGVuZ3RoO288YzsrK28pays9c3RyaW5nMTYoYltvXSl9fWlmKHU+MCl7dys9IsO/w78iO3krPSLDv8O/Ijt4Kz0iXDABIjtTKz0iXDBcMCJ9Y29uc3Qgdj0iXDBcMCIrc3RyaW5nMTYoMipkKStzdHJpbmcxNihmLnJhbmdlKStzdHJpbmcxNihmLmVudHJ5KStzdHJpbmcxNihmLnJhbmdlU2hpZnQpK3crIlwwXDAiK3kreCtTK2s7bGV0IEY9IiIsVD0iIjtpZihpPjEpe2wrPSJcMANcMFxuIitzdHJpbmczMig0KzgqaSs0K3YubGVuZ3RoKTtGPSIiO2ZvcihuPTAscz1yLmxlbmd0aDtuPHM7bisrKXtnPXJbbl07cD1nWzBdO2I9Z1syXTtsZXQgZT1iWzBdO2ZvcihvPTEsYz1iLmxlbmd0aDtvPGM7KytvKWlmKGJbb10hPT1iW28tMV0rMSl7bT1nWzBdK28tMTtGKz1zdHJpbmczMihwKStzdHJpbmczMihtKStzdHJpbmczMihlKTtwPW0rMTtlPWJbb119Ris9c3RyaW5nMzIocCkrc3RyaW5nMzIoZ1sxXSkrc3RyaW5nMzIoZSl9VD0iXDBcZlwwXDAiK3N0cmluZzMyKEYubGVuZ3RoKzE2KSsiXDBcMFwwXDAiK3N0cmluZzMyKEYubGVuZ3RoLzEyKX1yZXR1cm4gbCsiXDAEIitzdHJpbmcxNih2Lmxlbmd0aCs0KSt2K1QrRn1mdW5jdGlvbiBjcmVhdGVPUzJUYWJsZShlLHQsYSl7YXx8PXt1bml0c1BlckVtOjAseU1heDowLHlNaW46MCxhc2NlbnQ6MCxkZXNjZW50OjB9O2xldCByPTAsaT0wLG49MCxzPTAsbz1udWxsLGM9MCxsPS0xO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhvPmV8fCFvKSYmKG89ZSk7YzxlJiYoYz1lKTtsPWdldFVuaWNvZGVSYW5nZUZvcihlLGwpO2lmKGw8MzIpcnw9MTw8bDtlbHNlIGlmKGw8NjQpaXw9MTw8bC0zMjtlbHNlIGlmKGw8OTYpbnw9MTw8bC02NDtlbHNle2lmKCEobDwxMjMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7c3w9MTw8bC05Nn19Yz42NTUzNSYmKGM9NjU1MzUpfWVsc2V7bz0wO2M9MjU1fWNvbnN0IGg9ZS5iYm94fHxbMCwwLDAsMF0sdT1hLnVuaXRzUGVyRW18fChlLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5lLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMpLGQ9ZS5hc2NlbnRTY2FsZWQ/MTp1L3lpLGY9YS5hc2NlbnR8fE1hdGgucm91bmQoZCooZS5hc2NlbnR8fGhbM10pKTtsZXQgZz1hLmRlc2NlbnR8fE1hdGgucm91bmQoZCooZS5kZXNjZW50fHxoWzFdKSk7Zz4wJiZlLmRlc2NlbnQ+MCYmaFsxXTwwJiYoZz0tZyk7Y29uc3QgcD1hLnlNYXh8fGYsbT0tYS55TWlufHwtZztyZXR1cm4iXDADAiQBw7RcMAVcMFwwAsKKAsK7XDBcMFwwwowCwooCwrtcMFwwAcOfXHgwMDEBAlwwXDBcMFwwBiIrU3RyaW5nLmZyb21DaGFyQ29kZShlLmZpeGVkUGl0Y2g/OTowKSsiXDBcMFwwXDBcMFwwIitzdHJpbmczMihyKStzdHJpbmczMihpKStzdHJpbmczMihuKStzdHJpbmczMihzKSsiKjIxKiIrc3RyaW5nMTYoZS5pdGFsaWNBbmdsZT8xOjApK3N0cmluZzE2KG98fGUuZmlyc3RDaGFyKStzdHJpbmcxNihjfHxlLmxhc3RDaGFyKStzdHJpbmcxNihmKStzdHJpbmcxNihnKSsiXDBkIitzdHJpbmcxNihwKStzdHJpbmcxNihtKSsiXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYoZS54SGVpZ2h0KStzdHJpbmcxNihlLmNhcEhlaWdodCkrc3RyaW5nMTYoMCkrc3RyaW5nMTYob3x8ZS5maXJzdENoYXIpKyJcMAMifWZ1bmN0aW9uIGNyZWF0ZVBvc3RUYWJsZShlKXtyZXR1cm4iXDADXDBcMCIrc3RyaW5nMzIoTWF0aC5mbG9vcig2NTUzNiplLml0YWxpY0FuZ2xlKSkrIlwwXDBcMFwwIitzdHJpbmczMihlLmZpeGVkUGl0Y2g/MTowKSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAifWZ1bmN0aW9uIGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoL1teXHgyMS1ceDdFXXxbW1xdKCl7fTw+LyVdL2csIiIpLnNsaWNlKDAsNjMpfWZ1bmN0aW9uIGNyZWF0ZU5hbWVUYWJsZShlLHQpe3R8fCh0PVtbXSxbXV0pO2NvbnN0IGE9W3RbMF1bMF18fCJPcmlnaW5hbCBsaWNlbmNlIix0WzBdWzFdfHxlLHRbMF1bMl18fCJVbmtub3duIix0WzBdWzNdfHwidW5pcXVlSUQiLHRbMF1bNF18fGUsdFswXVs1XXx8IlZlcnNpb24gMC4xMSIsdFswXVs2XXx8Y3JlYXRlUG9zdHNjcmlwdE5hbWUoZSksdFswXVs3XXx8IlVua25vd24iLHRbMF1bOF18fCJVbmtub3duIix0WzBdWzldfHwiVW5rbm93biJdLHI9W107bGV0IGksbixzLG8sYztmb3IoaT0wLG49YS5sZW5ndGg7aTxuO2krKyl7Yz10WzFdW2ldfHxhW2ldO2NvbnN0IGU9W107Zm9yKHM9MCxvPWMubGVuZ3RoO3M8bztzKyspZS5wdXNoKHN0cmluZzE2KGMuY2hhckNvZGVBdChzKSkpO3IucHVzaChlLmpvaW4oIiIpKX1jb25zdCBsPVthLHJdLGg9WyJcMAEiLCJcMAMiXSx1PVsiXDBcMCIsIlwwASJdLGQ9WyJcMFwwIiwiBFx0Il0sZj1hLmxlbmd0aCpoLmxlbmd0aDtsZXQgZz0iXDBcMCIrc3RyaW5nMTYoZikrc3RyaW5nMTYoMTIqZis2KSxwPTA7Zm9yKGk9MCxuPWgubGVuZ3RoO2k8bjtpKyspe2NvbnN0IGU9bFtpXTtmb3Iocz0wLG89ZS5sZW5ndGg7czxvO3MrKyl7Yz1lW3NdO2crPWhbaV0rdVtpXStkW2ldK3N0cmluZzE2KHMpK3N0cmluZzE2KGMubGVuZ3RoKStzdHJpbmcxNihwKTtwKz1jLmxlbmd0aH19Zys9YS5qb2luKCIiKStyLmpvaW4oIiIpO3JldHVybiBnfWNsYXNzIEZvbnR7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5uYW1lPWU7dGhpcy5wc05hbWU9bnVsbDt0aGlzLm1pbWV0eXBlPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9ci5kaXNhYmxlRm9udEZhY2U7dGhpcy5mb250RXh0cmFQcm9wZXJ0aWVzPXIuZm9udEV4dHJhUHJvcGVydGllczt0aGlzLmxvYWRlZE5hbWU9YS5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9YS5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89YS5jc3NGb250SW5mbzt0aGlzLl9jaGFyc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZ2x5cGhDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBpPSEhKGEuZmxhZ3MmRXIpO2lmKCFpJiYhYS5pc1NpbXVsYXRlZEZsYWdzKXtjb25zdCB0PWUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikuc3BsaXQoIi0iLDEpWzBdLGE9UXIoKTtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIrIikpaWYoYVtlXSl7aT0hMDticmVha319dGhpcy5pc1NlcmlmRm9udD1pO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoYS5mbGFncyZQcik7dGhpcy5pc01vbm9zcGFjZT0hIShhLmZsYWdzJk5yKTtsZXR7dHlwZTpuLHN1YnR5cGU6c309YTt0aGlzLnR5cGU9bjt0aGlzLnN1YnR5cGU9czt0aGlzLnN5c3RlbUZvbnRJbmZvPWEuc3lzdGVtRm9udEluZm87Y29uc3Qgbz1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW87dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9b1sxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWEuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9YS5jb21wb3NpdGU7dGhpcy5jTWFwPWEuY01hcDt0aGlzLmNhcEhlaWdodD1hLmNhcEhlaWdodC95aTt0aGlzLmFzY2VudD1hLmFzY2VudC95aTt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L3lpO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWEuZm9udE1hdHJpeDt0aGlzLmJib3g9YS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWEuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09YS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGEuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWEuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFhLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9YS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1hLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1bbixzXT1nZXRGb250RmlsZVR5cGUodCxhKTtuPT09dGhpcy50eXBlJiZzPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke259LyR7c30uYCk7bGV0IGM7dHJ5e3N3aXRjaChuKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IHI9IlR5cGUxQyI9PT1zfHwiQ0lERm9udFR5cGUwQyI9PT1zP25ldyBDRkZGb250KHQsYSk6bmV3IFR5cGUxRm9udChlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO2M9dGhpcy5jb252ZXJ0KGUscixhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Yz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxhKTthZGp1c3RXaWR0aHMoYSk7dGhpcy5pc09wZW5UeXBlJiYobj0iT3BlblR5cGUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgRm9udCAke259IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7d2FybihlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGEpO3RoaXMuZGF0YT1jO3RoaXMudHlwZT1uO3RoaXMuc3VidHlwZT1zO3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPWEuc2VhY01hcH1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJlbmRlcmVyIixGb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLFJyKSl9ZXhwb3J0RGF0YSgpe2NvbnN0IGU9dGhpcy5mb250RXh0cmFQcm9wZXJ0aWVzP1suLi53aSwuLi54aV06d2ksdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpc1thXTt2b2lkIDAhPT1lJiYodFthXT1lKX1yZXR1cm4gdH1mYWxsYmFja1RvU3lzdGVtRm9udChlKXt0aGlzLm1pc3NpbmdGaWxlPSEwO2NvbnN0e25hbWU6dCx0eXBlOmF9PXRoaXM7bGV0IHI9bm9ybWFsaXplRm9udE5hbWUodCk7Y29uc3QgaT1KcigpLG49WnIoKSxzPSEhaVtyXSxvPSEoIW5bcl18fCFpW25bcl1dKTtyPWlbcl18fG5bcl18fHI7Y29uc3QgYz1uaSgpW3JdO2lmKGMpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWMuYXNjZW50L3lpKTtpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PWMuZGVzY2VudC95aSk7aXNOYU4odGhpcy5jYXBIZWlnaHQpJiYodGhpcy5jYXBIZWlnaHQ9Yy5jYXBIZWlnaHQveWkpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KHIpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KHIpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCBsPS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghc3x8bCkmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigoc3x8bykmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgYT1lLmNpZFRvR2lkTWFwLHI9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLHRpKCkpOy9BcmlhbC0/QmxhY2svaS50ZXN0KHQpP2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAocixhaSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAocixyaSgpKTtpZihhKXtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07dm9pZCAwIT09YVt0XSYmKHJbK2VdPWFbdF0pfWEubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2NvbnN0IGk9cltlXTt2b2lkIDA9PT1hW2ldJiYoclsrZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtyWytlXT10fSkpO3RoaXMudG9Gb250Q2hhcj1yO3RoaXMudG9Vbmljb2RlPW5ldyBUb1VuaWNvZGVNYXAocil9ZWxzZSBpZigvU3ltYm9sL2kudGVzdChyKSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKENyLEZyKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZigvRGluZ2JhdHMvaS50ZXN0KHIpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIodnIsSXIoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKHN8fG8pe2NvbnN0IGU9YnVpbGRUb0ZvbnRDaGFyKHRoaXMuZGVmYXVsdEVuY29kaW5nLEZyKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1hfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2VbK3RdPWF9KSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPUZyKCksYT1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCgodCxyKT0+e2lmKCF0aGlzLmNvbXBvc2l0ZSl7Y29uc3QgYT1nZXRVbmljb2RlRm9yR2x5cGgodGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sZSk7LTEhPT1hJiYocj1hKX1hWyt0XT1yfSkpO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiYvVGFob21hfFZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsdGkoKSk7dGhpcy50b0ZvbnRDaGFyPWF9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9ci5zcGxpdCgiLSIsMSlbMF19Y2hlY2tBbmRSZXBhaXIoZSx0LGEpe2NvbnN0IHI9WyJPUy8yIiwiY21hcCIsImhlYWQiLCJoaGVhIiwiaG10eCIsIm1heHAiLCJuYW1lIiwicG9zdCIsImxvY2EiLCJnbHlmIiwiZnBnbSIsInByZXAiLCJjdnQgIiwiQ0ZGICJdO2Z1bmN0aW9uIHJlYWRUYWJsZXMoZSx0KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7YVsiT1MvMiJdPW51bGw7YS5jbWFwPW51bGw7YS5oZWFkPW51bGw7YS5oaGVhPW51bGw7YS5obXR4PW51bGw7YS5tYXhwPW51bGw7YS5uYW1lPW51bGw7YS5wb3N0PW51bGw7Zm9yKGxldCBpPTA7aTx0O2krKyl7Y29uc3QgdD1yZWFkVGFibGVFbnRyeShlKTtyLmluY2x1ZGVzKHQudGFnKSYmKDAhPT10Lmxlbmd0aCYmKGFbdC50YWddPXQpKX1yZXR1cm4gYX1mdW5jdGlvbiByZWFkVGFibGVFbnRyeShlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAsaT1lLmdldEludDMyKCk+Pj4wLG49ZS5wb3M7ZS5wb3M9ZS5zdGFydHx8MDtlLnNraXAocik7Y29uc3Qgcz1lLmdldEJ5dGVzKGkpO2UucG9zPW47aWYoImhlYWQiPT09dCl7c1s4XT1zWzldPXNbMTBdPXNbMTFdPTA7c1sxN118PTMyfXJldHVybnt0YWc6dCxjaGVja3N1bTphLGxlbmd0aDppLG9mZnNldDpyLGRhdGE6c319ZnVuY3Rpb24gcmVhZE9wZW5UeXBlSGVhZGVyKGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gc2FuaXRpemVHbHlwaChlLHQsYSxyLGksbil7Y29uc3Qgcz17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fGE+ZS5sZW5ndGh8fGEtdDw9MTIpcmV0dXJuIHM7Y29uc3Qgbz1lLnN1YmFycmF5KHQsYSksYz1zaWduZWRJbnQxNihvWzJdLG9bM10pLGw9c2lnbmVkSW50MTYob1s0XSxvWzVdKSxoPXNpZ25lZEludDE2KG9bNl0sb1s3XSksdT1zaWduZWRJbnQxNihvWzhdLG9bOV0pO2lmKGM+aCl7d3JpdGVTaWduZWRJbnQxNihvLDIsaCk7d3JpdGVTaWduZWRJbnQxNihvLDYsYyl9aWYobD51KXt3cml0ZVNpZ25lZEludDE2KG8sNCx1KTt3cml0ZVNpZ25lZEludDE2KG8sOCxsKX1jb25zdCBkPXNpZ25lZEludDE2KG9bMF0sb1sxXSk7aWYoZDwwKXtpZihkPC0xKXJldHVybiBzO3Iuc2V0KG8saSk7cy5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIHN9bGV0IGYsZz0xMCxwPTA7Zm9yKGY9MDtmPGQ7ZisrKXtwPShvW2ddPDw4fG9bZysxXSkrMTtnKz0yfWNvbnN0IG09ZyxiPW9bZ108PDh8b1tnKzFdO3Muc2l6ZU9mSW5zdHJ1Y3Rpb25zPWI7Zys9MitiO2NvbnN0IHk9ZztsZXQgdz0wO2ZvcihmPTA7ZjxwO2YrKyl7Y29uc3QgZT1vW2crK107MTkyJmUmJihvW2ctMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCBhPTI7NCZlP2E9MTozMiZlJiYoYT0wKTtjb25zdCByPXQrYTt3Kz1yO2lmKDgmZSl7Y29uc3QgZT1vW2crK107MD09PWUmJihvW2ctMV1ePTgpO2YrPWU7dys9ZSpyfX1pZigwPT09dylyZXR1cm4gcztsZXQgeD1nK3c7aWYoeD5vLmxlbmd0aClyZXR1cm4gcztpZighbiYmYj4wKXtyLnNldChvLnN1YmFycmF5KDAsbSksaSk7ci5zZXQoWzAsMF0saSttKTtyLnNldChvLnN1YmFycmF5KHkseCksaSttKzIpO3gtPWI7by5sZW5ndGgteD4zJiYoeD14KzMmLTQpO3MubGVuZ3RoPXg7cmV0dXJuIHN9aWYoby5sZW5ndGgteD4zKXt4PXgrMyYtNDtyLnNldChvLnN1YmFycmF5KDAseCksaSk7cy5sZW5ndGg9eDtyZXR1cm4gc31yLnNldChvLGkpO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCByPVtbXSxbXV0saT1bXSxuPWUubGVuZ3RoLHM9YStuO2lmKDAhPT10LmdldFVpbnQxNigpfHxuPDYpcmV0dXJuW3IsaV07Y29uc3Qgbz10LmdldFVpbnQxNigpLGM9dC5nZXRVaW50MTYoKTtsZXQgbCxoO2ZvcihsPTA7bDxvJiZ0LnBvcysxMjw9cztsKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KGlzTWFjTmFtZVJlY29yZChlKXx8aXNXaW5OYW1lUmVjb3JkKGUpKSYmaS5wdXNoKGUpfWZvcihsPTAsaD1pLmxlbmd0aDtsPGg7bCsrKXtjb25zdCBlPWlbbF07aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3Qgbj1hK2MrZS5vZmZzZXQ7aWYobitlLmxlbmd0aD5zKWNvbnRpbnVlO3QucG9zPW47Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IGE9IiI7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cis9MilhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO3JbMV1bb109YX1lbHNlIHJbMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVybltyLGldfWNvbnN0IGk9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbShlLHQpe2xldCBhLHIsbixzLG8sYz1lLmRhdGEsbD0wLGg9MCx1PTA7Y29uc3QgZD1bXSxmPVtdLGc9W107bGV0IHA9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsbT0hMSxiPTAseT0wO2ZvcihsZXQgZT1jLmxlbmd0aDtsPGU7KXtjb25zdCBlPWNbbCsrXTtpZig2ND09PWUpe3I9Y1tsKytdO2lmKG18fHkpbCs9cjtlbHNlIGZvcihhPTA7YTxyO2ErKylkLnB1c2goY1tsKytdKX1lbHNlIGlmKDY1PT09ZSl7cj1jW2wrK107aWYobXx8eSlsKz0yKnI7ZWxzZSBmb3IoYT0wO2E8cjthKyspe249Y1tsKytdO2QucHVzaChuPDw4fGNbbCsrXSl9fWVsc2UgaWYoMTc2PT0oMjQ4JmUpKXtyPWUtMTc2KzE7aWYobXx8eSlsKz1yO2Vsc2UgZm9yKGE9MDthPHI7YSsrKWQucHVzaChjW2wrK10pfWVsc2UgaWYoMTg0PT0oMjQ4JmUpKXtyPWUtMTg0KzE7aWYobXx8eSlsKz0yKnI7ZWxzZSBmb3IoYT0wO2E8cjthKyspe249Y1tsKytdO2QucHVzaChzaWduZWRJbnQxNihuLGNbbCsrXSkpfX1lbHNlIGlmKDQzIT09ZXx8cClpZig0NCE9PWV8fHApe2lmKDQ1PT09ZSlpZihtKXttPSExO2g9bH1lbHNle289Zi5wb3AoKTtpZighbyl7d2FybigiVFQ6IEVOREYgYmFkIHN0YWNrIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1zPWcucG9wKCk7Yz1vLmRhdGE7bD1vLmk7dC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXT1kLmxlbmd0aC1vLnN0YWNrVG9wfWVsc2UgaWYoMTM3PT09ZSl7aWYobXx8eSl7d2FybigiVFQ6IG5lc3RlZCBJREVGcyBub3QgYWxsb3dlZCIpO3A9ITB9bT0hMDt1PWx9ZWxzZSBpZig4OD09PWUpKytiO2Vsc2UgaWYoMjc9PT1lKXk9YjtlbHNlIGlmKDg5PT09ZSl7eT09PWImJih5PTApOy0tYn1lbHNlIGlmKDI4PT09ZSYmIW0mJiF5KXtjb25zdCBlPWQuYXQoLTEpO2U+MCYmKGwrPWUtMSl9fWVsc2V7aWYobXx8eSl7d2FybigiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpO3A9ITB9bT0hMDt1PWw7cz1kLnBvcCgpO3QuZnVuY3Rpb25zRGVmaW5lZFtzXT17ZGF0YTpjLGk6bH19ZWxzZSBpZighbSYmIXkpe3M9ZC5hdCgtMSk7aWYoaXNOYU4ocykpaW5mbygiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2V7dC5mdW5jdGlvbnNVc2VkW3NdPSEwO2lmKHMgaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT1kLmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW3NdO2lmKGU8MCl7d2FybigiVFQ6IENBTEwgaW52YWxpZCBmdW5jdGlvbnMgc3RhY2sgZGVsdGEuIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1kLmxlbmd0aD1lfWVsc2UgaWYocyBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFnLmluY2x1ZGVzKHMpKXtmLnB1c2goe2RhdGE6YyxpOmwsc3RhY2tUb3A6ZC5sZW5ndGgtMX0pO2cucHVzaChzKTtvPXQuZnVuY3Rpb25zRGVmaW5lZFtzXTtpZighbyl7d2FybigiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1jPW8uZGF0YTtsPW8uaX19fWlmKCFtJiYheSl7bGV0IHQ9MDtlPD0xNDI/dD1pW2VdOmU+PTE5MiYmZTw9MjIzP3Q9LTE6ZT49MjI0JiYodD0tMik7aWYoZT49MTEzJiZlPD0xMTcpe3I9ZC5wb3AoKTtpc05hTihyKXx8KHQ9Miotcil9Zm9yKDt0PDAmJmQubGVuZ3RoPjA7KXtkLnBvcCgpO3QrK31mb3IoO3Q+MDspe2QucHVzaChOYU4pO3QtLX19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPXA7Y29uc3Qgdz1bY107bD5jLmxlbmd0aCYmdy5wdXNoKG5ldyBVaW50OEFycmF5KGwtYy5sZW5ndGgpKTtpZih1Pmgpe3dhcm4oIlRUOiBjb21wbGVtZW50aW5nIGEgbWlzc2luZyBmdW5jdGlvbiB0YWlsIik7dy5wdXNoKG5ldyBVaW50OEFycmF5KFszNCw0NV0pKX0hZnVuY3Rpb24gZm9sZFRUVGFibGUoZSx0KXtpZih0Lmxlbmd0aD4xKXtsZXQgYSxyLGk9MDtmb3IoYT0wLHI9dC5sZW5ndGg7YTxyO2ErKylpKz10W2FdLmxlbmd0aDtpPWkrMyYtNDtjb25zdCBuPW5ldyBVaW50OEFycmF5KGkpO2xldCBzPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe24uc2V0KHRbYV0scyk7cys9dFthXS5sZW5ndGh9ZS5kYXRhPW47ZS5sZW5ndGg9aX19KGUsdyl9bGV0IG4scyxvLGM7aWYoaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKHQ9bmV3IFN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOnJ9PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTthc3NlcnQoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCkscj1lLmdldFVpbnQxNigpLGk9ZS5nZXRJbnQzMigpPj4+MCxuPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspbi5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IHM9e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpyLG51bUZvbnRzOmksb2Zmc2V0VGFibGU6bn07c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gcztjYXNlIDI6cy5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7cy5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7cy5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIHN9dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFRydWVUeXBlIENvbGxlY3Rpb24gbWFqb3JWZXJzaW9uOiAke2F9LmApfShlKSxpPXQuc3BsaXQoIisiKTtsZXQgbjtmb3IobGV0IHM9MDtzPGE7cysrKXtlLnBvcz0oZS5zdGFydHx8MCkrcltzXTtjb25zdCBhPXJlYWRPcGVuVHlwZUhlYWRlcihlKSxvPXJlYWRUYWJsZXMoZSxhLm51bVRhYmxlcyk7aWYoIW8ubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1RydWVUeXBlIENvbGxlY3Rpb24gZm9udCBtdXN0IGNvbnRhaW4gYSAibmFtZSIgdGFibGUuJyk7Y29uc3RbY109cmVhZE5hbWVUYWJsZShvLm5hbWUpO2ZvcihsZXQgZT0wLHI9Yy5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxzPWNbZV0ubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9Y1tlXVtyXT8ucmVwbGFjZUFsbCgvXHMvZywiIik7aWYocyl7aWYocz09PXQpcmV0dXJue2hlYWRlcjphLHRhYmxlczpvfTtpZighKGkubGVuZ3RoPDIpKWZvcihjb25zdCBlIG9mIGkpcz09PWUmJihuPXtuYW1lOmUsaGVhZGVyOmEsdGFibGVzOm99KX19fWlmKG4pe3dhcm4oYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udCwgZmFsbGluZyBiYWNrIHRvICIke24ubmFtZX0iIGZvbnQgaW5zdGVhZC5gKTtyZXR1cm57aGVhZGVyOm4uaGVhZGVyLHRhYmxlczpuLnRhYmxlc319dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIiR7dH0iIGZvbnQuYCl9KHQsdGhpcy5uYW1lKTtuPWUuaGVhZGVyO3M9ZS50YWJsZXN9ZWxzZXtuPXJlYWRPcGVuVHlwZUhlYWRlcih0KTtzPXJlYWRUYWJsZXModCxuLm51bVRhYmxlcyl9Y29uc3QgbD0hc1siQ0ZGICJdO2lmKGwpe2lmKCFzLmxvY2EpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIXMuZ2x5Zil7d2FybignUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtzLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7Y29uc3QgdD1hLmNvbXBvc2l0ZSYmKGEuY2lkVG9HaWRNYXA/Lmxlbmd0aD4wfHwhKGEuY01hcCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcCkpO2lmKCJPVFRPIj09PW4udmVyc2lvbiYmIXR8fCFzLmhlYWR8fCFzLmhoZWF8fCFzLm1heHB8fCFzLnBvc3Qpe2M9bmV3IFN0cmVhbShzWyJDRkYgIl0uZGF0YSk7bz1uZXcgQ0ZGRm9udChjLGEpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxvLGEpfWRlbGV0ZSBzLmdseWY7ZGVsZXRlIHMubG9jYTtkZWxldGUgcy5mcGdtO2RlbGV0ZSBzLnByZXA7ZGVsZXRlIHNbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIXMubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrcy5tYXhwLm9mZnNldDtsZXQgaD10LmdldEludDMyKCk7Y29uc3QgdT10LmdldFVpbnQxNigpO2lmKDY1NTM2IT09aCYmMjA0ODAhPT1oKXtpZig2PT09cy5tYXhwLmxlbmd0aCloPTIwNDgwO2Vsc2V7aWYoIShzLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtoPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsYSl7ZVt0KzNdPTI1NSZhO2VbdCsyXT1hPj4+ODtlW3QrMV09YT4+PjE2O2VbdF09YT4+PjI0fShzLm1heHAuZGF0YSwwLGgpfWlmKGEuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT11JiZsKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09YSx0PWludDE2KHMuaGVhZC5kYXRhWzUwXSxzLmhlYWQuZGF0YVs1MV0pLHI9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOnMuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOnMubG9jYS5kYXRhLG51bUdseXBoczp1fSk7ci5zY2FsZShlKTtjb25zdHtnbHlmOmksbG9jYTpuLGlzTG9jYXRpb25Mb25nOm99PXIud3JpdGUoKTtzLmdseWYuZGF0YT1pO3MubG9jYS5kYXRhPW47aWYobyE9PSEhdCl7cy5oZWFkLmRhdGFbNTBdPTA7cy5oZWFkLmRhdGFbNTFdPW8/MTowfWNvbnN0IGM9cy5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDx1O3QrKyl7Y29uc3QgYT00KnQscj1NYXRoLnJvdW5kKGVbdF0qaW50MTYoY1thXSxjW2ErMV0pKTtjW2FdPXI+PjgmMjU1O2NbYSsxXT0yNTUmcjt3cml0ZVNpZ25lZEludDE2KGMsYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihjW2ErMl0sY1thKzNdKSkpfX1sZXQgZD11KzEsZj0hMDtpZihkPjY1NTM1KXtmPSExO2Q9dTt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgZz0wLHA9MDtpZihoPj02NTUzNiYmcy5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7cy5tYXhwLmRhdGFbMTRdPTA7cy5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7Zz10LmdldFVpbnQxNigpO3QucG9zKz00O3A9dC5nZXRVaW50MTYoKX1zLm1heHAuZGF0YVs0XT1kPj44O3MubWF4cC5kYXRhWzVdPTI1NSZkO2NvbnN0IG09ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxhLHIpe2NvbnN0IGk9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxpKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LGkpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGE9MCxyPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7YTxyO2ErKyl7aWYoYT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFthXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFthXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KGkscik7aWYoYSYmMSZhLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsxKTtlLnNldChhLmRhdGEpO2EuZGF0YT1lfXJldHVybiBpLmhpbnRzVmFsaWR9KHMuZnBnbSxzLnByZXAsc1siY3Z0ICJdLGcpO2lmKCFtKXtkZWxldGUgcy5mcGdtO2RlbGV0ZSBzLnByZXA7ZGVsZXRlIHNbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxhLHIsaSxuKXtpZighdCl7YSYmKGEuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IHM9ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1zKXtpZighKDImaW50MTYoci5kYXRhWzQ0XSxyLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+aSl7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtpfSkuYCk7bz1pO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgYz1pLW8tKGEubGVuZ3RoLTQqbz4+MSk7aWYoYz4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzIqYyk7ZS5zZXQoYS5kYXRhKTtpZihuKXtlW2EubGVuZ3RoXT1hLmRhdGFbMl07ZVthLmxlbmd0aCsxXT1hLmRhdGFbM119YS5kYXRhPWV9fSh0LHMuaGhlYSxzLmhtdHgscy5oZWFkLGQsZik7aWYoIXMuaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxhKXtjb25zdCByPWUuZGF0YSxpPWZ1bmN0aW9uIGludDMyKGUsdCxhLHIpe3JldHVybihlPDwyNCkrKHQ8PDE2KSsoYTw8OCkrcn0oclswXSxyWzFdLHJbMl0sclszXSk7aWYoaT4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK2kpO3JbMF09MDtyWzFdPTE7clsyXT0wO3JbM109MH1jb25zdCBuPWludDE2KHJbNTBdLHJbNTFdKTtpZihuPDB8fG4+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrbik7Y29uc3QgZT10KzE7aWYoYT09PWU8PDEpe3JbNTBdPTA7cls1MV09MH1lbHNle2lmKGEhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK24pO3JbNTBdPTA7cls1MV09MX19fShzLmhlYWQsdSxsP3MubG9jYS5sZW5ndGg6MCk7bGV0IGI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihsKXtjb25zdCBlPWludDE2KHMuaGVhZC5kYXRhWzUwXSxzLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsYSxyLGksbixzKXtsZXQgbyxjLGw7aWYocil7bz00O2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07bD1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGEpe2VbdF09YT4+PjI0JjI1NTtlW3QrMV09YT4+MTYmMjU1O2VbdCsyXT1hPj44JjI1NTtlW3QrM109MjU1JmF9fWVsc2V7bz0yO2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGEpe2VbdF09YT4+OSYyNTU7ZVt0KzFdPWE+PjEmMjU1fX1jb25zdCBoPW4/YSsxOmEsdT1vKigxK2gpLGQ9bmV3IFVpbnQ4QXJyYXkodSk7ZC5zZXQoZS5kYXRhLnN1YmFycmF5KDAsdSkpO2UuZGF0YT1kO2NvbnN0IGY9dC5kYXRhLGc9Zi5sZW5ndGgscD1uZXcgVWludDhBcnJheShnKTtsZXQgbSxiO2NvbnN0IHk9W107Zm9yKG09MCxiPTA7bTxhKzE7bSsrLGIrPW8pe2xldCBlPWMoZCxiKTtlPmcmJihlPWcpO3kucHVzaCh7aW5kZXg6bSxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXkuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKG09MDttPGE7bSsrKXlbbV0uZW5kT2Zmc2V0PXlbbSsxXS5vZmZzZXQ7eS5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKG09MDttPGE7bSsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09eVttXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgYT15W20rMV0ub2Zmc2V0O2lmKDAhPT1hKXt5W21dLmVuZE9mZnNldD1hO2JyZWFrfX1jb25zdCB3PXkuYXQoLTIpOzAhPT13Lm9mZnNldCYmMD09PXcuZW5kT2Zmc2V0JiYody5lbmRPZmZzZXQ9Zyk7Y29uc3QgeD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBTPTA7bChkLDAsUyk7Zm9yKG09MCxiPW87bTxhO20rKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoZix5W21dLm9mZnNldCx5W21dLmVuZE9mZnNldCxwLFMsaSksdD1lLmxlbmd0aDswPT09dCYmKHhbbV09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPnMmJihzPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtTKz10O2woZCxiLFMpfWlmKDA9PT1TKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihtPTAsYj1vO208aDttKyssYis9bylsKGQsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihuKXtjb25zdCBhPWMoZCxvKTtpZihwLmxlbmd0aD5hK1MpdC5kYXRhPXAuc3ViYXJyYXkoMCxhK1MpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErUyk7dC5kYXRhLnNldChwLnN1YmFycmF5KDAsUykpfXQuZGF0YS5zZXQocC5zdWJhcnJheSgwLGEpLFMpO2woZS5kYXRhLGQubGVuZ3RoLW8sUythKX1lbHNlIHQuZGF0YT1wLnN1YmFycmF5KDAsUyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eCxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6c319KHMubG9jYSxzLmdseWYsdSxlLG0sZixwKTtiPXQubWlzc2luZ0dseXBocztpZihoPj02NTUzNiYmcy5tYXhwLmxlbmd0aD49MzIpe3MubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtzLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighcy5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1zLmhoZWEuZGF0YVsxMF0mJjA9PT1zLmhoZWEuZGF0YVsxMV0pe3MuaGhlYS5kYXRhWzEwXT0yNTU7cy5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCB5PXt1bml0c1BlckVtOmludDE2KHMuaGVhZC5kYXRhWzE4XSxzLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYocy5oZWFkLmRhdGFbNDJdLHMuaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihzLmhlYWQuZGF0YVszOF0scy5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYocy5oaGVhLmRhdGFbNF0scy5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYocy5oaGVhLmRhdGFbNl0scy5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYocy5oaGVhLmRhdGFbOF0scy5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD15LmFzY2VudC95LnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXkuZGVzY2VudC95LnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXkubGluZUdhcC95LnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO3MucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGEscil7Y29uc3QgaT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9aTtjb25zdCBuPWkrZS5sZW5ndGgscz10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxjLGw9ITA7c3dpdGNoKHMpe2Nhc2UgNjU1MzY6bz1qcjticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PXIpe2w9ITE7YnJlYWt9Y29uc3QgaT1bXTtmb3IoYz0wO2M8ZTsrK2Mpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7bD0hMTticmVha31pLnB1c2goZSl9aWYoIWwpYnJlYWs7Y29uc3QgaD1bXSx1PVtdO2Zvcig7dC5wb3M8bjspe2NvbnN0IGU9dC5nZXRCeXRlKCk7dS5sZW5ndGg9ZTtmb3IoYz0wO2M8ZTsrK2MpdVtjXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtoLnB1c2godS5qb2luKCIiKSl9bz1bXTtmb3IoYz0wO2M8ZTsrK2Mpe2NvbnN0IGU9aVtjXTtlPDI1OD9vLnB1c2goanJbZV0pOm8ucHVzaChoW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK3MpO2w9ITE7YS5kZWZhdWx0RW5jb2RpbmcmJihvPWEuZGVmYXVsdEVuY29kaW5nKX1hLmdseXBoTmFtZXM9bztyZXR1cm4gbH0ocy5wb3N0LGEsdSk7cy5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGEpfTtjb25zdCB3PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWJbZV19aWYoYS5jb21wb3NpdGUpe2NvbnN0IGU9YS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7YS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGEscil7InN0cmluZyI9PXR5cGVvZiByJiYocj1jb252ZXJ0Q2lkU3RyaW5nKGEsciwhMCkpO2lmKHI+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IGk9LTE7dD9pPXI6dm9pZCAwIT09ZVtyXSYmKGk9ZVtyXSk7aT49MCYmaTx1JiZoYXNHbHlwaChpKSYmKHdbYV09aSl9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGEscil7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgaSxuPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1uO3Quc2tpcCgyKTtjb25zdCBzPXQuZ2V0VWludDE2KCk7bGV0IG8sYz0hMTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBpPXQuZ2V0VWludDE2KCksbj10LmdldFVpbnQxNigpLGw9dC5nZXRJbnQzMigpPj4+MDtsZXQgaD0hMTtpZihvPy5wbGF0Zm9ybUlkIT09aXx8bz8uZW5jb2RpbmdJZCE9PW4pe2lmKDAhPT1pfHwwIT09biYmMSE9PW4mJjMhPT1uKWlmKDE9PT1pJiYwPT09biloPSEwO2Vsc2UgaWYoMyE9PWl8fDEhPT1ufHwhciYmbyl7aWYoYSYmMz09PWkmJjA9PT1uKXtoPSEwO2xldCBhPSEwO2lmKGU8cy0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8aSYmKGE9ITEpfWEmJihjPSEwKX19ZWxzZXtoPSEwO2F8fChjPSEwKX1lbHNlIGg9ITA7aCYmKG89e3BsYXRmb3JtSWQ6aSxlbmNvZGluZ0lkOm4sb2Zmc2V0Omx9KTtpZihjKWJyZWFrfX1vJiYodC5wb3M9bitvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBsPXQuZ2V0VWludDE2KCk7bGV0IGg9ITE7Y29uc3QgdT1bXTtsZXQgZCxmO2lmKDA9PT1sKXt0LnNraXAoNCk7Zm9yKGQ9MDtkPDI1NjtkKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmdS5wdXNoKHtjaGFyQ29kZTpkLGdseXBoSWQ6ZX0pfWg9ITB9ZWxzZSBpZigyPT09bCl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2NvbnN0IHI9dC5nZXRVaW50MTYoKT4+MztlLnB1c2gocik7YT1NYXRoLm1heChyLGEpfWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspci5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKWlmKDA9PT1lW2FdKXt0LnBvcz1yWzBdLmlkUmFuZ2VQb3MrMiphO2Y9dC5nZXRVaW50MTYoKTt1LnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpmfSl9ZWxzZXtjb25zdCBpPXJbZVthXV07Zm9yKGQ9MDtkPGkuZW50cnlDb3VudDtkKyspe2NvbnN0IGU9KGE8PDgpK2QraS5maXJzdENvZGU7dC5wb3M9aS5pZFJhbmdlUG9zKzIqZDtmPXQuZ2V0VWludDE2KCk7MCE9PWYmJihmPShmK2kuaWREZWx0YSklNjU1MzYpO3UucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOmZ9KX19fWVsc2UgaWYoND09PWwpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPGU7cisrKWEucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKHI9MDtyPGU7cisrKWFbcl0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3Iocj0wO3I8ZTtyKyspYVtyXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBzLG89MDtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtjb25zdCBuPXQuZ2V0VWludDE2KCk7aWYobil7cz0obj4+MSktKGUtcik7aS5vZmZzZXRJbmRleD1zO289TWF0aC5tYXgobyxzK2kuZW5kLWkuc3RhcnQrMSl9ZWxzZSBpLm9mZnNldEluZGV4PS0xfWNvbnN0IGM9W107Zm9yKGQ9MDtkPG87ZCsrKWMucHVzaCh0LmdldFVpbnQxNigpKTtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtuPWkuc3RhcnQ7Y29uc3QgZT1pLmVuZCx0PWkuZGVsdGE7cz1pLm9mZnNldEluZGV4O2ZvcihkPW47ZDw9ZTtkKyspaWYoNjU1MzUhPT1kKXtmPXM8MD9kOmNbcytkLW5dO2Y9Zit0JjY1NTM1O3UucHVzaCh7Y2hhckNvZGU6ZCxnbHlwaElkOmZ9KX19fWVsc2UgaWYoNj09PWwpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksYT10LmdldFVpbnQxNigpO2ZvcihkPTA7ZDxhO2QrKyl7Zj10LmdldFVpbnQxNigpO2NvbnN0IGE9ZStkO3UucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOmZ9KX19ZWxzZXtpZigxMiE9PWwpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitsKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihkPTA7ZDxlO2QrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGE9dC5nZXRJbnQzMigpPj4+MDtsZXQgcj10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWE7dCsrKXUucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOnIrK30pfX19dS5zb3J0KCgoZSx0KT0+ZS5jaGFyQ29kZS10LmNoYXJDb2RlKSk7Y29uc3QgZz1bXSxwPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgdSl7Y29uc3R7Y2hhckNvZGU6dH09ZTtpZighcC5oYXModCkpe3AuYWRkKHQpO2cucHVzaChlKX19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmcsaGFzU2hvcnRDbWFwOmh9fShzLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGEuaGFzRW5jb2RpbmcpLHI9ZS5wbGF0Zm9ybUlkLGk9ZS5lbmNvZGluZ0lkLG49ZS5tYXBwaW5ncztsZXQgbz1bXSxjPSExOyFhLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhhLmJhc2VFbmNvZGluZ05hbWUpKTtpZihhLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1yJiYxPT09aXx8MT09PXImJjA9PT1pKSl7Y29uc3QgZT1GcigpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IHM7cz12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOmtyW3RdO2lmKCFzKWNvbnRpbnVlO2NvbnN0IGM9cmVjb3ZlckdseXBoTmFtZShzLGUpO2xldCBsOzM9PT1yJiYxPT09aT9sPWVbY106MT09PXImJjA9PT1pJiYobD1Tci5pbmRleE9mKGMpKTtpZih2b2lkIDA9PT1sKXtpZighYS5nbHlwaE5hbWVzJiZhLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYobD1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1sKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIG4paWYoZS5jaGFyQ29kZT09PWwpe3dbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09cil7Zm9yKGNvbnN0IGUgb2Ygbil3W2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtjPSEwfWVsc2UgaWYoMz09PXImJjA9PT1pKWZvcihjb25zdCBlIG9mIG4pe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTt3W3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIG4pd1tlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoYS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFjJiZ2b2lkIDAhPT13W2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCByPWEuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO3I+MCYmaGFzR2x5cGgocikmJih3W2VdPXIpfX0wPT09dy5sZW5ndGgmJih3WzBdPTApO2xldCB4PWQtMTtmfHwoeD0wKTtpZighYS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKHcsaGFzR2x5cGgseCx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtzLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLGQpfTtzWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgYT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3Qgcj10LmdldFVpbnQxNigpO2lmKGE8NCYmNzY4JnIpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KHNbIk9TLzIiXSx0KXx8KHNbIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGEsZS5jaGFyQ29kZVRvR2x5cGhJZCx5KX0pfWlmKCFsKXRyeXtjPW5ldyBTdHJlYW0oc1siQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihjLGEsUnIpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7c1siQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2EubG9hZGVkTmFtZSl9aWYocy5uYW1lKXtjb25zdFt0LHJdPXJlYWROYW1lVGFibGUocy5uYW1lKTtzLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2EuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsYSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1hLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1BcilyZXR1cm47Zm9yKGNvbnN0IGUgb2YgYSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCByPUFyLGk9W10sbj1GcigpO2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgYT1uW3RdO3ZvaWQgMCE9PWEmJihpW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWkubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGkpfShhLHRoaXMuaXNTeW1ib2xpY0ZvbnQscil9ZWxzZSBzLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgUz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihuLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIHMpUy5hZGRUYWJsZShlLHNbZV0uZGF0YSk7cmV0dXJuIFMudG9BcnJheSgpfWNvbnZlcnQoZSxhLHIpe3IuZml4ZWRQaXRjaD0hMTtyLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGE9W10scj1GcigpO2Zvcihjb25zdCBpIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbaV0pKWNvbnRpbnVlO2NvbnN0IG49Z2V0VW5pY29kZUZvckdseXBoKHRbaV0scik7LTEhPT1uJiYoYVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pKX1hLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChhKX0ocixyLmJ1aWx0SW5FbmNvZGluZyk7bGV0IGk9MTthIGluc3RhbmNlb2YgQ0ZGRm9udCYmKGk9YS5udW1HbHlwaHMtMSk7Y29uc3Qgbj1hLmdldEdseXBoTWFwcGluZyhyKTtsZXQgcz1udWxsLG89bixjPW51bGw7aWYoIXIuY3NzRm9udEluZm8pe3M9YWRqdXN0TWFwcGluZyhuLGEuaGFzR2x5cGhJZC5iaW5kKGEpLGksdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1zLnRvRm9udENoYXI7bz1zLmNoYXJDb2RlVG9HbHlwaElkO2M9cy50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBsPWEubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBhPW51bGw7Zm9yKGNvbnN0IHIgaW4gZSl0PT09ZVtyXSYmKGF8fD1bXSkucHVzaCgwfHIpO3JldHVybiBhfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGEgaW4gZSlpZih0PT09ZVthXSlyZXR1cm4gMHxhO3MuY2hhckNvZGVUb0dseXBoSWRbcy5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBzLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBoPWEuc2VhY3M7aWYocyYmaD8ubGVuZ3RoKXtjb25zdCBlPXIuZm9udE1hdHJpeHx8dCxpPWEuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gaCl7dHw9MDtjb25zdCBhPWhbdF0scj1rclthWzJdXSxjPWtyW2FbM11dLGw9aS5pbmRleE9mKHIpLHU9aS5pbmRleE9mKGMpO2lmKGw8MHx8dTwwKWNvbnRpbnVlO2NvbnN0IGQ9e3g6YVswXSplWzBdK2FbMV0qZVsyXStlWzRdLHk6YVswXSplWzFdK2FbMV0qZVszXStlWzVdfSxmPWdldENoYXJDb2RlcyhuLHQpO2lmKGYpZm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1zLmNoYXJDb2RlVG9HbHlwaElkLGE9Y3JlYXRlQ2hhckNvZGUodCxsKSxyPWNyZWF0ZUNoYXJDb2RlKHQsdSk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTphLGFjY2VudEZvbnRDaGFyQ29kZTpyLGFjY2VudE9mZnNldDpkfX19ci5zZWFjTWFwPW99Y29uc3QgdT1yLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5yLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsZD1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO2QuYWRkVGFibGUoIkNGRiAiLGEuZGF0YSk7ZC5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUocixvKSk7ZC5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sYyxsKSk7ZC5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNih1KSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihyLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihyLmFzY2VudCkrc3RyaW5nMTYoci5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTtkLmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KHIuYXNjZW50KStzYWZlU3RyaW5nMTYoci5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihyLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKHIuaXRhbGljQW5nbGUpKnIueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYobCkpO2QuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT1hLmNoYXJzdHJpbmdzLHQ9YS5jZmY/YS5jZmYud2lkdGhzOm51bGw7bGV0IHI9IlwwXDBcMFwwIjtmb3IobGV0IGE9MSxpPWw7YTxpO2ErKyl7bGV0IGk9MDtpZihlKXtjb25zdCB0PWVbYS0xXTtpPSJ3aWR0aCJpbiB0P3Qud2lkdGg6MH1lbHNlIHQmJihpPU1hdGguY2VpbCh0W2FdfHwwKSk7cis9c3RyaW5nMTYoaSkrc3RyaW5nMTYoMCl9cmV0dXJuIHJ9KCkpO2QuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihsKSk7ZC5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTtkLmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUocikpO3JldHVybiBkLnRvQXJyYXkoKX1nZXQgX3NwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGEgb2YgZSl7aWYoYSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1thXTticmVha31jb25zdCBlPUZyKClbYV07bGV0IHI9MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpKXtyPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiByJiYocj1jb252ZXJ0Q2lkU3RyaW5nKGUscikpfSFyJiZ0aGlzLnRvVW5pY29kZSYmKHI9dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKSk7cjw9MCYmKHI9ZSk7dD10aGlzLndpZHRoc1tyXTtpZih0KWJyZWFrfXJldHVybiBzaGFkb3codGhpcywiX3NwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxyLGksbj10aGlzLl9nbHlwaENhY2hlW2VdO2lmKG4/LmlzU3BhY2U9PT10KXJldHVybiBuO2xldCBzPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7cz10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgcyYmKHM9Y29udmVydENpZFN0cmluZyhlLHMpKX1yPXRoaXMud2lkdGhzW3NdOyJudW1iZXIiIT10eXBlb2YgciYmKHI9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW3NdO2xldCBjPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGMmJihjPVN0cmluZy5mcm9tQ2hhckNvZGUoYykpO2xldCBsPXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTthPXRoaXMudG9Gb250Q2hhcltlXXx8ZTtpZih0aGlzLm1pc3NpbmdGaWxlKXtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdO2lmKCgiLm5vdGRlZiI9PT10fHwiIj09PXQpJiYiVHlwZTEiPT09dGhpcy50eXBlKXthPTMyO2lmKCIiPT09dCl7cnx8PXRoaXMuX3NwYWNlV2lkdGg7Yz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpfX1hPWZ1bmN0aW9uIG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/VHIoKVtlXXx8ZToxNzM9PT1lPzQ1OmV9KGEpfXRoaXMuaXNUeXBlM0ZvbnQmJihpPWEpO2xldCBoPW51bGw7aWYodGhpcy5zZWFjTWFwPy5bZV0pe2w9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07YT10LmJhc2VGb250Q2hhckNvZGU7aD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IHU9IiI7Im51bWJlciI9PXR5cGVvZiBhJiYoYTw9MTExNDExMT91PVN0cmluZy5mcm9tQ29kZVBvaW50KGEpOndhcm4oYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7YX1gKSk7aWYodGhpcy5taXNzaW5nRmlsZSYmdGhpcy52ZXJ0aWNhbCYmMT09PXUubGVuZ3RoKXtjb25zdCBlPV9yKClbdS5jaGFyQ29kZUF0KDApXTtlJiYodT1jPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfW49bmV3IGZvbnRzX0dseXBoKGUsdSxjLGgscixvLGksdCxsKTtyZXR1cm4gdGhpcy5fZ2x5cGhDYWNoZVtlXT1ufWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy5fY2hhcnNDYWNoZVtlXTtpZih0KXJldHVybiB0O3Q9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscj1lLmxlbmd0aDtsZXQgaT0wO2Zvcig7aTxyOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLGksYSk7Y29uc3R7Y2hhcmNvZGU6cixsZW5ndGg6bn09YTtpKz1uO2NvbnN0IHM9dGhpcy5fY2hhclRvR2x5cGgociwxPT09biYmMzI9PT1lLmNoYXJDb2RlQXQoaS0xKSk7dC5wdXNoKHMpfX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoYSksaT10aGlzLl9jaGFyVG9HbHlwaChyLDMyPT09cik7dC5wdXNoKGkpfXJldHVybiB0aGlzLl9jaGFyc0NhY2hlW2VdPXR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByPTA7Zm9yKDtyPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLHIsYSk7Y29uc3QgaT1hLmxlbmd0aDt0LnB1c2goW3IscitpXSk7cis9aX19ZWxzZSBmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2EpdC5wdXNoKFthLGErMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fZ2x5cGhDYWNoZSl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10sYT1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLHI9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuO2krKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KGkpO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmaSsrO2lmKHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPXIobik7aWYoLTEhPT1lKXtpZihoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWZvcihsZXQgdD0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aChlKToxKS0xO3Q+PTA7dC0tKWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgqdCYyNTUpKTtjb250aW51ZX19aWYoIWhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGEuam9pbigiIikpO2EubGVuZ3RoPTB9YS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KG4pKX10LnB1c2goYS5qb2luKCIiKSk7cmV0dXJuIHR9fWNsYXNzIEVycm9yRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWU7dGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiO3RoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YSgpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19Y29uc3QgU2k9MixraT0zLEFpPTQsQ2k9NSx2aT02LEZpPTc7Y2xhc3MgUGF0dGVybntjb25zdHJ1Y3Rvcigpe3VucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBQYXR0ZXJuLiIpfXN0YXRpYyBwYXJzZVNoYWRpbmcoZSx0LGEscixpLG4pe2NvbnN0IHM9ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZS5kaWN0OmUsbz1zLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG8pe2Nhc2UgU2k6Y2FzZSBraTpyZXR1cm4gbmV3IFJhZGlhbEF4aWFsU2hhZGluZyhzLHQsYSxyLGksbik7Y2FzZSBBaTpjYXNlIENpOmNhc2Ugdmk6Y2FzZSBGaTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxhLHIsaSxuKTtkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5zdXBwb3J0ZWQgU2hhZGluZ1R5cGU6ICIrbyl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oZSk7cmV0dXJuIG5ldyBEdW1teVNoYWRpbmd9fX1jbGFzcyBCYXNlU2hhZGluZ3tzdGF0aWMgU01BTExfTlVNQkVSPTFlLTY7Z2V0SVIoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRJUmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tjb25zdHJ1Y3RvcihlLHQsYSxyLGksbil7c3VwZXIoKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2xldCBzPTA7dGhpcy5zaGFkaW5nVHlwZT09PVNpP3M9NDp0aGlzLnNoYWRpbmdUeXBlPT09a2kmJihzPTYpO3RoaXMuY29vcmRzQXJyPWUuZ2V0QXJyYXkoIkNvb3JkcyIpO2lmKCFpc051bWJlckFycmF5KHRoaXMuY29vcmRzQXJyLHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUmFkaWFsQXhpYWxTaGFkaW5nOiBJbnZhbGlkIC9Db29yZHMgYXJyYXkuIik7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBjPTAsbD0xO2NvbnN0IGg9ZS5nZXRBcnJheSgiRG9tYWluIik7aXNOdW1iZXJBcnJheShoLDIpJiYoW2MsbF09aCk7bGV0IHU9ITEsZD0hMTtjb25zdCBmPWUuZ2V0QXJyYXkoIkV4dGVuZCIpOyhmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoKGU9PiJib29sZWFuIj09dHlwZW9mIGUpKX0pKGYsMikmJihbdSxkXT1mKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1raXx8dSYmZCkpe2NvbnN0W2UsdCxhLHIsaSxuXT10aGlzLmNvb3Jkc0FycixzPU1hdGguaHlwb3QoZS1yLHQtaSk7YTw9bitzJiZuPD1hK3MmJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PXU7dGhpcy5leHRlbmRFbmQ9ZDtjb25zdCBnPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLHA9ci5jcmVhdGUoZywhMCksbT0obC1jKS84NDAsYj10aGlzLmNvbG9yU3RvcHM9W107aWYoYz49bHx8bTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCB5PW5ldyBGbG9hdDMyQXJyYXkoby5udW1Db21wcyksdz1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCB4PTA7d1swXT1jO3AodywwLHksMCk7Y29uc3QgUz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7by5nZXRSZ2IoeSwwLFMpO2xldFtrLEMsdl09UztiLnB1c2goWzAsVXRpbC5tYWtlSGV4Q29sb3IoayxDLHYpXSk7bGV0IEY9MTt3WzBdPWMrbTtwKHcsMCx5LDApO28uZ2V0UmdiKHksMCxTKTtsZXRbVCxPLE1dPVMsRD1ULWsrMSxSPU8tQysxLE49TS12KzEsRT1ULWstMSxMPU8tQy0xLGo9TS12LTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXt3WzBdPWMrZSptO3AodywwLHksMCk7by5nZXRSZ2IoeSwwLFMpO2NvbnN0W3QsYSxyXT1TLGk9ZS14O0Q9TWF0aC5taW4oRCwodC1rKzEpL2kpO1I9TWF0aC5taW4oUiwoYS1DKzEpL2kpO049TWF0aC5taW4oTiwoci12KzEpL2kpO0U9TWF0aC5tYXgoRSwodC1rLTEpL2kpO0w9TWF0aC5tYXgoTCwoYS1DLTEpL2kpO2o9TWF0aC5tYXgoaiwoci12LTEpL2kpO2lmKCEoRTw9RCYmTDw9UiYmajw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoVCxPLE0pO2IucHVzaChbRi84NDAsZV0pO0Q9dC1UKzE7Uj1hLU8rMTtOPXItTSsxO0U9dC1ULTE7TD1hLU8tMTtqPXItTS0xO3g9RjtrPVQ7Qz1PO3Y9TX1GPWU7VD10O089YTtNPXJ9Yi5wdXNoKFsxLFV0aWwubWFrZUhleENvbG9yKFQsTyxNKV0pO2xldCBfPSJ0cmFuc3BhcmVudCI7ZS5oYXMoIkJhY2tncm91bmQiKSYmKF89by5nZXRSZ2JIZXgoZS5nZXQoIkJhY2tncm91bmQiKSwwKSk7aWYoIXUpe2IudW5zaGlmdChbMCxfXSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFkKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSxfXSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdHtjb29yZHNBcnI6ZSxzaGFkaW5nVHlwZTp0fT10aGlzO2xldCBhLHIsaSxuLHM7aWYodD09PVNpKXtyPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07bj1udWxsO3M9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09a2kpe3I9W2VbMF0sZVsxXV07aT1bZVszXSxlWzRdXTtuPWVbMl07cz1lWzVdO2E9InJhZGlhbCJ9ZWxzZSB1bnJlYWNoYWJsZShgZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICR7dH1gKTtyZXR1cm5bIlJhZGlhbEF4aWFsIixhLHRoaXMuYmJveCx0aGlzLmNvbG9yU3RvcHMscixpLG4sc119fWNsYXNzIE1lc2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMuY29udGV4dD10O3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MDtjb25zdCBhPXQubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KGEpO2NvbnN0IHI9dC5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMudG1wQ3NDb21wc0J1Zj10LmNvbG9yRm4/bmV3IEZsb2F0MzJBcnJheShyKTp0aGlzLnRtcENvbXBzQnVmfWdldCBoYXNEYXRhKCl7aWYodGhpcy5zdHJlYW0uZW5kKXJldHVybiB0aGlzLnN0cmVhbS5wb3M8dGhpcy5zdHJlYW0uZW5kO2lmKHRoaXMuYnVmZmVyTGVuZ3RoPjApcmV0dXJuITA7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7aWYoZTwwKXJldHVybiExO3RoaXMuYnVmZmVyPWU7dGhpcy5idWZmZXJMZW5ndGg9ODtyZXR1cm4hMH1yZWFkQml0cyhlKXtjb25zdHtzdHJlYW06dH09dGhpcztsZXR7YnVmZmVyOmEsYnVmZmVyTGVuZ3RoOnJ9PXRoaXM7aWYoMzI9PT1lKXtpZigwPT09cilyZXR1cm4gdC5nZXRJbnQzMigpPj4+MDthPWE8PDI0fHQuZ2V0Qnl0ZSgpPDwxNnx0LmdldEJ5dGUoKTw8OHx0LmdldEJ5dGUoKTtjb25zdCBlPXQuZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PHIpLTE7cmV0dXJuKGE8PDgtcnwoMjU1JmUpPj5yKT4+PjB9aWYoOD09PWUmJjA9PT1yKXJldHVybiB0LmdldEJ5dGUoKTtmb3IoO3I8ZTspe2E9YTw8OHx0LmdldEJ5dGUoKTtyKz04fXItPWU7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLmJ1ZmZlcj1hJigxPDxyKS0xO3JldHVybiBhPj5yfWFsaWduKCl7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wfXJlYWRGbGFnKCl7cmV0dXJuIHRoaXMucmVhZEJpdHModGhpcy5jb250ZXh0LmJpdHNQZXJGbGFnKX1yZWFkQ29vcmRpbmF0ZSgpe2NvbnN0e2JpdHNQZXJDb29yZGluYXRlOmUsZGVjb2RlOnR9PXRoaXMuY29udGV4dCxhPXRoaXMucmVhZEJpdHMoZSkscj10aGlzLnJlYWRCaXRzKGUpLGk9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDtyZXR1cm5bYSppKih0WzFdLXRbMF0pK3RbMF0scippKih0WzNdLXRbMl0pK3RbMl1dfXJlYWRDb21wb25lbnRzKCl7Y29uc3R7Yml0c1BlckNvbXBvbmVudDplLGNvbG9yRm46dCxjb2xvclNwYWNlOmEsZGVjb2RlOnIsbnVtQ29tcHM6aX09dGhpcy5jb250ZXh0LG49ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxzPXRoaXMudG1wQ29tcHNCdWY7Zm9yKGxldCB0PTAsYT00O3Q8aTt0KyssYSs9Mil7Y29uc3QgaT10aGlzLnJlYWRCaXRzKGUpO3NbdF09aSpuKihyW2ErMV0tclthXSkrclthXX1jb25zdCBvPXRoaXMudG1wQ3NDb21wc0J1Zjt0Py4ocywwLG8sMCk7cmV0dXJuIGEuZ2V0UmdiKG8sMCl9fWxldCBJaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldEIoZSl7cmV0dXJuIElpW2VdfHw9ZnVuY3Rpb24gYnVpbGRCKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTA7YTw9ZTthKyspe2NvbnN0IHI9YS9lLGk9MS1yO3QucHVzaChuZXcgRmxvYXQzMkFycmF5KFtpKiozLDMqcippKioyLDMqcioqMippLHIqKjNdKSl9cmV0dXJuIHR9KGUpfWNsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTM7c3RhdGljIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTIwO3N0YXRpYyBUUklBTkdMRV9ERU5TSVRZPTIwO2NvbnN0cnVjdG9yKGUsdCxhLHIsaSxuKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG89Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczpzLmdldFJhdygiQ1MiKXx8cy5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5OnIsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pO3RoaXMuYmFja2dyb3VuZD1zLmhhcygiQmFja2dyb3VuZCIpP28uZ2V0UmdiKHMuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6bnVsbDtjb25zdCBjPXMuZ2V0UmF3KCJGdW5jdGlvbiIpLGw9Yz9yLmNyZWF0ZShjLCEwKTpudWxsO3RoaXMuY29vcmRzPVtdO3RoaXMuY29sb3JzPVtdO3RoaXMuZmlndXJlcz1bXTtjb25zdCBoPXtiaXRzUGVyQ29vcmRpbmF0ZTpzLmdldCgiQml0c1BlckNvb3JkaW5hdGUiKSxiaXRzUGVyQ29tcG9uZW50OnMuZ2V0KCJCaXRzUGVyQ29tcG9uZW50IiksYml0c1BlckZsYWc6cy5nZXQoIkJpdHNQZXJGbGFnIiksZGVjb2RlOnMuZ2V0QXJyYXkoIkRlY29kZSIpLGNvbG9yRm46bCxjb2xvclNwYWNlOm8sbnVtQ29tcHM6bD8xOm8ubnVtQ29tcHN9LHU9bmV3IE1lc2hTdHJlYW1SZWFkZXIoZSxoKTtsZXQgZD0hMTtzd2l0Y2godGhpcy5zaGFkaW5nVHlwZSl7Y2FzZSBBaTp0aGlzLl9kZWNvZGVUeXBlNFNoYWRpbmcodSk7YnJlYWs7Y2FzZSBDaTpjb25zdCBlPTB8cy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBWZXJ0aWNlc1BlclJvdyIpO3RoaXMuX2RlY29kZVR5cGU1U2hhZGluZyh1LGUpO2JyZWFrO2Nhc2Ugdmk6dGhpcy5fZGVjb2RlVHlwZTZTaGFkaW5nKHUpO2Q9ITA7YnJlYWs7Y2FzZSBGaTp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcodSk7ZD0hMDticmVhaztkZWZhdWx0OnVucmVhY2hhYmxlKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYoZCl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPVtdLGk9W107bGV0IG49MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpLG89ZS5yZWFkQ29vcmRpbmF0ZSgpLGM9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1uKXtpZighKDA8PXMmJnM8PTIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNCBmbGFnIik7c3dpdGNoKHMpe2Nhc2UgMDpuPTM7YnJlYWs7Y2FzZSAxOmkucHVzaChpLmF0KC0yKSxpLmF0KC0xKSk7bj0xO2JyZWFrO2Nhc2UgMjppLnB1c2goaS5hdCgtMyksaS5hdCgtMSkpO249MX1yLnB1c2gocyl9aS5wdXNoKHQubGVuZ3RoKTt0LnB1c2gobyk7YS5wdXNoKGMpO24tLTtlLmFsaWduKCl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InRyaWFuZ2xlcyIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGkpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKX0pfV9kZWNvZGVUeXBlNVNoYWRpbmcoZSx0KXtjb25zdCBhPXRoaXMuY29vcmRzLHI9dGhpcy5jb2xvcnMsaT1bXTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHQ9ZS5yZWFkQ29vcmRpbmF0ZSgpLG49ZS5yZWFkQ29tcG9uZW50cygpO2kucHVzaChhLmxlbmd0aCk7YS5wdXNoKHQpO3IucHVzaChuKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToibGF0dGljZSIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGkpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKSx2ZXJ0aWNlc1BlclJvdzp0fSl9X2RlY29kZVR5cGU2U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG49ZS5yZWFkRmxhZygpO2lmKCEoMDw9biYmbjw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU2IGZsYWciKTtjb25zdCBzPXQubGVuZ3RoO2ZvcihsZXQgYT0wLHI9MCE9PW4/ODoxMjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09bj8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgYyxsLGgsdTtzd2l0Y2gobil7Y2FzZSAwOnJbMTJdPXMrMztyWzEzXT1zKzQ7clsxNF09cys1O3JbMTVdPXMrNjtyWzhdPXMrMjtyWzExXT1zKzc7cls0XT1zKzE7cls3XT1zKzg7clswXT1zO3JbMV09cysxMTtyWzJdPXMrMTA7clszXT1zKzk7aVsyXT1vKzE7aVszXT1vKzI7aVswXT1vO2lbMV09byszO2JyZWFrO2Nhc2UgMTpjPXJbMTJdO2w9clsxM107aD1yWzE0XTt1PXJbMTVdO3JbMTJdPXU7clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1oO3JbMTFdPXMrMztyWzRdPWw7cls3XT1zKzQ7clswXT1jO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2M9aVsyXTtsPWlbM107aVsyXT1sO2lbM109bztpWzBdPWM7aVsxXT1vKzE7YnJlYWs7Y2FzZSAyOmM9clsxNV07bD1yWzExXTtyWzEyXT1yWzNdO3JbMTNdPXMrMDtyWzE0XT1zKzE7clsxNV09cysyO3JbOF09cls3XTtyWzExXT1zKzM7cls0XT1sO3JbN109cys0O3JbMF09YztyWzFdPXMrNztyWzJdPXMrNjtyWzNdPXMrNTtjPWlbM107aVsyXT1pWzFdO2lbM109bztpWzBdPWM7aVsxXT1vKzE7YnJlYWs7Y2FzZSAzOnJbMTJdPXJbMF07clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1yWzFdO3JbMTFdPXMrMztyWzRdPXJbMl07cls3XT1zKzQ7clswXT1yWzNdO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2lbMl09aVswXTtpWzNdPW87aVswXT1pWzFdO2lbMV09bysxfXJbNV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtyWzBdXVswXS10W3JbMTVdXVswXSs2Kih0W3JbNF1dWzBdK3RbclsxXV1bMF0pLTIqKHRbclsxMl1dWzBdK3RbclszXV1bMF0pKzMqKHRbclsxM11dWzBdK3Rbcls3XV1bMF0pKS85LCgtNCp0W3JbMF1dWzFdLXRbclsxNV1dWzFdKzYqKHRbcls0XV1bMV0rdFtyWzFdXVsxXSktMioodFtyWzEyXV1bMV0rdFtyWzNdXVsxXSkrMyoodFtyWzEzXV1bMV0rdFtyWzddXVsxXSkpLzldKTtyWzZdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbclszXV1bMF0tdFtyWzEyXV1bMF0rNioodFtyWzJdXVswXSt0W3JbN11dWzBdKS0yKih0W3JbMF1dWzBdK3RbclsxNV1dWzBdKSszKih0W3JbNF1dWzBdK3RbclsxNF1dWzBdKSkvOSwoLTQqdFtyWzNdXVsxXS10W3JbMTJdXVsxXSs2Kih0W3JbMl1dWzFdK3Rbcls3XV1bMV0pLTIqKHRbclswXV1bMV0rdFtyWzE1XV1bMV0pKzMqKHRbcls0XV1bMV0rdFtyWzE0XV1bMV0pKS85XSk7cls5XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W3JbMTJdXVswXS10W3JbM11dWzBdKzYqKHRbcls4XV1bMF0rdFtyWzEzXV1bMF0pLTIqKHRbclswXV1bMF0rdFtyWzE1XV1bMF0pKzMqKHRbclsxMV1dWzBdK3RbclsxXV1bMF0pKS85LCgtNCp0W3JbMTJdXVsxXS10W3JbM11dWzFdKzYqKHRbcls4XV1bMV0rdFtyWzEzXV1bMV0pLTIqKHRbclswXV1bMV0rdFtyWzE1XV1bMV0pKzMqKHRbclsxMV1dWzFdK3RbclsxXV1bMV0pKS85XSk7clsxMF09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtyWzE1XV1bMF0tdFtyWzBdXVswXSs2Kih0W3JbMTFdXVswXSt0W3JbMTRdXVswXSktMioodFtyWzEyXV1bMF0rdFtyWzNdXVswXSkrMyoodFtyWzJdXVswXSt0W3JbOF1dWzBdKSkvOSwoLTQqdFtyWzE1XV1bMV0tdFtyWzBdXVsxXSs2Kih0W3JbMTFdXVsxXSt0W3JbMTRdXVsxXSktMioodFtyWzEyXV1bMV0rdFtyWzNdXVsxXSkrMyoodFtyWzJdXVsxXSt0W3JbOF1dWzFdKSkvOV0pO3RoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJwYXRjaCIsY29vcmRzOm5ldyBJbnQzMkFycmF5KHIpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKX0pfX1fZGVjb2RlVHlwZTdTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgbj1lLnJlYWRGbGFnKCk7aWYoISgwPD1uJiZuPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IHM9dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09bj8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09bj8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgYyxsLGgsdTtzd2l0Y2gobil7Y2FzZSAwOnJbMTJdPXMrMztyWzEzXT1zKzQ7clsxNF09cys1O3JbMTVdPXMrNjtyWzhdPXMrMjtyWzldPXMrMTM7clsxMF09cysxNDtyWzExXT1zKzc7cls0XT1zKzE7cls1XT1zKzEyO3JbNl09cysxNTtyWzddPXMrODtyWzBdPXM7clsxXT1zKzExO3JbMl09cysxMDtyWzNdPXMrOTtpWzJdPW8rMTtpWzNdPW8rMjtpWzBdPW87aVsxXT1vKzM7YnJlYWs7Y2FzZSAxOmM9clsxMl07bD1yWzEzXTtoPXJbMTRdO3U9clsxNV07clsxMl09dTtyWzEzXT1zKzA7clsxNF09cysxO3JbMTVdPXMrMjtyWzhdPWg7cls5XT1zKzk7clsxMF09cysxMDtyWzExXT1zKzM7cls0XT1sO3JbNV09cys4O3JbNl09cysxMTtyWzddPXMrNDtyWzBdPWM7clsxXT1zKzc7clsyXT1zKzY7clszXT1zKzU7Yz1pWzJdO2w9aVszXTtpWzJdPWw7aVszXT1vO2lbMF09YztpWzFdPW8rMTticmVhaztjYXNlIDI6Yz1yWzE1XTtsPXJbMTFdO3JbMTJdPXJbM107clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1yWzddO3JbOV09cys5O3JbMTBdPXMrMTA7clsxMV09cyszO3JbNF09bDtyWzVdPXMrODtyWzZdPXMrMTE7cls3XT1zKzQ7clswXT1jO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2M9aVszXTtpWzJdPWlbMV07aVszXT1vO2lbMF09YztpWzFdPW8rMTticmVhaztjYXNlIDM6clsxMl09clswXTtyWzEzXT1zKzA7clsxNF09cysxO3JbMTVdPXMrMjtyWzhdPXJbMV07cls5XT1zKzk7clsxMF09cysxMDtyWzExXT1zKzM7cls0XT1yWzJdO3JbNV09cys4O3JbNl09cysxMTtyWzddPXMrNDtyWzBdPXJbM107clsxXT1zKzc7clsyXT1zKzY7clszXT1zKzU7aVsyXT1pWzBdO2lbM109bztpWzBdPWlbMV07aVsxXT1vKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTthc3NlcnQoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLG49dC5jb2xvcnMscz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLG89TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxjPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksbD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCBoPU1hdGguY2VpbCgoYy1zKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO2g9TWF0aENsYW1wKGgsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO3U9TWF0aENsYW1wKHUsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2NvbnN0IGQ9aCsxLGY9bmV3IEludDMyQXJyYXkoKHUrMSkqZCksZz1uZXcgSW50MzJBcnJheSgodSsxKSpkKTtsZXQgcD0wO2NvbnN0IG09bmV3IFVpbnQ4QXJyYXkoMyksYj1uZXcgVWludDhBcnJheSgzKSx5PXJbblswXV0sdz1yW25bMV1dLHg9cltuWzJdXSxTPXJbblszXV0saz1nZXRCKHUpLEM9Z2V0QihoKTtmb3IobGV0IGU9MDtlPD11O2UrKyl7bVswXT0oeVswXSoodS1lKSt4WzBdKmUpL3V8MDttWzFdPSh5WzFdKih1LWUpK3hbMV0qZSkvdXwwO21bMl09KHlbMl0qKHUtZSkreFsyXSplKS91fDA7YlswXT0od1swXSoodS1lKStTWzBdKmUpL3V8MDtiWzFdPSh3WzFdKih1LWUpK1NbMV0qZSkvdXwwO2JbMl09KHdbMl0qKHUtZSkrU1syXSplKS91fDA7Zm9yKGxldCB0PTA7dDw9aDt0KysscCsrKXtpZighKDAhPT1lJiZlIT09dXx8MCE9PXQmJnQhPT1oKSljb250aW51ZTtsZXQgbj0wLHM9MCxvPTA7Zm9yKGxldCByPTA7cjw9MztyKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPWtbZV1bcl0qQ1t0XVtjXTtuKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfWZbcF09YS5sZW5ndGg7YS5wdXNoKFtuLHNdKTtnW3BdPXIubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0obVswXSooaC10KStiWzBdKnQpL2h8MDtjWzFdPShtWzFdKihoLXQpK2JbMV0qdCkvaHwwO2NbMl09KG1bMl0qKGgtdCkrYlsyXSp0KS9ofDA7ci5wdXNoKGMpfX1mWzBdPWlbMF07Z1swXT1uWzBdO2ZbaF09aVszXTtnW2hdPW5bMV07ZltkKnVdPWlbMTJdO2dbZCp1XT1uWzJdO2ZbZCp1K2hdPWlbMTVdO2dbZCp1K2hdPW5bM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6Zixjb2xvcnM6Zyx2ZXJ0aWNlc1BlclJvdzpkfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxhPWUscj10O2ZvcihsZXQgaT0xLG49dGhpcy5jb29yZHMubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49dGhpcy5jb29yZHNbaV1bMF0scz10aGlzLmNvb3Jkc1tpXVsxXTtlPWU+bj9uOmU7dD10PnM/czp0O2E9YTxuP246YTtyPXI8cz9zOnJ9dGhpcy5ib3VuZHM9W2UsdCxhLHJdfV9wYWNrRGF0YSgpe2xldCBlLHQsYSxyO2NvbnN0IGk9dGhpcy5jb29yZHMsbj1uZXcgRmxvYXQzMkFycmF5KDIqaS5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9aS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pW2VdO25bYSsrXT10WzBdO25bYSsrXT10WzFdfXRoaXMuY29vcmRzPW47Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bYSsrXT10WzBdO29bYSsrXT10WzFdO29bYSsrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxpPXQuY29vcmRzLG49dC5jb2xvcnM7Zm9yKGE9MCxyPWkubGVuZ3RoO2E8cjthKyspe2lbYV0qPTI7blthXSo9M319fWdldElSKCl7Y29uc3R7Ym91bmRzOmV9PXRoaXM7aWYoZVsyXS1lWzBdPT0wfHxlWzNdLWVbMV09PTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIE1lc2hTaGFkaW5nIGJvdW5kczogWyR7ZX1dLmApO3JldHVyblsiTWVzaCIsdGhpcy5zaGFkaW5nVHlwZSx0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMsZSx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fWZ1bmN0aW9uIGdldFRpbGluZ1BhdHRlcm5JUihlLHQsYSl7Y29uc3Qgcj1sb29rdXBNYXRyaXgodC5nZXRBcnJheSgiTWF0cml4IiksRmEpLGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIWl8fGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3Qgbj10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgcz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGM9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsYSxlLHIsaSxuLHMsbyxjXX1jb25zdCBUaT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxPaT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sTWk9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sRGk9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LEJpPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxSaT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sTmk9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEVpPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxQaT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGppPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxfaT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFhpPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0scWk9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sSGk9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxXaT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx6aT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sJGk9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10sR2k9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLFZpPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxLaT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sSmk9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFlpPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxaaT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFFpPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxlbj1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdG49e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LGFuPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0scm49e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LG5uPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxzbj17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sb249WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGNuPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxsbj1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxobj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sdW49WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGRuPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxmbj1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGduPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxwbj1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sbW49e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LGJuPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6b24sYmFzZVdpZHRoczpaaSxiYXNlTWFwcGluZzpRaSxtZXRyaWNzOmNufTtlWyJNeXJpYWRQcm8tQm9sZCJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczplbixiYXNlV2lkdGhzOiRpLGJhc2VNYXBwaW5nOkdpLG1ldHJpY3M6dG59O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm5uLGJhc2VXaWR0aHM6SmksYmFzZU1hcHBpbmc6WWksbWV0cmljczpzbn07ZVsiTXlyaWFkUHJvLUJvbGRJdCJdPWVbIk15cmlhZFByby1Cb2xkSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmFuLGJhc2VXaWR0aHM6VmksYmFzZU1hcHBpbmc6S2ksbWV0cmljczpybn07ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOlppLGJhc2VNYXBwaW5nOlFpfTtlWyJBcmlhbC1Cb2xkTVQiXT1lWyJBcmlhbC1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGJhc2VXaWR0aHM6JGksYmFzZU1hcHBpbmc6R2l9O2VbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczpKaSxiYXNlTWFwcGluZzpZaX07ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixiYXNlV2lkdGhzOlZpLGJhc2VNYXBwaW5nOktpfTtlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpOaSxiYXNlV2lkdGhzOlppLGJhc2VNYXBwaW5nOlFpLG1ldHJpY3M6RWl9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOlRpLGJhc2VXaWR0aHM6JGksYmFzZU1hcHBpbmc6R2ksbWV0cmljczpPaX07ZVsiQ2FsaWJyaS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOkJpLGJhc2VXaWR0aHM6SmksYmFzZU1hcHBpbmc6WWksbWV0cmljczpSaX07ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6TWksYmFzZVdpZHRoczpWaSxiYXNlTWFwcGluZzpLaSxtZXRyaWNzOkRpfTtlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpwbixiYXNlV2lkdGhzOlppLGJhc2VNYXBwaW5nOlFpLG1ldHJpY3M6bW59O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmxuLGJhc2VXaWR0aHM6JGksYmFzZU1hcHBpbmc6R2ksbWV0cmljczpobn07ZVsiU2Vnb2V1aS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmZuLGJhc2VXaWR0aHM6SmksYmFzZU1hcHBpbmc6WWksbWV0cmljczpnbn07ZVsiU2Vnb2V1aS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6dW4sYmFzZVdpZHRoczpWaSxiYXNlTWFwcGluZzpLaSxtZXRyaWNzOmRufTtlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOldpLGJhc2VXaWR0aHM6WmksYmFzZU1hcHBpbmc6UWksbWV0cmljczp6aX07ZVsiSGVsdmV0aWNhLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpQaSxiYXNlV2lkdGhzOiRpLGJhc2VNYXBwaW5nOkdpLG1ldHJpY3M6aml9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOnFpLGJhc2VXaWR0aHM6SmksYmFzZU1hcHBpbmc6WWksbWV0cmljczpIaX07ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpfaSxiYXNlV2lkdGhzOlZpLGJhc2VNYXBwaW5nOktpLG1ldHJpY3M6WGl9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIGJuKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczphLGJhc2VNYXBwaW5nOnIsZmFjdG9yczppfT10LG49aT9hLm1hcCgoKGUsdCk9PmUqaVt0XSkpOmE7bGV0IHMsbz0tMjtjb25zdCBjPVtdO2Zvcihjb25zdFtlLHRdb2Ygci5tYXAoKChlLHQpPT5bZSx0XSkpLnNvcnQoKChbZV0sW3RdKT0+ZS10KSkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe3MucHVzaChuW3RdKTtvKz0xfWVsc2V7bz1lO3M9W25bdF1dO2MucHVzaChlLHMpfXJldHVybiBjfShlKSxhPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2Euc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTthLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2Euc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Euc2V0KCJXIix0KTthLnNldCgiRmlyc3RDaGFyIix0WzBdKTthLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCByPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgRGljdChudWxsKTtpLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO2kuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7aS5zZXQoIlN1cHBsZW1lbnQiLDApO2Euc2V0KCJDSURTeXN0ZW1JbmZvIixpKTtyZXR1cm4gYX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdCh5bi5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KHluLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQoeW4uTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdCh5bi5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KHluLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3QoeW4uUkJSQUNFKTtpZih0aGlzLmFjY2VwdCh5bi5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQoeW4uTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgYT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3QoeW4uUkJSQUNFKTt0aGlzLmV4cGVjdCh5bi5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCB5bj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbih5bi5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHluLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHluLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbih5bi5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbih5bi5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiB3YTtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbih5bi5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHthfWApO3JldHVybiBhfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxhKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX1jbGFzcyBHbG9iYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9Y2xlYXIoKXt0aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fWNsYXNzIEdsb2JhbEltYWdlQ2FjaGV7c3RhdGljIE5VTV9QQUdFU19USFJFU0hPTEQ9MjtzdGF0aWMgTUlOX0lNQUdFU19UT19DQUNIRT0xMDtzdGF0aWMgTUFYX0JZVEVfU0laRT01ZTc7I0g9bmV3IFJlZlNldDtjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlZkNhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLl9pbWFnZUNhY2hlPW5ldyBSZWZTZXRDYWNoZX1nZXQjVygpe2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5faW1hZ2VDYWNoZSllKz10LmJ5dGVTaXplO3JldHVybiBlfWdldCN6KCl7cmV0dXJuISh0aGlzLl9pbWFnZUNhY2hlLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NSU5fSU1BR0VTX1RPX0NBQ0hFKSYmISh0aGlzLiNXPEdsb2JhbEltYWdlQ2FjaGUuTUFYX0JZVEVfU0laRSl9c2hvdWxkQ2FjaGUoZSx0KXtsZXQgYT10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIWEpe2E9bmV3IFNldDt0aGlzLl9yZWZDYWNoZS5wdXQoZSxhKX1hLmFkZCh0KTtyZXR1cm4hKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpJiYhKCF0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKSYmdGhpcy4jeil9YWRkRGVjb2RlRmFpbGVkKGUpe3RoaXMuI0gucHV0KGUpfWhhc0RlY29kZUZhaWxlZChlKXtyZXR1cm4gdGhpcy4jSC5oYXMoZSl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighcilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gcn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJzaG91bGRDYWNoZSIgdG8gaGF2ZSBiZWVuIGNhbGxlZC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKXx8KHRoaXMuI3o/d2FybigiR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gY2FjaGUgbGltaXQgcmVhY2hlZC4iKTp0aGlzLl9pbWFnZUNhY2hlLnB1dChlLHQpKX1jbGVhcihlPSExKXtpZighZSl7dGhpcy4jSC5jbGVhcigpO3RoaXMuX3JlZkNhY2hlLmNsZWFyKCl9dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1jbGFzcyBQREZGdW5jdGlvbkZhY3Rvcnl7Y29uc3RydWN0b3Ioe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dD0hMH0pe3RoaXMueHJlZj1lO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09dH1jcmVhdGUoZSx0PSExKXtsZXQgYSxyO2UgaW5zdGFuY2VvZiBSZWY/YT1lOmUgaW5zdGFuY2VvZiBEaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9ZS5kaWN0Py5vYmpJZCk7aWYoYSl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYoYSk7aWYoZSlyZXR1cm4gZX1jb25zdCBpPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSAtIGV4cGVjdGVkICJwYXJzZUFycmF5IiBhcmd1bWVudC4nKTtyPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkodGhpcyxpKX1lbHNlIHI9UERGRnVuY3Rpb24ucGFyc2UodGhpcyxpKTthJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsYSxyKTtyZXR1cm4gcn1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoKGU9PitlKSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LGEscil7bGV0IGksbixzPTE7Zm9yKGk9MCxuPWUubGVuZ3RoO2k8bjtpKyspcyo9ZVtpXTtzKj10O2NvbnN0IG89bmV3IEFycmF5KHMpO2xldCBjPTAsbD0wO2NvbnN0IGg9MS8oMioqYS0xKSx1PXIuZ2V0Qnl0ZXMoKHMqYSs3KS84KTtsZXQgZD0wO2ZvcihpPTA7aTxzO2krKyl7Zm9yKDtjPGE7KXtsPDw9ODtsfD11W2QrK107Yys9OH1jLT1hO29baV09KGw+PmMpKmg7bCY9KDE8PGMpLTF9cmV0dXJuIG99c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT10LmRpY3R8fHQ7c3dpdGNoKGEuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoZSx0LGEpO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKGUsYSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoZSxhKTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdChlLHQsYSl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGUgb2YgZnVuY3Rpb24iKX1zdGF0aWMgcGFyc2VBcnJheShlLHQpe2NvbnN0e3hyZWY6YX09ZSxyPVtdO2Zvcihjb25zdCBpIG9mIHQpci5wdXNoKHRoaXMucGFyc2UoZSxhLmZldGNoSWZSZWYoaSkpKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGEsaSl7Zm9yKGxldCBuPTAscz1yLmxlbmd0aDtuPHM7bisrKXJbbl0oZSx0LGEsaStuKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoZSx0LGEpe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7aSs9MilhW3IrK109W2VbaV0sZVtpKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLGkpe3JldHVybiByKyhpLXIpLyhhLXQpKihlLXQpfWxldCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLGk9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcnx8IWkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4gb3IgcmFuZ2UiKTtjb25zdCBuPXIubGVuZ3RoLzIscz1pLmxlbmd0aC8yO3I9dG9NdWx0aUFycmF5KHIpO2k9dG9NdWx0aUFycmF5KGkpO2NvbnN0IG89dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJTaXplIikpLGM9YS5nZXQoIkJpdHNQZXJTYW1wbGUiKSxsPWEuZ2V0KCJPcmRlciIpfHwxOzEhPT1sJiZpbmZvKCJObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogIitsKTtsZXQgaD10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkVuY29kZSIpKTtpZihoKWg9dG9NdWx0aUFycmF5KGgpO2Vsc2V7aD1bXTtmb3IobGV0IGU9MDtlPG47KytlKWgucHVzaChbMCxvW2VdLTFdKX1sZXQgdT10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRlY29kZSIpKTt1PXU/dG9NdWx0aUFycmF5KHUpOmk7Y29uc3QgZD10aGlzLmdldFNhbXBsZUFycmF5KG8scyxjLHQpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTYW1wbGVkRm4oZSx0LGEsYyl7Y29uc3QgbD0xPDxuLGY9bmV3IEZsb2F0NjRBcnJheShsKS5maWxsKDEpLGc9bmV3IFVpbnQzMkFycmF5KGwpO2xldCBwLG0sYj1zLHk9MTtmb3IocD0wO3A8bjsrK3Ape2NvbnN0IGE9cltwXVswXSxpPXJbcF1bMV07bGV0IG49aW50ZXJwb2xhdGUoTWF0aENsYW1wKGVbdCtwXSxhLGkpLGEsaSxoW3BdWzBdLGhbcF1bMV0pO2NvbnN0IHM9b1twXTtuPU1hdGhDbGFtcChuLDAscy0xKTtjb25zdCBjPW48cy0xP01hdGguZmxvb3Iobik6bi0xLHU9YysxLW4sZD1uLWMsdz1jKmIseD13K2I7Zm9yKG09MDttPGw7bSsrKWlmKG0meSl7ZlttXSo9ZDtnW21dKz14fWVsc2V7ZlttXSo9dTtnW21dKz13fWIqPXM7eTw8PTF9Zm9yKG09MDttPHM7KyttKXtsZXQgZT0wO2ZvcihwPTA7cDxsO3ArKyllKz1kW2dbcF0rbV0qZltwXTtlPWludGVycG9sYXRlKGUsMCwxLHVbbV1bMF0sdVttXVsxXSk7YVtjK21dPU1hdGhDbGFtcChlLGlbbV1bMF0saVttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKGUsdCl7Y29uc3QgYT10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkMwIikpfHxbMF0scj10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkMxIikpfHxbMV0saT10LmdldCgiTiIpLG49W107Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKW4ucHVzaChyW2VdLWFbZV0pO2NvbnN0IHM9bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxyLG8pe2NvbnN0IGM9MT09PWk/ZVt0XTplW3RdKippO2ZvcihsZXQgZT0wO2U8czsrK2UpcltvK2VdPWFbZV0rYypuW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZChlLHQpe2NvbnN0IGE9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJEb21haW4iKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4iKTtpZigxIT09YS5sZW5ndGgvMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdHt4cmVmOnJ9PWUsaT1bXTtmb3IoY29uc3QgYSBvZiB0LmdldCgiRnVuY3Rpb25zIikpaS5wdXNoKHRoaXMucGFyc2UoZSxyLmZldGNoSWZSZWYoYSkpKTtjb25zdCBuPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiQm91bmRzIikpLHM9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJFbmNvZGUiKSksbz1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRm4oZSx0LHIsYyl7Y29uc3QgbD1NYXRoQ2xhbXAoZVt0XSxhWzBdLGFbMV0pLGg9bi5sZW5ndGg7bGV0IHU7Zm9yKHU9MDt1PGgmJiEobDxuW3VdKTsrK3UpO2xldCBkPWFbMF07dT4wJiYoZD1uW3UtMV0pO2xldCBmPWFbMV07dTxuLmxlbmd0aCYmKGY9blt1XSk7Y29uc3QgZz1zWzIqdV0scD1zWzIqdSsxXTtvWzBdPWQ9PT1mP2c6ZysobC1kKSoocC1nKS8oZi1kKTtpW3VdKG8sMCxyLGMpfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdChlLHQsYSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRvbWFpbiIpKSxpPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4uIik7aWYoIWkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyByYW5nZS4iKTtjb25zdCBuPW5ldyBQb3N0U2NyaXB0TGV4ZXIodCkscz1uZXcgUG9zdFNjcmlwdFBhcnNlcihuKS5wYXJzZSgpO2lmKGUuaXNFdmFsU3VwcG9ydGVkJiZGZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUocyxyLGkpO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfWluZm8oIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3Qgbz1pLmxlbmd0aD4+MSxjPXIubGVuZ3RoPj4xLGw9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IocyksaD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB1PTgxOTI7Y29uc3QgZD1uZXcgRmxvYXQzMkFycmF5KGMpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IG4scyxmPSIiO2NvbnN0IGc9ZDtmb3Iobj0wO248YztuKyspe3M9ZVt0K25dO2dbbl09cztmKz1zKyJfIn1jb25zdCBwPWhbZl07aWYodm9pZCAwIT09cCl7YS5zZXQocCxyKTtyZXR1cm59Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KG8pLGI9bC5leGVjdXRlKGcpLHk9Yi5sZW5ndGgtbztmb3Iobj0wO248bztuKyspe3M9Ylt5K25dO2xldCBlPWlbMipuXTtpZihzPGUpcz1lO2Vsc2V7ZT1pWzIqbisxXTtzPmUmJihzPWUpfW1bbl09c31pZih1PjApe3UtLTtoW2ZdPW19YS5zZXQobSxyKX19fWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoZSBpbnN0YW5jZW9mIERpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpcmV0dXJuITE7dD1lLmRpY3R9cmV0dXJuIHQuaGFzKCJGdW5jdGlvblR5cGUiKX1jbGFzcyBQb3N0U2NyaXB0U3RhY2t7c3RhdGljIE1BWF9TVEFDS19TSVpFPTEwMDtjb25zdHJ1Y3RvcihlKXt0aGlzLnN0YWNrPWU/QXJyYXkuZnJvbShlKTpbXX1wdXNoKGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO3RoaXMuc3RhY2sucHVzaChlKX1wb3AoKXtpZih0aGlzLnN0YWNrLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgdW5kZXJmbG93LiIpO3JldHVybiB0aGlzLnN0YWNrLnBvcCgpfWNvcHkoZSl7aWYodGhpcy5zdGFjay5sZW5ndGgrZT49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTtjb25zdCB0PXRoaXMuc3RhY2s7Zm9yKGxldCBhPXQubGVuZ3RoLWUscj1lLTE7cj49MDtyLS0sYSsrKXQucHVzaCh0W2FdKX1pbmRleChlKXt0aGlzLnB1c2godGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC1lLTFdKX1yb2xsKGUsdCl7Y29uc3QgYT10aGlzLnN0YWNrLHI9YS5sZW5ndGgtZSxpPWEubGVuZ3RoLTEsbj1yKyh0LU1hdGguZmxvb3IodC9lKSplKTtmb3IobGV0IGU9cix0PWk7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1yLHQ9bi0xO2U8dDtlKyssdC0tKXtjb25zdCByPWFbZV07YVtlXT1hW3RdO2FbdF09cn1mb3IobGV0IGU9bix0PWk7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfX19Y2xhc3MgUG9zdFNjcmlwdEV2YWx1YXRvcntjb25zdHJ1Y3RvcihlKXt0aGlzLm9wZXJhdG9ycz1lfWV4ZWN1dGUoZSl7Y29uc3QgdD1uZXcgUG9zdFNjcmlwdFN0YWNrKGUpO2xldCBhPTA7Y29uc3Qgcj10aGlzLm9wZXJhdG9ycyxpPXIubGVuZ3RoO2xldCBuLHMsbztmb3IoO2E8aTspe249clthKytdO2lmKCJudW1iZXIiIT10eXBlb2Ygbilzd2l0Y2gobil7Y2FzZSJqeiI6bz10LnBvcCgpO3M9dC5wb3AoKTtzfHwoYT1vKTticmVhaztjYXNlImoiOnM9dC5wb3AoKTthPXM7YnJlYWs7Y2FzZSJhYnMiOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5hYnMocykpO2JyZWFrO2Nhc2UiYWRkIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzK28pO2JyZWFrO2Nhc2UiYW5kIjpvPXQucG9wKCk7cz10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIHMmJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKHMmJm8pOnQucHVzaChzJm8pO2JyZWFrO2Nhc2UiYXRhbiI6bz10LnBvcCgpO3M9dC5wb3AoKTtzPU1hdGguYXRhbjIocyxvKS9NYXRoLlBJKjE4MDtzPDAmJihzKz0zNjApO3QucHVzaChzKTticmVhaztjYXNlImJpdHNoaWZ0IjpvPXQucG9wKCk7cz10LnBvcCgpO3M+MD90LnB1c2goczw8byk6dC5wdXNoKHM+Pm8pO2JyZWFrO2Nhc2UiY2VpbGluZyI6cz10LnBvcCgpO3QucHVzaChNYXRoLmNlaWwocykpO2JyZWFrO2Nhc2UiY29weSI6cz10LnBvcCgpO3QuY29weShzKTticmVhaztjYXNlImNvcyI6cz10LnBvcCgpO3QucHVzaChNYXRoLmNvcyhzJTM2MC8xODAqTWF0aC5QSSkpO2JyZWFrO2Nhc2UiY3ZpIjpzPTB8dC5wb3AoKTt0LnB1c2gocyk7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzL28pO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocz09PW8pO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMqKm8pO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6cz10LnBvcCgpO3QucHVzaChNYXRoLmZsb29yKHMpKTticmVhaztjYXNlImdlIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzPj1vKTticmVhaztjYXNlImd0IjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzPm8pO2JyZWFrO2Nhc2UiaWRpdiI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocy9vfDApO2JyZWFrO2Nhc2UiaW5kZXgiOnM9dC5wb3AoKTt0LmluZGV4KHMpO2JyZWFrO2Nhc2UibGUiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHM8PW8pO2JyZWFrO2Nhc2UibG4iOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cocykpO2JyZWFrO2Nhc2UibG9nIjpzPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nMTAocykpO2JyZWFrO2Nhc2UibHQiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHM8byk7YnJlYWs7Y2FzZSJtb2QiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMlbyk7YnJlYWs7Y2FzZSJtdWwiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMqbyk7YnJlYWs7Y2FzZSJuZSI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocyE9PW8pO2JyZWFrO2Nhc2UibmVnIjpzPXQucG9wKCk7dC5wdXNoKC1zKTticmVhaztjYXNlIm5vdCI6cz10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIHM/dC5wdXNoKCFzKTp0LnB1c2gofnMpO2JyZWFrO2Nhc2Uib3IiOm89dC5wb3AoKTtzPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgcyYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2goc3x8byk6dC5wdXNoKHN8byk7YnJlYWs7Y2FzZSJwb3AiOnQucG9wKCk7YnJlYWs7Y2FzZSJyb2xsIjpvPXQucG9wKCk7cz10LnBvcCgpO3Qucm9sbChzLG8pO2JyZWFrO2Nhc2Uicm91bmQiOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5yb3VuZChzKSk7YnJlYWs7Y2FzZSJzaW4iOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5zaW4ocyUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlInNxcnQiOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5zcXJ0KHMpKTticmVhaztjYXNlInN1YiI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocy1vKTticmVhaztjYXNlInRydWUiOnQucHVzaCghMCk7YnJlYWs7Y2FzZSJ0cnVuY2F0ZSI6cz10LnBvcCgpO3M9czwwP01hdGguY2VpbChzKTpNYXRoLmZsb29yKHMpO3QucHVzaChzKTticmVhaztjYXNlInhvciI6bz10LnBvcCgpO3M9dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBzJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChzIT09byk6dC5wdXNoKHNebyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtufWApfWVsc2UgdC5wdXNoKG4pfXJldHVybiB0LnN0YWNrfX1jbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpe3VucmVhY2hhYmxlKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhLHIsaSl7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9YTt0aGlzLm1pbj1yO3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGE9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLHI9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsYSxyKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxhKXtjb25zdCByPVtdLGk9W10sbj10Lmxlbmd0aD4+MSxzPWEubGVuZ3RoPj4xO2xldCBvLGMsbCxoLHUsZCxmLGcscD0wO2ZvcihsZXQgZT0wO2U8bjtlKyspci5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Zz1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgZylzd2l0Y2goZyl7Y2FzZSJhZGQiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRBZGRPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO3U9ci5wb3AoKTtkPXIucG9wKCk7ci5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7ci5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2w9ci5wb3AoKTtpZigibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7bz1sLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxyLmxlbmd0aDxvKXJldHVybiBudWxsO3U9cltyLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtby0xXT1mO3IucHVzaChmKTtpLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihmLHUpKTticmVhaztjYXNlImR1cCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGwsZVt0KzFdKSk7dCs9NjticmVha311PXIuYXQoLTEpO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtMV09ZjtyLnB1c2goZik7aS5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJyb2xsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09aC50eXBlfHwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7Yz1oLm51bWJlcjtvPWwubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDtjPShjJW8rbyklbztpZigwPT09YylicmVhaztyLnB1c2goLi4uci5zcGxpY2Uoci5sZW5ndGgtbyxvLWMpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2Ugci5wdXNoKG5ldyBBc3RMaXRlcmFsKGcpKX1pZihyLmxlbmd0aCE9PXMpcmV0dXJuIG51bGw7Y29uc3QgbT1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTttLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXSxpPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChpKTtjb25zdCBuPWFbMiplXSxzPWFbMiplKzFdLG89W2kudG9TdHJpbmcoKV07aWYobj50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLG4sIiwgIik7by5wdXNoKCIpIil9aWYoczx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLHMsIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTttLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG0uam9pbigiXG4iKX19Y29uc3Qgd249WyJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJTIiwiQiIsIlMiLCJXUyIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkIiLCJCIiwiUyIsIldTIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQ1MiLCJPTiIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiT04iLCJPTiIsIkJOIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFTiIsIkVOIiwiT04iLCJMIiwiT04iLCJPTiIsIk9OIiwiRU4iLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCJdLHhuPVsiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiT04iLCJPTiIsIkFMIiwiRVQiLCJFVCIsIkFMIiwiQ1MiLCJBTCIsIk9OIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJFVCIsIkFOIiwiQU4iLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCJdO2Z1bmN0aW9uIGlzT2RkKGUpe3JldHVybiEhKDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiEoMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsYSl7bGV0IHIsaTtmb3Iocj10LGk9ZS5sZW5ndGg7cjxpOysrcilpZihlW3JdIT09YSlyZXR1cm4gcjtyZXR1cm4gcn1mdW5jdGlvbiByZXZlcnNlVmFsdWVzKGUsdCxhKXtmb3IobGV0IHI9dCxpPWEtMTtyPGk7KytyLC0taSl7Y29uc3QgdD1lW3JdO2Vbcl09ZVtpXTtlW2ldPXR9fWZ1bmN0aW9uIGNyZWF0ZUJpZGlUZXh0KGUsdCxhPSExKXtsZXQgcj0ibHRyIjthP3I9InR0YiI6dHx8KHI9InJ0bCIpO3JldHVybntzdHI6ZSxkaXI6cn19Y29uc3QgU249W10sa249W107ZnVuY3Rpb24gYmlkaShlLHQ9LTEsYT0hMSl7bGV0IHI9ITA7Y29uc3QgaT1lLmxlbmd0aDtpZigwPT09aXx8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxyLGEpO1NuLmxlbmd0aD1pO2tuLmxlbmd0aD1pO2xldCBuLHMsbz0wO2ZvcihuPTA7bjxpOysrbil7U25bbl09ZS5jaGFyQXQobik7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPXduW3RdO2Vsc2UgaWYoMTQyNDw9dCYmdDw9MTUyNClhPSJSIjtlbHNlIGlmKDE1MzY8PXQmJnQ8PTE3OTEpe2E9eG5bMjU1JnRdO2F8fHdhcm4oIkJpZGk6IGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgIit0LnRvU3RyaW5nKDE2KSl9ZWxzZSgxNzkyPD10JiZ0PD0yMjIwfHw2NDMzNjw9dCYmdDw9NjUwMjN8fDY1MTM2PD10JiZ0PD02NTI3OSkmJihhPSJBTCIpOyJSIiE9PWEmJiJBTCIhPT1hJiYiQU4iIT09YXx8bysrO2tuW25dPWF9aWYoMD09PW8pe3I9ITA7cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUscil9aWYoLTE9PT10KWlmKG8vaTwuMyYmaT40KXtyPSEwO3Q9MH1lbHNle3I9ITE7dD0xfWNvbnN0IGM9W107Zm9yKG49MDtuPGk7KytuKWNbbl09dDtjb25zdCBsPWlzT2RkKHQpPyJSIjoiTCIsaD1sLHU9aDtsZXQgZCxmPWg7Zm9yKG49MDtuPGk7KytuKSJOU00iPT09a25bbl0/a25bbl09ZjpmPWtuW25dO2Y9aDtmb3Iobj0wO248aTsrK24pe2Q9a25bbl07IkVOIj09PWQ/a25bbl09IkFMIj09PWY/IkFOIjoiRU4iOiJSIiE9PWQmJiJMIiE9PWQmJiJBTCIhPT1kfHwoZj1kKX1mb3Iobj0wO248aTsrK24pe2Q9a25bbl07IkFMIj09PWQmJihrbltuXT0iUiIpfWZvcihuPTE7bjxpLTE7KytuKXsiRVMiPT09a25bbl0mJiJFTiI9PT1rbltuLTFdJiYiRU4iPT09a25bbisxXSYmKGtuW25dPSJFTiIpOyJDUyIhPT1rbltuXXx8IkVOIiE9PWtuW24tMV0mJiJBTiIhPT1rbltuLTFdfHxrbltuKzFdIT09a25bbi0xXXx8KGtuW25dPWtuW24tMV0pfWZvcihuPTA7bjxpOysrbilpZigiRU4iPT09a25bbl0pe2ZvcihsZXQgZT1uLTE7ZT49MCYmIkVUIj09PWtuW2VdOy0tZSlrbltlXT0iRU4iO2ZvcihsZXQgZT1uKzE7ZTxpJiYiRVQiPT09a25bZV07KytlKWtuW2VdPSJFTiJ9Zm9yKG49MDtuPGk7KytuKXtkPWtuW25dOyJXUyIhPT1kJiYiRVMiIT09ZCYmIkVUIiE9PWQmJiJDUyIhPT1kfHwoa25bbl09Ik9OIil9Zj1oO2ZvcihuPTA7bjxpOysrbil7ZD1rbltuXTsiRU4iPT09ZD9rbltuXT0iTCI9PT1mPyJMIjoiRU4iOiJSIiE9PWQmJiJMIiE9PWR8fChmPWQpfWZvcihuPTA7bjxpOysrbilpZigiT04iPT09a25bbl0pe2NvbnN0IGU9ZmluZFVuZXF1YWwoa24sbisxLCJPTiIpO2xldCB0PWg7bj4wJiYodD1rbltuLTFdKTtsZXQgYT11O2UrMTxpJiYoYT1rbltlKzFdKTsiTCIhPT10JiYodD0iUiIpOyJMIiE9PWEmJihhPSJSIik7dD09PWEmJmtuLmZpbGwodCxuLGUpO249ZS0xfWZvcihuPTA7bjxpOysrbikiT04iPT09a25bbl0mJihrbltuXT1sKTtmb3Iobj0wO248aTsrK24pe2Q9a25bbl07aXNFdmVuKGNbbl0pPyJSIj09PWQ/Y1tuXSs9MToiQU4iIT09ZCYmIkVOIiE9PWR8fChjW25dKz0yKToiTCIhPT1kJiYiQU4iIT09ZCYmIkVOIiE9PWR8fChjW25dKz0xKX1sZXQgZyxwPS0xLG09OTk7Zm9yKG49MCxzPWMubGVuZ3RoO248czsrK24pe2c9Y1tuXTtwPGcmJihwPWcpO20+ZyYmaXNPZGQoZykmJihtPWcpfWZvcihnPXA7Zz49bTstLWcpe2xldCBlPS0xO2ZvcihuPTAscz1jLmxlbmd0aDtuPHM7KytuKWlmKGNbbl08Zyl7aWYoZT49MCl7cmV2ZXJzZVZhbHVlcyhTbixlLG4pO2U9LTF9fWVsc2UgZTwwJiYoZT1uKTtlPj0wJiZyZXZlcnNlVmFsdWVzKFNuLGUsYy5sZW5ndGgpfWZvcihuPTAscz1Tbi5sZW5ndGg7bjxzOysrbil7Y29uc3QgZT1TbltuXTsiPCIhPT1lJiYiPiIhPT1lfHwoU25bbl09IiIpfXJldHVybiBjcmVhdGVCaWRpVGV4dChTbi5qb2luKCIiKSxyKX1jb25zdCBBbj17c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwifSxDbj17c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiJib2xkIn0sdm49e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoibm9ybWFsIn0sRm49e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoiYm9sZCJ9LEluPW5ldyBNYXAoW1siVGltZXMtUm9tYW4iLHtsb2NhbDpbIlRpbWVzIE5ldyBSb21hbiIsIlRpbWVzLVJvbWFuIiwiVGltZXMiLCJMaWJlcmF0aW9uIFNlcmlmIiwiTmltYnVzIFJvbWFuIiwiTmltYnVzIFJvbWFuIEwiLCJUaW5vcyIsIlRob3JuZGFsZSIsIlRlWCBHeXJlIFRlcm1lcyIsIkZyZWVTZXJpZiIsIkxpbnV4IExpYmVydGluZSBPIiwiTGliZXJ0aW51cyBTZXJpZiIsIkRlamFWdSBTZXJpZiIsIkJpdHN0cmVhbSBWZXJhIFNlcmlmIiwiVWJ1bnR1Il0sc3R5bGU6QW4sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Q24sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTp2bix1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1Cb2xkSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpGbix1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6QW4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZCIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIixzdHlsZTpDbix1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1PYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiIsc3R5bGU6dm4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6Rm4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJDb3VyaWVyIix7bG9jYWw6WyJDb3VyaWVyIiwiQ291cmllciBOZXciLCJMaWJlcmF0aW9uIE1vbm8iLCJOaW1idXMgTW9ubyIsIk5pbWJ1cyBNb25vIEwiLCJDb3VzaW5lIiwiQ3VtYmVybGFuZCIsIlRlWCBHeXJlIEN1cnNvciIsIkZyZWVNb25vIiwiTGludXggTGliZXJ0aW5lIE1vbm8gTyIsIkxpYmVydGludXMgTW9ubyJdLHN0eWxlOkFuLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6Q24sdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTp2bix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpGbix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOkFuLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJBcmlhbE5hcnJvdy1Cb2xkIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpDbixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbE5hcnJvdy1JdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOnZuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOkZuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJDYWxpYnJpIix7bG9jYWw6WyJDYWxpYnJpIiwiQ2FybGl0byJdLHN0eWxlOkFuLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJDYWxpYnJpLUJvbGQiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6Q24sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6dm4sZmFsbGJhY2s6IkhlbHZldGljYS1PYmxpcXVlIn1dLFsiQ2FsaWJyaS1Cb2xkSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOkZuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJXaW5nZGluZ3MiLHtsb2NhbDpbIldpbmdkaW5ncyIsIlVSVyBEaW5nYmF0cyJdLHN0eWxlOkFufV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV1dKSxUbj1uZXcgTWFwKFtbIkFyaWFsLUJsYWNrIiwiQXJpYWxCbGFjayJdXSk7ZnVuY3Rpb24gZ2V0RmFtaWx5TmFtZShlKXtjb25zdCB0PW5ldyBTZXQoWyJ0aGluIiwiZXh0cmFsaWdodCIsInVsdHJhbGlnaHQiLCJkZW1pbGlnaHQiLCJzZW1pbGlnaHQiLCJsaWdodCIsImJvb2siLCJyZWd1bGFyIiwibm9ybWFsIiwibWVkaXVtIiwiZGVtaWJvbGQiLCJzZW1pYm9sZCIsImJvbGQiLCJleHRyYWJvbGQiLCJ1bHRyYWJvbGQiLCJibGFjayIsImhlYXZ5IiwiZXh0cmFibGFjayIsInVsdHJhYmxhY2siLCJyb21hbiIsIml0YWxpYyIsIm9ibGlxdWUiLCJ1bHRyYWNvbmRlbnNlZCIsImV4dHJhY29uZGVuc2VkIiwiY29uZGVuc2VkIiwic2VtaWNvbmRlbnNlZCIsIm5vcm1hbCIsInNlbWlleHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmFleHBhbmRlZCIsInVsdHJhZXhwYW5kZWQiLCJib2xkaXRhbGljIl0pO3JldHVybiBlLnNwbGl0KC9bLSAsK10rL2cpLmZpbHRlcigoZT0+IXQuaGFzKGUudG9Mb3dlckNhc2UoKSkpKS5qb2luKCIgIil9ZnVuY3Rpb24gZ2VuZXJhdGVGb250KHthbGlhczplLGxvY2FsOnQscGF0aDphLGZhbGxiYWNrOnIsc3R5bGU6aSx1bHRpbWF0ZTpufSxzLG8sYz0hMCxsPSEwLGg9IiIpe2NvbnN0IHU9e3N0eWxlOm51bGwsdWx0aW1hdGU6bnVsbH07aWYodCl7Y29uc3QgZT1oP2AgJHtofWA6IiI7Zm9yKGNvbnN0IGEgb2YgdClzLnB1c2goYGxvY2FsKCR7YX0ke2V9KWApfWlmKGUpe2NvbnN0IHQ9SW4uZ2V0KGUpLG49aHx8ZnVuY3Rpb24gZ2V0U3R5bGVUb0FwcGVuZChlKXtzd2l0Y2goZSl7Y2FzZSBDbjpyZXR1cm4iQm9sZCI7Y2FzZSB2bjpyZXR1cm4iSXRhbGljIjtjYXNlIEZuOnJldHVybiJCb2xkIEl0YWxpYyI7ZGVmYXVsdDppZigiYm9sZCI9PT1lPy53ZWlnaHQpcmV0dXJuIkJvbGQiO2lmKCJpdGFsaWMiPT09ZT8uc3R5bGUpcmV0dXJuIkl0YWxpYyJ9cmV0dXJuIiJ9KGkpO09iamVjdC5hc3NpZ24odSxnZW5lcmF0ZUZvbnQodCxzLG8sYyYmIXIsbCYmIWEsbikpfWkmJih1LnN0eWxlPWkpO24mJih1LnVsdGltYXRlPW4pO2lmKGMmJnIpe2NvbnN0IGU9SW4uZ2V0KHIpLHt1bHRpbWF0ZTp0fT1nZW5lcmF0ZUZvbnQoZSxzLG8sYyxsJiYhYSxoKTt1LnVsdGltYXRlfHw9dH1sJiZhJiZvJiZzLnB1c2goYHVybCgke299JHthfSlgKTtyZXR1cm4gdX1mdW5jdGlvbiBnZXRGb250U3Vic3RpdHV0aW9uKGUsdCxhLHIsaSxuKXtpZihyLnN0YXJ0c1dpdGgoIkludmFsaWRQREZqc0ZvbnRfIikpcmV0dXJuIG51bGw7IlRydWVUeXBlIiE9PW4mJiJUeXBlMSIhPT1ufHwhL15bQS1aXXs2fVwrLy50ZXN0KHIpfHwocj1yLnNsaWNlKDcpKTtjb25zdCBzPXI9bm9ybWFsaXplRm9udE5hbWUocik7bGV0IG89ZS5nZXQocyk7aWYobylyZXR1cm4gbztsZXQgYz1Jbi5nZXQocik7aWYoIWMpZm9yKGNvbnN0W2UsdF1vZiBUbilpZihyLnN0YXJ0c1dpdGgoZSkpe3I9YCR7dH0ke3Iuc3Vic3RyaW5nKGUubGVuZ3RoKX1gO2M9SW4uZ2V0KHIpO2JyZWFrfWxldCBsPSExO2lmKCFjKXtjPUluLmdldChpKTtsPSEwfWNvbnN0IGg9YCR7dC5nZXREb2NJZCgpfV9zJHt0LmNyZWF0ZUZvbnRJZCgpfWA7aWYoIWMpe2lmKCF2YWxpZGF0ZUZvbnROYW1lKHIpKXt3YXJuKGBDYW5ub3Qgc3Vic3RpdHV0ZSB0aGUgZm9udCBiZWNhdXNlIG9mIGl0cyBuYW1lOiAke3J9YCk7ZS5zZXQocyxudWxsKTtyZXR1cm4gbnVsbH1jb25zdCB0PS9ib2xkL2dpLnRlc3QociksYT0vb2JsaXF1ZXxpdGFsaWMvZ2kudGVzdChyKSxpPXQmJmEmJkZufHx0JiZDbnx8YSYmdm58fEFuO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShyKX0iLCR7aH1gLGd1ZXNzRmFsbGJhY2s6ITAsbG9hZGVkTmFtZTpoLGJhc2VGb250TmFtZTpyLHNyYzpgbG9jYWwoJHtyfSlgLHN0eWxlOml9O2Uuc2V0KHMsbyk7cmV0dXJuIG99Y29uc3QgdT1bXTtsJiZ2YWxpZGF0ZUZvbnROYW1lKHIpJiZ1LnB1c2goYGxvY2FsKCR7cn0pYCk7Y29uc3R7c3R5bGU6ZCx1bHRpbWF0ZTpmfT1nZW5lcmF0ZUZvbnQoYyx1LGEpLGc9bnVsbD09PWYscD1nPyIiOmAsJHtmfWA7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKHIpfSIsJHtofSR7cH1gLGd1ZXNzRmFsbGJhY2s6Zyxsb2FkZWROYW1lOmgsYmFzZUZvbnROYW1lOnIsc3JjOnUuam9pbigiLCIpLHN0eWxlOmR9O2Uuc2V0KHMsbyk7cmV0dXJuIG99Y29uc3QgT249MzI4NTM3NzUyMCxNbj00Mjk0OTAxNzYwLERuPTY1NTM1O2NsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6T247dGhpcy5oMj1lPzQyOTQ5NjcyOTUmZTpPbn11cGRhdGUoZSl7bGV0IHQsYTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Q9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCk7YT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNoYXJDb2RlQXQocik7aWYoaTw9MjU1KXRbYSsrXT1pO2Vsc2V7dFthKytdPWk+Pj44O3RbYSsrXT0yNTUmaX19fWVsc2V7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGF0YSBmb3JtYXQsIG11c3QgYmUgYSBzdHJpbmcgb3IgVHlwZWRBcnJheS4iKTt0PWUuc2xpY2UoKTthPXQuYnl0ZUxlbmd0aH1jb25zdCByPWE+PjIsaT1hLTQqcixuPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLHIpO2xldCBzPTAsbz0wLGM9dGhpcy5oMSxsPXRoaXMuaDI7Y29uc3QgaD0zNDMyOTE4MzUzLHU9NDYxODQ1OTA3LGQ9MTE2MDEsZj0xMzcxNTtmb3IobGV0IGU9MDtlPHI7ZSsrKWlmKDEmZSl7cz1uW2VdO3M9cypoJk1ufHMqZCZEbjtzPXM8PDE1fHM+Pj4xNztzPXMqdSZNbnxzKmYmRG47Y149cztjPWM8PDEzfGM+Pj4xOTtjPTUqYyszODY0MjkyMTk2fWVsc2V7bz1uW2VdO289bypoJk1ufG8qZCZEbjtvPW88PDE1fG8+Pj4xNztvPW8qdSZNbnxvKmYmRG47bF49bztsPWw8PDEzfGw+Pj4xOTtsPTUqbCszODY0MjkyMTk2fXM9MDtzd2l0Y2goaSl7Y2FzZSAzOnNePXRbNCpyKzJdPDwxNjtjYXNlIDI6c149dFs0KnIrMV08PDg7Y2FzZSAxOnNePXRbNCpyXTtzPXMqaCZNbnxzKmQmRG47cz1zPDwxNXxzPj4+MTc7cz1zKnUmTW58cypmJkRuOzEmcj9jXj1zOmxePXN9dGhpcy5oMT1jO3RoaXMuaDI9bH1oZXhkaWdlc3QoKXtsZXQgZT10aGlzLmgxLHQ9dGhpcy5oMjtlXj10Pj4+MTtlPTM5ODE4MDY3OTcqZSZNbnwzNjA0NSplJkRuO3Q9NDI4MzU0MzUxMSp0Jk1ufCgyOTUwMTYzNzk3Kih0PDwxNnxlPj4+MTYpJk1uKT4+PjE2O2VePXQ+Pj4xO2U9NDQ0OTg0NDAzKmUmTW58NjA0OTkqZSZEbjt0PTMzMDE4ODIzNjYqdCZNbnwoMzEyMDQzNzg5MyoodDw8MTZ8ZT4+PjE2KSZNbik+Pj4xNjtlXj10Pj4+MTtyZXR1cm4oZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKHQ+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX1mdW5jdGlvbiByZXNpemVJbWFnZU1hc2soZSx0LGEscixpLG4pe2NvbnN0IHM9aSpuO2xldCBvO289dDw9OD9uZXcgVWludDhBcnJheShzKTp0PD0xNj9uZXcgVWludDE2QXJyYXkocyk6bmV3IFVpbnQzMkFycmF5KHMpO2NvbnN0IGM9YS9pLGw9ci9uO2xldCBoLHUsZCxmLGc9MDtjb25zdCBwPW5ldyBVaW50MTZBcnJheShpKSxtPWE7Zm9yKGg9MDtoPGk7aCsrKXBbaF09TWF0aC5mbG9vcihoKmMpO2ZvcihoPTA7aDxuO2grKyl7ZD1NYXRoLmZsb29yKGgqbCkqbTtmb3IodT0wO3U8aTt1Kyspe2Y9ZCtwW3VdO29bZysrXT1lW2ZdfX1yZXR1cm4gb31jbGFzcyBQREZJbWFnZXtjb25zdHJ1Y3Rvcih7eHJlZjplLHJlczp0LGltYWdlOmEsaXNJbmxpbmU6cj0hMSxzbWFzazppPW51bGwsbWFzazpuPW51bGwsaXNNYXNrOnM9ITEscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pe3RoaXMuaW1hZ2U9YTtjb25zdCBoPWEuZGljdCx1PWguZ2V0KCJGIiwiRmlsdGVyIik7bGV0IGQ7aWYodSBpbnN0YW5jZW9mIE5hbWUpZD11Lm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHUpKXtjb25zdCB0PWUuZmV0Y2hJZlJlZih1WzBdKTt0IGluc3RhbmNlb2YgTmFtZSYmKGQ9dC5uYW1lKX1zd2l0Y2goZCl7Y2FzZSJKUFhEZWNvZGUiOih7d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsY29tcG9uZW50c0NvdW50OmEubnVtQ29tcHMsYml0c1BlckNvbXBvbmVudDphLmJpdHNQZXJDb21wb25lbnR9PUpweEltYWdlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGEuc3RyZWFtKSk7YS5zdHJlYW0ucmVzZXQoKTtjb25zdCBlPUltYWdlUmVzaXplci5nZXRSZWR1Y2VQb3dlckZvckpQWChhLndpZHRoLGEuaGVpZ2h0LGEubnVtQ29tcHMpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpoLmhhcygiU01hc2tJbkRhdGEiKSxyZWR1Y2VQb3dlcjplfTtpZihlKXtjb25zdCB0PTIqKmU7YS53aWR0aD1NYXRoLmNlaWwoYS53aWR0aC90KTthLmhlaWdodD1NYXRoLmNlaWwoYS5oZWlnaHQvdCl9YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6YS5iaXRzUGVyQ29tcG9uZW50PTE7YS5udW1Db21wcz0xfWxldCBmPWguZ2V0KCJXIiwiV2lkdGgiKSxnPWguZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihhLndpZHRoKSYmYS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGEuaGVpZ2h0KSYmYS5oZWlnaHQ+MCYmKGEud2lkdGghPT1mfHxhLmhlaWdodCE9PWcpKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2Y9YS53aWR0aDtnPWEuaGVpZ2h0fWVsc2V7Y29uc3QgZT0ibnVtYmVyIj09dHlwZW9mIGYmJmY+MCx0PSJudW1iZXIiPT10eXBlb2YgZyYmZz4wO2lmKCFlfHwhdCl7aWYoIWEuZmFsbGJhY2tEaW1zKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtmfSBvciBoZWlnaHQ6ICR7Z31gKTt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIHBhcmVudCBpbWFnZSwgZm9yIFNNYXNrL01hc2sgZGF0YS4iKTtlfHwoZj1hLmZhbGxiYWNrRGltcy53aWR0aCk7dHx8KGc9YS5mYWxsYmFja0RpbXMuaGVpZ2h0KX19dGhpcy53aWR0aD1mO3RoaXMuaGVpZ2h0PWc7dGhpcy5pbnRlcnBvbGF0ZT1oLmdldCgiSSIsIkludGVycG9sYXRlIik7dGhpcy5pbWFnZU1hc2s9aC5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExO3RoaXMubWF0dGU9aC5nZXQoIk1hdHRlIil8fCExO2xldCBwPWEuYml0c1BlckNvbXBvbmVudDtpZighcCl7cD1oLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpO2lmKCFwKXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTtwPTF9fXRoaXMuYnBjPXA7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgaT1oLmdldFJhdygiQ1MiKXx8aC5nZXRSYXcoIkNvbG9yU3BhY2UiKTtjb25zdCBuPSEhaTtpZihuKXRoaXMuanB4RGVjb2Rlck9wdGlvbnM/LnNtYXNrSW5EYXRhJiYoaT1OYW1lLmdldCgiRGV2aWNlUkdCQSIpKTtlbHNlIGlmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpaT1OYW1lLmdldCgiRGV2aWNlUkdCQSIpO2Vsc2Ugc3dpdGNoKGEubnVtQ29tcHMpe2Nhc2UgMTppPU5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmk9TmFtZS5nZXQoIkRldmljZVJHQiIpO2JyZWFrO2Nhc2UgNDppPU5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEltYWdlcyB3aXRoICR7YS5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfXRoaXMuY29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmkseHJlZjplLHJlc291cmNlczpyP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPW4/dGhpcy5udW1Db21wczowO3RoaXMuanB4RGVjb2Rlck9wdGlvbnMuaXNJbmRleGVkQ29sb3JtYXA9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlLm5hbWV9fXRoaXMuZGVjb2RlPWguZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTt0aGlzLm5lZWRzRGVjb2RlPSExO2lmKHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSxwKXx8cyYmIUNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDxwKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdO3RoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZT8ubmFtZTtmb3IobGV0IGE9MCxyPTA7YTx0aGlzLmRlY29kZS5sZW5ndGg7YSs9MiwrK3Ipe2NvbnN0IGk9dGhpcy5kZWNvZGVbYV0sbj10aGlzLmRlY29kZVthKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW3JdPXQ/KG4taSkvZTpuLWk7dGhpcy5kZWNvZGVBZGRlbmRzW3JdPXQ/aTplKml9fWlmKGkpe2kuZmFsbGJhY2tEaW1zPz89e3dpZHRoOmYsaGVpZ2h0Omd9O3RoaXMuc21hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTpyLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KX1lbHNlIGlmKG4paWYobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2lmKG4uZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIikpe24uZmFsbGJhY2tEaW1zPz89e3dpZHRoOmYsaGVpZ2h0Omd9O3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpuLGlzSW5saW5lOnIsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KX1lbHNlIHdhcm4oIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1ufXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpyPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTppLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpuLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KXtjb25zdCBvPWE7bGV0IGM9bnVsbCxsPW51bGw7Y29uc3QgaD1hLmRpY3QuZ2V0KCJTTWFzayIpLHU9YS5kaWN0LmdldCgiTWFzayIpO2g/aCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/Yz1oOndhcm4oIlVuc3VwcG9ydGVkIC9TTWFzayBmb3JtYXQuIik6dSYmKHUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KHUpP2w9dTp3YXJuKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpO3JldHVybiBuZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpvLGlzSW5saW5lOnIsc21hc2s6YyxtYXNrOmwscGRmRnVuY3Rpb25GYWN0b3J5OmksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pfXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWFnZTplLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnQ9ITF9KXtjb25zdHtkaWN0OmF9PWUscj1hLmdldCgiVyIsIldpZHRoIiksaT1hLmdldCgiSCIsIkhlaWdodCIpLG49YS5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLHM9YS5nZXRBcnJheSgiRCIsIkRlY29kZSIpLG89cz8uWzBdPjAsYz0ocis3Pj4zKSppLGw9ZS5nZXRCeXRlcyhjKSxoPTE9PT1yJiYxPT09aSYmbz09PSgwPT09bC5sZW5ndGh8fCEhKDEyOCZsWzBdKSk7aWYoaClyZXR1cm57aXNTaW5nbGVPcGFxdWVQaXhlbDpofTtpZih0KXtpZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChyLGkpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShyKmkqNCk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzpsLGRlc3Q6ZSx3aWR0aDpyLGhlaWdodDppLG5vbkJsYWNrQ29sb3I6MCxpbnZlcnNlRGVjb2RlOm99KTtyZXR1cm4gSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtraW5kOnYsZGF0YTplLHdpZHRoOnIsaGVpZ2h0OmksaW50ZXJwb2xhdGU6bn0pfWNvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhyLGkpLHQ9ZS5nZXRDb250ZXh0KCIyZCIpLGE9dC5jcmVhdGVJbWFnZURhdGEocixpKTtjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmwsZGVzdDphLmRhdGEsd2lkdGg6cixoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7dC5wdXRJbWFnZURhdGEoYSwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6cixoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpuLGJpdG1hcDplLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1jb25zdCB1PWwuYnl0ZUxlbmd0aDtsZXQgZDtpZihlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtJiYoIW98fGM9PT11KSlkPWw7ZWxzZSBpZihvKXtkPW5ldyBVaW50OEFycmF5KGMpO2Quc2V0KGwpO2QuZmlsbCgyNTUsdSl9ZWxzZSBkPW5ldyBVaW50OEFycmF5KGwpO2lmKG8pZm9yKGxldCBlPTA7ZTx1O2UrKylkW2VdXj0yNTU7cmV0dXJue2RhdGE6ZCx3aWR0aDpyLGhlaWdodDppLGludGVycG9sYXRlOm59fWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrPy53aWR0aHx8MCx0aGlzLm1hc2s/LndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrPy5oZWlnaHR8fDAsdGhpcy5tYXNrPy5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxpPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLG49KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPU1hdGhDbGFtcChyW3RdK2VbY10qaVt0XSwwLG4pO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LGk9dGhpcy5udW1Db21wcyxuPWEqcippO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkobik6dDw9MTY/bmV3IFVpbnQxNkFycmF5KG4pOm5ldyBVaW50MzJBcnJheShuKTtjb25zdCBjPWEqaSxsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLGk7Zm9yKGxldCBuPTA7bjxyO24rKyl7YT1kKygtOCZjKTtpPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPGkpe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxpOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPW47ZDxoOysrZCl7aWYoZCVjPT0wKXt1PTA7YT0wfWZvcig7YTx0Oyl7dT11PDw4fGVbbysrXTthKz04fWNvbnN0IHI9YS10O2xldCBpPXU+PnI7aTwwP2k9MDppPmwmJihpPWwpO3NbZF09aTt1Jj0oMTw8ciktMTthPXJ9fXJldHVybiBzfWFzeW5jIGZpbGxPcGFjaXR5KGUsdCxhLHIsaSl7Y29uc3Qgbj10aGlzLnNtYXNrLHM9dGhpcy5tYXNrO2xldCBvLGMsbCxoLHUsZDtpZihuKXtjPW4ud2lkdGg7bD1uLmhlaWdodDtvPW5ldyBVaW50OENsYW1wZWRBcnJheShjKmwpO2F3YWl0IG4uZmlsbEdyYXlCdWZmZXIobyk7Yz09PXQmJmw9PT1hfHwobz1yZXNpemVJbWFnZU1hc2sobyxuLmJwYyxjLGwsdCxhKSl9ZWxzZSBpZihzKWlmKHMgaW5zdGFuY2VvZiBQREZJbWFnZSl7Yz1zLndpZHRoO2w9cy5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYypsKTtzLm51bUNvbXBzPTE7YXdhaXQgcy5maWxsR3JheUJ1ZmZlcihvKTtmb3IoaD0wLHU9YypsO2g8dTsrK2gpb1toXT0yNTUtb1toXTtjPT09dCYmbD09PWF8fChvPXJlc2l6ZUltYWdlTWFzayhvLHMuYnBjLGMsbCx0LGEpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBtYXNrIGZvcm1hdC4iKTt7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkodCphKTtjb25zdCBlPXRoaXMubnVtQ29tcHM7Zm9yKGg9MCx1PXQqYTtoPHU7KytoKXtsZXQgdD0wO2NvbnN0IGE9aCplO2ZvcihkPTA7ZDxlOysrZCl7Y29uc3QgZT1pW2ErZF0scj0yKmQ7aWYoZTxzW3JdfHxlPnNbcisxXSl7dD0yNTU7YnJlYWt9fW9baF09dH19fWlmKG8pZm9yKGg9MCxkPTMsdT10KnI7aDx1OysraCxkKz00KWVbZF09b1toXTtlbHNlIGZvcihoPTAsZD0zLHU9dCpyO2g8dTsrK2gsZCs9NCllW2RdPTI1NX11bmRvUHJlYmxlbmQoZSx0LGEpe2NvbnN0IHI9dGhpcy5zbWFzaz8ubWF0dGU7aWYoIXIpcmV0dXJuO2NvbnN0IGk9dGhpcy5jb2xvclNwYWNlLmdldFJnYihyLDApLG49aVswXSxzPWlbMV0sbz1pWzJdLGM9dCphKjQ7Zm9yKGxldCB0PTA7dDxjO3QrPTQpe2NvbnN0IGE9ZVt0KzNdO2lmKDA9PT1hKXtlW3RdPTI1NTtlW3QrMV09MjU1O2VbdCsyXT0yNTU7Y29udGludWV9Y29uc3Qgcj0yNTUvYTtlW3RdPShlW3RdLW4pKnIrbjtlW3QrMV09KGVbdCsxXS1zKSpyK3M7ZVt0KzJdPShlW3QrMl0tbykqcitvfX1hc3luYyBjcmVhdGVJbWFnZURhdGEoZT0hMSx0PSExKXtjb25zdCBhPXRoaXMuZHJhd1dpZHRoLHI9dGhpcy5kcmF3SGVpZ2h0LGk9e3dpZHRoOmEsaGVpZ2h0OnIsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZSxraW5kOjAsZGF0YTpudWxsfSxuPXRoaXMubnVtQ29tcHMscz10aGlzLndpZHRoLG89dGhpcy5oZWlnaHQsYz10aGlzLmJwYyxsPXMqbipjKzc+PjMsaD10JiZJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChhLHIpO2lmKCF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiYiRGV2aWNlUkdCQSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSl7aS5raW5kPXY7Y29uc3QgZT1pLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qcyo0LHt9KTtyZXR1cm4gdD9oP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShpLCExKTp0aGlzLmNyZWF0ZUJpdG1hcCh2LGEscixlKTppfWlmKCFlKXtsZXQgZTsiRGV2aWNlR3JheSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSYmMT09PWM/ZT1rOiJEZXZpY2VSR0IiIT09dGhpcy5jb2xvclNwYWNlLm5hbWV8fDghPT1jfHx0aGlzLm5lZWRzRGVjb2RlfHwoZT1DKTtpZihlJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmYT09PXMmJnI9PT1vKXtjb25zdCBuPWF3YWl0IHRoaXMuIyQocyxvKTtpZihuKXJldHVybiBuO2NvbnN0IGM9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qbCx7fSk7aWYodClyZXR1cm4gaD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uoe2RhdGE6YyxraW5kOmUsd2lkdGg6YSxoZWlnaHQ6cixpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfSx0aGlzLm5lZWRzRGVjb2RlKTp0aGlzLmNyZWF0ZUJpdG1hcChlLHMsbyxjKTtpLmtpbmQ9ZTtpLmRhdGE9YztpZih0aGlzLm5lZWRzRGVjb2RlKXthc3NlcnQoZT09PWssIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9aS5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIGl9aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIEpwZWdTdHJlYW0mJiF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiYhdGhpcy5uZWVkc0RlY29kZSl7bGV0IGU9bypsO2lmKHQmJiFoKXtsZXQgdD0hMTtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9NDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlUkdCIjplPWUvMyo0O3Q9ITA7YnJlYWs7Y2FzZSJEZXZpY2VDTVlLIjp0PSEwfWlmKHQpe2NvbnN0IHQ9YXdhaXQgdGhpcy4jJChhLHIpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOmEsZHJhd0hlaWdodDpyLGZvcmNlUkdCQTohMH0pO3JldHVybiB0aGlzLmNyZWF0ZUJpdG1hcCh2LGEscixpKX19ZWxzZSBzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjppLmtpbmQ9QztpLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6cixmb3JjZVJHQjohMH0pO3JldHVybiBoP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShpKTppfX19Y29uc3QgdT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobypsLHtpbnRlcm5hbDohMH0pLGQ9MHx1Lmxlbmd0aC9sKnIvbyxmPXRoaXMuZ2V0Q29tcG9uZW50cyh1KTtsZXQgZyxwLG0sYix5LHc7aWYodCYmIWgpe209bmV3IE9mZnNjcmVlbkNhbnZhcyhhLHIpO2I9bS5nZXRDb250ZXh0KCIyZCIpO3k9Yi5jcmVhdGVJbWFnZURhdGEoYSxyKTt3PXkuZGF0YX1pLmtpbmQ9djtpZihlfHx0aGlzLnNtYXNrfHx0aGlzLm1hc2spe3QmJiFofHwodz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSpyKjQpKTtnPTE7cD0hMDthd2FpdCB0aGlzLmZpbGxPcGFjaXR5KHcsYSxyLGQsZil9ZWxzZXtpZighdHx8aCl7aS5raW5kPUM7dz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSpyKjMpO2c9MH1lbHNle25ldyBVaW50MzJBcnJheSh3LmJ1ZmZlcikuZmlsbChGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSk7Zz0xfXA9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoZik7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2IodyxzLG8sYSxyLGQsYyxmLGcpO3AmJnRoaXMudW5kb1ByZWJsZW5kKHcsYSxkKTtpZih0JiYhaCl7Yi5wdXRJbWFnZURhdGEoeSwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6YSxoZWlnaHQ6cixiaXRtYXA6bS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1pLmRhdGE9dztyZXR1cm4gaD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UoaSk6aX1hc3luYyBmaWxsR3JheUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMubnVtQ29tcHM7aWYoMSE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsaT10aGlzLmJwYyxuPWEqdCppKzc+PjMscz1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMocipuLHtpbnRlcm5hbDohMH0pLG89dGhpcy5nZXRDb21wb25lbnRzKHMpO2xldCBjLGw7aWYoMT09PWkpe2w9YSpyO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGM9MDtjPGw7KytjKWVbY109b1tjXS0xJjI1NTtlbHNlIGZvcihjPTA7YzxsOysrYyllW2NdPTI1NSYtb1tjXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobyk7bD1hKnI7Y29uc3QgaD0yNTUvKCgxPDxpKS0xKTtmb3IoYz0wO2M8bDsrK2MpZVtjXT1oKm9bY119Y3JlYXRlQml0bWFwKGUsdCxhLHIpe2NvbnN0IGk9bmV3IE9mZnNjcmVlbkNhbnZhcyh0LGEpLG49aS5nZXRDb250ZXh0KCIyZCIpO2xldCBzO2lmKGU9PT12KXM9bmV3IEltYWdlRGF0YShyLHQsYSk7ZWxzZXtzPW4uY3JlYXRlSW1hZ2VEYXRhKHQsYSk7Y29udmVydFRvUkdCQSh7a2luZDplLHNyYzpyLGRlc3Q6bmV3IFVpbnQzMkFycmF5KHMuZGF0YS5idWZmZXIpLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTp0aGlzLm5lZWRzRGVjb2RlfSl9bi5wdXRJbWFnZURhdGEocywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6YSxiaXRtYXA6aS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1hc3luYyMkKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLmltYWdlLmdldFRyYW5zZmVyYWJsZUltYWdlKCk7cmV0dXJuIGE/e2RhdGE6bnVsbCx3aWR0aDplLGhlaWdodDp0LGJpdG1hcDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9Om51bGx9YXN5bmMgZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOnI9ITEsZm9yY2VSR0I6aT0hMSxpbnRlcm5hbDpuPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0JBPSEhcjt0aGlzLmltYWdlLmZvcmNlUkdCPSEhaTtjb25zdCBzPWF3YWl0IHRoaXMuaW1hZ2UuZ2V0SW1hZ2VEYXRhKGUsdGhpcy5qcHhEZWNvZGVyT3B0aW9ucyk7aWYobnx8dGhpcy5pbWFnZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSlyZXR1cm4gczthc3NlcnQocyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksJ1BERkltYWdlLmdldEltYWdlQnl0ZXM6IFVuc3VwcG9ydGVkICJpbWFnZUJ5dGVzIiB0eXBlLicpO3JldHVybiBuZXcgVWludDhBcnJheShzKX19Y29uc3QgQm49T2JqZWN0LmZyZWV6ZSh7bWF4SW1hZ2VTaXplOi0xLGRpc2FibGVGb250RmFjZTohMSxpZ25vcmVFcnJvcnM6ITEsaXNFdmFsU3VwcG9ydGVkOiEwLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiExLGlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkOiExLGNhbnZhc01heEFyZWFJbkJ5dGVzOi0xLGZvbnRFeHRyYVByb3BlcnRpZXM6ITEsdXNlU3lzdGVtRm9udHM6ITAsdXNlV2FzbTohMCx1c2VXb3JrZXJGZXRjaDohMCxjTWFwVXJsOm51bGwsaWNjVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDpudWxsLHdhc21Vcmw6bnVsbH0pLFJuPTEsTm49MixFbj1Qcm9taXNlLnJlc29sdmUoKTtmdW5jdGlvbiBub3JtYWxpemVCbGVuZE1vZGUoZSx0PSExKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPW5vcm1hbGl6ZUJsZW5kTW9kZSh0LCEwKTtpZihlKXJldHVybiBlfXdhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGUgQXJyYXk6ICR7ZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWlmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifWlmKHQpcmV0dXJuIG51bGw7d2FybihgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZTogJHtlLm5hbWV9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1mdW5jdGlvbiBhZGRDYWNoZWRJbWFnZU9wcyhlLHtvYmpJZDp0LGZuOmEsYXJnczpyLG9wdGlvbmFsQ29udGVudDppLGhhc01hc2s6bn0pe3QmJmUuYWRkRGVwZW5kZW5jeSh0KTtlLmFkZEltYWdlT3BzKGEscixpLG4pO2E9PT1WdCYmclswXT8uY291bnQ+MCYmclswXS5jb3VudCsrfWNsYXNzIFRpbWVTbG90TWFuYWdlcntzdGF0aWMgVElNRV9TTE9UX0RVUkFUSU9OX01TPTIwO3N0YXRpYyBDSEVDS19USU1FX0VWRVJZPTEwMDtjb25zdHJ1Y3Rvcigpe3RoaXMucmVzZXQoKX1jaGVjaygpe2lmKCsrdGhpcy5jaGVja2VkPFRpbWVTbG90TWFuYWdlci5DSEVDS19USU1FX0VWRVJZKXJldHVybiExO3RoaXMuY2hlY2tlZD0wO3JldHVybiB0aGlzLmVuZFRpbWU8PURhdGUubm93KCl9cmVzZXQoKXt0aGlzLmVuZFRpbWU9RGF0ZS5ub3coKStUaW1lU2xvdE1hbmFnZXIuVElNRV9TTE9UX0RVUkFUSU9OX01TO3RoaXMuY2hlY2tlZD0wfX1jbGFzcyBQYXJ0aWFsRXZhbHVhdG9ye2NvbnN0cnVjdG9yKHt4cmVmOmUsaGFuZGxlcjp0LHBhZ2VJbmRleDphLGlkRmFjdG9yeTpyLGZvbnRDYWNoZTppLGJ1aWx0SW5DTWFwQ2FjaGU6bixzdGFuZGFyZEZvbnREYXRhQ2FjaGU6cyxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6byxnbG9iYWxJbWFnZUNhY2hlOmMsc3lzdGVtRm9udENhY2hlOmwsb3B0aW9uczpoPW51bGx9KXt0aGlzLnhyZWY9ZTt0aGlzLmhhbmRsZXI9dDt0aGlzLnBhZ2VJbmRleD1hO3RoaXMuaWRGYWN0b3J5PXI7dGhpcy5mb250Q2FjaGU9aTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bjt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1zO3RoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlPW87dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9bDt0aGlzLm9wdGlvbnM9aHx8Qm47dGhpcy50eXBlM0ZvbnRSZWZzPW51bGw7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlPW5ldyBSZWdpb25hbEltYWdlQ2FjaGU7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGRmRnVuY3Rpb25GYWN0b3J5IixuZXcgUERGRnVuY3Rpb25GYWN0b3J5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzRXZhbFN1cHBvcnRlZH0pKX1nZXQgcGFyc2luZ1R5cGUzRm9udCgpe3JldHVybiEhdGhpcy50eXBlM0ZvbnRSZWZzfWNsb25lKGU9bnVsbCl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO3Qub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpO3JldHVybiB0fWhhc0JsZW5kTW9kZXMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4hMTtpZihlLm9iaklkJiZ0LmhhcyhlLm9iaklkKSlyZXR1cm4hMTtjb25zdCBhPW5ldyBSZWZTZXQodCk7ZS5vYmpJZCYmYS5wdXQoZS5vYmpJZCk7Y29uc3Qgcj1bZV0saT10aGlzLnhyZWY7Zm9yKDtyLmxlbmd0aDspe2NvbnN0IGU9ci5zaGlmdCgpLHQ9ZS5nZXQoIkV4dEdTdGF0ZSIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiB0LmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhlKSljb250aW51ZTt0cnl7ZT1pLmZldGNoKGUpfWNhdGNoKHQpe2EucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7ZS5vYmpJZCYmYS5wdXQoZS5vYmpJZCk7Y29uc3QgdD1lLmdldCgiQk0iKTtpZih0IGluc3RhbmNlb2YgTmFtZSl7aWYoIk5vcm1hbCIhPT10Lm5hbWUpcmV0dXJuITB9ZWxzZSBpZih2b2lkIDAhPT10JiZBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIE5hbWUmJiJOb3JtYWwiIT09ZS5uYW1lKXJldHVybiEwfWNvbnN0IG49ZS5nZXQoIlhPYmplY3QiKTtpZihuIGluc3RhbmNlb2YgRGljdClmb3IobGV0IGUgb2Ygbi5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9aS5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTtpbmZvKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgWE9iamVjdDogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSljb250aW51ZTtlLmRpY3Qub2JqSWQmJmEucHV0KGUuZGljdC5vYmpJZCk7Y29uc3QgdD1lLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmKCF0Lm9iaklkfHwhYS5oYXModC5vYmpJZCkpKXtyLnB1c2godCk7dC5vYmpJZCYmYS5wdXQodC5vYmpJZCl9fX1mb3IoY29uc3QgZSBvZiBhKXQucHV0KGUpO3JldHVybiExfWFzeW5jIGZldGNoQnVpbHRJbkNNYXAoZSl7Y29uc3QgdD10aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7bGV0IGE7YT10aGlzLm9wdGlvbnMudXNlV29ya2VyRmV0Y2g/e2NNYXBEYXRhOmF3YWl0IGZldGNoQmluYXJ5RGF0YShgJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCksaXNDb21wcmVzc2VkOiEwfTphd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHt0eXBlOiJjTWFwUmVhZGVyRmFjdG9yeSIsbmFtZTplfSk7dGhpcy5idWlsdEluQ01hcENhY2hlLnNldChlLGEpO3JldHVybiBhfWFzeW5jIGZldGNoU3RhbmRhcmRGb250RGF0YShlKXtjb25zdCB0PXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmdldChlKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQpO2lmKHRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmIlN5bWJvbCIhPT1lJiYiWmFwZkRpbmdiYXRzIiE9PWUpcmV0dXJuIG51bGw7Y29uc3QgYT1ZcigpW2VdO2xldCByO3RyeXtyPXRoaXMub3B0aW9ucy51c2VXb3JrZXJGZXRjaD9hd2FpdCBmZXRjaEJpbmFyeURhdGEoYCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWApOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse3R5cGU6InN0YW5kYXJkRm9udERhdGFGYWN0b3J5IixmaWxlbmFtZTphfSl9Y2F0Y2goZSl7d2FybihlKTtyZXR1cm4gbnVsbH10aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5zZXQoZSxyKTtyZXR1cm4gbmV3IFN0cmVhbShyKX1hc3luYyBidWlsZEZvcm1YT2JqZWN0KGUsdCxhLHIsaSxuLHMsbyl7Y29uc3R7ZGljdDpjfT10LGw9bG9va3VwTWF0cml4KGMuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpLGg9bG9va3VwTm9ybWFsUmVjdChjLmdldEFycmF5KCJCQm94IiksbnVsbCk7bGV0IHUsZDtjLmhhcygiT0MiKSYmKHU9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhjLmdldCgiT0MiKSxlKSk7dm9pZCAwIT09dSYmci5hZGRPcChqdCxbIk9DIix1XSk7Y29uc3QgZj1jLmdldCgiR3JvdXAiKTtpZihmKXtkPXttYXRyaXg6bCxiYm94Omgsc21hc2s6YSxpc29sYXRlZDohMSxrbm9ja291dDohMX07bGV0IHQ9bnVsbDtpZihpc05hbWUoZi5nZXQoIlMiKSwiVHJhbnNwYXJlbmN5Iikpe2QuaXNvbGF0ZWQ9Zi5nZXQoIkkiKXx8ITE7ZC5rbm9ja291dD1mLmdldCgiSyIpfHwhMTtpZihmLmhhcygiQ1MiKSl7Y29uc3QgYT10aGlzLl9nZXRDb2xvclNwYWNlKGYuZ2V0UmF3KCJDUyIpLGUscyk7dD1hIGluc3RhbmNlb2YgQ29sb3JTcGFjZT9hOmF3YWl0IHRoaXMuX2hhbmRsZUNvbG9yU3BhY2UoYSl9fWlmKGE/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZVV0aWxzLnJnYjthLmJhY2tkcm9wPXQuZ2V0UmdiSGV4KGEuYmFja2Ryb3AsMCl9ci5hZGRPcChXdCxbZF0pfWNvbnN0IGc9W2wmJm5ldyBGbG9hdDMyQXJyYXkobCksIWYmJmgmJm5ldyBGbG9hdDMyQXJyYXkoaCl8fG51bGxdO3IuYWRkT3AocXQsZyk7Y29uc3QgcD1jLmdldCgiUmVzb3VyY2VzIik7YXdhaXQgdGhpcy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6aSxyZXNvdXJjZXM6cCBpbnN0YW5jZW9mIERpY3Q/cDplLG9wZXJhdG9yTGlzdDpyLGluaXRpYWxTdGF0ZTpuLHByZXZSZWZzOm99KTtyLmFkZE9wKEh0LFtdKTtmJiZyLmFkZE9wKHp0LFtkXSk7dm9pZCAwIT09dSYmci5hZGRPcChfdCxbXSl9X3NlbmRJbWdEYXRhKGUsdCxhPSExKXtjb25zdCByPXQ/W3QuYml0bWFwfHx0LmRhdGEuYnVmZmVyXTpudWxsO3JldHVybiB0aGlzLnBhcnNpbmdUeXBlM0ZvbnR8fGE/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW2UsIkltYWdlIix0XSxyKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbZSx0aGlzLnBhZ2VJbmRleCwiSW1hZ2UiLHRdLHIpfWFzeW5jIGJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczplLGltYWdlOnQsaXNJbmxpbmU6YT0hMSxvcGVyYXRvckxpc3Q6cixjYWNoZUtleTppLGxvY2FsSW1hZ2VDYWNoZTpuLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KXtjb25zdHttYXhJbWFnZVNpemU6byxpZ25vcmVFcnJvcnM6Yyxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpsfT10aGlzLm9wdGlvbnMse2RpY3Q6aH09dCx1PWgub2JqSWQsZD1oLmdldCgiVyIsIldpZHRoIiksZj1oLmdldCgiSCIsIkhlaWdodCIpO2lmKCFkfHwibnVtYmVyIiE9dHlwZW9mIGR8fCFmfHwibnVtYmVyIiE9dHlwZW9mIGYpe3dhcm4oIkltYWdlIGRpbWVuc2lvbnMgYXJlIG1pc3NpbmcsIG9yIG5vdCBudW1iZXJzLiIpO3JldHVybn1pZigtMSE9PW8mJmQqZj5vKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZighYyl0aHJvdyBuZXcgRXJyb3IoZSk7d2FybihlKTtyZXR1cm59bGV0IGc7aC5oYXMoIk9DIikmJihnPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoaC5nZXQoIk9DIiksZSkpO2xldCBwLG0sYjtpZihoLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe3A9YXdhaXQgUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1hZ2U6dCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpsJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250fSk7aWYocC5pc1NpbmdsZU9wYXF1ZVBpeGVsKXttPXRhO2I9W107ci5hZGRJbWFnZU9wcyhtLGIsZyk7aWYoaSl7Y29uc3QgZT17Zm46bSxhcmdzOmIsb3B0aW9uYWxDb250ZW50Omd9O24uc2V0KGksdSxlKTt1JiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsdSxlKX1yZXR1cm59aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXtiPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHtkYXRhOmUsd2lkdGg6dCxoZWlnaHQ6YX0pe2lmKHQ+MWUzfHxhPjFlMylyZXR1cm4gbnVsbDtjb25zdCByPW5ldyBVaW50OEFycmF5KFswLDIsNCwwLDEsMCw1LDQsOCwxMCwwLDgsMCwyLDEsMF0pLGk9dCsxLG49bmV3IFVpbnQ4QXJyYXkoaSooYSsxKSk7bGV0IHMsbyxjO2NvbnN0IGw9dCs3Ji04LGg9bmV3IFVpbnQ4QXJyYXkobCphKTtsZXQgdT0wO2Zvcihjb25zdCB0IG9mIGUpe2xldCBlPTEyODtmb3IoO2U+MDspe2hbdSsrXT10JmU/MDoyNTU7ZT4+PTF9fWxldCBkPTA7dT0wO2lmKDAhPT1oW3VdKXtuWzBdPTE7KytkfWZvcihvPTE7bzx0O28rKyl7aWYoaFt1XSE9PWhbdSsxXSl7bltvXT1oW3VdPzI6MTsrK2R9dSsrfWlmKDAhPT1oW3VdKXtuW29dPTI7KytkfWZvcihzPTE7czxhO3MrKyl7dT1zKmw7Yz1zKmk7aWYoaFt1LWxdIT09aFt1XSl7bltjXT1oW3VdPzE6ODsrK2R9bGV0IGU9KGhbdV0/NDowKSsoaFt1LWxdPzg6MCk7Zm9yKG89MTtvPHQ7bysrKXtlPShlPj4yKSsoaFt1KzFdPzQ6MCkrKGhbdS1sKzFdPzg6MCk7aWYocltlXSl7bltjK29dPXJbZV07KytkfXUrK31pZihoW3UtbF0hPT1oW3VdKXtuW2Mrb109aFt1XT8yOjQ7KytkfWlmKGQ+MWUzKXJldHVybiBudWxsfXU9bCooYS0xKTtjPXMqaTtpZigwIT09aFt1XSl7bltjXT04OysrZH1mb3Iobz0xO288dDtvKyspe2lmKGhbdV0hPT1oW3UrMV0pe25bYytvXT1oW3VdPzQ6ODsrK2R9dSsrfWlmKDAhPT1oW3VdKXtuW2Mrb109NDsrK2R9aWYoZD4xZTMpcmV0dXJuIG51bGw7Y29uc3QgZj1uZXcgSW50MzJBcnJheShbMCxpLC0xLDAsLWksMCwwLDAsMV0pLGc9W10se2E6cCxiOm0sYzpiLGQ6eSxlOncsZjp4fT0obmV3IERPTU1hdHJpeCkuc2NhbGVTZWxmKDEvdCwtMS9hKS50cmFuc2xhdGVTZWxmKDAsLWEpO2ZvcihzPTA7ZCYmczw9YTtzKyspe2xldCBlPXMqaTtjb25zdCBhPWUrdDtmb3IoO2U8YSYmIW5bZV07KWUrKztpZihlPT09YSljb250aW51ZTtsZXQgcj1lJWksbz1zO2cucHVzaChzYSxwKnIrYipvK3csbSpyK3kqbyt4KTtjb25zdCBjPWU7bGV0IGw9bltlXTtkb3tjb25zdCB0PWZbbF07ZG97ZSs9dH13aGlsZSghbltlXSk7Y29uc3QgYT1uW2VdO2lmKDUhPT1hJiYxMCE9PWEpe2w9YTtuW2VdPTB9ZWxzZXtsPWEmNTEqbD4+NDtuW2VdJj1sPj4yfGw8PDJ9cj1lJWk7bz1lL2l8MDtnLnB1c2gob2EscCpyK2Iqbyt3LG0qcit5Km8reCk7bltlXXx8LS1kfXdoaWxlKGMhPT1lKTstLXN9cmV0dXJuW25hLFtuZXcgRmxvYXQzMkFycmF5KGcpXSxuZXcgRmxvYXQzMkFycmF5KFswLDAsdCxhXSldfShwKTtpZihiKXtyLmFkZEltYWdlT3BzKGFhLGIsZyk7cmV0dXJufXdhcm4oIkNhbm5vdCBjb21waWxlIFR5cGUzIGdseXBoLiIpO3IuYWRkSW1hZ2VPcHMoVnQsW3BdLGcpO3JldHVybn1jb25zdCBlPWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3IuYWRkRGVwZW5kZW5jeShlKTtwLmRhdGFMZW49cC5iaXRtYXA/cC53aWR0aCpwLmhlaWdodCo0OnAuZGF0YS5sZW5ndGg7dGhpcy5fc2VuZEltZ0RhdGEoZSxwKTttPVZ0O2I9W3tkYXRhOmUsd2lkdGg6cC53aWR0aCxoZWlnaHQ6cC5oZWlnaHQsaW50ZXJwb2xhdGU6cC5pbnRlcnBvbGF0ZSxjb3VudDoxfV07ci5hZGRJbWFnZU9wcyhtLGIsZyk7aWYoaSl7Y29uc3QgdD17b2JqSWQ6ZSxmbjptLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6Z307bi5zZXQoaSx1LHQpO3UmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCx1LHQpfXJldHVybn1jb25zdCB5PWguaGFzKCJTTWFzayIpfHxoLmhhcygiTWFzayIpO2lmKGEmJmQrZjwyMDAmJiF5KXt0cnl7Y29uc3QgaT1uZXcgUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSk7cD1hd2FpdCBpLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7ci5hZGRJbWFnZU9wcyhZdCxbcF0sZyl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCFjKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgdz1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLHg9ITEsUz1udWxsO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl3PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7d31gO2Vsc2UgaWYoaSYmdSl7eD10aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2hvdWxkQ2FjaGUodSx0aGlzLnBhZ2VJbmRleCk7aWYoeCl7YXNzZXJ0KCFhLCJDYW5ub3QgY2FjaGUgYW4gaW5saW5lIGltYWdlIGdsb2JhbGx5LiIpO3c9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHt3fWB9fXIuYWRkRGVwZW5kZW5jeSh3KTttPUp0O2I9W3csZCxmXTtyLmFkZEltYWdlT3BzKG0sYixnLHkpO2lmKHgpe1M9e29iaklkOncsZm46bSxhcmdzOmIsb3B0aW9uYWxDb250ZW50OmcsaGFzTWFzazp5LGJ5dGVTaXplOjB9O2lmKHRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5oYXNEZWNvZGVGYWlsZWQodSkpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKHUsUyk7dGhpcy5fc2VuZEltZ0RhdGEodyxudWxsLHgpO3JldHVybn1pZihkKmY+MjVlNHx8eSl7Y29uc3QgZT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJjb21tb25vYmoiLFt3LCJDb3B5TG9jYWxJbWFnZSIse2ltYWdlUmVmOnV9XSk7aWYoZSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEodSxTKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUodSxlKTtyZXR1cm59fX1QREZJbWFnZS5idWlsZEltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pLnRoZW4oKGFzeW5jIGU9PntwPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLGwpO3AuZGF0YUxlbj1wLmJpdG1hcD9wLndpZHRoKnAuaGVpZ2h0KjQ6cC5kYXRhLmxlbmd0aDtwLnJlZj11O3gmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGRCeXRlU2l6ZSh1LHAuZGF0YUxlbik7cmV0dXJuIHRoaXMuX3NlbmRJbWdEYXRhKHcscCx4KX0pKS5jYXRjaCgoZT0+e3dhcm4oYFVuYWJsZSB0byBkZWNvZGUgaW1hZ2UgIiR7d30iOiAiJHtlfSIuYCk7dSYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZERlY29kZUZhaWxlZCh1KTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEodyxudWxsLHgpfSkpO2lmKGkpe2NvbnN0IGU9e29iaklkOncsZm46bSxhcmdzOmIsb3B0aW9uYWxDb250ZW50OmcsaGFzTWFzazp5fTtuLnNldChpLHUsZSk7aWYodSl7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLHUsZSk7aWYoeCl7YXNzZXJ0KFMsIlRoZSBnbG9iYWwgY2FjaGUtZGF0YSBtdXN0IGJlIGF2YWlsYWJsZS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSh1LFMpfX19fWhhbmRsZVNNYXNrKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89ZS5nZXQoIkciKSxjPXtzdWJ0eXBlOmUuZ2V0KCJTIikubmFtZSxiYWNrZHJvcDplLmdldCgiQkMiKX0sbD1lLmdldCgiVFIiKTtpZihpc1BERkZ1bmN0aW9uKGwpKXtjb25zdCBlPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUobCksdD1uZXcgVWludDhBcnJheSgyNTYpLGE9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2FbMF09ci8yNTU7ZShhLDAsYSwwKTt0W3JdPTI1NSphWzBdfDB9Yy50cmFuc2Zlck1hcD10fXJldHVybiB0aGlzLmJ1aWxkRm9ybVhPYmplY3QodCxvLGMsYSxyLGkuc3RhdGUuY2xvbmUoe25ld1BhdGg6ITB9KSxuLHMpfWhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oZSl7bGV0IHQ7aWYoQXJyYXkuaXNBcnJheShlKSl0PWU7ZWxzZXtpZighaXNQREZGdW5jdGlvbihlKSlyZXR1cm4gbnVsbDt0PVtlXX1jb25zdCBhPVtdO2xldCByPTAsaT0wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cisrO2lmKGlzTmFtZSh0LCJJZGVudGl0eSIpKXthLnB1c2gobnVsbCk7Y29udGludWV9aWYoIWlzUERGRnVuY3Rpb24odCkpcmV0dXJuIG51bGw7Y29uc3Qgbj10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHQpLHM9bmV3IFVpbnQ4QXJyYXkoMjU2KSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXtvWzBdPWUvMjU1O24obywwLG8sMCk7c1tlXT0yNTUqb1swXXwwfWEucHVzaChzKTtpKyt9cmV0dXJuIDEhPT1yJiY0IT09cnx8MD09PWk/bnVsbDphfWhhbmRsZVRpbGluZ1R5cGUoZSx0LGEscixpLG4scyxvKXtjb25zdCBjPW5ldyBPcGVyYXRvckxpc3QsbD1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W2kuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnIsdGFzazpzLHJlc291cmNlczpsLG9wZXJhdG9yTGlzdDpjfSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBhPWMuZ2V0SVIoKSxyPWdldFRpbGluZ1BhdHRlcm5JUihhLGksdCk7bi5hZGREZXBlbmRlbmNpZXMoYy5kZXBlbmRlbmNpZXMpO24uYWRkT3AoZSxyKTtpLm9iaklkJiZvLnNldChudWxsLGkub2JqSWQse29wZXJhdG9yTGlzdElSOmEsZGljdDppfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9YXN5bmMgaGFuZGxlU2V0Rm9udChlLHQsYSxyLGksbixzPW51bGwsbz1udWxsKXtjb25zdCBjPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbCxsPWF3YWl0IHRoaXMubG9hZEZvbnQoYyxhLGUsaSxzLG8pO2wuZm9udC5pc1R5cGUzRm9udCYmci5hZGREZXBlbmRlbmNpZXMobC50eXBlM0RlcGVuZGVuY2llcyk7bi5mb250PWwuZm9udDtsLnNlbmQodGhpcy5oYW5kbGVyKTtyZXR1cm4gbC5sb2FkZWROYW1lfWhhbmRsZVRleHQoZSx0KXtjb25zdCBhPXQuZm9udCxyPWEuY2hhcnNUb0dseXBocyhlKTtpZihhLmRhdGEpeyghISh0LnRleHRSZW5kZXJpbmdNb2RlJlMpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLHIsdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIHJ9ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgRm9ybWF0RXJyb3IoIk1pc3Npbmcgc2V0Rm9udCAoVGYpIG9wZXJhdG9yIGJlZm9yZSB0ZXh0IHJlbmRlcmluZyBvcGVyYXRvci4iKTtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyB0O3dhcm4oYGVuc3VyZVN0YXRlRm9udDogIiR7dH0iLmApfWFzeW5jIHNldEdTdGF0ZSh7cmVzb3VyY2VzOmUsZ1N0YXRlOnQsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cix0YXNrOmksc3RhdGVNYW5hZ2VyOm4sbG9jYWxHU3RhdGVDYWNoZTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sc2VlblJlZnM6Y30pe2NvbnN0IGw9dC5vYmpJZDtsZXQgaD0hMDtjb25zdCB1PVtdO2xldCBkPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdFtyLHNdb2YgdClzd2l0Y2gocil7Y2FzZSJUeXBlIjpicmVhaztjYXNlIkxXIjppZigibnVtYmVyIiE9dHlwZW9mIHMpe3dhcm4oYEludmFsaWQgTFcgKGxpbmUgd2lkdGgpOiAke3N9YCk7YnJlYWt9dS5wdXNoKFtyLE1hdGguYWJzKHMpXSk7YnJlYWs7Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjp1LnB1c2goW3Isc10pO2JyZWFrO2Nhc2UiRm9udCI6aD0hMTtkPWQudGhlbigoKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsc1swXSxhLGksbi5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO3UucHVzaChbcixbZSxzWzFdXV0pfSkpKSk7YnJlYWs7Y2FzZSJCTSI6dS5wdXNoKFtyLG5vcm1hbGl6ZUJsZW5kTW9kZShzKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKGlzTmFtZShzLCJOb25lIikpe3UucHVzaChbciwhMV0pO2JyZWFrfWlmKHMgaW5zdGFuY2VvZiBEaWN0KXtoPSExO2Q9ZC50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhzLGUsYSxpLG4sbyxjKSkpO3UucHVzaChbciwhMF0pfWVsc2Ugd2FybigiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKHMpO3UucHVzaChbcix0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOmluZm8oImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIityKTticmVhaztkZWZhdWx0OmluZm8oIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK3IpfWF3YWl0IGQ7dS5sZW5ndGg+MCYmYS5hZGRPcChEZSxbdV0pO2gmJnMuc2V0KHIsbCx1KX1sb2FkRm9udChlLHQsYSxyLGk9bnVsbCxuPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dH0pO2xldCBzO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKHM9dCk7ZWxzZXtjb25zdCB0PWEuZ2V0KCJGb250Iik7dCYmKHM9dC5nZXRSYXcoZSkpfWlmKHMpe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKHMpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMocykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihzKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1pfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpvLHJlc29sdmU6Y309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGw7dHJ5e2w9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7bC5jc3NGb250SW5mbz1ufWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmgsaGFzaDp1fT1sLGQ9cyBpbnN0YW5jZW9mIFJlZjtsZXQgZjtpZih1JiZoIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1oLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW3VdKXtjb25zdCB0PWVbdV0uYWxpYXNSZWY7aWYoZCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhzLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyl9fWVsc2UgZVt1XT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtkJiYoZVt1XS5hbGlhc1JlZj1zKTtmPWVbdV0uZm9udElEfWVsc2UgZj10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQoZj8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGQpdGhpcy5mb250Q2FjaGUucHV0KHMsbyk7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke2Z9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxvKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtmfWA7dGhpcy50cmFuc2xhdGVGb250KGwpLnRoZW4oKGFzeW5jIGU9Pntjb25zdCBpPW5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dH0pO2lmKGUuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IGkubG9hZFR5cGUzRGF0YSh0aGlzLGEscil9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKGBUeXBlMyBmb250IGxvYWQgZXJyb3I6ICR7ZX1gKX1jKGkpfSkpLmNhdGNoKChlPT57d2FybihgbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO2MobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250Om5ldyBFcnJvckZvbnQoZT8ubWVzc2FnZSksZGljdDp0fSkpfSkpO3JldHVybiBvfWJ1aWxkUGF0aChlLHQsYSl7Y29uc3R7cGF0aE1pbk1heDpyLHBhdGhCdWZmZXI6aX09YTtzd2l0Y2goMHxlKXtjYXNlIFhlOntjb25zdCBlPWEuY3VycmVudFBvaW50WD10WzBdLG49YS5jdXJyZW50UG9pbnRZPXRbMV0scz10WzJdLG89dFszXSxjPWUrcyxsPW4rbzswPT09c3x8MD09PW8/aS5wdXNoKHNhLGUsbixvYSxjLGwsbGEpOmkucHVzaChzYSxlLG4sb2EsYyxuLG9hLGMsbCxvYSxlLGwsbGEpO1V0aWwucmVjdEJvdW5kaW5nQm94KGUsbixjLGwscik7YnJlYWt9Y2FzZSBFZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFg9dFswXSxuPWEuY3VycmVudFBvaW50WT10WzFdO2kucHVzaChzYSxlLG4pO1V0aWwucG9pbnRCb3VuZGluZ0JveChlLG4scik7YnJlYWt9Y2FzZSBQZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFg9dFswXSxuPWEuY3VycmVudFBvaW50WT10WzFdO2kucHVzaChvYSxlLG4pO1V0aWwucG9pbnRCb3VuZGluZ0JveChlLG4scik7YnJlYWt9Y2FzZSBMZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFgsbj1hLmN1cnJlbnRQb2ludFksW3MsbyxjLGwsaCx1XT10O2EuY3VycmVudFBvaW50WD1oO2EuY3VycmVudFBvaW50WT11O2kucHVzaChjYSxzLG8sYyxsLGgsdSk7VXRpbC5iZXppZXJCb3VuZGluZ0JveChlLG4scyxvLGMsbCxoLHUscik7YnJlYWt9Y2FzZSBqZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFgsbj1hLmN1cnJlbnRQb2ludFksW3MsbyxjLGxdPXQ7YS5jdXJyZW50UG9pbnRYPWM7YS5jdXJyZW50UG9pbnRZPWw7aS5wdXNoKGNhLGUsbixzLG8sYyxsKTtVdGlsLmJlemllckJvdW5kaW5nQm94KGUsbixlLG4scyxvLGMsbCxyKTticmVha31jYXNlIF9lOntjb25zdCBlPWEuY3VycmVudFBvaW50WCxuPWEuY3VycmVudFBvaW50WSxbcyxvLGMsbF09dDthLmN1cnJlbnRQb2ludFg9YzthLmN1cnJlbnRQb2ludFk9bDtpLnB1c2goY2EscyxvLGMsbCxjLGwpO1V0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxuLHMsbyxjLGwsYyxsLHIpO2JyZWFrfWNhc2UgVWU6aS5wdXNoKGxhKX19X2dldENvbG9yU3BhY2UoZSx0LGEpe3JldHVybiBDb2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxhc3luY0lmTm90Q2FjaGVkOiEwfSl9YXN5bmMgX2hhbmRsZUNvbG9yU3BhY2UoZSl7dHJ5e3JldHVybiBhd2FpdCBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBfaGFuZGxlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfX1wYXJzZVNoYWRpbmcoe3NoYWRpbmc6ZSxyZXNvdXJjZXM6dCxsb2NhbENvbG9yU3BhY2VDYWNoZTphLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpyfSl7bGV0IGksbj1yLmdldChlKTtpZihuKXJldHVybiBuO3RyeXtpPVBhdHRlcm4ucGFyc2VTaGFkaW5nKGUsdGhpcy54cmVmLHQsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LHRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGEpLmdldElSKCl9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlU2hhZGluZyAtIGlnbm9yaW5nIHNoYWRpbmc6ICIke3R9Ii5gKTtyLnNldChlLG51bGwpO3JldHVybiBudWxsfXRocm93IHR9bj1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQmJihuPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7bn1gKTtyLnNldChlLG4pO3RoaXMucGFyc2luZ1R5cGUzRm9udD90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbbiwiUGF0dGVybiIsaV0pOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtuLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixpXSk7cmV0dXJuIG59aGFuZGxlQ29sb3JOKGUsdCxhLHIsaSxuLHMsbyxjLGwpe2NvbnN0IGg9YS5wb3AoKTtpZihoIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdT1pLmdldFJhdyhoLm5hbWUpLGQ9dSBpbnN0YW5jZW9mIFJlZiYmYy5nZXRCeVJlZih1KTtpZihkKXRyeXtjb25zdCBpPXIuYmFzZT9yLmJhc2UuZ2V0UmdiSGV4KGEsMCk6bnVsbCxuPWdldFRpbGluZ1BhdHRlcm5JUihkLm9wZXJhdG9yTGlzdElSLGQuZGljdCxpKTtlLmFkZE9wKHQsbik7cmV0dXJufWNhdGNoe31jb25zdCBmPXRoaXMueHJlZi5mZXRjaElmUmVmKHUpO2lmKGYpe2NvbnN0IGk9ZiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/Zi5kaWN0OmYsaD1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihoPT09Um4pe2NvbnN0IG89ci5iYXNlP3IuYmFzZS5nZXRSZ2JIZXgoYSwwKTpudWxsO3JldHVybiB0aGlzLmhhbmRsZVRpbGluZ1R5cGUodCxvLG4sZixpLGUscyxjKX1pZihoPT09Tm4pe2NvbnN0IGE9aS5nZXQoIlNoYWRpbmciKSxyPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6byxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6bH0pO2lmKHIpe2NvbnN0IGE9bG9va3VwTWF0cml4KGkuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO2UuYWRkT3AodCxbIlNoYWRpbmciLHIsYV0pfXJldHVybn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVyblR5cGU6ICR7aH1gKX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5OYW1lOiAke2h9YCl9X3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSx0LGEpe2lmKCsrdD4xMCl7d2FybigiVmlzaWJpbGl0eSBleHByZXNzaW9uIGlzIHRvbyBkZWVwbHkgbmVzdGVkIik7cmV0dXJufWNvbnN0IHI9ZS5sZW5ndGgsaT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlWzBdKTtpZighKHI8MikmJmkgaW5zdGFuY2VvZiBOYW1lKXtzd2l0Y2goaS5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChpLm5hbWUpO2JyZWFrO2RlZmF1bHQ6d2FybihgSW52YWxpZCBvcGVyYXRvciAke2kubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgaT0xO2k8cjtpKyspe2NvbnN0IHI9ZVtpXSxuPXRoaXMueHJlZi5mZXRjaElmUmVmKHIpO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24obix0LGUpfWVsc2UgciBpbnN0YW5jZW9mIFJlZiYmYS5wdXNoKHIudG9TdHJpbmcoKSl9fWVsc2Ugd2FybigiSW52YWxpZCB2aXNpYmlsaXR5IGV4cHJlc3Npb24iKX1hc3luYyBwYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlLHQpe2xldCBhO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk9wdGlvbmFsIGNvbnRlbnQgcHJvcGVydGllcyBtYWxmb3JtZWQuIik7YT1lfWNvbnN0IHI9YS5nZXQoIlR5cGUiKT8ubmFtZTtpZigiT0NHIj09PXIpcmV0dXJue3R5cGU6cixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1yKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9W107aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgYSBvZiB0KWUucHVzaChhLnRvU3RyaW5nKCkpO2Vsc2UgZS5wdXNoKHQub2JqSWQpO3JldHVybnt0eXBlOnIsaWRzOmUscG9saWN5OmEuZ2V0KCJQIilpbnN0YW5jZW9mIE5hbWU/YS5nZXQoIlAiKS5uYW1lOm51bGwsZXhwcmVzc2lvbjpudWxsfX1pZih0IGluc3RhbmNlb2YgUmVmKXJldHVybnt0eXBlOnIsaWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxvcGVyYXRvckxpc3Q6cixpbml0aWFsU3RhdGU6aT1udWxsLGZhbGxiYWNrRm9udERpY3Q6bj1udWxsLHByZXZSZWZzOnM9bnVsbH0pe2NvbnN0IG89ZS5kaWN0Py5vYmpJZCxjPW5ldyBSZWZTZXQocyk7aWYobyl7aWYocz8uaGFzKG8pKXRocm93IG5ldyBFcnJvcihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke299YCk7Yy5wdXQobyl9YXx8PURpY3QuZW1wdHk7aXx8PW5ldyBFdmFsU3RhdGU7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3QgbD10aGlzLGg9dGhpcy54cmVmLHU9bmV3IExvY2FsSW1hZ2VDYWNoZSxkPW5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSxmPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLGc9bmV3IExvY2FsVGlsaW5nUGF0dGVybkNhY2hlLHA9bmV3IE1hcCxtPWEuZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHksYj1hLmdldCgiUGF0dGVybiIpfHxEaWN0LmVtcHR5LHk9bmV3IFN0YXRlTWFuYWdlcihpKSx3PW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxoLHkpLHg9bmV3IFRpbWVTbG90TWFuYWdlcjtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9dy5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspci5hZGRPcChSZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLGkpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7UHJvbWlzZS5hbGwoW3Qsci5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaSl9Y2F0Y2goZSl7aShlKX19KSxpKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7eC5yZXNldCgpO2NvbnN0IHM9e307bGV0IG8sUyxrLEMsdixGO2Zvcig7IShvPXguY2hlY2soKSk7KXtzLmFyZ3M9bnVsbDtpZighdy5yZWFkKHMpKWJyZWFrO2xldCBlPXMuYXJncyxpPXMuZm47c3dpdGNoKDB8aSl7Y2FzZSBOdDpGPWVbMF1pbnN0YW5jZW9mIE5hbWU7dj1lWzBdLm5hbWU7aWYoRil7Y29uc3QgdD11LmdldEJ5TmFtZSh2KTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhyLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxpKXtpZighRil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBuPW0uZ2V0UmF3KHYpO2lmKG4gaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9dS5nZXRCeVJlZihuKXx8bC5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKG4pfHxsLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShuLGwucGFnZUluZGV4KTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhyLHQpO2UoKTtyZXR1cm59bj1oLmZldGNoKG4pfWlmKCEobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBzPW4uZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKHMgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1zLm5hbWUpaWYoIkltYWdlIiE9PXMubmFtZSl7aWYoIlBTIiE9PXMubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtzLm5hbWV9YCk7aW5mbygiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBsLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOm4sb3BlcmF0b3JMaXN0OnIsY2FjaGVLZXk6dixsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkudGhlbihlLGkpO2Vsc2V7eS5zYXZlKCk7bC5idWlsZEZvcm1YT2JqZWN0KGEsbixudWxsLHIsdCx5LnN0YXRlLmNsb25lKHtuZXdQYXRoOiEwfSksZCxjKS50aGVuKChmdW5jdGlvbigpe3kucmVzdG9yZSgpO2UoKX0pLGkpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIG50OmNvbnN0IHM9ZVsxXTtuZXh0KGwuaGFuZGxlU2V0Rm9udChhLGUsbnVsbCxyLHQseS5zdGF0ZSxuKS50aGVuKChmdW5jdGlvbihlKXtyLmFkZERlcGVuZGVuY3koZSk7ci5hZGRPcChudCxbZSxzXSl9KSkpO3JldHVybjtjYXNlIFJ0OmNvbnN0IG89ZVswXS5jYWNoZUtleTtpZihvKXtjb25zdCB0PXUuZ2V0QnlOYW1lKG8pO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHIsdCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KGwuYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmEsaW1hZ2U6ZVswXSxpc0lubGluZTohMCxvcGVyYXRvckxpc3Q6cixjYWNoZUtleTpvLGxvY2FsSW1hZ2VDYWNoZTp1LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KSk7cmV0dXJuO2Nhc2UgZHQ6aWYoIXkuc3RhdGUuZm9udCl7bC5lbnN1cmVTdGF0ZUZvbnQoeS5zdGF0ZSk7Y29udGludWV9ZVswXT1sLmhhbmRsZVRleHQoZVswXSx5LnN0YXRlKTticmVhaztjYXNlIGZ0OmlmKCF5LnN0YXRlLmZvbnQpe2wuZW5zdXJlU3RhdGVGb250KHkuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IHc9W10seD15LnN0YXRlO2Zvcihjb25zdCB0IG9mIGVbMF0pInN0cmluZyI9PXR5cGVvZiB0P3cucHVzaCguLi5sLmhhbmRsZVRleHQodCx4KSk6Im51bWJlciI9PXR5cGVvZiB0JiZ3LnB1c2godCk7ZVswXT13O2k9ZHQ7YnJlYWs7Y2FzZSBndDppZigheS5zdGF0ZS5mb250KXtsLmVuc3VyZVN0YXRlRm9udCh5LnN0YXRlKTtjb250aW51ZX1yLmFkZE9wKHV0KTtlWzBdPWwuaGFuZGxlVGV4dChlWzBdLHkuc3RhdGUpO2k9ZHQ7YnJlYWs7Y2FzZSBwdDppZigheS5zdGF0ZS5mb250KXtsLmVuc3VyZVN0YXRlRm9udCh5LnN0YXRlKTtjb250aW51ZX1yLmFkZE9wKHV0KTtyLmFkZE9wKGF0LFtlLnNoaWZ0KCldKTtyLmFkZE9wKHR0LFtlLnNoaWZ0KCldKTtlWzBdPWwuaGFuZGxlVGV4dChlWzBdLHkuc3RhdGUpO2k9ZHQ7YnJlYWs7Y2FzZSBzdDp5LnN0YXRlLnRleHRSZW5kZXJpbmdNb2RlPWVbMF07YnJlYWs7Y2FzZSB3dDp7Y29uc3QgdD1sLl9nZXRDb2xvclNwYWNlKGVbMF0sYSxkKTtpZih0IGluc3RhbmNlb2YgQ29sb3JTcGFjZSl7eS5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQobC5faGFuZGxlQ29sb3JTcGFjZSh0KS50aGVuKChlPT57eS5zdGF0ZS5maWxsQ29sb3JTcGFjZT1lfHxDb2xvclNwYWNlVXRpbHMuZ3JheX0pKSk7cmV0dXJufWNhc2UgeXQ6e2NvbnN0IHQ9bC5fZ2V0Q29sb3JTcGFjZShlWzBdLGEsZCk7aWYodCBpbnN0YW5jZW9mIENvbG9yU3BhY2Upe3kuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQobC5faGFuZGxlQ29sb3JTcGFjZSh0KS50aGVuKChlPT57eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2VVdGlscy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBrdDpDPXkuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1bQy5nZXRSZ2JIZXgoZSwwKV07aT1JdDticmVhaztjYXNlIHh0OkM9eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlO2U9W0MuZ2V0UmdiSGV4KGUsMCldO2k9RnQ7YnJlYWs7Y2FzZSB2dDp5LnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtpPUl0O2JyZWFrO2Nhc2UgQ3Q6eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtpPUZ0O2JyZWFrO2Nhc2UgT3Q6eS5zdGF0ZS5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuY215aztlPVtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JIZXgoZSwwKV07aT1JdDticmVhaztjYXNlIFR0Onkuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuY215aztlPVtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JIZXgoZSwwKV07aT1GdDticmVhaztjYXNlIEl0Onkuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnJnYjtlPVtDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkhleChlLDApXTticmVhaztjYXNlIEZ0Onkuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucmdiO2U9W0NvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSGV4KGUsMCldO2JyZWFrO2Nhc2UgQXQ6Qz15LnN0YXRlLnBhdHRlcm5GaWxsQ29sb3JTcGFjZTtpZighQyl7aWYoaXNOdW1iZXJBcnJheShlLG51bGwpKXtlPVtDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JIZXgoZSwwKV07aT1JdDticmVha31lPVtdO2k9aWE7YnJlYWt9aWYoIlBhdHRlcm4iPT09Qy5uYW1lKXtuZXh0KGwuaGFuZGxlQ29sb3JOKHIsQXQsZSxDLGIsYSx0LGQsZyxwKSk7cmV0dXJufWU9W0MuZ2V0UmdiSGV4KGUsMCldO2k9SXQ7YnJlYWs7Y2FzZSBTdDpDPXkuc3RhdGUucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U7aWYoIUMpe2lmKGlzTnVtYmVyQXJyYXkoZSxudWxsKSl7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO2k9RnQ7YnJlYWt9ZT1bXTtpPXJhO2JyZWFrfWlmKCJQYXR0ZXJuIj09PUMubmFtZSl7bmV4dChsLmhhbmRsZUNvbG9yTihyLFN0LGUsQyxiLGEsdCxkLGcscCkpO3JldHVybn1lPVtDLmdldFJnYkhleChlLDApXTtpPUZ0O2JyZWFrO2Nhc2UgTXQ6bGV0IFQ7dHJ5e2NvbnN0IHQ9YS5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtUPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIVQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihsLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBPPWwucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlQscmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cH0pO2lmKCFPKWNvbnRpbnVlO2U9W09dO2k9TXQ7YnJlYWs7Y2FzZSBEZTpGPWVbMF1pbnN0YW5jZW9mIE5hbWU7dj1lWzBdLm5hbWU7aWYoRil7Y29uc3QgdD1mLmdldEJ5TmFtZSh2KTtpZih0KXt0Lmxlbmd0aD4wJiZyLmFkZE9wKERlLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe2lmKCFGKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBuPWEuZ2V0KCJFeHRHU3RhdGUiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9bi5nZXQodik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtsLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOnMsb3BlcmF0b3JMaXN0OnIsY2FjaGVLZXk6dix0YXNrOnQsc3RhdGVNYW5hZ2VyOnksbG9jYWxHU3RhdGVDYWNoZTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmQsc2VlblJlZnM6Y30pLnRoZW4oZSxpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgQ2U6e2NvbnN0W3RdPWU7aWYoIm51bWJlciIhPXR5cGVvZiB0KXt3YXJuKGBJbnZhbGlkIHNldExpbmVXaWR0aDogJHt0fWApO2NvbnRpbnVlfWVbMF09TWF0aC5hYnModCk7YnJlYWt9Y2FzZSBFZTpjYXNlIFBlOmNhc2UgTGU6Y2FzZSBqZTpjYXNlIF9lOmNhc2UgVWU6Y2FzZSBYZTpsLmJ1aWxkUGF0aChpLGUseS5zdGF0ZSk7Y29udGludWU7Y2FzZSBxZTpjYXNlIEhlOmNhc2UgV2U6Y2FzZSB6ZTpjYXNlICRlOmNhc2UgR2U6Y2FzZSBWZTpjYXNlIEtlOmNhc2UgSmU6e2NvbnN0e3N0YXRlOntwYXRoQnVmZmVyOmUscGF0aE1pbk1heDp0fX09eTtpIT09SGUmJmkhPT1WZSYmaSE9PUtlfHxlLnB1c2gobGEpO2lmKDA9PT1lLmxlbmd0aClyLmFkZE9wKGFhLFtpLFtudWxsXSxudWxsXSk7ZWxzZXtyLmFkZE9wKGFhLFtpLFtuZXcgRmxvYXQzMkFycmF5KGUpXSx0LnNsaWNlKCldKTtlLmxlbmd0aD0wO3Quc2V0KFsxLzAsMS8wLC0xLzAsLTEvMF0sMCl9Y29udGludWV9Y2FzZSBodDpyLmFkZE9wKGksW25ldyBGbG9hdDMyQXJyYXkoZSldKTtjb250aW51ZTtjYXNlIEV0OmNhc2UgUHQ6Y2FzZSBVdDpjYXNlIFh0OmNvbnRpbnVlO2Nhc2UganQ6aWYoIShlWzBdaW5zdGFuY2VvZiBOYW1lKSl7d2FybihgRXhwZWN0ZWQgbmFtZSBmb3IgYmVnaW5NYXJrZWRDb250ZW50UHJvcHMgYXJnMD0ke2VbMF19YCk7ci5hZGRPcChqdCxbIk9DIixudWxsXSk7Y29udGludWV9aWYoIk9DIj09PWVbMF0ubmFtZSl7bmV4dChsLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGVbMV0sYSkudGhlbigoZT0+e3IuYWRkT3AoanQsWyJPQyIsZV0pfSkpLmNhdGNoKChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiAiJHtlfSIuYCk7ci5hZGRPcChqdCxbIk9DIixudWxsXSl9fSkpKTtyZXR1cm59ZT1bZVswXS5uYW1lLGVbMV1pbnN0YW5jZW9mIERpY3Q/ZVsxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztkZWZhdWx0OmlmKG51bGwhPT1lKXtmb3IoUz0wLGs9ZS5sZW5ndGg7UzxrJiYhKGVbU11pbnN0YW5jZW9mIERpY3QpO1MrKyk7aWYoUzxrKXt3YXJuKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogIitpKTtjb250aW51ZX19fXIuYWRkT3AoaSxlKX1pZihvKW5leHQoRW4pO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpfX0pKX1nZXRUZXh0Q29udGVudCh7c3RyZWFtOmUsdGFzazphLHJlc291cmNlczpyLHN0YXRlTWFuYWdlcjppPW51bGwsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bj0hMSxzaW5rOnMsc2VlblN0eWxlczpvPW5ldyBTZXQsdmlld0JveDpjLGxhbmc6bD1udWxsLG1hcmtlZENvbnRlbnREYXRhOmg9bnVsbCxkaXNhYmxlTm9ybWFsaXphdGlvbjp1PSExLGtlZXBXaGl0ZVNwYWNlOmQ9ITEscHJldlJlZnM6Zj1udWxsLGludGVyc2VjdG9yOmc9bnVsbH0pe2NvbnN0IHA9ZS5kaWN0Py5vYmpJZCxtPW5ldyBSZWZTZXQoZik7aWYocCl7aWYoZj8uaGFzKHApKXRocm93IG5ldyBFcnJvcihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBjaXJjdWxhciByZWZlcmVuY2U6ICR7cH1gKTttLnB1dChwKX1yfHw9RGljdC5lbXB0eTtpfHw9bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtuJiYoaHx8PXtsZXZlbDowfSk7Y29uc3QgYj17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCksbGFuZzpsfSx5PXtpbml0aWFsaXplZDohMSxzdHI6W10sdG90YWxXaWR0aDowLHRvdGFsSGVpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MCx2ZXJ0aWNhbDohMSxwcmV2VHJhbnNmb3JtOm51bGwsdGV4dEFkdmFuY2VTY2FsZTowLHNwYWNlSW5GbG93TWluOjAsc3BhY2VJbkZsb3dNYXg6MCx0cmFja2luZ1NwYWNlTWluOjEvMCxuZWdhdGl2ZVNwYWNlTWF4Oi0xLzAsbm90QVNwYWNlOi0xLzAsdHJhbnNmb3JtOm51bGwsZm9udE5hbWU6bnVsbCxoYXNFT0w6ITF9LHc9WyIgIiwiICJdO2xldCB4PTA7ZnVuY3Rpb24gc2F2ZUxhc3RDaGFyKGUpe2NvbnN0IHQ9KHgrMSklMixhPSIgIiE9PXdbeF0mJiIgIj09PXdbdF07d1t4XT1lO3g9dDtyZXR1cm4hZCYmYX1mdW5jdGlvbiBzaG91bGRBZGRXaGl0ZXBzYWNlKCl7cmV0dXJuIWQmJiIgIiE9PXdbeF0mJiIgIj09PXdbKHgrMSklMl19ZnVuY3Rpb24gcmVzZXRMYXN0Q2hhcnMoKXt3WzBdPXdbMV09IiAiO3g9MH1jb25zdCBTPXRoaXMsaz10aGlzLnhyZWYsQz1bXTtsZXQgdj1udWxsO2NvbnN0IEY9bmV3IExvY2FsSW1hZ2VDYWNoZSxUPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLE89bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLGssaSk7bGV0IE07ZnVuY3Rpb24gcHVzaFdoaXRlc3BhY2Uoe3dpZHRoOmU9MCxoZWlnaHQ6dD0wLHRyYW5zZm9ybTphPXkucHJldlRyYW5zZm9ybSxmb250TmFtZTpyPXkuZm9udE5hbWV9KXtnPy5hZGRFeHRyYUNoYXIoIiAiKTtiLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOmUsaGVpZ2h0OnQsdHJhbnNmb3JtOmEsZm9udE5hbWU6cixoYXNFT0w6ITF9KX1mdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9TS5mb250LGE9W00uZm9udFNpemUqTS50ZXh0SFNjYWxlLDAsMCxNLmZvbnRTaXplLDAsTS50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE0uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiFpc0FycmF5RXF1YWwoTS5mb250TWF0cml4LHQpKXtjb25zdCB0PWUuYmJveFszXS1lLmJib3hbMV07dD4wJiYoYVszXSo9dCpNLmZvbnRNYXRyaXhbM10pfXJldHVybiBVdGlsLnRyYW5zZm9ybShNLmN0bSxVdGlsLnRyYW5zZm9ybShNLnRleHRNYXRyaXgsYSkpfWZ1bmN0aW9uIGVuc3VyZVRleHRDb250ZW50SXRlbSgpe2lmKHkuaW5pdGlhbGl6ZWQpcmV0dXJuIHk7Y29uc3R7Zm9udDplLGxvYWRlZE5hbWU6dH09TTtpZighby5oYXModCkpe28uYWRkKHQpO2Iuc3R5bGVzW3RdPXtmb250RmFtaWx5OmUuZmFsbGJhY2tOYW1lLGFzY2VudDplLmFzY2VudCxkZXNjZW50OmUuZGVzY2VudCx2ZXJ0aWNhbDplLnZlcnRpY2FsfTtpZihTLm9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyYmZS5zeXN0ZW1Gb250SW5mbyl7Y29uc3QgYT1iLnN0eWxlc1t0XTthLmZvbnRTdWJzdGl0dXRpb249ZS5zeXN0ZW1Gb250SW5mby5jc3M7YS5mb250U3Vic3RpdHV0aW9uTG9hZGVkTmFtZT1lLnN5c3RlbUZvbnRJbmZvLmxvYWRlZE5hbWV9fXkuZm9udE5hbWU9dDtjb25zdCBhPXkudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7eS53aWR0aD15LnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3kuaGVpZ2h0PXkudG90YWxIZWlnaHQ9MDt5LnZlcnRpY2FsPSEwfWVsc2V7eS53aWR0aD15LnRvdGFsV2lkdGg9MDt5LmhlaWdodD15LnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTt5LnZlcnRpY2FsPSExfWNvbnN0IHI9TWF0aC5oeXBvdChNLnRleHRMaW5lTWF0cml4WzBdLE0udGV4dExpbmVNYXRyaXhbMV0pLGk9TWF0aC5oeXBvdChNLmN0bVswXSxNLmN0bVsxXSk7eS50ZXh0QWR2YW5jZVNjYWxlPWkqcjtjb25zdHtmb250U2l6ZTpufT1NO3kudHJhY2tpbmdTcGFjZU1pbj0uMTAyKm47eS5ub3RBU3BhY2U9LjAzKm47eS5uZWdhdGl2ZVNwYWNlTWF4PS0uMipuO3kuc3BhY2VJbkZsb3dNaW49LjEwMipuO3kuc3BhY2VJbkZsb3dNYXg9LjYqbjt5Lmhhc0VPTD0hMTt5LmluaXRpYWxpemVkPSEwO3JldHVybiB5fWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCF5LmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pKmU7aWYodCE9PXkudGV4dEFkdmFuY2VTY2FsZSl7aWYoeS52ZXJ0aWNhbCl7eS50b3RhbEhlaWdodCs9eS5oZWlnaHQqeS50ZXh0QWR2YW5jZVNjYWxlO3kuaGVpZ2h0PTB9ZWxzZXt5LnRvdGFsV2lkdGgrPXkud2lkdGgqeS50ZXh0QWR2YW5jZVNjYWxlO3kud2lkdGg9MH15LnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gcnVuQmlkaVRyYW5zZm9ybShlKXtsZXQgdD1lLnN0ci5qb2luKCIiKTt1fHwodD1mdW5jdGlvbiBub3JtYWxpemVVbmljb2RlKGUpe2lmKCFtYSl7bWE9LyhbXHUwMGEwXHUwMGI1XHUwMzdlXHUwZWIzXHUyMDAwLVx1MjAwYVx1MjAyZlx1MjEyNlx1ZmIwMC1cdWZiMDRcdWZiMDZcdWZiMjAtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MC1cdWZiNDFcdWZiNDMtXHVmYjQ0XHVmYjQ2LVx1ZmJhMVx1ZmJhNC1cdWZiYTlcdWZiYWUtXHVmYmIxXHVmYmQzLVx1ZmJkY1x1ZmJkZS1cdWZiZTdcdWZiZWEtXHVmYmY4XHVmYmZjLVx1ZmJmZFx1ZmMwMC1cdWZjNWRcdWZjNjQtXHVmY2YxXHVmY2Y1LVx1ZmQzZFx1ZmQ4OFx1ZmRmNFx1ZmRmYS1cdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O2JhPW5ldyBNYXAoW1si76yFIiwixb90Il1dKX1yZXR1cm4gZS5yZXBsYWNlQWxsKG1hLCgoZSx0LGEpPT50P3Qubm9ybWFsaXplKCJORktDIik6YmEuZ2V0KGEpKSl9KHQpKTtjb25zdCBhPWJpZGkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmEuc3RyLGRpcjphLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVNldEZvbnQoZSxpKXtjb25zdCBuPWF3YWl0IFMubG9hZEZvbnQoZSxpLHIsYSk7TS5sb2FkZWROYW1lPW4ubG9hZGVkTmFtZTtNLmZvbnQ9bi5mb250O00uZm9udE1hdHJpeD1uLmZvbnQuZm9udE1hdHJpeHx8dH1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9yLChhWzJdKmUrYVszXSp0KS9yXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbihlKXtjb25zdCB0PWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7bGV0IGE9dFs0XSxyPXRbNV07aWYoTS5mb250Py52ZXJ0aWNhbCl7aWYoYTxjWzBdfHxhPmNbMl18fHIrZTxjWzFdfHxyPmNbM10pcmV0dXJuITF9ZWxzZSBpZihhK2U8Y1swXXx8YT5jWzJdfHxyPGNbMV18fHI+Y1szXSlyZXR1cm4hMTtpZighTS5mb250fHwheS5wcmV2VHJhbnNmb3JtKXJldHVybiEwO2xldCBpPXkucHJldlRyYW5zZm9ybVs0XSxuPXkucHJldlRyYW5zZm9ybVs1XTtpZihpPT09YSYmbj09PXIpcmV0dXJuITA7bGV0IHM9LTE7dFswXSYmMD09PXRbMV0mJjA9PT10WzJdP3M9dFswXT4wPzA6MTgwOnRbMV0mJjA9PT10WzBdJiYwPT09dFszXSYmKHM9dFsxXT4wPzkwOjI3MCk7c3dpdGNoKHMpe2Nhc2UgMDpicmVhaztjYXNlIDkwOlthLHJdPVtyLGFdO1tpLG5dPVtuLGldO2JyZWFrO2Nhc2UgMTgwOlthLHIsaSxuXT1bLWEsLXIsLWksLW5dO2JyZWFrO2Nhc2UgMjcwOlthLHJdPVstciwtYV07W2ksbl09Wy1uLC1pXTticmVhaztkZWZhdWx0OlthLHJdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGEscix0KTtbaSxuXT1hcHBseUludmVyc2VSb3RhdGlvbihpLG4seS5wcmV2VHJhbnNmb3JtKX1pZihNLmZvbnQudmVydGljYWwpe2NvbnN0IGU9KG4tcikveS50ZXh0QWR2YW5jZVNjYWxlLHQ9YS1pLHM9TWF0aC5zaWduKHkuaGVpZ2h0KTtpZihlPHMqeS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyh0KT4uNSp5LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnModCk+eS53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9ZTw9cyp5Lm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihlPD1zKnkudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB5LmhlaWdodCs9ZTtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGUseS5wcmV2VHJhbnNmb3JtLHMpKWlmKDA9PT15LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2UgeS5oZWlnaHQrPWU7TWF0aC5hYnModCk+LjI1Knkud2lkdGgmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9Y29uc3Qgbz0oYS1pKS95LnRleHRBZHZhbmNlU2NhbGUsbD1yLW4saD1NYXRoLnNpZ24oeS53aWR0aCk7aWYobzxoKnkubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnMobCk+LjUqeS5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhsKT55LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9bzw9aCp5Lm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihvPD1oKnkudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIHkud2lkdGgrPW87ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhvLHkucHJldlRyYW5zZm9ybSxoKSlpZigwPT09eS5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgeS53aWR0aCs9bztNYXRoLmFicyhsKT4uMjUqeS5oZWlnaHQmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9ZnVuY3Rpb24gYnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOnR9KXtjb25zdCBhPU0uZm9udDtpZighZSl7Y29uc3QgZT1NLmNoYXJTcGFjaW5nK3Q7ZSYmKGEudmVydGljYWw/TS50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWUpOk0udHJhbnNsYXRlVGV4dE1hdHJpeChlKk0udGV4dEhTY2FsZSwwKSk7ZCYmY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oMCk7cmV0dXJufWNvbnN0IHI9YS5jaGFyc1RvR2x5cGhzKGUpLGk9TS5mb250TWF0cml4WzBdKk0uZm9udFNpemU7Zm9yKGxldCBlPTAsbj1yLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBzPXJbZV0se2NhdGVnb3J5Om99PXM7aWYoby5pc0ludmlzaWJsZUZvcm1hdE1hcmspY29udGludWU7bGV0IGM9TS5jaGFyU3BhY2luZysoZSsxPT09bj90OjApLGw9cy53aWR0aDthLnZlcnRpY2FsJiYobD1zLnZtZXRyaWM/cy52bWV0cmljWzBdOi1sKTtsZXQgaD1sKmk7aWYoIWQmJm8uaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtjKz0taCtNLndvcmRTcGFjaW5nO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1jKX1lbHNle2MrPWgrTS53b3JkU3BhY2luZztNLnRyYW5zbGF0ZVRleHRNYXRyaXgoYypNLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIW8uaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbihoKSl7YS52ZXJ0aWNhbD9NLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxoKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoaCpNLnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtvLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYoaD0wKTtpZihhLnZlcnRpY2FsKXtnPy5hZGRHbHlwaChnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLDAsaCxzLnVuaWNvZGUpO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLGgpO2g9TWF0aC5hYnMoaCk7dS5oZWlnaHQrPWh9ZWxzZXtoKj1NLnRleHRIU2NhbGU7Zz8uYWRkR2x5cGgoZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxoLDAscy51bmljb2RlKTtNLnRyYW5zbGF0ZVRleHRNYXRyaXgoaCwwKTt1LndpZHRoKz1ofWgmJih1LnByZXZUcmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSk7Y29uc3QgZj1zLnVuaWNvZGU7aWYoc2F2ZUxhc3RDaGFyKGYpKXt1LnN0ci5wdXNoKCIgIik7Zz8uYWRkRXh0cmFDaGFyKCIgIil9Z3x8dS5zdHIucHVzaChmKTtjJiYoYS52ZXJ0aWNhbD9NLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtYyk6TS50cmFuc2xhdGVUZXh0TWF0cml4KGMqTS50ZXh0SFNjYWxlLDApKX19ZnVuY3Rpb24gYXBwZW5kRU9MKCl7Zz8uYWRkRXh0cmFDaGFyKCJcbiIpO3Jlc2V0TGFzdENoYXJzKCk7aWYoeS5pbml0aWFsaXplZCl7eS5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGIuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOk0ubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxhKXtpZihhKnkuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWEqeS5zcGFjZUluRmxvd01heCl7aWYoeS5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt5LnN0ci5wdXNoKCIgIik7Zz8uYWRkRXh0cmFDaGFyKCIgIil9cmV0dXJuITF9Y29uc3Qgcj15LmZvbnROYW1lO2xldCBpPTA7aWYoeS52ZXJ0aWNhbCl7aT1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhpKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpyfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih5LmluaXRpYWxpemVkJiZ5LnN0cil7eS52ZXJ0aWNhbD95LnRvdGFsSGVpZ2h0Kz15LmhlaWdodCp5LnRleHRBZHZhbmNlU2NhbGU6eS50b3RhbFdpZHRoKz15LndpZHRoKnkudGV4dEFkdmFuY2VTY2FsZTtiLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh5KSk7eS5pbml0aWFsaXplZD0hMTt5LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Yi5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe3M/LmVucXVldWUoYix0KTtiLml0ZW1zPVtdO2Iuc3R5bGVzPU9iamVjdC5jcmVhdGUobnVsbCl9fWNvbnN0IEQ9bmV3IFRpbWVTbG90TWFuYWdlcjtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUsdCl7Y29uc3QgbmV4dD1mdW5jdGlvbihhKXtlbnF1ZXVlQ2h1bmsoITApO1Byb21pc2UuYWxsKFthLHM/LnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSx0KX1jYXRjaChlKXt0KGUpfX0pLHQpfTthLmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtELnJlc2V0KCk7Y29uc3QgZj17fTtsZXQgZyxwLHksdz1bXTtmb3IoOyEoZz1ELmNoZWNrKCkpOyl7dy5sZW5ndGg9MDtmLmFyZ3M9dztpZighTy5yZWFkKGYpKWJyZWFrO2NvbnN0IGU9TTtNPWkuc3RhdGU7Y29uc3QgdD1mLmZuO3c9Zi5hcmdzO3N3aXRjaCgwfHQpe2Nhc2UgbnQ6Y29uc3QgdD13WzBdLm5hbWUsZj13WzFdO2lmKE0uZm9udCYmdD09PU0uZm9udE5hbWUmJmY9PT1NLmZvbnRTaXplKWJyZWFrO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7TS5mb250TmFtZT10O00uZm9udFNpemU9ZjtuZXh0KGhhbmRsZVNldEZvbnQodCxudWxsKSk7cmV0dXJuO2Nhc2Ugb3Q6TS50ZXh0UmlzZT13WzBdO2JyZWFrO2Nhc2UgcnQ6TS50ZXh0SFNjYWxlPXdbMF0vMTAwO2JyZWFrO2Nhc2UgaXQ6TS5sZWFkaW5nPXdbMF07YnJlYWs7Y2FzZSBjdDpNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KHdbMF0sd1sxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIGx0Ok0ubGVhZGluZz0td1sxXTtNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KHdbMF0sd1sxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHV0Ok0uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIGh0Ok0uc2V0VGV4dE1hdHJpeCh3WzBdLHdbMV0sd1syXSx3WzNdLHdbNF0sd1s1XSk7TS5zZXRUZXh0TGluZU1hdHJpeCh3WzBdLHdbMV0sd1syXSx3WzNdLHdbNF0sd1s1XSk7dXBkYXRlQWR2YW5jZVNjYWxlKCk7YnJlYWs7Y2FzZSB0dDpNLmNoYXJTcGFjaW5nPXdbMF07YnJlYWs7Y2FzZSBhdDpNLndvcmRTcGFjaW5nPXdbMF07YnJlYWs7Y2FzZSBRZTpNLnRleHRNYXRyaXg9RmEuc2xpY2UoKTtNLnRleHRMaW5lTWF0cml4PUZhLnNsaWNlKCk7YnJlYWs7Y2FzZSBmdDppZighaS5zdGF0ZS5mb250KXtTLmVuc3VyZVN0YXRlRm9udChpLnN0YXRlKTtjb250aW51ZX1jb25zdCBnPShNLmZvbnQudmVydGljYWw/MTotMSkqTS5mb250U2l6ZS8xZTMseD13WzBdO2ZvcihsZXQgZT0wLHQ9eC5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD14W2VdO2lmKCJzdHJpbmciPT10eXBlb2YgdClDLnB1c2godCk7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIHQmJjAhPT10KXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dCpnfSl9fWlmKEMubGVuZ3RoPjApe2NvbnN0IGU9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzowfSl9YnJlYWs7Y2FzZSBkdDppZighaS5zdGF0ZS5mb250KXtTLmVuc3VyZVN0YXRlRm9udChpLnN0YXRlKTtjb250aW51ZX1idWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6d1swXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgZ3Q6aWYoIWkuc3RhdGUuZm9udCl7Uy5lbnN1cmVTdGF0ZUZvbnQoaS5zdGF0ZSk7Y29udGludWV9TS5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp3WzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBwdDppZighaS5zdGF0ZS5mb250KXtTLmVuc3VyZVN0YXRlRm9udChpLnN0YXRlKTtjb250aW51ZX1NLndvcmRTcGFjaW5nPXdbMF07TS5jaGFyU3BhY2luZz13WzFdO00uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6d1syXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgTnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTt2Pz89ci5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eTt5PXdbMF1pbnN0YW5jZW9mIE5hbWU7cD13WzBdLm5hbWU7aWYoeSYmRi5nZXRCeU5hbWUocCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtpZigheSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBmPXYuZ2V0UmF3KHApO2lmKGYgaW5zdGFuY2VvZiBSZWYpe2lmKEYuZ2V0QnlSZWYoZikpe2UoKTtyZXR1cm59aWYoUy5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEoZixTLnBhZ2VJbmRleCkpe2UoKTtyZXR1cm59Zj1rLmZldGNoKGYpfWlmKCEoZiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdHtkaWN0Omd9PWYsYj1nLmdldCgiU3VidHlwZSIpO2lmKCEoYiBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWIubmFtZSl7Ri5zZXQocCxnLm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHc9aS5zdGF0ZS5jbG9uZSgpLHg9bmV3IFN0YXRlTWFuYWdlcih3KSxDPWxvb2t1cE1hdHJpeChnLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTtDJiZ4LnRyYW5zZm9ybShDKTtjb25zdCBUPWcuZ2V0KCJSZXNvdXJjZXMiKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCBPPXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtzLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIHMuZGVzaXJlZFNpemU/PzB9LGdldCByZWFkeSgpe3JldHVybiBzLnJlYWR5fX07Uy5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazphLHJlc291cmNlczpUIGluc3RhbmNlb2YgRGljdD9UOnIsc3RhdGVNYW5hZ2VyOngsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixzaW5rOnMmJk8sc2VlblN0eWxlczpvLHZpZXdCb3g6YyxsYW5nOmwsbWFya2VkQ29udGVudERhdGE6aCxkaXNhYmxlTm9ybWFsaXphdGlvbjp1LGtlZXBXaGl0ZVNwYWNlOmQscHJldlJlZnM6bX0pLnRoZW4oKGZ1bmN0aW9uKCl7Ty5lbnF1ZXVlSW52b2tlZHx8Ri5zZXQocCxnLm9iaklkLCEwKTtlKCl9KSx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighUy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgRGU6eT13WzBdaW5zdGFuY2VvZiBOYW1lO3A9d1swXS5uYW1lO2lmKHkmJlQuZ2V0QnlOYW1lKHApKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIXkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IGE9ci5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgaT1hLmdldChwKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG49aS5nZXQoIkZvbnQiKTtpZihuKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO00uZm9udE5hbWU9bnVsbDtNLmZvbnRTaXplPW5bMV07aGFuZGxlU2V0Rm9udChudWxsLG5bMF0pLnRoZW4oZSx0KX1lbHNle1Quc2V0KHAsaS5vYmpJZCwhMCk7ZSgpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighUy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBMdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztiLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOndbMF1pbnN0YW5jZW9mIE5hbWU/d1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIGp0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aC5sZXZlbCsrO2xldCBlPW51bGw7d1sxXWluc3RhbmNlb2YgRGljdCYmKGU9d1sxXS5nZXQoIk1DSUQiKSk7Yi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtTLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzp3WzBdaW5zdGFuY2VvZiBOYW1lP3dbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBfdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2lmKDA9PT1oLmxldmVsKWJyZWFrO2gubGV2ZWwtLTtiLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSBSZTohZXx8ZS5mb250PT09TS5mb250JiZlLmZvbnRTaXplPT09TS5mb250U2l6ZSYmZS5mb250TmFtZT09PU0uZm9udE5hbWV8fGZsdXNoVGV4dENvbnRlbnRJdGVtKCl9aWYoYi5pdGVtcy5sZW5ndGg+PShzPy5kZXNpcmVkU2l6ZT8/MSkpe2c9ITA7YnJlYWt9fWlmKGcpbmV4dChFbik7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke2EubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pKX1hc3luYyBleHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0KXtjb25zdCBhPXRoaXMueHJlZjtsZXQgcjtjb25zdCBpPXRoaXMucmVhZFRvVW5pY29kZSh0LnRvVW5pY29kZSk7aWYodC5jb21wb3NpdGUpe2NvbnN0IGE9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTthIGluc3RhbmNlb2YgRGljdCYmKHQuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6c3RyaW5nVG9QREZTdHJpbmcoYS5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOnN0cmluZ1RvUERGU3RyaW5nKGEuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmEuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHI9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3Qgbj1bXTtsZXQgcyxvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe3M9ZS5nZXQoIkVuY29kaW5nIik7aWYocyBpbnN0YW5jZW9mIERpY3Qpe289cy5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYocy5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9cy5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgciBvZiBlKXtjb25zdCBlPWEuZmV0Y2hJZlJlZihyKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtuW3QrK109ZS5uYW1lfX19fWVsc2UgaWYocyBpbnN0YW5jZW9mIE5hbWUpbz1zLm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBGb3JtYXRFcnJvcihlKTt3YXJuKGUpfSJNYWNSb21hbkVuY29kaW5nIiE9PW8mJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1vJiYiV2luQW5zaUVuY29kaW5nIiE9PW8mJihvPW51bGwpfWNvbnN0IGM9IXQuZmlsZXx8dC5pc0ludGVybmFsRm9udCxsPWVpKClbdC5uYW1lXTtvJiZjJiZsJiYobz1udWxsKTtpZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7Y29uc3QgZT0hISh0LmZsYWdzJlByKSxhPSEhKHQuZmxhZ3MmTHIpO3M9a3I7IlRydWVUeXBlIiE9PXQudHlwZXx8YXx8KHM9QXIpO2lmKGV8fGwpe3M9U3I7YyYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/cz1DcjovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/cz12cjovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYocz1BcikpfXQuZGVmYXVsdEVuY29kaW5nPXN9dC5kaWZmZXJlbmNlcz1uO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxuLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IGk7Y29uc3QgaD1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWg7ciYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAocixoKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgYT1bXSxyPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCksaT1lLmJhc2VFbmNvZGluZ05hbWUsbj1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIG4pe2NvbnN0IHQ9bltlXTsiLm5vdGRlZiIhPT10JiYocltlXT10KX1jb25zdCBzPUZyKCk7Zm9yKGNvbnN0IG4gaW4gcil7bGV0IG89cltuXTtpZigiIj09PW8pY29udGludWU7bGV0IGM9c1tvXTtpZih2b2lkIDAhPT1jKXthW25dPVN0cmluZy5mcm9tQ2hhckNvZGUoYyk7Y29udGludWV9bGV0IGw9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihsPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihsPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgYT1vLnN1YnN0cmluZygxKTtpZih0KXtsPXBhcnNlSW50KGEsMTYpO2JyZWFrfWw9K2E7aWYoTnVtYmVyLmlzTmFOKGwpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGEsMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmM9Z2V0VW5pY29kZUZvckdseXBoKG8scyk7LTEhPT1jJiYobD1jKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjphW25dPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihsPjAmJmw8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIobCkpe2lmKGkmJmw9PT0rbil7Y29uc3QgZT1nZXRFbmNvZGluZyhpKTtpZihlJiYobz1lW25dKSl7YVtuXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHNbb10pO2NvbnRpbnVlfX1hW25dPVN0cmluZy5mcm9tQ29kZVBvaW50KGwpfX1yZXR1cm4gYX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8scj1OYW1lLmdldChgJHt0fS0ke2F9LVVDUzJgKSxpPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6cixmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxuPVtdLHM9W107ZS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBhPWkubG9va3VwKHQpO2lmKGEpe3MubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9MilzLnB1c2goKGEuY2hhckNvZGVBdChlKTw8OCkrYS5jaGFyQ29kZUF0KGUrMSkpO25bZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5zKX19KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAobil9cmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcChlLmZpcnN0Q2hhcixlLmxhc3RDaGFyKX1hc3luYyByZWFkVG9Vbmljb2RlKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtyZXR1cm4gdCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcD9uZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IFRvVW5pY29kZU1hcCh0LmdldE1hcCgpKX1pZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl0cnl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7aWYodCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcClyZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpO2NvbnN0IGE9bmV3IEFycmF5KHQubGVuZ3RoKTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXthW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBhPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JmEpKXtyLnB1c2goYSk7Y29udGludWV9ZSs9Mjtjb25zdCBpPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtyLnB1c2goKCgxMDIzJmEpPDwxMCkrKDEwMjMmaSkrNjU1MzYpfWFbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucil9KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoYSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyKytdPDw4fGVbcl0sbj1yPj4xOygwIT09aXx8dC5oYXMobikpJiYoYVtuXT1pKX1yZXR1cm4gYX1leHRyYWN0V2lkdGhzKGUsdCxhKXtjb25zdCByPXRoaXMueHJlZjtsZXQgaT1bXSxuPTA7Y29uc3Qgcz1bXTtsZXQgbztpZihhLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtuPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGM9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGMpKWZvcihsZXQgZT0wLHQ9Yy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9ci5mZXRjaElmUmVmKGNbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgYT1yLmZldGNoSWZSZWYoY1tlXSk7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBhPXIuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGEmJihpW3RdPWEpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKWJyZWFrO3tjb25zdCBuPXIuZmV0Y2hJZlJlZihjWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygbiljb250aW51ZTtmb3IobGV0IGU9dDtlPD1hO2UrKylpW2VdPW59fX1pZihhLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBhPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1bYVsxXSwuNSpuLGFbMF1dO2E9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2xldCB0PXIuZmV0Y2hJZlJlZihhW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IGk9ci5mZXRjaElmUmVmKGFbZV0pO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPVtyLmZldGNoSWZSZWYoaVtlKytdKSxyLmZldGNoSWZSZWYoaVtlKytdKSxyLmZldGNoSWZSZWYoaVtlXSldO2lzTnVtYmVyQXJyYXkoYSxudWxsKSYmKHNbdF09YSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpYnJlYWs7e2NvbnN0IG49W3IuZmV0Y2hJZlJlZihhWysrZV0pLHIuZmV0Y2hJZlJlZihhWysrZV0pLHIuZmV0Y2hJZlJlZihhWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShuLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PWk7ZSsrKXNbZV09bn19fX19ZWxzZXtjb25zdCBzPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHMpKXtsZXQgZT1hLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBzKXtjb25zdCBhPXIuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGEmJihpW2VdPWEpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtuPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7aT10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO249ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYz0hMCxsPW47Zm9yKGNvbnN0IGUgaW4gaSl7Y29uc3QgdD1pW2VdO2lmKHQpaWYobCl7aWYobCE9PXQpe2M9ITE7YnJlYWt9fWVsc2UgbD10fWM/YS5mbGFnc3w9TnI6YS5mbGFncyY9fk5yO2EuZGVmYXVsdFdpZHRoPW47YS53aWR0aHM9aTthLmRlZmF1bHRWTWV0cmljcz1vO2Eudm1ldHJpY3M9c31pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIFFyKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBpPUpyKClbZV18fGU7Y29uc3Qgbj1paSgpO2kgaW4gbnx8KGk9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBzPW5baV07aWYoIm51bWJlciI9PXR5cGVvZiBzKXt0PXM7cj0hMH1lbHNlIGE9cygpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6cix3aWR0aHM6YX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscj10LmRpZmZlcmVuY2VzLGk9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gciYmZVtyW3RdXT9hW3RdPWVbclt0XV06dCBpbiBpJiZlW2lbdF1dJiYoYVt0XT1lW2lbdF1dKTtyZXR1cm4gYX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBhPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCByLGk9ITE7aWYoIlR5cGUwIj09PWEubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2E9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7aT0hMH1sZXQgbj1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49MCk7bGV0IHM9ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9aT82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksYz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXtyPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBhPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXIudXBkYXRlKGEubmFtZSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgUmVmKXIudXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBhLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXIudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXIudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgTmFtZT9hW3JdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGFbcl09dC50b1N0cmluZygpKX1yLnVwZGF0ZShhLmpvaW4oKSl9ci51cGRhdGUoYCR7bn0tJHtzfWApO2lmKGMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWMuc3RyfHxjLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7ci51cGRhdGUodCl9ZWxzZSBjIGluc3RhbmNlb2YgTmFtZSYmci51cGRhdGUoYy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7ci51cGRhdGUoZS5qb2luKCkpfWlmKGkpe3IudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmEucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7YS5qb2luKCl9XWApfXIudXBkYXRlKGUuam9pbigpKX1jb25zdCBpPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtpIGluc3RhbmNlb2YgTmFtZT9yLnVwZGF0ZShpLm5hbWUpOmkgaW5zdGFuY2VvZiBSZWY/ci51cGRhdGUoaS50b1N0cmluZygpKTppIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmci51cGRhdGUoaS5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOmksdHlwZTphLm5hbWUsZmlyc3RDaGFyOm4sbGFzdENoYXI6cyx0b1VuaWNvZGU6YyxoYXNoOnI/ci5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6YSxiYXNlRGljdDpyLGNvbXBvc2l0ZTppLHR5cGU6bixmaXJzdENoYXI6cyxsYXN0Q2hhcjpvLHRvVW5pY29kZTpjLGNzc0ZvbnRJbmZvOmx9KXtjb25zdCBoPSJUeXBlMyI9PT1uO2lmKCFlKXtpZighaCl7bGV0IGU9YS5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IHQ9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSksaT1lLnNwbGl0KCItIiwxKVswXSxsPSh0aGlzLmlzU2VyaWZGb250KGkpP0VyOjApfCh0Lm1vbm9zcGFjZT9OcjowKXwoZWkoKVtpXT9QcjpMciksdT17dHlwZTpuLG5hbWU6ZSxsb2FkZWROYW1lOnIubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczp0LndpZHRocyxkZWZhdWx0V2lkdGg6dC5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpsLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmMseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6aH0sZD1hLmdldCgiV2lkdGhzIiksZj1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBnPW51bGw7aWYoZil7Zz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShmKTt1LmlzSW50ZXJuYWxGb250PSEhZ30hdS5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYodS5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsZixuKSk7Y29uc3QgcD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyhhLHUpO2lmKEFycmF5LmlzQXJyYXkoZCkpe2NvbnN0IGU9W107bGV0IHQ9cztmb3IoY29uc3QgYSBvZiBkKXtjb25zdCByPXRoaXMueHJlZi5mZXRjaElmUmVmKGEpOyJudW1iZXIiPT10eXBlb2YgciYmKGVbdF09cik7dCsrfXAud2lkdGhzPWV9ZWxzZSBwLndpZHRocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKHQud2lkdGhzLHApO3JldHVybiBuZXcgRm9udChlLGcscCx0aGlzLm9wdGlvbnMpfWU9RGljdC5lbXB0eX1sZXQgdT1lLmdldCgiRm9udE5hbWUiKSxkPWEuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgdSYmKHU9TmFtZS5nZXQodSkpOyJzdHJpbmciPT10eXBlb2YgZCYmKGQ9TmFtZS5nZXQoZCkpO2NvbnN0IGY9dT8ubmFtZSxnPWQ/Lm5hbWU7aWYoaClmfHwodT1OYW1lLmdldChuKSk7ZWxzZSBpZihmIT09Zyl7aW5mbyhgVGhlIEZvbnREZXNjcmlwdG9yJ3MgRm9udE5hbWUgaXMgIiR7Zn0iIGJ1dCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEZvbnQncyBCYXNlRm9udCAiJHtnfSIuYCk7ZiYmZyYmKGcuc3RhcnRzV2l0aChmKXx8IWlzS25vd25Gb250TmFtZShmKSYmaXNLbm93bkZvbnROYW1lKGcpKSYmKHU9bnVsbCk7dXx8PWR9aWYoISh1IGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgbmFtZSIpO2xldCBwLG0sYix5LHc7dHJ5e3A9ZS5nZXQoIkZvbnRGaWxlIiwiRm9udEZpbGUyIiwiRm9udEZpbGUzIik7aWYocCl7aWYoIShwIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBzaG91bGQgYmUgYSBzdHJlYW0iKTtpZihwLmlzRW1wdHkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBpcyBlbXB0eSIpfX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt1Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTtwPW51bGx9bGV0IHg9ITEsUz1udWxsLGs9bnVsbDtpZihwKXtpZihwLmRpY3Qpe2NvbnN0IGU9cC5kaWN0LmdldCgiU3VidHlwZSIpO2UgaW5zdGFuY2VvZiBOYW1lJiYobT1lLm5hbWUpO2I9cC5kaWN0LmdldCgiTGVuZ3RoMSIpO3k9cC5kaWN0LmdldCgiTGVuZ3RoMiIpO3c9cC5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKGwpe2NvbnN0IGU9Z2V0WGZhRm9udE5hbWUodS5uYW1lKTtpZihlKXtsLmZvbnRGYW1pbHk9YCR7bC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO2wubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7Uz1lLmZhY3RvcnN8fG51bGw7cD1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO3g9ISFwO3I9YT1nZXRYZmFGb250RGljdCh1Lm5hbWUpO2k9ITB9fWVsc2UgaWYoIWgpe2NvbnN0IGU9Z2V0U3RhbmRhcmRGb250TmFtZSh1Lm5hbWUpO2lmKGUpe3A9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZSk7eD0hIXB9IXgmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGs9Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCx1Lm5hbWUsZSxuKSl9Y29uc3QgQz1sb29rdXBNYXRyaXgoYS5nZXRBcnJheSgiRm9udE1hdHJpeCIpLHQpLHY9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJGb250QkJveCIpfHxhLmdldEFycmF5KCJGb250QkJveCIpLGg/WzAsMCwwLDBdOnZvaWQgMCk7bGV0IEY9ZS5nZXQoIkFzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgRiYmKEY9dm9pZCAwKTtsZXQgVD1lLmdldCgiRGVzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgVCYmKFQ9dm9pZCAwKTtsZXQgTz1lLmdldCgiWEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgTyYmKE89MCk7bGV0IE09ZS5nZXQoIkNhcEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgTSYmKE09MCk7bGV0IEQ9ZS5nZXQoIkZsYWdzIik7TnVtYmVyLmlzSW50ZWdlcihEKXx8KEQ9MCk7bGV0IFI9ZS5nZXQoIkl0YWxpY0FuZ2xlIik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj0wKTtjb25zdCBOPXt0eXBlOm4sbmFtZTp1Lm5hbWUsc3VidHlwZTptLGZpbGU6cCxsZW5ndGgxOmIsbGVuZ3RoMjp5LGxlbmd0aDM6dyxpc0ludGVybmFsRm9udDp4LGxvYWRlZE5hbWU6ci5sb2FkZWROYW1lLGNvbXBvc2l0ZTppLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDpDLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmMsYmJveDp2LGFzY2VudDpGLGRlc2NlbnQ6VCx4SGVpZ2h0Ok8sY2FwSGVpZ2h0Ok0sZmxhZ3M6RCxpdGFsaWNBbmdsZTpSLGlzVHlwZTNGb250OmgsY3NzRm9udEluZm86bCxzY2FsZUZhY3RvcnM6UyxzeXN0ZW1Gb250SW5mbzprfTtpZihpKXtjb25zdCBlPXIuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBOYW1lJiYoTi5jaWRFbmNvZGluZz1lLm5hbWUpO2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO04uY01hcD10O04udmVydGljYWw9Ti5jTWFwLnZlcnRpY2FsfWNvbnN0IEU9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXMoYSxOKTt0aGlzLmV4dHJhY3RXaWR0aHMoYSxlLEUpO3JldHVybiBuZXcgRm9udCh1Lm5hbWUscCxFLHRoaXMub3B0aW9ucyl9c3RhdGljIGJ1aWxkRm9udFBhdGhzKGUsdCxhLHIpe2Z1bmN0aW9uIGJ1aWxkUGF0aCh0KXtjb25zdCBpPWAke2UubG9hZGVkTmFtZX1fcGF0aF8ke3R9YDt0cnl7aWYoZS5yZW5kZXJlci5oYXNCdWlsdFBhdGgodCkpcmV0dXJuO2Euc2VuZCgiY29tbW9ub2JqIixbaSwiRm9udFBhdGgiLGUucmVuZGVyZXIuZ2V0UGF0aEpzKHQpXSl9Y2F0Y2goZSl7aWYoci5pZ25vcmVFcnJvcnMpe3dhcm4oYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0Py5mb250Q2hhciYmYnVpbGRQYXRoKHQuZm9udENoYXIpfX1zdGF0aWMgZ2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBEaWN0O2Uuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgVHJhbnNsYXRlZEZvbnR7I0c9ITE7I1Y9bnVsbDtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9YTt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsfXNlbmQoZSl7aWYoIXRoaXMuI0cpe3RoaXMuI0c9ITA7ZS5zZW5kKCJjb21tb25vYmoiLFt0aGlzLmxvYWRlZE5hbWUsIkZvbnQiLHRoaXMuZm9udC5leHBvcnREYXRhKCldKX19ZmFsbGJhY2soZSx0KXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHQpfX1sb2FkVHlwZTNEYXRhKGUsdCxhKXtpZih0aGlzLiNWKXJldHVybiB0aGlzLiNWO2NvbnN0e2ZvbnQ6cix0eXBlM0RlcGVuZGVuY2llczppfT10aGlzO2Fzc2VydChyLmlzVHlwZTNGb250LCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBuPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHM9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCk7bi50eXBlM0ZvbnRSZWZzPXM7bGV0IG89UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgYz10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxsPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LGg9T2JqZWN0LmNyZWF0ZShudWxsKSxbdSxkLGYsZ109ci5iYm94LHA9Zi11LG09Zy1kLGI9TWF0aC5oeXBvdChwLG0pO2Zvcihjb25zdCBlIG9mIGMuZ2V0S2V5cygpKW89by50aGVuKCgoKT0+e2NvbnN0IHQ9Yy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBuLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazphLHJlc291cmNlczpsLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKCk9Pntzd2l0Y2goci5mbkFycmF5WzBdKXtjYXNlIGJ0OnRoaXMuI0socixiKTticmVhaztjYXNlIG10OmJ8fHRoaXMuI0oocil9aFtlXT1yLmdldElSKCk7Zm9yKGNvbnN0IGUgb2Ygci5kZXBlbmRlbmNpZXMpaS5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3dhcm4oYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgYT1uZXcgT3BlcmF0b3JMaXN0O2hbZV09YS5nZXRJUigpfSkpfSkpO3RoaXMuI1Y9by50aGVuKCgoKT0+e3IuY2hhclByb2NPcGVyYXRvckxpc3Q9aDtpZih0aGlzLl9iYm94KXtyLmlzQ2hhckJCb3g9ITA7ci5iYm94PXRoaXMuX2Jib3h9fSkpO3JldHVybiB0aGlzLiNWfSNLKGUsdD1OYU4pe2NvbnN0IGE9VXRpbC5ub3JtYWxpemVSZWN0KGUuYXJnc0FycmF5WzBdLnNsaWNlKDIpKSxyPWFbMl0tYVswXSxpPWFbM10tYVsxXSxuPU1hdGguaHlwb3QocixpKTtpZigwPT09cnx8MD09PWkpe2UuZm5BcnJheS5zcGxpY2UoMCwxKTtlLmFyZ3NBcnJheS5zcGxpY2UoMCwxKX1lbHNlIGlmKDA9PT10fHxNYXRoLnJvdW5kKG4vdCk+PTEwKXt0aGlzLl9iYm94Pz89WzEvMCwxLzAsLTEvMCwtMS8wXTtVdGlsLnJlY3RCb3VuZGluZ0JveCguLi5hLHRoaXMuX2Jib3gpfWxldCBzPTAsbz1lLmxlbmd0aDtmb3IoO3M8bzspe3N3aXRjaChlLmZuQXJyYXlbc10pe2Nhc2UgYnQ6YnJlYWs7Y2FzZSB5dDpjYXNlIHd0OmNhc2UgeHQ6Y2FzZSBTdDpjYXNlIGt0OmNhc2UgQXQ6Y2FzZSBDdDpjYXNlIHZ0OmNhc2UgRnQ6Y2FzZSBJdDpjYXNlIFR0OmNhc2UgT3Q6Y2FzZSBNdDpjYXNlIE9lOmUuZm5BcnJheS5zcGxpY2UocywxKTtlLmFyZ3NBcnJheS5zcGxpY2UocywxKTtvLS07Y29udGludWU7Y2FzZSBEZTpjb25zdFt0XT1lLmFyZ3NBcnJheVtzXTtsZXQgYT0wLHI9dC5sZW5ndGg7Zm9yKDthPHI7KXtjb25zdFtlXT10W2FdO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGEsMSk7ci0tO2NvbnRpbnVlfWErK319cysrfX0jSihlKXtsZXQgdD0xO2NvbnN0IGE9ZS5sZW5ndGg7Zm9yKDt0PGE7KXtpZihlLmZuQXJyYXlbdF09PT1hYSl7Y29uc3QgYT1lLmFyZ3NBcnJheVt0XVsyXTt0aGlzLl9iYm94Pz89WzEvMCwxLzAsLTEvMCwtMS8wXTtVdGlsLnJlY3RCb3VuZGluZ0JveCguLi5hLHRoaXMuX2Jib3gpfXQrK319fWNsYXNzIFN0YXRlTWFuYWdlcntjb25zdHJ1Y3RvcihlPW5ldyBFdmFsU3RhdGUpe3RoaXMuc3RhdGU9ZTt0aGlzLnN0YXRlU3RhY2s9W119c2F2ZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZTt0aGlzLnN0YXRlU3RhY2sucHVzaCh0aGlzLnN0YXRlKTt0aGlzLnN0YXRlPWUuY2xvbmUoKX1yZXN0b3JlKCl7Y29uc3QgZT10aGlzLnN0YXRlU3RhY2sucG9wKCk7ZSYmKHRoaXMuc3RhdGU9ZSl9dHJhbnNmb3JtKGUpe3RoaXMuc3RhdGUuY3RtPVV0aWwudHJhbnNmb3JtKHRoaXMuc3RhdGUuY3RtLGUpfX1jbGFzcyBUZXh0U3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KEZhKTt0aGlzLmZvbnROYW1lPW51bGw7dGhpcy5mb250U2l6ZT0wO3RoaXMubG9hZGVkTmFtZT1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMuZm9udE1hdHJpeD10O3RoaXMudGV4dE1hdHJpeD1GYS5zbGljZSgpO3RoaXMudGV4dExpbmVNYXRyaXg9RmEuc2xpY2UoKTt0aGlzLmNoYXJTcGFjaW5nPTA7dGhpcy53b3JkU3BhY2luZz0wO3RoaXMubGVhZGluZz0wO3RoaXMudGV4dEhTY2FsZT0xO3RoaXMudGV4dFJpc2U9MH1zZXRUZXh0TWF0cml4KGUsdCxhLHIsaSxuKXtjb25zdCBzPXRoaXMudGV4dE1hdHJpeDtzWzBdPWU7c1sxXT10O3NbMl09YTtzWzNdPXI7c1s0XT1pO3NbNV09bn1zZXRUZXh0TGluZU1hdHJpeChlLHQsYSxyLGksbil7Y29uc3Qgcz10aGlzLnRleHRMaW5lTWF0cml4O3NbMF09ZTtzWzFdPXQ7c1syXT1hO3NbM109cjtzWzRdPWk7c1s1XT1ufXRyYW5zbGF0ZVRleHRNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dE1hdHJpeDthWzRdPWFbMF0qZSthWzJdKnQrYVs0XTthWzVdPWFbMV0qZSthWzNdKnQrYVs1XX10cmFuc2xhdGVUZXh0TGluZU1hdHJpeChlLHQpe2NvbnN0IGE9dGhpcy50ZXh0TGluZU1hdHJpeDthWzRdPWFbMF0qZSthWzJdKnQrYVs0XTthWzVdPWFbMV0qZSthWzNdKnQrYVs1XX1jYXJyaWFnZVJldHVybigpe3RoaXMudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoMCwtdGhpcy5sZWFkaW5nKTt0aGlzLnRleHRNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpfWNsb25lKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKHRoaXMpO2UudGV4dE1hdHJpeD10aGlzLnRleHRNYXRyaXguc2xpY2UoKTtlLnRleHRMaW5lTWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKTtlLmZvbnRNYXRyaXg9dGhpcy5mb250TWF0cml4LnNsaWNlKCk7cmV0dXJuIGV9fWNsYXNzIEV2YWxTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoRmEpO3RoaXMuZm9udD1udWxsO3RoaXMudGV4dFJlbmRlcmluZ01vZGU9eDt0aGlzLl9maWxsQ29sb3JTcGFjZT10aGlzLl9zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O3RoaXMucGF0dGVybkZpbGxDb2xvclNwYWNlPW51bGw7dGhpcy5wYXR0ZXJuU3Ryb2tlQ29sb3JTcGFjZT1udWxsO3RoaXMuY3VycmVudFBvaW50WD10aGlzLmN1cnJlbnRQb2ludFk9MDt0aGlzLnBhdGhNaW5NYXg9bmV3IEZsb2F0MzJBcnJheShbMS8wLDEvMCwtMS8wLC0xLzBdKTt0aGlzLnBhdGhCdWZmZXI9W119Z2V0IGZpbGxDb2xvclNwYWNlKCl7cmV0dXJuIHRoaXMuX2ZpbGxDb2xvclNwYWNlfXNldCBmaWxsQ29sb3JTcGFjZShlKXt0aGlzLl9maWxsQ29sb3JTcGFjZT10aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1lfWdldCBzdHJva2VDb2xvclNwYWNlKCl7cmV0dXJuIHRoaXMuX3N0cm9rZUNvbG9yU3BhY2V9c2V0IHN0cm9rZUNvbG9yU3BhY2UoZSl7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT10aGlzLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlPWV9Y2xvbmUoe25ld1BhdGg6ZT0hMX09e30pe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTtpZihlKXt0LnBhdGhCdWZmZXI9W107dC5wYXRoTWluTWF4PW5ldyBGbG9hdDMyQXJyYXkoWzEvMCwxLzAsLTEvMCwtMS8wXSl9cmV0dXJuIHR9fWNsYXNzIEV2YWx1YXRvclByZXByb2Nlc3NvcntzdGF0aWMgZ2V0IG9wTWFwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcE1hcCIsT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHt3OntpZDpDZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxKOntpZDp2ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxqOntpZDpGZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNOntpZDpJZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxkOntpZDpUZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxyaTp7aWQ6T2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0saTp7aWQ6TWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZ3M6e2lkOkRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LHE6e2lkOkJlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFE6e2lkOlJlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGNtOntpZDpOZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxtOntpZDpFZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxsOntpZDpQZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxjOntpZDpMZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSx2OntpZDpqZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSx5OntpZDpfZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxoOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxyZTp7aWQ6WGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sUzp7aWQ6cWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sczp7aWQ6SGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZjp7aWQ6V2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRjp7aWQ6V2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sImYqIjp7aWQ6emUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQjp7aWQ6JGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sIkIqIjp7aWQ6R2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sYjp7aWQ6VmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sImIqIjp7aWQ6S2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sbjp7aWQ6SmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVzp7aWQ6WWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sIlcqIjp7aWQ6WmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQlQ6e2lkOlFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVUOntpZDpldCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxUYzp7aWQ6dHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHc6e2lkOmF0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR6OntpZDpydCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUTDp7aWQ6aXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVGY6e2lkOm50LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFRyOntpZDpzdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUczp7aWQ6b3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVGQ6e2lkOmN0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFREOntpZDpsdCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUbTp7aWQ6aHQsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sIlQqIjp7aWQ6dXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGo6e2lkOmR0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRKOntpZDpmdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwiJyI6e2lkOmd0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LCciJzp7aWQ6cHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sZDA6e2lkOm10LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGQxOntpZDpidCxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxDUzp7aWQ6eXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sY3M6e2lkOnd0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFNDOntpZDp4dCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxTQ046e2lkOlN0LG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxzYzp7aWQ6a3QsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sc2NuOntpZDpBdCxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sRzp7aWQ6Q3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZzp7aWQ6dnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sUkc6e2lkOkZ0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LHJnOntpZDpJdCxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxLOntpZDpUdCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxrOntpZDpPdCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxzaDp7aWQ6TXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkk6e2lkOkR0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LElEOntpZDpCdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFSTp7aWQ6UnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRG86e2lkOk50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LE1QOntpZDpFdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxEUDp7aWQ6UHQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sQk1DOntpZDpMdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxCREM6e2lkOmp0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEVNQzp7aWQ6X3QsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQlg6e2lkOlV0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVYOntpZDpYdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCTTpudWxsLEJEOm51bGwsdHJ1ZTpudWxsLGZhOm51bGwsZmFsOm51bGwsZmFsczpudWxsLGZhbHNlOm51bGwsbnU6bnVsbCxudWw6bnVsbCxudWxsOm51bGx9KSl9c3RhdGljIE1BWF9JTlZBTElEX1BBVEhfT1BTPTEwO2NvbnN0cnVjdG9yKGUsdCxhPW5ldyBTdGF0ZU1hbmFnZXIpe3RoaXMucGFyc2VyPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIENtZCl7Y29uc3Qgcj1hLmNtZCxpPUV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcFtyXTtpZighaSl7d2FybihgVW5rbm93biBjb21tYW5kICIke3J9Ii5gKTtjb250aW51ZX1jb25zdCBuPWkuaWQscz1pLm51bUFyZ3M7bGV0IG89bnVsbCE9PXQ/dC5sZW5ndGg6MDt0aGlzLl9pc1BhdGhPcHx8KHRoaXMuX251bUludmFsaWRQYXRoT1BTPTApO3RoaXMuX2lzUGF0aE9wPW4+PUVlJiZuPD1KZTtpZihpLnZhcmlhYmxlQXJncylvPnMmJmluZm8oYENvbW1hbmQgJHtyfTogZXhwZWN0ZWQgWzAsICR7c31dIGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYCk7ZWxzZXtpZihvIT09cyl7Y29uc3QgZT10aGlzLm5vblByb2Nlc3NlZEFyZ3M7Zm9yKDtvPnM7KXtlLnB1c2godC5zaGlmdCgpKTtvLS19Zm9yKDtvPHMmJjAhPT1lLmxlbmd0aDspe251bGw9PT10JiYodD1bXSk7dC51bnNoaWZ0KGUucG9wKCkpO28rK319aWYobzxzKXtjb25zdCBlPWBjb21tYW5kICR7cn06IGV4cGVjdGVkICR7c30gYXJncywgYnV0IHJlY2VpdmVkICR7b30gYXJncy5gO2lmKHRoaXMuX2lzUGF0aE9wJiYrK3RoaXMuX251bUludmFsaWRQYXRoT1BTPkV2YWx1YXRvclByZXByb2Nlc3Nvci5NQVhfSU5WQUxJRF9QQVRIX09QUyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgJHtlfWApO3dhcm4oYFNraXBwaW5nICR7ZX1gKTtudWxsIT09dCYmKHQubGVuZ3RoPTApO2NvbnRpbnVlfX10aGlzLnByZXByb2Nlc3NDb21tYW5kKG4sdCk7ZS5mbj1uO2UuYXJncz10O3JldHVybiEwfWlmKGE9PT13YSlyZXR1cm4hMTtpZihudWxsIT09YSl7bnVsbD09PXQmJih0PVtdKTt0LnB1c2goYSk7aWYodC5sZW5ndGg+MzMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSBCZTp0aGlzLnN0YXRlTWFuYWdlci5zYXZlKCk7YnJlYWs7Y2FzZSBSZTp0aGlzLnN0YXRlTWFuYWdlci5yZXN0b3JlKCk7YnJlYWs7Y2FzZSBOZTp0aGlzLnN0YXRlTWFuYWdlci50cmFuc2Zvcm0odCl9fX1jbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihuZXcgU3RyaW5nU3RyZWFtKGUpKX1wYXJzZSgpe2NvbnN0IGU9e2ZuOjAsYXJnczpbXX0sdD17Zm9udFNpemU6MCxmb250TmFtZToiIixmb250Q29sb3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpfTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoIXRoaXMucmVhZChlKSlicmVhaztpZigwIT09dGhpcy5zYXZlZFN0YXRlc0RlcHRoKWNvbnRpbnVlO2NvbnN0e2ZuOmEsYXJnczpyfT1lO3N3aXRjaCgwfGEpe2Nhc2UgbnQ6Y29uc3RbZSxhXT1yO2UgaW5zdGFuY2VvZiBOYW1lJiYodC5mb250TmFtZT1lLm5hbWUpOyJudW1iZXIiPT10eXBlb2YgYSYmYT4wJiYodC5mb250U2l6ZT1hKTticmVhaztjYXNlIEl0OkNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSB2dDpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIE90OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7d2FybihgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBwYXJzZURlZmF1bHRBcHBlYXJhbmNlKGUpe3JldHVybiBuZXcgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IoZSkucGFyc2UoKX1jbGFzcyBBcHBlYXJhbmNlU3RyZWFtRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUpO3RoaXMuc3RyZWFtPWU7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXQ7dGhpcy54cmVmPWE7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9cjt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlVXRpbHMuZ3JheX0sYT0hMTtjb25zdCByPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihhfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOmksYXJnczpufT1lO3N3aXRjaCgwfGkpe2Nhc2UgQmU6ci5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBSZTp0PXIucG9wKCl8fHQ7YnJlYWs7Y2FzZSBodDp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KG5bMF0sblsxXSk7YnJlYWs7Y2FzZSBudDpjb25zdFtlLGldPW47ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBpJiZpPjAmJih0LmZvbnRTaXplPWkqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSB3dDp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6blswXSx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIGt0OnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBJdDpDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkl0ZW0obiwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgdnQ6Q29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBPdDpDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGR0OmNhc2UgZnQ6Y2FzZSBndDpjYXNlIHB0OmE9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9YS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10sYT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IHI9bnVsbCxpPW51bGw7Zm9yKGNvbnN0W2Usbl1vZiBhKWlmKHIpaWYoZT09PXIraS5sZW5ndGgpaS5wdXNoKG4pO2Vsc2V7dC5wdXNoKHIsaSk7cj1lO2k9W25dfWVsc2V7cj1lO2k9W25dfXImJnQucHVzaChyLGkpO2Uuc2V0KCJXIix0KTtjb25zdCBuPW5ldyBEaWN0KHRoaXMueHJlZik7bi5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtuLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO24uc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIsbik7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgYSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGEuc3BsaXQoIiIpKXtjb25zdCBhPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoYSkpY29udGludWU7Y29uc3Qgcj10Lm1lYXN1cmVUZXh0KGUpLGk9TWF0aC5jZWlsKHIud2lkdGgpO3RoaXMud2lkdGhzLnNldChhLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGEsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoYSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFtuLHMsbyxjXT1lO2xldCBsPW8tbixoPWMtczt0JTE4MCE9MCYmKFtsLGhdPVtoLGxdKTtjb25zdCB1PWEqaTtyZXR1cm57Y29vcmRzOlswLGgrcippLXVdLGJib3g6WzAsMCxsLGhdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LGgsdSk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLG4scyxvKXtjb25zdCBjPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxsPVtdO2xldCBoPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7bC5wdXNoKHQpO2NvbnN0IGU9Yy5tZWFzdXJlVGV4dCh0KS53aWR0aDtoPU1hdGgubWF4KGgsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgYT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09YSl7Y29uc3Qgcj1jLm1lYXN1cmVUZXh0KHQpO2E9TWF0aC5jZWlsKHIud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGEpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fWgqPW4vMWUzO2NvbnN0W3UsZCxmLGddPXQ7bGV0IHA9Zi11LG09Zy1kO2klMTgwIT0wJiYoW3AsbV09W20scF0pO2xldCBiPTE7aD5wJiYoYj1wL2gpO2xldCB5PTE7Y29uc3Qgdz1hKm4seD1yKm4sUz13KmwubGVuZ3RoO1M+bSYmKHk9bS9TKTtjb25zdCBrPW4qTWF0aC5taW4oYix5KSxDPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHApfSAke251bWJlclRvU3RyaW5nKG0pfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKG0reCl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihzLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoayl9IFRmYF0se3Jlc291cmNlczp2fT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7Qy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO3Yuc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IEY9bnVtYmVyVG9TdHJpbmcodyk7Zm9yKGNvbnN0IGUgb2YgbClDLnB1c2goYDAgLSR7Rn0gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7Qy5wdXNoKCJFVCIsIlEiKTtjb25zdCBUPUMuam9pbigiXG4iKSxPPW5ldyBEaWN0KHRoaXMueHJlZik7Ty5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO08uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtPLnNldCgiQkJveCIsWzAsMCxwLG1dKTtPLnNldCgiTGVuZ3RoIixULmxlbmd0aCk7Ty5zZXQoIlJlc291cmNlcyIsdik7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHAsbSk7Ty5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgTT1uZXcgU3RyaW5nU3RyZWFtKFQpO00uZGljdD1PO3JldHVybiBNfX1jb25zdCBQbj1bIm0vZCIsIm0vZC95eSIsIm1tL2RkL3l5IiwibW0veXkiLCJkLW1tbSIsImQtbW1tLXl5IiwiZGQtbW1tLXl5IiwieXktbW0tZGQiLCJtbW0teXkiLCJtbW1tLXl5IiwibW1tIGQsIHl5eXkiLCJtbW1tIGQsIHl5eXkiLCJtL2QveXkgaDpNTSB0dCIsIm0vZC95eSBISDpNTSJdLExuPVsiSEg6TU0iLCJoOk1NIHR0IiwiSEg6TU06c3MiLCJoOk1NOnNzIHR0Il07Y2xhc3MgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5yb290PWU7dGhpcy54cmVmPXQ7dGhpcy5fdHlwZT1hfWdldEFsbCgpe2NvbnN0IGU9bmV3IE1hcDtpZighdGhpcy5yb290KXJldHVybiBlO2NvbnN0IHQ9dGhpcy54cmVmLGE9bmV3IFJlZlNldDthLnB1dCh0aGlzLnJvb3QpO2NvbnN0IHI9W3RoaXMucm9vdF07Zm9yKDtyLmxlbmd0aD4wOyl7Y29uc3QgaT10LmZldGNoSWZSZWYoci5zaGlmdCgpKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZihpLmhhcygiS2lkcyIpKXtjb25zdCBlPWkuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoYS5oYXModCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBEdXBsaWNhdGUgZW50cnkgaW4gIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7ci5wdXNoKHQpO2EucHV0KHQpfWNvbnRpbnVlfWNvbnN0IG49aS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGE9MCxyPW4ubGVuZ3RoO2E8cjthKz0yKWUuc2V0KHQuZmV0Y2hJZlJlZihuW2FdKSx0LmZldGNoSWZSZWYoblthKzFdKSl9cmV0dXJuIGV9Z2V0UmF3KGUpe2lmKCF0aGlzLnJvb3QpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnhyZWY7bGV0IGE9dC5mZXRjaElmUmVmKHRoaXMucm9vdCkscj0wO2Zvcig7YS5oYXMoIktpZHMiKTspe2lmKCsrcj4xMCl7d2FybihgU2VhcmNoIGRlcHRoIGxpbWl0IHJlYWNoZWQgZm9yICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO3JldHVybiBudWxsfWNvbnN0IGk9YS5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gbnVsbDtsZXQgbj0wLHM9aS5sZW5ndGgtMTtmb3IoO248PXM7KXtjb25zdCByPW4rcz4+MSxvPXQuZmV0Y2hJZlJlZihpW3JdKSxjPW8uZ2V0KCJMaW1pdHMiKTtpZihlPHQuZmV0Y2hJZlJlZihjWzBdKSlzPXItMTtlbHNle2lmKCEoZT50LmZldGNoSWZSZWYoY1sxXSkpKXthPW87YnJlYWt9bj1yKzF9fWlmKG4+cylyZXR1cm4gbnVsbH1jb25zdCBpPWEuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2xldCBhPTAscj1pLmxlbmd0aC0yO2Zvcig7YTw9cjspe2NvbnN0IG49YStyPj4xLHM9bisoMSZuKSxvPXQuZmV0Y2hJZlJlZihpW3NdKTtpZihlPG8pcj1zLTI7ZWxzZXtpZighKGU+bykpcmV0dXJuIGlbcysxXTthPXMrMn19fXJldHVybiBudWxsfWdldChlKXtyZXR1cm4gdGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5nZXRSYXcoZSkpfX1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fWNsYXNzIE51bWJlclRyZWUgZXh0ZW5kcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOdW1zIil9fWZ1bmN0aW9uIGNsZWFyR2xvYmFsQ2FjaGVzKCl7IWZ1bmN0aW9uIGNsZWFyUGF0dGVybkNhY2hlcygpe0lpPU9iamVjdC5jcmVhdGUobnVsbCl9KCk7IWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7eGE9T2JqZWN0LmNyZWF0ZShudWxsKTtTYT1PYmplY3QuY3JlYXRlKG51bGwpO2thPU9iamVjdC5jcmVhdGUobnVsbCl9KCk7IWZ1bmN0aW9uIGNsZWFyVW5pY29kZUNhY2hlcygpe0RyLmNsZWFyKCl9KCk7SnB4SW1hZ2UuY2xlYW51cCgpfWZ1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0P2UuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGw6bnVsbH1jbGFzcyBGaWxlU3BlY3sjWT0hMTtjb25zdHJ1Y3RvcihlLHQsYT0hMSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7ZS5oYXMoIlJGIikmJndhcm4oIlJlbGF0ZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpO2F8fChlLmhhcygiRUYiKT90aGlzLiNZPSEwOndhcm4oIk5vbi1lbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIikpfX1nZXQgZmlsZW5hbWUoKXtsZXQgZT0iIjtjb25zdCB0PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KTt0JiYic3RyaW5nIj09dHlwZW9mIHQmJihlPXN0cmluZ1RvUERGU3RyaW5nKHQsITApLnJlcGxhY2VBbGwoIlxcXFwiLCJcXCIpLnJlcGxhY2VBbGwoIlxcLyIsIi8iKS5yZXBsYWNlQWxsKCJcXCIsIi8iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaWxlbmFtZSIsZXx8InVubmFtZWQiKX1nZXQgY29udGVudCgpe2lmKCF0aGlzLiNZKXJldHVybiBudWxsO3RoaXMuX2NvbnRlbnRSZWZ8fD1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdD8uZ2V0KCJFRiIpKTtsZXQgZT1udWxsO2lmKHRoaXMuX2NvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5fY29udGVudFJlZik7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZT10LmdldEJ5dGVzKCk6d2FybigiRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIHBvaW50cyB0byBub24tZXhpc3RpbmcvaW52YWxpZCBjb250ZW50Iil9ZWxzZSB3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbnkgY29udGVudCIpO3JldHVybiBlfWdldCBkZXNjcmlwdGlvbigpe2xldCBlPSIiO2NvbnN0IHQ9dGhpcy5yb290Py5nZXQoIkRlc2MiKTt0JiYic3RyaW5nIj09dHlwZW9mIHQmJihlPXN0cmluZ1RvUERGU3RyaW5nKHQpKTtyZXR1cm4gc2hhZG93KHRoaXMsImRlc2NyaXB0aW9uIixlKX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3Jhd0ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsZmlsZW5hbWU6KGU9dGhpcy5maWxlbmFtZSxlLnN1YnN0cmluZyhlLmxhc3RJbmRleE9mKCIvIikrMSkpLGNvbnRlbnQ6dGhpcy5jb250ZW50LGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb259O3ZhciBlfX1jb25zdCBqbj0wLF9uPS0yLFVuPS0zLFhuPS00LHFuPS01LEhuPS02LFduPS05O2Z1bmN0aW9uIGlzV2hpdGVzcGFjZShlLHQpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iICI9PT1hfHwiXG4iPT09YXx8IlxyIj09PWF8fCJcdCI9PT1hfWNsYXNzIFhNTFBhcnNlckJhc2V7X3Jlc29sdmVFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8mKFteO10rKTsvZywoKGUsdCk9PntpZigiI3giPT09dC5zdWJzdHJpbmcoMCwyKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTtpZigiIyI9PT10LnN1YnN0cmluZygwLDEpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygxKSwxMCkpO3N3aXRjaCh0KXtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJxdW90IjpyZXR1cm4nIic7Y2FzZSJhcG9zIjpyZXR1cm4iJyJ9cmV0dXJuIHRoaXMub25SZXNvbHZlRW50aXR5KHQpfSkpfV9wYXJzZUNvbnRlbnQoZSx0KXtjb25zdCBhPVtdO2xldCByPXQ7ZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDtyPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxyKTspKytyfWZvcig7cjxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLHIpJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdOykrK3I7Y29uc3QgaT1lLnN1YnN0cmluZyh0LHIpO3NraXBXcygpO2Zvcig7cjxlLmxlbmd0aCYmIj4iIT09ZVtyXSYmIi8iIT09ZVtyXSYmIj8iIT09ZVtyXTspe3NraXBXcygpO2xldCB0PSIiLGk9IiI7Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI9IiE9PWVbcl07KXt0Kz1lW3JdOysrcn1za2lwV3MoKTtpZigiPSIhPT1lW3JdKXJldHVybiBudWxsOysrcjtza2lwV3MoKTtjb25zdCBuPWVbcl07aWYoJyInIT09biYmIiciIT09bilyZXR1cm4gbnVsbDtjb25zdCBzPWUuaW5kZXhPZihuLCsrcik7aWYoczwwKXJldHVybiBudWxsO2k9ZS5zdWJzdHJpbmcocixzKTthLnB1c2goe25hbWU6dCx2YWx1ZTp0aGlzLl9yZXNvbHZlRW50aXRpZXMoaSl9KTtyPXMrMTtza2lwV3MoKX1yZXR1cm57bmFtZTppLGF0dHJpYnV0ZXM6YSxwYXJzZWQ6ci10fX1fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSx0KXtsZXQgYT10O2Zvcig7YTxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLGEpJiYiPiIhPT1lW2FdJiYiPyIhPT1lW2FdJiYiLyIhPT1lW2FdOykrK2E7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpOyFmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9KCk7Y29uc3QgaT1hO2Zvcig7YTxlLmxlbmd0aCYmKCI/IiE9PWVbYV18fCI+IiE9PWVbYSsxXSk7KSsrYTtyZXR1cm57bmFtZTpyLHZhbHVlOmUuc3Vic3RyaW5nKGksYSkscGFyc2VkOmEtdH19cGFyc2VYbWwoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGg7KXtsZXQgYT10O2lmKCI8Ij09PWVbdF0peysrYTtsZXQgdDtzd2l0Y2goZVthXSl7Y2FzZSIvIjorK2E7dD1lLmluZGV4T2YoIj4iLGEpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFduKTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoYSx0KSk7YT10KzE7YnJlYWs7Y2FzZSI/IjorK2E7Y29uc3Qgcj10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGEpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhhK3IucGFyc2VkLGErci5wYXJzZWQrMikpe3RoaXMub25FcnJvcihVbik7cmV0dXJufXRoaXMub25QaShyLm5hbWUsci52YWx1ZSk7YSs9ci5wYXJzZWQrMjticmVhaztjYXNlIiEiOmlmKCItLSI9PT1lLnN1YnN0cmluZyhhKzEsYSszKSl7dD1lLmluZGV4T2YoIi0tXHgzZSIsYSszKTtpZih0PDApe3RoaXMub25FcnJvcihxbik7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGErMyx0KSk7YT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihfbik7cmV0dXJufXRoaXMub25DZGF0YShlLnN1YnN0cmluZyhhKzgsdCkpO2E9dCszfWVsc2V7aWYoIkRPQ1RZUEUiIT09ZS5zdWJzdHJpbmcoYSsxLGErOCkpe3RoaXMub25FcnJvcihIbik7cmV0dXJufXtjb25zdCByPWUuaW5kZXhPZigiWyIsYSs4KTtsZXQgaT0hMTt0PWUuaW5kZXhPZigiPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihYbik7cmV0dXJufWlmKHI+MCYmdD5yKXt0PWUuaW5kZXhPZigiXT4iLGErOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoWG4pO3JldHVybn1pPSEwfWNvbnN0IG49ZS5zdWJzdHJpbmcoYSs4LHQrKGk/MTowKSk7dGhpcy5vbkRvY3R5cGUobik7YT10KyhpPzI6MSl9fWJyZWFrO2RlZmF1bHQ6Y29uc3QgaT10aGlzLl9wYXJzZUNvbnRlbnQoZSxhKTtpZihudWxsPT09aSl7dGhpcy5vbkVycm9yKEhuKTtyZXR1cm59bGV0IG49ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsyKSluPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3IoV24pO3JldHVybn10aGlzLm9uQmVnaW5FbGVtZW50KGkubmFtZSxpLmF0dHJpYnV0ZXMsbik7YSs9aS5wYXJzZWQrKG4/MjoxKX19ZWxzZXtmb3IoO2E8ZS5sZW5ndGgmJiI8IiE9PWVbYV07KWErKztjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7dGhpcy5vblRleHQodGhpcy5fcmVzb2x2ZUVudGl0aWVzKHIpKX10PWF9fW9uUmVzb2x2ZUVudGl0eShlKXtyZXR1cm5gJiR7ZX07YH1vblBpKGUsdCl7fW9uQ29tbWVudChlKXt9b25DZGF0YShlKXt9b25Eb2N0eXBlKGUpe31vblRleHQoZSl7fW9uQmVnaW5FbGVtZW50KGUsdCxhKXt9b25FbmRFbGVtZW50KGUpe31vbkVycm9yKGUpe319Y2xhc3MgU2ltcGxlRE9NTm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubm9kZU5hbWU9ZTt0aGlzLm5vZGVWYWx1ZT10O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwYXJlbnROb2RlIix7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8uWzBdfWdldCBuZXh0U2libGluZygpe2NvbnN0IGU9dGhpcy5wYXJlbnROb2RlLmNoaWxkTm9kZXM7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5pbmRleE9mKHRoaXMpO3JldHVybi0xIT09dD9lW3QrMV06dm9pZCAwfWdldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/dGhpcy5jaGlsZE5vZGVzLm1hcCgoZT0+ZS50ZXh0Q29udGVudCkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8ubGVuZ3RoPjB9c2VhcmNoTm9kZShlLHQpe2lmKHQ+PWUubGVuZ3RoKXJldHVybiB0aGlzO2NvbnN0IGE9ZVt0XTtpZihhLm5hbWUuc3RhcnRzV2l0aCgiIyIpJiZ0PGUubGVuZ3RoLTEpcmV0dXJuIHRoaXMuc2VhcmNoTm9kZShlLHQrMSk7Y29uc3Qgcj1bXTtsZXQgaT10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09aS5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W25dPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBuLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gaS5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9aS5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYoaS5jaGlsZE5vZGVzPy5sZW5ndGg+MCl7ci5wdXNoKFtpLDBdKTtpPWkuY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7aT1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHtlbmNvZGVUb1htbFN0cmluZyh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4ke2VuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKSl9fWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPWpuO3RoaXMuX2hhc0F0dHJpYnV0ZXM9ZTt0aGlzLl9sb3dlckNhc2VOYW1lPXR9cGFyc2VGcm9tU3RyaW5nKGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD1bXTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9lcnJvckNvZGU9am47dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGUhPT1qbilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyBTaW1wbGVYTUxQYXJzZXIoe2xvd2VyQ2FzZU5hbWU6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7dGhpcy5fbWV0YWRhdGFNYXA9bmV3IE1hcDt0aGlzLl9kYXRhPWU7dCYmdGhpcy5fcGFyc2UodCl9X3JlcGFpcihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW148XSsvLCIiKS5yZXBsYWNlQWxsKC8+XFwzNzZcXDM3NyhbXjxdKykvZywoZnVuY3Rpb24oZSx0KXtjb25zdCBhPXQucmVwbGFjZUFsbCgvXFwoWzAtM10pKFswLTddKShbMC03XSkvZywoZnVuY3Rpb24oZSx0LGEscil7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNjQqdCs4KmErMSpyKX0pKS5yZXBsYWNlQWxsKC8mKGFtcHxhcG9zfGd0fGx0fHF1b3QpOy9nLChmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlImFtcCI6cmV0dXJuIiYiO2Nhc2UiYXBvcyI6cmV0dXJuIiciO2Nhc2UiZ3QiOnJldHVybiI+IjtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJxdW90IjpyZXR1cm4nIid9dGhyb3cgbmV3IEVycm9yKGBfcmVwYWlyOiAke3R9IGlzbid0IGRlZmluZWQuYCl9KSkscj1bIj4iXTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXtjb25zdCB0PTI1NiphLmNoYXJDb2RlQXQoZSkrYS5jaGFyQ29kZUF0KGUrMSk7dD49MzImJnQ8MTI3JiY2MCE9PXQmJjYyIT09dCYmMzghPT10P3IucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTpyLnB1c2goIiYjeCIrKDY1NTM2K3QpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSkrIjsiKX1yZXR1cm4gci5qb2luKCIiKX0pKX1fZ2V0U2VxdWVuY2UoZSl7Y29uc3QgdD1lLm5vZGVOYW1lO3JldHVybiJyZGY6YmFnIiE9PXQmJiJyZGY6c2VxIiE9PXQmJiJyZGY6YWx0IiE9PXQ/bnVsbDplLmNoaWxkTm9kZXMuZmlsdGVyKChlPT4icmRmOmxpIj09PWUubm9kZU5hbWUpKX1fcGFyc2VBcnJheShlKXtpZighZS5oYXNDaGlsZE5vZGVzKCkpcmV0dXJuO2NvbnN0W3RdPWUuY2hpbGROb2RlcyxhPXRoaXMuX2dldFNlcXVlbmNlKHQpfHxbXTt0aGlzLl9tZXRhZGF0YU1hcC5zZXQoZS5ub2RlTmFtZSxhLm1hcCgoZT0+ZS50ZXh0Q29udGVudC50cmltKCkpKSl9X3BhcnNlKGUpe2xldCB0PWUuZG9jdW1lbnRFbGVtZW50O2lmKCJyZGY6cmRmIiE9PXQubm9kZU5hbWUpe3Q9dC5maXJzdENoaWxkO2Zvcig7dCYmInJkZjpyZGYiIT09dC5ub2RlTmFtZTspdD10Lm5leHRTaWJsaW5nfWlmKHQmJiJyZGY6cmRmIj09PXQubm9kZU5hbWUmJnQuaGFzQ2hpbGROb2RlcygpKWZvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcylpZigicmRmOmRlc2NyaXB0aW9uIj09PWUubm9kZU5hbWUpZm9yKGNvbnN0IHQgb2YgZS5jaGlsZE5vZGVzKXtjb25zdCBlPXQubm9kZU5hbWU7c3dpdGNoKGUpe2Nhc2UiI3RleHQiOmNvbnRpbnVlO2Nhc2UiZGM6Y3JlYXRvciI6Y2FzZSJkYzpzdWJqZWN0Ijp0aGlzLl9wYXJzZUFycmF5KHQpO2NvbnRpbnVlfXRoaXMuX21ldGFkYXRhTWFwLnNldChlLHQudGV4dENvbnRlbnQudHJpbSgpKX19Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybntwYXJzZWREYXRhOnRoaXMuX21ldGFkYXRhTWFwLHJhd0RhdGE6dGhpcy5fZGF0YX19fWNvbnN0IHpuPTEsJG49MixHbj0zLFZuPTQsS249NTtjbGFzcyBTdHJ1Y3RUcmVlUm9vdHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy54cmVmPWU7dGhpcy5kaWN0PXQ7dGhpcy5yZWY9YSBpbnN0YW5jZW9mIFJlZj9hOm51bGw7dGhpcy5yb2xlTWFwPW5ldyBNYXA7dGhpcy5zdHJ1Y3RQYXJlbnRJZHM9bnVsbH1pbml0KCl7dGhpcy5yZWFkUm9sZU1hcCgpfSNaKGUsdCxhKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpfHx0PDApcmV0dXJuO3RoaXMuc3RydWN0UGFyZW50SWRzfHw9bmV3IFJlZlNldENhY2hlO2xldCByPXRoaXMuc3RydWN0UGFyZW50SWRzLmdldChlKTtpZighcil7cj1bXTt0aGlzLnN0cnVjdFBhcmVudElkcy5wdXQoZSxyKX1yLnB1c2goW3QsYV0pfWFkZEFubm90YXRpb25JZFRvUGFnZShlLHQpe3RoaXMuI1ooZSx0LFZuKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZSlhIGluc3RhbmNlb2YgTmFtZSYmdGhpcy5yb2xlTWFwLnNldCh0LGEubmFtZSl9c3RhdGljIGFzeW5jIGNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZSxwZGZNYW5hZ2VyOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6YX0pe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oIkNhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gY2F0YWxvZyByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IHI9MCxpPSEwO2Zvcihjb25zdFtlLG5db2YgYSl7Y29uc3R7cmVmOmF9PWF3YWl0IHQuZ2V0UGFnZShlKTtpZighKGEgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHtlfSBoYXMgbm8gcmVmLmApO2k9ITA7YnJlYWt9Zm9yKGNvbnN0IGUgb2YgbilpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLnBhcmVudFRyZWVJZD1yKys7aT0hMX19aWYoaSl7Zm9yKGNvbnN0IGUgb2YgYS52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKWRlbGV0ZSB0LnBhcmVudFRyZWVJZDtyZXR1cm4hMX1yZXR1cm4hMH1zdGF0aWMgYXN5bmMgY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSx4cmVmOnQsY2F0YWxvZ1JlZjphLHBkZk1hbmFnZXI6cixjaGFuZ2VzOml9KXtjb25zdCBuPWF3YWl0IHIuZW5zdXJlQ2F0YWxvZygiY2xvbmVEaWN0Iikscz1uZXcgUmVmU2V0Q2FjaGU7cy5wdXQoYSxuKTtjb25zdCBvPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7bi5zZXQoIlN0cnVjdFRyZWVSb290IixvKTtjb25zdCBjPW5ldyBEaWN0KHQpO2Muc2V0KCJUeXBlIixOYW1lLmdldCgiU3RydWN0VHJlZVJvb3QiKSk7Y29uc3QgbD10LmdldE5ld1RlbXBvcmFyeVJlZigpO2Muc2V0KCJQYXJlbnRUcmVlIixsKTtjb25zdCBoPVtdO2Muc2V0KCJLIixoKTtzLnB1dChvLGMpO2NvbnN0IHU9bmV3IERpY3QodCksZD1bXTt1LnNldCgiTnVtcyIsZCk7Y29uc3QgZj1hd2FpdCB0aGlzLiNRKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOm8sc3RydWN0VHJlZVJvb3Q6bnVsbCxraWRzOmgsbnVtczpkLHhyZWY6dCxwZGZNYW5hZ2VyOnIsY2hhbmdlczppLGNhY2hlOnN9KTtjLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLGYpO3MucHV0KGwsdSk7Zm9yKGNvbnN0W2UsdF1vZiBzLml0ZW1zKCkpaS5wdXQoZSx7ZGF0YTp0fSl9YXN5bmMgY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjplLG5ld0Fubm90YXRpb25zQnlQYWdlOnR9KXtpZighdGhpcy5yZWYpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBubyByb290IHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlTmV4dEtleSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBpbnZhbGlkIG5leHQga2V5LiIpO3JldHVybiExfWNvbnN0IHI9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogUGFyZW50VHJlZSBpc24ndCBhIGRpY3QuIik7cmV0dXJuITF9Y29uc3QgaT1yLmdldCgiTnVtcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbnVtcyBpc24ndCBhbiBhcnJheS4iKTtyZXR1cm4hMX1jb25zdCBuPW5ldyBOdW1iZXJUcmVlKHIsdGhpcy54cmVmKTtmb3IoY29uc3QgYSBvZiB0LmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6dH09YXdhaXQgZS5nZXRQYWdlKGEpO2lmKCF0LmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IHI9dC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKXx8IUFycmF5LmlzQXJyYXkobi5nZXQocikpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHthfSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IHM9ITA7Zm9yKGNvbnN0W3IsaV1vZiB0KXtjb25zdHtwYWdlRGljdDp0fT1hd2FpdCBlLmdldFBhZ2Uocik7U3RydWN0VHJlZVJvb3QuI2VlKHtlbGVtZW50czppLHhyZWY6dGhpcy54cmVmLHBhZ2VEaWN0OnQsbnVtYmVyVHJlZTpufSk7Zm9yKGNvbnN0IGUgb2YgaSlpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLmFjY2Vzc2liaWxpdHlEYXRhLnN0cnVjdFBhcmVudD49MHx8KGUucGFyZW50VHJlZUlkPWErKyk7cz0hMX19aWYocyl7Zm9yKGNvbnN0IGUgb2YgdC52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKXtkZWxldGUgdC5wYXJlbnRUcmVlSWQ7ZGVsZXRlIHQuc3RydWN0VHJlZVBhcmVudH1yZXR1cm4hMX1yZXR1cm4hMH1hc3luYyB1cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmF9KXtjb25zdHtyZWY6cix4cmVmOml9PXRoaXMsbj10aGlzLmRpY3QuY2xvbmUoKSxzPW5ldyBSZWZTZXRDYWNoZTtzLnB1dChyLG4pO2xldCBvLGM9bi5nZXRSYXcoIlBhcmVudFRyZWUiKTtpZihjIGluc3RhbmNlb2YgUmVmKW89aS5mZXRjaChjKTtlbHNle289YztjPWkuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7bi5zZXQoIlBhcmVudFRyZWUiLGMpfW89by5jbG9uZSgpO3MucHV0KGMsbyk7bGV0IGw9by5nZXRSYXcoIk51bXMiKSxoPW51bGw7aWYobCBpbnN0YW5jZW9mIFJlZil7aD1sO2w9aS5mZXRjaChoKX1sPWwuc2xpY2UoKTtofHxvLnNldCgiTnVtcyIsbCk7Y29uc3QgdT1hd2FpdCBTdHJ1Y3RUcmVlUm9vdC4jUSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpyLHN0cnVjdFRyZWVSb290OnRoaXMsa2lkczpudWxsLG51bXM6bCx4cmVmOmkscGRmTWFuYWdlcjp0LGNoYW5nZXM6YSxjYWNoZTpzfSk7aWYoLTEhPT11KXtuLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLHUpO2gmJnMucHV0KGgsbCk7Zm9yKGNvbnN0W2UsdF1vZiBzLml0ZW1zKCkpYS5wdXQoZSx7ZGF0YTp0fSl9fXN0YXRpYyBhc3luYyNRKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOnQsc3RydWN0VHJlZVJvb3Q6YSxraWRzOnIsbnVtczppLHhyZWY6bixwZGZNYW5hZ2VyOnMsY2hhbmdlczpvLGNhY2hlOmN9KXtjb25zdCBsPU5hbWUuZ2V0KCJPQkpSIik7bGV0IGgsdT0tMTtmb3IoY29uc3RbZCxmXW9mIGUpe2NvbnN0IGU9YXdhaXQgcy5nZXRQYWdlKGQpLHtyZWY6Z309ZSxwPWcgaW5zdGFuY2VvZiBSZWY7Zm9yKGNvbnN0e2FjY2Vzc2liaWxpdHlEYXRhOnMscmVmOm0scGFyZW50VHJlZUlkOmIsc3RydWN0VHJlZVBhcmVudDp5fW9mIGYpe2lmKCFzPy50eXBlKWNvbnRpbnVlO2NvbnN0e3N0cnVjdFBhcmVudDpmfT1zO2lmKGEmJk51bWJlci5pc0ludGVnZXIoZikmJmY+PTApe2xldCB0PShofHw9bmV3IE1hcCkuZ2V0KGQpO2lmKHZvaWQgMD09PXQpe3Q9bmV3IFN0cnVjdFRyZWVQYWdlKGEsZS5wYWdlRGljdCkuY29sbGVjdE9iamVjdHMoZyk7aC5zZXQoZCx0KX1jb25zdCByPXQ/LmdldChmKTtpZihyKXtjb25zdCBlPW4uZmV0Y2gocikuY2xvbmUoKTtTdHJ1Y3RUcmVlUm9vdC4jdGUoZSxzKTtvLnB1dChyLHtkYXRhOmV9KTtjb250aW51ZX19dT1NYXRoLm1heCh1LGIpO2NvbnN0IHc9bi5nZXROZXdUZW1wb3JhcnlSZWYoKSx4PW5ldyBEaWN0KG4pO1N0cnVjdFRyZWVSb290LiN0ZSh4LHMpO2F3YWl0IHRoaXMuI2FlKHtzdHJ1Y3RUcmVlUGFyZW50OnksdGFnRGljdDp4LG5ld1RhZ1JlZjp3LHN0cnVjdFRyZWVSb290UmVmOnQsZmFsbGJhY2tLaWRzOnIseHJlZjpuLGNhY2hlOmN9KTtjb25zdCBTPW5ldyBEaWN0KG4pO3guc2V0KCJLIixTKTtTLnNldCgiVHlwZSIsbCk7cCYmUy5zZXQoIlBnIixnKTtTLnNldCgiT2JqIixtKTtjLnB1dCh3LHgpO2kucHVzaChiLHcpfX1yZXR1cm4gdSsxfXN0YXRpYyN0ZShlLHt0eXBlOnQsdGl0bGU6YSxsYW5nOnIsYWx0OmksZXhwYW5kZWQ6bixhY3R1YWxUZXh0OnN9KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2EmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGEpKTtyJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShyKSk7aSYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSk7biYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobikpO3MmJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHMpKX1zdGF0aWMjZWUoe2VsZW1lbnRzOmUseHJlZjp0LHBhZ2VEaWN0OmEsbnVtYmVyVHJlZTpyfSl7Y29uc3QgaT1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIGUpaWYodC5zdHJ1Y3RUcmVlUGFyZW50SWQpe2NvbnN0IGU9cGFyc2VJbnQodC5zdHJ1Y3RUcmVlUGFyZW50SWQuc3BsaXQoIl9tYyIpWzFdLDEwKTtsZXQgYT1pLmdldChlKTtpZighYSl7YT1bXTtpLnNldChlLGEpfWEucHVzaCh0KX1jb25zdCBuPWEuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIobikpcmV0dXJuO2NvbnN0IHM9ci5nZXQobiksdXBkYXRlRWxlbWVudD0oZSxhLHIpPT57Y29uc3Qgbj1pLmdldChlKTtpZihuKXtjb25zdCBlPWEuZ2V0UmF3KCJQIiksaT10LmZldGNoSWZSZWYoZSk7aWYoZSBpbnN0YW5jZW9mIFJlZiYmaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9e3JlZjpyLGRpY3Q6YX07Zm9yKGNvbnN0IHQgb2Ygbil0LnN0cnVjdFRyZWVQYXJlbnQ9ZX1yZXR1cm4hMH1yZXR1cm4hMX07Zm9yKGNvbnN0IGUgb2Ygcyl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSljb250aW51ZTtjb25zdCBhPXQuZmV0Y2goZSkscj1hLmdldCgiSyIpO2lmKE51bWJlci5pc0ludGVnZXIocikpdXBkYXRlRWxlbWVudChyLGEsZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKWZvcihsZXQgaSBvZiByKXtpPXQuZmV0Y2hJZlJlZihpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGkpJiZ1cGRhdGVFbGVtZW50KGksYSxlKSlicmVhaztpZighKGkgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZighaXNOYW1lKGkuZ2V0KCJUeXBlIiksIk1DUiIpKWJyZWFrO2NvbnN0IHI9aS5nZXQoIk1DSUQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiZ1cGRhdGVFbGVtZW50KHIsYSxlKSlicmVha319fXN0YXRpYyBhc3luYyNhZSh7c3RydWN0VHJlZVBhcmVudDplLHRhZ0RpY3Q6dCxuZXdUYWdSZWY6YSxzdHJ1Y3RUcmVlUm9vdFJlZjpyLGZhbGxiYWNrS2lkczppLHhyZWY6bixjYWNoZTpzfSl7bGV0IG8sYz1udWxsO2lmKGUpeyh7cmVmOmN9PWUpO289ZS5kaWN0LmdldFJhdygiUCIpfHxyfWVsc2Ugbz1yO3Quc2V0KCJQIixvKTtjb25zdCBsPW4uZmV0Y2hJZlJlZihvKTtpZighbCl7aS5wdXNoKGEpO3JldHVybn1sZXQgaD1zLmdldChvKTtpZighaCl7aD1sLmNsb25lKCk7cy5wdXQobyxoKX1jb25zdCB1PWguZ2V0UmF3KCJLIik7bGV0IGQ9dSBpbnN0YW5jZW9mIFJlZj9zLmdldCh1KTpudWxsO2lmKCFkKXtkPW4uZmV0Y2hJZlJlZih1KTtkPUFycmF5LmlzQXJyYXkoZCk/ZC5zbGljZSgpOlt1XTtjb25zdCBlPW4uZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7aC5zZXQoIksiLGUpO3MucHV0KGUsZCl9Y29uc3QgZj1kLmluZGV4T2YoYyk7ZC5zcGxpY2UoZj49MD9mKzE6ZC5sZW5ndGgsMCxhKX19Y2xhc3MgU3RydWN0RWxlbWVudE5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRyZWU9ZTt0aGlzLnhyZWY9ZS54cmVmO3RoaXMuZGljdD10O3RoaXMua2lkcz1bXTt0aGlzLnBhcnNlS2lkcygpfWdldCByb2xlKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJTIiksdD1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6IiIse3Jvb3Q6YX09dGhpcy50cmVlO3JldHVybiBhLnJvbGVNYXAuZ2V0KHQpPz90fXBhcnNlS2lkcygpe2xldCBlPW51bGw7Y29uc3QgdD10aGlzLmRpY3QuZ2V0UmF3KCJQZyIpO3QgaW5zdGFuY2VvZiBSZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgdCBvZiBhKXtjb25zdCBhPXRoaXMucGFyc2VLaWQoZSx0aGlzLnhyZWYuZmV0Y2hJZlJlZih0KSk7YSYmdGhpcy5raWRzLnB1c2goYSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxhKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6em4sbWNpZDp0LHBhZ2VPYmpJZDplfSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgYT10LmdldFJhdygiUGciKTthIGluc3RhbmNlb2YgUmVmJiYoZT1hLnRvU3RyaW5nKCkpO2NvbnN0IHI9dC5nZXQoIlR5cGUiKWluc3RhbmNlb2YgTmFtZT90LmdldCgiVHlwZSIpLm5hbWU6bnVsbDtpZigiTUNSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgYT10LmdldFJhdygiU3RtIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOiRuLHJlZk9iaklkOmEgaW5zdGFuY2VvZiBSZWY/YS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDp0LmdldCgiTUNJRCIpfSl9aWYoIk9CSlIiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBhPXQuZ2V0UmF3KCJPYmoiKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6R24scmVmT2JqSWQ6YSBpbnN0YW5jZW9mIFJlZj9hLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pfXJldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpLbixkaWN0OnR9KX19Y2xhc3MgU3RydWN0RWxlbWVudHtjb25zdHJ1Y3Rvcih7dHlwZTplLGRpY3Q6dD1udWxsLG1jaWQ6YT1udWxsLHBhZ2VPYmpJZDpyPW51bGwscmVmT2JqSWQ6aT1udWxsfSl7dGhpcy50eXBlPWU7dGhpcy5kaWN0PXQ7dGhpcy5tY2lkPWE7dGhpcy5wYWdlT2JqSWQ9cjt0aGlzLnJlZk9iaklkPWk7dGhpcy5wYXJlbnROb2RlPW51bGx9fWNsYXNzIFN0cnVjdFRyZWVQYWdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yb290PWU7dGhpcy54cmVmPWU/LnhyZWY/P251bGw7dGhpcy5yb290RGljdD1lPy5kaWN0Pz9udWxsO3RoaXMucGFnZURpY3Q9dDt0aGlzLm5vZGVzPVtdfWNvbGxlY3RPYmplY3RzKGUpe2lmKCEodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0JiZlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgYT10aGlzLnJvb3Quc3RydWN0UGFyZW50SWRzPy5nZXQoZSk7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgcj1uZXcgTWFwLGk9bmV3IE51bWJlclRyZWUodCx0aGlzLnhyZWYpO2Zvcihjb25zdFtlXW9mIGEpe2NvbnN0IHQ9aS5nZXRSYXcoZSk7dCBpbnN0YW5jZW9mIFJlZiYmci5zZXQoZSx0KX1yZXR1cm4gcn1wYXJzZShlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm47Y29uc3QgYT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLHI9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpJiYhcilyZXR1cm47Y29uc3QgaT1uZXcgTWFwLG49bmV3IE51bWJlclRyZWUodCx0aGlzLnhyZWYpO2lmKE51bWJlci5pc0ludGVnZXIoYSkpe2NvbnN0IGU9bi5nZXQoYSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnhyZWYuZmV0Y2godCksaSl9aWYocilmb3IoY29uc3RbZSx0XW9mIHIpe2NvbnN0IGE9bi5nZXQoZSk7aWYoYSl7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy54cmVmLmZldGNoSWZSZWYoYSksaSk7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT1HbiYmKGUua2lkc1swXS50eXBlPXQpfX19YWRkTm9kZShlLHQsYT0wKXtpZihhPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCByPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUscik7Y29uc3QgaT1lLmdldCgiUCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpfHxpc05hbWUoaS5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSl7dGhpcy5hZGRUb3BMZXZlbE5vZGUoZSxyKXx8dC5kZWxldGUoZSk7cmV0dXJuIHJ9Y29uc3Qgbj10aGlzLmFkZE5vZGUoaSx0LGErMSk7aWYoIW4pcmV0dXJuIHI7bGV0IHM9ITE7Zm9yKGNvbnN0IHQgb2Ygbi5raWRzKWlmKHQudHlwZT09PUtuJiZ0LmRpY3Q9PT1lKXt0LnBhcmVudE5vZGU9cjtzPSEwfXN8fHQuZGVsZXRlKGUpO3JldHVybiByfWFkZFRvcExldmVsTm9kZShlLHQpe2NvbnN0IGE9dGhpcy5yb290RGljdC5nZXQoIksiKTtpZighYSlyZXR1cm4hMTtpZihhIGluc3RhbmNlb2YgRGljdCl7aWYoYS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2xldCByPSExO2ZvcihsZXQgaT0wO2k8YS5sZW5ndGg7aSsrKXtjb25zdCBuPWFbaV07aWYobj8udG9TdHJpbmcoKT09PWUub2JqSWQpe3RoaXMubm9kZXNbaV09dDtyPSEwfX1yZXR1cm4gcn1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxhPTApe2lmKGE+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO3Iucm9sZT1lLnJvbGU7ci5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2gocik7bGV0IGk9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiBpJiYoaT1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PXN0cmluZ1RvUERGU3RyaW5nKGkpKTtjb25zdCBuPWUuZGljdC5nZXQoIkEiKTtpZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBOb3JtYWxSZWN0KG4uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKXIuYmJveD1lO2Vsc2V7Y29uc3QgZT1uLmdldCgiV2lkdGgiKSx0PW4uZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJihyLmJib3g9WzAsMCxlLHRdKX19Y29uc3Qgcz1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBzJiYoci5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKHMpKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09S24/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxyLGErMSk6dC50eXBlPT09em58fHQudHlwZT09PSRuP3IuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT1Hbj9yLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PVZuJiZyLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWNvbnN0IEpuPWZ1bmN0aW9uIF9pc1ZhbGlkRXhwbGljaXREZXN0KGUsdCxhKXtpZighQXJyYXkuaXNBcnJheShhKXx8YS5sZW5ndGg8MilyZXR1cm4hMTtjb25zdFtyLGksLi4ubl09YTtpZighZShyKSYmIU51bWJlci5pc0ludGVnZXIocikpcmV0dXJuITE7aWYoIXQoaSkpcmV0dXJuITE7Y29uc3Qgcz1uLmxlbmd0aDtsZXQgbz0hMDtzd2l0Y2goaS5uYW1lKXtjYXNlIlhZWiI6aWYoczwyfHxzPjMpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXQiOmNhc2UiRml0QiI6cmV0dXJuIDA9PT1zO2Nhc2UiRml0SCI6Y2FzZSJGaXRCSCI6Y2FzZSJGaXRWIjpjYXNlIkZpdEJWIjppZihzPjEpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXRSIjppZig0IT09cylyZXR1cm4hMTtvPSExO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9Zm9yKGNvbnN0IGUgb2YgbilpZighKCJudW1iZXIiPT10eXBlb2YgZXx8byYmbnVsbD09PWUpKXJldHVybiExO3JldHVybiEwfS5iaW5kKG51bGwsKGU9PmUgaW5zdGFuY2VvZiBSZWYpLGlzTmFtZSk7ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gSm4oZSk/ZTpudWxsfWZ1bmN0aW9uIGZldGNoUmVtb3RlRGVzdChlKXtsZXQgdD1lLmdldCgiRCIpO2lmKHQpe3QgaW5zdGFuY2VvZiBOYW1lJiYodD10Lm5hbWUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcodCwhMCk7aWYoSm4odCkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfXJldHVybiBudWxsfWNsYXNzIENhdGFsb2d7I3JlPW51bGw7I2llPW51bGw7YnVpbHRJbkNNYXBDYWNoZT1uZXcgTWFwO2ZvbnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7Z2xvYmFsQ29sb3JTcGFjZUNhY2hlPW5ldyBHbG9iYWxDb2xvclNwYWNlQ2FjaGU7Z2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTtub25CbGVuZE1vZGVzU2V0PW5ldyBSZWZTZXQ7cGFnZURpY3RDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7cGFnZUluZGV4Q2FjaGU9bmV3IFJlZlNldENhY2hlO3BhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7c3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXA7c3lzdGVtRm9udENhY2hlPW5ldyBNYXA7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLiNpZT10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuI2llIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3R9Y2xvbmVEaWN0KCl7cmV0dXJuIHRoaXMuI2llLmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuI2llLmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpZihDYS50ZXN0KGUubmFtZSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpO3dhcm4oYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy4jaWUuZ2V0KCJMYW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJsYW5nIixlJiYic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLiNpZS5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI2llLmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIENvbGxlY3Rpb24gZW50cnk7IGFzc3VtaW5nIG5vIGNvbGxlY3Rpb24gaXMgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy4jaWUuZ2V0KCJBY3JvRm9ybSIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtIixlKX1nZXQgYWNyb0Zvcm1SZWYoKXtjb25zdCBlPXRoaXMuI2llLmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLiNpZS5nZXRSYXcoIk1ldGFkYXRhIik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaChlLCF0aGlzLnhyZWYuZW5jcnlwdD8uZW5jcnlwdE1ldGFkYXRhKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS5kaWN0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1hLmRpY3QuZ2V0KCJUeXBlIikscj1hLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoaXNOYW1lKGUsIk1ldGFkYXRhIikmJmlzTmFtZShyLCJYTUwiKSl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IE1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGBTa2lwcGluZyBpbnZhbGlkIE1ldGFkYXRhOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNuZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX0jbmUoKXtjb25zdCBlPXRoaXMuI2llLmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBhIGluIHQpe2NvbnN0IHI9ZS5nZXQoYSk7ImJvb2xlYW4iPT10eXBlb2YgciYmKHRbYV09cil9cmV0dXJuIHR9Z2V0IHN0cnVjdFRyZWVSb290KCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNzZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSByZWFkIHRvIHN0cnVjdFRyZWVSb290IGluZm8uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9I3NlKCl7Y29uc3QgZT10aGlzLiNpZS5nZXRSYXcoIlN0cnVjdFRyZWVSb290IiksdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBTdHJ1Y3RUcmVlUm9vdCh0aGlzLnhyZWYsdCxlKTthLmluaXQoKTtyZXR1cm4gYX1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuI2llLmdldCgiUGFnZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkuIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0b3BsZXZlbFBhZ2VzRGljdCIsZSl9Z2V0IGRvY3VtZW50T3V0bGluZSgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jb2UoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBkb2N1bWVudCBvdXRsaW5lLiIpfXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRPdXRsaW5lIixlKX0jb2UoKXtsZXQgZT10aGlzLiNpZS5nZXQoIk91dGxpbmVzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7ZT1lLmdldFJhdygiRmlyc3QiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxhPVt7b2JqOmUscGFyZW50OnR9XSxyPW5ldyBSZWZTZXQ7ci5wdXQoZSk7Y29uc3QgaT10aGlzLnhyZWYsbj1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3QgdD1hLnNoaWZ0KCkscz1pLmZldGNoSWZSZWYodC5vYmopO2lmKG51bGw9PT1zKWNvbnRpbnVlO3MuaGFzKCJUaXRsZSIpfHx3YXJuKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBvPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6cyxyZXN1bHRPYmo6byxkb2NCYXNlVXJsOnRoaXMuYmFzZVVybCxkb2NBdHRhY2htZW50czp0aGlzLmF0dGFjaG1lbnRzfSk7Y29uc3QgYz1zLmdldCgiVGl0bGUiKSxsPXMuZ2V0KCJGIil8fDAsaD1zLmdldEFycmF5KCJDIiksdT1zLmdldCgiQ291bnQiKTtsZXQgZD1uOyFpc051bWJlckFycmF5KGgsMyl8fDA9PT1oWzBdJiYwPT09aFsxXSYmMD09PWhbMl18fChkPUNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiKGgsMCkpO2NvbnN0IGY9e2FjdGlvbjpvLmFjdGlvbixhdHRhY2htZW50Om8uYXR0YWNobWVudCxkZXN0Om8uZGVzdCx1cmw6by51cmwsdW5zYWZlVXJsOm8udW5zYWZlVXJsLG5ld1dpbmRvdzpvLm5ld1dpbmRvdyxzZXRPQ0dTdGF0ZTpvLnNldE9DR1N0YXRlLHRpdGxlOiJzdHJpbmciPT10eXBlb2YgYz9zdHJpbmdUb1BERlN0cmluZyhjKToiIixjb2xvcjpkLGNvdW50Ok51bWJlci5pc0ludGVnZXIodSk/dTp2b2lkIDAsYm9sZDohISgyJmwpLGl0YWxpYzohISgxJmwpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKGYpO2U9cy5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIXIuaGFzKGUpKXthLnB1c2goe29iajplLHBhcmVudDpmfSk7ci5wdXQoZSl9ZT1zLmdldFJhdygiTmV4dCIpO2lmKGUgaW5zdGFuY2VvZiBSZWYmJiFyLmhhcyhlKSl7YS5wdXNoKHtvYmo6ZSxwYXJlbnQ6dC5wYXJlbnR9KTtyLnB1dChlKX19cmV0dXJuIHQuaXRlbXMubGVuZ3RoPjA/dC5pdGVtczpudWxsfWdldCBwZXJtaXNzaW9ucygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jY2UoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwZXJtaXNzaW9ucy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBlcm1pc3Npb25zIixlKX0jY2UoKXtjb25zdCBlPXRoaXMueHJlZi50cmFpbGVyLmdldCgiRW5jcnlwdCIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgaW4gdyl7Y29uc3Qgcj13W2VdO3QmciYmYS5wdXNoKHIpfXJldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI2llLmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGE9dC5nZXQoIkQiKTtpZighYSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBpPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiByKWUgaW5zdGFuY2VvZiBSZWYmJiFpLmhhcyhlKSYmaS5wdXQoZSx0aGlzLiNsZShlKSk7ZT10aGlzLiNoZShhLGkpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLGUpfSNsZShlKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaChlKSxhPXtpZDplLnRvU3RyaW5nKCksbmFtZTpudWxsLGludGVudDpudWxsLHVzYWdlOntwcmludDpudWxsLHZpZXc6bnVsbH0scmJHcm91cHM6W119LHI9dC5nZXQoIk5hbWUiKTsic3RyaW5nIj09dHlwZW9mIHImJihhLm5hbWU9c3RyaW5nVG9QREZTdHJpbmcocikpO2xldCBpPXQuZ2V0QXJyYXkoIkludGVudCIpO0FycmF5LmlzQXJyYXkoaSl8fChpPVtpXSk7aS5ldmVyeSgoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpKSYmKGEuaW50ZW50PWkubWFwKChlPT5lLm5hbWUpKSk7Y29uc3Qgbj10LmdldCgiVXNhZ2UiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gYTtjb25zdCBzPWEudXNhZ2Usbz1uLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpzLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGM9bi5nZXQoIlZpZXciKTtpZihjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOnMudmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBhfSNoZShlLHQpe2Z1bmN0aW9uIHBhcnNlT25PZmYoZSl7Y29uc3QgYT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCByIG9mIGUpciBpbnN0YW5jZW9mIFJlZiYmdC5oYXMocikmJmEucHVzaChyLnRvU3RyaW5nKCkpO3JldHVybiBhfWZ1bmN0aW9uIHBhcnNlT3JkZXIoZSxhPTApe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBudWxsO2NvbnN0IGk9W107Zm9yKGNvbnN0IG4gb2YgZSl7aWYobiBpbnN0YW5jZW9mIFJlZiYmdC5oYXMobikpe3IucHV0KG4pO2kucHVzaChuLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihuLGEpO2UmJmkucHVzaChlKX1pZihhPjApcmV0dXJuIGk7Y29uc3Qgbj1bXTtmb3IoY29uc3RbZV1vZiB0Lml0ZW1zKCkpci5oYXMoZSl8fG4ucHVzaChlLnRvU3RyaW5nKCkpO24ubGVuZ3RoJiZpLnB1c2goe25hbWU6bnVsbCxvcmRlcjpufSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VOZXN0ZWRPcmRlcihlLHQpe2lmKCsrdD5pKXt3YXJuKCJwYXJzZU5lc3RlZE9yZGVyIC0gcmVhY2hlZCBNQVhfTkVTVEVEX0xFVkVMUy4iKTtyZXR1cm4gbnVsbH1jb25zdCByPWEuZmV0Y2hJZlJlZihlKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gbnVsbDtjb25zdCBuPWEuZmV0Y2hJZlJlZihyWzBdKTtpZigic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuIG51bGw7Y29uc3Qgcz1wYXJzZU9yZGVyKHIuc2xpY2UoMSksdCk7cmV0dXJuIHM/Lmxlbmd0aD97bmFtZTpzdHJpbmdUb1BERlN0cmluZyhuKSxvcmRlcjpzfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IFJlZlNldCxpPTEwOyFmdW5jdGlvbiBwYXJzZVJCR3JvdXBzKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT1hLmZldGNoSWZSZWYocik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fCFlLmxlbmd0aCljb250aW51ZTtjb25zdCBpPW5ldyBTZXQ7Zm9yKGNvbnN0IGEgb2YgZSlpZihhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmIWkuaGFzKGEudG9TdHJpbmcoKSkpe2kuYWRkKGEudG9TdHJpbmcoKSk7dC5nZXQoYSkucmJHcm91cHMucHVzaChpKX19fShlLmdldCgiUkJHcm91cHMiKSk7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBOYW1lP2UuZ2V0KCJCYXNlU3RhdGUiKS5uYW1lOm51bGwsb246cGFyc2VPbk9mZihlLmdldCgiT04iKSksb2ZmOnBhcnNlT25PZmYoZS5nZXQoIk9GRiIpKSxvcmRlcjpwYXJzZU9yZGVyKGUuZ2V0KCJPcmRlciIpKSxncm91cHM6Wy4uLnRdfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuI3JlPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLiNyZX1nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpbiB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeSBpcyBub3QgYW4gaW50ZWdlci4iKTtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYWdlc0NvdW50IixlKX1nZXQgbnVtUGFnZXMoKXtyZXR1cm4gdGhpcy4jcmU/P3RoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy4jdWUoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGEgb2YgZSlpZihhIGluc3RhbmNlb2YgTmFtZVRyZWUpZm9yKGNvbnN0W2Uscl1vZiBhLmdldEFsbCgpKXtjb25zdCBhPWZldGNoRGVzdChyKTthJiYodFtzdHJpbmdUb1BERlN0cmluZyhlLCEwKV09YSl9ZWxzZSBpZihhIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbZSxyXW9mIGEpe2NvbnN0IGE9ZmV0Y2hEZXN0KHIpO2EmJih0W3N0cmluZ1RvUERGU3RyaW5nKGUsITApXXx8PWEpfXJldHVybiBzaGFkb3codGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtpZih0aGlzLmhhc093blByb3BlcnR5KCJkZXN0aW5hdGlvbnMiKSlyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbnNbZV0/P251bGw7Y29uc3QgdD10aGlzLiN1ZSgpO2Zvcihjb25zdCBhIG9mIHQpaWYoYSBpbnN0YW5jZW9mIE5hbWVUcmVlfHxhIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1mZXRjaERlc3QoYS5nZXQoZSkpO2lmKHQpcmV0dXJuIHR9aWYodC5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5kZXN0aW5hdGlvbnNbZV07aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH0jdWUoKXtjb25zdCBlPXRoaXMuI2llLmdldCgiTmFtZXMiKSx0PVtdO2U/LmhhcygiRGVzdHMiKSYmdC5wdXNoKG5ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpKTt0aGlzLiNpZS5oYXMoIkRlc3RzIikmJnQucHVzaCh0aGlzLiNpZS5nZXQoIkRlc3RzIikpO3JldHVybiB0fWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNkZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIHBhZ2UgbGFiZWxzLiIpfXJldHVybiBzaGFkb3codGhpcywicGFnZUxhYmVscyIsZSl9I2RlKCl7Y29uc3QgZT10aGlzLiNpZS5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLHI9IiI7Y29uc3QgaT1uZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IG49IiIscz0xO2ZvcihsZXQgZT0wLG89dGhpcy5udW1QYWdlcztlPG87ZSsrKXtjb25zdCBvPWkuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9ZS5uYW1lfWVsc2UgYT1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtyPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2Ugcj0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtzPWV9ZWxzZSBzPTF9c3dpdGNoKGEpe2Nhc2UiRCI6bj1zO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjpuPXRvUm9tYW5OdW1lcmFscyhzLCJyIj09PWEpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09YT85Nzo2NSxyPXMtMTtuPVN0cmluZy5mcm9tQ2hhckNvZGUodCtyJWUpLnJlcGVhdChNYXRoLmZsb29yKHIvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHthfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7bj0iIn10W2VdPXIrbjtzKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuI2llLmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZUxheW91dCIsdCl9Z2V0IHBhZ2VNb2RlKCl7Y29uc3QgZT10aGlzLiNpZS5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTW9kZSIsdCl9Z2V0IHZpZXdlclByZWZlcmVuY2VzKCl7Y29uc3QgZT10aGlzLiNpZS5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3RbYSxyXW9mIGUpe2xldCBlO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgciYmKGU9cik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKHIgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiVXNlT0MiOmU9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iVXNlTm9uZSJ9YnJlYWs7Y2FzZSJEaXJlY3Rpb24iOmlmKHIgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6ZT1yLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYociBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjplPXIubmFtZTticmVhaztkZWZhdWx0OmU9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihyIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIk5vbmUiOmNhc2UiQXBwRGVmYXVsdCI6ZT1yLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJBcHBEZWZhdWx0In1icmVhaztjYXNlIkR1cGxleCI6aWYociBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjplPXIubmFtZTticmVhaztkZWZhdWx0OmU9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOmlmKEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoJTI9PTApe3IuZXZlcnkoKChlLHQsYSk9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+MCYmKDA9PT10fHxlPj1hW3QtMV0pJiZlPD10aGlzLm51bVBhZ2VzKSkmJihlPXIpfWJyZWFrO2Nhc2UiTnVtQ29waWVzIjpOdW1iZXIuaXNJbnRlZ2VyKHIpJiZyPjAmJihlPXIpO2JyZWFrO2RlZmF1bHQ6d2FybihgSWdub3Jpbmcgbm9uLXN0YW5kYXJkIGtleSBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHthfS5gKTtjb250aW51ZX1pZih2b2lkIDAhPT1lKXt0Pz89T2JqZWN0LmNyZWF0ZShudWxsKTt0W2FdPWV9ZWxzZSB3YXJuKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtyfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXdlclByZWZlcmVuY2VzIix0KX1nZXQgb3BlbkFjdGlvbigpe2NvbnN0IGU9dGhpcy4jaWUuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7YS5zZXQoIkEiLGUpO2NvbnN0IHI9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDphLHJlc3VsdE9iajpyfSk7QXJyYXkuaXNBcnJheShyLmRlc3QpP3QuZGVzdD1yLmRlc3Q6ci5hY3Rpb24mJih0LmFjdGlvbj1yLmFjdGlvbil9ZWxzZSBKbihlKSYmKHQuZGVzdD1lKTtyZXR1cm4gc2hhZG93KHRoaXMsIm9wZW5BY3Rpb24iLG9iamVjdFNpemUodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy4jaWUuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJFbWJlZGRlZEZpbGVzIikpe2NvbnN0IGE9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxyXW9mIGEuZ2V0QWxsKCkpe2NvbnN0IGE9bmV3IEZpbGVTcGVjKHIsdGhpcy54cmVmKTt0Pz89T2JqZWN0LmNyZWF0ZShudWxsKTt0W3N0cmluZ1RvUERGU3RyaW5nKGUsITApXT1hLnNlcmlhbGl6YWJsZX19cmV0dXJuIHNoYWRvdyh0aGlzLCJhdHRhY2htZW50cyIsdCl9Z2V0IHhmYUltYWdlcygpe2NvbnN0IGU9dGhpcy4jaWUuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7Y29uc3QgYT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Uscl1vZiBhLmdldEFsbCgpKWlmKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXt0Pz89bmV3IE1hcDt0LnNldChzdHJpbmdUb1BERlN0cmluZyhlLCEwKSxyLmdldEJ5dGVzKCkpfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYUltYWdlcyIsdCl9I2ZlKCl7Y29uc3QgZT10aGlzLiNpZS5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtmdW5jdGlvbiBhcHBlbmRJZkphdmFTY3JpcHREaWN0KGUsYSl7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKCFpc05hbWUoYS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgcj1hLmdldCgiSlMiKTtpZihyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlyPXIuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuO3I9c3RyaW5nVG9QREZTdHJpbmcociwhMCkucmVwbGFjZUFsbCgiXDAiLCIiKTtyJiYodHx8PW5ldyBNYXApLnNldChlLHIpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSwhMCksYSl9Y29uc3QgYT10aGlzLiNpZS5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLiNmZSgpO2xldCB0PWNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLiNpZSx3ZSk7aWYoZSl7dHx8PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2Escl1vZiBlKWEgaW4gdD90W2FdLnB1c2gocik6dFthXT1bcl19cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLHQpfWFzeW5jIGNsZWFudXAoZT0hMSl7Y2xlYXJHbG9iYWxDYWNoZXMoKTt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZS5jbGVhcigpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5jbGVhcihlKTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZS5jbGVhcigpO3RoaXMucGFnZUluZGV4Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VEaWN0Q2FjaGUuY2xlYXIoKTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQuY2xlYXIoKTtmb3IoY29uc3R7ZGljdDplfW9mIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKSlkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxhPW5ldyBSZWZTZXQscj10aGlzLiNpZS5nZXRSYXcoIlBhZ2VzIik7ciBpbnN0YW5jZW9mIFJlZiYmYS5wdXQocik7Y29uc3QgaT10aGlzLnhyZWYsbj10aGlzLnBhZ2VLaWRzQ291bnRDYWNoZSxzPXRoaXMucGFnZUluZGV4Q2FjaGUsbz10aGlzLnBhZ2VEaWN0Q2FjaGU7bGV0IGM9MDtmb3IoO3QubGVuZ3RoOyl7Y29uc3Qgcj10LnBvcCgpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGw9bi5nZXQocik7aWYobD49MCYmYytsPD1lKXtjKz1sO2NvbnRpbnVlfWlmKGEuaGFzKHIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7YS5wdXQocik7Y29uc3QgaD1hd2FpdChvLmdldChyKXx8aS5mZXRjaEFzeW5jKHIpKTtpZihoIGluc3RhbmNlb2YgRGljdCl7bGV0IHQ9aC5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCBpLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFoLmhhcygiS2lkcyIpKXtuLmhhcyhyKXx8bi5wdXQociwxKTtzLmhhcyhyKXx8cy5wdXQocixjKTtpZihjPT09ZSlyZXR1cm5baCxyXTtjKys7Y29udGludWV9fXQucHVzaChoKTtjb250aW51ZX1pZighKHIgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjb25zdHtvYmpJZDpsfT1yO2xldCBoPXIuZ2V0UmF3KCJDb3VudCIpO2ggaW5zdGFuY2VvZiBSZWYmJihoPWF3YWl0IGkuZmV0Y2hBc3luYyhoKSk7aWYoTnVtYmVyLmlzSW50ZWdlcihoKSYmaD49MCl7bCYmIW4uaGFzKGwpJiZuLnB1dChsLGgpO2lmKGMraDw9ZSl7Yys9aDtjb250aW51ZX19bGV0IHU9ci5nZXRSYXcoIktpZHMiKTt1IGluc3RhbmNlb2YgUmVmJiYodT1hd2FpdCBpLmZldGNoQXN5bmModSkpO2lmKCFBcnJheS5pc0FycmF5KHUpKXtsZXQgdD1yLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IGkuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IXIuaGFzKCJLaWRzIikpe2lmKGM9PT1lKXJldHVybltyLG51bGxdO2MrKztjb250aW51ZX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIil9Zm9yKGxldCBlPXUubGVuZ3RoLTE7ZT49MDtlLS0pe2NvbnN0IGE9dVtlXTt0LnB1c2goYSk7cj09PXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QmJmEgaW5zdGFuY2VvZiBSZWYmJiFvLmhhcyhhKSYmby5wdXQoYSxpLmZldGNoQXN5bmMoYSkpfX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0e2lnbm9yZUVycm9yczp0fT10aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyxhPVt7Y3VycmVudE5vZGU6dGhpcy50b3BsZXZlbFBhZ2VzRGljdCxwb3NJbktpZHM6MH1dLHI9bmV3IFJlZlNldCxpPXRoaXMuI2llLmdldFJhdygiUGFnZXMiKTtpIGluc3RhbmNlb2YgUmVmJiZyLnB1dChpKTtjb25zdCBuPW5ldyBNYXAscz10aGlzLnhyZWYsbz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBjPTA7ZnVuY3Rpb24gYWRkUGFnZURpY3QoZSx0KXt0JiYhby5oYXModCkmJm8ucHV0KHQsYyk7bi5zZXQoYysrLFtlLHRdKX1mdW5jdGlvbiBhZGRQYWdlRXJyb3IoYSl7aWYoYSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgYTtpZihlJiZ0JiYwPT09Yyl7d2FybihgZ2V0QWxsUGFnZURpY3RzIC0gU2tpcHBpbmcgaW52YWxpZCBmaXJzdCBwYWdlOiAiJHthfSIuYCk7YT1EaWN0LmVtcHR5fW4uc2V0KGMrKyxbYSxudWxsXSl9Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3QgZT1hLmF0KC0xKSx7Y3VycmVudE5vZGU6dCxwb3NJbktpZHM6aX09ZTtsZXQgbj10LmdldFJhdygiS2lkcyIpO2lmKG4gaW5zdGFuY2VvZiBSZWYpdHJ5e249YXdhaXQgcy5mZXRjaEFzeW5jKG4pfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pZighQXJyYXkuaXNBcnJheShuKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYoaT49bi5sZW5ndGgpe2EucG9wKCk7Y29udGludWV9Y29uc3Qgbz1uW2ldO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBSZWYpe2lmKHIuaGFzKG8pKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKSk7YnJlYWt9ci5wdXQobyk7dHJ5e2M9YXdhaXQgcy5mZXRjaEFzeW5jKG8pfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha319ZWxzZSBjPW87aWYoIShjIGluc3RhbmNlb2YgRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKSk7YnJlYWt9bGV0IGw9Yy5nZXRSYXcoIlR5cGUiKTtpZihsIGluc3RhbmNlb2YgUmVmKXRyeXtsPWF3YWl0IHMuZmV0Y2hBc3luYyhsKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aXNOYW1lKGwsIlBhZ2UiKXx8IWMuaGFzKCJLaWRzIik/YWRkUGFnZURpY3QoYyxvIGluc3RhbmNlb2YgUmVmP286bnVsbCk6YS5wdXNoKHtjdXJyZW50Tm9kZTpjLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gbn1nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCByLGk9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGEpe2lmKGlzUmVmc0VxdWFsKHQsZSkmJiFpc0RpY3QoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBEaWN0JiYhYS5oYXMoIlR5cGUiKSYmYS5oYXMoIkNvbnRlbnRzIikpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBwb2ludCB0byBhIC9QYWdlIGRpY3Rpb25hcnkuIik7aWYoIWEpcmV0dXJuIG51bGw7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJOb2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3I9YS5nZXRSYXcoIlBhcmVudCIpO3JldHVybiBhLmdldEFzeW5jKCJQYXJlbnQiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG49W107bGV0IHM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCBtdXN0IGJlIGEgcmVmZXJlbmNlLiIpO2lmKGlzUmVmc0VxdWFsKHIsdCkpe3M9ITA7YnJlYWt9bi5wdXNoKGEuZmV0Y2hBc3luYyhyKS50aGVuKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCBub2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO2UuaGFzKCJDb3VudCIpP2krPWUuZ2V0KCJDb3VudCIpOmkrK30pKSl9aWYoIXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgcmVmZXJlbmNlIG5vdCBmb3VuZCBpbiBwYXJlbnQncyBraWRzLiIpO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKCgoKT0+W2kscl0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2EsaV09dDtyKz1hO3JldHVybiBuZXh0KGkpfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLiNpZS5nZXQoIlVSSSIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJCYXNlIik7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwodCxudWxsLHt0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtpZihlKXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIix0aGlzLnBkZk1hbmFnZXIuZG9jQmFzZVVybCl9c3RhdGljIHBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUscmVzdWx0T2JqOnQsZG9jQmFzZVVybDphPW51bGwsZG9jQXR0YWNobWVudHM6cj1udWxsfSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IGBkZXN0RGljdGAgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJufWxldCBpLG4scz1lLmdldCgiQSIpO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKWlmKGUuaGFzKCJEZXN0Iikpcz1lLmdldCgiRGVzdCIpO2Vsc2V7cz1lLmdldCgiQUEiKTtzIGluc3RhbmNlb2YgRGljdCYmKHMuaGFzKCJEIik/cz1zLmdldCgiRCIpOnMuaGFzKCJVIikmJihzPXMuZ2V0KCJVIikpKX1pZihzIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1zLmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXt3YXJuKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IGE9ZS5uYW1lO3N3aXRjaChhKXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT1zLmdldCgiRmxhZ3MiKSxvPSEoMSYoIm51bWJlciI9PXR5cGVvZiBlP2U6MCkpLGM9W10sbD1bXTtmb3IoY29uc3QgZSBvZiBzLmdldCgiRmllbGRzIil8fFtdKWUgaW5zdGFuY2VvZiBSZWY/bC5wdXNoKGUudG9TdHJpbmcoKSk6InN0cmluZyI9PXR5cGVvZiBlJiZjLnB1c2goc3RyaW5nVG9QREZTdHJpbmcoZSkpO3QucmVzZXRGb3JtPXtmaWVsZHM6YyxyZWZzOmwsaW5jbHVkZTpvfTticmVhaztjYXNlIlVSSSI6aT1zLmdldCgiVVJJIik7aSBpbnN0YW5jZW9mIE5hbWUmJihpPSIvIitpLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6bj1zLmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBoPXMuZ2V0KCJGIik7aWYoaCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bmV3IEZpbGVTcGVjKGgsbnVsbCwhMCkse3Jhd0ZpbGVuYW1lOnR9PWUuc2VyaWFsaXphYmxlO2k9dH1lbHNlInN0cmluZyI9PXR5cGVvZiBoJiYoaT1oKTtjb25zdCB1PWZldGNoUmVtb3RlRGVzdChzKTt1JiYic3RyaW5nIj09dHlwZW9mIGkmJihpPWkuc3BsaXQoIiMiLDEpWzBdKyIjIit1KTtjb25zdCBkPXMuZ2V0KCJOZXdXaW5kb3ciKTsiYm9vbGVhbiI9PXR5cGVvZiBkJiYodC5uZXdXaW5kb3c9ZCk7YnJlYWs7Y2FzZSJHb1RvRSI6Y29uc3QgZj1zLmdldCgiVCIpO2xldCBnO2lmKHImJmYgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWYuZ2V0KCJSIiksdD1mLmdldCgiTiIpO2lzTmFtZShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKGc9cltzdHJpbmdUb1BERlN0cmluZyh0LCEwKV0pfWlmKGcpe3QuYXR0YWNobWVudD1nO2NvbnN0IGU9ZmV0Y2hSZW1vdGVEZXN0KHMpO2UmJih0LmF0dGFjaG1lbnREZXN0PWUpfWVsc2Ugd2FybigncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3QgcD1zLmdldCgiTiIpO3AgaW5zdGFuY2VvZiBOYW1lJiYodC5hY3Rpb249cC5uYW1lKTticmVhaztjYXNlIlNldE9DR1N0YXRlIjpjb25zdCBtPXMuZ2V0KCJTdGF0ZSIpLGI9cy5nZXQoIlByZXNlcnZlUkIiKTtpZighQXJyYXkuaXNBcnJheShtKXx8MD09PW0ubGVuZ3RoKWJyZWFrO2NvbnN0IHk9W107Zm9yKGNvbnN0IGUgb2YgbSlpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6Y2FzZSJUb2dnbGUiOnkucHVzaChlLm5hbWUpfWVsc2UgZSBpbnN0YW5jZW9mIFJlZiYmeS5wdXNoKGUudG9TdHJpbmcoKSk7aWYoeS5sZW5ndGghPT1tLmxlbmd0aClicmVhazt0LnNldE9DR1N0YXRlPXtzdGF0ZTp5LHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgYnx8Yn07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCB3PXMuZ2V0KCJKUyIpO2xldCB4O3cgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3g9dy5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHcmJih4PXcpO2NvbnN0IFM9eCYmcmVjb3ZlckpzVVJMKHN0cmluZ1RvUERGU3RyaW5nKHgsITApKTtpZihTKXtpPVMudXJsO3QubmV3V2luZG93PVMubmV3V2luZG93O2JyZWFrfWRlZmF1bHQ6aWYoIkphdmFTY3JpcHQiPT09YXx8IlN1Ym1pdEZvcm0iPT09YSlicmVhazt3YXJuKGBwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5zdXBwb3J0ZWQgYWN0aW9uOiAiJHthfSIuYCl9fWVsc2UgZS5oYXMoIkRlc3QiKSYmKG49ZS5nZXQoIkRlc3QiKSk7aWYoInN0cmluZyI9PXR5cGVvZiBpKXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoaSxhLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7ZSYmKHQudXJsPWUuaHJlZik7dC51bnNhZmVVcmw9aX1pZihuKXtuIGluc3RhbmNlb2YgTmFtZSYmKG49bi5uYW1lKTsic3RyaW5nIj09dHlwZW9mIG4/dC5kZXN0PXN0cmluZ1RvUERGU3RyaW5nKG4sITApOkpuKG4pJiYodC5kZXN0PW4pfX19ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2YgRGljdCllPWUuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSllPWUuZGljdC5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybjtmb3IoY29uc3QgciBvZiBlKSgoYT1yKWluc3RhbmNlb2YgUmVmfHxhIGluc3RhbmNlb2YgRGljdHx8YSBpbnN0YW5jZW9mIEJhc2VTdHJlYW18fEFycmF5LmlzQXJyYXkoYSkpJiZ0LnB1c2gocik7dmFyIGF9Y2xhc3MgT2JqZWN0TG9hZGVye3JlZlNldD1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRpY3Q9ZTt0aGlzLmtleXM9dDt0aGlzLnhyZWY9YX1hc3luYyBsb2FkKCl7Y29uc3R7a2V5czplLGRpY3Q6dH09dGhpcyxhPVtdO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcocik7dm9pZCAwIT09ZSYmYS5wdXNoKGUpfWF3YWl0IHRoaXMuI2dlKGEpO3RoaXMucmVmU2V0PW51bGx9YXN5bmMjZ2UoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgcj1lLnBvcCgpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhyKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KHIpO3I9dGhpcy54cmVmLmZldGNoKHIpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl7d2FybihgT2JqZWN0TG9hZGVyLiN3YWxrIC0gcmVxdWVzdGluZyBhbGwgZGF0YTogIiR7ZX0iLmApO2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKCk7cmV0dXJufXQucHVzaChyKTthLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPXIuZ2V0QmFzZVN0cmVhbXMoKTtpZihlKXtsZXQgaT0hMTtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmlzRGF0YUxvYWRlZCl7aT0hMDthLnB1c2goe2JlZ2luOnQuc3RhcnQsZW5kOnQuZW5kfSl9aSYmdC5wdXNoKHIpfX1hZGRDaGlsZHJlbihyLGUpfWlmKGEubGVuZ3RoKXthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhhKTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBSZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTthd2FpdCB0aGlzLiNnZSh0KX19c3RhdGljIGFzeW5jIGxvYWQoZSx0LGEpe2lmKGEuc3RyZWFtLmlzRGF0YUxvYWRlZClyZXR1cm47Y29uc3Qgcj1uZXcgT2JqZWN0TG9hZGVyKGUsdCxhKTthd2FpdCByLmxvYWQoKX19Y29uc3QgWW49U3ltYm9sKCksWm49U3ltYm9sKCksUW49U3ltYm9sKCksZXM9U3ltYm9sKCksdHM9U3ltYm9sKCksYXM9U3ltYm9sKCkscnM9U3ltYm9sKCksaXM9U3ltYm9sKCksbnM9U3ltYm9sKCksc3M9U3ltYm9sKCJjb250ZW50Iiksb3M9U3ltYm9sKCJkYXRhIiksY3M9U3ltYm9sKCksbHM9U3ltYm9sKCJleHRyYSIpLGhzPVN5bWJvbCgpLHVzPVN5bWJvbCgpLGRzPVN5bWJvbCgpLGZzPVN5bWJvbCgpLGdzPVN5bWJvbCgpLHBzPVN5bWJvbCgpLG1zPVN5bWJvbCgpLGJzPVN5bWJvbCgpLHlzPVN5bWJvbCgpLHdzPVN5bWJvbCgpLHhzPVN5bWJvbCgpLFNzPVN5bWJvbCgpLGtzPVN5bWJvbCgpLEFzPVN5bWJvbCgpLENzPVN5bWJvbCgpLHZzPVN5bWJvbCgpLEZzPVN5bWJvbCgpLElzPVN5bWJvbCgpLFRzPVN5bWJvbCgpLE9zPVN5bWJvbCgpLE1zPVN5bWJvbCgpLERzPVN5bWJvbCgpLEJzPVN5bWJvbCgpLFJzPVN5bWJvbCgpLE5zPVN5bWJvbCgpLEVzPVN5bWJvbCgpLExzPVN5bWJvbCgpLGpzPVN5bWJvbCgpLF9zPVN5bWJvbCgpLFVzPVN5bWJvbCgpLFhzPVN5bWJvbCgpLHFzPVN5bWJvbCgpLEhzPVN5bWJvbCgibmFtZXNwYWNlSWQiKSxXcz1TeW1ib2woIm5vZGVOYW1lIiksenM9U3ltYm9sKCksJHM9U3ltYm9sKCksR3M9U3ltYm9sKCksVnM9U3ltYm9sKCksS3M9U3ltYm9sKCksSnM9U3ltYm9sKCksWXM9U3ltYm9sKCksWnM9U3ltYm9sKCksUXM9U3ltYm9sKCJyb290IiksZW89U3ltYm9sKCksdG89U3ltYm9sKCksYW89U3ltYm9sKCkscm89U3ltYm9sKCksaW89U3ltYm9sKCksbm89U3ltYm9sKCksc289U3ltYm9sKCksb289U3ltYm9sKCksY289U3ltYm9sKCksbG89U3ltYm9sKCksaG89U3ltYm9sKCksdW89U3ltYm9sKCJ1aWQiKSxmbz1TeW1ib2woKSxnbz17Y29uZmlnOntpZDowLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94Y2kvIil9LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1jb25uZWN0aW9uLXNldC8iKX0sZGF0YXNldHM6e2lkOjIsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfSxmb3JtOntpZDozLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZm9ybS8iKX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtbG9jYWxlLXNldC8iKX0scGRmOntpZDo1LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC9wZGYvIj09PWV9LHNpZ25hdHVyZTp7aWQ6NixjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfSxzb3VyY2VTZXQ6e2lkOjcsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1zb3VyY2Utc2V0LyIpfSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX0sdGVtcGxhdGU6e2lkOjksY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS10ZW1wbGF0ZS8iKX0seGRjOntpZDoxMCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGRjLyIpfSx4ZHA6e2lkOjExLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC8iPT09ZX0seGZkZjp7aWQ6MTIsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX0seGh0bWw6e2lkOjEzLGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWV9LHhtcG1ldGE6e2lkOjE0LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3htcG1ldGEvIj09PWV9fSxwbz17cHQ6ZT0+ZSxjbTplPT5lLzIuNTQqNzIsbW06ZT0+ZS8yNS40KjcyLGluOmU9PjcyKmUscHg6ZT0+ZX0sbW89LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCInIil8fGUuc3RhcnRzV2l0aCgnIicpP2Uuc2xpY2UoMSwtMSk6ZX1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtyZXR1cm4haXNOYU4ocikmJmEocik/cjp0fWZ1bmN0aW9uIGdldEZsb2F0KHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUZsb2F0KGUpO3JldHVybiFpc05hTihyKSYmYShyKT9yOnR9ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0U3RyaW5nT3B0aW9uKGUsdCl7cmV0dXJuIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dFswXSx2YWxpZGF0ZTplPT50LmluY2x1ZGVzKGUpfSl9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dHx8PSIwIjtpZighZSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3QgYT1lLnRyaW0oKS5tYXRjaChtbyk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLGldPWEsbj1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG4pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bilyZXR1cm4gMDtjb25zdCBzPXBvW2ldO3JldHVybiBzP3Mobik6bn1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS5zcGxpdCgiOiIsMikubWFwKChlPT5wYXJzZUZsb2F0KGUudHJpbSgpKSkpLmZpbHRlcigoZT0+IWlzTmFOKGUpKSk7MT09PXQubGVuZ3RoJiZ0LnB1c2goMSk7aWYoMD09PXQubGVuZ3RoKXJldHVybntudW06MSxkZW46MX07Y29uc3RbYSxyXT10O3JldHVybntudW06YSxkZW46cn19ZnVuY3Rpb24gZ2V0UmVsZXZhbnQoZSl7cmV0dXJuIGU/ZS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+KHtleGNsdWRlZDoiLSI9PT1lWzBdLHZpZXduYW1lOmUuc3Vic3RyaW5nKDEpfSkpKTpbXX1jbGFzcyBIVE1MUmVzdWx0e3N0YXRpYyBnZXQgRkFJTFVSRSgpe3JldHVybiBzaGFkb3codGhpcywiRkFJTFVSRSIsbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLG51bGwpKX1zdGF0aWMgZ2V0IEVNUFRZKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgaT0iIjtjb25zdCBuPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9pPW4+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6bj49NzAwJiYoaT0iYm9sZCIpO2lmKCFpKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lPy5pbmNsdWRlcygiQm9sZCIpKSYmKGk9ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkl0YWxpYyIpfHxlLnBzTmFtZT8uZW5kc1dpdGgoIkl0IikpJiYoaSs9Iml0YWxpYyIpfWl8fChpPSJyZWd1bGFyIik7cltpXT1lfWdldERlZmF1bHQoKXtyZXR1cm4gdGhpcy5kZWZhdWx0Rm9udH1maW5kKGUsdD0hMCl7bGV0IGE9dGhpcy5mb250cy5nZXQoZSl8fHRoaXMuY2FjaGUuZ2V0KGUpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj0vLHwtfF98IHxib2xkaXRhbGljfGJvbGR8aXRhbGljfHJlZ3VsYXJ8aXQvZ2k7bGV0IGk9ZS5yZXBsYWNlQWxsKHIsIiIpO2E9dGhpcy5mb250cy5nZXQoaSk7aWYoYSl7dGhpcy5jYWNoZS5zZXQoZSxhKTtyZXR1cm4gYX1pPWkudG9Mb3dlckNhc2UoKTtjb25zdCBuPVtdO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlQWxsKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChpKSYmbi5wdXNoKHQpO2lmKDA9PT1uLmxlbmd0aClmb3IoY29uc3RbLGVdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGkpJiZuLnB1c2goZSk7aWYoMD09PW4ubGVuZ3RoKXtpPWkucmVwbGFjZUFsbCgvcHNtdHxtdC9naSwiIik7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGkpJiZuLnB1c2godCl9aWYoMD09PW4ubGVuZ3RoKWZvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGkpJiZuLnB1c2goZSk7aWYobi5sZW5ndGg+PTEpezEhPT1uLmxlbmd0aCYmdCYmd2FybihgWEZBIC0gVG9vIG1hbnkgY2hvaWNlcyB0byBndWVzcyB0aGUgY29ycmVjdCBmb250OiAke2V9YCk7dGhpcy5jYWNoZS5zZXQoZSxuWzBdKTtyZXR1cm4gblswXX1pZih0JiYhdGhpcy53YXJuZWQuaGFzKGUpKXt0aGlzLndhcm5lZC5hZGQoZSk7d2FybihgWEZBIC0gQ2Fubm90IGZpbmQgdGhlIGZvbnQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19ZnVuY3Rpb24gc2VsZWN0Rm9udChlLHQpe3JldHVybiJpdGFsaWMiPT09ZS5wb3N0dXJlPyJib2xkIj09PWUud2VpZ2h0P3QuYm9sZGl0YWxpYzp0Lml0YWxpYzoiYm9sZCI9PT1lLndlaWdodD90LmJvbGQ6dC5yZWd1bGFyfWNsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChyKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3QgaT1yLmZpbmQoZS50eXBlZmFjZSk7aWYoaSl7dGhpcy5wZGZGb250PXNlbGVjdEZvbnQoZSxpKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChyKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KHIpfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodD8ucmVndWxhcil7Y29uc3QgZT10LnJlZ3VsYXI7cmV0dXJuW2Use3R5cGVmYWNlOmUuY3NzRm9udEluZm8uZm9udEZhbWlseSxwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfXJldHVybltudWxsLHt0eXBlZmFjZToiQ291cmllciIscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX19Y2xhc3MgRm9udFNlbGVjdG9ye2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMuZm9udEZpbmRlcj1yO3RoaXMuc3RhY2s9W25ldyBGb250SW5mbyhlLHQsYSxyKV19cHVzaERhdGEoZSx0LGEpe2NvbnN0IHI9dGhpcy5zdGFjay5hdCgtMSk7Zm9yKGNvbnN0IHQgb2ZbInR5cGVmYWNlIiwicG9zdHVyZSIsIndlaWdodCIsInNpemUiLCJsZXR0ZXJTcGFjaW5nIl0pZVt0XXx8KGVbdF09ci54ZmFGb250W3RdKTtmb3IoY29uc3QgZSBvZlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0paXNOYU4odFtlXSkmJih0W2VdPXIucGFyYU1hcmdpbltlXSk7Y29uc3QgaT1uZXcgRm9udEluZm8oZSx0LGF8fHIubGluZUhlaWdodCx0aGlzLmZvbnRGaW5kZXIpO2kucGRmRm9udHx8KGkucGRmRm9udD1yLnBkZkZvbnQpO3RoaXMuc3RhY2sucHVzaChpKX1wb3BGb250KCl7dGhpcy5zdGFjay5wb3AoKX10b3BGb250KCl7cmV0dXJuIHRoaXMuc3RhY2suYXQoLTEpfX1jbGFzcyBUZXh0TWVhc3VyZXtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLmdseXBocz1bXTt0aGlzLmZvbnRTZWxlY3Rvcj1uZXcgRm9udFNlbGVjdG9yKGUsdCxhLHIpO3RoaXMuZXh0cmFIZWlnaHQ9MH1wdXNoRGF0YShlLHQsYSl7dGhpcy5mb250U2VsZWN0b3IucHVzaERhdGEoZSx0LGEpfXBvcEZvbnQoZSl7cmV0dXJuIHRoaXMuZm9udFNlbGVjdG9yLnBvcEZvbnQoKX1hZGRQYXJhKCl7Y29uc3QgZT10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCk7dGhpcy5leHRyYUhlaWdodCs9ZS5wYXJhTWFyZ2luLnRvcCtlLnBhcmFNYXJnaW4uYm90dG9tfWFkZFN0cmluZyhlKXtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCksYT10LnhmYUZvbnQuc2l6ZTtpZih0LnBkZkZvbnQpe2NvbnN0IHI9dC54ZmFGb250LmxldHRlclNwYWNpbmcsaT10LnBkZkZvbnQsbj1pLmxpbmVIZWlnaHR8fDEuMixzPXQubGluZUhlaWdodHx8TWF0aC5tYXgoMS4yLG4pKmEsbz1uLSh2b2lkIDA9PT1pLmxpbmVHYXA/LjI6aS5saW5lR2FwKSxjPU1hdGgubWF4KDEsbykqYSxsPWEvMWUzLGg9aS5kZWZhdWx0V2lkdGh8fGkuY2hhcnNUb0dseXBocygiICIpWzBdLndpZHRoO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Y29uc3QgZT1pLmVuY29kZVN0cmluZyh0KS5qb2luKCIiKSxhPWkuY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiBhKXtjb25zdCB0PWUud2lkdGh8fGg7dGhpcy5nbHlwaHMucHVzaChbdCpsK3IscyxjLGUudW5pY29kZSwhMV0pfXRoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX1lbHNle2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiIikpdGhpcy5nbHlwaHMucHVzaChbYSwxLjIqYSxhLGUsITFdKTt0aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9fWNvbXB1dGUoZSl7bGV0IHQ9LTEsYT0wLHI9MCxpPTAsbj0wLHM9MCxvPSExLGM9ITA7Zm9yKGxldCBsPTAsaD10aGlzLmdseXBocy5sZW5ndGg7bDxoO2wrKyl7Y29uc3RbaCx1LGQsZixnXT10aGlzLmdseXBoc1tsXSxwPSIgIj09PWYsbT1jP2Q6dTtpZihnKXtyPU1hdGgubWF4KHIsbik7bj0wO2krPXM7cz1tO3Q9LTE7YT0wO2M9ITF9ZWxzZSBpZihwKWlmKG4raD5lKXtyPU1hdGgubWF4KHIsbik7bj0wO2krPXM7cz1tO3Q9LTE7YT0wO289ITA7Yz0hMX1lbHNle3M9TWF0aC5tYXgobSxzKTthPW47bis9aDt0PWx9ZWxzZSBpZihuK2g+ZSl7aSs9cztzPW07aWYoLTEhPT10KXtsPXQ7cj1NYXRoLm1heChyLGEpO249MDt0PS0xO2E9MH1lbHNle3I9TWF0aC5tYXgocixuKTtuPWh9bz0hMDtjPSExfWVsc2V7bis9aDtzPU1hdGgubWF4KG0scyl9fXI9TWF0aC5tYXgocixuKTtpKz1zK3RoaXMuZXh0cmFIZWlnaHQ7cmV0dXJue3dpZHRoOjEuMDIqcixoZWlnaHQ6aSxpc0Jyb2tlbjpvfX19Y29uc3QgYm89L15bXi5bXSsvLHlvPS9eW15cXV0rLyx3bz0wLHhvPTEsU289Mixrbz0zLEFvPTQsQ289bmV3IE1hcChbWyIkZGF0YSIsKGUsdCk9PmUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmVdLFsiJHJlY29yZCIsKGUsdCk9PihlLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplKVtTc10oKVswXV0sWyIkdGVtcGxhdGUiLChlLHQpPT5lLnRlbXBsYXRlXSxbIiRjb25uZWN0aW9uU2V0IiwoZSx0KT0+ZS5jb25uZWN0aW9uU2V0XSxbIiRmb3JtIiwoZSx0KT0+ZS5mb3JtXSxbIiRsYXlvdXQiLChlLHQpPT5lLmxheW91dF0sWyIkaG9zdCIsKGUsdCk9PmUuaG9zdF0sWyIkZGF0YVdpbmRvdyIsKGUsdCk9PmUuZGF0YVdpbmRvd10sWyIkZXZlbnQiLChlLHQpPT5lLmV2ZW50XSxbIiEiLChlLHQpPT5lLmRhdGFzZXRzXSxbIiR4ZmEiLChlLHQpPT5lXSxbInhmYSIsKGUsdCk9PmVdLFsiJCIsKGUsdCk9PnRdXSksdm89bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgcj1lLm1hdGNoKGJvKTtpZighcilyZXR1cm4gbnVsbDtsZXRbaV09cjtjb25zdCBuPVt7bmFtZTppLGNhY2hlTmFtZToiLiIraSxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbCxvcGVyYXRvcjp3b31dO2xldCBzPWkubGVuZ3RoO2Zvcig7czxlLmxlbmd0aDspe2NvbnN0IGM9cztpZigiWyI9PT1lLmNoYXJBdChzKyspKXtyPWUuc2xpY2UocykubWF0Y2goeW8pO2lmKCFyKXt3YXJuKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9bi5hdCgtMSkuaW5kZXg9IioiPT09KG89KG89clswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQobywxMCl8fDA7cys9clswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgbDtzd2l0Y2goZS5jaGFyQXQocykpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7cysrO2w9eG87YnJlYWs7Y2FzZSIjIjpzKys7bD1TbzticmVhaztjYXNlIlsiOmlmKGEpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgRm9ybUNhbGMgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9bD1rbzticmVhaztjYXNlIigiOmlmKGEpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1sPUFvO2JyZWFrO2RlZmF1bHQ6bD13b31yPWUuc2xpY2UocykubWF0Y2goYm8pO2lmKCFyKWJyZWFrO1tpXT1yO3MrPWkubGVuZ3RoO24ucHVzaCh7bmFtZTppLGNhY2hlTmFtZTplLnNsaWNlKGMscyksb3BlcmF0b3I6bCxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXZhciBvO3JldHVybiBufWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEscj0hMCxpPSEwKXtjb25zdCBuPXBhcnNlRXhwcmVzc2lvbihhLHIpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHM9Q28uZ2V0KG5bMF0ubmFtZSk7bGV0IG8sYz0wO2lmKHMpe289ITA7ZT1bcyhlLHQpXTtjPTF9ZWxzZXtvPW51bGw9PT10O2U9W3R8fGVdfWZvcihsZXQgYT1uLmxlbmd0aDtjPGE7YysrKXtjb25zdHtuYW1lOmEsY2FjaGVOYW1lOnIsb3BlcmF0b3I6cyxpbmRleDpsfT1uW2NdLGg9W107Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuaXNYRkFPYmplY3QpY29udGludWU7bGV0IGUsbjtpZihpKXtuPXZvLmdldCh0KTtpZighbil7bj1uZXcgTWFwO3ZvLnNldCh0LG4pfWU9bi5nZXQocil9aWYoIWUpe3N3aXRjaChzKXtjYXNlIHdvOmU9dFttc10oYSwhMSk7YnJlYWs7Y2FzZSB4bzplPXRbbXNdKGEsITApO2JyZWFrO2Nhc2UgU286ZT10W3BzXShhKTtlPWUuaXNYRkFPYmplY3RBcnJheT9lLmNoaWxkcmVuOltlXX1pJiZuLnNldChyLGUpfWUubGVuZ3RoPjAmJmgucHVzaChlKX1pZigwIT09aC5sZW5ndGh8fG98fDAhPT1jKWU9aXNGaW5pdGUobCk/aC5maWx0ZXIoKGU9Pmw8ZS5sZW5ndGgpKS5tYXAoKGU9PmVbbF0pKTpoLmZsYXQoKTtlbHNle2NvbnN0IGE9dFt2c10oKTtpZighKHQ9YSkpcmV0dXJuIG51bGw7Yz0tMTtlPVt0XX19cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gY3JlYXRlRGF0YU5vZGUoZSx0LGEpe2NvbnN0IHI9cGFyc2VFeHByZXNzaW9uKGEpO2lmKCFyKXJldHVybiBudWxsO2lmKHIuc29tZSgoZT0+ZS5vcGVyYXRvcj09PXhvKSkpcmV0dXJuIG51bGw7Y29uc3QgaT1Dby5nZXQoclswXS5uYW1lKTtsZXQgbj0wO2lmKGkpe2U9aShlLHQpO249MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9ci5sZW5ndGg7bjx0O24rKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmEsaW5kZXg6aX09cltuXTtpZighaXNGaW5pdGUoaSkpe3Jbbl0uaW5kZXg9MDtyZXR1cm4gZS5jcmVhdGVOb2RlcyhyLnNsaWNlKG4pKX1sZXQgcztzd2l0Y2goYSl7Y2FzZSB3bzpzPWVbbXNdKHQsITEpO2JyZWFrO2Nhc2UgeG86cz1lW21zXSh0LCEwKTticmVhaztjYXNlIFNvOnM9ZVtwc10odCk7cz1zLmlzWEZBT2JqZWN0QXJyYXk/cy5jaGlsZHJlbjpbc119aWYoMD09PXMubGVuZ3RoKXJldHVybiBlLmNyZWF0ZU5vZGVzKHIuc2xpY2UobikpO2lmKCEoaTxzLmxlbmd0aCkpe3Jbbl0uaW5kZXg9aS1zLmxlbmd0aDtyZXR1cm4gZS5jcmVhdGVOb2RlcyhyLnNsaWNlKG4pKX17Y29uc3QgdD1zW2ldO2lmKCF0LmlzWEZBT2JqZWN0KXt3YXJuKCJYRkEgLSBDYW5ub3QgY3JlYXRlIGEgbm9kZS4iKTtyZXR1cm4gbnVsbH1lPXR9fXJldHVybiBudWxsfWNvbnN0IEZvPVN5bWJvbCgpLElvPVN5bWJvbCgpLE9vPVN5bWJvbCgpLE1vPVN5bWJvbCgiX2NoaWxkcmVuIiksRG89U3ltYm9sKCksQm89U3ltYm9sKCksUm89U3ltYm9sKCksTm89U3ltYm9sKCksRW89U3ltYm9sKCksUG89U3ltYm9sKCksTG89U3ltYm9sKCksam89U3ltYm9sKCksX289U3ltYm9sKCksVW89U3ltYm9sKCJwYXJlbnQiKSxYbz1TeW1ib2woKSxxbz1TeW1ib2woKSxIbz1TeW1ib2woKTtsZXQgV289MDtjb25zdCB6bz1nby5kYXRhc2V0cy5pZDtjbGFzcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGE9ITEpe3RoaXNbSHNdPWU7dGhpc1tXc109dDt0aGlzW0xvXT1hO3RoaXNbVW9dPW51bGw7dGhpc1tNb109W107dGhpc1t1b109YCR7dH0ke1dvKyt9YDt0aGlzW0lzXT1udWxsfWdldCBpc1hGQU9iamVjdCgpe3JldHVybiEwfWdldCBpc1hGQU9iamVjdEFycmF5KCl7cmV0dXJuITF9Y3JlYXRlTm9kZXMoZSl7bGV0IHQ9dGhpcyxhPW51bGw7Zm9yKGNvbnN0e25hbWU6cixpbmRleDppfW9mIGUpe2ZvcihsZXQgZT0wLG49aXNGaW5pdGUoaSk/aTowO2U8PW47ZSsrKXtjb25zdCBlPXRbSHNdPT09em8/LTE6dFtIc107YT1uZXcgWG1sT2JqZWN0KGUscik7dFtRbl0oYSl9dD1hfXJldHVybiBhfVskc10oZSl7aWYoIXRoaXNbTG9dfHwhdGhpc1tHc10oZSkpcmV0dXJuITE7Y29uc3QgdD1lW1dzXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tac10oYSk7dGhpc1t0XT1lO3RoaXNbUW5dKGUpO3JldHVybiEwfWlmKGEucHVzaChlKSl7dGhpc1tRbl0oZSk7cmV0dXJuITB9bGV0IHI9IiI7dGhpcy5pZD9yPWAgKGlkOiAke3RoaXMuaWR9KWA6dGhpcy5uYW1lJiYocj1gIChuYW1lOiAke3RoaXMubmFtZX0gJHt0aGlzLmgudmFsdWV9KWApO3dhcm4oYFhGQSAtIG5vZGUgIiR7dGhpc1tXc119IiR7cn0gaGFzIGFscmVhZHkgZW5vdWdoICIke3R9IiFgKTtyZXR1cm4hMX1bR3NdKGUpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KGVbV3NdKSYmZVtIc109PT10aGlzW0hzXX1bTHNdKCl7cmV0dXJuITF9W1luXSgpe3JldHVybiExfVtCc10oKXtyZXR1cm4hMX1bUnNdKCl7cmV0dXJuITF9W0pzXSgpe3RoaXMucGFyYSYmdGhpc1tGc10oKVtsc10ucGFyYVN0YWNrLnBvcCgpfVtZc10oKXt0aGlzW0ZzXSgpW2xzXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVthb10oZSl7dGhpcy5pZCYmdGhpc1tIc109PT1nby50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1bRnNdKCl7cmV0dXJuIHRoaXNbSXNdLnRlbXBsYXRlfVtqc10oKXtyZXR1cm4hMX1bX3NdKCl7cmV0dXJuITF9W1FuXShlKXtlW1VvXT10aGlzO3RoaXNbTW9dLnB1c2goZSk7IWVbSXNdJiZ0aGlzW0lzXSYmKGVbSXNdPXRoaXNbSXNdKX1bWnNdKGUpe2NvbnN0IHQ9dGhpc1tNb10uaW5kZXhPZihlKTt0aGlzW01vXS5zcGxpY2UodCwxKX1bVHNdKCl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoInZhbHVlIil9W2lvXShlKXt9W1ZzXShlKXt9W2hzXSgpe31bdHNdKGUpe2RlbGV0ZSB0aGlzW0xvXTtpZih0aGlzW3JzXSl7ZS5jbGVhbih0aGlzW3JzXSk7ZGVsZXRlIHRoaXNbcnNdfX1bTXNdKGUpe3JldHVybiB0aGlzW01vXS5pbmRleE9mKGUpfVtEc10oZSx0KXt0W1VvXT10aGlzO3RoaXNbTW9dLnNwbGljZShlLDAsdCk7IXRbSXNdJiZ0aGlzW0lzXSYmKHRbSXNdPXRoaXNbSXNdKX1bVXNdKCl7cmV0dXJuIXRoaXMubmFtZX1bcXNdKCl7cmV0dXJuIiJ9W3NvXSgpe3JldHVybiAwPT09dGhpc1tNb10ubGVuZ3RoP3RoaXNbc3NdOnRoaXNbTW9dLm1hcCgoZT0+ZVtzb10oKSkpLmpvaW4oIiIpfWdldFtPb10oKXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtpZighZS5fYXR0cmlidXRlcyl7Y29uc3QgdD1lLl9hdHRyaWJ1dGVzPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKG51bGw9PT10aGlzW2VdfHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KWJyZWFrO3QuYWRkKGUpfX1yZXR1cm4gc2hhZG93KHRoaXMsT28sZS5fYXR0cmlidXRlcyl9W0VzXShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFt2c10oKX1yZXR1cm4hMX1bdnNdKCl7cmV0dXJuIHRoaXNbVW9dfVtDc10oKXtyZXR1cm4gdGhpc1t2c10oKX1bU3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW01vXX1bY3NdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbc3NdJiYoZS4kY29udGVudD10aGlzW3NzXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW2NzXSgpOmEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9hLmlzRW1wdHkoKXx8KGVbdF09YS5kdW1wKCkpOmVbdF09YSl9cmV0dXJuIGV9W2hvXSgpe3JldHVybiBudWxsfVtjb10oKXtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX0qW2tzXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbU3NdKCkpeWllbGQgZX0qW05vXShlLHQpe2Zvcihjb25zdCBhIG9mIHRoaXNba3NdKCkpaWYoIWV8fHQ9PT1lLmhhcyhhW1dzXSkpe2NvbnN0IGU9dGhpc1tnc10oKSx0PWFbY29dKGUpO3Quc3VjY2Vzc3x8KHRoaXNbbHNdLmZhaWxpbmdOb2RlPWEpO3lpZWxkIHR9fVt1c10oKXtyZXR1cm4gbnVsbH1bWm5dKGUsdCl7dGhpc1tsc10uY2hpbGRyZW4ucHVzaChlKX1bZ3NdKCl7fVtlc10oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tsc10uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNbZ3NdKCksdD10aGlzW2xzXS5mYWlsaW5nTm9kZVtjb10oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbWm5dKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW2xzXS5mYWlsaW5nTm9kZX1lbHNlIHRoaXNbbHNdLmdlbmVyYXRvcj10aGlzW05vXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW2xzXS5nZW5lcmF0b3IubmV4dCgpO2lmKGUuZG9uZSlicmVhaztjb25zdCB0PWUudmFsdWU7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbWm5dKHQuaHRtbCx0LmJib3gpfXRoaXNbbHNdLmdlbmVyYXRvcj1udWxsO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfVtyb10oZSl7dGhpc1txb109bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W1BvXShlKXtjb25zdCB0PXRoaXNbT29dLGE9dGhpc1txb107cmV0dXJuWy4uLmVdLmZpbHRlcigoZT0+dC5oYXMoZSkmJiFhLmhhcyhlKSkpfVtlb10oZSx0PW5ldyBTZXQpe2Zvcihjb25zdCBhIG9mIHRoaXNbTW9dKWFbWG9dKGUsdCl9W1hvXShlLHQpe2NvbnN0IGE9dGhpc1tFb10oZSx0KTthP3RoaXNbRm9dKGEsZSx0KTp0aGlzW2VvXShlLHQpfVtFb10oZSx0KXtjb25zdHt1c2U6YSx1c2VocmVmOnJ9PXRoaXM7aWYoIWEmJiFyKXJldHVybiBudWxsO2xldCBpPW51bGwsbj1udWxsLHM9bnVsbCxvPWE7aWYocil7bz1yO3Iuc3RhcnRzV2l0aCgiI3NvbSgiKSYmci5lbmRzV2l0aCgiKSIpP249ci5zbGljZSg1LC0xKTpyLnN0YXJ0c1dpdGgoIi4jc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/bj1yLnNsaWNlKDYsLTEpOnIuc3RhcnRzV2l0aCgiIyIpP3M9ci5zbGljZSgxKTpyLnN0YXJ0c1dpdGgoIi4jIikmJihzPXIuc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/cz1hLnNsaWNlKDEpOm49YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYocylpPWUuZ2V0KHMpO2Vsc2V7aT1zZWFyY2hOb2RlKGUuZ2V0KFFzKSx0aGlzLG4sITAsITEpO2kmJihpPWlbMF0pfWlmKCFpKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7b30uYCk7cmV0dXJuIG51bGx9aWYoaVtXc10hPT10aGlzW1dzXSl7d2FybihgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtpW1dzXX0gIT09ICR7dGhpc1tXc119LmApO3JldHVybiBudWxsfWlmKHQuaGFzKGkpKXt3YXJuKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChpKTtjb25zdCBjPWlbRW9dKGUsdCk7YyYmaVtGb10oYyxlLHQpO2lbZW9dKGUsdCk7dC5kZWxldGUoaSk7cmV0dXJuIGl9W0ZvXShlLHQsYSl7aWYoYS5oYXMoZSkpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tzc10mJmVbc3NdJiYodGhpc1tzc109ZVtzc10pO25ldyBTZXQoYSkuYWRkKGUpO2Zvcihjb25zdCB0IG9mIHRoaXNbUG9dKGVbcW9dKSl7dGhpc1t0XT1lW3RdO3RoaXNbcW9dJiZ0aGlzW3FvXS5hZGQodCl9Zm9yKGNvbnN0IHIgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbT29dLmhhcyhyKSljb250aW51ZTtjb25zdCBpPXRoaXNbcl0sbj1lW3JdO2lmKGkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSl7Zm9yKGNvbnN0IGUgb2YgaVtNb10pZVtYb10odCxhKTtmb3IobGV0IHI9aVtNb10ubGVuZ3RoLHM9bltNb10ubGVuZ3RoO3I8cztyKyspe2NvbnN0IG49ZVtNb11bcl1baXNdKCk7aWYoIWkucHVzaChuKSlicmVhaztuW1VvXT10aGlzO3RoaXNbTW9dLnB1c2gobik7bltYb10odCxhKX19ZWxzZSBpZihudWxsPT09aSl7aWYobnVsbCE9PW4pe2NvbnN0IGU9bltpc10oKTtlW1VvXT10aGlzO3RoaXNbcl09ZTt0aGlzW01vXS5wdXNoKGUpO2VbWG9dKHQsYSl9fWVsc2V7aVtlb10odCxhKTtuJiZpW0ZvXShuLHQsYSl9fX1zdGF0aWNbRG9dKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbRG9dKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W2lzXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHtzaGFkb3coZSx0LHRoaXNbdF0pfWVbdW9dPWAke2VbV3NdfSR7V28rK31gO2VbTW9dPVtdO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW09vXS5oYXModCkpe2VbdF09WEZBT2JqZWN0W0RvXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBhPXRoaXNbdF07ZVt0XT1hIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KGFbam9dKTpudWxsfWZvcihjb25zdCB0IG9mIHRoaXNbTW9dKXtjb25zdCBhPXRbV3NdLHI9dFtpc10oKTtlW01vXS5wdXNoKHIpO3JbVW9dPWU7bnVsbD09PWVbYV0/ZVthXT1yOmVbYV1bTW9dLnB1c2gocil9cmV0dXJuIGV9W1NzXShlPW51bGwpe3JldHVybiBlP3RoaXNbTW9dLmZpbHRlcigodD0+dFtXc109PT1lKSk6dGhpc1tNb119W3BzXShlKXtyZXR1cm4gdGhpc1tlXX1bbXNdKGUsdCxhPSEwKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzW2JzXShlLHQsYSkpfSpbYnNdKGUsdCxhPSEwKXtpZigicGFyZW50IiE9PWUpe2Zvcihjb25zdCBhIG9mIHRoaXNbTW9dKXthW1dzXT09PWUmJih5aWVsZCBhKTthLm5hbWU9PT1lJiYoeWllbGQgYSk7KHR8fGFbVXNdKCkpJiYoeWllbGQqYVtic10oZSx0LCExKSl9YSYmdGhpc1tPb10uaGFzKGUpJiYoeWllbGQgbmV3IFhGQUF0dHJpYnV0ZSh0aGlzLGUsdGhpc1tlXSkpfWVsc2UgeWllbGQgdGhpc1tVb119fWNsYXNzIFhGQU9iamVjdEFycmF5e2NvbnN0cnVjdG9yKGU9MS8wKXt0aGlzW2pvXT1lO3RoaXNbTW9dPVtdfWdldCBpc1hGQU9iamVjdCgpe3JldHVybiExfWdldCBpc1hGQU9iamVjdEFycmF5KCl7cmV0dXJuITB9cHVzaChlKXtpZih0aGlzW01vXS5sZW5ndGg8PXRoaXNbam9dKXt0aGlzW01vXS5wdXNoKGUpO3JldHVybiEwfXdhcm4oYFhGQSAtIG5vZGUgIiR7ZVtXc119IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbam9dfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbTW9dLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW01vXS5sZW5ndGg/dGhpc1tNb11bMF1bY3NdKCk6dGhpc1tNb10ubWFwKChlPT5lW2NzXSgpKSl9W2lzXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbam9dKTtlW01vXT10aGlzW01vXS5tYXAoKGU9PmVbaXNdKCkpKTtyZXR1cm4gZX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpc1tNb119Y2xlYXIoKXt0aGlzW01vXS5sZW5ndGg9MH19Y2xhc3MgWEZBQXR0cmlidXRle2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzW1VvXT1lO3RoaXNbV3NdPXQ7dGhpc1tzc109YTt0aGlzW25zXT0hMTt0aGlzW3VvXT0iYXR0cmlidXRlIitXbysrfVt2c10oKXtyZXR1cm4gdGhpc1tVb119W05zXSgpe3JldHVybiEwfVt5c10oKXtyZXR1cm4gdGhpc1tzc10udHJpbSgpfVtpb10oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW3NzXT1lLnRvU3RyaW5nKCl9W3NvXSgpe3JldHVybiB0aGlzW3NzXX1bRXNdKGUpe3JldHVybiB0aGlzW1VvXT09PWV8fHRoaXNbVW9dW0VzXShlKX19Y2xhc3MgWG1sT2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPXt9KXtzdXBlcihlLHQpO3RoaXNbc3NdPSIiO3RoaXNbQm9dPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW0lvXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eSh6cykpe2NvbnN0IGU9YVt6c10ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1tCb109ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1tCb109ITApKX19dGhpc1tuc109ITF9W2xvXShlKXtjb25zdCB0PXRoaXNbV3NdO2lmKCIjdGV4dCI9PT10KXtlLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tzc10pKTtyZXR1cm59Y29uc3QgYT11dGY4U3RyaW5nVG9TdHJpbmcodCkscj10aGlzW0hzXT09PXpvPyJ4ZmE6IjoiIjtlLnB1c2goYDwke3J9JHthfWApO2Zvcihjb25zdFt0LGFdb2YgdGhpc1tJb10uZW50cmllcygpKXtjb25zdCByPXV0ZjhTdHJpbmdUb1N0cmluZyh0KTtlLnB1c2goYCAke3J9PSIke2VuY29kZVRvWG1sU3RyaW5nKGFbc3NdKX0iYCl9bnVsbCE9PXRoaXNbQm9dJiYodGhpc1tCb10/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbc3NdfHwwIT09dGhpc1tNb10ubGVuZ3RoKXtlLnB1c2goIj4iKTtpZih0aGlzW3NzXSkic3RyaW5nIj09dHlwZW9mIHRoaXNbc3NdP2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW3NzXSkpOnRoaXNbc3NdW2xvXShlKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbTW9dKXRbbG9dKGUpO2UucHVzaChgPC8ke3J9JHthfT5gKX1lbHNlIGUucHVzaCgiLz4iKX1bJHNdKGUpe2lmKHRoaXNbc3NdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tIc10sIiN0ZXh0Iik7dGhpc1tRbl0oZSk7ZVtzc109dGhpc1tzc107dGhpc1tzc109IiJ9dGhpc1tRbl0oZSk7cmV0dXJuITB9W1ZzXShlKXt0aGlzW3NzXSs9ZX1baHNdKCl7aWYodGhpc1tzc10mJnRoaXNbTW9dLmxlbmd0aD4wKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tIc10sIiN0ZXh0Iik7dGhpc1tRbl0oZSk7ZVtzc109dGhpc1tzc107ZGVsZXRlIHRoaXNbc3NdfX1bY29dKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbV3NdP0hUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiI3RleHQiLHZhbHVlOnRoaXNbc3NdfSk6SFRNTFJlc3VsdC5FTVBUWX1bU3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tNb10uZmlsdGVyKCh0PT50W1dzXT09PWUpKTp0aGlzW01vXX1bZnNdKCl7cmV0dXJuIHRoaXNbSW9dfVtwc10oZSl7Y29uc3QgdD10aGlzW0lvXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1NzXShlKX0qW2JzXShlLHQpe2NvbnN0IGE9dGhpc1tJb10uZ2V0KGUpO2EmJih5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW01vXSl7YVtXc109PT1lJiYoeWllbGQgYSk7dCYmKHlpZWxkKmFbYnNdKGUsdCkpfX0qW2RzXShlLHQpe2NvbnN0IGE9dGhpc1tJb10uZ2V0KGUpOyFhfHx0JiZhW25zXXx8KHlpZWxkIGEpO2Zvcihjb25zdCBhIG9mIHRoaXNbTW9dKXlpZWxkKmFbZHNdKGUsdCl9Klt4c10oZSx0LGEpe2Zvcihjb25zdCByIG9mIHRoaXNbTW9dKXtyW1dzXSE9PWV8fGEmJnJbbnNdfHwoeWllbGQgcik7dCYmKHlpZWxkKnJbeHNdKGUsdCxhKSl9fVtOc10oKXtyZXR1cm4gbnVsbD09PXRoaXNbQm9dPzA9PT10aGlzW01vXS5sZW5ndGh8fHRoaXNbTW9dWzBdW0hzXT09PWdvLnhodG1sLmlkOnRoaXNbQm9dfVt5c10oKXtyZXR1cm4gbnVsbD09PXRoaXNbQm9dPzA9PT10aGlzW01vXS5sZW5ndGg/dGhpc1tzc10udHJpbSgpOnRoaXNbTW9dWzBdW0hzXT09PWdvLnhodG1sLmlkP3RoaXNbTW9dWzBdW3NvXSgpLnRyaW0oKTpudWxsOnRoaXNbc3NdLnRyaW0oKX1baW9dKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tzc109ZS50b1N0cmluZygpfVtjc10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW0hzXSk7dGhpc1tzc10mJih0LiRjb250ZW50PXRoaXNbc3NdKTt0LiRuYW1lPXRoaXNbV3NdO3QuY2hpbGRyZW49W107Zm9yKGNvbnN0IGEgb2YgdGhpc1tNb10pdC5jaGlsZHJlbi5wdXNoKGFbY3NdKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbSW9dKXQuYXR0cmlidXRlc1tlXT1hW3NzXTtyZXR1cm4gdH19Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tzc109IiJ9W1ZzXShlKXt0aGlzW3NzXSs9ZX1baHNdKCl7fX1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbX29dPWF9W2hzXSgpe3RoaXNbc3NdPWdldEtleXdvcmQoe2RhdGE6dGhpc1tzc10sZGVmYXVsdFZhbHVlOnRoaXNbX29dWzBdLHZhbGlkYXRlOmU9PnRoaXNbX29dLmluY2x1ZGVzKGUpfSl9W3RzXShlKXtzdXBlclt0c10oZSk7ZGVsZXRlIHRoaXNbX29dfX1jbGFzcyBTdHJpbmdPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e1toc10oKXt0aGlzW3NzXT10aGlzW3NzXS50cmltKCl9fWNsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1tSb109YTt0aGlzW0hvXT1yfVtoc10oKXt0aGlzW3NzXT1nZXRJbnRlZ2VyKHtkYXRhOnRoaXNbc3NdLGRlZmF1bHRWYWx1ZTp0aGlzW1JvXSx2YWxpZGF0ZTp0aGlzW0hvXX0pfVt0c10oZSl7c3VwZXJbdHNdKGUpO2RlbGV0ZSB0aGlzW1JvXTtkZWxldGUgdGhpc1tIb119fWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgJG89e2FuY2hvclR5cGUoZSx0KXtjb25zdCBhPWVbQ3NdKCk7aWYoYSYmKCFhLmxheW91dHx8InBvc2l0aW9uIj09PWEubGF5b3V0KSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3N3aXRjaChlLmFuY2hvclR5cGUpe2Nhc2UiYm90dG9tQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLCAtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC0xMDAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTUwJSkiO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLDApIjticmVhaztjYXNlInRvcFJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwwKSJ9fX0sZGltZW5zaW9ucyhlLHQpe2NvbnN0IGE9ZVtDc10oKTtsZXQgcj1lLnc7Y29uc3QgaT1lLmg7aWYoYS5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW2xzXSxpPWUuY29sU3BhbjtsZXQgbjtpZigtMT09PWkpe249TWF0aC5zdW1QcmVjaXNlKHQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbikpO3QuY3VycmVudENvbHVtbj0wfWVsc2V7bj1NYXRoLnN1bVByZWNpc2UodC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uLHQuY3VycmVudENvbHVtbitpKSk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4obil8fChyPWUudz1uKX10LndpZHRoPSIiIT09cj9tZWFzdXJlVG9TdHJpbmcocik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09aT9tZWFzdXJlVG9TdHJpbmcoaSk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVtDc10oKTtpZighYT8ubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpe3QucG9zaXRpb249ImFic29sdXRlIjt0LmxlZnQ9bWVhc3VyZVRvU3RyaW5nKGUueCk7dC50b3A9bWVhc3VyZVRvU3RyaW5nKGUueSl9fSxyb3RhdGUoZSx0KXtpZihlLnJvdGF0ZSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3QudHJhbnNmb3JtKz1gcm90YXRlKC0ke2Uucm90YXRlfWRlZylgO3QudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCJ9fSxwcmVzZW5jZShlLHQpe3N3aXRjaChlLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6dC52aXNpYmlsaXR5PSJoaWRkZW4iO2JyZWFrO2Nhc2UiaGlkZGVuIjpjYXNlImluYWN0aXZlIjp0LmRpc3BsYXk9Im5vbmUifX0saEFsaWduKGUsdCl7aWYoInBhcmEiPT09ZVtXc10pc3dpdGNoKGUuaEFsaWduKXtjYXNlImp1c3RpZnlBbGwiOnQudGV4dEFsaWduPSJqdXN0aWZ5LWFsbCI7YnJlYWs7Y2FzZSJyYWRpeCI6dC50ZXh0QWxpZ249ImxlZnQiO2JyZWFrO2RlZmF1bHQ6dC50ZXh0QWxpZ249ZS5oQWxpZ259ZWxzZSBzd2l0Y2goZS5oQWxpZ24pe2Nhc2UibGVmdCI6dC5hbGlnblNlbGY9InN0YXJ0IjticmVhaztjYXNlImNlbnRlciI6dC5hbGlnblNlbGY9ImNlbnRlciI7YnJlYWs7Y2FzZSJyaWdodCI6dC5hbGlnblNlbGY9ImVuZCJ9fSxtYXJnaW4oZSx0KXtlLm1hcmdpbiYmKHQubWFyZ2luPWUubWFyZ2luW2hvXSgpLm1hcmdpbil9fTtmdW5jdGlvbiBzZXRNaW5NYXhEaW1lbnNpb25zKGUsdCl7aWYoInBvc2l0aW9uIj09PWVbQ3NdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fWZ1bmN0aW9uIGxheW91dFRleHQoZSx0LGEscixpLG4pe2NvbnN0IHM9bmV3IFRleHRNZWFzdXJlKHQsYSxyLGkpOyJzdHJpbmciPT10eXBlb2YgZT9zLmFkZFN0cmluZyhlKTplW0tzXShzKTtyZXR1cm4gcy5jb21wdXRlKG4pfWZ1bmN0aW9uIGxheW91dE5vZGUoZSx0KXtsZXQgYT1udWxsLHI9bnVsbCxpPSExO2lmKCghZS53fHwhZS5oKSYmZS52YWx1ZSl7bGV0IG49MCxzPTA7aWYoZS5tYXJnaW4pe249ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ7cz1lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgbz1udWxsLGM9bnVsbDtpZihlLnBhcmEpe2M9T2JqZWN0LmNyZWF0ZShudWxsKTtvPSIiPT09ZS5wYXJhLmxpbmVIZWlnaHQ/bnVsbDplLnBhcmEubGluZUhlaWdodDtjLnRvcD0iIj09PWUucGFyYS5zcGFjZUFib3ZlPzA6ZS5wYXJhLnNwYWNlQWJvdmU7Yy5ib3R0b209IiI9PT1lLnBhcmEuc3BhY2VCZWxvdz8wOmUucGFyYS5zcGFjZUJlbG93O2MubGVmdD0iIj09PWUucGFyYS5tYXJnaW5MZWZ0PzA6ZS5wYXJhLm1hcmdpbkxlZnQ7Yy5yaWdodD0iIj09PWUucGFyYS5tYXJnaW5SaWdodD8wOmUucGFyYS5tYXJnaW5SaWdodH1sZXQgbD1lLmZvbnQ7aWYoIWwpe2NvbnN0IHQ9ZVtGc10oKTtsZXQgYT1lW3ZzXSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2w9YS5mb250O2JyZWFrfWE9YVt2c10oKX19Y29uc3QgaD0oZS53fHx0LndpZHRoKS1uLHU9ZVtJc10uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbc3NdJiYidGV4dC9odG1sIj09PWUudmFsdWUuZXhEYXRhLmNvbnRlbnRUeXBlKXtjb25zdCB0PWxheW91dFRleHQoZS52YWx1ZS5leERhdGFbc3NdLGwsYyxvLHUsaCk7cj10LndpZHRoO2E9dC5oZWlnaHQ7aT10LmlzQnJva2VufWVsc2V7Y29uc3QgdD1lLnZhbHVlW3NvXSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGwsYyxvLHUsaCk7cj1lLndpZHRoO2E9ZS5oZWlnaHQ7aT1lLmlzQnJva2VufX1udWxsPT09cnx8ZS53fHwocis9bik7bnVsbD09PWF8fGUuaHx8KGErPXMpfXJldHVybnt3OnIsaDphLGlzQnJva2VuOml9fWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgcjtpZigiIiE9PWUudyYmIiIhPT1lLmgpcj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtDc10oKTtpPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lnc/MDplLm1pbld9ZWxzZSBpPU1hdGgubWluKGUubWF4VyxhLndpZHRoKTt0LmF0dHJpYnV0ZXMuc3R5bGUud2lkdGg9bWVhc3VyZVRvU3RyaW5nKGkpfWxldCBuPWUuaDtpZigiIj09PW4pe2lmKDA9PT1lLm1heEgpe2NvbnN0IHQ9ZVtDc10oKTtuPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lmg/MDplLm1pbkh9ZWxzZSBuPU1hdGgubWluKGUubWF4SCxhLmhlaWdodCk7dC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcobil9cj1bZS54LGUueSxpLG5dfXJldHVybiByfWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW0NzXSgpO2lmKHQubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IGE9dFtsc10scj1lLmNvbFNwYW47bGV0IGk7aT0tMT09PXI/TWF0aC5zdW1QcmVjaXNlKGEuY29sdW1uV2lkdGhzLnNsaWNlKGEuY3VycmVudENvbHVtbikpOk1hdGguc3VtUHJlY2lzZShhLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4sYS5jdXJyZW50Q29sdW1uK3IpKTtpc05hTihpKXx8KGUudz1pKX10LmxheW91dCYmInBvc2l0aW9uIiE9PXQubGF5b3V0JiYoZS54PWUueT0wKTsidGFibGUiPT09ZS5sYXlvdXQmJiIiPT09ZS53JiZBcnJheS5pc0FycmF5KGUuY29sdW1uV2lkdGhzKSYmKGUudz1NYXRoLnN1bVByZWNpc2UoZS5jb2x1bW5XaWR0aHMpKX1mdW5jdGlvbiBsYXlvdXRDbGFzcyhlKXtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UicG9zaXRpb24iOmRlZmF1bHQ6cmV0dXJuInhmYVBvc2l0aW9uIjtjYXNlImxyLXRiIjpyZXR1cm4ieGZhTHJUYiI7Y2FzZSJybC1yb3ciOnJldHVybiJ4ZmFSbFJvdyI7Y2FzZSJybC10YiI6cmV0dXJuInhmYVJsVGIiO2Nhc2Uicm93IjpyZXR1cm4ieGZhUm93IjtjYXNlInRhYmxlIjpyZXR1cm4ieGZhVGFibGUiO2Nhc2UidGIiOnJldHVybiJ4ZmFUYiJ9fWZ1bmN0aW9uIHRvU3R5bGUoZSwuLi50KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3QgdD1lW3JdO2lmKG51bGwhPT10KWlmKCRvLmhhc093blByb3BlcnR5KHIpKSRvW3JdKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXtjb25zdCBlPXRbaG9dKCk7ZT9PYmplY3QuYXNzaWduKGEsZSk6d2FybihgKERFQlVHKSAtIFhGQSAtIHN0eWxlIGZvciAke3J9IG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX19cmV0dXJuIGF9ZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlLHQpe2NvbnN0e2F0dHJpYnV0ZXM6YX09dCx7c3R5bGU6cn09YSxpPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTthLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKTtpZihlLmJvcmRlcil7Y29uc3R7d2lkdGhzOmEsaW5zZXRzOm59PWUuYm9yZGVyW2xzXTtsZXQgcyxvLGM9blswXSxsPW5bM107Y29uc3QgaD1uWzBdK25bMl0sdT1uWzFdK25bM107c3dpdGNoKGUuYm9yZGVyLmhhbmQpe2Nhc2UiZXZlbiI6Yy09YVswXS8yO2wtPWFbM10vMjtzPWBjYWxjKDEwMCUgKyAkeyhhWzFdK2FbM10pLzItdX1weClgO289YGNhbGMoMTAwJSArICR7KGFbMF0rYVsyXSkvMi1ofXB4KWA7YnJlYWs7Y2FzZSJsZWZ0IjpjLT1hWzBdO2wtPWFbM107cz1gY2FsYygxMDAlICsgJHthWzFdK2FbM10tdX1weClgO289YGNhbGMoMTAwJSArICR7YVswXSthWzJdLWh9cHgpYDticmVhaztjYXNlInJpZ2h0IjpzPXU/YGNhbGMoMTAwJSAtICR7dX1weClgOiIxMDAlIjtvPWg/YGNhbGMoMTAwJSAtICR7aH1weClgOiIxMDAlIn1jb25zdCBkPVsieGZhQm9yZGVyIl07aXNQcmludE9ubHkoZS5ib3JkZXIpJiZkLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6ZCxzdHlsZTp7dG9wOmAke2N9cHhgLGxlZnQ6YCR7bH1weGAsd2lkdGg6cyxoZWlnaHQ6b319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZlsiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlclN0eWxlIl0paWYodm9pZCAwIT09cltlXSl7Zi5hdHRyaWJ1dGVzLnN0eWxlW2VdPXJbZV07ZGVsZXRlIHJbZV19aS5jaGlsZHJlbi5wdXNoKGYsdCl9ZWxzZSBpLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0paWYodm9pZCAwIT09cltlXSl7aS5hdHRyaWJ1dGVzLnN0eWxlW2VdPXJbZV07ZGVsZXRlIHJbZV19aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1yLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIjtkZWxldGUgci5wb3NpdGlvbjtpZihyLmFsaWduU2VsZil7aS5hdHRyaWJ1dGVzLnN0eWxlLmFsaWduU2VsZj1yLmFsaWduU2VsZjtkZWxldGUgci5hbGlnblNlbGZ9cmV0dXJuIGl9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PWdldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09PSgicmlnaHQiPT09ZS50ZXh0QWxpZ24/InJpZ2h0IjoibGVmdCIpPyJMZWZ0IjoiUmlnaHQiKSxyPWdldE1lYXN1cmVtZW50KGVbYV0sIjBweCIpO2VbYV09ci10KyJweCJ9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW0ZzXSgpW2xzXS5wYXJhU3RhY2s7cmV0dXJuIHQubGVuZ3RoP3QuYXQoLTEpOm51bGx9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzPy5pbmNsdWRlcygieGZhUmljaCIpKXtpZih0KXsiIj09PWUuaCYmKHQuaGVpZ2h0PSJhdXRvIik7IiI9PT1lLncmJih0LndpZHRoPSJhdXRvIil9Y29uc3Qgcj1nZXRDdXJyZW50UGFyYShlKTtpZihyKXtjb25zdCBlPWEuYXR0cmlidXRlcy5zdHlsZTtlLmRpc3BsYXk9ImZsZXgiO2UuZmxleERpcmVjdGlvbj0iY29sdW1uIjtzd2l0Y2goci52QWxpZ24pe2Nhc2UidG9wIjplLmp1c3RpZnlDb250ZW50PSJzdGFydCI7YnJlYWs7Y2FzZSJib3R0b20iOmUuanVzdGlmeUNvbnRlbnQ9ImVuZCI7YnJlYWs7Y2FzZSJtaWRkbGUiOmUuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciJ9Y29uc3QgdD1yW2hvXSgpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1yKX19fWZ1bmN0aW9uIHNldEZvbnRGYW1pbHkoZSx0LGEscil7aWYoIWEpe2RlbGV0ZSByLmZvbnRGYW1pbHk7cmV0dXJufWNvbnN0IGk9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSk7ci5mb250RmFtaWx5PWAiJHtpfSJgO2NvbnN0IG49YS5maW5kKGkpO2lmKG4pe2NvbnN0e2ZvbnRGYW1pbHk6YX09bi5yZWd1bGFyLmNzc0ZvbnRJbmZvO2EhPT1pJiYoci5mb250RmFtaWx5PWAiJHthfSJgKTtjb25zdCBzPWdldEN1cnJlbnRQYXJhKHQpO2lmKHMmJiIiIT09cy5saW5lSGVpZ2h0KXJldHVybjtpZihyLmxpbmVIZWlnaHQpcmV0dXJuO2NvbnN0IG89c2VsZWN0Rm9udChlLG4pO28mJihyLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLG8ubGluZUhlaWdodCkpfX1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfWZ1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fWZ1bmN0aW9uIGZsdXNoSFRNTChlKXtpZighZVtsc10pcmV0dXJuIG51bGw7Y29uc3QgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbbHNdLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtsc10uY2hpbGRyZW59O2lmKGVbbHNdLmZhaWxpbmdOb2RlKXtjb25zdCBhPWVbbHNdLmZhaWxpbmdOb2RlW3VzXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfXJldHVybiAwPT09dC5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0fWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IHI9ZVtsc10saT1yLmF2YWlsYWJsZVNwYWNlLFtuLHMsbyxjXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ci53aWR0aD1NYXRoLm1heChyLndpZHRoLG4rbyk7ci5oZWlnaHQ9TWF0aC5tYXgoci5oZWlnaHQscytjKTtyLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIXIubGluZXx8MT09PXIuYXR0ZW1wdCl7ci5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7ci5jaGlsZHJlbi5wdXNoKHIubGluZSk7ci5udW1iZXJJbkxpbmU9MH1yLm51bWJlckluTGluZSs9MTtyLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09ci5hdHRlbXB0KXtyLmN1cnJlbnRXaWR0aCs9bztyLmhlaWdodD1NYXRoLm1heChyLmhlaWdodCxyLnByZXZIZWlnaHQrYyl9ZWxzZXtyLmN1cnJlbnRXaWR0aD1vO3IucHJldkhlaWdodD1yLmhlaWdodDtyLmhlaWdodCs9YztyLmF0dGVtcHQ9MH1yLndpZHRoPU1hdGgubWF4KHIud2lkdGgsci5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e3IuY2hpbGRyZW4ucHVzaCh0KTtyLndpZHRoKz1vO3IuaGVpZ2h0PU1hdGgubWF4KHIuaGVpZ2h0LGMpO2NvbnN0IGU9bWVhc3VyZVRvU3RyaW5nKHIuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiByLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjpyLndpZHRoPU1hdGhDbGFtcChvLHIud2lkdGgsaS53aWR0aCk7ci5oZWlnaHQrPWM7ci5jaGlsZHJlbi5wdXNoKHQpfX1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbbHNdLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxyPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbbHNdLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtci1lW2xzXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtsc10ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtcixoZWlnaHQ6dC5oZWlnaHQtYS1lW2xzXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOk1hdGguc3VtUHJlY2lzZShlW2xzXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVtsc10uY3VycmVudENvbHVtbikpLGhlaWdodDp0LmhlaWdodC1yfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1yLGhlaWdodDp0LmhlaWdodC1hLWVbbHNdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbRnNdKClbbHNdLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgYT1lW0NzXSgpLHI9YVtsc10/LmF0dGVtcHR8fDAsWyxpLG4sc109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LGk9IiI9PT1lLmg/TmFOOmUuaCxbbixzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltuLHNdPVtyLzIsaV07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbbixzXT1bMCxpXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbbixzXT1bcixpXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W24sc109W3IvMixpLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W24sc109WzAsaS8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbbixzXT1bcixpLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbbixzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltuLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstbiwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsbl07W3IsaV09W2ksLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtuLHNdO1tyLGldPVstciwtaV07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLW5dO1tyLGldPVstaSxyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLGkpLE1hdGguYWJzKHIpLE1hdGguYWJzKGkpXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PXI/ZVtGc10oKVtsc10ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQobi10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChzLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQobi10LndpZHRoKTw9Mnx8MD09PWFbbHNdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtGc10oKVtsc10ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKHMtdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKG4tdC53aWR0aCk8PTJ8fCFhW19zXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW0ZzXSgpW2xzXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVtqc10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQobi10LndpZHRoKTw9Mnx8IWFbX3NdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQocy10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbRnNdKClbbHNdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChzK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBzK2k+ZVtGc10oKVtsc10uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbRnNdKClbbHNdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKHMtdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBHbz1nby50ZW1wbGF0ZS5pZCxWbz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLEtvPS9eSChcZCspJC8sSm89bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxZbz1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3dzXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtRbl0odCk7ZS52YWx1ZT10fWUudmFsdWVbaW9dKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbU3NdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtrc10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtub109ZVt2c10oKVtub107cmV0dXJufWlmKGVbbm9dKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUudHJhdmVyc2FsW1NzXSgpKWlmKCJuZXh0Ij09PWEub3BlcmF0aW9uKXt0PWE7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtub109ZVt2c10oKVtub107cmV0dXJufWNvbnN0IGE9ZVtGc10oKTtlW25vXT0rK2Fbbm9dO2NvbnN0IHI9YVt0b10odC5yZWYsZSk7aWYoIXIpcmV0dXJuO2U9clswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtjb10oKTtlJiYodC50aXRsZT1lKTtjb25zdCByPWEucm9sZS5tYXRjaChLbyk7aWYocil7Y29uc3QgZT0iaGVhZGluZyIsYT1yWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVt2c10oKTsicm93Ij09PWEubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1hLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tzc10/dC5zcGVha1tzc106dC50b29sVGlwP3QudG9vbFRpcFtzc106bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW0ZzXSgpO2lmKG51bGw9PT10W2xzXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtsc10uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W2xzXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW0ZzXSgpO3RbbHNdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbbHNdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtsc10pcmV0dXJuITE7ZVtsc109T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW0ZzXSgpO2xldCBhPW51bGw7aWYoZS50YXJnZXQpe2E9dFt0b10oZS50YXJnZXQsZVt2c10oKSk7aWYoIWEpcmV0dXJuITE7YT1hWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTpyLGN1cnJlbnRDb250ZW50QXJlYTppfT10W2xzXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXthIGluc3RhbmNlb2YgUGFnZUFyZWF8fChhPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbbHNdLnRhcmdldD1hfHxyO3JldHVybiEwfWlmKGEmJmEhPT1yKXtlW2xzXS50YXJnZXQ9YTtyZXR1cm4hMH1yZXR1cm4hMX1hIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChhPW51bGwpO2NvbnN0IG49YSYmYVt2c10oKTtsZXQgcyxvPW47aWYoZS5zdGFydE5ldylpZihhKXtjb25zdCBlPW4uY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YoaSkscj1lLmluZGV4T2YoYSk7LTEhPT10JiZ0PHImJihvPW51bGwpO3M9ci0xfWVsc2Ugcz1yLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSk7ZWxzZXtpZighYXx8YT09PWkpcmV0dXJuITE7cz1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSktMTtvPW49PT1yP251bGw6bn1lW2xzXS50YXJnZXQ9bztlW2xzXS5pbmRleD1zO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxhKXtjb25zdCByPWVbRnNdKCksaT1yW2xzXS5ub0xheW91dEZhaWx1cmUsbj10W0NzXTt0W0NzXT0oKT0+ZTtyW2xzXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgcz10W2NvXShhKTtlW1puXShzLmh0bWwscy5iYm94KTtyW2xzXS5ub0xheW91dEZhaWx1cmU9aTt0W0NzXT1ufWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtjb10oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtob10oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW2hvXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7bGV0IHI7Y29uc3QgaT17eG1sbnM6Vm8sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlyPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpWbyxjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxuPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07cj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6Vm8sZDpgTSAke3N9ICR7b30gQSA1MCA1MCAwICR7bn0gMCAke2N9ICR7bH1gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTphfX07T2JqZWN0LmFzc2lnbihpLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBuPXtuYW1lOiJzdmciLGNoaWxkcmVuOltyXSxhdHRyaWJ1dGVzOml9O2lmKGhhc01hcmdpbih0aGlzW3ZzXSgpW3ZzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W25dfSk7bi5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhuKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltrc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bVXNdKCl7cmV0dXJuITB9W1JzXSgpe3JldHVybiEwfVtabl0oZSx0KXtjb25zdFthLHIsaSxuXT10O3RoaXNbbHNdLndpZHRoPU1hdGgubWF4KHRoaXNbbHNdLndpZHRoLGEraSk7dGhpc1tsc10uaGVpZ2h0PU1hdGgubWF4KHRoaXNbbHNdLmhlaWdodCxyK24pO3RoaXNbbHNdLmNoaWxkcmVuLnB1c2goZSl9W2dzXSgpe3JldHVybiB0aGlzW2xzXS5hdmFpbGFibGVTcGFjZX1bY29dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1t1b10sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZhLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGEueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IHI9W107dGhpc1tsc109e2NoaWxkcmVuOnIsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCBpPXRoaXNbZXNdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIWkuc3VjY2Vzcyl7aWYoaS5pc0JyZWFrKCkpcmV0dXJuIGk7ZGVsZXRlIHRoaXNbbHNdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tsc10ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW2xzXS5oZWlnaHQpO2NvbnN0IG49e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnJ9LHM9W3RoaXMueCx0aGlzLnksdGhpc1tsc10ud2lkdGgsdGhpc1tsc10uaGVpZ2h0XTtkZWxldGUgdGhpc1tsc107cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhuLHMpfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bY29dKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW3NzXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bY29dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tzc10/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd3NdKCl7aWYoIXRoaXNbbHNdKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxhPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7YVswXT10aGlzLm1hcmdpbi50b3BJbnNldDthWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7YVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDthWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW2xzXT17d2lkdGhzOnQsaW5zZXRzOmEsZWRnZXM6ZX19cmV0dXJuIHRoaXNbbHNdfVtob10oKXtjb25zdHtlZGdlczplfT10aGlzW3dzXSgpLHQ9ZS5tYXAoKGU9Pntjb25zdCB0PWVbaG9dKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oYSx0aGlzLm1hcmdpbltob10oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtob10oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW2hvXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBhPWUubGVuZ3RoO2E8NDthKyspZS5wdXNoKHQpfWEuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjphLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmEuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6YS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1hLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2EuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGF9fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bY29dKGUpe3RoaXNbbHNdPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bY29dKGUpe2NvbnN0IHQ9dGhpc1t2c10oKVt2c10oKSxhPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbdW9dLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W3NzXSk7aWYoIXQpY29udGludWU7Y29uc3Qgcj1maXhVUkwodC51cmwpO3ImJmEuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbdW9dLGhyZWY6cixuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhhKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtpb10oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3dzXShlKXtpZighdGhpc1tsc10pe2xldHt3aWR0aDp0LGhlaWdodDphfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphPXRoaXMucmVzZXJ2ZTw9MD9hOnRoaXMucmVzZXJ2ZX10aGlzW2xzXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0OmF9KX1yZXR1cm4gdGhpc1tsc119W2NvXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW1lzXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtjb10oZSkuaHRtbDtpZighdCl7dGhpc1tKc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBhPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOmF9PXRoaXNbd3NdKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9YX19Y29uc3Qgcj1bXTsic3RyaW5nIj09dHlwZW9mIHQ/ci5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOnIucHVzaCh0KTtjb25zdCBpPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihpLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYoaS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbSnNdKCk7dGhpcy5yZXNlcnZlPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTppLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjpyfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2NvXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywibWFyZ2luIiksYT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zaXplKTt0LndpZHRoPXQuaGVpZ2h0PWE7bGV0IHIsaSxuO2NvbnN0IHM9dGhpc1t2c10oKVt2c10oKSxvPXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZzLml0ZW1zLmNoaWxkcmVuWzBdW2NvXSgpLmh0bWx8fFtdLGM9e29uOih2b2lkIDAhPT1vWzBdP29bMF06Im9uIikudG9TdHJpbmcoKSxvZmY6KHZvaWQgMCE9PW9bMV0/b1sxXToib2ZmIikudG9TdHJpbmcoKX0sbD0ocy52YWx1ZT8uW3NvXSgpfHwib2ZmIik9PT1jLm9ufHx2b2lkIDAsaD1zW0NzXSgpLHU9c1t1b107bGV0IGQ7aWYoaCBpbnN0YW5jZW9mIEV4Y2xHcm91cCl7bj1oW3VvXTtyPSJyYWRpbyI7aT0ieGZhUmFkaW8iO2Q9aFtvc10/Llt1b118fGhbdW9dfWVsc2V7cj0iY2hlY2tib3giO2k9InhmYUNoZWNrYm94IjtkPXNbb3NdPy5bdW9dfHxzW3VvXX1jb25zdCBmPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W2ldLHN0eWxlOnQsZmllbGRJZDp1LGRhdGFJZDpkLHR5cGU6cixjaGVja2VkOmwseGZhT246Yy5vbix4ZmFPZmY6Yy5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChzKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtuJiYoZi5hdHRyaWJ1dGVzLm5hbWU9bik7aWYoaXNSZXF1aXJlZChzKSl7Zi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7Zi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltmXX0pfX1jbGFzcyBDaG9pY2VMaXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj1nZXRTdHJpbmdPcHRpb24oZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49Z2V0U3RyaW5nT3B0aW9uKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PWdldEludGVnZXIoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2NvXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwibWFyZ2luIiksYT10aGlzW3ZzXSgpW3ZzXSgpLHI9e2ZvbnRTaXplOmBjYWxjKCR7YS5mb250Py5zaXplfHwxMH1weCAqIHZhcigtLXRvdGFsLXNjYWxlLWZhY3RvcikpYH0saT1bXTtpZihhLml0ZW1zLmNoaWxkcmVuLmxlbmd0aD4wKXtjb25zdCBlPWEuaXRlbXM7bGV0IHQ9MCxuPTA7aWYoMj09PWUuY2hpbGRyZW4ubGVuZ3RoKXt0PWUuY2hpbGRyZW5bMF0uc2F2ZTtuPTEtdH1jb25zdCBzPWUuY2hpbGRyZW5bdF1bY29dKCkuaHRtbCxvPWUuY2hpbGRyZW5bbl1bY29dKCkuaHRtbDtsZXQgYz0hMTtjb25zdCBsPWEudmFsdWU/Lltzb10oKXx8IiI7Zm9yKGxldCBlPTAsdD1zLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOm9bZV18fHNbZV0sc3R5bGU6cn0sdmFsdWU6c1tlXX07b1tlXT09PWwmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9Yz0hMCk7aS5wdXNoKHQpfWN8fGkuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IG49e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDphW3VvXSxkYXRhSWQ6YVtvc10/Llt1b118fGFbdW9dLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQoYSkpe25bImFyaWEtcmVxdWlyZWQiXT0hMDtuLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihuLm11bHRpcGxlPSEwKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbe25hbWU6InNlbGVjdCIsY2hpbGRyZW46aSxhdHRyaWJ1dGVzOm59XX0pfX1jbGFzcyBDb2xvciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT1nZXRTdHJpbmdPcHRpb24oZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT9mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2EscixpXT10O2lmKCFlKXJldHVybntyOmEsZzpyLGI6aX07Y29uc3Qgbj1lLnNwbGl0KCIsIiwzKS5tYXAoKGU9Pk1hdGhDbGFtcChwYXJzZUludChlLnRyaW0oKSwxMCksMCwyNTUpKSkubWFwKChlPT5pc05hTihlKT8wOmUpKTtpZihuLmxlbmd0aDwzKXJldHVybntyOmEsZzpyLGI6aX07W2EscixpXT1uO3JldHVybntyOmEsZzpyLGI6aX19KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W1RzXSgpe3JldHVybiExfVtob10oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2NvXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGE9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZhLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczphLGlkOnRoaXNbdW9dfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtob10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2hzXSgpe2NvbnN0IGU9dGhpc1tzc10udHJpbSgpO3RoaXNbc3NdPWU/bmV3IERhdGUoZSk6bnVsbH1bY29dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW3NzXT90aGlzW3NzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtoc10oKXtjb25zdCBlPXRoaXNbc3NdLnRyaW0oKTt0aGlzW3NzXT1lP25ldyBEYXRlKGUpOm51bGx9W2NvXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tzc10/dGhpc1tzc10udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2NvXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1t2c10oKVt2c10oKSxyPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3VvXSxkYXRhSWQ6YVtvc10/Llt1b118fGFbdW9dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe3IuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO3IuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbcl19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2hzXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW3NzXS50cmltKCkpO3RoaXNbc3NdPWlzTmFOKGUpP251bGw6ZX1bY29dKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tzc10/dGhpc1tzc10udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W2lvXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bY29dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW1lzXSgpO2NvbnN0IHQ9dGhpcy53LGE9dGhpcy5oLHt3OnIsaDppLGlzQnJva2VuOm59PWxheW91dE5vZGUodGhpcyxlKTtpZihyJiYiIj09PXRoaXMudyl7aWYobiYmdGhpc1tDc10oKVtfc10oKSl7dGhpc1tKc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1yfWkmJiIiPT09dGhpcy5oJiYodGhpcy5oPWkpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tKc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgcz10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMscyk7aWYocy5tYXJnaW4pe3MucGFkZGluZz1zLm1hcmdpbjtkZWxldGUgcy5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGM9e3N0eWxlOnMsaWQ6dGhpc1t1b10sY2xhc3M6b307dGhpcy5uYW1lJiYoYy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgbD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsYyk7Y29uc3QgaD1jb21wdXRlQmJveCh0aGlzLGwsZSksdT10aGlzLnZhbHVlP3RoaXMudmFsdWVbY29dKGUpLmh0bWw6bnVsbDtpZihudWxsPT09dSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tKc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxsKSxoKX1sLmNoaWxkcmVuLnB1c2godSk7c2V0UGFyYSh0aGlzLHMsdSk7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tKc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxsKSxoKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2hvXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW2hvXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtCc10oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9WyRzXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVbSHNdPT09Z28ueGh0bWwuaWQpe3RoaXNbc3NdPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbc3NdPWU7cmV0dXJuITB9cmV0dXJuITF9W2NvXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbc3NdP3RoaXNbc3NdW2NvXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W1JzXSgpe3JldHVybiEwfVtUc10oKXtyZXR1cm4hMH1baW9dKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtRbl0oZSk7dC52YWx1ZT1lfXQudmFsdWVbaW9dKGUpfX1bX3NdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbbHNdLmF0dGVtcHQmJnRoaXNbbHNdLm51bWJlckluTGluZT4wfHx0aGlzW3ZzXSgpW19zXSgpfVtqc10oKXtjb25zdCBlPXRoaXNbQ3NdKCk7aWYoIWVbanNdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tsc10uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tsc10uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tsc10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtsc10ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbbHNdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3VzXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W1puXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtnc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W2NvXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3VvXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsYS5jbGFzcyk7dGhpc1tsc118fD1PYmplY3QuY3JlYXRlKG51bGwpO09iamVjdC5hc3NpZ24odGhpc1tsc10se2NoaWxkcmVuOnQsYXR0cmlidXRlczphLGF0dGVtcHQ6MCxsaW5lOm51bGwsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3Qgcj10aGlzW2pzXSgpO3J8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IGk9bmV3IFNldChbImZpZWxkIl0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW0NzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW2xzXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW2xzXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG49dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxzPVsieGZhRXhjbGdyb3VwIl0sbz1sYXlvdXRDbGFzcyh0aGlzKTtvJiZzLnB1c2gobyk7aXNQcmludE9ubHkodGhpcykmJnMucHVzaCgieGZhUHJpbnRPbmx5Iik7YS5zdHlsZT1uO2EuY2xhc3M9czt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTt0aGlzW1lzXSgpO2NvbnN0IGM9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbD1jPzI6MTtmb3IoO3RoaXNbbHNdLmF0dGVtcHQ8bDt0aGlzW2xzXS5hdHRlbXB0Kyspe2MmJjE9PT10aGlzW2xzXS5hdHRlbXB0JiYodGhpc1tsc10ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tlc10oe2ZpbHRlcjppLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbSnNdKCk7cmV0dXJuIGV9aWYoYyYmMD09PXRoaXNbbHNdLmF0dGVtcHQmJjA9PT10aGlzW2xzXS5udW1iZXJJbkxpbmUmJiF0aGlzW0ZzXSgpW2xzXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbbHNdLmF0dGVtcHQ9bDticmVha319dGhpc1tKc10oKTtyfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbbHNdLmF0dGVtcHQ9PT1sKXtyfHxkZWxldGUgdGhpc1tsc107cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1sZXQgaD0wLHU9MDtpZih0aGlzLm1hcmdpbil7aD10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDt1PXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWNvbnN0IGQ9TWF0aC5tYXgodGhpc1tsc10ud2lkdGgraCx0aGlzLnd8fDApLGY9TWF0aC5tYXgodGhpc1tsc10uaGVpZ2h0K3UsdGhpcy5ofHwwKSxnPVt0aGlzLngsdGhpcy55LGQsZl07IiI9PT10aGlzLncmJihuLndpZHRoPW1lYXN1cmVUb1N0cmluZyhkKSk7IiI9PT10aGlzLmgmJihuLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZikpO2NvbnN0IHA9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7ZGVsZXRlIHRoaXNbbHNdO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLHApLGcpfX1jbGFzcyBFeGVjdXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJleGVjdXRlIik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5leGVjdXRlVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5leGVjdXRlVHlwZSxbImltcG9ydCIsInJlbWVyZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEV4dHJhcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRmllbGQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImZpZWxkIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMuZm9ybWF0PW51bGw7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWx1ZT1udWxsO3RoaXMuYmluZEl0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtSc10oKXtyZXR1cm4hMH1baW9dKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVtjb10oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW0lzXT10aGlzW0lzXTt0aGlzW1FuXSh0aGlzLnVpKTtsZXQgZTtzd2l0Y2godGhpcy5pdGVtcy5jaGlsZHJlbi5sZW5ndGgpe2Nhc2UgMDplPW5ldyBUZXh0RWRpdCh7fSk7dGhpcy51aS50ZXh0RWRpdD1lO2JyZWFrO2Nhc2UgMTplPW5ldyBDaGVja0J1dHRvbih7fSk7dGhpcy51aS5jaGVja0J1dHRvbj1lO2JyZWFrO2Nhc2UgMjplPW5ldyBDaG9pY2VMaXN0KHt9KTt0aGlzLnVpLmNob2ljZUxpc3Q9ZX10aGlzLnVpW1FuXShlKX1pZighdGhpcy51aXx8ImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bbHNdO3RoaXNbWXNdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW2NvXShlKS5odG1sOm51bGwsYT10aGlzLncscj10aGlzLmg7bGV0IGk9MCxuPTA7aWYodGhpcy5tYXJnaW4pe2k9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7bj10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgcz1udWxsO2lmKCIiPT09dGhpcy53fHwiIj09PXRoaXMuaCl7bGV0IHQ9bnVsbCxhPW51bGwscj0wLG89MDtpZih0aGlzLnVpLmNoZWNrQnV0dG9uKXI9bz10aGlzLnVpLmNoZWNrQnV0dG9uLnNpemU7ZWxzZXtjb25zdHt3OnQsaDphfT1sYXlvdXROb2RlKHRoaXMsZSk7aWYobnVsbCE9PXQpe3I9dDtvPWF9ZWxzZSBvPWZ1bmN0aW9uIGZvbnRzX2dldE1ldHJpY3MoZSx0PSExKXtsZXQgYT1udWxsO2lmKGUpe2NvbnN0IHQ9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSkscj1lW0lzXS5mb250RmluZGVyLmZpbmQodCk7YT1zZWxlY3RGb250KGUscil9aWYoIWEpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3Qgcj1lLnNpemV8fDEwLGk9YS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsYS5saW5lSGVpZ2h0KToxLjIsbj12b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OmkqcixsaW5lR2FwOm4qcixsaW5lTm9HYXA6TWF0aC5tYXgoMSxpLW4pKnJ9fSh0aGlzLmZvbnQsITApLmxpbmVOb0dhcH1zPWdldEJvcmRlckRpbXModGhpcy51aVt3c10oKSk7cis9cy53O28rPXMuaDtpZih0aGlzLmNhcHRpb24pe2NvbnN0e3c6aSxoOm4saXNCcm9rZW46c309dGhpcy5jYXB0aW9uW3dzXShlKTtpZihzJiZ0aGlzW0NzXSgpW19zXSgpKXt0aGlzW0pzXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dD1pO2E9bjtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dCs9cjticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmErPW99fWVsc2V7dD1yO2E9b31pZih0JiYiIj09PXRoaXMudyl7dCs9aTt0aGlzLnc9TWF0aC5taW4odGhpcy5tYXhXPD0wPzEvMDp0aGlzLm1heFcsdGhpcy5taW5XKzE8dD90OnRoaXMubWluVyl9aWYoYSYmIiI9PT10aGlzLmgpe2ErPW47dGhpcy5oPU1hdGgubWluKHRoaXMubWF4SDw9MD8xLzA6dGhpcy5tYXhILHRoaXMubWluSCsxPGE/YTp0aGlzLm1pbkgpfX10aGlzW0pzXSgpO2ZpeERpbWVuc2lvbnModGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9cjt0aGlzW0pzXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtjb25zdCBvPXRvU3R5bGUodGhpcywiZm9udCIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJwcmVzZW5jZSIsIm1hcmdpbiIsImhBbGlnbiIpO3NldE1pbk1heERpbWVuc2lvbnModGhpcyxvKTtjb25zdCBjPVsieGZhRmllbGQiXTt0aGlzLmZvbnQmJmMucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZjLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGw9e3N0eWxlOm8saWQ6dGhpc1t1b10sY2xhc3M6Y307aWYoby5tYXJnaW4pe28ucGFkZGluZz1vLm1hcmdpbjtkZWxldGUgby5tYXJnaW59c2V0QWNjZXNzKHRoaXMsYyk7dGhpcy5uYW1lJiYobC54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgaD1bXSx1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bCxjaGlsZHJlbjpofTthcHBseUFzc2lzdCh0aGlzLGwpO2NvbnN0IGQ9dGhpcy5ib3JkZXI/dGhpcy5ib3JkZXJbaG9dKCk6bnVsbCxmPWNvbXB1dGVCYm94KHRoaXMsdSxlKSxnPXRoaXMudWlbY29dKCkuaHRtbDtpZighZyl7T2JqZWN0LmFzc2lnbihvLGQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLHUpLGYpfXRoaXNbbm9dJiYoZy5jaGlsZHJlbj8uWzBdP2cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50YWJpbmRleD10aGlzW25vXTpnLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tub10pO2cuYXR0cmlidXRlcy5zdHlsZXx8PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHA9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PWcuY2hpbGRyZW4ubGVuZ3RoJiYoW3BdPWcuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oZy5hdHRyaWJ1dGVzLnN0eWxlLGQpfWVsc2UgT2JqZWN0LmFzc2lnbihvLGQpO2gucHVzaChnKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KWcuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW2NvXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW3NvXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3dzXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW2NvXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihnLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1nLmNoaWxkcmVuWzBdLm5hbWU/Zy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6Zy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmZy5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe3M9c3x8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3dzXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bd3NdKGUpLmgpO2NvbnN0IGE9dGhpcy5oLXQtbi1zLmg7Zy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoYSl9ZWxzZSBnLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn1wJiZnLmNoaWxkcmVuLnB1c2gocCk7aWYoIXQpe2cuYXR0cmlidXRlcy5jbGFzcyYmZy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9YTt0aGlzLmg9cjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxmKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7Zy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3ModSxmKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtnLmF0dHJpYnV0ZXMuY2xhc3N8fD1bXTtnLmNoaWxkcmVuLnNwbGljZSgwLDAsdCk7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJpbmxpbmUiOmcuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7YnJlYWs7Y2FzZSJyaWdodCI6Zy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVJpZ2h0Iik7YnJlYWs7Y2FzZSJ0b3AiOmcuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFUb3AiKTticmVhaztjYXNlImJvdHRvbSI6Zy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUJvdHRvbSIpfXRoaXMudz1hO3RoaXMuaD1yO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLHUpLGYpfX1jbGFzcyBGaWxsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtob10oKXtjb25zdCBlPXRoaXNbdnNdKCksdD1lW3ZzXSgpW3ZzXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcj0iY29sb3IiLGk9cjtpZihlIGluc3RhbmNlb2YgQm9yZGVyKXtyPSJiYWNrZ3JvdW5kLWNvbG9yIjtpPSJiYWNrZ3JvdW5kIjt0IGluc3RhbmNlb2YgVWkmJihhLmJhY2tncm91bmRDb2xvcj0id2hpdGUiKX1pZihlIGluc3RhbmNlb2YgUmVjdGFuZ2xlfHxlIGluc3RhbmNlb2YgQXJjKXtyPWk9ImZpbGwiO2EuZmlsbD0id2hpdGUifWZvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJjb2xvciI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZighKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpKWNvbnRpbnVlO2NvbnN0IG49dFtob10odGhpcy5jb2xvcik7biYmKGFbbi5zdGFydHNXaXRoKCIjIik/cjppXT1uKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yPy52YWx1ZSl7Y29uc3QgZT10aGlzLmNvbG9yW2hvXSgpO2FbZS5zdGFydHNXaXRoKCIjIik/cjppXT1lfXJldHVybiBhfX1jbGFzcyBGaWx0ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImZpbHRlciIsITApO3RoaXMuYWRkUmV2b2NhdGlvbkluZm89Z2V0U3RyaW5nT3B0aW9uKGUuYWRkUmV2b2NhdGlvbkluZm8sWyIiLCJyZXF1aXJlZCIsIm9wdGlvbmFsIiwibm9uZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZlcnNpb249Z2V0SW50ZWdlcih7ZGF0YTp0aGlzLnZlcnNpb24sZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9NX0pO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1udWxsO3RoaXMuY2VydGlmaWNhdGVzPW51bGw7dGhpcy5kaWdlc3RNZXRob2RzPW51bGw7dGhpcy5lbmNvZGluZ3M9bnVsbDt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW51bGw7dGhpcy5oYW5kbGVyPW51bGw7dGhpcy5sb2NrRG9jdW1lbnQ9bnVsbDt0aGlzLm1kcD1udWxsO3RoaXMucmVhc29ucz1udWxsO3RoaXMudGltZVN0YW1wPW51bGx9fWNsYXNzIEZsb2F0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1baHNdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbc3NdLnRyaW0oKSk7dGhpc1tzc109aXNOYU4oZSk/bnVsbDplfVtjb10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3NzXT90aGlzW3NzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgdGVtcGxhdGVfRm9udCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiZm9udCIsITApO3RoaXMuYmFzZWxpbmVTaGlmdD1nZXRNZWFzdXJlbWVudChlLmJhc2VsaW5lU2hpZnQpO3RoaXMuZm9udEhvcml6b250YWxTY2FsZT1nZXRGbG9hdCh7ZGF0YTplLmZvbnRIb3Jpem9udGFsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5mb250VmVydGljYWxTY2FsZT1nZXRGbG9hdCh7ZGF0YTplLmZvbnRWZXJ0aWNhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXJuaW5nTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5rZXJuaW5nTW9kZSxbIm5vbmUiLCJwYWlyIl0pO3RoaXMubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudChlLmxldHRlclNwYWNpbmcsIjAiKTt0aGlzLmxpbmVUaHJvdWdoPWdldEludGVnZXIoe2RhdGE6ZS5saW5lVGhyb3VnaCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLmxpbmVUaHJvdWdoUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLmxpbmVUaHJvdWdoUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLm92ZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS5vdmVybGluZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLm92ZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLm92ZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnBvc3R1cmU9Z2V0U3RyaW5nT3B0aW9uKGUucG9zdHVyZSxbIm5vcm1hbCIsIml0YWxpYyJdKTt0aGlzLnNpemU9Z2V0TWVhc3VyZW1lbnQoZS5zaXplLCIxMHB0Iik7dGhpcy50eXBlZmFjZT1lLnR5cGVmYWNlfHwiQ291cmllciI7dGhpcy51bmRlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLnVuZGVybGluZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLnVuZGVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS51bmRlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndlaWdodD1nZXRTdHJpbmdPcHRpb24oZS53ZWlnaHQsWyJub3JtYWwiLCJib2xkIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGx9W3RzXShlKXtzdXBlclt0c10oZSk7dGhpc1tJc10udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W2hvXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJmaWxsIiksdD1lLmNvbG9yO2lmKHQpaWYoIiMwMDAwMDAiPT09dClkZWxldGUgZS5jb2xvcjtlbHNlIGlmKCF0LnN0YXJ0c1dpdGgoIiMiKSl7ZS5iYWNrZ3JvdW5kPXQ7ZS5iYWNrZ3JvdW5kQ2xpcD0idGV4dCI7ZS5jb2xvcj0idHJhbnNwYXJlbnQifXRoaXMuYmFzZWxpbmVTaGlmdCYmKGUudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmcodGhpcy5iYXNlbGluZVNoaWZ0KSk7ZS5mb250S2VybmluZz0ibm9uZSI9PT10aGlzLmtlcm5pbmdNb2RlPyJub25lIjoibm9ybWFsIjtlLmxldHRlclNwYWNpbmc9bWVhc3VyZVRvU3RyaW5nKHRoaXMubGV0dGVyU3BhY2luZyk7aWYoMCE9PXRoaXMubGluZVRocm91Z2gpe2UudGV4dERlY29yYXRpb249ImxpbmUtdGhyb3VnaCI7Mj09PXRoaXMubGluZVRocm91Z2gmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWlmKDAhPT10aGlzLm92ZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJvdmVybGluZSI7Mj09PXRoaXMub3ZlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFN0eWxlPXRoaXMucG9zdHVyZTtlLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyguOTkqdGhpcy5zaXplKTtzZXRGb250RmFtaWx5KHRoaXMsdGhpcyx0aGlzW0lzXS5mb250RmluZGVyLGUpO2lmKDAhPT10aGlzLnVuZGVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0idW5kZXJsaW5lIjsyPT09dGhpcy51bmRlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFdlaWdodD10aGlzLndlaWdodDtyZXR1cm4gZX19Y2xhc3MgRm9ybWF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJmb3JtYXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBIYW5kbGVyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiaHlwaGVuYXRpb24iKTt0aGlzLmV4Y2x1ZGVBbGxDYXBzPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlQWxsQ2FwcyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZXhjbHVkZUluaXRpYWxDYXA9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVJbml0aWFsQ2FwLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oeXBoZW5hdGU9Z2V0SW50ZWdlcih7ZGF0YTplLmh5cGhlbmF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wdXNoQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnB1c2hDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5yZW1haW5DaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucmVtYWluQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndvcmRDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUud29yZENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTo3LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgSW1hZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImltYWdlIik7dGhpcy5hc3BlY3Q9Z2V0U3RyaW5nT3B0aW9uKGUuYXNwZWN0LFsiZml0IiwiYWN0dWFsIiwiaGVpZ2h0Iiwibm9uZSIsIndpZHRoIl0pO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9Z2V0U3RyaW5nT3B0aW9uKGUudHJhbnNmZXJFbmNvZGluZyxbImJhc2U2NCIsIm5vbmUiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bY29dKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIUpvLmhhcyh0aGlzLmNvbnRlbnRUeXBlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBlPXRoaXNbSXNdLmltYWdlcz8uZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW3NzXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPWZ1bmN0aW9uIGZyb21CYXNlNjRVdGlsKGUpe3JldHVybiBVaW50OEFycmF5LmZyb21CYXNlNjQ/VWludDhBcnJheS5mcm9tQmFzZTY0KGUpOnN0cmluZ1RvQnl0ZXMoYXRvYihlKSl9KHRoaXNbc3NdKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGFdb2YgWW8paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGEpPT50PT09ZVthXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWE7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBhO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6YT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmE9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmE9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCByPXRoaXNbdnNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6YSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6cj9hcmlhTGFiZWwoclt2c10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bY29dKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtoc10oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbc3NdLnRyaW0oKSwxMCk7dGhpc1tzc109aXNOYU4oZSk/bnVsbDplfVtjb10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3NzXT90aGlzW3NzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtjb10oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbU3NdKCkpZS5wdXNoKHRbc29dKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtjb10oKXtjb25zdCBlPXRoaXNbdnNdKClbdnNdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxhPXRbaG9dKCkscj1PYmplY3QuY3JlYXRlKG51bGwpLGk9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO3Iuc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGkpO3Iuc3Ryb2tlPWEuY29sb3I7bGV0IG4scyxvLGMsbD0iMTAwJSIsaD0iMTAwJSI7aWYoZS53PD1pKXtbbixzLG8sY109WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtsPXIuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PWkpe1tuLHMsbyxjXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2g9ci5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W24scyxvLGNdPVswLDAsIjEwMCUiLCIxMDAlIl06W24scyxvLGNdPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgdT17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOlZvLHgxOm4seTE6cyx4MjpvLHkyOmMsc3R5bGU6cn19XSxhdHRyaWJ1dGVzOnt4bWxuczpWbyx3aWR0aDpsLGhlaWdodDpoLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbdV19KTt1LmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHUpfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImxpbmVhciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b1JpZ2h0IiwidG9Cb3R0b20iLCJ0b0xlZnQiLCJ0b1RvcCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2hvXShlKXtlPWU/ZVtob10oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltob10oKToiIzAwMDAwMCJ9KWB9fWNsYXNzIExvY2tEb2N1bWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1baHNdKCl7dGhpc1tzc109Z2V0U3RyaW5nT3B0aW9uKHRoaXNbc3NdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywibWFuaWZlc3QiLCEwKTt0aGlzLmFjdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJtYXJnaW4iLCEwKTt0aGlzLmJvdHRvbUluc2V0PWdldE1lYXN1cmVtZW50KGUuYm90dG9tSW5zZXQsIjAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVmdEluc2V0PWdldE1lYXN1cmVtZW50KGUubGVmdEluc2V0LCIwIik7dGhpcy5yaWdodEluc2V0PWdldE1lYXN1cmVtZW50KGUucmlnaHRJbnNldCwiMCIpO3RoaXMudG9wSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS50b3BJbnNldCwiMCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtob10oKXtyZXR1cm57bWFyZ2luOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRvcEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMucmlnaHRJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmJvdHRvbUluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywibWRwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBlcm1pc3Npb25zPWdldEludGVnZXIoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KTt0aGlzLnNpZ25hdHVyZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lZGl1bSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUuc3BsaXQoIiwiLDQpLm1hcCgoZT0+Z2V0TWVhc3VyZW1lbnQoZS50cmltKCksIi0xIikpKTtpZihhLmxlbmd0aDw0fHxhWzJdPDB8fGFbM108MClyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdFtyLGksbixzXT1hO3JldHVybnt4OnIseTppLHdpZHRoOm4saGVpZ2h0OnN9fShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9Z2V0TWVhc3VyZW1lbnQoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD1nZXRNZWFzdXJlbWVudChlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPWdldFN0cmluZ09wdGlvbihlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9Z2V0U3RyaW5nT3B0aW9uKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sIm1lc3NhZ2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywibnVtZXJpY0VkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bY29dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksYT10aGlzW3ZzXSgpW3ZzXSgpLHI9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbdW9dLGRhdGFJZDphW29zXT8uW3VvXXx8YVt1b10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7ci5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7ci5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltyXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywib2NjdXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5pdGlhbD0iIiE9PWUuaW5pdGlhbD9nZXRJbnRlZ2VyKHtkYXRhOmUuaW5pdGlhbCxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1heD0iIiE9PWUubWF4P2dldEludGVnZXIoe2RhdGE6ZS5tYXgsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1pbj0iIiE9PWUubWluP2dldEludGVnZXIoe2RhdGE6ZS5taW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bdHNdKCl7Y29uc3QgZT10aGlzW3ZzXSgpLHQ9dGhpcy5taW47IiI9PT10aGlzLm1pbiYmKHRoaXMubWluPWUgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/MDoxKTsiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/LTE6MTp0aGlzLm1pbik7LTEhPT10aGlzLm1heCYmdGhpcy5tYXg8dGhpcy5taW4mJih0aGlzLm1heD10aGlzLm1pbik7IiI9PT10aGlzLmluaXRpYWwmJih0aGlzLmluaXRpYWw9ZSBpbnN0YW5jZW9mIFRlbXBsYXRlPzE6dGhpcy5taW4pfX1jbGFzcyBPaWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJvaWRzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sIm92ZXJmbG93Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bd3NdKCl7aWYoIXRoaXNbbHNdKXtjb25zdCBlPXRoaXNbdnNdKCksdD10aGlzW0ZzXSgpLGE9dFt0b10odGhpcy50YXJnZXQsZSkscj10W3RvXSh0aGlzLmxlYWRlcixlKSxpPXRbdG9dKHRoaXMudHJhaWxlcixlKTt0aGlzW2xzXT17dGFyZ2V0OmE/LlswXXx8bnVsbCxsZWFkZXI6cj8uWzBdfHxudWxsLHRyYWlsZXI6aT8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tsc119fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJwYWdlQXJlYSIsITApO3RoaXMuYmxhbmtPck5vdEJsYW5rPWdldFN0cmluZ09wdGlvbihlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWxOdW1iZXI9Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm51bWJlcmVkPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJlZCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMub2RkT3JFdmVuPWdldFN0cmluZ09wdGlvbihlLm9kZE9yRXZlbixbImFueSIsImV2ZW4iLCJvZGQiXSk7dGhpcy5wYWdlUG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucGFnZVBvc2l0aW9uLFsiYW55IiwiZmlyc3QiLCJsYXN0Iiwib25seSIsInJlc3QiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lZGl1bT1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W1hzXSgpe2lmKCF0aGlzW2xzXSl7dGhpc1tsc109e251bWJlck9mVXNlOjB9O3JldHVybiEwfXJldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW2xzXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bYXNdKCl7ZGVsZXRlIHRoaXNbbHNdfVtBc10oKXt0aGlzW2xzXXx8PXtudW1iZXJPZlVzZTowfTtjb25zdCBlPXRoaXNbdnNdKCk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PWUucmVsYXRpb24mJnRoaXNbWHNdKCkpe3RoaXNbbHNdLm51bWJlck9mVXNlKz0xO3JldHVybiB0aGlzfXJldHVybiBlW0FzXSgpfVtnc10oKXtyZXR1cm4gdGhpc1tsc10uc3BhY2V8fHt3aWR0aDowLGhlaWdodDowfX1bY29dKCl7dGhpc1tsc118fD17bnVtYmVyT2ZVc2U6MX07Y29uc3QgZT1bXTt0aGlzW2xzXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tsc10uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbbHNdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tlc10oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbZXNdKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1t1b10sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W2FzXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVthc10oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVthc10oKX1bWHNdKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbbHNdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtBc10oKXt0aGlzW2xzXXx8PXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9O2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT10aGlzLnJlbGF0aW9uKXtpZih0aGlzW2xzXS5wYWdlSW5kZXgrMTx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tsc10ucGFnZUluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuW3RoaXNbbHNdLnBhZ2VJbmRleF1bQXNdKCl9aWYodGhpc1tsc10ucGFnZVNldEluZGV4KzE8dGhpcy5wYWdlU2V0LmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tsc10ucGFnZVNldEluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW5bdGhpc1tsc10ucGFnZVNldEluZGV4XVtBc10oKX1pZih0aGlzW1hzXSgpKXt0aGlzW2xzXS5udW1iZXJPZlVzZSs9MTt0aGlzW2xzXS5wYWdlSW5kZXg9LTE7dGhpc1tsc10ucGFnZVNldEluZGV4PS0xO3JldHVybiB0aGlzW0FzXSgpfWNvbnN0IGU9dGhpc1t2c10oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtBc10oKTt0aGlzW2FzXSgpO3JldHVybiB0aGlzW0FzXSgpfWNvbnN0IGU9dGhpc1tGc10oKVtsc10ucGFnZU51bWJlcix0PWUlMj09MD8iZXZlbiI6Im9kZCIsYT0wPT09ZT8iZmlyc3QiOiJyZXN0IjtsZXQgcj10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PmUub2RkT3JFdmVuPT09dCYmZS5wYWdlUG9zaXRpb249PT1hKSk7aWYocilyZXR1cm4gcjtyPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmZS5wYWdlUG9zaXRpb249PT1hKSk7aWYocilyZXR1cm4gcjtyPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmImFueSI9PT1lLnBhZ2VQb3NpdGlvbikpO3JldHVybiByfHx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuWzBdfX1jbGFzcyBQYXJhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz1nZXRJbnRlZ2VyKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/Z2V0TWVhc3VyZW1lbnQoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT9nZXRNZWFzdXJlbWVudChlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0P2dldE1lYXN1cmVtZW50KHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xP2dldE1lYXN1cmVtZW50KGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50P2dldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPWdldFN0cmluZ09wdGlvbihlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz1nZXRJbnRlZ2VyKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W2hvXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJoQWxpZ24iKTsiIiE9PXRoaXMubWFyZ2luTGVmdCYmKGUucGFkZGluZ0xlZnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luTGVmdCkpOyIiIT09dGhpcy5tYXJnaW5SaWdodCYmKGUucGFkZGluZ1JpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpblJpZ2h0KSk7IiIhPT10aGlzLnNwYWNlQWJvdmUmJihlLnBhZGRpbmdUb3A9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc3BhY2VBYm92ZSkpOyIiIT09dGhpcy5zcGFjZUJlbG93JiYoZS5wYWRkaW5nQm90dG9tPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQmVsb3cpKTtpZigiIiE9PXRoaXMudGV4dEluZGVudCl7ZS50ZXh0SW5kZW50PW1lYXN1cmVUb1N0cmluZyh0aGlzLnRleHRJbmRlbnQpO2ZpeFRleHRJbmRlbnQoZSl9dGhpcy5saW5lSGVpZ2h0PjAmJihlLmxpbmVIZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubGluZUhlaWdodCkpOyIiIT09dGhpcy50YWJEZWZhdWx0JiYoZS50YWJTaXplPW1lYXN1cmVUb1N0cmluZyh0aGlzLnRhYkRlZmF1bHQpKTt0aGlzLnRhYlN0b3BzLmxlbmd0aDt0aGlzLmh5cGhlbmF0YXRpb24mJk9iamVjdC5hc3NpZ24oZSx0aGlzLmh5cGhlbmF0YXRpb25baG9dKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInBhc3N3b3JkRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wYXNzd29yZENoYXI9ZS5wYXNzd29yZENoYXJ8fCIqIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIHRlbXBsYXRlX1BhdHRlcm4gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInBhdHRlcm4iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsiY3Jvc3NIYXRjaCIsImNyb3NzRGlhZ29uYWwiLCJkaWFnb25hbExlZnQiLCJkaWFnb25hbFJpZ2h0IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1baG9dKGUpe2U9ZT9lW2hvXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltob10oKToiIzAwMDAwMCIsYT0icmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIscj1gJHtlfSwke2V9IDVweCwke3R9IDVweCwke3R9IDEwcHhgO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiY3Jvc3NIYXRjaCI6cmV0dXJuYCR7YX0odG8gdG9wLCR7cn0pICR7YX0odG8gcmlnaHQsJHtyfSlgO2Nhc2UiY3Jvc3NEaWFnb25hbCI6cmV0dXJuYCR7YX0oNDVkZWcsJHtyfSkgJHthfSgtNDVkZWcsJHtyfSlgO2Nhc2UiZGlhZ29uYWxMZWZ0IjpyZXR1cm5gJHthfSg0NWRlZywke3J9KWA7Y2FzZSJkaWFnb25hbFJpZ2h0IjpyZXR1cm5gJHthfSgtNDVkZWcsJHtyfSlgO2Nhc2UiaG9yaXpvbnRhbCI6cmV0dXJuYCR7YX0odG8gdG9wLCR7cn0pYDtjYXNlInZlcnRpY2FsIjpyZXR1cm5gJHthfSh0byByaWdodCwke3J9KWB9cmV0dXJuIiJ9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInByb3RvIiwhMCk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFzc2lzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29rZW5kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9yZGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnV0dG9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYXB0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jaGVja0J1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jaG9pY2VMaXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbWI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZUVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVzYz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kaWdlc3RNZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2RpbmdzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhlY3V0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9udD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaGFuZGxlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5oeXBoZW5hdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZUVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLml0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtlZXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lYXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hcmdpbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWVkaXVtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lc3NhZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2NjdXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub3ZlcmZsb3c9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXJhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhc3N3b3JkRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBpY3R1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmFkaWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb25zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlY3RhbmdsZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25hdHVyZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNwZWFrPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN0aXBwbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmplY3RETj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZVN0YW1wPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhdmVyc2FsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhbGlkYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhbHVlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJhZGlhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1baG9dKGUpe2U9ZT9lW2hvXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltob10oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInJlYXNvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSZWFzb25zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJyZWFzb25zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucmVhc29uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUmVjdGFuZ2xlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJyZWN0YW5nbGUiLCEwKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W2NvXSgpe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLmxlbmd0aD90aGlzLmVkZ2UuY2hpbGRyZW5bMF06bmV3IEVkZ2Uoe30pLHQ9ZVtob10oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW2hvXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7Y29uc3Qgcj0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtob10oKSxpPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToicmVjdCIsYXR0cmlidXRlczp7eG1sbnM6Vm8sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDpyLnJhZGl1cyxyeTpyLnJhZGl1cyxzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOlZvLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbdnNdKClbdnNdKCkpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaV19KTtpLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGkpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJyZWYiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2NyaXB0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJzY3JpcHQiKTt0aGlzLmJpbmRpbmc9ZS5iaW5kaW5nfHwiIjt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTZXRQcm9wZXJ0eSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX1jbGFzcyBTaWduRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJzaWduYXR1cmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsiUERGMS4zIiwiUERGMS42Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgU2lnbmluZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywic2lnbmluZyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU29saWQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInNvbGlkIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1baG9dKGUpe3JldHVybiBlP2VbaG9dKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywic3BlYWsiKTt0aGlzLmRpc2FibGU9Z2V0SW50ZWdlcih7ZGF0YTplLmRpc2FibGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJpb3JpdHk9Z2V0U3RyaW5nT3B0aW9uKGUucHJpb3JpdHksWyJjdXN0b20iLCJjYXB0aW9uIiwibmFtZSIsInRvb2xUaXAiXSk7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU3RpcHBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywic3RpcHBsZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yYXRlPWdldEludGVnZXIoe2RhdGE6ZS5yYXRlLGRlZmF1bHRWYWx1ZTo1MCx2YWxpZGF0ZTplPT5lPj0wJiZlPD0xMDB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2hvXShlKXtjb25zdCB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywic3ViZm9ybSIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWxsb3dNYWNybz1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dNYWNybyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmNvbHVtbldpZHRocz0oZS5jb2x1bW5XaWR0aHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+Ii0xIj09PWU/LTE6Z2V0TWVhc3VyZW1lbnQoZSkpKTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWVyZ2VNb2RlPWdldFN0cmluZ09wdGlvbihlLm1lcmdlTW9kZSxbImNvbnN1bWVEYXRhIiwibWF0Y2hUZW1wbGF0ZSJdKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yZXN0b3JlU3RhdGU9Z2V0U3RyaW5nT3B0aW9uKGUucmVzdG9yZVN0YXRlLFsibWFudWFsIiwiYXV0byJdKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsibmFtZSIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5wYWdlU2V0PW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YXJpYWJsZXM9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnByb3RvPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W0NzXSgpe2NvbnN0IGU9dGhpc1t2c10oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtDc10oKTplfVtSc10oKXtyZXR1cm4hMH1bX3NdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbbHNdLmF0dGVtcHQmJnRoaXNbbHNdLm51bWJlckluTGluZT4wfHx0aGlzW3ZzXSgpW19zXSgpfSpba3NdKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3VzXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W1puXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtnc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W2pzXSgpe2NvbnN0IGU9dGhpc1tDc10oKTtpZighZVtqc10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW2xzXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW2xzXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW2xzXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKHRoaXMua2VlcCYmIm5vbmUiIT09dGhpcy5rZWVwLmludGFjdCl7dGhpc1tsc10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtsc10ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbbHNdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W2NvXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW0lzXT10aGlzW0lzXTt0aGlzW1FuXShlKTt0aGlzLmJyZWFrQWZ0ZXIucHVzaChlKX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtCZWZvcmUoe3RhcmdldFR5cGU6dGhpcy5icmVhay5iZWZvcmUsdGFyZ2V0OnRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2VbSXNdPXRoaXNbSXNdO3RoaXNbUW5dKGUpO3RoaXMuYnJlYWtCZWZvcmUucHVzaChlKX1pZigiIiE9PXRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQpe2NvbnN0IGU9bmV3IE92ZXJmbG93KHt0YXJnZXQ6dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCxsZWFkZXI6dGhpcy5icmVhay5vdmVyZmxvd0xlYWRlcix0cmFpbGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dUcmFpbGVyfSk7ZVtJc109dGhpc1tJc107dGhpc1tRbl0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbWnNdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZOyh0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD4xfHx0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPjEpJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIGJyZWFrQmVmb3JlIG9yIGJyZWFrQWZ0ZXIgaW4gc3ViZm9ybXM6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO2lmKHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpcmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKHRoaXNbbHNdPy5hZnRlckJyZWFrQWZ0ZXIpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLGE9e2lkOnRoaXNbdW9dLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxhLmNsYXNzKTt0aGlzW2xzXXx8PU9iamVjdC5jcmVhdGUobnVsbCk7T2JqZWN0LmFzc2lnbih0aGlzW2xzXSx7Y2hpbGRyZW46dCxsaW5lOm51bGwsYXR0cmlidXRlczphLGF0dGVtcHQ6MCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCByPXRoaXNbRnNdKCksaT1yW2xzXS5ub0xheW91dEZhaWx1cmUsbj10aGlzW2pzXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHM9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tDc10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tsc10uY29sdW1uV2lkdGhzPWU7dGhpc1tsc10uY3VycmVudENvbHVtbj0wfX1jb25zdCBvPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksYz1bInhmYVN1YmZvcm0iXSxsPWxheW91dENsYXNzKHRoaXMpO2wmJmMucHVzaChsKTthLnN0eWxlPW87YS5jbGFzcz1jO3RoaXMubmFtZSYmKGEueGZhTmFtZT10aGlzLm5hbWUpO2lmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1t3c10oKTtpZih0LmFkZExlYWRlcil7dC5hZGRMZWFkZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LmxlYWRlcixlKX19dGhpc1tZc10oKTtjb25zdCBoPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LHU9aD8yOjE7Zm9yKDt0aGlzW2xzXS5hdHRlbXB0PHU7dGhpc1tsc10uYXR0ZW1wdCsrKXtoJiYxPT09dGhpc1tsc10uYXR0ZW1wdCYmKHRoaXNbbHNdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbZXNdKHtmaWx0ZXI6cyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW0pzXSgpO3JldHVybiBlfWlmKGgmJjA9PT10aGlzW2xzXS5hdHRlbXB0JiYwPT09dGhpc1tsc10ubnVtYmVySW5MaW5lJiYhcltsc10ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW2xzXS5hdHRlbXB0PXU7YnJlYWt9fXRoaXNbSnNdKCk7bnx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtyW2xzXS5ub0xheW91dEZhaWx1cmU9aTtpZih0aGlzW2xzXS5hdHRlbXB0PT09dSl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbRnNdKClbbHNdLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtufHxkZWxldGUgdGhpc1tsc107cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbd3NdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBkPTAsZj0wO2lmKHRoaXMubWFyZ2luKXtkPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2Y9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgZz1NYXRoLm1heCh0aGlzW2xzXS53aWR0aCtkLHRoaXMud3x8MCkscD1NYXRoLm1heCh0aGlzW2xzXS5oZWlnaHQrZix0aGlzLmh8fDApLG09W3RoaXMueCx0aGlzLnksZyxwXTsiIj09PXRoaXMudyYmKG8ud2lkdGg9bWVhc3VyZVRvU3RyaW5nKGcpKTsiIj09PXRoaXMuaCYmKG8uaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhwKSk7aWYoKCIwcHgiPT09by53aWR0aHx8IjBweCI9PT1vLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtjb25zdCBiPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6YSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGEpO2NvbnN0IHk9SFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxiKSxtKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1tsc10uYWZ0ZXJCcmVha0FmdGVyPXk7cmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tsc107cmV0dXJuIHl9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltrc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bQ3NdKCl7bGV0IGU9dGhpc1t2c10oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbdnNdKCk7cmV0dXJuIGV9W1JzXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtoc10oKXt0aGlzW3NzXT1uZXcgTWFwKHRoaXNbc3NdLnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5tYXAoKGU9PnsoZT1lLnNwbGl0KCI9IiwyKSlbMF09ZVswXS50cmltKCk7cmV0dXJuIGV9KSkpfX1jbGFzcyBTdWJqZWN0RE5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU3VibWl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPWdldEludGVnZXIoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz1nZXRLZXl3b3JkKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZVByb2ZpbGU9Z2V0U3RyaW5nT3B0aW9uKGUuYmFzZVByb2ZpbGUsWyJmdWxsIiwiaW50ZXJhY3RpdmVGb3JtcyJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W2hzXSgpezA9PT10aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoJiZ3YXJuKCJYRkEgLSBObyBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlLiIpO3RoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTImJndhcm4oIlhGQSAtIFNldmVyYWwgc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tub109NWUzfVtqc10oKXtyZXR1cm4hMH1bdG9dKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiIyIpP1t0aGlzW09zXS5nZXQoZS5zbGljZSgxKSldOnNlYXJjaE5vZGUodGhpcyx0LGUsITAsITApfSpbb29dKCl7aWYoIXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbbHNdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W2FzXSgpO2NvbnN0IHQ9ZS5wYWdlU2V0LnBhZ2VBcmVhLmNoaWxkcmVuLGE9e25hbWU6ImRpdiIsY2hpbGRyZW46W119O2xldCByPW51bGwsaT1udWxsLG49bnVsbDtpZihlLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO249aS50YXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtpPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtuPWkudGFyZ2V0fWVsc2UgaWYoZS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7bj1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtpPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaztuPWkuYmVmb3JlVGFyZ2V0fWlmKGkpe2NvbnN0IGU9dGhpc1t0b10obixpW3ZzXSgpKTtpZihlIGluc3RhbmNlb2YgUGFnZUFyZWEpe3I9ZTtpW2xzXT17fX19cnx8PXRbMF07cltsc109e251bWJlck9mVXNlOjF9O2NvbnN0IHM9clt2c10oKTtzW2xzXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6cy5wYWdlQXJlYS5jaGlsZHJlbi5pbmRleE9mKHIpLHBhZ2VTZXRJbmRleDowfTtsZXQgbyxjPW51bGwsbD1udWxsLGg9ITAsdT0wLGQ9MDtmb3IoOzspe2lmKGgpdT0wO2Vsc2V7YS5jaGlsZHJlbi5wb3AoKTtpZigzPT0rK3Upe3dhcm4oIlhGQSAtIFNvbWV0aGluZyBnb2VzIHdyb25nOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtyZXR1cm4gYX19bz1udWxsO3RoaXNbbHNdLmN1cnJlbnRQYWdlQXJlYT1yO2NvbnN0IHQ9cltjb10oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZihjKXt0aGlzW2xzXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGNbY29dKHJbbHNdLnNwYWNlKS5odG1sKTtjPW51bGx9aWYobCl7dGhpc1tsc10ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChsW2NvXShyW2xzXS5zcGFjZSkuaHRtbCk7bD1udWxsfWNvbnN0IGk9ci5jb250ZW50QXJlYS5jaGlsZHJlbixuPXQuY2hpbGRyZW4uZmlsdGVyKChlPT5lLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYUNvbnRlbnRhcmVhIikpKTtoPSExO3RoaXNbbHNdLmZpcnN0VW5zcGxpdHRhYmxlPW51bGw7dGhpc1tsc10ubm9MYXlvdXRGYWlsdXJlPSExO2NvbnN0IGZsdXNoPXQ9Pntjb25zdCBhPWVbdXNdKCk7aWYoYSl7aHx8PWEuY2hpbGRyZW4/Lmxlbmd0aD4wO25bdF0uY2hpbGRyZW4ucHVzaChhKX19O2ZvcihsZXQgdD1kLHI9aS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj10aGlzW2xzXS5jdXJyZW50Q29udGVudEFyZWE9aVt0XSxzPXt3aWR0aDpyLncsaGVpZ2h0OnIuaH07ZD0wO2lmKGMpe25bdF0uY2hpbGRyZW4ucHVzaChjW2NvXShzKS5odG1sKTtjPW51bGx9aWYobCl7blt0XS5jaGlsZHJlbi5wdXNoKGxbY29dKHMpLmh0bWwpO2w9bnVsbH1jb25zdCB1PWVbY29dKHMpO2lmKHUuc3VjY2Vzcyl7aWYodS5odG1sKXtofHw9dS5odG1sLmNoaWxkcmVuPy5sZW5ndGg+MDtuW3RdLmNoaWxkcmVuLnB1c2godS5odG1sKX1lbHNlIWgmJmEuY2hpbGRyZW4ubGVuZ3RoPjEmJmEuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGF9aWYodS5pc0JyZWFrKCkpe2NvbnN0IGU9dS5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXtjPXRoaXNbdG9dKGUubGVhZGVyLGVbdnNdKCkpO2M9Yz9jWzBdOm51bGx9aWYoZS50cmFpbGVyKXtsPXRoaXNbdG9dKGUudHJhaWxlcixlW3ZzXSgpKTtsPWw/bFswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe289ZVtsc10udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtsc10udGFyZ2V0KXtvPWVbbHNdLnRhcmdldDtkPWVbbHNdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbbHNdLmluZGV4fWVsc2UgaWYodGhpc1tsc10ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbbHNdLm92ZXJmbG93Tm9kZTt0aGlzW2xzXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBhPWVbd3NdKCkscj1hLnRhcmdldDthLmFkZExlYWRlcj1udWxsIT09YS5sZWFkZXI7YS5hZGRUcmFpbGVyPW51bGwhPT1hLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgbj10O3Q9MS8wO2lmKHIgaW5zdGFuY2VvZiBQYWdlQXJlYSlvPXI7ZWxzZSBpZihyIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9aS5pbmRleE9mKHIpO2lmKC0xIT09ZSllPm4/dD1lLTE6ZD1lO2Vsc2V7bz1yW3ZzXSgpO2Q9by5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKHIpfX19ZWxzZSBmbHVzaCh0KX10aGlzW2xzXS5wYWdlTnVtYmVyKz0xO28mJihvW1hzXSgpP29bbHNdLm51bWJlck9mVXNlKz0xOm89bnVsbCk7cj1vfHxyW0FzXSgpO3lpZWxkIG51bGx9fX1jbGFzcyBUZXh0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywidGV4dCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhDaGFycz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4Q2hhcnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1luXSgpe3JldHVybiEwfVskc10oZSl7aWYoZVtIc109PT1nby54aHRtbC5pZCl7dGhpc1tzc109ZTtyZXR1cm4hMH13YXJuKGBYRkEgLSBJbnZhbGlkIGNvbnRlbnQgaW4gVGV4dDogJHtlW1dzXX0uYCk7cmV0dXJuITF9W1ZzXShlKXt0aGlzW3NzXWluc3RhbmNlb2YgWEZBT2JqZWN0fHxzdXBlcltWc10oZSl9W2hzXSgpeyJzdHJpbmciPT10eXBlb2YgdGhpc1tzc10mJih0aGlzW3NzXT10aGlzW3NzXS5yZXBsYWNlQWxsKCJcclxuIiwiXG4iKSl9W3dzXSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpc1tzc10/dGhpc1tzc10uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5maWx0ZXIoKGU9PiEhZSkpLmpvaW4oIlxuIik6dGhpc1tzc11bc29dKCl9W2NvXShlKXtpZigic3RyaW5nIj09dHlwZW9mIHRoaXNbc3NdKXtjb25zdCBlPXZhbHVlVG9IdG1sKHRoaXNbc3NdKS5odG1sO2lmKHRoaXNbc3NdLmluY2x1ZGVzKCJcdTIwMjkiKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tzc10uc3BsaXQoIlx1MjAyOSIpLm1hcCgoZT0+ZS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZsYXRNYXAoKGU9Plt7bmFtZToic3BhbiIsdmFsdWU6ZX0se25hbWU6ImJyIn1dKSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW3NzXSkpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbc3NdLnNwbGl0KC9bXHUyMDI4XG5dLykuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pfSkpfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbc3NdW2NvXShlKX19Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInRleHRFZGl0IiwhMCk7dGhpcy5hbGxvd1JpY2hUZXh0PWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd1JpY2hUZXh0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm11bHRpTGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUubXVsdGlMaW5lLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4wPT09ZXx8MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52U2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLnZTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2NvXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpO2xldCBhO2NvbnN0IHI9dGhpc1t2c10oKVt2c10oKTsiIj09PXRoaXMubXVsdGlMaW5lJiYodGhpcy5tdWx0aUxpbmU9ciBpbnN0YW5jZW9mIERyYXc/MTowKTthPTE9PT10aGlzLm11bHRpTGluZT97bmFtZToidGV4dGFyZWEiLGF0dHJpYnV0ZXM6e2RhdGFJZDpyW29zXT8uW3VvXXx8clt1b10sZmllbGRJZDpyW3VvXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChyKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTp7bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGRhdGFJZDpyW29zXT8uW3VvXXx8clt1b10sZmllbGRJZDpyW3VvXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChyKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKHIpKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1baHNdKCl7Y29uc3QgZT10aGlzW3NzXS50cmltKCk7dGhpc1tzc109ZT9uZXcgRGF0ZShlKTpudWxsfVtjb10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbc3NdP3RoaXNbc3NdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBUaW1lU3RhbXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInRpbWVTdGFtcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zZXJ2ZXI9ZS5zZXJ2ZXJ8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRvb2xUaXAgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywidHJhdmVyc2FsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInRyYXZlcnNlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtVc10oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLmJhcmNvZGU9bnVsbDt0aGlzLmJ1dHRvbj1udWxsO3RoaXMuY2hlY2tCdXR0b249bnVsbDt0aGlzLmNob2ljZUxpc3Q9bnVsbDt0aGlzLmRhdGVUaW1lRWRpdD1udWxsO3RoaXMuZGVmYXVsdFVpPW51bGw7dGhpcy5pbWFnZUVkaXQ9bnVsbDt0aGlzLm51bWVyaWNFZGl0PW51bGw7dGhpcy5wYXNzd29yZEVkaXQ9bnVsbDt0aGlzLnNpZ25hdHVyZT1udWxsO3RoaXMudGV4dEVkaXQ9bnVsbH1bd3NdKCl7aWYodm9pZCAwPT09dGhpc1tsc10pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbbHNdPXQ7cmV0dXJuIHR9fXRoaXNbbHNdPW51bGx9cmV0dXJuIHRoaXNbbHNdfVtjb10oZSl7Y29uc3QgdD10aGlzW3dzXSgpO3JldHVybiB0P3RbY29dKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEdvLCJ2YWxpZGF0ZSIsITApO3RoaXMuZm9ybWF0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXRUZXN0LFsid2FybmluZyIsImRpc2FibGVkIiwiZXJyb3IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bGxUZXN0PWdldFN0cmluZ09wdGlvbihlLm51bGxUZXN0LFsiZGlzYWJsZWQiLCJlcnJvciIsIndhcm5pbmciXSk7dGhpcy5zY3JpcHRUZXN0PWdldFN0cmluZ09wdGlvbihlLnNjcmlwdFRlc3QsWyJlcnJvciIsImRpc2FibGVkIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBWYWx1ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihHbywidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W2lvXShlKXtjb25zdCB0PXRoaXNbdnNdKCk7aWYodCBpbnN0YW5jZW9mIEZpZWxkJiZ0LnVpPy5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tRbl0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtzc109ZVtzc107cmV0dXJufWNvbnN0IGE9ZVtXc107aWYobnVsbD09PXRoaXNbYV0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbWnNdKHQpfX10aGlzW2VbV3NdXT1lO3RoaXNbUW5dKGUpfWVsc2UgdGhpc1thXVtzc109ZVtzc119W3NvXSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbc3NdP3RoaXMuZXhEYXRhW3NzXS50cmltKCk6dGhpcy5leERhdGFbc3NdW3NvXSgpLnRyaW0oKTtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImltYWdlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuKHRbc3NdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W2NvXShlKXtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgYT10aGlzW3RdO2lmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuIGFbY29dKGUpfXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYXJpYWJsZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoR28sInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W1VzXSgpe3JldHVybiEwfX1jbGFzcyBUZW1wbGF0ZU5hbWVzcGFjZXtzdGF0aWNbZm9dKGUsdCl7aWYoVGVtcGxhdGVOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpe2NvbnN0IGE9VGVtcGxhdGVOYW1lc3BhY2VbZV0odCk7YVtyb10odCk7cmV0dXJuIGF9fXN0YXRpYyBhcHBlYXJhbmNlRmlsdGVyKGUpe3JldHVybiBuZXcgQXBwZWFyYW5jZUZpbHRlcihlKX1zdGF0aWMgYXJjKGUpe3JldHVybiBuZXcgQXJjKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgQXJlYShlKX1zdGF0aWMgYXNzaXN0KGUpe3JldHVybiBuZXcgQXNzaXN0KGUpfXN0YXRpYyBiYXJjb2RlKGUpe3JldHVybiBuZXcgQmFyY29kZShlKX1zdGF0aWMgYmluZChlKXtyZXR1cm4gbmV3IEJpbmQoZSl9c3RhdGljIGJpbmRJdGVtcyhlKXtyZXR1cm4gbmV3IEJpbmRJdGVtcyhlKX1zdGF0aWMgYm9va2VuZChlKXtyZXR1cm4gbmV3IEJvb2tlbmQoZSl9c3RhdGljIGJvb2xlYW4oZSl7cmV0dXJuIG5ldyBCb29sZWFuRWxlbWVudChlKX1zdGF0aWMgYm9yZGVyKGUpe3JldHVybiBuZXcgQm9yZGVyKGUpfXN0YXRpYyBicmVhayhlKXtyZXR1cm4gbmV3IEJyZWFrKGUpfXN0YXRpYyBicmVha0FmdGVyKGUpe3JldHVybiBuZXcgQnJlYWtBZnRlcihlKX1zdGF0aWMgYnJlYWtCZWZvcmUoZSl7cmV0dXJuIG5ldyBCcmVha0JlZm9yZShlKX1zdGF0aWMgYnV0dG9uKGUpe3JldHVybiBuZXcgQnV0dG9uKGUpfXN0YXRpYyBjYWxjdWxhdGUoZSl7cmV0dXJuIG5ldyBDYWxjdWxhdGUoZSl9c3RhdGljIGNhcHRpb24oZSl7cmV0dXJuIG5ldyBDYXB0aW9uKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZShlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZXMoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZXMoZSl9c3RhdGljIGNoZWNrQnV0dG9uKGUpe3JldHVybiBuZXcgQ2hlY2tCdXR0b24oZSl9c3RhdGljIGNob2ljZUxpc3QoZSl7cmV0dXJuIG5ldyBDaG9pY2VMaXN0KGUpfXN0YXRpYyBjb2xvcihlKXtyZXR1cm4gbmV3IENvbG9yKGUpfXN0YXRpYyBjb21iKGUpe3JldHVybiBuZXcgQ29tYihlKX1zdGF0aWMgY29ubmVjdChlKXtyZXR1cm4gbmV3IENvbm5lY3QoZSl9c3RhdGljIGNvbnRlbnRBcmVhKGUpe3JldHVybiBuZXcgQ29udGVudEFyZWEoZSl9c3RhdGljIGNvcm5lcihlKXtyZXR1cm4gbmV3IENvcm5lcihlKX1zdGF0aWMgZGF0ZShlKXtyZXR1cm4gbmV3IERhdGVFbGVtZW50KGUpfXN0YXRpYyBkYXRlVGltZShlKXtyZXR1cm4gbmV3IERhdGVUaW1lKGUpfXN0YXRpYyBkYXRlVGltZUVkaXQoZSl7cmV0dXJuIG5ldyBEYXRlVGltZUVkaXQoZSl9c3RhdGljIGRlY2ltYWwoZSl7cmV0dXJuIG5ldyBEZWNpbWFsKGUpfXN0YXRpYyBkZWZhdWx0VWkoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VWkoZSl9c3RhdGljIGRlc2MoZSl7cmV0dXJuIG5ldyBEZXNjKGUpfXN0YXRpYyBkaWdlc3RNZXRob2QoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2QoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZHMoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2RzKGUpfXN0YXRpYyBkcmF3KGUpe3JldHVybiBuZXcgRHJhdyhlKX1zdGF0aWMgZWRnZShlKXtyZXR1cm4gbmV3IEVkZ2UoZSl9c3RhdGljIGVuY29kaW5nKGUpe3JldHVybiBuZXcgRW5jb2RpbmcoZSl9c3RhdGljIGVuY29kaW5ncyhlKXtyZXR1cm4gbmV3IEVuY29kaW5ncyhlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHREYXRhKGUpe3JldHVybiBuZXcgRW5jcnlwdERhdGEoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZChlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZHMoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kcyhlKX1zdGF0aWMgZXZlbnQoZSl7cmV0dXJuIG5ldyBFdmVudChlKX1zdGF0aWMgZXhEYXRhKGUpe3JldHVybiBuZXcgRXhEYXRhKGUpfXN0YXRpYyBleE9iamVjdChlKXtyZXR1cm4gbmV3IEV4T2JqZWN0KGUpfXN0YXRpYyBleGNsR3JvdXAoZSl7cmV0dXJuIG5ldyBFeGNsR3JvdXAoZSl9c3RhdGljIGV4ZWN1dGUoZSl7cmV0dXJuIG5ldyBFeGVjdXRlKGUpfXN0YXRpYyBleHRyYXMoZSl7cmV0dXJuIG5ldyBFeHRyYXMoZSl9c3RhdGljIGZpZWxkKGUpe3JldHVybiBuZXcgRmllbGQoZSl9c3RhdGljIGZpbGwoZSl7cmV0dXJuIG5ldyBGaWxsKGUpfXN0YXRpYyBmaWx0ZXIoZSl7cmV0dXJuIG5ldyBGaWx0ZXIoZSl9c3RhdGljIGZsb2F0KGUpe3JldHVybiBuZXcgRmxvYXQoZSl9c3RhdGljIGZvbnQoZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9Gb250KGUpfXN0YXRpYyBmb3JtYXQoZSl7cmV0dXJuIG5ldyBGb3JtYXQoZSl9c3RhdGljIGhhbmRsZXIoZSl7cmV0dXJuIG5ldyBIYW5kbGVyKGUpfXN0YXRpYyBoeXBoZW5hdGlvbihlKXtyZXR1cm4gbmV3IEh5cGhlbmF0aW9uKGUpfXN0YXRpYyBpbWFnZShlKXtyZXR1cm4gbmV3IEltYWdlKGUpfXN0YXRpYyBpbWFnZUVkaXQoZSl7cmV0dXJuIG5ldyBJbWFnZUVkaXQoZSl9c3RhdGljIGludGVnZXIoZSl7cmV0dXJuIG5ldyBJbnRlZ2VyKGUpfXN0YXRpYyBpc3N1ZXJzKGUpe3JldHVybiBuZXcgSXNzdWVycyhlKX1zdGF0aWMgaXRlbXMoZSl7cmV0dXJuIG5ldyBJdGVtcyhlKX1zdGF0aWMga2VlcChlKXtyZXR1cm4gbmV3IEtlZXAoZSl9c3RhdGljIGtleVVzYWdlKGUpe3JldHVybiBuZXcgS2V5VXNhZ2UoZSl9c3RhdGljIGxpbmUoZSl7cmV0dXJuIG5ldyBMaW5lKGUpfXN0YXRpYyBsaW5lYXIoZSl7cmV0dXJuIG5ldyBMaW5lYXIoZSl9c3RhdGljIGxvY2tEb2N1bWVudChlKXtyZXR1cm4gbmV3IExvY2tEb2N1bWVudChlKX1zdGF0aWMgbWFuaWZlc3QoZSl7cmV0dXJuIG5ldyBNYW5pZmVzdChlKX1zdGF0aWMgbWFyZ2luKGUpe3JldHVybiBuZXcgTWFyZ2luKGUpfXN0YXRpYyBtZHAoZSl7cmV0dXJuIG5ldyBNZHAoZSl9c3RhdGljIG1lZGl1bShlKXtyZXR1cm4gbmV3IE1lZGl1bShlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IE1lc3NhZ2UoZSl9c3RhdGljIG51bWVyaWNFZGl0KGUpe3JldHVybiBuZXcgTnVtZXJpY0VkaXQoZSl9c3RhdGljIG9jY3VyKGUpe3JldHVybiBuZXcgT2NjdXIoZSl9c3RhdGljIG9pZChlKXtyZXR1cm4gbmV3IE9pZChlKX1zdGF0aWMgb2lkcyhlKXtyZXR1cm4gbmV3IE9pZHMoZSl9c3RhdGljIG92ZXJmbG93KGUpe3JldHVybiBuZXcgT3ZlcmZsb3coZSl9c3RhdGljIHBhZ2VBcmVhKGUpe3JldHVybiBuZXcgUGFnZUFyZWEoZSl9c3RhdGljIHBhZ2VTZXQoZSl7cmV0dXJuIG5ldyBQYWdlU2V0KGUpfXN0YXRpYyBwYXJhKGUpe3JldHVybiBuZXcgUGFyYShlKX1zdGF0aWMgcGFzc3dvcmRFZGl0KGUpe3JldHVybiBuZXcgUGFzc3dvcmRFZGl0KGUpfXN0YXRpYyBwYXR0ZXJuKGUpe3JldHVybiBuZXcgdGVtcGxhdGVfUGF0dGVybihlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHByb3RvKGUpe3JldHVybiBuZXcgUHJvdG8oZSl9c3RhdGljIHJhZGlhbChlKXtyZXR1cm4gbmV3IFJhZGlhbChlKX1zdGF0aWMgcmVhc29uKGUpe3JldHVybiBuZXcgUmVhc29uKGUpfXN0YXRpYyByZWFzb25zKGUpe3JldHVybiBuZXcgUmVhc29ucyhlKX1zdGF0aWMgcmVjdGFuZ2xlKGUpe3JldHVybiBuZXcgUmVjdGFuZ2xlKGUpfXN0YXRpYyByZWYoZSl7cmV0dXJuIG5ldyBSZWZFbGVtZW50KGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBTY3JpcHQoZSl9c3RhdGljIHNldFByb3BlcnR5KGUpe3JldHVybiBuZXcgU2V0UHJvcGVydHkoZSl9c3RhdGljIHNpZ25EYXRhKGUpe3JldHVybiBuZXcgU2lnbkRhdGEoZSl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IFNpZ25hdHVyZShlKX1zdGF0aWMgc2lnbmluZyhlKXtyZXR1cm4gbmV3IFNpZ25pbmcoZSl9c3RhdGljIHNvbGlkKGUpe3JldHVybiBuZXcgU29saWQoZSl9c3RhdGljIHNwZWFrKGUpe3JldHVybiBuZXcgU3BlYWsoZSl9c3RhdGljIHN0aXBwbGUoZSl7cmV0dXJuIG5ldyBTdGlwcGxlKGUpfXN0YXRpYyBzdWJmb3JtKGUpe3JldHVybiBuZXcgU3ViZm9ybShlKX1zdGF0aWMgc3ViZm9ybVNldChlKXtyZXR1cm4gbmV3IFN1YmZvcm1TZXQoZSl9c3RhdGljIHN1YmplY3RETihlKXtyZXR1cm4gbmV3IFN1YmplY3RETihlKX1zdGF0aWMgc3ViamVjdEROcyhlKXtyZXR1cm4gbmV3IFN1YmplY3RETnMoZSl9c3RhdGljIHN1Ym1pdChlKXtyZXR1cm4gbmV3IFN1Ym1pdChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZShlKX1zdGF0aWMgdGV4dChlKXtyZXR1cm4gbmV3IFRleHQoZSl9c3RhdGljIHRleHRFZGl0KGUpe3JldHVybiBuZXcgVGV4dEVkaXQoZSl9c3RhdGljIHRpbWUoZSl7cmV0dXJuIG5ldyBUaW1lKGUpfXN0YXRpYyB0aW1lU3RhbXAoZSl7cmV0dXJuIG5ldyBUaW1lU3RhbXAoZSl9c3RhdGljIHRvb2xUaXAoZSl7cmV0dXJuIG5ldyBUb29sVGlwKGUpfXN0YXRpYyB0cmF2ZXJzYWwoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzYWwoZSl9c3RhdGljIHRyYXZlcnNlKGUpe3JldHVybiBuZXcgVHJhdmVyc2UoZSl9c3RhdGljIHVpKGUpe3JldHVybiBuZXcgVWkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbHVlKGUpe3JldHVybiBuZXcgVmFsdWUoZSl9c3RhdGljIHZhcmlhYmxlcyhlKXtyZXR1cm4gbmV3IFZhcmlhYmxlcyhlKX19Y29uc3QgWm89Z28uZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBUZXh0KHt9KTt0W3NzXT1lO3JldHVybiB0fWNsYXNzIEJpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnJvb3Q9ZTt0aGlzLmRhdGFzZXRzPWUuZGF0YXNldHM7dGhpcy5kYXRhPWUuZGF0YXNldHM/LmRhdGF8fG5ldyBYbWxPYmplY3QoZ28uZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtTc10oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbaXNdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtvc109dDtpZihlW1RzXSgpKWlmKHRbTnNdKCkpe2NvbnN0IGE9dFt5c10oKTtlW2lvXShjcmVhdGVUZXh0KGEpKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBGaWVsZCYmIm11bHRpU2VsZWN0Ij09PWUudWk/LmNob2ljZUxpc3Q/Lm9wZW4pe2NvbnN0IGE9dFtTc10oKS5tYXAoKGU9PmVbc3NdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtpb10oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbTnNdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6d2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxyKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxuO2ZvcihsZXQgcj0wO3I8MztyKyspe2k9YVt4c10oZSwhMSwhMCk7Zm9yKDs7KXtuPWkubmV4dCgpLnZhbHVlO2lmKCFuKWJyZWFrO2lmKHQ9PT1uW05zXSgpKXJldHVybiBufWlmKGFbSHNdPT09Z28uZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbV3NdKWJyZWFrO2E9YVt2c10oKX1pZighcilyZXR1cm4gbnVsbDtpPXRoaXMuZGF0YVt4c10oZSwhMCwhMSk7bj1pLm5leHQoKS52YWx1ZTtpZihuKXJldHVybiBuO2k9dGhpcy5kYXRhW2RzXShlLCEwKTtuPWkubmV4dCgpLnZhbHVlO3JldHVybiBuPy5bTnNdKCk/bjpudWxsfV9zZXRQcm9wZXJ0aWVzKGUsdCl7aWYoZS5oYXNPd25Qcm9wZXJ0eSgic2V0UHJvcGVydHkiKSlmb3IoY29uc3R7cmVmOmEsdGFyZ2V0OnIsY29ubmVjdGlvbjppfW9mIGUuc2V0UHJvcGVydHkuY2hpbGRyZW4pe2lmKGkpY29udGludWU7aWYoIWEpY29udGludWU7Y29uc3Qgbj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LGEsITEsITEpO2lmKCFuKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHthfS5gKTtjb250aW51ZX1jb25zdFtzXT1uO2lmKCFzW0VzXSh0aGlzLmRhdGEpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3Qgbz1zZWFyY2hOb2RlKHRoaXMucm9vdCxlLHIsITEsITEpO2lmKCFvKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtyfS5gKTtjb250aW51ZX1jb25zdFtjXT1vO2lmKCFjW0VzXShlKSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IG11c3QgYmUgYSBwcm9wZXJ0eSBvciBzdWJwcm9wZXJ0eS4iKTtjb250aW51ZX1jb25zdCBsPWNbdnNdKCk7aWYoYyBpbnN0YW5jZW9mIFNldFByb3BlcnR5fHxsIGluc3RhbmNlb2YgU2V0UHJvcGVydHkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoYyBpbnN0YW5jZW9mIEJpbmRJdGVtc3x8bCBpbnN0YW5jZW9mIEJpbmRJdGVtcyl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIGJpbmRJdGVtcyBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9Y29uc3QgaD1zW3NvXSgpLHU9Y1tXc107aWYoYyBpbnN0YW5jZW9mIFhGQUF0dHJpYnV0ZSl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2VbdV09aDtjb25zdCB0PVJlZmxlY3QuY29uc3RydWN0KE9iamVjdC5nZXRQcm90b3R5cGVPZihsKS5jb25zdHJ1Y3RvcixbZV0pO2xbdV09dFt1XX1lbHNlIGlmKGMuaGFzT3duUHJvcGVydHkoc3MpKXtjW29zXT1zO2Nbc3NdPWg7Y1toc10oKX1lbHNlIHdhcm4oIlhGQSAtIEludmFsaWQgbm9kZSB0byB1c2UgaW4gc2V0UHJvcGVydHkiKX19X2JpbmRJdGVtcyhlLHQpe2lmKCFlLmhhc093blByb3BlcnR5KCJpdGVtcyIpfHwhZS5oYXNPd25Qcm9wZXJ0eSgiYmluZEl0ZW1zIil8fGUuYmluZEl0ZW1zLmlzRW1wdHkoKSlyZXR1cm47Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcy5jaGlsZHJlbillW1pzXSh0KTtlLml0ZW1zLmNsZWFyKCk7Y29uc3QgYT1uZXcgSXRlbXMoe30pLHI9bmV3IEl0ZW1zKHt9KTtlW1FuXShhKTtlLml0ZW1zLnB1c2goYSk7ZVtRbl0ocik7ZS5pdGVtcy5wdXNoKHIpO2Zvcihjb25zdHtyZWY6aSxsYWJlbFJlZjpuLHZhbHVlUmVmOnMsY29ubmVjdGlvbjpvfW9mIGUuYmluZEl0ZW1zLmNoaWxkcmVuKXtpZihvKWNvbnRpbnVlO2lmKCFpKWNvbnRpbnVlO2NvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxpLCExLCExKTtpZihlKWZvcihjb25zdCB0IG9mIGUpe2lmKCF0W0VzXSh0aGlzLmRhdGFzZXRzKSl7d2FybihgWEZBIC0gSW52YWxpZCByZWYgKCR7aX0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LG4sITAsITEpO2lmKCFlKXt3YXJuKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke259LmApO2NvbnRpbnVlfWNvbnN0W29dPWU7aWYoIW9bRXNdKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIGxhYmVsOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgYz1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKCFjKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHZhbHVlOiAke3N9LmApO2NvbnRpbnVlfWNvbnN0W2xdPWM7aWYoIWxbRXNdKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgaD1jcmVhdGVUZXh0KG9bc29dKCkpLHU9Y3JlYXRlVGV4dChsW3NvXSgpKTthW1FuXShoKTthLnRleHQucHVzaChoKTtyW1FuXSh1KTtyLnRleHQucHVzaCh1KX1lbHNlIHdhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2l9LmApfX1fYmluZE9jY3VycmVuY2VzKGUsdCxhKXtsZXQgcjtpZih0Lmxlbmd0aD4xKXtyPWVbaXNdKCk7cltac10oci5vY2N1cik7ci5vY2N1cj1udWxsfXRoaXMuX2JpbmRWYWx1ZShlLHRbMF0sYSk7dGhpcy5fc2V0UHJvcGVydGllcyhlLHRbMF0pO3RoaXMuX2JpbmRJdGVtcyhlLHRbMF0pO2lmKDE9PT10Lmxlbmd0aClyZXR1cm47Y29uc3QgaT1lW3ZzXSgpLG49ZVtXc10scz1pW01zXShlKTtmb3IobGV0IGU9MSxvPXQubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dFtlXSxjPXJbaXNdKCk7aVtuXS5wdXNoKGMpO2lbRHNdKHMrZSxjKTt0aGlzLl9iaW5kVmFsdWUoYyxvLGEpO3RoaXMuX3NldFByb3BlcnRpZXMoYyxvKTt0aGlzLl9iaW5kSXRlbXMoYyxvKX19X2NyZWF0ZU9jY3VycmVuY2VzKGUpe2lmKCF0aGlzLmVtcHR5TWVyZ2UpcmV0dXJuO2NvbnN0e29jY3VyOnR9PWU7aWYoIXR8fHQuaW5pdGlhbDw9MSlyZXR1cm47Y29uc3QgYT1lW3ZzXSgpLHI9ZVtXc107aWYoIShhW3JdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpcmV0dXJuO2xldCBpO2k9ZS5uYW1lP2Fbcl0uY2hpbGRyZW4uZmlsdGVyKCh0PT50Lm5hbWU9PT1lLm5hbWUpKS5sZW5ndGg6YVtyXS5jaGlsZHJlbi5sZW5ndGg7Y29uc3Qgbj1hW01zXShlKSsxLHM9dC5pbml0aWFsLWk7aWYocyl7Y29uc3QgdD1lW2lzXSgpO3RbWnNdKHQub2NjdXIpO3Qub2NjdXI9bnVsbDthW3JdLnB1c2godCk7YVtEc10obix0KTtmb3IobGV0IGU9MTtlPHM7ZSsrKXtjb25zdCBpPXRbaXNdKCk7YVtyXS5wdXNoKGkpO2FbRHNdKG4rZSxpKX19fV9nZXRPY2N1ckluZm8oZSl7Y29uc3R7bmFtZTp0LG9jY3VyOmF9PWU7aWYoIWF8fCF0KXJldHVyblsxLDFdO2NvbnN0IHI9LTE9PT1hLm1heD8xLzA6YS5tYXg7cmV0dXJuW2EubWluLHJdfV9zZXRBbmRCaW5kKGUsdCl7dGhpcy5fc2V0UHJvcGVydGllcyhlLHQpO3RoaXMuX2JpbmRJdGVtcyhlLHQpO3RoaXMuX2JpbmRFbGVtZW50KGUsdCl9X2JpbmRFbGVtZW50KGUsdCl7Y29uc3QgYT1bXTt0aGlzLl9jcmVhdGVPY2N1cnJlbmNlcyhlKTtmb3IoY29uc3QgciBvZiBlW1NzXSgpKXtpZihyW29zXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PXJbV3NdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PXIubWVyZ2VNb2RlO2NvbnN0IGU9dFtTc10oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhyLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W0hzXT09PVpvPy0xOnRbSHNdLGE9cltvc109bmV3IFhtbE9iamVjdChlLHIubmFtZXx8InJvb3QiKTt0W1FuXShhKTt0aGlzLl9iaW5kRWxlbWVudChyLGEpfWNvbnRpbnVlfWlmKCFyW1JzXSgpKWNvbnRpbnVlO2xldCBlPSExLGk9bnVsbCxuPW51bGwscz1udWxsO2lmKHIuYmluZCl7c3dpdGNoKHIuYmluZC5tYXRjaCl7Y2FzZSJub25lIjp0aGlzLl9zZXRBbmRCaW5kKHIsdCk7Y29udGludWU7Y2FzZSJnbG9iYWwiOmU9ITA7YnJlYWs7Y2FzZSJkYXRhUmVmIjppZighci5iaW5kLnJlZil7d2FybihgWEZBIC0gcmVmIGlzIGVtcHR5IGluIG5vZGUgJHtyW1dzXX0uYCk7dGhpcy5fc2V0QW5kQmluZChyLHQpO2NvbnRpbnVlfW49ci5iaW5kLnJlZn1yLmJpbmQucGljdHVyZSYmKGk9ci5iaW5kLnBpY3R1cmVbc3NdKX1jb25zdFtvLGNdPXRoaXMuX2dldE9jY3VySW5mbyhyKTtpZihuKXtzPXNlYXJjaE5vZGUodGhpcy5yb290LHQsbiwhMCwhMSk7aWYobnVsbD09PXMpe3M9Y3JlYXRlRGF0YU5vZGUodGhpcy5kYXRhLHQsbik7aWYoIXMpY29udGludWU7dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoc1tuc109ITApO3RoaXMuX3NldEFuZEJpbmQocixzKTtjb250aW51ZX10aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihzPXMuZmlsdGVyKChlPT4hZVtuc10pKSk7cy5sZW5ndGg+Yz9zPXMuc2xpY2UoMCxjKTowPT09cy5sZW5ndGgmJihzPW51bGwpO3MmJnRoaXMuX2lzQ29uc3VtZURhdGEoKSYmcy5mb3JFYWNoKChlPT57ZVtuc109ITB9KSl9ZWxzZXtpZighci5uYW1lKXt0aGlzLl9zZXRBbmRCaW5kKHIsdCk7Y29udGludWV9aWYodGhpcy5faXNDb25zdW1lRGF0YSgpKXtjb25zdCBhPVtdO2Zvcig7YS5sZW5ndGg8Yzspe2NvbnN0IGk9dGhpcy5fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoci5uYW1lLHJbVHNdKCksdCxlKTtpZighaSlicmVhaztpW25zXT0hMDthLnB1c2goaSl9cz1hLmxlbmd0aD4wP2E6bnVsbH1lbHNle3M9dFt4c10oci5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFzKXtpZigwPT09byl7YS5wdXNoKHIpO2NvbnRpbnVlfWNvbnN0IGU9dFtIc109PT1abz8tMTp0W0hzXTtzPXJbb3NdPW5ldyBYbWxPYmplY3QoZSxyLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKHNbbnNdPSEwKTt0W1FuXShzKTt0aGlzLl9zZXRBbmRCaW5kKHIscyk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoc1tuc109ITApO3M9W3NdfX1zP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhyLHMsaSk6bz4wP3RoaXMuX3NldEFuZEJpbmQocix0KTphLnB1c2gocil9YS5mb3JFYWNoKChlPT5lW3ZzXSgpW1pzXShlKSkpfX1jbGFzcyBEYXRhSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGF0YT10O3RoaXMuZGF0YXNldD1lLmRhdGFzZXRzfHxudWxsfXNlcmlhbGl6ZShlKXtjb25zdCB0PVtbLTEsdGhpcy5kYXRhW1NzXSgpXV07Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3QgYT10LmF0KC0xKSxbcixpXT1hO2lmKHIrMT09PWkubGVuZ3RoKXt0LnBvcCgpO2NvbnRpbnVlfWNvbnN0IG49aVsrK2FbMF1dLHM9ZS5nZXQoblt1b10pO2lmKHMpbltpb10ocyk7ZWxzZXtjb25zdCB0PW5bZnNdKCk7Zm9yKGNvbnN0IGEgb2YgdC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldChhW3VvXSk7aWYodCl7YVtpb10odCk7YnJlYWt9fX1jb25zdCBvPW5bU3NdKCk7by5sZW5ndGg+MCYmdC5wdXNoKFstMSxvXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbU3NdKCkpImRhdGEiIT09ZVtXc10mJmVbbG9dKGEpO3RoaXMuZGF0YVtsb10oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19Y29uc3QgUW89Z28uY29uZmlnLmlkO2NsYXNzIEFjcm9iYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFjcm9iYXQ3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiQURCRV9KU0NvbnNvbGUiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBREJFX0pTRGVidWdnZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sIkFEQkVfSlNEZWJ1Z2dlciIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFkZFNpbGVudFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImFkZFZpZXdlclByZWZlcmVuY2VzIil9fWNsYXNzIEFkanVzdERhdGEgZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiYWRqdXN0RGF0YSIpfX1jbGFzcyBBZG9iZUV4dGVuc2lvbkxldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBBZ2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiYWdlbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5jb21tb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImFsd2F5c0VtYmVkIil9fWNsYXNzIEFtZCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiYW1kIil9fWNsYXNzIGNvbmZpZ19BcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJhcmVhIik7dGhpcy5sZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUubGV2ZWwsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9M30pO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiIiwiYmFyY29kZSIsImNvcmVpbml0IiwiZGV2aWNlRHJpdmVyIiwiZm9udCIsImdlbmVyYWwiLCJsYXlvdXQiLCJtZXJnZSIsInNjcmlwdCIsInNpZ25hdHVyZSIsInNvdXJjZVNldCIsInRlbXBsYXRlQ2FjaGUiXSl9fWNsYXNzIEF0dHJpYnV0ZXMgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImF1dG9TYXZlIixbImRpc2FibGVkIiwiZW5hYmxlZCJdKX19Y2xhc3MgQmFzZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiYmFzZSIpfX1jbGFzcyBCYXRjaE91dHB1dCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJiZWhhdmlvck92ZXJyaWRlIil9W2hzXSgpe3RoaXNbc3NdPW5ldyBNYXAodGhpc1tzc10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PmUuaW5jbHVkZXMoIjoiKSkpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl9fWNsYXNzIENhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiY2hhbmdlIil9fWNsYXNzIENvbW1vbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiY29tbW9uIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5sb2NhbGU9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMubWVzc2FnaW5nPW51bGw7dGhpcy5zdXBwcmVzc0Jhbm5lcj1udWxsO3RoaXMudGVtcGxhdGU9bnVsbDt0aGlzLnZhbGlkYXRpb25NZXNzYWdpbmc9bnVsbDt0aGlzLnZlcnNpb25Db250cm9sPW51bGw7dGhpcy5sb2c9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb21wcmVzcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiY29tcHJlc3MiKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsiaW1hZ2VPbmx5IiwiZG9jdW1lbnQiXSl9fWNsYXNzIENvbXByZXNzTG9naWNhbFN0cnVjdHVyZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiY29tcHJlc3NPYmplY3RTdHJlYW0iKX19Y2xhc3MgQ29tcHJlc3Npb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImNvbXByZXNzaW9uIiwhMCk7dGhpcy5jb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmU9bnVsbDt0aGlzLmNvbXByZXNzT2JqZWN0U3RyZWFtPW51bGw7dGhpcy5sZXZlbD1udWxsO3RoaXMudHlwZT1udWxsfX1jbGFzcyBDb25maWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29uZm9ybWFuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJjb250ZW50Q29weSIpfX1jbGFzcyBDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJjb3BpZXMiLDEsKGU9PmU+PTEpKX19Y2xhc3MgQ3JlYXRvciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImN1cnJlbnRQYWdlIiwwLChlPT5lPj0wKSl9fWNsYXNzIERhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImRhdGEiLCEwKTt0aGlzLmFkanVzdERhdGE9bnVsbDt0aGlzLmF0dHJpYnV0ZXM9bnVsbDt0aGlzLmluY3JlbWVudGFsTG9hZD1udWxsO3RoaXMub3V0cHV0WFNMPW51bGw7dGhpcy5yYW5nZT1udWxsO3RoaXMucmVjb3JkPW51bGw7dGhpcy5zdGFydE5vZGU9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMud2luZG93PW51bGw7dGhpcy54c2w9bnVsbDt0aGlzLmV4Y2x1ZGVOUz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmFuc2Zvcm09bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZGVidWciLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBEZWZhdWx0VHlwZWZhY2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJkZWZhdWx0VHlwZWZhY2UiKTt0aGlzLndyaXRpbmdTY3JpcHQ9Z2V0U3RyaW5nT3B0aW9uKGUud3JpdGluZ1NjcmlwdCxbIioiLCJBcmFiaWMiLCJDeXJpbGxpYyIsIkVhc3RFdXJvcGVhblJvbWFuIiwiR3JlZWsiLCJIZWJyZXciLCJKYXBhbmVzZSIsIktvcmVhbiIsIlJvbWFuIiwiU2ltcGxpZmllZENoaW5lc2UiLCJUaGFpIiwiVHJhZGl0aW9uYWxDaGluZXNlIiwiVmlldG5hbWVzZSJdKX19Y2xhc3MgRGVzdGluYXRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImRvY3VtZW50QXNzZW1ibHkiKX19Y2xhc3MgRHJpdmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJkcml2ZXIiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIER1cGxleE9wdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJkeW5hbWljUmVuZGVyIixbImZvcmJpZGRlbiIsInJlcXVpcmVkIl0pfX1jbGFzcyBFbWJlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJlbWJlZCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJlbmNyeXB0Iil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0aW9uTGV2ZWw9bnVsbDt0aGlzLnBlcm1pc3Npb25zPW51bGx9fWNsYXNzIEVuY3J5cHRpb25MZXZlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJlbmZvcmNlIil9fWNsYXNzIEVxdWF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZXF1YXRlIik7dGhpcy5mb3JjZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZm9yY2UsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+MD09PWV9KTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIifX1jbGFzcyBFcXVhdGVSYW5nZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLGE9dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgciBvZiBhLnNwbGl0KCIsIikubWFwKChlPT5lLnRyaW0oKSkpLmZpbHRlcigoZT0+ISFlKSkpe3I9ci5zcGxpdCgiLSIsMikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3BhcnNlSW50KGFbMV0sMTYpOjB9KSk7MT09PXIubGVuZ3RoJiZyLnB1c2goclswXSk7ZS5wdXNoKHIpfXJldHVybiBzaGFkb3codGhpcywidW5pY29kZVJhbmdlIixlKX19Y2xhc3MgRXhjbHVkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImV4Y2x1ZGUiKX1baHNdKCl7dGhpc1tzc109dGhpc1tzc10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PmUmJlsiY2FsY3VsYXRlIiwiY2xvc2UiLCJlbnRlciIsImV4aXQiLCJpbml0aWFsaXplIiwicmVhZHkiLCJ2YWxpZGF0ZSJdLmluY2x1ZGVzKGUpKSl9fWNsYXNzIEV4Y2x1ZGVOUyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZXhjbHVkZU5TIil9fWNsYXNzIEZsaXBMYWJlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIGNvbmZpZ19Gb250SW5mbyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VHlwZWZhY2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubmV2ZXJFbWJlZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZm9ybUZpZWxkRmlsbGluZyIpfX1jbGFzcyBHcm91cFBhcmVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiZ3JvdXBQYXJlbnQiKX19Y2xhc3MgSWZFbXB0eSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJpbmNsdWRlWERQQ29udGVudCIpfX1jbGFzcyBJbmNyZW1lbnRhbExvYWQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImluY3JlbWVudGFsTG9hZCIsWyJub25lIiwiZm9yd2FyZE9ubHkiXSl9fWNsYXNzIEluY3JlbWVudGFsTWVyZ2UgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJpbnRlcmFjdGl2ZSIpfX1jbGFzcyBKb2cgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImpvZyIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm5vbmUiLCJwYWdlU2V0Il0pfX1jbGFzcyBMYWJlbFByaW50ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJsYXlvdXQiLFsicGFnaW5hdGUiLCJwYW5lbCJdKX19Y2xhc3MgTGV2ZWwgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJsZXZlbCIsMCwoZT0+ZT4wKSl9fWNsYXNzIExpbmVhcml6ZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImxvY2FsZSIpfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImxvY2FsZVNldCIpfX1jbGFzcyBMb2cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sIm1hcCIsITApO3RoaXMuZXF1YXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVkaXVtSW5mbyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIGNvbmZpZ19NZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJtZXNzYWdpbmciLCEwKTt0aGlzLm1lc3NhZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJtb2RlIixbImFwcGVuZCIsIm92ZXJ3cml0ZSJdKX19Y2xhc3MgTW9kaWZ5QW5ub3RzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sIm1vZGlmeUFubm90cyIpfX1jbGFzcyBNc2dJZCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sIm1zZ0lkIiwxLChlPT5lPj0xKSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJuYW1lQXR0ciIpfX1jbGFzcyBOZXZlckVtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywibmV2ZXJFbWJlZCIpfX1jbGFzcyBOdW1iZXJPZkNvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sIm9wZW5BY3Rpb24iLCEwKTt0aGlzLmRlc3RpbmF0aW9uPW51bGx9fWNsYXNzIE91dHB1dCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywib3V0cHV0IiwhMCk7dGhpcy50bz1udWxsO3RoaXMudHlwZT1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE91dHB1dEJpbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywib3V0cHV0WFNMIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3ZlcnByaW50IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJvdmVycHJpbnQiLFsibm9uZSIsImJvdGgiLCJkcmF3IiwiZmllbGQiXSl9fWNsYXNzIFBhY2tldHMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInBhY2tldHMiKX1baHNdKCl7IioiIT09dGhpc1tzc10mJih0aGlzW3NzXT10aGlzW3NzXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicGFnZU9mZnNldCIpO3RoaXMueD1nZXRJbnRlZ2VyKHtkYXRhOmUueCxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy55PWdldEludGVnZXIoe2RhdGE6ZS55LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KX19Y2xhc3MgUGFnZVJhbmdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwYWdlUmFuZ2UiKX1baHNdKCl7Y29uc3QgZT10aGlzW3NzXS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+cGFyc2VJbnQoZSwxMCkpKSx0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErPTIpdC5wdXNoKGUuc2xpY2UoYSxhKzIpKTt0aGlzW3NzXT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwYWdpbmF0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhTaG9ydEVkZ2UiLCJkdXBsZXhMb25nRWRnZSJdKX19Y2xhc3MgUGFnaW5hdGlvbk92ZXJyaWRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwYWdpbmF0aW9uT3ZlcnJpZGUiLFsibm9uZSIsImZvcmNlRHVwbGV4IiwiZm9yY2VEdXBsZXhMb25nRWRnZSIsImZvcmNlRHVwbGV4U2hvcnRFZGdlIiwiZm9yY2VTaW1wbGV4Il0pfX1jbGFzcyBQYXJ0IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicGFydCIsMSwoZT0+ITEpKX19Y2xhc3MgUGNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwY2wiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnBhZ2VPZmZzZXQ9bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicGRmIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5hZG9iZUV4dGVuc2lvbkxldmVsPW51bGw7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuY29tcHJlc3Npb249bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5pbnRlcmFjdGl2ZT1udWxsO3RoaXMubGluZWFyaXplZD1udWxsO3RoaXMub3BlbkFjdGlvbj1udWxsO3RoaXMucGRmYT1udWxsO3RoaXMucHJvZHVjZXI9bnVsbDt0aGlzLnJlbmRlclBvbGljeT1udWxsO3RoaXMuc2NyaXB0TW9kZWw9bnVsbDt0aGlzLnNpbGVudFByaW50PW51bGw7dGhpcy5zdWJtaXRGb3JtYXQ9bnVsbDt0aGlzLnRhZ2dlZD1udWxsO3RoaXMudmVyc2lvbj1udWxsO3RoaXMudmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGZhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicGVybWlzc2lvbnMiLCEwKTt0aGlzLmFjY2Vzc2libGVDb250ZW50PW51bGw7dGhpcy5jaGFuZ2U9bnVsbDt0aGlzLmNvbnRlbnRDb3B5PW51bGw7dGhpcy5kb2N1bWVudEFzc2VtYmx5PW51bGw7dGhpcy5mb3JtRmllbGRGaWxsaW5nPW51bGw7dGhpcy5tb2RpZnlBbm5vdHM9bnVsbDt0aGlzLnBsYWludGV4dE1ldGFkYXRhPW51bGw7dGhpcy5wcmludD1udWxsO3RoaXMucHJpbnRIaWdoUXVhbGl0eT1udWxsfX1jbGFzcyBQaWNrVHJheUJ5UERGU2l6ZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwaWNrVHJheUJ5UERGU2l6ZSIpfX1jbGFzcyBjb25maWdfUGljdHVyZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicGljdHVyZSIpfX1jbGFzcyBQbGFpbnRleHRNZXRhZGF0YSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicHJlc2VuY2UiLFsicHJlc2VydmUiLCJkaXNzb2x2ZSIsImRpc3NvbHZlU3RydWN0dXJlIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBQcmVzZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwcmVzZW50IiwhMCk7dGhpcy5iZWhhdmlvck92ZXJyaWRlPW51bGw7dGhpcy5jYWNoZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy5jb3BpZXM9bnVsbDt0aGlzLmRlc3RpbmF0aW9uPW51bGw7dGhpcy5pbmNyZW1lbnRhbE1lcmdlPW51bGw7dGhpcy5sYXlvdXQ9bnVsbDt0aGlzLm91dHB1dD1udWxsO3RoaXMub3ZlcnByaW50PW51bGw7dGhpcy5wYWdpbmF0aW9uPW51bGw7dGhpcy5wYWdpbmF0aW9uT3ZlcnJpZGU9bnVsbDt0aGlzLnNjcmlwdD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnhkcD1udWxsO3RoaXMuZHJpdmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxhYmVsUHJpbnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGRmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy53ZWJDbGllbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuenBsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicHJpbnQiKX19Y2xhc3MgUHJpbnRIaWdoUXVhbGl0eSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwcmludEhpZ2hRdWFsaXR5Iil9fWNsYXNzIFByaW50U2NhbGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJwcmludGVyTmFtZSIpfX1jbGFzcyBQcm9kdWNlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywicHJvZHVjZXIiKX19Y2xhc3MgUHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInJhbmdlIil9W2hzXSgpe3RoaXNbc3NdPXRoaXNbc3NdLnNwbGl0KCIsIiwyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJyZWNvcmQiKX1baHNdKCl7dGhpc1tzc109dGhpc1tzc10udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1tzc10sMTApOyFpc05hTihlKSYmZT49MCYmKHRoaXNbc3NdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInJlbGV2YW50Iil9W2hzXSgpe3RoaXNbc3NdPXRoaXNbc3NdLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIFJlbmFtZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInJlbmFtZSIpfVtoc10oKXt0aGlzW3NzXT10aGlzW3NzXS50cmltKCk7KHRoaXNbc3NdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbc3NdKSkmJndhcm4oIlhGQSAtIFJlbmFtZTogaW52YWxpZCBYRkEgbmFtZSIpfX1jbGFzcyBSZW5kZXJQb2xpY3kgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInJ1blNjcmlwdHMiLFsiYm90aCIsImNsaWVudCIsIm5vbmUiLCJzZXJ2ZXIiXSl9fWNsYXNzIGNvbmZpZ19TY3JpcHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInNjcmlwdCIsITApO3RoaXMuY3VycmVudFBhZ2U9bnVsbDt0aGlzLmV4Y2x1ZGU9bnVsbDt0aGlzLnJ1blNjcmlwdHM9bnVsbH19Y2xhc3MgU2NyaXB0TW9kZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInNjcmlwdE1vZGVsIixbIlhGQSIsIm5vbmUiXSl9fWNsYXNzIFNldmVyaXR5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywic2lsZW50UHJpbnQiLCEwKTt0aGlzLmFkZFNpbGVudFByaW50PW51bGw7dGhpcy5wcmludGVyTmFtZT1udWxsfX1jbGFzcyBTdGFwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInN0YXBsZSIpO3RoaXMubW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tb2RlLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgU3RhcnROb2RlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywic3RhcnRQYWdlIiwwLChlPT4hMCkpfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywic3Vic2V0QmVsb3ciLDEwMCwoZT0+ZT49MCYmZTw9MTAwKSl9fWNsYXNzIFN1cHByZXNzQmFubmVyIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInN1cHByZXNzQmFubmVyIil9fWNsYXNzIFRhZ2dlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJ0YWdnZWQiKX19Y2xhc3MgY29uZmlnX1RlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJ0aHJlc2hvbGQiLFsidHJhY2UiLCJlcnJvciIsImluZm9ybWF0aW9uIiwid2FybmluZyJdKX19Y2xhc3MgVG8gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInRvIixbIm51bGwiLCJtZW1vcnkiLCJzdGRlcnIiLCJzdGRvdXQiLCJzeXN0ZW0iLCJ1cmkiXSl9fWNsYXNzIFRlbXBsYXRlQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywidHJhY2UiLCEwKTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInRyYW5zZm9ybSIsITApO3RoaXMuZ3JvdXBQYXJlbnQ9bnVsbDt0aGlzLmlmRW1wdHk9bnVsbDt0aGlzLm5hbWVBdHRyPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5wcmVzZW5jZT1udWxsO3RoaXMucmVuYW1lPW51bGw7dGhpcy53aGl0ZXNwYWNlPW51bGx9fWNsYXNzIFR5cGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInR5cGUiLFsibm9uZSIsImFzY2lpODUiLCJhc2NpaUhleCIsImNjaXR0ZmF4IiwiZmxhdGUiLCJsenciLCJydW5MZW5ndGgiLCJuYXRpdmUiLCJ4ZHAiLCJtZXJnZWRYRFAiXSl9fWNsYXNzIFVyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywidXJpIil9fWNsYXNzIGNvbmZpZ19WYWxpZGF0ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJ2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyIpfVtoc10oKXt0aGlzW3NzXT10aGlzW3NzXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2luZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywidmVyc2lvbiIsWyIxLjciLCIxLjYiLCIxLjUiLCIxLjQiLCIxLjMiLCIxLjIiXSl9fWNsYXNzIFZlcnNpb25Db250cm9sIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJWZXJzaW9uQ29udHJvbCIpO3RoaXMub3V0cHV0QmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUub3V0cHV0QmVsb3csWyJ3YXJuIiwiZXJyb3IiLCJ1cGRhdGUiXSk7dGhpcy5zb3VyY2VBYm92ZT1nZXRTdHJpbmdPcHRpb24oZS5zb3VyY2VBYm92ZSxbIndhcm4iLCJlcnJvciJdKTt0aGlzLnNvdXJjZUJlbG93PWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUJlbG93LFsidXBkYXRlIiwibWFpbnRhaW4iXSl9fWNsYXNzIFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sIndlYkNsaWVudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgV2hpdGVzcGFjZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbywid2hpdGVzcGFjZSIsWyJwcmVzZXJ2ZSIsImx0cmltIiwibm9ybWFsaXplIiwicnRyaW0iLCJ0cmltIl0pfX1jbGFzcyBXaW5kb3cgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJ3aW5kb3ciKX1baHNdKCl7Y29uc3QgZT10aGlzW3NzXS5zcGxpdCgiLCIsMikubWFwKChlPT5wYXJzZUludChlLnRyaW0oKSwxMCkpKTtpZihlLnNvbWUoKGU9PmlzTmFOKGUpKSkpdGhpc1tzc109WzAsMF07ZWxzZXsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTt0aGlzW3NzXT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFvLCJ4ZGMiLCEwKTt0aGlzLnVyaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBYZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInhzbCIsITApO3RoaXMuZGVidWc9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBacGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUW8sInpwbCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgQ29uZmlnTmFtZXNwYWNle3N0YXRpY1tmb10oZSx0KXtpZihDb25maWdOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbmZpZ05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYWNyb2JhdChlKXtyZXR1cm4gbmV3IEFjcm9iYXQoZSl9c3RhdGljIGFjcm9iYXQ3KGUpe3JldHVybiBuZXcgQWNyb2JhdDcoZSl9c3RhdGljIEFEQkVfSlNDb25zb2xlKGUpe3JldHVybiBuZXcgQURCRV9KU0NvbnNvbGUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IEFEQkVfSlNEZWJ1Z2dlcihlKX1zdGF0aWMgYWRkU2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBBZGRTaWxlbnRQcmludChlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgYWRqdXN0RGF0YShlKXtyZXR1cm4gbmV3IEFkanVzdERhdGEoZSl9c3RhdGljIGFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBBZG9iZUV4dGVuc2lvbkxldmVsKGUpfXN0YXRpYyBhZ2VudChlKXtyZXR1cm4gbmV3IEFnZW50KGUpfXN0YXRpYyBhbHdheXNFbWJlZChlKXtyZXR1cm4gbmV3IEFsd2F5c0VtYmVkKGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyBBbWQoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBjb25maWdfQXJlYShlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IEF0dHJpYnV0ZXMoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgQXV0b1NhdmUoZSl9c3RhdGljIGJhc2UoZSl7cmV0dXJuIG5ldyBCYXNlKGUpfXN0YXRpYyBiYXRjaE91dHB1dChlKXtyZXR1cm4gbmV3IEJhdGNoT3V0cHV0KGUpfXN0YXRpYyBiZWhhdmlvck92ZXJyaWRlKGUpe3JldHVybiBuZXcgQmVoYXZpb3JPdmVycmlkZShlKX1zdGF0aWMgY2FjaGUoZSl7cmV0dXJuIG5ldyBDYWNoZShlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgQ2hhbmdlKGUpfXN0YXRpYyBjb21tb24oZSl7cmV0dXJuIG5ldyBDb21tb24oZSl9c3RhdGljIGNvbXByZXNzKGUpe3JldHVybiBuZXcgQ29tcHJlc3MoZSl9c3RhdGljIGNvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKXtyZXR1cm4gbmV3IENvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKX1zdGF0aWMgY29tcHJlc3NPYmplY3RTdHJlYW0oZSl7cmV0dXJuIG5ldyBDb21wcmVzc09iamVjdFN0cmVhbShlKX1zdGF0aWMgY29tcHJlc3Npb24oZSl7cmV0dXJuIG5ldyBDb21wcmVzc2lvbihlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgQ29uZmlnKGUpfXN0YXRpYyBjb25mb3JtYW5jZShlKXtyZXR1cm4gbmV3IENvbmZvcm1hbmNlKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IENvbnRlbnRDb3B5KGUpfXN0YXRpYyBjb3BpZXMoZSl7cmV0dXJuIG5ldyBDb3BpZXMoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBDcmVhdG9yKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IEN1cnJlbnRQYWdlKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX1zdGF0aWMgZGVidWcoZSl7cmV0dXJuIG5ldyBEZWJ1ZyhlKX1zdGF0aWMgZGVmYXVsdFR5cGVmYWNlKGUpe3JldHVybiBuZXcgRGVmYXVsdFR5cGVmYWNlKGUpfXN0YXRpYyBkZXN0aW5hdGlvbihlKXtyZXR1cm4gbmV3IERlc3RpbmF0aW9uKGUpfXN0YXRpYyBkb2N1bWVudEFzc2VtYmx5KGUpe3JldHVybiBuZXcgRG9jdW1lbnRBc3NlbWJseShlKX1zdGF0aWMgZHJpdmVyKGUpe3JldHVybiBuZXcgRHJpdmVyKGUpfXN0YXRpYyBkdXBsZXhPcHRpb24oZSl7cmV0dXJuIG5ldyBEdXBsZXhPcHRpb24oZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBEeW5hbWljUmVuZGVyKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IEVtYmVkKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbkxldmVsKGUpfXN0YXRpYyBlbmZvcmNlKGUpe3JldHVybiBuZXcgRW5mb3JjZShlKX1zdGF0aWMgZXF1YXRlKGUpe3JldHVybiBuZXcgRXF1YXRlKGUpfXN0YXRpYyBlcXVhdGVSYW5nZShlKXtyZXR1cm4gbmV3IEVxdWF0ZVJhbmdlKGUpfXN0YXRpYyBleGNsdWRlKGUpe3JldHVybiBuZXcgRXhjbHVkZShlKX1zdGF0aWMgZXhjbHVkZU5TKGUpe3JldHVybiBuZXcgRXhjbHVkZU5TKGUpfXN0YXRpYyBmbGlwTGFiZWwoZSl7cmV0dXJuIG5ldyBGbGlwTGFiZWwoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgY29uZmlnX0ZvbnRJbmZvKGUpfXN0YXRpYyBmb3JtRmllbGRGaWxsaW5nKGUpe3JldHVybiBuZXcgRm9ybUZpZWxkRmlsbGluZyhlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBHcm91cFBhcmVudChlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IElmRW1wdHkoZSl9c3RhdGljIGluY2x1ZGVYRFBDb250ZW50KGUpe3JldHVybiBuZXcgSW5jbHVkZVhEUENvbnRlbnQoZSl9c3RhdGljIGluY3JlbWVudGFsTG9hZChlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTG9hZChlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTWVyZ2UoZSl9c3RhdGljIGludGVyYWN0aXZlKGUpe3JldHVybiBuZXcgSW50ZXJhY3RpdmUoZSl9c3RhdGljIGpvZyhlKXtyZXR1cm4gbmV3IEpvZyhlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgTGFiZWxQcmludGVyKGUpfXN0YXRpYyBsYXlvdXQoZSl7cmV0dXJuIG5ldyBMYXlvdXQoZSl9c3RhdGljIGxldmVsKGUpe3JldHVybiBuZXcgTGV2ZWwoZSl9c3RhdGljIGxpbmVhcml6ZWQoZSl7cmV0dXJuIG5ldyBMaW5lYXJpemVkKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBMb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IExvY2FsZVNldChlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgTG9nKGUpfXN0YXRpYyBtYXAoZSl7cmV0dXJuIG5ldyBNYXBFbGVtZW50KGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgTWVkaXVtSW5mbyhlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19NZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19QaWN0dXJlKGUpfXN0YXRpYyBwbGFpbnRleHRNZXRhZGF0YShlKXtyZXR1cm4gbmV3IFBsYWludGV4dE1ldGFkYXRhKGUpfXN0YXRpYyBwcmVzZW5jZShlKXtyZXR1cm4gbmV3IFByZXNlbmNlKGUpfXN0YXRpYyBwcmVzZW50KGUpe3JldHVybiBuZXcgUHJlc2VudChlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBQcmludChlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFByaW50SGlnaFF1YWxpdHkoZSl9c3RhdGljIHByaW50U2NhbGluZyhlKXtyZXR1cm4gbmV3IFByaW50U2NhbGluZyhlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBQcmludGVyTmFtZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBQcm9kdWNlcihlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBQcyhlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyBSYW5nZShlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgUmVjb3JkKGUpfXN0YXRpYyByZWxldmFudChlKXtyZXR1cm4gbmV3IFJlbGV2YW50KGUpfXN0YXRpYyByZW5hbWUoZSl7cmV0dXJuIG5ldyBSZW5hbWUoZSl9c3RhdGljIHJlbmRlclBvbGljeShlKXtyZXR1cm4gbmV3IFJlbmRlclBvbGljeShlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IFJ1blNjcmlwdHMoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19TY3JpcHQoZSl9c3RhdGljIHNjcmlwdE1vZGVsKGUpe3JldHVybiBuZXcgU2NyaXB0TW9kZWwoZSl9c3RhdGljIHNldmVyaXR5KGUpe3JldHVybiBuZXcgU2V2ZXJpdHkoZSl9c3RhdGljIHNpbGVudFByaW50KGUpe3JldHVybiBuZXcgU2lsZW50UHJpbnQoZSl9c3RhdGljIHN0YXBsZShlKXtyZXR1cm4gbmV3IFN0YXBsZShlKX1zdGF0aWMgc3RhcnROb2RlKGUpe3JldHVybiBuZXcgU3RhcnROb2RlKGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBTdGFydFBhZ2UoZSl9c3RhdGljIHN1Ym1pdEZvcm1hdChlKXtyZXR1cm4gbmV3IFN1Ym1pdEZvcm1hdChlKX1zdGF0aWMgc3VibWl0VXJsKGUpe3JldHVybiBuZXcgU3VibWl0VXJsKGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IFN1YnNldEJlbG93KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IFN1cHByZXNzQmFubmVyKGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyBUYWdnZWQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1RlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1ZhbGlkYXRlKGUpfXN0YXRpYyB2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpfXN0YXRpYyB2YWxpZGF0aW9uTWVzc2FnaW5nKGUpe3JldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2luZyhlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IFZlcnNpb24oZSl9c3RhdGljIHZlcnNpb25Db250cm9sKGUpe3JldHVybiBuZXcgVmVyc2lvbkNvbnRyb2woZSl9c3RhdGljIHZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIHdlYkNsaWVudChlKXtyZXR1cm4gbmV3IFdlYkNsaWVudChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IFdoaXRlc3BhY2UoZSl9c3RhdGljIHdpbmRvdyhlKXtyZXR1cm4gbmV3IFdpbmRvdyhlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgWGRjKGUpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyBYZHAoZSl9c3RhdGljIHhzbChlKXtyZXR1cm4gbmV3IFhzbChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcgWnBsKGUpfX1jb25zdCBlYz1nby5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZWMsImNvbm5lY3Rpb25TZXQiLCEwKTt0aGlzLndzZGxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNkQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVmZmVjdGl2ZUlucHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGVjLCJlZmZlY3RpdmVJbnB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFZmZlY3RpdmVPdXRwdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZWMsImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZWMsIm9wZXJhdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnB1dD1lLmlucHV0fHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm91dHB1dD1lLm91dHB1dHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSb290RWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlYywicm9vdEVsZW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFjdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlYywic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlYywic29hcEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgY29ubmVjdGlvbl9zZXRfVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGVjLCJ1cmkiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZWMsIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGVjLCJ3c2RsQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGw7dGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbDt0aGlzLm9wZXJhdGlvbj1udWxsO3RoaXMuc29hcEFjdGlvbj1udWxsO3RoaXMuc29hcEFkZHJlc3M9bnVsbDt0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIFhtbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZWMsInhtbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51cmk9bnVsbH19Y2xhc3MgWHNkQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlYywieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbZm9dKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgY29ubmVjdGlvbl9zZXRfVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fWNvbnN0IHRjPWdvLmRhdGFzZXRzLmlkO2NsYXNzIGRhdGFzZXRzX0RhdGEgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGMsImRhdGEiLGUpfVtMc10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGMsImRhdGFzZXRzIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5TaWduYXR1cmU9bnVsbH1bJHNdKGUpe2NvbnN0IHQ9ZVtXc107KCJkYXRhIj09PXQmJmVbSHNdPT09dGN8fCJTaWduYXR1cmUiPT09dCYmZVtIc109PT1nby5zaWduYXR1cmUuaWQpJiYodGhpc1t0XT1lKTt0aGlzW1FuXShlKX19Y2xhc3MgRGF0YXNldHNOYW1lc3BhY2V7c3RhdGljW2ZvXShlLHQpe2lmKERhdGFzZXRzTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBEYXRhc2V0c05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgZGF0YXNldHMoZSl7cmV0dXJuIG5ldyBEYXRhc2V0cyhlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IGRhdGFzZXRzX0RhdGEoZSl9fWNvbnN0IGFjPWdvLmxvY2FsZVNldC5pZDtjbGFzcyBDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmVyYU5hbWVzPW51bGw7dGhpcy5tZXJpZGllbU5hbWVzPW51bGw7dGhpcy5tb250aE5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsImN1cnJlbmN5U3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJzeW1ib2wiLCJpc29uYW1lIiwiZGVjaW1hbCJdKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFjLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSgzKX19Y2xhc3MgRGF0ZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsImRhdGVQYXR0ZXJucyIsITApO3RoaXMuZGF0ZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFjLCJkYXRlVGltZVN5bWJvbHMiKX19Y2xhc3MgRGF5IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFjLCJkYXkiKX19Y2xhc3MgRGF5TmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IFhGQU9iamVjdEFycmF5KDcpfX1jbGFzcyBFcmEgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhYywiZXJhTmFtZXMiLCEwKTt0aGlzLmVyYT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFjLCJsb2NhbGUiLCEwKTt0aGlzLmRlc2M9ZS5kZXNjfHwiIjt0aGlzLm5hbWU9Imlzb25hbWUiO3RoaXMuY2FsZW5kYXJTeW1ib2xzPW51bGw7dGhpcy5jdXJyZW5jeVN5bWJvbHM9bnVsbDt0aGlzLmRhdGVQYXR0ZXJucz1udWxsO3RoaXMuZGF0ZVRpbWVTeW1ib2xzPW51bGw7dGhpcy5udW1iZXJQYXR0ZXJucz1udWxsO3RoaXMubnVtYmVyU3ltYm9scz1udWxsO3RoaXMudGltZVBhdHRlcm5zPW51bGw7dGhpcy50eXBlRmFjZXM9bnVsbH19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGVTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsImxvY2FsZVNldCIsITApO3RoaXMubG9jYWxlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsIm1lcmlkaWVtIil9fWNsYXNzIE1lcmlkaWVtTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsIm1lcmlkaWVtTmFtZXMiLCEwKTt0aGlzLm1lcmlkaWVtPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTW9udGggZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsIm1vbnRoIil9fWNsYXNzIE1vbnRoTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBYRkFPYmplY3RBcnJheSgxMil9fWNsYXNzIE51bWJlclBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWMsIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFjLCJudW1iZXJQYXR0ZXJucyIsITApO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhYywibnVtYmVyU3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJkZWNpbWFsIiwiZ3JvdXBpbmciLCJwZXJjZW50IiwibWludXMiLCJ6ZXJvIl0pfX1jbGFzcyBOdW1iZXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFjLCJudW1iZXJTeW1ib2xzIiwhMCk7dGhpcy5udW1iZXJTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDUpfX1jbGFzcyBUaW1lUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhYywidGltZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIFRpbWVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhYywidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIFR5cGVGYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFjLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhYywidHlwZUZhY2VzIiwhMCk7dGhpcy50eXBlRmFjZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbZm9dKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZVNldChlKX1zdGF0aWMgbWVyaWRpZW0oZSl7cmV0dXJuIG5ldyBNZXJpZGllbShlKX1zdGF0aWMgbWVyaWRpZW1OYW1lcyhlKXtyZXR1cm4gbmV3IE1lcmlkaWVtTmFtZXMoZSl9c3RhdGljIG1vbnRoKGUpe3JldHVybiBuZXcgTW9udGgoZSl9c3RhdGljIG1vbnRoTmFtZXMoZSl7cmV0dXJuIG5ldyBNb250aE5hbWVzKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJuKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybihlKX1zdGF0aWMgbnVtYmVyUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJucyhlKX1zdGF0aWMgbnVtYmVyU3ltYm9sKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9sKGUpfXN0YXRpYyBudW1iZXJTeW1ib2xzKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9scyhlKX1zdGF0aWMgdGltZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybihlKX1zdGF0aWMgdGltZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm5zKGUpfXN0YXRpYyB0eXBlRmFjZShlKXtyZXR1cm4gbmV3IFR5cGVGYWNlKGUpfXN0YXRpYyB0eXBlRmFjZXMoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZXMoZSl9fWNvbnN0IHJjPWdvLnNpZ25hdHVyZS5pZDtjbGFzcyBzaWduYXR1cmVfU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHJjLCJzaWduYXR1cmUiLCEwKX19Y2xhc3MgU2lnbmF0dXJlTmFtZXNwYWNle3N0YXRpY1tmb10oZSx0KXtpZihTaWduYXR1cmVOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFNpZ25hdHVyZU5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgc2lnbmF0dXJlX1NpZ25hdHVyZShlKX19Y29uc3QgaWM9Z28uc3R5bGVzaGVldC5pZDtjbGFzcyBTdHlsZXNoZWV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGljLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW2ZvXShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX1jb25zdCBuYz1nby54ZHAuaWQ7Y2xhc3MgeGRwX1hkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuYywieGRwIiwhMCk7dGhpcy51dWlkPWUudXVpZHx8IiI7dGhpcy50aW1lU3RhbXA9ZS50aW1lU3RhbXB8fCIiO3RoaXMuY29uZmlnPW51bGw7dGhpcy5jb25uZWN0aW9uU2V0PW51bGw7dGhpcy5kYXRhc2V0cz1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5zdHlsZXNoZWV0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRlbXBsYXRlPW51bGx9W0dzXShlKXtjb25zdCB0PWdvW2VbV3NdXTtyZXR1cm4gdCYmZVtIc109PT10LmlkfX1jbGFzcyBYZHBOYW1lc3BhY2V7c3RhdGljW2ZvXShlLHQpe2lmKFhkcE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gWGRwTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyB4ZHBfWGRwKGUpfX1jb25zdCBzYz1nby54aHRtbC5pZCxvYz1TeW1ib2woKSxjYz1uZXcgU2V0KFsiY29sb3IiLCJmb250IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC13ZWlnaHQiLCJtYXJnaW4iLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tdG9wIiwibGV0dGVyLXNwYWNpbmciLCJsaW5lLWhlaWdodCIsIm9ycGhhbnMiLCJwYWdlLWJyZWFrLWFmdGVyIiwicGFnZS1icmVhay1iZWZvcmUiLCJwYWdlLWJyZWFrLWluc2lkZSIsInRhYi1pbnRlcnZhbCIsInRhYi1zdG9wIiwidGV4dC1hbGlnbiIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtaW5kZW50IiwidmVydGljYWwtYWxpZ24iLCJ3aWRvd3MiLCJrZXJuaW5nLW1vZGUiLCJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIiwieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLCJ4ZmEtc3BhY2VydW4iLCJ4ZmEtdGFiLXN0b3BzIl0pLGxjPW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAscGFyc2VJbnQoZSkvMTAwKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxwYXJzZUludChlKS8xMDApLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT5tZWFzdXJlVG9TdHJpbmcoLjk5KihlPXQuZm9udFNpemU9TWF0aC5hYnMoZ2V0TWVhc3VyZW1lbnQoZSkpKSldLFsibGV0dGVyLXNwYWNpbmciLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibGluZS1oZWlnaHQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1ib3R0b20iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLWxlZnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLXJpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi10b3AiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsidGV4dC1pbmRlbnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsiZm9udC1mYW1pbHkiLGU9PmVdLFsidmVydGljYWwtYWxpZ24iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldXSksaGM9L1xzKy9nLHVjPS9bXHJcbl0rL2csZGM9L1xyXG4/L2c7ZnVuY3Rpb24gbWFwU3R5bGUoZSx0LGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gcjtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3QsYV1vZiBlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXtjb25zdCBlPWxjLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IG49YTtlJiYobj0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGEsaSkpO3QuZW5kc1dpdGgoInNjYWxlIik/ci50cmFuc2Zvcm09ci50cmFuc2Zvcm0/YCR7clt0XX0gJHtufWA6bjpyW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoKGUsdCk9PnQudG9VcHBlckNhc2UoKSkpXT1ufXIuZm9udEZhbWlseSYmc2V0Rm9udEZhbWlseSh7dHlwZWZhY2U6ci5mb250RmFtaWx5LHdlaWdodDpyLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6ci5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6aS5mb250U2l6ZXx8MH0sdCx0W0lzXS5mb250RmluZGVyLHIpO2lmKGEmJnIudmVydGljYWxBbGlnbiYmIjBweCIhPT1yLnZlcnRpY2FsQWxpZ24mJnIuZm9udFNpemUpe2NvbnN0IGU9LjU4Myx0PS4zMzMsYT1nZXRNZWFzdXJlbWVudChyLmZvbnRTaXplKTtyLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyhhKmUpO3IudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmcoTWF0aC5zaWduKGdldE1lYXN1cmVtZW50KHIudmVydGljYWxBbGlnbikpKmEqdCl9YSYmci5mb250U2l6ZSYmKHIuZm9udFNpemU9YGNhbGMoJHtyLmZvbnRTaXplfSAqIHZhcigtLXRvdGFsLXNjYWxlLWZhY3RvcikpYCk7Zml4VGV4dEluZGVudChyKTtyZXR1cm4gcn1jb25zdCBmYz1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgWGh0bWxPYmplY3QgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihzYyx0KTt0aGlzW29jXT0hMTt0aGlzLnN0eWxlPWUuc3R5bGV8fCIifVt0c10oZSl7c3VwZXJbdHNdKGUpO3RoaXMuc3R5bGU9ZnVuY3Rpb24gY2hlY2tTdHlsZShlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnNwbGl0KCI7IikuZmlsdGVyKChlPT4hIWUudHJpbSgpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKS5tYXAoKGU9PmUudHJpbSgpKSkpKS5maWx0ZXIoKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtJc10udXNlZFR5cGVmYWNlcy5hZGQoYSk7cmV0dXJuIGNjLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1bWW5dKCl7cmV0dXJuIWZjLmhhcyh0aGlzW1dzXSl9W1ZzXShlLHQ9ITEpe2lmKHQpdGhpc1tvY109ITA7ZWxzZXtlPWUucmVwbGFjZUFsbCh1YywiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoaGMsIiAiKSl9ZSYmKHRoaXNbc3NdKz1lKX1bS3NdKGUsdD0hMCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCBpPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjphLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjphLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6YS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmEucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmEubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6ci50b3A9ci5ib3R0b209ci5sZWZ0PXIucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6ci50b3A9ci5ib3R0b209ZVswXTtyLmxlZnQ9ci5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzpyLnRvcD1lWzBdO3IuYm90dG9tPWVbMl07ci5sZWZ0PXIucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6ci50b3A9ZVswXTtyLmxlZnQ9ZVsxXTtyLmJvdHRvbT1lWzJdO3IucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOnIudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6ci5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6ci5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjpyLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOmk9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShhLHIsaSk7aWYodGhpc1tzc10pZS5hZGRTdHJpbmcodGhpc1tzc10pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tTc10oKSkiI3RleHQiIT09dFtXc10/dFtLc10oZSk6ZS5hZGRTdHJpbmcodFtzc10pO3QmJmUucG9wRm9udCgpfVtjb10oZSl7Y29uc3QgdD1bXTt0aGlzW2xzXT17Y2hpbGRyZW46dH07dGhpc1tlc10oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbc3NdKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBhO2E9dGhpc1tvY10/dGhpc1tzc10/dGhpc1tzc10ucmVwbGFjZUFsbChkYywiXG4iKTp2b2lkIDA6dGhpc1tzc118fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbV3NdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW29jXSl9LGNoaWxkcmVuOnQsdmFsdWU6YX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W0tzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbS3NdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVtjb10oZSl7Y29uc3QgdD1zdXBlcltjb10oZSkse2h0bWw6YX09dDtpZighYSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTthLm5hbWU9ImRpdiI7YS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W3NvXSgpe3JldHVybiJcbiJ9W0tzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bY29dKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtjb10oZSl7Y29uc3QgdD1bXTt0aGlzW2xzXT17Y2hpbGRyZW46dH07dGhpc1tlc10oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW3NzXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W0tzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbS3NdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bS3NdKGUpe3N1cGVyW0tzXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1bc29dKCl7cmV0dXJuIHRoaXNbdnNdKClbU3NdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltzb10oKTpzdXBlcltzb10oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljW2ZvXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBnYz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bZm9dKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW09zXT1lfVskc10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W2hzXSgpe3N1cGVyW2hzXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW09zXS5zZXQoUXMsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbZW9dKHRoaXNbT3NdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbT3NdPXRoaXNbT3NdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bJHNdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhnbykubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6YSxuYW1lc3BhY2U6cixwcmVmaXhlczppfSl7Y29uc3Qgbj1udWxsIT09cjtpZihuKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKHIpfWkmJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChpKTtpZihhLmhhc093blByb3BlcnR5KHpzKSl7Y29uc3QgZT1nYy5kYXRhc2V0cyx0PWFbenNdO2xldCByPW51bGw7Zm9yKGNvbnN0W2EsaV1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoYSk9PT1lKXtyPXt4ZmE6aX07YnJlYWt9fXI/YVt6c109cjpkZWxldGUgYVt6c119Y29uc3Qgcz10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPXM/Lltmb10odCxhKXx8bmV3IEVtcHR5O29bTHNdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhufHxpfHxvW0xzXSgpKSYmKG9bcnNdPXtoYXNOYW1lc3BhY2U6bixwcmVmaXhlczppLG5zQWdub3N0aWM6b1tMc10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2Ese2NoZWNrOnJ9XW9mIE9iamVjdC5lbnRyaWVzKGdvKSlpZihyKGUpKXt0PWdjW2FdO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOmF9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoYSk7bGV0IHI9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFyKXtyPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LHIpfXIucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6YSxuc0Fnbm9zdGljOnJ9PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2EmJmEuZm9yRWFjaCgoKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSkpO3ImJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPWpuO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09am4pe3RoaXMuX2N1cnJlbnRbaHNdKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLChlPT5lLnNsaWNlKDEpKyIgIikpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W1luXSgpP3RoaXMuX2N1cnJlbnRbVnNdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtWc10oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtWc10oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwscj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6bix2YWx1ZTpzfW9mIGUpaWYoInhtbG5zIj09PW4pYT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPXM7ZWxzZSBpZihuLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW4uc3Vic3RyaW5nKDYpO3I/Pz1bXTtyLnB1c2goe3ByZWZpeDplLHZhbHVlOnN9KX1lbHNle2NvbnN0IGU9bi5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKWlbbl09cztlbHNle2NvbnN0IHQ9aVt6c10/Pz1PYmplY3QuY3JlYXRlKG51bGwpLFthLHJdPVtuLnNsaWNlKDAsZSksbi5zbGljZShlKzEpXTsodFthXXx8PU9iamVjdC5jcmVhdGUobnVsbCkpW3JdPXN9fXJldHVyblthLHIsaV19X2dldE5hbWVBbmRQcmVmaXgoZSx0KXtjb25zdCBhPWUuaW5kZXhPZigiOiIpO3JldHVybi0xPT09YT9bZSxudWxsXTpbZS5zdWJzdHJpbmcoYSsxKSx0PyIiOmUuc3Vic3RyaW5nKDAsYSldfW9uQmVnaW5FbGVtZW50KGUsdCxhKXtjb25zdFtyLGksbl09dGhpcy5fbWtBdHRyaWJ1dGVzKHQsZSksW3Msb109dGhpcy5fZ2V0TmFtZUFuZFByZWZpeChlLHRoaXMuX2J1aWxkZXIuaXNOc0Fnbm9zdGljKCkpLGM9dGhpcy5fYnVpbGRlci5idWlsZCh7bnNQcmVmaXg6byxuYW1lOnMsYXR0cmlidXRlczpuLG5hbWVzcGFjZTpyLHByZWZpeGVzOml9KTtjW0lzXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2NbaHNdKCk7dGhpcy5fY3VycmVudFskc10oYykmJmNbYW9dKHRoaXMuX2lkcyk7Y1t0c10odGhpcy5fYnVpbGRlcil9ZWxzZXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpO3RoaXMuX2N1cnJlbnQ9Y319b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W0JzXSgpJiYic3RyaW5nIj09dHlwZW9mIHRbc3NdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W3NzXSk7dFtzc109bnVsbDt0WyRzXShhKX10W2hzXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFskc10odCkmJnRbYW9dKHRoaXMuX2lkcyk7dFt0c10odGhpcy5fYnVpbGRlcil9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgQmluZGVyKHRoaXMucm9vdCk7dGhpcy5mb3JtPXQuYmluZCgpO3RoaXMuZGF0YUhhbmRsZXI9bmV3IERhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW0lzXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiEoIXRoaXMucm9vdHx8IXRoaXMuZm9ybSl9X2NyZWF0ZVBhZ2VzSGVscGVyKCl7Y29uc3QgZT10aGlzLmZvcm1bb29dKCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pKX1hc3luYyBfY3JlYXRlUGFnZXMoKXt0cnl7dGhpcy5wYWdlcz1hd2FpdCB0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO3RoaXMuZGltcz10aGlzLnBhZ2VzLmNoaWxkcmVuLm1hcCgoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGEpXX0pKX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bSXNdLmltYWdlcz1lfXNldEZvbnRzKGUpe3RoaXMuZm9ybVtJc10uZm9udEZpbmRlcj1uZXcgRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bSXNdLnVzZWRUeXBlZmFjZXMpe2U9c3RyaXBRdW90ZXMoZSk7dGhpcy5mb3JtW0lzXS5mb250RmluZGVyLmZpbmQoZSl8fHQucHVzaChlKX1yZXR1cm4gdC5sZW5ndGg+MD90Om51bGx9YXBwZW5kRm9udHMoZSx0KXt0aGlzLmZvcm1bSXNdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IFhGQVBhcnNlcihYaHRtbE5hbWVzcGFjZSwhMCkucGFyc2UoZSk7aWYoIVsiYm9keSIsInhodG1sIl0uaW5jbHVkZXModFtXc10pKXtjb25zdCBlPVhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2VbUW5dKHQpO3Q9ZX1jb25zdCBhPXRbY29dKCk7aWYoIWEuc3VjY2VzcylyZXR1cm4gbnVsbDtjb25zdHtodG1sOnJ9PWEse2F0dHJpYnV0ZXM6aX09cjtpZihpKXtpLmNsYXNzJiYoaS5jbGFzcz1pLmNsYXNzLmZpbHRlcigoZT0+IWUuc3RhcnRzV2l0aCgieGZhIikpKSk7aS5kaXI9ImF1dG8ifXJldHVybntodG1sOnIsc3RyOnRbc29dKCl9fWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX1jbGFzcyBBbm5vdGF0aW9uRmFjdG9yeXtzdGF0aWMgY3JlYXRlR2xvYmFscyhlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2UuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxlLmVuc3VyZURvYygieGZhRGF0YXNldHMiKSxlLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IiksZS5lbnN1cmVDYXRhbG9nKCJiYXNlVXJsIiksZS5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpLGUuZW5zdXJlQ2F0YWxvZygiZ2xvYmFsQ29sb3JTcGFjZUNhY2hlIildKS50aGVuKCgoW3QsYSxyLGksbixzXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czphLHN0cnVjdFRyZWVSb290OnIsYmFzZVVybDppLGF0dGFjaG1lbnRzOm4sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnN9KSksKGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsYSxyLGksbixzKXtjb25zdCBvPWk/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxhLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGEucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLHIsaSxuLG8sc10pfXN0YXRpYyBfY3JlYXRlKGUsdCxhLHIsaT0hMSxuPW51bGwscz1udWxsLG89bnVsbCl7Y29uc3QgYz1lLmZldGNoSWZSZWYodCk7aWYoIShjIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0e2Fjcm9Gb3JtOmwscGRmTWFuYWdlcjpofT1hLHU9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7ci5jcmVhdGVPYmpJZCgpfWA7bGV0IGQ9Yy5nZXQoIlN1YnR5cGUiKTtkPWQgaW5zdGFuY2VvZiBOYW1lP2QubmFtZTpudWxsO2NvbnN0IGY9e3hyZWY6ZSxyZWY6dCxkaWN0OmMsc3VidHlwZTpkLGlkOnUsYW5ub3RhdGlvbkdsb2JhbHM6YSxjb2xsZWN0RmllbGRzOmksb3JwaGFuRmllbGRzOm4sbmVlZEFwcGVhcmFuY2VzOiFpJiYhMD09PWwuZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6cyxldmFsdWF0b3JPcHRpb25zOmguZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOm99O3N3aXRjaChkKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24oZik7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKGYpO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmMsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKGYpO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24oZik7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKGYpO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24oZil9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKGYpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKGYpO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKGYpO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihmKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKGYpO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24oZik7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24oZik7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKGYpO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKGYpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24oZik7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihmKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKGYpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKGYpO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24oZik7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24oZik7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24oZik7ZGVmYXVsdDppfHx3YXJuKGQ/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke2R9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihmKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGEpe3RyeXtjb25zdCByPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IGk9ci5nZXRSYXcoIlAiKTtpZihpIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgYS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtpXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKHIuaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgbj1hd2FpdCBhLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCByPWF3YWl0IGEuZ2V0UGFnZShlKSxpPWF3YWl0IGEuZW5zdXJlKHIsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGEgb2YgaSlpZihhIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChhLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxhKXtpZighYSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCByO2Zvcihjb25zdHtiaXRtYXBJZDphLGJpdG1hcDppfW9mIGUpaWYoaSl7cnx8PW5ldyBNYXA7ci5zZXQoYSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2UoaSx0KSl9cmV0dXJuIHJ9c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSxyLGkpe2NvbnN0IG49ZS54cmVmO2xldCBzO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmN9PWUub3B0aW9ucztmb3IoY29uc3QgbCBvZiBhKWlmKCFsLmRlbGV0ZWQpc3dpdGNoKGwuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZzppZighcyl7Y29uc3QgZT1uZXcgRGljdChuKTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3M9bi5nZXROZXdUZW1wb3JhcnlSZWYoKTtpLnB1dChzLHtkYXRhOmV9KX1vLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpzfSkpO2JyZWFrO2Nhc2UgcDpsLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGwsaSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkpKTticmVhaztjYXNlIGI6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGwsaSkpO2JyZWFrO2Nhc2UgbTpjb25zdCBhPWM/YXdhaXQocj8uZ2V0KGwuYml0bWFwSWQpKTpudWxsO2lmKGE/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWE7aWYodCl7Y29uc3QgYT1uLmdldE5ld1RlbXBvcmFyeVJlZigpO2kucHV0KGEse2RhdGE6dH0pO2UuZGljdC5zZXQoIlNNYXNrIixhKX1jb25zdCByPWEuaW1hZ2VSZWY9bi5nZXROZXdUZW1wb3JhcnlSZWYoKTtpLnB1dChyLHtkYXRhOmV9KTthLmltYWdlU3RyZWFtPWEuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkse2ltYWdlOmF9KSk7YnJlYWs7Y2FzZSB5Om8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGwsaSx7fSkpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChvKX19c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEscixpKXtpZighcilyZXR1cm4gbnVsbDtjb25zdHtvcHRpb25zOm4seHJlZjpzfT10LG89W107Zm9yKGNvbnN0IGMgb2YgcilpZighYy5kZWxldGVkKXN3aXRjaChjLmFubm90YXRpb25UeXBlKXtjYXNlIGc6by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxzLGMse2V2YWx1YXRvcjp0LHRhc2s6YSxldmFsdWF0b3JPcHRpb25zOm59KSk7YnJlYWs7Y2FzZSBwOmMucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxzLGMse2V2YWx1YXRvck9wdGlvbnM6bn0pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxzLGMse2V2YWx1YXRvck9wdGlvbnM6bn0pKTticmVhaztjYXNlIGI6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUscyxjLHtldmFsdWF0b3JPcHRpb25zOm59KSk7YnJlYWs7Y2FzZSBtOmNvbnN0IHI9bi5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD9hd2FpdChpPy5nZXQoYy5iaXRtYXBJZCkpOm51bGw7aWYocj8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06dH09cjt0JiZlLmRpY3Quc2V0KCJTTWFzayIsdCk7ci5pbWFnZVJlZj1uZXcgSnBlZ1N0cmVhbShlLGUubGVuZ3RoKTtyLmltYWdlU3RyZWFtPXIuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHMsYyx7aW1hZ2U6cixldmFsdWF0b3JPcHRpb25zOm59KSk7YnJlYWs7Y2FzZSB5Om8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUscyxjLHtldmFsdWF0b3JPcHRpb25zOm59KSl9cmV0dXJuIFByb21pc2UuYWxsKG8pfX1mdW5jdGlvbiBnZXRSZ2JDb2xvcihlLHQ9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdDtjb25zdCBhPXR8fG5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDE6Q29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtjYXNlIDM6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgNDpDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIGdldFBkZkNvbG9yQXJyYXkoZSl7cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+ZS8yNTUpKX1mdW5jdGlvbiBnZXRRdWFkUG9pbnRzKGUsdCl7Y29uc3QgYT1lLmdldEFycmF5KCJRdWFkUG9pbnRzIik7aWYoIWlzTnVtYmVyQXJyYXkoYSxudWxsKXx8MD09PWEubGVuZ3RofHxhLmxlbmd0aCU4PjApcmV0dXJuIG51bGw7Y29uc3Qgcj1uZXcgRmxvYXQzMkFycmF5KGEubGVuZ3RoKTtmb3IobGV0IGU9MCxpPWEubGVuZ3RoO2U8aTtlKz04KXtjb25zdFtpLG4scyxvLGMsbCxoLHVdPWEuc2xpY2UoZSxlKzgpLGQ9TWF0aC5taW4oaSxzLGMsaCksZj1NYXRoLm1heChpLHMsYyxoKSxnPU1hdGgubWluKG4sbyxsLHUpLHA9TWF0aC5tYXgobixvLGwsdSk7aWYobnVsbCE9PXQmJihkPHRbMF18fGY+dFsyXXx8Zzx0WzFdfHxwPnRbM10pKXJldHVybiBudWxsO3Iuc2V0KFtkLHAsZixwLGQsZyxmLGddLGUpfXJldHVybiByfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsYSl7Y29uc3Qgcj1uZXcgRmxvYXQzMkFycmF5KFsxLzAsMS8wLC0xLzAsLTEvMF0pO1V0aWwuYXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxhLHIpO2NvbnN0W2ksbixzLG9dPXI7aWYoaT09PXN8fG49PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1pKSxsPShlWzNdLWVbMV0pLyhvLW4pO3JldHVybltjLDAsMCxsLGVbMF0taSpjLGVbMV0tbipsXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmEsYW5ub3RhdGlvbkdsb2JhbHM6cixyZWY6aSxvcnBoYW5GaWVsZHM6bn09ZSxzPW4/LmdldChpKTtzJiZ0LnNldCgiUGFyZW50IixzKTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG89dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG8pO3RoaXMuc2V0Um90YXRpb24obyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBjPSEhKHRoaXMuZmxhZ3MmZWUpLGw9ISEodGhpcy5mbGFncyZ0ZSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZaKSxub0hUTUw6YyYmbCxpc0VkaXRhYmxlOiExLHN0cnVjdFBhcmVudDotMX07aWYoci5zdHJ1Y3RUcmVlUm9vdCl7bGV0IGE9dC5nZXQoIlN0cnVjdFBhcmVudCIpO3RoaXMuZGF0YS5zdHJ1Y3RQYXJlbnQ9YT1OdW1iZXIuaXNJbnRlZ2VyKGEpJiZhPj0wP2E6LTE7ci5zdHJ1Y3RUcmVlUm9vdC5hZGRBbm5vdGF0aW9uSWRUb1BhZ2UoZS5wYWdlUmVmLGEpfWlmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3Qgcj10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2Ygcil0IGluc3RhbmNlb2YgUmVmJiZlLnB1c2godC50b1N0cmluZygpKTswIT09ZS5sZW5ndGgmJih0aGlzLmRhdGEua2lkSWRzPWUpfXRoaXMuZGF0YS5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGEsdCx5ZSk7dGhpcy5kYXRhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCk7dGhpcy5kYXRhLnBhZ2VJbmRleD1lLnBhZ2VJbmRleH1jb25zdCBoPXQuZ2V0KCJJVCIpO2ggaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLml0PWgubmFtZSk7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbDt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ITF9X2hhc0ZsYWcoZSx0KXtyZXR1cm4hIShlJnQpfV9idWlsZEZsYWdzKGUsdCl7bGV0e2ZsYWdzOmF9PXRoaXM7aWYodm9pZCAwPT09ZSl7aWYodm9pZCAwPT09dClyZXR1cm47cmV0dXJuIHQ/YSZ+WTphJn5KfFl9aWYoZSl7YXw9WTtyZXR1cm4gdD9hJn5RfEo6YSZ+SnxRfWEmPX4oSnxRKTtyZXR1cm4gdD9hJn5ZOmF8WX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLEspJiYhdGhpcy5faGFzRmxhZyhlLFEpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLFkpJiYhdGhpcy5faGFzRmxhZyhlLEopJiYhdGhpcy5faGFzRmxhZyhlLEspfW11c3RCZVZpZXdlZChlLHQpe2NvbnN0IGE9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/Lm5vVmlldztyZXR1cm4gdm9pZCAwIT09YT8hYTp0aGlzLnZpZXdhYmxlJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLEopfW11c3RCZVByaW50ZWQoZSl7Y29uc3QgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9QcmludDtyZXR1cm4gdm9pZCAwIT09dD8hdDp0aGlzLnByaW50YWJsZX1tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhlLHQ9bnVsbCl7cmV0dXJuIGU/IXRoaXMuZGF0YS5pc0VkaXRhYmxlOiF0Py5oYXModGhpcy5kYXRhLmlkKX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PWJpZGkodCkuZGlyPyJydGwiOiJsdHIifX1zZXREZWZhdWx0QXBwZWFyYW5jZShlKXtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxyPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxhLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIHI/cjoiIjt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UpfXNldFRpdGxlKGUpe3RoaXMuX3RpdGxlPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldENvbnRlbnRzKGUpe3RoaXMuX2NvbnRlbnRzPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldE1vZGlmaWNhdGlvbkRhdGUoZSl7dGhpcy5tb2RpZmljYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9c2V0RmxhZ3MoZSl7dGhpcy5mbGFncz1OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjA/ZTowO3RoaXMuZmxhZ3MmSyYmIkFubm90YXRpb24iIT09dGhpcy5jb25zdHJ1Y3Rvci5uYW1lJiYodGhpcy5mbGFnc149Syl9aGFzRmxhZyhlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLGUpfXNldFJlY3RhbmdsZShlKXt0aGlzLnJlY3RhbmdsZT1sb29rdXBOb3JtYWxSZWN0KGUsWzAsMCwwLDBdKX1zZXRDb2xvcihlKXt0aGlzLmNvbG9yPWdldFJnYkNvbG9yKGUpfXNldExpbmVFbmRpbmdzKGUpe3RoaXMubGluZUVuZGluZ3M9WyJOb25lIiwiTm9uZSJdO2lmKEFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aClmb3IobGV0IHQ9MDt0PDI7dCsrKXtjb25zdCBhPWVbdF07aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9d2FybihgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUsdCl7dGhpcy5yb3RhdGlvbj0wO2xldCBhPWUgaW5zdGFuY2VvZiBEaWN0P2UuZ2V0KCJSIil8fDA6dC5nZXQoIlJvdGF0ZSIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJjAhPT1hKXthJT0zNjA7YTwwJiYoYSs9MzYwKTthJTkwPT0wJiYodGhpcy5yb3RhdGlvbj1hKX19c2V0Qm9yZGVyQW5kQmFja2dyb3VuZENvbG9ycyhlKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBEaWN0KWlmKGUuaGFzKCJCUyIpKXtjb25zdCB0PWUuZ2V0KCJCUyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXQuZ2V0KCJUeXBlIik7aWYoIWV8fGlzTmFtZShlLCJCb3JkZXIiKSl7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0LmdldCgiVyIpLHRoaXMucmVjdGFuZ2xlKTt0aGlzLmJvcmRlclN0eWxlLnNldFN0eWxlKHQuZ2V0KCJTIikpO3RoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHQuZ2V0QXJyYXkoIkQiKSl9fX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPXQuZ2V0KCJOIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3RoaXMuYXBwZWFyYW5jZT1hO3JldHVybn1pZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1lLmdldCgiQVMiKTtpZighKHIgaW5zdGFuY2VvZiBOYW1lJiZhLmhhcyhyLm5hbWUpKSlyZXR1cm47Y29uc3QgaT1hLmdldChyLm5hbWUpO2kgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodGhpcy5hcHBlYXJhbmNlPWkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2YgTmFtZT93YXJuKCJzZXRPcHRpb25hbENvbnRlbnQ6IFN1cHBvcnQgZm9yIC9OYW1lLWVudHJ5IGlzIG5vdCBpbXBsZW1lbnRlZC4iKTp0IGluc3RhbmNlb2YgRGljdCYmKHRoaXMub2M9dCl9YXN5bmMgbG9hZFJlc291cmNlcyhlLHQpe2NvbnN0IGE9YXdhaXQgdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKTthJiZhd2FpdCBPYmplY3RMb2FkZXIubG9hZChhLGUsYS54cmVmKTtyZXR1cm4gYX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEscil7Y29uc3R7aGFzT3duQ2FudmFzOmksaWQ6bixyZWN0Om99PXRoaXMuZGF0YTtsZXQgYz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShpJiZhJnMpO2lmKGwmJigwPT09dGhpcy53aWR0aHx8MD09PXRoaXMuaGVpZ2h0KSl7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMTtyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1pZighYyl7aWYoIWwpcmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgU3RyaW5nU3RyZWFtKCIiKTtjLmRpY3Q9bmV3IERpY3R9Y29uc3QgaD1jLmRpY3QsdT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoSWEsYyksZD1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLGY9bG9va3VwTWF0cml4KGguZ2V0QXJyYXkoIk1hdHJpeCIpLEZhKSxnPWdldFRyYW5zZm9ybU1hdHJpeChvLGQsZikscD1uZXcgT3BlcmF0b3JMaXN0O2xldCBtO3RoaXMub2MmJihtPWF3YWl0IGUucGFyc2VNYXJrZWRDb250ZW50UHJvcHModGhpcy5vYyxudWxsKSk7dm9pZCAwIT09bSYmcC5hZGRPcChqdCxbIk9DIixtXSk7cC5hZGRPcCgkdCxbbixvLGcsZixsXSk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpjLHRhc2s6dCxyZXNvdXJjZXM6dSxvcGVyYXRvckxpc3Q6cCxmYWxsYmFja0ZvbnREaWN0OnRoaXMuX2ZhbGxiYWNrRm9udERpY3R9KTtwLmFkZE9wKEd0LFtdKTt2b2lkIDAhPT1tJiZwLmFkZE9wKF90LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpwLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhLHIpe3JldHVybiBudWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITF9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuITF9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxhKXtpZighdGhpcy5hcHBlYXJhbmNlKXJldHVybjtjb25zdCByPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhUYSx0aGlzLmFwcGVhcmFuY2UpLGk9W10sbj1bXTtsZXQgcz1udWxsO2NvbnN0IG89e2Rlc2lyZWRTaXplOk1hdGguSW5maW5pdHkscmVhZHk6ITAsZW5xdWV1ZShlLHQpe2Zvcihjb25zdCB0IG9mIGUuaXRlbXMpaWYodm9pZCAwIT09dC5zdHIpe3N8fD10LnRyYW5zZm9ybS5zbGljZSgtMik7bi5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7aS5wdXNoKG4uam9pbigiIikudHJpbUVuZCgpKTtuLmxlbmd0aD0wfX19fTthd2FpdCBlLmdldFRleHRDb250ZW50KHtzdHJlYW06dGhpcy5hcHBlYXJhbmNlLHRhc2s6dCxyZXNvdXJjZXM6cixpbmNsdWRlTWFya2VkQ29udGVudDohMCxrZWVwV2hpdGVTcGFjZTohMCxzaW5rOm8sdmlld0JveDphfSk7dGhpcy5yZXNldCgpO24ubGVuZ3RoJiZpLnB1c2gobi5qb2luKCIiKS50cmltRW5kKCkpO2lmKGkubGVuZ3RoPjF8fGlbMF0pe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlLmRpY3QsdD1sb29rdXBSZWN0KGUuZ2V0QXJyYXkoIkJCb3giKSxudWxsKSxhPWxvb2t1cE1hdHJpeChlLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KHMsdCxhKTt0aGlzLmRhdGEudGV4dENvbnRlbnQ9aX19X3RyYW5zZm9ybVBvaW50KGUsdCxhKXtjb25zdHtyZWN0OnJ9PXRoaXMuZGF0YTt0fHw9WzAsMCwxLDFdO2F8fD1bMSwwLDAsMSwwLDBdO2NvbnN0IGk9Z2V0VHJhbnNmb3JtTWF0cml4KHIsdCxhKTtpWzRdLT1yWzBdO2lbNV0tPXJbMV07Y29uc3Qgbj1lLnNsaWNlKCk7VXRpbC5hcHBseVRyYW5zZm9ybShuLGkpO1V0aWwuYXBwbHlUcmFuc2Zvcm0obixhKTtyZXR1cm4gbn1nZXRGaWVsZE9iamVjdCgpe3JldHVybiB0aGlzLmRhdGEua2lkSWRzP3tpZDp0aGlzLmRhdGEuaWQsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHR5cGU6IiIsa2lkSWRzOnRoaXMuZGF0YS5raWRJZHMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHJvdGF0aW9uOnRoaXMucm90YXRpb259Om51bGx9cmVzZXQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9zdHJlYW1zKWUucmVzZXQoKX1fY29uc3RydWN0RmllbGROYW1lKGUpe2lmKCFlLmhhcygiVCIpJiYhZS5oYXMoIlBhcmVudCIpKXt3YXJuKCJVbmtub3duIGZpZWxkIG5hbWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBmaWVsZCBuYW1lLiIpO3JldHVybiIifWlmKCFlLmhhcygiUGFyZW50IikpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IHI9bmV3IFJlZlNldDtlLm9iaklkJiZyLnB1dChlLm9iaklkKTtmb3IoO2EuaGFzKCJQYXJlbnQiKTspe2E9YS5nZXQoIlBhcmVudCIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpfHxhLm9iaklkJiZyLmhhcyhhLm9iaklkKSlicmVhazthLm9iaklkJiZyLnB1dChhLm9iaklkKTthLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoYS5nZXQoIlQiKSkpfXJldHVybiB0LmpvaW4oIi4iKX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF19Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0xO3RoaXMucmF3V2lkdGg9MTt0aGlzLnN0eWxlPWZlO3RoaXMuZGFzaEFycmF5PVszXTt0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9MDt0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPTB9c2V0V2lkdGgoZSx0PVswLDAsMCwwXSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe3RoaXMucmF3V2lkdGg9ZTtjb25zdCBhPSh0WzJdLXRbMF0pLzIscj0odFszXS10WzFdKS8yO2lmKGE+MCYmcj4wJiYoZT5hfHxlPnIpKXt3YXJuKGBBbm5vdGF0aW9uQm9yZGVyU3R5bGUuc2V0V2lkdGggLSBpZ25vcmluZyB3aWR0aDogJHtlfWApO2U9MX19dGhpcy53aWR0aD1lfX1zZXRTdHlsZShlKXtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlMiOnRoaXMuc3R5bGU9ZmU7YnJlYWs7Y2FzZSJEIjp0aGlzLnN0eWxlPWdlO2JyZWFrO2Nhc2UiQiI6dGhpcy5zdHlsZT1wZTticmVhaztjYXNlIkkiOnRoaXMuc3R5bGU9bWU7YnJlYWs7Y2FzZSJVIjp0aGlzLnN0eWxlPWJlfX1zZXREYXNoQXJyYXkoZSx0PSExKXtpZihBcnJheS5pc0FycmF5KGUpKXtsZXQgYT0hMCxyPSEwO2Zvcihjb25zdCB0IG9mIGUpe2lmKCEoK3Q+PTApKXthPSExO2JyZWFrfXQ+MCYmKHI9ITEpfWlmKDA9PT1lLmxlbmd0aHx8YSYmIXIpe3RoaXMuZGFzaEFycmF5PWU7dCYmdGhpcy5zZXRTdHlsZShOYW1lLmdldCgiRCIpKX1lbHNlIHRoaXMud2lkdGg9MH1lbHNlIGUmJih0aGlzLndpZHRoPTApfXNldEhvcml6b250YWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz1lKX1zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz1lKX19Y2xhc3MgTWFya3VwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJJUlQiKSl7Y29uc3QgZT10LmdldFJhdygiSVJUIik7dGhpcy5kYXRhLmluUmVwbHlUbz1lIGluc3RhbmNlb2YgUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2YgTmFtZT9hLm5hbWU6Vn1sZXQgYT1udWxsO2lmKHRoaXMuZGF0YS5yZXBseVR5cGU9PT1HKXtjb25zdCBlPXQuZ2V0KCJJUlQiKTt0aGlzLnNldFRpdGxlKGUuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKGUuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7aWYoZS5oYXMoIkNyZWF0aW9uRGF0ZSIpKXt0aGlzLnNldENyZWF0aW9uRGF0ZShlLmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEuY3JlYXRpb25EYXRlPW51bGw7aWYoZS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGUuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7YT1lLmdldFJhdygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7YT10LmdldFJhdygiUG9wdXAiKTt0LmhhcygiQyIpfHwodGhpcy5kYXRhLmNvbG9yPW51bGwpfXRoaXMuZGF0YS5wb3B1cFJlZj1hIGluc3RhbmNlb2YgUmVmP2EudG9TdHJpbmcoKTpudWxsO3QuaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwodC5nZXQoIlJDIikpKX1zZXRDcmVhdGlvbkRhdGUoZSl7dGhpcy5jcmVhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZSxleHRyYTp0LHN0cm9rZUNvbG9yOmEsZmlsbENvbG9yOnIsYmxlbmRNb2RlOmksc3Ryb2tlQWxwaGE6bixmaWxsQWxwaGE6cyxwb2ludHNDYWxsYmFjazpvfSl7Y29uc3QgYz10aGlzLmRhdGEucmVjdD1bMS8wLDEvMCwtMS8wLC0xLzBdLGw9WyJxIl07dCYmbC5wdXNoKHQpO2EmJmwucHVzaChgJHthWzBdfSAke2FbMV19ICR7YVsyXX0gUkdgKTtyJiZsLnB1c2goYCR7clswXX0gJHtyWzFdfSAke3JbMl19IHJnYCk7Y29uc3QgaD10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1oLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3QgdD1vKGwsaC5zdWJhcnJheShlLGUrOCkpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLnQsYyl9bC5wdXNoKCJRIik7Y29uc3QgdT1uZXcgRGljdChlKSxkPW5ldyBEaWN0KGUpO2Quc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjb25zdCBmPW5ldyBTdHJpbmdTdHJlYW0obC5qb2luKCIgIikpO2YuZGljdD1kO3Uuc2V0KCJGbTAiLGYpO2NvbnN0IGc9bmV3IERpY3QoZSk7aSYmZy5zZXQoIkJNIixOYW1lLmdldChpKSk7Im51bWJlciI9PXR5cGVvZiBuJiZnLnNldCgiQ0EiLG4pOyJudW1iZXIiPT10eXBlb2YgcyYmZy5zZXQoImNhIixzKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGcpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLHUpO2NvbnN0IGI9bmV3IERpY3QoZSk7Yi5zZXQoIlJlc291cmNlcyIsbSk7Yi5zZXQoIkJCb3giLGMpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD1iO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZil9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGEscil7Y29uc3QgaT10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksbj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLHIpO2xldCBzO2lmKG4pe2NvbnN0IHI9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtzPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOnJ9KTthLnB1dChyLHtkYXRhOm59KX1lbHNlIHM9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJnMuc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTthLnB1dChpLHtkYXRhOnN9KTtyZXR1cm57cmVmOml9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEscil7Y29uc3QgaT1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oYSx0LHIpLG49dGhpcy5jcmVhdGVOZXdEaWN0KGEsdCxpP3thcDppfTp7fSkscz1uZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe2RpY3Q6bix4cmVmOnQsYW5ub3RhdGlvbkdsb2JhbHM6ZSxldmFsdWF0b3JPcHRpb25zOnIuZXZhbHVhdG9yT3B0aW9uc30pO2EucmVmJiYocy5yZWY9cy5yZWZUb1JlcGxhY2U9YS5yZWYpO3JldHVybiBzfX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphLGFubm90YXRpb25HbG9iYWxzOnJ9PWUsaT10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO2kuYW5ub3RhdGlvblR5cGU9JDt2b2lkIDA9PT1pLmZpZWxkTmFtZSYmKGkuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09aS5hY3Rpb25zJiYoaS5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGEsdCx5ZSkpO2xldCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlYiLGdldEFycmF5OiEwfSk7aS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShuKTtjb25zdCBzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRWIixnZXRBcnJheTohMH0pO2kuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHMpO2lmKHZvaWQgMD09PW4mJnIueGZhRGF0YXNldHMpe2NvbnN0IGU9dGhpcy5fdGl0bGUuc3RyO2lmKGUpe3RoaXMuX2hhc1ZhbHVlRnJvbVhGQT0hMDtpLmZpZWxkVmFsdWU9bj1yLnhmYURhdGFzZXRzLmdldFZhbHVlKGUpfX12b2lkIDA9PT1uJiZudWxsIT09aS5kZWZhdWx0RmllbGRWYWx1ZSYmKGkuZmllbGRWYWx1ZT1pLmRlZmF1bHRGaWVsZFZhbHVlKTtpLmFsdGVybmF0aXZlVGV4dD1zdHJpbmdUb1BERlN0cmluZyh0LmdldCgiVFUiKXx8IiIpO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7aS5oYXNBcHBlYXJhbmNlfHw9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1pLmZpZWxkVmFsdWUmJm51bGwhPT1pLmZpZWxkVmFsdWU7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KTtpLmZpZWxkVHlwZT1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtjb25zdCBjPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRSIn0pLGw9ci5hY3JvRm9ybS5nZXQoIkRSIiksaD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6YyxhY3JvRm9ybVJlc291cmNlczpsLGFwcGVhcmFuY2VSZXNvdXJjZXM6aCxtZXJnZWRSZXNvdXJjZXM6RGljdC5tZXJnZSh7eHJlZjphLGRpY3RBcnJheTpbYyxoLGxdLG1lcmdlU3ViRGljdHM6ITB9KX07aS5maWVsZEZsYWdzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihpLmZpZWxkRmxhZ3MpfHxpLmZpZWxkRmxhZ3M8MCkmJihpLmZpZWxkRmxhZ3M9MCk7aS5wYXNzd29yZD10aGlzLmhhc0ZpZWxkRmxhZyhuZSk7aS5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhhZSk7aS5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhyZSk7aS5oaWRkZW49dGhpcy5faGFzRmxhZyhpLmFubm90YXRpb25GbGFncyxKKXx8dGhpcy5faGFzRmxhZyhpLmFubm90YXRpb25GbGFncyxRKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKChlPT4ic3RyaW5nIj09dHlwZW9mIGUpKS5tYXAoKGU9PnN0cmluZ1RvUERGU3RyaW5nKGUpKSk6ZSBpbnN0YW5jZW9mIE5hbWU/c3RyaW5nVG9QREZTdHJpbmcoZS5uYW1lKToic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbH1oYXNGaWVsZEZsYWcoZSl7cmV0dXJuISEodGhpcy5kYXRhLmZpZWxkRmxhZ3MmZSl9X2lzVmlld2FibGUoZSl7cmV0dXJuITB9bXVzdEJlVmlld2VkKGUsdCl7cmV0dXJuIHQ/dGhpcy52aWV3YWJsZTpzdXBlci5tdXN0QmVWaWV3ZWQoZSx0KSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxRKX1nZXRSb3RhdGlvbk1hdHJpeChlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7cmV0dXJuIDA9PT10P0ZhOmdldFJvdGF0aW9uTWF0cml4KHQsdGhpcy53aWR0aCx0aGlzLmhlaWdodCl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGE9MD09PXR8fDE4MD09PXQ/YDAgMCAke3RoaXMud2lkdGh9ICR7dGhpcy5oZWlnaHR9IHJlYDpgMCAwICR7dGhpcy5oZWlnaHR9ICR7dGhpcy53aWR0aH0gcmVgO2xldCByPSIiO3RoaXMuYmFja2dyb3VuZENvbG9yJiYocj1gJHtnZXRQZGZDb2xvcih0aGlzLmJhY2tncm91bmRDb2xvciwhMCl9ICR7YX0gZiBgKTtpZih0aGlzLmJvcmRlckNvbG9yKXtyKz1gJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofHwxfSB3ICR7Z2V0UGRmQ29sb3IodGhpcy5ib3JkZXJDb2xvciwhMSl9ICR7YX0gUyBgfXJldHVybiByfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsYSxyKXtpZihhJmwmJiEodGhpcyBpbnN0YW5jZW9mIFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24pJiYhdGhpcy5kYXRhLm5vSFRNTCYmIXRoaXMuZGF0YS5oYXNPd25DYW52YXMpcmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMCxzZXBhcmF0ZUNhbnZhczohMX07aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxyKTtjb25zdCBpPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGEscik7aWYodGhpcy5hcHBlYXJhbmNlJiZudWxsPT09aSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHIpO2NvbnN0IG49bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1pKXJldHVybntvcExpc3Q6bixzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IG89ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZzKSxjPVswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0saD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsYyxbMSwwLDAsMSwwLDBdKTtsZXQgdTt0aGlzLm9jJiYodT1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PXUmJm4uYWRkT3AoanQsWyJPQyIsdV0pO24uYWRkT3AoJHQsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxoLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgociksb10pO2NvbnN0IGQ9bmV3IFN0cmluZ1N0cmVhbShpKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmQsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0Om59KTtuLmFkZE9wKEd0LFtdKTt2b2lkIDAhPT11JiZuLmFkZE9wKF90LFtdKTtyZXR1cm57b3BMaXN0Om4sc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOm99fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dGhpcy5ib3JkZXJDb2xvciYmdC5zZXQoIkJDIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYm9yZGVyQ29sb3IpKTt0aGlzLmJhY2tncm91bmRDb2xvciYmdC5zZXQoIkJHIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYmFja2dyb3VuZENvbG9yKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hbWVuZFNhdmVkRGljdChlLHQpe31zZXRWYWx1ZShlLHQsYSxyKXtjb25zdHtkaWN0OmkscmVmOm59PWZ1bmN0aW9uIGdldFBhcmVudFRvVXBkYXRlKGUsdCxhKXtjb25zdCByPW5ldyBSZWZTZXQsaT1lLG49e2RpY3Q6bnVsbCxyZWY6bnVsbH07Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmIXIuaGFzKHQpOyl7ci5wdXQodCk7aWYoZS5oYXMoIlQiKSlicmVhaztpZighKCh0PWUuZ2V0UmF3KCJQYXJlbnQiKSlpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG47ZT1hLmZldGNoKHQpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlIT09aSl7bi5kaWN0PWU7bi5yZWY9dH1yZXR1cm4gbn0oZSx0aGlzLnJlZixhKTtpZihpKXtpZighci5oYXMobikpe2NvbnN0IGU9aS5jbG9uZSgpO2Uuc2V0KCJWIix0KTtyLnB1dChuLHtkYXRhOmV9KTtyZXR1cm4gZX19ZWxzZSBlLnNldCgiViIsdCk7cmV0dXJuIG51bGx9YXN5bmMgc2F2ZShlLHQsYSxyKXtjb25zdCBpPWE/LmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhpPy5ub1ZpZXcsaT8ubm9QcmludCk7bGV0IHM9aT8udmFsdWUsbz1pPy5yb3RhdGlvbjtpZihzPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PXMpe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PW8mJnZvaWQgMD09PW4pcmV0dXJuO3N8fD10aGlzLmRhdGEuZmllbGRWYWx1ZX1pZih2b2lkIDA9PT1vJiYhdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZBcnJheS5pc0FycmF5KHMpJiZBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmaXNBcnJheUVxdWFsKHMsdGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZ2b2lkIDA9PT1uKXJldHVybjt2b2lkIDA9PT1vJiYobz10aGlzLnJvdGF0aW9uKTtsZXQgbD1udWxsO2lmKCF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpe2w9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYyxhKTtpZihudWxsPT09bCYmdm9pZCAwPT09bilyZXR1cm59bGV0IGg9ITE7aWYobD8ubmVlZEFwcGVhcmFuY2VzKXtoPSEwO2w9bnVsbH1jb25zdHt4cmVmOnV9PWUsZD11LmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBmPW5ldyBEaWN0KHUpO2Zvcihjb25zdCBlIG9mIGQuZ2V0S2V5cygpKSJBUCIhPT1lJiZmLnNldChlLGQuZ2V0UmF3KGUpKTtpZih2b2lkIDAhPT1uKXtmLnNldCgiRiIsbik7aWYobnVsbD09PWwmJiFoKXtjb25zdCBlPWQuZ2V0UmF3KCJBUCIpO2UmJmYuc2V0KCJBUCIsZSl9fWNvbnN0IGc9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpzfSxwPXRoaXMuc2V0VmFsdWUoZixBcnJheS5pc0FycmF5KHMpP3MubWFwKHN0cmluZ1RvQXNjaWlPclVURjE2QkUpOnN0cmluZ1RvQXNjaWlPclVURjE2QkUocyksdSxyKTt0aGlzLmFtZW5kU2F2ZWREaWN0KGEscHx8Zik7Y29uc3QgbT10aGlzLl9nZXRNS0RpY3Qobyk7bSYmZi5zZXQoIk1LIixtKTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpmLHhmYTpnLG5lZWRBcHBlYXJhbmNlczpofSk7aWYobnVsbCE9PWwpe2NvbnN0IGU9dS5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KHUpO2Yuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2NvbnN0IGk9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKHUpLG49bmV3IFN0cmluZ1N0cmVhbShsKSxzPW4uZGljdD1uZXcgRGljdCh1KTtzLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7cy5zZXQoIlJlc291cmNlcyIsaSk7Y29uc3QgYz1vJTE4MD09MD9bMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHRdOlswLDAsdGhpcy5oZWlnaHQsdGhpcy53aWR0aF07cy5zZXQoIkJCb3giLGMpO2NvbnN0IGg9dGhpcy5nZXRSb3RhdGlvbk1hdHJpeChhKTtoIT09RmEmJnMuc2V0KCJNYXRyaXgiLGgpO3IucHV0KGUse2RhdGE6bix4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KX1mLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCl9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEscil7aWYodGhpcy5kYXRhLnBhc3N3b3JkKXJldHVybiBudWxsO2NvbnN0IG49cj8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHMsbztpZihuKXtzPW4uZm9ybWF0dGVkVmFsdWV8fG4udmFsdWU7bz1uLnJvdGF0aW9ufWlmKHZvaWQgMD09PW8mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2NvbnN0IGw9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMocik7aWYodm9pZCAwPT09cyl7cz10aGlzLmRhdGEuZmllbGRWYWx1ZTtpZighcylyZXR1cm5gL1R4IEJNQyBxICR7bH1RIEVNQ2B9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTthc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltRW5kKCk7aWYodGhpcy5kYXRhLmNvbWJvKXtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmZpbmQoKCh7ZXhwb3J0VmFsdWU6ZX0pPT5zPT09ZSkpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7bH1RIEVNQ2A7dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGgsdT0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtoPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKChlPT5lLm5vcm1hbGl6ZSgiTkZDIikpKTt1PWgubGVuZ3RofWVsc2UgaD1bcy5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldHt3aWR0aDpkLGhlaWdodDpmfT10aGlzOzkwIT09byYmMjcwIT09b3x8KFtkLGZdPVtmLGRdKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtsZXQgZyxwLG0sYj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2NvbnN0IHk9W107bGV0IHc9ITE7Zm9yKGNvbnN0IGUgb2YgaCl7Y29uc3QgdD1iLmVuY29kZVN0cmluZyhlKTt0Lmxlbmd0aD4xJiYodz0hMCk7eS5wdXNoKHQuam9pbigiIikpfWlmKHcmJmEmYylyZXR1cm57bmVlZEFwcGVhcmFuY2VzOiEwfTtpZih3JiZ0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgYT10aGlzLmRhdGEuY29tYj8ibW9ub3NwYWNlIjoic2Fucy1zZXJpZiIscj1uZXcgRmFrZVVuaWNvZGVGb250KGUueHJlZixhKSxpPXIuY3JlYXRlRm9udFJlc291cmNlcyhoLmpvaW4oIiIpKSxuPWkuZ2V0UmF3KCJGb250Iik7aWYodGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmhhcygiRm9udCIpKXtjb25zdCBlPXRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5nZXQoIkZvbnQiKTtmb3IoY29uc3QgdCBvZiBuLmdldEtleXMoKSllLnNldCh0LG4uZ2V0UmF3KHQpKX1lbHNlIHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5zZXQoIkZvbnQiLG4pO2NvbnN0IG89ci5mb250TmFtZS5uYW1lO2I9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHtmb250TmFtZTpvLGZvbnRTaXplOjB9LGkpO2ZvcihsZXQgZT0wLHQ9eS5sZW5ndGg7ZTx0O2UrKyl5W2VdPXN0cmluZ1RvVVRGMTZTdHJpbmcoaFtlXSk7Y29uc3QgYz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT0wO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udE5hbWU9bztbZyxwLG1dPXRoaXMuX2NvbXB1dGVGb250U2l6ZShmLTIsZC00LHMsYix1KTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPWN9ZWxzZXt0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZHx8d2FybigiX2dldEFwcGVhcmFuY2U6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKTtbZyxwLG1dPXRoaXMuX2NvbXB1dGVGb250U2l6ZShmLTIsZC00LHMsYix1KX1sZXQgeD1iLmRlc2NlbnQ7eD1pc05hTih4KT9pKm06TWF0aC5tYXgoaSptLE1hdGguYWJzKHgpKnApO2NvbnN0IFM9TWF0aC5taW4oTWF0aC5mbG9vcigoZi1wKS8yKSwxKSxrPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UoZyx5LGIscCxkLGYsaywyLFMseCxtLHIpO2lmKHRoaXMuZGF0YS5jb21iKXJldHVybiB0aGlzLl9nZXRDb21iQXBwZWFyYW5jZShnLGIseVswXSxwLGQsZiwyLFMseCxtLHIpO2NvbnN0IEM9Uyt4O2lmKDA9PT1rfHxrPjIpcmV0dXJuYC9UeCBCTUMgcSAke2x9QlQgYCtnK2AgMSAwIDAgMSAke251bWJlclRvU3RyaW5nKDIpfSAke251bWJlclRvU3RyaW5nKEMpfSBUbSAoJHtlc2NhcGVTdHJpbmcoeVswXSl9KSBUaiBFVCBRIEVNQ2A7cmV0dXJuYC9UeCBCTUMgcSAke2x9QlQgYCtnK2AgMSAwIDAgMSAwIDAgVG0gJHt0aGlzLl9yZW5kZXJUZXh0KHlbMF0sYixwLGQsayx7c2hpZnQ6MH0sMixDKX0gRVQgUSBFTUNgfXN0YXRpYyBhc3luYyBfZ2V0Rm9udERhdGEoZSx0LGEscil7Y29uc3QgaT1uZXcgT3BlcmF0b3JMaXN0LG49e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOnMsZm9udFNpemU6b309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQocixbcyYmTmFtZS5nZXQocyksb10sbnVsbCxpLHQsbixudWxsKTtyZXR1cm4gbi5mb250fV9nZXRUZXh0V2lkdGgoZSx0KXtyZXR1cm4gTWF0aC5zdW1QcmVjaXNlKHQuY2hhcnNUb0dseXBocyhlKS5tYXAoKGU9PmUud2lkdGgpKSkvMWUzfV9jb21wdXRlRm9udFNpemUoZSx0LHIsaSxuKXtsZXR7Zm9udFNpemU6c309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSxvPShzfHwxMikqYSxjPU1hdGgucm91bmQoZS9vKTtpZighcyl7Y29uc3Qgcm91bmRXaXRoVHdvRGlnaXRzPWU9Pk1hdGguZmxvb3IoMTAwKmUpLzEwMDtpZigtMT09PW4pe2NvbnN0IG49dGhpcy5fZ2V0VGV4dFdpZHRoKHIsaSk7cz1yb3VuZFdpdGhUd29EaWdpdHMoTWF0aC5taW4oZS9hLHQvbikpO2M9MX1lbHNle2NvbnN0IGw9ci5zcGxpdCgvXHJcbj98XG4vKSxoPVtdO2Zvcihjb25zdCBlIG9mIGwpe2NvbnN0IHQ9aS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIiksYT1pLmNoYXJzVG9HbHlwaHModCkscj1pLmdldENoYXJQb3NpdGlvbnModCk7aC5wdXNoKHtsaW5lOnQsZ2x5cGhzOmEscG9zaXRpb25zOnJ9KX1jb25zdCBpc1Rvb0JpZz1hPT57bGV0IHI9MDtmb3IoY29uc3QgbiBvZiBoKXtyKz10aGlzLl9zcGxpdExpbmUobnVsbCxpLGEsdCxuKS5sZW5ndGgqYTtpZihyPmUpcmV0dXJuITB9cmV0dXJuITF9O2M9TWF0aC5tYXgoYyxuKTtmb3IoOzspe289ZS9jO3M9cm91bmRXaXRoVHdvRGlnaXRzKG8vYSk7aWYoIWlzVG9vQmlnKHMpKWJyZWFrO2MrK319Y29uc3R7Zm9udE5hbWU6bCxmb250Q29sb3I6aH09dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbiBjcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSh7Zm9udFNpemU6ZSxmb250TmFtZTp0LGZvbnRDb2xvcjphfSl7cmV0dXJuYC8ke2VzY2FwZVBERk5hbWUodCl9ICR7ZX0gVGYgJHtnZXRQZGZDb2xvcihhLCEwKX1gfSh7Zm9udFNpemU6cyxmb250TmFtZTpsLGZvbnRDb2xvcjpofSl9cmV0dXJuW3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlLHMsZS9jXX1fcmVuZGVyVGV4dChlLHQsYSxyLGksbixzLG8pe2xldCBjO2lmKDE9PT1pKXtjPShyLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmEpLzJ9ZWxzZSBpZigyPT09aSl7Yz1yLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmEtc31lbHNlIGM9cztjb25zdCBsPW51bWJlclRvU3RyaW5nKGMtbi5zaGlmdCk7bi5zaGlmdD1jO3JldHVybmAke2x9ICR7bz1udW1iZXJUb1N0cmluZyhvKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKGUpfSkgVGpgfV9nZXRTYXZlRmllbGRSZXNvdXJjZXMoZSl7Y29uc3R7bG9jYWxSZXNvdXJjZXM6dCxhcHBlYXJhbmNlUmVzb3VyY2VzOmEsYWNyb0Zvcm1SZXNvdXJjZXM6cn09dGhpcy5fZmllbGRSZXNvdXJjZXMsaT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPy5mb250TmFtZTtpZighaSlyZXR1cm4gdHx8RGljdC5lbXB0eTtmb3IoY29uc3QgZSBvZlt0LGFdKWlmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJGb250Iik7aWYodCBpbnN0YW5jZW9mIERpY3QmJnQuaGFzKGkpKXJldHVybiBlfWlmKHIgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPXIuZ2V0KCJGb250Iik7aWYoYSBpbnN0YW5jZW9mIERpY3QmJmEuaGFzKGkpKXtjb25zdCByPW5ldyBEaWN0KGUpO3Iuc2V0KGksYS5nZXRSYXcoaSkpO2NvbnN0IG49bmV3IERpY3QoZSk7bi5zZXQoIkZvbnQiLHIpO3JldHVybiBEaWN0Lm1lcmdlKHt4cmVmOmUsZGljdEFycmF5OltuLHRdLG1lcmdlU3ViRGljdHM6ITB9KX19cmV0dXJuIHR8fERpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiUE1EIikpe3RoaXMuZmxhZ3N8PUo7dGhpcy5kYXRhLmhpZGRlbj0hMDt3YXJuKCJCYXJjb2RlcyBhcmUgbm90IHN1cHBvcnRlZCIpfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLnJlYWRPbmx5JiYhdGhpcy5kYXRhLm5vSFRNTDt0aGlzLl9oYXNUZXh0PSEwOyJzdHJpbmciIT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT0iIik7bGV0IGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiUSJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MHx8YT4yKSYmKGE9bnVsbCk7dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ9YTtsZXQgcj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJNYXhMZW4ifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHxyPDApJiYocj0wKTt0aGlzLmRhdGEubWF4TGVuPXI7dGhpcy5kYXRhLm11bHRpTGluZT10aGlzLmhhc0ZpZWxkRmxhZyhpZSk7dGhpcy5kYXRhLmNvbWI9dGhpcy5oYXNGaWVsZEZsYWcoZGUpJiYhdGhpcy5kYXRhLm11bHRpTGluZSYmIXRoaXMuZGF0YS5wYXNzd29yZCYmIXRoaXMuaGFzRmllbGRGbGFnKGxlKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKHVlKTtjb25zdHtkYXRhOnthY3Rpb25zOml9fT10aGlzO2Zvcihjb25zdCBlIG9mIGk/LktleXN0cm9rZXx8W10pe2NvbnN0IHQ9ZS50cmltKCkubWF0Y2goL15BRihEYXRlfFRpbWUpX0tleXN0cm9rZSg/OkV4KT9cKFsnIl0/KFteJyJdKylbJyJdP1wpOyQvKTtpZih0KXtsZXQgZT10WzJdO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7aXNOYU4oYSl8fE1hdGguZmxvb3IoTWF0aC5sb2cxMChhKSkrMSE9PXRbMl0ubGVuZ3RofHwoZT0oIkRhdGUiPT09dFsxXT9QbjpMbilbYV0/P2UpO3RoaXMuZGF0YVsiRGF0ZSI9PT10WzFdPyJkYXRlRm9ybWF0IjoidGltZUZvcm1hdCJdPWU7YnJlYWt9fX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hIXRoaXMuYXBwZWFyYW5jZSYmIXRoaXMuX25lZWRBcHBlYXJhbmNlc31fZ2V0Q29tYkFwcGVhcmFuY2UoZSx0LGEscixpLG4scyxvLGMsbCxoKXtjb25zdCB1PWkvdGhpcy5kYXRhLm1heExlbixkPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGY9W10sZz10LmdldENoYXJQb3NpdGlvbnMoYSk7Zm9yKGNvbnN0W2UsdF1vZiBnKWYucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGEuc3Vic3RyaW5nKGUsdCkpfSkgVGpgKTtjb25zdCBwPWYuam9pbihgICR7bnVtYmVyVG9TdHJpbmcodSl9IDAgVGQgYCk7cmV0dXJuYC9UeCBCTUMgcSAke2R9QlQgYCtlK2AgMSAwIDAgMSAke251bWJlclRvU3RyaW5nKHMpfSAke251bWJlclRvU3RyaW5nKG8rYyl9IFRtICR7cH0gRVQgUSBFTUNgfV9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKGUsdCxhLHIsaSxuLHMsbyxjLGwsaCx1KXtjb25zdCBkPVtdLGY9aS0yKm8sZz17c2hpZnQ6MH07Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0sdT10aGlzLl9zcGxpdExpbmUobixhLHIsZik7Zm9yKGxldCB0PTAsbj11Lmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXVbdF0sZj0wPT09ZSYmMD09PXQ/LWMtKGgtbCk6LWg7ZC5wdXNoKHRoaXMuX3JlbmRlclRleHQobixhLHIsaSxzLGcsbyxmKSl9fWNvbnN0IHA9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXModSksbT1kLmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke3B9QlQgYCtlK2AgMSAwIDAgMSAwICR7bnVtYmVyVG9TdHJpbmcobil9IFRtICR7bX0gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEscixpPXt9KXtlPWkubGluZXx8ZTtjb25zdCBuPWkuZ2x5cGhzfHx0LmNoYXJzVG9HbHlwaHMoZSk7aWYobi5sZW5ndGg8PTEpcmV0dXJuW2VdO2NvbnN0IHM9aS5wb3NpdGlvbnN8fHQuZ2V0Q2hhclBvc2l0aW9ucyhlKSxvPWEvMWUzLGM9W107bGV0IGw9LTEsaD0tMSx1PS0xLGQ9MCxmPTA7Zm9yKGxldCB0PTAsYT1uLmxlbmd0aDt0PGE7dCsrKXtjb25zdFthLGldPXNbdF0sZz1uW3RdLHA9Zy53aWR0aCpvO2lmKCIgIj09PWcudW5pY29kZSlpZihmK3A+cil7Yy5wdXNoKGUuc3Vic3RyaW5nKGQsYSkpO2Q9YTtmPXA7bD0tMTt1PS0xfWVsc2V7Zis9cDtsPWE7aD1pO3U9dH1lbHNlIGlmKGYrcD5yKWlmKC0xIT09bCl7Yy5wdXNoKGUuc3Vic3RyaW5nKGQsaCkpO2Q9aDt0PXUrMTtsPS0xO2Y9MH1lbHNle2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wfWVsc2UgZis9cH1kPGUubGVuZ3RoJiZjLnB1c2goZS5zdWJzdHJpbmcoZCxlLmxlbmd0aCkpO3JldHVybiBjfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsYSl7YXdhaXQgc3VwZXIuZXh0cmFjdFRleHRDb250ZW50KGUsdCxhKTtjb25zdCByPXRoaXMuZGF0YS50ZXh0Q29udGVudDtpZighcilyZXR1cm47Y29uc3QgaT1yLmpvaW4oIlxuIik7aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlKXJldHVybjtjb25zdCBuPWkucmVwbGFjZUFsbCgvKFsuKis/XiR7fSgpfFtcXVxcXSl8KFxzKykvZywoKGUsdCk9PnQ/YFxcJHt0fWA6IlxccysiKSk7bmV3IFJlZ0V4cChgXlxccyoke259XFxzKiRgKS50ZXN0KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmKHRoaXMuZGF0YS50ZXh0Q29udGVudD10aGlzLmRhdGEuZmllbGRWYWx1ZS5zcGxpdCgiXG4iKSl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWV8fCIiLG11bHRpbGluZTp0aGlzLmRhdGEubXVsdGlMaW5lLHBhc3N3b3JkOnRoaXMuZGF0YS5wYXNzd29yZCxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7Y29uc3QgdD10aGlzLmhhc0ZpZWxkRmxhZyhzZSksYT10aGlzLmhhc0ZpZWxkRmxhZyhvZSk7dGhpcy5kYXRhLmNoZWNrQm94PSF0JiYhYTt0aGlzLmRhdGEucmFkaW9CdXR0b249dCYmIWE7dGhpcy5kYXRhLnB1c2hCdXR0b249YTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5fcHJvY2Vzc1B1c2hCdXR0b24oZSl9ZWxzZSB3YXJuKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEscil7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSwhMSxyKTtsZXQgaT1udWxsLG49bnVsbDtpZihyKXtjb25zdCBlPXIuZ2V0KHRoaXMuZGF0YS5pZCk7aT1lP2UudmFsdWU6bnVsbDtuPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1pJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxyKTtudWxsPT1pJiYoaT10aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpO2NvbnN0IHM9aT90aGlzLmNoZWNrZWRBcHBlYXJhbmNlOnRoaXMudW5jaGVja2VkQXBwZWFyYW5jZTtpZihzKXtjb25zdCBpPXRoaXMuYXBwZWFyYW5jZSxvPWxvb2t1cE1hdHJpeChzLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpLEZhKTtuJiZzLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgocikpO3RoaXMuYXBwZWFyYW5jZT1zO2NvbnN0IGM9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHIpO3RoaXMuYXBwZWFyYW5jZT1pO3MuZGljdC5zZXQoIk1hdHJpeCIsbyk7cmV0dXJuIGN9cmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19YXN5bmMgc2F2ZShlLHQsYSxyKXt0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhLHIpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbiYmdGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhLHIpfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEscil7aWYoIWEpcmV0dXJuO2NvbnN0IGk9YS5nZXQodGhpcy5kYXRhLmlkKSxuPXRoaXMuX2J1aWxkRmxhZ3MoaT8ubm9WaWV3LGk/Lm5vUHJpbnQpO2xldCBzPWk/LnJvdGF0aW9uLG89aT8udmFsdWU7aWYodm9pZCAwPT09cyYmdm9pZCAwPT09bil7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU9PT1vKXJldHVybn1sZXQgYz1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShjIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2M9Yy5jbG9uZSgpO3ZvaWQgMD09PXMmJihzPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBsPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6IiJ9LGg9TmFtZS5nZXQobz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6Ik9mZiIpO3RoaXMuc2V0VmFsdWUoYyxoLGUueHJlZixyKTtjLnNldCgiQVMiLGgpO2Muc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1uJiZjLnNldCgiRiIsbik7Y29uc3QgdT10aGlzLl9nZXRNS0RpY3Qocyk7dSYmYy5zZXQoIk1LIix1KTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpjLHhmYTpsLG5lZWRBcHBlYXJhbmNlczohMX0pfWFzeW5jIF9zYXZlUmFkaW9CdXR0b24oZSx0LGEscil7aWYoIWEpcmV0dXJuO2NvbnN0IGk9YS5nZXQodGhpcy5kYXRhLmlkKSxuPXRoaXMuX2J1aWxkRmxhZ3MoaT8ubm9WaWV3LGk/Lm5vUHJpbnQpO2xldCBzPWk/LnJvdGF0aW9uLG89aT8udmFsdWU7aWYodm9pZCAwPT09cyYmdm9pZCAwPT09bil7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWU9PT1vKXJldHVybn1sZXQgYz1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShjIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2M9Yy5jbG9uZSgpO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt2b2lkIDA9PT1zJiYocz10aGlzLnJvdGF0aW9uKTtjb25zdCBsPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LGg9TmFtZS5nZXQobz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6Ik9mZiIpO28mJnRoaXMuc2V0VmFsdWUoYyxoLGUueHJlZixyKTtjLnNldCgiQVMiLGgpO2Muc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1uJiZjLnNldCgiRiIsbik7Y29uc3QgdT10aGlzLl9nZXRNS0RpY3Qocyk7dSYmYy5zZXQoIk1LIix1KTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpjLHhmYTpsLG5lZWRBcHBlYXJhbmNlczohMX0pfV9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSx0KXtjb25zdHt3aWR0aDphLGhlaWdodDpyfT10aGlzLGk9WzAsMCxhLHJdLG49LjgqTWF0aC5taW4oYSxyKTtsZXQgcyxvO2lmKCJjaGVjayI9PT10KXtzPXt3aWR0aDouNzU1Km4saGVpZ2h0Oi43MDUqbn07bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtzPXt3aWR0aDouNzkxKm4saGVpZ2h0Oi43MDUqbn07bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBjPWBxIEJUIC9QZGZKc1phRGIgJHtufSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoYS1zLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoci1zLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxsPW5ldyBEaWN0KGUueHJlZik7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2wuc2V0KCJCQm94IixpKTtsLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7Y29uc3QgaD1uZXcgRGljdChlLnhyZWYpLHU9bmV3IERpY3QoZS54cmVmKTt1LnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2guc2V0KCJGb250Iix1KTtsLnNldCgiUmVzb3VyY2VzIixoKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oYyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWw7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPXQuZ2V0KCJOIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgciYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXIpO2NvbnN0IGk9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLG49dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGEuZ2V0S2V5cygpKTtpZigwPT09bi5sZW5ndGgpbi5wdXNoKCJPZmYiLGkpO2Vsc2UgaWYoMT09PW4ubGVuZ3RoKSJPZmYiPT09blswXT9uLnB1c2goaSk6bi51bnNoaWZ0KCJPZmYiKTtlbHNlIGlmKG4uaW5jbHVkZXMoaSkpe24ubGVuZ3RoPTA7bi5wdXNoKCJPZmYiLGkpfWVsc2V7Y29uc3QgZT1uLmZpbmQoKGU9PiJPZmYiIT09ZSkpO24ubGVuZ3RoPTA7bi5wdXNoKCJPZmYiLGUpfW4uaW5jbHVkZXModGhpcy5kYXRhLmZpZWxkVmFsdWUpfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9Ik9mZiIpO3RoaXMuZGF0YS5leHBvcnRWYWx1ZT1uWzFdO2NvbnN0IHM9YS5nZXQodGhpcy5kYXRhLmV4cG9ydFZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPXMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3M6bnVsbDtjb25zdCBvPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9byBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bzpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJjaGVjayIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7dGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3Q7bnVsbD09PXRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT0iT2ZmIil9X3Byb2Nlc3NSYWRpb0J1dHRvbihlKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9bnVsbDtjb25zdCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBhPXQuZ2V0KCJWIik7YSBpbnN0YW5jZW9mIE5hbWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoYSkpfWNvbnN0IGE9ZS5kaWN0LmdldCgiQVAiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1hLmdldCgiTiIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSk7YnJlYWt9Y29uc3QgaT1yLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9aSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/aTpudWxsO2NvbnN0IG49ci5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9uOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUHVzaEJ1dHRvbihlKXtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6YX09ZTtpZih0LmhhcygiQSIpfHx0LmhhcygiQUEiKXx8dGhpcy5kYXRhLmFsdGVybmF0aXZlVGV4dCl7dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9IXQuaGFzKCJBIikmJiF0LmhhcygiQUEiKTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmEuYmFzZVVybCxkb2NBdHRhY2htZW50czphLmF0dGFjaG1lbnRzfSl9ZWxzZSB3YXJuKCJQdXNoIGJ1dHRvbnMgd2l0aG91dCBhY3Rpb24gZGljdGlvbmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkIil9Z2V0RmllbGRPYmplY3QoKXtsZXQgZSx0PSJidXR0b24iO2lmKHRoaXMuZGF0YS5jaGVja0JveCl7dD0iY2hlY2tib3giO2U9dGhpcy5kYXRhLmV4cG9ydFZhbHVlfWVsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXt0PSJyYWRpb2J1dHRvbiI7ZT10aGlzLmRhdGEuYnV0dG9uVmFsdWV9cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8Ik9mZiIsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxleHBvcnRWYWx1ZXM6ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6dH19Z2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBEaWN0O2Uuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX1jbGFzcyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuaW5kaWNlcz10LmdldEFycmF5KCJJIik7dGhpcy5oYXNJbmRpY2VzPUFycmF5LmlzQXJyYXkodGhpcy5pbmRpY2VzKSYmdGhpcy5pbmRpY2VzLmxlbmd0aD4wO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiT3B0In0pO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWEuZmV0Y2hJZlJlZihyW2VdKSxpPUFycmF5LmlzQXJyYXkodCk7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShpP2EuZmV0Y2hJZlJlZih0WzBdKTp0KSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGk/YS5mZXRjaElmUmVmKHRbMV0pOnQpfX1pZih0aGlzLmhhc0luZGljZXMpe3RoaXMuZGF0YS5maWVsZFZhbHVlPVtdO2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO2Zvcihjb25zdCB0IG9mIHRoaXMuaW5kaWNlcylOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wJiZ0PGUmJnRoaXMuZGF0YS5maWVsZFZhbHVlLnB1c2godGhpcy5kYXRhLm9wdGlvbnNbdF0uZXhwb3J0VmFsdWUpfWVsc2Uic3RyaW5nIj09dHlwZW9mIHRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlPVt0aGlzLmRhdGEuZmllbGRWYWx1ZV06dGhpcy5kYXRhLmZpZWxkVmFsdWV8fD1bXTswPT09dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MCYmKHRoaXMuZGF0YS5vcHRpb25zPXRoaXMuZGF0YS5maWVsZFZhbHVlLm1hcCgoZT0+KHtleHBvcnRWYWx1ZTplLGRpc3BsYXlWYWx1ZTplfSkpKSk7dGhpcy5kYXRhLmNvbWJvPXRoaXMuaGFzRmllbGRGbGFnKGNlKTt0aGlzLmRhdGEubXVsdGlTZWxlY3Q9dGhpcy5oYXNGaWVsZEZsYWcoaGUpO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YW1lbmRTYXZlZERpY3QoZSx0KXtpZighdGhpcy5oYXNJbmRpY2VzKXJldHVybjtsZXQgYT1lPy5nZXQodGhpcy5kYXRhLmlkKT8udmFsdWU7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtjb25zdCByPVtdLHtvcHRpb25zOml9PXRoaXMuZGF0YTtmb3IobGV0IGU9MCx0PTAsbj1pLmxlbmd0aDtlPG47ZSsrKWlmKGlbZV0uZXhwb3J0VmFsdWU9PT1hW3RdKXtyLnB1c2goZSk7dCs9MX10LnNldCgiSSIscil9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LHIsaSl7aWYodGhpcy5kYXRhLmNvbWJvKXJldHVybiBzdXBlci5fZ2V0QXBwZWFyYW5jZShlLHQscixpKTtsZXQgbixzO2NvbnN0IG89aT8uZ2V0KHRoaXMuZGF0YS5pZCk7aWYobyl7cz1vLnJvdGF0aW9uO249by52YWx1ZX1pZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1uJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXJldHVybiBudWxsO3ZvaWQgMD09PW4/bj10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2xldHt3aWR0aDpjLGhlaWdodDpsfT10aGlzOzkwIT09cyYmMjcwIT09c3x8KFtjLGxdPVtsLGNdKTtjb25zdCBoPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCx1PVtdO2ZvcihsZXQgZT0wO2U8aDtlKyspe2NvbnN0e2V4cG9ydFZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdO24uaW5jbHVkZXModCkmJnUucHVzaChlKX10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtjb25zdCBkPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7bGV0IGYse2ZvbnRTaXplOmd9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYoZylmPXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO2Vsc2V7Y29uc3QgZT0obC0xKS9oO2xldCB0LGE9LTE7Zm9yKGNvbnN0e2Rpc3BsYXlWYWx1ZTplfW9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCByPXRoaXMuX2dldFRleHRXaWR0aChlLGQpO2lmKHI+YSl7YT1yO3Q9ZX19W2YsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKGUsYy00LHQsZCwtMSl9Y29uc3QgcD1nKmEsbT0ocC1nKS8yLGI9TWF0aC5mbG9vcihsL3ApO2xldCB5PTA7aWYodS5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi51KSx0PU1hdGgubWF4KC4uLnUpO3k9TWF0aC5tYXgoMCx0LWIrMSk7eT5lJiYoeT1lKX1jb25zdCB3PU1hdGgubWluKHkrYisxLGgpLHg9WyIvVHggQk1DIHEiLGAxIDEgJHtjfSAke2x9IHJlIFcgbmBdO2lmKHUubGVuZ3RoKXt4LnB1c2goIjAuNjAwMDA2IDAuNzU2ODY2IDAuODU0OTA0IHJnIik7Zm9yKGNvbnN0IGUgb2YgdSl5PD1lJiZlPHcmJngucHVzaChgMSAke2wtKGUteSsxKSpwfSAke2N9ICR7cH0gcmUgZmApfXgucHVzaCgiQlQiLGYsYDEgMCAwIDEgMCAke2x9IFRtYCk7Y29uc3QgUz17c2hpZnQ6MH07Zm9yKGxldCBlPXk7ZTx3O2UrKyl7Y29uc3R7ZGlzcGxheVZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdLGE9ZT09PXk/bTowO3gucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHQsZCxnLGMsMCxTLDIsLXArYSkpfXgucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4geC5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9IXRoaXMuZGF0YS5oYXNPd25DYW52YXN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLm5vUm90YXRlPSEwO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1GO2lmKHRoaXMuZGF0YS5oYXNBcHBlYXJhbmNlKXRoaXMuZGF0YS5uYW1lPSJOb0ljb24iO2Vsc2V7dGhpcy5kYXRhLnJlY3RbMV09dGhpcy5kYXRhLnJlY3RbM10tMjI7dGhpcy5kYXRhLnJlY3RbMl09dGhpcy5kYXRhLnJlY3RbMF0rMjI7dGhpcy5kYXRhLm5hbWU9dC5oYXMoIk5hbWUiKT90LmdldCgiTmFtZSIpLm5hbWU6Ik5vdGUifWlmKHQuaGFzKCJTdGF0ZSIpKXt0aGlzLmRhdGEuc3RhdGU9dC5nZXQoIlN0YXRlIil8fG51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9dC5nZXQoIlN0YXRlTW9kZWwiKXx8bnVsbH1lbHNle3RoaXMuZGF0YS5zdGF0ZT1udWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPW51bGx9fX1jbGFzcyBMaW5rQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPVQ7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdCByPWdldFF1YWRQb2ludHModCx0aGlzLnJlY3RhbmdsZSk7ciYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPXIpO3RoaXMuZGF0YS5ib3JkZXJDb2xvcnx8PXRoaXMuZGF0YS5jb2xvcjtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmEuYmFzZVVybCxkb2NBdHRhY2htZW50czphLmF0dGFjaG1lbnRzfSl9fWNsYXNzIFBvcHVwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1XO3RoaXMuZGF0YS5ub0hUTUw9ITE7MCE9PXRoaXMud2lkdGgmJjAhPT10aGlzLmhlaWdodHx8KHRoaXMuZGF0YS5yZWN0PW51bGwpO2xldCBhPXQuZ2V0KCJQYXJlbnQiKTtpZighYSl7d2FybigiUG9wdXAgYW5ub3RhdGlvbiBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGFyZW50IGFubm90YXRpb24uIik7cmV0dXJufXRoaXMuZGF0YS5wYXJlbnRSZWN0PWxvb2t1cE5vcm1hbFJlY3QoYS5nZXRBcnJheSgiUmVjdCIpLG51bGwpO2lzTmFtZShhLmdldCgiUlQiKSxHKSYmKGE9YS5nZXQoIklSVCIpKTtpZihhLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoYS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpZihhLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGEuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbDtpZighdGhpcy52aWV3YWJsZSl7Y29uc3QgZT1hLmdldCgiRiIpO3RoaXMuX2lzVmlld2FibGUoZSkmJnRoaXMuc2V0RmxhZ3MoZSl9dGhpcy5zZXRUaXRsZShhLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhhLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2EuaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwoYS5nZXQoIlJDIikpKTt0aGlzLmRhdGEub3Blbj0hIXQuZ2V0KCJPcGVuIil9fWNsYXNzIEZyZWVUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHthbm5vdGF0aW9uR2xvYmFsczp0LGV2YWx1YXRvck9wdGlvbnM6YSx4cmVmOnJ9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU87dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTt0aGlzLl9oYXNBcHBlYXJhbmNlPSEhdGhpcy5hcHBlYXJhbmNlO2lmKHRoaXMuX2hhc0FwcGVhcmFuY2Upe2NvbnN0e2ZvbnRDb2xvcjplLGZvbnRTaXplOml9PWZ1bmN0aW9uIHBhcnNlQXBwZWFyYW5jZVN0cmVhbShlLHQsYSxyKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IoZSx0LGEscikucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLGEscix0Lmdsb2JhbENvbG9yU3BhY2VDYWNoZSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPWl8fDEwfWVsc2V7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8PTEwO2NvbnN0e2ZvbnRDb2xvcjp0LGZvbnRTaXplOmF9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYodGhpcy5fY29udGVudHMuc3RyKXt0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5fY29udGVudHMuc3RyLnNwbGl0KC9cclxuP3xcbi8pLm1hcCgoZT0+ZS50cmltRW5kKCkpKTtjb25zdHtjb29yZHM6ZSxiYm94OnQsbWF0cml4OnJ9PUZha2VVbmljb2RlRm9udC5nZXRGaXJzdFBvc2l0aW9uSW5mbyh0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoZSx0LHIpfWlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBpPWUuZGljdC5nZXQoIkNBIiksbj1uZXcgRmFrZVVuaWNvZGVGb250KHIsInNhbnMtc2VyaWYiKTt0aGlzLmFwcGVhcmFuY2U9bi5jcmVhdGVBcHBlYXJhbmNlKHRoaXMuX2NvbnRlbnRzLnN0cix0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEsdCxpKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKX1lbHNlIHdhcm4oIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5faGFzQXBwZWFyYW5jZX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6cn0pe2NvbnN0e2NvbG9yOmksZm9udFNpemU6bixvbGRBbm5vdGF0aW9uOnMscmVjdDpvLHJvdGF0aW9uOmMsdXNlcjpsLHZhbHVlOmh9PWUsdT1zfHxuZXcgRGljdCh0KTt1LnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRnJlZVRleHQiKSk7aWYocyl7dS5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO3UuZGVsZXRlKCJSQyIpfWVsc2UgdS5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dS5zZXQoIlJlY3QiLG8pO2NvbnN0IGQ9YC9IZWx2ICR7bn0gVGYgJHtnZXRQZGZDb2xvcihpLCEwKX1gO3Uuc2V0KCJEQSIsZCk7dS5zZXQoIkNvbnRlbnRzIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGgpKTt1LnNldCgiRiIsNCk7dS5zZXQoIkJvcmRlciIsWzAsMCwwXSk7dS5zZXQoIlJvdGF0ZSIsYyk7bCYmdS5zZXQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobCkpO2lmKGF8fHIpe2NvbnN0IGU9bmV3IERpY3QodCk7dS5zZXQoIkFQIixlKTthP2Uuc2V0KCJOIixhKTplLnNldCgiTiIscil9cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LHIpe2NvbnN0e2Jhc2VGb250UmVmOmksZXZhbHVhdG9yOm4sdGFzazpzfT1yLHtjb2xvcjpvLGZvbnRTaXplOmMscmVjdDpsLHJvdGF0aW9uOmgsdmFsdWU6dX09ZSxkPW5ldyBEaWN0KHQpLGY9bmV3IERpY3QodCk7aWYoaSlmLnNldCgiSGVsdiIsaSk7ZWxzZXtjb25zdCBlPW5ldyBEaWN0KHQpO2Uuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJUeXBlMSIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Zi5zZXQoIkhlbHYiLGUpfWQuc2V0KCJGb250IixmKTtjb25zdCBnPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKG4scyx7Zm9udE5hbWU6IkhlbHYiLGZvbnRTaXplOmN9LGQpLFtwLG0sYix5XT1sO2xldCB3PWItcCx4PXktbTtoJTE4MCE9MCYmKFt3LHhdPVt4LHddKTtjb25zdCBTPXUuc3BsaXQoIlxuIiksaz1jLzFlMztsZXQgQz0tMS8wO2NvbnN0IHY9W107Zm9yKGxldCBlIG9mIFMpe2NvbnN0IHQ9Zy5lbmNvZGVTdHJpbmcoZSk7aWYodC5sZW5ndGg+MSlyZXR1cm4gbnVsbDtlPXQuam9pbigiIik7di5wdXNoKGUpO2xldCBhPTA7Y29uc3Qgcj1nLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgcilhKz1lLndpZHRoKms7Qz1NYXRoLm1heChDLGEpfWxldCBGPTE7Qz53JiYoRj13L0MpO2xldCBUPTE7Y29uc3QgTz1hKmMsTT0xKmMsRD1PKlMubGVuZ3RoO0Q+eCYmKFQ9eC9EKTtjb25zdCBSPWMqTWF0aC5taW4oRixUKTtsZXQgTixFLEw7c3dpdGNoKGgpe2Nhc2UgMDpMPVsxLDAsMCwxXTtFPVtsWzBdLGxbMV0sdyx4XTtOPVtsWzBdLGxbM10tTV07YnJlYWs7Y2FzZSA5MDpMPVswLDEsLTEsMF07RT1bbFsxXSwtbFsyXSx3LHhdO049W2xbMV0sLWxbMF0tTV07YnJlYWs7Y2FzZSAxODA6TD1bLTEsMCwwLC0xXTtFPVstbFsyXSwtbFszXSx3LHhdO049Wy1sWzJdLC1sWzFdLU1dO2JyZWFrO2Nhc2UgMjcwOkw9WzAsLTEsMSwwXTtFPVstbFszXSxsWzBdLHcseF07Tj1bLWxbM10sbFsyXS1NXX1jb25zdCBqPVsicSIsYCR7TC5qb2luKCIgIil9IDAgMCBjbWAsYCR7RS5qb2luKCIgIil9IHJlIFcgbmAsIkJUIixgJHtnZXRQZGZDb2xvcihvLCEwKX1gLGAwIFRjIC9IZWx2ICR7bnVtYmVyVG9TdHJpbmcoUil9IFRmYF07ai5wdXNoKGAke04uam9pbigiICIpfSBUZCAoJHtlc2NhcGVTdHJpbmcodlswXSl9KSBUamApO2NvbnN0IF89bnVtYmVyVG9TdHJpbmcoTyk7Zm9yKGxldCBlPTEsdD12Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXZbZV07ai5wdXNoKGAwIC0ke199IFRkICgke2VzY2FwZVN0cmluZyh0KX0pIFRqYCl9ai5wdXNoKCJFVCIsIlEiKTtjb25zdCBVPWouam9pbigiXG4iKSxYPW5ldyBEaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSk7WC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO1guc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtYLnNldCgiQkJveCIsbCk7WC5zZXQoIlJlc291cmNlcyIsZCk7WC5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsLWxbMF0sLWxbMV1dKTtjb25zdCBxPW5ldyBTdHJpbmdTdHJlYW0oVSk7cS5kaWN0PVg7cmV0dXJuIHF9fWNsYXNzIExpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1NO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3Qgcj1sb29rdXBSZWN0KHQuZ2V0QXJyYXkoIkwiKSxbMCwwLDAsMF0pO3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXM9VXRpbC5ub3JtYWxpemVSZWN0KHIpO3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3M7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxpPXQuZ2V0KCJDQSIpLG49Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxzPW4/Z2V0UGRmQ29sb3JBcnJheShuKTpudWxsLG89cz9pOm51bGwsYz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGw9MipjLGg9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tbCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWwsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStsLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rbF07VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsaCl8fCh0aGlzLnJlY3RhbmdsZT1oKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke2N9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6byxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHtyWzBdfSAke3JbMV19IG1gLGAke3JbMl19ICR7clszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS1jLHRbN10tYyx0WzJdK2MsdFszXStjXX19KX19fWNsYXNzIFNxdWFyZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQ7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLHI9dC5nZXQoIkNBIiksaT1nZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpLG49aT9nZXRQZGZDb2xvckFycmF5KGkpOm51bGwscz1uP3I6bnVsbDtpZigwPT09dGhpcy5ib3JkZXJTdHlsZS53aWR0aCYmIW4pcmV0dXJuO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6bixzdHJva2VBbHBoYTpyLGZpbGxBbHBoYTpzLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzRdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNV0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFs2XS10WzRdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgscz10WzNdLXRbN10tdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtyfSAke2l9ICR7c30gcmVgKTtuP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19fWNsYXNzIENpcmNsZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPVI7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxyPXQuZ2V0KCJDQSIpLGk9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxuPWk/Z2V0UGRmQ29sb3JBcnJheShpKTpudWxsLHM9bj9yOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFuKXJldHVybjtjb25zdCBvPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6bixzdHJva2VBbHBoYTpyLGZpbGxBbHBoYTpzLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzBdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbMV0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFs2XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIscz10WzddK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixjPWErKGktYSkvMixsPXIrKHMtcikvMixoPShpLWEpLzIqbyx1PShzLXIpLzIqbztlLnB1c2goYCR7Y30gJHtzfSBtYCxgJHtjK2h9ICR7c30gJHtpfSAke2wrdX0gJHtpfSAke2x9IGNgLGAke2l9ICR7bC11fSAke2MraH0gJHtyfSAke2N9ICR7cn0gY2AsYCR7Yy1ofSAke3J9ICR7YX0gJHtsLXV9ICR7YX0gJHtsfSBjYCxgJHthfSAke2wrdX0gJHtjLWh9ICR7c30gJHtjfSAke3N9IGNgLCJoIik7bj9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEudmVydGljZXM9bnVsbDtpZighKHRoaXMgaW5zdGFuY2VvZiBQb2x5Z29uQW5ub3RhdGlvbikpe3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3N9Y29uc3Qgcj10LmdldEFycmF5KCJWZXJ0aWNlcyIpO2lmKCFpc051bWJlckFycmF5KHIsbnVsbCkpcmV0dXJuO2NvbnN0IGk9dGhpcy5kYXRhLnZlcnRpY2VzPUZsb2F0MzJBcnJheS5mcm9tKHIpO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxuPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKm4sbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2ZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrPTIpVXRpbC5yZWN0Qm91bmRpbmdCb3goaVtlXS1zLGlbZSsxXS1zLGlbZV0rcyxpW2UrMV0rcyxvKTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxvKXx8KHRoaXMucmVjdGFuZ2xlPW8pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7bn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCs9MillLnB1c2goYCR7aVt0XX0gJHtpW3QrMV19ICR7MD09PXQ/Im0iOiJsIn1gKTtlLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbiBleHRlbmRzIFBvbHlsaW5lQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Tn19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9cX19Y2xhc3MgSW5rQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1IO3RoaXMuZGF0YS5pbmtMaXN0cz1bXTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5vcGFjaXR5PXQuZ2V0KCJDQSIpfHwxO2NvbnN0IHI9dC5nZXRBcnJheSgiSW5rTGlzdCIpO2lmKEFycmF5LmlzQXJyYXkocikpe2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0OysrZSl7aWYoIUFycmF5LmlzQXJyYXkocltlXSkpY29udGludWU7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KHJbZV0ubGVuZ3RoKTt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaCh0KTtmb3IobGV0IGk9MCxuPXJbZV0ubGVuZ3RoO2k8bjtpKz0yKXtjb25zdCBuPWEuZmV0Y2hJZlJlZihyW2VdW2ldKSxzPWEuZmV0Y2hJZlJlZihyW2VdW2krMV0pO2lmKCJudW1iZXIiPT10eXBlb2YgbiYmIm51bWJlciI9PXR5cGVvZiBzKXt0W2ldPW47dFtpKzFdPXN9fX1pZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLHI9dC5nZXQoIkNBIiksaT10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLG49MippLHM9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilVdGlsLnJlY3RCb3VuZGluZ0JveChlW3RdLW4sZVt0KzFdLW4sZVt0XStuLGVbdCsxXStuLHMpO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHMpfHwodGhpcy5yZWN0YW5nbGU9cyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYTpgJHtpfSB3YCxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpe2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErPTIpZS5wdXNoKGAke3RbYV19ICR7dFthKzFdfSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOnJ9KXtjb25zdHtvbGRBbm5vdGF0aW9uOmksY29sb3I6bixvcGFjaXR5OnMscGF0aHM6byxvdXRsaW5lczpjLHJlY3Q6bCxyb3RhdGlvbjpoLHRoaWNrbmVzczp1LHVzZXI6ZH09ZSxmPWl8fG5ldyBEaWN0KHQpO2Yuc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJJbmsiKSk7Zi5zZXQoaT8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Zi5zZXQoIlJlY3QiLGwpO2Yuc2V0KCJJbmtMaXN0IixjPy5wb2ludHN8fG8ucG9pbnRzKTtmLnNldCgiRiIsNCk7Zi5zZXQoIlJvdGF0ZSIsaCk7ZCYmZi5zZXQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoZCkpO2MmJmYuc2V0KCJJVCIsTmFtZS5nZXQoIklua0hpZ2hsaWdodCIpKTtjb25zdCBnPW5ldyBEaWN0KHQpO2Yuc2V0KCJCUyIsZyk7Zy5zZXQoIlciLHUpO2Yuc2V0KCJDIixnZXRQZGZDb2xvckFycmF5KG4pKTtmLnNldCgiQ0EiLHMpO2NvbnN0IHA9bmV3IERpY3QodCk7Zi5zZXQoIkFQIixwKTthP3Auc2V0KCJOIixhKTpwLnNldCgiTiIscik7cmV0dXJuIGZ9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsYSk7Y29uc3R7Y29sb3I6cixyZWN0OmkscGF0aHM6bix0aGlja25lc3M6cyxvcGFjaXR5Om99PWUsYz1bYCR7c30gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihyLCExKX1gXTsxIT09byYmYy5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiBuLmxpbmVzKXtjLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixhPWUubGVuZ3RoO3Q8YTt0Kz02KWlmKGlzTmFOKGVbdF0pKWMucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W2EscixpLG4scyxvXT1lLnNsaWNlKHQsdCs2KTtjLnB1c2goW2EscixpLG4scyxvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmMucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWMucHVzaCgiUyIpO2NvbnN0IGw9Yy5qb2luKCJcbiIpLGg9bmV3IERpY3QodCk7aC5zZXQoIkZvcm1UeXBlIiwxKTtoLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7aC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2guc2V0KCJCQm94IixpKTtoLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksYT1uZXcgRGljdCh0KSxyPW5ldyBEaWN0KHQpO3Iuc2V0KCJDQSIsbyk7ci5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7YS5zZXQoIlIwIixyKTtlLnNldCgiRXh0R1N0YXRlIixhKTtoLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCB1PW5ldyBTdHJpbmdTdHJlYW0obCk7dS5kaWN0PWg7cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGEpe2NvbnN0e2NvbG9yOnIscmVjdDppLG91dGxpbmVzOntvdXRsaW5lOm59LG9wYWNpdHk6c309ZSxvPVtgJHtnZXRQZGZDb2xvcihyLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcobls0XSl9ICR7bnVtYmVyVG9TdHJpbmcobls1XSl9IG1gKTtmb3IobGV0IGU9Nix0PW4ubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKG5bZV0pKW8ucHVzaChgJHtudW1iZXJUb1N0cmluZyhuW2UrNF0pfSAke251bWJlclRvU3RyaW5nKG5bZSs1XSl9IGxgKTtlbHNle2NvbnN0W3QsYSxyLGkscyxjXT1uLnNsaWNlKGUsZSs2KTtvLnB1c2goW3QsYSxyLGkscyxjXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX1vLnB1c2goImggZiIpO2NvbnN0IGM9by5qb2luKCJcbiIpLGw9bmV3IERpY3QodCk7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2wuc2V0KCJCQm94IixpKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7Y29uc3QgaD1uZXcgRGljdCh0KSx1PW5ldyBEaWN0KHQpO2guc2V0KCJFeHRHU3RhdGUiLHUpO2wuc2V0KCJSZXNvdXJjZXMiLGgpO2NvbnN0IGQ9bmV3IERpY3QodCk7dS5zZXQoIlIwIixkKTtkLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09cyl7ZC5zZXQoImNhIixzKTtkLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBmPW5ldyBTdHJpbmdTdHJlYW0oYyk7Zi5kaWN0PWw7cmV0dXJuIGZ9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUw7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmd2FybigiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6cn0pe2NvbnN0e2NvbG9yOmksb2xkQW5ub3RhdGlvbjpuLG9wYWNpdHk6cyxyZWN0Om8scm90YXRpb246Yyx1c2VyOmwscXVhZFBvaW50czpofT1lLHU9bnx8bmV3IERpY3QodCk7dS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTt1LnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkhpZ2hsaWdodCIpKTt1LnNldChuPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt1LnNldCgiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt1LnNldCgiUmVjdCIsbyk7dS5zZXQoIkYiLDQpO3Uuc2V0KCJCb3JkZXIiLFswLDAsMF0pO3Uuc2V0KCJSb3RhdGUiLGMpO3Uuc2V0KCJRdWFkUG9pbnRzIixoKTt1LnNldCgiQyIsZ2V0UGRmQ29sb3JBcnJheShpKSk7dS5zZXQoIkNBIixzKTtsJiZ1LnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShsKSk7aWYoYXx8cil7Y29uc3QgZT1uZXcgRGljdCh0KTt1LnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxyKX1yZXR1cm4gdX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Omksb3V0bGluZXM6bixvcGFjaXR5OnN9PWUsbz1bYCR7Z2V0UGRmQ29sb3IociwhMCl9YCwiL1IwIGdzIl0sYz1bXTtmb3IoY29uc3QgZSBvZiBuKXtjLmxlbmd0aD0wO2MucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTIpYy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdF0pfSAke251bWJlclRvU3RyaW5nKGVbdCsxXSl9IGxgKTtjLnB1c2goImgiKTtvLnB1c2goYy5qb2luKCJcbiIpKX1vLnB1c2goImYqIik7Y29uc3QgbD1vLmpvaW4oIlxuIiksaD1uZXcgRGljdCh0KTtoLnNldCgiRm9ybVR5cGUiLDEpO2guc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtoLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7aC5zZXQoIkJCb3giLGkpO2guc2V0KCJMZW5ndGgiLGwubGVuZ3RoKTtjb25zdCB1PW5ldyBEaWN0KHQpLGQ9bmV3IERpY3QodCk7dS5zZXQoIkV4dEdTdGF0ZSIsZCk7aC5zZXQoIlJlc291cmNlcyIsdSk7Y29uc3QgZj1uZXcgRGljdCh0KTtkLnNldCgiUjAiLGYpO2Yuc2V0KCJCTSIsTmFtZS5nZXQoIk11bHRpcGx5IikpO2lmKDEhPT1zKXtmLnNldCgiY2EiLHMpO2Yuc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpfWNvbnN0IGc9bmV3IFN0cmluZ1N0cmVhbShsKTtnLmRpY3Q9aDtyZXR1cm4gZ319Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ajtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9XztpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPSh0WzFdLXRbNV0pLzY7bGV0IHI9YSxpPXRbNF07Y29uc3Qgbj10WzVdLHM9dFs2XTtlLnB1c2goYCR7aX0gJHtuK3J9IG1gKTtkb3tpKz0yO3I9MD09PXI/YTowO2UucHVzaChgJHtpfSAke24rcn0gbGApfXdoaWxlKGk8cyk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbNF0sbi0yKmEscyxuKzIqYV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9VTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0rdFs0XSkvMisiICIrKHRbMV0rdFs1XSkvMisiIG0iLCh0WzJdK3RbNl0pLzIrIiAiKyh0WzNdK3RbN10pLzIrIiBsIiwiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ueyNwZT1udWxsO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1YO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITF9bXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoZSx0PW51bGwpe2lmKGUpe2lmKCF0aGlzLmRhdGEuaXNFZGl0YWJsZSlyZXR1cm4hMDt0aGlzLiNwZT8/PXRoaXMuZGF0YS5oYXNPd25DYW52YXM7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDtyZXR1cm4hMH1pZihudWxsIT09dGhpcy4jcGUpe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy4jcGU7dGhpcy4jcGU9bnVsbH1yZXR1cm4hdD8uaGFzKHRoaXMuZGF0YS5pZCl9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6YSxoZWlnaHQ6cn09ZSxpPW5ldyBPZmZzY3JlZW5DYW52YXMoYSxyKSxuPWkuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO24uZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBzPW4uZ2V0SW1hZ2VEYXRhKDAsMCxhLHIpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkocy5idWZmZXIpLGM9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PiEhKDI1NSZ+ZSkpO2lmKGMpe24uZmlsbFN0eWxlPSJ3aGl0ZSI7bi5maWxsUmVjdCgwLDAsYSxyKTtuLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgbD1pLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oKGU9PmUuYXJyYXlCdWZmZXIoKSkpLGg9TmFtZS5nZXQoIlhPYmplY3QiKSx1PU5hbWUuZ2V0KCJJbWFnZSIpLGQ9bmV3IERpY3QodCk7ZC5zZXQoIlR5cGUiLGgpO2Quc2V0KCJTdWJ0eXBlIix1KTtkLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7ZC5zZXQoIkNvbG9yU3BhY2UiLE5hbWUuZ2V0KCJEZXZpY2VSR0IiKSk7ZC5zZXQoIkZpbHRlciIsTmFtZS5nZXQoIkRDVERlY29kZSIpKTtkLnNldCgiQkJveCIsWzAsMCxhLHJdKTtkLnNldCgiV2lkdGgiLGEpO2Quc2V0KCJIZWlnaHQiLHIpO2xldCBmPW51bGw7aWYoYyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShvLmxlbmd0aCk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsYT1vLmxlbmd0aDt0PGE7dCsrKWVbdF09b1t0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsYT1vLmxlbmd0aDt0PGE7dCsrKWVbdF09MjU1Jm9bdF07Y29uc3QgaT1uZXcgRGljdCh0KTtpLnNldCgiVHlwZSIsaCk7aS5zZXQoIlN1YnR5cGUiLHUpO2kuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtpLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZUdyYXkiKSk7aS5zZXQoIldpZHRoIixhKTtpLnNldCgiSGVpZ2h0IixyKTtmPW5ldyBTdHJlYW0oZSwwLDAsaSl9cmV0dXJue2ltYWdlU3RyZWFtOm5ldyBTdHJlYW0oYXdhaXQgbCwwLDAsZCksc21hc2tTdHJlYW06Zix3aWR0aDphLGhlaWdodDpyfX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6cn0pe2NvbnN0e29sZEFubm90YXRpb246aSxyZWN0Om4scm90YXRpb246cyx1c2VyOm99PWUsYz1pfHxuZXcgRGljdCh0KTtjLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2Muc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7Yy5zZXQoaT8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Yy5zZXQoIlJlY3QiLG4pO2Muc2V0KCJGIiw0KTtjLnNldCgiQm9yZGVyIixbMCwwLDBdKTtjLnNldCgiUm90YXRlIixzKTtvJiZjLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShvKSk7aWYoYXx8cil7Y29uc3QgZT1uZXcgRGljdCh0KTtjLnNldCgiQVAiLGUpO2E/ZS5zZXQoIk4iLGEpOmUuc2V0KCJOIixyKX1yZXR1cm4gY31zdGF0aWMgYXN5bmMjbWUoZSx0KXtjb25zdHthcmVDb250b3VyczphLGNvbG9yOnIscmVjdDppLGxpbmVzOm4sdGhpY2tuZXNzOnN9PWUsbz1bYCR7c30gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihyLGEpfWBdO2Zvcihjb25zdCBlIG9mIG4pe28ucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbWApO2ZvcihsZXQgdD02LGE9ZS5sZW5ndGg7dDxhO3QrPTYpaWYoaXNOYU4oZVt0XSkpby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdCs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzVdKX0gbGApO2Vsc2V7Y29uc3RbYSxyLGksbixzLGNdPWUuc2xpY2UodCx0KzYpO28ucHVzaChbYSxyLGksbixzLGNdLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfTY9PT1lLmxlbmd0aCYmby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBsYCl9by5wdXNoKGE/IkYiOiJTIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksbD1uZXcgRGljdCh0KTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtsLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7bC5zZXQoIkJCb3giLGkpO2wuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTtjb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe2lmKGUub2xkQW5ub3RhdGlvbilyZXR1cm4gbnVsbDtpZihlLmlzU2lnbmF0dXJlKXJldHVybiB0aGlzLiNtZShlLHQpO2NvbnN0e3JvdGF0aW9uOnJ9PWUse2ltYWdlUmVmOmksd2lkdGg6bixoZWlnaHQ6c309YS5pbWFnZSxvPW5ldyBEaWN0KHQpLGM9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGMpO2Muc2V0KCJJbTAiLGkpO2NvbnN0IGw9YHEgJHtufSAwIDAgJHtzfSAwIDAgY20gL0ltMCBEbyBRYCxoPW5ldyBEaWN0KHQpO2guc2V0KCJGb3JtVHlwZSIsMSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtoLnNldCgiQkJveCIsWzAsMCxuLHNdKTtoLnNldCgiUmVzb3VyY2VzIixvKTtpZihyKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KHIsbixzKTtoLnNldCgiTWF0cml4IixlKX1jb25zdCB1PW5ldyBTdHJpbmdTdHJlYW0obCk7dS5kaWN0PWg7cmV0dXJuIHV9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZSxyPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSxhKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ejt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlPXIuc2VyaWFsaXphYmxlO2NvbnN0IGk9dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1pIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhpLm5hbWUpOiJQdXNoUGluIjtjb25zdCBuPXQuZ2V0KCJjYSIpO3RoaXMuZGF0YS5maWxsQWxwaGE9Im51bWJlciI9PXR5cGVvZiBuJiZuPj0wJiZuPD0xP246bnVsbH19Y29uc3QgcGM9e2dldCByKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyIixuZXcgVWludDhBcnJheShbNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxXSkpfSxnZXQgaygpe3JldHVybiBzaGFkb3codGhpcywiayIsbmV3IEludDMyQXJyYXkoWy02ODA4NzY5MzYsLTM4OTU2NDU4Niw2MDYxMDU4MTksLTEwNDQ1MjUzMzAsLTE3NjQxODg5NywxMjAwMDgwNDI2LC0xNDczMjMxMzQxLC00NTcwNTk4MywxNzcwMDM1NDE2LC0xOTU4NDE0NDE3LC00MjA2MywtMTk5MDQwNDE2MiwxODA0NjAzNjgyLC00MDM0MTEwMSwtMTUwMjAwMjI5MCwxMjM2NTM1MzI5LC0xNjU3OTY1MTAsLTEwNjk1MDE2MzIsNjQzNzE3NzEzLC0zNzM4OTczMDIsLTcwMTU1ODY5MSwzODAxNjA4MywtNjYwNDc4MzM1LC00MDU1Mzc4NDgsNTY4NDQ2NDM4LC0xMDE5ODAzNjkwLC0xODczNjM5NjEsMTE2MzUzMTUwMSwtMTQ0NDY4MTQ2NywtNTE0MDM3ODQsMTczNTMyODQ3MywtMTkyNjYwNzczNCwtMzc4NTU4LC0yMDIyNTc0NDYzLDE4MzkwMzA1NjIsLTM1MzA5NTU2LC0xNTMwOTkyMDYwLDEyNzI4OTMzNTMsLTE1NTQ5NzYzMiwtMTA5NDczMDY0MCw2ODEyNzkxNzQsLTM1ODUzNzIyMiwtNzIyNTIxOTc5LDc2MDI5MTg5LC02NDAzNjQ0ODcsLTQyMTgxNTgzNSw1MzA3NDI1MjAsLTk5NTMzODY1MSwtMTk4NjMwODQ0LDExMjY4OTE0MTUsLTE0MTYzNTQ5MDUsLTU3NDM0MDU1LDE3MDA0ODU1NzEsLTE4OTQ5ODY2MDYsLTEwNTE1MjMsLTIwNTQ5MjI3OTksMTg3MzMxMzM1OSwtMzA2MTE3NDQsLTE1NjAxOTgzODAsMTMwOTE1MTY0OSwtMTQ1NTIzMDcwLC0xMTIwMjEwMzc5LDcxODc4NzI1OSwtMzQzNDg1NTUxXSkpfX07ZnVuY3Rpb24gY2FsY3VsYXRlTUQ1KGUsdCxhKXtsZXQgcj0xNzMyNTg0MTkzLGk9LTI3MTczMzg3OSxuPS0xNzMyNTg0MTk0LHM9MjcxNzMzODc4O2NvbnN0IG89YSs3MiYtNjQsYz1uZXcgVWludDhBcnJheShvKTtsZXQgbCxoO2ZvcihsPTA7bDxhOysrbCljW2xdPWVbdCsrXTtjW2wrK109MTI4O2NvbnN0IHU9by04O2w8dSYmKGw9dSk7Y1tsKytdPWE8PDMmMjU1O2NbbCsrXT1hPj41JjI1NTtjW2wrK109YT4+MTMmMjU1O2NbbCsrXT1hPj4yMSYyNTU7Y1tsKytdPWE+Pj4yOSYyNTU7bCs9Mztjb25zdCBkPW5ldyBJbnQzMkFycmF5KDE2KSx7azpmLHI6Z309cGM7Zm9yKGw9MDtsPG87KXtmb3IoaD0wO2g8MTY7KytoLGwrPTQpZFtoXT1jW2xdfGNbbCsxXTw8OHxjW2wrMl08PDE2fGNbbCszXTw8MjQ7bGV0IGUsdCxhPXIsbz1pLHU9bixwPXM7Zm9yKGg9MDtoPDY0OysraCl7aWYoaDwxNil7ZT1vJnV8fm8mcDt0PWh9ZWxzZSBpZihoPDMyKXtlPXAmb3x+cCZ1O3Q9NSpoKzEmMTV9ZWxzZSBpZihoPDQ4KXtlPW9edV5wO3Q9MypoKzUmMTV9ZWxzZXtlPXVeKG98fnApO3Q9NypoJjE1fWNvbnN0IHI9cCxpPWErZStmW2hdK2RbdF18MCxuPWdbaF07cD11O3U9bztvPW8rKGk8PG58aT4+PjMyLW4pfDA7YT1yfXI9cithfDA7aT1pK298MDtuPW4rdXwwO3M9cytwfDB9cmV0dXJuIG5ldyBVaW50OEFycmF5KFsyNTUmcixyPj44JjI1NSxyPj4xNiYyNTUscj4+PjI0JjI1NSwyNTUmaSxpPj44JjI1NSxpPj4xNiYyNTUsaT4+PjI0JjI1NSwyNTUmbixuPj44JjI1NSxuPj4xNiYyNTUsbj4+PjI0JjI1NSwyNTUmcyxzPj44JjI1NSxzPj4xNiYyNTUscz4+PjI0JjI1NV0pfWZ1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaCh0KXt3YXJuKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIFNpbXBsZVhNTFBhcnNlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLm5vZGU9bnVsbH1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBhPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09YT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgU2luZ2xlSW50ZXJzZWN0b3J7I2JlOyN5ZT0xLzA7I3dlPTEvMDsjeGU9LTEvMDsjU2U9LTEvMDsja2U7I0FlPVtdOyNDZT1bXTsjdmU9LTE7I0ZlPSExO2NvbnN0cnVjdG9yKGUpe3RoaXMuI2JlPWU7Y29uc3QgdD10aGlzLiNrZT1lLmRhdGEucXVhZFBvaW50cztmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKz04KXt0aGlzLiN5ZT1NYXRoLm1pbih0aGlzLiN5ZSx0W2VdKTt0aGlzLiN4ZT1NYXRoLm1heCh0aGlzLiN4ZSx0W2UrMl0pO3RoaXMuI3dlPU1hdGgubWluKHRoaXMuI3dlLHRbZSs1XSk7dGhpcy4jU2U9TWF0aC5tYXgodGhpcy4jU2UsdFtlKzFdKX19b3ZlcmxhcHMoZSl7cmV0dXJuISh0aGlzLiN5ZT49ZS4jeGV8fHRoaXMuI3hlPD1lLiN5ZXx8dGhpcy4jd2U+PWUuI1NlfHx0aGlzLiNTZTw9ZS4jd2UpfSNJZShlLHQpe2lmKHRoaXMuI3llPj1lfHx0aGlzLiN4ZTw9ZXx8dGhpcy4jd2U+PXR8fHRoaXMuI1NlPD10KXJldHVybiExO2NvbnN0IGE9dGhpcy4ja2U7aWYoOD09PWEubGVuZ3RoKXJldHVybiEwO2lmKHRoaXMuI3ZlPj0wKXtjb25zdCByPXRoaXMuI3ZlO2lmKCEoYVtyXT49ZXx8YVtyKzJdPD1lfHxhW3IrNV0+PXR8fGFbcisxXTw9dCkpcmV0dXJuITA7dGhpcy4jdmU9LTF9Zm9yKGxldCByPTAsaT1hLmxlbmd0aDtyPGk7cis9OClpZighKGFbcl0+PWV8fGFbcisyXTw9ZXx8YVtyKzVdPj10fHxhW3IrMV08PXQpKXt0aGlzLiN2ZT1yO3JldHVybiEwfXJldHVybiExfWFkZEdseXBoKGUsdCxhKXtpZighdGhpcy4jSWUoZSx0KSl7dGhpcy5kaXNhYmxlRXh0cmFDaGFycygpO3JldHVybiExfWlmKHRoaXMuI0NlLmxlbmd0aD4wKXt0aGlzLiNBZS5wdXNoKHRoaXMuI0NlLmpvaW4oIiIpKTt0aGlzLiNDZS5sZW5ndGg9MH10aGlzLiNBZS5wdXNoKGEpO3RoaXMuI0ZlPSEwO3JldHVybiEwfWFkZEV4dHJhQ2hhcihlKXt0aGlzLiNGZSYmdGhpcy4jQ2UucHVzaChlKX1kaXNhYmxlRXh0cmFDaGFycygpe2lmKHRoaXMuI0ZlKXt0aGlzLiNGZT0hMTt0aGlzLiNDZS5sZW5ndGg9MH19c2V0VGV4dCgpe3RoaXMuI2JlLmRhdGEub3ZlcmxhaWRUZXh0PXRoaXMuI0FlLmpvaW4oIiIpfX1jbGFzcyBJbnRlcnNlY3RvcnsjVGU9bmV3IE1hcDtjb25zdHJ1Y3RvcihlKXtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5kYXRhLnF1YWRQb2ludHMpY29udGludWU7Y29uc3QgZT1uZXcgU2luZ2xlSW50ZXJzZWN0b3IodCk7Zm9yKGNvbnN0W3QsYV1vZiB0aGlzLiNUZSl0Lm92ZXJsYXBzKGUpJiYoYT9hLmFkZChlKTp0aGlzLiNUZS5zZXQodCxuZXcgU2V0KFtlXSkpKTt0aGlzLiNUZS5zZXQoZSxudWxsKX19YWRkR2x5cGgoZSx0LGEscil7Y29uc3QgaT1lWzRdK3QvMixuPWVbNV0rYS8yO2xldCBzO2Zvcihjb25zdFtlLHRdb2YgdGhpcy4jVGUpcz9zLmhhcyhlKT9lLmFkZEdseXBoKGksbixyKTplLmRpc2FibGVFeHRyYUNoYXJzKCk6ZS5hZGRHbHlwaChpLG4scikmJihzPXQpfWFkZEV4dHJhQ2hhcihlKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNUZS5rZXlzKCkpdC5hZGRFeHRyYUNoYXIoZSl9c2V0VGV4dCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuI1RlLmtleXMoKSllLnNldFRleHQoKX19Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fXNoaWZ0UmlnaHQoZSl7aWYoZT49MzIpe3RoaXMubG93PXRoaXMuaGlnaD4+PmUtMzJ8MDt0aGlzLmhpZ2g9MH1lbHNle3RoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWU7dGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MH19cm90YXRlUmlnaHQoZSl7bGV0IHQsYTtpZigzMiZlKXthPXRoaXMubG93O3Q9dGhpcy5oaWdofWVsc2V7dD10aGlzLmxvdzthPXRoaXMuaGlnaH1lJj0zMTt0aGlzLmxvdz10Pj4+ZXxhPDwzMi1lO3RoaXMuaGlnaD1hPj4+ZXx0PDwzMi1lfW5vdCgpe3RoaXMuaGlnaD1+dGhpcy5oaWdoO3RoaXMubG93PX50aGlzLmxvd31hZGQoZSl7Y29uc3QgdD0odGhpcy5sb3c+Pj4wKSsoZS5sb3c+Pj4wKTtsZXQgYT0odGhpcy5oaWdoPj4+MCkrKGUuaGlnaD4+PjApO3Q+NDI5NDk2NzI5NSYmKGErPTEpO3RoaXMubG93PTB8dDt0aGlzLmhpZ2g9MHxhfWNvcHlUbyhlLHQpe2VbdF09dGhpcy5oaWdoPj4+MjQmMjU1O2VbdCsxXT10aGlzLmhpZ2g+PjE2JjI1NTtlW3QrMl09dGhpcy5oaWdoPj44JjI1NTtlW3QrM109MjU1JnRoaXMuaGlnaDtlW3QrNF09dGhpcy5sb3c+Pj4yNCYyNTU7ZVt0KzVdPXRoaXMubG93Pj4xNiYyNTU7ZVt0KzZdPXRoaXMubG93Pj44JjI1NTtlW3QrN109MjU1JnRoaXMubG93fWFzc2lnbihlKXt0aGlzLmhpZ2g9ZS5oaWdoO3RoaXMubG93PWUubG93fX1jb25zdCBtYz17Z2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLFtuZXcgV29yZDY0KDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksbmV3IFdvcmQ2NCgxODk5NDQ3NDQxLDYwMjg5MTcyNSksbmV3IFdvcmQ2NCgzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLG5ldyBXb3JkNjQoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxuZXcgV29yZDY0KDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxuZXcgV29yZDY0KDE1MDg5NzA5OTMsMzA1MzgzNDI2NSksbmV3IFdvcmQ2NCgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLG5ldyBXb3JkNjQoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxuZXcgV29yZDY0KDM2MjQzODEwODAsMjczNDg4MzM5NCksbmV3IFdvcmQ2NCgzMTA1OTg0MDEsMTE2NDk5NjU0MiksbmV3IFdvcmQ2NCg2MDcyMjUyNzgsMTMyMzYxMDc2NCksbmV3IFdvcmQ2NCgxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLG5ldyBXb3JkNjQoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxuZXcgV29yZDY0KDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxuZXcgV29yZDY0KDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxuZXcgV29yZDY0KDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCksbmV3IFdvcmQ2NCgzODM1MzkwNDAxLDI2NjY2MTM0NTgpLG5ldyBXb3JkNjQoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLG5ldyBXb3JkNjQoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLG5ldyBXb3JkNjQoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLG5ldyBXb3JkNjQoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLG5ldyBXb3JkNjQoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxuZXcgV29yZDY0KDE1NTUwODE2OTIsMzE3NTIxODEzMiksbmV3IFdvcmQ2NCgxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLG5ldyBXb3JkNjQoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxuZXcgV29yZDY0KDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxuZXcgV29yZDY0KDI5NTI5OTY4MDgsMjU2NjU5NDg3OSksbmV3IFdvcmQ2NCgzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLG5ldyBXb3JkNjQoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxuZXcgV29yZDY0KDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSksbmV3IFdvcmQ2NCgxMTM5MjY5OTMsMzc1ODMyNjM4MyksbmV3IFdvcmQ2NCgzMzgyNDE4OTUsMTY4NzE3OTM2KSxuZXcgV29yZDY0KDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxuZXcgV29yZDY0KDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxuZXcgV29yZDY0KDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSksbmV3IFdvcmQ2NCgxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLG5ldyBXb3JkNjQoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxuZXcgV29yZDY0KDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksbmV3IFdvcmQ2NCgyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLG5ldyBXb3JkNjQoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLG5ldyBXb3JkNjQoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxuZXcgV29yZDY0KDI4MjAzMDI0MTEsMzE1ODQ1NDI3MyksbmV3IFdvcmQ2NCgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLG5ldyBXb3JkNjQoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLG5ldyBXb3JkNjQoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxuZXcgV29yZDY0KDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksbmV3IFdvcmQ2NCg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLG5ldyBXb3JkNjQoMjc1NDIzMzQ0LDg1MTE2OTcyMCksbmV3IFdvcmQ2NCg0MzAyMjc3MzQsMzEwMDgyMzc1MiksbmV3IFdvcmQ2NCg1MDY5NDg2MTYsMTM2MzI1ODE5NSksbmV3IFdvcmQ2NCg2NTkwNjA1NTYsMzc1MDY4NTU5MyksbmV3IFdvcmQ2NCg4ODM5OTc4NzcsMzc4NTA1MDI4MCksbmV3IFdvcmQ2NCg5NTgxMzk1NzEsMzMxODMwNzQyNyksbmV3IFdvcmQ2NCgxMzIyODIyMjE4LDM4MTI3MjM0MDMpLG5ldyBXb3JkNjQoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxuZXcgV29yZDY0KDE3NDc4NzM3NzksMzYwMjAzNjg5OSksbmV3IFdvcmQ2NCgxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLG5ldyBXb3JkNjQoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxuZXcgV29yZDY0KDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksbmV3IFdvcmQ2NCgyMzYxODUyNDI0LDQ0Mjc3NjA0NCksbmV3IFdvcmQ2NCgyNDI4NDM2NDc0LDU5MzY5ODM0NCksbmV3IFdvcmQ2NCgyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLG5ldyBXb3JkNjQoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxuZXcgV29yZDY0KDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksbmV3IFdvcmQ2NCgzMzkxNTY5NjE0LDM5MjgzODM5MDApLG5ldyBXb3JkNjQoMzUxNTI2NzI3MSw1NjYyODA3MTEpLG5ldyBXb3JkNjQoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxuZXcgV29yZDY0KDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksbmV3IFdvcmQ2NCgxMTY0MTg0NzQsMTkxNDEzODU1NCksbmV3IFdvcmQ2NCgxNzQyOTI0MjEsMjczMTA1NTI3MCksbmV3IFdvcmQ2NCgyODkzODAzNTYsMzIwMzk5MzAwNiksbmV3IFdvcmQ2NCg0NjAzOTMyNjksMzIwNjIwMzE1KSxuZXcgV29yZDY0KDY4NTQ3MTczMyw1ODc0OTY4MzYpLG5ldyBXb3JkNjQoODUyMTQyOTcxLDEwODY3OTI4NTEpLG5ldyBXb3JkNjQoMTAxNzAzNjI5OCwzNjU1NDMxMDApLG5ldyBXb3JkNjQoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxuZXcgV29yZDY0KDEyODgwMzM0NzAsMzQwOTg1NTE1OCksbmV3IFdvcmQ2NCgxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLG5ldyBXb3JkNjQoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLG5ldyBXb3JkNjQoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV0pfX07ZnVuY3Rpb24gY2goZSx0LGEscixpKXtlLmFzc2lnbih0KTtlLmFuZChhKTtpLmFzc2lnbih0KTtpLm5vdCgpO2kuYW5kKHIpO2UueG9yKGkpfWZ1bmN0aW9uIG1haihlLHQsYSxyLGkpe2UuYXNzaWduKHQpO2UuYW5kKGEpO2kuYXNzaWduKHQpO2kuYW5kKHIpO2UueG9yKGkpO2kuYXNzaWduKGEpO2kuYW5kKHIpO2UueG9yKGkpfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBNTEyKGUsdCxhLHI9ITEpe2xldCBpLG4scyxvLGMsbCxoLHU7aWYocil7aT1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7bj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtzPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO289bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7Yz1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7bD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7aD1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7dT1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtpPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtuPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtzPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtvPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtjPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtsPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2g9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7dT1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBkPTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxhOysrZylmW2ddPWVbdCsrXTtmW2crK109MTI4O2NvbnN0IG09ZC0xNjtnPG0mJihnPW0pO2crPTExO2ZbZysrXT1hPj4+MjkmMjU1O2ZbZysrXT1hPj4yMSYyNTU7ZltnKytdPWE+PjEzJjI1NTtmW2crK109YT4+NSYyNTU7ZltnKytdPWE8PDMmMjU1O2NvbnN0IGI9bmV3IEFycmF5KDgwKTtmb3IoZz0wO2c8ODA7ZysrKWJbZ109bmV3IFdvcmQ2NCgwLDApO2NvbnN0e2s6eX09bWM7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLFQ9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IE89bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2xldCBOLEU7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdLmhpZ2g9ZltnXTw8MjR8ZltnKzFdPDwxNnxmW2crMl08PDh8ZltnKzNdO2JbcF0ubG93PWZbZys0XTw8MjR8ZltnKzVdPDwxNnxmW2crNl08PDh8ZltnKzddO2crPTh9Zm9yKHA9MTY7cDw4MDsrK3Ape049YltwXTtsaXR0bGVTaWdtYVByaW1lKE4sYltwLTJdLFIpO04uYWRkKGJbcC03XSk7bGl0dGxlU2lnbWEoRCxiW3AtMTVdLFIpO04uYWRkKEQpO04uYWRkKGJbcC0xNl0pfXcuYXNzaWduKGkpO3guYXNzaWduKG4pO1MuYXNzaWduKHMpO2suYXNzaWduKG8pO0MuYXNzaWduKGMpO3YuYXNzaWduKGwpO0YuYXNzaWduKGgpO1QuYXNzaWduKHUpO2ZvcihwPTA7cDw4MDsrK3Ape08uYXNzaWduKFQpO3NpZ21hUHJpbWUoRCxDLFIpO08uYWRkKEQpO2NoKEQsQyx2LEYsUik7Ty5hZGQoRCk7Ty5hZGQoeVtwXSk7Ty5hZGQoYltwXSk7c2lnbWEoTSx3LFIpO21haihELHcseCxTLFIpO00uYWRkKEQpO049VDtUPUY7Rj12O3Y9QztrLmFkZChPKTtDPWs7az1TO1M9eDt4PXc7Ti5hc3NpZ24oTyk7Ti5hZGQoTSk7dz1OfWkuYWRkKHcpO24uYWRkKHgpO3MuYWRkKFMpO28uYWRkKGspO2MuYWRkKEMpO2wuYWRkKHYpO2guYWRkKEYpO3UuYWRkKFQpfWlmKHIpe0U9bmV3IFVpbnQ4QXJyYXkoNDgpO2kuY29weVRvKEUsMCk7bi5jb3B5VG8oRSw4KTtzLmNvcHlUbyhFLDE2KTtvLmNvcHlUbyhFLDI0KTtjLmNvcHlUbyhFLDMyKTtsLmNvcHlUbyhFLDQwKX1lbHNle0U9bmV3IFVpbnQ4QXJyYXkoNjQpO2kuY29weVRvKEUsMCk7bi5jb3B5VG8oRSw4KTtzLmNvcHlUbyhFLDE2KTtvLmNvcHlUbyhFLDI0KTtjLmNvcHlUbyhFLDMyKTtsLmNvcHlUbyhFLDQwKTtoLmNvcHlUbyhFLDQ4KTt1LmNvcHlUbyhFLDU2KX1yZXR1cm4gRX1jb25zdCBiYz17Z2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLFsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdKX19O2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2NoKGUsdCxhKXtyZXR1cm4gZSZ0Xn5lJmF9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9tYWooZSx0LGEpe3JldHVybiBlJnReZSZhXnQmYX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X3NpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hKGUpe3JldHVybiByb3RyKGUsNylecm90cihlLDE4KV5lPj4+M31mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTYoZSx0LGEpe2xldCByPTE3NzkwMzM3MDMsaT0zMTQ0MTM0Mjc3LG49MTAxMzkwNDI0MixzPTI3NzM0ODA3NjIsbz0xMzU5ODkzMTE5LGM9MjYwMDgyMjkyNCxsPTUyODczNDYzNSxoPTE1NDE0NTkyMjU7Y29uc3QgdT02NCpNYXRoLmNlaWwoKGErOSkvNjQpLGQ9bmV3IFVpbnQ4QXJyYXkodSk7bGV0IGYsZztmb3IoZj0wO2Y8YTsrK2YpZFtmXT1lW3QrK107ZFtmKytdPTEyODtjb25zdCBwPXUtODtmPHAmJihmPXApO2YrPTM7ZFtmKytdPWE+Pj4yOSYyNTU7ZFtmKytdPWE+PjIxJjI1NTtkW2YrK109YT4+MTMmMjU1O2RbZisrXT1hPj41JjI1NTtkW2YrK109YTw8MyYyNTU7Y29uc3QgbT1uZXcgVWludDMyQXJyYXkoNjQpLHtrOmJ9PWJjO2ZvcihmPTA7Zjx1Oyl7Zm9yKGc9MDtnPDE2OysrZyl7bVtnXT1kW2ZdPDwyNHxkW2YrMV08PDE2fGRbZisyXTw8OHxkW2YrM107Zis9NH1mb3IoZz0xNjtnPDY0OysrZyltW2ddPShyb3RyKHk9bVtnLTJdLDE3KV5yb3RyKHksMTkpXnk+Pj4xMCkrbVtnLTddK2NhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWEobVtnLTE1XSkrbVtnLTE2XXwwO2xldCBlLHQsYT1yLHU9aSxwPW4sdz1zLHg9byxTPWMsaz1sLEM9aDtmb3IoZz0wO2c8NjQ7KytnKXtlPUMrY2FsY3VsYXRlX3NoYTI1Nl9zaWdtYVByaW1lKHgpK2NhbGN1bGF0ZV9zaGEyNTZfY2goeCxTLGspK2JbZ10rbVtnXTt0PWNhbGN1bGF0ZV9zaGEyNTZfc2lnbWEoYSkrY2FsY3VsYXRlX3NoYTI1Nl9tYWooYSx1LHApO0M9aztrPVM7Uz14O3g9dytlfDA7dz1wO3A9dTt1PWE7YT1lK3R8MH1yPXIrYXwwO2k9aSt1fDA7bj1uK3B8MDtzPXMrd3wwO289byt4fDA7Yz1jK1N8MDtsPWwra3wwO2g9aCtDfDB9dmFyIHk7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLGk+PjI0JjI1NSxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1Jmksbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sYz4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyxsPj4yNCYyNTUsbD4+MTYmMjU1LGw+PjgmMjU1LDI1NSZsLGg+PjI0JjI1NSxoPj4xNiYyNTUsaD4+OCYyNTUsMjU1JmhdKX1jbGFzcyBEZWNyeXB0U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5kZWNyeXB0PWE7dGhpcy5uZXh0Q2h1bms9bnVsbDt0aGlzLmluaXRpYWxpemVkPSExfXJlYWRCbG9jaygpe2xldCBlO2lmKHRoaXMuaW5pdGlhbGl6ZWQpZT10aGlzLm5leHRDaHVuaztlbHNle2U9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTt0aGlzLmluaXRpYWxpemVkPSEwfWlmKCFlPy5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLm5leHRDaHVuaz10aGlzLnN0ci5nZXRCeXRlcyg1MTIpO2NvbnN0IHQ9dGhpcy5uZXh0Q2h1bms/Lmxlbmd0aD4wO2U9KDAsdGhpcy5kZWNyeXB0KShlLCF0KTtjb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9YStlLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihyKS5zZXQoZSxhKTt0aGlzLmJ1ZmZlckxlbmd0aD1yfX1jbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsaT0wO3I8MjU2Oysrcil7Y29uc3Qgbj10W3JdO2k9aStuK2VbciVhXSYyNTU7dFtyXT10W2ldO3RbaV09bn10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLGk9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0PXQrMSYyNTU7Y29uc3QgaT1yW3RdO2E9YStpJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09aTtuW3NdPWVbc11ecltpK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gbn1kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye19zPW5ldyBVaW50OEFycmF5KFs5OSwxMjQsMTE5LDEyMywyNDIsMTA3LDExMSwxOTcsNDgsMSwxMDMsNDMsMjU0LDIxNSwxNzEsMTE4LDIwMiwxMzAsMjAxLDEyNSwyNTAsODksNzEsMjQwLDE3MywyMTIsMTYyLDE3NSwxNTYsMTY0LDExNCwxOTIsMTgzLDI1MywxNDcsMzgsNTQsNjMsMjQ3LDIwNCw1MiwxNjUsMjI5LDI0MSwxMTMsMjE2LDQ5LDIxLDQsMTk5LDM1LDE5NSwyNCwxNTAsNSwxNTQsNywxOCwxMjgsMjI2LDIzNSwzOSwxNzgsMTE3LDksMTMxLDQ0LDI2LDI3LDExMCw5MCwxNjAsODIsNTksMjE0LDE3OSw0MSwyMjcsNDcsMTMyLDgzLDIwOSwwLDIzNywzMiwyNTIsMTc3LDkxLDEwNiwyMDMsMTkwLDU3LDc0LDc2LDg4LDIwNywyMDgsMjM5LDE3MCwyNTEsNjcsNzcsNTEsMTMzLDY5LDI0OSwyLDEyNyw4MCw2MCwxNTksMTY4LDgxLDE2Myw2NCwxNDMsMTQ2LDE1Nyw1NiwyNDUsMTg4LDE4MiwyMTgsMzMsMTYsMjU1LDI0MywyMTAsMjA1LDEyLDE5LDIzNiw5NSwxNTEsNjgsMjMsMTk2LDE2NywxMjYsNjEsMTAwLDkzLDI1LDExNSw5NiwxMjksNzksMjIwLDM0LDQyLDE0NCwxMzYsNzAsMjM4LDE4NCwyMCwyMjIsOTQsMTEsMjE5LDIyNCw1MCw1OCwxMCw3Myw2LDM2LDkyLDE5NCwyMTEsMTcyLDk4LDE0NSwxNDksMjI4LDEyMSwyMzEsMjAwLDU1LDEwOSwxNDEsMjEzLDc4LDE2OSwxMDgsODYsMjQ0LDIzNCwxMDEsMTIyLDE3NCw4LDE4NiwxMjAsMzcsNDYsMjgsMTY2LDE4MCwxOTgsMjMyLDIyMSwxMTYsMzEsNzUsMTg5LDEzOSwxMzgsMTEyLDYyLDE4MSwxMDIsNzIsMywyNDYsMTQsOTcsNTMsODcsMTg1LDEzNCwxOTMsMjksMTU4LDIyNSwyNDgsMTUyLDE3LDEwNSwyMTcsMTQyLDE0OCwxNTUsMzAsMTM1LDIzMywyMDYsODUsNDAsMjIzLDE0MCwxNjEsMTM3LDEzLDE5MSwyMzAsNjYsMTA0LDY1LDE1Myw0NSwxNSwxNzYsODQsMTg3LDIyXSk7X2ludl9zPW5ldyBVaW50OEFycmF5KFs4Miw5LDEwNiwyMTMsNDgsNTQsMTY1LDU2LDE5MSw2NCwxNjMsMTU4LDEyOSwyNDMsMjE1LDI1MSwxMjQsMjI3LDU3LDEzMCwxNTUsNDcsMjU1LDEzNSw1MiwxNDIsNjcsNjgsMTk2LDIyMiwyMzMsMjAzLDg0LDEyMywxNDgsNTAsMTY2LDE5NCwzNSw2MSwyMzgsNzYsMTQ5LDExLDY2LDI1MCwxOTUsNzgsOCw0NiwxNjEsMTAyLDQwLDIxNywzNiwxNzgsMTE4LDkxLDE2Miw3MywxMDksMTM5LDIwOSwzNywxMTQsMjQ4LDI0NiwxMDAsMTM0LDEwNCwxNTIsMjIsMjEyLDE2NCw5MiwyMDQsOTMsMTAxLDE4MiwxNDYsMTA4LDExMiw3Miw4MCwyNTMsMjM3LDE4NSwyMTgsOTQsMjEsNzAsODcsMTY3LDE0MSwxNTcsMTMyLDE0NCwyMTYsMTcxLDAsMTQwLDE4OCwyMTEsMTAsMjQ3LDIyOCw4OCw1LDE4NCwxNzksNjksNiwyMDgsNDQsMzAsMTQzLDIwMiw2MywxNSwyLDE5MywxNzUsMTg5LDMsMSwxOSwxMzgsMTA3LDU4LDE0NSwxNyw2NSw3OSwxMDMsMjIwLDIzNCwxNTEsMjQyLDIwNywyMDYsMjQwLDE4MCwyMzAsMTE1LDE1MCwxNzIsMTE2LDM0LDIzMSwxNzMsNTMsMTMzLDIyNiwyNDksNTUsMjMyLDI4LDExNywyMjMsMTEwLDcxLDI0MSwyNiwxMTMsMjksNDEsMTk3LDEzNywxMTEsMTgzLDk4LDE0LDE3MCwyNCwxOTAsMjcsMjUyLDg2LDYyLDc1LDE5OCwyMTAsMTIxLDMyLDE1NCwyMTksMTkyLDI1NCwxMjAsMjA1LDkwLDI0NCwzMSwyMjEsMTY4LDUxLDEzNiw3LDE5OSw0OSwxNzcsMTgsMTYsODksMzksMTI4LDIzNiw5NSw5Niw4MSwxMjcsMTY5LDI1LDE4MSw3NCwxMyw0NSwyMjksMTIyLDE1OSwxNDcsMjAxLDE1NiwyMzksMTYwLDIyNCw1OSw3NywxNzQsNDIsMjQ1LDE3NiwyMDAsMjM1LDE4Nyw2MCwxMzEsODMsMTUzLDk3LDIzLDQzLDQsMTI2LDE4NiwxMTksMjE0LDM4LDIyNSwxMDUsMjAsOTksODUsMzMsMTIsMTI1XSk7X21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTtfbWl4Q29sPW5ldyBVaW50OEFycmF5KDI1NikubWFwKCgoZSx0KT0+dDwxMjg/dDw8MTp0PDwxXjI3KSk7Y29uc3RydWN0b3IoKXt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpbltlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9blsxM107blsxM109bls5XTtuWzldPW5bNV07bls1XT1uWzFdO25bMV09YTthPW5bMTRdO3I9blsxMF07blsxNF09bls2XTtuWzEwXT1uWzJdO25bNl09YTtuWzJdPXI7YT1uWzE1XTtyPW5bMTFdO2k9bls3XTtuWzE1XT1uWzNdO25bMTFdPWE7bls3XT1yO25bM109aTtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPXRoaXMuX2ludl9zW25bZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpblthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W25bZV1dLHI9dGhpcy5fbWl4W25bZSsxXV0saT10aGlzLl9taXhbbltlKzJdXSxzPXRoaXMuX21peFtuW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5pPj4+MTZeaTw8MTZecz4+PjI0XnM8PDg7bltlXT1hPj4+MjQmMjU1O25bZSsxXT1hPj4xNiYyNTU7bltlKzJdPWE+PjgmMjU1O25bZSszXT0yNTUmYX19YT1uWzEzXTtuWzEzXT1uWzldO25bOV09bls1XTtuWzVdPW5bMV07blsxXT1hO2E9blsxNF07cj1uWzEwXTtuWzE0XT1uWzZdO25bMTBdPW5bMl07bls2XT1hO25bMl09cjthPW5bMTVdO3I9blsxMV07aT1uWzddO25bMTVdPW5bM107blsxMV09YTtuWzddPXI7blszXT1pO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtuW2VdPXRoaXMuX2ludl9zW25bZV1dO25bZV1ePXRbZV19cmV0dXJuIG59X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsaSxuO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07bj1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1uO249c1syXTtpPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPW47c1sxNF09aTtuPXNbM107aT1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPW47c1sxMV09aTtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2VdLGE9c1tlKzFdLGk9c1tlKzJdLG49c1tlKzNdO3I9dF5hXmlebjtzW2VdXj1yXnRoaXMuX21peENvbFt0XmFdO3NbZSsxXV49cl50aGlzLl9taXhDb2xbYV5pXTtzW2UrMl1ePXJedGhpcy5fbWl4Q29sW2lebl07c1tlKzNdXj1yXnRoaXMuX21peENvbFtuXnRdfWZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3Ipc1thXV49dFtyXX1mb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07bj1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1uO249c1syXTtpPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPW47c1sxNF09aTtuPXNbM107aT1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPW47c1sxMV09aTtzWzE1XT1yO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2Epc1tlXV49dFthXTtyZXR1cm4gc31fZGVjcnlwdEJsb2NrMihlLHQpe2NvbnN0IGE9ZS5sZW5ndGg7bGV0IHI9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IG49W107bGV0IHM9dGhpcy5pdjtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtyW2ldPWVbdF07KytpO2lmKGk8MTYpY29udGludWU7Y29uc3QgYT10aGlzLl9kZWNyeXB0KHIsdGhpcy5fa2V5KTtmb3IobGV0IGU9MDtlPDE2OysrZSlhW2VdXj1zW2VdO3M9cjtuLnB1c2goYSk7cj1uZXcgVWludDhBcnJheSgxNik7aT0wfXRoaXMuYnVmZmVyPXI7dGhpcy5idWZmZXJMZW5ndGg9aTt0aGlzLml2PXM7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgbz0xNipuLmxlbmd0aDtpZih0KXtjb25zdCBlPW4uYXQoLTEpO2xldCB0PWVbMTVdO2lmKHQ8PTE2KXtmb3IobGV0IGE9MTUscj0xNi10O2E+PXI7LS1hKWlmKGVbYV0hPT10KXt0PTA7YnJlYWt9by09dDtuW24ubGVuZ3RoLTFdPWUuc3ViYXJyYXkoMCwxNi10KX19Y29uc3QgYz1uZXcgVWludDhBcnJheShvKTtmb3IobGV0IGU9MCx0PTAsYT1uLmxlbmd0aDtlPGE7KytlLHQrPTE2KWMuc2V0KG5bZV0sdCk7cmV0dXJuIGN9ZGVjcnlwdEJsb2NrKGUsdCxhPW51bGwpe2NvbnN0IHI9ZS5sZW5ndGgsaT10aGlzLmJ1ZmZlcjtsZXQgbj10aGlzLmJ1ZmZlclBvc2l0aW9uO2lmKGEpdGhpcy5pdj1hO2Vsc2V7Zm9yKGxldCB0PTA7bjwxNiYmdDxyOysrdCwrK24paVtuXT1lW3RdO2lmKG48MTYpe3RoaXMuYnVmZmVyTGVuZ3RoPW47cmV0dXJuIG5ldyBVaW50OEFycmF5KDApfXRoaXMuaXY9aTtlPWUuc3ViYXJyYXkoMTYpfXRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZGVjcnlwdEJsb2NrPXRoaXMuX2RlY3J5cHRCbG9jazI7cmV0dXJuIHRoaXMuZGVjcnlwdEJsb2NrKGUsdCl9ZW5jcnlwdChlLHQpe2NvbnN0IGE9ZS5sZW5ndGg7bGV0IHI9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IG49W107dHx8PW5ldyBVaW50OEFycmF5KDE2KTtmb3IobGV0IHM9MDtzPGE7KytzKXtyW2ldPWVbc107KytpO2lmKGk8MTYpY29udGludWU7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpcltlXV49dFtlXTtjb25zdCBhPXRoaXMuX2VuY3J5cHQocix0aGlzLl9rZXkpO3Q9YTtuLnB1c2goYSk7cj1uZXcgVWludDhBcnJheSgxNik7aT0wfXRoaXMuYnVmZmVyPXI7dGhpcy5idWZmZXJMZW5ndGg9aTt0aGlzLml2PXQ7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtjb25zdCBzPTE2Km4ubGVuZ3RoLG89bmV3IFVpbnQ4QXJyYXkocyk7Zm9yKGxldCBlPTAsdD0wLGE9bi5sZW5ndGg7ZTxhOysrZSx0Kz0xNilvLnNldChuW2VdLHQpO3JldHVybiBvfX1jbGFzcyBBRVMxMjhDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye19yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTA7dGhpcy5fa2V5U2l6ZT0xNjA7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixpPTE7ZTwxNzY7KytpKXtsZXQgbj1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07bj10W25dO3M9dFtzXTtvPXRbb107Yz10W2NdO25ePWFbaV07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1uXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPW5ldyBVaW50OEFycmF5KDI0MCk7YS5zZXQoZSk7bGV0IHIsaSxuLHMsbz0xO2ZvcihsZXQgZT0zMixjPTE7ZTwyNDA7KytjKXtpZihlJTMyPT0xNil7cj10W3JdO2k9dFtpXTtuPXRbbl07cz10W3NdfWVsc2UgaWYoZSUzMj09MCl7cj1hW2UtM107aT1hW2UtMl07bj1hW2UtMV07cz1hW2UtNF07cj10W3JdO2k9dFtpXTtuPXRbbl07cz10W3NdO3JePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXthW2VdPXJePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1uXj1hW2UtMzJdO2UrKzthW2VdPXNePWFbZS0zMl07ZSsrfX1yZXR1cm4gYX19Y2xhc3MgUERGQmFzZXtfaGFzaChlLHQsYSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgX2hhc2hgIGNhbGxlZCIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsYSxyKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtpLnNldChlLDApO2kuc2V0KHQsZS5sZW5ndGgpO2kuc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLGksYSkscil9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxyLFtdKSxhKX1nZXRPd25lcktleShlLHQsYSxyKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtpLnNldChlLDApO2kuc2V0KHQsZS5sZW5ndGgpO2kuc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IG49dGhpcy5faGFzaChlLGksYSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT10aGlzLl9oYXNoKGUscixbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgUERGMTcgZXh0ZW5kcyBQREZCYXNle19oYXNoKGUsdCxhKXtyZXR1cm4gY2FsY3VsYXRlU0hBMjU2KHQsMCx0Lmxlbmd0aCl9fWNsYXNzIFBERjIwIGV4dGVuZHMgUERGQmFzZXtfaGFzaChlLHQsYSl7bGV0IHI9Y2FsY3VsYXRlU0hBMjU2KHQsMCx0Lmxlbmd0aCkuc3ViYXJyYXkoMCwzMiksaT1bMF0sbj0wO2Zvcig7bjw2NHx8aS5hdCgtMSk+bi0zMjspe2NvbnN0IHQ9ZS5sZW5ndGgrci5sZW5ndGgrYS5sZW5ndGgsbD1uZXcgVWludDhBcnJheSh0KTtsZXQgaD0wO2wuc2V0KGUsaCk7aCs9ZS5sZW5ndGg7bC5zZXQocixoKTtoKz1yLmxlbmd0aDtsLnNldChhLGgpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkoNjQqdCk7Zm9yKGxldCBlPTAsYT0wO2U8NjQ7ZSsrLGErPXQpdS5zZXQobCxhKTtpPW5ldyBBRVMxMjhDaXBoZXIoci5zdWJhcnJheSgwLDE2KSkuZW5jcnlwdCh1LHIuc3ViYXJyYXkoMTYsMzIpKTtjb25zdCBkPU1hdGguc3VtUHJlY2lzZShpLnNsaWNlKDAsMTYpKSUzOzA9PT1kP3I9Y2FsY3VsYXRlU0hBMjU2KGksMCxpLmxlbmd0aCk6MT09PWQ/cj0ocz1pLG89MCxjPWkubGVuZ3RoLGNhbGN1bGF0ZVNIQTUxMihzLG8sYywhMCkpOjI9PT1kJiYocj1jYWxjdWxhdGVTSEE1MTIoaSwwLGkubGVuZ3RoKSk7bisrfXZhciBzLG8sYztyZXR1cm4gci5zdWJhcnJheSgwLDMyKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsKGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZSx0KXtyZXR1cm4gYS5kZWNyeXB0QmxvY2soZSx0KX0pKX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7bGV0IGE9c3RyaW5nVG9CeXRlcyhlKTthPXQuZGVjcnlwdEJsb2NrKGEsITApO3JldHVybiBieXRlc1RvU3RyaW5nKGEpfWVuY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtpZih0IGluc3RhbmNlb2YgQUVTQmFzZUNpcGhlcil7Y29uc3QgYT0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpLnJlcGVhdChhKTtjb25zdCByPW5ldyBVaW50OEFycmF5KDE2KTtjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHIpO2xldCBpPXN0cmluZ1RvQnl0ZXMoZSk7aT10LmVuY3J5cHQoaSxyKTtjb25zdCBuPW5ldyBVaW50OEFycmF5KDE2K2kubGVuZ3RoKTtuLnNldChyKTtuLnNldChpLDE2KTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhuKX1sZXQgYT1zdHJpbmdUb0J5dGVzKGUpO2E9dC5lbmNyeXB0KGEpO3JldHVybiBieXRlc1RvU3RyaW5nKGEpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5e3N0YXRpYyBnZXQgX2RlZmF1bHRQYXNzd29yZEJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfZGVmYXVsdFBhc3N3b3JkQnl0ZXMiLG5ldyBVaW50OEFycmF5KFs0MCwxOTEsNzgsOTQsNzgsMTE3LDEzOCw2NSwxMDAsMCw3OCw4NiwyNTUsMjUwLDEsOCw0Niw0NiwwLDE4MiwyMDgsMTA0LDYyLDEyOCw0NywxMiwxNjksMjU0LDEwMCw4MywxMDUsMTIyXSkpfSNPZShlLHQsYSxyLGksbixzLG8sYyxsLGgsdSl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtjb25zdCBkPTY9PT1lP25ldyBQREYyMDpuZXcgUERGMTc7cmV0dXJuIGQuY2hlY2tVc2VyUGFzc3dvcmQodCxvLHMpP2QuZ2V0VXNlcktleSh0LGMsaCk6dC5sZW5ndGgmJmQuY2hlY2tPd25lclBhc3N3b3JkKHQscixuLGEpP2QuZ2V0T3duZXJLZXkodCxpLG4sbCk6bnVsbH0jTWUoZSx0LGEscixpLG4scyxvKXtjb25zdCBjPTQwK2EubGVuZ3RoK2UubGVuZ3RoLGw9bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGgsdSxkPTA7aWYodCl7dT1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtkPHU7KytkKWxbZF09dFtkXX1oPTA7Zm9yKDtkPDMyOylsW2QrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXNbaCsrXTtsLnNldChhLGQpO2QrPWEubGVuZ3RoO2xbZCsrXT0yNTUmaTtsW2QrK109aT4+OCYyNTU7bFtkKytdPWk+PjE2JjI1NTtsW2QrK109aT4+PjI0JjI1NTtsLnNldChlLGQpO2QrPWUubGVuZ3RoO2lmKG4+PTQmJiFvKXtsLmZpbGwoMjU1LGQsZCs0KTtkKz00fWxldCBmPWNhbGN1bGF0ZU1ENShsLDAsZCk7Y29uc3QgZz1zPj4zO2lmKG4+PTMpZm9yKGg9MDtoPDUwOysraClmPWNhbGN1bGF0ZU1ENShmLDAsZyk7Y29uc3QgcD1mLnN1YmFycmF5KDAsZyk7bGV0IG0sYjtpZihuPj0zKXtkPTA7bC5zZXQoQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXMsZCk7ZCs9MzI7bC5zZXQoZSxkKTtkKz1lLmxlbmd0aDttPW5ldyBBUkNGb3VyQ2lwaGVyKHApO2I9bS5lbmNyeXB0QmxvY2soY2FsY3VsYXRlTUQ1KGwsMCxkKSk7dT1wLmxlbmd0aDtjb25zdCB0PW5ldyBVaW50OEFycmF5KHUpO2ZvcihoPTE7aDw9MTk7KytoKXtmb3IobGV0IGU9MDtlPHU7KytlKXRbZV09cFtlXV5oO209bmV3IEFSQ0ZvdXJDaXBoZXIodCk7Yj1tLmVuY3J5cHRCbG9jayhiKX19ZWxzZXttPW5ldyBBUkNGb3VyQ2lwaGVyKHApO2I9bS5lbmNyeXB0QmxvY2soQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXMpfXJldHVybiBiLmV2ZXJ5KCgoZSx0KT0+clt0XT09PWUpKT9wOm51bGx9I0RlKGUsdCxhLHIpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBuPTA7Y29uc3Qgcz1NYXRoLm1pbigzMixlLmxlbmd0aCk7Zm9yKDtuPHM7KytuKWlbbl09ZVtuXTtsZXQgbz0wO2Zvcig7bjwzMjspaVtuKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzW28rK107bGV0IGM9Y2FsY3VsYXRlTUQ1KGksMCxuKTtjb25zdCBsPXI+PjM7aWYoYT49Mylmb3Iobz0wO288NTA7KytvKWM9Y2FsY3VsYXRlTUQ1KGMsMCxjLmxlbmd0aCk7bGV0IGgsdTtpZihhPj0zKXt1PXQ7Y29uc3QgZT1uZXcgVWludDhBcnJheShsKTtmb3Iobz0xOTtvPj0wO28tLSl7Zm9yKGxldCB0PTA7dDxsOysrdCllW3RdPWNbdF1ebztoPW5ldyBBUkNGb3VyQ2lwaGVyKGUpO3U9aC5lbmNyeXB0QmxvY2sodSl9fWVsc2V7aD1uZXcgQVJDRm91ckNpcGhlcihjLnN1YmFycmF5KDAsbCkpO3U9aC5lbmNyeXB0QmxvY2sodCl9cmV0dXJuIHV9I0JlKGUsdCxhLHI9ITEpe2NvbnN0IGk9YS5sZW5ndGgsbj1uZXcgVWludDhBcnJheShpKzkpO24uc2V0KGEpO2xldCBzPWk7bltzKytdPTI1NSZlO25bcysrXT1lPj44JjI1NTtuW3MrK109ZT4+MTYmMjU1O25bcysrXT0yNTUmdDtuW3MrK109dD4+OCYyNTU7aWYocil7bltzKytdPTExNTtuW3MrK109NjU7bltzKytdPTEwODtuW3MrK109ODR9cmV0dXJuIGNhbGN1bGF0ZU1ENShuLDAscykuc3ViYXJyYXkoMCxNYXRoLm1pbihpKzUsMTYpKX0jUmUoZSx0LGEscixpKXtpZighKHQgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbj10aGlzLHM9ZS5nZXQodC5uYW1lKSxvPXM/LmdldCgiQ0ZNIik7aWYoIW98fCJOb25lIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE51bGxDaXBoZXJ9O2lmKCJWMiI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKG4uI0JlKGEscixpLCExKSl9O2lmKCJBRVNWMiI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBRVMxMjhDaXBoZXIobi4jQmUoYSxyLGksITApKX07aWYoIkFFU1YzIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihpKX07dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1jb25zdHJ1Y3RvcihlLHQsYSl7Y29uc3Qgcj1lLmdldCgiRmlsdGVyIik7aWYoIWlzTmFtZShyLCJTdGFuZGFyZCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpO3RoaXMuZmlsdGVyTmFtZT1yLm5hbWU7dGhpcy5kaWN0PWU7Y29uc3QgaT1lLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpfHwxIT09aSYmMiE9PWkmJjQhPT1pJiY1IT09aSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIik7dGhpcy5hbGdvcml0aG09aTtsZXQgbj1lLmdldCgiTGVuZ3RoIik7aWYoIW4paWYoaTw9MyluPTQwO2Vsc2V7Y29uc3QgdD1lLmdldCgiQ0YiKSxhPWUuZ2V0KCJTdG1GIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJmEgaW5zdGFuY2VvZiBOYW1lKXt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMDtjb25zdCBlPXQuZ2V0KGEubmFtZSk7bj1lPy5nZXQoIkxlbmd0aCIpfHwxMjg7bjw0MCYmKG48PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIobil8fG48NDB8fG4lOCE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IHM9c3RyaW5nVG9CeXRlcyhlLmdldCgiTyIpKSxvPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlUiKSksYz1zLnN1YmFycmF5KDAsMzIpLGw9by5zdWJhcnJheSgwLDMyKSxoPWUuZ2V0KCJQIiksdT1lLmdldCgiUiIpLGQ9KDQ9PT1pfHw1PT09aSkmJiExIT09ZS5nZXQoIkVuY3J5cHRNZXRhZGF0YSIpO3RoaXMuZW5jcnlwdE1ldGFkYXRhPWQ7Y29uc3QgZj1zdHJpbmdUb0J5dGVzKHQpO2xldCBnLHA7aWYoYSl7aWYoNj09PXUpdHJ5e2E9dXRmOFN0cmluZ1RvU3RyaW5nKGEpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1nPXN0cmluZ1RvQnl0ZXMoYSl9aWYoNSE9PWkpcD10aGlzLiNNZShmLGcsYyxsLGgsdSxuLGQpO2Vsc2V7Y29uc3QgdD1zLnN1YmFycmF5KDMyLDQwKSxhPXMuc3ViYXJyYXkoNDAsNDgpLHI9by5zdWJhcnJheSgwLDQ4KSxpPW8uc3ViYXJyYXkoMzIsNDApLG49by5zdWJhcnJheSg0MCw0OCksaD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPRSIpKSxkPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlVFIikpLGY9c3RyaW5nVG9CeXRlcyhlLmdldCgiUGVybXMiKSk7cD10aGlzLiNPZSh1LGcsYyx0LGEscixsLGksbixoLGQsZil9aWYoIXApe2lmKCFhKXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLGhhKTtjb25zdCBlPXRoaXMuI0RlKGcsYyx1LG4pO3A9dGhpcy4jTWUoZixlLGMsbCxoLHUsbixkKX1pZighcCl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsdWEpO2lmKDQ9PT1pJiZwLmxlbmd0aDwxNil7dGhpcy5lbmNyeXB0aW9uS2V5PW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmVuY3J5cHRpb25LZXkuc2V0KHApfWVsc2UgdGhpcy5lbmNyeXB0aW9uS2V5PXA7aWYoaT49NCl7Y29uc3QgdD1lLmdldCgiQ0YiKTt0IGluc3RhbmNlb2YgRGljdCYmKHQuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPXQ7dGhpcy5zdG1mPWUuZ2V0KCJTdG1GIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO3RoaXMuc3RyZj1lLmdldCgiU3RyRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLmVmZj1lLmdldCgiRUZGIil8fHRoaXMuc3RtZn19Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pcmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0odGhpcy4jUmUodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksdGhpcy4jUmUodGhpcy5jZix0aGlzLnN0bWYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSkpO2NvbnN0IGE9dGhpcy4jQmUoZSx0LHRoaXMuZW5jcnlwdGlvbktleSwhMSksY2lwaGVyQ29uc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGNpcGhlckNvbnN0cnVjdG9yLGNpcGhlckNvbnN0cnVjdG9yKX19Y2xhc3MgWFJlZnsjTmU9bnVsbDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyZWFtPWU7dGhpcy5wZGZNYW5hZ2VyPXQ7dGhpcy5lbnRyaWVzPVtdO3RoaXMuX3hyZWZTdG1zPW5ldyBTZXQ7dGhpcy5fY2FjaGVNYXA9bmV3IE1hcDt0aGlzLl9wZW5kaW5nUmVmcz1uZXcgUmVmU2V0O3RoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW09bnVsbDt0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09bnVsbDt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlPW51bGx9Z2V0TmV3UGVyc2lzdGVudFJlZihlKXtudWxsPT09dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSYmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MSk7Y29uc3QgdD10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtKys7dGhpcy5fY2FjaGVNYXAuc2V0KHQsZSk7cmV0dXJuIFJlZi5nZXQodCwwKX1nZXROZXdUZW1wb3JhcnlSZWYoKXtpZihudWxsPT09dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtKXt0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MTtpZih0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtKXt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlPW5ldyBNYXA7Zm9yKGxldCBlPXRoaXMuX25ld1RlbXBvcmFyeVJlZk51bTtlPHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW07ZSsrKXt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlLnNldChlLHRoaXMuX2NhY2hlTWFwLmdldChlKSk7dGhpcy5fY2FjaGVNYXAuZGVsZXRlKGUpfX19cmV0dXJuIFJlZi5nZXQodGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtKyssMCl9cmVzZXROZXdUZW1wb3JhcnlSZWYoKXt0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09bnVsbDtpZih0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKWZvcihjb25zdFtlLHRdb2YgdGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZSl0aGlzLl9jYWNoZU1hcC5zZXQoZSx0KTt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlPW51bGx9c2V0U3RhcnRYUmVmKGUpe3RoaXMuc3RhcnRYUmVmUXVldWU9W2VdfXBhcnNlKGU9ITEpe2xldCB0LGEscjtpZihlKXt3YXJuKCJJbmRleGluZyBhbGwgUERGIG9iamVjdHMiKTt0PXRoaXMuaW5kZXhPYmplY3RzKCl9ZWxzZSB0PXRoaXMucmVhZFhSZWYoKTt0LmFzc2lnblhyZWYodGhpcyk7dGhpcy50cmFpbGVyPXQ7dHJ5e2E9dC5nZXQoIkVuY3J5cHQiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiRW5jcnlwdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lPy5sZW5ndGg/ZVswXToiIjthLnN1cHByZXNzRW5jcnlwdGlvbj0hMDt0aGlzLmVuY3J5cHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkoYSxyLHRoaXMucGRmTWFuYWdlci5wYXNzd29yZCl9dHJ5e3I9dC5nZXQoIlJvb3QiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYociBpbnN0YW5jZW9mIERpY3QpdHJ5e2lmKHIuZ2V0KCJQYWdlcyIpaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnJvb3Q9cjtyZXR1cm59fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbjt0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBSb290IHJlZmVyZW5jZS4iKX1wcm9jZXNzWFJlZlRhYmxlKGUpeyJ0YWJsZVN0YXRlImluIHRoaXN8fCh0aGlzLnRhYmxlU3RhdGU9e2VudHJ5TnVtOjAsc3RyZWFtUG9zOmUubGV4ZXIuc3RyZWFtLnBvcyxwYXJzZXJCdWYxOmUuYnVmMSxwYXJzZXJCdWYyOmUuYnVmMn0pO2lmKCFpc0NtZCh0aGlzLnJlYWRYUmVmVGFibGUoZSksInRyYWlsZXIiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogY291bGQgbm90IGZpbmQgdHJhaWxlciBkaWN0aW9uYXJ5Iik7bGV0IHQ9ZS5nZXRPYmooKTt0IGluc3RhbmNlb2YgRGljdHx8IXQuZGljdHx8KHQ9dC5kaWN0KTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogY291bGQgbm90IHBhcnNlIHRyYWlsZXIgZGljdGlvbmFyeSIpO2RlbGV0ZSB0aGlzLnRhYmxlU3RhdGU7cmV0dXJuIHR9cmVhZFhSZWZUYWJsZShlKXtjb25zdCB0PWUubGV4ZXIuc3RyZWFtLGE9dGhpcy50YWJsZVN0YXRlO3QucG9zPWEuc3RyZWFtUG9zO2UuYnVmMT1hLnBhcnNlckJ1ZjE7ZS5idWYyPWEucGFyc2VyQnVmMjtsZXQgcjtmb3IoOzspe2lmKCEoImZpcnN0RW50cnlOdW0iaW4gYSl8fCEoImVudHJ5Q291bnQiaW4gYSkpe2lmKGlzQ21kKHI9ZS5nZXRPYmooKSwidHJhaWxlciIpKWJyZWFrO2EuZmlyc3RFbnRyeU51bT1yO2EuZW50cnlDb3VudD1lLmdldE9iaigpfWxldCBpPWEuZmlyc3RFbnRyeU51bTtjb25zdCBuPWEuZW50cnlDb3VudDtpZighTnVtYmVyLmlzSW50ZWdlcihpKXx8IU51bWJlci5pc0ludGVnZXIobikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCByPWEuZW50cnlOdW07cjxuO3IrKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1yO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBzPXt9O3Mub2Zmc2V0PWUuZ2V0T2JqKCk7cy5nZW49ZS5nZXRPYmooKTtjb25zdCBvPWUuZ2V0T2JqKCk7aWYobyBpbnN0YW5jZW9mIENtZClzd2l0Y2goby5jbWQpe2Nhc2UiZiI6cy5mcmVlPSEwO2JyZWFrO2Nhc2UibiI6cy51bmNvbXByZXNzZWQ9ITB9aWYoIU51bWJlci5pc0ludGVnZXIocy5vZmZzZXQpfHwhTnVtYmVyLmlzSW50ZWdlcihzLmdlbil8fCFzLmZyZWUmJiFzLnVuY29tcHJlc3NlZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZW50cnkgaW4gWFJlZiBzdWJzZWN0aW9uOiAke2l9LCAke259YCk7MD09PXImJnMuZnJlZSYmMT09PWkmJihpPTApO3RoaXMuZW50cmllc1tyK2ldfHwodGhpcy5lbnRyaWVzW3IraV09cyl9YS5lbnRyeU51bT0wO2Euc3RyZWFtUG9zPXQucG9zO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtkZWxldGUgYS5maXJzdEVudHJ5TnVtO2RlbGV0ZSBhLmVudHJ5Q291bnR9aWYodGhpcy5lbnRyaWVzWzBdJiYhdGhpcy5lbnRyaWVzWzBdLmZyZWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIHJ9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0e2RpY3Q6dCxwb3M6YX09ZSxyPXQuZ2V0KCJXIiksaT10LmdldCgiSW5kZXgiKXx8WzAsdC5nZXQoIlNpemUiKV07dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6aSxieXRlV2lkdGhzOnIsZW50cnlOdW06MCxzdHJlYW1Qb3M6YX19dGhpcy5yZWFkWFJlZlN0cmVhbShlKTtkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZTtyZXR1cm4gZS5kaWN0fXJlYWRYUmVmU3RyZWFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztjb25zdFthLHIsaV09dC5ieXRlV2lkdGhzLG49dC5lbnRyeVJhbmdlcztmb3IoO24ubGVuZ3RoPjA7KXtjb25zdFtzLG9dPW47aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtzfSwgJHtvfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtzfSwgJHtvfWApO2ZvcihsZXQgbj10LmVudHJ5TnVtO248bzsrK24pe3QuZW50cnlOdW09bjt0LnN0cmVhbVBvcz1lLnBvcztsZXQgbz0wLGM9MCxsPTA7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAndHlwZScuIik7bz1vPDw4fHR9MD09PWEmJihvPTEpO2ZvcihsZXQgdD0wO3Q8cjsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7Yz1jPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7bD1sPDw4fHR9Y29uc3QgaD17fTtoLm9mZnNldD1jO2guZ2VuPWw7c3dpdGNoKG8pe2Nhc2UgMDpoLmZyZWU9ITA7YnJlYWs7Y2FzZSAxOmgudW5jb21wcmVzc2VkPSEwO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIGVudHJ5IHR5cGU6ICR7b31gKX10aGlzLmVudHJpZXNbcytuXXx8KHRoaXMuZW50cmllc1tzK25dPWgpfXQuZW50cnlOdW09MDt0LnN0cmVhbVBvcz1lLnBvcztuLnNwbGljZSgwLDIpfX1pbmRleE9iamVjdHMoKXtmdW5jdGlvbiByZWFkVG9rZW4oZSx0KXtsZXQgYT0iIixyPWVbdF07Zm9yKDsxMCE9PXImJjEzIT09ciYmNjAhPT1yJiYhKCsrdD49ZS5sZW5ndGgpOyl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZShyKTtyPWVbdF19cmV0dXJuIGF9ZnVuY3Rpb24gc2tpcFVudGlsKGUsdCxhKXtjb25zdCByPWEubGVuZ3RoLGk9ZS5sZW5ndGg7bGV0IG49MDtmb3IoO3Q8aTspe2xldCBpPTA7Zm9yKDtpPHImJmVbdCtpXT09PWFbaV07KSsraTtpZihpPj1yKWJyZWFrO3QrKztuKyt9cmV0dXJuIG59Y29uc3QgZT0vXGIoZW5kb2JqfFxkK1xzK1xkK1xzK29ianx4cmVmfHRyYWlsZXJccyo8PClcYi9nLHQ9L1xiKHN0YXJ0eHJlZnxcZCtccytcZCtccytvYmopXGIvZyxhPS9eKFxkKylccysoXGQrKVxzK29ialxiLyxyPW5ldyBVaW50OEFycmF5KFsxMTYsMTE0LDk3LDEwNSwxMDgsMTAxLDExNF0pLGk9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxuPW5ldyBVaW50OEFycmF5KFs0Nyw4OCw4MiwxMDEsMTAyXSk7dGhpcy5lbnRyaWVzLmxlbmd0aD0wO3RoaXMuX2NhY2hlTWFwLmNsZWFyKCk7Y29uc3Qgcz10aGlzLnN0cmVhbTtzLnBvcz0wO2NvbnN0IG89cy5nZXRCeXRlcygpLGM9Ynl0ZXNUb1N0cmluZyhvKSxsPW8ubGVuZ3RoO2xldCBoPXMuc3RhcnQ7Y29uc3QgdT1bXSxkPVtdO2Zvcig7aDxsOyl7bGV0IGY9b1toXTtpZig5PT09Znx8MTA9PT1mfHwxMz09PWZ8fDMyPT09Zil7KytoO2NvbnRpbnVlfWlmKDM3PT09Zil7ZG97KytoO2lmKGg+PWwpYnJlYWs7Zj1vW2hdfXdoaWxlKDEwIT09ZiYmMTMhPT1mKTtjb250aW51ZX1jb25zdCBnPXJlYWRUb2tlbihvLGgpO2xldCBwO2lmKGcuc3RhcnRzV2l0aCgieHJlZiIpJiYoND09PWcubGVuZ3RofHwvXHMvLnRlc3QoZ1s0XSkpKXtoKz1za2lwVW50aWwobyxoLHIpO3UucHVzaChoKTtoKz1za2lwVW50aWwobyxoLGkpfWVsc2UgaWYocD1hLmV4ZWMoZykpe2NvbnN0IHQ9MHxwWzFdLGE9MHxwWzJdLHI9aCtnLmxlbmd0aDtsZXQgaSx1PSExO2lmKHRoaXMuZW50cmllc1t0XSl7aWYodGhpcy5lbnRyaWVzW3RdLmdlbj09PWEpdHJ5e25ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihzLm1ha2VTdWJTdHJlYW0ocikpfSkuZ2V0T2JqKCk7dT0hMH1jYXRjaChlKXtlIGluc3RhbmNlb2YgUGFyc2VyRU9GRXhjZXB0aW9uP3dhcm4oYGluZGV4T2JqZWN0cyAtLSBjaGVja2luZyBvYmplY3QgKCR7Z30pOiAiJHtlfSIuYCk6dT0hMH19ZWxzZSB1PSEwO3UmJih0aGlzLmVudHJpZXNbdF09e29mZnNldDpoLXMuc3RhcnQsZ2VuOmEsdW5jb21wcmVzc2VkOiEwfSk7ZS5sYXN0SW5kZXg9cjtjb25zdCBmPWUuZXhlYyhjKTtpZihmKXtpPWUubGFzdEluZGV4KzEtaDtpZigiZW5kb2JqIiE9PWZbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7ZlsxXX0iIGluc2lkZSBvZiBhbm90aGVyICJvYmoiLCBjYXVzZWQgYnkgbWlzc2luZyAiZW5kb2JqIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1mWzFdLmxlbmd0aCsxfX1lbHNlIGk9bC1oO2NvbnN0IG09by5zdWJhcnJheShoLGgraSksYj1za2lwVW50aWwobSwwLG4pO2lmKGI8aSYmbVtiKzVdPDY0KXtkLnB1c2goaC1zLnN0YXJ0KTt0aGlzLl94cmVmU3Rtcy5hZGQoaC1zLnN0YXJ0KX1oKz1pfWVsc2UgaWYoZy5zdGFydHNXaXRoKCJ0cmFpbGVyIikmJig3PT09Zy5sZW5ndGh8fC9ccy8udGVzdChnWzddKSkpe3UucHVzaChoKTtjb25zdCBlPWgrZy5sZW5ndGg7bGV0IGE7dC5sYXN0SW5kZXg9ZTtjb25zdCByPXQuZXhlYyhjKTtpZihyKXthPXQubGFzdEluZGV4KzEtaDtpZigic3RhcnR4cmVmIiE9PXJbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7clsxXX0iIGFmdGVyICJ0cmFpbGVyIiwgY2F1c2VkIGJ5IG1pc3NpbmcgInN0YXJ0eHJlZiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7YS09clsxXS5sZW5ndGgrMX19ZWxzZSBhPWwtaDtoKz1hfWVsc2UgaCs9Zy5sZW5ndGgrMX1mb3IoY29uc3QgZSBvZiBkKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSk7dGhpcy5yZWFkWFJlZighMCl9Y29uc3QgZj1bXTtsZXQgZyxwLG09ITE7Zm9yKGNvbnN0IGUgb2YgdSl7cy5wb3M9ZTtjb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihzKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwLHJlY292ZXJ5TW9kZTohMH0pO2lmKCFpc0NtZCh0LmdldE9iaigpLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3QgYT10LmdldE9iaigpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KXtmLnB1c2goYSk7YS5oYXMoIkVuY3J5cHQiKSYmKG09ITApfX1mb3IoY29uc3QgZSBvZlsuLi5mLCJnZW5GYWxsYmFjayIsLi4uZl0pe2lmKCJnZW5GYWxsYmFjayI9PT1lKXtpZighcClicmVhazt0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2s9ITA7Y29udGludWV9bGV0IHQ9ITE7dHJ5e2NvbnN0IGE9ZS5nZXQoIlJvb3QiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCByPWEuZ2V0KCJQYWdlcyIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGk9ci5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihpKSYmKHQ9ITApfWNhdGNoKGUpe3A9ZTtjb250aW51ZX1pZih0JiYoIW18fGUuaGFzKCJFbmNyeXB0IikpJiZlLmhhcygiSUQiKSlyZXR1cm4gZTtnPWV9aWYoZylyZXR1cm4gZztpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZi5sZW5ndGgpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLmVudHJpZXMuZW50cmllcygpKXtpZighdCljb250aW51ZTtjb25zdCBhPVJlZi5nZXQoZSx0Lmdlbik7bGV0IHI7dHJ5e3I9dGhpcy5mZXRjaChhKX1jYXRjaHtjb250aW51ZX1yIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHI9ci5kaWN0KTtpZihyIGluc3RhbmNlb2YgRGljdCYmci5oYXMoIlJvb3QiKSlyZXR1cm4gcn10aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXt3YXJuKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3Qgcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIodCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2xldCBpLG49ci5nZXRPYmooKTtpZihpc0NtZChuLCJ4cmVmIikpe2k9dGhpcy5wcm9jZXNzWFJlZlRhYmxlKHIpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1pKTtuPWkuZ2V0KCJYUmVmU3RtIik7aWYoTnVtYmVyLmlzSW50ZWdlcihuKSYmIXRoaXMuX3hyZWZTdG1zLmhhcyhuKSl7dGhpcy5feHJlZlN0bXMuYWRkKG4pO3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChuKTt0aGlzLiNOZT8/PW59fWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIobikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihyLmdldE9iaigpKSYmaXNDbWQoci5nZXRPYmooKSwib2JqIikmJihuPXIuZ2V0T2JqKCkpaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0iKTtpPXRoaXMucHJvY2Vzc1hSZWZTdHJlYW0obik7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PWkpO2lmKCFpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1uPWkuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihuKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobik6biBpbnN0YW5jZW9mIFJlZiYmdGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKG4ubnVtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCIod2hpbGUgcmVhZGluZyBYUmVmKTogIitlKX10aGlzLnN0YXJ0WFJlZlF1ZXVlLnNoaWZ0KCl9aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7aWYoIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn1nZXQgbGFzdFhSZWZTdHJlYW1Qb3MoKXtyZXR1cm4gdGhpcy4jTmU/Pyh0aGlzLl94cmVmU3Rtcy5zaXplPjA/TWF0aC5tYXgoLi4udGhpcy5feHJlZlN0bXMpOm51bGwpfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgYT1lLm51bSxyPXRoaXMuX2NhY2hlTWFwLmdldChhKTtpZih2b2lkIDAhPT1yKXtyIGluc3RhbmNlb2YgRGljdCYmIXIub2JqSWQmJihyLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHJ9bGV0IGk9dGhpcy5nZXRFbnRyeShhKTtpZihudWxsPT09aSlyZXR1cm4gaTtpZih0aGlzLl9wZW5kaW5nUmVmcy5oYXMoZSkpe3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKTt3YXJuKGBJZ25vcmluZyBjaXJjdWxhciByZWZlcmVuY2U6ICR7ZX0uYCk7cmV0dXJuIHlhfXRoaXMuX3BlbmRpbmdSZWZzLnB1dChlKTt0cnl7aT1pLnVuY29tcHJlc3NlZD90aGlzLmZldGNoVW5jb21wcmVzc2VkKGUsaSx0KTp0aGlzLmZldGNoQ29tcHJlc3NlZChlLGksdCk7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpfWNhdGNoKHQpe3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKTt0aHJvdyB0fWkgaW5zdGFuY2VvZiBEaWN0P2kub2JqSWQ9ZS50b1N0cmluZygpOmkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoaS5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIGl9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IHI9ZS5nZW47bGV0IGk9ZS5udW07aWYodC5nZW4hPT1yKXtjb25zdCBuPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPHIpe3dhcm4obik7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQoUmVmLmdldChpLHQuZ2VuKSx0LGEpfXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24obil9Y29uc3Qgbj10aGlzLnN0cmVhbS5tYWtlU3ViU3RyZWFtKHQub2Zmc2V0K3RoaXMuc3RyZWFtLnN0YXJ0KSxzPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihuKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSksbz1zLmdldE9iaigpLGM9cy5nZXRPYmooKSxsPXMuZ2V0T2JqKCk7aWYobyE9PWl8fGMhPT1yfHwhKGwgaW5zdGFuY2VvZiBDbWQpKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1sLmNtZCl7aWYobC5jbWQuc3RhcnRzV2l0aCgib2JqIikpe2k9cGFyc2VJbnQobC5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKGkpKXJldHVybiBpfXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCl9KHQ9dGhpcy5lbmNyeXB0JiYhYT9zLmdldE9iaih0aGlzLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkscikpOnMuZ2V0T2JqKCkpaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHx0aGlzLl9jYWNoZU1hcC5zZXQoaSx0KTtyZXR1cm4gdH1mZXRjaENvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IHI9dC5vZmZzZXQsaT10aGlzLmZldGNoKFJlZi5nZXQociwwKSk7aWYoIShpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJiYWQgT2JqU3RtIHN0cmVhbSIpO2NvbnN0IG49aS5kaWN0LmdldCgiRmlyc3QiKSxzPWkuZGljdC5nZXQoIk4iKTtpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIocykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0iKTtsZXQgbz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoaSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IGM9bmV3IEFycmF5KHMpLGw9bmV3IEFycmF5KHMpO2ZvcihsZXQgZT0wO2U8czsrK2Upe2NvbnN0IHQ9by5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG51bWJlciBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHt0fWApO2NvbnN0IGE9by5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHthfWApO2NbZV09dDtsW2VdPWF9Y29uc3QgaD0oaS5zdGFydHx8MCkrbix1PW5ldyBBcnJheShzKTtmb3IobGV0IGU9MDtlPHM7KytlKXtjb25zdCB0PWU8cy0xP2xbZSsxXS1sW2VdOnZvaWQgMDtpZih0PDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbS4iKTtvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihpLm1ha2VTdWJTdHJlYW0oaCtsW2VdLHQsaS5kaWN0KSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IGE9by5nZXRPYmooKTt1W2VdPWE7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pY29udGludWU7Y29uc3Qgbj1jW2VdLGQ9dGhpcy5lbnRyaWVzW25dO2QmJmQub2Zmc2V0PT09ciYmZC5nZW49PT1lJiZ0aGlzLl9jYWNoZU1hcC5zZXQobixhKX1pZih2b2lkIDA9PT0odD11W3QuZ2VuXSkpdGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkIChjb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7cmV0dXJuIHR9YXN5bmMgZmV0Y2hJZlJlZkFzeW5jKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaEFzeW5jKGUsdCk6ZX1hc3luYyBmZXRjaEFzeW5jKGUsdCl7dHJ5e3JldHVybiB0aGlzLmZldGNoKGUsdCl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXRocm93IGE7YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5mZXRjaEFzeW5jKGUsdCl9fWdldENhdGFsb2dPYmooKXtyZXR1cm4gdGhpcy5yb290fX1jb25zdCB5Yz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7I0VlPW51bGw7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6aSxnbG9iYWxJZEZhY3Rvcnk6bixmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsZ2xvYmFsSW1hZ2VDYWNoZTpoLHN5c3RlbUZvbnRDYWNoZTp1LG5vbkJsZW5kTW9kZXNTZXQ6ZCx4ZmFGYWN0b3J5OmZ9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1pO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZT1sO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1oO3RoaXMuc3lzdGVtRm9udENhY2hlPXU7dGhpcy5ub25CbGVuZE1vZGVzU2V0PWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPWUuZXZhbHVhdG9yT3B0aW9uczt0aGlzLnhmYUZhY3Rvcnk9Zjtjb25zdCBnPXtvYmo6MH07dGhpcy5fbG9jYWxJZEZhY3Rvcnk9Y2xhc3MgZXh0ZW5kcyBue3N0YXRpYyBjcmVhdGVPYmpJZCgpe3JldHVybmBwJHthfV8keysrZy5vYmp9YH1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7cmV0dXJuYHAke2kudG9TdHJpbmcoKX1gfX19I1BlKGUpe3JldHVybiBuZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSl9I0xlKGUsdD0hMSl7Y29uc3QgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnRoaXMucGFnZURpY3Qsa2V5OmUsZ2V0QXJyYXk6dCxzdG9wV2hlbkZvdW5kOiExfSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/MSE9PWEubGVuZ3RoJiZhWzBdaW5zdGFuY2VvZiBEaWN0P0RpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTphfSk6YVswXTphfWdldCBjb250ZW50KCl7cmV0dXJuIHRoaXMucGFnZURpY3QuZ2V0QXJyYXkoIkNvbnRlbnRzIil9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9dGhpcy4jTGUoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfSNqZShlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLiNMZShlLCEwKSxudWxsKTtpZih0KXtpZih0WzJdLXRbMF0+MCYmdFszXS10WzFdPjApcmV0dXJuIHQ7d2FybihgRW1wdHksIG9yIGludmFsaWQsIC8ke2V9IGVudHJ5LmApfXJldHVybiBudWxsfWdldCBtZWRpYUJveCgpe3JldHVybiBzaGFkb3codGhpcywibWVkaWFCb3giLHRoaXMuI2plKCJNZWRpYUJveCIpfHx5Yyl9Z2V0IGNyb3BCb3goKXtyZXR1cm4gc2hhZG93KHRoaXMsImNyb3BCb3giLHRoaXMuI2plKCJDcm9wQm94Iil8fHRoaXMubWVkaWFCb3gpfWdldCB1c2VyVW5pdCgpe2NvbnN0IGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VyVW5pdCIsIm51bWJlciI9PXR5cGVvZiBlJiZlPjA/ZToxKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhaXNBcnJheUVxdWFsKGUsdCkpe2NvbnN0IGE9VXRpbC5pbnRlcnNlY3QoZSx0KTtpZihhJiZhWzJdLWFbMF0+MCYmYVszXS1hWzFdPjApcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3IixhKTt3YXJuKCJFbXB0eSAvQ3JvcEJveCBhbmQgL01lZGlhQm94IGludGVyc2VjdGlvbi4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLiNMZSgiUm90YXRlIil8fDA7ZSU5MCE9MD9lPTA6ZT49MzYwP2UlPTM2MDplPDAmJihlPShlJTM2MCszNjApJTM2MCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJyb3RhdGUiLGUpfSNfZShlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9YXN5bmMgZ2V0Q29udGVudFN0cmVhbSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50Iik7cmV0dXJuIGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2U6QXJyYXkuaXNBcnJheShlKT9uZXcgU3RyZWFtc1NlcXVlbmNlU3RyZWFtKGUsdGhpcy4jX2UuYmluZCh0aGlzKSk6bmV3IE51bGxTdHJlYW19Z2V0IHhmYURhdGEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX1hc3luYyNVZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiBlKWlmKGkuaWQpe2NvbnN0IGU9UmVmLmZyb21TdHJpbmcoaS5pZCk7aWYoIWUpe3dhcm4oYEEgbm9uLWxpbmtlZCBhbm5vdGF0aW9uIGNhbm5vdCBiZSBtb2RpZmllZDogJHtpLmlkfWApO2NvbnRpbnVlfWlmKGkuZGVsZXRlZCl7dC5wdXQoZSxlKTtpZihpLnBvcHVwUmVmKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKGkucG9wdXBSZWYpO2UmJnQucHV0KGUsZSl9Y29udGludWV9YT8ucHV0KGUpO2kucmVmPWU7ci5wdXNoKHRoaXMueHJlZi5mZXRjaEFzeW5jKGUpLnRoZW4oKGU9PntlIGluc3RhbmNlb2YgRGljdCYmKGkub2xkQW5ub3RhdGlvbj1lLmNsb25lKCkpfSksKCgpPT57d2FybihgQ2Fubm90IGZldGNoIFxgb2xkQW5ub3RhdGlvblxgIGZvcjogJHtlfS5gKX0pKSk7ZGVsZXRlIGkuaWR9YXdhaXQgUHJvbWlzZS5hbGwocil9YXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxhLHIsaSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgbj10aGlzLiNQZShlKSxzPW5ldyBSZWZTZXRDYWNoZSxvPW5ldyBSZWZTZXQ7YXdhaXQgdGhpcy4jVWUoYSxzLG8pO2NvbnN0IGM9dGhpcy5wYWdlRGljdCxsPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKChlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJnMuaGFzKGUpKSkpLGg9YXdhaXQgQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKG4sdCxhLHIsaSk7Zm9yKGNvbnN0e3JlZjplfW9mIGguYW5ub3RhdGlvbnMpZSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGUpJiZsLnB1c2goZSk7Y29uc3QgdT1jLmNsb25lKCk7dS5zZXQoIkFubm90cyIsbCk7aS5wdXQodGhpcy5yZWYse2RhdGE6dX0pO2Zvcihjb25zdCBlIG9mIHMpaS5wdXQoZSx7ZGF0YTpudWxsfSl9YXN5bmMgc2F2ZShlLHQsYSxyKXtjb25zdCBpPXRoaXMuI1BlKGUpLG49YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMscz1bXTtmb3IoY29uc3QgZSBvZiBuKXMucHVzaChlLnNhdmUoaSx0LGEscikuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKHMpfWFzeW5jIGxvYWRSZXNvdXJjZXMoZSl7YXdhaXQodGhpcy4jRWU/Pz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpKTthd2FpdCBPYmplY3RMb2FkZXIubG9hZCh0aGlzLnJlc291cmNlcyxlLHRoaXMueHJlZil9YXN5bmMjWGUoZSx0KXtjb25zdCBhPWU/LmdldCgiUmVzb3VyY2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCYmYS5zaXplKSlyZXR1cm4gdGhpcy5yZXNvdXJjZXM7YXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQoYSx0LHRoaXMueHJlZik7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbYSx0aGlzLnJlc291cmNlc10sbWVyZ2VTdWJEaWN0czohMH0pfWFzeW5jIGdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmEsaW50ZW50OnIsY2FjaGVLZXk6aSxhbm5vdGF0aW9uU3RvcmFnZTpjPW51bGwsbW9kaWZpZWRJZHM6ZD1udWxsfSl7Y29uc3QgZz10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxwPXRoaXMubG9hZFJlc291cmNlcyhJYSksbT10aGlzLiNQZShlKSxiPXRoaXMueGZhRmFjdG9yeT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKGMpLHk9Yj8uZ2V0KHRoaXMucGFnZUluZGV4KTtsZXQgdz1Qcm9taXNlLnJlc29sdmUobnVsbCkseD1udWxsO2lmKHkpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtsZXQgdDtjb25zdCByPW5ldyBTZXQ7Zm9yKGNvbnN0e2JpdG1hcElkOmUsYml0bWFwOnR9b2YgeSkhZXx8dHx8ci5oYXMoZSl8fHIuYWRkKGUpO2NvbnN0e2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOml9PXRoaXMuZXZhbHVhdG9yT3B0aW9ucztpZihyLnNpemU+MCl7Y29uc3QgZT15LnNsaWNlKCk7Zm9yKGNvbnN0W3QsYV1vZiBjKXQuc3RhcnRzV2l0aChmKSYmYS5iaXRtYXAmJnIuaGFzKGEuYml0bWFwSWQpJiZlLnB1c2goYSk7dD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhlLHRoaXMueHJlZixpKX1lbHNlIHQ9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoeSx0aGlzLnhyZWYsaSk7eD1uZXcgUmVmU2V0O3c9UHJvbWlzZS5hbGwoW2UsdGhpcy4jVWUoeSx4LG51bGwpXSkudGhlbigoKFtlXSk9PmU/QW5ub3RhdGlvbkZhY3RvcnkucHJpbnROZXdBbm5vdGF0aW9ucyhlLG0sYSx5LHQpOm51bGwpKX1jb25zdCBTPVByb21pc2UuYWxsKFtnLHBdKS50aGVuKChhc3luYyhbbl0pPT57Y29uc3Qgcz1hd2FpdCB0aGlzLiNYZShuLmRpY3QsSWEpLG89bmV3IE9wZXJhdG9yTGlzdChyLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5Om0uaGFzQmxlbmRNb2RlcyhzLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGNhY2hlS2V5Oml9KTthd2FpdCBtLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazphLHJlc291cmNlczpzLG9wZXJhdG9yTGlzdDpvfSk7cmV0dXJuIG99KSk7bGV0W2ssQyx2XT1hd2FpdCBQcm9taXNlLmFsbChbUyx0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyx3XSk7aWYodil7Qz1DLmZpbHRlcigoZT0+IShlLnJlZiYmeC5oYXMoZS5yZWYpKSkpO2ZvcihsZXQgZT0wLHQ9di5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgYT12W2VdO2lmKGEucmVmVG9SZXBsYWNlKXtjb25zdCByPUMuZmluZEluZGV4KChlPT5lLnJlZiYmaXNSZWZzRXF1YWwoZS5yZWYsYS5yZWZUb1JlcGxhY2UpKSk7aWYocj49MCl7Qy5zcGxpY2UociwxLGEpO3Yuc3BsaWNlKGUtLSwxKTt0LS19fX1DPUMuY29uY2F0KHYpfWlmKDA9PT1DLmxlbmd0aHx8ciZoKXtrLmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOmsudG90YWxMZW5ndGh9fWNvbnN0IEY9ISEociZsKSxUPSEhKHImdSksTz0hIShyJm4pLE09ISEociZzKSxEPSEhKHImbyksUj1bXTtmb3IoY29uc3QgZSBvZiBDKShPfHxNJiZlLm11c3RCZVZpZXdlZChjLEYpJiZlLm11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKFQsZCl8fEQmJmUubXVzdEJlUHJpbnRlZChjKSkmJlIucHVzaChlLmdldE9wZXJhdG9yTGlzdChtLGEscixjKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHthLm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJue29wTGlzdDpudWxsLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19KSkpO2NvbnN0IE49YXdhaXQgUHJvbWlzZS5hbGwoUik7bGV0IEU9ITEsTD0hMTtmb3IoY29uc3R7b3BMaXN0OmUsc2VwYXJhdGVGb3JtOnQsc2VwYXJhdGVDYW52YXM6YX1vZiBOKXtrLmFkZE9wTGlzdChlKTtFfHw9dDtMfHw9YX1rLmZsdXNoKCEwLHtmb3JtOkUsY2FudmFzOkx9KTtyZXR1cm57bGVuZ3RoOmsudG90YWxMZW5ndGh9fWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDphLGRpc2FibGVOb3JtYWxpemF0aW9uOnIsc2luazppLGludGVyc2VjdG9yOm49bnVsbH0pe2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbz10aGlzLmxvYWRSZXNvdXJjZXMoVGEpLGM9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImxhbmciKSxbbCwsaF09YXdhaXQgUHJvbWlzZS5hbGwoW3MsbyxjXSksdT1hd2FpdCB0aGlzLiNYZShsLmRpY3QsVGEpO3JldHVybiB0aGlzLiNQZShlKS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmwsdGFzazp0LHJlc291cmNlczp1LGluY2x1ZGVNYXJrZWRDb250ZW50OmEsZGlzYWJsZU5vcm1hbGl6YXRpb246cixzaW5rOmksdmlld0JveDp0aGlzLnZpZXcsbGFuZzpoLGludGVyc2VjdG9yOm59KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9uczt0cnl7Y29uc3QgdD1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsIl9wYXJzZVN0cnVjdFRyZWUiLFtlXSk7cmV0dXJuIGF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodCwic2VyaWFsaXphYmxlIil9Y2F0Y2goZSl7d2FybihgZ2V0U3RydWN0VHJlZTogIiR7ZX0iLmApO3JldHVybiBudWxsfX1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IFN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSh0aGlzLnJlZik7cmV0dXJuIHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxhKXtjb25zdCByPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gcjtjb25zdCBpPVtdLGM9W107bGV0IGw7Y29uc3QgaD0hIShhJm4pLHU9ISEoYSZzKSxkPSEhKGEmbyksZj1bXTtmb3IoY29uc3QgYSBvZiByKXtjb25zdCByPWh8fHUmJmEudmlld2FibGU7KHJ8fGQmJmEucHJpbnRhYmxlKSYmaS5wdXNoKGEuZGF0YSk7aWYoYS5oYXNUZXh0Q29udGVudCYmcil7bD8/PXRoaXMuI1BlKGUpO2MucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChsLHQsWy0xLzAsLTEvMCwxLzAsMS8wXSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYGdldEFubm90YXRpb25zRGF0YSAtIGlnbm9yaW5nIHRleHRDb250ZW50IGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCl9KSkpfWVsc2UgYS5vdmVybGF5c1RleHRDb250ZW50JiZyJiZmLnB1c2goYSl9aWYoZi5sZW5ndGg+MCl7Y29uc3QgYT1uZXcgSW50ZXJzZWN0b3IoZik7Yy5wdXNoKHRoaXMuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOmUsdGFzazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OiExLGRpc2FibGVOb3JtYWxpemF0aW9uOiExLHNpbms6bnVsbCx2aWV3Qm94OnRoaXMudmlldyxsYW5nOm51bGwsaW50ZXJzZWN0b3I6YX0pLnRoZW4oKCgpPT57YS5zZXRUZXh0KCl9KSkpfWF3YWl0IFByb21pc2UuYWxsKGMpO3JldHVybiBpfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy4jTGUoIkFubm90cyIpO3JldHVybiBzaGFkb3codGhpcywiYW5ub3RhdGlvbnMiLEFycmF5LmlzQXJyYXkoZSk/ZTpbXSl9Z2V0IF9wYXJzZWRBbm5vdGF0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywiX3BhcnNlZEFubm90YXRpb25zIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImFubm90YXRpb25zIikudGhlbigoYXN5bmMgZT0+e2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZTtjb25zdFt0LGFdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7aWYoIXQpcmV0dXJuW107Y29uc3Qgcj1hPy5vcnBoYW5GaWVsZHMsaT1bXTtmb3IoY29uc3QgYSBvZiBlKWkucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLGEsdCx0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSxyLHRoaXMucmVmKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2NvbnN0IG49W107bGV0IHMsbztmb3IoY29uc3QgZSBvZiBhd2FpdCBQcm9taXNlLmFsbChpKSllJiYoZSBpbnN0YW5jZW9mIFdpZGdldEFubm90YXRpb24/KG98fD1bXSkucHVzaChlKTplIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uPyhzfHw9W10pLnB1c2goZSk6bi5wdXNoKGUpKTtvJiZuLnB1c2goLi4ubyk7cyYmbi5wdXNoKC4uLnMpO3JldHVybiBufSkpKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LHhlKSl9fWNvbnN0IHdjPW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLHhjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksU2M9bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxhPTEwMjQscj0hMSl7Y29uc3QgaT10Lmxlbmd0aCxuPWUucGVla0J5dGVzKGEpLHM9bi5sZW5ndGgtaTtpZihzPD0wKXJldHVybiExO2lmKHIpe2NvbnN0IGE9aS0xO2xldCByPW4ubGVuZ3RoLTE7Zm9yKDtyPj1hOyl7bGV0IHM9MDtmb3IoO3M8aSYmbltyLXNdPT09dFthLXNdOylzKys7aWYocz49aSl7ZS5wb3MrPXItYTtyZXR1cm4hMH1yLS19fWVsc2V7bGV0IGE9MDtmb3IoO2E8PXM7KXtsZXQgcj0wO2Zvcig7cjxpJiZuW2Ercl09PT10W3JdOylyKys7aWYocj49aSl7ZS5wb3MrPWE7cmV0dXJuITB9YSsrfX1yZXR1cm4hMX1jbGFzcyBQREZEb2N1bWVudHsjcWU9bmV3IE1hcDsjSGU9bnVsbDtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnN0cmVhbT10O3RoaXMueHJlZj1uZXcgWFJlZih0LGUpO2NvbnN0IGE9e2ZvbnQ6MH07dGhpcy5fZ2xvYmFsSWRGYWN0b3J5PWNsYXNze3N0YXRpYyBnZXREb2NJZCgpe3JldHVybmBnXyR7ZS5kb2NJZH1gfXN0YXRpYyBjcmVhdGVGb250SWQoKXtyZXR1cm4iZiIrICsrYS5mb250fXN0YXRpYyBjcmVhdGVPYmpJZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGNyZWF0ZU9iaklkYCBjYWxsZWQuIil9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldFBhZ2VPYmpJZGAgY2FsbGVkLiIpfX19cGFyc2UoZSl7dGhpcy54cmVmLnBhcnNlKGUpO3RoaXMuY2F0YWxvZz1uZXcgQ2F0YWxvZyh0aGlzLnBkZk1hbmFnZXIsdGhpcy54cmVmKX1nZXQgbGluZWFyaXphdGlvbigpe2xldCBlPW51bGw7dHJ5e2U9TGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oZSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJsaW5lYXJpemF0aW9uIixlKX1nZXQgc3RhcnRYUmVmKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtsZXQgdD0wO2lmKHRoaXMubGluZWFyaXphdGlvbil7ZS5yZXNldCgpO2lmKGZpbmQoZSxTYykpe2Uuc2tpcCg2KTtsZXQgYT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoYSk7KXtlLnBvcysrO2E9ZS5wZWVrQnl0ZSgpfXQ9ZS5wb3MtZS5zdGFydH19ZWxzZXtjb25zdCBhPTEwMjQscj14Yy5sZW5ndGg7bGV0IGk9ITEsbj1lLmVuZDtmb3IoOyFpJiZuPjA7KXtuLT1hLXI7bjwwJiYobj0wKTtlLnBvcz1uO2k9ZmluZChlLHhjLGEsITApfWlmKGkpe2Uuc2tpcCg5KTtsZXQgYTtkb3thPWUuZ2V0Qnl0ZSgpfXdoaWxlKGlzV2hpdGVTcGFjZShhKSk7bGV0IHI9IiI7Zm9yKDthPj0zMiYmYTw9NTc7KXtyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZS5nZXRCeXRlKCl9dD1wYXJzZUludChyLDEwKTtpc05hTih0KSYmKHQ9MCl9fXJldHVybiBzaGFkb3codGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsd2MpKXJldHVybjtlLm1vdmVTdGFydCgpO2Uuc2tpcCh3Yy5sZW5ndGgpO2xldCB0LGE9IiI7Zm9yKDsodD1lLmdldEJ5dGUoKSk+MzImJmEubGVuZ3RoPDc7KWErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7Q2EudGVzdChhKT90aGlzLiNIZT1hOndhcm4oYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuIHNoYWRvdyh0aGlzLCJudW1QYWdlcyIsZSl9I1dlKGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoKGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXt3YXJuKCIjaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLiNXZShlLmdldCgiS2lkcyIpLHQpfWNvbnN0IGE9aXNOYW1lKGUuZ2V0KCJGVCIpLCJTaWciKSxyPWUuZ2V0KCJSZWN0IiksaT1BcnJheS5pc0FycmF5KHIpJiZyLmV2ZXJ5KChlPT4wPT09ZSkpO3JldHVybiBhJiZpfSkpfSN6ZShlLHQsYT1uZXcgUmVmU2V0KXtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgciBvZiBlKXtpZihyIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhyKSljb250aW51ZTthLnB1dChyKX1yPXRoaXMueHJlZi5mZXRjaElmUmVmKHIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKHIuaGFzKCJLaWRzIikpe3RoaXMuI3plKHIuZ2V0KCJLaWRzIiksdCxhKTtjb250aW51ZX1pZighaXNOYW1lKHIuZ2V0KCJGVCIpLCJTaWciKSljb250aW51ZTtjb25zdCBlPXIuZ2V0KCJWIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgaT1lLmdldCgiU3ViRmlsdGVyIik7aSBpbnN0YW5jZW9mIE5hbWUmJnQuYWRkKGkubmFtZSl9fWdldCBfeGZhU3RyZWFtcygpe2NvbnN0e2Fjcm9Gb3JtOmV9PXRoaXMuY2F0YWxvZztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJYRkEiKSxhPW5ldyBNYXAoWyJ4ZHA6eGRwIiwidGVtcGxhdGUiLCJkYXRhc2V0cyIsImNvbmZpZyIsImNvbm5lY3Rpb25TZXQiLCJsb2NhbGVTZXQiLCJzdHlsZXNoZWV0IiwiL3hkcDp4ZHAiXS5tYXAoKGU9PltlLG51bGxdKSkpO2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXthLnNldCgieGRwOnhkcCIsdCk7cmV0dXJuIGF9aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKz0yKXtsZXQgaTtpPTA9PT1lPyJ4ZHA6eGRwIjplPT09ci0yPyIveGRwOnhkcCI6dFtlXTtpZighYS5oYXMoaSkpY29udGludWU7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO24gaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhbi5pc0VtcHR5JiZhLnNldChpLG4pfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKTtmb3IoY29uc3QgdCBvZlsiZGF0YXNldHMiLCJ4ZHA6eGRwIl0pe2NvbnN0IGE9ZS5nZXQodCk7aWYoYSl0cnl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IERhdGFzZXRSZWFkZXIoe1t0XTplfSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2Escl1vZiBlKWlmKHIpdHJ5e3RbYV09c3RyaW5nVG9VVEY4U3RyaW5nKHIuZ2V0U3RyaW5nKCkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO3JldHVybiBudWxsfXJldHVybiB0fWdldCB4ZmFGYWN0b3J5KCl7bGV0IGU7dGhpcy5wZGZNYW5hZ2VyLmVuYWJsZVhmYSYmdGhpcy5jYXRhbG9nLm5lZWRzUmVuZGVyaW5nJiZ0aGlzLmZvcm1JbmZvLmhhc1hmYSYmIXRoaXMuZm9ybUluZm8uaGFzQWNyb0Zvcm0mJihlPXRoaXMueGZhRGF0YSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFGYWN0b3J5IixlP25ldyBYRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyMkZSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2UmJnRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoZSl9YXN5bmMjR2UoZSx0KXtjb25zdCBhPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpO2lmKCFhKXJldHVybjtjb25zdCByPWF3YWl0IGEuZ2V0QXN5bmMoIkRSIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2F3YWl0IE9iamVjdExvYWRlci5sb2FkKHIsWyJGb250Il0sdGhpcy54cmVmKTtjb25zdCBpPXIuZ2V0KCJGb250Iik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLHt1c2VTeXN0ZW1Gb250czohMX0pLHtidWlsdEluQ01hcENhY2hlOnMsZm9udENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmN9PXRoaXMuY2F0YWxvZyxsPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOm8sYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpjLG9wdGlvbnM6bn0pLGg9bmV3IE9wZXJhdG9yTGlzdCx1PVtdLGQ9e2dldCBmb250KCl7cmV0dXJuIHUuYXQoLTEpfSxzZXQgZm9udChlKXt1LnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxwYXJzZUZvbnQ9KGUsYSxpKT0+bC5oYW5kbGVTZXRGb250KHIsW05hbWUuZ2V0KGUpLDFdLG51bGwsaCx0LGQsYSxpKS5jYXRjaCgoZT0+e3dhcm4oYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpLGY9W107Zm9yKGNvbnN0W2UsdF1vZiBpKXtjb25zdCBhPXQuZ2V0KCJGb250RGVzY3JpcHRvciIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2xldCByPWEuZ2V0KCJGb250RmFtaWx5Iik7cj1yLnJlcGxhY2VBbGwoL1sgXSsoXGQpL2csIiQxIik7Y29uc3QgaT17Zm9udEZhbWlseTpyLGZvbnRXZWlnaHQ6YS5nZXQoIkZvbnRXZWlnaHQiKSxpdGFsaWNBbmdsZTotYS5nZXQoIkl0YWxpY0FuZ2xlIil9O3ZhbGlkYXRlQ1NTRm9udChpKSYmZi5wdXNoKHBhcnNlRm9udChlLG51bGwsaSkpfWF3YWl0IFByb21pc2UuYWxsKGYpO2NvbnN0IGc9dGhpcy54ZmFGYWN0b3J5LnNldEZvbnRzKHUpO2lmKCFnKXJldHVybjtuLmlnbm9yZUVycm9ycz0hMDtmLmxlbmd0aD0wO3UubGVuZ3RoPTA7Y29uc3QgcD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIGcpZ2V0WGZhRm9udE5hbWUoYCR7ZX0tUmVndWxhcmApfHxwLmFkZChlKTtwLnNpemUmJmcucHVzaCgiUGRmSlMtRmFsbGJhY2siKTtmb3IoY29uc3QgZSBvZiBnKWlmKCFwLmhhcyhlKSlmb3IoY29uc3QgdCBvZlt7bmFtZToiUmVndWxhciIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MH0se25hbWU6IkJvbGQiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJJdGFsaWMiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjEyfSx7bmFtZToiQm9sZEl0YWxpYyIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MTJ9XSl7Y29uc3QgYT1gJHtlfS0ke3QubmFtZX1gO2YucHVzaChwYXJzZUZvbnQoYSxnZXRYZmFGb250RGljdChhKSx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6dC5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOnQuaXRhbGljQW5nbGV9KSl9YXdhaXQgUHJvbWlzZS5hbGwoZik7dGhpcy54ZmFGYWN0b3J5LmFwcGVuZEZvbnRzKHUscCl9bG9hZFhmYVJlc291cmNlcyhlLHQpe3JldHVybiBQcm9taXNlLmFsbChbdGhpcy4jR2UoZSx0KS5jYXRjaCgoKCk9Pnt9KSksdGhpcy4jJGUoKV0pfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLiNIZX1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHthY3JvRm9ybTp0fT10aGlzLmNhdGFsb2c7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGE9dC5nZXQoIkZpZWxkcyIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1yO2NvbnN0IGk9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkoaSkmJmkubGVuZ3RoPjB8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhaS5pc0VtcHR5O2NvbnN0IG49ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSkscz1uJiZ0aGlzLiNXZShhKTtlLmhhc0Fjcm9Gb3JtPXImJiFzO2UuaGFzU2lnbmF0dXJlcz1ufWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSl9Z2V0IGRvY3VtZW50SW5mbygpe2NvbnN0e2NhdGFsb2c6ZSxmb3JtSW5mbzp0LHhyZWY6YX09dGhpcyxyPXtQREZGb3JtYXRWZXJzaW9uOnRoaXMudmVyc2lvbixMYW5ndWFnZTplLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6YS5lbmNyeXB0Py5maWx0ZXJOYW1lPz9udWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0Lmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0Lmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhZS5jb2xsZWN0aW9uLElzU2lnbmF0dXJlc1ByZXNlbnQ6dC5oYXNTaWduYXR1cmVzfTtsZXQgaTt0cnl7aT1hLnRyYWlsZXIuZ2V0KCJJbmZvIil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKGkgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIscik7Zm9yKGNvbnN0W2UsdF1vZiBpKXtzd2l0Y2goZSl7Y2FzZSJUaXRsZSI6Y2FzZSJBdXRob3IiOmNhc2UiU3ViamVjdCI6Y2FzZSJLZXl3b3JkcyI6Y2FzZSJDcmVhdG9yIjpjYXNlIlByb2R1Y2VyIjpjYXNlIkNyZWF0aW9uRGF0ZSI6Y2FzZSJNb2REYXRlIjppZigic3RyaW5nIj09dHlwZW9mIHQpe3JbZV09c3RyaW5nVG9QREZTdHJpbmcodCk7Y29udGludWV9YnJlYWs7Y2FzZSJUcmFwcGVkIjppZih0IGluc3RhbmNlb2YgTmFtZSl7cltlXT10O2NvbnRpbnVlfWJyZWFrO2RlZmF1bHQ6bGV0IGE7c3dpdGNoKHR5cGVvZiB0KXtjYXNlInN0cmluZyI6YT1zdHJpbmdUb1BERlN0cmluZyh0KTticmVhaztjYXNlIm51bWJlciI6Y2FzZSJib29sZWFuIjphPXQ7YnJlYWs7ZGVmYXVsdDp0IGluc3RhbmNlb2YgTmFtZSYmKGE9dCl9aWYodm9pZCAwPT09YSl7d2FybihgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHtlfSIsIGluIEluZm86ICR7dH0uYCk7Y29udGludWV9ci5DdXN0b20/Pz1PYmplY3QuY3JlYXRlKG51bGwpO3IuQ3VzdG9tW2VdPWE7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2V9IiwgaW4gSW5mbzogJHt0fS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIscil9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IGEscjtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7YT1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKHI9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBhPWNhbGN1bGF0ZU1ENSh0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbdG9IZXhVdGlsKGEpLHI/dG9IZXhVdGlsKHIpOm51bGxdKX1hc3luYyNWZShlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjphLHhyZWY6cn09dGhpcyxpPVJlZi5nZXQoYS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCByLmZldGNoQXN5bmMoaSk7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBhPWUuZ2V0UmF3KCJUeXBlIik7YSBpbnN0YW5jZW9mIFJlZiYmKGE9YXdhaXQgci5mZXRjaEFzeW5jKGEpKTtpZihpc05hbWUoYSwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMoaSl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChpLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKGkpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChpLDApO3JldHVybltlLGldfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChhKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2EubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy4jcWUuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzphLGxpbmVhcml6YXRpb246cix4ZmFGYWN0b3J5Oml9PXRoaXM7bGV0IG47bj1pP1Byb21pc2UucmVzb2x2ZShbRGljdC5lbXB0eSxudWxsXSk6cj8ucGFnZUZpcnN0PT09ZT90aGlzLiNWZShlKTphLmdldFBhZ2VEaWN0KGUpO249bi50aGVuKCgoW3Qscl0pPT5uZXcgUGFnZSh7cGRmTWFuYWdlcjp0aGlzLnBkZk1hbmFnZXIseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6dCxyZWY6cixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTphLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOmEuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6YS5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmEuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTphLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OmEubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5Oml9KSkpO3RoaXMuI3FlLnNldChlLG4pO3JldHVybiBufWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbil7dGhpcy4jcWUuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259fX1hc3luYyBjaGVja0xhc3RQYWdlKGU9ITEpe2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOmF9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCByO3RyeXthd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxhLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGEuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47cj10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO2lmKHI8PTEpcmV0dXJuO2F3YWl0IHRoaXMuZ2V0UGFnZShyLTEpfWNhdGNoKGkpe3RoaXMuI3FlLmRlbGV0ZShyLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke3J9LmApO2xldCBuO3RyeXtuPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW3IsaV1db2Ygbil7bGV0IG47aWYociBpbnN0YW5jZW9mIEVycm9yKXtuPVByb21pc2UucmVqZWN0KHIpO24uY2F0Y2goKCgpPT57fSkpfWVsc2Ugbj1Qcm9taXNlLnJlc29sdmUobmV3IFBhZ2Uoe3BkZk1hbmFnZXI6YSx4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDpyLHJlZjppLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnQuc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6dC5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bnVsbH0pKTt0aGlzLiNxZS5zZXQoZSxuKX10LnNldEFjdHVhbE51bVBhZ2VzKG4uc2l6ZSl9fWFzeW5jIGZvbnRGYWxsYmFjayhlLHQpe2NvbnN0e2NhdGFsb2c6YSxwZGZNYW5hZ2VyOnJ9PXRoaXM7Zm9yKGNvbnN0IGkgb2YgYXdhaXQgUHJvbWlzZS5hbGwoYS5mb250Q2FjaGUpKWlmKGkubG9hZGVkTmFtZT09PWUpe2kuZmFsbGJhY2sodCxyLmV2YWx1YXRvck9wdGlvbnMpO3JldHVybn19YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOmNsZWFyR2xvYmFsQ2FjaGVzKCl9YXN5bmMjS2UoZSx0LGEscixpLG4scyl7Y29uc3R7eHJlZjpvfT10aGlzO2lmKCEoYSBpbnN0YW5jZW9mIFJlZil8fG4uaGFzKGEpKXJldHVybjtuLnB1dChhKTtjb25zdCBjPWF3YWl0IG8uZmV0Y2hBc3luYyhhKTtpZighKGMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47bGV0IGw9YXdhaXQgYy5nZXRBc3luYygiU3VidHlwZSIpO2w9bCBpbnN0YW5jZW9mIE5hbWU/bC5uYW1lOm51bGw7aWYoIkxpbmsiPT09bClyZXR1cm47aWYoYy5oYXMoIlQiKSl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhhd2FpdCBjLmdldEFzeW5jKCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWB9ZWxzZXtsZXQgYT1jO2Zvcig7Oyl7YT1hLmdldFJhdygiUGFyZW50Iil8fHQ7aWYoYSBpbnN0YW5jZW9mIFJlZil7aWYobi5oYXMoYSkpYnJlYWs7YT1hd2FpdCBvLmZldGNoQXN5bmMoYSl9aWYoIShhIGluc3RhbmNlb2YgRGljdCkpYnJlYWs7aWYoYS5oYXMoIlQiKSl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhhd2FpdCBhLmdldEFzeW5jKCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWA7YnJlYWt9fX10JiYhYy5oYXMoIlBhcmVudCIpJiZpc05hbWUoYy5nZXQoIlN1YnR5cGUiKSwiV2lkZ2V0IikmJnMucHV0KGEsdCk7ci5oYXMoZSl8fHIuc2V0KGUsW10pO3IuZ2V0KGUpLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKG8sYSxpLG51bGwsITAscyxudWxsKS50aGVuKChlPT5lPy5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYCNjb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKCFjLmhhcygiS2lkcyIpKXJldHVybjtjb25zdCBoPWF3YWl0IGMuZ2V0QXN5bmMoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGgpKWZvcihjb25zdCB0IG9mIGgpYXdhaXQgdGhpcy4jS2UoZSxhLHQscixpLG4scyl9Z2V0IGZpZWxkT2JqZWN0cygpe3JldHVybiBzaGFkb3codGhpcywiZmllbGRPYmplY3RzIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmb3JtSW5mbyIpLnRoZW4oKGFzeW5jIGU9PntpZighZS5oYXNGaWVsZHMpcmV0dXJuIG51bGw7Y29uc3QgdD1hd2FpdCB0aGlzLmFubm90YXRpb25HbG9iYWxzO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Fjcm9Gb3JtOmF9PXQscj1uZXcgUmVmU2V0LGk9T2JqZWN0LmNyZWF0ZShudWxsKSxuPW5ldyBNYXAscz1uZXcgUmVmU2V0Q2FjaGU7Zm9yKGNvbnN0IGUgb2YgYS5nZXQoIkZpZWxkcyIpKWF3YWl0IHRoaXMuI0tlKCIiLG51bGwsZSxuLHQscixzKTtjb25zdCBvPVtdO2Zvcihjb25zdFtlLHRdb2YgbilvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigodD0+eyh0PXQuZmlsdGVyKChlPT4hIWUpKSkubGVuZ3RoPjAmJihpW2VdPXQpfSkpKTthd2FpdCBQcm9taXNlLmFsbChvKTtyZXR1cm57YWxsRmllbGRzOm9iamVjdFNpemUoaSk+MD9pOm51bGwsb3JwaGFuRmllbGRzOnN9fSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdD8uYWxsRmllbGRzJiZPYmplY3QudmFsdWVzKHQuYWxsRmllbGRzKS5zb21lKChlPT5lLnNvbWUoKGU9Pm51bGwhPT1lLmFjdGlvbnMpKSkpfWdldCBjYWxjdWxhdGlvbk9yZGVySWRzKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm0/LmdldCgiQ08iKTtpZighQXJyYXkuaXNBcnJheShlKXx8MD09PWUubGVuZ3RoKXJldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKWEgaW5zdGFuY2VvZiBSZWYmJnQucHVzaChhLnRvU3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsdC5sZW5ndGg/dDpudWxsKX1nZXQgYW5ub3RhdGlvbkdsb2JhbHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25HbG9iYWxzIixBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGVHbG9iYWxzKHRoaXMucGRmTWFuYWdlcikpfX1jbGFzcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3Rvcih7ZG9jQmFzZVVybDplLGRvY0lkOnQsZW5hYmxlWGZhOmEsZXZhbHVhdG9yT3B0aW9uczpyLGhhbmRsZXI6aSxwYXNzd29yZDpufSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZSk7dGhpcy5fZG9jSWQ9dDt0aGlzLl9wYXNzd29yZD1uO3RoaXMuZW5hYmxlWGZhPWE7ci5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCYmPUZlYXR1cmVUZXN0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO3IuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQmJj1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9T2JqZWN0LmZyZWV6ZShyKTtJbWFnZVJlc2l6ZXIuc2V0T3B0aW9ucyhyKTtKcGVnU3RyZWFtLnNldE9wdGlvbnMocik7T3BlcmF0b3JMaXN0LnNldE9wdGlvbnMocik7Y29uc3Qgcz17Li4ucixoYW5kbGVyOml9O0pweEltYWdlLnNldE9wdGlvbnMocyk7SWNjQ29sb3JTcGFjZS5zZXRPcHRpb25zKHMpO0NteWtJQ0NCYXNlZENTLnNldE9wdGlvbnMocyl9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe3JldHVybiB0aGlzLl9kb2NCYXNlVXJsfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGEpe2NvbnN0IHI9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KGUsYSk6cn1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsYSl7dHJ5e2NvbnN0IHI9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KGUsYSk6cn1jYXRjaChyKXtpZighKHIgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgcjthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShyLmJlZ2luLHIuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGEpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBrYz0xLEFjPTIsQ2M9MSx2Yz0yLEZjPTMsSWM9NCxUYz01LE9jPTYsTWM9NyxEYz04O2Z1bmN0aW9uIG9uRm4oKXt9ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFVua25vd25FcnJvckV4Y2VwdGlvbilyZXR1cm4gZTtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fHVucmVhY2hhYmxlKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgQWJvcnRFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIkludmFsaWRQREZFeGNlcHRpb24iOnJldHVybiBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnJldHVybiBuZXcgUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJSZXNwb25zZUV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMsZS5taXNzaW5nKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUuZGV0YWlscyl9cmV0dXJuIG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7I0plPW5ldyBBYm9ydENvbnRyb2xsZXI7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPWE7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO2EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy4jWWUuYmluZCh0aGlzKSx7c2lnbmFsOnRoaXMuI0plLnNpZ25hbH0pfSNZZSh7ZGF0YTplfSl7aWYoZS50YXJnZXROYW1lIT09dGhpcy5zb3VyY2VOYW1lKXJldHVybjtpZihlLnN0cmVhbSl7dGhpcy4jWmUoZSk7cmV0dXJufWlmKGUuY2FsbGJhY2spe2NvbnN0IHQ9ZS5jYWxsYmFja0lkLGE9dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZighYSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7dH1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZihlLmNhbGxiYWNrPT09a2MpYS5yZXNvbHZlKGUuZGF0YSk7ZWxzZXtpZihlLmNhbGxiYWNrIT09QWMpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IHQ9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighdCl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3QgYT10aGlzLnNvdXJjZU5hbWUscj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iajtQcm9taXNlLnRyeSh0LGUuZGF0YSkudGhlbigoZnVuY3Rpb24odCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixjYWxsYmFjazprYyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxkYXRhOnR9KX0pLChmdW5jdGlvbih0KXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLGNhbGxiYWNrOkFjLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHQpfSl9KSl9ZWxzZSBlLnN0cmVhbUlkP3RoaXMuI1FlKGUpOnQoZS5kYXRhKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IHI9dGhpcy5jYWxsYmFja0lkKyssaT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3JdPWk7dHJ5e3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxjYWxsYmFja0lkOnIsZGF0YTp0fSxhKX1jYXRjaChlKXtpLnJlamVjdChlKX1yZXR1cm4gaS5wcm9taXNlfXNlbmRXaXRoU3RyZWFtKGUsdCxhLHIpe2NvbnN0IGk9dGhpcy5zdHJlYW1JZCsrLG49dGhpcy5zb3VyY2VOYW1lLHM9dGhpcy50YXJnZXROYW1lLG89dGhpcy5jb21PYmo7cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6YT0+e2NvbnN0IGM9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXT17Y29udHJvbGxlcjphLHN0YXJ0Q2FsbDpjLHB1bGxDYWxsOm51bGwsY2FuY2VsQ2FsbDpudWxsLGlzQ2xvc2VkOiExfTtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTpzLGFjdGlvbjplLHN0cmVhbUlkOmksZGF0YTp0LGRlc2lyZWRTaXplOmEuZGVzaXJlZFNpemV9LHIpO3JldHVybiBjLnByb21pc2V9LHB1bGw6ZT0+e2NvbnN0IHQ9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOnMsc3RyZWFtOk9jLHN0cmVhbUlkOmksZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZX0pO3JldHVybiB0LnByb21pc2V9LGNhbmNlbDplPT57YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiY2FuY2VsIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2NvbnN0IHQ9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5jYW5jZWxDYWxsPXQ7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5pc0Nsb3NlZD0hMDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTpzLHN0cmVhbTpDYyxzdHJlYW1JZDppLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LGEpfSNRZShlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUscj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixuPXRoaXMscz10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dLG89e2VucXVldWUoZSxuPTEscyl7aWYodGhpcy5pc0NhbmNlbGxlZClyZXR1cm47Y29uc3Qgbz10aGlzLmRlc2lyZWRTaXplO3RoaXMuZGVzaXJlZFNpemUtPW47aWYobz4wJiZ0aGlzLmRlc2lyZWRTaXplPD0wKXt0aGlzLnNpbmtDYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMucmVhZHk9dGhpcy5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlfWkucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOkljLHN0cmVhbUlkOnQsY2h1bms6ZX0scyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06RmMsc3RyZWFtSWQ6dH0pO2RlbGV0ZSBuLnN0cmVhbVNpbmtzW3RdfX0sZXJyb3IoZSl7YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06VGMsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfX0sc2lua0NhcGFiaWxpdHk6UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O28uc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO28ucmVhZHk9by5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09bztQcm9taXNlLnRyeShzLGUuZGF0YSxvKS50aGVuKChmdW5jdGlvbigpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOkRjLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOkRjLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKX0jWmUoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGE9dGhpcy5zb3VyY2VOYW1lLHI9ZS5zb3VyY2VOYW1lLGk9dGhpcy5jb21PYmosbj10aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdLHM9dGhpcy5zdHJlYW1TaW5rc1t0XTtzd2l0Y2goZS5zdHJlYW0pe2Nhc2UgRGM6ZS5zdWNjZXNzP24uc3RhcnRDYWxsLnJlc29sdmUoKTpuLnN0YXJ0Q2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO2JyZWFrO2Nhc2UgTWM6ZS5zdWNjZXNzP24ucHVsbENhbGwucmVzb2x2ZSgpOm4ucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIE9jOmlmKCFzKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTpNYyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KTticmVha31zLmRlc2lyZWRTaXplPD0wJiZlLmRlc2lyZWRTaXplPjAmJnMuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO3MuZGVzaXJlZFNpemU9ZS5kZXNpcmVkU2l6ZTtQcm9taXNlLnRyeShzLm9uUHVsbHx8b25GbikudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTpNYyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTpNYyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSk7YnJlYWs7Y2FzZSBJYzphc3NlcnQobiwiZW5xdWV1ZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKG4uaXNDbG9zZWQpYnJlYWs7bi5jb250cm9sbGVyLmVucXVldWUoZS5jaHVuayk7YnJlYWs7Y2FzZSBGYzphc3NlcnQobiwiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihuLmlzQ2xvc2VkKWJyZWFrO24uaXNDbG9zZWQ9ITA7bi5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy4jZXQobix0KTticmVhaztjYXNlIFRjOmFzc2VydChuLCJlcnJvciBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO24uY29udHJvbGxlci5lcnJvcih3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jZXQobix0KTticmVhaztjYXNlIHZjOmUuc3VjY2Vzcz9uLmNhbmNlbENhbGwucmVzb2x2ZSgpOm4uY2FuY2VsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI2V0KG4sdCk7YnJlYWs7Y2FzZSBDYzppZighcylicmVhaztjb25zdCBvPXdyYXBSZWFzb24oZS5yZWFzb24pO1Byb21pc2UudHJ5KHMub25DYW5jZWx8fG9uRm4sbykudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTp2YyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTp2YyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSk7cy5zaW5rQ2FwYWJpbGl0eS5yZWplY3Qobyk7cy5pc0NhbmNlbGxlZD0hMDtkZWxldGUgdGhpcy5zdHJlYW1TaW5rc1t0XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBzdHJlYW0gY2FzZSIpfX1hc3luYyNldChlLHQpe2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbZS5zdGFydENhbGw/LnByb21pc2UsZS5wdWxsQ2FsbD8ucHJvbWlzZSxlLmNhbmNlbENhbGw/LnByb21pc2VdKTtkZWxldGUgdGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XX1kZXN0cm95KCl7dGhpcy4jSmU/LmFib3J0KCk7dGhpcy4jSmU9bnVsbH19YXN5bmMgZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGEse2VuY3J5cHQ6cj1udWxsfSl7Y29uc3QgaT1yPy5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZS5udW0sZS5nZW4pO2EucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gb2JqXG5gKTt0IGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QodCxhLGkpOnQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKHQsYSxpKTooQXJyYXkuaXNBcnJheSh0KXx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpKSYmYXdhaXQgd3JpdGVBcnJheSh0LGEsaSk7YS5wdXNoKCJcbmVuZG9ialxuIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVEaWN0KGUsdCxhKXt0LnB1c2goIjw8Iik7Zm9yKGNvbnN0IHIgb2YgZS5nZXRLZXlzKCkpe3QucHVzaChgIC8ke2VzY2FwZVBERk5hbWUocil9IGApO2F3YWl0IHdyaXRlVmFsdWUoZS5nZXRSYXcociksdCxhKX10LnB1c2goIj4+Iil9YXN5bmMgZnVuY3Rpb24gd3JpdGVTdHJlYW0oZSx0LGEpe2xldCByPWUuZ2V0Qnl0ZXMoKTtjb25zdHtkaWN0Oml9PWUsW24sc109YXdhaXQgUHJvbWlzZS5hbGwoW2kuZ2V0QXN5bmMoIkZpbHRlciIpLGkuZ2V0QXN5bmMoIkRlY29kZVBhcm1zIildKSxvPWlzTmFtZShBcnJheS5pc0FycmF5KG4pP2F3YWl0IGkueHJlZi5mZXRjaElmUmVmQXN5bmMoblswXSk6biwiRmxhdGVEZWNvZGUiKTtpZihyLmxlbmd0aD49MjU2fHxvKXRyeXtjb25zdCBlPW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLHQ9ZS53cml0YWJsZS5nZXRXcml0ZXIoKTthd2FpdCB0LnJlYWR5O3Qud3JpdGUocikudGhlbigoYXN5bmMoKT0+e2F3YWl0IHQucmVhZHk7YXdhaXQgdC5jbG9zZSgpfSkpLmNhdGNoKCgoKT0+e30pKTtjb25zdCBhPWF3YWl0IG5ldyBSZXNwb25zZShlLnJlYWRhYmxlKS5hcnJheUJ1ZmZlcigpO3I9bmV3IFVpbnQ4QXJyYXkoYSk7bGV0IGMsbDtpZihuKXtpZighbyl7Yz1BcnJheS5pc0FycmF5KG4pP1tOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSwuLi5uXTpbTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksbl07cyYmKGw9QXJyYXkuaXNBcnJheShzKT9bbnVsbCwuLi5zXTpbbnVsbCxzXSl9fWVsc2UgYz1OYW1lLmdldCgiRmxhdGVEZWNvZGUiKTtjJiZpLnNldCgiRmlsdGVyIixjKTtsJiZpLnNldCgiRGVjb2RlUGFybXMiLGwpfWNhdGNoKGUpe2luZm8oYHdyaXRlU3RyZWFtIC0gY2Fubm90IGNvbXByZXNzIGRhdGE6ICIke2V9Ii5gKX1sZXQgYz1ieXRlc1RvU3RyaW5nKHIpO2EmJihjPWEuZW5jcnlwdFN0cmluZyhjKSk7aS5zZXQoIkxlbmd0aCIsYy5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChpLHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iLGMsIlxuZW5kc3RyZWFtIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVBcnJheShlLHQsYSl7dC5wdXNoKCJbIik7bGV0IHI9ITA7Zm9yKGNvbnN0IGkgb2YgZSl7cj9yPSExOnQucHVzaCgiICIpO2F3YWl0IHdyaXRlVmFsdWUoaSx0LGEpfXQucHVzaCgiXSIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlVmFsdWUoZSx0LGEpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXQucHVzaChgLyR7ZXNjYXBlUERGTmFtZShlLm5hbWUpfWApO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSl8fEFycmF5QnVmZmVyLmlzVmlldyhlKSlhd2FpdCB3cml0ZUFycmF5KGUsdCxhKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgke2VzY2FwZVN0cmluZyhlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2gobnVtYmVyVG9TdHJpbmcoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIERpY3Q/YXdhaXQgd3JpdGVEaWN0KGUsdCxhKTplIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hd2FpdCB3cml0ZVN0cmVhbShlLHQsYSk6bnVsbD09PWU/dC5wdXNoKCJudWxsIik6d2FybihgVW5oYW5kbGVkIHZhbHVlIGluIHdyaXRlcjogJHt0eXBlb2YgZX0sIHBsZWFzZSBmaWxlIGEgYnVnLmApfWZ1bmN0aW9uIHdyaXRlSW50KGUsdCxhLHIpe2ZvcihsZXQgaT10K2EtMTtpPmEtMTtpLS0pe3JbaV09MjU1JmU7ZT4+PTh9cmV0dXJuIGErdH1mdW5jdGlvbiB3cml0ZVN0cmluZyhlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtmb3IobGV0IGk9MDtpPHI7aSsrKWFbdCtpXT0yNTUmZS5jaGFyQ29kZUF0KGkpO3JldHVybiB0K3J9ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOmEseHJlZjpyfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBhPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTpyfT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9cGFyc2VYRkFQYXRoKHQpO2xldCBuPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoaSwwKTshbiYmaS5sZW5ndGg+MSYmKG49YS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbaS5hdCgtMSldLDApKTtuP24uY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KHIpP3IubWFwKChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIscildOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3Qgcj1bXTthLmRvY3VtZW50RWxlbWVudC5kdW1wKHIpO3JldHVybiByLmpvaW4oIiIpfShyLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksYSl9Y29uc3QgaT1uZXcgU3RyaW5nU3RyZWFtKGUpO2kuZGljdD1uZXcgRGljdChyKTtpLmRpY3Quc2V0KCJUeXBlIixOYW1lLmdldCgiRW1iZWRkZWRGaWxlIikpO2EucHV0KHQse2RhdGE6aX0pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOmF9b2YgZSlhLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGEubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGEpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCByPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBhPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLHI9dC5maWxlbmFtZXx8IiIsaT1bYS50b1N0cmluZygpLHIsZS50b1N0cmluZygpLC4uLnQuaW5mb01hcC52YWx1ZXMoKV0sbj1NYXRoLnN1bVByZWNpc2UoaS5tYXAoKGU9PmUubGVuZ3RoKSkpLHM9bmV3IFVpbnQ4QXJyYXkobik7bGV0IG89MDtmb3IoY29uc3QgZSBvZiBpKW89d3JpdGVTdHJpbmcoZSxvLHMpO3JldHVybiBieXRlc1RvU3RyaW5nKGNhbGN1bGF0ZU1ENShzLDAscy5sZW5ndGgpKX0oZSx0KTthLnNldCgiSUQiLFt0LmZpbGVJZHNbMF0scl0pfX1hc3luYyBmdW5jdGlvbiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmUseHJlZkluZm86dCxjaGFuZ2VzOmEseHJlZjpyPW51bGwsaGFzWGZhOmk9ITEseGZhRGF0YXNldHNSZWY6bj1udWxsLGhhc1hmYURhdGFzZXRzRW50cnk6cz0hMSxuZWVkQXBwZWFyYW5jZXM6byxhY3JvRm9ybVJlZjpjPW51bGwsYWNyb0Zvcm06bD1udWxsLHhmYURhdGE6aD1udWxsLHVzZVhyZWZTdHJlYW06dT0hMX0pe2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFjcm9mb3JtKHt4cmVmOmUsYWNyb0Zvcm06dCxhY3JvRm9ybVJlZjphLGhhc1hmYTpyLGhhc1hmYURhdGFzZXRzRW50cnk6aSx4ZmFEYXRhc2V0c1JlZjpuLG5lZWRBcHBlYXJhbmNlczpzLGNoYW5nZXM6b30peyFyfHxpfHxufHx3YXJuKCJYRkEgLSBDYW5ub3Qgc2F2ZSBpdCIpO2lmKCFzJiYoIXJ8fCFufHxpKSlyZXR1cm47Y29uc3QgYz10LmNsb25lKCk7aWYociYmIWkpe2NvbnN0IGU9dC5nZXQoIlhGQSIpLnNsaWNlKCk7ZS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Uuc3BsaWNlKDMsMCxuKTtjLnNldCgiWEZBIixlKX1zJiZjLnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7by5wdXQoYSx7ZGF0YTpjfSl9KHt4cmVmOnIsYWNyb0Zvcm06bCxhY3JvRm9ybVJlZjpjLGhhc1hmYTppLGhhc1hmYURhdGFzZXRzRW50cnk6cyx4ZmFEYXRhc2V0c1JlZjpuLG5lZWRBcHBlYXJhbmNlczpvLGNoYW5nZXM6YX0pO2kmJnVwZGF0ZVhGQSh7eGZhRGF0YTpoLHhmYURhdGFzZXRzUmVmOm4sY2hhbmdlczphLHhyZWY6cn0pO2NvbnN0IGQ9ZnVuY3Rpb24gZ2V0VHJhaWxlckRpY3QoZSx0LGEpe2NvbnN0IHI9bmV3IERpY3QobnVsbCk7ci5zZXQoIlByZXYiLGUuc3RhcnRYUmVmKTtjb25zdCBpPWUubmV3UmVmO2lmKGEpe3QucHV0KGkse2RhdGE6IiJ9KTtyLnNldCgiU2l6ZSIsaS5udW0rMSk7ci5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYUmVmIikpfWVsc2Ugci5zZXQoIlNpemUiLGkubnVtKTtudWxsIT09ZS5yb290UmVmJiZyLnNldCgiUm9vdCIsZS5yb290UmVmKTtudWxsIT09ZS5pbmZvUmVmJiZyLnNldCgiSW5mbyIsZS5pbmZvUmVmKTtudWxsIT09ZS5lbmNyeXB0UmVmJiZyLnNldCgiRW5jcnlwdCIsZS5lbmNyeXB0UmVmKTtyZXR1cm4gcn0odCxhLHUpLGY9W10sZz1hd2FpdCBhc3luYyBmdW5jdGlvbiB3cml0ZUNoYW5nZXMoZSx0LGE9W10pe2NvbnN0IHI9W107Zm9yKGNvbnN0W2kse2RhdGE6bn1db2YgZS5pdGVtcygpKWlmKG51bGwhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pe2F3YWl0IHdyaXRlT2JqZWN0KGksbixhLHQpO3IucHVzaCh7cmVmOmksZGF0YTphLmpvaW4oIiIpfSk7YS5sZW5ndGg9MH1lbHNlIHIucHVzaCh7cmVmOmksZGF0YTpufSk7cmV0dXJuIHIuc29ydCgoKGUsdCk9PmUucmVmLm51bS10LnJlZi5udW0pKX0oYSxyLGYpO2xldCBwPWUubGVuZ3RoO2NvbnN0IG09ZS5hdCgtMSk7aWYoMTAhPT1tJiYxMyE9PW0pe2YucHVzaCgiXG4iKTtwKz0xfWZvcihjb25zdHtkYXRhOmV9b2YgZyludWxsIT09ZSYmZi5wdXNoKGUpO2F3YWl0KHU/YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlN0cmVhbVRhYmxlKGUsdCxhLHIsaSl7Y29uc3Qgbj1bXTtsZXQgcz0wLG89MDtmb3IoY29uc3R7cmVmOmUsZGF0YTpyfW9mIGEpe2xldCBhO3M9TWF0aC5tYXgocyx0KTtpZihudWxsIT09cil7YT1NYXRoLm1pbihlLmdlbiw2NTUzNSk7bi5wdXNoKFsxLHQsYV0pO3QrPXIubGVuZ3RofWVsc2V7YT1NYXRoLm1pbihlLmdlbisxLDY1NTM1KTtuLnB1c2goWzAsMCxhXSl9bz1NYXRoLm1heChvLGEpfXIuc2V0KCJJbmRleCIsZ2V0SW5kZXhlcyhhKSk7Y29uc3QgYz1bMSxnZXRTaXplSW5CeXRlcyhzKSxnZXRTaXplSW5CeXRlcyhvKV07ci5zZXQoIlciLGMpO2NvbXB1dGVJRHModCxlLHIpO2NvbnN0IGw9TWF0aC5zdW1QcmVjaXNlKGMpLGg9bmV3IFVpbnQ4QXJyYXkobCpuLmxlbmd0aCksdT1uZXcgU3RyZWFtKGgpO3UuZGljdD1yO2xldCBkPTA7Zm9yKGNvbnN0W2UsdCxhXW9mIG4pe2Q9d3JpdGVJbnQoZSxjWzBdLGQsaCk7ZD13cml0ZUludCh0LGNbMV0sZCxoKTtkPXdyaXRlSW50KGEsY1syXSxkLGgpfWF3YWl0IHdyaXRlT2JqZWN0KGUubmV3UmVmLHUsaSx7fSk7aS5wdXNoKCJzdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxwLGcsZCxmKTphc3luYyBmdW5jdGlvbiBnZXRYUmVmVGFibGUoZSx0LGEscixpKXtpLnB1c2goInhyZWZcbiIpO2NvbnN0IG49Z2V0SW5kZXhlcyhhKTtsZXQgcz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOnJ9b2YgYSl7aWYoZS5udW09PT1uW3NdKXtpLnB1c2goYCR7bltzXX0gJHtuW3MrMV19XG5gKTtzKz0yfWlmKG51bGwhPT1yKXtpLnB1c2goYCR7dC50b1N0cmluZygpLnBhZFN0YXJ0KDEwLCIwIil9ICR7TWF0aC5taW4oZS5nZW4sNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBuXHJcbmApO3QrPXIubGVuZ3RofWVsc2UgaS5wdXNoKGAwMDAwMDAwMDAwICR7TWF0aC5taW4oZS5nZW4rMSw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IGZcclxuYCl9Y29tcHV0ZUlEcyh0LGUscik7aS5wdXNoKCJ0cmFpbGVyXG4iKTthd2FpdCB3cml0ZURpY3QocixpKTtpLnB1c2goIlxuc3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQscCxnLGQsZikpO2NvbnN0IGI9ZS5sZW5ndGgrTWF0aC5zdW1QcmVjaXNlKGYubWFwKChlPT5lLmxlbmd0aCkpKSx5PW5ldyBVaW50OEFycmF5KGIpO3kuc2V0KGUpO2xldCB3PWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIGYpdz13cml0ZVN0cmluZyhlLHcseSk7cmV0dXJuIHl9Y2xhc3MgUERGV29ya2VyU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuX21zZ0hhbmRsZXI9ZTt0aGlzLl9jb250ZW50TGVuZ3RoPW51bGw7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzPVtdfWdldEZ1bGxSZWFkZXIoKXthc3NlcnQoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZXb3JrZXJTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgUERGV29ya2VyU3RyZWFtUmVhZGVyKHRoaXMuX21zZ0hhbmRsZXIpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcihlLHQpe2NvbnN0IGE9bmV3IFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKGUsdCx0aGlzLl9tc2dIYW5kbGVyKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2goYSk7cmV0dXJuIGF9Y2FuY2VsQWxsUmVxdWVzdHMoZSl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbChlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKXQuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuX21zZ0hhbmRsZXI9YTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCByPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1yLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZTt0aGlzLnRlcm1pbmF0ZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljeyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYiZnVuY3Rpb24iPT10eXBlb2Ygc2VsZi5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBzZWxmJiZ0aGlzLmluaXRpYWxpemVGcm9tUG9ydChzZWxmKX1zdGF0aWMgc2V0dXAoZSx0KXtsZXQgYT0hMTtlLm9uKCJ0ZXN0IiwodD0+e2lmKCFhKXthPSEwO2Uuc2VuZCgidGVzdCIsdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpfX0pKTtlLm9uKCJjb25maWd1cmUiLChlPT57IWZ1bmN0aW9uIHNldFZlcmJvc2l0eUxldmVsKGUpe051bWJlci5pc0ludGVnZXIoZSkmJihkYT1lKX0oZS52ZXJib3NpdHkpfSkpO2Uub24oIkdldERvY1JlcXVlc3QiLChlPT50aGlzLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpKSl9c3RhdGljIGNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpe2xldCBhLHI9ITEsaT1udWxsO2NvbnN0IG49bmV3IFNldCxzPWdldFZlcmJvc2l0eUxldmVsKCkse2RvY0lkOm8sYXBpVmVyc2lvbjpjfT1lLGw9IjUuMy45MyI7aWYoYyE9PWwpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Y30iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtsfSIuYCk7Y29uc3QgYnVpbGRNc2c9KGUsdCk9PmBUaGUgXGAke2V9LnByb3RvdHlwZVxgIGNvbnRhaW5zIHVuZXhwZWN0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSAiJHt0fSIsIHRodXMgYnJlYWtpbmcgZS5nLiBcYGZvci4uLmluXGAgaXRlcmF0aW9uIG9mICR7ZX1zLmA7Zm9yKGNvbnN0IGUgaW57fSl0aHJvdyBuZXcgRXJyb3IoYnVpbGRNc2coIk9iamVjdCIsZSkpO2Zvcihjb25zdCBlIGluW10pdGhyb3cgbmV3IEVycm9yKGJ1aWxkTXNnKCJBcnJheSIsZSkpO2NvbnN0IGg9bysiX3dvcmtlciI7bGV0IHU9bmV3IE1lc3NhZ2VIYW5kbGVyKGgsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYocil0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtuLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7bi5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGEuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGEuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBhLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYVJlc291cmNlcyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBhLmVuc3VyZURvYygibG9hZFhmYVJlc291cmNlcyIsW3UsZV0pO2ZpbmlzaFdvcmtlclRhc2soZSl9Y29uc3RbcixpXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOnIsZmluZ2VycHJpbnRzOmksaHRtbEZvclhmYTp0P2F3YWl0IGEuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTt1LnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uKXtjb25zdCB0PW5ldyBXb3JrZXJUYXNrKGBQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgJHtlLmNvZGV9YCk7c3RhcnRXb3JrZXJUYXNrKHQpO3Uuc2VuZFdpdGhQcm9taXNlKCJQYXNzd29yZFJlcXVlc3QiLGUpLnRoZW4oKGZ1bmN0aW9uKHtwYXNzd29yZDplfSl7ZmluaXNoV29ya2VyVGFzayh0KTthLnVwZGF0ZVBhc3N3b3JkKGUpO3BkZk1hbmFnZXJSZWFkeSgpfSkpLmNhdGNoKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2sodCk7dS5zZW5kKCJEb2NFeGNlcHRpb24iLGUpfSkpfWVsc2UgdS5zZW5kKCJEb2NFeGNlcHRpb24iLHdyYXBSZWFzb24oZSkpfWZ1bmN0aW9uIHBkZk1hbmFnZXJSZWFkeSgpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITEpLnRoZW4ob25TdWNjZXNzLChmdW5jdGlvbihlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7ZSBpbnN0YW5jZW9mIFhSZWZQYXJzZUV4Y2VwdGlvbj9hLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9KSk6b25GYWlsdXJlKGUpfSkpfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKTsoYXN5bmMgZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOnIsbGVuZ3RoOm4sZG9jQmFzZVVybDpzLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bH0pe2NvbnN0IGg9e3NvdXJjZTpudWxsLGRpc2FibGVBdXRvRmV0Y2g6YSxkb2NCYXNlVXJsOnMsZG9jSWQ6byxlbmFibGVYZmE6YyxldmFsdWF0b3JPcHRpb25zOmwsaGFuZGxlcjp1LGxlbmd0aDpuLHBhc3N3b3JkOnQscmFuZ2VDaHVua1NpemU6cn07aWYoZSl7aC5zb3VyY2U9ZTtyZXR1cm4gbmV3IExvY2FsUGRmTWFuYWdlcihoKX1jb25zdCBkPW5ldyBQREZXb3JrZXJTdHJlYW0odSksZj1kLmdldEZ1bGxSZWFkZXIoKSxnPVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBwLG09W10sYj0wO2YuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoZi5pc1JhbmdlU3VwcG9ydGVkKXtoLnNvdXJjZT1kO2gubGVuZ3RoPWYuY29udGVudExlbmd0aDtoLmRpc2FibGVBdXRvRmV0Y2h8fD1mLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3A9bmV3IE5ldHdvcmtQZGZNYW5hZ2VyKGgpO2Zvcihjb25zdCBlIG9mIG0pcC5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpO209W107Zy5yZXNvbHZlKHApO2k9bnVsbH19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2cucmVqZWN0KGUpO2k9bnVsbH0pKTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTphfSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihhKXtpZighcCl7Y29uc3QgZT1hcnJheUJ1ZmZlcnNUb0J5dGVzKG0pO209W107biYmZS5sZW5ndGghPT1uJiZ3YXJuKCJyZXBvcnRlZCBIVFRQIGxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBhY3R1YWwiKTtoLnNvdXJjZT1lO3A9bmV3IExvY2FsUGRmTWFuYWdlcihoKTtnLnJlc29sdmUocCl9aT1udWxsO3JldHVybn1iKz1lLmJ5dGVMZW5ndGg7Zi5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8dS5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDpiLHRvdGFsOk1hdGgubWF4KGIsZi5jb250ZW50TGVuZ3RofHwwKX0pO3A/cC5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpOm0ucHVzaChlKTtmLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07Zi5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2cucmVqZWN0KGUpO2k9bnVsbH0pKTtpPWU9PntkLmNhbmNlbEFsbFJlcXVlc3RzKGUpfTtyZXR1cm4gZy5wcm9taXNlfSkoZSkudGhlbigoZnVuY3Rpb24oZSl7aWYocil7ZS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9YT1lO2EucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbigoZT0+e3Uuc2VuZCgiRGF0YUxvYWRlZCIse2xlbmd0aDplLmJ5dGVzLmJ5dGVMZW5ndGh9KX0pKX0pKS50aGVuKHBkZk1hbmFnZXJSZWFkeSxvbkZhaWx1cmUpfXUub24oIkdldFBhZ2UiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlKGUsInJvdGF0ZSIpLGEuZW5zdXJlKGUsInJlZiIpLGEuZW5zdXJlKGUsInVzZXJVbml0IiksYS5lbnN1cmUoZSwidmlldyIpXSkudGhlbigoZnVuY3Rpb24oW2UsdCxhLHJdKXtyZXR1cm57cm90YXRlOmUscmVmOnQscmVmU3RyOnQ/LnRvU3RyaW5nKCk/P251bGwsdXNlclVuaXQ6YSx2aWV3OnJ9fSkpfSkpfSkpO3Uub24oIkdldFBhZ2VJbmRleCIsKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9UmVmLmdldChlLm51bSxlLmdlbik7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4IixbdF0pfSkpO3Uub24oIkdldERlc3RpbmF0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImRlc3RpbmF0aW9ucyIpfSkpO3Uub24oIkdldERlc3RpbmF0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7dS5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VMYWJlbHMiKX0pKTt1Lm9uKCJHZXRQYWdlTGF5b3V0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZUxheW91dCIpfSkpO3Uub24oIkdldFBhZ2VNb2RlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZU1vZGUiKX0pKTt1Lm9uKCJHZXRWaWV3ZXJQcmVmZXJlbmNlcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInZpZXdlclByZWZlcmVuY2VzIil9KSk7dS5vbigiR2V0T3BlbkFjdGlvbiIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coIm9wZW5BY3Rpb24iKX0pKTt1Lm9uKCJHZXRBdHRhY2htZW50cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7dS5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7dS5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZT0+YS5lbnN1cmUoZSwianNBY3Rpb25zIikpKX0pKTt1Lm9uKCJHZXRPdXRsaW5lIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSk7dS5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSk7dS5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpO3Uub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKFthLmVuc3VyZURvYygiZG9jdW1lbnRJbmZvIiksYS5lbnN1cmVDYXRhbG9nKCJtZXRhZGF0YSIpXSl9KSk7dS5vbigiR2V0TWFya0luZm8iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJtYXJrSW5mbyIpfSkpO3Uub24oIkdldERhdGEiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZT0+ZS5ieXRlcykpfSkpO3Uub24oIkdldEFubm90YXRpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7cmV0dXJuIGEuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihhKXtjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBHZXRBbm5vdGF0aW9uczogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKHIpO3JldHVybiBhLmdldEFubm90YXRpb25zRGF0YSh1LHIsdCkudGhlbigoZT0+e2ZpbmlzaFdvcmtlclRhc2socik7cmV0dXJuIGV9KSwoZT0+e2ZpbmlzaFdvcmtlclRhc2socik7dGhyb3cgZX0pKX0pKX0pKTt1Lm9uKCJHZXRGaWVsZE9iamVjdHMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oKGU9PmU/LmFsbEZpZWxkc3x8bnVsbCkpfSkpO3Uub24oIkhhc0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KSk7dS5vbigiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSkpO3Uub24oIlNhdmVEb2N1bWVudCIsKGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOnIsZmlsZW5hbWU6aX0pe2NvbnN0IG49W2EucmVxdWVzdExvYWRlZFN0cmVhbSgpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksYS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLGEuZW5zdXJlRG9jKCJ4cmVmIiksYS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxhLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLHM9bmV3IFJlZlNldENhY2hlLG89W10sYz1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAociksW2wsaCxkLGYsZyxwLG1dPWF3YWl0IFByb21pc2UuYWxsKG4pLGI9Zy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCB5O2lmKGMpe20/YXdhaXQgbS5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmEsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6Y30pJiYoeT1tKTphd2FpdCBTdHJ1Y3RUcmVlUm9vdC5jYW5DcmVhdGVTdHJ1Y3R1cmVUcmVlKHtjYXRhbG9nUmVmOmIscGRmTWFuYWdlcjphLG5ld0Fubm90YXRpb25zQnlQYWdlOmN9KSYmKHk9bnVsbCk7Y29uc3QgZT1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhyLnZhbHVlcygpLGcsYS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKSx0PXZvaWQgMD09PXk/bzpbXTtmb3IoY29uc3RbcixpXW9mIGMpdC5wdXNoKGEuZ2V0UGFnZShyKS50aGVuKCh0PT57Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke3J9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiB0LnNhdmVOZXdBbm5vdGF0aW9ucyh1LGEsaSxlLHMpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhhKX0pKX0pKSk7bnVsbD09PXk/by5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKGFzeW5jKCk9Pnthd2FpdCBTdHJ1Y3RUcmVlUm9vdC5jcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTpjLHhyZWY6ZyxjYXRhbG9nUmVmOmIscGRmTWFuYWdlcjphLGNoYW5nZXM6c30pfSkpKTp5JiZvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigoYXN5bmMoKT0+e2F3YWl0IHkudXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6YyxwZGZNYW5hZ2VyOmEsY2hhbmdlczpzfSl9KSkpfWlmKGUpby5wdXNoKGEuZW5zdXJlRG9jKCJzZXJpYWxpemVYZmFEYXRhIixbcl0pKTtlbHNlIGZvcihsZXQgZT0wO2U8dDtlKyspby5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbih0KXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBTYXZlOiBwYWdlICR7ZX1gKTtzdGFydFdvcmtlclRhc2soYSk7cmV0dXJuIHQuc2F2ZSh1LGEscixzKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSl9KSl9KSkpO2NvbnN0IHc9YXdhaXQgUHJvbWlzZS5hbGwobyk7bGV0IHg9bnVsbDtpZihlKXt4PXdbMF07aWYoIXgpcmV0dXJuIGwuYnl0ZXN9ZWxzZSBpZigwPT09cy5zaXplKXJldHVybiBsLmJ5dGVzO2NvbnN0IFM9ZCYmaCBpbnN0YW5jZW9mIERpY3QmJnMudmFsdWVzKCkuc29tZSgoZT0+ZS5uZWVkQXBwZWFyYW5jZXMpKSxrPWggaW5zdGFuY2VvZiBEaWN0JiZoLmdldCgiWEZBIil8fG51bGw7bGV0IEM9bnVsbCx2PSExO2lmKEFycmF5LmlzQXJyYXkoaykpe2ZvcihsZXQgZT0wLHQ9ay5sZW5ndGg7ZTx0O2UrPTIpaWYoImRhdGFzZXRzIj09PWtbZV0pe0M9a1tlKzFdO3Y9ITB9bnVsbD09PUMmJihDPWcuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkpfWVsc2UgayYmd2FybigiVW5zdXBwb3J0ZWQgWEZBIHR5cGUuIik7bGV0IEY9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihnLnRyYWlsZXIpe2NvbnN0IGU9bmV3IE1hcCx0PWcudHJhaWxlci5nZXQoIkluZm8iKXx8bnVsbDtpZih0IGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbYSxyXW9mIHQpInN0cmluZyI9PXR5cGVvZiByJiZlLnNldChhLHN0cmluZ1RvUERGU3RyaW5nKHIpKTtGPXtyb290UmVmOmIsZW5jcnlwdFJlZjpnLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOmcuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpnLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mb01hcDplLGZpbGVJZHM6Zy50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6cD9mOmcubGFzdFhSZWZTdHJlYW1Qb3M/P2YsZmlsZW5hbWU6aX19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6bC5ieXRlcyx4cmVmSW5mbzpGLGNoYW5nZXM6cyx4cmVmOmcsaGFzWGZhOiEhayx4ZmFEYXRhc2V0c1JlZjpDLGhhc1hmYURhdGFzZXRzRW50cnk6dixuZWVkQXBwZWFyYW5jZXM6UyxhY3JvRm9ybVJlZjpkLGFjcm9Gb3JtOmgseGZhRGF0YTp4LHVzZVhyZWZTdHJlYW06aXNEaWN0KGcudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKCk9PntnLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSk7dS5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCByPWUucGFnZUluZGV4O2EuZ2V0UGFnZShyKS50aGVuKChmdW5jdGlvbihhKXtjb25zdCBpPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHtyfWApO3N0YXJ0V29ya2VyVGFzayhpKTtjb25zdCBuPXM+PWtlP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjp1LHNpbms6dCx0YXNrOmksaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZSxtb2RpZmllZElkczplLm1vZGlmaWVkSWRzfSkudGhlbigoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhpKTtuJiZpbmZvKGBwYWdlPSR7cisxfSAtIGdldE9wZXJhdG9yTGlzdDogdGltZT0ke0RhdGUubm93KCktbn1tcywgbGVuPSR7ZS5sZW5ndGh9YCk7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3Uub24oIkdldFRleHRDb250ZW50IiwoZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSW5kZXg6cixpbmNsdWRlTWFya2VkQ29udGVudDppLGRpc2FibGVOb3JtYWxpemF0aW9uOm59PWU7YS5nZXRQYWdlKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IGE9bmV3IFdvcmtlclRhc2soIkdldFRleHRDb250ZW50OiBwYWdlICIrcik7c3RhcnRXb3JrZXJUYXNrKGEpO2NvbnN0IG89cz49a2U/RGF0ZS5ub3coKTowO2UuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOnUsdGFzazphLHNpbms6dCxpbmNsdWRlTWFya2VkQ29udGVudDppLGRpc2FibGVOb3JtYWxpemF0aW9uOm59KS50aGVuKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSk7byYmaW5mbyhgcGFnZT0ke3IrMX0gLSBnZXRUZXh0Q29udGVudDogdGltZT1gKyhEYXRlLm5vdygpLW8pKyJtcyIpO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGEpO2EudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTt1Lm9uKCJHZXRTdHJ1Y3RUcmVlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZT0+YS5lbnN1cmUoZSwiZ2V0U3RydWN0VHJlZSIpKSl9KSk7dS5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUuaWQsdSl9KSk7dS5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmNsZWFudXAoITApfSkpO3Uub24oIlRlcm1pbmF0ZSIsKGZ1bmN0aW9uKGUpe3I9ITA7Y29uc3QgdD1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgZT1hLmNsZWFudXAoKTt0LnB1c2goZSk7YT1udWxsfWVsc2UgY2xlYXJHbG9iYWxDYWNoZXMoKTtpPy4obmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2Zvcihjb25zdCBlIG9mIG4pe3QucHVzaChlLmZpbmlzaGVkKTtlLnRlcm1pbmF0ZSgpfXJldHVybiBQcm9taXNlLmFsbCh0KS50aGVuKChmdW5jdGlvbigpe3UuZGVzdHJveSgpO3U9bnVsbH0pKX0pKTt1Lm9uKCJSZWFkeSIsKGZ1bmN0aW9uKHQpe3NldHVwRG9jKGUpO2U9bnVsbH0pKTtyZXR1cm4gaH1zdGF0aWMgaW5pdGlhbGl6ZUZyb21Qb3J0KGUpe2NvbnN0IHQ9bmV3IE1lc3NhZ2VIYW5kbGVyKCJ3b3JrZXIiLCJtYWluIixlKTt0aGlzLnNldHVwKHQsZSk7dC5zZW5kKCJyZWFkeSIsbnVsbCl9fWdsb2JhbFRoaXMucGRmanNXb3JrZXI9e1dvcmtlck1lc3NhZ2VIYW5kbGVyfTtleHBvcnR7V29ya2VyTWVzc2FnZUhhbmRsZXJ9Ow==";
export {
l as default
};
//# sourceMappingURL=pdf.worker.min-BJ9oGy-p.js.map