<?PHP
$chatdata=unserialize(base64_decode('YTo1OntzOjk6Imxhbmd1YWdlcyI7YTozOntpOjA7czoyOiJubCI7aToxO3M6MjoiaXMiO2k6MjtzOjI6ImVuIjt9czo0OiJjb2RlIjtzOjQ3NzUzOiJmdW5jdGlvbiBjNihfMSl7aWYoXzEuY2hhckF0KDApPT0iOiIpe2lmKF8xLmNoYXJBdCgxKT09IikiKXtyZXR1cm4gbmV3IEFycmF5KDIsImltYWdlcy9zbWlsZXlzL2hhcHB5ZmFjZS5naWYiKX1pZihfMS5jaGFyQXQoMSk9PSItIil7aWYoXzEuY2hhckF0KDIpPT0iKSIpe3JldHVybiBuZXcgQXJyYXkoMywiaW1hZ2VzL3NtaWxleXMvaGFwcHlmYWNlbG9uZy5naWYiKX1pZihfMS5jaGFyQXQoMik9PSIoIil7cmV0dXJuIG5ldyBBcnJheSgzLCJpbWFnZXMvc21pbGV5cy9zYWRmYWNlbG9uZy5naWYiKX1yZXR1cm4gbmV3IEFycmF5KDApfWlmKF8xLmNoYXJBdCgxKT09IkQiKXtyZXR1cm4gbmV3IEFycmF5KDIsImltYWdlcy9zbWlsZXlzL2JpZ3NtaWxlZmFjZS5naWYiKX1pZihfMS5jaGFyQXQoMSk9PSIoIil7cmV0dXJuIG5ldyBBcnJheSgyLCJpbWFnZXMvc21pbGV5cy9zYWRmYWNlLmdpZiIpfWlmKF8xLmNoYXJBdCgxKT09InAiKXtyZXR1cm4gbmV3IEFycmF5KDIsImltYWdlcy9zbWlsZXlzL3Rvbmd1ZWZhY2UuZ2lmIil9cmV0dXJuIG5ldyBBcnJheSgwKX1pZihfMS5jaGFyQXQoMCk9PSI7Iil7aWYoXzEuY2hhckF0KDEpPT0iKSIpe3JldHVybiBuZXcgQXJyYXkoMiwiaW1hZ2VzL3NtaWxleXMvd2lua2ZhY2UuZ2lmIil9aWYoXzEuY2hhckF0KDEpPT0iLSIpe2lmKF8xLmNoYXJBdCgyKT09IikiKXtyZXR1cm4gbmV3IEFycmF5KDMsImltYWdlcy9zbWlsZXlzL3dpbmtmYWNlLmdpZiIpfXJldHVybiBuZXcgQXJyYXkoMCl9aWYoXzEuY2hhckF0KDEpPT0icCIpe3JldHVybiBuZXcgQXJyYXkoMiwiaW1hZ2VzL3NtaWxleXMvdG9uZ3Vld2luay5naWYiKX1yZXR1cm4gbmV3IEFycmF5KDApfXJldHVybiBuZXcgQXJyYXkoMCl9ZnVuY3Rpb24gZDYoKXt0aGlzLmkxPSIiO3RoaXMueDI9IiI7dGhpcy55Mj0iIjt0aGlzLnoyPWZhbHNlO3RoaXMuYTM9ZmFsc2U7dGhpcy50Mz1mYWxzZTt0aGlzLmoyPTA7dGhpcy5uND1mdW5jdGlvbigpe2Zvcih2YXIgeD0wO3g8dGhpcy5qMjt4Kyspe3RoaXMuaTErPSI8L2ZvbnQ+In19O3RoaXMubzQ9ZnVuY3Rpb24oKXtpZih0aGlzLngyIT0iIil7dGhpcy5pMSs9Jzxmb250IGNsYXNzPSJiZ2NvbG9yJyt0aGlzLngyKyciPic7dGhpcy5qMisrfWlmKHRoaXMueTIhPSIiKXt0aGlzLmkxKz0nPGZvbnQgY2xhc3M9ImZnY29sb3InK3RoaXMueTIrJyI+Jzt0aGlzLmoyKyt9aWYodGhpcy5hMyl7dGhpcy5pMSs9Jzxmb250IGNsYXNzPSJpcmN1bmRlcmxpbmUiPic7dGhpcy5qMisrfWlmKHRoaXMuejIpe3RoaXMuaTErPSc8Zm9udCBjbGFzcz0iaXJjYm9sZCI+Jzt0aGlzLmoyKyt9fTt0aGlzLmU2PWZ1bmN0aW9uKF8zKXt2YXIgeD0wO3ZhciBfNT0wO2lmKF8zLmNoYXJBdCh4KT49IjAiJiZfMy5jaGFyQXQoeCk8PSI5Iil7XzU9XzMuY2hhckF0KHgpO3grKztpZihfMy5jaGFyQXQoeCk+PSIwIiYmXzMuY2hhckF0KHgpPD0iOSIpe181Kz1fMy5jaGFyQXQoeCk7eCsrfV81Kj0xO2lmKF81Pj0wJiZfNTwxNil7dGhpcy55Mj1fNSsiIn19aWYoXzMuY2hhckF0KHgpIT0iLCIpe3JldHVybiB4fXgrKztpZihfMy5jaGFyQXQoeCk+PSIwIiYmXzMuY2hhckF0KHgpPD0iOSIpe181PV8zLmNoYXJBdCh4KTt4Kys7aWYoXzMuY2hhckF0KHgpPj0iMCImJl8zLmNoYXJBdCh4KTw9IjkiKXtfNSs9XzMuY2hhckF0KHgpO3grK31fNSo9MTtpZihfNT49MCYmXzU8MTYpe3RoaXMueDI9XzUrIiJ9fXJldHVybiB4fTt0aGlzLnUzPWZ1bmN0aW9uKF82KXtyZXR1cm4gXzYucmVwbGFjZShuZXcgUmVnRXhwKCImIiwiZyIpLCImYW1wOyIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiPiIsImciKSwiJmd0OyIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiPCIsImciKSwiJmx0OyIpfTt0aGlzLm0xPWZ1bmN0aW9uKF83KXt0aGlzLm80KCk7dmFyIF84PWZhbHNlO2Zvcih2YXIgeD0wO3g8XzcubGVuZ3RoO3grKyl7aWYoXzgpe3RoaXMubjQoKTt0aGlzLm80KCl9Xzg9ZmFsc2U7aWYoXzcuY2hhckF0KHgpPT1TdHJpbmcuZnJvbUNoYXJDb2RlKDIpKXt0aGlzLnoyPSF0aGlzLnoyO184PXRydWU7Y29udGludWV9aWYoXzcuY2hhckF0KHgpPT1TdHJpbmcuZnJvbUNoYXJDb2RlKDMpKXtfOD10cnVlO3grPXRoaXMuZTYoXzcuc3Vic3RyKHgrMSkpO2NvbnRpbnVlfWlmKF83LmNoYXJBdCh4KT09U3RyaW5nLmZyb21DaGFyQ29kZSgzMSkpe3RoaXMuYTM9IXRoaXMuYTM7Xzg9dHJ1ZTtjb250aW51ZX1pZihfNy5jaGFyQXQoeCk9PVN0cmluZy5mcm9tQ2hhckNvZGUoMTgpKXt0aGlzLnQzPSF0aGlzLnQzO184PXRydWU7Y29udGludWV9aWYoXzcuY2hhckF0KHgpPT1TdHJpbmcuZnJvbUNoYXJDb2RlKDE1KSl7Y29udGludWV9aWYoXzcuY2hhckF0KHgpPT1TdHJpbmcuZnJvbUNoYXJDb2RlKDE0KSl7dGhpcy5hMz1mYWxzZTt0aGlzLnoyPWZhbHNlO3RoaXMudDM9ZmFsc2U7dGhpcy54Mj0iIjt0aGlzLnkyPSIiO184PXRydWU7Y29udGludWV9aWYoXzcuY2hhckF0KHgpPT0iXG4iKXt0aGlzLmkxKz0iPGJyPiI7Y29udGludWV9dmFyIF9hPWM2KF83LnN1YnN0cih4KSk7aWYoX2FbMF0+MCl7dGhpcy5pMSs9JzxpbWcgc3JjPSInK19hWzFdKyciIGFsdD0iJyt0aGlzLnUzKF83LnN1YnN0cih4LF9hWzBdKSkrJyI+Jzt4Kz1fYVswXS0xO2NvbnRpbnVlfXZhciBfYj0iIjt2YXIgX2M9IiI7dmFyIHAwPWZhbHNlO2lmKF83LnN1YnN0cih4KS5pbmRleE9mKCJodHRwOi8vIik9PTApe3AwPXRydWV9aWYoXzcuc3Vic3RyKHgpLmluZGV4T2YoInd3dy4iKT09MCl7cDA9dHJ1ZTtfYj0iaHR0cDovLyJ9aWYoXzcuc3Vic3RyKHgpLmluZGV4T2YoImZ0cDovLyIpPT0wKXtwMD10cnVlfWlmKF83LnN1YnN0cih4KS5pbmRleE9mKCJmdHAuIik9PTApe3AwPXRydWU7X2I9ImZ0cDovLyJ9aWYoXzcuc3Vic3RyKHgpLnNlYXJjaChuZXcgUmVnRXhwKCJeW2EtekEtWjAtOVxcLl8tXStAW2EtekEtWjAtOV8tXSsoXFwuW2EtekEtWjAtOV8tXSspezEsfSgkfCApIiwiIikpPT0wKXtwMD10cnVlO19iPSJtYWlsdG86In1pZihwMCl7cDA9Xzcuc3Vic3RyKHgpLmluZGV4T2YoIiAiKTtpZihwMD09LTEpe3AwPV83Lmxlbmd0aC14fXZhciBfYT1fNy5zdWJzdHIoeCxwMCk7eCs9cDAtMTt0aGlzLmkxKz0nPGEgaHJlZj0iJytfYitlbmNvZGVVUkkoX2EpK19jKyciIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idXJsZmluZGVyIj4nK3RoaXMudTMoX2EpKyI8L2E+Ijtjb250aW51ZX10aGlzLmkxKz10aGlzLnUzKF83LmNoYXJBdCh4KSl9dGhpcy5uNCgpO3JldHVybiB0aGlzLmkxfX1mdW5jdGlvbiBmNihsMCxwMCl7aWYobDAuazIoKSE9cDAuazIoKSl7aWYobDAuazIoKSl7cmV0dXJuLTF9ZWxzZXtyZXR1cm4gMX19aWYoIWwwLmsyKCkpe2lmKGwwLmIzKCkhPXAwLmIzKCkpe2lmKGwwLmIzKCkpe3JldHVybi0xfWVsc2V7cmV0dXJuIDF9fX1pZihsMC5zMCgpLnRvTG93ZXJDYXNlKCk+cDAuczAoKS50b0xvd2VyQ2FzZSgpKXtyZXR1cm4gMX1lbHNle3JldHVybi0xfX1mdW5jdGlvbiBnNihfMTApe3RoaXMudzA9XzEwO3RoaXMucDQ9ZmFsc2U7dGhpcy5xND1mYWxzZTt0aGlzLnMwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudzB9O3RoaXMuaDY9ZnVuY3Rpb24oXzExKXt0aGlzLncwPV8xMX07dGhpcy5jMz1mdW5jdGlvbihfMTIpe3RoaXMucDQ9XzEyfTt0aGlzLnYzPWZ1bmN0aW9uKF8xMyl7dGhpcy5xND1fMTN9O3RoaXMuazI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wNH07dGhpcy5iMz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnE0fX1mdW5jdGlvbiBpNihfMTQpe3RoaXMudjA9XzE0O3RoaXMueDA9bmV3IEFycmF5KCk7dGhpcy50MT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnYwfTt0aGlzLnI0PWZ1bmN0aW9uKF8xNSl7Zm9yKHZhciB4IGluIHRoaXMueDApe2lmKHRoaXMueDBbeF0uczAoKS50b0xvd2VyQ2FzZSgpPT1fMTUudG9Mb3dlckNhc2UoKSl7cmV0dXJufX10aGlzLngwLnB1c2gobmV3IGc2KF8xNSkpfTt0aGlzLnczPWZ1bmN0aW9uKF8xNyl7Zm9yKHZhciB4IGluIHRoaXMueDApe2lmKHRoaXMueDBbeF0uczAoKS50b0xvd2VyQ2FzZSgpPT1fMTcudG9Mb3dlckNhc2UoKSl7ZGVsZXRlIHRoaXMueDBbeF07cmV0dXJufX19O3RoaXMuajY9ZnVuY3Rpb24oXzE5LF8xYSl7Zm9yKHZhciB4IGluIHRoaXMueDApe2lmKHRoaXMueDBbeF0uczAoKS50b0xvd2VyQ2FzZSgpPT1fMTkudG9Mb3dlckNhc2UoKSl7dGhpcy54MFt4XS5oNihfMWEpO3JldHVybn19fTt0aGlzLnMwPWZ1bmN0aW9uKF8xYyl7Zm9yKHZhciB4IGluIHRoaXMueDApe2lmKHRoaXMueDBbeF0uczAoKS50b0xvd2VyQ2FzZSgpPT1fMWMudG9Mb3dlckNhc2UoKSl7cmV0dXJuIHRoaXMueDBbeF19fXJldHVybiBudWxsfTt0aGlzLnM0PWZ1bmN0aW9uKCl7dGhpcy54MC5zb3J0KGY2KTtyZXR1cm4gdGhpcy54MH19ZnVuY3Rpb24gazYoKXt0aGlzLmYwPW51bGw7dGhpcy5nMT0iIjt0aGlzLmw2PSIiO3RoaXMuYjI9IiI7dGhpcy5jMj0wO3RoaXMuZDM9bmV3IEFycmF5KCk7dGhpcy51MD1uZXcgQXJyYXkoKTt0aGlzLnExPTA7dGhpcy5rcmV5Y2hhdGNvbW11bmljYXRlPW5ldyBtNigpO3RoaXMueDM9IiI7dGhpcy5lMz0xMjt0aGlzLmoxPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZzF9O3RoaXMubjY9ZnVuY3Rpb24oXzFlKXt0aGlzLmYwPV8xZX07dGhpcy5mMz1mdW5jdGlvbihkMCl7dGhpcy5mMC5nMCgiZmF0YWxlbmRjb21tdW5pY2F0aW9uIixkMCl9O3RoaXMueTM9ZnVuY3Rpb24oYzApe2lmKGMwLmNoYXJBdCgwKSE9IiMiJiZjMC5jaGFyQXQoMCkhPSIhIiYmYzAuY2hhckF0KDApIT0iKyImJmMwLmNoYXJBdCgwKSE9IiYiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9O3RoaXMuazE9ZnVuY3Rpb24oXzIxKXt2YXIgXzIyPV8yMS50b0xvd2VyQ2FzZSgpO2Zvcih2YXIgeCBpbiB0aGlzLnUwKXtpZih0aGlzLnUwW3hdLnQxKCkudG9Mb3dlckNhc2UoKT09XzIyKXtyZXR1cm4gdGhpcy51MFt4XX19cmV0dXJuIG51bGx9O3RoaXMubzY9ZnVuY3Rpb24oXzI0KXt2YXIgXzI1PXRoaXMuazEoXzI0KTtpZihfMjUhPW51bGwpe3JldHVybiBfMjV9dmFyIF8yNj1uZXcgaTYoXzI0KTt0aGlzLnUwLnB1c2goXzI2KTtyZXR1cm4gXzI2fTt0aGlzLnA2PWZ1bmN0aW9uKF8yNyxfMjgpe3ZhciBfMjk9dGhpcy5rMShfMjcpO2lmKF8yOSE9bnVsbCl7dGhpcy5kMigiUEFSVCAiK18yNysiIDoiK18yOCl9fTt0aGlzLnQ0PWZ1bmN0aW9uKF8yYSl7dmFyIF8yYj1fMmEudG9Mb3dlckNhc2UoKTtmb3IodmFyIHggaW4gdGhpcy51MCl7aWYodGhpcy51MFt4XS50MSgpLnRvTG93ZXJDYXNlKCk9PV8yYil7ZGVsZXRlIHRoaXMudTBbeF19fX07dGhpcy51ND1mdW5jdGlvbihfMmQsXzJlKXtpZihfMmU9PSIiKXtyZXR1cm59dmFyIF8yZj0wO2lmKF8yZS5jaGFyQXQoMCk9PSJAIil7XzJmPTF9aWYoXzJlLmNoYXJBdCgwKT09IisiKXtfMmY9Mn1pZihfMmYhPTApe18yZT1fMmUuc3Vic3RyKDEpfV8yZC5yNChfMmUpO3ZhciBfMzA9XzJkLnMwKF8yZSk7aWYoXzJmPT0wKXtfMzAuYzMoZmFsc2UpO18zMC52MyhmYWxzZSl9aWYoXzJmPT0xKXtfMzAuYzModHJ1ZSl9aWYoXzJmPT0yKXtfMzAuYzMoZmFsc2UpO18zMC52Myh0cnVlKX19O3RoaXMucTY9ZnVuY3Rpb24oXzMxLF8zMil7dmFyIF8zMz10aGlzLmsxKF8zMSk7d2hpbGUodHJ1ZSl7aWYoXzMyLmluZGV4T2YoIiAiKT09LTEpe3RoaXMudTQoXzMzLF8zMik7cmV0dXJufXRoaXMudTQoXzMzLF8zMi5zdWJzdHIoMCxfMzIuaW5kZXhPZigiICIpKSk7XzMyPV8zMi5zdWJzdHIoXzMyLmluZGV4T2YoIiAiKSsxLF8zMi5sZW5ndGgtXzMyLmluZGV4T2YoIiAiKSl9fTt0aGlzLnI2PWZ1bmN0aW9uKCl7aWYodGhpcy5jMj09MCl7dGhpcy5jMj0xO2lmKHRoaXMuYjIubGVuZ3RoPHRoaXMuZTMpe3JldHVybiB0aGlzLmIyKyItIn19aWYodGhpcy5jMj09MSl7dGhpcy5jMj0yO2lmKHRoaXMuYjIubGVuZ3RoPHRoaXMuZTMpe3JldHVybiB0aGlzLmIyKyJfIn19dmFyIF8zND10aGlzLmMyLTE7XzM0PV8zNCsiIjt2YXIgXzM1PXRoaXMuYjI7dmFyIF8zNj1fMzUrXzM0O3doaWxlKF8zNi5sZW5ndGg+dGhpcy5lMyl7XzM1PV8zNS5zdWJzdHIoMCxfMzUubGVuZ3RoLTEpO18zNj1fMzUrXzM0fXRoaXMuYzIrKztyZXR1cm4gXzM2fTt0aGlzLnY0PWZ1bmN0aW9uKCl7dGhpcy5lMigiTklDSyAiK3RoaXMucjYoKSl9O3RoaXMuczY9ZnVuY3Rpb24oXzM3LF8zOCxfMzkpe3RoaXMua3JleWNoYXRjb21tdW5pY2F0ZS50Nih0aGlzKTt0aGlzLmIyPV8zNzt0aGlzLmUyKCJOSUNLICIrXzM3KTt0aGlzLmUyKCJVU0VSICIrXzM4KyIgKiAqIDoiK18zOSl9O3RoaXMudzQ9ZnVuY3Rpb24oXzNhLF8zYil7d2hpbGUoXzNiLmNoYXJBdCgwKT09IiAiKXtfM2I9XzNiLnN1YnN0cmluZygxKX12YXIgYzA9XzNiLnN1YnN0cmluZyhfM2IuaW5kZXhPZigiICIpKTt2YXIgXzNkPV8zYi5zdWJzdHJpbmcoMCxfM2IuaW5kZXhPZigiICIpKTt3aGlsZShjMC5jaGFyQXQoMCk9PSIgIil7YzA9YzAuc3Vic3RyaW5nKDEpfWlmKGMwLmNoYXJBdCgwKT09IjoiKXtjMD1jMC5zdWJzdHJpbmcoMSl9d2hpbGUoXzNkLmxlbmd0aD4wKXtpZihfM2QuaW5kZXhPZigiLCIpPT0tMSl7dzA9XzNkO18zZD0iIn1lbHNle3cwPV8zZC5zdWJzdHJpbmcoMCxfM2QuaW5kZXhPZigiLCIpKTtfM2Q9XzNkLnN1YnN0cmluZyhfM2QuaW5kZXhPZigiLCIpKzEpfXZhciB4PSJwcml2IjtpZih0aGlzLnkzKHcwKSl7eD0iY2hhbiJ9aWYoYzAuY2hhckF0KDApPT0iXHgwMSIpe2MwPWMwLnN1YnN0cmluZygxKTtjMD1jMC5yZXBsYWNlKG5ldyBSZWdFeHAoIlx4MDEkIiwiZyIpLCIiKTt2YXIgYjA9IiI7aWYoYzAuaW5kZXhPZigiICIpPT0tMSl7YjA9YzA7YzA9IiJ9ZWxzZXtiMD1jMC5zdWJzdHJpbmcoMCxjMC5pbmRleE9mKCIgIikpO2MwPWMwLnN1YnN0cmluZyhjMC5pbmRleE9mKCIgIikrMSl9aWYoXzNhPT0ibXNnIil7XzNhPSJjdGNwIn1lbHNle18zYT0iY3RjcHIifXRoaXMuZjAuZzAoInNlbGYiK3grXzNhLHcwLGIwLGMwKX1lbHNle3RoaXMuZjAuZzAoInNlbGYiK3grXzNhLHcwLGMwKX19fTt0aGlzLnU2PWZ1bmN0aW9uKF80MCl7d2hpbGUoXzQwLmNoYXJBdCgwKT09IiAiKXtfNDA9XzQwLnN1YnN0cmluZygxKX1pZihfNDAuaW5kZXhPZigiICIpIT0tMSl7XzQwPV80MC5zdWJzdHJpbmcoMCxfNDAuaW5kZXhPZigiICIpKX1pZihfNDAuY2hhckF0KDApPT0iOiIpe180MD1fNDAuc3Vic3RyaW5nKDEpfXZhciBfNDE9IiI7d2hpbGUoXzQwLmxlbmd0aD4wKXtpZihfNDAuaW5kZXhPZigiLCIpPT0tMSl7XzQxPV80MDtfNDA9IiJ9ZWxzZXtfNDE9XzQwLnN1YnN0cmluZygwLF80MC5pbmRleE9mKCIsIikpO180MD1fNDAuc3Vic3RyaW5nKF80MC5pbmRleE9mKCIsIikrMSl9dGhpcy5mMC5nMCgicHJlam9pbiIsXzQxKX19O3RoaXMueDQ9ZnVuY3Rpb24oXzQyKXt3aGlsZShfNDIuY2hhckF0KDApPT0iICIpe180Mj1fNDIuc3Vic3RyaW5nKDEpfXZhciBiMD1fNDIuc3Vic3RyKDAsXzQyLmluZGV4T2YoIiAiKSkudG9Mb3dlckNhc2UoKTtpZihiMD09ImpvaW4iKXt0aGlzLnU2KF80Mi5zdWJzdHJpbmcoNSkpfWlmKGIwPT0icHJpdm1zZyIpe3RoaXMudzQoIm1zZyIsXzQyLnN1YnN0cmluZyg4KSl9aWYoYjA9PSJub3RpY2UiKXt0aGlzLnc0KCJub3RpY2UiLF80Mi5zdWJzdHJpbmcoNykpfWlmKGIwPT0icXVpdCIpe3RoaXMucTE9Mzt0aGlzLmYwLmcwKCJzdGFydGVkcXVpdHRpbmciKX10aGlzLmUyKF80Mil9O3RoaXMuZTI9ZnVuY3Rpb24oXzQ0KXt0aGlzLmYwLnozKCJvdXQiLF80NCk7dGhpcy5rcmV5Y2hhdGNvbW11bmljYXRlLmE0KF80NCl9O3RoaXMuZDI9ZnVuY3Rpb24oXzQ1KXtpZih0aGlzLnExPjApe3RoaXMueDQoXzQ1KX1lbHNle3RoaXMuZDMucHVzaChfNDUpfX07dGhpcy52Nj1mdW5jdGlvbihfNDYpe3RoaXMuZjAuejMoIm91dCIsXzQ2KTt0aGlzLmtyZXljaGF0Y29tbXVuaWNhdGUudzYoXzQ2KX07dGhpcy51MT1mdW5jdGlvbihfNDcpe3RoaXMuZjAuZzAoInJlZnJlc2huaWNrbGlzdCIsXzQ3KX07dGhpcy54Nj1mdW5jdGlvbihfNDgpe3RoaXMuZjAuejMoImluIixfNDgpO3ZhciBfNDk9XzQ4O3ZhciBiMD1uZXcgQXJyYXkoKTtpZihfNDguY2hhckF0KDApPT0iOiIpe2IwLnB1c2goXzQ4LnN1YnN0cigxLF80OC5pbmRleE9mKCIgIiktMSkpO180OD1fNDguc3Vic3RyKF80OC5pbmRleE9mKCIgIikrMSxfNDgubGVuZ3RoLV80OC5pbmRleE9mKCIgIikpfWVsc2V7YjAucHVzaCgiIil9d2hpbGUoXzQ4IT0iIil7aWYoXzQ4LmNoYXJBdCgwKT09IjoiKXtiMC5wdXNoKF80OC5zdWJzdHIoMSxfNDgubGVuZ3RoLTEpKTtfNDg9IiJ9ZWxzZXtpZihfNDguaW5kZXhPZigiICIpPT0tMSl7YjAucHVzaChfNDgpO180OD0iIn1lbHNle2IwLnB1c2goXzQ4LnN1YnN0cigwLF80OC5pbmRleE9mKCIgIikpKTtfNDg9XzQ4LnN1YnN0cihfNDguaW5kZXhPZigiICIpKzEsXzQ4Lmxlbmd0aC1fNDguaW5kZXhPZigiICIpKX19fWlmKGIwWzFdPT0iUFJJVk1TRyIpe3ZhciBfNGI9YjBbMF0uc3Vic3RyKDAsYjBbMF0uaW5kZXhPZigiISIpKTtpZihiMFsyXS50b0xvd2VyQ2FzZSgpPT10aGlzLmcxLnRvTG93ZXJDYXNlKCkpe2lmKGIwWzNdLmNoYXJBdCgwKT09Ilx4MDEiKXt2YXIgeD1iMFszXS5yZXBsYWNlKG5ldyBSZWdFeHAoIlx4MDEkIiwiZyIpLCIiKTt2YXIgYzA9IiI7aWYoeC5pbmRleE9mKCIgIikhPS0xKXtjMD14LnN1YnN0cigwLHguaW5kZXhPZigiICIpKTt4PXguc3Vic3RyKHguaW5kZXhPZigiICIpKzEseC5sZW5ndGgteC5pbmRleE9mKCIgIikpfXRoaXMuZjAuZzAoInByaXZhdGVjdGNwIixfNGIsYzAseCl9ZWxzZXt0aGlzLmYwLmcwKCJwcml2YXRlbXNnIixfNGIsYjBbM10pfX1lbHNle2lmKGIwWzNdLmNoYXJBdCgwKT09Ilx4MDEiKXt2YXIgeD1iMFszXS5yZXBsYWNlKG5ldyBSZWdFeHAoIlx4MDEiLCJnIiksIiIpO3ZhciBjMD0iIjtpZih4LmluZGV4T2YoIiAiKSE9LTEpe2MwPXguc3Vic3RyKDAseC5pbmRleE9mKCIgIikpO3g9eC5zdWJzdHIoeC5pbmRleE9mKCIgIikrMSx4Lmxlbmd0aC14LmluZGV4T2YoIiAiKSl9dGhpcy5mMC5nMCgiY2hhbmN0Y3AiLF80YixiMFsyXSxjMCx4KX1lbHNle3RoaXMuZjAuZzAoImNoYW5tc2ciLF80YixiMFsyXSxiMFszXSl9fXJldHVybn1pZihiMFsxXT09Ik5PVElDRSIpe2lmKGIwWzJdIT0iKiIpe3ZhciBfNGI9YjBbMF0uc3Vic3RyKDAsYjBbMF0uaW5kZXhPZigiISIpKTtpZihiMFsyXS50b0xvd2VyQ2FzZSgpPT10aGlzLmcxLnRvTG93ZXJDYXNlKCkpe2lmKGIwWzNdLmNoYXJBdCgwKT09Ilx4MDEiKXt2YXIgeD1iMFszXS5yZXBsYWNlKG5ldyBSZWdFeHAoIlx4MDEiLCJnIiksIiIpO3ZhciBjMD0iIjtpZih4LmluZGV4T2YoIiAiKSE9LTEpe2MwPXguc3Vic3RyKDAseC5pbmRleE9mKCIgIikpO3g9eC5zdWJzdHIoeC5pbmRleE9mKCIgIikrMSx4Lmxlbmd0aC14LmluZGV4T2YoIiAiKSl9dGhpcy5mMC5nMCgicHJpdmF0ZWN0Y3ByZXBseSIsXzRiLGMwLHgpfWVsc2V7dGhpcy5mMC5nMCgicHJpdmF0ZW5vdGljZSIsXzRiLGIwWzNdKX19ZWxzZXtpZihiMFszXS5jaGFyQXQoMCk9PSJceDAxIil7dmFyIHg9YjBbM10ucmVwbGFjZShuZXcgUmVnRXhwKCJceDAxIiwiZyIpLCIiKTt2YXIgYzA9IiI7aWYoeC5pbmRleE9mKCIgIikhPS0xKXtjMD14LnN1YnN0cigwLHguaW5kZXhPZigiICIpKTt4PXguc3Vic3RyKHguaW5kZXhPZigiICIpKzEseC5sZW5ndGgteC5pbmRleE9mKCIgIikpfXRoaXMuZjAuZzAoImNoYW5jdGNwcmVwbHkiLF80YixiMFsyXSxjMCx4KX1lbHNle3RoaXMuZjAuZzAoImNoYW5ub3RpY2UiLF80YixiMFsyXSxiMFszXSl9fXJldHVybn19aWYoYjBbMV09PSIwMjAiKXtyZXR1cm59aWYoYjBbMV09PSIwMDEiKXt0aGlzLmcxPWIwWzJdO3RoaXMucTE9MTtmb3IodmFyIHggaW4gdGhpcy5kMyl7dGhpcy54NCh0aGlzLmQzW3hdKX10aGlzLmQzPW5ldyBBcnJheSgpO3RoaXMuZTIoIlBJTkcgWCIpO3RoaXMuZjAuZzAoInN0YXJ0Y29tbXVuaWNhdGlvbiIpO3JldHVybn1pZihiMFsxXT09IjAwMiJ8fGIwWzFdPT0iMDAzInx8YjBbMV09PSIwMDQifHxiMFsxXT09IjAwNSIpe3JldHVybn1pZihiMFsxXT09IjA0MiIpe3RoaXMubDY9YjBbM107cmV0dXJufWlmKGIwWzFdPT0iMjUxInx8YjBbMV09PSIyNTIifHxiMFsxXT09IjI1MyJ8fGIwWzFdPT0iMjU0Inx8YjBbMV09PSIyNTUifHxiMFsxXT09IjI2NSJ8fGIwWzFdPT0iMjY2Iil7cmV0dXJufWlmKGIwWzFdPT0iMzcyIil7dGhpcy5mMC5nMCgibW90ZGxpbmUiLGIwWzNdKTtyZXR1cm59aWYoYjBbMV09PSIzNzUiKXt0aGlzLmYwLmcwKCJtb3Rkc3RhcnQiKTtyZXR1cm59aWYoYjBbMV09PSIzNzYiKXt0aGlzLmYwLmcwKCJtb3RkZW5kIik7cmV0dXJufWlmKGIwWzFdPT0iNDA0Iil7dGhpcy5mMC5nMCgiY291bGRub3RzZW5kX2NoYW5uZWwiLGIwWzNdKTtyZXR1cm59aWYoYjBbMV09PSI0MDEiKXt0aGlzLmYwLmcwKCJjb3VsZG5vdHNlbmRfbmljayIsYjBbM10pO3JldHVybn1pZihiMFsxXT09IlBJTkciKXt0aGlzLmUyKCJQT05HIDoiK2IwWzJdKTtyZXR1cm59aWYoYjBbMV09PSJQT05HIil7aWYodGhpcy5xMT09MSl7dGhpcy5xMT0yO3RoaXMua3JleWNoYXRjb21tdW5pY2F0ZS55NigpO3RoaXMuZjAuZzAoImxvZ29uY29tcGxldGVkIil9cmV0dXJufWlmKGIwWzFdPT0iRVJST1IiKXtpZih0aGlzLnExPT0zKXt0aGlzLmYwLmcwKCJlbmRjb21tdW5pY2F0aW9uIil9ZWxzZXt0aGlzLmYwLmcwKCJmYXRhbGVuZGNvbW11bmljYXRpb24iLHRoaXMueDMrXzQ5KX10aGlzLmtyZXljaGF0Y29tbXVuaWNhdGUuejYoKTtyZXR1cm59aWYoYjBbMV09PSJKT0lOIil7dmFyIF80Yj1iMFswXS5zdWJzdHIoMCxiMFswXS5pbmRleE9mKCIhIikpO3RoaXMubzYoYjBbMl0pLnI0KF80Yik7aWYoXzRiPT10aGlzLmcxKXt0aGlzLmYwLmcwKCJtZWpvaW5jaGFubmVsIixiMFsyXSl9ZWxzZXt0aGlzLmYwLmcwKCJvdGhlcmpvaW5jaGFubmVsIixiMFsyXSxfNGIpO3RoaXMudTEoYjBbMl0pfXJldHVybn1pZihiMFsxXT09IlFVSVQiKXt2YXIgXzRiPWIwWzBdLnN1YnN0cigwLGIwWzBdLmluZGV4T2YoIiEiKSk7Zm9yKHZhciB4IGluIHRoaXMudTApe3ZhciBfNGU9dGhpcy51MFt4XS5zMChfNGIpO2lmKF80ZSE9bnVsbCl7dGhpcy51MFt4XS53MyhfNGIpO3RoaXMuZjAuZzAoImxlYXZlX3F1aXQiLHRoaXMudTBbeF0udDEoKSxfNGIsYjBbMl0pO3RoaXMudTEodGhpcy51MFt4XS50MSgpKX19cmV0dXJufWlmKGIwWzFdPT0iUEFSVCIpe3ZhciBfNGI9YjBbMF0uc3Vic3RyKDAsYjBbMF0uaW5kZXhPZigiISIpKTtpZihfNGI9PXRoaXMuZzEpe3RoaXMudDQoYjBbMl0pO3RoaXMuZjAuZzAoInlvdWxlYXZlX3BhcnQiLGIwWzJdLGIwWzNdKX1lbHNle3RoaXMuazEoYjBbMl0pLnczKF80Yik7dGhpcy5mMC5nMCgibGVhdmVfcGFydCIsYjBbMl0sXzRiLGIwWzNdKTt0aGlzLnUxKGIwWzJdKX1yZXR1cm59aWYoYjBbMV09PSJLSUNLIil7dmFyIF80Zj1iMFswXS5zdWJzdHIoMCxiMFswXS5pbmRleE9mKCIhIikpO2lmKGIwWzNdPT10aGlzLmcxKXt0aGlzLnQ0KGIwWzJdKTt0aGlzLmYwLmcwKCJ5b3VsZWF2ZV9raWNrIixiMFsyXSxiMFs0XSxfNGYpfWVsc2V7dmFyIF80Zj1iMFswXS5zdWJzdHIoMCxiMFswXS5pbmRleE9mKCIhIikpO3RoaXMuazEoYjBbMl0pLnczKGIwWzNdKTt0aGlzLmYwLmcwKCJsZWF2ZV9raWNrIixiMFsyXSxiMFszXSxiMFs0XSxfNGYpO3RoaXMudTEoYjBbMl0pfXJldHVybn1pZihiMFsxXT09Ik5JQ0siKXt2YXIgXzUwPWIwWzBdLnN1YnN0cigwLGIwWzBdLmluZGV4T2YoIiEiKSk7dmFyIF81MT1iMFsyXTtpZih0aGlzLmcxPT1fNTApe3RoaXMuZzE9XzUxfWZvcih2YXIgeCBpbiB0aGlzLnUwKXt2YXIgXzRlPXRoaXMudTBbeF0uczAoXzUwKTtpZihfNGUhPW51bGwpe3RoaXMudTBbeF0uajYoXzUwLF81MSk7aWYodGhpcy5nMT09XzUxKXt0aGlzLmYwLmcwKCJteV9uaWNrY2hhbmdlX2NoYW5uZWwiLHRoaXMudTBbeF0udDEoKSxfNTEpfWVsc2V7dGhpcy5mMC5nMCgibmlja2NoYW5nZV9jaGFubmVsIix0aGlzLnUwW3hdLnQxKCksXzUwLF81MSl9dGhpcy51MSh0aGlzLnUwW3hdLnQxKCkpfX10aGlzLmYwLmcwKCJuaWNrY2hhbmdlIixfNTAsXzUxKTtyZXR1cm59aWYoYjBbMV09PSIzMzEiKXt0aGlzLmYwLmcwKCJ0b3BpY2lzIixiMFszXSwiIik7cmV0dXJufWlmKGIwWzFdPT0iMzMyIil7dGhpcy5mMC5nMCgidG9waWNpcyIsYjBbM10sYjBbNF0pO3JldHVybn1pZihiMFsxXT09IlRPUElDIil7dmFyIF80Yj1iMFswXS5zdWJzdHIoMCxiMFswXS5pbmRleE9mKCIhIikpO3RoaXMuZjAuZzAoInRvcGljY2hhbmdlZCIsYjBbMl0sYjBbM10sXzRiKTtyZXR1cm59aWYoYjBbMV09PSIzNTMiKXt0aGlzLnE2KGIwWzRdLGIwWzVdKTtyZXR1cm59aWYoYjBbMV09PSIzNjYiKXt0aGlzLnUxKGIwWzNdKTtyZXR1cm59aWYoYjBbMV09PSJNT0RFIil7dmFyIF81Mj1iMFswXS5zdWJzdHIoMCxiMFswXS5pbmRleE9mKCIhIikpO2lmKGIwWzBdLmluZGV4T2YoIiEiKT09LTEpe181Mj1iMFswXX12YXIgXzUzPSIiO2Zvcih2YXIgeCBpbiBiMCl7aWYoeD4yKXtfNTMrPSIgIitiMFt4XX19XzUzPV81My5zdWJzdHIoMSk7aWYoYjBbMl09PXRoaXMuZzEpe3RoaXMuZjAuZzAoIm1vZGVfb3duIixfNTMpO3JldHVybn12YXIgXzU0PXRoaXMuazEoYjBbMl0pO3ZhciBfNTU9YjBbM107dmFyIHQwPTQ7dmFyIF81Nz10cnVlO3ZhciBfNTg9MDt2YXIgXzU5PWZhbHNlO2Zvcih2YXIgXzU4PTA7XzU4PF81NS5sZW5ndGg7XzU4Kyspe2lmKF81NS5jaGFyQXQoXzU4KT09IisiKXtfNTc9dHJ1ZTtjb250aW51ZX1pZihfNTUuY2hhckF0KF81OCk9PSItIil7XzU3PWZhbHNlO2NvbnRpbnVlfWlmKF81NS5jaGFyQXQoXzU4KT09Im8iKXtfNTQuczAoYjBbdDBdKS5jMyhfNTcpO181OT10cnVlO3QwKys7Y29udGludWV9aWYoXzU1LmNoYXJBdChfNTgpPT0idiIpe181NC5zMChiMFt0MF0pLnYzKF81Nyk7XzU5PXRydWU7dDArKztjb250aW51ZX1pZihfNTUuY2hhckF0KF81OCk9PSJiInx8XzU1LmNoYXJBdChfNTgpPT0iZSJ8fF81NS5jaGFyQXQoXzU4KT09IkkifHxfNTUuY2hhckF0KF81OCk9PSJSInx8XzU1LmNoYXJBdChfNTgpPT0ibCJ8fF81NS5jaGFyQXQoXzU4KT09ImsiKXt0MCsrO2NvbnRpbnVlfWlmKF81NS5jaGFyQXQoXzU4KT09Im4ifHxfNTUuY2hhckF0KF81OCk9PSJ0Inx8XzU1LmNoYXJBdChfNTgpPT0iaSJ8fF81NS5jaGFyQXQoXzU4KT09Im0ifHxfNTUuY2hhckF0KF81OCk9PSJwInx8XzU1LmNoYXJBdChfNTgpPT0icyJ8fF81NS5jaGFyQXQoXzU4KT09ImMifHxfNTUuY2hhckF0KF81OCk9PSJDInx8XzU1LmNoYXJBdChfNTgpPT0ibSJ8fF81NS5jaGFyQXQoXzU4KT09ImEifHxfNTUuY2hhckF0KF81OCk9PSJxInx8XzU1LmNoYXJBdChfNTgpPT0iciIpe2NvbnRpbnVlfXRoaXMuZjAueTQoIlVuaGFuZGxlZCBtb2RlIGNoYXIgIitfNTUuY2hhckF0KF81OCkpfWlmKF81OSl7dGhpcy51MShiMFsyXSl9dGhpcy5mMC5nMCgibW9kZV9jaGFubmVsIixfNTIsYjBbMl0sXzUzKTtyZXR1cm59aWYoYjBbMV09PSI0MzIiKXtpZih0aGlzLnExPT0wKXt0aGlzLnY0KCk7cmV0dXJufX1pZihiMFsxXT09IjQzMyIpe2lmKHRoaXMucTE9PTApe3RoaXMudjQoKTtyZXR1cm59fWlmKGIwWzFdPT0iMzExInx8YjBbMV09PSIzMTIifHxiMFsxXT09IjMxNyJ8fGIwWzFdPT0iMzE4Inx8YjBbMV09PSIzMTkiKXt0aGlzLmYwLmcwKCJudW1lcmljX2luZm9ybWF0aW9uIixiMCk7cmV0dXJufWlmKGIwWzFdPT0iNDczIil7dGhpcy5mMC5nMCgiY2Fubm90X2pvaW4iLCJpbnZpdGUiLGIwWzNdKTtyZXR1cm59aWYoYjBbMV09PSI0NzQiKXt0aGlzLmYwLmcwKCJjYW5ub3Rfam9pbiIsImJhbiIsYjBbM10pO3JldHVybn1pZihiMFsxXT09IjQ3NSIpe3RoaXMuZjAuZzAoImNhbm5vdF9qb2luIiwia2V5IixiMFszXSk7cmV0dXJufWlmKGIwWzFdPT0iNDY1Iil7dGhpcy54Mys9YjBbM107dGhpcy54Mys9IiBcbiI7cmV0dXJufXRoaXMuZjAueTQoIlVuaGFuZGxlZCBtZXNzYWdlICIrYjBbMV0pfX1mdW5jdGlvbiBuaWNrX2NsaWNrKF81YSxfNWIpe3ZhciBfNWM9a3JleWNoYXRsYXlvdXQucjAoXzVhKTtfNWMuejQoXzViKTtrcmV5Y2hhdGxheW91dC5yMSgpfWZ1bmN0aW9uIHByb2Nlc3NfY29tbWFuZChjMCl7a3JleWNoYXRsYXlvdXQuZzMoYzApO2tyZXljaGF0bGF5b3V0LnIxKCl9ZnVuY3Rpb24gcHJvY2Vzc19uaWNrX2NvbW1hbmQoXzVlLF81ZixjMCl7a3JleWNoYXRsYXlvdXQuZzMoYzApO3ZhciBfNjE9a3JleWNoYXRsYXlvdXQucjAoXzVlKTtfNjEuejQoXzVmKTtrcmV5Y2hhdGxheW91dC5yMSgpfWZ1bmN0aW9uIGE3KF82MixfNjMsXzY0KXt0aGlzLmYyPV82Mjt0aGlzLnYwPV82Mzt0aGlzLnowPV82NDt0aGlzLmwyPW5ldyBBcnJheSgpO3RoaXMuaDM9MDt0aGlzLm0yPWZhbHNlO3RoaXMuYTU9IiI7dGhpcy52MT1udWxsO3RoaXMubjI9MDt0aGlzLmI1PSIiO3RoaXMuYzU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52MH07dGhpcy5iNz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmgzfTt0aGlzLmQ1PWZ1bmN0aW9uKCl7aWYodGhpcy5uMil7cmV0dXJuIGZhbHNlfWlmKHRoaXMuZjI9PSJjaGFubmVsIil7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfTt0aGlzLmM3PWZ1bmN0aW9uKCl7aWYodGhpcy5uMil7cmV0dXJuJzx0YWJsZSBjbGFzcz0iY2VudGVybGF5b3V0Ij48dHI+PHRkPicrdGhpcy5iNSsiPC90ZD48L3RyPjwvdGFibGU+In12YXIgZTU9IiI7Zm9yKHZhciB4IGluIHRoaXMubDIpe2U1Kz10aGlzLmwyW3hdfXJldHVybiBlNX07dGhpcy5mNT1mdW5jdGlvbihjMCl7dmFyIGUwPSIiO2Zvcih2YXIgeD0wO3g8YzAubGVuZ3RoO3grKyl7aWYoKGMwLmNoYXJBdCh4KT49ImEiJiZjMC5jaGFyQXQoeCk8PSJ6Iil8fChjMC5jaGFyQXQoeCk+PSJBIiYmYzAuY2hhckF0KHgpPD0iWiIpKXtlMCs9YzAuY2hhckF0KHgpfWVsc2V7ZTArPSJfIitjMC5jaGFyQ29kZUF0KHgpKyJfIn19cmV0dXJuIGUwfTt0aGlzLmI0PWZ1bmN0aW9uKF82YSl7dmFyIGUwPXRoaXMuZjUodGhpcy52MCk7ZTArPSJfX18iO2UwKz10aGlzLmY1KF82YSk7cmV0dXJuIGUwfTt0aGlzLno0PWZ1bmN0aW9uKF82Yyl7dmFyIGUwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYjQodGhpcy5tMikpO2lmKGUwKXtlMC5zdHlsZS5kaXNwbGF5PSJub25lIn1pZih0aGlzLm0yPT1fNmMpe3RoaXMubTI9ZmFsc2U7cmV0dXJufXZhciBlMD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmI0KF82YykpO2lmKGUwKXtlMC5zdHlsZS5kaXNwbGF5PSJibG9jayJ9dGhpcy5tMj1fNmN9O3RoaXMubDE9ZnVuY3Rpb24oYzApe2MwLnJlcGxhY2UobmV3IFJlZ0V4cCgiJyIsImciKSwiJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoMzkpICsgJyIpO2MwLnJlcGxhY2UobmV3IFJlZ0V4cCgnIicsImciKSwiJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoMzQpICsgJyIpO3JldHVybiBjMH07dGhpcy5nNT1mdW5jdGlvbihfNmYsZDAsYzApe3ZhciBfNzI9JzxhIGhyZWY9IiMiIG9uY2xpY2s9Iic7XzcyKz0icHJvY2Vzc19uaWNrX2NvbW1hbmQoJyIrdGhpcy5sMSh0aGlzLnYwKTtfNzIrPSInLCciK3RoaXMubDEoXzZmLnMwKCkpO183Mis9IicsJyIrdGhpcy5sMShkMCk7XzcyKz0iJylcIiI7XzcyKz0nIG9uY29udGV4dG1lbnU9Iic7XzcyKz0icHJvY2Vzc19uaWNrX2NvbW1hbmQoJyIrdGhpcy5sMSh0aGlzLnYwKTtfNzIrPSInLCciK3RoaXMubDEoXzZmLnMwKCkpO183Mis9IicsJyIrdGhpcy5sMShkMCk7XzcyKz0iJyk7IHJldHVybiBmYWxzZTtcIiI7XzcyKz0iPiI7XzcyKz1jMDtfNzIrPSI8L2E+PGJyIC8+IjtyZXR1cm4gXzcyfTt0aGlzLmQ3PWZ1bmN0aW9uKF83Myl7dmFyIF83ND0nPGEgaHJlZj0iIyInO183NCs9Im9uY2xpY2s9XCJuaWNrX2NsaWNrKCciK3RoaXMubDEodGhpcy52MCk7Xzc0Kz0iJywnIit0aGlzLmwxKF83My5zMCgpKSsiJylcIiI7Xzc0Kz0ib25jb250ZXh0bWVudT1cIm5pY2tfY2xpY2soJyIrdGhpcy5sMSh0aGlzLnYwKTtfNzQrPSInLCciK3RoaXMubDEoXzczLnMwKCkpKyInKTsgcmV0dXJuIGZhbHNlO1wiIjtfNzQrPSIgPiI7aWYoXzczLmsyKCkpe183NCs9IkAifWVsc2V7aWYoXzczLmIzKCkpe183NCs9IisifX1fNzQrPV83My5zMCgpO183NCs9IjwvYT4iO183NCs9Ijxicj4iO183NCs9JzxkaXYgY2xhc3M9Im5pY2tsaXN0b3B0aW9ucyIgJztpZih0aGlzLm0yPT1fNzMuczAoKSl7Xzc0Kz0nc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyInfWVsc2V7Xzc0Kz0nc3R5bGU9ImRpc3BsYXk6IG5vbmU7Iid9Xzc0Kz0nIGlkPSInK3RoaXMuYjQoXzczLnMwKCkpKyciPic7Xzc0Kz10aGlzLmc1KF83MywiL3F1ZXJ5ICIrXzczLnMwKCksYTBbInF1ZXJ5Il0pO183NCs9dGhpcy5nNShfNzMsIi93aG9pcyAiK183My5zMCgpLGEwWyJ3aG9pcyJdKTtfNzQrPSI8L2Rpdj4iO3JldHVybiBfNzR9O3RoaXMuaDU9ZnVuY3Rpb24oKXtpZih0aGlzLmYyIT0iY2hhbm5lbCIpe3JldHVybiJJbnRlcm5hbCBlcnJvcjogTm8gbmlja2xpc3QgZm9yIHRoaXMgdHlwZSBvZiB3aW5kb3cgISEhISEhIn12YXIgXzc1PXRoaXMuejAuazEodGhpcy52MCk7aWYoXzc1PT1udWxsKXtyZXR1cm4iIn12YXIgXzc2PV83NS5zNCgpO3ZhciBfNzc9IiI7Zm9yKHZhciB4IGluIF83Nil7Xzc3Kz10aGlzLmQ3KF83Nlt4XSl9cmV0dXJuIF83N307dGhpcy5lNz1mdW5jdGlvbigpe2lmKHRoaXMuZjI9PSJwcml2YXRlIil7cmV0dXJuIG5ldyBBcnJheSh0aGlzLnYwKX1pZih0aGlzLmYyIT0iY2hhbm5lbCIpe3JldHVybiBuZXcgQXJyYXkoKX12YXIgZTA9bmV3IEFycmF5KCk7dmFyIF83YT10aGlzLnowLmsxKHRoaXMudjApO2lmKF83YT09bnVsbCl7cmV0dXJuIiJ9dmFyIF83Yj1fN2EuczQoKTtmb3IoeCBpbiBfN2Ipe2UwLnB1c2goXzdiW3hdLnMwKCkpfXJldHVybiBlMH07dGhpcy5hND1mdW5jdGlvbihkMCl7ZDArPSI8YnIgLz4iO3RoaXMuZzIoMSk7dGhpcy5sMi5wdXNoKGQwKTtpZih0aGlzLmwyLmxlbmd0aD4yMDApe3RoaXMubDIuc2hpZnQoKX1yZXR1cm4gZDB9O3RoaXMuaTU9ZnVuY3Rpb24oKXt0aGlzLmgzPTB9O3RoaXMuZzI9ZnVuY3Rpb24oeCl7aWYodGhpcy5oMzx4KXt0aGlzLmgzPXh9fTt0aGlzLmkzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBcnJheSh0aGlzLmYyLHRoaXMudjApfTt0aGlzLmY3PWZ1bmN0aW9uKCl7aWYodGhpcy5mMj09InN0YXR1cyIpe3JldHVybiJLcmV5TmV0IHdlYmNoYXQgKGMpIDIwMDctMjAxNiAtIFBldGVyIExldXJzIC0gaHR0cDovL3d3dy5rcmV5Lm5ldC8ifXJldHVybiB0aGlzLmE1fTt0aGlzLmo1PWZ1bmN0aW9uKHgpe3RoaXMuYTU9eH19ZnVuY3Rpb24gZzcoKXt0aGlzLmozPWZhbHNlO3RoaXMuYzQ9ZmFsc2U7dGhpcy5vMj0ibm9uZSI7dGhpcy5kND1uZXcgQXJyYXkoKTt0aGlzLms1PW5ldyBoNyhrcmV5Y2hhdGVuZ2luZSx0aGlzKTt0aGlzLmMxPSIiO3RoaXMubDU9ZnVuY3Rpb24oXzdmKXt2YXIgXzgwPV83Zi5zcGxpdChuZXcgUmVnRXhwKCJcbnxcciIpKTtmb3IodmFyIHggaW4gXzgwKXt2YXIgXzgyPV84MFt4XTt2YXIgYzA9XzgyO3ZhciBtMD1jMDtpZihjMC5pbmRleE9mKCIgIik9PS0xKXtjMD0iIn1lbHNle20wPWMwLnN1YnN0cigwLGMwLmluZGV4T2YoIiAiKSk7YzA9YzAuc3Vic3RyKGMwLmluZGV4T2YoIiAiKSsxKX1tMD1tMC50b0xvd2VyQ2FzZSgpO2lmKG0wPT0iZm9yYmlkZGVuY21kIil7dGhpcy5rNS5pNyhjMCk7Y29udGludWV9aWYobTA9PSJzdGFydHVwIil7dGhpcy5kNC5wdXNoKGMwKTtjb250aW51ZX1pZihtMD09Imxhbmd1YWdlIil7aWYoYzAuaW5kZXhPZigiICIpPT0tMSl7Y29udGludWV9ZTA9YzAuc3Vic3RyKDAsYzAuaW5kZXhPZigiICIpKTtjMD1jMC5zdWJzdHIoYzAuaW5kZXhPZigiICIpKzEpO2lmKGUwIT0iYmFubmVyIil7YTBbZTBdPWMwfWNvbnRpbnVlfWFsZXJ0KCJQYXJzZXIgZXJyb3IgaW4gb3B0aW9uczogY291bGQgbm90IHBhcnNlICIrXzgyKX19O3RoaXMuaDI9ZnVuY3Rpb24oXzg1KXtpZihfODU9PSJhc2tOaWNrIil7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtyZXlOZXRCYW5uZXIiKS5pbm5lckhUTUw9YTBbImJhbm5lciJdO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbnRlcm5pY2tuYW1lIikuaW5uZXJIVE1MPWEwWyJlbnRlcm5pY2tuYW1lIl07ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2luYnV0dG9uIikudmFsdWU9YTBbImxvZ2luYnV0dG9uIl19aWYodGhpcy5vMj09ImFza05pY2siKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXNrTmlja05pY2siKS5ibHVyKCl9aWYodGhpcy5vMj09Im1haW5DaGF0Iil7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0SW5wdXRGaWVsZCIpLmJsdXIoKX1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXNrTmljayIpLnN0eWxlLnZpc2liaWxpdHk9KF84NT09ImFza05pY2siKT8idmlzaWJsZSI6ImhpZGRlbiI7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0Iikuc3R5bGUudmlzaWJpbGl0eT0oXzg1PT0ibWFpbkNoYXQiKT8idmlzaWJsZSI6ImhpZGRlbiI7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndhaXRTY3JlZW4iKS5zdHlsZS52aXNpYmlsaXR5PShfODU9PSJ3YWl0U2NyZWVuIik/InZpc2libGUiOiJoaWRkZW4iO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmYXRhbEVycm9yIikuc3R5bGUudmlzaWJpbGl0eT0oXzg1PT0iZmF0YWxFcnJvciIpPyJ2aXNpYmxlIjoiaGlkZGVuIjt0aGlzLm8yPV84NTt0aGlzLnIxKCl9O3RoaXMucjE9ZnVuY3Rpb24oKXtpZih0aGlzLm8yPT0iYXNrTmljayIpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhc2tOaWNrTmljayIpLmZvY3VzKCl9aWYodGhpcy5vMj09Im1haW5DaGF0Iil7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0SW5wdXRGaWVsZCIpLmZvY3VzKCl9fTt0aGlzLm01PWZ1bmN0aW9uKCl7dGhpcy5oMigiYXNrTmljayIpfTt0aGlzLmU0PWZ1bmN0aW9uKCl7dmFyIF84Nj0iIjt2YXIgXzg3PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhc2tOaWNrTmljayIpLnZhbHVlO2lmKF84Ny5sZW5ndGg+a3JleWNoYXRlbmdpbmUuZTMpe184Nj1hMFsibmlja3Rvb2xvbmciXX1mb3IodmFyIGkwPTA7aTA8Xzg3Lmxlbmd0aDtpMCsrKXt2YXIgazM9ZmFsc2U7aWYoXzg3LmNoYXJBdChpMCk+PSJhIiYmXzg3LmNoYXJBdChpMCk8PSJ6Iil7azM9dHJ1ZX1pZihfODcuY2hhckF0KGkwKT49IkEiJiZfODcuY2hhckF0KGkwKTw9IloiKXtrMz10cnVlfWlmKF84Ny5jaGFyQXQoaTApPj0iMCImJl84Ny5jaGFyQXQoaTApPD0iOSIpe2szPXRydWV9aWYoazM9PWZhbHNlKXtfODY9YTBbIm5pY2tpbnZhbGlkIl19fWlmKF84Ny5pbmRleE9mKCIgIikhPS0xKXtfODY9YTBbIm5pY2tzcGFjZXMiXX1pZihfODcuY2hhckF0KDApPj0iMCImJl84Ny5jaGFyQXQoMCk8PSI5Iil7Xzg2PWEwWyJuaWNrc3RhcnRudW1iZXIiXX1pZihfODYhPSIiKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXNrTmlja0Vycm9yIikuaW5uZXJIVE1MPV84NjtyZXR1cm4gdHJ1ZX1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXNrTmlja0Vycm9yIikuaW5uZXJIVE1MPSImbmJzcDsiO3JldHVybiBmYWxzZX07dGhpcy5uaWNrTmFtZVN1Ym1pdD1mdW5jdGlvbigpe2lmKHRoaXMuZTQoKSl7cmV0dXJufXZhciBfOGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFza05pY2tOaWNrIikudmFsdWU7aWYoXzhhLmxlbmd0aDwyKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXNrTmlja0Vycm9yIikuaW5uZXJIVE1MPWEwWyJuaWNrbWluMmNoYXIiXTtyZXR1cm59aWYoXzhhLnRvVXBwZXJDYXNlKCk9PV84YSl7XzhhPV84YS50b0xvd2VyQ2FzZSgpfWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3YWl0U2NyZWVuTXNnIikuaW5uZXJIVE1MPWEwWyJ3YWl0bXNnIl07dGhpcy5oMigid2FpdFNjcmVlbiIpO3ZhciBlMD1uZXcgRGF0ZSgpO2UwLnNldFRpbWUoZTAuZ2V0VGltZSgpKyg2MCoyNCo2MCo2MCoxMDAwKSk7ZG9jdW1lbnQuY29va2llPSJuaWNrPSIrXzhhKyI7IGV4cGlyZXM9IitlMC50b0dNVFN0cmluZygpKyI7IHBhdGg9LyI7dGhpcy5uMT10aGlzLmwzKCJzdGF0dXMiLGEwWyJzdGF0dXN3aW5kb3ciXSk7dGhpcy5vMD10aGlzLm4xO3RoaXMueTA9dGhpcy5sMygiZGVidWciLCJEZWJ1Zy9SYXciKTt0aGlzLnAyKCk7a3JleWNoYXRlbmdpbmUubjYodGhpcyk7a3JleWNoYXRlbmdpbmUuczYoXzhhLGEwWyJ1c2VybmFtZSJdLGEwWyJyZWFsbmFtZSJdKTtmb3IoeCBpbiB0aGlzLmQ0KXtrcmV5Y2hhdGVuZ2luZS5kMih0aGlzLmQ0W3hdKX19O3RoaXMubmlja05hbWVLZXlQcmVzcz1mdW5jdGlvbigpe3RoaXMuZTQoKTt3aW5kb3cuc2V0VGltZW91dCh0aGlzLmU0LDEwMCl9O3RoaXMuaW5wdXRTdWJtaXQ9ZnVuY3Rpb24oKXt3aW5kb3cuc2V0VGltZW91dCgia3JleWNoYXRsYXlvdXQuaW5wdXRTdWJtaXQyKCkiLDEwKX07dGhpcy5pbnB1dFN1Ym1pdDI9ZnVuY3Rpb24oKXt2YXIgXzhjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ2hhdElucHV0RmllbGQiKTt2YXIgYzA9XzhjLnZhbHVlO2FjLmo3KGMwKTtfOGMudmFsdWU9IiI7dGhpcy5yMSgpO3RoaXMuZzMoYzApfTt0aGlzLmczPWZ1bmN0aW9uKGMwKXt0aGlzLms1Lms3KHRoaXMubzAsYzApfTt0aGlzLm0zPWZhbHNlO3RoaXMubjM9MDt0aGlzLmY0PTEwMDt0aGlzLmRyYWdnZXJTdGFydD1mdW5jdGlvbihhMSl7aWYodGhpcy5vMD09bnVsbCl7cmV0dXJufWlmKCF0aGlzLm8wLmQ1KCkpe3JldHVybn10aGlzLm0zPXRydWU7aWYoYTEucGFnZVg+MCl7dGhpcy5uMz1hMS5wYWdlWH1lbHNle3RoaXMubjM9YTEuc2NyZWVuWH19O3RoaXMuZHJhZ2dlck1vdmU9ZnVuY3Rpb24oYTEpe3ZhciBfOTE9MDtpZihhMS5wYWdlWD4wKXtfOTE9YTEucGFnZVh9ZWxzZXtfOTE9YTEuc2NyZWVuWH1pZih0aGlzLm0zPT1mYWxzZSl7cmV0dXJufXZhciBfOTI9dGhpcy5mNCt0aGlzLm4zLV85MTtpZihfOTI8NTApe3JldHVybn1pZihfOTE8MTUwKXtyZXR1cm59dGhpcy5mND1fOTI7dGhpcy5uMz1fOTE7dGhpcy5sYXlPdXRTY3JlZW4oKX07dGhpcy5kcmFnZ2VyRW5kPWZ1bmN0aW9uKGExKXtpZih0aGlzLm0zKXt0aGlzLm0zPWZhbHNlO3RoaXMucjEoKX19O3RoaXMubGF5T3V0U2NyZWVuPWZ1bmN0aW9uKCl7dmFyIF85ND1mYWxzZTtpZih0aGlzLm8wIT1udWxsKXtpZih0aGlzLm8wLmQ1KCk9PXRydWUpe185ND10cnVlfX12YXIgXzk1PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ2hhdCIpO3ZhciBfOTY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0V2luZG93Iik7dmFyIF85Nz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbkNoYXROaWNrbGlzdCIpO3ZhciBfOTg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0RHJhZ2dlciIpO3ZhciBfOTk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0SW5wdXRDb250YWluZXIiKTt2YXIgXzlhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ2hhdFRvcGljQmFyIik7dmFyIF85Yj10aGlzLmY0O2lmKF85ND09ZmFsc2Upe185Yj0wO185OC5zdHlsZS5ib3JkZXJMZWZ0PSJub25lIn1lbHNle185OC5zdHlsZS5ib3JkZXJMZWZ0PSIxcHggc29saWQgI2IzYjNiMyJ9dmFyIF85Yz1fOTUuY2xpZW50V2lkdGgtMztfOWM9XzljLV85Yjt2YXIgXzlkPV85NS5jbGllbnRIZWlnaHQtXzk5LmNsaWVudEhlaWdodDtfOWQ9XzlkLV85YS5jbGllbnRIZWlnaHQ7XzlkPV85ZC0xO185Ni5zdHlsZS50b3A9XzlhLmNsaWVudEhlaWdodCsicHgiO3ZhciBlMD1fOWMtMztfOTYuc3R5bGUud2lkdGg9ZTArInB4IjtlMD1fOWQtMztfOTYuc3R5bGUuaGVpZ2h0PWUwKyJweCI7Xzk4LnN0eWxlLnRvcD1fOWEuY2xpZW50SGVpZ2h0KyJweCI7Xzk4LnN0eWxlLmxlZnQ9XzljKyJweCI7Xzk4LnN0eWxlLmhlaWdodD1fOWQrInB4IjtfOTcuc3R5bGUudG9wPV85YS5jbGllbnRIZWlnaHQrInB4IjtfOTcuc3R5bGUud2lkdGg9XzliKyJweCI7ZTA9XzlkLTM7Xzk3LnN0eWxlLmhlaWdodD1lMCsicHgiO3ZhciBfOWY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0SW5wdXRGaWVsZCIpO3ZhciBfYTA9Xzk1LmNsaWVudFdpZHRoLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ2hhdElucHV0U2VudCIpLmNsaWVudFdpZHRoLTEwO185Zi5zdHlsZS53aWR0aD1fYTArInB4IjtfOTYuc2Nyb2xsVG9wPV85Ni5zY3JvbGxIZWlnaHQtXzk2LmNsaWVudEhlaWdodH07dGhpcy5uMD1uZXcgQXJyYXkoKTt0aGlzLm8wPW51bGw7dGhpcy5uMT1udWxsO3RoaXMueTA9bnVsbDt0aGlzLmwzPWZ1bmN0aW9uKF9hMSxfYTIpe3ZhciBfYTM9bmV3IGE3KF9hMSxfYTIsa3JleWNoYXRlbmdpbmUpO3RoaXMubjAucHVzaChfYTMpO2lmKHRoaXMubjAuc2l6ZT09MSl7dGhpcy5vMD1fYTN9cmV0dXJuIF9hM307dGhpcy5uNT1mdW5jdGlvbihfYTQpe2lmKF9hND09dGhpcy5vMCl7dmFyIF9hNT1udWxsO2Zvcih2YXIgeCBpbiB0aGlzLm4wKXtpZih0aGlzLm4wW3hdIT1fYTQmJnRoaXMubjBbeF0hPXRoaXMueTApe19hNT10aGlzLm4wW3hdfX10aGlzLnEyKF9hNSl9Zm9yKHZhciB4IGluIHRoaXMubjApe2lmKHRoaXMubjBbeF09PV9hNCl7ZGVsZXRlIHRoaXMubjBbeF19fXRoaXMucDIoKX07dGhpcy5yMD1mdW5jdGlvbihfYTcpe2Zvcih2YXIgeCBpbiB0aGlzLm4wKXt2YXIgX2E5PXRoaXMubjBbeF0uaTMoKTtpZigoX2E5WzBdPT0iY2hhbm5lbCIpJiYoX2E5WzFdLnRvTG93ZXJDYXNlKCk9PV9hNy50b0xvd2VyQ2FzZSgpKSl7cmV0dXJuIHRoaXMubjBbeF19fXJldHVybiBudWxsfTt0aGlzLnIyPWZ1bmN0aW9uKF9hYSl7dmFyIHMyPXRoaXMucjAoX2FhKTtpZihzMiE9bnVsbCl7cmV0dXJuIHMyfXJldHVybiB0aGlzLmwzKCJjaGFubmVsIixfYWEpfTt0aGlzLm81PWZ1bmN0aW9uKF9hYyl7Zm9yKHZhciB4IGluIHRoaXMubjApe3ZhciBfYWU9dGhpcy5uMFt4XS5pMygpO2lmKChfYWVbMF09PSJwcml2YXRlIikmJihfYWVbMV0udG9Mb3dlckNhc2UoKT09X2FjLnRvTG93ZXJDYXNlKCkpKXtyZXR1cm4gdGhpcy5uMFt4XX19cmV0dXJuIG51bGx9O3RoaXMudzE9ZnVuY3Rpb24oX2FmKXt2YXIgczI9dGhpcy5vNShfYWYpO2lmKHMyIT1udWxsKXtyZXR1cm4gczJ9cmV0dXJuIHRoaXMubDMoInByaXZhdGUiLF9hZil9O3RoaXMuY2xpY2tTd2l0Y2hCdXR0b249ZnVuY3Rpb24oX2IxKXt0aGlzLnEyKHRoaXMubjBbX2IxXSk7dGhpcy5yMSgpfTt0aGlzLmc0PWZ1bmN0aW9uKHgpe2lmKHghPXRoaXMubzApe3JldHVybn1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9waWMiKS5pbm5lckhUTUw9dGhpcy5tMSh0aGlzLm8wLmY3KCkpfTt0aGlzLnA1PWZ1bmN0aW9uKF9iMyxkMCl7X2IzLm4yPTE7X2IzLmI1PWQwO3RoaXMuaDQoX2IzKX07dGhpcy5sNz1mdW5jdGlvbihfYjUpe19iNS5uMj0wO2lmKF9iNT09dGhpcy5vMCl7dGhpcy5oNChfYjUpfX07dGhpcy5xMj1mdW5jdGlvbihfYjYpe2lmKF9iNj09dGhpcy5vMCl7cmV0dXJufXRoaXMuaDQoX2I2KX07dGhpcy5oND1mdW5jdGlvbihfYjcpe3RoaXMubzAuaTUoKTt0aGlzLm8wPV9iNzt0aGlzLm8wLmk1KCk7dGhpcy5wMigpO3ZhciBfYjg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0V2luZG93Iik7X2I4LnNjcm9sbFRvcD0wO19iOC5pbm5lckhUTUw9dGhpcy5vMC5jNygpO3ZhciBfYjk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0Tmlja2xpc3QiKTtfYjkuaW5uZXJIVE1MPXRoaXMubzAuaDUoKTt0aGlzLnE1KCk7X2I4LnNjcm9sbFRvcD1fYjguc2Nyb2xsSGVpZ2h0LV9iOC5jbGllbnRIZWlnaHQ7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtfYjguc2Nyb2xsVG9wPV9iOC5zY3JvbGxIZWlnaHQtX2I4LmNsaWVudEhlaWdodH0sMTApO3RoaXMuZzQodGhpcy5vMCl9O3RoaXMubTc9ZnVuY3Rpb24odDApe3ZhciBlMD10aGlzLm4wW3QwXS5jNSgpO2Zvcih2YXIgeD0wO3g8ZTAubGVuZ3RoO3grKyl7dmFyIGwwPWUwLmNoYXJBdCh4KS50b0xvd2VyQ2FzZSgpO2lmKGwwLnNlYXJjaChuZXcgUmVnRXhwKCJbYS16XSIsIiIpKSE9MCl7Y29udGludWV9Zm9yKHZhciBwMCBpbiB0aGlzLm4wKXtpZih0aGlzLm4wW3AwXS52MT09bDApe2wwPSIifX1pZihsMCE9IiIpe3RoaXMubjBbdDBdLnYxPWwwO3JldHVybn19dGhpcy5uMFt0MF0udjE9IiJ9O3RoaXMucDI9ZnVuY3Rpb24oKXt2YXIgX2JmPSIiO2Zvcih2YXIgdDAgaW4gdGhpcy5uMCl7aWYodGhpcy5uMFt0MF0hPXRoaXMueTB8fHRoaXMuYzQpe3ZhciB4PXRoaXMubjBbdDBdLmI3KCk7X2JmKz0iPGJ1dHRvbiBjbGFzcz0iO2lmKHRoaXMubjBbdDBdPT10aGlzLm8wKXtfYmYrPSJhY3RpdmUifWVsc2V7X2JmKz0iYWN0aXZpdHkiK3h9X2JmKz0nIG9uY2xpY2s9ImtyZXljaGF0bGF5b3V0LmNsaWNrU3dpdGNoQnV0dG9uKCc7X2JmKz10MDtfYmYrPScpIic7aWYodGhpcy5uMFt0MF0udjE9PW51bGwpe3RoaXMubTcodDApfXZhciBlMD10aGlzLm4wW3QwXS5jNSgpLnJlcGxhY2UobmV3IFJlZ0V4cCgiJiIsImciKSwiJmFtcCIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiPiIsImciKSwiJmd0OyIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiPCIsImciKSwiJmx0OyIpO2lmKHRoaXMubjBbdDBdLnYxIT0iIil7X2JmKz0nIGFjY2Vzc2tleT0iJztfYmYrPXRoaXMubjBbdDBdLnYxO19iZis9JyInO3ZhciBsMD1lMC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5uMFt0MF0udjEpO2UwPWUwLnN1YnN0cigwLGwwKSsiPHU+IitlMC5zdWJzdHIobDAsMSkrIjwvdT4iK2UwLnN1YnN0cihsMCsxKX1fYmYrPSI+IjtfYmYrPWUwO19iZis9IjwvYnV0dG9uPiJ9fWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ2hhdFN3aXRjaEJhciIpLmlubmVySFRNTD1fYmY7dGhpcy5sYXlPdXRTY3JlZW4oKX07dGhpcy5oMD1mdW5jdGlvbihfYzQsX2M1KXtfYzU9X2M0LmE0KF9jNSk7aWYoX2M0PT10aGlzLm8wKXtpZihfYzQubjI9PTApe28zPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ2hhdFdpbmRvdyIpO28zLmlubmVySFRNTCs9X2M1O28zLnNjcm9sbFRvcD1vMy5zY3JvbGxIZWlnaHQtbzMuY2xpZW50SGVpZ2h0fX10aGlzLnAyKCl9O3RoaXMuejM9ZnVuY3Rpb24oX2M2LF9jNyl7aWYoX2M2PT0iaW4iKXt0aGlzLmgwKHRoaXMueTAsIi0tLSA8Zm9udCBjb2xvcj1ibHVlPiIrdGhpcy5tMShfYzcpKyI8L2ZvbnQ+Iil9ZWxzZXt0aGlzLmgwKHRoaXMueTAsIi0tLSA8Zm9udCBjb2xvcj1yZWQ+Iit0aGlzLm0xKF9jNykrIjwvZm9udD4iKX19O3RoaXMueTQ9ZnVuY3Rpb24oX2M4KXt0aGlzLmgwKHRoaXMueTAsIjxoMj4iK19jOCsiPC9oMj4iKX07dGhpcy5Ccm93c2VyQ2xvc2VDaGF0PWZ1bmN0aW9uKCl7aWYodGhpcy5qMyl7a3JleWNoYXRlbmdpbmUudjYoIlFVSVQgOiIrYTBbImRlZnF1aXRyZWFzb24iXSl9fTt0aGlzLmcwPWZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzWzBdPT0iY2hhbm1zZyIpe3ZhciBfYzk9dGhpcy5yMChhcmd1bWVudHNbMl0pO3ZhciBkMD10aGlzLm0xKGFyZ3VtZW50c1szXSk7dmFyIF9jYj1rcmV5Y2hhdGVuZ2luZS5qMSgpLnRvTG93ZXJDYXNlKCk7dmFyIHg9ZDAudG9Mb3dlckNhc2UoKS5pbmRleE9mKF9jYik7aWYoeD09LTEpe19jOS5nMigyKX1lbHNle2QwPWQwLnN1YnN0cigwLHgpKyc8c3BhbiBjbGFzcz0iaGlsaWdodHdvcmQiPicrZDAuc3Vic3RyKHgsX2NiLmxlbmd0aCkrIjwvc3Bhbj4iK2QwLnN1YnN0cih4K19jYi5sZW5ndGgpO19jOS5nMigzKX1kMD1kMC5yZXBsYWNlKG5ldyBSZWdFeHAoIiUiLCJnIiksIiUlIik7dGhpcy5oMChfYzksJzxzcGFuIGNsYXNzPSJtc2ciPicrdGhpcy5qMCgiJmx0OyUxJmd0OyAiK2QwLGFyZ3VtZW50c1sxXSkrIjwvc3Bhbj4iKTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0icHJpdmF0ZW1zZyIpe3ZhciBfYzk9dGhpcy53MShhcmd1bWVudHNbMV0pO19jOS5nMigzKTt0aGlzLmgwKF9jOSwnPHNwYW4gY2xhc3M9Im1zZyI+Jyt0aGlzLmowKCImbHQ7JTEmZ3Q7ICUyIixhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJzZWxmY2hhbm1zZyIpe2lmKHRoaXMucjAoYXJndW1lbnRzWzFdKSE9bnVsbCl7dGhpcy5oMCh0aGlzLnIwKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJtc2ciPicrdGhpcy5qMCgiJmx0OyUxJmd0OyAlMiIsa3JleWNoYXRlbmdpbmUuajEoKSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iil9cmV0dXJufWlmKGFyZ3VtZW50c1swXT09InNlbGZwcml2bXNnIil7dGhpcy5oMCh0aGlzLncxKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJtc2ciPicrdGhpcy5qMCgiJmx0OyUxJmd0OyAlMiIsa3JleWNoYXRlbmdpbmUuajEoKSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09ImNoYW5ub3RpY2UiKXt2YXIgX2M5PXRoaXMucjAoYXJndW1lbnRzWzJdKTtpZihfYzkhPW51bGwpe19jOS5nMigyKTt0aGlzLmgwKF9jOSwnPHNwYW4gY2xhc3M9Im5vdGljZSI+Jyt0aGlzLmowKCItJTEtICUyIixhcmd1bWVudHNbMV0sYXJndW1lbnRzWzNdKSsiPC9zcGFuPiIpfXJldHVybn1pZihhcmd1bWVudHNbMF09PSJwcml2YXRlbm90aWNlIil7dmFyIF9jOT10aGlzLncxKGFyZ3VtZW50c1sxXSk7X2M5LmcyKDIpO3RoaXMuaDAoX2M5LCc8c3BhbiBjbGFzcz0ibm90aWNlIj4nK3RoaXMuajAoIi0lMS0gJTIiLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09InNlbGZjaGFubm90aWNlIil7dGhpcy5oMCh0aGlzLnIwKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJub3RpY2UiPicrdGhpcy5qMCgiLSUxLSAlMiIsa3JleWNoYXRlbmdpbmUuajEoKSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09InNlbGZwcml2bm90aWNlIil7dGhpcy5oMCh0aGlzLncxKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJub3RpY2UiPicrdGhpcy5qMCgiLSUxLSAlMiIsa3JleWNoYXRlbmdpbmUuajEoKSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09InByaXZhdGVjdGNwIil7aWYoYXJndW1lbnRzWzJdPT0iQUNUSU9OIil7dGhpcy5oMCh0aGlzLncxKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJhY3Rpb24iPicrdGhpcy5qMCgiKiAlMSAlMiIsYXJndW1lbnRzWzFdLGFyZ3VtZW50c1szXSkrIjwvc3Bhbj4iKTtyZXR1cm59dGhpcy5oMCh0aGlzLnkwLCI8aDE+RVJST1IsIFVOS05PV04gZXZlbnQ8L2gxPiIrYXJndW1lbnRzWzFdKX1pZihhcmd1bWVudHNbMF09PSJjaGFuY3RjcCIpe2lmKGFyZ3VtZW50c1szXT09IkFDVElPTiIpe3RoaXMuaDAodGhpcy5yMChhcmd1bWVudHNbMl0pLCc8c3BhbiBjbGFzcz0iYWN0aW9uIj4nK3RoaXMuajAoIiogJTEgJTIiLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbNF0pKyI8L3NwYW4+Iik7cmV0dXJufXRoaXMuaDAodGhpcy55MCwiPGgxPkVSUk9SLCBVTktOT1dOIGV2ZW50PC9oMT4iK2FyZ3VtZW50c1sxXSl9aWYoYXJndW1lbnRzWzBdPT0ic2VsZmNoYW5jdGNwIil7aWYoYXJndW1lbnRzWzJdPT0iQUNUSU9OIil7dGhpcy5oMCh0aGlzLnIwKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJhY3Rpb24iPicrdGhpcy5qMCgiKiAlMSAlMiIsa3JleWNoYXRlbmdpbmUuajEoKSxhcmd1bWVudHNbM10pKyI8L3NwYW4+Iik7cmV0dXJufXRoaXMuaDAodGhpcy55MCwiPGgxPkVSUk9SLCBVTktOT1dOIGV2ZW50PC9oMT4iK2FyZ3VtZW50cyl9aWYoYXJndW1lbnRzWzBdPT0ic2VsZnByaXZjdGNwIil7aWYoYXJndW1lbnRzWzJdPT0iQUNUSU9OIil7dGhpcy5oMCh0aGlzLm81KGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJhY3Rpb24iPicrdGhpcy5qMCgiKiAlMSAlMiIsa3JleWNoYXRlbmdpbmUuajEoKSxhcmd1bWVudHNbM10pKyI8L3NwYW4+Iik7cmV0dXJufXRoaXMuaDAodGhpcy55MCwiPGgxPkVSUk9SLCBVTktOT1dOIGV2ZW50PC9oMT4iK2FyZ3VtZW50cyl9aWYoYXJndW1lbnRzWzBdPT0ic3RhcnRjb21tdW5pY2F0aW9uIil7dGhpcy5oMCh0aGlzLm4xLCc8c3BhbiBjbGFzcz0ic3RhdHVzbm9ybWFsIj4nK2EwWyJjb25uZWN0aW5nIl0rIjwvc3Bhbj4iKTt0aGlzLmgwKHRoaXMueTAsJzxhIGhyZWY9ImphdmFzY3JpcHQ6Y29sb3JpemVGb3JUZXN0aW5nKCk7Ij5kZWJ1ZyBkaXZzIGluIGRvY3VtZW50PC9hPicpO3RoaXMuaDAodGhpcy55MCwnPGEgaHJlZj0iamF2YXNjcmlwdDprcmV5Y2hhdGxheW91dC5Ccm93c2VyQ2xvc2VDaGF0KCk7Ij5kZWJ1ZyBxdWljayBxdWl0PC9hPicpO3RoaXMuajM9dHJ1ZTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0ibW90ZHN0YXJ0Iil7dGhpcy5oMCh0aGlzLm4xLCc8c3BhbiBjbGFzcz0ic3RhdHVzbm9ybWFsIj4nK2EwWyJtb3Rkc3RhcnQiXSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJtb3RkbGluZSIpe3RoaXMuaDAodGhpcy5uMSwnPHByZSBzdHlsZT0iZGlzcGxheTogaW5saW5lOyI+Jyt0aGlzLm0xKGFyZ3VtZW50c1sxXSkrIjwvcHJlPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJtb3RkZW5kIil7dGhpcy5oMCh0aGlzLm4xLCc8c3BhbiBjbGFzcz0ic3RhdHVzbm9ybWFsIj4nK2EwWyJtb3RkZW5kIl0rIjwvc3Bhbj4iKTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0icHJlam9pbiIpe3ZhciBfY2Q9dGhpcy5yMihhcmd1bWVudHNbMV0pO3RoaXMucDUoX2NkLCc8aW1nIHNyYz0iaW1hZ2VzL3dhaXQuZ2lmIj4gJm5ic3A7ICcrYTBbIndhaXRqb2luIl0pO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJjYW5ub3Rfam9pbiIpe3ZhciBfY2Q9dGhpcy5yMihhcmd1bWVudHNbMl0pO3ZhciB4PWEwWyJjYW5ub3Rfam9pbl8iK2FyZ3VtZW50c1sxXV07aWYoIXgpe3g9YTBbImNhbm5vdF9qb2luIl19dmFyIGQwPXRoaXMuajAoeCxhcmd1bWVudHNbMl0pO3ZhciB4PWEwWyJ0cnlyZWpvaW5fIithcmd1bWVudHNbMV1dO2lmKCF4KXt4PWEwWyJ0cnlyZWpvaW4iXX1kMCs9IjxwPiI7ZDArPXRoaXMuajAoeCxhcmd1bWVudHNbMl0pO3RoaXMucDUoX2NkLGQwKTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0ibWVqb2luY2hhbm5lbCIpe3ZhciBfY2Q9dGhpcy5yMihhcmd1bWVudHNbMV0pO3RoaXMubDcoX2NkKTt0aGlzLmgwKF9jZCwnPHNwYW4gY2xhc3M9ImNoYW5nZXMiPicrdGhpcy5qMChhMFsic2VsZmpvaW5jaGFubmVsIl0sYXJndW1lbnRzWzFdKSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJvdGhlcmpvaW5jaGFubmVsIil7dGhpcy5oMCh0aGlzLnIwKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJjaGFuZ2VzIj4nK3RoaXMuajAoYTBbIm90aGVyam9pbmNoYW5uZWwiXSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09InJlZnJlc2huaWNrbGlzdCIpe2lmKHRoaXMubzA9PXRoaXMucjAoYXJndW1lbnRzWzFdKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5DaGF0Tmlja2xpc3QiKS5pbm5lckhUTUw9dGhpcy5vMC5oNSgpO3RoaXMucTUoKX1yZXR1cm59aWYoYXJndW1lbnRzWzBdPT0ibGVhdmVfcXVpdCIpe3RoaXMuaDAodGhpcy5yMChhcmd1bWVudHNbMV0pLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJvdGhlcnF1aXRjaGFubmVsIl0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSkrIjwvc3Bhbj4iKTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0ibGVhdmVfcGFydCIpe3RoaXMuaDAodGhpcy5yMChhcmd1bWVudHNbMV0pLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJvdGhlcnBhcnRjaGFubmVsIl0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSkrIjwvc3Bhbj4iKTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0ibGVhdmVfa2ljayIpe3RoaXMuaDAodGhpcy5yMChhcmd1bWVudHNbMV0pLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJraWNrY2hhbm5lbCJdLGFyZ3VtZW50c1syXSxhcmd1bWVudHNbNF0sYXJndW1lbnRzWzNdKSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJ5b3VsZWF2ZV9wYXJ0Iil7dmFyIF9jZD10aGlzLnIwKGFyZ3VtZW50c1sxXSk7dGhpcy5uNShfY2QpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJ5b3VsZWF2ZV9raWNrIil7dmFyIF9jZD10aGlzLnIwKGFyZ3VtZW50c1sxXSk7dGhpcy5oMCh0aGlzLnIwKGFyZ3VtZW50c1sxXSksJzxzcGFuIGNsYXNzPSJjaGFuZ2VzIj4nK3RoaXMuajAoYTBbInlvdWFyZWtpY2tlZCJdLGFyZ3VtZW50c1szXSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09Im5pY2tjaGFuZ2VfY2hhbm5lbCIpe3RoaXMuaDAodGhpcy5yMChhcmd1bWVudHNbMV0pLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJvdGhlcm5pY2tjaGFuZ2UiXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdKSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJteV9uaWNrY2hhbmdlX2NoYW5uZWwiKXt0aGlzLmgwKHRoaXMucjAoYXJndW1lbnRzWzFdKSwnPHNwYW4gY2xhc3M9ImNoYW5nZXMiPicrdGhpcy5qMChhMFsic2VsZm5pY2tjaGFuZ2UiXSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09Im5pY2tjaGFuZ2UiKXtpZihrcmV5Y2hhdGVuZ2luZS5qMSgpPT1hcmd1bWVudHNbMl0pe3RoaXMuaDAodGhpcy5uMSwnPHNwYW4gY2xhc3M9ImNoYW5nZXMiPicrdGhpcy5qMChhMFsic2VsZm5pY2tjaGFuZ2UiXSxhcmd1bWVudHNbMl0pKyI8L3NwYW4+Iil9cmV0dXJufWlmKGFyZ3VtZW50c1swXT09Im1vZGVfY2hhbm5lbCIpe3RoaXMuaDAodGhpcy5yMChhcmd1bWVudHNbMl0pLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJtb2RlY2hhbm5lbCJdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbM10pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09Im1vZGVfb3duIil7dGhpcy5oMCh0aGlzLm4xLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJtb2RlY2hhbm5lbCJdLGtyZXljaGF0ZW5naW5lLmoxKCksYXJndW1lbnRzWzFdKSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJjb3VsZG5vdHNlbmRfY2hhbm5lbCIpe3RoaXMuaDAodGhpcy5yMChhcmd1bWVudHNbMV0pLCc8c3BhbiBjbGFzcz0iZXJyb3IiPicrdGhpcy5qMChhMFsidW5hYmxldG9zcGVhayJdKSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJjb3VsZG5vdHNlbmRfbmljayIpe3RoaXMuaDAodGhpcy53MShhcmd1bWVudHNbMV0pLCc8c3BhbiBjbGFzcz0iZXJyb3IiPicrdGhpcy5qMChhMFsibm9zdWNodGFyZ2V0Il0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09Im5vY3VycmVudHRhcmdldCIpe3RoaXMuaDAodGhpcy5vMCwnPHNwYW4gY2xhc3M9ImVycm9yIj4nK3RoaXMuajAoYTBbIm5vY3VycmVudHRhcmdldCJdKSsiPC9zcGFuPiIpO3JldHVybn1pZihhcmd1bWVudHNbMF09PSJub3RpbXBsZW1lbnRlZGNtZCIpe3RoaXMuaDAodGhpcy5vMCwnPHNwYW4gY2xhc3M9ImVycm9yIj4nK3RoaXMuajAoYTBbIm5vc3VjaGNtZCJdLGFyZ3VtZW50c1sxXSkrIjwvc3Bhbj4iKTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0ibm90YWxsb3dlZGNtZCIpe3RoaXMuaDAodGhpcy5vMCwnPHNwYW4gY2xhc3M9ImVycm9yIj4nK3RoaXMuajAoYTBbIm5vdGFsbG93ZWRjbWQiXSxhcmd1bWVudHNbMV0pKyI8L3NwYW4+Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09InNob3dlcnJvciIpe3RoaXMuaDAodGhpcy5vMCwnPHNwYW4gY2xhc3M9ImVycm9yIj4nK3RoaXMuajAoYTBbYXJndW1lbnRzWzFdXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdLGFyZ3VtZW50c1s0XSxhcmd1bWVudHNbNV0sYXJndW1lbnRzWzZdLGFyZ3VtZW50c1s3XSkrIjwvc3Bhbj4iKTtyZXR1cm59aWYoYXJndW1lbnRzWzBdPT0idG9waWNpcyIpe3ZhciBfY2Q9dGhpcy5yMihhcmd1bWVudHNbMV0pO3RoaXMuaDAoX2NkLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJ0b3BpY2lzIl0sYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSkrIjwvc3Bhbj4iKTtfY2QuajUoYXJndW1lbnRzWzJdKTt0aGlzLmc0KF9jZCk7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09InRvcGljY2hhbmdlZCIpe3ZhciBfY2Q9dGhpcy5yMihhcmd1bWVudHNbMV0pO3RoaXMuaDAoX2NkLCc8c3BhbiBjbGFzcz0iY2hhbmdlcyI+Jyt0aGlzLmowKGEwWyJ0b3BpY2NoYW5nZWQiXSxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdLGFyZ3VtZW50c1szXSkrIjwvc3Bhbj4iKTtfY2QuajUoYXJndW1lbnRzWzJdKTt0aGlzLmc0KF9jZCk7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09ImVuZGNvbW11bmljYXRpb24iKXt0aGlzLmozPWZhbHNlO3RoaXMuaDIoImZhdGFsRXJyb3IiKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmF0YWxFcnJvclRleHQiKS5pbm5lckhUTUw9YTBbImNoYXRlbmRlZCJdfWlmKGFyZ3VtZW50c1swXT09ImZhdGFsZW5kY29tbXVuaWNhdGlvbiIpe3RoaXMuajM9ZmFsc2U7dGhpcy5oMigiZmF0YWxFcnJvciIpO2lmKGFyZ3VtZW50c1sxXT09IiIpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmYXRhbEVycm9yVGV4dCIpLmlubmVySFRNTD1hMFsiY2hhdGVuZGVkZXJyb3IiXX1lbHNle2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmYXRhbEVycm9yVGV4dCIpLmlubmVySFRNTD10aGlzLmowKGEwWyJjaGF0ZW5kZWRlcnJvcm1zZyJdLGFyZ3VtZW50c1sxXSl9fWlmKGFyZ3VtZW50c1swXT09InN0YXJ0ZWRxdWl0dGluZyIpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3YWl0U2NyZWVuTXNnIikuaW5uZXJIVE1MPWEwWyJ3YWl0cXVpdG1zZyJdO3RoaXMuaDIoIndhaXRTY3JlZW4iKX1pZihhcmd1bWVudHNbMF09PSJsb2dvbmNvbXBsZXRlZCIpe3RoaXMuaDIoIm1haW5DaGF0Iik7cmV0dXJufWlmKGFyZ3VtZW50c1swXT09Im51bWVyaWNfaW5mb3JtYXRpb24iKXt2YXIgZTA9dGhpcy5uNyhhcmd1bWVudHNbMV0pO2lmKGUwIT1udWxsKXt0aGlzLmgwKHRoaXMubjEsZTApfXJldHVybn10aGlzLmgwKHRoaXMueTAsIjxoMT5FUlJPUiwgVU5LTk9XTiBldmVudDwvaDE+Iithcmd1bWVudHNbMF0pfTt0aGlzLm0xPWZ1bmN0aW9uKGQwKXtlMD1uZXcgZDYoKTtyZXR1cm4gZTAubTEoZDApfTt0aGlzLmowPWZ1bmN0aW9uKCl7dmFyIF9kMD0iIjt2YXIgZDA9YXJndW1lbnRzWzBdO2Zvcih2YXIgeD0wO3g8ZDAubGVuZ3RoO3grKyl7aWYoZDAuY2hhckF0KHgpPT0iJSIpe3grKztpZihkMC5jaGFyQXQoeCk9PSIlIil7X2QwKz0iJSJ9ZWxzZXt2YXIgZTA9ZDAuY2hhckF0KHgpO2UwKj0xO2UwPWFyZ3VtZW50c1tlMF07X2QwKz10aGlzLm0xKGUwKX19ZWxzZXtfZDArPWQwLmNoYXJBdCh4KX19cmV0dXJuIF9kMH07dGhpcy5uNz1mdW5jdGlvbihkMCl7aWYoZDBbMV09PSIzMTEiKXtpZih0aGlzLmMxIT0iIil7dGhpcy5jMSs9IjwvdGFibGU+PGJyPiJ9dGhpcy5jMSs9Ijxicj4iK3RoaXMuajAoYTBbIndob2lzX251aCJdLGQwWzNdLGQwWzRdLGQwWzVdKTt0aGlzLmMxKz0iPGJyPjx0YWJsZSBib3JkZXI9MD4iO3RoaXMuYzErPXRoaXMuajAoYTBbIndob2lzX2lyY25hbWUiXSxkMFs3XSk7cmV0dXJuIG51bGx9aWYoZDBbMV09PSIzMTIiKXt0aGlzLmMxKz10aGlzLmowKGEwWyJ3aG9pc19zZXJ2ZXIiXSxkMFs0XSxkMFs1XSk7cmV0dXJuIG51bGx9aWYoZDBbMV09PSIzMTciKXt0aGlzLmMxKz10aGlzLmowKGEwWyJ3aG9pc190aW1lcyJdLHRoaXMubzcoZDBbNF0pLHRoaXMucDcoZDBbNV0pKTtyZXR1cm4gbnVsbH1pZihkMFsxXT09IjMxOCIpe3RoaXMuYzErPSI8L3RhYmxlPiI7dGhpcy5jMSs9dGhpcy5qMChhMFsid2hvaXNfZW5kIl0pO3ZhciBlMD10aGlzLmMxO3RoaXMuYzE9IiI7cmV0dXJuIGUwfWlmKGQwWzFdPT0iMzE5Iil7dGhpcy5jMSs9dGhpcy5qMChhMFsid2hvaXNfY2hhbm5lbCJdLGQwWzRdKTtyZXR1cm4gbnVsbH12YXIgZTA9IiI7Zm9yKHZhciB4IGluIGQwKXtpZih4IT0wJiZ4IT0xJiZ4IT0yKXtlMCs9dGhpcy5tMShkMFt4XSk7ZTArPSIgIn19cmV0dXJuIGUwfTt0aGlzLm83PWZ1bmN0aW9uKGQwKXt2YXIgZTA9IiI7dmFyIHg9MDt4PWQwJTYwO2QwLz02MDtkMD1wYXJzZUludChkMCk7ZTA9eCsiIHNlY29uZHMiO3g9ZDAlNjA7ZDAvPTYwO2QwPXBhcnNlSW50KGQwKTtpZih4IT0wKXtlMD14KyIgbWludXRlcywgIitlMH14PWQwJTI0O2QwLz0yNDtkMD1wYXJzZUludChkMCk7aWYoeCE9MCl7ZTA9eCsiIGhvdXJzLCAiK2UwfWlmKGQwIT0wKXtlMD1kMCsiIGRheXMsICIrZTB9cmV0dXJuIGUwfTt0aGlzLnA3PWZ1bmN0aW9uKGQwKXt2YXIgZTA9bmV3IERhdGUoKTtlMC5zZXRUaW1lKGQwKjEwMDApO3JldHVybiBlMC50b0xvY2FsZVN0cmluZygpfTt0aGlzLnE1PWZ1bmN0aW9uKCl7YWMucTcodGhpcy5vMC5lNygpKX19ZnVuY3Rpb24gbTYoKXt0aGlzLmkyPW51bGw7dGhpcy5wMz0iL2NlLyI7dGhpcy54MT0iaW5pdCI7dGhpcy5vMT01MDA7dGhpcy5pND05OTk5OTk5OTt0aGlzLnkxPTEwMDA7dGhpcy5xMz0iIjt0aGlzLmQxPW51bGw7dGhpcy5oMT0iIjt0aGlzLmo0PXRydWU7dGhpcy50Nj1mdW5jdGlvbihyNyl7dGhpcy5pMj1yNzt0aGlzLmRvUmVtb3RlRmV0Y2goKX07dGhpcy56Nj1mdW5jdGlvbigpe3RoaXMueDE9ImNsb3NlIn07dGhpcy55Nj1mdW5jdGlvbigpe3RoaXMuajQ9ZmFsc2V9O3RoaXMucjU9ZnVuY3Rpb24oKXt0aGlzLmk0Kz0xMDA7aWYodGhpcy5pND50aGlzLm8xKXt0aGlzLmRvUmVtb3RlRmV0Y2goKTtyZXR1cm59aWYodGhpcy5xMyE9IiIpe3RoaXMuZG9SZW1vdGVGZXRjaCgpO3JldHVybn12YXIgeD10aGlzO3ZhciBsMD1mdW5jdGlvbigpe3gucjUoKX07d2luZG93LnNldFRpbWVvdXQobDAsMTAwKX07dGhpcy5zNT1mdW5jdGlvbigpe3ZhciBlMT1udWxsO2lmKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCE9InVuZGVmaW5lZCIpe2UxPW5ldyBYTUxIdHRwUmVxdWVzdCgpfWlmKGUxKXtyZXR1cm4gZTF9aWYod2luZG93LmNyZWF0ZVJlcXVlc3Qpe2UxPXdpbmRvdy5jcmVhdGVSZXF1ZXN0KCl9aWYoZTEpe3JldHVybiBlMX1pZih0eXBlb2YgQWN0aXZlWE9iamVjdD09InVuZGVmaW5lZCIpe3JldHVybiBudWxsfXRyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYTEpe310cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpfWNhdGNoKGExKXt9dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAuNC4wIil9Y2F0Y2goYTEpe31yZXR1cm4gbnVsbH07dGhpcy5hND1mdW5jdGlvbihkMCl7dGhpcy5xMys9ZDArIlxyXG4ifTt0aGlzLnJlYWR5c3RhdGVjaGFuZ2VmdW5jdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMuZDEucmVhZHlTdGF0ZSE9NCl7cmV0dXJufWlmKHRoaXMuZDEuc3RhdHVzPT0yMDAmJnRoaXMuZDEucmVzcG9uc2VYTUwmJnRoaXMuZDEucmVzcG9uc2VYTUwuZG9jdW1lbnRFbGVtZW50KXt2YXIgZDA9dGhpcy50NSh0aGlzLmQxLnJlc3BvbnNlWE1MLmRvY3VtZW50RWxlbWVudCk7dGhpcy5pND0wO2lmKGQwKXt0aGlzLm8xKj0wLjg1fWVsc2V7dGhpcy5vMSo9MS4xfWlmKHRoaXMubzE8dGhpcy55MSl7dGhpcy5vMT10aGlzLnkxO2lmKHRoaXMuajQpe3RoaXMubzEvPTJ9fWlmKHRoaXMubzE+ODAwMCl7dGhpcy5vMT04MDAwfWlmKHRoaXMuajQmJmQwKXt0aGlzLm8xPTB9dGhpcy5yNSgpO3JldHVybn10aGlzLmkyLmYzKCJTZXJ2ZXIgcmV0dXJuZWQgc3RhdHVzICIrdGhpcy5kMS5zdGF0dXMpfTt0aGlzLmRvUmVtb3RlRmV0Y2g9ZnVuY3Rpb24oKXt0aGlzLmQxPXRoaXMuczUoKTtpZih0aGlzLmQxPT1udWxsKXt0aGlzLmkyLmYzKCJZb3VyIGJyb3dzZXIgc2VlbXMgbm90IHRvIGJlIGNhcGFibGUgb2YgYWpheCwgcHJvYmFibHkgeW91ciBicm93c2VyIGlzIHRvbyBvbGQiKTtyZXR1cm59aWYodGhpcy54MT09ImNsb3NlIil7cmV0dXJufXRoaXMuZDEub3BlbigiUE9TVCIsdGhpcy5wMyx0cnVlKTt0cnl7dGhpcy5kMS5zZXRSZXF1ZXN0SGVhZGVyKCJNZXRob2QiLCJQT1NUICIrdGhpcy5wMysiIEhUVFAvMS4xIil9Y2F0Y2goYTEpe3RoaXMuaTIuZjMoIllvdXIgYnJvd3NlciBkb2VzIG5vdCBhcHBlYXIgdG8gc3VwcG9ydCBhc3luY2hyb25vdXMgcmVxdWVzdHMgdXNpbmcgUE9TVC4iKTtyZXR1cm59dmFyIHg9dGhpczt2YXIgbDA9ZnVuY3Rpb24oKXt4LnJlYWR5c3RhdGVjaGFuZ2VmdW5jdGlvbigpfTt0aGlzLmQxLm9ucmVhZHlzdGF0ZWNoYW5nZT1sMDt0aGlzLmQxLnNlbmQodGhpcy54MSsiJCIrdGhpcy51NSh0aGlzLnEzKSk7dGhpcy5xMz0iIn07dGhpcy53Nj1mdW5jdGlvbihkMCl7dmFyIGUxPXRoaXMuczUoKTtpZihlMT09bnVsbCl7cmV0dXJufWlmKHRoaXMueDE9PSJjbG9zZSIpe3JldHVybn1lMS5vcGVuKCJQT1NUIix0aGlzLnAzLGZhbHNlKTt0cnl7ZTEuc2V0UmVxdWVzdEhlYWRlcigiTWV0aG9kIiwiUE9TVCAiK3RoaXMucDMrIiBIVFRQLzEuMSIpfWNhdGNoKGExKXtyZXR1cm4gZmFsc2V9ZTEuc2VuZCh0aGlzLngxKyIkIit0aGlzLnU1KGQwKyJcclxuIikpO3RoaXMudDUoZTEucmVzcG9uc2VYTUwuZG9jdW1lbnRFbGVtZW50KX07dGhpcy50NT1mdW5jdGlvbih4bWwpe3ZhciBkMD1mYWxzZTtmb3IodmFyIGkwPTA7aTA8eG1sLmNoaWxkTm9kZXMubGVuZ3RoO2kwKyspe3ZhciBfZTk9eG1sLmNoaWxkTm9kZXNbaTBdLm5vZGVOYW1lO3ZhciBfZWE9eG1sLmNoaWxkTm9kZXNbaTBdLmZpcnN0Q2hpbGQubm9kZVZhbHVlO2lmKF9lOT09ImUiKXt0aGlzLngxPSJjbG9zZSI7dGhpcy5pMi5mMygiRmF0YWwgbWVzc2FnZSBmcm9tIHNlcnZlcjogIitfZWEpO2NvbnRpbnVlfWlmKF9lOT09Im0iKXt0aGlzLmgxKz10aGlzLnM3KF9lYSk7dGhpcy50NygpO2QwPXRydWU7Y29udGludWV9aWYoX2U5PT0idCIpe3RoaXMueTE9cGFyc2VJbnQoX2VhKTtpZih0aGlzLnkxPDYwMCl7dGhpcy55MT02MDB9aWYodGhpcy55MT41MDAwKXt0aGlzLnkxPTUwMDB9Y29udGludWV9aWYoX2U5PT0icyIpe3RoaXMueDE9X2VhO2NvbnRpbnVlfX1yZXR1cm4gZDB9O3RoaXMudTU9ZnVuY3Rpb24oX2ViKXtyZXR1cm4gdGhpcy51Nyh0aGlzLnY3KF9lYikpfTt0aGlzLnM3PWZ1bmN0aW9uKF9lYyl7cmV0dXJuIHRoaXMudzcoX2VjKX07dGhpcy50Nz1mdW5jdGlvbigpe3RoaXMuaDE9dGhpcy5oMS5yZXBsYWNlKG5ldyBSZWdFeHAoIlxyIiwiZyIpLCIiKTt3aGlsZSh0aGlzLmgxLmluZGV4T2YoIlxuIikhPS0xKXt0aGlzLmkyLng2KHRoaXMueDcodGhpcy5oMS5zdWJzdHIoMCx0aGlzLmgxLmluZGV4T2YoIlxuIikpKSk7dGhpcy5oMT10aGlzLmgxLnN1YnN0cih0aGlzLmgxLmluZGV4T2YoIlxuIikrMSx0aGlzLmgxLmxlbmd0aC10aGlzLmgxLmluZGV4T2YoIlxuIikpfX07dGhpcy52Nz1mdW5jdGlvbihfZWQpe3ZhciBfZWU9IiI7Zm9yKHZhciBpMD0wO2kwPF9lZC5sZW5ndGg7aTArKyl7dmFyIHg9X2VkLmNoYXJDb2RlQXQoaTApO2lmKHg8MTI4KXtfZWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoeCl9ZWxzZXtpZigoeD4xMjcpJiYoeDwyMDQ4KSl7X2VlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCh4Pj42KXwxOTIpO19lZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgoeCY2Myl8MTI4KX1lbHNle19lZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgoeD4+MTIpfDIyNCk7X2VlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgoeD4+NikmNjMpfDEyOCk7X2VlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCh4JjYzKXwxMjgpfX19cmV0dXJuIF9lZX07dGhpcy54Nz1mdW5jdGlvbihfZjEpe3ZhciBfZjI9IiI7dmFyIF9mMyxfZjQsX2Y1O3ZhciBpMD0wO3doaWxlKGkwPF9mMS5sZW5ndGgpe19mMz1fZjEuY2hhckNvZGVBdChpMCk7aWYoX2YzPDEyOCl7X2YyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKF9mMyk7aTArKztjb250aW51ZX1pZigoX2YzJjE5MikhPTE5Mil7X2YyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKF9mMyk7aTArKztjb250aW51ZX1fZjQ9X2YxLmNoYXJDb2RlQXQoaTArMSk7aWYoKF9mNCYxOTIpIT0xMjgpe19mMis9U3RyaW5nLmZyb21DaGFyQ29kZShfZjMpO2kwKys7Y29udGludWV9aWYoX2YzPjIyNCl7X2Y1PV9mMS5jaGFyQ29kZUF0KGkwKzIpO2lmKChfZjUmMTkyKSE9MTI4KXtfZjIrPVN0cmluZy5mcm9tQ2hhckNvZGUoX2YzKTtpMCsrO2NvbnRpbnVlfXZhciB4PShfZjMmMTUpPDwxMjt4Kz0oX2Y0JjYzKTw8Njt4Kz1fZjUmNjM7X2YyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHgpO2kwKz0zO2NvbnRpbnVlfXZhciB4PShfZjMmMzEpPDw2O3grPV9mNCY2MztfZjIrPVN0cmluZy5mcm9tQ2hhckNvZGUoeCk7aTArPTI7Y29udGludWV9cmV0dXJuIF9mMn07dGhpcy5zMT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iO3RoaXMudTc9ZnVuY3Rpb24oX2Y4KXt2YXIgX2Y5PSIiO3ZhciBfZmEsX2ZiLF9mYzt2YXIgX2ZkLF9mZSxfZmYscDE7dmFyIGkwPTA7aWYoX2Y4PT0iIil7cmV0dXJuIiJ9ZG97X2ZhPV9mOC5jaGFyQ29kZUF0KGkwKyspO19mYj1fZjguY2hhckNvZGVBdChpMCsrKTtfZmM9X2Y4LmNoYXJDb2RlQXQoaTArKyk7X2ZkPV9mYT4+MjtfZmU9KChfZmEmMyk8PDQpfChfZmI+PjQpO19mZj0oKF9mYiYxNSk8PDIpfChfZmM+PjYpO3AxPV9mYyY2MztpZihpc05hTihfZmIpKXtfZmY9cDE9NjR9ZWxzZXtpZihpc05hTihfZmMpKXtwMT02NH19X2Y5PV9mOSt0aGlzLnMxLmNoYXJBdChfZmQpK3RoaXMuczEuY2hhckF0KF9mZSkrdGhpcy5zMS5jaGFyQXQoX2ZmKSt0aGlzLnMxLmNoYXJBdChwMSk7X2ZhPV9mYj1fZmM9IiI7X2ZkPV9mZT1fZmY9cDE9IiJ9d2hpbGUoaTA8X2Y4Lmxlbmd0aCk7cmV0dXJuIF9mOX07dGhpcy53Nz1mdW5jdGlvbihfMTAyKXt2YXIgXzEwMz0iIjt2YXIgdjUsdzUseDU7dmFyIHk1LGs0LHIzLHAxO3ZhciBpMD0wO18xMDI9XzEwMi5yZXBsYWNlKG5ldyBSZWdFeHAoIlteQS1aYS16MC05Ky89XSIsImciKSwiIik7aWYoXzEwMj09IiIpe3JldHVybiIifXdoaWxlKGkwPF8xMDIubGVuZ3RoKXt5NT10aGlzLnMxLmluZGV4T2YoXzEwMi5jaGFyQXQoaTArKykpO2s0PXRoaXMuczEuaW5kZXhPZihfMTAyLmNoYXJBdChpMCsrKSk7cjM9dGhpcy5zMS5pbmRleE9mKF8xMDIuY2hhckF0KGkwKyspKTtwMT10aGlzLnMxLmluZGV4T2YoXzEwMi5jaGFyQXQoaTArKykpO3Y1PSh5NTw8Mil8KGs0Pj40KTt3NT0oKGs0JjE1KTw8NCl8KHIzPj4yKTt4NT0oKHIzJjMpPDw2KXxwMTtfMTAzPV8xMDMrU3RyaW5nLmZyb21DaGFyQ29kZSh2NSk7aWYocjMhPTY0KXtfMTAzPV8xMDMrU3RyaW5nLmZyb21DaGFyQ29kZSh3NSl9aWYocDEhPTY0KXtfMTAzPV8xMDMrU3RyaW5nLmZyb21DaGFyQ29kZSh4NSl9fXJldHVybiBfMTAzfX1mdW5jdGlvbiB5Nygpe3RoaXMudDI9IiI7dGhpcy56MT0iIjt0aGlzLnUyPW5ldyBBcnJheSgpO3RoaXMudjI9ZmFsc2U7dGhpcy5iMT1uZXcgQXJyYXkoKTt0aGlzLmEyPTA7dGhpcy56Nz0iIjt0aGlzLnE3PWZ1bmN0aW9uKHgpe3RoaXMudTI9eH07dGhpcy5hOD1mdW5jdGlvbigpe3ZhciBfMTBkPW5ldyBBcnJheSgpO2Zvcih2YXIgeCBpbiB0aGlzLnUyKXt2YXIgbDA9dGhpcy51Mlt4XS50b0xvd2VyQ2FzZSgpO3ZhciBwMD10aGlzLnQyLnRvTG93ZXJDYXNlKCk7aWYobDAuc3Vic3RyKDAscDAubGVuZ3RoKT09cDApe18xMGQucHVzaCh0aGlzLnUyW3hdKX1lbHNle2wwPWwwLnJlcGxhY2UobmV3IFJlZ0V4cCgiW15BLVphLXowLTldIiwiZyIpLCIiKTtpZihsMC5zdWJzdHIoMCxwMC5sZW5ndGgpPT1wMCl7XzEwZC5wdXNoKHRoaXMudTJbeF0pfX19dmFyIF8xMTE9ZmFsc2U7Zm9yKHggaW4gXzEwZCl7aWYoXzEwZFt4XT09dGhpcy56MSl7XzExMT10cnVlfWVsc2V7aWYoXzExMSl7cmV0dXJuIF8xMGRbeF19fX1mb3IoeCBpbiBfMTBkKXtyZXR1cm4gXzEwZFt4XX1yZXR1cm4iIn07dGhpcy5oYW5kbGVLZXlEb3duPWZ1bmN0aW9uKF8xMTIsXzExMyl7aWYoXzExMi5rZXlDb2RlIT05KXt0aGlzLnQyPSIiO3RoaXMuejE9IiI7dGhpcy52Mj1mYWxzZX1pZihfMTEyLmtleUNvZGU9PTM4KXt0aGlzLno1KC0xKTtyZXR1cm4gZmFsc2V9aWYoXzExMi5rZXlDb2RlPT00MCl7dGhpcy56NSgxKTtyZXR1cm4gZmFsc2V9aWYoXzExMy5zZWxlY3Rpb25TdGFydD09dW5kZWZpbmVkKXtyZXR1cm59aWYoXzExMi5rZXlDb2RlIT05KXtyZXR1cm4gdHJ1ZX1pZihfMTEzLnNlbGVjdGlvblN0YXJ0IT1fMTEzLnNlbGVjdGlvbkVuZCl7cmV0dXJuIGZhbHNlfXZhciBfMTE0PV8xMTMudmFsdWUuc3Vic3RyaW5nKDAsXzExMy5zZWxlY3Rpb25TdGFydCk7dmFyIF8xMTU9XzExMy52YWx1ZS5zdWJzdHJpbmcoXzExMy5zZWxlY3Rpb25TdGFydCxfMTEzLnZhbHVlLmxlbmd0aCk7aWYodGhpcy56MSE9IiIpe3ZhciBfMTE2PXRoaXMuejEubGVuZ3RoO2lmKHRoaXMudjIpe18xMTYrK31fMTE2Kys7XzExND1fMTE0LnN1YnN0cmluZygwLF8xMTQubGVuZ3RoLV8xMTYpO3RoaXMuYTYoXzExNCxfMTE1LF8xMTMpO3JldHVybiBmYWxzZX1pZihfMTE1Lmxlbmd0aCE9MCl7aWYoXzExNS5jaGFyQXQoMCkhPSIgIil7cmV0dXJuIGZhbHNlfX14PV8xMTQubGFzdEluZGV4T2YoIiAiKTtpZih4PT0tMSl7dGhpcy52Mj10cnVlO3RoaXMudDI9XzExNDtfMTE0PSIifWVsc2V7dGhpcy52Mj1mYWxzZTt0aGlzLnQyPV8xMTQuc3Vic3RyaW5nKHgrMSxfMTE0Lmxlbmd0aCk7XzExND1fMTE0LnN1YnN0cmluZygwLF8xMTQubGVuZ3RoLXRoaXMudDIubGVuZ3RoKX10aGlzLmE2KF8xMTQsXzExNSxfMTEzKTtyZXR1cm4gZmFsc2V9O3RoaXMuYTY9ZnVuY3Rpb24oXzExNyxfMTE4LF8xMTkpe3RoaXMuejE9dGhpcy5hOCgpO2lmKHRoaXMuejE9PSIiKXtyZXR1cm59XzExNys9dGhpcy56MTtpZih0aGlzLnYyKXtfMTE3Kz0iOiJ9XzExNys9IiAiO18xMTkudmFsdWU9XzExNytfMTE4O18xMTkuc2VsZWN0aW9uU3RhcnQ9XzExNy5sZW5ndGg7XzExOS5zZWxlY3Rpb25FbmQ9XzExNy5sZW5ndGh9O3RoaXMuajc9ZnVuY3Rpb24oazApe2lmKHRoaXMuYjFbdGhpcy5iMS5sZW5ndGgtMV0hPWswKXt0aGlzLmIxLnB1c2goazApfXdoaWxlKHRoaXMuYjEubGVuZ3RoPjIwKXt0aGlzLmIxLnNoaWZ0KCl9dGhpcy5hMj10aGlzLmIxLmxlbmd0aDt0aGlzLno3PSIifTt0aGlzLno1PWZ1bmN0aW9uKGUwKXt2YXIgXzExYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbkNoYXRJbnB1dEZpZWxkIik7aWYoXzExYy52YWx1ZSE9IiIpe3ZhciBsMD1mYWxzZTtmb3IodmFyIHg9MDt4PHRoaXMuYjEubGVuZ3RoO3grKyl7aWYoXzExYy52YWx1ZT09dGhpcy5iMVt4XSl7bDA9dHJ1ZX19aWYoIWwwKXt0aGlzLmIxLnB1c2goXzExYy52YWx1ZSl9fXRoaXMuYTIrPWUwO2lmKHRoaXMuYTI8MCl7dGhpcy5hMj10aGlzLmIxLmxlbmd0aH1pZih0aGlzLmEyPj10aGlzLmIxLmxlbmd0aCl7XzExYy52YWx1ZT0iIjt0aGlzLmEyPXRoaXMuYjEubGVuZ3RoO3JldHVybn1fMTFjLnZhbHVlPXRoaXMuYjFbdGhpcy5hMl19fWZ1bmN0aW9uIGg3KF8xMWYsXzEyMCl7dGhpcy56MD1fMTFmO3RoaXMuZjA9XzEyMDt0aGlzLncyPTA7dGhpcy5mMT17fTt0aGlzLnEwPXt9O3RoaXMubDQ9bmV3IEFycmF5KCk7dGhpcy5pNz1mdW5jdGlvbihtMCl7dGhpcy5sNC5wdXNoKG0wLnRvTG93ZXJDYXNlKCkpfTt0aGlzLms3PWZ1bmN0aW9uKF8xMjIsYzApe3RoaXMudzI9MDt0aGlzLmI2KF8xMjIsYzAsdHJ1ZSl9O3RoaXMuYjY9ZnVuY3Rpb24oXzEyNCxjMCxfMTI2KXtpZihjMD09IiIpe3JldHVybn1pZihjMD09Ii8iKXtyZXR1cm59aWYoYzA9PSIvLyIpe3JldHVybn1pZih0aGlzLncyPjIwKXt0aGlzLmYwLmcwKCJzaG93ZXJyb3IiLCJhbGlhc3JlY3Vyc2VlcnJvciIpO3JldHVybn10aGlzLncyKys7dmFyIG0wPSJzYXkiO3ZhciBfMTI4PXRydWU7aWYoYzAuY2hhckF0KDApPT0iLyIpe2lmKGMwLmNoYXJBdCgxKT09Ii8iKXtfMTI4PWZhbHNlO2MwPWMwLnN1YnN0cigxKX1pZihjMC5jaGFyQXQoMSk9PSIgIil7fWVsc2V7aWYoYzAuaW5kZXhPZigiICIpPT0tMSl7bTA9YzAuc3Vic3RyKDEpfWVsc2V7bTA9YzAuc3Vic3RyKDEsYzAuaW5kZXhPZigiICIpLTEpfX1pZihjMC5pbmRleE9mKCIgIik9PS0xKXtjMD0iIn1lbHNle2MwPWMwLnN1YnN0cihjMC5pbmRleE9mKCIgIikrMSl9fW0wPW0wLnRvTG93ZXJDYXNlKCk7aWYoXzEyNil7Zm9yKHZhciB4IGluIHRoaXMubDQpe2lmKHRoaXMubDRbeF09PW0wKXt0aGlzLmYwLmcwKCJub3RhbGxvd2VkY21kIixtMCk7dGhpcy53Mi0tO3JldHVybn19fWlmKG0wPT0ic2F5Iil7XzEyOD1mYWxzZX1pZih0eXBlb2YodGhpcy5xMFttMF0pPT0ic3RyaW5nIiYmXzEyOCl7dGhpcy5iOChfMTI0LG0wLGMwKX1lbHNle2lmKHR5cGVvZih0aGlzLmYxW20wXSk9PSJmdW5jdGlvbiIpe3RoaXMuZjFbbTBdLmNhbGwodGhpcyxjMCxfMTI0LmkzKCkpfWVsc2V7dGhpcy5mMC5nMCgibm90aW1wbGVtZW50ZWRjbWQiLG0wKX19dGhpcy53Mi0tfTt0aGlzLmI4PWZ1bmN0aW9uKF8xMmEsbTAsYzApe3ZhciBfMTJkPXRoaXMucTBbbTBdO3ZhciBfMTJlPV8xMmEuaTMoKTt2YXIgXzEyZj1uZXcgQXJyYXkoKTt2YXIgazA9IiI7Zm9yKHZhciB4PTA7eDxfMTJkLmxlbmd0aDt4Kyspe2lmKF8xMmQuY2hhckF0KHgpIT0iJCIpe2swKz1fMTJkLmNoYXJBdCh4KTtjb250aW51ZX1pZihfMTJkLmNoYXJBdCh4KzEpPT0iOyIpe18xMmYucHVzaChrMCk7azA9IiI7Y29udGludWV9dmFyIF8xMzI9ZmFsc2U7dmFyIF8xMzM9dHJ1ZTt2YXIgXzEzND1mYWxzZTt2YXIgXzEzNT0iIjt2YXIgXzEzNj10cnVlO3doaWxlKF8xMzYpe3grKztpZih4PT1fMTJkLmxlbmd0aCl7XzEzNj1mYWxzZTtjb250aW51ZX1zd2l0Y2goXzEyZC5jaGFyQXQoeCkpe2Nhc2UiKiI6XzEzMj10cnVlO2JyZWFrO2Nhc2UiLSI6XzEzND10cnVlO2JyZWFrO2Nhc2UiKyI6XzEzMz1mYWxzZTticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5IjpjYXNlIm4iOmNhc2UiYyI6Y2FzZSJ0IjpjYXNlIm0iOl8xMzU9XzEyZC5jaGFyQXQoeCk7YnJlYWs7Y2FzZSIgIjpfMTM2PWZhbHNlO2JyZWFrO2RlZmF1bHQ6dGhpcy5mMC5nMCgic2hvd2Vycm9yIiwiYWxpYXN0b2tlbmVycm9yIixfMTJkKTtyZXR1cm59fWlmKF8xMzMpe3gtLX1pZihfMTM1PT0ibSIpe2swKz10aGlzLnowLmoxKCk7Y29udGludWV9aWYoXzEzNT09Im4iKXtpZihfMTJlWzBdIT0icHJpdmF0ZSIpe2lmKF8xMzIpe3RoaXMuZjAuZzAoInNob3dlcnJvciIsImFsaWFzcmVxdWlyZWRuaWNrIixtMCk7cmV0dXJufX1lbHNle2swKz1fMTJlWzFdfX1pZihfMTM1PT0iYyIpe2lmKF8xMmVbMF0hPSJjaGFubmVsInx8dGhpcy56MC5rMShfMTJlWzFdKT09bnVsbCl7aWYoXzEzMil7dGhpcy5mMC5nMCgic2hvd2Vycm9yIiwiYWxpYXNyZXF1aXJlZGNoYW5uZWwiLG0wKTtyZXR1cm59fWVsc2V7azArPV8xMmVbMV19fWlmKF8xMzU9PSJ0Iil7aWYoIShfMTJlWzBdPT0icHJpdmF0ZSJ8fF8xMmVbMF09PSJjaGFubmVsIikpe2lmKF8xMzIpe3RoaXMuZjAuZzAoInNob3dlcnJvciIsImFsaWFzcmVxdWlyZWR0YXJnZXQiLG0wKTtyZXR1cm59fWVsc2V7azArPV8xMmVbMV19fWlmKF8xMzU+PSIxIiYmXzEzNTw9IjkiKXt2YXIgbDA9dGhpcy5zMyhfMTM1LTAsXzEzNCxjMCk7aWYobDA9PW51bGwpe2lmKF8xMzIpe2lmKCJhbGlhc18iK20wKyJfdXNhZ2UiIGluIGEwKXt0aGlzLmYwLmcwKCJzaG93ZXJyb3IiLCJhbGlhc18iK20wKyJfdXNhZ2UiKX1lbHNle3RoaXMuZjAuZzAoInNob3dlcnJvciIsImFsaWFzcGFyYW1ldGVyZXJyb3IiLG0wKX1yZXR1cm59fWVsc2V7azArPWwwfX19XzEyZi5wdXNoKGswKTtmb3IoeCBpbiBfMTJmKXtrMD1fMTJmW3hdO2lmKGswLmNoYXJBdCgwKSE9Ii8iKXtrMD0iLyIrazB9dGhpcy5iNihfMTJhLGswLGZhbHNlKX19O3RoaXMuczM9ZnVuY3Rpb24oXzEzOCxfMTM5LGswKXt2YXIgeD0xO3doaWxlKGswLmNoYXJBdChrMC5sZW5ndGgtMSk9PSIgIil7azA9azAuc3Vic3RyKDAsazAubGVuZ3RoLTEpfXdoaWxlKGswLmNoYXJBdCgwKT09IiAiKXtrMD1rMC5zdWJzdHIoMSl9aWYoazA9PSIiKXtyZXR1cm4gbnVsbH13aGlsZShfMTM4Pngpe2lmKGswLmluZGV4T2YoIiAiKT09LTEpe3JldHVybiBudWxsfWswPWswLnN1YnN0cihrMC5pbmRleE9mKCIgIikrMSk7d2hpbGUoazAuY2hhckF0KDApPT0iICIpe2swPWswLnN1YnN0cigxKX14Kyt9aWYoIV8xMzkpe2lmKGswLmluZGV4T2YoIiAiKSE9LTEpe2swPWswLnN1YnN0cigwLGswLmluZGV4T2YoIiAiKSl9fXJldHVybiBrMH07dGhpcy5mMVsicXVlcnkiXT1mdW5jdGlvbihjMCxfMTNkKXtjMD1jMC5yZXBsYWNlKG5ldyBSZWdFeHAoIj58PHwmfCwiLCJnIiksIiIpO3doaWxlKGMwLmNoYXJBdCgwKT09IiAiKXtjMD1jMC5zdWJzdHIoMSl9dmFyIHcwPWMwO3ZhciBkMD0iIjtpZihjMC5pbmRleE9mKCIgIikhPS0xKXt3MD1jMC5zdWJzdHIoMCxjMC5pbmRleE9mKCIgIikpO2QwPWMwLnN1YnN0cihjMC5pbmRleE9mKCIgIikrMSl9aWYodGhpcy56MC55Myh3MCkpe3JldHVybiB0aGlzLmYxWyJqb2luIl0oYzAsXzEzZCl9aWYodzA9PSIiKXtyZXR1cm59dmFyIF8xNDA9dGhpcy5mMC53MSh3MCk7dGhpcy5mMC5xMihfMTQwKTtpZihkMCE9IiIpe3RoaXMuZzMoZDApfX07dGhpcy5mMVsic2F5Il09ZnVuY3Rpb24oYzAsXzE0Mil7aWYoXzE0MlswXT09ImNoYW5uZWwifHxfMTQyWzBdPT0icHJpdmF0ZSIpe3RoaXMuejAuZDIoIlBSSVZNU0cgIitfMTQyWzFdKyIgOiIrYzApO3JldHVybn10aGlzLmYwLmcwKCJub2N1cnJlbnR0YXJnZXQiKX07dGhpcy5mMVsicXVvdGUiXT1mdW5jdGlvbihjMCxfMTQ0KXt0aGlzLnowLmQyKGMwKX07dGhpcy5mMVsic2hvd2RlYnVnIl09ZnVuY3Rpb24oYzAsXzE0Nil7dGhpcy5mMC5jND10cnVlO3RoaXMuZjAucTIodGhpcy5mMC55MCl9O3RoaXMuZjFbImhpZGVkZWJ1ZyJdPWZ1bmN0aW9uKGMwLF8xNDgpe3RoaXMuZjAuYzQ9ZmFsc2U7dGhpcy5mMC5wMigpfTt0aGlzLmYxWyJqb2luIl09ZnVuY3Rpb24oYzAsXzE0YSl7d2hpbGUoYzAuY2hhckF0KDApPT0iICIpe2MwPWMwLnN1YnN0cigxKX1pZighdGhpcy56MC55MyhjMCkpe2MwPSIjIitjMH12YXIgbTQ9YzA7aWYoYzAuaW5kZXhPZigiICIpIT0tMSl7bTQ9YzAuc3Vic3RyKDAsYzAuaW5kZXhPZigiICIpKX12YXIgXzE0Yz10aGlzLmYwLnIwKG00KTtpZihfMTRjIT1udWxsKXt0aGlzLmYwLnEyKF8xNGMpO2lmKHRoaXMuejAuazEobTQpIT1udWxsKXtyZXR1cm59fXRoaXMuejAuZDIoIkpPSU4gIitjMCl9O3RoaXMuZjFbImFsaWFzIl09ZnVuY3Rpb24oYzAsXzE0ZSl7dmFyIG0wPXRoaXMuczMoMSxmYWxzZSxjMCk7dmFyIGMwPXRoaXMuczMoMix0cnVlLGMwKTtpZihtMD09bnVsbHx8YzA9PW51bGwpe3RoaXMuZjAuZzAoInNob3dlcnJvciIsImFsaWFzdXNhZ2UiKTtyZXR1cm59bTA9bTAudG9Mb3dlckNhc2UoKTt0aGlzLnEwW20wXT1jMH07dGhpcy5mMVsidW5hbGlhcyJdPWZ1bmN0aW9uKGMwLF8xNTEpe2RlbGV0ZSB0aGlzLnEwW3RoaXMuczMoMSxmYWxzZSxjMC50b0xvd2VyQ2FzZSgpKV19O3RoaXMuZjFbImNsb3Nld2luZG93Il09ZnVuY3Rpb24oYzAsXzE1Myl7dGhpcy5mMC5yMSgpO2lmKF8xNTNbMF09PSJjaGFubmVsIil7dGhpcy56MC5wNihfMTUzWzFdLCJMZWF2aW5nIGNoYW5uZWwiKX1pZihfMTUzWzBdPT0ic3RhdHVzIil7dGhpcy56MC5kMigiUVVJVCA6IithMFsiZGVmcXVpdHJlYXNvbiJdKTtyZXR1cm59dGhpcy5mMC5uNSh0aGlzLmYwLm8wKX07dGhpcy5xMFsibXNnIl09InF1b3RlIFBSSVZNU0cgJCoxIDokKjItIjt0aGlzLnEwWyJub3RpY2UiXT0icXVvdGUgTk9USUNFICQqMSA6JCoyLSI7dGhpcy5xMFsicmF3Il09InF1b3RlICQqMS0iO3RoaXMucTBbIm1lIl09InF1b3RlIFBSSVZNU0cgJCp0IDpceDAxQUNUSU9OICQxKi0rIFx4MDEiO3RoaXMucTBbInQiXT0icXVvdGUgVE9QSUMgJCpjIDokKjEtIjt0aGlzLnEwWyJ0b3BpYyJdPSJ0ICQqMS0iO3RoaXMucTBbInF1aXQiXT0icXVvdGUgUVVJVCA6JDEtIjt0aGlzLnEwWyJuaWNrIl09InF1b3RlIG5pY2sgJCoxIjt0aGlzLnEwWyJtb2RlIl09InF1b3RlIG1vZGUgJCoxLSI7dGhpcy5xMFsia2ljayJdPSJxdW90ZSBraWNrICQqMSAkKjIgOiQqMy0iO3RoaXMucTBbImsiXT0icXVvdGUga2ljayAkKmMgJCoxIDokMi0iO3RoaXMucTBbIm9wIl09InF1b3RlIG1vZGUgJCpjICtvb28gJCoxICQyICQzIjt0aGlzLnEwWyJ2b2ljZSJdPSJxdW90ZSBtb2RlICQqYyArdnZ2ICQqMSAkMiAkMyI7dGhpcy5xMFsiZGVvcCJdPSJxdW90ZSBtb2RlICQqYyAtb29vICQqMSAkMiAkMyI7dGhpcy5xMFsiZGV2b2ljZSJdPSJxdW90ZSBtb2RlICQqYyAtdnZ2ICQqMSAkMiAkMyI7dGhpcy5xMFsid2hvaXMiXT0icXVvdGUgd2hvaXMgJCoxICQyIjt0aGlzLnEwWyJ3aSJdPSJxdW90ZSB3aG9pcyAkKjEgJDIiO3RoaXMucTBbIndpaSJdPSJxdW90ZSB3aG9pcyAkKjEgJDEiO3RoaXMucTBbImoiXT0iam9pbiAkMS0iO3RoaXMucTBbImludml0ZSJdPSJxdW90ZSBpbnZpdGUgJCoxICQqMiI7dGhpcy5xMFsicGFydCJdPSJxdW90ZSBwYXJ0ICQqYyA6JDEtIn12YXIga3JleWNoYXRlbmdpbmU9bmV3IGs2KCk7dmFyIGtyZXljaGF0bGF5b3V0PW5ldyBnNygpO3ZhciBhYz1uZXcgeTcoKTtmdW5jdGlvbiBjOCh2MCl7djA9djArIj0iO3ZhciBlMD1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKTtmb3IodmFyIGkwPTA7aTA8ZTAubGVuZ3RoO2kwKyspe3ZhciB4PWUwW2kwXTt3aGlsZSh4LmNoYXJBdCgwKT09IiAiKXt4PXguc3Vic3RyaW5nKDEseC5sZW5ndGgpfWlmKHguaW5kZXhPZih2MCk9PTApe3JldHVybiB4LnN1YnN0cmluZyh2MC5sZW5ndGgseC5sZW5ndGgpfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBrcmV5bmV0Y2hhdCgpe3ZhciB3MD1jOCgibmljayIpO2lmKHcwIT1udWxsKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXNrTmlja05pY2siKS52YWx1ZT13MH12YXIgZTA9bmV3IEFycmF5KCk7dmFyIGwwPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpO2wwPWwwLnNwbGl0KCImIik7Zm9yKHZhciB4IGluIGwwKXt2YXIgcDA9bDBbeF0uaW5kZXhPZigiPSIpO2UwW2wwW3hdLnN1YnN0cmluZygwLHAwKV09ZGVjb2RlVVJJQ29tcG9uZW50KGwwW3hdLnN1YnN0cmluZyhwMCsxKSl9aWYoZTBbImMiXSE9dW5kZWZpbmVkKXtrcmV5Y2hhdGxheW91dC5sNShlMFsiYyJdKTtrcmV5Y2hhdGxheW91dC5tNSgpO3JldHVybn1rcmV5Y2hhdGxheW91dC5sNSgic3RhcnR1cCBqb2luICNAIik7a3JleWNoYXRsYXlvdXQubTUoKTtpZihlMFsibmljayJdIT11bmRlZmluZWQmJmUwWyJuaWNrIl0hPSIiKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXNrTmlja05pY2siKS52YWx1ZT1lMFsibmljayJdO2tyZXljaGF0bGF5b3V0Lm5pY2tOYW1lU3VibWl0KCl9fSI7czo1OiJ0ZXh0cyI7YTozOntzOjI6Im5sIjtzOjQ0Mzg6ImEwPXt9O2EwWyJkZWZxdWl0cmVhc29uIl09IkxlYXZpbmcgd2ViY2hhdCI7YTBbInVzZXJuYW1lIl09IndlYmNoYXQiO2EwWyJyZWFsbmFtZSJdPSJUaGUgbmV3IEtyZXlOZXQgV2ViY2hhdCI7YTBbImJhbm5lciJdPSdDaGF0Ym94IHByb3ZpZGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cua3JleS5uZXQiIHRhcmdldD0iX2JsYW5rIj5LcmV5TmV0PC9hPiwgYnkgY29ubmVjdGluZyB5b3UgYWNjZXB0IG91ciA8YSBocmVmPSJodHRwOi8vd3d3LmtyZXkubmV0L2F1cC9hdXAuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPkFVUDwvYT4nO2EwWyJsb2dpbmJ1dHRvbiJdPSJDaGF0ISI7YTBbInF1ZXJ5Il09IlF1ZXJ5IjthMFsiZ2l2ZW9wcyJdPSJPcCI7YTBbIndob2lzIl09Ildob2lzIjthMFsid2FpdG1zZyJdPSJFdmVuIGdlZHVsZC4uLi4iO2EwWyJ3YWl0cXVpdG1zZyJdPSJQbGVhc2Ugd2FpdCB3aGlsZSBkaXNjb25uZWN0aW5nIGZyb20gdGhlIHNlcnZlciI7YTBbImVudGVybmlja25hbWUiXT0iTmlja25hbWU6IjthMFsibmlja3Rvb2xvbmciXT0iTmlja25hbWUgaXMgdGUgbGFuZyEiO2EwWyJuaWNraW52YWxpZCJdPSJFciBpcyBlZW4gb25nZWxkaWcgc3ltYm9vbCBpbiB1dyBuaWNrbmFtZSI7YTBbIm5pY2tzcGFjZXMiXT0iTmlja25hbWVzIG1vZ2VuIGdlZW4gc3BhdGllcyBiZXZhdHRlbiI7YTBbIm5pY2tzdGFydG51bWJlciJdPSJVdyBuaWNrbmFtZSBtYWcgY2lqZmVycyBiZXZhdHRlbiwgbWFhciBuaWV0IGFscyBlZXJzdGUgdGVrZW4uIjthMFsibmlja21pbjJjaGFyIl09IkdlbGlldmUgbWluaW1hYWwgMiB0ZWtlbnMgdGUgZ2VicnVpa2VuIGFscyBuaWNrbmFtZS4iO2EwWyJzdGF0dXN3aW5kb3ciXT0ic3RhdHVzIjthMFsiY29ubmVjdGluZyJdPSJDb25uZWN0aW9uIGVzdGFibGlzaGVkLCBzdGFuZCBieS4uLi4iO2EwWyJtb3Rkc3RhcnQiXT0iTWVzc2FnZSBvZiB0aGUgZGF5OiI7YTBbIm1vdGRlbmQiXT0iRW5kIG9mIG1lc3NhZ2Ugb2YgdGhlIGRheSI7YTBbInNlbGZqb2luY2hhbm5lbCJdPSJKb2luZWQgY2hhbm5lbCAlMSI7YTBbIm90aGVyam9pbmNoYW5uZWwiXT0iKiAlMSBqb2luZWQgY2hhbm5lbCI7YTBbIm90aGVycXVpdGNoYW5uZWwiXT0iKiAlMSBoYXMgbGVmdCBpcmMgKCUyKSI7YTBbIm90aGVycGFydGNoYW5uZWwiXT0iKiAlMSBoYXMgbGVmdCB0aGlzIGNoYW5uZWwgKCUyKSI7YTBbImtpY2tjaGFubmVsIl09IiogJTEgaGFzIGJlZW4ga2lja2VkIGJ5ICUyICglMykiO2EwWyJ5b3VhcmVraWNrZWQiXT0iKiBZb3UgaGF2ZSBiZWVuIGtpY2tlZCBieSAlMTogJTIiO2EwWyJvdGhlcm5pY2tjaGFuZ2UiXT0iKiAlMSBpcyBub3cga25vd24gYXMgJTIiO2EwWyJzZWxmbmlja2NoYW5nZSJdPSIqIFlvdSBhcmUgbm93IGtub3duIGFzICUxIjthMFsibW9kZWNoYW5uZWwiXT0iKiAlMSBzZXRzIG1vZGUgJTIiO2EwWyJ3YWl0am9pbiJdPSJKb2luaW5nIGNoYW5uZWwsIFBsZWFzZSB3YWl0IjthMFsiY2Fubm90X2pvaW4iXT0iU29ycnksIHlvdSBjYW4ndCBqb2luICUxIjthMFsiY2Fubm90X2pvaW5faW52aXRlIl09IlNvcnJ5LCB5b3UgY2FuJ3Qgam9pbiAlMTxwPlRoaXMgY2hhbm5lbCBpcyBpbnZpdGUgb25seTxwPllvdSBtdXN0IHJlcXVlc3QgYW4gaW52aXRhdGlvbiBmcm9tIGFuIG9wZXJhdG9yIG9uIHRoZSBjaGFubmVsIGZpcnN0ISI7YTBbImNhbm5vdF9qb2luX2JhbiJdPSJTb3JyeSwgeW91IGNhbid0IGpvaW4gJTE8cD5Zb3UgaGF2ZSBiZWVuIGJhbm5lZCBmcm9tIHRoaXMgY2hhbm5lbCEiO2EwWyJjYW5ub3Rfam9pbl9saW1pdCJdPSJTb3JyeSwgeW91IGNhbid0IGpvaW4gJTE8cD5UaGlzIGNoYW5uZWwgaGFzIGEgbGltaXRhdGlvbiBvbiB0aGUgbnVtYmVyIG9mIHVzZXJzLCBhbmQgaXQgaXMgY3VycmVudGx5IGZ1bGwiO2EwWyJjYW5ub3Rfam9pbl9rZXkiXT0iU29ycnksIHlvdSBjYW4ndCBqb2luICUxPHA+VGhpcyBjaGFubmVsIGlzIHBhc3N3b3JkIHByb3RlY3RlZC4iO2EwWyJ0cnlyZWpvaW4iXT0iPGEgaHJlZj1cImphdmFzY3JpcHQ6cHJvY2Vzc19jb21tYW5kKCcvam9pbiAlMScpXCI+VHJ5IHRvIGpvaW4gJTEgYWdhaW48L2E+IjthMFsidHJ5cmVqb2luX2tleSJdPSJUcnkgdG8gam9pbiAlMSB3aXRoIHBhc3N3b3JkOiA8Zm9ybSBvbnN1Ym1pdD1cInByb2Nlc3NfY29tbWFuZCgnL2pvaW4gJTEgJyArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWpvaW5wYXNzJykudmFsdWUpOyByZXR1cm4gZmFsc2U7XCI+PGlucHV0IHR5cGU9dGV4dCBpZD1yZWpvaW5wYXNzPjwvZm9ybT4iO2EwWyJ1bmFibGV0b3NwZWFrIl09IiogTWVzc2FnZSBoYXMgTk9UIGJlZW4gc2VudCB0byBjaGFubmVsOyB5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIHNwZWFrIjthMFsibm9zdWNodGFyZ2V0Il09IiogVGhpcyBwZXJzb24gaXMgbm8gbG9uZ2VyIG9ubGluZSwgb3IgY2hhbmdlZCBuaWNrbmFtZSI7YTBbIm5vY3VycmVudHRhcmdldCJdPSIqIFRoaXMgd2luZG93IGhhcyBubyBuaWNrbmFtZS9jaGFubmVsIGF0dGFjaGVkIjthMFsibm9zdWNoY21kIl09IlVua25vd24gY29tbWFuZDogJTEiO2EwWyJub3RhbGxvd2VkY21kIl09Ik5vdCBhbGxvd2VkIGNvbW1hbmQ6ICUxIjthMFsiY2hhdGVuZGVkIl09J1lvdSBoYXZlIGVuZGVkIHRoZSBjaGF0LiAgWW91IG1heSBjbG9zZSB0aGlzIHdpbmRvdzxicj48YSBocmVmPSIjIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7IHJldHVybiBmYWxzZTsiPlJlc3RhcnQgY2hhdDwvYT4nO2EwWyJjaGF0ZW5kZWRlcnJvciJdPSc8aDE+T29wczwvaDE+VGhlIGNoYXQgaGFzIGVuZGVkIHVuZXhwZWN0ZWRseTxicj48YnI+PGEgaHJlZj0iIyIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOyByZXR1cm4gZmFsc2U7Ij5SZXN0YXJ0IGNoYXQ8L2E+JzthMFsiY2hhdGVuZGVkZXJyb3Jtc2ciXT0nPGgxPk9vcHM8L2gxPlRoZSBjaGF0IGhhcyBlbmRlZCB1bmV4cGVjdGVkbHk8YnI+PGJyPlRoZSBmb2xsb3dpbmcgc2VydmVyIG1lc3NhZ2UgaXMgYXZhaWxhYmxlOjxicj48YnI+JTE8YnI+PGJyPjxhIGhyZWY9IiMiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsgcmV0dXJuIGZhbHNlOyI+UmVzdGFydCBjaGF0PC9hPic7YTBbImFsaWFzcmVjdXJzZWVycm9yIl09IlRvbyBtYW55IHJlY3Vyc2lvbnMgaW4gdGhlIGNvbW1hbmQsIGFib3J0aW5nIGluIHNlcXVlbmNlISI7YTBbImFsaWFzdG9rZW5lcnJvciJdPSJUaGVyZSBpcyBhbiBpbnZhbGlkIGRvbGxhciBzZXF1ZW5jZSBpbiB5b3VyIGFsaWFzICUxIjthMFsiYWxpYXNyZXF1aXJlZG5pY2siXT0iVGhlIGNvbW1hbmQgJTEgb25seSB3b3JrcyBvbiBxdWVyeSB3aW5kb3dzIjthMFsiYWxpYXNyZXF1aXJlZGNoYW5uZWwiXT0iVGhlIGNvbW1hbmQgJTEgb25seSB3b3JrcyBvbiBjaGFubmVscyI7YTBbImFsaWFzcmVxdWlyZWR0YXJnZXQiXT0iVGhlIGNvbW1hbmQgJTEgb25seSB3b3JrcyBvbiBxdWVyeSB3aW5kb3dzIG9yIGNoYW5uZWxzIjthMFsiYWxpYXNwYXJhbWV0ZXJlcnJvciJdPSJUb28gZmV3IHBhcmFtZXRlcnMgZm9yICUxIjthMFsiYWxpYXN1c2FnZSJdPSJVc2FnZSAvYWxpYXMgJmx0O25hbWUmZ3Q7ICZsdDtjb21tYW5kJmd0Ozxicj5TZXBlcmF0ZSBtdWx0aXBsZSBjb21tYW5kcyB3aXRoICQ7IHJlcGxhY2UgcGFyYW1ldGVycyB3aXRoICQ8MS05PiBmb3IgcGFyYW1ldGVycyBnaXZlbiBieSBlbmR1c2VyIG9yICRjLCRuLCR0IG9yICRtIGZvciBjdXJyZW50IGNoYW5uZWwsIG5pY2ssIHRhcmdldCBvciBvd24gbmljayByZXNwZWN0aXZlbHk8YnI+QWRkICogdG8gdGhlICQgc3BlY2lmaWVyIHRvIG1ha2UgYXJndW1lbnQgcmVxdWlyZWQsIGEgKyB0byBzdXBwcmVzIHRoZSBmb2xsb3dpbmcgc3BhY2UgYW5kL29yIGEgLSB0byBpbmNsdWRlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIjthMFsiYWxpYXNfbXNnX3VzYWdlIl09IlVzYWdlOiAvbXNnICZsdDtuaWNrfGNoYW5uZWwmZ3Q7ICZsdDt0ZXh0Jmd0OyI7YTBbInRvcGljaXMiXT0iKiBUb3BpYyBmb3IgJTE6ICUyIjthMFsidG9waWNjaGFuZ2VkIl09IiogVG9waWMgZm9yICUxIGNoYW5nZWQgYnkgJTMgdG86ICUyIjthMFsid2hvaXNfbnVoIl09IjxiPiUxPC9iPiBbJTJAJTNdIjthMFsid2hvaXNfaXJjbmFtZSJdPSI8dHI+PHRkPklSQyBuYW1lPC90ZD48dGQ+JTE8L3RkPjwvdHI+IjthMFsid2hvaXNfY2hhbm5lbCJdPSI8dHI+PHRkPkNoYW5uZWxzPC90ZD48dGQ+JTE8L3RkPjwvdHI+IjthMFsid2hvaXNfc2VydmVyIl09Ijx0cj48dGQ+U2VydmVyPC90ZD48dGQ+JTEgKCUyKTwvdGQ+PC90cj4iO2EwWyJ3aG9pc190aW1lcyJdPSI8dHI+PHRkPklkbGU8L3RkPjx0ZD4lMTwvdGQ+PC90cj48dHI+PHRkPlNpZ25vbjwvdGQ+PHRkPiUyPC90ZD48L3RyPiI7YTBbIndob2lzX2VuZCJdPSJFbmQgb2YgV0hPSVMgbGlzdCIiO3M6MjoiaXMiO3M6NDI5MzoiYTA9e307YTBbImRlZnF1aXRyZWFzb24iXT0iTGVhdmluZyB3ZWJjaGF0IjthMFsidXNlcm5hbWUiXT0id2ViY2hhdCI7YTBbInJlYWxuYW1lIl09IlRoZSBuZXcgS3JleU5ldCBXZWJjaGF0IjthMFsiYmFubmVyIl09IiI7YTBbImxvZ2luYnV0dG9uIl09IlNwamFsbCEiO2EwWyJxdWVyeSJdPSJRdWVyeSI7YTBbImdpdmVvcHMiXT0iT3AiO2EwWyJ3aG9pcyJdPSJXaG9pcyI7YTBbIndhaXRtc2ciXT0iUGxlYXNlIHdhaXQgd2hpbGUgY29ubmVjdGluZyB0byB0aGUgY2hhdCBzZXJ2ZXIiO2EwWyJ3YWl0cXVpdG1zZyJdPSJQbGVhc2Ugd2FpdCB3aGlsZSBkaXNjb25uZWN0aW5nIGZyb20gdGhlIHNlcnZlciI7YTBbImVudGVybmlja25hbWUiXT0iVmluc2FtbGVnYXN0IHNrcu+/ve+/vXUgZ++/vWx1bmFmbiI7YTBbIm5pY2t0b29sb25nIl09Ik5pY2sgaXMgdG9vIGxvbmchIjthMFsibmlja2ludmFsaWQiXT0iSW52YWxpZCBzeW1ib2wgaW4gbmlja25hbWUiO2EwWyJuaWNrc3BhY2VzIl09Ik5pY2sgbWF5IG5vdCBjb250YWluIHNwYWNlcyI7YTBbIm5pY2tzdGFydG51bWJlciJdPSJBbHRvdWdoIHlvdXIgbmlja25hbWUgbWF5IGNvbnRhaW4gbnVtYmVycywgaXQgbWF5IG5vdCBzdGFydCB3aXRoIG9uZSI7YTBbIm5pY2ttaW4yY2hhciJdPSJQbGVhc2UgZmlsbCBpbiBhIG5pY2sgb2YgYXQgbGVhc3QgMiBsZXR0ZXJzIjthMFsic3RhdHVzd2luZG93Il09InN0YXR1cyI7YTBbImNvbm5lY3RpbmciXT0iQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCwgc3RhbmQgYnkuLi4uIjthMFsibW90ZHN0YXJ0Il09Ik1lc3NhZ2Ugb2YgdGhlIGRheToiO2EwWyJtb3RkZW5kIl09IkVuZCBvZiBtZXNzYWdlIG9mIHRoZSBkYXkiO2EwWyJzZWxmam9pbmNoYW5uZWwiXT0iSm9pbmVkIGNoYW5uZWwgJTEiO2EwWyJvdGhlcmpvaW5jaGFubmVsIl09IiogJTEgam9pbmVkIGNoYW5uZWwiO2EwWyJvdGhlcnF1aXRjaGFubmVsIl09IiogJTEgaGFzIGxlZnQgaXJjICglMikiO2EwWyJvdGhlcnBhcnRjaGFubmVsIl09IiogJTEgaGFzIGxlZnQgdGhpcyBjaGFubmVsICglMikiO2EwWyJraWNrY2hhbm5lbCJdPSIqICUxIGhhcyBiZWVuIGtpY2tlZCBieSAlMiAoJTMpIjthMFsieW91YXJla2lja2VkIl09IiogWW91IGhhdmUgYmVlbiBraWNrZWQgYnkgJTE6ICUyIjthMFsib3RoZXJuaWNrY2hhbmdlIl09IiogJTEgaXMgbm93IGtub3duIGFzICUyIjthMFsic2VsZm5pY2tjaGFuZ2UiXT0iKiBZb3UgYXJlIG5vdyBrbm93biBhcyAlMSI7YTBbIm1vZGVjaGFubmVsIl09IiogJTEgc2V0cyBtb2RlICUyIjthMFsid2FpdGpvaW4iXT0iSm9pbmluZyBjaGFubmVsLCBQbGVhc2Ugd2FpdCI7YTBbImNhbm5vdF9qb2luIl09IlNvcnJ5LCB5b3UgY2FuJ3Qgam9pbiAlMSI7YTBbImNhbm5vdF9qb2luX2ludml0ZSJdPSJTb3JyeSwgeW91IGNhbid0IGpvaW4gJTE8cD5UaGlzIGNoYW5uZWwgaXMgaW52aXRlIG9ubHk8cD5Zb3UgbXVzdCByZXF1ZXN0IGFuIGludml0YXRpb24gZnJvbSBhbiBvcGVyYXRvciBvbiB0aGUgY2hhbm5lbCBmaXJzdCEiO2EwWyJjYW5ub3Rfam9pbl9iYW4iXT0iU29ycnksIHlvdSBjYW4ndCBqb2luICUxPHA+WW91IGhhdmUgYmVlbiBiYW5uZWQgZnJvbSB0aGlzIGNoYW5uZWwhIjthMFsiY2Fubm90X2pvaW5fbGltaXQiXT0iU29ycnksIHlvdSBjYW4ndCBqb2luICUxPHA+VGhpcyBjaGFubmVsIGhhcyBhIGxpbWl0YXRpb24gb24gdGhlIG51bWJlciBvZiB1c2VycywgYW5kIGl0IGlzIGN1cnJlbnRseSBmdWxsIjthMFsiY2Fubm90X2pvaW5fa2V5Il09IlNvcnJ5LCB5b3UgY2FuJ3Qgam9pbiAlMTxwPlRoaXMgY2hhbm5lbCBpcyBwYXNzd29yZCBwcm90ZWN0ZWQuIjthMFsidHJ5cmVqb2luIl09IjxhIGhyZWY9XCJqYXZhc2NyaXB0OnByb2Nlc3NfY29tbWFuZCgnL2pvaW4gJTEnKVwiPlRyeSB0byBqb2luICUxIGFnYWluPC9hPiI7YTBbInRyeXJlam9pbl9rZXkiXT0iVHJ5IHRvIGpvaW4gJTEgd2l0aCBwYXNzd29yZDogPGZvcm0gb25zdWJtaXQ9XCJwcm9jZXNzX2NvbW1hbmQoJy9qb2luICUxICcgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVqb2lucGFzcycpLnZhbHVlKTsgcmV0dXJuIGZhbHNlO1wiPjxpbnB1dCB0eXBlPXRleHQgaWQ9cmVqb2lucGFzcz48L2Zvcm0+IjthMFsidW5hYmxldG9zcGVhayJdPSIqIE1lc3NhZ2UgaGFzIE5PVCBiZWVuIHNlbnQgdG8gY2hhbm5lbDsgeW91IGFyZSBub3QgYWxsb3dlZCB0byBzcGVhayI7YTBbIm5vc3VjaHRhcmdldCJdPSIqIFRoaXMgcGVyc29uIGlzIG5vIGxvbmdlciBvbmxpbmUsIG9yIGNoYW5nZWQgbmlja25hbWUiO2EwWyJub2N1cnJlbnR0YXJnZXQiXT0iKiBUaGlzIHdpbmRvdyBoYXMgbm8gbmlja25hbWUvY2hhbm5lbCBhdHRhY2hlZCI7YTBbIm5vc3VjaGNtZCJdPSJVbmtub3duIGNvbW1hbmQ6ICUxIjthMFsibm90YWxsb3dlZGNtZCJdPSJOb3QgYWxsb3dlZCBjb21tYW5kOiAlMSI7YTBbImNoYXRlbmRlZCJdPSdZb3UgaGF2ZSBlbmRlZCB0aGUgY2hhdC4gIFlvdSBtYXkgY2xvc2UgdGhpcyB3aW5kb3c8YnI+PGEgaHJlZj0iIyIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOyByZXR1cm4gZmFsc2U7Ij5SZXN0YXJ0IGNoYXQ8L2E+JzthMFsiY2hhdGVuZGVkZXJyb3IiXT0nPGgxPk9vcHM8L2gxPlRoZSBjaGF0IGhhcyBlbmRlZCB1bmV4cGVjdGVkbHk8YnI+PGJyPjxhIGhyZWY9IiMiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsgcmV0dXJuIGZhbHNlOyI+UmVzdGFydCBjaGF0PC9hPic7YTBbImNoYXRlbmRlZGVycm9ybXNnIl09JzxoMT5Pb3BzPC9oMT5UaGUgY2hhdCBoYXMgZW5kZWQgdW5leHBlY3RlZGx5PGJyPjxicj5UaGUgZm9sbG93aW5nIHNlcnZlciBtZXNzYWdlIGlzIGF2YWlsYWJsZTo8YnI+PGJyPiUxPGJyPjxicj48YSBocmVmPSIjIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7IHJldHVybiBmYWxzZTsiPlJlc3RhcnQgY2hhdDwvYT4nO2EwWyJhbGlhc3JlY3Vyc2VlcnJvciJdPSJUb28gbWFueSByZWN1cnNpb25zIGluIHRoZSBjb21tYW5kLCBhYm9ydGluZyBpbiBzZXF1ZW5jZSEiO2EwWyJhbGlhc3Rva2VuZXJyb3IiXT0iVGhlcmUgaXMgYW4gaW52YWxpZCBkb2xsYXIgc2VxdWVuY2UgaW4geW91ciBhbGlhcyAlMSI7YTBbImFsaWFzcmVxdWlyZWRuaWNrIl09IlRoZSBjb21tYW5kICUxIG9ubHkgd29ya3Mgb24gcXVlcnkgd2luZG93cyI7YTBbImFsaWFzcmVxdWlyZWRjaGFubmVsIl09IlRoZSBjb21tYW5kICUxIG9ubHkgd29ya3Mgb24gY2hhbm5lbHMiO2EwWyJhbGlhc3JlcXVpcmVkdGFyZ2V0Il09IlRoZSBjb21tYW5kICUxIG9ubHkgd29ya3Mgb24gcXVlcnkgd2luZG93cyBvciBjaGFubmVscyI7YTBbImFsaWFzcGFyYW1ldGVyZXJyb3IiXT0iVG9vIGZldyBwYXJhbWV0ZXJzIGZvciAlMSI7YTBbImFsaWFzdXNhZ2UiXT0iVXNhZ2UgL2FsaWFzICZsdDtuYW1lJmd0OyAmbHQ7Y29tbWFuZCZndDs8YnI+U2VwZXJhdGUgbXVsdGlwbGUgY29tbWFuZHMgd2l0aCAkOyByZXBsYWNlIHBhcmFtZXRlcnMgd2l0aCAkPDEtOT4gZm9yIHBhcmFtZXRlcnMgZ2l2ZW4gYnkgZW5kdXNlciBvciAkYywkbiwkdCBvciAkbSBmb3IgY3VycmVudCBjaGFubmVsLCBuaWNrLCB0YXJnZXQgb3Igb3duIG5pY2sgcmVzcGVjdGl2ZWx5PGJyPkFkZCAqIHRvIHRoZSAkIHNwZWNpZmllciB0byBtYWtlIGFyZ3VtZW50IHJlcXVpcmVkLCBhICsgdG8gc3VwcHJlcyB0aGUgZm9sbG93aW5nIHNwYWNlIGFuZC9vciBhIC0gdG8gaW5jbHVkZSBmb2xsb3dpbmcgcGFyYW1ldGVycyI7YTBbImFsaWFzX21zZ191c2FnZSJdPSJVc2FnZTogL21zZyAmbHQ7bmlja3xjaGFubmVsJmd0OyAmbHQ7dGV4dCZndDsiO2EwWyJ0b3BpY2lzIl09IiogVG9waWMgZm9yICUxOiAlMiI7YTBbInRvcGljY2hhbmdlZCJdPSIqIFRvcGljIGZvciAlMSBjaGFuZ2VkIGJ5ICUzIHRvOiAlMiI7YTBbIndob2lzX251aCJdPSI8Yj4lMTwvYj4gWyUyQCUzXSI7YTBbIndob2lzX2lyY25hbWUiXT0iPHRyPjx0ZD5JUkMgbmFtZTwvdGQ+PHRkPiUxPC90ZD48L3RyPiI7YTBbIndob2lzX2NoYW5uZWwiXT0iPHRyPjx0ZD5DaGFubmVsczwvdGQ+PHRkPiUxPC90ZD48L3RyPiI7YTBbIndob2lzX3NlcnZlciJdPSI8dHI+PHRkPlNlcnZlcjwvdGQ+PHRkPiUxICglMik8L3RkPjwvdHI+IjthMFsid2hvaXNfdGltZXMiXT0iPHRyPjx0ZD5JZGxlPC90ZD48dGQ+JTE8L3RkPjwvdHI+PHRyPjx0ZD5TaWdub248L3RkPjx0ZD4lMjwvdGQ+PC90cj4iO2EwWyJ3aG9pc19lbmQiXT0iRW5kIG9mIFdIT0lTIGxpc3QiIjtzOjI6ImVuIjtzOjQ0NTc6ImEwPXt9O2EwWyJkZWZxdWl0cmVhc29uIl09IkxlYXZpbmcgd2ViY2hhdCI7YTBbInVzZXJuYW1lIl09IndlYmNoYXQiO2EwWyJyZWFsbmFtZSJdPSJUaGUgbmV3IEtyZXlOZXQgV2ViY2hhdCI7YTBbImJhbm5lciJdPSdDaGF0Ym94IHByb3ZpZGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cua3JleS5uZXQiIHRhcmdldD0iX2JsYW5rIj5LcmV5TmV0PC9hPiwgYnkgY29ubmVjdGluZyB5b3UgYWNjZXB0IG91ciA8YSBocmVmPSJodHRwOi8vd3d3LmtyZXkubmV0L2F1cC9hdXAuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPkFVUDwvYT4nO2EwWyJsb2dpbmJ1dHRvbiJdPSJDaGF0ISI7YTBbInF1ZXJ5Il09IlF1ZXJ5IjthMFsiZ2l2ZW9wcyJdPSJPcCI7YTBbIndob2lzIl09Ildob2lzIjthMFsid2FpdG1zZyJdPSJQbGVhc2Ugd2FpdCB3aGlsZSBjb25uZWN0aW5nIHRvIHRoZSBjaGF0IHNlcnZlciI7YTBbIndhaXRxdWl0bXNnIl09IlBsZWFzZSB3YWl0IHdoaWxlIGRpc2Nvbm5lY3RpbmcgZnJvbSB0aGUgc2VydmVyIjthMFsiZW50ZXJuaWNrbmFtZSJdPSJFbnRlciB5b3VyIG5pY2tuYW1lIHBsZWFzZSI7YTBbIm5pY2t0b29sb25nIl09Ik5pY2sgaXMgdG9vIGxvbmchIjthMFsibmlja2ludmFsaWQiXT0iSW52YWxpZCBzeW1ib2wgaW4gbmlja25hbWUiO2EwWyJuaWNrc3BhY2VzIl09Ik5pY2sgbWF5IG5vdCBjb250YWluIHNwYWNlcyI7YTBbIm5pY2tzdGFydG51bWJlciJdPSJBbHRvdWdoIHlvdXIgbmlja25hbWUgbWF5IGNvbnRhaW4gbnVtYmVycywgaXQgbWF5IG5vdCBzdGFydCB3aXRoIG9uZSI7YTBbIm5pY2ttaW4yY2hhciJdPSJQbGVhc2UgZmlsbCBpbiBhIG5pY2sgb2YgYXQgbGVhc3QgMiBsZXR0ZXJzIjthMFsic3RhdHVzd2luZG93Il09InN0YXR1cyI7YTBbImNvbm5lY3RpbmciXT0iQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCwgc3RhbmQgYnkuLi4uIjthMFsibW90ZHN0YXJ0Il09Ik1lc3NhZ2Ugb2YgdGhlIGRheToiO2EwWyJtb3RkZW5kIl09IkVuZCBvZiBtZXNzYWdlIG9mIHRoZSBkYXkiO2EwWyJzZWxmam9pbmNoYW5uZWwiXT0iSm9pbmVkIGNoYW5uZWwgJTEiO2EwWyJvdGhlcmpvaW5jaGFubmVsIl09IiogJTEgam9pbmVkIGNoYW5uZWwiO2EwWyJvdGhlcnF1aXRjaGFubmVsIl09IiogJTEgaGFzIGxlZnQgaXJjICglMikiO2EwWyJvdGhlcnBhcnRjaGFubmVsIl09IiogJTEgaGFzIGxlZnQgdGhpcyBjaGFubmVsICglMikiO2EwWyJraWNrY2hhbm5lbCJdPSIqICUxIGhhcyBiZWVuIGtpY2tlZCBieSAlMiAoJTMpIjthMFsieW91YXJla2lja2VkIl09IiogWW91IGhhdmUgYmVlbiBraWNrZWQgYnkgJTE6ICUyIjthMFsib3RoZXJuaWNrY2hhbmdlIl09IiogJTEgaXMgbm93IGtub3duIGFzICUyIjthMFsic2VsZm5pY2tjaGFuZ2UiXT0iKiBZb3UgYXJlIG5vdyBrbm93biBhcyAlMSI7YTBbIm1vZGVjaGFubmVsIl09IiogJTEgc2V0cyBtb2RlICUyIjthMFsid2FpdGpvaW4iXT0iSm9pbmluZyBjaGFubmVsLCBQbGVhc2Ugd2FpdCI7YTBbImNhbm5vdF9qb2luIl09IlNvcnJ5LCB5b3UgY2FuJ3Qgam9pbiAlMSI7YTBbImNhbm5vdF9qb2luX2ludml0ZSJdPSJTb3JyeSwgeW91IGNhbid0IGpvaW4gJTE8cD5UaGlzIGNoYW5uZWwgaXMgaW52aXRlIG9ubHk8cD5Zb3UgbXVzdCByZXF1ZXN0IGFuIGludml0YXRpb24gZnJvbSBhbiBvcGVyYXRvciBvbiB0aGUgY2hhbm5lbCBmaXJzdCEiO2EwWyJjYW5ub3Rfam9pbl9iYW4iXT0iU29ycnksIHlvdSBjYW4ndCBqb2luICUxPHA+WW91IGhhdmUgYmVlbiBiYW5uZWQgZnJvbSB0aGlzIGNoYW5uZWwhIjthMFsiY2Fubm90X2pvaW5fbGltaXQiXT0iU29ycnksIHlvdSBjYW4ndCBqb2luICUxPHA+VGhpcyBjaGFubmVsIGhhcyBhIGxpbWl0YXRpb24gb24gdGhlIG51bWJlciBvZiB1c2VycywgYW5kIGl0IGlzIGN1cnJlbnRseSBmdWxsIjthMFsiY2Fubm90X2pvaW5fa2V5Il09IlNvcnJ5LCB5b3UgY2FuJ3Qgam9pbiAlMTxwPlRoaXMgY2hhbm5lbCBpcyBwYXNzd29yZCBwcm90ZWN0ZWQuIjthMFsidHJ5cmVqb2luIl09IjxhIGhyZWY9XCJqYXZhc2NyaXB0OnByb2Nlc3NfY29tbWFuZCgnL2pvaW4gJTEnKVwiPlRyeSB0byBqb2luICUxIGFnYWluPC9hPiI7YTBbInRyeXJlam9pbl9rZXkiXT0iVHJ5IHRvIGpvaW4gJTEgd2l0aCBwYXNzd29yZDogPGZvcm0gb25zdWJtaXQ9XCJwcm9jZXNzX2NvbW1hbmQoJy9qb2luICUxICcgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVqb2lucGFzcycpLnZhbHVlKTsgcmV0dXJuIGZhbHNlO1wiPjxpbnB1dCB0eXBlPXRleHQgaWQ9cmVqb2lucGFzcz48L2Zvcm0+IjthMFsidW5hYmxldG9zcGVhayJdPSIqIE1lc3NhZ2UgaGFzIE5PVCBiZWVuIHNlbnQgdG8gY2hhbm5lbDsgeW91IGFyZSBub3QgYWxsb3dlZCB0byBzcGVhayI7YTBbIm5vc3VjaHRhcmdldCJdPSIqIFRoaXMgcGVyc29uIGlzIG5vIGxvbmdlciBvbmxpbmUsIG9yIGNoYW5nZWQgbmlja25hbWUiO2EwWyJub2N1cnJlbnR0YXJnZXQiXT0iKiBUaGlzIHdpbmRvdyBoYXMgbm8gbmlja25hbWUvY2hhbm5lbCBhdHRhY2hlZCI7YTBbIm5vc3VjaGNtZCJdPSJVbmtub3duIGNvbW1hbmQ6ICUxIjthMFsibm90YWxsb3dlZGNtZCJdPSJOb3QgYWxsb3dlZCBjb21tYW5kOiAlMSI7YTBbImNoYXRlbmRlZCJdPSdZb3UgaGF2ZSBlbmRlZCB0aGUgY2hhdC4gIFlvdSBtYXkgY2xvc2UgdGhpcyB3aW5kb3c8YnI+PGEgaHJlZj0iIyIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOyByZXR1cm4gZmFsc2U7Ij5SZXN0YXJ0IGNoYXQ8L2E+JzthMFsiY2hhdGVuZGVkZXJyb3IiXT0nPGgxPk9vcHM8L2gxPlRoZSBjaGF0IGhhcyBlbmRlZCB1bmV4cGVjdGVkbHk8YnI+PGJyPjxhIGhyZWY9IiMiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsgcmV0dXJuIGZhbHNlOyI+UmVzdGFydCBjaGF0PC9hPic7YTBbImNoYXRlbmRlZGVycm9ybXNnIl09JzxoMT5Pb3BzPC9oMT5UaGUgY2hhdCBoYXMgZW5kZWQgdW5leHBlY3RlZGx5PGJyPjxicj5UaGUgZm9sbG93aW5nIHNlcnZlciBtZXNzYWdlIGlzIGF2YWlsYWJsZTo8YnI+PGJyPiUxPGJyPjxicj48YSBocmVmPSIjIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7IHJldHVybiBmYWxzZTsiPlJlc3RhcnQgY2hhdDwvYT4nO2EwWyJhbGlhc3JlY3Vyc2VlcnJvciJdPSJUb28gbWFueSByZWN1cnNpb25zIGluIHRoZSBjb21tYW5kLCBhYm9ydGluZyBpbiBzZXF1ZW5jZSEiO2EwWyJhbGlhc3Rva2VuZXJyb3IiXT0iVGhlcmUgaXMgYW4gaW52YWxpZCBkb2xsYXIgc2VxdWVuY2UgaW4geW91ciBhbGlhcyAlMSI7YTBbImFsaWFzcmVxdWlyZWRuaWNrIl09IlRoZSBjb21tYW5kICUxIG9ubHkgd29ya3Mgb24gcXVlcnkgd2luZG93cyI7YTBbImFsaWFzcmVxdWlyZWRjaGFubmVsIl09IlRoZSBjb21tYW5kICUxIG9ubHkgd29ya3Mgb24gY2hhbm5lbHMiO2EwWyJhbGlhc3JlcXVpcmVkdGFyZ2V0Il09IlRoZSBjb21tYW5kICUxIG9ubHkgd29ya3Mgb24gcXVlcnkgd2luZG93cyBvciBjaGFubmVscyI7YTBbImFsaWFzcGFyYW1ldGVyZXJyb3IiXT0iVG9vIGZldyBwYXJhbWV0ZXJzIGZvciAlMSI7YTBbImFsaWFzdXNhZ2UiXT0iVXNhZ2UgL2FsaWFzICZsdDtuYW1lJmd0OyAmbHQ7Y29tbWFuZCZndDs8YnI+U2VwZXJhdGUgbXVsdGlwbGUgY29tbWFuZHMgd2l0aCAkOyByZXBsYWNlIHBhcmFtZXRlcnMgd2l0aCAkPDEtOT4gZm9yIHBhcmFtZXRlcnMgZ2l2ZW4gYnkgZW5kdXNlciBvciAkYywkbiwkdCBvciAkbSBmb3IgY3VycmVudCBjaGFubmVsLCBuaWNrLCB0YXJnZXQgb3Igb3duIG5pY2sgcmVzcGVjdGl2ZWx5PGJyPkFkZCAqIHRvIHRoZSAkIHNwZWNpZmllciB0byBtYWtlIGFyZ3VtZW50IHJlcXVpcmVkLCBhICsgdG8gc3VwcHJlcyB0aGUgZm9sbG93aW5nIHNwYWNlIGFuZC9vciBhIC0gdG8gaW5jbHVkZSBmb2xsb3dpbmcgcGFyYW1ldGVycyI7YTBbImFsaWFzX21zZ191c2FnZSJdPSJVc2FnZTogL21zZyAmbHQ7bmlja3xjaGFubmVsJmd0OyAmbHQ7dGV4dCZndDsiO2EwWyJ0b3BpY2lzIl09IiogVG9waWMgZm9yICUxOiAlMiI7YTBbInRvcGljY2hhbmdlZCJdPSIqIFRvcGljIGZvciAlMSBjaGFuZ2VkIGJ5ICUzIHRvOiAlMiI7YTBbIndob2lzX251aCJdPSI8Yj4lMTwvYj4gWyUyQCUzXSI7YTBbIndob2lzX2lyY25hbWUiXT0iPHRyPjx0ZD5JUkMgbmFtZTwvdGQ+PHRkPiUxPC90ZD48L3RyPiI7YTBbIndob2lzX2NoYW5uZWwiXT0iPHRyPjx0ZD5DaGFubmVsczwvdGQ+PHRkPiUxPC90ZD48L3RyPiI7YTBbIndob2lzX3NlcnZlciJdPSI8dHI+PHRkPlNlcnZlcjwvdGQ+PHRkPiUxICglMik8L3RkPjwvdHI+IjthMFsid2hvaXNfdGltZXMiXT0iPHRyPjx0ZD5JZGxlPC90ZD48dGQ+JTE8L3RkPjwvdHI+PHRyPjx0ZD5TaWdub248L3RkPjx0ZD4lMjwvdGQ+PC90cj4iO2EwWyJ3aG9pc19lbmQiXT0iRW5kIG9mIFdIT0lTIGxpc3QiIjt9czo1OiJzdHlsZSI7czozMTgwOiJodG1sLGJvZHl7bWFyZ2luOjBweDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47fWRpdi5mdWxsc2NyZWVue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7bGVmdDowcHg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTt2aXNpYmlsaXR5OmhpZGRlbjtiYWNrZ3JvdW5kLUNvbG9yOiNGRkZGRkY7Zm9udDoxMnB4IFZlcmRhbmEsc2Fucy1zZXJpZjt9Zm9ybSxpbnB1dHttYXJnaW46MHB4O3BhZGRpbmc6MHB4O2Rpc3BsYXk6aW5saW5lO31kaXYjYXNrTmlja0RpYWxvZ3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO31kaXYjYXNrTmlja0Vycm9ye2NvbG9yOiNGRjAwMDA7fWRpdiNrcmV5TmV0QmFubmVye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowcHg7dGV4dC1hbGlnbjpyaWdodDtjb2xvcjojQUFBQUFBO2ZvbnQtc2l6ZToxMHB4O29wYWNpdHk6MC45O3dpZHRoOjEwMCU7Ym9yZGVyLXRvcDoxcHggc29saWQgI0FBQUFBQTt9ZGl2I2tyZXlOZXRCYW5uZXIgQXtjb2xvcjojQUFBQUFBO310YWJsZS5jZW50ZXJsYXlvdXR7d2lkdGg6MTAwJTtoZWlnaHQ6OTklO310YWJsZS5jZW50ZXJsYXlvdXQgdHJ7aGVpZ2h0OjEwMCU7fXRhYmxlLmNlbnRlcmxheW91dCB0ZHt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO31kaXYjbWFpbkNoYXRUb3BpY0Jhcnt3aWR0aDoxMDAlO3RvcDowcHg7bGVmdDowcHg7aGVpZ2h0OjE1cHg7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2IzYjNiMztvdmVyZmxvdzpoaWRkZW47fXNwYW4jdG9waWN7dG9wOjBweDtsZWZ0OjBweDt3aWR0aDoxMDAlO2hlaWdodDoxNHB4O3BhZGRpbmctbGVmdDozcHg7fSN0b3BpYyBBe2NvbG9yOiMwMDAwMDA7fWRpdiNtYWluQ2hhdFdpbmRvd3t3aWR0aDoxcHg7aGVpZ2h0OjFweDtvdmVyZmxvdzphdXRvO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7cGFkZGluZy1sZWZ0OjNweDtwYWRkaW5nLXRvcDozcHg7fWRpdiNtYWluQ2hhdERyYWdnZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxcHg7d2lkdGg6M3B4O2hlaWdodDoxMDBweDt0b3A6MHB4O2N1cnNvcjp3LXJlc2l6ZTtib3JkZXItbGVmdDoxcHggc29saWQgI2IzYjNiMzt9ZGl2I21haW5DaGF0Tmlja2xpc3R7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowcHg7dG9wOjBweDtwYWRkaW5nLXRvcDozcHg7fWRpdiNtYWluQ2hhdElucHV0Q29udGFpbmVye3dpZHRoOjEwMCU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjYjNiM2IzO21hcmdpbi10b3A6MHB4O31idXR0b257Ym9yZGVyLXRvcDoxcHggc29saWQgI2IzYjNiMztib3JkZXItbGVmdDoxcHggc29saWQgI2IzYjNiMztib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNiM2IzYjM7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2IzYjNiMztiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7bWFyZ2luOjJweDttYXJnaW4tdG9wOi0xcHg7Y3Vyc29yOnBvaW50ZXI7fSNtYWluQ2hhdElucHV0Q2xvc2V7cmlnaHQ6M3B4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7fWJ1dHRvbi5hY3RpdmV7Y29sb3I6IzAwMDAwMDtib3JkZXItdG9wOjFweCBzb2xpZCAjRkZGRkZGO31idXR0b24uYWN0aXZpdHkwe2NvbG9yOiNiM2IzYjM7fWJ1dHRvbi5hY3Rpdml0eTF7Y29sb3I6Izk5MDAwMDt9YnV0dG9uLmFjdGl2aXR5Mntjb2xvcjojRkYwMDAwO31idXR0b24uYWN0aXZpdHkze2NvbG9yOiMwMDAwRkY7fS5uaWNrbGlzdCBhe3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOmJsYWNrO30ubmlja2xpc3RvcHRpb25ze2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjQUFBQUFBO3BhZGRpbmctbGVmdDo0cHg7fS5iZ2NvbG9yMHtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO30uYmdjb2xvcjF7YmFja2dyb3VuZC1jb2xvcjpibGFjazt9LmJnY29sb3Iye2JhY2tncm91bmQtY29sb3I6bmF2eTt9LmJnY29sb3Ize2JhY2tncm91bmQtY29sb3I6Z3JlZW47fS5iZ2NvbG9yNHtiYWNrZ3JvdW5kLWNvbG9yOnJlZDt9LmJnY29sb3I1e2JhY2tncm91bmQtY29sb3I6bWFyb29uO30uYmdjb2xvcjZ7YmFja2dyb3VuZC1jb2xvcjpwdXJwbGU7fS5iZ2NvbG9yN3tiYWNrZ3JvdW5kLWNvbG9yOm9yYW5nZTt9LmJnY29sb3I4e2JhY2tncm91bmQtY29sb3I6eWVsbG93O30uYmdjb2xvcjl7YmFja2dyb3VuZC1jb2xvcjpsaW1lO30uYmdjb2xvcjEwe2JhY2tncm91bmQtY29sb3I6dGVhbDt9LmJnY29sb3IxMXtiYWNrZ3JvdW5kLWNvbG9yOmFxdWE7fS5iZ2NvbG9yMTJ7YmFja2dyb3VuZC1jb2xvcjpibHVlO30uYmdjb2xvcjEze2JhY2tncm91bmQtY29sb3I6ZnVjaHNpYTt9LmJnY29sb3IxNHtiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7fS5iZ2NvbG9yMTV7YmFja2dyb3VuZC1jb2xvcjpzaWx2ZXI7fS5mZ2NvbG9yMHtjb2xvcjp3aGl0ZTt9LmZnY29sb3Ixe2NvbG9yOmJsYWNrO30uZmdjb2xvcjJ7Y29sb3I6bmF2eTt9LmZnY29sb3Ize2NvbG9yOmdyZWVuO30uZmdjb2xvcjR7Y29sb3I6cmVkO30uZmdjb2xvcjV7Y29sb3I6bWFyb29uO30uZmdjb2xvcjZ7Y29sb3I6cHVycGxlO30uZmdjb2xvcjd7Y29sb3I6b3JhbmdlO30uZmdjb2xvcjh7Y29sb3I6eWVsbG93O30uZmdjb2xvcjl7Y29sb3I6bGltZTt9LmZnY29sb3IxMHtjb2xvcjp0ZWFsO30uZmdjb2xvcjExe2NvbG9yOmFxdWE7fS5mZ2NvbG9yMTJ7Y29sb3I6Ymx1ZTt9LmZnY29sb3IxM3tjb2xvcjpmdWNoc2lhO30uZmdjb2xvcjE0e2NvbG9yOmdyYXk7fS5mZ2NvbG9yMTV7Y29sb3I6c2lsdmVyO30uaXJjYm9sZHtmb250LXdlaWdodDpib2xkO30uaXJjdW5kZXJsaW5le3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS8qIEFDVElPTiBDT0xPUlMgKi8gLmFjdGlvbntjb2xvcjojMDAwMDAwO30uYWN0aW9uIEF7Y29sb3I6IzAwMDAwMDt9LmNoYW5nZXN7Y29sb3I6IzA5YzYwMDt9LmNoYW5nZXMgQXtjb2xvcjojMDljNjAwO30ubXNne2NvbG9yOiMwMDAwMDA7fS5tc2cgQXtjb2xvcjojMDAwMDAwO30ubm90aWNle2NvbG9yOiM2NjAwMDA7fS5ub3RpY2UgQXtjb2xvcjojNjYwMDAwO30uZXJyb3J7Y29sb3I6I2ZmMDAwMDt9LmVycm9yIEF7Y29sb3I6I2ZmMDAwMDt9LnVybGZpbmRlcnt0ZXh0LWRlY29yYXRpb246bm9uZTt9LmhpbGlnaHR3b3Jke2ZvbnQtc3R5bGU6aXRhbGljO30iO3M6NDoiaHRtbCI7YToyOntpOjA7czoyOTQ6IjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj48IS0tIENoYXRib3ggc29mdHdhcmUgd3JpdHRlbiBieSBQZXRlciBMZXVycywgQWxsIHJpZ2h0cyByZXNlcnZlZCAoYykgMjAwNy0yMDE2IC0gY29udGFjdCBtZSBmb3IgbW9yZSBpbmZvcm1hdGlvbjogcGV0ZXJAcGZvZS5iZSwgcmV2aXNpb24gY3VycmVudCAtLT48aHRtbD48aGVhZD48dGl0bGU+Q2hhdGJveDwvdGl0bGU+ICI7aToxO3M6MjAxMzoiIDwvaGVhZD48Ym9keSBvbmxvYWQ9ImtyZXluZXRjaGF0KCk7IiBvbnJlc2l6ZT0ia3JleWNoYXRsYXlvdXQubGF5T3V0U2NyZWVuKCk7IiBvbm1vdXNlbW92ZT0ia3JleWNoYXRsYXlvdXQuZHJhZ2dlck1vdmUoZXZlbnQpOyIgb25tb3VzZXVwPSJrcmV5Y2hhdGxheW91dC5kcmFnZ2VyRW5kKGV2ZW50KTsiIG9udW5sb2FkPSJrcmV5Y2hhdGxheW91dC5Ccm93c2VyQ2xvc2VDaGF0KCk7Ij48ZGl2IGlkPW1haW5DaGF0IGNsYXNzPWZ1bGxzY3JlZW4+PGRpdiBpZD1tYWluQ2hhdFRvcGljQmFyIGNsYXNzPSJ0b3BpY2JhciI+PHNwYW4gaWQ9dG9waWM+PC9zcGFuPjxpbWcgb25jbGljaz0icHJvY2Vzc19jb21tYW5kKCcvY2xvc2V3aW5kb3cnKTsgcmV0dXJuIGZhbHNlOyIgaWQ9Im1haW5DaGF0SW5wdXRDbG9zZSIgc3JjPSJpbWFnZXMvY2xvc2UucG5nIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgYWx0PSJDbG9zZSBXaW5kb3ciIC8+PC9kaXY+PGRpdiBpZD1tYWluQ2hhdFdpbmRvdz48L2Rpdj48ZGl2IGlkPW1haW5DaGF0Tmlja2xpc3QgY2xhc3M9Im5pY2tsaXN0Ij48L2Rpdj48ZGl2IGlkPW1haW5DaGF0RHJhZ2dlciBvbm1vdXNlZG93bj0ia3JleWNoYXRsYXlvdXQuZHJhZ2dlclN0YXJ0KGV2ZW50KTsiPjwvZGl2PjxkaXYgaWQ9bWFpbkNoYXRJbnB1dENvbnRhaW5lcj48ZGl2IGlkPW1haW5DaGF0U3dpdGNoQmFyPjwvZGl2Pjxmb3JtIG9uc3VibWl0PSJrcmV5Y2hhdGxheW91dC5pbnB1dFN1Ym1pdCgpOyByZXR1cm4gZmFsc2U7IiBhY3Rpb249ImR1bW15LWZvcm0td2lsbC1uZXZlci1iZS1leGVjdXRlZCIgQVVUT0NPTVBMRVRFPW9mZj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImlucHV0ZmllbGQiIGlkPSJtYWluQ2hhdElucHV0RmllbGQiIG1heGxlbmd0aD00MDAgb25LZXlEb3duPSJyZXR1cm4gYWMuaGFuZGxlS2V5RG93bihldmVudCwgdGhpcyk7Ii8+PGltZyBvbmNsaWNrPSJrcmV5Y2hhdGxheW91dC5pbnB1dFN1Ym1pdCgpOyByZXR1cm4gZmFsc2U7IiBpZD0ibWFpbkNoYXRJbnB1dFNlbnQiIHNyYz0iaW1hZ2VzL2VudGVyLnBuZyIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIGFsdD0iU2VuZCBsaW5lIiAvPjwvZm9ybT48L2Rpdj48L2Rpdj48ZGl2IGlkPWFza05pY2sgY2xhc3M9ZnVsbHNjcmVlbj48ZGl2IGlkPWFza05pY2tEaWFsb2c+PHRhYmxlIGNsYXNzPSJjZW50ZXJsYXlvdXQiPjx0cj48dGQ+PGZvcm0gb25zdWJtaXQ9ImtyZXljaGF0bGF5b3V0Lm5pY2tOYW1lU3VibWl0KCk7IHJldHVybiBmYWxzZTsiIGFjdGlvbj0iZHVtbXktZm9ybS13aWxsLW5ldmVyLWJlLWV4ZWN1dGVkLW5pY2siPjxkaXYgaWQ9ImVudGVybmlja25hbWUiPkVudGVyIG5pY2s8L2Rpdj48YnIgLz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bmlja25hbWUgb25rZXlkb3duPSJrcmV5Y2hhdGxheW91dC5uaWNrTmFtZUtleVByZXNzKCk7IiBpZD1hc2tOaWNrTmljayAvPjxiciAvPjxiciAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWxvZ2luYnV0dG9uIHZhbHVlPSJDaGF0ISIgaWQ9bG9naW5idXR0b24gLz48YnIgLz48YnIgLz48ZGl2IGlkPWFza05pY2tFcnJvcj4mbmJzcDs8L2Rpdj48L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PGRpdiBpZD1rcmV5TmV0QmFubmVyPjwvZGl2PjwvZGl2PjxkaXYgaWQ9d2FpdFNjcmVlbiBjbGFzcz1mdWxsc2NyZWVuIHN0eWxlPSJ2aXNpYmlsaXR5OiB2aXNpYmxlOyI+PHRhYmxlIGNsYXNzPSJjZW50ZXJsYXlvdXQiPjx0cj48dGQ+PGltZyBzcmM9ImltYWdlcy93YWl0LmdpZiIgYWx0PSJQbGVhc2UgV2FpdCIvPiAmbmJzcDsgJm5ic3A7IDxzcGFuIGlkPSJ3YWl0U2NyZWVuTXNnIj5Mb2FkaW5nLi4uPC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjxkaXYgaWQ9ZmF0YWxFcnJvciBjbGFzcz1mdWxsc2NyZWVuPjx0YWJsZSBjbGFzcz0iY2VudGVybGF5b3V0Ij48dHI+PHRkPjxkaXYgaWQ9ZmF0YWxFcnJvclRleHQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PC9ib2R5PjwvaHRtbD4gIjt9fQ=='));

function get_language($available) {
    $wantedarray=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
    foreach($wantedarray as $wantedlanguage) {
	$l = $wantedlanguage;
	$l = preg_replace("/;.+\$/","",$l);
	$l = preg_replace("/-.+\$/","",$l);
	if (in_array($l,$available)) {
	    return $l;
	}
    }
    return "en";
}

$language = get_language($chatdata["languages"]);

echo $chatdata["html"][0];
echo '<style type="text/css">';
echo $chatdata["style"];
echo '</style>';
if ($_GET["style"]!=="") {
    echo '<link rel="stylesheet" href="' . htmlspecialchars($_GET["style"]).'" Type="text/css">';
}
echo '<script type="text/javascript">';
echo $chatdata["texts"][$language];
echo ';';
echo $chatdata["code"];
echo '</script>';
echo $chatdata["html"][1];

