{"title":"PHRpdGxlPktpYSBuZXVmcyAyMDI1LCAyMDI2ICZhbXA7IDIwMjcgw6AgTW9udHLDqWFsIHwgVmlsbGUtTWFyaWUgS2lhPC90aXRsZT4=","metas":"PG1ldGEgaXRlbXByb3A9Im5hbWUiIGNvbnRlbnQ9IiAgIj48bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+","js_inline":"Ci8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJaWlotNDE1NTY0OCIKdmFyIGN1cnJlbnRTaXRlSUQ9NDc1O3ZhciBkMmNfZ2FBY2NvdW50cz17ImFsbCI6W10sImludGVybmFsIjpbXX07dmFyIGQyY19hd2NJZD0nQVctMTY1OTQ5NzYwNzInO3ZhciBkMmNfYXdjTGFiZWw9J0o5OHJDTFdkOGJZWkVNajZqT2s5Jzt2YXIgbGVnYWN5X2dhPWZhbHNlO3dpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W107ZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fQpndGFnKCdqcycsbmV3IERhdGUoKSk7ZDJjX2dhQWNjb3VudHMuYWxsLnB1c2goJ0ctWjVROFo1QzdLRicpO2QyY19nYUFjY291bnRzLmFsbC5wdXNoKCdHLUY3Rzg2NUhWS0cnKTtpZihkMmNfYXdjSWQpe2QyY19nYUFjY291bnRzLmFsbC5wdXNoKGQyY19hd2NJZCk7fQooZDJjX2dhQWNjb3VudHMuYWxsfHxbXSkubWFwKGZ1bmN0aW9uKGlkKXtndGFnKCdjb25maWcnLGlkLHsnc2VuZF9wYWdlX3ZpZXcnOmZhbHNlLCdsaW5rZXInOnsnZG9tYWlucyc6SlNPTi5wYXJzZShhdG9iKCJXMTA9IikpLCdjb29raWVfZG9tYWluJzond3d3LnZpbGxlbWFyaWVraWEuY29tJ319KTt9KTsKLypdXT4qLwoKLyo8IVtDREFUQVsqLwovL2RhdGEtc2NvZGVyZWY9IkZMVC0xNTY2NDU4ODk5NjQ1MzQxMTUzODYiCnZhciBkb2NSZWFkeUFycj1bXTt2YXIgcGFnZT0iTkVXQ0FSUyI7dmFyIGZiQ2hhdFJlZj17fTt2YXIgZGVwbG95bWVudFR5cGU9J2xpdmUnO3ZhciBjdXJyZW50U2l0ZUlEPTQ3NTt2YXIgY3VycmVudERlYWxlcklEPTIwNjE7dmFyIGdhVHlwZT0nZ3RhZyc7dmFyIGFsbENhbXBhaWducz1bWyJ2aWxsZW1hcmlla2lhLmNvbSIsIkNvdXJyaWVscy1yZWxhbmNlIiwiVG91dGVzIiwiMTUwNzkiXSxbInZpbGxlbWFyaWVraWEuY29tIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJOZXVmcyIsIjE1MDgwIl0sWyJ2aWxsZW1hcmlla2lhLmNvbSIsIkNvdXJyaWVscy1yZWxhbmNlIiwiT2NjYXNpb24iLCIxNTA4MSJdLFsiVmlsbGVtYXJpZWtpYS5jYSIsIkdvb2dsZSIsIk5ldWYiLCIyNDg3Il0sWyJ2aWxsZW1hcmlla2lhLmNhIiwiU0VNIiwiQWdlbmN5IiwiMzQ1NiJdLFsidmlsbGVtYXJpZWtpYS5jYSIsIlRyYWRlciIsIlJldGFyZ2V0aW5nIiwiNzYxMSJdLFsidmlsbGVtYXJpZWtpYS5jYSIsIkJpbmciLCJCaW5nIiwiNzYxNCJdLFsiVmlsbGVtYXJpZWtpYS5jb20iLCJHb29nbGUiLCJOZXciLCIzMTI4OCJdLFsidmlsbGVtYXJpZWtpYS5jb20iLCJDb3VycmllbHMtcmVsYW5jZSIsIlJcdTAwZTlwb25zZS1ob3JzLW91dmVydHVyZSIsIjMxNTYyIl0sWyJ2aWxsZW1hcmlla2lhLmNvbSIsIkNvdXJyaWVscy1yZWxhbmNlIiwiUlx1MDBlOXBvbnNlLVBvcHVwLW5ldWZzIiwiMzE1NjMiXSxbIlZpbGxlbWFyaWVraWEuY29tIiwiR29vZ2xlIiwiRWNoYW5nZSIsIjM2MTUxIl0sWyJWaWxsZW1hcmlla2lhLmNvbSIsIkdvb2dsZSIsIk9jY2FzaW9uIiwiMzYxNTIiXSxbIlZpbGxlbWFyaWVraWEuY29tIiwiR29vZ2xlIiwiVmxhLW5ldWYiLCIzNjIwMyJdLFsiVmlsbGVtYXJpZWtpYS5jb20iLCJHb29nbGUiLCJWbGEtb2NjYXNpb24iLCIzNjIwNCJdLFsiVmlsbGVtYXJpZWtpYS5jb20iLCJGYWNlYm9vayIsIk5ldyIsIjM3Nzc1Il1dCnZhciByZXRhcmdldGluZ0NhbXBhaWducz1bXQp2YXIgQUlDdXJyZW50Q29uZmlnSUQ9MDt2YXIgQUlJRFBlck5ld0NhcnNGcmVuY2g9bmV3IEFycmF5KCk7dmFyIEFJSURQZXJOZXdDYXJzRW5nbGlzaD1uZXcgQXJyYXkoKTtmdW5jdGlvbiBwYXJzZVF1ZXJ5KHN0cil7aWYoc3RyLmxlbmd0aDwxKXJldHVybnt9CnZhciB2YXJzPXt9LHY7dmFyIHFzPXN0ci5zcGxpdCgnJicpO2Zvcih2YXIgaT0wO2k8cXMubGVuZ3RoO2krKyl7dj1leHBsb2RlKHFzW2ldLCc9JywxKTt2YXJzW3ZbMF1dPXZbMV07fQpyZXR1cm4gdmFyczt9CmZ1bmN0aW9uIGRlY29kZVN0cmluZyhzdHJpbmcsdGltZXMpe2lmKHRpbWVzPT0iInx8dGltZXM9PSJ1bmRlZmluZWQiKXt0aW1lcz0xO30KZm9yKGk9MDtpPHRpbWVzO2krKyl7c3RyaW5nPWRlY29kZVVSSUNvbXBvbmVudChzdHJpbmcpO30KcmV0dXJuIHN0cmluZzt9CmZ1bmN0aW9uIGRlY29kZUhUTUwoZW5jb2RlZCl7aWYodHlwZW9mIGVuY29kZWQhPT0nc3RyaW5nJylyZXR1cm4gZW5jb2RlZDt2YXIgZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtlbC5pbm5lckhUTUw9ZW5jb2RlZDtyZXR1cm4gZWwudmFsdWU7fQpmdW5jdGlvbiBleHBsb2RlKHN0cixzZXBhcmF0b3IsbGltaXQpe3N0cj1zdHIuc3BsaXQoc2VwYXJhdG9yKTtpZihzdHIubGVuZ3RoPD1saW1pdClyZXR1cm4gc3RyO3ZhciByZXQ9c3RyLnNwbGljZSgwLGxpbWl0KTtyZXQucHVzaChzdHIuam9pbihzZXBhcmF0b3IpKTtyZXR1cm4gcmV0O30KZnVuY3Rpb24gZ2V0VXJsVmFycygpe3ZhciBxcz0od2luZG93LmxvY2F0aW9uLnNlYXJjaCkuc3Vic3RyaW5nKDEpO3JldHVybiBwYXJzZVF1ZXJ5KHFzKTt9CmZ1bmN0aW9uIGdldENvb2tpZShjX25hbWUpe3JldHVybiBDb29raWVzLmdldChjX25hbWUpO30KZnVuY3Rpb24gZ2V0Q29va2llKGNfbmFtZSl7dmFyIGNfdmFsdWU9ZG9jdW1lbnQuY29va2llO3ZhciBjX3N0YXJ0PWNfdmFsdWUuaW5kZXhPZigiICIrY19uYW1lKyI9Iik7aWYoY19zdGFydD09LTEpe2Nfc3RhcnQ9Y192YWx1ZS5pbmRleE9mKGNfbmFtZSsiPSIpO30KaWYoY19zdGFydD09LTEpe2NfdmFsdWU9bnVsbDt9ZWxzZXtjX3N0YXJ0PWNfdmFsdWUuaW5kZXhPZigiPSIsY19zdGFydCkrMTt2YXIgY19lbmQ9Y192YWx1ZS5pbmRleE9mKCI7IixjX3N0YXJ0KTtpZihjX2VuZD09LTEpe2NfZW5kPWNfdmFsdWUubGVuZ3RoO30KY192YWx1ZT11bmVzY2FwZShjX3ZhbHVlLnN1YnN0cmluZyhjX3N0YXJ0LGNfZW5kKSk7fQpyZXR1cm4gY192YWx1ZTt9CmZ1bmN0aW9uIHNldENvb2tpZShjX25hbWUsdmFsdWUsZXhkYXlzKXtpc0Nvb2tpZUFsbG93ZWQoY19uYW1lLGZ1bmN0aW9uKGFsbG93ZWQpe2lmKCFhbGxvd2VkKXtyZXR1cm4gQ29va2llcy5zZXQoY19uYW1lLHZhbHVlLGV4ZGF5cywnLycpO2xvZ0Nvb2tpZShjX25hbWUsdmFsdWUsZXhkYXlzKTtyZXR1cm47fQp2YXIgZXhkYXRlPW5ldyBEYXRlKCk7ZXhkYXRlLnNldERhdGUoZXhkYXRlLmdldERhdGUoKStleGRheXMpO3ZhciBjX3ZhbHVlPWVzY2FwZSh2YWx1ZSkrKChleGRheXM9PW51bGwpPyIiOiI7IGV4cGlyZXM9IitleGRhdGUudG9VVENTdHJpbmcoKSkrIjsgcGF0aD0vIjtkb2N1bWVudC5jb29raWU9Y19uYW1lKyI9IitjX3ZhbHVlO30pO30KZnVuY3Rpb24gbG9nQ29va2llKG5hbWUsdmFsdWUsZXhwaXJlcyx0cmllcyl7aWYodHlwZW9mIHRyaWVzPT09J3VuZGVmaW5lZCcpe3RyaWVzPTU7fQppZih0eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj09PSd1bmRlZmluZWQnKXtpZih0cmllcyl7c2V0VGltZW91dChmdW5jdGlvbigpe2xvZ0Nvb2tpZShuYW1lLHZhbHVlLGV4cGlyZXMsdHJpZXMtMSk7fSwxMDAwKTt9fWVsc2V7d2luZG93LkNvb2tpZUxvZ2dlci5sb2cobmFtZSx2YWx1ZSxleHBpcmVzKTt9fQpmdW5jdGlvbiBpc0Nvb2tpZUFsbG93ZWQobmFtZSxjYWxsYmFjayl7Y2FsbGJhY2sodHJ1ZSk7fQpmdW5jdGlvbiBnYVBhZ2VWaWV3KHBwKXsoZDJjX2dhQWNjb3VudHMuYWxsfHxbXSkubWFwKGZ1bmN0aW9uKGlkKXtsZXQgZD17cGFnZV9wYXRoOnBwfTtpZihkZXBsb3ltZW50VHlwZSE9J2xpdmUnfHwnVVMnIT0nQ0EnKXtjb25zb2xlLmxvZygnZ3RhZycsJ2NvbmZpZycsaWQsZCkKcmV0dXJuO30KZ3RhZygnY29uZmlnJyxpZCxkKTt9KTt9O2Z1bmN0aW9uIGdhNFBhZ2VWaWV3KHBwKXtpZihkZXBsb3ltZW50VHlwZSE9J2xpdmUnfHwnVVMnIT0nQ0EnKXtyZXR1cm47fQpndGFnKCdzZXQnLHsncGFnZV9wYXRoJzpwcH0pO2d0YWcoJ2V2ZW50JywncGFnZV92aWV3Jyx7J3NlbmRfdG8nOidHLUY3Rzg2NUhWS0cnfSk7fQpmdW5jdGlvbiBnZXRHYUNsaWVudElkKCl7cmV0dXJuKCgodHlwZW9mIHdpbmRvdy5nYT09PSdvYmplY3QnJiZ3aW5kb3cuZ2EhPT1udWxsKXx8dHlwZW9mIHdpbmRvdy5nYT09PSdmdW5jdGlvbicpJiZ0eXBlb2YgZ2FbJ2dldEFsbCddPT09J2Z1bmN0aW9uJyk\/Z2EuZ2V0QWxsKClbMF0uZ2V0KCdjbGllbnRJZCcpOicnO30KZnVuY3Rpb24gZ2FUcmFjayhhYSxjLGEsbCx2KXtsZXQgYWM9W107Y29uc3QgY3M9ZGVwbG95bWVudFR5cGUhPSdsaXZlJ3x8J1VTJyE9J0NBJztjb25zdCBjaD0obyxkKT0+dHlwZW9mIG8hPT0ndW5kZWZpbmVkJz9vOmQ7YWE9Y2goYWEsJycpO2M9Y2goYywnJyk7YT1jaChhLCcnKTtsPWNoKGwsJycpO3Y9Y2godiwxKTtpZihhYT09J2ludGVybmFsJyl7YWM9ZDJjX2dhQWNjb3VudHMuaW50ZXJuYWw7fWVsc2UgaWYoYWEubGVuZ3RoJiYvXihifGN8ZClcLl90cmFja0V2ZW50Ly50ZXN0KGFhKSYmdHlwZW9mIGQyY19nYUFjY291bnRzW2FhWzBdXSE9J3VuZGVmaW5lZCcpe2FjLnB1c2goZDJjX2dhQWNjb3VudHNbYWFbMF1dKTt9CmlmKGFjLmxlbmd0aCl7YWMubWFwKChpZCk9Pntjb25zdCBkPXtzZW5kX3RvOmlkLGV2ZW50X2FjdGlvbjphLGV2ZW50X2NhdGVnb3J5OmMsZXZlbnRfbGFiZWw6bCx2YWx1ZTp2fTtpZihjcyl7Y29uc29sZS5sb2coYEdBVFJBQ0stR1RBRy1TRU5ELVRPWyR7aWR9XTpgLCdldmVudCcsYSxkKTtyZXR1cm47fQpndGFnKCdldmVudCcsYSxkKTt9KTt9ZWxzZXtjb25zdCBkPXtldmVudF9hY3Rpb246YSxldmVudF9jYXRlZ29yeTpjLGV2ZW50X2xhYmVsOmwsdmFsdWU6dn07aWYoY3Mpe2NvbnNvbGUubG9nKCdHQVRSQUNLLUdUQUctTk8tU0VORC1UTzonLCdldmVudCcsYSxkKTt9ZWxzZXtndGFnKCdldmVudCcsYSxkKTt9fX07ZnVuY3Rpb24gb25Db25maXJtU3VibWl0KGV2ZW50KXtyZXR1cm4gdHJ1ZTt9CmZ1bmN0aW9uIHNldFNlc3Npb25Db29raWUoY19uYW1lLHZhbHVlKXt2YXIgZXhkYXlzPW51bGw7dmFyIGNfdmFsdWU9ZXNjYXBlKHZhbHVlKSsiO2V4cGlyZXM9MDtwYXRoPS8iO2RvY3VtZW50LmNvb2tpZT1jX25hbWUrIj0iK2NfdmFsdWU7bG9nQ29va2llKGNfbmFtZSk7fQpmdW5jdGlvbiBpbml0TENJKHBhcmFtcyxuKXtpZihuPjIwKXJldHVybiBuO3ZhciBuPShuKT9uOjA7aWYodHlwZW9mIExDX0FQST09J3VuZGVmaW5lZCd8fHR5cGVvZiBMQ19JbnZpdGU9PSd1bmRlZmluZWQnKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aW5pdExDSShwYXJhbXMsKytuKTt9LDUwMCk7cmV0dXJuO30KaWYodHlwZW9mIExDX0FQSSE9J3VuZGVmaW5lZCcmJnR5cGVvZiBMQ19JbnZpdGUhPSd1bmRlZmluZWQnJiZwYXJhbXMpe3JldHVybiBMQ19BUEkuc2V0X2N1c3RvbV92YXJpYWJsZXMocGFyYW1zKTt9fQpmdW5jdGlvbiBzYW5pdGl6ZVJlZmVyZXIocmVmZXJlcil7cmV0dXJuIHJlZmVyZXIucmVwbGFjZSgvWyciYCgpPD5cW1xde318IV0vZywnJyk7fQpmdW5jdGlvbiBnZXRSZWZlcnJlclZhckZ1bmN0aW9uKHJlZmVyZXIpe3JldHVybiBmdW5jdGlvbigpe2lmKCcnPT1yZWZlcmVyKXJlZmVyZXI9ZG9jdW1lbnQucmVmZXJyZXI7cmVmZXJlcj1zYW5pdGl6ZVJlZmVyZXIocmVmZXJlcik7dmFyIHFzLHFzaW5kZXg9cmVmZXJlci5pbmRleE9mKCc\/JykrMTtpZihxc2luZGV4PjApe3ZhciBxcz1yZWZlcmVyLnNsaWNlKHFzaW5kZXgpO3JldHVybiBwYXJzZVF1ZXJ5KHFzKTt9CnJldHVybnt9fX0KdmFyIGdldFJlZmVyZXJWYXJzPWdldFJlZmVycmVyVmFyRnVuY3Rpb24oJycpO3ZhciB1dG1fbGFuZGluZ19jb29raWU9KGdldENvb2tpZSgndXRtX2xhbmRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2xhbmRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fbGFuZGluZycpOicnKTtpZih1dG1fbGFuZGluZ19jb29raWUubGVuZ3RoPT0wKXtzZXRDb29raWUoJ3V0bV9sYW5kaW5nJyx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO30KaWYoZGVwbG95bWVudFR5cGU9PSdsaXZlJyl7dmFyIGdlbmVyYXRlR1VJRD1mdW5jdGlvbigpe3ZhciBTND1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMHgxMDAwMCkudG9TdHJpbmcoMTYpO307cmV0dXJuKFM0KCkrUzQoKSsiLSIrClM0KCkrIi0iKwpTNCgpKyItIisKUzQoKSsiLSIrClM0KCkrUzQoKStTNCgpKTt9CnZhciB1cmxWYXJzPWdldFVybFZhcnMoKTt2YXIgcmVmZXJlclZhcnM9Z2V0UmVmZXJlclZhcnMoKTt2YXIgcmVmZXJlcj0nJzt2YXIgcmF3UmVmZXJyZXI9cmVmZXJlcjtyZWZlcmVyPShyZWZlcmVyLmxlbmd0aDwxPzA6cmVmZXJlcik7aWYoJyc9PXJhd1JlZmVycmVyKXJhd1JlZmVycmVyPWRvY3VtZW50LnJlZmVycmVyO3ZhciBpdGVtVHlwZT0nY2FyJztpdGVtVHlwZT0oaXRlbVR5cGUubGVuZ3RoPDE\/MDppdGVtVHlwZSk7aWYoaXNOYU4ocmVmZXJlcikpe3JlZmVyZXI9cmVmZXJlci5yZXBsYWNlKC9cLy9nLCJ8IikucmVwbGFjZSgvXD8vZywiX18iKS5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlQWxsKCclMEEnLCcnKS5yZXBsYWNlQWxsKCclMDknLCcnKS5yZXBsYWNlQWxsKCclMEInLCcnKS5yZXBsYWNlQWxsKCclMDAnLCcnKS5yZXBsYWNlQWxsKCclMEQnLCcnKTt9CnZhciBtYWtlPSIiO2lmKG1ha2UubGVuZ3RoPT0wKW1ha2U9IjAiO3ZhciBtb2RlbD0iIjtpZihtb2RlbC5sZW5ndGg9PTApbW9kZWw9IjAiO3ZhciB5ZWFyPSIiO2lmKHllYXIubGVuZ3RoPT0wKXllYXI9IjAiO3ZhciBpc21vYmlsZT0iMSI7aWYoaXNtb2JpbGUubGVuZ3RoPT0wKWlzbW9iaWxlPSIwIjt2YXIgb3JpZ1NvdXJjZT0iIjt2YXIgb3JpZ0NhbXBhaWduPSIiO3ZhciBvcmlnS2V5d29yZD0iIjtpZih1cmxWYXJzWyJyZWxhbmNlSUQiXSE9dW5kZWZpbmVkKQpzZXRDb29raWUoJ3JlbGFuY2VJRCcsdXJsVmFyc1sicmVsYW5jZUlEIl0sMTgwKTt2YXIgc291cmNlPShnZXRDb29raWUoJ3V0bV9zb3VyY2UnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZScpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2UnKTonJyk7dmFyIHNvdXJjZUNvb2tpZT1zb3VyY2U7dmFyIHNvdXJjZVVSTD0iIjtpZigidXRtX3NvdXJjZSJpbiB1cmxWYXJzKXtpZihzb3VyY2UubGVuZ3RoPT0wKXNvdXJjZT11cmxWYXJzWyd1dG1fc291cmNlJ107c291cmNlVVJMPXVybFZhcnNbJ3V0bV9zb3VyY2UnXTt9CnZhciBjYW1wYWlnbj0oZ2V0Q29va2llKCd1dG1fY2FtcGFpZ24nKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2NhbXBhaWduJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2NhbXBhaWduJyk6JycpO2lmKGNhbXBhaWduLnRvTG93ZXJDYXNlKCk9PSdlY29sZS1ldHVkaWFudCcpe2NhbXBhaWduPScnO3NldENvb2tpZSgndXRtX2NhbXBhaWduJywiIiwxKTt9CnZhciBjYW1wYWlnbkNvb2tpZT1jYW1wYWlnbjt2YXIgY2FtcGFpZ25VUkw9IiI7aWYoInV0bV9jYW1wYWlnbiJpbiB1cmxWYXJzKXtpZihjYW1wYWlnbi5sZW5ndGg9PTApY2FtcGFpZ249dXJsVmFyc1sndXRtX2NhbXBhaWduJ107Y2FtcGFpZ25VUkw9dXJsVmFyc1sndXRtX2NhbXBhaWduJ107fQp2YXIgbWVkaXVtPShnZXRDb29raWUoJ3V0bV9tZWRpdW0nKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX21lZGl1bScpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9tZWRpdW0nKTonJyk7dmFyIG1lZGl1bUNvb2tpZT1tZWRpdW07dmFyIG1lZGl1bVVSTD0iIjtpZigidXRtX21lZGl1bSJpbiB1cmxWYXJzKXtpZihtZWRpdW0ubGVuZ3RoPT0wKW1lZGl1bT11cmxWYXJzWyd1dG1fbWVkaXVtJ107bWVkaXVtVVJMPXVybFZhcnNbJ3V0bV9tZWRpdW0nXTt9CnZhciBjb29raWVJbkNhbXBhaWducz1mYWxzZTt2YXIgdXJsSW5DYW1wYWlnbnM9ZmFsc2U7dmFyIGhhc0dvb2dsZU9yZ2FuaWM9ZmFsc2U7Zm9yKHZhciBpPTA7aTxhbGxDYW1wYWlnbnMubGVuZ3RoO2krKyl7aWYoYWxsQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpJiZhbGxDYW1wYWlnbnNbaV1bMl0udG9Mb3dlckNhc2UoKT09Y2FtcGFpZ25VUkwudG9Mb3dlckNhc2UoKSl1cmxJbkNhbXBhaWducz10cnVlO2lmKGFsbENhbXBhaWduc1tpXVsxXS50b0xvd2VyQ2FzZSgpPT1zb3VyY2VDb29raWUudG9Mb3dlckNhc2UoKSYmYWxsQ2FtcGFpZ25zW2ldWzJdLnRvTG93ZXJDYXNlKCk9PWNhbXBhaWduQ29va2llLnRvTG93ZXJDYXNlKCkpY29va2llSW5DYW1wYWlnbnM9dHJ1ZTtpZihhbGxDYW1wYWlnbnNbaV1bMV0udG9Mb3dlckNhc2UoKT09J2dvb2dsZScmJmFsbENhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pcXVlJyloYXNHb29nbGVPcmdhbmljPXRydWU7fQppZihzb3VyY2VVUkw9PSIiJiZjYW1wYWlnblVSTD09IiImJnNvdXJjZT09IiImJmNhbXBhaWduPT0iIiYmaGFzR29vZ2xlT3JnYW5pYyl7c291cmNlVVJMPSJHb29nbGUiO2NhbXBhaWduVVJMPSJPcmdhbmlxdWUiO3VybEluQ2FtcGFpZ25zPXRydWU7fQppZihjb29raWVJbkNhbXBhaWducz09ZmFsc2UmJnVybEluQ2FtcGFpZ25zPT10cnVlKXtzb3VyY2U9c291cmNlVVJMO2NhbXBhaWduPWNhbXBhaWduVVJMO3NvdXJjZUNvb2tpZT1zb3VyY2VVUkw7Y2FtcGFpZ25Db29raWU9Y2FtcGFpZ25VUkw7fQppZihzb3VyY2VDb29raWUudG9Mb3dlckNhc2UoKT09J3NlbScmJnNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpPT0nZ29vZ2xlJyYmdXJsSW5DYW1wYWlnbnMpe3NvdXJjZT1zb3VyY2VVUkw7Y2FtcGFpZ249Y2FtcGFpZ25VUkw7fQp2YXIgY3VycmVudFNpdGVJRD00NzU7aWYoKGN1cnJlbnRTaXRlSUQ9PTU5Mnx8Y3VycmVudFNpdGVJRD09NDM3fHxjdXJyZW50U2l0ZUlEPT01Nzl8fGN1cnJlbnRTaXRlSUQ9PTU4NSkmJnNvdXJjZUNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nc2VtJyl7c291cmNlQ29va2llPSdHb29nbGUnO3NvdXJjZT0nR29vZ2xlJztjYW1wYWlnbkNvb2tpZT0nTmV1Zic7Y2FtcGFpZ249J05ldWYnO30KaWYoY2FtcGFpZ25Db29raWUudG9Mb3dlckNhc2UoKT09J29yZ2FuaWMnfHxjYW1wYWlnbkNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pcXVlJyl7c291cmNlQ29va2llPScnO2NhbXBhaWduQ29va2llPScnO21lZGl1bUNvb2tpZT0nJzt9CmlmKHNvdXJjZS5sZW5ndGg+MCYmKHNvdXJjZUNvb2tpZS5sZW5ndGg9PTB8fHNvdXJjZUNvb2tpZT09c291cmNlKSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKGNhbXBhaWduLmxlbmd0aD4wJiYoY2FtcGFpZ25Db29raWUubGVuZ3RoPT0wfHxjYW1wYWlnbkNvb2tpZT09Y2FtcGFpZ24pKXNldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO2lmKG1lZGl1bS5sZW5ndGg+MCYmKG1lZGl1bUNvb2tpZS5sZW5ndGg9PTB8fG1lZGl1bUNvb2tpZT09bWVkaXVtKSlzZXRDb29raWUoJ3V0bV9tZWRpdW0nLG1lZGl1bSwxODApO3ZhciBrZXl3b3JkPShnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2tleXdvcmQnKTonJyk7aWYoImt3ImluIHVybFZhcnMpe2tleXdvcmQ9ZGVjb2RlU3RyaW5nKHVybFZhcnNbJ2t3J10sMyk7fQppZihrZXl3b3JkLmxlbmd0aD4wKXNldENvb2tpZSgndXRtX2tleXdvcmQnLGtleXdvcmQsMTgwKTt2YXIgaXNSZXRhcmdldGluZz1mYWxzZTtmb3IodmFyIGk9MDtpPHJldGFyZ2V0aW5nQ2FtcGFpZ25zLmxlbmd0aDtpKyspe2lmKHJldGFyZ2V0aW5nQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpJiZyZXRhcmdldGluZ0NhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT1jYW1wYWlnblVSTC50b0xvd2VyQ2FzZSgpKWlzUmV0YXJnZXRpbmc9dHJ1ZTt9CmlmKGlzUmV0YXJnZXRpbmcpe3ZhciBzb3VyY2VSZXRhcmdldGluZz0oZ2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyk6JycpO3ZhciBjYW1wYWlnblJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKTonJyk7aWYoc291cmNlIT1zb3VyY2VVUkx8fGNhbXBhaWduIT1jYW1wYWlnblVSTCl7aWYoc291cmNlVVJMLmxlbmd0aD4wJiZzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyxzb3VyY2VVUkwsMTgwKTtpZihjYW1wYWlnblVSTC5sZW5ndGg+MCYmY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnLGNhbXBhaWduVVJMLDE4MCk7fQpzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZVVSTCwxODApO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnblVSTCwxODApO30KdmFyIHNvdXJjZVJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKTonJyk7dmFyIGNhbXBhaWduUmV0YXJnZXRpbmc9KGdldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpOicnKTtpZihzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnLHNvdXJjZVJldGFyZ2V0aW5nLDE4MCk7aWYoY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycsY2FtcGFpZ25SZXRhcmdldGluZywxODApO2lmKCFzb3VyY2Upe2lmKHJhd1JlZmVycmVyIT0nJyl7dmFyIHNlbGZIb3N0PShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKS5tYXRjaCgvXltBLXpdKzpcL1wvKFteXC9dKylcLz8uKi8pO2lmKHNlbGZIb3N0KXtzZWxmSG9zdD1zZWxmSG9zdFsxXX0KdmFyIGhvc3Q9KHJhd1JlZmVycmVyLnRvU3RyaW5nKCkpLm1hdGNoKC9eW0Etel0rOlwvXC8oW15cL10rKVwvPy4qLyk7aWYoaG9zdCl7aG9zdD1ob3N0WzFdfWVsc2V7aG9zdD1zZWxmSG9zdDt9CmlmKGhvc3QhPXNlbGZIb3N0KXtob3N0PWhvc3Quc3BsaXQoJy4nKTtpZihob3N0Lmxlbmd0aD4yKXtzb3VyY2U9aG9zdFsxXTt9CmlmKGhvc3QubGVuZ3RoPT0yKXtzb3VyY2U9aG9zdFswXTt9CmlmKHNvdXJjZSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKCFjYW1wYWlnbil7Y2FtcGFpZ249J29yZ2FuaWMnO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO319fX0KaWYoc291cmNlLmxlbmd0aD09MClzb3VyY2U9IjAiO2lmKGNhbXBhaWduLmxlbmd0aD09MCljYW1wYWlnbj0iMCI7aWYoc291cmNlUmV0YXJnZXRpbmcubGVuZ3RoPT0wKXNvdXJjZVJldGFyZ2V0aW5nPSIwIjtpZihjYW1wYWlnblJldGFyZ2V0aW5nLmxlbmd0aD09MCljYW1wYWlnblJldGFyZ2V0aW5nPSIwIjtpZih1cmxWYXJzWyJEaXNwbGF5U291cmNlIl0hPXVuZGVmaW5lZCl7aWYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnKT09J3VuZGVmaW5lZCcpe2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQmJihnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1DYW1wYWlnbicpPT1udWxsfHx0eXBlb2YgZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNQ2FtcGFpZ24nKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTUNhbXBhaWduJyx1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwxODApO2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXSE9dW5kZWZpbmVkJiYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNU291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1Tb3VyY2UnKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTVNvdXJjZScsdXJsVmFyc1sidXRtX3NvdXJjZSJdLDE4MCk7fQpzZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnLHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwxODApO30KdmFyIHNldEdjbGlkQ29va2llPXRydWU7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpe2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1NFTSd8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1RyYWRlcid8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J0dvb2dsZS1uZXJkbWFya2V0aW5nJyl7c2V0R2NsaWRDb29raWU9ZmFsc2U7fX0KaWYodXJsVmFyc1siZ2NsaWQiXSE9dW5kZWZpbmVkJiZzZXRHY2xpZENvb2tpZSl7c2V0Q29va2llKCdnY2xpZCcsdXJsVmFyc1siZ2NsaWQiXSwxODApO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihldmVudCl7aWYoJ3VuZGVmaW5lZCchPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyl7c2F2ZUdDTElEPWZ1bmN0aW9uKCl7aWYoJ3VuZGVmaW5lZCc9PXR5cGVvZiB3aW5kb3cualF1ZXJ5KXtyZXR1cm47fQokLnBvc3QoImh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9nY2xpZC5yZXN0LmFwaS5waHAiLHtzZXNzaW9uaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkLGdjbGlkOnVybFZhcnNbJ2djbGlkJ119KTt9O3RyeXthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclNlc3Npb25DYWxsYmFjayhzYXZlR0NMSUQpO31jYXRjaChlcnJvcil7Y29uc29sZS5sb2coZXJyb3IpO319fSk7fQp3aW5kb3cuYWN0aXZlUGFnZT1wYWdlO3ZhciB1aWQ9KGdldENvb2tpZSgndWlkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3VpZCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3VpZCcpOmdlbmVyYXRlR1VJRCgpKTtzZXRDb29raWUoJ3VpZCcsdWlkLDE4MCk7dmFyIGRlYWxlcmlkPTIwNjE7dmFyIHNpdGVpZD00NzU7d2luZG93LmFjdGl2ZVNpdGVJRD1zaXRlaWQ7d2luZG93LmFjdGl2ZURlYWxlcklEPWRlYWxlcmlkO3ZhciBjYXJpZD0nJztpZihjYXJpZC5sZW5ndGg9PTApY2FyaWQ9IjAiO2Z1bmN0aW9uIHRhZ0J1aWxkKGludGVybmFscyl7cmV0dXJuJzwnKyhpbnRlcm5hbHMuam9pbignICcpKSsnIC8+Jzt9CnZhciBjYWNoZUNsZWFyZXI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTkpO3ZhciBhZGRUa0ltZz1mdW5jdGlvbihzcmMpe3N3aXRjaChkb2N1bWVudC5yZWFkeVN0YXRlKXtjYXNlImxvYWRpbmciOmRvY3VtZW50LndyaXRlKHRhZ0J1aWxkKFsnaW1nJywnc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7IicsJ3NyYz0iJytzcmMrJyInLCdhbHQ9IiInXSkpO2JyZWFrO2Nhc2UiaW50ZXJhY3RpdmUiOmNhc2UiY29tcGxldGUiOmRlZmF1bHQ6dHJ5e3ZhciBpbWc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7aW1nLnN0eWxlLmNzc1RleHQ9J3dpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7JztpbWcuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7aW1nLnNldEF0dHJpYnV0ZSgnYWx0JywnVHJhY2tpbmcgcGl4ZWwnKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7fWNhdGNoKGV4KXtpZihjb25zb2xlJiZjb25zb2xlLmxvZyljb25zb2xlLmxvZygiRXJyb3IgdGt3aWRnZXQ6ICIrZXgubWVzc2FnZSk7fQpicmVhazt9fTtjYW1wYWlnbj1jYW1wYWlnbi5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlKCclMEEnLCcnKS5yZXBsYWNlKCclMDknLCcnKS5yZXBsYWNlKCclMEInLCcnKS5yZXBsYWNlKCclMDAnLCcnKS5yZXBsYWNlKCclMEQnLCcnKTtzb3VyY2U9c291cmNlLnJlcGxhY2UoL1x0L2csJycpLnJlcGxhY2UoL1xuL2csJycpLnJlcGxhY2UoL1xyL2csJycpLnJlcGxhY2UoJyUwQScsJycpLnJlcGxhY2UoJyUwOScsJycpLnJlcGxhY2UoJyUwQicsJycpLnJlcGxhY2UoJyUwMCcsJycpLnJlcGxhY2UoJyUwRCcsJycpO3ZhciB0a3NyYz0nL3Byb3h5X3NhdWIvd2Vic2l0ZUhpdHMvJysKZGVhbGVyaWQrIi8iK3NpdGVpZCsiLyIrY2FyaWQrIi8iK2VzY2FwZSh1aWQpKyIvIitwYWdlKyIvIitlc2NhcGUoc291cmNlKSsiLyIrZXNjYXBlKGNhbXBhaWduKSsiLyIrZXNjYXBlKG1ha2UpKyIvIitlc2NhcGUobW9kZWwpKyIvIit5ZWFyKyIvIisKaXNtb2JpbGUrIi8iK2VuY29kZVVSSUNvbXBvbmVudChyZWZlcmVyKSsiLyIrZXNjYXBlKGl0ZW1UeXBlKSsiLyIrZXNjYXBlKHNvdXJjZVJldGFyZ2V0aW5nKSsiLyIrZXNjYXBlKGNhbXBhaWduUmV0YXJnZXRpbmcpKyIvIitjYWNoZUNsZWFyZXIrJy5naWYnO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZz09J3VuZGVmaW5lZCd8fCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSlhZGRUa0ltZyh0a3NyYyk7dmFyIGtleXdvcmRzPSIiO2lmKCJwImluIHJlZmVyZXJWYXJzJiZyZWZlcmVyLmluZGV4T2YoInlhaG9vIik+LTEpe2tleXdvcmRzPXJlZmVyZXJWYXJzWydwJ107fQppZigicSJpbiByZWZlcmVyVmFycyYmKHJlZmVyZXIuaW5kZXhPZigiZ29vZ2xlIik+LTF8fHJlZmVyZXIuaW5kZXhPZigiYmluZyIpPi0xKSl7a2V5d29yZHM9cmVmZXJlclZhcnNbJ3EnXTt9CnZhciB1TGFuZz0oZ2V0Q29va2llKCdsYW5nJyk9PSdlbicpPydlbic6J2ZyJzt3aW5kb3cuZmJDaGF0UmVmPXtyOidzaXRlJyxjOmNhbXBhaWduLHM6c291cmNlfTt2YXIgY3VzdG9tX3ZhcmlhYmxlcz1be25hbWU6J2xhbmd1YWdlJyx2YWx1ZTp1TGFuZ30se25hbWU6J3V0bV9jYW1wYWlnbicsdmFsdWU6Y2FtcGFpZ259LHtuYW1lOid1dG1fc291cmNlJyx2YWx1ZTpzb3VyY2V9LHtuYW1lOidwYWdlJyx2YWx1ZTpwYWdlfSx7bmFtZTondWlkJyx2YWx1ZTp1aWR9LHtuYW1lOidjYXJpZCcsdmFsdWU6Y2FyaWR9LHtuYW1lOidtYWtlJyx2YWx1ZTptYWtlfSx7bmFtZTonbW9kZWwnLHZhbHVlOm1vZGVsfSx7bmFtZToneWVhcicsdmFsdWU6eWVhcn0se25hbWU6J2lzTW9iaWxlU2l0ZScsdmFsdWU6aXNtb2JpbGV9XTt3aW5kb3cuY1ZhcmlhYmxlcz1jdXN0b21fdmFyaWFibGVzO3dpbmRvdy5yZWxhbmNlSGFuZGxlckZuYz1mdW5jdGlvbigpe3ZhciByZWxhbmNlSUQ9KGdldENvb2tpZSgncmVsYW5jZUlEJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3JlbGFuY2VJRCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3JlbGFuY2VJRCcpOjApO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyE9J3VuZGVmaW5lZCcmJnR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50IT0ndW5kZWZpbmVkJyl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChyZWxhbmNlSUQsJ3JlbGFuY2VJRCcpO2lmKHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSE9dW5kZWZpbmVkKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwnZGlzcGxheVNvdXJjZScpO2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwndXRtX2NhbXBhaWduJyk7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fc291cmNlIl0sJ3V0bV9zb3VyY2UnKTt9fQplbHNlCnNldFRpbWVvdXQod2luZG93LnJlbGFuY2VIYW5kbGVyRm5jLDEwMDApO307dmFyIGluaXRGPWZ1bmN0aW9uKCl7aW5pdExDSShjdXN0b21fdmFyaWFibGVzKTt3aW5kb3cucmVsYW5jZUhhbmRsZXJGbmMoKTt9O2lmKHdpbmRvdy5hdHRhY2hFdmVudCl3aW5kb3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsaW5pdEYpO2Vsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGluaXRGLGZhbHNlKTt2YXIgYWljdXJyZW50cGFnZT0nbmV3Y2Fycy5odG1sJztpZihBSUN1cnJlbnRDb25maWdJRD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KEFJQ3VycmVudENvbmZpZ0lELCdBSUNvbmZpZycpO30KaWYoQUlJRFBlck5ld0NhcnNGcmVuY2gubGVuZ3RoPjAmJmFpY3VycmVudHBhZ2U9PSduZXdjYXJkZXRhaWwuaHRtbCcmJmdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKSE9bnVsbCl7dmFyIGxhc3RuZXd2ZWhpY2xlPWdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKTt2YXIgbGFzdG5ld3ZlaGljbGVzcGxpdD1sYXN0bmV3dmVoaWNsZS5zcGxpdCgnfHx8Jyk7dmFyIGFpbmV3Y2FyaWQ9MDtpZih0eXBlb2YgQUlJRFBlck5ld0NhcnNGcmVuY2hbbGFzdG5ld3ZlaGljbGVzcGxpdFswXStsYXN0bmV3dmVoaWNsZXNwbGl0WzFdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMl1dIT09J3VuZGVmaW5lZCcpYWluZXdjYXJpZD1BSUlEUGVyTmV3Q2Fyc0ZyZW5jaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYodHlwZW9mIEFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV0hPT0ndW5kZWZpbmVkJylhaW5ld2NhcmlkPUFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYoYWluZXdjYXJpZD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGFpbmV3Y2FyaWQsJ0FJQ29uZmlnTmV3Q2FyJyk7fX19CnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZm49ZnVuY3Rpb24oKXtpZih0eXBlb2YgalF1ZXJ5IT0ndW5kZWZpbmVkJyl7cmV0dXJuIGpRdWVyeS5yZWFkeSgpO30Kc2V0VGltZW91dChmbiwxMDApO30KZm4oKTt9LDEwMDApOwovKl1dPiovCgoJLyo8IVtDREFUQVsqLwoJdmFyIHBhcmFtcyA9IGdldFVybFZhcnMoKTsKCS8vc2V0IHBhcmFtIHZhbHVlIGludG8gc2Vzc2lvbiBzdG9yYWdlCglpZiAodHlwZW9mIHNlc3Npb25TdG9yYWdlICE9PSAndW5kZWZpbmVkJykgewoKCQlpZihwYXJhbXMuaGFzT3duUHJvcGVydHkoJ2gnKSl7CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2gnLHBhcmFtcy5oKTsKCQl9CgoJCWlmKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnbScpKXsKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnbScscGFyYW1zLm0pOwoJCX0KCgkJdmFyIGggPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdoJyk7CgkJdmFyIG0gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdtJyk7CgoJCS8vcmVhZCBzZXNzaW9uIGFuZCByZW1vdmUgaGVhZGVyICYgbWVudSBpZiBvcHRpb25zIGhhdmUgYmVlbiBzZXQKCQlpZihoID09PSAnbm8nKXsKCQkJLy9zdHVmZiB0byByZW1vdmUgdGhhdCBpcyBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIGhlYWRlcgoJCQl2YXIgaGVhZGVycyA9IFsKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItaW5mbycpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1mb290ZXInKSwKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5ndWFnZUJhcicpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1sb2dvJyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubW9iaWxlLWhlYWRlciA+ICo6bm90KC5idXJnZXItbWVudS1jb250YWluZXIpJykKCQkJXTsKCgkJCWZvcih2YXIgZWxlbSBvZiBoZWFkZXJzKXsKCQkJCS8vcmVtb3ZlIG5vZGUgbGlzdCBxdWVyaWVzCgkJCQlpZiAoTm9kZUxpc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZWxlbSkpIHsKCQkJCQlmb3IodmFyIF9lbGVtIG9mIGVsZW0pewoJCQkJCQlpZiAoX2VsZW0gIT09IG51bGwpIHsKCQkJCQkJCV9lbGVtLnJlbW92ZSgpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJZWxzZSBpZiAoZWxlbSAhPT0gbnVsbCl7CgkJCQkJZWxlbS5yZW1vdmUoKTsKCQkJCX0KCQkJfQoJCX0KCgkJLy9tZW51CgkJaWYobSA9PT0gJ25vJyl7CgkJCXZhciBtZW51cyA9IFsKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItbWVudScpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJ1cmdlci1tZW51LWNvbnRhaW5lcicpLAoJCQldOwoJCQlmb3IodmFyIGVsZW0gb2YgbWVudXMpewoJCQkJaWYoZWxlbSAhPT0gbnVsbCl7CgkJCQkJZWxlbS5yZW1vdmUoKTsKCQkJCX0KCQkJfQoJCX0KCgkJLy9zaW5jZSBubyBoZWFkZXIgb3IgbWVudSwgcmVtb3ZlIGV2ZXJ5dGhpbmcKCQlpZiAobSA9PT0gJ25vJyAmJiBoID09PSAnbm8nKSB7CgkJCXZhciBoZWFkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubW9iaWxlLWhlYWRlcicpOwoJCQlpZihoZWFkZXIgIT09IG51bGwpewoJCQkJaGVhZGVyLnJlbW92ZSgpOwoJCQl9CgkJfQoKCX0KCS8qXV0+Ki8K","js_rl":"CgkJCQl3aW5kb3cuZ1Rlc3RTcGVlZENvbm49RGF0ZS5ub3coKTsKCQkJCXdpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PWZhbHNlOwoJCQkJd2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD1mYWxzZTsKCQkJCXdpbmRvdy5nRGVsYXllZExvYWRTY3JpcHQ9d2luZG93LmdEZWxheWVkTG9hZFNjcmlwdHx8ZnVuY3Rpb24oYSxkKXtzZXRUaW1lb3V0KCgpPT57dmFyIGU9ITA7Y29uc29sZS5sb2coIkdERUxBWUVETE9BRFNDUklQVDoiK2EsZCk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZClmb3IodmFyIG8gaW4gZClkLmhhc093blByb3BlcnR5KG8pJiZudWxsIT09ZFtvXSYmKC0xIT09WyJkZWZlciIsImFzeW5jIl0uaW5kZXhPZihvKSYmKGU9ITEpLG5bb109ZFtvXSk7bi5zcmM9YSxlJiYobi5hc3luYz0hMCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuKX0pfTsKCQkJCgkJCQkJLyo8IVtDREFUQVsqLwoJCQkJCXZhciBib3hCbG9ja3MgPSB7Im1pbml2YW4iOnsiZmJ4X21pbml2YW5fMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjo0NTMxNywiY29uc28iOjkuMzAwMDAwMDAwMDAwMDAwNzEwNTQyNzM1NzYwMTAwMTg1ODcxMTI0MjY3NTc4MTI1LCJjYXJDYXRlZ29yeSI6Im1pbml2YW4iLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJDYXJuaXZhbCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9taW5pdmFuXzIiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjIsInBvc2l0aW9uIjoyLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NDM5NjYsImNvbnNvIjo4LjgwMDAwMDAwMDAwMDAwMDcxMDU0MjczNTc2MDEwMDE4NTg3MTEyNDI2NzU3ODEyNSwiY2FyQ2F0ZWdvcnkiOiJtaW5pdmFuIiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiQ2Fybml2YWwiLCJzcGVjaWFsT3JkZXIiOjB9fSwiaHlicmlkIjp7ImZieF9oeWJyaWRfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjo1MTI2NywiY29uc28iOjcuNSwiY2FyQ2F0ZWdvcnkiOiJtaW5pdmFuIiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiQ2Fybml2YWwgSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF8yIjp7InZpc2libGUiOnRydWUsImlkIjoyLCJwb3NpdGlvbiI6MiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjUwMDE2LCJjb25zbyI6Ny41OTk5OTk5OTk5OTk5OTk2NDQ3Mjg2MzIxMTk5NDk5MDcwNjQ0Mzc4NjYyMTA5Mzc1LCJjYXJDYXRlZ29yeSI6Im1pbml2YW4iLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJDYXJuaXZhbCBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfaHlicmlkXzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6MzM1NjcsImNvbnNvIjo0LjQwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiTmlybyBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfaHlicmlkXzQiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjQsInBvc2l0aW9uIjo0LCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6MzQxMTYsImNvbnNvIjo0LjQwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiTmlybyBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfaHlicmlkXzUiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjUsInBvc2l0aW9uIjo1LCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6NDY1MTcsImNvbnNvIjo2LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNvcmVudG8gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF82Ijp7InZpc2libGUiOnRydWUsImlkIjo2LCJwb3NpdGlvbiI6NiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjQ5MDY2LCJjb25zbyI6Ni45MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNvcmVudG8gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF83Ijp7InZpc2libGUiOnRydWUsImlkIjo3LCJwb3NpdGlvbiI6NywiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjQ0MzY3LCJjb25zbyI6Ni41OTk5OTk5OTk5OTk5OTk2NDQ3Mjg2MzIxMTk5NDk5MDcwNjQ0Mzc4NjYyMTA5Mzc1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNwb3J0YWdlIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9oeWJyaWRfOCI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6OCwicG9zaXRpb24iOjgsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjo0MjI2NiwiY29uc28iOjYuMjk5OTk5OTk5OTk5OTk5ODIyMzY0MzE2MDU5OTc0OTUzNTMyMjE4OTMzMTA1NDY4NzUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU3BvcnRhZ2UgSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfX0sImVsZWN0cmljIjp7ImZieF9lbGVjdHJpY18xIjp7InZpc2libGUiOnRydWUsImlkIjoxLCJwb3NpdGlvbiI6MSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6NCwicHJpY2UiOjQxODY3LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJFVjQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfZWxlY3RyaWNfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjQsInByaWNlIjo0NjM2NywiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiRVY1Iiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2VsZWN0cmljXzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjozLCJmdWVsIjo0LCJwcmljZSI6NTI3NjYsImNvbnNvIjoxMDAwLCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IkVWNiIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY180Ijp7InZpc2libGUiOnRydWUsImlkIjo0LCJwb3NpdGlvbiI6NCwiZHJpdmV0cmFpbiI6MywiZnVlbCI6NCwicHJpY2UiOjYyODY3LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJFVjkiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfZWxlY3RyaWNfNSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NSwicG9zaXRpb24iOjUsImRyaXZldHJhaW4iOjMsImZ1ZWwiOjQsInByaWNlIjo2Mzc2NiwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiRVY5Iiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2VsZWN0cmljXzYiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjYsInBvc2l0aW9uIjo2LCJkcml2ZXRyYWluIjoxLCJmdWVsIjo0LCJwcmljZSI6NDgzMTcsImNvbnNvIjoxMDAwLCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6Ik5pcm8gRVYiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfZWxlY3RyaWNfNyI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NywicG9zaXRpb24iOjcsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjQsInByaWNlIjo0OTIxNiwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiTmlybyBFViIsInNwZWNpYWxPcmRlciI6MH19LCJjYXIiOnsiZmJ4X2Nhcl8xIjp7InZpc2libGUiOnRydWUsImlkIjoxLCJwb3NpdGlvbiI6MSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjI2OTE3LCJjb25zbyI6NiwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJLNCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9jYXJfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjoyNzIxNiwiY29uc28iOjUuNzk5OTk5OTk5OTk5OTk5ODIyMzY0MzE2MDU5OTc0OTUzNTMyMjE4OTMzMTA1NDY4NzUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiSzQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfY2FyXzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6Mjc0MTcsImNvbnNvIjo2LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6Iks0IEhhdGNoYmFjayIsInNwZWNpYWxPcmRlciI6MH19LCJwaGV2Ijp7ImZieF9waGV2XzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxNiwicHJpY2UiOjM5NTY3LCJjb25zbyI6NC45MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6Ik5pcm8gUGx1Zy1JbiBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfcGhldl8yIjp7InZpc2libGUiOnRydWUsImlkIjoyLCJwb3NpdGlvbiI6MiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MTYsInByaWNlIjo0MDExNiwiY29uc28iOjQuOTAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJOaXJvIFBsdWctSW4gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X3BoZXZfMyI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MywicG9zaXRpb24iOjMsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjE2LCJwcmljZSI6NTE1MTcsImNvbnNvIjo2LjI5OTk5OTk5OTk5OTk5OTgyMjM2NDMxNjA1OTk3NDk1MzUzMjIxODkzMzEwNTQ2ODc1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJraWEiLCJjYXJNb2RlbCI6IlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfcGhldl80Ijp7InZpc2libGUiOnRydWUsImlkIjo0LCJwb3NpdGlvbiI6NCwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MTYsInByaWNlIjo1NDA2NiwiY29uc28iOjYuOTAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJTb3JlbnRvIFBsdWctSW4gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X3BoZXZfNSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NSwicG9zaXRpb24iOjUsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjE2LCJwcmljZSI6NDkyNjcsImNvbnNvIjo2LjQwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfcGhldl82Ijp7InZpc2libGUiOnRydWUsImlkIjo2LCJwb3NpdGlvbiI6NiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MTYsInByaWNlIjo1MTA2NiwiY29uc28iOjYuNzAwMDAwMDAwMDAwMDAwMTc3NjM1NjgzOTQwMDI1MDQ2NDY3NzgxMDY2ODk0NTMxMjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9fSwic3V2Ijp7ImZieF9zdXZfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjoyODkxNywiY29uc28iOjYuNzk5OTk5OTk5OTk5OTk5ODIyMzY0MzE2MDU5OTc0OTUzNTMyMjE4OTMzMTA1NDY4NzUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU2VsdG9zIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X3N1dl8yIjp7InZpc2libGUiOnRydWUsImlkIjoyLCJwb3NpdGlvbiI6MiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjI5MTE2LCJjb25zbyI6Ni43OTk5OTk5OTk5OTk5OTk4MjIzNjQzMTYwNTk5NzQ5NTM1MzIyMTg5MzMxMDU0Njg3NSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJTZWx0b3MiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NDI0MTYsImNvbnNvIjo4LjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU29yZW50byIsInNwZWNpYWxPcmRlciI6MH0sImZieF9zdXZfNCI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NCwicG9zaXRpb24iOjQsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjoyNjUxNiwiY29uc28iOjcsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU291bCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9zdXZfNSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NSwicG9zaXRpb24iOjUsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjozNTE2NywiY29uc28iOjcsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU3BvcnRhZ2UiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzYiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjYsInBvc2l0aW9uIjo2LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MzQxNjYsImNvbnNvIjo3LjA5OTk5OTk5OTk5OTk5OTY0NDcyODYzMjExOTk0OTkwNzA2NDQzNzg2NjIxMDkzNzUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImtpYSIsImNhck1vZGVsIjoiU3BvcnRhZ2UiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzciOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjcsInBvc2l0aW9uIjo3LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NTQ0MTYsImNvbnNvIjoxMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoia2lhIiwiY2FyTW9kZWwiOiJUZWxsdXJpZGUiLCJzcGVjaWFsT3JkZXIiOjB9fX07CgkJCQkJLyotLSovCgkJCQkJdmFyIGJveFBvc2l0aW9ucyA9IHsiZmJ4X21pbml2YW5fMSI6MSwiZmJ4X21pbml2YW5fMiI6MiwiZmJ4X2h5YnJpZF8xIjoxLCJmYnhfaHlicmlkXzIiOjIsImZieF9lbGVjdHJpY18xIjoxLCJmYnhfZWxlY3RyaWNfMiI6MiwiZmJ4X2VsZWN0cmljXzMiOjMsImZieF9lbGVjdHJpY180Ijo0LCJmYnhfZWxlY3RyaWNfNSI6NSwiZmJ4X2Nhcl8xIjoxLCJmYnhfY2FyXzIiOjIsImZieF9jYXJfMyI6MywiZmJ4X2VsZWN0cmljXzYiOjYsImZieF9lbGVjdHJpY183Ijo3LCJmYnhfaHlicmlkXzMiOjMsImZieF9oeWJyaWRfNCI6NCwiZmJ4X3BoZXZfMSI6MSwiZmJ4X3BoZXZfMiI6MiwiZmJ4X3N1dl8xIjoxLCJmYnhfc3V2XzIiOjIsImZieF9zdXZfMyI6MywiZmJ4X2h5YnJpZF81Ijo1LCJmYnhfaHlicmlkXzYiOjYsImZieF9waGV2XzMiOjMsImZieF9waGV2XzQiOjQsImZieF9zdXZfNCI6NCwiZmJ4X3N1dl81Ijo1LCJmYnhfc3V2XzYiOjYsImZieF9oeWJyaWRfNyI6NywiZmJ4X2h5YnJpZF84Ijo4LCJmYnhfcGhldl81Ijo1LCJmYnhfcGhldl82Ijo2LCJmYnhfc3V2XzciOjd9OwoJCQkJCS8qKiBGaWx0ZXIgSlMgaW4gbmV3Y2Fycy5qcyAqKi8KCQkJCQkvKl1dPiovCgkJCQkKCgkJCQl2YXIgTGVhZENvbmZpZ3MgPSAodHlwZW9mIExlYWRDb25maWdzICE9ICd1bmRlZmluZWQnKSA\/IExlYWRDb25maWdzIDoge307CgoJCQkJbGV0IGFjdGl2ZUxhbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0aXZlc2l0ZWxhbmd1YWdlJykgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0aXZlc2l0ZWxhbmd1YWdlJykudmFsdWUgOiAnRlJFTkNIJzsKCgkJCQlMZWFkQ29uZmlncy5EZWFsZXJBcHBvaW50bWVudCA9IHsKCgkJCQkJdGl0bGU6IChhY3RpdmVMYW5nID09ICdFTkdMSVNIJyA\/ICdSZXF1ZXN0IGFuIGFwcG9pbnRtZW50JyA6ICdQcmVuZHJlIFJlbmRlei12b3VzJyksCgkJCQkJY2xvc2VPblN1Ym1pdCA6IHRydWUsCgkJCQkJbmFtZSA6ICdEZWFsZXJBcHBvaW50bWVudCcsCgoJCQkJCW9uQmVmb3JlT3BlbjogZnVuY3Rpb24obGVhZENvbmYpewogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCdkZWFsZXJBcHBvaW50bWVudC5zdGFydCcpOwoKCQkJCQkJY29uc3QgdGltZVR4dEVsID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkVGltZScpOwoJCQkJCQljb25zdCB0aW1lSW5wdXQgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCdbbmFtZT0iZGF0ZSJdJyk7CgkJCQkJCWNvbnN0IHBpY2tlciA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5kYXRlcGlja2VyJyk7CgkJCQkJCWNvbnN0IHBob25lRWwgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCdbbmFtZT0icGhvbmVudW0iXScpOwoJCQkJCQljb25zdCBob3Vyc0Jsb2NrID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLmhvdXJzTGlzdCcpOwoJCQkJCQlsZXQgZGF5Tm9kZXMgPSBBcnJheS5mcm9tKGhvdXJzQmxvY2suY2hpbGRyZW4pOwoJCQkJCQlsZXQgZGF0ZUZvcm1hdCA9ICBhY3RpdmVMYW5nID09ICdFTkdMSVNIJyA\/ICdGIGogWSwgSDppJyA6ICdqIEYgWSwgSDppJzsKCgoJCQkJCQljb25zdCBzZXRTZWxlY3RlZCA9IChzZWxlY3RlZERhdGVzLCBkYXRlU3RyLCBpbnN0YW5jZSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRseVNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZXNbMF0gfHwgbmV3IERhdGUoKTsvL2Rvbid0IHBsYXkgd2l0aCB0aGlzIG9yIG1pZ2h0IGFmZmVjdCBkYXRlL3RpbWUgc2VsZWN0aW9uCgkJCQkJCQlsZXQgZGF5TnVtID0gY3VycmVudGx5U2VsZWN0ZWREYXRlLmdldERheSgpOwoKCQkJCQkJCWRheU51bSA9IGRheU51bSA9PSAwID8gNyA6IGRheU51bTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF5TWluVGltZSA9IGRheU5vZGVzW2RheU51bSAtIDFdLmRhdGFzZXQubWluaG91ciB8fCAnMDk6MDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRheU1heFRpbWUgPSBkYXlOb2Rlc1tkYXlOdW0gLSAxXS5kYXRhc2V0Lm1heGhvdXIgfHwgJzE3OjAwJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21pblRpbWUgbWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBkYXRlIGlzIHRvZGF5LCBtaW5UaW1lIG5lZWRzIHRvIGJlIGEgbWluaW11bSBvZiAxaG91ciBsYXRlciBmcm9tIGN1cnJlbnQgdGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2VsZWN0ZWREYXRlc1swXSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjY2VwdGVkRXhjZXB0aW9uID0gNTsvL21pbnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWxlY3RlZERhdGVzWzBdLnRvRGF0ZVN0cmluZygpID09IG5vdy50b0RhdGVTdHJpbmcoKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaW5Ib3VyID0gbm93LmdldEhvdXJzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaW5NaW51dGUgPSBub3cuZ2V0TWludXRlcygpICsgNjA7Ly9hZGQgMSBob3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbk1pbnV0ZSA+PSA2MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Ib3VyICs9IE1hdGguZmxvb3IobWluTWludXRlIC8gNjApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWludXRlID0gbWluTWludXRlICUgNjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtaW5NaW51dGUgJSAxNSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tYWtlIGl0IHNvIHRoYXQgbWludXRlcyBhcmUgZWl0aGVyIHJvdW5kZWQgdG8gbmV4dCAxNW1pbiBpbmNyZW1lbnQgb3IgdG8gdGhlIHByZXZpb3VzIG9uZSBpZiB3aXRoaW4gYWNjZXB0ZWRFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtaW5NaW51dGUgJSAxNSA8PSBhY2NlcHRlZEV4Y2VwdGlvbil7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1pbnV0ZSA9IG1pbk1pbnV0ZSAtIChtaW5NaW51dGUgJSAxNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoKG1pbk1pbnV0ZSAlIDE1ID4gYWNjZXB0ZWRFeGNlcHRpb24pKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWludXRlID0gbWluTWludXRlICsgKDE1IC0gKG1pbk1pbnV0ZSAlIDE1KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kbyBub3RoaW5nLCBhbHJlYWR5IGF0IGluY3JlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbkhvdXIgPj0gMjQpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ubyBtb3JlIGF2YWlsYWJsZSB0aW1lIHRvZGF5LCBzZXQgdG8gbmV4dCBkYXkgYXQgMDk6MDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnNldERhdGUobmV3IERhdGUoKS5mcF9pbmNyKDEpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlLnNldCgnbWluVGltZScsIGRheU1pblRpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU1pblRpbWUgPSBTdHJpbmcobWluSG91cikucGFkU3RhcnQoMiwnMCcpICsgJzonICsgU3RyaW5nKG1pbk1pbnV0ZSkucGFkU3RhcnQoMiwnMCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbWF4VGltZSBtYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXN0IGFwcG9pbnRtZW50IHRpbWUgbWFuYWdlbWVudCAoMTVtaW4gYmVmb3JlIGNsb3NpbmcgdGltZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbY2xvc2luZ0hvdXJzLCBjbG9zaW5nTWludXRlc10gPSBkYXlNYXhUaW1lLnNwbGl0KCc6JykubWFwKE51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF5RGF0ZSA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlEYXRlLnNldEhvdXJzKGNsb3NpbmdIb3VycywgY2xvc2luZ01pbnV0ZXMsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RGF0ZS5zZXRNaW51dGVzKGRheURhdGUuZ2V0TWludXRlcygpIC0gMTUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3JtYXQgdGhlIG5ldyB0aW1lIGJhY2sgaW50byAnSEg6bW0nIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdHVhbENsb3NpbmdIb3VycyA9IGRheURhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0dWFsQ2xvc2luZ01pbnV0ZXMgPSBkYXlEYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlNYXhUaW1lID0gYWN0dWFsQ2xvc2luZ0hvdXJzICsgJzonICsgYWN0dWFsQ2xvc2luZ01pbnV0ZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZXQgc3RhcnQvZW5kIHRpbWUgZm9yIHRoYXQgZGF5CgkJCQkJCQlpbnN0YW5jZS5zZXQoJ21pblRpbWUnLCBkYXlNaW5UaW1lKTsKCQkJCQkJCWluc3RhbmNlLnNldCgnbWF4VGltZScsIGRheU1heFRpbWUpOwoKCQkJCQkJCS8vU2V0IGN1cnJlbnQgZGF0ZSBpbml0aWFsbHkKCQkJCQkJCXRpbWVUeHRFbC50ZXh0Q29udGVudCA9ICFzZWxlY3RlZERhdGVzLmxlbmd0aAoJCQkJCQkJCQkJCQkgID8gaW5zdGFuY2UuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLmZwX2luY3IoMSksIChhY3RpdmVMYW5nID09ICdFTkdMSVNIJyA\/ICdGIGogWSwgMTI6MDAnIDogJ2ogRiBZLCAxMjowMCcpKQoJCQkJCQkJCQkJCQkgIDogZGF0ZVN0cjsKCgkJCQkJCQkvL2dldCB0aGUgZGF0ZSBpbiBlbmdsaXNoIGFuZCBmcmVuY2ggZm9yIHRoZSBsb2NhbCBzdG9yYWdlCgkJCQkJCQl0aW1lVHh0RWwuZGF0YXNldC5lbiA9IGluc3RhbmNlLmZvcm1hdERhdGUobmV3IERhdGUoKS5mcF9pbmNyKDEpLCdGIGogWSwgMTI6MDAnLCBmbGF0cGlja3IubDEwbnMuZW4pOwoJCQkJCQkJdGltZVR4dEVsLmRhdGFzZXQuZnIgPSBpbnN0YW5jZS5mb3JtYXREYXRlKG5ldyBEYXRlKCkuZnBfaW5jcigxKSwnaiBGIFksIDEyOjAwJywgZmxhdHBpY2tyLmwxMG5zLmZyKTsKCgkJCQkJCQl0aW1lSW5wdXQudmFsdWUgPSB0aW1lVHh0RWwudGV4dENvbnRlbnQ7CgoJCQkJCQkJaW5zdGFuY2UuaG91ckVsZW1lbnQuYmx1cigpOwoJCQkJCQl9OwoKCQkJCQkJbGV0IGNsb3NlZERheXMgPSBbXTsKCQkJCQkJZGF5Tm9kZXMuZm9yRWFjaCgoZSxpKSA9PiB7CgkJCQkJCQlpZigoZS5kYXRhc2V0LmNsb3NlZCB8fCAnMCcpID09ICcxJykgY2xvc2VkRGF5cy5wdXNoKGkpCgkJCQkJCX0pOwoKCQkJCQkJLy9BZGQgZnJlbmNoIGxvY2FsaXphdGlvbiB3aGVuIG5lZWRlZAoJCQkJCQlpZihhY3RpdmVMYW5nID09ICdGUkVOQ0gnKXsKCQkJCQkJCWZsYXRwaWNrci5sb2NhbGl6ZShmbGF0cGlja3IubDEwbnMuZnIpOwoJCQkJCQl9CgoKCgkJCQkJCWNvbnN0IGZwID0gZmxhdHBpY2tyKHBpY2tlciwgewoJCQkJCQkJaW5saW5lOnRydWUsCgkJCQkJCQllbmFibGVUaW1lOiB0cnVlLAoJCQkJCQkJbWluRGF0ZTogJ3RvZGF5JywvL2JhY2sgZnJvbSBuZXcgRGF0ZSgpLmZwX2luY3IoMSkgYnV0IGFsc28gYWRkZWQgdGltZSB2YWxpZGF0aW9uIGZvciBtaW5UaW1lCgkJCQkJCQltaW5UaW1lOiAiMDk6MDAiLAoJCQkJCQkJbWF4VGltZTogIjE3OjAwIiwKCQkJCQkJCWRhdGVGb3JtYXQ6IGRhdGVGb3JtYXQsLy8iRCwgaiBGIFksIEg6aSIsCgkJCQkJCQltaW51dGVJbmNyZW1lbnQ6MTUsCgkJCQkJCQl0aW1lXzI0aHI6dHJ1ZSwKCQkJCQkJCW9uQ2hhbmdlOiBzZXRTZWxlY3RlZCwKCQkJCQkJCW9uUmVhZHk6IHNldFNlbGVjdGVkLAoJCQkJCQkJZGlzYWJsZTogWwoJCQkJCQkJCWZ1bmN0aW9uKGRhdGUpewoJCQkJCQkJCQlsZXQgZGF5TnVtID0gZGF0ZS5nZXREYXkoKSA9PSAwID8gNyA6IGRhdGUuZ2V0RGF5KCk7CgkJCQkJCQkJCXJldHVybiBjbG9zZWREYXlzLmluY2x1ZGVzKGRheU51bSAtIDEpOwoJCQkJCQkJCX0KCQkJCQkJCV0sCgkJCQkJCQlsb2NhbGU6IHsKCQkJCQkJCQlmaXJzdERheU9mV2VlazogMSAvLyBzdGFydCB3ZWVrIG9uIE1vbmRheQoJCQkJCQkJfQoKCQkJCQkJfSk7CgoJCQkJCX0sCgoJCQkJCW9uQmVmb3JlU3VibWl0IDogKGxlYWRDb25mKSA9PiB7CgkJCQkJCWNvbnN0IHRpbWVUeHRFbCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZFRpbWUnKTsKCQkJCQkJZW1haWxIYW5kbGVyLmRlYWxlckFwcG9pbnRtZW50RGF0YSA9IHsKCQkJCQkJCWRhdGUgOiB0aW1lVHh0RWwudGV4dENvbnRlbnQKCQkJCQkJfTsKCQkJCQl9LAoKCQkJCQlvbkFmdGVyU3VibWl0IDogKGxlYWRDb25mKSA9PiB7CgoJCQkJCQljb25zdCB0aW1lVHh0RWwgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWRUaW1lJyk7CgoJCQkJCQljb25zdCBjYiA9IHRyYWNrU3RlcCA9PiB7CgkJCQkJCQl0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZnIgPSB0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZnIucmVwbGFjZSgneyRBUFBPSU5UX0RBVEV9JywgdGltZVR4dEVsLmRhdGFzZXQuZnIpOwoJCQkJCQkJdHJhY2tTdGVwLmRhdGFzZXQuY29tcGxfdHh0X2VuID0gdHJhY2tTdGVwLmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoJ3skQVBQT0lOVF9EQVRFfScsIHRpbWVUeHRFbC5kYXRhc2V0LmVuKTsKCQkJCQkJfTsKCgkJCQkJCWxldCBjb21wbGV0ZUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCd0cmFja3N0ZXAuY29tcGxldGUnLHsKCQkJCQkJCWRldGFpbDp7CgkJCQkJCQkJc3RlcElkIDogJ0RlYWxlckFwcG9pbnRtZW50JywKCQkJCQkJCQlvbkNvbXBsZXRlIDogY2IKCQkJCQkJCX0KCQkJCQkJfSk7CgoJCQkJCQlkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGNvbXBsZXRlRXZlbnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcignZGVhbGVyQXBwb2ludG1lbnQuZW5kJyk7CgkJCQkJfQoKCQkJCX0KCgkJCQovKiogL20vanMvc2tlbGV0b24uYmVmb3JlLmpzICoqLwp2YXIgX19fZDJjX3NrZWxldG9uYmVmb3JlanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMzowMyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfc2tlbGV0b25iZWZvcmVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM3OjU3IjsidXNlIHN0cmljdCI7X19fZDJjX3NrZWxldG9uYmVmb3JlanNfY19vbj0iMjAyMy0wNi0wMSAxMjozMDoxOSI7InVzZSBzdHJpY3QiO2xldCAkanNjb21wJG51bGxpc2gkdG1wMDt3aW5kb3cuZ1NwZWVkQ29ubj1wYXJzZUludChNYXRoLmZsb29yKChEYXRlLm5vdygpLShudWxsIT0oJGpzY29tcCRudWxsaXNoJHRtcDA9d2luZG93LmdUZXN0U3BlZWRDb25uKT8kanNjb21wJG51bGxpc2gkdG1wMDowKSkvMUUzKSk7bGV0ICRqc2NvbXAkbnVsbGlzaCR0bXAxO2NvbnNvbGUubG9nKCJHU1BFRUQtQkVGT1JFOiIrKERhdGUubm93KCktKG51bGwhPSgkanNjb21wJG51bGxpc2gkdG1wMT13aW5kb3cuZ1Rlc3RTcGVlZENvbm4pPyRqc2NvbXAkbnVsbGlzaCR0bXAxOjApKS8xRTMpOwovKiogL20vanMvanF1ZXJ5LmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDU6NDkiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzE6MzMiOyJ1c2Ugc3RyaWN0IjsKIWZ1bmN0aW9uKG4sZGEpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPW4uZG9jdW1lbnQ\/ZGEobiwhMCk6ZnVuY3Rpb24od2Epe2lmKCF3YS5kb2N1bWVudCl0aHJvdyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBkYSh3YSl9OmRhKG4pfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihuLGRhKXtmdW5jdGlvbiB3YShhLGIsYyl7dmFyIGUsZixnPShjPWN8fEwpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKGcudGV4dD1hLGIpZm9yKGUgaW4gTGMpKGY9YltlXXx8Yi5nZXRBdHRyaWJ1dGUmJmIuZ2V0QXR0cmlidXRlKGUpKSYmZy5zZXRBdHRyaWJ1dGUoZSxmKTtjLmhlYWQuYXBwZW5kQ2hpbGQoZykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnKX1mdW5jdGlvbiBVKGEpe3JldHVybiBudWxsPT1hP2ErCiIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE\/TWJba2MuY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfWZ1bmN0aW9uIGViKGEpe3ZhciBiPSEhYSYmImxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPVUoYSk7cmV0dXJuIU0oYSkmJiFrYihhKSYmKCJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiYwPGImJmItMSBpbiBhKX1mdW5jdGlvbiBYKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBiYShhLGIpe3JldHVybiBiPyJceDAwIj09PWE\/Ilx1ZmZmZCI6YS5zbGljZSgwLC0xKSsiXFwiK2EuY2hhckNvZGVBdChhLmxlbmd0aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrYX1mdW5jdGlvbiBqYShhLGIsYyl7cmV0dXJuIE0oYik\/ZC5ncmVwKGEsZnVuY3Rpb24oZSxmKXtyZXR1cm4hIWIuY2FsbChlLGYsZSkhPT1jfSk6Yi5ub2RlVHlwZT9kLmdyZXAoYSwKZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1iIT09Y30pOiJzdHJpbmciIT10eXBlb2YgYj9kLmdyZXAoYSxmdW5jdGlvbihlKXtyZXR1cm4tMTxOYS5jYWxsKGIsZSkhPT1jfSk6ZC5maWx0ZXIoYixhLGMpfWZ1bmN0aW9uIGxiKGEsYil7Zm9yKDsoYT1hW2JdKSYmMSE9PWEubm9kZVR5cGU7KTtyZXR1cm4gYX1mdW5jdGlvbiBZYShhKXtyZXR1cm4gYX1mdW5jdGlvbiBaYShhKXt0aHJvdyBhO31mdW5jdGlvbiBtYihhLGIsYyxlKXt2YXIgZjt0cnl7YSYmTShmPWEucHJvbWlzZSk\/Zi5jYWxsKGEpLmRvbmUoYikuZmFpbChjKTphJiZNKGY9YS50aGVuKT9mLmNhbGwoYSxiLGMpOmIuYXBwbHkodm9pZCAwLFthXS5zbGljZShlKSl9Y2F0Y2goZyl7Yy5hcHBseSh2b2lkIDAsW2ddKX19ZnVuY3Rpb24gT2EoKXtMLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLE9hKTtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLE9hKTtkLnJlYWR5KCl9ZnVuY3Rpb24gTmIoYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfQpmdW5jdGlvbiBCYShhKXtyZXR1cm4gYS5yZXBsYWNlKE1jLCJtcy0iKS5yZXBsYWNlKE5jLE5iKX1mdW5jdGlvbiBKYSgpe3RoaXMuZXhwYW5kbz1kLmV4cGFuZG8rSmEudWlkKyt9ZnVuY3Rpb24gT2IoYSxiLGMpe3ZhciBlLGY7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpaWYoZT0iZGF0YS0iK2IucmVwbGFjZShPYywiLSQmIikudG9Mb3dlckNhc2UoKSwic3RyaW5nIj09dHlwZW9mKGM9YS5nZXRBdHRyaWJ1dGUoZSkpKXt0cnl7Yz0idHJ1ZSI9PT0oZj1jKXx8ImZhbHNlIiE9PWYmJigibnVsbCI9PT1mP251bGw6Zj09PStmKyIiPytmOlBjLnRlc3QoZik\/SlNPTi5wYXJzZShmKTpmKX1jYXRjaChnKXt9eGEuc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfWZ1bmN0aW9uIFBiKGEsYixjLGUpe3ZhciBmLGcsaD0yMCxtPWU\/ZnVuY3Rpb24oKXtyZXR1cm4gZS5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4gZC5jc3MoYSxiLCIiKX0sbD1tKCksdD1jJiZjWzNdfHwKKGQuY3NzTnVtYmVyW2JdPyIiOiJweCIpLHc9YS5ub2RlVHlwZSYmKGQuY3NzTnVtYmVyW2JdfHwicHgiIT09dCYmK2wpJiZ5Yi5leGVjKGQuY3NzKGEsYikpO2lmKHcmJndbM10hPT10KXtsLz0yO3Q9dHx8d1szXTtmb3Iodz0rbHx8MTtoLS07KWQuc3R5bGUoYSxiLHcrdCksMD49KDEtZykqKDEtKGc9bSgpL2x8fC41KSkmJihoPTApLHcvPWc7dyo9MjtkLnN0eWxlKGEsYix3K3QpO2M9Y3x8W119cmV0dXJuIGMmJih3PSt3fHwrbHx8MCxmPWNbMV0\/dysoY1sxXSsxKSpjWzJdOitjWzJdLGUmJihlLnVuaXQ9dCxlLnN0YXJ0PXcsZS5lbmQ9ZikpLGZ9ZnVuY3Rpb24gJGEoYSxiKXtmb3IodmFyIGMsZSxmLGcsaCxtLGwsdD1bXSx3PTAscj1hLmxlbmd0aDt3PHI7dysrKShlPWFbd10pLnN0eWxlJiYoYz1lLnN0eWxlLmRpc3BsYXksYj8oIm5vbmUiPT09YyYmKHRbd109Ry5nZXQoZSwiZGlzcGxheSIpfHxudWxsLHRbd118fChlLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PWUuc3R5bGUuZGlzcGxheSYmClFiKGUpJiYodFt3XT0obD1oPWc9dm9pZCAwLGg9KGY9ZSkub3duZXJEb2N1bWVudCxtPWYubm9kZU5hbWUsKGw9bGNbbV0pfHwoZz1oLmJvZHkuYXBwZW5kQ2hpbGQoaC5jcmVhdGVFbGVtZW50KG0pKSxsPWQuY3NzKGcsImRpc3BsYXkiKSxnLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZyksIm5vbmUiPT09bCYmKGw9ImJsb2NrIiksbGNbbV09bCkpKSk6Im5vbmUiIT09YyYmKHRbd109Im5vbmUiLEcuc2V0KGUsImRpc3BsYXkiLGMpKSk7Zm9yKHc9MDt3PHI7dysrKW51bGwhPXRbd10mJihhW3ddLnN0eWxlLmRpc3BsYXk9dFt3XSk7cmV0dXJuIGF9ZnVuY3Rpb24gc2EoYSxiKXt2YXIgYztyZXR1cm4gYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU\/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdLHZvaWQgMD09PWJ8fGImJgpYKGEsYik\/ZC5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBuYihhLGIpe2Zvcih2YXIgYz0wLGU9YS5sZW5ndGg7YzxlO2MrKylHLnNldChhW2NdLCJnbG9iYWxFdmFsIiwhYnx8Ry5nZXQoYltjXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBSYihhLGIsYyxlLGYpe2Zvcih2YXIgZyxoLG0sbCx0PWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHc9W10scj0wLHo9YS5sZW5ndGg7cjx6O3IrKylpZigoZz1hW3JdKXx8MD09PWcpaWYoIm9iamVjdCI9PT1VKGcpKWQubWVyZ2UodyxnLm5vZGVUeXBlP1tnXTpnKTtlbHNlIGlmKFFjLnRlc3QoZykpe2g9aHx8dC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTttPShtYy5leGVjKGcpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpO209Q2FbbV18fENhLl9kZWZhdWx0O2guaW5uZXJIVE1MPW1bMV0rZC5odG1sUHJlZmlsdGVyKGcpK21bMl07Zm9yKG09bVswXTttLS07KWg9aC5sYXN0Q2hpbGQ7ZC5tZXJnZSh3LGguY2hpbGROb2Rlcyk7CihoPXQuZmlyc3RDaGlsZCkudGV4dENvbnRlbnQ9IiJ9ZWxzZSB3LnB1c2goYi5jcmVhdGVUZXh0Tm9kZShnKSk7dC50ZXh0Q29udGVudD0iIjtmb3Iocj0wO2c9d1tyKytdOylpZihlJiYtMTxkLmluQXJyYXkoZyxlKSlmJiZmLnB1c2goZyk7ZWxzZSBpZihsPW9iKGcpLGg9c2EodC5hcHBlbmRDaGlsZChnKSwic2NyaXB0IiksbCYmbmIoaCksYylmb3IobT0wO2c9aFttKytdOyluYy50ZXN0KGcudHlwZXx8IiIpJiZjLnB1c2goZyk7cmV0dXJuIHR9ZnVuY3Rpb24gYWIoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYigpe3JldHVybiExfWZ1bmN0aW9uIGZiKGEsYixjLGUsZixnKXt2YXIgaCxtO2lmKCJvYmplY3QiPT10eXBlb2YgYil7Zm9yKG0gaW4ic3RyaW5nIiE9dHlwZW9mIGMmJihlPWV8fGMsYz12b2lkIDApLGIpZmIoYSxtLGMsZSxiW21dLGcpO3JldHVybiBhfWlmKG51bGw9PWUmJm51bGw9PWY\/KGY9YyxlPWM9dm9pZCAwKTpudWxsPT1mJiYoInN0cmluZyI9PXR5cGVvZiBjPyhmPQplLGU9dm9pZCAwKTooZj1lLGU9YyxjPXZvaWQgMCkpLCExPT09ZilmPWJiO2Vsc2UgaWYoIWYpcmV0dXJuIGE7cmV0dXJuIDE9PT1nJiYoaD1mLChmPWZ1bmN0aW9uKGwpe3JldHVybiBkKCkub2ZmKGwpLGguYXBwbHkodGhpcyxhcmd1bWVudHMpfSkuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9ZC5ndWlkKyspKSxhLmVhY2goZnVuY3Rpb24oKXtkLmV2ZW50LmFkZCh0aGlzLGIsZixlLGMpfSl9ZnVuY3Rpb24gcGIoYSxiLGMpe2M\/KEcuc2V0KGEsYiwhMSksZC5ldmVudC5hZGQoYSxiLHtuYW1lc3BhY2U6ITEsaGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgZixnPUcuZ2V0KHRoaXMsYik7aWYoMSZlLmlzVHJpZ2dlciYmdGhpc1tiXSlpZihnKShkLmV2ZW50LnNwZWNpYWxbYl18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZXtpZihnPXlhLmNhbGwoYXJndW1lbnRzKSxHLnNldCh0aGlzLGIsZyksdGhpc1tiXSgpLGY9Ry5nZXQodGhpcyxiKSxHLnNldCh0aGlzLGIsCiExKSxnIT09ZilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksZn1lbHNlIGcmJihHLnNldCh0aGlzLGIsZC5ldmVudC50cmlnZ2VyKGdbMF0sZy5zbGljZSgxKSx0aGlzKSksZS5zdG9wUHJvcGFnYXRpb24oKSxlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWFiKX19KSk6dm9pZCAwPT09Ry5nZXQoYSxiKSYmZC5ldmVudC5hZGQoYSxiLGFiKX1mdW5jdGlvbiBTYihhLGIpe3JldHVybiBYKGEsInRhYmxlIikmJlgoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpJiZkKGEpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxhfWZ1bmN0aW9uIHFiKGEpe3JldHVybiBhLnR5cGU9KG51bGwhPT1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24gJGIoYSl7cmV0dXJuInRydWUvIj09PShhLnR5cGV8fCIiKS5zbGljZSgwLDUpP2EudHlwZT1hLnR5cGUuc2xpY2UoNSk6YS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSwKYX1mdW5jdGlvbiBnYihhLGIpe3ZhciBjLGUsZixnLGg7aWYoMT09PWIubm9kZVR5cGUpe2lmKEcuaGFzRGF0YShhKSYmKGg9Ry5nZXQoYSkuZXZlbnRzKSlmb3IoZSBpbiBHLnJlbW92ZShiLCJoYW5kbGUgZXZlbnRzIiksaCl7dmFyIG09MDtmb3IoYz1oW2VdLmxlbmd0aDttPGM7bSsrKWQuZXZlbnQuYWRkKGIsZSxoW2VdW21dKX14YS5oYXNEYXRhKGEpJiYoZj14YS5hY2Nlc3MoYSksZz1kLmV4dGVuZCh7fSxmKSx4YS5zZXQoYixnKSl9fWZ1bmN0aW9uIGNiKGEsYixjLGUpe2I9b2MoYik7dmFyIGYsZyxoLG09MCxsPWEubGVuZ3RoLHQ9bC0xLHc9YlswXSxyPU0odyk7aWYocnx8MTxsJiYic3RyaW5nIj09dHlwZW9mIHcmJiFOLmNoZWNrQ2xvbmUmJlJjLnRlc3QodykpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihEKXt2YXIgRj1hLmVxKEQpO3ImJihiWzBdPXcuY2FsbCh0aGlzLEQsRi5odG1sKCkpKTtjYihGLGIsYyxlKX0pO2lmKGwmJihnPShmPVJiKGIsYVswXS5vd25lckRvY3VtZW50LAohMSxhLGUpKS5maXJzdENoaWxkLDE9PT1mLmNoaWxkTm9kZXMubGVuZ3RoJiYoZj1nKSxnfHxlKSl7Zm9yKGg9KGc9ZC5tYXAoc2EoZiwic2NyaXB0IikscWIpKS5sZW5ndGg7bTxsO20rKyl7dmFyIHo9ZjttIT09dCYmKHo9ZC5jbG9uZSh6LCEwLCEwKSxoJiZkLm1lcmdlKGcsc2Eoeiwic2NyaXB0IikpKTtjLmNhbGwoYVttXSx6LG0pfWlmKGgpZm9yKGY9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LGQubWFwKGcsJGIpLG09MDttPGg7bSsrKXo9Z1ttXSxuYy50ZXN0KHoudHlwZXx8IiIpJiYhRy5hY2Nlc3MoeiwiZ2xvYmFsRXZhbCIpJiZkLmNvbnRhaW5zKGYseikmJih6LnNyYyYmIm1vZHVsZSIhPT0oei50eXBlfHwiIikudG9Mb3dlckNhc2UoKT9kLl9ldmFsVXJsJiYhei5ub01vZHVsZSYmZC5fZXZhbFVybCh6LnNyYyx7bm9uY2U6ei5ub25jZXx8ei5nZXRBdHRyaWJ1dGUoIm5vbmNlIil9LGYpOndhKHoudGV4dENvbnRlbnQucmVwbGFjZShTYywiIikseixmKSl9cmV0dXJuIGF9CmZ1bmN0aW9uIFRiKGEsYixjKXtmb3IodmFyIGU9Yj9kLmZpbHRlcihiLGEpOmEsZj0wO251bGwhPShiPWVbZl0pO2YrKyljfHwxIT09Yi5ub2RlVHlwZXx8ZC5jbGVhbkRhdGEoc2EoYikpLGIucGFyZW50Tm9kZSYmKGMmJm9iKGIpJiZuYihzYShiLCJzY3JpcHQiKSksYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpKTtyZXR1cm4gYX1mdW5jdGlvbiBLYShhLGIsYyl7dmFyIGUsZixnLGgsbT1hYy50ZXN0KGIpLGw9YS5zdHlsZTtyZXR1cm4oYz1jfHxVYihhKSkmJihoPWMuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXSxtJiZoJiYoaD1oLnJlcGxhY2UoemIsIiQxIil8fHZvaWQgMCksIiIhPT1ofHxvYihhKXx8KGg9ZC5zdHlsZShhLGIpKSwhTi5waXhlbEJveFN0eWxlcygpJiZiYy50ZXN0KGgpJiZUYy50ZXN0KGIpJiYoZT1sLndpZHRoLGY9bC5taW5XaWR0aCxnPWwubWF4V2lkdGgsbC5taW5XaWR0aD1sLm1heFdpZHRoPWwud2lkdGg9aCxoPWMud2lkdGgsbC53aWR0aD1lLGwubWluV2lkdGg9CmYsbC5tYXhXaWR0aD1nKSksdm9pZCAwIT09aD9oKyIiOmh9ZnVuY3Rpb24gVmIoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWEoKSlyZXR1cm4odGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fWZ1bmN0aW9uIEFiKGEpe3ZhciBiO2lmKCEoYj1kLmNzc1Byb3BzW2FdfHxwY1thXSkpe2lmKCEoYSBpbiBxYykpe2E6e2I9YTtmb3IodmFyIGM9YlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSksZT1yYy5sZW5ndGg7ZS0tOylpZigoYj1yY1tlXStjKWluIHFjKWJyZWFrIGE7Yj12b2lkIDB9YT1wY1thXT1ifHxhfWI9YX1yZXR1cm4gYn1mdW5jdGlvbiBXYihhLGIsYyl7cmV0dXJuKGE9eWIuZXhlYyhiKSk\/TWF0aC5tYXgoMCxhWzJdLShjfHwwKSkrKGFbM118fCJweCIpOmJ9ZnVuY3Rpb24gcmIoYSxiLGMsZSxmLGcpe3ZhciBoPSJ3aWR0aCI9PT1iPzE6MCxtPTAsbD0wLHQ9MDtpZihjPT09KGU\/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDsKZm9yKDs0Pmg7aCs9MikibWFyZ2luIj09PWMmJih0Kz1kLmNzcyhhLGMrUGFbaF0sITAsZikpLGU\/KCJjb250ZW50Ij09PWMmJihsLT1kLmNzcyhhLCJwYWRkaW5nIitQYVtoXSwhMCxmKSksIm1hcmdpbiIhPT1jJiYobC09ZC5jc3MoYSwiYm9yZGVyIitQYVtoXSsiV2lkdGgiLCEwLGYpKSk6KGwrPWQuY3NzKGEsInBhZGRpbmciK1BhW2hdLCEwLGYpLCJwYWRkaW5nIiE9PWM\/bCs9ZC5jc3MoYSwiYm9yZGVyIitQYVtoXSsiV2lkdGgiLCEwLGYpOm0rPWQuY3NzKGEsImJvcmRlciIrUGFbaF0rIldpZHRoIiwhMCxmKSk7cmV0dXJuIWUmJjA8PWcmJihsKz1NYXRoLm1heCgwLE1hdGguY2VpbChhWyJvZmZzZXQiK2JbMF0udG9VcHBlckNhc2UoKStiLnNsaWNlKDEpXS1nLWwtbS0uNSkpfHwwKSxsK3R9ZnVuY3Rpb24gQmIoYSxiLGMpe3ZhciBlPVViKGEpLGY9KCFOLmJveFNpemluZ1JlbGlhYmxlKCl8fGMpJiYiYm9yZGVyLWJveCI9PT1kLmNzcyhhLCJib3hTaXppbmciLCExLGUpLGc9CmYsaD1LYShhLGIsZSksbT0ib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKTtpZihiYy50ZXN0KGgpKXtpZighYylyZXR1cm4gaDtoPSJhdXRvIn1yZXR1cm4oIU4uYm94U2l6aW5nUmVsaWFibGUoKSYmZnx8IU4ucmVsaWFibGVUckRpbWVuc2lvbnMoKSYmWChhLCJ0ciIpfHwiYXV0byI9PT1ofHwhcGFyc2VGbG9hdChoKSYmImlubGluZSI9PT1kLmNzcyhhLCJkaXNwbGF5IiwhMSxlKSkmJmEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJihmPSJib3JkZXItYm94Ij09PWQuY3NzKGEsImJveFNpemluZyIsITEsZSksKGc9bSBpbiBhKSYmKGg9YVttXSkpLChoPXBhcnNlRmxvYXQoaCl8fDApK3JiKGEsYixjfHwoZj8iYm9yZGVyIjoiY29udGVudCIpLGcsZSxoKSsicHgifWZ1bmN0aW9uIHphKGEsYixjLGUsZil7cmV0dXJuIG5ldyB6YS5wcm90b3R5cGUuaW5pdChhLGIsYyxlLGYpfWZ1bmN0aW9uIENiKCl7WGImJighMT09PUwuaGlkZGVuJiZuLnJlcXVlc3RBbmltYXRpb25GcmFtZT8Kbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoQ2IpOm4uc2V0VGltZW91dChDYixkLmZ4LmludGVydmFsKSxkLmZ4LnRpY2soKSl9ZnVuY3Rpb24gRGIoKXtyZXR1cm4gbi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2I9dm9pZCAwfSksc2I9RGF0ZS5ub3coKX1mdW5jdGlvbiB0YihhLGIpe3ZhciBjLGU9MCxmPXtoZWlnaHQ6YX07Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYilmWyJtYXJnaW4iKyhjPVBhW2VdKV09ZlsicGFkZGluZyIrY109YTtyZXR1cm4gYiYmKGYub3BhY2l0eT1mLndpZHRoPWEpLGZ9ZnVuY3Rpb24gdShhLGIsYyl7Zm9yKHZhciBlLGY9KHgudHdlZW5lcnNbYl18fFtdKS5jb25jYXQoeC50d2VlbmVyc1siKiJdKSxnPTAsaD1mLmxlbmd0aDtnPGg7ZysrKWlmKGU9ZltnXS5jYWxsKGMsYixhKSlyZXR1cm4gZX1mdW5jdGlvbiB4KGEsYixjKXt2YXIgZSxmPTAsZz14LnByZWZpbHRlcnMubGVuZ3RoLGg9ZC5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBtLmVsZW19KSwKbT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7dmFyIHQ9c2J8fERiKCk7dD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tdCk7Zm9yKHZhciB3PTEtKHQvbC5kdXJhdGlvbnx8MCkscj0wLHo9bC50d2VlbnMubGVuZ3RoO3I8ejtyKyspbC50d2VlbnNbcl0ucnVuKHcpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbbCx3LHRdKSwxPncmJno\/dDooenx8aC5ub3RpZnlXaXRoKGEsW2wsMSwwXSksaC5yZXNvbHZlV2l0aChhLFtsXSksITEpfSxsPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOmQuZXh0ZW5kKHt9LGIpLG9wdHM6ZC5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOmQuZWFzaW5nLl9kZWZhdWx0fSxjKSxvcmlnaW5hbFByb3BlcnRpZXM6YixvcmlnaW5hbE9wdGlvbnM6YyxzdGFydFRpbWU6c2J8fERiKCksZHVyYXRpb246Yy5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24odCx3KXt0PWQuVHdlZW4oYSxsLm9wdHMsdCx3LGwub3B0cy5zcGVjaWFsRWFzaW5nW3RdfHwKbC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2godCksdH0sc3RvcDpmdW5jdGlvbih0KXt2YXIgdz0wLHI9dD9sLnR3ZWVucy5sZW5ndGg6MDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO3c8cjt3KyspbC50d2VlbnNbd10ucnVuKDEpO3JldHVybiB0PyhoLm5vdGlmeVdpdGgoYSxbbCwxLDBdKSxoLnJlc29sdmVXaXRoKGEsW2wsdF0pKTpoLnJlamVjdFdpdGgoYSxbbCx0XSksdGhpc319KTtjPWwucHJvcHM7IWZ1bmN0aW9uKHQsdyl7dmFyIHIseixELEYsTztmb3IociBpbiB0KWlmKEQ9d1t6PUJhKHIpXSxGPXRbcl0sQXJyYXkuaXNBcnJheShGKSYmKEQ9RlsxXSxGPXRbcl09RlswXSksciE9PXomJih0W3pdPUYsZGVsZXRlIHRbcl0pLChPPWQuY3NzSG9va3Nbel0pJiYiZXhwYW5kImluIE8pZm9yKHIgaW4gRj1PLmV4cGFuZChGKSxkZWxldGUgdFt6XSxGKXIgaW4gdHx8KHRbcl09RltyXSx3W3JdPUQpO2Vsc2Ugd1t6XT1EfShjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTsKZm9yKDtmPGc7ZisrKWlmKGI9eC5wcmVmaWx0ZXJzW2ZdLmNhbGwobCxhLGMsbC5vcHRzKSlyZXR1cm4gTShiLnN0b3ApJiYoZC5fcXVldWVIb29rcyhsLmVsZW0sbC5vcHRzLnF1ZXVlKS5zdG9wPWIuc3RvcC5iaW5kKGIpKSxiO3JldHVybiBkLm1hcChjLHUsbCksTShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChhLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLGQuZngudGltZXIoZC5leHRlbmQobSx7ZWxlbTphLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1mdW5jdGlvbiBDKGEpe3JldHVybihhLm1hdGNoKExhKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBIKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifWZ1bmN0aW9uIFAoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk\/CmE6InN0cmluZyI9PXR5cGVvZiBhJiZhLm1hdGNoKExhKXx8W119ZnVuY3Rpb24gZWEoYSxiLGMsZSl7dmFyIGY7aWYoQXJyYXkuaXNBcnJheShiKSlkLmVhY2goYixmdW5jdGlvbihnLGgpe2N8fFVjLnRlc3QoYSk\/ZShhLGgpOmVhKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGgmJm51bGwhPWg\/ZzoiIikrIl0iLGgsYyxlKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1VKGIpKWUoYSxiKTtlbHNlIGZvcihmIGluIGIpZWEoYSsiWyIrZisiXSIsYltmXSxjLGUpfWZ1bmN0aW9uIFFhKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGU9MCxmPWIudG9Mb3dlckNhc2UoKS5tYXRjaChMYSl8fFtdO2lmKE0oYykpZm9yKDtiPWZbZSsrXTspIisiPT09YlswXT8oYj1iLnNsaWNlKDEpfHwiKiIsKGFbYl09YVtiXXx8W10pLnVuc2hpZnQoYykpOihhW2JdPWFbYl18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBFYihhLGIsYyxlKXtmdW5jdGlvbiBmKG0pe3ZhciBsOwpyZXR1cm4gZ1ttXT0hMCxkLmVhY2goYVttXXx8W10sZnVuY3Rpb24odCx3KXt0PXcoYixjLGUpO3JldHVybiJzdHJpbmciIT10eXBlb2YgdHx8aHx8Z1t0XT9oPyEobD10KTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQodCksZih0KSwhMSl9KSxsfXZhciBnPXt9LGg9YT09PWNjO3JldHVybiBmKGIuZGF0YVR5cGVzWzBdKXx8IWdbIioiXSYmZigiKiIpfWZ1bmN0aW9uIGhiKGEsYil7dmFyIGMsZSxmPWQuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQgMCE9PWJbY10mJigoZltjXT9hOmV8fChlPXt9KSlbY109YltjXSk7cmV0dXJuIGUmJmQuZXh0ZW5kKCEwLGEsZSksYX12YXIgb2E9W10sc2M9T2JqZWN0LmdldFByb3RvdHlwZU9mLHlhPW9hLnNsaWNlLG9jPW9hLmZsYXQ\/ZnVuY3Rpb24oYSl7cmV0dXJuIG9hLmZsYXQuY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIG9hLmNvbmNhdC5hcHBseShbXSxhKX0sdWI9b2EucHVzaCxOYT1vYS5pbmRleE9mLApNYj17fSxrYz1NYi50b1N0cmluZyxGYj1NYi5oYXNPd25Qcm9wZXJ0eSx0Yz1GYi50b1N0cmluZyxWYz10Yy5jYWxsKE9iamVjdCksTj17fSxNPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYibnVtYmVyIiE9dHlwZW9mIGEubm9kZVR5cGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBhLml0ZW19LGtiPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hJiZhPT09YS53aW5kb3d9LEw9bi5kb2N1bWVudCxMYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9LFdjPS9IVE1MJC9pLGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGQuZm4uaW5pdChhLGIpfTtkLmZuPWQucHJvdG90eXBlPXtqcXVlcnk6IjMuNy4wIixjb25zdHJ1Y3RvcjpkLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4geWEuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP3lhLmNhbGwodGhpcyk6MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0sCnB1c2hTdGFjazpmdW5jdGlvbihhKXthPWQubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBhLnByZXZPYmplY3Q9dGhpcyxhfSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiBkLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHlhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGV2ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5ncmVwKHRoaXMsZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisxKSUyfSkpfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5ncmVwKHRoaXMsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUKMn0pKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGg7YT0rYSsoMD5hP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PWEmJmE8Yj9bdGhpc1thXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dWIsc29ydDpvYS5zb3J0LHNwbGljZTpvYS5zcGxpY2V9O2QuZXh0ZW5kPWQuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLG09YXJndW1lbnRzLmxlbmd0aCxsPSExOyJib29sZWFuIj09dHlwZW9mIGcmJihsPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyk7Im9iamVjdCI9PXR5cGVvZiBnfHxNKGcpfHwoZz17fSk7Zm9yKGg9PT1tJiYoZz10aGlzLGgtLSk7aDxtO2grKylpZihudWxsIT0oYT1hcmd1bWVudHNbaF0pKWZvcihiIGluIGEpe3ZhciB0PWFbYl07Il9fcHJvdG9fXyIhPT1iJiZnIT09dCYmKGwmJnQmJihkLmlzUGxhaW5PYmplY3QodCl8fAooZT1BcnJheS5pc0FycmF5KHQpKSk\/KGM9Z1tiXSxmPWUmJiFBcnJheS5pc0FycmF5KGMpP1tdOmV8fGQuaXNQbGFpbk9iamVjdChjKT9jOnt9LGU9ITEsZ1tiXT1kLmV4dGVuZChsLGYsdCkpOnZvaWQgMCE9PXQmJihnW2JdPXQpKX1yZXR1cm4gZ307ZC5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKCIzLjcuMCIrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBFcnJvcihhKTt9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4hKCFhfHwiW29iamVjdCBPYmplY3RdIiE9PWtjLmNhbGwoYSkpJiYoIShiPXNjKGEpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKGM9RmIuY2FsbChiLCJjb25zdHJ1Y3RvciIpJiZiLmNvbnN0cnVjdG9yKSYmdGMuY2FsbChjKT09PVZjKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sCmdsb2JhbEV2YWw6ZnVuY3Rpb24oYSxiLGMpe3dhKGEse25vbmNlOmImJmIubm9uY2V9LGMpfSxlYWNoOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT0wO2lmKGViKGEpKWZvcihjPWEubGVuZ3RoO2U8YyYmITEhPT1iLmNhbGwoYVtlXSxlLGFbZV0pO2UrKyk7ZWxzZSBmb3IoZSBpbiBhKWlmKCExPT09Yi5jYWxsKGFbZV0sZSxhW2VdKSlicmVhaztyZXR1cm4gYX0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYixjPSIiLGU9MDtpZihiPWEubm9kZVR5cGUpe2lmKDE9PT1ifHw5PT09Ynx8MTE9PT1iKXJldHVybiBhLnRleHRDb250ZW50O2lmKDM9PT1ifHw0PT09YilyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoO2I9YVtlKytdOyljKz1kLnRleHQoYik7cmV0dXJuIGN9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe2I9Ynx8W107cmV0dXJuIG51bGwhPWEmJihlYihPYmplY3QoYSkpP2QubWVyZ2UoYiwic3RyaW5nIj09dHlwZW9mIGE\/W2FdOmEpOnViLmNhbGwoYixhKSksYn0saW5BcnJheTpmdW5jdGlvbihhLApiLGMpe3JldHVybiBudWxsPT1iPy0xOk5hLmNhbGwoYixhLGMpfSxpc1hNTERvYzpmdW5jdGlvbihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIVdjLnRlc3QoYSYmYS5uYW1lc3BhY2VVUkl8fGImJmIubm9kZU5hbWV8fCJIVE1MIil9LG1lcmdlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxlPTAsZj1hLmxlbmd0aDtlPGM7ZSsrKWFbZisrXT1iW2VdO3JldHVybiBhLmxlbmd0aD1mLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPVtdLGY9MCxnPWEubGVuZ3RoO2ZvcihjPSFjO2Y8ZztmKyspIWIoYVtmXSxmKSE9PWMmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGc9MCxoPVtdO2lmKGViKGEpKWZvcihlPWEubGVuZ3RoO2c8ZTtnKyspbnVsbCE9KGY9YihhW2ddLGcsYykpJiZoLnB1c2goZik7ZWxzZSBmb3IoZyBpbiBhKW51bGwhPShmPWIoYVtnXSxnLGMpKSYmCmgucHVzaChmKTtyZXR1cm4gb2MoaCl9LGd1aWQ6MSxzdXBwb3J0Ok59KTsiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZC5mbltTeW1ib2wuaXRlcmF0b3JdPW9hW1N5bWJvbC5pdGVyYXRvcl0pO2QuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtNYlsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTt2YXIgWGM9b2EucG9wLFljPW9hLnNvcnQsWmM9b2Euc3BsaWNlLHpiPVJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0rfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKilbXFx4MjBcXHRcXHJcXG5cXGZdKyQiLCJnIik7ZC5jb250YWlucz1mdW5jdGlvbihhLGIpe2I9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09Ynx8ISghYnx8MSE9PWIubm9kZVR5cGV8fCEoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJgoxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpKSl9O3ZhciAkYz0vKFtcMC1ceDFmXHg3Zl18Xi0\/XGQpfF4tJHxbXlx4ODAtXHVGRkZGXHctXS9nO2QuZXNjYXBlU2VsZWN0b3I9ZnVuY3Rpb24oYSl7cmV0dXJuKGErIiIpLnJlcGxhY2UoJGMsYmEpfTt2YXIgUmE9TDshZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGsscCxxLHYpe3ZhciB5LEUsQSxJLEI9cCYmcC5vd25lckRvY3VtZW50LEo9cD9wLm5vZGVUeXBlOjk7aWYocT1xfHxbXSwic3RyaW5nIiE9dHlwZW9mIGt8fCFrfHwxIT09SiYmOSE9PUomJjExIT09SilyZXR1cm4gcTtpZighdiYmKHQocCkscD1wfHxaLHZhKSl7aWYoMTEhPT1KJiYoST1hZC5leGVjKGspKSlpZih5PUlbMV0paWYoOT09PUope2lmKCEoRT1wLmdldEVsZW1lbnRCeUlkKHkpKSlyZXR1cm4gcTtpZihFLmlkPT09eSlyZXR1cm4gdGEuY2FsbChxLEUpLHF9ZWxzZXtpZihCJiYoRT1CLmdldEVsZW1lbnRCeUlkKHkpKSYmYS5jb250YWlucyhwLEUpJiZFLmlkPT09CnkpcmV0dXJuIHRhLmNhbGwocSxFKSxxfWVsc2V7aWYoSVsyXSlyZXR1cm4gdGEuYXBwbHkocSxwLmdldEVsZW1lbnRzQnlUYWdOYW1lKGspKSxxO2lmKCh5PUlbM10pJiZwLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHRhLmFwcGx5KHEscC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHkpKSxxfWlmKCEoWVtrKyIgIl18fGthJiZrYS50ZXN0KGspKSl7aWYoeT1rLEI9cCwxPT09SiYmKHZiLnRlc3Qoayl8fEhhLnRlc3QoaykpKXsoQj1kYy50ZXN0KGspJiZsKHAucGFyZW50Tm9kZSl8fHApPT1wJiZOLnNjb3BlfHwoKEE9cC5nZXRBdHRyaWJ1dGUoImlkIikpP0E9ZC5lc2NhcGVTZWxlY3RvcihBKTpwLnNldEF0dHJpYnV0ZSgiaWQiLEE9VykpO2ZvcihKPSh5PXIoaykpLmxlbmd0aDtKLS07KXlbSl09KEE\/IiMiK0E6IjpzY29wZSIpKyIgIit6KHlbSl0pO3k9eS5qb2luKCIsIil9dHJ5e3JldHVybiB0YS5hcHBseShxLEIucXVlcnlTZWxlY3RvckFsbCh5KSkscX1jYXRjaChSKXtZKGssCiEwKX1maW5hbGx5e0E9PT1XJiZwLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBTYShrLnJlcGxhY2UoemIsIiQxIikscCxxLHYpfWZ1bmN0aW9uIGIoKXt2YXIgaz1bXTtyZXR1cm4gZnVuY3Rpb24geShxLHYpe3JldHVybiBrLnB1c2gocSsiICIpPksuY2FjaGVMZW5ndGgmJmRlbGV0ZSB5W2suc2hpZnQoKV0seVtxKyIgIl09dn19ZnVuY3Rpb24gYyhrKXtyZXR1cm4ga1tXXT0hMCxrfWZ1bmN0aW9uIGUoayl7dmFyIHA9Wi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWsocCl9Y2F0Y2gocSl7cmV0dXJuITF9ZmluYWxseXtwLnBhcmVudE5vZGUmJnAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwKX19ZnVuY3Rpb24gZihrKXtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuIFgocCwiaW5wdXQiKSYmcC50eXBlPT09a319ZnVuY3Rpb24gZyhrKXtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuKFgocCwiaW5wdXQiKXx8WChwLCJidXR0b24iKSkmJnAudHlwZT09PQprfX1mdW5jdGlvbiBoKGspe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4iZm9ybSJpbiBwP3AucGFyZW50Tm9kZSYmITE9PT1wLmRpc2FibGVkPyJsYWJlbCJpbiBwPyJsYWJlbCJpbiBwLnBhcmVudE5vZGU\/cC5wYXJlbnROb2RlLmRpc2FibGVkPT09azpwLmRpc2FibGVkPT09azpwLmlzRGlzYWJsZWQ9PT1rfHxwLmlzRGlzYWJsZWQhPT0hayYmYmQocCk9PT1rOnAuZGlzYWJsZWQ9PT1rOiJsYWJlbCJpbiBwJiZwLmRpc2FibGVkPT09a319ZnVuY3Rpb24gbShrKXtyZXR1cm4gYyhmdW5jdGlvbihwKXtyZXR1cm4gcD0rcCxjKGZ1bmN0aW9uKHEsdil7Zm9yKHZhciB5LEU9ayhbXSxxLmxlbmd0aCxwKSxBPUUubGVuZ3RoO0EtLTspcVt5PUVbQV1dJiYocVt5XT0hKHZbeV09cVt5XSkpfSl9KX1mdW5jdGlvbiBsKGspe3JldHVybiBrJiYidW5kZWZpbmVkIiE9dHlwZW9mIGsuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmt9ZnVuY3Rpb24gdChrKXt2YXIgcDtrPWs\/ay5vd25lckRvY3VtZW50fHwKazpSYTtyZXR1cm4gayE9WiYmOT09PWsubm9kZVR5cGUmJmsuZG9jdW1lbnRFbGVtZW50JiYocmE9KFo9aykuZG9jdW1lbnRFbGVtZW50LHZhPSFkLmlzWE1MRG9jKFopLE1hPXJhLm1hdGNoZXN8fHJhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8cmEubXNNYXRjaGVzU2VsZWN0b3IsUmEhPVomJihwPVouZGVmYXVsdFZpZXcpJiZwLnRvcCE9PXAmJnAuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixjZCksTi5nZXRCeUlkPWUoZnVuY3Rpb24ocSl7cmV0dXJuIHJhLmFwcGVuZENoaWxkKHEpLmlkPWQuZXhwYW5kbywhWi5nZXRFbGVtZW50c0J5TmFtZXx8IVouZ2V0RWxlbWVudHNCeU5hbWUoZC5leHBhbmRvKS5sZW5ndGh9KSxOLmRpc2Nvbm5lY3RlZE1hdGNoPWUoZnVuY3Rpb24ocSl7cmV0dXJuIE1hLmNhbGwocSwiKiIpfSksTi5zY29wZT1lKGZ1bmN0aW9uKCl7cmV0dXJuIFoucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIil9KSxOLmNzc0hhcz1lKGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBaLnF1ZXJ5U2VsZWN0b3IoIjpoYXMoKiw6anFmYWtlKSIpLAohMX1jYXRjaChxKXtyZXR1cm4hMH19KSxOLmdldEJ5SWQ\/KEsuZmlsdGVyLklEPWZ1bmN0aW9uKHEpe3ZhciB2PXEucmVwbGFjZShUYSxVYSk7cmV0dXJuIGZ1bmN0aW9uKHkpe3JldHVybiB5LmdldEF0dHJpYnV0ZSgiaWQiKT09PXZ9fSxLLmZpbmQuSUQ9ZnVuY3Rpb24ocSx2KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudEJ5SWQmJnZhKXJldHVybihxPXYuZ2V0RWxlbWVudEJ5SWQocSkpP1txXTpbXX0pOihLLmZpbHRlci5JRD1mdW5jdGlvbihxKXt2YXIgdj1xLnJlcGxhY2UoVGEsVWEpO3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4oeT0idW5kZWZpbmVkIiE9dHlwZW9mIHkuZ2V0QXR0cmlidXRlTm9kZSYmeS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmeS52YWx1ZT09PXZ9fSxLLmZpbmQuSUQ9ZnVuY3Rpb24ocSx2KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudEJ5SWQmJnZhKXt2YXIgeSxFPXYuZ2V0RWxlbWVudEJ5SWQocSk7aWYoRSl7aWYoKHk9CkUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkmJnkudmFsdWU9PT1xKXJldHVybltFXTt2YXIgQT12LmdldEVsZW1lbnRzQnlOYW1lKHEpO2Zvcih2PTA7RT1BW3YrK107KWlmKCh5PUUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkmJnkudmFsdWU9PT1xKXJldHVybltFXX1yZXR1cm5bXX19KSxLLmZpbmQuVEFHPWZ1bmN0aW9uKHEsdil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB2LmdldEVsZW1lbnRzQnlUYWdOYW1lP3YuZ2V0RWxlbWVudHNCeVRhZ05hbWUocSk6di5xdWVyeVNlbGVjdG9yQWxsKHEpfSxLLmZpbmQuQ0xBU1M9ZnVuY3Rpb24ocSx2KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmdmEpcmV0dXJuIHYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShxKX0sa2E9W10sZShmdW5jdGlvbihxKXt2YXIgdjtyYS5hcHBlbmRDaGlsZChxKS5pbm5lckhUTUw9IjxhIGlkPSciK1crIicgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT48c2VsZWN0IGlkPSciKwpXKyItXHJcXCcgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiI7cS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxrYS5wdXNoKCJcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OnZhbHVlfGNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSIpO3EucXVlcnlTZWxlY3RvckFsbCgiW2lkfj0iK1crIi1dIikubGVuZ3RofHxrYS5wdXNoKCJ+PSIpO3EucXVlcnlTZWxlY3RvckFsbCgiYSMiK1crIisqIikubGVuZ3RofHxrYS5wdXNoKCIuIy4rWyt+XSIpO3EucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGthLnB1c2goIjpjaGVja2VkIik7KHY9Wi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLAoiaGlkZGVuIik7cS5hcHBlbmRDaGlsZCh2KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIik7cmEuYXBwZW5kQ2hpbGQocSkuZGlzYWJsZWQ9ITA7MiE9PXEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZrYS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpOyh2PVouY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJuYW1lIiwiIik7cS5hcHBlbmRDaGlsZCh2KTtxLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPScnXSIpLmxlbmd0aHx8a2EucHVzaCgiXFxbW1xceDIwXFx0XFxyXFxuXFxmXSpuYW1lW1xceDIwXFx0XFxyXFxuXFxmXSo9W1xceDIwXFx0XFxyXFxuXFxmXSooPzonJ3xcIlwiKSIpfSksTi5jc3NIYXN8fGthLnB1c2goIjpoYXMiKSxrYT1rYS5sZW5ndGgmJm5ldyBSZWdFeHAoa2Euam9pbigifCIpKSxsYT1mdW5jdGlvbihxLHYpe2lmKHE9PT12KXJldHVybiBpYj0hMCwwO3ZhciB5PSFxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF2LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOwpyZXR1cm4geXx8KDEmKHk9KHEub3duZXJEb2N1bWVudHx8cSk9PSh2Lm93bmVyRG9jdW1lbnR8fHYpP3EuY29tcGFyZURvY3VtZW50UG9zaXRpb24odik6MSl8fCFOLnNvcnREZXRhY2hlZCYmdi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihxKT09PXk\/cT09PVp8fHEub3duZXJEb2N1bWVudD09UmEmJmEuY29udGFpbnMoUmEscSk\/LTE6dj09PVp8fHYub3duZXJEb2N1bWVudD09UmEmJmEuY29udGFpbnMoUmEsdik\/MTpoYT9OYS5jYWxsKGhhLHEpLU5hLmNhbGwoaGEsdik6MDo0Jnk\/LTE6MSl9KSxafWZ1bmN0aW9uIHcoKXt9ZnVuY3Rpb24gcihrLHApe3ZhciBxLHYseSxFLEEsSTtpZihBPVZhW2srIiAiXSlyZXR1cm4gcD8wOkEuc2xpY2UoMCk7QT1rO3ZhciBCPVtdO2ZvcihJPUsucHJlRmlsdGVyO0E7KXtmb3IoRSBpbiBxJiYhKHY9bWEuZXhlYyhBKSl8fCh2JiYoQT1BLnNsaWNlKHZbMF0ubGVuZ3RoKXx8QSksQi5wdXNoKHk9W10pKSxxPSExLCh2PUhhLmV4ZWMoQSkpJiYocT0Kdi5zaGlmdCgpLHkucHVzaCh7dmFsdWU6cSx0eXBlOnZbMF0ucmVwbGFjZSh6YiwiICIpfSksQT1BLnNsaWNlKHEubGVuZ3RoKSksSy5maWx0ZXIpISh2PVliW0VdLmV4ZWMoQSkpfHxJW0VdJiYhKHY9SVtFXSh2KSl8fChxPXYuc2hpZnQoKSx5LnB1c2goe3ZhbHVlOnEsdHlwZTpFLG1hdGNoZXM6dn0pLEE9QS5zbGljZShxLmxlbmd0aCkpO2lmKCFxKWJyZWFrfXJldHVybiBwP0EubGVuZ3RoOkE\/YS5lcnJvcihrKTpWYShrLEIpLnNsaWNlKDApfWZ1bmN0aW9uIHooayl7Zm9yKHZhciBwPTAscT1rLmxlbmd0aCx2PSIiO3A8cTtwKyspdis9a1twXS52YWx1ZTtyZXR1cm4gdn1mdW5jdGlvbiBEKGsscCxxKXt2YXIgdj1wLmRpcix5PXAubmV4dCxFPXl8fHYsQT1xJiYicGFyZW50Tm9kZSI9PT1FLEk9RGErKztyZXR1cm4gcC5maXJzdD9mdW5jdGlvbihCLEosUil7Zm9yKDtCPUJbdl07KWlmKDE9PT1CLm5vZGVUeXBlfHxBKXJldHVybiBrKEIsSixSKTtyZXR1cm4hMX06ZnVuY3Rpb24oQiwKSixSKXt2YXIgVCxWLGlhPVtmYSxJXTtpZihSKWZvcig7Qj1CW3ZdOyl7aWYoKDE9PT1CLm5vZGVUeXBlfHxBKSYmayhCLEosUikpcmV0dXJuITB9ZWxzZSBmb3IoO0I9Qlt2XTspaWYoMT09PUIubm9kZVR5cGV8fEEpaWYoVj1CW1ddfHwoQltXXT17fSkseSYmWChCLHkpKUI9Qlt2XXx8QjtlbHNle2lmKChUPVZbRV0pJiZUWzBdPT09ZmEmJlRbMV09PT1JKXJldHVybiBpYVsyXT1UWzJdO2lmKChWW0VdPWlhKVsyXT1rKEIsSixSKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gRihrKXtyZXR1cm4gMTxrLmxlbmd0aD9mdW5jdGlvbihwLHEsdil7Zm9yKHZhciB5PWsubGVuZ3RoO3ktLTspaWYoIWtbeV0ocCxxLHYpKXJldHVybiExO3JldHVybiEwfTprWzBdfWZ1bmN0aW9uIE8oayxwLHEsdix5KXtmb3IodmFyIEUsQT1bXSxJPTAsQj1rLmxlbmd0aCxKPW51bGwhPXA7STxCO0krKykoRT1rW0ldKSYmKHEmJiFxKEUsdix5KXx8KEEucHVzaChFKSxKJiZwLnB1c2goSSkpKTtyZXR1cm4gQX0KZnVuY3Rpb24gYWEoayxwLHEsdix5LEUpe3JldHVybiB2JiYhdltXXSYmKHY9YWEodikpLHkmJiF5W1ddJiYoeT1hYSh5LEUpKSxjKGZ1bmN0aW9uKEEsSSxCLEope3ZhciBSLFQsVj1bXSxpYT1bXSxwYT1JLmxlbmd0aCxuYTtpZighKG5hPUEpKXtuYT1wfHwiKiI7Zm9yKHZhciBFYT1CLm5vZGVUeXBlP1tCXTpCLGNhPVtdLEFhPTAsV2E9RWEubGVuZ3RoO0FhPFdhO0FhKyspYShuYSxFYVtBYV0sY2EpO25hPWNhfW5hPSFrfHwhQSYmcD9uYTpPKG5hLFYsayxCLEopO2lmKHE\/cShuYSxUPXl8fChBP2s6cGF8fHYpP1tdOkksQixKKTpUPW5hLHYpe3ZhciBGYT1PKFQsaWEpO3YoRmEsW10sQixKKTtmb3IoQj1GYS5sZW5ndGg7Qi0tOykoUj1GYVtCXSkmJihUW2lhW0JdXT0hKG5hW2lhW0JdXT1SKSl9aWYoQSl7aWYoeXx8ayl7aWYoeSl7RmE9W107Zm9yKEI9VC5sZW5ndGg7Qi0tOykoUj1UW0JdKSYmRmEucHVzaChuYVtCXT1SKTt5KG51bGwsVD1bXSxGYSxKKX1mb3IoQj1ULmxlbmd0aDtCLS07KShSPQpUW0JdKSYmLTE8KEZhPXk\/TmEuY2FsbChBLFIpOlZbQl0pJiYoQVtGYV09IShJW0ZhXT1SKSl9fWVsc2UgVD1PKFQ9PT1JP1Quc3BsaWNlKHBhLFQubGVuZ3RoKTpUKSx5P3kobnVsbCxJLFQsSik6dGEuYXBwbHkoSSxUKX0pfWZ1bmN0aW9uIEdhKGspe2Zvcih2YXIgcCxxLHY9ay5sZW5ndGgseT1LLnJlbGF0aXZlW2tbMF0udHlwZV0sRT15fHxLLnJlbGF0aXZlWyIgIl0sQT15PzE6MCxJPUQoZnVuY3Rpb24oUil7cmV0dXJuIFI9PT1wfSxFLCEwKSxCPUQoZnVuY3Rpb24oUil7cmV0dXJuLTE8TmEuY2FsbChwLFIpfSxFLCEwKSxKPVtmdW5jdGlvbihSLFQsVil7Uj0heSYmKFZ8fFQhPVMpfHwoKHA9VCkubm9kZVR5cGU\/SShSLFQsVik6QihSLFQsVikpO3JldHVybiBwPW51bGwsUn1dO0E8djtBKyspaWYoRT1LLnJlbGF0aXZlW2tbQV0udHlwZV0pSj1bRChGKEopLEUpXTtlbHNle2lmKChFPUsuZmlsdGVyW2tbQV0udHlwZV0uYXBwbHkobnVsbCxrW0FdLm1hdGNoZXMpKVtXXSl7Zm9yKHE9CisrQTtxPHYmJiFLLnJlbGF0aXZlW2tbcV0udHlwZV07cSsrKTtyZXR1cm4gYWEoMTxBJiZGKEopLDE8QSYmeihrLnNsaWNlKDAsQS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWtbQS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKHpiLCIkMSIpLEUsQTxxJiZHYShrLnNsaWNlKEEscSkpLHE8diYmR2Eoaz1rLnNsaWNlKHEpKSxxPHYmJnooaykpfUoucHVzaChFKX1yZXR1cm4gRihKKX1mdW5jdGlvbiBxYShrLHApe3ZhciBxLHYseSxFLEE9W10sST1bXSxCPXVhW2srIiAiXTtpZighQil7cHx8KHA9cihrKSk7Zm9yKHE9cC5sZW5ndGg7cS0tOykoQj1HYShwW3FdKSlbV10\/QS5wdXNoKEIpOkkucHVzaChCKTsoQj11YShrLCh2PTA8QS5sZW5ndGgseT0wPEkubGVuZ3RoLEU9ZnVuY3Rpb24oSixSLFQsVixpYSl7dmFyIHBhLG5hLEVhPTAsY2E9IjAiLEFhPUomJltdLFdhPVtdLEZhPVMsdWM9Snx8eSYmSy5maW5kLlRBRygiKiIsaWEpLHZjPWZhKz1udWxsPT1GYT8xOk1hdGgucmFuZG9tKCl8fAouMSxkZD11Yy5sZW5ndGg7Zm9yKGlhJiYoUz1SPT1afHxSfHxpYSk7Y2EhPT1kZCYmbnVsbCE9KHBhPXVjW2NhXSk7Y2ErKyl7aWYoeSYmcGEpe3ZhciBlYz0wO2ZvcihSfHxwYS5vd25lckRvY3VtZW50PT1afHwodChwYSksVD0hdmEpO25hPUlbZWMrK107KWlmKG5hKHBhLFJ8fFosVCkpe3RhLmNhbGwoVixwYSk7YnJlYWt9aWEmJihmYT12Yyl9diYmKChwYT0hbmEmJnBhKSYmRWEtLSxKJiZBYS5wdXNoKHBhKSl9aWYoRWErPWNhLHYmJmNhIT09RWEpe2ZvcihlYz0wO25hPUFbZWMrK107KW5hKEFhLFdhLFIsVCk7aWYoSil7aWYoMDxFYSlmb3IoO2NhLS07KUFhW2NhXXx8V2FbY2FdfHwoV2FbY2FdPVhjLmNhbGwoVikpO1dhPU8oV2EpfXRhLmFwcGx5KFYsV2EpO2lhJiYhSiYmMDxXYS5sZW5ndGgmJjE8RWErQS5sZW5ndGgmJmQudW5pcXVlU29ydChWKX1yZXR1cm4gaWEmJihmYT12YyxTPUZhKSxBYX0sdj9jKEUpOkUpKSkuc2VsZWN0b3I9a31yZXR1cm4gQn1mdW5jdGlvbiBTYShrLApwLHEsdil7dmFyIHksRSxBLEksQixKPSJmdW5jdGlvbiI9PXR5cGVvZiBrJiZrLFI9IXYmJnIoaz1KLnNlbGVjdG9yfHxrKTtpZihxPXF8fFtdLDE9PT1SLmxlbmd0aCl7aWYoMjwoRT1SWzBdPVJbMF0uc2xpY2UoMCkpLmxlbmd0aCYmIklEIj09PShBPUVbMF0pLnR5cGUmJjk9PT1wLm5vZGVUeXBlJiZ2YSYmSy5yZWxhdGl2ZVtFWzFdLnR5cGVdKXtpZighKHA9KEsuZmluZC5JRChBLm1hdGNoZXNbMF0ucmVwbGFjZShUYSxVYSkscCl8fFtdKVswXSkpcmV0dXJuIHE7SiYmKHA9cC5wYXJlbnROb2RlKTtrPWsuc2xpY2UoRS5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKHk9WWIubmVlZHNDb250ZXh0LnRlc3Qoayk\/MDpFLmxlbmd0aDt5LS0mJihBPUVbeV0sIUsucmVsYXRpdmVbST1BLnR5cGVdKTspaWYoKEI9Sy5maW5kW0ldKSYmKHY9QihBLm1hdGNoZXNbMF0ucmVwbGFjZShUYSxVYSksZGMudGVzdChFWzBdLnR5cGUpJiZsKHAucGFyZW50Tm9kZSl8fHApKSl7aWYoRS5zcGxpY2UoeSwKMSksIShrPXYubGVuZ3RoJiZ6KEUpKSlyZXR1cm4gdGEuYXBwbHkocSx2KSxxO2JyZWFrfX1yZXR1cm4oSnx8cWEoayxSKSkodixwLCF2YSxxLCFwfHxkYy50ZXN0KGspJiZsKHAucGFyZW50Tm9kZSl8fHApLHF9dmFyIFEsSyxTLGhhLGliLFoscmEsdmEsa2EsTWEsdGE9dWIsVz1kLmV4cGFuZG8sZmE9MCxEYT0wLGRiPWIoKSxWYT1iKCksdWE9YigpLFk9YigpLGxhPWZ1bmN0aW9uKGsscCl7cmV0dXJuIGs9PT1wJiYoaWI9ITApLDB9LElhPVJlZ0V4cCgiW1xceDIwXFx0XFxyXFxuXFxmXSsiLCJnIiksbWE9UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSosW1xceDIwXFx0XFxyXFxuXFxmXSoiKSxIYT1SZWdFeHAoIl5bXFx4MjBcXHRcXHJcXG5cXGZdKihbPit+XXxbXFx4MjBcXHRcXHJcXG5cXGZdKVtcXHgyMFxcdFxcclxcblxcZl0qIiksdmI9UmVnRXhwKCJbXFx4MjBcXHRcXHJcXG5cXGZdfD4iKSxmYz1SZWdFeHAoIjooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86XFwoKCgnKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg\/OlxcXFwufFteXFxcXCgpW1xcXV18XFxbW1xceDIwXFx0XFxyXFxuXFxmXSooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86W1xceDIwXFx0XFxyXFxuXFxmXSooWypeJHwhfl0\/PSlbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwifCgoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykpfClbXFx4MjBcXHRcXHJcXG5cXGZdKlxcXSkqKXwuKilcXCl8KSIpLAplZD1SZWdFeHAoIl4oPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKyQiKSxZYj17SUQ6UmVnRXhwKCJeIygoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykiKSxDTEFTUzpSZWdFeHAoIl5cXC4oKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspIiksVEFHOlJlZ0V4cCgiXigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pK3xbKl0pIiksQVRUUjpSZWdFeHAoIl5cXFtbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpbXFx4MjBcXHRcXHJcXG5cXGZdKihbKl4kfCF+XT89KVtcXHgyMFxcdFxcclxcblxcZl0qKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSl8KVtcXHgyMFxcdFxcclxcblxcZl0qXFxdIiksClBTRVVETzpSZWdFeHAoIl46KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfFxcW1tcXHgyMFxcdFxcclxcblxcZl0qKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OltcXHgyMFxcdFxcclxcblxcZl0qKFsqXiR8IX5dPz0pW1xceDIwXFx0XFxyXFxuXFxmXSooPzonKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKXwpW1xceDIwXFx0XFxyXFxuXFxmXSpcXF0pKil8LiopXFwpfCkiKSwKQ0hJTEQ6UmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXChbXFx4MjBcXHRcXHJcXG5cXGZdKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KVtcXHgyMFxcdFxcclxcblxcZl0qKD86KFsrLV18KVtcXHgyMFxcdFxcclxcblxcZl0qKFxcZCspfCkpW1xceDIwXFx0XFxyXFxuXFxmXSpcXCl8KSIsImkiKSxib29sOlJlZ0V4cCgiXig\/OmNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSQiLCJpIiksbmVlZHNDb250ZXh0OlJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0qWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXChbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzotXFxkKT9cXGQqKVtcXHgyMFxcdFxcclxcblxcZl0qXFwpfCkoPz1bXi1dfCQpIiwKImkiKX0sZmQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxnZD0vXmhcZCQvaSxhZD0vXig\/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGRjPS9bK35dLyxUYT1SZWdFeHAoIlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLFVhPWZ1bmN0aW9uKGsscCl7az0iMHgiK2suc2xpY2UoMSktNjU1MzY7cmV0dXJuIHB8fCgwPms\/U3RyaW5nLmZyb21DaGFyQ29kZShrKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGs+PjEwfDU1Mjk2LDEwMjMma3w1NjMyMCkpfSxjZD1mdW5jdGlvbigpe3QoKX0sYmQ9RChmdW5jdGlvbihrKXtyZXR1cm4hMD09PWsuZGlzYWJsZWQmJlgoaywiZmllbGRzZXQiKX0se2RpcjoicGFyZW50Tm9kZSIsbmV4dDoibGVnZW5kIn0pO3RyeXt0YS5hcHBseShvYT15YS5jYWxsKFJhLmNoaWxkTm9kZXMpLFJhLmNoaWxkTm9kZXMpLG9hW1JhLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChrKXt0YT0Ke2FwcGx5OmZ1bmN0aW9uKHAscSl7dWIuYXBwbHkocCx5YS5jYWxsKHEpKX0sY2FsbDpmdW5jdGlvbihwKXt1Yi5hcHBseShwLHlhLmNhbGwoYXJndW1lbnRzLDEpKX19fWZvcihRIGluIGEubWF0Y2hlcz1mdW5jdGlvbihrLHApe3JldHVybiBhKGssbnVsbCxudWxsLHApfSxhLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihrLHApe2lmKHQoayksISghdmF8fFlbcCsiICJdfHxrYSYma2EudGVzdChwKSkpdHJ5e3ZhciBxPU1hLmNhbGwoayxwKTtpZihxfHxOLmRpc2Nvbm5lY3RlZE1hdGNofHxrLmRvY3VtZW50JiYxMSE9PWsuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIHF9Y2F0Y2godil7WShwLCEwKX1yZXR1cm4gMDxhKHAsWixudWxsLFtrXSkubGVuZ3RofSxhLmNvbnRhaW5zPWZ1bmN0aW9uKGsscCl7cmV0dXJuKGsub3duZXJEb2N1bWVudHx8aykhPVomJnQoayksZC5jb250YWlucyhrLHApfSxhLmF0dHI9ZnVuY3Rpb24oayxwKXsoay5vd25lckRvY3VtZW50fHxrKSE9WiYmdChrKTsKdmFyIHE9Sy5hdHRySGFuZGxlW3AudG9Mb3dlckNhc2UoKV07cT1xJiZGYi5jYWxsKEsuYXR0ckhhbmRsZSxwLnRvTG93ZXJDYXNlKCkpP3EoayxwLCF2YSk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1xP3E6ay5nZXRBdHRyaWJ1dGUocCl9LGEuZXJyb3I9ZnVuY3Rpb24oayl7dGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrayk7fSxkLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oayl7dmFyIHAscT1bXSx2PTAseT0wO2lmKGliPSFOLnNvcnRTdGFibGUsaGE9IU4uc29ydFN0YWJsZSYmeWEuY2FsbChrLDApLFljLmNhbGwoayxsYSksaWIpe2Zvcig7cD1rW3krK107KXA9PT1rW3ldJiYodj1xLnB1c2goeSkpO2Zvcig7di0tOylaYy5jYWxsKGsscVt2XSwxKX1yZXR1cm4gaGE9bnVsbCxrfSxkLmZuLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC51bmlxdWVTb3J0KHlhLmFwcGx5KHRoaXMpKSl9LChLPWQuZXhwcj0Ke2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpjLG1hdGNoOlliLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihrKXtyZXR1cm4ga1sxXT1rWzFdLnJlcGxhY2UoVGEsVWEpLGtbM109KGtbM118fGtbNF18fGtbNV18fCIiKS5yZXBsYWNlKFRhLFVhKSwifj0iPT09a1syXSYmKGtbM109IiAiK2tbM10rIiAiKSxrLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGspe3JldHVybiBrWzFdPWtbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWtbMV0uc2xpY2UoMCwzKT8oa1szXXx8YS5lcnJvcihrWzBdKSxrWzRdPSsoa1s0XT9rWzVdKyhrWzZdfHwxKToyKigiZXZlbiI9PT1rWzNdfHwib2RkIj09PWtbM10pKSxrWzVdPQorKGtbN10ra1s4XXx8Im9kZCI9PT1rWzNdKSk6a1szXSYmYS5lcnJvcihrWzBdKSxrfSxQU0VVRE86ZnVuY3Rpb24oayl7dmFyIHAscT0ha1s2XSYma1syXTtyZXR1cm4gWWIuQ0hJTEQudGVzdChrWzBdKT9udWxsOihrWzNdP2tbMl09a1s0XXx8a1s1XXx8IiI6cSYmZmMudGVzdChxKSYmKHA9cihxLCEwKSkmJihwPXEuaW5kZXhPZigiKSIscS5sZW5ndGgtcCktcS5sZW5ndGgpJiYoa1swXT1rWzBdLnNsaWNlKDAscCksa1syXT1xLnNsaWNlKDAscCkpLGsuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihrKXt2YXIgcD1rLnJlcGxhY2UoVGEsVWEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09az9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihxKXtyZXR1cm4gWChxLHApfX0sQ0xBU1M6ZnVuY3Rpb24oayl7dmFyIHA9ZGJbaysiICJdO3JldHVybiBwfHwocD1uZXcgUmVnRXhwKCIoXnxbXFx4MjBcXHRcXHJcXG5cXGZdKSIraysiKFtcXHgyMFxcdFxcclxcblxcZl18JCkiKSwKZGIoayxmdW5jdGlvbihxKXtyZXR1cm4gcC50ZXN0KCJzdHJpbmciPT10eXBlb2YgcS5jbGFzc05hbWUmJnEuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIHEuZ2V0QXR0cmlidXRlJiZxLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSkpfSxBVFRSOmZ1bmN0aW9uKGsscCxxKXtyZXR1cm4gZnVuY3Rpb24odil7dj1hLmF0dHIodixrKTtyZXR1cm4gbnVsbD09dj8iIT0iPT09cDohcHx8KHYrPSIiLCI9Ij09PXA\/dj09PXE6IiE9Ij09PXA\/diE9PXE6Il49Ij09PXA\/cSYmMD09PXYuaW5kZXhPZihxKToiKj0iPT09cD9xJiYtMTx2LmluZGV4T2YocSk6IiQ9Ij09PXA\/cSYmdi5zbGljZSgtcS5sZW5ndGgpPT09cToifj0iPT09cD8tMTwoIiAiK3YucmVwbGFjZShJYSwiICIpKyIgIikuaW5kZXhPZihxKToifD0iPT09cCYmKHY9PT1xfHx2LnNsaWNlKDAscS5sZW5ndGgrMSk9PT1xKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oayxwLHEsdix5KXt2YXIgRT0ibnRoIiE9PWsuc2xpY2UoMCwKMyksQT0ibGFzdCIhPT1rLnNsaWNlKC00KSxJPSJvZi10eXBlIj09PXA7cmV0dXJuIDE9PT12JiYwPT09eT9mdW5jdGlvbihCKXtyZXR1cm4hIUIucGFyZW50Tm9kZX06ZnVuY3Rpb24oQixKLFIpe3ZhciBULFYsaWE7Sj1FIT09QT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciO3ZhciBwYT1CLnBhcmVudE5vZGUsbmE9SSYmQi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLEVhPSFSJiYhSSxjYT0hMTtpZihwYSl7aWYoRSl7Zm9yKDtKOyl7Zm9yKFY9QjtWPVZbSl07KWlmKEk\/WChWLG5hKToxPT09Vi5ub2RlVHlwZSlyZXR1cm4hMTt2YXIgQWE9Sj0ib25seSI9PT1rJiYhQWEmJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYoQWE9W0E\/cGEuZmlyc3RDaGlsZDpwYS5sYXN0Q2hpbGRdLEEmJkVhKWZvcihjYT0oaWE9KFQ9KFI9cGFbV118fChwYVtXXT17fSkpW2tdfHxbXSlbMF09PT1mYSYmVFsxXSkmJlRbMl0sVj1pYSYmcGEuY2hpbGROb2Rlc1tpYV07Vj0rK2lhJiZWJiZWW0pdfHwKKGNhPWlhPTApfHxBYS5wb3AoKTspe2lmKDE9PT1WLm5vZGVUeXBlJiYrK2NhJiZWPT09Qil7UltrXT1bZmEsaWEsY2FdO2JyZWFrfX1lbHNlIGlmKEVhJiYoY2E9aWE9KFQ9KEJbV118fChCW1ddPXt9KSlba118fFtdKVswXT09PWZhJiZUWzFdKSwhMT09PWNhKWZvcig7KFY9KytpYSYmViYmVltKXXx8KGNhPWlhPTApfHxBYS5wb3AoKSkmJigoST8hWChWLG5hKToxIT09Vi5ub2RlVHlwZSl8fCErK2NhfHwoRWEmJigoUj1WW1ddfHwoVltXXT17fSkpW2tdPVtmYSxjYV0pLFYhPT1CKSk7KTtyZXR1cm4oY2EtPXkpPT09dnx8MD09Y2EldiYmMDw9Y2Evdn19fSxQU0VVRE86ZnVuY3Rpb24oayxwKXt2YXIgcSx2PUsucHNldWRvc1trXXx8Sy5zZXRGaWx0ZXJzW2sudG9Mb3dlckNhc2UoKV18fGEuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIitrKTtyZXR1cm4gdltXXT92KHApOjE8di5sZW5ndGg\/KHE9W2ssaywiIixwXSxLLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoay50b0xvd2VyQ2FzZSgpKT8KYyhmdW5jdGlvbih5LEUpe2Zvcih2YXIgQSxJPXYoeSxwKSxCPUkubGVuZ3RoO0ItLTspeVtBPU5hLmNhbGwoeSxJW0JdKV09IShFW0FdPUlbQl0pfSk6ZnVuY3Rpb24oeSl7cmV0dXJuIHYoeSwwLHEpfSk6dn19LHBzZXVkb3M6e25vdDpjKGZ1bmN0aW9uKGspe3ZhciBwPVtdLHE9W10sdj1xYShrLnJlcGxhY2UoemIsIiQxIikpO3JldHVybiB2W1ddP2MoZnVuY3Rpb24oeSxFLEEsSSl7dmFyIEI7QT12KHksbnVsbCxJLFtdKTtmb3IoST15Lmxlbmd0aDtJLS07KShCPUFbSV0pJiYoeVtJXT0hKEVbSV09QikpfSk6ZnVuY3Rpb24oeSxFLEEpe3JldHVybiBwWzBdPXksdihwLG51bGwsQSxxKSxwWzBdPW51bGwsIXEucG9wKCl9fSksaGFzOmMoZnVuY3Rpb24oayl7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybiAwPGEoayxwKS5sZW5ndGh9fSksY29udGFpbnM6YyhmdW5jdGlvbihrKXtyZXR1cm4gaz1rLnJlcGxhY2UoVGEsVWEpLGZ1bmN0aW9uKHApe3JldHVybi0xPChwLnRleHRDb250ZW50fHwKZC50ZXh0KHApKS5pbmRleE9mKGspfX0pLGxhbmc6YyhmdW5jdGlvbihrKXtyZXR1cm4gZWQudGVzdChrfHwiIil8fGEuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrayksaz1rLnJlcGxhY2UoVGEsVWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24ocCl7dmFyIHE7ZG8gaWYocT12YT9wLmxhbmc6cC5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fHAuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuKHE9cS50b0xvd2VyQ2FzZSgpKT09PWt8fDA9PT1xLmluZGV4T2YoaysiLSIpO3doaWxlKChwPXAucGFyZW50Tm9kZSkmJjE9PT1wLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oayl7dmFyIHA9bi5sb2NhdGlvbiYmbi5sb2NhdGlvbi5oYXNoO3JldHVybiBwJiZwLnNsaWNlKDEpPT09ay5pZH0scm9vdDpmdW5jdGlvbihrKXtyZXR1cm4gaz09PXJhfSxmb2N1czpmdW5jdGlvbihrKXthOnt0cnl7dmFyIHA9Wi5hY3RpdmVFbGVtZW50O2JyZWFrIGF9Y2F0Y2gocSl7fXA9CnZvaWQgMH1yZXR1cm4gaz09PXAmJlouaGFzRm9jdXMoKSYmISEoay50eXBlfHxrLmhyZWZ8fH5rLnRhYkluZGV4KX0sZW5hYmxlZDpoKCExKSxkaXNhYmxlZDpoKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGspe3JldHVybiBYKGssImlucHV0IikmJiEhay5jaGVja2VkfHxYKGssIm9wdGlvbiIpJiYhIWsuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGspe3JldHVybiBrLnBhcmVudE5vZGUmJmsucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCEwPT09ay5zZWxlY3RlZH0sZW1wdHk6ZnVuY3Rpb24oayl7Zm9yKGs9ay5maXJzdENoaWxkO2s7az1rLm5leHRTaWJsaW5nKWlmKDY+ay5ub2RlVHlwZSlyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGspe3JldHVybiFLLnBzZXVkb3MuZW1wdHkoayl9LGhlYWRlcjpmdW5jdGlvbihrKXtyZXR1cm4gZ2QudGVzdChrLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oayl7cmV0dXJuIGZkLnRlc3Qoay5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihrKXtyZXR1cm4gWChrLAoiaW5wdXQiKSYmImJ1dHRvbiI9PT1rLnR5cGV8fFgoaywiYnV0dG9uIil9LHRleHQ6ZnVuY3Rpb24oayl7dmFyIHA7cmV0dXJuIFgoaywiaW5wdXQiKSYmInRleHQiPT09ay50eXBlJiYobnVsbD09KHA9ay5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXAudG9Mb3dlckNhc2UoKSl9LGZpcnN0Om0oZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om0oZnVuY3Rpb24oayxwKXtyZXR1cm5bcC0xXX0pLGVxOm0oZnVuY3Rpb24oayxwLHEpe3JldHVyblswPnE\/cStwOnFdfSksZXZlbjptKGZ1bmN0aW9uKGsscCl7Zm9yKHZhciBxPTA7cTxwO3ErPTIpay5wdXNoKHEpO3JldHVybiBrfSksb2RkOm0oZnVuY3Rpb24oayxwKXtmb3IodmFyIHE9MTtxPHA7cSs9MilrLnB1c2gocSk7cmV0dXJuIGt9KSxsdDptKGZ1bmN0aW9uKGsscCxxKXtmb3IocD0wPnE\/cStwOnA8cT9wOnE7MDw9LS1wOylrLnB1c2gocCk7cmV0dXJuIGt9KSxndDptKGZ1bmN0aW9uKGsscCxxKXtmb3IocT0wPnE\/CnErcDpxOysrcTxwOylrLnB1c2gocSk7cmV0dXJuIGt9KX19KS5wc2V1ZG9zLm50aD1LLnBzZXVkb3MuZXEse3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KUsucHNldWRvc1tRXT1mKFEpO2ZvcihRIGlue3N1Ym1pdDohMCxyZXNldDohMH0pSy5wc2V1ZG9zW1FdPWcoUSk7dy5wcm90b3R5cGU9Sy5maWx0ZXJzPUsucHNldWRvcztLLnNldEZpbHRlcnM9bmV3IHc7Ti5zb3J0U3RhYmxlPVcuc3BsaXQoIiIpLnNvcnQobGEpLmpvaW4oIiIpPT09Vzt0KCk7Ti5zb3J0RGV0YWNoZWQ9ZShmdW5jdGlvbihrKXtyZXR1cm4gMSZrLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKFouY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KTtkLmZpbmQ9YTtkLmV4cHJbIjoiXT1kLmV4cHIucHNldWRvcztkLnVuaXF1ZT1kLnVuaXF1ZVNvcnQ7YS5jb21waWxlPXFhO2Euc2VsZWN0PVNhO2Euc2V0RG9jdW1lbnQ9dDthLmVzY2FwZT1kLmVzY2FwZVNlbGVjdG9yOwphLmdldFRleHQ9ZC50ZXh0O2EuaXNYTUw9ZC5pc1hNTERvYzthLnNlbGVjdG9ycz1kLmV4cHI7YS5zdXBwb3J0PWQuc3VwcG9ydDthLnVuaXF1ZVNvcnQ9ZC51bmlxdWVTb3J0fSgpO3ZhciB3Yj1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBlPVtdLGY9dm9pZCAwIT09YzsoYT1hW2JdKSYmOSE9PWEubm9kZVR5cGU7KWlmKDE9PT1hLm5vZGVUeXBlKXtpZihmJiZkKGEpLmlzKGMpKWJyZWFrO2UucHVzaChhKX1yZXR1cm4gZX0sd2M9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9LHhjPWQuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQseWM9L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZC5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmCjE9PT1lLm5vZGVUeXBlP2QuZmluZC5tYXRjaGVzU2VsZWN0b3IoZSxhKT9bZV06W106ZC5maW5kLm1hdGNoZXMoYSxkLmdyZXAoYixmdW5jdGlvbihmKXtyZXR1cm4gMT09PWYubm9kZVR5cGV9KSl9O2QuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiLGM9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soZChhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8YztiKyspaWYoZC5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO3ZhciBmPXRoaXMucHVzaFN0YWNrKFtdKTtmb3IoYj0wO2I8YztiKyspZC5maW5kKGEsZVtiXSxmKTtyZXR1cm4gMTxjP2QudW5pcXVlU29ydChmKTpmfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGphKHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqYSh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhamEodGhpcywKInN0cmluZyI9PXR5cGVvZiBhJiZ4Yy50ZXN0KGEpP2QoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgaGQ9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsoZC5mbi5pbml0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmO2lmKCFhKXJldHVybiB0aGlzO2lmKGM9Y3x8aWQsInN0cmluZyI9PXR5cGVvZiBhKXtpZighKGU9IjwiPT09YVswXSYmIj4iPT09YVthLmxlbmd0aC0xXSYmMzw9YS5sZW5ndGg\/W251bGwsYSxudWxsXTpoZC5leGVjKGEpKXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiBkP2JbMF06YixkLm1lcmdlKHRoaXMsZC5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8YjpMLCEwKSkseWMudGVzdChlWzFdKSYmZC5pc1BsYWluT2JqZWN0KGIpKWZvcihlIGluIGIpTSh0aGlzW2VdKT90aGlzW2VdKGJbZV0pOgp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4oZj1MLmdldEVsZW1lbnRCeUlkKGVbMl0pKSYmKHRoaXNbMF09Zix0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBhLm5vZGVUeXBlPyh0aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpNKGEpP3ZvaWQgMCE9PWMucmVhZHk\/Yy5yZWFkeShhKTphKGQpOmQubWFrZUFycmF5KGEsdGhpcyl9KS5wcm90b3R5cGU9ZC5mbjt2YXIgaWQ9ZChMKSxqZD0vXig\/OnBhcmVudHN8cHJldig\/OlVudGlsfEFsbCkpLyxrZD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtkLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGEpe3ZhciBiPWQoYSx0aGlzKSxjPWIubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8YztlKyspaWYoZC5jb250YWlucyh0aGlzLGJbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPTAsZj10aGlzLmxlbmd0aCwKZz1bXSxoPSJzdHJpbmciIT10eXBlb2YgYSYmZChhKTtpZigheGMudGVzdChhKSlmb3IoO2U8ZjtlKyspZm9yKGM9dGhpc1tlXTtjJiZjIT09YjtjPWMucGFyZW50Tm9kZSlpZigxMT5jLm5vZGVUeXBlJiYoaD8tMTxoLmluZGV4KGMpOjE9PT1jLm5vZGVUeXBlJiZkLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpKXtnLnB1c2goYyk7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8Zy5sZW5ndGg\/ZC51bmlxdWVTb3J0KGcpOmcpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE\/TmEuY2FsbChkKGEpLHRoaXNbMF0pOk5hLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQudW5pcXVlU29ydChkLm1lcmdlKHRoaXMuZ2V0KCksZChhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT0KYT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5wYXJlbnROb2RlKSYmMTEhPT1hLm5vZGVUeXBlP2E6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gd2IoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB3YihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gbGIoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gbGIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHdiKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHdiKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB3YihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsCmMpe3JldHVybiB3YihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gd2MoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB3YyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YS5jb250ZW50RG9jdW1lbnQmJnNjKGEuY29udGVudERvY3VtZW50KT9hLmNvbnRlbnREb2N1bWVudDooWChhLCJ0ZW1wbGF0ZSIpJiYoYT1hLmNvbnRlbnR8fGEpLGQubWVyZ2UoW10sYS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihhLGIpe2QuZm5bYV09ZnVuY3Rpb24oYyxlKXt2YXIgZj1kLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZT1jKSxlJiYic3RyaW5nIj09dHlwZW9mIGUmJihmPWQuZmlsdGVyKGUsZikpLDE8dGhpcy5sZW5ndGgmJihrZFthXXx8ZC51bmlxdWVTb3J0KGYpLGpkLnRlc3QoYSkmJmYucmV2ZXJzZSgpKSwKdGhpcy5wdXNoU3RhY2soZil9fSk7dmFyIExhPS9bXlx4MjBcdFxyXG5cZl0rL2c7ZC5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7dmFyIGIsYzthPSJzdHJpbmciPT10eXBlb2YgYT8oYj1hLGM9e30sZC5lYWNoKGIubWF0Y2goTGEpfHxbXSxmdW5jdGlvbih6LEQpe2NbRF09ITB9KSxjKTpkLmV4dGVuZCh7fSxhKTt2YXIgZSxmLGcsaCxtPVtdLGw9W10sdD0tMSx3PWZ1bmN0aW9uKCl7aD1ofHxhLm9uY2U7Zm9yKGc9ZT0hMDtsLmxlbmd0aDt0PS0xKWZvcihmPWwuc2hpZnQoKTsrK3Q8bS5sZW5ndGg7KSExPT09bVt0XS5hcHBseShmWzBdLGZbMV0pJiZhLnN0b3BPbkZhbHNlJiYodD1tLmxlbmd0aCxmPSExKTthLm1lbW9yeXx8KGY9ITEpO2U9ITE7aCYmKG09Zj9bXToiIil9LHI9e2FkZDpmdW5jdGlvbigpe3JldHVybiBtJiYoZiYmIWUmJih0PW0ubGVuZ3RoLTEsbC5wdXNoKGYpKSxmdW5jdGlvbiBGKEQpe2QuZWFjaChELGZ1bmN0aW9uKE8sYWEpe00oYWEpP2EudW5pcXVlJiZyLmhhcyhhYSl8fAptLnB1c2goYWEpOmFhJiZhYS5sZW5ndGgmJiJzdHJpbmciIT09VShhYSkmJkYoYWEpfSl9KGFyZ3VtZW50cyksZiYmIWUmJncoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGQuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oeixEKXtmb3IodmFyIEY7LTE8KEY9ZC5pbkFycmF5KEQsbSxGKSk7KW0uc3BsaWNlKEYsMSksRjw9dCYmdC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKHope3JldHVybiB6Py0xPGQuaW5BcnJheSh6LG0pOjA8bS5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIG0mJihtPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9bD1bXSxtPWY9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbX0sbG9jazpmdW5jdGlvbigpe3JldHVybiBoPWw9W10sZnx8ZXx8KG09Zj0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFofSxmaXJlV2l0aDpmdW5jdGlvbih6LEQpe3JldHVybiBofHwoRD1beiwoRD1EfHwKW10pLnNsaWNlP0Quc2xpY2UoKTpEXSxsLnB1c2goRCksZXx8dygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHIuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFnfX07cmV0dXJuIHJ9O2QuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJub3RpZnkiLCJwcm9ncmVzcyIsZC5DYWxsYmFja3MoIm1lbW9yeSIpLGQuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0sYz0icGVuZGluZyIsZT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSwKdGhpc30sImNhdGNoIjpmdW5jdGlvbihnKXtyZXR1cm4gZS50aGVuKG51bGwsZyl9LHBpcGU6ZnVuY3Rpb24oKXt2YXIgZz1hcmd1bWVudHM7cmV0dXJuIGQuRGVmZXJyZWQoZnVuY3Rpb24oaCl7ZC5lYWNoKGIsZnVuY3Rpb24obSxsKXt2YXIgdD1NKGdbbFs0XV0pJiZnW2xbNF1dO2ZbbFsxXV0oZnVuY3Rpb24oKXt2YXIgdz10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt3JiZNKHcucHJvbWlzZSk\/dy5wcm9taXNlKCkucHJvZ3Jlc3MoaC5ub3RpZnkpLmRvbmUoaC5yZXNvbHZlKS5mYWlsKGgucmVqZWN0KTpoW2xbMF0rIldpdGgiXSh0aGlzLHQ\/W3ddOmFyZ3VtZW50cyl9KX0pO2c9bnVsbH0pLnByb21pc2UoKX0sdGhlbjpmdW5jdGlvbihnLGgsbSl7ZnVuY3Rpb24gbCh3LHIseixEKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgRj10aGlzLE89YXJndW1lbnRzLGFhPWZ1bmN0aW9uKCl7dmFyIHFhO2lmKCEodzx0KSl7aWYoKHFhPXouYXBwbHkoRixPKSk9PT1yLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTsKdmFyIFNhPXFhJiYoIm9iamVjdCI9PXR5cGVvZiBxYXx8ImZ1bmN0aW9uIj09dHlwZW9mIHFhKSYmcWEudGhlbjtNKFNhKT9EP1NhLmNhbGwocWEsbCh0LHIsWWEsRCksbCh0LHIsWmEsRCkpOih0KyssU2EuY2FsbChxYSxsKHQscixZYSxEKSxsKHQscixaYSxEKSxsKHQscixZYSxyLm5vdGlmeVdpdGgpKSk6KHohPT1ZYSYmKEY9dm9pZCAwLE89W3FhXSksKER8fHIucmVzb2x2ZVdpdGgpKEYsTykpfX0sR2E9RD9hYTpmdW5jdGlvbigpe3RyeXthYSgpfWNhdGNoKHFhKXtkLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJmQuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhxYSxHYS5lcnJvciksdDw9dysxJiYoeiE9PVphJiYoRj12b2lkIDAsTz1bcWFdKSxyLnJlamVjdFdpdGgoRixPKSl9fTt3P0dhKCk6KGQuRGVmZXJyZWQuZ2V0RXJyb3JIb29rP0dhLmVycm9yPWQuRGVmZXJyZWQuZ2V0RXJyb3JIb29rKCk6ZC5EZWZlcnJlZC5nZXRTdGFja0hvb2smJihHYS5lcnJvcj1kLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSwKbi5zZXRUaW1lb3V0KEdhKSl9fXZhciB0PTA7cmV0dXJuIGQuRGVmZXJyZWQoZnVuY3Rpb24odyl7YlswXVszXS5hZGQobCgwLHcsTShtKT9tOllhLHcubm90aWZ5V2l0aCkpO2JbMV1bM10uYWRkKGwoMCx3LE0oZyk\/ZzpZYSkpO2JbMl1bM10uYWRkKGwoMCx3LE0oaCk\/aDpaYSkpfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGcpe3JldHVybiBudWxsIT1nP2QuZXh0ZW5kKGcsZSk6ZX19LGY9e307cmV0dXJuIGQuZWFjaChiLGZ1bmN0aW9uKGcsaCl7dmFyIG09aFsyXSxsPWhbNV07ZVtoWzFdXT1tLmFkZDtsJiZtLmFkZChmdW5jdGlvbigpe2M9bH0sYlszLWddWzJdLmRpc2FibGUsYlszLWddWzNdLmRpc2FibGUsYlswXVsyXS5sb2NrLGJbMF1bM10ubG9jayk7bS5hZGQoaFszXS5maXJlKTtmW2hbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZbaFswXSsiV2l0aCJdKHRoaXM9PT1mP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc307ZltoWzBdKyJXaXRoIl09bS5maXJlV2l0aH0pLAplLnByb21pc2UoZiksYSYmYS5jYWxsKGYsZiksZn0sd2hlbjpmdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoLGM9YixlPUFycmF5KGMpLGY9eWEuY2FsbChhcmd1bWVudHMpLGc9ZC5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24obSl7cmV0dXJuIGZ1bmN0aW9uKGwpe2VbbV09dGhpcztmW21dPTE8YXJndW1lbnRzLmxlbmd0aD95YS5jYWxsKGFyZ3VtZW50cyk6bDstLWJ8fGcucmVzb2x2ZVdpdGgoZSxmKX19O2lmKDE+PWImJihtYihhLGcuZG9uZShoKGMpKS5yZXNvbHZlLGcucmVqZWN0LCFiKSwicGVuZGluZyI9PT1nLnN0YXRlKCl8fE0oZltjXSYmZltjXS50aGVuKSkpcmV0dXJuIGcudGhlbigpO2Zvcig7Yy0tOyltYihmW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21pc2UoKX19KTt2YXIgbGQ9L14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87ZC5EZWZlcnJlZC5leGNlcHRpb25Ib29rPWZ1bmN0aW9uKGEsYil7bi5jb25zb2xlJiYKbi5jb25zb2xlLndhcm4mJmEmJmxkLnRlc3QoYS5uYW1lKSYmbi5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYS5tZXNzYWdlLGEuc3RhY2ssYil9O2QucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oYSl7bi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYTt9KX07dmFyIGdjPWQuRGVmZXJyZWQoKTtkLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBnYy50aGVuKGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGIpe2QucmVhZHlFeGNlcHRpb24oYil9KSx0aGlzfTtkLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihhKXsoITA9PT1hPy0tZC5yZWFkeVdhaXQ6ZC5pc1JlYWR5KXx8KGQuaXNSZWFkeT0hMCkhPT1hJiYwPC0tZC5yZWFkeVdhaXR8fGdjLnJlc29sdmVXaXRoKEwsW2RdKX19KTtkLnJlYWR5LnRoZW49Z2MudGhlbjsiY29tcGxldGUiPT09TC5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1MLnJlYWR5U3RhdGUmJiFMLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD8Kbi5zZXRUaW1lb3V0KGQucmVhZHkpOihMLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLE9hKSxuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLE9hKSk7dmFyIFhhPWZ1bmN0aW9uKGEsYixjLGUsZixnLGgpe3ZhciBtPTAsbD1hLmxlbmd0aCx0PW51bGw9PWM7aWYoIm9iamVjdCI9PT1VKGMpKWZvcihtIGluIGY9ITAsYylYYShhLGIsbSxjW21dLCEwLGcsaCk7ZWxzZSBpZih2b2lkIDAhPT1lJiYoZj0hMCxNKGUpfHwoaD0hMCksdCYmKGg\/KGIuY2FsbChhLGUpLGI9bnVsbCk6KHQ9YixiPWZ1bmN0aW9uKHcscix6KXtyZXR1cm4gdC5jYWxsKGQodykseil9KSksYikpZm9yKDttPGw7bSsrKWIoYVttXSxjLGg\/ZTplLmNhbGwoYVttXSxtLGIoYVttXSxjKSkpO3JldHVybiBmP2E6dD9iLmNhbGwoYSk6bD9iKGFbMF0sYyk6Z30sTWM9L14tbXMtLyxOYz0vLShbYS16XSkvZyxHYj1mdW5jdGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV8fDk9PT1hLm5vZGVUeXBlfHwhK2Eubm9kZVR5cGV9OwpKYS51aWQ9MTtKYS5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGEpe3ZhciBiPWFbdGhpcy5leHBhbmRvXTtyZXR1cm4gYnx8KGI9e30sR2IoYSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT1iOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHRoaXMuZXhwYW5kbyx7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSkpLGJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGU7YT10aGlzLmNhY2hlKGEpO2lmKCJzdHJpbmciPT10eXBlb2YgYilhW0JhKGIpXT1jO2Vsc2UgZm9yKGUgaW4gYilhW0JhKGUpXT1iW2VdO3JldHVybiBhfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj90aGlzLmNhY2hlKGEpOmFbdGhpcy5leHBhbmRvXSYmYVt0aGlzLmV4cGFuZG9dW0JhKGIpXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jP3RoaXMuZ2V0KGEsYik6KHRoaXMuc2V0KGEsYixjKSx2b2lkIDAhPT0KYz9jOmIpfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09Yyl7aWYodm9pZCAwIT09Yil7dmFyIGU9KGI9QXJyYXkuaXNBcnJheShiKT9iLm1hcChCYSk6KGI9QmEoYikpaW4gYz9bYl06Yi5tYXRjaChMYSl8fFtdKS5sZW5ndGg7Zm9yKDtlLS07KWRlbGV0ZSBjW2JbZV1dfSh2b2lkIDA9PT1ifHxkLmlzRW1wdHlPYmplY3QoYykpJiYoYS5ub2RlVHlwZT9hW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBhW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihhKXthPWFbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09YSYmIWQuaXNFbXB0eU9iamVjdChhKX19O3ZhciBHPW5ldyBKYSx4YT1uZXcgSmEsUGM9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxPYz0vW0EtWl0vZztkLmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4geGEuaGFzRGF0YShhKXx8Ry5oYXNEYXRhKGEpfSxkYXRhOmZ1bmN0aW9uKGEsCmIsYyl7cmV0dXJuIHhhLmFjY2VzcyhhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXt4YS5yZW1vdmUoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBHLmFjY2VzcyhhLGIsYyl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7Ry5yZW1vdmUoYSxiKX19KTtkLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnPXRoaXNbMF0saD1nJiZnLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09YSl7aWYodGhpcy5sZW5ndGgmJihmPXhhLmdldChnKSwxPT09Zy5ub2RlVHlwZSYmIUcuZ2V0KGcsImhhc0RhdGFBdHRycyIpKSl7Zm9yKGM9aC5sZW5ndGg7Yy0tOyloW2NdJiYwPT09KGU9aFtjXS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpJiYoZT1CYShlLnNsaWNlKDUpKSxPYihnLGUsZltlXSkpO0cuc2V0KGcsImhhc0RhdGFBdHRycyIsITApfXJldHVybiBmfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXt4YS5zZXQodGhpcywKYSl9KTpYYSh0aGlzLGZ1bmN0aW9uKG0pe3ZhciBsO2lmKGcmJnZvaWQgMD09PW0pcmV0dXJuIHZvaWQgMCE9PShsPXhhLmdldChnLGEpKT9sOnZvaWQgMCE9PShsPU9iKGcsYSkpP2w6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe3hhLnNldCh0aGlzLGEsbSl9KX0sbnVsbCxiLDE8YXJndW1lbnRzLmxlbmd0aCxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7eGEucmVtb3ZlKHRoaXMsYSl9KX19KTtkLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlO2lmKGEpcmV0dXJuIGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZT1HLmdldChhLGIpLGMmJighZXx8QXJyYXkuaXNBcnJheShjKT9lPUcuYWNjZXNzKGEsYixkLm1ha2VBcnJheShjKSk6ZS5wdXNoKGMpKSxlfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1kLnF1ZXVlKGEsYiksZT1jLmxlbmd0aCxmPWMuc2hpZnQoKSxnPWQuX3F1ZXVlSG9va3MoYSwKYik7ImlucHJvZ3Jlc3MiPT09ZiYmKGY9Yy5zaGlmdCgpLGUtLSk7ZiYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZy5zdG9wLGYuY2FsbChhLGZ1bmN0aW9uKCl7ZC5kZXF1ZXVlKGEsYil9LGcpKTshZSYmZyYmZy5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIEcuZ2V0KGEsYyl8fEcuYWNjZXNzKGEsYyx7ZW1wdHk6ZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7Ry5yZW1vdmUoYSxbYisicXVldWUiLGNdKX0pfSl9fSk7ZC5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP2QucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ZC5xdWV1ZSh0aGlzLGEsYik7ZC5fcXVldWVIb29rcyh0aGlzLAphKTsiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09ZVswXSYmZC5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGU9MSxmPWQuRGVmZXJyZWQoKSxnPXRoaXMsaD10aGlzLmxlbmd0aCxtPWZ1bmN0aW9uKCl7LS1lfHxmLnJlc29sdmVXaXRoKGcsW2ddKX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKTtmb3IoYT1hfHwiZngiO2gtLTspKGM9Ry5nZXQoZ1toXSxhKyJxdWV1ZUhvb2tzIikpJiZjLmVtcHR5JiYoZSsrLGMuZW1wdHkuYWRkKG0pKTtyZXR1cm4gbSgpLGYucHJvbWlzZShiKX19KTt2YXIgemM9L1srLV0\/KD86XGQqXC58KVxkKyg\/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UseWI9bmV3IFJlZ0V4cCgiXig\/OihbKy1dKT18KSgiKwp6YysiKShbYS16JV0qKSQiLCJpIiksUGE9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxqYj1MLmRvY3VtZW50RWxlbWVudCxvYj1mdW5jdGlvbihhKXtyZXR1cm4gZC5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl9LG1kPXtjb21wb3NlZDohMH07amIuZ2V0Um9vdE5vZGUmJihvYj1mdW5jdGlvbihhKXtyZXR1cm4gZC5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fGEuZ2V0Um9vdE5vZGUobWQpPT09YS5vd25lckRvY3VtZW50fSk7dmFyIFFiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIm5vbmUiPT09KGE9Ynx8YSkuc3R5bGUuZGlzcGxheXx8IiI9PT1hLnN0eWxlLmRpc3BsYXkmJm9iKGEpJiYibm9uZSI9PT1kLmNzcyhhLCJkaXNwbGF5Iil9LGxjPXt9O2QuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT8KYT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtRYih0aGlzKT9kKHRoaXMpLnNob3coKTpkKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBaYixIYj0vXig\/OmNoZWNrYm94fHJhZGlvKSQvaSxtYz0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxuYz0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2kseGI9TC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoTC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7KFpiPUwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKTtaYi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIik7WmIuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpO3hiLmFwcGVuZENoaWxkKFpiKTtOLmNoZWNrQ2xvbmU9eGIuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkO3hiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiI7Ck4ubm9DbG9uZUNoZWNrZWQ9ISF4Yi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWU7eGIuaW5uZXJIVE1MPSI8b3B0aW9uPjwvb3B0aW9uPiI7Ti5vcHRpb249ISF4Yi5sYXN0Q2hpbGQ7dmFyIENhPXt0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07Q2EudGJvZHk9Q2EudGZvb3Q9Q2EuY29sZ3JvdXA9Q2EuY2FwdGlvbj1DYS50aGVhZDtDYS50aD1DYS50ZDtOLm9wdGlvbnx8KENhLm9wdGdyb3VwPUNhLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgUWM9Lzx8JiM\/XHcrOy8sQWM9L14oW14uXSopKD86XC4oLispfCkvOwpkLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGUsZil7dmFyIGcsaCxtLGwsdCx3LHIseixEPUcuZ2V0KGEpO2lmKEdiKGEpKWZvcihjLmhhbmRsZXImJihjPShnPWMpLmhhbmRsZXIsZj1nLnNlbGVjdG9yKSxmJiZkLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGpiLGYpLGMuZ3VpZHx8KGMuZ3VpZD1kLmd1aWQrKyksKGw9RC5ldmVudHMpfHwobD1ELmV2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpKSwoaD1ELmhhbmRsZSl8fChoPUQuaGFuZGxlPWZ1bmN0aW9uKE8pe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgZCYmZC5ldmVudC50cmlnZ2VyZWQhPT1PLnR5cGU\/ZC5ldmVudC5kaXNwYXRjaC5hcHBseShhLGFyZ3VtZW50cyk6dm9pZCAwfSksRD0oYj0oYnx8IiIpLm1hdGNoKExhKXx8WyIiXSkubGVuZ3RoO0QtLTspe3ZhciBGPXo9KG09QWMuZXhlYyhiW0RdKXx8W10pWzFdO209KG1bMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKTtGJiYodz1kLmV2ZW50LnNwZWNpYWxbRl18fAp7fSxGPShmP3cuZGVsZWdhdGVUeXBlOncuYmluZFR5cGUpfHxGLHc9ZC5ldmVudC5zcGVjaWFsW0ZdfHx7fSx0PWQuZXh0ZW5kKHt0eXBlOkYsb3JpZ1R5cGU6eixkYXRhOmUsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmYsbmVlZHNDb250ZXh0OmYmJmQuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChmKSxuYW1lc3BhY2U6bS5qb2luKCIuIil9LGcpLChyPWxbRl0pfHwoKHI9bFtGXT1bXSkuZGVsZWdhdGVDb3VudD0wLHcuc2V0dXAmJiExIT09dy5zZXR1cC5jYWxsKGEsZSxtLGgpfHxhLmFkZEV2ZW50TGlzdGVuZXImJmEuYWRkRXZlbnRMaXN0ZW5lcihGLGgpKSx3LmFkZCYmKHcuYWRkLmNhbGwoYSx0KSx0LmhhbmRsZXIuZ3VpZHx8KHQuaGFuZGxlci5ndWlkPWMuZ3VpZCkpLGY\/ci5zcGxpY2Uoci5kZWxlZ2F0ZUNvdW50KyssMCx0KTpyLnB1c2godCksZC5ldmVudC5nbG9iYWxbRl09ITApfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGUsZil7dmFyIGcsaCxtLGwsCnQsdyxyLHosRD1HLmhhc0RhdGEoYSkmJkcuZ2V0KGEpO2lmKEQmJihsPUQuZXZlbnRzKSl7Zm9yKHQ9KGI9KGJ8fCIiKS5tYXRjaChMYSl8fFsiIl0pLmxlbmd0aDt0LS07KWlmKHc9ej0obT1BYy5leGVjKGJbdF0pfHxbXSlbMV0scj0obVsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHcpe3ZhciBGPWQuZXZlbnQuc3BlY2lhbFt3XXx8e30sTz1sW3c9KGU\/Ri5kZWxlZ2F0ZVR5cGU6Ri5iaW5kVHlwZSl8fHddfHxbXTttPW1bMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Iuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik7Zm9yKGg9Zz1PLmxlbmd0aDtnLS07KXt2YXIgYWE9T1tnXTshZiYmeiE9PWFhLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1hYS5ndWlkfHxtJiYhbS50ZXN0KGFhLm5hbWVzcGFjZSl8fGUmJmUhPT1hYS5zZWxlY3RvciYmKCIqKiIhPT1lfHwhYWEuc2VsZWN0b3IpfHwoTy5zcGxpY2UoZywxKSxhYS5zZWxlY3RvciYmTy5kZWxlZ2F0ZUNvdW50LS0sRi5yZW1vdmUmJgpGLnJlbW92ZS5jYWxsKGEsYWEpKX1oJiYhTy5sZW5ndGgmJihGLnRlYXJkb3duJiYhMSE9PUYudGVhcmRvd24uY2FsbChhLHIsRC5oYW5kbGUpfHxkLnJlbW92ZUV2ZW50KGEsdyxELmhhbmRsZSksZGVsZXRlIGxbd10pfWVsc2UgZm9yKHcgaW4gbClkLmV2ZW50LnJlbW92ZShhLHcrYlt0XSxjLGUsITApO2QuaXNFbXB0eU9iamVjdChsKSYmRy5yZW1vdmUoYSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZz1BcnJheShhcmd1bWVudHMubGVuZ3RoKSxoPWQuZXZlbnQuZml4KGEpLG09KEcuZ2V0KHRoaXMsImV2ZW50cyIpfHxPYmplY3QuY3JlYXRlKG51bGwpKVtoLnR5cGVdfHxbXSxsPWQuZXZlbnQuc3BlY2lhbFtoLnR5cGVdfHx7fTtnWzBdPWg7Zm9yKGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWdbYl09YXJndW1lbnRzW2JdO2lmKGguZGVsZWdhdGVUYXJnZXQ9dGhpcywhbC5wcmVEaXNwYXRjaHx8ITEhPT1sLnByZURpc3BhdGNoLmNhbGwodGhpcywKaCkpe3ZhciB0PWQuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGgsbSk7Zm9yKGI9MDsoZT10W2IrK10pJiYhaC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOylmb3IoaC5jdXJyZW50VGFyZ2V0PWUuZWxlbSxtPTA7KGY9ZS5oYW5kbGVyc1ttKytdKSYmIWguaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTspaC5ybmFtZXNwYWNlJiYhMSE9PWYubmFtZXNwYWNlJiYhaC5ybmFtZXNwYWNlLnRlc3QoZi5uYW1lc3BhY2UpfHwoaC5oYW5kbGVPYmo9ZixoLmRhdGE9Zi5kYXRhLHZvaWQgMCE9PShjPSgoZC5ldmVudC5zcGVjaWFsW2Yub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxmLmhhbmRsZXIpLmFwcGx5KGUuZWxlbSxnKSkmJiExPT09KGgucmVzdWx0PWMpJiYoaC5wcmV2ZW50RGVmYXVsdCgpLGguc3RvcFByb3BhZ2F0aW9uKCkpKTtyZXR1cm4gbC5wb3N0RGlzcGF0Y2gmJmwucG9zdERpc3BhdGNoLmNhbGwodGhpcyxoKSxoLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsCmUsZixnPVtdLGg9Yi5kZWxlZ2F0ZUNvdW50LG09YS50YXJnZXQ7aWYoaCYmbS5ub2RlVHlwZSYmISgiY2xpY2siPT09YS50eXBlJiYxPD1hLmJ1dHRvbikpZm9yKDttIT09dGhpczttPW0ucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bS5ub2RlVHlwZSYmKCJjbGljayIhPT1hLnR5cGV8fCEwIT09bS5kaXNhYmxlZCkpe3ZhciBsPVtdLHQ9e307Zm9yKGM9MDtjPGg7YysrKXZvaWQgMD09PXRbZj0oZT1iW2NdKS5zZWxlY3RvcisiICJdJiYodFtmXT1lLm5lZWRzQ29udGV4dD8tMTxkKGYsdGhpcykuaW5kZXgobSk6ZC5maW5kKGYsdGhpcyxudWxsLFttXSkubGVuZ3RoKSx0W2ZdJiZsLnB1c2goZSk7bC5sZW5ndGgmJmcucHVzaCh7ZWxlbTptLGhhbmRsZXJzOmx9KX1yZXR1cm4gbT10aGlzLGg8Yi5sZW5ndGgmJmcucHVzaCh7ZWxlbTptLGhhbmRsZXJzOmIuc2xpY2UoaCl9KSxnfSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGQuRXZlbnQucHJvdG90eXBlLAphLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6TShiKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gYih0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W2FdfSxzZXQ6ZnVuY3Rpb24oYyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsYSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Y30pfX0pfSxmaXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbZC5leHBhbmRvXT9hOm5ldyBkLkV2ZW50KGEpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGEpe2E9dGhpc3x8YTtyZXR1cm4gSGIudGVzdChhLnR5cGUpJiZhLmNsaWNrJiZYKGEsImlucHV0IikmJnBiKGEsImNsaWNrIiwhMCksITF9LHRyaWdnZXI6ZnVuY3Rpb24oYSl7YT10aGlzfHxhO3JldHVybiBIYi50ZXN0KGEudHlwZSkmJgphLmNsaWNrJiZYKGEsImlucHV0IikmJnBiKGEsImNsaWNrIiksITB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2E9YS50YXJnZXQ7cmV0dXJuIEhiLnRlc3QoYS50eXBlKSYmYS5jbGljayYmWChhLCJpbnB1dCIpJiZHLmdldChhLCJjbGljayIpfHxYKGEsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19fTtkLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpfTtkLkV2ZW50PWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgZC5FdmVudCkpcmV0dXJuIG5ldyBkLkV2ZW50KGEsYik7YSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8CnZvaWQgMD09PWEuZGVmYXVsdFByZXZlbnRlZCYmITE9PT1hLnJldHVyblZhbHVlP2FiOmJiLHRoaXMudGFyZ2V0PWEudGFyZ2V0JiYzPT09YS50YXJnZXQubm9kZVR5cGU\/YS50YXJnZXQucGFyZW50Tm9kZTphLnRhcmdldCx0aGlzLmN1cnJlbnRUYXJnZXQ9YS5jdXJyZW50VGFyZ2V0LHRoaXMucmVsYXRlZFRhcmdldD1hLnJlbGF0ZWRUYXJnZXQpOnRoaXMudHlwZT1hO2ImJmQuZXh0ZW5kKHRoaXMsYik7dGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fERhdGUubm93KCk7dGhpc1tkLmV4cGFuZG9dPSEwfTtkLkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZC5FdmVudCxpc0RlZmF1bHRQcmV2ZW50ZWQ6YmIsaXNQcm9wYWdhdGlvblN0b3BwZWQ6YmIsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6YmIsaXNTaW11bGF0ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YWI7CmEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWFiO2EmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1hYjthJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTt0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX07ZC5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLApjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDohMH0sZC5ldmVudC5hZGRQcm9wKTtkLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhlKXtpZihMLmRvY3VtZW50TW9kZSl7dmFyIGY9Ry5nZXQodGhpcywiaGFuZGxlIiksZz1kLmV2ZW50LmZpeChlKTtnLnR5cGU9ImZvY3VzaW4iPT09ZS50eXBlPyJmb2N1cyI6ImJsdXIiO2cuaXNTaW11bGF0ZWQ9ITA7ZihlKTtnLnRhcmdldD09PWcuY3VycmVudFRhcmdldCYmZihnKX1lbHNlIGQuZXZlbnQuc2ltdWxhdGUoYixlLnRhcmdldCxkLmV2ZW50LmZpeChlKSl9ZC5ldmVudC5zcGVjaWFsW2FdPQp7c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZTtpZihwYih0aGlzLGEsITApLCFMLmRvY3VtZW50TW9kZSlyZXR1cm4hMTsoZT1HLmdldCh0aGlzLGIpKXx8dGhpcy5hZGRFdmVudExpc3RlbmVyKGIsYyk7Ry5zZXQodGhpcyxiLChlfHwwKSsxKX0sdHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBwYih0aGlzLGEpLCEwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlO2lmKCFMLmRvY3VtZW50TW9kZSlyZXR1cm4hMTsoZT1HLmdldCh0aGlzLGIpLTEpP0cuc2V0KHRoaXMsYixlKToodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyksRy5yZW1vdmUodGhpcyxiKSl9LF9kZWZhdWx0OmZ1bmN0aW9uKGUpe3JldHVybiBHLmdldChlLnRhcmdldCxhKX0sZGVsZWdhdGVUeXBlOmJ9O2QuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsZj1MLmRvY3VtZW50TW9kZT90aGlzOmUsZz1HLmdldChmLGIpO2d8fAooTC5kb2N1bWVudE1vZGU\/dGhpcy5hZGRFdmVudExpc3RlbmVyKGIsYyk6ZS5hZGRFdmVudExpc3RlbmVyKGEsYywhMCkpO0cuc2V0KGYsYiwoZ3x8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLGY9TC5kb2N1bWVudE1vZGU\/dGhpczplLGc9Ry5nZXQoZixiKS0xO2c\/Ry5zZXQoZixiLGcpOihMLmRvY3VtZW50TW9kZT90aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKTplLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxHLnJlbW92ZShmLGIpKX19fSk7ZC5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihhLGIpe2QuZXZlbnQuc3BlY2lhbFthXT17ZGVsZWdhdGVUeXBlOmIsYmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYyl7dmFyIGUsZj0KYy5yZWxhdGVkVGFyZ2V0LGc9Yy5oYW5kbGVPYmo7cmV0dXJuIGYmJihmPT09dGhpc3x8ZC5jb250YWlucyh0aGlzLGYpKXx8KGMudHlwZT1nLm9yaWdUeXBlLGU9Zy5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjLnR5cGU9YiksZX19fSk7ZC5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiBmYih0aGlzLGEsYixjLGUpfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIGZiKHRoaXMsYSxiLGMsZSwxKX0sb2ZmOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmO2lmKGEmJmEucHJldmVudERlZmF1bHQmJmEuaGFuZGxlT2JqKXJldHVybiBlPWEuaGFuZGxlT2JqLGQoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2Uub3JpZ1R5cGUrIi4iK2UubmFtZXNwYWNlOmUub3JpZ1R5cGUsZS5zZWxlY3RvcixlLmhhbmRsZXIpLHRoaXM7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXtmb3IoZiBpbiBhKXRoaXMub2ZmKGYsYixhW2ZdKTtyZXR1cm4gdGhpc31yZXR1cm4hMSE9PQpiJiYiZnVuY3Rpb24iIT10eXBlb2YgYnx8KGM9YixiPXZvaWQgMCksITE9PT1jJiYoYz1iYiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC5yZW1vdmUodGhpcyxhLGMsYil9KX19KTt2YXIgbmQ9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksUmM9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksU2M9L15ccyo8IVxbQ0RBVEFcW3xcXVxdPlxzKiQvZztkLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sY2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxtPW9iKGEpO2lmKCEoTi5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8ZC5pc1hNTERvYyhhKSkpe3ZhciBsPXNhKGgpLHQ9MDtmb3IoZT0oZj1zYShhKSkubGVuZ3RoO3Q8ZTt0Kyspe3ZhciB3PWZbdF0scj1sW3RdO3ZvaWQgMDsiaW5wdXQiPT09KGc9ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSYmSGIudGVzdCh3LnR5cGUpPwpyLmNoZWNrZWQ9dy5jaGVja2VkOiJpbnB1dCIhPT1nJiYidGV4dGFyZWEiIT09Z3x8KHIuZGVmYXVsdFZhbHVlPXcuZGVmYXVsdFZhbHVlKX19aWYoYilpZihjKWZvcihmPWZ8fHNhKGEpLGw9bHx8c2EoaCksdD0wLGU9Zi5sZW5ndGg7dDxlO3QrKylnYihmW3RdLGxbdF0pO2Vsc2UgZ2IoYSxoKTtyZXR1cm4gMDwobD1zYShoLCJzY3JpcHQiKSkubGVuZ3RoJiZuYihsLCFtJiZzYShhLCJzY3JpcHQiKSksaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGUsZj1kLmV2ZW50LnNwZWNpYWwsZz0wO3ZvaWQgMCE9PShjPWFbZ10pO2crKylpZihHYihjKSl7aWYoYj1jW0cuZXhwYW5kb10pe2lmKGIuZXZlbnRzKWZvcihlIGluIGIuZXZlbnRzKWZbZV0\/ZC5ldmVudC5yZW1vdmUoYyxlKTpkLnJlbW92ZUV2ZW50KGMsZSxiLmhhbmRsZSk7Y1tHLmV4cGFuZG9dPXZvaWQgMH1jW3hhLmV4cGFuZG9dJiYoY1t4YS5leHBhbmRvXT12b2lkIDApfX19KTtkLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBUYih0aGlzLAphLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiBUYih0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiB2b2lkIDA9PT1iP2QudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodGhpcy50ZXh0Q29udGVudD1iKX0pfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8U2IodGhpcyxhKS5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT0KdGhpcy5ub2RlVHlwZSl7dmFyIGI9U2IodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVsbCE9KGE9dGhpc1tiXSk7YisrKTE9PT1hLm5vZGVUeXBlJiYoZC5jbGVhbkRhdGEoc2EoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGwhPWEmJmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBkLmNsb25lKHRoaXMsCmEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihiKXt2YXIgYz10aGlzWzBdfHx7fSxlPTAsZj10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1iJiYxPT09Yy5ub2RlVHlwZSlyZXR1cm4gYy5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiBiJiYhbmQudGVzdChiKSYmIUNhWyhtYy5leGVjKGIpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7Yj1kLmh0bWxQcmVmaWx0ZXIoYik7dHJ5e2Zvcig7ZTxmO2UrKykxPT09KGM9dGhpc1tlXXx8e30pLm5vZGVUeXBlJiYoZC5jbGVhbkRhdGEoc2EoYywhMSkpLGMuaW5uZXJIVE1MPWIpO2M9MH1jYXRjaChnKXt9fWMmJnRoaXMuZW1wdHkoKS5hcHBlbmQoYil9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1bXTtyZXR1cm4gY2IodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wYXJlbnROb2RlOzA+ZC5pbkFycmF5KHRoaXMsYSkmJgooZC5jbGVhbkRhdGEoc2EodGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19KTtkLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2QuZm5bYV09ZnVuY3Rpb24oYyl7Zm9yKHZhciBlPVtdLGY9ZChjKSxnPWYubGVuZ3RoLTEsaD0wO2g8PWc7aCsrKWM9aD09PWc\/dGhpczp0aGlzLmNsb25lKCEwKSxkKGZbaF0pW2JdKGMpLHViLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBiYz1uZXcgUmVnRXhwKCJeKCIremMrIikoPyFweClbYS16JV0rJCIsImkiKSxhYz0vXi0tLyxVYj1mdW5jdGlvbihhKXt2YXIgYj1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIGImJmIub3BlbmVyfHwoYj1uKSxiLmdldENvbXB1dGVkU3R5bGUoYSl9LEJjPWZ1bmN0aW9uKGEsCmIsYyl7dmFyIGUsZj17fTtmb3IoZSBpbiBiKWZbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Zm9yKGUgaW4gYz1jLmNhbGwoYSksYilhLnN0eWxlW2VdPWZbZV07cmV0dXJuIGN9LFRjPW5ldyBSZWdFeHAoUGEuam9pbigifCIpLCJpIik7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2lmKGwpe20uc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCI7bC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIjtqYi5hcHBlbmRDaGlsZChtKS5hcHBlbmRDaGlsZChsKTt2YXIgdD1uLmdldENvbXB1dGVkU3R5bGUobCk7Yj0iMSUiIT09dC50b3A7aD0xMj09PU1hdGgucm91bmQocGFyc2VGbG9hdCh0Lm1hcmdpbkxlZnQpKTsKbC5zdHlsZS5yaWdodD0iNjAlIjtmPTM2PT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KHQucmlnaHQpKTtjPTM2PT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KHQud2lkdGgpKTtsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7ZT0xMj09PU1hdGgucm91bmQocGFyc2VGbG9hdChsLm9mZnNldFdpZHRoLzMpKTtqYi5yZW1vdmVDaGlsZChtKTtsPW51bGx9fXZhciBiLGMsZSxmLGcsaCxtPUwuY3JlYXRlRWxlbWVudCgiZGl2IiksbD1MLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuc3R5bGUmJihsLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsbC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLE4uY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1sLnN0eWxlLmJhY2tncm91bmRDbGlwLGQuZXh0ZW5kKE4se2JveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSxjfSxwaXhlbEJveFN0eWxlczpmdW5jdGlvbigpe3JldHVybiBhKCksCmZ9LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLGJ9LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBhKCksaH0sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBhKCksZX0scmVsaWFibGVUckRpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgdCx3LHIsejtyZXR1cm4gbnVsbD09ZyYmKHQ9TC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLHc9TC5jcmVhdGVFbGVtZW50KCJ0ciIpLHI9TC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlIix3LnN0eWxlLmNzc1RleHQ9ImJvcmRlcjoxcHggc29saWQiLHcuc3R5bGUuaGVpZ2h0PSIxcHgiLHIuc3R5bGUuaGVpZ2h0PSI5cHgiLHIuc3R5bGUuZGlzcGxheT0iYmxvY2siLGpiLmFwcGVuZENoaWxkKHQpLmFwcGVuZENoaWxkKHcpLmFwcGVuZENoaWxkKHIpLHo9bi5nZXRDb21wdXRlZFN0eWxlKHcpLApnPXBhcnNlSW50KHouaGVpZ2h0LDEwKStwYXJzZUludCh6LmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludCh6LmJvcmRlckJvdHRvbVdpZHRoLDEwKT09PXcub2Zmc2V0SGVpZ2h0LGpiLnJlbW92ZUNoaWxkKHQpKSxnfX0pKX0oKTt2YXIgcmM9WyJXZWJraXQiLCJNb3oiLCJtcyJdLHFjPUwuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUscGM9e30sb2Q9L14obm9uZXx0YWJsZSg\/IS1jW2VhXSkuKykvLHBkPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxDYz17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXJldHVybiBhPUthKGEsIm9wYWNpdHkiKSwiIj09PWE\/IjEiOmF9fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGNvbHVtbkNvdW50OiEwLApmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHNjYWxlOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwfSxjc3NQcm9wczp7fSxzdHlsZTpmdW5jdGlvbihhLGIsYyxlKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBmLGcsaCxtPUJhKGIpLGw9YWMudGVzdChiKSx0PWEuc3R5bGU7aWYobHx8KGI9QWIobSkpLGg9ZC5jc3NIb29rc1tiXXx8ZC5jc3NIb29rc1ttXSx2b2lkIDA9PT1jKXJldHVybiBoJiYKImdldCJpbiBoJiZ2b2lkIDAhPT0oZj1oLmdldChhLCExLGUpKT9mOnRbYl07InN0cmluZyI9PT0oZz10eXBlb2YgYykmJihmPXliLmV4ZWMoYykpJiZmWzFdJiYoYz1QYihhLGIsZiksZz0ibnVtYmVyIik7bnVsbCE9YyYmYz09YyYmKCJudW1iZXIiIT09Z3x8bHx8KGMrPWYmJmZbM118fChkLmNzc051bWJlclttXT8iIjoicHgiKSksTi5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwodFtiXT0iaW5oZXJpdCIpLGgmJiJzZXQiaW4gaCYmdm9pZCAwPT09KGM9aC5zZXQoYSxjLGUpKXx8KGw\/dC5zZXRQcm9wZXJ0eShiLGMpOnRbYl09YykpfX0sY3NzOmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGcsaCxtPUJhKGIpO3JldHVybiBhYy50ZXN0KGIpfHwoYj1BYihtKSksKGg9ZC5jc3NIb29rc1tiXXx8ZC5jc3NIb29rc1ttXSkmJiJnZXQiaW4gaCYmKGY9aC5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9S2EoYSxiLGUpKSwibm9ybWFsIj09PQpmJiZiIGluIENjJiYoZj1DY1tiXSksIiI9PT1jfHxjPyhnPXBhcnNlRmxvYXQoZiksITA9PT1jfHxpc0Zpbml0ZShnKT9nfHwwOmYpOmZ9fSk7ZC5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe2QuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihjLGUsZil7aWYoZSlyZXR1cm4hb2QudGVzdChkLmNzcyhjLCJkaXNwbGF5IikpfHxjLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP0JiKGMsYixmKTpCYyhjLHBkLGZ1bmN0aW9uKCl7cmV0dXJuIEJiKGMsYixmKX0pfSxzZXQ6ZnVuY3Rpb24oYyxlLGYpe3ZhciBnLGg9VWIoYyksbT0hTi5zY3JvbGxib3hTaXplKCkmJiJhYnNvbHV0ZSI9PT1oLnBvc2l0aW9uLGw9KG18fGYpJiYiYm9yZGVyLWJveCI9PT1kLmNzcyhjLCJib3hTaXppbmciLCExLGgpO2Y9Zj9yYihjLGIsZixsLGgpOjA7cmV0dXJuIGwmJm0mJihmLT1NYXRoLmNlaWwoY1sib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrCmIuc2xpY2UoMSldLXBhcnNlRmxvYXQoaFtiXSktcmIoYyxiLCJib3JkZXIiLCExLGgpLS41KSksZiYmKGc9eWIuZXhlYyhlKSkmJiJweCIhPT0oZ1szXXx8InB4IikmJihjLnN0eWxlW2JdPWUsZT1kLmNzcyhjLGIpKSxXYigwLGUsZil9fX0pO2QuY3NzSG9va3MubWFyZ2luTGVmdD1WYihOLnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihhLGIpe2lmKGIpcmV0dXJuKHBhcnNlRmxvYXQoS2EoYSwibWFyZ2luTGVmdCIpKXx8YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LUJjKGEse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KTtkLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe2QuY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe3ZhciBlPTAsZj17fTtmb3IoYz0ic3RyaW5nIj09dHlwZW9mIGM\/Yy5zcGxpdCgiICIpOltjXTs0PgplO2UrKylmW2ErUGFbZV0rYl09Y1tlXXx8Y1tlLTJdfHxjWzBdO3JldHVybiBmfX07Im1hcmdpbiIhPT1hJiYoZC5jc3NIb29rc1thK2JdLnNldD1XYil9KTtkLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24oYyxlLGYpe3ZhciBnLGg9e30sbT0wO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Y9VWIoYyk7Zm9yKGc9ZS5sZW5ndGg7bTxnO20rKyloW2VbbV1dPWQuY3NzKGMsZVttXSwhMSxmKTtyZXR1cm4gaH1yZXR1cm4gdm9pZCAwIT09Zj9kLnN0eWxlKGMsZSxmKTpkLmNzcyhjLGUpfSxhLGIsMTxhcmd1bWVudHMubGVuZ3RoKX19KTsoKGQuVHdlZW49emEpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6emEsaW5pdDpmdW5jdGlvbihhLGIsYyxlLGYsZyl7dGhpcy5lbGVtPWE7dGhpcy5wcm9wPWM7dGhpcy5lYXNpbmc9Znx8ZC5lYXNpbmcuX2RlZmF1bHQ7dGhpcy5vcHRpb25zPWI7dGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpO3RoaXMuZW5kPQplO3RoaXMudW5pdD1nfHwoZC5jc3NOdW1iZXJbY10\/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPXphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTp6YS5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz16YS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9ZC5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOnphLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319KS5pbml0LnByb3RvdHlwZT0KemEucHJvdG90eXBlOyh6YS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIDEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGwhPWEuZWxlbVthLnByb3BdJiZudWxsPT1hLmVsZW0uc3R5bGVbYS5wcm9wXT9hLmVsZW1bYS5wcm9wXTooYj1kLmNzcyhhLmVsZW0sYS5wcm9wLCIiKSkmJiJhdXRvIiE9PWI\/YjowfSxzZXQ6ZnVuY3Rpb24oYSl7ZC5meC5zdGVwW2EucHJvcF0\/ZC5meC5zdGVwW2EucHJvcF0oYSk6MSE9PWEuZWxlbS5ub2RlVHlwZXx8IWQuY3NzSG9va3NbYS5wcm9wXSYmbnVsbD09YS5lbGVtLnN0eWxlW0FiKGEucHJvcCldP2EuZWxlbVthLnByb3BdPWEubm93OmQuc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpfX19KS5zY3JvbGxUb3A9emEucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX07ZC5lYXNpbmc9CntsaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0aW9uKGEpe3JldHVybi41LU1hdGguY29zKGEqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn07ZC5meD16YS5wcm90b3R5cGUuaW5pdDtkLmZ4LnN0ZXA9e307dmFyIHNiLFhiLHFkPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxyZD0vcXVldWVIb29rcyQvO2QuQW5pbWF0aW9uPWQuZXh0ZW5kKHgse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpO3JldHVybiBQYihjLmVsZW0sYSx5Yi5leGVjKGIpLGMpLGN9XX0sdHdlZW5lcjpmdW5jdGlvbihhLGIpe00oYSk\/KGI9YSxhPVsiKiJdKTphPWEubWF0Y2goTGEpO2Zvcih2YXIgYyxlPTAsZj1hLmxlbmd0aDtlPGY7ZSsrKWM9YVtlXSx4LnR3ZWVuZXJzW2NdPXgudHdlZW5lcnNbY118fFtdLHgudHdlZW5lcnNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyczpbZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoLAptLGwsdCx3PSJ3aWR0aCJpbiBifHwiaGVpZ2h0ImluIGIscj10aGlzLHo9e30sRD1hLnN0eWxlLEY9YS5ub2RlVHlwZSYmUWIoYSksTz1HLmdldChhLCJmeHNob3ciKTtmb3IoZSBpbiBjLnF1ZXVlfHwobnVsbD09KGg9ZC5fcXVldWVIb29rcyhhLCJmeCIpKS51bnF1ZXVlZCYmKGgudW5xdWV1ZWQ9MCxtPWguZW1wdHkuZmlyZSxoLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXtoLnVucXVldWVkfHxtKCl9KSxoLnVucXVldWVkKyssci5hbHdheXMoZnVuY3Rpb24oKXtyLmFsd2F5cyhmdW5jdGlvbigpe2gudW5xdWV1ZWQtLTtkLnF1ZXVlKGEsImZ4IikubGVuZ3RofHxoLmVtcHR5LmZpcmUoKX0pfSkpLGIpaWYoZj1iW2VdLHFkLnRlc3QoZikpe2lmKGRlbGV0ZSBiW2VdLGc9Z3x8InRvZ2dsZSI9PT1mLGY9PT0oRj8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09Znx8IU98fHZvaWQgMD09PU9bZV0pY29udGludWU7Rj0hMH16W2VdPU8mJk9bZV18fGQuc3R5bGUoYSxlKX1pZigoYj0hZC5pc0VtcHR5T2JqZWN0KGIpKXx8CiFkLmlzRW1wdHlPYmplY3QoeikpZm9yKGUgaW4gdyYmMT09PWEubm9kZVR5cGUmJihjLm92ZXJmbG93PVtELm92ZXJmbG93LEQub3ZlcmZsb3dYLEQub3ZlcmZsb3dZXSxudWxsPT0obD1PJiZPLmRpc3BsYXkpJiYobD1HLmdldChhLCJkaXNwbGF5IikpLCJub25lIj09PSh0PWQuY3NzKGEsImRpc3BsYXkiKSkmJihsP3Q9bDooJGEoW2FdLCEwKSxsPWEuc3R5bGUuZGlzcGxheXx8bCx0PWQuY3NzKGEsImRpc3BsYXkiKSwkYShbYV0pKSksKCJpbmxpbmUiPT09dHx8ImlubGluZS1ibG9jayI9PT10JiZudWxsIT1sKSYmIm5vbmUiPT09ZC5jc3MoYSwiZmxvYXQiKSYmKGJ8fChyLmRvbmUoZnVuY3Rpb24oKXtELmRpc3BsYXk9bH0pLG51bGw9PWwmJih0PUQuZGlzcGxheSxsPSJub25lIj09PXQ\/IiI6dCkpLEQuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLGMub3ZlcmZsb3cmJihELm92ZXJmbG93PSJoaWRkZW4iLHIuYWx3YXlzKGZ1bmN0aW9uKCl7RC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdOwpELm92ZXJmbG93WD1jLm92ZXJmbG93WzFdO0Qub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSksYj0hMSx6KWJ8fChPPyJoaWRkZW4iaW4gTyYmKEY9Ty5oaWRkZW4pOk89Ry5hY2Nlc3MoYSwiZnhzaG93Iix7ZGlzcGxheTpsfSksZyYmKE8uaGlkZGVuPSFGKSxGJiYkYShbYV0sITApLHIuZG9uZShmdW5jdGlvbigpe2ZvcihlIGluIEZ8fCRhKFthXSksRy5yZW1vdmUoYSwiZnhzaG93IikseilkLnN0eWxlKGEsZSx6W2VdKX0pKSxiPXUoRj9PW2VdOjAsZSxyKSxlIGluIE98fChPW2VdPWIuc3RhcnQsRiYmKGIuZW5kPWIuc3RhcnQsYi5zdGFydD0wKSl9XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP3gucHJlZmlsdGVycy51bnNoaWZ0KGEpOngucHJlZmlsdGVycy5wdXNoKGEpfX0pO2Quc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWEmJiJvYmplY3QiPT10eXBlb2YgYT9kLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fE0oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmCmJ8fGImJiFNKGIpJiZifTtyZXR1cm4gZC5meC5vZmY\/ZS5kdXJhdGlvbj0wOiJudW1iZXIiIT10eXBlb2YgZS5kdXJhdGlvbiYmKGUuZHVyYXRpb24gaW4gZC5meC5zcGVlZHM\/ZS5kdXJhdGlvbj1kLmZ4LnNwZWVkc1tlLmR1cmF0aW9uXTplLmR1cmF0aW9uPWQuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1lLnF1ZXVlJiYhMCE9PWUucXVldWV8fChlLnF1ZXVlPSJmeCIpLGUub2xkPWUuY29tcGxldGUsZS5jb21wbGV0ZT1mdW5jdGlvbigpe00oZS5vbGQpJiZlLm9sZC5jYWxsKHRoaXMpO2UucXVldWUmJmQuZGVxdWV1ZSh0aGlzLGUucXVldWUpfSxlfTtkLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiB0aGlzLmZpbHRlcihRYikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZSl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9ZC5pc0VtcHR5T2JqZWN0KGEpLGc9ZC5zcGVlZChiLGMsZSk7CmI9ZnVuY3Rpb24oKXt2YXIgaD14KHRoaXMsZC5leHRlbmQoe30sYSksZyk7KGZ8fEcuZ2V0KHRoaXMsImZpbmlzaCIpKSYmaC5zdG9wKCEwKX07cmV0dXJuIGIuZmluaXNoPWIsZnx8ITE9PT1nLnF1ZXVlP3RoaXMuZWFjaChiKTp0aGlzLnF1ZXVlKGcucXVldWUsYil9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWZ1bmN0aW9uKGYpe3ZhciBnPWYuc3RvcDtkZWxldGUgZi5zdG9wO2coYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGY9ITAsZz1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixoPWQudGltZXJzLG09Ry5nZXQodGhpcyk7aWYoZyltW2ddJiZtW2ddLnN0b3AmJmUobVtnXSk7ZWxzZSBmb3IoZyBpbiBtKW1bZ10mJm1bZ10uc3RvcCYmcmQudGVzdChnKSYmZShtW2ddKTtmb3IoZz1oLmxlbmd0aDtnLS07KWhbZ10uZWxlbSE9PXRoaXN8fG51bGwhPQphJiZoW2ddLnF1ZXVlIT09YXx8KGhbZ10uYW5pbS5zdG9wKGMpLGY9ITEsaC5zcGxpY2UoZywxKSk7IWYmJmN8fGQuZGVxdWV1ZSh0aGlzLGEpfSl9LGZpbmlzaDpmdW5jdGlvbihhKXtyZXR1cm4hMSE9PWEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPUcuZ2V0KHRoaXMpLGM9YlthKyJxdWV1ZSJdLGU9YlthKyJxdWV1ZUhvb2tzIl0sZj1kLnRpbWVycyxnPWM\/Yy5sZW5ndGg6MDtiLmZpbmlzaD0hMDtkLnF1ZXVlKHRoaXMsYSxbXSk7ZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbT09PXRoaXMmJmZbZV0ucXVldWU9PT1hJiYoZltlXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxnO2UrKyljW2VdJiZjW2VdLmZpbmlzaCYmY1tlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYi5maW5pc2h9KX19KTtkLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsCmIpe3ZhciBjPWQuZm5bYl07ZC5mbltiXT1mdW5jdGlvbihlLGYsZyl7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU\/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKHRiKGIsITApLGUsZixnKX19KTtkLmVhY2goe3NsaWRlRG93bjp0Yigic2hvdyIpLHNsaWRlVXA6dGIoImhpZGUiKSxzbGlkZVRvZ2dsZTp0YigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2QuZm5bYV09ZnVuY3Rpb24oYyxlLGYpe3JldHVybiB0aGlzLmFuaW1hdGUoYixjLGUsZil9fSk7ZC50aW1lcnM9W107ZC5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9ZC50aW1lcnM7Zm9yKHNiPURhdGUubm93KCk7YjxjLmxlbmd0aDtiKyspKGE9Y1tiXSkoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ZC5meC5zdG9wKCk7CnNiPXZvaWQgMH07ZC5meC50aW1lcj1mdW5jdGlvbihhKXtkLnRpbWVycy5wdXNoKGEpO2QuZnguc3RhcnQoKX07ZC5meC5pbnRlcnZhbD0xMztkLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7WGJ8fChYYj0hMCxDYigpKX07ZC5meC5zdG9wPWZ1bmN0aW9uKCl7WGI9bnVsbH07ZC5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH07ZC5mbi5kZWxheT1mdW5jdGlvbihhLGIpe3JldHVybiBhPWQuZngmJmQuZnguc3BlZWRzW2FdfHxhLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYyxlKXt2YXIgZj1uLnNldFRpbWVvdXQoYyxhKTtlLnN0b3A9ZnVuY3Rpb24oKXtuLmNsZWFyVGltZW91dChmKX19KX07dmFyIEliPUwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxzZD1MLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEwuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO0liLnR5cGU9ImNoZWNrYm94IjtOLmNoZWNrT249IiIhPT1JYi52YWx1ZTtOLm9wdFNlbGVjdGVkPQpzZC5zZWxlY3RlZDsoSWI9TC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCI7SWIudHlwZT0icmFkaW8iO04ucmFkaW9WYWx1ZT0idCI9PT1JYi52YWx1ZTt2YXIgSmI9ZC5leHByLmF0dHJIYW5kbGU7ZC5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGEodGhpcyxkLmF0dHIsYSxiLDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QucmVtb3ZlQXR0cih0aGlzLGEpfSl9fSk7ZC5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZz1hLm5vZGVUeXBlO2lmKDMhPT1nJiY4IT09ZyYmMiE9PWcpcmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBhLmdldEF0dHJpYnV0ZT9kLnByb3AoYSxiLGMpOigxPT09ZyYmZC5pc1hNTERvYyhhKXx8KGY9ZC5hdHRySG9va3NbYi50b0xvd2VyQ2FzZSgpXXx8KGQuZXhwci5tYXRjaC5ib29sLnRlc3QoYik\/dGQ6dm9pZCAwKSksCnZvaWQgMCE9PWM\/bnVsbD09PWM\/dm9pZCBkLnJlbW92ZUF0dHIoYSxiKTpmJiYic2V0ImluIGYmJnZvaWQgMCE9PShlPWYuc2V0KGEsYyxiKSk\/ZTooYS5zZXRBdHRyaWJ1dGUoYixjKyIiKSxjKTpmJiYiZ2V0ImluIGYmJm51bGwhPT0oZT1mLmdldChhLGIpKT9lOm51bGw9PShlPWQuZmluZC5hdHRyKGEsYikpP3ZvaWQgMDplKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZighTi5yYWRpb1ZhbHVlJiYicmFkaW8iPT09YiYmWChhLCJpbnB1dCIpKXt2YXIgYz1hLnZhbHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9YyksYn19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjPTAsZT1iJiZiLm1hdGNoKExhKTtpZihlJiYxPT09YS5ub2RlVHlwZSlmb3IoO2I9ZVtjKytdOylhLnJlbW92ZUF0dHJpYnV0ZShiKX19KTt2YXIgdGQ9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuITE9PT1iP2QucmVtb3ZlQXR0cihhLApjKTphLnNldEF0dHJpYnV0ZShjLGMpLGN9fTtkLmVhY2goZC5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1KYltiXXx8ZC5maW5kLmF0dHI7SmJbYl09ZnVuY3Rpb24oZSxmLGcpe3ZhciBoLG0sbD1mLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGd8fChtPUpiW2xdLEpiW2xdPWgsaD1udWxsIT1jKGUsZixnKT9sOm51bGwsSmJbbF09bSksaH19KTt2YXIgdWQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx2ZD0vXig\/OmF8YXJlYSkkL2k7ZC5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGEodGhpcyxkLnByb3AsYSxiLDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW2QucHJvcEZpeFthXXx8YV19KX19KTtkLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnPWEubm9kZVR5cGU7CmlmKDMhPT1nJiY4IT09ZyYmMiE9PWcpcmV0dXJuIDE9PT1nJiZkLmlzWE1MRG9jKGEpfHwoYj1kLnByb3BGaXhbYl18fGIsZj1kLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9mJiYic2V0ImluIGYmJnZvaWQgMCE9PShlPWYuc2V0KGEsYyxiKSk\/ZTphW2JdPWM6ZiYmImdldCJpbiBmJiZudWxsIT09KGU9Zi5nZXQoYSxiKSk\/ZTphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ZC5maW5kLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJzZUludChiLDEwKTp1ZC50ZXN0KGEubm9kZU5hbWUpfHx2ZC50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY\/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19KTtOLm9wdFNlbGVjdGVkfHwoZC5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXthPWEucGFyZW50Tm9kZTtyZXR1cm4gYSYmYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwKbnVsbH0sc2V0OmZ1bmN0aW9uKGEpe2E9YS5wYXJlbnROb2RlO2EmJihhLnNlbGVjdGVkSW5kZXgsYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSk7ZC5lYWNoKCJ0YWJJbmRleCByZWFkT25seSBtYXhMZW5ndGggY2VsbFNwYWNpbmcgY2VsbFBhZGRpbmcgcm93U3BhbiBjb2xTcGFuIHVzZU1hcCBmcmFtZUJvcmRlciBjb250ZW50RWRpdGFibGUiLnNwbGl0KCIgIiksZnVuY3Rpb24oKXtkLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7ZC5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGcsaDtyZXR1cm4gTShhKT90aGlzLmVhY2goZnVuY3Rpb24obSl7ZCh0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxtLEgodGhpcykpKX0pOihiPVAoYSkpLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24oKXtpZihlPUgodGhpcyksYz0xPT09dGhpcy5ub2RlVHlwZSYmIiAiK0MoZSkrIiAiKXtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKWY9CmJbZ10sMD5jLmluZGV4T2YoIiAiK2YrIiAiKSYmKGMrPWYrIiAiKTtoPUMoYyk7ZSE9PWgmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9fSk6dGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZyxoO3JldHVybiBNKGEpP3RoaXMuZWFjaChmdW5jdGlvbihtKXtkKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLG0sSCh0aGlzKSkpfSk6YXJndW1lbnRzLmxlbmd0aD8oYj1QKGEpKS5sZW5ndGg\/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoZT1IKHRoaXMpLGM9MT09PXRoaXMubm9kZVR5cGUmJiIgIitDKGUpKyIgIil7Zm9yKGc9MDtnPGIubGVuZ3RoO2crKylmb3IoZj1iW2ddOy0xPGMuaW5kZXhPZigiICIrZisiICIpOyljPWMucmVwbGFjZSgiICIrZisiICIsIiAiKTtoPUMoYyk7ZSE9PWgmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9fSk6dGhpczp0aGlzLmF0dHIoImNsYXNzIiwiIil9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGMsCmUsZixnLGg9dHlwZW9mIGEsbT0ic3RyaW5nIj09PWh8fEFycmF5LmlzQXJyYXkoYSk7cmV0dXJuIE0oYSk\/dGhpcy5lYWNoKGZ1bmN0aW9uKGwpe2QodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsbCxIKHRoaXMpLGIpLGIpfSk6ImJvb2xlYW4iPT10eXBlb2YgYiYmbT9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTooYz1QKGEpLHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKG0pZm9yKGc9ZCh0aGlzKSxmPTA7ZjxjLmxlbmd0aDtmKyspZT1jW2ZdLGcuaGFzQ2xhc3MoZSk\/Zy5yZW1vdmVDbGFzcyhlKTpnLmFkZENsYXNzKGUpO2Vsc2Ugdm9pZCAwIT09YSYmImJvb2xlYW4iIT09aHx8KChlPUgodGhpcykpJiZHLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWE\/IiI6Ry5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSkpfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYiwKYz0wO2ZvcihhPSIgIithKyIgIjtiPXRoaXNbYysrXTspaWYoMT09PWIubm9kZVR5cGUmJi0xPCgiICIrQyhIKGIpKSsiICIpLmluZGV4T2YoYSkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHdkPS9cci9nO2QuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGY9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1NKGEpLHRoaXMuZWFjaChmdW5jdGlvbihnKXt2YXIgaDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PShoPWU\/YS5jYWxsKHRoaXMsZyxkKHRoaXMpLnZhbCgpKTphKT9oPSIiOiJudW1iZXIiPT10eXBlb2YgaD9oKz0iIjpBcnJheS5pc0FycmF5KGgpJiYoaD1kLm1hcChoLGZ1bmN0aW9uKG0pe3JldHVybiBudWxsPT1tPyIiOm0rIiJ9KSksKGI9ZC52YWxIb29rc1t0aGlzLnR5cGVdfHxkLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIGImJnZvaWQgMCE9PWIuc2V0KHRoaXMsaCwidmFsdWUiKXx8KHRoaXMudmFsdWU9CmgpKX0pKTpmPyhiPWQudmFsSG9va3NbZi50eXBlXXx8ZC52YWxIb29rc1tmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChmLCJ2YWx1ZSIpKT9jOiJzdHJpbmciPT10eXBlb2YoYz1mLnZhbHVlKT9jLnJlcGxhY2Uod2QsIiIpOm51bGw9PWM\/IiI6Yzp2b2lkIDB9fSk7ZC5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1kLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6QyhkLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlPWEub3B0aW9ucyxmPWEuc2VsZWN0ZWRJbmRleCxnPSJzZWxlY3Qtb25lIj09PWEudHlwZSxoPWc\/bnVsbDpbXSxtPWc\/ZisxOmUubGVuZ3RoO2ZvcihjPTA+Zj9tOmc\/ZjowO2M8bTtjKyspaWYoISghKGI9ZVtjXSkuc2VsZWN0ZWQmJmMhPT1mfHxiLmRpc2FibGVkfHxiLnBhcmVudE5vZGUuZGlzYWJsZWQmJlgoYi5wYXJlbnROb2RlLAoib3B0Z3JvdXAiKSkpe2lmKGE9ZChiKS52YWwoKSxnKXJldHVybiBhO2gucHVzaChhKX1yZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmPWEub3B0aW9ucztiPWQubWFrZUFycmF5KGIpO2Zvcih2YXIgZz1mLmxlbmd0aDtnLS07KSgoZT1mW2ddKS5zZWxlY3RlZD0tMTxkLmluQXJyYXkoZC52YWxIb29rcy5vcHRpb24uZ2V0KGUpLGIpKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxifX19fSk7ZC5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7ZC52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS5jaGVja2VkPS0xPGQuaW5BcnJheShkKGEpLnZhbCgpLGIpfX07Ti5jaGVja09ufHwoZC52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBLYj1uLmxvY2F0aW9uLApEYz1EYXRlLm5vdygpLGhjPS9cPy87ZC5wYXJzZVhNTD1mdW5jdGlvbihhKXt2YXIgYjtpZighYXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXt2YXIgYz0obmV3IG4uRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoYSwidGV4dC94bWwiKX1jYXRjaChlKXt9cmV0dXJuIGI9YyYmYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKVswXSxjJiYhYnx8ZC5lcnJvcigiSW52YWxpZCBYTUw6ICIrKGI\/ZC5tYXAoYi5jaGlsZE5vZGVzLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkuam9pbigiXG4iKTphKSksY307dmFyIEVjPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxGYz1mdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpfTtkLmV4dGVuZChkLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmLGcsaCxtLGwsdCx3PVtjfHxMXSxyPUZiLmNhbGwoYSwidHlwZSIpP2EudHlwZTphLHo9RmIuY2FsbChhLAoibmFtZXNwYWNlIik\/YS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihmPXQ9Zz1jPWN8fEwsMyE9PWMubm9kZVR5cGUmJjghPT1jLm5vZGVUeXBlJiYhRWMudGVzdChyK2QuZXZlbnQudHJpZ2dlcmVkKSYmKC0xPHIuaW5kZXhPZigiLiIpJiYocj0oej1yLnNwbGl0KCIuIikpLnNoaWZ0KCksei5zb3J0KCkpLGg9MD5yLmluZGV4T2YoIjoiKSYmIm9uIityLChhPWFbZC5leHBhbmRvXT9hOm5ldyBkLkV2ZW50KHIsIm9iamVjdCI9PXR5cGVvZiBhJiZhKSkuaXNUcmlnZ2VyPWU\/MjozLGEubmFtZXNwYWNlPXouam9pbigiLiIpLGEucm5hbWVzcGFjZT1hLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIit6LmpvaW4oIlxcLig\/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsYS5yZXN1bHQ9dm9pZCAwLGEudGFyZ2V0fHwoYS50YXJnZXQ9YyksYj1udWxsPT1iP1thXTpkLm1ha2VBcnJheShiLFthXSksbD1kLmV2ZW50LnNwZWNpYWxbcl18fHt9LGV8fCFsLnRyaWdnZXJ8fCExIT09CmwudHJpZ2dlci5hcHBseShjLGIpKSl7aWYoIWUmJiFsLm5vQnViYmxlJiYha2IoYykpe3ZhciBEPWwuZGVsZWdhdGVUeXBlfHxyO2ZvcihFYy50ZXN0KEQrcil8fChmPWYucGFyZW50Tm9kZSk7ZjtmPWYucGFyZW50Tm9kZSl3LnB1c2goZiksZz1mO2c9PT0oYy5vd25lckRvY3VtZW50fHxMKSYmdy5wdXNoKGcuZGVmYXVsdFZpZXd8fGcucGFyZW50V2luZG93fHxuKX1mb3Ioej0wOyhmPXdbeisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KXQ9ZixhLnR5cGU9MTx6P0Q6bC5iaW5kVHlwZXx8ciwobT0oRy5nZXQoZiwiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2EudHlwZV0mJkcuZ2V0KGYsImhhbmRsZSIpKSYmbS5hcHBseShmLGIpLChtPWgmJmZbaF0pJiZtLmFwcGx5JiZHYihmKSYmKGEucmVzdWx0PW0uYXBwbHkoZixiKSwhMT09PWEucmVzdWx0JiZhLnByZXZlbnREZWZhdWx0KCkpO3JldHVybiBhLnR5cGU9cixlfHxhLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwKbC5fZGVmYXVsdCYmITEhPT1sLl9kZWZhdWx0LmFwcGx5KHcucG9wKCksYil8fCFHYihjKXx8aCYmTShjW3JdKSYmIWtiKGMpJiYoKGc9Y1toXSkmJihjW2hdPW51bGwpLGQuZXZlbnQudHJpZ2dlcmVkPXIsYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZ0LmFkZEV2ZW50TGlzdGVuZXIocixGYyksY1tyXSgpLGEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmdC5yZW1vdmVFdmVudExpc3RlbmVyKHIsRmMpLGQuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxnJiYoY1toXT1nKSksYS5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1kLmV4dGVuZChuZXcgZC5FdmVudCxjLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITB9KTtkLmV2ZW50LnRyaWdnZXIoYSxudWxsLGIpfX0pO2QuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz0KdGhpc1swXTtpZihjKXJldHVybiBkLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApfX0pO3ZhciBVYz0vXFtcXSQvLEdjPS9ccj9cbi9nLHhkPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSx5ZD0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZC5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGU9W10sZj1mdW5jdGlvbihnLGgpe2g9TShoKT9oKCk6aDtlW2UubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZykrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1oPyIiOmgpfTtpZihudWxsPT1hKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhZC5pc1BsYWluT2JqZWN0KGEpKWQuZWFjaChhLGZ1bmN0aW9uKCl7Zih0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpZWEoYyxhW2NdLGIsZik7cmV0dXJuIGUuam9pbigiJiIpfTtkLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGQucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sCnNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9ZC5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE\/ZC5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhZCh0aGlzKS5pcygiOmRpc2FibGVkIikmJnlkLnRlc3QodGhpcy5ub2RlTmFtZSkmJiF4ZC50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwhSGIudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXthPWQodGhpcykudmFsKCk7cmV0dXJuIG51bGw9PWE\/bnVsbDpBcnJheS5pc0FycmF5KGEpP2QubWFwKGEsZnVuY3Rpb24oYyl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShHYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoR2MsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgemQ9LyUyMC9nLEFkPS8jLiokLyxCZD0vKFs\/Jl0pXz1bXiZdKi8sQ2Q9L14oLio\/KTpbIFx0XSooW15cclxuXSopJC9nbSwKRGQ9L14oPzpHRVR8SEVBRCkkLyxFZD0vXlwvXC8vLEhjPXt9LGNjPXt9LEljPSIqLyIuY29uY2F0KCIqIiksaWM9TC5jcmVhdGVFbGVtZW50KCJhIik7aWMuaHJlZj1LYi5ocmVmO2QuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpLYi5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDovXig\/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KEtiLnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOkljLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLywKaHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6ZC5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI\/aGIoaGIoYSxkLmFqYXhTZXR0aW5ncyksYik6aGIoZC5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6UWEoSGMpLGFqYXhUcmFuc3BvcnQ6UWEoY2MpLGFqYXg6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKFMsaGEsaWIsWil7dmFyIHJhLHZhLGthLE1hLHRhLFc9aGE7S3x8KEs9ITAsbSYmbi5jbGVhclRpbWVvdXQobSksZT12b2lkIDAsZz1afHwiIixRLnJlYWR5U3RhdGU9MDxTPzQ6MCxyYT0yMDA8PVMmJjMwMD5TfHwKMzA0PT09UyxpYiYmKE1hPWZ1bmN0aW9uKGZhLERhLGRiKXtmb3IodmFyIFZhLHVhLFksbGEsSWE9ZmEuY29udGVudHMsbWE9ZmEuZGF0YVR5cGVzOyIqIj09PW1hWzBdOyltYS5zaGlmdCgpLHZvaWQgMD09PVZhJiYoVmE9ZmEubWltZVR5cGV8fERhLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYoVmEpZm9yKHVhIGluIElhKWlmKElhW3VhXSYmSWFbdWFdLnRlc3QoVmEpKXttYS51bnNoaWZ0KHVhKTticmVha31pZihtYVswXWluIGRiKVk9bWFbMF07ZWxzZXtmb3IodWEgaW4gZGIpe2lmKCFtYVswXXx8ZmEuY29udmVydGVyc1t1YSsiICIrbWFbMF1dKXtZPXVhO2JyZWFrfWxhfHwobGE9dWEpfVk9WXx8bGF9aWYoWSlyZXR1cm4gWSE9PW1hWzBdJiZtYS51bnNoaWZ0KFkpLGRiW1ldfShyLFEsaWIpKSwhcmEmJi0xPGQuaW5BcnJheSgic2NyaXB0IixyLmRhdGFUeXBlcykmJjA+ZC5pbkFycmF5KCJqc29uIixyLmRhdGFUeXBlcykmJihyLmNvbnZlcnRlcnNbInRleHQgc2NyaXB0Il09CmZ1bmN0aW9uKCl7fSksTWE9ZnVuY3Rpb24oZmEsRGEsZGIsVmEpe3ZhciB1YSxZLGxhLElhLG1hLEhhPXt9LHZiPWZhLmRhdGFUeXBlcy5zbGljZSgpO2lmKHZiWzFdKWZvcihsYSBpbiBmYS5jb252ZXJ0ZXJzKUhhW2xhLnRvTG93ZXJDYXNlKCldPWZhLmNvbnZlcnRlcnNbbGFdO2ZvcihZPXZiLnNoaWZ0KCk7WTspaWYoZmEucmVzcG9uc2VGaWVsZHNbWV0mJihkYltmYS5yZXNwb25zZUZpZWxkc1tZXV09RGEpLCFtYSYmVmEmJmZhLmRhdGFGaWx0ZXImJihEYT1mYS5kYXRhRmlsdGVyKERhLGZhLmRhdGFUeXBlKSksbWE9WSxZPXZiLnNoaWZ0KCkpaWYoIioiPT09WSlZPW1hO2Vsc2UgaWYoIioiIT09bWEmJm1hIT09WSl7aWYoIShsYT1IYVttYSsiICIrWV18fEhhWyIqICIrWV0pKWZvcih1YSBpbiBIYSlpZigoSWE9dWEuc3BsaXQoIiAiKSlbMV09PT1ZJiYobGE9SGFbbWErIiAiK0lhWzBdXXx8SGFbIiogIitJYVswXV0pKXshMD09PWxhP2xhPUhhW3VhXTohMCE9PUhhW3VhXSYmKFk9CklhWzBdLHZiLnVuc2hpZnQoSWFbMV0pKTticmVha31pZighMCE9PWxhKWlmKGxhJiZmYVsidGhyb3dzIl0pRGE9bGEoRGEpO2Vsc2UgdHJ5e0RhPWxhKERhKX1jYXRjaChmYyl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6bGE\/ZmM6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK21hKyIgdG8gIitZfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOkRhfX0ocixNYSxRLHJhKSxyYT8oci5pZk1vZGlmaWVkJiYoKHRhPVEuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSkmJihkLmxhc3RNb2RpZmllZFtmXT10YSksKHRhPVEuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSkmJihkLmV0YWdbZl09dGEpKSwyMDQ9PT1TfHwiSEVBRCI9PT1yLnR5cGU\/Vz0ibm9jb250ZW50IjozMDQ9PT1TP1c9Im5vdG1vZGlmaWVkIjooVz1NYS5zdGF0ZSx2YT1NYS5kYXRhLHJhPSEoa2E9TWEuZXJyb3IpKSk6KGthPVcsIVMmJld8fChXPSJlcnJvciIsMD5TJiYoUz0wKSkpLFEuc3RhdHVzPQpTLFEuc3RhdHVzVGV4dD0oaGF8fFcpKyIiLHJhP0YucmVzb2x2ZVdpdGgoeixbdmEsVyxRXSk6Ri5yZWplY3RXaXRoKHosW1EsVyxrYV0pLFEuc3RhdHVzQ29kZShhYSksYWE9dm9pZCAwLGwmJkQudHJpZ2dlcihyYT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtRLHIscmE\/dmE6a2FdKSxPLmZpcmVXaXRoKHosW1EsV10pLGwmJihELnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW1Escl0pLC0tZC5hY3RpdmV8fGQuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfSJvYmplY3QiPT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCk7Yj1ifHx7fTt2YXIgZSxmLGcsaCxtLGwsdCx3LHI9ZC5hamF4U2V0dXAoe30sYiksej1yLmNvbnRleHR8fHIsRD1yLmNvbnRleHQmJih6Lm5vZGVUeXBlfHx6LmpxdWVyeSk\/ZCh6KTpkLmV2ZW50LEY9ZC5EZWZlcnJlZCgpLE89ZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYWE9ci5zdGF0dXNDb2RlfHx7fSxHYT17fSxxYT17fSxTYT0iY2FuY2VsZWQiLFE9CntyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oUyl7dmFyIGhhO2lmKEspe2lmKCFoKWZvcihoPXt9O2hhPUNkLmV4ZWMoZyk7KWhbaGFbMV0udG9Mb3dlckNhc2UoKSsiICJdPShoW2hhWzFdLnRvTG93ZXJDYXNlKCkrIiAiXXx8W10pLmNvbmNhdChoYVsyXSk7aGE9aFtTLnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09aGE\/bnVsbDpoYS5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gSz9nOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oUyxoYSl7cmV0dXJuIG51bGw9PUsmJihTPXFhW1MudG9Mb3dlckNhc2UoKV09cWFbUy50b0xvd2VyQ2FzZSgpXXx8UyxHYVtTXT1oYSksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihTKXtyZXR1cm4gbnVsbD09SyYmKHIubWltZVR5cGU9UyksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihTKXt2YXIgaGE7aWYoUylpZihLKVEuYWx3YXlzKFNbUS5zdGF0dXNdKTsKZWxzZSBmb3IoaGEgaW4gUylhYVtoYV09W2FhW2hhXSxTW2hhXV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKFMpe1M9U3x8U2E7cmV0dXJuIGUmJmUuYWJvcnQoUyksYygwLFMpLHRoaXN9fTtpZihGLnByb21pc2UoUSksci51cmw9KChhfHxyLnVybHx8S2IuaHJlZikrIiIpLnJlcGxhY2UoRWQsS2IucHJvdG9jb2wrIi8vIiksci50eXBlPWIubWV0aG9kfHxiLnR5cGV8fHIubWV0aG9kfHxyLnR5cGUsci5kYXRhVHlwZXM9KHIuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChMYSl8fFsiIl0sbnVsbD09ci5jcm9zc0RvbWFpbil7YT1MLmNyZWF0ZUVsZW1lbnQoImEiKTt0cnl7YS5ocmVmPXIudXJsLGEuaHJlZj1hLmhyZWYsci5jcm9zc0RvbWFpbj1pYy5wcm90b2NvbCsiLy8iK2ljLmhvc3QhPWEucHJvdG9jb2wrIi8vIithLmhvc3R9Y2F0Y2goUyl7ci5jcm9zc0RvbWFpbj0hMH19aWYoci5kYXRhJiZyLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIHIuZGF0YSYmCihyLmRhdGE9ZC5wYXJhbShyLmRhdGEsci50cmFkaXRpb25hbCkpLEViKEhjLHIsYixRKSxLKXJldHVybiBRO2Zvcih0IGluKGw9ZC5ldmVudCYmci5nbG9iYWwpJiYwPT1kLmFjdGl2ZSsrJiZkLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHIudHlwZT1yLnR5cGUudG9VcHBlckNhc2UoKSxyLmhhc0NvbnRlbnQ9IURkLnRlc3Qoci50eXBlKSxmPXIudXJsLnJlcGxhY2UoQWQsIiIpLHIuaGFzQ29udGVudD9yLmRhdGEmJnIucHJvY2Vzc0RhdGEmJjA9PT0oci5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYoci5kYXRhPXIuZGF0YS5yZXBsYWNlKHpkLCIrIikpOih3PXIudXJsLnNsaWNlKGYubGVuZ3RoKSxyLmRhdGEmJihyLnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHIuZGF0YSkmJihmKz0oaGMudGVzdChmKT8iJiI6Ij8iKStyLmRhdGEsZGVsZXRlIHIuZGF0YSksITE9PT1yLmNhY2hlJiYoZj1mLnJlcGxhY2UoQmQsCiIkMSIpLHc9KGhjLnRlc3QoZik\/IiYiOiI\/IikrIl89IitEYysrICt3KSxyLnVybD1mK3cpLHIuaWZNb2RpZmllZCYmKGQubGFzdE1vZGlmaWVkW2ZdJiZRLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixkLmxhc3RNb2RpZmllZFtmXSksZC5ldGFnW2ZdJiZRLnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLGQuZXRhZ1tmXSkpLChyLmRhdGEmJnIuaGFzQ29udGVudCYmITEhPT1yLmNvbnRlbnRUeXBlfHxiLmNvbnRlbnRUeXBlKSYmUS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHIuY29udGVudFR5cGUpLFEuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixyLmRhdGFUeXBlc1swXSYmci5hY2NlcHRzW3IuZGF0YVR5cGVzWzBdXT9yLmFjY2VwdHNbci5kYXRhVHlwZXNbMF1dKygiKiIhPT1yLmRhdGFUeXBlc1swXT8iLCAiK0ljKyI7IHE9MC4wMSI6IiIpOnIuYWNjZXB0c1siKiJdKSxyLmhlYWRlcnMpUS5zZXRSZXF1ZXN0SGVhZGVyKHQsci5oZWFkZXJzW3RdKTsKaWYoci5iZWZvcmVTZW5kJiYoITE9PT1yLmJlZm9yZVNlbmQuY2FsbCh6LFEscil8fEspKXJldHVybiBRLmFib3J0KCk7aWYoU2E9ImFib3J0IixPLmFkZChyLmNvbXBsZXRlKSxRLmRvbmUoci5zdWNjZXNzKSxRLmZhaWwoci5lcnJvciksZT1FYihjYyxyLGIsUSkpe2lmKFEucmVhZHlTdGF0ZT0xLGwmJkQudHJpZ2dlcigiYWpheFNlbmQiLFtRLHJdKSxLKXJldHVybiBRO3IuYXN5bmMmJjA8ci50aW1lb3V0JiYobT1uLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtRLmFib3J0KCJ0aW1lb3V0Iil9LHIudGltZW91dCkpO3RyeXt2YXIgSz0hMTtlLnNlbmQoR2EsYyl9Y2F0Y2goUyl7aWYoSyl0aHJvdyBTO2MoLTEsUyl9fWVsc2UgYygtMSwiTm8gVHJhbnNwb3J0Iik7cmV0dXJuIFF9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSk7ZC5lYWNoKFsiZ2V0IiwKInBvc3QiXSxmdW5jdGlvbihhLGIpe2RbYl09ZnVuY3Rpb24oYyxlLGYsZyl7cmV0dXJuIE0oZSkmJihnPWd8fGYsZj1lLGU9dm9pZCAwKSxkLmFqYXgoZC5leHRlbmQoe3VybDpjLHR5cGU6YixkYXRhVHlwZTpnLGRhdGE6ZSxzdWNjZXNzOmZ9LGQuaXNQbGFpbk9iamVjdChjKSYmYykpfX0pO2QuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpJiYoYS5jb250ZW50VHlwZT1hLmhlYWRlcnNbYl18fCIiKX0pO2QuX2V2YWxVcmw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmFqYXgoe3VybDphLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe2QuZ2xvYmFsRXZhbChlLGIsYyl9fSl9O2QuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGEpe3ZhciBiOwpyZXR1cm4gdGhpc1swXSYmKE0oYSkmJihhPWEuY2FsbCh0aGlzWzBdKSksYj1kKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksdGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYz10aGlzO2MuZmlyc3RFbGVtZW50Q2hpbGQ7KWM9Yy5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gY30pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBNKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXtkKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1kKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3ZhciBiPU0oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtkKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcywKYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uKCl7ZCh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KTtkLmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIWQuZXhwci5wc2V1ZG9zLnZpc2libGUoYSl9O2QuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuISEoYS5vZmZzZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfTtkLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBuLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGEpe319O3ZhciBGZD17MDoyMDAsMTIyMzoyMDR9LExiPWQuYWpheFNldHRpbmdzLnhocigpO04uY29ycz0hIUxiJiYid2l0aENyZWRlbnRpYWxzImluIExiO04uYWpheD1MYj0hIUxiO2QuYWpheFRyYW5zcG9ydChmdW5jdGlvbihhKXt2YXIgYiwKYztpZihOLmNvcnN8fExiJiYhYS5jcm9zc0RvbWFpbilyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe3ZhciBnLGg9YS54aHIoKTtpZihoLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZyBpbiBhLnhockZpZWxkcyloW2ddPWEueGhyRmllbGRzW2ddO2ZvcihnIGluIGEubWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGVbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKSxlKWguc2V0UmVxdWVzdEhlYWRlcihnLGVbZ10pO2I9ZnVuY3Rpb24obSl7cmV0dXJuIGZ1bmN0aW9uKCl7YiYmKGI9Yz1oLm9ubG9hZD1oLm9uZXJyb3I9aC5vbmFib3J0PWgub250aW1lb3V0PWgub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PW0\/aC5hYm9ydCgpOiJlcnJvciI9PT1tPwoibnVtYmVyIiE9dHlwZW9mIGguc3RhdHVzP2YoMCwiZXJyb3IiKTpmKGguc3RhdHVzLGguc3RhdHVzVGV4dCk6ZihGZFtoLnN0YXR1c118fGguc3RhdHVzLGguc3RhdHVzVGV4dCwidGV4dCIhPT0oaC5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2YgaC5yZXNwb25zZVRleHQ\/e2JpbmFyeTpoLnJlc3BvbnNlfTp7dGV4dDpoLnJlc3BvbnNlVGV4dH0saC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX07aC5vbmxvYWQ9YigpO2M9aC5vbmVycm9yPWgub250aW1lb3V0PWIoImVycm9yIik7dm9pZCAwIT09aC5vbmFib3J0P2gub25hYm9ydD1jOmgub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWgucmVhZHlTdGF0ZSYmbi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YiYmYygpfSl9O2I9YigiYWJvcnQiKTt0cnl7aC5zZW5kKGEuaGFzQ29udGVudCYmYS5kYXRhfHxudWxsKX1jYXRjaChtKXtpZihiKXRocm93IG07fX0sYWJvcnQ6ZnVuY3Rpb24oKXtiJiYKYigpfX19KTtkLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oYSl7YS5jcm9zc0RvbWFpbiYmKGEuY29udGVudHMuc2NyaXB0PSExKX0pO2QuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBkLmdsb2JhbEV2YWwoYSksYX19fSk7ZC5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKTthLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiKX0pO2QuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXt2YXIgYixjO2lmKGEuY3Jvc3NEb21haW58fGEuc2NyaXB0QXR0cnMpcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSwKZil7Yj1kKCI8c2NyaXB0PiIpLmF0dHIoYS5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6YS5zY3JpcHRDaGFyc2V0LHNyYzphLnVybH0pLm9uKCJsb2FkIGVycm9yIixjPWZ1bmN0aW9uKGcpe2IucmVtb3ZlKCk7Yz1udWxsO2cmJmYoImVycm9yIj09PWcudHlwZT80MDQ6MjAwLGcudHlwZSl9KTtMLmhlYWQuYXBwZW5kQ2hpbGQoYlswXSl9LGFib3J0OmZ1bmN0aW9uKCl7YyYmYygpfX19KTt2YXIgSmMsS2M9W10samM9Lyg9KVw\/KD89JnwkKXxcP1w\/LztkLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9S2MucG9wKCl8fGQuZXhwYW5kbysiXyIrRGMrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pO2QuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPSExIT09YS5qc29ucCYmKGpjLnRlc3QoYS51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYS5kYXRhJiYwPT09KGEuY29udGVudFR5cGV8fAoiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJmpjLnRlc3QoYS5kYXRhKSYmImRhdGEiKTtpZihofHwianNvbnAiPT09YS5kYXRhVHlwZXNbMF0pcmV0dXJuIGU9YS5qc29ucENhbGxiYWNrPU0oYS5qc29ucENhbGxiYWNrKT9hLmpzb25wQ2FsbGJhY2soKTphLmpzb25wQ2FsbGJhY2ssaD9hW2hdPWFbaF0ucmVwbGFjZShqYywiJDEiK2UpOiExIT09YS5qc29ucCYmKGEudXJsKz0oaGMudGVzdChhLnVybCk\/IiYiOiI\/IikrYS5qc29ucCsiPSIrZSksYS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIGd8fGQuZXJyb3IoZSsiIHdhcyBub3QgY2FsbGVkIiksZ1swXX0sYS5kYXRhVHlwZXNbMF09Impzb24iLGY9bltlXSxuW2VdPWZ1bmN0aW9uKCl7Zz1hcmd1bWVudHN9LGMuYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09Zj9kKG4pLnJlbW92ZVByb3AoZSk6bltlXT1mO2FbZV0mJihhLmpzb25wQ2FsbGJhY2s9Yi5qc29ucENhbGxiYWNrLApLYy5wdXNoKGUpKTtnJiZNKGYpJiZmKGdbMF0pO2c9Zj12b2lkIDB9KSwic2NyaXB0In0pO04uY3JlYXRlSFRNTERvY3VtZW50PSgoSmM9TC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1KYy5jaGlsZE5vZGVzLmxlbmd0aCk7ZC5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiJzdHJpbmciIT10eXBlb2YgYT9bXTooImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxifHwoTi5jcmVhdGVIVE1MRG9jdW1lbnQ\/KChlPShiPUwuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUwubG9jYXRpb24uaHJlZixiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpOmI9TCksZz0hYyYmW10sKGY9eWMuZXhlYyhhKSk\/W2IuY3JlYXRlRWxlbWVudChmWzFdKV06KGY9UmIoW2FdLGIsZyksZyYmZy5sZW5ndGgmJmQoZykucmVtb3ZlKCksCmQubWVyZ2UoW10sZi5jaGlsZE5vZGVzKSkpO3ZhciBlLGYsZ307ZC5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGcsaD10aGlzLG09YS5pbmRleE9mKCIgIik7cmV0dXJuLTE8bSYmKGU9QyhhLnNsaWNlKG0pKSxhPWEuc2xpY2UoMCxtKSksTShiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihmPSJQT1NUIiksMDxoLmxlbmd0aCYmZC5hamF4KHt1cmw6YSx0eXBlOmZ8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGwpe2c9YXJndW1lbnRzO2guaHRtbChlP2QoIjxkaXY+IikuYXBwZW5kKGQucGFyc2VIVE1MKGwpKS5maW5kKGUpOmwpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGwsdCl7aC5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGd8fFtsLnJlc3BvbnNlVGV4dCx0LGxdKX0pfSksdGhpc307ZC5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ3JlcChkLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PQpiLmVsZW19KS5sZW5ndGh9O2Qub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPWQuY3NzKGEsInBvc2l0aW9uIiksbT1kKGEpLGw9e307InN0YXRpYyI9PT1oJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2YXIgdD1tLm9mZnNldCgpLHc9ZC5jc3MoYSwidG9wIikscj1kLmNzcyhhLCJsZWZ0Iik7KCJhYnNvbHV0ZSI9PT1ofHwiZml4ZWQiPT09aCkmJi0xPCh3K3IpLmluZGV4T2YoImF1dG8iKT8oZz0oZT1tLnBvc2l0aW9uKCkpLnRvcCxmPWUubGVmdCk6KGc9cGFyc2VGbG9hdCh3KXx8MCxmPXBhcnNlRmxvYXQocil8fDApO00oYikmJihiPWIuY2FsbChhLGMsZC5leHRlbmQoe30sdCkpKTtudWxsIT1iLnRvcCYmKGwudG9wPWIudG9wLXQudG9wK2cpO251bGwhPWIubGVmdCYmKGwubGVmdD1iLmxlZnQtdC5sZWZ0K2YpOyJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGwpOm0uY3NzKGwpfX07ZC5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT0KYT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihmKXtkLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGYpfSk7dmFyIGIsYyxlPXRoaXNbMF07cmV0dXJuIGU\/ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oYj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGM9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHt0b3A6Yi50b3ArYy5wYWdlWU9mZnNldCxsZWZ0OmIubGVmdCtjLnBhZ2VYT2Zmc2V0fSk6e3RvcDowLGxlZnQ6MH06dm9pZCAwfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGI9dGhpc1swXSxjPXt0b3A6MCxsZWZ0OjB9O2lmKCJmaXhlZCI9PT1kLmNzcyhiLCJwb3NpdGlvbiIpKXZhciBlPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXtlPXRoaXMub2Zmc2V0KCk7dmFyIGY9Yi5vd25lckRvY3VtZW50O2ZvcihhPWIub2Zmc2V0UGFyZW50fHxmLmRvY3VtZW50RWxlbWVudDthJiYoYT09PWYuYm9keXx8YT09PWYuZG9jdW1lbnRFbGVtZW50KSYmCiJzdGF0aWMiPT09ZC5jc3MoYSwicG9zaXRpb24iKTspYT1hLnBhcmVudE5vZGU7YSYmYSE9PWImJjE9PT1hLm5vZGVUeXBlJiYoKGM9ZChhKS5vZmZzZXQoKSkudG9wKz1kLmNzcyhhLCJib3JkZXJUb3BXaWR0aCIsITApLGMubGVmdCs9ZC5jc3MoYSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpfXJldHVybnt0b3A6ZS50b3AtYy50b3AtZC5jc3MoYiwibWFyZ2luVG9wIiwhMCksbGVmdDplLmxlZnQtYy5sZWZ0LWQuY3NzKGIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQ7YSYmInN0YXRpYyI9PT1kLmNzcyhhLCJwb3NpdGlvbiIpOylhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxqYn0pfX0pO2QuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPSJwYWdlWU9mZnNldCI9PT0KYjtkLmZuW2FdPWZ1bmN0aW9uKGUpe3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGYsZyxoKXt2YXIgbTtpZihrYihmKT9tPWY6OT09PWYubm9kZVR5cGUmJihtPWYuZGVmYXVsdFZpZXcpLHZvaWQgMD09PWgpcmV0dXJuIG0\/bVtiXTpmW2ddO20\/bS5zY3JvbGxUbyhjP20ucGFnZVhPZmZzZXQ6aCxjP2g6bS5wYWdlWU9mZnNldCk6ZltnXT1ofSxhLGUsYXJndW1lbnRzLmxlbmd0aCl9fSk7ZC5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7ZC5jc3NIb29rc1tiXT1WYihOLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYyxlKXtpZihlKXJldHVybiBlPUthKGMsYiksYmMudGVzdChlKT9kKGMpLnBvc2l0aW9uKClbYl0rInB4IjplfSl9KTtkLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe2QuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxlKXtkLmZuW2VdPWZ1bmN0aW9uKGYsCmcpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBmKSxtPWN8fCghMD09PWZ8fCEwPT09Zz8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24obCx0LHcpe3ZhciByO3JldHVybiBrYihsKT8wPT09ZS5pbmRleE9mKCJvdXRlciIpP2xbImlubmVyIithXTpsLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09bC5ub2RlVHlwZT8ocj1sLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChsLmJvZHlbInNjcm9sbCIrYV0sclsic2Nyb2xsIithXSxsLmJvZHlbIm9mZnNldCIrYV0sclsib2Zmc2V0IithXSxyWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09dz9kLmNzcyhsLHQsbSk6ZC5zdHlsZShsLHQsdyxtKX0sYixoP2Y6dm9pZCAwLGgpfX0pfSk7ZC5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLApiKXtkLmZuW2JdPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLm9uKGIsYyl9fSk7ZC5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9uKGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGIpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxlKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxlKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhfHwiKioiLGMpfSxob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KTtkLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksCmZ1bmN0aW9uKGEsYil7ZC5mbltiXT1mdW5jdGlvbihjLGUpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg\/dGhpcy5vbihiLG51bGwsYyxlKTp0aGlzLnRyaWdnZXIoYil9fSk7dmFyIEdkPS9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nO2QucHJveHk9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7aWYoInN0cmluZyI9PXR5cGVvZiBiJiYoYz1hW2JdLGI9YSxhPWMpLE0oYSkpcmV0dXJuIGU9eWEuY2FsbChhcmd1bWVudHMsMiksKGY9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGUuY29uY2F0KHlhLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxkLmd1aWQrKyxmfTtkLmhvbGRSZWFkeT1mdW5jdGlvbihhKXthP2QucmVhZHlXYWl0Kys6ZC5yZWFkeSghMCl9O2QuaXNBcnJheT1BcnJheS5pc0FycmF5O2QucGFyc2VKU09OPUpTT04ucGFyc2U7ZC5ub2RlTmFtZT1YO2QuaXNGdW5jdGlvbj1NO2QuaXNXaW5kb3c9CmtiO2QuY2FtZWxDYXNlPUJhO2QudHlwZT1VO2Qubm93PURhdGUubm93O2QuaXNOdW1lcmljPWZ1bmN0aW9uKGEpe3ZhciBiPWQudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX07ZC50cmltPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKEdkLCIkMSIpfTsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gZH0pO3ZhciBIZD1uLmpRdWVyeSxJZD1uLiQ7cmV0dXJuIGQubm9Db25mbGljdD1mdW5jdGlvbihhKXtyZXR1cm4gbi4kPT09ZCYmKG4uJD1JZCksYSYmbi5qUXVlcnk9PT1kJiYobi5qUXVlcnk9SGQpLGR9LCJ1bmRlZmluZWQiPT10eXBlb2YgZGEmJihuLmpRdWVyeT1uLiQ9ZCksZH0pO3ZhciBtYXRjaGVkLGJyb3dzZXI7CmpRdWVyeS51YU1hdGNoPWZ1bmN0aW9uKG4pe249bi50b0xvd2VyQ2FzZSgpO249LyhjaHJvbWUpWyBcL10oW1x3Ll0rKS8uZXhlYyhuKXx8Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyhuKXx8LyhvcGVyYSkoPzouKnZlcnNpb258KVsgXC9dKFtcdy5dKykvLmV4ZWMobil8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMobil8fDA+bi5pbmRleE9mKCJjb21wYXRpYmxlIikmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKyl8KS8uZXhlYyhuKXx8W107cmV0dXJue2Jyb3dzZXI6blsxXXx8IiIsdmVyc2lvbjpuWzJdfHwiMCJ9fTttYXRjaGVkPWpRdWVyeS51YU1hdGNoKG5hdmlnYXRvci51c2VyQWdlbnQpO2Jyb3dzZXI9e307bWF0Y2hlZC5icm93c2VyJiYoYnJvd3NlclttYXRjaGVkLmJyb3dzZXJdPSEwLGJyb3dzZXIudmVyc2lvbj1tYXRjaGVkLnZlcnNpb24pO2Jyb3dzZXIuY2hyb21lP2Jyb3dzZXIud2Via2l0PSEwOmJyb3dzZXIud2Via2l0JiYoYnJvd3Nlci5zYWZhcmk9ITApOwpqUXVlcnkuYnJvd3Nlcj1icm93c2VyOwooZnVuY3Rpb24obil7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsianF1ZXJ5Il0sZnVuY3Rpb24oZGEpe3JldHVybiBuKGRhLHdpbmRvdyl9KToib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPW4ocmVxdWlyZSgianF1ZXJ5Iiksd2luZG93KTpuKGpRdWVyeSx3aW5kb3cpfSkoZnVuY3Rpb24obixkYSl7ZnVuY3Rpb24gd2EodSl7YTp7dmFyIHg9L14oXGQrKVwuKFxkKylcLihcZCspLyxDPXguZXhlYyhuLmZuLmpxdWVyeSl8fFtdO3g9eC5leGVjKHUpfHxbXTtmb3IodT0xOzM+PXU7dSsrKXtpZigrQ1t1XT4reFt1XSl7Qz0xO2JyZWFrIGF9aWYoK0NbdV08K3hbdV0pe0M9LTE7YnJlYWsgYX19Qz0wfXJldHVybiAwPD1DfWZ1bmN0aW9uIFUodSx4KXt2YXIgQz1kYS5jb25zb2xlOyFuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCh1KXx8bi5taWdyYXRlRGVkdXBsaWNhdGVXYXJuaW5ncyYmbWJbeF18fAoobWJbeF09ITAsbi5taWdyYXRlV2FybmluZ3MucHVzaCh4KyIgWyIrdSsiXSIpLEMmJkMud2FybiYmIW4ubWlncmF0ZU11dGUmJihDLndhcm4oIkpRTUlHUkFURTogIit4KSxuLm1pZ3JhdGVUcmFjZSYmQy50cmFjZSYmQy50cmFjZSgpKSl9ZnVuY3Rpb24gZWIodSx4LEMsSCxQKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodSx4LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtVKEgsUCk7cmV0dXJuIEN9LHNldDpmdW5jdGlvbihlYSl7VShILFApO0M9ZWF9fSl9ZnVuY3Rpb24gWCh1LHgsQyxILFApe3ZhciBlYSxRYT11W3hdO3VbeF09ZnVuY3Rpb24oKXtQJiZVKEgsUCk7ZWE9bi5taWdyYXRlSXNQYXRjaEVuYWJsZWQoSCk\/QzpRYXx8bi5ub29wO3JldHVybiBlYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGJhKHUseCxDLEgsUCl7aWYoIVApdGhyb3cgRXJyb3IoIk5vIHdhcm5pbmcgbWVzc2FnZSBwcm92aWRlZCIpO3JldHVybiBYKHUsCngsQyxILFApfWZ1bmN0aW9uIGphKHUseCxDLEgpe3JldHVybiBYKHUseCxDLEgpfWZ1bmN0aW9uIGxiKHUpe3JldHVybiB1LnJlcGxhY2UoLy0oW2Etel0pL2csZnVuY3Rpb24oeCxDKXtyZXR1cm4gQy50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gWWEodSl7cmV0dXJuIHBiLnRlc3QodSkmJlNiLnRlc3QodVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSkpfW4ubWlncmF0ZVZlcnNpb249IjMuNC4xIjt2YXIgWmE9T2JqZWN0LmNyZWF0ZShudWxsKTtuLm1pZ3JhdGVEaXNhYmxlUGF0Y2hlcz1mdW5jdGlvbigpe3ZhciB1O2Zvcih1PTA7dTxhcmd1bWVudHMubGVuZ3RoO3UrKylaYVthcmd1bWVudHNbdV1dPSEwfTtuLm1pZ3JhdGVFbmFibGVQYXRjaGVzPWZ1bmN0aW9uKCl7dmFyIHU7Zm9yKHU9MDt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKWRlbGV0ZSBaYVthcmd1bWVudHNbdV1dfTtuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZD1mdW5jdGlvbih1KXtyZXR1cm4hWmFbdV19O2RhLmNvbnNvbGUmJgpkYS5jb25zb2xlLmxvZyYmKG4mJndhKCIzLjAuMCIpJiYhd2EoIjUuMC4wIil8fGRhLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IGpRdWVyeSAzLngtNC54IFJFUVVJUkVEIiksbi5taWdyYXRlV2FybmluZ3MmJmRhLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IE1pZ3JhdGUgcGx1Z2luIGxvYWRlZCBtdWx0aXBsZSB0aW1lcyIpLGRhLmNvbnNvbGUubG9nKCJKUU1JR1JBVEU6IE1pZ3JhdGUgaXMgaW5zdGFsbGVkIisobi5taWdyYXRlTXV0ZT8iIjoiIHdpdGggbG9nZ2luZyBhY3RpdmUiKSsiLCB2ZXJzaW9uICIrbi5taWdyYXRlVmVyc2lvbikpO3ZhciBtYj17fTtuLm1pZ3JhdGVEZWR1cGxpY2F0ZVdhcm5pbmdzPSEwO24ubWlncmF0ZVdhcm5pbmdzPVtdO3ZvaWQgMD09PW4ubWlncmF0ZVRyYWNlJiYobi5taWdyYXRlVHJhY2U9ITApO24ubWlncmF0ZVJlc2V0PWZ1bmN0aW9uKCl7bWI9e307bi5taWdyYXRlV2FybmluZ3MubGVuZ3RoPTB9OyJCYWNrQ29tcGF0Ij09PWRhLmRvY3VtZW50LmNvbXBhdE1vZGUmJgpVKCJxdWlya3MiLCJqUXVlcnkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBRdWlya3MgTW9kZSIpO3ZhciBPYSxOYj17fSxCYT1uLmZuLmluaXQsSmE9bi5maW5kLE9iPS9cWyhccypbLVx3XStccyopKFt+fF4kKl0\/PSlccyooWy1cdyNdKj8jWy1cdyNdKilccypcXS8sUGI9L1xbKFxzKlstXHddK1xzKikoW358XiQqXT89KVxzKihbLVx3I10qPyNbLVx3I10qKVxzKlxdL2csJGE9L15bXHNcdUZFRkZceEEwXSt8KFteXHNcdUZFRkZceEEwXSlbXHNcdUZFRkZceEEwXSskL2c7amEobi5mbiwiaW5pdCIsZnVuY3Rpb24odSl7dmFyIHg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCgic2VsZWN0b3ItZW1wdHktaWQiKSYmInN0cmluZyI9PT10eXBlb2YgdSYmIiMiPT09dSYmKFUoInNlbGVjdG9yLWVtcHR5LWlkIiwialF1ZXJ5KCAnIycgKSBpcyBub3QgYSB2YWxpZCBzZWxlY3RvciIpLHhbMF09W10pO3JldHVybiBCYS5hcHBseSh0aGlzLAp4KX0sInNlbGVjdG9yLWVtcHR5LWlkIik7bi5mbi5pbml0LnByb3RvdHlwZT1uLmZuO2phKG4sImZpbmQiLGZ1bmN0aW9uKHUpe3ZhciB4PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYoInN0cmluZyI9PT10eXBlb2YgdSYmT2IudGVzdCh1KSl0cnl7ZGEuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih1KX1jYXRjaChDKXt1PXUucmVwbGFjZShQYixmdW5jdGlvbihILFAsZWEsUWEpe3JldHVybiJbIitQK2VhKyciJytRYSsnIl0nfSk7dHJ5e2RhLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodSksVSgic2VsZWN0b3ItaGFzaCIsIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyBtdXN0IGJlIHF1b3RlZDogIit4WzBdKSx4WzBdPXV9Y2F0Y2goSCl7VSgic2VsZWN0b3ItaGFzaCIsIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyB3YXMgbm90IGZpeGVkOiAiK3hbMF0pfX1yZXR1cm4gSmEuYXBwbHkodGhpcyx4KX0sInNlbGVjdG9yLWhhc2giKTtmb3IoT2EgaW4gSmEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEphLApPYSkmJihuLmZpbmRbT2FdPUphW09hXSk7YmEobi5mbiwic2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LCJzaXplIiwialF1ZXJ5LmZuLnNpemUoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkOyB1c2UgdGhlIC5sZW5ndGggcHJvcGVydHkiKTtiYShuLCJwYXJzZUpTT04iLGZ1bmN0aW9uKCl7cmV0dXJuIEpTT04ucGFyc2UuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwicGFyc2VKU09OIiwialF1ZXJ5LnBhcnNlSlNPTiBpcyBkZXByZWNhdGVkOyB1c2UgSlNPTi5wYXJzZSIpO2JhKG4sImhvbGRSZWFkeSIsbi5ob2xkUmVhZHksImhvbGRSZWFkeSIsImpRdWVyeS5ob2xkUmVhZHkgaXMgZGVwcmVjYXRlZCIpO2JhKG4sInVuaXF1ZSIsbi51bmlxdWVTb3J0LCJ1bmlxdWUiLCJqUXVlcnkudW5pcXVlIGlzIGRlcHJlY2F0ZWQ7IHVzZSBqUXVlcnkudW5pcXVlU29ydCIpO2ViKG4uZXhwciwiZmlsdGVycyIsbi5leHByLnBzZXVkb3MsImV4cHItcHJlLXBzZXVkb3MiLCJqUXVlcnkuZXhwci5maWx0ZXJzIGlzIGRlcHJlY2F0ZWQ7IHVzZSBqUXVlcnkuZXhwci5wc2V1ZG9zIik7CmViKG4uZXhwciwiOiIsbi5leHByLnBzZXVkb3MsImV4cHItcHJlLXBzZXVkb3MiLCJqUXVlcnkuZXhwclsnOiddIGlzIGRlcHJlY2F0ZWQ7IHVzZSBqUXVlcnkuZXhwci5wc2V1ZG9zIik7d2EoIjMuMS4xIikmJmJhKG4sInRyaW0iLGZ1bmN0aW9uKHUpe3JldHVybiBudWxsPT11PyIiOih1KyIiKS5yZXBsYWNlKCRhLCIkMSIpfSwidHJpbSIsImpRdWVyeS50cmltIGlzIGRlcHJlY2F0ZWQ7IHVzZSBTdHJpbmcucHJvdG90eXBlLnRyaW0iKTt3YSgiMy4yLjAiKSYmKGJhKG4sIm5vZGVOYW1lIixmdW5jdGlvbih1LHgpe3JldHVybiB1Lm5vZGVOYW1lJiZ1Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT14LnRvTG93ZXJDYXNlKCl9LCJub2RlTmFtZSIsImpRdWVyeS5ub2RlTmFtZSBpcyBkZXByZWNhdGVkIiksYmEobiwiaXNBcnJheSIsQXJyYXkuaXNBcnJheSwiaXNBcnJheSIsImpRdWVyeS5pc0FycmF5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBBcnJheS5pc0FycmF5IikpO3dhKCIzLjMuMCIpJiYKKGJhKG4sImlzTnVtZXJpYyIsZnVuY3Rpb24odSl7dmFyIHg9dHlwZW9mIHU7cmV0dXJuKCJudW1iZXIiPT09eHx8InN0cmluZyI9PT14KSYmIWlzTmFOKHUtcGFyc2VGbG9hdCh1KSl9LCJpc051bWVyaWMiLCJqUXVlcnkuaXNOdW1lcmljKCkgaXMgZGVwcmVjYXRlZCIpLG4uZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24odSx4KXtOYlsiW29iamVjdCAiK3grIl0iXT14LnRvTG93ZXJDYXNlKCl9KSxiYShuLCJ0eXBlIixmdW5jdGlvbih1KXtyZXR1cm4gbnVsbD09dT91KyIiOiJvYmplY3QiPT09dHlwZW9mIHV8fCJmdW5jdGlvbiI9PT10eXBlb2YgdT9OYltPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodSldfHwib2JqZWN0Ijp0eXBlb2YgdX0sInR5cGUiLCJqUXVlcnkudHlwZSBpcyBkZXByZWNhdGVkIiksYmEobiwiaXNGdW5jdGlvbiIsZnVuY3Rpb24odSl7cmV0dXJuImZ1bmN0aW9uIj09PQp0eXBlb2YgdX0sImlzRnVuY3Rpb24iLCJqUXVlcnkuaXNGdW5jdGlvbigpIGlzIGRlcHJlY2F0ZWQiKSxiYShuLCJpc1dpbmRvdyIsZnVuY3Rpb24odSl7cmV0dXJuIG51bGwhPXUmJnU9PT11LndpbmRvd30sImlzV2luZG93IiwialF1ZXJ5LmlzV2luZG93KCkgaXMgZGVwcmVjYXRlZCIpKTtpZihuLmFqYXgpe3ZhciBzYT1uLmFqYXgsbmI9Lyg9KVw\/KD89JnwkKXxcP1w\/LztqYShuLCJhamF4IixmdW5jdGlvbigpe3ZhciB1PXNhLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt1LnByb21pc2UmJihiYSh1LCJzdWNjZXNzIix1LmRvbmUsImpxWEhSLW1ldGhvZHMiLCJqUVhIUi5zdWNjZXNzIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQiKSxiYSh1LCJlcnJvciIsdS5mYWlsLCJqcVhIUi1tZXRob2RzIiwialFYSFIuZXJyb3IgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLGJhKHUsImNvbXBsZXRlIix1LmFsd2F5cywianFYSFItbWV0aG9kcyIsImpRWEhSLmNvbXBsZXRlIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQiKSk7CnJldHVybiB1fSwianFYSFItbWV0aG9kcyIpO3dhKCI0LjAuMCIpfHxuLmFqYXhQcmVmaWx0ZXIoIitqc29uIixmdW5jdGlvbih1KXshMSE9PXUuanNvbnAmJihuYi50ZXN0KHUudXJsKXx8InN0cmluZyI9PT10eXBlb2YgdS5kYXRhJiYwPT09KHUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmbmIudGVzdCh1LmRhdGEpKSYmVSgianNvbnAtcHJvbW90aW9uIiwiSlNPTi10by1KU09OUCBhdXRvLXByb21vdGlvbiBpcyBkZXByZWNhdGVkIil9KX12YXIgUmI9bi5mbi5yZW1vdmVBdHRyLGFiPW4uZm4udG9nZ2xlQ2xhc3MsYmI9L1xTKy9nO2phKG4uZm4sInJlbW92ZUF0dHIiLGZ1bmN0aW9uKHUpe3ZhciB4PXRoaXMsQz0hMTtuLmVhY2godS5tYXRjaChiYiksZnVuY3Rpb24oSCxQKXtuLmV4cHIubWF0Y2guYm9vbC50ZXN0KFApJiZ4LmVhY2goZnVuY3Rpb24oKXtpZighMSE9PW4odGhpcykucHJvcChQKSlyZXR1cm4gQz0KITAsITF9KTtDJiYoVSgicmVtb3ZlQXR0ci1ib29sIiwialF1ZXJ5LmZuLnJlbW92ZUF0dHIgbm8gbG9uZ2VyIHNldHMgYm9vbGVhbiBwcm9wZXJ0aWVzOiAiK1ApLHgucHJvcChQLCExKSl9KTtyZXR1cm4gUmIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwicmVtb3ZlQXR0ci1ib29sIik7amEobi5mbiwidG9nZ2xlQ2xhc3MiLGZ1bmN0aW9uKHUpe2lmKHZvaWQgMCE9PXUmJiJib29sZWFuIiE9PXR5cGVvZiB1KXJldHVybiBhYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7VSgidG9nZ2xlQ2xhc3MtYm9vbCIsImpRdWVyeS5mbi50b2dnbGVDbGFzcyggYm9vbGVhbiApIGlzIGRlcHJlY2F0ZWQiKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5nZXRBdHRyaWJ1dGUmJnRoaXMuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjt4JiZuLmRhdGEodGhpcywiX19jbGFzc05hbWVfXyIseCk7dGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIseHx8CiExPT09dT8iIjpuLmRhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIil9KX0sInRvZ2dsZUNsYXNzLWJvb2wiKTt2YXIgZmI9ITEscGI9L15bYS16XS8sU2I9L14oPzpCb3JkZXIoPzpUb3B8UmlnaHR8Qm90dG9tfExlZnQpPyg\/OldpZHRofCl8KD86TWFyZ2lufFBhZGRpbmcpPyg\/OlRvcHxSaWdodHxCb3R0b218TGVmdCk\/fCg\/Ok1pbnxNYXgpPyg\/OldpZHRofEhlaWdodCkpJC87bi5zd2FwJiZuLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCIsInJlbGlhYmxlTWFyZ2luUmlnaHQiXSxmdW5jdGlvbih1LHgpe3ZhciBDPW4uY3NzSG9va3NbeF0mJm4uY3NzSG9va3NbeF0uZ2V0O0MmJihuLmNzc0hvb2tzW3hdLmdldD1mdW5jdGlvbigpe2ZiPSEwO3ZhciBIPUMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2ZiPSExO3JldHVybiBIfSl9KTtqYShuLCJzd2FwIixmdW5jdGlvbih1LHgsQyxIKXt2YXIgUCxlYT17fTtmYnx8VSgic3dhcCIsImpRdWVyeS5zd2FwKCkgaXMgdW5kb2N1bWVudGVkIGFuZCBkZXByZWNhdGVkIik7CmZvcihQIGluIHgpZWFbUF09dS5zdHlsZVtQXSx1LnN0eWxlW1BdPXhbUF07Qz1DLmFwcGx5KHUsSHx8W10pO2ZvcihQIGluIHgpdS5zdHlsZVtQXT1lYVtQXTtyZXR1cm4gQ30sInN3YXAiKTt3YSgiMy40LjAiKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgUHJveHkmJihuLmNzc1Byb3BzPW5ldyBQcm94eShuLmNzc1Byb3BzfHx7fSx7c2V0OmZ1bmN0aW9uKCl7VSgiY3NzUHJvcHMiLCJqUXVlcnkuY3NzUHJvcHMgaXMgZGVwcmVjYXRlZCIpO3JldHVybiBSZWZsZWN0LnNldC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSkpO2lmKHdhKCI0LjAuMCIpKXt2YXIgcWI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCwKZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH07bi5jc3NOdW1iZXI9InVuZGVmaW5lZCIhPT10eXBlb2YgUHJveHk\/bmV3IFByb3h5KHFiLHtnZXQ6ZnVuY3Rpb24oKXtVKCJjc3MtbnVtYmVyIiwialF1ZXJ5LmNzc051bWJlciBpcyBkZXByZWNhdGVkIik7cmV0dXJuIFJlZmxlY3QuZ2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sc2V0OmZ1bmN0aW9uKCl7VSgiY3NzLW51bWJlciIsImpRdWVyeS5jc3NOdW1iZXIgaXMgZGVwcmVjYXRlZCIpO3JldHVybiBSZWZsZWN0LnNldC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSk6cWJ9ZWxzZSBxYj1uLmNzc051bWJlcjt2YXIgJGI9bi5mbi5jc3M7amEobi5mbiwiY3NzIixmdW5jdGlvbih1LHgpe3ZhciBDPXRoaXM7aWYodSYmIm9iamVjdCI9PT10eXBlb2YgdSYmIUFycmF5LmlzQXJyYXkodSkpcmV0dXJuIG4uZWFjaCh1LGZ1bmN0aW9uKFAsCmVhKXtuLmZuLmNzcy5jYWxsKEMsUCxlYSl9KSx0aGlzO2lmKCJudW1iZXIiPT09dHlwZW9mIHgpe3ZhciBIPWxiKHUpO1lhKEgpfHxxYltIXXx8VSgiY3NzLW51bWJlciIsJ051bWJlci10eXBlZCB2YWx1ZXMgYXJlIGRlcHJlY2F0ZWQgZm9yIGpRdWVyeS5mbi5jc3MoICInK3UrJyIsIHZhbHVlICknKX1yZXR1cm4gJGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwiY3NzLW51bWJlciIpO3ZhciBnYj1uLmRhdGE7amEobiwiZGF0YSIsZnVuY3Rpb24odSx4LEMpe3ZhciBIO2lmKHgmJiJvYmplY3QiPT09dHlwZW9mIHgmJjI9PT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgUD1uLmhhc0RhdGEodSkmJmdiLmNhbGwodGhpcyx1KSxlYT17fTtmb3IoSCBpbiB4KUghPT1sYihIKT8oVSgiZGF0YS1jYW1lbENhc2UiLCJqUXVlcnkuZGF0YSgpIGFsd2F5cyBzZXRzL2dldHMgY2FtZWxDYXNlZCBuYW1lczogIitIKSxQW0hdPXhbSF0pOmVhW0hdPXhbSF07Z2IuY2FsbCh0aGlzLHUsZWEpO3JldHVybiB4fXJldHVybiB4JiYKInN0cmluZyI9PT10eXBlb2YgeCYmeCE9PWxiKHgpJiYoUD1uLmhhc0RhdGEodSkmJmdiLmNhbGwodGhpcyx1KSkmJnggaW4gUD8oVSgiZGF0YS1jYW1lbENhc2UiLCJqUXVlcnkuZGF0YSgpIGFsd2F5cyBzZXRzL2dldHMgY2FtZWxDYXNlZCBuYW1lczogIit4KSwyPGFyZ3VtZW50cy5sZW5ndGgmJihQW3hdPUMpLFBbeF0pOmdiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sImRhdGEtY2FtZWxDYXNlIik7aWYobi5meCl7dmFyIGNiPW4uVHdlZW4ucHJvdG90eXBlLnJ1bixUYj1mdW5jdGlvbih1KXtyZXR1cm4gdX07amEobi5Ud2Vlbi5wcm90b3R5cGUsInJ1biIsZnVuY3Rpb24oKXsxPG4uZWFzaW5nW3RoaXMuZWFzaW5nXS5sZW5ndGgmJihVKCJlYXNpbmctb25lLWFyZyIsIidqUXVlcnkuZWFzaW5nLiIrdGhpcy5lYXNpbmcudG9TdHJpbmcoKSsiJyBzaG91bGQgdXNlIG9ubHkgb25lIGFyZ3VtZW50Iiksbi5lYXNpbmdbdGhpcy5lYXNpbmddPVRiKTtjYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LAoiZWFzaW5nLW9uZS1hcmciKTt2YXIgS2E9bi5meC5pbnRlcnZhbDtkYS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLmZ4LCJpbnRlcnZhbCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2RhLmRvY3VtZW50LmhpZGRlbnx8VSgiZngtaW50ZXJ2YWwiLCJqUXVlcnkuZnguaW50ZXJ2YWwgaXMgZGVwcmVjYXRlZCIpO3JldHVybiBuLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZCgiZngtaW50ZXJ2YWwiKT92b2lkIDA9PT1LYT8xMzpLYTpLYX0sc2V0OmZ1bmN0aW9uKHUpe1UoImZ4LWludGVydmFsIiwialF1ZXJ5LmZ4LmludGVydmFsIGlzIGRlcHJlY2F0ZWQiKTtLYT11fX0pfXZhciBWYj1uLmZuLmxvYWQsQWI9bi5ldmVudC5hZGQsV2I9bi5ldmVudC5maXg7bi5ldmVudC5wcm9wcz1bXTtuLmV2ZW50LmZpeEhvb2tzPXt9O2ViKG4uZXZlbnQucHJvcHMsImNvbmNhdCIsbi5ldmVudC5wcm9wcy5jb25jYXQsImV2ZW50LW9sZC1wYXRjaCIsCiJqUXVlcnkuZXZlbnQucHJvcHMuY29uY2F0KCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpO2phKG4uZXZlbnQsImZpeCIsZnVuY3Rpb24odSl7dmFyIHg9dS50eXBlLEM9dGhpcy5maXhIb29rc1t4XSxIPW4uZXZlbnQucHJvcHM7aWYoSC5sZW5ndGgpZm9yKFUoImV2ZW50LW9sZC1wYXRjaCIsImpRdWVyeS5ldmVudC5wcm9wcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogIitILmpvaW4oKSk7SC5sZW5ndGg7KW4uZXZlbnQuYWRkUHJvcChILnBvcCgpKTtpZihDJiYhQy5fbWlncmF0ZWRfJiYoQy5fbWlncmF0ZWRfPSEwLFUoImV2ZW50LW9sZC1wYXRjaCIsImpRdWVyeS5ldmVudC5maXhIb29rcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogIit4KSwoSD1DLnByb3BzKSYmSC5sZW5ndGgpKWZvcig7SC5sZW5ndGg7KW4uZXZlbnQuYWRkUHJvcChILnBvcCgpKTt4PVdiLmNhbGwodGhpcyx1KTtyZXR1cm4gQyYmQy5maWx0ZXI\/Qy5maWx0ZXIoeCx1KTp4fSwiZXZlbnQtb2xkLXBhdGNoIik7CmphKG4uZXZlbnQsImFkZCIsZnVuY3Rpb24odSx4KXt1PT09ZGEmJiJsb2FkIj09PXgmJiJjb21wbGV0ZSI9PT1kYS5kb2N1bWVudC5yZWFkeVN0YXRlJiZVKCJsb2FkLWFmdGVyLWV2ZW50IiwialF1ZXJ5KHdpbmRvdykub24oJ2xvYWQnLi4uKSBjYWxsZWQgYWZ0ZXIgbG9hZCBldmVudCBvY2N1cnJlZCIpO3JldHVybiBBYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJsb2FkLWFmdGVyLWV2ZW50Iik7bi5lYWNoKFsibG9hZCIsInVubG9hZCIsImVycm9yIl0sZnVuY3Rpb24odSx4KXtqYShuLmZuLHgsZnVuY3Rpb24oKXt2YXIgQz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7aWYoImxvYWQiPT09eCYmInN0cmluZyI9PT10eXBlb2YgQ1swXSlyZXR1cm4gVmIuYXBwbHkodGhpcyxDKTtVKCJzaG9ydGhhbmQtcmVtb3ZlZC12MyIsImpRdWVyeS5mbi4iK3grIigpIGlzIGRlcHJlY2F0ZWQiKTtDLnNwbGljZSgwLDAseCk7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5vbi5hcHBseSh0aGlzLApDKTt0aGlzLnRyaWdnZXJIYW5kbGVyLmFwcGx5KHRoaXMsQyk7cmV0dXJuIHRoaXN9LCJzaG9ydGhhbmQtcmVtb3ZlZC12MyIpfSk7bi5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKHUseCl7YmEobi5mbix4LGZ1bmN0aW9uKEMsSCl7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKHgsbnVsbCxDLEgpOnRoaXMudHJpZ2dlcih4KX0sInNob3J0aGFuZC1kZXByZWNhdGVkLXYzIiwialF1ZXJ5LmZuLiIreCsiKCkgZXZlbnQgc2hvcnRoYW5kIGlzIGRlcHJlY2F0ZWQiKX0pO24oZnVuY3Rpb24oKXtuKGRhLmRvY3VtZW50KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKX0pOwpuLmV2ZW50LnNwZWNpYWwucmVhZHk9e3NldHVwOmZ1bmN0aW9uKCl7dGhpcz09PWRhLmRvY3VtZW50JiZVKCJyZWFkeS1ldmVudCIsIidyZWFkeScgZXZlbnQgaXMgZGVwcmVjYXRlZCIpfX07YmEobi5mbiwiYmluZCIsZnVuY3Rpb24odSx4LEMpe3JldHVybiB0aGlzLm9uKHUsbnVsbCx4LEMpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4uYmluZCgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJ1bmJpbmQiLGZ1bmN0aW9uKHUseCl7cmV0dXJuIHRoaXMub2ZmKHUsbnVsbCx4KX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLnVuYmluZCgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJkZWxlZ2F0ZSIsZnVuY3Rpb24odSx4LEMsSCl7cmV0dXJuIHRoaXMub24oeCx1LEMsSCl9LCJwcmUtb24tbWV0aG9kcyIsImpRdWVyeS5mbi5kZWxlZ2F0ZSgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJ1bmRlbGVnYXRlIixmdW5jdGlvbih1LHgsQyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoPwp0aGlzLm9mZih1LCIqKiIpOnRoaXMub2ZmKHgsdXx8IioqIixDKX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLnVuZGVsZWdhdGUoKSBpcyBkZXByZWNhdGVkIik7YmEobi5mbiwiaG92ZXIiLGZ1bmN0aW9uKHUseCl7cmV0dXJuIHRoaXMub24oIm1vdXNlZW50ZXIiLHUpLm9uKCJtb3VzZWxlYXZlIix4fHx1KX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLmhvdmVyKCkgaXMgZGVwcmVjYXRlZCIpO3ZhciByYj0vPCg\/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2ksQmI9ZnVuY3Rpb24odSl7dmFyIHg9ZGEuZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTt4LmJvZHkuaW5uZXJIVE1MPXU7cmV0dXJuIHguYm9keSYmeC5ib2R5LmlubmVySFRNTH07bi5VTlNBRkVfcmVzdG9yZUxlZ2FjeUh0bWxQcmVmaWx0ZXI9ZnVuY3Rpb24oKXtuLm1pZ3JhdGVFbmFibGVQYXRjaGVzKCJzZWxmLWNsb3NlZC10YWdzIil9OwpqYShuLCJodG1sUHJlZmlsdGVyIixmdW5jdGlvbih1KXt2YXIgeD11LnJlcGxhY2UocmIsIjwkMT48LyQyPiIpO3ghPT11JiZCYih1KSE9PUJiKHgpJiZVKCJzZWxmLWNsb3NlZC10YWdzIiwiSFRNTCB0YWdzIG11c3QgYmUgcHJvcGVybHkgbmVzdGVkIGFuZCBjbG9zZWQ6ICIrdSk7cmV0dXJuIHUucmVwbGFjZShyYiwiPCQxPjwvJDI+Iil9LCJzZWxmLWNsb3NlZC10YWdzIik7bi5taWdyYXRlRGlzYWJsZVBhdGNoZXMoInNlbGYtY2xvc2VkLXRhZ3MiKTt2YXIgemE9bi5mbi5vZmZzZXQ7amEobi5mbiwib2Zmc2V0IixmdW5jdGlvbigpe3ZhciB1PXRoaXNbMF07cmV0dXJuIXV8fHUubm9kZVR5cGUmJnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0P3phLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooVSgib2Zmc2V0LXZhbGlkLWVsZW0iLCJqUXVlcnkuZm4ub2Zmc2V0KCkgcmVxdWlyZXMgYSB2YWxpZCBET00gZWxlbWVudCIpLGFyZ3VtZW50cy5sZW5ndGg\/dGhpczp2b2lkIDApfSwib2Zmc2V0LXZhbGlkLWVsZW0iKTsKaWYobi5hamF4KXt2YXIgQ2I9bi5wYXJhbTtqYShuLCJwYXJhbSIsZnVuY3Rpb24odSx4KXt2YXIgQz1uLmFqYXhTZXR0aW5ncyYmbi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWw7dm9pZCAwPT09eCYmQyYmKFUoInBhcmFtLWFqYXgtdHJhZGl0aW9uYWwiLCJqUXVlcnkucGFyYW0oKSBubyBsb25nZXIgdXNlcyBqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsIikseD1DKTtyZXR1cm4gQ2IuY2FsbCh0aGlzLHUseCl9LCJwYXJhbS1hamF4LXRyYWRpdGlvbmFsIil9YmEobi5mbiwiYW5kU2VsZiIsbi5mbi5hZGRCYWNrLCJhbmRTZWxmIiwialF1ZXJ5LmZuLmFuZFNlbGYoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkLCB1c2UgalF1ZXJ5LmZuLmFkZEJhY2soKSIpO2lmKG4uRGVmZXJyZWQpe3ZhciBEYj1uLkRlZmVycmVkLHRiPVtbInJlc29sdmUiLCJkb25lIixuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVzb2x2ZWQiXSwKWyJyZWplY3QiLCJmYWlsIixuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixuLkNhbGxiYWNrcygibWVtb3J5Iiksbi5DYWxsYmFja3MoIm1lbW9yeSIpXV07amEobiwiRGVmZXJyZWQiLGZ1bmN0aW9uKHUpe2Z1bmN0aW9uIHgoKXt2YXIgUD1hcmd1bWVudHM7cmV0dXJuIG4uRGVmZXJyZWQoZnVuY3Rpb24oZWEpe24uZWFjaCh0YixmdW5jdGlvbihRYSxFYil7dmFyIGhiPSJmdW5jdGlvbiI9PT10eXBlb2YgUFtRYV0mJlBbUWFdO0NbRWJbMV1dKGZ1bmN0aW9uKCl7dmFyIG9hPWhiJiZoYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYob2EmJiJmdW5jdGlvbiI9PT10eXBlb2Ygb2EucHJvbWlzZSlvYS5wcm9taXNlKCkuZG9uZShlYS5yZXNvbHZlKS5mYWlsKGVhLnJlamVjdCkucHJvZ3Jlc3MoZWEubm90aWZ5KTtlbHNlIGVhW0ViWzBdKyJXaXRoIl0odGhpcz09PUg\/ZWEucHJvbWlzZSgpOgp0aGlzLGhiP1tvYV06YXJndW1lbnRzKX0pfSk7UD1udWxsfSkucHJvbWlzZSgpfXZhciBDPURiKCksSD1DLnByb21pc2UoKTtiYShDLCJwaXBlIix4LCJkZWZlcnJlZC1waXBlIiwiZGVmZXJyZWQucGlwZSgpIGlzIGRlcHJlY2F0ZWQiKTtiYShILCJwaXBlIix4LCJkZWZlcnJlZC1waXBlIiwiZGVmZXJyZWQucGlwZSgpIGlzIGRlcHJlY2F0ZWQiKTt1JiZ1LmNhbGwoQyxDKTtyZXR1cm4gQ30sImRlZmVycmVkLXBpcGUiKTtuLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9RGIuZXhjZXB0aW9uSG9va31yZXR1cm4gbn0pOwovKiogL20vanMvanF1ZXJ5LmNvb2tpZS5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnljb29raWVqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjI4IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnljb29raWVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM2OjA5IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWNvb2tpZWpzX2Nfb249IjIwMjMtMDktMDYgMTQ6MzA6MDYiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGgsbCxyKXtmdW5jdGlvbiB0KGIpe3JldHVybiBifWZ1bmN0aW9uIHUoYil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYi5yZXBsYWNlKG0sIiAiKSl9Y2F0Y2goYyl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodW5lc2NhcGUoYikucmVwbGFjZShtLCIgIikpfWNhdGNoKGEpe3JldHVybiBjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coYS5tZXNzYWdlKSxifX19ZnVuY3Rpb24gbihiLGMsYSxlLGssZil7InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmKGY9NSk7InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj9mJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bihiLGMsYSxlLGssZi0xKX0sMUUzKTp3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhiLGMsYSxlLGspfXZhciBtPS9cKy9nLGc9aC5jb29raWU9ZnVuY3Rpb24oYixjLGEpe2lmKGMhPT1yKXJldHVybiBDb29raWVzLmlzQ29va2llQWxsb3dlZChiLGZ1bmN0aW9uKGQpe2RlYnVnKCJDb29raWU6ICIsCmIsZCk7YT1oLmV4dGVuZCh7fSxnLmRlZmF1bHRzLGEpO2lmKCFkKXJldHVybiBDb29raWVzLnJlbW92ZShiLGEucGF0aCxhLmRvbWFpbiksITE7bnVsbD09PWMmJihhLmV4cGlyZXM9LTEpOyJudW1iZXIiPT09dHlwZW9mIGEuZXhwaXJlc0luTWludXRlcyYmKGEuZXhwaXJlcz1hLmV4cGlyZXNJbk1pbnV0ZXMvMTQ0MCk7aWYoIm51bWJlciI9PT10eXBlb2YgYS5leHBpcmVzKXtkPWEuZXhwaXJlczt2YXIgcD1hLmV4cGlyZXM9bmV3IERhdGU7cC5zZXRUaW1lKCtwKzg2NEU1KmQpfWQ9bmV3IERhdGU7ZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkrMSk7YS5leHBpcmVzPmQmJihhLmV4cGlyZXM9ZCk7Yz1nLmpzb24\/SlNPTi5zdHJpbmdpZnkoYyk6U3RyaW5nKGMpO24oYixjLGEuZXhwaXJlcyxhLnBhdGgsYS5kb21haW4pO3JldHVybiBsLmNvb2tpZT1bZW5jb2RlVVJJQ29tcG9uZW50KGIpLCI9IixnLnJhdz9jOmVuY29kZVVSSUNvbXBvbmVudChjKSxhLmV4cGlyZXM\/IjsgZXhwaXJlcz0iKwphLmV4cGlyZXMudG9VVENTdHJpbmcoKToiIixhLnBhdGg\/IjsgcGF0aD0iK2EucGF0aDoiIixhLmRvbWFpbj8iOyBkb21haW49IithLmRvbWFpbjoiIixhLnNlY3VyZT8iOyBzZWN1cmUiOiIiXS5qb2luKCIiKX0pO2Zvcih2YXIgZT1nLnJhdz90OnUsaz1sLmNvb2tpZS5zcGxpdCgiOyAiKSxmPTAsdj1rLmxlbmd0aDtmPHY7ZisrKXt2YXIgcT1rW2ZdLnNwbGl0KCI9Iik7aWYoZShxLnNoaWZ0KCkpPT09YilyZXR1cm4gZT1lKHEuam9pbigiPSIpKSxnLmpzb24\/SlNPTi5wYXJzZShlKTplfXJldHVybiBudWxsfTtnLmRlZmF1bHRzPXt9O2gucmVtb3ZlQ29va2llPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIG51bGwhPT1oLmNvb2tpZShiKT8oaC5jb29raWUoYixudWxsLGMpLCEwKTohMX19KShqUXVlcnksZG9jdW1lbnQpOwovKiogL20vanMvdmFuaWxsYWpzL2NvbnRlbnRMb2FkZXIuanMgKiovCnZhciBfX19kMmNfY29udGVudExvYWRlcmpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6MjkiOyd1c2Ugc3RyaWN0Jzt2YXIgJGpzY29tcD0kanNjb21wfHx7fTskanNjb21wLnNjb3BlPXt9OyRqc2NvbXAuQVNTVU1FX0VTNT0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfTUFQPSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9TRVQ9ITE7JGpzY29tcC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExOyRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7JGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9OwokanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOyRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJ4Iik7JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTPSEkanNjb21wLklTT0xBVEVfUE9MWUZJTExTfHwkanNjb21wLklTX1NZTUJPTF9OQVRJVkU7JGpzY29tcC5wb2x5ZmlsbHM9e307CiRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sPXt9OyRqc2NvbXAuUE9MWUZJTExfUFJFRklYPSIkanNjcCQiO3ZhciAkanNjb21wJGxvb2t1cFBvbHlmaWxsZWRWYWx1ZT1mdW5jdGlvbihhLGIpe3ZhciBjPSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2JdO2lmKG51bGw9PWMpcmV0dXJuIGFbYl07Yz1hW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YVtiXX07JGpzY29tcC5wb2x5ZmlsbD1mdW5jdGlvbihhLGIsYyxkKXtiJiYoJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz8kanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQoYSxiLGMsZCk6JGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQoYSxiLGMsZCkpfTsKJGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7Yz0kanNjb21wLmdsb2JhbDthPWEuc3BsaXQoIi4iKTtmb3IoZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKXJldHVybjtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9OwokanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5zcGxpdCgiLiIpO2E9MT09PWUubGVuZ3RoO2Q9ZVswXTtkPSFhJiZkIGluICRqc2NvbXAucG9seWZpbGxzPyRqc2NvbXAucG9seWZpbGxzOiRqc2NvbXAuZ2xvYmFsO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGgtMTtmKyspe3ZhciBnPWVbZl07aWYoIShnIGluIGQpKXJldHVybjtkPWRbZ119ZT1lW2UubGVuZ3RoLTFdO2M9JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFJiYiZXM2Ij09PWM\/ZFtlXTpudWxsO2I9YihjKTtudWxsIT1iJiYoYT8kanNjb21wLmRlZmluZVByb3BlcnR5KCRqc2NvbXAucG9seWZpbGxzLGUse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSk6YiE9PWMmJih2b2lkIDA9PT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSYmKGM9MUU5Kk1hdGgucmFuZG9tKCk+Pj4wLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT8KJGpzY29tcC5nbG9iYWwuU3ltYm9sKGUpOiRqc2NvbXAuUE9MWUZJTExfUFJFRklYK2MrIiQiK2UpLCRqc2NvbXAuZGVmaW5lUHJvcGVydHkoZCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfTskanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0PWZ1bmN0aW9uKCl7dmFyIGE9e2E6ITB9LGI9e307dHJ5e3JldHVybiBiLl9fcHJvdG9fXz1hLGIuYX1jYXRjaChjKXt9cmV0dXJuITF9OwokanNjb21wLnNldFByb3RvdHlwZU9mPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Y6JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldCgpP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbDskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg\/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChhKX19OwokanNjb21wLm1ha2VJdGVyYXRvcj1mdW5jdGlvbihhKXt2YXIgYj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGI\/Yi5jYWxsKGEpOiRqc2NvbXAuYXJyYXlJdGVyYXRvcihhKX07JGpzY29tcC5nZW5lcmF0b3I9e307JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF89ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIithKyIgaXMgbm90IGFuIG9iamVjdCIpO307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITE7dGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO3RoaXMueWllbGRSZXN1bHQ9dm9pZCAwO3RoaXMubmV4dEFkZHJlc3M9MTt0aGlzLmZpbmFsbHlBZGRyZXNzXz10aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlDb250ZXh0c189dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdGFydF89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUnVubmluZ18pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO3RoaXMuaXNSdW5uaW5nXz0hMH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RvcF89ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITF9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FcnJvckhhbmRsZXJfPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz10aGlzLmNhdGNoQWRkcmVzc198fHRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLnlpZWxkUmVzdWx0PWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtleGNlcHRpb246YSxpc0V4Y2VwdGlvbjohMH07dGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtyZXR1cm46YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtqdW1wVG86YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWI7cmV0dXJue3ZhbHVlOmF9fTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZEFsbD1mdW5jdGlvbihhLGIpe2E9JGpzY29tcC5tYWtlSXRlcmF0b3IoYSk7dmFyIGM9YS5uZXh0KCk7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oYyk7aWYoYy5kb25lKXRoaXMueWllbGRSZXN1bHQ9Yy52YWx1ZSx0aGlzLm5leHRBZGRyZXNzPWI7ZWxzZSByZXR1cm4gdGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1hLHRoaXMueWllbGQoYy52YWx1ZSxiKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihhKXt0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0VuZD1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEsYil7dGhpcy5jYXRjaEFkZHJlc3NfPWE7dm9pZCAwIT1iJiYodGhpcy5maW5hbGx5QWRkcmVzc189Yil9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZVRyeUJsb2NrPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1hO3RoaXMuY2F0Y2hBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJDYXRjaEJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO2E9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXy5leGNlcHRpb247dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO3JldHVybiBhfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIsYyl7Yz90aGlzLmZpbmFsbHlDb250ZXh0c19bY109dGhpcy5hYnJ1cHRDb21wbGV0aW9uXzp0aGlzLmZpbmFsbHlDb250ZXh0c189W3RoaXMuYWJydXB0Q29tcGxldGlvbl9dO3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIpe2I9dGhpcy5maW5hbGx5Q29udGV4dHNfLnNwbGljZShifHwwKVswXTtpZihiPXRoaXMuYWJydXB0Q29tcGxldGlvbl89dGhpcy5hYnJ1cHRDb21wbGV0aW9uX3x8Yil7aWYoYi5pc0V4Y2VwdGlvbilyZXR1cm4gdGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCk7dm9pZCAwIT1iLmp1bXBUbyYmdGhpcy5maW5hbGx5QWRkcmVzc188Yi5qdW1wVG8\/KHRoaXMubmV4dEFkZHJlc3M9Yi5qdW1wVG8sdGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsKTp0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffWVsc2UgdGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5mb3JJbj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcihhKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcj1mdW5jdGlvbihhKXt0aGlzLm9iamVjdF89YTt0aGlzLnByb3BlcnRpZXNfPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMucHJvcGVydGllc18ucHVzaChiKTt0aGlzLnByb3BlcnRpZXNfLnJldmVyc2UoKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yLnByb3RvdHlwZS5nZXROZXh0PWZ1bmN0aW9uKCl7Zm9yKDswPHRoaXMucHJvcGVydGllc18ubGVuZ3RoOyl7dmFyIGE9dGhpcy5wcm9wZXJ0aWVzXy5wb3AoKTtpZihhIGluIHRoaXMub2JqZWN0XylyZXR1cm4gYX1yZXR1cm4gbnVsbH07JGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfPW5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0O3RoaXMucHJvZ3JhbV89YX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8ubmV4dCxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8ubmV4dF8oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5yZXR1cm5fPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7dmFyIGI9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXztpZihiKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8oInJldHVybiJpbiBiP2JbInJldHVybiJdOmZ1bmN0aW9uKGMpe3JldHVybnt2YWx1ZTpjLGRvbmU6ITB9fSxhLHRoaXMuY29udGV4dF8ucmV0dXJuKTt0aGlzLmNvbnRleHRfLnJldHVybihhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfWyJ0aHJvdyJdLGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy50aHJvd18oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS55aWVsZEFsbFN0ZXBfPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9YS5jYWxsKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8sYik7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oZCk7aWYoIWQuZG9uZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLGQ7dmFyIGU9ZC52YWx1ZX1jYXRjaChmKXtyZXR1cm4gdGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsLHRoaXMuY29udGV4dF8udGhyb3dfKGYpLHRoaXMubmV4dFN0ZXBfKCl9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO2MuY2FsbCh0aGlzLmNvbnRleHRfLGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dFN0ZXBfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNvbnRleHRfLm5leHRBZGRyZXNzOyl0cnl7dmFyIGE9dGhpcy5wcm9ncmFtXyh0aGlzLmNvbnRleHRfKTtpZihhKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCkse3ZhbHVlOmEudmFsdWUsZG9uZTohMX19Y2F0Y2goYil7dGhpcy5jb250ZXh0Xy55aWVsZFJlc3VsdD12b2lkIDAsdGhpcy5jb250ZXh0Xy50aHJvd18oYil9dGhpcy5jb250ZXh0Xy5zdG9wXygpO2lmKHRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl8pe2E9dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXzt0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fPW51bGw7aWYoYS5pc0V4Y2VwdGlvbil0aHJvdyBhLmV4Y2VwdGlvbjtyZXR1cm57dmFsdWU6YS5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07CiRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe3JldHVybiBhLm5leHRfKGIpfTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe3JldHVybiBhLnRocm93XyhiKX07dGhpcy5yZXR1cm49ZnVuY3Rpb24oYil7cmV0dXJuIGEucmV0dXJuXyhiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTskanNjb21wLmdlbmVyYXRvci5jcmVhdGVHZW5lcmF0b3I9ZnVuY3Rpb24oYSxiKXtiPW5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGIpKTskanNjb21wLnNldFByb3RvdHlwZU9mJiZhLnByb3RvdHlwZSYmJGpzY29tcC5zZXRQcm90b3R5cGVPZihiLGEucHJvdG90eXBlKTtyZXR1cm4gYn07CiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3JldHVybiBhLm5leHQoZCl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gYS50aHJvdyhkKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGcpe2cuZG9uZT9kKGcudmFsdWUpOlByb21pc2UucmVzb2x2ZShnLnZhbHVlKS50aGVuKGIsYykudGhlbihmLGUpfWYoYS5uZXh0KCkpfSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IoYSgpKX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yUHJvZ3JhbT1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKG5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGEpKSl9Owpjb25zdCBjb250ZW50QmxvY2tzPSgpPT57Y29uc3QgYT1iPT4kanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXt2YXIgYz1iLmRhdGFzZXQsZCxlPW51bGw9PShkPWIucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0iYmxvY2stZGF0YSJdJykpP3ZvaWQgMDpkLnZhbHVlO2Q9IkZSRU5DSCI9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWx1ZT8iZnIiOiJlbiI7Yz1PYmplY3QuYXNzaWduKHt9LGMse2RhdGE6ZXx8Int9In0pO2M9eWllbGQoeWllbGQgZmV0Y2goYC8ke2VuY29kZVVSSUNvbXBvbmVudChkKX0vYWpheC9nZXRTa2VsZXRvbkNvbnRlbnRgLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsiLGNoYXJzZXQ6IlVURi04In0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKGMpfSkpLmpzb24oKTsKaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjLnN0YXR1cyYmInN1Y2Nlc3MiPT1jLnN0YXR1cylpZihjPWMuY29udGVudCwxPmMubGVuZ3RoKWIucmVwbGFjZVdpdGgoIiIpO2Vsc2V7Yz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjKS5jaGlsZHJlblswXTt2YXIgZjtlPW51bGw9PShmPWIuZGF0YXNldCk\/dm9pZCAwOmYuY2FsbGJhY2s7Yi5wYXJlbnRFbGVtZW50LmRhdGFzZXQubG9hZGVkPSIxIjtiLnJlcGxhY2VXaXRoKGMpO2UmJiJmdW5jdGlvbiI9PT10eXBlb2YgaGFuZGxlcnNbZV0mJmhhbmRsZXJzW2VdKGMpLmluaXQoKX19KTtoYW5kbGVycz17cGF5bWVudENhbGNCbG9jazpiPT57Y29uc3QgYz1iLmNsb3Nlc3QoIi5kaXZDYXJTaW5nbGVJbm5lckJveCIpO3JldHVybntpbml0OigpPT57JChiKS5maW5kKCIucGF5bWVudFRvb2x0aXAiKS5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3ZhciBkPSQodGhpcykuYXR0cigiZGF0YS10b29sdGlwIik7CiQodGhpcykuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6ZCxncmF2aXR5OiJlYXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImNsaWNrIixhbmltYXRpb246ImZsaXBJbiJ9KX1jYXRjaChlKXt9fSk7Yi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIixmdW5jdGlvbihkKXtkLnN0b3BQcm9wYWdhdGlvbigpO2lmKGIuZGF0YXNldC50b29sdGlwQ3JlYXRlZClyZXR1cm4hMTtiLmRhdGFzZXQudG9vbHRpcENyZWF0ZWQ9IjEiOyQoZC5jdXJyZW50VGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoIi5jYXItZmluYW5jZS1pbmZvIikpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJ3ZXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX0pO2IucXVlcnlTZWxlY3RvcigiLmNhci1maW5hbmNlLWluZm8iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpO2lmKCFjKXJldHVybiExO2Q9Yy5xdWVyeVNlbGVjdG9yKCIuZGl2Q2FyVGl0bGVDb250YWluZXIgYSIpLmhyZWY7CndpbmRvdy5vcGVuKGQsIl9zZWxmIil9KX19fX07cmV0dXJue3NldEJsb2NrT2JzZXJ2ZXI6KCk9Pntjb25zdCBiPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihkPT57ZC5mb3JFYWNoKGU9PntlLmlzSW50ZXJzZWN0aW5nJiYoZS50YXJnZXQuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIiksYi51bm9ic2VydmUoZS50YXJnZXQpLGNvbnNvbGUubG9nKCJza2VsZXRvbiBvYnNlcnZlZCAiK2UudGFyZ2V0KSxhKGUudGFyZ2V0KSl9KX0se3RocmVzaG9sZDouMX0pLGM9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY29udGVudC1za2VsZXRvbiIpLmZvckVhY2goZD0+e2Iub2JzZXJ2ZShkKTsic2tlbGV0b24iPT09Yy5nZXQoImRlYnVnIikmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb250ZW50LXNrZWxldG9uIikuZm9yRWFjaChlPT5lLmNsYXNzTGlzdC5hZGQoImRlYnVnIikpfSl9LGhhbmRsZXJzfX07CmRvY1JlYWR5QXJyLnB1c2goKCk9PnsiZnVuY3Rpb24iPT09dHlwZW9mIGNvbnRlbnRCbG9ja3MmJmNvbnRlbnRCbG9ja3MoKS5zZXRCbG9ja09ic2VydmVyKCl9KTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9jb29raWVzLmpzICoqLwp2YXIgX19fZDJjX2Nvb2tpZXNqc19jX29uPSIyMDI2LTAxLTEyIDEwOjEzOjI1IjsndXNlIHN0cmljdCc7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChhLGMsYixoLGQsZixlKXt2YXIgZz0iIjtpZihiKXtsZXQgaz1uZXcgRGF0ZTtrLnNldEZ1bGxZZWFyKGsuZ2V0RnVsbFllYXIoKSsxKTtzd2l0Y2goYi5jb25zdHJ1Y3Rvcil7Y2FzZSBOdW1iZXI6MzY1PGImJihiPTM2NSk7Zz1uZXcgRGF0ZTtnLnNldERhdGUoZy5nZXREYXRlKCkrYik7Zz1JbmZpbml0eT09PWI\/IjsgZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCI6IjsgZXhwaXJlcz0iK2cudG9VVENTdHJpbmcoKTticmVhaztjYXNlIFN0cmluZzpuZXcgRGF0ZShiKT5rJiYoYj1rLnRvVVRDU3RyaW5nKCkpO2c9IjsgZXhwaXJlcz0iK2I7YnJlYWs7Y2FzZSBEYXRlOmI+ayYmKGI9ayksZz0iOyBleHBpcmVzPSIrYi50b1VUQ1N0cmluZygpfX0idW5kZWZpbmVkIj09PXR5cGVvZiBmJiYoZj0iaHR0cHM6Ij09PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCk7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChhKSsKIj0iK2VuY29kZVVSSUNvbXBvbmVudChjKStnKyhkPyI7IGRvbWFpbj0iK2Q6IiIpKyhoPyI7IHBhdGg9IitoOiIiKSsoZj8iOyBzZWN1cmUiOiIiKSsoZSYmIm5vX3Jlc3RyaWN0aW9uIiE9PWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpPyJsYXgiPT09ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl8fDE9PT1NYXRoLmNlaWwoZSl8fCEwPT09ZT8iOyBzYW1lc2l0ZT1sYXgiOiJub25lIj09PWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfHwwPmU\/Ijsgc2FtZXNpdGU9bm9uZSI6Ijsgc2FtZXNpdGU9c3RyaWN0IjoiIil9ZnVuY3Rpb24gbShhLGMpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGF8fG51bGw9PT1hKXJldHVybi0xO3N3aXRjaChhLmNvbnN0cnVjdG9yKXtjYXNlIE51bWJlcjppZigibnVtYmVyIj09PWMpdmFyIGI9ODY0MDAqYTtlbHNlIGI9bmV3IERhdGUsYi5zZXREYXRlKGIuZ2V0RGF0ZSgpK2EpLGI9SW5maW5pdHk9PT1hPyJGcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCI6CmIudG9VVENTdHJpbmcoKTticmVhaztjYXNlIFN0cmluZzoic3RyaW5nIj09PWM\/Yj1hOihiPW5ldyBEYXRlLGI9KChuZXcgRGF0ZShhKSkuZ2V0VGltZSgpLWIuZ2V0VGltZSgpKS8xRTMpO2JyZWFrO2Nhc2UgRGF0ZToic3RyaW5nIj09PWM\/Yj1hLnRvVVRDU3RyaW5nKCk6KGI9bmV3IERhdGUsYj0oYS5nZXRUaW1lKCktYi5nZXRUaW1lKCkpLzFFMyl9Im51bWJlciI9PT1jJiYoYj1NYXRoLnJvdW5kKGIpKTtyZXR1cm4gYn12YXIgbj0vW1wtXC5cK1wqXS9nLHA9L14oPzpleHBpcmVzfG1heFwtYWdlfHBhdGh8ZG9tYWlufHNlY3VyZXxzYW1lc2l0ZXxodHRwb25seSkkL2kscT0idXRtX2NhbXBhaWduIHV0bV9rZXl3b3JkIHV0bV9sYW5kaW5nIHV0bV9sYW5kaW5nX2Zvb3RlciB1dG1fbWVkaXVtIHV0bV9zb3VyY2UgdXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIHV0bV9zb3VyY2VfcmV0YXJnZXRpbmcgRGlzcGxheVNvdXJjZVVUTUNhbXBhaWduIERpc3BsYXlTb3VyY2VVVE1Tb3VyY2UiLnNwbGl0KCIgIik7CndpbmRvdy5Db29raWVzPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE\/ZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKG5ldyBSZWdFeHAoIig\/Oig\/Ol58Lio7KVxccyoiK2VuY29kZVVSSUNvbXBvbmVudChhKS5yZXBsYWNlKG4sIlxcJCYiKSsiXFxzKlxcPVxccyooW147XSopLiokKXxeLiokIiksIiQxIikpfHxudWxsOm51bGx9LHNldDpmdW5jdGlvbihhLGMsYixoLGQsZixlKXtyZXR1cm4hYXx8cC50ZXN0KGEpPyExOkNvb2tpZXMuaXNDb29raWVBbGxvd2VkKGEsZnVuY3Rpb24oZyl7ZD1kP2Q6IiI7Zj1udWxsPT1mPyEwOmY7ZT1udWxsPT1lPyJOb25lIjplO0Nvb2tpZXMubG9nKGEsYyxiLGgsZCk7aWYoIWcpcmV0dXJuLTE8cS5pbmRleE9mKGEpJiZudWxsPT1Db29raWVzLmdldCgiZDJjX2Nvb2tpZV9jb25zZW50IikmJihnPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19jb25zZW50X3dhaXQiKSxnPW51bGwhPWc\/SlNPTi5wYXJzZShhdG9iKGcpKToKe30sZ1thXT17a2V5OmEsdmFsdWU6YyxleHBpcmVzOmIscGF0aDpoLGRvbWFpbjpkfSx1dG1Db29raWVzU3RvcmFnZUpTT049SlNPTi5zdHJpbmdpZnkoZyksc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgiZDJjX2NvbnNlbnRfd2FpdCIsYnRvYSh1dG1Db29raWVzU3RvcmFnZUpTT04pKSksQ29va2llcy5yZW1vdmUoYSxoLGQsZixlKSwhMTtkb2N1bWVudC5jb29raWU9bChhLGMsYixoLGQsZixlKTtyZXR1cm4hMH0pfSxyZW1vdmU6ZnVuY3Rpb24oYSxjLGIsaCxkKXtpZighdGhpcy5oYXMoYSkpcmV0dXJuITE7ZG9jdW1lbnQuY29va2llPWwoYSwiIiwiVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGMsYixoLGQpO3JldHVybiEwfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIWF8fHAudGVzdChhKT8hMToobmV3IFJlZ0V4cCgiKD86Xnw7XFxzKikiK2VuY29kZVVSSUNvbXBvbmVudChhKS5yZXBsYWNlKG4sIlxcJCYiKSsiXFxzKlxcPSIpKS50ZXN0KGRvY3VtZW50LmNvb2tpZSl9LAprZXlzOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPWRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oKD86Xnxccyo7KVtePV0rKSg\/PTt8JCl8XlxzKnxccyooPzo9W147XSopPyg\/OlwxfCQpL2csIiIpLnNwbGl0KC9ccyooPzo9W147XSopPztccyovKSxjPWEubGVuZ3RoLGI9MDtiPGM7YisrKWFbYl09ZGVjb2RlVVJJQ29tcG9uZW50KGFbYl0pO3JldHVybiBhfSxjbGVhcjpmdW5jdGlvbihhLGMsYixoKXtmb3IodmFyIGQ9dGhpcy5rZXlzKCksZj1kLmxlbmd0aCxlPTA7ZTxmO2UrKyl0aGlzLnJlbW92ZUl0ZW0oZFtlXSxhLGMsYixoKX0sbG9nOmZ1bmN0aW9uKGEsYyxiLGgsZCxmKXsidW5kZWZpbmVkIj09PXR5cGVvZiBmJiYoZj01KTsidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llTG9nZ2VyP2YmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtDb29raWVzLmxvZyhhLGMsYixoLGQsZi0xKX0sMUUzKTp3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhhLGMsYixoLGQpfSxpc0Nvb2tpZUFsbG93ZWQ6ZnVuY3Rpb24oYSwKYyl7cmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUNvbnNlbnR8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5Db29raWVDb25zZW50LmlzQ29va2llQWxsb3dlZD9jKCEwKTp3aW5kb3cuQ29va2llQ29uc2VudC5pc0Nvb2tpZUFsbG93ZWQoYSxjKX19O3dpbmRvdy5Db29raWVMb2dnZXI9e19zdGFjazpbXSxpbml0OmZ1bmN0aW9uKCl7bGV0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlYWxlclByb3ZpbmNlQ29kZSIpO2EmJiJRQyI9PW5ldyBTdHJpbmcoYS52YWx1ZSkmJjE9PU1hdGguZmxvb3IoMypNYXRoLnJhbmRvbSgpKSYmZmV0Y2goIi9wcm94eV9yZDJjL2QyY2FwaS9sb2cvY29va2llcy9hY3RpdmUiKS50aGVuKGZ1bmN0aW9uKGMpe3JldHVybiBjLmpzb24oKX0pLnRoZW4oZnVuY3Rpb24oYyl7ImFjdGl2ZSI9PT1jLnN0YXR1cyYmQ29va2llTG9nZ2VyLndhaXRTdGFjaygpfSl9LGxvZzpmdW5jdGlvbihhLGMsYixoLGQpe2lmKCJsaXZlIj09PQp3aW5kb3cuZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKSl7ZGVidWcoIkxvZ2dpbmcgY29va2llOiIse25hbWU6YSx2YWx1ZTpjfHwiIixkdXJhdGlvbjptKGIsIm51bWJlciIpLHBhdGg6aCxkb21haW46ZH0pO3ZhciBmLGUsZz0idW5kZWZpbmVkIiE9dHlwZW9mIGN1cnJlbnRTaXRlSUQ\/Y3VycmVudFNpdGVJRDpudWxsIT0oZT1udWxsPT0oZj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2l0ZUlEIikpP3ZvaWQgMDpmLnZhbHVlKT9lOiIiO3RoaXMuX3N0YWNrLnB1c2goe25hbWU6YSxkdXJhdGlvbjptKGIsIm51bWJlciIpLHBhdGg6aHx8Ii8iLGRvbWFpbjpkfHx3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsdXJpOndpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxzaXRlaWQ6Zyx2YWx1ZTpidG9hKGMpfSl9fSxfc2VuZFN0YWNrOmZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMuX3N0YWNrLmxlbmd0aCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvb2tpZUxvZ1Rva2VuIik\/CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb29raWVMb2dUb2tlbiIpLnZhbHVlOm51bGw7aWYoYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBjdXJyZW50U2l0ZUlEP2N1cnJlbnRTaXRlSUQ6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpdGVJRCIpP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaXRlSUQiKS52YWx1ZToiIjsobmV3IFdvcmtlcigiL2pzL3ZhbmlsbGFqcy9jb29raWVXb3JrZXIuanMiKSkucG9zdE1lc3NhZ2Uoe3Rva2VuOmEsc2l0ZUlEOmMsc3RhY2s6Q29va2llTG9nZ2VyLl9zdGFja30pO0Nvb2tpZUxvZ2dlci5fc3RhY2s9W119ZWxzZSBkZWJ1ZygiTm8gY29va2llIGxvZyB0b2tlbiBmb3VuZC4iKX19LHdhaXRTdGFjazpmdW5jdGlvbigpeyJsaXZlIj09PXdpbmRvdy5kZXBsb3ltZW50VHlwZS50b0xvd2VyQ2FzZSgpJiYoc2V0VGltZW91dChmdW5jdGlvbigpe0Nvb2tpZUxvZ2dlci5fc2VuZFN0YWNrKCl9LDFFNCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsCmZ1bmN0aW9uKCl7Q29va2llTG9nZ2VyLl9zZW5kU3RhY2soKX0pKX19O3dpbmRvdy5Db29raWVMb2dnZXIuaW5pdCgpfSkoKTsKLyoqIC9tL2pzL2pxdWVyeS5iYXNlNjQuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyNS0wNS0yMyAxNzowOToyNCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyNC0wMS0zMSAxNDozNTo0OCI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnliYXNlNjRqc19jX29uPSIyMDIzLTAxLTEyIDExOjM1OjU4IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDU6MzkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MzozNCI7InVzZSBzdHJpY3QiOwpqUXVlcnkuYmFzZTY0PWZ1bmN0aW9uKGspe2Z1bmN0aW9uIGUoYSxjKXthPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5pbmRleE9mKGEuY2hhckF0KGMpKTtpZigtMT09PWEpdGhyb3ciQ2Fubm90IGRlY29kZSBiYXNlNjQiO3JldHVybiBhfWZ1bmN0aW9uIGgoYSxjKXthPWEuY2hhckNvZGVBdChjKTtpZigyNTU8YSl0aHJvdyJJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNSI7cmV0dXJuIGF9cmV0dXJue2RlY29kZTpmdW5jdGlvbihhKXt2YXIgYz0wLGIsZj1hLmxlbmd0aCxkPVtdO2E9U3RyaW5nKGEpO2lmKDA9PT1mKXJldHVybiBhO2lmKDAhPT1mJTQpdGhyb3ciQ2Fubm90IGRlY29kZSBiYXNlNjQiOyI9Ij09PWEuY2hhckF0KGYtMSkmJihjPTEsIj0iPT09YS5jaGFyQXQoZi0yKSYmKGM9MiksZi09NCk7Zm9yKGI9MDtiPGY7Yis9NCl7dmFyIGc9ZShhLGIpPDwxOHxlKGEsYisxKTw8CjEyfGUoYSxiKzIpPDw2fGUoYSxiKzMpO2QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGc+PjE2LGc+PjgmMjU1LGcmMjU1KSl9c3dpdGNoKGMpe2Nhc2UgMTpnPWUoYSxiKTw8MTh8ZShhLGIrMSk8PDEyfGUoYSxiKzIpPDw2O2QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGc+PjE2LGc+PjgmMjU1KSk7YnJlYWs7Y2FzZSAyOmc9ZShhLGIpPDwxOHxlKGEsYisxKTw8MTIsZC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZz4+MTYpKX1yZXR1cm4gZC5qb2luKCIiKX0sZW5jb2RlOmZ1bmN0aW9uKGEpe2lmKDEhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IlN5bnRheEVycm9yOiBleGFjdGx5IG9uZSBhcmd1bWVudCByZXF1aXJlZCI7YT1TdHJpbmcoYSk7dmFyIGMsYj1bXSxmPWEubGVuZ3RoLWEubGVuZ3RoJTM7aWYoMD09PWEubGVuZ3RoKXJldHVybiBhO2ZvcihjPTA7YzxmO2MrPTMpe3ZhciBkPWgoYSxjKTw8MTZ8aChhLGMrMSk8PDh8aChhLGMrMik7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+CjE4KSk7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTImNjMpKTtiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj42JjYzKSk7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZCY2MykpfXN3aXRjaChhLmxlbmd0aC1mKXtjYXNlIDE6ZD1oKGEsYyk8PDE2O2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjE4KSsiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjEyJjYzKSsiPT0iKTticmVhaztjYXNlIDI6ZD0KaChhLGMpPDwxNnxoKGEsYysxKTw8OCxiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xOCkrIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xMiY2MykrIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj42JjYzKSsiPSIpfXJldHVybiBiLmpvaW4oIiIpfSxWRVJTSU9OOiIxLjAifX0oalF1ZXJ5KTsKLyoqIC9tL2pzL2pxdWVyeS5kYXJrdG9vbHRpcC5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlkYXJrdG9vbHRpcGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6NDgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWRhcmt0b29sdGlwanNfY19vbj0iMjAyNC0wMy0yNSAxMjozMzowNyI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZShhLGMpe3RoaXMuYmVhcmVyPWE7dGhpcy5vcHRpb25zPWM7dGhpcy5oaWRlRXZlbnQ7dGhpcy5oaWRpbmc9ITE7dGhpcy5tb3VzZU92ZXJNb2RlPSJob3ZlciI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfHwibW91c2VvdmVyIj09dGhpcy5vcHRpb25zLnRyaWdnZXJ8fCJvbm1vdXNlb3ZlciI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfWUucHJvdG90eXBlPXtzaG93OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLm9wdGlvbnMubW9kYWwmJnRoaXMubW9kYWxMYXllci5jc3MoImRpc3BsYXkiLCJibG9jayIpO3RoaXMudG9vbHRpcC5jc3MoImRpc3BsYXkiLCJibG9jayIpO2EubW91c2VPdmVyTW9kZSYmKHRoaXMudG9vbHRpcC5vbigibW91c2VvdmVyIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLmhpZGVFdmVudCk7YS5oaWRpbmc9ITF9KSx0aGlzLnRvb2x0aXAub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLmhpZGVFdmVudCk7CmEuaGlkZSgpO2EuaGlkaW5nPSExfSkpfSxoaWRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczthLmhpZGluZ3x8KGEuaGlkaW5nPSEwLHRoaXMuaGlkZUV2ZW50PXNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmhpZGluZz0hMTthLnRvb2x0aXAuaGlkZSgpfSksYS5vcHRpb25zLm1vZGFsJiYoYS5oaWRpbmc9ITEsYS5tb2RhbExheWVyLmhpZGUoKSksdGhpcy5vcHRpb25zLm9uQ2xvc2UoKSl9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMudG9vbHRpcC5pcygiOnZpc2libGUiKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX0sYWRkQW5pbWF0aW9uOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMub3B0aW9ucy5hbmltYXRpb24pe2Nhc2UgImZhZGVJbiI6dGhpcy50b29sdGlwLmFkZENsYXNzKCJhbmltYXRlZCIpO3RoaXMudG9vbHRpcC5hZGRDbGFzcygiZmFkZUluIik7YnJlYWs7Y2FzZSAiZmxpcEluIjp0aGlzLnRvb2x0aXAuYWRkQ2xhc3MoImFuaW1hdGVkIiksdGhpcy50b29sdGlwLmFkZENsYXNzKCJmbGlwSW4iKX19LApzZXRDb250ZW50OmZ1bmN0aW9uKCl7Yih0aGlzLmJlYXJlcikuY3NzKCJjdXJzb3IiLCJwb2ludGVyIik7aWYodGhpcy5vcHRpb25zLmNvbnRlbnQpdGhpcy5jb250ZW50PXRoaXMub3B0aW9ucy5jb250ZW50O2Vsc2UgaWYodGhpcy5iZWFyZXIuYXR0cigiZGF0YS10b29sdGlwIikpdGhpcy5jb250ZW50PXRoaXMuYmVhcmVyLmF0dHIoImRhdGEtdG9vbHRpcCIpO2Vsc2UgcmV0dXJuO2lmKCIjIj09dGhpcy5jb250ZW50LmNoYXJBdCgwKSl7aWYodGhpcy5vcHRpb25zLmRlbGV0ZV9jb250ZW50KXt2YXIgYT1iKHRoaXMuY29udGVudCkuaHRtbCgpO2IodGhpcy5jb250ZW50KS5odG1sKCIiKTt0aGlzLmNvbnRlbnQ9YTtkZWxldGUgYX1lbHNlIGIodGhpcy5jb250ZW50KS5oaWRlKCksdGhpcy5jb250ZW50PWIodGhpcy5jb250ZW50KS5odG1sKCk7dGhpcy5jb250ZW50VHlwZT0iaHRtbCJ9ZWxzZSB0aGlzLmNvbnRlbnRUeXBlPSJ0ZXh0IjthPSIiIT10aGlzLmJlYXJlci5hdHRyKCJpZCIpJiYKInVuZGVmaW5lZCIhPXRoaXMuYmVhcmVyLmF0dHIoImlkIik\/ImlkPSdkYXJrdG9vbHRpcC0iK3RoaXMuYmVhcmVyLmF0dHIoImlkIikrIiciOiJpZD0nZGFya3Rvb2x0aXAtIisoRGF0ZS5ub3coKStNYXRoLmZsb29yKDFFNCpNYXRoLnJhbmRvbSgpKSkrIiciOzA9PT1iKCJJTlMuZGFya3Rvb2x0aXAtbW9kYWwtbGF5ZXIiKS5sZW5ndGgmJih0aGlzLm1vZGFsTGF5ZXI9YigiPGlucyBjbGFzcz0nZGFya3Rvb2x0aXAtbW9kYWwtbGF5ZXInPjwvaW5zPiIpKTt0aGlzLnRvb2x0aXA9YigiPGlucyAiK2ErIiBjbGFzcyA9ICdkYXJrLXRvb2x0aXAgIit0aGlzLm9wdGlvbnMudGhlbWUrIiAiK3RoaXMub3B0aW9ucy5zaXplKyIgIit0aGlzLm9wdGlvbnMuZ3Jhdml0eSsiJz48ZGl2PiIrdGhpcy5jb250ZW50KyI8L2Rpdj48ZGl2IGNsYXNzID0gJ3RpcCc+PC9kaXY+PC9pbnM+Iik7dGhpcy50aXA9dGhpcy50b29sdGlwLmZpbmQoIi50aXAiKTtiKCJib2R5IikuYXBwZW5kKHRoaXMubW9kYWxMYXllcik7CmIoImJvZHkiKS5hcHBlbmQodGhpcy50b29sdGlwKTsiaHRtbCI9PXRoaXMuY29udGVudFR5cGUmJnRoaXMudG9vbHRpcC5jc3MoIm1heC13aWR0aCIsIm5vbmUiKTt0aGlzLnRvb2x0aXAuY3NzKCJvcGFjaXR5Iix0aGlzLm9wdGlvbnMub3BhY2l0eSk7dGhpcy5hZGRBbmltYXRpb24oKTt0aGlzLm9wdGlvbnMuY29uZmlybSYmdGhpcy5hZGRDb25maXJtKCl9LHNldFBvc2l0aW9uczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuYmVhcmVyLm9mZnNldCgpLmxlZnQsYz10aGlzLmJlYXJlci5vZmZzZXQoKS50b3A7c3dpdGNoKHRoaXMub3B0aW9ucy5ncmF2aXR5KXtjYXNlICJzb3V0aCI6YSs9dGhpcy5iZWFyZXIub3V0ZXJXaWR0aCgpLzItdGhpcy50b29sdGlwLm91dGVyV2lkdGgoKS8yO2MrPS10aGlzLnRvb2x0aXAub3V0ZXJIZWlnaHQoKS10aGlzLnRpcC5vdXRlckhlaWdodCgpLzI7YnJlYWs7Y2FzZSAid2VzdCI6YSs9dGhpcy5iZWFyZXIub3V0ZXJXaWR0aCgpK3RoaXMudGlwLm91dGVyV2lkdGgoKS8KMjtjKz10aGlzLmJlYXJlci5vdXRlckhlaWdodCgpLzItdGhpcy50b29sdGlwLm91dGVySGVpZ2h0KCkvMjticmVhaztjYXNlICJub3J0aCI6YSs9dGhpcy5iZWFyZXIub3V0ZXJXaWR0aCgpLzItdGhpcy50b29sdGlwLm91dGVyV2lkdGgoKS8yO2MrPXRoaXMuYmVhcmVyLm91dGVySGVpZ2h0KCkrdGhpcy50aXAub3V0ZXJIZWlnaHQoKS8yO2JyZWFrO2Nhc2UgImVhc3QiOmErPS10aGlzLnRvb2x0aXAub3V0ZXJXaWR0aCgpLXRoaXMudGlwLm91dGVyV2lkdGgoKS8yLGMrPXRoaXMuYmVhcmVyLm91dGVySGVpZ2h0KCkvMi10aGlzLnRvb2x0aXAub3V0ZXJIZWlnaHQoKS8yfXRoaXMub3B0aW9ucy5hdXRvTGVmdCYmdGhpcy50b29sdGlwLmNzcygibGVmdCIsYSk7dGhpcy5vcHRpb25zLmF1dG9Ub3AmJnRoaXMudG9vbHRpcC5jc3MoInRvcCIsYyl9LHNldEV2ZW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYz1hLm9wdGlvbnMuaG92ZXJEZWxheSxmO2lmKGEubW91c2VPdmVyTW9kZSl0aGlzLmJlYXJlci5vbigibW91c2VlbnRlciIsCmZ1bmN0aW9uKCl7Zj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5zZXRQb3NpdGlvbnMoKTthLnNob3coKX0sYyl9KS5vbigibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZik7YS5oaWRlKCl9KTtlbHNlIGlmKCJjbGljayI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfHwib25jbGlrIj09dGhpcy5vcHRpb25zLnRyaWdnZXIpdGhpcy50b29sdGlwLm9uKCJjbGljayIsZnVuY3Rpb24oZCl7ZC5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMuYmVhcmVyLm9uKCJjbGljayIsZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpO2Euc2V0UG9zaXRpb25zKCk7YS50b2dnbGUoKTtkLnN0b3BQcm9wYWdhdGlvbigpfSksYigiaHRtbCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLmhpZGUoKX0pfSxhY3RpdmF0ZTpmdW5jdGlvbigpe3RoaXMuc2V0Q29udGVudCgpO3RoaXMuY29udGVudCYmdGhpcy5zZXRFdmVudHMoKX0sYWRkQ29uZmlybTpmdW5jdGlvbigpe3RoaXMudG9vbHRpcC5hcHBlbmQoIjx1bCBjbGFzcyA9ICdjb25maXJtJz48bGkgY2xhc3MgPSAnZGFya3Rvb2x0aXAteWVzJz4iKwp0aGlzLm9wdGlvbnMueWVzKyI8L2xpPjxsaSBjbGFzcyA9ICdkYXJrdG9vbHRpcC1ubyc+Iit0aGlzLm9wdGlvbnMubm8rIjwvbGk+PC91bD4iKTt0aGlzLnNldENvbmZpcm1FdmVudHMoKX0sc2V0Q29uZmlybUV2ZW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy50b29sdGlwLmZpbmQoImxpLmRhcmt0b29sdGlwLXllcyIpLm9uKCJjbGljayIsZnVuY3Rpb24oYyl7YS5vblllcygpO2Muc3RvcFByb3BhZ2F0aW9uKCl9KTt0aGlzLnRvb2x0aXAuZmluZCgibGkuZGFya3Rvb2x0aXAtbm8iKS5vbigiY2xpY2siLGZ1bmN0aW9uKGMpe2Eub25ObygpO2Muc3RvcFByb3BhZ2F0aW9uKCl9KX0sZmluYWxNZXNzYWdlOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmZpbmFsTWVzc2FnZSl7dmFyIGE9dGhpczthLnRvb2x0aXAuZmluZCgiZGl2OmZpcnN0IikuaHRtbCh0aGlzLm9wdGlvbnMuZmluYWxNZXNzYWdlKTthLnRvb2x0aXAuZmluZCgidWwiKS5yZW1vdmUoKTthLnNldFBvc2l0aW9ucygpOwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5oaWRlKCk7YS5zZXRDb250ZW50KCl9LGEub3B0aW9ucy5maW5hbE1lc3NhZ2VEdXJhdGlvbil9ZWxzZSB0aGlzLmhpZGUoKX0sb25ZZXM6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub25ZZXModGhpcy5iZWFyZXIpO3RoaXMuZmluYWxNZXNzYWdlKCl9LG9uTm86ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub25Obyh0aGlzLmJlYXJlcik7dGhpcy5oaWRlKCl9fTtiLmZuLmRhcmtUb29sdGlwPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXthPWIuZXh0ZW5kKHt9LGIuZm4uZGFya1Rvb2x0aXAuZGVmYXVsdHMsYSk7KG5ldyBlKGIodGhpcyksYSkpLmFjdGl2YXRlKCl9KX07Yi5mbi5kYXJrVG9vbHRpcC5kZWZhdWx0cz17YW5pbWF0aW9uOiJub25lIixjb25maXJtOiExLGNvbnRlbnQ6IiIsZmluYWxNZXNzYWdlOiIiLGZpbmFsTWVzc2FnZUR1cmF0aW9uOjFFMyxncmF2aXR5OiJzb3V0aCIsaG92ZXJEZWxheTowLG1vZGFsOiExLApubzoiTm8iLG9uTm86ZnVuY3Rpb24oKXt9LG9uWWVzOmZ1bmN0aW9uKCl7fSxvcGFjaXR5Oi45LHNpemU6Im1lZGl1bSIsdGhlbWU6ImRhcmsiLHRyaWdnZXI6ImhvdmVyIix5ZXM6IlllcyIsYXV0b1RvcDohMCxhdXRvTGVmdDohMCxvbkNsb3NlOmZ1bmN0aW9uKCl7fX19KShqUXVlcnkpOwovKiogL20vanMvanF1ZXJ5LnZhbGlkaXR5Lm1pbi5qcyAqKi8KKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYixjLGUpe3ZhciBmPShiLnJlZHVjdGlvbnx8YikuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGk9W107cmV0dXJuIDE+Yi5sZW5ndGg\/KGNvbnNvbGUubG9nKCJDb3VsZCBub3QgdmFsaWRhdGUgZWxlbWVudCIsYiksYik6KGYuZWFjaChmdW5jdGlvbigpe2ModGhpcyk\/aS5wdXNoKHRoaXMpOmQodGhpcyxnKGUse2ZpZWxkOmgodGhpcyl9KSl9KSxiLnJlZHVjdGlvbj1hKGkpLGIpfWZ1bmN0aW9uIGMoKXthLnZhbGlkaXR5LmlzVmFsaWRhdGluZygpJiYoYS52YWxpZGl0eS5yZXBvcnQuZXJyb3JzKyssYS52YWxpZGl0eS5yZXBvcnQudmFsaWQ9ITEpfWZ1bmN0aW9uIGQoYixkKXtjKCksYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJmEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdLnJhaXNlJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZShhKGIpLGQpfWZ1bmN0aW9uIGUoYixkKXtjKCksYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJmEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdLnJhaXNlQWdncmVnYXRlJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZUFnZ3JlZ2F0ZShiLGQpfWZ1bmN0aW9uIGYoYSl7dmFyIGI9MDtyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9cGFyc2VGbG9hdCh0aGlzLnZhbHVlKTtiKz1pc05hTihhKT8wOmF9KSxifWZ1bmN0aW9uIGcoYSxiKXtmb3IodmFyIGMgaW4gYilhPWEucmVwbGFjZSgiI3siK2MrIn0iLGJbY10pO3JldHVybiBqKGEpfWZ1bmN0aW9uIGgoYil7dmFyIGM9YShiKSxkPWEudmFsaWRpdHkuc2V0dGluZ3MuZGVmYXVsdEZpZWxkTmFtZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGMuYXR0cigidGl0bGUiKSYmYy5hdHRyKCJ0aXRsZSIpLmxlbmd0aClkPWMuYXR0cigidGl0bGUiKTtlbHNlIGlmKC9eKFtBLVowLTldW2Etel0qKSskLy50ZXN0KGIuaWQpKWQ9Yi5pZC5yZXBsYWNlKC8oW0EtWjAtOV0pW2Etel0qL2csIiAkJiIpO2Vsc2UgaWYoL15bYS16MC05X10qJC8udGVzdChiLmlkKSl7Zm9yKHZhciBlPWIuaWQuc3BsaXQoIl8iKSxmPTA7ZjxlLmxlbmd0aDsrK2YpZVtmXT1qKGVbZl0pO2Q9ZS5qb2luKCIgIil9cmV0dXJuIGR9ZnVuY3Rpb24gaihhKXtyZXR1cm4gYS5zdWJzdHJpbmc\/YS5zdWJzdHJpbmcoMCwxKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEsYS5sZW5ndGgpOmF9YS52YWxpZGl0eT17c2V0dGluZ3M6YS5leHRlbmQoe291dHB1dE1vZGU6ImxhYmVsIixjc3NDbGFzczoiZXJyb3IiLHNjcm9sbFRvOiExLG1vZGFsRXJyb3JzQ2xpY2thYmxlOiEwLGRlZmF1bHRGaWVsZE5hbWU6IlRoaXMgZmllbGQiLGVsZW1lbnRTdXBwb3J0OiI6dGV4dCwgW3R5cGU9dGVsXSwgW3R5cGU9ZW1haWxdLCBbdHlwZT1kYXRlXSwgOnBhc3N3b3JkLCB0ZXh0YXJlYSwgc2VsZWN0LCA6cmFkaW8sIDpjaGVja2JveCIsYXJnVG9TdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0RGF0ZT9hLmdldE1vbnRoKCkrMSsiLyIrYS5nZXREYXRlKCkrIi8iK2EuZ2V0RnVsbFllYXIoKTphfX0se30pLHBhdHRlcm5zOntpbnRlZ2VyOi9eXGQrJC8sZGF0ZTovXigoMD9cZCl8KDFbMDEyXSkpXC8oWzAxMl0\/XGR8MzB8MzEpXC9cZHsxLDR9JC8sZW1haWw6L14oKChbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw\/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKFwuKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSspKil8KChceDIyKSgoKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk\/KChbXHgwMS1ceDA4XHgwYlx4MGNceDBlLVx4MWZceDdmXXxceDIxfFtceDIzLVx4NWJdfFtceDVkLVx4N2VdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoXFwoW1x4MDEtXHgwOVx4MGJceDBjXHgwZC1ceDdmXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKSkqKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPyhceDIyKSkpQCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLj8kL2ksdXNkOi9eXCQ\/KFxkezEsM30sPyhcZHszfSw\/KSpcZHszfShcLlxkezAsMn0pP3xcZHsxLDN9KFwuXGR7MCwyfSk\/fFwuXGR7MSwyfT8pJC8sdXJsOi9eKGh0dHBzP3xmdHApOlwvXC8oKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDopKkApPygoKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSkpfCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLj8pKDpcZCopPykoXC8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSsoXC8oKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApKikqKT8pPyhcPygoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApfFtcdUUwMDAtXHVGOEZGXXxcL3xcPykqKT8oXCMoKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxcL3xcPykqKT8kL2ksbnVtYmVyOi9eWystXT8oXGQrKFwuXGQqKT98XC5cZCspKFtFZV1cZCspPyQvLHppcDovXlxkezV9KC1cZHs0fSk\/JC8scGhvbmU6L15bMi05XVxkezJ9LVxkezN9LVxkezR9JC8sZ3VpZDovXihcez8oWzAtOWEtZkEtRl0pezh9LSgoWzAtOWEtZkEtRl0pezR9LSl7M30oWzAtOWEtZkEtRl0pezEyfVx9PykkLyx0aW1lMTI6L15bMDFdP1xkOlswLTVdXGQ\/XHM\/W2FBcFBdXC4\/W21NXVwuPyQvLHRpbWUyNDovXigyMHwyMXwyMnwyM3xbMDFdXGR8XGQpKChbOl1bMC01XVxkKXsxLDJ9KSQvLG5vbkh0bWw6L15bXjw+XSokL30sbWVzc2FnZXM6e2FyZWFjb2RlOiIje2ZpZWxkfSBhY2NlcHRzIG9ubHkgbG9jYWwgYXJlYSBjb2RlcyIscmVxdWlyZToiI3tmaWVsZH0gaXMgcmVxdWlyZWQuIixtYXRjaDoiI3tmaWVsZH0gaXMgaW4gYW4gaW52YWxpZCBmb3JtYXQuIixpbnRlZ2VyOiIje2ZpZWxkfSBtdXN0IGJlIGEgcG9zaXRpdmUsIHdob2xlIG51bWJlci4iLGRhdGU6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgZGF0ZS4iLGVtYWlsOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhbiBlbWFpbC4iLHVzZDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBVUyBEb2xsYXIgYW1vdW50LiIsdXJsOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIFVSTC4iLG51bWJlcjoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBudW1iZXIuIix6aXA6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgemlwY29kZSAjIyMjIyBvciAjIyMjIy0jIyMjLiIscGhvbmU6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgcGhvbmUgbnVtYmVyICMjIy0jIyMtIyMjIy4iLGd1aWQ6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgZ3VpZCBsaWtlIHszRjI1MDRFMC00Rjg5LTExRDMtOUEwQy0wMzA1RTgyQzMzMDF9LiIsdGltZTI0OiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIDI0IGhvdXIgdGltZTogMjM6MDAuIix0aW1lMTI6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgMTIgaG91ciB0aW1lOiAxMjowMCBBTS9QTSIsbGVzc1RoYW46IiN7ZmllbGR9IG11c3QgYmUgbGVzcyB0aGFuICN7bWF4fS4iLGxlc3NUaGFuT3JFcXVhbFRvOiIje2ZpZWxkfSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAje21heH0uIixncmVhdGVyVGhhbjoiI3tmaWVsZH0gbXVzdCBiZSBncmVhdGVyIHRoYW4gI3ttaW59LiIsZ3JlYXRlclRoYW5PckVxdWFsVG86IiN7ZmllbGR9IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICN7bWlufS4iLHJhbmdlOiIje2ZpZWxkfSBtdXN0IGJlIGJldHdlZW4gI3ttaW59IGFuZCAje21heH0uIix0b29Mb25nOiIje2ZpZWxkfSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gI3ttYXh9IGNoYXJhY3RlcnMuIix0b29TaG9ydDoiI3tmaWVsZH0gY2Fubm90IGJlIHNob3J0ZXIgdGhhbiAje21pbn0gY2hhcmFjdGVycy4iLG5vbkh0bWw6IiN7ZmllbGR9IGNhbm5vdCBjb250YWluIEhUTUwgY2hhcmFjdGVycy4iLGFscGhhYmV0OiIje2ZpZWxkfSBjb250YWlucyBkaXNhbGxvd2VkIGNoYXJhY3RlcnMuIixtaW5DaGFyQ2xhc3M6IiN7ZmllbGR9IGNhbm5vdCBoYXZlIG1vcmUgdGhhbiAje21pbn0gI3tjaGFyQ2xhc3N9IGNoYXJhY3RlcnMuIixtYXhDaGFyQ2xhc3M6IiN7ZmllbGR9IGNhbm5vdCBoYXZlIGxlc3MgdGhhbiAje21pbn0gI3tjaGFyQ2xhc3N9IGNoYXJhY3RlcnMuIixlcXVhbDoiVmFsdWVzIGRvbid0IG1hdGNoLiIsZGlzdGluY3Q6IkEgdmFsdWUgd2FzIHJlcGVhdGVkLiIsc3VtOiJWYWx1ZXMgZG9uJ3QgYWRkIHRvICN7c3VtfS4iLHN1bU1heDoiVGhlIHN1bSBvZiB0aGUgdmFsdWVzIG11c3QgYmUgbGVzcyB0aGFuICN7bWF4fS4iLHN1bU1pbjoiVGhlIHN1bSBvZiB0aGUgdmFsdWVzIG11c3QgYmUgZ3JlYXRlciB0aGFuICN7bWlufS4iLHJhZGlvQ2hlY2tlZDoiVGhlIHNlbGVjdGVkIHZhbHVlIGlzIG5vdCB2YWxpZC4iLGdlbmVyaWM6IkludmFsaWQuIn0sY2hhckNsYXNzZXM6e2FscGhhYmV0aWNhbDovXHcvZyxudW1lcmljOi9cZC9nLGFscGhhbnVtZXJpYzovW0EtWmEtejAtOV0vZyxzeW1ib2w6L1teQS1aYS16MC05XS9nfSxvdXRwdXRzOnt9LHNldHVwOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnNldHRpbmdzPWEuZXh0ZW5kKHRoaXMuc2V0dGluZ3MsYiksdGhpc30scmVwb3J0Om51bGwsaXNWYWxpZGF0aW5nOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnJlcG9ydH0sc3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXSYmdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0uc3RhcnQmJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLnN0YXJ0KCksdGhpcy5yZXBvcnQ9e2Vycm9yczowLHZhbGlkOiEwfX0sZW5kOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yZXBvcnR8fHtlcnJvcnM6MCx2YWxpZDohMH07cmV0dXJuIHRoaXMucmVwb3J0PW51bGwsdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLmVuZCYmdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0uZW5kKGEpLGF9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5zdGFydCgpLHRoaXMuZW5kKCl9fSxhLmZuLmV4dGVuZCh7dmFsaWRpdHk6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCJmb3JtIj09dGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBjPW51bGw7InN0cmluZyI9PXR5cGVvZiBiP2M9ZnVuY3Rpb24oKXthKGIpLnJlcXVpcmUoKX06aXNGdW5jdGlvbihiKSYmKGM9YiksYiYmYSh0aGlzKS5vbigic3VibWl0IixmdW5jdGlvbigpe3JldHVybiBhLnZhbGlkaXR5LnN0YXJ0KCksYygpLGEudmFsaWRpdHkuZW5kKCkudmFsaWR9KX19KX0scmVxdWlyZTpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPWEoYikudmFsKCksZD10cmltKGMpLmxlbmd0aDtyZXR1cm4gZH0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yZXF1aXJlKX0sbWF0Y2g6ZnVuY3Rpb24oYyxkKXtyZXR1cm4gZHx8KGQ9YS52YWxpZGl0eS5tZXNzYWdlcy5tYXRjaCwic3RyaW5nIj09dHlwZW9mIGMmJmEudmFsaWRpdHkubWVzc2FnZXNbY10mJihkPWEudmFsaWRpdHkubWVzc2FnZXNbY10pKSwic3RyaW5nIj09dHlwZW9mIGMmJihjPWEudmFsaWRpdHkucGF0dGVybnNbY10pLGIodGhpcyxpc0Z1bmN0aW9uKGMpP2Z1bmN0aW9uKGEpe3JldHVybiFhLnZhbHVlLmxlbmd0aHx8YyhhLnZhbHVlKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGMuZ2xvYmFsJiYoYy5sYXN0SW5kZXg9MCksIWEudmFsdWUubGVuZ3RofHxjLnRlc3QoYS52YWx1ZSl9LGQpfSxyYW5nZTpmdW5jdGlvbihjLGUsZil7cmV0dXJuIGIodGhpcyxjLmdldFRpbWUmJmUuZ2V0VGltZT9mdW5jdGlvbihhKXt2YXIgYj1uZXcgRGF0ZShhLnZhbHVlKTtyZXR1cm4gYj49bmV3IERhdGUoYykmJmI8PW5ldyBEYXRlKGUpfTpjLnN1YnN0cmluZyYmZS5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXt2YXIgYj1uZXcgQmlnKGEudmFsdWUpO3JldHVybiBiLmdyZWF0ZXJUaGFuT3JFcXVhbFRvKG5ldyBCaWcoYykpJiZiLmxlc3NUaGFuT3JFcXVhbFRvKG5ldyBCaWcoZSkpfTpmdW5jdGlvbihhKXt2YXIgYj1wYXJzZUZsb2F0KGEudmFsdWUpO3JldHVybiBiPj1jJiZiPD1lfSxmfHxnKGEudmFsaWRpdHkubWVzc2FnZXMucmFuZ2Use21pbjphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpLG1heDphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGUpfSkpfSxncmVhdGVyVGhhbjpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKT5jfTpjLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnKGEudmFsdWUpLmdyZWF0ZXJUaGFuKG5ldyBCaWcoYykpfTpmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhLnZhbHVlKT5jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuZ3JlYXRlclRoYW4se21pbjphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpfSkpfSxncmVhdGVyVGhhbk9yRXF1YWxUbzpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKT49Y306Yy5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZyhhLnZhbHVlKS5ncmVhdGVyVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGMpKX06ZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlRmxvYXQoYS52YWx1ZSk+PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5ncmVhdGVyVGhhbk9yRXF1YWxUbyx7bWluOmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyl9KSl9LGxlc3NUaGFuOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxjLmdldFRpbWU\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEudmFsdWUpPGN9OmMuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCaWcoYS52YWx1ZSkubGVzc1RoYW4obmV3IEJpZyhjKSl9OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUZsb2F0KGEudmFsdWUpPGN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5sZXNzVGhhbix7bWF4OmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyl9KSl9LGxlc3NUaGFuT3JFcXVhbFRvOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxjLmdldFRpbWU\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEudmFsdWUpPD1jfTpjLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnKGEudmFsdWUpLmxlc3NUaGFuT3JFcXVhbFRvKG5ldyBCaWcoYykpfTpmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhLnZhbHVlKTw9Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmxlc3NUaGFuT3JFcXVhbFRvLHttYXg6YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKX0pKX0sbWF4TGVuZ3RoOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYS52YWx1ZS5sZW5ndGg8PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy50b29Mb25nLHttYXg6Y30pKX0sbWluTGVuZ3RoOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYS52YWx1ZS5sZW5ndGg+PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy50b29TaG9ydCx7bWluOmN9KSl9LGFscGhhYmV0OmZ1bmN0aW9uKGMsZCl7dmFyIGU9W107cmV0dXJuIGIodGhpcyxmdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEudmFsdWUubGVuZ3RoOysrYilpZigtMT09Yy5pbmRleE9mKGEudmFsdWUuY2hhckF0KGIpKSlyZXR1cm4gZS5wdXNoKGEudmFsdWUuY2hhckF0KGIpKSwhMTtyZXR1cm4hMH0sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmFscGhhYmV0LHtjaGFyczplLmpvaW4oIiwgIil9KSl9LG1pbkNoYXJDbGFzczpmdW5jdGlvbihjLGQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjJiYoYz1jLnRvTG93ZXJDYXNlKCksYS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSYmKGM9YS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSkpLGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4oYS52YWx1ZS5tYXRjaChjKXx8W10pLmxlbmd0aD49ZH0sZXx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLm1pbkNoYXJDbGFzcyx7bWluOmQsY2hhckNsYXNzOmN9KSl9LG1heENoYXJDbGFzczpmdW5jdGlvbihjLGQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjJiYoYz1jLnRvTG93ZXJDYXNlKCksYS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSYmKGM9YS52YWxpZGl0eS5jaGFyQ2xhc3Nlc1tjXSkpLGIodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4oYS52YWx1ZS5tYXRjaChjKXx8W10pLmxlbmd0aDw9ZH0sZXx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLm1heENoYXJDbGFzcyx7bWF4OmQsY2hhckNsYXNzOmN9KSl9LHBhc3N3b3JkOmZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHthbHBoYWJldDpudWxsLG1pbkxlbmd0aDowLG1heExlbmd0aDowLG1pblN5bWJvbDowLG1pbkFscGhhYmV0aWNhbDowLG1pbk51bWVyaWM6MCxtaW5BbHBoYU51bWVyaWM6MH0sYiksYi5hbHBoYWJldCYmdGhpcy5hbHBoYWJldChiLmFscGhhYmV0KSxiLm1pbkxlbmd0aCYmdGhpcy5taW5MZW5ndGgoYi5taW5MZW5ndGgpLGIubWF4TGVuZ3RoJiZ0aGlzLm1heExlbmd0aChiLm1heExlbmd0aCksYi5taW5TeW1ib2wmJnRoaXMubWluQ2hhckNsYXNzKCJzeW1ib2wiLGIubWluU3ltYm9sKSxiLm1pbkFscGhhYmV0aWNhbCYmdGhpcy5taW5DaGFyQ2xhc3MoImFscGhhYmV0aWNhbCIsYi5taW5BbHBoYWJldGljYWwpLGIubWluTnVtZXJpYyYmdGhpcy5taW5DaGFyQ2xhc3MoIm51bWVyaWMiLGIubWluTnVtZXJpYyksYi5taW5BbHBoYW51bWVyaWMmJnRoaXMubWluQ2hhckNsYXNzKCJhbHBoYW51bWVyaWMiLGIubWluQWxwaGFudW1lcmljKSx0aGlzfSxub25IdG1sOmZ1bmN0aW9uKGMpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGEudmFsaWRpdHkucGF0dGVybnMubm9uSHRtbC50ZXN0KGIudmFsdWUpfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLm5vbkh0bWwpfSxlcXVhbDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGY9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGc9YS52YWxpZGl0eS5tZXNzYWdlcy5lcXVhbDtpZihkLmxlbmd0aCl7aXNGdW5jdGlvbihiKT8oZj1iLCJzdHJpbmciPT10eXBlb2YgYyYmKGc9YykpOiJzdHJpbmciPT10eXBlb2YgYiYmKGc9Yik7dmFyIGg9YS5tYXAoZCxmdW5jdGlvbihhKXtyZXR1cm4gZihhLnZhbHVlKX0pLGo9aFswXSxrPSEwO2Zvcih2YXIgbCBpbiBoKWhbbF0hPWomJihrPSExKTtrfHwoZShkLGcpLHRoaXMucmVkdWN0aW9uPWEoW10pKX1yZXR1cm4gdGhpc30sZGlzdGluY3Q6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxmPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnPWEudmFsaWRpdHkubWVzc2FnZXMuZGlzdGluY3QsaD1bXSxpPSEwO2lmKGQubGVuZ3RoKXtpc0Z1bmN0aW9uKGIpPyhmPWIsInN0cmluZyI9PXR5cGVvZiBjJiYoZz1jKSk6InN0cmluZyI9PXR5cGVvZiBiJiYoZz1iKTtmb3IodmFyIGo9YS5tYXAoZCxmdW5jdGlvbihhKXtyZXR1cm4gZihhLnZhbHVlKX0pLGs9MDtrPGoubGVuZ3RoOysraylpZihqW2tdLmxlbmd0aCl7Zm9yKHZhciBsPTA7bDxoLmxlbmd0aDsrK2wpaFtsXT09altrXSYmKGk9ITEpO2gucHVzaChqW2tdKX1pfHwoZShkLGcpLHRoaXMucmVkdWN0aW9uPWEoW10pKX1yZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7cmV0dXJuIGQubGVuZ3RoJiZiIT1mKGQpJiYoZShkLGN8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5zdW0se3N1bTpifSkpLHRoaXMucmVkdWN0aW9uPWEoW10pKSx0aGlzfSxzdW1NYXg6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtyZXR1cm4gZC5sZW5ndGgmJmI8ZihkKSYmKGUoZCxjfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuc3VtTWF4LHttYXg6Yn0pKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSksdGhpc30sc3VtTWluOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7cmV0dXJuIGQubGVuZ3RoJiZiPGYoZCkmJihlKGQsY3x8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnN1bU1pbix7bWluOmJ9KSksdGhpcy5yZWR1Y3Rpb249YShbXSkpLHRoaXN9LHJhZGlvQ2hlY2tlZDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2QuaXMoIjpyYWRpbyIpJiZkLmZpbmQoIjpjaGVja2VkIikudmFsKCkhPWImJmUoZCxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCl9LHJhZGlvTm90Q2hlY2tlZDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2QuaXMoIjpyYWRpbyIpJiZkLmZpbHRlcigiOmNoZWNrZWQiKS52YWwoKT09YiYmZShkLGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKX0sY2hlY2tib3hDaGVja2VkOmZ1bmN0aW9uKGIpe3ZhciBjPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2MuaXMoIjpjaGVja2JveCIpJiYhYy5pcygiOmNoZWNrZWQiKSYmKGUoYyxifHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCksYy5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIikpfSxhc3NlcnQ6ZnVuY3Rpb24oYyxkKXt2YXIgZj10aGlzLnJlZHVjdGlvbnx8dGhpcztpZihmLmxlbmd0aCl7aWYoaXNGdW5jdGlvbihjKSlyZXR1cm4gYih0aGlzLGMsZHx8YS52YWxpZGl0eS5tZXNzYWdlcy5nZW5lcmljKTtjfHwoZShmLGR8fGEudmFsaWRpdHkubWVzc2FnZXMuZ2VuZXJpYyksdGhpcy5yZWR1Y3Rpb249YShbXSkpfXJldHVybiB0aGlzfX0pLGEuZm4uZXh0ZW5kKHt2YWxpZEFsbG9yTm9uZTpmdW5jdGlvbigpe3ZhciBiPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGM9ITA7cmV0dXJuIGIuZWFjaChmdW5jdGlvbigpe2lmKCIiIT1hKHRoaXMpLnZhbCgpKXJldHVybiBiLmVhY2goZnVuY3Rpb24oKXsiIj09YSh0aGlzKS52YWwoKSYmKGM9ITEsZCh0aGlzLGcoIiIse2ZpZWxkOmgodGhpcyl9KSkpfSksITF9KSx0aGlzfSxyZXF1aXJlV2l0aFdhdGVybWFyazpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPWZ1bmN0aW9uKGEpe3JldHVybiAwPGEudHJpbSgpLmxlbmd0aH0sZD1hKGIpLmF0dHIoImFsdCIpLGU9YShiKS52YWwoKS50cmltKCk7cmV0dXJuIGQ\/ZCE9ZSYmYyhlKTpjKGUpfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJlcXVpcmUpfSxyZXF1aXJlUG9zdGFsQ29kZTpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPWEoYikudmFsKCkucmVwbGFjZSgvXHMvZywiIikucmVwbGFjZSgvW15BLXowLTldL2csIjAiKS50b1VwcGVyQ2FzZSgpO2lmKDA9PWMubGVuZ3RoKXJldHVybiEwO2lmKDU+Yy5sZW5ndGgpcmV0dXJuITE7aWYoWmlwUmVnZXg9YS52YWxpZGl0eS5wYXR0ZXJucy56aXAsbnVsbCE9Yy5tYXRjaChaaXBSZWdleCkpcmV0dXJuITA7cmV0dXJuIENhbmFkYVBvc3RSZWdleD0vW0FCQ0VHSEpLTE1OUFJTVFZXWFlaXVswLTldW0FCQ0VHSEpLTE1OUFJTVFZXWFlaXVswLTldW0FCQ0VHSEpLTE1OUFJTVFZXWFlaXVswLTldLyxudWxsIT1jLm1hdGNoKENhbmFkYVBvc3RSZWdleCkmJihhKGIpLnZhbChjLnN1YnN0cmluZygwLDMpKyIgIitjLnN1YnN0cmluZygzLDYpKSwhMCl9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmVxdWlyZSl9LHZhbGlkRW1haWxBZGRyZXNzOmZ1bmN0aW9uKGMpe3ZhciBkPXRoaXMsZT1bIi5jb20iLCIuY2EiLCIubmV0IiwiLmJpeiIsIi5xdWViZWMiLCIuY28iLCIuaW5mbyIsIi5tb2JpIiwiLm9yZyIsIi5pbmMiXTsxPT1hKCIjQURNSU5fR0VORVJBTF9CTE9DS19GUl9ET01BSU5fQ0hFQ0siKS5sZW5ndGgmJiIxIiE9YSgiI0FETUlOX0dFTkVSQUxfQkxPQ0tfRlJfRE9NQUlOX0NIRUNLIikudmFsKCkmJmUucHVzaCgiLmZyIik7dmFyIGY9Yih0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBydWxlPWEudmFsaWRpdHkucGF0dGVybnMuZW1haWwscnVsZS5nbG9iYWwmJihydWxlLmxhc3RJbmRleD0wKSwhYi52YWx1ZS5sZW5ndGh8fHJ1bGUudGVzdChiLnZhbHVlKX0sIiIpO3JldHVybiBmP2IodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1hKGIpLnZhbCgpLnRvTG93ZXJDYXNlKCksZD0hMTtpZighYy5sZW5ndGgpcmV0dXJuITA7U3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aHx8KFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGg9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgtYS5sZW5ndGg7cmV0dXJuIDA8PWImJnRoaXMubGFzdEluZGV4T2YoYSk9PT1ifSk7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspYy50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGVbZl0pJiYoZD0hMCk7aWYoITE9PWQpcmV0dXJuITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXIpe3ZhciBnPSEwO3JldHVybiBlbWFpbEhhbmRsZXIudmFsaWRhdGVFbWFpbChjKS5kb25lKGZ1bmN0aW9uKGEpeyJpbnZhbGlkIj09PWEuc3RhdHVzJiYoZz0hMSl9KSxnfXJldHVybiEwfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLmVtYWlsKTpjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLmVtYWlsfSxyYWRpb09wdGlvbkNob3NlbjpmdW5jdGlvbihiKXt2YXIgYz0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxkPXt9O2Zvcih2YXIgZiBpbiBjLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLmF0dHIoIm5hbWUiKTsidW5kZWZpbmVkIj09dHlwZW9mIGRbYl0mJihkW2JdPVtdKSxkW2JdLnB1c2godGhpcyl9KSxkKTA9PWEoZFtmXSkuZmlsdGVyKCI6cmFkaW8iKS5maWx0ZXIoIjpjaGVja2VkIikubGVuZ3RoJiZlKGEoZFtmXSksYnx8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpfSxvbmVPck1vcmVDaGVja2VkOmZ1bmN0aW9uKGIpe3ZhciBjPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO2MuZWFjaChmdW5jdGlvbigpe3ZhciBkPWMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuISFhKHRoaXMpLmlzKCJbdHlwZT1jaGVja2JveF06Y2hlY2tlZCIpfSkubGVuZ3RoOzA9PWQmJihjLnBhcmVudHMoInVsIikuZmlyc3QoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksZShjLGJ8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKSl9KX0sdmFsaWRhdGVNb2JpbGU6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGU9ITAsZj0iIixnPWEoZCkubGVuZ3RoLGg9WzQzOCw1MTQsMjYzLDQ1MCw1NzksODE5LDI0OSw3MDUsMjI2LDUxOSwyODksMzY1LDkwNSw0MTYsNDM3LDY0NywzNDMsNjEzLDcwOSw4NzMsNDE4LDU4MSw1MDYsOTAyXSxqPTA7ajw9ZztqKyspaWYoajxnKWYrPWEoYShkKVtqXSkudmFsKCk7ZWxzZXtpZihmPWYucmVwbGFjZSgvW14wLTldKy9naSwiIiksMD09PWYubGVuZ3RoKXJldHVybiBiKGQsKCk9PiEwLGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpOyIxIj09ZlswXSYmKGY9Zi5zdWJzdHJpbmcoMSkpO3ZhciBrPXBhcnNlSW50KGYuc3Vic3RyaW5nKDAsMykpO2EuYWpheCh7dXJsOiJodHRwczovL3Jlc3QuZDJjbWVkaWEuY2Evc2l0ZXMvc3ZjL3ZhbGlkYXRlUGhvbmVOdW1iZXIucGhwIix0eXBlOiJHRVQiLGFzeW5jOiExLHRpbWVvdXQ6MmUzLGRhdGFUeXBlOiJqc29uIixkYXRhOntwaG9uZTpmLG1vYmlsZToxLGFyZWFjb2RlOiJDQSJ9fSkuZG9uZShmdW5jdGlvbihmKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGYuaXNPaykhMT09PWYucGhvbmVOdW1iZXJJc1ZhbGlkJiYoZT0hMSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIGguaW5kZXhPZiYmLTE9PWguaW5kZXhPZihrKSlyZXR1cm4hMTtyZXR1cm4gYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSkuZmFpbChmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgaC5pbmRleE9mJiYtMT09aC5pbmRleE9mKGspJiYoZT0hMSksYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSl9fSx2YWxpZGF0ZVBob25lOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxlPSEwLGY9IiIsZz1hKGQpLmxlbmd0aCxoPVs0MzgsNTE0LDI2Myw0NTAsNTc5LDgxOSwyNDksNzA1LDIyNiw1MTksMjg5LDM2NSw5MDUsNDE2LDQzNyw2NDcsMzQzLDYxMyw3MDksODczLDQxOCw1ODEsNTA2LDkwMl0saj0wO2o8PWc7aisrKWlmKGo8ZylmKz1hKGEoZClbal0pLnZhbCgpO2Vsc2V7aWYoZj1mLnJlcGxhY2UoL1teMC05XSsvZ2ksIiIpLCJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyJiZ0aGlzLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYoZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5PSEwKSwwPT09Zi5sZW5ndGgpcmV0dXJuIGIoZCwoKT0+ITAsY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSk7IjEiPT1mWzBdJiYoZj1mLnN1YnN0cmluZygxKSk7dmFyIGs9cGFyc2VJbnQoZi5zdWJzdHJpbmcoMCwzKSk7YS5hamF4KHt1cmw6Imh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9zaXRlcy9zdmMvdmFsaWRhdGVQaG9uZU51bWJlci5waHAiLHR5cGU6IkdFVCIsYXN5bmM6ITEsdGltZW91dDoyZTMsZGF0YVR5cGU6Impzb24iLGRhdGE6e3Bob25lOmYsYXJlYWNvZGU6IkNBIn19KS5kb25lKGZ1bmN0aW9uKGYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZi5pc09rKSExPT09Zi5waG9uZU51bWJlcklzVmFsaWQmJigidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5JiZlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKyxlPSExKTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgaC5pbmRleE9mJiYtMT09aC5pbmRleE9mKGspKXJldHVybiExO3JldHVybiBiKGQsZnVuY3Rpb24oKXtyZXR1cm4gZX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSl9KS5mYWlsKGZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBoLmluZGV4T2YmJi0xPT1oLmluZGV4T2YoaykmJigidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5JiZlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKyxlPSExKSxiKGQsZnVuY3Rpb24oKXtyZXR1cm4gZX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSl9KX19fSl9KShqUXVlcnkpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7cmV0dXJuIGEuYXR0cigiaWQiKS5sZW5ndGg\/YS5hdHRyKCJpZCIpOmEuYXR0cigibmFtZSIpfWEudmFsaWRpdHkub3V0cHV0cy5sYWJlbD17c3RhcnQ6ZnVuY3Rpb24oKXthKCJsYWJlbC4iK2EudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpLnJlbW92ZSgpfSxlbmQ6ZnVuY3Rpb24oYil7IWIudmFsaWQmJmEudmFsaWRpdHkuc2V0dGluZ3Muc2Nyb2xsVG8mJihsb2NhdGlvbi5oYXNoPWEoImxhYmVsLiIrYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcysiOmVxKDApIikuYXR0cigiZm9yIikpfSxyYWlzZTpmdW5jdGlvbihjLGQpe3ZhciBlPSJsYWJlbC4iK2EudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MrIltmb3I9JyIrYihjKSsiJ10iO2EoZSkubGVuZ3RoP2EoZSkudGV4dChkKTphKCI8bGFiZWwvPiIpLmF0dHIoImZvciIsYihjKSkuYWRkQ2xhc3MoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcykudGV4dChkKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yy5sZW5ndGgmJmNbMF0uc2VsZWN0KCl9KS5pbnNlcnRBZnRlcihjKX0scmFpc2VBZ2dyZWdhdGU6ZnVuY3Rpb24oYixjKXtiLmxlbmd0aCYmdGhpcy5yYWlzZShhKGIuZ2V0KGIubGVuZ3RoLTEpKSxjKX19fShqUXVlcnkpLGZ1bmN0aW9uKGEpe2EudmFsaWRpdHkub3V0cHV0cy5tb2RhbD17c3RhcnQ6ZnVuY3Rpb24oKXthKCIudmFsaWRpdHktbW9kYWwtbXNnIikucmVtb3ZlKCl9LGVuZDpmdW5jdGlvbihiKXshYi52YWxpZCYmYS52YWxpZGl0eS5zZXR0aW5ncy5zY3JvbGxUbyYmKGxvY2F0aW9uLmhhc2g9YSgiLnZhbGlkaXR5LW1vZGFsLW1zZzplcSgwKSIpLmF0dHIoImlkIikpfSxyYWlzZTpmdW5jdGlvbihiLGMpe2lmKGIubGVuZ3RoKXt2YXIgZD1iLm9mZnNldCgpLGU9Yi5nZXQoMCksZj17bGVmdDpwYXJzZUludChkLmxlZnQrYi53aWR0aCgpKzQsMTApKyJweCIsdG9wOnBhcnNlSW50KGQudG9wLTEwLDEwKSsicHgifTthKCI8ZGl2Lz4iKS5hZGRDbGFzcygidmFsaWRpdHktbW9kYWwtbXNnIikuY3NzKGYpLnRleHQoYykub24oImNsaWNrIixhLnZhbGlkaXR5LnNldHRpbmdzLm1vZGFsRXJyb3JzQ2xpY2thYmxlP2Z1bmN0aW9uKCl7YSh0aGlzKS5yZW1vdmUoKX06bnVsbCkuYXBwZW5kVG8oImJvZHkiKX19LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGIsYyl7Yi5sZW5ndGgmJnRoaXMucmFpc2UoYShiLmdldChiLmxlbmd0aC0xKSksYyl9fX0oalF1ZXJ5KSxmdW5jdGlvbihhKXt2YXIgYj1bXTthLnZhbGlkaXR5Lm91dHB1dHMuc3VtbWFyeT17c3RhcnQ6ZnVuY3Rpb24oKXthKCIudmFsaWRpdHktZXJyb25lb3VzIikucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLGI9W119LGVuZDpmdW5jdGlvbigpe2lmKGEoIi52YWxpZGl0eS1zdW1tYXJ5LWNvbnRhaW5lciIpLmhpZGUoKS5maW5kKCJ1bCIpLmh0bWwoIiIpLGIubGVuZ3RoKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYylhKCI8bGkvPiIpLnRleHQoYltjXSkuYXBwZW5kVG8oIi52YWxpZGl0eS1zdW1tYXJ5LWNvbnRhaW5lciB1bCIpO2EoIi52YWxpZGl0eS1zdW1tYXJ5LWNvbnRhaW5lciIpLnNob3coKSxhLnZhbGlkaXR5LnNldHRpbmdzLnNjcm9sbFRvJiYobG9jYXRpb24uaGFzaD1hKCIudmFsaWRpdHktZXJyb25lb3VzOmVxKDApIikuYXR0cigiaWQiKSl9fSxyYWlzZTpmdW5jdGlvbihhLGMpe2IucHVzaChjKTt2YXIgZD1hLmNsb3Nlc3QoImZvcm0iKS5oYXNDbGFzcygianF0cmFuc2Zvcm1kb25lIik7YS5wYXJlbnQoKS5pcygiZGl2IikmJmQ\/KGEucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLGEucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpKTphLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX0scmFpc2VBZ2dyZWdhdGU6ZnVuY3Rpb24oYSxiKXt0aGlzLnJhaXNlKGEsYil9LGNvbnRhaW5lcjpmdW5jdGlvbigpe2RvY3VtZW50LndyaXRlKCI8ZGl2IGNsYXNzPVwidmFsaWRpdHktc3VtbWFyeS1jb250YWluZXJcIj5UaGUgZm9ybSBkaWRuJ3Qgc3VibWl0IGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbihzKTo8dWw+PC91bD48L2Rpdj4iKX19fShqUXVlcnkpLGZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX07JC52YWxpZGl0eS5vdXRwdXRzLnF1aWNrbWFpbD17c3RhcnQ6ZnVuY3Rpb24oKXt9LGVuZDpmdW5jdGlvbigpe30scmFpc2U6ZnVuY3Rpb24oYSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhLldhdGVybWFyayYmInVuZGVmaW5lZCIhPWEuYXR0cigiYWx0Iikpe2EuV2F0ZXJtYXJrKGEuYXR0cigiYWx0IiksIiNGRkJBQkEiKTt2YXIgYj1mdW5jdGlvbigpe2EuV2F0ZXJtYXJrKGEuYXR0cigiYWx0IikpfX1lbHNle2EuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiI2ZmN2U3OSIpO3ZhciBiPWZ1bmN0aW9uKCl7dG1wPXRtcD90bXA6InRyYW5zcGFyZW50IixhLmNzcygiYmFja2dyb3VuZC1jb2xvciIsdG1wKX19JChkb2N1bWVudCkub24oIm1vdXNlZG93biIsYil9LGNvbnRhaW5lcjpmdW5jdGlvbigpe319LCQudmFsaWRpdHkub3V0cHV0cy5wb3B1cD17c3RhcnQ6ZnVuY3Rpb24oKXskKGRvY3VtZW50KS5vZmYoInRvdWNoc3RhcnQgbW91c2Vkb3duIiwiLnZhbGlkaXR5LWVycm9uZW91cyIsYSl9LGVuZDpmdW5jdGlvbihiKXtyZXR1cm4gYi52YWxpZHx8JChkb2N1bWVudCkub24oInRvdWNoc3RhcnQgbW91c2Vkb3duIiwiLnZhbGlkaXR5LWVycm9uZW91cyIsYSksYn0scmFpc2U6ZnVuY3Rpb24oYSl7dmFyIGI9YS5jbG9zZXN0KCJmb3JtIikuaGFzQ2xhc3MoImpxdHJhbnNmb3JtZG9uZSIpO2EucGFyZW50KCkuaXMoImRpdiIpJiZiPyhhLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSxhLnBhcmVudCgpLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSk6YS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpLGEuaXMoIjpyYWRpbyIpJiZhLmlzKCIuanFUcmFuc2Zvcm1IaWRkZW4iKSYmYS5wYXJlbnQoKS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9fX0oKSxmdW5jdGlvbihhKXthLnZhbGlkaXR5Lm91dHB1dHMuY3NzT25seT17c3RhcnQ6ZnVuY3Rpb24oKXthKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpLnJlbW92ZUNsYXNzKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpfSxlbmQ6ZnVuY3Rpb24oYil7IWIudmFsaWQmJmEudmFsaWRpdHkuc2V0dGluZ3Muc2Nyb2xsVG8mJihsb2NhdGlvbi5oYXNoPWEoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcysiOmVxKDApIikuYXR0cigiaWQiKSl9LHJhaXNlOmZ1bmN0aW9uKGIpe2EoYikuYWRkQ2xhc3MoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcyl9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGIsYyl7Yi5sZW5ndGgmJnRoaXMucmFpc2UoYShiLmdldChiLmxlbmd0aC0xKSksYyl9fX0oalF1ZXJ5KTsKLyoqIC9tL2pzL21haW4uanMgKiovCnZhciBfX19kMmNfbWFpbmpzX2Nfb249IjIwMjYtMDQtMDkgMTI6MzA6MDQiOyd1c2Ugc3RyaWN0Jzt2YXIgJGpzY29tcD0kanNjb21wfHx7fTskanNjb21wLnNjb3BlPXt9OyRqc2NvbXAuQVNTVU1FX0VTNT0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfTUFQPSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9TRVQ9ITE7JGpzY29tcC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExOyRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7JGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9OwokanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOyRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJ4Iik7JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTPSEkanNjb21wLklTT0xBVEVfUE9MWUZJTExTfHwkanNjb21wLklTX1NZTUJPTF9OQVRJVkU7JGpzY29tcC5wb2x5ZmlsbHM9e307CiRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sPXt9OyRqc2NvbXAuUE9MWUZJTExfUFJFRklYPSIkanNjcCQiO3ZhciAkanNjb21wJGxvb2t1cFBvbHlmaWxsZWRWYWx1ZT1mdW5jdGlvbihhLGIpe3ZhciBjPSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2JdO2lmKG51bGw9PWMpcmV0dXJuIGFbYl07Yz1hW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YVtiXX07JGpzY29tcC5wb2x5ZmlsbD1mdW5jdGlvbihhLGIsYyxkKXtiJiYoJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz8kanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQoYSxiLGMsZCk6JGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQoYSxiLGMsZCkpfTsKJGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7Yz0kanNjb21wLmdsb2JhbDthPWEuc3BsaXQoIi4iKTtmb3IoZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKXJldHVybjtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9OwokanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5zcGxpdCgiLiIpO2E9MT09PWUubGVuZ3RoO2Q9ZVswXTtkPSFhJiZkIGluICRqc2NvbXAucG9seWZpbGxzPyRqc2NvbXAucG9seWZpbGxzOiRqc2NvbXAuZ2xvYmFsO2Zvcih2YXIgaz0wO2s8ZS5sZW5ndGgtMTtrKyspe3ZhciBoPWVba107aWYoIShoIGluIGQpKXJldHVybjtkPWRbaF19ZT1lW2UubGVuZ3RoLTFdO2M9JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFJiYiZXM2Ij09PWM\/ZFtlXTpudWxsO2I9YihjKTtudWxsIT1iJiYoYT8kanNjb21wLmRlZmluZVByb3BlcnR5KCRqc2NvbXAucG9seWZpbGxzLGUse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSk6YiE9PWMmJih2b2lkIDA9PT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSYmKGM9MUU5Kk1hdGgucmFuZG9tKCk+Pj4wLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT8KJGpzY29tcC5nbG9iYWwuU3ltYm9sKGUpOiRqc2NvbXAuUE9MWUZJTExfUFJFRklYK2MrIiQiK2UpLCRqc2NvbXAuZGVmaW5lUHJvcGVydHkoZCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfTskanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0PWZ1bmN0aW9uKCl7dmFyIGE9e2E6ITB9LGI9e307dHJ5e3JldHVybiBiLl9fcHJvdG9fXz1hLGIuYX1jYXRjaChjKXt9cmV0dXJuITF9OwokanNjb21wLnNldFByb3RvdHlwZU9mPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Y6JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldCgpP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbDskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg\/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChhKX19OwokanNjb21wLm1ha2VJdGVyYXRvcj1mdW5jdGlvbihhKXt2YXIgYj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGI\/Yi5jYWxsKGEpOiRqc2NvbXAuYXJyYXlJdGVyYXRvcihhKX07JGpzY29tcC5nZW5lcmF0b3I9e307JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF89ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIithKyIgaXMgbm90IGFuIG9iamVjdCIpO307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITE7dGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO3RoaXMueWllbGRSZXN1bHQ9dm9pZCAwO3RoaXMubmV4dEFkZHJlc3M9MTt0aGlzLmZpbmFsbHlBZGRyZXNzXz10aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlDb250ZXh0c189dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdGFydF89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUnVubmluZ18pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO3RoaXMuaXNSdW5uaW5nXz0hMH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RvcF89ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITF9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FcnJvckhhbmRsZXJfPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz10aGlzLmNhdGNoQWRkcmVzc198fHRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLnlpZWxkUmVzdWx0PWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtleGNlcHRpb246YSxpc0V4Y2VwdGlvbjohMH07dGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtyZXR1cm46YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtqdW1wVG86YX07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWI7cmV0dXJue3ZhbHVlOmF9fTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZEFsbD1mdW5jdGlvbihhLGIpe2E9JGpzY29tcC5tYWtlSXRlcmF0b3IoYSk7dmFyIGM9YS5uZXh0KCk7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oYyk7aWYoYy5kb25lKXRoaXMueWllbGRSZXN1bHQ9Yy52YWx1ZSx0aGlzLm5leHRBZGRyZXNzPWI7ZWxzZSByZXR1cm4gdGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1hLHRoaXMueWllbGQoYy52YWx1ZSxiKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihhKXt0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0VuZD1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEsYil7dGhpcy5jYXRjaEFkZHJlc3NfPWE7dm9pZCAwIT1iJiYodGhpcy5maW5hbGx5QWRkcmVzc189Yil9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZVRyeUJsb2NrPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1hO3RoaXMuY2F0Y2hBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJDYXRjaEJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO2E9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXy5leGNlcHRpb247dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO3JldHVybiBhfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIsYyl7Yz90aGlzLmZpbmFsbHlDb250ZXh0c19bY109dGhpcy5hYnJ1cHRDb21wbGV0aW9uXzp0aGlzLmZpbmFsbHlDb250ZXh0c189W3RoaXMuYWJydXB0Q29tcGxldGlvbl9dO3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1mdW5jdGlvbihhLGIpe2I9dGhpcy5maW5hbGx5Q29udGV4dHNfLnNwbGljZShifHwwKVswXTtpZihiPXRoaXMuYWJydXB0Q29tcGxldGlvbl89dGhpcy5hYnJ1cHRDb21wbGV0aW9uX3x8Yil7aWYoYi5pc0V4Y2VwdGlvbilyZXR1cm4gdGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCk7dm9pZCAwIT1iLmp1bXBUbyYmdGhpcy5maW5hbGx5QWRkcmVzc188Yi5qdW1wVG8\/KHRoaXMubmV4dEFkZHJlc3M9Yi5qdW1wVG8sdGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsKTp0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffWVsc2UgdGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5mb3JJbj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcihhKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcj1mdW5jdGlvbihhKXt0aGlzLm9iamVjdF89YTt0aGlzLnByb3BlcnRpZXNfPVtdO2Zvcih2YXIgYiBpbiBhKXRoaXMucHJvcGVydGllc18ucHVzaChiKTt0aGlzLnByb3BlcnRpZXNfLnJldmVyc2UoKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yLnByb3RvdHlwZS5nZXROZXh0PWZ1bmN0aW9uKCl7Zm9yKDswPHRoaXMucHJvcGVydGllc18ubGVuZ3RoOyl7dmFyIGE9dGhpcy5wcm9wZXJ0aWVzXy5wb3AoKTtpZihhIGluIHRoaXMub2JqZWN0XylyZXR1cm4gYX1yZXR1cm4gbnVsbH07JGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfPW5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0O3RoaXMucHJvZ3JhbV89YX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8ubmV4dCxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8ubmV4dF8oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5yZXR1cm5fPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7dmFyIGI9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXztpZihiKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8oInJldHVybiJpbiBiP2JbInJldHVybiJdOmZ1bmN0aW9uKGMpe3JldHVybnt2YWx1ZTpjLGRvbmU6ITB9fSxhLHRoaXMuY29udGV4dF8ucmV0dXJuKTt0aGlzLmNvbnRleHRfLnJldHVybihhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfWyJ0aHJvdyJdLGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy50aHJvd18oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS55aWVsZEFsbFN0ZXBfPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9YS5jYWxsKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8sYik7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oZCk7aWYoIWQuZG9uZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLGQ7dmFyIGU9ZC52YWx1ZX1jYXRjaChrKXtyZXR1cm4gdGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsLHRoaXMuY29udGV4dF8udGhyb3dfKGspLHRoaXMubmV4dFN0ZXBfKCl9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO2MuY2FsbCh0aGlzLmNvbnRleHRfLGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dFN0ZXBfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNvbnRleHRfLm5leHRBZGRyZXNzOyl0cnl7dmFyIGE9dGhpcy5wcm9ncmFtXyh0aGlzLmNvbnRleHRfKTtpZihhKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCkse3ZhbHVlOmEudmFsdWUsZG9uZTohMX19Y2F0Y2goYil7dGhpcy5jb250ZXh0Xy55aWVsZFJlc3VsdD12b2lkIDAsdGhpcy5jb250ZXh0Xy50aHJvd18oYil9dGhpcy5jb250ZXh0Xy5zdG9wXygpO2lmKHRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl8pe2E9dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXzt0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fPW51bGw7aWYoYS5pc0V4Y2VwdGlvbil0aHJvdyBhLmV4Y2VwdGlvbjtyZXR1cm57dmFsdWU6YS5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07CiRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe3JldHVybiBhLm5leHRfKGIpfTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe3JldHVybiBhLnRocm93XyhiKX07dGhpcy5yZXR1cm49ZnVuY3Rpb24oYil7cmV0dXJuIGEucmV0dXJuXyhiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTskanNjb21wLmdlbmVyYXRvci5jcmVhdGVHZW5lcmF0b3I9ZnVuY3Rpb24oYSxiKXtiPW5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGIpKTskanNjb21wLnNldFByb3RvdHlwZU9mJiZhLnByb3RvdHlwZSYmJGpzY29tcC5zZXRQcm90b3R5cGVPZihiLGEucHJvdG90eXBlKTtyZXR1cm4gYn07CiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3JldHVybiBhLm5leHQoZCl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gYS50aHJvdyhkKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBrKGgpe2guZG9uZT9kKGgudmFsdWUpOlByb21pc2UucmVzb2x2ZShoLnZhbHVlKS50aGVuKGIsYykudGhlbihrLGUpfWsoYS5uZXh0KCkpfSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IoYSgpKX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yUHJvZ3JhbT1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKG5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGEpKSl9OwpqUXVlcnkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBqUXVlcnl9O2pRdWVyeS5ldmVudC5zcGVjaWFsLnRvdWNoc3RhcnQ9e3NldHVwOmZ1bmN0aW9uKGEsYixjKXtiLmluY2x1ZGVzKCJub1ByZXZlbnREZWZhdWx0Iik\/dGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixjLHtwYXNzaXZlOiExfSk6dGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixjLHtwYXNzaXZlOiEwfSl9fTtqUXVlcnkuZXhwci5wc2V1ZG9zLnJlYWxseVZpc2libGU9ZnVuY3Rpb24oYSl7dHJ5e2lmKGE9PWRvY3VtZW50LmJvZHkpcmV0dXJuITA7dmFyIGI9alF1ZXJ5KGEpO3JldHVybiBiLmlzKCI6dmlzaWJsZSIpJiYiaGlkZGVuIiE9PWIuY3NzKCJ2aXNpYmlsaXR5IikmJjA8Yi5wYXJlbnQoIjpyZWFsbHlWaXNpYmxlIikubGVuZ3RofWNhdGNoKGMpe3JldHVybiBjb25zb2xlLmxvZyhjLm1lc3NhZ2UsYyksITF9fTsKQXJyYXkucHJvdG90eXBlLmZpbmR8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsImZpbmQiLHt2YWx1ZTpmdW5jdGlvbihhLGIpe2lmKG51bGw9PXRoaXMpdGhyb3cgVHlwZUVycm9yKCcidGhpcyIgaXMgbnVsbCBvciBub3QgZGVmaW5lZCcpO3ZhciBjPU9iamVjdCh0aGlzKSxkPWMubGVuZ3RoPj4+MDtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgVHlwZUVycm9yKCJwcmVkaWNhdGUgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Zm9yKHZhciBlPTA7ZTxkOyl7dmFyIGs9Y1tlXTtpZihhLmNhbGwoYixrLGUsYykpcmV0dXJuIGs7ZSsrfX0sY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk7CnZhciBpc0Z1bmN0aW9uPWE9PiJmdW5jdGlvbiI9PT10eXBlb2YgYSx0cmltPWE9PmEucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLGRlYnVnPWZ1bmN0aW9uKCl7aWYoZGVidWdFbmFibGVkKCkpe3ZhciBhPWNvbnNvbGUsYj1hcmd1bWVudHM7ImZ1bmN0aW9uIj09dHlwZW9mIGEubG9nJiZhLmxvZy5hcHBseShhLGIpfX0sZGVidWdFbmFibGVkPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQubG9jYXRpb24uaG9zdDt2YXIgYj1kb2N1bWVudC5jb29raWUubWF0Y2goL3Rlc3Rpbmc9KFteO10rKS9pKTtiPW51bGw9PWI\/ITE6YlsxXTtyZXR1cm4gYnx8L14oZGVhbGVyfGRlbW8pfGQyY21lZGlhXC5jYSQvLnRlc3QoYSkmJiJvZmYiIT1ifSxlbmFibGVEZWJ1Zz1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KCJ0ZXN0aW5nIiwib24iKX0sZGlzYWJsZURlYnVnPWZ1bmN0aW9uKCl7Q29va2llcy5zZXQoInRlc3RpbmciLCJvZmYiKX0sQWxlcnRCYXI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zZWN0aW9ucy50b0xvd2VyQ2FzZSgpLApjPWEuY3VycmVudC50b0xvd2VyQ2FzZSgpLGQ9JCgiLmhlYWRlci13cmFwcGVyIikubGVuZ3RoPyQoIi5oZWFkZXItd3JhcHBlciIpOiQoIiNtYWluRGl2IiksZT0kKCIjYWxlcnRNc2dDb250YWluZXIiKSxrPSQoImJvZHkiKSxoPSQoIi5BZGRlZFRvcExpbmtEaXYiKSxuPW5ldyBEYXRlO24uc2V0VGltZShuLmdldFRpbWUoKSszNkU1KTt2YXIgeD1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KCJhbGVydE1lc3NhZ2VDbG9zZWQiLDEsbiwiLyIpO2UuaGlkZSgpO2QuY3NzKHttYXJnaW5Ub3A6MH0pO2suY3NzKCJiYWNrZ3JvdW5kLXBvc2l0aW9uLXkiLCIiKTswPGgubGVuZ3RoJiZoLmNzcygibWFyZ2luLXRvcCIsIiIpfTstMTxiLmluZGV4T2YoYykmJiFDb29raWVzLmdldCgiYWxlcnRNZXNzYWdlQ2xvc2VkIikmJihlLmNzcyh7YmFja2dyb3VuZENvbG9yOmEuY29sb3J9KSwkKCIuY2xvc2UiLGUpLm9uKCJjbGljayIseCksZC5jc3MoIm1hcmdpbi10b3AiLGUuaGVpZ2h0KCkrInB4IiksCmsuY3NzKHsiYmFja2dyb3VuZC1wb3NpdGlvbi15IjplLmhlaWdodCgpKyJweCJ9KSwwPGgubGVuZ3RoJiZoLmNzcygibWFyZ2luLXRvcCIsZS5oZWlnaHQoKSsicHgiKSxlLnNob3coKSl9O2Z1bmN0aW9uIExlYWRHZW5BREYoYSxiLGMsZCxlLGssaCxuKXtpZih0eXBlb2YgY2FycHJvb2ZIYW5kbGVyKXJldHVybiBjYXJwcm9vZkhhbmRsZXIubGVhZEdlbi5hcHBseShjYXJwcm9vZkhhbmRsZXIsYXJndW1lbnRzKX0KZnVuY3Rpb24gcnVuSW1hZ2VQb3B1cEZpcmV3b3JrcygpeyJ1bmRlZmluZWQiIT10eXBlb2YgRmlyZXdvcmtUaW1lciYmKGltYWdlRmlyZXdvcmtzPSEwLEZpcmV3b3JrVGltZXIoImJnSW1hZ2UiLCJGRkZGRkYiLDIwMCwyMDApLEZpcmV3b3JrVGltZXIoImJnSW1hZ2UiLCJGRjAwMDAiLDM4MCwyNTAsMUUzKSxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiMDBmZjExIiw5MCwxNzAsMkUzKSxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiNDRjZGZmIiwzMjAsMjUwLDNFMywwLC44KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cnVuSW1hZ2VQb3B1cEZpcmV3b3JrcygpfSwxRTQpKX0KZnVuY3Rpb24gaGFuZGxlQWN0aW9uQ2xpY2soYSl7YT1hfHx3aW5kb3cuZXZlbnQ7YT1hLmN1cnJlbnRUYXJnZXR8fGEuc3JjRWxlbWVudDt2YXIgYj13aW5kb3cubG9jYXRpb24uaHJlZi5zdWJzdHJpbmcod2luZG93LmxvY2F0aW9uLmhyZWYubGFzdEluZGV4T2YoIi8iKSsxKSxjPSJ1c2VkIjt2YXIgZD0iIjtpZigtMT09d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiLWlkIikpe2Q9Yi5yZXBsYWNlKCIuaHRtbCIsIiIpLnNwbGl0KCItIik7aWYoMz5kLmxlbmd0aHx8LTE8Yi5pbmRleE9mKCJzZWFyY2giKXx8LTE8Yi5pbmRleE9mKCJmaW5kLSIpfHwtMTxiLmluZGV4T2YoInJlY2hlcmNoZSIpfHwtMTxiLmluZGV4T2YoInByaXgtIil8fC0xPGIuaW5kZXhPZigicHJpY2UtIil8fC0xPGIuaW5kZXhPZigiZXNzYWlzLXJvdXRpZXItIil8fC0xPGIuaW5kZXhPZigidGVzdC1kcml2ZS0iKXx8LTE8Yi5pbmRleE9mKCJ2ZWhpY3VsZS1lY2hhbmdlLSIpfHwtMTxiLmluZGV4T2YoInRyYWRlLWluLSIpfHwKLTE8Yi5pbmRleE9mKCJwbmV1cy1waWVjZXMtIil8fC0xPGIuaW5kZXhPZigiY2FyLXBhcnRzLSIpfHwtMTxiLmluZGV4T2YoInJlbmRlei12b3VzLSIpfHwtMTxiLmluZGV4T2YoIi1hcHBvaW50bWVudCIpfHwtMTxiLmluZGV4T2YoImNyZWRpdCIpfHwtMTxiLmluZGV4T2YoImZpbmFuY2VtZW50Iil8fC0xPGIuaW5kZXhPZigicHJlLWFwcHJvIil8fC0xPGIuaW5kZXhPZigibmV3LXdlc3QiKXx8LTE8Yi5pbmRleE9mKCJjb25maWRlbnRpYWxpdGUiKXx8LTE8Yi5pbmRleE9mKCJwcml2YWN5LXBvbGljeSIpfHwtMTxiLmluZGV4T2YoInRlcm1lcy1ldC1jb25kaXRpb25zIil8fC0xPGIuaW5kZXhPZigidGVybXMtYW5kLWNvbmRpdGlvbnMiKSlkPSIuaHRtbCI7ZWxzZXt2YXIgZT0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7InVuZGVmaW5lZCI9PXR5cGVvZiBkWzJdfHxlIT1kWzJdJiZlKzEhPWRbMl18fChjPSJuZXciKTtkPSIvIitifWQ9YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLnJlcGxhY2UoIi5odG1sIiwKZCl9ZWxzZXtzd2l0Y2goYS5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpKXtjYXNlICJUZXN0RHJpdmVBY3Rpb25Cb3giOmQ9JCgiI3Rlc3REcml2ZUZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiUHJpY2VBY3Rpb25Cb3giOmQ9JCgiI3ByaWNlUmVxdWVzdEZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiRXZhbEFjdGlvbkJveCI6ZD0kKCIjZXZhbENhckZvbGRlciIpLnZhbCgpK2I7YnJlYWs7Y2FzZSAiRmluYW5jZUFjdGlvbkJveCI6ZD0kKCIjRmluYW5jZUZvbGRlciIpLnZhbCgpK2I7YnJlYWs7ZGVmYXVsdDoidW5kZWZpbmVkIiE9dHlwZW9mICQoYSkuYXR0cigiZm9sZGVyIik\/ZD0kKGEpLmF0dHIoImZvbGRlciIpOiJ1bmRlZmluZWQiIT10eXBlb2YgJChhKS5hdHRyKCJ0YXJnZXR1cmkiKSYmKGQ9JChhKS5hdHRyKCJ0YXJnZXR1cmkiKSl9Q29va2llcy5zZXQoImZyb21kZXRhaWxzcGFnZSIsIjEiLG51bGwsIi8iKX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIGQmJm51bGwhPQpkJiYwPGQubGVuZ3RoKXtiPWQyY21lZGlhLmh0bWxGaWxlKCExLCEwKTtlPWIuc3BsaXQoIi0iKTt2YXIgaz0iIixoPSIiLG49IiI7MDxlLmxlbmd0aCYmKGs9ZVswXSk7MTxlLmxlbmd0aCYmKGg9ZVsxXSk7MjxlLmxlbmd0aCYmKG49ZVsyXSk7MDxrLmxlbmd0aCYmMDxoLmxlbmd0aCYmMDxuLmxlbmd0aCYmIWlzTmFOKG4pJiY0PT1uLnRvU3RyaW5nKCkubGVuZ3RoJiYtMTxkLmluZGV4T2YoIi5odG0iKSYmKGU9YS5nZXRBdHRyaWJ1dGUoImZvbGRlciIpLGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlJiZudWxsIT1lP2U6ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIvIikrMSksZD1kLnJlcGxhY2UoIi5odG1sIiwiLyIpK2IrIi5odG1sIik7JChhKS5oYXNDbGFzcygidHJhZGVpbkxpbmsiKSYmKDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoInRyYWRlaW52YWx1ZXMiKXx8MDxhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikuaW5kZXhPZigiaW5zdGFudG9mZmVyLmFjY3UtdHJhZGUuY29tIikpPwpzaG93VHJhZGVJblBvcHVwKGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKSk6KCJuZXciPT1jJiYoZD1kLnJlcGxhY2UoIm9jY2FzaW9uIiwibmV1ZiIpLnJlcGxhY2UoInVzZWQiLCJuZXciKSksd2luZG93LmxvY2F0aW9uLmhyZWY9ZCl9fQpmdW5jdGlvbiBvcGVuRmluYW5jZU11bHRpc3RlcEZvcm1PbkN1cnJlbnRQYWdlKGEsYixjLGQsZSxrLGgpe2EucHJldmVudERlZmF1bHQoKTthLnN0b3BQcm9wYWdhdGlvbigpO2I\/JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS52YWwoYik6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIuYnJhbmRlbWFpbCIpLnZhbCgpKToiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZW1ha2UiKS52YWwoKSk7Yz8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoYyk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoJCgiLm1vZGVsZW1haWwiKS52YWwoKSk6ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpJiYKJCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZW1vZGVsIikudmFsKCkpO2Q\/JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoZCk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIueWVhcmVtYWlsIikudmFsKCkpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmJCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoJCgiI3Bob25lbXllYXIiKS52YWwoKSk7ZT8kKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoZSk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKT8kKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoIiIpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmJCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZXN0b2NrbnVtYmVyIikudmFsKCkpOwprPyQoIiN0b3BjYXJpZE11bHRpc3RlcEZvcm0iKS52YWwoayk6Ik5FV0NBUkRFVEFJTFMiPT0kKCJib2R5IikuYXR0cigiaWQiKSYmJCgiI3RvcGNhcmlkTXVsdGlzdGVwRm9ybSIpLnZhbCgiIik7aCYmKGguc2VuZFRvJiYkKCIjRklOQU5DRV9GT1JNX1NFTkRUT19FTUFJTCIpLnZhbChoLnNlbmRUbyksaC5zZW5kVG9BZGYmJiQoIiNGSU5BTkNFX0ZPUk1fU0VORFRPQURGX0VNQUlMIikudmFsKGguc2VuZFRvQWRmKSxoLmRlYWxlck5hbWUmJiQoIiNGSU5BTkNFX0ZPUk1fREVBTEVSTkFNRSIpLnZhbChoLmRlYWxlck5hbWUpKTthPSJmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiOyQoIiNGaW5hbmNlX0Zvcm1UeXBlIikubGVuZ3RoJiYibXVsdGlzdGVwSW5zdGFudCI9PSQoIiNGaW5hbmNlX0Zvcm1UeXBlIikudmFsKCkmJiQoIiNmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoYT0iZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciIpOwokKCIjIithKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigxKX1mdW5jdGlvbiBvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoYSxiLGMsZCl7YS5wcmV2ZW50RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9uKCk7ZW1haWxIYW5kbGVyLm1ha2U9YjskKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoYik7ZW1haWxIYW5kbGVyLm1vZGVsPWM7JCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbChjKTtlbWFpbEhhbmRsZXIueWVhcj1kOyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbChkKTskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX12YXIgZDJjbWVkaWE9ZDJjbWVkaWF8fHt9OwpkMmNtZWRpYS5zY3JvbGxUbz1mdW5jdGlvbihhLGIsYyl7InVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz0xRTMpOyJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9MCk7JCgiaHRtbCwgYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDokKGEpLm9mZnNldCgpLnRvcC1ifSxjKTtyZXR1cm4hMX07CmQyY21lZGlhLnVybD17X3Nhbml0aXplOiEwLGRlc2FuaXRpemU6ZnVuY3Rpb24oYSl7aWYoInN0cmluZyI9PT10eXBlb2YgYSlyZXR1cm4gYS5yZXBsYWNlKC9fL2csIi0iKTtpZigib2JqZWN0Ij09PXR5cGVvZiBhKXtmb3IodmFyIGIgaW4gYSlhW2JdPXRoaXMuZGVzYW5pdGl6ZShhW2JdKTtyZXR1cm4gYX19LGdlbmVyYXRlOmZ1bmN0aW9uKCl7dmFyIGE9IiI7dGhpcy5fc2FuaXRpemUmJihhcmd1bWVudHM9dGhpcy5zYW5pdGl6ZShhcmd1bWVudHMpKTtmb3IoaT0wO2k8YXJndW1lbnRzLmxlbmd0aC0xO2krKylhKz1hcmd1bWVudHNbaV0rIi0iO3JldHVybiBhK2FyZ3VtZW50c1tpXSsiLmh0bWwifSxwYXJzZTpmdW5jdGlvbigpe3VybD1kZWNvZGVVUklDb21wb25lbnQoZG9jdW1lbnQuVVJMKTtzdHJQYXJhbT11cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZigiLyIpKTtvYmpQYXJhbT17bWFrZTpudWxsLG1vZGVsOm51bGwseWVhcjpudWxsLGlkOm51bGx9O2ZvdW5kPSExOwp2YXIgYTtudWxsIT0oYT1zdHJQYXJhbS5tYXRjaCgvXlwvKDIwWzAtOV17Mn18MTlbMC05XXsyfSktKFteLV0rLVteLVwuXSspKC4qXC5odG1sKS8pKSYmKHN0clBhcmFtPSIvIithWzJdKyItIithWzFdK2FbM10pO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oLiopLShcZHs0fSkoLWlkKFxkKikpPy5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLG9ialBhcmFtLm1vZGVsPWFbMl0sb2JqUGFyYW0ueWVhcj1hWzNdLG9ialBhcmFtLmlkPWFbNV0sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oLiopLShcZHs0fSkoLWNcZCopPy5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLG9ialBhcmFtLm1vZGVsPWFbMl0sb2JqUGFyYW0ueWVhcj1hWzNdLGZvdW5kPSEwKTthPXN0clBhcmFtLm1hdGNoKC9cLyhbXi9dKiktKFxkezR9KS5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT0KYVsxXSxvYmpQYXJhbS55ZWFyPWFbMl0sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oW14uXSopLmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sb2JqUGFyYW0ubW9kZWw9YVsyXSxmb3VuZD0hMCk7YT1zdHJQYXJhbS5tYXRjaCgvXC8oW14vXSopLmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sZm91bmQ9ITApO3RoaXMuX3Nhbml0aXplJiYob2JqUGFyYW09dGhpcy5kZXNhbml0aXplKG9ialBhcmFtKSk7cmV0dXJuIG9ialBhcmFtfSxzYW5pdGl6ZTpmdW5jdGlvbihhKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiBhLnJlcGxhY2UoLy0vZywiXyIpLnJlcGxhY2UoL1snIl0vZywiIik7aWYoIm9iamVjdCI9PT10eXBlb2YgYSl7Zm9yKHZhciBiIGluIGEpYVtiXT10aGlzLnNhbml0aXplKGFbYl0pO3JldHVybiBhfX0sc2FuaXRpemVSZWZlcmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1snImAoKTw+XFtcXXt9fCFdL2csCiIiKX19O2QyY21lZGlhLmdldEh0dHBUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOiI9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiYkKCIjdG9wZGVwbG95bWVudHR5cGUiKS5sZW5ndGgmJiJsaXZlIj09JCgiI3RvcGRlcGxveW1lbnR0eXBlIikudmFsKCk\/Imh0dHBzIjoiaHR0cCJ9O2QyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcj1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpfTtkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZD1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5zcGxpdCgiICIpLnJlZHVjZShmdW5jdGlvbihiLGMpe2M9ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGMpO3JldHVybiBiP2IrIiAiK2M6Y30sIiIpfTsKZDJjbWVkaWEuc2FmZVN0cmluZz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLnRleHRDb250ZW50PWE7cmV0dXJuIGIuaW5uZXJUZXh0fTsKZDJjbWVkaWEuaHRtbEZpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz13aW5kb3cubG9jYXRpb24uc2VhcmNoLmxlbmd0aCYmLTE8d2luZG93LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJwYXRoPSIpP3dpbmRvdy5sb2NhdGlvbi5zZWFyY2g6d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2M9Yy5zdWJzdHJpbmcoYy5sYXN0SW5kZXhPZigiLyIpKzEpO2M9ZDJjbWVkaWEuc2FmZVN0cmluZyhjKTt0cnl7dmFyIGQ9ZGVjb2RlVVJJQ29tcG9uZW50KGMpfWNhdGNoKGspe3ZhciBlPXsiJUMwIjoiJkFncmF2ZTsiLCIlQzEiOiImQWFjdXRlOyIsIiVDMiI6IiZBY2lyYzsiLCIlQzMiOiImQXRpbGRlOyIsIiVDNCI6IiZBdW1sOyIsIiVDNSI6IiZBcmluZzsiLCIlQzYiOiImQUVsaWc7IiwiJUM3IjoiJkNjZWRpbDsiLCIlQzgiOiImRWdyYXZlOyIsIiVDOSI6IiZFYWN1dGU7IiwiJUNBIjoiJkVjaXJjOyIsIiVDQiI6IiZFdW1sOyIsIiVDQyI6IiZJZ3JhdmU7IiwiJUNEIjoiJklhY3V0ZTsiLCIlQ0UiOiImSWNpcmM7IiwKIiVDRiI6IiZJdW1sOyIsIiVEMCI6IiZFVEg7IiwiJUQxIjoiJk50aWxkZTsiLCIlRDIiOiImT2dyYXZlOyIsIiVEMyI6IiZPYWN1dGU7IiwiJUQ0IjoiJk9jaXJjOyIsIiVENSI6IiZPdGlsZGU7IiwiJUQ2IjoiJk91bWw7IiwiJUQ4IjoiJk9zbGFzaDsiLCIlRDkiOiImVWdyYXZlOyIsIiVEQSI6IiZVYWN1dGU7IiwiJURCIjoiJlVjaXJjOyIsIiVEQyI6IiZVdW1sOyIsIiVERCI6IiZZYWN1dGU7IiwiJURFIjoiJlRIT1JOOyIsIiVERiI6IiZzemxpZzsiLCIlRTAiOiImYWdyYXZlOyIsIiVFMSI6IiZhYWN1dGU7IiwiJUUyIjoiJmFjaXJjOyIsIiVFMyI6IiZhdGlsZGU7IiwiJUU0IjoiJmF1bWw7IiwiJUU1IjoiJmFyaW5nOyIsIiVFNiI6IiZhZWxpZzsiLCIlRTciOiImY2NlZGlsOyIsIiVFOCI6IiZlZ3JhdmU7IiwiJUU5IjoiJmVhY3V0ZTsiLCIlRUEiOiImZWNpcmM7IiwiJUVCIjoiJmV1bWw7IiwiJUVDIjoiJmlncmF2ZTsiLCIlRUQiOiImaWFjdXRlOyIsIiVFRSI6IiZpY2lyYzsiLAoiJUVGIjoiJml1bWw7IiwiJUYwIjoiJmV0aDsiLCIlRjEiOiImbnRpbGRlOyIsIiVGMiI6IiZvZ3JhdmU7IiwiJUYzIjoiJm9hY3V0ZTsiLCIlRjQiOiImb2NpcmM7IiwiJUY1IjoiJm90aWxkZTsiLCIlRjYiOiImb3VtbDsiLCIlRjciOiImZGl2aWRlOyIsIiVGOCI6IiZvc2xhc2g7IiwiJUY5IjoiJnVncmF2ZTsiLCIlRkEiOiImdWFjdXRlOyIsIiVGQiI6IiZ1Y2lyYzsiLCIlRkMiOiImdXVtbDsiLCIlRkQiOiImeWFjdXRlOyIsIiVGRSI6IiZ0aG9ybjsiLCIlRkYiOiImeXVtbDsifTtkPWMucmVwbGFjZSgvJVswLTlBLUZdezJ9L2lnLGZ1bmN0aW9uKGgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZVtoXSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGgpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtuLnRleHRDb250ZW50PWVbaF07cmV0dXJuIG4uaW5uZXJUZXh0fSl9ZD1kLnN1YnN0cmluZygwLGQuaW5kZXhPZigiLmh0bSIpKTthJiYoZD1kLnJlcGxhY2UoLyAvZywKIl8iKS5yZXBsYWNlKC8nL2csIiIpLnJlcGxhY2UoIi5odG1sIiwiIikpO251bGwhPShhPWQubWF0Y2goL14oMTlbMC05XXsyfXwyMFswLTldezJ9KS0oW14tXSstW14tXSspKC4qKSQvKSkmJihkPWFbMl0rIi0iK2FbMV0rYVszXSwiRU5HTElTSCI9PSgiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iRU5HTElTSCI6IkZSRU5DSCIpJiZiJiYoZD1hWzFdKyItIithWzJdK2FbM10pKTtyZXR1cm4gZH07ZDJjbWVkaWEuaXNIb21lcGFnZT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4iLyI9PWF8fCIvZW5nLyI9PWF8fCIvZnIvIj09YX07ZDJjbWVkaWEucGFnZURlcGFydG1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT0kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTtyZXR1cm4iT1RIRVIiPT1hJiZkMmNtZWRpYS5pc0hvbWVwYWdlKCk\/IkhPTUVQQUdFIjphfTsKdmFyIGpzX2QyY19nZXRfdmFsPWpzX2QyY19nZXRfdmFsfHxmdW5jdGlvbihhKXt0cnl7cmV0dXJuKGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKT9lbC52YWx1ZToiIn1jYXRjaChiKXtyZXR1cm4gY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJTeXN0ZW0gZmFpbGVkIHdoaWxlIHJldHJpZXZpbmcgcmVwbGFjZW1lbnQgdmFsdWU6ICIrYi5tZXNzYWdlLGIpLGF9fTtTdHJpbmcucHJvdG90eXBlLm5vRDJDUmVwbGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlT2YoKX07CmQyY0JHQ2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczskLmV4dGVuZChiLGEpO3RoaXMuc2V0PWZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9ITEpO3ZhciBkPWIuYmdJbWdVcmwsZT1iLmJnSW1nUGF0aCxrPWIuYmdJbWdGaXhlZCxoPWIuYmdJbWdSZXNwb25zaXZlLG49Yi5tYWtlLHg9ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvLS9nLCIiKSx2PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkudG9Mb3dlckNhc2UoKToiZnJlbmNoIixmPSIiLGc9ITE7MCE9YyYmKG49Yy50b0xvd2VyQ2FzZSgpKTt2YXIgbT1jPSIiO24\/ZS5oYXNPd25Qcm9wZXJ0eShuKT8oYz1lW25dLG09a1tuXStoW25dLGc9ITApOmUuaGFzT3duUHJvcGVydHkoImFsbCIpPyhjPWUuYWxsLG09ay5hbGwraC5hbGwsZz0hMCk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmKGM9ZVt2XSxtPWtbdl0raFt2XSk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmCjA9PWcmJihjPWVbdl0sbT1rW3ZdK2hbdl0pO2MmJihiLmJnSW1nPWMuc3BsaXQoIi8iKS5wb3AoKSwkKCJib2R5IikuYXR0cigic3R5bGUiLCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyIrYysiJyk7IGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IittKSk7Zm9yKHZhciBsIGluIGQpe2lmKC0xIT14LmluZGV4T2YobCx4KSl7Zj1kW2xdO2JyZWFrfWlmKGw9PXYpe2Y9ZFtsXTticmVha319MD09Zi5sZW5ndGgmJihkLmhhc093blByb3BlcnR5KG4pP2Y9ZFtuXTpkLmhhc093blByb3BlcnR5KCJhbGwiKSYmKGY9ZC5hbGwpKTswPGYubGVuZ3RoJiYoZD0kKHdpbmRvdykud2lkdGgoKS8yLSQoIi53cmFwcGVyIikud2lkdGgoKS8yLGU9JCh3aW5kb3cpLndpZHRoKCkvMiskKCIud3JhcHBlciIpLndpZHRoKCkvMiwkKCIjYmdDbGljazEiKS5yZW1vdmUoKSwkKCIjYmdDbGljazIiKS5yZW1vdmUoKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMScgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrCmQrInB4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MHB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMicgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrZCsicHg7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7bGVmdDoiK2UrInB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCIjYmdDbGljazEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5yZWRpcmVjdChmKX0pLCQoIiNiZ0NsaWNrMiIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLnJlZGlyZWN0KGYpfSkpfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKGMpe2Iuc2V0KCl9O3RoaXMucmVkaXJlY3Q9ZnVuY3Rpb24oYyl7ImxpdmUiPT1iLmRlcGxveW1lbnRUeXBlJiYoZ2FUcmFjaygiX3RyYWNrRXZlbnQiLCJDbGlxdWVzIiwiSW1hZ2UtZGUtZm9uZCIsYi5iZ0ltZywxKSwiZnVuY3Rpb24iPT10eXBlb2YgYi5kMmNFdmVudCYmYi5kMmNFdmVudC5jYWxsKGIsCmIuYmdJbWcpKTt3aW5kb3cub3BlbihjKX07JCh3aW5kb3cpLm9uKCJyZXNpemUiLGIucmVzZXQpO3JldHVybiB0aGlzfTt2YXIgaW5qZWN0R29vZ2xlTWFwc0tleT1mdW5jdGlvbihhKXtsZXQgYj1udWxsO3JldHVybiBmdW5jdGlvbihjKXtpZihiKXJldHVybiBjKGIpO2EuYWpheCgiL2FqYXgvZ2V0R29vZ2xlTWFwc0tleSIpLmRvbmUoZnVuY3Rpb24oZCl7Yj0oZC5rZXk\/ZC5rZXk6IiIpLnJlcGxhY2UoL1teQS16MC05Xy1dL2csIiIpO2MoYil9KX19KGpRdWVyeSk7CmZ1bmN0aW9uIHJoc1Byb21vSW1hZ2UoYSl7dmFyIGI9dGhpcztiLmRhdGE9YTt2YXIgYz1bXSxkPS0xO2E9d2luZG93LmxvY2F0aW9uO2E9ZGVjb2RlVVJJQ29tcG9uZW50KGEucGF0aG5hbWUrYS5zZWFyY2gpLnRvTG93ZXJDYXNlKCk7Zm9yKHNlYXJjaCBpbiBiLmRhdGEpaWYoImRlZmF1bHQiPT1zZWFyY2h8fC0xIT1hLmluZGV4T2YoZGVjb2RlVVJJQ29tcG9uZW50KChzZWFyY2grIiIpLnRvTG93ZXJDYXNlKCkpKSlmb3IoaT0wO2k8Yi5kYXRhW3NlYXJjaF0ubGVuZ3RoO2krKyljLnB1c2goYi5kYXRhW3NlYXJjaF1baV0pO2Iucm90YXRlPWZ1bmN0aW9uKCl7KytkPmMubGVuZ3RoLTEmJihkPTApO3ZhciBlPWNbZF0saz0kKCI8aW1nIC8+IikuYXR0cih7c3JjOmUuaSxzdHlsZToid2lkdGg6MTAwJTsgbWF4LXdpZHRoOjI4MHB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGN1cnNvcjpwb2ludGVyOyIsYWx0OiIifSk7JCgiZGl2I3JpZ2h0UHJvbW9JbWFnZSIpLmh0bWwoayk7bnVsbCE9CmUudSYmMDxlLnUubGVuZ3RoJiYkKCJkaXYjcmlnaHRQcm9tb0ltYWdlIikuYXR0cigib25jbGljayIsIndpbmRvdy5sb2NhdGlvbiA9ICciK2UudSsiJyIpOyQoImRpdiNyaWdodFByb21vSW1hZ2UiKS5zaG93KCk7MSE9Yy5sZW5ndGgmJnNldFRpbWVvdXQoYi5yb3RhdGUsZS5kZWxheSl9OzA8Yy5sZW5ndGgmJmIucm90YXRlKCl9ZnVuY3Rpb24gY2xlYW5UZXh0KGEpe2E9YS5yZXBsYWNlKC9bXHg2MF0vZywiJyIpO2E9YS5yZXBsYWNlKC\/igJkvZywiJyIpO2E9YS5yZXBsYWNlKC9gL2csIiciKTtyZXR1cm4gYT1hLnJlcGxhY2UoL1tcdTIwMTld4oCZL2csIiciKX0KZnVuY3Rpb24gZW5jb2RlVGV4dChhKXt2YXIgYj1hO3RyeXtiPSQuYmFzZTY0LmVuY29kZShhKX1jYXRjaChrKXtjb25zb2xlLmxvZyhrLm1lc3NhZ2Usayk7YT0iIjtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9Yi5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7aWYoNDc8ZSYmNTg+ZXx8NjQ8ZSYmOTE+ZXx8OTY8ZSYmMTIzPmUpYSs9ZDtlbHNlIHRyeXskLmJhc2U2NC5lbmNvZGUoZCksYSs9ZH1jYXRjaChoKXt9fWI9JC5iYXNlNjQuZW5jb2RlKGEpfXJldHVybiBifWZ1bmN0aW9uIGNsZWFuQW5kRW5jb2RlVGV4dChhKXt0cnl7dmFyIGI9IiI7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhKXJldHVybiIiO2I9InN0cmluZyIhPXR5cGVvZiBhP2EudG9TdHJpbmcoKTphO2I9Y2xlYW5UZXh0KGIpO3JldHVybiBiPWVuY29kZVRleHQoYil9Y2F0Y2goYyl7cmV0dXJuIGNvbnNvbGUubG9nKGMubWVzc2FnZSxjKSxhfX0KZnVuY3Rpb24gRXhQaG9uZShhKXtzd2l0Y2goYS50eXBlKXtjYXNlICJtb3VzZWVudGVyIjokKCIuZXh0ZW5kZWRQaG9uZSIpLnNob3coKTticmVhaztjYXNlICJtb3VzZWxlYXZlIjokKCIuZXh0ZW5kZWRQaG9uZSIpLmhpZGUoKX19ZnVuY3Rpb24gZ2V0UmVzaXplZEltYWdlcygpe2RlYnVnRW5hYmxlZCgpO3JldHVybiExfWZ1bmN0aW9uIGNoYW5nZUhvbWVBY3Rpb25CYWNrSW1hZ2UoYSxiKXskKGEpLmNzcyh7YmFja2dyb3VuZDoidXJsKCIrYisiKSIsYmFja2dyb3VuZFJlcGVhdDoibm8tcmVwZWF0IixiYWNrZ3JvdW5kU2l6ZToiMjQwcHggMTIxcHgifSl9dmFyIF9fY3VycmVudFRocmVhc2hvbGQ7CmZ1bmN0aW9uIHRocmVhZGhvbGRTY3JvbGxQZXJjZW50KCl7X19jdXJyZW50VGhyZWFzaG9sZHx8KF9fY3VycmVudFRocmVhc2hvbGQ9KCQod2luZG93KS5oZWlnaHQoKSskKGRvY3VtZW50KS5zY3JvbGxUb3AoKSkvJChkb2N1bWVudCkuaGVpZ2h0KCksc2V0VGltZW91dCgiX19jdXJyZW50VGhyZWFzaG9sZCA9IG51bGwiLDMzMykpO3JldHVybiBfX2N1cnJlbnRUaHJlYXNob2xkfQpmdW5jdGlvbiB0aHJlc2hvbGRFeGVjKGEsYixjKXt2YXIgZD1udWxsO2M9Yz9jOltdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXt2YXIgZT1NYXRoLnJvdW5kKDFFNCphKS8xRTQ7MTxlJiYoZS89MTAwKTthPWZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBrPWZ1bmN0aW9uKCl7aWYodGhyZWFkaG9sZFNjcm9sbFBlcmNlbnQoKT5hKCkpe3RyeXtiLmFwcGx5KG51bGwsYyl9Y2F0Y2goaCl7Y29uc29sZS5sb2coaCl9ZD1jbGVhckludGVydmFsKGQpfX07JChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkPXNldEludGVydmFsKGssMzMzKX0sMkUzKX0pfQpmdW5jdGlvbiBzY3JvbGx1cEV4ZWMoYSl7dmFyIGI9bnVsbCxjPTAsZD1mdW5jdGlvbigpeyQod2luZG93KS5vbigic2Nyb2xsIixmdW5jdGlvbihlKXtlPSQodGhpcykuc2Nyb2xsVG9wKCk7ZTxjJiYoYS5jYWxsKG51bGwpLGI9Y2xlYXJJbnRlcnZhbChiKSk7Yz1lfSl9OyQoZnVuY3Rpb24oKXtiPXNldEludGVydmFsKGQsMzMzKX0pfWZ1bmN0aW9uIGluVmlld0V4ZWMoYSxiKXt0aHJlc2hvbGRFeGVjKGZ1bmN0aW9uKCl7dmFyIGM9JChhKTt0cnl7cmV0dXJuIWMubGVuZ3RofHxjLmlzKCI6aGlkZGVuIil8fDA9PWMub2Zmc2V0KCkudG9wPy45NTpjLm9mZnNldCgpLnRvcC8kKGRvY3VtZW50KS5oZWlnaHQoKX1jYXRjaChkKXtyZXR1cm4uOTV9fSxiLFthXSl9dmFyIGx0X0lFOT0iZnVuY3Rpb24iIT10eXBlb2YgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj8hMDohMSxsdF9JRTExPTA9PSFkb2N1bWVudC5hbGw7CmZ1bmN0aW9uIGlzSUUoKXt2YXIgYT1kb2N1bWVudC5kb2N1bWVudE1vZGU7dHJ5e2RvY3VtZW50LmRvY3VtZW50TW9kZT0iIn1jYXRjaChjKXt9dmFyIGI9Im51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fChuZXcgRnVuY3Rpb24oInJldHVybi8qQGNjX29uIUAqLyExIikpKCk7dHJ5e2RvY3VtZW50LmRvY3VtZW50TW9kZT1hfWNhdGNoKGMpe31yZXR1cm4gYn12YXIgdD0wO19fc3RhcnQ9ZnVuY3Rpb24oKXt0PShuZXcgRGF0ZSkuZ2V0VGltZSgpfTtfX3N0b3A9ZnVuY3Rpb24oKXt2YXIgYT0obmV3IERhdGUpLmdldFRpbWUoKTtjb25zb2xlLmxvZygidG9vayIsKGEtdCkvMUUzKX07dmFyIGFsZXJ0RmFsbGJhY2s9ITA7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZXx8InVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZS5sb2cpY29uc29sZT17fSxjb25zb2xlLmxvZz1hbGVydEZhbGxiYWNrP2Z1bmN0aW9uKGEpe306ZnVuY3Rpb24oKXt9OwpBcnJheS5wcm90b3R5cGUubWFwfHwoQXJyYXkucHJvdG90eXBlLm1hcD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCIgdGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkIik7dmFyIGU9T2JqZWN0KHRoaXMpLGs9ZS5sZW5ndGg+Pj4wO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpOzE8YXJndW1lbnRzLmxlbmd0aCYmKGM9Yik7dmFyIGg9QXJyYXkoayk7Zm9yKGQ9MDtkPGs7KXtpZihkIGluIGUpe3ZhciBuPWVbZF07bj1hLmNhbGwoYyxuLGQsZSk7aFtkXT1ufWQrK31yZXR1cm4gaH0pO0FycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYSxiKXtiPWJ8fDA7Zm9yKHZhciBjPXRoaXMubGVuZ3RoO2I8YztiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9KTsKQXJyYXkucHJvdG90eXBlLnJlZHVjZXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwicmVkdWNlIix7dmFsdWU6ZnVuY3Rpb24oYSl7aWYobnVsbD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnJlZHVjZSBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGEgZnVuY3Rpb24iKTt2YXIgYj1PYmplY3QodGhpcyksYz1iLmxlbmd0aD4+PjAsZD0wO2lmKDI8PWFyZ3VtZW50cy5sZW5ndGgpdmFyIGU9YXJndW1lbnRzWzFdO2Vsc2V7Zm9yKDtkPGMmJiEoZCBpbiBiKTspZCsrO2lmKGQ+PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpO2U9YltkKytdfWZvcig7ZDxjOylkIGluIGImJihlPWEoZSxiW2RdLGQsYikpLGQrKztyZXR1cm4gZX19KTsKQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihhKXt2YXIgYixjO2lmKG51bGw9PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkIik7dmFyIGQ9T2JqZWN0KHRoaXMpLGU9ZC5sZW5ndGg+Pj4wO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpOzE8YXJndW1lbnRzLmxlbmd0aCYmKGI9YXJndW1lbnRzWzFdKTtmb3IoYz0wO2M8ZTspe2lmKGMgaW4gZCl7dmFyIGs9ZFtjXTthLmNhbGwoYixrLGMsZCl9YysrfX0pO2Z1bmN0aW9uIGdldERhdGFBdHRyaWJ1dGVzKGEpe3JldHVybiBhLmRhdGFzZXR8fFtdLnNsaWNlLmNhbGwoYS5hdHRyaWJ1dGVzKS5yZWR1Y2UoZnVuY3Rpb24oYixjKXtyZXR1cm4vXmRhdGEtLy50ZXN0KGMubmFtZSkmJihiW2MubmFtZS5zdWJzdHIoNSldPWMudmFsdWUpLGJ9LHt9KX0KZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKGEpe2E9YS5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2E9KG5ldyBSZWdFeHAoIltcXD8mXSIrYSsiPShbXiYjXSopIikpLmV4ZWMobG9jYXRpb24uc2VhcmNoKTtyZXR1cm4gbnVsbD09YT8iIjpkZWNvZGVVUklDb21wb25lbnQoYVsxXS5yZXBsYWNlKC9cKy9nLCIgIikpfQpmdW5jdGlvbiBzaG93VHJhZGVJblBvcHVwKGEpe2lmKDA9PSQoIiN0cmFkZWluTGlua1BvcHVwQ29udGFpbmVyIikubGVuZ3RoKXt2YXIgYj0iNzUwcHgiLGM9IjU3MHB4IjsxPT0vTW9iaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmKGI9IjMwMHB4IixjPSI2MDBweCIpOyQoImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9InRyYWRlaW5MaW5rUG9wdXBDb250YWluZXIiIHN0eWxlPSJ3aWR0aDogJytiKyI7IGhlaWdodDogIitjKyciPjxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9kaXY+PGlmcmFtZSBzcmM9IicrYSsnIiBhbGxvd3RyYW5zcGFyZW5jeT0idHJ1ZSIgIGNsYXNzPSItdDAgLWwwIC13MTAwcCAtaDEwMHAiIGlkPSJ0cmFkZWluTGlua1BvcHVwSWZyYW1lIj48L2lmcmFtZT48L2Rpdj4nKX0kKCIjdHJhZGVpbkxpbmtQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9CmZ1bmN0aW9uIGN1cnJlbnRQcm9tb1JlZGlyZWN0KCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTtzd2l0Y2goITApe2Nhc2UgImZ1bmN0aW9uIj09dHlwZW9mIHNob3dQb3B1cFdpZGdldDpzaG93UG9wdXBXaWRnZXQoKTticmVhaztjYXNlICJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI1ZpZXdQcm9tb0FjdGlvbkJveExpbmsiKS5hdHRyKCJocmVmIik6JCgiI1ZpZXdQcm9tb0FjdGlvbkJveExpbmsiKVswXS5jbGljaygpO2JyZWFrO2Nhc2UgInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjcHJvbW90aW9uU2lkZVZCdXR0b24gYSIpLmF0dHIoImhyZWYiKTokKCIjcHJvbW90aW9uU2lkZVZCdXR0b24gYSIpWzBdLmNsaWNrKCk7YnJlYWs7Y2FzZSAidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNWaWV3Q3VzdG9tUHJvbW9BY3Rpb25Cb3hMaW5rIikuYXR0cigiaHJlZiIpOiQoIiNWaWV3Q3VzdG9tUHJvbW9BY3Rpb25Cb3hMaW5rIilbMF0uY2xpY2soKX19CmZ1bmN0aW9uIHNob3dOZXdSZWJhdGVDb2RlUG9wdXAoKXswIT0kKCIjZGlzYWJsZVBvcHVwcyIpLmxlbmd0aCYmMCE9JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKXx8JCgiI0ltYWdlUG9wdXBDb250YWluZXJfbmV3cmViYXRlIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX1mdW5jdGlvbiBzaG93TmV3QmVzdFByaWNlVmRwUG9wdXAoKXswIT0kKCIjZGlzYWJsZVBvcHVwcyIpLmxlbmd0aCYmMCE9JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKXx8JCgiI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0KZnVuY3Rpb24gcHJpbnRfcHJvbW9fcHJldihhKXt2YXIgYj0hMSxjPSQoYSkucGFyZW50cygiLnByb21vcyIpO2E9Yy5maW5kKCIucHJvbW8tdGl0bGUiKS5odG1sKCk7dmFyIGQ9Yy5maW5kKCIucHJvbW8tZGVzYyIpLmh0bWwoKTtjPWMuZmluZCgiLnByb21vLWltYWdlIGltZyIpLmF0dHIoImRhdGEtcHJpbnQtc3JjIik7JCgiI3Byb21vVG9QcmludCIpLnJlbW92ZSgpOyQoIiNwcm9tb1RvUHJpbnRXcmFwIikucmVtb3ZlKCk7JCgiYm9keSIpLmFwcGVuZCgnPGRpdiBjbGFzcz0idG9wcmludCIgaWQ9InByb21vVG9QcmludCI+PGltZyBib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxMDAlOyIgc3JjPSInK2MrJyIgYWx0PSIiIGlkPSJwcm9tb0ltZyI+PGJyPjxicj48Yj4nK2ErIjwvYj48YnI+IitkKyI8L2Rpdj4iKTskKCIjcHJvbW9JbWciKS5vbigibG9hZCIsZnVuY3Rpb24oKXtifHwkKCIjcHJvbW9Ub1ByaW50IikucHJpbnRFbGVtZW50KCk7Yj0hMH0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtifHwKJCgiI3Byb21vVG9QcmludCIpLnByaW50RWxlbWVudCgpO2I9ITB9LDFFMyk7cmV0dXJuITF9ZnVuY3Rpb24gZ2V0TXVsdGlwbGVBZGRyZXNzUGhvbmUoYSl7JCgiLm11bHRpQWRkcmVzc1Bob25lIikuc2xpZGVVcCgpO2E9JCgiLm11bHRpQWRkcmVzc1Bob25lIiwkKCQoYSkucGFyZW50KCkpKTskKGEpLmlzKCI6aGlkZGVuIik\/JChhKS5zbGlkZURvd24oKTokKGEpLnNsaWRlVXAoKX0KZnVuY3Rpb24gYWRkR2VuZXJhbFN0eWxlKCl7dmFyIGE9JCgiI0FETUlOX0dFTkVSQUxfQkdfQ09MT1IiKS52YWwoKSxiPSQoIiNkZWZhdWx0X2JsYWNrX3RleHQiKS52YWwoKTtpZigiIzAwMDAwMCIhPWJ8fCIjMDAwIiE9YikkKCIuVXNlZFZkcDJNb2JpbGUgI2JyZWFkY3J1bWJzIikuYWRkQ2xhc3MoInRleHRDb2xvciIpLCQoImkuZmEtZmFjZWJvb2stc3F1YXJlIikuYWRkQ2xhc3MoInRleHRDb2xvciIpLCQoIi51c2VkLWRldGFpbHMgLmRlZmF1bHQgZGl2OmZpcnN0IikuYWRkQ2xhc3MoInRleHRDb2xvciIpOyIjZmZmZmZmIiE9YiYmIiNmZmYiIT1ifHwkKCIuVXNlZFNycDJNb2JpbGUgLmRlZmF1bHQgLm1ha2VNb2RlbFllYXIiKS5hZGRDbGFzcygidGV4dENvbG9yVXNlZFNSUE1vYmlsZSIpOyIjZmZmZmZmIiE9YSYmKCQoIi5vbGQtZGV0YWlscy10ciIpLmFkZENsYXNzKCJiZ05vbmUiKSwkKCIjc3BlY1RpdGxlIikuYWRkQ2xhc3MoImJnTm9uZSIpLCQoIi5Vc2VkVmRwMk1vYmlsZSIpLmFkZENsYXNzKCJvdGhlckJHIikpfQpmdW5jdGlvbiBhcHBlbmRUcmFkZUJvb3N0QmFubmVyKCl7fWRvY1JlYWR5QXJyLnB1c2goKCk9PnthcHBlbmRUcmFkZUJvb3N0QmFubmVyKCk7YWRkR2VuZXJhbFN0eWxlKCl9KTsKalF1ZXJ5KGZ1bmN0aW9uKGEpe2EoIiNuYXYiKS5hZGRDbGFzcygibmF2Iik7KGZ1bmN0aW9uKCl7TENfQVBJPXdpbmRvdy5MQ19BUEl8fHt9O0xDX0FQSS5vbl90aWNrZXRfY3JlYXRlZD1mdW5jdGlvbihtKXt0cnl7KGZ1bmN0aW9uKGwpe251bGwhPWwmJihsPSc8aW1nIHNyYz0iaHR0cHM6Ly9zdGF0cy5kMmNtZWRpYS5jYS9zZXJ2aWNlL2NvbnRhY3QuZ2lmP3RjPScrKG0udGlja2V0X2lkKyImdT0iK2wpKyciIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtyaWdodDoxMHB4O3RvcDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlOyIgLz4nLGEoImJvZHkiKS5hcHBlbmQobCkpfSkoZnVuY3Rpb24oKXt2YXIgbD0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEP3dpbmRvdy5hY3RpdmVQcm9maWxlSUQ6bnVsbDtyZXR1cm4gbnVsbD09bD9Db29raWVzLmdldCgidXVpZCIpOmx9KCkpfWNhdGNoKGwpe319fSkoKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygb25Db25maXJtU3VibWl0KWEoIi5jb25maXJtX2h0bWwiKS5vbigic3VibWl0IiwKb25Db25maXJtU3VibWl0KTt0cnl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS5hdHRyKCJpZCIpKXt2YXIgYj0hMSxjPSExLGQ9ITEsZT0hMSxrPSExLGg9ITEsbj0xMDAseD0xPGEoIiNzbGlkZXIubml2b1NsaWRlciBhIikubGVuZ3RoPyEwOiExO2EoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgmJihoPWs9ZT1kPWM9Yj0hMCxuPWEoIiNCQU5ORVJfU0VBUkNIX0JBUl9WSURFT19PUEFDSVRZIikubGVuZ3RoP2EoIiNCQU5ORVJfU0VBUkNIX0JBUl9WSURFT19PUEFDSVRZIikudmFsKCk6MTAwKTtkb2NSZWFkeUFyci5wdXNoKCgpPT57c2V0VGltZW91dChmdW5jdGlvbigpe2EoIiNzbGlkZXIubml2b1NsaWRlciIpLm5pdm9TbGlkZXIoe2VmZmVjdDoiZmFkZSIsYmVmb3JlQ2hhbmdlOmZ1bmN0aW9uKCl7YSgiI3BhcmFsbGF4V3JhcHBlciIpLmVubGxheCgpfSxhZnRlckNoYW5nZTpmdW5jdGlvbigpe2EoIiNzbGlkZXIubml2b1NsaWRlciIpLnRyaWdnZXIoIm5pdm9TbGlkZXJDaGFuZ2VkIil9LAphZnRlckxvYWQ6ZnVuY3Rpb24oKXthKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS50cmlnZ2VyKCJuaXZvU2xpZGVyTG9hZGVkIik7YSgiI3BhcmFsbGF4V3JhcHBlciIpLmVubGxheCgpO2EoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgmJihhKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5zdG9wLGEoIi5uaXZvLWNvbnRyb2xOYXYiKS5oaWRlKCksYSgiLm5pdm8tZGlyZWN0aW9uTmF2IikuaGlkZSgpLHRoaXMuc3RhcnRZb3V0dWJlKCkpfSxtYW51YWxBZHZhbmNlOmIsdmlkZW9Pbkxvb3A6YyxoaWRlQ29udHJvbDpkLGhpZGVJbmZvOmUsZnVsbFdpZHRoOmssbXV0ZVZpZGVvOmgsdmlkZW9CcmlnaHRuZXNzOm4sY29udHJvbE5hdjp4LGRpcmVjdGlvbk5hdjp4LHNob3dEaXNjbGFpbWVyOiEwfSl9LDVFMyl9KX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIGEoIi5leHRlbmRlZFBob25lVHJpZ2dlciIpLmF0dHIoImlkIikpYSgiLmV4dGVuZGVkUGhvbmVUcmlnZ2VyIikub24oIm1vdXNlZW50ZXIiLApFeFBob25lKS5vbigibW91c2VsZWF2ZSIsRXhQaG9uZSk7dmFyIHY9ZnVuY3Rpb24oKXt9O2EoIi50cmFkZWluTGluayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZihhKHRoaXMpLmF0dHIoInRhcmdldFVSSSIpJiY2PGEodGhpcykuYXR0cigidGFyZ2V0VVJJIikubGVuZ3RoKXJldHVybiBzaG93VHJhZGVJblBvcHVwKGEodGhpcykuYXR0cigidGFyZ2V0VVJJIikpLCExfSk7YSgiLnVwX21lbnUiKS5vbmUoIm1vdXNlb3ZlciIsdik7c2V0VGltZW91dCh2LDFFNCk7KGZ1bmN0aW9uKCl7aWYoMCE9YSgiI01haW5NZW51X05FVyIpLmxlbmd0aCl7dmFyIHE9YSgiLmltZ19tZW51LnVwX21lbnUgdWwubmF2ID4gbGkjTWFpbk1lbnVfTkVXID4gdWwuc3ViID4gbGkuZmlyc3RJdGVtIikscj0hMTswIT1xLmxlbmd0aCYmKGEoIiNNYWluTWVudV9ORVciKS5maW5kKCIucHJpY2UiKS5jc3MoImN1cnNvciIsInBvaW50ZXIiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIHA9YSh0aGlzKS5zaWJsaW5ncygpLmZpcnN0KCk7CndpbmRvdy5sb2NhdGlvbj1wLmF0dHIoImhyZWYiKX0pLGEoIiNNYWluTWVudV9ORVciKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocik7cS5hZGRDbGFzcygiaG92ZXIiKX0pLHEuc2libGluZ3MoKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocik7cS5yZW1vdmVDbGFzcygiaG92ZXIiKX0pLm9uKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3I9c2V0VGltZW91dChmdW5jdGlvbigpe3EuYWRkQ2xhc3MoImhvdmVyIil9LDMwMCl9KSl9fSkoKTthKCJpbWdbZXJyb3JpbWddIikub24oImVycm9yIixmdW5jdGlvbigpe3ZhciBxPWEodGhpcyk7cS5hdHRyKCJzcmMiLHEuYXR0cigiZXJyb3JpbWciKSl9KTtjb25zdCBtPWEod2luZG93KSxsPWEoIi51cF9tZW51Iik7aWYobC5sZW5ndGgmJiFsLmhhc0NsYXNzKCJub2xvY2siKSl7bGV0IHE9bC5vZmZzZXQoKS50b3Ascj0hMTthKGRvY3VtZW50KS5vbigic2Nyb2xsIiwoKT0+e3J8fAood2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBwPW0uc2Nyb2xsVG9wKCksdz1sLmhhc0NsYXNzKCJmaXhlZCIpO3cmJnA8cT9sLnJlbW92ZUNsYXNzKCJmaXhlZCIpOiF3JiZwPnEmJmwuYWRkQ2xhc3MoImZpeGVkIik7KHA9bC5oYXNDbGFzcygiZml4ZWQiKSkmJmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpP2wuY3NzKHt0b3A6YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSsicHgifSk6bC5hdHRyKCJzdHlsZSIsIiIpO3c9YSgiLnB1bGxvdXRzLnNpZGVfdG9wOnZpc2libGUiKTtwJiYwPHcubGVuZ3RoPyh3LmZpbHRlcigiLnB1bGxvdXQtb3BlbmVkIikuY3NzKHt0b3A6bC5oZWlnaHQoKSsicHgifSksdy5maWx0ZXIoIi5wdWxsb3V0LWNsb3NlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgej1hKHRoaXMpLEQ9Z2V0X3Bvdyh6LmF0dHIoImlkIikpOyF6LmRhdGEoInBvc1kiKSYmei5kYXRhKCJwb3NZIiwtRC5wb3NpdGlvbik7CkQ9ei5kYXRhKCJwb3NZIikrbC5oZWlnaHQoKTt6LmNzcyh7dG9wOkQrInB4In0pfSkpOih3LmZpbHRlcigiLnB1bGxvdXQtb3BlbmVkIikuY3NzKHt0b3A6MH0pLHcuZmlsdGVyKCIucHVsbG91dC1jbG9zZWQiKS5kYXRhKCJwb3NZIikmJncuZmlsdGVyKCIucHVsbG91dC1jbG9zZWQiKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5jc3Moe3RvcDphKHRoaXMpLmRhdGEoInBvc1kiKSsicHgifSl9KSk7cj0hMX0pLHI9ITApfSl9dj1mdW5jdGlvbigpe2lmKDA9PWEoIiN0cmFkZWluQmFyRmxvYXQiKS5sZW5ndGgpe2EoImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9InRyYWRlaW5CYXJGbG9hdCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOiBmaXhlZDt3aWR0aDogMTAwJTt6LWluZGV4OiAxMDA7ZGlzcGxheTpub25lOyI+PC9kaXY+Jyk7YSgiI3RyYWRlSW5CYXIiKS5jbG9uZSghMCwhMCkuYXBwZW5kVG8oIiN0cmFkZWluQmFyRmxvYXQiKS50cmlnZ2VyKCJ0cmFkZUluQmFyLmNsb25lZCIpOwppZihhKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLmxlbmd0aCYmIjEiPT1hKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLnZhbCgpKXthKCIjdHJhZGVpbkJhckZsb2F0IikuY3NzKCJib3R0b20iLCItMnB4Iik7dmFyIHE9YSgiLmNlcnRpZmllZC1mb290ZXIiKS5oZWlnaHQoKSxyPWEoIiN0cmFkZWluQmFyRmxvYXQiKS5oZWlnaHQoKTthKCIuY2VydGlmaWVkLWZvb3RlciIpLmhlaWdodChxK3IpfWVsc2V7cT1hKCIjdHJhZGVpbkJhckZsb2F0Iik7cj1xLmNzczt2YXIgcD0iMSI9PWEoIiNtZW51TG9jayIpLnZhbCgpPzQ4OjA7MDxhKCIjYWxlcnRNc2dDb250YWluZXIiKS5sZW5ndGgmJmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpJiYocCs9YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSk7ci5jYWxsKHEsInRvcCIscCl9YSgiI3RyYWRlaW5CYXJGbG9hdCAuLXBiMTAiKS5jc3Moe2Rpc3BsYXk6ImlubGluZS10YWJsZSIsd2lkdGg6YSgiI21haW5EaXYiKS53aWR0aCgpfSl9cT0KIm5ld2NhcmRldGFpbC5odG1sIj09YSgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT1hKCIjUEFHRUlEIikudmFsKCk7cj0ibmV3Y2FyZGV0YWlsLmh0bWwiPT1hKCIjUEFHRUlEIikudmFsKCk\/ITA6ITE7cD0wPGEoIi5tYWluRGl2QWRqdXN0SGVhZGVyIikubGVuZ3RoPyEwOiExO2EoIiN0cmFkZUluQmFyIikuaXNJblZpZXdwb3J0KCl8fHE\/cT8ocj9hKCIubmV3VmRwQWN0aW9ucyIpLmlzQWJvdmVWaWV3cG9ydCgyMDApOmEoIi51c2VkVmRwQWN0aW9ucyIpLmlzQWJvdmVWaWV3cG9ydCgyMDApKT9hKCIjdHJhZGVpbkJhckZsb2F0IikuaGlkZSgpOmEoIiN0cmFkZWluQmFyRmxvYXQiKS5zaG93KCk6YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmhpZGUoKToocCYmIWEoIiN0cmFkZUluQmFyIikuaXNBYm92ZVZpZXdwb3J0KDIwMCl8fCFwKSYmYSgiI3RyYWRlaW5CYXJGbG9hdCIpLnNob3coKTswPGEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmxlbmd0aCYmYSgiI2FsZXJ0TXNnQ29udGFpbmVyIikuaXMoIjpoaWRkZW4iKSYmCjQ4IT1hKCIjdHJhZGVpbkJhckZsb2F0IikuY3NzKCJ0b3AiKSYmYSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS5sZW5ndGgmJiIxIiE9YSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS52YWwoKSYmYSgiI3RyYWRlaW5CYXJGbG9hdCIpLmNzcygidG9wIiw0OCl9O2Z1bmN0aW9uIHUocSxyKXt2YXIgcD0wO3JldHVybiBmdW5jdGlvbigpe2NsZWFyVGltZW91dChwKTtwPXNldFRpbWVvdXQocSxyKX19aWYoYSgiI3RyYWRlSW5CYXIiKS5sZW5ndGgpYShkb2N1bWVudCkub24oInNjcm9sbCIsdSh2LDEwMCkpO3ZhciBmPWEoInVsLm5hdiA+IGxpID4gdWwgPiBsaSA+IHVsIik7Zi5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5wYXJlbnQoKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24ocSl7YSgidWwiLHRoaXMpLnNjcm9sbFRvcCgwKX0pfSk7Zi5vbigiRE9NTW91c2VTY3JvbGwgbW91c2V3aGVlbCIsZnVuY3Rpb24ocSl7dmFyIHI9YSh0aGlzKSxwPXRoaXMuc2Nyb2xsVG9wLHc9dGhpcy5zY3JvbGxIZWlnaHQsCno9dz50aGlzLmNsaWVudEhlaWdodCxEPXIuaGVpZ2h0KCksQz1xLm9yaWdpbmFsRXZlbnQ7Qz0iRE9NTW91c2VTY3JvbGwiPT1xLnR5cGU\/LTQwKkMuZGV0YWlsOkMud2hlZWxEZWx0YTt2YXIgRT0wPEM7aWYoIXopcmV0dXJuITA7ej1mdW5jdGlvbihHKXtyLnNjcm9sbFRvcChHKTtxLnN0b3BQcm9wYWdhdGlvbigpO3EucHJldmVudERlZmF1bHQoKTtxLnJldHVyblZhbHVlPSExO3JldHVybiEwfTtyZXR1cm4hKCFFJiYtQz53LUQtcCYmeih3KXx8RSYmQz5wJiZ6KDApKX0pfWNhdGNoKG0pe2NvbnNvbGUubG9nKCJFcnJvciIsbSl9aWYoYSgiLnVwX21lbnUuaW1nX21lbnUiKS5sZW5ndGgpe2Y9YSgiLmltZ19zdHlsZV8xICNNYWluTWVudV9ORVciKS5jaGlsZHJlbigiLnN1YiIpO3ZhciBnPWYuZmluZCgiLmZpcnN0SXRlbSIpLmZpbmQoIi5zdWIiKTtmLmNoaWxkcmVuKCJsaSIpLm9uKHttb3VzZWVudGVyOmZ1bmN0aW9uKCl7IWEodGhpcykuaXMoIi5oYXNTdWIiKSYmZy5oaWRlKCl9LAptb3VzZWxlYXZlOmZ1bmN0aW9uKCl7IWEodGhpcykuaXMoIi5oYXNTdWIiKSYmZy5zaG93KCl9fSl9YSgiLm51bWVyaWMiKS5vbigia2V5cHJlc3MiLGZ1bmN0aW9uKG0pe2lmKDQ4Pm0ua2V5Q29kZXx8NTc8bS5rZXlDb2RlKW0ucmV0dXJuVmFsdWU9ITF9KTtpZigib250b3VjaHN0YXJ0ImluIHdpbmRvd3x8d2luZG93LkRvY3VtZW50VG91Y2gmJmRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaClhKCIubGVmdF9ib3ggYSIpLm9uKCJ0YXAiLGZ1bmN0aW9uKG0pe209YSh0aGlzKTtpZigicmFkaW8iIT1tLmF0dHIoInR5cGUiKSYmbS5hdHRyKCJvbmNsaWNrIikpcmV0dXJuIG0udHJpZ2dlcigiY2xpY2siKSwhMX0pLGEoIi5oYXNJdGVtcyA+IGEsIC5oYXNTdWIgPiBhIikub24oImNsaWNrIixmdW5jdGlvbihtKXtpZigiY2xpY2siIT1tLnR5cGUpcmV0dXJuITA7dmFyIGw9YSh0aGlzKS5kYXRhKCJjbGlja0NvdW50Iik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBsfHwiMCI9PQpsKWEoIi5uYXYgbGkuaGFzSXRlbXMgYSwgLm5hdiBsaS5oYXNTdWIgYSIpLmRhdGEoImNsaWNrQ291bnQiLCIwIiksYSh0aGlzKS5kYXRhKCJjbGlja0NvdW50IiwiMSIpLG0ucHJldmVudERlZmF1bHQoKTtlbHNlIHJldHVybiBkb2N1bWVudC5sb2NhdGlvbj1hKHRoaXMpLmF0dHIoImhyZWYiKSxhKHRoaXMpLmRhdGEoImNsaWNrQ291bnQiLCIwIiksITB9KTthKCJkaXYuZ21hcC1wbGFjZWhvbGRlciIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbT1hKHRoaXMpLGw9bS5kYXRhKCk7aW5qZWN0R29vZ2xlTWFwc0tleShmdW5jdGlvbih1KXt1PSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQvdjEvcGxhY2U\/IitbInE9IitlbmNvZGVVUklDb21wb25lbnQobC5wbGFjZUlkKSwiem9vbT0iK2wuem9vbSwibGFuZ3VhZ2U9IitsLmxhbmd1YWdlLCJyZWdpb249Q0EiLCJrZXk9Iit1XS5qb2luKCImIik7bS5odG1sKCc8aWZyYW1lIHNyYz0iJyt1KyciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjQwMCIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6MCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPicpfSl9KTsKdHJ5e2EoIi5hZGR0dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbT1bIm9uQ2xvc2UiLCJvblllcyIsIm9uTm8iXSxsPWEodGhpcyksdT1sLmRhdGEoKSxxPXt9LHI7Zm9yKHIgaW4gdSlxW3JdPWZ1bmN0aW9uKHAsdyl7cmV0dXJuLTEhPW0uaW5kZXhPZihwKT9mdW5jdGlvbigpe2V2YWwodyl9Ond9KHIsdVtyXSk7bC5kYXJrVG9vbHRpcChxKX0pfWNhdGNoKG0pe2NvbnNvbGUubG9nKG0ubWVzc2FnZSxtKX19KTtmdW5jdGlvbiBjaGlsZE9mKGEsYil7Zm9yKDsidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiZudWxsIT09YSYmKGE9YS5wYXJlbnROb2RlKSYmYSE9PWI7KTtyZXR1cm4hIWF9dmFyIE1lbnVIYW5kbGVyOwooZnVuY3Rpb24oKXt2YXIgYTtNZW51SGFuZGxlcj1mdW5jdGlvbiBjKCl7ZnVuY3Rpb24gZChmLGcpe2xldCBtPShnLm1vZGVsfHwiIikudHJpbSgpLGw9KGcudHJpbXx8IiIpLnRyaW0oKTtmPWYucmVwbGFjZSgiIyNNRU5VWUVBUiMjIixnLnllYXIpO20mJmwmJihtLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobC50b0xvd2VyQ2FzZSgpKT9sPSIiOmwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhtLnRvTG93ZXJDYXNlKCkpJiYobT0iIikpO3JldHVybiBmPWYucmVwbGFjZSgiIyNNRU5VTU9ERUwjIyIsbSkucmVwbGFjZSgiIyNNRU5VVFJJTSMjIixsKS5yZXBsYWNlKC8gKy9nLCIgIil9aWYoYSlyZXR1cm4gYTthPXRoaXM7dGhpcy5nZXRTcGVjVXJsPWZ1bmN0aW9uKCl7dmFyIGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCl8fCIwIj09PSQoIiNuZXdfdHJhbnNsYXRlZF90aXRsZXMiKS52YWwoKT8iZW4iOiJmciI7IjAiPT0kKCIjbXVsdGktbGFuZ3VhZ2UiKS52YWwoKSYmCihmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIik7cmV0dXJuIi9qc29uL25ld2NhcnNkZXRhaWxzXyIrZisiLmpzb24ifTt0aGlzLm1lbnU9JCgiLm1lbnU1LCAubWVudTYsIC5tZW51NywgLm1lbnU4LCAubWVudTksIC5tZW51MTAiKTt0aGlzLnNwZWNzQWpheD0kLmdldCh0aGlzLmdldFNwZWNVcmwoKSk7dGhpcy5jYXJzPXtkZXRhaWxzOnt9LGZpbmRCeUlkOmZ1bmN0aW9uKGYpe3ZhciBnPXt9OyQuZWFjaCh0aGlzLmRldGFpbHMubWFrZXMsZnVuY3Rpb24obSxsKXskLmVhY2gobC5tb2RlbHMsZnVuY3Rpb24odSxxKXsxPT1xLmlzc2VyaWVzfHwxPT1xLmlzQ2xhc3M\/JC5lYWNoKHEuc3R5bGVzLGZ1bmN0aW9uKHIscCl7cC5pZD09ZiYmKGc9cCl9KTpxLmlkPT1mJiYoZz1xKX0pOyQuaXNFbXB0eU9iamVjdChnKX0pO3JldHVybiBnfX07dGhpcy5zcGVjc0FqYXguZG9uZShmdW5jdGlvbihmKXtjKCkuY2Fycy5kZXRhaWxzPWZ9KTt0aGlzLnBvc2l0aW9ucz0KZnVuY3Rpb24oZixnLG0pe3JldHVybnt0YXJnZXQ6JChnLmN1cnJlbnRUYXJnZXQpLHNlY29uZExldmVsTWVudTpudWxsLHdpbmRvd0hlaWdodDpudWxsLHNlY29uZExldmVsTWVudVRvcDpudWxsLHNlY29uZExldmVsTWVudUJvdHRvbTpudWxsLHN1Yk1lbnVJdGVtVG9wOm51bGwsc3ViTWVudUl0ZW1IZWlnaHQ6bnVsbCxzdWJNZW51SXRlbUJvdHRvbTpudWxsLGJvdHRvbUFsaWduOm51bGwsc3BlY3M6bnVsbCxzcGVjc1RvcDpudWxsLHNwZWNzSGVpZ2h0Om51bGwsc3BlY3NCb3R0b206bnVsbCxjdXN0b21TZWNvbmRMZXZlbE1lbnU6bnVsbCxyb3VuZDpmdW5jdGlvbihsKXtyZXR1cm4rKE1hdGgucm91bmQobCsiZSsyIikrImUtMiIpfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLnNlY29uZExldmVsTWVudT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jdXN0b21TZWNvbmRMZXZlbE1lbnU\/dGhpcy5jdXN0b21TZWNvbmRMZXZlbE1lbnUoKTp0aGlzLnRhcmdldC5maW5kKCJ1bC5zdWI6Zmlyc3QiKTsKdHJ5e3RoaXMud2luZG93SGVpZ2h0PSQod2luZG93KS5oZWlnaHQoKSx0aGlzLnNlY29uZExldmVsTWVudVRvcD10aGlzLnNlY29uZExldmVsTWVudS5wb3NpdGlvbigpLnRvcCx0aGlzLnNlY29uZExldmVsTWVudUhlaWdodD10aGlzLnNlY29uZExldmVsTWVudS5vdXRlckhlaWdodCgpLHRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tPXRoaXMucm91bmQodGhpcy5zZWNvbmRMZXZlbE1lbnVUb3ArdGhpcy5zZWNvbmRMZXZlbE1lbnVIZWlnaHQpfWNhdGNoKGwpe310cnl7dGhpcy5zdWJNZW51SXRlbVRvcD0kKGYpLnBvc2l0aW9uKCkudG9wLHRoaXMuc3ViTWVudUl0ZW1IZWlnaHQ9JChmKS5vdXRlckhlaWdodCgpLHRoaXMuc3ViTWVudUl0ZW1Cb3R0b209dGhpcy5yb3VuZCh0aGlzLnN1Yk1lbnVJdGVtSGVpZ2h0K3RoaXMuc3ViTWVudUl0ZW1Ub3ApLHRoaXMuYm90dG9tQWxpZ249dGhpcy5yb3VuZCgkKGYpLnBhcmVudCgidWwiKS5vdXRlckhlaWdodCgpKyQoZikucGFyZW50KCJ1bCIpLm9mZnNldCgpLnRvcC0KdGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20pfWNhdGNoKGwpe310cnl7dGhpcy5zcGVjcz1tLHRoaXMuc3BlY3NUb3A9dGhpcy5zcGVjcy5wb3NpdGlvbigpLnRvcCx0aGlzLnNwZWNzSGVpZ2h0PXRoaXMuc3BlY3Mub3V0ZXJIZWlnaHQoKSx0aGlzLnNwZWNzQm90dG9tPXRoaXMucm91bmQodGhpcy5zcGVjc1RvcCt0aGlzLnNwZWNzSGVpZ2h0KX1jYXRjaChsKXt9fSxhZGp1c3RTZWNvbmRMZXZlbDpmdW5jdGlvbigpe2lmKC42NSp0aGlzLndpbmRvd0hlaWdodDx0aGlzLnNlY29uZExldmVsTWVudUhlaWdodCl7aWYodGhpcy5zZWNvbmRMZXZlbE1lbnUuaGFzQ2xhc3MoImxvY2F0aW9uLWRldGFpbHMiKSlyZXR1cm47dGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQXR0cigic3R5bGUiKTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MoImhlaWdodCIsLjY1KnRoaXMud2luZG93SGVpZ2h0KTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MoeyJvdmVyZmxvdy15IjoiYXV0byIsd2lkdGg6IjQwMHB4IiwKcG9zaXRpb246InN0YXRpYyIsZGlyZWN0aW9uOiJydGwifSk7dGhpcy5zZWNvbmRMZXZlbE1lbnUuZmluZCgiPiBsaSIpLmNzcyh7ZGlyZWN0aW9uOiJsdHIifSk7aWYoMD09JChmKS5jaGlsZHJlbigiLm1haW5tZW51LXN1Ym1lbnUiKS5sZW5ndGgpe3ZhciBsPSQoIjxkaXYvPiIpO2wuYWRkQ2xhc3MoIm1haW5tZW51LXN1Ym1lbnUiKTtsLmRldGFjaCgpLmFwcGVuZCh0aGlzLnNlY29uZExldmVsTWVudSk7dGhpcy50YXJnZXQuYXBwZW5kKGwpfXRoaXMudXBkYXRlKCl9aWYodGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b208dGhpcy5zdWJNZW51SXRlbVRvcCkkKGYpLmFkZENsYXNzKCJhbGlnbi1sZXZlbCIpLHRoaXMudXBkYXRlKCksbD10aGlzLnNlY29uZExldmVsTWVudUJvdHRvbTwkKGYpLnBhcmVudCgidWwiKS5vdXRlckhlaWdodCgpPyQoZikub3V0ZXJIZWlnaHQoKSskKGYpLnBvc2l0aW9uKCkudG9wLXRoaXMuc2Vjb25kTGV2ZWxNZW51SGVpZ2h0OiQoZikucGFyZW50KCJ1bCIpLm91dGVySGVpZ2h0KCkrCiQoZikucGFyZW50KCJ1bCIpLnBvc2l0aW9uKCkudG9wLXRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tLHRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygidHJhbnNmb3JtIiwidHJhbnNsYXRlWSgiK2wrInB4KSIpO2Vsc2UgaWYodGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20+dGhpcy5zdWJNZW51SXRlbVRvcCYmdGhpcy5zdWJNZW51SXRlbUJvdHRvbT50aGlzLnNlY29uZExldmVsTWVudUJvdHRvbSl7bD0wPnBhcnNlSW50KHRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygibGVmdCIpLnJlcGxhY2UoInB4IiwiIikpPyJyaWdodCI6ImxlZnQiO3ZhciB1PXt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoIitNYXRoLmFicyh0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbS10aGlzLnN1Yk1lbnVJdGVtQm90dG9tKSt0aGlzLnNlY29uZExldmVsTWVudVRvcCsicHgpIn07InJpZ2h0IiE9bCYmKHVbbF09dGhpcy50YXJnZXQucG9zaXRpb24oKS5sZWZ0K3RoaXMudGFyZ2V0LndpZHRoKCkpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcyh1KX1lbHNlIHRoaXMuc2Vjb25kTGV2ZWxNZW51VG9wPgp0aGlzLnN1Yk1lbnVJdGVtVG9wJiZ0aGlzLnNlY29uZExldmVsTWVudS5jc3MoInRyYW5zZm9ybSIsInRyYW5zbGF0ZVkoIit0aGlzLnN1Yk1lbnVJdGVtVG9wKyJweCkiKX0sYWRqdXN0SG9yaXpvbnRhbDpmdW5jdGlvbigpe3RoaXMuc2Vjb25kTGV2ZWxNZW51Lmhhc0NsYXNzKCJpbnZpc2libGUiKXx8dGhpcy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoImludmlzaWJsZSIpO3ZhciBsPXRoaXMuaXNJblZpZXdwb3J0KHRoaXMuc2Vjb25kTGV2ZWxNZW51WzBdKSx1PTA+cGFyc2VJbnQodGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKCJsZWZ0IikucmVwbGFjZSgicHgiLCIiKSk\/InJpZ2h0IjoibGVmdCI7bHx8ImxlZnQiIT09dXx8KHRoaXMuc2Vjb25kTGV2ZWxNZW51Lmhhc0NsYXNzKCJMMTAwIikmJnRoaXMuc2Vjb25kTGV2ZWxNZW51LnJlbW92ZUNsYXNzKCJMMTAwIiksdGhpcy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoIlIxMDAiKSk7bD17fTtsW3VdPXRoaXMudGFyZ2V0LnBvc2l0aW9uKCkubGVmdCsKdGhpcy50YXJnZXQud2lkdGgoKTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MobCk7dGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoImludmlzaWJsZSIpfSxpc0luVmlld3BvcnQ6ZnVuY3Rpb24obCl7bD1sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiAwPD1sLnRvcCYmMDw9bC5sZWZ0JiZsLmJvdHRvbTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkmJmwucmlnaHQ8PSh3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKX19fTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsInVsLm5hdiA+IGxpIixmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpO2cudXBkYXRlKCk7Zy5zZWNvbmRMZXZlbE1lbnVCb3R0b20tJCh3aW5kb3cpLnNjcm9sbFRvcCgpPmcud2luZG93SGVpZ2h0P2cuc2Vjb25kTGV2ZWxNZW51LmFkZENsYXNzKCJzbGltLXN1Ym1lbnUiKToKZy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoInNsaW0tc3VibWVudSIpOyJtb3VzZWxlYXZlIiE9PWYudHlwZSYmKGY9JCh0aGlzKS5maW5kKCI+IHVsIiksZi5sZW5ndGgmJiFmLmRhdGEoImNhbGN1bGF0ZWQiKSYmKGc9JCh0aGlzKS5vdXRlcldpZHRoKCksZi5vdXRlcldpZHRoKCk8ZyYmZi5jc3MoIndpZHRoIixnKzEpLGYuZGF0YSgiY2FsY3VsYXRlZCIsITApKSl9KTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSIsZnVuY3Rpb24oZil7dmFyIGc9YS5wb3NpdGlvbnModGhpcyxmKTswIT0kKGYuY3VycmVudFRhcmdldCkuZmluZCgidWwuc3ViID4gbGkiKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9Zi50eXBlJiYoZy51cGRhdGUoKSxnLmFkanVzdFNlY29uZExldmVsKCkpfSk7dGhpcy5tZW51Lm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLCIjTWFpbk1lbnVfREVBTEVSU0hJUFMgPiB1bC5zdWIgbGkubG9jYXRpb24tbmFtZXMiLApmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpLG09JChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIik7Zy5jdXN0b21TZWNvbmRMZXZlbE1lbnU9ZnVuY3Rpb24oKXtyZXR1cm4gbX07MCE9JChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIikubGVuZ3RoJiYibW91c2VsZWF2ZSIhPWYudHlwZSYmKCQoZi5jdXJyZW50VGFyZ2V0KS5maW5kKCIubG9jYXRpb24tZGV0YWlscyIpLm9uKCJsYXp5bG9hZGVkIixmdW5jdGlvbihsKXtnLmN1c3RvbVNlY29uZExldmVsTWVudSgpLmF0dHIoInN0eWxlIixudWxsKTtnLnVwZGF0ZSgpO2cuYWRqdXN0SG9yaXpvbnRhbCgpO2cuYWRqdXN0U2Vjb25kTGV2ZWwoKX0pLGcuY3VzdG9tU2Vjb25kTGV2ZWxNZW51KCkuYXR0cigic3R5bGUiLG51bGwpLGcudXBkYXRlKCksZy5hZGp1c3RIb3Jpem9udGFsKCksZy5hZGp1c3RTZWNvbmRMZXZlbCgpKX0pO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwKJyNNYWluTWVudV9UQUJfQ09NTUVSQ0lBTCA+IHVsLnN1YiA+IFtkYXRhLWlkPSJTVUJfVEFCX0NPTU1FUkNJQUxfQ09NTUVSIl0nLGZ1bmN0aW9uKGYpe2Y9YS5wb3NpdGlvbnModGhpcyxmKTtmLnVwZGF0ZSgpO2YuYWRqdXN0U2Vjb25kTGV2ZWwoKX0pO2lmKCJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiPT0kKCIjREVBTEVSUEFSVFJFRElSRUNUVFlQRSIpLnZhbCgpJiYwPCQoIiNERUFMRVJCUkFORCIpLmxlbmd0aCYmJCgiI0RFQUxFUkJSQU5EIikudmFsKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygiZm9yZCIpJiYiIiE9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpKXt2YXIgZT0kKCJodG1sIikuYXR0cigibGFuZyIpLGs9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGg9ImVuIj09ZT8iL3JlcXVlc3RzL2Nhci1wYXJ0cy1hbmQtYWNjZXNzb3JpZXMuaHRtbCI6Ii9kZW1hbmRlcy9jb21tYW5kZS1waWVjZXMtYWNjZXNzb2lyZXMtYXV0b21vYmlsZXMuaHRtbCIsbj0iaHR0cHM6Ly9mb3JkYWNjZXNzLmNvbS9Gb3JkLmFzcHg\/bG9jYXRpb249IisKazt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9TRVJWSUNFIHVsLnN1YiBsaVtkYXRhLWlkPSdQSUVDRVMnXSIsZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpO2Y9JCgiPiBhIixmKTtmLmF0dHIoImhyZWYiKT09aCYmKGYuYXR0cigiaHJlZiIsbiksZi5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKSl9KX10aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9GSU5BTkNFID4gYSIsZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpLGc9JCgiaHRtbCIpLmF0dHIoImxhbmciKSxtPSQoIiNERUFMRVJQQUNPREUiKS52YWwoKSxsPSQoIiNERUFMRVJCUkFORF9QUklNQVJZIikudmFsKCkudG9Mb3dlckNhc2UoKTsiZm9yZF9saW5jb2xuX2V4dGVybmFsIiE9JCgiI0ZJTkFOQ0VGT1JNVFlQRSIpLnZhbCgpfHwiZm9yZCIhPWwmJiJsaW5jb2xuIiE9bHx8IiI9PW18fChmLmF0dHIoImhyZWYiLCJmb3JkIj09bD8oImVuIj09Zz8iaHR0cHM6Ly93d3cuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSI6CiJodHRwczovL2ZyLmZvcmQuY2EvZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDRiZkZWFsZXJJZD0iKSttOigiZW4iPT1nPyJodHRwczovL3d3dy5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSI6Imh0dHBzOi8vZnIubGluY29sbmNhbmFkYS5jb20vZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDTCZkZWFsZXJJZD0iKSttKSxmLmF0dHIoInRhcmdldCIsIl9ibGFuayIpKX0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZigwPCQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLmxlbmd0aCYmIiIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpJiYiIyNMSU5LUlVMRVMjIyIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpKXtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY3RhLXRwbCIpLmxlbmd0aCYmInVuZGVmaW5lZCIhPT10eXBlb2YgbmV3Y2FyRGV0YWlscyYmCiJ1bmRlZmluZWQiIT09dHlwZW9mIG5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwpe2lmKCExPT09KCJjb21tZXJjaWFsIj09bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zZWN0aW9uPyEwOiExKSlyZXR1cm47ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmN0YS10cGwgYSIpLmZvckVhY2goKGYsZyk9PntnPWYuZ2V0QXR0cmlidXRlKCJocmVmIik7aWYoZy5pbmNsdWRlcygic2hvcC5mb3JkLmNhIikpe2xldCBtPSExO2cuaW5jbHVkZXMoInN1cGVyZHV0eSIpJiYobT1nLnJlcGxhY2UoIi9zdXBlcmR1dHkvIiwiL3N1cGVyZHV0eS1jb21tZXJjaWFsLyIpKTshMSE9PW0mJmYuc2V0QXR0cmlidXRlKCJocmVmIixtKX19KX1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjY2xhc3Njb21tZXJjaWFsX2NvbnRhaW5lciIpLmxlbmd0aCYmZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRpdkNhclNpbmdsZU91dGVyQm94IGEiKS5mb3JFYWNoKChmLGcpPT57Zz1mLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwppZihnLmluY2x1ZGVzKCJzaG9wLmZvcmQuY2EiKSl7bGV0IG09ITE7Zy5pbmNsdWRlcygic3VwZXJkdXR5IikmJihtPWcucmVwbGFjZSgiL3N1cGVyZHV0eS8iLCIvc3VwZXJkdXR5LWNvbW1lcmNpYWwvIikpOyExIT09bSYmZi5zZXRBdHRyaWJ1dGUoImhyZWYiLG0pfX0pfX0sMkUzKTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGksICNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSA+IC5tYWlubWVudS1zdWJtZW51ID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgICNNYWluTWVudV9UQUJfQ09NTUVSQ0lBTCA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgI01haW5NZW51X1RBQl9DT01NRVJDSUFMID4gdWwuc3ViID4gbGkgPiAubWFpbm1lbnUtc3VibWVudSA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkiLGZ1bmN0aW9uKGYpe2lmKCJtb3VzZWxlYXZlIiE9CmYudHlwZSl7dmFyIGc9JCh0aGlzKS5maW5kKCIubWVudS10ZWNoLXNwZWNzIik7MD09Zy5sZW5ndGgmJihnPSQoIiNtZW51LXNwZWNzLXRlbXBsYXRlIikuY2xvbmUoKSk7dmFyIG09dGhpcztpZigwPT0kKG0pLmNoaWxkcmVuKCIubWVudS10ZWNoLXNwZWNzIikubGVuZ3RoKXt2YXIgbD0kKG0pLmZpbmQoImE6bnRoLW9mLXR5cGUoMikiKS50ZXh0KCksdT0kKG0pLmZpbmQoImE6Zmlyc3QtY2hpbGQiKS5hdHRyKCJocmVmIikscT11Lmxhc3RJbmRleE9mKCIvIikrMTtjYXJMaW5rVHJpbW1lZD11LnN1YnN0cmluZyhxLHUubGVuZ3RoKTt2YXIgcj0kKCIjdHh0QnVpbGRBbmRQcmljZUZvbGRlclBhdGgiKS52YWwoKStjYXJMaW5rVHJpbW1lZDsoZnVuY3Rpb24oKXtpZigwPCQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLmxlbmd0aCYmIiIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpJiYiIyNMSU5LUlVMRVMjIyIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpKXt2YXIgeT0KMDwkKG0pLmNsb3Nlc3QoImxpW2RhdGEtaWRePSdORVdfQ09NTUVSQ0lBTCddIikubGVuZ3RoPyEwOiExLEE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCk7QT1KU09OLnBhcnNlKEEpO3ZhciBJPSQoImh0bWwiKS5hdHRyKCJsYW5nIiksQj1yLm1hdGNoKCJlbiI9PUk\/L1wvYnVpbGQtYW5kLXByaWNlXC8oXGR7NH0tKFx3KyktKFx3KykuKlwuaHRtbCkuKi86L1wvY29uZmlndXJhdGlvbi1ldC1wcml4XC8oKFx3KyktKFx3KyktXGR7NH0pLipcLmh0bWwvKSxKPUJbMF0sRj1CWzJdLnRvTG93ZXJDYXNlKCk7Qj1CWzNdLnRvTG93ZXJDYXNlKCkucmVwbGFjZUFsbCgiXyIsIiAiKTt5JiZCLmluY2x1ZGVzKCJzdXBlciBkdXR5IikmJihCPSJzdXBlciBkdXR5IGNvbW1lcmNpYWwiKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBBW0ZdJiYidW5kZWZpbmVkIj09PXR5cGVvZiBBW0ZdW0JdKWZvcih2YXIgSyBpbiBBW0ZdKWlmKHk9SyxCLmluY2x1ZGVzKHkpKXtCPXk7CmJyZWFrfSJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl0mJiJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl1bQl0mJigkKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuYXR0cigidGFyZ2V0IiwiX2JsYW5rIikscj1yLnJlcGxhY2UoSixBW0ZdW0JdW0ldKSl9fSkoKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuYXR0cigiaHJlZiIscik7JChnKS5maW5kKCIubWVudS1zcGVjLWxpbmsiKS5hdHRyKCJocmVmIix1KTskKGcpLnJlbW92ZUF0dHIoImlkIik7JChnKS5jaGlsZHJlbigiLm1lbnUtc3BlY3MtdGl0bGUiKS5hcHBlbmQobCk7dmFyIHA9e307JC5pc0VtcHR5T2JqZWN0KGMoKS5jYXJzLmRldGFpbHMpPyQud2hlbihjKCkuc3BlY3NBamF4KS5kb25lKGZ1bmN0aW9uKHkpe3A9YygpLmNhcnMuZmluZEJ5SWQoJChtKS5kYXRhKCJtb2RlbGlkIikpfSk6cD1jKCkuY2Fycy5maW5kQnlJZCgkKG0pLmRhdGEoIm1vZGVsaWQiKSk7aWYoISQuaXNFbXB0eU9iamVjdChwKSl7dmFyIHc9YS5zaG91bGRVc2VGcmVuY2hOYW1lcygpPwpwLm5hbWU6cC5tb2RlbDtwLmhhc093blByb3BlcnR5KCJiYXNlX3N0eWxlIikmJihwPXAuYmFzZV9zdHlsZSx3PXAubW9kZWwpO3E9IkZSRU5DSCI9PSQoIiN0ZXh0TGFuZ3VhZ2UiKS52YWwoKT8iTi9EIjoiTi9BIjtsPSIiPT1wLmRpc3BsYWNlbWVudD9xOnAuZGlzcGxhY2VtZW50O3U9IiI9PXAuY2l0eUZ1ZWw\/cTpwLmNpdHlGdWVsO3E9IiI9PXAuaHd5RnVlbD9xOnAuaHd5RnVlbDt2YXIgej1wLm1zcnBBbGxJbixEPSQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS50ZXh0KCkudHJpbSgpO0Q9RC5yZXBsYWNlKCIkTU9ERUwiLHcpO3c9YDxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPiR7ei50b0xvY2FsZVN0cmluZygpfTwvc3Bhbj5gO3o9JCgiI0FETUlOX05FV19ET05UX1NIT1dfUFJJQ0VfTU9ERUxTIikudmFsKCkuaW5jbHVkZXMocC5tb2RlbGlkKTtpZigwPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmxlbmd0aCl7JChnKS5maW5kKCIubWVudS1zcGVjLXByaWNlIikudGV4dCgiIik7CnZhciBDPSQoJzxkaXYgY2xhc3M9InByaWNlIi8+JyksRT0kKCc8c3BhbiBjbGFzcz0icHJpY2VfYW10Ii8+JyksRz0kKCc8c3BhbiBjbGFzcz0icHJpY2Vfc2NyYXRjaGVkIi8+JyksSD0kKCc8c3BhbiBjbGFzcz0icHJpY2VfcHJvbW8iLz4nKTswPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2Utc2NyYXRjaCIpLmxlbmd0aD8oRy5odG1sKHcpLEUuYXBwZW5kKEcpLEUuY3NzKHsidGV4dC1kZWNvcmF0aW9uIjoibGluZS10aHJvdWdoIixjb2xvcjoicmVkIn0pKTpFLmh0bWwodyk7Qy5hcHBlbmQoRSk7MDwkKG0pLmNoaWxkcmVuKCIucHJpY2UiKS5jaGlsZHJlbigiLnByaWNlX3Byb21vIikubGVuZ3RoJiYoSC50ZXh0KCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2VfcHJvbW8iKS50ZXh0KCkpLEguY3NzKHtjb2xvcjoicmVkIn0pLEMuYXBwZW5kKEgpKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS5hcHBlbmQoQyl9ZWxzZSAkKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS5odG1sKHcpOwokKGcpLmZpbmQoIi5tZW51LXNwZWMtaHAiKS50ZXh0KHAuaHBBdFJQTSk7JChnKS5maW5kKCIubWVudS1zcGVjLXBvd2VyIikudGV4dChsKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZnVlbC1jaXR5IikudGV4dCh1KTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZnVlbC1oaWdod2F5IikudGV4dChxKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZHJpdmV0cmFpbiIpLnRleHQocC5kcml2ZVRyYWluKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuY29udGVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMz09dGhpcy5ub2RlVHlwZX0pLmxhc3QoKS5yZXBsYWNlV2l0aChEKTt6JiYoJChnKS5maW5kKCIubWVudS1zcGVjLWJucCIpLnJlbW92ZSgpLCQoZykuZmluZCgiLm1lbnUtc3BlYy1wcmljZSIpLnRleHQoJCgiI05FV19QUklDRV9URVhUIikudmFsKCkpKTskKGcpLmZpbmQoIi5tZW51LXByaWNlLXRleHQiKS50ZXh0KGQoJChnKS5maW5kKCIubWVudS1wcmljZS10ZXh0IikudGV4dCgpLApwKSk7NUU4PnAuaWQmJiQobSkuYXBwZW5kKGcuZmFkZUluKDIwMCkpO2w9bmV3IEN1c3RvbUV2ZW50KCJ0b3BuYXYtdGVjaC1zcGVjLWxvYWRlZCIse2RldGFpbDp7dGVtcGxhdGU6Z319KTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGwpfX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHk9YS5wb3NpdGlvbnMobSxmLCQoZykpO3kudXBkYXRlKCk7dmFyIEE9JChtKS5wYXJlbnQoInVsLnN1YiIpLnBhcmVudCgpLnBhcmVudCgpO0Eub2Zmc2V0KCk7QS5vdXRlckhlaWdodCgpO3kuc3BlY3NCb3R0b208eS5zdWJNZW51SXRlbVRvcCYmJChnKS5jc3MoInRvcCIseS5zdWJNZW51SXRlbUJvdHRvbS15LnNwZWNzQm90dG9tKTt5LnN1Yk1lbnVJdGVtVG9wPHkuc3BlY3NCb3R0b20mJnkuc3ViTWVudUl0ZW1Cb3R0b20+eS5zcGVjc0JvdHRvbSYmJChnKS5jc3MoInRvcCIsJChnKS5wb3NpdGlvbigpLnRvcCsoeS5zdWJNZW51SXRlbUJvdHRvbS15LnNwZWNzQm90dG9tKSl9LDApO2RlbGV0ZSBwfX0pOwokKCcudXBfbWVudSBbaWRePSJNYWluTWVudV8iXS50b3A6bm90KC5pc09wZW4pJykub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKGYpeyQoZi5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygiaXNPcGVuIil8fCQoJy51cF9tZW51IFtpZF49Ik1haW5NZW51XyJdLnRvcCcpLnJlbW92ZUNsYXNzKCJpc09wZW4iKX0pOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsZnVuY3Rpb24oZil7Y2hpbGRPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50LCQoIi51cF9tZW51IilbMF0pfHwkKCcudXBfbWVudSBbaWRePSJNYWluTWVudV8iXS50b3AnKS5yZW1vdmVDbGFzcygiaXNPcGVuIil9KTskKCIjTWFpbk1lbnVfQ09OVEFDVCIpLm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLGZ1bmN0aW9uKGYpe3ZhciBnPSQoIiNtZW51LW1hcC1saW5rIik7MD09Zy5sZW5ndGh8fDA8Zy5maW5kKCJpZnJhbWUiKS5sZW5ndGh8fGluamVjdEdvb2dsZU1hcHNLZXkoZnVuY3Rpb24obSl7bT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkL3YxL3BsYWNlPyIrClsicT0iK2VuY29kZVVSSUNvbXBvbmVudChnLmRhdGEoInBsYWNlSWQiKSksInpvb209IitnLmRhdGEoInpvb20iKSwibGFuZ3VhZ2U9IitnLmRhdGEoImxhbmd1YWdlIiksInJlZ2lvbj1DQSIsImtleT0iK21dLmpvaW4oIiYiKTtnLmFwcGVuZCgnPGlmcmFtZSBzcmM9IicrbSsnIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI0MDAiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOjAiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nKX0pfSk7JCgiI01haW5NZW51X0ZJTkFOQ0UsICNNYWluTWVudV9DT05UQUNUIikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oZil7dmFyIGc9Zi5jdXJyZW50VGFyZ2V0LmlkLG09JCgiIyIrZyk7MD09PSQoIiMiK2crIi5pc09wZW4iKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9PWYudHlwZSYmbS5hZGRDbGFzcygiaXNPcGVuIik7aWYoIm1vdXNlbGVhdmUiPT09Zi50eXBlKXt2YXIgbD0kKCIuY3JlZGl0U2NvcmVQb3B1cEZvcm0iKVswXTsKZz0kKCIjIitnKyIgPiBhLnRvcF9saW5rIilbMF07KGwmJmYuZnJvbUVsZW1lbnQ9PT1sfHxnJiZmLmZyb21FbGVtZW50PT09ZykmJm0ucmVtb3ZlQ2xhc3MoImlzT3BlbiIpO2w9JChmLnRvRWxlbWVudCkuaGFzQ2xhc3MoImNhbC13cmFwcGVyIil8fCQoZi50b0VsZW1lbnQpLmNoaWxkcmVuKCkuaGFzQ2xhc3MoImNhbC13cmFwcGVyIil8fCQoZi50b0VsZW1lbnQpLmhhc0NsYXNzKCJuZWJDYWwiKXx8JChmLnRvRWxlbWVudCkuY2xvc2VzdCgiLm5lYkNhbCIpLmxlbmd0aDtnPSQoZi50b0VsZW1lbnQpLmhhc0NsYXNzKCJwYWMtY29udGFpbmVyIik7aWYoIShudWxsPT09Zi50b0VsZW1lbnR8fGNoaWxkT2YoZi50b0VsZW1lbnQsbVswXSl8fGNoaWxkT2YoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCxtWzBdKXx8bHx8Zyl8fGNoaWxkT2YoZi50b0VsZW1lbnQsJCgiLnVwX21lbnUiKVswXSkmJiFjaGlsZE9mKGYudG9FbGVtZW50LG1bMF0pKSQoIi5uZWJDYWwiKS5pcygiOnZpc2libGUiKSYmCihmPSQoIi5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdCAuY3JlZGl0U2NvcmVCaXJ0aGRhdGUiKS5kYXRhKCJuZWJDYWwiKSkmJmYuaGlkZSgpLG0ucmVtb3ZlQ2xhc3MoImlzT3BlbiIpfX0pO2lmKCQoITApKXtlPSQoIi5tZW51NSAubmF2ID4gbGkiKTtrPWUubGVuZ3RoO3ZhciB4PSQoIiNNYWluTWVudV9DT05UQUNUIiksdj0tMTtlLmVhY2goZnVuY3Rpb24oZixnKXskKGcpLmlzKHgpJiYodj1mKX0pOy0xPHYmJi41PD12L2smJnguZmluZCgiLmNvbnRhY3R1cy1mb3JtLmNvbnRhY3Qtc2hvcnQiKS5jc3Moe3JpZ2h0OiJpbmhlcml0In0pfXRoaXMuc2hvdWxkVXNlRnJlbmNoTmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4iRlJFTkNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpJiYiMSI9PT0kKCIjbmV3X3RyYW5zbGF0ZWRfdGl0bGVzIikudmFsKCl9O3RoaXMuc2V0TWVudUV4cHJlc3NGb3JtU2VsZWN0ZWRPcHRpb249ZnVuY3Rpb24oKXt2YXIgZj13aW5kb3cubG9jYXRpb24uaHJlZiwKZz0vdXNlZHxvY2Nhc2lvbi8udGVzdChmKSxtPS9uZXd8bmV1ZnMvLnRlc3QoZiksbD0vZmluYW5jZW1lbnR8Y3JlZGl0Ly50ZXN0KGYpLHU9L3NlcnZpY2V8YWNjZXNzb3JpZXN8dGlyZXxwbmV1c3xib2R5c2hvcHxib2R5LXNob3B8Y2Fyb3NzZXJpZS8udGVzdChmKTtmPSIiO20\/Zj0ibmV3IjpnP2Y9InVzZWQiOmw\/Zj0iZmluYW5jZSI6dSYmKGY9InNlcnZpY2UiKTsiIiE9ZiYmKGc9JCgiLm1lbnUgI3F1aWNrRW1haWxEZXBhcnRtZW50IiksJCgnIG9wdGlvblt2YWx1ZT0iJytmKyciXScsZykucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpLG09JCgib3B0aW9uOnNlbGVjdGVkIixnKS5pbmRleCgpLGcucHJldigidWwiKS5maW5kKCJsaSIpLmVxKG0pLmZpbmQoImEiKS50cmlnZ2VyKCJjbGljayIpKX07c2V0VGltZW91dChmdW5jdGlvbigpe2Euc2V0TWVudUV4cHJlc3NGb3JtU2VsZWN0ZWRPcHRpb24oKX0sMTApO2NvbnNvbGUubG9nKCJNZW51SGFuZGxlciBpbml0IC0tIHRlc3QgcmVtb3ZlIGxhdGVyIik7CnRoaXMudHJhbnNsYXRlVGl0bGVzPWZ1bmN0aW9uKCl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3RyeXt2YXIgZj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1tZW51LXRyYW5zbGF0ZV0iKTtpZihmKXt2YXIgZz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5IikuY2xhc3NOYW1lLm1hdGNoKCJGUkVOQ0giKT8iZnIiOiJlbiIsbT0obmV3IFVSTChgL2pzL2pzb24vbWVudVRpdGxlc18ke2d9Lmpzb25gLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pKS5ocmVmO3Jlc3BvbnNlPXlpZWxkIGZldGNoKG0pO2lmKHRleHQ9eWllbGQgcmVzcG9uc2UudGV4dCgpKWlmKGRhdGE9SlNPTi5wYXJzZSh0ZXh0KSxmJiYwIT09ZGF0YS5sZW5ndGgpZm9yKGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGw9ZltnXS5nZXRBdHRyaWJ1dGUoImRhdGEtbWVudS10cmFuc2xhdGUiKTtkYXRhW2xdJiZCYXNlNjQuaXNCYXNlNjQoZGF0YVtsXS50ZXh0KSYmCihmW2ddLnRleHRDb250ZW50PUJhc2U2NC5kZWNvZGUoZGF0YVtsXS50ZXh0KSl9fX1jYXRjaCh1KXtjb25zb2xlLmxvZyh1KX19KX07dGhpcy50cmFuc2xhdGVUaXRsZXMoKX19KSgpOyQoZnVuY3Rpb24oKXt3aW5kb3cubWVudUhhbmRsZXI9bmV3IE1lbnVIYW5kbGVyfSk7CnZhciBnZXRBY3RpdmVQYWdlPWZ1bmN0aW9uKCl7dmFyIGE9IiI7InVuZGVmaW5lZCI9PT10eXBlb2YgYWN0aXZlUGFnZSYmKGFjdGl2ZVBhZ2U9IiIpO3N3aXRjaChhY3RpdmVQYWdlKXtjYXNlICJIT01FUEFHRSI6YT0iQWNjdWVpbCI7YnJlYWs7Y2FzZSAiQ0FSREVUQUlMUyI6YT0iT2NjYXNpb24tVkRQIjticmVhaztjYXNlICJVU0VEQ0FSUyI6YT0iT2NjYXNpb24tU1JQIjticmVhaztjYXNlICJORVdDQVJTIjphPSJOZXVmLVNSUCI7YnJlYWs7Y2FzZSAiTkVXQ0FSREVUQUlMUyI6YT0iTmV1Zi1WRFAifXJldHVybiBhfSxzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQ9ZnVuY3Rpb24oYSxiKXtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkNsaXF1ZXMgQmFubmllcmUiLGEsYiwxKX07CiQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNob21lcGFnZS1iYW5uZXIgI3NsaWRlciA+IGEiLGZ1bmN0aW9uKGEpe2lmKGE9Z2V0QWN0aXZlUGFnZSgpKXt2YXIgYj0iIiE9JCh0aGlzKS5hdHRyKCJocmVmIik\/JCh0aGlzKS5hdHRyKCJocmVmIik6IlBvcHVwIjtzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQoYSxiKX19KTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjbW9iaWxlU2xpZGVyICNtb2JpbGVTbGlkZXIyID4gYSIsZnVuY3Rpb24oYSl7aWYoYT1nZXRBY3RpdmVQYWdlKCkpe3ZhciBiPSIiIT0kKHRoaXMpLmF0dHIoImhyZWYiKT8kKHRoaXMpLmF0dHIoImhyZWYiKToiUG9wdXAiO3NlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudChhLGIpfX0pOwokKGRvY3VtZW50KS5vbigiY2xpY2siLCIjdG9wQmFubmVySW1hZ2UiLGZ1bmN0aW9uKGEpeyhhPWdldEFjdGl2ZVBhZ2UoKSkmJnNlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudChhLCJQb3B1cCIpfSk7dmFyIGhvbWVQYWdlQmFubmVyVmlldz1bXTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjaG9tZXBhZ2UtYmFubmVyICNzbGlkZXIgPiBhIixmdW5jdGlvbihhKXsoYT1nZXRBY3RpdmVQYWdlKCkpJiYiQWNjdWVpbCI9PWEmJihhPSQoIiNzbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIkRlc2t0b3AtY2xpY2siLGEsMSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJuaXZvU2xpZGVyQ2hhbmdlZCBuaXZvU2xpZGVyTG9hZGVkIiwiI2hvbWVwYWdlLWJhbm5lciAjc2xpZGVyIixmdW5jdGlvbihhKXshKGE9Z2V0QWN0aXZlUGFnZSgpKXx8IkFjY3VlaWwiIT1hfHw1MDA8JChkb2N1bWVudCkuc2Nyb2xsVG9wKCl8fChhPSQoIiNzbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSwwPiQuaW5BcnJheShhLGhvbWVQYWdlQmFubmVyVmlldykmJihob21lUGFnZUJhbm5lclZpZXcucHVzaChhKSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIkRlc2t0b3AtdmlldyIsYSwxKSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNtb2JpbGVTbGlkZXIgI21vYmlsZVNsaWRlcjIgPiBhIixmdW5jdGlvbihhKXsoYT1nZXRBY3RpdmVQYWdlKCkpJiYiQWNjdWVpbCI9PWEmJihhPSQoIiNtb2JpbGVTbGlkZXIyIikuZGF0YSgibml2bzp2YXJzIikuY3VycmVudFNsaWRlKzEsZ2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkhvbWUtcGFnZSBzbGlkZXIiLCJNb2JpbGUtY2xpY2siLGEsMSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJuaXZvU2xpZGVyQ2hhbmdlZCBuaXZvU2xpZGVyTG9hZGVkIiwiI21vYmlsZVNsaWRlciAjbW9iaWxlU2xpZGVyMiIsZnVuY3Rpb24oYSl7IShhPWdldEFjdGl2ZVBhZ2UoKSl8fCJBY2N1ZWlsIiE9YXx8MzUwPCQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpfHwoYT0kKCIjbW9iaWxlU2xpZGVyMiIpLmRhdGEoIm5pdm86dmFycyIpLmN1cnJlbnRTbGlkZSsxLDA+JC5pbkFycmF5KGEsaG9tZVBhZ2VCYW5uZXJWaWV3KSYmKGhvbWVQYWdlQmFubmVyVmlldy5wdXNoKGEpLGdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJIb21lLXBhZ2Ugc2xpZGVyIiwiTW9iaWxlLXZpZXciLGEsMSkpKX0pOwpmdW5jdGlvbiB0aHJlc2hvbGRQb3B1cCgpe3ZhciBhPWdldFVybFZhcnMoKTtpZihudWxsPT1Db29raWVzLmdldCgicG9wdXBTaG93biIpfHwidW5kZWZpbmVkIiE9dHlwZW9mIGEuZGVidWcpc2hvd1BvcHVwV2lkZ2V0KHtkb05vdFJlZGlyZWN0OiEwfSksQ29va2llcy5zZXQoInBvcHVwU2hvd24iLCIxIiw5MCwiLyIpfWZ1bmN0aW9uIF9sb2NhbFN0b3JhZ2VTZXQoYSxiLGMpe2M9ODY0RTUqKGN8fDEpO2I9e3ZhbHVlOmIsZXhwaXJ5OihuZXcgRGF0ZSkuZ2V0VGltZSgpK2N9O2xvY2FsU3RvcmFnZS5zZXRJdGVtKGEsSlNPTi5zdHJpbmdpZnkoYikpfWZ1bmN0aW9uIF9sb2NhbFN0b3JhZ2VHZXQoYSl7dmFyIGI9bG9jYWxTdG9yYWdlLmdldEl0ZW0oYSk7aWYoIWIpcmV0dXJuIG51bGw7Yj1KU09OLnBhcnNlKGIpO3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpPmIuZXhwaXJ5Pyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhKSxudWxsKTpiLnZhbHVlfQpmdW5jdGlvbiBfbG9jYWxTdG9yYWdlUmVtb3ZlKGEpe2lmKCFsb2NhbFN0b3JhZ2UuZ2V0SXRlbShhKSlyZXR1cm4gbnVsbDtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBnZW5lcmF0ZVVuaXF1ZUlkKCl7cmV0dXJuImlkLSIrRGF0ZS5ub3coKSsiLSIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9Y29uc3QgaW5pdFRvb2x0aXBzPSgpPT57dHJ5e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBvcHBlcl0iKS5mb3JFYWNoKGE9PntUb29sdGlwKGEpLmNyZWF0ZSgpfSl9Y2F0Y2goYSl7Y29uc29sZS5sb2coIlRvb2x0aXAgb2JqZWN0IG5vdCBmb3VuZCIpfX07CmZ1bmN0aW9uIGhhbmRsZUNvb2tpZUNvbnRlbnQoKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1jb29raWVoaWRlXSIpLmZvckVhY2goYT0+e2xldCBiPWEuZGF0YXNldC5jb29raWVoaWRlO2IubGVuZ3RoJiZDb29raWVzLmdldChiKSYmKGEuaGlkZGVuPSEwKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWNvb2tpZXNob3ddIikuZm9yRWFjaChhPT57bGV0IGI9YS5kYXRhc2V0LmNvb2tpZXNob3c7Yi5sZW5ndGgmJkNvb2tpZXMuZ2V0KGIpJiYoYS5oaWRkZW49ITEpfSl9dmFyIHNpdGVQYWdlPXt9Owpjb25zdCBkb2NSZWFkeT1mdW5jdGlvbigpe19sb2NhbFN0b3JhZ2VHZXQoImQyYy11aWQiKXx8X2xvY2FsU3RvcmFnZVNldCgiZDJjLXVpZCIsZ2VuZXJhdGVVbmlxdWVJZCgpLDIpO2lmKCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKXtsZXQgYTtjb25zb2xlLmxvZygiR1NQRUVELURPQ1JFQURZIENPTVBMRVRFOiIrKERhdGUubm93KCktKG51bGwhPShhPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/YTowKSkvMUUzKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tdHh0IikuZm9yRWFjaChiPT57Yi5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi10eHQiLCExKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5za2VsZXRvbi1zbGlkZXIiKS5mb3JFYWNoKGI9PntiLmNsYXNzTGlzdC50b2dnbGUoInNrZWxldG9uLXNsaWRlciIsITEpfSk7d2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD0hMDtzaXRlUGFnZT17bmFtZToidW5kZWZpbmVkIiE9dHlwZW9mIHBhZ2U\/CnBhZ2U6IiIsaXNNb2JpbGU6IjEiPT0oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlzbW9iaWxlIil8fCIiKS52YWx1ZSxsYW5nOihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlc2l0ZWxhbmd1YWdlIil8fCIiKS52YWx1ZXx8IkZSRU5DSCJ9O2hhbmRsZUNvb2tpZUNvbnRlbnQoKTtpbml0VG9vbHRpcHMoKTtkb2NSZWFkeUFyci5mb3JFYWNoKGI9PmIoKSk7ZG9jUmVhZHlBcnI9W119ZWxzZXtsZXQgYTtpZigiaW50ZXJhY3RpdmUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmd2luZG93LmdSZXNvdXJjZUxvYWRlckFuZEpxdWVyeUlzUmVhZHkmJiExPT09KG51bGwhPShhPXdpbmRvdy5nU2tlbGV0b25Jc1JlbW92ZWQpP2E6ITEpKXtsZXQgYjtjb25zb2xlLmxvZygiR1NQRUVELURPQ1JFQURZIElOVEVSQUNUSVZFOiIrKERhdGUubm93KCktKG51bGwhPShiPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/YjowKSkvMUUzKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tdHh0IikuZm9yRWFjaChjPT4Ke2MuY2xhc3NMaXN0LnRvZ2dsZSgic2tlbGV0b24tdHh0IiwhMSl9KTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tc2xpZGVyIikuZm9yRWFjaChjPT57Yy5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi1zbGlkZXIiLCExKX0pO3dpbmRvdy5nU2tlbGV0b25Jc1JlbW92ZWQ9ITB9c2V0VGltZW91dChkb2NSZWFkeSw1MCl9fTtkb2NSZWFkeSgpOwokKGZ1bmN0aW9uKCl7dmFyIGE9ITA7JCh3aW5kb3cpLm9uKCJzY3JvbGwiLGZ1bmN0aW9uKCl7dmFyIGQ9JChkb2N1bWVudCkuaGVpZ2h0KCksZT0kKHdpbmRvdykuaGVpZ2h0KCkrJCh3aW5kb3cpLnNjcm9sbFRvcCgpOy4wNT4oZC1lKS9kJiZhJiYoYT0hMSwidW5kZWZpbmVkIiE9PXR5cGVvZiBnYVRyYWNrJiZnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkJvdHRvbSBvZiBwYWdlIHJlYWNoZWQiLCQoJ2lucHV0W25hbWU9InRhcmdldFBhZ2UiXScpLnZhbCgpLHdpbmRvdy5sb2NhdGlvbi5ocmVmLDEpKX0pOyQoIi5lbWJlZC1jb250YWluZXIteW91dHViZSIpLnBhcmVudCgiLndyYXBwZXIiKS5yZW1vdmVDbGFzcygid3JhcHBlciIpO2lmKCQoIiNpc0JyYW5kUGFnZSIpLmxlbmd0aCl7dmFyIGI9Z2V0VXJsVmFycygpO2lmKGIua3cmJi0xIT1iLmt3LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY2FuYWRhIikpe3ZhciBjPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKSYmIkVOR0xJU0giPT0KJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIjtiPSJlbiI9PWM\/IkhlcmUgd2Ugb2ZmZXIgdGhlIGJlc3QgcHJpY2VzIjoiSWNpIG9uIG9mZnJlIGxlcyBtZWlsbGV1cnMgcHJpeCI7Yz0iZW4iPT1jPyJvbiAiKyQoIiNpc0JyYW5kUGFnZSIpLnZhbCgpKyIncyBpbiBDYW5hZGEiOiQoIiNpc0JyYW5kUGFnZSIpLnZhbCgpKyIgYXUgQ2FuYWRhIjskKCIjZGVmYXVsdFRvcEJhbm5lclRpdGxlIikudGV4dChiKTskKCIjZGVmYXVsdFRvcEJhbm5lclRleHQiKS50ZXh0KGMpfX0kKCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoYj1nZXRVcmxWYXJzKCksYi5maW5hbmNlcG9wJiYieWVzIj09Yi5maW5hbmNlcG9wJiZzZXRUaW1lb3V0KCgpPT57JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkub3BlbigpfSwxRTMpKTswPCQoIi50cmFkZXNpaS1yb290IikudGV4dCgpLmxlbmd0aD8kKCIudHJhZGVzaWktcm9vdCIpLmNzcygiei1pbmRleCIsCjFFMyk6c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi50cmFkZXNpaS1yb290IikuY3NzKCJ6LWluZGV4IiwxRTMpfSwxRTMpfSk7ZnVuY3Rpb24gYWRkTWF4TGVuZ3RoKCl7JCgiOmlucHV0IikuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhpcykuYXR0cigidHlwZSIpLGI9JCh0aGlzKS5hdHRyKCJtYXhsZW5ndGgiKTtpZih2b2lkIDA9PWJ8fG51bGw9PWJ8fCIiPT1iKSJ0ZXh0Ij09YXx8InRlbCI9PWF8fCJlbWFpbCI9PWF8fCJ1cmwiPT1hPyQodGhpcykucHJvcCgibWF4bGVuZ3RoIiwyNTYpOiJudW1iZXIiPT1hJiYoJCh0aGlzKS5wcm9wKCJvbmlucHV0IiwidGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDAsdGhpcy5tYXhsZW5ndGgpIiksJCh0aGlzKS5wcm9wKCJtYXhsZW5ndGgiLDI1NikpfSl9ZG9jUmVhZHlBcnIucHVzaCgoKT0+eyQoIi5yZXZlYWwtbW9kYWwiKS5vbigicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24oKXthZGRNYXhMZW5ndGgoKX0pO2FkZE1heExlbmd0aCgpfSk7CihmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQsZSl7dGhpcy5lbD1kO3RoaXMuJGVsPWEoZCk7aWYodm9pZCAwPT09ZXx8Im9iamVjdCI9PT10eXBlb2YgZSl0aGlzLnNldHRpbmdzPWEuZXh0ZW5kKGMsZSk7dGhpcy5pbml0KCl9dmFyIGM9e2xhdDoiIixsb25nOiIiLHBvc3RhbDoiIixyYXRpbzouNjg4NSx3aWR0aDoiYXV0byJ9O2IucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy4kZWwuaXMoIi5sYXp5bG9hZCIpPyJkYXRhLWltZ3NyYyI6InNyYyI7dGhpcy4kZWwuYXR0cihkLHRoaXMuZ2V0VXJsKCkpfSxpc1Zpc2libGU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLiRlbC5hdHRyKCJ3aWR0aCIpO3JldHVybiEoIjBweCI9PT10aGlzLiRlbC5hdHRyKCJoZWlnaHQiKXx8IjBweCI9PT1kKX0sZ2V0V2lkdGg6ZnVuY3Rpb24oKXt0aGlzLiRlbC5hdHRyKCJ3aWR0aCIpO3ZhciBkPTA7ImF1dG8iPT09dGhpcy5zZXR0aW5ncy53aWR0aHx8ImF1dG8iPT09dGhpcy4kZWwuZGF0YSgid2lkdGgiKT8KZD10aGlzLiRlbC5wYXJlbnQoKS5jc3MoIndpZHRoIik6aXNOYU4ocGFyc2VJbnQodGhpcy5zZXR0aW5ncy53aWR0aCkpP3ZvaWQgMCE9PXRoaXMuJGVsLmF0dHIoIndpZHRoIikmJihkPXRoaXMuJGVsLmF0dHIoIndpZHRoIikpOmQ9dGhpcy5zZXR0aW5ncy53aWR0aDt0aGlzLiRlbC5hdHRyKCJ3aWR0aCIsZCk7cmV0dXJuIHBhcnNlSW50KGQucmVwbGFjZSgicHgiLCIiKSl9LGdldEhlaWdodDpmdW5jdGlvbigpe3ZhciBkPSJhdXRvIj09PXRoaXMuc2V0dGluZ3Mud2lkdGh8fCJhdXRvIj09PXRoaXMuJGVsLmRhdGEoIndpZHRoIik\/TWF0aC5yb3VuZCh0aGlzLmdldFdpZHRoKCkqdGhpcy5zZXR0aW5ncy5yYXRpbykrInB4Ijp0aGlzLiRlbC5wYXJlbnQoKS5jc3MoImhlaWdodCIpO3RoaXMuJGVsLmF0dHIoImhlaWdodCIsZCk7cmV0dXJuIHBhcnNlSW50KGQucmVwbGFjZSgicHgiLCIiKSl9LGdldFVybDpmdW5jdGlvbigpe3ZhciBkPWdldERhdGFBdHRyaWJ1dGVzKHRoaXMuZWwpLAplPXRoaXMuZ2V0V2lkdGgoKSxrPXRoaXMuZ2V0SGVpZ2h0KCksaD1kLmxhdCsiLCIrZC5sb25nLG49ZC5oYXNPd25Qcm9wZXJ0eSgibWFya2VySWNvbiIpPyJpY29uOiIrZC5tYXJrZXJJY29uKyJ8IjoiIjtkPWEuZXh0ZW5kKHtzaXplOmUrIngiK2ssY2VudGVyOmgsem9vbToiMTIiLG1hcmtlcnM6bitofSxkKTtyZXR1cm4iaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL3N0YXRpY21hcD8iK2EucGFyYW0oZCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLiRlbC5yZW1vdmVEYXRhKCl9fTthLmZuLmdvb2dsZVN0YXRpY01hcD1mdW5jdGlvbihkKXt2YXIgZT1hcmd1bWVudHM7aWYoMT50aGlzLmxlbmd0aClyZXR1cm4gdGhpczt0aGlzLmVhY2goZnVuY3Rpb24oKXtpZighYS5kYXRhKHRoaXMsInBsdWdpbl9zdGF0aWNNYXAiKSlyZXR1cm4gYS5kYXRhKHRoaXMsInBsdWdpbl9zdGF0aWNNYXAiLG5ldyBiKHRoaXMsZCkpLHRoaXN9KTtpZigic3RyaW5nIj09PXR5cGVvZiBkJiYKIl8iIT09ZFswXSYmImluaXQiIT09ZCl7MTx0aGlzLmxlbmd0aCYmY29uc29sZS5sb2coImdvb2dsZVN0YXRpY01hcCB3YXJuaW5nIGNvZGUgMSIpO3ZhciBrPWEuZGF0YSh0aGlzLmZpcnN0KClbMF0sInBsdWdpbl9zdGF0aWNNYXAiKTtyZXR1cm4ga1tkXS5hcHBseShrLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsMSkpfXJldHVybiB0aGlzfX0pKGpRdWVyeSk7ZnVuY3Rpb24gcGFyc2VRdWVyeShhKXtpZigxPmEubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgYj17fSxjPWEuc3BsaXQoIiYiKSxkPTA7ZDxjLmxlbmd0aDtkKyspYT1leHBsb2RlKGNbZF0sIj0iLDEpLGJbYVswXV09YVsxXTtyZXR1cm4gYn1mdW5jdGlvbiBkZWNvZGVTdHJpbmcoYSxiKXtpZigiIj09Ynx8InVuZGVmaW5lZCI9PWIpYj0xO2ZvcihpPTA7aTxiO2krKylhPWRlY29kZVVSSUNvbXBvbmVudChhKTtyZXR1cm4gYX0KZnVuY3Rpb24gZXhwbG9kZShhLGIsYyl7YT1hLnNwbGl0KGIpO2lmKGEubGVuZ3RoPD1jKXJldHVybiBhO2M9YS5zcGxpY2UoMCxjKTtjLnB1c2goYS5qb2luKGIpKTtyZXR1cm4gY31mdW5jdGlvbiBnZXRVcmxWYXJzKCl7dmFyIGE9d2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSk7cmV0dXJuIHBhcnNlUXVlcnkoYSl9ZnVuY3Rpb24gZ2V0Q29va2llKGEpe3JldHVybiBDb29raWVzLmdldChhKX1mdW5jdGlvbiBzZXRDb29raWUoYSxiLGMpe0Nvb2tpZXMuc2V0KGEsYixjLCIvIil9ZnVuY3Rpb24gZ2V0Q29va2llRDJjKGEpe3JldHVybiBDb29raWVzLmdldChhKX1mdW5jdGlvbiBzZXRDb29raWVEMmMoYSxiLGMpe0Nvb2tpZXMuc2V0KGEsYixjLCIvIil9ZnVuY3Rpb24gaXNTU0woKXtyZXR1cm4iaHR0cHM6Ij09PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH1mdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKGEsYil7Q29va2llcy5zZXQoYSxiLDAsIi8iKX0KZnVuY3Rpb24gaW5pdExDSShhLGIpe2lmKDIwPGIpcmV0dXJuIGI7Yj1iP2I6MDtpZigidW5kZWZpbmVkIj09dHlwZW9mIExDX0FQSXx8InVuZGVmaW5lZCI9PXR5cGVvZiBMQ19JbnZpdGUpc2V0VGltZW91dChmdW5jdGlvbigpe2luaXRMQ0koYSwrK2IpfSw1MDApO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBMQ19BUEkmJiJ1bmRlZmluZWQiIT10eXBlb2YgTENfSW52aXRlJiZhKXJldHVybiBMQ19BUEkuc2V0X2N1c3RvbV92YXJpYWJsZXMoYSl9ZnVuY3Rpb24gZ2V0UmVmZXJyZXJWYXJGdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXsiIj09YSYmKGE9ZG9jdW1lbnQucmVmZXJyZXIpO3ZhciBiPWEuaW5kZXhPZigiPyIpKzE7cmV0dXJuIDA8Yj8oYj1hLnNsaWNlKGIpLHBhcnNlUXVlcnkoYikpOnt9fX0KKGZ1bmN0aW9uKGEpe3ZhciBiPXtjYWxsYmFja3M6W10saGFzU2NyaXB0OmZ1bmN0aW9uKCl7dmFyIGU9YSgnaGVhZCBzY3JpcHRbc3JjKj0ibWFwcy5qcy5waHAiXScpO3JldHVybiAwPT1lLmxlbmd0aD8hMTovbWFwc1wuanMvLnRlc3QoZS5hdHRyKCJzcmMiKSl9LGxvYWQ6ZnVuY3Rpb24oZSl7aWYoYi5oYXNTY3JpcHQoKSkidW5kZWZpbmVkIj09PXR5cGVvZiBnb29nbGU\/Yi5jYWxsYmFja3MucHVzaChlKTplKCk7ZWxzZXtiLmNhbGxiYWNrcy5wdXNoKGUpO3RyeXt2YXIgaz0iRU5HTElTSCI9PWEoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iZW4iOiJmciI7KGZ1bmN0aW9uKGgsbix4LHYsZil7aFtmXSYmaFtmXS5tYXBzfHwoaD1uLmNyZWF0ZUVsZW1lbnQoeCksbj1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKHgpWzBdLGguc3JjPXYsaC5hc3luYz0hMSxkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImdvb2dsZU1hcHNMb2FkZWQiLGc9Pntmb3IoZz0wO2c8Yi5jYWxsYmFja3MubGVuZ3RoO2crKyliLmNhbGxiYWNrc1tnXS5jYWxsKCl9KSwKbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShoLG4pKX0pKHdpbmRvdyxkb2N1bWVudCwic2NyaXB0IiwiL2pzL21hcHMuanMucGhwP2xhbmc9IitrLCJnb29nbGUiKX1jYXRjaChoKXtjb25zb2xlLmxvZyhoKX19fX0sYz17YXV0b0NvbXBsZXRlOntjb21wb25lbnRSZXN0cmljdGlvbnM6e2NvdW50cnk6ImNhIn19LHJhZGl1czoxRTV9LGQ9ZnVuY3Rpb24oZSxrKXt2YXIgaD10aGlzO2guZWw9ZTtoLiRlbD1hKGUpO2guc2V0dGluZ3M9YS5leHRlbmQoYyxrKTtoLmFkZHJlc3M9e2NpdHk6IiIsc3RyZWV0X251bWJlcjoiIixzdHJlZXQ6IiIsc3VibG9jYWxpdHk6IiIscHJvdmluY2U6IiIsY291bnRyeToiIixwb3N0YWw6IiJ9O2guJGVsLm9uZSgiZm9jdXMiLGZ1bmN0aW9uKCl7aC5pbml0KCl9KX07ZC5wcm90b3R5cGU9e19jaGVja0Zvckdvb2dsZU1hcHM6ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCI9PT10eXBlb2YgZ29vZ2xlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBnb29nbGUubWFwcz8KYi5sb2FkKGUpOiJmdW5jdGlvbiI9PT10eXBlb2YgZSYmZS5jYWxsKCl9LGdldEFkZHJlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGRyZXNzfSxfc2V0QWRkcmVzczpmdW5jdGlvbihlKXt2YXIgaz10aGlzO2EuZWFjaChlLGZ1bmN0aW9uKGgsbil7c3dpdGNoKCEwKXtjYXNlIC0xPGEuaW5BcnJheSgic3RyZWV0X251bWJlciIsbi50eXBlcyk6ay5hZGRyZXNzLnN0cmVldF9udW1iZXI9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgicm91dGUiLG4udHlwZXMpOmsuYWRkcmVzcy5zdHJlZXQ9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgic3VibG9jYWxpdHkiLG4udHlwZXMpOmsuYWRkcmVzcy5zdWJsb2NhbGl0eT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJsb2NhbGl0eSIsbi50eXBlcyk6Y2FzZSAtMTxhLmluQXJyYXkoImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMyIsbi50eXBlcyk6IiI9PWsuYWRkcmVzcy5jaXR5JiYoay5hZGRyZXNzLmNpdHk9bik7YnJlYWs7CmNhc2UgLTE8YS5pbkFycmF5KCJhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzEiLG4udHlwZXMpOmsuYWRkcmVzcy5wcm92aW5jZT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJjb3VudHJ5IixuLnR5cGVzKTprLmFkZHJlc3MuY291bnRyeT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJwb3N0YWxfY29kZSIsbi50eXBlcyk6ay5hZGRyZXNzLnBvc3RhbD1ufX0pfSxfc2V0U2VhcmNoQm91bmRzOmZ1bmN0aW9uKGUsayxoKXtrPW5ldyBnb29nbGUubWFwcy5MYXRMbmcoayxoKTtrPW5ldyBnb29nbGUubWFwcy5DaXJjbGUoe2NlbnRlcjprLHJhZGl1czp0aGlzLnNldHRpbmdzLnJhZGl1c30pO2Uuc2V0Qm91bmRzKGsuZ2V0Qm91bmRzKCkpfSxpbml0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLl9jaGVja0Zvckdvb2dsZU1hcHMoZnVuY3Rpb24oKXt2YXIgaz1uZXcgZ29vZ2xlLm1hcHMuR2VvY29kZXIsaD1uZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZShlLmVsLAplLnNldHRpbmdzLmF1dG9Db21wbGV0ZSk7ZS5zZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgibGF0IikmJmUuc2V0dGluZ3MuaGFzT3duUHJvcGVydHkoImxvbmciKT8iIiE9PWUuc2V0dGluZ3MubGF0JiYiIiE9PWUuc2V0dGluZ3MubG9uZyYmZS5fc2V0U2VhcmNoQm91bmRzKGgsZS5zZXR0aW5ncy5sYXQsZS5zZXR0aW5ncy5sb25nKTplLnNldHRpbmdzLmhhc093blByb3BlcnR5KCJhZGRyZXNzIik\/ZS5zZXR0aW5ncy5hZGRyZXNzJiZrLmdlb2NvZGUoe2FkZHJlc3M6ZS5zZXR0aW5ncy5hZGRyZXNzfSxmdW5jdGlvbihuLHgpe2UuX3NldFNlYXJjaEJvdW5kcyhoLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksblswXS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSl9KToidW5kZWZpbmVkIiE9PXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzJiYwPGZvb3Rlck1hcEFkZHJlc3MubGVuZ3RoJiZrLmdlb2NvZGUoe2FkZHJlc3M6Zm9vdGVyTWFwQWRkcmVzc1swXS5hZGRyZXNzfSxmdW5jdGlvbihuLAp4KXtlLl9zZXRTZWFyY2hCb3VuZHMoaCxuWzBdLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubG5nKCkpfSk7Z29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoaCwicGxhY2VfY2hhbmdlZCIsZnVuY3Rpb24oKXt2YXIgbj1oLmdldFBsYWNlKCk7ZS5fc2V0QWRkcmVzcyhuLmFkZHJlc3NfY29tcG9uZW50cyk7ZS4kZWwudmFsKG4uZm9ybWF0dGVkX2FkZHJlc3MpO249bmV3IEV2ZW50KCJpbnB1dCIpO2UuZWwuZGlzcGF0Y2hFdmVudChuKTtlLiRlbC50cmlnZ2VyKCJmb2N1cyIpfSl9KX19O2EuZm4uZ29vZ2xlUGxhY2VzPWZ1bmN0aW9uKGUpe3ZhciBrPWFyZ3VtZW50cztpZih2b2lkIDA9PT1lfHwib2JqZWN0Ij09PXR5cGVvZiBlKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXthLmRhdGEodGhpcywicGx1Z2luX3BsYWNlcyIpfHxhLmRhdGEodGhpcywicGx1Z2luX3BsYWNlcyIsbmV3IGQodGhpcyxlKSl9KTtpZigic3RyaW5nIj09PXR5cGVvZiBlJiYKIl8iIT09ZVswXSYmImluaXQiIT09ZSl7dmFyIGg9YS5kYXRhKHRoaXNbMF0sInBsdWdpbl9wbGFjZXMiKTtyZXR1cm4gaFtlXS5hcHBseShoLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGssMSkpfX19KShqUXVlcnkpOwpmdW5jdGlvbiBzaG93QmFubmVyUG9wdXAoYSl7dHJ5eyQoYSkuaGFzQ2xhc3MoInRyYWRlaW5MaW5rIikmJigwPGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKS5pbmRleE9mKCJ0cmFkZWludmFsdWVzIil8fDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoImluc3RhbnRvZmZlci5hY2N1LXRyYWRlLmNvbSIpKT9zaG93VHJhZGVJblBvcHVwKGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKSk6MDwkKCIjYmFubmVyUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJiQoIiNiYW5uZXJQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9Y2F0Y2goYil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gZGlzcGxheSB0cmFkZWludmFsdWVzIGlmcmFtZS4gRXJyb3I6ICIrYi5tZXNzYWdlKX19CiQoZnVuY3Rpb24oKXswPCQoJ2lucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcz0idHJ1ZSJdJykubGVuZ3RoJiYkKCdpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXM9InRydWUiXScpLmdvb2dsZVBsYWNlcygpOyJ1bmRlZmluZWQiIT09dHlwZW9mICQuZm4uZGFya1Rvb2x0aXAmJigkKCIjc29jaWFsX21lZGlhX2ljb25zX2RpdiBhLCAuZ1JhdGluZy1pY29uIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6Im5vcnRoIixvcGFjaXR5OjF9KSwkKCIuc29jaWFsLW1lZGlhLWljb25zIFtkYXRhLXRvb2x0aXBdIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6InNvdXRoIixvcGFjaXR5OjF9KSwkKCIjbWl0c3ViaXNoaUNlcnRpZmllZEZvb3RlciBhLnNvY2lhbC1tZWRpYV9faWNvbiwgI2h5dW5kYWlDZXJ0aWZpZWRGb290ZXIgYS5zb2NpYWwtbWVkaWFfX2ljb24iKS5kYXJrVG9vbHRpcCh7Z3Jhdml0eToic291dGgiLG9wYWNpdHk6MX0pKTt2YXIgYT0kKCIuZ3JheWJveC51c2VkRGV0YWlsc1Bob25lLCAuZ3JheWJveC5uZXdEZXRhaWxzUGhvbmUiKTsKMD09PWEuY2hpbGRyZW4oKS5sZW5ndGgmJjA9PT1hLnRleHQoKS50cmltKCkubGVuZ3RoJiZhLmhpZGUoKX0pOyQoIiNmaW5hbmNlQWx0RGlzcGxheSAuc3RlcDEgYmlnLnRleHQgYmlnIikuYXR0cigiZGF0YS1kZXBhcnRtZW50IiwiRmluYW5jZSIpOyQoIi5jcmVkaXRfbV9jYWxsdXNfd3JhcHBlciBhIikuYXR0cigiZGF0YS1kZXBhcnRtZW50IiwiRmluYW5jZSIpOwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpeyQoIiNkaXZDZXJ0aWZpY2F0aW9uLWNhcmd1cnVzLXdyYXBwZXIiKS5sZW5ndGgmJihlbGVtZW50VG9PYnNlcnZlPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Q2VydGlmaWNhdGlvbi1jYXJndXJ1cy13cmFwcGVyIikuY2hpbGRyZW5bMF0sb2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oYSxiKXtiPSQoIiNkaXZDZXJ0aWZpY2F0aW9uLWNhcmd1cnVzLXdyYXBwZXIiKTtsZXQgYz0kKCJzcGFuW2RhdGEtY2ctZXJyb3JdIixiKTtjb25zb2xlLmxvZygiRDJDRyIsYixjLGEpO2MubGVuZ3RoJiZiLnJlbW92ZSgpfSksb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50VG9PYnNlcnZlLHtjaGFyYWN0ZXJEYXRhOiExLGNoaWxkTGlzdDohMCxhdHRyaWJ1dGVzOiExfSkpfSk7JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXstMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbmV3LyIpfHwkKCIjbmV3LXZkcC1zcGVjLWJyb2NodXJlIikuaGlkZSgpfSk7CiQoZnVuY3Rpb24oKXskKCIjRm9vdGVyX0ZJTkFOQ0UgPiBhLCBhI0ZpbmFuY2VBY3Rpb25Cb3gsIGEjRmluYW5jZUFjdGlvbkJveExpbmsiKS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIixmdW5jdGlvbigpe3ZhciBhPSQodGhpcyksYj0kKCJodG1sIikuYXR0cigibGFuZyIpO2lmKDA8JCgiI0RFQUxFUlBBQ09ERSIpLmxlbmd0aCl7dmFyIGM9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGQ9JCgiI0RFQUxFUkJSQU5EX1BSSU1BUlkiKS52YWwoKS50b0xvd2VyQ2FzZSgpO2lmKCJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiPT0kKCIjRklOQU5DRUZPUk1UWVBFIikudmFsKCkmJigiZm9yZCI9PWR8fCJsaW5jb2xuIj09ZCkmJiIiIT1jKXt2YXIgZT0oImVuIj09Yj8iaHR0cHM6Ly93d3cuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSI6Imh0dHBzOi8vZnIuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSIpKwpjO2I9KCJlbiI9PWI\/Imh0dHBzOi8vd3d3LmxpbmNvbG5jYW5hZGEuY29tL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0wmZGVhbGVySWQ9IjoiaHR0cHM6Ly9mci5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSIpK2M7YS5vZmYoImNsaWNrIik7YS5hdHRyKCJocmVmIiwiZm9yZCI9PWQ\/ZTpiKTthLmF0dHIoInRhcmdldCIsIl9ibGFuayIpfX19KX0pOwokKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7dHJ5e2lmKGdldFBhcmFtZXRlckJ5TmFtZSgicHJvbW8iKSl7dmFyIGE9MDxhY3RpdmF0ZWRQb3B1cERpdklELmxlbmd0aD9hY3RpdmF0ZWRQb3B1cERpdklEOiExO2lmKGEmJjA8YS5sZW5ndGgpe3ZhciBiPSQoIiMiK2EpLnBvcHVwaXplKHtwcmlvcml0eToxMDAsZW5kUG9wdXBRdWV1ZTohMH0pO3BvcHVwU3VwZXJ2aXNvci5yZWdpc3RlcihiKX19Im9iamVjdCI9PXR5cGVvZiBwb3B1cFN1cGVydmlzb3ImJnNldFRpbWVvdXQocG9wdXBTdXBlcnZpc29yLnNob3csNTAwKX1jYXRjaChjKXtjb25zb2xlLmxvZyhjKX19KTsKJChmdW5jdGlvbigpeyQoIi5uYXYgYSIpLm9uKCJjbGljayIsZnVuY3Rpb24oYSl7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYoKGE9JCh0aGlzKS5hdHRyKCJocmVmIikpJiYhUmVnRXhwKCJqYXZhc2NyaXB0OiIsImdpIikudGVzdChhKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChhLCJNRU5VX2NsaWNrZWRfVVJMIiksKGE9Ii8iPT1hPyJIb21lIjokKHRoaXMpLnRleHQoKSkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYSwiTUVOVV9jbGlja2VkX0lORk8iKSl9KX0pOwp2YXIgRDJDVXRpbHM9e0xhbmc6e2lzRU46ZnVuY3Rpb24oKXtyZXR1cm4hKCJmdW5jdGlvbiI9PT10eXBlb2YgJCYmJCgiQk9EWSIpLmhhc0NsYXNzKCJGUkVOQ0giKSl9LGdldFNob3J0TGFuZzpmdW5jdGlvbihhKXtyZXR1cm4gRDJDVXRpbHMuTGFuZy5pc0VOKCk\/YT8iRU4iOiJlbiI6YT8iRlIiOiJmciJ9fSxGb3JtYXQ6e3RvTnVtYmVyOmZ1bmN0aW9uKGEpe2E9YS50b1N0cmluZygpLnNwbGl0KCIuIik7Zm9yKHZhciBiPS8oXGQrKShcZHszfSkvO2IudGVzdChhWzBdKTspYVswXT1hWzBdLnJlcGxhY2UoYiwiJDEsJDIiKTtyZXR1cm4gYVswXX0sdG9QcmljZTpmdW5jdGlvbihhLGIpe3JldHVybiBiPyhiPUQyQ1V0aWxzLkxhbmcuaXNFTigpPyIiOiIgJCIsYCR7RDJDVXRpbHMuTGFuZy5pc0VOKCk\/IiQiOiIifSR7RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGEpfSR7Yn1gKTpgPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JHtEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYSl9PC9zcGFuPmB9fSwKTnVtYmVyOntyb3VuZERvd246ZnVuY3Rpb24oYSl7dmFyIGI9Mj09PWFyZ3VtZW50cy5sZW5ndGg\/cGFyc2VJbnQoYXJndW1lbnRzWzFdKToxO3JldHVybiBNYXRoLmZsb29yKGEvYikqYn0scm91bmRVcDpmdW5jdGlvbihhKXt2YXIgYj0yPT09YXJndW1lbnRzLmxlbmd0aD9wYXJzZUludChhcmd1bWVudHNbMV0pOjE7cmV0dXJuIE1hdGguY2VpbChhL2IpKmJ9fSxBcnJheXM6e2ZpbmQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubGVuZ3RoO2lmKDA8ZClmb3IodmFyIGU9MDtlPGQ7ZSsrKWlmKGFbZV1bYl09PWMpcmV0dXJuIGFbZV07cmV0dXJuLTF9fSxTdHJpbmc6e2NhcGl0YWxpemVGaXJzdExldHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK1N0cmluZyhhKS5zbGljZSgxKX19LE1vYmlsZTp7aXNNb2JpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gMDwkKCIjaXNNb2JpbGUiKS5sZW5ndGh9fX07CmZ1bmN0aW9uIHNldHVwRmluYW5jaW5nTGluayhhLGIpezQ4NT09KCQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpKSYmYi5jbGVhcmFuY2UmJjA8YS5sZW5ndGgmJihiPSQoIiNNYWluTWVudV9mNDgyYmFhYi1hYWM0LWVkYTYtNmI1Mi0zID4gYSIpLDA9PWIubGVuZ3RoJiYoYj0kKCIuQ0xFQVJBTkNFIikucGFyZW50KCkuZmluZCgiLnN1Ym1lbnVJdGVtOmZpcnN0LWNoaWxkIikpLDA8Yi5sZW5ndGgmJihiPWIuYXR0cigiaHJlZiIpLCIiIT09YiYmYS5hdHRyKCJocmVmIixiKSkpfXZhciBvcGVuV2luZG93cz1bXSx3aW5kb3dPcGVuT0c9d2luZG93Lm9wZW47CndpbmRvdy5vcGVuPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93T3Blbk9HLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxiPXt3aW5kb3c6YSxhcmdzOmFyZ3VtZW50c307b3BlbldpbmRvd3MucHVzaChiKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBqUXVlcnkmJmpRdWVyeShkb2N1bWVudCkudHJpZ2dlcigid2luZG93Lm9wZW4iLGIpO3JldHVybiBhfTsKJChmdW5jdGlvbigpeyQoZG9jdW1lbnQpLm9uKCJ3aW5kb3cub3BlbiIsZnVuY3Rpb24oYSxiKXthPWIuYXJncztmb3IodmFyIGM9ITEsZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKC0xPGFbZF0uaW5kZXhPZigiY2FyZmF4Iil8fGFbZF0uaW5kZXhPZigiY2FycHJvb2YiKSl7Yz0hMDticmVha31pZihjKXthPXdpbmRvdy5zY3JlZW4uYXZhaWxIZWlnaHR8fHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7dHJ5e2Iud2luZG93LnJlc2l6ZVRvKGIud2luZG93Lm91dGVyV2lkdGgsTWF0aC5yb3VuZCguOTUqYSkpfWNhdGNoKGUpe319fSl9KTsKJChmdW5jdGlvbigpe3ZhciBhPSQoIi51cF9tZW51IiksYj0kKCIucHJvbW90aW9uU2lkZVZCdXR0b24iKSxjPSQoJyNzbGlkZWl0ID4gbGFiZWxbZm9yPSJvcGVuLWl0ZW0iXTpub3QoLnRleHQtdXMtYnRuKScpO2lmKGEubGVuZ3RoJiZiLmxlbmd0aCl7dmFyIGQ9ITEsZT1mdW5jdGlvbigpe3ZhciBrPSQod2luZG93KS5zY3JvbGxUb3AoKSxoPSQod2luZG93KS5oZWlnaHQoKTtrPWEub2Zmc2V0KCkudG9wK2Eub3V0ZXJIZWlnaHQoKSsxMDAtaztoPU1hdGgubWF4KGgvMixrKTtiLnBhcmVudCgpLmhhc0NsYXNzKCJzcGVjaWFsU2NoZWR1bGVDb250ZW50Iil8fCJzcGVjaWFsU2NoZWR1bGVDb250ZW50Ij09Yi5wYXJlbnQoKS5hdHRyKCJpZCIpfHxiLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6aCsicHgiLHRyYW5zZm9ybToidHJhbnNsYXRlWSgtNTAlKSIsdHJhbnNpdGlvbjoibm9uZSJ9KTtjLmxlbmd0aCYmKGg9YlswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sCmMuY3NzKHtwb3NpdGlvbjoiZml4ZWQiLHRvcDpoKzUrInB4In0pKTtkPSExfTskKHdpbmRvdykub24oInNjcm9sbCByZXNpemUiLGZ1bmN0aW9uKCl7ZHx8KHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSksZD0hMCl9KTtzZXRUaW1lb3V0KGUsMTAwKX19KTtmdW5jdGlvbiByZXBsYWNlVXNlZFZlaGljbGVNb2RlbERpc3BsYXkoYSl7aWYoInN0cmluZyI9PT10eXBlb2YgYXx8YSBpbnN0YW5jZW9mIFN0cmluZykiZnVuY3Rpb24iPT09dHlwZW9mICQmJiQoIkJPRFkiKS5oYXNDbGFzcygiRlJFTkNIIil8fC0xIT09YS5pbmRleE9mKCJIeWJyaWRlIikmJihhPWEucmVwbGFjZSgiSHlicmlkZSIsIkh5YnJpZCIpKTtyZXR1cm4gYX0KJChmdW5jdGlvbigpe2lmKCQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5sZW5ndGgpe3ZhciBhPSQoIkJPRFkiKS5oYXNDbGFzcygiRlJFTkNIIik\/ImZyIjoiZW4iLGI9JCgiQk9EWSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iUsOpc2VydmV6LWxlIGF2ZWMgUGF5UGFsICEiOiJSZXNlcnZlIGl0ICB3aXRoIFBheVBhbCAhIjskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuZmluZCgnaW5wdXRbdHlwZT0iaW1hZ2UiXVtuYW1lPSJzdWJtaXQiXScpLmF0dHIoInNyYyIsIi9pbWFnZXMvY29udGludWVfd2l0aF9wYXlwYWxfIithKyIucG5nIik7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLmZpbmQoImZvcm0iKS5hdHRyKCJ0YXJnZXQiLCJwYXlwYWxJZnJhbWUiKTskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuZmluZCgidGFibGUgdHI6Zmlyc3QgdGQiKS5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAzPT10aGlzLm5vZGVUeXBlfSkuZmlyc3QoKS5yZXBsYWNlV2l0aChiKTskKCIucGF5cGFsX2J1dHRvbl9odG1sIGZvcm0iKS5maW5kKCdbbmFtZT0iaXRlbV9uYW1lIl0nKS5yZW1vdmUoKTsKJCgiLnBheXBhbF9idXR0b25faHRtbCBmb3JtIikuZmluZCgnW25hbWU9Iml0ZW1fbnVtYmVyIl0nKS5yZW1vdmUoKTthPSc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpdGVtX25hbWUiIHZhbHVlPSInKyQoIiNwaG9uZW1ha2UiKS52YWwoKSsiICIrJCgiI3Bob25lbW9kZWwiKS52YWwoKSsiICIrJCgiI3Bob25lbXllYXIiKS52YWwoKSsiIFN0b2NrKCMiKyQoIiNwaG9uZXN0b2NrbnVtYmVyIikudmFsKCkrJykiPic7JCgiLnBheXBhbF9idXR0b25faHRtbCBmb3JtIikuYXBwZW5kKGEpOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5maW5kKCdpbnB1dFt0eXBlPSJpbWFnZSJdW25hbWU9InN1Ym1pdCJdJykub24oImNsaWNrIixmdW5jdGlvbigpe2dhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJDbGlxdWVzIFBheVBhbCIsIk9jY2FzaW9uIiwkKCIjaGlkZGVuRGVhbGVyTmFtZSIpLnZhbCgpKyItIiskKCIjcGhvbmVtYWtlIikudmFsKCkrIi0iKyQoIiNwaG9uZW1vZGVsIikudmFsKCkrCiItIiskKCIjcGhvbmVteWVhciIpLnZhbCgpKyItIiskKCIjcGhvbmVzdG9ja251bWJlciIpLnZhbCgpLDEpfSk7JCgiI3BheXBhbFBvcHVwIikuZGV0YWNoKCkuYXBwZW5kVG8oImJvZHkiKTskKCcucGF5cGFsX2J1dHRvbl9odG1sIGlucHV0W25hbWU9InN1Ym1pdCJdJykub24oImNsaWNrIixmdW5jdGlvbigpeyQoIiNwYXlwYWxQb3B1cCIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9KTskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuc2hvdygpfSQoIiN0ZXN0RHJpdmVUeXBlIikubGVuZ3RoJiYoIlZpcnR1YWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpfHwiVmlydHVlbCI9PSQoIiN0ZXN0RHJpdmVUeXBlIikudmFsKCkpJiYkKCIucHJlZmVyZWRWaXJ0dWFsVG9vbCIpLnNob3coKX0pOwpmdW5jdGlvbiBwcmljZVJlcXVlc3RDb21tZW50VGV4dCgpe3ZhciBhPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKSxiPSQoIiNpc21vYmlsZSIpLGM9JCgiI3F1ZXN0aW9uc0NvbW1lbnRzIik7YT0iRU5HTElTSCI9PWEudmFsKCk\/IkhpLCBJJ2QgbGlrZSB0byBnZXQgeW91ciBiZXN0IHByaWNlIG9uIGEgMCAgIjoiQm9uam91ciwgaidhaW1lcmFpcyBhdm9pciB2b3RyZSBtZWlsbGV1cnMgcHJpeCBwb3VyIHVuICAgMCI7MDxiLmxlbmd0aCYmIjEiPT1iLnZhbCgpJiYwPGMubGVuZ3RoJiZjLnZhbCgpPT1hJiZjLnZhbCgiIil9JChmdW5jdGlvbigpe3ByaWNlUmVxdWVzdENvbW1lbnRUZXh0KCl9KTsKJChmdW5jdGlvbigpe3ZhciBhPSQoIiNmb290ZXIgLmljb24tdGV4dCBzcGFuW2l0ZW1wcm9wPSd0ZWxlcGhvbmUnXSBhLnBob25lLWxpbmsiKSxiPSQoIiNmb290ZXIgLmljb24tdGV4dCAuZmEtcGhvbmUiKTswPGEubGVuZ3RoJiYwPGIubGVuZ3RoJiYiIj09YS5odG1sKCkudHJpbSgpJiZiLmhpZGUoKX0pOwpmdW5jdGlvbiBwYWdlVmlld0NvdW50R29vZ2xlRXZlbnQoKXt2YXIgYT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsYj0wLGM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZDJjX1ZEUE1WIik7bnVsbCE9Yz8oYz1KU09OLnBhcnNlKGMpLGI9bnVsbCE9Y1thXT9jW2FdOjAsY1thXT1wYXJzZUludChiKSsxKTooYz17fSxjW2FdPTEpO2E9IjEiPT0kKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikudmFsKCk\/Ik5FVyI6JCgiI2RlZmF1bHREZXBhcnRtZW50IikudmFsKCk7MD09Yj9nYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiVkRQIG11bHRpcGxlIHZpZXdzIixhLCIxeCIsMSk6MT09Yj9nYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiVkRQIG11bHRpcGxlIHZpZXdzIixhLCIyeCIsMSk6Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlZEUCBtdWx0aXBsZSB2aWV3cyIsYSwiM3grIiwxKTtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJkMmNfVkRQTVYiLEpTT04uc3RyaW5naWZ5KGMpKX0KJC5mbi5pc0luVmlld3BvcnQ9ZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLm9mZnNldCgpLnRvcCxiPWErJCh0aGlzKS5vdXRlckhlaWdodCgpLGM9JCh3aW5kb3cpLnNjcm9sbFRvcCgpLGQ9YyskKHdpbmRvdykuaGVpZ2h0KCk7cmV0dXJuIGI+YyYmYTxkfTskLmZuLmlzQWJvdmVWaWV3cG9ydD1mdW5jdGlvbihhKXthPWF8fDA7dmFyIGI9JCh0aGlzKS5vZmZzZXQoKS50b3ArJCh0aGlzKS5vdXRlckhlaWdodCgpLGM9JCh3aW5kb3cpLnNjcm9sbFRvcCgpO3JldHVybiBiPmMrYX07ZnVuY3Rpb24gc2V0UG9wdXBPcGVuT25DbGljaygpeyQoIltkYXRhLXBvcHVwaWRdIikuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhpcykuYXR0cigiZGF0YS1wb3B1cGlkIik7JCh0aGlzKS5vbigiY2xpY2sgdGFwIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7JCgiIyIrYSkucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0pfSl9CmZ1bmN0aW9uIGFkZERlYWxlckluc2lkZVNjcmlwdCgpe2lmKCQoIi5kZWFsZXItaW5zaWRlLWN0YS1hY3Rpb24tYm94IikubGVuZ3RoKXt2YXIgYT0kKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmF0dHIoImRhdGEtaWREZWFsZXIiKSxiPSQoIi5kZWFsZXItaW5zaWRlLWN0YS1hY3Rpb24tYm94IikuYXR0cigiZGF0YS1sYW5nIiksYz0kKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmF0dHIoImRhdGEtYnV0dG9uLXR5cGUiKSxkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2Quc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9qYXZhc2NyaXB0Iik7ZC5zZXRBdHRyaWJ1dGUoInNyYyIsImh0dHBzOi8vZGVhbGVyaW5zaWRlYXBwLmNvbS93aWRnZXRzL2RlYWxlcl9pbnNpZGVfY2FsbC5qcz9kZWFsZXJJZD0iK2ErIiZsYW5nPSIrYisiJmJ1dHRvblR5cGU9IitjKTtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGQpfX0KJChmdW5jdGlvbigpe3NldFBvcHVwT3Blbk9uQ2xpY2soKTthZGREZWFsZXJJbnNpZGVTY3JpcHQoKX0pO2Z1bmN0aW9uIG1vdG9pbnNpZ2h0U2hvcEdvb2dsZU9wdGltaXplKCl7JCgiI2pzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyLWlucHV0IikubGVuZ3RoJiYkKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJiQoIi5qcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIpLmF0dHIoImRhdGEtbW90b2luc2lnaHRzaG9waWZyYW1ldXJsIiwkKCIjanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXItaW5wdXQiKS52YWwoKSl9ZnVuY3Rpb24gaHRtbFRvTm9kZShhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLmlubmVySFRNTD1hLnRyaW0oKTtyZXR1cm4gYi5maXJzdEVsZW1lbnRDaGlsZH0KZnVuY3Rpb24gaHRtbFRvRG9jdW1lbnRGcmFnKGEpe3JldHVybiBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChhKX1mdW5jdGlvbiBodG1sVG9FbGVtZW50cyhhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2IuaW5uZXJIVE1MPWE7cmV0dXJuIGIuY29udGVudC5jaGlsZE5vZGVzfQpjb25zdCB2aWV3UG9ydE9ic2VydmVyPWZ1bmN0aW9uKGEpe2xldCBiPSExLGM9ITEsZD01MDtjb25zdCBlPWs9PntrPWtbMF07bGV0IGg9LjAxPj1rLmludGVyc2VjdGlvblJhdGlvJiZrLmJvdW5kaW5nQ2xpZW50UmVjdC50b3A8ZDtjLmNsYXNzTGlzdC50b2dnbGUoInRvcC1maXhlZCIsaCk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNtc0N0YUJ0biIpLmZvckVhY2gobj0+bi5oaWRkZW49IWgpO251bGwhPT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9hc3QtY29udGFpbmVyIikmJihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9hc3QtY29udGFpbmVyIikuaGlkZGVuPSFoKX07cmV0dXJue29ic2VydmU6KCk9PntpZihhKXtkKz1hLm9mZnNldEhlaWdodCsxNjt2YXIgaz1hLmNsb3Nlc3QoIi5vYnNlcnZlZC13cmFwcGVyIil8fCExO2lmKCFrKXtsZXQgaD1odG1sVG9Ob2RlKCc8ZGl2IGNsYXNzPSJmaXhlZC13cmFwcGVyIj48L2Rpdj4nKTtrPWh0bWxUb05vZGUoJzxkaXYgY2xhc3M9Im9ic2VydmVkLXdyYXBwZXIiPjwvZGl2PicpOwphLmFmdGVyKGspO2suYXBwZW5kQ2hpbGQoaCk7aC5hcHBlbmRDaGlsZChhKTtrLnN0eWxlLmhlaWdodD1gJHtoLm9mZnNldEhlaWdodH1weGB9Yj1rO2M9Yi5xdWVyeVNlbGVjdG9yKCIuZml4ZWQtd3JhcHBlciIpOyhuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZSx7cm9vdE1hcmdpbjpgLSR7ZH1weCAwcHggMHB4IDBweGAsdGhyZXNob2xkOlswLC4wMV19KSkub2JzZXJ2ZShiKX19fX07CmZ1bmN0aW9uIGQyY0Zvb3RlckRlbGV0ZUFsbENvb2tpZXMoYSl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImQyZmF2RGF0YSIpO2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJmb3JtRmlsbERhdGEiKTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV91c2VySWQiKTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiKTt2YXIgYj13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsYz1iO2I9Yi5yZXBsYWNlKCJ3d3cuIiwiIik7dmFyIGQ9Yj1iLnJlcGxhY2UoIm0uIiwiIik7Yi5pbmNsdWRlcygiZDJjbWVkaWEuY2EiKSYmKGI9ImQyY21lZGlhLmNhIik7Zm9yKHZhciBlPWRvY3VtZW50LmNvb2tpZS5zcGxpdCgiOyIpLGs9MDtrPGUubGVuZ3RoO2srKyl7dmFyIGg9ZVtrXSxuPWguaW5kZXhPZigiPSIpO2g9LTE8bj9oLnN1YnN0cigwLG4pOmg7ImQyY19jb29raWVfY29uc2VudCIhPWgudHJpbSgpJiYiT3B0YW5vbkFsZXJ0Qm94Q2xvc2VkIiE9CmgudHJpbSgpJiYiT3B0YW5vbkNvbnNlbnQiIT1oLnRyaW0oKSYmKGg9aC50cmltKCksZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0uIitiKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0iK2IrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPSIrYysiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49LiIrZCsiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49IitkKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0uZDJjbWVkaWEuY2E7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsCmRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49ZDJjbWVkaWEuY2E7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGNvbnNvbGUubG9nKCJEMkRDIixoLGIpLGs9PXBhcnNlRmxvYXQoZS5sZW5ndGgpLTEmJigidW5kZWZpbmVkIj09PXR5cGVvZiBhJiYkKCIjZDJjRm9vdGVyQ29va2llRGVsZXRlIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKSxzZXRUaW1lb3V0KGQyY0Zvb3RlckRlbGV0ZUFsbENvb2tpZXNSZWZyZXNoLDJFMykpKX1yZXR1cm4hMH0KZnVuY3Rpb24gZDJjRm9vdGVyRGVsZXRlQWxsQ29va2llc1JlZnJlc2goKXt3aW5kb3cudG9wPT09d2luZG93LnNlbGYmJmxvY2F0aW9uLnJlbG9hZCgpfQpmdW5jdGlvbiBHb29nbGVDYXB0Y2hhKCl7dGhpcy5yZXNwb25zZVRva2VuPSIiO3RoaXMud2lkZ2V0SWQ9LTE7dGhpcy5wYXNzZWQ9ITE7dmFyIGE9JC5EZWZlcnJlZCgpLGI9dGhpcztfX2luaXQ9ZnVuY3Rpb24oKXt0cnl7aWYoIXdpbmRvdy5ncmVjYXB0Y2hhKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxkPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtjLnNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzIjtkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsZCl9fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpfX07X19sb2FkQ2FwdGNoYT1mdW5jdGlvbigpe2lmKCEoLTE8Yi53aWRnZXRJZCkpdHJ5e3ZhciBjPSJnb29nbGVXaWRnZXRfIitNYXRoLmZsb29yKDE2Nzc3MjE1Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTskKCc8ZGl2IGlkPSInK2MrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+JykuYXBwZW5kVG8oImJvZHkiKTsKYi53aWRnZXRJZD1ncmVjYXB0Y2hhLnJlbmRlcihjLHtzaXRla2V5OiI2TGZwZEQwVUFBQUFBUGQ0UzdJa2U1RWR4MDF5M1lYZDVJLXUzZHhQIixjYWxsYmFjazpfX3N1Ym1pdENhcHRjaGEsImVycm9yLWNhbGxiYWNrIjpiLmZhaWwsc2l6ZToiaW52aXNpYmxlIn0pfWNhdGNoKGQpe2NvbnNvbGUubG9nKGQpfX07X19zdWJtaXRDYXB0Y2hhPWZ1bmN0aW9uKGMpe2IucmVzcG9uc2VUb2tlbj1jO2IucGFzc2VkPSEwO2EucmVzb2x2ZSgpfTtiLmdldFJlc3BvbnNlPWZ1bmN0aW9uKCl7dmFyIGM9JC5EZWZlcnJlZCgpO3dpbmRvdy5ncmVjYXB0Y2hhPyhfX2xvYWRDYXB0Y2hhKCksZ3JlY2FwdGNoYS5leGVjdXRlKGIud2lkZ2V0SWQpLGEuZG9uZShmdW5jdGlvbigpe2MucmVzb2x2ZShiLnJlc3BvbnNlVG9rZW4pfSkpOmMucmVzb2x2ZSgpO3JldHVybiBjfTtiLmZhaWw9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiR1JDIEZhaWwiLGFyZ3VtZW50cyl9O19faW5pdCgpfQpmdW5jdGlvbiBnZXRMdXh1cnlUYXhBbW91bnQoYSl7dmFyIGI9MDsxRTU8YSYmKGI9LjEqYSxhPS4yKihhLTFFNSksYj1iPGE\/YjphKTtyZXR1cm4gTWF0aC5yb3VuZChiKX0KdmFyIHdvcmRzPVtdLHBhcnQsd29yZEluZGV4PTAsb2Zmc2V0PTAsbGVuPTEsZm9yd2FyZHM9ITAsc2tpcF9jb3VudD0wLHNraXBfZGVsYXk9MTUsc3BlZWQ9NzAsd29yZGZsaWNrPWZ1bmN0aW9uKGEsYil7d29yZHM9YTtsZW49d29yZHMubGVuZ3RoO3NldEludGVydmFsKGZ1bmN0aW9uKCl7Zm9yd2FyZHM\/b2Zmc2V0Pj13b3Jkc1t3b3JkSW5kZXhdLmxlbmd0aCYmKCsrc2tpcF9jb3VudCxza2lwX2NvdW50PT1za2lwX2RlbGF5JiYoZm9yd2FyZHM9ITEsc2tpcF9jb3VudD0wKSk6MD09b2Zmc2V0JiYoZm9yd2FyZHM9ITAsd29yZEluZGV4Kyssb2Zmc2V0PTAsd29yZEluZGV4Pj1sZW4mJih3b3JkSW5kZXg9MCkpO3BhcnQ9d29yZHNbd29yZEluZGV4XS5zdWJzdHIoMCxvZmZzZXQpOzA9PXNraXBfY291bnQmJihmb3J3YXJkcz9vZmZzZXQrKzpvZmZzZXQtLSk7Yi50ZXh0KHBhcnQpfSxzcGVlZCl9OwpmdW5jdGlvbiBpc0luVmlld3BvcnQoYSxiKXtiPXZvaWQgMD09PWI\/e306YjthPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bGV0IGM9aXNOdW1lcmljKGIudG9wKT9iLnRvcDowO2I9aXNOdW1lcmljKGIubGVmdCk\/Yi5sZWZ0OjA7cmV0dXJuIE1hdGguZmxvb3IoYS50b3ApPj1jJiZNYXRoLmZsb29yKGEubGVmdCk+PWImJk1hdGguZmxvb3IoYS5ib3R0b20pPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSYmTWF0aC5mbG9vcihhLnJpZ2h0KTw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpfWZ1bmN0aW9uIGlzTnVtZXJpYyhhKXtyZXR1cm4vXi0\/XGQrJC9nLnRlc3QoYSl9CmRvY1JlYWR5QXJyLnB1c2goKCk9Pntkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT0iYnV0dG9uIl0nKS5mb3JFYWNoKGE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGI9Pntjb25zdCBjPXZvaWQgMCE9PWIua2V5P2Iua2V5OmIua2V5Q29kZTtpZigiRW50ZXIiPT09Y3x8MTM9PT1jKWIucHJldmVudERlZmF1bHQoKSxhLmNsaWNrKCl9KX0pfSk7CigoKT0+e2xldCBhPWRvY3VtZW50LmNvb2tpZSxiPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRG9jdW1lbnQucHJvdG90eXBlLCJjb29raWUiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRG9jdW1lbnQucHJvdG90eXBlLCJfY29va2llIixiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRG9jdW1lbnQucHJvdG90eXBlLCJjb29raWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcy5fY29va2llfSxzZXQoYyl7dmFyIGQ9Yy50cmltKCkuc3BsaXQoIjsiKTtsZXQgZT17fTt2YXIgaz0wO2Zvcih2YXIgaCBvZiBkKWQ9aC50cmltKCkuc3BsaXQoIj0iKSwwPT1rPyhlLm5hbWU9ZFswXSxlLnZhbHVlPWRbMV18fDApOiIiIT1kWzBdJiYoZVtkWzBdXT1kWzFdfHwwKSxrKys7az1lLm5hbWU7aD1lLmV4cGlyZXN8fDA7ZD1lLnBhdGh8fCIvIjtsZXQgbj1lLmRvbWFpbnx8IiI7ZS52YWx1ZSYmIiIhPWUudmFsdWUmJm51bGwhPWUudmFsdWUmJgp3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhrLGUudmFsdWUsaCxkLG4pO2M9dGhpcy5fY29va2llPWM7aWYoYyE9PWEpdHJ5e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvb2tpZWNoYW5nZSIse2RldGFpbDp7b2xkVmFsdWU6YSxuZXdWYWx1ZTpjfX0pKX1maW5hbGx5e2E9Y319fSl9KSgpO2RvY1JlYWR5QXJyLnB1c2goKCk9Pnt2YXIgYT1udWxsO2lmKHdpbmRvdy5sb2NhdGlvbi5oYXNoKXt0cnl7YT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGRlY29kZVVSSSh3aW5kb3cubG9jYXRpb24uaGFzaCkpfWNhdGNoKGIpe3JldHVybn1hJiYoYT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCt3aW5kb3cuc2Nyb2xsWSx3aW5kb3cuc2Nyb2xsVG8oe3RvcDphLTIwLGJlaGF2aW9yOiJzbW9vdGgifSkpfX0pOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe2RlYnVnKHtjb2xsZWN0OmN9KTtjPWMubmV3VVJMP25ldyBVUkwoYy5uZXdVUkwpOndpbmRvdy5sb2NhdGlvbjsiIiE9PWMuaGFzaCYmYy5oYXNoLnN1YnN0cmluZygxKS5zcGxpdCgiJiIpLm1hcChmdW5jdGlvbihkLGUsayl7dHJ5e3ZhciBbaCxuXT1kLnNwbGl0KCI9Iik7c3dpdGNoKGgpe2Nhc2UgInV0bV9lIjp2YXIgeD1hdG9iKG4pLnNwbGl0KCI6OiIpLHY9bnVsbCE9Z2V0Q29va2llKCJ1dG1fY2FtcGFpZ24iKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnZXRDb29raWUoInV0bV9jYW1wYWlnbiIpP2dldENvb2tpZSgidXRtX2NhbXBhaWduIik6eFsyXTt2JiZzZXRDb29raWUoInV0bV9jYW1wYWlnbiIsdiwxODApO3ZhciBmPW51bGwhPWdldENvb2tpZSgidXRtX3NvdXJjZSIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdldENvb2tpZSgidXRtX3NvdXJjZSIpP2dldENvb2tpZSgidXRtX3NvdXJjZSIpOnhbM107ZiYmc2V0Q29va2llKCJ1dG1fc291cmNlIiwKZiwxODApO2JyZWFrO2Nhc2UgInV0bV9leCI6eD1hdG9iKG4pO3ZhciBnPW5ldyBVUkwoImh0dHBzOi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCt4KTswPGcuc2VhcmNoUGFyYW1zLnNpemUmJmcuc2VhcmNoUGFyYW1zLmZvckVhY2goYil9cmV0dXJue2tleTpoLHZhbHVlOm59fWNhdGNoKG0pe2RlYnVnKG0pfX0pfWZ1bmN0aW9uIGIoYyxkKXt0cnl7c3dpdGNoKGQpe2Nhc2UgIkRpc3BsYXlTb3VyY2UiOmNhc2UgImdjbGlkIjpkZWJ1Zyh7a2V5OmQsY29va2llOmdldENvb2tpZShkKSx2YWx1ZTpjfSksbnVsbCE9Z2V0Q29va2llKGQpJiYiIiE9Z2V0Q29va2llKGQpfHxzZXRDb29raWUoZCxjLDE4MCl9fWNhdGNoKGUpe2RlYnVnKGUpfX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYSwhMSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLGEsITEpfSkoKTswPj0kKCIjc2hhcmVPbkZhY2Vib29rIikubGVuZ3RoJiYkKCJmb290ZXIiKS5wcmVwZW5kKCc8ZGl2IGlkPSJzaGFyZU9uRmFjZWJvb2siIGRhdGEtZXhwbGFpbj0iaG9uZGEvYWN1cmEgY2VydCB1c2VzIGd0bSwgaXQgaGFzIGEgYmluZCB0aGF0IHRocm93cyBhbiBlcnJvciBpZiB0aGlzIGlkIGRvZXMgbm90IGV4aXN0LiBjb2RlIGlzIGZyb20gZ3RtIHNpZGUuIj48L2Rpdj4nKTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mICQuY29va2llKXtsZXQgYzt2YXIgYj1udWxsIT0oYz0kLmNvb2tpZSgiVGVydGlhcnlTb3VyY2UiKSk\/YzoiIjsiIiE9PWImJigkKCcqW2hyZWYqPSIkRkRUZXJ0aWFyeVNvdXJjZSJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cigiaHJlZiIsJCh0aGlzKS5hdHRyKCJocmVmIikucmVwbGFjZSgiJEZEVGVydGlhcnlTb3VyY2UiLGIpKX0pLCQoJypbb25jbGljayo9IiRGRFRlcnRpYXJ5U291cmNlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJvbmNsaWNrIiwkKHRoaXMpLmF0dHIoIm9uY2xpY2siKS5yZXBsYWNlKCIkRkRUZXJ0aWFyeVNvdXJjZSIsYikpfSksJCgnKlt2YWx1ZSo9IiRGRFRlcnRpYXJ5U291cmNlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJ2YWx1ZSIsJCh0aGlzKS5hdHRyKCJ2YWx1ZSIpLnJlcGxhY2UoIiRGRFRlcnRpYXJ5U291cmNlIiwKYikpfSkpfX1hKCk7c2V0VGltZW91dChhLDFFMyk7c2V0VGltZW91dChhLDVFMyk7MDw9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNYWMiKSYmKCQoIi5sYW5ndWFnZUJhciAuZ1JhdGluZy1pY29uI2dSYXRpbmcgLnJhdGluZyIpLmFkZENsYXNzKCJtYXJnaW4tYm90dG9tLS00cHgiKSwkKCIubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gYS5idG4gPiBzcGFuIikuYWRkQ2xhc3MoIm1hcmdpbi1ib3R0b20tLTRweCIpLCQoIi5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbl90ZXh0IikuYWRkQ2xhc3MoIm1hcmdpbi1ib3R0b20tLTRweCIpLCQoIi5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbl90ZXh0IikuY3NzKCJ0b3AiLCI1MiUiKSl9KSgpOwpmdW5jdGlvbiBhZGROb1RyYW5zbGF0ZUVtYWlsRGVmKCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkKj0iZW1haWxCb2R5RGVmIl0sIFtpZCo9ImVtYWlsU3ViamVjdERlZiJdLCBbY2xhc3MqPSJlbWFpbFN1YmplY3QiXSwgW2NsYXNzKj0iZW1haWxCb2R5Il0sIFtjbGFzcyo9ImxlYWRFbWFpbCJdLCBbY2xhc3MqPSJlbWFpbC1kZWZpbml0aW9uIl0nKS5mb3JFYWNoKGE9PnthLnNldEF0dHJpYnV0ZSgidHJhbnNsYXRlIiwibm8iKX0pfWFkZE5vVHJhbnNsYXRlRW1haWxEZWYoKTtmdW5jdGlvbiB2d3MoKXtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoIi0tdndzIixgJHt3aW5kb3cuaW5uZXJXaWR0aC8xMDAtKHdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCkvMTAwLzJ9cHhgKX12d3MoKTtsZXQgcm9fdndzPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+e3Z3cygpfSk7cm9fdndzLm9ic2VydmUoZG9jdW1lbnQuYm9keSk7Ci8qKiAvbS9qcy9sYXp5c2l6ZXMubWluLmpzICoqLwovKiEgbGF6eXNpemVzIC0gdjQuMS41ICovCi8qISBtb2RpZmllZDogb2xpdmllckBkMmNtZWRpYS5jYSB0byBzdXBwb3J0IGRhdGEtaW1nc3JjIGJlY2F1c2Ugb2Ygb25lVHJ1c3QgYnJlYWtzIGxhenlsb2FkIG9uIGRhdGEtc3JjICovCiFmdW5jdGlvbihhLGIpe3ZhciBjPWIoYSxhLmRvY3VtZW50KTthLmxhenlTaXplcz1jLCJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyYmKG1vZHVsZS5leHBvcnRzPWMpfSh3aW5kb3csZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7aWYoYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXt2YXIgYyxkLGU9Yi5kb2N1bWVudEVsZW1lbnQsZj1hLkRhdGUsZz1hLkhUTUxQaWN0dXJlRWxlbWVudCxoPSJhZGRFdmVudExpc3RlbmVyIixpPSJnZXRBdHRyaWJ1dGUiLGo9YVtoXSxrPWEuc2V0VGltZW91dCxsPWEucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxrLG09YS5yZXF1ZXN0SWRsZUNhbGxiYWNrLG49L15waWN0dXJlJC9pLG89WyJsb2FkIiwiZXJyb3IiLCJsYXp5aW5jbHVkZWQiLCJfbGF6eWxvYWRlZCJdLHA9e30scT1BcnJheS5wcm90b3R5cGUuZm9yRWFjaCxyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHBbYl18fChwW2JdPW5ldyBSZWdFeHAoIihcXHN8XikiK2IrIihcXHN8JCkiKSkscFtiXS50ZXN0KGFbaV0oImNsYXNzIil8fCIiKSYmcFtiXX0scz1mdW5jdGlvbihhLGIpe3IoYSxiKXx8YS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwoYVtpXSgiY2xhc3MiKXx8IiIpLnRyaW0oKSsiICIrYil9LHQ9ZnVuY3Rpb24oYSxiKXt2YXIgYzsoYz1yKGEsYikpJiZhLnNldEF0dHJpYnV0ZSgiY2xhc3MiLChhW2ldKCJjbGFzcyIpfHwiIikucmVwbGFjZShjLCIgIikpfSx1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jP2g6InJlbW92ZUV2ZW50TGlzdGVuZXIiO2MmJnUoYSxiKSxvLmZvckVhY2goZnVuY3Rpb24oYyl7YVtkXShjLGIpfSl9LHY9ZnVuY3Rpb24oYSxkLGUsZixnKXt2YXIgaD1iLmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiBlfHwoZT17fSksZS5pbnN0YW5jZT1jLGguaW5pdEV2ZW50KGQsIWYsIWcpLGguZGV0YWlsPWUsYS5kaXNwYXRjaEV2ZW50KGgpLGh9LHc9ZnVuY3Rpb24oYixjKXt2YXIgZTshZyYmKGU9YS5waWN0dXJlZmlsbHx8ZC5wZik\/KGMmJmMuc3JjJiYhYltpXSgic3Jjc2V0IikmJmIuc2V0QXR0cmlidXRlKCJzcmNzZXQiLGMuc3JjKSxlKHtyZWV2YWx1YXRlOiEwLGVsZW1lbnRzOltiXX0pKTpjJiZjLnNyYyYmKGIuc3JjPWMuc3JjKX0seD1mdW5jdGlvbihhLGIpe3JldHVybihnZXRDb21wdXRlZFN0eWxlKGEsbnVsbCl8fHt9KVtiXX0seT1mdW5jdGlvbihhLGIsYyl7Zm9yKGM9Y3x8YS5vZmZzZXRXaWR0aDtjPGQubWluU2l6ZSYmYiYmIWEuX2xhenlzaXplc1dpZHRoOyljPWIub2Zmc2V0V2lkdGgsYj1iLnBhcmVudE5vZGU7cmV0dXJuIGN9LHo9ZnVuY3Rpb24oKXt2YXIgYSxjLGQ9W10sZT1bXSxmPWQsZz1mdW5jdGlvbigpe3ZhciBiPWY7Zm9yKGY9ZC5sZW5ndGg\/ZTpkLGE9ITAsYz0hMTtiLmxlbmd0aDspYi5zaGlmdCgpKCk7YT0hMX0saD1mdW5jdGlvbihkLGUpe2EmJiFlP2QuYXBwbHkodGhpcyxhcmd1bWVudHMpOihmLnB1c2goZCksY3x8KGM9ITAsKGIuaGlkZGVuP2s6bCkoZykpKX07cmV0dXJuIGguX2xzRmx1c2g9ZyxofSgpLEE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9mdW5jdGlvbigpe3ooYSl9OmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWFyZ3VtZW50czt6KGZ1bmN0aW9uKCl7YS5hcHBseShiLGMpfSl9fSxCPWZ1bmN0aW9uKGEpe3ZhciBiLGM9MCxlPWQudGhyb3R0bGVEZWxheSxnPWQucmljVGltZW91dCxoPWZ1bmN0aW9uKCl7Yj0hMSxjPWYubm93KCksYSgpfSxpPW0mJmc+NDk\/ZnVuY3Rpb24oKXttKGgse3RpbWVvdXQ6Z30pLGchPT1kLnJpY1RpbWVvdXQmJihnPWQucmljVGltZW91dCl9OkEoZnVuY3Rpb24oKXtrKGgpfSwhMCk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBkOyhhPSEwPT09YSkmJihnPTMzKSxifHwoYj0hMCxkPWUtKGYubm93KCktYyksZDwwJiYoZD0wKSxhfHxkPDk\/aSgpOmsoaSxkKSl9fSxDPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD05OSxlPWZ1bmN0aW9uKCl7Yj1udWxsLGEoKX0sZz1mdW5jdGlvbigpe3ZhciBhPWYubm93KCktYzthPGQ\/ayhnLGQtYSk6KG18fGUpKGUpfTtyZXR1cm4gZnVuY3Rpb24oKXtjPWYubm93KCksYnx8KGI9ayhnLGQpKX19OyFmdW5jdGlvbigpe3ZhciBiLGM9e2xhenlDbGFzczoibGF6eWxvYWQiLGxvYWRlZENsYXNzOiJsYXp5bG9hZGVkIixsb2FkaW5nQ2xhc3M6Imxhenlsb2FkaW5nIixwcmVsb2FkQ2xhc3M6ImxhenlwcmVsb2FkIixlcnJvckNsYXNzOiJsYXp5ZXJyb3IiLGF1dG9zaXplc0NsYXNzOiJsYXp5YXV0b3NpemVzIixzcmNBdHRyOiJkYXRhLWltZ3NyYyIsc3Jjc2V0QXR0cjoiZGF0YS1zcmNzZXQiLHNpemVzQXR0cjoiZGF0YS1zaXplcyIsbWluU2l6ZTo0MCxjdXN0b21NZWRpYTp7fSxpbml0OiEwLGV4cEZhY3RvcjoxLjUsaEZhYzouOCxsb2FkTW9kZToyLGxvYWRIaWRkZW46ITAscmljVGltZW91dDowLHRocm90dGxlRGVsYXk6MTI1fTtkPWEubGF6eVNpemVzQ29uZmlnfHxhLmxhenlzaXplc0NvbmZpZ3x8e307Zm9yKGIgaW4gYyliIGluIGR8fChkW2JdPWNbYl0pO2EubGF6eVNpemVzQ29uZmlnPWQsayhmdW5jdGlvbigpe2QuaW5pdCYmRigpfSl9KCk7dmFyIEQ9ZnVuY3Rpb24oKXt2YXIgZyxsLG0sbyxwLHksRCxGLEcsSCxJLEosSyxMLE09L15pbWckL2ksTj0vXmlmcmFtZSQvaSxPPSJvbnNjcm9sbCJpbiBhJiYhLyhnbGV8aW5nKWJvdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxQPTAsUT0wLFI9MCxTPS0xLFQ9ZnVuY3Rpb24oYSl7Ui0tLGEmJmEudGFyZ2V0JiZ1KGEudGFyZ2V0LFQpLCghYXx8UjwwfHwhYS50YXJnZXQpJiYoUj0wKX0sVT1mdW5jdGlvbihhLGMpe3ZhciBkLGY9YSxnPSJoaWRkZW4iPT14KGIuYm9keSwidmlzaWJpbGl0eSIpfHwiaGlkZGVuIiE9eChhLnBhcmVudE5vZGUsInZpc2liaWxpdHkiKSYmImhpZGRlbiIhPXgoYSwidmlzaWJpbGl0eSIpO2ZvcihGLT1jLEkrPWMsRy09YyxIKz1jO2cmJihmPWYub2Zmc2V0UGFyZW50KSYmZiE9Yi5ib2R5JiZmIT1lOykoZz0oeChmLCJvcGFjaXR5Iil8fDEpPjApJiYidmlzaWJsZSIhPXgoZiwib3ZlcmZsb3ciKSYmKGQ9Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxnPUg+ZC5sZWZ0JiZHPGQucmlnaHQmJkk+ZC50b3AtMSYmRjxkLmJvdHRvbSsxKTtyZXR1cm4gZ30sVj1mdW5jdGlvbigpe3ZhciBhLGYsaCxqLGssbSxuLHAscSxyPWMuZWxlbWVudHM7aWYoKG89ZC5sb2FkTW9kZSkmJlI8OCYmKGE9ci5sZW5ndGgpKXtmPTAsUysrLG51bGw9PUsmJigiZXhwYW5kImluIGR8fChkLmV4cGFuZD1lLmNsaWVudEhlaWdodD41MDAmJmUuY2xpZW50V2lkdGg+NTAwPzUwMDozNzApLEo9ZC5leHBhbmQsSz1KKmQuZXhwRmFjdG9yKSxRPEsmJlI8MSYmUz4yJiZvPjImJiFiLmhpZGRlbj8oUT1LLFM9MCk6UT1vPjEmJlM+MSYmUjw2P0o6UDtmb3IoO2Y8YTtmKyspaWYocltmXSYmIXJbZl0uX2xhenlSYWNlKWlmKE8paWYoKHA9cltmXVtpXSgiZGF0YS1leHBhbmQiKSkmJihtPTEqcCl8fChtPVEpLHEhPT1tJiYoeT1pbm5lcldpZHRoK20qTCxEPWlubmVySGVpZ2h0K20sbj0tMSptLHE9bSksaD1yW2ZdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLChJPWguYm90dG9tKT49biYmKEY9aC50b3ApPD1EJiYoSD1oLnJpZ2h0KT49bipMJiYoRz1oLmxlZnQpPD15JiYoSXx8SHx8R3x8RikmJihkLmxvYWRIaWRkZW58fCJoaWRkZW4iIT14KHJbZl0sInZpc2liaWxpdHkiKSkmJihsJiZSPDMmJiFwJiYobzwzfHxTPDQpfHxVKHJbZl0sbSkpKXtpZihiYShyW2ZdKSxrPSEwLFI+OSlicmVha31lbHNlIWsmJmwmJiFqJiZSPDQmJlM8NCYmbz4yJiYoZ1swXXx8ZC5wcmVsb2FkQWZ0ZXJMb2FkKSYmKGdbMF18fCFwJiYoSXx8SHx8R3x8Rnx8ImF1dG8iIT1yW2ZdW2ldKGQuc2l6ZXNBdHRyKSkpJiYoaj1nWzBdfHxyW2ZdKTtlbHNlIGJhKHJbZl0pO2omJiFrJiZiYShqKX19LFc9QihWKSxYPWZ1bmN0aW9uKGEpe3MoYS50YXJnZXQsZC5sb2FkZWRDbGFzcyksdChhLnRhcmdldCxkLmxvYWRpbmdDbGFzcyksdShhLnRhcmdldCxaKSx2KGEudGFyZ2V0LCJsYXp5bG9hZGVkIil9LFk9QShYKSxaPWZ1bmN0aW9uKGEpe1koe3RhcmdldDphLnRhcmdldH0pfSwkPWZ1bmN0aW9uKGEsYil7dHJ5e2EuY29udGVudFdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGIpfWNhdGNoKGMpe2Euc3JjPWJ9fSxfPWZ1bmN0aW9uKGEpe3ZhciBiLGM9YVtpXShkLnNyY3NldEF0dHIpOyhiPWQuY3VzdG9tTWVkaWFbYVtpXSgiZGF0YS1tZWRpYSIpfHxhW2ldKCJtZWRpYSIpXSkmJmEuc2V0QXR0cmlidXRlKCJtZWRpYSIsYiksYyYmYS5zZXRBdHRyaWJ1dGUoInNyY3NldCIsYyl9LGFhPUEoZnVuY3Rpb24oYSxiLGMsZSxmKXt2YXIgZyxoLGosbCxvLHA7KG89dihhLCJsYXp5YmVmb3JldW52ZWlsIixiKSkuZGVmYXVsdFByZXZlbnRlZHx8KGUmJihjP3MoYSxkLmF1dG9zaXplc0NsYXNzKTphLnNldEF0dHJpYnV0ZSgic2l6ZXMiLGUpKSxoPWFbaV0oZC5zcmNzZXRBdHRyKSxnPWFbaV0oZC5zcmNBdHRyKSxmJiYoaj1hLnBhcmVudE5vZGUsbD1qJiZuLnRlc3Qoai5ub2RlTmFtZXx8IiIpKSxwPWIuZmlyZXNMb2FkfHwic3JjImluIGEmJihofHxnfHxsKSxvPXt0YXJnZXQ6YX0scCYmKHUoYSxULCEwKSxjbGVhclRpbWVvdXQobSksbT1rKFQsMjUwMCkscyhhLGQubG9hZGluZ0NsYXNzKSx1KGEsWiwhMCkpLGwmJnEuY2FsbChqLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzb3VyY2UiKSxfKSxoP2Euc2V0QXR0cmlidXRlKCJzcmNzZXQiLGgpOmcmJiFsJiYoTi50ZXN0KGEubm9kZU5hbWUpPyQoYSxnKTphLnNyYz1nKSxmJiYoaHx8bCkmJncoYSx7c3JjOmd9KSksYS5fbGF6eVJhY2UmJmRlbGV0ZSBhLl9sYXp5UmFjZSx0KGEsZC5sYXp5Q2xhc3MpLHooZnVuY3Rpb24oKXsoIXB8fGEuY29tcGxldGUmJmEubmF0dXJhbFdpZHRoPjEpJiYocD9UKG8pOlItLSxYKG8pKX0sITApfSksYmE9ZnVuY3Rpb24oYSl7dmFyIGIsYz1NLnRlc3QoYS5ub2RlTmFtZSksZT1jJiYoYVtpXShkLnNpemVzQXR0cil8fGFbaV0oInNpemVzIikpLGY9ImF1dG8iPT1lOyghZiYmbHx8IWN8fCFhW2ldKCJzcmMiKSYmIWEuc3Jjc2V0fHxhLmNvbXBsZXRlfHxyKGEsZC5lcnJvckNsYXNzKXx8IXIoYSxkLmxhenlDbGFzcykpJiYoYj12KGEsImxhenl1bnZlaWxyZWFkIikuZGV0YWlsLGYmJkUudXBkYXRlRWxlbShhLCEwLGEub2Zmc2V0V2lkdGgpLGEuX2xhenlSYWNlPSEwLFIrKyxhYShhLGIsZixlLGMpKX0sY2E9ZnVuY3Rpb24oKXtpZighbCl7aWYoZi5ub3coKS1wPDk5OSlyZXR1cm4gdm9pZCBrKGNhLDk5OSk7dmFyIGE9QyhmdW5jdGlvbigpe2QubG9hZE1vZGU9MyxXKCl9KTtsPSEwLGQubG9hZE1vZGU9MyxXKCksaigic2Nyb2xsIixmdW5jdGlvbigpezM9PWQubG9hZE1vZGUmJihkLmxvYWRNb2RlPTIpLGEoKX0sITApfX07cmV0dXJue186ZnVuY3Rpb24oKXtwPWYubm93KCksYy5lbGVtZW50cz1iLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZC5sYXp5Q2xhc3MpLGc9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGQubGF6eUNsYXNzKyIgIitkLnByZWxvYWRDbGFzcyksTD1kLmhGYWMsaigic2Nyb2xsIixXLCEwKSxqKCJyZXNpemUiLFcsITApLGEuTXV0YXRpb25PYnNlcnZlcj9uZXcgTXV0YXRpb25PYnNlcnZlcihXKS5vYnNlcnZlKGUse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwLGF0dHJpYnV0ZXM6ITB9KTooZVtoXSgiRE9NTm9kZUluc2VydGVkIixXLCEwKSxlW2hdKCJET01BdHRyTW9kaWZpZWQiLFcsITApLHNldEludGVydmFsKFcsOTk5KSksaigiaGFzaGNoYW5nZSIsVywhMCksWyJmb2N1cyIsIm1vdXNlb3ZlciIsImNsaWNrIiwibG9hZCIsInRyYW5zaXRpb25lbmQiLCJhbmltYXRpb25lbmQiLCJ3ZWJraXRBbmltYXRpb25FbmQiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2JbaF0oYSxXLCEwKX0pLC9kJHxeYy8udGVzdChiLnJlYWR5U3RhdGUpP2NhKCk6KGooImxvYWQiLGNhKSxiW2hdKCJET01Db250ZW50TG9hZGVkIixXKSxrKGNhLDJlNCkpLGMuZWxlbWVudHMubGVuZ3RoPyhWKCksei5fbHNGbHVzaCgpKTpXKCl9LGNoZWNrRWxlbXM6Vyx1bnZlaWw6YmF9fSgpLEU9ZnVuY3Rpb24oKXt2YXIgYSxjPUEoZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnO2lmKGEuX2xhenlzaXplc1dpZHRoPWQsZCs9InB4IixhLnNldEF0dHJpYnV0ZSgic2l6ZXMiLGQpLG4udGVzdChiLm5vZGVOYW1lfHwiIikpZm9yKGU9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic291cmNlIiksZj0wLGc9ZS5sZW5ndGg7ZjxnO2YrKyllW2ZdLnNldEF0dHJpYnV0ZSgic2l6ZXMiLGQpO2MuZGV0YWlsLmRhdGFBdHRyfHx3KGEsYy5kZXRhaWwpfSksZT1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZj1hLnBhcmVudE5vZGU7ZiYmKGQ9eShhLGYsZCksZT12KGEsImxhenliZWZvcmVzaXplcyIse3dpZHRoOmQsZGF0YUF0dHI6ISFifSksZS5kZWZhdWx0UHJldmVudGVkfHwoZD1lLmRldGFpbC53aWR0aCkmJmQhPT1hLl9sYXp5c2l6ZXNXaWR0aCYmYyhhLGYsZSxkKSl9LGY9ZnVuY3Rpb24oKXt2YXIgYixjPWEubGVuZ3RoO2lmKGMpZm9yKGI9MDtiPGM7YisrKWUoYVtiXSl9LGc9QyhmKTtyZXR1cm57XzpmdW5jdGlvbigpe2E9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGQuYXV0b3NpemVzQ2xhc3MpLGooInJlc2l6ZSIsZyl9LGNoZWNrRWxlbXM6Zyx1cGRhdGVFbGVtOmV9fSgpLEY9ZnVuY3Rpb24oKXtGLml8fChGLmk9ITAsRS5fKCksRC5fKCkpfTtyZXR1cm4gYz17Y2ZnOmQsYXV0b1NpemVyOkUsbG9hZGVyOkQsaW5pdDpGLHVQOncsYUM6cyxyQzp0LGhDOnIsZmlyZTp2LGdXOnksckFGOnp9fX0pOwovKkVPRiovOwovKiogL20vanMvanF1ZXJ5LXVpLWZhY3RvcnkvMS4xMy4yL2pxdWVyeS11aS5taW4uanMgKiovCi8qISBqUXVlcnkgVUkgLSB2MS4xMy4yIC0gMjAyNC0wMy0xMgoqIGh0dHA6Ly9qcXVlcnl1aS5jb20KKiBJbmNsdWRlczogd2lkZ2V0LmpzLCBqcXVlcnktcGF0Y2guanMsIGtleWNvZGUuanMsIHVuaXF1ZS1pZC5qcywgd2lkZ2V0cy9hY2NvcmRpb24uanMsIHdpZGdldHMvbW91c2UuanMsIHdpZGdldHMvc2xpZGVyLmpzLCBlZmZlY3QuanMKKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yczsgTGljZW5zZWQgTUlUICovCgohZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6ZShqUXVlcnkpfShmdW5jdGlvbih1KXsidXNlIHN0cmljdCI7dS51aT11LnVpfHx7fTt1LnVpLnZlcnNpb249IjEuMTMuMiI7dmFyIG4saT0wLG89QXJyYXkucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9QXJyYXkucHJvdG90eXBlLnNsaWNlO3UuY2xlYW5EYXRhPShuPXUuY2xlYW5EYXRhLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxpLHM9MDtudWxsIT0oaT1lW3NdKTtzKyspKHQ9dS5fZGF0YShpLCJldmVudHMiKSkmJnQucmVtb3ZlJiZ1KGkpLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKTtuKGUpfSksdS53aWRnZXQ9ZnVuY3Rpb24oZSxpLHQpe3ZhciBzLG4sYSxvPXt9LHI9ZS5zcGxpdCgiLiIpWzBdLGg9cisiLSIrKGU9ZS5zcGxpdCgiLiIpWzFdKTtyZXR1cm4gdHx8KHQ9aSxpPXUuV2lkZ2V0KSxBcnJheS5pc0FycmF5KHQpJiYodD11LmV4dGVuZC5hcHBseShudWxsLFt7fV0uY29uY2F0KHQpKSksdS5leHByLnBzZXVkb3NbaC50b0xvd2VyQ2FzZSgpXT1mdW5jdGlvbihlKXtyZXR1cm4hIXUuZGF0YShlLGgpfSx1W3JdPXVbcl18fHt9LHM9dVtyXVtlXSxuPXVbcl1bZV09ZnVuY3Rpb24oZSx0KXtpZighdGhpc3x8IXRoaXMuX2NyZWF0ZVdpZGdldClyZXR1cm4gbmV3IG4oZSx0KTthcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoZSx0KX0sdS5leHRlbmQobixzLHt2ZXJzaW9uOnQudmVyc2lvbixfcHJvdG86dS5leHRlbmQoe30sdCksX2NoaWxkQ29uc3RydWN0b3JzOltdfSksKGE9bmV3IGkpLm9wdGlvbnM9dS53aWRnZXQuZXh0ZW5kKHt9LGEub3B0aW9ucyksdS5lYWNoKHQsZnVuY3Rpb24odCxzKXtmdW5jdGlvbiBuKCl7cmV0dXJuIGkucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhKGUpe3JldHVybiBpLnByb3RvdHlwZVt0XS5hcHBseSh0aGlzLGUpfW9bdF09ImZ1bmN0aW9uIj09dHlwZW9mIHM\/ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuX3N1cGVyLGk9dGhpcy5fc3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9bix0aGlzLl9zdXBlckFwcGx5PWEsZT1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj10LHRoaXMuX3N1cGVyQXBwbHk9aSxlfTpzfSksbi5wcm90b3R5cGU9dS53aWRnZXQuZXh0ZW5kKGEse3dpZGdldEV2ZW50UHJlZml4OnMmJmEud2lkZ2V0RXZlbnRQcmVmaXh8fGV9LG8se2NvbnN0cnVjdG9yOm4sbmFtZXNwYWNlOnIsd2lkZ2V0TmFtZTplLHdpZGdldEZ1bGxOYW1lOmh9KSxzPyh1LmVhY2gocy5fY2hpbGRDb25zdHJ1Y3RvcnMsZnVuY3Rpb24oZSx0KXt2YXIgaT10LnByb3RvdHlwZTt1LndpZGdldChpLm5hbWVzcGFjZSsiLiIraS53aWRnZXROYW1lLG4sdC5fcHJvdG8pfSksZGVsZXRlIHMuX2NoaWxkQ29uc3RydWN0b3JzKTppLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG4pLHUud2lkZ2V0LmJyaWRnZShlLG4pLG59LHUud2lkZ2V0LmV4dGVuZD1mdW5jdGlvbihlKXtmb3IodmFyIHQsaSxzPXIuY2FsbChhcmd1bWVudHMsMSksbj0wLGE9cy5sZW5ndGg7bjxhO24rKylmb3IodCBpbiBzW25dKWk9c1tuXVt0XSxvLmNhbGwoc1tuXSx0KSYmdm9pZCAwIT09aSYmKHUuaXNQbGFpbk9iamVjdChpKT9lW3RdPXUuaXNQbGFpbk9iamVjdChlW3RdKT91LndpZGdldC5leHRlbmQoe30sZVt0XSxpKTp1LndpZGdldC5leHRlbmQoe30saSk6ZVt0XT1pKTtyZXR1cm4gZX0sdS53aWRnZXQuYnJpZGdlPWZ1bmN0aW9uKGEsdCl7dmFyIG89dC5wcm90b3R5cGUud2lkZ2V0RnVsbE5hbWV8fGE7dS5mblthXT1mdW5jdGlvbihpKXt2YXIgZT0ic3RyaW5nIj09dHlwZW9mIGkscz1yLmNhbGwoYXJndW1lbnRzLDEpLG49dGhpcztyZXR1cm4gZT90aGlzLmxlbmd0aHx8Imluc3RhbmNlIiE9PWk\/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD11LmRhdGEodGhpcyxvKTtyZXR1cm4iaW5zdGFuY2UiPT09aT8obj10LCExKTp0PyJmdW5jdGlvbiIhPXR5cGVvZiB0W2ldfHwiXyI9PT1pLmNoYXJBdCgwKT91LmVycm9yKCJubyBzdWNoIG1ldGhvZCAnIitpKyInIGZvciAiK2ErIiB3aWRnZXQgaW5zdGFuY2UiKTooZT10W2ldLmFwcGx5KHQscykpIT09dCYmdm9pZCAwIT09ZT8obj1lJiZlLmpxdWVyeT9uLnB1c2hTdGFjayhlLmdldCgpKTplLCExKTp2b2lkIDA6dS5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiK2ErIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciK2krIiciKX0pOm49dm9pZCAwOihzLmxlbmd0aCYmKGk9dS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW2ldLmNvbmNhdChzKSkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXUuZGF0YSh0aGlzLG8pO2U\/KGUub3B0aW9uKGl8fHt9KSxlLl9pbml0JiZlLl9pbml0KCkpOnUuZGF0YSh0aGlzLG8sbmV3IHQoaSx0aGlzKSl9KSksbn19LHUuV2lkZ2V0PWZ1bmN0aW9uKCl7fSx1LldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10sdS5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7Y2xhc3Nlczp7fSxkaXNhYmxlZDohMSxjcmVhdGU6bnVsbH0sX2NyZWF0ZVdpZGdldDpmdW5jdGlvbihlLHQpe3Q9dSh0fHx0aGlzLmRlZmF1bHRFbGVtZW50fHx0aGlzKVswXSx0aGlzLmVsZW1lbnQ9dSh0KSx0aGlzLnV1aWQ9aSsrLHRoaXMuZXZlbnROYW1lc3BhY2U9Ii4iK3RoaXMud2lkZ2V0TmFtZSt0aGlzLnV1aWQsdGhpcy5iaW5kaW5ncz11KCksdGhpcy5ob3ZlcmFibGU9dSgpLHRoaXMuZm9jdXNhYmxlPXUoKSx0aGlzLmNsYXNzZXNFbGVtZW50TG9va3VwPXt9LHQhPT10aGlzJiYodS5kYXRhKHQsdGhpcy53aWRnZXRGdWxsTmFtZSx0aGlzKSx0aGlzLl9vbighMCx0aGlzLmVsZW1lbnQse3JlbW92ZTpmdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJnRoaXMuZGVzdHJveSgpfX0pLHRoaXMuZG9jdW1lbnQ9dSh0LnN0eWxlP3Qub3duZXJEb2N1bWVudDp0LmRvY3VtZW50fHx0KSx0aGlzLndpbmRvdz11KHRoaXMuZG9jdW1lbnRbMF0uZGVmYXVsdFZpZXd8fHRoaXMuZG9jdW1lbnRbMF0ucGFyZW50V2luZG93KSksdGhpcy5vcHRpb25zPXUud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMsdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLGUpLHRoaXMuX2NyZWF0ZSgpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQodGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl90cmlnZ2VyKCJjcmVhdGUiLG51bGwsdGhpcy5fZ2V0Q3JlYXRlRXZlbnREYXRhKCkpLHRoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57fX0sX2dldENyZWF0ZUV2ZW50RGF0YTp1Lm5vb3AsX2NyZWF0ZTp1Lm5vb3AsX2luaXQ6dS5ub29wLGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgaT10aGlzO3RoaXMuX2Rlc3Ryb3koKSx1LmVhY2godGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cCxmdW5jdGlvbihlLHQpe2kuX3JlbW92ZUNsYXNzKHQsZSl9KSx0aGlzLmVsZW1lbnQub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSksdGhpcy53aWRnZXQoKS5vZmYodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3Mub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpfSxfZGVzdHJveTp1Lm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuLGE9ZTtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlmKGE9e30sZT0oaT1lLnNwbGl0KCIuIikpLnNoaWZ0KCksaS5sZW5ndGgpe2ZvcihzPWFbZV09dS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1tlXSksbj0wO248aS5sZW5ndGgtMTtuKyspc1tpW25dXT1zW2lbbl1dfHx7fSxzPXNbaVtuXV07aWYoZT1pLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1zW2VdP251bGw6c1tlXTtzW2VdPXR9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW2VdP251bGw6dGhpcy5vcHRpb25zW2VdO2FbZV09dH1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhhKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl0aGlzLl9zZXRPcHRpb24odCxlW3RdKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiJjbGFzc2VzIj09PWUmJnRoaXMuX3NldE9wdGlvbkNsYXNzZXModCksdGhpcy5vcHRpb25zW2VdPXQsImRpc2FibGVkIj09PWUmJnRoaXMuX3NldE9wdGlvbkRpc2FibGVkKHQpLHRoaXN9LF9zZXRPcHRpb25DbGFzc2VzOmZ1bmN0aW9uKGUpe3ZhciB0LGkscztmb3IodCBpbiBlKXM9dGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cFt0XSxlW3RdIT09dGhpcy5vcHRpb25zLmNsYXNzZXNbdF0mJnMmJnMubGVuZ3RoJiYoaT11KHMuZ2V0KCkpLHRoaXMuX3JlbW92ZUNsYXNzKHMsdCksaS5hZGRDbGFzcyh0aGlzLl9jbGFzc2VzKHtlbGVtZW50Omksa2V5czp0LGNsYXNzZXM6ZSxhZGQ6ITB9KSkpfSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy53aWRnZXQoKSx0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLG51bGwsISFlKSxlJiYodGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5ob3ZlcmFibGUsbnVsbCwidWktc3RhdGUtaG92ZXIiKSx0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmZvY3VzYWJsZSxudWxsLCJ1aS1zdGF0ZS1mb2N1cyIpKX0sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX2NsYXNzZXM6ZnVuY3Rpb24obil7dmFyIGE9W10sbz10aGlzO2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIGkscz0wO3M8ZS5sZW5ndGg7cysrKWk9by5jbGFzc2VzRWxlbWVudExvb2t1cFtlW3NdXXx8dSgpLGk9bi5hZGQ\/KGZ1bmN0aW9uKCl7dmFyIGk9W107bi5lbGVtZW50LmVhY2goZnVuY3Rpb24oZSx0KXt1Lm1hcChvLmNsYXNzZXNFbGVtZW50TG9va3VwLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyh0KX0pfHxpLnB1c2godCl9KSxvLl9vbih1KGkpLHtyZW1vdmU6Il91bnRyYWNrQ2xhc3Nlc0VsZW1lbnQifSl9KCksdSh1LnVuaXF1ZVNvcnQoaS5nZXQoKS5jb25jYXQobi5lbGVtZW50LmdldCgpKSkpKTp1KGkubm90KG4uZWxlbWVudCkuZ2V0KCkpLG8uY2xhc3Nlc0VsZW1lbnRMb29rdXBbZVtzXV09aSxhLnB1c2goZVtzXSksdCYmbi5jbGFzc2VzW2Vbc11dJiZhLnB1c2gobi5jbGFzc2VzW2Vbc11dKX1yZXR1cm4obj11LmV4dGVuZCh7ZWxlbWVudDp0aGlzLmVsZW1lbnQsY2xhc3Nlczp0aGlzLm9wdGlvbnMuY2xhc3Nlc3x8e319LG4pKS5rZXlzJiZlKG4ua2V5cy5tYXRjaCgvXFMrL2cpfHxbXSwhMCksbi5leHRyYSYmZShuLmV4dHJhLm1hdGNoKC9cUysvZyl8fFtdKSxhLmpvaW4oIiAiKX0sX3VudHJhY2tDbGFzc2VzRWxlbWVudDpmdW5jdGlvbihpKXt2YXIgcz10aGlzO3UuZWFjaChzLmNsYXNzZXNFbGVtZW50TG9va3VwLGZ1bmN0aW9uKGUsdCl7LTEhPT11LmluQXJyYXkoaS50YXJnZXQsdCkmJihzLmNsYXNzZXNFbGVtZW50TG9va3VwW2VdPXUodC5ub3QoaS50YXJnZXQpLmdldCgpKSl9KSx0aGlzLl9vZmYodShpLnRhcmdldCkpfSxfcmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiB0aGlzLl90b2dnbGVDbGFzcyhlLHQsaSwhMSl9LF9hZGRDbGFzczpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIHRoaXMuX3RvZ2dsZUNsYXNzKGUsdCxpLCEwKX0sX3RvZ2dsZUNsYXNzOmZ1bmN0aW9uKGUsdCxpLHMpe3ZhciBuPSJzdHJpbmciPT10eXBlb2YgZXx8bnVsbD09PWUsaT17ZXh0cmE6bj90Omksa2V5czpuP2U6dCxlbGVtZW50Om4\/dGhpcy5lbGVtZW50OmUsYWRkOnM9ImJvb2xlYW4iPT10eXBlb2Ygcz9zOml9O3JldHVybiBpLmVsZW1lbnQudG9nZ2xlQ2xhc3ModGhpcy5fY2xhc3NlcyhpKSxzKSx0aGlzfSxfb246ZnVuY3Rpb24obixhLGUpe3ZhciBvLHI9dGhpczsiYm9vbGVhbiIhPXR5cGVvZiBuJiYoZT1hLGE9bixuPSExKSxlPyhhPW89dShhKSx0aGlzLmJpbmRpbmdzPXRoaXMuYmluZGluZ3MuYWRkKGEpKTooZT1hLGE9dGhpcy5lbGVtZW50LG89dGhpcy53aWRnZXQoKSksdS5lYWNoKGUsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7aWYobnx8ITAhPT1yLm9wdGlvbnMuZGlzYWJsZWQmJiF1KHRoaXMpLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpKXJldHVybigic3RyaW5nIj09dHlwZW9mIHQ\/clt0XTp0KS5hcHBseShyLGFyZ3VtZW50cyl9InN0cmluZyIhPXR5cGVvZiB0JiYoaS5ndWlkPXQuZ3VpZD10Lmd1aWR8fGkuZ3VpZHx8dS5ndWlkKyspO3ZhciBzPWUubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGU9c1sxXStyLmV2ZW50TmFtZXNwYWNlLHM9c1syXTtzP28ub24oZSxzLGkpOmEub24oZSxpKX0pfSxfb2ZmOmZ1bmN0aW9uKGUsdCl7dD0odHx8IiIpLnNwbGl0KCIgIikuam9pbih0aGlzLmV2ZW50TmFtZXNwYWNlKyIgIikrdGhpcy5ldmVudE5hbWVzcGFjZSxlLm9mZih0KSx0aGlzLmJpbmRpbmdzPXUodGhpcy5iaW5kaW5ncy5ub3QoZSkuZ2V0KCkpLHRoaXMuZm9jdXNhYmxlPXUodGhpcy5mb2N1c2FibGUubm90KGUpLmdldCgpKSx0aGlzLmhvdmVyYWJsZT11KHRoaXMuaG92ZXJhYmxlLm5vdChlKS5nZXQoKSl9LF9kZWxheTpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXM7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4oInN0cmluZyI9PXR5cGVvZiBlP2lbZV06ZSkuYXBwbHkoaSxhcmd1bWVudHMpfSx0fHwwKX0sX2hvdmVyYWJsZTpmdW5jdGlvbihlKXt0aGlzLmhvdmVyYWJsZT10aGlzLmhvdmVyYWJsZS5hZGQoZSksdGhpcy5fb24oZSx7bW91c2VlbnRlcjpmdW5jdGlvbihlKXt0aGlzLl9hZGRDbGFzcyh1KGUuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtaG92ZXIiKX0sbW91c2VsZWF2ZTpmdW5jdGlvbihlKXt0aGlzLl9yZW1vdmVDbGFzcyh1KGUuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbihlKXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQoZSksdGhpcy5fb24oZSx7Zm9jdXNpbjpmdW5jdGlvbihlKXt0aGlzLl9hZGRDbGFzcyh1KGUuY3VycmVudFRhcmdldCksbnVsbCwidWktc3RhdGUtZm9jdXMiKX0sZm9jdXNvdXQ6ZnVuY3Rpb24oZSl7dGhpcy5fcmVtb3ZlQ2xhc3ModShlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWZvY3VzIil9fSl9LF90cmlnZ2VyOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcyxuLGE9dGhpcy5vcHRpb25zW2VdO2lmKGk9aXx8e30sKHQ9dS5FdmVudCh0KSkudHlwZT0oZT09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg\/ZTp0aGlzLndpZGdldEV2ZW50UHJlZml4K2UpLnRvTG93ZXJDYXNlKCksdC50YXJnZXQ9dGhpcy5lbGVtZW50WzBdLG49dC5vcmlnaW5hbEV2ZW50KWZvcihzIGluIG4pcyBpbiB0fHwodFtzXT1uW3NdKTtyZXR1cm4gdGhpcy5lbGVtZW50LnRyaWdnZXIodCxpKSwhKCJmdW5jdGlvbiI9PXR5cGVvZiBhJiYhMT09PWEuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XS5jb25jYXQoaSkpfHx0LmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LHUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24oYSxvKXt1LldpZGdldC5wcm90b3R5cGVbIl8iK2FdPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcyxuPShlPSJzdHJpbmciPT10eXBlb2YgZT97ZWZmZWN0OmV9OmUpPyEwIT09ZSYmIm51bWJlciIhPXR5cGVvZiBlJiZlLmVmZmVjdHx8bzphOyJudW1iZXIiPT10eXBlb2YoZT1lfHx7fSk\/ZT17ZHVyYXRpb246ZX06ITA9PT1lJiYoZT17fSkscz0hdS5pc0VtcHR5T2JqZWN0KGUpLGUuY29tcGxldGU9aSxlLmRlbGF5JiZ0LmRlbGF5KGUuZGVsYXkpLHMmJnUuZWZmZWN0cyYmdS5lZmZlY3RzLmVmZmVjdFtuXT90W2FdKGUpOm4hPT1hJiZ0W25dP3Rbbl0oZS5kdXJhdGlvbixlLmVhc2luZyxpKTp0LnF1ZXVlKGZ1bmN0aW9uKGUpe3UodGhpcylbYV0oKSxpJiZpLmNhbGwodFswXSksZSgpfSl9fSk7dmFyIHQsczt1LndpZGdldDt1LmV4cHIucHNldWRvc3x8KHUuZXhwci5wc2V1ZG9zPXUuZXhwclsiOiJdKSx1LnVuaXF1ZVNvcnR8fCh1LnVuaXF1ZVNvcnQ9dS51bmlxdWUpLHUuZXNjYXBlU2VsZWN0b3J8fCh0PS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2cscz1mdW5jdGlvbihlLHQpe3JldHVybiB0PyJcMCI9PT1lPyLvv70iOmUuc2xpY2UoMCwtMSkrIlxcIitlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2V9LHUuZXNjYXBlU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UodCxzKX0pLHUuZm4uZXZlbiYmdS5mbi5vZGR8fHUuZm4uZXh0ZW5kKHtldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlJTI9PTB9KX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlJTI9PTF9KX19KTt1LnVpLmtleUNvZGU9e0JBQ0tTUEFDRTo4LENPTU1BOjE4OCxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsTEVGVDozNyxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNQQUNFOjMyLFRBQjo5LFVQOjM4fSx1LmZuLmV4dGVuZCh7dW5pcXVlSWQ6KGU9MCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkfHwodGhpcy5pZD0idWktaWQtIisgKytlKX0pfSkscmVtb3ZlVW5pcXVlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7L151aS1pZC1cZCskLy50ZXN0KHRoaXMuaWQpJiZ1KHRoaXMpLnJlbW92ZUF0dHIoImlkIil9KX19KSx1LndpZGdldCgidWkuYWNjb3JkaW9uIix7dmVyc2lvbjoiMS4xMy4yIixvcHRpb25zOnthY3RpdmU6MCxhbmltYXRlOnt9LGNsYXNzZXM6eyJ1aS1hY2NvcmRpb24taGVhZGVyIjoidWktY29ybmVyLXRvcCIsInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIjoidWktY29ybmVyLWFsbCIsInVpLWFjY29yZGlvbi1jb250ZW50IjoidWktY29ybmVyLWJvdHRvbSJ9LGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbmQoIj4gbGkgPiA6Zmlyc3QtY2hpbGQiKS5hZGQoZS5maW5kKCI+IDpub3QobGkpIikuZXZlbigpKX0saGVpZ2h0U3R5bGU6ImF1dG8iLGljb25zOnthY3RpdmVIZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1zIixoZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1lIn0sYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsfSxoaWRlUHJvcHM6e2JvcmRlclRvcFdpZHRoOiJoaWRlIixib3JkZXJCb3R0b21XaWR0aDoiaGlkZSIscGFkZGluZ1RvcDoiaGlkZSIscGFkZGluZ0JvdHRvbToiaGlkZSIsaGVpZ2h0OiJoaWRlIn0sc2hvd1Byb3BzOntib3JkZXJUb3BXaWR0aDoic2hvdyIsYm9yZGVyQm90dG9tV2lkdGg6InNob3ciLHBhZGRpbmdUb3A6InNob3ciLHBhZGRpbmdCb3R0b206InNob3ciLGhlaWdodDoic2hvdyJ9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7dGhpcy5wcmV2U2hvdz10aGlzLnByZXZIaWRlPXUoKSx0aGlzLl9hZGRDbGFzcygidWktYWNjb3JkaW9uIiwidWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLHRoaXMuZWxlbWVudC5hdHRyKCJyb2xlIiwidGFibGlzdCIpLGUuY29sbGFwc2libGV8fCExIT09ZS5hY3RpdmUmJm51bGwhPWUuYWN0aXZlfHwoZS5hY3RpdmU9MCksdGhpcy5fcHJvY2Vzc1BhbmVscygpLGUuYWN0aXZlPDAmJihlLmFjdGl2ZSs9dGhpcy5oZWFkZXJzLmxlbmd0aCksdGhpcy5fcmVmcmVzaCgpfSxfZ2V0Q3JlYXRlRXZlbnREYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2hlYWRlcjp0aGlzLmFjdGl2ZSxwYW5lbDp0aGlzLmFjdGl2ZS5sZW5ndGg\/dGhpcy5hY3RpdmUubmV4dCgpOnUoKX19LF9jcmVhdGVJY29uczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5vcHRpb25zLmljb25zO3QmJihlPXUoIjxzcGFuPiIpLHRoaXMuX2FkZENsYXNzKGUsInVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIsInVpLWljb24gIit0LmhlYWRlciksZS5wcmVwZW5kVG8odGhpcy5oZWFkZXJzKSxlPXRoaXMuYWN0aXZlLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3MoZSx0LmhlYWRlcikuX2FkZENsYXNzKGUsbnVsbCx0LmFjdGl2ZUhlYWRlcikuX2FkZENsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWljb25zIikpfSxfZGVzdHJveUljb25zOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5oZWFkZXJzLCJ1aS1hY2NvcmRpb24taWNvbnMiKSx0aGlzLmhlYWRlcnMuY2hpbGRyZW4oIi51aS1hY2NvcmRpb24taGVhZGVyLWljb24iKS5yZW1vdmUoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMuaGVhZGVycy5yZW1vdmVBdHRyKCJyb2xlIGFyaWEtZXhwYW5kZWQgYXJpYS1zZWxlY3RlZCBhcmlhLWNvbnRyb2xzIHRhYkluZGV4IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLl9kZXN0cm95SWNvbnMoKSxlPXRoaXMuaGVhZGVycy5uZXh0KCkuY3NzKCJkaXNwbGF5IiwiIikucmVtb3ZlQXR0cigicm9sZSBhcmlhLWhpZGRlbiBhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVVbmlxdWVJZCgpLCJjb250ZW50IiE9PXRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSYmZS5jc3MoImhlaWdodCIsIiIpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7ImFjdGl2ZSIhPT1lPygiZXZlbnQiPT09ZSYmKHRoaXMub3B0aW9ucy5ldmVudCYmdGhpcy5fb2ZmKHRoaXMuaGVhZGVycyx0aGlzLm9wdGlvbnMuZXZlbnQpLHRoaXMuX3NldHVwRXZlbnRzKHQpKSx0aGlzLl9zdXBlcihlLHQpLCJjb2xsYXBzaWJsZSIhPT1lfHx0fHwhMSE9PXRoaXMub3B0aW9ucy5hY3RpdmV8fHRoaXMuX2FjdGl2YXRlKDApLCJpY29ucyI9PT1lJiYodGhpcy5fZGVzdHJveUljb25zKCksdCYmdGhpcy5fY3JlYXRlSWNvbnMoKSkpOnRoaXMuX2FjdGl2YXRlKHQpfSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIoZSksdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtZGlzYWJsZWQiLGUpLHRoaXMuX3RvZ2dsZUNsYXNzKG51bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIWUpLHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMuaGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSksbnVsbCwidWktc3RhdGUtZGlzYWJsZWQiLCEhZSl9LF9rZXlkb3duOmZ1bmN0aW9uKGUpe2lmKCFlLmFsdEtleSYmIWUuY3RybEtleSl7dmFyIHQ9dS51aS5rZXlDb2RlLGk9dGhpcy5oZWFkZXJzLmxlbmd0aCxzPXRoaXMuaGVhZGVycy5pbmRleChlLnRhcmdldCksbj0hMTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIHQuUklHSFQ6Y2FzZSB0LkRPV046bj10aGlzLmhlYWRlcnNbKHMrMSklaV07YnJlYWs7Y2FzZSB0LkxFRlQ6Y2FzZSB0LlVQOm49dGhpcy5oZWFkZXJzWyhzLTEraSklaV07YnJlYWs7Y2FzZSB0LlNQQUNFOmNhc2UgdC5FTlRFUjp0aGlzLl9ldmVudEhhbmRsZXIoZSk7YnJlYWs7Y2FzZSB0LkhPTUU6bj10aGlzLmhlYWRlcnNbMF07YnJlYWs7Y2FzZSB0LkVORDpuPXRoaXMuaGVhZGVyc1tpLTFdfW4mJih1KGUudGFyZ2V0KS5hdHRyKCJ0YWJJbmRleCIsLTEpLHUobikuYXR0cigidGFiSW5kZXgiLDApLHUobikudHJpZ2dlcigiZm9jdXMiKSxlLnByZXZlbnREZWZhdWx0KCkpfX0sX3BhbmVsS2V5RG93bjpmdW5jdGlvbihlKXtlLmtleUNvZGU9PT11LnVpLmtleUNvZGUuVVAmJmUuY3RybEtleSYmdShlLmN1cnJlbnRUYXJnZXQpLnByZXYoKS50cmlnZ2VyKCJmb2N1cyIpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3RoaXMuX3Byb2Nlc3NQYW5lbHMoKSwhMT09PWUuYWN0aXZlJiYhMD09PWUuY29sbGFwc2libGV8fCF0aGlzLmhlYWRlcnMubGVuZ3RoPyhlLmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT11KCkpOiExPT09ZS5hY3RpdmU\/dGhpcy5fYWN0aXZhdGUoMCk6dGhpcy5hY3RpdmUubGVuZ3RoJiYhdS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pP3RoaXMuaGVhZGVycy5sZW5ndGg9PT10aGlzLmhlYWRlcnMuZmluZCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoPyhlLmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT11KCkpOnRoaXMuX2FjdGl2YXRlKE1hdGgubWF4KDAsZS5hY3RpdmUtMSkpOmUuYWN0aXZlPXRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmFjdGl2ZSksdGhpcy5fZGVzdHJveUljb25zKCksdGhpcy5fcmVmcmVzaCgpfSxfcHJvY2Vzc1BhbmVsczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaGVhZGVycyx0PXRoaXMucGFuZWxzOyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuaGVhZGVyP3RoaXMuaGVhZGVycz10aGlzLm9wdGlvbnMuaGVhZGVyKHRoaXMuZWxlbWVudCk6dGhpcy5oZWFkZXJzPXRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oZWFkZXIpLHRoaXMuX2FkZENsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWhlYWRlciB1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIsInVpLXN0YXRlLWRlZmF1bHQiKSx0aGlzLnBhbmVscz10aGlzLmhlYWRlcnMubmV4dCgpLmZpbHRlcigiOm5vdCgudWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlKSIpLmhpZGUoKSx0aGlzLl9hZGRDbGFzcyh0aGlzLnBhbmVscywidWktYWNjb3JkaW9uLWNvbnRlbnQiLCJ1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSx0JiYodGhpcy5fb2ZmKGUubm90KHRoaXMuaGVhZGVycykpLHRoaXMuX29mZih0Lm5vdCh0aGlzLnBhbmVscykpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgaSxlPXRoaXMub3B0aW9ucyx0PWUuaGVpZ2h0U3R5bGUscz10aGlzLmVsZW1lbnQucGFyZW50KCk7dGhpcy5hY3RpdmU9dGhpcy5fZmluZEFjdGl2ZShlLmFjdGl2ZSksdGhpcy5fYWRkQ2xhc3ModGhpcy5hY3RpdmUsInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiwidWktc3RhdGUtYWN0aXZlIikuX3JlbW92ZUNsYXNzKHRoaXMuYWN0aXZlLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIpLHRoaXMuX2FkZENsYXNzKHRoaXMuYWN0aXZlLm5leHQoKSwidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIiksdGhpcy5hY3RpdmUubmV4dCgpLnNob3coKSx0aGlzLmhlYWRlcnMuYXR0cigicm9sZSIsInRhYiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT11KHRoaXMpLHQ9ZS51bmlxdWVJZCgpLmF0dHIoImlkIiksaT1lLm5leHQoKSxzPWkudW5pcXVlSWQoKS5hdHRyKCJpZCIpO2UuYXR0cigiYXJpYS1jb250cm9scyIscyksaS5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLHQpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLHRoaXMuaGVhZGVycy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4dCgpLmF0dHIoeyJhcmlhLWhpZGRlbiI6InRydWUifSkuaGlkZSgpLHRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLm5leHQoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KTp0aGlzLmhlYWRlcnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApLHRoaXMuX2NyZWF0ZUljb25zKCksdGhpcy5fc2V0dXBFdmVudHMoZS5ldmVudCksImZpbGwiPT09dD8oaT1zLmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dSh0aGlzKSx0PWUuY3NzKCJwb3NpdGlvbiIpOyJhYnNvbHV0ZSIhPT10JiYiZml4ZWQiIT09dCYmKGktPWUub3V0ZXJIZWlnaHQoITApKX0pLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7aS09dSh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXt1KHRoaXMpLmhlaWdodChNYXRoLm1heCgwLGktdSh0aGlzKS5pbm5lckhlaWdodCgpK3UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXQmJihpPTAsdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dSh0aGlzKS5pcygiOnZpc2libGUiKTtlfHx1KHRoaXMpLnNob3coKSxpPU1hdGgubWF4KGksdSh0aGlzKS5jc3MoImhlaWdodCIsIiIpLmhlaWdodCgpKSxlfHx1KHRoaXMpLmhpZGUoKX0pLmhlaWdodChpKSl9LF9hY3RpdmF0ZTpmdW5jdGlvbihlKXtlPXRoaXMuX2ZpbmRBY3RpdmUoZSlbMF07ZSE9PXRoaXMuYWN0aXZlWzBdJiYoZT1lfHx0aGlzLmFjdGl2ZVswXSx0aGlzLl9ldmVudEhhbmRsZXIoe3RhcmdldDplLGN1cnJlbnRUYXJnZXQ6ZSxwcmV2ZW50RGVmYXVsdDp1Lm5vb3B9KSl9LF9maW5kQWN0aXZlOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLmhlYWRlcnMuZXEoZSk6dSgpfSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24oZSl7dmFyIGk9e2tleWRvd246Il9rZXlkb3duIn07ZSYmdS5lYWNoKGUuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2lbdF09Il9ldmVudEhhbmRsZXIifSksdGhpcy5fb2ZmKHRoaXMuaGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSkpLHRoaXMuX29uKHRoaXMuaGVhZGVycyxpKSx0aGlzLl9vbih0aGlzLmhlYWRlcnMubmV4dCgpLHtrZXlkb3duOiJfcGFuZWxLZXlEb3duIn0pLHRoaXMuX2hvdmVyYWJsZSh0aGlzLmhlYWRlcnMpLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmhlYWRlcnMpfSxfZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucyxpPXRoaXMuYWN0aXZlLHM9dShlLmN1cnJlbnRUYXJnZXQpLG49c1swXT09PWlbMF0sYT1uJiZ0LmNvbGxhcHNpYmxlLG89YT91KCk6cy5uZXh0KCkscj1pLm5leHQoKSxvPXtvbGRIZWFkZXI6aSxvbGRQYW5lbDpyLG5ld0hlYWRlcjphP3UoKTpzLG5ld1BhbmVsOm99O2UucHJldmVudERlZmF1bHQoKSxuJiYhdC5jb2xsYXBzaWJsZXx8ITE9PT10aGlzLl90cmlnZ2VyKCJiZWZvcmVBY3RpdmF0ZSIsZSxvKXx8KHQuYWN0aXZlPSFhJiZ0aGlzLmhlYWRlcnMuaW5kZXgocyksdGhpcy5hY3RpdmU9bj91KCk6cyx0aGlzLl90b2dnbGUobyksdGhpcy5fcmVtb3ZlQ2xhc3MoaSwidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0Lmljb25zJiYoaT1pLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3MoaSxudWxsLHQuaWNvbnMuYWN0aXZlSGVhZGVyKS5fYWRkQ2xhc3MoaSxudWxsLHQuaWNvbnMuaGVhZGVyKSksbnx8KHRoaXMuX3JlbW92ZUNsYXNzKHMsInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIikuX2FkZENsYXNzKHMsInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiwidWktc3RhdGUtYWN0aXZlIiksdC5pY29ucyYmKG49cy5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNzKG4sbnVsbCx0Lmljb25zLmhlYWRlcikuX2FkZENsYXNzKG4sbnVsbCx0Lmljb25zLmFjdGl2ZUhlYWRlcikpLHRoaXMuX2FkZENsYXNzKHMubmV4dCgpLCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSkpfSxfdG9nZ2xlOmZ1bmN0aW9uKGUpe3ZhciB0PWUubmV3UGFuZWwsaT10aGlzLnByZXZTaG93Lmxlbmd0aD90aGlzLnByZXZTaG93OmUub2xkUGFuZWw7dGhpcy5wcmV2U2hvdy5hZGQodGhpcy5wcmV2SGlkZSkuc3RvcCghMCwhMCksdGhpcy5wcmV2U2hvdz10LHRoaXMucHJldkhpZGU9aSx0aGlzLm9wdGlvbnMuYW5pbWF0ZT90aGlzLl9hbmltYXRlKHQsaSxlKTooaS5oaWRlKCksdC5zaG93KCksdGhpcy5fdG9nZ2xlQ29tcGxldGUoZSkpLGkuYXR0cih7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxpLnByZXYoKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLHQubGVuZ3RoJiZpLmxlbmd0aD9pLnByZXYoKS5hdHRyKHt0YWJJbmRleDotMSwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pOnQubGVuZ3RoJiZ0aGlzLmhlYWRlcnMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1wYXJzZUludCh1KHRoaXMpLmF0dHIoInRhYkluZGV4IiksMTApfSkuYXR0cigidGFiSW5kZXgiLC0xKSx0LmF0dHIoImFyaWEtaGlkZGVuIiwiZmFsc2UiKS5wcmV2KCkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9KX0sX2FuaW1hdGU6ZnVuY3Rpb24oZSxpLHQpe3ZhciBzLG4sYSxvPXRoaXMscj0wLGg9ZS5jc3MoImJveC1zaXppbmciKSxsPWUubGVuZ3RoJiYoIWkubGVuZ3RofHxlLmluZGV4KCk8aS5pbmRleCgpKSx1PXRoaXMub3B0aW9ucy5hbmltYXRlfHx7fSxjPWwmJnUuZG93bnx8dSxsPWZ1bmN0aW9uKCl7by5fdG9nZ2xlQ29tcGxldGUodCl9O3JldHVybiBuPShuPSJzdHJpbmciPT10eXBlb2YgYz9jOm4pfHxjLmVhc2luZ3x8dS5lYXNpbmcsYT0oYT0ibnVtYmVyIj09dHlwZW9mIGM\/YzphKXx8Yy5kdXJhdGlvbnx8dS5kdXJhdGlvbixpLmxlbmd0aD9lLmxlbmd0aD8ocz1lLnNob3coKS5vdXRlckhlaWdodCgpLGkuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyx7ZHVyYXRpb246YSxlYXNpbmc6bixzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKX19KSx2b2lkIGUuaGlkZSgpLmFuaW1hdGUodGhpcy5zaG93UHJvcHMse2R1cmF0aW9uOmEsZWFzaW5nOm4sY29tcGxldGU6bCxzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKSwiaGVpZ2h0IiE9PXQucHJvcD8iY29udGVudC1ib3giPT09aCYmKHIrPXQubm93KToiY29udGVudCIhPT1vLm9wdGlvbnMuaGVpZ2h0U3R5bGUmJih0Lm5vdz1NYXRoLnJvdW5kKHMtaS5vdXRlckhlaWdodCgpLXIpLHI9MCl9fSkpOmkuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyxhLG4sbCk6ZS5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLGEsbixsKX0sX3RvZ2dsZUNvbXBsZXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWUub2xkUGFuZWwsaT10LnByZXYoKTt0aGlzLl9yZW1vdmVDbGFzcyh0LCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSx0aGlzLl9yZW1vdmVDbGFzcyhpLCJ1aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZSIpLl9hZGRDbGFzcyhpLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIpLHQubGVuZ3RoJiYodC5wYXJlbnQoKVswXS5jbGFzc05hbWU9dC5wYXJlbnQoKVswXS5jbGFzc05hbWUpLHRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixudWxsLGUpfX0pLHUudWkuaWU9ISEvbXNpZSBbXHcuXSsvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTt2YXIgZSxhPSExO3UoZG9jdW1lbnQpLm9uKCJtb3VzZXVwIixmdW5jdGlvbigpe2E9ITF9KTt1LndpZGdldCgidWkubW91c2UiLHt2ZXJzaW9uOiIxLjEzLjIiLG9wdGlvbnM6e2NhbmNlbDoiaW5wdXQsIHRleHRhcmVhLCBidXR0b24sIHNlbGVjdCwgb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZWxlbWVudC5vbigibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9tb3VzZURvd24oZSl9KS5vbigiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oZSl7aWYoITA9PT11LmRhdGEoZS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSlyZXR1cm4gdS5yZW1vdmVEYXRhKGUudGFyZ2V0LHQud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMX0pLHRoaXMuc3RhcnRlZD0hMX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5vZmYoIi4iK3RoaXMud2lkZ2V0TmFtZSksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUmJnRoaXMuZG9jdW1lbnQub2ZmKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLm9mZigibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpfSxfbW91c2VEb3duOmZ1bmN0aW9uKGUpe2lmKCFhKXt0aGlzLl9tb3VzZU1vdmVkPSExLHRoaXMuX21vdXNlU3RhcnRlZCYmdGhpcy5fbW91c2VVcChlKSx0aGlzLl9tb3VzZURvd25FdmVudD1lO3ZhciB0PXRoaXMsaT0xPT09ZS53aGljaCxzPSEoInN0cmluZyIhPXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsfHwhZS50YXJnZXQubm9kZU5hbWUpJiZ1KGUudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDtyZXR1cm4gaSYmIXMmJnRoaXMuX21vdXNlQ2FwdHVyZShlKT8odGhpcy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURlbGF5TWV0fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0Lm1vdXNlRGVsYXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpLHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoZSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9ITEhPT10aGlzLl9tb3VzZVN0YXJ0KGUpLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpPyhlLnByZXZlbnREZWZhdWx0KCksITApOighMD09PXUuZGF0YShlLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpJiZ1LnJlbW92ZURhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5fbW91c2VNb3ZlKGUpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX21vdXNlVXAoZSl9LHRoaXMuZG9jdW1lbnQub24oIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkub24oIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSxlLnByZXZlbnREZWZhdWx0KCksYT0hMCkpOiEwfX0sX21vdXNlTW92ZTpmdW5jdGlvbihlKXtpZih0aGlzLl9tb3VzZU1vdmVkKXtpZih1LnVpLmllJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPDkpJiYhZS5idXR0b24pcmV0dXJuIHRoaXMuX21vdXNlVXAoZSk7aWYoIWUud2hpY2gpaWYoZS5vcmlnaW5hbEV2ZW50LmFsdEtleXx8ZS5vcmlnaW5hbEV2ZW50LmN0cmxLZXl8fGUub3JpZ2luYWxFdmVudC5tZXRhS2V5fHxlLm9yaWdpbmFsRXZlbnQuc2hpZnRLZXkpdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2g9ITA7ZWxzZSBpZighdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2gpcmV0dXJuIHRoaXMuX21vdXNlVXAoZSl9cmV0dXJuKGUud2hpY2h8fGUuYnV0dG9uKSYmKHRoaXMuX21vdXNlTW92ZWQ9ITApLHRoaXMuX21vdXNlU3RhcnRlZD8odGhpcy5fbW91c2VEcmFnKGUpLGUucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoZSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9ITEhPT10aGlzLl9tb3VzZVN0YXJ0KHRoaXMuX21vdXNlRG93bkV2ZW50LGUpLHRoaXMuX21vdXNlU3RhcnRlZD90aGlzLl9tb3VzZURyYWcoZSk6dGhpcy5fbW91c2VVcChlKSksIXRoaXMuX21vdXNlU3RhcnRlZCl9LF9tb3VzZVVwOmZ1bmN0aW9uKGUpe3RoaXMuZG9jdW1lbnQub2ZmKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLm9mZigibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLHRoaXMuX21vdXNlU3RhcnRlZCYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSxlLnRhcmdldD09PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmdS5kYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwhMCksdGhpcy5fbW91c2VTdG9wKGUpKSx0aGlzLl9tb3VzZURlbGF5VGltZXImJihjbGVhclRpbWVvdXQodGhpcy5fbW91c2VEZWxheVRpbWVyKSxkZWxldGUgdGhpcy5fbW91c2VEZWxheVRpbWVyKSx0aGlzLmlnbm9yZU1pc3NpbmdXaGljaD0hMSxhPSExLGUucHJldmVudERlZmF1bHQoKX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWUucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWUucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksdS53aWRnZXQoInVpLnNsaWRlciIsdS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMy4yIix3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9wdGlvbnM6e2FuaW1hdGU6ITEsY2xhc3Nlczp7InVpLXNsaWRlciI6InVpLWNvcm5lci1hbGwiLCJ1aS1zbGlkZXItaGFuZGxlIjoidWktY29ybmVyLWFsbCIsInVpLXNsaWRlci1yYW5nZSI6InVpLWNvcm5lci1hbGwgdWktd2lkZ2V0LWhlYWRlciJ9LGRpc3RhbmNlOjAsbWF4OjEwMCxtaW46MCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIscmFuZ2U6ITEsc3RlcDoxLHZhbHVlOjAsdmFsdWVzOm51bGwsY2hhbmdlOm51bGwsc2xpZGU6bnVsbCxzdGFydDpudWxsLHN0b3A6bnVsbH0sbnVtUGFnZXM6NSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fa2V5U2xpZGluZz0hMSx0aGlzLl9tb3VzZVNsaWRpbmc9ITEsdGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9oYW5kbGVJbmRleD1udWxsLHRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5fbW91c2VJbml0KCksdGhpcy5fY2FsY3VsYXRlTmV3TWF4KCksdGhpcy5fYWRkQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXItIit0aGlzLm9yaWVudGF0aW9uLCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSx0aGlzLl9yZWZyZXNoKCksdGhpcy5fYW5pbWF0ZU9mZj0hMX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVSYW5nZSgpLHRoaXMuX2NyZWF0ZUhhbmRsZXMoKSx0aGlzLl9zZXR1cEV2ZW50cygpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfY3JlYXRlSGFuZGxlczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5vcHRpb25zLGk9dGhpcy5lbGVtZW50LmZpbmQoIi51aS1zbGlkZXItaGFuZGxlIikscz1bXSxuPXQudmFsdWVzJiZ0LnZhbHVlcy5sZW5ndGh8fDE7Zm9yKGkubGVuZ3RoPm4mJihpLnNsaWNlKG4pLnJlbW92ZSgpLGk9aS5zbGljZSgwLG4pKSxlPWkubGVuZ3RoO2U8bjtlKyspcy5wdXNoKCI8c3BhbiB0YWJpbmRleD0nMCc+PC9zcGFuPiIpO3RoaXMuaGFuZGxlcz1pLmFkZCh1KHMuam9pbigiIikpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCkpLHRoaXMuX2FkZENsYXNzKHRoaXMuaGFuZGxlcywidWktc2xpZGVyLWhhbmRsZSIsInVpLXN0YXRlLWRlZmF1bHQiKSx0aGlzLmhhbmRsZT10aGlzLmhhbmRsZXMuZXEoMCksdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24oZSl7dSh0aGlzKS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4IixlKS5hdHRyKCJ0YWJJbmRleCIsMCl9KX0sX2NyZWF0ZVJhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO2UucmFuZ2U\/KCEwPT09ZS5yYW5nZSYmKGUudmFsdWVzP2UudmFsdWVzLmxlbmd0aCYmMiE9PWUudmFsdWVzLmxlbmd0aD9lLnZhbHVlcz1bZS52YWx1ZXNbMF0sZS52YWx1ZXNbMF1dOkFycmF5LmlzQXJyYXkoZS52YWx1ZXMpJiYoZS52YWx1ZXM9ZS52YWx1ZXMuc2xpY2UoMCkpOmUudmFsdWVzPVt0aGlzLl92YWx1ZU1pbigpLHRoaXMuX3ZhbHVlTWluKCldKSx0aGlzLnJhbmdlJiZ0aGlzLnJhbmdlLmxlbmd0aD8odGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5yYW5nZSwidWktc2xpZGVyLXJhbmdlLW1pbiB1aS1zbGlkZXItcmFuZ2UtbWF4IiksdGhpcy5yYW5nZS5jc3Moe2xlZnQ6IiIsYm90dG9tOiIifSkpOih0aGlzLnJhbmdlPXUoIjxkaXY+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50KSx0aGlzLl9hZGRDbGFzcyh0aGlzLnJhbmdlLCJ1aS1zbGlkZXItcmFuZ2UiKSksIm1pbiIhPT1lLnJhbmdlJiYibWF4IiE9PWUucmFuZ2V8fHRoaXMuX2FkZENsYXNzKHRoaXMucmFuZ2UsInVpLXNsaWRlci1yYW5nZS0iK2UucmFuZ2UpKToodGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5yZW1vdmUoKSx0aGlzLnJhbmdlPW51bGwpfSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl9vZmYodGhpcy5oYW5kbGVzKSx0aGlzLl9vbih0aGlzLmhhbmRsZXMsdGhpcy5faGFuZGxlRXZlbnRzKSx0aGlzLl9ob3ZlcmFibGUodGhpcy5oYW5kbGVzKSx0aGlzLl9mb2N1c2FibGUodGhpcy5oYW5kbGVzKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZXMucmVtb3ZlKCksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5yZW1vdmUoKSx0aGlzLl9tb3VzZURlc3Ryb3koKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihlKXt2YXIgaSxzLG4sYSx0LG8scj10aGlzLGg9dGhpcy5vcHRpb25zO3JldHVybiFoLmRpc2FibGVkJiYodGhpcy5lbGVtZW50U2l6ZT17d2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCl9LHRoaXMuZWxlbWVudE9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCksbz17eDplLnBhZ2VYLHk6ZS5wYWdlWX0saT10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2Uobykscz10aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkrMSx0aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdD1NYXRoLmFicyhpLXIudmFsdWVzKGUpKTsodDxzfHxzPT09dCYmKGU9PT1yLl9sYXN0Q2hhbmdlZFZhbHVlfHxyLnZhbHVlcyhlKT09PWgubWluKSkmJihzPXQsbj11KHRoaXMpLGE9ZSl9KSwhMSE9PXRoaXMuX3N0YXJ0KGUsYSkmJih0aGlzLl9tb3VzZVNsaWRpbmc9ITAsdGhpcy5faGFuZGxlSW5kZXg9YSx0aGlzLl9hZGRDbGFzcyhuLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpLG4udHJpZ2dlcigiZm9jdXMiKSx0PW4ub2Zmc2V0KCksbz0hdShlLnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKSx0aGlzLl9jbGlja09mZnNldD1vP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OmUucGFnZVgtdC5sZWZ0LW4ud2lkdGgoKS8yLHRvcDplLnBhZ2VZLXQudG9wLW4uaGVpZ2h0KCkvMi0ocGFyc2VJbnQobi5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQobi5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQobi5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9LHRoaXMuaGFuZGxlcy5oYXNDbGFzcygidWktc3RhdGUtaG92ZXIiKXx8dGhpcy5fc2xpZGUoZSxhLGkpLHRoaXMuX2FuaW1hdGVPZmY9ITApKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgdD17eDplLnBhZ2VYLHk6ZS5wYWdlWX0sdD10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2UodCk7cmV0dXJuIHRoaXMuX3NsaWRlKGUsdGhpcy5faGFuZGxlSW5kZXgsdCksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaGFuZGxlcyxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLl9tb3VzZVNsaWRpbmc9ITEsdGhpcy5fc3RvcChlLHRoaXMuX2hhbmRsZUluZGV4KSx0aGlzLl9jaGFuZ2UoZSx0aGlzLl9oYW5kbGVJbmRleCksdGhpcy5faGFuZGxlSW5kZXg9bnVsbCx0aGlzLl9jbGlja09mZnNldD1udWxsLHRoaXMuX2FuaW1hdGVPZmY9ITF9LF9kZXRlY3RPcmllbnRhdGlvbjpmdW5jdGlvbigpe3RoaXMub3JpZW50YXRpb249InZlcnRpY2FsIj09PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbj8idmVydGljYWwiOiJob3Jpem9udGFsIn0sX25vcm1WYWx1ZUZyb21Nb3VzZTpmdW5jdGlvbihlKXt2YXIgdCxlPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24\/KHQ9dGhpcy5lbGVtZW50U2l6ZS53aWR0aCxlLngtdGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LmxlZnQ6MCkpOih0PXRoaXMuZWxlbWVudFNpemUuaGVpZ2h0LGUueS10aGlzLmVsZW1lbnRPZmZzZXQudG9wLSh0aGlzLl9jbGlja09mZnNldD90aGlzLl9jbGlja09mZnNldC50b3A6MCkpLGU9ZS90O3JldHVybihlPTE8ZT8xOmUpPDAmJihlPTApLCJ2ZXJ0aWNhbCI9PT10aGlzLm9yaWVudGF0aW9uJiYoZT0xLWUpLHQ9dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpLHQ9dGhpcy5fdmFsdWVNaW4oKStlKnQsdGhpcy5fdHJpbUFsaWduVmFsdWUodCl9LF91aUhhc2g6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPXtoYW5kbGU6dGhpcy5oYW5kbGVzW2VdLGhhbmRsZUluZGV4OmUsdmFsdWU6dm9pZCAwIT09dD90OnRoaXMudmFsdWUoKX07cmV0dXJuIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkmJihzLnZhbHVlPXZvaWQgMCE9PXQ\/dDp0aGlzLnZhbHVlcyhlKSxzLnZhbHVlcz1pfHx0aGlzLnZhbHVlcygpKSxzfSxfaGFzTXVsdGlwbGVWYWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGh9LF9zdGFydDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSx0aGlzLl91aUhhc2godCkpfSxfc2xpZGU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzLG49dGhpcy52YWx1ZSgpLGE9dGhpcy52YWx1ZXMoKTt0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpJiYocz10aGlzLnZhbHVlcyh0PzA6MSksbj10aGlzLnZhbHVlcyh0KSwyPT09dGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJiEwPT09dGhpcy5vcHRpb25zLnJhbmdlJiYoaT0wPT09dD9NYXRoLm1pbihzLGkpOk1hdGgubWF4KHMsaSkpLGFbdF09aSksaSE9PW4mJiExIT09dGhpcy5fdHJpZ2dlcigic2xpZGUiLGUsdGhpcy5fdWlIYXNoKHQsaSxhKSkmJih0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMudmFsdWVzKHQsaSk6dGhpcy52YWx1ZShpKSl9LF9zdG9wOmZ1bmN0aW9uKGUsdCl7dGhpcy5fdHJpZ2dlcigic3RvcCIsZSx0aGlzLl91aUhhc2godCkpfSxfY2hhbmdlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fa2V5U2xpZGluZ3x8dGhpcy5fbW91c2VTbGlkaW5nfHwodGhpcy5fbGFzdENoYW5nZWRWYWx1ZT10LHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSx0aGlzLl91aUhhc2godCkpKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/KHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl90cmltQWxpZ25WYWx1ZShlKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx2b2lkIHRoaXMuX2NoYW5nZShudWxsLDApKTp0aGlzLl92YWx1ZSgpfSx2YWx1ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG47aWYoMTxhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm9wdGlvbnMudmFsdWVzW2VdPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHZvaWQgdGhpcy5fY2hhbmdlKG51bGwsZSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX3ZhbHVlcygpO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMuX3ZhbHVlcyhlKTp0aGlzLnZhbHVlKCk7Zm9yKGk9dGhpcy5vcHRpb25zLnZhbHVlcyxzPWUsbj0wO248aS5sZW5ndGg7bis9MSlpW25dPXRoaXMuX3RyaW1BbGlnblZhbHVlKHNbbl0pLHRoaXMuX2NoYW5nZShudWxsLG4pO3RoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscz0wO3N3aXRjaCgicmFuZ2UiPT09ZSYmITA9PT10aGlzLm9wdGlvbnMucmFuZ2UmJigibWluIj09PXQ\/KHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl92YWx1ZXMoMCksdGhpcy5vcHRpb25zLnZhbHVlcz1udWxsKToibWF4Ij09PXQmJih0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdmFsdWVzKHRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoLTEpLHRoaXMub3B0aW9ucy52YWx1ZXM9bnVsbCkpLEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykmJihzPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSx0aGlzLl9zdXBlcihlLHQpLGUpe2Nhc2Uib3JpZW50YXRpb24iOnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5fcmVtb3ZlQ2xhc3MoInVpLXNsaWRlci1ob3Jpem9udGFsIHVpLXNsaWRlci12ZXJ0aWNhbCIpLl9hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5vcHRpb25zLnJhbmdlJiZ0aGlzLl9yZWZyZXNoUmFuZ2UodCksdGhpcy5oYW5kbGVzLmNzcygiaG9yaXpvbnRhbCI9PT10PyJib3R0b20iOiJsZWZ0IiwiIik7YnJlYWs7Y2FzZSJ2YWx1ZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UidmFsdWVzIjpmb3IodGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSxpPXMtMTswPD1pO2ktLSl0aGlzLl9jaGFuZ2UobnVsbCxpKTt0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2Uic3RlcCI6Y2FzZSJtaW4iOmNhc2UibWF4Ijp0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2NhbGN1bGF0ZU5ld01heCgpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2FuaW1hdGVPZmY9ITE7YnJlYWs7Y2FzZSJyYW5nZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoKCksdGhpcy5fYW5pbWF0ZU9mZj0hMX19LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbihlKXt0aGlzLl9zdXBlcihlKSx0aGlzLl90b2dnbGVDbGFzcyhudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFlKX0sX3ZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLnZhbHVlO3JldHVybiBlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpfSxfdmFsdWVzOmZ1bmN0aW9uKGUpe3ZhciB0LGk7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT10aGlzLm9wdGlvbnMudmFsdWVzW2VdLGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSk7aWYodGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKSl7Zm9yKHQ9dGhpcy5vcHRpb25zLnZhbHVlcy5zbGljZSgpLGk9MDtpPHQubGVuZ3RoO2krPTEpdFtpXT10aGlzLl90cmltQWxpZ25WYWx1ZSh0W2ldKTtyZXR1cm4gdH1yZXR1cm5bXX0sX3RyaW1BbGlnblZhbHVlOmZ1bmN0aW9uKGUpe2lmKGU8PXRoaXMuX3ZhbHVlTWluKCkpcmV0dXJuIHRoaXMuX3ZhbHVlTWluKCk7aWYoZT49dGhpcy5fdmFsdWVNYXgoKSlyZXR1cm4gdGhpcy5fdmFsdWVNYXgoKTt2YXIgdD0wPHRoaXMub3B0aW9ucy5zdGVwP3RoaXMub3B0aW9ucy5zdGVwOjEsaT0oZS10aGlzLl92YWx1ZU1pbigpKSV0LGU9ZS1pO3JldHVybiAyKk1hdGguYWJzKGkpPj10JiYoZSs9MDxpP3Q6LXQpLHBhcnNlRmxvYXQoZS50b0ZpeGVkKDUpKX0sX2NhbGN1bGF0ZU5ld01heDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5tYXgsdD10aGlzLl92YWx1ZU1pbigpLGk9dGhpcy5vcHRpb25zLnN0ZXA7KGU9TWF0aC5yb3VuZCgoZS10KS9pKSppK3QpPnRoaXMub3B0aW9ucy5tYXgmJihlLT1pKSx0aGlzLm1heD1wYXJzZUZsb2F0KGUudG9GaXhlZCh0aGlzLl9wcmVjaXNpb24oKSkpfSxfcHJlY2lzaW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLnN0ZXApO3JldHVybiBlPW51bGwhPT10aGlzLm9wdGlvbnMubWluP01hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpOmV9LF9wcmVjaXNpb25PZjpmdW5jdGlvbihlKXt2YXIgdD1lLnRvU3RyaW5nKCksZT10LmluZGV4T2YoIi4iKTtyZXR1cm4tMT09PWU\/MDp0Lmxlbmd0aC1lLTF9LF92YWx1ZU1pbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMubWlufSxfdmFsdWVNYXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXh9LF9yZWZyZXNoUmFuZ2U6ZnVuY3Rpb24oZSl7InZlcnRpY2FsIj09PWUmJnRoaXMucmFuZ2UuY3NzKHt3aWR0aDoiIixsZWZ0OiIifSksImhvcml6b250YWwiPT09ZSYmdGhpcy5yYW5nZS5jc3Moe2hlaWdodDoiIixib3R0b206IiJ9KX0sX3JlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3ZhciB0LGksZSxzLG4sYT10aGlzLm9wdGlvbnMucmFuZ2Usbz10aGlzLm9wdGlvbnMscj10aGlzLGg9IXRoaXMuX2FuaW1hdGVPZmYmJm8uYW5pbWF0ZSxsPXt9O3RoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk\/dGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24oZSl7aT0oci52YWx1ZXMoZSktci5fdmFsdWVNaW4oKSkvKHIuX3ZhbHVlTWF4KCktci5fdmFsdWVNaW4oKSkqMTAwLGxbImhvcml6b250YWwiPT09ci5vcmllbnRhdGlvbj8ibGVmdCI6ImJvdHRvbSJdPWkrIiUiLHUodGhpcykuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXShsLG8uYW5pbWF0ZSksITA9PT1yLm9wdGlvbnMucmFuZ2UmJigiaG9yaXpvbnRhbCI9PT1yLm9yaWVudGF0aW9uPygwPT09ZSYmci5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHtsZWZ0OmkrIiUifSxvLmFuaW1hdGUpLDE9PT1lJiZyLnJhbmdlW2g\/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6aS10KyIlIn0se3F1ZXVlOiExLGR1cmF0aW9uOm8uYW5pbWF0ZX0pKTooMD09PWUmJnIucmFuZ2Uuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXSh7Ym90dG9tOmkrIiUifSxvLmFuaW1hdGUpLDE9PT1lJiZyLnJhbmdlW2g\/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmktdCsiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjpvLmFuaW1hdGV9KSkpLHQ9aX0pOihlPXRoaXMudmFsdWUoKSxzPXRoaXMuX3ZhbHVlTWluKCksbj10aGlzLl92YWx1ZU1heCgpLGk9biE9PXM\/KGUtcykvKG4tcykqMTAwOjAsbFsiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJsZWZ0IjoiYm90dG9tIl09aSsiJSIsdGhpcy5oYW5kbGUuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXShsLG8uYW5pbWF0ZSksIm1pbiI9PT1hJiYiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtoPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmkrIiUifSxvLmFuaW1hdGUpLCJtYXgiPT09YSYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDoxMDAtaSsiJSJ9LG8uYW5pbWF0ZSksIm1pbiI9PT1hJiYidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6aSsiJSJ9LG8uYW5pbWF0ZSksIm1heCI9PT1hJiYidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6MTAwLWkrIiUifSxvLmFuaW1hdGUpKX0sX2hhbmRsZUV2ZW50czp7a2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgdCxpLHMsbj11KGUudGFyZ2V0KS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4Iik7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB1LnVpLmtleUNvZGUuSE9NRTpjYXNlIHUudWkua2V5Q29kZS5FTkQ6Y2FzZSB1LnVpLmtleUNvZGUuUEFHRV9VUDpjYXNlIHUudWkua2V5Q29kZS5QQUdFX0RPV046Y2FzZSB1LnVpLmtleUNvZGUuVVA6Y2FzZSB1LnVpLmtleUNvZGUuUklHSFQ6Y2FzZSB1LnVpLmtleUNvZGUuRE9XTjpjYXNlIHUudWkua2V5Q29kZS5MRUZUOmlmKGUucHJldmVudERlZmF1bHQoKSwhdGhpcy5fa2V5U2xpZGluZyYmKHRoaXMuX2tleVNsaWRpbmc9ITAsdGhpcy5fYWRkQ2xhc3ModShlLnRhcmdldCksbnVsbCwidWktc3RhdGUtYWN0aXZlIiksITE9PT10aGlzLl9zdGFydChlLG4pKSlyZXR1cm59c3dpdGNoKHM9dGhpcy5vcHRpb25zLnN0ZXAsdD1pPXRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk\/dGhpcy52YWx1ZXMobik6dGhpcy52YWx1ZSgpLGUua2V5Q29kZSl7Y2FzZSB1LnVpLmtleUNvZGUuSE9NRTppPXRoaXMuX3ZhbHVlTWluKCk7YnJlYWs7Y2FzZSB1LnVpLmtleUNvZGUuRU5EOmk9dGhpcy5fdmFsdWVNYXgoKTticmVhaztjYXNlIHUudWkua2V5Q29kZS5QQUdFX1VQOmk9dGhpcy5fdHJpbUFsaWduVmFsdWUodCsodGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIHUudWkua2V5Q29kZS5QQUdFX0RPV046aT10aGlzLl90cmltQWxpZ25WYWx1ZSh0LSh0aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkpL3RoaXMubnVtUGFnZXMpO2JyZWFrO2Nhc2UgdS51aS5rZXlDb2RlLlVQOmNhc2UgdS51aS5rZXlDb2RlLlJJR0hUOmlmKHQ9PT10aGlzLl92YWx1ZU1heCgpKXJldHVybjtpPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQrcyk7YnJlYWs7Y2FzZSB1LnVpLmtleUNvZGUuRE9XTjpjYXNlIHUudWkua2V5Q29kZS5MRUZUOmlmKHQ9PT10aGlzLl92YWx1ZU1pbigpKXJldHVybjtpPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQtcyl9dGhpcy5fc2xpZGUoZSxuLGkpfSxrZXl1cDpmdW5jdGlvbihlKXt2YXIgdD11KGUudGFyZ2V0KS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4Iik7dGhpcy5fa2V5U2xpZGluZyYmKHRoaXMuX2tleVNsaWRpbmc9ITEsdGhpcy5fc3RvcChlLHQpLHRoaXMuX2NoYW5nZShlLHQpLHRoaXMuX3JlbW92ZUNsYXNzKHUoZS50YXJnZXQpLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpKX19fSk7dmFyIGg9dSxsPXt9LGM9bC50b1N0cmluZyxkPS9eKFtcLStdKT1ccyooXGQrXC4\/XGQqKS8sZj1be3JlOi9yZ2JhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccyooPzosXHMqKFxkPyg\/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuW2VbMV0sZVsyXSxlWzNdLGVbNF1dfX0se3JlOi9yZ2JhP1woXHMqKFxkKyg\/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg\/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg\/OlwuXGQrKT8pXCVccyooPzosXHMqKFxkPyg\/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuWzIuNTUqZVsxXSwyLjU1KmVbMl0sMi41NSplWzNdLGVbNF1dfX0se3JlOi8jKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KT8vLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdLDE2KSxwYXJzZUludChlWzJdLDE2KSxwYXJzZUludChlWzNdLDE2KSxlWzRdPyhwYXJzZUludChlWzRdLDE2KS8yNTUpLnRvRml4ZWQoMik6MV19fSx7cmU6LyMoW2EtZjAtOV0pKFthLWYwLTldKShbYS1mMC05XSkoW2EtZjAtOV0pPy8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuW3BhcnNlSW50KGVbMV0rZVsxXSwxNikscGFyc2VJbnQoZVsyXStlWzJdLDE2KSxwYXJzZUludChlWzNdK2VbM10sMTYpLGVbNF0\/KHBhcnNlSW50KGVbNF0rZVs0XSwxNikvMjU1KS50b0ZpeGVkKDIpOjFdfX0se3JlOi9oc2xhP1woXHMqKFxkKyg\/OlwuXGQrKT8pXHMqLFxzKihcZCsoPzpcLlxkKyk\/KVwlXHMqLFxzKihcZCsoPzpcLlxkKyk\/KVwlXHMqKD86LFxzKihcZD8oPzpcLlxkKyk\/KVxzKik\/XCkvLHNwYWNlOiJoc2xhIixwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdXX19XSxwPWguQ29sb3I9ZnVuY3Rpb24oZSx0LGkscyl7cmV0dXJuIG5ldyBoLkNvbG9yLmZuLnBhcnNlKGUsdCxpLHMpfSxnPXtyZ2JhOntwcm9wczp7cmVkOntpZHg6MCx0eXBlOiJieXRlIn0sZ3JlZW46e2lkeDoxLHR5cGU6ImJ5dGUifSxibHVlOntpZHg6Mix0eXBlOiJieXRlIn19fSxoc2xhOntwcm9wczp7aHVlOntpZHg6MCx0eXBlOiJkZWdyZWVzIn0sc2F0dXJhdGlvbjp7aWR4OjEsdHlwZToicGVyY2VudCJ9LGxpZ2h0bmVzczp7aWR4OjIsdHlwZToicGVyY2VudCJ9fX19LG09e2J5dGU6e2Zsb29yOiEwLG1heDoyNTV9LHBlcmNlbnQ6e21heDoxfSxkZWdyZWVzOnttb2Q6MzYwLGZsb29yOiEwfX0sdj1wLnN1cHBvcnQ9e30sXz1oKCI8cD4iKVswXSx5PWguZWFjaDtmdW5jdGlvbiBiKGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlP2xbYy5jYWxsKGUpXXx8Im9iamVjdCI6dHlwZW9mIGV9ZnVuY3Rpb24geChlLHQsaSl7dmFyIHM9bVt0LnR5cGVdfHx7fTtyZXR1cm4gbnVsbD09ZT9pfHwhdC5kZWY\/bnVsbDp0LmRlZjooZT1zLmZsb29yP35+ZTpwYXJzZUZsb2F0KGUpLGlzTmFOKGUpP3QuZGVmOnMubW9kPyhlK3MubW9kKSVzLm1vZDpNYXRoLm1pbihzLm1heCxNYXRoLm1heCgwLGUpKSl9ZnVuY3Rpb24gdyhzKXt2YXIgbj1wKCksYT1uLl9yZ2JhPVtdO3JldHVybiBzPXMudG9Mb3dlckNhc2UoKSx5KGYsZnVuY3Rpb24oZSx0KXt2YXIgaT10LnJlLmV4ZWMocyksaT1pJiZ0LnBhcnNlKGkpLHQ9dC5zcGFjZXx8InJnYmEiO2lmKGkpcmV0dXJuIGk9blt0XShpKSxuW2dbdF0uY2FjaGVdPWlbZ1t0XS5jYWNoZV0sYT1uLl9yZ2JhPWkuX3JnYmEsITF9KSxhLmxlbmd0aD8oIjAsMCwwLDAiPT09YS5qb2luKCkmJmguZXh0ZW5kKGEsSC50cmFuc3BhcmVudCksbik6SFtzXX1mdW5jdGlvbiBDKGUsdCxpKXtyZXR1cm4gNiooaT0oaSsxKSUxKTwxP2UrKHQtZSkqaSo2OjIqaTwxP3Q6MyppPDI\/ZSsodC1lKSooMi8zLWkpKjY6ZX1fLnN0eWxlLmNzc1RleHQ9ImJhY2tncm91bmQtY29sb3I6cmdiYSgxLDEsMSwuNSkiLHYucmdiYT0tMTxfLnN0eWxlLmJhY2tncm91bmRDb2xvci5pbmRleE9mKCJyZ2JhIikseShnLGZ1bmN0aW9uKGUsdCl7dC5jYWNoZT0iXyIrZSx0LnByb3BzLmFscGhhPXtpZHg6Myx0eXBlOiJwZXJjZW50IixkZWY6MX19KSxoLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7bFsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KSwocC5mbj1oLmV4dGVuZChwLnByb3RvdHlwZSx7cGFyc2U6ZnVuY3Rpb24obixlLHQsaSl7aWYodm9pZCAwPT09bilyZXR1cm4gdGhpcy5fcmdiYT1bbnVsbCxudWxsLG51bGwsbnVsbF0sdGhpczsobi5qcXVlcnl8fG4ubm9kZVR5cGUpJiYobj1oKG4pLmNzcyhlKSxlPXZvaWQgMCk7dmFyIGE9dGhpcyxzPWIobiksbz10aGlzLl9yZ2JhPVtdO3JldHVybiB2b2lkIDAhPT1lJiYobj1bbixlLHQsaV0scz0iYXJyYXkiKSwic3RyaW5nIj09PXM\/dGhpcy5wYXJzZSh3KG4pfHxILl9kZWZhdWx0KToiYXJyYXkiPT09cz8oeShnLnJnYmEucHJvcHMsZnVuY3Rpb24oZSx0KXtvW3QuaWR4XT14KG5bdC5pZHhdLHQpfSksdGhpcyk6Im9iamVjdCI9PT1zPyh5KGcsbiBpbnN0YW5jZW9mIHA\/ZnVuY3Rpb24oZSx0KXtuW3QuY2FjaGVdJiYoYVt0LmNhY2hlXT1uW3QuY2FjaGVdLnNsaWNlKCkpfTpmdW5jdGlvbihlLGkpe3ZhciBzPWkuY2FjaGU7eShpLnByb3BzLGZ1bmN0aW9uKGUsdCl7aWYoIWFbc10mJmkudG8pe2lmKCJhbHBoYSI9PT1lfHxudWxsPT1uW2VdKXJldHVybjthW3NdPWkudG8oYS5fcmdiYSl9YVtzXVt0LmlkeF09eChuW2VdLHQsITApfSksYVtzXSYmaC5pbkFycmF5KG51bGwsYVtzXS5zbGljZSgwLDMpKTwwJiYobnVsbD09YVtzXVszXSYmKGFbc11bM109MSksaS5mcm9tJiYoYS5fcmdiYT1pLmZyb20oYVtzXSkpKX0pLHRoaXMpOnZvaWQgMH0saXM6ZnVuY3Rpb24oZSl7dmFyIG49cChlKSxhPSEwLG89dGhpcztyZXR1cm4geShnLGZ1bmN0aW9uKGUsdCl7dmFyIGkscz1uW3QuY2FjaGVdO3JldHVybiBzJiYoaT1vW3QuY2FjaGVdfHx0LnRvJiZ0LnRvKG8uX3JnYmEpfHxbXSx5KHQucHJvcHMsZnVuY3Rpb24oZSx0KXtpZihudWxsIT1zW3QuaWR4XSlyZXR1cm4gYT1zW3QuaWR4XT09PWlbdC5pZHhdfSkpLGF9KSxhfSxfc3BhY2U6ZnVuY3Rpb24oKXt2YXIgaT1bXSxzPXRoaXM7cmV0dXJuIHkoZyxmdW5jdGlvbihlLHQpe3NbdC5jYWNoZV0mJmkucHVzaChlKX0pLGkucG9wKCl9LHRyYW5zaXRpb246ZnVuY3Rpb24oZSxvKXt2YXIgdD0obD1wKGUpKS5fc3BhY2UoKSxpPWdbdF0sZT0wPT09dGhpcy5hbHBoYSgpP3AoInRyYW5zcGFyZW50Iik6dGhpcyxyPWVbaS5jYWNoZV18fGkudG8oZS5fcmdiYSksaD1yLnNsaWNlKCksbD1sW2kuY2FjaGVdO3JldHVybiB5KGkucHJvcHMsZnVuY3Rpb24oZSx0KXt2YXIgaT10LmlkeCxzPXJbaV0sbj1sW2ldLGE9bVt0LnR5cGVdfHx7fTtudWxsIT09biYmKG51bGw9PT1zP2hbaV09bjooYS5tb2QmJihuLXM+YS5tb2QvMj9zKz1hLm1vZDpzLW4+YS5tb2QvMiYmKHMtPWEubW9kKSksaFtpXT14KChuLXMpKm8rcyx0KSkpfSksdGhpc1t0XShoKX0sYmxlbmQ6ZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMuX3JnYmFbM10pcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5fcmdiYS5zbGljZSgpLGk9dC5wb3AoKSxzPXAoZSkuX3JnYmE7cmV0dXJuIHAoaC5tYXAodCxmdW5jdGlvbihlLHQpe3JldHVybigxLWkpKnNbdF0raSplfSkpfSx0b1JnYmFTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT0icmdiYSgiLHQ9aC5tYXAodGhpcy5fcmdiYSxmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lP2U6Mjx0PzE6MH0pO3JldHVybiAxPT09dFszXSYmKHQucG9wKCksZT0icmdiKCIpLGUrdC5qb2luKCkrIikifSx0b0hzbGFTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT0iaHNsYSgiLHQ9aC5tYXAodGhpcy5oc2xhKCksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZSYmKGU9Mjx0PzE6MCksZT10JiZ0PDM\/TWF0aC5yb3VuZCgxMDAqZSkrIiUiOmV9KTtyZXR1cm4gMT09PXRbM10mJih0LnBvcCgpLGU9ImhzbCgiKSxlK3Quam9pbigpKyIpIn0sdG9IZXhTdHJpbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmdiYS5zbGljZSgpLGk9dC5wb3AoKTtyZXR1cm4gZSYmdC5wdXNoKH5+KDI1NSppKSksIiMiK2gubWFwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT0oZT0oZXx8MCkudG9TdHJpbmcoMTYpKS5sZW5ndGg\/IjAiK2U6ZX0pLmpvaW4oIiIpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fcmdiYVszXT8idHJhbnNwYXJlbnQiOnRoaXMudG9SZ2JhU3RyaW5nKCl9fSkpLnBhcnNlLnByb3RvdHlwZT1wLmZuLGcuaHNsYS50bz1mdW5jdGlvbihlKXtpZihudWxsPT1lWzBdfHxudWxsPT1lWzFdfHxudWxsPT1lWzJdKXJldHVybltudWxsLG51bGwsbnVsbCxlWzNdXTt2YXIgdD1lWzBdLzI1NSxpPWVbMV0vMjU1LHM9ZVsyXS8yNTUsbj1lWzNdLGE9TWF0aC5tYXgodCxpLHMpLG89TWF0aC5taW4odCxpLHMpLHI9YS1vLGg9YStvLGU9LjUqaCxpPW89PT1hPzA6dD09PWE\/NjAqKGktcykvciszNjA6aT09PWE\/NjAqKHMtdCkvcisxMjA6NjAqKHQtaSkvcisyNDAsaD0wPT1yPzA6ZTw9LjU\/ci9oOnIvKDItaCk7cmV0dXJuW01hdGgucm91bmQoaSklMzYwLGgsZSxudWxsPT1uPzE6bl19LGcuaHNsYS5mcm9tPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWVbMF18fG51bGw9PWVbMV18fG51bGw9PWVbMl0pcmV0dXJuW251bGwsbnVsbCxudWxsLGVbM11dO3ZhciB0PWVbMF0vMzYwLGk9ZVsxXSxzPWVbMl0sZT1lWzNdLGk9czw9LjU\/cyooMStpKTpzK2ktcyppLHM9MipzLWk7cmV0dXJuW01hdGgucm91bmQoMjU1KkMocyxpLHQrMS8zKSksTWF0aC5yb3VuZCgyNTUqQyhzLGksdCkpLE1hdGgucm91bmQoMjU1KkMocyxpLHQtMS8zKSksZV19LHkoZyxmdW5jdGlvbihoLGUpe3ZhciB0PWUucHJvcHMsYT1lLmNhY2hlLG89ZS50byxyPWUuZnJvbTtwLmZuW2hdPWZ1bmN0aW9uKGUpe2lmKG8mJiF0aGlzW2FdJiYodGhpc1thXT1vKHRoaXMuX3JnYmEpKSx2b2lkIDA9PT1lKXJldHVybiB0aGlzW2FdLnNsaWNlKCk7dmFyIGk9YihlKSxzPSJhcnJheSI9PT1pfHwib2JqZWN0Ij09PWk\/ZTphcmd1bWVudHMsbj10aGlzW2FdLnNsaWNlKCk7cmV0dXJuIHkodCxmdW5jdGlvbihlLHQpe2U9c1sib2JqZWN0Ij09PWk\/ZTp0LmlkeF07bnVsbD09ZSYmKGU9blt0LmlkeF0pLG5bdC5pZHhdPXgoZSx0KX0pLHI\/KChlPXAocihuKSkpW2FdPW4sZSk6cChuKX0seSh0LGZ1bmN0aW9uKG8scil7cC5mbltvXXx8KHAuZm5bb109ZnVuY3Rpb24oZSl7dmFyIHQsaT1iKGUpLHM9ImFscGhhIj09PW8\/dGhpcy5faHNsYT8iaHNsYSI6InJnYmEiOmgsbj10aGlzW3NdKCksYT1uW3IuaWR4XTtyZXR1cm4idW5kZWZpbmVkIj09PWk\/YTooImZ1bmN0aW9uIj09PWkmJihpPWIoZT1lLmNhbGwodGhpcyxhKSkpLG51bGw9PWUmJnIuZW1wdHk\/dGhpczooInN0cmluZyI9PT1pJiYodD1kLmV4ZWMoZSkpJiYoZT1hK3BhcnNlRmxvYXQodFsyXSkqKCIrIj09PXRbMV0\/MTotMSkpLG5bci5pZHhdPWUsdGhpc1tzXShuKSkpfSl9KX0pLChwLmhvb2s9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCIgIik7eShlLGZ1bmN0aW9uKGUsYSl7aC5jc3NIb29rc1thXT17c2V0OmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPSIiO2lmKCJ0cmFuc3BhcmVudCIhPT10JiYoInN0cmluZyIhPT1iKHQpfHwoaT13KHQpKSkpe2lmKHQ9cChpfHx0KSwhdi5yZ2JhJiYxIT09dC5fcmdiYVszXSl7Zm9yKHM9ImJhY2tncm91bmRDb2xvciI9PT1hP2UucGFyZW50Tm9kZTplOygiIj09PW58fCJ0cmFuc3BhcmVudCI9PT1uKSYmcyYmcy5zdHlsZTspdHJ5e249aC5jc3MocywiYmFja2dyb3VuZENvbG9yIikscz1zLnBhcmVudE5vZGV9Y2F0Y2goZSl7fXQ9dC5ibGVuZChuJiYidHJhbnNwYXJlbnQiIT09bj9uOiJfZGVmYXVsdCIpfXQ9dC50b1JnYmFTdHJpbmcoKX10cnl7ZS5zdHlsZVthXT10fWNhdGNoKGUpe319fSxoLmZ4LnN0ZXBbYV09ZnVuY3Rpb24oZSl7ZS5jb2xvckluaXR8fChlLnN0YXJ0PXAoZS5lbGVtLGEpLGUuZW5kPXAoZS5lbmQpLGUuY29sb3JJbml0PSEwKSxoLmNzc0hvb2tzW2FdLnNldChlLmVsZW0sZS5zdGFydC50cmFuc2l0aW9uKGUuZW5kLGUucG9zKSl9fSl9KSgiYmFja2dyb3VuZENvbG9yIGJvcmRlckJvdHRvbUNvbG9yIGJvcmRlckxlZnRDb2xvciBib3JkZXJSaWdodENvbG9yIGJvcmRlclRvcENvbG9yIGNvbG9yIGNvbHVtblJ1bGVDb2xvciBvdXRsaW5lQ29sb3IgdGV4dERlY29yYXRpb25Db2xvciB0ZXh0RW1waGFzaXNDb2xvciIpLGguY3NzSG9va3MuYm9yZGVyQ29sb3I9e2V4cGFuZDpmdW5jdGlvbihpKXt2YXIgcz17fTtyZXR1cm4geShbIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGZ1bmN0aW9uKGUsdCl7c1siYm9yZGVyIit0KyJDb2xvciJdPWl9KSxzfX07dmFyIE0sayxELEUsUyxPLEksTixBLFAsSD1oLkNvbG9yLm5hbWVzPXthcXVhOiIjMDBmZmZmIixibGFjazoiIzAwMDAwMCIsYmx1ZToiIzAwMDBmZiIsZnVjaHNpYToiI2ZmMDBmZiIsZ3JheToiIzgwODA4MCIsZ3JlZW46IiMwMDgwMDAiLGxpbWU6IiMwMGZmMDAiLG1hcm9vbjoiIzgwMDAwMCIsbmF2eToiIzAwMDA4MCIsb2xpdmU6IiM4MDgwMDAiLHB1cnBsZToiIzgwMDA4MCIscmVkOiIjZmYwMDAwIixzaWx2ZXI6IiNjMGMwYzAiLHRlYWw6IiMwMDgwODAiLHdoaXRlOiIjZmZmZmZmIix5ZWxsb3c6IiNmZmZmMDAiLHRyYW5zcGFyZW50OltudWxsLG51bGwsbnVsbCwwXSxfZGVmYXVsdDoiI2ZmZmZmZiJ9LFQ9InVpLWVmZmVjdHMtIixXPSJ1aS1lZmZlY3RzLXN0eWxlIixWPSJ1aS1lZmZlY3RzLWFuaW1hdGVkIjtmdW5jdGlvbiBGKGUpe3ZhciB0LGkscz1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc\/ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTplLmN1cnJlbnRTdHlsZSxuPXt9O2lmKHMmJnMubGVuZ3RoJiZzWzBdJiZzW3NbMF1dKWZvcihpPXMubGVuZ3RoO2ktLTspInN0cmluZyI9PXR5cGVvZiBzW3Q9c1tpXV0mJihuW3QucmVwbGFjZSgvLShbXGRhLXpdKS9naSxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KV09c1t0XSk7ZWxzZSBmb3IodCBpbiBzKSJzdHJpbmciPT10eXBlb2Ygc1t0XSYmKG5bdF09c1t0XSk7cmV0dXJuIG59ZnVuY3Rpb24gcShlLHQsaSxzKXtyZXR1cm4gZT17ZWZmZWN0OmU9dS5pc1BsYWluT2JqZWN0KGUpPyh0PWUpLmVmZmVjdDplfSwiZnVuY3Rpb24iPT10eXBlb2YodD1udWxsPT10P3t9OnQpJiYocz10LGk9bnVsbCx0PXt9KSwibnVtYmVyIiE9dHlwZW9mIHQmJiF1LmZ4LnNwZWVkc1t0XXx8KHM9aSxpPXQsdD17fSksImZ1bmN0aW9uIj09dHlwZW9mIGkmJihzPWksaT1udWxsKSx0JiZ1LmV4dGVuZChlLHQpLGk9aXx8dC5kdXJhdGlvbixlLmR1cmF0aW9uPXUuZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBpP2k6aSBpbiB1LmZ4LnNwZWVkcz91LmZ4LnNwZWVkc1tpXTp1LmZ4LnNwZWVkcy5fZGVmYXVsdCxlLmNvbXBsZXRlPXN8fHQuY29tcGxldGUsZX1mdW5jdGlvbiBMKGUpe3JldHVybiFlfHwibnVtYmVyIj09dHlwZW9mIGV8fHUuZnguc3BlZWRzW2VdfHwoInN0cmluZyI9PXR5cGVvZiBlJiYhdS5lZmZlY3RzLmVmZmVjdFtlXXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBlfHwib2JqZWN0Ij09dHlwZW9mIGUmJiFlLmVmZmVjdCkpfWZ1bmN0aW9uIEIoZSx0KXt2YXIgaT10Lm91dGVyV2lkdGgoKSx0PXQub3V0ZXJIZWlnaHQoKSxlPS9ecmVjdFwoKC0\/XGQqXC4\/XGQqcHh8LT9cZCslfGF1dG8pLD9ccyooLT9cZCpcLj9cZCpweHwtP1xkKyV8YXV0byksP1xzKigtP1xkKlwuP1xkKnB4fC0\/XGQrJXxhdXRvKSw\/XHMqKC0\/XGQqXC4\/XGQqcHh8LT9cZCslfGF1dG8pXCkkLy5leGVjKGUpfHxbIiIsMCxpLHQsMF07cmV0dXJue3RvcDpwYXJzZUZsb2F0KGVbMV0pfHwwLHJpZ2h0OiJhdXRvIj09PWVbMl0\/aTpwYXJzZUZsb2F0KGVbMl0pLGJvdHRvbToiYXV0byI9PT1lWzNdP3Q6cGFyc2VGbG9hdChlWzNdKSxsZWZ0OnBhcnNlRmxvYXQoZVs0XSl8fDB9fXUuZWZmZWN0cz17ZWZmZWN0Ont9fSxFPVsiYWRkIiwicmVtb3ZlIiwidG9nZ2xlIl0sUz17Ym9yZGVyOjEsYm9yZGVyQm90dG9tOjEsYm9yZGVyQ29sb3I6MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxib3JkZXJXaWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX0sdS5lYWNoKFsiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyVG9wU3R5bGUiXSxmdW5jdGlvbihlLHQpe3UuZnguc3RlcFt0XT1mdW5jdGlvbihlKXsoIm5vbmUiIT09ZS5lbmQmJiFlLnNldEF0dHJ8fDE9PT1lLnBvcyYmIWUuc2V0QXR0cikmJihoLnN0eWxlKGUuZWxlbSx0LGUuZW5kKSxlLnNldEF0dHI9ITApfX0pLHUuZm4uYWRkQmFja3x8KHUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSx1LmVmZmVjdHMuYW5pbWF0ZUNsYXNzPWZ1bmN0aW9uKG4sZSx0LGkpe3ZhciBhPXUuc3BlZWQoZSx0LGkpO3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGk9dSh0aGlzKSxlPWkuYXR0cigiY2xhc3MiKXx8IiIsdD0odD1hLmNoaWxkcmVuP2kuZmluZCgiKiIpLmFkZEJhY2soKTppKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm57ZWw6dSh0aGlzKSxzdGFydDpGKHRoaXMpfX0pLHM9ZnVuY3Rpb24oKXt1LmVhY2goRSxmdW5jdGlvbihlLHQpe25bdF0mJmlbdCsiQ2xhc3MiXShuW3RdKX0pfTtzKCksdD10Lm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZD1GKHRoaXMuZWxbMF0pLHRoaXMuZGlmZj1mdW5jdGlvbihlLHQpe3ZhciBpLHMsbj17fTtmb3IoaSBpbiB0KXM9dFtpXSxlW2ldIT09cyYmKFNbaV18fCF1LmZ4LnN0ZXBbaV0mJmlzTmFOKHBhcnNlRmxvYXQocykpfHwobltpXT1zKSk7cmV0dXJuIG59KHRoaXMuc3RhcnQsdGhpcy5lbmQpLHRoaXN9KSxpLmF0dHIoImNsYXNzIixlKSx0PXQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXUuRGVmZXJyZWQoKSxpPXUuZXh0ZW5kKHt9LGEse3F1ZXVlOiExLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dC5yZXNvbHZlKGUpfX0pO3JldHVybiB0aGlzLmVsLmFuaW1hdGUodGhpcy5kaWZmLGkpLHQucHJvbWlzZSgpfSksdS53aGVuLmFwcGx5KHUsdC5nZXQoKSkuZG9uZShmdW5jdGlvbigpe3MoKSx1LmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbDt1LmVhY2godGhpcy5kaWZmLGZ1bmN0aW9uKGUpe3QuY3NzKGUsIiIpfSl9KSxhLmNvbXBsZXRlLmNhbGwoaVswXSl9KX0pfSx1LmZuLmV4dGVuZCh7YWRkQ2xhc3M6KEQ9dS5mbi5hZGRDbGFzcyxmdW5jdGlvbihlLHQsaSxzKXtyZXR1cm4gdD91LmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7YWRkOmV9LHQsaSxzKTpELmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHJlbW92ZUNsYXNzOihrPXUuZm4ucmVtb3ZlQ2xhc3MsZnVuY3Rpb24oZSx0LGkscyl7cmV0dXJuIDE8YXJndW1lbnRzLmxlbmd0aD91LmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7cmVtb3ZlOmV9LHQsaSxzKTprLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHRvZ2dsZUNsYXNzOihNPXUuZm4udG9nZ2xlQ2xhc3MsZnVuY3Rpb24oZSx0LGkscyxuKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0fHx2b2lkIDA9PT10P2k\/dS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMsdD97YWRkOmV9OntyZW1vdmU6ZX0saSxzLG4pOk0uYXBwbHkodGhpcyxhcmd1bWVudHMpOnUuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHt0b2dnbGU6ZX0sdCxpLHMpfSksc3dpdGNoQ2xhc3M6ZnVuY3Rpb24oZSx0LGkscyxuKXtyZXR1cm4gdS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMse2FkZDp0LHJlbW92ZTplfSxpLHMsbil9fSksdS5leHByJiZ1LmV4cHIucHNldWRvcyYmdS5leHByLnBzZXVkb3MuYW5pbWF0ZWQmJih1LmV4cHIucHNldWRvcy5hbmltYXRlZD0oTz11LmV4cHIucHNldWRvcy5hbmltYXRlZCxmdW5jdGlvbihlKXtyZXR1cm4hIXUoZSkuZGF0YShWKXx8TyhlKX0pKSwhMSE9PXUudWlCYWNrQ29tcGF0JiZ1LmV4dGVuZCh1LmVmZmVjdHMse3NhdmU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9MCxzPXQubGVuZ3RoO2k8cztpKyspbnVsbCE9PXRbaV0mJmUuZGF0YShUK3RbaV0sZVswXS5zdHlsZVt0W2ldXSl9LHJlc3RvcmU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGkscz0wLG49dC5sZW5ndGg7czxuO3MrKyludWxsIT09dFtzXSYmKGk9ZS5kYXRhKFQrdFtzXSksZS5jc3ModFtzXSxpKSl9LHNldE1vZGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD0idG9nZ2xlIj09PXQ\/ZS5pcygiOmhpZGRlbiIpPyJzaG93IjoiaGlkZSI6dH0sY3JlYXRlV3JhcHBlcjpmdW5jdGlvbihpKXtpZihpLnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIikpcmV0dXJuIGkucGFyZW50KCk7dmFyIHM9e3dpZHRoOmkub3V0ZXJXaWR0aCghMCksaGVpZ2h0Omkub3V0ZXJIZWlnaHQoITApLGZsb2F0OmkuY3NzKCJmbG9hdCIpfSxlPXUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWVmZmVjdHMtd3JhcHBlciIpLmNzcyh7Zm9udFNpemU6IjEwMCUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLG1hcmdpbjowLHBhZGRpbmc6MH0pLHQ9e3dpZHRoOmkud2lkdGgoKSxoZWlnaHQ6aS5oZWlnaHQoKX0sbj1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3RyeXtuLmlkfWNhdGNoKGUpe249ZG9jdW1lbnQuYm9keX1yZXR1cm4gaS53cmFwKGUpLGlbMF0hPT1uJiYhdS5jb250YWlucyhpWzBdLG4pfHx1KG4pLnRyaWdnZXIoImZvY3VzIiksZT1pLnBhcmVudCgpLCJzdGF0aWMiPT09aS5jc3MoInBvc2l0aW9uIik\/KGUuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSksaS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KSk6KHUuZXh0ZW5kKHMse3Bvc2l0aW9uOmkuY3NzKCJwb3NpdGlvbiIpLHpJbmRleDppLmNzcygiei1pbmRleCIpfSksdS5lYWNoKFsidG9wIiwibGVmdCIsImJvdHRvbSIsInJpZ2h0Il0sZnVuY3Rpb24oZSx0KXtzW3RdPWkuY3NzKHQpLGlzTmFOKHBhcnNlSW50KHNbdF0sMTApKSYmKHNbdF09ImF1dG8iKX0pLGkuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDowLGxlZnQ6MCxyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIn0pKSxpLmNzcyh0KSxlLmNzcyhzKS5zaG93KCl9LHJlbW92ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyZXR1cm4gZS5wYXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpJiYoZS5wYXJlbnQoKS5yZXBsYWNlV2l0aChlKSxlWzBdIT09dCYmIXUuY29udGFpbnMoZVswXSx0KXx8dSh0KS50cmlnZ2VyKCJmb2N1cyIpKSxlfX0pLHUuZXh0ZW5kKHUuZWZmZWN0cyx7dmVyc2lvbjoiMS4xMy4yIixkZWZpbmU6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpfHwoaT10LHQ9ImVmZmVjdCIpLHUuZWZmZWN0cy5lZmZlY3RbZV09aSx1LmVmZmVjdHMuZWZmZWN0W2VdLm1vZGU9dCxpfSxzY2FsZWREaW1lbnNpb25zOmZ1bmN0aW9uKGUsdCxpKXtpZigwPT09dClyZXR1cm57aGVpZ2h0OjAsd2lkdGg6MCxvdXRlckhlaWdodDowLG91dGVyV2lkdGg6MH07dmFyIHM9Imhvcml6b250YWwiIT09aT8odHx8MTAwKS8xMDA6MSx0PSJ2ZXJ0aWNhbCIhPT1pPyh0fHwxMDApLzEwMDoxO3JldHVybntoZWlnaHQ6ZS5oZWlnaHQoKSp0LHdpZHRoOmUud2lkdGgoKSpzLG91dGVySGVpZ2h0OmUub3V0ZXJIZWlnaHQoKSp0LG91dGVyV2lkdGg6ZS5vdXRlcldpZHRoKCkqc319LGNsaXBUb0JveDpmdW5jdGlvbihlKXtyZXR1cm57d2lkdGg6ZS5jbGlwLnJpZ2h0LWUuY2xpcC5sZWZ0LGhlaWdodDplLmNsaXAuYm90dG9tLWUuY2xpcC50b3AsbGVmdDplLmNsaXAubGVmdCx0b3A6ZS5jbGlwLnRvcH19LHVuc2hpZnQ6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPWUucXVldWUoKTsxPHQmJnMuc3BsaWNlLmFwcGx5KHMsWzEsMF0uY29uY2F0KHMuc3BsaWNlKHQsaSkpKSxlLmRlcXVldWUoKX0sc2F2ZVN0eWxlOmZ1bmN0aW9uKGUpe2UuZGF0YShXLGVbMF0uc3R5bGUuY3NzVGV4dCl9LHJlc3RvcmVTdHlsZTpmdW5jdGlvbihlKXtlWzBdLnN0eWxlLmNzc1RleHQ9ZS5kYXRhKFcpfHwiIixlLnJlbW92ZURhdGEoVyl9LG1vZGU6ZnVuY3Rpb24oZSx0KXtlPWUuaXMoIjpoaWRkZW4iKTtyZXR1cm4idG9nZ2xlIj09PXQmJih0PWU\/InNob3ciOiJoaWRlIiksdD0oZT8iaGlkZSI9PT10OiJzaG93Ij09PXQpPyJub25lIjp0fSxnZXRCYXNlbGluZTpmdW5jdGlvbihlLHQpe3ZhciBpLHM7c3dpdGNoKGVbMF0pe2Nhc2UidG9wIjppPTA7YnJlYWs7Y2FzZSJtaWRkbGUiOmk9LjU7YnJlYWs7Y2FzZSJib3R0b20iOmk9MTticmVhaztkZWZhdWx0Omk9ZVswXS90LmhlaWdodH1zd2l0Y2goZVsxXSl7Y2FzZSJsZWZ0IjpzPTA7YnJlYWs7Y2FzZSJjZW50ZXIiOnM9LjU7YnJlYWs7Y2FzZSJyaWdodCI6cz0xO2JyZWFrO2RlZmF1bHQ6cz1lWzFdL3Qud2lkdGh9cmV0dXJue3g6cyx5Oml9fSxjcmVhdGVQbGFjZWhvbGRlcjpmdW5jdGlvbihlKXt2YXIgdCxpPWUuY3NzKCJwb3NpdGlvbiIpLHM9ZS5wb3NpdGlvbigpO3JldHVybiBlLmNzcyh7bWFyZ2luVG9wOmUuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5Cb3R0b206ZS5jc3MoIm1hcmdpbkJvdHRvbSIpLG1hcmdpbkxlZnQ6ZS5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5SaWdodDplLmNzcygibWFyZ2luUmlnaHQiKX0pLm91dGVyV2lkdGgoZS5vdXRlcldpZHRoKCkpLm91dGVySGVpZ2h0KGUub3V0ZXJIZWlnaHQoKSksL14oc3RhdGljfHJlbGF0aXZlKS8udGVzdChpKSYmKGk9ImFic29sdXRlIix0PXUoIjwiK2VbMF0ubm9kZU5hbWUrIj4iKS5pbnNlcnRBZnRlcihlKS5jc3Moe2Rpc3BsYXk6L14oaW5saW5lfHJ1YnkpLy50ZXN0KGUuY3NzKCJkaXNwbGF5IikpPyJpbmxpbmUtYmxvY2siOiJibG9jayIsdmlzaWJpbGl0eToiaGlkZGVuIixtYXJnaW5Ub3A6ZS5jc3MoIm1hcmdpblRvcCIpLG1hcmdpbkJvdHRvbTplLmNzcygibWFyZ2luQm90dG9tIiksbWFyZ2luTGVmdDplLmNzcygibWFyZ2luTGVmdCIpLG1hcmdpblJpZ2h0OmUuY3NzKCJtYXJnaW5SaWdodCIpLGZsb2F0OmUuY3NzKCJmbG9hdCIpfSkub3V0ZXJXaWR0aChlLm91dGVyV2lkdGgoKSkub3V0ZXJIZWlnaHQoZS5vdXRlckhlaWdodCgpKS5hZGRDbGFzcygidWktZWZmZWN0cy1wbGFjZWhvbGRlciIpLGUuZGF0YShUKyJwbGFjZWhvbGRlciIsdCkpLGUuY3NzKHtwb3NpdGlvbjppLGxlZnQ6cy5sZWZ0LHRvcDpzLnRvcH0pLHR9LHJlbW92ZVBsYWNlaG9sZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PVQrInBsYWNlaG9sZGVyIixpPWUuZGF0YSh0KTtpJiYoaS5yZW1vdmUoKSxlLnJlbW92ZURhdGEodCkpfSxjbGVhblVwOmZ1bmN0aW9uKGUpe3UuZWZmZWN0cy5yZXN0b3JlU3R5bGUoZSksdS5lZmZlY3RzLnJlbW92ZVBsYWNlaG9sZGVyKGUpfSxzZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKHMsZSxuLGEpe3JldHVybiBhPWF8fHt9LHUuZWFjaChlLGZ1bmN0aW9uKGUsdCl7dmFyIGk9cy5jc3NVbml0KHQpOzA8aVswXSYmKGFbdF09aVswXSpuK2lbMV0pfSksYX19KSx1LmZuLmV4dGVuZCh7ZWZmZWN0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD11KHRoaXMpLGk9dS5lZmZlY3RzLm1vZGUodCxyKXx8YTt0LmRhdGEoViwhMCksaC5wdXNoKGkpLGEmJigic2hvdyI9PT1pfHxpPT09YSYmImhpZGUiPT09aSkmJnQuc2hvdygpLGEmJiJub25lIj09PWl8fHUuZWZmZWN0cy5zYXZlU3R5bGUodCksImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUoKX12YXIgcz1xLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPXUuZWZmZWN0cy5lZmZlY3Rbcy5lZmZlY3RdLGE9bi5tb2RlLHQ9cy5xdWV1ZSxpPXR8fCJmeCIsbz1zLmNvbXBsZXRlLHI9cy5tb2RlLGg9W107cmV0dXJuIHUuZngub2ZmfHwhbj9yP3RoaXNbcl0ocy5kdXJhdGlvbixvKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtvJiZvLmNhbGwodGhpcyl9KTohMT09PXQ\/dGhpcy5lYWNoKGUpLmVhY2gobCk6dGhpcy5xdWV1ZShpLGUpLnF1ZXVlKGksbCk7ZnVuY3Rpb24gbChlKXt2YXIgdD11KHRoaXMpO2Z1bmN0aW9uIGkoKXsiZnVuY3Rpb24iPT10eXBlb2YgbyYmby5jYWxsKHRbMF0pLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKCl9cy5tb2RlPWguc2hpZnQoKSwhMT09PXUudWlCYWNrQ29tcGF0fHxhPyJub25lIj09PXMubW9kZT8odFtyXSgpLGkoKSk6bi5jYWxsKHRbMF0scyxmdW5jdGlvbigpe3QucmVtb3ZlRGF0YShWKSx1LmVmZmVjdHMuY2xlYW5VcCh0KSwiaGlkZSI9PT1zLm1vZGUmJnQuaGlkZSgpLGkoKX0pOih0LmlzKCI6aGlkZGVuIik\/ImhpZGUiPT09cjoic2hvdyI9PT1yKT8odFtyXSgpLGkoKSk6bi5jYWxsKHRbMF0scyxpKX19LHNob3c6KEE9dS5mbi5zaG93LGZ1bmN0aW9uKGUpe2lmKEwoZSkpcmV0dXJuIEEuYXBwbHkodGhpcyxhcmd1bWVudHMpO2U9cS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGUubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLGUpfSksaGlkZTooTj11LmZuLmhpZGUsZnVuY3Rpb24oZSl7aWYoTChlKSlyZXR1cm4gTi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZT1xLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZS5tb2RlPSJoaWRlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsZSl9KSx0b2dnbGU6KEk9dS5mbi50b2dnbGUsZnVuY3Rpb24oZSl7aWYoTChlKXx8ImJvb2xlYW4iPT10eXBlb2YgZSlyZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZT1xLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZS5tb2RlPSJ0b2dnbGUiLHRoaXMuZWZmZWN0LmNhbGwodGhpcyxlKX0pLGNzc1VuaXQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5jc3MoZSkscz1bXTtyZXR1cm4gdS5lYWNoKFsiZW0iLCJweCIsIiUiLCJwdCJdLGZ1bmN0aW9uKGUsdCl7MDxpLmluZGV4T2YodCkmJihzPVtwYXJzZUZsb2F0KGkpLHRdKX0pLHN9LGNzc0NsaXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGU\/dGhpcy5jc3MoImNsaXAiLCJyZWN0KCIrZS50b3ArInB4ICIrZS5yaWdodCsicHggIitlLmJvdHRvbSsicHggIitlLmxlZnQrInB4KSIpOkIodGhpcy5jc3MoImNsaXAiKSx0aGlzKX0sdHJhbnNmZXI6ZnVuY3Rpb24oZSx0KXt2YXIgaT11KHRoaXMpLHM9dShlLnRvKSxuPSJmaXhlZCI9PT1zLmNzcygicG9zaXRpb24iKSxhPXUoImJvZHkiKSxvPW4\/YS5zY3JvbGxUb3AoKTowLHI9bj9hLnNjcm9sbExlZnQoKTowLGE9cy5vZmZzZXQoKSxhPXt0b3A6YS50b3AtbyxsZWZ0OmEubGVmdC1yLGhlaWdodDpzLmlubmVySGVpZ2h0KCksd2lkdGg6cy5pbm5lcldpZHRoKCl9LHM9aS5vZmZzZXQoKSxoPXUoIjxkaXYgY2xhc3M9J3VpLWVmZmVjdHMtdHJhbnNmZXInPjwvZGl2PiIpO2guYXBwZW5kVG8oImJvZHkiKS5hZGRDbGFzcyhlLmNsYXNzTmFtZSkuY3NzKHt0b3A6cy50b3AtbyxsZWZ0OnMubGVmdC1yLGhlaWdodDppLmlubmVySGVpZ2h0KCksd2lkdGg6aS5pbm5lcldpZHRoKCkscG9zaXRpb246bj8iZml4ZWQiOiJhYnNvbHV0ZSJ9KS5hbmltYXRlKGEsZS5kdXJhdGlvbixlLmVhc2luZyxmdW5jdGlvbigpe2gucmVtb3ZlKCksImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQoKX0pfX0pLHUuZnguc3RlcC5jbGlwPWZ1bmN0aW9uKGUpe2UuY2xpcEluaXR8fChlLnN0YXJ0PXUoZS5lbGVtKS5jc3NDbGlwKCksInN0cmluZyI9PXR5cGVvZiBlLmVuZCYmKGUuZW5kPUIoZS5lbmQsZS5lbGVtKSksZS5jbGlwSW5pdD0hMCksdShlLmVsZW0pLmNzc0NsaXAoe3RvcDplLnBvcyooZS5lbmQudG9wLWUuc3RhcnQudG9wKStlLnN0YXJ0LnRvcCxyaWdodDplLnBvcyooZS5lbmQucmlnaHQtZS5zdGFydC5yaWdodCkrZS5zdGFydC5yaWdodCxib3R0b206ZS5wb3MqKGUuZW5kLmJvdHRvbS1lLnN0YXJ0LmJvdHRvbSkrZS5zdGFydC5ib3R0b20sbGVmdDplLnBvcyooZS5lbmQubGVmdC1lLnN0YXJ0LmxlZnQpK2Uuc3RhcnQubGVmdH0pfSxQPXt9LHUuZWFjaChbIlF1YWQiLCJDdWJpYyIsIlF1YXJ0IiwiUXVpbnQiLCJFeHBvIl0sZnVuY3Rpb24odCxlKXtQW2VdPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnBvdyhlLHQrMil9fSksdS5leHRlbmQoUCx7U2luZTpmdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLmNvcyhlKk1hdGguUEkvMil9LENpcmM6ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtZSplKX0sRWxhc3RpYzpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWV8fDE9PT1lP2U6LU1hdGgucG93KDIsOCooZS0xKSkqTWF0aC5zaW4oKDgwKihlLTEpLTcuNSkqTWF0aC5QSS8xNSl9LEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqZSooMyplLTIpfSxCb3VuY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGk9NDtlPCgodD1NYXRoLnBvdygyLC0taSkpLTEpLzExOyk7cmV0dXJuIDEvTWF0aC5wb3coNCwzLWkpLTcuNTYyNSpNYXRoLnBvdygoMyp0LTIpLzIyLWUsMil9fSksdS5lYWNoKFAsZnVuY3Rpb24oZSx0KXt1LmVhc2luZ1siZWFzZUluIitlXT10LHUuZWFzaW5nWyJlYXNlT3V0IitlXT1mdW5jdGlvbihlKXtyZXR1cm4gMS10KDEtZSl9LHUuZWFzaW5nWyJlYXNlSW5PdXQiK2VdPWZ1bmN0aW9uKGUpe3JldHVybiBlPC41P3QoMiplKS8yOjEtdCgtMiplKzIpLzJ9fSk7dS5lZmZlY3RzfSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvc3RvcmUuanMgKiovCnZhciBfX19kMmNfc3RvcmVqc19jX29uPSIyMDI2LTAyLTIwIDExOjMwOjEwIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtiXTtpZihudWxsPT1jKXJldHVybiBhW2JdO2M9YVtjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmFbYl19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYSxiLGMsZCl7YiYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGEsYixjLGQpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGEsYixjLGQpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe2M9JGpzY29tcC5nbG9iYWw7YT1hLnNwbGl0KCIuIik7Zm9yKGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZT1hW2RdO2lmKCEoZSBpbiBjKSlyZXR1cm47Yz1jW2VdfWE9YVthLmxlbmd0aC0xXTtkPWNbYV07Yj1iKGQpO2IhPWQmJm51bGwhPWImJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuc3BsaXQoIi4iKTthPTE9PT1lLmxlbmd0aDtkPWVbMF07ZD0hYSYmZCBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIGY9MDtmPGUubGVuZ3RoLTE7ZisrKXt2YXIgZz1lW2ZdO2lmKCEoZyBpbiBkKSlyZXR1cm47ZD1kW2ddfWU9ZVtlLmxlbmd0aC0xXTtjPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1jP2RbZV06bnVsbDtiPWIoYyk7bnVsbCE9YiYmKGE\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxlLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1jJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0mJihjPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChlKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtjKyIkIitlKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGQsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBhPXthOiEwfSxiPXt9O3RyeXtyZXR1cm4gYi5fX3Byb3RvX189YSxiLmF9Y2F0Y2goYyl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGF9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBiP2IuY2FsbChhKTokanNjb21wLmFycmF5SXRlcmF0b3IoYSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy55aWVsZFJlc3VsdD1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmEsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1iO3JldHVybnt2YWx1ZTphfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYSxiKXthPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGEpO3ZhciBjPWEubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGMpO2lmKGMuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWMudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1iO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89YSx0aGlzLnlpZWxkKGMudmFsdWUsYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhLGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hO3ZvaWQgMCE9YiYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWIpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189YXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDthPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiLGMpe2M\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2NdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYnx8MClbMF07aWYoYj10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGIpe2lmKGIuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Yi5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGIuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWIuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7dGhpcy5vYmplY3RfPWE7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGIgaW4gYSl0aGlzLnByb3BlcnRpZXNfLnB1c2goYik7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBhPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGF9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWF9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBiPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYilyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYj9iWyJyZXR1cm4iXTpmdW5jdGlvbihjKXtyZXR1cm57dmFsdWU6Yyxkb25lOiEwfX0sYSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihhLGIsYyl7dHJ5e3ZhciBkPWEuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGIpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGQpO2lmKCFkLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxkO3ZhciBlPWQudmFsdWV9Y2F0Y2goZil7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhmKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtjLmNhbGwodGhpcy5jb250ZXh0XyxlKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBhPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTphLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGIpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGIpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXthPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGEuaXNFeGNlcHRpb24pdGhyb3cgYS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmEucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXtyZXR1cm4gYS5uZXh0XyhiKX07dGhpcy50aHJvdz1mdW5jdGlvbihiKXtyZXR1cm4gYS50aHJvd18oYil9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBhLnJldHVybl8oYil9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGEsYil7Yj1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYixhLnByb3RvdHlwZSk7cmV0dXJuIGJ9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtyZXR1cm4gYS5uZXh0KGQpfWZ1bmN0aW9uIGMoZCl7cmV0dXJuIGEudGhyb3coZCl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGQsZSl7ZnVuY3Rpb24gZihnKXtnLmRvbmU\/ZChnLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoZy52YWx1ZSkudGhlbihiLGMpLnRoZW4oZixlKX1mKGEubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGEoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSkpfTsKY2xpZW50U3RvcmFnZT17c2V0OmZ1bmN0aW9uKGEsYixjLGQpe2M9dm9pZCAwPT09Yz8xOmM7ZD12b2lkIDA9PT1kPyJsb2NhbCI6ZDtjb25zdCBlPSJzZXNzaW9uIj09PWQ\/d2luZG93LnNlc3Npb25TdG9yYWdlOndpbmRvdy5sb2NhbFN0b3JhZ2U7dHJ5e2I9e3ZhbHVlOmJ9LCJsb2NhbCI9PT1kJiYoYyo9ODY0RTUsYi5leHBpcnk9KG5ldyBEYXRlKS5nZXRUaW1lKCkrYyksZS5zZXRJdGVtKGEsSlNPTi5zdHJpbmdpZnkoYikpfWNhdGNoKGYpe2NvbnNvbGUuZXJyb3IoYEVycm9yIHNhdmluZyB0byAke2R9IHN0b3JhZ2VgLGYpfX0sZ2V0OmZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP251bGw6Yjtjb25zdCBjPShkLGUpPT57dHJ5e2NvbnN0IGY9ZC5nZXRJdGVtKGEpO2lmKCFmKXJldHVybiBudWxsO2NvbnN0IGc9SlNPTi5wYXJzZShmKTtpZihlJiZnLmV4cGlyeSYmKG5ldyBEYXRlKS5nZXRUaW1lKCk+Zy5leHBpcnkpcmV0dXJuIGQucmVtb3ZlSXRlbShhKSxudWxsO2xldCBoOwpyZXR1cm4gbnVsbCE9KGg9Zy52YWx1ZSk\/aDpnfWNhdGNoKGYpe3JldHVybiBudWxsfX07cmV0dXJuImxvY2FsIj09PWI\/Yyh3aW5kb3cubG9jYWxTdG9yYWdlLCEwKToic2Vzc2lvbiI9PT1iP2Mod2luZG93LnNlc3Npb25TdG9yYWdlLCExKTpjKHdpbmRvdy5sb2NhbFN0b3JhZ2UsITApfHxjKHdpbmRvdy5zZXNzaW9uU3RvcmFnZSwhMSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9udWxsOmI7ImxvY2FsIiE9PWImJm51bGwhPT1ifHx3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYSk7InNlc3Npb24iIT09YiYmbnVsbCE9PWJ8fHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGEpfX07CmNyZWF0ZURhdGFTdG9yZT1hPT57YT1hfHx7fTtpbml0PWM9Pk9iamVjdC5hc3NpZ24oe30sYyk7Y29uc3QgYj1pbml0KGEpO3JldHVybntzZXQ6ZnVuY3Rpb24oYyxkKXtiW2NdPU9iamVjdC5hc3NpZ24oe30sYltjXSxkKTtyZXR1cm4gYltjXX0sZ2V0OmZ1bmN0aW9uKGMsZCl7ZD12b2lkIDA9PT1kP251bGw6ZDtjPWMuc3BsaXQoIi4iKTtsZXQgZT1iO2Zvcihjb25zdCBmIG9mIGMpe2lmKHZvaWQgMD09PWVbZl0pcmV0dXJuIGQ7ZT1lW2ZdfXJldHVybiB2b2lkIDAhPT1lP2U6ZH0sZmV0Y2g6ZnVuY3Rpb24oYyl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3RyeXtjb25zdCBkPXlpZWxkIGZldGNoKGBodHRwczovLyR7Yi5kZWFsZXJJbmZvLmRvbWFpbn0vYWpheENvbnRyb2xsZXIvJHtjfWApO2lmKCFkLm9rKXRocm93IEVycm9yKCJOZXR3b3JrIHJlc3BvbnNlIHdhcyBub3Qgb2siKTtjb25zdCBlPXlpZWxkIGQuanNvbigpOwpiW2NdPWU7cmV0dXJuIGJbY119Y2F0Y2goZCl7dGhyb3cgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmcm9tIHNlcnZlcjogJHtkLm1lc3NhZ2V9YCk7fX0pfSxkZWxldGU6ZnVuY3Rpb24oYyl7aWYoIWJbY10pdGhyb3cgRXJyb3IoIklEIG5vdCBmb3VuZCIpO2RlbGV0ZSBiW2NdO3JldHVybiEwfSxnZXRBbGw6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxiKX19fTsKLyoqIC9tL2pzL2VtYWlsSGFuZGxlci5qcyAqKi8KdmFyIF9fX2QyY19lbWFpbEhhbmRsZXJqc19jX29uPSIyMDI2LTA0LTAyIDEyOjMwOjAzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsZyxhKXtpZihlPT1BcnJheS5wcm90b3R5cGV8fGU9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGU7ZVtnXT1hLnZhbHVlO3JldHVybiBlfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oZSl7ZT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGUsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBnPTA7ZzxlLmxlbmd0aDsrK2cpe3ZhciBhPWVbZ107aWYoYSYmYS5NYXRoPT1NYXRoKXJldHVybiBhfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oZSxnKXt2YXIgYT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtnXTtpZihudWxsPT1hKXJldHVybiBlW2ddO2E9ZVthXTtyZXR1cm4gdm9pZCAwIT09YT9hOmVbZ119OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZSxnLGEsYil7ZyYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGUsZyxhLGIpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGUsZyxhLGIpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGUsZyxhLGIpe2E9JGpzY29tcC5nbG9iYWw7ZT1lLnNwbGl0KCIuIik7Zm9yKGI9MDtiPGUubGVuZ3RoLTE7YisrKXt2YXIgZD1lW2JdO2lmKCEoZCBpbiBhKSlyZXR1cm47YT1hW2RdfWU9ZVtlLmxlbmd0aC0xXTtiPWFbZV07Zz1nKGIpO2chPWImJm51bGwhPWcmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYSxlLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGUsZyxhLGIpe3ZhciBkPWUuc3BsaXQoIi4iKTtlPTE9PT1kLmxlbmd0aDtiPWRbMF07Yj0hZSYmYiBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIGM9MDtjPGQubGVuZ3RoLTE7YysrKXt2YXIgZj1kW2NdO2lmKCEoZiBpbiBiKSlyZXR1cm47Yj1iW2ZdfWQ9ZFtkLmxlbmd0aC0xXTthPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1hP2JbZF06bnVsbDtnPWcoYSk7bnVsbCE9ZyYmKGU\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pOmchPT1hJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZF0mJihhPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtkXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChkKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCthKyIkIitkKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGIsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZF0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpnfSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBlPXthOiEwfSxnPXt9O3RyeXtyZXR1cm4gZy5fX3Byb3RvX189ZSxnLmF9Y2F0Y2goYSl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihlLGcpe2UuX19wcm90b19fPWc7aWYoZS5fX3Byb3RvX18hPT1nKXRocm93IG5ldyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGV9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihlKXt2YXIgZz0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnPGUubGVuZ3RoP3tkb25lOiExLHZhbHVlOmVbZysrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoZSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oZSl7dmFyIGc9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmZVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBnP2cuY2FsbChlKTokanNjb21wLmFycmF5SXRlcmF0b3IoZSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrZSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oZSl7dGhpcy55aWVsZFJlc3VsdD1lfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmUsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmV9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oZSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmV9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGUsZyl7dGhpcy5uZXh0QWRkcmVzcz1nO3JldHVybnt2YWx1ZTplfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oZSxnKXtlPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGUpO3ZhciBhPWUubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGEpO2lmKGEuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWEudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1nO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89ZSx0aGlzLnlpZWxkKGEudmFsdWUsZyl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oZSl7dGhpcy5uZXh0QWRkcmVzcz1lfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihlLGcpe3RoaXMuY2F0Y2hBZGRyZXNzXz1lO3ZvaWQgMCE9ZyYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWcpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189ZXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihlLGcpe3RoaXMubmV4dEFkZHJlc3M9ZTt0aGlzLmNhdGNoQWRkcmVzc189Z3x8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihlKXt0aGlzLmNhdGNoQWRkcmVzc189ZXx8MDtlPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSxnLGEpe2E\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2FdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189ZXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1nfHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oZSxnKXtnPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoZ3x8MClbMF07aWYoZz10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGcpe2lmKGcuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Zy5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGcuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWcuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9ZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoZSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oZSl7dGhpcy5vYmplY3RfPWU7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGcgaW4gZSl0aGlzLnByb3BlcnRpZXNfLnB1c2goZyk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBlPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoZSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGV9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWV9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihlKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsZSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihlKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBnPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoZylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gZz9nWyJyZXR1cm4iXTpmdW5jdGlvbihhKXtyZXR1cm57dmFsdWU6YSxkb25lOiEwfX0sZSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oZSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxlLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihlLGcsYSl7dHJ5e3ZhciBiPWUuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGcpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGIpO2lmKCFiLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxiO3ZhciBkPWIudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhjKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDthLmNhbGwodGhpcy5jb250ZXh0XyxkKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBlPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTplLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGcpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGcpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtlPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGUuaXNFeGNlcHRpb24pdGhyb3cgZS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmUucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGUpe3RoaXMubmV4dD1mdW5jdGlvbihnKXtyZXR1cm4gZS5uZXh0XyhnKX07dGhpcy50aHJvdz1mdW5jdGlvbihnKXtyZXR1cm4gZS50aHJvd18oZyl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGcpe3JldHVybiBlLnJldHVybl8oZyl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGUsZyl7Zz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhnKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmZS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoZyxlLnByb3RvdHlwZSk7cmV0dXJuIGd9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gZyhiKXtyZXR1cm4gZS5uZXh0KGIpfWZ1bmN0aW9uIGEoYil7cmV0dXJuIGUudGhyb3coYil9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gYyhmKXtmLmRvbmU\/YihmLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoZi52YWx1ZSkudGhlbihnLGEpLnRoZW4oYyxkKX1jKGUubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGUoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oZSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhlKSkpfTsKdmFyIGVtYWlsSGFuZGxlcj1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm4gd2luZG93LnRvcC5sb2NhdGlvbltiXX1jYXRjaChkKXtyZXR1cm4gd2luZG93LmxvY2F0aW9uW2JdfX0sZz1mdW5jdGlvbigpe3RoaXMuYWN0aW9uPWZ1bmN0aW9uKCl7fTt0aGlzLm5leHQ9bnVsbDt0aGlzLl9uZXh0Q2FsbGVkPSExfTtnLnByb3RvdHlwZT17ZXhldXRlOmZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09PXR5cGVvZiB0aGlzLmFjdGlvbiYmdGhpcy5hY3Rpb24uY2FsbCh0aGlzKX0sZ290b05leHQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNOZXh0KCkmJnRoaXMubmV4dC5leGV1dGUoKTt0aGlzLl9uZXh0Q2FsbGVkPSEwO3JldHVybiB0aGlzfSxzZXROZXh0OmZ1bmN0aW9uKGIpe3RoaXMubmV4dD1iO3JldHVybiB0aGlzfSxzZXRBY3Rpb246ZnVuY3Rpb24oYil7dGhpcy5hY3Rpb249YjtyZXR1cm4gdGhpc30sX2hhc05leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMubmV4dCYmCiF0aGlzLl9uZXh0Q2FsbGVkfX07dmFyIGE9e3N1YmplY3Q6IiIsYm9keToiIixzZW5kVG86IiIsc2VuZFRvQURGRm9ybWF0OiIiLHNlbGVjdGVkU2VuZFRvOiIiLHNlbGVjdGVkU2VuZFRvQURGRm9ybWF0OiIiLHNlbmRGcm9tOiIiLHVzZXJFbWFpbDoiIix0cmFkZWluOiIiLHBvcHVwZGl2OiIiLHVzZXJGaXJzdE5hbWU6IiIsdXNlckxhc3ROYW1lOiIiLHVzZXJQaG9uZToiIixwaG9uZU1hbmRhdG9yeTowLHBob25lVmFsaWRhdGlvbkF0dGVtcHRzOjEsdXNlclBvc3RhbDoiIix1c2VyQWRkcmVzczoiIixiaXJ0aGRhdGU6IiIsdXNlckF0dGFjaG1lbnRQYXRoOiIiLG1haWxJRDoiZ2VuZXJpY01haWwiLGxlYWRJbnZva2VyOiJnZW5lcmljIixsZWFkSW52b2tlclNJRDoiIixpc0NUQTohMSxidXR0b25UZXh0OiIiLHJlc2V0Q2FsbGJhY2tzOmZ1bmN0aW9uKCl7JC5leHRlbmQoYSx7Y2FsbGJhY2s6bnVsbCxvbkR1cGxpY2F0ZVNlbmQ6ITEsb25BZnRlckNvbnNlbnQ6ITEsb25CZWZvcmVTaG93Q29uc2VudDohMX0pfSwKbWFrZToiIixtb2RlbDoiIix0cmltOiIiLHZpbjoiIixwcmljZTowLHllYXI6MCx2ZWhpY2xlVHlwZToiIixzdG9ja051bWJlcjoiIixwdXJjaGFzZV9pbnRlbnQ6IiIscHVyY2hhc2VfaW50ZW50X3NlY3Rpb246IiIsYWxsb3dfc2hhcmVfcGVyc29uYWxfZGF0YToiIixwcmVmZXJyZWRfY29udGFjdDoiIixjYXJpZDowLGNvbmRpdGlvbjoiVXNlZCIsbGFuZ3VhZ2U6IiIsaXNtb2JpbGVzaXRlOiJOTyIsaXNBbXA6Ik5PIixyZWZlcmVyOiIiLHBvcHVwT2ZmZXJUeXBlOiIiLHBhcnRpYWw6ITEsZnJvbUZhY2Vib29rOiExLHNraXBTZW5kaW5nOiExLGZyb21PbkxvYWQ6ITEscG9zdFN1Ym1pdENhbGxiYWNrOiIiLHJlc3VtZUFjdGl2aXR5OiEwLHN1Ym1pdERhdGE6IiIsc3VibWl0VHlwZToibm9ybWFsIixsYXN0Q2hlY2tzdW06IiIsY29uc2VudERlYWxlcjohMSxjb25zZW50T0VNOiExLGNvbnNlbnRUeXBlOiJJbXBsaWNpdCIsY29uc2VudEV4cGlyYXRpb246IiIsY29uc2VudERhdGU6IiIsCmNvbnNlbnRGcmVxdWVuY3k6LTEsY29uc2VudERldGFpbHNGUjoiIixjb25zZW50RGV0YWlsc0VOOiIiLGRldGFpbHNEZWZhdWx0czoiIixmcm9tQUE6MCxvd25lcklEOjAsZGVwYXJ0bWVudDoiIixza2lwR2V0RGVwOiExLGRlcGFydG1lbnRCeVN0b2NrOiExLGFza1B1cmNoYXNlSW50ZW50OiExLGxlYWRUaXRsZVVJVGV4dDoiIixsZWFkVGl0bGVUZXh0OiIiLGdlb2xvY19zdGF0dXM6IiIsZ2VvbG9jX2xhdDoiIixnZW9sb2NfbG9uZzoiIixnZW9sb2NfYWNjdXJhY3k6LTEsZ2VvbG9jX3RyYWNrX3N0cjoiIixnZW9sb2NfZW1haWxfc3RyOiIiLHRyYW5zcG9ydE9wdGlvbjoiIixjYXIyX21ha2U6IiIsY2FyMl9tb2RlbDoiIixjYXIyX3RyaW06IiIsY2FyMl95ZWFyOiIiLGNhcjJfY29sb3I6IiIsY2FyMl9vZG9tZXRlcjoiIixjYXIyX3ZpbjoiIixjYXIyX3RyYW5zbWlzc29uOiIiLGNhcjJfZHJpdmV0cmFpbjoiIixjYXIyX2Z1ZWx0eXBlOiIiLGNvbW1lbnRzOiIiLGdyZWNhcHRjaGFSZXNwb25zZVRva2VuOiIiLAppZ25vcmVDYXB0Y2hhOiExLGNvbnRhY3RJRDowLGNvbnRhY3RBZGRyZXNzOiIiLGNvbnRhY3RDaXR5OiIiLGNvbnRhY3RQcm92aW5jZToiIixjb250YWN0WmlwOiIiLGNvbnRhY3ROQVM6IiIsY29udGFjdEJpcnRoOiIiLGRlYWxlck5hbWU6IiIsZ2V0TmV3U2VxdWVuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGd9LGNyZWF0ZUNoZWNrc3VtOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPSIiLGQ9WyJtYWtlIiwibW9kZWwiLCJ5ZWFyIiwibWFpbElEIl0sYz0wO2M8ZC5sZW5ndGg7YysrKXt2YXIgZj1kW2NdLGs9YVtmXSxtPXR5cGVvZiBrO2lmKCJzdHJpbmciPT1tfHwibnVtYmVyIj09bSliKz1mKyI6IitrKyI7In1kPSIwMDAwMDAwMCA3NzA3MzA5NiBFRTBFNjEyQyA5OTA5NTFCQSAwNzZEQzQxOSA3MDZBRjQ4RiBFOTYzQTUzNSA5RTY0OTVBMyAwRURCODgzMiA3OURDQjhBNCBFMEQ1RTkxRSA5N0QyRDk4OCAwOUI2NEMyQiA3RUIxN0NCRCBFN0I4MkQwNyA5MEJGMUQ5MSAxREI3MTA2NCA2QUIwMjBGMiBGM0I5NzE0OCA4NEJFNDFERSAxQURBRDQ3RCA2RERERTRFQiBGNEQ0QjU1MSA4M0QzODVDNyAxMzZDOTg1NiA2NDZCQThDMCBGRDYyRjk3QSA4QTY1QzlFQyAxNDAxNUM0RiA2MzA2NkNEOSBGQTBGM0Q2MyA4RDA4MERGNSAzQjZFMjBDOCA0QzY5MTA1RSBENTYwNDFFNCBBMjY3NzE3MiAzQzAzRTREMSA0QjA0RDQ0NyBEMjBEODVGRCBBNTBBQjU2QiAzNUI1QThGQSA0MkIyOTg2QyBEQkJCQzlENiBBQ0JDRjk0MCAzMkQ4NkNFMyA0NURGNUM3NSBEQ0Q2MERDRiBBQkQxM0Q1OSAyNkQ5MzBBQyA1MURFMDAzQSBDOEQ3NTE4MCBCRkQwNjExNiAyMUI0RjRCNSA1NkIzQzQyMyBDRkJBOTU5OSBCOEJEQTUwRiAyODAyQjg5RSA1RjA1ODgwOCBDNjBDRDlCMiBCMTBCRTkyNCAyRjZGN0M4NyA1ODY4NEMxMSBDMTYxMURBQiBCNjY2MkQzRCA3NkRDNDE5MCAwMURCNzEwNiA5OEQyMjBCQyBFRkQ1MTAyQSA3MUIxODU4OSAwNkI2QjUxRiA5RkJGRTRBNSBFOEI4RDQzMyA3ODA3QzlBMiAwRjAwRjkzNCA5NjA5QTg4RSBFMTBFOTgxOCA3RjZBMERCQiAwODZEM0QyRCA5MTY0NkM5NyBFNjYzNUMwMSA2QjZCNTFGNCAxQzZDNjE2MiA4NTY1MzBEOCBGMjYyMDA0RSA2QzA2OTVFRCAxQjAxQTU3QiA4MjA4RjRDMSBGNTBGQzQ1NyA2NUIwRDlDNiAxMkI3RTk1MCA4QkJFQjhFQSBGQ0I5ODg3QyA2MkREMURERiAxNURBMkQ0OSA4Q0QzN0NGMyBGQkQ0NEM2NSA0REIyNjE1OCAzQUI1NTFDRSBBM0JDMDA3NCBENEJCMzBFMiA0QURGQTU0MSAzREQ4OTVENyBBNEQxQzQ2RCBEM0Q2RjRGQiA0MzY5RTk2QSAzNDZFRDlGQyBBRDY3ODg0NiBEQTYwQjhEMCA0NDA0MkQ3MyAzMzAzMURFNSBBQTBBNEM1RiBERDBEN0NDOSA1MDA1NzEzQyAyNzAyNDFBQSBCRTBCMTAxMCBDOTBDMjA4NiA1NzY4QjUyNSAyMDZGODVCMyBCOTY2RDQwOSBDRTYxRTQ5RiA1RURFRjkwRSAyOUQ5Qzk5OCBCMEQwOTgyMiBDN0Q3QThCNCA1OUIzM0QxNyAyRUI0MEQ4MSBCN0JENUMzQiBDMEJBNkNBRCBFREI4ODMyMCA5QUJGQjNCNiAwM0I2RTIwQyA3NEIxRDI5QSBFQUQ1NDczOSA5REQyNzdBRiAwNERCMjYxNSA3M0RDMTY4MyBFMzYzMEIxMiA5NDY0M0I4NCAwRDZENkEzRSA3QTZBNUFBOCBFNDBFQ0YwQiA5MzA5RkY5RCAwQTAwQUUyNyA3RDA3OUVCMSBGMDBGOTM0NCA4NzA4QTNEMiAxRTAxRjI2OCA2OTA2QzJGRSBGNzYyNTc1RCA4MDY1NjdDQiAxOTZDMzY3MSA2RTZCMDZFNyBGRUQ0MUI3NiA4OUQzMkJFMCAxMERBN0E1QSA2N0RENEFDQyBGOUI5REY2RiA4RUJFRUZGOSAxN0I3QkU0MyA2MEIwOEVENSBENkQ2QTNFOCBBMUQxOTM3RSAzOEQ4QzJDNCA0RkRGRjI1MiBEMUJCNjdGMSBBNkJDNTc2NyAzRkI1MDZERCA0OEIyMzY0QiBEODBEMkJEQSBBRjBBMUI0QyAzNjAzNEFGNiA0MTA0N0E2MCBERjYwRUZDMyBBODY3REY1NSAzMTZFOEVFRiA0NjY5QkU3OSBDQjYxQjM4QyBCQzY2ODMxQSAyNTZGRDJBMCA1MjY4RTIzNiBDQzBDNzc5NSBCQjBCNDcwMyAyMjAyMTZCOSA1NTA1MjYyRiBDNUJBM0JCRSBCMkJEMEIyOCAyQkI0NUE5MiA1Q0IzNkEwNCBDMkQ3RkZBNyBCNUQwQ0YzMSAyQ0Q5OUU4QiA1QkRFQUUxRCA5QjY0QzJCMCBFQzYzRjIyNiA3NTZBQTM5QyAwMjZEOTMwQSA5QzA5MDZBOSBFQjBFMzYzRiA3MjA3Njc4NSAwNTAwNTcxMyA5NUJGNEE4MiBFMkI4N0ExNCA3QkIxMkJBRSAwQ0I2MUIzOCA5MkQyOEU5QiBFNUQ1QkUwRCA3Q0RDRUZCNyAwQkRCREYyMSA4NkQzRDJENCBGMUQ0RTI0MiA2OEREQjNGOCAxRkRBODM2RSA4MUJFMTZDRCBGNkI5MjY1QiA2RkIwNzdFMSAxOEI3NDc3NyA4ODA4NUFFNiBGRjBGNkE3MCA2NjA2M0JDQSAxMTAxMEI1QyA4RjY1OUVGRiBGODYyQUU2OSA2MTZCRkZEMyAxNjZDQ0Y0NSBBMDBBRTI3OCBENzBERDJFRSA0RTA0ODM1NCAzOTAzQjNDMiBBNzY3MjY2MSBEMDYwMTZGNyA0OTY5NDc0RCAzRTZFNzdEQiBBRUQxNkE0QSBEOUQ2NUFEQyA0MERGMEI2NiAzN0Q4M0JGMCBBOUJDQUU1MyBERUJCOUVDNSA0N0IyQ0Y3RiAzMEI1RkZFOSBCREJERjIxQyBDQUJBQzI4QSA1M0IzOTMzMCAyNEI0QTNBNiBCQUQwMzYwNSBDREQ3MDY5MyA1NERFNTcyOSAyM0Q5NjdCRiBCMzY2N0EyRSBDNDYxNEFCOCA1RDY4MUIwMiAyQTZGMkI5NCBCNDBCQkUzNyBDMzBDOEVBMSA1QTA1REYxQiAyRDAyRUY4RCIuc3BsaXQoIiAiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsCjE2KX0pO3ZhciBuPW5eLTE7Yz0wO2ZvcihmPWIubGVuZ3RoO2M8ZjtjKyspbj1uPj4+OF5kWyhuXmIuY2hhckNvZGVBdChjKSkmMjU1XTtyZXR1cm4obl4tMSk+Pj4wfSxzZXRNdWx0aURlYWxlckJvZHk6ZnVuY3Rpb24oYixkKXt2YXIgYz0kKCIjcG9zdExlYWRMYWJlbCIpLnZhbCgpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGM\/KGM9Yy5yZXBsYWNlKCJ7JE1VTFRJREVBTEVSTkFNRX0iLGIpLnJlcGxhY2UoInskUE9TVF9MRUFEX0VNQUlMU30iLGQpLGEuYm9keT1hLmJvZHkucmVwbGFjZSgieyRERUFMRVJfU0VORFRPfSIsYyksYS5kZWFsZXJOYW1lPWIpOmEuYm9keT1hLmJvZHkucmVwbGFjZSgvPGJyXHM\/XC8+e1wkREVBTEVSX1NFTkRUT30oYnJccz9cLyk\/LywiIikucmVwbGFjZSgieyRERUFMRVJfU0VORFRPfSIsIiIpfSxzaG93Q29uc2VudDpmdW5jdGlvbihiLGQpe2EuZ2V0RW1haWxDb25zZW50KGZ1bmN0aW9uKGMpe3ZhciBmPWEuZ2V0TmV3U2VxdWVuY2UoKSxrPWEuZ2V0TmV3U2VxdWVuY2UoKTsKZi5zZXRBY3Rpb24oZnVuY3Rpb24oKXt2YXIgbT10aGlzLG49JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLHQ9bi5maW5kKCJzZWxlY3QiKSxyPSQoIi5kZWFsZXItc2VsZWN0LXdyYXBwZXIiKSx2PTExMTI7YS5oYXNTZWxlY3RlZE11bHRpQWRkcmVzcz0hMTtpZigoJCgiI2N1c3RvbUZvcm1fc2VuZHRvIikubGVuZ3RoJiYiIiE9JCgiI2N1c3RvbUZvcm1fc2VuZHRvIikudmFsKCl8fCQoIiNjdXN0b21Gb3JtX3NlbmR0b0FERiIpLmxlbmd0aCYmIiIhPSQoIiNjdXN0b21Gb3JtX3NlbmR0b0FERiIpLnZhbCgpKSYmMDw9JCgiI1BBR0VJRCIpLnZhbCgpLmluZGV4T2YoImdlbmVyaWNfIil8fDA9PW4ubGVuZ3RofHwwIT09YS5kZWFsZXJOYW1lLmxlbmd0aHx8IkpvYk9mZmVyIj09YS5tYWlsSUQmJiIiIT0kKCIjdGV4dFNlbmRUb0VtYWlsRGVmYXVsdCIpLnZhbCgpKXJldHVybiBtLmdvdG9OZXh0KCk7dmFyIHE9JCgiI1BPU1RfTEVBRF9TRU5EX1RPX0RFQUxFUl9UWVBFX1NFTEVDVCIpLmxlbmd0aD8KJCgiI1BPU1RfTEVBRF9TRU5EX1RPX0RFQUxFUl9UWVBFX1NFTEVDVCIpLnZhbCgpOiJsb2NhdGlvbiI7aWYoMDwkKCIjdGFyZ2V0UGFnZSIpLmxlbmd0aCYmIkNBUkRFVEFJTFMiPT09JCgiI3RhcmdldFBhZ2UiKS52YWwoKSYmImxvY2F0aW9uIj09PXF8fCgiIiE9PWEuc3RvY2tOdW1iZXJ8fGEuY2FyaWR8fGEuZ2V0U3RvY2tOdW1iZXIoKSkmJiJsb2NhdGlvbiI9PT1xKXJldHVybiBtLmdvdG9OZXh0KCk7JCgiI211bHRpLWRlYWxlci1tYXAiKS5sZW5ndGgmJihHb29nbGVNYXBzV3JhcHBlci5zZXRHb29nbGVNYXAoKSxxPSQoIiNmb290ZXJHb29nbGVNYXBab29tIikudmFsKCkscT0xPHBhcnNlSW50KHEpJiYxOD49cGFyc2VJbnQocSk\/cGFyc2VJbnQocSk6OSxxPW5ldyBHb29nbGVNYXBzV3JhcHBlcih7ZWxlbWVudDoibXVsdGktZGVhbGVyLW1hcCIsYWRkcmVzc2VzOiJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzP2Zvb3Rlck1hcEFkZHJlc3NlczpbXSx6b29tOnEsCm9uQWZ0ZXJNYXJrZXJDcmVhdGVkOmZ1bmN0aW9uKGgsbCl7dmFyIHU9JChgLmRlYWxlci1zZWxlY3Qtd3JhcHBlciBidXR0b25bZGF0YS1kZWFsZXJpZD0iJHtoLmRlYWxlcklkfSJdYCk7dS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z29vZ2xlLm1hcHMuZXZlbnQudHJpZ2dlcihsLCJjbGljayIpfSk7bC5hZGRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiLmRlYWxlci1zZWxlY3Qtd3JhcHBlciBidXR0b24iKS5yZW1vdmVDbGFzcygiZm9jdXNlZCIpO3ZhciB3PSQoJyNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gc2VsZWN0W25hbWU9Im11bHRpX2RlYWxlcl9zZW5kVG8iXScpO3UubGVuZ3RoJiYodS5hZGRDbGFzcygiZm9jdXNlZCIpLHVbMF0uZm9jdXMoKSxtdWx0aURlYWxlclNlbGVjdC5zZXRTZWxlY3QodVswXSwhMSkpO2lmKHcubGVuZ3RoKXt2YXIgeD13LmZpbmQoYG9wdGlvbltkYXRhLWRlYWxlcmlkPSIke2guZGVhbGVySWR9Il1gKTt4Lmxlbmd0aCYmdy52YWwoeC52YWwoKSl9fSk7CiQoYCNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gb3B0aW9uW2RhdGEtZGVhbGVyaWQ9IiR7aC5kZWFsZXJJZH0iXWApLmRhdGEoIm1hcmtlciIsbCl9LG9uQWZ0ZXJJbml0OmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzZXMmJjAhPWZvb3Rlck1hcEFkZHJlc3Nlcy5sZW5ndGh8fCQoIiNtdWx0aS1kZWFsZXItbWFwIikuaGlkZSgpOyQoJyNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gc2VsZWN0W25hbWU9Im11bHRpX2RlYWxlcl9zZW5kVG8iXScpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGg9JCh0aGlzKS5maW5kKCI6c2VsZWN0ZWQiKTtoLmxlbmd0aCYmZ29vZ2xlLm1hcHMuZXZlbnQudHJpZ2dlcihoLmRhdGEoIm1hcmtlciIpLCJjbGljayIpfSl9fSksJCgiI211bHRpLWRlYWxlci1tYXAiKS5zaG93KCkscS5pbml0KCkpO3Qub2ZmKCJmb2N1cyIpLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXt0LnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX0pOwp2YXIgcD1mdW5jdGlvbihoKXt2YXIgbD1hLmdldERlcCgpO2lmKCJKb2JPZmZlciI9PWEubWFpbElEKXN3aXRjaCgkKCIjam9ib2ZmZXJfZGVwYXJ0bWVudCIpLnZhbCgpKXtjYXNlICJTYWxlc25ldyI6bD0iTkVXIjticmVhaztjYXNlICJTYWxlc3VzZWQiOmw9IlVTRUQiO2JyZWFrO2Nhc2UgIlNlcnZpY2UiOmw9IlNFUlZJQ0UiO2JyZWFrO2Nhc2UgIlBhcnRzIjpsPSJQQVJUUyI7YnJlYWs7ZGVmYXVsdDpsPSJORVcifXZhciB1PSIiLHc9IiI7c3dpdGNoKGwpe2Nhc2UgIlVTRUQiOnU9aC5kYXRhKCJlbWFpbHVzZWQiKTt3PWguZGF0YSgiZW1haWxhZGZ1c2VkIik7YnJlYWs7Y2FzZSAiU0VSVklDRSI6dT1oLmRhdGEoImVtYWlsc2VydmljZSIpO3c9aC5kYXRhKCJlbWFpbGFkZnNlcnZpY2UiKTticmVhaztjYXNlICJQQVJUUyI6dT1oLmRhdGEoImVtYWlscGFydHMiKXx8aC5kYXRhKCJlbWFpbHNlcnZpY2UiKTt3PWguZGF0YSgiZW1haWxhZGZwYXJ0cyIpfHxoLmRhdGEoImVtYWlsYWRmc2VydmljZSIpOwpicmVhaztjYXNlICJGSU5BTkNFIjp1PWguZGF0YSgiZW1haWxmaW5hbmNlIiksdz1oLmRhdGEoImVtYWlsYWRmZmluYW5jZSIpfWEuc2VuZFRvPXV8fGguZGF0YSgiZW1haWwiKXx8aC5kYXRhKCJlbWFpbHVzZWQiKTthLnNlbGVjdGVkU2VuZFRvPXV8fGguZGF0YSgiZW1haWwiKXx8aC5kYXRhKCJlbWFpbHVzZWQiKTthLnNlbmRUb0FERkZvcm1hdD13fHxoLmRhdGEoImVtYWlsYWRmIil8fGguZGF0YSgiZW1haWxhZGZ1c2VkIik7YS5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdD13fHxoLmRhdGEoImVtYWlsYWRmIil8fGguZGF0YSgiZW1haWxhZGZ1c2VkIik7YS5oYXNTZWxlY3RlZE11bHRpQWRkcmVzcz0hMDthLmRlYWxlcmlkPWguZGF0YSgiZGVhbGVyaWQiKTthLnNldE11bHRpRGVhbGVyQm9keShoLnRleHQoKS50cmltKCksYS5zZW5kVG8pfTskKCIjbXV0bGlBZGRyZXNzU3VibWl0Iikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZigiIj09PXQudmFsKCkpdC5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksCnIuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpO2Vsc2V7dmFyIGg9dC5maW5kKCI6c2VsZWN0ZWQiKTtwKGgpOyQoIi5yZXZlYWwtbW9kYWwtYmciKS5jc3MoInotaW5kZXgiLHYpO24udHJpZ2dlcigicmV2ZWFsOmNsb3NlIik7bS5nb3RvTmV4dCgpfX0pO2lmKCQoIi5tdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24tY2xvc2UiKS5sZW5ndGgpJCgiLm11bHRpLWFkZHJlc3Mtc3VibWlzc2lvbi1jbG9zZSIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7TGVhZHMmJk9iamVjdC5rZXlzKExlYWRzKS5mb3JFYWNoKGZ1bmN0aW9uKGgpeyJ1bmRlZmluZWQiIT09dHlwZW9mIExlYWRzW2hdLmxlYWRJZCYmTGVhZEhhbmRsZXIoKS5nZXRMZWFkKExlYWRzW2hdLmxlYWRJZCkuY2xvc2UoKX0pO3BvcHVwU3VwZXJ2aXNvciYmcG9wdXBTdXBlcnZpc29yLnBvcHVwcyYmcG9wdXBTdXBlcnZpc29yLnBvcHVwcy5mb3JFYWNoKGZ1bmN0aW9uKGgpe2gmJnR5cGVvZiBoLmlzQWN0aXZlKCkmJgpoLmNhbmNlbCgpfSk7JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiei1pbmRleCIsdik7bi50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pO2lmKCIiIT09YS5tYWtlJiZtdWx0aURlYWxlclNlbGVjdCYmKHE9bXVsdGlEZWFsZXJTZWxlY3QuZmlsdGVyKHQpLHEuYnlNYWtlKGEubWFrZSkscT1xLmhhc09ubHlPbmUoKSkpcmV0dXJuIHAocSksbS5nb3RvTmV4dCgpO3IubGVuZ3RoJiYocT1yLmZpbmQoImJ1dHRvbiIpLnRvQXJyYXkoKSxxLmxlbmd0aCYmKHE9ZnVuY3Rpb24oaCl7Zm9yKGxldCBsPWgubGVuZ3RoLTE7MDxsO2wtLSl7Y29uc3QgdT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGwrMSkpO1toW2xdLGhbdV1dPVtoW3VdLGhbbF1dfXJldHVybiBofShxKSxyLmZpbmQoImJ1dHRvbiIpLnJlbW92ZSgpLHIuYXBwZW5kKHEpKSk7bi5yZXZlYWwoe2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITEsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbDIiLApjbG9zZW9uZXNjYXBlOiExfSk7dj0kKCIucmV2ZWFsLW1vZGFsLWJnIikuY3NzKCJ6LWluZGV4Iik7JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiei1pbmRleCIscGFyc2VJbnQobi5jc3MoInotaW5kZXgiKSktMSl9KTtrLnNldEFjdGlvbihmdW5jdGlvbigpe3ZvaWQgMD09YiYmKGI9ITEpO3ZvaWQgMD09ZCYmKGQ9ITEpO3ZhciBtPSQoIiNhc1BvcFVwIiksbj0hMTsoYS5hc2tQdXJjaGFzZUludGVudHx8YS5zaG91bGREaXNwbGF5UHVyY2hhc2VJbnRlbnRDb250YWN0KCkpJiYwPCQoIiNhc1B1cmNoYXNlSW50ZW50IikubGVuZ3RoJiYobT0kKCIjYXNQdXJjaGFzZUludGVudCIpLG49ITApO2lmKDA8bS5sZW5ndGgpe2dldENvb2tpZSgidmlzaXRvcl9oYXNfZXhwbGljaXRfY29uc2VudCIpO3ZhciB0PXBhcnNlSW50KGdldENvb2tpZSgidmlzaXRvcl9oYXNfc2Vlbl9wb3B1cCIpLDEwKTtpc05hTih0KSYmKHQ9MCk7YS5za2lwU2VuZGluZz1iO2EuZnJvbU9uTG9hZD1kO2lmKGMuaGFzQ29uc2VudCl7c3dpdGNoKGEuc3VibWl0VHlwZSl7Y2FzZSAiaW5zdGFudFJlYmF0ZSI6Y2FzZSAic2NyYXRjaCI6cmVhbFN1Ym1pdFJlYmF0ZUNvdXBvbigpOwpicmVhaztkZWZhdWx0OiIiIT1hLnBvc3RTdWJtaXRDYWxsYmFjayYmZXZhbChhLnBvc3RTdWJtaXRDYWxsYmFjayl9YS5yZWFkeVRvU2VuZCgpfWVsc2V7c3dpdGNoKGEuc3VibWl0VHlwZSl7Y2FzZSAic2NyYXRjaCI6Y2FzZSAiaW5zdGFudFJlYmF0ZSI6Y2xvc2VQb3B1cFdpZGdldCgpfSJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQmVmb3JlU2hvd0NvbnNlbnQmJmEub25CZWZvcmVTaG93Q29uc2VudC5jYWxsKCk7aWYobilhLnNob3VsZERpc3BsYXlQdXJjaGFzZUludGVudENvbnRhY3QoKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKSwkKCIjZW1haWxDb25zZW50U3VibWl0Iikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciByPXt9O20uZmluZCgiZm9ybSIpLnNlcmlhbGl6ZUFycmF5KCkubWFwKHA9Pgp7cltwLm5hbWVdPXAudmFsdWV9KTskKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTywgLnN0ZXBDb25zZW50IikuY3NzKHtib3JkZXI6Im5vbmUifSk7JCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk9fVEVYVF9FUlJPUiIpLmhpZGUoKTtpZigxPT0kKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTyIpLmlzKCI6dmlzaWJsZSIpJiYoIXIuc2hhcmVfcGVyc29uYWx8fCJubyI9PXIuc2hhcmVfcGVyc29uYWwpKXJldHVybiAkKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTyIpLmNzcyh7Ym9yZGVyOiIxcHggc29saWQgcmVkIn0pLCQoIiNBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPX1RFWFRfRVJST1IiKS5zaG93KCksITE7aWYoIXIuaGFzT3duUHJvcGVydHkoImNvbnNlbnQiKSlyZXR1cm4gJCgiLnN0ZXBDb25zZW50IikuY3NzKHtib3JkZXI6IjFweCBzb2xpZCByZWQifSksITE7dmFyIHY9e3B1cmNoYXNlX2ludGVudDotMSxzaGFyZV9wZXJzb25hbDoibm8iLHByZWZlcnJlZF9jb250YWN0OiIifTsKZm9yKHZhciBxIGluIHYpdi5oYXNPd25Qcm9wZXJ0eShxKSYmKHIuaGFzT3duUHJvcGVydHkocSk\/c2V0Q29va2llKHEscltxXSk6cltxXT12W3FdKTthLnB1cmNoYXNlX2ludGVudD1yLnB1cmNoYXNlX2ludGVudDthLmFsbG93X3NoYXJlX3BlcnNvbmFsX2RhdGE9ci5zaGFyZV9wZXJzb25hbDthLnByZWZlcnJlZF9jb250YWN0PXIucHJlZmVycmVkX2NvbnRhY3Q7dj0iLTEiIT1yLmNvbnNlbnQ7cT1yLmhhc093blByb3BlcnR5KCJjb25zZW50X29lbSIpJiYiMSI9PXIuY29uc2VudF9vZW07YS5zdWJtaXRDb25zZW50KHYscSwiY29tcGxleCIpO3JldHVybiExfSk7ZWxzZSAkKCIjY29uc2VudFN1Ym1pdCIpLm9uKCJjbGljayIsZnVuY3Rpb24ocil7ci5wcmV2ZW50RGVmYXVsdCgpO3I9ITE7JCgiLmRlYWxlckNvbnNlbnQiKS5jc3Moe2JvcmRlcjoibm9uZSJ9KTskKCIub2VtQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiJub25lIn0pO3ZhciB2PXt9O20uZmluZCgiZm9ybSIpLnNlcmlhbGl6ZUFycmF5KCkubWFwKHA9Pgp7dltwLm5hbWVdPXAudmFsdWV9KTt2Lmhhc093blByb3BlcnR5KCJjb25zZW50Iil8fCgkKCIuZGVhbGVyQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiIxcHggc29saWQgcmVkIn0pLHI9ITApO20uZmluZCgiZm9ybSAub2VtQ29uc2VudCIpLmxlbmd0aCYmIXYuaGFzT3duUHJvcGVydHkoImNvbnNlbnRfb2VtIikmJiQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCkmJihtLmZpbmQoImZvcm0gLm9lbUNvbnNlbnQiKS5jc3Moe2JvcmRlcjoiMXB4IHNvbGlkIHJlZCJ9KSxyPSEwKTtpZihyKXJldHVybiExO3I9Ii0xIiE9di5jb25zZW50O3ZhciBxPXYuaGFzT3duUHJvcGVydHkoImNvbnNlbnRfb2VtIikmJiIxIj09di5jb25zZW50X29lbTthLnN1Ym1pdENvbnNlbnQocixxKX0pO2EucHJlU2VuZEltcGxpY2l0KCk7bS5yZXZlYWwoe2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITEsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbCIsCmNsb3Nlb25lc2NhcGU6ITF9KX19ZWxzZSIiPT1hLmNvbnNlbnREZXRhaWxzRU4mJnZvaWQgMCE9YS5kZXRhaWxzRGVmYXVsdHMuRU5HTElTSCYmdm9pZCAwIT1hLmRldGFpbHNEZWZhdWx0cy5GUkVOQ0gmJihhLmNvbnNlbnREZXRhaWxzRU49YS5kZXRhaWxzRGVmYXVsdHMuRU5HTElTSFsyXSxhLmNvbnNlbnREZXRhaWxzRlI9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIWzJdKSxiP3JlYWxTaG93UG9wdXBXaWRnZXQoZCk6YS5yZWFkeVRvU2VuZCgpfSk7Zi5zZXROZXh0KGspLmV4ZXV0ZSgpfSl9LGhpZGVDb25zZW50OmZ1bmN0aW9uKCl7dmFyIGI9JCgiI2FzUG9wVXA6dmlzaWJsZSIpOyQoIiNhc1B1cmNoYXNlSW50ZW50IikuaXMoIjp2aXNpYmxlIikmJiJoaWRkZW4iIT09JCgiI2FzUHVyY2hhc2VJbnRlbnQiKS5jc3MoInZpc2liaWxpdHkiKSYmKGI9JCgiI2FzUHVyY2hhc2VJbnRlbnQ6dmlzaWJsZSIpLGNvbXBsZXg9ITApOzA8Yi5sZW5ndGgmJmIudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9LApzYXZlQ29uc2VudDpmdW5jdGlvbihiLGQsYyxmKXskKCJib2R5IikuY3NzKCJvdmVyZmxvdyIsImF1dG8iKTthLmhpZGVDb25zZW50KCk7dm9pZCAwPT1jJiYoYz0iIik7dmFyIGs9Yj83MzA6MTgwO2Q9e2VtYWlsOmEudXNlckVtYWlsLGZpcnN0OmEudXNlckZpcnN0TmFtZSxsYXN0OmEudXNlckxhc3ROYW1lLHBob25lOmEudXNlclBob25lLHNpdGVJRDokKCIjc2l0ZUlEIikudmFsKCksZnJlcXVlbmN5OmI\/MTotMSxleHBsaWNpdDpiPzE6MCxleHBsaWNpdE9FTTpkPzE6MCxpbWc6YyxyZWZlcmVyOnZvaWQgMCE9ZG9jdW1lbnQucmVmZXJyZXI\/ZG9jdW1lbnQucmVmZXJyZXI6IiIsZnJvbToiRUgifTtpZih2b2lkIDAhPT1hLnByZWZlcnJlZF9jb250YWN0JiYiIiE9PWEucHJlZmVycmVkX2NvbnRhY3R8fHZvaWQgMCE9PWdldENvb2tpZSgicHJlZmVycmVkX2NvbnRhY3QiKSYmIiIhPT1nZXRDb29raWUoInByZWZlcnJlZF9jb250YWN0IikpYz1hLnByZWZlcnJlZF9jb250YWN0fHwKZ2V0Q29va2llKCJwcmVmZXJyZWRfY29udGFjdCIpLGM9eyJUw6lsw6lwaG9uZSI6IlBIT05FIixDb3VycmllbDoiRU1BSUwifVtjXXx8YyxudWxsIT09YyYmKGQuY29udGFjdFByZWZlcmVuY2U9Yy50b1VwcGVyQ2FzZSgpKTtzZXRDb29raWUoInZpc2l0b3JfZnJlcXVlbmN5X3ByZWZlcmVuY2UiLC0xLGspO3NldENvb2tpZSgidmlzaXRvcl9jb25zZW50X3ByZWZlcmVuY2UiLGI\/IkV4cGxpY2l0IjoiSW1wbGljaXQiLGspO3NldENvb2tpZSgidmlzaXRvcl9oYXNfZXhwbGljaXRfY29uc2VudCIsYj8ieWVzIjoibm8iLGspO3NldENvb2tpZSgidmlzaXRvcl9lbWFpbF9wcmVmZXJlbmNlIixkLmVtYWlsLDkwKTskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5zaG93KCk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi51aS1sb2FkZXItYmFja2dyb3VuZCIpLmhpZGUoKX0sNUUzKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiL2FqYXgvdHJhY2tFbWFpbFByZWZlcmVuY2U\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6ZCxjb21wbGV0ZTpmdW5jdGlvbihtKXt0cnl7dmFyIG49SlNPTi5wYXJzZShtLnJlc3BvbnNlVGV4dCk7YS5jb25zZW50RGV0YWlsc0VOPWJ0b2Eobi5kZXRhaWxDb25zZW50LkVOR0xJU0gpO2EuY29uc2VudERldGFpbHNGUj1idG9hKG4uZGV0YWlsQ29uc2VudC5GUkVOQ0gpfWNhdGNoKHQpe31hLnBvc3RTYXZlQ29uc2VudChiLGYpfX0pfSxwb3N0U2F2ZUNvbnNlbnQ6ZnVuY3Rpb24oYixkKXt2b2lkIDAhPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0gmJnZvaWQgMCE9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIJiYoYj8oYS5jb25zZW50RGV0YWlsc0VOPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0hbMV0sYS5jb25zZW50RGV0YWlsc0ZSPWEuZGV0YWlsc0RlZmF1bHRzLkZSRU5DSFsxXSk6KGEuY29uc2VudERldGFpbHNFTj1hLmRldGFpbHNEZWZhdWx0cy5FTkdMSVNIWzJdLGEuY29uc2VudERldGFpbHNGUj1hLmRldGFpbHNEZWZhdWx0cy5GUkVOQ0hbMl0pKTsKaWYoZCl7aWYoYS5pZ25vcmVDYXB0Y2hhP2EucmVhZHlUb1NlbmQoKTooYS5yZWNhcHRjaGEucmVzZXRUb2tlbigpLGEucmVjYXB0Y2hhLmdldFJlc3BvbnNlKCkuZG9uZShmdW5jdGlvbihjKXthLmdyZWNhcHRjaGFSZXNwb25zZVRva2VuPWM7YS5yZWFkeVRvU2VuZCgpfSkpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQWZ0ZXJDb25zZW50KWEub25BZnRlckNvbnNlbnQoYil9ZWxzZSBhLmhpZGVDb25zZW50KCl9LHN1Ym1pdENvbnNlbnQ6ZnVuY3Rpb24oYixkLGMpe2EuY29uc2VudERlYWxlcj1iO2EuY29uc2VudE9FTT1kO2lmKGMmJiJjb21wbGV4Ij09Yyl7dmFyIGY9IiI7LTE9PWEucHVyY2hhc2VfaW50ZW50PyhjPSJQYXMgZGUgcmVwb25zZSIsZj0iTk9fQU5TV0VSIik6Yz1hLnB1cmNoYXNlX2ludGVudDtudWxsIT1jLm1hdGNoKC8zMC8pPyhjPSJNb2lucyBkZSAzMCBqb3VycyIsZj0iTFRfMzBfREFZUyIpOm51bGwhPWMubWF0Y2goLzMvKT8oYz0iTW9pbnMgZGUgMyBtb2lzIiwKZj0iTFRfM19NT05USFMiKTpudWxsIT1jLm1hdGNoKC82LykmJihudWxsIT1jLm1hdGNoKC9wbHVzfG92ZXJ8bW9yZS8pPyhjPSJQbHVzIGRlIDYgbW9pcyIsZj0iR1RfNl9NT05USFMiKTooYz0iTW9pbnMgZGUgNiBtb2lzIixmPSJMVF82X01PTlRIUyIpKTt2YXIgaz0iUmVwb25zZSAtICIrYS5wdXJjaGFzZV9pbnRlbnRfc2VjdGlvbi50b1VwcGVyQ2FzZSgpO2EubG9nRXZlbnQoIkludGVudGlvbnMgYWNoYXQ6ICIrYywiUFVSQ0hBU0VfSU5URU5UXyIrZik7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKFsiYi5fdHJhY2tFdmVudCIsIkludGVudGlvbnMgYWNoYXQiLGssYywxXSl9c3dpdGNoKGEuc3VibWl0VHlwZSl7Y2FzZSAic2NyYXRjaCI6Y2FzZSAiaW5zdGFudFJlYmF0ZSI6cmVhbFN1Ym1pdFJlYmF0ZUNvdXBvbigpO2JyZWFrO2RlZmF1bHQ6IiIhPWEucG9zdFN1Ym1pdENhbGxiYWNrJiZldmFsKGEucG9zdFN1Ym1pdENhbGxiYWNrKX0ic2NyYXRjaCI9PWEuc3VibWl0VHlwZSYmCnNob3dQb3B1cFdpZGdldCgpOyQoIiNsYXN0Q29uc2VudFBvcCIpLnZhbChiPyJFeHBsaWNpdCI6IkltcGxpY2l0Iik7YS5zYXZlQ29uc2VudChiLGQsIiIsITApfSxwcmVTZW5kQ2hlY2tzOmZ1bmN0aW9uKGIpe2I\/YS5yZWFkeVRvU2VuZCgpOmEuc2hvd0NvbnNlbnQoKX0sc2VuZE1haWw6ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe2Euc3VibWl0VHlwZT0ibm9ybWFsIjtiPSJ1bmRlZmluZWQiIT10eXBlb2YgYj9iOiExO2EuaWdub3JlQ2FwdGNoYXx8KGEucmVjYXB0Y2hhLmxvYWQoKSwidW5kZWZpbmVkIiE9PWdyZWNhcHRjaGEmJi0xPGEucmVjYXB0Y2hhLndpZGdldElkJiYoeWllbGQgYS5yZWNhcHRjaGEuZ2V0UmVzcG9uc2UoKSkpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI29uTGVhZFN1Ym1pdEdlb2xvYyIpLnZhbCgpfHwxIT0kKCIjb25MZWFkU3VibWl0R2VvbG9jIikudmFsKCl8fAoidW5kZWZpbmVkIj09dHlwZW9mIGdlb0xvY2F0b3J8fGEuc2tpcEdlb0xvYylhLnByZVNlbmRDaGVja3MoYik7ZWxzZXt2YXIgZD1uZXcgZ2VvTG9jYXRvcihmdW5jdGlvbihjKXthLmdlb2xvY19zdGF0dXM9Yy5nZW9sb2Nfc3RhdHVzOzE9PWMucmVzdWx0JiYoYS5nZW9sb2NfbGF0PWMubGF0aXR1ZGUsYS5nZW9sb2NfbG9uZz1jLmxvbmdpdHVkZSxhLmdlb2xvY19hY2N1cmFjeT1jLmFjY3VyYWN5LGEuZ2VvbG9jX3RyYWNrX3N0cj1jLmdlb2NvZGVfYWRkcmVzcyxhLmdlb2xvY19lbWFpbF9zdHI9Yy5nZW9jb2RlX2FkZHJlc3Nfc3RyLC0xPT1hLmJvZHkuaW5kZXhPZigiIyNHRU9MT0NBVElPTiMjIikmJihhLmJvZHk9dHJpbShhLmJvZHkpLnJlcGxhY2UoLzxicj4mbmJzcDsvZywiPGJyPiIpKyIjI0dFT0xPQ0FUSU9OIyMiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQmJgphY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJQT1NUQUxfQ09ERSIsYy5nZW9jb2RlX2FkZHJlc3Nfc3RyKSk7InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjbGVhZFNlbnQiKS52YWwoKSYmKGM9JCgiPGlucHV0PiIpLmF0dHIoe2lkOiJsZWFkU2VudCIsdHlwZToiaGlkZGVuIn0pLnZhbCgxKSwkKCIjZm9vdGVyRGl2IikuYXBwZW5kKGMpLGEucHJlU2VuZENoZWNrcyhiKSl9KTtkLnRyYWNrTG9jYXRpb25HQT0hMDtkLmdldExvY2F0aW9uKCl9fSl9LHNlbmRVc2VyRW1haWw6ZnVuY3Rpb24oYixkKXtzZW5kVG9EYXRhPXt9O3ZhciBjPWI9IiIsZj0iIixrPSIiO2ZvcihpIGluIGQpaWYoInN0cmluZyI9PXR5cGVvZiBpKXN3aXRjaChpLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImVtYWlsdG8iOmM9ZFtpXTticmVhaztjYXNlICJlbWFpbGlkIjpiPWRbaV07YnJlYWs7Y2FzZSAiZGVhbGVyZW1haWwiOmY9ZFtpXTticmVhaztjYXNlICJkZWFsZXJwaG9uZSI6az1kW2ldO2JyZWFrOwpkZWZhdWx0OnNlbmRUb0RhdGFbaV09ZFtpXX1kPXt2YXJzOkpTT04uc3RyaW5naWZ5KHNlbmRUb0RhdGEpLHNpdGVpZDokKCIjdG9wc2l0ZWlkIikudmFsKCksbGFuZ3VhZ2U6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLGVtYWlsaWQ6YixlbWFpbHRvOmMsZGVhbGVyRW1haWw6ZixkZWFsZXJQaG9uZTprLHNvdXJjZVVSSTp3aW5kb3cubG9jYXRpb24uaHJlZn07JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9hamF4L2FkZE1haWxUb1NlbmQ\/d3N3aWR0aD0wIixkYXRhOmR9KX0sZ2V0U3RvY2tOdW1iZXI6ZnVuY3Rpb24oKXtpZihhLnN0b2NrTnVtYmVyKXJldHVybiBhLnN0b2NrTnVtYmVyO2lmKDA8JCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLmxlbmd0aCYmMDwkKCIjdGFyZ2V0UGFnZSIpLmxlbmd0aCYmWyJORVdDQVJERVRBSUxTIiwiQ0FSREVUQUlMUyIsIlBST01PIiwiVkVISUNMRUVWQUwiXS5pbmNsdWRlcygkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpKSl7dmFyIGI9CiQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTtpZigyPGIubGVuZ3RoKXt2YXIgZD1iLmluZGV4T2YoIihTdG9jayIpOy0xPGQmJihiPWIuc3Vic3RyKGQrNyksZD1iLmluZGV4T2YoIikiKSwtMTxkJiYoYj1iLnN1YnN0cigwLGQpLnRyaW0oKSkpO2IrPSIifWVsc2UgYj0iIn1lbHNlIGI9Z2V0UGFyYW1ldGVyQnlOYW1lKCJzdG9ja25vIil8fCIiO3JldHVybiBiLnRyaW0oKX0sZ2V0VlBEVXJsRnJvbVN0b2NrOmZ1bmN0aW9uKCl7dmFyIGI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTokKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsKIiAiKyQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTt0cnl7dmFyIGQ9YS5nZXRTdG9ja051bWJlcigpLGM9IiIsZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8idXNlZCI6Im9jY2FzaW9uIixrPWUoImhyZWYiKSxtPWUoInByb3RvY29sIiksbj1rLnJlcGxhY2UobSsiLy8iLCIiKS5zcGxpdCgiLyIpLHQ9blswXSxyPWsuaW5kZXhPZigiLWlkIik7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgcGFnZXx8IkJVSUxEQU5EUFJJQ0UiIT1wYWdlJiYiTkVXQ0FSREVUQUlMUyIhPXBhZ2UpaWYoLTE8cil7dmFyIHY9cGFyc2VJbnQoay5zdWJzdHIociszKS5yZXBsYWNlKCIuaHRtbCIsIiIpLDEwKTtpZighaXNOYU4odikmJjA8dil7dmFyIHE9bltuLmxlbmd0aC0xXTstMTxxLmluZGV4T2YodikmJihjPSc8YSBocmVmPSInK20rIi8vIit0KyIvIitmKyIvIitxKyJcIiB0YXJnZXQ9J19ibGFuayc+IitiKyI8L2E+Iil9fWVsc2UiIiE9PWEudHJpbSYmCihiPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIithLnRyaW06JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrYS50cmltKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSk7ZWxzZSIiIT09YS50cmltJiYoYj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrYS50cmltOiQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiK2EudHJpbSsiICIrJCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkpLApjPSc8YSBocmVmPSInK2srIlwiIHRhcmdldD0nX2JsYW5rJz4iK2IrIjwvYT4iO2lmKCIiPT1jJiYyPGQubGVuZ3RoKXt2YXIgcD0kKCIjdG9wc2l0ZWlkIikudmFsKCksaD0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iZW4iOiJmciI7JC5hamF4KHt0eXBlOiJHRVQiLGFzeW5jOiExLGRhdGFUeXBlOiJqc29uIix1cmw6Ii8iK2grIi9waHAvZ2V0VVJMRnJvbVN0b2NrLnBocD9zaXRlSUQ9IitwKyImc3RvY2s9IitkLHN1Y2Nlc3M6ZnVuY3Rpb24obCl7Im9iamVjdCI9PXR5cGVvZiBsJiZudWxsIT1sJiZ2b2lkIDAhPWwubWFrZSYmKGM9JzxhIGhyZWY9IicrbSsiLy8iK3QrIi8iK2YrIi8iKyhsLm1ha2UrIi0iK2wubW9kZWwrIi0iK2wueWVhcisiLWlkIitsLmlkKyIuaHRtbFwiIHRhcmdldD0nX2JsYW5rJz4iKStsLmZ1bGwrIjwvYT4iKX19KX0iIiE9YyYmKGI9Yyl9Y2F0Y2gobCl7Y29uc29sZS5sb2cobCl9cmV0dXJuIGJ9LHNldFNlbmRBbmREZXBhcnRtZW50T3ZlcnJpZGU6ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCh2LApxKXswPHYubGVuZ3RoJiYiIiE9PXYudmFsKCkmJihiLnNlbmRUbz12LnZhbCgpKTswPHEubGVuZ3RoJiYiIiE9PXEudmFsKCkmJihiLnNlbmRUb0FERkZvcm1hdD1xLnZhbCgpKX1pZigwIT0kKCIjaXNHZW5lcmljU2VhcmNoUGFnZSIpLmxlbmd0aCYmInRydWUiPT09JCgiI2lzR2VuZXJpY1NlYXJjaFBhZ2UiKS52YWwoKSl7c3dpdGNoKGEubWFpbElEKXtjYXNlICJtZW51U2VydmljZSI6Y2FzZSAibWVudUNvbnRhY3RVcyI6Y2FzZSAiaGVhZGVyU2VydmljZSI6cmV0dXJufXZhciBjPSQoIiNDVVNUT01fU0VORF9MRUFEIik7aWYoMCE9PWMubGVuZ3RoJiYwIT09Yy52YWwoKSYmIm51bGwiIT09Yy52YWwoKSl7Yi5kZXBhcnRtZW50PWMudmFsKCkudG9VcHBlckNhc2UoKTt2YXIgZj0kKCIjbmV3RW1haWwiKSxrPSQoIiNuZXdBZGZFbWFpbCIpLG09JCgiI3RleHRTZW5kVG9FbWFpbCIpLG49JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLHQ9JCgiI2ZpbmFuY2VFbWFpbCIpLHI9JCgiI2ZpbmFuY2VBZGZFbWFpbCIpOwpzd2l0Y2goYy52YWwoKSl7Y2FzZSAibmV3IjpkKGYsayk7YnJlYWs7Y2FzZSAidXNlZCI6ZChtLG4pO2JyZWFrO2Nhc2UgImZpbmFuY2UiOmQodCxyKX19fX0sZ2V0SnNvbk9iamVjdDpmdW5jdGlvbigpe2EucmVjYXB0Y2hhLnNldFJlc3BvbnNlKCk7IiI9PWEudHJpbSYmJCgiI3BvcHVwdHJpbSIpLmxlbmd0aCYmInskUE9QVVBUUklNfSIhPSQoIiNwb3B1cHRyaW0iKS52YWwoKSYmKGEudHJpbT0kKCIjcG9wdXB0cmltIikudmFsKCkpO3ZhciBiPXt9LGQ9ZnVuY3Rpb24oeil7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoKG51bGwhPUNvb2tpZXMuZ2V0KHopJiYidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMuZ2V0KHopP2VzY2FwZShDb29raWVzLmdldCh6KSk6IiIpKyIiLnJlcGxhY2UoL1wrL2csIiUyMCIpKX1jYXRjaChDKXtyZXR1cm4obnVsbCE9Q29va2llcy5nZXQoeikmJiJ1bmRlZmluZWQiIT10eXBlb2YgQ29va2llcy5nZXQoeik\/ZXNjYXBlKENvb2tpZXMuZ2V0KHopKToKIiIpKyIiLnJlcGxhY2UoL1wrL2csIiUyMCIpfX0sYz1kKCJyZWxhbmNlSUQiKSxmPWQoInV0bV9zb3VyY2UiKSxrPWQoInV0bV9jYW1wYWlnbiIpLG09YS5kZWNvZGVVUkxSZWN1cnNpdmVseShkKCJ1dG1fa2V5d29yZCIpKSxuPWQoInV0bV9sYW5kaW5nX2Zvb3RlciIpLHQ9ZCgidXRtX3NvdXJjZV9yZXRhcmdldGluZyIpLHI9ZCgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIiksdj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iS2V5d29yZCI6Ik1vdC1jbCYjMjMzOyIscT0wPG0ubGVuZ3RoPyJbICIrdisiOiAiK20rIl0iOiIiLHA9MDxuLmxlbmd0aD8iW0Rlc3RpbmF0aW9uOiAiK2QyY21lZGlhLmdldEh0dHBUZXh0KCkrIjovLyIrd2luZG93LmxvY2F0aW9uLmhvc3QrbisiXSI6IltEZXN0aW5hdGlvbjogIitkMmNtZWRpYS5nZXRIdHRwVGV4dCgpKyI6Ly8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K24rIiAuXSI7dj1kKCJsb2NfaW50ZXJlc3QiKTtkPQpkKCJsb2NfcGh5c2ljYWwiKTt2YXIgaD12P2Bsb2NfaW50ZXJlc3Q9JHt2fWA6IiIsbD1kP2Bsb2NfcGh5c2ljYWw9JHtkfWA6IiIsdT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iT3JnYW5pYyI6Ik9yZ2FuaXF1ZSI7cT0wPGYubGVuZ3RoP2Ake2Z9IC0gJHtrfSAke3F9ICR7aH0gJHtsfWA6dTtwPWQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKHEpKyIgIitwO2w9IiI7aD1hLmdldFN0b2NrTnVtYmVyKCk7IiIhPWgmJihsPSIoU3RvY2s6IithLmdldFN0b2NrTnVtYmVyKCkrIikiKTt1PXtuZXc6IkVOR0xJU0giPT1zaXRlUGFnZS5sYW5nPyJuZXciOiJuZXVmIixuZXdpbnY6IkVOR0xJU0giPT1zaXRlUGFnZS5sYW5nPyJuZXciOiJuZXVmIix1c2VkOiJFTkdMSVNIIj09c2l0ZVBhZ2UubGFuZz8idXNlZCI6ImQnb2NjYXNpb24ifTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFVUTURFVEFJTFN9L2cscCk7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRVU0VSTkFNRX0vZywKYS51c2VyRmlyc3ROYW1lKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFVTRVJQT1NUQUx9L2csYS51c2VyUG9zdGFsLnRvVXBwZXJDYXNlKCkpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkVVRNREVUQUlMU30vZywiIik7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRGT09URVJ9L2csIiIpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkRU1BSUxCVUlMREFORFBSSUNFfS9nLGEuYmFuZHBMaW5rKCkpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkU1RPQ0tOVU1CRVJMQUJFTH0vZyxsKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSfS9nLGwpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkVkVISUNMRV9DT05ESVRJT059L2csdVthLmNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpXSk7aWYoIiIhPT1hLmJvZHkpe3ZhciB3PSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCkmJiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykubGVuZ3RoPwokKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiO2w9IiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykudmFsKCk6JCgiI2hpZGRlbkRlYWxlck5hbWUiKS52YWwoKTt3PXchPWwmJiIiIT13P3c6bDthLmRlYWxlck5hbWU9YS5kZWFsZXJOYW1lP2EuZGVhbGVyTmFtZTp3fWEuYm9keT1hLmJvZHkucmVwbGFjZSgieyRERUFMRVJOQU1FfSIsYS5kZWFsZXJOYW1lKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoInskQ1VTVE9NVkVISUNMRUlOVEVSRVNUfSIsYS5tYWtlKyIgIithLm1vZGVsKyIgIithLnllYXIpO2EubGVhZFJlcXVlc3RUeXBlJiYoYS5ib2R5PWEuYm9keS5yZXBsYWNlQWxsKCJ7JFJFUVVFU1R9IixhLmxlYWRSZXF1ZXN0VHlwZSksYS5zdWJqZWN0PWEuc3ViamVjdC5yZXBsYWNlQWxsKCJ7JFJFUVVFU1R9IiwKYS5sZWFkUmVxdWVzdFR5cGUpLGEubGVhZFJlcXVlc3RUeXBlPSIiKTtib2R5TG93ZXI9YS5ib2R5LnRvTG93ZXJDYXNlKCk7Zm9yKHU9MDstMTxib2R5TG93ZXIuaW5kZXhPZigicmVtb3ZlZW1wdHkiKTspe2w9Ym9keUxvd2VyLmluZGV4T2YoInJlbW92ZWVtcHR5Iik7aWYoLTE9PWwpYnJlYWs7cnBsRW5kPWJvZHlMb3dlci5pbmRleE9mKCI8YnI+IixsKTtycGxTdGFydD1ib2R5TG93ZXIubGFzdEluZGV4T2YoIjxicj4iLGwpO2lmKC0xPT1ycGxFbmR8fC0xPT1ycGxTdGFydClicmVhaztycGxTdHJpbmc9YS5ib2R5LnN1YnN0cmluZyhycGxTdGFydCxycGxFbmQpO2EuYm9keT1hLmJvZHkucmVwbGFjZShycGxTdHJpbmcsIiIpO2JvZHlMb3dlcj1hLmJvZHkudG9Mb3dlckNhc2UoKTt1Kys7aWYoNTA8dSlicmVha311PWEuZ2V0VlBEVXJsRnJvbVN0b2NrKCk7MD09dS50cmltKCkubGVuZ3RoJiYobD0kKCdpbnB1dFtuYW1lPSJzZWFyY2hlZHZlaGljbGUiXScpLmZpbHRlcigiOnZpc2libGU6Zmlyc3QiKSwKdT1sLmxlbmd0aD9sLnZhbCgpOiIiKTthLnBheW1lbnRWZWhpY2xlJiYwPGEucGF5bWVudFZlaGljbGUubGVuZ3RoJiYodT1hLnBheW1lbnRWZWhpY2xlKTsiIj09YS5jYXJpZCYmJCgiI3RvcGNhcmlkIikubGVuZ3RoJiYoYS5jYXJpZD0kKCIjdG9wY2FyaWQiKS52YWwoKSk7IiI9PWEudmluJiYkKCIjcGhvbmV2aW4iKS5sZW5ndGgmJihhLnZpbj0kKCIjcGhvbmV2aW4iKS52YWwoKSk7bD1hLmJvZHkuaW5kZXhPZigiPHNwYW4gaWQ9J3BoU0VBUkNIVkVISUNMRSc+Iik7aWYoLTE8bCl7dmFyIHg9YS5ib2R5LnN1YnN0cihsKzI3KS5pbmRleE9mKCI8L3NwYW4+Iik7LTE8eCYmKGEuYm9keT1hLmJvZHkuc3Vic3RyKDAsbCkrdSthLmJvZHkuc3Vic3RyKGwreCsyNys3KSl9YS5ib2R5PWEuYm9keS5yZXBsYWNlKC88c3BhbiBpZD0ncGhTRUFSQ0hWRUhJQ0xFJz4vZywiIik7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC88XC9zcGFuPi9nLCIiKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFNFQVJDSEVEVkVISUNMRX0vZywKdSk7aWYoIjEiPT0kKCIjaGFzVkJEQ0VuYWJsZWQiKS52YWwoKSl7bD0iIjt1PTA7eD0iIjtDb29raWVzLmdldCgiRDJDVVVJRCIpO2Zvcih2YXIgeSBpbiBzZXNzaW9uU3RvcmFnZSlpZigwPT15LmluZGV4T2YoIlZEUE1WQk5QLSIpKXt2YXIgQj1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHkpO0I+PXgmJih4PUIsbD15LnJlcGxhY2UoIlZEUE1WQk5QLSIsIiIpKX1pZigiIj09bCYmKHg9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZDJjX1ZEUE1WIiksbnVsbCE9eCkpZm9yKHkgaW4geD1KU09OLnBhcnNlKHgpLHgpQj14W3ldLDI8PUImJkI+dSYmKHU9QixsPXkpOyIiIT1sJiYtMT09YS5ib2R5LmluZGV4T2YoIltWQkRDLUhPVF0iKSYmLTE9PWEuYm9keS5pbmRleE9mKCJbVkJEQy1NWVNdIikmJih5PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K2wsYS5ib2R5Kz0nW1ZCREMtSE9UXSA8YSBocmVmPSInK3krJyI+Jyt5KyI8L2E+Iil9eT0kKCIjY3VycmVudFN0YXR1cyIpLnZhbCgpOwp5PSJ1bmRlZmluZWQiPT10eXBlb2YgeT8idXNlZCI6eS50b0xvd2VyQ2FzZSgpO2w9JCgiI3NlbmRFbWFpbFRvQWxsRGVhbGVycyIpO2w9bC5sZW5ndGgmJjE9PWwudmFsKCk7bD0kKCIjaGFzTXVsdGlwbGVEZWFsZXJzIik7bD1sLmxlbmd0aCYmMT09bC52YWwoKTtsPSQoIiN0b3BjYXJpZCIpO2w9MDxsLmxlbmd0aD8kKCIjdG9wY2FyaWQiKS52YWwoKToiIjtsPSJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2JyYW5kRW1haWxBZGZPdmVycmlkZSIpLnZhbCgpPyQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKToiIjt1PSJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2JyYW5kRW1haWxBZGZPdmVycmlkZSIpLnZhbCgpPyQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKToiIjsidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKSYmJCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLnZhbCgpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI25ld1NlY3Rpb25FbWFpbCIpLnZhbCgpJiYKJCgiI25ld1NlY3Rpb25FbWFpbCIpLnZhbCgpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI25ld1NlY3Rpb25BZGZFbWFpbCIpLnZhbCgpJiYkKCIjbmV3U2VjdGlvbkFkZkVtYWlsIikudmFsKCk7c3dpdGNoKCEwKXtjYXNlIDU8bC5sZW5ndGgmJiJuZXciPT15JiYhYS5oYXNTZWxlY3RlZE11bHRpQWRkcmVzczphLnNlbmRUbz1sLGEuc2VuZFRvQURGRm9ybWF0PTU8dS5sZW5ndGg\/dTpsfWIubGFuZ3VhZ2U9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhbkFuZEVuY29kZVRleHQ\/KGIuc3ViamVjdD1jbGVhbkFuZEVuY29kZVRleHQoYS5zdWJqZWN0KSxiLmJvZHk9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuYm9keSkpOihiLnN1YmplY3Q9JC5iYXNlNjQuZW5jb2RlKGEuc3ViamVjdCksYi5ib2R5PSQuYmFzZTY0LmVuY29kZShhLmJvZHkpKTtjbGVhbkVtYWlsRGVsaW1pdGVyPWZ1bmN0aW9uKHope3ZhciBDPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgeiYmCm51bGwhPXomJnoubGVuZ3RoJiYoQz16LnNwbGl0KCI7Iikuam9pbigiLCIpKTtyZXR1cm4gQ307InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiJORVciPT1hLmdldERlcCgpJiZhLnNlbmRUbz09JCgiI1NJVEVVU0VERU1BSUwiKS52YWwoKSYmYS5zZW5kVG9BREZGb3JtYXQ9PSQoIiNTSVRFVVNFREVNQUlMQURGIikudmFsKCkmJihhLnNlbmRUbz0kKCIjU0lURU5FV0VNQUlMIikudmFsKCksYS5zZW5kVG9BREZGb3JtYXQ9JCgiI1NJVEVORVdFTUFJTEFERiIpLnZhbCgpKTtiLnNlbmRUbz1hLnNlbmRUbztiLnNlbmRUb0FERkZvcm1hdD1jbGVhbkVtYWlsRGVsaW1pdGVyKGEuc2VuZFRvQURGRm9ybWF0KTtiLnNlbGVjdGVkU2VuZFRvPWEuc2VsZWN0ZWRTZW5kVG87Yi5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdD1hLnNlbGVjdGVkU2VuZFRvQURGRm9ybWF0O2IuZW1haWxMaXN0U3VmZml4PSIiOyQoIiNzaXRlY29tcGlsZWlkIikubGVuZ3RoJiYoYi5lbWFpbExpc3RTdWZmaXg9CiQoIiNzaXRlY29tcGlsZWlkIikudmFsKCkpO2IubGVhZEludm9rZXI9YS5sZWFkSW52b2tlcnx8ImdlbmVyaWMiO2IuZGlnaXRhbFJldGFpbFNJRD1hLmRpZ2l0YWxSZXRhaWxTSUR8fCIiO2IuY29uc2VudERlYWxlcj1hLmNvbnNlbnREZWFsZXI7Yi5jb25zZW50T0VNPWEuY29uc2VudE9FTTtiLnVzZXJFbWFpbD1hLnVzZXJFbWFpbDtiLnRyYWRlaW49YS50cmFkZWluO2IucG9wdXBkaXY9YS5wb3B1cGRpdjtiLnVzZXJBdHRhY2htZW50UGF0aD1hLnVzZXJBdHRhY2htZW50UGF0aDtiLnVzZXJGaXJzdE5hbWU9YS51c2VyRmlyc3ROYW1lO2IudXNlckxhc3ROYW1lPWEudXNlckxhc3ROYW1lO2IubGljZW5zZW51bT1hLmxpY2Vuc2VudW07Yi51c2VyUGhvbmU9YS51c2VyUGhvbmU7Yi5waG9uZVZhbGlkYXRpb25BdHRlbXB0cz1hLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzO2IucGhvbmVNYW5kYXRvcnk9YS5waG9uZU1hbmRhdG9yeTtiLnVzZXJQb3N0YWw9YS51c2VyUG9zdGFsLnRvVXBwZXJDYXNlKCl8fAphLmNvbnRhY3RaaXAudG9VcHBlckNhc2UoKTtiLnVzZXJBZGRyZXNzPWEudXNlckFkZHJlc3N8fGEuY29udGFjdEFkZHJlc3M7Yi5wcm92aW5jZT1hLmNvbnRhY3RQcm92aW5jZTtiLmJpcnRoZGF0ZT1hLmJpcnRoZGF0ZTtiLnNlbmRGcm9tPWEuc2VuZEZyb207Yi5tYWlsSUQ9YS5tYWlsSUQ7Yi5pc0NUQT1hLmlzQ1RBO2IuYnV0dG9uVGV4dD1hLmJ1dHRvblRleHQ7Yi5mcm9tVVJMPXdpbmRvdy5sb2NhdGlvbi5ocmVmO2IubWFrZT1hLm1ha2V8fCIiO2IubW9kZWw9YS5tb2RlbHx8IiI7Yi50cmltPWEudHJpbXx8IiI7Yi52aW49YS52aW58fCIiO2IucHJpY2U9YS5wcmljZXx8IiI7Yi55ZWFyPWEueWVhcnx8IiI7Yi52ZWhpY2xlVHlwZT1hLnZlaGljbGVUeXBlfHwiIjtiLnN0b2NrTnVtYmVyPWg7Yi5jYXJpZD1hLmNhcmlkfHwiIjtiLmNvbmRpdGlvbj1hLmNvbmRpdGlvbjtiLmlzbW9iaWxlc2l0ZT1hLmlzbW9iaWxlc2l0ZTtiLmlzQW1wPSJOTyI7Yi5yZWZlcmVyPSQoIiN0b3ByZWZlcmVyIikudmFsKCk7CmIuc2l0ZWlkPSQoIiN0b3BzaXRlaWQiKS52YWwoKTtiLmRlYWxlcmlkPWEuZGVhbGVyaWR8fCIiO2Iub2VtQ2VydGlmaWNhdGlvbj0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHxudWxsO2IudXRtX3NvdXJjZT1mO2IucmVsYW5jZUlEPWM7Yi51dG1fY2FtcGFpZ249aztiLnV0bV9rZXl3b3JkPW07Yi51dG1fbGFuZGluZz1uO2IudXRtX2RldGFpbHM9cTtiLnV0bV9zb3VyY2VfcmV0YXJnZXRpbmc9dDtiLnV0bV9jYW1wYWlnbl9yZXRhcmdldGluZz1yO2IubG9jX2ludGVyZXN0PXY7Yi5sb2NfcGh5c2ljYWw9ZDtiLnBvcHVwT2ZmZXJUeXBlPWEucG9wdXBPZmZlclR5cGU7Yi5mcm9tRmFjZWJvb2s9YS5mcm9tRmFjZWJvb2s7Yi5kZXRhaWxzRlI9YS5jb25zZW50RGV0YWlsc0ZSO2IuZGV0YWlsc0VOPWEuY29uc2VudERldGFpbHNFTjtiLmZyb21BQT1hLmZyb21BQTtiLm93bmVySUQ9YS5vd25lcklEO2IubGVhZFRpdGxlVUlUZXh0PWEubGVhZFRpdGxlVUlUZXh0O2Iuc21zPQphLnNtcztiLm9uQWZ0ZXJMZWFkQ3JlYXRlZD1hLm9uQWZ0ZXJMZWFkQ3JlYXRlZDtiLnRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRD1hLnRyYWRlaW5iYXJSZWdpc3RlclBhcnRpYWxJRHx8IiI7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKCIiIT1hLnVzZXJGaXJzdE5hbWUmJmNsaWVudFN0b3JhZ2Uuc2V0KCJmaXJzdG5hbWUiLGEudXNlckZpcnN0TmFtZSksIiIhPWEudXNlckxhc3ROYW1lJiZjbGllbnRTdG9yYWdlLnNldCgibGFzdG5hbWUiLGEudXNlckxhc3ROYW1lKSwiIiE9YS51c2VyRW1haWwmJmNsaWVudFN0b3JhZ2Uuc2V0KCJlbWFpbCIsYS51c2VyRW1haWwpLCIiIT1hLnVzZXJQaG9uZSYmY2xpZW50U3RvcmFnZS5zZXQoInBob25lIixhLnVzZXJQaG9uZSkpO2IuY2hhdGJvdEJvb3N0SWQ9Z2V0Q29va2llRDJjKCJkMmNjaGF0Ym90aWQiKTtiLnN0eWxlaWQ9JCgiI3N0eWxlSWRJblVzZSIpLmxlbmd0aD8kKCIjc3R5bGVJZEluVXNlIikudmFsKCk6CiQoIiNhY3RpdmVTdHlsZUlEIikubGVuZ3RoPyQoIiNhY3RpdmVTdHlsZUlEIikudmFsKCk6IiI7InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmFkcF9mb3VyZXllc19pZCYmd2luZG93LmFkcF9mb3VyZXllc19pZD8oYi5Vbml0ZVdlYnNpdGVDdXN0b21lcklkPXdpbmRvdy5hZHBfZm91cmV5ZXNfaWQsY29uc29sZS5sb2coIkQyVUQgLSBlbWFpbEhhbmRsZXIgSlMgcGFzc2VkIix3aW5kb3cuYWRwX2ZvdXJleWVzX2lkKSk6Y29uc29sZS5sb2coIkQyVUQgLSBlbWFpbEhhbmRsZXIgSlMgLSB3aW5kb3cuYWRwX2ZvdXJleWVzX2lkIGlmIHdhcyB0cmlnZ2VyZWQiLHdpbmRvdy5hZHBfZm91cmV5ZXNfaWQpO2Eub25BZnRlckxlYWRDcmVhdGVkJiYoYi5vbkFmdGVyTGVhZENyZWF0ZWQuZnJvbT0iIixhLnNlbmRUbz1hLnNlbmRUb3x8IiIsYz1hLnNlbmRUby5zcGxpdCgiOyIpLGNbMF0udHJpbSgpLmxlbmd0aD9iLm9uQWZ0ZXJMZWFkQ3JlYXRlZC5mcm9tPWNbMF0udHJpbSgpOihjPQphLnNlbmRUb0FERkZvcm1hdC5zcGxpdCgiLCIpLGNbMF0udHJpbSgpLmxlbmd0aCYmKGIub25BZnRlckxlYWRDcmVhdGVkLmZyb209Y1swXS50cmltKCkpKSk7Yi51c2VyQWdlbnQ9JCgiI3R4dFVzZXJBZ2VudCIpLnZhbCgpO2IuZ3JlY2FwdGNoYVJlc3BvbnNlVG9rZW49YS5ncmVjYXB0Y2hhUmVzcG9uc2VUb2tlbjtiLmNvbnRhY3RJRD1hLmNvbnRhY3RJRDtiLmNvbnRhY3ROQVM9YS5jb250YWN0TkFTO2IuY29udGFjdEJpcnRoPWEuY29udGFjdEJpcnRoO2IuZGVhbGVyTmFtZT1hLmRlYWxlck5hbWU\/YS5kZWFsZXJOYW1lOnc7Yi5hbGxvd19zaGFyZV9wZXJzb25hbF9kYXRhPWEuYWxsb3dfc2hhcmVfcGVyc29uYWxfZGF0YTtiLnByZWZlcnJlZF9jb250YWN0PWEucHJlZmVycmVkX2NvbnRhY3Q7Yi51dG1kZXRhaWxzVG9SZXBsYWNlPXA7IiIhPWEuZ2VvbG9jX3N0YXR1cyYmKGIuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY19zdGF0dXMsYi5nZW9sb2NfbGF0PWEuZ2VvbG9jX2xhdCwKYi5nZW9sb2NfbG9uZz1hLmdlb2xvY19sb25nLGIuZ2VvbG9jX2FjY3VyYWN5PWEuZ2VvbG9jX2FjY3VyYWN5LCJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhbkFuZEVuY29kZVRleHQ\/KGIuZ2VvbG9jX3RyYWNrX3N0cj1jbGVhbkFuZEVuY29kZVRleHQoYS5nZW9sb2NfdHJhY2tfc3RyKSxiLmdlb2xvY19lbWFpbF9zdHI9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuZ2VvbG9jX2VtYWlsX3N0cikpOihiLmdlb2xvY190cmFja19zdHI9JC5iYXNlNjQuZW5jb2RlKGEuZ2VvbG9jX3RyYWNrX3N0ciksYi5nZW9sb2NfZW1haWxfc3RyPSQuYmFzZTY0LmVuY29kZShhLmdlb2xvY19lbWFpbF9zdHIpKSk7IiIhPWEuY2FyMl9tYWtlJiYoYi5jYXIyX21ha2U9YS5jYXIyX21ha2UsYi5jYXIyX21vZGVsPWEuY2FyMl9tb2RlbCxiLmNhcjJfdHJpbT1hLmNhcjJfdHJpbSxiLmNhcjJfeWVhcj1hLmNhcjJfeWVhcixiLmNhcjJfY29sb3I9YS5jYXIyX2NvbG9yLGIuY2FyMl9vZG9tZXRlcj1hLmNhcjJfb2RvbWV0ZXIsCmIuY2FyMl92aW49YS5jYXIyX3ZpbixiLmNhcjJfdHJhbnNtaXNzb249YS5jYXIyX3RyYW5zbWlzc29uLGIuY2FyMl9kcml2ZXRyYWluPWEuY2FyMl9kcml2ZXRyYWluLGIuY2FyMl9mdWVsdHlwZT1hLmNhcjJfZnVlbHR5cGUpO2Iuc2VydmljZURhdGUxPWEuc2VydmljZURhdGUxfHwiIjtiLnNlcnZpY2VEYXRlMj1hLnNlcnZpY2VEYXRlMnx8IiI7Yi53YWl0aW5nT25TaXRlPWEud2FpdGluZ09uU2l0ZXx8IiI7Yi5jb21tZW50cz1hLmNvbW1lbnRzO2Euc2tpcEdldERlcD9iLmRlcGFydG1lbnQ9YS5kZXBhcnRtZW50OihiLmRlcGFydG1lbnQ9YS5nZXREZXAoKSxhLmRlcGFydG1lbnQ9YS5nZXREZXAoKSk7aWYoIlVTRUQiPT1iLmRlcGFydG1lbnQmJjA9PWEuZGVwYXJ0bWVudEJ5U3RvY2spe3ZhciBBPSQoJ2lucHV0W25hbWU9InNlYXJjaGVkdmVoaWNsZSJdJykuZmlsdGVyKCI6dmlzaWJsZTpmaXJzdCIpLnZhbCgpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQSYmKEE9QS5zcGxpdCgiKFN0b2NrIiksCkFbMV0pKXt2YXIgRT0iVVNFRCI7QT1BWzFdLnJlcGxhY2UoIikiLCIiKS5yZXBsYWNlKCI6IiwiIikucmVwbGFjZSgiIyIsIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOyQuYWpheCh7dHlwZToiR0VUIixhc3luYzohMSxkYXRhVHlwZToianNvbiIsdXJsOiIvanMvanNvbi91c2VkQnlQcmljZUFzYy5qc29uIixzdWNjZXNzOmZ1bmN0aW9uKHopeyQuZWFjaCh6LGZ1bmN0aW9uKEMsRCl7aWYoRC5zbi50b0xvd2VyQ2FzZSgpPT1BKXJldHVybiBFPSIxIj09RC5pc25ld3x8IjEiPT1ELmlzZGVtbz8iTkVXIjoiVVNFRCIsITF9KTthLmRlcGFydG1lbnRCeVN0b2NrPUV9fSl9fSIiIT09YS5kZXBhcnRtZW50QnlTdG9jayYmITEhPT1hLmRlcGFydG1lbnRCeVN0b2NrJiYoYi5kZXBhcnRtZW50PWEuZGVwYXJ0bWVudEJ5U3RvY2spOyFiLmRlcGFydG1lbnR8fCJuZXciPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSYmInVzZWQiPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKT9iLmNvbmRpdGlvbj0KYi5kZXBhcnRtZW50JiYibmV3Ij09Yi5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCk\/Ik5ldyI6IlVzZWQiOmIuY29uZGl0aW9uPSQoIiNjdXJyZW50U3RhdHVzIikubGVuZ3RoPyQoIiNjdXJyZW50U3RhdHVzIikudmFsKCk6InVua25vd24iO2IuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpIT1iLmNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpJiYoYi5jb25kaXRpb249Yi5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCkpO251bGwhPWEuY3JlZGl0RGF0YSYmKGIuY3JlZGl0RGF0YT1hLmNyZWRpdERhdGEpO251bGwhPWEuZGVhbGVyQXBwb2ludG1lbnREYXRhJiYoYi5kZWFsZXJBcHBvaW50bWVudERhdGE9YS5kZWFsZXJBcHBvaW50bWVudERhdGEpOzA8JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS5sZW5ndGgmJihiLnB1cmNoYXNlX2ludGVudD1hLnB1cmNoYXNlX2ludGVudCxiLnB1cmNoYXNlX2ludGVudF9hbnN3ZXI9JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS52YWwoKSxiLnB1cmNoYXNlX2ludGVudF9ub19hbnN3ZXI9CiQoIiNwdXJjaGFzZV9pbnRlbnRfbm9fYW5zd2VyIikudmFsKCkpO2IucHVyY2hhc2VfaW50ZW50PWEuYXNrUHVyY2hhc2VJbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ6LTE6ITE7JCgiI2N1cnJlbnRJdGVtVHlwZSIpLmxlbmd0aD9iLml0ZW1UeXBlPSQoIiNjdXJyZW50SXRlbVR5cGUiKS52YWwoKTpiLml0ZW1UeXBlPSIiO2EuYm9keSs9Ilx4M2MhLS0gSlMgVW5pcXVlIGlkOiIrTWF0aC5yb3VuZCg1RTMqTWF0aC5yYW5kb20oKSkrIi0tXHgzZSI7cmV0dXJuIGJ9LGdldERlcDpmdW5jdGlvbigpe3ZhciBiPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSxkPS9cYihuZXd8bmV1ZnxuZXVmc3xjb25maWd1cmF0aW9uLWV0LXByaXh8YnVpbGQtYW5kLXByaWNlfGRlbW9zfGRlbW9uc3RyYXRldXJzfGNsZWFyYW5jZSlcYi8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLGM9L1xiKHVzZWR8b2NjYXNpb24pXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTsKaWYoInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBweiYmInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UmJiJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UuZ2V0Q3VycmVudEZpbHRlclN0YXRlKXt2YXIgZj13aW5kb3cuZ1VzZWRTcnBBcHB6LmZpbHRlckludGVyZmFjZS5nZXRDdXJyZW50RmlsdGVyU3RhdGUoImNhdGVnb3J5Iik7aWYoITEhPT1mJiZmLmxlbmd0aClpZigxPT09Zi5sZW5ndGgmJjM9PT1mWzBdLnZhbHVlKWQ9ITAsYz0hMTtlbHNle3ZhciBrLG09MCxuPTA7Zm9yKGs9MDtrIT09Zi5sZW5ndGg7aysrKWZba10ubnVtPm0mJihtPWZba10ubnVtLG49ZltrXS52YWx1ZSk7MT09PW58fDI9PT1uPyhkPSExLGM9ITApOjM9PT1uJiYoZD0hMCxjPSExKX19Zj0wO2s9JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5maWx0ZXIoIjpyZWFsbHlWaXNpYmxlOmZpcnN0Iik7CjA8ay5sZW5ndGgmJihrPWsudmFsKCkubWF0Y2goLzE5WzAtOV17Mn18MjBbMC05XXsyfS9nKSxudWxsIT1rJiYoZj1wYXJzZUludChrWzBdKSkpO2Z8fChmPWEueWVhcik7c3dpdGNoKGEubWFpbElEKXtjYXNlICJUaXJlc1JlcXVlc3QiOmNhc2UgIlBhcnRzUmVxdWVzdCI6cmV0dXJuIlBBUlRTIjtjYXNlICJTZXJ2aWNlUmVxdWVzdCI6Y2FzZSAiUmVjYWxscyI6Y2FzZSAiQm9keVNob3AiOmNhc2UgIm1lbnVTZXJ2aWNlIjpjYXNlICJoZWFkZXJTZXJ2aWNlIjpjYXNlICJFc3RoZXRpY1JlcXVlc3QiOnJldHVybiJTRVJWSUNFIjtjYXNlICJDcmVkaXRSZXF1ZXN0IjpjYXNlICJDcmVkaXRSZXF1ZXN0TW9iaWxlIjpjYXNlICJEZWFsZXJUcmFjayI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiOmNhc2UgIkNyZWRpdFNjb3JlIjpjYXNlICJDcmVkaXRBcHBDYXJkIjpyZXR1cm4iRklOQU5DRSI7CmNhc2UgIkpvYk9mZmVyIjpyZXR1cm4iSFIiO2Nhc2UgIm1lbnVDb250YWN0VXMiOmlmKCIiIT09YS5kZXBhcnRtZW50KXJldHVybiBhLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBtYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50JiYiIiE9PW1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQpcmV0dXJuIG1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKX1pZigwPGYpe2lmKGMmJmY+PWIrMSlyZXR1cm4iTkVXIjtpZighZCYmIWMpe2lmKGY+PWItMSlyZXR1cm4iTkVXIjtpZihmPGItMSlyZXR1cm4iVVNFRCJ9fXJldHVybiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKT8kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTpjPyJVU0VEIjpkPyJORVciOiIiIT09YS5kZXBhcnRtZW50P2EuZGVwYXJ0bWVudDoidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNwb3B1cERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCkubGVuZ3RoPwokKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCk6InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZGVmYXVsdERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKS5sZW5ndGg\/JCgiI2RlZmF1bHREZXBhcnRtZW50IikudmFsKCk6IlVTRUQifSxyZWFkeVRvU2VuZDpmdW5jdGlvbigpe3ZhciBiPWEuY3JlYXRlQ2hlY2tzdW0oKTtpZihhLmxhc3RDaGVja3N1bT09YikiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkR1cGxpY2F0ZVNlbmQ\/YS5vbkR1cGxpY2F0ZVNlbmQuY2FsbCgpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiQ1JDIE1hdGNoIixhLmxhc3RDaGVja3N1bSxiKTtlbHNle2EubGFzdENoZWNrc3VtPWI7JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGgmJiIiIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGgmJgokKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS52YWwoKSYmKGI9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iQ29uY2Vzc2lvbiBv77+9IGVzdCBzaXR177+9IGxlIHbvv71oaWN1bGU6ICI6IkRlYWxlciB3aGVyZSB0aGUgdmVoaWNsZSBpcyBsb2NhdGVkOiAiLGIrPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCksYS5ib2R5PWEuYm9keS5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IixiKSk7MDwkKCIjaXNtb2JpbGUiKS5sZW5ndGgmJihhLmlzbW9iaWxlc2l0ZT0iWUVTIik7aWYoMD09YS5zdWJqZWN0Lmxlbmd0aHx8MD09YS5ib2R5Lmxlbmd0aClyZXR1cm4hMTthLmluamVjdEN0YUNvbXBsZXRlZERhdGEoKTtqc29uT2JqZWN0PWEuZ2V0SnNvbk9iamVjdCgpO2EuaWdub3JlQ2FwdGNoYXx8YS5yZWNhcHRjaGEucmVzZXRUb2tlbigpOwpiPW51bGw7Yj1KU09OLnN0cmluZ2lmeShqc29uT2JqZWN0KTt2YXIgZD1hLnBvcHVwT2ZmZXJUeXBlO2I9e2pzb246Yn07aWYoYS5wYXJ0aWFsKWIucGFydGlhbD0hMDtlbHNleyJ1bmRlZmluZWQiIT10eXBlb2YgZ3RhZyYmd2luZG93LmQyY19hd2NJZCYmd2luZG93LmQyY19hd2NMYWJlbCYmKCJsaXZlIj09ZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT9ndGFnKCJldmVudCIsImNvbnZlcnNpb24iLHtzZW5kX3RvOmQyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsfSk6Y29uc29sZS5sb2coImd0YWcoJ2V2ZW50JywnY29udmVyc2lvbicsIHsgJ3NlbmRfdG8nOiAiK2QyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsKyIgfSk7IikpO3ZhciBjPXttYWlsSUQ6YS5tYWlsSUQsbWFrZTphLm1ha2UsbW9kZWw6YS5tb2RlbCx5ZWFyOmEueWVhcix2aW46YS52aW4sY29uZGl0aW9uOmEuY29uZGl0aW9uLGRlcGFydG1lbnQ6YS5kZXBhcnRtZW50LHRyYWRlaW46YS50cmFkZWluLHBvcHVwT2ZmZXJUeXBlOmEucG9wdXBPZmZlclR5cGUsCmJvZHlUeXBlOmEudmVoaWNsZVR5cGUsc2FsZXNEZXB0OmEuc2FsZXNEZXB0LHBvcHVwRGl2OmEucG9wdXBkaXYsaXNDVEE6YS5pc0NUQSxidXR0b25UZXh0OmEuYnV0dG9uVGV4dH07alF1ZXJ5KCJib2R5IikudHJpZ2dlcigiZW1haWxIYW5kbGVyLnN1Ym1pdCIsYyl9JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCl9LDVFMyk7JCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoanNvbk9iamVjdC5kZXBhcnRtZW50KTskKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKGEuc3ViamVjdC5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTsiIiE9YS5sZWFkVGl0bGVUZXh0JiYoJCgnaW5wdXRbbmFtZT0ibGVhZFR5cGUiXScpLnZhbChhLmxlYWRUaXRsZVRleHQucmVwbGFjZSgvW1xuXHJdL2csIiAiKSksYS5sZWFkVGl0bGVUZXh0PSIiKTskKCdpbnB1dFtuYW1lPSJwYWdlSUQiXScpLnZhbCgkKCIjUEFHRUlEIikudmFsKCkpOwokKCdpbnB1dFtuYW1lPSJjdXJyZW50VVJMIl0nKS52YWwod2luZG93LmxvY2F0aW9uLmhyZWYpOyQoJ2lucHV0W25hbWU9ImlzRnVsbFdpZHRoIl0nKS52YWwoJCgiI2lzRnVsbFdpZHRoUGFnZU5ld1ZEUCIpLnZhbCgpKTskKCdpbnB1dFtuYW1lPSJkZWFsZXJOYW1lIl0nKS52YWwoJCgiI25ld1ZEUERlYWxlck5hbWUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iYnV0dG9uUG9zaXRpb24iXScpLnZhbCgkKCIjbmV3VkRQQnV0dG9uUG9zaXRpb24iKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNNb2JpbGVOZXdWRFAiXScpLnZhbCgkKCIjaXNtb2JpbGUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNDb25maXJtUG9wdXAiXScpLnZhbCgwKTsiY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiPT1hLnBvcHVwZGl2JiYkKCdpbnB1dFtuYW1lPSJpc0NvbmZpcm1Qb3B1cCJdJykudmFsKDEpOyQoJ2lucHV0W25hbWU9ImNvbmZpcm1fZW1haWwiXScpLnZhbChhLnVzZXJFbWFpbCk7CiQoJ2lucHV0W25hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSJdJykudmFsKGEudXNlckZpcnN0TmFtZSk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9sYXN0X25hbWUiXScpLnZhbChhLnVzZXJMYXN0TmFtZSk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiXScpLnZhbChhLnVzZXJQaG9uZSk7Zm9ybUZpbGwuc2F2ZSh7ZW1haWw6YS51c2VyRW1haWwsZmlyc3ROYW1lOmEudXNlckZpcnN0TmFtZSxsYXN0TmFtZTphLnVzZXJMYXN0TmFtZSxwaG9uZTphLnVzZXJQaG9uZSxwb3N0YWw6YS51c2VyUG9zdGFsfSk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9tYWlsL3NlbmRNYWlsRXgucGhwIixkYXRhOmIsYmVmb3JlU2VuZDpmdW5jdGlvbihmKXtmJiZmLm92ZXJyaWRlTWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSgiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04Iik7dHJ5e2xldCBrPSQoIm1ldGFbbmFtZT0nY3NyZi1kb21haW4tY2hlY2snXSIpO2subGVuZ3RoJiYKZi5zZXRSZXF1ZXN0SGVhZGVyKCJjc3JmLWRvbWFpbi1jaGVjayIsay5hdHRyKCJjb250ZW50IikpfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoZil9fSxzdWNjZXNzOmZ1bmN0aW9uKGYpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWQiLGEubWFpbElELGQpO2EucGFydGlhbD0hMTthLmxhc3RDaGVja3N1bT0hMTt2YXIgaz0iIjtrPSJzdHJpbmciPT10eXBlb2YgZj9KU09OLnBhcnNlKGYpOmY7YS5fX2xhc3RSZXR1cm49aztpZigib2JqZWN0Ij09dHlwZW9mIGt8fCJ1bmRlZmluZWQiIT10eXBlb2Ygay5sZWFkaWQpYS5fX2xlYWRpZD1rLmxlYWRpZDsiZnVuY3Rpb24iIT10eXBlb2YgYS5jYWxsYmFjayYmKGEuY2FsbGJhY2s9ZnVuY3Rpb24oKXt9KTtqUXVlcnkoImJvZHkiKS50cmlnZ2VyKCJlbWFpbEhhbmRsZXIuZW1haWxTZW50Iix7bWFpbElEOmEubWFpbElELG1ha2U6YS5tYWtlLG1vZGVsOmEubW9kZWwseWVhcjphLnllYXIsdmluOmEudmluLGNvbmRpdGlvbjphLmNvbmRpdGlvbiwKZGVwYXJ0bWVudDphLmRlcGFydG1lbnQsdHJhZGVpbjphLnRyYWRlaW4sc3VjY2VzczoiU1VDQ0VTUyI9PT1rLnN0YXR1cyxkZXRhaWw6e2NvbmZpcm1fZmlyc3RfbmFtZTphLnVzZXJGaXJzdE5hbWUsY29uZmlybV9sYXN0X25hbWU6YS51c2VyTGFzdE5hbWUsY29uZmlybV9lbWFpbDphLnVzZXJFbWFpbCxjb25maXJtX3Bob25lX251bWJlcjphLnVzZXJQaG9uZSx5ZWFyOmEueWVhcixtYWtlOmEubWFrZSxtb2RlbDphLm1vZGVsLGlkOmsubGVhZGlkLHZpbjphLnZpbixjb25kaXRpb246YS5jb25kaXRpb24sdmVyc2lvbjphLnZlcnNpb258fCIiLE5JVjphLnZpbix0cmltOmEudHJpbSxsZWFkVHlwZTphLmxlYWRUeXBlfHwiIixtYWlsSWQ6YS5tYWlsSUR9fSk7IlNVQ0NFU1MiPT1rLnN0YXR1cz8oYS5jYWxsYmFjayghMCksYS5tYWluUHJvbW8mJihmPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6Ik1haW5Qcm9tb0J0biJ9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChmKSkpOgphLmNhbGxiYWNrKCExKTthLmNhbGxiYWNrPW51bGx9LGZhaWx1cmU6ZnVuY3Rpb24oZil7YS5sb2dGb3JtUmVxdWVzdCgiRm9ybVN1Ym1pdHRlZEVtYWlsTm90U2VudCIsYS5tYWlsSUQsZCk7YWxlcnQoc2F2ZUhhbmRsZXIuZmFpbE1lc3NhZ2UrIlxuIitmKX0sc3RhdHVzQ29kZTp7NDA0OmZ1bmN0aW9uKCl7YWxlcnQoInBhZ2Ugbm90IGZvdW5kIil9fX0pO2EucG9wdXBPZmZlclR5cGU9IiJ9fSxpbmplY3RDdGFDb21wbGV0ZWREYXRhOmZ1bmN0aW9uKCl7bGV0IGI9IiIsZD0iIjt2YXIgYz0iIixmPWdldENvb2tpZUQyYygiYmFuZHBfY29uZmlnIiksaz0idW5kZWZpbmVkIiE9PXR5cGVvZiBmJiZudWxsIT09Zj9KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChmKSk6SlNPTi5wYXJzZSgie30iKTtmPShtLG4pPT57bj1ufHwhMTtsZXQgdD1tLm9wdGlvbnMucmVkdWNlKCh3LHgpPT53K2Ake3h9PGJyPmAsIiIpLHI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/CiJWZWhpY2xlIGRldGFpbHMiOiJWw6loaWN1bGUgY29uZmlndXLDqSIsdj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iRmluYW5jaW5nIGRldGFpbHMiOiJEw6l0YWlscyBkdSBmaW5hbmNlbWVudCIscSxwLGg7bj1uPyIiOmAKCQkJCQkJPHU+JHt2fTo8L3U+PGJyPgoJCQkJCQkke251bGw9PW0\/dm9pZCAwOm51bGw9PShxPW0ucGF5bWVudCk\/dm9pZCAwOnEudG90YWx9PGJyPgoJCQkJCQkke251bGw9PW0\/dm9pZCAwOm51bGw9PShwPW0ucGF5bWVudCk\/dm9pZCAwOnAucmF0ZX08YnI+CgkJCQkJCSR7bnVsbD09bT92b2lkIDA6bnVsbD09KGg9bS5wYXltZW50KT92b2lkIDA6aC5hbW91bnR9PGJyPjxicj4KCQkJCQlgO2xldCBsLHU7cmV0dXJuYAoJCQkJCTx1PiR7cn06PC91Pjxicj4KCQkJCQkke251bGw9PW0\/dm9pZCAwOm0ubW9kZWx9PGJyPgoJCQkJCUV4dDogJHsobnVsbD09bT92b2lkIDA6bnVsbD09KGw9bS5jb2xvcnMpP3ZvaWQgMDpsLmV4dCl8fCIifSwgSW50OiAkeyhudWxsPT1tP3ZvaWQgMDpudWxsPT0odT1tLmNvbG9ycyk\/dm9pZCAwOnUuaW50KXx8IiJ9PGJyPgoJCQkJCSR7KG51bGw9PW0\/dm9pZCAwOm0uZHJpdmVUcmFpbil8fCIifTxicj4KCQkJCQkke3R9PGJyPgoJCQkJCSR7bn0KCQkJCWB9O2suYmFuZHAmJihiPWYoay5iYW5kcCkucmVwbGFjZSgvKFx0fFxuKSovZywiIikpO2lmKENvb2tpZXMuZ2V0KCJjdGFfZGF0YV92YWxpZCIpKXtjPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgicmV0YWlsX3RyYWNrX2RhdGEiKXx8Int9Iik7az0hIWMucGF5bWVudDtjLmJhbmRwJiYoYy5iYW5kcC5vcHRpb25zPWMuYmFuZHAub3B0aW9uc3x8W10sYj1mKGMuYmFuZHAsaykpO2lmKGspe2xldCBtLG4sdDtkPWAKCQkJCQkJPHU+JHsiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iVmVoaWNsZSBkZXRhaWxzIjoiRMOpdGFpbHMgZHUgZmluYW5jZW1lbnQifTo8L3U+PGJyPgoJCQkJCQkke251bGw9PWM\/dm9pZCAwOm51bGw9PShtPWMucGF5bWVudCk\/dm9pZCAwOm0ubGlzdFByaWNlfTxicj4KCQkJCQkJJHtudWxsPT1jP3ZvaWQgMDpudWxsPT0obj1jLnBheW1lbnQpP3ZvaWQgMDpuLnJhdGV9PGJyPgoJCQkJCQkke251bGw9PWM\/dm9pZCAwOm51bGw9PSh0PWMucGF5bWVudCk\/dm9pZCAwOnQucGF5bWVudH08YnI+CgkJCQkJYH1jPSJcblx0XHRcdFx0XHQ8YnI+XG5cdFx0XHRcdFx0PGJyPlxuXHRcdFx0XHRcdDx1PjxzdHJvbmc+VHJhbnNhY3Rpb24gQnVpbGRlcjo8L3N0cm9uZz48L3U+XG5cblx0XHRcdFx0In1pZihifHxkKWEuYm9keSs9KGMrYAoJCQkJCTxicj4KCQkJCQk8YnI+CgkJCQkJJHtifQoJCQkJCSR7ZH0KCQkJCWApLnJlcGxhY2UoL1xyP1xufFxyL2csIiIpfSxkZWNvZGVVUkxSZWN1cnNpdmVseTpmdW5jdGlvbihiKXtyZXR1cm4tMSE9Yi5pbmRleE9mKCIlIik\/YS5kZWNvZGVVUkxSZWN1cnNpdmVseShkZWNvZGVVUklDb21wb25lbnQodW5lc2NhcGUoYikpKTpifSx2YWxpZGF0ZUVtYWlsOmZ1bmN0aW9uKGIpe3JldHVybiAkLmFqYXgoe3R5cGU6IkdFVCIsdXJsOiIvYWpheC92YWxpZGF0ZUVtYWlsQWNjb3VudD93c3dpZHRoPTAmZW1haWw9IitiLGFzeW5jOiExfSl9LGdldFVVSUQ6ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5hY3RpdmVQcm9maWxlSUQmJm51bGwhPXdpbmRvdy5hY3RpdmVQcm9maWxlSUQ\/d2luZG93LmFjdGl2ZVByb2ZpbGVJRDoidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ\/YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkOgoidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMmJiJ1bmRlZmluZWQiIT1Db29raWVzLmdldCgidXVpZCIpJiZudWxsIT1Db29raWVzLmdldCgidXVpZCIpP0Nvb2tpZXMuZ2V0KCJ1dWlkIik6IiJ9LHNldENvbnRhY3RJbmZvOmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgJC5mbi5nb29nbGVQbGFjZXMpe3ZhciBiPSQoJ2lucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcz0idHJ1ZSJdJyk7MCE9Yi5sZW5ndGgmJihiPWIuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIiksIiIhPWIuY2l0eSYmIiI9PWEuY29udGFjdENpdHkmJihhLmNvbnRhY3RDaXR5PWIuY2l0eS5sb25nX25hbWUpLCIiIT1iLnN0cmVldCYmIiIhPWIuc3RyZWV0X251bWJlciYmIiI9PWEuY29udGFjdEFkZHJlc3MmJihhLmNvbnRhY3RBZGRyZXNzPWIuc3RyZWV0X251bWJlci5sb25nX25hbWUrIiAiK2Iuc3RyZWV0LmxvbmdfbmFtZSksIiIhPWIucHJvdmluY2UmJiIiPT1hLmNvbnRhY3RQcm92aW5jZSYmKGEuY29udGFjdFByb3ZpbmNlPQpiLnByb3ZpbmNlLnNob3J0X25hbWUpLCIiIT1iLnBvc3RhbCYmIiI9PWEuY29udGFjdFppcCYmKGEuY29udGFjdFppcD1iLnBvc3RhbC5sb25nX25hbWUpKX19LGdldExvbmdEYXRlVG9TaG9ydEZvcm1hdDpmdW5jdGlvbihiKXtpZigiIj09YilyZXR1cm4gYjtiPWIudG9Mb3dlckNhc2UoKTt2YXIgZD17amFudmllcjoiamFudWFyeSIsImbDqXZyaWVyIjoiZmVicnVhcnkiLG1hcnM6Im1hcmNoIixhdnJpbDoiYXByaWwiLG1haToibWF5IixqdWluOiJqdW5lIixqdWlsbGV0OiJqdWx5IiwiYW\/Du3QiOiJhdWd1c3QiLHNlcHRlbWJyZToic2VwdGVtYmVyIixvY3RvYnJlOiJvY3RvYmVyIixub3ZlbWJyZToibm92ZW1iZXIiLCJkw6ljZW1icmUiOiJkZWNlbWJlciJ9O2I9Yi5yZXBsYWNlKC9cYlxTK1xiL2lnLGZ1bmN0aW9uKGMpe3ZhciBmPWMudG9Mb3dlckNhc2UoKTtyZXR1cm4gZFtmXT9kW2ZdOmN9KTtyZXR1cm4obmV3IERhdGUoYikpLmZvcm1hdCgieXl5eS1NTS1kZCIpfSxnZXRFbWFpbENvbnNlbnQ6ZnVuY3Rpb24oYil7dmFyIGQ9Cm5ldyBEYXRlO2Euc2V0Q29udGFjdEluZm8oKTt2YXIgYz1hLmNvbnRhY3RCaXJ0aD9hLmNvbnRhY3RCaXJ0aDphLmdldExvbmdEYXRlVG9TaG9ydEZvcm1hdChhLmJpcnRoZGF0ZSk7JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO2dldERhdGE9e2VtYWlsOmEudXNlckVtYWlsLHBob25lOmEudXNlclBob25lLG5hbWU6YS51c2VyRmlyc3ROYW1lKyIgIithLnVzZXJMYXN0TmFtZSxhZGRyOmEuY29udGFjdEFkZHJlc3M\/YS5jb250YWN0QWRkcmVzczphLnVzZXJBZGRyZXNzLGNpdHk6YS5jb250YWN0Q2l0eSxwcm92aW5jZTphLmNvbnRhY3RQcm92aW5jZSx6aXA6YS5jb250YWN0WmlwP2EuY29udGFjdFppcDphLnVzZXJQb3N0YWwsbmFzOmEuY29udGFjdE5BUyxiaXJ0aDpjLHNpdGVJRDokKCIjc2l0ZUlEIikudmFsKCksVVVJRDphLmdldFVVSUQoKSx0czpkLmdldFRpbWUoKSxsYW5nOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSx1cGRhdGVJbXBsaWNpdDohMH07CiQuYWpheCh7dHlwZToiR0VUIix1cmw6Ii9hamF4L2dldEVtYWlsQ29uc2VudEZyb21DUk0\/d3N3aWR0aD0wIixkYXRhOmdldERhdGEsZGF0YVR5cGU6Impzb24ifSkuYWx3YXlzKGZ1bmN0aW9uKGYsayxtKXtmPWY\/Zjp7aGFzQ29uc2VudDohMX07JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuaGlkZSgpO3RyeXsidW5kZWZpbmVkIj09dHlwZW9mIGYmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiKioqKiBlcnJvciAqKioqIix7ZXJyb3I6Ik5vIERhdGEiLHRleHRTdGF0dXM6ayxydmFsdWU6Zix2OmdldERhdGEsdDoiL2FqYXgvZ2V0RW1haWxDb25zZW50RnJvbUNSTT93c3dpZHRoPTAifSksW1siY29uc2VudFR5cGUiLCJjb25zZW50VHlwZSJdLFsiY29uc2VudEV4cGlyYXRpb24iLCJleHBpcmF0aW9uIl0sWyJjb25zZW50RGF0ZSIsImRhdGUiXSxbImNvbnNlbnRGcmVxdWVuY3kiLCJmcmVxdWVuY3kiXSwKWyJjb25zZW50RGV0YWlsc0ZSIiwiZGV0YWlsc0ZSRU5DSCJdLFsiY29uc2VudERldGFpbHNFTiIsImRldGFpbHNFTkdMSVNIIl0sWyJkZXRhaWxzRGVmYXVsdHMiLCJkZXRhaWxzRGVmYXVsdHMiXSxbImNvbnRhY3RJRCIsInVpZCJdXS5tYXAoZnVuY3Rpb24obil7dmFyIHQ9blswXTtuPW5bMV07ZGVsZXRlIHZvaWQgMDthW3RdPXZvaWQgMCE9ZltuXT9mW25dOmFbdF19KX1jYXRjaChuKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIioqKiogZXJyb3IgKioqKiIse2Vycm9yOm4sdGV4dFN0YXR1czprLHJ2YWx1ZTpmLHY6Z2V0RGF0YSx0OiIvYWpheC9nZXRFbWFpbENvbnNlbnRGcm9tQ1JNP3dzd2lkdGg9MCJ9KX1iKGYpfSl9LGJhbmRwTGluazpmdW5jdGlvbihiKXtiPWZ1bmN0aW9uKHIpe3JldHVybiByLnJlcGxhY2UoLy0vZywiXyIpLnJlcGxhY2UoLycvZywiIil9O2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQ29va2llcy5nZXQoImJhbmRwbGluayIpfHwKbnVsbD09Q29va2llcy5nZXQoImJhbmRwbGluayIpfHwidW5kZWZpbmVkIj09dHlwZW9mIENvb2tpZXMuZ2V0KCJzZXNzaWQiKXx8bnVsbD09Q29va2llcy5nZXQoInNlc3NpZCIpKXJldHVybiIiO3ZhciBkPUNvb2tpZXMuZ2V0KCJiYW5kcGxpbmsiKSxjPUNvb2tpZXMuZ2V0KCJzZXNzaWQiKTtpZigwPmQuaW5kZXhPZigifHx8IikpcmV0dXJuIiI7dmFyIGY9ZC5zcGxpdCgifHx8Iik7aWYoND5mLmxlbmd0aClyZXR1cm4iIjtkPShuZXcgU3RyaW5nKGZbMF0pKS5zcGxpdCgiLyIpO3ZhciBrPW5ldyBTdHJpbmcoZlsxXSksbT1uZXcgU3RyaW5nKGZbMl0pO2Y9bmV3IFN0cmluZyhmWzNdKTt2YXIgbj0kKCIjcG9wdXB0cmltIikubGVuZ3RoJiYieyRQT1BVUFRSSU19IiE9JCgiI3BvcHVwdHJpbSIpLnZhbCgpPyQoIiNwb3B1cHRyaW0iKS52YWwoKToiIix0PSI8YSBocmVmPSciK2QyY21lZGlhLmdldEh0dHBUZXh0KCkrIjovLyIrd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKyQoIiN0eHRCdWlsZEFuZFByaWNlRm9sZGVyUGF0aCIpLnZhbCgpOwoiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8ocGFyc2VJbnQoZFsyXSksJCgiI1RYVE1PTlRIIitwYXJzZUludChkWzFdKS50b1N0cmluZygpKS52YWwoKSx0Kz1mKyItIitiKGspKyItIitiKG0pKyIuaHRtbD9zaWQ9IitjKyInIHRhcmdldD0nX2JsYW5rJz4iK2YrIiAiK2srIiAiK20rIiAiK24rIjwvYT4iKTooJCgiI1RYVE1PTlRIIitwYXJzZUludChkWzFdKS50b1N0cmluZygpKS52YWwoKSx0Kz1iKGspKyItIitiKG0pKyItIitmKyIuaHRtbD9zaWQ9IitjKyInIHRhcmdldD0nX2JsYW5rJz4iK2srIiAiK20rIiAiK24rIiAiK2YrIjwvYT4iKTtyZXR1cm4gdH0sbG9nRm9ybVJlcXVlc3Q6ZnVuY3Rpb24oYixkLGMpe3ZhciBmPU1hdGguZmxvb3IoOTk5OTk5OSpNYXRoLnJhbmRvbSgpKSxrPSQoIiN0b3BzaXRlaWQiKS5sZW5ndGg\/JCgiI3RvcHNpdGVpZCIpLnZhbCgpOiIwIixtPSQoIiN0b3BjYXJpZCIpLmxlbmd0aCYmMDwkKCIjdG9wY2FyaWQiKS52YWwoKS5sZW5ndGg\/CiQoIiN0b3BjYXJpZCIpLnZhbCgpOiIwIixuPUNvb2tpZXMuZ2V0KCJ1aWQiKT9Db29raWVzLmdldCgidWlkIik6IjAiLHQ9Q29va2llcy5nZXQoInV0bV9zb3VyY2UiKT9Db29raWVzLmdldCgidXRtX3NvdXJjZSIpOiIwIixyPUNvb2tpZXMuZ2V0KCJ1dG1fY2FtcGFpZ24iKT9Db29raWVzLmdldCgidXRtX2NhbXBhaWduIik6IjAiLHY9Q29va2llcy5nZXQoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKT9Db29raWVzLmdldCgidXRtX3NvdXJjZV9yZXRhcmdldGluZyIpOiIwIixxPUNvb2tpZXMuZ2V0KCJ1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmciKT9Db29raWVzLmdldCgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIik6IjAiLHA9JCgiI3RvcGlzbW9iaWxlIikubGVuZ3RoJiYxPT0kKCIjdG9waXNtb2JpbGUiKS52YWwoKT8iWUVTIjoiTk8iLGg9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLmxlbmd0aD8kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk6IkZSRU5DSCIsbD12b2lkIDAhPT0KYSYmdm9pZCAwIT09YS5waG9uZU1hbmRhdG9yeT9hLnBob25lTWFuZGF0b3J5OjA7InVuZGVmaW5lZCIhPXR5cGVvZiBjJiZjfHwoYz0iMCIpO3I9ci5yZXBsYWNlKC9cdC9nLCIiKS5yZXBsYWNlKC9cbi9nLCIiKS5yZXBsYWNlKC9cci9nLCIiKS5yZXBsYWNlQWxsKCIlMEEiLCIiKS5yZXBsYWNlQWxsKCIlMDkiLCIiKS5yZXBsYWNlQWxsKCIlMEIiLCIiKS5yZXBsYWNlQWxsKCIlMDAiLCIiKS5yZXBsYWNlQWxsKCIlNUMiLCIiKS5yZXBsYWNlQWxsKCIlMEQiLCIiKTt0PXQucmVwbGFjZSgvXHQvZywiIikucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvXHIvZywiIikucmVwbGFjZUFsbCgiJTBBIiwiIikucmVwbGFjZUFsbCgiJTA5IiwiIikucmVwbGFjZUFsbCgiJTBCIiwiIikucmVwbGFjZUFsbCgiJTAwIiwiIikucmVwbGFjZUFsbCgiJTVDIiwiIikucmVwbGFjZUFsbCgiJTBEIiwiIik7Yj0iL3Byb3h5X3NhdWIvbG9nRm9ybVJlcXVlc3QvIitlbmNvZGVVUklDb21wb25lbnQoaykrCiIvIitlbmNvZGVVUklDb21wb25lbnQobSkrIi8iK2VuY29kZVVSSUNvbXBvbmVudChuKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKyIvIitlbmNvZGVVUklDb21wb25lbnQocikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChwKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGgpKyIvIitlbmNvZGVVUklDb21wb25lbnQodikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChxKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGQpKyIvIitlbmNvZGVVUklDb21wb25lbnQoYikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChjKSsiLyIrISFsKyIvIitlbmNvZGVVUklDb21wb25lbnQoZikrIi5naWYiOyQoImJvZHkiKS5hcHBlbmQoIjxpbWcgc3R5bGU9J3dpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7JyBzcmM9JyIrYisiJyBhbHQ9JycgLz4iKX0sZ2V0VXNlZEVtYWlsRm9yTXVsdGlwbGVEZWFsZXJzOmZ1bmN0aW9uKCl7dmFyIGI9ImZyIjsiRU5HTElTSCI9PQokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkmJihiPSJlbiIpO3VyaT0iLyIrYisiL3BocC9nZXREZWFsZXJzRW1haWxUby5waHA\/bWFrZT0iK2EubWFrZSsiJm1vZGVsPSIrYS5tb2RlbCsiJnllYXI9IithLnllYXIrIiZjYj0iK01hdGguZmxvb3IoOTk5OTk5OSpNYXRoLnJhbmRvbSgpKTskLmFqYXgoe3VybDp1cmksYXN5bmM6ITEsc3VjY2VzczpmdW5jdGlvbihkKXtkPWQuc3BsaXQoInx8fCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgZFswXSYmMDxkWzBdLmxlbmd0aCYmKGEuc2VuZFRvPWRbMF0pOyJ1bmRlZmluZWQiIT10eXBlb2YgZFsxXSYmMDxkWzFdLmxlbmd0aCYmKGEuc2VuZFRvQURGRm9ybWF0PWRbMV0pfX0pfSxwcmVTZW5kSW1wbGljaXQ6ZnVuY3Rpb24oKXtpZihhLnBhcnRpYWwpcmV0dXJuITE7anNvbk9iamVjdD1hLmdldEpzb25PYmplY3QoKTt2YXIgYj17anNvbjpKU09OLnN0cmluZ2lmeShqc29uT2JqZWN0KSxwYXJ0aWFsOiEwfTskLmFqYXgoe3R5cGU6IlBPU1QiLAp1cmw6Ii9tYWlsL3NlbmRNYWlsRXgucGhwIixkYXRhOmIsYmVmb3JlU2VuZDpmdW5jdGlvbihkKXskKCdpbnB1dFtuYW1lPSJsZWFkX2RlcGFydG1lbnQiXScpLnZhbChqc29uT2JqZWN0LmRlcGFydG1lbnQpOyQoJ2lucHV0W25hbWU9ImxlYWRUeXBlIl0nKS52YWwoYS5zdWJqZWN0LnJlcGxhY2UoL1tcblxyXS9nLCIgIikpOyQoJ2lucHV0W25hbWU9InBhZ2VJRCJdJykudmFsKCQoIiNQQUdFSUQiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iY3VycmVudFVSTCJdJykudmFsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTskKCdpbnB1dFtuYW1lPSJpc0Z1bGxXaWR0aCJdJykudmFsKCQoIiNpc0Z1bGxXaWR0aFBhZ2VOZXdWRFAiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iZGVhbGVyTmFtZSJdJykudmFsKCQoIiNuZXdWRFBEZWFsZXJOYW1lIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImJ1dHRvblBvc2l0aW9uIl0nKS52YWwoJCgiI25ld1ZEUEJ1dHRvblBvc2l0aW9uIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImlzTW9iaWxlTmV3VkRQIl0nKS52YWwoJCgiI2lzbW9iaWxlIikudmFsKCkpOwpkJiZkLm92ZXJyaWRlTWltZVR5cGUmJmQub3ZlcnJpZGVNaW1lVHlwZSgiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04Iik7dHJ5e2xldCBjPSQoIm1ldGFbbmFtZT0nY3NyZi1kb21haW4tY2hlY2snXSIpO2MubGVuZ3RoJiZkLnNldFJlcXVlc3RIZWFkZXIoImNzcmYtZG9tYWluLWNoZWNrIixjLmF0dHIoImNvbnRlbnQiKSl9Y2F0Y2goYyl7Y29uc29sZS5lcnJvcihkKX19LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKGQpfSxmYWlsdXJlOmZ1bmN0aW9uKGQpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWRFbWFpbE5vdFNlbnQiLGEubWFpbElELGEucG9wdXBPZmZlclR5cGUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZyhzYXZlSGFuZGxlci5mYWlsTWVzc2FnZSxkKX0sc3RhdHVzQ29kZTp7NDA0OmZ1bmN0aW9uKCl7YWxlcnQoInBhZ2Ugbm90IGZvdW5kIil9fX0pfSxsb2dFdmVudDpmdW5jdGlvbihiLApkKXtkPWQ\/ZDphLm1haWxJRDtpZighYnx8IWQpcmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixiLGQpLCExOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD9hY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsZCk6InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixiLGQpfSxidWlsZENSTUtleTpmdW5jdGlvbigpe3ZhciBiPXBhcnNlSW50KCQoIiN0b3BzaXRlaWQiKS52YWwoKSwxMCksZD1hLmdldFVVSUQoKSxjPWdldENvb2tpZSgiZW1haWxGcm9tQXV0b0Fuc3dlciIpO2lmKCFpc05hTihiKSYmKCIiIT1jfHwiIiE9ZCkmJiJudW1iZXIiPT10eXBlb2YgYiYmMDxiKXt2YXIgZj1uZXcgRGF0ZSxrPWYuZ2V0TW9udGgoKSsxO2s9JC5iYXNlNjQuZW5jb2RlKGYuZ2V0RnVsbFllYXIoKSsKIi0iKygxMD5rPyIwIitrOmspKyItIisoMTA+Zi5nZXREYXRlKCk\/IjAiK2YuZ2V0RGF0ZSgpOmYuZ2V0RGF0ZSgpKSk7Zj1rLnN1YnN0cigwLDgpO2s9ay5zdWJzdHIoOCk7cmV0dXJuICQuYmFzZTY0LmVuY29kZShmKyQuYmFzZTY0LmVuY29kZShiKyI7IitkKyI7IitjKStrKX1yZXR1cm4iIn0sc2V0TWFrZU1vZGVsWWVhckZyb21MYXN0Vmlld2VkOmZ1bmN0aW9uKCl7dmFyIGI9JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCksZD0kKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCksYz0kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiYiIj09PWEubWFrZSYmKGEubWFrZT1iKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBkJiYiIj09PWEubW9kZWwmJihhLm1vZGVsPWQpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGN8fCIiIT09YS55ZWFyJiYwIT09YS55ZWFyfHwoYS55ZWFyPWMpfSxyZWNhcHRjaGE6e2FzazohMCx3aWRnZXRJZDotMSxza2lwQnlQYXNzOiExLApvbjokLkRlZmVycmVkKCksaXNEMkNMb2FkZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmdyZWNhcHRjaGEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5ncmVjYXB0Y2hhLkQyQ0xvYWRlZH0saW5pdDpmdW5jdGlvbigpe3RyeXsoZnVuY3Rpb24oYixkLGMsZixrKXtpZighYltrXXx8InVuZGVmaW5lZCI9PT10eXBlb2YgYltrXS5EMkNMb2FkZWQpe3ZhciBtPWQuY3JlYXRlRWxlbWVudChjKTtjPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYylbMF07bS5zcmM9ZjtjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0sYyk7bS5vbmxvYWQ9KCk9PntiW2tdJiYoYltrXS5EMkNMb2FkZWQ9ITApO2QuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImdyZWNhcHRjaGEuZDJjbG9hZGVkIikpfX19KSh3aW5kb3csZG9jdW1lbnQsInNjcmlwdCIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcyIsImdyZWNhcHRjaGEiKX1jYXRjaChiKXtjb25zb2xlLmxvZyhiKX19LGxvYWQ6ZnVuY3Rpb24oKXtpZighKC0xPAphLnJlY2FwdGNoYS53aWRnZXRJZCkpdHJ5eyQoJzxkaXYgaWQ9ImVtYWlsaGFuZGxlcl9yZWNhcHRjaGFXaWRnZXQiPjwvZGl2PicpLmFwcGVuZFRvKCJib2R5IiksYS5yZWNhcHRjaGEud2lkZ2V0SWQ9Z3JlY2FwdGNoYS5yZW5kZXIoImVtYWlsaGFuZGxlcl9yZWNhcHRjaGFXaWRnZXQiLHtzaXRla2V5OiI2TGZwZEQwVUFBQUFBUGQ0UzdJa2U1RWR4MDF5M1lYZDVJLXUzZHhQIixjYWxsYmFjazphLnJlY2FwdGNoYS5vblN1Ym1pdCwiZXJyb3ItY2FsbGJhY2siOmEucmVjYXB0Y2hhLm9uRmFpbCxzaXplOiJpbnZpc2libGUifSl9Y2F0Y2goYil7Y29uc29sZS5sb2coYil9fSxvblN1Ym1pdDpmdW5jdGlvbihiKXthLmdyZWNhcHRjaGFSZXNwb25zZVRva2VuPWI7YS5yZWNhcHRjaGEub24ucmVzb2x2ZShiKX0sb25GYWlsOmZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIkdSQyBGYWlsIixhcmd1bWVudHMpfSxnZXRSZXNwb25zZTpmdW5jdGlvbigpe3JldHVybiBhLnJlY2FwdGNoYS5pc0QyQ0xvYWRlZCgpPwooYS5yZWNhcHRjaGEubG9hZCgpLGdyZWNhcHRjaGEuZXhlY3V0ZShhLnJlY2FwdGNoYS53aWRnZXRJZCksYS5yZWNhcHRjaGEub24pOiQuRGVmZXJyZWQoKS5yZXNvbHZlKCl9LHJlc2V0VG9rZW46ZnVuY3Rpb24oKXthLnJlY2FwdGNoYS5pc0QyQ0xvYWRlZCgpJiYoZ3JlY2FwdGNoYS5yZXNldChhLnJlY2FwdGNoYS53aWRnZXRJZCksYS5yZWNhcHRjaGEub249JC5EZWZlcnJlZCgpKX0sc2V0UmVzcG9uc2U6ZnVuY3Rpb24oKXt9fSxzYW5pdGl6ZUhUTUw6ZnVuY3Rpb24oYil7cmV0dXJuIGVuY29kZVVSSShiKX0sc2hvdWxkRGlzcGxheVB1cmNoYXNlSW50ZW50Q29udGFjdDooKT0+e2lmKG51bGw9PT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpKXJldHVybiExO2xldCBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhc1B1cmNoYXNlSW50ZW50IC5zdGVwQ29udGFjdCIpLmRhdGFzZXQuZGVwYXJ0bWVudHM7CmI9Yi5zcGxpdCgiOyIpO2lmKC0xPGIuaW5kZXhPZihhLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSkpcmV0dXJuITA7dmFyIGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZT9kb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKC9bQS16XTpcL1wvW15cL10rXC8oW15cP10rKVw\/Py4qLylbMV07ZD1hLnNhbml0aXplSFRNTChkKTtsZXQgYz1PYmplY3QudmFsdWVzKE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh7bmV3OlsibmV1ZiIsIm5ldyJdLHVzZWQ6WyJvY2Nhc2lvbiIsInVzZWQiXSxzZXJ2aWNlOlsic2VydmljZSIsImVudHJldGllbiIsIm1haW50ZW5hbmNlIiwicmVwYWlyIl0sZmluYW5jZTpbImZpbmFuY2VtZW50IiwiZmluYW5jZSIsImNyZWRpdCIsImxvYW4iXX0pLmZpbHRlcihmPT57W2ZdPWY7cmV0dXJuLTE8Yi5pbmRleE9mKGYpfSkpKS5mbGF0KCk7cmV0dXJuKG5ldyBSZWdFeHAoIigiKwpjLmpvaW4oInwiKSsiKSIpKS50ZXN0KGQudG9Mb3dlckNhc2UoKSl9fTtqUXVlcnkoZnVuY3Rpb24oYil7Yj1qc19kMmNfZ2V0X3ZhbCgiSVNWTSIpO3ZhciBkPWpzX2QyY19nZXRfdmFsKCJmZmRMMSIpLGM9anNfZDJjX2dldF92YWwoIkdSV0wiKS5zcGxpdCgiOyIpO2EuaWdub3JlQ2FwdGNoYT1ifHwtMSE9Yy5pbmRleE9mKGQpO2EuaWdub3JlQ2FwdGNoYXx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdyZWNhcHRjaGEuZDJjbG9hZGVkIixmdW5jdGlvbigpe3RyeXtncmVjYXB0Y2hhLnJlYWR5KGZ1bmN0aW9uKCl7YS5yZWNhcHRjaGEubG9hZCgpfSl9Y2F0Y2goZil7Y29uc29sZS5sb2coZil9fSksYS5yZWNhcHRjaGEuaW5pdCgpKX0pO2EucmVzZXRDYWxsYmFja3MoKTthLmFza1B1cmNoYXNlSW50ZW50PWZ1bmN0aW9uKGIpe3ZhciBkPSJ1bmRlaW5mZWQiIT10eXBlb2YgYi5wYXRobmFtZT9iLnBhdGhuYW1lOmIuaHJlZi5tYXRjaCgvW0Etel06XC9cL1teXC9dK1wvKFteXD9dKylcPz8uKi8pWzFdOwp2YXIgYz1SZWdFeHAoIihkZW1vbnN0cmF0ZXVyc3xkZW1vfGxpcXVpZGF0aW9ufGNsZWFyYW5jZXxwcm9tb3Rpb25zfG5ldWZ8bmV3fG9jY2FzaW9ufHVzZWR8Y3JlZGl0fGZpbmFuY2VtZW50KSIpO2I9e2RlbW9uc3RyYXRldXJzOiJkZW1vIixjbGVhcmFuY2U6ImxpcXVpZGF0aW9uIiwibmV3IjoibmV1ZiIscHJvbW90aW9uczoicHJvbW8iLHVzZWQ6Im9jY2FzaW9uIixjcmVkaXQ6ImZpbmFuY2VtZW50In07cmV0dXJuIGMudGVzdChkLnRvTG93ZXJDYXNlKCkpPyhkPWQubWF0Y2goYyksbnVsbCE9ZCYmKGEucHVyY2hhc2VfaW50ZW50X3NlY3Rpb249InVuZGVmaW5lZCIhPXR5cGVvZiBiW2RbMV1dP2JbZFsxXV06ZFsxXSksITApOiExfShkb2N1bWVudC5sb2NhdGlvbik7cmV0dXJuIGF9KCksZW1haWxUcmFja2luZz1mdW5jdGlvbigpe3ZhciBlPXticmFuZDoiIixtb2RlbDoiIix5ZWFyOiIiLGlzcHJvbW86ITEsaXNleHByZXNzOiExLGlzaG9tZXBhZ2U6ITEsc2VjdGlvbjoiIiwKdGV4dENhclNlY3Rpb25UeXBlOiJVU0VEIixpc01vYmlsZU5ld1ZEUDohMSxpc0Z1bGxXaWR0aDohMSxidXR0b25Qb3NpdGlvbjoiIixkZWFsZXJOYW1lOiIifSxnPWZ1bmN0aW9uKGMpe3ZhciBmPVtdLGs9Yy5icmFuZD9jLmJyYW5kOmVtYWlsSGFuZGxlci5tYWtlLG09Yy5tb2RlbD9jLm1vZGVsOmVtYWlsSGFuZGxlci5tb2RlbDtjPWMueWVhcj9jLnllYXI6ZW1haWxIYW5kbGVyLnllYXI7ay5sZW5ndGgmJmYucHVzaChrKTttLmxlbmd0aCYmZi5wdXNoKG0pO2MubGVuZ3RoJiZmLnB1c2goYyk7cmV0dXJuIGYuam9pbigiLSIpfSxhPWZ1bmN0aW9uKGMpe3ZhciBmPXsiaG9tZXBhZ2UuaHRtbCI6IkhvbWUtUGFnZSIsImNvbnRhY3R1cy5odG1sIjoiQ29udGFjdFVzIiwibmV3Y2FyZGV0YWlsLmh0bWwiOiJOZXctVkRQIiwibmV3Y2Fycy5odG1sIjoiTmV3LVNSUCIsImJ1aWxkYW5kcHJpY2UuaHRtbCI6Ik5ldy1CJlAiLCJyZXN1bWUtYnVpbGRhbmRwcmljZS5odG1sIjoiTmV3LUImUC1SZXN1bWUiLAoiY29tcGFyZU5ld1ZlaGljbGVzLmh0bWwiOiJOZXctQ29tcGFyZSIsInVzZWRjYXJzLmh0bWwiOiJVc2VkLVNSUCIsImNhcmRldGFpbC5odG1sIjoiVXNlZC1WRFAiLCJjcmVkaXQuaHRtbCI6IkRlbWFuZGVzIC0gRmluYW5jZW1lbnQiLCJkZWFsZXJ0cmFjay5odG1sIjoiRGVtYW5kZXMgLSBGaW5hbmNlbWVudCIsInByb21vdGlvbi5odG1sIjoiUHJvbW90aW9ucyIsInByb21vdGlvbnNhbGVzLmh0bWwiOiJQcm9tb3Rpb25zIiwicHJvbW90aW9uc2VydmljZS5odG1sIjoiUHJvbW90aW9ucyIsInBhcnRzUmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQae+\/vWNlcyIsInNlcnZpY2VzLmh0bWwiOiJTZXJ2aWNlIiwic2VydmljZVJlcXVlc3QuaHRtbCI6IkRlbWFuZGVzIC0gUkRWIFNlcnZpY2UiLCJib2R5U2hvcC5odG1sIjoiRGVtYW5kZXMgLSBSRFYgQ2Fyb3NzZXJpZSIsInRpcmVzUmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQbmV1cyIsIm91cnRlYW0uaHRtbCI6IlRlYW0iLCJ0ZXN0ZHJpdmUuaHRtbCI6IkRlbWFuZGVzIC0gRXNzYWlzLVJvdXRpZXItT2NjYXNpb24iLAoidGVzdGRyaXZlbmV3Lmh0bWwiOiJEZW1hbmRlcyAtIEVzc2Fpcy1Sb3V0aWVyLU5ldWYiLCJicm9jaHVyZXMuaHRtbCI6IkRlbWFuZGVzIC0gQnJvY2h1cmVzIiwiam9ib2ZmZXIuaHRtbCI6IkRlbWFuZGVzIC0gRW1wbG9pcyIsIm1ha2VvZmZlcm5ldy5odG1sIjoiRGVtYW5kZXMgLSBPZmZyZSAtIE5ldWYiLCJtYWtlb2ZmZXIuaHRtbCI6IkRlbWFuZGVzIC0gT2ZmcmUgLSBPY2Nhc2lvbiIsInByaWNlcmVxdWVzdG5ldy5odG1sIjoiRGVtYW5kZXMgLSBQcml4IC0gTmV1ZiIsInByaWNlcmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBQcml4IC0gT2NjYXNpb24iLCJmaW5kY2FyLmh0bWwiOiJEZW1hbmRlcyAtIFJlY2hlcmNoZSBPY2Nhc2lvbiIsInRyYWRlaW5uZXcuaHRtbCI6IkRlbWFuZGVzIC0gRWNoYW5nZSBOZXVmIiwidHJhZGVpbi5odG1sIjoiRGVtYW5kZXMgLSBFY2hhbmdlIE9jY2FzaW9uIn0saz0tMSE9KGMuY3VycmVudFVSTHx8IiIpLmluZGV4T2YoInN0ZXA9cmVzdW1lIiksCm09LTEhPShjLmN1cnJlbnRVUkx8fCIiKS5pbmRleE9mKCJzdGVwPW9wdGlvbnMiKTsiYnVpbGRhbmRwcmljZS5odG1sIj09Yy5wYWdlSUQmJihrfHxtKSYmKGMucGFnZUlEPSJyZXN1bWUtYnVpbGRhbmRwcmljZS5odG1sIik7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBmW2MucGFnZUlEXT9mW2MucGFnZUlEXToiT3RoZXIifSxiPWZ1bmN0aW9uKGMpe3ZhciBmPSJEZW1hbmRlcyIsaz1jLmJyYW5kP2MuYnJhbmQ6ZW1haWxIYW5kbGVyLm1ha2UsbT1jLm1vZGVsP2MubW9kZWw6ZW1haWxIYW5kbGVyLm1vZGVsO2MuaXNwcm9tbyYmKGYrPSItUHJvbW90aW9uIik7MDxrLmxlbmd0aCYmMDxtLmxlbmd0aCYmIWMuaXNob21lcGFnZT9mPWMuaXNwcm9tbz9mKygiLSIrZyhjKSk6ZitbIiIsayxtLGMuc2VjdGlvbl0uam9pbigiLSIpOmMuaXNwcm9tbyYmYy5pc2hvbWVwYWdlJiYoZis9Ii1JbmRleCIpOyIxIj09Yy5pc2V4cHJlc3MmJihjLnRleHRDYXJTZWN0aW9uVHlwZSYmKGY9IkRlbWFuZGVzLUV4cHJlc3MiKSwKZis9Ii0iK2coYyksZis9Ii0iK2Muc2VjdGlvbik7cmV0dXJuIGZ9LGQ9ZnVuY3Rpb24oYyl7dmFyIGY9MTIwMDx3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGg\/Ij4xMjAwcHggLSAiLmlzRnVsbFdpZHRoOiI8MTIwMHB4IC0gTm9ybWFsIFZEUCI7W2YsYy5idXR0b25Qb3NpdGlvbl0uam9pbigiLSIpO2M9W2MuZGVhbGVyTmFtZSxmLCJMZWFkIl0uam9pbigiLSIpO2dhVHJhY2soImMiLCJOZXctVkRQLURlc2t0b3AtTGF5b3V0LUNSIixhY3Rpb24sYywxKX07dGhpcy50cmFjaz1mdW5jdGlvbihjKXtpZihnZXRDb29raWUoImxlYWRTZW5kIikpcmV0dXJuIGRlYnVnKCJsZWFkIHNlbnQiKTtzZXRDb29raWUoImxlYWRTZW5kIiwhMCwxKTtjPSQuZXh0ZW5kKHt9LGUsYyk7Yy5jdXJyZW50VVJMPWMuY3VycmVudFVSTD9jLmN1cnJlbnRVUkw6d2luZG93LmxvY2F0aW9uLmhyZWY7Yy5pc3Byb21vPSIxIj09Yy5pc3Byb21vO2MuaXNob21lcGFnZT0iMSI9PWMuaXNob21lcGFnZTt2YXIgZj1hKGMpOwpnYVRyYWNrKCIiLCJDb3VycmllbHMiLGMubGFiZWwsYihjKSwxKTtnYVRyYWNrKCJjIiwiQ291cnJpZWxzLWRlcHQiLGMuZGVwYXJ0bWVudCxnKGMpLDEpO2dhVHJhY2soImMiLCJDb3VycmllbHMtcGFnZSIsZixjLmxlYWRUeXBlLDEpO2MuaXNNb2JpbGVOZXdWRFAmJiJOZXctVkRQIj09ZiYmZChjKTt0cnl7ZDJjX2dhQWNjb3VudHMuYWxsLm1hcChmdW5jdGlvbihrKXtndGFnKCJjb25maWciLGsse3BhZ2VfcGF0aDoiL2NvbmZpcm1hdGlvbi5odG1sIn0pfSksZ3RhZygiY29uZmlnIiwiRy1aNVE4WjVDN0tGIix7cGFnZV9wYXRoOiIvY29uZmlybWF0aW9uLmh0bWwifSl9Y2F0Y2goayl7ZGVidWcoayl9fTtyZXR1cm4gdGhpc30oKSxnZXRNYWlsU2VudEhhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIGc9e3RpbWVvdXRDYWxsYmFjazpudWxsLHRpbWVvdXQ6bnVsbH07Zy5pZFRvQWRkPWU\/ZToiIjskKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIpLmZpbmQoIi5kZWZhdWx0U3VjY2VzcyIpLnNob3coKTsKJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiKS5maW5kKCIuc2VydmljZVN1Y2Nlc3MiKS5oaWRlKCk7JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UpLmxlbmd0aHx8KGU9IiIsZy5pZFRvQWRkPSIiLCJTRVJWSUNFIiE9ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQmJiJQQVJUUyIhPWVtYWlsSGFuZGxlci5kZXBhcnRtZW50KXx8KCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIikuZmluZCgiLmRlZmF1bHRTdWNjZXNzIikuaGlkZSgpLCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIikuZmluZCgiLnNlcnZpY2VTdWNjZXNzIikuc2hvdygpKTtnLnNob3dTdWNjZXNzPWZ1bmN0aW9uKCl7Z2V0Q29va2llKCJwcmV2ZW50RHVwbGljYXRlQ3JlZGl0U2NvcmUiKXx8Z2V0Q29va2llKCJjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cFNob3duIil8fGdldENvb2tpZSgiY3JlZGl0U2NvcmVFbWJlZGRlZEZpbGxlZCIpfHwiIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmIiIhPWVtYWlsSGFuZGxlci51c2VyQWRkcmVzcyYmCiIiIT1lbWFpbEhhbmRsZXIuYmlydGhkYXRlfHwibmV3IiE9ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSYmInVzZWQiIT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpfHwhJCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIikubGVuZ3RofHwiVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIj09ZW1haWxIYW5kbGVyLnBvcHVwZGl2PygkKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIrZSkucGFyZW50KCkuaXMoImJvZHkiKXx8JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UpLmFwcGVuZFRvKCJib2R5IiksJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UpLnJldmVhbCh7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMSxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIn0pLCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitlKyIgLmNvbmZpcm1fc3VjY2Vzc0NvbnRpbnVlIikub24oImNsaWNrIiwKZy5jbG9zZVN1Y2Nlc3MpKTokKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigxKTskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCk7JCgiI2VtYWlsbXNnZnJtIitnLmlkVG9BZGQpLnRyaWdnZXIoInN1Ym1pdCIpfTtnLmNsb3NlU3VjY2Vzcz1mdW5jdGlvbigpeyQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitnLmlkVG9BZGQpLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpO251bGwhPWcudGltZW91dENhbGxiYWNrJiZnLnRpbWVvdXRDYWxsYmFjaygpO3JldHVybiExfTtnLnNob3dGYWlsPWZ1bmN0aW9uKCl7JCgiI2VtYWlsRmFpbE1lc3NhZ2UiK2cuaWRUb0FkZCkucmV2ZWFsKHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwifSk7JCgiI2VtYWlsRmFpbE1lc3NhZ2UiKwplKyIgLmNvbmZpcm1fZmFpbENvbnRpbnVlIikub24oImNsaWNrIixmdW5jdGlvbigpeyQoIiNlbWFpbEZhaWxNZXNzYWdlIitlKS50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pOyQoIi51aS1sb2FkZXItYmFja2dyb3VuZCIpLmhpZGUoKX07cmV0dXJuIGd9LG1haWxTZW50SGFuZGxlcj1uZXcgZ2V0TWFpbFNlbnRIYW5kbGVyKCIiKTtmdW5jdGlvbiBzdG9yYWdlQXZhaWxhYmxlKGUpe3RyeXt2YXIgZz13aW5kb3dbZV07Zy5zZXRJdGVtKCJfX3N0b3JhZ2VfdGVzdF9fIiwiX19zdG9yYWdlX3Rlc3RfXyIpO2cucmVtb3ZlSXRlbSgiX19zdG9yYWdlX3Rlc3RfXyIpO3JldHVybiEwfWNhdGNoKGEpe3JldHVybiBhIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiYoMjI9PT1hLmNvZGV8fDEwMTQ9PT1hLmNvZGV8fCJRdW90YUV4Y2VlZGVkRXJyb3IiPT09YS5uYW1lfHwiTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQiPT09YS5uYW1lKSYmZyYmMCE9PWcubGVuZ3RofX0KdmFyIGZvcm1GaWxsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxnPXN0b3JhZ2VBdmFpbGFibGUoImxvY2FsU3RvcmFnZSIpLGE9bnVsbCxiPSEwLGQ9W10sYz17bmFtZTpbImlucHV0Lm5hbWUiLCdpbnB1dFtuYW1lPSJuYW1lIl0nXSxwb3N0YWw6WyJpbnB1dC5wb3N0YWwiLCdpbnB1dFtuYW1lPSJwb3N0YWwiXSddLGZpcnN0TmFtZTonaW5wdXQuZmlyc3ROYW1lIGlucHV0LmZpcnN0bmFtZSBpbnB1dFtuYW1lPSJmaXJzdG5hbWUiXSBpbnB1dFtuYW1lPSJmaXJzdE5hbWUiXSBpbnB1dCNmaXJzdG5hbWUgaW5wdXQjZmlyc3ROYW1lIGlucHV0I21pbmlfZm5hbWUnLnNwbGl0KCIgIiksbGFzdE5hbWU6J2lucHV0Lmxhc3ROYW1lIGlucHV0Lmxhc3RuYW1lIGlucHV0W25hbWU9Imxhc3RuYW1lIl0gaW5wdXRbbmFtZT0ibGFzdE5hbWUiXSBpbnB1dCNsYXN0bmFtZSBpbnB1dCNsYXN0TmFtZSBpbnB1dCNtaW5pX2xuYW1lJy5zcGxpdCgiICIpLHBob25lOlsiaW5wdXQucGhvbmUiLCdpbnB1dFtuYW1lPSJwaG9uZSJdJywKJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nLCJpbnB1dCNtaW5pX3Bob25lIiwnW3R5cGU9InRlbCJdJ10sZW1haWw6WyJpbnB1dC5lbWFpbCIsJ2lucHV0W25hbWU9ImVtYWlsIl0nLCdpbnB1dFtuYW1lPSJlbWFpbEFkZHJlc3MiXScsImlucHV0I21pbmlfZW1haWwiXX0sZj1mdW5jdGlvbihwKXtpZighZylyZXR1cm4hMTt2YXIgaD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZm9ybUZpbGxEYXRhIik7aWYobnVsbD09PWgpcmV0dXJuITE7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9wcm94eV9zZDJjL3NlcnZpY2UvZDJjLmVuY3J5cHRpb24uZ2V0IixkYXRhOntkYXRhOmh9fSkuZG9uZShmdW5jdGlvbihsKXtpZihsJiYiZnVuY3Rpb24iPT09dHlwZW9mIHApdHJ5e3AoSlNPTi5wYXJzZShsLmRhdGEpKX1jYXRjaCh1KXtjb25zb2xlLmxvZyh1KX19KX0saz1mdW5jdGlvbigpe2I9ITA7YT1udWxsO2QuZm9yRWFjaChmdW5jdGlvbihwKXtwLmZpbGxlZD0hMX0pfSxtPWZ1bmN0aW9uKHApe3EoInVzZXIubG9hZGVkIiwKZnVuY3Rpb24oKXtpZighbihwKSl7ZC5wdXNoKHtzY29wZTpwLGZpbGxlZDohMH0pO2Zvcih2YXIgaCBpbiBjKWEuaGFzT3duUHJvcGVydHkoaCkmJnAuZmluZCgkKGNbaF0uam9pbigiLCIpKSkudmFsKGFbaF0pO3IoImZvcm0uZmlsbGVkIil9fSk7bnVsbD09PWEmJmI\/KGI9ITEsZihmdW5jdGlvbihoKXtoLnBvc3RhbD1oLnBvc3RhbC50b1VwcGVyQ2FzZSgpO2guZmlyc3ROYW1lPWguZmlyc3ROYW1lLnRyaW0oKTtoLmxhc3ROYW1lPWgubGFzdE5hbWUudHJpbSgpO2VtYWlsSGFuZGxlci51c2VyUG9zdGFsPWgucG9zdGFsO2VtYWlsSGFuZGxlci51c2VyRW1haWw9aC5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1oLmZpcnN0TmFtZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPWgubGFzdE5hbWU7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT1oLnBob25lO2gubmFtZT0oaC5maXJzdE5hbWUrIiAiK2gubGFzdE5hbWUpLnRyaW0oKTthPWg7cigidXNlci5sb2FkZWQiKX0pKToKYSYmcigidXNlci5sb2FkZWQiKX0sbj1mdW5jdGlvbihwKXtyZXR1cm4oX3Njb3BlPWQuZmluZChmdW5jdGlvbihoKXtpZihoLnNjb3BlLmlzKHApKXJldHVybiBofSkpP19zY29wZS5maWxsZWQ6ITF9LHQ9W10scj1mdW5jdGlvbihwKXt2YXIgaD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtpZih0W3BdKXt2YXIgbD10W3BdLnNsaWNlKCk7dmFyIHU9bC5sZW5ndGg7Zm9yKGk9MDtpPHU7aSsrKWxbaV0uYXBwbHkodGhpcyxoKX19LHY9ZnVuY3Rpb24ocCxoKXt0W3BdfHwodFtwXT1bXSk7dFtwXS5wdXNoKGgpfSxxPWZ1bmN0aW9uKHAsaCl7dihwLGZ1bmN0aW9uIHUoKXt0W3BdLnNwbGljZSh0W3BdLmluZGV4T2YodSksMSk7aC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX07JChmdW5jdGlvbigpe2cmJigkKGRvY3VtZW50KS5vbigicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24ocCxoKXtwPWgudGFyZ2V0P2gudGFyZ2V0OiQoaCk7bShwKX0pLCQoZG9jdW1lbnQpLm9uKCJwb3B1cGl6ZXIub25DbG9zZSIsCmZ1bmN0aW9uKHAsaCl7fSksJCgiZm9ybSIpLmVhY2goZnVuY3Rpb24ocCxoKXttKCQoaCkpfSkpfSk7cmV0dXJuIGU9e3NhdmU6ZnVuY3Rpb24ocCl7aWYoIWcpcmV0dXJuITE7YSYmIiI9PT1wLnBvc3RhbCYmKHAucG9zdGFsPWEucG9zdGFsKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiL3Byb3h5X3NkMmMvc2VydmljZS9kMmMuZW5jcnlwdGlvbi5zZXQiLGRhdGE6e2RhdGE6SlNPTi5zdHJpbmdpZnkocCl9fSkuZG9uZShmdW5jdGlvbihoKXtoJiYobG9jYWxTdG9yYWdlLnNldEl0ZW0oImZvcm1GaWxsRGF0YSIsaC5kYXRhKSxrKCkpfSl9fX0oKTsKLyoqIC9tL2pzL2poYXNodGFibGUuanMgKiovCnZhciBfX19kMmNfamhhc2h0YWJsZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDc6MDciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM1OjE5IjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIzLTAxLTEyIDExOjMzOjQ5IjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQzOjMzIjsidXNlIHN0cmljdCI7X19fZDJjX2poYXNodGFibGVqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQwOjEzIjsidXNlIHN0cmljdCI7CnZhciBIYXNodGFibGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB1KGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4gYTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5oYXNoQ29kZSlyZXR1cm4gYT1hLmhhc2hDb2RlKCksInN0cmluZyI9PXR5cGVvZiBhP2E6dShhKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS50b1N0cmluZylyZXR1cm4gYS50b1N0cmluZygpO3RyeXtyZXR1cm4gU3RyaW5nKGEpfWNhdGNoKGMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9fWZ1bmN0aW9uIEIoYSxjKXtyZXR1cm4gYS5lcXVhbHMoYyl9ZnVuY3Rpb24gQyhhLGMpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjLmVxdWFscz9jLmVxdWFscyhhKTphPT09Y31mdW5jdGlvbiB2KGEpe3JldHVybiBmdW5jdGlvbihjKXtpZihudWxsPT09Yyl0aHJvdyBFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK2EpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYyl0aHJvdyBFcnJvcihhKwoiIG11c3Qgbm90IGJlIHVuZGVmaW5lZCIpO319ZnVuY3Rpb24gcShhLGMsaCxkKXt0aGlzWzBdPWE7dGhpcy5lbnRyaWVzPVtdO3RoaXMuYWRkRW50cnkoYyxoKTtudWxsIT09ZCYmKHRoaXMuZ2V0RXF1YWxpdHlGdW5jdGlvbj1mdW5jdGlvbigpe3JldHVybiBkfSl9ZnVuY3Rpb24gcihhKXtyZXR1cm4gZnVuY3Rpb24oYyl7Zm9yKHZhciBoPXRoaXMuZW50cmllcy5sZW5ndGgsZCxrPXRoaXMuZ2V0RXF1YWxpdHlGdW5jdGlvbihjKTtoLS07KWlmKGQ9dGhpcy5lbnRyaWVzW2hdLGsoYyxkWzBdKSlzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiEwO2Nhc2UgMTpyZXR1cm4gZDtjYXNlIDI6cmV0dXJuW2gsZFsxXV19cmV0dXJuITF9fWZ1bmN0aW9uIHcoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2Zvcih2YXIgaD1jLmxlbmd0aCxkPTAsaz10aGlzLmVudHJpZXMubGVuZ3RoO2Q8azsrK2QpY1toK2RdPXRoaXMuZW50cmllc1tkXVthXX19ZnVuY3Rpb24gbShhLGMpe3JldHVybihhPWFbY10pJiYKYSBpbnN0YW5jZW9mIHE\/YTpudWxsfWZ1bmN0aW9uIHgoYSxjKXt2YXIgaD10aGlzLGQ9W10saz17fSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2E6dSxEPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2M6bnVsbDt0aGlzLnB1dD1mdW5jdGlvbihiLGUpe3AoYik7eShlKTt2YXIgZj1uKGIpLGcsbD1udWxsOyhnPW0oayxmKSk\/KGY9Zy5nZXRFbnRyeUZvcktleShiKSk\/KGw9ZlsxXSxmWzFdPWUpOmcuYWRkRW50cnkoYixlKTooZz1uZXcgcShmLGIsZSxEKSxkW2QubGVuZ3RoXT1nLGtbZl09Zyk7cmV0dXJuIGx9O3RoaXMuZ2V0PWZ1bmN0aW9uKGIpe3AoYik7dmFyIGU9bihiKTtpZihlPW0oayxlKSlpZihiPWUuZ2V0RW50cnlGb3JLZXkoYikpcmV0dXJuIGJbMV07cmV0dXJuIG51bGx9O3RoaXMuY29udGFpbnNLZXk9ZnVuY3Rpb24oYil7cChiKTt2YXIgZT1uKGIpO3JldHVybihlPW0oayxlKSk\/ZS5jb250YWluc0tleShiKTohMX07dGhpcy5jb250YWluc1ZhbHVlPWZ1bmN0aW9uKGIpe3koYik7CmZvcih2YXIgZT1kLmxlbmd0aDtlLS07KWlmKGRbZV0uY29udGFpbnNWYWx1ZShiKSlyZXR1cm4hMDtyZXR1cm4hMX07dGhpcy5jbGVhcj1mdW5jdGlvbigpe2QubGVuZ3RoPTA7az17fX07dGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIWQubGVuZ3RofTt2YXIgdD1mdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sZj1kLmxlbmd0aDtmLS07KWRbZl1bYl0oZSk7cmV0dXJuIGV9fTt0aGlzLmtleXM9dCgia2V5cyIpO3RoaXMudmFsdWVzPXQoInZhbHVlcyIpO3RoaXMuZW50cmllcz10KCJnZXRFbnRyaWVzIik7dGhpcy5yZW1vdmU9ZnVuY3Rpb24oYil7cChiKTt2YXIgZT1uKGIpLGY9bnVsbCxnPW0oayxlKTtpZihnJiYoZj1nLnJlbW92ZUVudHJ5Rm9yS2V5KGIpLG51bGwhPT1mJiYhZy5lbnRyaWVzLmxlbmd0aCkpe2E6e2ZvcihiPWQubGVuZ3RoO2ItLTspaWYoZz1kW2JdLGU9PT1nWzBdKWJyZWFrIGE7Yj1udWxsfXooZCxiKTtkZWxldGUga1tlXX1yZXR1cm4gZn07CnRoaXMuc2l6ZT1mdW5jdGlvbigpe2Zvcih2YXIgYj0wLGU9ZC5sZW5ndGg7ZS0tOyliKz1kW2VdLmVudHJpZXMubGVuZ3RoO3JldHVybiBifTt0aGlzLmVhY2g9ZnVuY3Rpb24oYil7Zm9yKHZhciBlPWguZW50cmllcygpLGY9ZS5sZW5ndGgsZztmLS07KWc9ZVtmXSxiKGdbMF0sZ1sxXSl9O3RoaXMucHV0QWxsPWZ1bmN0aW9uKGIsZSl7Yj1iLmVudHJpZXMoKTtmb3IodmFyIGYsZyxsLEE9Yi5sZW5ndGgsRT0iZnVuY3Rpb24iPT10eXBlb2YgZTtBLS07KWY9YltBXSxnPWZbMF0sZj1mWzFdLEUmJihsPWguZ2V0KGcpKSYmKGY9ZShnLGwsZikpLGgucHV0KGcsZil9O3RoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgeChhLGMpO2IucHV0QWxsKGgpO3JldHVybiBifX12YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkucHJvdG90eXBlLnNwbGljZT9mdW5jdGlvbihhLGMpe2Euc3BsaWNlKGMsMSl9OmZ1bmN0aW9uKGEsYyl7dmFyIGg7aWYoYz09PWEubGVuZ3RoLTEpYS5sZW5ndGg9CmM7ZWxzZXt2YXIgZD1hLnNsaWNlKGMrMSk7YS5sZW5ndGg9Yzt2YXIgaz0wO2ZvcihoPWQubGVuZ3RoO2s8aDsrK2spYVtjK2tdPWRba119fSxwPXYoImtleSIpLHk9digidmFsdWUiKTtxLnByb3RvdHlwZT17Z2V0RXF1YWxpdHlGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYS5lcXVhbHM\/QjpDfSxnZXRFbnRyeUZvcktleTpyKDEpLGdldEVudHJ5QW5kSW5kZXhGb3JLZXk6cigyKSxyZW1vdmVFbnRyeUZvcktleTpmdW5jdGlvbihhKXtyZXR1cm4oYT10aGlzLmdldEVudHJ5QW5kSW5kZXhGb3JLZXkoYSkpPyh6KHRoaXMuZW50cmllcyxhWzBdKSxhWzFdKTpudWxsfSxhZGRFbnRyeTpmdW5jdGlvbihhLGMpe3RoaXMuZW50cmllc1t0aGlzLmVudHJpZXMubGVuZ3RoXT1bYSxjXX0sa2V5czp3KDApLHZhbHVlczp3KDEpLGdldEVudHJpZXM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWEubGVuZ3RoLGg9MCxkPXRoaXMuZW50cmllcy5sZW5ndGg7aDxkOysraClhW2MrCmhdPXRoaXMuZW50cmllc1toXS5zbGljZSgwKX0sY29udGFpbnNLZXk6cigwKSxjb250YWluc1ZhbHVlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYz10aGlzLmVudHJpZXMubGVuZ3RoO2MtLTspaWYoYT09PXRoaXMuZW50cmllc1tjXVsxXSlyZXR1cm4hMDtyZXR1cm4hMX19O3JldHVybiB4fSgpOwovKiogL20vanMvbmV3Y2Fycy5qcyAqKi8KdmFyIF9fX2QyY19uZXdjYXJzanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxNDoxMiI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsZSl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09ZS52YWx1ZTtyZXR1cm4gYX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgZT1hW2JdO2lmKGUmJmUuTWF0aD09TWF0aClyZXR1cm4gZX10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGU9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl07aWYobnVsbD09ZSlyZXR1cm4gYVtiXTtlPWFbZV07cmV0dXJuIHZvaWQgMCE9PWU\/ZTphW2JdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGEsYixlLGcpe2ImJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChhLGIsZSxnKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChhLGIsZSxnKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihhLGIsZSxnKXtlPSRqc2NvbXAuZ2xvYmFsO2E9YS5zcGxpdCgiLiIpO2ZvcihnPTA7ZzxhLmxlbmd0aC0xO2crKyl7dmFyIGg9YVtnXTtpZighKGggaW4gZSkpcmV0dXJuO2U9ZVtoXX1hPWFbYS5sZW5ndGgtMV07Zz1lW2FdO2I9YihnKTtiIT1nJiZudWxsIT1iJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihhLGIsZSxnKXt2YXIgaD1hLnNwbGl0KCIuIik7YT0xPT09aC5sZW5ndGg7Zz1oWzBdO2c9IWEmJmcgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBuPTA7bjxoLmxlbmd0aC0xO24rKyl7dmFyIHQ9aFtuXTtpZighKHQgaW4gZykpcmV0dXJuO2c9Z1t0XX1oPWhbaC5sZW5ndGgtMV07ZT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09ZT9nW2hdOm51bGw7Yj1iKGUpO251bGwhPWImJihhPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsaCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09ZSYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdJiYoZT0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woaCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrZSsiJCIraCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShnLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYT17YTohMH0sYj17fTt0cnl7cmV0dXJuIGIuX19wcm90b19fPWEsYi5hfWNhdGNoKGUpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihhKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGEpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMueWllbGRSZXN1bHQ9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjphLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YjtyZXR1cm57dmFsdWU6YX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGEsYil7YT0kanNjb21wLm1ha2VJdGVyYXRvcihhKTt2YXIgZT1hLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhlKTtpZihlLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1lLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YjtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWEsdGhpcy55aWVsZChlLnZhbHVlLGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGEpe3RoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSxiKXt0aGlzLmNhdGNoQWRkcmVzc189YTt2b2lkIDAhPWImJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1iKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWE7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7YT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYixlKXtlP3RoaXMuZmluYWxseUNvbnRleHRzX1tlXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYil7Yj10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGJ8fDApWzBdO2lmKGI9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxiKXtpZihiLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWIuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxiLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1iLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0Xz1hO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBiIGluIGEpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGIpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGEgaW4gdGhpcy5vYmplY3RfKXJldHVybiBhfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1hfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYj10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGIpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGI\/YlsicmV0dXJuIl06ZnVuY3Rpb24oZSl7cmV0dXJue3ZhbHVlOmUsZG9uZTohMH19LGEsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYSxiLGUpe3RyeXt2YXIgZz1hLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxiKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhnKTtpZighZy5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZzt2YXIgaD1nLnZhbHVlfWNhdGNoKG4pe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18obiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7ZS5jYWxsKHRoaXMuY29udGV4dF8saCk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGEpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6YS52YWx1ZSxkb25lOiExfX1jYXRjaChiKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhiKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7YT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihhLmlzRXhjZXB0aW9uKXRocm93IGEuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTphLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7cmV0dXJuIGEubmV4dF8oYil9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7cmV0dXJuIGEudGhyb3dfKGIpfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gYS5yZXR1cm5fKGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihhLGIpe2I9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmEucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZyl7cmV0dXJuIGEubmV4dChnKX1mdW5jdGlvbiBlKGcpe3JldHVybiBhLnRocm93KGcpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihnLGgpe2Z1bmN0aW9uIG4odCl7dC5kb25lP2codC52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKHQudmFsdWUpLnRoZW4oYixlKS50aGVuKG4saCl9bihhLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihhKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpKX07CmxldCAkanNjb21wJG9wdGNoYWluJHRtcDE5MzczODk4NTkkMDsKbmV3Q2Fycz17aXNNb2JpbGU6IjEiPT09KG51bGw9PSgkanNjb21wJG9wdGNoYWluJHRtcDE5MzczODk4NTkkMD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaXNNb2JpbGUiKSk\/dm9pZCAwOiRqc2NvbXAkb3B0Y2hhaW4kdG1wMTkzNzM4OTg1OSQwLnZhbHVlKSxjb250YWluZXI6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld2NhckNvbnRhaW5lciIpLHJlc2l6ZU1haW5XaW5kb3c6ZnVuY3Rpb24oKXtpZighbmV3Q2Fycy5pc01vYmlsZSl7dmFyIGE9JCgiI3JpZ2h0U2lkZSIpLmhlaWdodCgpLTM1LGI9JCgiI25ld2NhckNvbnRhaW5lciIpLmhlaWdodCgpOyFpc05hTihhKSYmIWlzTmFOKGIpJiZhPmImJigkKCIjbmV3Y2FyQ29udGFpbmVyIikuaGVpZ2h0KGEpLCQoIiNmb290ZXJEaXYiKS5jc3MoInBhZGRpbmciLCIwcHgiKSl9fSxzZXRQYXltZW50VG9vbHRpcHM6KCk9PntuZXdDYXJzLmlzTW9iaWxlPyQoIi5kaXZDYXJzQm94V3JhcHBlciIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoIi5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudEluZm9CdWJibGUgLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgYT0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpOwokKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmEsZ3Jhdml0eToiZWFzdCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJjbGljayIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9Y2F0Y2goYil7fX0pfSk6JCgiLmRpdkNhcnNCb3hXcmFwcGVyIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuZmluZCgiLmRpdkNhclNpbmdsZU91dGVyQm94Iikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oYSl7dHJ5e2lmKCQodGhpcykuZGF0YSgidG9vbHRpcENyZWF0ZWQiKSlyZXR1cm4hMTskKHRoaXMpLmRhdGEoInRvb2x0aXBDcmVhdGVkIiwxKTskKHRoaXMpLmZpbmQoIi5kaXZDYXJQYXltZW50Q29udGFpbmVyVG9vbHRpcCIpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJ3ZXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX1jYXRjaChiKXt9fSl9KX0sbmV3Q2Fyc0ZpbHRlcjooKT0+e2Z1bmN0aW9uIGEoKXt2YXIgYz0kKCIuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIikubWFwKGZ1bmN0aW9uKGQsCmYpe3JldHVybiBwYXJzZUludCgkKGYpLmF0dHIoIm5iVmlzaWJsZSIpKX0pLmdldCgpLnJlZHVjZShmdW5jdGlvbihkLGYpe3JldHVybiBkK2Z9LDApO3JldHVybntmaWx0ZXJzOntzdGF0dXM6Ik5ldyIsYm9keVN0eWxlOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suY2F0ZWdvcnkiKS5tYXAoZnVuY3Rpb24oZCxmKXtyZXR1cm4gJChmKS52YWwoKX0pLmdldCgpLGZ1ZWxUeXBlOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suZnVlbHR5cGUiKS5tYXAoZnVuY3Rpb24oZCxmKXtyZXR1cm4gJChmKS5kYXRhKCJlc3NlbmNlIil9KS5nZXQoKSxkcml2ZVRyYWluOiQoImlucHV0OmNoZWNrZWQuZmlsdGVyQ2hlY2suZHJpdmV0cmFpbiIpLm1hcChmdW5jdGlvbihkLGYpe3JldHVybiAkKGYpLmRhdGEoImRyaXZldHJhaW4iKX0pLmdldCgpLG1heFByaWNlOnAubWF4LG1pblByaWNlOnAubWlufSx2ZWhpY2xlQ291bnQ6Y319dmFyIGI9ITE7dHJ5eyJ1bmRlZmluZWQiPT1qUXVlcnkuYnJvd3Nlci5tc2llPwpiPSEwOjk8PXBhcnNlSW50KGpRdWVyeS5icm93c2VyLnZlcnNpb24sMTApJiYoYj0hMCl9Y2F0Y2goYyl7fWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgYm94QmxvY2tzfHwxPmJveEJsb2Nrcy5sZW5ndGgpYj0hMTstMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCJjYW1pb25zLWNvbW1lcmNpYXV4IikmJihiPSExKTtpZihiKXt2YXIgZT1uZXdDYXJzLmdldEZpbHRlcigpO2I9Z2V0VXJsVmFycygpO3ZhciBnPWIuaGFzT3duUHJvcGVydHkoImJvZHkiKSxoPWIuaGFzT3duUHJvcGVydHkoImZ1ZWwiKTtuZXdDYXJzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuZmlsdGVyQ2hlY2siKS5mb3JFYWNoKGM9PntnJiZjLmNsYXNzTGlzdC5jb250YWlucygiY2F0ZWdvcnkiKXx8aCYmYy5jbGFzc0xpc3QuY29udGFpbnMoImZ1ZWx0eXBlIil8fChjLmNoZWNrZWQ9IWUuaGFzT3duUHJvcGVydHkoYy5pZCl8fCEwPT09ZVtjLmlkXSl9KTskKCIjZmlsdGVyTWFpbkJveCIpLnNob3coKTsKZm9yKHZhciBuIGluIGJveEJsb2Nrcyl7Yj0wO2Zvcih2YXIgdCBpbiBib3hCbG9ja3Nbbl0pYisrOyQoIiNjbGFzcyIrbisiX2NvbnRhaW5lciIpLmF0dHIoIm5iVmlzaWJsZSIsYil9JCgiLmZpbHRlckNoZWNrIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBjPSQodGhpcyk7bmV3Q2Fycy5zZXRGaWx0ZXIoYy5hdHRyKCJpZCIpLGMuaXMoIjpjaGVja2VkIikpO3NldFRpbWVvdXQoeCwxMDApO2lmKGMuaGFzQ2xhc3MoImNhdGVnb3J5Iikpe3ZhciBkPWMudmFsKCk7c2V0VGltZW91dChmdW5jdGlvbigpe0IoZCl9LDEwMCl9fSk7JCgiLnJhZGlvU29ydCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtDKCQodGhpcykudmFsKCkpfSk7JCgiLmZpbHRlclNwYW4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGM9JCh0aGlzKTtuZXdDYXJzLnNldEZpbHRlcigiZmlsdGVyU3BhbiIsYy5hdHRyKCJyZWwiKSk7Yz0iIyIrYy5hdHRyKCJyZWwiKTskKGMpLnRyaWdnZXIoImNsaWNrIil9KTsKdmFyIHk9IiIsdz0iIixHPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMuY29uc289PWQuY29uc28\/MDpjLmNvbnNvPmQuY29uc28\/MTotMX0sSD1mdW5jdGlvbihjLGQpe3JldHVybiBjLmNvbnNvPT1kLmNvbnNvPzA6Yy5jb25zbz5kLmNvbnNvPy0xOjF9LEk9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYy5wcmljZT09ZC5wcmljZT8wOmMucHJpY2U+ZC5wcmljZT8xOi0xfSxKPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMucHJpY2U9PWQucHJpY2U\/MDpjLnByaWNlPmQucHJpY2U\/LTE6MX0sSz1mdW5jdGlvbihjLGQpe3JldHVybiBjLmNhck1vZGVsPT1kLmNhck1vZGVsP2MueWVhcj5kLnllYXI\/LTE6Yy55ZWFyPGQueWVhcj8xOjA6Yy5jYXJNb2RlbD5kLmNhck1vZGVsPzE6LTF9LEM9ZnVuY3Rpb24oYyxkKXt3PSJ1bmRlZmluZWQiIT09dHlwZW9mIGQ\/ZDp5PT1jPyJBc2MiPT13PyJEZXNjIjoiQXNjIjoiQXNjIjt5PWM7bmV3Q2Fycy5zZXRGaWx0ZXIoInNvcnRCeSIseSk7bmV3Q2Fycy5zZXRGaWx0ZXIoInNvcnREaXIiLAp3KTtmb3IodmFyIGYgaW4gYm94QmxvY2tzKXtjPTE7ZD1bXTtmb3IodmFyIG0gaW4gYm94QmxvY2tzW2ZdKXt2YXIgbD1ib3hCbG9ja3NbZl1bbV07bC52aXNpYmxlJiYoZFtkLmxlbmd0aF09bCl9c3dpdGNoKHkpe2Nhc2UgInByaWNlIjoiQXNjIj09dz9kLnNvcnQoSSk6ZC5zb3J0KEopO2JyZWFrO2Nhc2UgIm1vZGVsIjpkLnNvcnQoSyk7YnJlYWs7Y2FzZSAiY29uc28iOiJBc2MiPT13P2Quc29ydChHKTpkLnNvcnQoSCl9ZC5zb3J0KGZ1bmN0aW9uKGssdSl7cmV0dXJuIGsuc3BlY2lhbE9yZGVyPT11LnNwZWNpYWxPcmRlcj8wOmsuc3BlY2lhbE9yZGVyPnUuc3BlY2lhbE9yZGVyPzE6LTF9KTtmb3IobD0wO2w8ZC5sZW5ndGg7bCsrKWRbbF0udmlzaWJsZSYmKGRbbF0ucG9zaXRpb24hPWwrMSYmKGRbbF0ucG9zaXRpb249bCsxLEEoZiwiZmJ4XyIrZisiXyIrZFtsXS5pZCwibW92ZSIsbCsxKSksYysrKX19LEw9ZnVuY3Rpb24oKXtmb3IodmFyIGMgaW4gYm94QmxvY2tzKXt2YXIgZD0KMSxmO2ZvcihmIGluIGJveEJsb2Nrc1tjXSl7dmFyIG09Ym94QmxvY2tzW2NdW2ZdO20udmlzaWJsZSYmbS5wb3NpdGlvbiE9ZCYmKG0ucG9zaXRpb249ZCxBKGMsZiwibW92ZSIsZCkpO0EoYyxmLG0udmlzaWJsZT8ic2hvdyI6ImhpZGUiKTttLnZpc2libGUmJmQrK30kKCIjY2xhc3MiK2MrIl9jb250YWluZXIiKS5hdHRyKCJuYlZpc2libGUiLGQtMSl9fSxEPWZ1bmN0aW9uKGMsZCl7Zm9yKHZhciBmPTAsbT0xO208ZDttKyspe3ZhciBsPSQoIiMiK2MrbSk7MDxsLmxlbmd0aCYmbC5wcm9wKCJjaGVja2VkIikmJihmKz1NYXRoLnBvdygyLG0tMSkpfXJldHVybiBmfSx4PWZ1bmN0aW9uKCl7dmFyIGM9RCgiZmlsdGVyRXNzZW5jZUNoZWNrIiw2KSxkPUQoImZpbHRlckRyaXZlVHJhaW5DaGVjayIsNCksZj1bXSxtPVtdOyQoIi5maWx0ZXJDaGVjay5jYXRlZ29yeSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmlzKCI6Y2hlY2tlZCIpJiZmLnB1c2goJCh0aGlzKS52YWwoKSl9KTt2YXIgbD0KITE7MDwkKCIuZmlsdGVyQ2hlY2suY2FyTWFrZSIpLmxlbmd0aCYmKCQoIi5maWx0ZXJDaGVjay5jYXJNYWtlIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuaXMoIjpjaGVja2VkIikmJm0ucHVzaCgkKHRoaXMpLnZhbCgpKX0pLGw9ITApO2Zvcih2YXIgayBpbiBib3hCbG9ja3Mpe3ZhciB1PTAscTtmb3IocSBpbiBib3hCbG9ja3Nba10pe3ZhciBNPXBhcnNlSW50KGJveEJsb2Nrc1trXVtxXS5mdWVsLDEwKSx2PSExO3Y9KHY9KHY9KHY9KHY9IShwYXJzZUludChib3hCbG9ja3Nba11bcV0uZHJpdmV0cmFpbiwxMCkmZCkpfHwhKE0mYykpfHwhKCFib3hCbG9ja3Nba11bcV0uY2FyQ2F0ZWdvcnl8fC0xPCQuaW5BcnJheShib3hCbG9ja3Nba11bcV0uY2FyQ2F0ZWdvcnksZikpKXx8ISghMT09PWx8fC0xPCQuaW5BcnJheShib3hCbG9ja3Nba11bcV0uY2FyTWFrZSxtKSYmbCkpfHwhKDA9PWJveEJsb2Nrc1trXVtxXS5wcmljZXx8Ym94QmxvY2tzW2tdW3FdLnByaWNlPD1wLm1heCYmCmJveEJsb2Nrc1trXVtxXS5wcmljZT49cC5taW4pO2JveEJsb2Nrc1trXVtxXS52aXNpYmxlPSF2O2JveEJsb2Nrc1trXVtxXS52aXNpYmxlJiZ1Kyt9JCgiI2NsYXNzIitrKyJfY29udGFpbmVyIikuYXR0cigibmJWaXNpYmxlIix1KTtCKGspfUwoKTsiMSI9PT0kKCJib2R5IikuZGF0YSgiZmlsdGVyczpsb2FkIikmJiQoImJvZHkiKS50cmlnZ2VyKCQuZXh0ZW5kKHt0eXBlOiJmaWx0ZXJzOmNoYW5nZSJ9LGEoKSkpfSxCPWZ1bmN0aW9uKGMpe3ZhciBkPSQoIiNjbGFzcyIrYysiX2NvbnRhaW5lciIpO2lmKDA8ZC5sZW5ndGgpe3ZhciBmPSQoIiNzaG93Q2xhc3NfIitjKTswPT09Zi5sZW5ndGgmJihmPSQoJ2lucHV0W2RhdGEtZXNzZW5jZT0iJytjKyciXScpKTtmPWYuaXMoIjpjaGVja2VkIik7MDxwYXJzZUludChkLmF0dHIoIm5iVmlzaWJsZSIpLDEwKT8oZiYmKGQuYXR0cigic3RhdGUiLCJvcGVuIiksZC5mYWRlSW4oNjAwKSxuZXdDYXJzLmlzTW9iaWxlfHwoZj1NYXRoLmNlaWwocGFyc2VJbnQoZC5hdHRyKCJuYlZpc2libGUiKSwKMTApLzMpLCQoIi5DTEFTU18iK2MpLmFuaW1hdGUoe2hlaWdodDpyLmhlaWdodCpmKyJweCJ9LDYwMCkpLGY9ITApLGZ8fEUoZCkpOkUoZCl9fSxFPWZ1bmN0aW9uKGMpe2MuYXR0cigic3RhdGUiLCJjbG9zZSIpO2MuZmFkZU91dCg2MDApO3JldHVybiEwfSxBPWZ1bmN0aW9uKGMsZCxmLG0sbCl7aWYoImhpZGUiPT1mKSQoIiMiK2QpLmFuaW1hdGUoe29wYWNpdHk6MH0sNjAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJpcy1ib3gtdmlzaWJsZSIsMCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KSxib3hCbG9ja3NbY11bZF0udmlzaWJsZT0hMSxzaXRlUGFnZS5pc01vYmlsZSYmKG5ld0NhcnMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke2R9YCkuaGlkZGVuPSEwKTtlbHNlIGlmKCJzaG93Ij09ZikkKCIjIitkKS5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIikuYW5pbWF0ZSh7b3BhY2l0eToxfSw2MDAsZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoImlzLWJveC12aXNpYmxlIiwKMSl9KSxib3hCbG9ja3NbY11bZF0udmlzaWJsZT0hMCxzaXRlUGFnZS5pc01vYmlsZSYmKG5ld0NhcnMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke2R9YCkuaGlkZGVuPSExKTtlbHNlIGlmKCFzaXRlUGFnZS5pc01vYmlsZSl7dmFyIGs9JCgiLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIikud2lkdGgoKTtjPU1hdGguZmxvb3Ioay9yLndpZHRoKTtmPWJveFBvc2l0aW9uc1tkXTtrPU1hdGguZmxvb3Ioay9jKTtjPXtsZWZ0OiIrPSIrKChtLTEpJWMqay0oZi0xKSVjKmspKyJweCIsdG9wOiIrPSIrKE1hdGguZmxvb3IoKG0tMSkvYykqci5oZWlnaHQtTWF0aC5mbG9vcigoZi0xKS9jKSpyLmhlaWdodCkrInB4In07dm9pZCAwPT1sPyQoIiMiK2QpLmFkZENsYXNzKCJNb3ZpbmdCb3giKS5hbmltYXRlKGMsNjAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygiTW92aW5nQm94Iil9KTokKCIjIitkKS5hZGRDbGFzcygiTW92aW5nQm94IikuYW5pbWF0ZShjLDYwMCxmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlQ2xhc3MoIk1vdmluZ0JveCIpOwpldmFsKGwpfSk7Ym94UG9zaXRpb25zW2RdPW19fSxGPWZ1bmN0aW9uKCl7dmFyIGM9e3dpZHRoOjAsaGVpZ2h0OjB9OyQoJy5kaXZDYXJTaW5nbGVPdXRlckJveFtpcy1ib3gtdmlzaWJsZT0iMSJdOmZpcnN0JykuZWFjaChmdW5jdGlvbigpe2Mud2lkdGg9JCh0aGlzKS5vdXRlcldpZHRoKCEwKTtjLmhlaWdodD0kKHRoaXMpLm91dGVySGVpZ2h0KCEwKX0pO3JldHVybiBjfSx6PTk2MDskKCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKS5hdHRyKCJpcy1ib3gtdmlzaWJsZSIsMSk7dmFyIHI9RigpOzA8JCgiQk9EWS5pc0Z1bGxXaWR0aFBhZ2UiKS5sZW5ndGgmJjA8JCgiQk9EWS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIikubGVuZ3RoJiYoMTMwMDx3aW5kb3cuaW5uZXJXaWR0aCYmKHo9MTIwMCksJCh3aW5kb3cpLm9uKCJyZXNpemUiLGZ1bmN0aW9uKCl7dmFyIGM9ejt6PTEzMDA8d2luZG93LmlubmVyV2lkdGg\/MTIwMDo5NjA7YyE9eiYmc2V0VGltZW91dChmdW5jdGlvbigpe04oKX0pfSkpOwp2YXIgTj1mdW5jdGlvbigpe3ZhciBjPXI7cj1GKCk7JCgiLmRpdkNhcnNCb3hXcmFwcGVyIikuZWFjaChmdW5jdGlvbigpe3ZhciBkPTA7JCh0aGlzKS5maW5kKCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGY9cGFyc2VJbnQoJCh0aGlzKS5jc3MoInRvcCIpKSxtPXBhcnNlSW50KCQodGhpcykuY3NzKCJsZWZ0IikpOzA9PT1mJiYwPT09bXx8JCh0aGlzKS5jc3Moe3RvcDpyLmhlaWdodCooZi9wYXJzZUludChjLmhlaWdodCkpKyJweCJ9KS5jc3Moe2xlZnQ6ci53aWR0aCoobS9wYXJzZUludChjLndpZHRoKSkrInB4In0pOzE9PT1wYXJzZUludCgkKHRoaXMpLmF0dHIoImlzLWJveC12aXNpYmxlIikpJiZkKyt9KTtkJiYkKHRoaXMpLmNzcyh7aGVpZ2h0Ok1hdGguZmxvb3IoZC8zKSpyLmhlaWdodCsoZCUzP3IuaGVpZ2h0OjApKyJweCJ9KX0pfSxwPXttaW46MCxtYXg6MUU2fTsoZnVuY3Rpb24oKXt2YXIgYz0kKCIjcHJpY2VSYW5nZVNsaWRlckZpbHRlckNvbnRhaW5lciIpOwppZigwPGMubGVuZ3RoKXt2YXIgZD1jLmZpbmQoImRpdi5yYW5nZS1zbGlkZXIiKTtpZigwPGQubGVuZ3RoKXt2YXIgZj1udWxsLG09ZnVuY3Rpb24obCxrKXtwPXttaW46RDJDVXRpbHMuTnVtYmVyLnJvdW5kRG93bihrLnZhbHVlc1swXSwxRTMpLG1heDpEMkNVdGlscy5OdW1iZXIucm91bmRVcChrLnZhbHVlc1sxXSwxRTMpfTtudWxsIT09bCYmbmV3Q2Fycy5zZXRGaWx0ZXIoInNldFNob3dlZFZhbHVlcyIscC5taW4rIjoiK3AubWF4KTtjLmZpbmQoInNwYW4ucHJpY2UtbWluIikudGV4dChwLm1pbi50b0xvY2FsZVN0cmluZygpKTtjLmZpbmQoInNwYW4ucHJpY2UtbWF4IikudGV4dChwLm1heC50b0xvY2FsZVN0cmluZygpKTtjbGVhclRpbWVvdXQoZik7Zj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eCgpfSw1MDApfTtwPXttaW46RDJDVXRpbHMuTnVtYmVyLnJvdW5kRG93bihkLmF0dHIoImF0dHItcHJpY2UtbWluIikpLG1heDpEMkNVdGlscy5OdW1iZXIucm91bmREb3duKGQuYXR0cigiYXR0ci1wcmljZS1tYXgiKSl9OwpkLnNsaWRlcih7cmFuZ2U6ITAsbWluOnAubWluLG1heDpwLm1heCxzbGlkZTptLGNoYW5nZTptLGNyZWF0ZTpmdW5jdGlvbihsLGspe2w9bmV3Q2Fycy5nZXRGaWx0ZXIoKTtrPVtwLm1pbixwLm1heF07InN0cmluZyI9PT10eXBlb2YgbC5zZXRTaG93ZWRWYWx1ZXMmJihrPWwuc2V0U2hvd2VkVmFsdWVzLnNwbGl0KCI6IikpO2Quc2xpZGVyKCJ2YWx1ZXMiLGspO20obnVsbCx7dmFsdWVzOmt9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCgiYm9keSIpLnRyaWdnZXIoJC5leHRlbmQoe3R5cGU6ImZpbHRlcnM6bG9hZCJ9LGEoKSkpfSwzRTMpfX0pfX19KSgpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYz0kKCIjc29ydEJ5Iik7dmFyIGQ9JCgiI3NvcnREaXIiKSxmPSJtb2RlbCI7dmFyIG09IkFzYyI7dmFyIGw9e21vZGVsOiJyYWRpb01vZGxlIixwcmljZToicmFkaW9QcmljZSIsY29uc286InJhZGlvQ29uc28ifTtjLmxlbmd0aCYmZC5sZW5ndGgmJihmPWMudmFsKCksbT1kLnZhbCgpKTsKZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgbFtlLnNvcnRCeV0\/KGM9ZS5zb3J0QnksbT1lLnNvcnREaXIpOmM9Zjt0cnl7dmFyIGs9JCgiIyIrbFtjXSk7ay5sZW5ndGgmJmsucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKTtDKGMsbSl9Y2F0Y2godSl7fX0sNTAwKTtpZigkKCIjdG9nZ2xlRmlsdGVyQnRuIikubGVuZ3RoKSQoIiN0b2dnbGVGaWx0ZXJCdG4iKS5vbigiY2xpY2sgdGFwIixmdW5jdGlvbigpeyQoIiNzaWRlU2lkZWJhckZpbHRlciIpLmxlbmd0aCYmKCQoIiNzaWRlU2lkZWJhckZpbHRlciIpLmhhc0NsYXNzKCJvcGVuIik\/JCgiI3NpZGVTaWRlYmFyRmlsdGVyIikucmVtb3ZlQ2xhc3MoIm9wZW4iKTokKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5hZGRDbGFzcygib3BlbiIpKX0pO2lmKCQoIiNjbG9zZVNpZGViYXJCdG4iKS5sZW5ndGgpJCgiI2Nsb3NlU2lkZWJhckJ0biIpLm9uKCJjbGljayB0YXAiLGZ1bmN0aW9uKCl7JCgiI3NpZGVTaWRlYmFyRmlsdGVyIikubGVuZ3RoJiYKJCgiI3NpZGVTaWRlYmFyRmlsdGVyIikuaGFzQ2xhc3MoIm9wZW4iKSYmJCgiI3NpZGVTaWRlYmFyRmlsdGVyIikucmVtb3ZlQ2xhc3MoIm9wZW4iKX0pOyQoIi5zZWxlY3RUb2dnbGVXcmFwcGVyQ2FyTWFrZSIpLmxlbmd0aCYmKCQoIiNzZWxlY3RBbGxCdG5DYXJNYWtlIikub24oImNsaWNrIHRhcCIsZnVuY3Rpb24oKXskKCIuZmlsdGVyQ2hlY2suY2FyTWFrZSIpLnByb3AoImNoZWNrZWQiLCEwKTtzZXRUaW1lb3V0KHgsMTAwKX0pLCQoIiN1bnNlbGVjdEFsbEJ0bkNhck1ha2UiKS5vbigiY2xpY2sgdGFwIixmdW5jdGlvbigpeyQoIi5maWx0ZXJDaGVjay5jYXJNYWtlIikucHJvcCgiY2hlY2tlZCIsITEpO3NldFRpbWVvdXQoeCwxMDApfSkpfX0sc2V0RmlsdGVyOihhLGIpPT57dmFyIGU9e30sZz1fbG9jYWxTdG9yYWdlR2V0KCJuZXdTdnBGaWx0ZXIiKTtudWxsIT1nJiYib2JqZWN0IiE9dHlwZW9mIGcmJihlPUpTT04ucGFyc2UoZykpO2c9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwp2b2lkIDA9PWVbZ10mJihlW2ddPXt9KTtlW2ddW2FdPWI7X2xvY2FsU3RvcmFnZVNldCgibmV3U3ZwRmlsdGVyIixKU09OLnN0cmluZ2lmeShlKSl9LGdldEZpbHRlcjooKT0+e2xldCBhPSExO3ZhciBiPV9sb2NhbFN0b3JhZ2VHZXQoIm5ld1N2cEZpbHRlciIpO2xldCBlPXt9O251bGwhPWImJiJvYmplY3QiIT10eXBlb2YgYiYmKGU9SlNPTi5wYXJzZShiKSk7Yj13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7dm9pZCAwIT1lW2JdJiYoYT1lW2JdKTtyZXR1cm4gYX0sc2V0UHJpY2VUb29sVGlwczooKT0+e25ld0NhcnMuaXNNb2JpbGV8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiIpLmZvckVhY2goYT0+e2xldCBiPWEuZGF0YXNldC50b29sdGlwOyQoYSkuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6YixncmF2aXR5OiJ3ZXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX0pfSxzZXRFdmVudHM6KCk9Pgp7bmV3Q2Fycy5pc01vYmlsZXx8KCQoImltZ1tlcnJvcmltZ10iKS5vbigiZXJyb3IiLGZ1bmN0aW9uKCl7dGhpcy5zcmM9JCh0aGlzKS5hdHRyKCJlcnJvcmltZyIpfSksJCgiaW1nW211bHRpaW1nPXRydWVdIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoInNyYyIsJCh0aGlzKS5hdHRyKCJjb2xvcmltZyIpKX0pOyQodGhpcykub24oIm1vdXNlb3V0IixmdW5jdGlvbigpeyQodGhpcykuYXR0cigic3JjIiwkKHRoaXMpLmF0dHIoImJsYWNraW1nIikpfSl9KSl9LGdldEludmVudG9yeURhdGE6KCk9Pntjb25zdCBhPShiLGUpPT57bGV0IGc9IkZSRU5DSCI9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWx1ZT8iZnIiOiJlbiI7ZmV0Y2goYC8ke2d9L2FqYXgvZ2V0SW52ZW50b3J5RGF0YWAse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwKIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsiLGNoYXJzZXQ6IlVURi04In0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKGIpfSkudGhlbihoPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoJiYhMD09PWgub2smJjIwMD09aC5zdGF0dXMpcmV0dXJuIGguanNvbigpfSkudGhlbihoPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoLnN0YXR1cyYmInN1Y2Nlc3MiPT1oLnN0YXR1cyl7bGV0IG49aC5jb3VudDtoPWgudXJsO2xldCB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpblN0b2NrTGFiZWwiKS52YWx1ZTswPG4mJihlLnBhcmVudE5vZGUuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLGA8YSBocmVmPSIke2h9Ij4ke259ICR7dH08L2E+YCksZS5wYXJlbnROb2RlLmhpZGRlbj0hMSl9fSkuY2F0Y2goZnVuY3Rpb24oaCl7fSl9O2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W2RhdGEtdHlwZT0iaW52ZGF0YSJdJykuZm9yRWFjaChiPT4Ke2Eoe21ha2U6Yi5kYXRhc2V0Lm1ha2UsbW9kZWw6Yi5kYXRhc2V0Lm1vZGVsLHllYXI6Yi5kYXRhc2V0LnllYXIsc3R5bGVpZHM6Yi5kYXRhc2V0LnN0eWxlaWRzLGh5YnJpZDpiLmRhdGFzZXQuaHlicmlkfSxiKX0pfSxnZXRQYXltZW50RGF0YTooKT0+e2NvbnN0IGE9KGIsZSxnKT0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7dHJ5e2NvbnN0IGg9eWllbGQoeWllbGQgZmV0Y2goYC8ke2VuY29kZVVSSUNvbXBvbmVudChnKX0vYWpheC9nZXRTaG93cm9vbVBheW1lbnRIdG1sYCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IixjaGFyc2V0OiJVVEYtOCJ9LGJvZHk6bmV3IFVSTFNlYXJjaFBhcmFtcyhiKX0pKS5qc29uKCk7ZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi1ibG9jayIpLmhpZGRlbj0KITA7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoLnN0YXR1cyYmInN1Y2Nlc3MiPT1oLnN0YXR1cyl7bGV0IG49aC5jb250ZW50OzA8bi5sZW5ndGgmJihlLnBhcmVudE5vZGUuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLG4pLGUucGFyZW50Tm9kZS5oaWRkZW49ITEpfX1jYXRjaChoKXt9fSk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbZGF0YS10eXBlPSJwYXltZW50ZGF0YSJdJykuZm9yRWFjaChiPT57bGV0IGU9IkZSRU5DSCI9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWx1ZT8iZnIiOiJlbiI7YSh7c3R5bGVpZDpiLmRhdGFzZXQuc3R5bGVpZCx0aXRsZTpiLmRhdGFzZXQudGl0bGUsaHJlZjpiLmRhdGFzZXQuaHJlZixsaW5rU3R5bGU6Yi5kYXRhc2V0LmxpbmtzdHlsZSxsaW5rQ2xhc3M6Yi5kYXRhc2V0LmxpbmtjbGFzcyxjb250YWluZXJDbGFzczpiLmRhdGFzZXQuY29udGFpbmVyY2xhc3MscHJvbW9UZXh0OmIuZGF0YXNldC5wcm9tb3RleHQsCmxhbmc6ZX0sYixlKX0pfX07JCh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe25ld0NhcnMucmVzaXplTWFpbldpbmRvdygpfSk7ZG9jUmVhZHlBcnIucHVzaCgoKT0+e25ld0NhcnMuZ2V0UGF5bWVudERhdGEoKTtuZXdDYXJzLnNldFBheW1lbnRUb29sdGlwcygpO25ld0NhcnMuc2V0RXZlbnRzKCk7bmV3Q2Fycy5uZXdDYXJzRmlsdGVyKCk7bmV3Q2Fycy5zZXRQcmljZVRvb2xUaXBzKCk7bmV3Q2Fycy5nZXRJbnZlbnRvcnlEYXRhKCl9KTsKLyoqIC9tL2pzL2pxdWVyeS51aS50b3VjaC1wdW5jaC5taW4uanMgKiovCi8qIQogKiBqUXVlcnkgVUkgVG91Y2ggUHVuY2ggMC4yLjMKICoKICogQ29weXJpZ2h0IDIwMTHigJMyMDE0LCBEYXZlIEZ1cmZlcm8KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqCiAqIERlcGVuZHM6CiAqICBqcXVlcnkudWkud2lkZ2V0LmpzCiAqICBqcXVlcnkudWkubW91c2UuanMKICovCiFmdW5jdGlvbihhKXtmdW5jdGlvbiBmKGEsYil7aWYoIShhLm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGg+MSkpe2EucHJldmVudERlZmF1bHQoKTt2YXIgYz1hLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0sZD1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTtkLmluaXRNb3VzZUV2ZW50KGIsITAsITAsd2luZG93LDEsYy5zY3JlZW5YLGMuc2NyZWVuWSxjLmNsaWVudFgsYy5jbGllbnRZLCExLCExLCExLCExLDAsbnVsbCksYS50YXJnZXQuZGlzcGF0Y2hFdmVudChkKX19aWYoYS5zdXBwb3J0LnRvdWNoPSJvbnRvdWNoZW5kImluIGRvY3VtZW50LGEuc3VwcG9ydC50b3VjaCl7dmFyIGUsYj1hLnVpLm1vdXNlLnByb3RvdHlwZSxjPWIuX21vdXNlSW5pdCxkPWIuX21vdXNlRGVzdHJveTtiLl90b3VjaFN0YXJ0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7IWUmJmIuX21vdXNlQ2FwdHVyZShhLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pJiYoZT0hMCxiLl90b3VjaE1vdmVkPSExLGYoYSwibW91c2VvdmVyIiksZihhLCJtb3VzZW1vdmUiKSxmKGEsIm1vdXNlZG93biIpKX0sYi5fdG91Y2hNb3ZlPWZ1bmN0aW9uKGEpe2UmJih0aGlzLl90b3VjaE1vdmVkPSEwLGYoYSwibW91c2Vtb3ZlIikpfSxiLl90b3VjaEVuZD1mdW5jdGlvbihhKXtlJiYoZihhLCJtb3VzZXVwIiksZihhLCJtb3VzZW91dCIpLHRoaXMuX3RvdWNoTW92ZWR8fGYoYSwiY2xpY2siKSxlPSExKX0sYi5fbW91c2VJbml0PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcztiLmVsZW1lbnQub24oe3RvdWNoc3RhcnQ6YS5wcm94eShiLCJfdG91Y2hTdGFydCIpLHRvdWNobW92ZTphLnByb3h5KGIsIl90b3VjaE1vdmUiKSx0b3VjaGVuZDphLnByb3h5KGIsIl90b3VjaEVuZCIpfSksYy5jYWxsKGIpfSxiLl9tb3VzZURlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2IuZWxlbWVudC5vZmYoe3RvdWNoc3RhcnQ6YS5wcm94eShiLCJfdG91Y2hTdGFydCIpLHRvdWNobW92ZTphLnByb3h5KGIsIl90b3VjaE1vdmUiKSx0b3VjaGVuZDphLnByb3h5KGIsIl90b3VjaEVuZCIpfSksZC5jYWxsKGIpfX19KGpRdWVyeSk7LypFT0YqLzsKLyoqIC9tL2pzL3BheW1lbnRDYWxjdWxhdG9yLmpzICoqLwp2YXIgX19fZDJjX3BheW1lbnRDYWxjdWxhdG9yanNfY19vbj0iMjAyNi0wNC0wNiAxMjozMDowMyI7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIHBvcHVwQ2FsY3VsYXRvckluaXRpYWxpemVkKCl7ZnVuY3Rpb24gYSgpe2MmJmMuYWJvcnQoKTtjYWxjVXBkYXRlUGF5bWVudFhociYmKGNhbGNVcGRhdGVQYXltZW50WGhyLmFib3J0KCksY2FsY1VwZGF0ZVBheW1lbnRYaHI9bnVsbCk7dmFyIGQ9KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0UGF5bWVudERhdGFGb3JTdHlsZUlEP3dzd2lkdGg9MCIsYj1nZXRQb3BDb250YWluU2V0dGluZ3MoKSxnPWdldE9wdGlvbnNBbW91bnQoYikscj1nZXRBY2Nlc3Nvcmllc0Ftb3VudChiKTtsZXQgbT1nZXRTZWxlY3RlZEFjY2Vzc29yaWVzKGIpO3ZhciBuPWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudChiKSxwPWIuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWIubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8CiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSx3PWIuaGFzT3duUHJvcGVydHkoInN0b2NrTnVtYmVyIik\/Yi5zdG9ja051bWJlcjoiIix5PWIuaGFzT3duUHJvcGVydHkoInZpbiIpP2IudmluOiIiLHQ9cGFyc2VJbnQoJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKXx8MCk7aWYocCYmIXcpe3ZhciB2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXN0b2NrbnVtYmVyIik7diYmKHc9di52YWx1ZXx8IiIpfXAmJiF5JiYodj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJih5PXYudmFsdWV8fCIiKTtwJiYhYi5zdHlsZWlkJiYodj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlU3R5bGVJRCIpKSYmKGIuc3R5bGVpZD12LnZhbHVlfHxiLnN0eWxlaWQpO2lmKCJjYXNoIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIikpZW5hYmxlQ2FzaE9wdGlvbigpOwplbHNle3Y9cGFyc2VJbnQoJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCl8fDApK3Q7dmFyIEE9W107ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIpLmZvckVhY2goZnVuY3Rpb24ocSl7cS5jaGVja2VkJiYocT1xLmdldEF0dHJpYnV0ZSgiZGF0YS1jb25kaXRpb25hbC1yZWJhdGUtaWQiKSkmJkEucHVzaChxKX0pO3ZhciB4PW51bGw7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih4PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIikpO3ZhciB6PSQoIiNwYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKCk7IXomJngmJnhbM10mJih6PXhbM10pO3ZhciBmPSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpOyFmJiZ4JiYKeFswXSYmKGY9eFswXSk7ISQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCkmJngmJnhbMl0mJiQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKHhbMl0pO2M9JC5hamF4KHt1cmw6ZCx0eXBlOiJQT1NUIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7c3R5bGVpZDpiLnN0eWxlaWQscGF5bWVudFR5cGU6Zixkb3ducGF5bWVudDp2LG9wdGlvbnNBbW91bnQ6ZyxwYXltZW50RnJlcXVlbmN5OiQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCksa21BbGxvd2FuY2U6eixvcHRpb25zOmcsaXNJbnZlbnRvcnk6cCxzbjp3LHZpbjp5LGNvbmRpdGlvbmFsUmViYXRlSWRzOkEuam9pbigiLCIpLGFjY2Vzc29yaWVzOnIsc2VsZWN0ZWRBY2Nlc3NvcmllczptLHByb3RlY3Rpb25QbGFuczpufSxzdWNjZXNzOmZ1bmN0aW9uKHEpe3EuY3VycmVudFBheW1lbnQmJnEuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwodCksCmY9ImxlYXNlIj09PWY\/ImxlYXNpbmciOiJmaW5hbmNlIj09PWY\/ImZpbmFuY2luZyI6ZiwiY2FzaCI9PT1mJiYoJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpKSxxLmN1cnJlbnRQYXltZW50JiYwIT09cS5jdXJyZW50UGF5bWVudC5sZW5ndGh8fCJjYXNoIj09PWY\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5zaG93KCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwKITEpLHEuY3VycmVudFBheW1lbnQmJjA8cS5jdXJyZW50UGF5bWVudC5sZW5ndGgmJigkKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbChxLmN1cnJlbnRQYXltZW50WzBdLmludGVydmFsKSxmPWZ8fCgibGVhc2UiPT09cS5jdXJyZW50UGF5bWVudFswXS50eXBlPyJsZWFzaW5nIjoiZmluYW5jaW5nIikpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCEwKSwkKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5zaG93KCkpLHNob3dIaWRlUGF5bWVudFNlY3Rpb24ocSxmKSwwPj0kKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSBvcHRpb24iKS5sZW5ndGgmJgpwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bihxKSwibGVhc2luZyI9PWY\/JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5zaG93KCk6JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCksZ2V0Q2FzaFByaWNlQmxvY2socSksImNhc2giPT09Zj9lbmFibGVDYXNoT3B0aW9uKCk6KHEuY3VycmVudFBheW1lbnQmJnEuY3VycmVudFBheW1lbnQubGVuZ3RoJiZzaG93UGF5bWVudHMocS5jdXJyZW50UGF5bWVudCxxLnBheW1lbnRGZWVzLHEubWFrZWlkLHEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaz0kKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il06Y2hlY2tlZCcpO2subGVuZ3RoJiYiTkVXQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJiJVU0VEQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJihrPXtjdXJyZW50UGF5bWVudDprLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKSwKY3VycmVudFJhdGU6ay5hdHRyKCJkYXRhLXJhdGUiKSxwYXltZW50VGVybTprLnZhbCgpLHBheW1lbnRUeXBlOiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpLHBheW1lbnRJbnRlcnZhbDokKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCgpLHBheW1lbnREb3duUGF5bWVudDpwYXJzZUludCgkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoKXx8MCkrcGFyc2VJbnQoJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKXx8MCksdG90YWxJbnRlcmVzdDprLmF0dHIoImRhdGEtdG90YWxpbnRlcmVzdCIpLGx1eGVUYXhBbW91bnQ6ay5hdHRyKCJkYXRhLWx1eGVUYXhBbW91bnQiKSxyYXRlVHlwZTprLmF0dHIoImRhdGEtcmF0ZXR5cGUiKSxlZmZlY3RpdmVSYXRlOmsuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIiksdG90YWxDb3N0OmsuYXR0cigiZGF0YS10b3RhbENvc3QiKX0sCmNoYW5nZVBhZ2VQYXltZW50VmFsdWUoaykpfSwyNTApKSl9LGVycm9yOmZ1bmN0aW9uKHEsayx1KXtjb25zb2xlLmVycm9yKCJsb2FkUGF5bWVudHM6OiBQYXltZW50IGNhbGN1bGF0aW9uIGVycm9yOiIsayx1KX19KX19dmFyIGM9bnVsbDskKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7YSgpfSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGQpeyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7dmFyIGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5jYWxjLXBheW1lbnQtY2FzaCIpOyQodGhpcykuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7c3dpdGNoKCEwKXtjYXNlICJsZWFzaW5nIj09PSQodGhpcykuYXR0cigiZGF0YS10eXBlIik6Yi5oaWRkZW49CiEwOyQoIi5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuc2hvdygpOyQoIi5wYXltZW50Q2FsY3VsYXRvcklucHV0Q29udGFpbmVyIikuc2hvdygpO2JyZWFrO2Nhc2UgImZpbmFuY2luZyI9PT0kKHRoaXMpLmF0dHIoImRhdGEtdHlwZSIpOmIuaGlkZGVuPSEwOyQoIi5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvcklucHV0Q29udGFpbmVyIikuc2hvdygpO2JyZWFrO2Nhc2UgImNhc2giPT09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKTpiLmhpZGRlbj0hMSwkKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksbnVsbCE9PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYKKGI9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikuc3BsaXQoIi0iKSxiWzBdPSJjYXNoIixDb29raWVzLnNldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiLGIuam9pbigiLSIpLG51bGwsIi8iKSksd2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkPSEwLCJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLnNldEJOUFZpZXcmJm1vZGVsQ29uZmlnLnNldEJOUFZpZXcoITAsImNhc2giKX1sZXQgZzsxIT0obnVsbD09ZD92b2lkIDA6bnVsbD09KGc9ZC5kZXRhaWwpP3ZvaWQgMDpnLmlzRmlyc3RSdW4pJiYkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLnRyaWdnZXIoImJsdXIiKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXthKCl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLm9uKCJibHVyIiwKZnVuY3Rpb24oKXtsZXQgZD1wYXJzZUludCgkKHRoaXMpLnZhbCgpLnJlcGxhY2UoL1teXGRdL2csIiIpKXx8MDtpZigibGVhc2luZyI9PT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKSl7dmFyIGI9cGFyc2VJbnQoJCgiI21heERvd25QYXltZW50Rm9yVHJpbSIpLnZhbCgpKXx8MDswPGImJmQ+YiYmKGQ9Yil9ZWxzZSBiPXBhcnNlSW50KCQoIiNtYXhEb3duUGF5bWVudEZpbmFuY2VGb3JUcmltIikudmFsKCkpfHwwLDA8YiYmZD5iJiYoZD1iKTskKHRoaXMpLnZhbChkKTthKCl9KTskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS5vbigiYmx1ciIsZnVuY3Rpb24oKXtsZXQgZD1wYXJzZUludCgkKHRoaXMpLmF0dHIoIm1heCIpKXx8MCxiPXBhcnNlSW50KCQodGhpcykudmFsKCkpfHwwO2I9Yj5kP2Q6YjskKHRoaXMpLnZhbChiKTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX2N1cnJlbnRfdmFsdWUiLApKU09OLnN0cmluZ2lmeSh7dmFsdWU6Yn0pLDEpO2EoKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5pcygiOmNoZWNrZWQiKT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5oaWRlKCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZUluY2x1ZGVkIikuaGlkZSgpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVOb3RJbmNsdWRlZCIpLnNob3coKSl9KTsKJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2V0UG9wQ29udGFpblNldHRpbmdzKCkuYWxyZWFkeUluaXQ9ITA7d2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkJiYod2luZG93LnRlbXBQYXltZW50U2VsZWN0Q2hhbmdlZD0hMCk7d2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkPSExO3ZvaWQgMCE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZlaGljbGVDb25maWd1cmF0b3JEUiIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2RlbENvbmZpZyYmbW9kZWxDb25maWcuY2hhbmdlUGF5bWVudFBsYW5Qb3B1cCgpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5jbG9zZSgpfSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIgLmNsb3NlLXJldmVhbC1tb2RhbCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2b2lkIDAhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKSYmCiJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZGVsQ29uZmlnJiZtb2RlbENvbmZpZy5jaGFuZ2VQYXltZW50UGxhblBvcHVwKCl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZD1nZXRQb3BDb250YWluU2V0dGluZ3MoKTtkLnN0eWxlaWQ9JCh0aGlzKS52YWwoKTskKCIjYWN0aXZlU3R5bGVJRCIpLmxlbmd0aCYmJCgiI2FjdGl2ZVN0eWxlSUQiKS52YWwoZC5zdHlsZWlkKTtwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpO3VwZGF0ZVVybChkKX0pOyQoImJvZHkiKS5vbigiY2xpY2sgdGFwIiwiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5maW5hbmNpbmctb3B0aW9uLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgKiIsZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdJykucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKX0pOwokKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScsZnVuY3Rpb24oKXt2YXIgZD0kKHRoaXMpLnZhbCgpLGI9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZCsnIl1bZGF0YS1yYXRldHlwZT0iJytiKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmZpbmFuY2luZy1vcHRpb24iKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXVt2YWx1ZT0iJytkKyciXVtkYXRhLXJhdGV0eXBlPSInK2IrJyJdJykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KTsKJCgiYm9keSIpLm9uKCJjaGFuZ2UiLCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0nLGZ1bmN0aW9uKCl7dmFyIGQ9JCh0aGlzKS52YWwoKSxiPSQodGhpcykuYXR0cigiZGF0YS1yYXRldHlwZSIpOyQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdW3ZhbHVlPSInK2QrJyJdW2RhdGEtcmF0ZXR5cGU9IicrYisnIl0nKS5wcm9wKCJjaGVja2VkIiwhMCkudHJpZ2dlcigiY2hhbmdlIil9KTt2YXIgZT0hMTskKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScsZnVuY3Rpb24oKXt2YXIgZD1nZXRQb3BDb250YWluU2V0dGluZ3MoKSxiPSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpLGc9JCh0aGlzKS52YWwoKSxyPSQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCksCm09JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoKSxuPSQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IikudmFsKCk\/JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKTowLHA9JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCk\/JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCk6MDtuPXBhcnNlSW50KG4pK3BhcnNlSW50KHApO249bi50b0ZpeGVkKDApO3A9YisiLSIrZysiLSIrcisiLSIrbSsiLSIrbjtwIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSYmbnVsbCE9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih3aW5kb3cucGF5bWVudFNlbGVjdENoYW5nZWQ9ITAsdm9pZCAwIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpWzBdJiYidW5kZWZpbmVkIiE9CnR5cGVvZiBtb2RlbENvbmZpZyYmdm9pZCAwIT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudmVoaWNsZUNvbmZpZ3VyYXRvckRSIikmJihlPSEwLG1vZGVsQ29uZmlnLnNldEJOUFZpZXcoZSxiKSksbnVsbCE9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJkNvb2tpZXMuc2V0KCJwcmV2aW91c3BheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIixDb29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSxudWxsLCIvIikpO2V8fCJ1bmRlZmluZWQiPT10eXBlb2YgbW9kZWxDb25maWd8fCJ1bmRlZmluZWQiPT09dHlwZW9mIG1vZGVsQ29uZmlnfHx2b2lkIDA9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKXx8bW9kZWxDb25maWcuc2hvdWxkUmVsb2FkQk5QVmlld09uUGF5bWVudENoYW5nZShlLGIpO0Nvb2tpZXMuc2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIsCnAsbnVsbCwiLyIpO3ZhciB3PSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJtb250aHMiOiJtb2lzIix5PSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIkIituKyIgZG93biBwYXltZW50IjpuKyIgJCBjb21wdGFudCI7cD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7c3dpdGNoKHIpe2Nhc2UgIndlZWtseSI6cD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7YnJlYWs7Y2FzZSAiYml3ZWVrbHkiOnA9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/InBlciAyIHdlZWtzIGZvciI6InBhciAyIHNlbWFpbmVzIHBvdXIiO2JyZWFrO2Nhc2UgInNlbWltb250aGx5IjpwPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJ0d2ljZSBhIG1vbnRoIGZvciI6IjIgZm9pcyBwYXIgbW9pcyBwb3VyIjticmVhaztjYXNlICJtb250aGx5IjpwPQokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIG1vbnRoIGZvciI6InBhciBtb2lzIHBvdXIifW09ImxlYXNpbmciPT09Yj9tKyJrbSI6IiI7dmFyIHQ9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ImxlYXNpbmciPT09Yj8iTGVhc2luZyI6IkZpbmFuY2luZyI6ImxlYXNpbmciPT09Yj8iTG9jYXRpb24iOiJGaW5hbmNlbWVudCI7ZC52ZWhpY2xlSW5mbyYmKGVtYWlsSGFuZGxlci5wYXltZW50VmVoaWNsZT1kLnZlaGljbGVJbmZvLm1ha2UrIiAiKyhkLnZlaGljbGVJbmZvLm1vZGVsfHxkLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lKSsiICIrZC52ZWhpY2xlSW5mby5DRlN0eWxlTmFtZSxlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ZC52ZWhpY2xlSW5mby55ZWFyKyIgIitlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU6ZW1haWxIYW5kbGVyLnBheW1lbnRWZWhpY2xlKyIgIitkLnZlaGljbGVJbmZvLnllYXIsCmVtYWlsSGFuZGxlci5wYXltZW50VmVoaWNsZSs9IigiK3QrIiAiK3ArIiAiK2crIiAiK3crIi4gIit5KyIuICIrbSsiKSIsZW1haWxIYW5kbGVyLm1ha2U9ZC52ZWhpY2xlSW5mby5tYWtlLGVtYWlsSGFuZGxlci5tb2RlbD1kLnZlaGljbGVJbmZvLm1vZGVsfHxkLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lLGVtYWlsSGFuZGxlci50cmltPWQudmVoaWNsZUluZm8uQ0ZTdHlsZU5hbWUsZW1haWxIYW5kbGVyLnllYXI9ZC52ZWhpY2xlSW5mby55ZWFyKTtpZigiTkVXQ0FSUyIhPT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiVVNFRENBUlMiIT09KCQoIiN0YXJnZXRQYWdlIikudmFsKCl8fCExKSl7cD0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtkPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7bT0kKHRoaXMpLmF0dHIoImRhdGEtdG90YWxpbnRlcmVzdCIpO3c9JCh0aGlzKS5hdHRyKCJkYXRhLWx1eGVUYXhBbW91bnQiKTt5PSQodGhpcykuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIik7CnQ9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7dmFyIHY9JCh0aGlzKS5hdHRyKCJkYXRhLXRvdGFsQ29zdCIpO2NoYW5nZVBhZ2VQYXltZW50VmFsdWUoe2N1cnJlbnRQYXltZW50OnAsY3VycmVudFJhdGU6ZCxwYXltZW50VGVybTpnLHBheW1lbnRUeXBlOmIscGF5bWVudEludGVydmFsOnIscGF5bWVudERvd25QYXltZW50Om4sdG90YWxJbnRlcmVzdDptLGx1eGVUYXhBbW91bnQ6dyxyYXRlVHlwZTp0LGVmZmVjdGl2ZVJhdGU6eSx0b3RhbENvc3Q6dn0pfXk9IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKToiK3R4IjtpZigkKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoKXt3PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8IkZSRU5DSCI7cD0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtkPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7bT0iMSI9PSQoIiNyb3VuZFBheW1lbnQiKS52YWwoKT8KMDoyO3Q9cGFyc2VGbG9hdChwKS50b0ZpeGVkKG0pO3Q9dC5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihBLHgpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+Jyt4KyI8L3N1cD4ifSk7cD0kKCIjSU5URVJWQUxfU0hPUlRfV0VFS0xZIikudmFsKCk7bT01Mjtzd2l0Y2gocil7Y2FzZSAid2Vla2x5IjpwPSQoIiNJTlRFUlZBTF9TSE9SVF9XRUVLTFkiKS52YWwoKTttPTUyO2JyZWFrO2Nhc2UgImJpd2Vla2x5IjpwPSQoIiNJTlRFUlZBTF9TSE9SVF9CSVdFRUtMWSIpLnZhbCgpO209MjY7YnJlYWs7Y2FzZSAic2VtaW1vbnRobHkiOnA9JCgiI0lOVEVSVkFMX1NIT1JUX1NFTUlNT05USExZIikudmFsKCk7bT0yNDticmVhaztjYXNlICJtb250aGx5IjpwPSQoIiNJTlRFUlZBTF9TSE9SVF9NT05USExZIikudmFsKCksbT0xMn1yPXkrIi8iK3A7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiJibHVyIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKSYmCih0PSc8c3BhbiBjbGFzcz0iYmx1ci1wcmljZSI+Jyt0KyI8L3NwYW4+Iik7cD1EMkNVdGlscy5Gb3JtYXQudG9QcmljZSh0KTtuPUQyQ1V0aWxzLkZvcm1hdC50b1ByaWNlKG4pKygiRU5HTElTSCI9PT13PyIgZG93biI6IiBjb21wdGFudCIpO2I9ImZpbmFuY2luZyI9PT1iPyJFTkdMSVNIIj09PXc\/ZysiIG1vbnRocyBmaW4uIjoiRmluLiAiK2crIiBtb2lzIjoiRU5HTElTSCI9PT13P2crIiBtb250aHMgbGVhc2UiOiJMb2MuICIrZysiIG1vaXMiO2Q9cGFyc2VGbG9hdChkKS50b0ZpeGVkKDIpKyIlIjt3PWIrIiAvICIrbisiIEAgIitkKyI6IjsxPT0kKCIjaXNEUlNpdGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzRFJTaXRlIikudmFsKCkmJihnPXBhcnNlSW50KHBhcnNlSW50KGcpLzEyKm0pLG09c3RvcmUuZ2V0KCJpMThuIikuUEFZTUVOVFMudG9Mb3dlckNhc2UoKSx3PWIrIiAvICIrZysiICIrbSsiIC8gIituKyIgQCAiK2QrIjoiKTskKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIC5icC1wYXltZW50LWRlc2MiKS5odG1sKHcpOwokKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIC5icC1wYXltZW50LWFtb3VudCIpLmh0bWwocCk7JCgiLmJucF9wYXltZW50X2NvbnRhaW5lciAuYnAtdGF4LXR4dCIpLnRleHQocik7Zz0kKHRoaXMpLmNsb3Nlc3QoIi5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIik7IjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKSYmKGc9JCh0aGlzKS5jbG9zZXN0KCIucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIpLmZpbmQoIi5wYXltZW50VG9vbHRpcCIpKTtnPWcuYXR0cigiZGF0YS10b29sdGlwIik7Zz1TdHJpbmcoZykucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7Y2hhbmdlQm5QVG9vbFRpcE1lc3NhZ2UoZyk7InVuZGVmaW5lZCIhPT10eXBlb2YgbW9kZWxDb25maWcmJihtb2RlbENvbmZpZy5zYXZlQ29uZmlnKCksbW9kZWxDb25maWcuY2FsY3VsYXRlQWNjUGF5bWVudHMoKSl9fSk7CiQoImJvZHkiKS5vbigiY2hhbmdlIiwiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIsZnVuY3Rpb24oKXtpZigkKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpfHwkKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIiKS5pcygiOnZpc2libGUiKSkiY2FzaCI9PT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKT9jYWxjVXBkYXRlUGF5bWVudEluZm8oKTphKCl9KX1mdW5jdGlvbiBlc2NhcGVIVE1MKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpfQp2YXIgY3RhUGF5bWVudFRleHRGcj1bXSxjdGFQYXltZW50VGV4dEVuPVtdLGNhbGNDdXJQYXltZW50PXt9LGN0YVBheW1lbnRWYWx1ZXM9W10sY2FzaFByaWNlRm9yUGFnZT1udWxsLGNhbGNVcGRhdGVQYXltZW50WGhyPW51bGw7CmZ1bmN0aW9uIHVwZGF0ZVVybChhKXt0cnl7aWYoIWEudmVoaWNsZUluZm8pcmV0dXJuO3ZhciBjPWEudmVoaWNsZUluZm8sZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5ld2NhckRldGFpbHM\/bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zdHlsZXM6Yy5tb2RlbEpTT04uc3R5bGVzLGQ9d2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGI9ZS5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIGcuaWQ9PWEuc3R5bGVpZH0pLnBvcCgpfWNhdGNoKGcpe2NvbnNvbGUuZXJyb3IoZyk7cmV0dXJufWImJihlPWIuZW5nbGlzaFRyaW18fCIiLGM9Z2V0Q3VycmVudFZlaGljbGVQYXRoKGMpKyItIitlLnJlcGxhY2UoL1xzfC0vZywiICIpLGUubGVuZ3RoJiZ3aW5kb3cucGFyZW50Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCIiLGQrIi8iK2MrIi5odG1sIikpfQpmdW5jdGlvbiBjaGFuZ2VCblBUb29sVGlwTWVzc2FnZShhKXthPSc8c3BhbiBjbGFzcz0icGF5bWVudFRvb2x0aXAgZmFsIGZhLWluZm8tY2lyY2xlIiBkYXRhLXRvb2x0aXA9IicrYSsnIj48L3NwYW4+JzskKCIucGF5bWVudEluZm9CdWJibGVCblAiKS5odG1sKGEpO3RyeXt2YXIgYz0kKCIucGF5bWVudEluZm9CdWJibGVCblAgLnBheW1lbnRUb29sdGlwIikuYXR0cigiZGF0YS10b29sdGlwIik7JCgiLnBheW1lbnRJbmZvQnViYmxlQm5QIC5wYXltZW50VG9vbHRpcCIpLmRhcmtUb29sdGlwKHtjb250ZW50OmMsZ3Jhdml0eToic291dGgiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoiZmFkZUluIn0pfWNhdGNoKGUpe319CmZ1bmN0aW9uIHBvcHVwaXplck9uQ2xvc2UoYSxjKXsicGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIhPT1hLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5pZCYmKHdpbmRvdy50ZW1wUGF5bWVudFNlbGVjdENoYW5nZWQmJih3aW5kb3cudGVtcFBheW1lbnRTZWxlY3RDaGFuZ2VkPSExLHdpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD0hMCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLm9wZW4oMSksJCgiLnJldmVhbC1tb2RhbCIpLm9mZigicG9wdXBpemVyLmNsb3NlIixwb3B1cGl6ZXJPbkNsb3NlKSl9CmZ1bmN0aW9uIGdldFBvcENvbnRhaW5TZXR0aW5ncygpe3ZhciBhPSQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikuZGF0YSgicG9wdXBTZXR0aW5ncyIpO2Eubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHM9ITE7YS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSExO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGEpcmV0dXJuITE7InVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hEZXRhaWxzJiZzZWFyY2hEZXRhaWxzLnZlaGljbGU\/KGEucGF5bWVudFR5cGU9IjEiPT0oc2VhcmNoRGV0YWlscy52ZWhpY2xlLm5vTW90b2luc2lnaHRMZWFzZVBheW1lbnRzfHwhMSk\/ImZpbmFuY2UiOmEucGF5bWVudFR5cGUsYS5wYXltZW50VHlwZT0iMSI9PShzZWFyY2hEZXRhaWxzLnZlaGljbGUubm9Nb3RvaW5zaWdodFBheW1lbnR8fCExKT8ibGVhc2UiOmEucGF5bWVudFR5cGUsYS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50cz0iMSI9PShzZWFyY2hEZXRhaWxzLnZlaGljbGUubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHN8fAohMSk\/ITA6ITEsYS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSIxIj09KHNlYXJjaERldGFpbHMudmVoaWNsZS5ub01vdG9pbnNpZ2h0UGF5bWVudHx8ITEpPyEwOiExKTooYS5wYXltZW50VHlwZT0iMSI9PShhLm5vTGVhc2V8fCExKT8iZmluYW5jZSI6YS5wYXltZW50VHlwZSxhLnBheW1lbnRUeXBlPSIxIj09KGEubm9GaW5hbmNlfHwhMSk\/ImxlYXNlIjphLnBheW1lbnRUeXBlLGEubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHM9IjEiPT0oYS5ub0xlYXNlfHwhMSk\/ITA6ITEsYS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSIxIj09KGEubm9GaW5hbmNlfHwhMSk\/ITA6ITEpO3JldHVybiBhfQpmdW5jdGlvbiBjaGFuZ2VQYWdlUGF5bWVudFZhbHVlKGEpe3ZhciBjPWEuY3VycmVudFBheW1lbnQsZT1hLmN1cnJlbnRSYXRlLGQ9YS5wYXltZW50VGVybSxiPWEucGF5bWVudFR5cGUsZz1hLnBheW1lbnRJbnRlcnZhbCxyPWEucGF5bWVudERvd25QYXltZW50LG09YS50b3RhbEludGVyZXN0LG49YS5sdXhlVGF4QW1vdW50LHA9YS5yYXRlVHlwZSx3PWEuZWZmZWN0aXZlUmF0ZSx5PWEudG90YWxDb3N0LHQ9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLHY9Z2V0UG9wQ29udGFpblNldHRpbmdzKCksQT0iMSI9PSQoIiNwYXltZW50Q2FsY3VsYXRvclJvdW5kUGF5bWVudCIpLnZhbCgpPzA6Mix4PTI9PUE\/TWF0aC5mbG9vcihwYXJzZUZsb2F0KGMpKS50b0ZpeGVkKDApOnBhcnNlRmxvYXQoYykudG9GaXhlZCgwKTtjPXBhcnNlRmxvYXQoYykudG9GaXhlZChBKTtBPWMuc3BsaXQoIi4iKVsxXXx8IiI7Yz1jLnJlcGxhY2UoL1wuKFswLTldKikvLApmdW5jdGlvbihCLEUpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytFKyI8L3N1cD4ifSk7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiJibHVyIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKSYmKGM9JzxzcGFuIGNsYXNzPSJibHVyLXByaWNlIj4nK2MrIjwvc3Bhbj4iKTt2YXIgej1EMkNVdGlscy5Gb3JtYXQudG9QcmljZShjKSxmPWMrIiQiLHE9IiQiK2Msaz0ibGVhc2luZyI9PT1iPyJMb2NhdGlvbiI6IkZpbmFuY2VtZW50Iix1PSJsZWFzaW5nIj09PWI\/IkxlYXNpbmciOiJGaW5hbmNpbmciLGw9ZSsiJSIsaD0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8kKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpOiIrdHgiLEQ9aCsiL21vaXMiLEM9aCsiL210aCI7c3dpdGNoKGcpe2Nhc2UgIndlZWtseSI6RD1oKyIvc2VtIjtDPWgrIi93ZWVrIjticmVhaztjYXNlICJiaXdlZWtseSI6RD0KaCsiLzJzZW0iO0M9aCsiLzJ3ZWVrIjticmVhaztjYXNlICJzZW1pbW9udGhseSI6RD1oKyIvYmltZW5zdWVsIjtDPWgrIi9zZW1pbW9udGhseSI7YnJlYWs7ZGVmYXVsdDpEPWgrIi9tb2lzIixDPWgrIi9tb250aCJ9dmFyIEY9IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCk\/InNjcmF0Y2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudE9wdGlvbiIpLnZhbCgpPyJzdHJpa2UtcHJpY2UtYmxhY2siOiIiOiIiO2g9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UocikrIiBjb21wdGFudCI7dmFyIEo9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UocikrIiBkb3duIHBheW1lbnQiO3I9aysiICIrZCsiIG1vaXMiO3U9dSsiICIrZCsiIG1vbnRocyI7ej0nPHNwYW4gY2xhc3M9InR4dC1wYXltZW50ICcrRisnIj4nK3orJzwvc3Bhbj4gQCA8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQiPicrbCsiPC9zcGFuPiI7MDx3LWUmJih6Kz1mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dCh3LAonIGNsYXNzPSJ0eHQtcGF5bWVudCIgJykpO3c9KCJFTkdMSVNIIj09PXQ\/QzpEKSsiICIrKCJFTkdMSVNIIj09PXQ\/SjpoKSsoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKT8iIjonIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo3MDA7Y29sb3I6IzAwMDsiIGNsYXNzPSJ2ZHBJbmZvVG9vbHRpcCBmYXIgZmEtaW5mby1jaXJjbGUiPjwvc3Bhbj4nKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMiwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTEiKS5odG1sKCJFTkdMSVNIIj09PXQ\/dTpyKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMSwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTIiKS5odG1sKHopOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUzLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMyIpLmh0bWwodyk7aD16PSIiO2NhbGNDdXJQYXltZW50LmN1cnJlbnRQYXltZW50JiYKY2FsY0N1clBheW1lbnQuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoaD1jYWxjQ3VyUGF5bWVudC5jdXJyZW50UGF5bWVudFswXS50b3RhbCx6PWBBZmZpY2jDg8KpIMODwqAgJHtofSRgLGg9YExpc3RlZCBhdCAkJHtofWApO2N0YVBheW1lbnRUZXh0RnI9W2Ake2Z9ICR7RH1gLGAke3J9IEAgJHtsfWAsYCR7en1gXTtjdGFQYXltZW50VGV4dEVuPVtgJHtxfSAke0N9YCxgJHt1fSBAICR7bH1gLGAke2h9YF07Y3RhUGF5bWVudFZhbHVlcz1bYS5jdXJyZW50UGF5bWVudCxlLGQsZ107d2luZG93LnBhcmVudC5BTVAmJndpbmRvdy5wYXJlbnQuQU1QLnNldFN0YXRlKHtTU1JfU1RBVEU6e2xlYXNlVGVybVRleHQ6IkVOR0xJU0giPT09dD91OnIsbGVhc2VQYXltZW50VHh0OngsbGVhc2VQYXltZW50RGVjaW1hbDpBLGxlYXNlUmF0ZTpsLGxlYXNlVGF4VGV4dDp3fX0pO2NhbGNDdXJQYXltZW50LmN1clRlcm09ZDtjYWxjQ3VyUGF5bWVudC5jdXJSYXRlPWU7Y2FsY0N1clBheW1lbnQuY3VySW50ZXJ2YWw9Cmc7Y2FsY0N1clBheW1lbnQudGF4VGV4dEZyPUQ7Y2FsY0N1clBheW1lbnQudGF4VGV4dEVuPUM7YT0oJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbiI6Ii9mciIpKyIvYWpheC9nZXRQYXltZW50VG9vbHRpcEJ5U3R5bGVJRD93c3dpZHRoPTAiO2I9ImxlYXNpbmciPT1iPyJsZWFzZSI6ImZpbmFuY2UiO3Q9Z2V0T3B0aW9uc0Ftb3VudCh2KTt4PXYuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PXYubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PT0kKCIjUEFHRUlEIikudmFsKCl8fCJjYXJkZXRhaWwuaHRtbCI9PT0kKCIjUEFHRUlEIikudmFsKCk7QT12Lmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpP3Yuc3RvY2tOdW1iZXI6IiI7Zj12Lmhhc093blByb3BlcnR5KCJ2aW4iKT92LnZpbjoiIjtxPWdldEFjY2Vzc29yaWVzQW1vdW50KHYpO2w9Z2V0U2VsZWN0ZWRBY2Nlc3Nvcmllcyh2KTtEPWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudCh2KTsKbGV0IEw9W107ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIpLmZvckVhY2goZnVuY3Rpb24oQil7Qi5jaGVja2VkJiYoQj1CLmdldEF0dHJpYnV0ZSgiZGF0YS1jb25kaXRpb25hbC1yZWJhdGUtaWQiKSkmJkwucHVzaChCKX0pO3gmJiFBJiYoQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmVzdG9ja251bWJlciIpKSYmKEE9Qy52YWx1ZXx8IiIpO3gmJiFmJiYoQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJihmPUMudmFsdWV8fCIiKTskLmFqYXgoe3VybDphLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJIVE1MIixkYXRhOntzdHlsZWlkOnYuc3R5bGVpZCx0eXBlOmIscGF5bWVudDpwYXJzZUZsb2F0KGMpLHRlcm06cGFyc2VJbnQoZCkscmF0ZTpwYXJzZUZsb2F0KGUpLGludGVydmFsOmcsb3B0aW9uczp0LHRvdGFsSW50ZXJlc3Q6bSxpc0ludmVudG9yeTp4LHNuOkEsdmluOmYsbHV4ZVRheEFtb3VudDpuLApyYXRlX3R5cGU6cCx0b3RhbENvc3Q6eSxjb25kaXRpb25hbFJlYmF0ZUlkczpMLmpvaW4oIiwiKSxhY2Nlc3NvcmllczpxLHNlbGVjdGVkQWNjZXNzb3JpZXM6bCxwcm90ZWN0aW9uUGxhbnM6RH0sYmVmb3JlU2VuZDpmdW5jdGlvbihCKXt0cnl7bGV0IEU9JCgibWV0YVtuYW1lPSdjc3JmLWRvbWFpbi1jaGVjayddIik7RS5sZW5ndGgmJkIuc2V0UmVxdWVzdEhlYWRlcigiY3NyZi1kb21haW4tY2hlY2siLEUuYXR0cigiY29udGVudCIpKX1jYXRjaChFKXtjb25zb2xlLmVycm9yKEIpfX0sc3VjY2VzczpmdW5jdGlvbihCKXskKCIjZGFya3Rvb2x0aXAtcGF5bWVudFdyYXBwZXIsICNkYXJrdG9vbHRpcC12ZHBQYXltZW50VG9vbHRpcCwgI2Rhcmt0b29sdGlwLXZkcEluZm9Ub29sdGlwLCAjZGFya3Rvb2x0aXAtdmRwVXNlZEluZm9Ub29sdGlwIikucmVtb3ZlKCk7dmFyIEU9JCgiLm5ld1ZkcEFjdGlvbnMiKS5oYXNDbGFzcygid2VzdCIpPyJ3ZXN0IjokKCIudXNlZFZkcEFjdGlvbnMiKS5oYXNDbGFzcygid2VzdCIpPwoid2VzdCI6ImVhc3QiOyQoIi52ZHBQYXltZW50VG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBJbmZvVG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBVc2VkSW5mb1Rvb2x0aXAiKS5kYXJrVG9vbHRpcCh7Y29udGVudDpCLGdyYXZpdHk6RSx0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX19KX0KZnVuY3Rpb24gZ2V0Q3VycmVudFZlaGljbGVQYXRoKGEpe3ZhciBjPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKTsiRU5HTElTSCI9PT0oJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpfHwiRlJFTkNIIikmJihjPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKSk7cmV0dXJuIGN9CmZ1bmN0aW9uIHNob3dQYXltZW50cyhhLGMsZSxkKXskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaHRtbCgiIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmh0bWwoIiIpO3ZhciBiPSIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUm91bmRQYXltZW50IikudmFsKCk\/MDoyOyIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudCIpLnZhbCgpJiYkKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50T3B0aW9uIikudmFsKCk7dmFyIGc9W10scj0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHwwOyJmaW5hbmNlIj09YVswXS50eXBlJiZhWzBdLmRvd25wYXltZW50PmQubWF4RG93bkZpbmFuY2U\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLnNob3coKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOiJsZWFzZSI9PWFbMF0udHlwZSYmYVswXS5kb3ducGF5bWVudD5kLm1heERvd24\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUxlYXNlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCExKSwkKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5pcygiOmNoZWNrZWQiKT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpKSk7CjU8YS5sZW5ndGg\/YS5mb3JFYWNoKGZ1bmN0aW9uKGspeygwPT1rLnRlcm0lMTJ8fDY0PT1rLnRlcm18fDQwPT1lJiY1MT09ay50ZXJtfHwyMD09ZSYmWzI3LDMwLDM5LDQyXS5pbmNsdWRlcyhrLnRlcm0pfHxbMTYsMjFdLmluY2x1ZGVzKGUpfHw0Mj09ay50ZXJtJiYxMDE0PT1yfHxbMzAsNDJdLmluY2x1ZGVzKGsudGVybSkmJls0NzE1NjIsNDcxNTYzLDQ3MTU2NF0uaW5jbHVkZXMocGFyc2VJbnQoc2V0dGluZ3Muc3R5bGVpZCkpfHwyNz09ay50ZXJtJiYyNz09ZXx8NTI9PWsudGVybSYmMzk9PWUpJiZnLnB1c2goayl9KTpnPWE7dmFyIG09e30sbj0hMTtnLmZvckVhY2goZnVuY3Rpb24oayx1KXtPYmplY3QuaGFzT3duKG0say50ZXJtKT9uPSEwOm1bay50ZXJtXT17fTttW2sudGVybV1bay5yYXRlX3R5cGVdPXV9KTt2YXIgcD1bXSx3PSExLHk9ITE7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih3PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIilbMV18fAohMSx5PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIilbMF18fCExKTtpZihhWzBdJiYibGVhc2UiPT1hWzBdLnR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFbMF0ua21fYWxsb3dhbmNlKXt2YXIgdD0wPGQuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlP2QuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlOjJFNDskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbCh0KX1sZXQgdj1kLnRvdGFsSW5jZW50aXZlLEE9bj8kKCIjTE9XRVNUUEFZTUVOVF9MQUJFTCIpLnZhbCgpOiIiLHg9bj8kKCIjTE9XRVNUUkFURV9MQUJFTCIpLnZhbCgpOiIiO3ZhciB6PTA7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIC5qcy10ZW1wS21BbGxvd2VkIikucmVtb3ZlKCk7JC5lYWNoKGcsZnVuY3Rpb24oayx1KXtpZighcC5pbmNsdWRlcyh1LnRlcm0pKXtwLnB1c2godS50ZXJtKTt2YXIgbD0KInN0YW5kYXJkIj09dS5yYXRlX3R5cGV8fDI+T2JqZWN0LmtleXMobVt1LnRlcm1dKS5sZW5ndGg\/dTpnW21bdS50ZXJtXS5zdGFuZGFyZF0saD0yPT1PYmplY3Qua2V5cyhtW3UudGVybV0pLmxlbmd0aD9nW21bdS50ZXJtXS5zdWJ2ZW50ZWRdOiExLEQ9Mj09T2JqZWN0LmtleXMobVt1LnRlcm1dKS5sZW5ndGg\/bVt1LnRlcm1dLnN1YnZlbnRlZDohMSxDPXUudGVybSxGPXUuZG93bnBheW1lbnQudG9GaXhlZCgwKSxKPWwucGF5bWVudC50b0ZpeGVkKGIpLEw9bC5wYXltZW50LnRvRml4ZWQoYik7Sj1KLnJlcGxhY2UoL1wuKFswLTldKikvLGZ1bmN0aW9uKE8sSyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK0srIjwvc3VwPiJ9KTt2YXIgQj1sLnBheW1lbnRXaXRoVGF4ZXMudG9GaXhlZChiKSxFPWwucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGIpO0I9Qi5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihPLEspe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytLKyI8L3N1cD4ifSk7CnZhciBUPWwucmF0ZSxkYT0icGF5bWVudCIraztrPSJwYXltZW50IitrKyJ3aXRoVGF4ZXMiO0M9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IjxzcGFuPiIrQysiPC9zcGFuPiBtb250aCI6IjxzcGFuPiIrQysiPC9zcGFuPiBtb2lzIjtGPWA8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4ke0Z9PC9zcGFuPmArKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgZG93biBwYXltZW50IjoiIGNvbXB0YW50Iik7dmFyIFU9IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/IjxkaXY+IiskKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpKyI8L2Rpdj4iOiIrdHgiLE09bC5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9sLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsUD0iIjswPHBhcnNlRmxvYXQoTSktbC5yYXRlJiYoUCs9Zm9ybWF0RWZmZWN0aXZlUmF0ZVRleHQoTSwiIiwnY2xhc3M9Ii1mczEwIicpKTt2YXIgVj1sLnRvdGFsT2JsaWdhdGlvbkFtb3VudD8KbC50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxXPSdkYXRhLXRvb2x0aXA9IicrbC50b29sdGlwKyciJyxYPSdkYXRhLXRvb2x0aXA9IicrbC50b29sdGlwV2l0aFRheGVzKyciJyxHLGVhPW51bGwhPShHPWwubTJkX2ZpbmFuY2UpP0c6djtHPSJzaW5nbGUtY29sdW1uIjt1PXcmJnc9PXUudGVybSYmeSYmeT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik\/ImNoZWNrZWQiOiIiO3ZhciBRPSJzbWFsbC1ib3giLEg9IiIsST0iIjtpZihoKXtHPSJsZWZ0LXNlY3Rpb24iO1E9IiI7SD1oLnBheW1lbnQudG9GaXhlZChiKTtsZXQgTz1oLnBheW1lbnQudG9GaXhlZChiKTtIPUgucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oZmEsUil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK1IrIjwvc3VwPiJ9KTtJPWgucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGIpO2xldCBLPWgucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGIpOwpJPUkucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oZmEsUil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK1IrIjwvc3VwPiJ9KTt2YXIgWT1oLnJhdGUudG9GaXhlZCgyKSxoYT0icGF5bWVudCIrRDtEPSJwYXltZW50IitEKyJ3aXRoVGF4ZXMiO2xldCBOPWguY2FsY3VsYXRlZEVmZmVjdGl2ZVJhdGU\/aC5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZTowLFM9IiI7MDxwYXJzZUZsb2F0KE4pLWgucmF0ZSYmKFMrPWZvcm1hdEVmZmVjdGl2ZVJhdGVUZXh0KE4sIiIsJ2NsYXNzPSItZnMxMCInKSk7bGV0IFo9aC50b3RhbE9ibGlnYXRpb25BbW91bnQ\/aC50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxhYT0nZGF0YS10b29sdGlwPSInK2gudG9vbHRpcCsnIicsYmE9J2RhdGEtdG9vbHRpcD0iJytoLnRvb2x0aXBXaXRoVGF4ZXMrJyInLGNhPWgubTJkX2ZpbmFuY2U7SD0nXHQ8ZGl2IGlkPSInK2hhKyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrCmFhKyc+XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1yYXRlIj4nK1krJyUgPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgcmlnaHRUb29sdGlwIiAnK2FhKyI+PC9pPiIrUysnPC9kaXY+XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0grJzwvc3Bhbj48L2Rpdj5cdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytVKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHQ8aW5wdXRcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudCJcdFx0XHRcdFx0dmFsdWU9IicraC50ZXJtKyciXHRcdFx0XHRcdGRhdGEtYmFzZXBheW1lbnQ9IicraC5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmVhbHBheW1lbnQ9IicraC5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmF0ZXR5cGU9IicraC5yYXRlX3R5cGUrJyJcdFx0XHRcdFx0ZGF0YS1kaXNwbGF5ZWRwYXltZW50PSInKwpPKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicraC5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicraC50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytoLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK04rJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrWisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicraC5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2gucmVzaWR1YWxWYWx1ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJytjYSsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSIwIlx0XHRcdFx0Plx0XHRcdDxsYWJlbD4nK3grIjwvbGFiZWw+XHRcdDwvZGl2Plx0PC9kaXY+IjtJPSdcdDxkaXYgaWQ9IicrRCsKJyIgY2xhc3M9InJpZ2h0LXNlY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytiYSsnPlx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcmF0ZSI+JytZKyclIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytiYSsiPjwvaT4iK1MrJzwvZGl2Plx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcGF5bWVudCI+PHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JytJKyc8L3NwYW4+PC9kaXY+XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciI+XHRcdFx0PGlucHV0XHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXHRcdFx0XHRcdHZhbHVlPSInK2gudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2gucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2gucGF5bWVudFdpdGhUYXhlcysKJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytoLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrSysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2gucmVzaWR1YWxXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2gudG90YWxJbnRlcmVzdFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicraC5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytOKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1orJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2gucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytoLnJlc2lkdWFsVmFsdWVXaXRoVGF4ZXMrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrY2ErJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2guZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJysKaC5oc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSInK2gucHN0KyciXHRcdFx0XHQ+XHRcdFx0PGxhYmVsPicreCsiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4ifWg9JzxkaXYgY2xhc3M9ImZpbmFuY2luZy1vcHRpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAnK1ErJyI+XHQ8ZGl2IGNsYXNzPSJ0ZXJtIj4nK0MrJzwvZGl2Plx0PGRpdiBjbGFzcz0iZG93bi1wYXltZW50Ij4nK0YrJzwvZGl2Plx0PGRpdiBjbGFzcz0ic2VwYXJhdG9yUGF5Ij48L2Rpdj5cdDxkaXYgY2xhc3M9ImNvbnRlbnQtY29udGFpbmVyIj5cdFx0PGRpdiBpZD0iJytkYSsnIiBjbGFzcz0iJytHKycgcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytXKyc+XHRcdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrSisnPC9zcGFuPiA8aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIGluZm8taWNvbiBwYXltZW50VG9vbHRpcCBsZWZ0VG9vbHRpcCIgJysKVysnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJkZXRhaWxzVGF4Ij4nK1UrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1yYXRlIj4nK1QrIiUgIitQKyc8L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJyYWRpby1jb250YWluZXIiPlx0XHRcdFx0PGlucHV0IFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0Jyt1KydcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50Ilx0XHRcdFx0XHR2YWx1ZT0iJytsLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytsLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytsLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytsLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrTCsnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2wucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2wudG90YWxJbnRlcmVzdCsKJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK2wubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicrTSsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytWKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytsLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrbC5yZXNpZHVhbFZhbHVlKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK2VhKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IjAiXHRcdFx0XHQ+XHRcdFx0XHQ8bGFiZWw+JytBKyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK0grIlx0PC9kaXY+PC9kaXY+IjtCPSc8ZGl2IGNsYXNzPSJmaW5hbmNpbmctb3B0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgJytRKyciPlx0PGRpdiBjbGFzcz0idGVybSI+JysKQysnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicrRisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK2srJyIgY2xhc3M9IicrRysnIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrWCsnPlx0XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0IrJzwvc3Bhbj4gPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrWCsnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcmF0ZSI+JytUKyIlICIrUCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHRcdDxpbnB1dCBcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdCcrdSsnXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJcdFx0XHRcdFx0dmFsdWU9IicrCmwudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2wucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2wucGF5bWVudFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2wucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJytFKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrbC5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrbC50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytsLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK00rJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrVisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicrbC5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2wucmVzaWR1YWxWYWx1ZVdpdGhUYXhlcysnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJysKdisnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IicrbC5nc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSInK2wuaHN0KyciICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iJytsLnBzdCsnIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsPicrQSsiPC9sYWJlbD5cdFx0XHQ8L2Rpdj5cdFx0PC9kaXY+IitJKyJcdDwvZGl2PjwvZGl2PiI7MD09bC5wYXltZW50V2l0aFRheGVzJiYoQj0iIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmFwcGVuZChoKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuYXBwZW5kKEIpO3orK319KTt0PSQoJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVtjaGVja2VkXScpLmxlbmd0aD8kKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bY2hlY2tlZF0nKVswXTokKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nKS5sYXN0KClbMF07CiQodCkucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKTt0PXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGFbMF0udG90YWwudG9GaXhlZCgwKSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlVG90YWwiKS50ZXh0KHQpOyJsZWFzZSI9PWFbMF0udHlwZT8odD1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhWzBdLmttX2FsbG93YW5jZS50b0ZpeGVkKDApKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VLTSIpLnRleHQodCksJCgiLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ2FzaCIpLnByb3AoImhpZGRlbiIsITApLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUxlYXNlIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUZpbmFuY2UiKS5oaWRlKCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VMZWFzZSIpLmhpZGUoKSwkKCIucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDYXNoIikucHJvcCgiaGlkZGVuIiwhMCksCiQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUZpbmFuY2UiKS5zaG93KCkpOyQoIi5wYXltZW50Q2FsY3VsYXRvckNvbW1vbk5vdGljZSIpLnNob3coKTskKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5pcygiOmNoZWNrZWQiKT8oJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZUluY2x1ZGVkIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVOb3RJbmNsdWRlZCIpLmhpZGUoKSk6KCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLmhpZGUoKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5zaG93KCkpOzA8Yz8oYz1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihjLnRvRml4ZWQoMCkpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUZlZXMiKS50ZXh0KGMpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkRmVlcyIpLnNob3coKSk6JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlSW5jbHVkZWRGZWVzIikuaGlkZSgpOwokKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzICNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXNMaXN0IikuZW1wdHkoKTtpZihkLmN1c3RvbUZlZXMubGVuZ3RoKXt2YXIgZj0iPHVsPiI7JC5lYWNoKGQuY3VzdG9tRmVlcyxmdW5jdGlvbihrLHUpe2s9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/KG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKHUuZGVzY0VuKSxsPT5sLmNoYXJDb2RlQXQoMCkpKToobmV3IFRleHREZWNvZGVyKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IodS5kZXNjRnIpLGw9PmwuY2hhckNvZGVBdCgwKSkpO3U9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIodS5hbW91bnQudG9GaXhlZCgwKSk7dT1EMkNVdGlscy5Gb3JtYXQudG9QcmljZSh1KTtmKz0iPGxpPiIraysiIDogIit1KyI8L2xpPiJ9KTtmKz0iPC91bD4iOyQoIiNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXMgI3BheW1lbnRDYWxjdWxhdG9yQ3VzdG9tRmVlc0xpc3QiKS5hcHBlbmQoZik7CiQoIiNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXMiKS5zaG93KCl9ZWxzZSAkKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzIikuaGlkZSgpO2M9ImxlYXNlIj09YVswXS50eXBlPygkKCIjcGF5bWVudENhbGN1bGF0b3JMZWFzZVRleHQiKS52YWwoKXx8IiIpLnRvTG93ZXJDYXNlKCk6KCQoIiNwYXltZW50Q2FsY3VsYXRvckZpbmFuY2VUZXh0IikudmFsKCl8fCIiKS50b0xvd2VyQ2FzZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZVR5cGUiKS50ZXh0KGMpOzA8YVswXS5yZWJhdGU\/KGE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiQiK2FbMF0ucmViYXRlOmFbMF0ucmViYXRlKyIgJCIsJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlUmViYXRlIikudGV4dChhKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VJbmNsdWRlZFJlYmF0ZXMiKS5zaG93KCkpOiQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkUmViYXRlcyIpLmhpZGUoKTtpZihkLmNvbmRpdGlvbmFsUmViYXRlcyYmCjA8ZC5jb25kaXRpb25hbFJlYmF0ZXMubGVuZ3RoKXt2YXIgcT0iIjtkLmNvbmRpdGlvbmFsUmViYXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGspe3ZhciB1PXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGsuYW1vdW50LnRvU3RyaW5nKCkpO3ErPSI8bGk+IitrLm5hbWUrIjogLSIrRDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UodSkrIjwvbGk+In0pO3EmJiQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkUmViYXRlcyIpLmFmdGVyKCc8ZGl2IGlkPSJwYXltZW50Q2FsY3VsYXRvck5vdGljZUNvbmRpdGlvbmFsUmViYXRlcyIgY2xhc3M9InBheW1lbnRDYWxjdWxhdG9yTm90aWNlU2VjdGlvbiI+PHN0cm9uZz4nKygkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iU2VsZWN0ZWQgQ29uZGl0aW9uYWwgUmViYXRlczoiOiJSYWJhaXMgY29uZGl0aW9ubmVscyBzw4PCqWxlY3Rpb25uw4PCqXM6IikrIjwvc3Ryb25nPjx1bD4iK3ErIjwvdWw+PC9kaXY+Iil9ZWxzZSAkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb25kaXRpb25hbFJlYmF0ZXMiKS5yZW1vdmUoKTsKc2V0UGF5bWVudENhbGN1bGF0b3JQb3B1cFRvb2x0aXAoKX0KZnVuY3Rpb24gc2V0UGF5bWVudENhbGN1bGF0b3JQb3B1cFRvb2x0aXAoKXtpZigiMSI9PSQoIiNpc21vYmlsZSIpLnZhbCgpKSQoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciAucGF5bWVudFRvb2x0aXAiKS5lYWNoKGZ1bmN0aW9uKGMpe3RyeXt2YXIgZT0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpLGQ9JCh0aGlzKS5oYXNDbGFzcygibGVmdFRvb2x0aXAiKT8id2VzdCI6ImVhc3QiOyQodGhpcykuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6ZSxncmF2aXR5OmQsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJjbGljayIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9Y2F0Y2goYil7fX0pO2Vsc2V7Zm9yKHZhciBhPTA7NT5hO2ErKykkKCIjZGFya3Rvb2x0aXAtcGF5bWVudCIrYSkubGVuZ3RoJiYoJCgiI2Rhcmt0b29sdGlwLXBheW1lbnQiK2EpLnJlbW92ZSgpLAokKCIjZGFya3Rvb2x0aXAtcGF5bWVudCIrYSsid2l0aFRheGVzIikucmVtb3ZlKCkpOyQoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIpLmVhY2goZnVuY3Rpb24oKXt0cnl7dmFyIGM9JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKSxlPSQodGhpcykuZmluZCgiLnBheW1lbnRUb29sdGlwIiksZD0iZWFzdCI7ZS5oYXNDbGFzcygibGVmdFRvb2x0aXAiKT9kPSJ3ZXN0IjplLmhhc0NsYXNzKCJyaWdodFRvb2x0aXAiKSYmKGQ9ImVhc3QiKTskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmMsZ3Jhdml0eTpkLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIifSl9Y2F0Y2goYil7fX0pfX0KZnVuY3Rpb24gc2V0UGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyhhKXt2YXIgYz1nZXRQb3BDb250YWluU2V0dGluZ3MoKTtjLnZlaGljbGVJbmZvPWE7JCgiI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm9ZZWFyIikudGV4dChhLnllYXIpO3ZhciBlPWEuQ0ZNb2RlbE5hbWV8fGEubW9kZWwsZD1hLm1ha2UudG9VcHBlckNhc2UoKSsiICIrZS50b1VwcGVyQ2FzZSgpOyJNRVJDRURFUy1CRU5aIiE9YS5tYWtlLnRvVXBwZXJDYXNlKCl8fC9cYnNwcmludGVyXGIvaS50ZXN0KGUpfHwoZD1hLm1ha2UudG9VcHBlckNhc2UoKSk7aWYoImJ1aWxkYW5kcHJpY2UuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8Yy5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJiJ0cnVlIj09Yy5ub1RyaW1TZWxlY3R8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkpZCs9IiAiK2EuQ0ZTdHlsZU5hbWUudG9VcHBlckNhc2UoKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yVHJpbVNlbGVjdCIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mb01ha2VNb2RlbFRyaW0iKS50ZXh0KGQpO2U9YS5tYWtlKyJ8fHwiK2UrInx8fCIrYS55ZWFyO2MuaGFzT3duUHJvcGVydHkoInN0b2NrTnVtYmVyIikmJihlKz0ifHx8KFN0b2NrOiIrYy5zdG9ja051bWJlcisiKSIpO0Nvb2tpZXMuc2V0KCJsYXN0dmlld2VkdmVoaWNsZSIsZSxudWxsLCIvIik7YS5pbWFnZXNbMF0mJihlPShhLmltYWdlc1swXSsiIikucmVwbGFjZSgvaHR0cChzPyk6XC9cL21lZGlhLihjaHJvbWVkYXRhfGNhcmJvb2spLmNvbVwvTWVkaWFHYWxsZXJ5XC9tZWRpYVwvLywiLy9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2Fycy9jYiVDQi8lTUFLRS8lTU9ERUwvJVlFQVIvIikucmVwbGFjZSgiJUNCIixNYXRoLnJvdW5kKDk5Kk1hdGgucmFuZG9tKCkpKzFFNSkucmVwbGFjZSgiJU1BS0UiLGEubWFrZS5yZXBsYWNlKCItIiwiXyIpKS5yZXBsYWNlKCIlTU9ERUwiLAphLm1vZGVsLnJlcGxhY2UoIi0iLCJfIikpLnJlcGxhY2UoIiVZRUFSIixhLnllYXIpLCQoIiNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbWFnZURpdiIpLmh0bWwoJzxpbWcgaWQ9InBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUltYWdlIiBzcmM9IicrZS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjMDM5OyIpKyciIGNsYXNzPSJwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbWFnZSI+JykpOyQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3Qgb3B0aW9uIikucmVtb3ZlKCk7KCJ1bmRlZmluZWQiIT10eXBlb2YgbmV3Y2FyRGV0YWlscz9uZXdjYXJEZXRhaWxzLmFsbFN0eWxlczphLm1vZGVsSlNPTi5zdHlsZXMpLmZvckVhY2goZnVuY3Rpb24oYil7JCgiI3BheW1lbnRDYWxjdWxhdG9yVHJpbVNlbGVjdCIpLmFwcGVuZChuZXcgT3B0aW9uKGIuQ0ZTdHlsZU5hbWUsCmIuaWQpKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiKS52YWwoYy5zdHlsZWlkKTtjYWxjVXBkYXRlUGF5bWVudEluZm8oKX0KZnVuY3Rpb24gY2FsY1VwZGF0ZVN0eWxlSW5mbyhhKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5ld2NhckRldGFpbHMmJm5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwpe3ZhciBjPW5ld2NhckRldGFpbHMuYWxsU3R5bGVzLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gZC5pZD09YX0pWzBdO2M9Y3x8bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zdHlsZXNbMF07Yy5tYWtlPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwubWFrZTtjLm1vZGVsPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwubW9kZWw7Yy5pbWFnZXM9bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5pbWFnZXM7c2V0UGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyhjKX1lbHNle2M9c2V0dGluZ3MuaGFzT3duUHJvcGVydHkoInN0b2NrTnVtYmVyIik\/c2V0dGluZ3Muc3RvY2tOdW1iZXI6IiI7dmFyIGU9KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0VmVoaWNsZUpzb25CeVN0eWxlSUQ\/d3N3aWR0aD0wIjsKJC5hamF4KHt1cmw6ZSx0eXBlOiJQT1NUIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7c3R5bGVpZDphLHZlaGljbGVpZDpjfSxzdWNjZXNzOmZ1bmN0aW9uKGQpe3NldFBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8oZCl9fSl9fQpmdW5jdGlvbiBwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpe3ZhciBhPWdldFBvcENvbnRhaW5TZXR0aW5ncygpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9ySXNOZXdQb3B1cEVuYWJsZWQiKS52YWwoKTsiIiE9YS5wcm9tb0J1dHRvblRleHQmJiIxIiE9PUNvb2tpZXMuZ2V0KCJwb3B1cEZvcm1GaWxsZWQiKSYmJCgiI3BheW1lbnRDYWxjdWxhdG9ySXNOZXdQb3B1cEVuYWJsZWQiKS52YWwoKT8oLTEhPT1hLnByb21vQnV0dG9uVGV4dC5pbmRleE9mKCI8YnIiKSYmKGEucHJvbW9CdXR0b25UZXh0PWEucHJvbW9CdXR0b25UZXh0LnN1YnN0cigwLGEucHJvbW9CdXR0b25UZXh0LmluZGV4T2YoIjxiciIpKSksJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGEiKS5odG1sKGEucHJvbW9CdXR0b25UZXh0KSwkKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5zaG93KCkpOgokKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5oaWRlKCk7bGV0IGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSJsZWFzaW5nIl0nKSxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0iZmluYW5jaW5nIl0nKSxkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0iY2FzaCJdJyk7Yy5oaWRkZW49IjEiPT0oYS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50c3x8ITEpO2UuaGlkZGVuPSIxIj09KGEubm9Nb3RvaW5zaWdodEZpbmFuY2VQYXltZW50c3x8ITEpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuY2FsYy1wYXltZW50LWNhc2giKS5oaWRkZW49ITA7c2V0VGltZW91dCgoKT0+e2lmKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSYmCiIiPT0kKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgpKXt2YXIgYj1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSk7JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoYi52YWx1ZSk7X2xvY2FsU3RvcmFnZUdldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIikmJihiPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIikpLCQoIiNwYXltZW50VHJhZGVJblZhbHVlIikuYXR0cigiZGF0YS1jdXJyZW50IixiLnZhbHVlKSl9aWYoIiIhPSQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCkmJjA8JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoKSl7Yj1wYXJzZUludCgkKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgpKXx8MDt2YXIgZz1wYXJzZUludCgkKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLmF0dHIoImRhdGEtY3VycmVudCIpKXx8YjskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoZyk7CiQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLmF0dHIoIm1heCIsYik7JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkJ1dHRvbiIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS5zaG93KCl9ZWxzZSAkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoIiIpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b24iKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnRyaWdnZXIoImJsdXIiKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEN0YVRyYWNrJiZDdGFUcmFjay5nZXRUcmFja1N0ZXAoIlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iikpe2xldCByPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iixmb3JjZVVwZGF0ZTohMCwKb25Db21wbGV0ZTpuPT57bi5kYXRhc2V0LmNvbXBsX3R4dF9mcj1uLmRhdGFzZXQuaW5pdF9jb21wbF90eHRfZnIucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLGN0YVBheW1lbnRUZXh0RnJbMF0pLnJlcGxhY2UoInskUEFZTUVOVFlQRX0iLGN0YVBheW1lbnRUZXh0RnJbMV0pO24uZGF0YXNldC5jb21wbF90eHRfZW49bi5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2VuLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEVuWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IixjdGFQYXltZW50VGV4dEVuWzFdKTtuPXtwYXltZW50Ont9fTtfbG9jYWxTdG9yYWdlR2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIpJiYobj1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIikpKTtsZXQgcD0iRlJFTkNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT9jdGFQYXltZW50VGV4dEZyOmN0YVBheW1lbnRUZXh0RW47bi5wYXltZW50PXtsaXN0UHJpY2U6cFsyXXx8CiIiLHBheW1lbnQ6cFswXXx8IiIscmF0ZTpwWzFdfHwiIixwYXltZW50VmFsdWU6Y3RhUGF5bWVudFZhbHVlc3x8W119O19sb2NhbFN0b3JhZ2VTZXQoInJldGFpbF90cmFja19kYXRhIixKU09OLnN0cmluZ2lmeShuKSwzMCk7Q29va2llcy5zZXQoImN0YV9kYXRhX3ZhbGlkIiwxLDEsIi8iKX19fSk7Yj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIgYSIpO2IuaW5uZXJUZXh0PSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJDb25maXJtIjoiQ29uZmlybWVyIjtiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixuPT57bi5wcmV2ZW50RGVmYXVsdCgpO249ImNhc2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmlzKCI6aGlkZGVuIikmJgohbnx8ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChyKTskKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuY2xvc2UoKX0pO2c9bj0+e249ImNhc2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmlzKCI6aGlkZGVuIikmJiFufHxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHIpfTtsZXQgbT1hLnBheW1lbnRUeXBlO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYoYj1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLG09InVuZGVmaW5lZCIhPWJbMF0\/YlswXTptLG09ImxlYXNpbmciPT09bT8ibGVhc2UiOiJmaW5hbmNpbmciPT09bT8iZmluYW5jZSI6bSk7ImxlYXNlIj09bSYmYz9jLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGljayIsCntkZXRhaWw6e2lzRmlyc3RSdW46ITB9fSkpOiJmaW5hbmNlIj09bSYmZT9lLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjbGljayIse2RldGFpbDp7aXNGaXJzdFJ1bjohMH19KSk6ZC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2xpY2siLHtkZXRhaWw6e2lzRmlyc3RSdW46ITB9fSkpOyQoIi5yZXZlYWwtbW9kYWwiKS5vZmYoInBvcHVwaXplci5jbG9zZSIsZykub24oInBvcHVwaXplci5jbG9zZSIsZyk7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuc2hvdygpfX0sMTAwKTtjYWxjVXBkYXRlU3R5bGVJbmZvKGEuc3R5bGVpZCl9CmZ1bmN0aW9uIGNhbGNVcGRhdGVQYXltZW50SW5mbygpe3ZhciBhPWdldFBvcENvbnRhaW5TZXR0aW5ncygpLGM9KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0UGF5bWVudERhdGFGb3JTdHlsZUlEP3dzd2lkdGg9MCIsZT1hLnBheW1lbnRUeXBlLGQ9MCxiPXBhcnNlSW50KCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnZhbCgpfHwwKSxnPW51bGwscj1udWxsLG09Z2V0T3B0aW9uc0Ftb3VudChhKSxuPWdldEFjY2Vzc29yaWVzQW1vdW50KGEpLHA9Z2V0U2VsZWN0ZWRBY2Nlc3NvcmllcyhhKSx3PWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudChhKSx5PWEuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWEubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpLAp0PSExLHY9YS5oYXNPd25Qcm9wZXJ0eSgic3RvY2tOdW1iZXIiKT9hLnN0b2NrTnVtYmVyOiIiLEE9YS5oYXNPd25Qcm9wZXJ0eSgidmluIik\/YS52aW46IiI7aWYoeSYmIXYpe3ZhciB4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXN0b2NrbnVtYmVyIik7eCYmKHY9eC52YWx1ZXx8IiIpfXkmJiFBJiYoeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJihBPXgudmFsdWV8fCIiKTt5JiYhYS5zdHlsZWlkJiYoeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlU3R5bGVJRCIpKSYmKGEuc3R5bGVpZD14LnZhbHVlfHxhLnN0eWxlaWQpO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYocj1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLGU9InVuZGVmaW5lZCIhPXJbMF0\/clswXTplLHQ9clsxXSxkPXBhcnNlSW50KHJbNF0pLWIsZD0wPmQ\/MDpkLGc9CnJbMl0scj1yWzNdKTthLm5vTW90b2luc2lnaHRMZWFzZVBheW1lbnRzJiYibGVhc2UiPT1lJiYoZT0iZmluYW5jZSIsdD0hMSxkPTAscj1nPW51bGwpO2Eubm9Nb3RvaW5zaWdodEZpbmFuY2VQYXltZW50cyYmWyJmaW5hbmNlIiwiZmluYW5jaW5nIl0uaW5jbHVkZXMoZSkmJihlPSJsZWFzZSIsdD0hMSxkPTAscj1nPW51bGwpO2xldCB6PVtdO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb25kaXRpb25hbC1yZWJhdGUtY2hlY2tib3giKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuY2hlY2tlZCYmKGY9Zi5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZGl0aW9uYWwtcmViYXRlLWlkIikpJiZ6LnB1c2goZil9KTtjYWxjVXBkYXRlUGF5bWVudFhocj0kLmFqYXgoe3VybDpjLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJKU09OIixkYXRhOntzdHlsZWlkOmEuc3R5bGVpZCxwYXltZW50VHlwZTplLGRvd25wYXltZW50OmIrZCxvcHRpb25zQW1vdW50Om0scGF5bWVudEZyZXF1ZW5jeTpnLGttQWxsb3dhbmNlOnIsCmlzSW52ZW50b3J5Onksb3B0aW9uczptLHNuOnYsdmluOkEsY29uZGl0aW9uYWxSZWJhdGVJZHM6ei5qb2luKCIsIiksYWNjZXNzb3JpZXM6bixzZWxlY3RlZEFjY2Vzc29yaWVzOnAscHJvdGVjdGlvblBsYW5zOnd9LHN1Y2Nlc3M6ZnVuY3Rpb24oZil7Zi5zZWxlY3RlZFRlcm09dDskKCIjbWF4RG93blBheW1lbnRGb3JUcmltIikudmFsKGYubWF4RG93bik7JCgiI21heERvd25QYXltZW50RmluYW5jZUZvclRyaW0iKS52YWwoZi5tYXhEb3duRmluYW5jZSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2Ugb3B0aW9uIikucmVtb3ZlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoZCk7ZT0ibGVhc2UiPT09ZT8ibGVhc2luZyI6ImZpbmFuY2UiPT09ZT8iZmluYW5jaW5nIjplOyJjYXNoIj09PWUmJigkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCkpOwpmLmN1cnJlbnRQYXltZW50JiYwIT09Zi5jdXJyZW50UGF5bWVudC5sZW5ndGh8fCJjYXNoIj09PWU\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5zaG93KCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMSksZi5jdXJyZW50UGF5bWVudCYmMDxmLmN1cnJlbnRQYXltZW50Lmxlbmd0aCYmKCQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKGYuY3VycmVudFBheW1lbnRbMF0uaW50ZXJ2YWwpLGU9ZXx8KCJsZWFzZSI9PT0KZi5jdXJyZW50UGF5bWVudFswXS50eXBlPyJsZWFzaW5nIjoiZmluYW5jaW5nIikpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCEwKSwkKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5zaG93KCkpO3Nob3dIaWRlUGF5bWVudFNlY3Rpb24oZixlKTtwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bihmKTsibGVhc2luZyI9PWU\/JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5zaG93KCk6JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCk7Z2V0Q2FzaFByaWNlQmxvY2soZik7CiJjYXNoIj09PWU\/ZW5hYmxlQ2FzaE9wdGlvbigpOmYuY3VycmVudFBheW1lbnQmJmYuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoY2FsY0N1clBheW1lbnQ9ZixzaG93UGF5bWVudHMoZi5jdXJyZW50UGF5bWVudCxmLnBheW1lbnRGZWVzLGYubWFrZWlkLGYpKX0sZXJyb3I6ZnVuY3Rpb24oZixxLGspeyJhYm9ydCIhPT1xJiZjb25zb2xlLmVycm9yKCJjYWxjVXBkYXRlUGF5bWVudEluZm86OiBQYXltZW50IGNhbGN1bGF0aW9uIGVycm9yOiIscSxrKX19KX0KZnVuY3Rpb24gZW5hYmxlQ2FzaE9wdGlvbigpeyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSdjYXNoJ10iKS5hZGRDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTskKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlTGVhc2UiKS5oaWRlKCk7JCgiLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlRmluYW5jZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvckNvbW1vbk5vdGljZSIpLmhpZGUoKTsKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlSW5jbHVkZWRGZWVzIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUNhc2giKS5wcm9wKCJoaWRkZW4iLCExKTskKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VGaW5hbmNlIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlTGVhc2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuc2hvdygpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuY2FsYy1wYXltZW50LWNhc2giKS5oaWRkZW49ITE7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMSk7CjE9PSQoIiNpc0RSU2l0ZSIpLmxlbmd0aCYmIjEiPT0kKCIjaXNEUlNpdGUiKS52YWwoKSYmY2hhbmdlUGFnZUNhc2hWYWx1ZSgpfQpmdW5jdGlvbiBjaGFuZ2VQYWdlQ2FzaFZhbHVlKCl7aWYobnVsbCE9PWNhc2hQcmljZUZvclBhZ2Upe3ZhciBhPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIixjPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGNhc2hQcmljZUZvclBhZ2UudG9TdHJpbmcoKSksZT1zdG9yZS5nZXQoImkxOG4iKS5ERUZBVUxUX1BBWU1FTlRfQ0FTSCxkPSc8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQgZm9ybWF0LXByaWNlIj4nK2MrIjwvc3Bhbj4iLGI9c3RvcmUuZ2V0KCJpMThuIikuTEFCRUxfQkVGT1JFX1RBWEVTLnRvTG93ZXJDYXNlKCk7JCgiLnBheW1lbnRXcmFwcGVyIC5wYXltZW50TGluZTIsIC5wYXltZW50V3JhcHBlck1vYmlsZVZEUCAucGF5bWVudExpbmUxIikuaHRtbChlKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMSwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTIiKS5odG1sKGQpOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUzLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMyIpLmh0bWwoYik7CmE9IkVOR0xJU0giPT09YT8iJCIrYzpjKyIgJCI7Y3RhUGF5bWVudFRleHRGcj1bYSwiQ29tcHRhbnQiLCIiXTtjdGFQYXltZW50VGV4dEVuPVthLCJDYXNoIiwiIl07Y3RhUGF5bWVudFZhbHVlcz1bY2FzaFByaWNlRm9yUGFnZSwwLDAsImNhc2giXTskKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoJiYoJCgiLmJucF9wYXltZW50X2NvbnRhaW5lciIpLmhpZGUoKSwkKCIucGF5bWVudEluZm9CdWJibGVCblAiKS5oaWRlKCkpOyQoIiNkYXJrdG9vbHRpcC1wYXltZW50V3JhcHBlciwgI2Rhcmt0b29sdGlwLXZkcFBheW1lbnRUb29sdGlwLCAjZGFya3Rvb2x0aXAtdmRwSW5mb1Rvb2x0aXAsICNkYXJrdG9vbHRpcC12ZHBVc2VkSW5mb1Rvb2x0aXAiKS5yZW1vdmUoKTskKCIudmRwUGF5bWVudFRvb2x0aXAsIC5wYXltZW50V3JhcHBlciAudmRwSW5mb1Rvb2x0aXAsIC5wYXltZW50V3JhcHBlciAudmRwVXNlZEluZm9Ub29sdGlwIikuZGFya1Rvb2x0aXAoe29wYWNpdHk6MH0pfX0KZnVuY3Rpb24gZ2V0Q2FzaFByaWNlQmxvY2soYSl7dmFyIGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKSxlPWdldFBvcENvbnRhaW5TZXR0aW5ncygpLGQ9ZS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJiJ0cnVlIj09ZS5ub1RyaW1TZWxlY3R8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCksYj0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCl8fCJGUkVOQ0giO2xldCBnPXBhcnNlSW50KGEub3JpZ2luYWxQcmljZXx8ZS52ZWhpY2xlSW5mbyYmZS52ZWhpY2xlSW5mby5tc3JwQWxsSW58fDApO3ZhciByPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGcudG9TdHJpbmcoKSk7bGV0IG09Yy5xdWVyeVNlbGVjdG9yKCIuY2FsYy1wYXltZW50LWNhc2giKTt2YXIgbj0iMSI9PWMucXVlcnlTZWxlY3RvcigiI2Rpc3BsYXlCcmVha2Rvd24iKS52YWx1ZTsKbGV0IHA9IjEiPT1jLnF1ZXJ5U2VsZWN0b3IoIiNoaWRlUmViYXRlcyIpLnZhbHVlO3ZhciB3PSIxIj09Yy5xdWVyeVNlbGVjdG9yKCIjc2NyYXRjaE9yaWdpbmFsUHJpY2UiKS52YWx1ZTtsZXQgeT0iRU5HTElTSCI9PWI\/IlN0YXJ0aW5nIGF0Ijoiw4AgcGFydGlyIGRlIjtjPSJFTkdMSVNIIj09Yj8iWW91ciBwcmljZSI6IlZvdHJlIHByaXgiO2QmJih5PSQoIiNORVdJTlZfUFJJQ0VfTEFCRUxfT1JJR0lOQUwiKS52YWwoKSxjPSQoIiNORVdJTlZfUFJJQ0VfTEFCRUxfRklOQUwiKS52YWwoKSxlLnZlaGljbGVJbmZvJiZ5LnJlcGxhY2UoInskTUFLRX0iLGUudmVoaWNsZUluZm8ubWFrZSkucmVwbGFjZSgieyRNT0RFTH0iLGUudmVoaWNsZUluZm8uQ0ZNb2RlbE5hbWUpLnJlcGxhY2UoInskVkVSU0lPTn0iLGUudmVoaWNsZUluZm8uQ0ZTdHlsZU5hbWUpLnJlcGxhY2UoInskWUVBUn0iLGUudmVoaWNsZUluZm8ueWVhcikpO2xldCB0PSJFTkdMSVNIIj09Yj8iZGVzY0VuIjoiZGVzY0ZyIjsKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlVG90YWwiKS5odG1sKGcpO2U9dyYmYS5wcmljZUFtZW5kZW1lbnRzJiYwPmEucHJpY2VBbWVuZGVtZW50cy50b3RhbD8ic3RyaWtlLXByaWNlIjoiIjtyPWAKCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCTxzcGFuIGNsYXNzPSJwcmljZU5hbWUiPiR7biYmIXA\/Yzp5fTwvc3Bhbj4KCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlICR7ImZvcm1hdC1wcmljZSJ9ICR7ZX0iPiR7cn08L3NwYW4+CgkJPC9kaXY+YDtpZigwPT0oYS5wcmljZUFtZW5kZW1lbnRzfHxbXSkubGVuZ3RoKW0uaW5uZXJIVE1MPXI7ZWxzZXt3PShhLnByaWNlQW1lbmRlbWVudHMuZmVlc0xpc3R8fFtdKS5yZWR1Y2UoKHosZik9PntpZigwPT1mLmFtb3VudClyZXR1cm4gejtsZXQgcT1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihmLmFtb3VudC50b1N0cmluZygpKTtyZXR1cm4geis9YAoJCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4keyhuZXcgVGV4dERlY29kZXIpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihmW3RdKSxrPT5rLmNoYXJDb2RlQXQoMCkpKX08L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2UtdmFsdWUgJHsiZm9ybWF0LXByaWNlIn0iPiR7cX08L3NwYW4+CgkJCTwvZGl2PgoJCWB9LCIiKTt2YXIgdj0oYS5wcmljZUFtZW5kZW1lbnRzLmluY2VudGl2ZXNMaXN0fHxbXSkucmVkdWNlKCh6LGYpPT57aWYoMD09Zi5hbW91bnQpcmV0dXJuIHo7bGV0IHE9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZi5hbW91bnQudG9TdHJpbmcoKSk7cmV0dXJuIHorPWAKCQkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHsobmV3IFRleHREZWNvZGVyKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoZlt0XSksaz0+ay5jaGFyQ29kZUF0KDApKSl9PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlICR7ImZvcm1hdC1wcmljZSJ9Ij4tJHtxfTwvc3Bhbj4KCQkJPC9kaXY+CgkJYH0sIiIpO2Q9KGEucHJpY2VBbWVuZGVtZW50cy5wb3N0VGF4SW5jZW50aXZlc0xpc3R8fFtdKS5yZWR1Y2UoKHosZik9PntpZigwPT1mLmFtb3VudClyZXR1cm4gejtsZXQgcT1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihmLmFtb3VudC50b1N0cmluZygpKTtyZXR1cm4geis9YAoJCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4keyhuZXcgVGV4dERlY29kZXIpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihmW3RdKSxrPT5rLmNoYXJDb2RlQXQoMCkpKX08L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2UtdmFsdWUgJHsiZm9ybWF0LXByaWNlIn0iPi0ke3F9PC9zcGFuPgoJCQk8L2Rpdj4KCQlgfSwiIik7dmFyIEE9Zy0oYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsRmVlfHwwKSsoYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsUmViYXRlfHwwKSx4PTA8KGEucHJpY2VBbWVuZGVtZW50cy5jb25kaXRpb25hbFJlYmF0ZXNUb3RhbHx8MCk7Yj14JiZhLnByaWNlQW1lbmRlbWVudHMuZmluYWxQcmljZT9hLnByaWNlQW1lbmRlbWVudHMuZmluYWxQcmljZTpnO1siTkVXQ0FSUyIsIk5FV0NBUkRFVEFJTFMiXS5pbmNsdWRlcyhzaXRlUGFnZS5uYW1lKXx8KEE9Zy0oYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsRmVlfHwwKSsoYS5wcmljZUFtZW5kZW1lbnRzLnRvdGFsUmViYXRlfHwwKSxiPXgmJmEucHJpY2VBbWVuZGVtZW50cy5maW5hbFByaWNlP2EucHJpY2VBbWVuZGVtZW50cy5maW5hbFByaWNlOmcpO2Nhc2hQcmljZUZvclBhZ2U9YjtBPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKEEudG9TdHJpbmcoKSk7Yj1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihiLnRvU3RyaW5nKCkpOwphPXcubGVuZ3RofHx2Lmxlbmd0aDtuPW4mJiFwJiZhP2AKCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCTxzcGFuIGNsYXNzPSJwcmljZU5hbWUiPiR7eX08L3NwYW4+CgkJCTxzcGFuIGNsYXNzPSJwcmljZS12YWx1ZSAkeyJmb3JtYXQtcHJpY2UifSAke2V9Ij4ke0F9PC9zcGFuPgoJCTwvZGl2PmArdyt2OiIiO2EmJihyPWAKCQkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHtjfTwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSIkeyIiIT1uPyJwcmljZUZpbmFsIjoiIn0gJHsiZm9ybWF0LXByaWNlIn0iPiR7Yn08L3NwYW4+CgkJCTwvZGl2PmApO20uaW5uZXJIVE1MPW4rcitkfX0KZnVuY3Rpb24gZ2V0T3B0aW9uc0Ftb3VudChhKXt2YXIgYz1hLnBheW1lbnRPcHRpb25zP2EucGF5bWVudE9wdGlvbnM6MDthLmhhc093blByb3BlcnR5KCJub1RyaW1TZWxlY3QiKSYmInRydWUiPT1hLm5vVHJpbVNlbGVjdHx8InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCQoIiNQQUdFSUQiKS52YWwoKTthPWEuY29uc2lkZXJJbnZlbnRvcnk\/YS5jb25zaWRlckludmVudG9yeToiMCI7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbENvbmZpZyYmImZ1bmN0aW9uIj09PXR5cGVvZiBtb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlO2lmKGV8fGEmJmUpYz1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRPcHRpb25zVG90YWwsYT1wYXJzZUludChtb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuZGVmYXVsdE9wdGlvbkFtb3VudCksMDxhJiYoYy09YSxjPU1hdGgubWF4KDAsYykpO3JldHVybiBjfHwwfQpmdW5jdGlvbiBnZXRBY2Nlc3Nvcmllc0Ftb3VudChhKXt2YXIgYz0wO2EuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWEubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8JCgiI1BBR0VJRCIpLnZhbCgpO2E9YS5jb25zaWRlckludmVudG9yeT9hLmNvbnNpZGVySW52ZW50b3J5OiIwIjt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGU7KGV8fGEmJmUpJiZ2b2lkIDAhPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZEFjY1RvdGFsJiYoYz1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRBY2NUb3RhbCk7cmV0dXJuIGN8fDB9CmZ1bmN0aW9uIGdldFNlbGVjdGVkQWNjZXNzb3JpZXMoYSl7dmFyIGM9IiI7YT1hLmNvbnNpZGVySW52ZW50b3J5P2EuY29uc2lkZXJJbnZlbnRvcnk6IjAiO3ZhciBlPSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kZWxDb25maWcmJiJmdW5jdGlvbiI9PT10eXBlb2YgbW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZTsoZXx8YSYmZSkmJnZvaWQgMCE9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkQWNjSWRzJiYoYz1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRBY2NJZHMuam9pbigiLCIpKTtyZXR1cm4gY3x8IiJ9CmZ1bmN0aW9uIGdldFByb3RlY3Rpb25QbGFuc0Ftb3VudChhKXt2YXIgYz0wO2EuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWEubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8JCgiI1BBR0VJRCIpLnZhbCgpO2E9YS5jb25zaWRlckludmVudG9yeT9hLmNvbnNpZGVySW52ZW50b3J5OiIwIjt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGU7KGV8fGEmJmUpJiZ2b2lkIDAhPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZFByb3RlY3Rpb25QbGFuVG90YWwmJihjPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZFByb3RlY3Rpb25QbGFuVG90YWwpO3JldHVybiBjfHwwfQpmdW5jdGlvbiBwYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cQig\/PShcZHszfSkrKD8hXGQpKS9nLCIsIil9ZnVuY3Rpb24gcGF5bWVudENhbGN1bGF0b3JDbGlja2VkVHJpZ2dlcihhLGMpeyQoYSkudHJpZ2dlcigicGF5bWVudENhbGN1bGF0b3IuY2xpY2siLHtvcmlnRXZlbnQ6Y30pO2E9bmV3IEV2ZW50KCJwYXltZW50Q2FsY3VsYXRvci5jbGljayIpO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoYSl9ZnVuY3Rpb24gcGF5bWVudENhbGN1bGF0b3JDbGlja2VkTmV3VkRQVHJpZ2dlcihhLGMpe3ZhciBlPSQoIiNwb3B1cG1ha2UiKS52YWwoKSxkPSQoIiNwb3B1cG1vZGVsIikudmFsKCksYj0kKCIjcG9wdXB5ZWFyIikudmFsKCk7Z2FUcmFjaygiX3RyYWNrRXZlbnQiLCJOZXctVkRQLU91dGJvdW5kLWNsaWNrcyIsIkNhbGN1bGF0cmljZSIsZSsiLSIrZCsiLSIrYik7cGF5bWVudENhbGN1bGF0b3JDbGlja2VkVHJpZ2dlcihhLGMpfQpmdW5jdGlvbiBmb3JtYXRFZmZlY3RpdmVSYXRlVGV4dChhLGMsZSl7ZT12b2lkIDA9PT1lPyIiOmU7YT0iPHNwYW4gIitjKyI+IithKyI8L3NwYW4+JSI7YT0iRU5HTElTSCI9PWFjdGl2ZUxhbmc\/YSsiIEFQUiI6IlRhdXggIithO3JldHVybiAkKCIjaXNtb2JpbGUiKS52YWwoKT8iPGJyLz48ZGl2ICIrZSsiPigiK2ErIik8L2Rpdj4iOiIgPGRpdiAiK2UrIj4oICIrYSsiICk8L2Rpdj4ifQpmdW5jdGlvbiBwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bihhKXt0cnl7aWYoYS5sZWFzZSYmMDxhLmxlYXNlLmxlbmd0aCl7dmFyIGM9W107YS5sZWFzZS5mb3JFYWNoKGZ1bmN0aW9uKGQpey0xPT0kLmluQXJyYXkoZC5rbV9hbGxvd2FuY2UsYykmJmMucHVzaChkLmttX2FsbG93YW5jZSl9KTtjLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGI9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZC50b0ZpeGVkKDApKTskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLmFwcGVuZChuZXcgT3B0aW9uKGIrIiBrbSIsZCkpfSk7dmFyIGU9MkU0O2EuY3VycmVudFBheW1lbnRbMF0mJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlJiYoZT0wPGEuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlP2EuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlOjJFNCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoZSl9fWNhdGNoKGQpe2NvbnNvbGUuZXJyb3IoIkVycm9yIHBvcHVsYXRpbmcgbGVhc2Uga20gYWxsb3dhbmNlIGRyb3Bkb3duIGluIHRoZSBmdW5jdGlvbiBwb3B1bGF0ZUxlYXNlS01BbGxvd2FuY2VEcm9wZG93bjogIiwKZCl9fQpmdW5jdGlvbiBzaG93SGlkZVBheW1lbnRTZWN0aW9uKGEsYyl7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5yZW1vdmVDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTswPCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0nIitjKyInXSIpLmxlbmd0aCYmJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSciK2MrIiddIikuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7ImNhc2giIT09YyYmKHZvaWQgMCE9YS5maW5hbmNlJiYwPT09YS5maW5hbmNlLmxlbmd0aD8kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUZpbmFuY2UiKS5oaWRlKCk6JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVGaW5hbmNlIikuc2hvdygpLHZvaWQgMCE9YS5sZWFzZSYmMD09PWEubGVhc2UubGVuZ3RoPyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlTGVhc2UiKS5oaWRlKCk6JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVMZWFzZSIpLnNob3coKSl9OwovKiogL20vanMvdmFuaWxsYWpzL2ltYXNrLm1pbi5qcyAqKi8KIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyJdLGUpOmUoKHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuSU1hc2s9e30pfSh0aGlzLChmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c\/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY\/c2VsZjp7fSxuPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lk1hdGg9PU1hdGgmJnR9LGk9bigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxuKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxuKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fG4oIm9iamVjdCI9PXR5cGVvZiBlJiZlKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxyPXt9LHU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX0scz0hdSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpLGE9IXUoKGZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdHx8dC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSksbz1hLGw9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsaD1vP2wuYmluZChsKTpmdW5jdGlvbigpe3JldHVybiBsLmFwcGx5KGwsYXJndW1lbnRzKX0sYz17fSxmPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLHA9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixkPXAmJiFmLmNhbGwoezE6Mn0sMSk7Yy5mPWQ\/ZnVuY3Rpb24odCl7dmFyIGU9cCh0aGlzLHQpO3JldHVybiEhZSYmZS5lbnVtZXJhYmxlfTpmO3ZhciB2LGcsaz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX0seT1hLG09RnVuY3Rpb24ucHJvdG90eXBlLGI9bS5iaW5kLF89bS5jYWxsLEE9eSYmYi5iaW5kKF8sXyksQz15P2Z1bmN0aW9uKHQpe3JldHVybiB0JiZBKHQpfTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmZnVuY3Rpb24oKXtyZXR1cm4gXy5hcHBseSh0LGFyZ3VtZW50cyl9fSxFPUMsRj1FKHt9LnRvU3RyaW5nKSxTPUUoIiIuc2xpY2UpLHc9ZnVuY3Rpb24odCl7cmV0dXJuIFMoRih0KSw4LC0xKX0sQj1DLEQ9dSx4PXcsTT1pLk9iamVjdCxPPUIoIiIuc3BsaXQpLFA9RCgoZnVuY3Rpb24oKXtyZXR1cm4hTSgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKHQpe3JldHVybiJTdHJpbmciPT14KHQpP08odCwiIik6TSh0KX06TSxUPWkuVHlwZUVycm9yLEk9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBUKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK3QpO3JldHVybiB0fSxqPVAsUj1JLFY9ZnVuY3Rpb24odCl7cmV0dXJuIGooUih0KSl9LEw9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9LE49TCxVPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9udWxsIT09dDpOKHQpfSx6PWkscT1MLEg9ZnVuY3Rpb24odCl7cmV0dXJuIHEodCk\/dDp2b2lkIDB9LFk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP0goelt0XSk6elt0XSYmelt0XVtlXX0sWj1DKHt9LmlzUHJvdG90eXBlT2YpLEc9WSgibmF2aWdhdG9yIiwidXNlckFnZW50Iil8fCIiLEs9aSwkPUcsVz1LLnByb2Nlc3MsWD1LLkRlbm8sSj1XJiZXLnZlcnNpb25zfHxYJiZYLnZlcnNpb24sUT1KJiZKLnY4O1EmJihnPSh2PVEuc3BsaXQoIi4iKSlbMF0+MCYmdlswXTw0PzE6Kyh2WzBdK3ZbMV0pKSwhZyYmJCYmKCEodj0kLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8dlsxXT49NzQpJiYodj0kLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYoZz0rdlsxXSk7dmFyIHR0PWcsZXQ9dSxudD0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFldCgoZnVuY3Rpb24oKXt2YXIgdD1TeW1ib2woKTtyZXR1cm4hU3RyaW5nKHQpfHwhKE9iamVjdCh0KWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZ0dCYmdHQ8NDF9KSksaXQ9bnQmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3IscnQ9WSx1dD1MLHN0PVosYXQ9aXQsb3Q9aS5PYmplY3QsbHQ9YXQ\/ZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fTpmdW5jdGlvbih0KXt2YXIgZT1ydCgiU3ltYm9sIik7cmV0dXJuIHV0KGUpJiZzdChlLnByb3RvdHlwZSxvdCh0KSl9LGh0PWkuU3RyaW5nLGN0PUwsZnQ9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBodCh0KX1jYXRjaCh0KXtyZXR1cm4iT2JqZWN0In19LHB0PWkuVHlwZUVycm9yLGR0PWZ1bmN0aW9uKHQpe2lmKGN0KHQpKXJldHVybiB0O3Rocm93IHB0KGZ0KHQpKyIgaXMgbm90IGEgZnVuY3Rpb24iKX0sdnQ9aCxndD1MLGt0PVUseXQ9aS5UeXBlRXJyb3IsbXQ9e2V4cG9ydHM6e319LGJ0PWksX3Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LEF0PWZ1bmN0aW9uKHQsZSl7dHJ5e190KGJ0LHQse3ZhbHVlOmUsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2gobil7YnRbdF09ZX1yZXR1cm4gZX0sQ3Q9QXQsRXQ9Il9fY29yZS1qc19zaGFyZWRfXyIsRnQ9aVtFdF18fEN0KEV0LHt9KSxTdD1GdDsobXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBTdFt0XXx8KFN0W3RdPXZvaWQgMCE9PWU\/ZTp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjIxLjAiLG1vZGU6Imdsb2JhbCIsY29weXJpZ2h0OiKpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsbGljZW5zZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMS4wL0xJQ0VOU0UiLHNvdXJjZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMifSk7dmFyIHd0PUksQnQ9aS5PYmplY3QsRHQ9ZnVuY3Rpb24odCl7cmV0dXJuIEJ0KHd0KHQpKX0seHQ9RHQsTXQ9Qyh7fS5oYXNPd25Qcm9wZXJ0eSksT3Q9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gTXQoeHQodCksZSl9LFB0PUMsVHQ9MCxJdD1NYXRoLnJhbmRvbSgpLGp0PVB0KDEuLnRvU3RyaW5nKSxSdD1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PXQ\/IiI6dCkrIilfIitqdCgrK1R0K0l0LDM2KX0sVnQ9aSxMdD1tdC5leHBvcnRzLE50PU90LFV0PVJ0LHp0PW50LHF0PWl0LEh0PUx0KCJ3a3MiKSxZdD1WdC5TeW1ib2wsWnQ9WXQmJll0LmZvcixHdD1xdD9ZdDpZdCYmWXQud2l0aG91dFNldHRlcnx8VXQsS3Q9ZnVuY3Rpb24odCl7aWYoIU50KEh0LHQpfHwhenQmJiJzdHJpbmciIT10eXBlb2YgSHRbdF0pe3ZhciBlPSJTeW1ib2wuIit0O3p0JiZOdChZdCx0KT9IdFt0XT1ZdFt0XTpIdFt0XT1xdCYmWnQ\/WnQoZSk6R3QoZSl9cmV0dXJuIEh0W3RdfSwkdD1oLFd0PVUsWHQ9bHQsSnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10W2VdO3JldHVybiBudWxsPT1uP3ZvaWQgMDpkdChuKX0sUXQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpO2lmKCJzdHJpbmciPT09ZSYmZ3Qobj10LnRvU3RyaW5nKSYmIWt0KGk9dnQobix0KSkpcmV0dXJuIGk7aWYoZ3Qobj10LnZhbHVlT2YpJiYha3QoaT12dChuLHQpKSlyZXR1cm4gaTtpZigic3RyaW5nIiE9PWUmJmd0KG49dC50b1N0cmluZykmJiFrdChpPXZ0KG4sdCkpKXJldHVybiBpO3Rocm93IHl0KCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX0sdGU9S3QsZWU9aS5UeXBlRXJyb3IsbmU9dGUoInRvUHJpbWl0aXZlIiksaWU9ZnVuY3Rpb24odCxlKXtpZighV3QodCl8fFh0KHQpKXJldHVybiB0O3ZhciBuLGk9SnQodCxuZSk7aWYoaSl7aWYodm9pZCAwPT09ZSYmKGU9ImRlZmF1bHQiKSxuPSR0KGksdCxlKSwhV3Qobil8fFh0KG4pKXJldHVybiBuO3Rocm93IGVlKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX1yZXR1cm4gdm9pZCAwPT09ZSYmKGU9Im51bWJlciIpLFF0KHQsZSl9LHJlPWx0LHVlPWZ1bmN0aW9uKHQpe3ZhciBlPWllKHQsInN0cmluZyIpO3JldHVybiByZShlKT9lOmUrIiJ9LHNlPVUsYWU9aS5kb2N1bWVudCxvZT1zZShhZSkmJnNlKGFlLmNyZWF0ZUVsZW1lbnQpLGxlPWZ1bmN0aW9uKHQpe3JldHVybiBvZT9hZS5jcmVhdGVFbGVtZW50KHQpOnt9fSxoZT0hcyYmIXUoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShsZSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpLGNlPXMsZmU9aCxwZT1jLGRlPWssdmU9VixnZT11ZSxrZT1PdCx5ZT1oZSxtZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3IuZj1jZT9tZTpmdW5jdGlvbih0LGUpe2lmKHQ9dmUodCksZT1nZShlKSx5ZSl0cnl7cmV0dXJuIG1lKHQsZSl9Y2F0Y2godCl7fWlmKGtlKHQsZSkpcmV0dXJuIGRlKCFmZShwZS5mLHQsZSksdFtlXSl9O3ZhciBiZT17fSxfZT1zJiZ1KChmdW5jdGlvbigpe3JldHVybiA0MiE9T2JqZWN0LmRlZmluZVByb3BlcnR5KChmdW5jdGlvbigpe30pLCJwcm90b3R5cGUiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZX0pKSxBZT1pLENlPVUsRWU9QWUuU3RyaW5nLEZlPUFlLlR5cGVFcnJvcixTZT1mdW5jdGlvbih0KXtpZihDZSh0KSlyZXR1cm4gdDt0aHJvdyBGZShFZSh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKX0sd2U9cyxCZT1oZSxEZT1fZSx4ZT1TZSxNZT11ZSxPZT1pLlR5cGVFcnJvcixQZT1PYmplY3QuZGVmaW5lUHJvcGVydHksVGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixJZT0iZW51bWVyYWJsZSIsamU9ImNvbmZpZ3VyYWJsZSIsUmU9IndyaXRhYmxlIjtiZS5mPXdlP0RlP2Z1bmN0aW9uKHQsZSxuKXtpZih4ZSh0KSxlPU1lKGUpLHhlKG4pLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiYicHJvdG90eXBlIj09PWUmJiJ2YWx1ZSJpbiBuJiZSZSBpbiBuJiYhbi53cml0YWJsZSl7dmFyIGk9VGUodCxlKTtpJiZpLndyaXRhYmxlJiYodFtlXT1uLnZhbHVlLG49e2NvbmZpZ3VyYWJsZTpqZSBpbiBuP24uY29uZmlndXJhYmxlOmkuY29uZmlndXJhYmxlLGVudW1lcmFibGU6SWUgaW4gbj9uLmVudW1lcmFibGU6aS5lbnVtZXJhYmxlLHdyaXRhYmxlOiExfSl9cmV0dXJuIFBlKHQsZSxuKX06UGU6ZnVuY3Rpb24odCxlLG4pe2lmKHhlKHQpLGU9TWUoZSkseGUobiksQmUpdHJ5e3JldHVybiBQZSh0LGUsbil9Y2F0Y2godCl7fWlmKCJnZXQiaW4gbnx8InNldCJpbiBuKXRocm93IE9lKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fTt2YXIgVmU9YmUsTGU9ayxOZT1zP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gVmUuZih0LGUsTGUoMSxuKSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1uLHR9LFVlPXtleHBvcnRzOnt9fSx6ZT1MLHFlPUZ0LEhlPUMoRnVuY3Rpb24udG9TdHJpbmcpO3plKHFlLmluc3BlY3RTb3VyY2UpfHwocWUuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gSGUodCl9KTt2YXIgWWUsWmUsR2UsS2U9cWUuaW5zcGVjdFNvdXJjZSwkZT1MLFdlPUtlLFhlPWkuV2Vha01hcCxKZT0kZShYZSkmJi9uYXRpdmUgY29kZS8udGVzdChXZShYZSkpLFFlPW10LmV4cG9ydHMsdG49UnQsZW49UWUoImtleXMiKSxubj17fSxybj1KZSx1bj1pLHNuPUMsYW49VSxvbj1OZSxsbj1PdCxobj1GdCxjbj1mdW5jdGlvbih0KXtyZXR1cm4gZW5bdF18fChlblt0XT10bih0KSl9LGZuPW5uLHBuPSJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsZG49dW4uVHlwZUVycm9yLHZuPXVuLldlYWtNYXA7aWYocm58fGhuLnN0YXRlKXt2YXIgZ249aG4uc3RhdGV8fChobi5zdGF0ZT1uZXcgdm4pLGtuPXNuKGduLmdldCkseW49c24oZ24uaGFzKSxtbj1zbihnbi5zZXQpO1llPWZ1bmN0aW9uKHQsZSl7aWYoeW4oZ24sdCkpdGhyb3cgbmV3IGRuKHBuKTtyZXR1cm4gZS5mYWNhZGU9dCxtbihnbix0LGUpLGV9LFplPWZ1bmN0aW9uKHQpe3JldHVybiBrbihnbix0KXx8e319LEdlPWZ1bmN0aW9uKHQpe3JldHVybiB5bihnbix0KX19ZWxzZXt2YXIgYm49Y24oInN0YXRlIik7Zm5bYm5dPSEwLFllPWZ1bmN0aW9uKHQsZSl7aWYobG4odCxibikpdGhyb3cgbmV3IGRuKHBuKTtyZXR1cm4gZS5mYWNhZGU9dCxvbih0LGJuLGUpLGV9LFplPWZ1bmN0aW9uKHQpe3JldHVybiBsbih0LGJuKT90W2JuXTp7fX0sR2U9ZnVuY3Rpb24odCl7cmV0dXJuIGxuKHQsYm4pfX12YXIgX249e3NldDpZZSxnZXQ6WmUsaGFzOkdlLGVuZm9yY2U6ZnVuY3Rpb24odCl7cmV0dXJuIEdlKHQpP1plKHQpOlllKHQse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuO2lmKCFhbihlKXx8KG49WmUoZSkpLnR5cGUhPT10KXRocm93IGRuKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrdCsiIHJlcXVpcmVkIik7cmV0dXJuIG59fX0sQW49cyxDbj1PdCxFbj1GdW5jdGlvbi5wcm90b3R5cGUsRm49QW4mJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsU249Q24oRW4sIm5hbWUiKSx3bj1TbiYmInNvbWV0aGluZyI9PT1mdW5jdGlvbigpe30ubmFtZSxCbj1TbiYmKCFBbnx8QW4mJkZuKEVuLCJuYW1lIikuY29uZmlndXJhYmxlKSxEbj1pLHhuPUwsTW49T3QsT249TmUsUG49QXQsVG49S2UsSW49e0VYSVNUUzpTbixQUk9QRVI6d24sQ09ORklHVVJBQkxFOkJufS5DT05GSUdVUkFCTEUsam49X24uZ2V0LFJuPV9uLmVuZm9yY2UsVm49U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpOyhVZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLHU9ISFpJiYhIWkudW5zYWZlLHM9ISFpJiYhIWkuZW51bWVyYWJsZSxhPSEhaSYmISFpLm5vVGFyZ2V0R2V0LG89aSYmdm9pZCAwIT09aS5uYW1lP2kubmFtZTplO3huKG4pJiYoIlN5bWJvbCgiPT09U3RyaW5nKG8pLnNsaWNlKDAsNykmJihvPSJbIitTdHJpbmcobykucmVwbGFjZSgvXlN5bWJvbFwoKFteKV0qKVwpLywiJDEiKSsiXSIpLCghTW4obiwibmFtZSIpfHxJbiYmbi5uYW1lIT09bykmJk9uKG4sIm5hbWUiLG8pLChyPVJuKG4pKS5zb3VyY2V8fChyLnNvdXJjZT1Wbi5qb2luKCJzdHJpbmciPT10eXBlb2Ygbz9vOiIiKSkpLHQhPT1Ebj8odT8hYSYmdFtlXSYmKHM9ITApOmRlbGV0ZSB0W2VdLHM\/dFtlXT1uOk9uKHQsZSxuKSk6cz90W2VdPW46UG4oZSxuKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiB4bih0aGlzKSYmam4odGhpcykuc291cmNlfHxUbih0aGlzKX0pKTt2YXIgTG49e30sTm49TWF0aC5jZWlsLFVuPU1hdGguZmxvb3Isem49ZnVuY3Rpb24odCl7dmFyIGU9K3Q7cmV0dXJuIGUhPWV8fDA9PT1lPzA6KGU+MD9VbjpObikoZSl9LHFuPXpuLEhuPU1hdGgubWF4LFluPU1hdGgubWluLFpuPXpuLEduPU1hdGgubWluLEtuPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA\/R24oWm4odCksOTAwNzE5OTI1NDc0MDk5MSk6MH0sJG49S24sV249VixYbj1mdW5jdGlvbih0LGUpe3ZhciBuPXFuKHQpO3JldHVybiBuPDA\/SG4obitlLDApOlluKG4sZSl9LEpuPWZ1bmN0aW9uKHQpe3JldHVybiAkbih0Lmxlbmd0aCl9LFFuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7dmFyIHIsdT1XbihlKSxzPUpuKHUpLGE9WG4oaSxzKTtpZih0JiZuIT1uKXtmb3IoO3M+YTspaWYoKHI9dVthKytdKSE9cilyZXR1cm4hMH1lbHNlIGZvcig7cz5hO2ErKylpZigodHx8YSBpbiB1KSYmdVthXT09PW4pcmV0dXJuIHR8fGF8fDA7cmV0dXJuIXQmJi0xfX0sdGk9e2luY2x1ZGVzOlFuKCEwKSxpbmRleE9mOlFuKCExKX0sZWk9T3Qsbmk9VixpaT10aS5pbmRleE9mLHJpPW5uLHVpPUMoW10ucHVzaCksc2k9ZnVuY3Rpb24odCxlKXt2YXIgbixpPW5pKHQpLHI9MCx1PVtdO2ZvcihuIGluIGkpIWVpKHJpLG4pJiZlaShpLG4pJiZ1aSh1LG4pO2Zvcig7ZS5sZW5ndGg+cjspZWkoaSxuPWVbcisrXSkmJih+aWkodSxuKXx8dWkodSxuKSk7cmV0dXJuIHV9LGFpPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl0sb2k9c2ksbGk9YWkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtMbi5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gb2kodCxsaSl9O3ZhciBoaT17fTtoaS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIGNpPVksZmk9TG4scGk9aGksZGk9U2Usdmk9QyhbXS5jb25jYXQpLGdpPWNpKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbih0KXt2YXIgZT1maS5mKGRpKHQpKSxuPXBpLmY7cmV0dXJuIG4\/dmkoZSxuKHQpKTplfSxraT1PdCx5aT1naSxtaT1yLGJpPWJlLF9pPXUsQWk9TCxDaT0vI3xcLnByb3RvdHlwZVwuLyxFaT1mdW5jdGlvbih0LGUpe3ZhciBuPVNpW0ZpKHQpXTtyZXR1cm4gbj09Qml8fG4hPXdpJiYoQWkoZSk\/X2koZSk6ISFlKX0sRmk9RWkubm9ybWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShDaSwiLiIpLnRvTG93ZXJDYXNlKCl9LFNpPUVpLmRhdGE9e30sd2k9RWkuTkFUSVZFPSJOIixCaT1FaS5QT0xZRklMTD0iUCIsRGk9RWkseGk9aSxNaT1yLmYsT2k9TmUsUGk9VWUuZXhwb3J0cyxUaT1BdCxJaT1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPXlpKGUpLHI9YmkuZix1PW1pLmYscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYT1pW3NdO2tpKHQsYSl8fG4mJmtpKG4sYSl8fHIodCxhLHUoZSxhKSl9fSxqaT1EaSxSaT1mdW5jdGlvbih0LGUpe3ZhciBuLGkscix1LHMsYT10LnRhcmdldCxvPXQuZ2xvYmFsLGw9dC5zdGF0O2lmKG49bz94aTpsP3hpW2FdfHxUaShhLHt9KTooeGlbYV18fHt9KS5wcm90b3R5cGUpZm9yKGkgaW4gZSl7aWYodT1lW2ldLHI9dC5ub1RhcmdldEdldD8ocz1NaShuLGkpKSYmcy52YWx1ZTpuW2ldLCFqaShvP2k6YSsobD8iLiI6IiMiKStpLHQuZm9yY2VkKSYmdm9pZCAwIT09cil7aWYodHlwZW9mIHU9PXR5cGVvZiByKWNvbnRpbnVlO0lpKHUscil9KHQuc2hhbXx8ciYmci5zaGFtKSYmT2kodSwic2hhbSIsITApLFBpKG4saSx1LHQpfX0sVmk9c2ksTGk9YWksTmk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiBWaSh0LExpKX0sVWk9cyx6aT1DLHFpPWgsSGk9dSxZaT1OaSxaaT1oaSxHaT1jLEtpPUR0LCRpPVAsV2k9T2JqZWN0LmFzc2lnbixYaT1PYmplY3QuZGVmaW5lUHJvcGVydHksSmk9emkoW10uY29uY2F0KSxRaT0hV2l8fEhpKChmdW5jdGlvbigpe2lmKFVpJiYxIT09V2koe2I6MX0sV2koWGkoe30sImEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe1hpKHRoaXMsImIiLHt2YWx1ZTozLGVudW1lcmFibGU6ITF9KX19KSx7YjoyfSkpLmIpcmV0dXJuITA7dmFyIHQ9e30sZT17fSxuPVN5bWJvbCgpLGk9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gdFtuXT03LGkuc3BsaXQoIiIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF09dH0pKSw3IT1XaSh7fSx0KVtuXXx8WWkoV2koe30sZSkpLmpvaW4oIiIpIT1pfSkpP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPUtpKHQpLGk9YXJndW1lbnRzLmxlbmd0aCxyPTEsdT1aaS5mLHM9R2kuZjtpPnI7KWZvcih2YXIgYSxvPSRpKGFyZ3VtZW50c1tyKytdKSxsPXU\/SmkoWWkobyksdShvKSk6WWkobyksaD1sLmxlbmd0aCxjPTA7aD5jOylhPWxbYysrXSxVaSYmIXFpKHMsbyxhKXx8KG5bYV09b1thXSk7cmV0dXJuIG59OldpLHRyPVFpO1JpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6T2JqZWN0LmFzc2lnbiE9PXRyfSx7YXNzaWduOnRyfSk7dmFyIGVyPXt9O2VyW0t0KCJ0b1N0cmluZ1RhZyIpXT0ieiI7dmFyIG5yPWksaXI9IltvYmplY3Qgel0iPT09U3RyaW5nKGVyKSxycj1MLHVyPXcsc3I9S3QoInRvU3RyaW5nVGFnIiksYXI9bnIuT2JqZWN0LG9yPSJBcmd1bWVudHMiPT11cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGxyPWlyP3VyOmZ1bmN0aW9uKHQpe3ZhciBlLG4saTtyZXR1cm4gdm9pZCAwPT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihuPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHQpe319KGU9YXIodCksc3IpKT9uOm9yP3VyKGUpOiJPYmplY3QiPT0oaT11cihlKSkmJnJyKGUuY2FsbGVlKT8iQXJndW1lbnRzIjppfSxocj1pLlN0cmluZyxjcj1mdW5jdGlvbih0KXtpZigiU3ltYm9sIj09PWxyKHQpKXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmciKTtyZXR1cm4gaHIodCl9LGZyPXpuLHByPWNyLGRyPUksdnI9aS5SYW5nZUVycm9yLGdyPWZ1bmN0aW9uKHQpe3ZhciBlPXByKGRyKHRoaXMpKSxuPSIiLGk9ZnIodCk7aWYoaTwwfHxpPT0xLzApdGhyb3cgdnIoIldyb25nIG51bWJlciBvZiByZXBldGl0aW9ucyIpO2Zvcig7aT4wOyhpPj4+PTEpJiYoZSs9ZSkpMSZpJiYobis9ZSk7cmV0dXJuIG59O1JpKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITB9LHtyZXBlYXQ6Z3J9KTt2YXIga3I9Qyx5cj1Lbixtcj1jcixicj1JLF9yPWtyKGdyKSxBcj1rcigiIi5zbGljZSksQ3I9TWF0aC5jZWlsLEVyPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7dmFyIHIsdSxzPW1yKGJyKGUpKSxhPXlyKG4pLG89cy5sZW5ndGgsbD12b2lkIDA9PT1pPyIgIjptcihpKTtyZXR1cm4gYTw9b3x8IiI9PWw\/czooKHU9X3IobCxDcigocj1hLW8pL2wubGVuZ3RoKSkpLmxlbmd0aD5yJiYodT1Bcih1LDAscikpLHQ\/cyt1OnUrcyl9fSxGcj17c3RhcnQ6RXIoITEpLGVuZDpFcighMCl9LFNyPS9WZXJzaW9uXC8xMCg\/OlwuXGQrKXsxLDJ9KD86IFtcdy4vXSspPyg\/OiBNb2JpbGVcL1x3Kyk\/IFNhZmFyaVwvLy50ZXN0KEcpLHdyPUZyLnN0YXJ0O1JpKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOlNyfSx7cGFkU3RhcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHdyKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE\/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7dmFyIEJyPUZyLmVuZDtmdW5jdGlvbiBEcih0KXtyZXR1cm4gRHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I\/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU\/InN5bWJvbCI6dHlwZW9mIHR9LERyKHQpfWZ1bmN0aW9uIHhyKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gTXIodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkua2V5LGkpfX1mdW5jdGlvbiBPcih0LGUsbil7cmV0dXJuIGUmJk1yKHQucHJvdG90eXBlLGUpLG4mJk1yKHQsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdH1mdW5jdGlvbiBQcih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZJcih0LGUpfWZ1bmN0aW9uIFRyKHQpe3JldHVybiBUcj1PYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSxUcih0KX1mdW5jdGlvbiBJcih0LGUpe3JldHVybiBJcj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0sSXIodCxlKX1mdW5jdGlvbiBqcih0LGUpe2lmKG51bGw9PXQpcmV0dXJue307dmFyIG4saSxyPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbixpLHI9e30sdT1PYmplY3Qua2V5cyh0KTtmb3IoaT0wO2k8dS5sZW5ndGg7aSsrKW49dVtpXSxlLmluZGV4T2Yobik+PTB8fChyW25dPXRbbl0pO3JldHVybiByfSh0LGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciB1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7Zm9yKGk9MDtpPHUubGVuZ3RoO2krKyluPXVbaV0sZS5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodCxuKSYmKHJbbl09dFtuXSl9cmV0dXJuIHJ9ZnVuY3Rpb24gUnIodCxlKXtpZihlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIFZyKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbixpPVRyKHQpO2lmKGUpe3ZhciByPVRyKHRoaXMpLmNvbnN0cnVjdG9yO249UmVmbGVjdC5jb25zdHJ1Y3QoaSxhcmd1bWVudHMscil9ZWxzZSBuPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBScih0aGlzLG4pfX1mdW5jdGlvbiBMcih0LGUpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiZudWxsIT09KHQ9VHIodCkpOyk7cmV0dXJuIHR9ZnVuY3Rpb24gTnIoKXtyZXR1cm4gTnI9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldDpmdW5jdGlvbih0LGUsbil7dmFyIGk9THIodCxlKTtpZihpKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSk7cmV0dXJuIHIuZ2V0P3IuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP3Q6bik6ci52YWx1ZX19LE5yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBVcih0LGUsbixpKXtyZXR1cm4gVXI9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LnNldD9SZWZsZWN0LnNldDpmdW5jdGlvbih0LGUsbixpKXt2YXIgcix1PUxyKHQsZSk7aWYodSl7aWYoKHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih1LGUpKS5zZXQpcmV0dXJuIHIuc2V0LmNhbGwoaSxuKSwhMDtpZighci53cml0YWJsZSlyZXR1cm4hMX1pZihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKSl7aWYoIXIud3JpdGFibGUpcmV0dXJuITE7ci52YWx1ZT1uLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGUscil9ZWxzZSFmdW5jdGlvbih0LGUsbil7ZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW59KGksZSxuKTtyZXR1cm4hMH0sVXIodCxlLG4saSl9ZnVuY3Rpb24genIodCxlLG4saSxyKXtpZighVXIodCxlLG4saXx8dCkmJnIpdGhyb3cgbmV3IEVycm9yKCJmYWlsZWQgdG8gc2V0IHByb3BlcnR5Iik7cmV0dXJuIG59ZnVuY3Rpb24gcXIodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsPT1uKXJldHVybjt2YXIgaSxyLHU9W10scz0hMCxhPSExO3RyeXtmb3Iobj1uLmNhbGwodCk7IShzPShpPW4ubmV4dCgpKS5kb25lKSYmKHUucHVzaChpLnZhbHVlKSwhZXx8dS5sZW5ndGghPT1lKTtzPSEwKTt9Y2F0Y2godCl7YT0hMCxyPXR9ZmluYWxseXt0cnl7c3x8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IHJ9fXJldHVybiB1fSh0LGUpfHxmdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybjtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIEhyKHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpOyJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKTtpZigiTWFwIj09PW58fCJTZXQiPT09bilyZXR1cm4gQXJyYXkuZnJvbSh0KTtpZigiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBIcih0LGUpfSh0LGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSHIodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxpPW5ldyBBcnJheShlKTtuPGU7bisrKWlbbl09dFtuXTtyZXR1cm4gaX1SaSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpTcn0se3BhZEVuZDpmdW5jdGlvbih0KXtyZXR1cm4gQnIodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxSaSh7Z2xvYmFsOiEwfSx7Z2xvYmFsVGhpczppfSk7dmFyIFlyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt4cih0aGlzLHQpLE9iamVjdC5hc3NpZ24odGhpcyx7aW5zZXJ0ZWQ6IiIscmF3SW5zZXJ0ZWQ6IiIsc2tpcDohMSx0YWlsU2hpZnQ6MH0sZSl9cmV0dXJuIE9yKHQsW3trZXk6ImFnZ3JlZ2F0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmF3SW5zZXJ0ZWQrPXQucmF3SW5zZXJ0ZWQsdGhpcy5za2lwPXRoaXMuc2tpcHx8dC5za2lwLHRoaXMuaW5zZXJ0ZWQrPXQuaW5zZXJ0ZWQsdGhpcy50YWlsU2hpZnQrPXQudGFpbFNoaWZ0LHRoaXN9fSx7a2V5OiJvZmZzZXQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRhaWxTaGlmdCt0aGlzLmluc2VydGVkLmxlbmd0aH19XSksdH0oKTtmdW5jdGlvbiBacih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBTdHJpbmd9dmFyIEdyPSJOT05FIixLcj0iTEVGVCIsJHI9IkZPUkNFX0xFRlQiLFdyPSJSSUdIVCIsWHI9IkZPUkNFX1JJR0hUIjtmdW5jdGlvbiBKcih0KXtyZXR1cm4gdC5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8W1xdXC9cXF0pL2csIlxcJDEiKX1mdW5jdGlvbiBRcih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Olt0LG5ldyBZcl19ZnVuY3Rpb24gdHUodCxlKXtpZihlPT09dClyZXR1cm4hMDt2YXIgbixpPUFycmF5LmlzQXJyYXkoZSkscj1BcnJheS5pc0FycmF5KHQpO2lmKGkmJnIpe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3Iobj0wO248ZS5sZW5ndGg7bisrKWlmKCF0dShlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfWlmKGkhPXIpcmV0dXJuITE7aWYoZSYmdCYmIm9iamVjdCI9PT1EcihlKSYmIm9iamVjdCI9PT1Ecih0KSl7dmFyIHU9ZSBpbnN0YW5jZW9mIERhdGUscz10IGluc3RhbmNlb2YgRGF0ZTtpZih1JiZzKXJldHVybiBlLmdldFRpbWUoKT09dC5nZXRUaW1lKCk7aWYodSE9cylyZXR1cm4hMTt2YXIgYT1lIGluc3RhbmNlb2YgUmVnRXhwLG89dCBpbnN0YW5jZW9mIFJlZ0V4cDtpZihhJiZvKXJldHVybiBlLnRvU3RyaW5nKCk9PXQudG9TdHJpbmcoKTtpZihhIT1vKXJldHVybiExO3ZhciBsPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxsLmxlbmd0aDtuKyspaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGxbbl0pKXJldHVybiExO2ZvcihuPTA7bjxsLmxlbmd0aDtuKyspaWYoIXR1KHRbbFtuXV0sZVtsW25dXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuISghZXx8IXR8fCJmdW5jdGlvbiIhPXR5cGVvZiBlfHwiZnVuY3Rpb24iIT10eXBlb2YgdCkmJmUudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKX12YXIgZXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbixpLHIpe2Zvcih4cih0aGlzLHQpLHRoaXMudmFsdWU9ZSx0aGlzLmN1cnNvclBvcz1uLHRoaXMub2xkVmFsdWU9aSx0aGlzLm9sZFNlbGVjdGlvbj1yO3RoaXMudmFsdWUuc2xpY2UoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKSE9PXRoaXMub2xkVmFsdWUuc2xpY2UoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKTspLS10aGlzLm9sZFNlbGVjdGlvbi5zdGFydH1yZXR1cm4gT3IodCxbe2tleToic3RhcnRDaGFuZ2VQb3MiLGdldDpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmN1cnNvclBvcyx0aGlzLm9sZFNlbGVjdGlvbi5zdGFydCl9fSx7a2V5OiJpbnNlcnRlZENvdW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJzb3JQb3MtdGhpcy5zdGFydENoYW5nZVBvc319LHtrZXk6Imluc2VydGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHIodGhpcy5zdGFydENoYW5nZVBvcyx0aGlzLmluc2VydGVkQ291bnQpfX0se2tleToicmVtb3ZlZENvdW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5vbGRTZWxlY3Rpb24uZW5kLXRoaXMuc3RhcnRDaGFuZ2VQb3N8fHRoaXMub2xkVmFsdWUubGVuZ3RoLXRoaXMudmFsdWUubGVuZ3RoLDApfX0se2tleToicmVtb3ZlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2xkVmFsdWUuc3Vic3RyKHRoaXMuc3RhcnRDaGFuZ2VQb3MsdGhpcy5yZW1vdmVkQ291bnQpfX0se2tleToiaGVhZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWUuc3Vic3RyaW5nKDAsdGhpcy5zdGFydENoYW5nZVBvcyl9fSx7a2V5OiJ0YWlsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcodGhpcy5zdGFydENoYW5nZVBvcyt0aGlzLmluc2VydGVkQ291bnQpfX0se2tleToicmVtb3ZlRGlyZWN0aW9uIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5yZW1vdmVkQ291bnR8fHRoaXMuaW5zZXJ0ZWRDb3VudD9Hcjp0aGlzLm9sZFNlbGVjdGlvbi5lbmQhPT10aGlzLmN1cnNvclBvcyYmdGhpcy5vbGRTZWxlY3Rpb24uc3RhcnQhPT10aGlzLmN1cnNvclBvc3x8dGhpcy5vbGRTZWxlY3Rpb24uZW5kIT09dGhpcy5vbGRTZWxlY3Rpb24uc3RhcnQ\/S3I6V3J9fV0pLHR9KCksbnU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOiIiLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMDt4cih0aGlzLHQpLHRoaXMudmFsdWU9ZSx0aGlzLmZyb209bix0aGlzLnN0b3A9aX1yZXR1cm4gT3IodCxbe2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9fSx7a2V5OiJleHRlbmQiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWUrPVN0cmluZyh0KX19LHtrZXk6ImFwcGVuZFRvIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBlbmQodGhpcy50b1N0cmluZygpLHt0YWlsOiEwfSkuYWdncmVnYXRlKHQuX2FwcGVuZFBsYWNlaG9sZGVyKCkpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybnt2YWx1ZTp0aGlzLnZhbHVlLGZyb206dGhpcy5mcm9tLHN0b3A6dGhpcy5zdG9wfX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcyx0KX19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLnZhbHVlLmxlbmd0aHx8bnVsbCE9dCYmdGhpcy5mcm9tPj10KXJldHVybiIiO3ZhciBlPXRoaXMudmFsdWVbMF07cmV0dXJuIHRoaXMudmFsdWU9dGhpcy52YWx1ZS5zbGljZSgxKSxlfX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMudmFsdWUubGVuZ3RoKXJldHVybiIiO3ZhciB0PXRoaXMudmFsdWVbdGhpcy52YWx1ZS5sZW5ndGgtMV07cmV0dXJuIHRoaXMudmFsdWU9dGhpcy52YWx1ZS5zbGljZSgwLC0xKSx0fX1dKSx0fSgpO2Z1bmN0aW9uIGl1KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gbmV3IGl1LklucHV0TWFzayh0LGUpfXZhciBydT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7eHIodGhpcyx0KSx0aGlzLl92YWx1ZT0iIix0aGlzLl91cGRhdGUoT2JqZWN0LmFzc2lnbih7fSx0LkRFRkFVTFRTLGUpKSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITB9cmV0dXJuIE9yKHQsW3trZXk6InVwZGF0ZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe09iamVjdC5rZXlzKHQpLmxlbmd0aCYmdGhpcy53aXRoVmFsdWVSZWZyZXNoKHRoaXMuX3VwZGF0ZS5iaW5kKHRoaXMsdCkpfX0se2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybntfdmFsdWU6dGhpcy52YWx1ZX19LHNldDpmdW5jdGlvbih0KXt0aGlzLl92YWx1ZT10Ll92YWx1ZX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3ZhbHVlPSIifX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucmVzb2x2ZSh0KX19LHtrZXk6InJlc29sdmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7aW5wdXQ6ITB9LCIiKSx0aGlzLmRvQ29tbWl0KCksdGhpcy52YWx1ZX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXNldCgpLHRoaXMuYXBwZW5kKHQse30sIiIpLHRoaXMuZG9Db21taXQoKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvUGFyc2UodGhpcy52YWx1ZSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnZhbHVlPXRoaXMuZG9Gb3JtYXQodCl9fSx7a2V5OiJyYXdJbnB1dFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5leHRyYWN0SW5wdXQoMCx0aGlzLnZhbHVlLmxlbmd0aCx7cmF3OiEwfSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7cmF3OiEwfSwiIiksdGhpcy5kb0NvbW1pdCgpfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNDb21wbGV0ZX19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy52YWx1ZS5zbGljZSh0LGUpfX0se2tleToiZXh0cmFjdFRhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGg7cmV0dXJuIG5ldyBudSh0aGlzLmV4dHJhY3RJbnB1dCh0LGUpLHQpfX0se2tleToiYXBwZW5kVGFpbCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIFpyKHQpJiYodD1uZXcgbnUoU3RyaW5nKHQpKSksdC5hcHBlbmRUbyh0aGlzKX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fdmFsdWUrPXQsbmV3IFlyKHtpbnNlcnRlZDp0LHJhd0luc2VydGVkOnR9KSk6bmV3IFlyfX0se2tleToiX2FwcGVuZENoYXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LGk9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscj10aGlzLnN0YXRlLHU9UXIodGhpcy5kb1ByZXBhcmUodCxuKSkscz1xcih1LDIpO2lmKHQ9c1swXSwoZT0oZT1zWzFdKS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kQ2hhclJhdyh0LG4pKSkuaW5zZXJ0ZWQpe3ZhciBhLG89ITEhPT10aGlzLmRvVmFsaWRhdGUobik7aWYobyYmbnVsbCE9aSl7dmFyIGw9dGhpcy5zdGF0ZTshMD09PXRoaXMub3ZlcndyaXRlJiYoYT1pLnN0YXRlLGkudW5zaGlmdCh0aGlzLnZhbHVlLmxlbmd0aCkpO3ZhciBoPXRoaXMuYXBwZW5kVGFpbChpKTsobz1oLnJhd0luc2VydGVkPT09aS50b1N0cmluZygpKSYmaC5pbnNlcnRlZHx8InNoaWZ0IiE9PXRoaXMub3ZlcndyaXRlfHwodGhpcy5zdGF0ZT1sLGE9aS5zdGF0ZSxpLnNoaWZ0KCksbz0oaD10aGlzLmFwcGVuZFRhaWwoaSkpLnJhd0luc2VydGVkPT09aS50b1N0cmluZygpKSxvJiZoLmluc2VydGVkJiYodGhpcy5zdGF0ZT1sKX1vfHwoZT1uZXcgWXIsdGhpcy5zdGF0ZT1yLGkmJmEmJihpLnN0YXRlPWEpKX1yZXR1cm4gZX19LHtrZXk6Il9hcHBlbmRQbGFjZWhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFlyfX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgWXJ9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuKXtpZighWnIodCkpdGhyb3cgbmV3IEVycm9yKCJ2YWx1ZSBzaG91bGQgYmUgc3RyaW5nIik7dmFyIGk9bmV3IFlyLHI9WnIobik\/bmV3IG51KFN0cmluZyhuKSk6bjtlJiZlLnRhaWwmJihlLl9iZWZvcmVUYWlsU3RhdGU9dGhpcy5zdGF0ZSk7Zm9yKHZhciB1PTA7dTx0Lmxlbmd0aDsrK3UpaS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kQ2hhcih0W3VdLGUscikpO3JldHVybiBudWxsIT1yJiYoaS50YWlsU2hpZnQrPXRoaXMuYXBwZW5kVGFpbChyKS50YWlsU2hpZnQpLHRoaXMuZWFnZXImJm51bGwhPWUmJmUuaW5wdXQmJnQmJmkuYWdncmVnYXRlKHRoaXMuX2FwcGVuZEVhZ2VyKCkpLGl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGg7cmV0dXJuIHRoaXMuX3ZhbHVlPXRoaXMudmFsdWUuc2xpY2UoMCx0KSt0aGlzLnZhbHVlLnNsaWNlKGUpLG5ldyBZcn19LHtrZXk6IndpdGhWYWx1ZVJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX3JlZnJlc2hpbmd8fCF0aGlzLmlzSW5pdGlhbGl6ZWQpcmV0dXJuIHQoKTt0aGlzLl9yZWZyZXNoaW5nPSEwO3ZhciBlPXRoaXMucmF3SW5wdXRWYWx1ZSxuPXRoaXMudmFsdWUsaT10KCk7cmV0dXJuIHRoaXMucmF3SW5wdXRWYWx1ZT1lLHRoaXMudmFsdWUmJnRoaXMudmFsdWUhPT1uJiYwPT09bi5pbmRleE9mKHRoaXMudmFsdWUpJiZ0aGlzLmFwcGVuZChuLnNsaWNlKHRoaXMudmFsdWUubGVuZ3RoKSx7fSwiIiksZGVsZXRlIHRoaXMuX3JlZnJlc2hpbmcsaX19LHtrZXk6InJ1bklzb2xhdGVkIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9pc29sYXRlZHx8IXRoaXMuaXNJbml0aWFsaXplZClyZXR1cm4gdCh0aGlzKTt0aGlzLl9pc29sYXRlZD0hMDt2YXIgZT10aGlzLnN0YXRlLG49dCh0aGlzKTtyZXR1cm4gdGhpcy5zdGF0ZT1lLGRlbGV0ZSB0aGlzLl9pc29sYXRlZCxufX0se2tleToiZG9QcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIHRoaXMucHJlcGFyZT90aGlzLnByZXBhcmUodCx0aGlzLGUpOnR9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4oIXRoaXMudmFsaWRhdGV8fHRoaXMudmFsaWRhdGUodGhpcy52YWx1ZSx0aGlzLHQpKSYmKCF0aGlzLnBhcmVudHx8dGhpcy5wYXJlbnQuZG9WYWxpZGF0ZSh0KSl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbW1pdCYmdGhpcy5jb21taXQodGhpcy52YWx1ZSx0aGlzKX19LHtrZXk6ImRvRm9ybWF0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtYXQ\/dGhpcy5mb3JtYXQodCx0aGlzKTp0fX0se2tleToiZG9QYXJzZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyc2U\/dGhpcy5wYXJzZSh0LHRoaXMpOnR9fSx7a2V5OiJzcGxpY2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLHU9dCtlLHM9dGhpcy5leHRyYWN0VGFpbCh1KTt0aGlzLmVhZ2VyJiYoaT1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBLcjpyZXR1cm4gJHI7Y2FzZSBXcjpyZXR1cm4gWHI7ZGVmYXVsdDpyZXR1cm4gdH19KGkpLHI9dGhpcy5leHRyYWN0SW5wdXQoMCx1LHtyYXc6ITB9KSk7dmFyIGE9dGhpcy5uZWFyZXN0SW5wdXRQb3ModCxlPjEmJjAhPT10JiYhdGhpcy5lYWdlcj9HcjppKSxvPW5ldyBZcih7dGFpbFNoaWZ0OmEtdH0pLmFnZ3JlZ2F0ZSh0aGlzLnJlbW92ZShhKSk7aWYodGhpcy5lYWdlciYmaSE9PUdyJiZyPT09dGhpcy5yYXdJbnB1dFZhbHVlKWlmKGk9PT0kcilmb3IodmFyIGw7cj09PXRoaXMucmF3SW5wdXRWYWx1ZSYmKGw9dGhpcy52YWx1ZS5sZW5ndGgpOylvLmFnZ3JlZ2F0ZShuZXcgWXIoe3RhaWxTaGlmdDotMX0pKS5hZ2dyZWdhdGUodGhpcy5yZW1vdmUobC0xKSk7ZWxzZSBpPT09WHImJnMudW5zaGlmdCgpO3JldHVybiBvLmFnZ3JlZ2F0ZSh0aGlzLmFwcGVuZChuLHtpbnB1dDohMH0scykpfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFzaz09PXR9fV0pLHR9KCk7ZnVuY3Rpb24gdXUodCl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoIm1hc2sgcHJvcGVydHkgc2hvdWxkIGJlIGRlZmluZWQiKTtyZXR1cm4gdCBpbnN0YW5jZW9mIFJlZ0V4cD9pdS5NYXNrZWRSZWdFeHA6WnIodCk\/aXUuTWFza2VkUGF0dGVybjp0IGluc3RhbmNlb2YgRGF0ZXx8dD09PURhdGU\/aXUuTWFza2VkRGF0ZTp0IGluc3RhbmNlb2YgTnVtYmVyfHwibnVtYmVyIj09dHlwZW9mIHR8fHQ9PT1OdW1iZXI\/aXUuTWFza2VkTnVtYmVyOkFycmF5LmlzQXJyYXkodCl8fHQ9PT1BcnJheT9pdS5NYXNrZWREeW5hbWljOml1Lk1hc2tlZCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBpdS5NYXNrZWQ\/dDp0IGluc3RhbmNlb2YgaXUuTWFza2VkP3QuY29uc3RydWN0b3I6dCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2l1Lk1hc2tlZEZ1bmN0aW9uOihjb25zb2xlLndhcm4oIk1hc2sgbm90IGZvdW5kIGZvciBtYXNrIix0KSxpdS5NYXNrZWQpfWZ1bmN0aW9uIHN1KHQpe2lmKGl1Lk1hc2tlZCYmdCBpbnN0YW5jZW9mIGl1Lk1hc2tlZClyZXR1cm4gdDt2YXIgZT0odD1PYmplY3QuYXNzaWduKHt9LHQpKS5tYXNrO2lmKGl1Lk1hc2tlZCYmZSBpbnN0YW5jZW9mIGl1Lk1hc2tlZClyZXR1cm4gZTt2YXIgbj11dShlKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIk1hc2tlZCBjbGFzcyBpcyBub3QgZm91bmQgZm9yIHByb3ZpZGVkIG1hc2ssIGFwcHJvcHJpYXRlIG1vZHVsZSBuZWVkcyB0byBiZSBpbXBvcnQgbWFudWFsbHkgYmVmb3JlIGNyZWF0aW5nIG1hc2suIik7cmV0dXJuIG5ldyBuKHQpfXJ1LkRFRkFVTFRTPXtmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0saXUuTWFza2VkPXJ1LGl1LmNyZWF0ZU1hc2s9c3U7dmFyIGF1PVsibWFzayJdLG91PXswOi9cZC8sYTovW1x1MDA0MS1cdTAwNUFcdTAwNjEtXHUwMDdBXHUwMEFBXHUwMEI1XHUwMEJBXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwOEEwXHUwOEEyLVx1MDhBQ1x1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgtXHUwOTYxXHUwOTcxLVx1MDk3N1x1MDk3OS1cdTA5N0ZcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0RcdTBDNThcdTBDNTlcdTBDNjBcdTBDNjFcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENGMlx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ2MFx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE3MDAtXHUxNzBDXHUxNzBFLVx1MTcxMVx1MTcyMC1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxQ1x1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlDMS1cdTE5QzdcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGMVx1MUNGNVx1MUNGNlx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkNcdTIwNzFcdTIwN0ZcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTgzXHUyMTg0XHUyQzAwLVx1MkMyRVx1MkMzMC1cdTJDNUVcdTJDNjAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM1x1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1XHUzMDA2XHUzMDMxLVx1MzAzNVx1MzAzQlx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGQ0NcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OTdcdUE2QTAtXHVBNkU1XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBNzhFXHVBNzkwLVx1QTc5M1x1QTdBMC1cdUE3QUFcdUE3RjgtXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBODAtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQkMwLVx1QUJFMlx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjIxLVx1RkYzQVx1RkY0MS1cdUZGNUFcdUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZEQ10vLCIqIjovLi99LGx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt4cih0aGlzLHQpO3ZhciBuPWUubWFzayxpPWpyKGUsYXUpO3RoaXMubWFza2VkPXN1KHttYXNrOm59KSxPYmplY3QuYXNzaWduKHRoaXMsaSl9cmV0dXJuIE9yKHQsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNGaWxsZWQ9ITEsdGhpcy5tYXNrZWQucmVzZXQoKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gMD09PXQmJmU+PTE\/KHRoaXMuaXNGaWxsZWQ9ITEsdGhpcy5tYXNrZWQucmVtb3ZlKHQsZSkpOm5ldyBZcn19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQudmFsdWV8fCh0aGlzLmlzRmlsbGVkJiYhdGhpcy5pc09wdGlvbmFsP3RoaXMucGxhY2Vob2xkZXJDaGFyOiIiKX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5tYXNrZWQudmFsdWUpfHx0aGlzLmlzT3B0aW9uYWx9fSx7a2V5OiJfYXBwZW5kQ2hhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O2lmKHRoaXMuaXNGaWxsZWQpcmV0dXJuIG5ldyBZcjt2YXIgbj10aGlzLm1hc2tlZC5zdGF0ZSxpPXRoaXMubWFza2VkLl9hcHBlbmRDaGFyKHQsZSk7cmV0dXJuIGkuaW5zZXJ0ZWQmJiExPT09dGhpcy5kb1ZhbGlkYXRlKGUpJiYoaS5pbnNlcnRlZD1pLnJhd0luc2VydGVkPSIiLHRoaXMubWFza2VkLnN0YXRlPW4pLGkuaW5zZXJ0ZWR8fHRoaXMuaXNPcHRpb25hbHx8dGhpcy5sYXp5fHxlLmlucHV0fHwoaS5pbnNlcnRlZD10aGlzLnBsYWNlaG9sZGVyQ2hhciksaS5za2lwPSFpLmluc2VydGVkJiYhdGhpcy5pc09wdGlvbmFsLHRoaXMuaXNGaWxsZWQ9Qm9vbGVhbihpLmluc2VydGVkKSxpfX0se2tleToiYXBwZW5kIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5hcHBlbmQuYXBwbHkodCxhcmd1bWVudHMpfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBZcjtyZXR1cm4gdGhpcy5pc0ZpbGxlZHx8dGhpcy5pc09wdGlvbmFsfHwodGhpcy5pc0ZpbGxlZD0hMCx0Lmluc2VydGVkPXRoaXMucGxhY2Vob2xkZXJDaGFyKSx0fX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgWXJ9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD10aGlzLm1hc2tlZCkuZXh0cmFjdFRhaWwuYXBwbHkodCxhcmd1bWVudHMpfX0se2tleToiYXBwZW5kVGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD10aGlzLm1hc2tlZCkuYXBwZW5kVGFpbC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsbj1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMDtyZXR1cm4gdGhpcy5tYXNrZWQuZXh0cmFjdElucHV0KHQsZSxuKX19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOkdyLG49MCxpPXRoaXMudmFsdWUubGVuZ3RoLHI9TWF0aC5taW4oTWF0aC5tYXgodCxuKSxpKTtzd2l0Y2goZSl7Y2FzZSBLcjpjYXNlICRyOnJldHVybiB0aGlzLmlzQ29tcGxldGU\/cjpuO2Nhc2UgV3I6Y2FzZSBYcjpyZXR1cm4gdGhpcy5pc0NvbXBsZXRlP3I6aTtkZWZhdWx0OnJldHVybiByfX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4odD10aGlzLm1hc2tlZCkuZG9WYWxpZGF0ZS5hcHBseSh0LGFyZ3VtZW50cykmJighdGhpcy5wYXJlbnR8fChlPXRoaXMucGFyZW50KS5kb1ZhbGlkYXRlLmFwcGx5KGUsYXJndW1lbnRzKSl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1hc2tlZC5kb0NvbW1pdCgpfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybnttYXNrZWQ6dGhpcy5tYXNrZWQuc3RhdGUsaXNGaWxsZWQ6dGhpcy5pc0ZpbGxlZH19LHNldDpmdW5jdGlvbih0KXt0aGlzLm1hc2tlZC5zdGF0ZT10Lm1hc2tlZCx0aGlzLmlzRmlsbGVkPXQuaXNGaWxsZWR9fV0pLHR9KCksaHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3hyKHRoaXMsdCksT2JqZWN0LmFzc2lnbih0aGlzLGUpLHRoaXMuX3ZhbHVlPSIiLHRoaXMuaXNGaXhlZD0hMH1yZXR1cm4gT3IodCxbe2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVW5tYXNraW5nP3RoaXMudmFsdWU6IiJ9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9pc1Jhd0lucHV0PSExLHRoaXMuX3ZhbHVlPSIifX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMuX3ZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy5fdmFsdWU9dGhpcy5fdmFsdWUuc2xpY2UoMCx0KSt0aGlzLl92YWx1ZS5zbGljZShlKSx0aGlzLl92YWx1ZXx8KHRoaXMuX2lzUmF3SW5wdXQ9ITEpLG5ldyBZcn19LHtrZXk6Im5lYXJlc3RJbnB1dFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOkdyLG49MCxpPXRoaXMuX3ZhbHVlLmxlbmd0aDtzd2l0Y2goZSl7Y2FzZSBLcjpjYXNlICRyOnJldHVybiBuO2RlZmF1bHQ6cmV0dXJuIGl9fX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMuX3ZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtyZXR1cm4gbi5yYXcmJnRoaXMuX2lzUmF3SW5wdXQmJnRoaXMuX3ZhbHVlLnNsaWNlKHQsZSl8fCIifX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fdmFsdWUpfX0se2tleToiX2FwcGVuZENoYXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPW5ldyBZcjtpZih0aGlzLl92YWx1ZSlyZXR1cm4gbjt2YXIgaT10aGlzLmNoYXI9PT10LHI9aSYmKHRoaXMuaXNVbm1hc2tpbmd8fGUuaW5wdXR8fGUucmF3KSYmIXRoaXMuZWFnZXImJiFlLnRhaWw7cmV0dXJuIHImJihuLnJhd0luc2VydGVkPXRoaXMuY2hhciksdGhpcy5fdmFsdWU9bi5pbnNlcnRlZD10aGlzLmNoYXIsdGhpcy5faXNSYXdJbnB1dD1yJiYoZS5yYXd8fGUuaW5wdXQpLG59fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGVuZENoYXIodGhpcy5jaGFyKX19LHtrZXk6Il9hcHBlbmRQbGFjZWhvbGRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgWXI7cmV0dXJuIHRoaXMuX3ZhbHVlfHwodGhpcy5fdmFsdWU9dC5pbnNlcnRlZD10aGlzLmNoYXIpLHR9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV18fHRoaXMudmFsdWUubGVuZ3RoLG5ldyBudSgiIil9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gWnIodCkmJih0PW5ldyBudShTdHJpbmcodCkpKSx0LmFwcGVuZFRvKHRoaXMpfX0se2tleToiYXBwZW5kIix2YWx1ZTpmdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5fYXBwZW5kQ2hhcih0WzBdLGUpO3JldHVybiBudWxsIT1uJiYoaS50YWlsU2hpZnQrPXRoaXMuYXBwZW5kVGFpbChuKS50YWlsU2hpZnQpLGl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue192YWx1ZTp0aGlzLl92YWx1ZSxfaXNSYXdJbnB1dDp0aGlzLl9pc1Jhd0lucHV0fX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcyx0KX19XSksdH0oKSxjdT1bImNodW5rcyJdLGZ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3hyKHRoaXMsdCksdGhpcy5jaHVua3M9ZSx0aGlzLmZyb209bn1yZXR1cm4gT3IodCxbe2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2h1bmtzLm1hcChTdHJpbmcpLmpvaW4oIiIpfX0se2tleToiZXh0ZW5kIix2YWx1ZTpmdW5jdGlvbihlKXtpZihTdHJpbmcoZSkpe1pyKGUpJiYoZT1uZXcgbnUoU3RyaW5nKGUpKSk7dmFyIG49dGhpcy5jaHVua3NbdGhpcy5jaHVua3MubGVuZ3RoLTFdLGk9biYmKG4uc3RvcD09PWUuc3RvcHx8bnVsbD09ZS5zdG9wKSYmZS5mcm9tPT09bi5mcm9tK24udG9TdHJpbmcoKS5sZW5ndGg7aWYoZSBpbnN0YW5jZW9mIG51KWk\/bi5leHRlbmQoZS50b1N0cmluZygpKTp0aGlzLmNodW5rcy5wdXNoKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIHQpe2lmKG51bGw9PWUuc3RvcClmb3IodmFyIHI7ZS5jaHVua3MubGVuZ3RoJiZudWxsPT1lLmNodW5rc1swXS5zdG9wOykocj1lLmNodW5rcy5zaGlmdCgpKS5mcm9tKz1lLmZyb20sdGhpcy5leHRlbmQocik7ZS50b1N0cmluZygpJiYoZS5zdG9wPWUuYmxvY2tJbmRleCx0aGlzLmNodW5rcy5wdXNoKGUpKX19fX0se2tleToiYXBwZW5kVG8iLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGl1Lk1hc2tlZFBhdHRlcm4pKXJldHVybiBuZXcgbnUodGhpcy50b1N0cmluZygpKS5hcHBlbmRUbyhlKTtmb3IodmFyIG49bmV3IFlyLGk9MDtpPHRoaXMuY2h1bmtzLmxlbmd0aCYmIW4uc2tpcDsrK2kpe3ZhciByPXRoaXMuY2h1bmtzW2ldLHU9ZS5fbWFwUG9zVG9CbG9jayhlLnZhbHVlLmxlbmd0aCkscz1yLnN0b3AsYT12b2lkIDA7aWYobnVsbCE9cyYmKCF1fHx1LmluZGV4PD1zKSYmKChyIGluc3RhbmNlb2YgdHx8ZS5fc3RvcHMuaW5kZXhPZihzKT49MCkmJm4uYWdncmVnYXRlKGUuX2FwcGVuZFBsYWNlaG9sZGVyKHMpKSxhPXIgaW5zdGFuY2VvZiB0JiZlLl9ibG9ja3Nbc10pLGEpe3ZhciBvPWEuYXBwZW5kVGFpbChyKTtvLnNraXA9ITEsbi5hZ2dyZWdhdGUobyksZS5fdmFsdWUrPW8uaW5zZXJ0ZWQ7dmFyIGw9ci50b1N0cmluZygpLnNsaWNlKG8ucmF3SW5zZXJ0ZWQubGVuZ3RoKTtsJiZuLmFnZ3JlZ2F0ZShlLmFwcGVuZChsLHt0YWlsOiEwfSkpfWVsc2Ugbi5hZ2dyZWdhdGUoZS5hcHBlbmQoci50b1N0cmluZygpLHt0YWlsOiEwfSkpfXJldHVybiBufX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybntjaHVua3M6dGhpcy5jaHVua3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZX0pKSxmcm9tOnRoaXMuZnJvbSxzdG9wOnRoaXMuc3RvcCxibG9ja0luZGV4OnRoaXMuYmxvY2tJbmRleH19LHNldDpmdW5jdGlvbihlKXt2YXIgbj1lLmNodW5rcyxpPWpyKGUsY3UpO09iamVjdC5hc3NpZ24odGhpcyxpKSx0aGlzLmNodW5rcz1uLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49ImNodW5rcyJpbiBlP25ldyB0Om5ldyBudTtyZXR1cm4gbi5zdGF0ZT1lLG59KSl9fSx7a2V5OiJ1bnNoaWZ0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZighdGhpcy5jaHVua3MubGVuZ3RofHxudWxsIT10JiZ0aGlzLmZyb20+PXQpcmV0dXJuIiI7Zm9yKHZhciBlPW51bGwhPXQ\/dC10aGlzLmZyb206dCxuPTA7bjx0aGlzLmNodW5rcy5sZW5ndGg7KXt2YXIgaT10aGlzLmNodW5rc1tuXSxyPWkudW5zaGlmdChlKTtpZihpLnRvU3RyaW5nKCkpe2lmKCFyKWJyZWFrOysrbn1lbHNlIHRoaXMuY2h1bmtzLnNwbGljZShuLDEpO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIiJ9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5jaHVua3MubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgdD10aGlzLmNodW5rcy5sZW5ndGgtMTswPD10Oyl7dmFyIGU9dGhpcy5jaHVua3NbdF0sbj1lLnNoaWZ0KCk7aWYoZS50b1N0cmluZygpKXtpZighbilicmVhazstLXR9ZWxzZSB0aGlzLmNodW5rcy5zcGxpY2UodCwxKTtpZihuKXJldHVybiBufXJldHVybiIifX1dKSx0fSgpLHB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3hyKHRoaXMsdCksdGhpcy5tYXNrZWQ9ZSx0aGlzLl9sb2c9W107dmFyIGk9ZS5fbWFwUG9zVG9CbG9jayhuKXx8KG48MD97aW5kZXg6MCxvZmZzZXQ6MH06e2luZGV4OnRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoLG9mZnNldDowfSkscj1pLm9mZnNldCx1PWkuaW5kZXg7dGhpcy5vZmZzZXQ9cix0aGlzLmluZGV4PXUsdGhpcy5vaz0hMX1yZXR1cm4gT3IodCxbe2tleToiYmxvY2siLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC5fYmxvY2tzW3RoaXMuaW5kZXhdfX0se2tleToicG9zIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQuX2Jsb2NrU3RhcnRQb3ModGhpcy5pbmRleCkrdGhpcy5vZmZzZXR9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue2luZGV4OnRoaXMuaW5kZXgsb2Zmc2V0OnRoaXMub2Zmc2V0LG9rOnRoaXMub2t9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToicHVzaFN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2xvZy5wdXNoKHRoaXMuc3RhdGUpfX0se2tleToicG9wU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbG9nLnBvcCgpO3JldHVybiB0aGlzLnN0YXRlPXQsdH19LHtrZXk6ImJpbmRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJsb2NrfHwodGhpcy5pbmRleDwwJiYodGhpcy5pbmRleD0wLHRoaXMub2Zmc2V0PTApLHRoaXMuaW5kZXg+PXRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoJiYodGhpcy5pbmRleD10aGlzLm1hc2tlZC5fYmxvY2tzLmxlbmd0aC0xLHRoaXMub2Zmc2V0PXRoaXMuYmxvY2sudmFsdWUubGVuZ3RoKSl9fSx7a2V5OiJfcHVzaExlZnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih0aGlzLnB1c2hTdGF0ZSgpLHRoaXMuYmluZEJsb2NrKCk7MDw9dGhpcy5pbmRleDstLXRoaXMuaW5kZXgsdGhpcy5vZmZzZXQ9KG51bGw9PT0oZT10aGlzLmJsb2NrKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS52YWx1ZS5sZW5ndGgpfHwwKXt2YXIgZTtpZih0KCkpcmV0dXJuIHRoaXMub2s9ITB9cmV0dXJuIHRoaXMub2s9ITF9fSx7a2V5OiJfcHVzaFJpZ2h0Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodGhpcy5wdXNoU3RhdGUoKSx0aGlzLmJpbmRCbG9jaygpO3RoaXMuaW5kZXg8dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGg7Kyt0aGlzLmluZGV4LHRoaXMub2Zmc2V0PTApaWYodCgpKXJldHVybiB0aGlzLm9rPSEwO3JldHVybiB0aGlzLm9rPSExfX0se2tleToicHVzaExlZnRCZWZvcmVGaWxsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaExlZnQoKGZ1bmN0aW9uKCl7aWYoIXQuYmxvY2suaXNGaXhlZCYmdC5ibG9jay52YWx1ZSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsJHIpLDAhPT10Lm9mZnNldHx8dm9pZCAwfSkpfX0se2tleToicHVzaExlZnRCZWZvcmVJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoTGVmdCgoZnVuY3Rpb24oKXtpZighdC5ibG9jay5pc0ZpeGVkKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxLciksITB9KSl9fSx7a2V5OiJwdXNoTGVmdEJlZm9yZVJlcXVpcmVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hMZWZ0KChmdW5jdGlvbigpe2lmKCEodC5ibG9jay5pc0ZpeGVkfHx0LmJsb2NrLmlzT3B0aW9uYWwmJiF0LmJsb2NrLnZhbHVlKSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsS3IpLCEwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlRmlsbGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hSaWdodCgoZnVuY3Rpb24oKXtpZighdC5ibG9jay5pc0ZpeGVkJiZ0LmJsb2NrLnZhbHVlKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxYciksdC5vZmZzZXQhPT10LmJsb2NrLnZhbHVlLmxlbmd0aHx8dm9pZCAwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlSW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LEdyKSwhMH0pKX19LHtrZXk6InB1c2hSaWdodEJlZm9yZVJlcXVpcmVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hSaWdodCgoZnVuY3Rpb24oKXtpZighKHQuYmxvY2suaXNGaXhlZHx8dC5ibG9jay5pc09wdGlvbmFsJiYhdC5ibG9jay52YWx1ZSkpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LEdyKSwhMH0pKX19XSksdH0oKSxkdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5tYXNrJiYodC52YWxpZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zZWFyY2godC5tYXNrKT49MH0pLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpfX1dKSxufShydSk7aXUuTWFza2VkUmVnRXhwPWR1O3ZhciB2dT1bIl9ibG9ja3MiXSxndT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIHhyKHRoaXMsbiksdC5kZWZpbml0aW9ucz1PYmplY3QuYXNzaWduKHt9LG91LHQuZGVmaW5pdGlvbnMpLGUuY2FsbCh0aGlzLE9iamVjdC5hc3NpZ24oe30sbi5ERUZBVUxUUyx0KSl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOnt9O3QuZGVmaW5pdGlvbnM9T2JqZWN0LmFzc2lnbih7fSx0aGlzLmRlZmluaXRpb25zLHQuZGVmaW5pdGlvbnMpLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpLHRoaXMuX3JlYnVpbGRNYXNrKCl9fSx7a2V5OiJfcmVidWlsZE1hc2siLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuZGVmaW5pdGlvbnM7dGhpcy5fYmxvY2tzPVtdLHRoaXMuX3N0b3BzPVtdLHRoaXMuX21hc2tlZEJsb2Nrcz17fTt2YXIgaT10aGlzLm1hc2s7aWYoaSYmZSlmb3IodmFyIHI9ITEsdT0hMSxzPTA7czxpLmxlbmd0aDsrK3Mpe2lmKHRoaXMuYmxvY2tzKWlmKCJjb250aW51ZSI9PT1mdW5jdGlvbigpe3ZhciBlPWkuc2xpY2Uocyksbj1PYmplY3Qua2V5cyh0LmJsb2NrcykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gMD09PWUuaW5kZXhPZih0KX0pKTtuLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUubGVuZ3RoLXQubGVuZ3RofSkpO3ZhciByPW5bMF07aWYocil7dmFyIHU9c3UoT2JqZWN0LmFzc2lnbih7cGFyZW50OnQsbGF6eTp0LmxhenksZWFnZXI6dC5lYWdlcixwbGFjZWhvbGRlckNoYXI6dC5wbGFjZWhvbGRlckNoYXIsb3ZlcndyaXRlOnQub3ZlcndyaXRlfSx0LmJsb2Nrc1tyXSkpO3JldHVybiB1JiYodC5fYmxvY2tzLnB1c2godSksdC5fbWFza2VkQmxvY2tzW3JdfHwodC5fbWFza2VkQmxvY2tzW3JdPVtdKSx0Ll9tYXNrZWRCbG9ja3Nbcl0ucHVzaCh0Ll9ibG9ja3MubGVuZ3RoLTEpKSxzKz1yLmxlbmd0aC0xLCJjb250aW51ZSJ9fSgpKWNvbnRpbnVlO3ZhciBhPWlbc10sbz1hIGluIGU7aWYoYSE9PW4uU1RPUF9DSEFSKWlmKCJ7IiE9PWEmJiJ9IiE9PWEpaWYoIlsiIT09YSYmIl0iIT09YSl7aWYoYT09PW4uRVNDQVBFX0NIQVIpe2lmKCsrcywhKGE9aVtzXSkpYnJlYWs7bz0hMX12YXIgbD1vP25ldyBsdSh7cGFyZW50OnRoaXMsbGF6eTp0aGlzLmxhenksZWFnZXI6dGhpcy5lYWdlcixwbGFjZWhvbGRlckNoYXI6dGhpcy5wbGFjZWhvbGRlckNoYXIsbWFzazplW2FdLGlzT3B0aW9uYWw6dX0pOm5ldyBodSh7Y2hhcjphLGVhZ2VyOnRoaXMuZWFnZXIsaXNVbm1hc2tpbmc6cn0pO3RoaXMuX2Jsb2Nrcy5wdXNoKGwpfWVsc2UgdT0hdTtlbHNlIHI9IXI7ZWxzZSB0aGlzLl9zdG9wcy5wdXNoKHRoaXMuX2Jsb2Nrcy5sZW5ndGgpfX19LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxOcihUcihuLnByb3RvdHlwZSksInN0YXRlIix0aGlzKSx7X2Jsb2Nrczp0aGlzLl9ibG9ja3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZX0pKX0pfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5fYmxvY2tzLGk9anIodCx2dSk7dGhpcy5fYmxvY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3RhdGU9ZVtuXX0pKSx6cihUcihuLnByb3RvdHlwZSksInN0YXRlIixpLHRoaXMsITApfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7TnIoVHIobi5wcm90b3R5cGUpLCJyZXNldCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLl9ibG9ja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzZXQoKX0pKX19LHtrZXk6ImlzQ29tcGxldGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ibG9ja3MuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzQ29tcGxldGV9KSl9fSx7a2V5OiJpc0ZpbGxlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNGaWxsZWR9KSl9fSx7a2V5OiJpc0ZpeGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0ZpeGVkfSkpfX0se2tleToiaXNPcHRpb25hbCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNPcHRpb25hbH0pKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2Jsb2Nrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb0NvbW1pdCgpfSkpLE5yKFRyKG4ucHJvdG90eXBlKSwiZG9Db21taXQiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnVubWFza2VkVmFsdWV9KSwiIil9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS52YWx1ZX0pLCIiKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTnIoVHIobi5wcm90b3R5cGUpLCJhcHBlbmRUYWlsIix0aGlzKS5jYWxsKHRoaXMsdCkuYWdncmVnYXRlKHRoaXMuX2FwcGVuZFBsYWNlaG9sZGVyKCkpfX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9bmV3IFlyLG49bnVsbD09PSh0PXRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy52YWx1ZS5sZW5ndGgpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmRleDtpZihudWxsPT1uKXJldHVybiBlO3RoaXMuX2Jsb2Nrc1tuXS5pc0ZpbGxlZCYmKytuO2Zvcih2YXIgaT1uO2k8dGhpcy5fYmxvY2tzLmxlbmd0aDsrK2kpe3ZhciByPXRoaXMuX2Jsb2Nrc1tpXS5fYXBwZW5kRWFnZXIoKTtpZighci5pbnNlcnRlZClicmVhaztlLmFnZ3JlZ2F0ZShyKX1yZXR1cm4gZX19LHtrZXk6Il9hcHBlbmRDaGFyUmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj10aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMudmFsdWUubGVuZ3RoKSxpPW5ldyBZcjtpZighbilyZXR1cm4gaTtmb3IodmFyIHI9bi5pbmRleDs7KytyKXt2YXIgdSxzPXRoaXMuX2Jsb2Nrc1tyXTtpZighcylicmVhazt2YXIgYT1zLl9hcHBlbmRDaGFyKHQsT2JqZWN0LmFzc2lnbih7fSxlLHtfYmVmb3JlVGFpbFN0YXRlOm51bGw9PT0odT1lLl9iZWZvcmVUYWlsU3RhdGUpfHx2b2lkIDA9PT11P3ZvaWQgMDp1Ll9ibG9ja3Nbcl19KSksbz1hLnNraXA7aWYoaS5hZ2dyZWdhdGUoYSksb3x8YS5yYXdJbnNlcnRlZClicmVha31yZXR1cm4gaX19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxpPW5ldyBmdTtyZXR1cm4gZT09PW58fHRoaXMuX2ZvckVhY2hCbG9ja3NJblJhbmdlKGUsbiwoZnVuY3Rpb24oZSxuLHIsdSl7dmFyIHM9ZS5leHRyYWN0VGFpbChyLHUpO3Muc3RvcD10Ll9maW5kU3RvcEJlZm9yZShuKSxzLmZyb209dC5fYmxvY2tTdGFydFBvcyhuKSxzIGluc3RhbmNlb2YgZnUmJihzLmJsb2NrSW5kZXg9biksaS5leHRlbmQocyl9KSksaX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtpZih0PT09ZSlyZXR1cm4iIjt2YXIgaT0iIjtyZXR1cm4gdGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UodCxlLChmdW5jdGlvbih0LGUscix1KXtpKz10LmV4dHJhY3RJbnB1dChyLHUsbil9KSksaX19LHtrZXk6Il9maW5kU3RvcEJlZm9yZSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MDtuPHRoaXMuX3N0b3BzLmxlbmd0aDsrK24pe3ZhciBpPXRoaXMuX3N0b3BzW25dO2lmKCEoaTw9dCkpYnJlYWs7ZT1pfXJldHVybiBlfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49bmV3IFlyO2lmKHRoaXMubGF6eSYmbnVsbD09dClyZXR1cm4gbjt2YXIgaT10aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMudmFsdWUubGVuZ3RoKTtpZighaSlyZXR1cm4gbjt2YXIgcj1pLmluZGV4LHU9bnVsbCE9dD90OnRoaXMuX2Jsb2Nrcy5sZW5ndGg7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5zbGljZShyLHUpLmZvckVhY2goKGZ1bmN0aW9uKGkpe2lmKCFpLmxhenl8fG51bGwhPXQpe3ZhciByPW51bGwhPWkuX2Jsb2Nrcz9baS5fYmxvY2tzLmxlbmd0aF06W10sdT1pLl9hcHBlbmRQbGFjZWhvbGRlci5hcHBseShpLHIpO2UuX3ZhbHVlKz11Lmluc2VydGVkLG4uYWdncmVnYXRlKHUpfX0pKSxufX0se2tleToiX21hcFBvc1RvQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0iIixuPTA7bjx0aGlzLl9ibG9ja3MubGVuZ3RoOysrbil7dmFyIGk9dGhpcy5fYmxvY2tzW25dLHI9ZS5sZW5ndGg7aWYodDw9KGUrPWkudmFsdWUpLmxlbmd0aClyZXR1cm57aW5kZXg6bixvZmZzZXQ6dC1yfX19fSx7a2V5OiJfYmxvY2tTdGFydFBvcyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5zbGljZSgwLHQpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnZhbHVlLmxlbmd0aH0pLDApfX0se2tleToiX2ZvckVhY2hCbG9ja3NJblJhbmdlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsbj1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMCxpPXRoaXMuX21hcFBvc1RvQmxvY2sodCk7aWYoaSl7dmFyIHI9dGhpcy5fbWFwUG9zVG9CbG9jayhlKSx1PXImJmkuaW5kZXg9PT1yLmluZGV4LHM9aS5vZmZzZXQsYT1yJiZ1P3Iub2Zmc2V0OnRoaXMuX2Jsb2Nrc1tpLmluZGV4XS52YWx1ZS5sZW5ndGg7aWYobih0aGlzLl9ibG9ja3NbaS5pbmRleF0saS5pbmRleCxzLGEpLHImJiF1KXtmb3IodmFyIG89aS5pbmRleCsxO288ci5pbmRleDsrK28pbih0aGlzLl9ibG9ja3Nbb10sbywwLHRoaXMuX2Jsb2Nrc1tvXS52YWx1ZS5sZW5ndGgpO24odGhpcy5fYmxvY2tzW3IuaW5kZXhdLHIuaW5kZXgsMCxyLm9mZnNldCl9fX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxpPU5yKFRyKG4ucHJvdG90eXBlKSwicmVtb3ZlIix0aGlzKS5jYWxsKHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UodCxlLChmdW5jdGlvbih0LGUsbixyKXtpLmFnZ3JlZ2F0ZSh0LnJlbW92ZShuLHIpKX0pKSxpfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06R3I7aWYoIXRoaXMuX2Jsb2Nrcy5sZW5ndGgpcmV0dXJuIDA7dmFyIG49bmV3IHB1KHRoaXMsdCk7aWYoZT09PUdyKXJldHVybiBuLnB1c2hSaWdodEJlZm9yZUlucHV0KCk\/bi5wb3M6KG4ucG9wU3RhdGUoKSxuLnB1c2hMZWZ0QmVmb3JlSW5wdXQoKT9uLnBvczp0aGlzLnZhbHVlLmxlbmd0aCk7aWYoZT09PUtyfHxlPT09JHIpe2lmKGU9PT1Lcil7aWYobi5wdXNoUmlnaHRCZWZvcmVGaWxsZWQoKSxuLm9rJiZuLnBvcz09PXQpcmV0dXJuIHQ7bi5wb3BTdGF0ZSgpfWlmKG4ucHVzaExlZnRCZWZvcmVJbnB1dCgpLG4ucHVzaExlZnRCZWZvcmVSZXF1aXJlZCgpLG4ucHVzaExlZnRCZWZvcmVGaWxsZWQoKSxlPT09S3Ipe2lmKG4ucHVzaFJpZ2h0QmVmb3JlSW5wdXQoKSxuLnB1c2hSaWdodEJlZm9yZVJlcXVpcmVkKCksbi5vayYmbi5wb3M8PXQpcmV0dXJuIG4ucG9zO2lmKG4ucG9wU3RhdGUoKSxuLm9rJiZuLnBvczw9dClyZXR1cm4gbi5wb3M7bi5wb3BTdGF0ZSgpfXJldHVybiBuLm9rP24ucG9zOmU9PT0kcj8wOihuLnBvcFN0YXRlKCksbi5vaz9uLnBvczoobi5wb3BTdGF0ZSgpLG4ub2s\/bi5wb3M6MCkpfXJldHVybiBlPT09V3J8fGU9PT1Ycj8obi5wdXNoUmlnaHRCZWZvcmVJbnB1dCgpLG4ucHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQoKSxuLnB1c2hSaWdodEJlZm9yZUZpbGxlZCgpP24ucG9zOmU9PT1Ycj90aGlzLnZhbHVlLmxlbmd0aDoobi5wb3BTdGF0ZSgpLG4ub2s\/bi5wb3M6KG4ucG9wU3RhdGUoKSxuLm9rP24ucG9zOnRoaXMubmVhcmVzdElucHV0UG9zKHQsS3IpKSkpOnR9fSx7a2V5OiJtYXNrZWRCbG9jayIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFza2VkQmxvY2tzKHQpWzBdfX0se2tleToibWFza2VkQmxvY2tzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5fbWFza2VkQmxvY2tzW3RdO3JldHVybiBuP24ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fYmxvY2tzW3RdfSkpOltdfX1dKSxufShydSk7Z3UuREVGQVVMVFM9e2xhenk6ITAscGxhY2Vob2xkZXJDaGFyOiJfIn0sZ3UuU1RPUF9DSEFSPSJgIixndS5FU0NBUEVfQ0hBUj0iXFwiLGd1LklucHV0RGVmaW5pdGlvbj1sdSxndS5GaXhlZERlZmluaXRpb249aHUsaXUuTWFza2VkUGF0dGVybj1ndTt2YXIga3U9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKCl7cmV0dXJuIHhyKHRoaXMsbiksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIE9yKG4sW3trZXk6Il9tYXRjaEZyb20iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heExlbmd0aC1TdHJpbmcodGhpcy5mcm9tKS5sZW5ndGh9fSx7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0PU9iamVjdC5hc3NpZ24oe3RvOnRoaXMudG98fDAsZnJvbTp0aGlzLmZyb218fDAsbWF4TGVuZ3RoOnRoaXMubWF4TGVuZ3RofHwwfSx0KTt2YXIgZT1TdHJpbmcodC50bykubGVuZ3RoO251bGwhPXQubWF4TGVuZ3RoJiYoZT1NYXRoLm1heChlLHQubWF4TGVuZ3RoKSksdC5tYXhMZW5ndGg9ZTtmb3IodmFyIGk9U3RyaW5nKHQuZnJvbSkucGFkU3RhcnQoZSwiMCIpLHI9U3RyaW5nKHQudG8pLnBhZFN0YXJ0KGUsIjAiKSx1PTA7dTxyLmxlbmd0aCYmclt1XT09PWlbdV07KSsrdTt0Lm1hc2s9ci5zbGljZSgwLHUpLnJlcGxhY2UoLzAvZywiXFwwIikrIjAiLnJlcGVhdChlLXUpLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE5yKFRyKG4ucHJvdG90eXBlKSwiaXNDb21wbGV0ZSIsdGhpcykmJkJvb2xlYW4odGhpcy52YWx1ZSl9fSx7a2V5OiJib3VuZGFyaWVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0iIixuPSIiLGk9cXIodC5tYXRjaCgvXihcRCopKFxkKikoXEQqKS8pfHxbXSwzKSxyPWlbMV0sdT1pWzJdO3JldHVybiB1JiYoZT0iMCIucmVwZWF0KHIubGVuZ3RoKSt1LG49IjkiLnJlcGVhdChyLmxlbmd0aCkrdSksW2U9ZS5wYWRFbmQodGhpcy5tYXhMZW5ndGgsIjAiKSxuPW4ucGFkRW5kKHRoaXMubWF4TGVuZ3RoLCI5IildfX0se2tleToiZG9QcmVwYXJlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxyPVFyKE5yKFRyKG4ucHJvdG90eXBlKSwiZG9QcmVwYXJlIix0aGlzKS5jYWxsKHRoaXMsdC5yZXBsYWNlKC9cRC9nLCIiKSxpKSksdT1xcihyLDIpO2lmKHQ9dVswXSxlPXVbMV0sIXRoaXMuYXV0b2ZpeHx8IXQpcmV0dXJuIHQ7dmFyIHM9U3RyaW5nKHRoaXMuZnJvbSkucGFkU3RhcnQodGhpcy5tYXhMZW5ndGgsIjAiKSxhPVN0cmluZyh0aGlzLnRvKS5wYWRTdGFydCh0aGlzLm1heExlbmd0aCwiMCIpLG89dGhpcy52YWx1ZSt0O2lmKG8ubGVuZ3RoPnRoaXMubWF4TGVuZ3RoKXJldHVybiIiO3ZhciBsPXRoaXMuYm91bmRhcmllcyhvKSxoPXFyKGwsMiksYz1oWzBdLGY9aFsxXTtyZXR1cm4gTnVtYmVyKGYpPHRoaXMuZnJvbT9zW28ubGVuZ3RoLTFdOk51bWJlcihjKT50aGlzLnRvPyJwYWQiPT09dGhpcy5hdXRvZml4JiZvLmxlbmd0aDx0aGlzLm1heExlbmd0aD9bIiIsZS5hZ2dyZWdhdGUodGhpcy5hcHBlbmQoc1tvLmxlbmd0aC0xXSt0LGkpKV06YVtvLmxlbmd0aC0xXTp0fX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudmFsdWUsaT1lLnNlYXJjaCgvW14wXS8pO2lmKC0xPT09aSYmZS5sZW5ndGg8PXRoaXMuX21hdGNoRnJvbSlyZXR1cm4hMDtmb3IodmFyIHI9dGhpcy5ib3VuZGFyaWVzKGUpLHU9cXIociwyKSxzPXVbMF0sYT11WzFdLG89YXJndW1lbnRzLmxlbmd0aCxsPW5ldyBBcnJheShvKSxoPTA7aDxvO2grKylsW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gdGhpcy5mcm9tPD1OdW1iZXIoYSkmJk51bWJlcihzKTw9dGhpcy50byYmKHQ9TnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQobCkpfX1dKSxufShndSk7aXUuTWFza2VkUmFuZ2U9a3U7dmFyIHl1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbih0KXtyZXR1cm4geHIodGhpcyxuKSxlLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LG4uREVGQVVMVFMsdCkpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0Lm1hc2s9PT1EYXRlJiZkZWxldGUgdC5tYXNrLHQucGF0dGVybiYmKHQubWFzaz10LnBhdHRlcm4pO3ZhciBlPXQuYmxvY2tzO3QuYmxvY2tzPU9iamVjdC5hc3NpZ24oe30sbi5HRVRfREVGQVVMVF9CTE9DS1MoKSksdC5taW4mJih0LmJsb2Nrcy5ZLmZyb209dC5taW4uZ2V0RnVsbFllYXIoKSksdC5tYXgmJih0LmJsb2Nrcy5ZLnRvPXQubWF4LmdldEZ1bGxZZWFyKCkpLHQubWluJiZ0Lm1heCYmdC5ibG9ja3MuWS5mcm9tPT09dC5ibG9ja3MuWS50byYmKHQuYmxvY2tzLm0uZnJvbT10Lm1pbi5nZXRNb250aCgpKzEsdC5ibG9ja3MubS50bz10Lm1heC5nZXRNb250aCgpKzEsdC5ibG9ja3MubS5mcm9tPT09dC5ibG9ja3MubS50byYmKHQuYmxvY2tzLmQuZnJvbT10Lm1pbi5nZXREYXRlKCksdC5ibG9ja3MuZC50bz10Lm1heC5nZXREYXRlKCkpKSxPYmplY3QuYXNzaWduKHQuYmxvY2tzLHRoaXMuYmxvY2tzLGUpLE9iamVjdC5rZXlzKHQuYmxvY2tzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj10LmJsb2Nrc1tlXTshKCJhdXRvZml4ImluIG4pJiYiYXV0b2ZpeCJpbiB0JiYobi5hdXRvZml4PXQuYXV0b2ZpeCl9KSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMuZGF0ZSxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuKHQ9TnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQocikpJiYoIXRoaXMuaXNDb21wbGV0ZXx8dGhpcy5pc0RhdGVFeGlzdCh0aGlzLnZhbHVlKSYmbnVsbCE9ZSYmKG51bGw9PXRoaXMubWlufHx0aGlzLm1pbjw9ZSkmJihudWxsPT10aGlzLm1heHx8ZTw9dGhpcy5tYXgpKX19LHtrZXk6ImlzRGF0ZUV4aXN0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mb3JtYXQodGhpcy5wYXJzZSh0LHRoaXMpLHRoaXMpLmluZGV4T2YodCk+PTB9fSx7a2V5OiJkYXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlZFZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlZFZhbHVlPXR9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0NvbXBsZXRlP05yKFRyKG4ucHJvdG90eXBlKSwidHlwZWRWYWx1ZSIsdGhpcyk6bnVsbH0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidHlwZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6Im1hc2tFcXVhbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0PT09RGF0ZXx8TnIoVHIobi5wcm90b3R5cGUpLCJtYXNrRXF1YWxzIix0aGlzKS5jYWxsKHRoaXMsdCl9fV0pLG59KGd1KTt5dS5ERUZBVUxUUz17cGF0dGVybjoiZHsufWBtey59YFkiLGZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdD9bU3RyaW5nKHQuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCIwIiksU3RyaW5nKHQuZ2V0TW9udGgoKSsxKS5wYWRTdGFydCgyLCIwIiksdC5nZXRGdWxsWWVhcigpXS5qb2luKCIuIik6IiJ9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXFyKHQuc3BsaXQoIi4iKSwzKSxuPWVbMF0saT1lWzFdLHI9ZVsyXTtyZXR1cm4gbmV3IERhdGUocixpLTEsbil9fSx5dS5HRVRfREVGQVVMVF9CTE9DS1M9ZnVuY3Rpb24oKXtyZXR1cm57ZDp7bWFzazprdSxmcm9tOjEsdG86MzEsbWF4TGVuZ3RoOjJ9LG06e21hc2s6a3UsZnJvbToxLHRvOjEyLG1heExlbmd0aDoyfSxZOnttYXNrOmt1LGZyb206MTkwMCx0bzo5OTk5fX19LGl1Lk1hc2tlZERhdGU9eXU7dmFyIG11PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3hyKHRoaXMsdCl9cmV0dXJuIE9yKHQsW3trZXk6InNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDt0cnl7dD10aGlzLl91bnNhZmVTZWxlY3Rpb25TdGFydH1jYXRjaCh0KXt9cmV0dXJuIG51bGwhPXQ\/dDp0aGlzLnZhbHVlLmxlbmd0aH19LHtrZXk6InNlbGVjdGlvbkVuZCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ7dHJ5e3Q9dGhpcy5fdW5zYWZlU2VsZWN0aW9uRW5kfWNhdGNoKHQpe31yZXR1cm4gbnVsbCE9dD90OnRoaXMudmFsdWUubGVuZ3RofX0se2tleToic2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKG51bGwhPXQmJm51bGwhPWUmJih0IT09dGhpcy5zZWxlY3Rpb25TdGFydHx8ZSE9PXRoaXMuc2VsZWN0aW9uRW5kKSl0cnl7dGhpcy5fdW5zYWZlU2VsZWN0KHQsZSl9Y2F0Y2godCl7fX19LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7fX0se2tleToiaXNBY3RpdmUiLGdldDpmdW5jdGlvbigpe3JldHVybiExfX0se2tleToiYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24odCl7fX0se2tleToidW5iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe319XSksdH0oKTtpdS5NYXNrRWxlbWVudD1tdTt2YXIgYnU9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKHQpe3ZhciBpO3JldHVybiB4cih0aGlzLG4pLChpPWUuY2FsbCh0aGlzKSkuaW5wdXQ9dCxpLl9oYW5kbGVycz17fSxpfXJldHVybiBPcihuLFt7a2V5OiJyb290RWxlbWVudCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQsZSxuO3JldHVybiBudWxsIT09KHQ9bnVsbD09PShlPShuPXRoaXMuaW5wdXQpLmdldFJvb3ROb2RlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jYWxsKG4pKSYmdm9pZCAwIT09dD90OmRvY3VtZW50fX0se2tleToiaXNBY3RpdmUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0PT09dGhpcy5yb290RWxlbWVudC5hY3RpdmVFbGVtZW50fX0se2tleToiX3Vuc2FmZVNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dC5zZWxlY3Rpb25TdGFydH19LHtrZXk6Il91bnNhZmVTZWxlY3Rpb25FbmQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZH19LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5pbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSh0LGUpfX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5pbnB1dC52YWx1ZT10fX0se2tleToiYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihpKXtyZXR1cm4gZS5fdG9nZ2xlRXZlbnRIYW5kbGVyKG4uRVZFTlRTX01BUFtpXSx0W2ldKX0pKX19LHtrZXk6InVuYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO09iamVjdC5rZXlzKHRoaXMuX2hhbmRsZXJzKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fdG9nZ2xlRXZlbnRIYW5kbGVyKGUpfSkpfX0se2tleToiX3RvZ2dsZUV2ZW50SGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLl9oYW5kbGVyc1t0XSYmKHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHRoaXMuX2hhbmRsZXJzW3RdKSxkZWxldGUgdGhpcy5faGFuZGxlcnNbdF0pLGUmJih0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIodCxlKSx0aGlzLl9oYW5kbGVyc1t0XT1lKX19XSksbn0obXUpO2J1LkVWRU5UU19NQVA9e3NlbGVjdGlvbkNoYW5nZToia2V5ZG93biIsaW5wdXQ6ImlucHV0Iixkcm9wOiJkcm9wIixjbGljazoiY2xpY2siLGZvY3VzOiJmb2N1cyIsY29tbWl0OiJibHVyIn0saXUuSFRNTE1hc2tFbGVtZW50PWJ1O3ZhciBfdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX3Vuc2FmZVNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJvb3RFbGVtZW50LGU9dC5nZXRTZWxlY3Rpb24mJnQuZ2V0U2VsZWN0aW9uKCksbj1lJiZlLmFuY2hvck9mZnNldCxpPWUmJmUuZm9jdXNPZmZzZXQ7cmV0dXJuIG51bGw9PWl8fG51bGw9PW58fG48aT9uOml9fSx7a2V5OiJfdW5zYWZlU2VsZWN0aW9uRW5kIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJvb3RFbGVtZW50LGU9dC5nZXRTZWxlY3Rpb24mJnQuZ2V0U2VsZWN0aW9uKCksbj1lJiZlLmFuY2hvck9mZnNldCxpPWUmJmUuZm9jdXNPZmZzZXQ7cmV0dXJuIG51bGw9PWl8fG51bGw9PW58fG4+aT9uOml9fSx7a2V5OiJfdW5zYWZlU2VsZWN0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHRoaXMucm9vdEVsZW1lbnQuY3JlYXRlUmFuZ2Upe3ZhciBuPXRoaXMucm9vdEVsZW1lbnQuY3JlYXRlUmFuZ2UoKTtuLnNldFN0YXJ0KHRoaXMuaW5wdXQuZmlyc3RDaGlsZHx8dGhpcy5pbnB1dCx0KSxuLnNldEVuZCh0aGlzLmlucHV0Lmxhc3RDaGlsZHx8dGhpcy5pbnB1dCxlKTt2YXIgaT10aGlzLnJvb3RFbGVtZW50LHI9aS5nZXRTZWxlY3Rpb24mJmkuZ2V0U2VsZWN0aW9uKCk7ciYmKHIucmVtb3ZlQWxsUmFuZ2VzKCksci5hZGRSYW5nZShuKSl9fX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnRleHRDb250ZW50fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5pbnB1dC50ZXh0Q29udGVudD10fX1dKSxufShidSk7aXUuSFRNTENvbnRlbnRlZGl0YWJsZU1hc2tFbGVtZW50PV91O3ZhciBBdT1bIm1hc2siXSxDdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuKXt4cih0aGlzLHQpLHRoaXMuZWw9ZSBpbnN0YW5jZW9mIG11P2U6ZS5pc0NvbnRlbnRFZGl0YWJsZSYmIklOUFVUIiE9PWUudGFnTmFtZSYmIlRFWFRBUkVBIiE9PWUudGFnTmFtZT9uZXcgX3UoZSk6bmV3IGJ1KGUpLHRoaXMubWFza2VkPXN1KG4pLHRoaXMuX2xpc3RlbmVycz17fSx0aGlzLl92YWx1ZT0iIix0aGlzLl91bm1hc2tlZFZhbHVlPSIiLHRoaXMuX3NhdmVTZWxlY3Rpb249dGhpcy5fc2F2ZVNlbGVjdGlvbi5iaW5kKHRoaXMpLHRoaXMuX29uSW5wdXQ9dGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpLHRoaXMuX29uQ2hhbmdlPXRoaXMuX29uQ2hhbmdlLmJpbmQodGhpcyksdGhpcy5fb25Ecm9wPXRoaXMuX29uRHJvcC5iaW5kKHRoaXMpLHRoaXMuX29uRm9jdXM9dGhpcy5fb25Gb2N1cy5iaW5kKHRoaXMpLHRoaXMuX29uQ2xpY2s9dGhpcy5fb25DbGljay5iaW5kKHRoaXMpLHRoaXMuYWxpZ25DdXJzb3I9dGhpcy5hbGlnbkN1cnNvci5iaW5kKHRoaXMpLHRoaXMuYWxpZ25DdXJzb3JGcmllbmRseT10aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkuYmluZCh0aGlzKSx0aGlzLl9iaW5kRXZlbnRzKCksdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMuX29uQ2hhbmdlKCl9cmV0dXJuIE9yKHQsW3trZXk6Im1hc2siLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC5tYXNrfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIXRoaXMubWFza0VxdWFscyh0KSlpZih0IGluc3RhbmNlb2YgaXUuTWFza2VkfHx0aGlzLm1hc2tlZC5jb25zdHJ1Y3RvciE9PXV1KHQpKXt2YXIgZT1zdSh7bWFzazp0fSk7ZS51bm1hc2tlZFZhbHVlPXRoaXMubWFza2VkLnVubWFza2VkVmFsdWUsdGhpcy5tYXNrZWQ9ZX1lbHNlIHRoaXMubWFza2VkLnVwZGF0ZU9wdGlvbnMoe21hc2s6dH0pfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGw9PXR8fChudWxsPT09KGU9dGhpcy5tYXNrZWQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm1hc2tFcXVhbHModCkpfX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnZhbHVlPXQsdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VubWFza2VkVmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlPXQsdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToidHlwZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLnR5cGVkVmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLm1hc2tlZC50eXBlZFZhbHVlPXQsdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToiX2JpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbC5iaW5kRXZlbnRzKHtzZWxlY3Rpb25DaGFuZ2U6dGhpcy5fc2F2ZVNlbGVjdGlvbixpbnB1dDp0aGlzLl9vbklucHV0LGRyb3A6dGhpcy5fb25Ecm9wLGNsaWNrOnRoaXMuX29uQ2xpY2ssZm9jdXM6dGhpcy5fb25Gb2N1cyxjb21taXQ6dGhpcy5fb25DaGFuZ2V9KX19LHtrZXk6Il91bmJpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbCYmdGhpcy5lbC51bmJpbmRFdmVudHMoKX19LHtrZXk6Il9maXJlRXZlbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGU+MT9lLTE6MCksaT0xO2k8ZTtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTt2YXIgcj10aGlzLl9saXN0ZW5lcnNbdF07ciYmci5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBseSh2b2lkIDAsbil9KSl9fSx7a2V5OiJzZWxlY3Rpb25TdGFydCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnNvckNoYW5naW5nP3RoaXMuX2NoYW5naW5nQ3Vyc29yUG9zOnRoaXMuZWwuc2VsZWN0aW9uU3RhcnR9fSx7a2V5OiJjdXJzb3JQb3MiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJzb3JDaGFuZ2luZz90aGlzLl9jaGFuZ2luZ0N1cnNvclBvczp0aGlzLmVsLnNlbGVjdGlvbkVuZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuZWwmJnRoaXMuZWwuaXNBY3RpdmUmJih0aGlzLmVsLnNlbGVjdCh0LHQpLHRoaXMuX3NhdmVTZWxlY3Rpb24oKSl9fSx7a2V5OiJfc2F2ZVNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlIT09dGhpcy5lbC52YWx1ZSYmY29uc29sZS53YXJuKCJFbGVtZW50IHZhbHVlIHdhcyBjaGFuZ2VkIG91dHNpZGUgb2YgbWFzay4gU3luY3Jvbml6ZSBtYXNrIHVzaW5nIGBtYXNrLnVwZGF0ZVZhbHVlKClgIHRvIHdvcmsgcHJvcGVybHkuIiksdGhpcy5fc2VsZWN0aW9uPXtzdGFydDp0aGlzLnNlbGVjdGlvblN0YXJ0LGVuZDp0aGlzLmN1cnNvclBvc319fSx7a2V5OiJ1cGRhdGVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1hc2tlZC52YWx1ZT10aGlzLmVsLnZhbHVlLHRoaXMuX3ZhbHVlPXRoaXMubWFza2VkLnZhbHVlfX0se2tleToidXBkYXRlQ29udHJvbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlLGU9dGhpcy5tYXNrZWQudmFsdWUsbj10aGlzLnVubWFza2VkVmFsdWUhPT10fHx0aGlzLnZhbHVlIT09ZTt0aGlzLl91bm1hc2tlZFZhbHVlPXQsdGhpcy5fdmFsdWU9ZSx0aGlzLmVsLnZhbHVlIT09ZSYmKHRoaXMuZWwudmFsdWU9ZSksbiYmdGhpcy5fZmlyZUNoYW5nZUV2ZW50cygpfX0se2tleToidXBkYXRlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXNrLG49anIodCxBdSksaT0hdGhpcy5tYXNrRXF1YWxzKGUpLHI9IXR1KHRoaXMubWFza2VkLG4pO2kmJih0aGlzLm1hc2s9ZSksciYmdGhpcy5tYXNrZWQudXBkYXRlT3B0aW9ucyhuKSwoaXx8cikmJnRoaXMudXBkYXRlQ29udHJvbCgpfX0se2tleToidXBkYXRlQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbih0KXtudWxsIT10JiYodGhpcy5jdXJzb3JQb3M9dCx0aGlzLl9kZWxheVVwZGF0ZUN1cnNvcih0KSl9fSx7a2V5OiJfZGVsYXlVcGRhdGVDdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fYWJvcnRVcGRhdGVDdXJzb3IoKSx0aGlzLl9jaGFuZ2luZ0N1cnNvclBvcz10LHRoaXMuX2N1cnNvckNoYW5naW5nPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5lbCYmKGUuY3Vyc29yUG9zPWUuX2NoYW5naW5nQ3Vyc29yUG9zLGUuX2Fib3J0VXBkYXRlQ3Vyc29yKCkpfSksMTApfX0se2tleToiX2ZpcmVDaGFuZ2VFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZmlyZUV2ZW50KCJhY2NlcHQiLHRoaXMuX2lucHV0RXZlbnQpLHRoaXMubWFza2VkLmlzQ29tcGxldGUmJnRoaXMuX2ZpcmVFdmVudCgiY29tcGxldGUiLHRoaXMuX2lucHV0RXZlbnQpfX0se2tleToiX2Fib3J0VXBkYXRlQ3Vyc29yIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2N1cnNvckNoYW5naW5nJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2N1cnNvckNoYW5naW5nKSxkZWxldGUgdGhpcy5fY3Vyc29yQ2hhbmdpbmcpfX0se2tleToiYWxpZ25DdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJzb3JQb3M9dGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKHRoaXMubWFza2VkLm5lYXJlc3RJbnB1dFBvcyh0aGlzLmN1cnNvclBvcyxLcikpfX0se2tleToiYWxpZ25DdXJzb3JGcmllbmRseSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGlvblN0YXJ0PT09dGhpcy5jdXJzb3JQb3MmJnRoaXMuYWxpZ25DdXJzb3IoKX19LHtrZXk6Im9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9saXN0ZW5lcnNbdF18fCh0aGlzLl9saXN0ZW5lcnNbdF09W10pLHRoaXMuX2xpc3RlbmVyc1t0XS5wdXNoKGUpLHRoaXN9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2xpc3RlbmVyc1t0XSlyZXR1cm4gdGhpcztpZighZSlyZXR1cm4gZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1t0XSx0aGlzO3ZhciBuPXRoaXMuX2xpc3RlbmVyc1t0XS5pbmRleE9mKGUpO3JldHVybiBuPj0wJiZ0aGlzLl9saXN0ZW5lcnNbdF0uc3BsaWNlKG4sMSksdGhpc319LHtrZXk6Il9vbklucHV0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9pbnB1dEV2ZW50PXQsdGhpcy5fYWJvcnRVcGRhdGVDdXJzb3IoKSwhdGhpcy5fc2VsZWN0aW9uKXJldHVybiB0aGlzLnVwZGF0ZVZhbHVlKCk7dmFyIGU9bmV3IGV1KHRoaXMuZWwudmFsdWUsdGhpcy5jdXJzb3JQb3MsdGhpcy52YWx1ZSx0aGlzLl9zZWxlY3Rpb24pLG49dGhpcy5tYXNrZWQucmF3SW5wdXRWYWx1ZSxpPXRoaXMubWFza2VkLnNwbGljZShlLnN0YXJ0Q2hhbmdlUG9zLGUucmVtb3ZlZC5sZW5ndGgsZS5pbnNlcnRlZCxlLnJlbW92ZURpcmVjdGlvbikub2Zmc2V0LHI9bj09PXRoaXMubWFza2VkLnJhd0lucHV0VmFsdWU\/ZS5yZW1vdmVEaXJlY3Rpb246R3IsdT10aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3MoZS5zdGFydENoYW5nZVBvcytpLHIpO3IhPT1HciYmKHU9dGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKHUsR3IpKSx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLnVwZGF0ZUN1cnNvcih1KSxkZWxldGUgdGhpcy5faW5wdXRFdmVudH19LHtrZXk6Il9vbkNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlIT09dGhpcy5lbC52YWx1ZSYmdGhpcy51cGRhdGVWYWx1ZSgpLHRoaXMubWFza2VkLmRvQ29tbWl0KCksdGhpcy51cGRhdGVDb250cm9sKCksdGhpcy5fc2F2ZVNlbGVjdGlvbigpfX0se2tleToiX29uRHJvcCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fSx7a2V5OiJfb25Gb2N1cyIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5KCl9fSx7a2V5OiJfb25DbGljayIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5KCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3VuYmluZEV2ZW50cygpLHRoaXMuX2xpc3RlbmVycy5sZW5ndGg9MCxkZWxldGUgdGhpcy5lbH19XSksdH0oKTtpdS5JbnB1dE1hc2s9Q3U7dmFyIEV1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0LmVudW0mJih0Lm1hc2s9IioiLnJlcGVhdCh0LmVudW1bMF0ubGVuZ3RoKSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybiB0aGlzLmVudW0uc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5kZXhPZihlLnVubWFza2VkVmFsdWUpPj0wfSkpJiYodD1OcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpKS5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChyKSl9fV0pLG59KGd1KTtpdS5NYXNrZWRFbnVtPUV1O3ZhciBGdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHhyKHRoaXMsbiksZS5jYWxsKHRoaXMsT2JqZWN0LmFzc2lnbih7fSxuLkRFRkFVTFRTLHQpKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7TnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCksdGhpcy5fdXBkYXRlUmVnRXhwcygpfX0se2tleToiX3VwZGF0ZVJlZ0V4cHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9Il4iKyh0aGlzLmFsbG93TmVnYXRpdmU\/IlsrfFxcLV0\/IjoiIiksZT0odGhpcy5zY2FsZT8iKCIrSnIodGhpcy5yYWRpeCkrIlxcZHswLCIrdGhpcy5zY2FsZSsifSk\/IjoiIikrIiQiO3RoaXMuX251bWJlclJlZ0V4cElucHV0PW5ldyBSZWdFeHAodCsiKDB8KFsxLTldK1xcZCopKT8iK2UpLHRoaXMuX251bWJlclJlZ0V4cD1uZXcgUmVnRXhwKHQrIlxcZCoiK2UpLHRoaXMuX21hcFRvUmFkaXhSZWdFeHA9bmV3IFJlZ0V4cCgiWyIrdGhpcy5tYXBUb1JhZGl4Lm1hcChKcikuam9pbigiIikrIl0iLCJnIiksdGhpcy5fdGhvdXNhbmRzU2VwYXJhdG9yUmVnRXhwPW5ldyBSZWdFeHAoSnIodGhpcy50aG91c2FuZHNTZXBhcmF0b3IpLCJnIil9fSx7a2V5OiJfcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSh0aGlzLl90aG91c2FuZHNTZXBhcmF0b3JSZWdFeHAsIiIpfX0se2tleToiX2luc2VydFRob3VzYW5kc1NlcGFyYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQodGhpcy5yYWRpeCk7cmV0dXJuIGVbMF09ZVswXS5yZXBsYWNlKC9cQig\/PShcZHszfSkrKD8hXGQpKS9nLHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKSxlLmpvaW4odGhpcy5yYWRpeCl9fSx7a2V5OiJkb1ByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlO3Q9dC5yZXBsYWNlKHRoaXMuX21hcFRvUmFkaXhSZWdFeHAsdGhpcy5yYWRpeCk7Zm9yKHZhciBpPXRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModCkscj1hcmd1bWVudHMubGVuZ3RoLHU9bmV3IEFycmF5KHI+MT9yLTE6MCkscz0xO3M8cjtzKyspdVtzLTFdPWFyZ3VtZW50c1tzXTt2YXIgYT1RcigoZT1OcihUcihuLnByb3RvdHlwZSksImRvUHJlcGFyZSIsdGhpcykpLmNhbGwuYXBwbHkoZSxbdGhpcyxpXS5jb25jYXQodSkpKSxvPXFyKGEsMiksbD1vWzBdLGg9b1sxXTtyZXR1cm4gdCYmIWkmJihoLnNraXA9ITApLFtsLGhdfX0se2tleToiX3NlcGFyYXRvcnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj0wLGk9MDtpPHQ7KytpKXRoaXMuX3ZhbHVlLmluZGV4T2YodGhpcy50aG91c2FuZHNTZXBhcmF0b3IsaSk9PT1pJiYoKytuLGUmJih0Kz10aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgpKTtyZXR1cm4gbn19LHtrZXk6Il9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOnRoaXMuX3ZhbHVlO3JldHVybiB0aGlzLl9zZXBhcmF0b3JzQ291bnQodGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0KS5sZW5ndGgsITApfX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLGk9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscj10aGlzLl9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzKHQsZSksdT1xcihyLDIpO3JldHVybiB0PXVbMF0sZT11WzFdLHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnMoTnIoVHIobi5wcm90b3R5cGUpLCJleHRyYWN0SW5wdXQiLHRoaXMpLmNhbGwodGhpcyx0LGUsaSkpfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighdGhpcy50aG91c2FuZHNTZXBhcmF0b3IpcmV0dXJuIE5yKFRyKG4ucHJvdG90eXBlKSwiX2FwcGVuZENoYXJSYXciLHRoaXMpLmNhbGwodGhpcyx0LGUpO3ZhciBpPWUudGFpbCYmZS5fYmVmb3JlVGFpbFN0YXRlP2UuX2JlZm9yZVRhaWxTdGF0ZS5fdmFsdWU6dGhpcy5fdmFsdWUscj10aGlzLl9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2UoaSk7dGhpcy5fdmFsdWU9dGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLnZhbHVlKTt2YXIgdT1OcihUcihuLnByb3RvdHlwZSksIl9hcHBlbmRDaGFyUmF3Iix0aGlzKS5jYWxsKHRoaXMsdCxlKTt0aGlzLl92YWx1ZT10aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuX3ZhbHVlKTt2YXIgcz1lLnRhaWwmJmUuX2JlZm9yZVRhaWxTdGF0ZT9lLl9iZWZvcmVUYWlsU3RhdGUuX3ZhbHVlOnRoaXMuX3ZhbHVlLGE9dGhpcy5fc2VwYXJhdG9yc0NvdW50RnJvbVNsaWNlKHMpO3JldHVybiB1LnRhaWxTaGlmdCs9KGEtcikqdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoLHUuc2tpcD0hdS5yYXdJbnNlcnRlZCYmdD09PXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLHV9fSx7a2V5OiJfZmluZFNlcGFyYXRvckFyb3VuZCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy50aG91c2FuZHNTZXBhcmF0b3Ipe3ZhciBlPXQtdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoKzEsbj10aGlzLnZhbHVlLmluZGV4T2YodGhpcy50aG91c2FuZHNTZXBhcmF0b3IsZSk7aWYobjw9dClyZXR1cm4gbn1yZXR1cm4tMX19LHtrZXk6Il9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2ZpbmRTZXBhcmF0b3JBcm91bmQodCk7bj49MCYmKHQ9bik7dmFyIGk9dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZChlKTtyZXR1cm4gaT49MCYmKGU9aSt0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgpLFt0LGVdfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLG49dGhpcy5fYWRqdXN0UmFuZ2VXaXRoU2VwYXJhdG9ycyh0LGUpLGk9cXIobiwyKTt0PWlbMF0sZT1pWzFdO3ZhciByPXRoaXMudmFsdWUuc2xpY2UoMCx0KSx1PXRoaXMudmFsdWUuc2xpY2UoZSkscz10aGlzLl9zZXBhcmF0b3JzQ291bnQoci5sZW5ndGgpO3RoaXMuX3ZhbHVlPXRoaXMuX2luc2VydFRob3VzYW5kc1NlcGFyYXRvcnModGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyhyK3UpKTt2YXIgYT10aGlzLl9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2Uocik7cmV0dXJuIG5ldyBZcih7dGFpbFNoaWZ0OihhLXMpKnRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aH0pfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKCF0aGlzLnRob3VzYW5kc1NlcGFyYXRvcilyZXR1cm4gdDtzd2l0Y2goZSl7Y2FzZSBHcjpjYXNlIEtyOmNhc2UgJHI6dmFyIG49dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZCh0LTEpO2lmKG4+PTApe3ZhciBpPW4rdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoO2lmKHQ8aXx8dGhpcy52YWx1ZS5sZW5ndGg8PWl8fGU9PT0kcilyZXR1cm4gbn1icmVhaztjYXNlIFdyOmNhc2UgWHI6dmFyIHI9dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZCh0KTtpZihyPj0wKXJldHVybiByK3RoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aH1yZXR1cm4gdH19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSh0LmlucHV0P3RoaXMuX251bWJlclJlZ0V4cElucHV0OnRoaXMuX251bWJlclJlZ0V4cCkudGVzdCh0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMudmFsdWUpKTtpZihlKXt2YXIgaT10aGlzLm51bWJlcjtlPWUmJiFpc05hTihpKSYmKG51bGw9PXRoaXMubWlufHx0aGlzLm1pbj49MHx8dGhpcy5taW48PXRoaXMubnVtYmVyKSYmKG51bGw9PXRoaXMubWF4fHx0aGlzLm1heDw9MHx8dGhpcy5udW1iZXI8PXRoaXMubWF4KX1yZXR1cm4gZSYmTnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJkb0NvbW1pdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLnZhbHVlKXt2YXIgdD10aGlzLm51bWJlcixlPXQ7bnVsbCE9dGhpcy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5taW4pKSxudWxsIT10aGlzLm1heCYmKGU9TWF0aC5taW4oZSx0aGlzLm1heCkpLGUhPT10JiYodGhpcy51bm1hc2tlZFZhbHVlPVN0cmluZyhlKSk7dmFyIGk9dGhpcy52YWx1ZTt0aGlzLm5vcm1hbGl6ZVplcm9zJiYoaT10aGlzLl9ub3JtYWxpemVaZXJvcyhpKSksdGhpcy5wYWRGcmFjdGlvbmFsWmVyb3MmJnRoaXMuc2NhbGU+MCYmKGk9dGhpcy5fcGFkRnJhY3Rpb25hbFplcm9zKGkpKSx0aGlzLl92YWx1ZT1pfU5yKFRyKG4ucHJvdG90eXBlKSwiZG9Db21taXQiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJfbm9ybWFsaXplWmVyb3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModCkuc3BsaXQodGhpcy5yYWRpeCk7cmV0dXJuIGVbMF09ZVswXS5yZXBsYWNlKC9eKFxEKikoMCopKFxkKikvLChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gZStpfSkpLHQubGVuZ3RoJiYhL1xkJC8udGVzdChlWzBdKSYmKGVbMF09ZVswXSsiMCIpLGUubGVuZ3RoPjEmJihlWzFdPWVbMV0ucmVwbGFjZSgvMCokLywiIiksZVsxXS5sZW5ndGh8fChlLmxlbmd0aD0xKSksdGhpcy5faW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyhlLmpvaW4odGhpcy5yYWRpeCkpfX0se2tleToiX3BhZEZyYWN0aW9uYWxaZXJvcyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHQ7dmFyIGU9dC5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZS5sZW5ndGg8MiYmZS5wdXNoKCIiKSxlWzFdPWVbMV0ucGFkRW5kKHRoaXMuc2NhbGUsIjAiKSxlLmpvaW4odGhpcy5yYWRpeCl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLl9ub3JtYWxpemVaZXJvcyh0aGlzLnZhbHVlKSkucmVwbGFjZSh0aGlzLnJhZGl4LCIuIil9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLHQucmVwbGFjZSgiLiIsdGhpcy5yYWRpeCksdGhpcywhMCl9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyKHRoaXMudW5tYXNrZWRWYWx1ZSl9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLFN0cmluZyh0KSx0aGlzLCEwKX19LHtrZXk6Im51bWJlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZWRWYWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudHlwZWRWYWx1ZT10fX0se2tleToiYWxsb3dOZWdhdGl2ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2lnbmVkfHxudWxsIT10aGlzLm1pbiYmdGhpcy5taW48MHx8bnVsbCE9dGhpcy5tYXgmJnRoaXMubWF4PDB9fV0pLG59KHJ1KTtGdS5ERUZBVUxUUz17cmFkaXg6IiwiLHRob3VzYW5kc1NlcGFyYXRvcjoiIixtYXBUb1JhZGl4OlsiLiJdLHNjYWxlOjIsc2lnbmVkOiExLG5vcm1hbGl6ZVplcm9zOiEwLHBhZEZyYWN0aW9uYWxaZXJvczohMX0saXUuTWFza2VkTnVtYmVyPUZ1O3ZhciBTdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5tYXNrJiYodC52YWxpZGF0ZT10Lm1hc2spLE5yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpfX1dKSxufShydSk7aXUuTWFza2VkRnVuY3Rpb249U3U7dmFyIHd1PVsiY29tcGlsZWRNYXNrcyIsImN1cnJlbnRNYXNrUmVmIiwiY3VycmVudE1hc2siXSxCdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4odCl7dmFyIGk7cmV0dXJuIHhyKHRoaXMsbiksKGk9ZS5jYWxsKHRoaXMsT2JqZWN0LmFzc2lnbih7fSxuLkRFRkFVTFRTLHQpKSkuY3VycmVudE1hc2s9bnVsbCxpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KSwibWFzayJpbiB0JiYodGhpcy5jb21waWxlZE1hc2tzPUFycmF5LmlzQXJyYXkodC5tYXNrKT90Lm1hc2subWFwKChmdW5jdGlvbih0KXtyZXR1cm4gc3UodCl9KSk6W10pfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXRoaXMuX2FwcGx5RGlzcGF0Y2godCxlKTtyZXR1cm4gdGhpcy5jdXJyZW50TWFzayYmbi5hZ2dyZWdhdGUodGhpcy5jdXJyZW50TWFzay5fYXBwZW5kQ2hhcih0LGUpKSxufX0se2tleToiX2FwcGx5RGlzcGF0Y2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOiIiLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LG49ZS50YWlsJiZudWxsIT1lLl9iZWZvcmVUYWlsU3RhdGU\/ZS5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZTp0aGlzLnZhbHVlLGk9dGhpcy5yYXdJbnB1dFZhbHVlLHI9ZS50YWlsJiZudWxsIT1lLl9iZWZvcmVUYWlsU3RhdGU\/ZS5fYmVmb3JlVGFpbFN0YXRlLl9yYXdJbnB1dFZhbHVlOmksdT1pLnNsaWNlKHIubGVuZ3RoKSxzPXRoaXMuY3VycmVudE1hc2ssYT1uZXcgWXIsbz1zJiZzLnN0YXRlO2lmKHRoaXMuY3VycmVudE1hc2s9dGhpcy5kb0Rpc3BhdGNoKHQsT2JqZWN0LmFzc2lnbih7fSxlKSksdGhpcy5jdXJyZW50TWFzaylpZih0aGlzLmN1cnJlbnRNYXNrIT09cyl7aWYodGhpcy5jdXJyZW50TWFzay5yZXNldCgpLHIpe3ZhciBsPXRoaXMuY3VycmVudE1hc2suYXBwZW5kKHIse3JhdzohMH0pO2EudGFpbFNoaWZ0PWwuaW5zZXJ0ZWQubGVuZ3RoLW4ubGVuZ3RofXUmJihhLnRhaWxTaGlmdCs9dGhpcy5jdXJyZW50TWFzay5hcHBlbmQodSx7cmF3OiEwLHRhaWw6ITB9KS50YWlsU2hpZnQpfWVsc2UgdGhpcy5jdXJyZW50TWFzay5zdGF0ZT1vO3JldHVybiBhfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2FwcGx5RGlzcGF0Y2guYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrJiZ0LmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrLl9hcHBlbmRQbGFjZWhvbGRlcigpKSx0fX0se2tleToiX2FwcGVuZEVhZ2VyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2FwcGx5RGlzcGF0Y2guYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrJiZ0LmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrLl9hcHBlbmRFYWdlcigpKSx0fX0se2tleToiZG9EaXNwYXRjaCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O3JldHVybiB0aGlzLmRpc3BhdGNoKHQsdGhpcyxlKX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybih0PU5yKFRyKG4ucHJvdG90eXBlKSwiZG9WYWxpZGF0ZSIsdGhpcykpLmNhbGwuYXBwbHkodCxbdGhpc10uY29uY2F0KHIpKSYmKCF0aGlzLmN1cnJlbnRNYXNrfHwoZT10aGlzLmN1cnJlbnRNYXNrKS5kb1ZhbGlkYXRlLmFwcGx5KGUscikpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuY3VycmVudE1hc2spfHx2b2lkIDA9PT10fHx0LnJlc2V0KCksdGhpcy5jb21waWxlZE1hc2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc2V0KCl9KSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/dGhpcy5jdXJyZW50TWFzay52YWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLnVubWFza2VkVmFsdWU6IiJ9LHNldDpmdW5jdGlvbih0KXt6cihUcihuLnByb3RvdHlwZSksInVubWFza2VkVmFsdWUiLHQsdGhpcywhMCl9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLnR5cGVkVmFsdWU6IiJ9LHNldDpmdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcodCk7dGhpcy5jdXJyZW50TWFzayYmKHRoaXMuY3VycmVudE1hc2sudHlwZWRWYWx1ZT10LGU9dGhpcy5jdXJyZW50TWFzay51bm1hc2tlZFZhbHVlKSx0aGlzLnVubWFza2VkVmFsdWU9ZX19LHtrZXk6ImlzQ29tcGxldGUiLGdldDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiBCb29sZWFuKG51bGw9PT0odD10aGlzLmN1cnJlbnRNYXNrKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pc0NvbXBsZXRlKX19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gQm9vbGVhbihudWxsPT09KHQ9dGhpcy5jdXJyZW50TWFzayl8fHZvaWQgMD09PXQ\/dm9pZCAwOnQuaXNGaWxsZWQpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9bmV3IFlyO3RoaXMuY3VycmVudE1hc2smJmUuYWdncmVnYXRlKCh0PXRoaXMuY3VycmVudE1hc2spLnJlbW92ZS5hcHBseSh0LGFyZ3VtZW50cykpLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBseURpc3BhdGNoKCkpO3JldHVybiBlfX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LE5yKFRyKG4ucHJvdG90eXBlKSwic3RhdGUiLHRoaXMpLHtfcmF3SW5wdXRWYWx1ZTp0aGlzLnJhd0lucHV0VmFsdWUsY29tcGlsZWRNYXNrczp0aGlzLmNvbXBpbGVkTWFza3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZX0pKSxjdXJyZW50TWFza1JlZjp0aGlzLmN1cnJlbnRNYXNrLGN1cnJlbnRNYXNrOnRoaXMuY3VycmVudE1hc2smJnRoaXMuY3VycmVudE1hc2suc3RhdGV9KX0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29tcGlsZWRNYXNrcyxpPXQuY3VycmVudE1hc2tSZWYscj10LmN1cnJlbnRNYXNrLHU9anIodCx3dSk7dGhpcy5jb21waWxlZE1hc2tzLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3RhdGU9ZVtuXX0pKSxudWxsIT1pJiYodGhpcy5jdXJyZW50TWFzaz1pLHRoaXMuY3VycmVudE1hc2suc3RhdGU9ciksenIoVHIobi5wcm90b3R5cGUpLCJzdGF0ZSIsdSx0aGlzLCEwKX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz8odD10aGlzLmN1cnJlbnRNYXNrKS5leHRyYWN0SW5wdXQuYXBwbHkodCxhcmd1bWVudHMpOiIifX0se2tleToiZXh0cmFjdFRhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrPyh0PXRoaXMuY3VycmVudE1hc2spLmV4dHJhY3RUYWlsLmFwcGx5KHQscik6KGU9TnIoVHIobi5wcm90b3R5cGUpLCJleHRyYWN0VGFpbCIsdGhpcykpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHIpKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3VycmVudE1hc2smJnRoaXMuY3VycmVudE1hc2suZG9Db21taXQoKSxOcihUcihuLnByb3RvdHlwZSksImRvQ29tbWl0Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlLGk9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShpKSx1PTA7dTxpO3UrKylyW3VdPWFyZ3VtZW50c1t1XTtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz8odD10aGlzLmN1cnJlbnRNYXNrKS5uZWFyZXN0SW5wdXRQb3MuYXBwbHkodCxyKTooZT1OcihUcihuLnByb3RvdHlwZSksIm5lYXJlc3RJbnB1dFBvcyIsdGhpcykpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHIpKX19LHtrZXk6Im92ZXJ3cml0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/dGhpcy5jdXJyZW50TWFzay5vdmVyd3JpdGU6TnIoVHIobi5wcm90b3R5cGUpLCJvdmVyd3JpdGUiLHRoaXMpfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCcib3ZlcndyaXRlIiBvcHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBkeW5hbWljIG1hc2ssIHVzZSB0aGlzIG9wdGlvbiBpbiBzaWJsaW5ncycpfX0se2tleToiZWFnZXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2suZWFnZXI6TnIoVHIobi5wcm90b3R5cGUpLCJlYWdlciIsdGhpcyl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oJyJlYWdlciIgb3B0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gZHluYW1pYyBtYXNrLCB1c2UgdGhpcyBvcHRpb24gaW4gc2libGluZ3MnKX19LHtrZXk6Im1hc2tFcXVhbHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZ0aGlzLmNvbXBpbGVkTWFza3MuZXZlcnkoKGZ1bmN0aW9uKGUsbil7dmFyIGk7cmV0dXJuIGUubWFza0VxdWFscyhudWxsPT09KGk9dFtuXSl8fHZvaWQgMD09PWk\/dm9pZCAwOmkubWFzayl9KSl9fV0pLG59KHJ1KTtCdS5ERUZBVUxUUz17ZGlzcGF0Y2g6ZnVuY3Rpb24odCxlLG4pe2lmKGUuY29tcGlsZWRNYXNrcy5sZW5ndGgpe3ZhciBpPWUucmF3SW5wdXRWYWx1ZSxyPWUuY29tcGlsZWRNYXNrcy5tYXAoKGZ1bmN0aW9uKGUscil7cmV0dXJuIGUucmVzZXQoKSxlLmFwcGVuZChpLHtyYXc6ITB9KSxlLmFwcGVuZCh0LG4pLHt3ZWlnaHQ6ZS5yYXdJbnB1dFZhbHVlLmxlbmd0aCxpbmRleDpyfX0pKTtyZXR1cm4gci5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlLndlaWdodC10LndlaWdodH0pKSxlLmNvbXBpbGVkTWFza3NbclswXS5pbmRleF19fX0saXUuTWFza2VkRHluYW1pYz1CdTt2YXIgRHU9e01BU0tFRDoidmFsdWUiLFVOTUFTS0VEOiJ1bm1hc2tlZFZhbHVlIixUWVBFRDoidHlwZWRWYWx1ZSJ9O2Z1bmN0aW9uIHh1KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpEdS5NQVNLRUQsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RHUuTUFTS0VELGk9c3UodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLnJ1bklzb2xhdGVkKChmdW5jdGlvbihpKXtyZXR1cm4gaVtlXT10LGlbbl19KSl9fWZ1bmN0aW9uIE11KHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGU+MT9lLTE6MCksaT0xO2k8ZTtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4geHUuYXBwbHkodm9pZCAwLG4pKHQpfWl1LlBJUEVfVFlQRT1EdSxpdS5jcmVhdGVQaXBlPXh1LGl1LnBpcGU9TXU7dHJ5e2dsb2JhbFRoaXMuSU1hc2s9aXV9Y2F0Y2godCl7fXQuSFRNTENvbnRlbnRlZGl0YWJsZU1hc2tFbGVtZW50PV91LHQuSFRNTE1hc2tFbGVtZW50PWJ1LHQuSW5wdXRNYXNrPUN1LHQuTWFza0VsZW1lbnQ9bXUsdC5NYXNrZWQ9cnUsdC5NYXNrZWREYXRlPXl1LHQuTWFza2VkRHluYW1pYz1CdSx0Lk1hc2tlZEVudW09RXUsdC5NYXNrZWRGdW5jdGlvbj1TdSx0Lk1hc2tlZE51bWJlcj1GdSx0Lk1hc2tlZFBhdHRlcm49Z3UsdC5NYXNrZWRSYW5nZT1rdSx0Lk1hc2tlZFJlZ0V4cD1kdSx0LlBJUEVfVFlQRT1EdSx0LmNyZWF0ZU1hc2s9c3UsdC5jcmVhdGVQaXBlPXh1LHQuZGVmYXVsdD1pdSx0LnBpcGU9TXUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSkpOw0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hc2subWluLmpzLm1hcDsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9mb3JtLmpzICoqLwp2YXIgX19fZDJjX2Zvcm1qc19jX29uPSIyMDI1LTA1LTIzIDE3OjA1OjIwIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19mb3JtanNfY19vbj0iMjAyNC0wMS0zMSAxNDozMzowOSI7InVzZSBzdHJpY3QiO19fX2QyY19mb3JtanNfY19vbj0iMjAyMy0wNC0yNyAxMDozMDo0OSI7InVzZSBzdHJpY3QiOwpjb25zdCBGb3JtPWZ1bmN0aW9uKCl7dGhpcy5NQVNLUz17cGhvbmU6IjAwMCAwMDAtMDAwMCIsc2luOiIwMDAgMDAwIDAwMCIscG9zdGFsQ29kZToiYTBhIDBhMCJ9O3RoaXMubWFzaz0oYSxiKT0+e2E9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChhKTthLmxlbmd0aCYmYS5mb3JFYWNoKGM9PntJTWFzayhjLGIpfSl9O3RoaXMubWFza051bWJlcj0oYSxiKT0+e2xldCBjPXttYXNrOk51bWJlcixtaW46MH07YiYmKGMubWF4PWIpO3RoaXMubWFzayhhLGMpfTt0aGlzLm1hc2tQaG9uZT1hPT57dGhpcy5tYXNrKGEse21hc2s6W3ttYXNrOnRoaXMuTUFTS1MucGhvbmV9LHttYXNrOmAxICR7dGhpcy5NQVNLUy5waG9uZX1gfV19KX07dGhpcy5tYXNrUG9zdGFsQ29kZT1hPT57dGhpcy5tYXNrKGEse21hc2s6dGhpcy5NQVNLUy5wb3N0YWxDb2RlLHByZXBhcmU6Yj0+Yi50b1VwcGVyQ2FzZSgpfSl9fTsKLyoqIC9tL2pzL2dlbmVyaWNNYWlsLmpzICoqLwp2YXIgX19fZDJjX2dlbmVyaWNNYWlsanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMDoxNSI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZ2VuZXJpY01haWxqc19jX29uPSIyMDI0LTExLTI4IDEwOjMwOjExIjsidXNlIHN0cmljdCI7CkdlbmVyaWNNYWlsPWZ1bmN0aW9uKHYpe2Z1bmN0aW9uIG0oYyl7Yz1jLnRvU3RyaW5nKCk7cmV0dXJuIGMucmVwbGFjZSgvPFwvP1tePl0rPi9naSwiIil9dmFyIGI9dGhpcztiLm1haWxJRD12O2IuZW1haWxTZW50PWZ1bmN0aW9uKGMpe21haWxTZW50SGFuZGxlcj1nZXRNYWlsU2VudEhhbmRsZXIoYi5tYWlsSUQpO2M\/KCJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFNlbnRIYW5kbGVyJiYobWFpbFNlbnRIYW5kbGVyLnRpbWVvdXRDYWxsYmFjaz1iLm1zZ1NlbnRGaW5pc2hlZEhhbmRsZXIsbWFpbFNlbnRIYW5kbGVyLnNob3dTdWNjZXNzKCkpLGIuY2xlYXJGb3JtKCkpOiJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFNlbnRIYW5kbGVyJiYobWFpbFNlbnRIYW5kbGVyLnRpbWVvdXRDYWxsYmFjaz1iLm1zZ1NlbnRGaW5pc2hlZEhhbmRsZXIsbWFpbFNlbnRIYW5kbGVyLnNob3dGYWlsKCkpfTtiLmNsZWFyRm9ybT1mdW5jdGlvbigpe3ZhciBjPWIuanFTY29wZTtpZigidW5kZWZpbmVkIj09PQp0eXBlb2YgY3x8IiI9PWMpaWYoJCgiLklubmVyQm94TGF5ZXIiKS5sZW5ndGgpYz0iLklubmVyQm94TGF5ZXIiO2Vsc2UgcmV0dXJuOyQoIi5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciBpbnB1dCwgLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGV4dGFyZWEiLGMpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgiIik7JCh0aGlzKS5hdHRyKCJwbGFjZWhvbGRlciIsJCh0aGlzKS5hdHRyKCJhbHQiKSl9KTskKCIjZm9vdGVyRGl2ICNsZWFkU2VudCIpLnJlbW92ZSgpfTtiLm1zZ1NlbnRGaW5pc2hlZEhhbmRsZXI9ZnVuY3Rpb24oKXt9O2IuYmFuZHBMaW5rPWZ1bmN0aW9uKGMpe3JldHVybiBlbWFpbEhhbmRsZXIuYmFuZHBMaW5rKGMpfTtiLnNhdmU9ZnVuY3Rpb24oYyl7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKGMpO2lmKCFiLl92YWxpZGF0ZUZpZWxkcygpKXJldHVybiAkKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOiQoIi52YWxpZGl0eS1lcnJvbmVvdXM6Zmlyc3QiKS5vZmZzZXQoKS50b3AtCjEwMH0sMkUzKSwhMTtiLnByZXBhcmUoKTtlbWFpbEhhbmRsZXIuc2VuZE1haWwoKX07Yi5wcmVwYXJlPWZ1bmN0aW9uKCl7dmFyIGM9ZnVuY3Rpb24oaCl7eD0oaCsiIikuc3BsaXQoIi4iKTt4MT14WzBdO3gyPTE8eC5sZW5ndGg\/Ii4iK3hbMV06IiI7Zm9yKGg9LyhcZCspKFxkezN9KS87aC50ZXN0KHgxKTspeDE9eDEucmVwbGFjZShoLCIkMSwkMiIpO3JldHVybiB4MSt4Mn0sZz1iLmpxU2NvcGU\/Yi5qcVNjb3BlOiIuSW5uZXJCb3hMYXllciIsaz0iIixhPSIiLGU9IiIsZD0iIixmPSIiO2s9MDwkKCIjZW1haWxTdWJqZWN0RGVmXyIrYi5tYWlsSUQsZykubGVuZ3RoPyQoIiNlbWFpbFN1YmplY3REZWZfIitiLm1haWxJRCxnKS50ZXh0KCk6MDwkKCIjZW1haWxTdWJqZWN0RGVmIixnKS5sZW5ndGg\/JCgiI2VtYWlsU3ViamVjdERlZiIsZykudGV4dCgpOiQoIiNlbWFpbFN1YmplY3REZWYiKS50ZXh0KCk7YT0wPCQoIiNlbWFpbEJvZHlEZWZfIitiLm1haWxJRCxnKS5sZW5ndGg\/JCgiI2VtYWlsQm9keURlZl8iKwpiLm1haWxJRCxnKS5odG1sKCk6JCgiI2VtYWlsQm9keURlZiIsZykubGVuZ3RoPyQoIiNlbWFpbEJvZHlEZWYiLGcpLmh0bWwoKTokKCIjZW1haWxCb2R5RGVmIikuaHRtbCgpO3ZhciBsPSJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3RleHRJc0RlbW8iKS5hdHRyKCJpZCIpJiYiMSI9PSQoIiN0ZXh0SXNEZW1vIikudmFsKCk\/ITA6ITE7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsUXVpY2tFbWFpbCYmbnVsbCE9bWFpbFF1aWNrRW1haWwmJiJzdHJpbmciPT09dHlwZW9mIG1haWxRdWlja0VtYWlsLm1lc3NhZ2UmJihlbWFpbEhhbmRsZXIuY29tbWVudHM9bWFpbFF1aWNrRW1haWwubWVzc2FnZSk7c3dpdGNoKGIubWFpbElEKXtjYXNlICJRdWlja0VtYWlsIjpjYXNlICJRdWlja0VtYWlsTmV3SW52ZW50b3J5IjpjYXNlICJtZW51Q29udGFjdFVzIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9InF1aWNrRW1haWxGb3JtIjttYWlsUXVpY2tFbWFpbC5hc3NpZ25WYWx1ZXMoKTthPWEucmVwbGFjZSgve1wkTkFNRX0vZywKZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFF1aWNrRW1haWwubmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLG1haWxRdWlja0VtYWlsLmVtYWlsKTthPWEucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZyxtYWlsUXVpY2tFbWFpbC5waG9uZSkucmVwbGFjZSgve1wkTUVTU0FHRX0vZyxtYWlsUXVpY2tFbWFpbC5tZXNzYWdlKTthPWEucmVwbGFjZSgve1wkRU1BSUxNQUtFfS9nLG1haWxRdWlja0VtYWlsLm1ha2UpLnJlcGxhY2UoL3tcJEVNQUlMTU9ERUx9L2csbWFpbFF1aWNrRW1haWwubW9kZWwpO2E9YS5yZXBsYWNlKC97XCRFTUFJTFlFQVJ9L2csbWFpbFF1aWNrRW1haWwueWVhcikucmVwbGFjZSgve1wkU1RPQ0tOVU1CRVJ9L2csbWFpbFF1aWNrRW1haWwuc3RvY2tOdW1iZXIpO2E9YS5yZXBsYWNlKC97XCRERVBBUlRNRU5UMn0vZyxtYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50KTthPWEucmVwbGFjZSgvQ2l0eTovZywiIik7InVuZGVmaW5lZCIhPQp0eXBlb2YgbWFpbFF1aWNrRW1haWwucm9hZFRlc3QmJm51bGwhPW1haWxRdWlja0VtYWlsLnJvYWRUZXN0JiYoYT1hLnJlcGxhY2UoL3tcJEVNQUlMUk9BRFRFU1R9L2csbWFpbFF1aWNrRW1haWwucm9hZFRlc3QpLnJlcGxhY2UoL3tcJEVNQUlMQ0FSRH0vZyxtYWlsUXVpY2tFbWFpbC5naWZ0Q2FyZCkpO2VtYWlsSGFuZGxlci51c2VyRW1haWw9bWFpbFF1aWNrRW1haWwuZW1haWw7ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9bWFpbFF1aWNrRW1haWwubmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPW1haWxRdWlja0VtYWlsLnBob25lO2U9bWFpbFF1aWNrRW1haWwubWVzc2FnZTtlbWFpbEhhbmRsZXIudHJpbT0kKCIjZXhwcmVzc2NhcnRyaW0iKS52YWwoKTtlbWFpbEhhbmRsZXIudmluPSQoIiNleHByZXNzY2FydmluIikudmFsKCk7ZW1haWxIYW5kbGVyLnByaWNlPSQoIiNleHByZXNzY2FycHJpY2UiKS52YWwoKTtlbWFpbEhhbmRsZXIubWFrZT0kKCIjZXhwcmVzc2Nhcm1ha2UiKS52YWwoKTsKZW1haWxIYW5kbGVyLm1vZGVsPSQoIiNleHByZXNzY2FybW9kZWwiKS52YWwoKTtlbWFpbEhhbmRsZXIueWVhcj0kKCIjZXhwcmVzc2NhcnllYXIiKS52YWwoKTtlbWFpbEhhbmRsZXIuc3RvY2tOdW1iZXI9bWFpbFF1aWNrRW1haWwuc3RvY2tOdW1iZXI7InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjZXhwcmVzc2NhcmlkIikuYXR0cigiaWQiKT9lbWFpbEhhbmRsZXIuY2FyaWQ9IiI6ZW1haWxIYW5kbGVyLmNhcmlkPSQoIiNleHByZXNzY2FyaWQiKS52YWwoKTskKCJpbnB1dC5sYWJlbGVtYWlsIikudmFsKCJEZW1hbmRlcy1FeHByZXNzIik7JCgiaW5wdXQuaXNleHByZXNzIikudmFsKCIxIik7InVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hFbmdpbmUmJigkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKG1haWxRdWlja0VtYWlsLm1ha2UpLCQoImlucHV0Lm1vZGVsZW1haWwiKS52YWwobWFpbFF1aWNrRW1haWwubW9kZWwpLCQoImlucHV0LnllYXJlbWFpbCIpLnZhbChtYWlsUXVpY2tFbWFpbC55ZWFyKSk7CiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NjYXJpZCIpLmF0dHIoImlkIik\/MDwkKCIjZXhwcmVzc2NhcmlkIikudmFsKCkubGVuZ3RoP2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVzZWQiOmVtYWlsSGFuZGxlci5jb25kaXRpb249MDxtYWlsUXVpY2tFbWFpbC5tYWtlLmxlbmd0aD8iTmV3IjoiVW5rbm93biI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVW5rbm93biI7IiIhPT1tYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50JiYoZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9bWFpbFF1aWNrRW1haWwuZGVwYXJ0bWVudCk7ZD1tYWlsUXVpY2tFbWFpbC5nZXRTZW5kVG8oKTtmPW1haWxRdWlja0VtYWlsLmdldFNlbmRUb0FkZigpO2JyZWFrO2Nhc2UgIlJlYmF0ZUNvdXBvblByb21vIjptYWlsUXVpY2tFbWFpbC5hc3NpZ25WYWx1ZXMoKTtlPW1haWxRdWlja0VtYWlsLm1lc3NhZ2U7YT1hLnJlcGxhY2UoL3tcJE5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFF1aWNrRW1haWwubmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLAptYWlsUXVpY2tFbWFpbC5lbWFpbCk7YT1hLnJlcGxhY2UoL3tcJEVNQUlMUEhPTkV9L2csbWFpbFF1aWNrRW1haWwucGhvbmUpLnJlcGxhY2UoL3tcJE1FU1NBR0V9L2csbWFpbFF1aWNrRW1haWwubWVzc2FnZSk7YT1hLnJlcGxhY2UoL3tcJENPVVBPTk1BS0V9L2csJCgiI2NvdXBvbm1ha2UiKS52YWwoKSkucmVwbGFjZSgve1wkQ09VUE9OTU9ERUx9L2csJCgiI2NvdXBvbm1vZGVsIikudmFsKCkpO2E9YS5yZXBsYWNlKC97XCRDT1VQT05ZRUFSfS9nLCQoIiNjb3Vwb255ZWFyIikudmFsKCkpLnJlcGxhY2UoL3tcJENPVVBPTlNUT0NLTlVNQkVSfS9nLCQoIiNjb3Vwb25zdG9ja251bWJlciIpLnZhbCgpKTthPWEucmVwbGFjZSgve1wkQ09VUE9OVkFMVUV9L2csJCgiI2NvdXBvblZhbHVlIikudmFsKCkrIiQiKS5yZXBsYWNlKC97XCRQUklDRX0vZywkKCIjdmVoaWNsZU9yaWdQcmljZSIpLnZhbCgpKyIkIik7ZW1haWxIYW5kbGVyLm1ha2U9JCgiI2NvdXBvbm1ha2UiKS52YWwoKTsKZW1haWxIYW5kbGVyLm1vZGVsPSQoIiNjb3Vwb25tb2RlbCIpLnZhbCgpO2VtYWlsSGFuZGxlci55ZWFyPSQoIiNjb3Vwb255ZWFyIikudmFsKCk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1tYWlsUXVpY2tFbWFpbC5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsUXVpY2tFbWFpbC5uYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFF1aWNrRW1haWwucGhvbmU7ZW1haWxIYW5kbGVyLnRyaW09JCgiI2NvdXBvbnZlaGljbGV0cmltIikudmFsKCk7ZW1haWxIYW5kbGVyLnZpbj0kKCIjY291cG9udmVoaWNsZXZpbiIpLnZhbCgpO2VtYWlsSGFuZGxlci5wcmljZT0kKCIjdmVoaWNsZU9yaWdQcmljZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj0kKCIjY291cG9uc3RvY2tudW1iZXIiKS52YWwoKTtlbWFpbEhhbmRsZXIuY2FyaWQ9JCgiI2NvdXBvbnZlaGljbGVpZCIpLnZhbCgpOyQoImlucHV0LmxhYmVsZW1haWwiKS52YWwoIlJlYmF0ZUNvdXBvblByb21vIik7CiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VhcmNoRW5naW5lJiYoJCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgkKCIjY291cG9ubWFrZSIpLnZhbCgpKSwkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKCQoIiNjb3Vwb25tb2RlbCIpLnZhbCgpKSwkKCJpbnB1dC55ZWFyZW1haWwiKS52YWwoJCgiI2NvdXBvbnllYXIiKS52YWwoKSkpO2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVzZWQiO2IuZW1haWxTZW50PWZ1bmN0aW9uKGgpeyQoIi5jbG9zZS1yZXZlYWwtbW9kYWwiKS50cmlnZ2VyKCJjbGljayIpfTticmVhaztjYXNlICJDYXJwcm9vZk1haWwiOmVtYWlsSGFuZGxlci5wb3B1cGRpdj0iY2FycHJvb2ZNYWluRGl2IjtrPSQoIiNlbWFpbFN1YmplY3REZWYyIikudGV4dCgpO2E9JCgiI2VtYWlsQm9keURlZjIiKS5odG1sKCk7JCgiaW5wdXQubGFiZWxlbWFpbCIpLnZhbCgiRGVtYW5kZXMtQ2FyUHJvb2YiKTskKCJpbnB1dC5pc2V4cHJlc3MiKS52YWwoIjAiKTskKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKGNhcnByb29mSGFuZGxlci5tYWtlKTsKJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChjYXJwcm9vZkhhbmRsZXIubW9kZWwpOyQoImlucHV0LnllYXJlbWFpbCIpLnZhbChjYXJwcm9vZkhhbmRsZXIueWVhcik7YT1hLnJlcGxhY2UoL3tcJE5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQoY2FycHJvb2ZIYW5kbGVyLm5hbWUpKS5yZXBsYWNlKC97XCRFTUFJTH0vZyxjYXJwcm9vZkhhbmRsZXIuZW1haWwpO2E9YS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csY2FycHJvb2ZIYW5kbGVyLm1ha2UpLnJlcGxhY2UoL3tcJEVNQUlMTU9ERUx9L2csY2FycHJvb2ZIYW5kbGVyLm1vZGVsKS5yZXBsYWNlKC97XCRFTUFJTFlFQVJ9L2csY2FycHJvb2ZIYW5kbGVyLnllYXIpO2E9YS5yZXBsYWNlKC97XCRDT0xPUn0vZyxjYXJwcm9vZkhhbmRsZXIuY29sb3IpLnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSfS9nLGNhcnByb29mSGFuZGxlci5zdG9ja051bWJlcikucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZywKY2FycHJvb2ZIYW5kbGVyLnBob25lKTtlbWFpbEhhbmRsZXIudXNlckVtYWlsPWNhcnByb29mSGFuZGxlci5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1jYXJwcm9vZkhhbmRsZXIubmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPWNhcnByb29mSGFuZGxlci5waG9uZTtlbWFpbEhhbmRsZXIubWFrZT1jYXJwcm9vZkhhbmRsZXIubWFrZTtlbWFpbEhhbmRsZXIubW9kZWw9Y2FycHJvb2ZIYW5kbGVyLm1vZGVsO2VtYWlsSGFuZGxlci55ZWFyPWNhcnByb29mSGFuZGxlci55ZWFyO2VtYWlsSGFuZGxlci50cmltPSQoIiNjYXJwcm9vZmNhcnRyaW0iKS52YWwoKTtlbWFpbEhhbmRsZXIudmluPSQoIiNjYXJwcm9vZmNhcnZpbiIpLnZhbCgpO2VtYWlsSGFuZGxlci5wcmljZT0kKCIjY2FycHJvb2ZjYXJwcmljZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj1jYXJwcm9vZkhhbmRsZXIuc3RvY2tOdW1iZXI7ZW1haWxIYW5kbGVyLmNhcmlkPSQoIiNjYXJwcm9vZmNhcmlkIikudmFsKCk7CmQ9Y2FycHJvb2ZIYW5kbGVyLnNlbmRUby5sZW5ndGgmJiIiIT1jYXJwcm9vZkhhbmRsZXIuc2VuZFRvP2NhcnByb29mSGFuZGxlci5zZW5kVG86JCgiI3RleHRTZW5kVG9FbWFpbCIpLmxlbmd0aD8kKCIjdGV4dFNlbmRUb0VtYWlsIikudmFsKCk6IiI7Zj1jYXJwcm9vZkhhbmRsZXIuc2VuZFRvQWRmLmxlbmd0aCYmIiIhPWNhcnByb29mSGFuZGxlci5zZW5kVG9BZGY\/Y2FycHJvb2ZIYW5kbGVyLnNlbmRUb0FkZjokKCIjdGV4dFNlbmRUb0VtYWlsQURGIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS52YWwoKToiIjtlbWFpbEhhbmRsZXIuZGVhbGVyTmFtZT1jYXJwcm9vZkhhbmRsZXIuZGVhbGVyTmFtZTticmVhaztjYXNlICJDdXN0b21lclJhdGluZyI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJDdXN0b21lclJhdGluZyI7bWFpbFJhdGluZy5hc3NpZ25WYWx1ZXMoKTthPWEucmVwbGFjZSgve1wkUkFUSU5HTUVTU0FHRX0vZyxtYWlsUmF0aW5nLm1lc3NhZ2UpLnJlcGxhY2UoL3tcJExOQU1FfS9nLApkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsUmF0aW5nLnVzZXJMYXN0TmFtZSkpLnJlcGxhY2UoL3tcJEZOQU1FfS9nLGQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxSYXRpbmcudXNlckZpcnN0TmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLG1haWxSYXRpbmcudXNlckVtYWlsKS5yZXBsYWNlKC97XCRQSE9ORX0vZyxtYWlsUmF0aW5nLnVzZXJQaG9uZSkucmVwbGFjZSgve1wkUkFUSU5HU1RBUlN9L2csbWFpbFJhdGluZy5yYXRpbmcpLnJlcGxhY2UoL3tcJENMSUVOVE5BTUV9L2csbWFpbFJhdGluZy51c2VyRmlyc3ROYW1lKyIgIittYWlsUmF0aW5nLnVzZXJMYXN0TmFtZSk7az1rLnJlcGxhY2UoL3tcJENMSUVOVE5BTUV9L2csbWFpbFJhdGluZy51c2VyRmlyc3ROYW1lKyIgIittYWlsUmF0aW5nLnVzZXJMYXN0TmFtZSk7ZW1haWxIYW5kbGVyLnZpbj0iIjtlbWFpbEhhbmRsZXIucHJpY2U9MDtlbWFpbEhhbmRsZXIuc3RvY2tOdW1iZXI9CiIiO2VtYWlsSGFuZGxlci5jYXJpZD0iIjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJVbmtub3duIjtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsUmF0aW5nLnVzZXJGaXJzdE5hbWU7ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT1tYWlsUmF0aW5nLnVzZXJMYXN0TmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPW1haWxSYXRpbmcudXNlclBob25lO2VtYWlsSGFuZGxlci51c2VyRW1haWw9bWFpbFJhdGluZy51c2VyRW1haWw7ZD1tYWlsUmF0aW5nLnNlbmRUbztmPSIgICI7YnJlYWs7Y2FzZSAiaGVhZGVyU2VydmljZSI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJtZW51U2VydmljZSI7c2VydmljZUZvcm1faGVhZGVyU2VydmljZS5zZXRFbWFpbFNlbnRDYWxsYmFjaygpO2E9c2VydmljZUZvcm1faGVhZGVyU2VydmljZS5zZXRFbWFpbEhhbmRsZXJWYWx1ZXNBbmRCb2R5KGEpO2Q9c2VydmljZUZvcm1faGVhZGVyU2VydmljZS5nZXRTZW5kVG8oKTtrKz0iIEV4cHJlc3MiOwpicmVhaztjYXNlICJtZW51U2VydmljZSI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJtZW51U2VydmljZSI7c2VydmljZUZvcm1fbWVudVNlcnZpY2Uuc2V0RW1haWxTZW50Q2FsbGJhY2soKTthPXNlcnZpY2VGb3JtX21lbnVTZXJ2aWNlLnNldEVtYWlsSGFuZGxlclZhbHVlc0FuZEJvZHkoYSk7ZD1zZXJ2aWNlRm9ybV9tZW51U2VydmljZS5nZXRTZW5kVG8oKTtrKz0iIEV4cHJlc3MiO2JyZWFrO2RlZmF1bHQ6IiI9PWQmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3RleHRTZW5kVG9FbWFpbCIpLmF0dHIoImlkIikmJihkPSQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKSk7IiI9PWYmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLmF0dHIoImlkIikmJjM8JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpLmxlbmd0aCYmKGY9JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxWZWhpY2xlV2lkZ2V0JiYKKG1haWxWZWhpY2xlV2lkZ2V0LmFzc2lnblZhbHVlcygpLGE9YS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csbWFpbFZlaGljbGVXaWRnZXQubWFrZSkucmVwbGFjZSgve1wkRU1BSUxNT0RFTH0vZyxtYWlsVmVoaWNsZVdpZGdldC5tb2RlbCkucmVwbGFjZSgve1wkRU1BSUxZRUFSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnllYXIpLnJlcGxhY2UoL3tcJENPTE9SfS9nLG1haWxWZWhpY2xlV2lkZ2V0LmNvbG9yKS5yZXBsYWNlKC97XCRFTUFJTFNUT0NLTlVNQkVSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnN0b2NrTnVtYmVyKS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZyxtYWlsVmVoaWNsZVdpZGdldC5zdG9ja051bWJlcikucmVwbGFjZSgve1wkRlJPTVlFQVJ9L2csbWFpbFZlaGljbGVXaWRnZXQuZnJvbVllYXIpLnJlcGxhY2UoL3tcJFRPWUVBUn0vZyxtYWlsVmVoaWNsZVdpZGdldC50b1llYXIpLnJlcGxhY2UoL3tcJElOVEVOVElPTn0vZyxtYWlsVmVoaWNsZVdpZGdldC5pbnRlbnRpb24pLnJlcGxhY2UoL3tcJFBMQVRFU30vZywKbWFpbFZlaGljbGVXaWRnZXQucGxhdGVzKS5yZXBsYWNlKC97XCRWSU59L2csbWFpbFZlaGljbGVXaWRnZXQudmluKSxtYWlsVmVoaWNsZVdpZGdldC5vZG9tb3RlciYmKGE9YS5yZXBsYWNlKC97XCRLTX0vZyxjKG1haWxWZWhpY2xlV2lkZ2V0Lm9kb21vdGVyKSkpLCQoImlucHV0LmJyYW5kZW1haWwiKS5sZW5ndGgmJiQoImlucHV0LmJyYW5kZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXQubWFrZSksJCgiaW5wdXQubW9kZWxlbWFpbCIpLmxlbmd0aCYmJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldC5tb2RlbCksJCgiaW5wdXQueWVhcmVtYWlsIikubGVuZ3RoJiYkKCJpbnB1dC55ZWFyZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXQueWVhciksZW1haWxIYW5kbGVyLm1ha2U9bWFpbFZlaGljbGVXaWRnZXQubWFrZSxlbWFpbEhhbmRsZXIubW9kZWw9bWFpbFZlaGljbGVXaWRnZXQubW9kZWwsZW1haWxIYW5kbGVyLnllYXI9bWFpbFZlaGljbGVXaWRnZXQueWVhciwKZW1haWxIYW5kbGVyLnRyaW09JCgiI2NhcnRyaW0iKS52YWwoKSxlbWFpbEhhbmRsZXIudmluPW1haWxWZWhpY2xlV2lkZ2V0LnZpbixlbWFpbEhhbmRsZXIucHJpY2U9JCgiI2NhcnByaWNlIikudmFsKCksZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPW1haWxWZWhpY2xlV2lkZ2V0LnN0b2NrTnVtYmVyLGVtYWlsSGFuZGxlci5jYXJpZD0kKCIjY2FyaWQiKS52YWwoKSwwPCQoIiNjYXJpZCIpLnZhbCgpLmxlbmd0aHx8ZW1haWxIYW5kbGVyLnllYXI8KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpP2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVzZWQiOmVtYWlsSGFuZGxlci5jb25kaXRpb249MDxtYWlsVmVoaWNsZVdpZGdldC5tYWtlLmxlbmd0aD8iTmV3IjoiVW5rbm93biIpO2E9YS5yZXBsYWNlKC97XCRQTEFURVN9L2csIiIpOyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFZlaGljbGVXaWRnZXRFeCYmJCgiI3ZlaGljbGVTZWxlY3RGb3JtRXgiKS5sZW5ndGgmJihtYWlsVmVoaWNsZVdpZGdldEV4LmFzc2lnblZhbHVlcygpLAphPWEucmVwbGFjZSgve1wkTUFLRUVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZSkucmVwbGFjZSgve1wkTU9ERUxFWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsKS5yZXBsYWNlKC97XCRZRUFSRVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyKS5yZXBsYWNlKC97XCRDT0xPUkVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXguY29sb3IpLnJlcGxhY2UoL3tcJFRSSU1FWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnRyaW0pLnJlcGxhY2UoL3tcJFRSQU5TTUlTU0lPTn0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnRyYW5zbWlzc2lvbikucmVwbGFjZSgve1wkS019L2csYyhtYWlsVmVoaWNsZVdpZGdldEV4Lm9kb21vdGVyKSkucmVwbGFjZSgve1wkVklORVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC52aW4pLnJlcGxhY2UoL3tcJERSSVZFVFJBSU59L2csbWFpbFZlaGljbGVXaWRnZXRFeC5kcml2ZXRyYWluKS5yZXBsYWNlKC97XCRHQVN9L2csbWFpbFZlaGljbGVXaWRnZXRFeC5mdWVsKSwKJCgiaW5wdXQuYnJhbmRlbWFpbCIpLmxlbmd0aCYmMDxtYWlsVmVoaWNsZVdpZGdldEV4Lm1ha2UubGVuZ3RoJiYkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZSksJCgiaW5wdXQubW9kZWxlbWFpbCIpLmxlbmd0aCYmMDxtYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsLmxlbmd0aCYmJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsKSwkKCJpbnB1dC55ZWFyZW1haWwiKS5sZW5ndGgmJjA8bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLmxlbmd0aCYmJCgiaW5wdXQueWVhcmVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0RXgueWVhciksZW1haWxIYW5kbGVyLm1ha2U9bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLGVtYWlsSGFuZGxlci5tb2RlbD1tYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsLGVtYWlsSGFuZGxlci55ZWFyPW1haWxWZWhpY2xlV2lkZ2V0RXgueWVhcixlbWFpbEhhbmRsZXIudHJpbT1tYWlsVmVoaWNsZVdpZGdldEV4LnRyaW0sCiJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyLmlzVHJhZGVJbkJhcnx8IlByaWNlVmVoaWNsZSIhPWIubWFpbElEJiYiUHJpY2VWZWhpY2xlTmV3IiE9Yi5tYWlsSUQmJiJFc3RoZXRpY1JlcXVlc3QiIT1iLm1haWxJRHx8KGVtYWlsSGFuZGxlci5tYWtlPW1haWxWZWhpY2xlV2lkZ2V0Lm1ha2UsZW1haWxIYW5kbGVyLm1vZGVsPW1haWxWZWhpY2xlV2lkZ2V0Lm1vZGVsLGVtYWlsSGFuZGxlci55ZWFyPW1haWxWZWhpY2xlV2lkZ2V0LnllYXIsZW1haWxIYW5kbGVyLnRyaW09bWFpbFZlaGljbGVXaWRnZXQudHJpbSwiUHJpY2VWZWhpY2xlIiE9Yi5tYWlsSUQmJiJQcmljZVZlaGljbGVOZXciIT1iLm1haWxJRCl8fChlbWFpbEhhbmRsZXIuY2FyMl9tYWtlPW1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZSxlbWFpbEhhbmRsZXIuY2FyMl9tb2RlbD1tYWlsVmVoaWNsZVdpZGdldEV4Lm1vZGVsLGVtYWlsSGFuZGxlci5jYXIyX3RyaW09bWFpbFZlaGljbGVXaWRnZXRFeC50cmltLAplbWFpbEhhbmRsZXIuY2FyMl95ZWFyPW1haWxWZWhpY2xlV2lkZ2V0RXgueWVhcixlbWFpbEhhbmRsZXIuY2FyMl9jb2xvcj1tYWlsVmVoaWNsZVdpZGdldEV4LmNvbG9yLGVtYWlsSGFuZGxlci5jYXIyX29kb21ldGVyPWMobWFpbFZlaGljbGVXaWRnZXRFeC5vZG9tb3RlciksZW1haWxIYW5kbGVyLmNhcjJfdmluPW1haWxWZWhpY2xlV2lkZ2V0RXgudmluLGVtYWlsSGFuZGxlci5jYXIyX3RyYW5zbWlzc29uPW1haWxWZWhpY2xlV2lkZ2V0RXgudHJhbnNtaXNzaW9uLGVtYWlsSGFuZGxlci5jYXIyX2RyaXZldHJhaW49bWFpbFZlaGljbGVXaWRnZXRFeC5kcml2ZXRyYWluLGVtYWlsSGFuZGxlci5jYXIyX2Z1ZWx0eXBlPW1haWxWZWhpY2xlV2lkZ2V0RXguZnVlbCxhPWEucmVwbGFjZSgve1wkVFJBREVJTkxPV30vZywiTi9BIiksYT1hLnJlcGxhY2UoL3tcJFRSQURFSU5ISUdIfS9nLCJOL0EiKSxhPWEucmVwbGFjZSgve1wkVFJBREVJTkFWR30vZywiTi9BIikpLGVtYWlsSGFuZGxlci52aW49CiIiLGVtYWlsSGFuZGxlci5wcmljZT0wLGVtYWlsSGFuZGxlci5zdG9ja051bWJlcj0iIixlbWFpbEhhbmRsZXIuY2FyaWQ9IiIsMDwkKCIjY2FyaWQiKS52YWwoKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0wPG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZS5sZW5ndGg\/Ik5ldyI6IlVua25vd24iKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNzZXJ2aWNlUGFja2FnZXMiKS5wcm9wKCJpZCIpKXt2YXIgbj0hMSxyPSIiOyQoImlucHV0LnNlbGVjdGVkU2VydmljZSIpLmVhY2goZnVuY3Rpb24oaCxwKXtoPSQocCk7aC5pcygiOmNoZWNrZWQiKSYmKHIrPSI8YnI+IitoLnZhbCgpLG49ITApfSk7biYmKHI9Ijxicj48YnI+PHU+IiskKCIjc2VsZWN0ZWRTZXJ2aWNlc1RpdGxlIikudmFsKCkrIjwvdT4iK3IpO2E9YS5yZXBsYWNlKC97XCRTRUxFQ1RFRFNFUlZJQ0VTfS9nLHIpfSJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFVzZXJJbmZvJiYKKG1haWxVc2VySW5mby5hc3NpZ25WYWx1ZXMoKSxhPWEucmVwbGFjZSgve1wkRk5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFVzZXJJbmZvLmZpcnN0TmFtZSkpLnJlcGxhY2UoL3tcJExOQU1FfS9nLGQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxVc2VySW5mby5sYXN0TmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMUEhPTkV9L2csbWFpbFVzZXJJbmZvLnBob25lKS5yZXBsYWNlKC97XCRFTUFJTH0vZyxtYWlsVXNlckluZm8uZW1haWwpKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxKb2JPZmZlciYmKG1haWxKb2JPZmZlci5hc3NpZ25WYWx1ZXMoKSxkPSQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKSxmPSQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS52YWwoKSxhPWEucmVwbGFjZSgve1wkSk9CUE9TVH0vZyxtKGQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxKb2JPZmZlci5qb2JQb3NpdG9uKSkpLnJlcGxhY2UoL3tcJEpPQkRFUEFSVE1FTlR9L2csCm0oZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbEpvYk9mZmVyLmpvYkRlcGFydG1lbnQpKSkucmVwbGFjZSgve1wkSk9CTVNHfS9nLG0obWFpbEpvYk9mZmVyLmpvYk1lc3NhZ2UpKSk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckFkZHJlc3Mpe21haWxVc2VyQWRkcmVzcy5hc3NpZ25WYWx1ZXMoKTt2YXIgcT10cmltKG1haWxVc2VyQWRkcmVzcy5hZGRyZXNzQXBwKyIgIittYWlsVXNlckFkZHJlc3MuYWRkcmVzc051bWJlcisiICIrbWFpbFVzZXJBZGRyZXNzLmFkZHJlc3NTdHJlZXQpO2E9YS5yZXBsYWNlKC97XCRDVVJSRU5UQUREUkVTU30vZyxtKHEpKS5yZXBsYWNlKC97XCRDVVJSRU5UQ0lUWX0vZyxtKG1haWxVc2VyQWRkcmVzcy5jaXR5KSkucmVwbGFjZSgve1wkQ1VSUkVOVFBST1ZJTkNFfS9nLG0obWFpbFVzZXJBZGRyZXNzLnByb3ZpbmNlKSkucmVwbGFjZSgve1wkQ1VSUkVOVFBPU1RBTENPREV9L2csbShtYWlsVXNlckFkZHJlc3MucG9zdGFsQ29kZSkpfSJ1bmRlZmluZWQiIT0KdHlwZW9mIG1haWxTY2hlZHVsZSYmKG1haWxTY2hlZHVsZS5hc3NpZ25WYWx1ZXMoKSxhPWEucmVwbGFjZSgve1wkREFURTF9L2csbWFpbFNjaGVkdWxlLmZpcnN0Q2hvaWNlKS5yZXBsYWNlKC97XCREQVRFMn0vZyxtYWlsU2NoZWR1bGUuc2Vjb25kQ2hvaWNlKS5yZXBsYWNlKC97XCRXQUlUSU5HT05TSVRFfS9nLG1haWxTY2hlZHVsZS53YWl0aW5nT25TaXRlKS5yZXBsYWNlKC97XCRUUkFOU1BPUlRPUFRJT059L2csbWFpbFNjaGVkdWxlLmdldFRyYW5zcG9ydE9wdGlvblRleHQoKSksZW1haWxIYW5kbGVyLnNlcnZpY2VEYXRlMT1tYWlsU2NoZWR1bGUuZmlyc3RDaG9pY2UsZW1haWxIYW5kbGVyLnNlcnZpY2VEYXRlMj1tYWlsU2NoZWR1bGUuc2Vjb25kQ2hvaWNlLGVtYWlsSGFuZGxlci53YWl0aW5nT25TaXRlPW1haWxTY2hlZHVsZS53YWl0aW5nT25TaXRlLGVtYWlsSGFuZGxlci50cmFuc3BvcnRPcHRpb249bWFpbFNjaGVkdWxlLnRyYW5zcG9ydE9wdGlvbik7dmFyIHQ9cT0iIiwKdT0iIjsidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNmaW5hbmNlT3B0aW9uRGl2IikuYXR0cigiaWQiKSYmKCJjaGVja2VkIj09JCgiI2ZpbmFuY2VPcHRpb25EaXYgaW5wdXQiKS5hdHRyKCJjaGVja2VkIik\/cT0kKCIjdGV4dENhc2giKS52YWwoKToocT0iY2hlY2tlZCI9PSQoIiNmaW5hbmNlT3B0aW9uRGl2MiBpbnB1dCIpLmF0dHIoImNoZWNrZWQiKT8kKCIjdGV4dEZpbmFuY2UiKS52YWwoKTokKCIjdGV4dExlYXNlIikudmFsKCksdT0kKCIjZmluYW5jZVRlcm1TZWxlY3QiKS52YWwoKSksInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdmVoaWNsZU9mZmVyIikuYXR0cigiaWQiKSYmKHQ9IiQiK2MoJCgiI3ZlaGljbGVPZmZlciIpLnZhbCgpKSksYT1hLnJlcGxhY2UoL3tcJFBBWU1FTlR9L2cscSkucmVwbGFjZSgve1wkUEFZTUVOVFRFUk19L2csdSkucmVwbGFjZSgve1wkT0ZGRVJ9L2csdCkpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3F1ZXN0aW9uc0NvbW1lbnRzIikuYXR0cigiaWQiKSYmCihlPW0oJCgiI3F1ZXN0aW9uc0NvbW1lbnRzIikudmFsKCkpLGE9YS5yZXBsYWNlKC97XCRRVUVTVElPTlN9L2csZSksZW1haWxIYW5kbGVyLmNvbW1lbnRzPWUpOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3JlcXVlc3RUeXBlIikuYXR0cigiaWQiKSYmKGE9YS5yZXBsYWNlKC97XCRERU1BTkRFfS9nLCQoIiNyZXF1ZXN0VHlwZSIpLnZhbCgpKSl9JCgiI3Rlc3REcml2ZVR5cGUiKS5sZW5ndGgmJihhPWEucmVwbGFjZSgve1wkVEVTVERSSVZFVFlQRX0vZywkKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpKSxhPSJWaXJ0dWFsIj09JCgiI3Rlc3REcml2ZVR5cGUiKS52YWwoKXx8IlZpcnR1ZWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpP2EucmVwbGFjZSgve1wkVEVTVERSSVZFVklSVFVBTH0vZywkKCIjcHJlZmVyZWRWaXJ0dWFsVG9vbCIpLnZhbCgpKTphLnJlcGxhY2UoL3tcJFRFU1REUklWRVZJUlRVQUx9L2csIk4vQSIpKTskKGcpLmZpbmQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikubGVuZ3RoPwplbWFpbEhhbmRsZXIuZGVhbGVyTmFtZT0kKGcpLmZpbmQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikuZmluZCgiOnNlbGVjdGVkIikuaHRtbCgpOiIxIj09JCgiI2lzTW9iaWxlIikudmFsKCkmJiQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikubGVuZ3RoJiYoZW1haWxIYW5kbGVyLmRlYWxlck5hbWU9JCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5maW5kKCI6c2VsZWN0ZWQiKS5odG1sKCkpO2VtYWlsSGFuZGxlci5kZWFsZXJOYW1lJiYoYT1hLnJlcGxhY2UoInskREVBTEVSTkFNRX0iLGVtYWlsSGFuZGxlci5kZWFsZXJOYW1lKSk7YT1hLnJlcGxhY2UoL3tcJChEQVRFWzEyXSl9L2csZnVuY3Rpb24oaCxwKXtoPSQoJ2lucHV0W25hbWU9IicrcC50b0xvd2VyQ2FzZSgpKyciXScsZyk7cmV0dXJuIDA8aC5sZW5ndGg\/KG5ldyBEYXRlKGgudmFsKCkpKS5kYXRlRm9ybWF0KCJZLW0tZCBIOmkiKToiIn0pO2M9IiI7MDwkKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKS5sZW5ndGgmJihjPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKwoiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLnZhbCgpKTthPWEucmVwbGFjZSgieyRMQVNUVkVISUNMRVZJRVdFRH0iLGMpO2E9YS5yZXBsYWNlKFJlZ0V4cCgie1xcJChRVUVTVElPTlN8TUVTU0FHRXxSQVRJTkdNRVNTQUdFfEVNQUlMUEhPTkV8RU1BSUxNQUtFfEVNQUlMTU9ERUx8RU1BSUxZRUFSfFBBWU1FTlR8UEFZTUVOVFRFUk18T0ZGRVJ8U1RPQ0tOVU1CRVJ8Q09MT1J8Rk5BTUV8TE5BTUV8RU1BSUx8S018VklORVh8U0VMRUNURURTRVJWSUNFU3xFTUFJTENJVFl8UExBVEVTfERBVEUxfERBVEUyfFRSQU5TUE9SVE9QVElPTil9IiwiZyIpLCIiKTthPWEucmVwbGFjZSgve1wkRU1BSUxCVUlMREFORFBSSUNFfS9nLGIuYmFuZHBMaW5rKCkpOyIiPT1kJiYidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNleHByZXNzU2VuZFRvRW1haWwiKS5hdHRyKCJpZCIpJiYKKGQ9bCYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZXhwcmVzc1NlbmRUb0VtYWlsTkVXIikuYXR0cigiaWQiKSYmMDwkKCIjZXhwcmVzc1NlbmRUb0VtYWlsTkVXIikudmFsKCkubGVuZ3RoPyQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKTokKCIjZXhwcmVzc1NlbmRUb0VtYWlsIikudmFsKCkpO2lmKCIiPT1mJiYidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNleHByZXNzU2VuZFRvRW1haWxBREYiKS5hdHRyKCJpZCIpKWlmKGwmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERk5FVyIpLmF0dHIoImlkIikmJjA8JCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERk5FVyIpLnZhbCgpLmxlbmd0aClmPSQoIiNleHByZXNzU2VuZFRvRW1haWxBREZORVciKS52YWwoKTtlbHNlIGlmKCJzZXJ2aWNlIj09ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKXx8YiYmKCJtZW51U2VydmljZSI9PWIubWFpbElEfHwiaGVhZGVyU2VydmljZSI9PQpiLm1haWxJRCkpZj0kKCIjZXhwcmVzc1NlbmRUb0VtYWlsQURGU0VSVklDRSIpLnZhbCgpOyIiPT1kJiYkKCIjZXhwcmVzc0luRGVtbyIpLmxlbmd0aCYmIjEiPT0kKCIjZXhwcmVzc0luRGVtbyIpLnZhbCgpJiYoZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iTmV3IiwwPCQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKS5sZW5ndGgmJihkPSQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKSkpOyJRdWlja0VtYWlsIj09Yi5tYWlsSUQmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJjA8ZS5sZW5ndGgmJjA8JCgiI3NlcnZpY2VFbWFpbCIpLmxlbmd0aCYmMDwkKCIjc2VydmljZUFkZkVtYWlsIikubGVuZ3RoJiYodGVybXM9InJhcHBlbDtzZXJ2aWNlO2h1aWxlO3BpZWNlcztwae+\/vWNlcztwbmV1czt0cmFuc21pc3Npb247YWNjZXNzb2lyZXM7YWx0ZXJuYXRldXI7YW50aXJvdWlsbGU7YW50aS1yb3VpbGxlO2JhdHRlcmllO2JhdGVyaWU7cu+\/vXBhcmF0aW9uO3BlaW50dXJlO2ZyZWlucztkaXNxdWVzO2NhcnJvc3NlcmllO2NhdGFseXNldXI7Y2hvYztkZW1hcnJldXI777+9Y2hhcHBlbWVudDttb3RldXI7ZXNzdWllLWdsYWNlO2Vzc3VpLWdsYWNlOyBmZXV4O2NsaWdub3RhbnQ7a2xheG9uO2ZpbHRyZTtob3Jsb2dlO3JhZGlvO3RvaXQtb3V2cmFudDsgbWFnOyBtYWdzO23vv71jYW5pcXVlO211ZmZsZXI7bmF2aWdhdGlvbjtvcmRpbmF0ZXVyOyBwaGFyZXM7bHVtae+\/vXJlcztsdW1pZXJlO3Byb2Js77+9bWU7cHJvYmxlbWU7cmVjYWxsO3BhcnRzO3RpcmU7YWNjZXNzb3JpZXM7YWx0ZXJuYXRvcjtydXN0cHJvb2Zpbmc7YmF0dGVyeTtyZXBhaXI7cGFpbnQ7YnJha2U7ZGlza3M7IGJvZHk7c3RhcnRlcjtleGhhdXN0O2VuZ2luZTt3aXBlcjt3aXBlcnM7IGZsYXNoOyBsaWdodDtmbGFzaGVyO2ZsYXNoZXJzOyBob3JuO2ZpbHRlcjtjbG9jaztyb29mO21lY2FuaWM7Y29tcHV0ZXI7ZWN1O3Byb2JsZW0iLnNwbGl0KCI7IiksCm1hdGNoZWRUZXJtcz1bXSwkLmVhY2godGVybXMsZnVuY3Rpb24oaCxwKXtpZigtMTxlLmluZGV4T2YocCkpcmV0dXJuIGQ9JCgiI3NlcnZpY2VFbWFpbCIpLnZhbCgpLGY9JCgiI3NlcnZpY2VBZGZFbWFpbCIpLnZhbCgpLCExfSkpO2VtYWlsSGFuZGxlci5zdWJqZWN0PWs7ZW1haWxIYW5kbGVyLmJvZHk9YTtlbWFpbEhhbmRsZXIuc2VuZFRvPWQ7ZW1haWxIYW5kbGVyLnNlbmRGcm9tPSIiO2VtYWlsSGFuZGxlci5tYWlsSUQ9Yi5tYWlsSUQ7ZW1haWxIYW5kbGVyLmNhbGxiYWNrPWIuZW1haWxTZW50OyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFVzZXJJbmZvJiYibWVudUNvbnRhY3RVcyIhPWVtYWlsSGFuZGxlci5tYWlsSUQmJiJtZW51U2VydmljZSIhPWVtYWlsSGFuZGxlci5tYWlsSUQmJihlbWFpbEhhbmRsZXIudXNlckVtYWlsPW1haWxVc2VySW5mby5lbWFpbCxlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsVXNlckluZm8uZmlyc3ROYW1lLGVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9Cm1haWxVc2VySW5mby5sYXN0TmFtZSxlbWFpbEhhbmRsZXIudXNlclBob25lPW1haWxVc2VySW5mby5waG9uZSk7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsSm9iT2ZmZXImJihlbWFpbEhhbmRsZXIudXNlckF0dGFjaG1lbnRQYXRoPW1haWxKb2JPZmZlci5qb2JGaWxlKTtlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWY7LTEhPWVtYWlsSGFuZGxlci5ib2R5LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigidGVzdEBkMmNtZWRpYS5jYSIpJiYkKCJpbnB1dC50ZXN0bW9kZSIpLnZhbCgiMSIpOyQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLnNlbmRUbz0kKGcpLmZpbmQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikudmFsKCk6IjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKSYmJCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGgmJihlbWFpbEhhbmRsZXIuc2VuZFRvPSQoIiNzZXJ2aWNlRW1haWxzU2VsZWN0IikudmFsKCkpfTtiLl92YWxpZGF0ZUZpZWxkcz0KZnVuY3Rpb24oYyl7dmFyIGc9ITEsaz0kKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5odG1sKCksYT10aGlzLmpxU2NvcGU7aWYoIiNxdWlja0VtYWlsRm9ybSI9PWEpcmV0dXJuITA7JC52YWxpZGl0eS5zdGFydCgpO3ZhciBlPSIuSW5uZXJCb3hMYXllciI7MDwkKCIubWFpbl9sZWZ0X2JveCIpLmxlbmd0aCYmKGU9Ii5tYWluX2xlZnRfYm94Iik7YT1iLmpxU2NvcGU\/Yi5qcVNjb3BlOmU7MT4kKGEpLmxlbmd0aCYmKGE9IiNuZXdkZXRhaWxzIik7MT4kKGEpLmxlbmd0aCYmKGE9Ii5uZXctZGV0YWlscyIpOzE+JChhKS5sZW5ndGgmJihhPSJib2R5Iik7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKGMpO2M9JChhKS5maW5kKCIucmVxdWlyZWQsLnZhbGlkYXRlIik7JChhKS5maW5kKCJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhIikubm9uSHRtbCgpO2MuZmlsdGVyKCIucmVxdWlyZWQiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZXF1aXJlKCkubm9uSHRtbCgpfSk7CmMuZmlsdGVyKCIucmVxdWlyZWQtcGhvbmUiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZXF1aXJlKCkudmFsaWRhdGVQaG9uZSgpfSk7Yy5maWx0ZXIoIi5waG9uZTpub3QoLnJlcXVpcmVkLXBob25lKSIpLmVhY2goKGwsbik9PnskKG4pLnZhbGlkYXRlUGhvbmUoKX0pO2U9JCgiI3Bob25lMSwjcGhvbmUyLCNwaG9uZTMiLGEpLmZpbHRlcigiOnZpc2libGUiKTtpZigwPGUubGVuZ3RoKXt2YXIgZCxmO2xldCBsLG47MDwoZVswXS52YWx1ZSsobnVsbCE9KGw9bnVsbD09KGQ9ZVsxXSk\/dm9pZCAwOmQudmFsdWUpP2w6IiIpKyhudWxsIT0obj1udWxsPT0oZj1lWzJdKT92b2lkIDA6Zi52YWx1ZSk\/bjoiIikpLmxlbmd0aCYmJChlKS52YWxpZGF0ZVBob25lKCl9Yy5maWx0ZXIoIi56aXAiKS5lYWNoKGZ1bmN0aW9uKCl7KCQodGhpcykuaXMoIi5yZXF1aXJlZCIpfHwwIT0kKHRoaXMpLnZhbCgpLmxlbmd0aCkmJiQodGhpcykucmVxdWlyZVBvc3RhbENvZGUoKX0pOzE9PSQoIi52aW4iKS5sZW5ndGgmJgooJCgiLnZpbiIpLmlzKCIucmVxdWlyZWQiKSYmJCgiLnZpbiIpLnJlcXVpcmUoKS5ub25IdG1sKCksMDwkKCIudmluIikudmFsKCkubGVuZ3RoJiYkKCIudmluIikubWluTGVuZ3RoKDE3KSk7MT09JCgiLnZpbkV4IikubGVuZ3RoJiYoJCgiLnZpbkV4IikuaXMoIi5yZXF1aXJlZCIpJiYkKCIudmluRXgiKS5yZXF1aXJlKCkubm9uSHRtbCgpLDA8JCgiLnZpbkV4IikudmFsKCkubGVuZ3RoJiYkKCIudmluRXgiKS5taW5MZW5ndGgoMTcpKTtjLmZpbHRlcigiLmVtYWlsIikuZWFjaChmdW5jdGlvbigpeygkKHRoaXMpLmlzKCIucmVxdWlyZWQiKXx8MCE9JCh0aGlzKS52YWwoKS5sZW5ndGgpJiYkKHRoaXMpLnZhbGlkRW1haWxBZGRyZXNzKCl9KTskKGEpLmZpbmQoIi52YWxpZGF0ZS1ncm91cCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbD0kKHRoaXMpLnZhbCgpOyQobCxhKS52YWxpZEFsbG9yTm9uZSgpfSk7Yy5maWx0ZXIoIi51cGxvYWQiKS5lYWNoKGZ1bmN0aW9uKCl7ISQodGhpcykuaXMoIi5yZXF1aXJlZCIpJiYKMD09JCh0aGlzKS52YWwoKS5sZW5ndGh8fCIiIT0kKHRoaXMpLnZhbCgpfHwoJCgiI3VwbG9hZFN0YXR1cyIpLmNzcygiY29sb3IiLCJyZWQiKSwkKCIjdXBsb2FkU3RhdHVzIikuaHRtbCgkKCIjZmlsZVVwbG9hZFJlcXVlc3QiKS52YWwoKSksJCgiI3VwbG9hZFN0YXR1cyIpLnNob3coKSl9KTtkPSQudmFsaWRpdHkucmVwb3J0LmVycm9yczskKCIjZW1haWwiKS5tYXRjaCgiZW1haWwiKTskLnZhbGlkaXR5LnJlcG9ydC5lcnJvcnM+ZCYmKGY9JCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikudGV4dCgpKyIuPGJyLz4iKyQoIiNlbWFpbEVycm9yTXNnIiwiI3VzZXJJbmZvRm9ybSIpLnZhbCgpKyIuIiwwPT1kJiYoZj0kKCIjZW1haWxFcnJvck1zZyIsIiN1c2VySW5mb0Zvcm0iKS52YWwoKSksJCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikuaHRtbChmKSk7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckluZm8mJiJmdW5jdGlvbiI9PXR5cGVvZiBtYWlsVXNlckluZm8uYWRkZWRWYWxpZGF0aW9uJiYKbWFpbFVzZXJJbmZvLmFkZGVkVmFsaWRhdGlvbihhKTskLnZhbGlkaXR5LmVuZCgpLnZhbGlkP2c9ITA6KCQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLnNob3coKSwkKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5jZW50ZXIoKSwkKGRvY3VtZW50KS5vbmUoIm1vdXNlZG93biIsZnVuY3Rpb24obCl7JC52YWxpZGl0eS5jbGVhcigpOyQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmhpZGUoKTskKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5odG1sKGspfSkpO3JldHVybiBnfX07dmFyIG1haWxQYWdlPW5ldyBHZW5lcmljTWFpbDsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXswPCQoIiN0b3Bpc21vYmlsZSIpLmxlbmd0aCYmMTwkKCIjdG9waXNtb2JpbGUiKS52YWwoKSYmKG1haWxQYWdlLmpxU2NvcGU9Ii5uZXctZGV0YWlscyIpOyQoIiNzZW5kRW1haWxGb3JtIGJ1dHRvbiIpLm9uKCJjbGljayB0YXAiLG1haWxQYWdlLnNhdmUpOyQoIiNzZW5kRW1haWxGb3JtU3VibWl0Iikub24oImNsaWNrIHRhcCIsbWFpbFBhZ2Uuc2F2ZSk7bWFpbFBhZ2UubWFpbElEPSQoIiN0ZXh0U2F2ZU1haWxJRCIpLnZhbCgpOyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InN1bW1hcnkiLHNjcm9sbFRvOiExfSk7alF1ZXJ5LmZuLmNlbnRlcj1mdW5jdGlvbigpeyQoImlzbW9iaWxlIikmJjA8JCgiI3NlbmRFbWFpbEZvcm1TdWJtaXQiKS5sZW5ndGg\/dGhpcy5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDooJCh3aW5kb3cpLndpZHRoKCktJCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikub3V0ZXJXaWR0aCgpKS8yLAp0b3A6JCgiI3NlbmRFbWFpbEZvcm1TdWJtaXQiKS5wb3NpdGlvbigpLnRvcC0xMH0pOnRoaXMuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6KCQod2luZG93KS53aWR0aCgpLSQoIiNjb250YWluZXIiKS5vdXRlcldpZHRoKCkpLzIsdG9wOigkKHdpbmRvdykuaGVpZ2h0KCktJCgiI2NvbnRhaW5lciIpLm91dGVySGVpZ2h0KCkpLzJ9KTtyZXR1cm4gdGhpc307InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsUGFnZS5tYWlsSUQmJmVtYWlsSGFuZGxlci5sb2dGb3JtUmVxdWVzdCgiRm9ybUxvYWRlZCIsbWFpbFBhZ2UubWFpbElEKX0pOwovKiogL20vanMvcG9wdXBpemVyLmpzICoqLwp2YXIgX19fZDJjX3BvcHVwaXplcmpzX2Nfb249IjIwMjYtMDEtMTMgMTY6MzA6MDYiOyd1c2Ugc3RyaWN0Jztpc1NjcmF0Y2hBbmRTYXZlPSJ1bmRlZmluZWQiPT10eXBlb2YgaXNTY3JhdGNoQW5kU2F2ZT8iIjppc1NjcmF0Y2hBbmRTYXZlO3BvcHVwV2lkZ2V0X3BhZ2VWaWV3c0luY3JlbWVudGVkPSJ1bmRlZmluZWQiPT10eXBlb2YgcG9wdXBXaWRnZXRfcGFnZVZpZXdzSW5jcmVtZW50ZWQ\/IiI6cG9wdXBXaWRnZXRfcGFnZVZpZXdzSW5jcmVtZW50ZWQ7c2hvd1BvcHVwV2lkZ2V0PSJmdW5jdGlvbiIhPXR5cGVvZiBzaG93UG9wdXBXaWRnZXQ\/ZnVuY3Rpb24oKXt9OnNob3dQb3B1cFdpZGdldDthY3RpdmF0ZVBvcHVwQmVmb3JlTG9hZD0iZnVuY3Rpb24iIT10eXBlb2YgYWN0aXZhdGVQb3B1cEJlZm9yZUxvYWQ\/ZnVuY3Rpb24oKXt9OmFjdGl2YXRlUG9wdXBCZWZvcmVMb2FkOwp2YXIgcG9wdXBJc1N1Ym1pdHRpbmc9ITEsQ1BvcHVwU3VwZXJ2aXNvcj1mdW5jdGlvbigpe3ZhciBjPXRoaXM7Yy5vbmxvYWRRdWV1ZT1bXTtjLmluZGV4PTA7Yy5pc0FuaW1hdGluZz0hMTtjLnBvcHVwcz1bXTtjLnJlZ2lzdGVyPWZ1bmN0aW9uKGEpe3ZhciBrPTA7MDxOdW1iZXIoYS5zZXR0aW5ncy5zaG93b25sb2FkKSYmITAhPT1hLnNldHRpbmdzLnNob3dvbmxvYWQmJihrPWEuc2V0dGluZ3Muc2hvd29ubG9hZCk7dmFyIGI9MTsxPGEuc2V0dGluZ3MucHJpb3JpdHkmJihiPWEuc2V0dGluZ3MucHJpb3JpdHkpOzEhPUNvb2tpZXMuZ2V0KCJub3VzZWRjdGEiKXx8InVzZWRjYXJzLmh0bWwiIT0kKCIjUEFHRUlEIikudmFsKCkmJiJjYXJkZXRhaWwuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKT9jLm9ubG9hZFF1ZXVlLnB1c2goe3BvcHVwOmEsZGVsYXk6ayxwcmlvcml0eTpifSk6Y29uc29sZS5sb2coIk5vdCBzaG93aW5nIHBvcHVwIG9ubG9hZCwgYmVjYXVzZSBpdHMgYSB1c2VkIHBhZ2UgYW5kIHRoZSBjb29raWUgbm91c2VkY3RhIGlzIHNldCIpfTsKYy5yZXBvc2l0aW9uPWZ1bmN0aW9uKCl7aWYoIShwb3B1cGl6ZXJBY3RpdmUoKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbENvbmZpZyYmbW9kZWxDb25maWcuaXNBY3RpdmUmJm1vZGVsQ29uZmlnLmlzQWN0aXZlKCkpKXJldHVybiAkKCJib2R5IikuY3NzKCJvdmVyZmxvdyIsImF1dG8iKSwhMTtpZihjLmlzQW5pbWF0aW5nKXJldHVybiExO3ZhciBhPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmlubmVySGVpZ2h0P3dpbmRvdy5pbm5lckhlaWdodDokKHdpbmRvdykuaGVpZ2h0KCksaz0kKGRvY3VtZW50KS5zY3JvbGxUb3AoKSxiPS9Nb2JpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPzU6MjA7JCgiLnJldmVhbC1tb2RhbCIpLmVhY2goZnVuY3Rpb24oZCxmKXtkPSQodGhpcyk7aWYoInZpc2libGUiPT1kLmNzcygidmlzaWJpbGl0eSIpKXtmPWQub2Zmc2V0KCkudG9wO3ZhciBoPWQub3V0ZXJIZWlnaHQoKSxsPWYraDtpZihhPGgrYnx8bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKGlQaG9uZXxpUG9kKS9nKSl7aWYoJCgiYm9keSIpLmNzcygib3ZlcmZsb3ciLAoiYXV0byIpLGs+bHx8aythPGYpZj1rK2IsYy5pc0FuaW1hdGluZz0hMCxkLmFuaW1hdGUoe3RvcDpmKyJweCJ9LDIwMCxmdW5jdGlvbigpe2MuaXNBbmltYXRpbmc9ITF9KX1lbHNlIGY9aysoYS1oKS8yLGY9ZjxiP2I6ZixjLmlzQW5pbWF0aW5nPSEwLGQuYW5pbWF0ZSh7dG9wOmYrInB4In0sMjAwLGZ1bmN0aW9uKCl7Yy5pc0FuaW1hdGluZz0hMX0pfX0pfTtjLnNob3c9ZnVuY3Rpb24oKXtpZighKDA8JCgiI2Rpc2FibGVQb3B1cHMiKS5sZW5ndGgmJiIxIj09JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKSkmJihjLm9ubG9hZFF1ZXVlLnNvcnQoZnVuY3Rpb24oYSxrKXtpZihhLnByaW9yaXR5PmsucHJpb3JpdHkpcmV0dXJuIDE7aWYoYS5wcmlvcml0eTxrLnByaW9yaXR5KXJldHVybi0xO2lmKGEucHJpb3JpdHk9PWsucHJpb3JpdHkpcmV0dXJuIGEuZGVsYXk8ay5kZWxheT8xOi0xfSksKCJCVUlMREFORFBSSUNFIiE9cGFnZXx8Ii0xIiE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigic3RlcD1yZXN1bWUiKSkmJgowPGMub25sb2FkUXVldWUubGVuZ3RoKSl7Zm9yKGtleSBpbiBjLm9ubG9hZFF1ZXVlKWlmKDE9PWMub25sb2FkUXVldWVba2V5XS5wb3B1cC5zZXR0aW5ncy5lbmRQb3B1cFF1ZXVlKXJldHVybiBjLm9ubG9hZFF1ZXVlW2tleV0ucG9wdXAub3BlbihjLm9ubG9hZFF1ZXVlW2tleV0uZGVsYXkpLCExO2ZvcihrZXkgaW4gYy5vbmxvYWRRdWV1ZSljLm9ubG9hZFF1ZXVlW2tleV0ucG9wdXAub3BlbihjLm9ubG9hZFF1ZXVlW2tleV0uZGVsYXkpfX07dmFyIG09ZnVuY3Rpb24oKXtpZihwb3B1cGl6ZXJBY3RpdmUoKSlyZXR1cm4gc2V0VGltZW91dChtLDUwMCksITE7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHBvcHVwaXplckFjdGl2ZSgpKXJldHVybiBtKCk7JC5wb3N0TWVzc2FnZSgiY2xvc2VQb3B1cCIsIioiLHdpbmRvdy5wYXJlbnQpfSwxRTMpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7MDwkKCIjYXV0b2F1YmFpbmVfcG9wdXAiKS5sZW5ndGgmJiJmYWxzZSIhPSQoIiNhdXRvYXViYWluZV9wb3B1cCIpLnZhbCgpJiYKbSgpfSw1RTMpfSxwb3B1cFN1cGVydmlzb3I9bmV3IENQb3B1cFN1cGVydmlzb3IscG9wdXBpemVyQWN0aXZlPWZ1bmN0aW9uKCl7aWYocG9wdXBpemVyQ29uZmlnLnBvcHVwT3BlbilyZXR1cm4hMDt2YXIgYz0hMTskKCIucmV2ZWFsLW1vZGFsLCAucmV2ZWFsLW1vZGVsLWRvLW5vdC1zaG93IikuZWFjaChmdW5jdGlvbigpe2lmKDEhPWMpe3ZhciBtPSQodGhpcyk7aWYoIW0uaXMoIjpoaWRkZW4iKSlzd2l0Y2gobS5jc3MoInZpc2liaWxpdHkiKSl7Y2FzZSAidW5kZWZpbmVkIjpjYXNlICJ2aXNpYmxlIjpjPSEwfX19KTtpZigkKCIucHBfb3ZlcmxheSIpLmlzKCI6dmlzaWJsZSIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubW9kYWwtb3ZlcmxheSIpKWM9ITA7cmV0dXJuIGN9LHBvcHVwaXplckNvbmZpZz17fTskLmV4dGVuZCghMCxwb3B1cGl6ZXJDb25maWcse3BvcHVwT3BlbjohMX0pOwp2YXIgcG9wdXBpemVyPWZ1bmN0aW9uKGMsbSl7dmFyIGE9dGhpcyxrPSJhdXRvIjtjP2EudGFyZ2V0PWM6Yz1hLnRhcmdldDthLnNldHRpbmdzPW07YS5zZXRUcmlnZ2VyPWZ1bmN0aW9uKGIpe2s9InN0cmluZyI9PXR5cGVvZiBiJiYiY2xpY2siPT1iLnRvTG93ZXJDYXNlKCk\/ImNsaWNrIjoiYXV0byI7YS5zZXR0aW5ncy50cmlnZ2VyPWs7cmV0dXJuIGF9O2EuaW5pdD1mdW5jdGlvbigpe3ZhciBiPSJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlSW5pdGlhbGl6ZSxkPSJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplO2lmKGEuaXNDb250ZW50TG9hZGVkKCl8fCFiJiYhZCl7aWYoYil7dmFyIGY9YS5zZXR0aW5ncy5vbkJlZm9yZUluaXRpYWxpemUuY2FsbChjLGEpO2lmKDA9PWYpcmV0dXJufWI9ITE7aWYoYS5zZXR0aW5ncy50aHJlc2hvbGQmJmEuc2V0dGluZ3MubWFpbnBvcHVwKXthLnNldHRpbmdzLnNob3dvbmxvYWQ9ITE7CmlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplJiYoYj0hMCxmPWEuc2V0dGluZ3Mub25BZnRlckluaXRpYWxpemUuY2FsbChjLGEpLDA9PWYpKXthLnNhdmVTZXR0aW5ncygpO3JldHVybn10aHJlc2hvbGRFeGVjKGEuc2V0dGluZ3MudGhyZXNob2xkVmFsdWUvMTAwLGEuZXhlY09wZW4pfWlmKGEuc2V0dGluZ3Muc2Nyb2xsdXAmJmEuc2V0dGluZ3MubWFpbnBvcHVwKXthLnNldHRpbmdzLnNob3dvbmxvYWQ9ITE7aWYoZCYmKGI9ITAsZj1hLnNldHRpbmdzLm9uQWZ0ZXJJbml0aWFsaXplLmNhbGwoYyxhKSwwPT1mKSl7YS5zYXZlU2V0dGluZ3MoKTtyZXR1cm59c2Nyb2xsdXBFeGVjKGEuZXhlY09wZW4pfWMuYWRkQ2xhc3MoInJldmVhbC1tb2RhbCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgYS5zZXR0aW5ncy5hZGRlZENsYXNzZXMmJjA8YS5zZXR0aW5ncy5hZGRlZENsYXNzZXMubGVuZ3RoJiZjLmFkZENsYXNzKGEuc2V0dGluZ3MuYWRkZWRDbGFzc2VzKTsKJCgiZm9ybSIsYykub24oInN1Ym1pdCIsYS5zdWJtaXQpO2Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7YS5zZXR0aW5ncy5hbmltYXRpb24mJmYuZ2V0Q29udGV4dCYmKCJ1bmRlZmluZWQiIT10eXBlb2YgYS5zZXR0aW5ncy5hbmltYXRpb24uZWZmZWN0JiYoYS5zZXR0aW5ncy5yZXZlYWwuYW5pbWF0aW9uPSJleHRlcm5hbEFuaW1hdGlvbiIsYy5hZGRDbGFzcyhhLnNldHRpbmdzLmFuaW1hdGlvbi5lZmZlY3QpKSwidW5kZWZpbmVkIiE9dHlwZW9mIGEuc2V0dGluZ3MuYW5pbWF0aW9uLnNwZWVkJiZjLmFkZENsYXNzKGEuc2V0dGluZ3MuYW5pbWF0aW9uLnNwZWVkKSk7YS5zZXR0aW5ncy5pbml0aWFsaXplZD0hMDtjLnRyaWdnZXIoInBvcHVwaXplci5pbml0aWFsaXplZCIsYSk7aWYoZCYmIWImJihmPWEuc2V0dGluZ3Mub25BZnRlckluaXRpYWxpemUuY2FsbChjLGEpLDA9PWYpKXthLnNhdmVTZXR0aW5ncygpO3JldHVybn1hLnNhdmVTZXR0aW5ncygpO2Q9JCgiI2hpZGRlblNraXBPbmxvYWRQcmludHNjcmVlbiIpOwppZigwPGQubGVuZ3RoJiYiRE9fU0tJUF9QT1BVUCI9PWQudmFsKCkpcmV0dXJuITE7IWEuc2V0dGluZ3Muc2hvd29ubG9hZHx8bnVsbCE9Q29va2llcy5nZXQoInBvcHVwRm9ybUZpbGxlZCIpfHxudWxsIT1Db29raWVzLmdldChhLnNldHRpbmdzLmNvb2tpZU5hbWUpfHwxIT1hLnNldHRpbmdzLmNsb3NlQnV0dG9uJiYwIT1hLnNldHRpbmdzLmNsb3NlQnV0dG9ufHwoLTEhPXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9yZXF1ZXN0LyIpfHwtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlbWFuZGVzLyIpKSYmLTE9PWEuc2V0dGluZ3MubmFtZS5pbmRleE9mKCJpbWFnZVBvcHVwIil8fHBvcHVwU3VwZXJ2aXNvci5yZWdpc3RlcihhKTskKGRvY3VtZW50KS5vZmYoImNsaWNrIiwiLiIrbS5yZXZlYWwuZGlzbWlzc21vZGFsY2xhc3MpLm9uKCJjbGljayIsIi4iK20ucmV2ZWFsLmRpc21pc3Ntb2RhbGNsYXNzLGZ1bmN0aW9uKGgpe2MudHJpZ2dlcigicG9wdXBpemVyLmNsb3NlIiwKYyl9KTskKGRvY3VtZW50KS5vZmYoImtleXVwIikub24oImtleXVwIixmdW5jdGlvbihoKXsyNz09PWgud2hpY2gmJmMudHJpZ2dlcigicG9wdXBpemVyLmNsb3NlIixjKX0pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuc2V0dGluZ3MuZm9ybS5mcm9tQUEmJihlbWFpbEhhbmRsZXIuZnJvbUFBPWEuc2V0dGluZ3MuZm9ybS5mcm9tQUEpO3JldHVybiBhfWEubG9hZChhLmluaXQpfTthLm9uT3Blbj1mdW5jdGlvbigpe2EuaXNDb250ZW50TG9hZGVkKCl8fGEubG9hZCgpO2lmKCJhdXRvIj09ayYmbnVsbCE9Q29va2llcy5nZXQoYS5zZXR0aW5ncy5jb29raWVOYW1lKSlyZXR1cm4hMTtjLmZpbmQoIi5wb3B1cGl6ZXJCb2R5Iikuc2hvdygpO2lmKG51bGwhPUNvb2tpZXMuZ2V0KCJwb3B1cEZvcm1GaWxsZWQiKXx8bnVsbCE9Q29va2llcy5nZXQoYS5zZXR0aW5ncy5jb29raWVOYW1lKSljLmZpbmQoIi5jbG9zZS1yZXZlYWwtbW9kYWwiKS5yZW1vdmVDbGFzcygibW9kYWwtY2xvc2UtaGlkZSIpLApjLmZpbmQoIi5jbG9zZS1yZXZlYWwtbW9kYWwiKS5zaG93KCk7YS5jcmVhdGVDb25maXJtRm9ybSgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlT3BlbiYmMD09YS5zZXR0aW5ncy5vbkJlZm9yZU9wZW4uY2FsbChjLGEpKXJldHVybiExO3ZhciBiPSIvcG9wdXAtIithLnRhcmdldC5maW5kKCIuZW1haWxTdWJqZWN0IikudGV4dCgpLnJlcGxhY2UoL1tcblxyXS9nLCIgIik7YS50YXJnZXQuZmluZCgiI2ltYWdlUG9wdXBMZWFkVHlwZSIpLmxlbmd0aCYmKGI9Ii9wb3B1cC0iK2EudGFyZ2V0LmZpbmQoIiNpbWFnZVBvcHVwTGVhZFR5cGUiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWQiKS5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTthLnRhcmdldC5maW5kKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIiKS5sZW5ndGgmJihiPSQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/Ii9uZXVmcy9jYWxjdWxhdHJpY2UtcHJldC1hdXRvLXBvcHVwLmh0bWwiOiIvbmV3L2Nhci1sb2FuLWNhbGN1bGF0b3ItcG9wdXAuaHRtbCIpOwpnYVBhZ2VWaWV3KGIpO2dhNFBhZ2VWaWV3KGIpO2EubG9nRXZlbnQoInBvcHVwLm9wZW4iKTsibGl2ZSI9PSQoIiN0b3BkZXBsb3ltZW50dHlwZSIpLnZhbCgpJiZnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiUG9wdXAtTGF1bmNoZWQiLGEuc2V0dGluZ3MubmFtZSx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTthLnNldHRpbmdzLmNvdW50ZG93biYmYS5pbml0Q291bnRkb3duKCk7Yy5kYXRhKCJvcGVuIiwhMCk7cG9wdXBpemVyQ29uZmlnLnBvcHVwT3Blbj0hMDsib25PcGVuIj09YS5zZXR0aW5ncy5jb29raWVDcmVhdGUmJmEuc2V0Q29va2llKCk7Yj1jLmZpbmQoImZvcm0iKS5maXJzdCgpO2IuZmluZCgnaW5wdXQgW3R5cGU9InRleHQiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLm9mZigiZm9jdXMgYmx1ciBjaGFuZ2UiKS5jc3MoImNvbG9yIiwiIzAwMCIpOyQodGhpcykuYXR0cigicGxhY2Vob2xkZXIiLCQodGhpcykuYXR0cigiYWx0IikpfSk7dmFyIGQ9bmV3IEZvcm07ZC5tYXNrUGhvbmUoYy5maW5kKCJmb3JtIikuc2VsZWN0b3IrCiIgaW5wdXQucGhvbmUiKTtkLm1hc2tQaG9uZShjLmZpbmQoImZvcm0iKS5zZWxlY3RvcisiIGlucHV0Lm1vYmlsZSIpOzA8Yi5maW5kKCIucGhvbmUucmVxdWlyZWQiKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5PTE6ZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5PTA7YS5zZXR0aW5ncy5mb3JtLmVtYWlsaWQmJmVtYWlsSGFuZGxlci5sb2dGb3JtUmVxdWVzdCgiRm9ybUxvYWRlZCIsYS5zZXR0aW5ncy5mb3JtLmVtYWlsaWQsYS5zZXR0aW5ncy5mb3JtLm9mZmVydHlwZSk7YS5zZXR0aW5ncy5yZXZlYWwuY2xvc2VkPWEub25DbG9zZTtjLnJldmVhbChhLnNldHRpbmdzLnJldmVhbCk7JCgiI2Zsb2F0UHJvbW9Ub3BCdG5Db250YWluZXIiKS5oaWRlKCk7JCgiI2NvbnRhaW5lckZsQiIpLmhpZGUoKTskKCIjdG9hc3QtY29udGFpbmVyIikuaGlkZSgpOyQoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmhpZGUoKTthLnNldHRpbmdzLmZvcm0uT0tCdXR0b25DbGFzcyYmKGI9CmEuc2V0dGluZ3MuZm9ybS5PS0J1dHRvbkNsYXNzLCIuIj09YlswXSYmKGI9Yi5zdWJzdHJpbmcoMSkpLCQoIi4iK2IsYykub2ZmKCJjbGljayIpLm9uKCJjbGljayIsYS5zdWJtaXQpKTthLnNldHRpbmdzLmZvcm0uQ2FuY2VsQnV0dG9uQ2xhc3MmJihiPWEuc2V0dGluZ3MuZm9ybS5DYW5jZWxCdXR0b25DbGFzcywiLiI9PWJbMF0mJihiPWIuc3Vic3RyaW5nKDEpKSwkKCIuIitiLGMpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGEuY2FuY2VsKSk7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIub25PcGVuIixhKX07YS5vbkNsb3NlPWZ1bmN0aW9uKCl7Yy5kYXRhKCJvcGVuIiwhMSk7cG9wdXBpemVyQ29uZmlnLnBvcHVwT3Blbj0hMTthLnNldHRpbmdzLnN1Ym1pdHRlZHx8YS5sb2dFdmVudCgicG9wdXAuY2FuY2VsIik7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIiN0b2FzdC1jb250YWluZXIiKS5zaG93KCl9LDUwMCk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi5yZXZlYWwtbW9kYWwtYmciKS5sZW5ndGgmJgokKCIucmV2ZWFsLW1vZGFsLWJnIikucmVtb3ZlKCl9LDFFMyk7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIub25DbG9zZSIsYSk7ImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25DbG9zZSYmYS5zZXR0aW5ncy5vbkNsb3NlLmNhbGwoYyxhKX07YS5zdWJtaXQ9ZnVuY3Rpb24oKXtpZihwb3B1cElzU3VibWl0dGluZylyZXR1cm4hMTtwb3B1cElzU3VibWl0dGluZz0hMDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cG9wdXBJc1N1Ym1pdHRpbmc9ITF9LDNFMyk7dmFyIGI9Yy5maW5kKCJmb3JtIikuZmlyc3QoKSxkPVtdLGY9IiIsaD0iIixsPVtdLHA9W10sZz0hMCx0PSIiLHo9IiIsQT0iIjtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZVZhbGlkYXRpb24pc3dpdGNoKGEuc2V0dGluZ3Mub25CZWZvcmVWYWxpZGF0aW9uLmNhbGwoYixjLGEpKXtjYXNlICExOmNhc2UgMDpyZXR1cm4gcG9wdXBJc1N1Ym1pdHRpbmc9ITE7Y2FzZSAtMTpnPSExfWlmKGcpeyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIiwKc2Nyb2xsVG86ITF9KS5zdGFydCgpO2IuZmluZCgiaW5wdXQ6bm90KDpoaWRkZW4pLCB0ZXh0YXJlYSIpLm5vbkh0bWwoKTtiLmZpbmQoImlucHV0LnJlcXVpcmVkLCBzZWxlY3QucmVxdWlyZWQsIHRleHRhcmVhLnJlcXVpcmVkIikucmVxdWlyZSgpO3ZhciB2PSExLEI9ITEsdz0hMTtiLmZpbmQoImlucHV0IikuZmlsdGVyKCIucmVxUmFkaW8iKS5yYWRpb09wdGlvbkNob3NlbigpO2IuZmluZCgiaW5wdXQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9JCh0aGlzKTtlLmhhc0NsYXNzKCJlbWFpbCIpJiYoZS5oYXNDbGFzcygicmVxdWlyZWQiKXx8MDxlLnZhbCgpLmxlbmd0aCkmJih3PSEwKTtpZihlLmhhc0NsYXNzKCJwaG9uZSIpfHxlLmhhc0NsYXNzKCJtb2JpbGUiKSlpZihCPSEwLGUuaGFzQ2xhc3MoInJlcXVpcmVkIil8fDA8ZS52YWwoKS5sZW5ndGgpdj0hMH0pOzA9PXYmJjA9PXcmJihCP3Y9ITA6dz0hMCk7Yi5maW5kKCJpbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0kKHRoaXMpOwplLmhhc0NsYXNzKCJlbWFpbCIpJiZlLnZhbGlkRW1haWxBZGRyZXNzKCk7ZS5oYXNDbGFzcygicGhvbmUiKSYmZS52YWxpZGF0ZVBob25lKCk7ZS5oYXNDbGFzcygibW9iaWxlIikmJmUudmFsaWRhdGVNb2JpbGUoKX0pOzE+Yy5maW5kKCIuTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5sZW5ndGgmJmMuYXBwZW5kKCc8ZGl2IGNsYXNzPSJNaXNzaW5nVmFsaWRhdGlvbk1zZyI+PC9kaXY+Jyk7aWYoISQudmFsaWRpdHkuZW5kKCkudmFsaWQpcmV0dXJuICQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIsYykuc2hvdygpLCQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpeyQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIsYykuaGlkZSgpOyQodGhpcykub2ZmKGUpfSksYS5sb2dFdmVudCgicG9wdXAudmFsaWRhdGlvbkZhaWxlZCIpLHBvcHVwSXNTdWJtaXR0aW5nPSExfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3Jlc3VibWl0KXtnPSEwO3RyeXtnPWEuc2V0dGluZ3Mub25CZWZvcmVzdWJtaXQuY2FsbChjLAphKX1jYXRjaChlKXtjb25zb2xlLmxvZygiT24gYmVmb3JlIHN1Ym1pdCBmYWlsZWQsIHJldHVybmluZyB0cnVlLiIsZSl9aWYoMD09ZylyZXR1cm4gYS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0JiZhLmNsb3NlKCksITF9YS5sb2dFdmVudCgicG9wdXAuc3VibWl0Iik7Yi5maW5kKCJpbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0kKHRoaXMpOyhlLmhhc0NsYXNzKCJlbWFpbCIpfHwiZW1haWwiPT09ZS5hdHRyKCJ0eXBlIikpJiZkLnB1c2goZS52YWwoKSk7ZS5oYXNDbGFzcygicG9zdGFsIikmJihmPWUudmFsKCkpO2UuaGFzQ2xhc3MoInRyYWRlaW4iKSYmKGg9ZS52YWwoKSk7KGUuaGFzQ2xhc3MoInBob25lIil8fGUuaGFzQ2xhc3MoIm1vYmlsZSIpfHwidGVsIj09PWUuYXR0cigidHlwZSIpKSYmcC5wdXNoKGUudmFsKCkpOyJ1bmRlZmluZWQiPT10eXBlb2YgZS5hdHRyKCJuYW1lIikmJmUuYXR0cigibmFtZSIsIiIpOyhlLmhhc0NsYXNzKCJuYW1lIil8fCJuYW1lIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJgpsLnB1c2goZS52YWwoKSk7KGUuaGFzQ2xhc3MoImZpcnN0bmFtZSIpfHwiZmlyc3RuYW1lIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJmwudW5zaGlmdChlLnZhbCgpKTsoZS5oYXNDbGFzcygibGFzdG5hbWUiKXx8Imxhc3RuYW1lIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSkmJmwucHVzaChlLnZhbCgpKTtpZihlLmhhc0NsYXNzKCJjb21tZW50Iil8fCJjb21tZW50Ij09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSl0PWUudmFsKCk7aWYoZS5oYXNDbGFzcygiYWRkcmVzcyIpfHwiYWRkcmVzcyI9PWUuYXR0cigibmFtZSIpLnRvTG93ZXJDYXNlKCkpej1lLnZhbCgpO2lmKGUuaGFzQ2xhc3MoImJpcnRoZGF0ZSIpfHwiYmlydGhkYXRlIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSlBPWUudmFsKCl9KTtnPWIuc2VyaWFsaXplQXJyYXkoKTt2YXIgeD0kKCIuZW1haWxCb2R5IixjKS5odG1sKCkrIiIsdT0kKCIuZW1haWxTdWJqZWN0IixjKS5odG1sKCkrCiIiOyJQcmljZVZlaGljbGUiPT1hLnNldHRpbmdzLmZvcm0uZW1haWxpZCYmMD09Yi5maW5kKCJbbmFtZT1ub0NCQl0iKS52YWwoKSYmIlNNUyI9PWIuZmluZCgiI3RyYWRlSW5CYXJTbXNPckVtYWlsU21zOmNoZWNrZWQiKS52YWwoKSYmKHUrPSIgKFNNUykiKTt2YXIgcT1bXTtbXS5wdXNoLmFwcGx5KHEsZyk7W10ucHVzaC5hcHBseShxLGEuZ2xvYmFsUmVwbGFjZW1lbnRzKCkpOyQuZWFjaChxLGZ1bmN0aW9uKCl7dmFyIGU9bmV3IFJlZ0V4cCgie1xcJCIrdGhpcy5uYW1lLnRvVXBwZXJDYXNlKCkrIn0iLCJnIiksbj10aGlzLnZhbHVlOyJTRUFSQ0hFRFZFSElDTEUiPT10aGlzLm5hbWUudG9VcHBlckNhc2UoKSYmKG49IjxzcGFuIGlkPSdwaFNFQVJDSFZFSElDTEUnPiIrbisiPC9zcGFuPiIpO3g9eC5yZXBsYWNlKGUsbik7dT11LnJlcGxhY2UoZSx0aGlzLnZhbHVlKX0pO2c9e3NlbmRUbzphLnNldHRpbmdzLmZvcm0uc2VuZFRvLHNlbmRUb0FERkZvcm1hdDphLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGLApjb25kaXRpb246YS5zZXR0aW5ncy52ZWhpY2xlU3RhdGUsbWFpbElEOmEuc2V0dGluZ3MuZm9ybS5lbWFpbGlkLHN1YmplY3Q6dSxib2R5OngsdXNlclBvc3RhbDpmLGFkZHJlc3M6eixiaXJ0aGRhdGU6QSx0cmFkZWluOmgscG9wdXBkaXY6IiIsdXNlckVtYWlsOmQuam9pbigiOyIpLHVzZXJOYW1lOmwuam9pbigiICIpLHVzZXJQaG9uZTpwLmpvaW4oIiwiKSxzbXM6YS5zZXR0aW5ncy5mb3JtLnNtcyxwb3B1cE9mZmVyVHlwZTphLnNldHRpbmdzLmZvcm0ub2ZmZXJ0eXBlLGNvbW1lbnRzOnR9OyQuZXh0ZW5kKCEwLGVtYWlsSGFuZGxlcixnKTsic3RyaW5nIj09dHlwZW9mIGVtYWlsSGFuZGxlci51c2VyTmFtZSYmKGc9ZW1haWxIYW5kbGVyLnVzZXJOYW1lLnNwbGl0KCIgIiksZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9Zy5zaGlmdCgpLGVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9Zy5qb2luKCIgIikpO2VtYWlsSGFuZGxlci5wb3B1cGRpdj1hLnRhcmdldC5hdHRyKCJpZCIpOwppZihhLnNldHRpbmdzLmZpbGxmbGFnKXZhciBDPWZ1bmN0aW9uKCl7Q29va2llcy5zZXQoInBvcHVwRm9ybUZpbGxlZCIsIjEiLDkwLCIvIik7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIuZm9ybUZpbGxlZCIsYSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlbWFpbEhhbmRsZXIuY2FsbGJhY2smJjA8ZW1haWxIYW5kbGVyLmNhbGxiYWNrLmxlbmd0aCl2YXIgRD1lbWFpbEhhbmRsZXIuY2FsbGJhY2s7dmFyIEU9ZnVuY3Rpb24oKXtyZXR1cm4hMH07ImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25BZnRlcnN1Ym1pdCYmKEU9YS5zZXR0aW5ncy5vbkFmdGVyc3VibWl0KTtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD1mdW5jdGlvbigpe2MuY3NzKHtvcGFjaXR5OjEsdmlzaWJpbGl0eToiaGlkZGVuIn0pO2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25BZnRlckNvbnNlbnQ9ZnVuY3Rpb24oZSl7YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0PwphLmNsb3NlKCk6Yy5yZXZlYWwoYS5zZXR0aW5ncy5yZXZlYWwpO2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExO2VtYWlsSGFuZGxlci5vbkFmdGVyQ29uc2VudD0hMX07ZW1haWxIYW5kbGVyLm9uRHVwbGljYXRlU2VuZD1mdW5jdGlvbigpe2Euc2V0dGluZ3MuY2xvc2VPblN1Ym1pdCYmYS5jbG9zZSgpO2VtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpfTtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9ZnVuY3Rpb24oZSl7dmFyIG49ITE7YS5zZXR0aW5ncy5mb3JtLnNob3dFbWFpbENvbmZpcm1hdGlvbiYmKG49Z2V0TWFpbFNlbnRIYW5kbGVyKCJfIitjLmF0dHIoImlkIikpLG4udGltZW91dENhbGxiYWNrPWZ1bmN0aW9uKCl7Yi50cmlnZ2VyKCJyZXNldCIpfSk7dmFyIEY9YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0O2lmKGUpYS5sb2dFdmVudCgicG9wdXAubGVhZF9zZW50IiksMD09RS5jYWxsKGMsYSkmJihGPSExKSwiZnVuY3Rpb24iPT10eXBlb2YgQyYmQygpLCJmdW5jdGlvbiI9PQp0eXBlb2YgRCYmRCgpLCJvblN1Ym1pdCI9PWEuc2V0dGluZ3MuY29va2llQ3JlYXRlJiZhLnNldENvb2tpZSgpLEYmJiJoaWRkZW4iIT1jLmNzcygidmlzaWJpbGl0eSIpJiZhLmNsb3NlKCJDT05TRU5UIiksYS5zZXR0aW5ncy5tYWlucG9wdXAmJihlbWFpbEhhbmRsZXIubWFpblByb21vPSEwKSxuP24uc2hvd1N1Y2Nlc3MoKTowPCQoImZvcm0jIitjLmF0dHIoImlkIikrIl9jb25maXJtIikubGVuZ3RoJiYkKCJmb3JtIyIrYy5hdHRyKCJpZCIpKyJfY29uZmlybSIpLnRyaWdnZXIoInN1Ym1pdCIpO2Vsc2V7bnx8KG49Z2V0TWFpbFNlbnRIYW5kbGVyKCkpO3RyeXtuLnNob3dGYWlsKCl9Y2F0Y2goRyl7fX1zZXRUaW1lb3V0KGVtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpLDFFMyl9O2Euc2F2ZVNldHRpbmdzKHtzdWJtaXR0ZWQ6ITB9KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkJlZm9yZVNlbmRNYWlsJiYwPT1hLnNldHRpbmdzLm9uQmVmb3JlU2VuZE1haWwuY2FsbChjLAphKSlyZXR1cm4hMTthLnNldERlZmF1bHRBREYoKTsiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkFERiYmKGc9YS5zZXR0aW5ncy5vbkFERi5jYWxsKGMsYSksIm9iamVjdCI9PXR5cGVvZiBnJiYkLmV4dGVuZChhLnNldHRpbmdzLkFERixnKSk7Zz0ibWFrZSBtb2RlbCB5ZWFyIHN0b2NrTnVtYmVyIHRyaW0gdmluIHByaWNlIGNhcmlkIi5zcGxpdCgiICIpO3E9YS5zZXR0aW5ncy5BREY7Zm9yKHZhciB5PTA7eTxnLmxlbmd0aDt5Kyspe3ZhciByPWdbeV07ZW1haWxIYW5kbGVyW3JdPSIiIT1lbWFpbEhhbmRsZXJbcl0\/ZW1haWxIYW5kbGVyW3JdOnFbcl0\/cVtyXTplbWFpbEhhbmRsZXJbcl19ZW1haWxIYW5kbGVyLmJvZHk9YS5jbGVhbkJsYW5rVmFyaWFibGVzKGVtYWlsSGFuZGxlci5ib2R5KTthLnNob3dQdXJjaGFzZUludGVudFBvcHVwKCl8fGVtYWlsSGFuZGxlci5zZW5kTWFpbChhLnNldHRpbmdzLmJ5cGFzc0NvbnNlbnQpO3JldHVybiEwfTthLnNob3dQdXJjaGFzZUludGVudFBvcHVwPQpmdW5jdGlvbigpe2lmKGEuc2V0dGluZ3MucHVyY2hhc2VJbnRlbnRQb3B1cCl7dmFyIGI9JCgiI2ludGVyc3RpdGlhbFZlaGljbGVJbnRlbnQiKTtpZigxPmIubGVuZ3RofHxudWxsIT1Db29raWVzLmdldCgicHVyY2hhc2VfaW50ZW50IikpcmV0dXJuITE7Z2FUcmFjaygiX3RyYWNrRXZlbnQiLCJJbnRlbnRpb25zIGQnYWNoYXQiLCJQb3B1cCB2dXMiLGEuc2V0dGluZ3MuZ29vZ2xlVHJhY2tpbmcubGFiZWwsMSk7Yy5jc3Moe29wYWNpdHk6MSx2aXNpYmlsaXR5OiJoaWRkZW4ifSk7Yi5maW5kKCJmb3JtIikub24oInN1Ym1pdCIsZnVuY3Rpb24oKXt2YXIgZD0kKHRoaXMpLGY9ZC5maW5kKCJpbnB1dCIpOyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIn0pLnN0YXJ0KCk7ZC5maW5kKCJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhIikubm9uSHRtbCgpO2YuZmlsdGVyKCIucmVxdWlyZWQiKS5yZXF1aXJlKCkubm9uSHRtbCgpO2YuZmlsdGVyKCIucmVxUmFkaW8iKS5yYWRpb09wdGlvbkNob3NlbigpOwppZigkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKXtiLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpO3ZhciBoPXtwdXJjaGFzZV9pbnRlbnQ6ITB9O2Quc2VyaWFsaXplQXJyYXkoKS5tYXAoZnVuY3Rpb24obCxwLGcpe2hbbC5uYW1lXT1sLnZhbHVlfSk7Q29va2llcy5zZXQoInB1cmNoYXNlX2ludGVudCIsaC5wdXJjaGFzZV9pbnRlbnQsMzAsIi8iKTtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkludGVudGlvbnMgZCdhY2hhdCIsIlJlcG9uc2VzIixoLnB1cmNoYXNlX2ludGVudCwxKTtlbWFpbEhhbmRsZXIuc2VuZE1haWwoYS5zZXR0aW5ncy5ieXBhc3NDb25zZW50KX1yZXR1cm4hMX0pO2IucmV2ZWFsKHtjbG9zZV9vbl9iYWNrZ3JvdW5kX2NsaWNrOiExLGRpc21pc3NfbW9kYWxfY2xhc3M6Il9fTlVMTF9fIn0pO3JldHVybiEwfXJldHVybiExfTthLmdsb2JhbFJlcGxhY2VtZW50cz1mdW5jdGlvbigpe3ZhciBiPVtdOyQoImlucHV0W3R5cGU9aGlkZGVuXSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZz0KJCh0aGlzKS5hdHRyKCJuYW1lIik7Zz0idW5kZWZpbmVkIiE9dHlwZW9mIGc\/ZzokKHRoaXMpLmF0dHIoImlkIik7aWYoIWcpcmV0dXJuITA7dmFyIHQ9ITE7ImVtYWlsYnVpbGRhbmRwcmljZSI9PWcudG9Mb3dlckNhc2UoKSYmIiI9PSQodGhpcykudmFsKCkucmVwbGFjZSgvIC9nLCIiKSYmKHQ9ITApO3R8fCgiYnJhbmQiPT1nLnRvTG93ZXJDYXNlKCkmJmIucHVzaCh7bmFtZToibWFrZSIsdmFsdWU6JCh0aGlzKS52YWwoKX0pLGIucHVzaCh7bmFtZTpnLHZhbHVlOiQodGhpcykudmFsKCl9KSl9KTt2YXIgZD0iIjtpZigwPCQoIiNsYXN0dmlld2VkbWFrZSIpLmxlbmd0aCYmMDwkKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKS5sZW5ndGgpe3ZhciBmPSQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKTtkPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpO3ZhciBoPSQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSxsPSQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpLHA9JCgiI2xhc3R2aWV3ZWR0cmltIikudmFsKCl8fAoiIjtkPWQrIiAiK2grIiAiK2wrKHAubGVuZ3RoPyIgIitwOiIiKTtkKz0wPGYubGVuZ3RoPyIgKFN0b2NrIyAiK2YrIikiOiIifWIucHVzaCh7bmFtZToiTEFTVFZFSElDTEVWSUVXRUQiLHZhbHVlOmR9KTtyZXR1cm4gYn07YS5jbGVhbkJsYW5rVmFyaWFibGVzPWZ1bmN0aW9uKGIpe3ZhciBkPWIucmVwbGFjZSgve1wkUVVFU1RJT05TfS9nLCIiKS5yZXBsYWNlKC97XCRNRVNTQUdFfS9nLCIiKS5yZXBsYWNlKC97XCRFTUFJTFBIT05FfS9nLCIiKS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMTU9ERUx9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMWUVBUn0vZywiIikucmVwbGFjZSgve1wkUEFZTUVOVH0vZywiIikucmVwbGFjZSgve1wkUEFZTUVOVFRFUk19L2csIiIpLnJlcGxhY2UoL3tcJE9GRkVSfS9nLCIiKS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZywiIikucmVwbGFjZSgve1wkQ09MT1J9L2csIiIpLnJlcGxhY2UoL3tcJEZOQU1FfS9nLAoiIikucmVwbGFjZSgve1wkTE5BTUV9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLCIiKS5yZXBsYWNlKC97XCRVU0VSUEhPTkV9L2csIiIpO21haWxQYWdlJiZiLnJlcGxhY2UoL3tcJEVNQUlMQlVJTERBTkRQUklDRX0vZyxtYWlsUGFnZS5iYW5kcExpbmsoKSk7cmV0dXJuIGR9O2EuY2FuY2VsPWZ1bmN0aW9uKCl7YS5jbG9zZSgiQ0FOQ0VMIil9O2Eub3Blbj1mdW5jdGlvbihiKXtpZigxPT1jLmRhdGEoIm9wZW4iKSlyZXR1cm4hMTsib2JqZWN0Ij09dHlwZW9mIGImJi0xIT0iY2xpY2sgdGFwIi5pbmRleE9mKGIudHlwZS50b0xvd2VyQ2FzZSgpKSYmKGs9ImNsaWNrIik7aWYoIWlzTmFOKGIpKXJldHVybiBzZXRUaW1lb3V0KGEub3BlbiwxRTMqYik7aWYoIWEuaXNDb250ZW50TG9hZGVkKCkpcmV0dXJuIGEubG9hZChhLm9wZW4pO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5uZXdWRFBWaWRlb0lzUGxheWluZyYmMT09d2luZG93Lm5ld1ZEUFZpZGVvSXNQbGF5aW5nJiYKImNsaWNrIiE9a3x8YS5pc0FjdGl2ZSgpKXJldHVybiBhLm9wZW4oNSk7YS5vbk9wZW4oKTtyZXR1cm4gYX07YS5leGVjT3Blbj1mdW5jdGlvbigpe251bGw9PUNvb2tpZXMuZ2V0KCJwb3B1cFNob3duRXhlYyIpJiYoQ29va2llcy5zZXQoInBvcHVwU2hvd25FeGVjIiwiMSIsbnVsbCx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLGEub3BlbigwKSl9O2EuaW5pdENvdW50ZG93bj1mdW5jdGlvbigpe3RyeXt2YXIgYj1uZXcgRGF0ZSgxRTMqYS5zZXR0aW5ncy5jb3VudGRvd24pO2lmKDA8Yy5maW5kKCIuY291bnRkb3duIikubGVuZ3RoKXt2YXIgZD1jLmZpbmQoIi5jb3VudGRvd24iKSxmPW5ldyBEYXRlLGg9Yi5nZXRUaW1lKCktZi5nZXRUaW1lKCk7aWYoMDxoKXt2YXIgbD1bTWF0aC5mbG9vcihoLzg2NEU1KSxNYXRoLmZsb29yKGglODY0RTUvMzZFNSksTWF0aC5mbG9vcihoJTg2NEU1JTM2RTUvNkU0KSxNYXRoLmZsb29yKGglODY0RTUlMzZFNSU2RTQvMUUzKV07Zm9yKGI9MDtiPApsLmxlbmd0aDtiKyspbFtiXT05PGxbYl0\/bFtiXS50b1N0cmluZygpOiIwIitsW2JdO3ZhciBwPWwuam9pbigiOiIpO2QuY291bnRkb3duKHtzdGFydFRpbWU6cCxpbWFnZToiL2ltYWdlcy9kaWdpdHNfc21hbGwucG5nIixkaWdpdFdpZHRoOjI5LGRpZ2l0SGVpZ2h0OjQzfSl9ZWxzZSBkLmhpZGUoKX19Y2F0Y2goZyl7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJihkZWJ1ZyhnKSxkZWJ1ZygiSW52YWxpZCBkYXRlICIsYS5zZXR0aW5ncy5jb3VudGRvd24pKX19O2EuY2xvc2U9ZnVuY3Rpb24oYil7aWYoIkNBTkNFTCI9PWImJiJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlQ2FuY2VsKXt2YXIgZD1hLnNldHRpbmdzLm9uQmVmb3JlQ2FuY2VsLmNhbGwoYyxhKTtpZigwPT1kKXJldHVybiExfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlQ2xvc2UmJihkPWEuc2V0dGluZ3Mub25CZWZvcmVDbG9zZS5jYWxsKGMsYSxiKSwwPT1kKSlyZXR1cm4hMTsKYy50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX07YS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiBwb3B1cGl6ZXJBY3RpdmUoKX07YS5zZXRDb29raWU9ZnVuY3Rpb24oKXtDb29raWVzLnNldChhLnNldHRpbmdzLmNvb2tpZU5hbWUsIjEiLGEuc2V0dGluZ3MuY29va2llRHVyYXRpb24sIi8iKTt2YXIgYj1hLnNldHRpbmdzLmNvb2tpZU5hbWUudG9Mb3dlckNhc2UoKTtpZigicmViYXRlc2hvd24iPT1ifHwicmViYXRlb3RoZXJzaG93biI9PWImJiJ1c2VkIj09JCgiI2N1cnJlbnRTdGF0dXMiKS52YWwoKSliPW5ldyBEYXRlLGIuc2V0VGltZShiLmdldFRpbWUoKSsxOEU0KSxDb29raWVzLnNldCgidXNlZFNsaWRlclBvcHVwRGlzcGxheWVkIiwiMSIsYiwiLyIpfTthLnNhdmVTZXR0aW5ncz1mdW5jdGlvbihiKXtiPSJ1bmRlZmluZWQiPT10eXBlb2YgYj97fTpiO2I9Im9iamVjdCIhPXR5cGVvZiBiP3t1c2VyRGVmaW5lZE5vbk9iamVjdDpifTpiO2MuZGF0YSgicG9wdXBTZXR0aW5ncyIsCiQuZXh0ZW5kKCEwLGEuc2V0dGluZ3MsYikpfTthLnNldERlZmF1bHRBREY9ZnVuY3Rpb24oKXt2YXIgYj0kKCIjcG9wdXBtYWtlIikudmFsKCksZD0kKCIjcG9wdXBtb2RlbCIpLnZhbCgpLGY9JCgiI3BvcHVweWVhciIpLnZhbCgpOzA8JCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgpLmxlbmd0aCYmMDwkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKCkubGVuZ3RoJiYwPCQoImlucHV0LnllYXJlbWFpbCIpLnZhbCgpLmxlbmd0aCYmKGI9JCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgpLGQ9JCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbCgpLGY9JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKCkpO2Euc2V0dGluZ3MuQURGPXttYWtlOmIsbW9kZWw6ZCx5ZWFyOmYsc3RvY2tOdW1iZXI6JCgiI3BvcHVwc3RvY2tudW1iZXIiKS52YWwoKX19O2EubG9nRXZlbnQ9ZnVuY3Rpb24oYil7dmFyIGQ9YS5zZXR0aW5ncy5mb3JtO2Q9ZC5vZmZlcnR5cGU\/ZC5vZmZlcnR5cGU6IkVNQUlMSURfIitkLmVtYWlsaWQ7CmlmKCFiKXJldHVybiExOyQoYS50YXJnZXQpLnRyaWdnZXIoYik7aWYoInBvcHVwLmxlYWRfc2VudCI9PWIpe3ZhciBmPWsucmVwbGFjZSgvKF5bYS16XXsxfSkvZyxmdW5jdGlvbihsKXtyZXR1cm4gbC50b1VwcGVyQ2FzZSgpfSksaD1kMmNtZWRpYS5wYWdlRGVwYXJ0bWVudCgpO2dhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJQb3B1cC1sZWFkcyIsZixoLDEpfSJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD8oInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGIsZCxhKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsZCkpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsYixkKX07YS5pc0NvbnRlbnRMb2FkZWQ9ZnVuY3Rpb24oKXtpZighYS50YXJnZXRbMF0uaGFzQXR0cmlidXRlKCJkYXRhLWxhenlsb2FkaWQiKSlyZXR1cm4hMDsKdmFyIGI9MD09PWEudGFyZ2V0Lmh0bWwoKS50cmltKCkubGVuZ3RoLGQ9YS5zZXR0aW5ncy5jb250ZW50TG9hZGVkfHwhMTtyZXR1cm4hYiYmZH07YS5sb2FkPWZ1bmN0aW9uKGIpe2EuaXNDb250ZW50TG9hZGVkKCk\/KGEuc2V0dGluZ3MuY29udGVudExvYWRlZD0hMCxiKCkpOiQuYWpheCh7dHlwZToiR0VUIixjYWNoZTohMCx1cmw6KCJFTkdMSVNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBvcHVwQ29udGVudCIsZGF0YTp7d3N3aWR0aDoiMCIsXzphLnNldHRpbmdzLmlkZW50LGlkOmEudGFyZ2V0LmRhdGEoImxhenlsb2FkaWQiKSxtYWtlOiQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpfHwiIixtb2RlbDokKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCl8fCIiLHllYXI6JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCl8fCIiLHRyaW06JCgiI2xhc3R2aWV3ZWR0cmltIikudmFsKCl8fCIiLApzdG9ja051bWJlcjokKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCl8fCIiLHZlaGljbGVJZDokKCIjdG9wY2FyaWQiKS52YWwoKXx8MH0sc3VjY2VzczpmdW5jdGlvbihkKXthLnRhcmdldC5odG1sKGQpO2Euc2V0dGluZ3MuY29udGVudExvYWRlZD0hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGFkZE5vVHJhbnNsYXRlRW1haWxEZWYmJmFkZE5vVHJhbnNsYXRlRW1haWxEZWYoKTtiKCl9fSl9O2EuY3JlYXRlQ29uZmlybUZvcm09ZnVuY3Rpb24oKXt2YXIgYj1hLnRhcmdldC5hdHRyKCJpZCIpKyJfY29uZmlybSI7MT4kKCIjY29uZmlybV9mb3JtcyIpLmxlbmd0aCYmJCgiYm9keSIpLmFwcGVuZCgkKCI8ZGl2PjwvZGl2PiIpLmF0dHIoImlkIiwiY29uZmlybV9mb3JtcyIpKTtpZigxPiQoIiMiK2IpLmxlbmd0aCYmYS5zZXR0aW5ncy5jb25maXJtRm9ybSYmMCE9PWEuc2V0dGluZ3MuY29uZmlybUZvcm0ubGVuZ3RoKXtiPSQoIjxmb3JtPjwvZm9ybT4iKS5hdHRyKCJpZCIsYikuYXR0cigibWV0aG9kIiwKIlBPU1QiKS5hdHRyKCJhY3Rpb24iLCIvY29uZmlybWF0aW9uLmh0bWwiKS5hdHRyKCJ0YXJnZXQiLCJpZnJhbWVndHJhY2siKTt2YXIgZD0kKCIjYXV0b2F1YmFpbmVfcG9wdXAiKTtkPVt7bmFtZToiZ3RhZ19jb252ZXJzaW9uIix2YWx1ZToiZ3RhZyJ9LHtuYW1lOiJsZWFkX2RlcGFydG1lbnQiLHZhbHVlOiIifSx7bmFtZToibGVhZFR5cGUiLHZhbHVlOiIifSx7bmFtZToicGFnZUlEIix2YWx1ZToiIn0se25hbWU6ImN1cnJlbnRVUkwiLHZhbHVlOiIifSx7bmFtZToiYnV0dG9uUG9zaXRpb24iLHZhbHVlOiIifSx7bmFtZToiZGVhbGVyTmFtZSIsdmFsdWU6IiJ9LHtuYW1lOiJpc0Z1bGxXaWR0aCIsdmFsdWU6IiJ9LHtuYW1lOiJpc01vYmlsZU5ld1ZEUCIsdmFsdWU6IiJ9LHtuYW1lOiJ0ZXN0bW9kZSIsdmFsdWU6IjAiLGNsYXNzOiJ0ZXN0bW9kZSJ9LHtuYW1lOiJmcm9tQXV0b0F1YmFpbmUiLHZhbHVlOjA8ZC5sZW5ndGgmJiJmYWxzZSIhPWQudmFsKCl9XTtbXS5wdXNoLmFwcGx5KGQsCmEuc2V0dGluZ3MuY29uZmlybUZvcm0pO2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGg7ZisrKSQoIjxpbnB1dCAvPiIpLmF0dHIoInR5cGUiLCJoaWRkZW4iKS5hdHRyKGRbZl0pLmFwcGVuZFRvKGIpOyQoIiNjb25maXJtX2Zvcm1zIikuYXBwZW5kKGIpO2Iub24oInN1Ym1pdCIsb25Db25maXJtU3VibWl0KX0xPiQoIiNndHJhY2tGcmFtZSIpLmxlbmd0aCYmJCgiPGlmcmFtZT48L2lmcmFtZT4iKS5hdHRyKHt3aWR0aDoxLGhlaWdodDoxLGZyYW1lQm9yZGVyOjAsaWQ6Imd0cmFja0ZyYW1lIixuYW1lOiJpZnJhbWVndHJhY2siLHN0eWxlOiJ3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsifSkuYXBwZW5kVG8oIiNjb25maXJtX2Zvcm1zIil9O3JldHVybiBhfTsKalF1ZXJ5KGZ1bmN0aW9uKGMpe3ZhciBtPWMoIiNzaXRlY29tcGlsZWlkIikubGVuZ3RoP2MoIiNzaXRlY29tcGlsZWlkIikudmFsKCk6TWF0aC5yb3VuZCgxRTcqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpO2MuZm4ucG9wdXBpemU9ZnVuY3Rpb24oYSl7YT1hP2E6e307dmFyIGs9e3JldmVhbDp7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMSxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIn0sZm9ybTp7ZW1haWxpZDowLG9mZmVydHlwZTowLG5hbWU6MCxzZW5kVG86MCxzZW5kVG9BREY6MCxPS0J1dHRvbkNsYXNzOiJzdWJtaXRCdG4iLENhbmNlbEJ1dHRvbkNsYXNzOiJjYW5jZWxCdG4iLHNob3dFbWFpbENvbmZpcm1hdGlvbjohMX0sQURGOnttYWtlOiIiLG1vZGVsOiIiLHllYXI6IiIsc3RvY2tOdW1iZXI6IiJ9LGlkZW50Om0sZW5kUG9wdXBRdWV1ZTohMSxwcmlvcml0eToxLGFuaW1hdGlvbjohMSwKbm90cmFuc2Zvcm06ITEsZmlsbGZsYWc6ITEsc3VibWl0dGVkOiExLHNob3dvbmxvYWQ6ITEsY29va2llTmFtZTohMSxjb29raWVEdXJhdGlvbjo2MCxjbG9zZU9uU3VibWl0OiEwLGFkZGVkQ2xhc3NlczoiIn07aWYoMT09dGhpcy5sZW5ndGgpe3ZhciBiPXRoaXMuZGF0YSgicG9wdXBTZXR0aW5ncyIpP3RoaXMuZGF0YSgicG9wdXBTZXR0aW5ncyIpOnt9O3NldHRpbmdzPXt9O2MuZXh0ZW5kKCEwLHNldHRpbmdzLGssYixhKTshc2V0dGluZ3MuY29va2llTmFtZSYmMDx0aGlzLmF0dHIoImlkIikubGVuZ3RoJiYoc2V0dGluZ3MuY29va2llTmFtZT0iY3BwXyIrdGhpcy5hdHRyKCJpZCIpKTshc2V0dGluZ3MubmFtZSYmMDx0aGlzLmF0dHIoImlkIikubGVuZ3RoJiYoc2V0dGluZ3MubmFtZT10aGlzLmF0dHIoImlkIikucmVwbGFjZSgvQ29udGFpbmVyXGIvLCIiKSk7dGhpcy5kYXRhKCJwb3B1cFNldHRpbmdzIixzZXR0aW5ncyk7YT1uZXcgcG9wdXBpemVyKHRoaXMsc2V0dGluZ3MpOwpzZXR0aW5ncy5pbml0aWFsaXplZHx8KGEuaW5pdCgpLHBvcHVwU3VwZXJ2aXNvci5wb3B1cHMucHVzaChhKSk7cmV0dXJuIGF9cG9wdXBzPVtdO3RoaXMuZWFjaChmdW5jdGlvbigpe3BvcHVwcy5wdXNoKGModGhpcykucG9wdXBpemUoKSl9KTtyZXR1cm4gcG9wdXBzfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGE9bnVsbDtjKHdpbmRvdykub24oInRvdWNobW92ZSwgb25zY3JvbGwsIHNjcm9sbCBtb3VzZXdoZWVsIHJlc2l6ZSIsZnVuY3Rpb24oayl7Y2xlYXJUaW1lb3V0KGEpO2E9c2V0VGltZW91dChwb3B1cFN1cGVydmlzb3IucmVwb3NpdGlvbiwxRTMpfSl9LDFFMyl9KTsKLyoqIC9tL2pzL3Z0aXAuanMgKiovCnZhciBfX19kMmNfdnRpcGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTA6NDciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3Z0aXBqc19jX29uPSIyMDI0LTAzLTI1IDEyOjM1OjM5IjsidXNlIHN0cmljdCI7CnRoaXMudnRpcD1mdW5jdGlvbigpe3RoaXMueE9mZnNldD0tMTA7dGhpcy55T2Zmc2V0PTEwOyQoIi52dGlwIikub2ZmKCkub24oImhvdmVyIixmdW5jdGlvbihhKXt0aGlzLnQ9dGhpcy50aXRsZTt0aGlzLnRpdGxlPSIiO3RoaXMudG9wPWEucGFnZVkreU9mZnNldDt0aGlzLmxlZnQ9YS5wYWdlWCt4T2Zmc2V0OyQoImJvZHkiKS5hcHBlbmQoJzxwIGlkPSJ2dGlwIiBzdHlsZT0iei1pbmRleDoxMDAwMDA7Ij48aW1nIGlkPSJ2dGlwQXJyb3ciIC8+Jyt0aGlzLnQrIjwvcD4iKTskKCJwI3Z0aXAgI3Z0aXBBcnJvdyIpLmF0dHIoInNyYyIsIi9pbWFnZXMvc2NyYXRjaC92dGlwX2Fycm93LnBuZyIpOyQoInAjdnRpcCIpLmNzcygidG9wIix0aGlzLnRvcCsicHgiKS5jc3MoImxlZnQiLHRoaXMubGVmdCsicHgiKS5mYWRlSW4oInNsb3ciKX0sZnVuY3Rpb24oKXt0aGlzLnRpdGxlPXRoaXMudDskKCJwI3Z0aXAiKS5mYWRlT3V0KCJzbG93IikucmVtb3ZlKCl9KS5vbigibW91c2Vtb3ZlIiwKZnVuY3Rpb24oYSl7dGhpcy50b3A9YS5wYWdlWSt5T2Zmc2V0O3RoaXMubGVmdD1hLnBhZ2VYK3hPZmZzZXQ7JCgicCN2dGlwIikuY3NzKCJ0b3AiLHRoaXMudG9wKyJweCIpLmNzcygibGVmdCIsdGhpcy5sZWZ0KyJweCIpfSl9O2pRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oYSl7dnRpcCgpfSk7Ci8qKiAvbS9qcy93U2NyYXRjaFBhZC5qcyAqKi8KdmFyIF9fX2QyY193U2NyYXRjaFBhZGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTM6MzciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3dTY3JhdGNoUGFkanNfY19vbj0iMjAyNC0wNC0xMiAxODozMDowNiI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oZCl7ZnVuY3Rpb24gaChiLGEpe3RoaXMuc3A9bnVsbDt0aGlzLnNldHRpbmdzPWI7dGhpcy4kZWxlbT1hO3RoaXMuZW5hYmxlZD0hMDt0aGlzLnNjcmF0Y2g9ITE7dGhpcy5jdHg9dGhpcy5jYW52YXM9bnVsbDtyZXR1cm4gdGhpc31kLmZuLndTY3JhdGNoUGFkPWZ1bmN0aW9uKGIsYSl7aWYoImVuYWJsZSI9PWIpZCh0aGlzKS5kYXRhKCJfd1NjcmF0Y2hQYWQiKS5lbmFibGUoKTtlbHNle2lmKCJvYmplY3QiPT09dHlwZW9mIGIpYT1iO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBiKXt2YXIgYz1bXSxmPXRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWQodGhpcykuZGF0YSgiX3dTY3JhdGNoUGFkIik7ZSYmKCJyZXNldCI9PT1iP2UucmVzZXQoKToiY2xlYXIiPT09Yj9lLmNsZWFyKCk6ImVuYWJsZWQiPT09Yj9lLmVuYWJsZWQ9ITA9PT1hOnZvaWQgMCE9PWQuZm4ud1NjcmF0Y2hQYWQuZGVmYXVsdFNldHRpbmdzW2JdJiYodm9pZCAwIT09YT9lLnNldHRpbmdzW2JdPQphOmMucHVzaChlLnNldHRpbmdzW2JdKSkpfSk7cmV0dXJuIDE9PT1jLmxlbmd0aD9jWzBdOjA8Yy5sZW5ndGg\/YzpmfWE9ZC5leHRlbmQoe30sZC5mbi53U2NyYXRjaFBhZC5kZWZhdWx0U2V0dGluZ3MsYXx8e30pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1kKHRoaXMpLGc9alF1ZXJ5LmV4dGVuZCghMCx7fSxhKTtpZighZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCl7dmFyIGs9IkJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MNSBjYW52YXMsIHBsZWFzZSB1cGdyYWRlIHRvIGEgbW9yZSBtb2Rlcm4gYnJvd3Nlci4iO2QoIiN0ZXh0RG9lc05vdFN1cHBvcnRIVE1MNSIpLmxlbmd0aCYmKGs9ZCgiI3RleHREb2VzTm90U3VwcG9ydEhUTUw1IikudmFsKCkpO2UuY3NzKCJwYWRkaW5nLXRvcCIsIjYwcHgiKTtlLmNzcygiaGVpZ2h0IiwiNTVweCIpO2UuaHRtbChrKTsidW5kZWZpbmVkIiE9dHlwZW9mIGcuaWRUb0FkZCYmZCgiI2Jsb2NrYWdlIisKZy5pZFRvQWRkKS5sZW5ndGgmJmQoIiNibG9ja2FnZSIrZy5pZFRvQWRkKS5jc3MoInRvcCIscGFyc2VJbnQoZCgiI2Jsb2NrYWdlIitnLmlkVG9BZGQpLmNzcygidG9wIikpKzMwKyJweCIpO3JldHVybiExfWc9bmV3IGgoZyxlKTtlLmFwcGVuZChnLmdlbmVyYXRlKCkpO2cucGl4ZWxzPWcuY2FudmFzLndpZHRoKmcuY2FudmFzLmhlaWdodDtlLmRhdGEoIl93U2NyYXRjaFBhZCIsZyk7Zy5pbml0KCl9KX19O2QuZm4ud1NjcmF0Y2hQYWQuZGVmYXVsdFNldHRpbmdzPXt3aWR0aDo2MDAsaGVpZ2h0OjExNSxpbWFnZToiL2ltYWdlcy9zY3JhdGNoL3NsaWRlMi5wbmciLGltYWdlMjoiL2ltYWdlcy9wb3B1cHMvc3R5bGUyL3NjcmF0Y2gucG5nIixpbWFnZURpc2FibGVkOiIvaW1hZ2VzL3BvcHVwcy9zdHlsZTIvc2NyYXRjaF9kaXNhYmxlZC5wbmciLGNvbG9yOiIjMzM2Njk5IixvdmVybGF5OiJub25lIixzaXplOjMwLHJlYWx0aW1lUGVyY2VudDohMSxzY3JhdGNoRG93bjpudWxsLHNjcmF0Y2hVcDpudWxsLApzY3JhdGNoTW92ZTpudWxsLGN1cnNvcjpudWxsLGlkVG9BZGQ6IiIsYmFja2dyb3VuZENvbG9yOiIjMDEwYTI4IixlbmFibGVkOiEwfTtoLnByb3RvdHlwZT17Z2VuZXJhdGU6ZnVuY3Rpb24oKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmN0eD10aGlzLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpO3RoaXMuc3A9ZCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KS5hcHBlbmQoZCh0aGlzLmNhbnZhcykuYXR0cigid2lkdGgiLHRoaXMuc2V0dGluZ3Mud2lkdGgrInB4IikuYXR0cigiaGVpZ2h0Iix0aGlzLnNldHRpbmdzLmhlaWdodCsicHgiKS5hdHRyKCJzdHlsZSIsInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTJweDt0b3A6LTFweDt6LWluZGV4OjE7IikpO3RoaXMuc2V0dGluZ3MuZW5hYmxlZCYmdGhpcy5lbmFibGUoKTtyZXR1cm4gdGhpcy5zcH0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZTIsCiEwKTt0aGlzLmJpbmRCcm93c2VyKCk7dGhpcy5iaW5kTW9iaWxlKHRoaXMuc3ApfSxiaW5kQnJvd3NlcjpmdW5jdGlvbihiKXt2YXIgYT10aGlzO2QodGhpcy5jYW52YXMpLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGMpe2lmKCFhLmVuYWJsZWQpcmV0dXJuITA7Yy5wcmV2ZW50RGVmYXVsdCgpO2Muc3RvcFByb3BhZ2F0aW9uKCk7YS5jYW52YXNfb2Zmc2V0PWQoYS5jYW52YXMpLm9mZnNldCgpO2Euc2NyYXRjaD0hMDthLnNjcmF0Y2hGdW5jKGMsYSwiRG93biIpfSkub24oIm1vdXNlbW92ZSIsZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVsdCgpO2Muc3RvcFByb3BhZ2F0aW9uKCk7YS5zY3JhdGNoJiZhLnNjcmF0Y2hGdW5jKGMsYSwiTW92ZSIpfSkub24oIm1vdXNldXAiLGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKTtjLnN0b3BQcm9wYWdhdGlvbigpO2Euc2NyYXRjaCYmKGEuc2NyYXRjaD0hMSxhLnNjcmF0Y2hGdW5jKGMsYSwiVXAiKSl9KX0sYmluZE1vYmlsZTpmdW5jdGlvbihiKXtiLm9uKCJ0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCB0b3VjaGNhbmNlbCIsCmZ1bmN0aW9uKCl7dmFyIGE9ZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UgInRvdWNoc3RhcnQiOnZhciBjPSJtb3VzZWRvd24iO2JyZWFrO2Nhc2UgInRvdWNobW92ZSI6Yz0ibW91c2Vtb3ZlIjticmVhaztjYXNlICJ0b3VjaGVuZCI6Yz0ibW91c2V1cCI7YnJlYWs7ZGVmYXVsdDpyZXR1cm59dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtmLmluaXRNb3VzZUV2ZW50KGMsITAsITAsd2luZG93LDEsYS5zY3JlZW5YLGEuc2NyZWVuWSxhLmNsaWVudFgsYS5jbGllbnRZLCExLCExLCExLCExLDAsbnVsbCk7YS50YXJnZXQuZGlzcGF0Y2hFdmVudChmKTtldmVudC5wcmV2ZW50RGVmYXVsdCgpfSl9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNwLmNzcygid2lkdGgiLHRoaXMuc2V0dGluZ3Mud2lkdGgtMik7dGhpcy5zcC5jc3MoImhlaWdodCIsdGhpcy5zZXR0aW5ncy5oZWlnaHQtMik7dGhpcy5zcC5jc3MoImN1cnNvciIsdGhpcy5zZXR0aW5ncy5jdXJzb3I\/Cid1cmwoIicrdGhpcy5zZXR0aW5ncy5jdXJzb3IrJyIpLCBkZWZhdWx0JzoiZGVmYXVsdCIpO2QodGhpcy5jYW52YXMpLmNzcyh7Y3Vyc29yOnRoaXMuc2V0dGluZ3MuY3Vyc29yPyd1cmwoIicrdGhpcy5zZXR0aW5ncy5jdXJzb3IrJyIpLCBkZWZhdWx0JzoiZGVmYXVsdCJ9KTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLnNldHRpbmdzLndpZHRoO3RoaXMuY2FudmFzLmhlaWdodD10aGlzLnNldHRpbmdzLmhlaWdodDt0aGlzLnBpeGVscz10aGlzLmNhbnZhcy53aWR0aCp0aGlzLmNhbnZhcy5oZWlnaHQ7dGhpcy5zZXR0aW5ncy5pbWFnZTI\/KHRoaXMuZHJhd0ltYWdlKHRoaXMuc2V0dGluZ3MuaW1hZ2UyKSx0aGlzLnNldHRpbmdzLmVuYWJsZWR8fHRoaXMuZHJhd0ltYWdlKHRoaXMuc2V0dGluZ3MuaW1hZ2VEaXNhYmxlZCwhMCkpOigibm9uZSIhPXRoaXMuc2V0dGluZ3Mub3ZlcmxheT8odGhpcy5zZXR0aW5ncy5pbWFnZSYmdGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZSksCnRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj10aGlzLnNldHRpbmdzLm92ZXJsYXkpOnRoaXMuc2V0QmdJbWFnZSgpLHRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLnNldHRpbmdzLmNvbG9yLHRoaXMuY3R4LmJlZ2luUGF0aCgpLHRoaXMuY3R4LnJlY3QoMCwwLHRoaXMuc2V0dGluZ3Mud2lkdGgsdGhpcy5zZXR0aW5ncy5oZWlnaHQpLHRoaXMuY3R4LmZpbGwoKSl9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dGhpcy5pbml0KCl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLnNldHRpbmdzLndpZHRoLHRoaXMuc2V0dGluZ3MuaGVpZ2h0KX0sc2V0QmdJbWFnZTpmdW5jdGlvbigpe3RoaXMuc2V0dGluZ3MuaW1hZ2UmJih0aGlzLnNwLmFkZENsYXNzKCJzY3JhdGNoRGl2VGV4dCIpLHRoaXMuc3AuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIix0aGlzLnNldHRpbmdzLmJhY2tncm91bmRDb2xvciksCnRoaXMuc3AuYXBwZW5kKCI8ZGl2IGlkPSdzY3JhdGNoRGl2VGV4dCIrdGhpcy5zZXR0aW5ncy5pZFRvQWRkKyInIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MzBweDtjb2xvcjojZmZmO21hcmdpbi1sZWZ0OjBweDtwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjIwcHg7ei1pbmRleDowOyc+IitkKCIjc2NyYXRjaElucHV0VGV4dCIrdGhpcy5zZXR0aW5ncy5pZFRvQWRkKS52YWwoKSsiPC9kaXY+IikpfSxkcmF3SW1hZ2U6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLGY9bmV3IEltYWdlO2Yuc3JjPWI7ZChmKS5vbigibG9hZCIsZnVuY3Rpb24oKXtjLmN0eC5kcmF3SW1hZ2UoZiwwLDApOyJ1bmRlZmluZWQiIT10eXBlb2YgYSYmYXx8Yy5zZXRCZ0ltYWdlKCl9KX0sc2NyYXRjaEZ1bmM6ZnVuY3Rpb24oYixhLGMpe2IucGFnZVg9TWF0aC5mbG9vcihiLnBhZ2VYLWEuY2FudmFzX29mZnNldC5sZWZ0KTtiLnBhZ2VZPQpNYXRoLmZsb29yKGIucGFnZVktYS5jYW52YXNfb2Zmc2V0LnRvcCk7YVsic2NyYXRjaCIrY10oYixhKTsodGhpcy5zZXR0aW5ncy5yZWFsdGltZVBlcmNlbnR8fCJVcCI9PWMpJiZhLnNldHRpbmdzWyJzY3JhdGNoIitjXSYmYS5zZXR0aW5nc1sic2NyYXRjaCIrY10uYXBwbHkoYSxbYixhLnNjcmF0Y2hQZXJjZW50YWdlKGEpXSl9LHNjcmF0Y2hQZXJjZW50YWdlOmZ1bmN0aW9uKGIpe2Zvcih2YXIgYT0wLGM9Yi5jdHguZ2V0SW1hZ2VEYXRhKDAsMCxiLmNhbnZhcy53aWR0aCxiLmNhbnZhcy5oZWlnaHQpLGY9MCxlPWMuZGF0YS5sZW5ndGg7ZjxlO2YrPTQpMD09Yy5kYXRhW2ZdJiYwPT1jLmRhdGFbZisxXSYmMD09Yy5kYXRhW2YrMl0mJjA9PWMuZGF0YVtmKzNdJiZhKys7cmV0dXJuIGEvYi5waXhlbHMqMTAwfSxzY3JhdGNoRG93bjpmdW5jdGlvbihiLGEpe2EuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24tb3V0IjthLmN0eC5saW5lSm9pbj0icm91bmQiOwphLmN0eC5saW5lQ2FwPSJyb3VuZCI7YS5jdHguc3Ryb2tlU3R5bGU9YS5zZXR0aW5ncy5jb2xvcjthLmN0eC5saW5lV2lkdGg9YS5zZXR0aW5ncy5zaXplO2EuY3R4LmJlZ2luUGF0aCgpO2EuY3R4LmFyYyhiLnBhZ2VYLGIucGFnZVksYS5zZXR0aW5ncy5zaXplLzIsMCwyKk1hdGguUEksITApO2EuY3R4LmNsb3NlUGF0aCgpO2EuY3R4LmZpbGwoKTthLmN0eC5iZWdpblBhdGgoKTthLmN0eC5tb3ZlVG8oYi5wYWdlWCxiLnBhZ2VZKX0sc2NyYXRjaE1vdmU6ZnVuY3Rpb24oYixhKXthLmN0eC5saW5lVG8oYi5wYWdlWCxiLnBhZ2VZKTthLmN0eC5zdHJva2UoKX0sc2NyYXRjaFVwOmZ1bmN0aW9uKGIsYSl7YS5jdHguY2xvc2VQYXRoKCl9fX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9zd2ZzdG9yZS5qcyAqKi8KdmFyIF9fX2QyY19zd2ZzdG9yZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTI6MjEiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNzo1MyI7InVzZSBzdHJpY3QiO19fX2QyY19zd2ZzdG9yZWpzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzU6MTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfc3dmc3RvcmVqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQ0OjU4IjsidXNlIHN0cmljdCI7X19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MjozMSI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGEpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSl0aHJvdyJTd2ZTdG9yZSBFcnJvcjogRnVuY3Rpb25zIGNhbm5vdCBiZSB1c2VkIGFzIGtleXMgb3IgdmFsdWVzLiI7fXZhciBoPTAsbT0vW15hLXowLTlfXS9naTt3aW5kb3cuU3dmU3RvcmU9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZShkKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpO2IuaWQ9IlN3ZlN0b3JlXyIrYS5uYW1lc3BhY2UrIl8iK2grKztkfHwoYi5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGIuc3R5bGUudG9wPSItMjAwMHB4IixiLnN0eWxlLmxlZnQ9Ii0yMDAwcHgiKTtyZXR1cm4gYn1hPWF8fHt9O3ZhciBmPXtzd2ZfdXJsOiJzdG9yYWdlLnN3ZiIsbmFtZXNwYWNlOiJzd2ZzdG9yZSIscGF0aDpudWxsLGRlYnVnOiExLHRpbWVvdXQ6MTAsb25yZWFkeTpudWxsLG9uZXJyb3I6bnVsbH07Zm9yKGMgaW4gZilmLmhhc093blByb3BlcnR5KGMpJiYKKGEuaGFzT3duUHJvcGVydHkoYyl8fChhW2NdPWZbY10pKTthLm5hbWVzcGFjZT1hLm5hbWVzcGFjZS5yZXBsYWNlKG0sIl8iKTtpZih3aW5kb3cuU3dmU3RvcmVbYS5uYW1lc3BhY2VdKXRocm93IlRoZXJlIGlzIGFscmVhZHkgYW4gaW5zdGFuY2Ugb2YgU3dmU3RvcmUgdXNpbmcgdGhlICciK2EubmFtZXNwYWNlKyInIG5hbWVzcGFjZS4gVXNlIHRoYXQgaW5zdGFuY2Ugb3Igc3BlY2lmeSBhbiBhbHRlcm5hdGUgbmFtZXNwYWNlIGluIHRoZSBjb25maWcuIjt0aGlzLmNvbmZpZz1hO2lmKGEuZGVidWcpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGNvbnNvbGUpe3ZhciBuPWUoITApO3dpbmRvdy5jb25zb2xlPXtsb2c6ZnVuY3Rpb24oZCl7dmFyIGI9ZSghMCk7Yi5pbm5lckhUTUw9ZDtuLmFwcGVuZENoaWxkKGIpfX19dGhpcy5sb2c9ZnVuY3Rpb24oZCxiLGspe2I9InN3ZlN0b3JlIj09PWI\/InN3ZiI6YjtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjb25zb2xlW2RdKWNvbnNvbGVbZF0oIlN3ZlN0b3JlIC0gIisKYS5uYW1lc3BhY2UrIiAoIitiKyIpOiAiK2spO2Vsc2UgY29uc29sZS5sb2coIlN3ZlN0b3JlIC0gIithLm5hbWVzcGFjZSsiOiAiK2QrIiAoIitiKyIpOiAiK2spfX1lbHNlIHRoaXMubG9nPWZ1bmN0aW9uKCl7fTt0aGlzLmxvZygiaW5mbyIsImpzIiwiSW5pdGlhbGl6aW5nLi4uIik7U3dmU3RvcmVbYS5uYW1lc3BhY2VdPXRoaXM7Zj1lKGEuZGVidWcpO3ZhciBjPSJTd2ZTdG9yZV8iK2EubmFtZXNwYWNlKyJfIitoKyssbD0ibG9nZm49U3dmU3RvcmUuIithLm5hbWVzcGFjZSsiLmxvZyZhbXA7b25sb2FkPVN3ZlN0b3JlLiIrYS5uYW1lc3BhY2UrIi5vbmxvYWQmYW1wO29uZXJyb3I9U3dmU3RvcmUuIithLm5hbWVzcGFjZSsiLm9uZXJyb3ImYW1wOyIrKGEucGF0aD8iTFNPUGF0aD0iK2EucGF0aCsiJmFtcDsiOiIiKSsiTFNPTmFtZT0iK2EubmFtZXNwYWNlO2YuaW5uZXJIVE1MPSc8b2JqZWN0IGhlaWdodD0iMTAwIiB3aWR0aD0iNTAwIiBjb2RlYmFzZT0iaHR0cHM6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIiIGlkPSInKwpjKyciIGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCI+ICAgIDxwYXJhbSB2YWx1ZT0iJythLnN3Zl91cmwrJyIgbmFtZT0ibW92aWUiPiAgPHBhcmFtIHZhbHVlPSInK2wrJyIgbmFtZT0iRmxhc2hWYXJzIj4gICA8cGFyYW0gdmFsdWU9ImFsd2F5cyIgbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiPiAgPGVtYmVkIGhlaWdodD0iMzc1IiBhbGlnbj0ibWlkZGxlIiB3aWR0aD0iNTAwIiBwbHVnaW5zcGFnZT0iaHR0cHM6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIGZsYXNodmFycz0iJytsKyciIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBhbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIiBxdWFsaXR5PSJoaWdoIiBsb29wPSJmYWxzZSIgcGxheT0idHJ1ZSIgbmFtZT0iJytjKyciIGJnY29sb3I9IiNmZmZmZmYiIHNyYz0iJythLnN3Zl91cmwrJyI+PC9vYmplY3Q+Jzt0aGlzLnN3Zj1kb2N1bWVudFtjXXx8CndpbmRvd1tjXTt0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtTd2ZTdG9yZVthLm5hbWVzcGFjZV0ubG9nKCJlcnJvciIsImpzIiwiVGltZW91dCByZWFjaGVkLCBhc3N1bWluZyAiK2Euc3dmX3VybCsiIGZhaWxlZCB0byBsb2FkIGFuZCBmaXJpbmcgdGhlIG9uZXJyb3IgY2FsbGJhY2suIik7aWYoYS5vbmVycm9yKWEub25lcnJvcigpfSwxRTMqYS50aW1lb3V0KX07U3dmU3RvcmUucHJvdG90eXBlPXt2ZXJzaW9uOiIxLjkiLHJlYWR5OiExLHNldDpmdW5jdGlvbihhLGUpe3RoaXMuX2NoZWNrUmVhZHkoKTtnKGEpO2coZSk7dGhpcy5zd2Yuc2V0KGEsZSl9LGdldDpmdW5jdGlvbihhKXt0aGlzLl9jaGVja1JlYWR5KCk7ZyhhKTtyZXR1cm4gdGhpcy5zd2YuZ2V0KGEpfSxnZXRBbGw6ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1JlYWR5KCk7dmFyIGE9dGhpcy5zd2YuZ2V0QWxsKCk7YS5fX2ZsYXNoQnVnRml4JiZkZWxldGUgYS5fX2ZsYXNoQnVnRml4O3JldHVybiBhfSwKY2xlYXI6ZnVuY3Rpb24oYSl7dGhpcy5fY2hlY2tSZWFkeSgpO2coYSk7dGhpcy5zd2YuY2xlYXIoYSl9LF9jaGVja1JlYWR5OmZ1bmN0aW9uKCl7aWYoIXRoaXMucmVhZHkpdGhyb3ciU3dmU3RvcmUgaXMgbm90IHlldCBmaW5pc2hlZCBpbml0aWFsaXppbmcuIFBhc3MgYSBjb25maWcub25yZWFkeSBjYWxsYmFjayBvciB3YWl0IHVudGlsIHRoaXMucmVhZHkgaXMgdHJ1ZSBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBhIFN3ZlN0b3JlIGluc3RhbmNlLiI7fSxvbmxvYWQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5fdGltZW91dCk7YS5yZWFkeT0hMDthLnNldCgiX19mbGFzaEJ1Z0ZpeCIsIjEiKTtpZihhLmNvbmZpZy5vbnJlYWR5KWEuY29uZmlnLm9ucmVhZHkoKX0sMCl9LG9uZXJyb3I6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7aWYodGhpcy5jb25maWcub25lcnJvcil0aGlzLmNvbmZpZy5vbmVycm9yKCl9fX0pKCk7Ci8qKiAvbS9qcy9qcXVlcnkuY291bnRkb3duLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MzIiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzY6MTIiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5Y291bnRkb3duanNfY19vbj0iMjAyMy0wMS0xMiAxMTo0MDoyNSI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnljb3VudGRvd25qc19jX29uPSIyMDIzLTAxLTEyIDEwOjUwOjEwIjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjEtMTItMTUgMTI6NTA6MzUiOyJ1c2Ugc3RyaWN0IjsKalF1ZXJ5LmZuLmNvdW50ZG93bj1mdW5jdGlvbihoKXtpZigxPHRoaXMubGVuZ3RoKXJldHVybiAkKHRoaXMpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmNvdW50ZG93bihoKX0pLHRoaXM7aWYodGhpcy5kYXRhKCJjb3VudGluZyIpKXJldHVybiB0aGlzO3RoaXMuZGF0YSgiY291bnRpbmciLCEwKTt2YXIgYT17c3RlcFRpbWU6NjAsZm9ybWF0OiJkZDpoaDptbTpzcyIsc3RhcnRUaW1lOiIwMToxMjozMjo1NSIsZGlnaXRJbWFnZXM6NixkaWdpdFdpZHRoOjUzLGRpZ2l0SGVpZ2h0Ojc3LHRpbWVyRW5kOmZ1bmN0aW9uKCl7fSxpbWFnZToiZGlnaXRzLnBuZyJ9LGM9W10sZj1mdW5jdGlvbihiLGQpe3JldHVybiB2b2lkIDAhPT1kP2NbYl0uY3NzKHttYXJnaW5Ub3A6ZCsicHgifSk6cGFyc2VJbnQoY1tiXS5jc3MoIm1hcmdpblRvcCIpLnJlcGxhY2UoInB4IiwiIikpfSxrPWZ1bmN0aW9uKGIpe2NbYl0uX2RpZ2l0SW5pdGlhbD0tKGNbYl0uX19tYXgqYS5kaWdpdEhlaWdodCphLmRpZ2l0SW1hZ2VzKTsKcmV0dXJuIGZ1bmN0aW9uIGUoKXttdG9wPWYoYikrYS5kaWdpdEhlaWdodDtpZihtdG9wPT1hLmRpZ2l0SGVpZ2h0KWlmKGYoYixjW2JdLl9kaWdpdEluaXRpYWwpLDA8YilrKGItMSkoKSwwPGImJnZvaWQgMCE9PWNbYl0uX19jb25kbWF4JiZjW2ItMV0uX2RpZ2l0SW5pdGlhbD09ZihiLTEpJiZmKGIsLShjW2JdLl9fY29uZG1heCphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMpKTtlbHNle2NsZWFySW50ZXJ2YWwobCk7Zm9yKHZhciBnPTA7ZzxjLmxlbmd0aDtnKyspZihnLDApO2EudGltZXJFbmQoKX1lbHNlIGYoYixtdG9wKSwwIT1mKGIpL2EuZGlnaXRIZWlnaHQlYS5kaWdpdEltYWdlcyYmc2V0VGltZW91dChlLGEuc3RlcFRpbWUpLDA9PW10b3AmJihjW2JdLl9faXNtYXg9ITApfX07JC5leHRlbmQoYSxoKTt0aGlzLmNzcyh7aGVpZ2h0OmEuZGlnaXRIZWlnaHQsb3ZlcmZsb3c6ImhpZGRlbiJ9KTsoZnVuY3Rpb24oYil7Zm9yKHZhciBkPTAsZT0wO2U8YS5zdGFydFRpbWUubGVuZ3RoO2UrKyl7aWYoMDw9CnBhcnNlSW50KGEuc3RhcnRUaW1lW2VdKSl7ZWxlbT0kKCc8ZGl2IGlkPSJjbnRfJytlKyciIGNsYXNzPSJjbnREaWdpdCIgLz4nKS5jc3Moe2hlaWdodDphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMqMTAsZmxvYXQ6ImxlZnQiLGJhY2tncm91bmQ6InVybCgnIithLmltYWdlKyInKSIsd2lkdGg6YS5kaWdpdFdpZHRofSk7Yy5wdXNoKGVsZW0pO2YoZCwtKHBhcnNlSW50KGEuc3RhcnRUaW1lW2VdKSphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMpKTtjW2RdLl9fbWF4PTk7c3dpdGNoKGEuZm9ybWF0W2VdKXtjYXNlICJoIjpjW2RdLl9fbWF4PTA9PWQlMj8yOjk7MD09ZCUyJiYoY1tkXS5fX2NvbmRtYXg9NCk7YnJlYWs7Y2FzZSAiZCI6Y1tkXS5fX21heD05O2JyZWFrO2Nhc2UgIm0iOmNhc2UgInMiOmNbZF0uX19tYXg9MD09ZCUyPzU6OX0rK2R9ZWxzZSBlbGVtPSQoJzxkaXYgY2xhc3M9ImNudFNlcGFyYXRvciIvPicpLmNzcyh7ZmxvYXQ6ImxlZnQifSkudGV4dChhLnN0YXJ0VGltZVtlXSk7CmIuYXBwZW5kKGVsZW0pfX0pKHRoaXMpO3ZhciBsPXNldEludGVydmFsKGsoYy5sZW5ndGgtMSksMUUzKX07Ci8qKiAvbS9qcy9kYXRlVXRpbHMuanMgKiovCnZhciBfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyNS0wNS0yMyAxNzowOTo0NiI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNjowMSI7InVzZSBzdHJpY3QiO19fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDIzLTAxLTEyIDExOjM0OjMzIjsidXNlIHN0cmljdCI7X19fZDJjX2RhdGVVdGlsc2pzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDQ6MTQiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyMS0xMi0xNSAxMjo0MToyMyI7InVzZSBzdHJpY3QiO0RhdGUucHJvdG90eXBlLmFtb3VudEJldHdlZW49ZnVuY3Rpb24oYSxiLGMsZCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpcmV0dXJuIG51bGw7YT1hLmdldFRpbWUoKTtiPWIuZ2V0VGltZSgpO3JldHVybiBNYXRoLmZsb29yKChiLWEtZCkvYyl9OwovKiogL20vanMvZDJjX3NoaWZ0X2RpZ2l0YWwuanMgKiovCnZhciBfX19kMmNfZDJjc2hpZnRkaWdpdGFsanNfY19vbj0iMjAyNi0wNC0wMiAxNDozMDowMyI7J3VzZSBzdHJpY3QnO2RvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiZmlsdGVyczpsb2FkIixuPT4kKCJib2R5IikudHJpZ2dlcihuLmRldGFpbCksITEpO2RvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiZmlsdGVyczpjaGFuZ2UiLG49PiQoImJvZHkiKS50cmlnZ2VyKG4uZGV0YWlsKSwhMSk7CiQud2lkZ2V0KCJkMmMuaW5WaWV3cG9ydCIse29wdGlvbnM6e29ic2VydmVyOnt0aHJlc2hvbGQ6Wy41XX0sZGlzY29ubmVjdEFmdGVyVmlzaWJsZTohMSx3YWl0Rm9yOiIiLHZpc2libGU6ZnVuY3Rpb24oKXt9LG5vdFZpc2libGU6ZnVuY3Rpb24oKXt9fSxfb2JzZXJ2ZXI6bnVsbCxfY2hpbGRPYnNlcnZlcnM6W10sX2NoaWxkVmlzaWJsZTpbXSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIG49dGhpczsidW5kZWZpbmVkIiE9dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyJiYodGhpcy5fc2V0Q2hpbGRPYnNlcnZlcnMoKSx0aGlzLl9vYnNlcnZlcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24odil7dj12WzBdO2lmKG4uaXNWaXNpYmxlKHYpKWlmKDA9PT1uLm9wdGlvbnMud2FpdEZvci5sZW5ndGgpbi5vblZpc2libGUoKTtlbHNlIGlmKG4uX2FyZUNoaWxkcmVuVmlzaWJpbGUoKSluLm9uVmlzaWJsZSgpO2Vsc2Ugbi5vcHRpb25zLm5vdFZpc2libGUodi50YXJnZXQpOwplbHNlIG4ub3B0aW9ucy5ub3RWaXNpYmxlKHYudGFyZ2V0KX0sbi5vcHRpb25zLm9ic2VydmVyKSx0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudFswXSkpfSxfYXJlQ2hpbGRyZW5WaXNpYmlsZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5vcHRpb25zLndhaXRGb3IubGVuZ3RoPyEwOjA8dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLndhaXRGb3IpLmZpbHRlcihmdW5jdGlvbihuLHYpe3JldHVybiJoaWRkZW4iPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUodikudmlzaWJpbGl0eT8hMTohISh2Lm9mZnNldFdpZHRofHx2Lm9mZnNldEhlaWdodHx8di5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9KS5sZW5ndGh9LGlzVmlzaWJsZTpmdW5jdGlvbihuKXtpZighbi5pc0ludGVyc2VjdGluZylyZXR1cm4hMTtuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCQobi50YXJnZXQpWzBdKTtyZXR1cm4tMTxbImhpZGRlbiIsImNvbGxhcHNlIl0uaW5kZXhPZihuLnZpc2liaWxpdHkpPwohMTohMH0sX3NldENoaWxkT2JzZXJ2ZXJzOmZ1bmN0aW9uKCl7dmFyIG49dGhpczskKHRoaXMuZWxlbWVudCkuYXR0cigiaWQiKTswIT09bi5vcHRpb25zLndhaXRGb3IubGVuZ3RoJiYkKHRoaXMuZWxlbWVudCkuZmluZChuLm9wdGlvbnMud2FpdEZvcikuZWFjaChmdW5jdGlvbih2LEIpe24uX2NoaWxkT2JzZXJ2ZXJzW3ZdPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbih6KXtpZihuLmlzVmlzaWJsZSh6WzBdKSluLm9uVmlzaWJsZSgpfSk7bi5fY2hpbGRPYnNlcnZlcnNbdl0ub2JzZXJ2ZShCKX0pfSxvblZpc2libGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMudmlzaWJsZSh0aGlzLmVsZW1lbnQpO3RoaXMub3B0aW9ucy5kaXNjb25uZWN0QWZ0ZXJWaXNpYmxlJiZ0aGlzLmRlc3Ryb3koKX0sZGVzdHJveTpmdW5jdGlvbigpe251bGwhPT10aGlzLl9vYnNlcnZlciYmKHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLl9vYnNlcnZlcj1udWxsKTt0aGlzLl9jaGlsZE9ic2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uKG4pe251bGwhPT0KbiYmbi5kaXNjb25uZWN0KCl9KTt0aGlzLl9jaGlsZE9ic2VydmVycz1bXTskLldpZGdldC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpfX0pO3ZhciBkMnNkRGVsYXlTZWFyY2g9ZnVuY3Rpb24oKXt2YXIgbj0wO3JldHVybiBmdW5jdGlvbih2LEIpe2NsZWFyVGltZW91dChuKTtuPXNldFRpbWVvdXQodixCKX19KCk7CmZ1bmN0aW9uIEQyU0Qobix2LEIpe2Z1bmN0aW9uIHooKXtHKCk7bGV0IGI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtudWxsIT09RSgpJiYoY2xlYXJJbnRlcnZhbChiKSwkKHkucGFnZVZpZXcoKSksc2V0VGltZW91dChmdW5jdGlvbigpe0goKX0sMTAwKSl9LDFFMyl9ZnVuY3Rpb24gSSgpe2xldCBiPSExLGY9ITEscD17fSxyPSJPdGhlciIsYT1kb2N1bWVudC5jb29raWUucmVwbGFjZSgvOyAvZywiOyIpLnNwbGl0KCI7Iik7Zm9yKGk9MDtpPGEubGVuZ3RoO2krKyl7bGV0IGw9YVtpXS5zcGxpdCgiPSIpO3BbbFswXV09bFsxXX1PYmplY3QuaGFzT3duKHAsInV0bV9zb3VyY2UiKSYmKGI9cC51dG1fc291cmNlLnRvTG93ZXJDYXNlKCkpO09iamVjdC5oYXNPd24ocCwidXRtX21lZGl1bSIpJiYoZj1wLnV0bV9tZWRpdW0udG9Mb3dlckNhc2UoKSk7ITEhPT1iJiYhMSE9PWYmJigiZ29vZ2xlIiE9YiYmImJpbmciIT1ifHwiY3BjIiE9Zj8iZ29vZ2xlIiE9YiYmImJpbmciIT1ifHwiZGlzcGxheSIhPQpmPyJmYWNlYm9vayI9PWImJiJkaXNwbGF5Ij09Zj9yPSJQYWlkIFNvY2lhbCI6ITEhPT1iJiYhMT09PWYmJihyPSJPcmdhbmljIFNlYXJjaCIpOnI9IlBhaWQgRGlzcGxheSI6cj0iUGFpZCBTZWFyY2giKTskKCIjZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT10cmFmZmljX3R5cGVdIikudmFsKHIpO3JldHVybiByfWZ1bmN0aW9uIEooYil7Yj1iLnRvTG93ZXJDYXNlKCk7bGV0IGY9ITE7c3dpdGNoKGIpe2Nhc2UgImJ1aWNrIjpmPSJidSI7YnJlYWs7Y2FzZSAiY2FkaWxsYWMiOmY9ImNhIjticmVhaztjYXNlICJjaGV2cm9sZXQiOmY9ImNoIjticmVhaztjYXNlICJnbWMiOmY9ImdtIn1yZXR1cm4gZn1mdW5jdGlvbiBHKCl7aC5saWJyYXJ5LmxvYWRlZHx8KGZ1bmN0aW9uKGIsZixwLHIsYSxsKXtiLlNoaWZ0QW5hbHl0aWNzT2JqZWN0PWE7YlthXT1iW2FdfHxmdW5jdGlvbigpeyhiW2FdLnE9YlthXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfTtiW2FdLmw9MSpuZXcgRGF0ZTsKbD1mLmNyZWF0ZUVsZW1lbnQocCk7bC5hc3luYz0xO2wuc3JjPXI7Zi5ib2R5Lmluc2VydEJlZm9yZShsLGYuYm9keS5maXJzdENoaWxkKX0od2luZG93LGRvY3VtZW50LCJzY3JpcHQiLGgubGlicmFyeS5saWJyYXJ5SlMsInNkIiksc2QoImNyZWF0ZSIsaC5saWJyYXJ5LmNsaWVudElELGgubGlicmFyeS5yZXRhaWxlcklELGgubGlicmFyeS5wcm92aWRlcklEKSxoLmxpYnJhcnkubG9hZGVkPSEwLGRlYnVnKCJTRCA6OiBMaWJyYXJ5IGluamVjdGVkIixoLmxpYnJhcnkpKX1mdW5jdGlvbiBFKCl7dmFyIGI9bnVsbDtzd2l0Y2goJCgiI29lbUNlcnRpZmljYXRpb24iKS52YWwoKSl7Y2FzZSAiMTAyMCI6Yj0iZmVycmFyaW5hIjticmVhaztjYXNlICIxMDE4IjpiPSJnbWNhIjticmVhaztjYXNlICIxMDE3IjpiPSJnbWNhIjticmVhaztjYXNlICIxMDE2IjpiPSJtYXNlcmF0aSI7YnJlYWs7Y2FzZSAiMTAxNSI6Yj0ibGV4dXNjYSI7YnJlYWs7Y2FzZSAiMTAxNCI6Yj0ic3RlbGxhbnRpc2NhIjsKYnJlYWs7Y2FzZSAiMTAxOSI6Yj0ic3RlbGxhbnRpc2NhIjticmVhaztjYXNlICIxMDEyIjpiPSJ0b3lvdGFjYSI7YnJlYWs7Y2FzZSAiMTAxMSI6Yj0ibmNpIjticmVhaztjYXNlICIxMDEwIjpiPSJuY2kiO2JyZWFrO2Nhc2UgIjEwMDkiOmI9InZ3Y2EiO2JyZWFrO2Nhc2UgIjEwMDgiOmI9Im1hemRhY2EiO2JyZWFrO2Nhc2UgIjEwMDciOmI9ImpscmNhIjticmVhaztjYXNlICIxMDA2IjpiPSJqbHJjYSI7YnJlYWs7Y2FzZSAiMTAwNCI6Yj0ia2lhY2EifWlmKG51bGw9PT1iKXJldHVybiBudWxsO2I9YDsgJHtkb2N1bWVudC5jb29raWV9YC5zcGxpdChgOyAkeyJfc2RhOiIrYisiOlQzOnNlc3Npb24ifT1gKTtyZXR1cm4gMj09PWIubGVuZ3RoPyhiPWIucG9wKCkuc3BsaXQoIjsiKS5zaGlmdCgpKT9iOm51bGw6bnVsbH1mdW5jdGlvbiBIKCl7dmFyIGI9aC5BQ1RJT05fTUFQLmhhc093blByb3BlcnR5KGgucGFnZURhdGEucGFnZVR5cGUpP2guQUNUSU9OX01BUFtoLnBhZ2VEYXRhLnBhZ2VUeXBlXToKe307Yj0kLmV4dGVuZCghMCx7fSxoLkFDVElPTl9NQVBbImRlZmF1bHQiXSxiKTskLmVhY2goYixmdW5jdGlvbihmLHApe2lmKGguaXNEUiYmaC5kckJsYWNrbGlzdC5pbmNsdWRlcyhmKSlyZXR1cm4hMDtzd2l0Y2goZil7Y2FzZSAiZm9ybSI6JC5lYWNoKHAsZnVuY3Rpb24ocixhKXtLKHIsYSl9KTticmVhaztjYXNlICJsaXN0ZW4iOiQuZWFjaChwLGZ1bmN0aW9uKHIsYSl7JChkb2N1bWVudCkub24ocixsPT57eS5zZW5kKGEse30pKGwpfSl9KTticmVhaztkZWZhdWx0OiJvYmplY3QiPT09dHlwZW9mIHA\/RihmLHAubmFtZSxwKTpGKGYscCx7fSl9fSk7TCgpfWZ1bmN0aW9uIEYoYixmLHApe2lmKCFoLmlzRFJ8fCFoLmRyQmxhY2tsaXN0LmluY2x1ZGVzKGIpKSQoZG9jdW1lbnQuYm9keSkub24oImNsaWNrIixiLHkuc2VuZChmLHApKX1mdW5jdGlvbiBNKGIpe2I9Yi5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gci50cmltKCl9KTtpZigxPT09Yi5sZW5ndGgpcmV0dXJuITA7CnZhciBmPSEwLHA7Zm9yKHAgaW4gYilpZigwPT09JChiW3BdKS5sZW5ndGgpe2Y9ITE7YnJlYWt9cmV0dXJuIGZ9ZnVuY3Rpb24gTCgpeyJ1bmRlZmluZWQiIT09dHlwZW9mIExlYWRDb25maWdzJiZPYmplY3QudmFsdWVzKExlYWRDb25maWdzKS5mb3JFYWNoKGI9Pntjb25zdCBmPSQoYCNmb3JtJHtiLm5hbWV9YCk7aWYoMDxmLmxlbmd0aCl7bGV0IHA9Zi5maW5kKCJpbnB1dFtuYW1lPSdtYWlsSUQnXSIpLnZhbCgpO2lmKGguaXNEUiYmaC5kckJsYWNrbGlzdC5pbmNsdWRlcyhwKSlyZXR1cm4hMDt5LmZvcm0oZix7ZGlzcGxheVR5cGU6Im1vZGFsIn0se21haWxJZDpwLHBhc3NpdmVTdWJtaXQ6ITEsbGVhZDpifSl9fSl9ZnVuY3Rpb24gSyhiLGYpe2lmKGguaXNEUiYmaC5kckJsYWNrbGlzdC5pbmNsdWRlcyhiKSlyZXR1cm4hMDtsZXQgcD0hMTsidW5kZWZpbmVkIiE9PXR5cGVvZiBmLnNldHRpbmdzJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBmLnNldHRpbmdzLmhhc011bHRpcGxlRm9ybXNPblBhZ2UmJgohMD09PWYuc2V0dGluZ3MuaGFzTXVsdGlwbGVGb3Jtc09uUGFnZSYmKHA9ITApO2lmKE0oYikmJigibW9kYWwiIT09Zi5kaXNwbGF5VHlwZXx8IjEiIT0kKCIjaXNtb2JpbGUiKS52YWwoKSkpe3ZhciByPWYuc2V0dGluZ3N8fHt9O2RlbGV0ZSBmLnNldHRpbmdzO2lmKCExPT09cCl5LmZvcm0oYixmLHIpO2Vsc2UgaWYoci5oYXNPd25Qcm9wZXJ0eSgiZm9ybVNob3duQ2xpY2siKSl7bGV0IGE9ci5mb3JtU2hvd25DbGljazskKHIuZm9ybVNob3duQ2xpY2spLmVhY2goZnVuY3Rpb24obCxxKXtjb25zb2xlLmxvZygiRDJTRCBhZGRpbmcgcmVjdXJzaXZlIGZvcm0gbGlzdGVuZXIgZm9yOiIsYik7JChxKS5hdHRyKCJkYXRhLWxlYWQtcmFuZCIsTWF0aC5yYW5kb20oKSoobmV3IERhdGUpLmdldFRpbWUoKSk7ci5mb3JtU2hvd25DbGljaz1yLmZvcm1TaG93bkNsaWNrKydbZGF0YS1sZWFkLXJhbmQ9IicrJChxKS5hdHRyKCJkYXRhLWxlYWQtcmFuZCIpKyciXSc7eS5mb3JtKGIsZixyKTsKci5mb3JtU2hvd25DbGljaz1hfSl9ZWxzZSAkKGIpLmVhY2goZnVuY3Rpb24oYSxsKXskKGwpLmF0dHIoImRhdGEtbGVhZC1yYW5kIixNYXRoLnJhbmRvbSgpKihuZXcgRGF0ZSkuZ2V0VGltZSgpKTthPWIrJ1tkYXRhLWxlYWQtcmFuZD0iJyskKGwpLmF0dHIoImRhdGEtbGVhZC1yYW5kIikrJyJdJzt5LmZvcm0oYSxmLHIpfSl9fWZ1bmN0aW9uIE4oYil7Y29uc3QgZj1uZXcgRm9ybURhdGE7Zm9yKGNvbnN0IHAgaW4gYikib2JqZWN0Ij09PXR5cGVvZiBiW3BdP2YuYXBwZW5kKHAsSlNPTi5zdHJpbmdpZnkoYltwXSkpOmYuYXBwZW5kKHAsYltwXSk7ZmV0Y2goYC8ke0QyQ1V0aWxzLkxhbmcuZ2V0U2hvcnRMYW5nKCl9L2FqYXgvbG9nSlNEZWJ1Zz93c3dpZHRoPTBgLHttZXRob2Q6IlBPU1QiLGJvZHk6Zn0pLnRoZW4ocD0+e2NvbnNvbGUubG9nKHApfSl9Y29uc29sZS5sb2coIkQyU0Qgc3RhcnRpbmcuLi4iLG4sdik7dmFyIGg9dGhpcztoLmxpYnJhcnk9CiQuZXh0ZW5kKCEwLG4se2xvYWRlZDohMX0pO2gucGFnZURhdGE9djtoLnNldHRpbmdzPUI7aC5pc0RSVGFnZ2luZz1oLnBhZ2VEYXRhLkdFTkVSQUxfRU5BQkxFX1RSQU5TQUNUSU9OX0JVSUxERVI7aC5pc0RSUGFnZXR5cGU9IlZlaGljbGUgRGV0YWlscyI9PT1oLnBhZ2VEYXRhLnBhZ2VUeXBlfHwiTW9kZWwgU2hvd3Jvb20iPT09aC5wYWdlRGF0YS5wYWdlVHlwZTtoLmRyU3VwcHJlc3NQYWdldmlldz1oLmlzRFJUYWdnaW5nJiZoLmlzRFJQYWdldHlwZTtoLmlzRFI9ZnVuY3Rpb24oKXtsZXQgYj0hMSxmPSQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCk7WzEwMTQsMTAxOV0uaW5jbHVkZXMocGFyc2VJbnQoZikpJiYoYj0hMCk7cmV0dXJuIGguaXNEUlRhZ2dpbmcmJmguaXNEUlBhZ2V0eXBlJiZifSgpO2guZHJCbGFja2xpc3Q9ImNyZWRpdC5tdWx0aXN0ZXBwb3B1cC5zdGFydDtkZWFsZXJBcHBvaW50bWVudC5zdGFydDtjcmVkaXQubXVsdGlzdGVwcG9wdXAuc3RhcnQ7UHJpY2VWZWhpY2xlO1ByaWNlVmVoaWNsZUFjY3V0cmFkZTtQcmljZVZlaGljbGVOZXc7TW9udGhseVBheW1lbnRzO01vbnRobHlQYXltZW50c19ORVc7RGVhbGVyQXBwb2ludG1lbnQ7Q3JlZGl0Qm9vc3RNdWx0aTtDcmVkaXRSZXF1ZXN0X1Nob3J0O0NyZWRpdFNjb3JlO1Rlc3QgRHJpdmU7Q3JlZGl0TXVsdGlzdGVwUmVxdWVzdDtUcmFkZSBJbjsjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybTsjZm9ybURlYWxlckFwcG9pbnRtZW50OyNUcmFkZUluQmFyUG9wdXBDb250YWluZXI7LnNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX2Zvcm0gLnNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX3N0ZXAyOy5tdWx0aWZvcm1fZW1iZWRkZWRfZm9ybTsjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyOyNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lcjthI0ZpbmFuY2VBY3Rpb25Cb3hfcG9wdXAsIGRpdi5jYXJMaW5rID4gZGl2LmJ0bi1maW5hbmNlLW5ld2ludjsubXVsdGlmb3JtX2VtYmVkZGVkX2Zvcm0iLnNwbGl0KCI7Iik7CnZhciBDPSExLEQ9ITE7bj13aW5kb3cubG9jYXRpb24uaHJlZjtpZihuLmluY2x1ZGVzKCJmaXJzdC1ldmVyLW1hemRhLWN4LTcwIil8fG4uaW5jbHVkZXMoInRvdXQtbm91dmVhdS1tYXpkYS1jeC03MCIpKWgucGFnZURhdGEucGFnZVR5cGU9ImN4LTcwIjtuLmluY2x1ZGVzKCJsZXh1c29mdmF1Z2hhbi5jb20iKSYmKG4uaW5jbHVkZXMoIndoZWVscy10aXJlcy1jZW50cmUuaHRtbCIpJiYoaC5wYWdlRGF0YS5wYWdlVHlwZT0iVGlyZXMiKSxuLmluY2x1ZGVzKCJzaG9wLWFjY2Vzc29yaWVzLmh0bWwiKSYmKGgucGFnZURhdGEucGFnZVR5cGU9IkFjY2Vzc29yaWVzIiksbi5pbmNsdWRlcygibGV4dXMtbWFpbnRlbmFuY2Utc2NoZWR1bGUuaHRtbCIpJiYoaC5wYWdlRGF0YS5wYWdlVHlwZT0iTWFpbnRlbmFuY2UgTWVudSIpKTsxMDE2PT0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpJiYobi5pbmNsdWRlcygibWFzZXJhdGktbWMyMC1lbi5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPQoiTW9kZWwgU2hvd3Jvb20iKSxuLmluY2x1ZGVzKCJtYXNlcmF0aS1ncmVjYWxlLWVuLmh0bWwiKSYmKGgucGFnZURhdGEucGFnZVR5cGU9Ik1vZGVsIFNob3dyb29tIiksbi5pbmNsdWRlcygibWFzZXJhdGktZ3QyLXN0cmFkYWxlLWVuLmh0bWwiKSYmKGgucGFnZURhdGEucGFnZVR5cGU9Ik1vZGVsIFNob3dyb29tIiksbi5pbmNsdWRlcygibWFzZXJhdGktZ3JhbmNhYnJpby1lbi5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPSJNb2RlbCBTaG93cm9vbSIpLG4uaW5jbHVkZXMoIm1hc2VyYXRpLWdyYW50dXJpc21vLWZvbGdvcmUtZW4uaHRtbCIpJiYoaC5wYWdlRGF0YS5wYWdlVHlwZT0iTW9kZWwgU2hvd3Jvb20iKSxuLmluY2x1ZGVzKCJwcmVvcmRlci0yMDI1LWdyZWNhbGUtZm9sZ29yZS5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPSJDdXN0b20gRGVhbGVyIENvbnRlbnQiKSxuLmluY2x1ZGVzKCJwcmVvcmRlci0yMDI1LWdyYW5jYWJyaW8tZm9sZ29yZS5odG1sIikmJgooaC5wYWdlRGF0YS5wYWdlVHlwZT0iQ3VzdG9tIERlYWxlciBDb250ZW50Iiksbi5pbmNsdWRlcygicHJlb3JkZXItMjAyNS1ncmFudHVyaXNtby1mb2xnb3JlLmh0bWwiKSYmKGgucGFnZURhdGEucGFnZVR5cGU9IkN1c3RvbSBEZWFsZXIgQ29udGVudCIpLG4uaW5jbHVkZXMoInJlY2FsbHMvcmVjYWxscy5odG1sIikmJihoLnBhZ2VEYXRhLnBhZ2VUeXBlPSJDdXN0b20gRGVhbGVyIENvbnRlbnQiKSxkZWJ1ZygiRDJTRCBNYXNlcmF0aSBQYWdlVHlwZSBPdmVycmlkZTogIitoLnBhZ2VEYXRhLnBhZ2VUeXBlKSk7IiI9PSQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCkmJihuPSQoIiNERUFMRVJCUkFORF9QUklNQVJZIikudmFsKCksIiIhPW4mJihuPUoobiksITEhPT1uJiYoaC5wYWdlRGF0YS5wYWdlQnJhbmQ9bikpKTtoLkFDVElPTl9NQVA9eyJkZWZhdWx0Ijp7J2FbaHJlZio9InRlbCJdOm5vdChbaHJlZio9InskIl0pJzoiY2xpY2tUb0NhbGwiLCdhW2hyZWYqPSJnb29nbGUiXVtocmVmKj0ibWFwcyJdJzoiZ2V0RGlyZWN0aW9ucyIsCicjYWxlcnRNc2dDb250ZW50IGFbaHJlZio9InNlcnZpY2UiXSc6InNjaGVkdWxlU2VydmljZUNsaWNrIiwnLmhlYWRlci1tZW51IGFbaHJlZio9InNlcnZpY2UiXSc6InNjaGVkdWxlU2VydmljZUNsaWNrIixmb3JtOnsiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIn0sImZvcm0jcXVpY2tFbWFpbEZvcm0iOntmb3JtVHlwZToiR2VuZXJhbCBDb250YWN0IixkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCJmb3JtLnZpc2l0Q29udGFjdEZvcm0iOntmb3JtVHlwZToiR2VuZXJhbCBDb250YWN0IixkaXNwbGF5VHlwZToibW9kYWwifSwiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iOntmb3JtVHlwZToiRmluYW5jZSIsZGlzcGxheVR5cGU6ImluLXBhZ2UiLHNldHRpbmdzOntmb3JtU2hvd25DbGljazoiYSNGaW5hbmNlQWN0aW9uQm94X3BvcHVwLCBkaXYuY2FyTGluayA+IGRpdi5idG4tZmluYW5jZS1uZXdpbnYiLG1haWxJZDoiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCJ9fX0sCmxpc3Rlbjp7InR5cGVhaGVhZDphc3luY3JlY2VpdmUiOiJ0eXBlZFNlYXJjaCJ9fSxIb21lOnsiI2hvbWVwYWdlLWJhbm5lciAjc2xpZGVyIjp7bmFtZToiY2Fyb3VzZWxDbGljayIsY29udGFpbmVyVXNlZDohMH0sIiNtb2JpbGVTbGlkZXIyIjp7bmFtZToiY2Fyb3VzZWxDbGljayIsY29udGFpbmVyVXNlZDohMH0sIi52ZWhpY2xlQ2Fyb3VzZWwgbGkiOiJjYXJvdXNlbENsaWNrIiwiI25ld0NhclNsaWRlciBsaSI6ImNhcm91c2VsQ2xpY2siLCdtYWluIGFbaHJlZio9InNlcnZpY2UiXSc6InNjaGVkdWxlU2VydmljZUNsaWNrIixmb3JtOnsiI21haWxFeHByZXNzUmVxdWVzdCI6e2Zvcm1UeXBlOiJHZW5lcmFsIENvbnRhY3QiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn19fSxTaG93cm9vbTp7JyN0b3BCYW5uZXJJbWFnZVtvbmNsaWNrKj0ic2VydmljZSJdJzoic2NoZWR1bGVTZXJ2aWNlQ2xpY2siLGxpc3Rlbjp7ImZpbHRlcnM6Y2hhbmdlIjoiZmlsdGVyU2VhcmNoIiwiZmlsdGVyczpsb2FkIjoiZmlsdGVyU2VhcmNoIn19LAoiTW9kZWwgU2hvd3Jvb20iOnsnI3RvcEJhbm5lckltYWdlW29uY2xpY2sqPSJzZXJ2aWNlIl0nOiJzY2hlZHVsZVNlcnZpY2VDbGljayIsIiNwcmludFNwZWNzIjoiYnJvY2h1cmVEb3dubG9hZCIsZm9ybTp7IiNmb3JtRGVhbGVyQXBwb2ludG1lbnQiOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIuY29udGFjdHVzX2VtYmVkZGVkX2Zvcm0iOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UiLGZvcm1UeXBlOiJUcmFkZSBJbiJ9LCIuc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWRfZm9ybSAuc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWRfc3RlcDIiOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIucGF5bWVudENhbGN1bGF0b3JWRFAiOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIubXVsdGlmb3JtX2VtYmVkZGVkX2Zvcm0iOntmb3JtVHlwZToiR2V0IEEgUXVvdGUiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIixzZXR0aW5nczp7Zm9ybVNob3duQ2xpY2s6ImZvcm0ubXVsdGlmb3JtX2VtYmVkZGVkX2Zvcm0gI211bHRpZm9ybV9lbWJlZGRlZF9idG5fMSJ9fX19LAoiVmVoaWNsZSBMaXN0aW5nIjp7JyN0b3BCYW5uZXJJbWFnZVtvbmNsaWNrKj0ic2VydmljZSJdJzoic2NoZWR1bGVTZXJ2aWNlQ2xpY2siLGxpc3Rlbjp7ImZpbHRlcnM6Y2hhbmdlIjoiZmlsdGVyU2VhcmNoIiwiZmlsdGVyczpsb2FkIjoiZmlsdGVyU2VhcmNoIn0sZm9ybTp7Ii5jb250YWN0Rm9ybSBmb3JtLmQyY2Zvcm0iOntmb3JtVHlwZToiRGlzY292ZXIgT2ZmZXIiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIixzZXR0aW5nczp7Zm9ybVNob3duQ2xpY2s6J2Rpdi5idXR0TGlua1tkYXRhLWxlYWQtdHJpZ2dlcj0iRGlzY292ZXJPZmZlciJdJyxoYXNNdWx0aXBsZUZvcm1zT25QYWdlOiEwLHBhcmVudEVsZW1lbnQ6Ii5jYXJCb3hXcmFwcGVyIn19LCIjbG9hbmNhbGN1bGF0b3IiOntmb3JtVHlwZToiUGF5bWVudCBDYWxjdWxhdG9yIixkaXNwbGF5VHlwZToiaW4tcGFnZSIsc2V0dGluZ3M6e2Zvcm1TaG93bkNsaWNrOiJkaXYubG9hbkNhbGN1bGF0b3JUcmlnZ2VyID4gc3BhbiJ9fSwKIi5jcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyRW1iZWRkZWQgLmQyY2Zvcm0iOntmb3JtVHlwZToiRmluYW5jZSIsZGlzcGxheVR5cGU6ImluLXBhZ2UiLHNldHRpbmdzOntoYXNNdWx0aXBsZUZvcm1zT25QYWdlOiEwfX19fSwiVmVoaWNsZSBEZXRhaWxzIjp7JyN0b3BCYW5uZXJJbWFnZVtvbmNsaWNrKj0ic2VydmljZSJdJzoic2NoZWR1bGVTZXJ2aWNlQ2xpY2siLCIuakNhcm91c2VsTGl0ZSBsaSI6ImNhcm91c2VsQ2xpY2siLCIjcHJpbnRTcGVjcyI6ImJyb2NodXJlRG93bmxvYWQiLGZvcm06eyIjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXIiOntkaXNwbGF5VHlwZToibW9kYWwifSwiI2Zvcm1EZWFsZXJBcHBvaW50bWVudCI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIi5jb250YWN0dXNfZW1iZWRkZWRfZm9ybSI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiNmcm1SZWJhdGVfaW1hZ2Vwb3B1cF9hdmFpbGFiaWxpdHl1c2VkIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UiLApmb3JtVHlwZToiUmVxdWVzdCBNb3JlIEluZm8ifSwiLnNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX2Zvcm0gLnNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX3N0ZXAyIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiLm11bHRpZm9ybV9lbWJlZGRlZF9mb3JtIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIixmb3JtVHlwZToiVHJhZGUgSW4ifX19LCJUZXN0IERyaXZlIjp7Zm9ybTp7IiN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjdmVoaWNsZVNlbGVjdEZvcm0sICNtYWlsUXVlc3Rpb25Db21tZW50Rm9ybSI6e2Zvcm1UeXBlOiJCb29rIEEgVGVzdCBEcml2ZSIsZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiI3ZlaGljbGVTZWxlY3RGb3JtLCAubmV3LWRldGFpbHMgLm1haWx3aWRnZXQtLWZvcm0sIC5uZXctZGV0YWlscyAjc2VuZEVtYWlsRm9ybVN1Ym1pdCI6e2Zvcm1UeXBlOiJCb29rIEEgVGVzdCBEcml2ZSIsCmRpc3BsYXlUeXBlOiJpbi1wYWdlIn19fSxGaW5hbmNlOntmb3JtOnsiI21pbmlmb3JtIjp7Zm9ybVR5cGU6IkZpbmFuY2UiLGRpc3BsYXlUeXBlOiJpbi1wYWdlIixzZXR0aW5nczp7aWdub3JlU3VibWl0OiIxIiE9PSQoImlucHV0W25hbWU9J0FETUlOX0NSRURJVF9TRU5ETk9XX0NIRUNLJ10iKS52YWwoKX19fX0sU2VydmljZTp7IiNTZWN0aW9uX1JORFogYS5zZXJ2aWNlLWxpbmssICNTZWN0aW9uX1JORFogLnVzZWRfZGV0YWlsc19idG4gYSI6InNjaGVkdWxlU2VydmljZUNsaWNrIiwiI1NlY3Rpb25fQk9EWSBhLnNlcnZpY2UtbGluaywgI1NlY3Rpb25fQk9EWSAudXNlZF9kZXRhaWxzX2J0biBhIjoic2NoZWR1bGVTZXJ2aWNlQ2xpY2siLCIjU2VjdGlvbl9HQVJBR0UgYS5zZXJ2aWNlLWxpbmssICNTZWN0aW9uX0dBUkFHRSAudXNlZF9kZXRhaWxzX2J0biBhIjoic2NoZWR1bGVTZXJ2aWNlQ2xpY2siLGZvcm06eyIjdXNlckluZm9Gb3JtLCAjdXNlckFkcmVzc0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjdmVoaWNsZVNlbGVjdEZvcm0iOntmb3JtVHlwZToiUmVjYWxscyIsCmRpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiN2ZWhpY2xlU2VsZWN0Rm9ybSwgLm5ldy1kZXRhaWxzIC5tYWlsd2lkZ2V0LS1mb3JtLCAubmV3LWRldGFpbHMgI3NlbmRFbWFpbEZvcm1TdWJtaXQiOntmb3JtVHlwZToiUmVjYWxscyIsZGlzcGxheVR5cGU6ImluLXBhZ2UifX19LCJTY2hlZHVsZSBTZXJ2aWNlIjp7Zm9ybTp7IiN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjdmVoaWNsZVNlbGVjdEZvcm0sICNtYWlsUXVlc3Rpb25Db21tZW50Rm9ybSwgI21haWxTY2hlZHVsZUZvcm0iOntmb3JtVHlwZToiU2NoZWR1bGUgU2VydmljZSIsZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiI3ZlaGljbGVTZWxlY3RGb3JtLCAubmV3LWRldGFpbHMgLm1haWx3aWRnZXQtLWZvcm0sIC5uZXctZGV0YWlscyAjc2VuZEVtYWlsRm9ybVN1Ym1pdCI6e2Zvcm1UeXBlOiJTY2hlZHVsZSBTZXJ2aWNlIixkaXNwbGF5VHlwZToiaW4tcGFnZSJ9fX0sIlRpcmUgU3RvcmUiOntmb3JtOnsiI3VzZXJJbmZvRm9ybSwgI3NlbmRFbWFpbEZvcm0sICN2ZWhpY2xlU2VsZWN0Rm9ybSwgI21haWxRdWVzdGlvbkNvbW1lbnRGb3JtIjp7Zm9ybVR5cGU6IlBhcnRzIiwKZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiI3ZlaGljbGVTZWxlY3RGb3JtLCAubmV3LWRldGFpbHMgLm1haWx3aWRnZXQtLWZvcm0sIC5uZXctZGV0YWlscyAjc2VuZEVtYWlsRm9ybVN1Ym1pdCI6e2Zvcm1UeXBlOiJQYXJ0cyIsZGlzcGxheVR5cGU6ImluLXBhZ2UifX19LFBhcnRzOntmb3JtOnsiI3VzZXJJbmZvRm9ybSwgI3NlbmRFbWFpbEZvcm0sICN2ZWhpY2xlU2VsZWN0Rm9ybSwgI21haWxRdWVzdGlvbkNvbW1lbnRGb3JtIjp7Zm9ybVR5cGU6IlBhcnRzIixkaXNwbGF5VHlwZToiaW4tcGFnZSJ9LCIjdmVoaWNsZVNlbGVjdEZvcm0sIC5uZXctZGV0YWlscyAubWFpbHdpZGdldC0tZm9ybSwgLm5ldy1kZXRhaWxzICNzZW5kRW1haWxGb3JtU3VibWl0Ijp7Zm9ybVR5cGU6IlBhcnRzIixkaXNwbGF5VHlwZToiaW4tcGFnZSJ9fX0sIkRlYWxlciBTcGVjaWFscyI6eyIjc2VydmljZSAucHJvbW9zIC5wcm9tby1saW5rLWl0ZW0gYSwgI3NlcnZpY2UgLnByb21vcyAucHJvbW8taW1hZ2UgYSI6InNlcnZpY2VPZmZlckNsaWNrIiwKIi5kaXZDYXRlZ29yeUJveFdyYXBwZXI6bm90KCNzZXJ2aWNlKSAucHJvbW9zIC5wcm9tby1saW5rLWl0ZW0gYSwgLmRpdkNhdGVnb3J5Qm94V3JhcHBlcjpub3QoI3NlcnZpY2UpIC5wcm9tb3MgLnByb21vLWltYWdlIGEiOiJvZmZlckNsaWNrIiwiLnByb21vLWNhcmQtb2VtIGgyLCAucHJvbW8tY2FyZC1vZW0gaW1nLCAucHJvbW8tY2FyZC1vZW0gLnByb21vLW9lbS1wYXltZW50LCAucHJvbW8tY2FyZC1vZW0gYS5idG4iOiJvZmZlckNsaWNrIiwnI3RvcEJhbm5lckltYWdlW29uY2xpY2sqPSJzZXJ2aWNlIl0nOiJzY2hlZHVsZVNlcnZpY2VDbGljayIsZm9ybTp7IiNwcm9tb3BvcHVwLnByb21vcG9wdXAgZm9ybS5kMmNmb3JtIjp7Zm9ybVR5cGU6IlNwZWNpYWxzIixkaXNwbGF5VHlwZToibW9kYWwiLHNldHRpbmdzOntmb3JtU2hvd25DbGljazoiYS5wcm9tby1idG4ifX19LGxpc3Rlbjp7InByb21vcG9wdXAtc3VibWl0IjoicHJvbW9wb3B1cFN1Ym1pc3Npb24ifX0sIkNvbnRhY3QgVXMiOntmb3JtOnsiI2NvbnRhY3RfZm9ybTMiOntkaXNwbGF5VHlwZToiaW4tcGFnZSJ9fX0sCiJBYm91dCBVcyI6e2Zvcm06eyIjc2VuZEVtYWlsUG9wdXBGb3JtIjp7ZGlzcGxheVR5cGU6Im1vZGFsIn19fSxCcm9jaHVyZTp7Zm9ybTp7IiN2ZWhpY2xlU2VsZWN0Rm9ybSwgI3VzZXJJbmZvRm9ybSwgI3NlbmRFbWFpbEZvcm0sICNtYWlsUXVlc3Rpb25Db21tZW50Rm9ybSI6e2Rpc3BsYXlUeXBlOiJpbi1wYWdlIn19fSwiVHJhZGUgSW4iOntmb3JtOnsiI3ZlaGljbGVTZWxlY3RGb3JtRXgsICNtYWlsUXVlc3Rpb25Db21tZW50Rm9ybSwgI3VzZXJJbmZvRm9ybSwgI3NlbmRFbWFpbEZvcm0sICN2ZWhpY2xlU2VsZWN0Rm9ybSI6e2Zvcm1UeXBlOiJUcmFkZSBJbiIsZGlzcGxheVR5cGU6ImluLXBhZ2UifX19LE90aGVyOntmb3JtOnsiZm9ybS5jdXN0b21mb3JtIjp7Zm9ybVR5cGU6IkRlYWxlciBDdXN0b20iLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn0sIiN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtLCAjbWFpbEpvYk9mZmVyRm9ybSwgI3Jlc3VtZXVwbG9hZCI6e2Zvcm1UeXBlOiJFbXBsb3ltZW50IiwKZGlzcGxheVR5cGU6ImluLXBhZ2UifSwiI3ZlaGljbGVTZWxlY3RGb3JtLCAjbWFpbEZpbmFuY2VGb3JtLCAjbWFpbFF1ZXN0aW9uQ29tbWVudEZvcm0sICN1c2VySW5mb0Zvcm0sICNzZW5kRW1haWxGb3JtIjp7ZGlzcGxheVR5cGU6ImluLXBhZ2UifX19LCJDdXN0b20gRGVhbGVyIENvbnRlbnQiOntmb3JtOnsiZm9ybS5jdXN0b21mb3JtIjp7Zm9ybVR5cGU6IkRlYWxlciBDdXN0b20iLGRpc3BsYXlUeXBlOiJpbi1wYWdlIn0sImZvcm0uY3VzdG9tZm9ybV9fdjMiOntmb3JtVHlwZToiRGVhbGVyIEN1c3RvbSIsZGlzcGxheVR5cGU6ImluLXBhZ2UifX19fTt2YXIgeT1uZXcgZnVuY3Rpb24oKXt2YXIgYj10aGlzO2Iuc3RhdGljRGF0YT1oLnBhZ2VEYXRhO2Iudmlld2VkRm9ybXM9W107Yi5pbml0aWF0aW9uRm9ybXM9W107Yi5zdWJtaXR0ZWRGb3Jtcz1bXTtiLmZvcm09ZnVuY3Rpb24oZixwLHIpe3ZhciBhPXtmb3JtOmY\/JChmKTohMSxkYXRhOnAsc2V0dGluZ3M6cix2aWV3ZWQ6ITEsCmluaXRpYXRlZDohMSxzdWJtaXR0ZWQ6ITEsc3VibWl0QnRuQ2xpY2tlZDohMSxob29rZWQ6ITEsZW1haWxIYW5kbGVySG9va2VkOiExLHVpZDpNYXRoLnJhbmRvbSgpKihuZXcgRGF0ZSkuZ2V0VGltZSgpLGFkZExpc3RlbmVyczpmdW5jdGlvbigpe3RyeXtpZighYS5ob29rZWQpe2EuaG9va2VkPSEwO3ZhciBsPVt7c2VsZWN0b3I6Ii5qcVRyYW5zZm9ybVNlbGVjdFdyYXBwZXIgPiB1bCA+IGxpID4gYSIsZXZlbnROYW1lOiJjbGljayJ9LHtzZWxlY3Rvcjoic2VsZWN0IixldmVudE5hbWU6ImNoYW5nZSBjbGljayJ9LHtzZWxlY3RvcjoibGFiZWwsbGksYSxpIixldmVudE5hbWU6ImNsaWNrIn0se3NlbGVjdG9yOiJpbnB1dCIsZXZlbnROYW1lOiJjaGFuZ2Uga2V5dXAgcGFzdGUifSx7c2VsZWN0b3I6InRleHRhcmVhIixldmVudE5hbWU6ImNoYW5nZSBrZXl1cCBwYXN0ZSJ9LHtzZWxlY3RvcjoiYnV0dG9uIixldmVudE5hbWU6ImNoYW5nZSBrZXl1cCBjbGljayJ9XTtpZighaC5pc0RSfHwKIWguZHJCbGFja2xpc3QuaW5jbHVkZXMoYS5kYXRhLmZvcm1UeXBlKSl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLnNldHRpbmdzLmZvcm1JbnRlcmFjdENsaWNrJiZsLnB1c2goe3NlbGVjdG9yOmEuc2V0dGluZ3MuZm9ybUludGVyYWN0Q2xpY2ssZXZlbnROYW1lOiJjaGFuZ2Uga2V5dXAgY2xpY2sifSk7Zm9yKGxldCBxPTA7cTxsLmxlbmd0aDtxKyspe2xldCB0PWxbcV0sZz0tMSE9PXQuZXZlbnROYW1lLmluZGV4T2YoIiAiKT90LmV2ZW50TmFtZS5zcGxpdCgiICIpOlt0LmV2ZW50TmFtZV0sZD1mdW5jdGlvbigpe2EuaW50ZXJhY3QoKTtpZihudWxsIT1nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGcubGVuZ3RoJiYwPGcubGVuZ3RoKWZvcihsZXQgYz0wO2M8Zy5sZW5ndGg7YysrKWEuZm9ybS5maW5kKHQuc2VsZWN0b3IpLm9mZihnW2NdLGQpfTtmb3IobGV0IGM9MDtjPGcubGVuZ3RoO2MrKylhLmZvcm0uZmluZCh0LnNlbGVjdG9yKS5vbihnW2NdLGQpO2EuZm9ybS5maW5kKHQuc2VsZWN0b3IpLm9uKCJibHVyIiwKZnVuY3Rpb24oKXshMCE9PUMmJmEuZmllbGRJbnRlcmFjdGlvbih0aGlzKX0pfWlmKCJ1bmRlZmluZWQiIT10eXBlb2Ygci5zdWJtaXRFdmVudE5hbWUpJChkb2N1bWVudC5ib2R5KS5vbihyLnN1Ym1pdEV2ZW50TmFtZSxmdW5jdGlvbigpe2Euc2VudCgpfSk7YS5mb3JtLmZpbmQoJy5idG4tZGVmYXVsdCwgYVtjbGFzcyo9InN1Ym1pdCJdLCBidXR0b25bY2xhc3MqPSJzdWJtaXQiXSwgaW5wdXQ6c3VibWl0LCBpbnB1dFtjbGFzcyo9InN1Ym1pdCJdLCBhI3NlbmRFbWFpbEZvcm1TdWJtaXQsIGEjdHJhZGVJbkJhclBvcHVwU3VibWl0LCBidXR0b25bdHlwZT0ic3VibWl0Il0nKS5vbigiY2xpY2siLGEuc3VibWl0KTthLmZvcm0uZmlsdGVyKGZ1bmN0aW9uKHEsdCl7dD0kKHQpO3JldHVybiB0Lmhhc0NsYXNzKCJidG4tZGVmYXVsdCIpfHx0LmlzKCJpbnB1dDpzdWJtaXQiKXx8dC5pcygiYSNzZW5kRW1haWxGb3JtU3VibWl0Iil8fHQuaXMoImEjdHJhZGVJbkJhclBvcHVwU3VibWl0Iil8fAoodC5pcygiaW5wdXQiKXx8dC5pcygiYSIpfHx0LmlzKCJidXR0b24iKSkmJnQuaXMoJ1tjbGFzcyo9InN1Ym1pdCJdJyl9KS5vbigiY2xpY2siLGEuc3VibWl0KX19fWNhdGNoKHEpe2RlYnVnKCJFcnJvciBpbmplY3RpbmcgaG9va3MsIG5vdCBnb29kIGZvciB0YWdnaW5nOiAlcyIscS5tZXNzYWdlKX19LGxpc3RlbjpmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZm9ybS5kYXRhKCJtYWlsZXhwcmVzcy13aWRnZXQiKSYmKGEuc2V0dGluZ3MubWFpbElkPWEuZm9ybS5kYXRhKCJtYWlsZXhwcmVzcy13aWRnZXQiKS5zZXR0aW5ncy5lbWFpbElkKTsiaW4tcGFnZSI9PT1hLmRhdGEuZGlzcGxheVR5cGU\/YS5mb3JtLmVhY2goZnVuY3Rpb24odCxnKXskKGcpLmluVmlld3BvcnQoe29ic2VydmVyOnt0aHJlc2hvbGQ6Wy41XX0sdmlzaWJsZTphLnZpZXcsZGlzY29ubmVjdEFmdGVyVmlzaWJsZTohMCx3YWl0Rm9yOiJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhLCBzZWxlY3QifSl9KToKYS5mb3JtLmluVmlld3BvcnQoe29ic2VydmVyOnt0aHJlc2hvbGQ6WzFdfSx2aXNpYmxlOmEudmlldyxkaXNjb25uZWN0QWZ0ZXJWaXNpYmxlOiEwLHdhaXRGb3I6ImlucHV0Om5vdCg6aGlkZGVuKSwgdGV4dGFyZWEsIHNlbGVjdCJ9KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHIuZm9ybVNob3duQ2xpY2spZm9yKHZhciBsPXIuZm9ybVNob3duQ2xpY2suaW5kZXhPZigiLCIpP3IuZm9ybVNob3duQ2xpY2suc3BsaXQoIiwiKTpbci5mb3JtU2hvd25DbGlja10scT0wO3E8bC5sZW5ndGg7cSsrKSQoKG5ldyBTdHJpbmcobFtxXSkpLnRyaW0oKSkub24oImNsaWNrIixmdW5jdGlvbigpe2EudmlldygpOyJ1bmRlZmluZWQiIT10eXBlb2Ygci5tYWlsSWQmJmIudmlld2VkRm9ybXMucHVzaChyLm1haWxJZCl9KTthLnNldHRpbmdzLmhhc093blByb3BlcnR5KCJpZ25vcmVTdWJtaXQiKSYmYS5zZXR0aW5ncy5pZ25vcmVTdWJtaXR8fChhLmVtYWlsSGFuZGxlckhvb2tlZD0hMCwkKCJib2R5Iikub24oImVtYWlsSGFuZGxlci5lbWFpbFNlbnQiLApmdW5jdGlvbigpe2Euc2VudCgpfSkpfSx2aWV3OmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5zZXR0aW5ncyYmITA9PT1hLnNldHRpbmdzLmhhc011bHRpcGxlRm9ybXNPblBhZ2UmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuc2V0dGluZ3MuZm9ybVNob3duQ2xpY2smJihhLmZvcm09JChhLnNldHRpbmdzLmZvcm1TaG93bkNsaWNrKS5jbG9zZXN0KGEuc2V0dGluZ3MucGFyZW50RWxlbWVudCwiZm9ybSIpLGEuaW5pdGlhdGVkPSExLGEuc3VibWl0dGVkPSExLGEuc3VibWl0QnRuQ2xpY2tlZD0hMSxhLmhvb2tlZD0hMSk7aWYoMDxhLmZvcm0ubGVuZ3RoJiYwPCQoIiNtaW5pZm9ybSIpLmxlbmd0aCYmImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iPT0kKGEuZm9ybSkuYXR0cigiaWQiKSlhLmluaXRpYXRlZD0hMCxhLmhvb2tlZD0hMCxhLnZpZXdlZD0hMDtlbHNlIGlmKGEuaG9va2VkfHxhLmFkZExpc3RlbmVycygpLCEwIT09YS52aWV3ZWQpe2lmKCJ1bmRlZmluZWQiIT0KdHlwZW9mIGEuc2V0dGluZ3MubWFpbElkKXtpZigtMSE9PWIudmlld2VkRm9ybXMuaW5kZXhPZihhLnNldHRpbmdzLm1haWxJZCkpe2Eudmlld2VkPSEwO3JldHVybn1iLnZpZXdlZEZvcm1zLnB1c2goYS5zZXR0aW5ncy5tYWlsSWQpfWlmKC0xIT09Yi52aWV3ZWRGb3Jtcy5pbmRleE9mKGEudWlkKSlhLnZpZXdlZD0hMDtlbHNle2Eudmlld2VkPSEwO2Iudmlld2VkRm9ybXMucHVzaChhLnVpZCk7dmFyIGw9e2luZm86YS5zZXR0aW5ncyxldmVudDphLmRhdGF9OyQuZXh0ZW5kKCEwLGwse2luZm86e3RhcmdldDphLmZvcm19fSk7bD1BLmJ1aWxkKGIuc3RhdGljRGF0YS5wYWdlVHlwZSwiZm9ybVNob3duIixsKTtkZWJ1ZygiU0QgOjogZm9ybVNob3duICIrYS5mb3JtLnNlbGVjdG9yLGwpOyEwIT09QyYmKGRlYnVnKCJTRCA6OiB2aWV3IGZvcm1TaG93biIsbCksc2QoImRhdGFMYXllciIsbCksc2QoInNlbmQiKSk7YS5kYXRhLmZvcm1UeXBlPWwuZm9ybVR5cGV9fX0saW50ZXJhY3Q6ZnVuY3Rpb24oKXtpZighMCE9PQphLmluaXRpYXRlZCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhLnNldHRpbmdzLm1haWxJZCl7aWYoLTEhPT1iLmluaXRpYXRpb25Gb3Jtcy5pbmRleE9mKGEuc2V0dGluZ3MubWFpbElkKSl7YS5pbml0aWF0ZWQ9ITA7YS52aWV3ZWQ9ITA7cmV0dXJufWIuaW5pdGlhdGlvbkZvcm1zLnB1c2goYS5zZXR0aW5ncy5tYWlsSWQpfWNvbnNvbGUubG9nKCJEMkRSIGZvcm1Jbml0IixhKTtpZighaC5pc0RSfHwhaC5kckJsYWNrbGlzdC5pbmNsdWRlcyhhLmRhdGEuZm9ybVR5cGUpKWlmKC0xIT09Yi5pbml0aWF0aW9uRm9ybXMuaW5kZXhPZihhLnVpZCkpYS5pbml0aWF0ZWQ9ITAsYS52aWV3ZWQ9ITA7ZWxzZXthLnZpZXdlZHx8YS52aWV3KCk7YS5pbml0aWF0ZWQ9ITA7Yi5pbml0aWF0aW9uRm9ybXMucHVzaChhLnVpZCk7dmFyIGw9e2luZm86YS5zZXR0aW5ncyxldmVudDphLmRhdGF9OyQuZXh0ZW5kKCEwLGwse2luZm86e3RhcmdldDphLmZvcm19fSk7bD1BLmJ1aWxkKGIuc3RhdGljRGF0YS5wYWdlVHlwZSwKImZvcm1Jbml0aWF0aW9uIixsKTtkZWJ1ZygiU0QgOjogZm9ybUluaXRpYXRpb24gIithLmZvcm0uc2VsZWN0b3IsbCk7c2QoImRhdGFMYXllciIsbCk7c2QoInNlbmQiKX19fSxmaWVsZEludGVyYWN0aW9uOmZ1bmN0aW9uKGwpe2lmKCFoLmlzRFJUYWdnaW5nfHwhaC5pc0RSUGFnZXR5cGUpe3ZhciBxPXtpbmZvOmEuc2V0dGluZ3MsZXZlbnQ6YS5kYXRhfTskLmV4dGVuZCghMCxxLHtpbmZvOnt0YXJnZXQ6YS5mb3JtfX0pO3E9QS5idWlsZChiLnN0YXRpY0RhdGEucGFnZVR5cGUsImZvcm1GaWVsZEludGVyYWN0aW9uIixxKTtsPW51bGwhPWwuZ2V0QXR0cmlidXRlKCJuYW1lIik\/bC5nZXRBdHRyaWJ1dGUoIm5hbWUiKTpsLmdldEF0dHJpYnV0ZSgiaWQiKTtxLmZvcm1GaWVsZE5hbWU9bDtkZWJ1ZygiU0QgOjogZm9ybUZpZWxkSW50ZXJhY3Rpb24gIithLmZvcm0uc2VsZWN0b3IscSk7c2QoImRhdGFMYXllciIscSk7c2QoInNlbmQiKX19LHNlbnQ6ZnVuY3Rpb24oKXt2YXIgbD0hMTsKbGV0IHE9e307Y29uc29sZS5sb2coIkQyRFIgZm9ybVN1YiIsYSk7aWYoIWguaXNEUnx8IWguZHJCbGFja2xpc3QuaW5jbHVkZXMoYS5kYXRhLmZvcm1UeXBlKSlpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEuc2V0dGluZ3MubWFpbElkJiYiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI9PWEuc2V0dGluZ3MubWFpbElkJiYwPCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIikubGVuZ3RoJiYkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpLmlzKCI6dmlzaWJsZSIpJiYobD0hMCksKGx8fCJ1bmRlZmluZWQiPT10eXBlb2YgYS5zZXR0aW5ncy5wYXNzaXZlU3VibWl0fHwhMCE9PWEuc2V0dGluZ3MucGFzc2l2ZVN1Ym1pdCkmJihsfHwhYS5zdWJtaXR0ZWQmJmEuaW5pdGlhdGVkKSYmITAhPT1DKXthLnN1Ym1pdHRlZD0hMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEuc2V0dGluZ3MubWFpbElkKXtpZigtMSE9PWIuc3VibWl0dGVkRm9ybXMuaW5kZXhPZihhLnNldHRpbmdzLm1haWxJZCkpcmV0dXJuOwpiLnN1Ym1pdHRlZEZvcm1zLnB1c2goYS5zZXR0aW5ncy5tYWlsSWQpfSQuZXh0ZW5kKCEwLHEse2luZm86e3RhcmdldDphLmZvcm0sZW1haWxIYW5kbGVyfX0pOyJ1bmRlZmluZWQiPT10eXBlb2YgcS5ldmVudCYmKHEuZXZlbnQ9e30sIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiPT1hLnNldHRpbmdzLm1haWxJZCYmKHEuZXZlbnQuZm9ybVR5cGU9YS5kYXRhLmZvcm1UeXBlKSk7aWYoISgiRmluYW5jZSI9PXYucGFnZVR5cGUmJjA8JCgiI21pbmlmb3JtIikubGVuZ3RoJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBxLmluZm8uZW1haWxIYW5kbGVyJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBxLmluZm8uZW1haWxIYW5kbGVyLm1haWxJRCYmImdlbmVyaWNNYWlsIj09cS5pbmZvLmVtYWlsSGFuZGxlci5tYWlsSUQmJiJmaW5hbmNlbWVudCI9PXEuaW5mby5lbWFpbEhhbmRsZXIucHVyY2hhc2VfaW50ZW50X3NlY3Rpb24pKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHEuaW5mby5lbWFpbEhhbmRsZXIpe2lmKCJGaW5hbmNlIj09CnEuZXZlbnQuZm9ybVR5cGUmJiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0Ij09cS5pbmZvLmVtYWlsSGFuZGxlci5zdWJqZWN0KXJldHVybjsiTGVhZDogVHJhZGUtaW4gcmVxdWVzdCI9PXEuaW5mby5lbWFpbEhhbmRsZXIuc3ViamVjdC50cmltKCkmJihxLmV2ZW50LmZvcm1UeXBlPSJUcmFkZSBJbiIpOyIxMDE3Ij09JCgiI29lbUNlcnRpZmljYXRpb24iKS52YWwoKSYmcS5pbmZvLmVtYWlsSGFuZGxlci5zdWJqZWN0LmluY2x1ZGVzKCJSZXF1ZXN0IGZvciBiZXN0IG9mZmVyIikmJihxLmV2ZW50LmZvcm1UeXBlPSJHZXQgQSBRdW90ZSIpfWw9QS5idWlsZChiLnN0YXRpY0RhdGEucGFnZVR5cGUsImZvcm1TdWJtaXNzaW9uIixxKTtkZWJ1ZygiU0QgOjogZm9ybVN1Ym1pc3Npb24gIithLmZvcm0uc2VsZWN0b3IsbCk7c2QoImRhdGFMYXllciIsbCk7c2QoInNlbmQiKX19fSxzdWJtaXQ6ZnVuY3Rpb24oKXthLnN1Ym1pdEJ0bkNsaWNrZWQ9ITA7ITE9PT1hLmVtYWlsSGFuZGxlckhvb2tlZCYmCmEuc2VudCgpfX07YS5saXN0ZW4oKX07Yi5wYWdlVmlldz1mdW5jdGlvbihmKXtpZighMSE9PWZ8fCEwIT09dGhpcy5wYWdlVmlld1N1Ym1pdHRlZClpZihjb25zb2xlLmxvZygiRDJTRCBwYWdlVmlldzoiLGgpLCFoLmRyU3VwcHJlc3NQYWdldmlldyl7dGhpcy5wYWdlVmlld1N1Ym1pdHRlZD0hMDt2YXIgcD17aGFuZGxlcjpmdW5jdGlvbigpezE9PSQoIiNJU1ZNIikudmFsKCk\/cC5zZW5kKCk6InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlckNhbGxiYWNrP2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2soKCk9PntkZWJ1ZygiU0QgOjogLSBpbiBzZXNzaW9uSUQgY2FsbGJhY2siKTtwLnNlbmQoKX0pOmNvbnNvbGUuZXJyb3IoImFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2sgaXMgbm90IGRlZmluZWQiKX0sc2VuZDpmdW5jdGlvbigpe3ZhciByPQpBLmJ1aWxkKGIuc3RhdGljRGF0YS5wYWdlVHlwZSwicGFnZXZpZXciLHt9KTtyLmRlYWxlckJBQz0kKCIjZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT0nZGVhbGVyQkFDJ10iKS52YWwoKTtjb25zb2xlLmRlYnVnKCJTRCA6OiBwYWdldmlldyIscik7IiIhPT1yLnBhZ2VUeXBlJiZudWxsIT09ci5wYWdlVHlwZSYmInVuZGVmaW5lZCIhPT10eXBlb2Ygci5wYWdlVHlwZXx8Tih7bWVzc2FnZToiU2hpZnREaWdpdGFsIFBhZ2VUeXBlIGlzIGVtcHR5IixkYXRhOntwYWdlRGF0YTpiLnN0YXRpY0RhdGEsZGF0YV9sYXllcjpyfX0pO3NkKCJkYXRhTGF5ZXIiLHIpO3NkKCJzZW5kIiwicGFnZXZpZXciKX19O3JldHVybiBwLmhhbmRsZXJ9fTtiLnNlbmQ9ZnVuY3Rpb24oZixwKXt2YXIgcj17ZXZlbnRUeXBlOmYsZGF0YTpwLGhhbmRsZXI6ZnVuY3Rpb24oYSl7dmFyIGw9e2luZm86e3RhcmdldDphLmN1cnJlbnRUYXJnZXR9LGV2ZW50OnIuZGF0YX07aWYoci5kYXRhLmNvbnRhaW5lclVzZWQmJgoobC5pbmZvLnRhcmdldD1hLnRhcmdldCwhJChhLnRhcmdldCkucGFyZW50KCkuaXMoYS5jdXJyZW50VGFyZ2V0KSkpcmV0dXJuO3ZhciBxPWEudHlwZTtxKz0iIiE9PWEubmFtZXNwYWNlPyIuIithLm5hbWVzcGFjZToiIjtzd2l0Y2gocSl7Y2FzZSAiZmlsdGVyczpjaGFuZ2UiOmNhc2UgImZpbHRlcnM6bG9hZCI6JCgiYm9keSIpLmRhdGEocSwiMSIpO2RvY3VtZW50LmJvZHkuZGF0YXNldFtxXT0iMSI7aWYoIlNob3dyb29tIj09PWgucGFnZURhdGEucGFnZVR5cGUpbC5pbmZvLmZpbHRlcnM9YS5maWx0ZXJzLGwuaW5mby52ZWhpY2xlQ291bnQ9YS52ZWhpY2xlQ291bnQ7ZWxzZXtsLmluZm8uZmlsdGVycz1hLmZpbHRlckRhdGEuZmlsdGVyU2VhcmNoO2wuaW5mby52ZWhpY2xlQ291bnQ9YS5maWx0ZXJEYXRhLmNvdW50U2VhcmNoUmVzdWx0cztpZigwPGEuZmlsdGVyRGF0YS5maWx0ZXJTZWFyY2guc3RhdHVzLmxlbmd0aCl7bGV0IHQ9YS5maWx0ZXJEYXRhLmZpbHRlclNlYXJjaC5zdGF0dXNbMF0sCmc9JCgiLmRpdlNjb3BlZmx0Q2VydGlmaWVkSWQgLm5vdGFncy5leGNlcnRpZmllZCIpOyJDUE8iIT09dCYmMDxnLmxlbmd0aCYmZy5oYXNDbGFzcygic2VsZWN0ZWQiKSYmKGEuZmlsdGVyRGF0YS5maWx0ZXJTZWFyY2guc3RhdHVzPVsiQ1BPIl0pfWlmKCIiIT09YS5maWx0ZXJEYXRhLnR5cGVkU2VhcmNoKXtkMnNkRGVsYXlTZWFyY2goZnVuY3Rpb24oKXtiLnBhZ2VWaWV3KCEwKSgpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLnNlbmROb3coZixsKTtiLnNlbmROb3coInR5cGVkU2VhcmNoIix7aW5mbzp7dGFyZ2V0OmEuY3VycmVudFRhcmdldH0sZXZlbnQ6e3R5cGVkU2VhcmNoOmEuZmlsdGVyRGF0YS50eXBlZFNlYXJjaH19LDI1MCl9KX0sM0UzKTtyZXR1cm59aWYoImZpbHRlcnM6Y2hhbmdlIj09cSl7Yi5wYWdlVmlldyghMCkoKTtkMnNkRGVsYXlTZWFyY2goZnVuY3Rpb24oKXtiLnNlbmROb3coZixsKX0sNTAwKTtyZXR1cm59fWJyZWFrO2Nhc2UgInR5cGVhaGVhZDphc3luY3JlY2VpdmUiOmwuaW5mby50YXJnZXQ9CmEudGFyZ2V0fWIuc2VuZE5vdyhmLGwpfX07cmV0dXJuIHIuaGFuZGxlcn07Yi5zZW5kTm93PWZ1bmN0aW9uKGYscCl7cD1BLmJ1aWxkKGIuc3RhdGljRGF0YS5wYWdlVHlwZSxmLHApO2RlYnVnKCJTRCA6OiBzZW5kaW5nIHNlbmROb3cgIitmLHApO3NkKCJkYXRhTGF5ZXIiLHApO3NkKCJzZW5kIil9O3JldHVybiBifSxBPW5ldyBmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXtsZXQgZD17c2Vzc2lvbklkOkUoKX07ZW1haWxIYW5kbGVyLnVzZXJQb3N0YWwmJihkLnVzZXJaaXBDb2RlPWVtYWlsSGFuZGxlci51c2VyUG9zdGFsKTtyZXR1cm4gZH1mdW5jdGlvbiBmKGQsYyl7Yz17c3RhdHVzOnEoInZlaGljbGVEZXRhaWxzLnN0YXR1cyIsZy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9c3RhdHVzXSIpLnZhbCgpLCIiKSx0cmltOiIiLGVuZ2luZTpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT1lbmdpbmVdIikudmFsKCksdHJhbnNtaXNzaW9uOnEoInZlaGljbGVEZXRhaWxzLnRyYW5zbWlzc2lvbiIsCmcuZGF0YUNvbnRhaW5lci5maW5kKCJpbnB1dFtuYW1lPXRyYW5zbWlzc2lvbl0iKS52YWwoKSwiIiksaW50ZXJpb3JDb2xvcjpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT1pbnRDb2xvcl0iKS52YWwoKSxleHRlcmlvckNvbG9yOmcuZGF0YUNvbnRhaW5lci5maW5kKCJpbnB1dFtuYW1lPWV4dENvbG9yXSIpLnZhbCgpLGRyaXZlVHJhaW46Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9ZHJpdmVUcmFpbl0iKS52YWwoKSxmdWVsVHlwZTpxKCJ2ZWhpY2xlRGV0YWlscy5mdWVsVHlwZSIsZy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9ZnVlbFR5cGVdIikudmFsKCksIkdhc29saW5lIiksbXNycDoiMCIsZGlzcGxheWVkUHJpY2U6IjAiLHZpbjoiIn07ZCYmKCJmaW5hbmNlX211bHRpc3RlcF9mb3JtIj09PWQuYXR0cigiaWQiKSYmLTE9PT1bIlZlaGljbGUgRGV0YWlscyIsIk1vZGVsIFNob3dyb29tIl0uaW5kZXhPZihnLnN0YXRpY0RhdGEucGFnZVR5cGUpPwokLmV4dGVuZCghMCxjLHttYWtlOiQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKCksbW9kZWw6JCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikudmFsKCkseWVhcjokKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgpLHZpbjoiIn0pOigkLmV4dGVuZCghMCxjLHttYWtlOmQuZmluZCgiI2JyYW5kU2VsZWN0IikudmFsKCksbW9kZWw6ZC5maW5kKCIjbW9kZWxTZWxlY3QiKS52YWwoKSx5ZWFyOmQuZmluZCgiI3llYXJTZWxlY3QiKS52YWwoKSx2aW46ZC5maW5kKCIjdmluTnVtYmVyIikudmFsKCl8fCIifSksZC5maW5kKCJzZWxlY3RbbmFtZT1jb2xvclNlbGVjdF0iKSYmKGMuZXh0ZXJpb3JDb2xvcj1kLmZpbmQoInNlbGVjdFtuYW1lPWNvbG9yU2VsZWN0XSIpLnZhbCgpKSkpO2MuaGFzT3duUHJvcGVydHkoIm1vZGVsIikmJiIiIT09Yy5tb2RlbHx8JC5leHRlbmQoITAsYyx7bWFrZTpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT1tYWtlXSIpLnZhbCgpLAptb2RlbDpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT1tb2RlbF0iKS52YWwoKSx5ZWFyOmcuZGF0YUNvbnRhaW5lci5maW5kKCJpbnB1dFtuYW1lPXllYXJdIikudmFsKCksdHJpbTpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT10cmltXSIpLnZhbCgpLHZpbjpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT12aW5dIikudmFsKCksZGlzcGxheWVkUHJpY2U6Zy5kYXRhQ29udGFpbmVyLmZpbmQoImlucHV0W25hbWU9ZGlzcGxheWVkUHJpY2VdIikudmFsKCksbXNycDpnLmRhdGFDb250YWluZXIuZmluZCgiaW5wdXRbbmFtZT1tc3JwXSIpLnZhbCgpfSk7Zm9yKHZhciBrIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShrKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgY1trXSl7aWYoMD09PWNba10uaW5kZXhPZigieyQiKXx8Ii0xIj09PWNba10pY1trXT0iZGlzcGxheWVkUHJpY2UiPT09az8iMCI6IiI7dHJ5e2lmKCJvYmplY3QiPT10eXBlb2Ygd2luZG93Ll9fdmRwSlNPTiYmCihudWxsPT1jW2tdfHwwPT1jW2tdLmxlbmd0aCkpc3dpdGNoKGspe2Nhc2UgInRyaW0iOiJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Ll9fdmRwSlNPTi5jZnN0eWxlbmFtZT8idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5fX3ZkcEpTT04udmVyc2lvbiYmKGNba109d2luZG93Ll9fdmRwSlNPTi52ZXJzaW9uLmZ1bGx8fCIiKTpjW2tdPXdpbmRvdy5fX3ZkcEpTT04uY2ZzdHlsZW5hbWV8fCIiO2JyZWFrO2Nhc2UgImVuZ2luZSI6Y1trXT13aW5kb3cuX192ZHBKU09OLmVuZ2luZVR5cGV8fHdpbmRvdy5fX3ZkcEpTT04uZW5naW5lfHwiIjticmVhaztjYXNlICJkcml2ZVRyYWluIjpjW2tdPXdpbmRvdy5fX3ZkcEpTT04uY2Zkcml2ZXRyYWlufHx3aW5kb3cuX192ZHBKU09OLmRyaXZldHJhaW58fCIiO2JyZWFrO2Nhc2UgInRyYW5zbWlzc2lvbiI6aWYod2luZG93Ll9fdmRwSlNPTi50cmFuc21pc3Npb24pY1trXT13aW5kb3cuX192ZHBKU09OLnRyYW5zbWlzc2lvbjtlbHNlIGlmKCJ1bmRlZmluZWQiIT0KdHlwZW9mIHdpbmRvdy5fX3ZkcEpTT04uY2F0X21lY2hhbmljYWxzJiYwPHR5cGVvZiB3aW5kb3cuX192ZHBKU09OLmNhdF9tZWNoYW5pY2Fscy5sZW5ndGgpZm9yKGQ9MDtkPHdpbmRvdy5fX3ZkcEpTT04uY2F0X21lY2hhbmljYWxzLmxlbmd0aDtkKyspMTM9PXdpbmRvdy5fX3ZkcEpTT04uY2F0X21lY2hhbmljYWxzW2RdLmlkJiYoY1trXT13aW5kb3cuX192ZHBKU09OLmNhdF9tZWNoYW5pY2Fsc1tkXS52YWx1ZSk7ZWxzZSBjW2tdPSIwIj09KHdpbmRvdy5fX3ZkcEpTT04uYXV0b21hdGljdHJhbnx8IiIpPyJNYW51YWwiOiJBdXRvbWF0aWMiO2JyZWFrO2Nhc2UgImludGVyaW9yQ29sb3IiOmNba109d2luZG93Ll9fdmRwSlNPTi5jb2xvcj93aW5kb3cuX192ZHBKU09OLmNvbG9yLmludGVyaW9yOiIiO2JyZWFrO2Nhc2UgImV4dGVyaW9yQ29sb3IiOmNba109d2luZG93Ll9fdmRwSlNPTi5jb2xvcj93aW5kb3cuX192ZHBKU09OLmNvbG9yLmV4dGVyaW9yOiIifX1jYXRjaChtKXtkZWJ1ZygiVW5leHBlY3RlZCBlcnJvciB0cnlpbmcgYmVzdCBjYXNlIGZpbGxlciBkYXRhLS0lcyIsCm0ubWVzc2FnZSl9fWs9Yztmb3IodmFyIGUgaW4gayludWxsIT09a1tlXSYmdm9pZCAwIT09a1tlXXx8ZGVsZXRlIGtbZV07cmV0dXJuIGt9ZnVuY3Rpb24gcChkLGMsayl7aWYoYy5mb3JtVHlwZSl2YXIgZT1jLmZvcm1UeXBlO2Vsc2V7ZT1rLm1haWxJZDt2YXIgbT0hMTtlPWV8fCQoImlucHV0W2lkKj1NYWlsSURdIikudmFsKCk7c3dpdGNoKGUpe2Nhc2UgIkJvZHlTaG9wIjpjYXNlICJFc3RoZXRpY1JlcXVlc3QiOmNhc2UgIlBvcFVwT3RoZXJTZXJ2aWNlIjpjYXNlICJSZWNhbGxzIjpjYXNlICJoZWFkZXJTZXJ2aWNlIjpjYXNlICJtZW51U2VydmljZSI6bT1nLkZPUk1fVFlQRS5TRVJWSUNFO2JyZWFrO2Nhc2UgIlNlcnZpY2VSZXF1ZXN0IjptPWcuRk9STV9UWVBFLlNDSEVEVUxFX1NFUlZJQ0U7YnJlYWs7Y2FzZSAiUGFydHNSZXF1ZXN0IjptPWcuRk9STV9UWVBFLlBBUlRTO2JyZWFrO2Nhc2UgIlRpcmVzUmVxdWVzdCI6bT1nLkZPUk1fVFlQRS5USVJFUzticmVhaztjYXNlICJUZXN0RHJpdmUiOmNhc2UgIlRlc3REcml2ZU5ldyI6bT0KZy5GT1JNX1RZUEUuVEVTVF9EUklWRTticmVhaztjYXNlICJQcmljZVJlcXVlc3ROZXciOmNhc2UgIlByaWNlVmVoaWNsZU5ldyI6Y2FzZSAiUHJpY2VWZWhpY2xlIjpjYXNlICJQcmljZVJlcXVlc3QiOmNhc2UgIlF1aWNrRW1haWxOZXdJbnZlbnRvcnkiOmNhc2UgInBvcFVwV2lkZ2V0QUEiOmNhc2UgIlBvcFVwT3RoZXJVc2VkQ2FycyI6Y2FzZSAiVklQUmVxdWVzdCI6Y2FzZSAiUmVzZXJ2ZUl0Tm93TmV3IjpjYXNlICJSZXNlcnZlSXROb3ciOmNhc2UgIlNwZWNzUmVxdWVzdE5ldyI6Y2FzZSAiVklQUmVxdWVzdE5ldyI6Y2FzZSAiQmVzdFByaWNlUmVxdWVzdE5ldyI6Y2FzZSAiU3BlY3NSZXF1ZXN0IjptPWcuRk9STV9UWVBFLkdFVF9QUklDRTticmVhaztjYXNlICJSZWJhdGVDb3Vwb25OZXciOmNhc2UgIlJlYmF0ZUNvdXBvbk5ld0JOUCI6Y2FzZSAiUmViYXRlQ291cG9uTmV3SW52ZW50b3J5IjpjYXNlICJSZWJhdGVDb3Vwb25OZXdTbGlkZXIiOmNhc2UgIlBvcFVwT3RoZXJQcm9tbyI6Y2FzZSAiUHJvbW9Qb3B1cCI6Y2FzZSAiUmViYXRlQ291cG9uVXNlZFNsaWRlciI6Y2FzZSAiUmViYXRlQ291cG9uIjpjYXNlICJCZXN0cHJpY2VHdWFyYW50ZWUiOmNhc2UgIlBvcFVwSW5zdGFudFJlYmF0ZSI6Y2FzZSAiUG9wVXBJbnN0YW50UmViYXRlMyI6bT0KZy5GT1JNX1RZUEUuU1BFQ0lBTF9PRkZFUjticmVhaztjYXNlICJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0IjpjYXNlICJDcmVkaXRSZXF1ZXN0IjpjYXNlICJDcmVkaXRSZXF1ZXN0TW9iaWxlIjpjYXNlICJDcmVkaXRTY29yZSI6Y2FzZSAiUG9wVXBPdGhlckZpbmFuY2UiOmNhc2UgIkFERkNyZWRzaWkuY29tIjpjYXNlICJNdWx0aUZvcm1fU01TX3VzZWQiOmNhc2UgIk11bHRpRm9ybSI6Y2FzZSAiTXVsdGlGb3JtX1NNUyI6Y2FzZSAiTW9udGhseVBheW1lbnRzIjpjYXNlICJNb250aGx5UGF5bWVudHNfU01TIjpjYXNlICJGaW5hbmNlQWN0aW9uQm94X3BvcHVwIjptPWcuRk9STV9UWVBFLkNSRURJVDticmVhaztjYXNlICJNYWtlT2ZmZXJOZXciOmNhc2UgIk1ha2VPZmZlciI6bT1nLkZPUk1fVFlQRS5NQUtFX09GRkVSO2JyZWFrO2Nhc2UgIlBvcFVwT3RoZXJOZXdDYXJzIjpjYXNlICJCcm9jaHVyZXMiOmNhc2UgIkNvbnRhY3RWaXNpdFJlcXVlc3ROZXciOmNhc2UgIkNvbnRhY3RWaXNpdFJlcXVlc3QiOmNhc2UgIlJldHVyblZpc2l0b3JOZXciOmNhc2UgIkNhcnByb29mTWFpbCI6Y2FzZSAiUGhvdG9SZXF1ZXN0IjpjYXNlICJSZXR1cm5WaXNpdG9yIjptPQpnLkZPUk1fVFlQRS5NT1JFX0lORk87YnJlYWs7Y2FzZSAiQmxhY2tib29rVkRQIjpjYXNlICJCbGFja0Jvb2tMZWFkIjpjYXNlICJTZWxsQ2FyIjptPWcuRk9STV9UWVBFLlRSQURFX0lOO2JyZWFrO2Nhc2UgIkJ1aWxkQW5kUHJpY2VBdXRvQW5zd2VyIjpjYXNlICJCdWlsZEFuZFByaWNlX1NhdmUiOmNhc2UgIkJ1aWxkQW5kUHJpY2VfU3RvY2siOmNhc2UgIkF2YWlsYWJpbGl0eVVzZWQiOmNhc2UgIkZpbmRWZWhpY2xlIjptPWcuRk9STV9UWVBFLlNIT1dST09NO2JyZWFrO2Nhc2UgIkNvbnRhY3RVc1JlcXVlc3QiOmNhc2UgIkNvbnRhY3RSZXF1ZXN0IjpjYXNlICJEaXJlY3Rpb25SZXF1ZXN0IjpjYXNlICJtZW51Q29udGFjdFVzIjpjYXNlICJQb3BVcE90aGVyQ29udGFjdFVzIjpjYXNlICJQb3BVcE90aGVySG9tZXBhZ2UiOmNhc2UgIkRlYWxlckFwcG9pbnRtZW50IjptPWcuRk9STV9UWVBFLkNPTlRBQ1RfVVN9ZGVidWcoIkZvcm0gVHlwZSBieSBtYWlsSUQgOiAiLHttYWlsSWQ6ZSwKZm9ybVR5cGU6bX0pO2U9bTtlfHwoZT13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsbT0hMSx0KGUsWyJlc3NhaXMtcm91dGllci1uZXVmIiwidGVzdC1kcml2ZS1uZXciLCJ0ZXN0ZHJpdmUiXSk\/bT1nLkZPUk1fVFlQRS5URVNUX0RSSVZFOnQoZSxbImNvbW1hbmRlLWRlLXBpZWNlcyIsImNvbW1hbmRlLWRlLXBuZXVzLXBpZWNlcy1hdXRvbW9iaWxlcyIsImNhci1wYXJ0cy0iLCJwYXJ0cy1hbmQtYWNjZXNzb3JpZXMiXSk\/bT1nLkZPUk1fVFlQRS5QQVJUUzp0KGUsWyJjb250YWN0dXMiLCJjb250YWN0ZXoiXSk\/bT1nLkZPUk1fVFlQRS5DT05UQUNUX1VTOnQoZSwiL25ldWZzLyAvbmV3LyBjb25maWd1cmF0aW9uLWV0LXByaXggYnVpbGQtYW5kLXByaWNlIG9mZnJlLW5ldWYgb2ZmZXItbmV3LyBwcml4LW5ldWYgcHJpY2UtbmV3Ii5zcGxpdCgiICIpKT9tPWcuRk9STV9UWVBFLkdFVF9QUklDRTp0KGUsIi9vY2Nhc2lvbi8gL3VzZWQvIHVzZWRjYXJzIGludmVudG9yeS5odG1sIGludmVudGFpcmUuaHRtbCBtb2lucy1kZS0gbGVzcy10aGFuLSBmaW5kLXVzZWQtY2FyIG9mZnJlLW9jY2FzaW9uIG9mZmVyLXVzZWQgcmVjaGVyY2hlLXZlaGljdWxlLW9jY2FzaW9uIi5zcGxpdCgiICIpKT8KbT1nLkZPUk1fVFlQRS5TSE9XUk9PTTp0KGUsWyJmaW5hbmNlIiwiY3JlZGl0Il0pP209Zy5GT1JNX1RZUEUuQ1JFRElUOnQoZSxbImVtcGxveW1lbnQvIiwiL2VtcGxvaXMiLCJhdXRvLWpvYnMiLCJlbXBsb2lzLWF1dG9tb2JpbGUiXSkmJihtPWcuRk9STV9UWVBFLkVNUExPWU1FTlQpLGRlYnVnKCJGb3JtIFR5cGUgYnkgVVJMIDogIix7dXJsOmUsZm9ybVR5cGU6bX0pLGU9bSk7ZXx8KGU9Zy5GT1JNX1RZUEUuQ09OVEFDVF9VUyl9ZT17Zm9ybVR5cGU6ZX07bnVsbD09PWMuZm9ybVR5cGUmJmRlbGV0ZSBjLmZvcm1UeXBlO209ZihrLnRhcmdldHx8bnVsbCxlLmZvcm1UeXBlKTsiR2VuZXJhbCBDb250YWN0IiE9PWUuZm9ybVR5cGUmJm0uaGFzT3duUHJvcGVydHkoIm1vZGVsIikmJiIiIT09bS5tb2RlbCYmInskTU9ERUx9IiE9PW0ubW9kZWwmJiQuZXh0ZW5kKCEwLGUse2Zvcm1WZWhpY2xlOm19KTsiZm9ybVN1Ym1pc3Npb24iPT09ZCYmKGQ9ay5lbWFpbEhhbmRsZXIsJC5leHRlbmQoITAsCmUse2xlYWRJZDooZC5fX2xlYWRpZHx8IiIpKyJfIitEYXRlLm5vdygpLGxlYWRUeXBlOiJsZWFkIixmb3JtT3B0aW46cSgiZm9ybU9wdGluIixkLmNvbnNlbnRUeXBlLCJpbi1pbXBsaWNpdCIpLHByZWZDb250YWN0OmQudXNlclBob25lPyJwaG9uZSI6ImVtYWlsIn0pLCJUcmFkZSBJbiI9PT1lLmZvcm1UeXBlJiYkLmV4dGVuZCghMCxlLHt0cmFkZUluOnt5ZWFyOiQoay50YXJnZXQpLmZpbmQoIiN0cmFkaW5ZZWFyU2VsZWN0LCAjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpLG1ha2U6JChrLnRhcmdldCkuZmluZCgiI2JyYW5kU2VsZWN0RXgsICN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCksbW9kZWw6JChrLnRhcmdldCkuZmluZCgiI21vZGVsU2VsZWN0RXgsICN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpfX0pKTskLmV4dGVuZCghMCxlLGMpO3JldHVybiBlfWZ1bmN0aW9uIHIoZCl7dmFyIGM9e2NvdW50U2VhcmNoUmVzdWx0czpkLnZlaGljbGVDb3VudHx8MCxmaWx0ZXJTZWFyY2g6e3N0YXR1czoiTWl4ZWQiLAptYWtlOiJBbGwiLG1vZGVsOiJBbGwiLGNvbG9yOiJBbGwiLGRyaXZlVHJhaW46IkFsbCIsdHJpbToiQWxsIixib2R5U3R5bGU6IkFsbCIsZmVhdHVyZXM6IkFsbCIseWVhcjoiQWxsIixtaW5QcmljZTpudWxsLG1heFByaWNlOm51bGx9fTtkPSQuZXh0ZW5kKHt9LGQuZmlsdGVycyk7aWYoZC5oYXNPd25Qcm9wZXJ0eSgibWluWWVhciIpJiZkLmhhc093blByb3BlcnR5KCJtYXhZZWFyIikmJjAhPT1kLm1heFllYXImJjAhPT1kLm1pblllYXIpe3ZhciBrPWQubWluWWVhcixlPUFycmF5KGQubWF4WWVhci1rKzEpLmZpbGwoKS5tYXAoZnVuY3Rpb24odyx4KXtyZXR1cm4gayt4fSk7Yy5maWx0ZXJTZWFyY2gueWVhcj1lLmpvaW4oInwiKTtkZWxldGUgZC5tYXhZZWFyO2RlbGV0ZSBkLm1pblllYXJ9Y29uc29sZS5sb2coIkQyU0QgRmlsdGVyU2VhcmNoIixkKTtkLmhhc093blByb3BlcnR5KCJzdGF0dXMiKT8tMTxkLnN0YXR1cy5pbmRleE9mKCJjZXJ0aWZpZWQiKT9kLnN0YXR1cz0iQ1BPIjoKQXJyYXkuaXNBcnJheShkLnN0YXR1cykmJigtMTxkLnN0YXR1cy5pbmRleE9mKCJDUE8iKT9kLnN0YXR1cz0iQ1BPIjpkLnN0YXR1cz0xPT09ZC5zdGF0dXMubGVuZ3RoP2Quc3RhdHVzWzBdOiJNaXhlZCIpOmQuc3RhdHVzPSJNaXhlZCI7Y29uc29sZS5sb2coIkQyU0QgRmlsdGVyU2VhcmNoIEEiLGQpOyQoIiNkaWdpdGFsX2RhdGFfaW5mbyBpbnB1dFtuYW1lPXN0YXR1c10iKS52YWwoZC5zdGF0dXMpO2Zvcih2YXIgbSBpbiBkKWlmKGQuaGFzT3duUHJvcGVydHkobSkpaWYoZT1nLkVOVU0uZmlsdGVyU2VhcmNoLmhhc093blByb3BlcnR5KG0pLGRbbV1pbnN0YW5jZW9mIEFycmF5KXt2YXIgdT1kW21dOzAhPT11Lmxlbmd0aCYmKGUmJih1PXUubWFwKGZ1bmN0aW9uKHcpe3JldHVybiBxKCJmaWx0ZXJTZWFyY2guIittLHcsdyl9KSksYy5maWx0ZXJTZWFyY2hbbV09dS5qb2luKCJ8IikpfWVsc2UgdT1kW21dLDAhPT11JiYiIiE9PXUmJihlJiYodT1xKCJmaWx0ZXJTZWFyY2guIittLAp1LCIiKSksYy5maWx0ZXJTZWFyY2hbbV09dSk7Y29uc29sZS5sb2coIkQyU0QgRmlsdGVyU2VhcmNoIEIiLGMpO3JldHVybiBjfWZ1bmN0aW9uIGEoZCl7ZD0iQSI9PT1kWzBdLnRhZ05hbWU\/ZDpkLmZpbmQoImEiKTtpZihkLmF0dHIoInRpdGxlIikpe3ZhciBjPWQuYXR0cigidGl0bGUiKTtyZXR1cm4tMTxjLmluZGV4T2YoIi1iYW5uZXIwIil8fGQuZGF0YSgib2VtYmFubmVyIik\/KGM9bmV3IERhdGUsZD1jLnRvTG9jYWxlU3RyaW5nKCJkZWZhdWx0Iix7bW9udGg6ImxvbmcifSksYz1jLmdldEZ1bGxZZWFyKCksYCR7aC5saWJyYXJ5LmNsaWVudElEfV8ke2R9XyR7Y31fTW9udGhseV9PZmZlcmApOmN9cmV0dXJuKGM9ZC5hdHRyKCJocmVmIikpJiYtMTxjLmluZGV4T2YoImphdmFzY3JpcHQ6IikmJmQuZmluZCgiaW1nIikuYXR0cigiYWx0Iik\/ZC5maW5kKCJpbWciKS5hdHRyKCJhbHQiKTpjfWZ1bmN0aW9uIGwoZCxjKXtsZXQgaz1jLmNsb3Nlc3QoImRpdi5wcm9tb3MiKTtrPTA9PT0Kay5sZW5ndGg\/Yy5jbG9zZXN0KCJkaXYucHJvbW8tY2FyZC1vZW0iKTprO2M9e29mZmVyTmFtZTooay5maW5kKCIucHJvbW8tdGl0bGUiKS5sZW5ndGg\/ay5maW5kKCIucHJvbW8tdGl0bGUiKS50ZXh0KCk6ay5maW5kKCJoMiIpLnRleHQoKSkucmVwbGFjZSgvKFx0fFxufFxyKS9nLCIiKX07ay5kYXRhKCJleHBpcmUiKSYmKGMub2ZmZXJFeHBpcmU9ay5kYXRhKCJleHBpcmUiKSk7Im9mZmVyQ2xpY2siPT09ZCYmay5kYXRhKCJtb2RlbCIpJiYoJC5leHRlbmQoITAsYyx7b2ZmZXJDYXRlZ29yeToidmVoaWNsZSIsdmVoaWNsZU1vZGVsOmsuZGF0YSgibW9kZWwiKSx2ZWhpY2xlWWVhcjprLmRhdGEoInllYXIiKX0pLGsuYXR0cigiZ3JvdXB0YWIiKSYmKGMudmVoaWNsZUNhdGVnb3J5PWsuYXR0cigiZ3JvdXB0YWIiKSkpO3JldHVybiBjfWZ1bmN0aW9uIHEoZCxjLGspe3ZhciBlPWcuRU5VTSxtPWcuRU5VTV9BTFQsdT1nLk5PVF9DQVBJVEFMSVNFLHc9ZC5zcGxpdCgiLiIpLHg7Zm9yKHggaW4gdyl7aWYoIWUuaGFzT3duUHJvcGVydHkod1t4XSkpYnJlYWs7CmU9ZVt3W3hdXTttPW0uaGFzT3duUHJvcGVydHkod1t4XSk\/bVt3W3hdXTptO3U9dS5oYXNPd25Qcm9wZXJ0eSh3W3hdKT91W3dbeF1dOnV9aWYoIShlIGluc3RhbmNlb2YgQXJyYXkpKXJldHVybiBkZWJ1ZygiSW52YWxpZCBFbnVtIGtleSBwcm92aWRlZCIse2tleTpkLGVudW06Zy5FTlVNfSksaz9rOmM7bT09PWcuRU5VTV9BTFQmJihtPW51bGwpO3c9Yzt1IGluc3RhbmNlb2YgQXJyYXkmJi0xIT11LmluZGV4T2YoYyl8fCh3PWMudG9Mb3dlckNhc2UoKSx3PXcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdy5zbGljZSgxKSk7aWYoLTE8ZS5pbmRleE9mKHcpKXJldHVybiBlW2UuaW5kZXhPZih3KV07aWYobnVsbCE9PW0mJm0uaGFzT3duUHJvcGVydHkoYykpcmV0dXJuIG1bY107aWYoLTE8Zy5FTlVNX1BBUlRJQUwuaW5kZXhPZihkKSYmKGU9T2JqZWN0LmtleXMobSkuZmlsdGVyKE89Pi0xPGMuaW5kZXhPZihPKSkpKXJldHVybiBtW2VbMF1dO2RlYnVnKCJFbnVtIHZhbHVlIG5vdCBmb3VuZCwgdXNpbmcgZGVmYXVsdCBpbnN0ZWFkIiwKe2tleTpkLHZhbHVlOmMsZGVmYXVsdDprfSk7cmV0dXJuIGt9ZnVuY3Rpb24gdChkLGMpe3ZhciBrPSExLGU7Zm9yKGUgaW4gYylpZigtMTxkLmluZGV4T2YoY1tlXSkpe2s9ITA7YnJlYWt9cmV0dXJuIGt9dmFyIGc9dGhpcztnLmRhdGFDb250YWluZXI9JCgiI2RpZ2l0YWxfZGF0YV9pbmZvIik7Zy5zdGF0aWNEYXRhPWgucGFnZURhdGE7Zy5FTlVNPXt2ZWhpY2xlRGV0YWlsczp7c3RhdHVzOlsiTmV3IiwiVXNlZCIsIkNQTyJdLGZ1ZWxUeXBlOlsiR2Fzb2xpbmUiLCJEaWVzZWwiLCJFbGVjdHJpYyIsIkh5YnJpZCJdLHRyYW5zbWlzc2lvbjpbIkF1dG9tYXRpYyIsIk1hbnVhbCJdfSxmaWx0ZXJTZWFyY2g6e3N0YXR1czpbIk5ldyIsIlVzZWQiLCJDUE8iLCJNaXhlZCJdLGZ1ZWxUeXBlOlsiR2Fzb2xpbmUiLCJEaWVzZWwiLCJFbGVjdHJpYyIsIkh5YnJpZCJdfSxmb3JtT3B0aW46WyJpbi1pbXBsaWNpdCIsImluLWV4cGxpY2l0Iiwib3V0Il0sbGVhZFR5cGU6WyJsZWFkIiwiaGFuZHJhaXNlciIsCiJsZWFkfGhhbmRyYWlzZXIiXSxkaXNwbGF5VHlwZTpbImluLXBhZ2UiLCJtb2RhbCJdLHByZWZDb250YWN0OlsicGhvbmUiLCJlbWFpbCIsInRleHQiLCJvdGhlciJdLGNsaWNrVG9DYWxsRGVwYXJ0bWVudDpbIlNhbGVzIiwiU2VydmljZSIsIlBhcnRzIiwiT3RoZXIiXX07Zy5FTlVNX0FMVD17Zm9ybU9wdGluOntJbXBsaWNpdDoiaW4taW1wbGljaXQiLEV4cGxpY2l0OiJpbi1leHBsaWNpdCJ9LGNsaWNrVG9DYWxsRGVwYXJ0bWVudDp7TmV3OiJTYWxlcyIsVXNlZDoiU2FsZXMiLFNhbGVzdXNlZDoiU2FsZXMiLFNhbGVzbmV3OiJTYWxlcyIsU2FsZXNwYXJjOiJTYWxlcyIsU2FsZXN0cnVjazoiU2FsZXMiLEJvZHk6IlNlcnZpY2UiLFF1aWNrbGFuZToiU2VydmljZSJ9LGZpbHRlclNlYXJjaDp7c3RhdHVzOnsiVXNlZCB2ZWhpY2xlcyI6IlVzZWQiLHVzZWQ6IlVzZWQiLCJWw6loaWN1bGVzIGQnb2NjYXNpb24iOiJVc2VkIiwiZCdvY2Nhc2lvbiI6IlVzZWQiLG9jY2FzaW9uOiJVc2VkIiwKIk5ldyBJbnZlbnRvcnkiOiJOZXciLCJuZXciOiJOZXciLCJWw6loaWN1bGVzIG5ldWZzIjoiTmV3IixuZXVmOiJOZXcifSxmdWVsVHlwZTp7R2FzOiJHYXNvbGluZSJ9fSx2ZWhpY2xlRGV0YWlsczp7ZnVlbFR5cGU6e0dhczoiR2Fzb2xpbmUiLFVubGVhZGVkOiJHYXNvbGluZSIsIsOJbGVjdHJpcXVlIjoiRWxlY3RyaWMiLEVsZWN0cmlxdWU6IkVsZWN0cmljIixIeWJyaWRlOiJIeWJyaWQiLCJOLkQuIjoiR2Fzb2xpbmUiLCJOLkEuIjoiR2Fzb2xpbmUiLCJ7JENBUkZVRUxUWVBFfSI6Ikdhc29saW5lIn0sc3RhdHVzOnsiVXNlZCB2ZWhpY2xlcyI6IlVzZWQiLHVzZWQ6IlVzZWQiLCJWw6loaWN1bGVzIGQnb2NjYXNpb24iOiJVc2VkIiwiZCdvY2Nhc2lvbiI6IlVzZWQiLG9jY2FzaW9uOiJVc2VkIiwiTmV3IEludmVudG9yeSI6Ik5ldyIsIm5ldyI6Ik5ldyIsIlbDqWhpY3VsZXMgbmV1ZnMiOiJOZXciLG5ldWY6Ik5ldyJ9LHRyYW5zbWlzc2lvbjp7QXV0b21hdGlxdWU6IkF1dG9tYXRpYyIsCk1hbnVlbGxlOiJNYW51YWwiLGF1dG9tYXRpYzoiQXV0b21hdGljIixtYW51YWw6Ik1hbnVhbCJ9fX07Zy5FTlVNX1BBUlRJQUw9WyJ2ZWhpY2xlRGV0YWlscy50cmFuc21pc3Npb24iXTtnLk5PVF9DQVBJVEFMSVNFPXt2ZWhpY2xlRGV0YWlsczp7c3RhdHVzOlsiQ1BPIl19LGZpbHRlclNlYXJjaDp7c3RhdHVzOlsiQ1BPIl19LGxlYWRUeXBlOlsibGVhZCIsImhhbmRyYWlzZXIiLCJsZWFkfGhhbmRyYWlzZXIiXSxkaXNwbGF5VHlwZTpbImluLXBhZ2UiLCJtb2RhbCJdLHByZWZDb250YWN0OlsicGhvbmUiLCJlbWFpbCIsInRleHQiLCJvdGhlciJdfTtnLkZPUk1fVFlQRT17R0VUX1BSSUNFOiJHZXQgYSBRdW90ZSIsUVVPVEU6IkdldCBhIFF1b3RlIixNQUtFX09GRkVSOiJNYWtlIGFuIE9mZmVyIixNT1JFX0lORk86IlJlcXVlc3QgTW9yZSBJbmZvcm1hdGlvbiIsQ09OVEFDVF9VUzoiR2VuZXJhbCBDb250YWN0IixTUEVDSUFMX09GRkVSOiJTcGVjaWFscyIsVEVTVF9EUklWRToiVGVzdCBEcml2ZSIsClRSQURFX0lOOiJUcmFkZSBJbiIsU0VSVklDRToiQm9vayBBIFNlcnZpY2UiLFNDSEVEVUxFX1NFUlZJQ0U6IlNjaGVkdWxlIFNlcnZpY2UiLFBBUlRTOiJQYXJ0cyIsRU1QTE9ZTUVOVDoiRW1wbG95bWVudCIsQ1JFRElUOiJQYXltZW50IEVzdGltYXRvciIsU0hPV1JPT006IlZlaGljbGUgRmluZGVyIixDVVNUT006IkRlYWxlciBDdXN0b20iLFJFQ0FMTFM6IlJlY2FsbHMiLFRJUkVTOiJQYXJ0cyJ9O2cuYnVpbGQ9ZnVuY3Rpb24oZCxjLGspe2xldCBlPXt9LG09ay5pbmZvfHx7fSx1PSQobS50YXJnZXQpOyJwYWdldmlldyIhPT1jJiYkLmV4dGVuZCghMCxlLHtldmVudHM6Y30pO2lmKCJmaWx0ZXJTZWFyY2giIT09Y3x8ITAhPT1EKXtzd2l0Y2goYyl7Y2FzZSAicGFnZXZpZXciOiQuZXh0ZW5kKCEwLGUsZy5zdGF0aWNEYXRhLGIoKSk7ZS50cmFmZmljVHlwZT0kKCIjZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT10cmFmZmljX3R5cGVdIikudmFsKCk7LTE8WyJWZWhpY2xlIERldGFpbHMiLAoiTW9kZWwgU2hvd3Jvb20iXS5pbmRleE9mKGQpJiYkLmV4dGVuZCghMCxlLHt2ZWhpY2xlRGV0YWlsczpmKG51bGwpfSk7YnJlYWs7Y2FzZSAiY2xpY2tUb0NhbGwiOiQuZXh0ZW5kKCEwLGUse2NsaWNrVG9DYWxsRGVwYXJ0bWVudDpxKCJjbGlja1RvQ2FsbERlcGFydG1lbnQiLCQobS50YXJnZXR8fCIiKS5kYXRhKCJkZXBhcnRtZW50IiksIk90aGVyIil9KTticmVhaztjYXNlICJmb3JtU3VibWlzc2lvbiI6Y2FzZSAiZm9ybVNob3duIjpjYXNlICJmb3JtSW5pdGlhdGlvbiI6Y2FzZSAiZm9ybUZpZWxkSW50ZXJhY3Rpb24iOiQuZXh0ZW5kKCEwLGUscChjLGsuZXZlbnQsay5pbmZvKSk7YnJlYWs7Y2FzZSAicHJvbW9wb3B1cEJpbmRJbml0IjplLmV2ZW50cz0iZm9ybUluaXRpYXRpb24iOyQoIiNwcm9tb3BvcHVwIGZvcm0uZDJjZm9ybSIpLnByb3AoImlkIiwicHJvbW9wb3B1cC1mb3JtIik7JC5leHRlbmQoITAsZSxwKCJmb3JtSW5pdGlhdGlvbiIse2Zvcm1UeXBlOiJTcGVjaWFscyIsCmRpc3BsYXlUeXBlOiJtb2RhbCJ9LHtlbWFpbEhhbmRsZXI6e19fbGVhZGlkOiJTcGVjaWFscyIsY29uc2VudFR5cGU6IiJ9LHRhcmdldDokKCIjcHJvbW9wb3B1cCBmb3JtLmQyY2Zvcm0iKSxtYWlsSWQ6IlByb21vUG9wdXAifSkpO2JyZWFrO2Nhc2UgInByb21vcG9wdXBTdWJtaXNzaW9uIjplLmV2ZW50cz0iZm9ybVN1Ym1pc3Npb24iOyQoIiNwcm9tb3BvcHVwIGZvcm0uZDJjZm9ybSIpLnByb3AoImlkIiwicHJvbW9wb3B1cC1mb3JtIik7JC5leHRlbmQoITAsZSxwKCJmb3JtU3VibWlzc2lvbiIse2Zvcm1UeXBlOiJTcGVjaWFscyIsZGlzcGxheVR5cGU6Im1vZGFsIn0se2VtYWlsSGFuZGxlcjp7X19sZWFkaWQ6IlNwZWNpYWxzIixjb25zZW50VHlwZToiIn0sdGFyZ2V0OiQoIiNwcm9tb3BvcHVwIGZvcm0uZDJjZm9ybSIpLG1haWxJZDoiUHJvbW9Qb3B1cCJ9KSk7YnJlYWs7Y2FzZSAiZmlsdGVyU2VhcmNoIjokLmV4dGVuZCghMCxlLHIobSkpO0Q9ITA7c2V0VGltZW91dCgoKT0+CntEPSExfSwzRTMpO2JyZWFrO2Nhc2UgInR5cGVkU2VhcmNoIjpkPWsuZXZlbnQudHlwZWRTZWFyY2g\/ay5ldmVudC50eXBlZFNlYXJjaDp1LnZhbCgpOyQuZXh0ZW5kKCEwLGUse3R5cGVkU2VhcmNoQ29udGVudDpkLnRyaW0oKS5zcGxpdCgiICIpLmpvaW4oInwiKX0pO2JyZWFrO2Nhc2UgImNhcm91c2VsQ2xpY2siOiQuZXh0ZW5kKCEwLGUse2Nhcm91c2VsQ2xpY2s6e2Fzc2V0UG9zaXRpb246dS5pbmRleCgpLGFzc2V0TmFtZTphKHUpfX0pO2JyZWFrO2Nhc2UgImJyb2NodXJlRG93bmxvYWQiOiQuZXh0ZW5kKCEwLGUse2Jyb2NodXJlTmFtZTokKCIjcG9wdXBUZWNoU3BlY3NEaXYgI3ByaW50UGFnZSIpLmF0dHIoImhyZWYiKX0pO2JyZWFrO2Nhc2UgInNlcnZpY2VPZmZlckNsaWNrIjpjYXNlICJvZmZlckNsaWNrIjplW2NdPWwoYyx1KTticmVhaztkZWZhdWx0OiQuZXh0ZW5kKCEwLGUsay5ldmVudCl9MDw9WyJmb3JtU3VibWlzc2lvbiJdLmluZGV4T2YoYykmJihDPSEwLHNldFRpbWVvdXQoKCk9Pgp7Qz0hMX0sNUUzKSk7cmV0dXJuIGV9fTtyZXR1cm4gZ307KGZ1bmN0aW9uKCl7Y29uc29sZS5kZWJ1ZygiU0QgOjogVXNlciBoYXMgY29uc2VudGVkIHRvIHRyYWNraW5nLCBpbml0aWFsaXppbmcgc2hpZnQgZGlnaXRhbCIpO0koKTtsZXQgYj0kKCIjZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT1zdGF0dXNdIik7aWYoInskU0RWRUhJQ0xFU1RBVFVTfSI9PWIudmFsKCkpe3ZhciBmPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b0xvd2VyQ2FzZSgpO2IudmFsKC91c2VkLy50ZXN0KGYpfHwvb2NjYXNpb24vLnRlc3QoZik\/IlVzZWQiOiJOZXciKTsiVXNlZCI9PWIudmFsKCkmJjA8JCgiI3RvcGNhcmlkIikubGVuZ3RoJiYiIiE9JCgiI3RvcGNhcmlkIikudmFsKCk\/KGY9Ii9qcy9qc29uLyIrJCgiI3RvcGNhcmlkIikudmFsKCkrIi5qc29uIiwkLmdldChmKS5kb25lKGZ1bmN0aW9uKHApe3A9cC5tYWtlY2VydCsiIjsiMjEiIT1wJiYiMCIhPXAmJmIudmFsKCJDUE8iKTt6KCl9KS5mYWlsKGZ1bmN0aW9uKCl7eigpfSkpOgp6KCl9ZWxzZSB6KCl9KSgpfTsKLyoqIC9tL2pzL2QyY19kaWdpdGFsX3JldGFpbF9zaGlmdC5qcyAqKi8KdmFyIF9fX2QyY19kMmNkaWdpdGFscmV0YWlsc2hpZnRqc19jX29uPSIyMDI2LTA0LTAxIDEyOjMwOjAzIjsndXNlIHN0cmljdCc7ZnVuY3Rpb24gRDJEUihuLHAscSl7Y29uc29sZS5sb2coIkQyRFIgU3RhcnRpbmcgUm91bmQgMi4uLiIsbixwLHEpO3ZhciBkPXRoaXM7ZC5saWJyYXJ5PSQuZXh0ZW5kKCEwLG4se2xvYWRlZDohMX0pO2QucGFnZURhdGE9cDtkLnNldHRpbmdzPXE7ZC5kckluaXRpYWxDbGljaz0hMTt2YXIgbD1kLmxhc3REclRhYj0hMSxoPXt9LHQ9WyJWZWhpY2xlIERldGFpbHMiLCJNb2RlbCBTaG93cm9vbSJdLGU9e3BhZ2VUeXBlOiJEaWdpdGFsIFJldGFpbGluZyIsZGlnUmV0OntwcmljZVVubG9ja2VkOiEwLGRlYWxJZDoiIixwcm92aWRlcjoiRDJDTUVESUEiLHZlaGljbGVZZWFyOiQoIiNkaWdpdGFsX2RhdGFfaW5mbyA+IGlucHV0W25hbWU9J3llYXInXSIpLnZhbCgpLHZlaGljbGVNYWtlOiQoIiNkaWdpdGFsX2RhdGFfaW5mbyA+IGlucHV0W25hbWU9J21ha2UnXSIpLnZhbCgpLHZlaGljbGVNb2RlbDokKCIjZGlnaXRhbF9kYXRhX2luZm8gPiBpbnB1dFtuYW1lPSdtb2RlbCddIikudmFsKCksCnZlaGljbGVWaW46JCgiI2RpZ2l0YWxfZGF0YV9pbmZvID4gaW5wdXRbbmFtZT0ndmluJ10iKS52YWwoKSx2ZWhpY2xlU3RhdHVzOiQoIiNkaWdpdGFsX2RhdGFfaW5mbyA+IGlucHV0W25hbWU9J3N0YXR1cyddIikudmFsKCl9LGV2ZW50czoiIn0sdT17ZHJUcmFkZUluU3RhcnQ6IiN0cmFkZUluQmFyLCAjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIHNlbGVjdCwgI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciBpbnB1dCIsZHJBcHB0U2NoZWRTdGFydDoiI2xlYWREZWFsZXJBcHBvaW50bWVudCBpbnB1dCwgI2xlYWREZWFsZXJBcHBvaW50bWVudCAuZmxhdHBpY2tyLWRheSwgI21vZGFsRGVhbGVyQXBwb2ludG1lbnQgaW5wdXQsICNtb2RhbERlYWxlckFwcG9pbnRtZW50IC5mbGF0cGlja3ItZGF5IixkckxlYWRGb3JtU3RhcnQ6IiNtdWx0aWZvcm1fZW1iZWRkZWRfYnRuXzEiLGRyUHJlUVNob3duOiIjRmluYW5jZUFjdGlvbkJveF9wb3B1cCIsZHJQcmVRU3RhcnQ6IiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dCwgI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgaW5wdXQiLApkclBheW1lbnRDYWxjU3RhcnQ6IiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIGlucHV0LCAjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciBzZWxlY3QsICNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIHRleHRhcmVhIn0sdj17ZHJBZGRUb0NhcnQ6IiNidWlsZE9wdGlvbnNDb250ZW50IC5zZWxlY3RvcklucHV0LCAucHJvdGVjdGlvbnBsYW4tYWN0aW9uID4gYnV0dG9uLCAuYWNjLWNhcmQgLmFjYy1hY3Rpb24gPiBidXR0b24sIC5idWlsZE9wdGlvbiAuc2VsZWN0b3JJbnB1dCIsZHJBY2Nlc3Nvcmllc1Nob3duOicudmVoaWNsZUNvbmZpZ3VyYXRvckRSIGJ1dHRvbltkYXRhLXN0ZXA9Im9wdGlvbnMiXSwgLnZlaGljbGVDb25maWd1cmF0b3JEUiBidXR0b25bZGF0YS1zdGVwPSJhY2Nlc3NvcmllcyJdJyxkclRyYWRlSW5TaG93bjoiI3RyYWRlSW5CYXJOZXdWRFBCdXR0b24sICN0cmFkZUluQnRuIixkckZpU2hvd246Jy52ZWhpY2xlQ29uZmlndXJhdG9yRFIgYnV0dG9uW2RhdGEtc3RlcD0icHJvdGVjdGlvbnBsYW4iXScsCmRyUGF5bWVudENhbGNGaW5pc2g6IiNwYXltZW50Q2FsY3VsYXRvckNhbGxUb0FjdGlvbkNvbnRhaW5lciBhLnByb21vQlROIixkMmNfZHJBZGRGaW5pc2g6IiNidWlsZEFuZFByaWNlRFJUYWIgPiBidXR0b24iLGRyUHJlUVNob3duOiIjTW9udGhseVBheW1lbnRzQnRuIixkclBheW1lbnRDYWxjU2hvd246Ii5wYXltZW50Q2FsY3VsYXRvclZEUCJ9LHc9e2RyUGF5bWVudENhbGNTaG93bjoiY3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0IixkckFwcHRTY2hlZFNob3duOiJkZWFsZXJBcHBvaW50bWVudC5zdGFydCJ9LHI9e2RyVHJhZGVJblNob3duOiIjdHJhZGVJbkJhciIsZHJBY2Nlc3Nvcmllc1Nob3duOiIjYnVpbGRPcHRpb25zQ29udGVudCIsZHJMZWFkRm9ybVNob3duOiIjbXVsdGlmb3JtX2VtYmVkZGVkIn07c2VsZi5iaW5kRXZlbnRzPWZ1bmN0aW9uKCl7JC5lYWNoKHUsZnVuY3Rpb24oYSxiKXthPXNlbGYuc3BlY1NlbGVjdChiLGEpO2NvbnNvbGUubG9nKCJEMkRSIFNpbmdsZSBNYXAgU3RhcnQiLAphLGIpOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsYixmdW5jdGlvbigpe2lmKCEwPT09aFthXSlyZXR1cm4hMDtsZXQgYz1zZWxmLmJ1aWxkRGF0YUxheWVyKGEsJCh0aGlzKSk7c2VsZi5zZW5kKGMsJChiKSk7aFthXT0hMH0pfSk7JC5lYWNoKHYsZnVuY3Rpb24oYSxiKXthPXNlbGYuc3BlY1NlbGVjdChiLGEpO2NvbnNvbGUubG9nKCJEMkRSIE11bHRpcGxlIE1hcCBTdGFydCIsYSxiKTskKGRvY3VtZW50KS5vbigiY2xpY2siLGIsZnVuY3Rpb24oKXtpZighMD09PWwpcmV0dXJuITA7bGV0IGM9c2VsZi5idWlsZERhdGFMYXllcihhLCQodGhpcykpO3NlbGYuc2VuZChjLCQoYikpO3NlbGYuZXZlbnRMb2NrZXIoNTAwKX0pfSk7JC5lYWNoKHcsZnVuY3Rpb24oYSxiKXskKGRvY3VtZW50KS5vbihiLGZ1bmN0aW9uKCl7aWYoc2VsZi5ldmVudExvZ2dlcihhKSlyZXR1cm4hMDtsZXQgYz1zZWxmLmJ1aWxkRGF0YUxheWVyKGEsITEpO3NlbGYuc2VuZChjLCExKX0pfSk7Y29uc29sZS5sb2coIkQyRFIgVmlzaWJsZSBNYXAgU3RhcnQiLApyKTskLmVhY2gocixmdW5jdGlvbihhLGIpe2NvbnN0IGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihiKTtpZighYylyZXR1cm4hMDskKGRvY3VtZW50KS5vbigic2Nyb2xsIHJlc2l6ZSBsb2FkIiwkKGIpLGZ1bmN0aW9uKCl7aWYoc2VsZi5ldmVudExvZ2dlcihhKSlyZXR1cm4hMDt2YXIgZj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOzA8PWYudG9wJiYwPD1mLmxlZnQmJmYuYm90dG9tPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSYmZi5yaWdodDw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpJiYoZj1zZWxmLmJ1aWxkRGF0YUxheWVyKGEsITEpLHNlbGYuc2VuZChmLCExKSl9KX0pOyQoZG9jdW1lbnQpLm9uKCJlbWFpbEhhbmRsZXIuZW1haWxTZW50IixmdW5jdGlvbihhLGIpe2E9c2VsZi5idWlsZEVtYWlsRGF0YUxheWVyKGIpOyExPT09IWEmJnNlbGYuc2VuZChhLAohMSl9KX07c2VsZi5zZXREZWFsSWQ9ZnVuY3Rpb24oYT0hMSl7bGV0IGI9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImQyZHJfZGVhbElkIik7YiYmIWE\/ZS5kaWdSZXQuZGVhbElkPWI6KGE9TWF0aC5mbG9vcigxRTExKzlFMTEqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoKSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZDJkcl9kZWFsSWQiLGEpLGUuZGlnUmV0LmRlYWxJZD1hKX07c2VsZi5ldmVudExvY2tlcj1mdW5jdGlvbihhKXtsPSEwO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsPSExfSxhKX07c2VsZi5ldmVudExvZ2dlcj1mdW5jdGlvbihhKXtpZihoW2FdKXJldHVybiEwO2hbYV09ITA7cmV0dXJuITF9O3NlbGYuYnVpbGREYXRhTGF5ZXI9ZnVuY3Rpb24oYSxiKXsiZHJBY2Nlc3Nvcmllc1Nob3duIj09YXx8ImRyRmlTaG93biI9PWE\/ZC5sYXN0RHJUYWI9ImRyQWNjZXNzb3JpZXNTaG93biI9PWE\/ImRyQWNjZXNzb3JpZXNGaW5pc2giOiJkckZpRmluaXNoIjoiZDJjX2RyQWRkRmluaXNoIj09CmEmJighMSE9PWQubGFzdERyVGFiJiYoYT1kLmxhc3REclRhYiksZC5sYXN0RHJUYWI9ITEpO2UuZXZlbnRzPWE7c3dpdGNoKGEpe2Nhc2UgImRySW5pdGlhbENsaWNrIjpiJiYoZS5kaWdSZXQuY2xpY2tUZXh0PWIudGV4dCgpLnRyaW0oKSk7YnJlYWs7Y2FzZSAiZHJJbXByZXNzaW9uIjpiJiYoZS5kaWdSZXQuaW1wcmVzc2lvblRleHQ9Yi50ZXh0KCkudHJpbSgpKTticmVhaztjYXNlICJkckFjY2Vzc29yaWVzU2hvd24iOmNhc2UgImRyQWNjZXNzb3JpZXNGaW5pc2giOmNhc2UgImRyUGF5bWVudENhbGNTaG93biI6Y2FzZSAiZHJQYXltZW50Q2FsY0ludGVyYWN0aW9uIjpjYXNlICJkclBheW1lbnRDYWxjRmluaXNoIjpjYXNlICJkckFwcHRTY2hlZFNob3duIjpjYXNlICJkckFwcHRTY2hlZFN0YXJ0IjpjYXNlICJkckFwcHRTY2hlZEZpbmlzaCI6Y2FzZSAiZHJQcmVRU2hvd24iOmNhc2UgImRyUHJlUVN0YXJ0IjpjYXNlICJkclByZVFGaW5pc2giOmNhc2UgImRyQ3JlZGl0QXBwU2hvd24iOmNhc2UgImRyQ3JlZGl0QXBwU3RhcnQiOmNhc2UgImRyQ3JlZGl0QXBwRmluaXNoIjplLmRpZ1JldC5kZWFsVHlwZT0KIkZpbmFuY2UiO2JyZWFrO2Nhc2UgImRyT2ZmZXJBZGRlZCI6ZS5kaWdSZXQuZGVhbFR5cGU9IkZpbmFuY2UiO2UuZGlnUmV0Lm9mZmVyTmFtZT0iU2VuZCBNZSBZb3VyIE9mZmVyIjtlLmRpZ1JldC5vZmZlclR5cGU9IkZpbmFuY2UiO2JyZWFrO2Nhc2UgImRyQWRkVG9DYXJ0IjphPSJhY2Nlc3NvcmllcyI9PSQoIiNidWlsZEFuZFByaWNlRFJUYWIgPiBidXR0b24uYnRuLWJsYWNrIikuYXR0cigiZGF0YS1zdGVwIik\/IkFjY2Vzc29yaWVzIjoiRkkiO2xldCBjPSIiOyJ1bmRlZmluZWQiIT09dHlwZW9mIGIucHJvcCgidmFsdWUiKT9jPWIudmFsKCk6MDxiLmNsb3Nlc3QoIi5hY2MtY2FyZCIpPyhiPWIuY2xvc2VzdCgiLmFjYy1jYXJkIiksYz0kKCIuYWNjLWRlc2MgLnByaWNlRGl2IixiKS50ZXh0KCkpOjA8Yi5jbG9zZXN0KCIuYnVpbGRPcHRpb25DYXRlZ29yeSIpJiYoYj1iLmNsb3Nlc3QoIi5idWlsZE9wdGlvbkNhdGVnb3J5IiksYz0kKCIubWFpblRleHQiLGIpLnRleHQoKSk7CmUuZGlnUmV0LmFkZE9uTmFtZT1jO2UuZGlnUmV0LmFkZE9uVHlwZT1hfXJldHVybiBlfTtzZWxmLmJ1aWxkRW1haWxEYXRhTGF5ZXI9ZnVuY3Rpb24oYSl7bGV0IGI9ZTtiLmRpZ1JldC52ZWhpY2xlWWVhcj1hLnllYXI7Yi5kaWdSZXQudmVoaWNsZU1ha2U9YS5tYWtlO2IuZGlnUmV0LnZlaGljbGVNb2RlbD1hLm1vZGVsO2IuZGlnUmV0LnZlaGljbGVWaW49YS52aW47Yi5kaWdSZXQudmVoaWNsZVN0YXR1cz1hLmNvbmRpdGlvbjtzd2l0Y2goYS5tYWlsSUQpe2Nhc2UgIlByaWNlVmVoaWNsZSI6Y2FzZSAiUHJpY2VWZWhpY2xlQWNjdXRyYWRlIjpjYXNlICJQcmljZVZlaGljbGVOZXciOmNhc2UgIlRyYWRlLWluIjpjYXNlICJUcmFkZS1pbiByZXF1ZXN0IjpjYXNlICJwcmljZXZlaGljbGVuZXciOmNhc2UgInByaWNldmVoaWNsZXVzZWQiOmNhc2UgInByaWNldmVoaWNsZSI6Yi5ldmVudHM9c2VsZi5zcGVjU2VsZWN0KGEubWFpbElELCJkclRyYWRlSW5GaW5pc2giKTticmVhaztjYXNlICJNb250aGx5UGF5bWVudHMiOmNhc2UgIk1vbnRobHlQYXltZW50c19ORVciOmIuZXZlbnRzPQoiZHJQcmVRRmluaXNoIjticmVhaztjYXNlICJEZWFsZXJBcHBvaW50bWVudCI6Yi5ldmVudHM9ImRyQXBwdFNjaGVkRmluaXNoIjticmVhaztjYXNlICJDcmVkaXRCb29zdE11bHRpIjpjYXNlICJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0SW5zdGFudCI6Yi5ldmVudHM9ImRyUHJlUUZpbmlzaCI7YnJlYWs7Y2FzZSAiUmVxdWVzdCBmb3IgYmVzdCBvZmZlciAtIFNNUyI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6Yi5ldmVudHM9ImRyUGF5bWVudENhbGNGaW5pc2giO2JyZWFrO2Nhc2UgIkNyZWRpdFJlcXVlc3RfU2hvcnQiOmNhc2UgIkNyZWRpdFNjb3JlIjpiLmV2ZW50cz0iZHJDcmVkaXRBcHBGaW5pc2giO2JyZWFrO2Nhc2UgIk11bHRpRm9ybV9TTVMiOmIuZXZlbnRzPSJkckxlYWRGb3JtRmluaXNoIjticmVhaztjYXNlICJTYXZlQnVpbGQiOmIuZXZlbnRzPSJkckRyb3BTYXZlIjtiLmRpZ1JldC5kZWFsVHlwZT0iRmluYW5jZSI7YnJlYWs7ZGVmYXVsdDpiPSExfXJldHVybiBifTsKc2VsZi50cmlnZ2VyRm9sbG93dXBFdmVudD1mdW5jdGlvbihhLGIpe307c2VsZi5zcGVjU2VsZWN0PWZ1bmN0aW9uKGEsYil7bGV0IGM9JCgiI29lbUNlcnRpZmljYXRpb24iKS52YWwoKTthLmluY2x1ZGVzKCIjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXIgaW5wdXQiKSYmKGE9IiNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lciBpbnB1dCIpO2EuaW5jbHVkZXMoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIGlucHV0IikmJihhPSIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciBpbnB1dCIpO3N3aXRjaChhKXtjYXNlICJNb250aGx5UGF5bWVudHMiOmNhc2UgIk1vbnRobHlQYXltZW50c19ORVciOjEwMDk9PWMmJihiPSJkclBheW1lbnRDYWxjRmluaXNoIik7YnJlYWs7Y2FzZSAiI01vbnRobHlQYXltZW50c0J0biI6MTAwOT09YyYmKGI9ImRyUGF5bWVudENhbGNTaG93biIpO2JyZWFrO2Nhc2UgIiNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lciBpbnB1dCI6MTAwOT09CmMmJihiPSJkclBheW1lbnRDYWxjU3RhcnQiKTticmVhaztjYXNlICIucGF5bWVudENhbGN1bGF0b3JWRFAiOjEwMTQ9PWMmJihiPSJkclByZVFTaG93biIpO2JyZWFrO2Nhc2UgIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIGlucHV0IjoxMDE0PT1jJiYoYj0iZHJQcmVRU3RhcnQiKTticmVhaztjYXNlICIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIgYS5wcm9tb0JUTiI6MTAxND09YyYmKGI9ImRyUHJlUUZpbmlzaCIpfXJldHVybiBifTtzZWxmLnBhZ2VWaWV3PWZ1bmN0aW9uKCl7ZS5ldmVudHM9InBhZ2V2aWV3IjtzZWxmLnNlbmQoZSwhMSl9O3NlbGYuaW1wcmVzc2lvbj1mdW5jdGlvbihhKXtlLmV2ZW50cz0iZHJJbXByZXNzaW9uIjtzZWxmLnNlbmQoZSwhMSl9O3NlbGYuc2VuZD1mdW5jdGlvbihhLGIpe2xldCBjPWEuZXZlbnRzO2NvbnNvbGUubG9nKCJEMkRSIC0gU2VuZGluZyB0byBkYXRhTGF5ZXIiLGEsYS5ldmVudHMpOyExPT09ZC5kckluaXRpYWxDbGljayYmCiJkckltcHJlc3Npb24iIT09YyYmInBhZ2V2aWV3IiE9PWMmJihkLmRySW5pdGlhbENsaWNrPSEwLGI9c2VsZi5idWlsZERhdGFMYXllcigiZHJJbml0aWFsQ2xpY2siLGIpLHNkKCJkYXRhTGF5ZXIiLGIpLHNkKCJzZW5kIikpO3NkKCJkYXRhTGF5ZXIiLGEpO3NkKCJzZW5kIik7c2VsZi5zZXREZWFsSWQoITApO3NlbGYudHJpZ2dlckZvbGxvd3VwRXZlbnQoYyxhKX07c2VsZi5pbmplY3RTRD1mdW5jdGlvbigpe2QubGlicmFyeS5sb2FkZWR8fChmdW5jdGlvbihhLGIsYyxmLGcsayxtKXthLlNoaWZ0QW5hbHl0aWNzT2JqZWN0PWc7YVtnXT1hW2ddfHxmdW5jdGlvbigpeyhhW2ddLnE9YVtnXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfTthW2ddLmw9MSpuZXcgRGF0ZTtrPWIuY3JlYXRlRWxlbWVudChjKTttPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYylbMF07ay5hc3luYz0xO2suc3JjPWY7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLG0pfSh3aW5kb3csZG9jdW1lbnQsInNjcmlwdCIsCmQubGlicmFyeS5saWJyYXJ5SlMsInNkIiksc2QoImNyZWF0ZSIsZC5saWJyYXJ5LmNsaWVudElELGQubGlicmFyeS5yZXRhaWxlcklELGQubGlicmFyeS5wcm92aWRlcklEKSxkLmxpYnJhcnkubG9hZGVkPSEwKX07c2V0VGltZW91dChmdW5jdGlvbigpe2NvbnN0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO2ZvcihsZXQgYj0wO2I8YS5sZW5ndGg7YisrKWFbYl0uc3JjLmluY2x1ZGVzKCJzaGlmdGRpZ2l0YWxhcHBzLmlvIikmJihkLmxpYnJhcnkubG9hZGVkPSEwKTt0LmluY2x1ZGVzKGQucGFnZURhdGEucGFnZVR5cGUpJiYhMD09PWQucGFnZURhdGEuR0VORVJBTF9FTkFCTEVfVFJBTlNBQ1RJT05fQlVJTERFUiYmKHNlbGYuaW5qZWN0U0QoKSxzZWxmLnNldERlYWxJZCghMCksc2VsZi5iaW5kRXZlbnRzKCksc2V0VGltZW91dChmdW5jdGlvbigpe3NlbGYucGFnZVZpZXcoKX0sNTAwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2VsZi5pbXByZXNzaW9uKCl9LAo2MDApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXskKGRvY3VtZW50KS50cmlnZ2VyKCJzY3JvbGwiKX0sNzUwKSl9LDEyNTApfTsKLyoqIC9tL2pzL2QyY19hc2NfZ2E0LmpzICoqLwp2YXIgX19fZDJjX2QyY2FzY2dhNGpzX2Nfb249IjIwMjYtMDQtMTYgMTM6MzA6MDQiOyd1c2Ugc3RyaWN0Jzt2YXIgYXNjVG9wQ2FyRGV0YWlscz0hMSxhc2NMYXN0U2VhcmNoRmlsdGVyU29ydD0hMSxhc2NMYXN0RmlsdGVyQ2xpY2s9ITEsYXNjTGFzdEN0YUNsaWNrPSExO2Z1bmN0aW9uIGQyYXNjUHVibGljYXRpb25EYXRlKGQpe2lmKCIiPT1kKXJldHVybiIiO3ZhciBnPW5ldyBEYXRlKGQpO2Q9IiIrKGcuZ2V0TW9udGgoKSsxKTt2YXIgaz0iIitnLmdldERhdGUoKTtnPWcuZ2V0RnVsbFllYXIoKTsxMD5wYXJzZUZsb2F0KGQpJiYoZD0iMCIrZCk7MTA+cGFyc2VGbG9hdChrKSYmKGs9IjAiK2spO3JldHVybltkLGssZ10uam9pbigiLyIpfWZ1bmN0aW9uIGVuc3VyZVRydXRoeShkKXtyZXR1cm4gZD9kOiIifQpmdW5jdGlvbiBhc2NVcGRhdGVUb3BDYXJEYXRhKGQpe2lmKCExIT09ZCl7bGV0IGc9ZDJhc2NQdWJsaWNhdGlvbkRhdGUoZW5zdXJlVHJ1dGh5KGQuZGF0ZV9saXN0aW5nKSksaz1kLm1ha2VjZXJ0KyIiO2FzY1RvcENhckRldGFpbHM9e2l0ZW1faWQ6ZW5zdXJlVHJ1dGh5KGQuTklWKSxpdGVtX251bWJlcjplbnN1cmVUcnV0aHkoZC5pZCksaXRlbV9wcmljZTplbnN1cmVUcnV0aHkoZC5wcmljZSksaXRlbV9jb25kaXRpb246ZW5zdXJlVHJ1dGh5KGQudmNhdGVnb3J5KS50b0xvd2VyQ2FzZSgpLGl0ZW1feWVhcjplbnN1cmVUcnV0aHkoZC55ZWFyKS50b0xvd2VyQ2FzZSgpLGl0ZW1fbWFrZTplbnN1cmVUcnV0aHkoZC5tYWtlKS50b0xvd2VyQ2FzZSgpLGl0ZW1fbW9kZWw6ZW5zdXJlVHJ1dGh5KGQubW9kZWwpLnRvTG93ZXJDYXNlKCksaXRlbV92YXJpYW50OmVuc3VyZVRydXRoeShkLnZlcnNpb24pLnRvTG93ZXJDYXNlKCksaXRlbV9jb2xvcjplbnN1cmVUcnV0aHkoZC5jb2xvcikudG9Mb3dlckNhc2UoKSwKaXRlbV90eXBlOmVuc3VyZVRydXRoeShkLmJvZHlUeXBlSUQpLnRvTG93ZXJDYXNlKCksaXRlbV9jYXRlZ29yeTplbnN1cmVUcnV0aHkoIiIpLGl0ZW1fZnVlbF90eXBlOmVuc3VyZVRydXRoeShkLnZjYXJidXJhbnQpLnRvTG93ZXJDYXNlKCksaXRlbV9pbnZlbnRvcnlfZGF0ZTplbnN1cmVUcnV0aHkoZyl9OyIyMSIhPWsmJiIwIiE9ayYmZDJhc2Muc2V0VmVoaWNsZVN0YXR1cygiQ1BPIil9ZWxzZSBkPSQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8iKSxhc2NUb3BDYXJEZXRhaWxzPXtpdGVtX2NvbmRpdGlvbjoibmV3IixpdGVtX3llYXI6JCgiaW5wdXRbbmFtZT0neWVhciddIixkKS52YWwoKSxpdGVtX21ha2U6JCgiaW5wdXRbbmFtZT0nbWFrZSddIixkKS52YWwoKSxpdGVtX21vZGVsOiQoImlucHV0W25hbWU9J21vZGVsJ10iLGQpLnZhbCgpLGl0ZW1fdHlwZTokKCJpbnB1dFtuYW1lPSd2ZWhpY2xlQ2F0ZWdvcnknXSIsZCkudmFsKCl9O2NvbnNvbGUubG9nKCJHQTQgYXNjVG9wQ2FyRGV0YWlscyIsCmFzY1RvcENhckRldGFpbHMpfQpmdW5jdGlvbiBkMmFzY1Jlc29sdmVQYWdlSWQoZCl7ZD1kLnJlcGxhY2UoLzxcLz9bXj5dKyg+fCQpL2csIiIpO2lmKGQuaW5jbHVkZXMoInNpOnZscyIpKXJldHVybiJzZWFyY2ggaW52ZW50b3J5IjtpZihkLmluY2x1ZGVzKCI6c2k6dmVoaWNsZSBkZXRhaWxzIil8fGQuaW5jbHVkZXMoInZlaGljbGUiKSlyZXR1cm4idmRwIjtpZihkLmluY2x1ZGVzKCJjdXN0b206IikpcmV0dXJuImJsb2ciO2lmKGQuaW5jbHVkZXMoImZpbmFuY2UiKSlyZXR1cm4iY3JlZGl0IjtpZihkLmluY2x1ZGVzKCJzZXJ2aWNlOnJlcXVlc3QgYXBwb2ludG1lbnQiKSlyZXR1cm4icmVxdWVzdCBhcHBvaW50bWVudCI7aWYoZC5pbmNsdWRlcygic2VydmljZTpvcmRlciBwYXJ0cyIpKXJldHVybiJvcmRlciBwYXJ0cyI7aWYoZC5pbmNsdWRlcygiYWJvdXQgdXM6Y29udGFjdCB1cyIpKXJldHVybiJjb250YWN0IHVzIjtpZihkLmluY2x1ZGVzKCJVTktOT1dOIikpe2lmKC9idWlsZC1hbmQtcHJpY2UvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKXx8L2NvbmZpZ3VyYXRpb24tZXQtcHJpeC8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKXJldHVybiJidWlsZCBhbmQgcHJpY2UiOwppZigvcHJpY2UtbmV3Ly50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl8fC9wcml4LW5ldWYvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4icHJpY2UgcmVxdWVzdCI7aWYoL2Jyb2NodXJlcy8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKXJldHVybiJicm9jaHVyZSI7aWYoL2F1dG8tam9icy8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpfHwvZW1wbG9pcy1hdXRvbW9iaWxlLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuImpvYnMiO2lmKC9vdXJ0ZWFtLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl8fC9lcXVpcGUvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4ib3VyIHRlYW0ifXJldHVybiBkfQpmdW5jdGlvbiBkMmFzY1Jlc29sdmVMZWFkVHlwZShkLGcpe2c9Zy50b0xvd2VyQ2FzZSgpO2xldCBrPXt9O2Zvcih2YXIgbCBpbiBkKWtbbC50b0xvd2VyQ2FzZSgpXT1kW2xdO2w9JCgiaHRtbCIpLmF0dHIoImxhbmciKTtkPSIiO2w9ImVuIj09bC50b0xvd2VyQ2FzZSgpfHwiZW5nIj09bC50b0xvd2VyQ2FzZSgpPyJFTkdMSVNIIjoiRlJFTkNIIjt2b2lkIDAhPT1rW2ddJiZ2b2lkIDAhPT1rW2ddW2xdJiYoZD1rW2ddW2xdKTtyZXR1cm4gZH0KZnVuY3Rpb24gRDJBU0MoZCl7ZC5wYWdlSWRPcmc9ZC5wYWdlSWQ7ZC5wYWdlSWQ9ZDJhc2NSZXNvbHZlUGFnZUlkKGQucGFnZUlkKTtkLmRlYWxlcl9uYW1lPSQoIiNoaWRkZW5EZWFsZXJOYW1lIikudmFsKCk7dmFyIGc9e3N0b3JlX25hbWU6ZC5kZWFsZXJfbmFtZS50b0xvd2VyQ2FzZSgpLG9lbV9jb2RlOmQucGFDb2RlLG9lbV9icmFuZDpkLmNsaWVudCxhZmZpbGlhdGlvbjoiIixsYW5ndWFnZTpkLnVzZXJMYW5ndWFnZSxjdXJyZW5jeToiY2FkIixwYWdlX3R5cGU6ZC5wYWdlSWQsaXRlbXM6W10sZXZlbnRzOltdLG1lYXN1cmVtZW50X2lkczpbIkctNkdFWjJXV1QzTCJdLHBsYXRmb3JtX2N1c3RvbToiIn0saz17YXNjX2NsaWNrX3RvX2NhbGw6WyJhLnBob25lLWxpbmsiLCJhLnBob25lLWFjdGlvbiJdLGFzY19jdGFfaW50ZXJhY3Rpb246Ii52LWNhcmQgYTpub3QoLnBob25lLWxpbmspOy5sZWZ0X2JveCBhOyNmb290ZXIgYTsjc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWRfYnRuXzE7I1B1bGxvdXRfQnVpbGQtYW5kLVByaWNlOyNuZXdWZHBGdWxsd2lkdGhWaWRlb0lmcmFtZSIuc3BsaXQoIjsiKSwKYXNjX2N0YV9pbnRlcmFjdGlvbjoiI3Byb21vRGlzY292ZXJCdXR0b24gLmRpdkNhclBheW1lbnRDYWxjdWxhdG9yICNzY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZCAubG9hbkNhbGN1bGF0b3JUcmlnZ2VyIC5vZmZlci1idG4gLmN0UHJvbW8gLnRyYWRlSW5CYXJfYnRuIi5zcGxpdCgiICIpLGFzY19jdGFfaW50ZXJhY3Rpb246WyIubmV3VmRwQWN0aW9ucyBhIiwiLmN0YS10cGwgYSJdLGFzY19jb21tX2VuZ2FnZW1lbnQ6WyIudGV4dC11cy1idG4iXSxhc2NfZm9ybV9lbmdhZ2VtZW50OlsiaW5wdXQiLCJzZWxlY3QiLCJ0ZXh0YXJlYSJdLGFzY19tZWRpYV9pbnRlcmFjdGlvbjpbIiNuZXdWZHBGdWxsd2lkdGhWaWRlb0lmcmFtZSIsImltZyJdLGFzY19tZW51X2ludGVyYWN0aW9uOlsiLnVwX21lbnUgYSJdLGFzY19lbGVtZW50X2NvbmZpZ3VyYXRpb246WyIubGFuZ3VhZ2VCYXIgYSJdfSxsPSExO2NvbnNvbGUubG9nKCJEMkFTQyBMb2FkaW5nLi4uIixkKTt2YXIgaD1uZXcgZnVuY3Rpb24oKXt2YXIgZT0KdGhpcztlLnNldFZlaGljbGVTdGF0dXM9ZnVuY3Rpb24oYil7bGV0IGE9JCgiI2FzY19kaWdpdGFsX2RhdGFfaW5mbyBpbnB1dFtuYW1lPXZlaGljbGVTdGF0dXNdIik7aWYoIiIhPSQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT0nbWFrZSddIikudmFsKCkpe2xldCBjPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b0xvd2VyQ2FzZSgpO2EudmFsKC91c2VkLy50ZXN0KGMpfHwvb2NjYXNpb24vLnRlc3QoYyk\/IlVzZWQiOiJOZXciKX0hMSE9PWImJmEudmFsKGIpfTtlLnNldERpZ2l0YWxEYXRhPWZ1bmN0aW9uKGIsYSl7bGV0IGM9ZS5hZGRFdmVudChiLGEpO2lmKCExPT09YylyZXR1cm4hMTt2b2lkIDAhPT1jLmZvcm1fbmFtZSYmKGMuZm9ybV9uYW1lPWMuZm9ybV9uYW1lLnJlcGxhY2UoIm1lbnN1YWxpdD9zIiwibWVuc3VhbGl0ZXMiKSxjLmZvcm1fbmFtZT1jLmZvcm1fbmFtZS5yZXBsYWNlKCJ2P2hpY3VsZSIsInZlaGljdWxlIiksYy5mb3JtX25hbWU9Yy5mb3JtX25hbWUucmVwbGFjZSgiP3RhcGVzIiwKImV0YXBlcyIpLGMuZm9ybV9uYW1lPSJEMkMgIitjLmZvcm1fbmFtZSk7dm9pZCAwIT09Yy5mb3JtX2xhbmcmJihjLmZvcm1fbGFuZz1lLnN0YW5kYXJkaXplRm9ybUxhbmcoYy5mb3JtX2xhbmcpKTtnLmV2ZW50cy51bnNoaWZ0KEpTT04uc3RyaW5naWZ5KHtuYW1lOmIscGFyYW1zOmN9KSk7InZkcCI9PWMucGFnZV90eXBlJiYoYy5wYWdlX3R5cGU9Iml0ZW0iKTsic2hvd3Jvb20iPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtIik7InNlYXJjaCBpbnZlbnRvcnkiPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtbGlzdCIpO2xldCBmPWUuZ2V0RXZlbnRUeXBlKGIpO2UucmVwb3J0KGYsYixjLGcpOyJhc2NfZm9ybV9zdWJtaXNzaW9uIj09YiYmKGUuc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiLGEpLGUuc2V0RGlnaXRhbERhdGEoIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiLGEpLGUuc2V0RGlnaXRhbERhdGEoIkQyQ19MZWFkcyIsCmEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthc2NMYXN0Q3RhQ2xpY2s9ITF9LDEyNTApKTsiYXNjX2NvbW1fc3VibWlzc2lvbiI9PWImJmUuc2V0RGlnaXRhbERhdGEoImFzY19jb21tX3N1Ym1pc3Npb25fc2FsZXMiLGEpfTtlLmdldEV2ZW50VHlwZT1mdW5jdGlvbihiKXtsZXQgYT0iZW5nYWdlbWVudCI7c3dpdGNoKGIpe2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb24iOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fcGFydHMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXNfYXBwdCI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlIjphPSJjb252ZXJzaW9uIn1yZXR1cm4gYX07ZS5iaW5kRWxlbWVudHM9ZnVuY3Rpb24oYixhKXskLmVhY2goYSxmdW5jdGlvbihjLGYpeyQoZikuZWFjaChmdW5jdGlvbigpe2NvbnN0IG09JCh0aGlzKSxuPSJhc2NfZm9ybV9lbmdhZ2VtZW50Ij09Yj8iYmx1ciI6ImNsaWNrIjsKJCh0aGlzKS5vbihuLGZ1bmN0aW9uKCl7aC5zZXREaWdpdGFsRGF0YShiLG0pfSl9KX0pfTtlLmFkZEV2ZW50PWZ1bmN0aW9uKGIsYSl7dmFyIGM9e2V2ZW50X293bmVyOiJkMmMiLHBhZ2VfdHlwZTpkLnBhZ2VJZCxwYWdlX3VybDp3aW5kb3cubG9jYXRpb24uaHJlZixldmVudF9sYWJlbDpiLGV2ZW50X2NhdGVnb3J5OiQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT12ZWhpY2xlU3RhdHVzXSIpLnZhbCgpfSxmPSExIT09YXNjTGFzdEN0YUNsaWNrP2UuQ3RhVGV4dFBhcnNlcihhc2NMYXN0Q3RhQ2xpY2spOiIiO3N3aXRjaChiKXtjYXNlICJhc2NfcGFnZXZpZXciOmJyZWFrO2Nhc2UgImFzY19jbGlja190b19jYWxsIjpmPWEuaGFzQ2xhc3MoInBob25lLWxpbmsiKT9hLnRleHQoKTphLmF0dHIoImhyZWYiKTtmPWYucmVwbGFjZSgvW14wLTlcK10vZywiIik7Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fcGhvbmVfbnVtYmVyOmYsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksCmFmZmlsaWF0aW9uOiIifSk7YnJlYWs7Y2FzZSAiYXNjX2N0YV9pbnRlcmFjdGlvbiI6Zj1lLkN0YVRleHRQYXJzZXIoYSk7ZS5pc0N0YUNsaWNrKGEpJiYoYXNjTGFzdEN0YUNsaWNrPWEpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtlbGVtZW50X3RleHQ6ZixlbGVtZW50X29yZGVyOiIiLGVsZW1lbnRfY29sb3I6IiIsZWxlbWVudF90eXBlOmUuZ2V0RWxlbWVudFR5cGUoYSksZXZlbnRfYWN0aW9uOiIiLGV2ZW5fYWN0aW9uX3Jlc3VsdDphLmF0dHIoImhyZWYiKT8icmVkaXJlY3QiOiJwb3B1cCIsbGlua191cmw6YS5hdHRyKCJocmVmIik\/YS5hdHRyKCJocmVmIik6IiJ9KTticmVhaztjYXNlICJhc2NfZm9ybV9lbmdhZ2VtZW50IjpmPWUuZ2V0TGVhZFR5cGVGb3JtTmFtZShhKTtpZighMT09PWYpcmV0dXJuITE7bGV0IG09ZS5hc2NUZXh0UmVwbGFjZXIoYS52YWwoKSksbj1lLmdldEQyY0RlcGFydG1lbnQoYSk7Y29uc29sZS5sb2coIkQyQVNDIEZvcm0gRW5nYWdlbWVudCBEZXRlY3RlZCIsCmYsbixhKTtjPU9iamVjdC5hc3NpZ24oe30sYyx7ZWxlbWVudF90ZXh0Om0sY29tbV90eXBlOiJmb3JtIixjb21tX3N0YXR1czoic3RhcnQiLGRlcGFydG1lbnQ6bixmb3JtX25hbWU6Zixmb3JtX3R5cGU6ZS5nZXRGb3JtVHlwZShhKSxmb3JtX2xhbmc6JCgiaW5wdXRbbmFtZT0nbGFuZyddIikudmFsKCksZm9ybV9kZXB0Om59KTticmVhaztjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Y29tbV90eXBlOiJmb3JtIixjb21tX291dGNvbWU6ImNsb3NlIixzdWJtaXNzaW9uX2lkOiIiLGVsZW1lbnRfdGV4dDoic3VibWl0IixjdGFfdGV4dDpmLGN1c3RvbWVyX3Bob25lOmEuY29uZmlybV9waG9uZV9udW1iZXIsY3VzdG9tZXJfZW1haWw6YS5jb25maXJtX2VtYWlsLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGZvcm1fbmFtZTphLmxlYWRUeXBlLGZvcm1fdHlwZTplLmdldEZvcm1UeXBlKGEpLGZvcm1fbGFuZzokKCJpbnB1dFtuYW1lPSdsYW5nJ10iKS52YWwoKSwKZm9ybV9kZXB0OmUuZ2V0RDJjRGVwYXJ0bWVudChhKX0pO2JyZWFrO2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fcGFydHMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXNfYXBwdCI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2VfYXBwdCI6Y2FzZSAiRDJDX0xlYWRzIjpjb25zb2xlLmxvZygiRDJBU0MgRW1haWwgU2VudCAtIERhdGEgMiIsYSk7YS5jb25maXJtX3Bob25lX251bWJlcj12b2lkIDA9PT1hLmNvbmZpcm1fcGhvbmVfbnVtYmVyPyIiOmEuY29uZmlybV9waG9uZV9udW1iZXI7YS5jb25maXJtX2VtYWlsPXZvaWQgMD09PWEuY29uZmlybV9lbWFpbD8iIjphLmNvbmZpcm1fZW1haWw7Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fdHlwZToiZm9ybSIsY29tbV9vdXRjb21lOmUuZ2V0Rm9ybU91dGNvbWUoYiksc3VibWlzc2lvbl9pZDoiIiwKZWxlbWVudF90ZXh0OmUuYXNjVGV4dFJlcGxhY2VyKCJzdWJtaXQiKSxjdGFfdGV4dDpmLGN1c3RvbWVyX3Bob25lOmEuY29uZmlybV9waG9uZV9udW1iZXIsY3VzdG9tZXJfZW1haWw6YS5jb25maXJtX2VtYWlsLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGZvcm1fbmFtZTphLmxlYWRUeXBlLGZvcm1fdHlwZTplLmdldEZvcm1UeXBlKGEpLGZvcm1fbGFuZzokKCJpbnB1dFtuYW1lPSdsYW5nJ10iKS52YWwoKSxmb3JtX2RlcHQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpfSk7YnJlYWs7Y2FzZSAiRDJDX0Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Yz17Zm9ybV9maWxsZWQ6IlllcyJ9O2JyZWFrO2Nhc2UgImFzY19lbGVtZW50X2NvbmZpZ3VyYXRpb24iOmM9dm9pZCAwIT09YS5ldmVudF9hY3Rpb24\/T2JqZWN0LmFzc2lnbih7fSxjLHtldmVudF9hY3Rpb25fcmVzdWx0OmEuZXZlbnRfYWN0aW9uX3Jlc3VsdCxldmVudF9hY3Rpb246YS5ldmVudF9hY3Rpb24scHJvZHVjdF9uYW1lOiIiLAplbGVtZW50X3N0YXRlOmEuZmlsdGVySW5mby5zdGF0ZSxlbGVtZW50X3R5cGU6InNlYXJjaCI9PWEuZXZlbnRfYWN0aW9uPyJmaWx0ZXIiOiJzb3J0IixlbGVtZW50X3N1YnR5cGU6YS5maWx0ZXJJbmZvLnR5cGUsZWxlbWVudF90aXRsZTphLmZpbHRlckluZm8ubGFiZWwsZWxlbWVudF90ZXh0OmEuZmlsdGVySW5mby50aXRsZSxlbGVtZW50X3ZhbHVlOmEuZmlsdGVySW5mby52YWx1ZSxlbGVtZW50X2NvbG9yOiIiLGVsZW1lbnRfcG9zaXRpb246IiIsZWxlbWVudF9vcmRlcjoiIn0pOk9iamVjdC5hc3NpZ24oe30sYyx7ZXZlbnRfYWN0aW9uX3Jlc3VsdDoibGFuZ3VhZ2UiLGV2ZW50X2FjdGlvbjoiY2xpY2siLHByb2R1Y3RfbmFtZToiIixlbGVtZW50X3N0YXRlOjAsZWxlbWVudF90eXBlOiJsYW5ndWFnZSB0b2dnbGUsIixlbGVtZW50X3N1YnR5cGU6ImJ1dHRvbiIsZWxlbWVudF90aXRsZTplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF90ZXh0OmUuYXNjVGV4dFJlcGxhY2VyKGEudGV4dCgpKSwKZWxlbWVudF92YWx1ZTplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF9jb2xvcjoiIixlbGVtZW50X3Bvc2l0aW9uOiIiLGVsZW1lbnRfb3JkZXI6IiJ9KTticmVhaztjYXNlICJhc2NfbWVkaWFfaW50ZXJhY3Rpb24iOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtldmVudF9hY3Rpb25fcmVzdWx0OiIiLGFmZmlsaWF0aW9uOiIiLG1lZGlhX3R5cGU6IiIsbGlua191cmw6IiIsY3JlYXRpdmVfbmFtZToiIn0pO2JyZWFrO2Nhc2UgImFzY19tZW51X2ludGVyYWN0aW9uIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7ZWxlbWVudF90ZXh0OmUuYXNjVGV4dFJlcGxhY2VyKGEudGV4dCgpKSxlbGVtZW50X3N1YnR5cGU6Im1lZ2FfbWVudSIsZWxlbWVudF90eXBlOmEuY2xvc2VzdCgibGkiKS5hdHRyKCJkYXRhLWlkIiksZXZlbnRfYWN0aW9uOiJjbGljayJ9KTticmVhaztjYXNlICJhc2NfcmV0YWlsX3Byb2Nlc3MiOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtmbG93X25hbWU6ImZpbmFuY2UiLAplbGVtZW50X3RpdGxlOiIiLGZsb3dfb3V0Y29tZToicHJvY2VlZCIsaXRlbV9wYXltZW50OiJmaW5hbmNlIixmbG93X3N0YWdlOiIifSk7YnJlYWs7Y2FzZSAiYXNjX3NwZWNpYWxfb2ZmZXIiOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtwcm9tb3Rpb25fbmFtZTokKCJoMjpmaXJzdC1jaGlsZCIsYSkubGVuZ3RoP2UuYXNjVGV4dFJlcGxhY2VyKCQoImgyOmZpcnN0LWNoaWxkIixhKS50ZXh0KCkpOiJEZWFsZXIgUHJvbW8iLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLHByb2R1Y3RfbmFtZToiIixlbGVtZW50X3Bvc2l0aW9uOiJmbG9hdGluZyIsZmxvd19vdXRjb21lOiJzdGFydCJ9KTticmVhaztjYXNlICJhc2NfY29tbV9lbmdhZ2VtZW50IjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Y29tbV9zdGF0dXM6InN0YXJ0Iixjb21tX3R5cGU6InNtcyIscHJvZHVjdF9uYW1lOiJkMmNfdGV4dCIsZXZlbnRfb3duZXI6ImQyYyJ9KTticmVhaztjYXNlICJhc2NfY29tbV9zdWJtaXNzaW9uIjpjPQpPYmplY3QuYXNzaWduKHt9LGMse2NvbW1fdHlwZToiY2hhdCIsYWZmaWxpYXRpb246Im5hdGl2ZSIsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksYWZmaWxpYXRpb25faWQ6Im11bHRpLXVzZXIiLGNvbW1fc3RhdHVzOiJjcm1fdXBkYXRlIn0pO2JyZWFrO2Nhc2UgImFzY19jb21tX3N1Ym1pc3Npb25fc2FsZXMiOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3R5cGU6ImNoYXQiLGFmZmlsaWF0aW9uOiJuYXRpdmUiLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGFmZmlsaWF0aW9uX2lkOiJtdWx0aS11c2VyIixjb21tX3N0YXR1czoiY3JtX3VwZGF0ZSIsZWxlbWVudF9wb3NpdGlvbjoicG9wLXVwIn0pO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGNvbnNvbGUubG9nKCJEMkFTQyBFUlJPUihDT0RFOjAwMSkiLGIsYSksITF9ITEhPT1hc2NUb3BDYXJEZXRhaWxzJiYiRDJDX0Zvcm1fc3VibWlzc2lvbl9zYWxlcyIhPWImJihjPU9iamVjdC5hc3NpZ24oe30sYywKYXNjVG9wQ2FyRGV0YWlscykpO2NvbnNvbGUubG9nKCJHQTQgRmluYWwgRGlnaXRhbCBEYXRhIixjKTtyZXR1cm4gY307ZS5pc0N0YUNsaWNrPWZ1bmN0aW9uKGIpe2xldCBhPSExO2IgaW5zdGFuY2VvZiBqUXVlcnkmJigwPGIuY2xvc2VzdCgiLm5ld1ZkcEFjdGlvbnMiKS5sZW5ndGgmJihhPSEwKSwwPGIuY2xvc2VzdCgiLmN0YS10cGwiKS5sZW5ndGgmJihhPSEwKSwicHJvbW9EaXNjb3ZlckJ1dHRvbiI9PWIuYXR0cigiaWQiKSYmKGE9ITApLGIuaGFzQ2xhc3MoImRpdkNhclBheW1lbnRDYWxjdWxhdG9yIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLmRpdkNhclBheW1lbnRDYWxjdWxhdG9yIikubGVuZ3RoJiYoYT0hMCksMDxiLmNsb3Nlc3QoIiNzY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZCIpLmxlbmd0aCYmKGE9ITApLCJzY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZCI9PWIuYXR0cigiaWQiKSYmKGE9ITApLGIuaGFzQ2xhc3MoImxvYW5DYWxjdWxhdG9yVHJpZ2dlciIpJiYoYT0hMCksCjA8Yi5jbG9zZXN0KCIubG9hbkNhbGN1bGF0b3JUcmlnZ2VyIikubGVuZ3RoJiYoYT0hMCksYi5oYXNDbGFzcygiY3RQcm9tbyIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5jdFByb21vIikubGVuZ3RoJiYoYT0hMCksYi5oYXNDbGFzcygib2ZmZXItYnRuIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLm9mZmVyLWJ0biIpLmxlbmd0aCYmKGE9ITApLGIuaGFzQ2xhc3MoInRyYWRlSW5CYXJfYnRuIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLnRyYWRlSW5CYXJfYnRuIikubGVuZ3RoJiYoYT0hMCksIlRSQURFSU4iPT1iLmF0dHIoImRhdGEtaWQiKSYmKGE9ITApKTtyZXR1cm4gYX07ZS5zdGFuZGFyZGl6ZUZvcm1MYW5nPWZ1bmN0aW9uKGIpe3ZvaWQgMD09PWImJiQoImh0bWwiKS5hdHRyKCJsYW5nIik7Yj1iLnRvTG93ZXJDYXNlKCk7ImVuZyI9PWImJihiPSJlbiIpOyJlbmdsaXNoIj09YiYmKGI9ImVuIik7ImZybiI9PWImJihiPSJmciIpOyJmcmVuY2giPT1iJiYoYj0iZnIiKTsiZW4iIT0KYiYmImZyIiE9YiYmKGI9ImVuIik7cmV0dXJuIGJ9O2UuQ3RhVGV4dFBhcnNlcj1mdW5jdGlvbihiKXtkLnBhZ2VJZC50b0xvd2VyQ2FzZSgpO2xldCBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b0xvd2VyQ2FzZSgpLGM9IiI7aWYoL25ld1wvaW52ZW50b3J5XC9zZWFyY2gvLnRlc3QoYSl8fC9uZXVmc1wvaW52ZW50YWlyZVwvcmVjaGVyY2hlLy50ZXN0KGEpKWMrPSJEMkMgQ1RBTSAtIE5ldyBJbnZlbnRvcnkgU1JQOiAiO2Vsc2UgaWYoL25ld1wvaW52ZW50b3J5Ly50ZXN0KGEpfHwvbmV1ZnNcL2ludmVudGFpcmUvLnRlc3QoYSkpYys9IkQyQyBDVEFNIC0gTmV3IEludmVudG9yeSBWRFA6ICI7ZWxzZSBpZigvbmV3Ly50ZXN0KGEpfHwvbmV1ZnMvLnRlc3QoYSkpYys9IkQyQyBDVEFNIC0gTmV3IFNob3dSb29tIFZEUDogIjtlbHNlIGlmKC91c2VkLy50ZXN0KGEpfHwvb2NjYXNpb24vLnRlc3QoYSkpYys9IkQyQyBDVEFNIC0gVXNlZCBJbnZlbnRvcnkgVkRQOiAiO3JldHVybiBjKwplLmFzY1RleHRSZXBsYWNlcihiLnRleHQoKSl9O2UuZ2V0TGVhZFR5cGVGb3JtTmFtZT1mdW5jdGlvbihiKXtsZXQgYT0wPGIuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aD9iLmNsb3Nlc3QoImZvcm0iKS5hdHRyKCJpZCIpOmIuYXR0cigiaWQiKSxjPSExO2QucGFnZUlkLmluY2x1ZGVzKCJvcmRlciBwYXJ0cyIpJiYoYz0iUGFydHNSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoInRlc3QgZHJpdmUiKSYmKGM9IlRlc3REcml2ZSIpO2QucGFnZUlkLmluY2x1ZGVzKCJwcmljZSByZXF1ZXN0IikmJihjPSJQcmljZVJlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygiYnJvY2h1cmUiKSYmKGM9IkJyb2NodXJlc1JlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygicmVxdWVzdCBhcHBvaW50bWVudCIpJiYoYz0iU2VydmljZVJlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygidGlyZXMiKSYmKGM9IlRpcmVzUmVxdWVzdCIpO2QucGFnZUlkLmluY2x1ZGVzKCJib2R5IHNob3AiKSYmKGM9IkJvZHlTaG9wIik7CmQucGFnZUlkLmluY2x1ZGVzKCJyZWNhbGwiKSYmKGM9IlJlY2FsbHMiKTtpZihiIGluc3RhbmNlb2YgalF1ZXJ5JiYoMDxiLmNsb3Nlc3QoIi5kaXZTcGFuRmlsdGVycyIpLmxlbmd0aHx8MDxiLmNsb3Nlc3QoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgpKXJldHVybiExO2I9ZS5mb3JtRGF0YUJ5SWQoYik7cmV0dXJuITEhPT1iP2IuZm9ybU5hbWU6ITEhPT1jP2QyYXNjUmVzb2x2ZUxlYWRUeXBlKGQuZm9ybU1hcCxjKToiVU5LTk9XTjogIithfTtlLmZvcm1EYXRhQnlJZD1mdW5jdGlvbihiKXtpZihiIGluc3RhbmNlb2YgalF1ZXJ5KXtsZXQgYT0wPGIuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aD9iLmNsb3Nlc3QoImZvcm0iKS5hdHRyKCJpZCIpOmIuYXR0cigiaWQiKTt2b2lkIDA9PT1hJiYoMDxiLmNsb3Nlc3QoIiNjb250YWN0cG9wdXAiKS5sZW5ndGgmJihhPSJSZXF1ZXN0IGZvciBjb250YWN0IiksMDxiLmNsb3Nlc3QoIi5jcmVkaXRTY29yZUlucHV0IikubGVuZ3RoJiYKKGE9ImNyZWRpdFNjb3JlIiksMDxiLmNsb3Nlc3QoIiNzY3JhdGNoQW5kU2F2ZVBvcHVwQ29udGFpbmVyX2JucCIpLmxlbmd0aCYmKGE9IlJlYmF0ZUNvdXBvbk5ld0JOUCIpLDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGFuZHNhdmVfdGV4dCIpLmxlbmd0aCYmKGE9IlJlYmF0ZUNvdXBvbiIpKTtpZihkLnBhZ2VJZC5pbmNsdWRlcygic2hvd3Jvb206Y29tcGFyZSIpJiZ2b2lkIDAhPT1hJiZhLmluY2x1ZGVzKCJmZWF0dXJlZFByb2R1Y3RfIikpcmV0dXJue2Zvcm1UeXBlOiJyZXNlYXJjaCIsZm9ybU5hbWU6IkNvbXBhcmVGb3JtIn07aWYoMDxiLmNsb3Nlc3QoIiNtdWx0aWZvcm1fZW1iZWRkZWQiKS5sZW5ndGgmJjA8Yi5jbG9zZXN0KCIjbXVsdGlmb3JtX2VtYmVkZGVkIikuZmluZCgiLm11bHRpZm9ybV9lbWJlZGRlZF9zdGVwMSIpLmxlbmd0aClyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJEaXNjb3Zlck9mZmVyIn07c3dpdGNoKGEpe2Nhc2UgIm1pbmlmb3JtIjpjYXNlICJmaW5hbmNlX211bHRpc3RlcF9mb3JtIjpyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0IiwKZm9ybU5hbWU6IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QifTtjYXNlICJsb2FuLWZvcm0iOnJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJQcmljZVJlcXVlc3QifTtjYXNlICJmb3JtRGVhbGVyQXBwb2ludG1lbnQiOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IkRlYWxlckFwcG9pbnRtZW50In07Y2FzZSAiU2xpZGVXaWRnZXRGb3JtIjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJTbGlkZVdpZGdldEZvcm0ifTtjYXNlICJjcmVkaXRTY29yZSI6cmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsZm9ybU5hbWU6IkNyZWRpdFJlcXVlc3RfU2hvcnQifTtjYXNlICJSZWJhdGVDb3Vwb25OZXdCTlAiOnJldHVybntmb3JtVHlwZToicHJlLW9yZGVyIixmb3JtTmFtZToiUmViYXRlQ291cG9uTmV3Qk5QIn07Y2FzZSAiYmFubmVyX3NlYXJjaF9iYXJfc2VsZWN0X2JvZHkiOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsCmZvcm1OYW1lOiJCYW5uZXJGb3JtIn07Y2FzZSAicGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCI6Y2FzZSAicGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0IjpjYXNlICJwYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIjpjYXNlICJwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IjpyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiTW9udGhseVBheW1lbnRzIn07Y2FzZSAiY29udGFjdF9mb3JtIjpjYXNlICJjb250YWN0X2Zvcm0yIjpjYXNlICJjb250YWN0X2Zvcm0zIjpjYXNlICJSZXF1ZXN0IGZvciBjb250YWN0IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJDb250YWN0UmVxdWVzdCJ9O2Nhc2UgInF1aWNrRW1haWxGb3JtIjpjYXNlICJtYWlsRXhwcmVzc1JlcXVlc3QiOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IlF1aWNrRW1haWwifTtjYXNlICJ0cmFkaW5NYWtlIjpjYXNlICJ0cmFkaW5ZZWFyIjpjYXNlICJ0cmFkaW5Nb2RlbCI6Y2FzZSAidHJhZGluVHJpbSI6Y2FzZSAidHJhZGVJbkJhclBvcHVwRm9ybSI6Y2FzZSAiU2VsbENhckZvcm0iOnJldHVybntmb3JtVHlwZToicmVzZWFyY2giLApmb3JtTmFtZToiUHJpY2VWZWhpY2xlIn19aWYoMDxiLmNsb3Nlc3QoIi5zY3JhdGNoYm9keSIpLmxlbmd0aHx8MDxiLmNsb3Nlc3QoIi5zY3JhdGNoYm9keTEiKS5sZW5ndGh8fDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGJvZHkyIikubGVuZ3RofHwwPGIuY2xvc2VzdCgiLnNjcmF0Y2hib2R5MyIpLmxlbmd0aClyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJSZWJhdGVDb3Vwb25OZXcifTtpZigwPGIuY2xvc2VzdCgiI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyIikubGVuZ3RoKXJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJNb250aGx5UGF5bWVudHMifX1yZXR1cm4hMX07ZS5jb21tU3ViRGF0YVBhcnNlcj1mdW5jdGlvbihiLGEpe2xldCBjPXtmb3JtX25hbWU6IiIsZm9ybV90eXBlOiIiLGZvcm1fZGVwdDoiIixmb3JtX2xhbmc6IiJ9Oy9hc2NfY29tbV9zdWJtaXNzaW9uLy50ZXN0KGIpJiYiU2xpZGVXaWRnZXRGb3JtIj09CmEuY2xvc2VzdCgiZm9ybSIpLmF0dHIoImlkIikmJihjLmZvcm1fbmFtZT0iTGVhZDogQ2hhdCBTdWJtaXNzaW9uIik7cmV0dXJuIGN9O2UuYXNjVGV4dFJlcGxhY2VyPWZ1bmN0aW9uKGIpe2I9Yi5yZXBsYWNlKC8oXHJcbnxcbnxccnxcdCkvZ20sIiIpO2I9Yi5yZXBsYWNlKC88XC8\/W14+XSsoPnwkKS9nLCIiKTtyZXR1cm4gYj1iLnRyaW0oKX07ZS5oYXNoVGV4dD1mdW5jdGlvbihiKXtiPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShiLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGIpLnRoZW4oYT0+QXJyYXkuZnJvbShuZXcgVWludDhBcnJheShhKSkubWFwKGM9PmMudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIikpfTtlLmdldEZvcm1PdXRjb21lPWZ1bmN0aW9uKGIpe3N3aXRjaChiKXtjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3BhcnRzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2UiOmNhc2UgIkQyQ19MZWFkcyI6cmV0dXJuImNybV91cGRhdGUiOwpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzX2FwcHQiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZV9hcHB0IjpyZXR1cm4iYXBwdF9ib29rZWQifX07ZS5nZXREMmNEZXBhcnRtZW50PWZ1bmN0aW9uKGIpe2xldCBhPWQucGFnZUlkLnRvTG93ZXJDYXNlKCksYz13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKSxmPSJPVEhFUiI7L25ldWZzLy50ZXN0KGMpJiYoZj0iTkVXIik7L25ldy8udGVzdChjKSYmKGY9Ik5FVyIpOy9vY2Nhc2lvbi8udGVzdChjKSYmKGY9IlVTRUQiKTsvdXNlZC8udGVzdChjKSYmKGY9IlVTRUQiKTthLmluY2x1ZGVzKCJmaW5hbmNlIikmJihmPSJGSU5BTkNFIik7YS5pbmNsdWRlcygicmVxdWVzdCBhcHBvaW50bWVudCIpJiYoZj0iU0VSVklDRSIpO2EuaW5jbHVkZXMoInBhcnRzIikmJihmPSJTRVJWSUNFIik7YS5pbmNsdWRlcygidGlyZXMiKSYmKGY9IlNFUlZJQ0UiKTthLmluY2x1ZGVzKCJib2R5IHNob3AiKSYmCihmPSJTRVJWSUNFIik7YS5pbmNsdWRlcygiZmluYW5jZSBkZXBhcnRtZW50IikmJihmPSJGSU5BTkNFIik7YS5pbmNsdWRlcygiY3JlZGl0IikmJihmPSJGSU5BTkNFIik7YS5pbmNsdWRlcygiY29udGFjdCB1cyIpJiYoZj0iU0FMRVMiKTthLmluY2x1ZGVzKCJyZWNhbGwiKSYmKGY9IlNFUlZJQ0UiKTtiIGluc3RhbmNlb2YgalF1ZXJ5JiYoMDxiLmNsb3Nlc3QoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJihmPSJGSU5BTkNFIiksImZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciI9PWIuYXR0cigiaWQiKSYmKGY9IkZJTkFOQ0UiKSwwPGIuY2xvc2VzdCgiI1NlbGxDYXJGb3JtIikubGVuZ3RoJiYoZj0iRklOQU5DRSIpLHZvaWQgMCE9PWIuYXR0cigiZGF0YS1kZXBhcnRtZW50IikmJihmPWIuYXR0cigiZGF0YS1kZXBhcnRtZW50IikpKTtyZXR1cm4gZn07ZS5nZXRGb3JtVHlwZT1mdW5jdGlvbihiKXtsZXQgYT1kLnBhZ2VJZC50b0xvd2VyQ2FzZSgpOwppZihhLmluY2x1ZGVzKCJyZXF1ZXN0IGFwcG9pbnRtZW50IikpcmV0dXJuInNlcnZpY2VfYXBwb2ludG1lbnQiO2lmKGEuaW5jbHVkZXMoIm9yZGVyIHBhcnRzIil8fGEuaW5jbHVkZXMoIm9yZGVyIHRpcmVzIikpcmV0dXJuInBhcnRzIjtpZihhLmluY2x1ZGVzKCJib2R5IHNob3AiKSlyZXR1cm4iYm9keV9zaG9wIjtpZihhLmluY2x1ZGVzKCJmaW5hbmNlIGRlcGFydG1lbnQiKXx8YS5pbmNsdWRlcygiY3JlZGl0IikpcmV0dXJuImNyZWRpdCI7Yj1lLmZvcm1EYXRhQnlJZChiKTtyZXR1cm4hMSE9PWI\/Yi5mb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCJ9O2UuZ2V0RWxlbWVudFR5cGU9ZnVuY3Rpb24oYil7cmV0dXJuInRvcEJhbm5lckltYWdlIj09Yi5hdHRyKCJpZCIpfHwwPGIuY2xvc2VzdCgiI3RvcEJhbm5lckltYWdlIikubGVuZ3RoPyJiYW5uZXIiOjA8Yi5jbG9zZXN0KCIuaGVhZGVyLWltYWdlLXdyYXBwZXIiKS5sZW5ndGg\/ImhlYWRlciI6MDxiLmNsb3Nlc3QoIi5sYW5ndWFnZUJhciIpLmxlbmd0aD8KImFjY2Vzc2liaWxpdHlfdG9vbCI6MDxiLmhhcygiLmRlYWxlck1hcExpbmsiKS5sZW5ndGg\/Im1hcCI6MDxiLmNsb3Nlc3QoIi5zbGlkZXMiKS5sZW5ndGg\/ImdhbGxlcnkiOjA8Yi5jbG9zZXN0KCIudXNlZFZkcEFjdGlvbnMiKS5sZW5ndGg\/ImRpZ2l0YWxfcmV0YWlsaW5nX3Rvb2wiOiJQdWxsb3V0X0J1aWxkLWFuZC1QcmljZSI9PWIuYXR0cigiLnVzZWRWZHBBY3Rpb25zIik\/ImJhbm5lciI6Im5ld1ZkcEZ1bGx3aWR0aFZpZGVvSWZyYW1lIj09Yi5hdHRyKCIudXNlZFZkcEFjdGlvbnMiKT8idmlkZW8iOiJkaWdpdGFsX3JldGFpbGluZyJ9O2UuZ2V0VmVoaWNsZUpTT049ZnVuY3Rpb24oYixhKXskLmdldCgiL2pzL2pzb24vIitiKyIuanNvbiIpLmRvbmUoZnVuY3Rpb24oYyl7Yy5pdGVtX251bWJlcj1iO2lmKCIiIT1hJiZ2b2lkIDAhPT1hKXdpbmRvd1thXShjKTtyZXR1cm4gY30pfTtlLnJlcG9ydD1mdW5jdGlvbihiLGEsYyxmKXtpZih2b2lkIDA9PT1kLnN1Yl9nYTR8fCJOIj09CmQuc3ViX2dhNCljPU9iamVjdC5hc3NpZ24oe30sYyx7c2VuZF90bzoiRy1aNVE4WjVDN0tGIn0pO2lmKCEwPT09bCYmImFzY19mb3JtX2VuZ2FnZW1lbnQiPT1hKXJldHVybiExO2d0YWcoImV2ZW50IixhLGMpO2w9ITA7c2V0VGltZW91dChmdW5jdGlvbigpe2w9ITF9LDFFMyl9O3JldHVybiBlfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aC5zZXRWZWhpY2xlU3RhdHVzKCExKTsidmRwIj09ZC5wYWdlSWQmJigwPCQoIiN0b3BjYXJpZCIpLmxlbmd0aCYmIiIhPSQoIiN0b3BjYXJpZCIpLnZhbCgpJiYiMCIhPSQoIiN0b3BjYXJpZCIpLnZhbCgpP2guZ2V0VmVoaWNsZUpTT04oJCgiI3RvcGNhcmlkIikudmFsKCksImFzY1VwZGF0ZVRvcENhckRhdGEiKTphc2NVcGRhdGVUb3BDYXJEYXRhKCExKSk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoZnVuY3Rpb24oYil7aC5zZXREaWdpdGFsRGF0YSgiYXNjX3BhZ2V2aWV3Iix7fSl9KX0sMUUzKTskLmVhY2goayxmdW5jdGlvbihiLGEpe2guYmluZEVsZW1lbnRzKGIsCmEpfSwhMSk7JCgiLnJldmVhbC1tb2RhbCIpLm9uZSgicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24oYil7aC5zZXREaWdpdGFsRGF0YSgiYXNjX3NwZWNpYWxfb2ZmZXIiLCQoYi50YXJnZXQpKTtoLmJpbmRFbGVtZW50cygiYXNjX2Zvcm1fZW5nYWdlbWVudCIsWyQoYi50YXJnZXQpLmZpbmQoImZvcm0gaW5wdXQsIGZvcm0gc2VsZWN0LCBmb3JtIHRleHRhcmVhIildKX0pO3NldFRpbWVvdXQoKCk9PnskKCJhW2RhdGEtbGVhZC10cmlnZ2VyPSdEZWFsZXJBcHBvaW50bWVudCddIikub24oImNsaWNrIixmdW5jdGlvbigpe2guc2V0RGlnaXRhbERhdGEoImFzY19zcGVjaWFsX29mZmVyIiwkKCIjbW9kYWxEZWFsZXJBcHBvaW50bWVudCIpKX0pOyQoImFbZGF0YS1sZWFkLXRyaWdnZXI9J1BheXBhbFBheW1lbnQnXSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtoLnNldERpZ2l0YWxEYXRhKCJhc2Nfc3BlY2lhbF9vZmZlciIsJCgiI21vZGFsUGF5cGFsUGF5bWVudCIpKX0pfSwxRTMpOwowPCQoIiNmbHRTb3J0SWQiKS5sZW5ndGgmJihhc2NMYXN0U2VhcmNoRmlsdGVyU29ydD0kKCIjZmx0U29ydElkIC5kaXZBY3Rpb25XcmFwcGVyIC5kaXZMYWJlbCIpLmh0bWwoKSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LkFic3RyYWN0VXNlZFNycE9iamVjdCl7dmFyIGU9bmV3IEFic3RyYWN0VXNlZFNycE9iamVjdCh7bmFtZToiZDJjX2hvbmRhX2d0bSJ9KTtlLmFkZFVzZWRTcnBFdmVudE9ic2VydmVyKCJwcm94eSIsZnVuY3Rpb24oYil7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYi5jbWQmJiJyZXF1ZXN0Ij09PWIuY21kJiYhMSE9PWIuZGF0YSl7bGV0IGE9Yi5kYXRhLmZpbHRlclN0YXRlLmZpbHRlclNlYXJjaDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5yZXN1bHRzPWIuZGF0YS5maWx0ZXJTdGF0ZS5jb3VudFNlYXJjaFJlc3VsdHM7YS50eXBlZFNlYXJjaD1iLmRhdGEuZmlsdGVyU3RhdGUudHlwZWRTZWFyY2g7YS5ldmVudF9hY3Rpb25fcmVzdWx0PSJzZWFyY2giOwphLmV2ZW50X2FjdGlvbj0ic2VhcmNoIjthLmZpbHRlckluZm89YXNjTGFzdEZpbHRlckNsaWNrO2FzY0xhc3RGaWx0ZXJDbGljaz0hMTtPYmplY3Qua2V5cyhhKS5pbmNsdWRlcygic29ydCIpJiZhc2NMYXN0U2VhcmNoRmlsdGVyU29ydCE9YS5zb3J0WzBdJiYoYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQ9YS5zb3J0WzBdLGEuZXZlbnRfYWN0aW9uPSJzb3J0Iik7aC5zZXREaWdpdGFsRGF0YSgiYXNjX2VsZW1lbnRfY29uZmlndXJhdGlvbiIsYSl9LDEwMCl9fSk7ZS5pbml0VXNlZFNycE9ic2VydmVyKCl9JChkb2N1bWVudCkub24oInVzZWRTcnBGaWx0ZXJzLm9uQ2hhbmdlIiwiYm9keSIsKGIsYSk9PntiPSQoIiMiK2EuaWQpO2I9JCgiLmZsdFRpdGxlIixiKS50ZXh0KCk7bGV0IGM9YS52YWx1ZTt2YXIgZj0iIjtsZXQgbT0idGV4dF9zZWFyY2giO2EudmFsdWUmJmEudmFsdWUudG9TdHJpbmcoKS5pbmNsdWRlcygiOjoiKT8obT0iYnV0dG9uIixmPWEudmFsdWUuc3BsaXQoIjo6IiksCmEudmFsdWU9ZlswXSxmPWZbMV0pOmEudmFsdWUmJmEudmFsdWUudG9TdHJpbmcoKS5pbmNsdWRlcygiLCIpJiYobT0icmFuZ2Vfc2xpZGVyIik7YXNjTGFzdEZpbHRlckNsaWNrPXtpZDphLmlkLHRpdGxlOmEubGFiZWwsdmFsdWU6YS52YWx1ZSxvcmdfdmFsdWU6YyxzdGF0ZTpmLHR5cGU6bSxsYWJlbDpifX0pOyQoImJvZHkiKS5vbigiZW1haWxIYW5kbGVyLmVtYWlsU2VudCIsZnVuY3Rpb24oYixhKXtjb25zb2xlLmxvZygiRDJBU0MgRW1haWwgU2VudCBUcmlnZ2VyIixiLGEpO2lmKHZvaWQgMCE9PWEuZGV0YWlsLmxlYWRUeXBlKXtiPWEuZGV0YWlsLmxlYWRUeXBlO2lmKGIuaW5jbHVkZXMoIkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsdGlzdGVwKSIpfHxiLmluY2x1ZGVzKCJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAoUGx1cyIpKXJldHVybiExO2IuaW5jbHVkZXMoIkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciIpJiYoYj0iTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnZWNoYW5nZSIpOwpiLnRyaW0oKTthLmRldGFpbC5sZWFkVHlwZT1ifXZvaWQgMCE9PWEuZGV0YWlsLmxlYWRUeXBlJiYiIiE9YS5kZXRhaWwubGVhZFR5cGV8fHZvaWQgMD09PWEuZGV0YWlsLm1haWxJZHx8KGEuZGV0YWlsLmxlYWRUeXBlPWQyYXNjUmVzb2x2ZUxlYWRUeXBlKGQuZm9ybU1hcCxhLmRldGFpbC5tYWlsSWQpKTthLmRldGFpbC5sZWFkTmFtZUFycj1kLmZvcm1NYXA7dm9pZCAwPT09YS5kZXRhaWwuY29uZmlybV9lbWFpbCYmKGEuZGV0YWlsLmNvbmZpcm1fZW1haWw9IiIpO3ZvaWQgMD09PWEuZGV0YWlsLmNvbmZpcm1fcGhvbmVfbnVtYmVyJiYoYS5kZXRhaWwuY29uZmlybV9waG9uZV9udW1iZXI9IiIpO1Byb21pc2UuYWxsKFtoLmhhc2hUZXh0KGEuZGV0YWlsLmNvbmZpcm1fZW1haWwpLGguaGFzaFRleHQoYS5kZXRhaWwuY29uZmlybV9waG9uZV9udW1iZXIpXSkudGhlbihjPT57dmFyIFtmLG1dPWM7YS5kZXRhaWwuY29uZmlybV9lbWFpbD1mO2EuZGV0YWlsLmNvbmZpcm1fcGhvbmVfbnVtYmVyPQptfSk7dm9pZCAwIT09YXNjVG9wQ2FyRGV0YWlscy5tYWtlJiYiIiE9YXNjVG9wQ2FyRGV0YWlscy5tYWtlfHx2b2lkIDA9PT1hLmRldGFpbC5tYWtlfHwiIj09YS5kZXRhaWwubWFrZXx8KGEuZGV0YWlsLnZjYXRlZ29yeT1hLmRldGFpbC5jb25kaXRpb24sYS5kZXRhaWwudmVyc2lvbj1hLmRldGFpbC50cmltLGEuZGV0YWlsLmJvZHlUeXBlSUQ9YS5kZXRhaWwudHJpbSxhLmRldGFpbC5jb2xvcj0iIixhLmRldGFpbC52Y2FyYnVyYW50PSIiLGEuZGV0YWlsLmRhdGVfbGlzdGluZz0iIixhc2NVcGRhdGVUb3BDYXJEYXRhKGEuZGV0YWlsKSk7c2V0VGltZW91dChmdW5jdGlvbigpe2guc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb24iLGEuZGV0YWlsKX0sMjUwKX0pOyQoIiNTbGlkZVdpZGdldEZvcm0gYS5idG4tZGVmYXVsdCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtsZXQgYj1kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsIlNsaWRlV2lkZ2V0Rm9ybSIpO2guc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb24iLAp7ZGVwYXJ0bWVudDoic2FsZXMiLGxlYWRUeXBlOmIsY3VycmVudFVSTDoiIn0pfSk7JChkb2N1bWVudCkub24oImZvcm0uc3RlcCIsIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixmdW5jdGlvbihiKXtoLnNldERpZ2l0YWxEYXRhKCJhc2NfcmV0YWlsX3Byb2Nlc3MiLGIpfSk7JChkb2N1bWVudCkub24oIm11bHRpRm9ybUZpbmFuY2VTdWJtaXQiLGRvY3VtZW50LmJvZHksZnVuY3Rpb24oYil7Yj1kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiKTtoLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uIix7ZGVwYXJ0bWVudDoiZmluYW5jZSIsbGVhZFR5cGU6YixjdXJyZW50VVJMOiIifSl9KX0sMUUzKTt3aW5kb3cuZDJhc2M9aDt3aW5kb3cuZDJhc2NEYXRhTWFwPWd9OwovKiogL20vanMvanF1ZXJ5LnJldmVhbC5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlyZXZlYWxqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA2OjQyIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlyZXZlYWxqc19jX29uPSIyMDI0LTA1LTE0IDEwOjMwOjA1IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihiKXtiKCJib2R5Iikub24oImNsaWNrIiwiYVtkYXRhLXJldmVhbC1pZF0iLGZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKTthPWIodGhpcykuYXR0cigiZGF0YS1yZXZlYWwtaWQiKTtiKCIjIithKS5yZXZlYWwoYih0aGlzKS5kYXRhKCkpfSk7Yi5mbi5yZXZlYWw9ZnVuY3Rpb24oYSl7YT1iLmV4dGVuZCh7fSx7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMCxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIixjbG9zZW9uZXNjYXBlOiEwfSxhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZigpeyJvYmplY3QiPT10eXBlb2YgcG9wdXBTdXBlcnZpc29yJiZzZXRUaW1lb3V0KHBvcHVwU3VwZXJ2aXNvci5yZXBvc2l0aW9uLDFFMyk7Zz0hMX12YXIgYz1iKHRoaXMpLGg9cGFyc2VJbnQoYy5jc3MoInRvcCIpKSxtPWMuaGVpZ2h0KCkraCxnPSExLApkPWIoIi5yZXZlYWwtbW9kYWwtYmciKTswPT1kLmxlbmd0aCYmKGQ9YignPGRpdiBjbGFzcz0icmV2ZWFsLW1vZGFsLWJnIiAvPicpLmluc2VydEFmdGVyKGMpKTtjLm9uKCJyZXZlYWw6b3BlbiIsZnVuY3Rpb24oKXt2YXIgaz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5pbm5lckhlaWdodD93aW5kb3cuaW5uZXJIZWlnaHQ6Yih3aW5kb3cpLmhlaWdodCgpLG49YihjKS5vdXRlckhlaWdodCgpO2IoYykub2Zmc2V0KCk7Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCk7dmFyIGw9L01vYmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk\/NToyMCxlPShrLW4pLzIrbDtlPWU8bHx8azxuP2w6ZTswPGIoIiNkMmNfYm9keUNvbnRlbnQiKS5sZW5ndGgmJihlLT1iKCIjZDJjX2JvZHlDb250ZW50Iikub2Zmc2V0KCkudG9wKTswPGIoIi5zbG90TWFjaGluZUNvbnRhaW5lciIpLmxlbmd0aCYmYigiLnNsb3RNYWNoaW5lQ29udGFpbmVyIikuc2hvdygpO2Qub2ZmKCJjbGljay5tb2RhbEV2ZW50Iik7CmIoIi4iK2EuZGlzbWlzc21vZGFsY2xhc3MpLm9mZigiY2xpY2subW9kYWxFdmVudCIpO2d8fChnPSEwLCJmYWRlQW5kUG9wIj09YS5hbmltYXRpb24mJihjLmNzcyh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLW0sb3BhY2l0eTowLHZpc2liaWxpdHk6InZpc2libGUifSksZC5mYWRlSW4oYS5hbmltYXRpb25zcGVlZC8yKSxjLmRlbGF5KGEuYW5pbWF0aW9uc3BlZWQvMikuYW5pbWF0ZSh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2UrInB4IixvcGFjaXR5OjF9LGEuYW5pbWF0aW9uc3BlZWQsZigpKSksImZhZGUiPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHtvcGFjaXR5OjAsdmlzaWJpbGl0eToidmlzaWJsZSIsdG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2V9KSxkLmZhZGVJbihhLmFuaW1hdGlvbnNwZWVkLzIpLGMuZGVsYXkoYS5hbmltYXRpb25zcGVlZC8yKS5hbmltYXRlKHtvcGFjaXR5OjF9LGEuYW5pbWF0aW9uc3BlZWQsZigpKSksIm5vbmUiPT1hLmFuaW1hdGlvbiYmCihjLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSIsdG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2V9KSxkLmNzcyh7ZGlzcGxheToiYmxvY2sifSksZigpKSwiZXh0ZXJuYWxBbmltYXRpb24iPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIix0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCkrZSxkaXNwbGF5OiJub25lIn0pLnNob3coKSxkLmNzcyh7ZGlzcGxheToiYmxvY2sifSksZigpKSk7Yy5vZmYoInJldmVhbDpvcGVuIil9KTtjLm9uKCJyZXZlYWw6Y2xvc2UiLGZ1bmN0aW9uKCl7YigiYm9keSIpLmNzcygib3ZlcmZsb3ciLCJhdXRvIik7YigiLnNsb3RNYWNoaW5lQ29udGFpbmVyIikuaGlkZSgpO2lmKCFnJiYoZz0hMCwiZmFkZUFuZFBvcCI9PWEuYW5pbWF0aW9uJiYoZC5kZWxheShhLmFuaW1hdGlvbnNwZWVkKS5mYWRlT3V0KGEuYW5pbWF0aW9uc3BlZWQpLGMuYW5pbWF0ZSh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLW0rInB4IixvcGFjaXR5OjB9LAphLmFuaW1hdGlvbnNwZWVkLzIsZnVuY3Rpb24oKXtjLmNzcyh7dG9wOmgsb3BhY2l0eToxLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTtmKCl9KSksImZhZGUiPT1hLmFuaW1hdGlvbiYmKGQuZGVsYXkoYS5hbmltYXRpb25zcGVlZCkuZmFkZU91dChhLmFuaW1hdGlvbnNwZWVkKSxjLmFuaW1hdGUoe29wYWNpdHk6MH0sYS5hbmltYXRpb25zcGVlZCxmdW5jdGlvbigpe2MuY3NzKHtvcGFjaXR5OjEsdmlzaWJpbGl0eToiaGlkZGVuIix0b3A6aH0pO2YoKX0pKSwibm9uZSI9PWEuYW5pbWF0aW9uJiYoYy5jc3Moe3Zpc2liaWxpdHk6ImhpZGRlbiIsdG9wOmh9KSxkLmNzcyh7ZGlzcGxheToibm9uZSJ9KSksImV4dGVybmFsQW5pbWF0aW9uIj09YS5hbmltYXRpb24pKWMuaGlkZSgpLm9uZSgiYW5pbWF0aW9uRW5kIixmdW5jdGlvbigpe2IodGhpcykuY3NzKHt2aXNpYmlsaXR5OiJoaWRkZW4iLHRvcDpoLGRpc3BsYXk6Im5vbmUifSk7ZC5jc3Moe2Rpc3BsYXk6Im5vbmUifSl9KTtjLm9mZigicmV2ZWFsOmNsb3NlIik7CiJ1bmRlZmluZWQiIT10eXBlb2YgYS5jbG9zZWQmJmEuY2xvc2VkKCl9KTtjLnRyaWdnZXIoInJldmVhbDpvcGVuIik7YigiLiIrYS5kaXNtaXNzbW9kYWxjbGFzcykub24oImNsaWNrLm1vZGFsRXZlbnQgdG91Y2hzdGFydCIsZnVuY3Rpb24oKXtjLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSk7YS5jbG9zZW9uYmFja2dyb3VuZGNsaWNrJiYoZC5jc3Moe2N1cnNvcjoicG9pbnRlciJ9KSxkLm9uKCJjbGljay5tb2RhbEV2ZW50IixmdW5jdGlvbigpe2MudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9KSk7aWYoYS5jbG9zZW9uZXNjYXBlKWIoImJvZHkiKS5vbigia2V5dXAiLGZ1bmN0aW9uKGspezI3PT09ay53aGljaCYmYy50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pfSl9fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL3Byb21vX2R5bmFtaWNfZmlsZV9mci5qcyAqKi8KKGZ1bmN0aW9uKCl7fSk7Ci8qKiAvbS9qcy90cmFkZUluQmFyLmpzICoqLwp2YXIgX19fZDJjX3RyYWRlSW5CYXJqc19jX29uPSIyMDI2LTAxLTI3IDEwOjMwOjA5IjsndXNlIHN0cmljdCc7ZnVuY3Rpb24gdHJhZGVJbkJhckluaXRpYWxpemUoKXtmb3IodmFyIHA9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1ha2UiXScpLGs9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1vZGVsIl0nKSxsPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKSxxPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKSxnPSQoJ2lucHV0W25hbWU9InRyYWRpblZpbiJdJyksdT17fSx3PShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTsxOTk5PHc7dy0tKTtwLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtwLmNzcygiYmFja2dyb3VuZCIsIiNmZmZmZmYiKX0pO2sub24oImZvY3VzIixmdW5jdGlvbigpe2suY3NzKCJiYWNrZ3JvdW5kIiwiI2ZmZmZmZiIpfSk7bC5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7bC5jc3MoImJhY2tncm91bmQiLCIjZmZmZmZmIil9KTtxLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtxLmNzcygiYmFja2dyb3VuZCIsIiNmZmZmZmYiKX0pO3ZhciBoPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwoiRU5HTElTSCI6IkZSRU5DSCIsQT0nPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/Ik1vZGVsIjoiTW9kJmVncmF2ZTtsZSIpKyI8L29wdGlvbj4iLEQ9JzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iLEY9JzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJZZWFyIjoiQW5uJmVhY3V0ZTtlIikrIjwvb3B0aW9uPiI7JChkb2N1bWVudCkub24oInRyYWRlSW5CYXIuY2xvbmVkIixmdW5jdGlvbigpe3A9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1ha2UiXScpO2s9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1vZGVsIl0nKTtsPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKTtxPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKTtnPSQoJ2lucHV0W25hbWU9InRyYWRpblZpbiJdJyk7cC52YWwocC52YWwoKSk7cS52YWwocS52YWwoKSk7ay52YWwoay52YWwoKSk7bC52YWwobC52YWwoKSl9KTsKcC5vbigiY2hhbmdlIixmdW5jdGlvbigpe3AudmFsKCQodGhpcykudmFsKCkpO3EuZW1wdHkoKTtrLmVtcHR5KCk7bC5lbXB0eSgpOyIiIT10aGlzLnZhbHVlJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6dGhpcy52YWx1ZX0sc3VjY2VzczpmdW5jdGlvbihiKXt1PWI7cS5hcHBlbmQoRik7Zm9yKHZhciBmIGluIGIpcS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrZisnIj4nK2YrIjwvb3B0aW9uPiIpO2cmJmcuZmlyc3QoKSYmIiIhPWcuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIikmJihxLnZhbChnLmZpcnN0KCkuYXR0cigidmluWWVhciIpKSxxLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikpfX0pfSk7cS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBiPSQodGhpcykudmFsKCksCmY9cC52YWwoKTtxLnZhbCgkKHRoaXMpLnZhbCgpKTtrLmVtcHR5KCk7bC5lbXB0eSgpO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhck1vZGVsP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTtrLmFwcGVuZChBKTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGM9YVtkXS5uYW1lO2suYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2MrJyI+JytjKyI8L29wdGlvbj4iKX1nJiZnLmZpcnN0KCkmJiIiIT1nLmZpcnN0KCkuYXR0cigidmluTW9kZWwiKSYmKGsudmFsKGcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIpKSxrLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikpO2cuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIiwKIiIpO2cuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsIiIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO2suYXBwZW5kKEEpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgYz1hW2RdLm5hbWU7ay5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrYysnIj4nK2MrIjwvb3B0aW9uPiIpfWcmJmcuZmlyc3QoKSYmIiIhPWcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIpJiYoay52YWwoZy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIikpLGsuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSk7Zy5maXJzdCgpLmF0dHIoInZpblllYXIiLAoiIik7Zy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigwPE9iamVjdC5rZXlzKHUpLmxlbmd0aCYmIiIhPXRoaXMudmFsdWUpe2suYXBwZW5kKEEpO2Y9e307Zm9yKHZhciBlPTA7ZTx1W2JdLmxlbmd0aDtlKyspInVuZGVmaW5lZCI9PXR5cGVvZiBmW3VbYl1bZV0ubW9kZWxdJiYoay5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrdVtiXVtlXS5tb2RlbCsnIj4nK3VbYl1bZV0ubW9kZWwrIjwvb3B0aW9uPiIpLGZbdVtiXVtlXS5tb2RlbF09dVtiXVtlXS5tb2RlbCl9fSk7ay5vbigiY2hhbmdlIixmdW5jdGlvbihiKXt2YXIgZj1wLnZhbCgpO2I9cS52YWwoKTt2YXIgZT0kKHRoaXMpLnZhbCgpO2sudmFsKCQodGhpcykudmFsKCkpO2wuZW1wdHkoKTtpZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJUcmltP3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zixtb2RlbDplLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTtsLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5zdHlsZSsiICIrYVtjXS5zZXJpZXMseD1hW2NdLnV2YztkKys7bC5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsbCkucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVHJpbT93c3dpZHRoPTAiLApkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYsbW9kZWw6ZSx5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7bC5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGQ9MCxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBtPWFbY10ubmFtZSx4PWFbY10uaWQ7ZCsrO2wuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt4KyciIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0xPT1kJiYkKCJvcHRpb246ZXEoMSkiLGwpLnByb3AoInNlbGVjdGVkIiwhMCl9fSk7ZWxzZSBpZigwPE9iamVjdC5rZXlzKHUpLmxlbmd0aCYmIiIhPXRoaXMudmFsdWUpe2wuYXBwZW5kKEQpO2ZvcihlPWY9MDtlPHVbYl0ubGVuZ3RoO2UrKyl1W2JdW2VdLm1vZGVsPT10aGlzLnZhbHVlJiYoZisrLGwuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJysKdVtiXVtlXS5zdHlsZWlkKyciIHZhbHVlPSInK3VbYl1bZV0udHJpbSsnIj4nK3VbYl1bZV0udHJpbSsiPC9vcHRpb24+IikpOzE9PWYmJiQoIm9wdGlvbjplcSgxKSIsbCkucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpfX0pO2wub24oImNoYW5nZSIsZnVuY3Rpb24oKXtsLnZhbCgkKHRoaXMpLnZhbCgpKX0pO3ZhciBCPSExO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpZy5vbigia2V5dXAiLGZ1bmN0aW9uKCl7Zy52YWwoJCh0aGlzKS52YWwoKSk7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYhQiYmKEI9ITAsJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dmluOiQodGhpcykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sCnN1Y2Nlc3M6ZnVuY3Rpb24oYil7YiYmYi5tb2RlbCYmYi5tb2RlbF95ZWFyPyhnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLGIubW9kZWwpLGcuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIixiLm1vZGVsX3llYXIpLHAudmFsKGIubWFrZSkscC5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpLHJlbW92ZVJlZFdhcm5pbmdNZXNzYWdlKCksc3dpdGNoVG9WZWhpY2xlQW5kRm9jdXNUcmltKCkpOmFkZFJlZFdhcm5pbmdNZXNzYWdlKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJVbnJlY29nbml6ZWQgVklOIjoiTklWIG5vbiByZWNvbm51Iil9LGNvbXBsZXRlOmZ1bmN0aW9uKGIpe0I9ITF9fSkpfSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKWcub24oImtleXVwIixmdW5jdGlvbigpe2cudmFsKCQodGhpcykudmFsKCkpOyQodGhpcykudmFsKCkmJjE3PD0kKHRoaXMpLnZhbCgpLmxlbmd0aCYmIUImJihCPSEwLCQuYWpheCh7dHlwZToiUE9TVCIsCnVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdWaW4\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dmluOiQodGhpcykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihiKXtiJiZiLm1vZGVsJiZiLnllYXI\/KGcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsYi5tb2RlbCksZy5maXJzdCgpLmF0dHIoInZpblllYXIiLGIueWVhcikscC52YWwoYi5tYWtlKSxwLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikscmVtb3ZlUmVkV2FybmluZ01lc3NhZ2UoKSxzd2l0Y2hUb1ZlaGljbGVBbmRGb2N1c1RyaW0oKSk6YWRkUmVkV2FybmluZ01lc3NhZ2UoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlVucmVjb2duaXplZCBWSU4iOiJOSVYgbm9uIHJlY29ubnUiKX0sCmNvbXBsZXRlOmZ1bmN0aW9uKGIpe0I9ITF9fSkpfSk7dz1nZXRVcmxWYXJzKCk7Zm9yKHZhciBHPU9iamVjdC5rZXlzKHcpLEg9Ry5sZW5ndGgsST17fTtILS07KXt2YXIgSj1HW0hdO0lbSi50b0xvd2VyQ2FzZSgpXT13W0pdfXc9STt3LnRtYWtlJiZ3LnRtb2RlbCYmdy50eWVhciYmc2V0VGltZW91dChmdW5jdGlvbigpe2xhdW5jaFRyYWRlSW5Qb3B1cCgiYXV0b21hdGljIil9LDFFMyk7d1sidHJhZGUtZnVsbCJdJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bGF1bmNoVHJhZGVJblBvcHVwKCJhdXRvbWF0aWMiKX0sMUUzKTskKCIudHJhZGVJbkJhcl9idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKGIpe2I9ITE7IiI9PXAudmFsKCkmJihwLmNzcygiYmFja2dyb3VuZCIsIiNGRjdFNzkiKSxiPSEwKTtpZigiIj09ay52YWwoKXx8bnVsbD09ay52YWwoKSlrLmNzcygiYmFja2dyb3VuZCIsIiNGRjdFNzkiKSxiPSEwO2lmKCIiPT1sLnZhbCgpfHxudWxsPT1sLnZhbCgpKWwuY3NzKCJiYWNrZ3JvdW5kIiwKIiNGRjdFNzkiKSxiPSEwO2lmKCIiPT1xLnZhbCgpfHxudWxsPT1xLnZhbCgpKXEuY3NzKCJiYWNrZ3JvdW5kIiwiI0ZGN0U3OSIpLGI9ITA7MD09YiYmbGF1bmNoVHJhZGVJblBvcHVwKCJ0cmFkZWluYmFyIil9KTtpZigiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpfHwiIj09cC52YWwoKXx8InVuZGVmaW5lZCI9PT10eXBlb2YgcC52YWwoKXx8IiI9PWsudmFsKCl8fCIiPT1xLnZhbCgpKXt2YXIgeT0kKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLHI9JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIiksdj0kKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLHo9JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKSxuPSQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKSx0PXt9LEU9ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKHcudG1vZGVsP3cudG1vZGVsLnRvTG93ZXJDYXNlKCk6IiIpLEM9dy50eWVhcjtpZigwIT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCkpJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm5pdk1ha2VNb2RlbFNlbGVjdCIpLm9uKCJjaGFuZ2UiLApmdW5jdGlvbigpeyJ2aW4iPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQiKS52YWwoKT8oJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSk6KCQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwWWVhckRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsCiJpbmxpbmUtYmxvY2siKSk7InVuZGVmaW5lZCIhPT10eXBlb2YgdHJhZGVpbnBvcHVwZDJjJiZ0cmFkZWlucG9wdXBkMmMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSk7eS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3kudmFsKCQodGhpcykudmFsKCkpO3ouZW1wdHkoKTtyLmVtcHR5KCk7di5lbXB0eSgpOyIiIT10aGlzLnZhbHVlJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6dGhpcy52YWx1ZX0sc3VjY2VzczpmdW5jdGlvbihiKXt0PWI7ei5hcHBlbmQoRik7IiIhPW4uYXR0cigidmluWWVhciIpJiYoQz1uLmF0dHIoInZpblllYXIiKSk7Zm9yKHZhciBmIGluIGIpYj0iIixDJiYoYj1mPT1DPydzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIiksei5hcHBlbmQoIjxvcHRpb24gIisKYisnIHZhbHVlPSInK2YrJyI+JytmKyI8L29wdGlvbj4iKTtDJiYoei50cmlnZ2VyKCJjaGFuZ2UiKSxDPSExKX19KX0pO3oub24oImNoYW5nZSIsZnVuY3Rpb24oKXt6LnZhbCgkKHRoaXMpLnZhbCgpKTtyLmVtcHR5KCk7di5lbXB0eSgpO3ZhciBiPSQodGhpcykudmFsKCksZj15LnZhbCgpO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhck1vZGVsP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihkKXtjb25zb2xlLmxvZyhkKTtyLmFwcGVuZChBKTtmb3IodmFyIGM9MDtjPGQubGVuZ3RoO2MrKyl7dmFyIG09ZFtjXS5uYW1lO3IuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0iIiE9Cm4uYXR0cigidmluTW9kZWwiKSYmKHIudmFsKG4uYXR0cigidmluTW9kZWwiKSksci50cmlnZ2VyKCJjaGFuZ2UiKSk7bi5hdHRyKCJ2aW5ZZWFyIiwiIik7bi5hdHRyKCJ2aW5Nb2RlbCIsIiIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2NvbnNvbGUubG9nKGQpO3IuYXBwZW5kKEEpO2Zvcih2YXIgYz0wO2M8ZC5sZW5ndGg7YysrKXt2YXIgbT1kW2NdLm5hbWU7ci5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfSIiIT1uLmF0dHIoInZpbk1vZGVsIikmJihyLnZhbChuLmF0dHIoInZpbk1vZGVsIikpLApyLnRyaWdnZXIoImNoYW5nZSIpKTtuLmF0dHIoInZpblllYXIiLCIiKTtuLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigwPE9iamVjdC5rZXlzKHQpLmxlbmd0aCYmIiIhPXRoaXMudmFsdWUpe3IuYXBwZW5kKEEpO2Y9e307Zm9yKHZhciBlPTA7ZTx0W2JdLmxlbmd0aDtlKyspaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBmW3RbYl1bZV0ubW9kZWxdKXt2YXIgYT0iIjtFJiYoYT10W2JdW2VdLm1vZGVsPT1FPydzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIik7ci5hcHBlbmQoIjxvcHRpb24gIithKycgdmFsdWU9IicrdFtiXVtlXS5tb2RlbCsnIj4nK3RbYl1bZV0ubW9kZWwrIjwvb3B0aW9uPiIpO2ZbdFtiXVtlXS5tb2RlbF09dFtiXVtlXS5tb2RlbH1FJiYoci50cmlnZ2VyKCJjaGFuZ2UiKSxFPSExKX19KTtyLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ci52YWwoJCh0aGlzKS52YWwoKSk7di5lbXB0eSgpO3ZhciBiPXoudmFsKCksZj15LnZhbCgpLGU9JCh0aGlzKS52YWwoKTsKaWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVHJpbT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zixtb2RlbDplLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTt2LmFwcGVuZChEKTtmb3IodmFyIGQ9MCxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBtPWFbY10uc3R5bGUrIiAiK2FbY10uc2VyaWVzLHg9YVtjXS51dmM7ZCsrO3YuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt4KyciIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0xPT1kJiYkKCJvcHRpb246ZXEoMSkiLHYpLnByb3AoInNlbGVjdGVkIiwic2VsZWN0ZWQiKX19KTtlbHNlIGlmKDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIiwKdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdUcmltP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLG1vZGVsOmUseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO3YuYXBwZW5kKEQpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5uYW1lLHg9YVtjXS5pZDtkKys7di5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsdikucHJvcCgic2VsZWN0ZWQiLCEwKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModCkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7di5hcHBlbmQoRCk7Zm9yKGU9Zj0wO2U8dFtiXS5sZW5ndGg7ZSsrKXRbYl1bZV0ubW9kZWw9PXRoaXMudmFsdWUmJihmKyssdi5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInKwp0W2JdW2VdLnN0eWxlaWQrJyIgdmFsdWU9IicrdFtiXVtlXS50cmltKyciPicrdFtiXVtlXS50cmltKyI8L29wdGlvbj4iKSk7MT09ZiYmJCgib3B0aW9uOmVxKDEpIix2KS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIil9fSk7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKXx8MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSl7MSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKT8odi5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKHRoaXMpLmZpbmQoIjpjaGVja2VkIikuYXR0cigiZGF0YS1zdHlsZWlkIikscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sCnN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTtpZihhLmFkZF9kZWR1Y3RfbGlzdC5sZW5ndGgpe2Zvcih2YXIgZD0wO2Q8YS5hZGRfZGVkdWN0X2xpc3QubGVuZ3RoO2QrKykkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJythLmFkZF9kZWR1Y3RfbGlzdFtkXS51b2MrJyI+JythLmFkZF9kZWR1Y3RfbGlzdFtkXS5uYW1lKyI8L29wdGlvbj4iKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLm11bHRpc2VsZWN0KHtoZWFkZXI6ITEsbm9uZVNlbGVjdGVkVGV4dDoiT3B0aW9ucyIsc2VsZWN0ZWRUZXh0OmZ1bmN0aW9uKGMsbSx4KXtyZXR1cm4gJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CmMrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpOmMrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpKygxPGM\/InMiOiIiKX0sY2xhc3NlczoidHJhZGVJbkJhck11bHRpc2VsZWN0In0pLm11bHRpc2VsZWN0KCJyZWZyZXNoIik7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLnNob3coKX1lbHNlICQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSl9KSxuLm9uKCJwYXN0ZSIsZnVuY3Rpb24oKXtsZXQgYT0kKHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnRyaWdnZXIoImtleXVwIil9LAoyMDApfSksbi5vbigia2V5dXAiLGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt2aW46JCh0aGlzKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2EmJmEubW9kZWwmJmEubW9kZWxfeWVhcj8obi5maXJzdCgpLmF0dHIoInZpbk1vZGVsIixhLm1vZGVsKSxuLmZpcnN0KCkuYXR0cigidmluWWVhciIsYS5tb2RlbF95ZWFyKSx5LnZhbChhLm1ha2UpLHkuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSxmKCksZSgpKTpiKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwoiVW5yZWNvZ25pemVkIFZJTiI6Ik5JViBub24gcmVjb25udSIpfX0pfSkpOjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkmJih2Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nT3B0aW9ucz93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntpZDokKHRoaXMpLmZpbmQoIjpjaGVja2VkIikuYXR0cigiZGF0YS1zdHlsZWlkIikscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpO2lmKGEubGVuZ3RoKXtmb3IodmFyIGQ9CjA7ZDxhLmxlbmd0aDtkKyspJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrYVtkXS5pZCsnIj4nK2FbZF0ubmFtZSsiPC9vcHRpb24+Iik7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5tdWx0aXNlbGVjdCh7aGVhZGVyOiExLG5vbmVTZWxlY3RlZFRleHQ6Ik9wdGlvbnMiLHNlbGVjdGVkVGV4dDpmdW5jdGlvbihjLG0seCl7cmV0dXJuICQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpP2MrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpOmMrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpKygxPGM\/InMiOiIiKX0sY2xhc3NlczoidHJhZGVJbkJhck11bHRpc2VsZWN0In0pLm11bHRpc2VsZWN0KCJyZWZyZXNoIik7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9ZWxzZSAkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuc2hvdygpfX0pfSksbi5vbigicGFzdGUiLGZ1bmN0aW9uKCl7bGV0IGE9JCh0aGlzKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50cmlnZ2VyKCJrZXl1cCIpfSwyMDApfSksbi5vbigia2V5dXAiLGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdWaW4\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6e3ZpbjokKHRoaXMpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7YSYmYS5tb2RlbCYmYS55ZWFyPyhuLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLGEubW9kZWwpLG4uZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIixhLnllYXIpLHkudmFsKGEubWFrZSkseS5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpLGYoKSxlKCkpOmIoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlVucmVjb2duaXplZCBWSU4iOiJOSVYgbm9uIHJlY29ubnUiKX19KX0pKTtmdW5jdGlvbiBiKGEpe3ZhciBkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKTtpZihkKXt2YXIgYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVkV2FybmluZ01lc3NhZ2UiKTtjJiZjLnJlbW92ZSgpOwpjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtjLmlkPSJyZWRXYXJuaW5nTWVzc2FnZSI7Yy50ZXh0Q29udGVudD1hO2Muc3R5bGUuY29sb3I9InJlZCI7Yy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Muc3R5bGUudG9wPSI1MCUiO2Muc3R5bGUucmlnaHQ9IjhweCI7Yy5zdHlsZS5tYXJnaW5Ub3A9IjRweCI7Yy5zdHlsZS5mb250U2l6ZT0iMTFweCI7Yy5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoLTUwJSkiO2Quc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjtkLmFwcGVuZENoaWxkKGMpfX1mdW5jdGlvbiBmKCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZFdhcm5pbmdNZXNzYWdlIik7YSYmYS5yZW1vdmUoKX1mdW5jdGlvbiBlKCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5pdk1ha2VNb2RlbFNlbGVjdE1vZGVsIik7YSYmYS5jbGljaygpOyhhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmFkZUluQmFyUG9wdXBUcmltIikpJiYKYS5mb2N1cygpfX19fTsKLyoqIC9tL2pzL3RyYWRlaW5wb3B1cC5qcyAqKi8KdmFyIF9fX2QyY190cmFkZWlucG9wdXBqc19jX29uPSIyMDI2LTA0LTEzIDE1OjMwOjA0IjsndXNlIHN0cmljdCc7dmFyIHRyYWRlaW5wb3B1cGQyYz17aW5pdDpmdW5jdGlvbigpe30sb25CZWZvcmVTdWJtaXQ6ZnVuY3Rpb24oYSl7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9Ik5FVyI7ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0ibmV3IjthLnNldHRpbmdzLnZlaGljbGVTdGF0ZT0ibmV3IjtpZigidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8IjAiPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5IYXNOZXdEZXBdIikudmFsKCkpZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IlVTRUQiLGVtYWlsSGFuZGxlci5jb25kaXRpb249InVzZWQiLGEuc2V0dGluZ3MudmVoaWNsZVN0YXRlPSJ1c2VkIjtlbWFpbEhhbmRsZXIubWFrZT0kKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKTtlbWFpbEhhbmRsZXIubW9kZWw9JCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpO2VtYWlsSGFuZGxlci55ZWFyPSQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMTUFLRSJdJykudmFsKCQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKTsKJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxNT0RFTCJdJykudmFsKCQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxZRUFSIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlNUT0NLTlVNQkVSIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLnZhbCgpKTskKCIjdmVoaWNsZWNvbG9yIikubGVuZ3RoJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDT0xPUiJdJykudmFsKCQoIiN2ZWhpY2xlY29sb3IiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpKSwKZW1haWxIYW5kbGVyLmNhcjJfbWFrZT0kKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpJiYoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpKSxlbWFpbEhhbmRsZXIuY2FyMl9tb2RlbD0kKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpKSwkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIG9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoImRhdGEtc3R5bGVpZCIpKSwKZW1haWxIYW5kbGVyLmNhcjJfdHJpbT0kKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkpLGVtYWlsSGFuZGxlci5jYXIyX3llYXI9JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLmxlbmd0aCYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKS52YWwoKSYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVklORVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTml2IikudmFsKCkpOyQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCdpbnB1dFtuYW1lPSJ0cmFkZWluYmFyUmVnaXN0ZXJQYXJ0aWFsSUQiXScpLmxlbmd0aCYmCihlbWFpbEhhbmRsZXIudHJhZGVpbmJhclJlZ2lzdGVyUGFydGlhbElEPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCdpbnB1dFtuYW1lPSJ0cmFkZWluYmFyUmVnaXN0ZXJQYXJ0aWFsSUQiXScpLnZhbCgpKTtlbWFpbEhhbmRsZXIuY2FyMl9vZG9tZXRlcj0kKCIjcmViYXRlTWlsZWFnZV90cmFkZUluQmFyUG9wdXAiKS52YWwoKTthLnNldHRpbmdzLmNsb3NlT25TdWJtaXQ9ITE7aWYoISQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5sZW5ndGgmJjA9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgpJiYxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKXJldHVybiB0aGlzLm9uQmVmb3JlU3VibWl0Q0JCQ2FsbChhKSwhMTtpZighJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLmxlbmd0aCYmMD09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKCkmJgoxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKXJldHVybiB0aGlzLm9uQmVmb3JlU3VibWl0QWNjdXRyYWRlQ2FsbChhKSwhMTtpZigkKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikubGVuZ3RoJiYxPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoKSYmMT09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKCkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpdGhpcy5vbkJlZm9yZVN1Ym1pdENCQk1lc3NhZ2UoYSk7ZWxzZSBpZigkKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikubGVuZ3RoJiYxPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoKSYmMT09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKCkmJjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpdGhpcy5vbkJlZm9yZVN1Ym1pdEFjY3V0cmFkZU1lc3NhZ2UoYSk7CmlmKCIxIj09PSQoImlucHV0W25hbWU9c3RlcDNhY3RpdmVdIikudmFsKCkmJiIwIj09PSQoImlucHV0W25hbWU9c3RlcDNkb25lXSIpLnZhbCgpKXJldHVybiB0aGlzLmluaXRUcmFkZUluU3RlcDMoKSwhMTthLnNldHRpbmdzLmNsb3NlT25TdWJtaXQ9ITB9LG9uQWZ0ZXJTdWJtaXQ6ZnVuY3Rpb24oYSl7JCgiYm9keSIpLnRyaWdnZXIoIlRyYWRlSW5CYXJQb3B1cFdpZGdldF9vblN1Ym1pdCIsW10pO2E9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1kZWZhdWx0U3VibWl0TWVzYWdlXSIpLnZhbCgpOzA9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgpJiYxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpJiYoYT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPW5vVmFsdWVTdWJtaXRNZXNhZ2VdIikudmFsKCkpO2xldCBrPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkxvd10iKS52YWwoKXx8CjAsZD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbCgpfHwwLGI9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgpfHwwO3ZhciBjPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpO2lmKDE9PQokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVJFQUxUSU1FRVNUSU1BVEVdIikudmFsKCkpe3ZhciBoPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTtsZXQgZT0nPHNwYW4gc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTZweDsiPjxicj4nK2MrIjwvc3Bhbj4iLG49IiI7JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IjEiPT1oP2UrPSI8YnI+RXN0aW1hdGVkIFZhbHVlOiAkIitiOihlKz0iPGJyPk1pbmltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIitrLGUrPSI8YnI+TWF4aW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2QpOiIxIj09aD9lKz0iPGJyPlZhbGV1ciBlc3RpbcOpZTogIitiKyIkIjooZSs9Ijxicj5WYWxldXIgZXN0aW3DqWUgbWluaW1hbGU6ICIraysiJCIsZSs9Ijxicj5WYWxldXIgZXN0aW3DqWUgbWF4aW1hbGU6ICIrZCsiJCIpO24rPSc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDttYXJnaW4tdG9wOjEwcHg7Ij4nKwokKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8L2Rpdj4iO2ErPSc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToyMHB4OyI+JytlKyI8L2Rpdj4iK259JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2VfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIHAiKS5odG1sKCI8YnI+IithKTtsZXQgZz1pc05hTihwYXJzZUludChiKSk\/ZDpiO2lzTmFOKHBhcnNlSW50KGcpKXx8KGE9bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiVHJhZGVJbkFjdGlvbkJveCIsb25Db21wbGV0ZTplPT57ZS5kYXRhc2V0LmNvbXBsX3R4dF9mcj1lLmRhdGFzZXQuY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskVFJBREVDQVJ9IixjKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsZyk7ZS5kYXRhc2V0LmNvbXBsX3R4dF9lbj0KZS5kYXRhc2V0LmNvbXBsX3R4dF9lbi5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsYykucmVwbGFjZSgieyRUUkFERVZBTH0iLGcpO3ZhciBuPXt5ZWFyOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLG1ha2U6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksbW9kZWw6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpLHRyaW06JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCksdmFsdWU6cGFyc2VJbnQoZy5yZXBsYWNlKCIsIiwiIikpfTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIixKU09OLnN0cmluZ2lmeShuKSwxKTtpZigxPnBhcnNlSW50KGcpKXtuPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUVuXSIpLnZhbCgpO2xldCByPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUZyXSIpLnZhbCgpOwplLmRhdGFzZXQuY29tcGxfdHh0X2ZyPWAke2N9IHwgJHtyfWA7ZS5kYXRhc2V0LmNvbXBsX3R4dF9lbj1gJHtjfSB8ICR7bn1gfX0sZm9yY2VVcGRhdGU6ITB9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChhKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkxvd10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMCk7JCgiLnRyYWRlSW5CYXJTdGVwMSIpLnNob3coKTskKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoKS5yZXBsYWNlKCIgIitjLCIiKSk7JCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF0iKS5yZW1vdmVDbGFzcygicmVxUmFkaW8iKTsKJCgiLnRyYWRlSW5CYXJTdGVwMiIpLmhpZGUoKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoMCk7JCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLnByb3AoImNoZWNrZWQiLCExKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKCIiKX0sb25CZWZvcmVPcGVuOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPWdldFVybFZhcnMoKSxrPU9iamVjdC5rZXlzKGEpLGQ9ay5sZW5ndGgsYj17fTtkLS07KXt2YXIgYz1rW2RdO2JbYy50b0xvd2VyQ2FzZSgpXT1hW2NdfWE9Yjt2YXIgaD0kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJykudmFsKCk\/JCgnc2VsZWN0W25hbWU9InRyYWRpbk1ha2UiXScpLnZhbCgpOmQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcihhLnRtYWtlPwphLnRtYWtlLnRvTG93ZXJDYXNlKCk6IiIpLGc9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1vZGVsIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpLnZhbCgpOmQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcihhLnRtb2RlbD9hLnRtb2RlbC50b0xvd2VyQ2FzZSgpOiIiKTtrPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdJykudmFsKCk6IiAiO2Q9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0gb3B0aW9uOnNlbGVjdGVkJykuYXR0cigiZGF0YS1zdHlsZWlkIik6IiAiO3ZhciBlPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluWWVhciJdJykudmFsKCk6YS50eWVhcjthPSQoJ2lucHV0W25hbWU9InRyYWRpblZpbiJdJykudmFsKCk\/JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKS52YWwoKToKIiI7JCgidHJhZGVJblNlbGVjdGVkTWFrZSIpLnZhbChoKTskKCJ0cmFkZUluU2VsZWN0ZWRNb2RlbCIpLnZhbChnKTskKCJ0cmFkZUluU2VsZWN0ZWRUcmltIikudmFsKGspOyQoInRyYWRlSW5TZWxlY3RlZFllYXIiKS52YWwoZSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoaCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKGcpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKGspOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKGUpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoZCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVklORVgiXScpLnZhbChhKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlKXt2YXIgbjsKYT1udWxsIT0obj1jbGllbnRTdG9yYWdlLmdldCgiZmlyc3RuYW1lIikpP246IiI7dmFyIHI7bj1udWxsIT0ocj1jbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKSk\/cjoiIjtyPWErKCIiIT1uPyIgIitjbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKToiIik7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRk5BTUUiXScpLnZhbChyKTt2YXIgZjskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTFBIT05FIl0nKS52YWwobnVsbCE9KGY9Y2xpZW50U3RvcmFnZS5nZXQoInBob25lIikpP2Y6IiIpO3ZhciB1OyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMIl0nKS52YWwobnVsbCE9KHU9Y2xpZW50U3RvcmFnZS5nZXQoImVtYWlsIikpP3U6IiIpfWVtYWlsSGFuZGxlci5jYXIyX21ha2U9aDtlbWFpbEhhbmRsZXIuY2FyMl9tb2RlbD1nO2VtYWlsSGFuZGxlci5jYXIyX3RyaW09aztlbWFpbEhhbmRsZXIuY2FyMl95ZWFyPQplO2VtYWlsSGFuZGxlci5jYXIyX29kb21ldGVyPSQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLnZhbCgpO2VtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJORVciO2lmKCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiMCI9PSQoImlucHV0W25hbWU9dHJhZGVJbkhhc05ld0RlcF0iKS52YWwoKSllbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iVVNFRCI7Zj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iICIrZSsiICIraCsiICIrZzoiICIraCsiICIrZysiICIrZTskKCIjdHJhZGVJbkJhclBvcHVwU2VsZWN0ZWRWZWhpY2xlIikuaHRtbChmKTtDb29raWVzLmdldCgicG9wdXBQYWdlVmlld3MiKXx8Q29va2llcy5zZXQoInBvcHVwUGFnZVZpZXdzIiwiMCIsbnVsbCwiLyIpO2lmKCIxIj09JCgiI2lzTW9iaWxlIikudmFsKCl8fCIiPT1ofHwiIj09Z3x8IiI9PWUpeyIxIiE9JCgiI2lzTW9iaWxlIikudmFsKCkmJigkKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLAoiNjgwcHgiKSwkKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI2ODBweCIpKTskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmFkZENsYXNzKCJyZXF1aXJlZCIpOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuZW1wdHkoKTskKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5hZGRDbGFzcygicmVxdWlyZWQiKTskKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5lbXB0eSgpOyQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikuYWRkQ2xhc3MoInJlcXVpcmVkIik7JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5lbXB0eSgpOyJ2aW4iIT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCk\/KCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksCiQoIiN0cmFkZUluQmFyUG9wdXBZZWFyRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIikpOiQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKTswIT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCkmJigkKCcubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3RbdmFsdWU9IicrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCTU9ERUxTRUxFQ1QiXScpLnZhbCgpKyciXScpLnByb3AoImNoZWNrZWQiLCEwKSwkKCIubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIikuc2hvdygpKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbURpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYWRkQ2xhc3MoInJlcXVpcmVkIik7CiQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuZW1wdHkoKTtmPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgdHJhZGUtaW4hIjoiIMOpY2hhbmdlISI7JCgiI3RyYWRlSW5CYXJQb3B1cFNlbGVjdGVkVmVoaWNsZSIpLmh0bWwoZik7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm5pdk1ha2VNb2RlbFNlbGVjdCIpLmxlbmd0aCYmJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm5pdk1ha2VNb2RlbFNlbGVjdCIpLnRyaWdnZXIoImNoYW5nZSIpO3ZhciBxPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIjskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrCigiRU5HTElTSCI9PXE\/Ik1ha2UiOiJNYXJxdWUiKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBsPTA7bDxtLmxlbmd0aDtsKyspe3ZhciBwPW1bbF0ubWFrZS50b0xvd2VyQ2FzZSgpPT1oLnRvTG93ZXJDYXNlKCk\/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiO2xldCB0PTE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCk\/bVtsXS5tYWtlLnRvVXBwZXJDYXNlKCk6bVtsXS5tYWtlOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuYXBwZW5kKCI8b3B0aW9uICIrcCsnIHZhbHVlPSInK3QrJyI+JyttW2xdLm1ha2UrIjwvb3B0aW9uPiIpfSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudHJpZ2dlcigiY2hhbmdlIik7JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLmxlbmd0aCYmJCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLnRyaWdnZXIoImtleXVwIil9fSl9ZWxzZSIgIj09az8oJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW1EaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwKJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hZGRDbGFzcygicmVxdWlyZWQiKSwkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmVtcHR5KCkscT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iRU5HTElTSCI6IkZSRU5DSCIsMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKT8kLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVHJpbT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxLG1ha2U6aCxtb2RlbDpnLHllYXI6ZX0sc3VjY2VzczpmdW5jdGlvbihtKXskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PXE\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgbD0wO2w8bS5sZW5ndGg7bCsrKXt2YXIgcD1tW2xdLnN0eWxlKyIgIittW2xdLnNlcmllcywKdD1tW2xdLnV2YzskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicrdCsnIiB2YWx1ZT0iJytwKyciPicrcCsiPC9vcHRpb24+Iil9fX0pOjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCk\/JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09cT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1RyaW0\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6cSxtYWtlOmgsbW9kZWw6Zyx5ZWFyOmV9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1xPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGw9MDtsPG0ubGVuZ3RoO2wrKyl7dmFyIHA9bVtsXS5uYW1lLHQ9bVtsXS5pZDskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicrCnQrJyIgdmFsdWU9IicrcCsnIj4nK3ArIjwvb3B0aW9uPiIpfX19KTokLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxLG1ha2U6aH0sc3VjY2VzczpmdW5jdGlvbihtKXskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PXE\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgbD0wO2w8bVtlXS5sZW5ndGg7bCsrKW1bZV1bbF0ubW9kZWwudG9Mb3dlckNhc2UoKT09Zy50b0xvd2VyQ2FzZSgpJiYkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJyttW2VdW2xdLnRyaW0rJyI+JyttW2VdW2xdLnRyaW0rIjwvb3B0aW9uPiIpfX0pKTooJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5oaWRlKCksCiQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikucmVtb3ZlQ2xhc3MoInJlcXVpcmVkIiksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnJlbW92ZUNsYXNzKCJyZXF1aXJlZCIpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikucmVtb3ZlQ2xhc3MoInJlcXVpcmVkIiksJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW1EaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5yZW1vdmVDbGFzcygicmVxdWlyZWQiKSwxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpPygkKCIubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5oaWRlKCksJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwoiL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihtKXskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSkpOjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkmJigkKCIubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIikuaGlkZSgpLAokKCIjdHJhZGVJbkJhclBvcHVwTml2RGl2Q29udGFpbmVyIikuaGlkZSgpLCQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ09wdGlvbnM\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7aWQ6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuc2hvdygpfX0pKSk7CmE9Z2V0VXJsVmFycygpO2Y9YS5oYXNPd25Qcm9wZXJ0eSgidHJhZGUtdmFsdWUiKSYmInllcyI9PWFbInRyYWRlLXZhbHVlIl07dT1hLmhhc093blByb3BlcnR5KCJ0cmFkZS12YWx1ZSIpJiYibm8iPT1hWyJ0cmFkZS12YWx1ZSJdO3I9JCgnaW5wdXRbbmFtZT0iQ0JCQ2hlY2tVc2VyIl0nKS5sZW5ndGg\/YXRvYigkKCdpbnB1dFtuYW1lPSJDQkJDaGVja1VzZXIiXScpLnZhbCgpKToiIjt1fHwiNjYuMTMwLjEwNy4xNTciIT1yJiYxIT1Db29raWVzLmdldCgiRDJDVVVJRCIpJiYhZnx8MT09JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKXx8KCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkZOQU1FIl0nKS5oaWRlKCksJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxQSE9ORSJdJykuaGlkZSgpLCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMIl0nKS5oaWRlKCksJCgiLnRyYWRlSW5CYXJEZWFsZXJNZXNzYWdlIikuc2hvdygpKTsKJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9IkVNQUlMUEhPTkUiXScpLmVhY2goKG0sbCk9PntJTWFzayhsLHttYXNrOlt7bWFzazoiMDAwIDAwMC0wMDAwIn0se21hc2s6IjEgMDAwIDAwMC0wMDAwIn1dfSl9KTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciAudHJhZGVJbkRpc2NsYWltZXJTaG9ydCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtsZXQgbT0kKHRoaXMpLmZpbmQoIi50cmFkZUluRGlzY2xhaW1lckNvbnRlbnQiKS5odG1sKCk7JCgiLnRyYWRlSW5EaXNjbGFpbWVyRHJhd2VyIC50cmFkZUluRGlzY2xhaW1lckNvbnRlbnQiKS5lbXB0eSgpLmh0bWwobSk7JCgiLnRyYWRlSW5EaXNjbGFpbWVyRHJhd2VyIikuc2hvdygpLmFkZENsYXNzKCJvcGVuIil9KTskKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIC50cmFkZUluRGlzY2xhaW1lckNsb3NlIikub24oImNsaWNrIixmdW5jdGlvbigpeyQoIi50cmFkZUluRGlzY2xhaW1lckRyYXdlciIpLnJlbW92ZUNsYXNzKCJvcGVuIikuaGlkZSgpfSk7CnRoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSxvbkJlZm9yZVZhbGlkYXRpb246ZnVuY3Rpb24oYSl7dmFyIGs9Z2V0VXJsVmFycygpO2E9ay5oYXNPd25Qcm9wZXJ0eSgidHJhZGUtdmFsdWUiKSYmInllcyI9PWtbInRyYWRlLXZhbHVlIl07az1rLmhhc093blByb3BlcnR5KCJ0cmFkZS12YWx1ZSIpJiYibm8iPT1rWyJ0cmFkZS12YWx1ZSJdO3ZhciBkPSQoJ2lucHV0W25hbWU9IkNCQkNoZWNrVXNlciJdJykubGVuZ3RoP2F0b2IoJCgnaW5wdXRbbmFtZT0iQ0JCQ2hlY2tVc2VyIl0nKS52YWwoKSk6IiI7aWYoIWsmJigiNjYuMTMwLjEwNy4xNTciPT1kfHwxPT1Db29raWVzLmdldCgiRDJDVVVJRCIpfHxhKSYmMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSl7JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJgoiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkpLCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0gb3B0aW9uOnNlbGVjdGVkIikuYXR0cigiZGF0YS1zdHlsZWlkIikpKTsKJCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkpO2lmKDE+JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikudmFsKCkpcmV0dXJuICQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSwhMTthPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9KS5nZXQoKS5qb2luKCIsICIpO3ZhciBiPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dH0pLmdldCgpLmpvaW4oIiwgIik7Cms9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iS00iXScpLnZhbCgpOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCksb3B0aW9uczphLHZlaGljbGVLTTprLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYyl7dmFyIGg9Yy5jYW5hZGlhbl90cmFkZWluX3ZhbHVlfHxjLmJhc2VfdHJhZGVpbl9hdmd8fDAsZz1jLmNhbmFkaWFuX3RyYWRlaW5fbG93fHxjLmJhc2VfdHJhZGVpbl9yb3VnaHx8MDtjPWMuY2FuYWRpYW5fdHJhZGVpbl9oaWdofHwKYy5iYXNlX3RyYWRlaW5fY2xlYW58fDA7aD0iJCIrRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGgpO2c9IiQiK0QyQ1V0aWxzLkZvcm1hdC50b051bWJlcihnKTtjPSIkIitEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYyk7dmFyIGU9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKwokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgpO2ImJihlKz0iICgiK2IrIikiKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJEZWFsZXJTdGVwTWFrZU1vZGVsWWVhciIpLnRleHQoZSk7IjEiPT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk\/KCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1pblZhbHVlIikucGFyZW50KCkuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1heFZhbHVlIikucGFyZW50KCkuaGlkZSgpKTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJBdmdWYWx1ZSIpLnBhcmVudCgpLmhpZGUoKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCTWluVmFsdWUiKS50ZXh0KGcpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1heFZhbHVlIikudGV4dChjKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJBdmdWYWx1ZSIpLnRleHQoaCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIikuc2hvdygpfX0pO3JldHVybiExfX0sb25CZWZvcmVTdWJtaXRDQkJDYWxsOmZ1bmN0aW9uKGEpe3ZhciBrPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9KS5nZXQoKS5qb2luKCIsICIpLGQ9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fSkuZ2V0KCkuam9pbigiLCAiKTsKIiIhPWQmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKGQpO2Q9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iS00iXScpLnZhbCgpOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCksb3B0aW9uczprLHZlaGljbGVLTTpkLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYil7dmFyIGM9Yi5jYW5hZGlhbl90cmFkZWluX3ZhbHVlfHxiLmJhc2VfdHJhZGVpbl9hdmd8fAowLGg9Yi5jYW5hZGlhbl90cmFkZWluX2xvd3x8Yi5iYXNlX3RyYWRlaW5fcm91Z2h8fDA7Yj1iLmNhbmFkaWFuX3RyYWRlaW5faGlnaHx8Yi5iYXNlX3RyYWRlaW5fY2xlYW58fDA7dmFyIGc9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRSJdJykudmFsKCksZT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFTUFLRVMiXScpLnZhbCgpLG49JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRVRZUEUiXScpLnZhbCgpLHI9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpOzAhPWcmJiIiIT1lJiYtMTxlLnNwbGl0KCI7IikuaW5kZXhPZigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKSYmKCJjYXNoIj09bj8oYys9cGFyc2VJbnQoZyksaCs9cGFyc2VJbnQoZyksYis9CnBhcnNlSW50KGcpKToicGVyY2VudGFnZSI9PW4mJihnPTErZy8xMDAsYyo9ZyxoKj1nLGIqPWcpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIixjKTtpZigkKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS5sZW5ndGgpe2c9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCk7ZT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKTtuPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKTtsZXQgbD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS52YWwoZSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1vZGVsXSIpLnZhbChuKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluWWVhcl0iKS52YWwoZyk7CiQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5UcmltXSIpLnZhbChsKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVmFsdWVdIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIpKTskKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIiwiIil9aWYoMT09YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXApe2xldCBsPWlzTmFOKHBhcnNlSW50KGMpKT8wOmM7bD1EMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIobCk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKTt2YXIgZjtjPW51bGwhPShmPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkpP2Y6IiI7dmFyIHU7Zj1udWxsIT0odT1jLnNwbGl0KCIgIilbMF0pP3U6IiI7dmFyIHE7dT1udWxsIT0ocT1jLnNwbGl0KCIgIilbMV0pP3E6IiI7ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9ZjtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPXU7dmFyIG09JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsKIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpO2lzTmFOKHBhcnNlSW50KGwpKXx8KHE9bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiVHJhZGVJbkFjdGlvbkJveCIsb25Db21wbGV0ZTpwPT57cC5kYXRhc2V0LmNvbXBsX3R4dF9mcj1wLmRhdGFzZXQuY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskVFJBREVDQVJ9IixtKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsbCk7cC5kYXRhc2V0LmNvbXBsX3R4dF9lbj1wLmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoInskVFJBREVDQVJ9IixtKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsbCk7dmFyIHQ9e3llYXI6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksbWFrZTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSwKbW9kZWw6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpLHRyaW06JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCksdmFsdWU6cGFyc2VJbnQobC5yZXBsYWNlKCIsIiwiIikpfTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIixKU09OLnN0cmluZ2lmeSh0KSwxKTtpZigxPnBhcnNlSW50KGwpKXt0PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUVuXSIpLnZhbCgpO2xldCB2PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUZyXSIpLnZhbCgpO3AuZGF0YXNldC5jb21wbF90eHRfZnI9YCR7bX0gfCAke3Z9YDtwLmRhdGFzZXQuY29tcGxfdHh0X2VuPWAke219IHwgJHt0fWB9fSxmb3JjZVVwZGF0ZTohMH19KSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHEpKTthLnNldHRpbmdzLmZvcm11bHRpc3RlcD0KITE7YS5jbG9zZSgpfWVsc2UgJCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKDEpLCIxIj09cj9iPWg9InJlbW92ZWVtcHR5IjpjPSJyZW1vdmVlbXB0eSIsMDxofHwwPGJ8fDA8Yz8oJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGMpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoaCkpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYikpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMSksdHJhZGVpbnBvcHVwZDJjLmluaXRUcmFkZUluU3RlcDIoYSkscG9wdXBJc1N1Ym1pdHRpbmc9ITEpOihwb3B1cElzU3VibWl0dGluZz0hMSwKJCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKDEpLCQoIi50cmFkZUluQmFyUG9wdXBTdWJtaXQiKS50cmlnZ2VyKCJjbGljayIpKX19KX0sb25CZWZvcmVTdWJtaXRBY2N1dHJhZGVDYWxsOmZ1bmN0aW9uKGEpe3ZhciBrPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9KS5nZXQoKS5qb2luKCIsICIpLGQ9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fSkuZ2V0KCkuam9pbigiLCAiKTsiIiE9ZCYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iUVVFU1RJT05TIl0nKS52YWwoZCk7ZD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJLTSJdJykudmFsKCk7CnZhciBiPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJDT0xPUkVYIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5hdHRyKCJkYXRhLWlkIik7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7aWQ6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLG9wdGlvbnM6ayxrbTpkLGNvbG9yOmIscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihjKXt2YXIgaD1jLmF2Z3x8MCxnPWMubG93fHwwO2M9Yy5oaWdofHwwO3ZhciBlPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUUiXScpLnZhbCgpLApuPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUVNQUtFUyJdJykudmFsKCkscj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFVFlQRSJdJykudmFsKCksZj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk7MCE9ZSYmIiIhPW4mJi0xPG4uc3BsaXQoIjsiKS5pbmRleE9mKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkpJiYoImNhc2giPT1yPyhoKz1wYXJzZUludChlKSxnKz1wYXJzZUludChlKSxjKz1wYXJzZUludChlKSk6InBlcmNlbnRhZ2UiPT1yJiYoZT0xK2UvMTAwLGgqPWUsZyo9ZSxjKj1lKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIsaCk7aWYoJCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikubGVuZ3RoKXtlPQokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKTtuPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpO3I9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpO2xldCBwPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLnZhbChuKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTW9kZWxdIikudmFsKHIpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5ZZWFyXSIpLnZhbChlKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVHJpbV0iKS52YWwocCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblZhbHVlXSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciKSk7JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIikpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciLCIiKX1pZigxPT1hLnNldHRpbmdzLmZvcm11bHRpc3RlcCl7bGV0IHA9aXNOYU4ocGFyc2VJbnQoaCkpPzA6aDtwPUQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihwKTtlbWFpbEhhbmRsZXIudXNlckVtYWlsPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxdIikudmFsKCk7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMUEhPTkVdIikudmFsKCk7dmFyIHU7aD1udWxsIT0odT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKT91OiIiO3ZhciBxO3U9bnVsbCE9KHE9aC5zcGxpdCgiICIpWzBdKT9xOiIiO3ZhciBtO3E9bnVsbCE9KG09aC5zcGxpdCgiICIpWzFdKT9tOiIiO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPXU7ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT0KcTt2YXIgbD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKTtpc05hTihwYXJzZUludChwKSl8fChtPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlRyYWRlSW5BY3Rpb25Cb3giLG9uQ29tcGxldGU6dD0+e3QuZGF0YXNldC5jb21wbF90eHRfZnI9CnQuZGF0YXNldC5jb21wbF90eHRfZnIucmVwbGFjZSgieyRUUkFERUNBUn0iLGwpLnJlcGxhY2UoInskVFJBREVWQUx9IixwKTt0LmRhdGFzZXQuY29tcGxfdHh0X2VuPXQuZGF0YXNldC5jb21wbF90eHRfZW4ucmVwbGFjZSgieyRUUkFERUNBUn0iLGwpLnJlcGxhY2UoInskVFJBREVWQUx9IixwKTt2YXIgdj17eWVhcjokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKSxtYWtlOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpLG1vZGVsOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKSx0cmltOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpLHZhbHVlOnBhcnNlSW50KHAucmVwbGFjZSgiLCIsIiIpKX07X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9zdWJtaXRfZGF0YSIsSlNPTi5zdHJpbmdpZnkodiksMSk7aWYoMT4KcGFyc2VJbnQocCkpe3Y9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRW5dIikudmFsKCk7bGV0IHc9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRnJdIikudmFsKCk7dC5kYXRhc2V0LmNvbXBsX3R4dF9mcj1gJHtsfSB8ICR7d31gO3QuZGF0YXNldC5jb21wbF90eHRfZW49YCR7bH0gfCAke3Z9YH19LGZvcmNlVXBkYXRlOiEwfX0pLGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobSkpO2Euc2V0dGluZ3MuZm9ybXVsdGlzdGVwPSExO2EuY2xvc2UoKX1lbHNlICQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgxKSwiMSI9PWY\/Yz1nPSJyZW1vdmVlbXB0eSI6aD0icmVtb3ZlZW1wdHkiLDA8Z3x8MDxjfHwwPGg\/KCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihoKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkxvd10iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGcpKSwKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihjKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgxKSx0cmFkZWlucG9wdXBkMmMuaW5pdFRyYWRlSW5TdGVwMihhKSx0cmFkZWlucG9wdXBkMmMuc2V0SGVpZ2h0TW9iaWxlKDIpLHRyYWRlaW5wb3B1cGQyYy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCkscG9wdXBJc1N1Ym1pdHRpbmc9ITEpOihwb3B1cElzU3VibWl0dGluZz0hMSwkKCJpbnB1dFtuYW1lPXN0ZXAzZG9uZV0iKS52YWwoMSksJCgiLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnRyaWdnZXIoImNsaWNrIikpfX0pfSxvbkJlZm9yZVN1Ym1pdENCQk1lc3NhZ2U6ZnVuY3Rpb24oYSl7JCgiI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnByb3AoImRpc2FibGVkIiwhMCk7JCgiI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTsKYT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpO3ZhciBrPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKSxkPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLGI9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksYz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCk7dmFyIGg9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgpLGc9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluTG93XSIpLnZhbCgpLGU9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoKTtkPQokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT9kKyIgIitiKyIgIitjOmIrIiAiK2MrIiAiK2Q7Yj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPWRlYWxlck5hbWVUcmFkZUluXSIpLnZhbCgpO2M9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpO3ZhciBuPSIiO2lmKCJTTVMiPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikudmFsKCkpdmFyIHI9IlNNUyIsZj0iMSI9PWM\/JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlRoZSBDYW5hZGlhbiBCbGFjayBCb29rIGVzdGltYXRlZCB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2QrIiBpcyAkIitoKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOgoiTGEgdmFsZXVyIGQnw6ljaGFuZ2UgZXN0aW3DqWUgQ2FuYWRpYW4gQmxhY2sgQm9vayBwb3VyIHZvdHJlICIrZCsiIGVzdCAkIitoKyIuIE5vdXMgY29tbXVuaXF1ZXJvbnMgYXZlYyB2b3VzIHNvdXMgcGV1IHBvdXIgZW4gZGlzY3V0ZXIuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKTokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVGhlIENhbmFkaWFuIEJsYWNrIEJvb2sgZXN0aW1hdGVkIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZCsiIGlzIGJldHdlZW4gJCIrZysiIGFuZCAkIitlKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOgoiTGEgdmFsZXVyIGQnw6ljaGFuZ2UgZXN0aW3DqWUgQ2FuYWRpYW4gQmxhY2sgQm9vayBwb3VyIHZvdHJlICIrZCsiIHNlIHNpdHVlIGVudHJlICQiK2crIiBldCAkIitlKyIuIE5vdXMgY29tbXVuaXF1ZXJvbnMgYXZlYyB2b3VzIHNvdXMgcGV1IHBvdXIgZW4gZGlzY3V0ZXIuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKTtlbHNlIHI9IkVNQUlMIixuPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJJTVBPUlRBTlQ6IFlvdXIgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitkOiJJTVBPUlRBTlQ6IExhIHZhbGV1ciBkJ8OpY2hhbmdlIGRlIHZvdHJlICIrZCwkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8oZj0iSGkgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGY9CmYrKCJGb2xsb3dpbmcgdXAgb24geW91ciByZWNlbnQgdHJhZGUgZXN0aW1hdGUgcmVxdWVzdCBmb3IgYSAiK2QrIiwgaGVyZSBpcyB0aGUgZXN0aW1hdGUgZnJvbSB0aGUgQ2FuYWRpYW4gQmxhY2sgQm9vazo8YnI+PGJyPiIpKygkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGY9IjEiPT1jP2YrKCJFc3RpbWF0ZWQgVmFsdWU6ICQiK2grIjxicj4iKTpmKygiTWluaW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2crIjxicj5NYXhpbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIpKyhlKyI8YnI+IiksZis9IihBY2NvcmRpbmcgdG8gQ2FuYWRpYW4gQmxhY2sgQm9vaywgbGVzcyByZWNvbmRpdGlvbmluZyBjb3N0cywgaWYgYXBwbGljYWJsZSk8YnI+PGJyPiIsZis9IkEgcmVwcmVzZW50YXRpdmUgd2lsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGV4cGxhaW4gdGhlIGRldGFpbHMgb2YgdGhlIHZhbHVlcy48YnI+PGJyPiIsCmYrPSJUaGFua3MgZm9yIHRydXN0aW5nICIrYisiITxicj48YnI+Iik6KGY9IkJvbmpvdXIgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGY9ZisoIlN1aXRlIMOgIHZvdHJlIGRlbWFuZGUgZCdlc3RpbWF0aW9uIGRlIGxhIHZhbGV1ciBkZSB2b3RyZSDDqWNoYW5nZSBwb3VyIHVuICIrZCsiLCB2b2ljaSBsJ8OpdmFsdWF0aW9uIGRlIHZvdHJlIHbDqWhpY3VsZSBzZWxvbiBsZSBDYW5hZGlhbiBCbGFjayBCb29rOjxicj48YnI+IikrKCQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrIjxicj48YnI+IiksZj0iMSI9PWM\/ZisoIlZhbGV1ciBlc3RpbcOpZTogJCIraCsiPGJyPiIpOmYrKCJWYWxldXIgZXN0aW3DqWUgbWluaW1hbGU6ICQiK2crIjxicj5WYWxldXIgZXN0aW3DqWUgbWF4aW1hbGU6ICQiKSsKKGUrIjxicj4iKSxmKz0iKFNlbG9uIGxlIENhbmFkaWFuIEJsYWNrIEJvb2ssIG1vaW5zIGxlcyBjb8O7dHMgZGUgcmVjb25kaXRpb25uZW1lbnQgc2kgYXBwbGljYWJsZSk8YnI+PGJyPiIsZis9IlVuIGNvbnNlaWxsZXIgZW50cmVyYSBlbiBjb21tdW5pY2F0aW9uIHNvdXMgcGV1IGF2ZWMgdm91cyBhZmluIGRlIGRpc2N1dGVyIGRlIGNldHRlIHZhbGV1ciBldCB2b3VzIGVuIGV4cGxpcXVlciBsZXMgZMOpdGFpbHMuPGJyPjxicj4iLGYrPSJNZXJjaSBkZSBmYWlyZSBjb25maWFuY2Ugw6AgIitiKyIhPGJyPjxicj4iKTtmPWJ0b2EoZik7bj1idG9hKG4pO2VtYWlsSGFuZGxlci5vbkFmdGVyTGVhZENyZWF0ZWQ9e2FjdGlvbjpyLHN1YmplY3Q6bixtZXNzYWdlOmYsZW1haWw6YSxwaG9uZTprfX0sb25CZWZvcmVTdWJtaXRBY2N1dHJhZGVNZXNzYWdlOmZ1bmN0aW9uKGEpeyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wcm9wKCJkaXNhYmxlZCIsITApOyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7CmE9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTF0iKS52YWwoKTt2YXIgaz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMUEhPTkVdIikudmFsKCksZD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKSxiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpLGM9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpO3ZhciBoPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS52YWwoKSxnPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkxvd10iKS52YWwoKSxlPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKCk7ZD0KJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ZCsiICIrYisiICIrYzpiKyIgIitjKyIgIitkO2I9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1kZWFsZXJOYW1lVHJhZGVJbl0iKS52YWwoKTtjPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTt2YXIgbj0iIjtpZigiU01TIj09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLnZhbCgpKXZhciByPSJTTVMiLGY9IjEiPT1jPyQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJBY2N1LVRyYWRlIGVzdGltYXRlZCB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2QrIiBpcyAkIitoKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOgoiTGEgdmFsZXVyIGQnw6ljaGFuZ2UgQWNjdS1UcmFkZSBlc3RpbcOpZSBwb3VyIHZvdHJlICIrZCsiIGVzdCAkIitoKyIuIE5vdXMgY29tbXVuaXF1ZXJvbnMgYXZlYyB2b3VzIHNvdXMgcGV1IHBvdXIgZW4gZGlzY3V0ZXIuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKTokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iQWNjdS1UcmFkZSBlc3RpbWF0ZWQgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitkKyIgaXMgYmV0d2VlbiAkIitnKyIgYW5kICQiK2UrIi4gV2UnbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBkaXNjdXNzLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk6IkxhIHZhbGV1ciBkJ8OpY2hhbmdlIEFjY3UtVHJhZGUgZXN0aW3DqWUgcG91ciB2b3RyZSAiKwpkKyIgc2Ugc2l0dWUgZW50cmUgJCIrZysiIGV0ICQiK2UrIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpO2Vsc2Ugcj0iRU1BSUwiLG49JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IklNUE9SVEFOVDogWW91ciB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2Q6IklNUE9SVEFOVDogTGEgdmFsZXVyIGQnw6ljaGFuZ2UgZGUgdm90cmUgIitkLCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyhmPSJIaSAiKyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkrIiw8YnI+PGJyPiIsZj1mKygiRm9sbG93aW5nIHVwIG9uIHlvdXIgcmVjZW50IHRyYWRlIGVzdGltYXRlIHJlcXVlc3QgZm9yIGEgIisKZCsiLCBoZXJlIGlzIHRoZSBlc3RpbWF0ZSBmcm9tIEFjY3UtVHJhZGU6PGJyPjxicj4iKSsoJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsiPGJyPjxicj4iKSxmPSIxIj09Yz9mKygiRXN0aW1hdGVkIFZhbHVlOiAkIitoKyI8YnI+Iik6ZisoIk1pbmltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIitnKyI8YnI+TWF4aW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiKSsoZSsiPGJyPiIpLGYrPSIoQWNjb3JkaW5nIHRvIEFjY3UtVHJhZGUsIGxlc3MgcmVjb25kaXRpb25pbmcgY29zdHMsIGlmIGFwcGxpY2FibGUpPGJyPjxicj4iLGYrPSJBIHJlcHJlc2VudGF0aXZlIHdpbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBleHBsYWluIHRoZSBkZXRhaWxzIG9mIHRoZSB2YWx1ZXMuPGJyPjxicj4iLGYrPSJUaGFua3MgZm9yIHRydXN0aW5nICIrYisiITxicj48YnI+Iik6CihmPSJCb25qb3VyICIrJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSsiLDxicj48YnI+IixmPWYrKCJTdWl0ZSDDoCB2b3RyZSBkZW1hbmRlIGQnZXN0aW1hdGlvbiBkZSBsYSB2YWxldXIgZGUgdm90cmUgw6ljaGFuZ2UgcG91ciB1biAiK2QrIiwgdm9pY2kgbCfDqXZhbHVhdGlvbiBkZSB2b3RyZSB2w6loaWN1bGUgc2Vsb24gQWNjdS1UcmFkZTo8YnI+PGJyPiIpKygkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGY9IjEiPT1jP2YrKCJWYWxldXIgZXN0aW3DqWU6ICQiK2grIjxicj4iKTpmKygiVmFsZXVyIGVzdGltw6llIG1pbmltYWxlOiAkIitnKyI8YnI+VmFsZXVyIGVzdGltw6llIG1heGltYWxlOiAkIikrKGUrIjxicj4iKSxmKz0iKFNlbG9uIEFjY3UtVHJhZGUsIG1vaW5zIGxlcyBjb8O7dHMgZGUgcmVjb25kaXRpb25uZW1lbnQgc2kgYXBwbGljYWJsZSk8YnI+PGJyPiIsCmYrPSJVbiBjb25zZWlsbGVyIGVudHJlcmEgZW4gY29tbXVuaWNhdGlvbiBzb3VzIHBldSBhdmVjIHZvdXMgYWZpbiBkZSBkaXNjdXRlciBkZSBjZXR0ZSB2YWxldXIgZXQgdm91cyBlbiBleHBsaXF1ZXIgbGVzIGTDqXRhaWxzLjxicj48YnI+IixmKz0iTWVyY2kgZGUgZmFpcmUgY29uZmlhbmNlIMOgICIrYisiITxicj48YnI+Iik7Zj1idG9hKGYpO249YnRvYShuKTtlbWFpbEhhbmRsZXIub25BZnRlckxlYWRDcmVhdGVkPXthY3Rpb246cixzdWJqZWN0Om4sbWVzc2FnZTpmLGVtYWlsOmEscGhvbmU6a319LGluaXRUcmFkZUluU3RlcDE6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgwKTsKJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF0iKS5yZW1vdmVDbGFzcygicmVxUmFkaW8iKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoMCk7JCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLnByb3AoImNoZWNrZWQiLCExKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKCIiKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuc2hvdygpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBfbGluZTEiKS5zaG93KCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoMSk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKS5zaG93KCk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LGluaXRUcmFkZUluU3RlcDI6ZnVuY3Rpb24oYSl7dmFyIGs9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoImZvcm0iKS5maXJzdCgpLnNlcmlhbGl6ZUFycmF5KCksZD0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuZmluZCgiLmVtYWlsQm9keSIpLmh0bWwoKSsiIixiPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCIuZW1haWxTdWJqZWN0IikuaHRtbCgpKwoiIixjPVtdO1tdLnB1c2guYXBwbHkoYyxrKTskLmVhY2goYyxmdW5jdGlvbigpe3ZhciBoPW5ldyBSZWdFeHAoIntcXCQiK3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpKyJ9IiwiZyIpLGc9dGhpcy52YWx1ZTsiU0VBUkNIRURWRUhJQ0xFIj09dGhpcy5uYW1lLnRvVXBwZXJDYXNlKCkmJihnPSI8c3BhbiBpZD0ncGhTRUFSQ0hWRUhJQ0xFJz4iK2crIjwvc3Bhbj4iKTtkPWQucmVwbGFjZShoLGcpO2I9Yi5yZXBsYWNlKGgsdGhpcy52YWx1ZSl9KTtlbWFpbEhhbmRsZXIuc3ViamVjdD1iO2VtYWlsSGFuZGxlci5ib2R5PWQ7ZW1haWxIYW5kbGVyLnNlbmRUbz1hLnNldHRpbmdzLmZvcm0uc2VuZFRvO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9YS5zZXR0aW5ncy5mb3JtLnNlbmRUb0FERjtlbWFpbEhhbmRsZXIubWFpbElEPWEuc2V0dGluZ3MuZm9ybS5lbWFpbGlkO2E9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmZpbmQoJ2lucHV0W25hbWU9IkZOQU1FIl0nKS52YWwoKS5zcGxpdCgiICIpOwplbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1hLnNoaWZ0KCk7ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT1hLmpvaW4oIiAiKTtlbWFpbEhhbmRsZXIudXNlclBob25lPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCdpbnB1dFtuYW1lPSJFTUFJTFBIT05FIl0nKS52YWwoKTtlbWFpbEhhbmRsZXIudXNlckVtYWlsPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCdpbnB1dFtuYW1lPSJFTUFJTCJdJykudmFsKCk7YT1lbWFpbEhhbmRsZXIuZ2V0SnNvbk9iamVjdCgpO2VtYWlsSGFuZGxlci5zdWJqZWN0PSIiO2VtYWlsSGFuZGxlci5ib2R5PSIiO2s9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWs\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L3JlZ2lzdGVyVHJhZGVMZWFkP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLApkYXRhOmEsc3VjY2VzczpmdW5jdGlvbihoKXtoLnBhcnRpYWxMZWFkSUQmJiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5maW5kKCdpbnB1dFtuYW1lPSJ0cmFkZWluYmFyUmVnaXN0ZXJQYXJ0aWFsSUQiXScpLnZhbChoLnBhcnRpYWxMZWFkSUQpfX0pOyQoIi50cmFkZUluQmFyU3RlcDEiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKS5oaWRlKCk7YT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsKIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCk7JCgiLnRyYWRlSW5CYXJTdGVwMlRpdGxlIikudGV4dCgkKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCkrIiAiK2EpOyQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdIikuYWRkQ2xhc3MoInJlcVJhZGlvIik7JCgiLnRyYWRlSW5CYXJTdGVwMiIpLnNob3coKX0saW5pdFRyYWRlSW5TdGVwMzpmdW5jdGlvbigpe3BvcHVwSXNTdWJtaXR0aW5nPSExOyQoIiN0cmFkZUluU3RlcDNZZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dHJhZGVpbnBvcHVwZDJjLnRyYWRlSW5TdGVwM1llcygpO3JldHVybiExfSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoMyk7JCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKDEpO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSx0cmFkZUluU3RlcDNZZXM6ZnVuY3Rpb24oKXt0aGlzLmluaXRUcmFkZUluU3RlcDQoKX0saW5pdFRyYWRlSW5TdGVwNDpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIiKS5oaWRlKCk7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDEiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAzIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDQiKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2IikuaGlkZSgpO3RoaXMuc2V0SGVpZ2h0TW9iaWxlKDQpOyQoIiN0cmFkZUluU3RlcDRZZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aWYoIiI9PSQoIiN0cmFkZUluS2V5U2VsZWN0IikudmFsKCkpcmV0dXJuICQoIiN0cmFkZUluS2V5U2VsZWN0IikuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLCExO3RyYWRlaW5wb3B1cGQyYy50cmFkZUluU3RlcDRDb250aW51ZSgpOwpyZXR1cm4hMX0pOyQoIiN0cmFkZUluS2V5U2VsZWN0Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXskKCIjdHJhZGVJbktleVNlbGVjdCIpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX0pO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSx0cmFkZUluU3RlcDRDb250aW51ZTpmdW5jdGlvbigpeyIiPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVZJTkVYXSIpLnZhbCgpP3RoaXMuaW5pdFRyYWRlSW5TdGVwNSgpOnRoaXMuaW5pdFRyYWRlSW5TdGVwNigpfSxpbml0VHJhZGVJblN0ZXA1OmZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1Iikuc2hvdygpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoNSk7JCgiI3RyYWRlSW5TdGVwNVllcyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt0cmFkZWlucG9wdXBkMmMudHJhZGVJblN0ZXA1Q29udGludWUoKTtyZXR1cm4hMX0pO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSx0cmFkZUluU3RlcDVDb250aW51ZTpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VklORVhdIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICNzdGVwNVZpbiIpLnZhbCgpKTt0aGlzLmluaXRUcmFkZUluU3RlcDYoKX0saW5pdFRyYWRlSW5TdGVwNjpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cF9saW5lMSIpLmhpZGUoKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluRGlzY2xhaW1lciIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLnNob3coKTt0aGlzLnNldEhlaWdodE1vYmlsZSg2KTt0aGlzLmluaXRJbWFnZVVwbG9hZCgpOyQoIiN0cmFkZUluU3RlcDZZZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5TdGVwNlllcyIpLmhpZGUoKTsKdHJhZGVpbnBvcHVwZDJjLnVwbG9hZEltYWdlc1RvQmFja2VuZCgpfSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LGluaXRJbWFnZVVwbG9hZDpmdW5jdGlvbigpe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSIpLmZvckVhY2goYT0+e2NvbnN0IGs9YS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJmaWxlIl0nKSxkPWEucXVlcnlTZWxlY3RvcigiLnBsYWNlaG9sZGVyIiksYj1hLnF1ZXJ5U2VsZWN0b3IoIi5kZWxldGUtYnRuIiksYz1hLnF1ZXJ5U2VsZWN0b3IoIi5hZGQtaWNvbiIpLGg9YS5kYXRhc2V0Lm92ZXJsYXk7aCYmKGEuc3R5bGUuYmFja2dyb3VuZEltYWdlPWB1cmwoJHtofSlgKTthLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2sudmFsdWV8fGsuY2xpY2soKX0pO2suYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixnPT57aWYoKGc9Zy50YXJnZXQuZmlsZXNbMF0pJiZnLnR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikpe2NvbnN0IGU9Cm5ldyBGaWxlUmVhZGVyO2Uub25sb2FkPSgpPT57ZC5zcmM9ZS5yZXN1bHQ7ZC5zdHlsZS5kaXNwbGF5PSJibG9jayI7YS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9Im5vbmUiO2Iuc3R5bGUuZGlzcGxheT0iYmxvY2siO2Muc3R5bGUuZGlzcGxheT0ibm9uZSJ9O2UucmVhZEFzRGF0YVVSTChnKX1lbHNlIGsudmFsdWU9IiJ9KTtiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixnPT57Zy5zdG9wUHJvcGFnYXRpb24oKTtrLnZhbHVlPSIiO2Quc3JjPSIiO2Quc3R5bGUuZGlzcGxheT0ibm9uZSI7YS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9YHVybCgke2h9KWA7Yi5zdHlsZS5kaXNwbGF5PSJub25lIjtjLnN0eWxlLmRpc3BsYXk9ImZsZXgiO3JldHVybiExfSk7Yi5zdHlsZS5kaXNwbGF5PSJub25lIjtkLnN0eWxlLmRpc3BsYXk9Im5vbmUifSl9LHVwbG9hZEltYWdlc1RvQmFja2VuZDpmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSIpOwpjb25zdCBrPW5ldyBGb3JtRGF0YTtsZXQgZD0hMTthLmZvckVhY2goYj0+e2I9Yi5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJmaWxlIl0nKTswPGIuZmlsZXMubGVuZ3RoJiZiLmZpbGVzWzBdLnR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikmJihrLmFwcGVuZCgiaW1hZ2VzW10iLGIuZmlsZXNbMF0sYi5nZXRBdHRyaWJ1dGUoImRhdGEtbmFtZSIpKSxkPSEwKX0pO2Q\/KGE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLCQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L3VwbG9hZFRyYWRlSW5JbWFnZXMiLGNvbnRlbnRUeXBlOiExLHByb2Nlc3NEYXRhOiExLGRhdGE6ayxzdWNjZXNzOmZ1bmN0aW9uKGIpe2lmKGIubGVuZ3RoKXskZGF0YU9iaj1KU09OLnBhcnNlKGIpOyRpbWFnZUV4VmFsdWU9IiI7Zm9yKGI9MDtiPCRkYXRhT2JqLmxlbmd0aDtiKyspJGltYWdlRXhWYWx1ZSs9JGRhdGFPYmpbYl0uZmlsZW5hbWUrCiIgOiAiKyRkYXRhT2JqW2JdLmZpbGVVcmwrIiBcbiI7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJBREVJTklNQUdFRVgiXScpLnZhbCgkaW1hZ2VFeFZhbHVlKX0kKCIudHJhZGVJbkJhclBvcHVwU3VibWl0IikudHJpZ2dlcigiY2xpY2siKX19KSk6JCgiLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnRyaWdnZXIoImNsaWNrIil9LHNldEhlaWdodE1vYmlsZShhKXtpZigiMSI9PSQoIiNpc21vYmlsZSIpLnZhbCgpKXN3aXRjaChhKXtjYXNlIDI6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNTQwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI1MzBweCIpO2JyZWFrO2Nhc2UgMzokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI2MDBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjU5MHB4Iik7YnJlYWs7Y2FzZSA0OiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsCiI1NDBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjUzMHB4Iik7YnJlYWs7Y2FzZSA1OiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjUzMHB4Iik7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiNTIwcHgiKTticmVhaztjYXNlIDY6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNzUwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI3NDBweCIpO2JyZWFrO2RlZmF1bHQ6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiOTgwcHgiKSwkKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI5NzBweCIpfX0sdHJhZGVJbkJvdHRvbUxvZ29IZWlndDpmdW5jdGlvbigpe2lmKCQoIi50cmFkZUluQm90dG9tTG9nbyIpLmxlbmd0aCl7dmFyIGE9JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpOwpsZXQgaz0kKCIudHJhZGVJbkJvdHRvbUxvZ28iKSxkPSQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIiksYj0kKCIjaXNNb2JpbGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzTW9iaWxlIikudmFsKCksYz0kKCIubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIikuaXMoIjp2aXNpYmxlIik7YT1hLmlubmVySGVpZ2h0KCktay5wb3NpdGlvbigpLnRvcDtkLmxlbmd0aCYmZC5pcygiOnZpc2libGUiKSYmKGEtPWQub3V0ZXJIZWlnaHQoITApKyhiPzA6Yz8xMDozMCkpOyQoIi50cmFkZUluQm90dG9tTG9nbyIpLmhlaWdodChhKyJweCIpfX19OwovKiogL20vanMvanF1ZXJ5LnByZXR0eVBob3RvMi5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlwcmV0dHlQaG90bzJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjQzIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlwcmV0dHlQaG90bzJqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMzOjMzIjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihhKXtmdW5jdGlvbiB5KCl7dmFyIGU9bG9jYXRpb24uaHJlZjtyZXR1cm4gaGFzaHRhZz0tMSE9PWUuaW5kZXhPZigiI3ByZXR0eVBob3RvIik\/ZGVjb2RlVVJJKGUuc3Vic3RyaW5nKGUuaW5kZXhPZigiI3ByZXR0eVBob3RvIikrMSxlLmxlbmd0aCkpOiExfWZ1bmN0aW9uIGwoZSxwKXtlPWUucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTtlPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2UrIj0oW14mI10qKSIpKS5leGVjKHApO3JldHVybiBudWxsPT1lPyIiOmVbMV19YS5wcmV0dHlQaG90bz17dmVyc2lvbjoiMy4xLjUifTthLmZuLnByZXR0eVBob3RvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHAoKXthKCIucHBfbG9hZGVySWNvbiIpLmhpZGUoKTtwcm9qZWN0ZWRUb3A9c2Nyb2xsX3Bvcy5zY3JvbGxUb3ArKGsvMi1kLmNvbnRhaW5lckhlaWdodC8yKTswPnByb2plY3RlZFRvcCYmKHByb2plY3RlZFRvcD0wKTskcHB0LmZhZGVUbyhiLmFuaW1hdGlvbl9zcGVlZCwKMSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5hbmltYXRlKHtoZWlnaHQ6ZC5jb250ZW50SGVpZ2h0LHdpZHRoOmQuY29udGVudFdpZHRofSxiLmFuaW1hdGlvbl9zcGVlZCk7JHBwX3BpY19ob2xkZXIuYW5pbWF0ZSh7dG9wOnByb2plY3RlZFRvcCxsZWZ0OjA+aC8yLWQuY29udGFpbmVyV2lkdGgvMj8wOmgvMi1kLmNvbnRhaW5lcldpZHRoLzIsd2lkdGg6ZC5jb250YWluZXJXaWR0aH0sYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfaG92ZXJDb250YWluZXIsI2Z1bGxSZXNJbWFnZSIpLmhlaWdodChkLmhlaWdodCkud2lkdGgoZC53aWR0aCk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2ZhZGUiKS5mYWRlSW4oYi5hbmltYXRpb25fc3BlZWQpO2lzU2V0JiYiaW1hZ2UiPT10KHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKT8kcHBfcGljX2hvbGRlci5maW5kKCIucHBfaG92ZXJDb250YWluZXIiKS5zaG93KCk6JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2hvdmVyQ29udGFpbmVyIikuaGlkZSgpOwpiLmFsbG93X2V4cGFuZCYmKGQucmVzaXplZD9hKCJhLnBwX2V4cGFuZCxhLnBwX2NvbnRyYWN0Iikuc2hvdygpOmEoImEucHBfZXhwYW5kIikuaGlkZSgpKTshYi5hdXRvcGxheV9zbGlkZXNob3d8fHF8fHV8fGEucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtiLmNoYW5nZXBpY3R1cmVjYWxsYmFjaygpO3U9ITB9KTtpc1NldCYmYi5vdmVybGF5X2dhbGxlcnkmJiJpbWFnZSI9PXQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pPyhpdGVtV2lkdGg9NTcsbmF2V2lkdGg9ImZhY2Vib29rIj09Yi50aGVtZXx8InBwX2RlZmF1bHQiPT1iLnRoZW1lPzUwOjMwLGl0ZW1zUGVyUGFnZT1NYXRoLmZsb29yKChkLmNvbnRhaW5lcldpZHRoLTEwMC1uYXZXaWR0aCkvaXRlbVdpZHRoKSxpdGVtc1BlclBhZ2U9aXRlbXNQZXJQYWdlPHBwX2ltYWdlcy5sZW5ndGg\/aXRlbXNQZXJQYWdlOnBwX2ltYWdlcy5sZW5ndGgsdG90YWxQYWdlPU1hdGguY2VpbChwcF9pbWFnZXMubGVuZ3RoL2l0ZW1zUGVyUGFnZSktCjEsMD09dG90YWxQYWdlPyhuYXZXaWR0aD0wLCRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19uZXh0LC5wcF9hcnJvd19wcmV2aW91cyIpLmhpZGUoKSk6JHBwX2dhbGxlcnkuZmluZCgiLnBwX2Fycm93X25leHQsLnBwX2Fycm93X3ByZXZpb3VzIikuc2hvdygpLGdhbGxlcnlXaWR0aD1pdGVtc1BlclBhZ2UqaXRlbVdpZHRoLGZ1bGxHYWxsZXJ5V2lkdGg9cHBfaW1hZ2VzLmxlbmd0aCppdGVtV2lkdGgsJHBwX2dhbGxlcnkuY3NzKCJtYXJnaW4tbGVmdCIsLShnYWxsZXJ5V2lkdGgvMituYXZXaWR0aC8yKSkuZmluZCgiZGl2OmZpcnN0Iikud2lkdGgoZ2FsbGVyeVdpZHRoKzUpLmZpbmQoInVsIikud2lkdGgoZnVsbEdhbGxlcnlXaWR0aCkuZmluZCgibGkuc2VsZWN0ZWQiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKSxnb1RvUGFnZT1NYXRoLmZsb29yKHNldF9wb3NpdGlvbi9pdGVtc1BlclBhZ2UpPHRvdGFsUGFnZT9NYXRoLmZsb29yKHNldF9wb3NpdGlvbi9pdGVtc1BlclBhZ2UpOgp0b3RhbFBhZ2UsYS5wcmV0dHlQaG90by5jaGFuZ2VHYWxsZXJ5UGFnZShnb1RvUGFnZSksJHBwX2dhbGxlcnlfbGkuZmlsdGVyKCI6ZXEoIitzZXRfcG9zaXRpb24rIikiKS5hZGRDbGFzcygic2VsZWN0ZWQiKSk6JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5vZmYoIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIpO2UuYWpheGNhbGxiYWNrKCl9ZnVuY3Rpb24geihjKXskcHBfcGljX2hvbGRlci5maW5kKCIjcHBfZnVsbF9yZXMgb2JqZWN0LCNwcF9mdWxsX3JlcyBlbWJlZCIpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9mYWRlIikuZmFkZU91dChiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpe2EoIi5wcF9sb2FkZXJJY29uIikuc2hvdygpO2MoKX0pfWZ1bmN0aW9uIEcoYyl7MTxjP2EoIi5wcF9uYXYiKS5zaG93KCk6YSgiLnBwX25hdiIpLmhpZGUoKX1mdW5jdGlvbiBnKGMsZil7cmVzaXplZD0hMTtBKGMsZik7aW1hZ2VXaWR0aD0KYztpbWFnZUhlaWdodD1mO2lmKChtPmh8fG4+aykmJmRvcmVzaXplJiZiLmFsbG93X3Jlc2l6ZSYmIXIpe3Jlc2l6ZWQ9ITA7Zm9yKGZpdHRpbmc9ITE7IWZpdHRpbmc7KW0+aD8oaW1hZ2VXaWR0aD1oLTUwLGltYWdlSGVpZ2h0PWYvYyppbWFnZVdpZHRoKTpuPms\/KGltYWdlSGVpZ2h0PWstNTAsaW1hZ2VXaWR0aD1jL2YqaW1hZ2VIZWlnaHQpOmZpdHRpbmc9ITAsbj1pbWFnZUhlaWdodCxtPWltYWdlV2lkdGg7KG0+aHx8bj5rKSYmZyhtLG4pO0EoaW1hZ2VXaWR0aCxpbWFnZUhlaWdodCl9cmV0dXJue3dpZHRoOk1hdGguZmxvb3IoaW1hZ2VXaWR0aCksaGVpZ2h0Ok1hdGguZmxvb3IoaW1hZ2VIZWlnaHQpLGNvbnRhaW5lckhlaWdodDpNYXRoLmZsb29yKG4pLGNvbnRhaW5lcldpZHRoOk1hdGguZmxvb3IobSkrMipiLmhvcml6b250YWxfcGFkZGluZyxjb250ZW50SGVpZ2h0Ok1hdGguZmxvb3IodiksY29udGVudFdpZHRoOk1hdGguZmxvb3IoQikscmVzaXplZH19ZnVuY3Rpb24gQShjLApmKXtjPXBhcnNlRmxvYXQoYyk7Zj1wYXJzZUZsb2F0KGYpOyRwcF9kZXRhaWxzPSRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9kZXRhaWxzIik7JHBwX2RldGFpbHMud2lkdGgoYyk7ZGV0YWlsc0hlaWdodD1wYXJzZUZsb2F0KCRwcF9kZXRhaWxzLmNzcygibWFyZ2luVG9wIikpK3BhcnNlRmxvYXQoJHBwX2RldGFpbHMuY3NzKCJtYXJnaW5Cb3R0b20iKSk7JHBwX2RldGFpbHM9JHBwX2RldGFpbHMuY2xvbmUoKS5hZGRDbGFzcyhiLnRoZW1lKS53aWR0aChjKS5hcHBlbmRUbyhhKCJib2R5IikpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6LTFFNH0pO2RldGFpbHNIZWlnaHQrPSRwcF9kZXRhaWxzLmhlaWdodCgpO2RldGFpbHNIZWlnaHQ9MzQ+PWRldGFpbHNIZWlnaHQ\/MzY6ZGV0YWlsc0hlaWdodDskcHBfZGV0YWlscy5yZW1vdmUoKTskcHBfdGl0bGU9JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwdCIpOyRwcF90aXRsZS53aWR0aChjKTt0aXRsZUhlaWdodD1wYXJzZUZsb2F0KCRwcF90aXRsZS5jc3MoIm1hcmdpblRvcCIpKSsKcGFyc2VGbG9hdCgkcHBfdGl0bGUuY3NzKCJtYXJnaW5Cb3R0b20iKSk7JHBwX3RpdGxlPSRwcF90aXRsZS5jbG9uZSgpLmFwcGVuZFRvKGEoImJvZHkiKSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotMUU0fSk7dGl0bGVIZWlnaHQrPSRwcF90aXRsZS5oZWlnaHQoKTskcHBfdGl0bGUucmVtb3ZlKCk7dj1mK2RldGFpbHNIZWlnaHQ7Qj1jO249dit0aXRsZUhlaWdodCskcHBfcGljX2hvbGRlci5maW5kKCIucHBfdG9wIikuaGVpZ2h0KCkrJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2JvdHRvbSIpLmhlaWdodCgpO209Y31mdW5jdGlvbiB0KGMpe3JldHVybiBjLm1hdGNoKC95b3V0dWJlXC5jb21cL3dhdGNoL2kpfHxjLm1hdGNoKC95b3V0dVwuYmUvaSk\/InlvdXR1YmUiOmMubWF0Y2goL3ZpbWVvXC5jb20vaSk\/InZpbWVvIjpjLm1hdGNoKC9cLm1wNC9pKT8ibXA0IjpjLm1hdGNoKC9hdnUzZC9pKT8iYXZ1M2QiOmMubWF0Y2goL1xiLm1vdlxiL2kpPyJxdWlja3RpbWUiOgpjLm1hdGNoKC9cYi5zd2ZcYi9pKT8iZmxhc2giOmMubWF0Y2goL1xiaWZyYW1lPXRydWVcYi9pKT8iaWZyYW1lIjpjLm1hdGNoKC9cYmFqYXg9dHJ1ZVxiL2kpPyJhamF4IjpjLm1hdGNoKC9cYmN1c3RvbT10cnVlXGIvaSk\/ImN1c3RvbSI6IiMiPT1jLnN1YnN0cigwLDEpPyJpbmxpbmUiOiJpbWFnZSJ9ZnVuY3Rpb24gdygpe2RvcmVzaXplJiYidW5kZWZpbmVkIiE9dHlwZW9mICRwcF9waWNfaG9sZGVyJiYoc2Nyb2xsX3Bvcz1DKCksY29udGVudEhlaWdodD0kcHBfcGljX2hvbGRlci5oZWlnaHQoKSxjb250ZW50d2lkdGg9JHBwX3BpY19ob2xkZXIud2lkdGgoKSxwcm9qZWN0ZWRUb3A9ay8yK3Njcm9sbF9wb3Muc2Nyb2xsVG9wLWNvbnRlbnRIZWlnaHQvMiwwPnByb2plY3RlZFRvcCYmKHByb2plY3RlZFRvcD0wKSxjb250ZW50SGVpZ2h0Pmt8fCRwcF9waWNfaG9sZGVyLmNzcyh7dG9wOnByb2plY3RlZFRvcCxsZWZ0OmgvMitzY3JvbGxfcG9zLnNjcm9sbExlZnQtY29udGVudHdpZHRoLwoyfSkpfWZ1bmN0aW9uIEMoKXtpZihzZWxmLnBhZ2VZT2Zmc2V0KXJldHVybntzY3JvbGxUb3A6c2VsZi5wYWdlWU9mZnNldCxzY3JvbGxMZWZ0OnNlbGYucGFnZVhPZmZzZXR9O2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcClyZXR1cm57c2Nyb2xsVG9wOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3Asc2Nyb2xsTGVmdDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdH07aWYoZG9jdW1lbnQuYm9keSlyZXR1cm57c2Nyb2xsVG9wOmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLHNjcm9sbExlZnQ6ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0fX1mdW5jdGlvbiBEKGMpe2Iuc29jaWFsX3Rvb2xzJiYoZmFjZWJvb2tfbGlrZV9saW5rPWIuc29jaWFsX3Rvb2xzLnJlcGxhY2UoIntsb2NhdGlvbl9ocmVmfSIsZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYpKSk7Yi5tYXJrdXA9Yi5tYXJrdXAucmVwbGFjZSgie3BwX3NvY2lhbH0iLAoiIik7YSgiYm9keSIpLmFwcGVuZChiLm1hcmt1cCk7JHBwX3BpY19ob2xkZXI9YSgiLnBwX3BpY19ob2xkZXIiKTskcHB0PWEoIi5wcHQiKTskcHBfb3ZlcmxheT1hKCJkaXYucHBfb3ZlcmxheSIpO2lmKGlzU2V0JiZiLm92ZXJsYXlfZ2FsbGVyeSl7Y3VycmVudEdhbGxlcnlQYWdlPTA7dG9JbmplY3Q9IiI7Zm9yKGM9MDtjPHBwX2ltYWdlcy5sZW5ndGg7YysrKXBwX2ltYWdlc1tjXS5tYXRjaCgvXGIoanBnfGpwZWd8cG5nfGdpZilcYi9naSk\/KGNsYXNzbmFtZT0iIixpbWdfc3JjPXBwX2ltYWdlc1tjXSk6KGNsYXNzbmFtZT0iZGVmYXVsdCIsaW1nX3NyYz0iIiksdG9JbmplY3QrPSI8bGkgY2xhc3M9JyIrY2xhc3NuYW1lKyInPjxhIGhyZWY9JyMnPjxpbWcgc3JjPSciK2ltZ19zcmMrIicgd2lkdGg9JzUwJyBhbHQ9JycgLz48L2E+PC9saT4iO3RvSW5qZWN0PWIuZ2FsbGVyeV9tYXJrdXAucmVwbGFjZSgve2dhbGxlcnl9L2csdG9JbmplY3QpOyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpLmFmdGVyKHRvSW5qZWN0KTsKJHBwX2dhbGxlcnk9YSgiLnBwX3BpY19ob2xkZXIgLnBwX2dhbGxlcnkiKTskcHBfZ2FsbGVyeV9saT0kcHBfZ2FsbGVyeS5maW5kKCJsaSIpOyRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19uZXh0Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2UoIm5leHQiKTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pOyRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19wcmV2aW91cyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNoYW5nZUdhbGxlcnlQYWdlKCJwcmV2aW91cyIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5vbigiaG92ZXIiLGZ1bmN0aW9uKCl7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2dhbGxlcnk6bm90KC5kaXNhYmxlZCkiKS5mYWRlSW4oKX0sZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfZ2FsbGVyeTpub3QoLmRpc2FibGVkKSIpLmZhZGVPdXQoKX0pOwppdGVtV2lkdGg9NTc7JHBwX2dhbGxlcnlfbGkuZWFjaChmdW5jdGlvbihmKXthKHRoaXMpLmZpbmQoImEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKGYpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSl9KX1iLnNsaWRlc2hvdyYmKCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9uYXYiKS5wcmVwZW5kKCc8YSBocmVmPSIjIiBjbGFzcz0icHBfcGxheSI+UGxheTwvYT4nKSwkcHBfcGljX2hvbGRlci5maW5kKCIucHBfbmF2IC5wcF9wbGF5Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtyZXR1cm4hMX0pKTskcHBfcGljX2hvbGRlci5hdHRyKCJjbGFzcyIsInBwX3BpY19ob2xkZXIgIitiLnRoZW1lKTskcHBfb3ZlcmxheS5jc3Moe29wYWNpdHk6MCxoZWlnaHQ6YShkb2N1bWVudCkuaGVpZ2h0KCksd2lkdGg6YSh3aW5kb3cpLndpZHRoKCl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5tb2RhbHx8CmEucHJldHR5UGhvdG8uY2xvc2UoKX0pO2EoImEucHBfY2xvc2UiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jbG9zZSgpO3JldHVybiExfSk7aWYoYi5hbGxvd19leHBhbmQpYSgiYS5wcF9leHBhbmQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGYpe2EodGhpcykuaGFzQ2xhc3MoInBwX2V4cGFuZCIpPyhhKHRoaXMpLnJlbW92ZUNsYXNzKCJwcF9leHBhbmQiKS5hZGRDbGFzcygicHBfY29udHJhY3QiKSxkb3Jlc2l6ZT0hMSk6KGEodGhpcykucmVtb3ZlQ2xhc3MoInBwX2NvbnRyYWN0IikuYWRkQ2xhc3MoInBwX2V4cGFuZCIpLGRvcmVzaXplPSEwKTt6KGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5vcGVuKCl9KTtyZXR1cm4hMX0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9wcmV2aW91cywgLnBwX25hdiAucHBfYXJyb3dfcHJldmlvdXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJwcmV2aW91cyIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpOwpyZXR1cm4hMX0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9uZXh0LCAucHBfbmF2IC5wcF9hcnJvd19uZXh0Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgibmV4dCIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSk7dygpfWU9alF1ZXJ5LmV4dGVuZCh7aG9vazoicmVsIixhbmltYXRpb25fc3BlZWQ6ImZhc3QiLGFqYXhjYWxsYmFjazpmdW5jdGlvbigpe30sc2xpZGVzaG93OjVFMyxhdXRvcGxheV9zbGlkZXNob3c6ITEsb3BhY2l0eTouOCxzaG93X3RpdGxlOiEwLGFsbG93X3Jlc2l6ZTohMCxhbGxvd19leHBhbmQ6ITAsZGVmYXVsdF93aWR0aDo1MDAsZGVmYXVsdF9oZWlnaHQ6MzQ0LGNvdW50ZXJfc2VwYXJhdG9yX2xhYmVsOiIvIix0aGVtZToicHBfZGVmYXVsdCIsaG9yaXpvbnRhbF9wYWRkaW5nOjIwLGhpZGVmbGFzaDohMSx3bW9kZToib3BhcXVlIixhdXRvcGxheTohMCxtb2RhbDohMSxkZWVwbGlua2luZzohMCwKb3ZlcmxheV9nYWxsZXJ5OiEwLG92ZXJsYXlfZ2FsbGVyeV9tYXg6MzAsa2V5Ym9hcmRfc2hvcnRjdXRzOiEwLGNoYW5nZXBpY3R1cmVjYWxsYmFjazpmdW5jdGlvbigpe30sY2FsbGJhY2s6ZnVuY3Rpb24oKXt9LGllNl9mYWxsYmFjazohMCxtYXJrdXA6JzxkaXYgY2xhc3M9InBwX3BpY19ob2xkZXIiPiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcHQiPiZuYnNwOzwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF90b3AiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbGVmdCI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9taWRkbGUiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfcmlnaHQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfY29udGVudF9jb250YWluZXIiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbGVmdCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0icHBfZXhwYW5kIiB0aXRsZT0iRXhwYW5kIHRoZSBpbWFnZSI+RXhwYW5kPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfcmlnaHQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2NvbnRlbnQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9sb2FkZXJJY29uIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfZmFkZSI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfY2xvc2UiIGhyZWY9IiMiPkNsb3NlPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfaG92ZXJDb250YWluZXIganF1ZXJ5cHAyIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfbmV4dCIgaHJlZj0iIyI+bmV4dDwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfcHJldmlvdXMiIGhyZWY9IiMiPnByZXZpb3VzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwcF9mdWxsX3JlcyI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9kZXRhaWxzIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHBfZGVzY3JpcHRpb24iPjwvcD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9zb2NpYWwiPntwcF9zb2NpYWx9PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfYm90dG9tIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2xlZnQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbWlkZGxlIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX3JpZ2h0Ij48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfb3ZlcmxheSI+PC9kaXY+JywKZ2FsbGVyeV9tYXJrdXA6JzxkaXYgY2xhc3M9InBwX2dhbGxlcnkiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJwcF9hcnJvd19wcmV2aW91cyI+UHJldmlvdXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbGxlcnl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InBwX2Fycm93X25leHQiPk5leHQ8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4nLGltYWdlX21hcmt1cDonPGltZyBpZD0iZnVsbFJlc0ltYWdlIiBzcmM9IntwYXRofSIgLz4nLGZsYXNoX21hcmt1cDonPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIHdpZHRoPSJ7d2lkdGh9IiBoZWlnaHQ9IntoZWlnaHR9Ij48cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSJ7d21vZGV9IiAvPjxwYXJhbSBuYW1lPSJhbGxvd2Z1bGxzY3JlZW4iIHZhbHVlPSJ0cnVlIiAvPjxwYXJhbSBuYW1lPSJhbGxvd3NjcmlwdGFjY2VzcyIgdmFsdWU9ImFsd2F5cyIgLz48cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJ7cGF0aH0iIC8+PGVtYmVkIHNyYz0ie3BhdGh9IiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0ie3dpZHRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSIgd21vZGU9Int3bW9kZX0iPjwvZW1iZWQ+PC9vYmplY3Q+JywKcXVpY2t0aW1lX21hcmt1cDonPG9iamVjdCBjbGFzc2lkPSJjbHNpZDowMkJGMjVENS04QzE3LTRCMjMtQkM4MC1EMzQ4OEFCRERDNkIiIGNvZGViYXNlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdGFjdGl2ZXgvcXRwbHVnaW4uY2FiIiBoZWlnaHQ9IntoZWlnaHR9IiB3aWR0aD0ie3dpZHRofSI+PHBhcmFtIG5hbWU9InNyYyIgdmFsdWU9IntwYXRofSI+PHBhcmFtIG5hbWU9ImF1dG9wbGF5IiB2YWx1ZT0ie2F1dG9wbGF5fSI+PHBhcmFtIG5hbWU9InR5cGUiIHZhbHVlPSJ2aWRlby9xdWlja3RpbWUiPjxlbWJlZCBzcmM9IntwYXRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSIgd2lkdGg9Int3aWR0aH0iIGF1dG9wbGF5PSJ7YXV0b3BsYXl9IiB0eXBlPSJ2aWRlby9xdWlja3RpbWUiIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvIj48L2VtYmVkPjwvb2JqZWN0PicsaWZyYW1lX21hcmt1cDonPGlmcmFtZSBzcmMgPSJ7cGF0aH0iIHdpZHRoPSJ7d2lkdGh9IiBoZWlnaHQ9IntoZWlnaHR9IiBmcmFtZWJvcmRlcj0ibm8iPjwvaWZyYW1lPicsCmlubGluZV9tYXJrdXA6JzxkaXYgY2xhc3M9InBwX2lubGluZSI+e2NvbnRlbnR9PC9kaXY+JyxtcDRfbWFya3VwOic8dmlkZW8gd2lkdGg9IjEwMCUiIGhlaWdodD0iIiBwcmVsb2FkPSJhdXRvIiBhdXRvcGxheSBjb250cm9scz0iIiBpZD0icGxheWVyIiBzdHlsZT0id2lkdGg6IDEwMCU7Ij48c291cmNlIHR5cGU9InZpZGVvL21wNCIgc3JjPSJ7cGF0aH0iPjwvc291cmNlPjwvdmlkZW8+JyxjdXN0b21fbWFya3VwOiIiLHNvY2lhbF90b29sczonPGRpdiBjbGFzcz0idHdpdHRlciI+PGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL3NoYXJlIiBjbGFzcz0idHdpdHRlci1zaGFyZS1idXR0b24iIGRhdGEtY291bnQ9Im5vbmUiPlR3ZWV0PC9hPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzIj5ceDNjL3NjcmlwdD48L2Rpdj48ZGl2IGNsYXNzPSJmYWNlYm9vayI+PGlmcmFtZSBzcmM9Ii8vd3d3LmZhY2Vib29rLmNvbS9wbHVnaW5zL2xpa2UucGhwP2xvY2FsZT1lbl9VUyZocmVmPXtsb2NhdGlvbl9ocmVmfSZhbXA7bGF5b3V0PWJ1dHRvbl9jb3VudCZhbXA7c2hvd19mYWNlcz10cnVlJmFtcDt3aWR0aD01MDAmYW1wO2FjdGlvbj1saWtlJmFtcDtmb250JmFtcDtjb2xvcnNjaGVtZT1saWdodCZhbXA7aGVpZ2h0PTIzIiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlcjpub25lOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjUwMHB4OyBoZWlnaHQ6MjNweDsiIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIj48L2lmcmFtZT48L2Rpdj4nfSwKZSk7dmFyIGI9e30seD10aGlzLHI9ITEsZCx1LHYsQixuLG0saz1hKHdpbmRvdykuaGVpZ2h0KCksaD1hKHdpbmRvdykud2lkdGgoKSxxO2RvcmVzaXplPSEwO3Njcm9sbF9wb3M9QygpO2Eod2luZG93KS5vZmYoInJlc2l6ZS5wcmV0dHlwaG90byIpLm9uKCJyZXNpemUucHJldHR5cGhvdG8iLGZ1bmN0aW9uKCl7dygpO2s9YSh3aW5kb3cpLmhlaWdodCgpO2g9YSh3aW5kb3cpLndpZHRoKCk7InVuZGVmaW5lZCIhPXR5cGVvZiAkcHBfb3ZlcmxheSYmJHBwX292ZXJsYXkuaGVpZ2h0KGEoZG9jdW1lbnQpLmhlaWdodCgpKS53aWR0aChoKX0pO2lmKGUua2V5Ym9hcmRfc2hvcnRjdXRzKWEoZG9jdW1lbnQpLm9mZigia2V5ZG93bi5wcmV0dHlwaG90byIpLm9uKCJrZXlkb3duLnByZXR0eXBob3RvIixmdW5jdGlvbihjKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mICRwcF9waWNfaG9sZGVyJiYkcHBfcGljX2hvbGRlci5pcygiOnZpc2libGUiKSlzd2l0Y2goYy5rZXlDb2RlKXtjYXNlIDM3OmEucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgicHJldmlvdXMiKTsKYy5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzk6YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJuZXh0Iik7Yy5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMjc6Yi5tb2RhbHx8YS5wcmV0dHlQaG90by5jbG9zZSgpLGMucHJldmVudERlZmF1bHQoKX19KTthLnByZXR0eVBob3RvLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtiPWU7InBwX2RlZmF1bHQiPT1iLnRoZW1lJiYoYi5ob3Jpem9udGFsX3BhZGRpbmc9MTYpO3RoZVJlbD1hKHRoaXMpLmF0dHIoYi5ob29rKTtnYWxsZXJ5UmVnRXhwPS9cWyg\/Oi4qKVxdLztwcF9pbWFnZXM9KGlzU2V0PWdhbGxlcnlSZWdFeHAuZXhlYyh0aGVSZWwpPyEwOiExKT9qUXVlcnkubWFwKHgsZnVuY3Rpb24oYyxmKXtpZigtMSE9YShjKS5hdHRyKGIuaG9vaykuaW5kZXhPZih0aGVSZWwpKXJldHVybiBhKGMpLmF0dHIoImhyZWYiKX0pOmEubWFrZUFycmF5KGEodGhpcykuYXR0cigiaHJlZiIpKTtwcF90aXRsZXM9aXNTZXQ\/alF1ZXJ5Lm1hcCh4LApmdW5jdGlvbihjLGYpe2lmKC0xIT1hKGMpLmF0dHIoYi5ob29rKS5pbmRleE9mKHRoZVJlbCkpcmV0dXJuIGEoYykuZmluZCgiaW1nIikuYXR0cigiYWx0Iik\/YShjKS5maW5kKCJpbWciKS5hdHRyKCJhbHQiKToiIn0pOmEubWFrZUFycmF5KGEodGhpcykuZmluZCgiaW1nIikuYXR0cigiYWx0IikpO3BwX2Rlc2NyaXB0aW9ucz1pc1NldD9qUXVlcnkubWFwKHgsZnVuY3Rpb24oYyxmKXtpZigtMSE9YShjKS5hdHRyKGIuaG9vaykuaW5kZXhPZih0aGVSZWwpKXJldHVybiBhKGMpLmF0dHIoInRpdGxlIik\/YShjKS5hdHRyKCJ0aXRsZSIpOiIifSk6YS5tYWtlQXJyYXkoYSh0aGlzKS5hdHRyKCJ0aXRsZSIpKTtwcF9pbWFnZXMubGVuZ3RoPmIub3ZlcmxheV9nYWxsZXJ5X21heCYmKGIub3ZlcmxheV9nYWxsZXJ5PSExKTtzZXRfcG9zaXRpb249alF1ZXJ5LmluQXJyYXkoYSh0aGlzKS5hdHRyKCJocmVmIikscHBfaW1hZ2VzKTtyZWxfaW5kZXg9aXNTZXQ\/c2V0X3Bvc2l0aW9uOmEoImFbIisKYi5ob29rKyJePSciK3RoZVJlbCsiJ10iKS5pbmRleChhKHRoaXMpKTtEKHRoaXMpO2lmKGIuYWxsb3dfcmVzaXplKWEod2luZG93KS5vbigic2Nyb2xsLnByZXR0eXBob3RvIixmdW5jdGlvbigpe3coKX0pO2EucHJldHR5UGhvdG8ub3BlbigpO3JldHVybiExfTthLnByZXR0eVBob3RvLm9wZW49ZnVuY3Rpb24oYyxmLEUsRil7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1lLHBwX2ltYWdlcz1hLm1ha2VBcnJheShjKSxwcF90aXRsZXM9Zj9hLm1ha2VBcnJheShmKTphLm1ha2VBcnJheSgiIikscHBfZGVzY3JpcHRpb25zPUU\/YS5tYWtlQXJyYXkoRSk6YS5tYWtlQXJyYXkoIiIpLGlzU2V0PTE8cHBfaW1hZ2VzLmxlbmd0aD8hMDohMSxzZXRfcG9zaXRpb249Rj9GOjAsRChjLnRhcmdldCkpO2IuaGlkZWZsYXNoJiZhKCJvYmplY3QsZW1iZWQsaWZyYW1lW3NyYyo9eW91dHViZV0saWZyYW1lW3NyYyo9dmltZW9dIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7RyhhKHBwX2ltYWdlcykubGVuZ3RoKTsKYSgiLnBwX2xvYWRlckljb24iKS5zaG93KCk7Yi5kZWVwbGlua2luZyYmInVuZGVmaW5lZCIhPXR5cGVvZiB0aGVSZWwmJihsb2NhdGlvbi5oYXNoPXRoZVJlbCsiLyIrcmVsX2luZGV4KyIvIik7Yi5zb2NpYWxfdG9vbHMmJihmYWNlYm9va19saWtlX2xpbms9Yi5zb2NpYWxfdG9vbHMucmVwbGFjZSgie2xvY2F0aW9uX2hyZWZ9IixlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZikpLCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9zb2NpYWwiKS5odG1sKGZhY2Vib29rX2xpa2VfbGluaykpOyRwcHQuaXMoIjpoaWRkZW4iKSYmJHBwdC5jc3MoIm9wYWNpdHkiLDApLnNob3coKTskcHBfb3ZlcmxheS5zaG93KCkuZmFkZVRvKGIuYW5pbWF0aW9uX3NwZWVkLGIub3BhY2l0eSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLmN1cnJlbnRUZXh0SG9sZGVyIikudGV4dChzZXRfcG9zaXRpb24rMStiLmNvdW50ZXJfc2VwYXJhdG9yX2xhYmVsK2EocHBfaW1hZ2VzKS5sZW5ndGgpOyJ1bmRlZmluZWQiIT0KdHlwZW9mIHBwX2Rlc2NyaXB0aW9uc1tzZXRfcG9zaXRpb25dJiYiIiE9cHBfZGVzY3JpcHRpb25zW3NldF9wb3NpdGlvbl0\/JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2Rlc2NyaXB0aW9uIikuc2hvdygpLmh0bWwodW5lc2NhcGUocHBfZGVzY3JpcHRpb25zW3NldF9wb3NpdGlvbl0pKTokcHBfcGljX2hvbGRlci5maW5kKCIucHBfZGVzY3JpcHRpb24iKS5oaWRlKCk7bW92aWVfd2lkdGg9cGFyc2VGbG9hdChsKCJ3aWR0aCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKT9sKCJ3aWR0aCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pOmIuZGVmYXVsdF93aWR0aC50b1N0cmluZygpO21vdmllX2hlaWdodD1wYXJzZUZsb2F0KGwoImhlaWdodCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKT9sKCJoZWlnaHQiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTpiLmRlZmF1bHRfaGVpZ2h0LnRvU3RyaW5nKCk7cj0hMTstMSE9bW92aWVfaGVpZ2h0LmluZGV4T2YoIiUiKSYmKG1vdmllX2hlaWdodD0KcGFyc2VGbG9hdChhKHdpbmRvdykuaGVpZ2h0KCkqcGFyc2VGbG9hdChtb3ZpZV9oZWlnaHQpLzEwMC0xNTApLHI9ITApOy0xIT1tb3ZpZV93aWR0aC5pbmRleE9mKCIlIikmJihtb3ZpZV93aWR0aD1wYXJzZUZsb2F0KGEod2luZG93KS53aWR0aCgpKnBhcnNlRmxvYXQobW92aWVfd2lkdGgpLzEwMC0xNTApLHI9ITApOyRwcF9waWNfaG9sZGVyLmZhZGVJbihmdW5jdGlvbigpe2Iuc2hvd190aXRsZSYmIiIhPXBwX3RpdGxlc1tzZXRfcG9zaXRpb25dJiYidW5kZWZpbmVkIiE9dHlwZW9mIHBwX3RpdGxlc1tzZXRfcG9zaXRpb25dPyRwcHQuaHRtbCh1bmVzY2FwZShwcF90aXRsZXNbc2V0X3Bvc2l0aW9uXSkpOiRwcHQuaHRtbCgiJm5ic3A7Iik7aW1nUHJlbG9hZGVyPSIiO3NraXBJbmplY3Rpb249ITE7c3dpdGNoKHQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKXtjYXNlICJpbWFnZSI6aW1nUHJlbG9hZGVyPW5ldyBJbWFnZTtuZXh0SW1hZ2U9bmV3IEltYWdlO2lzU2V0JiZzZXRfcG9zaXRpb248CmEocHBfaW1hZ2VzKS5sZW5ndGgtMSYmKG5leHRJbWFnZS5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbisxXSk7cHJldkltYWdlPW5ldyBJbWFnZTtpc1NldCYmcHBfaW1hZ2VzW3NldF9wb3NpdGlvbi0xXSYmKHByZXZJbWFnZS5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbi0xXSk7JHBwX3BpY19ob2xkZXIuZmluZCgiI3BwX2Z1bGxfcmVzIilbMF0uaW5uZXJIVE1MPWIuaW1hZ2VfbWFya3VwLnJlcGxhY2UoL3twYXRofS9nLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTtpbWdQcmVsb2FkZXIub25sb2FkPWZ1bmN0aW9uKCl7ZD1nKGltZ1ByZWxvYWRlci53aWR0aCxpbWdQcmVsb2FkZXIuaGVpZ2h0KTtwKCl9O2ltZ1ByZWxvYWRlci5vbmVycm9yPWZ1bmN0aW9uKCl7YWxlcnQoIkltYWdlIGNhbm5vdCBiZSBsb2FkZWQuIE1ha2Ugc3VyZSB0aGUgcGF0aCBpcyBjb3JyZWN0IGFuZCBpbWFnZSBleGlzdC4iKTthLnByZXR0eVBob3RvLmNsb3NlKCl9O2ltZ1ByZWxvYWRlci5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07CmJyZWFrO2Nhc2UgInlvdXR1YmUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO21vdmllX2lkPWwoInYiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTsiIj09bW92aWVfaWQmJihtb3ZpZV9pZD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXS5zcGxpdCgieW91dHUuYmUvIiksbW92aWVfaWQ9bW92aWVfaWRbMV0sMDxtb3ZpZV9pZC5pbmRleE9mKCI\/IikmJihtb3ZpZV9pZD1tb3ZpZV9pZC5zdWJzdHIoMCxtb3ZpZV9pZC5pbmRleE9mKCI\/IikpKSwwPG1vdmllX2lkLmluZGV4T2YoIiYiKSYmKG1vdmllX2lkPW1vdmllX2lkLnN1YnN0cigwLG1vdmllX2lkLmluZGV4T2YoIiYiKSkpKTttb3ZpZT0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvIittb3ZpZV9pZDtsKCJyZWwiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKT9tb3ZpZSs9Ij9yZWw9IitsKCJyZWwiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTptb3ZpZSs9Ij9yZWw9MSI7Yi5hdXRvcGxheSYmKG1vdmllKz0iJmF1dG9wbGF5PTEiKTsKdG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97d21vZGV9L2csYi53bW9kZSkucmVwbGFjZSgve3BhdGh9L2csbW92aWUpO2JyZWFrO2Nhc2UgInZpbWVvIjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTttb3ZpZV9pZD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTttb3ZpZT0iaHR0cDovL3BsYXllci52aW1lby5jb20vdmlkZW8vIittb3ZpZV9pZC5tYXRjaCgvaHR0cChzPyk6XC9cLyh3d3dcLik\/dmltZW8uY29tXC8oXGQrKS8pWzNdKyI\/dGl0bGU9MCZhbXA7YnlsaW5lPTAmYW1wO3BvcnRyYWl0PTAiO2IuYXV0b3BsYXkmJihtb3ZpZSs9IiZhdXRvcGxheT0xOyIpO3ZpbWVvX3dpZHRoPWQud2lkdGgrIi9lbWJlZC8\/bW9vZ193aWR0aD0iK2Qud2lkdGg7dG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyx2aW1lb193aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZywKZC5oZWlnaHQpLnJlcGxhY2UoL3twYXRofS9nLG1vdmllKTticmVhaztjYXNlICJtcDQiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO21vdmllX3VybD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTt0b0luamVjdD1iLm1wNF9tYXJrdXAucmVwbGFjZSgve3BhdGh9L2csbW92aWVfdXJsKTticmVhaztjYXNlICJxdWlja3RpbWUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO2QuaGVpZ2h0Kz0xNTtkLmNvbnRlbnRIZWlnaHQrPTE1O2QuY29udGFpbmVySGVpZ2h0Kz0xNTt0b0luamVjdD1iLnF1aWNrdGltZV9tYXJrdXAucmVwbGFjZSgve3dpZHRofS9nLGQud2lkdGgpLnJlcGxhY2UoL3toZWlnaHR9L2csZC5oZWlnaHQpLnJlcGxhY2UoL3t3bW9kZX0vZyxiLndtb2RlKS5yZXBsYWNlKC97cGF0aH0vZyxwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkucmVwbGFjZSgve2F1dG9wbGF5fS9nLGIuYXV0b3BsYXkpO2JyZWFrO2Nhc2UgImZsYXNoIjpkPWcobW92aWVfd2lkdGgsCm1vdmllX2hlaWdodCk7Zmxhc2hfdmFycz1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTtmbGFzaF92YXJzPWZsYXNoX3ZhcnMuc3Vic3RyaW5nKHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLmluZGV4T2YoImZsYXNodmFycyIpKzEwLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLmxlbmd0aCk7ZmlsZW5hbWU9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07ZmlsZW5hbWU9ZmlsZW5hbWUuc3Vic3RyaW5nKDAsZmlsZW5hbWUuaW5kZXhPZigiPyIpKTt0b0luamVjdD1iLmZsYXNoX21hcmt1cC5yZXBsYWNlKC97d2lkdGh9L2csZC53aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZyxkLmhlaWdodCkucmVwbGFjZSgve3dtb2RlfS9nLGIud21vZGUpLnJlcGxhY2UoL3twYXRofS9nLGZpbGVuYW1lKyI\/IitmbGFzaF92YXJzKTticmVhaztjYXNlICJpZnJhbWUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO2ZyYW1lX3VybD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTtmcmFtZV91cmw9ZnJhbWVfdXJsLnN1YnN0cigwLApmcmFtZV91cmwuaW5kZXhPZigiaWZyYW1lIiktMSk7dG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97cGF0aH0vZyxmcmFtZV91cmwpO2JyZWFrO2Nhc2UgImFqYXgiOmRvcmVzaXplPSExO2Q9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO3NraXBJbmplY3Rpb249ZG9yZXNpemU9ITA7YS5nZXQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0sZnVuY3Rpb24oSCl7dG9JbmplY3Q9Yi5pbmxpbmVfbWFya3VwLnJlcGxhY2UoL3tjb250ZW50fS9nLEgpOyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpWzBdLmlubmVySFRNTD10b0luamVjdDtwKCl9KTticmVhaztjYXNlICJjdXN0b20iOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO3RvSW5qZWN0PWIuY3VzdG9tX21hcmt1cDticmVhaztjYXNlICJpbmxpbmUiOm15Q2xvbmU9YShwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkuY2xvbmUoKS5hcHBlbmQoJzxiciBjbGVhcj0iYWxsIiAvPicpLmNzcyh7d2lkdGg6Yi5kZWZhdWx0X3dpZHRofSkud3JhcElubmVyKCc8ZGl2IGlkPSJwcF9mdWxsX3JlcyI+PGRpdiBjbGFzcz0icHBfaW5saW5lIj48L2Rpdj48L2Rpdj4nKS5hcHBlbmRUbyhhKCJib2R5IikpLnNob3coKSwKZG9yZXNpemU9ITEsZD1nKGEobXlDbG9uZSkud2lkdGgoKSxhKG15Q2xvbmUpLmhlaWdodCgpKSxkb3Jlc2l6ZT0hMCxhKG15Q2xvbmUpLnJlbW92ZSgpLHRvSW5qZWN0PWIuaW5saW5lX21hcmt1cC5yZXBsYWNlKC97Y29udGVudH0vZyxhKHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKS5odG1sKCkpfWltZ1ByZWxvYWRlcnx8c2tpcEluamVjdGlvbnx8KCRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpWzBdLmlubmVySFRNTD10b0luamVjdCxwKCkpfSk7cmV0dXJuITF9O2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZT1mdW5jdGlvbihjKXtjdXJyZW50R2FsbGVyeVBhZ2U9MDsicHJldmlvdXMiPT1jPyhzZXRfcG9zaXRpb24tLSwwPnNldF9wb3NpdGlvbiYmKHNldF9wb3NpdGlvbj1hKHBwX2ltYWdlcykubGVuZ3RoLTEpKToibmV4dCI9PWM\/KHNldF9wb3NpdGlvbisrLHNldF9wb3NpdGlvbj5hKHBwX2ltYWdlcykubGVuZ3RoLTEmJihzZXRfcG9zaXRpb249MCkpOnNldF9wb3NpdGlvbj0KYztyZWxfaW5kZXg9c2V0X3Bvc2l0aW9uO2RvcmVzaXplfHwoZG9yZXNpemU9ITApO2IuYWxsb3dfZXhwYW5kJiZhKCIucHBfY29udHJhY3QiKS5yZW1vdmVDbGFzcygicHBfY29udHJhY3QiKS5hZGRDbGFzcygicHBfZXhwYW5kIik7eihmdW5jdGlvbigpe2EucHJldHR5UGhvdG8ub3BlbigpfSl9O2EucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2U9ZnVuY3Rpb24oYyl7Im5leHQiPT1jPyhjdXJyZW50R2FsbGVyeVBhZ2UrKyxjdXJyZW50R2FsbGVyeVBhZ2U+dG90YWxQYWdlJiYoY3VycmVudEdhbGxlcnlQYWdlPTApKToicHJldmlvdXMiPT1jPyhjdXJyZW50R2FsbGVyeVBhZ2UtLSwwPmN1cnJlbnRHYWxsZXJ5UGFnZSYmKGN1cnJlbnRHYWxsZXJ5UGFnZT10b3RhbFBhZ2UpKTpjdXJyZW50R2FsbGVyeVBhZ2U9YztzbGlkZV9zcGVlZD0ibmV4dCI9PWN8fCJwcmV2aW91cyI9PWM\/Yi5hbmltYXRpb25fc3BlZWQ6MDtzbGlkZV90bz1jdXJyZW50R2FsbGVyeVBhZ2UqaXRlbXNQZXJQYWdlKgppdGVtV2lkdGg7JHBwX2dhbGxlcnkuZmluZCgidWwiKS5hbmltYXRlKHtsZWZ0Oi1zbGlkZV90b30sc2xpZGVfc3BlZWQpfTthLnByZXR0eVBob3RvLnN0YXJ0U2xpZGVzaG93PWZ1bmN0aW9uKCl7InVuZGVmaW5lZCI9PXR5cGVvZiBxPygkcHBfcGljX2hvbGRlci5maW5kKCIucHBfcGxheSIpLm9mZigiY2xpY2siKS5yZW1vdmVDbGFzcygicHBfcGxheSIpLmFkZENsYXNzKCJwcF9wYXVzZSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pLHE9c2V0SW50ZXJ2YWwoYS5wcmV0dHlQaG90by5zdGFydFNsaWRlc2hvdyxiLnNsaWRlc2hvdykpOmEucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgibmV4dCIpfTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3c9ZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfcGF1c2UiKS5vZmYoImNsaWNrIikucmVtb3ZlQ2xhc3MoInBwX3BhdXNlIikuYWRkQ2xhc3MoInBwX3BsYXkiKS5vbigiY2xpY2siLApmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtyZXR1cm4hMX0pO2NsZWFySW50ZXJ2YWwocSk7cT12b2lkIDB9O2EucHJldHR5UGhvdG8uY2xvc2U9ZnVuY3Rpb24oKXskcHBfb3ZlcmxheS5pcygiOmFuaW1hdGVkIil8fChhLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKSwkcHBfcGljX2hvbGRlci5zdG9wKCkuZmluZCgib2JqZWN0LGVtYmVkIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIiksYSgiZGl2LnBwX3BpY19ob2xkZXIsZGl2LnBwdCwucHBfZmFkZSIpLmZhZGVPdXQoYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXthKHRoaXMpLnJlbW92ZSgpfSksJHBwX292ZXJsYXkuZmFkZU91dChiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpe2IuaGlkZWZsYXNoJiZhKCJvYmplY3QsZW1iZWQsaWZyYW1lW3NyYyo9eW91dHViZV0saWZyYW1lW3NyYyo9dmltZW9dIikuY3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpO2EodGhpcykucmVtb3ZlKCk7CmEod2luZG93KS5vZmYoInNjcm9sbC5wcmV0dHlwaG90byIpOy0xIT09bG9jYXRpb24uaHJlZi5pbmRleE9mKCIjcHJldHR5UGhvdG8iKSYmKGxvY2F0aW9uLmhhc2g9InByZXR0eVBob3RvIik7Yi5jYWxsYmFjaygpO2RvcmVzaXplPSEwO3U9ITE7ZGVsZXRlIGJ9KSl9OyFwcF9hbHJlYWR5SW5pdGlhbGl6ZWQmJnkoKSYmKHBwX2FscmVhZHlJbml0aWFsaXplZD0hMCxoYXNoUmVsPWhhc2hJbmRleD15KCksaGFzaEluZGV4PWhhc2hJbmRleC5zdWJzdHJpbmcoaGFzaEluZGV4LmluZGV4T2YoIi8iKSsxLGhhc2hJbmRleC5sZW5ndGgtMSksaGFzaFJlbD1oYXNoUmVsLnN1YnN0cmluZygwLGhhc2hSZWwuaW5kZXhPZigiLyIpKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YSgiYVsiK2UuaG9vaysiXj0nIitoYXNoUmVsKyInXTplcSgiK2hhc2hJbmRleCsiKSIpLnRyaWdnZXIoImNsaWNrIil9LDUwKSk7cmV0dXJuIHRoaXMub2ZmKCJjbGljay5wcmV0dHlwaG90byIpLm9uKCJjbGljay5wcmV0dHlwaG90byIsCmEucHJldHR5UGhvdG8uaW5pdGlhbGl6ZSl9fSkoalF1ZXJ5KTt2YXIgcHBfYWxyZWFkeUluaXRpYWxpemVkPSExOwovKiogL20vanMvanF1ZXJ5LnRyYW5zaXRpb24ubWluLmpzICoqLwovKiEKICogalF1ZXJ5IFRyYW5zaXQgLSBDU1MzIHRyYW5zaXRpb25zIGFuZCB0cmFuc2Zvcm1hdGlvbnMKICogQ29weXJpZ2h0KGMpIDIwMTEgUmljbyBTdGEuIENydXogPHJpY29Acmljb3N0YWNydXouY29tPgogKiBNSVQgTGljZW5zZWQuCiAqCiAqIGh0dHA6Ly9yaWNvc3RhY3J1ei5jb20vanF1ZXJ5LnRyYW5zaXQKICogaHR0cDovL2dpdGh1Yi5jb20vcnN0YWNydXovanF1ZXJ5LnRyYW5zaXQKICovCihmdW5jdGlvbihkKXtmdW5jdGlvbiBrKGEpe3ZhciBiPVsiTW96IiwiV2Via2l0IiwiTyIsIm1zIl0sYz1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyKDEpO2lmKGEgaW4gaS5zdHlsZSlyZXR1cm4gYTtmb3IoYT0wO2E8Yi5sZW5ndGg7KythKXt2YXIgZD1iW2FdK2M7aWYoZCBpbiBpLnN0eWxlKXJldHVybiBkfX1mdW5jdGlvbiBqKGEpeyJzdHJpbmciPT09dHlwZW9mIGEmJnRoaXMucGFyc2UoYSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gcChhLGIsYyl7ITA9PT1iP2EucXVldWUoYyk6Yj9hLnF1ZXVlKGIsYyk6YygpfWZ1bmN0aW9uIG0oYSl7dmFyIGI9W107ZC5lYWNoKGEsZnVuY3Rpb24oYSl7YT1kLmNhbWVsQ2FzZShhKTthPWQudHJhbnNpdC5wcm9wZXJ0eU1hcFthXXx8YTthPXIoYSk7LTE9PT1kLmluQXJyYXkoYSxiKSYmYi5wdXNoKGEpfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyxlKXthPW0oYSk7ZC5jc3NFYXNlW2NdJiYoYz1kLmNzc0Vhc2VbY10pOwp2YXIgaD0iIituKGIpKyIgIitjOzA8cGFyc2VJbnQoZSwxMCkmJihoKz0iICIrbihlKSk7dmFyIGY9W107ZC5lYWNoKGEsZnVuY3Rpb24oYSxiKXtmLnB1c2goYisiICIraCl9KTtyZXR1cm4gZi5qb2luKCIsICIpfWZ1bmN0aW9uIGYoYSxiKXtifHwoZC5jc3NOdW1iZXJbYV09ITApO2QudHJhbnNpdC5wcm9wZXJ0eU1hcFthXT1lLnRyYW5zZm9ybTtkLmNzc0hvb2tzW2FdPXtnZXQ6ZnVuY3Rpb24oYil7cmV0dXJuKGQoYikuY3NzKCJ0cmFuc2Zvcm0iKXx8bmV3IGopLmdldChhKX0sc2V0OmZ1bmN0aW9uKGIsZSl7dmFyIGg9ZChiKS5jc3MoInRyYW5zZm9ybSIpfHxuZXcgajtoLnNldEZyb21TdHJpbmcoYSxlKTtkKGIpLmNzcyh7dHJhbnNmb3JtOmh9KX19fWZ1bmN0aW9uIHIoYSl7cmV0dXJuIGEucmVwbGFjZSgvKFtBLVpdKS9nLGZ1bmN0aW9uKGEpe3JldHVybiItIithLnRvTG93ZXJDYXNlKCl9KX1mdW5jdGlvbiBnKGEsYil7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYSYmIWEubWF0Y2goL15bXC0wLTlcLl0rJC8pPwphOiIiK2ErYn1mdW5jdGlvbiBuKGEpe2QuZnguc3BlZWRzW2FdJiYoYT1kLmZ4LnNwZWVkc1thXSk7cmV0dXJuIGcoYSwibXMiKX1kLnRyYW5zaXQ9e3ZlcnNpb246IjAuMS4zIixwcm9wZXJ0eU1hcDp7bWFyZ2luTGVmdDoibWFyZ2luIixtYXJnaW5SaWdodDoibWFyZ2luIixtYXJnaW5Cb3R0b206Im1hcmdpbiIsbWFyZ2luVG9wOiJtYXJnaW4iLHBhZGRpbmdMZWZ0OiJwYWRkaW5nIixwYWRkaW5nUmlnaHQ6InBhZGRpbmciLHBhZGRpbmdCb3R0b206InBhZGRpbmciLHBhZGRpbmdUb3A6InBhZGRpbmcifSxlbmFibGVkOiEwLHVzZVRyYW5zaXRpb25FbmQ6ITF9O3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9e30scz0tMTxuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY2hyb21lIik7ZS50cmFuc2l0aW9uPWsoInRyYW5zaXRpb24iKTtlLnRyYW5zaXRpb25EZWxheT1rKCJ0cmFuc2l0aW9uRGVsYXkiKTtlLnRyYW5zZm9ybT1rKCJ0cmFuc2Zvcm0iKTsKZS50cmFuc2Zvcm1PcmlnaW49aygidHJhbnNmb3JtT3JpZ2luIik7aS5zdHlsZVtlLnRyYW5zZm9ybV09IiI7aS5zdHlsZVtlLnRyYW5zZm9ybV09InJvdGF0ZVkoOTBkZWcpIjtlLnRyYW5zZm9ybTNkPSIiIT09aS5zdHlsZVtlLnRyYW5zZm9ybV07ZC5leHRlbmQoZC5zdXBwb3J0LGUpO3ZhciBvPWUudHJhbnNpdGlvbkVuZD17TW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIixXZWJraXRUcmFuc2l0aW9uOiJ3ZWJraXRUcmFuc2l0aW9uRW5kIixtc1RyYW5zaXRpb246Ik1TVHJhbnNpdGlvbkVuZCJ9W2UudHJhbnNpdGlvbl18fG51bGwsaT1udWxsO2QuY3NzRWFzZT17X2RlZmF1bHQ6ImVhc2UiLCJpbiI6ImVhc2UtaW4iLG91dDoiZWFzZS1vdXQiLCJpbi1vdXQiOiJlYXNlLWluLW91dCIsc25hcDoiY3ViaWMtYmV6aWVyKDAsMSwuNSwxKSJ9O2QuY3NzSG9va3MudHJhbnNmb3JtPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSkuZGF0YSgidHJhbnNmb3JtIil9LApzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iO2MgaW5zdGFuY2VvZiBqfHwoYz1uZXcgaihjKSk7YS5zdHlsZVtlLnRyYW5zZm9ybV09IldlYmtpdFRyYW5zZm9ybSI9PT1lLnRyYW5zZm9ybSYmIXM\/Yy50b1N0cmluZyghMCk6Yy50b1N0cmluZygpO2QoYSkuZGF0YSgidHJhbnNmb3JtIixjKX19O2QuY3NzSG9va3MudHJhbnNmb3JtT3JpZ2luPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGVbZS50cmFuc2Zvcm1PcmlnaW5dfSxzZXQ6ZnVuY3Rpb24oYSxiKXthLnN0eWxlW2UudHJhbnNmb3JtT3JpZ2luXT1ifX07ZC5jc3NIb29rcy50cmFuc2l0aW9uPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGVbZS50cmFuc2l0aW9uXX0sc2V0OmZ1bmN0aW9uKGEsYil7YS5zdHlsZVtlLnRyYW5zaXRpb25dPWJ9fTtmKCJzY2FsZSIpO2YoInRyYW5zbGF0ZSIpO2YoInJvdGF0ZSIpO2YoInJvdGF0ZVgiKTtmKCJyb3RhdGVZIik7Zigicm90YXRlM2QiKTtmKCJwZXJzcGVjdGl2ZSIpOwpmKCJza2V3WCIpO2YoInNrZXdZIik7ZigieCIsITApO2YoInkiLCEwKTtqLnByb3RvdHlwZT17c2V0RnJvbVN0cmluZzpmdW5jdGlvbihhLGIpe3ZhciBjPSJzdHJpbmciPT09dHlwZW9mIGI\/Yi5zcGxpdCgiLCIpOmIuY29uc3RydWN0b3I9PT1BcnJheT9iOltiXTtjLnVuc2hpZnQoYSk7ai5wcm90b3R5cGUuc2V0LmFwcGx5KHRoaXMsYyl9LHNldDpmdW5jdGlvbihhKXt2YXIgYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzLFsxXSk7dGhpcy5zZXR0ZXJbYV0\/dGhpcy5zZXR0ZXJbYV0uYXBwbHkodGhpcyxiKTp0aGlzW2FdPWIuam9pbigiLCIpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0dGVyW2FdP3RoaXMuZ2V0dGVyW2FdLmFwcGx5KHRoaXMpOnRoaXNbYV18fDB9LHNldHRlcjp7cm90YXRlOmZ1bmN0aW9uKGEpe3RoaXMucm90YXRlPWcoYSwiZGVnIil9LHJvdGF0ZVg6ZnVuY3Rpb24oYSl7dGhpcy5yb3RhdGVYPWcoYSwiZGVnIil9LHJvdGF0ZVk6ZnVuY3Rpb24oYSl7dGhpcy5yb3RhdGVZPQpnKGEsImRlZyIpfSxzY2FsZTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPWEpO3RoaXMuc2NhbGU9YSsiLCIrYn0sc2tld1g6ZnVuY3Rpb24oYSl7dGhpcy5za2V3WD1nKGEsImRlZyIpfSxza2V3WTpmdW5jdGlvbihhKXt0aGlzLnNrZXdZPWcoYSwiZGVnIil9LHBlcnNwZWN0aXZlOmZ1bmN0aW9uKGEpe3RoaXMucGVyc3BlY3RpdmU9ZyhhLCJweCIpfSx4OmZ1bmN0aW9uKGEpe3RoaXMuc2V0KCJ0cmFuc2xhdGUiLGEsbnVsbCl9LHk6ZnVuY3Rpb24oYSl7dGhpcy5zZXQoInRyYW5zbGF0ZSIsbnVsbCxhKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09dGhpcy5fdHJhbnNsYXRlWCYmKHRoaXMuX3RyYW5zbGF0ZVg9MCk7dm9pZCAwPT09dGhpcy5fdHJhbnNsYXRlWSYmKHRoaXMuX3RyYW5zbGF0ZVk9MCk7bnVsbCE9PWEmJih0aGlzLl90cmFuc2xhdGVYPWcoYSwicHgiKSk7bnVsbCE9PWImJih0aGlzLl90cmFuc2xhdGVZPWcoYiwicHgiKSk7dGhpcy50cmFuc2xhdGU9CnRoaXMuX3RyYW5zbGF0ZVgrIiwiK3RoaXMuX3RyYW5zbGF0ZVl9fSxnZXR0ZXI6e3g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNsYXRlWHx8MH0seTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2xhdGVZfHwwfSxzY2FsZTpmdW5jdGlvbigpe3ZhciBhPSh0aGlzLnNjYWxlfHwiMSwxIikuc3BsaXQoIiwiKTthWzBdJiYoYVswXT1wYXJzZUZsb2F0KGFbMF0pKTthWzFdJiYoYVsxXT1wYXJzZUZsb2F0KGFbMV0pKTtyZXR1cm4gYVswXT09PWFbMV0\/YVswXTphfSxyb3RhdGUzZDpmdW5jdGlvbigpe2Zvcih2YXIgYT0odGhpcy5yb3RhdGUzZHx8IjAsMCwwLDBkZWciKS5zcGxpdCgiLCIpLGI9MDszPj1iOysrYilhW2JdJiYoYVtiXT1wYXJzZUZsb2F0KGFbYl0pKTthWzNdJiYoYVszXT1nKGFbM10sImRlZyIpKTtyZXR1cm4gYX19LHBhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7YS5yZXBsYWNlKC8oW2EtekEtWjAtOV0rKVwoKC4qPylcKS9nLGZ1bmN0aW9uKGEsZCwKZSl7Yi5zZXRGcm9tU3RyaW5nKGQsZSl9KX0sdG9TdHJpbmc6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYztmb3IoYyBpbiB0aGlzKWlmKHRoaXMuaGFzT3duUHJvcGVydHkoYykmJihlLnRyYW5zZm9ybTNkfHwhKCJyb3RhdGVYIj09PWN8fCJyb3RhdGVZIj09PWN8fCJwZXJzcGVjdGl2ZSI9PT1jfHwidHJhbnNmb3JtT3JpZ2luIj09PWMpKSkiXyIhPT1jWzBdJiYoYSYmInNjYWxlIj09PWM\/Yi5wdXNoKGMrIjNkKCIrdGhpc1tjXSsiLDEpIik6YSYmInRyYW5zbGF0ZSI9PT1jP2IucHVzaChjKyIzZCgiK3RoaXNbY10rIiwwKSIpOmIucHVzaChjKyIoIit0aGlzW2NdKyIpIikpO3JldHVybiBiLmpvaW4oIiAiKX19O2QuZm4udHJhbnNpdGlvbj1kLmZuLnRyYW5zaXQ9ZnVuY3Rpb24oYSxiLGMsZil7dmFyIGg9dGhpcyxnPTAsaT0hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGImJihmPWIsYj12b2lkIDApOyJmdW5jdGlvbiI9PT10eXBlb2YgYyYmKGY9YyxjPXZvaWQgMCk7InVuZGVmaW5lZCIhPT0KdHlwZW9mIGEuZWFzaW5nJiYoYz1hLmVhc2luZyxkZWxldGUgYS5lYXNpbmcpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZHVyYXRpb24mJihiPWEuZHVyYXRpb24sZGVsZXRlIGEuZHVyYXRpb24pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuY29tcGxldGUmJihmPWEuY29tcGxldGUsZGVsZXRlIGEuY29tcGxldGUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEucXVldWUmJihpPWEucXVldWUsZGVsZXRlIGEucXVldWUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZGVsYXkmJihnPWEuZGVsYXksZGVsZXRlIGEuZGVsYXkpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGImJihiPWQuZnguc3BlZWRzLl9kZWZhdWx0KTsidW5kZWZpbmVkIj09PXR5cGVvZiBjJiYoYz1kLmNzc0Vhc2UuX2RlZmF1bHQpO3ZhciBiPW4oYiksaj1xKGEsYixjLGcpLGw9ZC50cmFuc2l0LmVuYWJsZWQmJmUudHJhbnNpdGlvbj9wYXJzZUludChiLDEwKStwYXJzZUludChnLDEwKTowO2lmKDA9PT1sKXJldHVybiBwKGgsaSxmdW5jdGlvbihiKXtoLmNzcyhhKTsKZiYmZi5hcHBseShoKTtiJiZiKCl9KSxoO3ZhciBrPXt9LG09ZnVuY3Rpb24oYil7dmFyIGM9ZmFsc2UsZz1mdW5jdGlvbigpe2MmJmgub2ZmKG8sZyk7bD4wJiZoLmVhY2goZnVuY3Rpb24oKXt0aGlzLnN0eWxlW2UudHJhbnNpdGlvbl09a1t0aGlzXXx8bnVsbH0pO3R5cGVvZiBmPT09ImZ1bmN0aW9uIiYmZi5hcHBseShoKTt0eXBlb2YgYj09PSJmdW5jdGlvbiImJmIoKX07aWYobD4wJiZvJiZkLnRyYW5zaXQudXNlVHJhbnNpdGlvbkVuZCl7Yz10cnVlO2gub24obyxnKX1lbHNlIHdpbmRvdy5zZXRUaW1lb3V0KGcsbCk7aC5lYWNoKGZ1bmN0aW9uKCl7bD4wJiYodGhpcy5zdHlsZVtlLnRyYW5zaXRpb25dPWopO2QodGhpcykuY3NzKGEpfSl9O3AoaCxpLGZ1bmN0aW9uKGEpe3ZhciBiPTA7ZS50cmFuc2l0aW9uPT09Ik1velRyYW5zaXRpb24iJiZiPDI1JiYoYj0yNSk7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXttKGEpfSxiKX0pO3JldHVybiB0aGlzfTtkLnRyYW5zaXQuZ2V0VHJhbnNpdGlvblZhbHVlPQpxfSkoalF1ZXJ5KTsvKkVPRiovOwovKiogL20vanMvanF1ZXJ5LnRvdWNoU3dpcGUubWluLmpzICoqLwooZnVuY3Rpb24oZyl7Zy5mbi5zd2lwZT1mdW5jdGlvbihtKXtpZighdGhpcylyZXR1cm4gZmFsc2U7dmFyIGI9e2ZpbmdlcnM6MSx0aHJlc2hvbGQ6NzUsc3dpcGU6bnVsbCxzd2lwZUxlZnQ6bnVsbCxzd2lwZVJpZ2h0Om51bGwsc3dpcGVVcDpudWxsLHN3aXBlRG93bjpudWxsLHN3aXBlU3RhdHVzOm51bGwsY2xpY2s6bnVsbCx0cmlnZ2VyT25Ub3VjaEVuZDp0cnVlLGFsbG93UGFnZVNjcm9sbDoiYXV0byJ9LHA9ImxlZnQiLHY9InJpZ2h0Iix3PSJ1cCIseD0iZG93biIseT0ibm9uZSIsej0iaG9yaXpvbnRhbCIsQT0idmVydGljYWwiLEc9ImF1dG8iLEg9InN0YXJ0IixCPSJtb3ZlIixxPSJlbmQiLG49ImNhbmNlbCIsZD0ib250b3VjaHN0YXJ0ImluIHdpbmRvdyxDPWQ\/InRvdWNoc3RhcnQiOiJtb3VzZWRvd24iLHI9ZD8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIixzPWQ\/InRvdWNoZW5kIjoibW91c2V1cCIsYz0ic3RhcnQiO2lmKG0uYWxsb3dQYWdlU2Nyb2xsPT11bmRlZmluZWQmJg0KKG0uc3dpcGUhPXVuZGVmaW5lZHx8bS5zd2lwZVN0YXR1cyE9dW5kZWZpbmVkKSltLmFsbG93UGFnZVNjcm9sbD15O20mJmcuZXh0ZW5kKGIsbSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Z1bmN0aW9uIEQoYSl7dmFyIGU9ZD9hLnRvdWNoZXNbMF06YTtjPUg7aWYoZClrPWEudG91Y2hlcy5sZW5ndGg7ZGlzdGFuY2U9MDtkaXJlY3Rpb249bnVsbDtpZihrPT1iLmZpbmdlcnN8fCFkKXtoLng9Zi54PWUucGFnZVg7aC55PWYueT1lLnBhZ2VZO2Iuc3dpcGVTdGF0dXMmJm8oYSxjKX1lbHNlIGwoYSk7aWYoZCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihyLHQpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIocyx1KX1lbHNle2coZG9jdW1lbnQpLm9uKHIsdCk7Zyhkb2N1bWVudCkub24ocyx1KX19ZnVuY3Rpb24gdChhKXtpZighKGM9PXF8fGM9PW4pKXt2YXIgZT1kP2EudG91Y2hlc1swXTphO2YueD1lLnBhZ2VYO2YueT1lLnBhZ2VZO2RpcmVjdGlvbj1FKCk7aWYoZClrPQ0KYS50b3VjaGVzLmxlbmd0aDtjPUI7ZT1kaXJlY3Rpb247aWYoYi5hbGxvd1BhZ2VTY3JvbGw9PXkpYS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2V7dmFyIGk9Yi5hbGxvd1BhZ2VTY3JvbGw9PUc7c3dpdGNoKGUpe2Nhc2UgcDppZihiLnN3aXBlTGVmdCYmaXx8IWkmJmIuYWxsb3dQYWdlU2Nyb2xsIT16KWEucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIHY6aWYoYi5zd2lwZVJpZ2h0JiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPXopYS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgdzppZihiLnN3aXBlVXAmJml8fCFpJiZiLmFsbG93UGFnZVNjcm9sbCE9QSlhLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSB4OmlmKGIuc3dpcGVEb3duJiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPUEpYS5wcmV2ZW50RGVmYXVsdCgpfX1pZihrPT1iLmZpbmdlcnN8fCFkKXtkaXN0YW5jZT1GKCk7Yi5zd2lwZVN0YXR1cyYmbyhhLGMsZGlyZWN0aW9uLGRpc3RhbmNlKTtpZighYi50cmlnZ2VyT25Ub3VjaEVuZClpZihkaXN0YW5jZT49DQpiLnRocmVzaG9sZCl7Yz1xO28oYSxjKTtsKGEpfX1lbHNle2M9bjtvKGEsYyk7bChhKX19fWZ1bmN0aW9uIHUoYSl7YS5wcmV2ZW50RGVmYXVsdCgpO2Rpc3RhbmNlPUYoKTtkaXJlY3Rpb249RSgpO2lmKGIudHJpZ2dlck9uVG91Y2hFbmQpe2M9cTtpZigoaz09Yi5maW5nZXJzfHwhZCkmJmYueCE9MClkaXN0YW5jZT49Yi50aHJlc2hvbGR8fChjPW4pO2Vsc2UgYz1uO28oYSxjKTtsKGEpfWVsc2UgaWYoYz09Qil7Yz1uO28oYSxjKTtsKGEpfWlmKGQpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIocix0KTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHMsdSl9ZWxzZXtnKGRvY3VtZW50KS5vZmYocix0KTtnKGRvY3VtZW50KS5vZmYocyx1KX19ZnVuY3Rpb24gbCgpe2s9MDtoLng9MDtoLnk9MDtmLng9MDtmLnk9MH1mdW5jdGlvbiBvKGEsZSl7aWYoYi5zd2lwZVN0YXR1cyliLnN3aXBlU3RhdHVzLmNhbGwoaixhLGUsZGlyZWN0aW9ufHxudWxsLGRpc3RhbmNlfHwNCjApO2lmKGU9PW4paWYoYi5jbGljayYmKGs9PTF8fCFkKSYmKGlzTmFOKGRpc3RhbmNlKXx8ZGlzdGFuY2U9PTApKWIuY2xpY2suY2FsbChqLGEsYS50YXJnZXQpO2lmKGU9PXEpe2Iuc3dpcGUmJmIuc3dpcGUuY2FsbChqLGEsZGlyZWN0aW9uLGRpc3RhbmNlKTtzd2l0Y2goZGlyZWN0aW9uKXtjYXNlIHA6Yi5zd2lwZUxlZnQmJmIuc3dpcGVMZWZ0LmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB2OmIuc3dpcGVSaWdodCYmYi5zd2lwZVJpZ2h0LmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB3OmIuc3dpcGVVcCYmYi5zd2lwZVVwLmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB4OmIuc3dpcGVEb3duJiZiLnN3aXBlRG93bi5jYWxsKGosYSxkaXJlY3Rpb24sZGlzdGFuY2UpfX19ZnVuY3Rpb24gRigpe3JldHVybiBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhmLngtaC54LDIpK01hdGgucG93KGYueS0NCmgueSwyKSkpfWZ1bmN0aW9uIEUoKXt2YXIgYTthPU1hdGgucm91bmQoTWF0aC5hdGFuMihmLnktaC55LGgueC1mLngpKjE4MC9NYXRoLlBJKTtpZihhPDApYT0zNjAtTWF0aC5hYnMoYSk7YT1hO3JldHVybiBhPD00NSYmYT49MD9wOmE8PTM2MCYmYT49MzE1P3A6YT49MTM1JiZhPD0yMjU\/djphPjQ1JiZhPDEzNT94Ond9dmFyIGo9Zyh0aGlzKSxrPTAsaD17eDowLHk6MH0sZj17eDowLHk6MH07aWYoZCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKEMsRCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLGwpfWVsc2V7ai5vbihDLEQpO2coZG9jdW1lbnQpLm9uKCJ0b3VjaGNhbmNlbCIsbCl9fSl9fSkoalF1ZXJ5KTsvKkVPRiovOwovKiogL20vanMvYmFzZTY0LmpzICoqLwp2YXIgX19fZDJjX2Jhc2U2NGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDY6MDgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2Jhc2U2NGpzX2Nfb249IjIwMjQtMDctMDggMTA6MzA6MDUiOyJ1c2Ugc3RyaWN0IjsKdmFyIEJhc2U2ND17X2tleVN0cjoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLF9iNjRUZXN0OlJlZ0V4cCgiXig\/OltBLVphLXowLTkrL117NH0pKig\/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk\/JCIpLGVuY29kZTpmdW5jdGlvbihhKXt2YXIgZD0iIixjPTA7Zm9yKGE9QmFzZTY0Ll91dGY4X2VuY29kZShhKTtjPGEubGVuZ3RoOyl7dmFyIGI9YS5jaGFyQ29kZUF0KGMrKyksZT1hLmNoYXJDb2RlQXQoYysrKSxmPWEuY2hhckNvZGVBdChjKyspLGc9Yj4+MjtiPShiJjMpPDw0fGU+PjQ7dmFyIGg9KGUmMTUpPDwyfGY+PjYsaz1mJjYzO2lzTmFOKGUpP2g9az02NDppc05hTihmKSYmKGs9NjQpO2Q9ZCt0aGlzLl9rZXlTdHIuY2hhckF0KGcpK3RoaXMuX2tleVN0ci5jaGFyQXQoYikrdGhpcy5fa2V5U3RyLmNoYXJBdChoKSt0aGlzLl9rZXlTdHIuY2hhckF0KGspfXJldHVybiBkfSxkZWNvZGU6ZnVuY3Rpb24oYSl7dmFyIGQ9CiIiLGM9MDtmb3IoYT1hLnJlcGxhY2UoL1teQS1aYS16MC05XCtcLz1dL2csIiIpO2M8YS5sZW5ndGg7KXt2YXIgYj10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKSxlPXRoaXMuX2tleVN0ci5pbmRleE9mKGEuY2hhckF0KGMrKykpLGY9dGhpcy5fa2V5U3RyLmluZGV4T2YoYS5jaGFyQXQoYysrKSksZz10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKTtiPWI8PDJ8ZT4+NDtlPShlJjE1KTw8NHxmPj4yO3ZhciBoPShmJjMpPDw2fGc7ZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiKTs2NCE9ZiYmKGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpOzY0IT1nJiYoZCs9U3RyaW5nLmZyb21DaGFyQ29kZShoKSl9cmV0dXJuIEJhc2U2NC5fdXRmOF9kZWNvZGUoZCl9LF91dGY4X2VuY29kZTpmdW5jdGlvbihhKXt2YXIgZD0iIjthPWEucmVwbGFjZSgvXHJcbi9nLCJcbiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgYj1hLmNoYXJDb2RlQXQoYyk7MTI4PgpiP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoYik6KDEyNzxiJiYyMDQ4PmI\/ZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiPj42fDE5Mik6KGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYj4+MTJ8MjI0KSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGI+PjYmNjN8MTI4KSksZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiJjYzfDEyOCkpfXJldHVybiBkfSxfdXRmOF9kZWNvZGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkPSIiLGM9MCxiLGUsZjtjPGEubGVuZ3RoOyliPWEuY2hhckNvZGVBdChjKSwxMjg+Yj8oZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiKSxjKyspOjE5MTxiJiYyMjQ+Yj8oZT1hLmNoYXJDb2RlQXQoYysxKSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChiJjMxKTw8NnxlJjYzKSxjKz0yKTooZT1hLmNoYXJDb2RlQXQoYysxKSxmPWEuY2hhckNvZGVBdChjKzIpLGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGImMTUpPDwxMnwoZSY2Myk8PDZ8ZiY2MyksYys9Myk7cmV0dXJuIGR9LHdoaXRlTGlzdDpmdW5jdGlvbigpe3JldHVyblsidHJhaWxlcnMiXX0sCmlzQmFzZTY0OmZ1bmN0aW9uKGEpe3JldHVybiBCYXNlNjQud2hpdGVMaXN0KCkuaW5jbHVkZXMoYS50b0xvd2VyQ2FzZSgpKXx8InVuZGVmaW5lZCI9PT10eXBlb2YgYXx8IiI9PT1hfHwiIj09PWEudHJpbSgpfHw0Pj1hLmxlbmd0aD8hMTpCYXNlNjQuZW5jb2RlKEJhc2U2NC5kZWNvZGUoYSkpPT1hfX07Ci8qKiAvbS9qcy9kMmN0Y2svdXByb2ZpbGUuZmluYWwubWluLmpzICoqLwphY3RpdmVVc2VyUHJvZmlsZU1uZz17b25yZWFkeTpudWxsLG9ubm90Zm91bmQ6bnVsbCxkaXNhYmxlZDohMSx1aWQ6bnVsbCxhY3RpdmVTdGVwOjAsc3dmU3RvcmU6ITEscmVnaXN0ZXJlZFBhZ2VWaWV3czpudWxsLHJlZ2lzdGVyZWRFdmVudHM6bnVsbCxzZXNzaW9uaWQ6bnVsbCxyZWdpc3RlcmVkQ2FsbGJhY2tzOm51bGwscmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M6bnVsbCxwYWdlVmlld0NvdW50Om51bGwsX19wcm9wZXJ0aWVzOm51bGwsanF1ZXJ5QWN0aXZlOiEwLGlzRDJDU2l0ZTohMCxfX3Jlc2V0Vjo5LHJlc2V0U2Vjb25kUGFzczohMSxfX291dHB1dERpdk1zZzohMSxfX291dHB1dENvbnNvbGVNc2c6ITEsYWpheE1uZzp7YXN5bmM6ITAsX2xhc3RYOm51bGwseDpmdW5jdGlvbigpe3RyeXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBYTUxIdHRwUmVxdWVzdClyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0O2Zvcih2YXIgYT1bIk1TWE1MMi5YbWxIdHRwLjUuMCIsCgkJCSJNU1hNTDIuWG1sSHR0cC40LjAiLCJNU1hNTDIuWG1sSHR0cC4zLjAiLCJNU1hNTDIuWG1sSHR0cC4yLjAiLCJNaWNyb3NvZnQuWG1sSHR0cCJdLGIsZD0wO2Q8YS5sZW5ndGg7ZCsrKXRyeXtiPW5ldyBBY3RpdmVYT2JqZWN0KGFbZF0pO2JyZWFrfWNhdGNoKGMpe319Y2F0Y2goYyl7fXJldHVybiBifSxfc2VuZDpmdW5jdGlvbihhLGIsZCxjLGUsaCl7dHJ5e3ZhciBmPXRoaXMueCgpO3RoaXMuX2xhc3RYPWY7Zi5vcGVuKGQsYSxlKTt0cnl7Zi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24ocSl7InVuZGVmaW5lZCIhPXR5cGVvZiBoJiZudWxsIT1oJiZoKGYsZi5zdGF0dXNUZXh0LEVycm9yKGYucmVzcG9uc2VUZXh0KSl9KX1jYXRjaChxKXt9Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT1mLnJlYWR5U3RhdGU\/YihmLnJlc3BvbnNlVGV4dCk6InVuZGVmaW5lZCIhPXR5cGVvZiBoJiZudWxsIT1oJiZoKGYsZi5zdGF0dXNUZXh0LEVycm9yKGYucmVzcG9uc2VUZXh0KSl9OwoJCQkiUE9TVCI9PWQmJmYuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7Zi5zZW5kKGMpfWNhdGNoKHEpeyJ1bmRlZmluZWQiIT10eXBlb2YgaCYmbnVsbCE9aCYmaChmLCJ1bmtub3duIixxKX19LGFqYXg6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0cnl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLnR5cGUmJihhLnR5cGU9IkdFVCIpLCJ1bmRlZmluZWQiPT10eXBlb2YgYS5kYXRhJiYoYS5kYXRhPXt9KSx3aW5kb3cualF1ZXJ5JiYidW5kZWZpbmVkIiE9dHlwZW9mICQuYWpheCkkLmFqYXgoYSkuZG9uZShmdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZG9uZSYmYS5kb25lKGMpfSkuZmFpbChmdW5jdGlvbihjLGUsaCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmZhaWwmJmEuZmFpbChjLGUsaCl9KS5hbHdheXMoZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuYWx3YXlzJiZhLmFsd2F5cygpfSkuZG9uZShmdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9CgkJdHlwZW9mIGEuc3VjY2VzcyYmYS5zdWNjZXNzKGMpfSkuYWx3YXlzKGZ1bmN0aW9uKGMsZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmNvbXBsZXRlJiZhLmNvbXBsZXRlKGIuX2xhc3RYLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fbGFzdFguc3RhdHVzVGV4dD9iLl9sYXN0WC5zdGF0dXNUZXh0OiIiKX0pO2Vsc2V7dmFyIGQ9Yi5fZ2V0OyJwb3N0Ij09YS50eXBlLnRvTG93ZXJDYXNlKCkmJihkPWIuX3Bvc3QpO2QoYS51cmwsYS5kYXRhLGZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5kb25lJiZhLmRvbmUoYyk7InVuZGVmaW5lZCIhPXR5cGVvZiBhLnN1Y2Nlc3MmJmEuc3VjY2VzcyhjKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuY29tcGxldGUmJmEuY29tcGxldGUoKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuYWx3YXlzJiZhLmFsd2F5cygpfSxiLmFzeW5jLGZ1bmN0aW9uKGMsZSxoKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZmFpbCYmYS5mYWlsKGMsZSxoKX0pfX1jYXRjaChjKXtjb25zb2xlJiYKCQljb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgYWNjZXNzaW5nIGFqYXhNbmcuZ2V0OiAlcyIsYy5tZXNzYWdlKX19LF9nZXQ6ZnVuY3Rpb24oYSxiLGQsYyxlKXt2YXIgaD1bXSxmO2ZvcihmIGluIGIpaC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChmKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGJbZl0pKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0hMDthY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLl9zZW5kKGErIj8iK2guam9pbigiJiIpLGQsIkdFVCIsbnVsbCxjLGUpfSxfcG9zdDpmdW5jdGlvbihhLGIsZCxjLGUpe3ZhciBoPVtdLGY7Zm9yKGYgaW4gYiloLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGYpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYltmXSkpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPSEwO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuX3NlbmQoYSxkLCJQT1NUIixoLmpvaW4oIiYiKSwKCQkJYyxlKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7dHJ5e2lmKHdpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5nZXRTY3JpcHQpJC5nZXRTY3JpcHQoYSxiKTtlbHNle3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2QuYXN5bmM9MTtkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLGgpe2lmKGh8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGQ9dm9pZCAwLCFoJiZiJiZzZXRUaW1lb3V0KGIsMCl9O2Quc3JjPWE7Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkLGMpfX1jYXRjaChlKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmV0cmlldmluZyBqcyBzY3JpcHQuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbjogJXMiLAoJCQllLm1lc3NhZ2UpfX19LGNvb2tpZU1uZzp7cmVhZENvb2tpZVZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7dHJ5e2lmKHdpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5jb29raWUpYj0kLmNvb2tpZShhKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPW51bGwpO2Vsc2V7YSs9Ij0iO2Zvcih2YXIgZD1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKSxjPTA7YzxkLmxlbmd0aDtjKyspe2Zvcih2YXIgZT1kW2NdOyIgIj09ZS5jaGFyQXQoMCk7KWU9ZS5zdWJzdHJpbmcoMSxlLmxlbmd0aCk7aWYoMD09ZS5pbmRleE9mKGEpKXtiPWUuc3Vic3RyaW5nKGEubGVuZ3RoLGUubGVuZ3RoKTticmVha319fX1jYXRjaChoKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmVhZGluZyBjb29raWU6ICVzIixoLm1lc3NhZ2UpfXJldHVybiBifSxzZXRDb29raWVWYWx1ZTpmdW5jdGlvbihhLGIsZCxjKXt0cnl7aWYoITAhPT10aGlzLmRpc2FibGVkKXtpZigidW5kZWZpbmVkIj09CgkJCXR5cGVvZiBkfHxudWxsPT1kKWQ9Ii8iO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPTA7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1udWxsKTt2YXIgZT1uZXcgRGF0ZTtlLnNldFRpbWUoZS5nZXRUaW1lKCkrODY0RTUqYyk7d2luZG93LmpRdWVyeSYmInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZT8kLmNvb2tpZShhLGIse3BhdGg6ZCxzZWN1cmU6ITAsZXhwaXJlczowPT1jPyIiOmV9KTooZXhwaXJlcz0wIT1jPyI7IGV4cGlyZXM9IitlLnRvR01UU3RyaW5nKCk6IiIsZG9jdW1lbnQuY29va2llPWErIj0iK2IrZXhwaXJlcysiOyBzZWN1cmU7IHBhdGg9IitkLGImJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5sb2dDb29raWUoYSxiLGMsZCkpfX1jYXRjaChoKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBjb29raWU6ICVzIixoLm1lc3NhZ2UpfX0sZGVsZXRlQ29va2llOmZ1bmN0aW9uKGEpe3RyeXt3aW5kb3cualF1ZXJ5JiYKCQkidW5kZWZpbmVkIiE9dHlwZW9mICQuY29va2llPygkLmNvb2tpZShhLG51bGwpLCQuY29va2llKGEsbnVsbCx7cGF0aDoiLyJ9KSk6dGhpcy5zZXRDb29raWVWYWx1ZShhLG51bGwsLTEpfWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBkZWxldGluZyBjb29raWU6ICVzIixiLm1lc3NhZ2UpfX0sbG9nQ29va2llOmZ1bmN0aW9uKGEsYixkLGMsZSl7InVuZGVmaW5lZCI9PT10eXBlb2YgZSYmKGU9NSk7InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj9lJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmxvZ0Nvb2tpZShhLGIsZCxjLGUtMSl9LDEwMCk6d2luZG93LkNvb2tpZUxvZ2dlci5sb2coYSxiLGQsYyl9fSxfX3VzZVByb3h5OmZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLmlzRDJDU2l0ZT8hMTohMH0sX2lzQm90OmZ1bmN0aW9uKCl7cmV0dXJuL2JvdHxnb29nbGVib3R8Y3Jhd2xlcnxzcGlkZXJ8cm9ib3R8Y3Jhd2xpbmcvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPwoJCSEwOiExfSxnZXRTdGF0c1VSSTpmdW5jdGlvbigpe3ZhciBhPSIvcHJveHlfc2QyYy8iO3RyeXshMT09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmlzRDJDU2l0ZSYmKGE9Imh0dHA6Ly9zdGF0cy5kMmNtZWRpYS5jYS8iLCJodHRwczoiPT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wmJihhPSJodHRwczovL3NzbHN0YXRzLmQyY21lZGlhLmNhLyIpKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIGdldFN0YXRzVVJJOiAlcyIsYi5tZXNzYWdlKSxhPSJodHRwczovL3NzbHN0YXRzLmQyY21lZGlhLmNhLyJ9cmV0dXJuIGF9LGdldEZQVVJJOmZ1bmN0aW9uKCl7aWYoITA9PT10aGlzLmRpc2FibGVkKXJldHVybiIiO3ZhciBhPSIvanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMiO3RyeXthPSExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlP251bGwhPXdpbmRvdy5sb2NhdGlvbiYmInVuZGVmaW5lZCIhPQoJdHlwZW9mIHdpbmRvdy5sb2NhdGlvbi5ocmVmJiYtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiY3JtMi5kMmNtZWRpYS5jYSIpPyJodHRwczovL2NybTIuZDJjbWVkaWEuY2EvYXNzZXRzL2pzL2QyY3Rjay9mcHJpbnQudjIuanMiOiJodHRwczovL3d3dy5hdXRvYXViYWluZS5jb20vanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMiOiEwPT09dGhpcy5fX291dHB1dERpdk1zZz8iL2pzL2QyY3Rjay9mcHJpbnQudjIuanMiOiIvanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMifWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gZ2V0RlBVUkk6ICVzIixiLm1lc3NhZ2UpLGE9Ii9qcy9kMmN0Y2svZnByaW50LnYyLm1pbi5qcyJ9cmV0dXJuIGF9LGdldFNlc3Npb25JRDpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkOwoJCXZhciBhPXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwwPT1hKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9d2luZG93LmFjdGl2ZVNlc3Npb25JRCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ7YT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1c2lkIik7cmV0dXJuIG51bGwhPWE\/KGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD1hLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZCk6MH0scmVnaXN0ZXJDYWxsYmFjazpmdW5jdGlvbihhKXtpZighMD09PXRoaXMuZGlzYWJsZWQpe2lmKG51bGwhPWEpdHJ5e2EoKX1jYXRjaChiKXt9cmV0dXJuITF9bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcyYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3M9W10pOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYKCW51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ\/YSgpOmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3MucHVzaChhKX0scmVnaXN0ZXJTZXNzaW9uQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7aWYoITA9PT10aGlzLmRpc2FibGVkKXtpZihudWxsIT1hKXRyeXthKCl9Y2F0Y2goYil7fXJldHVybiExfW51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M9W10pOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQmJjAhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD9hKCk6YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MucHVzaChhKX0sCglfX25vdGlmeVVVSUQ6ZnVuY3Rpb24oKXt0cnl7aWYoITA9PT10aGlzLmRpc2FibGVkKXt0cnl7YigpfWNhdGNoKGQpe31yZXR1cm4hMX1pZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzKXtmb3IodmFyIGE9MDthPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3MubGVuZ3RoO2ErKyl7dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrc1thXTtiKCl9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcz1udWxsfX1jYXRjaChkKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIF9fbm90aWZ5VVVJRDogJXMiLGQubWVzc2FnZSl9fSxfX25vdGlmeVNlc3Npb25JRDpmdW5jdGlvbigpe2lmKCEwPT09dGhpcy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKTsKCQlpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fCIwIj09YXx8MD09YSl2YXIgYj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3RyeXtudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcz9jbGVhckludGVydmFsKGIpOjAhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKSYmKGNsZWFySW50ZXJ2YWwoYiksYWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKSl9Y2F0Y2goZCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJOb3RpZnkgc2Vzc2lvbmlkIGZhaWxlZCB3aXRoOiAlcyIsZC5tZXNzYWdlKX19LDUwMCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MpdHJ5e2ZvcihhPTA7YTxhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcy5sZW5ndGg7YSsrKSgwLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzW2FdKSgpOwoJCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcz1udWxsfWNhdGNoKGQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gX19ub3RpZnlTZXNzaW9uSUQ6ICVzIixkLm1lc3NhZ2UpfX0sbG9nTXNnOmZ1bmN0aW9uKGEpe3RyeXtpZighMD09PXRoaXMuZGlzYWJsZWQpcmV0dXJuITE7ITA9PT10aGlzLl9fb3V0cHV0RGl2TXNnJiYkKGRvY3VtZW50LmJvZHkpLmFwcGVuZCgiPGRpdj4iK2ErIjwvZGl2PiIpOyEwPT09dGhpcy5fX291dHB1dENvbnNvbGVNc2cmJmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhhKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIG1lc3NhZ2UgbG9nZ2luZy4gSG93IGlyb25pYzogJXMiLGIubWVzc2FnZSl9fSxjaGVja1NjaGVkdWxlZFJlc2V0OmZ1bmN0aW9uKCl7dmFyIGE9CgkJITE7dHJ5e2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF9yc3QiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpYj0wO2IhPXRoaXMuX19yZXNldFYmJihhPSEwLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF9yc3QiLHRoaXMuX19yZXNldFYsIi8iLDRFMykpfWNhdGNoKGQpe3RoaXMubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGluIHNjaGVkdWxlZCByZXNldCBjaGVjazogIitkLm1lc3NhZ2UpfXJldHVybiBhfSxnZXRBY3RpdmVQcm9maWxlaWQ6ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnVpZClyZXR1cm4gbnVsbD09d2luZG93LmFjdGl2ZVByb2ZpbGVJRCYmKHdpbmRvdy5hY3RpdmVQcm9maWxlSUQ9dGhpcy51aWQpLHRoaXMudWlkO2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuIG51bGw7CgkJdmFyIGE9dGhpcy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkIik7aWYobnVsbCE9YSYmMDxhLmxlbmd0aClyZXR1cm4gdGhpcy5hY3RpdmVQcm9maWxlSUQ9dGhpcy51aWQ9YSx0aGlzLl9fZmlyZVJlYWR5RXZlbnQoKSx0aGlzLnVpZDthPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWRfdmxkMyIpO2lmKG51bGwhPWEmJjAhPWEubGVuZ3RoKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRVc2VyRGF0YUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRMb2NhbFN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7CgkJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEdsb2JhbFN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkU2Vzc2lvblN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRnJvbUxvY2FsREIoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRkxWQ29va2llKCl9ZWxzZSBzZXRUaW1lb3V0KCJhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgzKSIsCgkJCTUwMCk7cmV0dXJuIG51bGx9LGVuc3VyZVZhbGlkSUQ6ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nfHwic3RyaW5nIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmMD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLmxlbmd0aClhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9bnVsbH0sc2V0QWN0aXZlUHJvZmlsZWlkOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfHwhMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldERCQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0UE5HQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RVRhZ0Nvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldFVzZXJEYXRhQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0TG9jYWxTdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0R2xvYmFsU3RvcmFnZUNvb2tpZSgpOwoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNldFNlc3Npb25TdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RkxWQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlVVUlEKCl9LF9fY29udGludWVMb2FkOmZ1bmN0aW9uKGEpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2ZpcmVSZWFkeUV2ZW50KCk7ZWxzZSBzd2l0Y2goYSl7Y2FzZSAxOmFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEVUYWdDb29raWUoKTticmVhaztjYXNlIDI6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkUE5HQ29va2llKCk7YnJlYWs7ZGVmYXVsdDphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2ZpcmVOb3RGb3VuZCgpfX0sX19maXJlUmVhZHlFdmVudDpmdW5jdGlvbigpe2lmKG51bGwhPQoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ucmVhZHkpYWN0aXZlVXNlclByb2ZpbGVNbmcub25yZWFkeShhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5VVVJRCgpfSxfX2ZpcmVOb3RGb3VuZDpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ubm90Zm91bmQpYWN0aXZlVXNlclByb2ZpbGVNbmcub25ub3Rmb3VuZCgpfSxzZXRGTFZDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zJiYib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXXx8d2luZG93LkFjdGl2ZVhPYmplY3QmJjAhPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpKXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmUmJgoJCShhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZT0hMCwidW5kZWZpbmVkIj09dHlwZW9mIFN3ZlN0b3JlKSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5nZXRTY3JpcHQoIi9qcy9zd2ZzdG9yZS5qcyIsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RkxWQ29va2llKTtyZXR1cm59dHJ5e3ZhciBhPW5ldyBTd2ZTdG9yZSh7bmFtZXNwYWNlOiJ1cHJvZmlsZSIsc3dmX3VybDoiL2ZsYXNoL3N0b3JhZ2Uuc3dmIixvbnJlYWR5OmZ1bmN0aW9uKCl7YS5zZXQoInVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKX0sb25lcnJvcjpmdW5jdGlvbigpe319KX1jYXRjaChiKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJm51bGwhPWNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIHNldCBGTFYgQ29va2llLiBFcnJvcjogIitiLm1lc3NhZ2UpfX19Y2F0Y2goYil7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZudWxsIT1jb25zb2xlJiZjb25zb2xlLmxvZyYmCgljb25zb2xlLmxvZygiTUFJTjogVW5hYmxlIHRvIHNldCBGTFYgQ29va2llLiBFcnJvcjogIitiLm1lc3NhZ2UpfX19LF9fbG9hZEZMVkNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zJiYib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXXx8d2luZG93LkFjdGl2ZVhPYmplY3QmJjAhPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpKXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmUmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZT0hMCwidW5kZWZpbmVkIj09dHlwZW9mIFN3ZlN0b3JlKSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5nZXRTY3JpcHQoIi9qcy9zd2ZzdG9yZS5qcyIsCgkJYWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRkxWQ29va2llKTtyZXR1cm59dHJ5e3ZhciBhPW5ldyBTd2ZTdG9yZSh7bmFtZXNwYWNlOiJ1cHJvZmlsZSIsc3dmX3VybDoiL2ZsYXNoL3N0b3JhZ2Uuc3dmIixvbnJlYWR5OmZ1bmN0aW9uKCl7dmFyIGI9YS5nZXQoInVpZCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgYiYmbnVsbCE9YiYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1iKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgxKX0sb25lcnJvcjpmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDEpfX0pfWNhdGNoKGIpe319ZWxzZSBhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgxKX19LF9fbG9hZEZyb21Mb2NhbERCOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cub3BlbkRhdGFiYXNlJiYKCWRhdGFiYXNlLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGEpe2EuZXhlY3V0ZVNxbCgiU0VMRUNUIHZhbHVlIEZST00gdXByb2ZpbGUgV0hFUkUgbmFtZT0\/IixbInVpZCJdLGZ1bmN0aW9uKGIsZCl7MTw9ZC5yb3dzLmxlbmd0aCYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1kLnJvd3MuaXRlbSgwKS52YWx1ZSl9LGZ1bmN0aW9uKGIsZCl7fSl9KX1jYXRjaChhKXt9fX0sc2V0REJDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZih3aW5kb3cub3BlbkRhdGFiYXNlKXt2YXIgYT13aW5kb3cub3BlbkRhdGFiYXNlKCJzcWxpdGVfdXByb2ZpbGUiLCIiLCJ1cHJvZmlsZSIsMTA0ODU3Nik7InVuZGVmaW5lZCIhPXR5cGVvZiB2YWx1ZSYmYS50cmFuc2FjdGlvbihmdW5jdGlvbihiKXtiLmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHVwcm9maWxlKGlkIElOVEVHRVIgTk9UIE5VTEwgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgdWlkIFRFWFQgTk9UIE5VTEwsIHZhbHVlIFRFWFQgTk9UIE5VTEwsIFVOSVFVRSAodWlkKSkiLAoJCVtdLGZ1bmN0aW9uKGQsYyl7fSxmdW5jdGlvbihkLGMpe30pO2IuZXhlY3V0ZVNxbCgiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyB1cHJvZmlsZSh1aWQsIHZhbHVlKSBWQUxVRVMoPywgPykiLFsidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWRdLGZ1bmN0aW9uKGQsYyl7fSxmdW5jdGlvbihkLGMpe30pfSl9fWNhdGNoKGIpe319fSxfX2xvYWRQTkdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e2lmKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Euc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjthLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7YS53aWR0aD0yMDA7YS5oZWlnaHQ9MTt2YXIgYj1hLmdldENvbnRleHQoIjJkIiksZD1uZXcgSW1hZ2U7CgkJZC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2Quc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtkLnNyYz0iL2ltYWdlc19hcGkvZDJjaWdjYWNoZTEucG5nIjtkLm9uZXJyb3I9ZnVuY3Rpb24oKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgzKX07ZC5vbmxvYWQ9ZnVuY3Rpb24oKXt0cnl7Yi5kcmF3SW1hZ2UoZCwwLDApO2Zvcih2YXIgYz1iLmdldEltYWdlRGF0YSgwLDAsMjAwLDEpLmRhdGEsZT0iIixoPTAsZj1jLmxlbmd0aDtoPGYmJjAhPWNbaF07aCs9NCl7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShjW2hdKTtpZigwPT1jW2grMV0pYnJlYWs7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShjW2grMV0pO2lmKDA9PWNbaCsyXSlicmVhaztlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNbaCsyXSl9MDxlLmxlbmd0aCYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1lKX1jYXRjaChxKXt9YWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMyl9fX1jYXRjaChjKXt9fX0sCglzZXRQTkdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBhPW5ldyBJbWFnZTthLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3JjPSIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMS5wbmc\/dmFsPSIrYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfX0sX19sb2FkRVRhZ0Nvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0aGlzLmFqYXhNbmcuYWpheCh7dXJsOiIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMi5wbmciLHR5cGU6IkdFVCIsc3VjY2VzczpmdW5jdGlvbihhKXthY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9YX0sCgkJY29tcGxldGU6ZnVuY3Rpb24oYSxiKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgyKX19KX19LHNldEVUYWdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBhPW5ldyBJbWFnZTthLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3JjPSIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMi5wbmc\/dmFsPSIrYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfX0sX19sb2FkVXNlckRhdGFDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3ZhciBhPXRoaXMuY3JlYXRlRWxlbSgiZGl2IiwidXNlcmRhdGFfZWwiLAoJCTEpO2Euc3R5bGUuYmVoYXZpb3I9InVybCgjZGVmYXVsdCN1c2VyRGF0YSkiO2EubG9hZCgidWlkIik7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWEuZ2V0QXR0cmlidXRlKCJ1aWQiKX1jYXRjaChiKXt9fX0sc2V0VXNlckRhdGFDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt2YXIgYT10aGlzLmNyZWF0ZUVsZW0oImRpdiIsInVzZXJkYXRhX2VsIiwxKTthLnN0eWxlLmJlaGF2aW9yPSJ1cmwoI2RlZmF1bHQjdXNlckRhdGEpIjthLnNldEF0dHJpYnV0ZSgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpO2Euc2F2ZSgidWlkIil9Y2F0Y2goYil7fX19LF9fbG9hZExvY2FsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93LmxvY2FsU3RvcmFnZSYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgidWlkIikpfWNhdGNoKGEpe319fSxzZXRMb2NhbFN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlJiZsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpfWNhdGNoKGEpe319fSxfX2xvYWRHbG9iYWxTdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZih3aW5kb3cuZ2xvYmFsU3RvcmFnZSlyZXR1cm4gdGhpcy5nZXRIb3N0KCksCgkJZXZhbCgiYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkID0gZ2xvYmFsU3RvcmFnZVtob3N0XS51aWQiKX1jYXRjaChhKXt9fX0sc2V0R2xvYmFsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5nbG9iYWxTdG9yYWdlJiYodGhpcy5nZXRIb3N0KCksZXZhbCgiZ2xvYmFsU3RvcmFnZVtob3N0XS51aWQgPSBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQiKSl9Y2F0Y2goYSl7fX19LF9fbG9hZFNlc3Npb25TdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9CgkJd2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oInVpZCIpKX1jYXRjaChhKXt9fX0sc2V0U2Vzc2lvblN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UmJndpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJ1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl9Y2F0Y2goYSl7fX19LHJlZ2lzdGVyUGFnZVZpZXc6ZnVuY3Rpb24oKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiEwO251bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3MmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzPVtdKTtmb3IodmFyIGE9MDthPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3MubGVuZ3RoO2ErKylpZih3aW5kb3cubG9jYXRpb24uaHJlZj09CgkJYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFBhZ2VWaWV3c1thXSlyZXR1cm4hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzLnB1c2god2luZG93LmxvY2F0aW9uLmhyZWYpO3JldHVybiEwfSxyZWdpc3RlclBhZ2VWaWV3RXZlbnQ6ZnVuY3Rpb24oYSxiLGQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITA7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkfHxudWxsPT1kKWQ9IiI7YT1hKyJ8fHwiK2IrInx8fCIrZDtudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZEV2ZW50cz1bXSk7Zm9yKGI9MDtiPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHMubGVuZ3RoO2IrKylpZihhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzW2JdKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHMucHVzaChhKTsKCQlyZXR1cm4hMH0sbG9nUGFnZVZpZXdFdmVudDpmdW5jdGlvbihhLGIsZCl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyUGFnZVZpZXdFdmVudChhLGIpKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGR8fG51bGw9PWQpZD0iIjtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWR8fDA9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZClhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclNlc3Npb25DYWxsYmFjayhmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYSxiLGQpfSk7ZWxzZXt2YXIgYz0wO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lmxhc3RWaWV3SUQpe3ZhciBlPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV2aWV3Iik7CgkJbnVsbCE9ZSYmKGM9ZSl9ZWxzZSBjPXdpbmRvdy5sYXN0UGFnZVZpZXdJRDsidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWN8fDA9PWM\/Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gaWRlbnRpZnkgbGFzdCB2aWV3IGlkIik6KGU9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKSxjPXtzaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCksYWN0aW9uOiJldmVudCIsdmlld2lkOmMsZXZlbnQ6YSxlY2F0ZWdvcnk6YixhZGRlZEluZm86InVuZGVmaW5lZCIhPXR5cGVvZiBkP2Q6IiJ9LGFjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuYWpheCh7dXJsOmUrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLHR5cGU6IlBPU1QiLGRhdGE6Y30pKX19fX0sbG9nUGFnZVZpZXdFeDpmdW5jdGlvbigpe3RyeXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuX2lzQm90KCkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyUGFnZVZpZXcoKSl7aWYoITA9PT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0VXJsVmFycyYmKGE9Z2V0VXJsVmFycygpKTtnZXRDdXN0b21WUkI9ZnVuY3Rpb24oayx3KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGN1c3RvbV92YXJpYWJsZXMmJm51bGwhPWN1c3RvbV92YXJpYWJsZXMpZm9yKHZhciB1IGluIGN1c3RvbV92YXJpYWJsZXMpe2lmKHUubmFtZT09aylyZXR1cm4gdS52YWx1ZX1lbHNlIHJldHVybiB3fTtnZXRDS1ZhbHVlPWZ1bmN0aW9uKGssdyl7dmFyIHU9Z2V0Q3VzdG9tVlJCKGssbnVsbCk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB1JiZudWxsIT11KXJldHVybiB1O3U9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZShrKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHV8fG51bGw9PXU\/bnVsbD09YXx8InVuZGVmaW5lZCI9PXR5cGVvZiBhW2tdPyJ1bmRlZmluZWQiPT10eXBlb2Ygdz8KCQkiIjp3OmFba106dX07Z2V0VVJMVmFsdWU9ZnVuY3Rpb24oayx3KXtrPWsucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTtrPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2srIj0oW14mI10qKSIpKS5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtrPW51bGw9PWs\/bnVsbDprWzFdO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Yga3x8bnVsbD09a3x8MD09ay50b1N0cmluZygpLmxlbmd0aD93Omt9O3ZhciBiPSIiLGQ9MCxjPSJGUkVOQ0giLGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLGg9ZnVuY3Rpb24oayl7dmFyIHc9e21ha2U6IiIsbW9kZWw6IiIseWVhcjoiIixwcmljZTowLHNpdGVpZDowLGRlYWxlcmlkOjAsbGFuZ3VhZ2U6IkZSRU5DSCJ9O2lmKCFrKXJldHVybiB3O2s9ay5zcGxpdCgvWzsmXS8pO2Zvcih2YXIgdT0wO3U8ay5sZW5ndGg7dSsrKXt2YXIgQj1rW3VdLnNwbGl0KCI9Iik7aWYoQiYmMj09Qi5sZW5ndGgpe3ZhciBFPQoJCXVuZXNjYXBlKEJbMF0pO0I9dW5lc2NhcGUoQlsxXSk7Qj1CLnJlcGxhY2UoL1wrL2csIiAiKTt3W0VdPUJ9fXJldHVybiB3fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGUmJm51bGwhPWUpZm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBxPWVbZl07aWYoLTEhPXEuc3JjLmluZGV4T2YoIi91cGxpZ2h0LmpzPyIpKXt2YXIgcD1xLnNyYy5yZXBsYWNlKC9eW15cP10rXD8\/LywiIikseT1oKHApO3ZhciBsPXkubWFrZTt2YXIgQz15Lm1vZGVsO2I9eS55ZWFyO3ZhciBBPXkuc2l0ZWlkO3ZhciB6PXkuZGVhbGVyaWQ7ZD15LnByaWNlO2M9eS5sYW5ndWFnZTticmVha319dmFyIG09YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCk7ZT0wO2lmKCJ1bmRlZmluZWQiPT1tfHwwPT1tKXttPTA7dmFyIHI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXNpZF90bXAiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHJ8fG51bGw9PXIpe3ZhciB4PQoJCW5ldyBEYXRlO3guc2V0VGltZSh4LmdldFRpbWUoKSs3MkU1KTt2YXIgZz0iOyBleHBpcmVzPSIreC50b0dNVFN0cmluZygpO2RvY3VtZW50LmNvb2tpZT0idXNpZF90bXA9MSIrZysiOyBwYXRoPS8ifWVsc2UgZT0hMH12YXIgbj13aW5kb3cubG9jYXRpb24uaHJlZjtpZigtMTxuLmluZGV4T2YoInN0ZXA9cmVzdW1lIikpe3ZhciB0PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInNlc3NpZCIpO24rPSImc2Vzc2lkPSIrKCJ1bmRlZmluZWQiIT10eXBlb2YgdHx8bnVsbCE9dD90OiJOVUxMIil9dmFyIHY9e3NpZDptLHV1aWQ6d2luZG93LmFjdGl2ZVByb2ZpbGVJRCxzaXRlaWQ6QSxkZWFsZXJpZDp6LHV0bVNvdXJjZTpnZXRVUkxWYWx1ZSgidXRtX3NvdXJjZSIsIiIpLHV0bUNhbXBhaWduOmdldFVSTFZhbHVlKCJ1dG1fY2FtcGFpZ24iLCJvcmdhbmljIiksdXRtS2V5d29yZDpnZXRDS1ZhbHVlKCJ1dG1fa2V5d29yZCIpLHV0bUxhbmRpbmc6Z2V0Q0tWYWx1ZSgidXRtX2xhbmRpbmciKSwKCQl1dG1Tb3VyY2VSZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fc291cmNlX3JldGFyZ2V0aW5nIiksdXRtQ2FtcGFpZ25SZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmciKSxtYWtlOmwsbW9kZWw6Qyx5ZWFyOmlzTmFOKGIpPyhuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTpiLGxhbmd1YWdlOmMscGFnZToidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5hY3RpdmVQYWdlPyIiOndpbmRvdy5hY3RpdmVQYWdlLHByaWNlOmQsc2xvb2t1cDplLGhyZWY6bn0sRD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpO3Y9SlNPTi5zdHJpbmdpZnkodik7dj12LnJlcGxhY2VBbGwoIi8iLCJcXC8iKTt0aGlzLmFqYXhNbmcuYWpheCh7dXJsOkQrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLGRhdGE6dixkb25lOmZ1bmN0aW9uKGspe3RyeXtpZigic3RyaW5nIj09dHlwZW9mIGsmJihrPUpTT04ucGFyc2UoaykpLCJ1bmRlZmluZWQiIT10eXBlb2YgayYmCgkJbnVsbCE9ayYmKGsuY29uc3RydWN0b3I9PVtdLmNvbnN0cnVjdG9yfHxrLmNvbnN0cnVjdG9yPT17fS5jb25zdHJ1Y3Rvcikpe209ay5zZXNzaW9uaWQ7bGFzdFZpZXdJRD1rLnZpZXdpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fbG9hZFByb3BlcnRpZXMoay5wcm9wZXJ0aWVzKTt3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPW07d2luZG93Lmxhc3RQYWdlVmlld0lEPWxhc3RWaWV3SUQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPW07dmFyIHc9bmV3IERhdGU7dy5zZXRUaW1lKHcuZ2V0VGltZSgpKzcyRTUpO3ZhciB1PSI7IGV4cGlyZXM9Iit3LnRvR01UU3RyaW5nKCk7ZG9jdW1lbnQuY29va2llPSJ1c2lkPSIrbSt1KyI7IHBhdGg9LyI7ZG9jdW1lbnQuY29va2llPSJ1dmlldz0iK2xhc3RWaWV3SUQrdSsiOyBwYXRoPS8iO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9kZWxldGVDb29raWUoInVzaWRfdG1wIik7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKX19Y2F0Y2goQil7fXRyeXtudWxsIT0KCQlzaXRlV2Vic29ja2V0TGlzdGVuZXIuc2l0ZWlkJiZzaXRlV2Vic29ja2V0TGlzdGVuZXIuY29ubmVjdCgpfWNhdGNoKEIpe319fSl9fWNhdGNoKGspe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIHN0YXQgcGFnZSBkdWUgdG8gZXJyb3I6ICIray5tZXNzYWdlKX19LGxvZ1BhZ2VWaWV3OmZ1bmN0aW9uKCl7dHJ5e2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJQYWdlVmlldygpKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKCExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlKXJldHVybiB0aGlzLmxvZ1BhZ2VWaWV3RXgoKTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhJiZudWxsIT1hKWZvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWlmKC0xIT0KCQlhW2JdLnNyYy5pbmRleE9mKCIvdXBsaWdodC5qcz8iKSlyZXR1cm4gdGhpcy5sb2dQYWdlVmlld0V4KCk7dmFyIGQ9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGdldFVybFZhcnMmJihkPWdldFVybFZhcnMoKSk7Z2V0Q3VzdG9tVlJCPWZ1bmN0aW9uKGcsbil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjdXN0b21fdmFyaWFibGVzJiZudWxsIT1jdXN0b21fdmFyaWFibGVzKWZvcih2YXIgdCBpbiBjdXN0b21fdmFyaWFibGVzKXtpZih0Lm5hbWU9PWcpcmV0dXJuIHQudmFsdWV9ZWxzZSByZXR1cm4gbn07Z2V0Q0tWYWx1ZT1mdW5jdGlvbihnLG4pe3ZhciB0PW51bGw7dHJ5e3ZhciB2PWdldEN1c3RvbVZSQihnLG51bGwpOyJ1bmRlZmluZWQiIT10eXBlb2YgdiYmbnVsbCE9diYmKHQ9dik7aWYobnVsbD09dCYmKHQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZShnKSxudWxsPT10KSl7aWYobnVsbD09ZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkW2ddKXJldHVybiJ1bmRlZmluZWQiPT0KCXR5cGVvZiBuPyIiOm47dD1kW2ddfX1jYXRjaChEKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmV0cmlldmluZyBja1ZhbHVlIC0tICVzIixELm1lc3NhZ2UpfXJldHVybiB0fTtnZXRVUkxWYWx1ZT1mdW5jdGlvbihnLG4pe2c9Zy5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2c9KG5ldyBSZWdFeHAoIltcXD8mXSIrZysiPShbXiYjXSopIikpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpO2c9bnVsbD09Zz9udWxsOmdbMV07cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBnfHxudWxsPT1nfHwwPT1nLnRvU3RyaW5nKCkubGVuZ3RoP246Z307YT1mdW5jdGlvbigpe2lmKCExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlKXJldHVybltdO3ZhciBnPVtdO3RyeXt2YXIgbj1bXSx0PWZ1bmN0aW9uKGssdyl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjIitrKS5hdHRyKCJpZCIpJiYKCShrPSQoIiMiK2spLnZhbCgpLCJzdHJpbmciPT10eXBlb2YgayYmMDxrLmxlbmd0aCYmLTE9PWsuaW5kZXhPZigiIyMiKSk\/azp3fTtuLnB1c2goInBvcHVwIik7bi5wdXNoKCJwaG9uZSIpO24ucHVzaCgibGFzdHZpZXdlZCIpO24ucHVzaCgiZXhwcmVzc2NhciIpO2Zvcih2YXIgdj0wO3Y8bi5sZW5ndGg7disrKXt2YXIgRD10KG5bdl0rIm1ha2UiLG51bGwpO2lmKG51bGwhPUQpe2cucHVzaChEKTtnLnB1c2godChuW3ZdKyJtb2RlbCIsbnVsbCkpO2cucHVzaCh0KG5bdl0rInllYXIiLG51bGwpKTticmVha319fWNhdGNoKGspe2c9W10sZy5wdXNoKCIiKSxnLnB1c2goIiIpLGcucHVzaCgiIil9MD09Zy5sZW5ndGgmJmcucHVzaCgiIik7MT09Zy5sZW5ndGgmJmcucHVzaCgiIik7Mj09Zy5sZW5ndGgmJmcucHVzaCgiIik7cmV0dXJuIGd9O3ZhciBjPWI9IiIsZT0iIjt0cnl7dmFyIGg9YSgpO2I9MDxoLmxlbmd0aD9oWzBdOmI7Yz0xPGgubGVuZ3RoP2hbMV06YztlPTI8aC5sZW5ndGg\/CgkJaFsyXTplfWNhdGNoKGcpe2U9Yz1iPSIifXRyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlYXJjaENyaXRlcmlhJiZudWxsIT1zZWFyY2hDcml0ZXJpYSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBifHxudWxsPT1ifHwwPT1iLmxlbmd0aCliPS0xPT1zZWFyY2hDcml0ZXJpYS5tYWtlPyIiOnNlYXJjaENyaXRlcmlhLm1ha2U7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jfHwwPT1jLmxlbmd0aCljPS0xPT1zZWFyY2hDcml0ZXJpYS5tb2RlbD8iIjpzZWFyY2hDcml0ZXJpYS5tb2RlbDtpZigidW5kZWZpbmVkIj09dHlwZW9mIGV8fG51bGw9PWV8fDA9PWUubGVuZ3RoKWU9LTE9PXNlYXJjaENyaXRlcmlhLnllYXI\/IiI6c2VhcmNoQ3JpdGVyaWEueWVhcn1pZihudWxsPT1ifHwwPT1iLmxlbmd0aCkidW5kZWZpbmVkIiE9dHlwZW9mIG1ha2UmJm51bGwhPW1ha2UmJjA8bWFrZS5sZW5ndGgmJiIwIiE9bWFrZT9iPW1ha2U6KGI9JCgiI3BvcHVwbWFrZSIpLnZhbCgpLCJ1bmRlZmluZWQiPT0KCXR5cGVvZiBiJiYoYj0kKCIjYWN0aXZlTWFrZSIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPSQoIiNjYXJNYWtlIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9JCgnaW5wdXRbbmFtZT0ibWFrZSJdJykudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9Z2V0Q0tWYWx1ZSgibWFrZSIsIiIpKSk7aWYobnVsbD09Y3x8MD09Yy5sZW5ndGgpInVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbCYmbnVsbCE9bW9kZWwmJjA8bW9kZWwubGVuZ3RoJiYiMCIhPW1vZGVsP2M9bW9kZWw6KGM9JCgiI3BvcHVwbW9kZWwiKS52YWwoKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoIiNhY3RpdmVNb2RlbCIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoIiNjYXJNb2RlbCIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoJ2lucHV0W25hbWU9Im1vZGVsIl0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz1nZXRDS1ZhbHVlKCJtb2RlbCIsCgkJIiIpKSk7aWYobnVsbD09ZXx8MD09ZS5sZW5ndGgpInVuZGVmaW5lZCIhPXR5cGVvZiB5ZWFyJiZudWxsIT15ZWFyJiYhaXNOYU4oeWVhcikmJjA8eWVhci5sZW5ndGgmJiIwIiE9eWVhcj9lPXllYXI6KGU9JCgiI3BvcHVweWVhciIpLnZhbCgpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgiI2FjdGl2ZVllYXIiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0kKCIjY2FyWWVhciIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoIiN5ZWFyIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgnaW5wdXRbbmFtZT0ieW1heFRleHQiXScpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoJ2lucHV0W25hbWU9InltaW5UZXh0Il0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT1nZXRDS1ZhbHVlKCJ5ZWFyIiwobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpKSl9Y2F0Y2goZyl7Y29uc29sZSYmY29uc29sZS5sb2cmJgoJY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgaWRlbnRpZnlpbmcgbWFrZS1tb2RlbC15ZWFyOiAiK2cubWVzc2FnZSksbnVsbD09YiYmKGI9IiIpLG51bGw9PWMmJihjPSIiKSxudWxsPT1lJiYoZT0iIil9dmFyIGY9MDtpZighMSE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmpxdWVyeUFjdGl2ZSl7aWYoIlVTRURDQVJTIj09d2luZG93LmFjdGl2ZVBhZ2Upe3ZhciBxPTA7JCgiZGl2LmJveDE3MCBkaXYubWFpbl9waWNib3ggZGl2LmJveDJfZGV0YWlsc19taWQgZGl2LmJveDJfZGV0YWlsc190ZXh0IHNwYW4iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGc9JCh0aGlzKS50ZXh0KCk7LTEhPWcuaW5kZXhPZigiJCIpJiYocSsrLGYrPXBhcnNlSW50KGcucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpfSk7Zj0wPHE\/Zi9xOjA7aXNOYU4oZikmJihmPTApfTAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY3VycmVudENhclByaWNlIikuYXR0cigiaWQiKXx8CgkoZj1wYXJzZUludCgkKCIjY3VycmVudENhclByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY2FycHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjY2FycHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNjYXJQcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNjYXJQcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2V4cHJlc3NjYXJwcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNleHByZXNzY2FycHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09Cgl0eXBlb2YgJCgiI2NhcnByb29mY2FycHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjY2FycHJvb2ZjYXJwcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI3NlYXJjaFJlc3VsdHNBdmdQcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNzZWFyY2hSZXN1bHRzQXZnUHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoJ2lucHV0W25hbWU9InBtaW4iXScpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoJ2lucHV0W25hbWU9InBtaW4iXScpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgnaW5wdXRbbmFtZT0icG1heCJdJykuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgnaW5wdXRbbmFtZT0icG1heCJdJykudmFsKCkucmVwbGFjZSgiJCIsCgkJIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY2FyUHJpY2UiKS5hdHRyKCJpZCIpfHwoZj0kKCIjY2FyUHJpY2UiKS5oYXNDbGFzcygiYm94Ml9kZXRhaWxzX3RleHQyNSIpP3BhcnNlSW50KCQoIiNjYXJQcmljZSIpLmNoaWxkcmVuKCI6Zmlyc3QiKS50ZXh0KCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSk6cGFyc2VJbnQoJCgiI2NhclByaWNlIikudGV4dCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTtpc05hTihmKSYmKGY9MCk7dmFyIHA9MCx5PTA7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlU2l0ZUlEJiZudWxsIT13aW5kb3cuYWN0aXZlU2l0ZUlEJiYwIT13aW5kb3cuYWN0aXZlU2l0ZUlEP3A9d2luZG93LmFjdGl2ZVNpdGVJRDoocD0kKCIjc2l0ZUlEIikudmFsKCksInVuZGVmaW5lZCI9PXR5cGVvZiBwJiYocD0kKCIjdG9wc2l0ZWlkIikudmFsKCkpLCJ1bmRlZmluZWQiPT0KCXR5cGVvZiBwJiYocD0wKSk7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlRGVhbGVySUQmJih5PXdpbmRvdy5hY3RpdmVTaXRlSUQpO3ZhciBsPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLEM9MDtpZigidW5kZWZpbmVkIj09bHx8MD09bHx8IjAiPT1sKWlmKGw9MCwidW5kZWZpbmVkIj09dHlwZW9mICQuY29va2llKCJ1c2lkX3RtcCIpKXt2YXIgQT1uZXcgRGF0ZTtBLnNldFRpbWUoQS5nZXRUaW1lKCkrNzJFNSk7dmFyIHo9IjsgZXhwaXJlcz0iK0EudG9HTVRTdHJpbmcoKTtkb2N1bWVudC5jb29raWU9InVzaWRfdG1wPTEiK3orIjsgcGF0aD0vIn1lbHNlIEM9ITA7dmFyIG09d2luZG93LmxvY2F0aW9uLmhyZWY7LTE8bS5pbmRleE9mKCJzdGVwPXJlc3VtZSIpJiYobSs9IiZzZXNzaWQ9IisoInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZSgic2Vzc2lkIik\/JC5jb29raWUoInNlc3NpZCIpOiJOVUxMIikpfXZhciByPXtzaWQ6bCx1dWlkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldEFjdGl2ZVByb2ZpbGVpZCgpLAoJCXNpdGVpZDpwLGRlYWxlcmlkOnksdXRtU291cmNlOmdldFVSTFZhbHVlKCJ1dG1fc291cmNlIiwiIiksdXRtQ2FtcGFpZ246Z2V0VVJMVmFsdWUoInV0bV9jYW1wYWlnbiIsIm9yZ2FuaWMiKSx1dG1LZXl3b3JkOmdldENLVmFsdWUoInV0bV9rZXl3b3JkIiksdXRtTGFuZGluZzpnZXRDS1ZhbHVlKCJ1dG1fbGFuZGluZyIpLHV0bVNvdXJjZVJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKSx1dG1DYW1wYWlnblJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyIpLG1ha2U6Yixtb2RlbDpjLHllYXI6aXNOYU4oZSk\/KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOmUsbGFuZ3VhZ2U6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLHBhZ2U6InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUGFnZT8iIjp3aW5kb3cuYWN0aXZlUGFnZSxwcmljZTpmLHNsb29rdXA6QyxocmVmOm19LHg9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTsKCQlyPUpTT04uc3RyaW5naWZ5KHIpO3I9ci5yZXBsYWNlQWxsKCIvIiwiXFwvIik7dGhpcy5hamF4TW5nLmFqYXgoe3R5cGU6IlBPU1QiLHVybDp4KyJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCIsZGF0YTpyLGRvbmU6ZnVuY3Rpb24oZyl7InN0cmluZyI9PXR5cGVvZiBnJiYoZz1KU09OLnBhcnNlKGcpKTsidW5kZWZpbmVkIj09dHlwZW9mIGd8fG51bGw9PWd8fGcuY29uc3RydWN0b3IhPVtdLmNvbnN0cnVjdG9yJiZnLmNvbnN0cnVjdG9yIT17fS5jb25zdHJ1Y3Rvcnx8KGw9Zy5zZXNzaW9uaWQsbGFzdFZpZXdJRD1nLnZpZXdpZCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5fbG9hZFByb3BlcnRpZXMoZy5wcm9wZXJ0aWVzKSx3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPWwsd2luZG93Lmxhc3RQYWdlVmlld0lEPWxhc3RWaWV3SUQsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPWwsYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1c2lkIiwKCQkJCWwsIi8iLDIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXZpZXciLGxhc3RWaWV3SUQsIi8iLDIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWRfdG1wIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKSl9LGZhaWw6ZnVuY3Rpb24oZyxuLHQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIGxvZyBwYWdlIHZpZXcuIEVycm9yOiAiK3QubWVzc2FnZSl9LGFsd2F5czpmdW5jdGlvbigpe319KX19Y2F0Y2goZyl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gc3RhdCBwYWdlIGR1ZSB0byBlcnJvcjogIitnLm1lc3NhZ2UpfX0sX2xvYWRQcm9wZXJ0aWVzOmZ1bmN0aW9uKGEpe3RyeXsidW5kZWZpbmVkIiE9dHlwZW9mIGEmJm51bGwhPWEmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXM9YSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5wYWdlVmlld0NvdW50PQoJCWEucGFnZXZpZXdzKX1jYXRjaChiKXt9fSxnZXRQcm9wZXJ0eTpmdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcuX19wcm9wZXJ0aWVzfHxudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXM\/bnVsbDoidW5kZWZpbmVkIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcHJvcGVydGllc1thXT8idW5kZWZpbmVkIiE9dHlwZW9mIGI\/YjoiIjphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXNbYV19LGFkZFByb3BlcnR5OmZ1bmN0aW9uKGEsYixkKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fDA9PWEubGVuZ3RofHwidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWJ8fCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LmFjdGl2ZVByb2ZpbGVJRClyZXR1cm4gbnVsbDsidW5kZWZpbmVkIj09dHlwZW9mIGQmJihkPSJVUERBVEUiKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpOwoJCXRoaXMuYWpheE1uZy5hamF4KHt0eXBlOiJHRVQiLGFjdGlvbjoiYWRkcHJvcGVydHkiLHV1aWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0QWN0aXZlUHJvZmlsZWlkKCksc2lkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLHBuYW1lOmEscHZhbHVlOmIscG1vZGU6ZH0pO3JldHVybiEwfSx0YWdCcm93c2VyOmZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBkPWEsYz10aGlzO2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hKWQ9ZnVuY3Rpb24oaCl7dHJ5e3ZhciBmPW5ldyBTdHJpbmcoaCk7Zj1mLnRyaW0oKTtpZigwPGYubGVuZ3RoKXtjLmxvZ01zZygiVGFnZ2VkIHdpdGggdXVpZCA9PiAiK2YpO3ZhciBxPWMuZ2V0QWN0aXZlUHJvZmlsZWlkKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWYudHJpbSgpO251bGwhPXEmJiJ1bmRlZmluZWQiIT10eXBlb2YgcS5sZW5ndGgmJgoJMDxxLmxlbmd0aCYmYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkIT1xJiZjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF92MSIscSwiLyIsMTgwKTtjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLCIvIiw1RTMpO2MuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkX3ZsZDMiLCEwLCIvIiw1RTMpO2Muc2V0QWN0aXZlUHJvZmlsZWlkKCl9fWNhdGNoKHApe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIHJldHVybmVkIGZyb20gdGFnZ2luZzogIitwLm1lc3NhZ2UpfX07dGhpcy5sb2dNc2coIkdlbmVyYXRpbmcgZmluZ2VycHJpbnQiKTt2YXIgZT10aGlzLmdldEZQVVJJKCk7Yy5hamF4TW5nLmdldFNjcmlwdChlLGZ1bmN0aW9uKCl7dHJ5e3ZhciBoPWZ1bmN0aW9uKGwpe3RyeXtjLmxvZ01zZygiRmluZ2VycHJpbnRlZDogIitsKTt2YXIgQz1jLmdldEFjdGl2ZVByb2ZpbGVpZCgpLEE9ZW5jb2RlVVJJKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pOwoJCWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgbHx8bnVsbD09bClyZXR1cm4hMTt2YXIgej0hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5pc0QyQ1NpdGUmJjM9PXdpbmRvdy5hY3RpdmVTaXRlSUQmJih6PSEwKTtjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVmcCIsbCwiLyIsNUUzKTt2YXIgbT17ZDpBLGZwMTpsLnN1YnN0cmluZygwLDgpLGZwMjpsLnN1YnN0cmluZyg4LDE2KSxmcDM6bC5zdWJzdHJpbmcoMTYsMjQpLGZwNDpsLnN1YnN0cmluZygyNCwzMiksdWlkOkMsYWN0aW9uOiJ1cGdyYWRlZnAiLGRibTp6LHY6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19yZXNldFZ9LHI9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTtjLmxvZ01zZyhyKyJzZXJ2aWNlL2QyYy51cGdyYWRlLnY2LmZwLmpzIik7Yy5sb2dNc2coSlNPTi5zdHJpbmdpZnkobSkpO2MuYWpheE1uZy5hamF4KHt1cmw6cisic2VydmljZS9kMmMudXBncmFkZS52Ni5mcC5qcyIsdHlwZToiR0VUIixkYXRhOm0sCgkJCWRvbmU6ZnVuY3Rpb24oeCl7dHJ5e2MubG9nTXNnKCJVVUlEIGFmdGVyIHVwcm9maWxlIHVwZGF0ZTogIit4KSwidW5kZWZpbmVkIiE9dHlwZW9mIGQmJm51bGwhPWQ\/ZCh4KTpjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZCIseCwiLyIsNUUzKSwidW5kZWZpbmVkIiE9dHlwZW9mIGImJm51bGwhPWImJmIoKX1jYXRjaChnKXt9fX0pfWNhdGNoKHgpe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGV4ZWN1dGluZyB0YWdNZSBzdGVwOiAiK3gubWVzc2FnZSl9fSxmPSExO3RyeXtuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldpbiIpLG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTWFjIiksbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJMaW51eCIpLG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQW5kcm9pZCIpLC0xIT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoImxpa2UgTWFjIikmJihmPSEwKSxsb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCJodHRwcyIpfWNhdGNoKGwpe312YXIgcT0KCQl7cHJlcHJvY2Vzc29yOm51bGwsYXVkaW86e3RpbWVvdXQ6MUUzLGV4Y2x1ZGVJT1MxMTpmfSxmb250czp7c3dmQ29udGFpbmVySWQ6ImRjdGtkaXZmcDIiLHN3ZlBhdGg6ImZsYXNoL2NvbXBpbGVkL0ZvbnRMaXN0LnN3ZiIsdXNlckRlZmluZWRGb250czpbXSxleHRlbmRlZEpzRm9udHM6ITF9LHNjcmVlbjp7ZGV0ZWN0U2NyZWVuT3JpZW50YXRpb246ITB9LHBsdWdpbnM6e3NvcnRQbHVnaW5zRm9yOlsvcGFsZW1vb24vaV0sZXhjbHVkZUlFOiExfSxleHRyYUNvbXBvbmVudHM6W10sTk9UX0FWQUlMQUJMRToibm90IGF2YWlsYWJsZSIsRVJST1I6ImVycm9yIixFWENMVURFRDoiZXhjbHVkZWQifSxwPSExO251bGwhPXdpbmRvdyYmbnVsbCE9d2luZG93LmxvY2F0aW9uJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5sb2NhdGlvbi5ocmVmJiYoLTE8d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiZDJjZGVidWc9MSIpfHwtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiY3JtMi5kMmNtZWRpYS5jYSIpKSYmCgkocD0hMCk7dmFyIHk9ZnVuY3Rpb24obCl7dHJ5e3ZhciBDPWZ1bmN0aW9uKHope3o9ei5tYXAoZnVuY3Rpb24obSl7dmFyIHI9IiI7dHJ5e3N3aXRjaChwJiZjb25zb2xlLmxvZyhtLmtleS50b0xvd2VyQ2FzZSgpKSxtLmtleS50b0xvd2VyQ2FzZSgpKXtjYXNlICJjYW52YXMiOmNhc2UgIndlYmdsIjpjYXNlICJhZGJsb2NrIjpyPSIiO2JyZWFrO2Nhc2UgInVzZXJhZ2VudCI6aWYoMDxtLnZhbHVlLmxlbmd0aCYmLTEhPW0udmFsdWUuaW5kZXhPZigiICIpKWZvcih2YXIgeD1tLnZhbHVlLnNwbGl0KCIgIiksZz0wO2c8eC5sZW5ndGg7ZysrKXt2YXIgbj14W2ddO2lmKC0xIT1uLmluZGV4T2YoIi8iKSl7dmFyIHQ9bi5zcGxpdCgiLyIpO3IrPXRbMF19ZWxzZS0xPT1uLmluZGV4T2YoIi4iKSYmKHIrPW4pfXAmJmNvbnNvbGUubG9nKCJVc2VyIEFnZW50IC0tICIrcik7YnJlYWs7ZGVmYXVsdDoidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkobS52YWx1ZSl8fAoJbS52YWx1ZS5jb25zdHJ1Y3Rvcj09PUFycmF5PyhtLnZhbHVlLnNvcnQoKSxyPW0udmFsdWUuam9pbigpKTpyPW0udmFsdWV9fWNhdGNoKHYpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiRlAgRmFpbGVkIC0tICVzIC0gJW8iLHYubWVzc2FnZSxtKX1pZigidW5kZWZpbmVkIj09dHlwZW9mIHJ8fG51bGw9PXIpcj0iIjtyZXR1cm4gcn0pO3ouc29ydCgpO3JldHVybiB6fShsKTtwJiZjb25zb2xlLmxvZygidG8gaGFzaDogJW8iLEMpO3ZhciBBPUZpbmdlcnByaW50Mi54NjRoYXNoMTI4KEMuam9pbigiIiksMzEpO3AmJmNvbnNvbGUubG9nKCJGUCA9PiAlcyIsQSk7aChBKTtjLmxvZ01zZygiRmluZ2VycHJpbnQ6ICIrQSl9Y2F0Y2goeil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJGUDIgRmFpbGVkIC0tICVzIix6Lm1lc3NhZ2UpfX07d2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2s\/cmVxdWVzdElkbGVDYWxsYmFjayhmdW5jdGlvbigpe3RyeXtGaW5nZXJwcmludDIuZ2V0KHEsCgkJeSl9Y2F0Y2gobCl7Yy5sb2dNc2coIjEuVW5hYmxlIHRvIGluc3RhbnRpYXRlIEZQMi4gRXJyb3I6ICIrbC5tZXNzYWdlKX19KTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHJ5e0ZpbmdlcnByaW50Mi5nZXQocSx5KX1jYXRjaChsKXtjLmxvZ01zZygiMi5VbmFibGUgdG8gaW5zdGFudGlhdGUgRlAyLiBFcnJvcjogIitsLm1lc3NhZ2UpfX0sNTAwKX1jYXRjaChsKXtjLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciBleGVjdXRpbmcgZmlyc3Qgc3RlcDogIitsLm1lc3NhZ2UpfX0pfWNhdGNoKGgpe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGV4ZWN1dGluZyBmaXJzdCBzdGVwOiAiK2gubWVzc2FnZSl9fSx1cGRhdGVGUDpmdW5jdGlvbigpe3RyeXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RoaXMubG9nTXNnKCJTdGFydGluZyBTYWZhcmkgUnVuIik7aWYoITE9PT10aGlzLnJlc2V0U2Vjb25kUGFzcyl7dGhpcy5yZXNldFNlY29uZFBhc3M9CgkJITA7dGhpcy5sb2dNc2coIlN0YXJ0aW5nIGZpcnN0IHBhc3MiKTt2YXIgYT10aGlzLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWQiKSxiPXRoaXMuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF9pb3NfMiIpO3RoaXMubG9nTXNnKCJVVUlELiAiK2ErIiAtLSBJT1NSRVNFVC4gIitiKTtudWxsPT1hfHxudWxsPT1iPyh0aGlzLmxvZ01zZygiRHJvcHBpbmcgcmVzZXQgY29va2llIiksdGhpcy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWRfaW9zXzIiLDEsIi8iLDVFMyksdGhpcy50YWdCcm93c2VyKG51bGwpKToodGhpcy5sb2dNc2coIlNlY29uZCBwYXNzLCBub3RoaW5nIHRvIGRvIiksd2luZG93Ll9fX2QyY0NUS01ldGhvZCgpKX1lbHNlIHdpbmRvdy5fX19kMmNDVEtNZXRob2QoKX1jYXRjaChkKXt0aGlzLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciB1cGRhdGluZyBtb2JpbGUgY29va2llOiAiK2QubWVzc2FnZSl9fX07CndpbmRvdy5fX19kMmNDVEtNZXRob2Q9ZnVuY3Rpb24oKXt0cnl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpJiYhMCE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5qcXVlcnlBY3RpdmU9d2luZG93LmpRdWVyeT8hMDohMTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9wc2l0ZWlkIik7aWYobnVsbD09YXx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLnZhbHVlfHxpc05hTihhLnZhbHVlKSlhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dNc2coIkxvYWRpbmcgZnBzeXN0ZW0gb24gbm9uIGQyYyB3ZWJzaXRlIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlPSExO2Vsc2UgdHJ5e3dpbmRvdy5hY3RpdmVTaXRlSUQ9cGFyc2VJbnQoYS52YWx1ZSl9Y2F0Y2gocCl7d2luZG93LmFjdGl2ZVNpdGVJRD12b2lkIDB9dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY2hlY2tTY2hlZHVsZWRSZXNldCgpLGQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXNpZCIpOwoJaWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlU2Vzc2lvbklEfHxudWxsPT13aW5kb3cuYWN0aXZlU2Vzc2lvbklEKXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9MDtudWxsPT1kfHxpc05hTihkKXx8KHdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9ZCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF92bGQiKTt2YXIgYz1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpLGU9ZnVuY3Rpb24oKXt0cnl7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuc3RhdEV4ZWN1dGVkJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmbnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXc\/KGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3KCksd2luZG93LnN0YXRFeGVjdXRlZD0hMCk6YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5hamF4KHt1cmw6YysKCQkJInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLHR5cGU6IkdFVCIsZGF0YTp7YWN0aW9uOiJ1bmtub3duIixtc2c6IjEuRWl0aGVyIGFjdGl2ZVVzZXJQcm9maWxlTW5nIGlzIG5vdCBkZWZpbmVkIG9yIGxvZ1BhZ2VWaWV3IGlzIG5vdCBkZWZpbmVkIn19KSl9Y2F0Y2gocCl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nTXNnKHAubWVzc2FnZSksYWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5hamF4KHt1cmw6Yysic2VydmljZS9zZXNzaW9uTW5nLnBocCIsdHlwZToiR0VUIixkYXRhOnthY3Rpb246InVua25vd24iLG1zZzpwLm1lc3NhZ2V9fSl9fSxoPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWQiKSxmPW51bGw9PWh8fDA9PWgubGVuZ3RoPyExOiEwO2g9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF92bGQzIik7dmFyIHE9bnVsbD09aHx8MD09aC5sZW5ndGg\/ITE6ITA7aWYoIWImJmYmJgoJCXEpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2soZSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEfHxudWxsPT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEKXdpbmRvdy5hY3RpdmVQcm9maWxlSUQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0QWN0aXZlUHJvZmlsZWlkKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlVVUlEKCl9ZWxzZSBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9bnVsbCx3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPW51bGwsYWN0aXZlVXNlclByb2ZpbGVNbmcudGFnQnJvd3NlcihudWxsLGZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjayhlKX0pfX1jYXRjaChwKXtjPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCksYWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5fZ2V0KGMrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHA\/YWN0aW9uPXVua25vd24mbXNnPTIuIisKCWVuY29kZVVSSUNvbXBvbmVudChwLm1lc3NhZ2UpKSxjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIjEuIFVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCBsb2FkaW5nIHVwcm9maWxlLmZpbmFsLmpzLiBFcnJvcjogIitwLm1lc3NhZ2UpfX07CnRyeXtsZXQgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZGlzYWJsZUludGVybmFsU2Vzc2lvbiIpO2lmKG51bGwhPWEmJiIxIj09YS52YWx1ZSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQ9ITA7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPW51bGw7bGV0IGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RvcHNpdGVpZCIpO251bGwhPWImJihiPXBhcnNlSW50KGIudmFsdWUpKTtpc05hTihiKXx8MjM1IT1iPyhhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidWlkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF9yc3QiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXZpZXciKSwKCWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWQiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkX3RtcCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWRfdjEiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkX3ZsZDMiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWZwIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF9pb3NfMiIpKTpjb25zb2xlLmxvZygiYnlwYXNzaW5nIGNvb2tpZSBwdXJnZSIpfWVsc2UibG9hZGluZyIhPWRvY3VtZW50LnJlYWR5U3RhdGU\/d2luZG93Ll9fX2QyY0NUS01ldGhvZCgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXI\/ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsd2luZG93Ll9fX2QyY0NUS01ldGhvZCk6Cglkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpeyJjb21wbGV0ZSI9PWRvY3VtZW50LnJlYWR5U3RhdGUmJndpbmRvdy5fX19kMmNDVEtNZXRob2QoKX0pfWNhdGNoKGEpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiNS4gVW5leHBlY3RlZCBlcnJvciBvY2N1cmVkIGxvYWRpbmcgdXByb2ZpbGUuZmluYWwuanMuIEVycm9yOiAiK2EubWVzc2FnZSl9OwovKiogL20vanMva2MuZmFiLmpzICoqLwp2YXIgX19fZDJjX2tjZmFianNfY19vbj0iMjAyNS0wNS0yMyAxNzowMzoxOCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfa2NmYWJqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMwOjE4IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihhKXthLmtjfHwoYS5rYz17fSk7YS5rYy5mYWI9ZnVuY3Rpb24oaCxlLGwpe3ZhciBiPXRoaXM7Yi4kZWw9YShoKTtiLmVsPWg7Yi4kZWwuZGF0YSgia2MuZmFiIixiKTt2YXIgZixrO2IuaW5pdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGV8fG51bGw9PT1lKWU9W3t1cmw6bnVsbCxiZ2NvbG9yOiJyZWQiLGljb246IisifSx7dXJsOiJodHRwOi8vd3d3LmV4YW1wbGUuY29tIixiZ2NvbG9yOiJvcmFuZ2UiLGljb246IisifSx7dXJsOiJodHRwOi8vd3d3LmV4YW1wbGUuY29tIixiZ2NvbG9yOiJ5ZWxsb3ciLGljb246IisifV07Yi5saW5rcz1lO2lmKDA8Yi5saW5rcy5sZW5ndGgpe21haW5fYnRuPWIubGlua3NbMF07Y29sb3Jfc3R5bGU9bWFpbl9idG4uY29sb3I\/ImNvbG9yOiIrbWFpbl9idG4uY29sb3IrIjsiOiIiO2JnX2NvbG9yX3N0eWxlPW1haW5fYnRuLmJnY29sb3I\/ImJhY2tncm91bmQtY29sb3I6IittYWluX2J0bi5iZ2NvbG9yKyI7IjoKIiI7bWFpbl9idG5fZG9tPSI8YnV0dG9uIGRhdGEtbGluay1ocmVmPSciKyhtYWluX2J0bi51cmw\/bWFpbl9idG4udXJsOiIiKSsiJyBkYXRhLWxpbmstdGFyZ2V0PSciKyhtYWluX2J0bi50YXJnZXQ\/bWFpbl9idG4udGFyZ2V0OiIiKSsiJyBjbGFzcz0na2NfZmFiX21haW5fYnRuJyBzdHlsZT0nIitiZ19jb2xvcl9zdHlsZSsiJz48c3BhbiBzdHlsZT0nIitjb2xvcl9zdHlsZSsiJz4iK21haW5fYnRuLmljb24rIjwvc3Bhbj48L2J1dHRvbj4iO3N1Yl9mYWJfYnRuc19kb209IiI7Yi5saW5rcy5zaGlmdCgpO2Zvcih2YXIgYz0wO2M8Yi5saW5rcy5sZW5ndGg7YysrKWNvbG9yX3N0eWxlPWIubGlua3NbY10uY29sb3I\/ImNvbG9yOiIrYi5saW5rc1tjXS5jb2xvcisiOyI6IiIsYmdfY29sb3Jfc3R5bGU9Yi5saW5rc1tjXS5iZ2NvbG9yPyJiYWNrZ3JvdW5kLWNvbG9yOiIrYi5saW5rc1tjXS5iZ2NvbG9yKyI7IjoiIixzdWJfZmFiX2J0bnNfZG9tKz0iPGRpdj48YnV0dG9uIGRhdGEtbGluay10aXRsZT0nIisKYi5saW5rc1tjXS50aXRsZSsiJyBkYXRhLWxpbmstaHJlZj0nIisoYi5saW5rc1tjXS51cmw\/Yi5saW5rc1tjXS51cmw6IiIpKyInIGRhdGEtbGluay10YXJnZXQ9JyIrKGIubGlua3NbY10udGFyZ2V0P2IubGlua3NbY10udGFyZ2V0OiIiKSsiJyBjbGFzcz0nc3ViX2ZhYl9idG4nIHN0eWxlPSciK2JnX2NvbG9yX3N0eWxlKyInPjxzcGFuIHN0eWxlPSciK2NvbG9yX3N0eWxlKyInPiIrYi5saW5rc1tjXS5pY29uKyI8L3NwYW4+PC9idXR0b24+PC9kaXY+IjtzdWJfZmFiX2J0bnNfZG9tPSI8ZGl2IGNsYXNzPSdzdWJfZmFiX2J0bnNfd3JhcHBlcic+IitzdWJfZmFiX2J0bnNfZG9tKyI8L2Rpdj4iO2IuJGVsLmFwcGVuZChzdWJfZmFiX2J0bnNfZG9tKS5hcHBlbmQobWFpbl9idG5fZG9tKX1lbHNlInVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlJiYod2luZG93LmNvbnNvbGU9e2xvZzpmdW5jdGlvbihnKXthbGVydChnKX19KSxjb25zb2xlLmxvZygiSW52YWxpZCBsaW5rcyBhcnJheSBwYXJhbSIpOwpiLm9wdGlvbnM9YS5leHRlbmQoe30sYS5rYy5mYWIuZGVmYXVsdE9wdGlvbnMsbCk7Zj1iLiRlbC5maW5kKCIua2NfZmFiX21haW5fYnRuIik7az1iLiRlbC5maW5kKCIuc3ViX2ZhYl9idG5zX3dyYXBwZXIiKTtmLm9uKCJjbGljayIsZnVuY3Rpb24oZyl7MDxhKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikubGVuZ3RoJiYoYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstdGFyZ2V0Iik\/d2luZG93Lm9wZW4oYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpKTp3aW5kb3cubG9jYXRpb24uaHJlZj1hKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikpO2sudG9nZ2xlQ2xhc3MoInNob3ciKTswPGEoIi5rY19mYWJfb3ZlcmxheSIpLmxlbmd0aD8oYSgiLmtjX2ZhYl9vdmVybGF5IikucmVtb3ZlKCksZi50cmlnZ2VyKCJibHVyIikpOihmLnRyaWdnZXIoImZvY3VzIiksYSgiYm9keSIpLmFwcGVuZCgnPGRpdiBjbGFzcz0ia2NfZmFiX292ZXJsYXkiID48L2Rpdj4nKSwKYSgiYm9keSIpLm9uKCJ0b3VjaHN0YXJ0IixmdW5jdGlvbigpe2YudHJpZ2dlcigiYmx1ciIpfSkpOzAhPT1hKHRoaXMpLmZpbmQoIi5pbmsiKS5sZW5ndGgmJmEodGhpcykuZmluZCgiLmluayIpLnJlbW92ZSgpO2EodGhpcykucHJlcGVuZCgiPHNwYW4gY2xhc3M9J2luayc+PC9zcGFuPiIpO2luaz1hKHRoaXMpLmZpbmQoIi5pbmsiKTtpbmsuaGVpZ2h0KCl8fGluay53aWR0aCgpfHwoZD1NYXRoLm1heChhKHRoaXMpLm91dGVyV2lkdGgoKSxhKHRoaXMpLm91dGVySGVpZ2h0KCkpLGluay5jc3Moe2hlaWdodDpkLHdpZHRoOmR9KSk7eD1nLnBhZ2VYLWEodGhpcykub2Zmc2V0KCkubGVmdC1pbmsud2lkdGgoKS8yO3k9Zy5wYWdlWS1hKHRoaXMpLm9mZnNldCgpLnRvcC1pbmsuaGVpZ2h0KCkvMjtpbmsuY3NzKHt0b3A6eSsicHgiLGxlZnQ6eCsicHgifSkuYWRkQ2xhc3MoImFuaW1hdGUiKX0pO2suZmluZCgiLnN1Yl9mYWJfYnRuIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZyl7MDwKYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLmxlbmd0aCYmKGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpP3dpbmRvdy5vcGVuKGEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKSxhKHRoaXMpLmF0dHIoImRhdGEtbGluay10YXJnZXQiKSk6d2luZG93LmxvY2F0aW9uLmhyZWY9YSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpKX0pO2YuZm9jdXNvdXQoZnVuY3Rpb24oKXtrLnJlbW92ZUNsYXNzKCJzaG93Iik7b3ZlcmxheT1hKCIua2NfZmFiX292ZXJsYXkiKTtvdmVybGF5LnJlbW92ZSgpO2EoImJvZHkiKS5vZmYoInRvdWNoc3RhcnQiKX0pfTtiLmluaXQoKX07YS5rYy5mYWIuZGVmYXVsdE9wdGlvbnM9e307YS5mbi5rY19mYWI9ZnVuY3Rpb24oaCxlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bmV3IGEua2MuZmFiKHRoaXMsaCxlKX0pfX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9vcGVuaG91cnMuanMgKiovCnZhciBfX19kMmNfb3BlbmhvdXJzanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMTowMyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfb3BlbmhvdXJzanNfY19vbj0iMjAyNS0wMy0xOCAxNDozMDowOCI7InVzZSBzdHJpY3QiOwp2YXIgT3BlbkhvdXJzPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoZCl7dmFyIGU9JCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLmhhc0NsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKTskKGQuY3VycmVudFRhcmdldCkuZmluZCgiLm1hcF9vcGVuX2hvdXJzX2V4cGFuZF9hcnJvdyIpLnRvZ2dsZUNsYXNzKCJleHBhbmRlZCIpOyQodGhpcykucGFyZW50cyhhLm9wdGlvbnMuY29udGFpbmVyKS5maW5kKCIub3Blbl9ob3Vyc19tYXBfYWN0aXZlIikuc2xpZGVUb2dnbGUoInNsb3ciKTskKHRoaXMpLnBhcmVudHMoYS5vcHRpb25zLmNvbnRhaW5lcikuZmluZCgiLm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpLnJlbW92ZUNsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKTtlfHwoJCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLnNsaWRlVG9nZ2xlKCJzbG93IiksJCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLmFkZENsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKSl9CnZhciBhPXRoaXM7YS5vcHRpb25zPWI7YS4kY29udGFpbmVyPSQoYS5vcHRpb25zLmNvbnRhaW5lcik7YS5pbml0PWZ1bmN0aW9uKCl7YS4kY29udGFpbmVyLmZpbmQoIi5tYXBfb3Blbl9ob3Vyc19leHBhbmQiKS5vbigiY2xpY2sgYXV0b19vcGVuIixjKTswPGEuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kLmRlZmF1bHRfb3BlbmVkIikubGVuZ3RoP2EuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kLmRlZmF1bHRfb3BlbmVkIikudHJpZ2dlcigiYXV0b19vcGVuIik6MiE9JCgiLmV4cGFuZGFibGVfY29udGVudCIpLmxlbmd0aHx8MDwkKCIuZXhwYW5kYWJsZV9jb250ZW50IikuZmluZCgiLnZpc2l0Q29udGFjdEhlYWRlciIpLmxlbmd0aD9hLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoImF1dG9PcGVuIikmJiFhLm9wdGlvbnMuYXV0b09wZW58fGEuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kIikuZmlyc3QoKS50cmlnZ2VyKCJhdXRvX29wZW4iKToKJCgiLmV4cGFuZGFibGVfY29udGVudCIpLnNsaWRlVG9nZ2xlKCJzbG93IikuYWRkQ2xhc3MoIm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpfTtyZXR1cm4gYX07Ci8qKiAvbS9qcy9nb29nbGVtYXBzLmpzICoqLwp2YXIgX19fZDJjX2dvb2dsZW1hcHNqc19jX29uPSIyMDI2LTAxLTEyIDEwOjE0OjU0IjsndXNlIHN0cmljdCc7Y2xhc3MgR29vZ2xlTWFwc1dyYXBwZXJ7Y29uc3RydWN0b3IoYSl7dGhpcy5wcmV2aW91c0luZm9XaW5kb3c9ITE7dGhpcy5vcHRpb25zPXtlbGVtZW50OmEmJmEuZWxlbWVudD9hLmVsZW1lbnQ6IiIsY2VudGVyOmEmJmEuY2VudGVyP2EuY2VudGVyOntsYXQ6NDUuNDY3Mjc3LGxuZzotNzMuODM0NTI2fSxjZW50ZXJPZmZzZXQ6YSYmYS5jZW50ZXJPZmZzZXQ\/YS5jZW50ZXJPZmZzZXQ6e3g6MCx5OjB9LHpvb206YSYmYS56b29tP2Euem9vbTo5LGFkZHJlc3NlczphJiZhLmFkZHJlc3Nlcz9hLmFkZHJlc3NlczpbXSxvbkJlZm9yZUluaXQ6YSYmYS5vbkJlZm9yZUluaXQ\/YS5vbkJlZm9yZUluaXQ6ZnVuY3Rpb24oKXt9LG9uQWZ0ZXJJbml0OmEmJmEub25BZnRlckluaXQ\/YS5vbkFmdGVySW5pdDpmdW5jdGlvbigpe30sb25BZnRlck1hcmtlckNyZWF0ZWQ6YSYmYS5vbkFmdGVyTWFya2VyQ3JlYXRlZD9hLm9uQWZ0ZXJNYXJrZXJDcmVhdGVkOmZ1bmN0aW9uKCl7fX19c3RhdGljIHNldEdvb2dsZU1hcCgpe3ZhciBhPQowLGU9ZnVuY3Rpb24oKXtnb29nbGUubWFwcy5NYXAucHJvdG90eXBlLnNldENlbnRlcldpdGhPZmZzZXQ9ZnVuY3Rpb24oayxnLGwpe3ZhciBjPXRoaXMsYj1uZXcgZ29vZ2xlLm1hcHMuT3ZlcmxheVZpZXc7Yi5vbkFkZD1mdW5jdGlvbigpe3ZhciBmPXRoaXMuZ2V0UHJvamVjdGlvbigpLGQ9Zi5mcm9tTGF0TG5nVG9Db250YWluZXJQaXhlbChrKTtkLngrPWc7ZC55Kz1sO2Muc2V0Q2VudGVyKGYuZnJvbUNvbnRhaW5lclBpeGVsVG9MYXRMbmcoZCkpfTtiLmRyYXc9ZnVuY3Rpb24oKXt9O2Iuc2V0TWFwKHRoaXMpfX07aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgZ29vZ2xlKWUoKTtlbHNlIHZhciBoPXNldEludGVydmFsKGZ1bmN0aW9uKCl7ND5hPyJ1bmRlZmluZWQiIT09dHlwZW9mIGdvb2dsZT8oY2xlYXJJbnRlcnZhbChoKSxlKCkpOmErKzpjbGVhckludGVydmFsKGgpfSwxRTMpfWluaXQoKXt2YXIgYT10aGlzLGU9YS5vcHRpb25zLmNlbnRlck9mZnNldC54P2Eub3B0aW9ucy5jZW50ZXJPZmZzZXQueDoKMCxoPWEub3B0aW9ucy5jZW50ZXJPZmZzZXQueT9hLm9wdGlvbnMuY2VudGVyT2Zmc2V0Lnk6MCxrPW5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHM7YS5vcHRpb25zLm9uQmVmb3JlSW5pdCgpO2lmKGEub3B0aW9ucy5hZGRyZXNzZXMubGVuZ3RoKXt2YXIgZz1hLm9wdGlvbnMuY2VudGVyLGw9bmV3IGdvb2dsZS5tYXBzLkdlb2NvZGVyLGM9bmV3IGdvb2dsZS5tYXBzLk1hcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhLm9wdGlvbnMuZWxlbWVudCkse3pvb206YS5vcHRpb25zLnpvb20sY2VudGVyOmEub3B0aW9ucy5jZW50ZXIsbWFwVHlwZUlkOmdvb2dsZS5tYXBzLk1hcFR5cGVJZC5ST0FETUFQLGdlc3R1cmVIYW5kbGluZzoiZ3JlZWR5IixzY3JvbGx3aGVlbDohMSxtYXBUeXBlQ29udHJvbDohMX0pO2dvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyT25jZShjLCJpZGxlIixmdW5jdGlvbigpe2Eub3B0aW9ucy5hZGRyZXNzZXMubWFwKGZ1bmN0aW9uKGIsZixkKXtmPWZ1bmN0aW9uKG4sCnEpe3RyeXtpZihxPT1nb29nbGUubWFwcy5HZW9jb2RlclN0YXR1cy5PSyl7ay5leHRlbmQoblswXS5nZW9tZXRyeS5sb2NhdGlvbik7Yy5maXRCb3VuZHMoayk7Yy5zZXRab29tKGEub3B0aW9ucy56b29tKTtnPWMuZ2V0Qm91bmRzKCkuZ2V0Q2VudGVyKCk7Yy5zZXRDZW50ZXJXaXRoT2Zmc2V0KGcsZSxoKTt2YXIgcD1uZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyh7Y29udGVudDpiLmluZm93aW5kb3d9KSxtPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe21hcDpjLHBvc2l0aW9uOm5bMF0uZ2VvbWV0cnkubG9jYXRpb24sdGl0bGU6Yi50aXRsZSxpY29uOmIuaWNvbn0pO20uYWRkTGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2EucHJldmlvdXNJbmZvV2luZG93JiZhLnByZXZpb3VzSW5mb1dpbmRvdy5jbG9zZSgpO2EucHJldmlvdXNJbmZvV2luZG93PXA7cC5vcGVuKGMsbSl9KTthLm9wdGlvbnMub25BZnRlck1hcmtlckNyZWF0ZWQoYixtKX19Y2F0Y2gocil7Y29uc29sZS5sb2cocil9fTsKYS5oYXNMYXQoYikmJmEuaGFzTG5nKGIpPyhkPW5ldyBnb29nbGUubWFwcy5MYXRMbmcoTnVtYmVyKGIuZ2VvbWV0cnkubG9jYXRpb24ubGF0KSxOdW1iZXIoYi5nZW9tZXRyeS5sb2NhdGlvbi5sbmcpKSxmKFt7Z2VvbWV0cnk6e2xvY2F0aW9uOmR9fV0sIk9LIikpOmwuZ2VvY29kZSh7YWRkcmVzczpiLmFkZHJlc3N9LGYpfSl9KTtnb29nbGUubWFwcy5ldmVudC5hZGREb21MaXN0ZW5lcih3aW5kb3csInJlc2l6ZSIsZnVuY3Rpb24oKXtjLnNldENlbnRlcldpdGhPZmZzZXQoZyxlLGgpfSl9YS5vcHRpb25zLm9uQWZ0ZXJJbml0KCl9X2hhc0xhdExuZ1Byb3AoYSxlKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eSgiZ2VvbWV0cnkiKSYmYS5nZW9tZXRyeS5oYXNPd25Qcm9wZXJ0eSgibG9jYXRpb24iKSYmYS5nZW9tZXRyeS5sb2NhdGlvbi5oYXNPd25Qcm9wZXJ0eShlKSYmImZhbHNlIiE9YS5nZW9tZXRyeS5sb2NhdGlvbltlXT8hMDohMX1oYXNMYXQoYSl7cmV0dXJuIHRoaXMuX2hhc0xhdExuZ1Byb3AoYSwKImxhdCIpfWhhc0xuZyhhKXtyZXR1cm4gdGhpcy5faGFzTGF0TG5nUHJvcChhLCJsbmciKX19OwovKiogL20vanMvZm9vdGVyV2lkZ2V0X00uanMgKiovCnZhciBfX19kMmNfZm9vdGVyV2lkZ2V0TWpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6MTYiOyd1c2Ugc3RyaWN0Jzt2YXIgdHJhY2tGb290ZXJNYXBMb2FkPWZ1bmN0aW9uKCl7dmFyIGE9JCgiI3RhcmdldFBhZ2UiKS52YWwoKTsidW5kZWZpbmVkIj09YSYmKGE9IlVOS05PV04iKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiRm9vdGVyLU1hcC1Mb2FkIiwiTW9iaWxlIixhLDEpfTsKaW5WaWV3RXhlYygiI2Zvb3Rlckdvb2dsZU1hcCIsZnVuY3Rpb24oKXtpZigkKCIjZm9vdGVyR29vZ2xlTWFwIikubGVuZ3RoKXRyeXtHb29nbGVNYXBzV3JhcHBlci5zZXRHb29nbGVNYXAoKTt2YXIgYT0kKCIjZm9vdGVyR29vZ2xlTWFwWm9vbSIpLnZhbCgpLGM9MTxwYXJzZUludChhKSYmMTg+PXBhcnNlSW50KGEpP3BhcnNlSW50KGEpOjk7d2luZG93LmZvb3Rlckdvb2dsZU1hcE9iamVjdD1uZXcgR29vZ2xlTWFwc1dyYXBwZXIoe2VsZW1lbnQ6ImZvb3Rlckdvb2dsZU1hcCIsYWRkcmVzc2VzOiJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzP2Zvb3Rlck1hcEFkZHJlc3NlczpbXSx6b29tOmMsb25CZWZvcmVJbml0OmZ1bmN0aW9uKCl7dHJhY2tGb290ZXJNYXBMb2FkKCl9LG9uQWZ0ZXJJbml0OmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzZXMmJjAhPWZvb3Rlck1hcEFkZHJlc3Nlcy5sZW5ndGh8fCQoIiNmb290ZXJHb29nbGVNYXAiKS5oaWRlKCl9fSk7CndpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3QuaW5pdCgpfWNhdGNoKGIpe2NvbnNvbGUubG9nKGIpfX0pO2luVmlld0V4ZWMoIiNmb290ZXJHb29nbGVNYXBJZnJhbWUiLGZ1bmN0aW9uKCl7dHJhY2tGb290ZXJNYXBMb2FkKCl9KTsKJChmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXsidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuZm9vdGVyR29vZ2xlTWFwT2JqZWN0P3dpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3QuY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk6KGNvbnNvbGUubG9nKCJJQ0kiKSxzZXRUaW1lb3V0KGEsNTAwKSl9aW5WaWV3RXhlYygiI21hcF9vcGVuX2hvdXJzIixmdW5jdGlvbigpeyhuZXcgT3BlbkhvdXJzKHtjb250YWluZXI6IiNtYXBfb3Blbl9ob3VycyIsYXV0b09wZW46ITB9KSkuaW5pdCgpfSk7JCgiZGl2I3Bob25lTnVtYmVyRGl2IGxpIGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJwaG9uZS5jYWxsIiwkKHRoaXMpLmF0dHIoImhyZWYiKS5yZXBsYWNlKCJ0ZWw6IiwKIiIpKX0pOyQoIiNkaXJlY3Rpb25zQnV0dG9uSGVhZGVyIikub24oImNsaWNrIixmdW5jdGlvbihjKXtjLnByZXZlbnREZWZhdWx0KCk7JCgiaHRtbCwgYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDokKCIjZm9vdGVyR29vZ2xlTWFwSG91cnMiKS5vZmZzZXQoKS50b3B9LDJFMyk7YSgpfSl9KTsKd2luZG93Lm9ubG9hZD1mdW5jdGlvbigpeyhmdW5jdGlvbigpe3ZhciBhPXtuZXdfZ2VvbG9jOiExLHVzZXJDb29yZDohMSxyZXN1bHQ6ITEscHJldl9nZW9sb2M6Q29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKTohMSxkZWFsZXJfdmlzaXRlZDpDb29raWVzLmdldCgiZGVhbGVyVmlzaXRlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImRlYWxlclZpc2l0ZWQiKSk6ITEsZGVhbGVyQWRkcmVzczoiIixnZXRQcmV2TG9jYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKTohMX0scHJvY2Vzc1VzZXJMb2NhdGlvbjpmdW5jdGlvbihiKXthLm5ld19nZW9sb2M9Yjtzd2l0Y2goITApe2Nhc2UgMD09YS5wcmV2X2dlb2xvY3x8YS5wcmV2X2dlb2xvYy5hY2NlcHRlZCE9Yi5yZXN1bHQ6YS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cj0KMT09Yi5yZXN1bHQ\/Yi5nZW9jb2RlX2FkZHJlc3Nfc3RyKyIoIitiLmFjY3VyYWN5KyIpIjoiR2VvbG9jYXRpb24gcmVmdXNlZCI7YS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uPTE9PWIucmVzdWx0PyJBQ0NFUFRFRCI6IiI7YS51c2VyQ29vcmQ9e2xhdDpiLmxhdGl0dWRlLCJsb25nIjpiLmxvbmdpdHVkZX07YS5jb21wYXJlVG9EZWFsZXJMb2NhdGlvbigpO2JyZWFrO2Nhc2UgMT09YS5wcmV2X2dlb2xvYy5hY2NlcHRlZCYmMT09Yi5yZXN1bHQ6dmFyIGQ9e2xhdDphLnByZXZfZ2VvbG9jLmxhdGl0dWRlLCJsb25nIjphLnByZXZfZ2VvbG9jLmxvbmdpdHVkZX07YS51c2VyQ29vcmQ9e2xhdDpiLmxhdGl0dWRlLCJsb25nIjpiLmxvbmdpdHVkZX07MjAwPGMuZ2V0RGlzdGFuY2UoZCxhLnVzZXJDb29yZCkmJihhLm5ld19nZW9sb2MuZGVzY3JpcHRpb249IlVQREFURUQiLGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHI9Yi5nZW9jb2RlX2FkZHJlc3Nfc3RyKyIoIitiLmFjY3VyYWN5KyIpIiwKYS5jb21wYXJlVG9EZWFsZXJMb2NhdGlvbigpKX19LGNvbXBhcmVUb0RlYWxlckxvY2F0aW9uOmZ1bmN0aW9uKGIpeyJvYmplY3QiPT10eXBlb2YgYiYmYi5sYXQmJmIubG9uZz8yMDE+Yy5nZXREaXN0YW5jZShhLnVzZXJDb29yZCxiKT8wPT1hLmRlYWxlcl92aXNpdGVkJiYoYS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cj1hLmRlYWxlckFkZHJlc3MrIigiK2EubmV3X2dlb2xvYy5hY2N1cmFjeSsiKSIsYS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uPSJERUFMRVJfTE9DQVRJT04iLGEubG9nUGFnZUV2ZW50KGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHIpLGI9bmV3IERhdGUsYi5zZXRIb3VycygyMyw1OSw1OSwwKSxDb29raWVzLnNldCgiZGVhbGVyVmlzaXRlZCIsMSxiLCIvIikpOjA9PWEucHJldl9nZW9sb2MmJmEubG9nUGFnZUV2ZW50KGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHIpOmEuZ2V0RGVhbGVyQ29vcmQoKX0sZ2V0RGVhbGVyQ29vcmQ6ZnVuY3Rpb24oKXthLmRlYWxlckFkZHJlc3M9CiQoJ21ldGFbbmFtZT0iZ2VvLnBsYWNlbmFtZSJdJykucHJvcCgiY29udGVudCIpO2MuZ2V0QWRkcmVzc0Nvb3JkKGEuZGVhbGVyQWRkcmVzcyxhLmNvbXBhcmVUb0RlYWxlckxvY2F0aW9uKX0sbG9nUGFnZUV2ZW50OmZ1bmN0aW9uKGIpe2ImJjA8Yi5sZW5ndGgmJjE9PWEubmV3X2dlb2xvYy5yZXN1bHQmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCYmKGI9YS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uKyI6ICIrYixhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJUUkFDS19HRU9MT0MiLGIpKTtnZXRVVUlEPWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEJiZudWxsIT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEP3dpbmRvdy5hY3RpdmVQcm9maWxlSUQ6InVuZGVmaW5lZCIhPQp0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJm51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD9hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ6InVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzJiYidW5kZWZpbmVkIiE9Q29va2llcy5nZXQoInV1aWQiKSYmbnVsbCE9Q29va2llcy5nZXQoInV1aWQiKT9Db29raWVzLmdldCgidXVpZCIpOiIifTtiPSJ1bmRlZmluZWQiIT10eXBlb2YgQ29va2llcyYmInVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzLmdldCgidXNpZCIpJiZudWxsIT1Db29raWVzLmdldCgidXNpZCIpP0Nvb2tpZXMuZ2V0KCJ1c2lkIik6MDt2YXIgZD1nZXRVVUlEKCksZT0kKCIjc2l0ZUlEIikudmFsKCk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Imh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9nZW9sb2NUcmFja2luZy9zaXRldmlzaXRvciIsZGF0YTp7dXVpZDpkLHNlc3Npb25pZDpiLHNpdGVJRDplLHN0YXR1czphLm5ld19nZW9sb2MuZ2VvbG9jX3N0YXR1cywKZGVzYzphLm5ld19nZW9sb2MuZGVzY3JpcHRpb24sbGF0aXR1ZGU6YS5uZXdfZ2VvbG9jLmxhdGl0dWRlLGxvbmdpdHVkZTphLm5ld19nZW9sb2MubG9uZ2l0dWRlLHBvc3RhbF9jb2RlOmEubmV3X2dlb2xvYy5wb3N0YWxfY29kZSxhY2N1cmFjeTphLm5ld19nZW9sb2MuYWNjdXJhY3ksYWRkcmVzczphLm5ld19nZW9sb2MuZ2VvY29kZV9hZGRyZXNzX3N0cixsb2NhdGlvbl9zdHI6YS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cixnZW9sb2NfZGF0ZTphLm5ld19nZW9sb2MuZ2VvbG9jX2RhdGV9LHN1Y2Nlc3M6ZnVuY3Rpb24oZil7fSxmYWlsdXJlOmZ1bmN0aW9uKGYpe319KX19O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2Fza1Zpc2l0b3JHZW9sb2MiKS52YWwoKSYmMT09JCgiI2Fza1Zpc2l0b3JHZW9sb2MiKS52YWwoKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnZW9Mb2NhdG9yKXt2YXIgYz1uZXcgZ2VvTG9jYXRvcihhLnByb2Nlc3NVc2VyTG9jYXRpb24pO2MuZm9yY2VHZW9sb2NBdHRlbXB0PQohMDtjLmdldExvY2F0aW9uKCl9fSkoKX07JChmdW5jdGlvbigpeyQoIi5jRXhwZW5kTGlzdCBCVVRUT04iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKS5jbG9zZXN0KCJkaXYuY0Zvb3RlckNhckxpbmtzIik7YS5sZW5ndGgmJihhLmhhc0NsYXNzKCJjTGlzdEV4cGVuZGVkIil8fGEuYWRkQ2xhc3MoImNMaXN0RXhwZW5kZWQiKS5maW5kKCIuY0V4cGVuZExpc3QiKS5oaWRlKCkpfSl9KTsKLyoqIC9tL2pzL3RvYXN0ci5qcyAqKi8KdmFyIF9fX2QyY190b2FzdHJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEyOjA5IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY190b2FzdHJqc19jX29uPSIyMDI0LTAzLTI2IDEyOjMwOjE1IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbih6KXt6KFsianF1ZXJ5Il0sZnVuY3Rpb24oZCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihhLGMpe2F8fChhPWwoKSk7Zj1kKCIjIithLmNvbnRhaW5lcklkKTtpZihmLmxlbmd0aClyZXR1cm4gZjtjJiYoZj1kKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsYS5jb250YWluZXJJZCkuYWRkQ2xhc3MoYS5wb3NpdGlvbkNsYXNzKS5hdHRyKCJhcmlhLWxpdmUiLCJwb2xpdGUiKS5hdHRyKCJyb2xlIiwiYWxlcnQiKS5jc3MoImNvbG9yIixhLmNvbG9yKSxmLmFwcGVuZFRvKGQoYS50YXJnZXQpKSk7cmV0dXJuIGZ9ZnVuY3Rpb24gQShhLGMsZSl7ZT1lJiZlLmZvcmNlP2UuZm9yY2U6ITE7cmV0dXJuIGEmJihlfHwwPT09ZCgiOmZvY3VzIixhKS5sZW5ndGgpPyhhW2MuaGlkZU1ldGhvZF0oe2R1cmF0aW9uOmMuaGlkZUR1cmF0aW9uLGVhc2luZzpjLmhpZGVFYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXt1KGEpfX0pLCEwKTohMX1mdW5jdGlvbiBFKCl7cmV0dXJue3RhcFRvRGlzbWlzczohMCwKdG9hc3RDbGFzczoidG9hc3QiLGNvbnRhaW5lcklkOiJ0b2FzdC1jb250YWluZXIiLGRlYnVnOiExLHNob3dNZXRob2Q6ImZhZGVJbiIsc2hvd0R1cmF0aW9uOjMwMCxzaG93RWFzaW5nOiJzd2luZyIsb25TaG93bjpmdW5jdGlvbigpe2QoIi50cmFkZUluQmFyTW9iaWxlQnV0dG9uIikuYWRkQ2xhc3MoIndpdGhUb2FzdGVyIik7ZCgiLnByb21vVG9wQnRuLmZsb2F0aW5nIikuYWRkQ2xhc3MoIndpdGhUb2FzdGVyIil9LGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxRTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOmZ1bmN0aW9uKCl7ZCgiLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24iKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKTtkKCIucHJvbW9Ub3BCdG4uZmxvYXRpbmciKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKX0sb25DbG9zZTpmdW5jdGlvbigpe2QoIi50cmFkZUluQmFyTW9iaWxlQnV0dG9uIikucmVtb3ZlQ2xhc3MoIndpdGhUb2FzdGVyIik7CmQoIi5wcm9tb1RvcEJ0bi5mbG9hdGluZyIpLnJlbW92ZUNsYXNzKCJ3aXRoVG9hc3RlciIpfSxleHRlbmRlZFRpbWVPdXQ6MUUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLGNvbG9yOiIjRkZGIixiZ0NvbG9yOiIiLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1RTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsdGFyZ2V0OiJib2R5IixjbG9zZUh0bWw6JzxidXR0b24gdHlwZT0iYnV0dG9uIj4mdGltZXM7PC9idXR0b24+JyxuZXdlc3RPblRvcDohMCxwcmV2ZW50RHVwbGljYXRlczohMSxwcm9ncmVzc0JhcjohMX19ZnVuY3Rpb24gcihhKXtmdW5jdGlvbiBjKGspe2lmKCFkKCI6Zm9jdXMiLGcpLmxlbmd0aHx8aylyZXR1cm4gY2xlYXJUaW1lb3V0KGguaW50ZXJ2YWxJZCksCmdbYi5oaWRlTWV0aG9kXSh7ZHVyYXRpb246Yi5oaWRlRHVyYXRpb24sZWFzaW5nOmIuaGlkZUVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe3UoZyk7aWYoYi5vbkhpZGRlbiYmImhpZGRlbiIhPT1tLnN0YXRlKWIub25IaWRkZW4oKTttLnN0YXRlPSJoaWRkZW4iO20uZW5kVGltZT1uZXcgRGF0ZTtwJiZwKG0pfX0pfWZ1bmN0aW9uIGUoKXtpZigwPGIudGltZU91dHx8MDxiLmV4dGVuZGVkVGltZU91dCl2PXNldFRpbWVvdXQoYyxiLmV4dGVuZGVkVGltZU91dCksaC5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KGIuZXh0ZW5kZWRUaW1lT3V0KSxoLmhpZGVFdGE9KG5ldyBEYXRlKS5nZXRUaW1lKCkraC5tYXhIaWRlVGltZX1mdW5jdGlvbiBGKCl7Y2xlYXJUaW1lb3V0KHYpO2guaGlkZUV0YT0wO2cuc3RvcCghMCwhMClbYi5zaG93TWV0aG9kXSh7ZHVyYXRpb246Yi5zaG93RHVyYXRpb24sZWFzaW5nOmIuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIEcoKXt2YXIgaz0oaC5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS8KaC5tYXhIaWRlVGltZSoxMDA7dy53aWR0aChrKyIlIil9dmFyIGI9bCgpLHg9YS5pY29uQ2xhc3N8fGIuaWNvbkNsYXNzOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEub3B0aW9uc092ZXJyaWRlJiYoYj1kLmV4dGVuZChiLGEub3B0aW9uc092ZXJyaWRlKSx4PWEub3B0aW9uc092ZXJyaWRlLmljb25DbGFzc3x8eCk7YTp7aWYoYi5wcmV2ZW50RHVwbGljYXRlcylpZihhLm1lc3NhZ2U9PT15KXt2YXIgcT0hMDticmVhayBhfWVsc2UgeT1hLm1lc3NhZ2U7cT0hMX1pZighcSl7QisrO2Y9bihiLCEwKTt2YXIgdj1udWxsLGc9ZCgiPGRpdi8+Iik7cT1kKCI8ZGl2Lz4iKTt2YXIgQz1kKCI8ZGl2Lz4iKSx3PWQoIjxkaXYvPiIpLHQ9ZChiLmNsb3NlSHRtbCksaD17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxtPXt0b2FzdElkOkIsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOmIsbWFwOmF9OzY8Yi5iZ0NvbG9yLmxlbmd0aCYmCmcuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIixiLmJnQ29sb3IpO2EuaWNvbkNsYXNzJiZnLmFkZENsYXNzKGIudG9hc3RDbGFzcykuYWRkQ2xhc3MoeCk7YS50aXRsZSYmKHEuYXBwZW5kKGEudGl0bGUpLmFkZENsYXNzKGIudGl0bGVDbGFzcyksZy5hcHBlbmQocSkpO2EubWVzc2FnZSYmKEMuYXBwZW5kKGEubWVzc2FnZSkuYWRkQ2xhc3MoYi5tZXNzYWdlQ2xhc3MpLGcuYXBwZW5kKEMpKTtiLmNsb3NlQnV0dG9uJiYodC5hZGRDbGFzcygidG9hc3QtY2xvc2UtYnV0dG9uIikuYXR0cigicm9sZSIsImJ1dHRvbiIpLGcucHJlcGVuZCh0KSk7Yi5wcm9ncmVzc0JhciYmKHcuYWRkQ2xhc3MoInRvYXN0LXByb2dyZXNzIiksZy5wcmVwZW5kKHcpKTtiLm5ld2VzdE9uVG9wP2YucHJlcGVuZChnKTpmLmFwcGVuZChnKTtnLmhpZGUoKTtnW2Iuc2hvd01ldGhvZF0oe2R1cmF0aW9uOmIuc2hvd0R1cmF0aW9uLGVhc2luZzpiLnNob3dFYXNpbmcsY29tcGxldGU6Yi5vblNob3dufSk7MDxiLnRpbWVPdXQmJgoodj1zZXRUaW1lb3V0KGMsYi50aW1lT3V0KSxoLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoYi50aW1lT3V0KSxoLmhpZGVFdGE9KG5ldyBEYXRlKS5nZXRUaW1lKCkraC5tYXhIaWRlVGltZSxiLnByb2dyZXNzQmFyJiYoaC5pbnRlcnZhbElkPXNldEludGVydmFsKEcsMTApKSk7KGZ1bmN0aW9uKCl7Zy5vbigibW91c2VlbnRlciIsRikub24oIm1vdXNlbGVhdmUiLGUpO2lmKCFiLm9uY2xpY2smJmIudGFwVG9EaXNtaXNzKWcub24oImNsaWNrIixjKTtpZihiLmNsb3NlQnV0dG9uJiZ0KXQub24oImNsaWNrIixmdW5jdGlvbihrKXtrLnN0b3BQcm9wYWdhdGlvbj9rLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWsuY2FuY2VsQnViYmxlJiYhMCE9PWsuY2FuY2VsQnViYmxlJiYoay5jYW5jZWxCdWJibGU9ITApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBiLm9uQ2xvc2UpYi5vbkNsb3NlKCk7YyghMCl9KTtpZihiLm9uY2xpY2spZy5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5vbmNsaWNrKCk7CmMoKX0pfSkoKTtwJiZwKG0pO2IuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKG0pO3JldHVybiBnfX1mdW5jdGlvbiBsKCl7cmV0dXJuIGQuZXh0ZW5kKHt9LEUoKSxELm9wdGlvbnMpfWZ1bmN0aW9uIHUoYSl7Znx8KGY9bigpKTthLmlzKCI6dmlzaWJsZSIpfHwoYS5yZW1vdmUoKSwwPT09Zi5jaGlsZHJlbigpLmxlbmd0aCYmKGYucmVtb3ZlKCkseT12b2lkIDApKX12YXIgZixwLEI9MCxEPXtjbGVhcjpmdW5jdGlvbihhLGMpe3ZhciBlPWwoKTtmfHxuKGUpO2lmKCFBKGEsZSxjKSlmb3IoYT1mLmNoaWxkcmVuKCksYz1hLmxlbmd0aC0xOzA8PWM7Yy0tKUEoZChhW2NdKSxlKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBjPWwoKTtmfHxuKGMpO2EmJjA9PT1kKCI6Zm9jdXMiLGEpLmxlbmd0aD91KGEpOmYuY2hpbGRyZW4oKS5sZW5ndGgmJmYucmVtb3ZlKCl9LGVycm9yOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToiZXJyb3IiLGljb25DbGFzczpsKCkuaWNvbkNsYXNzZXMuZXJyb3IsCm1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9LGdldENvbnRhaW5lcjpuLGluZm86ZnVuY3Rpb24oYSxjLGUpe3JldHVybiByKHt0eXBlOiJpbmZvIixpY29uQ2xhc3M6bCgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTphLG9wdGlvbnNPdmVycmlkZTplLHRpdGxlOmN9KX0sb3B0aW9uczp7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oYSl7cD1hfSxzdWNjZXNzOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToic3VjY2VzcyIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9LHZlcnNpb246IjIuMS4xIix3YXJuaW5nOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToid2FybmluZyIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy53YXJuaW5nLG1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9fSx5O3JldHVybiBEfSgpfSl9KSgiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmCmRlZmluZS5hbWQ\/ZGVmaW5lOmZ1bmN0aW9uKHosZCl7InVuZGVmaW5lZCIhPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1kKHJlcXVpcmUoImpxdWVyeSIpKTp3aW5kb3cudG9hc3RyPWQod2luZG93LmpRdWVyeSl9KTsKLyoqIC9tL2pzL2RlYWxlclNtc051bWJlci5qcyAqKi8KdmFyIF9fX2QyY19kZWFsZXJTbXNOdW1iZXJqc19jX29uPSIyMDI2LTAzLTEyIDE2OjMwOjAzIjsndXNlIHN0cmljdCc7d2luZG93LmRlYWxlclNtc051bWJlcj13aW5kb3cuZGVhbGVyU21zTnVtYmVyfHxuZXcgZnVuY3Rpb24oKXt0aGlzLl9uYW1lPSJkZWFsZXJTbXNOdW1iZXIiO3RoaXMuX3JpZD0wO3RoaXMuX29icz1bXTt0aGlzLl9idWlsZFF1ZXJ5PWZ1bmN0aW9uKGEsYyl7Yz0ic3RyaW5nIj09PXR5cGVvZiBjP2M6KCQoImJvZHkuRU5HTElTSCIpLmxlbmd0aD8iL2VuLyI6Ii9mci8iKSsiYWpheC9nZXREZWFsZXJTbXNOdW1iZXIiO3ZhciBiLGQ9e3dzd2lkdGg6IjAifSxnPVsiVVVJRCIsIm1lc3NhZ2VUeXBlIl07Yys9Ij8iO2ZvcihiIGluIGcpaWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYVtnW2JdXXx8IiI9PWFbZ1tiXV0pcmV0dXJuIHRoaXMuX29uRXJyb3IoJ21hbmRhdG9yeSBmaWVsZCBpcyBtaXNzaW5nICInK2dbYl0rJyInKSwhMTtmb3IoYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2ZvcihiIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShiKSYmCihjKz0iJiIrYisiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGRbYl0pKTtyZXR1cm4gY307dGhpcy5fb25FcnJvcj1mdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKHRoaXMuX25hbWUsYSl9O3RoaXMuX25vdGlmeU9ic2VydmVyPWZ1bmN0aW9uKGEsYyl7dGhpcy5fb2JzW2FdKGMpO2RlbGV0ZSB0aGlzLl9vYnNbYV19O3RoaXMuX2RvUmVxdWVzdD1mdW5jdGlvbihhLGMpe3ZhciBiPXRoaXMuX29uUmVzcG9uc2UuYmluZCh0aGlzKTskLmFqYXgoe2NiOmIscmlkOmMsdHlwZToiR0VUIixjYWNoZTohMSxhc3luYzohMCxkYXRhVHlwZToianNvbiIsdXJsOmF9KS5kb25lKGZ1bmN0aW9uKGQpe3RoaXMuY2IodGhpcy5yaWQsbnVsbD09PWQ\/ITE6ZCwhMSl9KS5mYWlsKGZ1bmN0aW9uKGQsZyl7dGhpcy5jYih0aGlzLnJpZCwhMSxnKX0pfTt0aGlzLl9vblJlc3BvbnNlPWZ1bmN0aW9uKGEsYyxiKXtpZighMSE9PWIpdGhpcy5fb25FcnJvcigicmVzcG9uc2UgZXJyb3I6ICIrYik7ZWxzZSB0cnl7ITE9PT0KYz90aGlzLl9vbkVycm9yKCIuZGF0YSBlcXVhbCBmYWxzZSIpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGMuc3VjY2VzcyYmITAhPT1jLnN1Y2Nlc3M\/KHRoaXMuX29uRXJyb3IoIi5kYXRhIGVycm9yOiAiK2MuZXJyb3JNZXNzYWdlKSxjPSExKTooYj0hMSwic3RyaW5nIiE9PXR5cGVvZiBjLmRhdGEubnVtYmVyJiYodGhpcy5fb25FcnJvcigiLmRhdGEgaW52YWxpZCBzbXMgbnVtYmVyIiksYj0hMCksInN0cmluZyIhPT10eXBlb2YgYy5kYXRhLm1lc3NhZ2UmJih0aGlzLl9vbkVycm9yKCIubWVzc2FnZSBpbnZhbGlkIHNtcyBtZXNzYWdlIiksYj0hMCksYz1iPyExOntzbXNudW1iZXI6Yy5kYXRhLm51bWJlcixzbXNtZXNzYWdlOmMuZGF0YS5tZXNzYWdlLHNtc2NvZGU6Yy5kYXRhLnNtc0NvZGV9KX1jYXRjaChkKXt0aGlzLl9vbkVycm9yKCIuZGF0YSBleGNlcHRpb246IitkKSxjPSExfXRoaXMuX25vdGlmeU9ic2VydmVyKGEsYyl9O3RoaXMuX2FkZE9ic2VydmVyPWZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiI9PT0KdHlwZW9mIGEpe3ZhciBjPXRoaXMuX3JpZCsrO3RoaXMuX29ic1tjXT1hO3JldHVybiBjfXRoaXMuX29uRXJyb3IoImlzIG5vdCBhIHZhbGlkIGNhbGxiYWNrIGZ1bmN0aW9uIik7cmV0dXJuITF9O3RoaXMuX2FkZENvbW1vblZhbHVlc1RvRGF0YT1mdW5jdGlvbihhLGMsYil7Im9iamVjdCIhPT10eXBlb2YgYiYmKGI9e30pO2IuVVVJRD1hO2Iuc2Vzc2lvbklkPWM7Yi50ZWNobm9sb2d5PSJIVE1MIjtiLnVybD13aW5kb3cubG9jYXRpb24uaHJlZjthPWdldENvb2tpZSgiZ2NsaWQiKT9nZXRDb29raWUoImdjbGlkIik6IiI7bnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09YSYmIiIhPT1hJiYhMSE9PWEmJihiLmdvb2dsZUNsaWNrSWQ9YSk7YT1nZXRHYUNsaWVudElkKCk7bnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09YSYmIiIhPT1hJiYhMSE9PWEmJihiLmdhQ2xpZW50SWQ9YSk7YT0kKCIjdGV4dFNlbmRUb0VtYWlsIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKToiIjsiIiE9PQphJiYoYi5zZW5kVG9FbWFpbD1hKTthPSQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS5sZW5ndGg\/JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpOiIiOyIiIT09YSYmKGIuc2VuZFRvRW1haWxBZGY9YSk7YT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiOyIiIT09YSYmKGIuZGVhbGVyTmFtZT1hKTtsZXQgZD1iLm1ha2UudG9Mb3dlckNhc2UoKTtpZigkKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikubGVuZ3RoJiYiIiE9PWQmJiJjYXJkZXRhaWwuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKSl7YT0kKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikuZmluZCgic2VsZWN0Iik7bGV0IGc9ZW1haWxIYW5kbGVyLmdldERlcCgpO2EuZmluZCgib3B0aW9uW2RhdGEtYnJhbmRzXSIpLmVhY2goZnVuY3Rpb24oZSxmKXtlPSQoZikuZGF0YSgiYnJhbmRzIikudG9Mb3dlckNhc2UoKTsKaWYoIiIhPWUmJmUuc3BsaXQoIiwiKS5pbmNsdWRlcyhkKSl7bGV0IGg9ZT0iIixrPWYudGV4dDtzd2l0Y2goZyl7Y2FzZSAiVVNFRCI6ZT0kKGYpLmRhdGEoImVtYWlsdXNlZCIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnVzZWQiKTticmVhaztjYXNlICJTRVJWSUNFIjplPSQoZikuZGF0YSgiZW1haWxzZXJ2aWNlIik7aD0kKGYpLmRhdGEoImVtYWlsYWRmc2VydmljZSIpO2JyZWFrO2Nhc2UgIlBBUlRTIjplPSQoZikuZGF0YSgiZW1haWxwYXJ0cyIpfHwkKGYpLmRhdGEoImVtYWlsc2VydmljZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnBhcnRzIil8fCQoZikuZGF0YSgiZW1haWxhZGZzZXJ2aWNlIik7YnJlYWs7Y2FzZSAiRklOQU5DRSI6ZT0kKGYpLmRhdGEoImVtYWlsZmluYW5jZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKTticmVhaztjYXNlICJORVciOmU9JChmKS5kYXRhKCJlbWFpbCIpLGg9JChmKS5kYXRhKCJlbWFpbGFkZiIpfWlmKCIiIT09ZXx8IiIhPT1oKWIuc2VuZFRvRW1haWw9CmUsYi5zZW5kVG9FbWFpbEFkZj1oLGIuZGVhbGVyTmFtZT1rfX0pfWE9JCgiI0NBTVBBSUdOSUQiKS5sZW5ndGg\/JCgiI0NBTVBBSUdOSUQiKS52YWwoKToiIjsiIiE9PWEmJihiLmNhbXBhaWduSWQ9YSk7Y29uc29sZS5sb2codGhpcy5fbmFtZSsiLmRhdGEiLGIpO3JldHVybiBifTt0aGlzLl9pbml0PWZ1bmN0aW9uKGEsYyxiLGQsZyl7dmFyIGU7aWYoITE9PT0oYT10aGlzLl9idWlsZFF1ZXJ5KHRoaXMuX2FkZENvbW1vblZhbHVlc1RvRGF0YShhLGMsYiksZykpfHwhMT09PShlPXRoaXMuX2FkZE9ic2VydmVyKGQpKSlyZXR1cm4hMTtzZXRUaW1lb3V0KHRoaXMuX2RvUmVxdWVzdC5iaW5kKHRoaXMsYSxlKSl9O3RoaXMuZ2V0U21zTnVtYmVyPWZ1bmN0aW9uKGEsYyxiKXtpZigib2JqZWN0Ij09PXR5cGVvZiB3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcpYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjayh0aGlzLl9pbml0LmJpbmQodGhpcyx3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLAp3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCksYSxjLGIpKTtlbHNlIHJldHVybiB0aGlzLl9vbkVycm9yKCciYWN0aXZlVXNlclByb2ZpbGVNbmciIGlzIG5vdCBhbiBvYmplY3QnKSwhMTtyZXR1cm4hMH19OwovKiogL20vanMvZmF2b3JpdGVzLmpzICoqLwp2YXIgX19fZDJjX2Zhdm9yaXRlc2pzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTA6MDMiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2Zhdm9yaXRlc2pzX2Nfb249IjIwMjUtMDEtMDkgMDk6MzA6MDQiOyJ1c2Ugc3RyaWN0IjsKZnVuY3Rpb24gRDJGQVYoKXtmdW5jdGlvbiBwKCl7dmFyIGE9bmV3IERhdGU7cmV0dXJuIGEuZ2V0RnVsbFllYXIoKSsiLSIrKDEwPmEuZ2V0TW9udGgoKSsxPyIwIisoYS5nZXRNb250aCgpKzEpOmEuZ2V0TW9udGgoKSsxKSsiLSIrKDEwPmEuZ2V0RGF0ZSgpPyIwIithLmdldERhdGUoKTphLmdldERhdGUoKSkrIiAiKygxMD5hLmdldEhvdXJzKCk\/IjAiK2EuZ2V0SG91cnMoKTphLmdldEhvdXJzKCkpKyI6IisoMTA+YS5nZXRNaW51dGVzKCk\/IjAiK2EuZ2V0TWludXRlcygpOmEuZ2V0TWludXRlcygpKSsiOiIrKDEwPmEuZ2V0U2Vjb25kcygpPyIwIithLmdldFNlY29uZHMoKTphLmdldFNlY29uZHMoKSl9ZnVuY3Rpb24gdShhKXt2YXIgYj1bXSxkPTEwMCxjO2ZvcihjIGluIGEpe3ZhciBnPS0tZCsiXyIrYVtjXS5jcmVhdGVkO2JbZ109YVtjXX1yZXR1cm4gYn1mdW5jdGlvbiBrKGEpe2lmKHZvaWQgMD09PWF8fCIiPT1hKXJldHVybiExO2dhVHJhY2soIl90cmFja0V2ZW50IiwiRmF2b3JpdGVzIiwKYSx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTtyZXR1cm4hMH12YXIgbD0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iZW4iOiJmciIsbj0wPCQoIiNpc21vYmlsZSIpLmxlbmd0aCYmIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKT8ibW9iaWxlIjoiZGVza3RvcCIsdD1uZXcgZnVuY3Rpb24oKXtzZWxmLmNyZWF0ZUxvY2FsU3RvcmFnZT1mdW5jdGlvbigpe251bGw9PT1Db29raWVzLmdldCgiZDJmYXZEYXRhIikmJihkMmZhdkRhdGFPYmo9e2NyZWF0ZWQ6cCgpLG9yaWdpbmFsVGltZXpvbmU6SW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLGZhdm9yaXRlczp7fSxmYXZDb3VudDowfSxzZXRDb29raWUoImQyZmF2RGF0YSIsSlNPTi5zdHJpbmdpZnkoZDJmYXZEYXRhT2JqKSkpfTtzZWxmLmdldFZlaGljbGVKc29uPWZ1bmN0aW9uKGEpe2lmKHZvaWQgMD09PWEpcmV0dXJuITE7JC5nZXQoIi9qcy9qc29uLyIrYSsiLmpzb24iKS5kb25lKGZ1bmN0aW9uKGIpe2lmKHZvaWQgMCE9PQpiLmltYWdlc1swXSl7dmFyIGQ9SlNPTi5wYXJzZShDb29raWVzLmdldCgiZDJmYXZEYXRhIikpO2QuZmF2b3JpdGVzW2lkXS5pbWFnZT1iLmltYWdlc1swXTtzZXRDb29raWUoImQyZmF2RGF0YSIsSlNPTi5zdHJpbmdpZnkoZCkpOyIiIT1jYWxsYmFjayYmdm9pZCAwIT09Y2FsbGJhY2smJnNlbGYuYmluZE5hdmlnYXRpb24oKX19KX07c2VsZi5iaW5kTmF2aWdhdGlvbj1mdW5jdGlvbigpe3ZhciBhPUpTT04ucGFyc2UoQ29va2llcy5nZXQoImQyZmF2RGF0YSIpKSxiPWEuZmF2Q291bnQsZD0wPGI\/ITA6ITEsYz0iZW4iPT1sPyEwPT09ZD8iTXkgZmF2b3JpdGVzIjoiWW91IGhhdmUgbm8gZmF2b3JpdGVzIHlldCEiOiEwPT09ZD8iTWVzIGZhdm9yaXMiOiJWb3VzIG4nYXZleiBwYXMgZW5jb3JlIGRlIGZhdm9yaXMhIixnPSQoIi5kMmMtZmF2cy1uYXYtd3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pbm5lckJveCIpLGg9CiQoIi5kMmMtZmF2cy1uYXYtZGQtd3JhcHBlciAuc3VibWVudUl0ZW1Db250YWluZXIgI2l0ZW1fRkFWT1JJVEUiKTthPXUoYS5mYXZvcml0ZXMpO2cuaHRtbCgiIik7aC5odG1sKCIiKTtpZighMD09PWQpZm9yKHZhciBlIGluIGEpe3ZhciBmPSIiLG09IiIscT12b2lkIDAhPT1hW2VdLnNpZCYmYVtlXS5zaWQ\/IiMiK2FbZV0uc2lkOiIiLHI9dm9pZCAwIT09YVtlXS5pbWFnZT8nPGltZyBzcmM9IicrYVtlXS5pbWFnZSsnIiAvPic6IiI7Im1vYmlsZSI9PW4\/KG0rPSc8c3BhbiBjbGFzcz0iLW0wIj5cbjxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBGQVZPUklURSIgaHJlZj0iJythW2VdLnVybCsnIiB0YXJnZXQ9IiIgb25jbGljaz0iIj5cbjxzcGFuIGNsYXNzPSItcGgiPicrKCJlbiI9PWw\/YVtlXS50aXRsZTphW2VdLnRpdGxlX2ZyKSsnPC9zcGFuPlxuPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij5cbjxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+XG48L3NwYW4+XG48L2E+XG48L3NwYW4+XG4nLApoLnByZXBlbmQobSkpOihmKz0nPGEgaHJlZj0iJythW2VdLnVybCsnIj4nLGYrPSc8ZGl2IGNsYXNzPSJkMmMtZmF2cy1uYXYtZHJvcGRvd24taXRlbSI+JyxmKz1yLGYrPSI8ZGl2PiIsZis9ImVuIj09bD9hW2VdLnRpdGxlOmFbZV0udGl0bGVfZnIsZis9IjwvZGl2PiIsZis9JzxkaXYgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Ij48L2Rpdj4nLCIiIT1xJiYoZis9JzxkaXYgY2xhc3M9ImQyYy1mYXZzLW5hdi1kcm9wZG93bi1pdGVtLXN1YiAnKygiIiE9cj8iaGFzQ2FySW1hZ2UiOiIiKSsnIj4nLGYrPSIiK3EsZis9IjwvZGl2PiIpLGYrPSI8L2Rpdj4iLGYrPSI8L2E+IixnLnByZXBlbmQoZikpfSJkZXNrdG9wIj09biYmMDwkKCIja2lhU2hpZnRDZXJ0aWZpZWRGb290ZXIiKS5sZW5ndGgmJiEkKCIubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyIikuaGFzQ2xhc3MoImlzS2lhU2hpZnQiKSYmJCgiLmxhbmd1YWdlQmFyLCAubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyIikuYWRkQ2xhc3MoImlzS2lhU2hpZnQiKTsKJCgiLmQyYy1mYXZzLW5hdi13cmFwcGVyIikuYXR0cigidGl0bGUiLGMpOyEwPT09ZD8oJCgiLmQyYy1mYXZzLW5hdi13cmFwcGVyLCAuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIiKS5yZW1vdmVDbGFzcygiZDJjLWZhdnMtbmF2LWRpc2FibGVkIiksJCgiLmJ1cmdlci1tZW51IHVsIGxpIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciA+IHNwYW4iKS5odG1sKCIgKCIrYisiKSIpLCQoIi5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmZhdi1uYXYtY291bnQiKS5odG1sKGIpLCQoIi5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIiKS5hZGRDbGFzcygiZmF2LW5hdi1oYXMtdmVoaWNsZXMiKSk6KCQoIi5idXJnZXItbWVudSB1bCBsaSBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgPiBzcGFuIikuaHRtbCgiIiksJCgiLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciAuZmF2LW5hdi1jb3VudCIpLmh0bWwoIiIpLCQoIi5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIiKS5yZW1vdmVDbGFzcygiZmF2LW5hdi1oYXMtdmVoaWNsZXMiKSwKJCgiLmQyYy1mYXZzLW5hdi13cmFwcGVyLCAuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIiKS5hZGRDbGFzcygiZDJjLWZhdnMtbmF2LWRpc2FibGVkIikpOyQoIi5kMmMtZmF2cy1uYXYtd3JhcHBlci5mYXYtbmF2LWhhcy12ZWhpY2xlcyIpLm9mZigibW91c2VlbnRlciIpLm9uKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2soIkZhdm9yaXRlLVN1bW1hcnktVmlld2VkIil9KTskKCIuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXI6bm90KC5kMmMtZmF2cy1uYXYtZGlzYWJsZWQpIC5tZW51RXhwYW5kIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIuZDJjLWZhdnMtbmF2LWRkLXdyYXBwZXIgLnN1Ym1lbnVJdGVtQ29udGFpbmVyIikuaXMoIjp2aXNpYmxlIil8fGsoIkZhdm9yaXRlLVN1bW1hcnktVmlld2VkIil9KTskKCIuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWl0ZW0sIC5kMmMtZmF2cy1uYXYtZGQtd3JhcHBlciAuc3VibWVudUl0ZW0iKS5vZmYoImNsaWNrIikub24oImNsaWNrIiwKZnVuY3Rpb24oKXtrKCJGYXZvcml0ZS1TdW1tYXJ5LUNsaWNrZWQiKX0pfTtzZWxmLmJpbmRUcmlnZ2Vycz1mdW5jdGlvbigpeyQoIi5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIiKS5lYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPSQodGhpcykuYXR0cigiZGF0YS1tYWtlIiksZD0kKHRoaXMpLmF0dHIoImRhdGEtbW9kZWwiKSxjPSQodGhpcykuYXR0cigiZGF0YS15ZWFyIiksZz0kKHRoaXMpLmF0dHIoImRhdGEtdHJpbSIpLGg9JCh0aGlzKS5hdHRyKCJkYXRhLWNhcmlkIik7YT1jKyIgIitiKyIgIitkKyhnPyIgIitnOiIiKS5yZXBsYWNlKC8oXHJcbnxcbnxccnxcdCkvZ20sIiIpO2c9YisiICIrZCsoZz8iICIrZzoiIikucmVwbGFjZSgvKFxyXG58XG58XHJ8XHQpL2dtLCIiKSsiICIrYztiPShjKyItIitiKyItIitkKyh2b2lkIDAhPT1oJiYiIiE9aD8iLSIraDoiIikpLnJlcGxhY2UoLyAvZywiLSIpLnRvTG93ZXJDYXNlKCk7JCh0aGlzKS5hZGRDbGFzcyhiKTskKHRoaXMpLmh0bWwoJzxzcGFuIGNsYXNzPSJmYS1sYXllcnMiPlxuICAgIDxpIGNsYXNzPSJmYSBmYS1oZWFydCI+PC9pPlxuICAgIDxpIGNsYXNzPSJmYXIgZmEtaGVhcnQiPjwvaT5cbiA8L3NwYW4+Jyk7CiQodGhpcykuYXR0cigidGl0bGUiLCJlbiI9PWw\/Ik15IGZhdm9yaXRlcyI6Ik1lcyBmYXZvcmlzIik7JCh0aGlzKS5hdHRyKCJkYXRhLWNsYXNzIixiKTskKHRoaXMpLmF0dHIoImRhdGEtdGl0bGUiLGEpOyQodGhpcykuYXR0cigiZGF0YS10aXRsZS1mciIsZyk7JCh0aGlzKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIkQyRkFWIC0gUmVjb3JkIEZhdiIsJCh0aGlzKSk7c2VsZi5yZWNvcmRGYXZvcml0ZSgkKHRoaXMpKX0pfSkucHJvbWlzZSgpLmRvbmUoZnVuY3Rpb24oKXtzZWxmLnNldEljb25zKCl9KX07c2VsZi5yZWNvcmRGYXZvcml0ZT1mdW5jdGlvbihhKXt2YXIgYj1KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJkMmZhdkRhdGEiKSl8fHtmYXZvcml0ZXM6e319O2lmKDA8YS5zaWJsaW5ncygiYSIpLmxlbmd0aCl2YXIgZD1hLnNpYmxpbmdzKCJhIikuYXR0cigiaHJlZiIpO2Vsc2UgaWYoMDxhLmNsb3Nlc3QoIi5kaXZDYXJTaW5nbGVPdXRlckJveCIpLmxlbmd0aCl7dmFyIGM9CmEuY2xvc2VzdCgiLmRpdkNhclNpbmdsZU91dGVyQm94Iik7ZD0kKCIuZGl2Q2FyVGl0bGVDb250YWluZXIgPiBhIixjKS5hdHRyKCJocmVmIil9ZWxzZSBkPXdpbmRvdy5sb2NhdGlvbi5ocmVmO3ZhciBnPTA8YS5jbG9zZXN0KCIuY2FyQm94SW5uZXIiKS5oYXMoIi5jYXJQcmljZSIpLmxlbmd0aD8kKCIuY2FyUHJpY2UiLGEuY2xvc2VzdCgiLmNhckJveElubmVyIikpLnRleHQoKTowPGEuY2xvc2VzdCgiLmRpdkNhclNpbmdsZU91dGVyQm94IikuaGFzKCIuZGl2TmV3Q2FyU3RhcnRQcmljZSA+IHNwYW4iKS5sZW5ndGg\/JCgiLmRpdk5ld0NhclN0YXJ0UHJpY2UgPiBzcGFuIixhLmNsb3Nlc3QoIi5kaXZDYXJTaW5nbGVPdXRlckJveCIpKS5odG1sKCk6JCgiI2NhclByaWNlIikudGV4dCgpO2lmKDA8YS5jbG9zZXN0KCIuY2FyQm94SW5uZXIiKS5oYXMoIi5jYXJJbWFnZSIpLmxlbmd0aCljPSQoIi5jYXJJbWFnZSA+IGEgPiBpbWciLGEuY2xvc2VzdCgiLmNhckJveElubmVyIikpLmF0dHIoInNyYyIpOwplbHNlIGlmKDA8YS5jbG9zZXN0KCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKS5oYXMoIi5kaXZDYXJJbWFnZUNvbnRhaW5lciA+IGEgPiBpbWciKS5sZW5ndGgpYz0kKCIuZGl2Q2FySW1hZ2VDb250YWluZXIgPiBhID4gaW1nIixhLmNsb3Nlc3QoIi5kaXZDYXJTaW5nbGVPdXRlckJveCIpKS5hdHRyKCJzcmMiKTtlbHNlIGlmKGM9JCgiLlNsaWRlck91dGVyQm94IC5zbGlkZXItbWFpbiAuc2xpZGVzIC5zbGlkZTpmaXJzdC1jaGlsZCIpLmF0dHIoImRhdGEtaW1hZ2UiKSwiIj09Y3x8dm9pZCAwPT09YyljPSQoIi5TbGlkZXJPdXRlckJveCAuc2xpZGVyLW1haW4gLnNsaWRlcyAuc2xpZGU6Zmlyc3QtY2hpbGQgYSBpbWciKS5hdHRyKCJzcmMiKTtnPWcucmVwbGFjZSgvKFxyXG58XG58XHJ8XHR8XCQpL2dtLCIiKTt2YXIgaD1hLmF0dHIoImRhdGEtY2xhc3MiKSxlPWEuYXR0cigiZGF0YS1zdG9ja2lkIiksZj0wO2lmKCJ7JENBUlNUT0NLTlVNQkVSfSI9PWV8fHZvaWQgMD09PWUpZT0KIiI7YS5oYXNDbGFzcygiZDJjLWZhdnMtc2VsZWN0ZWQiKT8oZGVsZXRlIGIuZmF2b3JpdGVzW2hdLGsoIkZhdm9yaXRlLVJlbW92ZWQiKSk6KGIuZmF2b3JpdGVzW2hdPXtpZDpoLGNyZWF0ZWQ6cCgpLHRpdGxlOmEuYXR0cigiZGF0YS10aXRsZSIpLHRpdGxlX2ZyOmEuYXR0cigiZGF0YS10aXRsZS1mciIpLHllYXI6YS5hdHRyKCJkYXRhLXllYXIiKSxtYWtlOmEuYXR0cigiZGF0YS1tYWtlIiksbW9kZWw6YS5hdHRyKCJkYXRhLW1vZGVsIiksc2lkOmUsdXJsOmQscHJpY2U6Zyx2aWQ6YS5hdHRyKCJkYXRhLWNhcmlkIiksaW1hZ2U6Y30saygiRmF2b3JpdGUtQWRkZWQiKSk7Zm9yKHZhciBtIGluIGIuZmF2b3JpdGVzKWIuZmF2b3JpdGVzLmhhc093blByb3BlcnR5KG0pJiYrK2Y7Yi5mYXZDb3VudD1mO3NldENvb2tpZSgiZDJmYXZEYXRhIixKU09OLnN0cmluZ2lmeShiKSk7c2VsZi5zZXRJY29ucygpfTtzZWxmLnNldEljb25zPWZ1bmN0aW9uKCl7aWYoQ29va2llcy5nZXQoImQyZmF2RGF0YSIpKXt2YXIgYT0KSlNPTi5wYXJzZShDb29raWVzLmdldCgiZDJmYXZEYXRhIikpOyQoIi5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIiKS5yZW1vdmVDbGFzcygiZDJjLWZhdnMtc2VsZWN0ZWQiKTtmb3IodmFyIGIgaW4gYS5mYXZvcml0ZXMpYS5mYXZvcml0ZXMuaGFzT3duUHJvcGVydHkoYikmJjA8JCgiLiIrYikubGVuZ3RoJiYkKCIuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyLiIrYikuY2xvc2VzdCgiLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciIpLmFkZENsYXNzKCJkMmMtZmF2cy1zZWxlY3RlZCIpO3NlbGYuYmluZE5hdmlnYXRpb24oKX19O3JldHVybiBzZWxmfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JChmdW5jdGlvbigpe3QuY3JlYXRlTG9jYWxTdG9yYWdlKCk7aWYoIm1vYmlsZSI9PW4pe3ZhciBhPSQoIiNTaXRlc19QYWdlX0dlbmVyYWxfTWVudV9CVE4iKS52YWwoKTthPSc8bGkgY2xhc3M9ImQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIj5cdFx0XG48YSBjbGFzcz0iRkFWT1JJVEUgbWVudS1pdGVtIGZsZXgtYm94IGQyYy1mYXZzLW5hdi13cmFwcGVyIiBocmVmPSIjIiBvbmNsaWNrPSIiPlxuPGkgY2xhc3M9ImZhIGZhLWhlYXJ0Ij48L2k+XG48c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3ciPicrCigiZW4iPT1sPyJNeSBmYXZvcml0ZXMiOiJNZXMgZmF2b3JpcyIpKyc8L3NwYW4+XG48c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtNSIgYXJpYS1sYWJlbD0iJythKyciPlxuPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPlxuPC9zcGFuPlxuPC9hPlxuPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij5cbjxzdGFjay1sYyBpZD0iaXRlbV9GQVZPUklURSIgY2xhc3M9Ii0tcy05Ij48L3N0YWNrLWxjPlxuPC9kaXY+XG48L2xpPic7JCgiLmJ1cmdlci1tZW51LWNvbnRhaW5lciBuYXYgPiB1bCIpLmFwcGVuZChhKTskKCIuYnVyZ2VyLW1lbnUtY29udGFpbmVyIC5kMmMtZmF2cy1uYXYtZGQtd3JhcHBlciBhLmQyYy1mYXZzLW5hdi13cmFwcGVyLCAuYnVyZ2VyLW1lbnUtY29udGFpbmVyIC5kMmMtZmF2cy1uYXYtZGQtd3JhcHBlciAubWVudUV4cGFuZCIpLm9uKCJjbGljayIsCmZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKTtiPSQodGhpcykuY2xvc2VzdCgiLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIik7Yi5oYXNDbGFzcygiZDJjLWZhdnMtbmF2LWRpc2FibGVkIil8fHRvZ2dsZVN1Ym1lbnVzKCQoIi5tZW51RXhwYW5kIixiKSl9KX1zZWxmLmJpbmRUcmlnZ2VycygpOzA8JCgiLmxzdFdyYXBwZXIiKS5sZW5ndGgmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5BYnN0cmFjdFVzZWRTcnBPYmplY3QmJihhPW5ldyBBYnN0cmFjdFVzZWRTcnBPYmplY3Qoe25hbWU6ImQyY19mYXZvcml0ZXMifSksYS5hZGRVc2VkU3JwRXZlbnRPYnNlcnZlcigicHJveHkiLGZ1bmN0aW9uKGIpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGIuY21kJiYicmVxdWVzdCI9PT1iLmNtZCYmc2VsZi5iaW5kVHJpZ2dlcnMoKX0pLGEuaW5pdFVzZWRTcnBPYnNlcnZlcigpKX0pfSwxRTMpO3dpbmRvdy5kMmZhdj10fUQyRkFWKCk7Ci8qKiAvbS9qcy9nZW9Mb2NhdGlvbi5qcyAqKi8KdmFyIF9fX2QyY19nZW9Mb2NhdGlvbmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTA6MjQiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2dlb0xvY2F0aW9uanNfY19vbj0iMjAyNS0wMi0yNiAwOTozMDoxMSI7InVzZSBzdHJpY3QiOwp2YXIgZ2VvTG9jYXRvcj1mdW5jdGlvbihmKXt2YXIgYT10aGlzO2EubWFwc0FQSUtleT1udWxsO2EudXNlSFRNTDU9ITA7YS5nZW9jb2RlTG9jYXRpb249ITA7YS5hdHRlbXB0UGFnZU51bT0wO2EudHJhY2tMb2NhdGlvbkdBPSExO2EuZm9yY2VHZW9sb2NBdHRlbXB0PSExO2Euc2hvd1BvaW50ZXJNZXNzYWdlPSEwO2EudGltZW91dHM9W107YS5icm93c2VyPSIiO2EuaXNNb2JpbGU9IjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKTthLmdlb2xvY1N0YXR1c2VzPXtPSzoiU1VDQ0VTUyIsUkVGVVNFRDoiUkVGVVNFRCIsQ09PS0lFX0FDQ0VQVEVEOiJQUkVfQUNDRVBURUQiLENPT0tJRV9SRUZVU0VEOiJQUkVfUkVGVVNFRCIsQ0FOQ0VMRUQ6IkNBTkNFTEVEIixGQUlMOiJGQUlMRUQifTthLmdlb2xvY0Vycm9ycz17SU5WQUxJRF9SRVNQT05TRToiSU5WQUxJRF9SRVNQT05TRSIsQ09OTkVDVElPTl9GQUlMRUQ6IkNPTk5FQ1RJT05fRkFJTEVEIixHRU9MT0NfRkFJTEVEOiJHRU9MT0NfRkFJTEVEIiwKR0VPTE9DX1JFRlVTRUQ6IkdFT0xPQ19SRUZVU0VEIixHRU9DT0RFX0ZBSUxFRDoiR0VPQ09ERV9GQUlMRUQifTthLmdlb2xvY1Jlc3VsdD17cmVzdWx0OjAsZ2VvbG9jX2RhdGU6IiIsZ2VvbG9jX3N0YXR1czphLmdlb2xvY1N0YXR1c2VzLkZBSUwsZ2VvY29kZV9zdGF0dXM6MCxsYXRpdHVkZTowLGxvbmdpdHVkZTowLGFjY3VyYWN5OjAscG9zdGFsX2NvZGU6IiIsZ2VvY29kZV9hZGRyZXNzOiIiLGdlb2NvZGVfYWRkcmVzc19zdHI6IiJ9O2EuZ2VvbG9jQ2FsbGJhY2s9ZnVuY3Rpb24oKXtmKGEuZ2VvbG9jUmVzdWx0KTtmPWZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIkdlbyBjYWxsYmFjayBhbHJlYWR5IGZpcmVkLiIpfX07YS5faW5pdD1mdW5jdGlvbigpe2EuaXNNb2JpbGUmJihhLnNob3dQb2ludGVyTWVzc2FnZT0hMSk7aWYoMDxhLmF0dGVtcHRQYWdlTnVtKXt2YXIgYj1udWxsIT1Db29raWVzLmdldCgiZ2VvbG9jUGFnZVZpZXdzIik\/cGFyc2VJbnQoQ29va2llcy5nZXQoImdlb2xvY1BhZ2VWaWV3cyIpKSsKMToxO0Nvb2tpZXMuc2V0KCJnZW9sb2NQYWdlVmlld3MiLGI8YS5hdHRlbXB0UGFnZU51bT9iOjAsbnVsbCwiLyIpO2lmKGI8YS5hdHRlbXB0UGFnZU51bSlyZXR1cm4gYS5nZW9sb2NSZXN1bHQucmVzdWx0PTAsYS5nZW9sb2NSZXN1bHQuc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuQ0FOQ0VMRUQsYS5nZW9sb2NDYWxsYmFjaygpLCExfWlmKCFhLmZvcmNlR2VvbG9jQXR0ZW1wdCYmQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKXJldHVybiBiPUpTT04ucGFyc2UoQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKSwiMSI9PWIuYWNjZXB0ZWQ\/KGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0xLGEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19kYXRlPWIuZ2VvbG9jX2RhdGUsYS5nZW9sb2NSZXN1bHQuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNPT0tJRV9BQ0NFUFRFRCxhLmdlb2xvY1Jlc3VsdC5sYXRpdHVkZT1iLmxhdGl0aXVkZSxhLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGU9CmIubG9uZ2l0dWRlLGEuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzcz1iLmFkZHJlc3MsYS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzX3N0cj1iLmFkZHJlc3Nfc3RyKTooYS5nZW9sb2NSZXN1bHQucmVzdWx0PTAsYS5nZW9sb2NSZXN1bHQuc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuQ09PS0lFX1JFRlVTRUQpLGEuZ2VvbG9jQ2FsbGJhY2soKSwhMTtpZigiaHR0cHM6IiE9bG9jYXRpb24ucHJvdG9jb2wpcmV0dXJuIGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wLGEuZ2VvbG9jUmVzdWx0LnN0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNBTkNFTEVELGEuZ2VvbG9jQ2FsbGJhY2soKSwhMTtpZihsdF9JRTl8fCFuYXZpZ2F0b3IuZ2VvbG9jYXRpb24pYS51c2VIVE1MNT0hMTtuYXZpZ2F0b3IuYnJvd3Nlcj1mdW5jdGlvbigpe3ZhciBjPW5hdmlnYXRvci51c2VyQWdlbnQsZD1jLm1hdGNoKC8ob3BlcmF8Y2hyb21lfHNhZmFyaXxmaXJlZm94fG1zaWV8dHJpZGVudCg\/PVwvKSlcLz9ccyooXGQrKS9pKXx8CltdO2lmKC90cmlkZW50L2kudGVzdChkWzFdKSl7dmFyIGU9L1xicnZbIDpdKyhcZCspL2cuZXhlYyhjKXx8W107cmV0dXJuIklFeHBsb3JlciAiKyhlWzFdfHwiIil9aWYoIkNocm9tZSI9PT1kWzFdJiYoZT1jLm1hdGNoKC9cYk9QUlwvKFxkKykvKSxudWxsIT1lKSlyZXR1cm4iT3BlcmEgIitlWzFdO2Q9ZFsyXT9bZFsxXSxkWzJdXTpbbmF2aWdhdG9yLmFwcE5hbWUsbmF2aWdhdG9yLmFwcFZlcnNpb24sIi0\/Il07bnVsbCE9KGU9Yy5tYXRjaCgvdmVyc2lvblwvKFxkKykvaSkpJiZkLnNwbGljZSgxLDEsZVsxXSk7cmV0dXJuIGQuam9pbigiICIpfSgpO2EuYnJvd3Nlcj1uYXZpZ2F0b3IuYnJvd3NlcjtyZXR1cm4hMH07YS5oYW5kbGVMb2NhdGlvblN1Y2Nlc3M9ZnVuY3Rpb24oKXt2YXIgYj0iTGF0aXR1ZGU6ICIrYS5nZW9sb2NSZXN1bHQubGF0aXR1ZGUrIjsgTG9uZ2l0dWRlOiAiK2EuZ2VvbG9jUmVzdWx0LmxvbmdpdHVkZTszPD1hLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZS5sZW5ndGgmJgooYj1hLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZSk7YS50cmFja0xvY2F0aW9uKCJHZW9sb2NhdGlvbiIsIkFjY2VwdGVkIixiKTthLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZT0obmV3IERhdGUpLmdldFRpbWUoKTtiPW5ldyBEYXRlO2Iuc2V0SG91cnMoMjMsNTksNTksMCk7Q29va2llcy5zZXQoImdlb2xvY1Byb2Nlc3NlZCIsSlNPTi5zdHJpbmdpZnkoe2FjY2VwdGVkOjEsZ2VvbG9jX2RhdGU6YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX2RhdGUsbGF0aXR1ZGU6YS5nZW9sb2NSZXN1bHQubGF0aXR1ZGUsbG9uZ2l0dWRlOmEuZ2VvbG9jUmVzdWx0LmxvbmdpdHVkZSxwb3N0YWxfY29kZTphLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZSxhY2N1cmFjeTphLmdlb2xvY1Jlc3VsdC5hY2N1cmFjeSxhZGRyZXNzOmEuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzcyxhZGRyZXNzX3N0cjphLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3Nfc3RyfSksYiwiLyIpO2EuZ2VvbG9jQ2FsbGJhY2soKX07CmEuaGFuZGxlTG9jYXRpb25FcnJvcj1mdW5jdGlvbihiLGMpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPSIiO2EuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wO2EuZ2VvbG9jUmVzdWx0Lmdlb2xvY19kYXRlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2EuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5GQUlMO3N3aXRjaChiKXtjYXNlIGEuZ2VvbG9jRXJyb3JzLklOVkFMSURfUkVTUE9OU0U6Yz0iR2VvbG9jIGVycm9yIG1lc2FnZTogSW52YWxpZCByZXNwb25zZSBkYXRhIjticmVhaztjYXNlIGEuZ2VvbG9jRXJyb3JzLkNPTk5FQ1RJT05fRkFJTEVEOmM9Ikdlb2xvYyBlcnJvciBtZXNhZ2U6IENvbmVjdGlvbiBmYWlsZWQiO2JyZWFrO2Nhc2UgYS5nZW9sb2NFcnJvcnMuR0VPTE9DX1JFRlVTRUQ6YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLlJFRlVTRUQ7YnJlYWs7Y2FzZSBhLmdlb2xvY0Vycm9ycy5HRU9MT0NfRkFJTEVEOmJyZWFrOwpjYXNlIGEuZ2VvbG9jRXJyb3JzLkdFT0NPREVfRkFJTEVEOmM9Ikdlb2xvYyBlcnJvciBtZXNhZ2U6IEludmFsaWQgcmVzcG9uc2UgZGF0YSI7YnJlYWs7ZGVmYXVsdDpjPSJVbmtub3duIGVycm9yIG9jdXJyZWQifWEudHJhY2tMb2NhdGlvbigiR2VvbG9jYXRpb24iLCJGYWlsZWQiLGMpO2EuZ2VvbG9jQ2FsbGJhY2soKX07YS5nZXRMb2NhdGlvbj1mdW5jdGlvbigpe2EuX2luaXQoKSYmKDA9PWEudXNlSFRNTDU\/YS5nZXRHb29nbGVTZXJ2aWNlTG9jYXRpb24oKTphLmdldEhUTUw1TG9jYXRpb24oKSl9O2EuZ2V0R29vZ2xlU2VydmljZUxvY2F0aW9uPWZ1bmN0aW9uKCl7YS5oYW5kbGVMb2NhdGlvblN1Y2Nlc3MoKTtyZXR1cm4hMX07YS5nZXRIVE1MNUxvY2F0aW9uPWZ1bmN0aW9uKCl7YS5zaG93R2VvbG9jTXNnKCk7bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihiKXthLmhpZGVHZW9sb2NNc2coKTthLmNsZWFyU2V0VGltZW91dHMoKTsKYS5nZW9sb2NSZXN1bHQucmVzdWx0PTE7YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLk9LO2EuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlPWIuY29vcmRzLmxhdGl0dWRlO2EuZ2VvbG9jUmVzdWx0LmxvbmdpdHVkZT1iLmNvb3Jkcy5sb25naXR1ZGU7YS5nZW9sb2NSZXN1bHQuYWNjdXJhY3k9Yi5jb29yZHMuYWNjdXJhY3k7aWYoMSE9YS5nZW9jb2RlTG9jYXRpb24pcmV0dXJuIGEuaGFuZGxlTG9jYXRpb25TdWNjZXNzKCksITE7YS5sYXRMb25nR2VvY29kZShiLmNvb3Jkcy5sYXRpdHVkZSxiLmNvb3Jkcy5sb25naXR1ZGUpfSxmdW5jdGlvbihiKXtjb25zb2xlLmxvZyhiKTt2YXIgYz0iR2VvbG9jIGVycm9yIGNvZGU6ICIrYi5jb2RlKyIsIGdlb2xvYyBlcnJvciBtZXNhZ2U6ICIrYi5tZXNzYWdlO2EuaGlkZUdlb2xvY01zZygpO2EuY2xlYXJTZXRUaW1lb3V0cygpO0Nvb2tpZXMuc2V0KCJnZW9sb2NQcm9jZXNzZWQiLEpTT04uc3RyaW5naWZ5KHthY2NlcHRlZDowfSksCjEsIi8iKTt2YXIgZD1hLmdlb2xvY0Vycm9ycy5HRU9MT0NfUkVGVVNFRDsxIT1wYXJzZUludChiLmNvZGUpJiYoZD1hLmdlb2xvY0Vycm9ycy5HRU9MT0NfRkFJTEVEKTthLmhhbmRsZUxvY2F0aW9uRXJyb3IoZCxjKX0se3RpbWVvdXQ6MjVFM30pfTthLmxhdExvbmdHZW9jb2RlPWZ1bmN0aW9uKGIsYyl7YS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzPWIrInwiK2M7YS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzX3N0cj0iTGF0aXR1ZGU6ICIrYisiOyBMb25naXR1ZGU6ICIrYzthLmhhbmRsZUxvY2F0aW9uU3VjY2VzcygpfTthLnRyYWNrUG9zdGFsPWZ1bmN0aW9uKCl7aWYoJGNvb2tpZT1Db29raWVzLmdldCgiSFRNTDVHZW8iKSlpZigkY29va2llPUpTT04ucGFyc2UoJGNvb2tpZSksJGNvb2tpZS5wb3N0YWxfY29kZSlyZXR1cm47aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUmJiIiIT09YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUpe3ZhciBiPQphLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZSsifCIrYS5nZW9sb2NSZXN1bHQuYWNjdXJhY3k7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50PygidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsYS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUsIkhUTUw1R2VvLnBvc3RhbCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYiwiSFRNTDVHZW8ucG9zdGFsIikpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsYS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUsIkhUTUw1R2VvLnBvc3RhbCIpO2I9bmV3IERhdGU7Yi5zZXRIb3VycygyMyw1OSw1OSwwKTtDb29raWVzLnNldCgiSFRNTDVHZW8iLEpTT04uc3RyaW5naWZ5KHtwb3N0YWxfY29kZToxfSksYiwiLyIpfX07CmEuZ2V0QWRkcmVzc0Nvb3JkPWZ1bmN0aW9uKGIsYyl7cmV0dXJuITF9O2EudHJhY2tMb2NhdGlvbj1mdW5jdGlvbihiLGMsZCl7aWYoIWEudHJhY2tMb2NhdGlvbkdBKXJldHVybiExfTthLmNsZWFyU2V0VGltZW91dHM9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPGEudGltZW91dHMubGVuZ3RoO2IrKyljbGVhclRpbWVvdXQoYS50aW1lb3V0c1tiXSk7YS50aW1lb3V0cz1bXX07YS5zaG93R2VvbG9jTXNnPWZ1bmN0aW9uKCl7aWYoIWEuc2hvd1BvaW50ZXJNZXNzYWdlKXJldHVybiExO2EuY2xlYXJTZXRUaW1lb3V0cygpO3ZhciBiPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCl9LDNFNCk7YS50aW1lb3V0cy5wdXNoKGIpO2lmKC0xPGEuYnJvd3Nlci5pbmRleE9mKCJGaXJlZm94Iil8fC0xPGEuYnJvd3Nlci5pbmRleE9mKCJJRSIpKSQoIi5nZW9sb2MtbW9kYWwtYmciKS5vZmYoImNsaWNrIikub24oImNsaWNrIixmdW5jdGlvbigpe2dlb2xvY0ZhaWwoKTtjbGVhclRpbWVvdXQoYil9KSwKJCgiI2dlb2xvY2F0aW9uTXNnIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCk7Y2xlYXJUaW1lb3V0KGIpfSksJCgiI2dlb2xvY2F0aW9uTXNnSUUiKS5vZmYoImNsaWNrIikub24oImNsaWNrIixmdW5jdGlvbigpe2dlb2xvY0ZhaWwoKTtjbGVhclRpbWVvdXQoYil9KTt2YXIgYz0iZ2VvbG9jYXRpb25Nc2ciLGQ9ITAsZT17dG9wOiIwIixsZWZ0OiIwIn07c3dpdGNoKCEwKXtjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJJRSIpOmU9e2JvdHRvbToiMHB4IixsZWZ0OiI0MyUifTtjPSJnZW9sb2NhdGlvbk1zZ0lFIjticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJGaXJlZm94Iik6ZT17dG9wOiI5MHB4IixsZWZ0OiI1cHgifTskKCJpbWcuYnV0dG9uX3BvaW50ZXIiKS5jc3MoImxlZnQiLCI3NXB4Iik7JCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJ0b3AiLCIzNXB4Iik7LTE9PSQoIiN0eHRVc2VyQWdlbnQiKS52YWwoKS5pbmRleE9mKCJXaW5kb3dzIikmJgokKCJpbWcuYnV0dG9uX3BvaW50ZXIiKS5jc3MoImxlZnQiLCIxNzVweCIpO2JyZWFrO2Nhc2UgLTE8YS5icm93c2VyLmluZGV4T2YoIkNocm9tZSIpOmU9e3RvcDoiNjVweCIsbGVmdDoiMHB4In07JCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiMjEwcHgiKTstMT09JCgiI3R4dFVzZXJBZ2VudCIpLnZhbCgpLmluZGV4T2YoIldpbmRvd3MiKSYmKGU9e3RvcDoiNzVweCIsbGVmdDoiNTBweCJ9LCQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygibGVmdCIsIjI0MHB4IikpO2JyZWFrO2Nhc2UgLTE8YS5icm93c2VyLmluZGV4T2YoIlNhZmFyaSIpOmU9e3RvcDoiNTE1cHgiLGxlZnQ6IjM1JSJ9O2Q9ITA7YnJlYWs7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiT3BlcmEiKTplPXt0b3A6IjAiLGxlZnQ6IjAifTtkPSExO2JyZWFrO2RlZmF1bHQ6ZT17dG9wOiIwIixsZWZ0OiIwIn0sZD0hMX1kJiYoInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIucmV2ZWFsLW1vZGFsLWJnIikudmFsKCkmJgoiYmxvY2siPT0kKCIucmV2ZWFsLW1vZGFsLWJnIikuY3NzKCJkaXNwbGF5IikmJiQoIi5yZXZlYWwtbW9kYWwtYmciKS5oaWRlKCksJCgiLmdlb2xvYy1tb2RhbC1iZyIpLnNob3coKSwkKCIjIitjKS5jc3MoZSksJCgiIyIrYykuc2hvdygpLCJ1bmRlZmluZWQiPT10eXBlb2Ygc2l0ZVNlY3Rpb24mJihzaXRlU2VjdGlvbj0iVU5ERUZJTkVEIiksYS50cmFja0xvY2F0aW9uKCJHZW9sb2NhdGlvbiIsIlNlY3Rpb24tIitzaXRlU2VjdGlvbiwiIikpfTthLmhpZGVHZW9sb2NNc2c9ZnVuY3Rpb24oYil7aWYoIWEuc2hvd1BvaW50ZXJNZXNzYWdlKXJldHVybiExO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYnx8bnVsbD09YiliPSExOyQoIi5nZW9sb2MtbW9kYWwtYmciKS5oaWRlKCk7Ynx8KCQoIiNnZW9sb2NhdGlvbk1zZyIpLmhpZGUoKSwkKCIjZ2VvbG9jYXRpb25Nc2dJRSIpLmhpZGUoKSl9O2EuZ2VvbG9jRmFpbD1mdW5jdGlvbigpey0xPGEuYnJvd3Nlci5pbmRleE9mKCJJRSIpJiYKbG9jYXRpb24ucmVsb2FkKCk7b3ZlcmxheU9ubHk9ITA7aWYoLTE8YS5icm93c2VyLmluZGV4T2YoIkZpcmVmb3giKXx8LTE8YS5icm93c2VyLmluZGV4T2YoIklFIikpb3ZlcmxheU9ubHk9ITE7YS5oaWRlR2VvbG9jTXNnKG92ZXJsYXlPbmx5KTtyZXR1cm4hMX07YS5nZXREaXN0YW5jZT1mdW5jdGlvbihiLGMsZCl7cmV0dXJuIGEuZ2V0RGlzdGFuY2VIYXZlcnNpbmUoYixjKX07YS5nZXREaXN0YW5jZUhhdmVyc2luZT1mdW5jdGlvbihiLGMpe3ZhciBkPShjLmxhdC1iLmxhdCkqTWF0aC5QSS8xODAsZT0oYy5sb25nLWIubG9uZykqTWF0aC5QSS8xODA7Yj1NYXRoLnNpbihkLzIpKk1hdGguc2luKGQvMikrTWF0aC5jb3MoYi5sYXQqTWF0aC5QSS8xODApKk1hdGguY29zKGMubGF0Kk1hdGguUEkvMTgwKSpNYXRoLnNpbihlLzIpKk1hdGguc2luKGUvMik7cmV0dXJuKDEyNzU2Mjc0Kk1hdGguYXRhbjIoTWF0aC5zcXJ0KGIpLE1hdGguc3FydCgxLWIpKSkudG9GaXhlZCgyKX07YS5nZXREaXN0YW5jZUdtYXBzPQpmdW5jdGlvbihiLGMpe3JldHVybiBhLmdldERpc3RhbmNlSGF2ZXJzaW5lKGIsYyl9fTsKLyoqIC9tL2pzL3ByaW50VGhpcy5qcyAqKi8KdmFyIF9fX2QyY19wcmludFRoaXNqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjQwIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19wcmludFRoaXNqc19jX29uPSIyMDI0LTA3LTMwIDEwOjMwOjA4IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihjKXtmdW5jdGlvbiByKGQsZSl7ZSYmZC5hcHBlbmQoZS5qcXVlcnk\/ZS5jbG9uZSgpOmUpfWZ1bmN0aW9uIHQoZCxlLGspe3ZhciBmPWUuY2xvbmUoay5mb3JtVmFsdWVzKTtrLmZvcm1WYWx1ZXMmJnUoZSxmLCJzZWxlY3QsIHRleHRhcmVhIik7ay5yZW1vdmVTY3JpcHRzJiZmLmZpbmQoInNjcmlwdCIpLnJlbW92ZSgpO2sucHJpbnRDb250YWluZXI\/Zi5hcHBlbmRUbyhkKTpmLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLmNoaWxkcmVuKCkuYXBwZW5kVG8oZCl9KX1mdW5jdGlvbiB1KGQsZSxrKXt2YXIgZj1kLmZpbmQoayk7ZS5maW5kKGspLmVhY2goZnVuY3Rpb24oZyxxKXtjKHEpLnZhbChmLmVxKGcpLnZhbCgpKX0pfXZhciBhO2MuZm4ucHJpbnRUaGlzPWZ1bmN0aW9uKGQpe2E9Yy5leHRlbmQoe30sYy5mbi5wcmludFRoaXMuZGVmYXVsdHMsZCk7dmFyIGU9dGhpcyBpbnN0YW5jZW9mIGpRdWVyeT90aGlzOmModGhpcyk7ZD0icHJpbnRUaGlzLSIrKG5ldyBEYXRlKS5nZXRUaW1lKCk7CmlmKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSE9PWRvY3VtZW50LmRvbWFpbiYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvbXNpZS9pKSl7dmFyIGs9J2phdmFzY3JpcHQ6ZG9jdW1lbnQud3JpdGUoIjxoZWFkPjxzY3JpcHQ+ZG9jdW1lbnQuZG9tYWluPVxcIicrZG9jdW1lbnQuZG9tYWluKydcXCI7XHgzYy9zY3JpcHQ+PC9oZWFkPjxib2R5PjwvYm9keT4iKScsZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtmLm5hbWU9InByaW50SWZyYW1lIjtmLmlkPWQ7Zi5jbGFzc05hbWU9Ik1TSUUiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZik7Zi5zcmM9a31lbHNlIGMoIjxpZnJhbWUgaWQ9JyIrZCsiJyBuYW1lPSdwcmludElmcmFtZScgLz4iKS5hcHBlbmRUbygiYm9keSIpO3ZhciBnPWMoIiMiK2QpO2EuZGVidWd8fGcuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOiIwcHgiLGhlaWdodDoiMHB4IixsZWZ0OiItNjAwcHgiLHRvcDoiLTYwMHB4In0pOwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcShiLHApe2I9Yi5nZXQoMCk7Yj1iLmNvbnRlbnRXaW5kb3d8fGIuY29udGVudERvY3VtZW50fHxiO2I9Yi5kb2N1bWVudHx8Yi5jb250ZW50RG9jdW1lbnR8fGI7Yi5vcGVuKCk7Yi53cml0ZShwKTtiLmNsb3NlKCl9YS5kb2N0eXBlU3RyaW5nJiZxKGcsYS5kb2N0eXBlU3RyaW5nKTt2YXIgbT1nLmNvbnRlbnRzKCksbD1tLmZpbmQoImhlYWQiKSxuPW0uZmluZCgiYm9keSIpLGg9YygiYmFzZSIpO2g9ITA9PT1hLmJhc2UmJjA8aC5sZW5ndGg\/aC5hdHRyKCJocmVmIik6InN0cmluZyI9PT10eXBlb2YgYS5iYXNlP2EuYmFzZTpkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK2RvY3VtZW50LmxvY2F0aW9uLmhvc3Q7bC5hcHBlbmQoJzxiYXNlIGhyZWY9IicraCsnIj4nKTthLmltcG9ydENTUyYmYygibGlua1tyZWw9c3R5bGVzaGVldF0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKS5hdHRyKCJocmVmIik7aWYoYil7dmFyIHA9CmModGhpcykuYXR0cigibWVkaWEiKXx8ImFsbCI7bC5hcHBlbmQoIjxsaW5rIHR5cGU9J3RleHQvY3NzJyByZWw9J3N0eWxlc2hlZXQnIGhyZWY9JyIrYisiJyBtZWRpYT0nIitwKyInLz4iKX19KTthLmltcG9ydFN0eWxlJiZjKCJzdHlsZSIpLmVhY2goZnVuY3Rpb24oKXtsLmFwcGVuZCh0aGlzLm91dGVySFRNTCl9KTthLnBhZ2VUaXRsZSYmbC5hcHBlbmQoIjx0aXRsZT4iK2EucGFnZVRpdGxlKyI8L3RpdGxlPiIpO2EubG9hZENTUyYmKEFycmF5LmlzQXJyYXkoYS5sb2FkQ1NTKT9qUXVlcnkuZWFjaChhLmxvYWRDU1MsZnVuY3Rpb24oYixwKXtsLmFwcGVuZCgiPGxpbmsgdHlwZT0ndGV4dC9jc3MnIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nIit0aGlzKyInLz4iKX0pOmwuYXBwZW5kKCI8bGluayB0eXBlPSd0ZXh0L2NzcycgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSciK2EubG9hZENTUysiJy8+IikpO2lmKGg9YS5jb3B5VGFnQ2xhc3NlcyloPSEwPT09aD8iYmgiOmgsLTEhPT1oLmluZGV4T2YoImIiKSYmCm4uYWRkQ2xhc3MoYygiYm9keSIpWzBdLmNsYXNzTmFtZSksLTEhPT1oLmluZGV4T2YoImgiKSYmbS5maW5kKCJodG1sIikuYWRkQ2xhc3MoYygiaHRtbCIpWzBdLmNsYXNzTmFtZSk7cihuLGEuaGVhZGVyKTtpZihhLmNhbnZhcyl7dmFyIHY9MDtlLmZpbmQoImNhbnZhcyIpLmFkZEJhY2soImNhbnZhcyIpLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLmF0dHIoImRhdGEtcHJpbnR0aGlzIix2KyspfSl9dChuLGUsYSk7YS5jYW52YXMmJm4uZmluZCgiY2FudmFzIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcykuZGF0YSgicHJpbnR0aGlzIik7Yj1jKCdbZGF0YS1wcmludHRoaXM9IicrYisnIl0nKTt0aGlzLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGJbMF0sMCwwKTtiLnJlbW92ZURhdGEoInByaW50dGhpcyIpfSk7YS5yZW1vdmVJbmxpbmUmJihpc0Z1bmN0aW9uKGMucmVtb3ZlQXR0cik\/bS5maW5kKCJib2R5ICoiKS5yZW1vdmVBdHRyKCJzdHlsZSIpOm0uZmluZCgiYm9keSAqIikuYXR0cigic3R5bGUiLAoiIikpO3IobixhLmZvb3Rlcik7c2V0VGltZW91dChmdW5jdGlvbigpe2cuaGFzQ2xhc3MoIk1TSUUiKT8od2luZG93LmZyYW1lcy5wcmludElmcmFtZS50cmlnZ2VyKCJmb2N1cyIpLGwuYXBwZW5kKCI8c2NyaXB0PiAgd2luZG93LnByaW50KCk7IFx4M2Mvc2NyaXB0PiIpKTpkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoInByaW50Iik\/Z1swXS5jb250ZW50V2luZG93LmRvY3VtZW50LmV4ZWNDb21tYW5kKCJwcmludCIsITEsbnVsbCk6KGdbMF0uY29udGVudFdpbmRvdy50cmlnZ2VyKCJmb2N1cyIpLGdbMF0uY29udGVudFdpbmRvdy5wcmludCgpKTthLmRlYnVnfHxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5yZW1vdmUoKX0sMUUzKX0sYS5wcmludERlbGF5KX0sMzMzKX07Yy5mbi5wcmludFRoaXMuZGVmYXVsdHM9e2RlYnVnOiExLGltcG9ydENTUzohMCxpbXBvcnRTdHlsZTohMSxwcmludENvbnRhaW5lcjohMCxsb2FkQ1NTOiIiLHBhZ2VUaXRsZToiIixyZW1vdmVJbmxpbmU6ITEsCnByaW50RGVsYXk6MzMzLGhlYWRlcjpudWxsLGZvb3RlcjpudWxsLGZvcm1WYWx1ZXM6ITAsY2FudmFzOiExLGJhc2U6ITEsZG9jdHlwZVN0cmluZzoiPCFET0NUWVBFIGh0bWw+IixyZW1vdmVTY3JpcHRzOiExLGNvcHlUYWdDbGFzc2VzOiExfX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9wb3B1cC5qcyAqKi8KdmFyIF9fX2QyY19wb3B1cGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTE6MjciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3BvcHVwanNfY19vbj0iMjAyNC0wMy0xNSAxMDozMDoxMCI7InVzZSBzdHJpY3QiO3ZhciBhY3RpdmF0ZWRQb3B1cERpdklEPSIiLG1haW5Qb3B1cERpdklEPSIiLHBvcHVwT25BZnRlclN1Ym1pdENsb3NlPSExLGlzUG9wdXBJbml0aWFsaXplZD0hMTsKZnVuY3Rpb24gc2hvd1BvcHVwV2lkZ2V0KGEsYj0hMCl7dmFyIGM9ITE9PT1iPyExOiEwO2lmKGlzU21zVGV4dFVzRm9ybSgpJiZiKXJldHVybiBzaG93U21zVGV4dFVzRm9ybShjKSwhMTtpZighMT09PWlzUG9wdXBJbml0aWFsaXplZClyZXR1cm4hMTthPWE\/YTp7fTtzZXR0aW5ncz17c2hvd01haW5Qb3B1cDohMSxkb05vdFJlZGlyZWN0OiExLGV2ZW50VHlwZToiY2xpY2siLGRlbGF5OiExfTskLmV4dGVuZChzZXR0aW5ncyxhKTthPXNldHRpbmdzLmRvTm90UmVkaXJlY3Q7Yj1zZXR0aW5ncy5ldmVudFR5cGU7Yz1zZXR0aW5ncy5kZWxheTt2YXIgZD0wPGFjdGl2YXRlZFBvcHVwRGl2SUQubGVuZ3RoP2FjdGl2YXRlZFBvcHVwRGl2SUQ6ITE7ITA9PT1zZXR0aW5ncy5zaG93TWFpblBvcHVwJiYwPG1haW5Qb3B1cERpdklELmxlbmd0aCYmKGQ9bWFpblBvcHVwRGl2SUQpO2lmKGQmJjA8ZC5sZW5ndGgpJCgiIyIrZCkucG9wdXBpemUoKS5zZXRUcmlnZ2VyKGIpLm9wZW4oYyk7ZWxzZSBpZigiZnVuY3Rpb24iPT09CnR5cGVvZiBzaG93UG9wdXBXaWRnZXRPTEQpc2hvd1BvcHVwV2lkZ2V0T0xEKCExKTtlbHNlIGlmKCExPT09YSkwPCQoIiNwcm9tb1NlY3Rpb25uYWJsZWQiKS5sZW5ndGgmJiIwIiE9JCgiI3Byb21vU2VjdGlvbm5hYmxlZCIpLnZhbCgpP3dpbmRvdy5sb2NhdGlvbi5ocmVmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyIvb3VyLXByb21vdGlvbnMuaHRtbCI6Ii9wcm9tb3Rpb25zLmh0bWwiOndpbmRvdy5sb2NhdGlvbi5ocmVmPSIvIjtlbHNlIHJldHVybiExfWZ1bmN0aW9uIHBvcHVwUG9zdE1lc3NhZ2VPbkF1dG9hdWJhaW5lKCl7c2V0VGltZW91dChmdW5jdGlvbigpeyQucG9zdE1lc3NhZ2UoImNsb3NlUG9wdXAiLCIqIixwYXJlbnQpfSwxRTMpfQpmdW5jdGlvbiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZShhLGIsYyxkLGUsZixnKXtpc1BvcHVwSW5pdGlhbGl6ZWQ9ITA7YyYmKG1haW5Qb3B1cERpdklEPWYrZCk7cmV0dXJuIGI9PWEmJmN8fCJyZXNldCI9PWImJmM\/KGFjdGl2YXRlZFBvcHVwRGl2SUQ9ZitkLCJ1c2VkY2Fycy5odG1sIiE9ZXx8Zz8ibmV3Y2Fycy5odG1sIiE9ZXx8Zz8hMDooY29uc29sZS5sb2coInBvcHVwLmpzIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIC0gbmV3Y2FycyByZXR1cm5zIGZhbHNlLiBQb3B1cCBtYXkgYmUgY2FuY2VsbGVkLiIpLCExKToodGhpcy5jb25zb2xlJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBjb25zb2xlLmxvZyYmY29uc29sZS5sb2coInBvcHVwLmpzIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIC0gdXNlZGNhcnMgIHJldHVybnMgZmFsc2UuIFBvcHVwIG1heSBiZSBjYW5jZWxsZWQuIiksITEpKTohMX0KZnVuY3Rpb24gcG9wdXBjbG9zZVBERihhLGIpeyQoIiNwb3B1cGRpdnBkZiIrYSkubGVuZ3RoJiYkKCIjcG9wdXBkaXZwZGYiK2EpLmNzcygiZGlzcGxheSIsIm5vbmUiKTskKCIjcG9wdXBkaWZwZGZtb2RhbCIpLmxlbmd0aCYmJCgiI3BvcHVwZGlmcGRmbW9kYWwiKS5yZW1vdmUoKTskKCIjcG9wdXBkaXZwZGZpZnJhbWUiKS5sZW5ndGgmJiQoIiNwb3B1cGRpdnBkZmlmcmFtZSIpLnJlbW92ZSgpO2ImJnBvcHVwUG9zdE1lc3NhZ2VPbkF1dG9hdWJhaW5lKCl9ZnVuY3Rpb24gcHJpbnRQREZJRnJhbWUoKXt3aW5kb3cuZnJhbWVzLnBvcHVwZGl2cGRmaWZyYW1lLnByaW50TWUoKX1mdW5jdGlvbiBwb3B1cFRyaW0oYSl7cmV0dXJuIGEucmVwbGFjZSgvXlxzK3xccyskL2dtLCIiKX0KZnVuY3Rpb24gc2hvd1BvcHVwV2lkZ2V0QWRkVmVoaWNsZShhKXskKCdpbnB1dFtuYW1lPSJzZWFyY2hlZHZlaGljbGUiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnZhbChhKX0pO3Nob3dQb3B1cFdpZGdldCgpfWZ1bmN0aW9uIHNob3dTcGVjaWFsU2NoZWR1bGVPbmxvYWQoKXt2YXIgYT0kKCIjc3BlY2lhbFNjaGVkdWxlIik7MDxhLmxlbmd0aCYmYS5wb3B1cGl6ZSh7c2hvd29ubG9hZDohMCxjb29raWVOYW1lOiJzcFNjaGVkdWxlRGlzcGxheWVkIixjb29raWVDcmVhdGU6Im9uT3BlbiIsY2xvc2VCdXR0b246ITB9KX1mdW5jdGlvbiBzaG93U3BlY2lhbFNjaGVkdWxlKCl7JCgiI3NwZWNpYWxTY2hlZHVsZSIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9ZnVuY3Rpb24gc2hvd1RyYWRlQm9vc3RQb3B1cCgpeyQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfQpmdW5jdGlvbiBpc1Ntc1RleHRVc0Zvcm0oKXtsZXQgYT1bIm5ld2NhcmRldGFpbC5odG1sIiwibmV3Y2Fycy5odG1sIl0sYj1bImNhcmRldGFpbC5odG1sIiwidXNlZGNhcnMuaHRtbCJdO3JldHVybiIxIj09JCgiI0Rpc2NvdW50UG9wdXBOZXdSZWJhdGVTaG93VGV4dFVzIikudmFsKCkmJmEuaW5jbHVkZXMoJCgiI1BBR0VJRCIpLnZhbCgpKXx8IjEiPT0kKCIjRGlzY291bnRQb3B1cFVzZWRSZWJhdGVTaG93VGV4dFVzIikudmFsKCkmJmIuaW5jbHVkZXMoJCgiI1BBR0VJRCIpLnZhbCgpKT8hMDohMX1mdW5jdGlvbiBzaG93U21zVGV4dFVzRm9ybShhPSEwKXskKCIjaXNNb2JpbGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzTW9iaWxlIikudmFsKCkmJiExIT09YT9kZWFsZXJMaW5lU21zKCk6ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NsaWRlaXQgI29wZW4taXRlbSIpLmNoZWNrZWQ9ITB9OwovKiogL20vanMvbXVsdGlGb3JtUG9wdXAuanMgKiovCnZhciBfX19kMmNfbXVsdGlGb3JtUG9wdXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjU2IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19tdWx0aUZvcm1Qb3B1cGpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzQ6MDAiOyJ1c2Ugc3RyaWN0IjsKZnVuY3Rpb24gbXVsdGlGb3JtUG9wdXBJbml0aWFsaXplKGEpe2E9YXx8Im11bHRpZm9ybVBvcHVwQ29udGFpbmVyIjskKGAjJHthfWApLmZpbmQoIiNtdWx0aWZvcm1fYnRuXzEgIikub24oImNsaWNrIHRvdWNoIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7JC52YWxpZGl0eS5zdGFydCgpOyQoYCMke2F9YCkuZmluZCgiI211bHRpZm9ybV9wb3N0YWwiKS5yZXF1aXJlKCkucmVxdWlyZVBvc3RhbENvZGUoKTtpZigkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKXtiPSQoIiNtdWx0aWZvcm1fcG9zdGFsIikudmFsKCk7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50PygidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsYiwiVXNlckZvcm0ucG9zdGFsIiksYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChiLAoiVXNlckZvcm0ucG9zdGFsIikpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsYiwiVXNlckZvcm0ucG9zdGFsIik7JChgIyR7YX1gKS5maW5kKCIubXVsdGlmb3JtX2NpcmNsZTIiKS5jc3Moe2JhY2tncm91bmRDb2xvcjokKCIubXVsdGlmb3JtX2NpcmNsZTEiKS5jc3MoImJhY2tncm91bmRDb2xvciIpLGNvbG9yOiQoIi5tdWx0aWZvcm1fY2lyY2xlMSIpLmNzcygiY29sb3IiKX0pOyQoYCMke2F9YCkuZmluZCgiLm11bHRpZm9ybV9jaXJjbGUxIikuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6IiNmZmYiLGNvbG9yOiIjMzMzIn0pOyQoYCMke2F9YCkuZmluZCgiLm11bHRpZm9ybV9zdGVwMSIpLmhpZGUoKTskKGAjJHthfWApLmZpbmQoIi5tdWx0aWZvcm1fc3RlcDIiKS5zaG93KCk7KG5ldyBGb3JtKS5tYXNrUGhvbmUoIiNtdWx0aWZvcm1fc21zIik7Yj0kKCIuYnJhbmRlbWFpbCIpLmxlbmd0aD8kKCIuYnJhbmRlbWFpbCIpLnZhbCgpOiIiOwp2YXIgYz0kKCIubW9kZWxlbWFpbCIpLmxlbmd0aD8kKCIubW9kZWxlbWFpbCIpLnZhbCgpOiIiLGQ9JCgiLnllYXJlbWFpbCIpLmxlbmd0aD8kKCIueWVhcmVtYWlsIikudmFsKCk6IiI7Yi5sZW5ndGgmJmMubGVuZ3RoJiZkLmxlbmd0aCYmJChgIyR7YX1gKS5maW5kKCIjc2VhcmNoZWR2ZWhpY2xlIikudmFsKGIrIiAiK2MrIiAiK2QpOyQoYCMke2F9YCkuZmluZCgiI211bHRpZm9ybV9mb3JtVyAubXVsdGlmb3JtX3N0ZXAyIGlucHV0OmZpcnN0IikudHJpZ2dlcigiZm9jdXMiKTskKGAjJHthfWApLmZpbmQoIiNtdWx0aWZvcm1fZm9ybVcgI3NlYXJjaGVkdmVoaWNsZSIpLmxlbmd0aCYmbnVsbCE9Q29va2llcy5nZXQoImxhc3R2aWV3ZWR2ZWhpY2xlIikmJiQoYCMke2F9YCkuZmluZCgiI211bHRpZm9ybV9mb3JtVyAjc2VhcmNoZWR2ZWhpY2xlIikudmFsKENvb2tpZXMuZ2V0KCJsYXN0dmlld2VkdmVoaWNsZSIpLnJlcGxhY2VBbGwoInx8fCIsIiAiKSl9fSl9OwovKiogL20vanMvcGRmUG9wdXAuanMgKiovCnZhciBfX19kMmNfcGRmUG9wdXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjI1IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19wZGZQb3B1cGpzX2Nfb249IjIwMjUtMDQtMjggMTQ6MzA6MTkiOyJ1c2Ugc3RyaWN0IjsKZnVuY3Rpb24gc3VibWl0U3BlY3NOZXdQZGZSZXF1ZXN0KCl7dmFyIGE9JCgiLmVtYWlsU3ViamVjdCIsIiNwb3B1cFRlY2hTcGVjc05ld0RpdiIpLnRleHQoKSxkPSQoIi5lbWFpbEJvZHkiLCIjcG9wdXBUZWNoU3BlY3NOZXdEaXYiKS5odG1sKCksYz0kKCIjY2xpZW50RW1haWwiLCIjcG9wdXBUZWNoU3BlY3NOZXdEaXYiKS52YWwoKSxiPSQoIiNjbGllbnRTbXMiLCIjcG9wdXBUZWNoU3BlY3NOZXdEaXYiKS52YWwoKSxmPSJ1bmRlZmluZWQiIT0kKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKCk\/JCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbCgpOiIiLGc9InVuZGVmaW5lZCIhPSQoImlucHV0Lm1vZGVsZW1haWwiKS52YWwoKT8kKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKCk6IiIsaD0idW5kZWZpbmVkIiE9JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKCk\/JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKCk6IiI7ZD1kLnJlcGxhY2UoL3tcJENMSUVOVEVNQUlMfS9nLGMpO2Q9ZC5yZXBsYWNlKC97XCRDTElFTlRQSE9ORX0vZywKYik7ZW1haWxIYW5kbGVyLnN1YmplY3Q9YTtlbWFpbEhhbmRsZXIuYm9keT1kO2VtYWlsSGFuZGxlci5zZW5kVG89JCgiI3RleHRTZW5kVG9FbWFpbCIpLnZhbCgpO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpO2VtYWlsSGFuZGxlci5tYWlsSUQ9IlNwZWNzUmVxdWVzdE5ldyI7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1jO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9YjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJOZXciOzA8Zi5sZW5ndGgmJihlbWFpbEhhbmRsZXIubWFrZT1mKTswPGcubGVuZ3RoJiYoZW1haWxIYW5kbGVyLm1vZGVsPWcpOzA8aC5sZW5ndGgmJihlbWFpbEhhbmRsZXIueWVhcj1oKTt2YXIgZT1nZXRNYWlsU2VudEhhbmRsZXIoIl9wb3B1cFRlY2hTcGVjc05ld0RpdiIpO2VtYWlsSGFuZGxlci5jYWxsYmFjaz1mdW5jdGlvbihrKXtrPyJ1bmRlZmluZWQiIT10eXBlb2YgZSYmZS5zaG93U3VjY2VzcygpOiJ1bmRlZmluZWQiIT0KdHlwZW9mIGUmJmUuc2hvd0ZhaWwoKX07ZW1haWxIYW5kbGVyLnNlbmRNYWlsKCk7JCgiI3BvcHVwVGVjaFNwZWNzTmV3RGl2IikucG9wdXBpemUoKS5jbG9zZSgpfXZhciBnbG9iYWxMb2NhbGU9dm9pZCAwO2Z1bmN0aW9uIGlzTG9jYWxlKGEpe3ZvaWQgMD09PWdsb2JhbExvY2FsZSYmKGdsb2JhbExvY2FsZT0kKCIjdGV4dExhbmd1YWdlRGV0YWlsIikudmFsKCkpO3JldHVybiBnbG9iYWxMb2NhbGUudG9Mb3dlckNhc2UoKT09YS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGlzRW5nbGlzaCgpe3JldHVybiBpc0xvY2FsZSgiRU5HTElTSCIpfWZ1bmN0aW9uIGlzRnJlbmNoKCl7cmV0dXJuIGlzTG9jYWxlKCJGUkVOQ0giKX1mdW5jdGlvbiBwcmludFNwZWNzKCl7dmFyIGE9KGlzRW5nbGlzaCgpPyIvdXNlZC8iOiIvb2NjYXNpb24vIikrJCgiI3BvcHVwVGVjaFNwZWNzRGl2ICNwcmludFBhZ2UiKS5hdHRyKCJocmVmIik7d2luZG93Lm9wZW4oYSk7cmV0dXJuITF9CmZ1bmN0aW9uIHByaW50U3BlY3NOZXcoKXt2YXIgYT0kKCJpbnB1dCNzcGVjQnJvY2h1cmVVcmkiKS52YWwoKXx8JCgiI3NwZWNCcm9jaHVyZVVyaU5ldyIpLnZhbCgpO3dpbmRvdy5vcGVuKGEpO3JldHVybiExfQpmdW5jdGlvbiBzZW5kU3BlY3NOZXdQZGZSZXF1ZXN0KCl7JC52YWxpZGl0eS5zdGFydCgpO3ZhciBhPTA8JCgiI2NsaWVudFNtcyIsIiNwb3B1cFRlY2hTcGVjc05ld0RpdiIpLnZhbCgpLmxlbmd0aD8hMDohMTthPyQoIiNjbGllbnRTbXMiLCIjcG9wdXBUZWNoU3BlY3NOZXdEaXYiKS5yZXF1aXJlKCkudmFsaWRhdGVNb2JpbGUoKTokKCIjY2xpZW50RW1haWwiLCIjcG9wdXBUZWNoU3BlY3NOZXdEaXYiKS5yZXF1aXJlKCkudmFsaWRFbWFpbEFkZHJlc3MoKTtpZigkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKXt2YXIgZD0iIixjPXt9O2E\/ZD0oIkVOR0xJU0giPT0kKCIjdGV4dExhbmd1YWdlIikudmFsKCk\/Ii9lbiI6Ii9mciIpKyIvYWpheC9TZW5kU21zP3dzd2lkdGg9MCI6KGMuZW1haWw9JCgiI2NsaWVudEVtYWlsIiwiI3BvcHVwVGVjaFNwZWNzTmV3RGl2IikudmFsKCksZD0kKCIjcHJpbnRQYWdlIiwiI3BvcHVwVGVjaFNwZWNzTmV3RGl2IikuYXR0cigiaHJlZiIpKwoiJmVtYWlsPSIrYy5lbWFpbCk7Yy5waG9uZT0kKCIjY2xpZW50U21zIiwiI3BvcHVwVGVjaFNwZWNzTmV3RGl2IikudmFsKCk7Yy5tYWtlPSQoJ1tuYW1lPSJicmFuZCJdJykudmFsKCk7Yy5tb2RlbD0kKCdbbmFtZT0ibW9kZWwiXScpLnZhbCgpO2MueWVhcj0kKCdbbmFtZT0ieWVhciJdJykudmFsKCk7JC5hamF4KHthc3luYzohMSx1cmw6ZCxkYXRhOmMsc3VjY2VzczpmdW5jdGlvbihiKXtiPUpTT04ucGFyc2UoYik7InVuZGVmaW5lZCIhPT10eXBlb2YgYi5tZXNzYWdlJiZjb25zb2xlLmxvZyhiLm1lc3NhZ2UpOyQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlX3BvcHVwVGVjaFNwZWNzTmV3RGl2IHNwYW4uc3VjY2VzcyIpLmh0bWwoJCgiI1JFUVVFU1RfU0VOVCIpLnZhbCgpKTtzdWJtaXRTcGVjc05ld1BkZlJlcXVlc3QoKX0sZmFpbHVyZTpmdW5jdGlvbihiKXtjb25zb2xlLmxvZygiYWpheCBmYWlsdXJlIixzYXZlSGFuZGxlci5mYWlsTWVzc2FnZSsiXG4iK2IpOyQoIiNwb3B1cFRlY2hTcGVjc05ld0RpdiAuY2xvc2UtcmV2ZWFsLW1vZGFsIikudHJpZ2dlcigiY2xpY2siKX0sCmVycm9yOmZ1bmN0aW9uKGIsZixnKXskKCIjcG9wdXBUZWNoU3BlY3NOZXdEaXYgLmNsb3NlLXJldmVhbC1tb2RhbCIpLnRyaWdnZXIoImNsaWNrIik7Y29uc29sZS5sb2coImFqYXggZXJyb3IiLGIucmVzcG9uc2VUZXh0KX19KX19ZnVuY3Rpb24gc2hvd1NwZWNzUmVxdWVzdE5ld1BvcHVwKCl7JCgiI3BvcHVwVGVjaFNwZWNzTmV3RGl2IikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKTtyZXR1cm4hMX0KZnVuY3Rpb24gc2VuZFNtcyhhLGQsYyl7JC52YWxpZGl0eS5zdGFydCgpO3ZhciBiPSJORVciPT1jPyJuZXciOiIiO2xldCBmPSJORVciPT1jPyJOZXciOiIiOyJNb2JpbGUtUmVxdWVzdE1vbnRobHlQYXltZW50cyI9PWQ\/JChgI2NsaWVudE5hbWUke2J9YCwiI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyIikucmVxdWlyZSgpLm5vbkh0bWwoKTooJChgI2NsaWVudFNtcyR7Yn1gLGAjcG9wdXBUZWNoU3BlY3Mke2Z9RGl2YCkucmVxdWlyZSgpLnZhbGlkYXRlTW9iaWxlKCksJChgI2NsaWVudE5hbWUke2J9YCxgI3BvcHVwVGVjaFNwZWNzJHtmfURpdmApLnJlcXVpcmUoKS5ub25IdG1sKCkpO2lmKCQudmFsaWRpdHkuZW5kKCkudmFsaWQpe3ZhciBnPSQoYCNjbGllbnROYW1lJHtifWAsYCNwb3B1cFRlY2hTcGVjcyR7Zn1EaXZgKS52YWwoKSxoPSQoYCNjbGllbnRTbXMke2J9YCxgI3BvcHVwVGVjaFNwZWNzJHtmfURpdmApLnZhbCgpO2I9JChgI2NsaWVudEVtYWlsJHtifWAsCmAjcG9wdXBUZWNoU3BlY3Mke2Z9RGl2YCkudmFsKCk7aWYoIm9iamVjdCI9PT10eXBlb2YgZGVhbGVyU21zTnVtYmVyKXthPXtkZXB0OiQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS5sZW5ndGgmJiIxIj09JCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLnZhbCgpPyJORVciOmVtYWlsSGFuZGxlcj9lbWFpbEhhbmRsZXIuZ2V0RGVwKCk6Yy50b1VwcGVyQ2FzZSgpLG1lc3NhZ2VUeXBlOmEsdXNlck5hbWU6Zyx1c2VyUGhvbmU6aCx1c2VyRW1haWw6Yn07Yz0kKCIjcGhvbmVteWVhciIpLmxlbmd0aD8kKCIjcGhvbmVteWVhciIpLnZhbCgpOiIiO2c9JCgiI3Bob25lbWFrZSIpLmxlbmd0aD8kKCIjcGhvbmVtYWtlIikudmFsKCk6IiI7aD0kKCIjcGhvbmVtb2RlbCIpLmxlbmd0aD8kKCIjcGhvbmVtb2RlbCIpLnZhbCgpOiIiO2I9JCgiI3Bob25lc3RvY2tudW1iZXIiKS5sZW5ndGg\/JCgiI3Bob25lc3RvY2tudW1iZXIiKS52YWwoKToiIjtvd25lcklkPSQoIiN2ZWhpY2xlT3duZXJJZCIpLmxlbmd0aD8KJCgiI3ZlaGljbGVPd25lcklkIikudmFsKCk6IiI7IiIhPT1nJiYoYS5tYWtlPWcpOyIiIT09aCYmKGEubW9kZWw9aCk7IiIhPT1jJiYoYS55ZWFyPWMpOyIiIT09YiYmKGEuc3RvY2tOdW1iZXI9Yik7IiIhPT1vd25lcklkJiYoYS5kZWFsZXJJZD1vd25lcklkKTthLnZlaGljbGVJZD0iIjthLlZJTj0iIjthLnByaWNlPSIiO2EubW9kZWxJZD0iIjtpZihzaXRlUGFnZS5uYW1lPSJvYmplY3QiPT09dHlwZW9mIHNlYXJjaERldGFpbHMmJiJvYmplY3QiPT09dHlwZW9mIHNlYXJjaERldGFpbHMudmVoaWNsZSlhLnZlaGljbGVJZD1zZWFyY2hEZXRhaWxzLnZlaGljbGVJRHx8IiIsYS5WSU49c2VhcmNoRGV0YWlscy52ZWhpY2xlLk5JVnx8IiIsYS5wcmljZT1zZWFyY2hEZXRhaWxzLnZlaGljbGUucHJpY2V8fCIiO2lmKHNpdGVQYWdlLm5hbWU9Im9iamVjdCI9PT10eXBlb2YgbmV3Y2FyRGV0YWlscyYmIm9iamVjdCI9PT10eXBlb2YgbmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbClhLm1vZGVsSWQ9Cm5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwuaWR8fCIiO2RlYWxlclNtc051bWJlci5nZXRTbXNOdW1iZXIoYSxmdW5jdGlvbihlKXtpZighMSE9PWUpeyJvYmplY3QiPT09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGQsZS5zbXNtZXNzYWdlKTt2YXIgaz0vV2luZG93c1xzUGhvbmUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPyI\/IjoiPyYiO2U9InNtczoiK2Uuc21zbnVtYmVyK2srImJvZHk9IitlbmNvZGVVUklDb21wb25lbnQoZS5zbXNtZXNzYWdlKTtjb25zb2xlLmxvZygiU01TSFJFRjoiLGUpO3dpbmRvdy5sb2NhdGlvbi5ocmVmPWV9fSl9fX0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXskKCIjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXJfc21zIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBhPSQoIiNwaG9uZW1ha2UiKS52YWwoKSsiLSIrJCgiI3Bob25lbW9kZWwiKS52YWwoKSsiLSIrJCgiI3Bob25lbXllYXIiKS52YWwoKTtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkNvdXJyaWVscyIsIiBEZW1hbmRlIGRlIG1lbnN1YWxpdOlzICh26WhpY3VsZSBkJ29jY2FzaW9uKSIsIkRlbWFuZGVzLSIrYSwxKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiQ291cnJpZWxzLWRlcHQiLCJPY2Nhc2lvbiIsYSwxKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiQ291cnJpZWxzLXBhZ2UiLCJVc2VkLVZEUCIsIiBEZW1hbmRlIGRlIG1lbnN1YWxpdOlzICh26WhpY3VsZSBkJ29jY2FzaW9uKSIsMSl9KX0pOwovKiogL20vanMvbmViQ2FsL25lYkRhdGVGbi5qcyAqKi8KdmFyIF9fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDI1LTA1LTIzIDE3OjA0OjI0IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDI0LTAxLTMxIDE0OjMxOjU3IjsidXNlIHN0cmljdCI7X19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzI6MjMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbmViRGF0ZUZuanNfY19vbj0iMjAyMy0wMS0xMiAxMDo0MjoxNiI7InVzZSBzdHJpY3QiO19fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDIxLTEyLTE1IDEyOjM4OjM5IjsidXNlIHN0cmljdCI7Y29uc3QgbmViRGF0ZUZuPXt9OwokKCJib2R5IikuaGFzQ2xhc3MoIkZSRU5DSCIpPyQubmViTGFuZz17bW9udGhOYW1lczoiSmFudmllciBGJmVhY3V0ZTt2cmllciBNYXJzIEF2cmlsIE1haSBKdWluIEp1aWxsZXQgQW8mdWNpcmM7dCBTZXB0ZW1icmUgT2N0b2JyZSBOb3ZlbWJyZSBEJmVhY3V0ZTtjZW1icmUiLnNwbGl0KCIgIiksbW9udGhOYW1lc1Nob3J0OiJKYW52LiBGJmVhY3V0ZTt2ci4gTWFycyBBdnIuIE1haSBKdWluIEp1aWwuIEFvJnVjaXJjO3QgU2VwdC4gT2N0LiBOb3YuIEQmZWFjdXRlO2MuIi5zcGxpdCgiICIpLGRheU5hbWVzOiJEaW1hbmNoZSBMdW5kaSBNYXJkaSBNZXJjcmVkaSBKZXVkaSBWZW5kcmVkaSBTYW1lZGkiLnNwbGl0KCIgIiksZGF5TmFtZXNTaG9ydDoiRGltIEx1biBNYXIgTWVyIEpldSBWZW4gU2FtIi5zcGxpdCgiICIpLGRheU5hbWVzTWluOiJEaSBMdSBNYSBNZSBKZSBWZSBTYSIuc3BsaXQoIiAiKSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoieS1NLWQiLGZpcnN0RGF5OjEsCmlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIiLGludmFsaWREYXRlRm9ybWF0OiJpbnZhbGlkX2RhdGUifTokLm5lYkxhbmc9e21vbnRoTmFtZXM6IkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIiksbW9udGhOYW1lc1Nob3J0OiJKYW4uIEZlYi4gTWFyLiBBcHIuIE1heSBKdW4uIEp1bC4gQXVnLiBTZXB0LiBPY3QuIE5vdi4gRGVjLiIuc3BsaXQoIiAiKSxkYXlOYW1lczoiU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXkiLnNwbGl0KCIgIiksZGF5TmFtZXNTaG9ydDoiU3VuIE1vbiBUdWUgV2VkIFRodSBGcmkgU2F0Ii5zcGxpdCgiICIpLGRheU5hbWVzTWluOiJTdSBNbyBUdSBXZSBUaCBGciBTYSIuc3BsaXQoIiAiKSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoieS1NLWQiLApmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIiLGludmFsaWREYXRlRm9ybWF0OiJpbnZhbGlkX2RhdGUifTtEYXRlLkxaPWZ1bmN0aW9uKGEpe3JldHVybigwPmF8fDk8YT8iIjoiMCIpK2F9O25lYkRhdGVGbi5MWj1mdW5jdGlvbihhKXtyZXR1cm4oMD5hfHw5PGE\/IiI6IjAiKSthfTtEYXRlLnByZWZlckFtZXJpY2FuRm9ybWF0PSEwO25lYkRhdGVGbi5jbGVhclRpbWU9ZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIERhdGUmJihhLnNldEhvdXJzKDApLGEuc2V0TWludXRlcygwKSxhLnNldFNlY29uZHMoMCksYS5zZXRNaWxsaXNlY29uZHMoMCkpO3JldHVybiBhfTsKRGF0ZS5wcm90b3R5cGUudG9NeXNxbEZvcm1hdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEZ1bGxZZWFyKCkrIi0iK0RhdGUuTFooMSt0aGlzLmdldE1vbnRoKCkpKyItIitEYXRlLkxaKHRoaXMuZ2V0RGF0ZSgpKSsiICIrRGF0ZS5MWih0aGlzLmdldEhvdXJzKCkpKyI6IitEYXRlLkxaKHRoaXMuZ2V0TWludXRlcygpKSsiOiIrRGF0ZS5MWih0aGlzLmdldFNlY29uZHMoKSl9O0RhdGUucHJvdG90eXBlLmlzTGVhcFllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gMjk9PShuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksMSwyOSkpLmdldERhdGUoKX07RGF0ZS5wcm90b3R5cGUuZ2V0TGFzdERheU9mTW9udGhDYWw9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLHRoaXMuZ2V0TW9udGgoKSsxLDApKS5nZXREYXRlKCl9O0RhdGUucHJvdG90eXBlLnNldERheT1mdW5jdGlvbihhKXt0aGlzLnNldERhdGUoYSk7cmV0dXJuIHRoaXN9OwpEYXRlLnByb3RvdHlwZS5zZXRNb249ZnVuY3Rpb24oYSl7dGhpcy5zZXRNb250aChhKTtyZXR1cm4gdGhpc307RGF0ZS5wcm90b3R5cGUuc2V0WWVhcj1mdW5jdGlvbihhKXt0aGlzLnNldEZ1bGxZZWFyKGEpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5hZGREYXk9ZnVuY3Rpb24oYSl7dGhpcy5zZXREYXRlKHRoaXMuZ2V0RGF0ZSgpK2EpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5hZGRNb249ZnVuY3Rpb24oYSl7dGhpcy5zZXRNb250aCh0aGlzLmdldE1vbnRoKCkrYSk7cmV0dXJuIHRoaXN9O0RhdGUucHJvdG90eXBlLmFkZFllYXI9ZnVuY3Rpb24oYSl7dGhpcy5zZXRGdWxsWWVhcih0aGlzLmdldEZ1bGxZZWFyKCkrYSk7cmV0dXJuIHRoaXN9O0RhdGUucGFyc2VEYXRlVGltZT1mdW5jdGlvbihhKXthPWEuc3BsaXQoL1stIDpdLyk7cmV0dXJuIG5ldyBEYXRlKGFbMF0sYVsxXS0xLGFbMl0sYVszXSxhWzRdLGFbNV0pfTsKbmViRGF0ZUZuLnBhcnNlU3RyaW5nPWZ1bmN0aW9uKGEsZSl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgZXx8bnVsbD09PWV8fCIiPT09ZSl7ZT1bIk0vZC95IiwiTS1kLXkiLCJNLmQueSIsIk0vZCIsIk0tZCJdO3ZhciBjPVsiZC9NL3kiLCJkLU0teSIsImQuTS55IiwiZC9NIiwiZC1NIl07ZT1bInktTS1kO01NTSBkLCB5O01NTSBkLHk7eS1NTU0tZDtkLU1NTS15O01NTSBkO01NTS1kO2QtTU1NIi5zcGxpdCgiOyIpLERhdGUucHJlZmVyQW1lcmljYW5Gb3JtYXQ\/ZTpjLERhdGUucHJlZmVyQW1lcmljYW5Gb3JtYXQ\/YzplXTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWZvcih2YXIgaD1lW2NdLGs9MDtrPGgubGVuZ3RoO2srKyl7dmFyIG49bmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEsaFtrXSk7aWYobnVsbCE9PW4pcmV0dXJuIG59cmV0dXJuIG51bGx9dGhpcy5pc0ludGVnZXI9ZnVuY3Rpb24odSl7Zm9yKHZhciBxPTA7cTx1Lmxlbmd0aDtxKyspaWYoLTE9PSIxMjM0NTY3ODkwIi5pbmRleE9mKHUuY2hhckF0KHEpKSlyZXR1cm4hMTsKcmV0dXJuITB9O3RoaXMuZ2V0SW50PWZ1bmN0aW9uKHUscSx5LHcpe2Zvcig7dz49eTt3LS0pe3ZhciB4PXUuc3Vic3RyaW5nKHEscSt3KTtpZih4Lmxlbmd0aDx5KWJyZWFrO2lmKHRoaXMuaXNJbnRlZ2VyKHgpKXJldHVybiB4fXJldHVybiBudWxsfTthKz0iIjtlKz0iIjtoPWM9MDt2YXIgbT0iIixiPSIiLGw9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLGc9MSxkPTEsZj0wLHI9MCx0PTAsdj0iIjttPVtdO2ZvcihiPTA7aDxlLmxlbmd0aDspe209ZS5jaGFyQXQoaCk7Zm9yKGI9IiI7ZS5jaGFyQXQoaCk9PW0mJmg8ZS5sZW5ndGg7KWIrPWUuY2hhckF0KGgrKyk7aWYoInl5eXkiPT1ifHwieXkiPT1ifHwieSI9PWIpeyJ5eXl5Ij09YiYmKG49az00KTsieXkiPT1iJiYobj1rPTIpOyJ5Ij09YiYmKGs9MixuPTQpO2w9dGhpcy5nZXRJbnQoYSxjLGssbik7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7Yys9bC5sZW5ndGg7Mj09bC5sZW5ndGgmJihsPTcwPGw\/MTkwMCsobC0wKToyRTMrCihsLTApKX1lbHNlIGlmKCJNTU0iPT1ifHwiTk5OIj09Yil7Zz0wO209Ik1NTSI9PWI\/JC5uZWJMYW5nLm1vbnRoTmFtZXMuY29uY2F0KCQubmViTGFuZy5tb250aE5hbWVzU2hvcnQpOiQubmViTGFuZy5tb250aE5hbWVzU2hvcnQ7Zm9yKGI9MDtiPG0ubGVuZ3RoO2IrKyl7dmFyIHA9bVtiXTtpZihhLnN1YnN0cmluZyhjLGMrcC5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9PXAudG9Mb3dlckNhc2UoKSl7Zz1iJTEyKzE7Yys9cC5sZW5ndGg7YnJlYWt9fWlmKDE+Z3x8MTI8ZylyZXR1cm4gbnVsbH1lbHNlIGlmKCJFRSI9PWJ8fCJFIj09Yilmb3IobT0iRUUiPT1iPyQubmViTGFuZy5kYXlOYW1lczokLm5lYkxhbmcuZGF5TmFtZXNTaG9ydCxiPTA7YjxtLmxlbmd0aDtiKyspe2lmKHA9bVtiXSxhLnN1YnN0cmluZyhjLGMrcC5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9PXAudG9Mb3dlckNhc2UoKSl7Yys9cC5sZW5ndGg7YnJlYWt9fWVsc2UgaWYoIk1NIj09Ynx8Ik0iPT1iKXtnPXRoaXMuZ2V0SW50KGEsCmMsYi5sZW5ndGgsMik7aWYobnVsbD09PWd8fDE+Z3x8MTI8ZylyZXR1cm4gbnVsbDtjKz1nLmxlbmd0aH1lbHNlIGlmKCJkZCI9PWJ8fCJkIj09Yil7ZD10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWR8fDE+ZHx8MzE8ZClyZXR1cm4gbnVsbDtjKz1kLmxlbmd0aH1lbHNlIGlmKCJoaCI9PWJ8fCJoIj09Yil7Zj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWZ8fDE+Znx8MTI8ZilyZXR1cm4gbnVsbDtjKz1mLmxlbmd0aH1lbHNlIGlmKCJISCI9PWJ8fCJIIj09Yil7Zj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWZ8fDA+Znx8MjM8ZilyZXR1cm4gbnVsbDtjKz1mLmxlbmd0aH1lbHNlIGlmKCJLSyI9PWJ8fCJLIj09Yil7Zj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PWZ8fDA+Znx8MTE8ZilyZXR1cm4gbnVsbDtjKz1mLmxlbmd0aDtmKyt9ZWxzZSBpZigia2siPT1ifHwiayI9PWIpe2Y9dGhpcy5nZXRJbnQoYSwKYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MT5mfHwyNDxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RoO2YtLX1lbHNlIGlmKCJtbSI9PWJ8fCJtIj09Yil7cj10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PXJ8fDA+cnx8NTk8cilyZXR1cm4gbnVsbDtjKz1yLmxlbmd0aH1lbHNlIGlmKCJzcyI9PWJ8fCJzIj09Yil7dD10aGlzLmdldEludChhLGMsYi5sZW5ndGgsMik7aWYobnVsbD09PXR8fDA+dHx8NTk8dClyZXR1cm4gbnVsbDtjKz10Lmxlbmd0aH1lbHNlIGlmKCJhIj09Yil7aWYoImFtIj09YS5zdWJzdHJpbmcoYyxjKzIpLnRvTG93ZXJDYXNlKCkpdj0iQU0iO2Vsc2UgaWYoInBtIj09YS5zdWJzdHJpbmcoYyxjKzIpLnRvTG93ZXJDYXNlKCkpdj0iUE0iO2Vsc2UgcmV0dXJuIG51bGw7Yys9Mn1lbHNle2lmKGEuc3Vic3RyaW5nKGMsYytiLmxlbmd0aCkhPWIpcmV0dXJuIG51bGw7Yys9Yi5sZW5ndGh9fWlmKGMhPWEubGVuZ3RoKXJldHVybiBudWxsO2lmKDI9PQpnKWlmKDA9PT1sJTQmJjAhPT1sJTEwMHx8MD09PWwlNDAwKXtpZigyOTxkKXJldHVybiBudWxsfWVsc2UgaWYoMjg8ZClyZXR1cm4gbnVsbDtpZigzMDxkJiYoND09Z3x8Nj09Z3x8OT09Z3x8MTE9PWcpKXJldHVybiBudWxsOzEyPmYmJiJQTSI9PXY\/Zj1mLTArMTI6MTE8ZiYmIkFNIj09diYmKGYtPTEyKTtyZXR1cm4gbmV3IERhdGUobCxnLTEsZCxmLHIsdCl9O0RhdGUuaXNWYWxpZD1mdW5jdGlvbihhLGUpe3JldHVybiBudWxsIT09bmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEsZSl9O0RhdGUucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hPyExOnRoaXMuZ2V0VGltZSgpPT1hLmdldFRpbWUoKT8wOnRoaXMuZ2V0VGltZSgpPmEuZ2V0VGltZSgpPy0xOjF9OwpEYXRlLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oYSl7YSs9IiI7dmFyIGU9IiIsYz0wLGg9dGhpcy5nZXRGdWxsWWVhcigpKyIiLGs9dGhpcy5nZXRNb250aCgpKzEsbj10aGlzLmdldERhdGUoKSxtPXRoaXMuZ2V0RGF5KCksYj10aGlzLmdldEhvdXJzKCksbD10aGlzLmdldE1pbnV0ZXMoKSxnPXRoaXMuZ2V0U2Vjb25kcygpLGQ9e307ND5oLmxlbmd0aCYmKGg9IiIrKCtoKzE5MDApKTtkLnk9IiIraDtkLnl5eXk9aDtkLnl5PWguc3Vic3RyaW5nKDIsNCk7ZC5NPWs7ZC5NTT1EYXRlLkxaKGspO2QuTU1NPSQubmViTGFuZy5tb250aE5hbWVzW2stMV07ZC5OTk49JC5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydFtrLTFdO2QuZD1uO2QuZGQ9RGF0ZS5MWihuKTtkLkU9JC5uZWJMYW5nLmRheU5hbWVzU2hvcnRbbV07ZC5FRT0kLm5lYkxhbmcuZGF5TmFtZXNbbV07ZC5IPWI7ZC5ISD1EYXRlLkxaKGIpO2QuaD0wPT09Yj8xMjoxMjxiP2ItMTI6YjtkLmhoPURhdGUuTFooZC5oKTtkLks9CmQuaC0xO2Quaz1kLkgrMTtkLktLPURhdGUuTFooZC5LKTtkLmtrPURhdGUuTFooZC5rKTtkLmE9MTE8Yj8iUE0iOiJBTSI7ZC5tPWw7ZC5tbT1EYXRlLkxaKGwpO2Qucz1nO2ZvcihkLnNzPURhdGUuTFooZyk7YzxhLmxlbmd0aDspe2g9YS5jaGFyQXQoYyk7Zm9yKGs9IiI7YS5jaGFyQXQoYyk9PWgmJmM8YS5sZW5ndGg7KWsrPWEuY2hhckF0KGMrKyk7ZT0idW5kZWZpbmVkIiE9dHlwZW9mIGRba10\/ZStkW2tdOmUra31yZXR1cm4gZX07CkRhdGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGUpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGF8fG51bGw9PT1hfHwidW5kZWZpbmVkIj09PXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gdGhpcztlPStlO2lmKCJ5Ij09YSl0aGlzLnNldEZ1bGxZZWFyKHRoaXMuZ2V0RnVsbFllYXIoKStlKTtlbHNlIGlmKCJNIj09YSl0aGlzLnNldE1vbnRoKHRoaXMuZ2V0TW9udGgoKStlKTtlbHNlIGlmKCJkIj09YSl0aGlzLnNldERhdGUodGhpcy5nZXREYXRlKCkrZSk7ZWxzZSBpZigidyI9PWEpZm9yKGE9MDxlPzE6LTE7MCE9PWU7KXtmb3IodGhpcy5hZGQoImQiLGEpOzA9PT10aGlzLmdldERheSgpfHw2PT09dGhpcy5nZXREYXkoKTspdGhpcy5hZGQoImQiLGEpO2UtPWF9ZWxzZSJoIj09YT90aGlzLnNldEhvdXJzKHRoaXMuZ2V0SG91cnMoKStlKToibSI9PWE\/dGhpcy5zZXRNaW51dGVzKHRoaXMuZ2V0TWludXRlcygpK2UpOiJzIj09YSYmdGhpcy5zZXRTZWNvbmRzKHRoaXMuZ2V0U2Vjb25kcygpKwplKTtyZXR1cm4gdGhpc307RGF0ZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUodGhpcy5nZXRUaW1lKCkpfTsKLyoqIC9tL2pzL25lYkNhbC9uZWJDYWwuanMgKiovCnZhciBfX19kMmNfbmViQ2FsanNfY19vbj0iMjAyNS0wNS0yMyAxNzowNDoyMiI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfbmViQ2FsanNfY19vbj0iMjAyNC0wNC0xNiAxMTozMDowNyI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oZSl7ZS5uZWJDYWw9ZnVuY3Rpb24oaCxnKXt2YXIgbD17c2xpZGVEdXJhdGlvbjo1MDAsZmFkZUR1cmF0aW9uOjIwMCx0b2dnbGVEdXJhdGlvbjoyMDAscHJlZmlsbDohMSxkZWZhdWx0RGF0ZTp2b2lkIDAsbGlua1dpdGhJbnB1dDohMCxrZXlOYXZpZ2F0aW9uOiEwLHRoZW1lOiJkZWZhdWx0IixkZWZhdWx0VmlldzoibW9udGgiLHN0YXJ0TW9uZGF5OiExLGFsd2F5c1Nob3c6ITEsaW5qZWN0SW5zaWRlVGFyZ2V0OiExLGZvcm1hdDoieXl5eS1NTS1kZCIsYWxpZ25YOiJtaWRkbGUiLGFsaWduWToiYm90dG9tIixvZmZzZXRYOjIwLG9mZnNldFk6MCxwb3J0cmFpdDohMCxwaWNrYWJsZTohMCx0b2dnbGVyOnZvaWQgMCxkaXNhbGxvd1VzZXJJbnB1dDohMSxtaW5EYXRlOnZvaWQgMCxtYXhEYXRlOnZvaWQgMCxleGNsdWRlZFdlZWtkYXlzOnZvaWQgMCxleGNsdWRlZERhdGVzOnZvaWQgMCxjcmVhdGVIaWRkZW5JbnB1dDohMSxoaWRkZW5JbnB1dE5hbWU6ImRhdGUiLGhpZGRlbklucHV0Rm9ybWF0OiIldCIsCm9uU2VsZWN0OiExLG9uVmlld0NoYW5nZTohMX0sYT10aGlzO2Eub3B0aW9ucz17fTthLnRhcmdldD1lKGgpO2EuaW5pdD1mdW5jdGlvbigpe2Eub3B0aW9ucz1lLmV4dGVuZCh7fSxsLGcpO2EudG9kYXk9bmViRGF0ZUZuLmNsZWFyVGltZShuZXcgRGF0ZSk7YS50cmFuc2l0aW9uaW5nPSExO3ZvaWQgMCE9PWEub3B0aW9ucy5kZWZhdWx0RGF0ZT9hLnNlbGVjdGVkRGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKG5lYkRhdGVGbi5wYXJzZVN0cmluZyhhLm9wdGlvbnMuZGVmYXVsdERhdGUpKTphLm9wdGlvbnMubGlua1dpdGhJbnB1dCYmdm9pZCAwIT09YS50YXJnZXQudmFsKCkmJjAhPT1hLnRhcmdldC52YWwoKSYmKGEuc2VsZWN0ZWREYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEudGFyZ2V0LnZhbCgpKSkpO2lmKHZvaWQgMD09PWEuc2VsZWN0ZWREYXRlfHxudWxsPT09YS5zZWxlY3RlZERhdGUpYS5zZWxlY3RlZERhdGU9YS50b2RheS5jbG9uZSgpOwphLmVsZW1lbnQ9ZSgnPGRpdiBjbGFzcz0ibmViQ2FsICcrYS5vcHRpb25zLnRoZW1lKyciIHN0eWxlPSJkaXNwbGF5OiAnKyhhLm9wdGlvbnMuYWx3YXlzU2hvdz8iYmxvY2siOiJub25lIikrJyI+PGRpdiBjbGFzcz0iY2FsLXdyYXBwZXIiPjxkaXYgY2xhc3M9ImNhbC1oZWFkZXIiPjxkaXYgY2xhc3M9ImNhbC1hcnJvdy1sZWZ0Ij48L2Rpdj48ZGl2IGNsYXNzPSJjYWwtYXJyb3ctcmlnaHQiPjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1sYWJlbCBjYWwtY2xpY2thYmxlIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjYWwtYm9keSI+PGRpdiBjbGFzcz0iY2FsLWlubmVyIj48ZGl2IGNsYXNzPSJjYWwtY29udGFpbmVyIGEiPjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1jb250YWluZXIgYiI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2FsLWZvb3RlciI+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7YS5vcHRpb25zLmluamVjdEluc2lkZVRhcmdldD8oYS5lbGVtZW50LmFkZENsYXNzKCJpbmxpbmUiKSwKYS5lbGVtZW50LmFwcGVuZFRvKGEudGFyZ2V0KSk6KGEuZWxlbWVudC5hcHBlbmRUbyhlKCJib2R5IikpLGEucG9zaXRpb24oKSxlKHdpbmRvdykub24oInJlc2l6ZSIsYS5wb3NpdGlvbikpO2EuY3VycmVudENvbnRhaW5lcj1hLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYSIpLmNzcygiei1pbmRleCIsOTk5KTthLnRlbXBDb250YWluZXI9YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmIiKS5jc3MoInotaW5kZXgiLDk5OCk7YS5oZWFkZXI9YS5lbGVtZW50LmZpbmQoIi5jYWwtaGVhZGVyIik7YS5sYWJlbD1hLmhlYWRlci5maW5kKCIuY2FsLWxhYmVsIik7YS5hcnJvd0xlZnQ9YS5oZWFkZXIuZmluZCgiLmNhbC1hcnJvdy1sZWZ0Iik7YS5hcnJvd1JpZ2h0PWEuaGVhZGVyLmZpbmQoIi5jYWwtYXJyb3ctcmlnaHQiKTthLmxhYmVsLm9uKCJjbGljayIsYS5sZXZlbFVwKTthLmFycm93TGVmdC5vbigiY2xpY2siLGEuc2xpZGVMZWZ0KTthLmFycm93UmlnaHQub24oImNsaWNrIiwKYS5zbGlkZVJpZ2h0KTt2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmKGEub3B0aW9ucy5taW5EYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEub3B0aW9ucy5taW5EYXRlKSkpO3ZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiYoYS5vcHRpb25zLm1heERhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYS5vcHRpb25zLm1heERhdGUpKSk7aWYodm9pZCAwIT09YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMpe3ZhciBiPVtdO2Eub3B0aW9ucy5leGNsdWRlZERhdGVzLmVhY2goZnVuY3Rpb24oYyl7Yi5pbmNsdWRlKGEuZm9ybWF0KG5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGMpKSwiJXQiKSl9KTthLm9wdGlvbnMuZXhjbHVkZWREYXRlcz1ifWEub3B0aW9ucy5jcmVhdGVIaWRkZW5JbnB1dCYmKGEuaGlkZGVuSW5wdXQ9KG5ldyBFbGVtZW50KCJpbnB1dCIse3R5cGU6ImhpZGRlbiIsCm5hbWU6YS5vcHRpb25zLmhpZGRlbklucHV0TmFtZX0pKS5hcHBlbmRUbyhhLnRhcmdldCkpOyFhLm9wdGlvbnMuZGlzYWxsb3dVc2VySW5wdXQmJmEub3B0aW9ucy5saW5rV2l0aElucHV0JiYiaW5wdXQiPT1hLnRhcmdldC5hdHRyKCJ0YWciKSYmYS50YXJnZXQuYWRkRXZlbnQoImtleXVwIixmdW5jdGlvbigpe2Euc2V0RGF0ZShhLnRhcmdldC5hdHRyKCJ2YWx1ZSIpLCExKX0pO3ZvaWQgMCE9PWEub3B0aW9ucy50b2dnbGVyJiYoYS5vcHRpb25zLnRvZ2dsZXI9ZShhLm9wdGlvbnMudG9nZ2xlcikpOyh2b2lkIDAhPT1hLm9wdGlvbnMudG9nZ2xlcj9hLm9wdGlvbnMudG9nZ2xlcjphLnRhcmdldCkub24oImZvY3VzIixhLnNob3cpLm9uKCJjbGljayIsYS5zaG93KTtpZighYS5vcHRpb25zLmFsd2F5c1Nob3cpZShkb2N1bWVudCkub24oIm1vdXNlZG93biIsYS5vdXRzaWRlQ2xpY2spOyJJTlBVVCI9PWEudGFyZ2V0LnByb3AoInRhZ05hbWUiKSYmKGEudGFyZ2V0LnRyaWdnZXIoImtleWRvd24iLAphLm9uS2V5RG93biksYS50YXJnZXQudHJpZ2dlcigia2V5dXAiLGEub25LZXlVcCksYS5vcHRpb25zLmRpc2FsbG93VXNlcklucHV0JiZhLnRhcmdldC5hZGRFdmVudCgiY29udGV4dG1lbnUiLCRsYW1iZGEoITEpKSk7YS5zZWxlY3RlZERhdGU9YS5jb3JyZWN0RGF0ZShhLnNlbGVjdGVkRGF0ZSk7YS5vcHRpb25zLnByZWZpbGwmJmEucGljaygpO2Eudmlld0RhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShhLnNlbGVjdGVkRGF0ZS5jbG9uZSgpLnNldERheSgxKSk7YS52aWV3PWEub3B0aW9ucy5kZWZhdWx0VmlldzthLnJlbmRlcigpfTthLnJlbmRlcj1mdW5jdGlvbigpe2EuY3VycmVudENvbnRhaW5lci5lbXB0eSgpO3N3aXRjaChhLnZpZXcpe2Nhc2UgImRlY2FkZSI6YS5yZW5kZXJEZWNhZGUoKTticmVhaztjYXNlICJ5ZWFyIjphLnJlbmRlclllYXIoKTticmVhaztkZWZhdWx0OmEucmVuZGVyTW9udGgoKX1yZXR1cm4gYX07YS5yZW5kZXJNb250aD1mdW5jdGlvbigpe2Eudmlldz0KIm1vbnRoIjthLmN1cnJlbnRDb250YWluZXIuZW1wdHkoKS5hZGRDbGFzcygiY2FsLW1vbnRoIik7YS5vcHRpb25zLnBpY2thYmxlJiZhLmN1cnJlbnRDb250YWluZXIuYWRkQ2xhc3MoImNhbC1waWNrYWJsZSIpO3ZhciBiPWUubmViTGFuZyxjPWEudmlld0RhdGUuZ2V0RGF5KCktKGEub3B0aW9ucy5zdGFydE1vbmRheT8xOjApOy0xPT1jJiYoYz02KTthLmxhYmVsLmh0bWwoYi5tb250aE5hbWVzW2Eudmlld0RhdGUuZ2V0TW9udGgoKV0rIiAiK2Eudmlld0RhdGUuZm9ybWF0KCJ5eXl5IikpO2Zvcih2YXIgZD1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSxmPWEub3B0aW9ucy5zdGFydE1vbmRheT8xOjA7ZjwoYS5vcHRpb25zLnN0YXJ0TW9uZGF5Pzg6Nyk7ZisrKXt2YXIgaz1lKCI8ZGl2PjwvZGl2PiIpLmh0bWwoYi5kYXlOYW1lc1Nob3J0W2Eub3B0aW9ucy5zdGFydE1vbmRheSYmNz09Zj8wOmZdKS5hcHBlbmRUbyhkKTsKay5odG1sKGsuaHRtbCgpKX1kPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpO2I9YS52aWV3RGF0ZS5jbG9uZSgpLmFkZCgiTSIsLTEpLmdldExhc3REYXlPZk1vbnRoQ2FsKCk7Zm9yKGY9MDtmPGM7ZisrKWEuaW5qZWN0RGF5KGQsYS52aWV3RGF0ZS5jbG9uZSgpLmFkZCgiTSIsLTEpLnNldERheShiLShjLWYpKzEpLCEwKTtmb3IoZj0xO2Y8PWEudmlld0RhdGUuZ2V0TGFzdERheU9mTW9udGhDYWwoKTtmKyspYS5pbmplY3REYXkoZCxhLnZpZXdEYXRlLmNsb25lKCkuc2V0RGF5KGYpKSw3PT1kLmNoaWxkcmVuKCkubGVuZ3RoJiYoZD1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSk7Yj04LWQuY2hpbGRyZW4oKS5sZW5ndGg7Yz1hLnZpZXdEYXRlLmNsb25lKCkuYWRkKCJNIiwxKS5zZXREYXkoMSk7Zm9yKGY9MTtmPGI7ZisrKWEuaW5qZWN0RGF5KGQsCmMuY2xvbmUoKS5zZXREYXkoZiksITApO2ZvcihiPWEuY3VycmVudENvbnRhaW5lci5maW5kKCIuY2FsLXJvdyIpLmxlbmd0aDs3PmI7YisrKWZvcihkPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpLGs9MDs3Pms7aysrKWEuaW5qZWN0RGF5KGQsYy5jbG9uZSgpLnNldERheShmKSwhMCksZisrO2EucmVuZGVyQWZ0ZXIoKX07YS5pbmplY3REYXk9ZnVuY3Rpb24oYixjLGQpe2I9ZSgiPGRpdj48L2Rpdj4iKS5odG1sKGMuZ2V0RGF0ZSgpKS5hcHBlbmRUbyhiKTtiLmRhdGEoImRhdGUiLGMpO2QmJmIuYWRkQ2xhc3MoImNhbC1vdXRzaWRlIik7aWYodm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJmEub3B0aW9ucy5taW5EYXRlPmN8fHZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiZhLm9wdGlvbnMubWF4RGF0ZTxjfHx2b2lkIDAhPT1hLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cyYmYS5vcHRpb25zLmV4Y2x1ZGVkV2Vla2RheXMuY29udGFpbnMoYy5mb3JtYXQoIkUiKS50b0ludCgpKXx8CnZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZERhdGVzJiZhLm9wdGlvbnMuZXhjbHVkZWREYXRlcy5jb250YWlucyhhLmZvcm1hdChjLCIldCIpKSliLmFkZENsYXNzKCJjYWwtbm9uLXNlbGVjdGFibGUiKTtlbHNlIGlmKGEub3B0aW9ucy5waWNrYWJsZSliLm9uKCJjbGljayIsYS5waWNrKTtjLmZvcm1hdCgiZCIpPT1hLnRvZGF5LmZvcm1hdCgiZCIpJiZiLmFkZENsYXNzKCJjYWwtdG9kYXkiKTtkfHxjLmZvcm1hdCgiZCIpIT1hLnNlbGVjdGVkRGF0ZS5mb3JtYXQoImQiKXx8Yi5hZGRDbGFzcygiY2FsLXNlbGVjdGVkIil9O2EucmVuZGVyWWVhcj1mdW5jdGlvbigpe2Eudmlldz0ieWVhciI7YS5jdXJyZW50Q29udGFpbmVyLmFkZENsYXNzKCJjYWwteWVhci1kZWNhZGUgIisoYS5vcHRpb25zLnBvcnRyYWl0PyJjYWwtcG9ydHJhaXQiOiJjYWwtbGFuZHNjYXBlIikpO3ZhciBiPWUubmViTGFuZy5tb250aE5hbWVzU2hvcnQ7YS5sYWJlbC5odG1sKGEudmlld0RhdGUuZm9ybWF0KCJ5eXl5IikpOwpmb3IodmFyIGM9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lciksZD0xOzEzPmQ7ZCsrKXt2YXIgZj1lKCI8ZGl2PjwvZGl2PiIpLmh0bWwoYltkLTFdKS5hcHBlbmRUbyhjKSxrPWEudmlld0RhdGUuY2xvbmUoKS5zZXRNb24oZC0xKTtmLmRhdGEoImRhdGUiLGspO2lmKHZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiZhLm9wdGlvbnMubWluRGF0ZS5jbG9uZSgpLnNldERheSgxKT5rfHx2b2lkIDAhPT1hLm9wdGlvbnMubWF4RGF0ZSYmYS5vcHRpb25zLm1heERhdGUuY2xvbmUoKS5zZXREYXkoMSk8aylmLmFkZENsYXNzKCJjYWwtbm9uLXNlbGVjdGFibGUiKTtlbHNlIGYub24oImNsaWNrIixhLmxldmVsRG93bik7ZC0xPT1hLnRvZGF5LmdldE1vbnRoKCkmJmEudmlld0RhdGUuZ2V0RnVsbFllYXIoKT09YS50b2RheS5nZXRGdWxsWWVhcigpJiZmLmFkZENsYXNzKCJjYWwtdG9kYXkiKTtkLTE9PWEuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkmJgphLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCk9PWEuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC1zZWxlY3RlZCIpO2QlKGEub3B0aW9ucy5wb3J0cmFpdD8zOjQpfHwxMj09ZHx8KGM9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lcikpfWEucmVuZGVyQWZ0ZXIoKX07YS5yZW5kZXJEZWNhZGU9ZnVuY3Rpb24oKXthLmxhYmVsLnJlbW92ZUNsYXNzKCJjYWwtY2xpY2thYmxlIik7YS52aWV3PSJkZWNhZGUiO2EuY3VycmVudENvbnRhaW5lci5hZGRDbGFzcygiY2FsLXllYXItZGVjYWRlICIrKGEub3B0aW9ucy5wb3J0cmFpdD8iY2FsLXBvcnRyYWl0IjoiY2FsLWxhbmRzY2FwZSIpKTt2YXIgYjtmb3IoYj1wYXJzZUludChhLnZpZXdEYXRlLmZvcm1hdCgieXl5eSIpKTtiJTEyOyliLS07YS5sYWJlbC5odG1sKGIrIiAmIzE1MDsgIisoYisxMSkpO2Zvcih2YXIgYz1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSwKZD1iO2Q8YisxMjtkKyspe3ZhciBmPWUoIjxkaXY+PC9kaXY+IikuaHRtbChkKS5hcHBlbmRUbyhjKSxrPWEudmlld0RhdGUuY2xvbmUoKS5zZXRZZWFyKGQpO2YuZGF0YSgiZGF0ZSIsayk7aWYodm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJmEub3B0aW9ucy5taW5EYXRlLmdldEZ1bGxZZWFyKCk+ZHx8dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJmEub3B0aW9ucy5tYXhEYXRlLmdldEZ1bGxZZWFyKCk8ZClmLmFkZENsYXNzKCJjYWwtbm9uLXNlbGVjdGFibGUiKTtlbHNlIGYub24oImNsaWNrIixhLmxldmVsRG93bik7ZD09YS50b2RheS5nZXRGdWxsWWVhcigpJiZmLmFkZENsYXNzKCJjYWwtdG9kYXkiKTtkPT1hLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpJiZmLmFkZENsYXNzKCJjYWwtc2VsZWN0ZWQiKTsoZCsxKSUoYS5vcHRpb25zLnBvcnRyYWl0PzM6NCl8fGQ9PWIrMTF8fChjPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpKX1hLnJlbmRlckFmdGVyKCl9OwphLnJlbmRlckFmdGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPWEuY3VycmVudENvbnRhaW5lci5maW5kKCIuY2FsLXJvdyIpLGM9MDtjPGIubGVuZ3RoO2MrKyllKGJbY10pLmFkZENsYXNzKCJjYWwtcm93ICIrImFiY2RlZmciLnNwbGl0KCIiKVtjXSsiICIrKGMlMj8iY2FsLWV2ZW4iOiJjYWwtb2RkIikpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLm9wdGlvbnMub25WaWV3Q2hhbmdlKWEub3B0aW9ucy5vblZpZXdDaGFuZ2UoYS52aWV3LGEuc2VsZWN0ZWREYXRlLGEudmlld0RhdGUpfTthLnNsaWRlTGVmdD1mdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZyYmKGEudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLnN0b3AoKSxhLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5zdG9wKCksYS50cmFuc2l0aW9uaW5nPSExKTthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS52aWV3RGF0ZS5hZGQoIk0iLC0xKTticmVhaztjYXNlICJ5ZWFyIjphLnZpZXdEYXRlLmFkZCgieSIsCi0xKTticmVhaztjYXNlICJkZWNhZGUiOmEudmlld0RhdGUuc2V0RnVsbFllYXIoYS52aWV3RGF0ZS5nZXRGdWxsWWVhcigpLTEyKX1hLnJlbmRlcigpO2EudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuY3NzKHtsZWZ0Oi1hLmN1cnJlbnRDb250YWluZXIud2lkdGgoKX0pLmFuaW1hdGUoe2xlZnQ6MH0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24pO2EudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLmFuaW1hdGUoe2xlZnQ6YS50ZW1wQ29udGFpbmVyLndpZHRoKCl9LGEub3B0aW9ucy5zbGlkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3Moe2xlZnQ6MH0pO2EudHJhbnNpdGlvbmluZz0hMX0pfTthLnNsaWRlUmlnaHQ9ZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmcmJihhLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5zdG9wKCksYS50ZW1wQ29udGFpbmVyLmNzcyh7bGVmdDowfSkuc3RvcCgpLGEudHJhbnNpdGlvbmluZz0hMSk7YS5zd2l0Y2hDb250YWluZXJzKCk7CnN3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnZpZXdEYXRlLmFkZCgiTSIsMSk7YnJlYWs7Y2FzZSAieWVhciI6YS52aWV3RGF0ZS5hZGQoInkiLDEpO2JyZWFrO2Nhc2UgImRlY2FkZSI6YS52aWV3RGF0ZS5zZXRGdWxsWWVhcihhLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCkrMTIpfWEucmVuZGVyKCk7YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5jc3Moe2xlZnQ6YS5jdXJyZW50Q29udGFpbmVyLndpZHRoKCl9KS5hbmltYXRlKHtsZWZ0OjB9LGEub3B0aW9ucy5zbGlkZUR1cmF0aW9uKTthLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5hbmltYXRlKHtsZWZ0Oi1hLnRlbXBDb250YWluZXIud2lkdGgoKX0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24sZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyh7bGVmdDowfSk7YS50cmFuc2l0aW9uaW5nPSExfSl9O2EubGV2ZWxEb3duPWZ1bmN0aW9uKGIpe2lmKCFhLnRyYW5zaXRpb25pbmcpe2Euc3dpdGNoQ29udGFpbmVycygpOwphLnZpZXdEYXRlPWUoYi50YXJnZXQpLmRhdGEoImRhdGUiKTtzd2l0Y2goYS52aWV3KXtjYXNlICJ5ZWFyIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnJlbmRlclllYXIoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPSExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLmxldmVsVXA9ZnVuY3Rpb24oKXtpZigiZGVjYWRlIiE9YS52aWV3JiYhYS50cmFuc2l0aW9uaW5nKXthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS5yZW5kZXJZZWFyKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJEZWNhZGUoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPQohMX0pO2EudGVtcENvbnRhaW5lci5mYWRlT3V0KGEub3B0aW9ucy5mYWRlRHVyYXRpb24pfX07YS5jaGFuZ2VWaWV3PWZ1bmN0aW9uKGIpe2lmKCFhLnRyYW5zaXRpb25pbmcmJmIhPWEudmlldyl7YS5zd2l0Y2hDb250YWluZXJzKCk7c3dpdGNoKGIpe2Nhc2UgIm1vbnRoIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJZZWFyKCk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnJlbmRlckRlY2FkZSgpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9ITF9KTthLnRlbXBDb250YWluZXIuZmFkZU91dChhLm9wdGlvbnMuZmFkZUR1cmF0aW9uKX19O2EudXBkYXRlTWluRGF0ZT1mdW5jdGlvbihiKXtpZighYS50cmFuc2l0aW9uaW5nJiYoYj1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYiksbnVsbCE9PWIpKXthLm9wdGlvbnMubWluRGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKGIpOwphLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS5yZW5kZXJNb250aCgpO2JyZWFrO2Nhc2UgInllYXIiOmEucmVuZGVyWWVhcigpO2JyZWFrO2Nhc2UgImRlY2FkZSI6YS5yZW5kZXJEZWNhZGUoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPSExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLnVwZGF0ZU1heERhdGU9ZnVuY3Rpb24oYil7aWYoIWEudHJhbnNpdGlvbmluZyYmKGI9bmViRGF0ZUZuLnBhcnNlU3RyaW5nKGIpLG51bGwhPT1iKSl7YS5vcHRpb25zLm1heERhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShiKTthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYS52aWV3KXtjYXNlICJtb250aCI6YS5yZW5kZXJNb250aCgpO2JyZWFrO2Nhc2UgInllYXIiOmEucmVuZGVyWWVhcigpOwpicmVhaztjYXNlICJkZWNhZGUiOmEucmVuZGVyRGVjYWRlKCl9YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5mYWRlSW4oYS5vcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZz0hMX0pO2EudGVtcENvbnRhaW5lci5mYWRlT3V0KGEub3B0aW9ucy5mYWRlRHVyYXRpb24pfX07YS5zd2l0Y2hDb250YWluZXJzPWZ1bmN0aW9uKCl7YS5jdXJyZW50Q29udGFpbmVyPWEuY3VycmVudENvbnRhaW5lci5oYXNDbGFzcygiYSIpP2EuZWxlbWVudC5maW5kKCIuY2FsLWNvbnRhaW5lci5iIik6YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmEiKTthLnRlbXBDb250YWluZXI9YS50ZW1wQ29udGFpbmVyLmhhc0NsYXNzKCJhIik\/YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmIiKTphLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYSIpO2EuY3VycmVudENvbnRhaW5lci5lbXB0eSgpLnJlbW92ZUNsYXNzKCJjYWwtbW9udGggY2FsLXllYXItZGVjYWRlICIrCihhLm9wdGlvbnMucG9ydHJhaXQ\/ImNhbC1wb3J0cmFpdCI6ImNhbC1sYW5kc2NhcGUiKSkuY3NzKHtvcGFjaXR5OjEsZGlzcGxheToiYmxvY2siLCJ6LWluZGV4Ijo5OTl9KTthLnRlbXBDb250YWluZXIuY3NzKCJ6LWluZGV4Iiw5OTgpO2EubGFiZWwuYWRkQ2xhc3MoImNhbC1jbGlja2FibGUiKTthLmFycm93TGVmdC5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7YS5hcnJvd1JpZ2h0LmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKX07YS5wb3NpdGlvbj1mdW5jdGlvbigpe3ZhciBiPWEudGFyZ2V0LmdldENvb3JkaW5hdGVzKCk7c3dpdGNoKGEub3B0aW9ucy5hbGlnblgpe2Nhc2UgImxlZnQiOnZhciBjPWIubGVmdDticmVhaztjYXNlICJtaWRkbGUiOmM9Yi5sZWZ0K2Iud2lkdGgvMi1hLmVsZW1lbnQud2lkdGgoKS8yO2JyZWFrO2RlZmF1bHQ6Y2FzZSAicmlnaHQiOmM9Yi5sZWZ0K2Iud2lkdGh9c3dpdGNoKGEub3B0aW9ucy5hbGlnblkpe2Nhc2UgImJvdHRvbSI6Yj1iLnRvcCsKYi5oZWlnaHQ7YnJlYWs7Y2FzZSAidG9wIjpiPWIudG9wLWEuZWxlbWVudC5nZXRIZWlnaHQoKTticmVhaztkZWZhdWx0OmNhc2UgImNlaWxpbmciOmI9Yi50b3B9Yys9cGFyc2VJbnQoYS5vcHRpb25zLm9mZnNldFgpO2IrPXBhcnNlSW50KGEub3B0aW9ucy5vZmZzZXRZKTthLmVsZW1lbnQuY3NzKHt0b3A6YixsZWZ0OmN9KX07YS5zaG93PWZ1bmN0aW9uKCl7YS52aXNpYmxlfHxhLm9wdGlvbnMuYWx3YXlzU2hvd3x8KGEudmlzaWJsZT0hMCxhLmVsZW1lbnQuZmFkZUluKGEub3B0aW9ucy50b2dnbGVEdXJhdGlvbiksYS5wb3NpdGlvbigpKX07YS5oaWRlPWZ1bmN0aW9uKCl7YS52aXNpYmxlJiYhYS5vcHRpb25zLmFsd2F5c1Nob3cmJihhLnZpc2libGU9ITEsYS5lbGVtZW50LmZhZGVPdXQoYS5vcHRpb25zLnRvZ2dsZUR1cmF0aW9uKSl9O2EudG9nZ2xlPWZ1bmN0aW9uKCl7YS52aXNpYmxlP2EuaGlkZSgpOmEuc2hvdygpfTthLm91dHNpZGVDbGljaz1mdW5jdGlvbihiKXtpZihhLnZpc2libGUpe3ZhciBjPQphLmVsZW1lbnQuZ2V0Q29vcmRpbmF0ZXMoKSxkPWEudGFyZ2V0LmdldENvb3JkaW5hdGVzKCk7KGIucGFnZVg8Yy5sZWZ0fHxiLnBhZ2VYPmMubGVmdCtjLndpZHRofHxiLnBhZ2VZPGMudG9wfHxiLnBhZ2VZPmMudG9wK2MuaGVpZ2h0KSYmKGIucGFnZVg8ZC5sZWZ0fHxiLnBhZ2VYPmQubGVmdCtkLndpZHRofHxiLnBhZ2VZPGQudG9wfHxiLnBhZ2VZPmQudG9wK2QuaGVpZ2h0KSYmYS5oaWRlKCl9fTthLnBpY2s9ZnVuY3Rpb24oYil7dm9pZCAwIT09YiYmKGEuc2VsZWN0ZWREYXRlPWUoYi50YXJnZXQpLmRhdGEoImRhdGUiKSxhLmVsZW1lbnQuZmluZCgiLmNhbC1zZWxlY3RlZCIpLnJlbW92ZUNsYXNzKCJjYWwtc2VsZWN0ZWQiKSxlKGIudGFyZ2V0KS5hZGRDbGFzcygiY2FsLXNlbGVjdGVkIiksZShiLnRhcmdldCkuaGFzQ2xhc3MoImNhbC1vdXRzaWRlIik\/YS5vcHRpb25zLmFsd2F5c1Nob3c\/MDxhLnNlbGVjdGVkRGF0ZS5kaWZmKGEudmlld0RhdGUpP2Euc2xpZGVMZWZ0KCk6CmEuc2xpZGVSaWdodCgpOihhLnZpZXdEYXRlPWEuc2VsZWN0ZWREYXRlLmNsb25lKCkuc2V0RGF5KDEpLHNldFRpbWVvdXQoYS5yZW5kZXIsMzAwKSk6c2V0VGltZW91dChhLmhpZGUsMTUwKSk7Yj1hLmZvcm1hdChhLnNlbGVjdGVkRGF0ZSk7Yj1lKCI8dGV4dGFyZWEgLz4iKS5odG1sKGIpLnRleHQoKTtpZighYS5vcHRpb25zLmluamVjdEluc2lkZVRhcmdldClzd2l0Y2goYS50YXJnZXQucHJvcCgidGFnTmFtZSIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImlucHV0IjphLnRhcmdldC52YWwoYik7YnJlYWs7ZGVmYXVsdDphLnRhcmdldC5odG1sKGIpfXZvaWQgMCE9PWEuaGlkZGVuSW5wdXQmJmEuaGlkZGVuSW5wdXQuc2V0KCJ2YWx1ZSIsYS5mb3JtYXQoYS5zZWxlY3RlZERhdGUsYS5vcHRpb25zLmhpZGRlbklucHV0Rm9ybWF0KSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEub3B0aW9ucy5vblNlbGVjdClhLm9wdGlvbnMub25TZWxlY3QoYS5zZWxlY3RlZERhdGUpO3JldHVybiBhfTsKYS5mb3JtYXQ9ZnVuY3Rpb24oYixjKXt2b2lkIDA9PT1jJiYoYz10aGlzLm9wdGlvbnMuZm9ybWF0KTtpZih2b2lkIDAhPT1iKXJldHVybiBjPWMucmVwbGFjZSgvJShbYS16JV0pL2dpLGZ1bmN0aW9uKGQsZil7c3dpdGNoKGYpe2Nhc2UgIkQiOnJldHVybiBiLmdldCgiZGF0ZSIpO2Nhc2UgIm4iOnJldHVybiBiLmdldCgibW8iKSsxO2Nhc2UgInQiOnJldHVybiBwYXJzZUludChiLmdldFRpbWUoKS8xRTMpfXJldHVybiIlIitmfSksYi5mb3JtYXQoYyl9O2Eub25LZXlEb3duPWZ1bmN0aW9uKGIpe2lmKGEub3B0aW9ucy5rZXlOYXZpZ2F0aW9uKXt2YXIgYz1hLnNlbGVjdGVkRGF0ZS5jbG9uZSgpLGQ9ITAsZj0hMTtzd2l0Y2goYi53aGljaCl7Y2FzZSAzNzpjLmFkZCgiZCIsLTEpO2Y9ITA7ZD0hMTticmVhaztjYXNlIDM5OmMuYWRkKCJkIiwxKTtmPSEwO2JyZWFrO2Nhc2UgMzg6Yy5hZGQoIk0iLC0xKTtmPSEwO2Q9ITE7YnJlYWs7Y2FzZSA0MDpjLmFkZCgiTSIsMSk7Zj0hMDticmVhazsKY2FzZSA5OnNldFRpbWVvdXQoYS5oaWRlLDE1MCl9ZiYmKGM9YS5jb3JyZWN0RGF0ZShjLGQpLDAhPT1hLnNlbGVjdGVkRGF0ZS5kaWZmKGMpJiZhLnNldERhdGUoYykpfWlmKGEub3B0aW9ucy5kaXNhbGxvd1VzZXJJbnB1dClyZXR1cm4hMX07YS5vbktleVVwPWZ1bmN0aW9uKCl7L15cZHs0fS1cZHsyfS1cZHsyfSQvLnRlc3QoYS50YXJnZXQudmFsKCkpJiYoYS5zZXREYXRlKG5lYkRhdGVGbi5wYXJzZVN0cmluZyhhLnRhcmdldC52YWwoKSkpLGEudGFyZ2V0LnJlbW92ZUNsYXNzKCJpbnZhbGlkSW5wdXQgdG9vbHRpcCIpLnJlbW92ZUF0dHIoInRpdGxlIikpOy9eXGR7Mn0tLy50ZXN0KGEudGFyZ2V0LnZhbCgpKXx8L15cZHs0fS0oMVszLTldfChbMi05XVswLTldKSkvLnRlc3QoYS50YXJnZXQudmFsKCkpP2EudGFyZ2V0LmFkZENsYXNzKCJpbnZhbGlkSW5wdXQiKS5hdHRyKCJ0aXRsZSIsZS5uZWJMYW5nLmludmFsaWREYXRlRm9ybWF0KS50b29sdGlwKHt0b29sdGlwQ2xhc3M6ImFsYnVtX3Rvb2x0aXAiLApwb3NpdGlvbjp7bXk6ImNlbnRlciB0b3ArMzAiLGF0OiIifSxzaG93OntlZmZlY3Q6ImZhZGVJbiIsZHVyYXRpb246NTAwfSxjbG9zZTpmdW5jdGlvbigpe2UodGhpcykucmVtb3ZlKCl9fSk6YS50YXJnZXQucmVtb3ZlQ2xhc3MoImludmFsaWRJbnB1dCB0b29sdGlwIikucmVtb3ZlQXR0cigidGl0bGUiKX07YS5jb3JyZWN0RGF0ZT1mdW5jdGlvbihiLGMpe3ZvaWQgMD09PWMmJihjPSEwKTt2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmMDxiLmRpZmYoYS5vcHRpb25zLm1pbkRhdGUpP2I9YS5vcHRpb25zLm1pbkRhdGUuY2xvbmUoKTp2b2lkIDAhPT1hLm9wdGlvbnMubWF4RGF0ZSYmMD5iLmRpZmYoYS5vcHRpb25zLm1heERhdGUpJiYoYj1hLm9wdGlvbnMubWF4RGF0ZS5jbG9uZSgpKTtmb3IodmFyIGQ9MDt2b2lkIDAhPT1hLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cyYmYS5vcHRpb25zLmV4Y2x1ZGVkV2Vla2RheXMuY29udGFpbnMoYi5mb3JtYXQoIkUiKS50b0ludCgpKXx8CnZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiYwPGIuZGlmZihhLm9wdGlvbnMubWluRGF0ZSl8fHZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiYwPmIuZGlmZihhLm9wdGlvbnMubWF4RGF0ZSl8fHZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZERhdGVzJiZhLm9wdGlvbnMuZXhjbHVkZWREYXRlcy5jb250YWlucyhhLmZvcm1hdChiLCIldCIpKTspe2lmKDMxPT1kKWM9IWM7ZWxzZSBpZig2Mj09ZCl7Yj1hLm9wdGlvbnMubWluRGF0ZS5jbG9uZSgpO2JyZWFrfWM\/Yi5hZGQoImQiLDEpOmIuYWRkKCJkIiwtMSk7ZCsrfXJldHVybiBifTthLnNldERhdGU9ZnVuY3Rpb24oYixjKXt2b2lkIDA9PT1jJiYoYz0hMCk7Yj1uZWJEYXRlRm4uY2xlYXJUaW1lKCJkYXRlIj09dHlwZW9mIGI\/YjpuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYikpO251bGwhPT1iJiYoYS5zZWxlY3RlZERhdGU9YS5jb3JyZWN0RGF0ZShiKSxhLnZpZXdEYXRlPWEuc2VsZWN0ZWREYXRlLmNsb25lKCkuc2V0RGF5KDEpLAphLnJlbmRlcigpLGMmJmEucGljaygpKTtyZXR1cm4gYX07YS5nZXREYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGEuc2VsZWN0ZWREYXRlfTthLmluaXQoKX07ZS5mbi5uZWJDYWw9ZnVuY3Rpb24oaCxnKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYodm9pZCAwPT09ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBofHwib2JqZWN0Ij09dHlwZW9mIGgpe3ZhciBsPW5ldyBlLm5lYkNhbCh0aGlzLGgpO2UodGhpcykuZGF0YSgibmViQ2FsIixsKX19ZWxzZSBzd2l0Y2goaCl7Y2FzZSAiY2hhbmdlVmlldyI6aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBnKWJyZWFrO2UodGhpcykuZGF0YSgibmViQ2FsIikuY2hhbmdlVmlldyhnKTticmVhaztjYXNlICJtaW5EYXRlIjppZigidW5kZWZpbmVkIj09dHlwZW9mIGcpYnJlYWs7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS51cGRhdGVNaW5EYXRlKGcpO2JyZWFrO2Nhc2UgIm1heERhdGUiOmlmKCJ1bmRlZmluZWQiPT0KdHlwZW9mIGcpYnJlYWs7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS51cGRhdGVNYXhEYXRlKGcpO2JyZWFrO2Nhc2UgInNldERhdGUiOmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgZylicmVhaztlKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnNldERhdGUoZyk7YnJlYWs7Y2FzZSAicmVwb3NpdGlvbiI6ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS5wb3NpdGlvbigpfX0pfTtlLmZuLmdldENvb3JkaW5hdGVzPWZ1bmN0aW9uKGgpe2g9ZSh0aGlzKS5vZmZzZXQoKTt2YXIgZz1lKHRoaXMpLndpZHRoKCksbD1lKHRoaXMpLmhlaWdodCgpLGE9ZSh3aW5kb3cpLndpZHRoKCktaC5sZWZ0LWcsYj1lKHdpbmRvdykuaGVpZ2h0KCktaC50b3AtbDtyZXR1cm57dG9wOmgudG9wLGxlZnQ6aC5sZWZ0LHdpZHRoOmcsaGVpZ2h0OmwscmlnaHQ6YSxib3R0b206Yn19fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL3Z1ZS92dWUubWluLmpzICoqLwovKiENCiAqIFZ1ZS5qcyB2Mi42LjExDQogKiAoYykgMjAxNC0yMDE5IEV2YW4gWW91DQogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuDQogKi8NCiFmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9dCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKHQpOihlPWV8fHNlbGYpLlZ1ZT10KCl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9T2JqZWN0LmZyZWV6ZSh7fSk7ZnVuY3Rpb24gdChlKXtyZXR1cm4gbnVsbD09ZX1mdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lfWZ1bmN0aW9uIHIoZSl7cmV0dXJuITA9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGV8fCJzeW1ib2wiPT10eXBlb2YgZXx8ImJvb2xlYW4iPT10eXBlb2YgZX1mdW5jdGlvbiBvKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfXZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gcyhlKXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PWEuY2FsbChlKX1mdW5jdGlvbiBjKGUpe3ZhciB0PXBhcnNlRmxvYXQoU3RyaW5nKGUpKTtyZXR1cm4gdD49MCYmTWF0aC5mbG9vcih0KT09PXQmJmlzRmluaXRlKGUpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIG4oZSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRoZW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhdGNofWZ1bmN0aW9uIGwoZSl7cmV0dXJuIG51bGw9PWU\/IiI6QXJyYXkuaXNBcnJheShlKXx8cyhlKSYmZS50b1N0cmluZz09PWE\/SlNPTi5zdHJpbmdpZnkoZSxudWxsLDIpOlN0cmluZyhlKX1mdW5jdGlvbiBmKGUpe3ZhciB0PXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHQpP2U6dH1mdW5jdGlvbiBwKGUsdCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1lLnNwbGl0KCIsIiksaT0wO2k8ci5sZW5ndGg7aSsrKW5bcltpXV09ITA7cmV0dXJuIHQ\/ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXX06ZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19fXZhciBkPXAoInNsb3QsY29tcG9uZW50IiwhMCksdj1wKCJrZXkscmVmLHNsb3Qsc2xvdC1zY29wZSxpcyIpO2Z1bmN0aW9uIGgoZSx0KXtpZihlLmxlbmd0aCl7dmFyIG49ZS5pbmRleE9mKHQpO2lmKG4+LTEpcmV0dXJuIGUuc3BsaWNlKG4sMSl9fXZhciBtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24geShlLHQpe3JldHVybiBtLmNhbGwoZSx0KX1mdW5jdGlvbiBnKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0W25dfHwodFtuXT1lKG4pKX19dmFyIF89Ly0oXHcpL2csYj1nKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoXyxmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKToiIn0pfSksJD1nKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSl9KSx3PS9cQihbQS1aXSkvZyxDPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSh3LCItJDEiKS50b0xvd2VyQ2FzZSgpfSk7dmFyIHg9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ\/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5iaW5kKHQpfTpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4obil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcj9yPjE\/ZS5hcHBseSh0LGFyZ3VtZW50cyk6ZS5jYWxsKHQsbik6ZS5jYWxsKHQpfXJldHVybiBuLl9sZW5ndGg9ZS5sZW5ndGgsbn07ZnVuY3Rpb24gayhlLHQpe3Q9dHx8MDtmb3IodmFyIG49ZS5sZW5ndGgtdCxyPW5ldyBBcnJheShuKTtuLS07KXJbbl09ZVtuK3RdO3JldHVybiByfWZ1bmN0aW9uIEEoZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gTyhlKXtmb3IodmFyIHQ9e30sbj0wO248ZS5sZW5ndGg7bisrKWVbbl0mJkEodCxlW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBTKGUsdCxuKXt9dmFyIFQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExfSxFPWZ1bmN0aW9uKGUpe3JldHVybiBlfTtmdW5jdGlvbiBOKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7dmFyIG49byhlKSxyPW8odCk7aWYoIW58fCFyKXJldHVybiFuJiYhciYmU3RyaW5nKGUpPT09U3RyaW5nKHQpO3RyeXt2YXIgaT1BcnJheS5pc0FycmF5KGUpLGE9QXJyYXkuaXNBcnJheSh0KTtpZihpJiZhKXJldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoJiZlLmV2ZXJ5KGZ1bmN0aW9uKGUsbil7cmV0dXJuIE4oZSx0W25dKX0pO2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZS5nZXRUaW1lKCk9PT10LmdldFRpbWUoKTtpZihpfHxhKXJldHVybiExO3ZhciBzPU9iamVjdC5rZXlzKGUpLGM9T2JqZWN0LmtleXModCk7cmV0dXJuIHMubGVuZ3RoPT09Yy5sZW5ndGgmJnMuZXZlcnkoZnVuY3Rpb24obil7cmV0dXJuIE4oZVtuXSx0W25dKX0pfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBqKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoTihlW25dLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIEQoZSl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7dHx8KHQ9ITAsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX12YXIgTD0iZGF0YS1zZXJ2ZXItcmVuZGVyZWQiLE09WyJjb21wb25lbnQiLCJkaXJlY3RpdmUiLCJmaWx0ZXIiXSxJPVsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9yZU1vdW50IiwibW91bnRlZCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95IiwiZGVzdHJveWVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiLCJlcnJvckNhcHR1cmVkIiwic2VydmVyUHJlZmV0Y2giXSxGPXtvcHRpb25NZXJnZVN0cmF0ZWdpZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxzaWxlbnQ6ITEscHJvZHVjdGlvblRpcDohMSxkZXZ0b29sczohMSxwZXJmb3JtYW5jZTohMSxlcnJvckhhbmRsZXI6bnVsbCx3YXJuSGFuZGxlcjpudWxsLGlnbm9yZWRFbGVtZW50czpbXSxrZXlDb2RlczpPYmplY3QuY3JlYXRlKG51bGwpLGlzUmVzZXJ2ZWRUYWc6VCxpc1Jlc2VydmVkQXR0cjpULGlzVW5rbm93bkVsZW1lbnQ6VCxnZXRUYWdOYW1lc3BhY2U6UyxwYXJzZVBsYXRmb3JtVGFnTmFtZTpFLG11c3RVc2VQcm9wOlQsYXN5bmM6ITAsX2xpZmVjeWNsZUhvb2tzOkl9LFA9L2EtekEtWlx1MDBCN1x1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDNGLVx1MjA0MFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZELztmdW5jdGlvbiBSKGUsdCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9dmFyIEg9bmV3IFJlZ0V4cCgiW14iK1Auc291cmNlKyIuJF9cXGRdIik7dmFyIEIsVT0iX19wcm90b19fImlue30sej0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxWPSJ1bmRlZmluZWQiIT10eXBlb2YgV1hFbnZpcm9ubWVudCYmISFXWEVudmlyb25tZW50LnBsYXRmb3JtLEs9ViYmV1hFbnZpcm9ubWVudC5wbGF0Zm9ybS50b0xvd2VyQ2FzZSgpLEo9eiYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxxPUomJi9tc2llfHRyaWRlbnQvLnRlc3QoSiksVz1KJiZKLmluZGV4T2YoIm1zaWUgOS4wIik+MCxaPUomJkouaW5kZXhPZigiZWRnZS8iKT4wLEc9KEomJkouaW5kZXhPZigiYW5kcm9pZCIpLEomJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChKKXx8ImlvcyI9PT1LKSxYPShKJiYvY2hyb21lXC9cZCsvLnRlc3QoSiksSiYmL3BoYW50b21qcy8udGVzdChKKSxKJiZKLm1hdGNoKC9maXJlZm94XC8oXGQrKS8pKSxZPXt9LndhdGNoLFE9ITE7aWYoeil0cnl7dmFyIGVlPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlZSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1E9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxlZSl9Y2F0Y2goZSl7fXZhciB0ZT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1CJiYoQj0heiYmIVYmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsJiYoZ2xvYmFsLnByb2Nlc3MmJiJzZXJ2ZXIiPT09Z2xvYmFsLnByb2Nlc3MuZW52LlZVRV9FTlYpKSxCfSxuZT16JiZ3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztmdW5jdGlvbiByZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJpbmcoKSl9dmFyIGllLG9lPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZyZShTeW1ib2wpJiYidW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJnJlKFJlZmxlY3Qub3duS2V5cyk7aWU9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJnJlKFNldCk\/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4hMD09PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRbZV09ITB9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sZX0oKTt2YXIgYWU9UyxzZT0wLGNlPWZ1bmN0aW9uKCl7dGhpcy5pZD1zZSsrLHRoaXMuc3Vicz1bXX07Y2UucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihlKXt0aGlzLnN1YnMucHVzaChlKX0sY2UucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtoKHRoaXMuc3VicyxlKX0sY2UucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2NlLnRhcmdldCYmY2UudGFyZ2V0LmFkZERlcCh0aGlzKX0sY2UucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN1YnMuc2xpY2UoKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWVbdF0udXBkYXRlKCl9LGNlLnRhcmdldD1udWxsO3ZhciB1ZT1bXTtmdW5jdGlvbiBsZShlKXt1ZS5wdXNoKGUpLGNlLnRhcmdldD1lfWZ1bmN0aW9uIGZlKCl7dWUucG9wKCksY2UudGFyZ2V0PXVlW3VlLmxlbmd0aC0xXX12YXIgcGU9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSxzKXt0aGlzLnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9cix0aGlzLmVsbT1pLHRoaXMubnM9dm9pZCAwLHRoaXMuY29udGV4dD1vLHRoaXMuZm5Db250ZXh0PXZvaWQgMCx0aGlzLmZuT3B0aW9ucz12b2lkIDAsdGhpcy5mblNjb3BlSWQ9dm9pZCAwLHRoaXMua2V5PXQmJnQua2V5LHRoaXMuY29tcG9uZW50T3B0aW9ucz1hLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9dm9pZCAwLHRoaXMucGFyZW50PXZvaWQgMCx0aGlzLnJhdz0hMSx0aGlzLmlzU3RhdGljPSExLHRoaXMuaXNSb290SW5zZXJ0PSEwLHRoaXMuaXNDb21tZW50PSExLHRoaXMuaXNDbG9uZWQ9ITEsdGhpcy5pc09uY2U9ITEsdGhpcy5hc3luY0ZhY3Rvcnk9cyx0aGlzLmFzeW5jTWV0YT12b2lkIDAsdGhpcy5pc0FzeW5jUGxhY2Vob2xkZXI9ITF9LGRlPXtjaGlsZDp7Y29uZmlndXJhYmxlOiEwfX07ZGUuY2hpbGQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2V9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBlLnByb3RvdHlwZSxkZSk7dmFyIHZlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgdD1uZXcgcGU7cmV0dXJuIHQudGV4dD1lLHQuaXNDb21tZW50PSEwLHR9O2Z1bmN0aW9uIGhlKGUpe3JldHVybiBuZXcgcGUodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBtZShlKXt2YXIgdD1uZXcgcGUoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc2xpY2UoKSxlLnRleHQsZS5lbG0sZS5jb250ZXh0LGUuY29tcG9uZW50T3B0aW9ucyxlLmFzeW5jRmFjdG9yeSk7cmV0dXJuIHQubnM9ZS5ucyx0LmlzU3RhdGljPWUuaXNTdGF0aWMsdC5rZXk9ZS5rZXksdC5pc0NvbW1lbnQ9ZS5pc0NvbW1lbnQsdC5mbkNvbnRleHQ9ZS5mbkNvbnRleHQsdC5mbk9wdGlvbnM9ZS5mbk9wdGlvbnMsdC5mblNjb3BlSWQ9ZS5mblNjb3BlSWQsdC5hc3luY01ldGE9ZS5hc3luY01ldGEsdC5pc0Nsb25lZD0hMCx0fXZhciB5ZT1BcnJheS5wcm90b3R5cGUsZ2U9T2JqZWN0LmNyZWF0ZSh5ZSk7WyJwdXNoIiwicG9wIiwic2hpZnQiLCJ1bnNoaWZ0Iiwic3BsaWNlIiwic29ydCIsInJldmVyc2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PXllW2VdO1IoZ2UsZSxmdW5jdGlvbigpe2Zvcih2YXIgbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7ci0tOyluW3JdPWFyZ3VtZW50c1tyXTt2YXIgaSxvPXQuYXBwbHkodGhpcyxuKSxhPXRoaXMuX19vYl9fO3N3aXRjaChlKXtjYXNlInB1c2giOmNhc2UidW5zaGlmdCI6aT1uO2JyZWFrO2Nhc2Uic3BsaWNlIjppPW4uc2xpY2UoMil9cmV0dXJuIGkmJmEub2JzZXJ2ZUFycmF5KGkpLGEuZGVwLm5vdGlmeSgpLG99KX0pO3ZhciBfZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnZSksYmU9ITA7ZnVuY3Rpb24gJGUoZSl7YmU9ZX12YXIgd2U9ZnVuY3Rpb24oZSl7dmFyIHQ7dGhpcy52YWx1ZT1lLHRoaXMuZGVwPW5ldyBjZSx0aGlzLnZtQ291bnQ9MCxSKGUsIl9fb2JfXyIsdGhpcyksQXJyYXkuaXNBcnJheShlKT8oVT8odD1nZSxlLl9fcHJvdG9fXz10KTpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO1IoZSxvLHRbb10pfX0oZSxnZSxfZSksdGhpcy5vYnNlcnZlQXJyYXkoZSkpOnRoaXMud2FsayhlKX07ZnVuY3Rpb24gQ2UoZSx0KXt2YXIgbjtpZihvKGUpJiYhKGUgaW5zdGFuY2VvZiBwZSkpcmV0dXJuIHkoZSwiX19vYl9fIikmJmUuX19vYl9fIGluc3RhbmNlb2Ygd2U\/bj1lLl9fb2JfXzpiZSYmIXRlKCkmJihBcnJheS5pc0FycmF5KGUpfHxzKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgd2UoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24geGUoZSx0LG4scixpKXt2YXIgbz1uZXcgY2UsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYoIWF8fCExIT09YS5jb25maWd1cmFibGUpe3ZhciBzPWEmJmEuZ2V0LGM9YSYmYS5zZXQ7cyYmIWN8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwobj1lW3RdKTt2YXIgdT0haSYmQ2Uobik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9cz9zLmNhbGwoZSk6bjtyZXR1cm4gY2UudGFyZ2V0JiYoby5kZXBlbmQoKSx1JiYodS5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheSh0KSYmZnVuY3Rpb24gZSh0KXtmb3IodmFyIG49dm9pZCAwLHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspKG49dFtyXSkmJm4uX19vYl9fJiZuLl9fb2JfXy5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShuKSYmZShuKX0odCkpKSx0fSxzZXQ6ZnVuY3Rpb24odCl7dmFyIHI9cz9zLmNhbGwoZSk6bjt0PT09cnx8dCE9dCYmciE9cnx8cyYmIWN8fChjP2MuY2FsbChlLHQpOm49dCx1PSFpJiZDZSh0KSxvLm5vdGlmeSgpKX19KX19ZnVuY3Rpb24ga2UoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkmJmModCkpcmV0dXJuIGUubGVuZ3RoPU1hdGgubWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKHQgaW4gZSYmISh0IGluIE9iamVjdC5wcm90b3R5cGUpKXJldHVybiBlW3RdPW4sbjt2YXIgcj1lLl9fb2JfXztyZXR1cm4gZS5faXNWdWV8fHImJnIudm1Db3VudD9uOnI\/KHhlKHIudmFsdWUsdCxuKSxyLmRlcC5ub3RpZnkoKSxuKTooZVt0XT1uLG4pfWZ1bmN0aW9uIEFlKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSYmYyh0KSllLnNwbGljZSh0LDEpO2Vsc2V7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3VudHx8eShlLHQpJiYoZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfX13ZS5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bisrKXhlKGUsdFtuXSl9LHdlLnByb3RvdHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKUNlKGVbdF0pfTt2YXIgT2U9Ri5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7ZnVuY3Rpb24gU2UoZSx0KXtpZighdClyZXR1cm4gZTtmb3IodmFyIG4scixpLG89b2U\/UmVmbGVjdC5vd25LZXlzKHQpOk9iamVjdC5rZXlzKHQpLGE9MDthPG8ubGVuZ3RoO2ErKykiX19vYl9fIiE9PShuPW9bYV0pJiYocj1lW25dLGk9dFtuXSx5KGUsbik\/ciE9PWkmJnMocikmJnMoaSkmJlNlKHIsaSk6a2UoZSxuLGkpKTtyZXR1cm4gZX1mdW5jdGlvbiBUZShlLHQsbil7cmV0dXJuIG4\/ZnVuY3Rpb24oKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwobixuKTp0LGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU\/ZS5jYWxsKG4sbik6ZTtyZXR1cm4gcj9TZShyLGkpOml9OnQ\/ZT9mdW5jdGlvbigpe3JldHVybiBTZSgiZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwodGhpcyx0aGlzKTp0LCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuY2FsbCh0aGlzLHRoaXMpOmUpfTp0OmV9ZnVuY3Rpb24gRWUoZSx0KXt2YXIgbj10P2U\/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90Olt0XTplO3JldHVybiBuP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspLTE9PT10LmluZGV4T2YoZVtuXSkmJnQucHVzaChlW25dKTtyZXR1cm4gdH0obik6bn1mdW5jdGlvbiBOZShlLHQsbixyKXt2YXIgaT1PYmplY3QuY3JlYXRlKGV8fG51bGwpO3JldHVybiB0P0EoaSx0KTppfU9lLmRhdGE9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP1RlKGUsdCxuKTp0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOlRlKGUsdCl9LEkuZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlXT1FZX0pLE0uZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlKyJzIl09TmV9KSxPZS53YXRjaD1mdW5jdGlvbihlLHQsbixyKXtpZihlPT09WSYmKGU9dm9pZCAwKSx0PT09WSYmKHQ9dm9pZCAwKSwhdClyZXR1cm4gT2JqZWN0LmNyZWF0ZShlfHxudWxsKTtpZighZSlyZXR1cm4gdDt2YXIgaT17fTtmb3IodmFyIG8gaW4gQShpLGUpLHQpe3ZhciBhPWlbb10scz10W29dO2EmJiFBcnJheS5pc0FycmF5KGEpJiYoYT1bYV0pLGlbb109YT9hLmNvbmNhdChzKTpBcnJheS5pc0FycmF5KHMpP3M6W3NdfXJldHVybiBpfSxPZS5wcm9wcz1PZS5tZXRob2RzPU9lLmluamVjdD1PZS5jb21wdXRlZD1mdW5jdGlvbihlLHQsbixyKXtpZighZSlyZXR1cm4gdDt2YXIgaT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBBKGksZSksdCYmQShpLHQpLGl9LE9lLnByb3ZpZGU9VGU7dmFyIGplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ\/ZTp0fTtmdW5jdGlvbiBEZShlLHQsbil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJih0PXQub3B0aW9ucyksZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnByb3BzO2lmKG4pe3ZhciByLGksbz17fTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihyPW4ubGVuZ3RoO3ItLTspInN0cmluZyI9PXR5cGVvZihpPW5bcl0pJiYob1tiKGkpXT17dHlwZTpudWxsfSk7ZWxzZSBpZihzKG4pKWZvcih2YXIgYSBpbiBuKWk9blthXSxvW2IoYSldPXMoaSk\/aTp7dHlwZTppfTtlLnByb3BzPW99fSh0KSxmdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5qZWN0O2lmKG4pe3ZhciByPWUuaW5qZWN0PXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspcltuW2ldXT17ZnJvbTpuW2ldfTtlbHNlIGlmKHMobikpZm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107cltvXT1zKGEpP0Eoe2Zyb206b30sYSk6e2Zyb206YX19fX0odCksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXJlY3RpdmVzO2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07ImZ1bmN0aW9uIj09dHlwZW9mIHImJih0W25dPXtiaW5kOnIsdXBkYXRlOnJ9KX19KHQpLCF0Ll9iYXNlJiYodC5leHRlbmRzJiYoZT1EZShlLHQuZXh0ZW5kcyxuKSksdC5taXhpbnMpKWZvcih2YXIgcj0wLGk9dC5taXhpbnMubGVuZ3RoO3I8aTtyKyspZT1EZShlLHQubWl4aW5zW3JdLG4pO3ZhciBvLGE9e307Zm9yKG8gaW4gZSljKG8pO2ZvcihvIGluIHQpeShlLG8pfHxjKG8pO2Z1bmN0aW9uIGMocil7dmFyIGk9T2Vbcl18fGplO2Fbcl09aShlW3JdLHRbcl0sbixyKX1yZXR1cm4gYX1mdW5jdGlvbiBMZShlLHQsbixyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBpPWVbdF07aWYoeShpLG4pKXJldHVybiBpW25dO3ZhciBvPWIobik7aWYoeShpLG8pKXJldHVybiBpW29dO3ZhciBhPSQobyk7cmV0dXJuIHkoaSxhKT9pW2FdOmlbbl18fGlbb118fGlbYV19fWZ1bmN0aW9uIE1lKGUsdCxuLHIpe3ZhciBpPXRbZV0sbz0heShuLGUpLGE9bltlXSxzPVBlKEJvb2xlYW4saS50eXBlKTtpZihzPi0xKWlmKG8mJiF5KGksImRlZmF1bHQiKSlhPSExO2Vsc2UgaWYoIiI9PT1hfHxhPT09QyhlKSl7dmFyIGM9UGUoU3RyaW5nLGkudHlwZSk7KGM8MHx8czxjKSYmKGE9ITApfWlmKHZvaWQgMD09PWEpe2E9ZnVuY3Rpb24oZSx0LG4pe2lmKCF5KHQsImRlZmF1bHQiKSlyZXR1cm47dmFyIHI9dC5kZWZhdWx0O2lmKGUmJmUuJG9wdGlvbnMucHJvcHNEYXRhJiZ2b2lkIDA9PT1lLiRvcHRpb25zLnByb3BzRGF0YVtuXSYmdm9pZCAwIT09ZS5fcHJvcHNbbl0pcmV0dXJuIGUuX3Byb3BzW25dO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiYiRnVuY3Rpb24iIT09SWUodC50eXBlKT9yLmNhbGwoZSk6cn0ocixpLGUpO3ZhciB1PWJlOyRlKCEwKSxDZShhKSwkZSh1KX1yZXR1cm4gYX1mdW5jdGlvbiBJZShlKXt2YXIgdD1lJiZlLnRvU3RyaW5nKCkubWF0Y2goL15ccypmdW5jdGlvbiAoXHcrKS8pO3JldHVybiB0P3RbMV06IiJ9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm4gSWUoZSk9PT1JZSh0KX1mdW5jdGlvbiBQZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiBGZSh0LGUpPzA6LTE7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKEZlKHRbbl0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gUmUoZSx0LG4pe2xlKCk7dHJ5e2lmKHQpZm9yKHZhciByPXQ7cj1yLiRwYXJlbnQ7KXt2YXIgaT1yLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7aWYoaSlmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyl0cnl7aWYoITE9PT1pW29dLmNhbGwocixlLHQsbikpcmV0dXJufWNhdGNoKGUpe0JlKGUsciwiZXJyb3JDYXB0dXJlZCBob29rIil9fUJlKGUsdCxuKX1maW5hbGx5e2ZlKCl9fWZ1bmN0aW9uIEhlKGUsdCxuLHIsaSl7dmFyIG87dHJ5eyhvPW4\/ZS5hcHBseSh0LG4pOmUuY2FsbCh0KSkmJiFvLl9pc1Z1ZSYmdShvKSYmIW8uX2hhbmRsZWQmJihvLmNhdGNoKGZ1bmN0aW9uKGUpe3JldHVybiBSZShlLHIsaSsiIChQcm9taXNlL2FzeW5jKSIpfSksby5faGFuZGxlZD0hMCl9Y2F0Y2goZSl7UmUoZSxyLGkpfXJldHVybiBvfWZ1bmN0aW9uIEJlKGUsdCxuKXtpZihGLmVycm9ySGFuZGxlcil0cnl7cmV0dXJuIEYuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCxlLHQsbil9Y2F0Y2godCl7dCE9PWUmJlVlKHQsbnVsbCwiY29uZmlnLmVycm9ySGFuZGxlciIpfVVlKGUsdCxuKX1mdW5jdGlvbiBVZShlLHQsbil7aWYoIXomJiFWfHwidW5kZWZpbmVkIj09dHlwZW9mIGNvbnNvbGUpdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfXZhciB6ZSxWZT0hMSxLZT1bXSxKZT0hMTtmdW5jdGlvbiBxZSgpe0plPSExO3ZhciBlPUtlLnNsaWNlKDApO0tlLmxlbmd0aD0wO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0oKX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIFByb21pc2UmJnJlKFByb21pc2UpKXt2YXIgV2U9UHJvbWlzZS5yZXNvbHZlKCk7emU9ZnVuY3Rpb24oKXtXZS50aGVuKHFlKSxHJiZzZXRUaW1lb3V0KFMpfSxWZT0hMH1lbHNlIGlmKHF8fCJ1bmRlZmluZWQiPT10eXBlb2YgTXV0YXRpb25PYnNlcnZlcnx8IXJlKE11dGF0aW9uT2JzZXJ2ZXIpJiYiW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdIiE9PU11dGF0aW9uT2JzZXJ2ZXIudG9TdHJpbmcoKSl6ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHNldEltbWVkaWF0ZSYmcmUoc2V0SW1tZWRpYXRlKT9mdW5jdGlvbigpe3NldEltbWVkaWF0ZShxZSl9OmZ1bmN0aW9uKCl7c2V0VGltZW91dChxZSwwKX07ZWxzZXt2YXIgWmU9MSxHZT1uZXcgTXV0YXRpb25PYnNlcnZlcihxZSksWGU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKFplKSk7R2Uub2JzZXJ2ZShYZSx7Y2hhcmFjdGVyRGF0YTohMH0pLHplPWZ1bmN0aW9uKCl7WmU9KFplKzEpJTIsWGUuZGF0YT1TdHJpbmcoWmUpfSxWZT0hMH1mdW5jdGlvbiBZZShlLHQpe3ZhciBuO2lmKEtlLnB1c2goZnVuY3Rpb24oKXtpZihlKXRyeXtlLmNhbGwodCl9Y2F0Y2goZSl7UmUoZSx0LCJuZXh0VGljayIpfWVsc2UgbiYmbih0KX0pLEplfHwoSmU9ITAsemUoKSksIWUmJiJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7bj1lfSl9dmFyIFFlPW5ldyBpZTtmdW5jdGlvbiBldChlKXshZnVuY3Rpb24gZSh0LG4pe3ZhciByLGk7dmFyIGE9QXJyYXkuaXNBcnJheSh0KTtpZighYSYmIW8odCl8fE9iamVjdC5pc0Zyb3plbih0KXx8dCBpbnN0YW5jZW9mIHBlKXJldHVybjtpZih0Ll9fb2JfXyl7dmFyIHM9dC5fX29iX18uZGVwLmlkO2lmKG4uaGFzKHMpKXJldHVybjtuLmFkZChzKX1pZihhKWZvcihyPXQubGVuZ3RoO3ItLTspZSh0W3JdLG4pO2Vsc2UgZm9yKGk9T2JqZWN0LmtleXModCkscj1pLmxlbmd0aDtyLS07KWUodFtpW3JdXSxuKX0oZSxRZSksUWUuY2xlYXIoKX12YXIgdHQ9ZyhmdW5jdGlvbihlKXt2YXIgdD0iJiI9PT1lLmNoYXJBdCgwKSxuPSJ+Ij09PShlPXQ\/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCkscj0iISI9PT0oZT1uP2Uuc2xpY2UoMSk6ZSkuY2hhckF0KDApO3JldHVybntuYW1lOmU9cj9lLnNsaWNlKDEpOmUsb25jZTpuLGNhcHR1cmU6cixwYXNzaXZlOnR9fSk7ZnVuY3Rpb24gbnQoZSx0KXtmdW5jdGlvbiBuKCl7dmFyIGU9YXJndW1lbnRzLHI9bi5mbnM7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIEhlKHIsbnVsbCxhcmd1bWVudHMsdCwidi1vbiBoYW5kbGVyIik7Zm9yKHZhciBpPXIuc2xpY2UoKSxvPTA7bzxpLmxlbmd0aDtvKyspSGUoaVtvXSxudWxsLGUsdCwidi1vbiBoYW5kbGVyIil9cmV0dXJuIG4uZm5zPWUsbn1mdW5jdGlvbiBydChlLG4saSxvLGEscyl7dmFyIGMsdSxsLGY7Zm9yKGMgaW4gZSl1PWVbY10sbD1uW2NdLGY9dHQoYyksdCh1KXx8KHQobCk\/KHQodS5mbnMpJiYodT1lW2NdPW50KHUscykpLHIoZi5vbmNlKSYmKHU9ZVtjXT1hKGYubmFtZSx1LGYuY2FwdHVyZSkpLGkoZi5uYW1lLHUsZi5jYXB0dXJlLGYucGFzc2l2ZSxmLnBhcmFtcykpOnUhPT1sJiYobC5mbnM9dSxlW2NdPWwpKTtmb3IoYyBpbiBuKXQoZVtjXSkmJm8oKGY9dHQoYykpLm5hbWUsbltjXSxmLmNhcHR1cmUpfWZ1bmN0aW9uIGl0KGUsaSxvKXt2YXIgYTtlIGluc3RhbmNlb2YgcGUmJihlPWUuZGF0YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pKTt2YXIgcz1lW2ldO2Z1bmN0aW9uIGMoKXtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoKGEuZm5zLGMpfXQocyk\/YT1udChbY10pOm4ocy5mbnMpJiZyKHMubWVyZ2VkKT8oYT1zKS5mbnMucHVzaChjKTphPW50KFtzLGNdKSxhLm1lcmdlZD0hMCxlW2ldPWF9ZnVuY3Rpb24gb3QoZSx0LHIsaSxvKXtpZihuKHQpKXtpZih5KHQscikpcmV0dXJuIGVbcl09dFtyXSxvfHxkZWxldGUgdFtyXSwhMDtpZih5KHQsaSkpcmV0dXJuIGVbcl09dFtpXSxvfHxkZWxldGUgdFtpXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhdChlKXtyZXR1cm4gaShlKT9baGUoZSldOkFycmF5LmlzQXJyYXkoZSk\/ZnVuY3Rpb24gZShvLGEpe3ZhciBzPVtdO3ZhciBjLHUsbCxmO2ZvcihjPTA7YzxvLmxlbmd0aDtjKyspdCh1PW9bY10pfHwiYm9vbGVhbiI9PXR5cGVvZiB1fHwobD1zLmxlbmd0aC0xLGY9c1tsXSxBcnJheS5pc0FycmF5KHUpP3UubGVuZ3RoPjAmJihzdCgodT1lKHUsKGF8fCIiKSsiXyIrYykpWzBdKSYmc3QoZikmJihzW2xdPWhlKGYudGV4dCt1WzBdLnRleHQpLHUuc2hpZnQoKSkscy5wdXNoLmFwcGx5KHMsdSkpOmkodSk\/c3QoZik\/c1tsXT1oZShmLnRleHQrdSk6IiIhPT11JiZzLnB1c2goaGUodSkpOnN0KHUpJiZzdChmKT9zW2xdPWhlKGYudGV4dCt1LnRleHQpOihyKG8uX2lzVkxpc3QpJiZuKHUudGFnKSYmdCh1LmtleSkmJm4oYSkmJih1LmtleT0iX192bGlzdCIrYSsiXyIrYysiX18iKSxzLnB1c2godSkpKTtyZXR1cm4gc30oZSk6dm9pZCAwfWZ1bmN0aW9uIHN0KGUpe3JldHVybiBuKGUpJiZuKGUudGV4dCkmJiExPT09ZS5pc0NvbW1lbnR9ZnVuY3Rpb24gY3QoZSx0KXtpZihlKXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPW9lP1JlZmxlY3Qub3duS2V5cyhlKTpPYmplY3Qua2V5cyhlKSxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV07aWYoIl9fb2JfXyIhPT1vKXtmb3IodmFyIGE9ZVtvXS5mcm9tLHM9dDtzOyl7aWYocy5fcHJvdmlkZWQmJnkocy5fcHJvdmlkZWQsYSkpe25bb109cy5fcHJvdmlkZWRbYV07YnJlYWt9cz1zLiRwYXJlbnR9aWYoIXMmJiJkZWZhdWx0ImluIGVbb10pe3ZhciBjPWVbb10uZGVmYXVsdDtuW29dPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2MuY2FsbCh0KTpjfX19cmV0dXJuIG59fWZ1bmN0aW9uIHV0KGUsdCl7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm57fTtmb3IodmFyIG49e30scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7dmFyIG89ZVtyXSxhPW8uZGF0YTtpZihhJiZhLmF0dHJzJiZhLmF0dHJzLnNsb3QmJmRlbGV0ZSBhLmF0dHJzLnNsb3Qsby5jb250ZXh0IT09dCYmby5mbkNvbnRleHQhPT10fHwhYXx8bnVsbD09YS5zbG90KShuLmRlZmF1bHR8fChuLmRlZmF1bHQ9W10pKS5wdXNoKG8pO2Vsc2V7dmFyIHM9YS5zbG90LGM9bltzXXx8KG5bc109W10pOyJ0ZW1wbGF0ZSI9PT1vLnRhZz9jLnB1c2guYXBwbHkoYyxvLmNoaWxkcmVufHxbXSk6Yy5wdXNoKG8pfX1mb3IodmFyIHUgaW4gbiluW3VdLmV2ZXJ5KGx0KSYmZGVsZXRlIG5bdV07cmV0dXJuIG59ZnVuY3Rpb24gbHQoZSl7cmV0dXJuIGUuaXNDb21tZW50JiYhZS5hc3luY0ZhY3Rvcnl8fCIgIj09PWUudGV4dH1mdW5jdGlvbiBmdCh0LG4scil7dmFyIGksbz1PYmplY3Qua2V5cyhuKS5sZW5ndGg+MCxhPXQ\/ISF0LiRzdGFibGU6IW8scz10JiZ0LiRrZXk7aWYodCl7aWYodC5fbm9ybWFsaXplZClyZXR1cm4gdC5fbm9ybWFsaXplZDtpZihhJiZyJiZyIT09ZSYmcz09PXIuJGtleSYmIW8mJiFyLiRoYXNOb3JtYWwpcmV0dXJuIHI7Zm9yKHZhciBjIGluIGk9e30sdCl0W2NdJiYiJCIhPT1jWzBdJiYoaVtjXT1wdChuLGMsdFtjXSkpfWVsc2UgaT17fTtmb3IodmFyIHUgaW4gbil1IGluIGl8fChpW3VdPWR0KG4sdSkpO3JldHVybiB0JiZPYmplY3QuaXNFeHRlbnNpYmxlKHQpJiYodC5fbm9ybWFsaXplZD1pKSxSKGksIiRzdGFibGUiLGEpLFIoaSwiJGtleSIscyksUihpLCIkaGFzTm9ybWFsIixvKSxpfWZ1bmN0aW9uIHB0KGUsdCxuKXt2YXIgcj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg\/bi5hcHBseShudWxsLGFyZ3VtZW50cyk6bih7fSk7cmV0dXJuKGU9ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKT9bZV06YXQoZSkpJiYoMD09PWUubGVuZ3RofHwxPT09ZS5sZW5ndGgmJmVbMF0uaXNDb21tZW50KT92b2lkIDA6ZX07cmV0dXJuIG4ucHJveHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldDpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSkscn1mdW5jdGlvbiBkdChlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlW3RdfX1mdW5jdGlvbiB2dChlLHQpe3ZhciByLGksYSxzLGM7aWYoQXJyYXkuaXNBcnJheShlKXx8InN0cmluZyI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlLmxlbmd0aCksaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylyW2ldPXQoZVtpXSxpKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iocj1uZXcgQXJyYXkoZSksaT0wO2k8ZTtpKyspcltpXT10KGkrMSxpKTtlbHNlIGlmKG8oZSkpaWYob2UmJmVbU3ltYm9sLml0ZXJhdG9yXSl7cj1bXTtmb3IodmFyIHU9ZVtTeW1ib2wuaXRlcmF0b3JdKCksbD11Lm5leHQoKTshbC5kb25lOylyLnB1c2godChsLnZhbHVlLHIubGVuZ3RoKSksbD11Lm5leHQoKX1lbHNlIGZvcihzPU9iamVjdC5rZXlzKGUpLHI9bmV3IEFycmF5KHMubGVuZ3RoKSxpPTAsYT1zLmxlbmd0aDtpPGE7aSsrKWM9c1tpXSxyW2ldPXQoZVtjXSxjLGkpO3JldHVybiBuKHIpfHwocj1bXSksci5faXNWTGlzdD0hMCxyfWZ1bmN0aW9uIGh0KGUsdCxuLHIpe3ZhciBpLG89dGhpcy4kc2NvcGVkU2xvdHNbZV07bz8obj1ufHx7fSxyJiYobj1BKEEoe30sciksbikpLGk9byhuKXx8dCk6aT10aGlzLiRzbG90c1tlXXx8dDt2YXIgYT1uJiZuLnNsb3Q7cmV0dXJuIGE\/dGhpcy4kY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiLHtzbG90OmF9LGkpOml9ZnVuY3Rpb24gbXQoZSl7cmV0dXJuIExlKHRoaXMuJG9wdGlvbnMsImZpbHRlcnMiLGUpfHxFfWZ1bmN0aW9uIHl0KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/LTE9PT1lLmluZGV4T2YodCk6ZSE9PXR9ZnVuY3Rpb24gZ3QoZSx0LG4scixpKXt2YXIgbz1GLmtleUNvZGVzW3RdfHxuO3JldHVybiBpJiZyJiYhRi5rZXlDb2Rlc1t0XT95dChpLHIpOm8\/eXQobyxlKTpyP0MocikhPT10OnZvaWQgMH1mdW5jdGlvbiBfdChlLHQsbixyLGkpe2lmKG4paWYobyhuKSl7dmFyIGE7QXJyYXkuaXNBcnJheShuKSYmKG49TyhuKSk7dmFyIHM9ZnVuY3Rpb24obyl7aWYoImNsYXNzIj09PW98fCJzdHlsZSI9PT1vfHx2KG8pKWE9ZTtlbHNle3ZhciBzPWUuYXR0cnMmJmUuYXR0cnMudHlwZTthPXJ8fEYubXVzdFVzZVByb3AodCxzLG8pP2UuZG9tUHJvcHN8fChlLmRvbVByb3BzPXt9KTplLmF0dHJzfHwoZS5hdHRycz17fSl9dmFyIGM9YihvKSx1PUMobyk7YyBpbiBhfHx1IGluIGF8fChhW29dPW5bb10saSYmKChlLm9ufHwoZS5vbj17fSkpWyJ1cGRhdGU6IitvXT1mdW5jdGlvbihlKXtuW29dPWV9KSl9O2Zvcih2YXIgYyBpbiBuKXMoYyl9ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBidChlLHQpe3ZhciBuPXRoaXMuX3N0YXRpY1RyZWVzfHwodGhpcy5fc3RhdGljVHJlZXM9W10pLHI9bltlXTtyZXR1cm4gciYmIXQ\/cjood3Qocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSwiX19zdGF0aWNfXyIrZSwhMSkscil9ZnVuY3Rpb24gJHQoZSx0LG4pe3JldHVybiB3dChlLCJfX29uY2VfXyIrdCsobj8iXyIrbjoiIiksITApLGV9ZnVuY3Rpb24gd3QoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXSYmInN0cmluZyIhPXR5cGVvZiBlW3JdJiZDdChlW3JdLHQrIl8iK3Isbik7ZWxzZSBDdChlLHQsbil9ZnVuY3Rpb24gQ3QoZSx0LG4pe2UuaXNTdGF0aWM9ITAsZS5rZXk9dCxlLmlzT25jZT1ufWZ1bmN0aW9uIHh0KGUsdCl7aWYodClpZihzKHQpKXt2YXIgbj1lLm9uPWUub24\/QSh7fSxlLm9uKTp7fTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9bltyXSxvPXRbcl07bltyXT1pP1tdLmNvbmNhdChpLG8pOm99fWVsc2U7cmV0dXJuIGV9ZnVuY3Rpb24ga3QoZSx0LG4scil7dD10fHx7JHN0YWJsZTohbn07Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07QXJyYXkuaXNBcnJheShvKT9rdChvLHQsbik6byYmKG8ucHJveHkmJihvLmZuLnByb3h5PSEwKSx0W28ua2V5XT1vLmZuKX1yZXR1cm4gciYmKHQuJGtleT1yKSx0fWZ1bmN0aW9uIEF0KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2YXIgcj10W25dOyJzdHJpbmciPT10eXBlb2YgciYmciYmKGVbdFtuXV09dFtuKzFdKX1yZXR1cm4gZX1mdW5jdGlvbiBPdChlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT90K2U6ZX1mdW5jdGlvbiBTdChlKXtlLl9vPSR0LGUuX249ZixlLl9zPWwsZS5fbD12dCxlLl90PWh0LGUuX3E9TixlLl9pPWosZS5fbT1idCxlLl9mPW10LGUuX2s9Z3QsZS5fYj1fdCxlLl92PWhlLGUuX2U9dmUsZS5fdT1rdCxlLl9nPXh0LGUuX2Q9QXQsZS5fcD1PdH1mdW5jdGlvbiBUdCh0LG4saSxvLGEpe3ZhciBzLGM9dGhpcyx1PWEub3B0aW9uczt5KG8sIl91aWQiKT8ocz1PYmplY3QuY3JlYXRlKG8pKS5fb3JpZ2luYWw9bzoocz1vLG89by5fb3JpZ2luYWwpO3ZhciBsPXIodS5fY29tcGlsZWQpLGY9IWw7dGhpcy5kYXRhPXQsdGhpcy5wcm9wcz1uLHRoaXMuY2hpbGRyZW49aSx0aGlzLnBhcmVudD1vLHRoaXMubGlzdGVuZXJzPXQub258fGUsdGhpcy5pbmplY3Rpb25zPWN0KHUuaW5qZWN0LG8pLHRoaXMuc2xvdHM9ZnVuY3Rpb24oKXtyZXR1cm4gYy4kc2xvdHN8fGZ0KHQuc2NvcGVkU2xvdHMsYy4kc2xvdHM9dXQoaSxvKSksYy4kc2xvdHN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzY29wZWRTbG90cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ0KHQuc2NvcGVkU2xvdHMsdGhpcy5zbG90cygpKX19KSxsJiYodGhpcy4kb3B0aW9ucz11LHRoaXMuJHNsb3RzPXRoaXMuc2xvdHMoKSx0aGlzLiRzY29wZWRTbG90cz1mdCh0LnNjb3BlZFNsb3RzLHRoaXMuJHNsb3RzKSksdS5fc2NvcGVJZD90aGlzLl9jPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPVB0KHMsZSx0LG4scixmKTtyZXR1cm4gaSYmIUFycmF5LmlzQXJyYXkoaSkmJihpLmZuU2NvcGVJZD11Ll9zY29wZUlkLGkuZm5Db250ZXh0PW8pLGl9OnRoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIFB0KHMsZSx0LG4scixmKX19ZnVuY3Rpb24gRXQoZSx0LG4scixpKXt2YXIgbz1tZShlKTtyZXR1cm4gby5mbkNvbnRleHQ9bixvLmZuT3B0aW9ucz1yLHQuc2xvdCYmKChvLmRhdGF8fChvLmRhdGE9e30pKS5zbG90PXQuc2xvdCksb31mdW5jdGlvbiBOdChlLHQpe2Zvcih2YXIgbiBpbiB0KWVbYihuKV09dFtuXX1TdChUdC5wcm90b3R5cGUpO3ZhciBqdD17aW5pdDpmdW5jdGlvbihlLHQpe2lmKGUuY29tcG9uZW50SW5zdGFuY2UmJiFlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCYmZS5kYXRhLmtlZXBBbGl2ZSl7dmFyIHI9ZTtqdC5wcmVwYXRjaChyLHIpfWVsc2V7KGUuY29tcG9uZW50SW5zdGFuY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj17X2lzQ29tcG9uZW50OiEwLF9wYXJlbnRWbm9kZTplLHBhcmVudDp0fSxpPWUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtuKGkpJiYoci5yZW5kZXI9aS5yZW5kZXIsci5zdGF0aWNSZW5kZXJGbnM9aS5zdGF0aWNSZW5kZXJGbnMpO3JldHVybiBuZXcgZS5jb21wb25lbnRPcHRpb25zLkN0b3Iocil9KGUsV3QpKS4kbW91bnQodD9lLmVsbTp2b2lkIDAsdCl9fSxwcmVwYXRjaDpmdW5jdGlvbih0LG4pe3ZhciByPW4uY29tcG9uZW50T3B0aW9uczshZnVuY3Rpb24odCxuLHIsaSxvKXt2YXIgYT1pLmRhdGEuc2NvcGVkU2xvdHMscz10LiRzY29wZWRTbG90cyxjPSEhKGEmJiFhLiRzdGFibGV8fHMhPT1lJiYhcy4kc3RhYmxlfHxhJiZ0LiRzY29wZWRTbG90cy4ka2V5IT09YS4ka2V5KSx1PSEhKG98fHQuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHxjKTt0LiRvcHRpb25zLl9wYXJlbnRWbm9kZT1pLHQuJHZub2RlPWksdC5fdm5vZGUmJih0Ll92bm9kZS5wYXJlbnQ9aSk7aWYodC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49byx0LiRhdHRycz1pLmRhdGEuYXR0cnN8fGUsdC4kbGlzdGVuZXJzPXJ8fGUsbiYmdC4kb3B0aW9ucy5wcm9wcyl7JGUoITEpO2Zvcih2YXIgbD10Ll9wcm9wcyxmPXQuJG9wdGlvbnMuX3Byb3BLZXlzfHxbXSxwPTA7cDxmLmxlbmd0aDtwKyspe3ZhciBkPWZbcF0sdj10LiRvcHRpb25zLnByb3BzO2xbZF09TWUoZCx2LG4sdCl9JGUoITApLHQuJG9wdGlvbnMucHJvcHNEYXRhPW59cj1yfHxlO3ZhciBoPXQuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0LiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9cixxdCh0LHIsaCksdSYmKHQuJHNsb3RzPXV0KG8saS5jb250ZXh0KSx0LiRmb3JjZVVwZGF0ZSgpKX0obi5jb21wb25lbnRJbnN0YW5jZT10LmNvbXBvbmVudEluc3RhbmNlLHIucHJvcHNEYXRhLHIubGlzdGVuZXJzLG4sci5jaGlsZHJlbil9LGluc2VydDpmdW5jdGlvbihlKXt2YXIgdCxuPWUuY29udGV4dCxyPWUuY29tcG9uZW50SW5zdGFuY2U7ci5faXNNb3VudGVkfHwoci5faXNNb3VudGVkPSEwLFl0KHIsIm1vdW50ZWQiKSksZS5kYXRhLmtlZXBBbGl2ZSYmKG4uX2lzTW91bnRlZD8oKHQ9cikuX2luYWN0aXZlPSExLGVuLnB1c2godCkpOlh0KHIsITApKX0sZGVzdHJveTpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbXBvbmVudEluc3RhbmNlO3QuX2lzRGVzdHJveWVkfHwoZS5kYXRhLmtlZXBBbGl2ZT9mdW5jdGlvbiBlKHQsbil7aWYobiYmKHQuX2RpcmVjdEluYWN0aXZlPSEwLEd0KHQpKSlyZXR1cm47aWYoIXQuX2luYWN0aXZlKXt0Ll9pbmFjdGl2ZT0hMDtmb3IodmFyIHI9MDtyPHQuJGNoaWxkcmVuLmxlbmd0aDtyKyspZSh0LiRjaGlsZHJlbltyXSk7WXQodCwiZGVhY3RpdmF0ZWQiKX19KHQsITApOnQuJGRlc3Ryb3koKSl9fSxEdD1PYmplY3Qua2V5cyhqdCk7ZnVuY3Rpb24gTHQoaSxhLHMsYyxsKXtpZighdChpKSl7dmFyIGY9cy4kb3B0aW9ucy5fYmFzZTtpZihvKGkpJiYoaT1mLmV4dGVuZChpKSksImZ1bmN0aW9uIj09dHlwZW9mIGkpe3ZhciBwO2lmKHQoaS5jaWQpJiZ2b2lkIDA9PT0oaT1mdW5jdGlvbihlLGkpe2lmKHIoZS5lcnJvcikmJm4oZS5lcnJvckNvbXApKXJldHVybiBlLmVycm9yQ29tcDtpZihuKGUucmVzb2x2ZWQpKXJldHVybiBlLnJlc29sdmVkO3ZhciBhPUh0O2EmJm4oZS5vd25lcnMpJiYtMT09PWUub3duZXJzLmluZGV4T2YoYSkmJmUub3duZXJzLnB1c2goYSk7aWYocihlLmxvYWRpbmcpJiZuKGUubG9hZGluZ0NvbXApKXJldHVybiBlLmxvYWRpbmdDb21wO2lmKGEmJiFuKGUub3duZXJzKSl7dmFyIHM9ZS5vd25lcnM9W2FdLGM9ITAsbD1udWxsLGY9bnVsbDthLiRvbigiaG9vazpkZXN0cm95ZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGgocyxhKX0pO3ZhciBwPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49cy5sZW5ndGg7dDxuO3QrKylzW3RdLiRmb3JjZVVwZGF0ZSgpO2UmJihzLmxlbmd0aD0wLG51bGwhPT1sJiYoY2xlYXJUaW1lb3V0KGwpLGw9bnVsbCksbnVsbCE9PWYmJihjbGVhclRpbWVvdXQoZiksZj1udWxsKSl9LGQ9RChmdW5jdGlvbih0KXtlLnJlc29sdmVkPUJ0KHQsaSksYz9zLmxlbmd0aD0wOnAoITApfSksdj1EKGZ1bmN0aW9uKHQpe24oZS5lcnJvckNvbXApJiYoZS5lcnJvcj0hMCxwKCEwKSl9KSxtPWUoZCx2KTtyZXR1cm4gbyhtKSYmKHUobSk\/dChlLnJlc29sdmVkKSYmbS50aGVuKGQsdik6dShtLmNvbXBvbmVudCkmJihtLmNvbXBvbmVudC50aGVuKGQsdiksbihtLmVycm9yKSYmKGUuZXJyb3JDb21wPUJ0KG0uZXJyb3IsaSkpLG4obS5sb2FkaW5nKSYmKGUubG9hZGluZ0NvbXA9QnQobS5sb2FkaW5nLGkpLDA9PT1tLmRlbGF5P2UubG9hZGluZz0hMDpsPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtsPW51bGwsdChlLnJlc29sdmVkKSYmdChlLmVycm9yKSYmKGUubG9hZGluZz0hMCxwKCExKSl9LG0uZGVsYXl8fDIwMCkpLG4obS50aW1lb3V0KSYmKGY9c2V0VGltZW91dChmdW5jdGlvbigpe2Y9bnVsbCx0KGUucmVzb2x2ZWQpJiZ2KG51bGwpfSxtLnRpbWVvdXQpKSkpLGM9ITEsZS5sb2FkaW5nP2UubG9hZGluZ0NvbXA6ZS5yZXNvbHZlZH19KHA9aSxmKSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG89dmUoKTtyZXR1cm4gby5hc3luY0ZhY3Rvcnk9ZSxvLmFzeW5jTWV0YT17ZGF0YTp0LGNvbnRleHQ6bixjaGlsZHJlbjpyLHRhZzppfSxvfShwLGEscyxjLGwpO2E9YXx8e30sJG4oaSksbihhLm1vZGVsKSYmZnVuY3Rpb24oZSx0KXt2YXIgcj1lLm1vZGVsJiZlLm1vZGVsLnByb3B8fCJ2YWx1ZSIsaT1lLm1vZGVsJiZlLm1vZGVsLmV2ZW50fHwiaW5wdXQiOyh0LmF0dHJzfHwodC5hdHRycz17fSkpW3JdPXQubW9kZWwudmFsdWU7dmFyIG89dC5vbnx8KHQub249e30pLGE9b1tpXSxzPXQubW9kZWwuY2FsbGJhY2s7bihhKT8oQXJyYXkuaXNBcnJheShhKT8tMT09PWEuaW5kZXhPZihzKTphIT09cykmJihvW2ldPVtzXS5jb25jYXQoYSkpOm9baV09c30oaS5vcHRpb25zLGEpO3ZhciBkPWZ1bmN0aW9uKGUscixpKXt2YXIgbz1yLm9wdGlvbnMucHJvcHM7aWYoIXQobykpe3ZhciBhPXt9LHM9ZS5hdHRycyxjPWUucHJvcHM7aWYobihzKXx8bihjKSlmb3IodmFyIHUgaW4gbyl7dmFyIGw9Qyh1KTtvdChhLGMsdSxsLCEwKXx8b3QoYSxzLHUsbCwhMSl9cmV0dXJuIGF9fShhLGkpO2lmKHIoaS5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBmdW5jdGlvbih0LHIsaSxvLGEpe3ZhciBzPXQub3B0aW9ucyxjPXt9LHU9cy5wcm9wcztpZihuKHUpKWZvcih2YXIgbCBpbiB1KWNbbF09TWUobCx1LHJ8fGUpO2Vsc2UgbihpLmF0dHJzKSYmTnQoYyxpLmF0dHJzKSxuKGkucHJvcHMpJiZOdChjLGkucHJvcHMpO3ZhciBmPW5ldyBUdChpLGMsYSxvLHQpLHA9cy5yZW5kZXIuY2FsbChudWxsLGYuX2MsZik7aWYocCBpbnN0YW5jZW9mIHBlKXJldHVybiBFdChwLGksZi5wYXJlbnQscyk7aWYoQXJyYXkuaXNBcnJheShwKSl7Zm9yKHZhciBkPWF0KHApfHxbXSx2PW5ldyBBcnJheShkLmxlbmd0aCksaD0wO2g8ZC5sZW5ndGg7aCsrKXZbaF09RXQoZFtoXSxpLGYucGFyZW50LHMpO3JldHVybiB2fX0oaSxkLGEscyxjKTt2YXIgdj1hLm9uO2lmKGEub249YS5uYXRpdmVPbixyKGkub3B0aW9ucy5hYnN0cmFjdCkpe3ZhciBtPWEuc2xvdDthPXt9LG0mJihhLnNsb3Q9bSl9IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmhvb2t8fChlLmhvb2s9e30pLG49MDtuPER0Lmxlbmd0aDtuKyspe3ZhciByPUR0W25dLGk9dFtyXSxvPWp0W3JdO2k9PT1vfHxpJiZpLl9tZXJnZWR8fCh0W3JdPWk\/TXQobyxpKTpvKX19KGEpO3ZhciB5PWkub3B0aW9ucy5uYW1lfHxsO3JldHVybiBuZXcgcGUoInZ1ZS1jb21wb25lbnQtIitpLmNpZCsoeT8iLSIreToiIiksYSx2b2lkIDAsdm9pZCAwLHZvaWQgMCxzLHtDdG9yOmkscHJvcHNEYXRhOmQsbGlzdGVuZXJzOnYsdGFnOmwsY2hpbGRyZW46Y30scCl9fX1mdW5jdGlvbiBNdChlLHQpe3ZhciBuPWZ1bmN0aW9uKG4scil7ZShuLHIpLHQobixyKX07cmV0dXJuIG4uX21lcmdlZD0hMCxufXZhciBJdD0xLEZ0PTI7ZnVuY3Rpb24gUHQoZSxhLHMsYyx1LGwpe3JldHVybihBcnJheS5pc0FycmF5KHMpfHxpKHMpKSYmKHU9YyxjPXMscz12b2lkIDApLHIobCkmJih1PUZ0KSxmdW5jdGlvbihlLGksYSxzLGMpe2lmKG4oYSkmJm4oYS5fX29iX18pKXJldHVybiB2ZSgpO24oYSkmJm4oYS5pcykmJihpPWEuaXMpO2lmKCFpKXJldHVybiB2ZSgpO0FycmF5LmlzQXJyYXkocykmJiJmdW5jdGlvbiI9PXR5cGVvZiBzWzBdJiYoKGE9YXx8e30pLnNjb3BlZFNsb3RzPXtkZWZhdWx0OnNbMF19LHMubGVuZ3RoPTApO2M9PT1GdD9zPWF0KHMpOmM9PT1JdCYmKHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoQXJyYXkuaXNBcnJheShlW3RdKSlyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxlKTtyZXR1cm4gZX0ocykpO3ZhciB1LGw7aWYoInN0cmluZyI9PXR5cGVvZiBpKXt2YXIgZjtsPWUuJHZub2RlJiZlLiR2bm9kZS5uc3x8Ri5nZXRUYWdOYW1lc3BhY2UoaSksdT1GLmlzUmVzZXJ2ZWRUYWcoaSk\/bmV3IHBlKEYucGFyc2VQbGF0Zm9ybVRhZ05hbWUoaSksYSxzLHZvaWQgMCx2b2lkIDAsZSk6YSYmYS5wcmV8fCFuKGY9TGUoZS4kb3B0aW9ucywiY29tcG9uZW50cyIsaSkpP25ldyBwZShpLGEscyx2b2lkIDAsdm9pZCAwLGUpOkx0KGYsYSxlLHMsaSl9ZWxzZSB1PUx0KGksYSxlLHMpO3JldHVybiBBcnJheS5pc0FycmF5KHUpP3U6bih1KT8obihsKSYmZnVuY3Rpb24gZShpLG8sYSl7aS5ucz1vOyJmb3JlaWduT2JqZWN0Ij09PWkudGFnJiYobz12b2lkIDAsYT0hMCk7aWYobihpLmNoaWxkcmVuKSlmb3IodmFyIHM9MCxjPWkuY2hpbGRyZW4ubGVuZ3RoO3M8YztzKyspe3ZhciB1PWkuY2hpbGRyZW5bc107bih1LnRhZykmJih0KHUubnMpfHxyKGEpJiYic3ZnIiE9PXUudGFnKSYmZSh1LG8sYSl9fSh1LGwpLG4oYSkmJmZ1bmN0aW9uKGUpe28oZS5zdHlsZSkmJmV0KGUuc3R5bGUpO28oZS5jbGFzcykmJmV0KGUuY2xhc3MpfShhKSx1KTp2ZSgpfShlLGEscyxjLHUpfXZhciBSdCxIdD1udWxsO2Z1bmN0aW9uIEJ0KGUsdCl7cmV0dXJuKGUuX19lc01vZHVsZXx8b2UmJiJNb2R1bGUiPT09ZVtTeW1ib2wudG9TdHJpbmdUYWddKSYmKGU9ZS5kZWZhdWx0KSxvKGUpP3QuZXh0ZW5kKGUpOmV9ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIGUuaXNDb21tZW50JiZlLmFzeW5jRmFjdG9yeX1mdW5jdGlvbiB6dChlKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdO2lmKG4ocikmJihuKHIuY29tcG9uZW50T3B0aW9ucyl8fFV0KHIpKSlyZXR1cm4gcn19ZnVuY3Rpb24gVnQoZSx0KXtSdC4kb24oZSx0KX1mdW5jdGlvbiBLdChlLHQpe1J0LiRvZmYoZSx0KX1mdW5jdGlvbiBKdChlLHQpe3ZhciBuPVJ0O3JldHVybiBmdW5jdGlvbiByKCl7bnVsbCE9PXQuYXBwbHkobnVsbCxhcmd1bWVudHMpJiZuLiRvZmYoZSxyKX19ZnVuY3Rpb24gcXQoZSx0LG4pe1J0PWUscnQodCxufHx7fSxWdCxLdCxKdCxlKSxSdD12b2lkIDB9dmFyIFd0PW51bGw7ZnVuY3Rpb24gWnQoZSl7dmFyIHQ9V3Q7cmV0dXJuIFd0PWUsZnVuY3Rpb24oKXtXdD10fX1mdW5jdGlvbiBHdChlKXtmb3IoO2UmJihlPWUuJHBhcmVudCk7KWlmKGUuX2luYWN0aXZlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFh0KGUsdCl7aWYodCl7aWYoZS5fZGlyZWN0SW5hY3RpdmU9ITEsR3QoZSkpcmV0dXJufWVsc2UgaWYoZS5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKGUuX2luYWN0aXZlfHxudWxsPT09ZS5faW5hY3RpdmUpe2UuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0wO248ZS4kY2hpbGRyZW4ubGVuZ3RoO24rKylYdChlLiRjaGlsZHJlbltuXSk7WXQoZSwiYWN0aXZhdGVkIil9fWZ1bmN0aW9uIFl0KGUsdCl7bGUoKTt2YXIgbj1lLiRvcHRpb25zW3RdLHI9dCsiIGhvb2siO2lmKG4pZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKUhlKG5baV0sZSxudWxsLGUscik7ZS5faGFzSG9va0V2ZW50JiZlLiRlbWl0KCJob29rOiIrdCksZmUoKX12YXIgUXQ9W10sZW49W10sdG49e30sbm49ITEscm49ITEsb249MDt2YXIgYW49MCxzbj1EYXRlLm5vdztpZih6JiYhcSl7dmFyIGNuPXdpbmRvdy5wZXJmb3JtYW5jZTtjbiYmImZ1bmN0aW9uIj09dHlwZW9mIGNuLm5vdyYmc24oKT5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKS50aW1lU3RhbXAmJihzbj1mdW5jdGlvbigpe3JldHVybiBjbi5ub3coKX0pfWZ1bmN0aW9uIHVuKCl7dmFyIGUsdDtmb3IoYW49c24oKSxybj0hMCxRdC5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQtdC5pZH0pLG9uPTA7b248UXQubGVuZ3RoO29uKyspKGU9UXRbb25dKS5iZWZvcmUmJmUuYmVmb3JlKCksdD1lLmlkLHRuW3RdPW51bGwsZS5ydW4oKTt2YXIgbj1lbi5zbGljZSgpLHI9UXQuc2xpY2UoKTtvbj1RdC5sZW5ndGg9ZW4ubGVuZ3RoPTAsdG49e30sbm49cm49ITEsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5faW5hY3RpdmU9ITAsWHQoZVt0XSwhMCl9KG4pLGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2Zvcig7dC0tOyl7dmFyIG49ZVt0XSxyPW4udm07ci5fd2F0Y2hlcj09PW4mJnIuX2lzTW91bnRlZCYmIXIuX2lzRGVzdHJveWVkJiZZdChyLCJ1cGRhdGVkIil9fShyKSxuZSYmRi5kZXZ0b29scyYmbmUuZW1pdCgiZmx1c2giKX12YXIgbG49MCxmbj1mdW5jdGlvbihlLHQsbixyLGkpe3RoaXMudm09ZSxpJiYoZS5fd2F0Y2hlcj10aGlzKSxlLl93YXRjaGVycy5wdXNoKHRoaXMpLHI\/KHRoaXMuZGVlcD0hIXIuZGVlcCx0aGlzLnVzZXI9ISFyLnVzZXIsdGhpcy5sYXp5PSEhci5sYXp5LHRoaXMuc3luYz0hIXIuc3luYyx0aGlzLmJlZm9yZT1yLmJlZm9yZSk6dGhpcy5kZWVwPXRoaXMudXNlcj10aGlzLmxhenk9dGhpcy5zeW5jPSExLHRoaXMuY2I9bix0aGlzLmlkPSsrbG4sdGhpcy5hY3RpdmU9ITAsdGhpcy5kaXJ0eT10aGlzLmxhenksdGhpcy5kZXBzPVtdLHRoaXMubmV3RGVwcz1bXSx0aGlzLmRlcElkcz1uZXcgaWUsdGhpcy5uZXdEZXBJZHM9bmV3IGllLHRoaXMuZXhwcmVzc2lvbj0iIiwiZnVuY3Rpb24iPT10eXBlb2YgdD90aGlzLmdldHRlcj10Oih0aGlzLmdldHRlcj1mdW5jdGlvbihlKXtpZighSC50ZXN0KGUpKXt2YXIgdD1lLnNwbGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXtpZighZSlyZXR1cm47ZT1lW3Rbbl1dfXJldHVybiBlfX19KHQpLHRoaXMuZ2V0dGVyfHwodGhpcy5nZXR0ZXI9UykpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtmbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU7bGUodGhpcyk7dmFyIHQ9dGhpcy52bTt0cnl7ZT10aGlzLmdldHRlci5jYWxsKHQsdCl9Y2F0Y2goZSl7aWYoIXRoaXMudXNlcil0aHJvdyBlO1JlKGUsdCwnZ2V0dGVyIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZldChlKSxmZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sZm4ucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sZm4ucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxmbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtpZihudWxsPT10blt0XSl7aWYodG5bdF09ITAscm4pe2Zvcih2YXIgbj1RdC5sZW5ndGgtMTtuPm9uJiZRdFtuXS5pZD5lLmlkOyluLS07UXQuc3BsaWNlKG4rMSwwLGUpfWVsc2UgUXQucHVzaChlKTtubnx8KG5uPSEwLFllKHVuKSl9fSh0aGlzKX0sZm4ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxvKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtSZShlLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX19fSxmbi5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sZm4ucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLmRlcGVuZCgpfSxmbi5wcm90b3R5cGUudGVhcmRvd249ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8aCh0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXRoaXMuZGVwc1tlXS5yZW1vdmVTdWIodGhpcyk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgcG49e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpTLHNldDpTfTtmdW5jdGlvbiBkbihlLHQsbil7cG4uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdF1bbl19LHBuLnNldD1mdW5jdGlvbihlKXt0aGlzW3RdW25dPWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4scG4pfWZ1bmN0aW9uIHZuKGUpe2UuX3dhdGNoZXJzPVtdO3ZhciB0PWUuJG9wdGlvbnM7dC5wcm9wcyYmZnVuY3Rpb24oZSx0KXt2YXIgbj1lLiRvcHRpb25zLnByb3BzRGF0YXx8e30scj1lLl9wcm9wcz17fSxpPWUuJG9wdGlvbnMuX3Byb3BLZXlzPVtdO2UuJHBhcmVudCYmJGUoITEpO3ZhciBvPWZ1bmN0aW9uKG8pe2kucHVzaChvKTt2YXIgYT1NZShvLHQsbixlKTt4ZShyLG8sYSksbyBpbiBlfHxkbihlLCJfcHJvcHMiLG8pfTtmb3IodmFyIGEgaW4gdClvKGEpOyRlKCEwKX0oZSx0LnByb3BzKSx0Lm1ldGhvZHMmJmZ1bmN0aW9uKGUsdCl7ZS4kb3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdCllW25dPSJmdW5jdGlvbiIhPXR5cGVvZiB0W25dP1M6eCh0W25dLGUpfShlLHQubWV0aG9kcyksdC5kYXRhP2Z1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMuZGF0YTtzKHQ9ZS5fZGF0YT0iZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlLHQpe2xlKCk7dHJ5e3JldHVybiBlLmNhbGwodCx0KX1jYXRjaChlKXtyZXR1cm4gUmUoZSx0LCJkYXRhKCkiKSx7fX1maW5hbGx5e2ZlKCl9fSh0LGUpOnR8fHt9KXx8KHQ9e30pO3ZhciBuPU9iamVjdC5rZXlzKHQpLHI9ZS4kb3B0aW9ucy5wcm9wcyxpPShlLiRvcHRpb25zLm1ldGhvZHMsbi5sZW5ndGgpO2Zvcig7aS0tOyl7dmFyIG89bltpXTtyJiZ5KHIsbyl8fChhPXZvaWQgMCwzNiE9PShhPShvKyIiKS5jaGFyQ29kZUF0KDApKSYmOTUhPT1hJiZkbihlLCJfZGF0YSIsbykpfXZhciBhO0NlKHQsITApfShlKTpDZShlLl9kYXRhPXt9LCEwKSx0LmNvbXB1dGVkJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuX2NvbXB1dGVkV2F0Y2hlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRlKCk7Zm9yKHZhciBpIGluIHQpe3ZhciBvPXRbaV0sYT0iZnVuY3Rpb24iPT10eXBlb2Ygbz9vOm8uZ2V0O3J8fChuW2ldPW5ldyBmbihlLGF8fFMsUyxobikpLGkgaW4gZXx8bW4oZSxpLG8pfX0oZSx0LmNvbXB1dGVkKSx0LndhdGNoJiZ0LndhdGNoIT09WSYmZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZihBcnJheS5pc0FycmF5KHIpKWZvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKV9uKGUsbixyW2ldKTtlbHNlIF9uKGUsbixyKX19KGUsdC53YXRjaCl9dmFyIGhuPXtsYXp5OiEwfTtmdW5jdGlvbiBtbihlLHQsbil7dmFyIHI9IXRlKCk7ImZ1bmN0aW9uIj09dHlwZW9mIG4\/KHBuLmdldD1yP3luKHQpOmduKG4pLHBuLnNldD1TKToocG4uZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT95bih0KTpnbihuLmdldCk6Uyxwbi5zZXQ9bi5zZXR8fFMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQscG4pfWZ1bmN0aW9uIHluKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMmJnRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNbZV07aWYodClyZXR1cm4gdC5kaXJ0eSYmdC5ldmFsdWF0ZSgpLGNlLnRhcmdldCYmdC5kZXBlbmQoKSx0LnZhbHVlfX1mdW5jdGlvbiBnbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMsdGhpcyl9fWZ1bmN0aW9uIF9uKGUsdCxuLHIpe3JldHVybiBzKG4pJiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09dHlwZW9mIG4mJihuPWVbbl0pLGUuJHdhdGNoKHQsbixyKX12YXIgYm49MDtmdW5jdGlvbiAkbihlKXt2YXIgdD1lLm9wdGlvbnM7aWYoZS5zdXBlcil7dmFyIG49JG4oZS5zdXBlcik7aWYobiE9PWUuc3VwZXJPcHRpb25zKXtlLnN1cGVyT3B0aW9ucz1uO3ZhciByPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5vcHRpb25zLHI9ZS5zZWFsZWRPcHRpb25zO2Zvcih2YXIgaSBpbiBuKW5baV0hPT1yW2ldJiYodHx8KHQ9e30pLHRbaV09bltpXSk7cmV0dXJuIHR9KGUpO3ImJkEoZS5leHRlbmRPcHRpb25zLHIpLCh0PWUub3B0aW9ucz1EZShuLGUuZXh0ZW5kT3B0aW9ucykpLm5hbWUmJih0LmNvbXBvbmVudHNbdC5uYW1lXT1lKX19cmV0dXJuIHR9ZnVuY3Rpb24gd24oZSl7dGhpcy5faW5pdChlKX1mdW5jdGlvbiBDbihlKXtlLmNpZD0wO3ZhciB0PTE7ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgbj10aGlzLHI9bi5jaWQsaT1lLl9DdG9yfHwoZS5fQ3Rvcj17fSk7aWYoaVtyXSlyZXR1cm4gaVtyXTt2YXIgbz1lLm5hbWV8fG4ub3B0aW9ucy5uYW1lLGE9ZnVuY3Rpb24oZSl7dGhpcy5faW5pdChlKX07cmV0dXJuKGEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPXQrKyxhLm9wdGlvbnM9RGUobi5vcHRpb25zLGUpLGEuc3VwZXI9bixhLm9wdGlvbnMucHJvcHMmJmZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdClkbihlLnByb3RvdHlwZSwiX3Byb3BzIixuKX0oYSksYS5vcHRpb25zLmNvbXB1dGVkJiZmdW5jdGlvbihlKXt2YXIgdD1lLm9wdGlvbnMuY29tcHV0ZWQ7Zm9yKHZhciBuIGluIHQpbW4oZS5wcm90b3R5cGUsbix0W25dKX0oYSksYS5leHRlbmQ9bi5leHRlbmQsYS5taXhpbj1uLm1peGluLGEudXNlPW4udXNlLE0uZm9yRWFjaChmdW5jdGlvbihlKXthW2VdPW5bZV19KSxvJiYoYS5vcHRpb25zLmNvbXBvbmVudHNbb109YSksYS5zdXBlck9wdGlvbnM9bi5vcHRpb25zLGEuZXh0ZW5kT3B0aW9ucz1lLGEuc2VhbGVkT3B0aW9ucz1BKHt9LGEub3B0aW9ucyksaVtyXT1hLGF9fWZ1bmN0aW9uIHhuKGUpe3JldHVybiBlJiYoZS5DdG9yLm9wdGlvbnMubmFtZXx8ZS50YWcpfWZ1bmN0aW9uIGtuKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/ZS5pbmRleE9mKHQpPi0xOiJzdHJpbmciPT10eXBlb2YgZT9lLnNwbGl0KCIsIikuaW5kZXhPZih0KT4tMToobj1lLCJbb2JqZWN0IFJlZ0V4cF0iPT09YS5jYWxsKG4pJiZlLnRlc3QodCkpO3ZhciBufWZ1bmN0aW9uIEFuKGUsdCl7dmFyIG49ZS5jYWNoZSxyPWUua2V5cyxpPWUuX3Zub2RlO2Zvcih2YXIgbyBpbiBuKXt2YXIgYT1uW29dO2lmKGEpe3ZhciBzPXhuKGEuY29tcG9uZW50T3B0aW9ucyk7cyYmIXQocykmJk9uKG4sbyxyLGkpfX19ZnVuY3Rpb24gT24oZSx0LG4scil7dmFyIGk9ZVt0XTshaXx8ciYmaS50YWc9PT1yLnRhZ3x8aS5jb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpLGVbdF09bnVsbCxoKG4sdCl9IWZ1bmN0aW9uKHQpe3QucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7bi5fdWlkPWJuKyssbi5faXNWdWU9ITAsdCYmdC5faXNDb21wb25lbnQ\/ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLiRvcHRpb25zPU9iamVjdC5jcmVhdGUoZS5jb25zdHJ1Y3Rvci5vcHRpb25zKSxyPXQuX3BhcmVudFZub2RlO24ucGFyZW50PXQucGFyZW50LG4uX3BhcmVudFZub2RlPXI7dmFyIGk9ci5jb21wb25lbnRPcHRpb25zO24ucHJvcHNEYXRhPWkucHJvcHNEYXRhLG4uX3BhcmVudExpc3RlbmVycz1pLmxpc3RlbmVycyxuLl9yZW5kZXJDaGlsZHJlbj1pLmNoaWxkcmVuLG4uX2NvbXBvbmVudFRhZz1pLnRhZyx0LnJlbmRlciYmKG4ucmVuZGVyPXQucmVuZGVyLG4uc3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVyRm5zKX0obix0KTpuLiRvcHRpb25zPURlKCRuKG4uY29uc3RydWN0b3IpLHR8fHt9LG4pLG4uX3JlbmRlclByb3h5PW4sbi5fc2VsZj1uLGZ1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMsbj10LnBhcmVudDtpZihuJiYhdC5hYnN0cmFjdCl7Zm9yKDtuLiRvcHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50O24uJGNoaWxkcmVuLnB1c2goZSl9ZS4kcGFyZW50PW4sZS4kcm9vdD1uP24uJHJvb3Q6ZSxlLiRjaGlsZHJlbj1bXSxlLiRyZWZzPXt9LGUuX3dhdGNoZXI9bnVsbCxlLl9pbmFjdGl2ZT1udWxsLGUuX2RpcmVjdEluYWN0aXZlPSExLGUuX2lzTW91bnRlZD0hMSxlLl9pc0Rlc3Ryb3llZD0hMSxlLl9pc0JlaW5nRGVzdHJveWVkPSExfShuKSxmdW5jdGlvbihlKXtlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlLl9oYXNIb29rRXZlbnQ9ITE7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QmJnF0KGUsdCl9KG4pLGZ1bmN0aW9uKHQpe3QuX3Zub2RlPW51bGwsdC5fc3RhdGljVHJlZXM9bnVsbDt2YXIgbj10LiRvcHRpb25zLHI9dC4kdm5vZGU9bi5fcGFyZW50Vm5vZGUsaT1yJiZyLmNvbnRleHQ7dC4kc2xvdHM9dXQobi5fcmVuZGVyQ2hpbGRyZW4saSksdC4kc2NvcGVkU2xvdHM9ZSx0Ll9jPWZ1bmN0aW9uKGUsbixyLGkpe3JldHVybiBQdCh0LGUsbixyLGksITEpfSx0LiRjcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsbixyLGkpe3JldHVybiBQdCh0LGUsbixyLGksITApfTt2YXIgbz1yJiZyLmRhdGE7eGUodCwiJGF0dHJzIixvJiZvLmF0dHJzfHxlLG51bGwsITApLHhlKHQsIiRsaXN0ZW5lcnMiLG4uX3BhcmVudExpc3RlbmVyc3x8ZSxudWxsLCEwKX0obiksWXQobiwiYmVmb3JlQ3JlYXRlIiksZnVuY3Rpb24oZSl7dmFyIHQ9Y3QoZS4kb3B0aW9ucy5pbmplY3QsZSk7dCYmKCRlKCExKSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3hlKGUsbix0W25dKX0pLCRlKCEwKSl9KG4pLHZuKG4pLGZ1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMucHJvdmlkZTt0JiYoZS5fcHJvdmlkZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ\/dC5jYWxsKGUpOnQpfShuKSxZdChuLCJjcmVhdGVkIiksbi4kb3B0aW9ucy5lbCYmbi4kbW91bnQobi4kb3B0aW9ucy5lbCl9fSh3biksZnVuY3Rpb24oZSl7dmFyIHQ9e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfX0sbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCIkZGF0YSIsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCIkcHJvcHMiLG4pLGUucHJvdG90eXBlLiRzZXQ9a2UsZS5wcm90b3R5cGUuJGRlbGV0ZT1BZSxlLnByb3RvdHlwZS4kd2F0Y2g9ZnVuY3Rpb24oZSx0LG4pe2lmKHModCkpcmV0dXJuIF9uKHRoaXMsZSx0LG4pOyhuPW58fHt9KS51c2VyPSEwO3ZhciByPW5ldyBmbih0aGlzLGUsdCxuKTtpZihuLmltbWVkaWF0ZSl0cnl7dC5jYWxsKHRoaXMsci52YWx1ZSl9Y2F0Y2goZSl7UmUoZSx0aGlzLCdjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgIicrci5leHByZXNzaW9uKyciJyl9cmV0dXJuIGZ1bmN0aW9uKCl7ci50ZWFyZG93bigpfX19KHduKSxmdW5jdGlvbihlKXt2YXIgdD0vXmhvb2s6LztlLnByb3RvdHlwZS4kb249ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBpPTAsbz1lLmxlbmd0aDtpPG87aSsrKXIuJG9uKGVbaV0sbik7ZWxzZShyLl9ldmVudHNbZV18fChyLl9ldmVudHNbZV09W10pKS5wdXNoKG4pLHQudGVzdChlKSYmKHIuX2hhc0hvb2tFdmVudD0hMCk7cmV0dXJuIHJ9LGUucHJvdG90eXBlLiRvbmNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztmdW5jdGlvbiByKCl7bi4kb2ZmKGUsciksdC5hcHBseShuLGFyZ3VtZW50cyl9cmV0dXJuIHIuZm49dCxuLiRvbihlLHIpLG59LGUucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxuO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluLiRvZmYoZVtyXSx0KTtyZXR1cm4gbn12YXIgbyxhPW4uX2V2ZW50c1tlXTtpZighYSlyZXR1cm4gbjtpZighdClyZXR1cm4gbi5fZXZlbnRzW2VdPW51bGwsbjtmb3IodmFyIHM9YS5sZW5ndGg7cy0tOylpZigobz1hW3NdKT09PXR8fG8uZm49PT10KXthLnNwbGljZShzLDEpO2JyZWFrfXJldHVybiBufSxlLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9ldmVudHNbZV07aWYodCl7dD10Lmxlbmd0aD4xP2sodCk6dDtmb3IodmFyIG49ayhhcmd1bWVudHMsMSkscj0nZXZlbnQgaGFuZGxlciBmb3IgIicrZSsnIicsaT0wLG89dC5sZW5ndGg7aTxvO2krKylIZSh0W2ldLHRoaXMsbix0aGlzLHIpfXJldHVybiB0aGlzfX0od24pLGZ1bmN0aW9uKGUpe2UucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9bi4kZWwsaT1uLl92bm9kZSxvPVp0KG4pO24uX3Zub2RlPWUsbi4kZWw9aT9uLl9fcGF0Y2hfXyhpLGUpOm4uX19wYXRjaF9fKG4uJGVsLGUsdCwhMSksbygpLHImJihyLl9fdnVlX189bnVsbCksbi4kZWwmJihuLiRlbC5fX3Z1ZV9fPW4pLG4uJHZub2RlJiZuLiRwYXJlbnQmJm4uJHZub2RlPT09bi4kcGFyZW50Ll92bm9kZSYmKG4uJHBhcmVudC4kZWw9bi4kZWwpfSxlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl93YXRjaGVyJiZ0aGlzLl93YXRjaGVyLnVwZGF0ZSgpfSxlLnByb3RvdHlwZS4kZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIWUuX2lzQmVpbmdEZXN0cm95ZWQpe1l0KGUsImJlZm9yZURlc3Ryb3kiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUuJHBhcmVudDshdHx8dC5faXNCZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8aCh0LiRjaGlsZHJlbixlKSxlLl93YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7Zm9yKHZhciBuPWUuX3dhdGNoZXJzLmxlbmd0aDtuLS07KWUuX3dhdGNoZXJzW25dLnRlYXJkb3duKCk7ZS5fZGF0YS5fX29iX18mJmUuX2RhdGEuX19vYl9fLnZtQ291bnQtLSxlLl9pc0Rlc3Ryb3llZD0hMCxlLl9fcGF0Y2hfXyhlLl92bm9kZSxudWxsKSxZdChlLCJkZXN0cm95ZWQiKSxlLiRvZmYoKSxlLiRlbCYmKGUuJGVsLl9fdnVlX189bnVsbCksZS4kdm5vZGUmJihlLiR2bm9kZS5wYXJlbnQ9bnVsbCl9fX0od24pLGZ1bmN0aW9uKGUpe1N0KGUucHJvdG90eXBlKSxlLnByb3RvdHlwZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIFllKGUsdGhpcyl9LGUucHJvdG90eXBlLl9yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsbj10LiRvcHRpb25zLHI9bi5yZW5kZXIsaT1uLl9wYXJlbnRWbm9kZTtpJiYodC4kc2NvcGVkU2xvdHM9ZnQoaS5kYXRhLnNjb3BlZFNsb3RzLHQuJHNsb3RzLHQuJHNjb3BlZFNsb3RzKSksdC4kdm5vZGU9aTt0cnl7SHQ9dCxlPXIuY2FsbCh0Ll9yZW5kZXJQcm94eSx0LiRjcmVhdGVFbGVtZW50KX1jYXRjaChuKXtSZShuLHQsInJlbmRlciIpLGU9dC5fdm5vZGV9ZmluYWxseXtIdD1udWxsfXJldHVybiBBcnJheS5pc0FycmF5KGUpJiYxPT09ZS5sZW5ndGgmJihlPWVbMF0pLGUgaW5zdGFuY2VvZiBwZXx8KGU9dmUoKSksZS5wYXJlbnQ9aSxlfX0od24pO3ZhciBTbj1bU3RyaW5nLFJlZ0V4cCxBcnJheV0sVG49e0tlZXBBbGl2ZTp7bmFtZToia2VlcC1hbGl2ZSIsYWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6U24sZXhjbHVkZTpTbixtYXg6W1N0cmluZyxOdW1iZXJdfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMua2V5cz1bXX0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuY2FjaGUpT24odGhpcy5jYWNoZSxlLHRoaXMua2V5cyl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJHdhdGNoKCJpbmNsdWRlIixmdW5jdGlvbih0KXtBbihlLGZ1bmN0aW9uKGUpe3JldHVybiBrbih0LGUpfSl9KSx0aGlzLiR3YXRjaCgiZXhjbHVkZSIsZnVuY3Rpb24odCl7QW4oZSxmdW5jdGlvbihlKXtyZXR1cm4ha24odCxlKX0pfSl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJHNsb3RzLmRlZmF1bHQsdD16dChlKSxuPXQmJnQuY29tcG9uZW50T3B0aW9ucztpZihuKXt2YXIgcj14bihuKSxpPXRoaXMuaW5jbHVkZSxvPXRoaXMuZXhjbHVkZTtpZihpJiYoIXJ8fCFrbihpLHIpKXx8byYmciYma24obyxyKSlyZXR1cm4gdDt2YXIgYT10aGlzLmNhY2hlLHM9dGhpcy5rZXlzLGM9bnVsbD09dC5rZXk\/bi5DdG9yLmNpZCsobi50YWc\/Ijo6IituLnRhZzoiIik6dC5rZXk7YVtjXT8odC5jb21wb25lbnRJbnN0YW5jZT1hW2NdLmNvbXBvbmVudEluc3RhbmNlLGgocyxjKSxzLnB1c2goYykpOihhW2NdPXQscy5wdXNoKGMpLHRoaXMubWF4JiZzLmxlbmd0aD5wYXJzZUludCh0aGlzLm1heCkmJk9uKGEsc1swXSxzLHRoaXMuX3Zub2RlKSksdC5kYXRhLmtlZXBBbGl2ZT0hMH1yZXR1cm4gdHx8ZSYmZVswXX19fTshZnVuY3Rpb24oZSl7dmFyIHQ9e2dldDpmdW5jdGlvbigpe3JldHVybiBGfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImNvbmZpZyIsdCksZS51dGlsPXt3YXJuOmFlLGV4dGVuZDpBLG1lcmdlT3B0aW9uczpEZSxkZWZpbmVSZWFjdGl2ZTp4ZX0sZS5zZXQ9a2UsZS5kZWxldGU9QWUsZS5uZXh0VGljaz1ZZSxlLm9ic2VydmFibGU9ZnVuY3Rpb24oZSl7cmV0dXJuIENlKGUpLGV9LGUub3B0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLE0uZm9yRWFjaChmdW5jdGlvbih0KXtlLm9wdGlvbnNbdCsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSxlLm9wdGlvbnMuX2Jhc2U9ZSxBKGUub3B0aW9ucy5jb21wb25lbnRzLFRuKSxmdW5jdGlvbihlKXtlLnVzZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnN0YWxsZWRQbHVnaW5zfHwodGhpcy5faW5zdGFsbGVkUGx1Z2lucz1bXSk7aWYodC5pbmRleE9mKGUpPi0xKXJldHVybiB0aGlzO3ZhciBuPWsoYXJndW1lbnRzLDEpO3JldHVybiBuLnVuc2hpZnQodGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIGUuaW5zdGFsbD9lLmluc3RhbGwuYXBwbHkoZSxuKToiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5hcHBseShudWxsLG4pLHQucHVzaChlKSx0aGlzfX0oZSksZnVuY3Rpb24oZSl7ZS5taXhpbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zPURlKHRoaXMub3B0aW9ucyxlKSx0aGlzfX0oZSksQ24oZSksZnVuY3Rpb24oZSl7TS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2VbdF09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbj8oImNvbXBvbmVudCI9PT10JiZzKG4pJiYobi5uYW1lPW4ubmFtZXx8ZSxuPXRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLCJkaXJlY3RpdmUiPT09dCYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJihuPXtiaW5kOm4sdXBkYXRlOm59KSx0aGlzLm9wdGlvbnNbdCsicyJdW2VdPW4sbik6dGhpcy5vcHRpb25zW3QrInMiXVtlXX19KX0oZSl9KHduKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24ucHJvdG90eXBlLCIkaXNTZXJ2ZXIiLHtnZXQ6dGV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24ucHJvdG90eXBlLCIkc3NyQ29udGV4dCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24sIkZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0Iix7dmFsdWU6VHR9KSx3bi52ZXJzaW9uPSIyLjYuMTEiO3ZhciBFbj1wKCJzdHlsZSxjbGFzcyIpLE5uPXAoImlucHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QscHJvZ3Jlc3MiKSxqbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuInZhbHVlIj09PW4mJk5uKGUpJiYiYnV0dG9uIiE9PXR8fCJzZWxlY3RlZCI9PT1uJiYib3B0aW9uIj09PWV8fCJjaGVja2VkIj09PW4mJiJpbnB1dCI9PT1lfHwibXV0ZWQiPT09biYmInZpZGVvIj09PWV9LERuPXAoImNvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjayIpLExuPXAoImV2ZW50cyxjYXJldCx0eXBpbmcscGxhaW50ZXh0LW9ubHkiKSxNbj1mdW5jdGlvbihlLHQpe3JldHVybiBIbih0KXx8ImZhbHNlIj09PXQ\/ImZhbHNlIjoiY29udGVudGVkaXRhYmxlIj09PWUmJkxuKHQpP3Q6InRydWUifSxJbj1wKCJhbGxvd2Z1bGxzY3JlZW4sYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNoZWNrZWQsY29tcGFjdCxjb250cm9scyxkZWNsYXJlLGRlZmF1bHQsZGVmYXVsdGNoZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCxlbmFibGVkLGZvcm1ub3ZhbGlkYXRlLGhpZGRlbixpbmRldGVybWluYXRlLGluZXJ0LGlzbWFwLGl0ZW1zY29wZSxsb29wLG11bHRpcGxlLG11dGVkLG5vaHJlZixub3Jlc2l6ZSxub3NoYWRlLG5vdmFsaWRhdGUsbm93cmFwLG9wZW4scGF1c2VvbmV4aXQscmVhZG9ubHkscmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSx0cnVlc3BlZWQsdHlwZW11c3RtYXRjaCx2aXNpYmxlIiksRm49Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLFBuPWZ1bmN0aW9uKGUpe3JldHVybiI6Ij09PWUuY2hhckF0KDUpJiYieGxpbmsiPT09ZS5zbGljZSgwLDUpfSxSbj1mdW5jdGlvbihlKXtyZXR1cm4gUG4oZSk\/ZS5zbGljZSg2LGUubGVuZ3RoKToiIn0sSG49ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZX07ZnVuY3Rpb24gQm4oZSl7Zm9yKHZhciB0PWUuZGF0YSxyPWUsaT1lO24oaS5jb21wb25lbnRJbnN0YW5jZSk7KShpPWkuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlKSYmaS5kYXRhJiYodD1VbihpLmRhdGEsdCkpO2Zvcig7bihyPXIucGFyZW50KTspciYmci5kYXRhJiYodD1Vbih0LHIuZGF0YSkpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKG4oZSl8fG4odCkpcmV0dXJuIHpuKGUsVm4odCkpO3JldHVybiIifSh0LnN0YXRpY0NsYXNzLHQuY2xhc3MpfWZ1bmN0aW9uIFVuKGUsdCl7cmV0dXJue3N0YXRpY0NsYXNzOnpuKGUuc3RhdGljQ2xhc3MsdC5zdGF0aWNDbGFzcyksY2xhc3M6bihlLmNsYXNzKT9bZS5jbGFzcyx0LmNsYXNzXTp0LmNsYXNzfX1mdW5jdGlvbiB6bihlLHQpe3JldHVybiBlP3Q\/ZSsiICIrdDplOnR8fCIifWZ1bmN0aW9uIFZuKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPSIiLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspbih0PVZuKGVbaV0pKSYmIiIhPT10JiYociYmKHIrPSIgIikscis9dCk7cmV0dXJuIHJ9KGUpOm8oZSk\/ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7Zm9yKHZhciBuIGluIGUpZVtuXSYmKHQmJih0Kz0iICIpLHQrPW4pO3JldHVybiB0fShlKToic3RyaW5nIj09dHlwZW9mIGU\/ZToiIn12YXIgS249e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwifSxKbj1wKCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoMSxoMixoMyxoNCxoNSxoNixoZ3JvdXAsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdCIpLHFuPXAoInN2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSxmb3JlaWduT2JqZWN0LGcsZ2x5cGgsaW1hZ2UsbGluZSxtYXJrZXIsbWFzayxtaXNzaW5nLWdseXBoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5lLHJlY3Qsc3dpdGNoLHN5bWJvbCx0ZXh0LHRleHRwYXRoLHRzcGFuLHVzZSx2aWV3IiwhMCksV249ZnVuY3Rpb24oZSl7cmV0dXJuIEpuKGUpfHxxbihlKX07ZnVuY3Rpb24gWm4oZSl7cmV0dXJuIHFuKGUpPyJzdmciOiJtYXRoIj09PWU\/Im1hdGgiOnZvaWQgMH12YXIgR249T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgWG49cCgidGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwiKTtmdW5jdGlvbiBZbihlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7cmV0dXJuIHR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfXJldHVybiBlfXZhciBRbj1PYmplY3QuZnJlZXplKHtjcmVhdGVFbGVtZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4ic2VsZWN0IiE9PWU\/bjoodC5kYXRhJiZ0LmRhdGEuYXR0cnMmJnZvaWQgMCE9PXQuZGF0YS5hdHRycy5tdWx0aXBsZSYmbi5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX0sY3JlYXRlRWxlbWVudE5TOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhLbltlXSx0KX0sY3JlYXRlVGV4dE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpfSxjcmVhdGVDb21tZW50OmZ1bmN0aW9uKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGUpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oZSx0LG4pe2UuaW5zZXJ0QmVmb3JlKHQsbil9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCl7ZS5yZW1vdmVDaGlsZCh0KX0sYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtlLmFwcGVuZENoaWxkKHQpfSxwYXJlbnROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGV9LG5leHRTaWJsaW5nOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5leHRTaWJsaW5nfSx0YWdOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ05hbWV9LHNldFRleHRDb250ZW50OmZ1bmN0aW9uKGUsdCl7ZS50ZXh0Q29udGVudD10fSxzZXRTdHlsZVNjb3BlOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRyaWJ1dGUodCwiIil9fSksZXI9e2NyZWF0ZTpmdW5jdGlvbihlLHQpe3RyKHQpfSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXtlLmRhdGEucmVmIT09dC5kYXRhLnJlZiYmKHRyKGUsITApLHRyKHQpKX0sZGVzdHJveTpmdW5jdGlvbihlKXt0cihlLCEwKX19O2Z1bmN0aW9uIHRyKGUsdCl7dmFyIHI9ZS5kYXRhLnJlZjtpZihuKHIpKXt2YXIgaT1lLmNvbnRleHQsbz1lLmNvbXBvbmVudEluc3RhbmNlfHxlLmVsbSxhPWkuJHJlZnM7dD9BcnJheS5pc0FycmF5KGFbcl0pP2goYVtyXSxvKTphW3JdPT09byYmKGFbcl09dm9pZCAwKTplLmRhdGEucmVmSW5Gb3I\/QXJyYXkuaXNBcnJheShhW3JdKT9hW3JdLmluZGV4T2Yobyk8MCYmYVtyXS5wdXNoKG8pOmFbcl09W29dOmFbcl09b319dmFyIG5yPW5ldyBwZSgiIix7fSxbXSkscnI9WyJjcmVhdGUiLCJhY3RpdmF0ZSIsInVwZGF0ZSIsInJlbW92ZSIsImRlc3Ryb3kiXTtmdW5jdGlvbiBpcihlLGkpe3JldHVybiBlLmtleT09PWkua2V5JiYoZS50YWc9PT1pLnRhZyYmZS5pc0NvbW1lbnQ9PT1pLmlzQ29tbWVudCYmbihlLmRhdGEpPT09bihpLmRhdGEpJiZmdW5jdGlvbihlLHQpe2lmKCJpbnB1dCIhPT1lLnRhZylyZXR1cm4hMDt2YXIgcixpPW4ocj1lLmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZSxvPW4ocj10LmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZTtyZXR1cm4gaT09PW98fFhuKGkpJiZYbihvKX0oZSxpKXx8cihlLmlzQXN5bmNQbGFjZWhvbGRlcikmJmUuYXN5bmNGYWN0b3J5PT09aS5hc3luY0ZhY3RvcnkmJnQoaS5hc3luY0ZhY3RvcnkuZXJyb3IpKX1mdW5jdGlvbiBvcihlLHQscil7dmFyIGksbyxhPXt9O2ZvcihpPXQ7aTw9cjsrK2kpbihvPWVbaV0ua2V5KSYmKGFbb109aSk7cmV0dXJuIGF9dmFyIGFyPXtjcmVhdGU6c3IsdXBkYXRlOnNyLGRlc3Ryb3k6ZnVuY3Rpb24oZSl7c3IoZSxucil9fTtmdW5jdGlvbiBzcihlLHQpeyhlLmRhdGEuZGlyZWN0aXZlc3x8dC5kYXRhLmRpcmVjdGl2ZXMpJiZmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvPWU9PT1ucixhPXQ9PT1ucixzPXVyKGUuZGF0YS5kaXJlY3RpdmVzLGUuY29udGV4dCksYz11cih0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLHU9W10sbD1bXTtmb3IobiBpbiBjKXI9c1tuXSxpPWNbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLGkub2xkQXJnPXIuYXJnLGZyKGksInVwZGF0ZSIsdCxlKSxpLmRlZiYmaS5kZWYuY29tcG9uZW50VXBkYXRlZCYmbC5wdXNoKGkpKTooZnIoaSwiYmluZCIsdCxlKSxpLmRlZiYmaS5kZWYuaW5zZXJ0ZWQmJnUucHVzaChpKSk7aWYodS5sZW5ndGgpe3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjx1Lmxlbmd0aDtuKyspZnIodVtuXSwiaW5zZXJ0ZWQiLHQsZSl9O28\/aXQodCwiaW5zZXJ0IixmKTpmKCl9bC5sZW5ndGgmJml0KHQsInBvc3RwYXRjaCIsZnVuY3Rpb24oKXtmb3IodmFyIG49MDtuPGwubGVuZ3RoO24rKylmcihsW25dLCJjb21wb25lbnRVcGRhdGVkIix0LGUpfSk7aWYoIW8pZm9yKG4gaW4gcyljW25dfHxmcihzW25dLCJ1bmJpbmQiLGUsZSxhKX0oZSx0KX12YXIgY3I9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiB1cihlLHQpe3ZhciBuLHIsaT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBpO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspKHI9ZVtuXSkubW9kaWZpZXJzfHwoci5tb2RpZmllcnM9Y3IpLGlbbHIocildPXIsci5kZWY9TGUodC4kb3B0aW9ucywiZGlyZWN0aXZlcyIsci5uYW1lKTtyZXR1cm4gaX1mdW5jdGlvbiBscihlKXtyZXR1cm4gZS5yYXdOYW1lfHxlLm5hbWUrIi4iK09iamVjdC5rZXlzKGUubW9kaWZpZXJzfHx7fSkuam9pbigiLiIpfWZ1bmN0aW9uIGZyKGUsdCxuLHIsaSl7dmFyIG89ZS5kZWYmJmUuZGVmW3RdO2lmKG8pdHJ5e28obi5lbG0sZSxuLHIsaSl9Y2F0Y2gocil7UmUocixuLmNvbnRleHQsImRpcmVjdGl2ZSAiK2UubmFtZSsiICIrdCsiIGhvb2siKX19dmFyIHByPVtlcixhcl07ZnVuY3Rpb24gZHIoZSxyKXt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7aWYoIShuKGkpJiYhMT09PWkuQ3Rvci5vcHRpb25zLmluaGVyaXRBdHRyc3x8dChlLmRhdGEuYXR0cnMpJiZ0KHIuZGF0YS5hdHRycykpKXt2YXIgbyxhLHM9ci5lbG0sYz1lLmRhdGEuYXR0cnN8fHt9LHU9ci5kYXRhLmF0dHJzfHx7fTtmb3IobyBpbiBuKHUuX19vYl9fKSYmKHU9ci5kYXRhLmF0dHJzPUEoe30sdSkpLHUpYT11W29dLGNbb10hPT1hJiZ2cihzLG8sYSk7Zm9yKG8gaW4ocXx8WikmJnUudmFsdWUhPT1jLnZhbHVlJiZ2cihzLCJ2YWx1ZSIsdS52YWx1ZSksYyl0KHVbb10pJiYoUG4obyk\/cy5yZW1vdmVBdHRyaWJ1dGVOUyhGbixSbihvKSk6RG4obyl8fHMucmVtb3ZlQXR0cmlidXRlKG8pKX19ZnVuY3Rpb24gdnIoZSx0LG4pe2UudGFnTmFtZS5pbmRleE9mKCItIik+LTE\/aHIoZSx0LG4pOkluKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOihuPSJhbGxvd2Z1bGxzY3JlZW4iPT09dCYmIkVNQkVEIj09PWUudGFnTmFtZT8idHJ1ZSI6dCxlLnNldEF0dHJpYnV0ZSh0LG4pKTpEbih0KT9lLnNldEF0dHJpYnV0ZSh0LE1uKHQsbikpOlBuKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlTlMoRm4sUm4odCkpOmUuc2V0QXR0cmlidXRlTlMoRm4sdCxuKTpocihlLHQsbil9ZnVuY3Rpb24gaHIoZSx0LG4pe2lmKEhuKG4pKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYocSYmIVcmJiJURVhUQVJFQSI9PT1lLnRhZ05hbWUmJiJwbGFjZWhvbGRlciI9PT10JiYiIiE9PW4mJiFlLl9faWVwaCl7dmFyIHI9ZnVuY3Rpb24odCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImlucHV0IixyKX07ZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsciksZS5fX2llcGg9ITB9ZS5zZXRBdHRyaWJ1dGUodCxuKX19dmFyIG1yPXtjcmVhdGU6ZHIsdXBkYXRlOmRyfTtmdW5jdGlvbiB5cihlLHIpe3ZhciBpPXIuZWxtLG89ci5kYXRhLGE9ZS5kYXRhO2lmKCEodChvLnN0YXRpY0NsYXNzKSYmdChvLmNsYXNzKSYmKHQoYSl8fHQoYS5zdGF0aWNDbGFzcykmJnQoYS5jbGFzcykpKSl7dmFyIHM9Qm4ociksYz1pLl90cmFuc2l0aW9uQ2xhc3NlcztuKGMpJiYocz16bihzLFZuKGMpKSkscyE9PWkuX3ByZXZDbGFzcyYmKGkuc2V0QXR0cmlidXRlKCJjbGFzcyIscyksaS5fcHJldkNsYXNzPXMpfX12YXIgZ3IsX3IsYnIsJHIsd3IsQ3IseHI9e2NyZWF0ZTp5cix1cGRhdGU6eXJ9LGtyPS9bXHcpLitcLV8kXF1dLztmdW5jdGlvbiBBcihlKXt2YXIgdCxuLHIsaSxvLGE9ITEscz0hMSxjPSExLHU9ITEsbD0wLGY9MCxwPTAsZD0wO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaWYobj10LHQ9ZS5jaGFyQ29kZUF0KHIpLGEpMzk9PT10JiY5MiE9PW4mJihhPSExKTtlbHNlIGlmKHMpMzQ9PT10JiY5MiE9PW4mJihzPSExKTtlbHNlIGlmKGMpOTY9PT10JiY5MiE9PW4mJihjPSExKTtlbHNlIGlmKHUpNDc9PT10JiY5MiE9PW4mJih1PSExKTtlbHNlIGlmKDEyNCE9PXR8fDEyND09PWUuY2hhckNvZGVBdChyKzEpfHwxMjQ9PT1lLmNoYXJDb2RlQXQoci0xKXx8bHx8Znx8cCl7c3dpdGNoKHQpe2Nhc2UgMzQ6cz0hMDticmVhaztjYXNlIDM5OmE9ITA7YnJlYWs7Y2FzZSA5NjpjPSEwO2JyZWFrO2Nhc2UgNDA6cCsrO2JyZWFrO2Nhc2UgNDE6cC0tO2JyZWFrO2Nhc2UgOTE6ZisrO2JyZWFrO2Nhc2UgOTM6Zi0tO2JyZWFrO2Nhc2UgMTIzOmwrKzticmVhaztjYXNlIDEyNTpsLS19aWYoNDc9PT10KXtmb3IodmFyIHY9ci0xLGg9dm9pZCAwO3Y+PTAmJiIgIj09PShoPWUuY2hhckF0KHYpKTt2LS0pO2gmJmtyLnRlc3QoaCl8fCh1PSEwKX19ZWxzZSB2b2lkIDA9PT1pPyhkPXIrMSxpPWUuc2xpY2UoMCxyKS50cmltKCkpOm0oKTtmdW5jdGlvbiBtKCl7KG98fChvPVtdKSkucHVzaChlLnNsaWNlKGQscikudHJpbSgpKSxkPXIrMX1pZih2b2lkIDA9PT1pP2k9ZS5zbGljZSgwLHIpLnRyaW0oKTowIT09ZCYmbSgpLG8pZm9yKHI9MDtyPG8ubGVuZ3RoO3IrKylpPU9yKGksb1tyXSk7cmV0dXJuIGl9ZnVuY3Rpb24gT3IoZSx0KXt2YXIgbj10LmluZGV4T2YoIigiKTtpZihuPDApcmV0dXJuJ19mKCInK3QrJyIpKCcrZSsiKSI7dmFyIHI9dC5zbGljZSgwLG4pLGk9dC5zbGljZShuKzEpO3JldHVybidfZigiJytyKyciKSgnK2UrKCIpIiE9PWk\/IiwiK2k6aSl9ZnVuY3Rpb24gU3IoZSx0KXtjb25zb2xlLmVycm9yKCJbVnVlIGNvbXBpbGVyXTogIitlKX1mdW5jdGlvbiBUcihlLHQpe3JldHVybiBlP2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk6W119ZnVuY3Rpb24gRXIoZSx0LG4scixpKXsoZS5wcm9wc3x8KGUucHJvcHM9W10pKS5wdXNoKFJyKHtuYW1lOnQsdmFsdWU6bixkeW5hbWljOml9LHIpKSxlLnBsYWluPSExfWZ1bmN0aW9uIE5yKGUsdCxuLHIsaSl7KGk\/ZS5keW5hbWljQXR0cnN8fChlLmR5bmFtaWNBdHRycz1bXSk6ZS5hdHRyc3x8KGUuYXR0cnM9W10pKS5wdXNoKFJyKHtuYW1lOnQsdmFsdWU6bixkeW5hbWljOml9LHIpKSxlLnBsYWluPSExfWZ1bmN0aW9uIGpyKGUsdCxuLHIpe2UuYXR0cnNNYXBbdF09bixlLmF0dHJzTGlzdC5wdXNoKFJyKHtuYW1lOnQsdmFsdWU6bn0scikpfWZ1bmN0aW9uIERyKGUsdCxuLHIsaSxvLGEscyl7KGUuZGlyZWN0aXZlc3x8KGUuZGlyZWN0aXZlcz1bXSkpLnB1c2goUnIoe25hbWU6dCxyYXdOYW1lOm4sdmFsdWU6cixhcmc6aSxpc0R5bmFtaWNBcmc6byxtb2RpZmllcnM6YX0scykpLGUucGxhaW49ITF9ZnVuY3Rpb24gTHIoZSx0LG4pe3JldHVybiBuPyJfcCgiK3QrJywiJytlKyciKSc6ZSt0fWZ1bmN0aW9uIE1yKHQsbixyLGksbyxhLHMsYyl7dmFyIHU7KGk9aXx8ZSkucmlnaHQ\/Yz9uPSIoIituKyIpPT09J2NsaWNrJz8nY29udGV4dG1lbnUnOigiK24rIikiOiJjbGljayI9PT1uJiYobj0iY29udGV4dG1lbnUiLGRlbGV0ZSBpLnJpZ2h0KTppLm1pZGRsZSYmKGM\/bj0iKCIrbisiKT09PSdjbGljayc\/J21vdXNldXAnOigiK24rIikiOiJjbGljayI9PT1uJiYobj0ibW91c2V1cCIpKSxpLmNhcHR1cmUmJihkZWxldGUgaS5jYXB0dXJlLG49THIoIiEiLG4sYykpLGkub25jZSYmKGRlbGV0ZSBpLm9uY2Usbj1McigifiIsbixjKSksaS5wYXNzaXZlJiYoZGVsZXRlIGkucGFzc2l2ZSxuPUxyKCImIixuLGMpKSxpLm5hdGl2ZT8oZGVsZXRlIGkubmF0aXZlLHU9dC5uYXRpdmVFdmVudHN8fCh0Lm5hdGl2ZUV2ZW50cz17fSkpOnU9dC5ldmVudHN8fCh0LmV2ZW50cz17fSk7dmFyIGw9UnIoe3ZhbHVlOnIudHJpbSgpLGR5bmFtaWM6Y30scyk7aSE9PWUmJihsLm1vZGlmaWVycz1pKTt2YXIgZj11W25dO0FycmF5LmlzQXJyYXkoZik\/bz9mLnVuc2hpZnQobCk6Zi5wdXNoKGwpOnVbbl09Zj9vP1tsLGZdOltmLGxdOmwsdC5wbGFpbj0hMX1mdW5jdGlvbiBJcihlLHQsbil7dmFyIHI9RnIoZSwiOiIrdCl8fEZyKGUsInYtYmluZDoiK3QpO2lmKG51bGwhPXIpcmV0dXJuIEFyKHIpO2lmKCExIT09bil7dmFyIGk9RnIoZSx0KTtpZihudWxsIT1pKXJldHVybiBKU09OLnN0cmluZ2lmeShpKX19ZnVuY3Rpb24gRnIoZSx0LG4pe3ZhciByO2lmKG51bGwhPShyPWUuYXR0cnNNYXBbdF0pKWZvcih2YXIgaT1lLmF0dHJzTGlzdCxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKGlbb10ubmFtZT09PXQpe2kuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIG4mJmRlbGV0ZSBlLmF0dHJzTWFwW3RdLHJ9ZnVuY3Rpb24gUHIoZSx0KXtmb3IodmFyIG49ZS5hdHRyc0xpc3Qscj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7dmFyIG89bltyXTtpZih0LnRlc3Qoby5uYW1lKSlyZXR1cm4gbi5zcGxpY2UociwxKSxvfX1mdW5jdGlvbiBScihlLHQpe3JldHVybiB0JiYobnVsbCE9dC5zdGFydCYmKGUuc3RhcnQ9dC5zdGFydCksbnVsbCE9dC5lbmQmJihlLmVuZD10LmVuZCkpLGV9ZnVuY3Rpb24gSHIoZSx0LG4pe3ZhciByPW58fHt9LGk9ci5udW1iZXIsbz0iJCR2IjtyLnRyaW0mJihvPSIodHlwZW9mICQkdiA9PT0gJ3N0cmluZyc\/ICQkdi50cmltKCk6ICQkdikiKSxpJiYobz0iX24oIitvKyIpIik7dmFyIGE9QnIodCxvKTtlLm1vZGVsPXt2YWx1ZToiKCIrdCsiKSIsZXhwcmVzc2lvbjpKU09OLnN0cmluZ2lmeSh0KSxjYWxsYmFjazoiZnVuY3Rpb24gKCQkdikgeyIrYSsifSJ9fWZ1bmN0aW9uIEJyKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7aWYoZT1lLnRyaW0oKSxncj1lLmxlbmd0aCxlLmluZGV4T2YoIlsiKTwwfHxlLmxhc3RJbmRleE9mKCJdIik8Z3ItMSlyZXR1cm4oJHI9ZS5sYXN0SW5kZXhPZigiLiIpKT4tMT97ZXhwOmUuc2xpY2UoMCwkciksa2V5OiciJytlLnNsaWNlKCRyKzEpKyciJ306e2V4cDplLGtleTpudWxsfTtfcj1lLCRyPXdyPUNyPTA7Zm9yKDshenIoKTspVnIoYnI9VXIoKSk\/SnIoYnIpOjkxPT09YnImJktyKGJyKTtyZXR1cm57ZXhwOmUuc2xpY2UoMCx3ciksa2V5OmUuc2xpY2Uod3IrMSxDcil9fShlKTtyZXR1cm4gbnVsbD09PW4ua2V5P2UrIj0iK3Q6IiRzZXQoIituLmV4cCsiLCAiK24ua2V5KyIsICIrdCsiKSJ9ZnVuY3Rpb24gVXIoKXtyZXR1cm4gX3IuY2hhckNvZGVBdCgrKyRyKX1mdW5jdGlvbiB6cigpe3JldHVybiAkcj49Z3J9ZnVuY3Rpb24gVnIoZSl7cmV0dXJuIDM0PT09ZXx8Mzk9PT1lfWZ1bmN0aW9uIEtyKGUpe3ZhciB0PTE7Zm9yKHdyPSRyOyF6cigpOylpZihWcihlPVVyKCkpKUpyKGUpO2Vsc2UgaWYoOTE9PT1lJiZ0KyssOTM9PT1lJiZ0LS0sMD09PXQpe0NyPSRyO2JyZWFrfX1mdW5jdGlvbiBKcihlKXtmb3IodmFyIHQ9ZTshenIoKSYmKGU9VXIoKSkhPT10Oyk7fXZhciBxcixXcj0iX19yIixacj0iX19jIjtmdW5jdGlvbiBHcihlLHQsbil7dmFyIHI9cXI7cmV0dXJuIGZ1bmN0aW9uIGkoKXtudWxsIT09dC5hcHBseShudWxsLGFyZ3VtZW50cykmJlFyKGUsaSxuLHIpfX12YXIgWHI9VmUmJiEoWCYmTnVtYmVyKFhbMV0pPD01Myk7ZnVuY3Rpb24gWXIoZSx0LG4scil7aWYoWHIpe3ZhciBpPWFuLG89dDt0PW8uX3dyYXBwZXI9ZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQ9PT1lLmN1cnJlbnRUYXJnZXR8fGUudGltZVN0YW1wPj1pfHxlLnRpbWVTdGFtcDw9MHx8ZS50YXJnZXQub3duZXJEb2N1bWVudCE9PWRvY3VtZW50KXJldHVybiBvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19cXIuYWRkRXZlbnRMaXN0ZW5lcihlLHQsUT97Y2FwdHVyZTpuLHBhc3NpdmU6cn06bil9ZnVuY3Rpb24gUXIoZSx0LG4scil7KHJ8fHFyKS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fd3JhcHBlcnx8dCxuKX1mdW5jdGlvbiBlaShlLHIpe2lmKCF0KGUuZGF0YS5vbil8fCF0KHIuZGF0YS5vbikpe3ZhciBpPXIuZGF0YS5vbnx8e30sbz1lLmRhdGEub258fHt9O3FyPXIuZWxtLGZ1bmN0aW9uKGUpe2lmKG4oZVtXcl0pKXt2YXIgdD1xPyJjaGFuZ2UiOiJpbnB1dCI7ZVt0XT1bXS5jb25jYXQoZVtXcl0sZVt0XXx8W10pLGRlbGV0ZSBlW1dyXX1uKGVbWnJdKSYmKGUuY2hhbmdlPVtdLmNvbmNhdChlW1pyXSxlLmNoYW5nZXx8W10pLGRlbGV0ZSBlW1pyXSl9KGkpLHJ0KGksbyxZcixRcixHcixyLmNvbnRleHQpLHFyPXZvaWQgMH19dmFyIHRpLG5pPXtjcmVhdGU6ZWksdXBkYXRlOmVpfTtmdW5jdGlvbiByaShlLHIpe2lmKCF0KGUuZGF0YS5kb21Qcm9wcyl8fCF0KHIuZGF0YS5kb21Qcm9wcykpe3ZhciBpLG8sYT1yLmVsbSxzPWUuZGF0YS5kb21Qcm9wc3x8e30sYz1yLmRhdGEuZG9tUHJvcHN8fHt9O2ZvcihpIGluIG4oYy5fX29iX18pJiYoYz1yLmRhdGEuZG9tUHJvcHM9QSh7fSxjKSkscylpIGluIGN8fChhW2ldPSIiKTtmb3IoaSBpbiBjKXtpZihvPWNbaV0sInRleHRDb250ZW50Ij09PWl8fCJpbm5lckhUTUwiPT09aSl7aWYoci5jaGlsZHJlbiYmKHIuY2hpbGRyZW4ubGVuZ3RoPTApLG89PT1zW2ldKWNvbnRpbnVlOzE9PT1hLmNoaWxkTm9kZXMubGVuZ3RoJiZhLnJlbW92ZUNoaWxkKGEuY2hpbGROb2Rlc1swXSl9aWYoInZhbHVlIj09PWkmJiJQUk9HUkVTUyIhPT1hLnRhZ05hbWUpe2EuX3ZhbHVlPW87dmFyIHU9dChvKT8iIjpTdHJpbmcobyk7aWkoYSx1KSYmKGEudmFsdWU9dSl9ZWxzZSBpZigiaW5uZXJIVE1MIj09PWkmJnFuKGEudGFnTmFtZSkmJnQoYS5pbm5lckhUTUwpKXsodGk9dGl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9Ijxzdmc+IitvKyI8L3N2Zz4iO2Zvcih2YXIgbD10aS5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7bC5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGwuZmlyc3RDaGlsZCl9ZWxzZSBpZihvIT09c1tpXSl0cnl7YVtpXT1vfWNhdGNoKGUpe319fX1mdW5jdGlvbiBpaShlLHQpe3JldHVybiFlLmNvbXBvc2luZyYmKCJPUFRJT04iPT09ZS50YWdOYW1lfHxmdW5jdGlvbihlLHQpe3ZhciBuPSEwO3RyeXtuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lfWNhdGNoKGUpe31yZXR1cm4gbiYmZS52YWx1ZSE9PXR9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS52YWx1ZSxpPWUuX3ZNb2RpZmllcnM7aWYobihpKSl7aWYoaS5udW1iZXIpcmV0dXJuIGYocikhPT1mKHQpO2lmKGkudHJpbSlyZXR1cm4gci50cmltKCkhPT10LnRyaW0oKX1yZXR1cm4gciE9PXR9KGUsdCkpfXZhciBvaT17Y3JlYXRlOnJpLHVwZGF0ZTpyaX0sYWk9ZyhmdW5jdGlvbihlKXt2YXIgdD17fSxuPS86KC4rKS87cmV0dXJuIGUuc3BsaXQoLzsoPyFbXihdKlwpKS9nKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciByPWUuc3BsaXQobik7ci5sZW5ndGg+MSYmKHRbclswXS50cmltKCldPXJbMV0udHJpbSgpKX19KSx0fSk7ZnVuY3Rpb24gc2koZSl7dmFyIHQ9Y2koZS5zdHlsZSk7cmV0dXJuIGUuc3RhdGljU3R5bGU\/QShlLnN0YXRpY1N0eWxlLHQpOnR9ZnVuY3Rpb24gY2koZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/TyhlKToic3RyaW5nIj09dHlwZW9mIGU\/YWkoZSk6ZX12YXIgdWksbGk9L14tLS8sZmk9L1xzKiFpbXBvcnRhbnQkLyxwaT1mdW5jdGlvbihlLHQsbil7aWYobGkudGVzdCh0KSllLnN0eWxlLnNldFByb3BlcnR5KHQsbik7ZWxzZSBpZihmaS50ZXN0KG4pKWUuc3R5bGUuc2V0UHJvcGVydHkoQyh0KSxuLnJlcGxhY2UoZmksIiIpLCJpbXBvcnRhbnQiKTtlbHNle3ZhciByPXZpKHQpO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKWUuc3R5bGVbcl09bltpXTtlbHNlIGUuc3R5bGVbcl09bn19LGRpPVsiV2Via2l0IiwiTW96IiwibXMiXSx2aT1nKGZ1bmN0aW9uKGUpe2lmKHVpPXVpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiZmlsdGVyIiE9PShlPWIoZSkpJiZlIGluIHVpKXJldHVybiBlO2Zvcih2YXIgdD1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0wO248ZGkubGVuZ3RoO24rKyl7dmFyIHI9ZGlbbl0rdDtpZihyIGluIHVpKXJldHVybiByfX0pO2Z1bmN0aW9uIGhpKGUscil7dmFyIGk9ci5kYXRhLG89ZS5kYXRhO2lmKCEodChpLnN0YXRpY1N0eWxlKSYmdChpLnN0eWxlKSYmdChvLnN0YXRpY1N0eWxlKSYmdChvLnN0eWxlKSkpe3ZhciBhLHMsYz1yLmVsbSx1PW8uc3RhdGljU3R5bGUsbD1vLm5vcm1hbGl6ZWRTdHlsZXx8by5zdHlsZXx8e30sZj11fHxsLHA9Y2koci5kYXRhLnN0eWxlKXx8e307ci5kYXRhLm5vcm1hbGl6ZWRTdHlsZT1uKHAuX19vYl9fKT9BKHt9LHApOnA7dmFyIGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXt9O2lmKHQpZm9yKHZhciBpPWU7aS5jb21wb25lbnRJbnN0YW5jZTspKGk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpJiZpLmRhdGEmJihuPXNpKGkuZGF0YSkpJiZBKHIsbik7KG49c2koZS5kYXRhKSkmJkEocixuKTtmb3IodmFyIG89ZTtvPW8ucGFyZW50OylvLmRhdGEmJihuPXNpKG8uZGF0YSkpJiZBKHIsbik7cmV0dXJuIHJ9KHIsITApO2ZvcihzIGluIGYpdChkW3NdKSYmcGkoYyxzLCIiKTtmb3IocyBpbiBkKShhPWRbc10pIT09ZltzXSYmcGkoYyxzLG51bGw9PWE\/IiI6YSl9fXZhciBtaT17Y3JlYXRlOmhpLHVwZGF0ZTpoaX0seWk9L1xzKy87ZnVuY3Rpb24gZ2koZSx0KXtpZih0JiYodD10LnRyaW0oKSkpaWYoZS5jbGFzc0xpc3QpdC5pbmRleE9mKCIgIik+LTE\/dC5zcGxpdCh5aSkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QuYWRkKHQpfSk6ZS5jbGFzc0xpc3QuYWRkKHQpO2Vsc2V7dmFyIG49IiAiKyhlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIjtuLmluZGV4T2YoIiAiK3QrIiAiKTwwJiZlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLChuK3QpLnRyaW0oKSl9fWZ1bmN0aW9uIF9pKGUsdCl7aWYodCYmKHQ9dC50cmltKCkpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZigiICIpPi0xP3Quc3BsaXQoeWkpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pOmUuY2xhc3NMaXN0LnJlbW92ZSh0KSxlLmNsYXNzTGlzdC5sZW5ndGh8fGUucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpO2Vsc2V7Zm9yKHZhciBuPSIgIisoZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKSsiICIscj0iICIrdCsiICI7bi5pbmRleE9mKHIpPj0wOyluPW4ucmVwbGFjZShyLCIgIik7KG49bi50cmltKCkpP2Uuc2V0QXR0cmlidXRlKCJjbGFzcyIsbik6ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIil9fWZ1bmN0aW9uIGJpKGUpe2lmKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIHQ9e307cmV0dXJuITEhPT1lLmNzcyYmQSh0LCRpKGUubmFtZXx8InYiKSksQSh0LGUpLHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyRpKGUpOnZvaWQgMH19dmFyICRpPWcoZnVuY3Rpb24oZSl7cmV0dXJue2VudGVyQ2xhc3M6ZSsiLWVudGVyIixlbnRlclRvQ2xhc3M6ZSsiLWVudGVyLXRvIixlbnRlckFjdGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUiLGxlYXZlQ2xhc3M6ZSsiLWxlYXZlIixsZWF2ZVRvQ2xhc3M6ZSsiLWxlYXZlLXRvIixsZWF2ZUFjdGl2ZUNsYXNzOmUrIi1sZWF2ZS1hY3RpdmUifX0pLHdpPXomJiFXLENpPSJ0cmFuc2l0aW9uIix4aT0iYW5pbWF0aW9uIixraT0idHJhbnNpdGlvbiIsQWk9InRyYW5zaXRpb25lbmQiLE9pPSJhbmltYXRpb24iLFNpPSJhbmltYXRpb25lbmQiO3dpJiYodm9pZCAwPT09d2luZG93Lm9udHJhbnNpdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCYmKGtpPSJXZWJraXRUcmFuc2l0aW9uIixBaT0id2Via2l0VHJhbnNpdGlvbkVuZCIpLHZvaWQgMD09PXdpbmRvdy5vbmFuaW1hdGlvbmVuZCYmdm9pZCAwIT09d2luZG93Lm9ud2Via2l0YW5pbWF0aW9uZW5kJiYoT2k9IldlYmtpdEFuaW1hdGlvbiIsU2k9IndlYmtpdEFuaW1hdGlvbkVuZCIpKTt2YXIgVGk9ej93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX07ZnVuY3Rpb24gRWkoZSl7VGkoZnVuY3Rpb24oKXtUaShlKX0pfWZ1bmN0aW9uIE5pKGUsdCl7dmFyIG49ZS5fdHJhbnNpdGlvbkNsYXNzZXN8fChlLl90cmFuc2l0aW9uQ2xhc3Nlcz1bXSk7bi5pbmRleE9mKHQpPDAmJihuLnB1c2godCksZ2koZSx0KSl9ZnVuY3Rpb24gamkoZSx0KXtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmaChlLl90cmFuc2l0aW9uQ2xhc3Nlcyx0KSxfaShlLHQpfWZ1bmN0aW9uIERpKGUsdCxuKXt2YXIgcj1NaShlLHQpLGk9ci50eXBlLG89ci50aW1lb3V0LGE9ci5wcm9wQ291bnQ7aWYoIWkpcmV0dXJuIG4oKTt2YXIgcz1pPT09Q2k\/QWk6U2ksYz0wLHU9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxsKSxuKCl9LGw9ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT1lJiYrK2M+PWEmJnUoKX07c2V0VGltZW91dChmdW5jdGlvbigpe2M8YSYmdSgpfSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLGwpfXZhciBMaT0vXGIodHJhbnNmb3JtfGFsbCkoLHwkKS87ZnVuY3Rpb24gTWkoZSx0KXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLGk9KHJba2krIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSxvPShyW2tpKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksYT1JaShpLG8pLHM9KHJbT2krIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSxjPShyW09pKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksdT1JaShzLGMpLGw9MCxmPTA7cmV0dXJuIHQ9PT1DaT9hPjAmJihuPUNpLGw9YSxmPW8ubGVuZ3RoKTp0PT09eGk\/dT4wJiYobj14aSxsPXUsZj1jLmxlbmd0aCk6Zj0obj0obD1NYXRoLm1heChhLHUpKT4wP2E+dT9DaTp4aTpudWxsKT9uPT09Q2k\/by5sZW5ndGg6Yy5sZW5ndGg6MCx7dHlwZTpuLHRpbWVvdXQ6bCxwcm9wQ291bnQ6ZixoYXNUcmFuc2Zvcm06bj09PUNpJiZMaS50ZXN0KHJba2krIlByb3BlcnR5Il0pfX1mdW5jdGlvbiBJaShlLHQpe2Zvcig7ZS5sZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gRmkodCkrRmkoZVtuXSl9KSl9ZnVuY3Rpb24gRmkoZSl7cmV0dXJuIDFlMypOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKCIsIiwiLiIpKX1mdW5jdGlvbiBQaShlLHIpe3ZhciBpPWUuZWxtO24oaS5fbGVhdmVDYikmJihpLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxpLl9sZWF2ZUNiKCkpO3ZhciBhPWJpKGUuZGF0YS50cmFuc2l0aW9uKTtpZighdChhKSYmIW4oaS5fZW50ZXJDYikmJjE9PT1pLm5vZGVUeXBlKXtmb3IodmFyIHM9YS5jc3MsYz1hLnR5cGUsdT1hLmVudGVyQ2xhc3MsbD1hLmVudGVyVG9DbGFzcyxwPWEuZW50ZXJBY3RpdmVDbGFzcyxkPWEuYXBwZWFyQ2xhc3Msdj1hLmFwcGVhclRvQ2xhc3MsaD1hLmFwcGVhckFjdGl2ZUNsYXNzLG09YS5iZWZvcmVFbnRlcix5PWEuZW50ZXIsZz1hLmFmdGVyRW50ZXIsXz1hLmVudGVyQ2FuY2VsbGVkLGI9YS5iZWZvcmVBcHBlYXIsJD1hLmFwcGVhcix3PWEuYWZ0ZXJBcHBlYXIsQz1hLmFwcGVhckNhbmNlbGxlZCx4PWEuZHVyYXRpb24saz1XdCxBPVd0LiR2bm9kZTtBJiZBLnBhcmVudDspaz1BLmNvbnRleHQsQT1BLnBhcmVudDt2YXIgTz0hay5faXNNb3VudGVkfHwhZS5pc1Jvb3RJbnNlcnQ7aWYoIU98fCR8fCIiPT09JCl7dmFyIFM9TyYmZD9kOnUsVD1PJiZoP2g6cCxFPU8mJnY\/djpsLE49TyYmYnx8bSxqPU8mJiJmdW5jdGlvbiI9PXR5cGVvZiAkPyQ6eSxMPU8mJnd8fGcsTT1PJiZDfHxfLEk9ZihvKHgpP3guZW50ZXI6eCksRj0hMSE9PXMmJiFXLFA9QmkoaiksUj1pLl9lbnRlckNiPUQoZnVuY3Rpb24oKXtGJiYoamkoaSxFKSxqaShpLFQpKSxSLmNhbmNlbGxlZD8oRiYmamkoaSxTKSxNJiZNKGkpKTpMJiZMKGkpLGkuX2VudGVyQ2I9bnVsbH0pO2UuZGF0YS5zaG93fHxpdChlLCJpbnNlcnQiLGZ1bmN0aW9uKCl7dmFyIHQ9aS5wYXJlbnROb2RlLG49dCYmdC5fcGVuZGluZyYmdC5fcGVuZGluZ1tlLmtleV07biYmbi50YWc9PT1lLnRhZyYmbi5lbG0uX2xlYXZlQ2ImJm4uZWxtLl9sZWF2ZUNiKCksaiYmaihpLFIpfSksTiYmTihpKSxGJiYoTmkoaSxTKSxOaShpLFQpLEVpKGZ1bmN0aW9uKCl7amkoaSxTKSxSLmNhbmNlbGxlZHx8KE5pKGksRSksUHx8KEhpKEkpP3NldFRpbWVvdXQoUixJKTpEaShpLGMsUikpKX0pKSxlLmRhdGEuc2hvdyYmKHImJnIoKSxqJiZqKGksUikpLEZ8fFB8fFIoKX19fWZ1bmN0aW9uIFJpKGUscil7dmFyIGk9ZS5lbG07bihpLl9lbnRlckNiKSYmKGkuX2VudGVyQ2IuY2FuY2VsbGVkPSEwLGkuX2VudGVyQ2IoKSk7dmFyIGE9YmkoZS5kYXRhLnRyYW5zaXRpb24pO2lmKHQoYSl8fDEhPT1pLm5vZGVUeXBlKXJldHVybiByKCk7aWYoIW4oaS5fbGVhdmVDYikpe3ZhciBzPWEuY3NzLGM9YS50eXBlLHU9YS5sZWF2ZUNsYXNzLGw9YS5sZWF2ZVRvQ2xhc3MscD1hLmxlYXZlQWN0aXZlQ2xhc3MsZD1hLmJlZm9yZUxlYXZlLHY9YS5sZWF2ZSxoPWEuYWZ0ZXJMZWF2ZSxtPWEubGVhdmVDYW5jZWxsZWQseT1hLmRlbGF5TGVhdmUsZz1hLmR1cmF0aW9uLF89ITEhPT1zJiYhVyxiPUJpKHYpLCQ9ZihvKGcpP2cubGVhdmU6Zyksdz1pLl9sZWF2ZUNiPUQoZnVuY3Rpb24oKXtpLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5fcGVuZGluZyYmKGkucGFyZW50Tm9kZS5fcGVuZGluZ1tlLmtleV09bnVsbCksXyYmKGppKGksbCksamkoaSxwKSksdy5jYW5jZWxsZWQ\/KF8mJmppKGksdSksbSYmbShpKSk6KHIoKSxoJiZoKGkpKSxpLl9sZWF2ZUNiPW51bGx9KTt5P3koQyk6QygpfWZ1bmN0aW9uIEMoKXt3LmNhbmNlbGxlZHx8KCFlLmRhdGEuc2hvdyYmaS5wYXJlbnROb2RlJiYoKGkucGFyZW50Tm9kZS5fcGVuZGluZ3x8KGkucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSxkJiZkKGkpLF8mJihOaShpLHUpLE5pKGkscCksRWkoZnVuY3Rpb24oKXtqaShpLHUpLHcuY2FuY2VsbGVkfHwoTmkoaSxsKSxifHwoSGkoJCk\/c2V0VGltZW91dCh3LCQpOkRpKGksYyx3KSkpfSkpLHYmJnYoaSx3KSxffHxifHx3KCkpfX1mdW5jdGlvbiBIaShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBCaShlKXtpZih0KGUpKXJldHVybiExO3ZhciByPWUuZm5zO3JldHVybiBuKHIpP0JpKEFycmF5LmlzQXJyYXkocik\/clswXTpyKTooZS5fbGVuZ3RofHxlLmxlbmd0aCk+MX1mdW5jdGlvbiBVaShlLHQpeyEwIT09dC5kYXRhLnNob3cmJlBpKHQpfXZhciB6aT1mdW5jdGlvbihlKXt2YXIgbyxhLHM9e30sYz1lLm1vZHVsZXMsdT1lLm5vZGVPcHM7Zm9yKG89MDtvPHJyLmxlbmd0aDsrK28pZm9yKHNbcnJbb11dPVtdLGE9MDthPGMubGVuZ3RoOysrYSluKGNbYV1bcnJbb11dKSYmc1tycltvXV0ucHVzaChjW2FdW3JyW29dXSk7ZnVuY3Rpb24gbChlKXt2YXIgdD11LnBhcmVudE5vZGUoZSk7bih0KSYmdS5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIGYoZSx0LGksbyxhLGMsbCl7aWYobihlLmVsbSkmJm4oYykmJihlPWNbbF09bWUoZSkpLGUuaXNSb290SW5zZXJ0PSFhLCFmdW5jdGlvbihlLHQsaSxvKXt2YXIgYT1lLmRhdGE7aWYobihhKSl7dmFyIGM9bihlLmNvbXBvbmVudEluc3RhbmNlKSYmYS5rZWVwQWxpdmU7aWYobihhPWEuaG9vaykmJm4oYT1hLmluaXQpJiZhKGUsITEpLG4oZS5jb21wb25lbnRJbnN0YW5jZSkpcmV0dXJuIGQoZSx0KSx2KGksZS5lbG0sbykscihjKSYmZnVuY3Rpb24oZSx0LHIsaSl7Zm9yKHZhciBvLGE9ZTthLmNvbXBvbmVudEluc3RhbmNlOylpZihhPWEuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLG4obz1hLmRhdGEpJiZuKG89by50cmFuc2l0aW9uKSl7Zm9yKG89MDtvPHMuYWN0aXZhdGUubGVuZ3RoOysrbylzLmFjdGl2YXRlW29dKG5yLGEpO3QucHVzaChhKTticmVha312KHIsZS5lbG0saSl9KGUsdCxpLG8pLCEwfX0oZSx0LGksbykpe3ZhciBmPWUuZGF0YSxwPWUuY2hpbGRyZW4sbT1lLnRhZztuKG0pPyhlLmVsbT1lLm5zP3UuY3JlYXRlRWxlbWVudE5TKGUubnMsbSk6dS5jcmVhdGVFbGVtZW50KG0sZSksZyhlKSxoKGUscCx0KSxuKGYpJiZ5KGUsdCksdihpLGUuZWxtLG8pKTpyKGUuaXNDb21tZW50KT8oZS5lbG09dS5jcmVhdGVDb21tZW50KGUudGV4dCksdihpLGUuZWxtLG8pKTooZS5lbG09dS5jcmVhdGVUZXh0Tm9kZShlLnRleHQpLHYoaSxlLmVsbSxvKSl9fWZ1bmN0aW9uIGQoZSx0KXtuKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCxtKGUpPyh5KGUsdCksZyhlKSk6KHRyKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gdihlLHQscil7bihlKSYmKG4ocik\/dS5wYXJlbnROb2RlKHIpPT09ZSYmdS5pbnNlcnRCZWZvcmUoZSx0LHIpOnUuYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24gaChlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcilmKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscik7ZWxzZSBpKGUudGV4dCkmJnUuYXBwZW5kQ2hpbGQoZS5lbG0sdS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uIG0oZSl7Zm9yKDtlLmNvbXBvbmVudEluc3RhbmNlOyllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBuKGUudGFnKX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciByPTA7cjxzLmNyZWF0ZS5sZW5ndGg7KytyKXMuY3JlYXRlW3JdKG5yLGUpO24obz1lLmRhdGEuaG9vaykmJihuKG8uY3JlYXRlKSYmby5jcmVhdGUobnIsZSksbihvLmluc2VydCkmJnQucHVzaChlKSl9ZnVuY3Rpb24gZyhlKXt2YXIgdDtpZihuKHQ9ZS5mblNjb3BlSWQpKXUuc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNlIGZvcih2YXIgcj1lO3I7KW4odD1yLmNvbnRleHQpJiZuKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJnUuc2V0U3R5bGVTY29wZShlLmVsbSx0KSxyPXIucGFyZW50O24odD1XdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmbih0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZ1LnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24gXyhlLHQsbixyLGksbyl7Zm9yKDtyPD1pOysrcilmKG5bcl0sbyxlLHQsITEsbixyKX1mdW5jdGlvbiBiKGUpe3ZhciB0LHIsaT1lLmRhdGE7aWYobihpKSlmb3Iobih0PWkuaG9vaykmJm4odD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PHMuZGVzdHJveS5sZW5ndGg7Kyt0KXMuZGVzdHJveVt0XShlKTtpZihuKHQ9ZS5jaGlsZHJlbikpZm9yKHI9MDtyPGUuY2hpbGRyZW4ubGVuZ3RoOysrciliKGUuY2hpbGRyZW5bcl0pfWZ1bmN0aW9uICQoZSx0LHIpe2Zvcig7dDw9cjsrK3Qpe3ZhciBpPWVbdF07bihpKSYmKG4oaS50YWcpPyh3KGkpLGIoaSkpOmwoaS5lbG0pKX19ZnVuY3Rpb24gdyhlLHQpe2lmKG4odCl8fG4oZS5kYXRhKSl7dmFyIHIsaT1zLnJlbW92ZS5sZW5ndGgrMTtmb3Iobih0KT90Lmxpc3RlbmVycys9aTp0PWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpezA9PS0tbi5saXN0ZW5lcnMmJmwoZSl9cmV0dXJuIG4ubGlzdGVuZXJzPXQsbn0oZS5lbG0saSksbihyPWUuY29tcG9uZW50SW5zdGFuY2UpJiZuKHI9ci5fdm5vZGUpJiZuKHIuZGF0YSkmJncocix0KSxyPTA7cjxzLnJlbW92ZS5sZW5ndGg7KytyKXMucmVtb3ZlW3JdKGUsdCk7bihyPWUuZGF0YS5ob29rKSYmbihyPXIucmVtb3ZlKT9yKGUsdCk6dCgpfWVsc2UgbChlLmVsbSl9ZnVuY3Rpb24gQyhlLHQscixpKXtmb3IodmFyIG89cjtvPGk7bysrKXt2YXIgYT10W29dO2lmKG4oYSkmJmlyKGUsYSkpcmV0dXJuIG99fWZ1bmN0aW9uIHgoZSxpLG8sYSxjLGwpe2lmKGUhPT1pKXtuKGkuZWxtKSYmbihhKSYmKGk9YVtjXT1tZShpKSk7dmFyIHA9aS5lbG09ZS5lbG07aWYocihlLmlzQXN5bmNQbGFjZWhvbGRlcikpbihpLmFzeW5jRmFjdG9yeS5yZXNvbHZlZCk\/TyhlLmVsbSxpLG8pOmkuaXNBc3luY1BsYWNlaG9sZGVyPSEwO2Vsc2UgaWYocihpLmlzU3RhdGljKSYmcihlLmlzU3RhdGljKSYmaS5rZXk9PT1lLmtleSYmKHIoaS5pc0Nsb25lZCl8fHIoaS5pc09uY2UpKSlpLmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7ZWxzZXt2YXIgZCx2PWkuZGF0YTtuKHYpJiZuKGQ9di5ob29rKSYmbihkPWQucHJlcGF0Y2gpJiZkKGUsaSk7dmFyIGg9ZS5jaGlsZHJlbix5PWkuY2hpbGRyZW47aWYobih2KSYmbShpKSl7Zm9yKGQ9MDtkPHMudXBkYXRlLmxlbmd0aDsrK2Qpcy51cGRhdGVbZF0oZSxpKTtuKGQ9di5ob29rKSYmbihkPWQudXBkYXRlKSYmZChlLGkpfXQoaS50ZXh0KT9uKGgpJiZuKHkpP2ghPT15JiZmdW5jdGlvbihlLHIsaSxvLGEpe2Zvcih2YXIgcyxjLGwscD0wLGQ9MCx2PXIubGVuZ3RoLTEsaD1yWzBdLG09clt2XSx5PWkubGVuZ3RoLTEsZz1pWzBdLGI9aVt5XSx3PSFhO3A8PXYmJmQ8PXk7KXQoaCk\/aD1yWysrcF06dChtKT9tPXJbLS12XTppcihoLGcpPyh4KGgsZyxvLGksZCksaD1yWysrcF0sZz1pWysrZF0pOmlyKG0sYik\/KHgobSxiLG8saSx5KSxtPXJbLS12XSxiPWlbLS15XSk6aXIoaCxiKT8oeChoLGIsbyxpLHkpLHcmJnUuaW5zZXJ0QmVmb3JlKGUsaC5lbG0sdS5uZXh0U2libGluZyhtLmVsbSkpLGg9clsrK3BdLGI9aVstLXldKTppcihtLGcpPyh4KG0sZyxvLGksZCksdyYmdS5pbnNlcnRCZWZvcmUoZSxtLmVsbSxoLmVsbSksbT1yWy0tdl0sZz1pWysrZF0pOih0KHMpJiYocz1vcihyLHAsdikpLHQoYz1uKGcua2V5KT9zW2cua2V5XTpDKGcscixwLHYpKT9mKGcsbyxlLGguZWxtLCExLGksZCk6aXIobD1yW2NdLGcpPyh4KGwsZyxvLGksZCkscltjXT12b2lkIDAsdyYmdS5pbnNlcnRCZWZvcmUoZSxsLmVsbSxoLmVsbSkpOmYoZyxvLGUsaC5lbG0sITEsaSxkKSxnPWlbKytkXSk7cD52P18oZSx0KGlbeSsxXSk\/bnVsbDppW3krMV0uZWxtLGksZCx5LG8pOmQ+eSYmJChyLHAsdil9KHAsaCx5LG8sbCk6bih5KT8obihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsIiIpLF8ocCxudWxsLHksMCx5Lmxlbmd0aC0xLG8pKTpuKGgpPyQoaCwwLGgubGVuZ3RoLTEpOm4oZS50ZXh0KSYmdS5zZXRUZXh0Q29udGVudChwLCIiKTplLnRleHQhPT1pLnRleHQmJnUuc2V0VGV4dENvbnRlbnQocCxpLnRleHQpLG4odikmJm4oZD12Lmhvb2spJiZuKGQ9ZC5wb3N0cGF0Y2gpJiZkKGUsaSl9fX1mdW5jdGlvbiBrKGUsdCxpKXtpZihyKGkpJiZuKGUucGFyZW50KSllLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQ9dDtlbHNlIGZvcih2YXIgbz0wO288dC5sZW5ndGg7KytvKXRbb10uZGF0YS5ob29rLmluc2VydCh0W29dKX12YXIgQT1wKCJhdHRycyxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXkiKTtmdW5jdGlvbiBPKGUsdCxpLG8pe3ZhciBhLHM9dC50YWcsYz10LmRhdGEsdT10LmNoaWxkcmVuO2lmKG89b3x8YyYmYy5wcmUsdC5lbG09ZSxyKHQuaXNDb21tZW50KSYmbih0LmFzeW5jRmFjdG9yeSkpcmV0dXJuIHQuaXNBc3luY1BsYWNlaG9sZGVyPSEwLCEwO2lmKG4oYykmJihuKGE9Yy5ob29rKSYmbihhPWEuaW5pdCkmJmEodCwhMCksbihhPXQuY29tcG9uZW50SW5zdGFuY2UpKSlyZXR1cm4gZCh0LGkpLCEwO2lmKG4ocykpe2lmKG4odSkpaWYoZS5oYXNDaGlsZE5vZGVzKCkpaWYobihhPWMpJiZuKGE9YS5kb21Qcm9wcykmJm4oYT1hLmlubmVySFRNTCkpe2lmKGEhPT1lLmlubmVySFRNTClyZXR1cm4hMX1lbHNle2Zvcih2YXIgbD0hMCxmPWUuZmlyc3RDaGlsZCxwPTA7cDx1Lmxlbmd0aDtwKyspe2lmKCFmfHwhTyhmLHVbcF0saSxvKSl7bD0hMTticmVha31mPWYubmV4dFNpYmxpbmd9aWYoIWx8fGYpcmV0dXJuITF9ZWxzZSBoKHQsdSxpKTtpZihuKGMpKXt2YXIgdj0hMTtmb3IodmFyIG0gaW4gYylpZighQShtKSl7dj0hMCx5KHQsaSk7YnJlYWt9IXYmJmMuY2xhc3MmJmV0KGMuY2xhc3MpfX1lbHNlIGUuZGF0YSE9PXQudGV4dCYmKGUuZGF0YT10LnRleHQpO3JldHVybiEwfXJldHVybiBmdW5jdGlvbihlLGksbyxhKXtpZighdChpKSl7dmFyIGMsbD0hMSxwPVtdO2lmKHQoZSkpbD0hMCxmKGkscCk7ZWxzZXt2YXIgZD1uKGUubm9kZVR5cGUpO2lmKCFkJiZpcihlLGkpKXgoZSxpLHAsbnVsbCxudWxsLGEpO2Vsc2V7aWYoZCl7aWYoMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKEwpJiYoZS5yZW1vdmVBdHRyaWJ1dGUoTCksbz0hMCkscihvKSYmTyhlLGkscCkpcmV0dXJuIGsoaSxwLCEwKSxlO2M9ZSxlPW5ldyBwZSh1LnRhZ05hbWUoYykudG9Mb3dlckNhc2UoKSx7fSxbXSx2b2lkIDAsYyl9dmFyIHY9ZS5lbG0saD11LnBhcmVudE5vZGUodik7aWYoZihpLHAsdi5fbGVhdmVDYj9udWxsOmgsdS5uZXh0U2libGluZyh2KSksbihpLnBhcmVudCkpZm9yKHZhciB5PWkucGFyZW50LGc9bShpKTt5Oyl7Zm9yKHZhciBfPTA7XzxzLmRlc3Ryb3kubGVuZ3RoOysrXylzLmRlc3Ryb3lbX10oeSk7aWYoeS5lbG09aS5lbG0sZyl7Zm9yKHZhciB3PTA7dzxzLmNyZWF0ZS5sZW5ndGg7Kyt3KXMuY3JlYXRlW3ddKG5yLHkpO3ZhciBDPXkuZGF0YS5ob29rLmluc2VydDtpZihDLm1lcmdlZClmb3IodmFyIEE9MTtBPEMuZm5zLmxlbmd0aDtBKyspQy5mbnNbQV0oKX1lbHNlIHRyKHkpO3k9eS5wYXJlbnR9bihoKT8kKFtlXSwwLDApOm4oZS50YWcpJiZiKGUpfX1yZXR1cm4gayhpLHAsbCksaS5lbG19bihlKSYmYihlKX19KHtub2RlT3BzOlFuLG1vZHVsZXM6W21yLHhyLG5pLG9pLG1pLHo\/e2NyZWF0ZTpVaSxhY3RpdmF0ZTpVaSxyZW1vdmU6ZnVuY3Rpb24oZSx0KXshMCE9PWUuZGF0YS5zaG93P1JpKGUsdCk6dCgpfX06e31dLmNvbmNhdChwcil9KTtXJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtlJiZlLnZtb2RlbCYmWGkoZSwiaW5wdXQiKX0pO3ZhciBWaT17aW5zZXJ0ZWQ6ZnVuY3Rpb24oZSx0LG4scil7InNlbGVjdCI9PT1uLnRhZz8oci5lbG0mJiFyLmVsbS5fdk9wdGlvbnM\/aXQobiwicG9zdHBhdGNoIixmdW5jdGlvbigpe1ZpLmNvbXBvbmVudFVwZGF0ZWQoZSx0LG4pfSk6S2koZSx0LG4uY29udGV4dCksZS5fdk9wdGlvbnM9W10ubWFwLmNhbGwoZS5vcHRpb25zLFdpKSk6KCJ0ZXh0YXJlYSI9PT1uLnRhZ3x8WG4oZS50eXBlKSkmJihlLl92TW9kaWZpZXJzPXQubW9kaWZpZXJzLHQubW9kaWZpZXJzLmxhenl8fChlLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLFppKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9uZW5kIixHaSksZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLEdpKSxXJiYoZS52bW9kZWw9ITApKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCJzZWxlY3QiPT09bi50YWcpe0tpKGUsdCxuLmNvbnRleHQpO3ZhciByPWUuX3ZPcHRpb25zLGk9ZS5fdk9wdGlvbnM9W10ubWFwLmNhbGwoZS5vcHRpb25zLFdpKTtpZihpLnNvbWUoZnVuY3Rpb24oZSx0KXtyZXR1cm4hTihlLHJbdF0pfSkpKGUubXVsdGlwbGU\/dC52YWx1ZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBxaShlLGkpfSk6dC52YWx1ZSE9PXQub2xkVmFsdWUmJnFpKHQudmFsdWUsaSkpJiZYaShlLCJjaGFuZ2UiKX19fTtmdW5jdGlvbiBLaShlLHQsbil7SmkoZSx0LG4pLChxfHxaKSYmc2V0VGltZW91dChmdW5jdGlvbigpe0ppKGUsdCxuKX0sMCl9ZnVuY3Rpb24gSmkoZSx0LG4pe3ZhciByPXQudmFsdWUsaT1lLm11bHRpcGxlO2lmKCFpfHxBcnJheS5pc0FycmF5KHIpKXtmb3IodmFyIG8sYSxzPTAsYz1lLm9wdGlvbnMubGVuZ3RoO3M8YztzKyspaWYoYT1lLm9wdGlvbnNbc10saSlvPWoocixXaShhKSk+LTEsYS5zZWxlY3RlZCE9PW8mJihhLnNlbGVjdGVkPW8pO2Vsc2UgaWYoTihXaShhKSxyKSlyZXR1cm4gdm9pZChlLnNlbGVjdGVkSW5kZXghPT1zJiYoZS5zZWxlY3RlZEluZGV4PXMpKTtpfHwoZS5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gcWkoZSx0KXtyZXR1cm4gdC5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4hTih0LGUpfSl9ZnVuY3Rpb24gV2koZSl7cmV0dXJuIl92YWx1ZSJpbiBlP2UuX3ZhbHVlOmUudmFsdWV9ZnVuY3Rpb24gWmkoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIEdpKGUpe2UudGFyZ2V0LmNvbXBvc2luZyYmKGUudGFyZ2V0LmNvbXBvc2luZz0hMSxYaShlLnRhcmdldCwiaW5wdXQiKSl9ZnVuY3Rpb24gWGkoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpO24uaW5pdEV2ZW50KHQsITAsITApLGUuZGlzcGF0Y2hFdmVudChuKX1mdW5jdGlvbiBZaShlKXtyZXR1cm4hZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5kYXRhJiZlLmRhdGEudHJhbnNpdGlvbj9lOllpKGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlKX12YXIgUWk9e21vZGVsOlZpLHNob3c6e2JpbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWUsaT0obj1ZaShuKSkuZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24sbz1lLl9fdk9yaWdpbmFsRGlzcGxheT0ibm9uZSI9PT1lLnN0eWxlLmRpc3BsYXk\/IiI6ZS5zdHlsZS5kaXNwbGF5O3ImJmk\/KG4uZGF0YS5zaG93PSEwLFBpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9b30pKTplLnN0eWxlLmRpc3BsYXk9cj9vOiJub25lIn0sdXBkYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlOyFyIT0hdC5vbGRWYWx1ZSYmKChuPVlpKG4pKS5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbj8obi5kYXRhLnNob3c9ITAscj9QaShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PWUuX192T3JpZ2luYWxEaXNwbGF5fSk6UmkobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KSk6ZS5zdHlsZS5kaXNwbGF5PXI\/ZS5fX3ZPcmlnaW5hbERpc3BsYXk6Im5vbmUiKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCxuLHIsaSl7aXx8KGUuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheSl9fX0sZW89e25hbWU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLGNzczpCb29sZWFuLG1vZGU6U3RyaW5nLHR5cGU6U3RyaW5nLGVudGVyQ2xhc3M6U3RyaW5nLGxlYXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZyxlbnRlckFjdGl2ZUNsYXNzOlN0cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFzczpTdHJpbmcsYXBwZWFyQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhclRvQ2xhc3M6U3RyaW5nLGR1cmF0aW9uOltOdW1iZXIsU3RyaW5nLE9iamVjdF19O2Z1bmN0aW9uIHRvKGUpe3ZhciB0PWUmJmUuY29tcG9uZW50T3B0aW9ucztyZXR1cm4gdCYmdC5DdG9yLm9wdGlvbnMuYWJzdHJhY3Q\/dG8oenQodC5jaGlsZHJlbikpOmV9ZnVuY3Rpb24gbm8oZSl7dmFyIHQ9e30sbj1lLiRvcHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSl0W3JdPWVbcl07dmFyIGk9bi5fcGFyZW50TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKXRbYihvKV09aVtvXTtyZXR1cm4gdH1mdW5jdGlvbiBybyhlLHQpe2lmKC9cZC1rZWVwLWFsaXZlJC8udGVzdCh0LnRhZykpcmV0dXJuIGUoImtlZXAtYWxpdmUiLHtwcm9wczp0LmNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhfSl9dmFyIGlvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8VXQoZSl9LG9vPWZ1bmN0aW9uKGUpe3JldHVybiJzaG93Ij09PWUubmFtZX0sYW89e25hbWU6InRyYW5zaXRpb24iLHByb3BzOmVvLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZpbHRlcihpbykpLmxlbmd0aCl7dmFyIHI9dGhpcy5tb2RlLG89blswXTtpZihmdW5jdGlvbihlKXtmb3IoO2U9ZS5wYXJlbnQ7KWlmKGUuZGF0YS50cmFuc2l0aW9uKXJldHVybiEwfSh0aGlzLiR2bm9kZSkpcmV0dXJuIG87dmFyIGE9dG8obyk7aWYoIWEpcmV0dXJuIG87aWYodGhpcy5fbGVhdmluZylyZXR1cm4gcm8oZSxvKTt2YXIgcz0iX190cmFuc2l0aW9uLSIrdGhpcy5fdWlkKyItIjthLmtleT1udWxsPT1hLmtleT9hLmlzQ29tbWVudD9zKyJjb21tZW50IjpzK2EudGFnOmkoYS5rZXkpPzA9PT1TdHJpbmcoYS5rZXkpLmluZGV4T2Yocyk\/YS5rZXk6cythLmtleTphLmtleTt2YXIgYz0oYS5kYXRhfHwoYS5kYXRhPXt9KSkudHJhbnNpdGlvbj1ubyh0aGlzKSx1PXRoaXMuX3Zub2RlLGw9dG8odSk7aWYoYS5kYXRhLmRpcmVjdGl2ZXMmJmEuZGF0YS5kaXJlY3RpdmVzLnNvbWUob28pJiYoYS5kYXRhLnNob3c9ITApLGwmJmwuZGF0YSYmIWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQua2V5PT09ZS5rZXkmJnQudGFnPT09ZS50YWd9KGEsbCkmJiFVdChsKSYmKCFsLmNvbXBvbmVudEluc3RhbmNlfHwhbC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUuaXNDb21tZW50KSl7dmFyIGY9bC5kYXRhLnRyYW5zaXRpb249QSh7fSxjKTtpZigib3V0LWluIj09PXIpcmV0dXJuIHRoaXMuX2xlYXZpbmc9ITAsaXQoZiwiYWZ0ZXJMZWF2ZSIsZnVuY3Rpb24oKXt0Ll9sZWF2aW5nPSExLHQuJGZvcmNlVXBkYXRlKCl9KSxybyhlLG8pO2lmKCJpbi1vdXQiPT09cil7aWYoVXQoYSkpcmV0dXJuIHU7dmFyIHAsZD1mdW5jdGlvbigpe3AoKX07aXQoYywiYWZ0ZXJFbnRlciIsZCksaXQoYywiZW50ZXJDYW5jZWxsZWQiLGQpLGl0KGYsImRlbGF5TGVhdmUiLGZ1bmN0aW9uKGUpe3A9ZX0pfX1yZXR1cm4gb319fSxzbz1BKHt0YWc6U3RyaW5nLG1vdmVDbGFzczpTdHJpbmd9LGVvKTtmdW5jdGlvbiBjbyhlKXtlLmVsbS5fbW92ZUNiJiZlLmVsbS5fbW92ZUNiKCksZS5lbG0uX2VudGVyQ2ImJmUuZWxtLl9lbnRlckNiKCl9ZnVuY3Rpb24gdW8oZSl7ZS5kYXRhLm5ld1Bvcz1lLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1mdW5jdGlvbiBsbyhlKXt2YXIgdD1lLmRhdGEucG9zLG49ZS5kYXRhLm5ld1BvcyxyPXQubGVmdC1uLmxlZnQsaT10LnRvcC1uLnRvcDtpZihyfHxpKXtlLmRhdGEubW92ZWQ9ITA7dmFyIG89ZS5lbG0uc3R5bGU7by50cmFuc2Zvcm09by5XZWJraXRUcmFuc2Zvcm09InRyYW5zbGF0ZSgiK3IrInB4LCIraSsicHgpIixvLnRyYW5zaXRpb25EdXJhdGlvbj0iMHMifX1kZWxldGUgc28ubW9kZTt2YXIgZm89e1RyYW5zaXRpb246YW8sVHJhbnNpdGlvbkdyb3VwOntwcm9wczpzbyxiZWZvcmVNb3VudDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl91cGRhdGU7dGhpcy5fdXBkYXRlPWZ1bmN0aW9uKG4scil7dmFyIGk9WnQoZSk7ZS5fX3BhdGNoX18oZS5fdm5vZGUsZS5rZXB0LCExLCEwKSxlLl92bm9kZT1lLmtlcHQsaSgpLHQuY2FsbChlLG4scil9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10aGlzLiRzbG90cy5kZWZhdWx0fHxbXSxvPXRoaXMuY2hpbGRyZW49W10sYT1ubyh0aGlzKSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBjPWlbc107Yy50YWcmJm51bGwhPWMua2V5JiYwIT09U3RyaW5nKGMua2V5KS5pbmRleE9mKCJfX3ZsaXN0IikmJihvLnB1c2goYyksbltjLmtleV09YywoYy5kYXRhfHwoYy5kYXRhPXt9KSkudHJhbnNpdGlvbj1hKX1pZihyKXtmb3IodmFyIHU9W10sbD1bXSxmPTA7ZjxyLmxlbmd0aDtmKyspe3ZhciBwPXJbZl07cC5kYXRhLnRyYW5zaXRpb249YSxwLmRhdGEucG9zPXAuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG5bcC5rZXldP3UucHVzaChwKTpsLnB1c2gocCl9dGhpcy5rZXB0PWUodCxudWxsLHUpLHRoaXMucmVtb3ZlZD1sfXJldHVybiBlKHQsbnVsbCxvKX0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHQ9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxtLHQpJiYoZS5mb3JFYWNoKGNvKSxlLmZvckVhY2godW8pLGUuZm9yRWFjaChsbyksdGhpcy5fcmVmbG93PWRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LGUuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmRhdGEubW92ZWQpe3ZhciBuPWUuZWxtLHI9bi5zdHlsZTtOaShuLHQpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihBaSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gZShyKXtyJiZyLnRhcmdldCE9PW58fHImJiEvdHJhbnNmb3JtJC8udGVzdChyLnByb3BlcnR5TmFtZSl8fChuLnJlbW92ZUV2ZW50TGlzdGVuZXIoQWksZSksbi5fbW92ZUNiPW51bGwsamkobix0KSl9KX19KSl9LG1ldGhvZHM6e2hhc01vdmU6ZnVuY3Rpb24oZSx0KXtpZighd2kpcmV0dXJuITE7aWYodGhpcy5faGFzTW92ZSlyZXR1cm4gdGhpcy5faGFzTW92ZTt2YXIgbj1lLmNsb25lTm9kZSgpO2UuX3RyYW5zaXRpb25DbGFzc2VzJiZlLl90cmFuc2l0aW9uQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe19pKG4sZSl9KSxnaShuLHQpLG4uc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy4kZWwuYXBwZW5kQ2hpbGQobik7dmFyIHI9TWkobik7cmV0dXJuIHRoaXMuJGVsLnJlbW92ZUNoaWxkKG4pLHRoaXMuX2hhc01vdmU9ci5oYXNUcmFuc2Zvcm19fX19O3duLmNvbmZpZy5tdXN0VXNlUHJvcD1qbix3bi5jb25maWcuaXNSZXNlcnZlZFRhZz1Xbix3bi5jb25maWcuaXNSZXNlcnZlZEF0dHI9RW4sd24uY29uZmlnLmdldFRhZ05hbWVzcGFjZT1abix3bi5jb25maWcuaXNVbmtub3duRWxlbWVudD1mdW5jdGlvbihlKXtpZigheilyZXR1cm4hMDtpZihXbihlKSlyZXR1cm4hMTtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsIT1HbltlXSlyZXR1cm4gR25bZV07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZS5pbmRleE9mKCItIik+LTE\/R25bZV09dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6R25bZV09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdCh0LnRvU3RyaW5nKCkpfSxBKHduLm9wdGlvbnMuZGlyZWN0aXZlcyxRaSksQSh3bi5vcHRpb25zLmNvbXBvbmVudHMsZm8pLHduLnByb3RvdHlwZS5fX3BhdGNoX189ej96aTpTLHduLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiBlLiRlbD10LGUuJG9wdGlvbnMucmVuZGVyfHwoZS4kb3B0aW9ucy5yZW5kZXI9dmUpLFl0KGUsImJlZm9yZU1vdW50Iikscj1mdW5jdGlvbigpe2UuX3VwZGF0ZShlLl9yZW5kZXIoKSxuKX0sbmV3IGZuKGUscixTLHtiZWZvcmU6ZnVuY3Rpb24oKXtlLl9pc01vdW50ZWQmJiFlLl9pc0Rlc3Ryb3llZCYmWXQoZSwiYmVmb3JlVXBkYXRlIil9fSwhMCksbj0hMSxudWxsPT1lLiR2bm9kZSYmKGUuX2lzTW91bnRlZD0hMCxZdChlLCJtb3VudGVkIikpLGV9KHRoaXMsZT1lJiZ6P1luKGUpOnZvaWQgMCx0KX0seiYmc2V0VGltZW91dChmdW5jdGlvbigpe0YuZGV2dG9vbHMmJm5lJiZuZS5lbWl0KCJpbml0Iix3bil9LDApO3ZhciBwbz0vXHtceygoPzoufFxyP1xuKSs\/KVx9XH0vZyx2bz0vWy0uKis\/XiR7fSgpfFtcXVwvXFxdL2csaG89ZyhmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnJlcGxhY2Uodm8sIlxcJCYiKSxuPWVbMV0ucmVwbGFjZSh2bywiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKHQrIigoPzoufFxcbikrPykiK24sImciKX0pO3ZhciBtbz17c3RhdGljS2V5czpbInN0YXRpY0NsYXNzIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1GcihlLCJjbGFzcyIpO24mJihlLnN0YXRpY0NsYXNzPUpTT04uc3RyaW5naWZ5KG4pKTt2YXIgcj1JcihlLCJjbGFzcyIsITEpO3ImJihlLmNsYXNzQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNDbGFzcyYmKHQrPSJzdGF0aWNDbGFzczoiK2Uuc3RhdGljQ2xhc3MrIiwiKSxlLmNsYXNzQmluZGluZyYmKHQrPSJjbGFzczoiK2UuY2xhc3NCaW5kaW5nKyIsIiksdH19O3ZhciB5byxnbz17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1GcihlLCJzdHlsZSIpO24mJihlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KGFpKG4pKSk7dmFyIHI9SXIoZSwic3R5bGUiLCExKTtyJiYoZS5zdHlsZUJpbmRpbmc9cil9LGdlbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljU3R5bGUmJih0Kz0ic3RhdGljU3R5bGU6IitlLnN0YXRpY1N0eWxlKyIsIiksZS5zdHlsZUJpbmRpbmcmJih0Kz0ic3R5bGU6KCIrZS5zdHlsZUJpbmRpbmcrIiksIiksdH19LF9vPWZ1bmN0aW9uKGUpe3JldHVybih5bz15b3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lLHlvLnRleHRDb250ZW50fSxibz1wKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiciIpLCRvPXAoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UiKSx3bz1wKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLENvPS9eXHMqKFteXHMiJzw+XC89XSspKD86XHMqKD0pXHMqKD86IihbXiJdKikiK3wnKFteJ10qKScrfChbXlxzIic9PD5gXSspKSk\/Lyx4bz0vXlxzKigoPzp2LVtcdy1dKzp8QHw6fCMpXFtbXj1dK1xdW15ccyInPD5cLz1dKikoPzpccyooPSlccyooPzoiKFteIl0qKSIrfCcoW14nXSopJyt8KFteXHMiJz08PmBdKykpKT8vLGtvPSJbYS16QS1aX11bXFwtXFwuMC05X2EtekEtWiIrUC5zb3VyY2UrIl0qIixBbz0iKCg\/OiIra28rIlxcOik\/IitrbysiKSIsT289bmV3IFJlZ0V4cCgiXjwiK0FvKSxTbz0vXlxzKihcLz8pPi8sVG89bmV3IFJlZ0V4cCgiXjxcXC8iK0FvKyJbXj5dKj4iKSxFbz0vXjwhRE9DVFlQRSBbXj5dKz4vaSxObz0vXjwhXC0tLyxqbz0vXjwhXFsvLERvPXAoInNjcmlwdCxzdHlsZSx0ZXh0YXJlYSIsITApLExvPXt9LE1vPXsiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImYW1wOyI6IiYiLCImIzEwOyI6IlxuIiwiJiM5OyI6Ilx0IiwiJiMzOTsiOiInIn0sSW89LyYoPzpsdHxndHxxdW90fGFtcHwjMzkpOy9nLEZvPS8mKD86bHR8Z3R8cXVvdHxhbXB8IzM5fCMxMHwjOSk7L2csUG89cCgicHJlLHRleHRhcmVhIiwhMCksUm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmUG8oZSkmJiJcbiI9PT10WzBdfTtmdW5jdGlvbiBIbyhlLHQpe3ZhciBuPXQ\/Rm86SW87cmV0dXJuIGUucmVwbGFjZShuLGZ1bmN0aW9uKGUpe3JldHVybiBNb1tlXX0pfXZhciBCbyxVbyx6byxWbyxLbyxKbyxxbyxXbyxabz0vXkB8XnYtb246LyxHbz0vXnYtfF5AfF46fF4jLyxYbz0vKFtcc1xTXSo\/KVxzKyg\/OmlufG9mKVxzKyhbXHNcU10qKS8sWW89LywoW14sXH1cXV0qKSg\/OiwoW14sXH1cXV0qKSk\/JC8sUW89L15cKHxcKSQvZyxlYT0vXlxbLipcXSQvLHRhPS86KC4qKSQvLG5hPS9eOnxeXC58XnYtYmluZDovLHJhPS9cLlteLlxdXSsoPz1bXlxdXSokKS9nLGlhPS9edi1zbG90KDp8JCl8XiMvLG9hPS9bXHJcbl0vLGFhPS9ccysvZyxzYT1nKF9vKSxjYT0iX2VtcHR5XyI7ZnVuY3Rpb24gdWEoZSx0LG4pe3JldHVybnt0eXBlOjEsdGFnOmUsYXR0cnNMaXN0OnQsYXR0cnNNYXA6bWEodCkscmF3QXR0cnNNYXA6e30scGFyZW50Om4sY2hpbGRyZW46W119fWZ1bmN0aW9uIGxhKGUsdCl7Qm89dC53YXJufHxTcixKbz10LmlzUHJlVGFnfHxULHFvPXQubXVzdFVzZVByb3B8fFQsV289dC5nZXRUYWdOYW1lc3BhY2V8fFQ7dC5pc1Jlc2VydmVkVGFnO3pvPVRyKHQubW9kdWxlcywidHJhbnNmb3JtTm9kZSIpLFZvPVRyKHQubW9kdWxlcywicHJlVHJhbnNmb3JtTm9kZSIpLEtvPVRyKHQubW9kdWxlcywicG9zdFRyYW5zZm9ybU5vZGUiKSxVbz10LmRlbGltaXRlcnM7dmFyIG4scixpPVtdLG89ITEhPT10LnByZXNlcnZlV2hpdGVzcGFjZSxhPXQud2hpdGVzcGFjZSxzPSExLGM9ITE7ZnVuY3Rpb24gdShlKXtpZihsKGUpLHN8fGUucHJvY2Vzc2VkfHwoZT1mYShlLHQpKSxpLmxlbmd0aHx8ZT09PW58fG4uaWYmJihlLmVsc2VpZnx8ZS5lbHNlKSYmZGEobix7ZXhwOmUuZWxzZWlmLGJsb2NrOmV9KSxyJiYhZS5mb3JiaWRkZW4paWYoZS5lbHNlaWZ8fGUuZWxzZSlhPWUsKHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXtpZigxPT09ZVt0XS50eXBlKXJldHVybiBlW3RdO2UucG9wKCl9fShyLmNoaWxkcmVuKSkmJnUuaWYmJmRhKHUse2V4cDphLmVsc2VpZixibG9jazphfSk7ZWxzZXtpZihlLnNsb3RTY29wZSl7dmFyIG89ZS5zbG90VGFyZ2V0fHwnImRlZmF1bHQiJzsoci5zY29wZWRTbG90c3x8KHIuc2NvcGVkU2xvdHM9e30pKVtvXT1lfXIuY2hpbGRyZW4ucHVzaChlKSxlLnBhcmVudD1yfXZhciBhLHU7ZS5jaGlsZHJlbj1lLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5zbG90U2NvcGV9KSxsKGUpLGUucHJlJiYocz0hMSksSm8oZS50YWcpJiYoYz0hMSk7Zm9yKHZhciBmPTA7ZjxLby5sZW5ndGg7ZisrKUtvW2ZdKGUsdCl9ZnVuY3Rpb24gbChlKXtpZighYylmb3IodmFyIHQ7KHQ9ZS5jaGlsZHJlbltlLmNoaWxkcmVuLmxlbmd0aC0xXSkmJjM9PT10LnR5cGUmJiIgIj09PXQudGV4dDspZS5jaGlsZHJlbi5wb3AoKX1yZXR1cm4gZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scixpPVtdLG89dC5leHBlY3RIVE1MLGE9dC5pc1VuYXJ5VGFnfHxULHM9dC5jYW5CZUxlZnRPcGVuVGFnfHxULGM9MDtlOyl7aWYobj1lLHImJkRvKHIpKXt2YXIgdT0wLGw9ci50b0xvd2VyQ2FzZSgpLGY9TG9bbF18fChMb1tsXT1uZXcgUmVnRXhwKCIoW1xcc1xcU10qPykoPC8iK2wrIltePl0qPikiLCJpIikpLHA9ZS5yZXBsYWNlKGYsZnVuY3Rpb24oZSxuLHIpe3JldHVybiB1PXIubGVuZ3RoLERvKGwpfHwibm9zY3JpcHQiPT09bHx8KG49bi5yZXBsYWNlKC88IVwtLShbXHNcU10qPyktLT4vZywiJDEiKS5yZXBsYWNlKC88IVxbQ0RBVEFcWyhbXHNcU10qPyldXT4vZywiJDEiKSksUm8obCxuKSYmKG49bi5zbGljZSgxKSksdC5jaGFycyYmdC5jaGFycyhuKSwiIn0pO2MrPWUubGVuZ3RoLXAubGVuZ3RoLGU9cCxBKGwsYy11LGMpfWVsc2V7dmFyIGQ9ZS5pbmRleE9mKCI8Iik7aWYoMD09PWQpe2lmKE5vLnRlc3QoZSkpe3ZhciB2PWUuaW5kZXhPZigiLS1ceDNlIik7aWYodj49MCl7dC5zaG91bGRLZWVwQ29tbWVudCYmdC5jb21tZW50KGUuc3Vic3RyaW5nKDQsdiksYyxjK3YrMyksQyh2KzMpO2NvbnRpbnVlfX1pZihqby50ZXN0KGUpKXt2YXIgaD1lLmluZGV4T2YoIl0+Iik7aWYoaD49MCl7QyhoKzIpO2NvbnRpbnVlfX12YXIgbT1lLm1hdGNoKEVvKTtpZihtKXtDKG1bMF0ubGVuZ3RoKTtjb250aW51ZX12YXIgeT1lLm1hdGNoKFRvKTtpZih5KXt2YXIgZz1jO0MoeVswXS5sZW5ndGgpLEEoeVsxXSxnLGMpO2NvbnRpbnVlfXZhciBfPXgoKTtpZihfKXtrKF8pLFJvKF8udGFnTmFtZSxlKSYmQygxKTtjb250aW51ZX19dmFyIGI9dm9pZCAwLCQ9dm9pZCAwLHc9dm9pZCAwO2lmKGQ+PTApe2ZvcigkPWUuc2xpY2UoZCk7IShUby50ZXN0KCQpfHxPby50ZXN0KCQpfHxOby50ZXN0KCQpfHxqby50ZXN0KCQpfHwodz0kLmluZGV4T2YoIjwiLDEpKTwwKTspZCs9dywkPWUuc2xpY2UoZCk7Yj1lLnN1YnN0cmluZygwLGQpfWQ8MCYmKGI9ZSksYiYmQyhiLmxlbmd0aCksdC5jaGFycyYmYiYmdC5jaGFycyhiLGMtYi5sZW5ndGgsYyl9aWYoZT09PW4pe3QuY2hhcnMmJnQuY2hhcnMoZSk7YnJlYWt9fWZ1bmN0aW9uIEModCl7Yys9dCxlPWUuc3Vic3RyaW5nKHQpfWZ1bmN0aW9uIHgoKXt2YXIgdD1lLm1hdGNoKE9vKTtpZih0KXt2YXIgbixyLGk9e3RhZ05hbWU6dFsxXSxhdHRyczpbXSxzdGFydDpjfTtmb3IoQyh0WzBdLmxlbmd0aCk7IShuPWUubWF0Y2goU28pKSYmKHI9ZS5tYXRjaCh4byl8fGUubWF0Y2goQ28pKTspci5zdGFydD1jLEMoclswXS5sZW5ndGgpLHIuZW5kPWMsaS5hdHRycy5wdXNoKHIpO2lmKG4pcmV0dXJuIGkudW5hcnlTbGFzaD1uWzFdLEMoblswXS5sZW5ndGgpLGkuZW5kPWMsaX19ZnVuY3Rpb24gayhlKXt2YXIgbj1lLnRhZ05hbWUsYz1lLnVuYXJ5U2xhc2g7byYmKCJwIj09PXImJndvKG4pJiZBKHIpLHMobikmJnI9PT1uJiZBKG4pKTtmb3IodmFyIHU9YShuKXx8ISFjLGw9ZS5hdHRycy5sZW5ndGgsZj1uZXcgQXJyYXkobCkscD0wO3A8bDtwKyspe3ZhciBkPWUuYXR0cnNbcF0sdj1kWzNdfHxkWzRdfHxkWzVdfHwiIixoPSJhIj09PW4mJiJocmVmIj09PWRbMV0\/dC5zaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWY6dC5zaG91bGREZWNvZGVOZXdsaW5lcztmW3BdPXtuYW1lOmRbMV0sdmFsdWU6SG8odixoKX19dXx8KGkucHVzaCh7dGFnOm4sbG93ZXJDYXNlZFRhZzpuLnRvTG93ZXJDYXNlKCksYXR0cnM6ZixzdGFydDplLnN0YXJ0LGVuZDplLmVuZH0pLHI9biksdC5zdGFydCYmdC5zdGFydChuLGYsdSxlLnN0YXJ0LGUuZW5kKX1mdW5jdGlvbiBBKGUsbixvKXt2YXIgYSxzO2lmKG51bGw9PW4mJihuPWMpLG51bGw9PW8mJihvPWMpLGUpZm9yKHM9ZS50b0xvd2VyQ2FzZSgpLGE9aS5sZW5ndGgtMTthPj0wJiZpW2FdLmxvd2VyQ2FzZWRUYWchPT1zO2EtLSk7ZWxzZSBhPTA7aWYoYT49MCl7Zm9yKHZhciB1PWkubGVuZ3RoLTE7dT49YTt1LS0pdC5lbmQmJnQuZW5kKGlbdV0udGFnLG4sbyk7aS5sZW5ndGg9YSxyPWEmJmlbYS0xXS50YWd9ZWxzZSJiciI9PT1zP3Quc3RhcnQmJnQuc3RhcnQoZSxbXSwhMCxuLG8pOiJwIj09PXMmJih0LnN0YXJ0JiZ0LnN0YXJ0KGUsW10sITEsbixvKSx0LmVuZCYmdC5lbmQoZSxuLG8pKX1BKCl9KGUse3dhcm46Qm8sZXhwZWN0SFRNTDp0LmV4cGVjdEhUTUwsaXNVbmFyeVRhZzp0LmlzVW5hcnlUYWcsY2FuQmVMZWZ0T3BlblRhZzp0LmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6dC5zaG91bGREZWNvZGVOZXdsaW5lcyxzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWY6dC5zaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYsc2hvdWxkS2VlcENvbW1lbnQ6dC5jb21tZW50cyxvdXRwdXRTb3VyY2VSYW5nZTp0Lm91dHB1dFNvdXJjZVJhbmdlLHN0YXJ0OmZ1bmN0aW9uKGUsbyxhLGwsZil7dmFyIHA9ciYmci5uc3x8V28oZSk7cSYmInN2ZyI9PT1wJiYobz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3lhLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShnYSwiIiksdC5wdXNoKHIpKX1yZXR1cm4gdH0obykpO3ZhciBkLHY9dWEoZSxvLHIpO3AmJih2Lm5zPXApLCJzdHlsZSIhPT0oZD12KS50YWcmJigic2NyaXB0IiE9PWQudGFnfHxkLmF0dHJzTWFwLnR5cGUmJiJ0ZXh0L2phdmFzY3JpcHQiIT09ZC5hdHRyc01hcC50eXBlKXx8dGUoKXx8KHYuZm9yYmlkZGVuPSEwKTtmb3IodmFyIGg9MDtoPFZvLmxlbmd0aDtoKyspdj1Wb1toXSh2LHQpfHx2O3N8fCghZnVuY3Rpb24oZSl7bnVsbCE9RnIoZSwidi1wcmUiKSYmKGUucHJlPSEwKX0odiksdi5wcmUmJihzPSEwKSksSm8odi50YWcpJiYoYz0hMCkscz9mdW5jdGlvbihlKXt2YXIgdD1lLmF0dHJzTGlzdCxuPXQubGVuZ3RoO2lmKG4pZm9yKHZhciByPWUuYXR0cnM9bmV3IEFycmF5KG4pLGk9MDtpPG47aSsrKXJbaV09e25hbWU6dFtpXS5uYW1lLHZhbHVlOkpTT04uc3RyaW5naWZ5KHRbaV0udmFsdWUpfSxudWxsIT10W2ldLnN0YXJ0JiYocltpXS5zdGFydD10W2ldLnN0YXJ0LHJbaV0uZW5kPXRbaV0uZW5kKTtlbHNlIGUucHJlfHwoZS5wbGFpbj0hMCl9KHYpOnYucHJvY2Vzc2VkfHwocGEodiksZnVuY3Rpb24oZSl7dmFyIHQ9RnIoZSwidi1pZiIpO2lmKHQpZS5pZj10LGRhKGUse2V4cDp0LGJsb2NrOmV9KTtlbHNle251bGwhPUZyKGUsInYtZWxzZSIpJiYoZS5lbHNlPSEwKTt2YXIgbj1GcihlLCJ2LWVsc2UtaWYiKTtuJiYoZS5lbHNlaWY9bil9fSh2KSxmdW5jdGlvbihlKXtudWxsIT1GcihlLCJ2LW9uY2UiKSYmKGUub25jZT0hMCl9KHYpKSxufHwobj12KSxhP3Uodik6KHI9dixpLnB1c2godikpfSxlbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPWlbaS5sZW5ndGgtMV07aS5sZW5ndGgtPTEscj1pW2kubGVuZ3RoLTFdLHUobyl9LGNoYXJzOmZ1bmN0aW9uKGUsdCxuKXtpZihyJiYoIXF8fCJ0ZXh0YXJlYSIhPT1yLnRhZ3x8ci5hdHRyc01hcC5wbGFjZWhvbGRlciE9PWUpKXt2YXIgaSx1LGwsZj1yLmNoaWxkcmVuO2lmKGU9Y3x8ZS50cmltKCk\/InNjcmlwdCI9PT0oaT1yKS50YWd8fCJzdHlsZSI9PT1pLnRhZz9lOnNhKGUpOmYubGVuZ3RoP2E\/ImNvbmRlbnNlIj09PWEmJm9hLnRlc3QoZSk\/IiI6IiAiOm8\/IiAiOiIiOiIiKWN8fCJjb25kZW5zZSIhPT1hfHwoZT1lLnJlcGxhY2UoYWEsIiAiKSksIXMmJiIgIiE9PWUmJih1PWZ1bmN0aW9uKGUsdCl7dmFyIG49dD9obyh0KTpwbztpZihuLnRlc3QoZSkpe2Zvcih2YXIgcixpLG8sYT1bXSxzPVtdLGM9bi5sYXN0SW5kZXg9MDtyPW4uZXhlYyhlKTspeyhpPXIuaW5kZXgpPmMmJihzLnB1c2gobz1lLnNsaWNlKGMsaSkpLGEucHVzaChKU09OLnN0cmluZ2lmeShvKSkpO3ZhciB1PUFyKHJbMV0udHJpbSgpKTthLnB1c2goIl9zKCIrdSsiKSIpLHMucHVzaCh7IkBiaW5kaW5nIjp1fSksYz1pK3JbMF0ubGVuZ3RofXJldHVybiBjPGUubGVuZ3RoJiYocy5wdXNoKG89ZS5zbGljZShjKSksYS5wdXNoKEpTT04uc3RyaW5naWZ5KG8pKSkse2V4cHJlc3Npb246YS5qb2luKCIrIiksdG9rZW5zOnN9fX0oZSxVbykpP2w9e3R5cGU6MixleHByZXNzaW9uOnUuZXhwcmVzc2lvbix0b2tlbnM6dS50b2tlbnMsdGV4dDplfToiICI9PT1lJiZmLmxlbmd0aCYmIiAiPT09ZltmLmxlbmd0aC0xXS50ZXh0fHwobD17dHlwZTozLHRleHQ6ZX0pLGwmJmYucHVzaChsKX19LGNvbW1lbnQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHIpe3ZhciBpPXt0eXBlOjMsdGV4dDplLGlzQ29tbWVudDohMH07ci5jaGlsZHJlbi5wdXNoKGkpfX19KSxufWZ1bmN0aW9uIGZhKGUsdCl7dmFyIG4scjsocj1JcihuPWUsImtleSIpKSYmKG4ua2V5PXIpLGUucGxhaW49IWUua2V5JiYhZS5zY29wZWRTbG90cyYmIWUuYXR0cnNMaXN0Lmxlbmd0aCxmdW5jdGlvbihlKXt2YXIgdD1JcihlLCJyZWYiKTt0JiYoZS5yZWY9dCxlLnJlZkluRm9yPWZ1bmN0aW9uKGUpe3ZhciB0PWU7Zm9yKDt0Oyl7aWYodm9pZCAwIT09dC5mb3IpcmV0dXJuITA7dD10LnBhcmVudH1yZXR1cm4hMX0oZSkpfShlKSxmdW5jdGlvbihlKXt2YXIgdDsidGVtcGxhdGUiPT09ZS50YWc\/KHQ9RnIoZSwic2NvcGUiKSxlLnNsb3RTY29wZT10fHxGcihlLCJzbG90LXNjb3BlIikpOih0PUZyKGUsInNsb3Qtc2NvcGUiKSkmJihlLnNsb3RTY29wZT10KTt2YXIgbj1JcihlLCJzbG90Iik7biYmKGUuc2xvdFRhcmdldD0nIiInPT09bj8nImRlZmF1bHQiJzpuLGUuc2xvdFRhcmdldER5bmFtaWM9ISghZS5hdHRyc01hcFsiOnNsb3QiXSYmIWUuYXR0cnNNYXBbInYtYmluZDpzbG90Il0pLCJ0ZW1wbGF0ZSI9PT1lLnRhZ3x8ZS5zbG90U2NvcGV8fE5yKGUsInNsb3QiLG4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yYXdBdHRyc01hcFsiOiIrdF18fGUucmF3QXR0cnNNYXBbInYtYmluZDoiK3RdfHxlLnJhd0F0dHJzTWFwW3RdfShlLCJzbG90IikpKTtpZigidGVtcGxhdGUiPT09ZS50YWcpe3ZhciByPVByKGUsaWEpO2lmKHIpe3ZhciBpPXZhKHIpLG89aS5uYW1lLGE9aS5keW5hbWljO2Uuc2xvdFRhcmdldD1vLGUuc2xvdFRhcmdldER5bmFtaWM9YSxlLnNsb3RTY29wZT1yLnZhbHVlfHxjYX19ZWxzZXt2YXIgcz1QcihlLGlhKTtpZihzKXt2YXIgYz1lLnNjb3BlZFNsb3RzfHwoZS5zY29wZWRTbG90cz17fSksdT12YShzKSxsPXUubmFtZSxmPXUuZHluYW1pYyxwPWNbbF09dWEoInRlbXBsYXRlIixbXSxlKTtwLnNsb3RUYXJnZXQ9bCxwLnNsb3RUYXJnZXREeW5hbWljPWYscC5jaGlsZHJlbj1lLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihlKXtpZighZS5zbG90U2NvcGUpcmV0dXJuIGUucGFyZW50PXAsITB9KSxwLnNsb3RTY29wZT1zLnZhbHVlfHxjYSxlLmNoaWxkcmVuPVtdLGUucGxhaW49ITF9fX0oZSksZnVuY3Rpb24oZSl7InNsb3QiPT09ZS50YWcmJihlLnNsb3ROYW1lPUlyKGUsIm5hbWUiKSl9KGUpLGZ1bmN0aW9uKGUpe3ZhciB0Oyh0PUlyKGUsImlzIikpJiYoZS5jb21wb25lbnQ9dCk7bnVsbCE9RnIoZSwiaW5saW5lLXRlbXBsYXRlIikmJihlLmlubGluZVRlbXBsYXRlPSEwKX0oZSk7Zm9yKHZhciBpPTA7aTx6by5sZW5ndGg7aSsrKWU9em9baV0oZSx0KXx8ZTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHMsYyx1PWUuYXR0cnNMaXN0O2Zvcih0PTAsbj11Lmxlbmd0aDt0PG47dCsrKWlmKHI9aT11W3RdLm5hbWUsbz11W3RdLnZhbHVlLEdvLnRlc3QocikpaWYoZS5oYXNCaW5kaW5ncz0hMCwoYT1oYShyLnJlcGxhY2UoR28sIiIpKSkmJihyPXIucmVwbGFjZShyYSwiIikpLG5hLnRlc3Qocikpcj1yLnJlcGxhY2UobmEsIiIpLG89QXIobyksKGM9ZWEudGVzdChyKSkmJihyPXIuc2xpY2UoMSwtMSkpLGEmJihhLnByb3AmJiFjJiYiaW5uZXJIdG1sIj09PShyPWIocikpJiYocj0iaW5uZXJIVE1MIiksYS5jYW1lbCYmIWMmJihyPWIocikpLGEuc3luYyYmKHM9QnIobywiJGV2ZW50IiksYz9NcihlLCcidXBkYXRlOiIrKCcrcisiKSIscyxudWxsLCExLDAsdVt0XSwhMCk6KE1yKGUsInVwZGF0ZToiK2IocikscyxudWxsLCExLDAsdVt0XSksQyhyKSE9PWIocikmJk1yKGUsInVwZGF0ZToiK0MocikscyxudWxsLCExLDAsdVt0XSkpKSksYSYmYS5wcm9wfHwhZS5jb21wb25lbnQmJnFvKGUudGFnLGUuYXR0cnNNYXAudHlwZSxyKT9FcihlLHIsbyx1W3RdLGMpOk5yKGUscixvLHVbdF0sYyk7ZWxzZSBpZihaby50ZXN0KHIpKXI9ci5yZXBsYWNlKFpvLCIiKSwoYz1lYS50ZXN0KHIpKSYmKHI9ci5zbGljZSgxLC0xKSksTXIoZSxyLG8sYSwhMSwwLHVbdF0sYyk7ZWxzZXt2YXIgbD0ocj1yLnJlcGxhY2UoR28sIiIpKS5tYXRjaCh0YSksZj1sJiZsWzFdO2M9ITEsZiYmKHI9ci5zbGljZSgwLC0oZi5sZW5ndGgrMSkpLGVhLnRlc3QoZikmJihmPWYuc2xpY2UoMSwtMSksYz0hMCkpLERyKGUscixpLG8sZixjLGEsdVt0XSl9ZWxzZSBOcihlLHIsSlNPTi5zdHJpbmdpZnkobyksdVt0XSksIWUuY29tcG9uZW50JiYibXV0ZWQiPT09ciYmcW8oZS50YWcsZS5hdHRyc01hcC50eXBlLHIpJiZFcihlLHIsInRydWUiLHVbdF0pfShlKSxlfWZ1bmN0aW9uIHBhKGUpe3ZhciB0O2lmKHQ9RnIoZSwidi1mb3IiKSl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChYbyk7aWYoIXQpcmV0dXJuO3ZhciBuPXt9O24uZm9yPXRbMl0udHJpbSgpO3ZhciByPXRbMV0udHJpbSgpLnJlcGxhY2UoUW8sIiIpLGk9ci5tYXRjaChZbyk7aT8obi5hbGlhcz1yLnJlcGxhY2UoWW8sIiIpLnRyaW0oKSxuLml0ZXJhdG9yMT1pWzFdLnRyaW0oKSxpWzJdJiYobi5pdGVyYXRvcjI9aVsyXS50cmltKCkpKTpuLmFsaWFzPXI7cmV0dXJuIG59KHQpO24mJkEoZSxuKX19ZnVuY3Rpb24gZGEoZSx0KXtlLmlmQ29uZGl0aW9uc3x8KGUuaWZDb25kaXRpb25zPVtdKSxlLmlmQ29uZGl0aW9ucy5wdXNoKHQpfWZ1bmN0aW9uIHZhKGUpe3ZhciB0PWUubmFtZS5yZXBsYWNlKGlhLCIiKTtyZXR1cm4gdHx8IiMiIT09ZS5uYW1lWzBdJiYodD0iZGVmYXVsdCIpLGVhLnRlc3QodCk\/e25hbWU6dC5zbGljZSgxLC0xKSxkeW5hbWljOiEwfTp7bmFtZTonIicrdCsnIicsZHluYW1pYzohMX19ZnVuY3Rpb24gaGEoZSl7dmFyIHQ9ZS5tYXRjaChyYSk7aWYodCl7dmFyIG49e307cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihlKXtuW2Uuc2xpY2UoMSldPSEwfSksbn19ZnVuY3Rpb24gbWEoZSl7Zm9yKHZhciB0PXt9LG49MCxyPWUubGVuZ3RoO248cjtuKyspdFtlW25dLm5hbWVdPWVbbl0udmFsdWU7cmV0dXJuIHR9dmFyIHlhPS9eeG1sbnM6TlNcZCsvLGdhPS9eTlNcZCs6LztmdW5jdGlvbiBfYShlKXtyZXR1cm4gdWEoZS50YWcsZS5hdHRyc0xpc3Quc2xpY2UoKSxlLnBhcmVudCl9dmFyIGJhPVttbyxnbyx7cHJlVHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe2lmKCJpbnB1dCI9PT1lLnRhZyl7dmFyIG4scj1lLmF0dHJzTWFwO2lmKCFyWyJ2LW1vZGVsIl0pcmV0dXJuO2lmKChyWyI6dHlwZSJdfHxyWyJ2LWJpbmQ6dHlwZSJdKSYmKG49SXIoZSwidHlwZSIpKSxyLnR5cGV8fG58fCFyWyJ2LWJpbmQiXXx8KG49IigiK3JbInYtYmluZCJdKyIpLnR5cGUiKSxuKXt2YXIgaT1GcihlLCJ2LWlmIiwhMCksbz1pPyImJigiK2krIikiOiIiLGE9bnVsbCE9RnIoZSwidi1lbHNlIiwhMCkscz1GcihlLCJ2LWVsc2UtaWYiLCEwKSxjPV9hKGUpO3BhKGMpLGpyKGMsInR5cGUiLCJjaGVja2JveCIpLGZhKGMsdCksYy5wcm9jZXNzZWQ9ITAsYy5pZj0iKCIrbisiKT09PSdjaGVja2JveCciK28sZGEoYyx7ZXhwOmMuaWYsYmxvY2s6Y30pO3ZhciB1PV9hKGUpO0ZyKHUsInYtZm9yIiwhMCksanIodSwidHlwZSIsInJhZGlvIiksZmEodSx0KSxkYShjLHtleHA6IigiK24rIik9PT0ncmFkaW8nIitvLGJsb2NrOnV9KTt2YXIgbD1fYShlKTtyZXR1cm4gRnIobCwidi1mb3IiLCEwKSxqcihsLCI6dHlwZSIsbiksZmEobCx0KSxkYShjLHtleHA6aSxibG9jazpsfSksYT9jLmVsc2U9ITA6cyYmKGMuZWxzZWlmPXMpLGN9fX19XTt2YXIgJGEsd2EsQ2E9e2V4cGVjdEhUTUw6ITAsbW9kdWxlczpiYSxkaXJlY3RpdmVzOnttb2RlbDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPXQubW9kaWZpZXJzLG89ZS50YWcsYT1lLmF0dHJzTWFwLnR5cGU7aWYoZS5jb21wb25lbnQpcmV0dXJuIEhyKGUscixpKSwhMTtpZigic2VsZWN0Ij09PW8pIWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0ndmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSkubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO3JldHVybiAnKyhuJiZuLm51bWJlcj8iX24odmFsKSI6InZhbCIpKyJ9KTsiO3I9cisiICIrQnIodCwiJGV2ZW50LnRhcmdldC5tdWx0aXBsZSA\/ICQkc2VsZWN0ZWRWYWwgOiAkJHNlbGVjdGVkVmFsWzBdIiksTXIoZSwiY2hhbmdlIixyLG51bGwsITApfShlLHIsaSk7ZWxzZSBpZigiaW5wdXQiPT09byYmImNoZWNrYm94Ij09PWEpIWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uJiZuLm51bWJlcixpPUlyKGUsInZhbHVlIil8fCJudWxsIixvPUlyKGUsInRydWUtdmFsdWUiKXx8InRydWUiLGE9SXIoZSwiZmFsc2UtdmFsdWUiKXx8ImZhbHNlIjtFcihlLCJjaGVja2VkIiwiQXJyYXkuaXNBcnJheSgiK3QrIik\/X2koIit0KyIsIitpKyIpPi0xIisoInRydWUiPT09bz8iOigiK3QrIikiOiI6X3EoIit0KyIsIitvKyIpIikpLE1yKGUsImNoYW5nZSIsInZhciAkJGE9Iit0KyIsJCRlbD0kZXZlbnQudGFyZ2V0LCQkYz0kJGVsLmNoZWNrZWQ\/KCIrbysiKTooIithKyIpO2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7dmFyICQkdj0iKyhyPyJfbigiK2krIikiOmkpKyIsJCRpPV9pKCQkYSwkJHYpO2lmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJigiK0JyKHQsIiQkYS5jb25jYXQoWyQkdl0pIikrIil9ZWxzZXskJGk+LTEmJigiK0JyKHQsIiQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpIikrIil9fWVsc2V7IitCcih0LCIkJGMiKSsifSIsbnVsbCwhMCl9KGUscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1vJiYicmFkaW8iPT09YSkhZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9SXIoZSwidmFsdWUiKXx8Im51bGwiO0VyKGUsImNoZWNrZWQiLCJfcSgiK3QrIiwiKyhpPXI\/Il9uKCIraSsiKSI6aSkrIikiKSxNcihlLCJjaGFuZ2UiLEJyKHQsaSksbnVsbCwhMCl9KGUscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1vfHwidGV4dGFyZWEiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuYXR0cnNNYXAudHlwZSxpPW58fHt9LG89aS5sYXp5LGE9aS5udW1iZXIscz1pLnRyaW0sYz0hbyYmInJhbmdlIiE9PXIsdT1vPyJjaGFuZ2UiOiJyYW5nZSI9PT1yP1dyOiJpbnB1dCIsbD0iJGV2ZW50LnRhcmdldC52YWx1ZSI7cyYmKGw9IiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpIiksYSYmKGw9Il9uKCIrbCsiKSIpO3ZhciBmPUJyKHQsbCk7YyYmKGY9ImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjsiK2YpLEVyKGUsInZhbHVlIiwiKCIrdCsiKSIpLE1yKGUsdSxmLG51bGwsITApLChzfHxhKSYmTXIoZSwiYmx1ciIsIiRmb3JjZVVwZGF0ZSgpIil9KGUscixpKTtlbHNlIGlmKCFGLmlzUmVzZXJ2ZWRUYWcobykpcmV0dXJuIEhyKGUscixpKSwhMTtyZXR1cm4hMH0sdGV4dDpmdW5jdGlvbihlLHQpe3QudmFsdWUmJkVyKGUsInRleHRDb250ZW50IiwiX3MoIit0LnZhbHVlKyIpIix0KX0saHRtbDpmdW5jdGlvbihlLHQpe3QudmFsdWUmJkVyKGUsImlubmVySFRNTCIsIl9zKCIrdC52YWx1ZSsiKSIsdCl9fSxpc1ByZVRhZzpmdW5jdGlvbihlKXtyZXR1cm4icHJlIj09PWV9LGlzVW5hcnlUYWc6Ym8sbXVzdFVzZVByb3A6am4sY2FuQmVMZWZ0T3BlblRhZzokbyxpc1Jlc2VydmVkVGFnOlduLGdldFRhZ05hbWVzcGFjZTpabixzdGF0aWNLZXlzOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LnN0YXRpY0tleXN8fFtdKX0sW10pLmpvaW4oIiwiKX0oYmEpfSx4YT1nKGZ1bmN0aW9uKGUpe3JldHVybiBwKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzLHN0YXJ0LGVuZCxyYXdBdHRyc01hcCIrKGU\/IiwiK2U6IiIpKX0pO2Z1bmN0aW9uIGthKGUsdCl7ZSYmKCRhPXhhKHQuc3RhdGljS2V5c3x8IiIpLHdhPXQuaXNSZXNlcnZlZFRhZ3x8VCxmdW5jdGlvbiBlKHQpe3Quc3RhdGljPWZ1bmN0aW9uKGUpe2lmKDI9PT1lLnR5cGUpcmV0dXJuITE7aWYoMz09PWUudHlwZSlyZXR1cm4hMDtyZXR1cm4hKCFlLnByZSYmKGUuaGFzQmluZGluZ3N8fGUuaWZ8fGUuZm9yfHxkKGUudGFnKXx8IXdhKGUudGFnKXx8ZnVuY3Rpb24oZSl7Zm9yKDtlLnBhcmVudDspe2lmKCJ0ZW1wbGF0ZSIhPT0oZT1lLnBhcmVudCkudGFnKXJldHVybiExO2lmKGUuZm9yKXJldHVybiEwfXJldHVybiExfShlKXx8IU9iamVjdC5rZXlzKGUpLmV2ZXJ5KCRhKSkpfSh0KTtpZigxPT09dC50eXBlKXtpZighd2EodC50YWcpJiYic2xvdCIhPT10LnRhZyYmbnVsbD09dC5hdHRyc01hcFsiaW5saW5lLXRlbXBsYXRlIl0pcmV0dXJuO2Zvcih2YXIgbj0wLHI9dC5jaGlsZHJlbi5sZW5ndGg7bjxyO24rKyl7dmFyIGk9dC5jaGlsZHJlbltuXTtlKGkpLGkuc3RhdGljfHwodC5zdGF0aWM9ITEpfWlmKHQuaWZDb25kaXRpb25zKWZvcih2YXIgbz0xLGE9dC5pZkNvbmRpdGlvbnMubGVuZ3RoO288YTtvKyspe3ZhciBzPXQuaWZDb25kaXRpb25zW29dLmJsb2NrO2Uocykscy5zdGF0aWN8fCh0LnN0YXRpYz0hMSl9fX0oZSksZnVuY3Rpb24gZSh0LG4pe2lmKDE9PT10LnR5cGUpe2lmKCh0LnN0YXRpY3x8dC5vbmNlKSYmKHQuc3RhdGljSW5Gb3I9biksdC5zdGF0aWMmJnQuY2hpbGRyZW4ubGVuZ3RoJiYoMSE9PXQuY2hpbGRyZW4ubGVuZ3RofHwzIT09dC5jaGlsZHJlblswXS50eXBlKSlyZXR1cm4gdm9pZCh0LnN0YXRpY1Jvb3Q9ITApO2lmKHQuc3RhdGljUm9vdD0hMSx0LmNoaWxkcmVuKWZvcih2YXIgcj0wLGk9dC5jaGlsZHJlbi5sZW5ndGg7cjxpO3IrKyllKHQuY2hpbGRyZW5bcl0sbnx8ISF0LmZvcik7aWYodC5pZkNvbmRpdGlvbnMpZm9yKHZhciBvPTEsYT10LmlmQ29uZGl0aW9ucy5sZW5ndGg7bzxhO28rKyllKHQuaWZDb25kaXRpb25zW29dLmJsb2NrLG4pfX0oZSwhMSkpfXZhciBBYT0vXihbXHckX10rfFwoW14pXSo\/XCkpXHMqPT58XmZ1bmN0aW9uKD86XHMrW1x3JF0rKT9ccypcKC8sT2E9L1woW14pXSo\/XCk7KiQvLFNhPS9eW0EtWmEtel8kXVtcdyRdKig\/OlwuW0EtWmEtel8kXVtcdyRdKnxcWydbXiddKj8nXXxcWyJbXiJdKj8iXXxcW1xkK118XFtbQS1aYS16XyRdW1x3JF0qXSkqJC8sVGE9e2VzYzoyNyx0YWI6OSxlbnRlcjoxMyxzcGFjZTozMix1cDozOCxsZWZ0OjM3LHJpZ2h0OjM5LGRvd246NDAsZGVsZXRlOls4LDQ2XX0sRWE9e2VzYzpbIkVzYyIsIkVzY2FwZSJdLHRhYjoiVGFiIixlbnRlcjoiRW50ZXIiLHNwYWNlOlsiICIsIlNwYWNlYmFyIl0sdXA6WyJVcCIsIkFycm93VXAiXSxsZWZ0OlsiTGVmdCIsIkFycm93TGVmdCJdLHJpZ2h0OlsiUmlnaHQiLCJBcnJvd1JpZ2h0Il0sZG93bjpbIkRvd24iLCJBcnJvd0Rvd24iXSxkZWxldGU6WyJCYWNrc3BhY2UiLCJEZWxldGUiLCJEZWwiXX0sTmE9ZnVuY3Rpb24oZSl7cmV0dXJuImlmKCIrZSsiKXJldHVybiBudWxsOyJ9LGphPXtzdG9wOiIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IixwcmV2ZW50OiIkZXZlbnQucHJldmVudERlZmF1bHQoKTsiLHNlbGY6TmEoIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0IiksY3RybDpOYSgiISRldmVudC5jdHJsS2V5Iiksc2hpZnQ6TmEoIiEkZXZlbnQuc2hpZnRLZXkiKSxhbHQ6TmEoIiEkZXZlbnQuYWx0S2V5IiksbWV0YTpOYSgiISRldmVudC5tZXRhS2V5IiksbGVmdDpOYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDAiKSxtaWRkbGU6TmEoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxIikscmlnaHQ6TmEoIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAyIil9O2Z1bmN0aW9uIERhKGUsdCl7dmFyIG49dD8ibmF0aXZlT246Ijoib246IixyPSIiLGk9IiI7Zm9yKHZhciBvIGluIGUpe3ZhciBhPUxhKGVbb10pO2Vbb10mJmVbb10uZHluYW1pYz9pKz1vKyIsIithKyIsIjpyKz0nIicrbysnIjonK2ErIiwifXJldHVybiByPSJ7IityLnNsaWNlKDAsLTEpKyJ9IixpP24rIl9kKCIrcisiLFsiK2kuc2xpY2UoMCwtMSkrIl0pIjpuK3J9ZnVuY3Rpb24gTGEoZSl7aWYoIWUpcmV0dXJuImZ1bmN0aW9uKCl7fSI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iWyIrZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIExhKGUpfSkuam9pbigiLCIpKyJdIjt2YXIgdD1TYS50ZXN0KGUudmFsdWUpLG49QWEudGVzdChlLnZhbHVlKSxyPVNhLnRlc3QoZS52YWx1ZS5yZXBsYWNlKE9hLCIiKSk7aWYoZS5tb2RpZmllcnMpe3ZhciBpPSIiLG89IiIsYT1bXTtmb3IodmFyIHMgaW4gZS5tb2RpZmllcnMpaWYoamFbc10pbys9amFbc10sVGFbc10mJmEucHVzaChzKTtlbHNlIGlmKCJleGFjdCI9PT1zKXt2YXIgYz1lLm1vZGlmaWVycztvKz1OYShbImN0cmwiLCJzaGlmdCIsImFsdCIsIm1ldGEiXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWNbZV19KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIiRldmVudC4iK2UrIktleSJ9KS5qb2luKCJ8fCIpKX1lbHNlIGEucHVzaChzKTtyZXR1cm4gYS5sZW5ndGgmJihpKz1mdW5jdGlvbihlKXtyZXR1cm4iaWYoISRldmVudC50eXBlLmluZGV4T2YoJ2tleScpJiYiK2UubWFwKE1hKS5qb2luKCImJiIpKyIpcmV0dXJuIG51bGw7In0oYSkpLG8mJihpKz1vKSwiZnVuY3Rpb24oJGV2ZW50KXsiK2krKHQ\/InJldHVybiAiK2UudmFsdWUrIigkZXZlbnQpIjpuPyJyZXR1cm4gKCIrZS52YWx1ZSsiKSgkZXZlbnQpIjpyPyJyZXR1cm4gIitlLnZhbHVlOmUudmFsdWUpKyJ9In1yZXR1cm4gdHx8bj9lLnZhbHVlOiJmdW5jdGlvbigkZXZlbnQpeyIrKHI\/InJldHVybiAiK2UudmFsdWU6ZS52YWx1ZSkrIn0ifWZ1bmN0aW9uIE1hKGUpe3ZhciB0PXBhcnNlSW50KGUsMTApO2lmKHQpcmV0dXJuIiRldmVudC5rZXlDb2RlIT09Iit0O3ZhciBuPVRhW2VdLHI9RWFbZV07cmV0dXJuIl9rKCRldmVudC5rZXlDb2RlLCIrSlNPTi5zdHJpbmdpZnkoZSkrIiwiK0pTT04uc3RyaW5naWZ5KG4pKyIsJGV2ZW50LmtleSwiK0pTT04uc3RyaW5naWZ5KHIpKyIpIn12YXIgSWE9e29uOmZ1bmN0aW9uKGUsdCl7ZS53cmFwTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiJfZygiK2UrIiwiK3QudmFsdWUrIikifX0sYmluZDpmdW5jdGlvbihlLHQpe2Uud3JhcERhdGE9ZnVuY3Rpb24obil7cmV0dXJuIl9iKCIrbisiLCciK2UudGFnKyInLCIrdC52YWx1ZSsiLCIrKHQubW9kaWZpZXJzJiZ0Lm1vZGlmaWVycy5wcm9wPyJ0cnVlIjoiZmFsc2UiKSsodC5tb2RpZmllcnMmJnQubW9kaWZpZXJzLnN5bmM\/Iix0cnVlIjoiIikrIikifX0sY2xvYWs6U30sRmE9ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPWUsdGhpcy53YXJuPWUud2Fybnx8U3IsdGhpcy50cmFuc2Zvcm1zPVRyKGUubW9kdWxlcywidHJhbnNmb3JtQ29kZSIpLHRoaXMuZGF0YUdlbkZucz1UcihlLm1vZHVsZXMsImdlbkRhdGEiKSx0aGlzLmRpcmVjdGl2ZXM9QShBKHt9LElhKSxlLmRpcmVjdGl2ZXMpO3ZhciB0PWUuaXNSZXNlcnZlZFRhZ3x8VDt0aGlzLm1heWJlQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3JldHVybiEhZS5jb21wb25lbnR8fCF0KGUudGFnKX0sdGhpcy5vbmNlSWQ9MCx0aGlzLnN0YXRpY1JlbmRlckZucz1bXSx0aGlzLnByZT0hMX07ZnVuY3Rpb24gUGEoZSx0KXt2YXIgbj1uZXcgRmEodCk7cmV0dXJue3JlbmRlcjoid2l0aCh0aGlzKXtyZXR1cm4gIisoZT9SYShlLG4pOidfYygiZGl2IiknKSsifSIsc3RhdGljUmVuZGVyRm5zOm4uc3RhdGljUmVuZGVyRm5zfX1mdW5jdGlvbiBSYShlLHQpe2lmKGUucGFyZW50JiYoZS5wcmU9ZS5wcmV8fGUucGFyZW50LnByZSksZS5zdGF0aWNSb290JiYhZS5zdGF0aWNQcm9jZXNzZWQpcmV0dXJuIEhhKGUsdCk7aWYoZS5vbmNlJiYhZS5vbmNlUHJvY2Vzc2VkKXJldHVybiBCYShlLHQpO2lmKGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQpcmV0dXJuIHphKGUsdCk7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIFVhKGUsdCk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxlLnNsb3RUYXJnZXR8fHQucHJlKXtpZigic2xvdCI9PT1lLnRhZylyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNsb3ROYW1lfHwnImRlZmF1bHQiJyxyPXFhKGUsdCksaT0iX3QoIituKyhyPyIsIityOiIiKSxvPWUuYXR0cnN8fGUuZHluYW1pY0F0dHJzP0dhKChlLmF0dHJzfHxbXSkuY29uY2F0KGUuZHluYW1pY0F0dHJzfHxbXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOmIoZS5uYW1lKSx2YWx1ZTplLnZhbHVlLGR5bmFtaWM6ZS5keW5hbWljfX0pKTpudWxsLGE9ZS5hdHRyc01hcFsidi1iaW5kIl07IW8mJiFhfHxyfHwoaSs9IixudWxsIik7byYmKGkrPSIsIitvKTthJiYoaSs9KG8\/IiI6IixudWxsIikrIiwiK2EpO3JldHVybiBpKyIpIn0oZSx0KTt2YXIgbjtpZihlLmNvbXBvbmVudCluPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LmlubGluZVRlbXBsYXRlP251bGw6cWEodCxuLCEwKTtyZXR1cm4iX2MoIitlKyIsIitWYSh0LG4pKyhyPyIsIityOiIiKSsiKSJ9KGUuY29tcG9uZW50LGUsdCk7ZWxzZXt2YXIgcjsoIWUucGxhaW58fGUucHJlJiZ0Lm1heWJlQ29tcG9uZW50KGUpKSYmKHI9VmEoZSx0KSk7dmFyIGk9ZS5pbmxpbmVUZW1wbGF0ZT9udWxsOnFhKGUsdCwhMCk7bj0iX2MoJyIrZS50YWcrIiciKyhyPyIsIityOiIiKSsoaT8iLCIraToiIikrIikifWZvcih2YXIgbz0wO288dC50cmFuc2Zvcm1zLmxlbmd0aDtvKyspbj10LnRyYW5zZm9ybXNbb10oZSxuKTtyZXR1cm4gbn1yZXR1cm4gcWEoZSx0KXx8InZvaWQgMCJ9ZnVuY3Rpb24gSGEoZSx0KXtlLnN0YXRpY1Byb2Nlc3NlZD0hMDt2YXIgbj10LnByZTtyZXR1cm4gZS5wcmUmJih0LnByZT1lLnByZSksdC5zdGF0aWNSZW5kZXJGbnMucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitSYShlLHQpKyJ9IiksdC5wcmU9biwiX20oIisodC5zdGF0aWNSZW5kZXJGbnMubGVuZ3RoLTEpKyhlLnN0YXRpY0luRm9yPyIsdHJ1ZSI6IiIpKyIpIn1mdW5jdGlvbiBCYShlLHQpe2lmKGUub25jZVByb2Nlc3NlZD0hMCxlLmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4gVWEoZSx0KTtpZihlLnN0YXRpY0luRm9yKXtmb3IodmFyIG49IiIscj1lLnBhcmVudDtyOyl7aWYoci5mb3Ipe249ci5rZXk7YnJlYWt9cj1yLnBhcmVudH1yZXR1cm4gbj8iX28oIitSYShlLHQpKyIsIit0Lm9uY2VJZCsrKyIsIituKyIpIjpSYShlLHQpfXJldHVybiBIYShlLHQpfWZ1bmN0aW9uIFVhKGUsdCxuLHIpe3JldHVybiBlLmlmUHJvY2Vzc2VkPSEwLGZ1bmN0aW9uIGUodCxuLHIsaSl7aWYoIXQubGVuZ3RoKXJldHVybiBpfHwiX2UoKSI7dmFyIG89dC5zaGlmdCgpO3JldHVybiBvLmV4cD8iKCIrby5leHArIik\/IithKG8uYmxvY2spKyI6IitlKHQsbixyLGkpOiIiK2Eoby5ibG9jayk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gcj9yKGUsbik6ZS5vbmNlP0JhKGUsbik6UmEoZSxuKX19KGUuaWZDb25kaXRpb25zLnNsaWNlKCksdCxuLHIpfWZ1bmN0aW9uIHphKGUsdCxuLHIpe3ZhciBpPWUuZm9yLG89ZS5hbGlhcyxhPWUuaXRlcmF0b3IxPyIsIitlLml0ZXJhdG9yMToiIixzPWUuaXRlcmF0b3IyPyIsIitlLml0ZXJhdG9yMjoiIjtyZXR1cm4gZS5mb3JQcm9jZXNzZWQ9ITAsKHJ8fCJfbCIpKyIoKCIraSsiKSxmdW5jdGlvbigiK28rYStzKyIpe3JldHVybiAiKyhufHxSYSkoZSx0KSsifSkifWZ1bmN0aW9uIFZhKGUsdCl7dmFyIG49InsiLHI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRpcmVjdGl2ZXM7aWYoIW4pcmV0dXJuO3ZhciByLGksbyxhLHM9ImRpcmVjdGl2ZXM6WyIsYz0hMTtmb3Iocj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7bz1uW3JdLGE9ITA7dmFyIHU9dC5kaXJlY3RpdmVzW28ubmFtZV07dSYmKGE9ISF1KGUsbyx0Lndhcm4pKSxhJiYoYz0hMCxzKz0ne25hbWU6Iicrby5uYW1lKyciLHJhd05hbWU6Iicrby5yYXdOYW1lKyciJysoby52YWx1ZT8iLHZhbHVlOigiK28udmFsdWUrIiksZXhwcmVzc2lvbjoiK0pTT04uc3RyaW5naWZ5KG8udmFsdWUpOiIiKSsoby5hcmc\/Iixhcmc6Iisoby5pc0R5bmFtaWNBcmc\/by5hcmc6JyInK28uYXJnKyciJyk6IiIpKyhvLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KG8ubW9kaWZpZXJzKToiIikrIn0sIil9aWYoYylyZXR1cm4gcy5zbGljZSgwLC0xKSsiXSJ9KGUsdCk7ciYmKG4rPXIrIiwiKSxlLmtleSYmKG4rPSJrZXk6IitlLmtleSsiLCIpLGUucmVmJiYobis9InJlZjoiK2UucmVmKyIsIiksZS5yZWZJbkZvciYmKG4rPSJyZWZJbkZvcjp0cnVlLCIpLGUucHJlJiYobis9InByZTp0cnVlLCIpLGUuY29tcG9uZW50JiYobis9J3RhZzoiJytlLnRhZysnIiwnKTtmb3IodmFyIGk9MDtpPHQuZGF0YUdlbkZucy5sZW5ndGg7aSsrKW4rPXQuZGF0YUdlbkZuc1tpXShlKTtpZihlLmF0dHJzJiYobis9ImF0dHJzOiIrR2EoZS5hdHRycykrIiwiKSxlLnByb3BzJiYobis9ImRvbVByb3BzOiIrR2EoZS5wcm9wcykrIiwiKSxlLmV2ZW50cyYmKG4rPURhKGUuZXZlbnRzLCExKSsiLCIpLGUubmF0aXZlRXZlbnRzJiYobis9RGEoZS5uYXRpdmVFdmVudHMsITApKyIsIiksZS5zbG90VGFyZ2V0JiYhZS5zbG90U2NvcGUmJihuKz0ic2xvdDoiK2Uuc2xvdFRhcmdldCsiLCIpLGUuc2NvcGVkU2xvdHMmJihuKz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5mb3J8fE9iamVjdC5rZXlzKHQpLnNvbWUoZnVuY3Rpb24oZSl7dmFyIG49dFtlXTtyZXR1cm4gbi5zbG90VGFyZ2V0RHluYW1pY3x8bi5pZnx8bi5mb3J8fEthKG4pfSksaT0hIWUuaWY7aWYoIXIpZm9yKHZhciBvPWUucGFyZW50O287KXtpZihvLnNsb3RTY29wZSYmby5zbG90U2NvcGUhPT1jYXx8by5mb3Ipe3I9ITA7YnJlYWt9by5pZiYmKGk9ITApLG89by5wYXJlbnR9dmFyIGE9T2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBKYSh0W2VdLG4pfSkuam9pbigiLCIpO3JldHVybiJzY29wZWRTbG90czpfdShbIithKyJdIisocj8iLG51bGwsdHJ1ZSI6IiIpKyghciYmaT8iLG51bGwsZmFsc2UsIitmdW5jdGlvbihlKXt2YXIgdD01MzgxLG49ZS5sZW5ndGg7Zm9yKDtuOyl0PTMzKnReZS5jaGFyQ29kZUF0KC0tbik7cmV0dXJuIHQ+Pj4wfShhKToiIikrIikifShlLGUuc2NvcGVkU2xvdHMsdCkrIiwiKSxlLm1vZGVsJiYobis9Im1vZGVsOnt2YWx1ZToiK2UubW9kZWwudmFsdWUrIixjYWxsYmFjazoiK2UubW9kZWwuY2FsbGJhY2srIixleHByZXNzaW9uOiIrZS5tb2RlbC5leHByZXNzaW9uKyJ9LCIpLGUuaW5saW5lVGVtcGxhdGUpe3ZhciBvPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGlsZHJlblswXTtpZihuJiYxPT09bi50eXBlKXt2YXIgcj1QYShuLHQub3B0aW9ucyk7cmV0dXJuImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK3IucmVuZGVyKyJ9LHN0YXRpY1JlbmRlckZuczpbIityLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uKCl7IitlKyJ9In0pLmpvaW4oIiwiKSsiXX0ifX0oZSx0KTtvJiYobis9bysiLCIpfXJldHVybiBuPW4ucmVwbGFjZSgvLCQvLCIiKSsifSIsZS5keW5hbWljQXR0cnMmJihuPSJfYigiK24rJywiJytlLnRhZysnIiwnK0dhKGUuZHluYW1pY0F0dHJzKSsiKSIpLGUud3JhcERhdGEmJihuPWUud3JhcERhdGEobikpLGUud3JhcExpc3RlbmVycyYmKG49ZS53cmFwTGlzdGVuZXJzKG4pKSxufWZ1bmN0aW9uIEthKGUpe3JldHVybiAxPT09ZS50eXBlJiYoInNsb3QiPT09ZS50YWd8fGUuY2hpbGRyZW4uc29tZShLYSkpfWZ1bmN0aW9uIEphKGUsdCl7dmFyIG49ZS5hdHRyc01hcFsic2xvdC1zY29wZSJdO2lmKGUuaWYmJiFlLmlmUHJvY2Vzc2VkJiYhbilyZXR1cm4gVWEoZSx0LEphLCJudWxsIik7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZClyZXR1cm4gemEoZSx0LEphKTt2YXIgcj1lLnNsb3RTY29wZT09PWNhPyIiOlN0cmluZyhlLnNsb3RTY29wZSksaT0iZnVuY3Rpb24oIityKyIpe3JldHVybiAiKygidGVtcGxhdGUiPT09ZS50YWc\/ZS5pZiYmbj8iKCIrZS5pZisiKT8iKyhxYShlLHQpfHwidW5kZWZpbmVkIikrIjp1bmRlZmluZWQiOnFhKGUsdCl8fCJ1bmRlZmluZWQiOlJhKGUsdCkpKyJ9IixvPXI\/IiI6Iixwcm94eTp0cnVlIjtyZXR1cm4ie2tleToiKyhlLnNsb3RUYXJnZXR8fCciZGVmYXVsdCInKSsiLGZuOiIraStvKyJ9In1mdW5jdGlvbiBxYShlLHQsbixyLGkpe3ZhciBvPWUuY2hpbGRyZW47aWYoby5sZW5ndGgpe3ZhciBhPW9bMF07aWYoMT09PW8ubGVuZ3RoJiZhLmZvciYmInRlbXBsYXRlIiE9PWEudGFnJiYic2xvdCIhPT1hLnRhZyl7dmFyIHM9bj90Lm1heWJlQ29tcG9uZW50KGEpPyIsMSI6IiwwIjoiIjtyZXR1cm4iIisocnx8UmEpKGEsdCkrc312YXIgYz1uP2Z1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdO2lmKDE9PT1pLnR5cGUpe2lmKFdhKGkpfHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gV2EoZS5ibG9jayl9KSl7bj0yO2JyZWFrfSh0KGkpfHxpLmlmQ29uZGl0aW9ucyYmaS5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gdChlLmJsb2NrKX0pKSYmKG49MSl9fXJldHVybiBufShvLHQubWF5YmVDb21wb25lbnQpOjAsdT1pfHxaYTtyZXR1cm4iWyIrby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSx0KX0pLmpvaW4oIiwiKSsiXSIrKGM\/IiwiK2M6IiIpfX1mdW5jdGlvbiBXYShlKXtyZXR1cm4gdm9pZCAwIT09ZS5mb3J8fCJ0ZW1wbGF0ZSI9PT1lLnRhZ3x8InNsb3QiPT09ZS50YWd9ZnVuY3Rpb24gWmEoZSx0KXtyZXR1cm4gMT09PWUudHlwZT9SYShlLHQpOjM9PT1lLnR5cGUmJmUuaXNDb21tZW50PyhyPWUsIl9lKCIrSlNPTi5zdHJpbmdpZnkoci50ZXh0KSsiKSIpOiJfdigiKygyPT09KG49ZSkudHlwZT9uLmV4cHJlc3Npb246WGEoSlNPTi5zdHJpbmdpZnkobi50ZXh0KSkpKyIpIjt2YXIgbixyfWZ1bmN0aW9uIEdhKGUpe2Zvcih2YXIgdD0iIixuPSIiLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXSxvPVhhKGkudmFsdWUpO2kuZHluYW1pYz9uKz1pLm5hbWUrIiwiK28rIiwiOnQrPSciJytpLm5hbWUrJyI6JytvKyIsIn1yZXR1cm4gdD0ieyIrdC5zbGljZSgwLC0xKSsifSIsbj8iX2QoIit0KyIsWyIrbi5zbGljZSgwLC0xKSsiXSkiOnR9ZnVuY3Rpb24gWGEoZSl7cmV0dXJuIGUucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAyOSIpfW5ldyBSZWdFeHAoIlxcYiIrImRvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3Qsc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LGV4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMiLnNwbGl0KCIsIikuam9pbigiXFxifFxcYiIpKyJcXGIiKTtmdW5jdGlvbiBZYShlLHQpe3RyeXtyZXR1cm4gbmV3IEZ1bmN0aW9uKGUpfWNhdGNoKG4pe3JldHVybiB0LnB1c2goe2VycjpuLGNvZGU6ZX0pLFN9fWZ1bmN0aW9uIFFhKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4scixpKXsocj1BKHt9LHIpKS53YXJuO2RlbGV0ZSByLndhcm47dmFyIG89ci5kZWxpbWl0ZXJzP1N0cmluZyhyLmRlbGltaXRlcnMpK246bjtpZih0W29dKXJldHVybiB0W29dO3ZhciBhPWUobixyKSxzPXt9LGM9W107cmV0dXJuIHMucmVuZGVyPVlhKGEucmVuZGVyLGMpLHMuc3RhdGljUmVuZGVyRm5zPWEuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gWWEoZSxjKX0pLHRbb109c319dmFyIGVzLHRzLG5zPShlcz1mdW5jdGlvbihlLHQpe3ZhciBuPWxhKGUudHJpbSgpLHQpOyExIT09dC5vcHRpbWl6ZSYma2Eobix0KTt2YXIgcj1QYShuLHQpO3JldHVybnthc3Q6bixyZW5kZXI6ci5yZW5kZXIsc3RhdGljUmVuZGVyRm5zOnIuc3RhdGljUmVuZGVyRm5zfX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByPU9iamVjdC5jcmVhdGUoZSksaT1bXSxvPVtdO2lmKG4pZm9yKHZhciBhIGluIG4ubW9kdWxlcyYmKHIubW9kdWxlcz0oZS5tb2R1bGVzfHxbXSkuY29uY2F0KG4ubW9kdWxlcykpLG4uZGlyZWN0aXZlcyYmKHIuZGlyZWN0aXZlcz1BKE9iamVjdC5jcmVhdGUoZS5kaXJlY3RpdmVzfHxudWxsKSxuLmRpcmVjdGl2ZXMpKSxuKSJtb2R1bGVzIiE9PWEmJiJkaXJlY3RpdmVzIiE9PWEmJihyW2FdPW5bYV0pO3Iud2Fybj1mdW5jdGlvbihlLHQsbil7KG4\/bzppKS5wdXNoKGUpfTt2YXIgcz1lcyh0LnRyaW0oKSxyKTtyZXR1cm4gcy5lcnJvcnM9aSxzLnRpcHM9byxzfXJldHVybntjb21waWxlOnQsY29tcGlsZVRvRnVuY3Rpb25zOlFhKHQpfX0pKENhKSxycz0obnMuY29tcGlsZSxucy5jb21waWxlVG9GdW5jdGlvbnMpO2Z1bmN0aW9uIGlzKGUpe3JldHVybih0cz10c3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lPyc8YSBocmVmPSJcbiIvPic6JzxkaXYgYT0iXG4iLz4nLHRzLmlubmVySFRNTC5pbmRleE9mKCImIzEwOyIpPjB9dmFyIG9zPSEheiYmaXMoITEpLGFzPSEheiYmaXMoITApLHNzPWcoZnVuY3Rpb24oZSl7dmFyIHQ9WW4oZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksY3M9d24ucHJvdG90eXBlLiRtb3VudDtyZXR1cm4gd24ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe2lmKChlPWUmJlluKGUpKT09PWRvY3VtZW50LmJvZHl8fGU9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9ucztpZighbi5yZW5kZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9mIHIpIiMiPT09ci5jaGFyQXQoMCkmJihyPXNzKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1mdW5jdGlvbihlKXtpZihlLm91dGVySFRNTClyZXR1cm4gZS5vdXRlckhUTUw7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZS5jbG9uZU5vZGUoITApKSx0LmlubmVySFRNTH0oZSkpO2lmKHIpe3ZhciBpPXJzKHIse291dHB1dFNvdXJjZVJhbmdlOiExLHNob3VsZERlY29kZU5ld2xpbmVzOm9zLHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjphcyxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVycyxjb21tZW50czpuLmNvbW1lbnRzfSx0aGlzKSxvPWkucmVuZGVyLGE9aS5zdGF0aWNSZW5kZXJGbnM7bi5yZW5kZXI9byxuLnN0YXRpY1JlbmRlckZucz1hfX1yZXR1cm4gY3MuY2FsbCh0aGlzLGUsdCl9LHduLmNvbXBpbGU9cnMsd259KTsKLyoqIC9tL2pzL3Z1ZS92dWUtdGhlLW1hc2suanMgKiovCnZhciBfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDU6MzgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDI0LTAxLTMxIDE0OjMzOjE1IjsidXNlIHN0cmljdCI7X19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDIzLTAxLTEyIDExOjQwOjU1IjsidXNlIHN0cmljdCI7X19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDIzLTAxLTEyIDEwOjUwOjQxIjsidXNlIHN0cmljdCI7X19fZDJjX3Z1ZXRoZW1hc2tqc19jX29uPSIyMDIxLTEyLTE1IDEyOjUxOjI0IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihoLGMpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9YygpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFtdLGMpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLlZ1ZVRoZU1hc2s9YygpOmguVnVlVGhlTWFzaz1jKCl9KSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGgpe2Z1bmN0aW9uIGMoZCl7aWYoYVtkXSlyZXR1cm4gYVtkXS5leHBvcnRzO3ZhciBlPWFbZF09e2k6ZCxsOiExLGV4cG9ydHM6e319O3JldHVybiBoW2RdLmNhbGwoZS5leHBvcnRzLGUsZS5leHBvcnRzLGMpLGUubD0hMCxlLmV4cG9ydHN9dmFyIGE9e307cmV0dXJuIGMubT1oLGMuYz1hLGMuaT1mdW5jdGlvbihkKXtyZXR1cm4gZH0sYy5kPWZ1bmN0aW9uKGQsZSxsKXtjLm8oZCxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGQsZSx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsCmdldDpsfSl9LGMubj1mdW5jdGlvbihkKXt2YXIgZT1kJiZkLl9fZXNNb2R1bGU\/ZnVuY3Rpb24oKXtyZXR1cm4gZC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBkfTtyZXR1cm4gYy5kKGUsImEiLGUpLGV9LGMubz1mdW5jdGlvbihkLGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxlKX0sYy5wPSIuIixjKGMucz0xMCl9KFtmdW5jdGlvbihoLGMpe2guZXhwb3J0cz17IiMiOntwYXR0ZXJuOi9cZC99LFg6e3BhdHRlcm46L1swLTlhLXpBLVpdL30sUzp7cGF0dGVybjovW2EtekEtWl0vfSxBOntwYXR0ZXJuOi9bYS16QS1aXS8sdHJhbnNmb3JtOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRvTG9jYWxlVXBwZXJDYXNlKCl9fSxhOntwYXR0ZXJuOi9bYS16QS1aXS8sdHJhbnNmb3JtOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRvTG9jYWxlTG93ZXJDYXNlKCl9fSwiISI6e2VzY2FwZTohMH19fSxmdW5jdGlvbihoLGMsYSl7ZnVuY3Rpb24gZChiKXt2YXIgZj0KZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIGYuaW5pdEV2ZW50KGIsITAsITApLGZ9dmFyIGU9YSgyKTtoPWEoMCk7dmFyIGw9YS5uKGgpO2MuYT1mdW5jdGlvbihiLGYpe3ZhciBnPWYudmFsdWU7aWYoKEFycmF5LmlzQXJyYXkoZyl8fCJzdHJpbmciPT10eXBlb2YgZykmJihnPXttYXNrOmcsdG9rZW5zOmwuYX0pLCJJTlBVVCIhPT1iLnRhZ05hbWUudG9Mb2NhbGVVcHBlckNhc2UoKSl7Zj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpO2lmKDEhPT1mLmxlbmd0aCl0aHJvdyBFcnJvcigidi1tYXNrIGRpcmVjdGl2ZSByZXF1aXJlcyAxIGlucHV0LCBmb3VuZCAiK2YubGVuZ3RoKTtiPWZbMF19Yi5vbmlucHV0PWZ1bmN0aW9uKG0pe2lmKG0uaXNUcnVzdGVkKXt2YXIgaz1iLnNlbGVjdGlvbkVuZDttPWIudmFsdWVbay0xXTtmb3IoYi52YWx1ZT1hLmkoZS5hKShiLnZhbHVlLGcubWFzaywhMCxnLnRva2Vucyk7azxiLnZhbHVlLmxlbmd0aCYmYi52YWx1ZS5jaGFyQXQoay0KMSkhPT1tOylrKys7Yj09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJihiLnNldFNlbGVjdGlvblJhbmdlKGssayksc2V0VGltZW91dChmdW5jdGlvbigpe2Iuc2V0U2VsZWN0aW9uUmFuZ2UoayxrKX0sMCkpO2IuZGlzcGF0Y2hFdmVudChkKCJpbnB1dCIpKX19O2Y9YS5pKGUuYSkoYi52YWx1ZSxnLm1hc2ssITAsZy50b2tlbnMpO2YhPT1iLnZhbHVlJiYoYi52YWx1ZT1mLGIuZGlzcGF0Y2hFdmVudChkKCJpbnB1dCIpKSl9fSxmdW5jdGlvbihoLGMsYSl7dmFyIGQ9YSg2KSxlPWEoNSk7Yy5hPWZ1bmN0aW9uKGwsYil7dmFyIGY9ISgyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxnPWFyZ3VtZW50c1szXTtyZXR1cm4gQXJyYXkuaXNBcnJheShiKT9hLmkoZS5hKShkLmEsYixnKShsLGIsZixnKTphLmkoZC5hKShsLGIsZixnKX19LGZ1bmN0aW9uKGgsYyxhKXtmdW5jdGlvbiBkKGcpe2cuY29tcG9uZW50KGIuYS5uYW1lLGIuYSk7CmcuZGlyZWN0aXZlKCJtYXNrIixsLmEpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtoPWEoMCk7dmFyIGU9YS5uKGgpLGw9YSgxKTtoPWEoNyk7dmFyIGI9YS5uKGgpO2EuZChjLCJUaGVNYXNrIixmdW5jdGlvbigpe3JldHVybiBiLmF9KTthLmQoYywibWFzayIsZnVuY3Rpb24oKXtyZXR1cm4gbC5hfSk7YS5kKGMsInRva2VucyIsZnVuY3Rpb24oKXtyZXR1cm4gZS5hfSk7YS5kKGMsInZlcnNpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KTt2YXIgZj0iMC4xMS4xIjtjLmRlZmF1bHQ9ZDsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LlZ1ZSYmd2luZG93LlZ1ZS51c2UoZCl9LGZ1bmN0aW9uKGgsYyxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7aD1hKDEpO3ZhciBkPWEoMCksZT1hLm4oZCksbD1hKDIpO2MuZGVmYXVsdD17bmFtZToiVGhlTWFzayIscHJvcHM6e3ZhbHVlOltTdHJpbmcsCk51bWJlcl0sbWFzazp7dHlwZTpbU3RyaW5nLEFycmF5XSxyZXF1aXJlZDohMH0sbWFza2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdG9rZW5zOnt0eXBlOk9iamVjdCxkZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuYX19fSxkaXJlY3RpdmVzOnttYXNrOmguYX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntsYXN0VmFsdWU6bnVsbCxkaXNwbGF5OnRoaXMudmFsdWV9fSx3YXRjaDp7dmFsdWU6ZnVuY3Rpb24oYil7YiE9PXRoaXMubGFzdFZhbHVlJiYodGhpcy5kaXNwbGF5PWIpfSxtYXNrZWQ6ZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2godGhpcy5kaXNwbGF5KX19LGNvbXB1dGVkOntjb25maWc6ZnVuY3Rpb24oKXtyZXR1cm57bWFzazp0aGlzLm1hc2ssdG9rZW5zOnRoaXMudG9rZW5zLG1hc2tlZDp0aGlzLm1hc2tlZH19fSxtZXRob2RzOntvbklucHV0OmZ1bmN0aW9uKGIpe2IuaXNUcnVzdGVkfHx0aGlzLnJlZnJlc2goYi50YXJnZXQudmFsdWUpfSxyZWZyZXNoOmZ1bmN0aW9uKGIpe3RoaXMuZGlzcGxheT0KYjtiPWEuaShsLmEpKGIsdGhpcy5tYXNrLHRoaXMubWFza2VkLHRoaXMudG9rZW5zKTtiIT09dGhpcy5sYXN0VmFsdWUmJih0aGlzLmxhc3RWYWx1ZT1iLHRoaXMuJGVtaXQoImlucHV0IixiKSl9fX19LGZ1bmN0aW9uKGgsYyxhKXtjLmE9ZnVuY3Rpb24oZCxlLGwpe3JldHVybiBlPWUuc29ydChmdW5jdGlvbihiLGYpe3JldHVybiBiLmxlbmd0aC1mLmxlbmd0aH0pLGZ1bmN0aW9uKGIsZil7Zm9yKHZhciBnPSEoMjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sbT0wO208ZS5sZW5ndGg7KXt2YXIgaz1lW21dO20rKzt2YXIgbj1lW21dO2lmKCEobiYmZChiLG4sITAsbCkubGVuZ3RoPmsubGVuZ3RoKSlyZXR1cm4gZChiLGssZyxsKX1yZXR1cm4iIn19fSxmdW5jdGlvbihoLGMsYSl7Yy5hPWZ1bmN0aW9uKGQsZSl7dmFyIGw9ISgyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxiPQphcmd1bWVudHNbM107ZD1kfHwiIjtlPWV8fCIiO2Zvcih2YXIgZj0wLGc9MCxtPSIiO2Y8ZS5sZW5ndGgmJmc8ZC5sZW5ndGg7KXt2YXIgaz1lW2ZdLG49YltrXSxwPWRbZ107biYmIW4uZXNjYXBlPyhuLnBhdHRlcm4udGVzdChwKSYmKG0rPW4udHJhbnNmb3JtP24udHJhbnNmb3JtKHApOnAsZisrKSxnKyspOihuJiZuLmVzY2FwZSYmKGYrKyxrPWVbZl0pLGwmJihtKz1rKSxwPT09ayYmZysrLGYrKyl9Zm9yKGc9IiI7ZjxlLmxlbmd0aCYmbDspe2s9ZVtmXTtpZihiW2tdKXtnPSIiO2JyZWFrfWcrPWs7ZisrfXJldHVybiBtK2d9fSxmdW5jdGlvbihoLGMsYSl7Yz1hKDgpKGEoNCksYSg5KSxudWxsLG51bGwpO2guZXhwb3J0cz1jLmV4cG9ydHN9LGZ1bmN0aW9uKGgsYyl7aC5leHBvcnRzPWZ1bmN0aW9uKGEsZCxlLGwpe3ZhciBiLGY9YT1hfHx7fSxnPXR5cGVvZiBhLmRlZmF1bHQ7Im9iamVjdCIhPT1nJiYiZnVuY3Rpb24iIT09Z3x8KGI9YSxmPWEuZGVmYXVsdCk7YT0iZnVuY3Rpb24iPT0KdHlwZW9mIGY\/Zi5vcHRpb25zOmY7aWYoZCYmKGEucmVuZGVyPWQucmVuZGVyLGEuc3RhdGljUmVuZGVyRm5zPWQuc3RhdGljUmVuZGVyRm5zKSxlJiYoYS5fc2NvcGVJZD1lKSxsKXt2YXIgbT1hLmNvbXB1dGVkfHwoYS5jb21wdXRlZD17fSk7T2JqZWN0LmtleXMobCkuZm9yRWFjaChmdW5jdGlvbihrKXt2YXIgbj1sW2tdO21ba109ZnVuY3Rpb24oKXtyZXR1cm4gbn19KX1yZXR1cm57ZXNNb2R1bGU6YixleHBvcnRzOmYsb3B0aW9uczphfX19LGZ1bmN0aW9uKGgsYyl7aC5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRjcmVhdGVFbGVtZW50O3JldHVybih0aGlzLl9zZWxmLl9jfHxhKSgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibWFzayIscmF3TmFtZToidi1tYXNrIix2YWx1ZTp0aGlzLmNvbmZpZyxleHByZXNzaW9uOiJjb25maWcifV0sYXR0cnM6e3R5cGU6InRleHQifSxkb21Qcm9wczp7dmFsdWU6dGhpcy5kaXNwbGF5fSxvbjp7aW5wdXQ6dGhpcy5vbklucHV0fX0pfSwKc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oaCxjLGEpe2guZXhwb3J0cz1hKDMpfV0pfSk7Ci8qKiAvbS9qcy9maW5hbmNlX211bHRpc3RlcC5qcyAqKi8KdmFyIF9fX2QyY19maW5hbmNlbXVsdGlzdGVwanNfY19vbj0iMjAyNi0wNC0xMyAwOTozMDowNyI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihiLGgsbSl7aWYoYj09QXJyYXkucHJvdG90eXBlfHxiPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBiO2JbaF09bS52YWx1ZTtyZXR1cm4gYn07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGIpe2I9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxiLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgaD0wO2g8Yi5sZW5ndGg7KytoKXt2YXIgbT1iW2hdO2lmKG0mJm0uTWF0aD09TWF0aClyZXR1cm4gbX10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGIsaCl7dmFyIG09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF07aWYobnVsbD09bSlyZXR1cm4gYltoXTttPWJbbV07cmV0dXJuIHZvaWQgMCE9PW0\/bTpiW2hdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGIsaCxtLG4pe2gmJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChiLGgsbSxuKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChiLGgsbSxuKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihiLGgsbSxuKXttPSRqc2NvbXAuZ2xvYmFsO2I9Yi5zcGxpdCgiLiIpO2ZvcihuPTA7bjxiLmxlbmd0aC0xO24rKyl7dmFyIHE9YltuXTtpZighKHEgaW4gbSkpcmV0dXJuO209bVtxXX1iPWJbYi5sZW5ndGgtMV07bj1tW2JdO2g9aChuKTtoIT1uJiZudWxsIT1oJiYkanNjb21wLmRlZmluZVByb3BlcnR5KG0sYix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmh9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihiLGgsbSxuKXt2YXIgcT1iLnNwbGl0KCIuIik7Yj0xPT09cS5sZW5ndGg7bj1xWzBdO249IWImJm4gaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciB2PTA7djxxLmxlbmd0aC0xO3YrKyl7dmFyIHk9cVt2XTtpZighKHkgaW4gbikpcmV0dXJuO249blt5XX1xPXFbcS5sZW5ndGgtMV07bT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09bT9uW3FdOm51bGw7aD1oKG0pO251bGwhPWgmJihiPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMscSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmh9KTpoIT09bSYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW3FdJiYobT0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcV09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2wocSk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrbSsiJCIrcSksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShuLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW3FdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6aH0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYj17YTohMH0saD17fTt0cnl7cmV0dXJuIGguX19wcm90b19fPWIsaC5hfWNhdGNoKG0pe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYixoKXtiLl9fcHJvdG9fXz1oO2lmKGIuX19wcm90b19fIT09aCl0aHJvdyBuZXcgVHlwZUVycm9yKGIrIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBifTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYil7dmFyIGg9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaDxiLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTpiW2grK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihiKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGIpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3ZhciBoPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmJbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gaD9oLmNhbGwoYik6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGIpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihiKXtpZighKGIgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2IrIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGIpe3RoaXMueWllbGRSZXN1bHQ9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjpiLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjpifTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGIpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzpifTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihiLGgpe3RoaXMubmV4dEFkZHJlc3M9aDtyZXR1cm57dmFsdWU6Yn19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGIsaCl7Yj0kanNjb21wLm1ha2VJdGVyYXRvcihiKTt2YXIgbT1iLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhtKTtpZihtLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1tLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9aDtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWIsdGhpcy55aWVsZChtLnZhbHVlLGgpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGIpe3RoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYixoKXt0aGlzLmNhdGNoQWRkcmVzc189Yjt2b2lkIDAhPWgmJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWJ8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYixoKXt0aGlzLm5leHRBZGRyZXNzPWI7dGhpcy5jYXRjaEFkZHJlc3NfPWh8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDA7Yj10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGIsaCxtKXttP3RoaXMuZmluYWxseUNvbnRleHRzX1ttXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189aHx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGIsaCl7aD10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGh8fDApWzBdO2lmKGg9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxoKXtpZihoLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWguanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxoLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1oLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3RoaXMub2JqZWN0Xz1iO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBoIGluIGIpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGgpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYj10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGIgaW4gdGhpcy5vYmplY3RfKXJldHVybiBifXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1ifTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGIsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgaD10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGgpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGg\/aFsicmV0dXJuIl06ZnVuY3Rpb24obSl7cmV0dXJue3ZhbHVlOm0sZG9uZTohMH19LGIsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYixoLG0pe3RyeXt2YXIgbj1iLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhuKTtpZighbi5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksbjt2YXIgcT1uLnZhbHVlfWNhdGNoKHYpe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18odiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7bS5jYWxsKHRoaXMuY29udGV4dF8scSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYj10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGIpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChoKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhoKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7Yj10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihiLmlzRXhjZXB0aW9uKXRocm93IGIuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTpiLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihiKXt0aGlzLm5leHQ9ZnVuY3Rpb24oaCl7cmV0dXJuIGIubmV4dF8oaCl9O3RoaXMudGhyb3c9ZnVuY3Rpb24oaCl7cmV0dXJuIGIudGhyb3dfKGgpfTt0aGlzLnJldHVybj1mdW5jdGlvbihoKXtyZXR1cm4gYi5yZXR1cm5fKGgpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihiLGgpe2g9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oaCkpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmIucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGgsYi5wcm90b3R5cGUpO3JldHVybiBofTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGgobil7cmV0dXJuIGIubmV4dChuKX1mdW5jdGlvbiBtKG4pe3JldHVybiBiLnRocm93KG4pfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLHEpe2Z1bmN0aW9uIHYoeSl7eS5kb25lP24oeS52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKHkudmFsdWUpLnRoZW4oaCxtKS50aGVuKHYscSl9dihiLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihiKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGIpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpKX07CmZ1bmN0aW9uIGluaXRpYWxpemVGaW5hbmNlTXVsdGlTdGVwKGIpe2Z1bmN0aW9uIGgoZCl7c3dpdGNoKGQpe2Nhc2UgIkVtYWlsIHByb3ZpZGVkIjpjYXNlICJQaG9uZSBwcm92aWRlZCI6T3x8KCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS50cmlnZ2VyKCJwb3B1cGl6ZXIuc3VibWl0dGVkIiksTz0hMCl9ImZ1bmN0aW9uIj09PXR5cGVvZiBnYVRyYWNrJiZnYVRyYWNrKCJfdHJhY2tFdmVudCIsIlVzZWQtU1JQLUZpbmFuY2UtUG9wdXAiLGQsd2luZG93LmxvY2F0aW9uLmhyZWYsMSl9ZnVuY3Rpb24gbShkKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0QmFubmVyU2VhcmNoQmFyTWFrZXM\/d3N3aWR0aD0wIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7dHlwZTpkLnRvTG93ZXJDYXNlKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYyl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSBvcHRpb246Zmlyc3QiLApiKVswXS5vdXRlckhUTUwpOyQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JC5lYWNoKGMsZnVuY3Rpb24oZSxmKXskKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJytmLm1ha2UrJyI+JytmLnRpdGxlMisiPC9vcHRpb24+Iil9KX19KX1mdW5jdGlvbiBuKGQsYyl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldEJhbm5lclNlYXJjaEJhck1vZGVscz93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOnttYWtlOmJ0b2EoYyksdHlwZTpkLnRvTG93ZXJDYXNlKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsCmIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JC5lYWNoKGUsZnVuY3Rpb24oZixnKXskKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5hcHBlbmQoJzxvcHRpb24gZGF0YS1tb2RlbD0iJytnLm1vZGVsTmFtZSsnIiBkYXRhLXllYXI9IicrZy55ZWFyKyciIHZhbHVlPSInK2cudGl0bGUyKyciPicrZy50aXRsZTIrIjwvb3B0aW9uPiIpfSl9fSl9ZnVuY3Rpb24gcShkLGMsZSl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldE5ld1RyaW1zP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e21ha2U6ZCxtb2RlbDpjLHllYXI6ZX0sc3VjY2VzczpmdW5jdGlvbihmKXskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLApiKS5odG1sKCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246Zmlyc3QiLGIpWzBdLm91dGVySFRNTCk7JC5lYWNoKGYsZnVuY3Rpb24oZyxsKXskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXByaWNlPSInK2wucHJpY2UrJyIgZGF0YS1zdHlsZWlkPSInK2wuc3R5bGVpZCsnIiB2YWx1ZT0iJytsLnRyaW0rJyI+JytsLnRyaW0rIjwvb3B0aW9uPiIpfSl9fSl9ZnVuY3Rpb24gdihkLGMpeyQuYWpheCh7dXJsOiIvIit3KyIvYWpheC9nZXRJbnZlbnRvcnlUcmltcz93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOnttYWtlOmQsbW9kZWw6Y30sc3VjY2VzczpmdW5jdGlvbihlKXskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goZSxmdW5jdGlvbihmLGcpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsCmIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXByaWNlPSInK2cub3JpZ2luYWxwcmljZSsnIiBkYXRhLXZlaGljbGVpZD0iJytnLnZlaGljbGVpZCsnIiBkYXRhLXllYXI9IicrZy55ZWFyKyciIGRhdGEtaXNuZXc9IicrZy5pc25ldysnIiBkYXRhLWlzZGVtbz0iJytnLmRlbW8rJyIgZGF0YS1zdG9ja251bWJlcj0iJytnLnN0b2NrbnVtYmVyKyciIGRhdGEtbWlsZWFnZT0iJytnLm1pbGVhZ2UrJyIgZGF0YS1zdHlsZWlkPSInK2cuc3R5bGVpZCsnIiB2YWx1ZT0iJytnLnRyaW0rJyI+JytnLnRpdGxlKyI8L29wdGlvbj4iKX0pfX0pfWZ1bmN0aW9uIHkoZCl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldFVzZWRDYWxjdWxhdG9ySFRNTD93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOntjYXJpZDpkfSxzdWNjZXNzOmZ1bmN0aW9uKGMpe2MudmFsaWQ\/KCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IiLGIpLmh0bWwoYy5odG1sKSwKJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuZmluZCgiLmNhbGMtZm9ybSIpLmZpbmQoIi51c2VkQ2FsY3VsYXRvckRvd25QYXltZW50IikuYWZ0ZXIoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvclRyYWRlSW4iLGIpLmh0bWwoKSksVygpLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikudmFsKGEuZm9ybWRhdGEudHJhZGVJblZhbHVlKSwkKCIjZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLmF0dHIoIm1heCIsYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IiLGIpLnNob3coKSk6KGEuZm9ybWRhdGEubm9QYXltZW50PSEwLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IiLGIpLmhpZGUoKSxhLm5leHQoITApKX19KX1mdW5jdGlvbiBXKCl7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZG93bnBheW1lbnQiKS5vbigiYmx1ciIsCmZ1bmN0aW9uKCl7QygpfSk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubm9PZk1vbnRocyIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGQ9JCh0aGlzKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5pbnRlcmVzdHJhdGUiKS52YWwoZC5hdHRyKCJkYXRhLXJhdGUiKSk7QygpfSk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudEZyZXF1ZW5jeSIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7QygpfSk7QygpfWZ1bmN0aW9uIEMoKXt2YXIgZD1wYXJzZUZsb2F0KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmludGVyZXN0cmF0ZSIsYikudmFsKCkucmVwbGFjZSgiLCIsIi4iKSkudG9GaXhlZCgyKS8xMDAsYz1wYXJzZUZsb2F0KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm5vT2ZNb250aHMiLGIpLnZhbCgpKS8xMixlPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubG9hbmFtb3VudCIsCmIpLnZhbCgpKS50b0ZpeGVkKDIpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmZlZWFtb3VudCIsYikubGVuZ3RoJiYoZT1wYXJzZUZsb2F0KGUpK3BhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZmVlYW1vdW50IixiKS52YWwoKS5yZXBsYWNlKCIsIiwiIikpKTsxPT0kKCIjdXNldGF4ZXMiLGIpLnZhbCgpJiYoZSo9cGFyc2VGbG9hdCgkKCIjdGF4ZXMiKS52YWwoKSkudG9GaXhlZCgyKS8xMDArMSk7MDwkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5kb3ducGF5bWVudCIsYikudmFsKCkmJihlLT1wYXJzZUZsb2F0KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmRvd25wYXltZW50IixiKS52YWwoKSkudG9GaXhlZCgyKSk7dmFyIGY9IiIsZz0xMjtzd2l0Y2goJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudEZyZXF1ZW5jeSIsYikudmFsKCkpe2Nhc2UgIndlZWsiOmc9CjUyO2Y9JCgiI3dlZWtUZXh0IikudmFsKCk7YnJlYWs7Y2FzZSAiMndlZWtzIjpnPTI2O2Y9JCgiIzJ3ZWVrc1RleHQiKS52YWwoKTticmVhaztjYXNlICJtb250aGx5IjpmPSQoIiNtb250aGx5VGV4dCIpLnZhbCgpO2c9MTI7YnJlYWs7Y2FzZSAiYmltb250aGx5IjpmPSQoIiNiaW1vbnRobHlUZXh0IikudmFsKCksZz0yNH1jKj1nOzA8ZD8oZC89ZyxnPU1hdGgucG93KGQrMSxjKSxlKj1kKmcvKGctMSkpOmUvPWM7ZT1NYXRoLnJvdW5kKDEwMCplKS8xMDA7aXNOYU4oZSkmJihlPTApOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm91dHB1dHByaWNlIixiKS52YWwoIiQiK2UpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm91dHB1dHByaWNlLXR4dCIsYikuaHRtbCgiJCIrZSk7Zj0kKCIjZXN0aW1kYXRlZFBheW1lbnRUZXh0IixiKS52YWwoKS5yZXBsYWNlKCIjI0ZSRVFVRU5DWSMjIixmKTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5lc3RpbWF0ZWRUZXh0IiwKYikuaHRtbCgiPHN0cm9uZz4iK2YrIjwvc3Ryb25nPiIpO2Y9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iRmluYW5jZW1lbnQiOiJGaW5hbmNpbmciO2EuZm9ybWRhdGEucGF5bWVudFR5cGU9ZjthLmZvcm1kYXRhLnBheW1lbnRUeXBlUmVhbD0iZmluYW5jaW5nIjthLmZvcm1kYXRhLnBheW1lbnRUZXJtPSQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm5vT2ZNb250aHMiLGIpLnZhbCgpO2EuZm9ybWRhdGEucGF5bWVudFZhbHVlPWU7YS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ9JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZG93bnBheW1lbnQiLGIpLnZhbCgpfHwwO2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsPSQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRGcmVxdWVuY3kiLGIpLnZhbCgpO2EuZm9ybWRhdGEucGF5bWVudFJhdGU9JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuaW50ZXJlc3RyYXRlIiwKYikudmFsKCk7YS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPXBhcnNlSW50KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmxvYW5hbW91bnQiLGIpLnZhbCgpKTtmPXBhcnNlSW50KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmZlZWFtb3VudCIsYikudmFsKCkucmVwbGFjZSgiLCIsIiIpKTthLmZvcm1kYXRhLnZlaGljbGVGaW5hbFByaWNlPXBhcnNlSW50KCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmxvYW5hbW91bnQiLGIpLnZhbCgpKStmO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsRmVlPWY7ay5jaGVja1ZhbGlkaXR5KCl9ZnVuY3Rpb24gUCgpeyIxIj09JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzSW5zdGFudCIsYikudmFsKCkmJigkKGIpLmZpbmQoIi5jb25maXJtYXRpb25UaXRsZSIpLmhpZGUoKSwkKGIpLmZpbmQoIi5jb25maXJtYXRpb25UZXh0Iikuc2hvdygpLCQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuaHRtbCgiIiksCiQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuaGlkZSgpKTtpZihfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikmJiIiPT0kKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS52YWwoKSl7dmFyIGQ9SlNPTi5wYXJzZShfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLnZhbChkLm1ha2UpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5Nb2RlbF0iKS52YWwoZC5tb2RlbCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblllYXJdIikudmFsKGQueWVhcik7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblRyaW1dIikudmFsKGQudHJpbSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblZhbHVlXSIpLnZhbChkLnZhbHVlKTtfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX2N1cnJlbnRfdmFsdWUiKSYmKGQ9SlNPTi5wYXJzZShfbG9jYWxTdG9yYWdlR2V0KCJ0cmFkZWluX2N1cnJlbnRfdmFsdWUiKSksCiQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5WYWx1ZV0iKS5hdHRyKCJkYXRhLWN1cnJlbnQiLGQudmFsdWUpKX1hLnNob3dFcnJvcj0hMTthLnB1c2hQYXJ0aWFsPSExO2suc2V0RGVwYXJ0bWVudCgpO2suc2V0VHJhZGVJbigpO2lmKGsudXNlcklkKCkpJC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldEZpbmFuY2VNdWx0aXN0ZXBVc2VySWRBbmREYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLHR5cGU6IlBPU1QiLGRhdGE6e3VzZXJJZDprLnVzZXJJZCgpLGRvbWFpbjpRLHNpdGVJZDokKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKSxsYW5nOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSxlbWFpbEhhbmRsZXJKc29uT2JqZWN0OkpTT04uc3RyaW5naWZ5KEopfSxzdWNjZXNzOmZ1bmN0aW9uKGcpe2cuSUR8fChnLklEPS0xKTtrLnVzZXJJZChnLklEKTtnLmRhdGEmJihhLmZvcm1kYXRhPUpTT04ucGFyc2UoZy5kYXRhKSk7CiIiIT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lJiZhLmZvcm1kYXRhLmZpcnN0TmFtZSE9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUmJihhLmZvcm1kYXRhLmZpcnN0TmFtZT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSk7IiIhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lJiZhLmZvcm1kYXRhLmxhc3ROYW1lIT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lJiYoYS5mb3JtZGF0YS5sYXN0TmFtZT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyRW1haWwmJmEuZm9ybWRhdGEuZW1haWxBZGRyZXNzIT1lbWFpbEhhbmRsZXIudXNlckVtYWlsJiYoYS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCk7CiIiIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmYS5mb3JtZGF0YS5waG9uZU51bWJlciE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmKGEuZm9ybWRhdGEucGhvbmVOdW1iZXI9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbChhLmZvcm1kYXRhLnBob25lTnVtYmVyKSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSl7bGV0IGw7YS5mb3JtZGF0YS5maXJzdE5hbWU9bnVsbCE9KGw9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgiZmlyc3RuYW1lIikpP2w6YS5mb3JtZGF0YS5maXJzdE5hbWU7bGV0IHA7YS5mb3JtZGF0YS5sYXN0TmFtZT1udWxsIT0ocD1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJsYXN0bmFtZSIpKT9wOmEuZm9ybWRhdGEubGFzdE5hbWU7bGV0IHI7YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M9Cm51bGwhPShyPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImVtYWlsIikpP3I6YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M7bGV0IHQ7YS5mb3JtZGF0YS5waG9uZU51bWJlcj1udWxsIT0odD1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJwaG9uZSIpKT90OmEuZm9ybWRhdGEucGhvbmVOdW1iZXI7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nKS52YWwoYS5mb3JtZGF0YS5waG9uZU51bWJlcil9MD09YS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzJiYwPT1hLmZvcm1kYXRhLmFkZHJlc3NfbW9udGhzJiYoYS5mb3JtZGF0YS5hZGRyZXNzPSIiKTtnLnN0ZXAmJihhLnN0ZXA9TnVtYmVyKGcuc3RlcCksYS5uZXh0U3RlcD1hLm5leHRTdGVwRGVmYXVsdFZhbHVlc1sic3RlcCIrZy5zdGVwXSk7JChkb2N1bWVudCkudHJpZ2dlcigiY3JlZGl0Lm11bHRpc3RlcC5zaG93Iik7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLnNob3coKTsKay5zZXRDdXJyZW50TWFrZU1vZGVsWWVhcigpO2sub25TaG93RnVuY3Rpb25Ub1J1bigpO2EuZmlyc3RTdGVwPSExfSxjb21wbGV0ZTpmdW5jdGlvbihnKXtpZighZy5kYXRhKXJldHVybiBrLnVzZXJJZCgtMSksbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxpbmVhcl9zdGVwIiksUCgpfX0pO2Vsc2V7YS5wdXNoUGFydGlhbD0hMTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSYmKGEuZm9ybWRhdGEuZmlyc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJihhLmZvcm1kYXRhLmxhc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUpOyIiIT1lbWFpbEhhbmRsZXIudXNlckVtYWlsJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCYmCihhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcz1lbWFpbEhhbmRsZXIudXNlckVtYWlsKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyUGhvbmUmJihhLmZvcm1kYXRhLnBob25lTnVtYmVyPWVtYWlsSGFuZGxlci51c2VyUGhvbmUsJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nKS52YWwoYS5mb3JtZGF0YS5waG9uZU51bWJlcikpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2Upe3ZhciBjO2EuZm9ybWRhdGEuZmlyc3ROYW1lPW51bGwhPShjPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImZpcnN0bmFtZSIpKT9jOmEuZm9ybWRhdGEuZmlyc3ROYW1lO3ZhciBlO2EuZm9ybWRhdGEubGFzdE5hbWU9bnVsbCE9KGU9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgibGFzdG5hbWUiKSk\/ZTphLmZvcm1kYXRhLmxhc3ROYW1lO3ZhciBmO2EuZm9ybWRhdGEuZW1haWxBZGRyZXNzPQpudWxsIT0oZj1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJlbWFpbCIpKT9mOmEuZm9ybWRhdGEuZW1haWxBZGRyZXNzO2xldCBnO2EuZm9ybWRhdGEucGhvbmVOdW1iZXI9bnVsbCE9KGc9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgicGhvbmUiKSk\/ZzphLmZvcm1kYXRhLnBob25lTnVtYmVyOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCdpbnB1dFtuYW1lPSJwaG9uZU51bWJlciJdJykudmFsKGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpfSQoJyNtaW5pZm9ybSBbbmFtZT0ibXVsdGlfZGVhbGVyX3NlbmRUbyJdJykubGVuZ3RoJiYiIiE9JCgnI21pbmlmb3JtIFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKS52YWwoKSYmKGEuZm9ybWRhdGEubXVsdGlGcm9tTWluaT0hMCk7JCgiI21heF9idWRnZXQiKS5sZW5ndGgmJihhLnB1c2hQYXJ0aWFsPSEwLGM9IiIsZT1wYXJzZUZsb2F0KCQoIiNtYXhfYnVkZ2V0IikudmFsKCkucmVwbGFjZSgvW14wLTkuLV0rL2csIiIpKSwKYz1rLmdldEN1cnJlbnRCdWRnZXQoZSksIjEiPT11JiZpc05hTihlKSYmKGM9IiIpLGEuZm9ybWRhdGEuYnVkZ2V0PWMpOyQoIi50cmFjay1wcm9ncmVzcyIpLmxlbmd0aCYmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0cmFkZWluX3N1Ym1pdF9kYXRhIikmJihhLmZvcm1kYXRhLmN1cnJlbnRseURyaXZpbmc9IkZJTkFOQ0VfRk9STV9BTFJFQURZX0RSSVZJTkdfVFJBREUiKSxjPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJyZXRhaWxfdHJhY2tfZGF0YSIpLChjPUpTT04ucGFyc2UoYykpJiZjLnZhbHVlJiYoYz1KU09OLnBhcnNlKGMudmFsdWUpKSYmYy5wYXltZW50JiZjLnBheW1lbnQucGF5bWVudFZhbHVlJiYoZT1jLnBheW1lbnQucGF5bWVudFZhbHVlLGM9ZVswXSxlPWVbM10sZj0iIixjPSJtb250aGx5Ij09ZT9wYXJzZUZsb2F0KGMpOiJ3ZWVrbHkiPT1lPzUyKnBhcnNlRmxvYXQoYykvMTI6InNlbWltb250aGx5Ij09ZT8yNCpwYXJzZUZsb2F0KGMpLzEyOjI2KnBhcnNlRmxvYXQoYykvCjEyLGY9ay5nZXRDdXJyZW50QnVkZ2V0KGMpLGEuZm9ybWRhdGEuYnVkZ2V0PWYpKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbbmFtZT0iYnVkZ2V0Il0rbGFiZWwnKS5mb3JFYWNoKGc9PntnLmlubmVySFRNTD1nLmlubmVySFRNTC5yZXBsYWNlKC8oXCRcZHszLDR9fFxkezMsNH1cJCkvZyxsPT5EMkNVdGlscy5Gb3JtYXQudG9QcmljZShsLnJlcGxhY2UoL1wkL2csIiIpKSl9KTskKGRvY3VtZW50KS50cmlnZ2VyKCJjcmVkaXQubXVsdGlzdGVwLnNob3ciKTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuc2hvdygpOzA9PWEuc3RlcCYmKCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIixiKS5oaWRlKCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLm9mZigiY2xpY2subm9CdXR0b24iLCJpbnB1dFt0eXBlPXJhZGlvXSIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5vbigiY2xpY2subm9CdXR0b24iLCJpbnB1dFt0eXBlPXJhZGlvXSIsCmZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2EubmV4dCgpfSwxRTMpfSkpO2suc2V0Q3VycmVudE1ha2VNb2RlbFllYXIoKX19dmFyIHo9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX1BIT05FX1BPU0lUSU9OX0NIRUNLIikudmFsKCksSz0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fU0VMRUNUIikudmFsKCksRD0kKCIjQURNSU5fTUFOREFUT1JZX0NSRURJVF9CVVJFQVVfQ0hFQ0siKS52YWwoKSxBPSQoIiNBU0tfRk9SX1NJTl9DSEVDSyIpLnZhbCgpLE89ITEsdT0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNTZWNvbmRDaGFuY2UiLGIpLnZhbCgpLHg9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzSW5zdGFudCIsYikudmFsKCksRT0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNWd0RSIixiKS52YWwoKSxMPTEsTT1bMSwyLDMsNiw3LDEzLDE0LDE1XSxGPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImVtcGxveW1lbnRTdGF0dXMifV0sUj1bXSxTPQpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJmaXJzdE5hbWUifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6Imxhc3ROYW1lIn0se2Z1bmM6InZhbGlkYXRlTmFtZSIsdmFsdWU6IiJ9XSxUPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImFkZHJlc3MifV0sVT1be2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJyZW50T3JPd24ifSx7ZnVuYzoidmFsaWRhdGVJc051bWJlciIsdmFsdWU6Im1vbnRobHlQYXltZW50In0se2Z1bmM6InZhbGlkYXRlTW9udGhseVBheW1lbnQiLHZhbHVlOiJtb250aGx5UGF5bWVudCJ9XSxCPXtzdGVwMDoxLHN0ZXAxOjIsc3RlcDI6MyxzdGVwMzoiMCI9PXo\/NDoiYmVmb3JlIj09Sz8xOTo0LHN0ZXA0OiIwIj09ej81OiJiZWZvcmUiPT1LPzU6MTksc3RlcDU6NixzdGVwNjo3LHN0ZXA3Ojgsc3RlcDg6OSxzdGVwOToxMSxzdGVwMTA6MTEsc3RlcDExOjEyLHN0ZXAxMjoxMyxzdGVwMTM6MTYsc3RlcDE0OjE2LHN0ZXAxNToxNiwKc3RlcDE2OjE3LHN0ZXAxNzoiMCI9PXo\/MTk6MD09RD8iMCI9PUE\/IjEiPT11PzIzOiJkb25lIjoyMjoyMCxzdGVwMTg6IjAiPT16PzA9PUQ\/IjAiPT1BPyIxIj09dT8yMzoiZG9uZSI6MjI6MjA6ImJlZm9yZSI9PUs\/NDo1LHN0ZXAxOToxOCxzdGVwMjA6IjAiPT1BPyIxIj09dT8yMzoiZG9uZSI6MjIsc3RlcDIyOiIxIj09dT8yMzoiZG9uZSIsc3RlcDIzOiJkb25lIn07b3B0aW9uYWxTdGVwcz1bXTsiMSI9PXUmJihvcHRpb25hbFN0ZXBzPVsyM10sIjAiPT1BJiYob3B0aW9uYWxTdGVwcz1bMjIsMjNdKSxNPVsxLDIsMyw2LDcsMTQsMTVdLEY9W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudEFkZGVkSW5mbyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mbyIsdmFsdWU6IiJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lIix2YWx1ZToiIn1dLApCPXtzdGVwMDoxLHN0ZXAxOjIsc3RlcDI6MyxzdGVwMzoxOCxzdGVwNDoxOSxzdGVwNTo2LHN0ZXA2Ojcsc3RlcDc6OCxzdGVwODo5LHN0ZXA5OjIyLHN0ZXAxMDoxMSxzdGVwMTE6MTIsc3RlcDEyOjEzLHN0ZXAxMzoxNixzdGVwMTQ6MTYsc3RlcDE1OjE2LHN0ZXAxNjoyMyxzdGVwMTg6NSxzdGVwMTk6MTEsc3RlcDIwOiJkb25lIixzdGVwMjI6NCxzdGVwMjM6MD09RD8iZG9uZSI6MjB9KTsiMSI9PXgmJihvcHRpb25hbFN0ZXBzPVsyMl0sTD0yNCxNPVsxLDIsMyw2LDcsMTQsMTVdLEY9W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm8iLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvIn0se2Z1bmM6InZhbGlkYXRlRW1wbG95ZXJJbmZvIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWUiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVBZGRyZXNzRW1wbG95ZXIiLAp2YWx1ZToiYWRkcmVzc0VtcGxveWVyIn1dLFI9W3tmdW5jOiJ2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm8iLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvMiJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mbzIiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eUVtcGxveWVyU3RhdHVzVGltZTIiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVBZGRyZXNzRW1wbG95ZXIyIix2YWx1ZToiYWRkcmVzc0VtcGxveWVyMiJ9XSxTPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImZpcnN0TmFtZSJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToibGFzdE5hbWUifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6InRpdGxlIn0se2Z1bmM6InZhbGlkYXRlTmFtZSIsdmFsdWU6IiJ9XSxUPVt7ZnVuYzoidmFsaWRhdGVBZGRyZXNzIix2YWx1ZToiYWRkcmVzcyJ9XSxCPXtzdGVwMDoyNCxzdGVwMjQ6MjUsc3RlcDI1OjQsc3RlcDQ6MTksc3RlcDE5OjE4LApzdGVwMTg6NSxzdGVwNTo4LHN0ZXA4Ojksc3RlcDk6MTEsc3RlcDExOjEyLHN0ZXAxMjoxMyxzdGVwMjc6Mjgsc3RlcDI4OjEzLHN0ZXAxMzoxNixzdGVwMTQ6MTYsc3RlcDE1OjE2LHN0ZXAxNjoxNyxzdGVwMTc6MjIsc3RlcDI5OjIyLHN0ZXAyMjowPT1EPzI2OjIwLHN0ZXAyMDoyNixzdGVwMjY6ImRvbmUifSwiMSI9PUUmJihGPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImVtcGxveW1lbnRTdGF0dXMifSx7ZnVuYzoidmFsaWRhdGVFbXBsb3ltZW50QWRkZWRJbmZvVlciLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvIn0se2Z1bmM6InZhbGlkYXRlRW1wbG95ZXJJbmZvVlciLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eUVtcGxveWVyU3RhdHVzVGltZVZXIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlQWRkcmVzc0VtcGxveWVyVlciLHZhbHVlOiJhZGRyZXNzRW1wbG95ZXIifV0sQi5zdGVwMjI9MzAsQi5zdGVwMzA9ImRvbmUiLCJRQyI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9EZWFsZXJQcm92aW5jZSIsCmIpLnZhbCgpJiYoVT1be2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJyZW50T3JPd24ifSx7ZnVuYzoidmFsaWRhdGVJc051bWJlciIsdmFsdWU6Im1vbnRobHlQYXltZW50In0se2Z1bmM6InZhbGlkYXRlTW9udGhseVBheW1lbnQiLHZhbHVlOiJtb250aGx5UGF5bWVudCJ9LHtmdW5jOiJ2YWxpZGF0ZUlzTnVtYmVyIix2YWx1ZToibW9udGhseURpc2J1cnNlbWVudCJ9LHtmdW5jOiJ2YWxpZGF0ZU1vbnRobHlQYXltZW50Iix2YWx1ZToibW9udGhseURpc2J1cnNlbWVudCJ9XSkpKTt2YXIgYT1uZXcgVnVlKHtlbDokKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYilbMF0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjb250ZXh0OmIsYWpheFByb2Nlc3M6ITEsdXNlcklkOiIiLGNvbnZlcnNpb25TdWJtaXR0ZWQ6ITEsc2hvd0ljb246ITAscHVzaFBhcnRpYWw6ITEsY3VycmVudERlcHQ6Ik5FVyIsaW5pdFZlaGljbGVTZWxlY3Rpb25GaXJzdDohMCxzdGVwOjAsbmV4dFN0ZXA6TCwKZmlyc3RTdGVwOiEwLGNhbGN1bGF0b3JGdW5jdGlvbnM6IiIsY3JlZGl0RGVjaXNpb25IVE1MOiIiLGZvcm1kYXRhOnt2ZWhpY2xlVHlwZToiIixidWRnZXQ6IiIsY3VycmVudGx5RHJpdmluZzoiIixlbWFpbEFkZHJlc3M6IiIsY3JlZGl0UmF0aW5nOiIiLGRvd25PcHRpb25zOiIiLGJpcnRoZGF0ZVllYXI6IiIsYmlydGhkYXRlTW9udGg6IiIsYmlydGhkYXRlRGF5OiIiLGFkZHJlc3M6IiIsc3BsaXRBZGRyZXNzOltdLGFkZHJlc3NfeWVhcnM6MCxhZGRyZXNzX21vbnRoczowLGFkZHJlc3MyOiIiLHNwbGl0QWRkcmVzczI6W10sYWRkcmVzczJfeWVhcnM6MCxhZGRyZXNzMl9tb250aHM6MCxhZGRyZXNzRW1wbG95ZXI6IiIsc3BsaXRBZGRyZXNzRW1wbG95ZXI6W10scmVudE9yT3duOiIiLG1vbnRobHlQYXltZW50OjAsbW9udGhseURpc2J1cnNlbWVudDowLGVtcGxveW1lbnRTdGF0dXM6IiIsZW1wbG95bWVudEFkZGVkSW5mbzoiIixlbXBsb3llck5hbWU6IiIsZW1wbG95ZXJQaG9uZToiIiwKZW1wbG95bWVudFN0YXR1c1llYXI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGg6MCxlbXBsb3ltZW50QWRkZWRJbmZvMjoiIixlbXBsb3llck5hbWUyOiIiLGVtcGxveWVyUGhvbmUyOiIiLGVtcGxveW1lbnRTdGF0dXNZZWFyMjowLGVtcGxveW1lbnRTdGF0dXNNb250aDI6MCxhZGRyZXNzRW1wbG95ZXIyOiIiLHNwbGl0QWRkcmVzc0VtcGxveWVyMjpbXSx3b3JraW5nV2hpbGVJblNjaG9vbDoiIixvdGhlckVtcGxveW1lbnRTdGF0dXM6IiIsbW9udGhseUluY29tZTowLG1vbnRobHlJbmNvbWVfeWVhcnM6MCxtb250aGx5SW5jb21lX21vbnRoczowLHRpdGxlOiIiLGZpcnN0TmFtZToiIixsYXN0TmFtZToiIixwaG9uZU51bWJlcjoiIixjdXJyZW50TWFrZToiIixjdXJyZW50TW9kZWw6IiIsY3VycmVudE1vZGVsVGV4dDoiIixjdXJyZW50WWVhcjoiIixjdXJyZW50U3RvY2tOdW1iZXI6IiIsY3VycmVudE1pbGVhZ2U6MTAsY3VycmVudFRyaW06IiIsY3VycmVudFN0eWxlaWQ6IiIsY3VycmVudENhcklkOiIiLApwYXltZW50VHlwZToiIixwYXltZW50VHlwZVJlYWw6IiIscGF5bWVudFRlcm06IiIscGF5bWVudFJhdGVUeXBlOiIiLHBheW1lbnRWYWx1ZToiIixiYXNlcGF5bWVudDoiIixwYXltZW50VG90YWxJbmNlbnRpdmU6MCxwYXltZW50VG90YWxGZWU6MCxwYXltZW50R1NUOjAscGF5bWVudEhTVDowLHBheW1lbnRQU1Q6MCxwYXltZW50RG93blBheW1lbnQ6MCxwYXltZW50S21BbGxvd2FuY2U6MCxwYXltZW50SW50ZXJ2YWw6IiIscGF5bWVudFJhdGU6IiIscGF5bWVudFJlc2lkdWFsVmFsdWU6MCxub1BheW1lbnQ6ITEsbXVsdGlfZGVhbGVyX3NlbmRUbzoiIixjcmVkaXRCdXJlYXVDcmVkaXQ6Ik5PIixTSU46IiIsYWRkZWRJbmZvOiIiLHZlaGljbGVTYWxlc0RlcHQ6Im90aGVyIix2ZWhpY2xlUHJpY2U6IiIsdmVoaWNsZVRyYW5zbWlzc2lvbjoiIix2ZWhpY2xlVHJpbToiIix2ZWhpY2xlQ29sb3I6IiIsaW5pdGlhbFRpdGxlU2hvdzohMCxtdWx0aUZyb21NaW5pOiExLHRyYWRlSW5NYWtlOiIiLAp0cmFkZUluTW9kZWw6IiIsdHJhZGVJblllYXI6IiIsdHJhZGVJblRyaW06IiIsdHJhZGVJblZhbHVlOiIiLHZlaGljbGVJbml0aWFsUHJpY2U6IiIsdmVoaWNsZUZpbmFsUHJpY2U6IiIscGF5bWVudEZlZXNMaXN0OltdLHBheW1lbnRJbmNlbnRpdmVzTGlzdDpbXSxjcmVkaXRBcHBsaWNhdGlvbklkOiIiLGNvbnNlbnRBY2NvdW50TW9uaXRvcmluZzoiIixjb25zZW50Q3JlZGl0QXNzZXNzbWVudDoiIixjb25zZW50UGlwZWRhOiIiLGNvbnNlbnRDYXNsOiIiLGNvbnNlbnRWVzoiIn0sbmV4dFN0ZXBEZWZhdWx0VmFsdWVzOkIsdmFsaWRhdGlvblJ1bGVzOntzdGVwMTpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJ2ZWhpY2xlVHlwZSJ9XSxzdGVwMjpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJidWRnZXQifV0sc3RlcDM6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiY3VycmVudGx5RHJpdmluZyJ9XSxzdGVwNDpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLAp2YWx1ZToiZW1haWxBZGRyZXNzIn0se2Z1bmM6InZhbGlkYXRlRW1haWwiLHZhbHVlOiJlbWFpbEFkZHJlc3MifV0sc3RlcDU6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToibXVsdGlfZGVhbGVyX3NlbmRUbyJ9XSxzdGVwNjpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJjcmVkaXRSYXRpbmcifV0sc3RlcDc6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZG93bk9wdGlvbnMifV0sc3RlcDg6W3tmdW5jOiJ2YWxpZGF0ZUJpcnRoZGF0ZSIsdmFsdWU6IiJ9XSxzdGVwOTpULHN0ZXAxMTpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHlBZGRyZXNzVGltZSIsdmFsdWU6IiJ9XSxzdGVwMTI6VSxzdGVwMTM6RixzdGVwMTQ6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToid29ya2luZ1doaWxlSW5TY2hvb2wifV0sc3RlcDE1Olt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6Im90aGVyRW1wbG95bWVudFN0YXR1cyJ9XSxzdGVwMTY6W3tmdW5jOiJ2YWxpZGF0ZU1vcmVUaGFuWmVybyIsCnZhbHVlOiJtb250aGx5SW5jb21lIn0se2Z1bmM6InZhbGlkYXRlTW9udGhseUluY29tZSIsdmFsdWU6Im1vbnRobHlJbmNvbWUifV0sc3RlcDE3Olt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eU1vbnRobHlJbmNvbWVUaW1lIix2YWx1ZToiIn1dLHN0ZXAxODpTLHN0ZXAxOTpbe2Z1bmM6InZhbGlkYXRlUGhvbmVOdW1iZXIiLHZhbHVlOiJwaG9uZU51bWJlciJ9XSxzdGVwMjA6W3tmdW5jOiJ2YWxpZGF0ZUNoZWNrZWRDcmVkaXRCdXJlYXUiLHZhbHVlOiJjcmVkaXRCdXJlYXVDcmVkaXQifV0sc3RlcDIyOlt7ZnVuYzoidmFsaWRhdGVTSU4iLHZhbHVlOiJTSU4ifV0sc3RlcDI0Olt7ZnVuYzoidmFsaWRhdGVWZWhpY2xlIix2YWx1ZToiIn1dLHN0ZXAyNTpbe2Z1bmM6InZhbGlkYXRlUGF5bWVudCIsdmFsdWU6IiJ9XSxzdGVwMjY6W3tmdW5jOiJ2YWxpZGF0ZUNvbnNlbnQiLHZhbHVlOiIifV0sc3RlcDI3Olt7ZnVuYzoidmFsaWRhdGVBZGRyZXNzMiIsdmFsdWU6ImFkZHJlc3MyIn1dLApzdGVwMjg6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzczJUaW1lIix2YWx1ZToiIn1dLHN0ZXAyOTpSLHN0ZXAzMDpbe2Z1bmM6InZhbGlkYXRlQ29uc2VudHMiLHZhbHVlOiIifV19LG9uU2hvd0Z1bmN0aW9uOntzdGVwMjpbe2Z1bmM6InN0ZXAyVmlld2VkVHJhY2sifV0sc3RlcDQ6W3tmdW5jOiJlbWFpbFN0ZXBWaWV3ZWRUcmFjayJ9LHtmdW5jOiJpbml0RW1haWwifV0sc3RlcDY6W10sc3RlcDc6W10sc3RlcDg6W3tmdW5jOiJpbml0QmlydGhkYXRlQ2hhbmdlIn1dLHN0ZXA5Olt7ZnVuYzoiaW5pdEdvb2dsZUF1dG9jb21wbGV0ZSJ9XSxzdGVwMjc6W3tmdW5jOiJpbml0R29vZ2xlQXV0b2NvbXBsZXRlMiJ9XSxzdGVwMTM6W3tmdW5jOiJpbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIifV0sc3RlcDU6W3tmdW5jOiJpbml0U2VsZWN0TXVsdGlEZWFsZXIifV0sc3RlcDE5Olt7ZnVuYzoicGhvbmVTdGVwVmlld2VkVHJhY2sifSx7ZnVuYzoiaW5pdFBob25lIn1dLHN0ZXAyNDpbe2Z1bmM6ImluaXRWZWhpY2xlU2VsZWN0aW9uIn1dLApzdGVwMjU6W3tmdW5jOiJpbml0Q2FsY3VsYXRvciJ9XSxzdGVwMjY6W3tmdW5jOiJpbml0Q29uc2VudCJ9XSxzdGVwMjk6W3tmdW5jOiJpbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIyIn1dfSxub0NvbmZpcm1CdXR0b25TdGVwczpNLHNob3dFcnJvcjohMCxzZWNvbmRDaGFuY2VTdGVwVG9Ta2lwOlsxLDIsMyw2LDddLG9wdGlvbmFsU3RlcDpvcHRpb25hbFN0ZXBzfX0sbWV0aG9kczp7bmV4dDpmdW5jdGlvbihkKXtkfHwodGhpcy5zaG93RXJyb3I9ITAsdGhpcy5mb3JtZGF0YS5pbml0aWFsVGl0bGVTaG93PSExLHRoaXMucHVzaFBhcnRpYWw9ITApO2lmKHRoaXMudmFsaWRhdGlvblJ1bGVzLmhhc093blByb3BlcnR5KCJzdGVwIit0aGlzLnN0ZXApKWZvcih2YXIgYz0wO2M8dGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF0ubGVuZ3RoO2MrKylpZihrW3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLmZ1bmNdKHRoaXMuZm9ybWRhdGFbdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiKwp0aGlzLnN0ZXBdW2NdLnZhbHVlXSkpJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpLCQoJ1tuYW1lPSInK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLnZhbHVlKyciXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKTtlbHNle3RoaXMuc2hvd0Vycm9yJiYoJCgiIyIrdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF1bY10udmFsdWUrIkVycm9yTXNnIixiKS5sZW5ndGgmJiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiMiK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLnZhbHVlKyJFcnJvck1zZyIsYikudmFsKCkpLCQoJ1tuYW1lPSInK3RoaXMudmFsaWRhdGlvblJ1bGVzWyJzdGVwIit0aGlzLnN0ZXBdW2NdLnZhbHVlKyciXScsYikuY3NzKCJib3JkZXItY29sb3IiLCJ2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcikiKSk7cmV0dXJufWZvcih0aGlzLnNob3dFcnJvcj0KITE7ay5pc05leHRTdGVwRmlsbGVkKCk7KTtpZigyMSE9dGhpcy5zdGVwKXs0PT10aGlzLnN0ZXAmJiIiIT1hLmZvcm1kYXRhLmVtYWlsQWRkcmVzcyYmay5lbWFpbFByb3ZpZGVkVHJhY2soKTsxOT09dGhpcy5zdGVwJiYiIiE9YS5mb3JtZGF0YS5waG9uZU51bWJlciYmay5waG9uZVByb3ZpZGVkVHJhY2soKTtpZig5PT10aGlzLnN0ZXApdHJ5e3ZhciBlPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W25hbWU9ImFkZHJlc3MiXScsYiksZj1lLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpLGc9InVuZGVmaW5lZCIhPT10eXBlb2YgZi5wb3N0YWwubG9uZ19uYW1lP2YucG9zdGFsLmxvbmdfbmFtZTplLnZhbCgpO2VtYWlsSGFuZGxlci51c2VyUG9zdGFsPWc7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYiIiE9ZyYmKCJ1bmRlZmluZWQiIT09CnR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsZywiVXNlckZvcm0ucG9zdGFsIiksYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChnLCJVc2VyRm9ybS5wb3N0YWwiKSl9Y2F0Y2gobCl7Y29uc29sZS5sb2cobCl9NDw9dGhpcy5zdGVwJiYhdGhpcy5jb252ZXJzaW9uU3VibWl0dGVkJiYodGhpcy5jb252ZXJzaW9uU3VibWl0dGVkPSEwLGM9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lcl9jb25maXJtIiksMD09PWMubGVuZ3RoJiYoYz0kKCIjZ2VuZXJpY19mb3JtX2NvbmZpcm0iKSksYy5maW5kKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKCQodGhpcy5jb250ZXh0KS5maW5kKCIuZW1haWxTdWJqZWN0IikudGV4dCgpLnJlcGxhY2UoL1tcblxyXS9nLCIgIikpLGMuZmluZCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoIkZJTkFOQ0UiKSxjLmZpbmQoJ2lucHV0W25hbWU9InBhZ2VJRCJdJykudmFsKCQoIiNQQUdFSUQiKS52YWwoKSksCmMuZmluZCgnaW5wdXRbbmFtZT0iY3VycmVudFVSTCJdJykudmFsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxjLmZpbmQoJ2lucHV0W25hbWU9ImlzRnVsbFdpZHRoIl0nKS52YWwoJCgiI2lzRnVsbFdpZHRoUGFnZU5ld1ZEUCIpLnZhbCgpKSxjLmZpbmQoJ2lucHV0W25hbWU9ImRlYWxlck5hbWUiXScpLnZhbCgkKCIjbmV3VkRQRGVhbGVyTmFtZSIpLnZhbCgpKSxjLmZpbmQoJ2lucHV0W25hbWU9ImJ1dHRvblBvc2l0aW9uIl0nKS52YWwoJCgiI25ld1ZEUEJ1dHRvblBvc2l0aW9uIikudmFsKCkpLGMuZmluZCgnaW5wdXRbbmFtZT0iaXNNb2JpbGVOZXdWRFAiXScpLnZhbCgkKCIjaXNtb2JpbGUiKS52YWwoKSksYy50cmlnZ2VyKCJzdWJtaXQiKSwiZnVuY3Rpb24iPT09dHlwZW9mIHdpbmRvdy50cmFja0NvbnZlcnNpb24mJndpbmRvdy50cmFja0NvbnZlcnNpb24oKSk7MCE9dGhpcy5zdGVwJiYodGhpcy5zaG93SWNvbj0hMSk7dGhpcy5zdGVwPXRoaXMubmV4dFN0ZXA7bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxhc3Rfc3RlcCIpOwpkfHwoYS5maXJzdFN0ZXA\/YS5maXJzdFN0ZXA9ITE6ay5zdGVwVHJpZ2dlcighMCkpOygiIiE9dGhpcy5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJigiMCI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9DSEVDSyIpLnZhbCgpfHwiYWZ0ZXIiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fU0VMRUNUIikudmFsKCkpfHwiIiE9dGhpcy5mb3JtZGF0YS5waG9uZU51bWJlciYmIjEiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fQ0hFQ0siKS52YWwoKSYmImJlZm9yZSI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9TRUxFQ1QiKS52YWwoKSkmJmsubXVsdGlEZWFsZXJGb3JtU3RhdHVzKCkmJnRoaXMucHVzaFBhcnRpYWwmJigiMSI9PSQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNPUEVORURGUk9NSU1BR0VQT1BVUCIsYikudmFsKCk\/JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI09QRU5FREZST01JTUFHRVBPUFVQIiwKYikudmFsKCIwIik6ay5wdXNoRGF0YVRvU2VydmVyKCkpO2suc2V0Q2xpZW50U3RvcmFnZURhdGFWYWx1ZXMoKTt0aGlzLm5leHRTdGVwPXRoaXMubmV4dFN0ZXBEZWZhdWx0VmFsdWVzWyJzdGVwIit0aGlzLnN0ZXBdOzA8PXRoaXMub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5zdGVwKT8kKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24iLGIpLmFkZENsYXNzKCJpc1ZhbGlkIik6JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uIixiKS5yZW1vdmVDbGFzcygiaXNWYWxpZCIpO2sub25TaG93RnVuY3Rpb25Ub1J1bigpOzA8PXRoaXMubm9Db25maXJtQnV0dG9uU3RlcHMuaW5kZXhPZih0aGlzLnN0ZXApPygkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biIsYikuaGlkZSgpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5vZmYoImNsaWNrLm5vQnV0dG9uIiwiaW5wdXRbdHlwZT1yYWRpb10iKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsCmIpLm9uKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLm5leHQoKX0sMUUzKX0pKTooJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4iLGIpLnNob3coKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikub2ZmKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIikpOyJkb25lIj09dGhpcy5zdGVwJiYoIjEiPT14PyIxIj09RT9rLmNyZWRpdEFwcFN1bWlzc2lvbigpOmsucm91dGVPbmVDYWxsKCk6ay5zZW5kRW1haWwoKSl9fSxnZXRMaW5lYXJzdGVwOmZ1bmN0aW9uKGQpe3ZhciBjPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIpO2M9cGFyc2VJbnQoYz9jOjApO2lmKDA9PWN8fGlzTmFOKGMpKWM9MTtkJiYoYys9MSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiLGMpKTtyZXR1cm4gY319fSksCnc9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiLEo9ZW1haWxIYW5kbGVyLmdldEpzb25PYmplY3QoKTt6PXdpbmRvdy5sb2NhdGlvbjt2YXIgUT16LnByb3RvY29sKyIvLyIrei5ob3N0LGs9e2lzTmV4dFN0ZXBGaWxsZWQ6ZnVuY3Rpb24oKXtpZigiMSI9PXgmJiIxIj09RSYmWzE5LDQsMzBdLmluY2x1ZGVzKGEubmV4dFN0ZXApKXJldHVybiExO2lmKCIxIj09dSYmMDw9YS5zZWNvbmRDaGFuY2VTdGVwVG9Ta2lwLmluZGV4T2YoYS5uZXh0U3RlcCkpcmV0dXJuIGEubmV4dFN0ZXA9YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXNbInN0ZXAiK2EubmV4dFN0ZXBdLCEwO2lmKCgiMSI9PXV8fCIxIj09eCkmJjA8PWEub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5uZXh0U3RlcCkpcmV0dXJuITE7aWYoYS52YWxpZGF0aW9uUnVsZXMuaGFzT3duUHJvcGVydHkoInN0ZXAiK2EubmV4dFN0ZXApKXtmb3IodmFyIGQ9MDtkPGEudmFsaWRhdGlvblJ1bGVzWyJzdGVwIisKYS5uZXh0U3RlcF0ubGVuZ3RoO2QrKylpZigha1thLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5uZXh0U3RlcF1bZF0uZnVuY10oYS5mb3JtZGF0YVthLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5uZXh0U3RlcF1bZF0udmFsdWVdKSlyZXR1cm4hMTthLm5leHRTdGVwPWEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzWyJzdGVwIithLm5leHRTdGVwXTtyZXR1cm4hMH19LHZhbGlkYXRlTm90RW1wdHk6ZnVuY3Rpb24oZCl7cmV0dXJuIiIhPWQmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGR9LHZhbGlkYXRlTmFtZTpmdW5jdGlvbigpe3ZhciBkPS9eW0Etelx1MDBCRi1cdTFGRkZcdTJDMDAtXHVEN0ZGICctXSskLztsZXQgYz1kLnRlc3QoYS5mb3JtZGF0YS5maXJzdE5hbWUpO2Q9ZC50ZXN0KGEuZm9ybWRhdGEubGFzdE5hbWUpO2MmJmQ\/KCQoJ1tuYW1lPSJmaXJzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZmlyc3ROYW1lIl0nLGIpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiIiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTooY3x8KCQoJ1tuYW1lPSJmaXJzdE5hbWUiXScsYikuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImZpcnN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSksZHx8KCQoJ1tuYW1lPSJsYXN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibGFzdE5hbWUiXScsYikuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IikpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNmaXJzdE5hbWVFcnJvck1zZyIpLnZhbCgpKSk7cmV0dXJuIGMmJmR9LHZhbGlkYXRlSXNOdW1iZXI6ZnVuY3Rpb24oZCl7cmV0dXJuIDA8PQpkfSx2YWxpZGF0ZU1vbnRobHlJbmNvbWU6ZnVuY3Rpb24oZCl7cmV0dXJuIDk5OTk5OT49ZH0sdmFsaWRhdGVNb250aGx5UGF5bWVudDpmdW5jdGlvbihkKXtyZXR1cm4gOTk5OTk+PWR9LHZhbGlkYXRlQWRkcmVzczpmdW5jdGlvbihkKXtyZXR1cm4gMDxhLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnN8fDA8YS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocz8hMDoiIiE9ZCYmKGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYikuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIiksIiIhPWQuY2l0eSYmIiIhPWQuc3RyZWV0KT8oYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3M9ZCwhMCk6ITF9LHZhbGlkYXRlQWRkcmVzczI6ZnVuY3Rpb24oZCl7cmV0dXJuIDA8YS5mb3JtZGF0YS5hZGRyZXNzMl95ZWFyc3x8MDxhLmZvcm1kYXRhLmFkZHJlc3MyX21vbnRocz8hMDoiIiE9ZCYmKGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLApiKS5nb29nbGVQbGFjZXMoImdldEFkZHJlc3MiKSwiIiE9ZC5jaXR5JiYiIiE9ZC5zdHJlZXQpPyhhLmZvcm1kYXRhLnNwbGl0QWRkcmVzczI9ZCwhMCk6ITF9LHZhbGlkYXRlQWRkcmVzc0VtcGxveWVyOmZ1bmN0aW9uKGQpe2lmKCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfRU1QTE9ZRUQiIT1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXMpcmV0dXJuITA7aWYoIiIhPWQpe2lmKCJ1bmRlZmluZWQiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmbnVsbCE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJvYmplY3QiPT09dHlwZW9mIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiJjaXR5ImluIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXImJiIiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llci5jaXR5KXJldHVybiEwO2suaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyKCk7ZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLApiKS5nb29nbGVQbGFjZXMoImdldEFkZHJlc3MiKTtpZigiIiE9ZC5jaXR5JiYiIiE9ZC5zdHJlZXQpcmV0dXJuIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXI9ZCwhMH1yZXR1cm4hMX0sdmFsaWRhdGVBZGRyZXNzRW1wbG95ZXJWVzpmdW5jdGlvbihkKXt2YXIgYz1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM7aWYoIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9GVUxMIiE9YyYmIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9QQVJUIiE9YylyZXR1cm4hMDtpZigiIiE9ZCl7aWYoInVuZGVmaW5lZCIhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyJiZudWxsIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmIm9iamVjdCI9PT10eXBlb2YgYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmImNpdHkiaW4gYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmIiIhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyLmNpdHkpcmV0dXJuITA7CmsuaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyKCk7ZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLGIpLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpO2lmKCIiIT1kLmNpdHkmJiIiIT1kLnN0cmVldClyZXR1cm4gYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcj1kLCEwfXJldHVybiExfSx2YWxpZGF0ZUFkZHJlc3NFbXBsb3llcjI6ZnVuY3Rpb24oZCl7aWYoIiIhPWQpe2lmKCJ1bmRlZmluZWQiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcjImJm51bGwhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMiYmIm9iamVjdCI9PT10eXBlb2YgYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcjImJiJjaXR5ImluIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyJiYiIiE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyLmNpdHkpcmV0dXJuITA7CmsuaW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyMigpO2Q9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYikuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIik7aWYoIiIhPWQuY2l0eSYmIiIhPWQuc3RyZWV0KXJldHVybiBhLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMj1kLCEwfXJldHVybiExfSx2YWxpZGF0ZVN0YXR1c1RpbWU6ZnVuY3Rpb24oZCl7aWYoIiIhPWQmJjEwPT1kLmxlbmd0aClyZXR1cm4gZD1kLnNwbGl0KCIvIiksbmV3IERhdGUoK2RbMl0sZFsxXS0xLCtkWzBdKTxuZXcgRGF0ZX0sdmFsaWRhdGVFbXBsb3ltZW50QWRkZWRJbmZvOmZ1bmN0aW9uKGQpe3ZhciBjPWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cztyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TRUxGRU1QTE9ZRUQiPT0KY3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TVFVERU5UIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19PVEhFUiI9PWM\/IiIhPT1kJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBkOiEwfSx2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm9WVzpmdW5jdGlvbihkKXt2YXIgYz1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM7cmV0dXJuIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9GVUxMIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRF9QQVJUIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19SRVRJUkVEIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TRUxGRU1QTE9ZRUQiPT1jPyIiIT09ZCYmInVuZGVmaW5lZCIhPT10eXBlb2YgZDohMH0sdmFsaWRhdGVFbXBsb3llckluZm86ZnVuY3Rpb24oKXtyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEIj09CmEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cz8iIiE9PWEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmZvcm1kYXRhLmVtcGxveWVyTmFtZSYmay52YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIoYS5mb3JtZGF0YS5lbXBsb3llclBob25lKTohMH0sdmFsaWRhdGVFbXBsb3llckluZm9WVzpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cztyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEX0ZVTEwiPT1kfHwiRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEX1BBUlQiPT1kPyIiIT09YS5mb3JtZGF0YS5lbXBsb3llck5hbWUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lJiZrLnZhbGlkYXRlUGhvbmVOdW1iZXJFbXBsb3llcihhLmZvcm1kYXRhLmVtcGxveWVyUGhvbmUpOiEwfSx2YWxpZGF0ZUVtcGxveWVySW5mbzI6ZnVuY3Rpb24oKXtyZXR1cm4iIiE9PQphLmZvcm1kYXRhLmVtcGxveWVyTmFtZTImJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lMiYmay52YWxpZGF0ZVBob25lTnVtYmVyRW1wbG95ZXIyKGEuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZTIpfSx2YWxpZGF0ZUVtYWlsOmZ1bmN0aW9uKGQpeyQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6ImNzc09ubHkiLHNjcm9sbFRvOiExfSkuc3RhcnQoKTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0iZW1haWxBZGRyZXNzIl0nKS52YWxpZEVtYWlsQWRkcmVzcygpO3JldHVybiAkLnZhbGlkaXR5LmVuZCgpLnZhbGlkfSx2YWxpZGF0ZUJpcnRoZGF0ZTpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEuYmlydGhkYXRlWWVhcixjPWEuZm9ybWRhdGEuYmlydGhkYXRlTW9udGgsZT1hLmZvcm1kYXRhLmJpcnRoZGF0ZURheTtpZigzMTxlfHwxMjxjfHwxOTAwPmR8fDA+PWV8fDA+PWN8fCIiPT1kfHwiIj09Y3x8IiI9PQplfHw0PmQubGVuZ3RoKXJldHVybiExO2Q9MTg8PWsuY2FsY3VsYXRlQWdlKG5ldyBEYXRlKGQsYy0xLGUpLG5ldyBEYXRlKTthLnNob3dFcnJvciYmKGQ\/JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpOiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNiaXJ0aGRhdGVFcnJvck1zZyIpLnZhbCgpKSk7cmV0dXJuIGR9LGNhbGN1bGF0ZUFnZTpmdW5jdGlvbihkLGMpe3ZhciBlPWMuZ2V0RnVsbFllYXIoKSxmPWMuZ2V0TW9udGgoKTtjPWMuZ2V0RGF0ZSgpO3ZhciBnPWQuZ2V0RnVsbFllYXIoKSxsPWQuZ2V0TW9udGgoKTtkPWQuZ2V0RGF0ZSgpO2UtPWc7Zi09bDtpZigwPmZ8fDA9PWYmJjA+Yy1kKWU9cGFyc2VJbnQoZSktMTtyZXR1cm4gZX0saGFzVXNlcjpmdW5jdGlvbigpe3JldHVybiEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIil9LHVzZXJJZDpmdW5jdGlvbihkKXtkJiYKKC0xPT1kPyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV91c2VySWQiKSxhLnVzZXJJZD0hMSk6KGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcF9mb3JtX3VzZXJJZCIsZCksYS51c2VySWQ9ZCkpO2EudXNlcklkfHwoYS51c2VySWQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIikpO3JldHVybiBhLnVzZXJJZH0scHVzaERhdGFUb1NlcnZlcjpmdW5jdGlvbigpe2lmKCFhLmFqYXhQcm9jZXNzKXthLmFqYXhQcm9jZXNzPSEwO2suc2V0VHJhZGVJbigpO3ZhciBkPWEuZm9ybWRhdGEsYz1hLnN0ZXAsZT0kKGIpLmZpbmQoIi5lbWFpbFN1YmplY3QiKSxmPSQoYikuZmluZCgiLmVtYWlsQm9keSIpO2U9ZS50ZXh0KCk\/ZS50ZXh0KCk6IiI7Zj1mLmh0bWwoKT9mLmh0bWwoKToiIjt2YXIgZz0kKCIjY3VycmVudFN0YXR1cyIpLnZhbCgpO2VtYWlsSGFuZGxlci5ib2R5PWY7ZW1haWxIYW5kbGVyLnN1YmplY3Q9CmU7ay5zZXRFbWFpbEhhbmRsZXJTZW5kKCk7ZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI7IjEiPT11JiYoZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSIpOyIxIj09eCYmKGVtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3RJbnN0YW50Iik7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IkZJTkFOQ0UiO2VtYWlsSGFuZGxlci5pc21vYmlsZXNpdGU9MT09JCgiI2lzbW9iaWxlIikudmFsKCk\/IllFUyI6Ik5PIjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJ1bmRlZmluZWQiPT10eXBlb2YgZz8idXNlZCI6Zy50b0xvd2VyQ2FzZSgpO2VtYWlsSGFuZGxlci5jcmVkaXREYXRhPWQ7Sj1lbWFpbEhhbmRsZXIuZ2V0SnNvbk9iamVjdCgpOyQuYWpheCh7dXJsOiIvIit3KyIvYWpheC9zZXRGaW5hbmNlTXVsdGlzdGVwRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIiwKdHlwZToiUE9TVCIsZGF0YTp7dXNlcklkOmsudXNlcklkKCksZm9ybWRhdGE6ZCxzdGVwOmMsZG9tYWluOlEsc2l0ZUlkOiQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpLGxhbmc6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLGVtYWlsSGFuZGxlckpzb25PYmplY3Q6SlNPTi5zdHJpbmdpZnkoSil9LHN1Y2Nlc3M6ZnVuY3Rpb24obCl7bC5JRCYmbC5pZENoYW5nZWQmJmsudXNlcklkKGwuSUQpfSxjb21wbGV0ZTpmdW5jdGlvbihsKXthLmFqYXhQcm9jZXNzPSExfX0pfX0sb25TaG93RnVuY3Rpb25Ub1J1bjpmdW5jdGlvbigpe2lmKGEub25TaG93RnVuY3Rpb24uaGFzT3duUHJvcGVydHkoInN0ZXAiK2Euc3RlcCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5vblNob3dGdW5jdGlvblsic3RlcCIrYS5zdGVwXS5sZW5ndGgpZm9yKHZhciBkPTA7ZDxhLm9uU2hvd0Z1bmN0aW9uWyJzdGVwIithLnN0ZXBdLmxlbmd0aDtkKyspa1thLm9uU2hvd0Z1bmN0aW9uWyJzdGVwIisKYS5zdGVwXVtkXS5mdW5jXSgpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYilbMF0sYz1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2MuZGlzY29ubmVjdCgpOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzIl0nLGIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm5ldy1wYXNzd29yZCIpfSk7Yy5vYnNlcnZlKGQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiYXV0b2NvbXBsZXRlIl19KTtkPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMYXQiKS52YWwoKTt2YXIgZT0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTG9uZyIpLnZhbCgpO2Q9e2xhdDpkLGxvbmc6ZSxyYWRpdXM6MkU1fTsKJCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MiXScsYikuZ29vZ2xlUGxhY2VzKGQpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlMjpmdW5jdGlvbigpe3ZhciBkPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzMiJdJyxiKVswXSxjPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Yy5kaXNjb25uZWN0KCk7JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLGIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm5ldy1wYXNzd29yZCIpfSk7Yy5vYnNlcnZlKGQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiYXV0b2NvbXBsZXRlIl19KTtkPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMYXQiKS52YWwoKTsKdmFyIGU9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxvbmciKS52YWwoKTtkPXtsYXQ6ZCxsb25nOmUscmFkaXVzOjJFNX07JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3MyIl0nLGIpLmdvb2dsZVBsYWNlcyhkKX0saW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyOmZ1bmN0aW9uKCl7dmFyIGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llciJdJyxiKVswXSxjPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Yy5kaXNjb25uZWN0KCk7JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llciJdJyxiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJuZXctcGFzc3dvcmQiKX0pOwpjLm9ic2VydmUoZCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJhdXRvY29tcGxldGUiXX0pO2Q9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxhdCIpLnZhbCgpO3ZhciBlPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMb25nIikudmFsKCk7ZD17bGF0OmQsbG9uZzplLHJhZGl1czoyRTV9OyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIiXScsYikuZ29vZ2xlUGxhY2VzKGQpfSxpbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIyOmZ1bmN0aW9uKCl7dmFyIGQ9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYilbMF0sYz1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2MuZGlzY29ubmVjdCgpOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIyIl0nLApiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJuZXctcGFzc3dvcmQiKX0pO2Mub2JzZXJ2ZShkLHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImF1dG9jb21wbGV0ZSJdfSk7ZD0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTGF0IikudmFsKCk7dmFyIGU9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxvbmciKS52YWwoKTtkPXtsYXQ6ZCxsb25nOmUscmFkaXVzOjJFNX07JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYikuZ29vZ2xlUGxhY2VzKGQpfSxpbml0QmlydGhkYXRlQ2hhbmdlOmZ1bmN0aW9uKCl7JCgiLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgaW5wdXQiKS5vbigia2V5dXAiLGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoKS5sZW5ndGg9PSQodGhpcykuYXR0cigibWF4bGVuZ3RoIikmJiQodGhpcykucGFyZW50KCkubmV4dCgiLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYiKS5maW5kKCJpbnB1dCIpLnRyaWdnZXIoImZvY3VzIil9KX0sCnZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWU6ZnVuY3Rpb24oKXtpZig3MDxhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXImJjA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLAohMTthLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJig2MD4xMipwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKStwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aCk\/YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDE3PTI5OmEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzLnN0ZXAxNz0yMik7cmV0dXJuITB9LHZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWVWVzpmdW5jdGlvbigpe2lmKCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfVU5FTVBMT1lFRCI9PQphLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXN8fCJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfU1RVREVOVCI9PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cylyZXR1cm4hMDtpZig3MDxhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLAokKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXImJjA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTthLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJig2MD4xMipwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyKStwYXJzZUludChhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aCk\/YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDE3PQoyOTphLm5leHRTdGVwRGVmYXVsdFZhbHVlcy5zdGVwMTc9MjIpO3JldHVybiEwfSx2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lMjpmdW5jdGlvbigpe2lmKDcwPGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXIyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhcjIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhcjIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgyKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMD49YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcjImJjA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoMilyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aDIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksCiExO2Euc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTtyZXR1cm4hMH0sdmFsaWRhdGVOb3RFbXB0eUFkZHJlc3NUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnMmJjA+PWEuZm9ybWRhdGEuYWRkcmVzc19tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLAoiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7YS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTsiMSI9PXgmJgooMjQ+MTIqcGFyc2VJbnQoYS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzKStwYXJzZUludChhLmZvcm1kYXRhLmFkZHJlc3NfbW9udGhzKT9hLm5leHRTdGVwRGVmYXVsdFZhbHVlcy5zdGVwMTI9Mjc6YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDEyPTEzKTtyZXR1cm4hMH0sdmFsaWRhdGVDb25zZW50czpmdW5jdGlvbigpe3JldHVybigiUUMiIT0kKCIjRklOQU5DRV9NVUxUSVNURVBfRGVhbGVyUHJvdmluY2UiLGIpLnZhbCgpfHxhLmZvcm1kYXRhLmNvbnNlbnRBY2NvdW50TW9uaXRvcmluZyYmYS5mb3JtZGF0YS5jb25zZW50Q3JlZGl0QXNzZXNzbWVudCkmJmEuZm9ybWRhdGEuY29uc2VudFZXPyEwOiExfSx2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzczJUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5hZGRyZXNzMl95ZWFycylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzMl95ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5hZGRyZXNzMl9tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3MyX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3MyX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLmFkZHJlc3MyX3llYXJzJiYwPj1hLmZvcm1kYXRhLmFkZHJlc3MyX21vbnRocylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwKIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzMlRpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2Euc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCdbbmFtZT0iYWRkcmVzczJfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikpOwpyZXR1cm4hMH0sdmFsaWRhdGVOb3RFbXB0eU1vbnRobHlJbmNvbWVUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5tb250aGx5SW5jb21lX3llYXJzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI21vbnRobHlJbmNvbWVUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigxMjxhLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLAoiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI21vbnRobHlJbmNvbWVUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfeWVhcnMmJjA+PWEuZm9ybWRhdGEubW9udGhseUluY29tZV9tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI21vbnRobHlJbmNvbWVUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwKITE7YS5zaG93RXJyb3ImJigkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX21vbnRocyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpKTtyZXR1cm4hMH0sdmFsaWRhdGVQaG9uZU51bWJlcjpmdW5jdGlvbihkKXtyZXR1cm4gZCYmKHBob25lPWQucmVwbGFjZSgiKCIsIiIpLnJlcGxhY2UoIikiLCIiKS5yZXBsYWNlKCIgIiwiIikucmVwbGFjZSgiLSIsIiIpLDEwPT1waG9uZS5sZW5ndGgpPygkLnZhbGlkaXR5LnNldHVwKHtvdXRwdXRNb2RlOiJwb3B1cCIsc2Nyb2xsVG86ITF9KS5zdGFydCgpLAokKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbGlkYXRlUGhvbmUoKSwkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKTohMX0sdmFsaWRhdGVQaG9uZU51bWJlckVtcGxveWVyOmZ1bmN0aW9uKGQpe3JldHVybiBkJiYocGhvbmU9ZC5yZXBsYWNlKCIoIiwiIikucmVwbGFjZSgiKSIsIiIpLnJlcGxhY2UoIiAiLCIiKS5yZXBsYWNlKCItIiwiIiksMTA9PXBob25lLmxlbmd0aCk\/KCQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIixzY3JvbGxUbzohMX0pLnN0YXJ0KCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoImlucHV0LmVtcGxveWVyUGhvbmUiKS52YWxpZGF0ZVBob25lKCksJC52YWxpZGl0eS5lbmQoKS52YWxpZCk6ITF9LHZhbGlkYXRlUGhvbmVOdW1iZXJFbXBsb3llcjI6ZnVuY3Rpb24oZCl7cmV0dXJuIGQmJihwaG9uZT1kLnJlcGxhY2UoIigiLCIiKS5yZXBsYWNlKCIpIiwKIiIpLnJlcGxhY2UoIiAiLCIiKS5yZXBsYWNlKCItIiwiIiksMTA9PXBob25lLmxlbmd0aCk\/KCQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIixzY3JvbGxUbzohMX0pLnN0YXJ0KCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoImlucHV0LmVtcGxveWVyUGhvbmUyIikudmFsaWRhdGVQaG9uZSgpLCQudmFsaWRpdHkuZW5kKCkudmFsaWQpOiExfSx2YWxpZGF0ZVNJTjpmdW5jdGlvbihkKXtyZXR1cm4oIjEiPT11JiYiMCI9PUF8fCIxIj09eCkmJiIiPT1kJiYwPD1hLm9wdGlvbmFsU3RlcC5pbmRleE9mKDIyKXx8ZCYmKHNpbj1kLnJlcGxhY2VBbGwoIiAiLCIiKSw5PT1zaW4ubGVuZ3RoKT8hMDohMX0sdmFsaWRhdGVWZWhpY2xlOmZ1bmN0aW9uKCl7dmFyIGQ9ITE7c3dpdGNoKGEuY3VycmVudERlcHQpe2Nhc2UgIlVTRUQiOmQ9IiIhPWEuZm9ybWRhdGEuY3VycmVudE1ha2UmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFllYXImJgoiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXImJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRUcmltJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ7YnJlYWs7Y2FzZSAiTkVXSU5WIjpkPSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXImJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRUcmltJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkO2JyZWFrO2Nhc2UgIk5FVyI6ZD0iIiE9YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50WWVhciYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRUcmltfXJldHVybiBkfSxpbml0VmVoaWNsZVNlbGVjdGlvbjpmdW5jdGlvbigpe2EuaW5pdFZlaGljbGVTZWxlY3Rpb25GaXJzdCYmCigkKCdpbnB1dFtuYW1lPSJmaW5hbmNlTXVsdGlzdGVwRGVwdCJdJyxiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe2xldCBkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZWhpY2xlU2VsZWN0aW9uV3JhcHBlciIpO2QucmVwbGFjZVdpdGgoZC5jbG9uZU5vZGUoITApKTtrLmluaXRWZWhpY2xlU2VsZWN0aW9uKCl9KSxhLmluaXRWZWhpY2xlU2VsZWN0aW9uRmlyc3Q9ITEpOyQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikub2ZmKCJjaGFuZ2UiKTskKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5vZmYoImNoYW5nZSIpOyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikub2ZmKCJjaGFuZ2UiKTsiVVNFRCI9PWEuY3VycmVudERlcHR8fCJORVdJTlYiPT1hLmN1cnJlbnREZXB0PyhtKCJuZXdpbnYiKSwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7IiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkmJihhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0KIiIsYS5mb3JtZGF0YS5jdXJyZW50TW9kZWxUZXh0PSIiLGEuZm9ybWRhdGEuY3VycmVudFRyaW09IiIsYS5mb3JtZGF0YS5jdXJyZW50WWVhcj0iIixhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSIiLGEuZm9ybWRhdGEudmVoaWNsZVByaWNlPSIiLGEuZm9ybWRhdGEuY3VycmVudENhcklkPSIiLGEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyPSIiLGEuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9MTAsay5jaGVja1ZhbGlkaXR5KCksbigibmV3aW52IiwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpKSl9KSwkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpJiYiIiE9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsYikudmFsKCkmJihhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiLGEuZm9ybWRhdGEuY3VycmVudFllYXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0KIiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9IiIsYS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ9IiIsYS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50TWlsZWFnZT0xMCxrLmNoZWNrVmFsaWRpdHkoKSx2KCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtbW9kZWwiKSkpfSksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe2EuZm9ybWRhdGEuY3VycmVudE1ha2U9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1tb2RlbCIpO2EuZm9ybWRhdGEuY3VycmVudFRyaW09JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRZZWFyPQokKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXllYXIiKTthLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtc3R5bGVpZCIpO2EuZm9ybWRhdGEudmVoaWNsZVByaWNlPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtcHJpY2UiKTthLmZvcm1kYXRhLmN1cnJlbnRDYXJJZD0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXZlaGljbGVpZCIpO2EuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtc3RvY2tudW1iZXIiKTthLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLApiKS5hdHRyKCJkYXRhLW1pbGVhZ2UiKTt2YXIgZD0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLWlzbmV3IiksYz0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLWlzZGVtbyIpJiYiMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfREVNT0FTTkVXIl0nLGIpLnZhbCgpO2EuY3VycmVudERlcHQ9IjEiPT1kfHxjPyJORVdJTlYiOiJVU0VEIjtrLmNoZWNrVmFsaWRpdHkoKX0pKToobShhLmN1cnJlbnREZXB0KSwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7IiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkmJihhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0iIixhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbFRleHQ9IiIsYS5mb3JtZGF0YS5jdXJyZW50WWVhcj0iIixhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiLGEuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9CjEwLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9IiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9IiIsay5jaGVja1ZhbGlkaXR5KCksbihhLmN1cnJlbnREZXB0LCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkpKX0pLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7IiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkmJiIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS52YWwoKSYmKGEuZm9ybWRhdGEuY3VycmVudFllYXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50VHJpbT0iIixhLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPTEwLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9IiIsYS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9IiIsay5jaGVja1ZhbGlkaXR5KCkscSgkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIiwKYikuYXR0cigiZGF0YS1tb2RlbCIpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXllYXIiKSkpfSksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe2EuZm9ybWRhdGEuY3VycmVudE1ha2U9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRNb2RlbD0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1tb2RlbCIpO2EuZm9ybWRhdGEuY3VycmVudFllYXI9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEteWVhciIpO2EuZm9ybWRhdGEuY3VycmVudFRyaW09JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS52YWwoKTthLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPTEwO2EuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsCmIpLmF0dHIoImRhdGEtc3R5bGVpZCIpO2EuZm9ybWRhdGEudmVoaWNsZVByaWNlPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtcHJpY2UiKTtrLmNoZWNrVmFsaWRpdHkoKX0pKX0sdmFsaWRhdGVQYXltZW50OmZ1bmN0aW9uKCl7cmV0dXJuIiIhPWEuZm9ybWRhdGEucGF5bWVudFR5cGUmJiIiIT1hLmZvcm1kYXRhLnBheW1lbnRUZXJtJiYiIiE9YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWwmJiIiIT1hLmZvcm1kYXRhLnBheW1lbnRWYWx1ZSYmIiIhPWEuZm9ybWRhdGEucGF5bWVudFJhdGV8fGEuZm9ybWRhdGEubm9QYXltZW50fSxpbml0Q2FsY3VsYXRvcjpmdW5jdGlvbigpe3ZhciBkPSQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IiBzdXIgY2UgIithLmZvcm1kYXRhLmN1cnJlbnRNYWtlKyIgIithLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCsiICIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcjoiIG9uIHRoaXMgIithLmZvcm1kYXRhLmN1cnJlbnRZZWFyKwoiICIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZSsiICIrYS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLm11bHRpc3RlcFBheW1lbnRWZWhpY2xlIixiKS50ZXh0KGQpO2lmKCJORVciPT1hLmN1cnJlbnREZXB0fHwiTkVXSU5WIj09YS5jdXJyZW50RGVwdCl7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoIiIpO2EuY2FsY3VsYXRvckZ1bmN0aW9ucz1uZXcgY2FsY3VsYXRvckZ1bmN0aW9ucygiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIik7ZD0iTkVXSU5WIj09YS5jdXJyZW50RGVwdDtsZXQgZT0iZmluYW5jaW5nIixmPTAsZz0wLGw9JCgnaW5wdXRbbmFtZT0iQURNSU5fU0hPV19MT1dFU1RfUEFZTUVOVF9JTlRFUlZBTCJdJykudmFsKCk7dmFyIGM9MkU0O0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYoYz1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLAplPSJ1bmRlZmluZWQiIT1jWzBdP2NbMF06ZSxmPWNbMV0sZz1wYXJzZUludChjWzRdKXx8MCxsPWNbMl0sYz1jWzNdKTthLmNhbGN1bGF0b3JGdW5jdGlvbnMuaW5pdChhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkLGUsZywwLGwsYyxkLGEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyKTskKCJib2R5Iikub2ZmKCJjaGFuZ2UiLCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgIycrYlswXS5pZCsnICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0nKTskKCJib2R5Iikub2ZmKCJub1BheW1lbnQiLCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKTskKCJib2R5Iikub2ZmKCJwYXltZW50c1JlYWR5IiwiIyIrYlswXS5pZCsKIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpOyQoImJvZHkiKS5vbigibm9QYXltZW50IiwiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixmdW5jdGlvbigpe2EuZm9ybWRhdGEubm9QYXltZW50PSEwO2EubmV4dCghMCl9KTskKCJib2R5Iikub24oImNoYW5nZSIsIiMiK2JbMF0uaWQrJyAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0IGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdLCAjJytiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXScsZnVuY3Rpb24oKXt2YXIgcD0iZmluYW5jaW5nIj09YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnBheW1lbnRUeXBlPyQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IkZpbmFuY2VtZW50IjoiRmluYW5jaW5nIjoibGVhc2luZyI9PQphLmNhbGN1bGF0b3JGdW5jdGlvbnMucGF5bWVudFR5cGU\/JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iTG9jYXRpb24iOiJMZWFzaW5nIjoiIjthLmZvcm1kYXRhLnBheW1lbnRUeXBlPXA7YS5mb3JtZGF0YS5wYXltZW50VHlwZVJlYWw9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnBheW1lbnRUeXBlO2EuZm9ybWRhdGEucGF5bWVudFRlcm09JCh0aGlzKS52YWwoKTthLmZvcm1kYXRhLnBheW1lbnRSYXRlVHlwZT0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZXR5cGUiKTtwPSQodGhpcykuY2xvc2VzdCgiLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIikuZmluZCgnLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXVt2YWx1ZT0iJythLmZvcm1kYXRhLnBheW1lbnRUZXJtKyciXVtkYXRhLXJhdGV0eXBlPSInK2EuZm9ybWRhdGEucGF5bWVudFJhdGVUeXBlKyciXScpO3ZhciByO2EuZm9ybWRhdGEucGF5bWVudFJlc2lkdWFsVmFsdWU9Cm51bGwhPShyPXAuYXR0cigiZGF0YS1yZXNpZHVhbCIpKT9yOiQodGhpcykuYXR0cigiZGF0YS1yZXNpZHVhbCIpO3ZhciB0O2EuZm9ybWRhdGEucGF5bWVudFZhbHVlPW51bGwhPSh0PXAuYXR0cigiZGF0YS1yZWFscGF5bWVudCIpKT90OiQodGhpcykuYXR0cigiZGF0YS1yZWFscGF5bWVudCIpO3ZhciBHO2EuZm9ybWRhdGEuYmFzZXBheW1lbnQ9bnVsbCE9KEc9cC5hdHRyKCJkYXRhLWJhc2VwYXltZW50IikpP0c6JCh0aGlzKS5hdHRyKCJkYXRhLWJhc2VwYXltZW50Iik7YS5mb3JtZGF0YS5wYXltZW50VG90YWxJbmNlbnRpdmU9cC5hdHRyKCJkYXRhLXRvdGFsaW5jZW50aXZlIik7YS5mb3JtZGF0YS5wYXltZW50R1NUPXAuYXR0cigiZGF0YS1nc3QiKTthLmZvcm1kYXRhLnBheW1lbnRIU1Q9cC5hdHRyKCJkYXRhLWhzdCIpO2EuZm9ybWRhdGEucGF5bWVudFBTVD1wLmF0dHIoImRhdGEtcHN0Iik7YS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPXAuYXR0cigiZGF0YS1pbml0aWFsUHJpY2UiKTsKYS5mb3JtZGF0YS52ZWhpY2xlRmluYWxQcmljZT1wLmF0dHIoImRhdGEtZmluYWxQcmljZSIpO3ZhciBIO2EuZm9ybWRhdGEucGF5bWVudEZlZXNMaXN0PW51bGwhPShIPUpTT04ucGFyc2UoYXRvYihwLmF0dHIoImRhdGEtZmVlc0xpc3QiKSkpKT9IOltdO3I9MDtmb3IodmFyIE4gb2YgYS5mb3JtZGF0YS5wYXltZW50RmVlc0xpc3Qpcis9Ti5hbW91bnR8fDA7YS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9cjt2YXIgSTthLmZvcm1kYXRhLnBheW1lbnRJbmNlbnRpdmVzTGlzdD1udWxsIT0oST1KU09OLnBhcnNlKGF0b2IocC5hdHRyKCJkYXRhLWluY2VudGl2ZXNMaXN0IikpKSk\/STpbXTthLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD1hLmNhbGN1bGF0b3JGdW5jdGlvbnMuZG93bnBheW1lbnR8fDA7YS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLmttQWxsb3dhbmNlO2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsPWEuY2FsY3VsYXRvckZ1bmN0aW9ucy5wYXltZW50RnJlcXVlbmN5OwphLmZvcm1kYXRhLnBheW1lbnRSYXRlPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7YS5mb3JtZGF0YS50cmFkZUluVmFsdWU9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnRyYWRlSW5WYWx1ZTtyPShwYXJzZUludChhLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudCl8fDApKyhwYXJzZUludChhLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSl8fDApO0Nvb2tpZXMuc2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIsYS5mb3JtZGF0YS5wYXltZW50VHlwZVJlYWwrIi0iK2EuZm9ybWRhdGEucGF5bWVudFRlcm0rIi0iK2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsKyItIithLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZSsiLSIrcixudWxsLCIvIik7Ik5FV0NBUlMiIT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiVVNFRENBUlMiIT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiZnVuY3Rpb24iPT10eXBlb2YgY2hhbmdlUGFnZVBheW1lbnRWYWx1ZSYmCihJPSQodGhpcykuYXR0cigiZGF0YS1yZWFscGF5bWVudCIpLE49JCh0aGlzKS5hdHRyKCJkYXRhLXRvdGFsaW50ZXJlc3QiKSxwPSQodGhpcykuYXR0cigiZGF0YS1sdXhlVGF4QW1vdW50Iikscj1yLnRvRml4ZWQoMCksdD0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZXR5cGUiKSxHPSQodGhpcykuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIiksSD0kKHRoaXMpLmF0dHIoImRhdGEtdG90YWxDb3N0IiksY2hhbmdlUGFnZVBheW1lbnRWYWx1ZSh7Y3VycmVudFBheW1lbnQ6SSxjdXJyZW50UmF0ZTphLmZvcm1kYXRhLnBheW1lbnRSYXRlLHBheW1lbnRUZXJtOmEuZm9ybWRhdGEucGF5bWVudFRlcm0scGF5bWVudFR5cGU6YS5mb3JtZGF0YS5wYXltZW50VHlwZVJlYWwscGF5bWVudEludGVydmFsOmEuZm9ybWRhdGEucGF5bWVudEludGVydmFsLHBheW1lbnREb3duUGF5bWVudDpyLHRvdGFsSW50ZXJlc3Q6TixsdXhlVGF4QW1vdW50OnAscmF0ZVR5cGU6dCxlZmZlY3RpdmVSYXRlOkcsdG90YWxDb3N0Okh9KSwKJCgiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIikudHJpZ2dlcigicGF5bWVudENoYW5nZWQiKSk7ay5jaGVja1ZhbGlkaXR5KCl9KTskKCJib2R5Iikub24oInBheW1lbnRzUmVhZHkiLCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGZ1bmN0aW9uKCl7Zj1hLmZvcm1kYXRhLnBheW1lbnRUZXJtP2EuZm9ybWRhdGEucGF5bWVudFRlcm06Zj9mOjA7MCE9ZiYmMDwkKCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytmKyciXScpLmxlbmd0aD8kKCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytmKyciXScpLmF0dHIoImNoZWNrZWQiLCJjaGVja2VkIikudHJpZ2dlcigiY2hhbmdlIik6CihhLmZvcm1kYXRhLnBheW1lbnRUeXBlPSIiLGEuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPSIiLGEuZm9ybWRhdGEucGF5bWVudFRlcm09IiIsYS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGU9IiIsYS5mb3JtZGF0YS5wYXltZW50UmVzaWR1YWxWYWx1ZT0iIixhLmZvcm1kYXRhLnBheW1lbnRWYWx1ZT0iIixhLmZvcm1kYXRhLnZlaGljbGVJbml0aWFsUHJpY2U9IiIsYS5mb3JtZGF0YS52ZWhpY2xlRmluYWxQcmljZT0iIixhLmZvcm1kYXRhLnBheW1lbnRGZWVzTGlzdD1bXSxhLmZvcm1kYXRhLnBheW1lbnRJbmNlbnRpdmVzTGlzdD1bXSxhLmZvcm1kYXRhLmJhc2VwYXltZW50PSIiLGEuZm9ybWRhdGEucGF5bWVudFRvdGFsSW5jZW50aXZlPTAsYS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9MCxhLmZvcm1kYXRhLnBheW1lbnRHU1Q9MCxhLmZvcm1kYXRhLnBheW1lbnRIU1Q9MCxhLmZvcm1kYXRhLnBheW1lbnRQU1Q9MCxhLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD0wLAphLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZT0wLGEuZm9ybWRhdGEucGF5bWVudEludGVydmFsPSIiLGEuZm9ybWRhdGEucGF5bWVudFJhdGU9IiIsYS5mb3JtZGF0YS50cmFkZUluVmFsdWU9IiIsay5jaGVja1ZhbGlkaXR5KCkpOyQoIi5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciIsYikuc2hvdygpfSk7c2V0VGltZW91dCgoKT0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQ3RhVHJhY2smJkN0YVRyYWNrLmdldFRyYWNrU3RlcCgiUGF5bWVudENhbGN1bGF0b3JBY3Rpb25Cb3giKSl7bGV0IHA9bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiUGF5bWVudENhbGN1bGF0b3JBY3Rpb25Cb3giLGZvcmNlVXBkYXRlOiEwLG9uQ29tcGxldGU6cj0+e3IuZGF0YXNldC5jb21wbF90eHRfZnI9ci5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEZyWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IiwKY3RhUGF5bWVudFRleHRGclsxXSk7ci5kYXRhc2V0LmNvbXBsX3R4dF9lbj1yLmRhdGFzZXQuaW5pdF9jb21wbF90eHRfZW4ucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLGN0YVBheW1lbnRUZXh0RW5bMF0pLnJlcGxhY2UoInskUEFZTUVOVFlQRX0iLGN0YVBheW1lbnRUZXh0RW5bMV0pO3I9e3BheW1lbnQ6e319O19sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIikmJihyPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgicmV0YWlsX3RyYWNrX2RhdGEiKSkpO2xldCB0PSJGUkVOQ0giPT09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpP2N0YVBheW1lbnRUZXh0RnI6Y3RhUGF5bWVudFRleHRFbjtyLnBheW1lbnQ9e2xpc3RQcmljZTp0WzJdfHwiIixwYXltZW50OnRbMF18fCIiLHJhdGU6dFsxXXx8IiIscGF5bWVudFZhbHVlOmN0YVBheW1lbnRWYWx1ZXN8fFtdfTtfbG9jYWxTdG9yYWdlU2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIsSlNPTi5zdHJpbmdpZnkociksCjMwKTtDb29raWVzLnNldCgiY3RhX2RhdGFfdmFsaWQiLDEsMSwiLyIpfX19KTskKCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKS5vbigicGF5bWVudENoYW5nZWQiLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChwKX0pfX0sMTAwKX1lbHNlICQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCIiKSx5KGEuZm9ybWRhdGEuY3VycmVudENhcklkKX0saW5pdEVtYWlsOmZ1bmN0aW9uKCl7ay5jaGVja1ZhbGlkaXR5KCl9LGluaXRQaG9uZTpmdW5jdGlvbigpe2suY2hlY2tWYWxpZGl0eSgpfSxpbml0Q29uc2VudDpmdW5jdGlvbigpe2xldCBkPSIvIit3KyIvbXVsdGlzdGVwSW5zdGFudENvbnNlbnQuaHRtbCI7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2NvbnNlbnRfdGV4dF9kaXYiLGIpLmF0dHIoInNyYyIsZCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKGMpeyhjLm9yaWdpbj13aW5kb3cubG9jYXRpb24ub3JpZ2luKSYmCiJjb25zZW50SWZyYW1lQm90dG9tIj09PWMuZGF0YSYmJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudCIsYikuYWRkQ2xhc3MoImlzVmFsaWQiKX0sITEpfSx2YWxpZGF0ZUNvbnNlbnQ6ZnVuY3Rpb24oKXtpZigkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbl9jb25zZW50IixiKS5oYXNDbGFzcygiaXNWYWxpZCIpKXJldHVybiBhLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD0kKCIjd29ya2luZ1doaWxlSW5TY2hvb2xfeWVzIixiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpLCEwO2EuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0PSQoIiN3b3JraW5nV2hpbGVJblNjaG9vbF9ubyIsYikuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKTtyZXR1cm4hMX0sdmFsaWRhdGVDaGVja2VkQ3JlZGl0QnVyZWF1OmZ1bmN0aW9uKGQpe2lmKCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIiwKYikuZmluZCgnaW5wdXRbbmFtZT0iY3JlZGl0QnVyZWF1Q29uc2VudCJdJykuaXMoIjpjaGVja2VkIikpcmV0dXJuIGEuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0PSQoIiN3b3JraW5nV2hpbGVJblNjaG9vbF95ZXMiLGIpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIiksITA7YS5mb3JtZGF0YS5jcmVkaXRCdXJlYXVDcmVkaXQ9JCgiI3dvcmtpbmdXaGlsZUluU2Nob29sX25vIixiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpO3JldHVybiExfSx2YWxpZGF0ZU1vcmVUaGFuWmVybzpmdW5jdGlvbihkKXtyZXR1cm4gMDxkfSxzZW5kRW1haWw6ZnVuY3Rpb24oKXt2YXIgZD0kKGIpLmZpbmQoIi5lbWFpbFN1YmplY3QiKSxjPSQoYikuZmluZCgiLmVtYWlsQm9keSIpO2Q9ZC50ZXh0KCk\/ZC50ZXh0KCk6IiI7Yz1jLmh0bWwoKT9jLmh0bWwoKToiIjtpZihkJiZjKXt2YXIgZT0kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKTsKIiIhPWEuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbyYmKGUrPSIgKCIrYS5mb3JtZGF0YS5lbXBsb3ltZW50QWRkZWRJbmZvKyIpIik7Yz1jLnJlcGxhY2UoInskQk9EWVRZUEV9IixhLmZvcm1kYXRhLnZlaGljbGVUeXBlPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLnZlaGljbGVUeXBlKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRUSVRMRX0iLGEuZm9ybWRhdGEudGl0bGU\/YS5mb3JtZGF0YS50aXRsZToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRGSVJTVE5BTUV9IixhLmZvcm1kYXRhLmZpcnN0TmFtZSk7Yz1jLnJlcGxhY2UoInskTEFTVE5BTUV9IixhLmZvcm1kYXRhLmxhc3ROYW1lKTtjPWMucmVwbGFjZSgieyRFTUFJTH0iLGEuZm9ybWRhdGEuZW1haWxBZGRyZXNzKTtjPWMucmVwbGFjZSgieyRQSE9ORU5VTUJFUn0iLGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpO2M9Yy5yZXBsYWNlKCJ7JEJJUlRIREFZfSIsCmEuZm9ybWRhdGEuYmlydGhkYXRlRGF5KyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZU1vbnRoKyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZVllYXIpO2M9Yy5yZXBsYWNlKCJ7JEJVREdFVH0iLGEuZm9ybWRhdGEuYnVkZ2V0PyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmJ1ZGdldCsnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVExZRFJJVklOR30iLGEuZm9ybWRhdGEuY3VycmVudGx5RHJpdmluZz8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5jdXJyZW50bHlEcml2aW5nKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5URVNUSU1BVEVEQ1JFRElUUkFUSU5HfSIsYS5mb3JtZGF0YS5jcmVkaXRSYXRpbmc\/JCgnW3ZhbHVlPSInK2EuZm9ybWRhdGEuY3JlZGl0UmF0aW5nKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTsKYz1jLnJlcGxhY2UoInskSU5URVJFU1RFRERPV05PUFRJT059IixhLmZvcm1kYXRhLmRvd25PcHRpb25zPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmRvd25PcHRpb25zKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UQUREUkVTU30iLGEuZm9ybWRhdGEuYWRkcmVzcyk7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVFJFU0lERU5DRVRZUEV9IiwkKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5yZW50T3JPd24rJyInKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UT0NDVVBBVElPTkxFTkdUSH0iLGEuZm9ybWRhdGEuYWRkcmVzc195ZWFycysiICIrJCgiI0ZJTkFOQ0VfRk9STV9BRERSRVNTX1RJTUVTX1lFQVJTIikudmFsKCkrIiAiK2EuZm9ybWRhdGEuYWRkcmVzc19tb250aHMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fQUREUkVTU19USU1FU19NT05USFMiKS52YWwoKSk7CnZhciBmPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9EZWFsZXJQcm92aW5jZSIsYikudmFsKCk7Yz1FJiYiUUMiPT1mP2MucmVwbGFjZSgieyRDVVJSRU5UTU9OVEhMWVJFTlR9IiwiJCIrYS5mb3JtZGF0YS5tb250aGx5UGF5bWVudCsiIC0tIERpc2J1cnNlbWVudDogJCIrYS5mb3JtZGF0YS5tb250aGx5RGlzYnVyc2VtZW50KTpjLnJlcGxhY2UoInskQ1VSUkVOVE1PTlRITFlSRU5UfSIsIiQiK2EuZm9ybWRhdGEubW9udGhseVBheW1lbnQpO2M9Yy5yZXBsYWNlKCJ7JENVUlJFTlRPQ0NVUEFUSU9OfSIsZSk7Yz1jLnJlcGxhY2UoInskV09SS0lOR1dISUxFSU5TQ0hPT0x9IiwiIiE9YS5mb3JtZGF0YS53b3JraW5nV2hpbGVJblNjaG9vbD8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS53b3JraW5nV2hpbGVJblNjaG9vbCsnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVElOQ09NRVNPVVJDRX0iLCIiIT1hLmZvcm1kYXRhLm90aGVyRW1wbG95bWVudFN0YXR1cz8KJCgnW3ZhbHVlPSInK2EuZm9ybWRhdGEub3RoZXJFbXBsb3ltZW50U3RhdHVzKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UTU9OVExZSU5DT01FfSIsIiQiK2EuZm9ybWRhdGEubW9udGhseUluY29tZSk7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVE1PTlRITFlJTkNPTUVMRU5HVEh9IixhLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfeWVhcnMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fTU9OVEhMWV9JTkNPTUVfVElNRVNfWUVBUlMiKS52YWwoKSsiICIrYS5mb3JtZGF0YS5tb250aGx5SW5jb21lX21vbnRocysiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19NT05USFMiKS52YWwoKSk7IiIhPWEuZm9ybWRhdGEuYWRkcmVzczI\/KGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTQUREUkVTU30iLGEuZm9ybWRhdGEuYWRkcmVzczIpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTT0NDVVBBVElPTkxFTkdUSH0iLAphLmZvcm1kYXRhLmFkZHJlc3MyX3llYXJzKyIgIiskKCIjRklOQU5DRV9GT1JNX0FERFJFU1NfVElNRVNfWUVBUlMiKS52YWwoKSsiICIrYS5mb3JtZGF0YS5hZGRyZXNzMl9tb250aHMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fQUREUkVTU19USU1FU19NT05USFMiKS52YWwoKSksYz1jLnJlcGxhY2UoIiMjUFJFVklPVVNBRERSRVNTSU5GT1NUQVJUIyMiLCIiKSxjPWMucmVwbGFjZSgiIyNQUkVWSU9VU0FERFJFU1NJTkZPRU5EIyMiLCIiKSk6Yz1jLnJlcGxhY2UoLyMjUFJFVklPVVNBRERSRVNTSU5GT1NUQVJUIyNbXHNcU10qIyNQUkVWSU9VU0FERFJFU1NJTkZPRU5EIyMvLCIiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UTUFLRX0iLCIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlP2EuZm9ybWRhdGEuY3VycmVudE1ha2U6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVE1PREVMfSIsIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsP2EuZm9ybWRhdGEuY3VycmVudE1vZGVsOgoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UWUVBUn0iLCIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyP2EuZm9ybWRhdGEuY3VycmVudFllYXI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVFNUT0NLTlVNQkVSfSIsIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyP2EuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JGNyZWRpdEJ1cmVhdUNyZWRpdH0iLCIiIT1hLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD9hLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdDoiTk8iKTtjPWMucmVwbGFjZSgieyRTSU59IiwiIiE9YS5mb3JtZGF0YS5TSU4\/YS5mb3JtZGF0YS5TSU46InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQURERURJTkZPfSIsIiIhPWEuZm9ybWRhdGEuYWRkZWRJbmZvP2EuZm9ybWRhdGEuYWRkZWRJbmZvOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JEVNUExPWUVSfSIsCiIiIT1hLmZvcm1kYXRhLmVtcGxveWVyTmFtZT9hLmZvcm1kYXRhLmVtcGxveWVyTmFtZToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRFTVBMT1lFUlBIT05FfSIsIiIhPWEuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZT9hLmZvcm1kYXRhLmVtcGxveWVyUGhvbmU6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskRU1QTE9ZRU1FTlRTVEFUVVNUSU1FfSIsYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcisiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aCsiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19NT05USFMiKS52YWwoKSk7Yz1jLnJlcGxhY2UoInskRU1QTE9ZRVJBRERSRVNTfSIsIiIhPWEuZm9ybWRhdGEuYWRkcmVzc0VtcGxveWVyP2EuZm9ybWRhdGEuYWRkcmVzc0VtcGxveWVyOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JENPTlNFTlRBQ0NPVU5UTU9OSVRPUklOR30iLAoiIiE9YS5mb3JtZGF0YS5jb25zZW50QWNjb3VudE1vbml0b3Jpbmc\/MT09YS5mb3JtZGF0YS5jb25zZW50QWNjb3VudE1vbml0b3Jpbmc\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDT05TRU5UQ1JFRElUQVNTRVNTTUVOVH0iLCIiIT1hLmZvcm1kYXRhLmNvbnNlbnRDcmVkaXRBc3Nlc3NtZW50PzE9PWEuZm9ybWRhdGEuY29uc2VudENyZWRpdEFzc2Vzc21lbnQ\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDT05TRU5UUElQRURBfSIsIiIhPWEuZm9ybWRhdGEuY29uc2VudFBpcGVkYT8xPT1hLmZvcm1kYXRhLmNvbnNlbnRQaXBlZGE\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDT05TRU5UQ0FTTH0iLCIiIT1hLmZvcm1kYXRhLmNvbnNlbnRDYXNsPzE9PWEuZm9ybWRhdGEuY29uc2VudENhc2w\/IllFUyI6Ik5PIjoicmVtb3ZlZW1wdHkiKTsiIiE9YS5mb3JtZGF0YS5lbXBsb3llck5hbWUyPyhlPQokKCdbdmFsdWU9IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRCJdJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKSwiIiE9YS5mb3JtZGF0YS5lbXBsb3ltZW50QWRkZWRJbmZvMiYmKGUrPSIgKCIrYS5mb3JtZGF0YS5lbXBsb3ltZW50QWRkZWRJbmZvMisiKSIpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTT0NDVVBBVElPTn0iLGUpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTRU1QTE9ZRVJ9IiwiIiE9YS5mb3JtZGF0YS5lbXBsb3llck5hbWUyP2EuZm9ybWRhdGEuZW1wbG95ZXJOYW1lMjoicmVtb3ZlZW1wdHkiKSxjPWMucmVwbGFjZSgieyRQUkVWSU9VU0VNUExPWUVSUEhPTkV9IiwiIiE9YS5mb3JtZGF0YS5lbXBsb3llclBob25lMj9hLmZvcm1kYXRhLmVtcGxveWVyUGhvbmUyOiJyZW1vdmVlbXB0eSIpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTRU1QTE9ZRU1FTlRTVEFUVVNUSU1FfSIsYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcjIrIiAiKwokKCIjRklOQU5DRV9GT1JNX01PTlRITFlfSU5DT01FX1RJTUVTX1lFQVJTIikudmFsKCkrIiAiK2EuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoMisiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19NT05USFMiKS52YWwoKSksYz1jLnJlcGxhY2UoInskUFJFVklPVVNFTVBMT1lFUkFERFJFU1N9IiwiIiE9YS5mb3JtZGF0YS5hZGRyZXNzRW1wbG95ZXIyP2EuZm9ybWRhdGEuYWRkcmVzc0VtcGxveWVyMjoicmVtb3ZlZW1wdHkiKSxjPWMucmVwbGFjZSgiIyNQUkVWSU9VU09DQ1VQQVRJT05TVEFSVCMjIiwiIiksYz1jLnJlcGxhY2UoIiMjUFJFVklPVVNPQ0NVUEFUSU9ORU5EIyMiLCIiKSk6Yz1jLnJlcGxhY2UoLyMjUFJFVklPVVNPQ0NVUEFUSU9OU1RBUlQjI1tcc1xTXSojI1BSRVZJT1VTT0NDVVBBVElPTkVORCMjLywiIik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVFRZUEV9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50VHlwZT9hLmZvcm1kYXRhLnBheW1lbnRUeXBlOgoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRQQVlNRU5UVEVSTX0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRUZXJtP2EuZm9ybWRhdGEucGF5bWVudFRlcm06InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVERPV05QQVlNRU5UfSIsIiIhPWEuZm9ybWRhdGEucGF5bWVudERvd25QYXltZW50P2EuZm9ybWRhdGEucGF5bWVudERvd25QYXltZW50OiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JFBBWU1FTlRJTlRFUlZBTH0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbD9hLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbDoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRQQVlNRU5US01BTExPV0FOQ0V9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U\/YS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVFZBTFVFfSIsIiIhPWEuZm9ybWRhdGEucGF5bWVudFZhbHVlPwphLmZvcm1kYXRhLnBheW1lbnRWYWx1ZToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRSYXRlP2EuZm9ybWRhdGEucGF5bWVudFJhdGU6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskTk9QQVlNRU5UfSIsYS5mb3JtZGF0YS5ub1BheW1lbnQ\/IiI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1JFRElUREVDSVNJT059IixhLmNyZWRpdERlY2lzaW9uSFRNTD9hLmNyZWRpdERlY2lzaW9uSFRNTDoicmVtb3ZlZW1wdHkiKTsiIiE9YS5mb3JtZGF0YS50cmFkZUluVmFsdWU\/KGM9Yy5yZXBsYWNlKCJ7JFRSQURFTUFLRX0iLGEuZm9ybWRhdGEudHJhZGVJbk1ha2UpLGM9Yy5yZXBsYWNlKCJ7JFRSQURFTU9ERUx9IixhLmZvcm1kYXRhLnRyYWRlSW5Nb2RlbCksYz1jLnJlcGxhY2UoInskVFJBREVZRUFSfSIsYS5mb3JtZGF0YS50cmFkZUluVHJpbSksYz1jLnJlcGxhY2UoInskVFJBREVUUklNfSIsYS5mb3JtZGF0YS50cmFkZUluWWVhciksCmM9Yy5yZXBsYWNlKCJ7JFRSQURFVkFMVUV9IixhLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSksYz1jLnJlcGxhY2UoIiMjVFJBREVJTklORk9TVEFSVCMjIiwiIiksYz1jLnJlcGxhY2UoIiMjVFJBREVJTklORk9FTkQjIyIsIiIpKTpjPWMucmVwbGFjZSgvIyNUUkFERUlOSU5GT1NUQVJUIyNbXHNcU10qIyNUUkFERUlOSU5GT0VORCMjLywiIik7Yz1rLmVtYWlsQm9keUZvck11bHRpRGVhbGVyKGMpO2JvZHlMb3dlcj1jLnRvTG93ZXJDYXNlKCk7Zm9yKGU9MDstMTxib2R5TG93ZXIuaW5kZXhPZigicmVtb3ZlZW1wdHkiKTspe3Bvcz1ib2R5TG93ZXIuaW5kZXhPZigicmVtb3ZlZW1wdHkiKTtpZigtMT09cG9zKWJyZWFrO3JwbEVuZD1ib2R5TG93ZXIuaW5kZXhPZigiPGJyPiIscG9zKTtycGxTdGFydD1ib2R5TG93ZXIubGFzdEluZGV4T2YoIjxicj4iLHBvcyk7aWYoLTE9PXJwbEVuZHx8LTE9PXJwbFN0YXJ0KWJyZWFrO3JwbFN0cmluZz1jLnN1YnN0cmluZyhycGxTdGFydCxycGxFbmQpOwpjPWMucmVwbGFjZShycGxTdHJpbmcsIiIpO2JvZHlMb3dlcj1jLnRvTG93ZXJDYXNlKCk7ZSsrO2lmKDUwPGUpYnJlYWt9ZW1haWxIYW5kbGVyLnN1YmplY3Q9ZDtlbWFpbEhhbmRsZXIuYm9keT1jO2suc2V0RW1haWxIYW5kbGVyU2VuZCgpO2VtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiOyIxIj09dSYmKGVtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QybmRDaGFuY2UiKTsiMSI9PXgmJihlbWFpbEhhbmRsZXIubWFpbElEPSJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0SW5zdGFudCIpO2VtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJGSU5BTkNFIjtlbWFpbEhhbmRsZXIuaXNtb2JpbGVzaXRlPTE9PSQoIiNpc21vYmlsZSIpPyJZRVMiOiJOTyI7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1hLmZvcm1kYXRhLmVtYWlsQWRkcmVzcztlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1hLmZvcm1kYXRhLmZpcnN0TmFtZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPQphLmZvcm1kYXRhLmxhc3ROYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9YS5mb3JtZGF0YS5waG9uZU51bWJlcjtlbWFpbEhhbmRsZXIuY29udGFjdEFkZHJlc3M9YS5mb3JtZGF0YS5hZGRyZXNzO2VtYWlsSGFuZGxlci5jb250YWN0QmlydGg9YS5mb3JtZGF0YS5iaXJ0aGRhdGVEYXkrIi8iK2EuZm9ybWRhdGEuYmlydGhkYXRlTW9udGgrIi8iK2EuZm9ybWRhdGEuYmlydGhkYXRlWWVhcjtlbWFpbEhhbmRsZXIuc2FsZXNEZXB0PWEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdDtlbWFpbEhhbmRsZXIubWFrZT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlO2VtYWlsSGFuZGxlci5tb2RlbD1hLmZvcm1kYXRhLmN1cnJlbnRNb2RlbDtlbWFpbEhhbmRsZXIueWVhcj1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj1hLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcjtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudEJ5U3RvY2s9ITE7ZW1haWxIYW5kbGVyLnNraXBHZW9Mb2M9CiEwO2VtYWlsSGFuZGxlci5wYXJ0aWFsPSExO2VtYWlsSGFuZGxlci5jYWxsYmFjaz1mdW5jdGlvbihnKXtnP2suc2V0RmluYW5jZUZvcm1TdGF0dXNUb1NlbnQoKTpjb25zb2xlLmxvZyhnKX07ZW1haWxIYW5kbGVyLnNlbmRNYWlsKCExKX19LHNldEZpbmFuY2VGb3JtU3RhdHVzVG9TZW50OmZ1bmN0aW9uKCl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L3NldEZpbmFuY2VNdWx0aXN0ZXBEYXRhU3RhdHVzVG9TZW50P3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLHR5cGU6IlBPU1QiLGRhdGE6e3VzZXJJZDprLnVzZXJJZCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2xldCBjPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IkZpbmFuY2VBY3Rpb25Cb3gifX0pO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoYyk7aWYoIlNVQ0NFU1MiPT1kfHxudWxsPT09ZClhLnN0ZXA9MjEsay51c2VySWQoLTEpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIpLAokKGRvY3VtZW50LmJvZHkpLnRyaWdnZXIoIm11bHRpRm9ybUZpbmFuY2VTdWJtaXQiKX19KX0scmVzZXRGb3JtOmZ1bmN0aW9uKCl7YS5mb3JtZGF0YT17dmVoaWNsZVR5cGU6IiIsYnVkZ2V0OiIiLGN1cnJlbnRseURyaXZpbmc6IiIsZW1haWxBZGRyZXNzOiIiLGNyZWRpdFJhdGluZzoiIixkb3duT3B0aW9uczoiIixiaXJ0aGRhdGVZZWFyOiIiLGJpcnRoZGF0ZU1vbnRoOiIiLGJpcnRoZGF0ZURheToiIixhZGRyZXNzOiIiLHNwbGl0QWRkcmVzczpbXSxhZGRyZXNzX3llYXJzOjAsYWRkcmVzc19tb250aHM6MCxhZGRyZXNzMjoiIixzcGxpdEFkZHJlc3MyOltdLGFkZHJlc3MyX3llYXJzOjAsYWRkcmVzczJfbW9udGhzOjAsYWRkcmVzc0VtcGxveWVyOiIiLHNwbGl0QWRkcmVzc0VtcGxveWVyOltdLHJlbnRPck93bjoiIixtb250aGx5UGF5bWVudDowLG1vbnRobHlEaXNidXJzZW1lbnQ6MCxlbXBsb3ltZW50U3RhdHVzOiIiLGVtcGxveW1lbnRBZGRlZEluZm86IiIsZW1wbG95ZXJOYW1lOiIiLAplbXBsb3llclBob25lOiIiLGVtcGxveW1lbnRTdGF0dXNZZWFyOjAsZW1wbG95bWVudFN0YXR1c01vbnRoOjAsZW1wbG95bWVudEFkZGVkSW5mbzI6IiIsZW1wbG95ZXJOYW1lMjoiIixlbXBsb3llclBob25lMjoiIixlbXBsb3ltZW50U3RhdHVzWWVhcjI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGgyOjAsYWRkcmVzc0VtcGxveWVyMjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjI6W10sd29ya2luZ1doaWxlSW5TY2hvb2w6IiIsb3RoZXJFbXBsb3ltZW50U3RhdHVzOiIiLG1vbnRobHlJbmNvbWU6MCxtb250aGx5SW5jb21lX3llYXJzOjAsbW9udGhseUluY29tZV9tb250aHM6MCx0aXRsZToiIixmaXJzdE5hbWU6IiIsbGFzdE5hbWU6IiIscGhvbmVOdW1iZXI6IiIsY3VycmVudE1ha2U6IiIsY3VycmVudE1vZGVsOiIiLGN1cnJlbnRNb2RlbFRleHQ6IiIsY3VycmVudFllYXI6IiIsY3VycmVudFN0b2NrTnVtYmVyOiIiLGN1cnJlbnRNaWxlYWdlOjEwLGN1cnJlbnRUcmltOiIiLGN1cnJlbnRTdHlsZWlkOiIiLApjdXJyZW50Q2FySWQ6IiIscGF5bWVudFR5cGU6IiIscGF5bWVudFR5cGVSZWFsOiIiLHBheW1lbnRUZXJtOiIiLHBheW1lbnRSYXRlVHlwZToiIixwYXltZW50VmFsdWU6IiIsYmFzZXBheW1lbnQ6IiIscGF5bWVudFRvdGFsSW5jZW50aXZlOjAscGF5bWVudFRvdGFsRmVlOjAscGF5bWVudEdTVDowLHBheW1lbnRIU1Q6MCxwYXltZW50UFNUOjAscGF5bWVudERvd25QYXltZW50OjAscGF5bWVudEttQWxsb3dhbmNlOjAscGF5bWVudEludGVydmFsOiIiLHBheW1lbnRSYXRlOiIiLHBheW1lbnRSZXNpZHVhbFZhbHVlOjAsbm9QYXltZW50OiExLG11bHRpX2RlYWxlcl9zZW5kVG86IiIsY3JlZGl0QnVyZWF1Q3JlZGl0OiJOTyIsU0lOOiIiLGFkZGVkSW5mbzoiIix2ZWhpY2xlU2FsZXNEZXB0OiJvdGhlciIsdmVoaWNsZVByaWNlOiIiLHZlaGljbGVUcmFuc21pc3Npb246IiIsdmVoaWNsZVRyaW06IiIsdmVoaWNsZUNvbG9yOiIiLGluaXRpYWxUaXRsZVNob3c6ITAsbXVsdGlGcm9tTWluaTohMSwKdHJhZGVJbk1ha2U6IiIsdHJhZGVJbk1vZGVsOiIiLHRyYWRlSW5ZZWFyOiIiLHRyYWRlSW5UcmltOiIiLHRyYWRlSW5WYWx1ZToiIn19LGNyZWRpdEFwcFN1bWlzc2lvbjpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEsYz0kKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKTtkLnNpdGVJZD1jO2QuY3VycmVudERlcHQ9YS5jdXJyZW50RGVwdDskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5zaG93KCk7YS5mb3JtZGF0YS5jcmVkaXRCdXJlYXVDcmVkaXQ9IllFUyI7YS5zdGVwPTIxOyQuYWpheCh7dXJsOiIvIit3K2AvYWpheC9zdWJtaXRDcmVkaXRBcHBsaWNhdGlvbj93c3dpZHRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCIwIil9YCxkYXRhVHlwZToiSlNPTiIsdHlwZToiUE9TVCIsZGF0YTpkLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7bGV0IGYsZyxsPWUuYXBwbGljYXRpb25JZDtpZihlLmVycm9yKWY9JCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9WV0VSUk9SX01TR19VU0VSIiwKYikudmFsKCksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0VSUk9SX01TR19MRUFEIixiKS52YWwoKSxhLmNyZWRpdERlY2lzaW9uSFRNTD1nO2Vsc2UgaWYobCl7aWYoZj0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0FQUFJPVkFMX01TRyIsYikudmFsKCkrIjxicj48YnI+IitsLGY9Zi5yZXBsYWNlKCIjI1VTRVJFTUFJTCMjIixkLmVtYWlsQWRkcmVzcyksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1NVQ0NFU1NfTVNHX0xFQUQiLGIpLnZhbCgpKyI8c3Ryb25nPiIrbCsiPC9zdHJvbmc+IixhLmNyZWRpdERlY2lzaW9uSFRNTD1nLGEuY3JlZGl0QXBwbGljYXRpb25JZD1sLGUuYXBwbGljYXRpb25TdGF0dXMmJmUuYXBwbGljYXRpb25TdGF0dXMuc3RhdHVzKXN3aXRjaChlLmFwcGxpY2F0aW9uU3RhdHVzLnN0YXR1cyl7Y2FzZSAiQXBwcm92ZWQiOiQoIiNGSU5BTkNFX0ZPUk1fVldDUkVESVRfQVBQUk9WQUxfTVNHIixiKS52YWwoKTticmVhaztjYXNlICJQZW5kaW5nIjokKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1BFTkRJTkdfTVNHIiwKYikudmFsKCk7YnJlYWs7ZGVmYXVsdDokKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX05PQVBQUk9WQUxfTVNHIixiKS52YWwoKX19ZWxzZSBmPSQoIiNGSU5BTkNFX0ZPUk1fVldDUkVESVRfVldFUlJPUl9NU0dfVVNFUiIsYikudmFsKCksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0VSUk9SX01TR19MRUFEIixiKS52YWwoKSxhLmNyZWRpdERlY2lzaW9uSFRNTD1nOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRpdGxlIikuaGlkZSgpOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRleHQiKS5oaWRlKCk7JChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5odG1sKGYpOyQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuc2hvdygpOyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLmhpZGUoKTtrLnNlbmRFbWFpbCgpfX0pfSxyb3V0ZU9uZUNhbGw6ZnVuY3Rpb24oKXt2YXIgZD1hLmZvcm1kYXRhLGM9JCgiI3NpdGVJRCIpLnZhbCgpfHwkKCIjdG9wc2l0ZWlkIikudmFsKCk7CmQuc2l0ZUlkPWM7ZC5jdXJyZW50RGVwdD1hLmN1cnJlbnREZXB0OyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLnNob3coKTthLnN0ZXA9MjE7KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZixnKT0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7ZT1lKyI\/Y2I9IisyMDM4MzQ3NDkzKk1hdGgucmFuZG9tKCk7bGV0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bC5zZXRBdHRyaWJ1dGUoInNyYyIsZSk7bC5zZXRBdHRyaWJ1dGUoImFzeW5jIiwiZmFsc2UiKTtsZXQgcD1kb2N1bWVudC5oZWFkO3AuaW5zZXJ0QmVmb3JlKGwscC5maXJzdEVsZW1lbnRDaGlsZCk7bC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoKT0+e2YoKX0sITEpfSkpfSkoIi9qcy9yb3V0ZTFIYW5kbGVyLmpzIikudGhlbigoKT0+e2xldCBlPW5ldyByb3V0ZTFFdmVudEhhbmRsZXIoITEpO2Uub24oImNvbm5lY3RlZCIsKGYsCmcpPT57Y29uc29sZS5sb2coIkNvbm5lY3RlZCIpfSk7ZS5vbigicmVhZHkiLChmLGcpPT57Y29uc29sZS5sb2coIlJlYWR5Iik7ZS5yZXF1ZXN0Q3JlZGl0Q2hlY2soZCl9KTtlLm9uKCJlcnJvciIsKGYsZyk9Pntjb25zb2xlLmxvZygiRXJyb3I6ICVvIixmKTtlLmNsb3NlKCk7ay5zZXRDcmVkaXREZWNpc2lvbihmLm1lc3NhZ2UpOyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLmhpZGUoKTtrLnNlbmRFbWFpbCgpfSk7ZS5vbigiY3JlZGl0Q2hlY2tDb21wbGV0ZSIsKGYsZyk9Pntjb25zb2xlLmxvZygiQ3JlZGl0IENoZWNrIENvbXBsZXRlOiAlbyIsZik7ZS5jbG9zZSgpO2suc2V0Q3JlZGl0RGVjaXNpb24oZik7JCgiLm11bHRpc3RlcEluc3RhbnRTcGlubmVyIikuaGlkZSgpO2suc2VuZEVtYWlsKCl9KTtlLm9uKCJ3YWl0aW5nT25Sb3V0ZTEiLChmLGcpPT57Y29uc29sZS5sb2coIldhaXRpbmcgb24gUm91dGUgMTogJW8iLGYpfSl9KX0sc2V0Q3JlZGl0RGVjaXNpb246ZnVuY3Rpb24oZCl7dmFyIGMsCmU9IiI7aWYoZC5qc29uKXt2YXIgZj0iYXBwcm92ZWQiPT1kLmpzb24uc3RhdHVzPyJBcHByb3ZlZCI6IkRlbmllZCI7dmFyIGc9bnVsbCE9KGM9ZC5qc29uLmlkKT9jOiIiO3ZhciBsO2M9bnVsbCE9KGw9ZC5qc29uLmxlbmRlcik\/bDoiIjtkLmpzb24uZXJyb3Jtc2cmJiJObyBwYXltZW50Ij09ZC5qc29uLmVycm9ybXNnJiYoZj1kLmpzb24uZXJyb3Jtc2csYz1nPSIiKTtlPWQuanNvbi5lcnJvcm1zZ31lbHNlIGlmKGQuc3RhdGUpe2Y9IkRlbmllZCI7dmFyIHA7Zz1udWxsIT0ocD1kLnN0YXRlLmlkKT9wOiIiO2M9IiI7ZC5lcnJvcm1zZyYmIk5vIHBheW1lbnQiPT1kLmVycm9ybXNnJiYoZj1kLmVycm9ybXNnLGM9Zz0iIik7ZT1kLmVycm9ybXNnP2QuZXJyb3Jtc2c6ZC5lcnJvcn1lbHNlIGY9IkRlbmllZCIsYz1nPSIiOyJBcHByb3ZlZCIhPWY\/KGw9JCgiI0ZJTkFOQ0VfRk9STV9ST1VURU9ORV9OT0FQUFJPVkFMX01TRyIpLnZhbCgpLCJObyBwYXltZW50Ij09Zj8oZj0iRU5HTElTSCI9PQokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ZjoiUGFzIGRlIHBhaWVtZW50IixsPWwucmVwbGFjZSgiJFJvdXRlT25lSUQiLCIiKS5yZXBsYWNlKCIkRXJyb3JDb2RlIixmKSk6bD1nP2wucmVwbGFjZSgiJFJvdXRlT25lSUQiLGcpLnJlcGxhY2UoIiRFcnJvckNvZGUiLGUpOmwucmVwbGFjZSgiJFJvdXRlT25lSUQiLCIiKS5yZXBsYWNlKCIkRXJyb3JDb2RlIixlKSk6KGw9JCgiI0ZJTkFOQ0VfRk9STV9ST1VURU9ORV9BUFBST1ZBTF9NU0ciKS52YWwoKSxsPWwucmVwbGFjZSgiJE1ha2UiLGEuZm9ybWRhdGEuY3VycmVudE1ha2UpLGw9bC5yZXBsYWNlKCIkTW9kZWwiLGEuZm9ybWRhdGEuY3VycmVudE1vZGVsVGV4dCksbD1sLnJlcGxhY2UoIiRZZWFyIixhLmZvcm1kYXRhLmN1cnJlbnRZZWFyKSxsPWwucmVwbGFjZSgiJFZlcnNpb24iLGEuZm9ybWRhdGEuY3VycmVudFRyaW0pLGw9bC5yZXBsYWNlKCIkTGVuZGVyIixjKSxsPWwucmVwbGFjZSgiJFJlZmVyZW5jZUlEIiwKZyksZj0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiLHA9IiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykudmFsKCk6JCgiI2hpZGRlbkRlYWxlck5hbWUiKS52YWwoKSxmPWYhPXAmJiIiIT1mP2Y6cCxsPWwucmVwbGFjZSgiJERlYWxlck5hbWUiLGYpLGw9IiIhPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyP2wucmVwbGFjZSgiJFN0b2NrIixhLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcik6bC5yZXBsYWNlKCIoU3RvY2sgJFN0b2NrKSIsIiIpLGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/CiJBcHByb3ZlZCI6IkFwcHJvdXbDqSIpO2MmJihmKz0iICIrYyk7ZyYmKGYrPSIgKCIrZysiKSIpO2UmJihmKz0iXG4iK2UpO2c9W107ZC5yb3V0ZTFpZCYmZy5wdXNoKGQucm91dGUxaWQpO2Quc3RhdGUmJmQuc3RhdGUuaWQmJmcucHVzaChkLnN0YXRlLmlkKTtpZihkLmhpc3RvcnkpZm9yKGU9MDtlPGQuaGlzdG9yeS5sZW5ndGg7ZSsrKWQuaGlzdG9yeVtlXS5pZCYmZy5wdXNoKGQuaGlzdG9yeVtlXS5pZCk7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJMZWFkQ3JlYXRlZD17YWN0aW9uOiJST1VURU9ORSIsY29udmVyc2F0aW9uSWRzOmd9O2EuY3JlZGl0RGVjaXNpb25IVE1MPWY7JChiKS5maW5kKCIuY29uZmlybWF0aW9uVGl0bGUiKS5oaWRlKCk7JChiKS5maW5kKCIuY29uZmlybWF0aW9uVGV4dCIpLmhpZGUoKTskKGIpLmZpbmQoIi5jcmVkaXREZWNpc2lvbiIpLnRleHQobCk7JChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5zaG93KCl9LHNldEN1cnJlbnRNYWtlTW9kZWxZZWFyOmZ1bmN0aW9uKCl7aWYoIjEiPT0KJCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2lzSW5zdGFudCIsYikudmFsKCkpe2Euc3RlcD0wO2EubmV4dFN0ZXA9TDthLmZvcm1kYXRhLm5vUGF5bWVudD0hMTthLmNhbGN1bGF0b3JGdW5jdGlvbnM9bnVsbDthLmZvcm1kYXRhLnBheW1lbnRUeXBlPSIiO2EuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPSIiO2EuZm9ybWRhdGEucGF5bWVudFRlcm09IiI7YS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGU9IiI7YS5mb3JtZGF0YS5wYXltZW50UmVzaWR1YWxWYWx1ZT0iIjthLmZvcm1kYXRhLnBheW1lbnRWYWx1ZT0iIjthLmZvcm1kYXRhLnZlaGljbGVJbml0aWFsUHJpY2U9IiI7YS5mb3JtZGF0YS52ZWhpY2xlRmluYWxQcmljZT0iIjthLmZvcm1kYXRhLnBheW1lbnRGZWVzTGlzdD1bXTthLmZvcm1kYXRhLnBheW1lbnRJbmNlbnRpdmVzTGlzdD1bXTthLmZvcm1kYXRhLmJhc2VwYXltZW50PSIiO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsSW5jZW50aXZlPTA7YS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9CjA7YS5mb3JtZGF0YS5wYXltZW50R1NUPTA7YS5mb3JtZGF0YS5wYXltZW50SFNUPTA7YS5mb3JtZGF0YS5wYXltZW50UFNUPTA7YS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQ9MDthLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZT0iIjthLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZT0wO2EuZm9ybWRhdGEucGF5bWVudEludGVydmFsPSIiO2EuZm9ybWRhdGEucGF5bWVudFJhdGU9IiI7dmFyIGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIik7ZC5yZXBsYWNlV2l0aChkLmNsb25lTm9kZSghMCkpfWEuZm9ybWRhdGEuY3VycmVudE1ha2U9JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS5sZW5ndGg\/JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS52YWwoKTphLmZvcm1kYXRhLmN1cnJlbnRNYWtlO2EuZm9ybWRhdGEuY3VycmVudE1vZGVsPSQoIiNwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIpLmxlbmd0aD8kKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoKToKYS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7YS5mb3JtZGF0YS5jdXJyZW50WWVhcj0kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLmxlbmd0aCYmMCE9JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoKT8kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgpOmEuZm9ybWRhdGEuY3VycmVudFllYXI7YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI9JCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikubGVuZ3RoPyQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbCgpOmEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyO3ZhciBjPSQoIiN0b3BjYXJpZE11bHRpc3RlcEZvcm0iKS52YWwoKTswPT1wYXJzZUludChjKSYmKGM9IiIpO2lmKCIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyfHwiIiE9YylpZihjKSQuZ2V0SlNPTigiL2pzL2pzb24vIisKYysiLmpzb24iLGZ1bmN0aW9uKGYpe2EuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0idXNlZCI7YS5jdXJyZW50RGVwdD0iVVNFRCI7aWYoZi5pc25ld3x8Zi5kZW1vJiYiMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfREVNT0FTTkVXIl0nLGIpLnZhbCgpKWEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0ibmV3IixhLmN1cnJlbnREZXB0PSJORVdJTlYiLGEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9Zi5zdHlsZUlkOzA8Zi5tYWtlY2VydCYmKGEuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0iY3BvIik7dmFyIGc9KGYudHJhbnNtaXNzaW9uRU4rIiIpLm1hdGNoKC8oYXV0b21hdGljfG1hbnVhbCkvaSk7Zz1nP2dbMF06IiI7YS5mb3JtZGF0YS52ZWhpY2xlQ29sb3I9Zi5jb2xvckVOO2EuZm9ybWRhdGEudmVoaWNsZVByaWNlPWYub3JpZ2luYWxQcmljZTthLmZvcm1kYXRhLnZlaGljbGVUYW5zbWlzc2lvbj1nO2EuZm9ybWRhdGEudmVoaWNsZVRyaW09Zi52ZXJzaW9uO2EuZm9ybWRhdGEuY3VycmVudFRyaW09CmYudmVyc2lvbjthLmZvcm1kYXRhLmN1cnJlbnRDYXJJZD1jO2EuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9Zi5taWxlcztzd2l0Y2goZi5ib2R5VHlwZUlEKXtjYXNlICJTVVYiOmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX1NVViI7YnJlYWs7Y2FzZSAiVFJVQ0siOmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX1RSVUNLIjticmVhaztjYXNlICJNSU5JVkFOIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9NSU5JVkFOIjticmVhaztkZWZhdWx0OmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX0NBUiJ9MD09YS5zdGVwJiZhLm5leHQoITApO2sucG9wdXBMYXVuY2hlZFRyYWNrKCl9KTtlbHNle2EuZm9ybWRhdGEudmVoaWNsZVNhbGVzRGVwdD0ibmV3IjtkPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyItZW4iOiItZnIiO3VybD0iL2pzb24vIithLmZvcm1kYXRhLmN1cnJlbnRNYWtlLnJlcGxhY2UoIi0iLAoiXyIpLnJlcGxhY2UoIiAiLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudE1vZGVsLnJlcGxhY2UoIi0iLCJfIikucmVwbGFjZSgiICIsIl8iKSsiLSIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcitkKyIuanNvbiI7aWYoIkJNVyI9PWEuZm9ybWRhdGEuY3VycmVudE1ha2V8fCJNZXJjZWRlcy1CZW56Ij09YS5mb3JtZGF0YS5jdXJyZW50TWFrZSl7dmFyIGU9JCgiI3RleHRNb2RlbE92ZXJyaWRlIikubGVuZ3RoJiYkKCIjdGV4dE1vZGVsT3ZlcnJpZGUiKS52YWwoKS5sZW5ndGg\/JCgiI3RleHRNb2RlbE92ZXJyaWRlIikudmFsKCk6YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7dXJsPSIvanNvbi8iK2EuZm9ybWRhdGEuY3VycmVudE1ha2UucmVwbGFjZSgiLSIsIl8iKS5yZXBsYWNlKCIgIiwiXyIpKyItIitlLnJlcGxhY2UoIi0iLCJfIikucmVwbGFjZSgiICIsIl8iKSsiLSIrYS5mb3JtZGF0YS5jdXJyZW50WWVhcitkKyIuanNvbiJ9MDw9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwuaW5kZXhPZigiaHlicmlkIikmJgooZT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCJdJykubGVuZ3RoJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCJdJykudmFsKCkubGVuZ3RoPyQoJ2lucHV0W2RhdGEtZm9ydmFyPSJNT0RFTEZPUkVNQUlMIl0nKS52YWwoKTphLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCx1cmw9Ii9qc29uLyIrYS5mb3JtZGF0YS5jdXJyZW50TWFrZS5yZXBsYWNlKCItIiwiXyIpKyItIitlLnJlcGxhY2UoIi0iLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudFllYXIrZCsiLmpzb24iKTskKCIucGF5bWVudENhbGN1bGF0b3JWRFAiKS5sZW5ndGg\/YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIucGF5bWVudENhbGN1bGF0b3JWRFAiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKTokKCIucGF5bWVudENhbGNCdG4iKS5sZW5ndGg\/YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIucGF5bWVudENhbGNCdG4iKS5hdHRyKCJkYXRhLXN0eWxlaWQiKTokKCIjYWN0aXZlU3R5bGVJRCIpLmxlbmd0aCYmCihhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSQoIiNhY3RpdmVTdHlsZUlEIikudmFsKCkpOyQuZ2V0SlNPTih1cmwpLmRvbmUoZnVuY3Rpb24oZil7aWYoZil7c3dpdGNoKGYuc2VjdGlvbil7Y2FzZSAic3V2IjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9TVVYiO2JyZWFrO2Nhc2UgInRydWNrcyI6YS5mb3JtZGF0YS52ZWhpY2xlVHlwZT0iQk9EWVRZUEVfVFJVQ0siO2JyZWFrO2Nhc2UgIm1pbml2YW5zIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9NSU5JVkFOIjticmVhaztkZWZhdWx0OmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX0NBUiJ9IiIhPWEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQmJmYuc3R5bGVzLmZvckVhY2goZnVuY3Rpb24oZyl7Zy5pZD09YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZCYmKGEuZm9ybWRhdGEuY3VycmVudFRyaW09IiIhPWcudHJpbT9nLnRyaW06Zy5DRlN0eWxlTmFtZSxhLmZvcm1kYXRhLnZlaGljbGVQcmljZT0KZy5tc3JwQWxsSW4pfSl9fSkuYWx3YXlzKGZ1bmN0aW9uKCl7MD09YS5zdGVwJiYoYS5uZXh0KCEwKSxrLnBvcHVwTGF1bmNoZWRUcmFjaygpKX0pfWVsc2UiIiE9YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJjIxIT1hLnN0ZXAmJiIxIiE9JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI09QRU5FREZST01JTUFHRVBPUFVQIixiKS52YWwoKSYmYS5wdXNoUGFydGlhbCYmay5wdXNoRGF0YVRvU2VydmVyKCksLTE9PWEub3B0aW9uYWxTdGVwLmluZGV4T2YoYS5zdGVwKSYmYS5uZXh0KCEwKSxrLnBvcHVwTGF1bmNoZWRUcmFjaygpfSxnZXRDbGllbnRTdG9yYWdlRGF0YTpmdW5jdGlvbihkKXtsZXQgYz0iIjsidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlJiYoYz1jbGllbnRTdG9yYWdlLmdldChkKSk7cmV0dXJuIGN9LHNldENsaWVudFN0b3JhZ2VEYXRhOmZ1bmN0aW9uKGQsYyl7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmY2xpZW50U3RvcmFnZS5zZXQoZCwKYyl9LHNldENsaWVudFN0b3JhZ2VEYXRhVmFsdWVzOmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKCIiIT09YS5mb3JtZGF0YS5maXJzdE5hbWUmJmsuc2V0Q2xpZW50U3RvcmFnZURhdGEoImZpcnN0bmFtZSIsYS5mb3JtZGF0YS5maXJzdE5hbWUpLCIiIT09YS5mb3JtZGF0YS5sYXN0TmFtZSYmay5zZXRDbGllbnRTdG9yYWdlRGF0YSgibGFzdG5hbWUiLGEuZm9ybWRhdGEubGFzdE5hbWUpLCIiIT09YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MmJmsuc2V0Q2xpZW50U3RvcmFnZURhdGEoImVtYWlsIixhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcyksIiIhPT1hLmZvcm1kYXRhLnBob25lTnVtYmVyJiZrLnNldENsaWVudFN0b3JhZ2VEYXRhKCJwaG9uZSIsYS5mb3JtZGF0YS5waG9uZU51bWJlcikpfSxzZXREZXBhcnRtZW50OmZ1bmN0aW9uKCl7dmFyIGQ9ZW1haWxIYW5kbGVyLmdldERlcCgpO2lmKCJORVciIT1kfHwiTkVXSU5WIiE9ZHx8IlVTRUQiIT0KZClkPSJORVciO2EuY3VycmVudERlcHQ9ZDsiTkVXIiE9ZHx8ImNhcmRldGFpbC5odG1sIiE9JCgiI1BBR0VJRCIpLnZhbCgpJiYidXNlZGNhcnMuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKXx8KGEuY3VycmVudERlcHQ9Ik5FV0lOViIpfSxzZXRUcmFkZUluOmZ1bmN0aW9uKCl7YS5mb3JtZGF0YS50cmFkZUluTWFrZT0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluTWFrZSJdJykudmFsKCk7YS5mb3JtZGF0YS50cmFkZUluTW9kZWw9JChiKS5maW5kKCdpbnB1dFtuYW1lPSJmaW5hbmNlVHJhZGVJbk1vZGVsIl0nKS52YWwoKTthLmZvcm1kYXRhLnRyYWRlSW5ZZWFyPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5ZZWFyIl0nKS52YWwoKTthLmZvcm1kYXRhLnRyYWRlSW5UcmltPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5UcmltIl0nKS52YWwoKTtsZXQgZD0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluVmFsdWUiXScpLnZhbCgpLApjPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5WYWx1ZSJdJykuYXR0cigiZGF0YS1jdXJyZW50Iik7YyYmIiI9PWEuZm9ybWRhdGEudHJhZGVJblZhbHVlP2EuZm9ybWRhdGEudHJhZGVJblZhbHVlPWM6IiI9PWEuZm9ybWRhdGEudHJhZGVJblZhbHVlJiYoYS5mb3JtZGF0YS50cmFkZUluVmFsdWU9ZCk7IiIhPWEuZm9ybWRhdGEudHJhZGVJblZhbHVlJiYoJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIixiKS52YWwoYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIsYikuYXR0cigibWF4IixkKSwkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiLGIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluSW5pdGlhbCIsYikuaGlkZSgpKX0sZ2V0Q3VycmVudEJ1ZGdldDpmdW5jdGlvbihkKXtyZXR1cm4iMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfTVVMVElTVEVQX0hJR0hfQlVER0VUX0NIRUNLIl0nKS52YWwoKT8KNTAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzUwMCI6Njc2PD1kJiY4NTA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl82NzZfQU5EXzg1MCI6ODUxPD1kJiYxMTAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fODUxX0FORF8xMTAwIjoxMzUwPGQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl8xMzUxIjo1MDE8PWQmJjY3NT49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzUwMV9BTkRfNjc1IjoiRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzExMDFfQU5EXzEzNTAiOiIxIj09JCgnaW5wdXRbbmFtZT0iRklOQU5DRV9NVUxUSVNURVBfVkVSWUhJR0hfQlVER0VUX0NIRUNLIl0nKS52YWwoKT85MDA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfVU5ERVJfOTAwIjoxMTUxPD1kJiYxNDAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMTE1MV9BTkRfMTQwMCI6MTQwMTw9ZCYmMTY1MD49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzE0MDFfQU5EXzE2NTAiOgoxOTAwPGQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl8xOTAxIjo5MDE8PWQmJjExNTA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl85MDFfQU5EXzExNTAiOiJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMTY1MV9BTkRfMTkwMCI6MzUwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzM1MCI6NjAxPD1kJiY3NTA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl82MDFfQU5EXzc1MCI6NzUxPD1kJiY5MDA+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl83NTFfQU5EXzkwMCI6OTAwPGQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfT1ZFUl85MDEiOjM1MTw9ZCYmNDc1Pj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMzUxX0FORF80NzUiOiJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fNDc2X0FORF82MDAifSxzZXRFbWFpbEhhbmRsZXJTZW5kOmZ1bmN0aW9uKCl7aWYoMD09YS5mb3JtZGF0YS5tdWx0aUZyb21NaW5pfHwiZmFsc2UiPT0KYS5mb3JtZGF0YS5tdWx0aUZyb21NaW5pKWVtYWlsSGFuZGxlci5zZW5kVG89JCgiI0ZJTkFOQ0VfRk9STV9TRU5EVE9fRU1BSUwiLGIpLnZhbCgpLGVtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9JCgiI0ZJTkFOQ0VfRk9STV9TRU5EVE9BREZfRU1BSUwiLGIpLnZhbCgpLGVtYWlsSGFuZGxlci5kZWFsZXJOYW1lPSIiIT0kKCIjRklOQU5DRV9GT1JNX0RFQUxFUk5BTUUiLGIpLnZhbCgpPyQoIiNGSU5BTkNFX0ZPUk1fREVBTEVSTkFNRSIsYikudmFsKCk6ZW1haWxIYW5kbGVyLmRlYWxlck5hbWU7ZW1haWxIYW5kbGVyLnZlaGljbGVUeXBlPWEuZm9ybWRhdGEudmVoaWNsZVR5cGU7ZW1haWxIYW5kbGVyLmNhcmlkPWEuZm9ybWRhdGEuY3VycmVudENhcklkO2lmKC0xPT09Wy0xLCItMSIsIiJdLmluZGV4T2YoYS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvKSl7dmFyIGQ9JCgiI211bHRpc3RlcC1tdWx0aWFkZHJlc3MiLGIpLmZpbmQoInNlbGVjdCIpLmZpbmQoIjpzZWxlY3RlZCIpOwplbWFpbEhhbmRsZXIuc2VuZFRvPWQuZGF0YSgiZW1haWxmaW5hbmNlIil8fGQuZGF0YSgiZW1haWwiKTtlbWFpbEhhbmRsZXIuc2VsZWN0ZWRTZW5kVG89ZC5kYXRhKCJlbWFpbGZpbmFuY2UiKXx8ZC5kYXRhKCJlbWFpbCIpO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9ZC5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKXx8ZC5kYXRhKCJlbWFpbGFkZiIpO2VtYWlsSGFuZGxlci5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdD1kLmRhdGEoImVtYWlsYWRmZmluYW5jZSIpfHxkLmRhdGEoImVtYWlsYWRmIik7ZW1haWxIYW5kbGVyLmRlYWxlck5hbWU9ZC50ZXh0KCk7ZW1haWxIYW5kbGVyLmhhc1NlbGVjdGVkTXVsdGlBZGRyZXNzPSEwfX0saW5pdFNlbGVjdE11bHRpRGVhbGVyOmZ1bmN0aW9uKCl7dmFyIGQ9JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpO2lmKDA9PT1kLmxlbmd0aClhLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG89LTEsYS5uZXh0KCEwKTtlbHNle3ZhciBjPQokKCIjUE9TVF9MRUFEX1NFTkRfVE9fREVBTEVSX1RZUEVfU0VMRUNUIikubGVuZ3RoPyQoIiNQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiKS52YWwoKToibG9jYXRpb24iOygwPCQoIiN0YXJnZXRQYWdlIikubGVuZ3RoJiYiQ0FSREVUQUlMUyI9PT0kKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwiIiE9JCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikudmFsKCkmJiIxIj09JCgiI0ZJTkFOQ0VfRk9STV9BRE1JTl9TSE9XUEhZU0lDQUxBRERSRVNTX0NIRUNLIikudmFsKCkpJiYibG9jYXRpb24iPT1jPyhhLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG89LTEsYS5uZXh0KCEwKSk6IiI9PT0kKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsYikudGV4dCgpLnRyaW0oKSYmKCQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIixiKS5hcHBlbmQoZC5odG1sKCkpLCIiIT09YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgbXVsdGlEZWFsZXJTZWxlY3QmJgooZD0kKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsYikuZmluZCgic2VsZWN0IiksbXVsdGlEZWFsZXJTZWxlY3QuZmlsdGVyKGQpLmJ5TWFrZShhLmZvcm1kYXRhLmN1cnJlbnRNYWtlKSksJCgiI211bHRpc3RlcC1tdWx0aWFkZHJlc3MiLGIpLmZpbmQoInNlbGVjdCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5jc3MoImJvcmRlci1jb2xvciIsIiIpO2EuZm9ybWRhdGEubXVsdGlfZGVhbGVyX3NlbmRUbz0kKHRoaXMpLnZhbCgpO2suY2hlY2tWYWxpZGl0eSgpfSkpfX0sbXVsdGlEZWFsZXJGb3JtU3RhdHVzOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0kKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikubGVuZ3RoPyEwOiIiIT09YS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvfSxlbWFpbEJvZHlGb3JNdWx0aURlYWxlcjpmdW5jdGlvbihkKXtpZigwPT09JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLmxlbmd0aClyZXR1cm4gZDt2YXIgYz0kKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsCmIpLmZpbmQoInNlbGVjdCA6c2VsZWN0ZWQiKSxlPSQoIiNwb3N0TGVhZExhYmVsIikudmFsKCk7InVuZGVmaW5lZCIhPT10eXBlb2YgZSYmYy5sZW5ndGg\/KGU9ZS5yZXBsYWNlKCJ7JE1VTFRJREVBTEVSTkFNRX0iLGMudGV4dCgpKS5yZXBsYWNlKCJ7JFBPU1RfTEVBRF9FTUFJTFN9IiwiIiksZD1kLnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLGUpKTokKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aCYmIiIhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCkmJiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLmxlbmd0aCYmJCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKSE9JCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykudmFsKCk\/KGM9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iQ29uY2Vzc2lvbiBv77+9IGVzdCBzaXR177+9IGxlIHbvv71oaWN1bGU6ICI6CiJEZWFsZXIgd2hlcmUgdGhlIHZlaGljbGUgaXMgbG9jYXRlZDogIixjKz0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpLGQ9ZC5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IixjKSk6ZD1kLnJlcGxhY2UoLzxiclxzP1wvPntcJERFQUxFUl9TRU5EVE99KGJyXHM\/XC8pPy8sIiIpLnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLCIiKTtyZXR1cm4gZH0sY2hlY2tWYWxpZGl0eTpmdW5jdGlvbigpe2lmKGEudmFsaWRhdGlvblJ1bGVzLmhhc093blByb3BlcnR5KCJzdGVwIithLnN0ZXApKWZvcih2YXIgZD0wO2Q8YS52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK2Euc3RlcF0ubGVuZ3RoO2QrKylpZihrW2EudmFsaWRhdGlvblJ1bGVzWyJzdGVwIithLnN0ZXBdW2RdLmZ1bmNdKGEuZm9ybWRhdGFbYS52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK2Euc3RlcF1bZF0udmFsdWVdKSkkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24jZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbiIsCmIpLmFkZENsYXNzKCJpc1ZhbGlkIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudFZXIixiKS5hZGRDbGFzcygiaXNWYWxpZCIpO2Vsc2V7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b24iLGIpLnJlbW92ZUNsYXNzKCJpc1ZhbGlkIik7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudFZXIixiKS5yZW1vdmVDbGFzcygiaXNWYWxpZCIpO2JyZWFrfWVsc2UgJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b24iLGIpLmFkZENsYXNzKCJpc1ZhbGlkIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudFZXIiwKYikuYWRkQ2xhc3MoImlzVmFsaWQiKX0scG9wdXBMYXVuY2hlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiUG9wdXAgbGF1bmNoZWQiKTshay51c2VySWQoKSYmYS5maXJzdFN0ZXAmJmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIsMSk7ay5zdGVwVHJpZ2dlcighMSl9LHN0ZXAyVmlld2VkVHJhY2s6ZnVuY3Rpb24oKXtoKCJTdGVwIDIgdmlld2VkIil9LGVtYWlsU3RlcFZpZXdlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiRW1haWwgc3RlcCB2aWV3ZWQiKX0scGhvbmVTdGVwVmlld2VkVHJhY2s6ZnVuY3Rpb24oKXtoKCJQaG9uZSBzdGVwIHZpZXdlZCIpfSxlbWFpbFByb3ZpZGVkVHJhY2s6ZnVuY3Rpb24oKXtoKCJFbWFpbCBwcm92aWRlZCIpfSxwaG9uZVByb3ZpZGVkVHJhY2s6ZnVuY3Rpb24oKXtoKCJQaG9uZSBwcm92aWRlZCIpfSxzdGVwVHJpZ2dlcjpmdW5jdGlvbihkKXtkPXtzdGVwOmEuZ2V0TGluZWFyc3RlcChkKSxtYWtlOmEuZm9ybWRhdGEuY3VycmVudE1ha2UsCm1vZGVsOmEuZm9ybWRhdGEuY3VycmVudE1vZGVsLHllYXI6YS5mb3JtZGF0YS5jdXJyZW50WWVhcixib2R5VHlwZTphLmZvcm1kYXRhLnZlaGljbGVUeXBlLHNhbGVzRGVwdDphLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQsdmVoaWNsZUNvbG9yOmEuZm9ybWRhdGEudmVoaWNsZUNvbG9yLHZlaGljbGVQcmljZTphLmZvcm1kYXRhLnZlaGljbGVQcmljZSx2ZWhpY2xlVGFuc21pc3Npb246YS5mb3JtZGF0YS52ZWhpY2xlVGFuc21pc3Npb24sdmVoaWNsZVRyaW06YS5mb3JtZGF0YS52ZWhpY2xlVHJpbX07JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLnRyaWdnZXIoImZvcm0uc3RlcCIsZCk7YS5maXJzdFN0ZXA9ITF9fTt3aW5kb3cuYXBwVGVzdD1hO3ZhciBWOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0LCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBzZWxlY3QsICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIHRleHRhcmVhIikub24oImNoYW5nZSBpbnB1dCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoVik7ClY9c2V0VGltZW91dChrLmNoZWNrVmFsaWRpdHksNTAwKX0pOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdJykub24oImZvY3VzIixmdW5jdGlvbigpeyQodGhpcykudHJpZ2dlcigic2VsZWN0Iil9KTtyZXR1cm57c3RhcnQ6UCxoYXNVc2VyOmsuaGFzVXNlcn19CiQoZnVuY3Rpb24oKXskKGRvY3VtZW50KS5vbigicmV2ZWFsOm9wZW4iLCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIixmdW5jdGlvbigpeyQoZG9jdW1lbnQpLnRyaWdnZXIoImNyZWRpdC5tdWx0aXN0ZXBwb3B1cC5zdGFydCIpfSk7JChkb2N1bWVudCkub24oInJldmVhbDpvcGVuIiwiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIiLGZ1bmN0aW9uKCl7JChkb2N1bWVudCkudHJpZ2dlcigiY3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0Iil9KTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciAjZHJWaWV3RGlzY2xhaW1lckxpbmsiLGZ1bmN0aW9uKCl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLnNob3coKTskKCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciAjZHJEaXNjbGFpbWVyRHJhd2VyIikuYWRkQ2xhc3MoIm9wZW4iKX0pOwokKGRvY3VtZW50KS5vbigiY2xpY2siLCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciAuY2xvc2VEUkRpc2NsYWltZXJEcmF3ZXIiLGZ1bmN0aW9uKCl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLnJlbW92ZUNsYXNzKCJvcGVuIik7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIgI2RyRGlzY2xhaW1lckRyYXdlciIpLmhpZGUoKX0pfSk7Ci8qKiAvbS9qcy9jYWxjdWxhdG9yRnVuY3Rpb25zLmpzICoqLwp2YXIgX19fZDJjX2NhbGN1bGF0b3JGdW5jdGlvbnNqc19jX29uPSIyMDI2LTAyLTIwIDExOjMwOjE4IjsndXNlIHN0cmljdCc7Y2xhc3MgY2FsY3VsYXRvckZ1bmN0aW9uc3tjb25zdHJ1Y3RvcihhKXt0aGlzLnBhcmVudD1hO3RoaXMucGFyZW50TmFtZT10aGlzLnBhcmVudC5yZXBsYWNlKCIjIiwiIik7dGhpcy5zZXRUcmlnZ2VycygpfWluaXQoYSxlLGIsZixtLGcsaCxwLG4pe3ZhciBxPXRoaXMucGFyZW50O3RoaXMuc3R5bGVpZD1hO3RoaXMucGF5bWVudFR5cGU9ZTt0aGlzLnRyYWRlSW5WYWx1ZT0kKHErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKT9wYXJzZUludCgkKHErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKSk6MDt0aGlzLmRvd25wYXltZW50PTA+Yi10aGlzLnRyYWRlSW5WYWx1ZT8wOmItdGhpcy50cmFkZUluVmFsdWU7dGhpcy5vcHRpb25zQW1vdW50PWY7dGhpcy5wYXltZW50RnJlcXVlbmN5PW07dGhpcy5rbUFsbG93YW5jZT1nO3RoaXMuaXNJbnZlbnRvcnk9aD9oOiExO3RoaXMuc249cD9wOiIiO3RoaXMudmluPW4\/Cm46IiI7dGhpcy5sb2FkUGF5bWVudHMoITApfXNldEluaXRpYWxWaWV3KGEpe3ZhciBlPXRoaXMucGFyZW50LGI9dGhpczskKGUrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSBvcHRpb24iKS5yZW1vdmUoKTskKGUrIiAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLnZhbCh0aGlzLmRvd25wYXltZW50KTskKGUrIiAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbChhLmN1cnJlbnRQYXltZW50WzBdLmludGVydmFsKTtsZXQgZj0ibGVhc2UiPT1hLmN1cnJlbnRQYXltZW50WzBdLnR5cGU\/ImxlYXNpbmciOiJmaW5hbmNpbmciOyQoZSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSciK2YrIiddIikuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7MD09YS5maW5hbmNlLmxlbmd0aD8kKGUrCiIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVGaW5hbmNlIikuaGlkZSgpOiQoZSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlRmluYW5jZSIpLnNob3coKTtpZigwPT1hLmxlYXNlLmxlbmd0aCkkKGUrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUxlYXNlIikuaGlkZSgpO2Vsc2V7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVMZWFzZSIpLnNob3coKTtsZXQgZz1bXTthLmxlYXNlLmZvckVhY2goZnVuY3Rpb24oaCl7LTE9PSQuaW5BcnJheShoLmttX2FsbG93YW5jZSxnKSYmZy5wdXNoKGgua21fYWxsb3dhbmNlKX0pO2cuZm9yRWFjaChmdW5jdGlvbihoKXtsZXQgcD1iLnBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGgudG9GaXhlZCgwKSk7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS5hcHBlbmQobmV3IE9wdGlvbihwKyIga20iLGgpKX0pO3ZhciBtPTJFNDthLmN1cnJlbnRQYXltZW50WzBdJiYidW5kZWZpbmVkIiE9PQp0eXBlb2YgYS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2UmJihtPTA8YS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U\/YS5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U6MkU0KTskKGUrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbChtKX10aGlzLmttQWxsb3dhbmNlPSQoZSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKCk7ImxlYXNpbmciPT1mPyQoZSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuc2hvdygpOiQoZSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuaGlkZSgpOyQoImJvZHkiKS5vbigiY2xpY2sgdGFwIixlKyIgLmZpbmFuY2luZy1vcHRpb24ucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAqIixmdW5jdGlvbigpeyQodGhpcykuZmluZCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nKS5wcm9wKCJjaGVja2VkIiwiY2hlY2tlZCIpLnRyaWdnZXIoImNoYW5nZSIpfSk7CiQoImJvZHkiKS5vbigiY2hhbmdlIixlKycgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nLGZ1bmN0aW9uKCl7dmFyIGc9JCh0aGlzKS52YWwoKSxoPSQodGhpcykuYXR0cigiZGF0YS1yYXRldHlwZSIpOyQoZSsiIC5maW5hbmNpbmctb3B0aW9uIikucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytoKyciXScpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytoKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KTskKCJib2R5Iikub24oImNoYW5nZSIsZSsnIGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdJywKZnVuY3Rpb24oKXt2YXIgZz0kKHRoaXMpLnZhbCgpLGg9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7JChlKyIgLmZpbmFuY2luZy1vcHRpb24iKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytnKyciXVtkYXRhLXJhdGV0eXBlPSInK2grJyJdJykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVt2YWx1ZT0iJytnKyciXVtkYXRhLXJhdGV0eXBlPSInK2grJyJdJykucHJvcCgiY2hlY2tlZCIsITApOyQodGhpcykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKX0pfXNldFRyaWdnZXJzKCl7dmFyIGE9dGhpcy5wYXJlbnQsZT10aGlzOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikub2ZmKCJjbGljayIpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9mZigiY2hhbmdlIik7CiQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsIikub2ZmKCJjaGFuZ2UiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLm9mZigiY2hhbmdlIik7JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS5vZmYoImJsdXIiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS5vZmYoImJsdXIiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQodGhpcykuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7ZS5wYXltZW50VHlwZT0kKHRoaXMpLmF0dHIoImRhdGEtdHlwZSIpOyJsZWFzaW5nIj09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKT8kKGErIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLnNob3coKToKJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCk7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5pcygiOmNoZWNrZWQiKT8oJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuc2hvdygpKTooJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuc2hvdygpKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLnRyaWdnZXIoImNoYW5nZSIpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtlLnBheW1lbnRGcmVxdWVuY3k9CiQodGhpcykudmFsKCk7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtlLmttQWxsb3dhbmNlPSQodGhpcykudmFsKCk7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50Iikub24oImJsdXIiLGZ1bmN0aW9uKCl7bGV0IGI9cGFyc2VJbnQoJCh0aGlzKS52YWwoKSk\/cGFyc2VJbnQoJCh0aGlzKS52YWwoKSk6MDtlLmRvd25wYXltZW50PWI7ZS5sb2FkUGF5bWVudHMoKX0pOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLm9uKCJibHVyIixmdW5jdGlvbigpe2xldCBiPXBhcnNlSW50KCQodGhpcykuYXR0cigibWF4IikpfHwwLGY9cGFyc2VJbnQoJCh0aGlzKS52YWwoKSl8fDA7Zj1mPmI\/YjpmOyQodGhpcykudmFsKGYpO2UudHJhZGVJblZhbHVlPWY7X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIiwKSlNPTi5zdHJpbmdpZnkoe3ZhbHVlOmZ9KSwxKTtlLmxvYWRQYXltZW50cygpfSl9bG9hZFBheW1lbnRzKGEpe2E9YT9hOiExO2xldCBlPSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFBheW1lbnREYXRhRm9yU3R5bGVJRD93c3dpZHRoPTAiO3ZhciBiPXRoaXM7Yi50cmFkZUluVmFsdWU9cGFyc2VJbnQoJChiLnBhcmVudCsiIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIpLnZhbCgpPyQoYi5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKTowKTskLmFqYXgoe3VybDplLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJKU09OIixkYXRhOntzdHlsZWlkOmIuc3R5bGVpZCxwYXltZW50VHlwZTpiLnBheW1lbnRUeXBlLGRvd25wYXltZW50OmIuZG93bnBheW1lbnQrYi50cmFkZUluVmFsdWUsb3B0aW9uc0Ftb3VudDpiLm9wdGlvbnNBbW91bnQscGF5bWVudEZyZXF1ZW5jeTpiLnBheW1lbnRGcmVxdWVuY3ksCmttQWxsb3dhbmNlOmIua21BbGxvd2FuY2Usb3B0aW9uczpiLm9wdGlvbnNBbW91bnQsaXNJbnZlbnRvcnk6Yi5pc0ludmVudG9yeSxzbjpiLnNuLHZpbjpiLnZpbixmb3JjZVRheGVzOiEwfSxzdWNjZXNzOmZ1bmN0aW9uKGYpe2YuY3VycmVudFBheW1lbnQmJmYuY3VycmVudFBheW1lbnQubGVuZ3RoPyhhJiZiLnNldEluaXRpYWxWaWV3KGYpLCJ1bmRlZmluZWQiIT09dHlwZW9mIGNhbGNDdXJQYXltZW50JiYoY2FsY0N1clBheW1lbnQ9ZiksYi5zaG93UGF5bWVudHMoZi5jdXJyZW50UGF5bWVudCxmLnBheW1lbnRGZWVzLGYubWFrZWlkLGYpLCQoImJvZHkgIitiLnBhcmVudCkudHJpZ2dlcigicGF5bWVudHNSZWFkeSIpKTokKCJib2R5ICIrYi5wYXJlbnQpLnRyaWdnZXIoIm5vUGF5bWVudCIpfX0pfXNob3dQYXltZW50cyhhLGUsYixmKXt2YXIgbT10aGlzOyQobS5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaHRtbCgiIik7JChtLnBhcmVudCsKIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaHRtbCgiIik7bGV0IGc9IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JSb3VuZFBheW1lbnQiKS52YWwoKT8wOjI7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKTtsZXQgaD1bXSxwPSQoIiNvZW1DZXJ0aWZpY2F0aW9uIikudmFsKCl8fDA7NTxhLmxlbmd0aD9hLmZvckVhY2goZnVuY3Rpb24oayl7KDA9PWsudGVybSUxMnx8NjQ9PWsudGVybXx8NDA9PWImJjUxPT1rLnRlcm18fDIwPT1iJiZbMjcsMzAsMzksNDJdLmluY2x1ZGVzKGsudGVybSl8fFsxNiwyMV0uaW5jbHVkZXMoYil8fDQyPT1rLnRlcm0mJjEwMTQ9PXB8fFszMCw0Ml0uaW5jbHVkZXMoay50ZXJtKSYmWzQ3MTU2Miw0NzE1NjMsNDcxNTY0XS5pbmNsdWRlcyhwYXJzZUludChzZXR0aW5ncy5zdHlsZWlkKSl8fAoyNz09ay50ZXJtJiYyNz09Ynx8NTI9PWsudGVybSYmMzk9PWIpJiZoLnB1c2goayl9KTpoPWE7dmFyIG49e30scT0hMTtoLmZvckVhY2goZnVuY3Rpb24oayxsKXtPYmplY3QuaGFzT3duKG4say50ZXJtKT9xPSEwOm5bay50ZXJtXT17fTtuW2sudGVybV1bay5yYXRlX3R5cGVdPWx9KTt2YXIgSD1bXTthWzBdJiYibGVhc2UiPT1hWzBdLnR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFbMF0ua21fYWxsb3dhbmNlJiYoYT0wPGFbMF0ua21fYWxsb3dhbmNlP2FbMF0ua21fYWxsb3dhbmNlOjJFNCwkKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoYSksdGhpcy5rbUFsbG93YW5jZT0kKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoKSk7bGV0IEk9Zi50b3RhbEluY2VudGl2ZSxKPXE\/JCgiI0xPV0VTVFBBWU1FTlRfTEFCRUwiKS52YWwoKToiIixLPXE\/JCgiI0xPV0VTVFJBVEVfTEFCRUwiKS52YWwoKToiIiwKVj0wOyQuZWFjaChoLGZ1bmN0aW9uKGssbCl7aWYoIUguaW5jbHVkZXMobC50ZXJtKSl7SC5wdXNoKGwudGVybSk7dmFyIGQ9InN0YW5kYXJkIj09bC5yYXRlX3R5cGV8fDI+T2JqZWN0LmtleXMobltsLnRlcm1dKS5sZW5ndGg\/bDpoW25bbC50ZXJtXS5zdGFuZGFyZF0sYz0yPT1PYmplY3Qua2V5cyhuW2wudGVybV0pLmxlbmd0aD9oW25bbC50ZXJtXS5zdWJ2ZW50ZWRdOiExLHg9Mj09T2JqZWN0LmtleXMobltsLnRlcm1dKS5sZW5ndGg\/bltsLnRlcm1dLnN1YnZlbnRlZDohMSx2PWwudGVybSx5PWwuZG93bnBheW1lbnQudG9GaXhlZCgwKSxCPWQucGF5bWVudC50b0ZpeGVkKGcpLFc9ZC5wYXltZW50LnRvRml4ZWQoZyk7Qj1CLnJlcGxhY2UoL1wuKFswLTldKikvLGZ1bmN0aW9uKEMsdyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK3crIjwvc3VwPiJ9KTtsPWQucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO3ZhciBYPWQucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO2w9CmwucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oQyx3KXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrdysiPC9zdXA+In0pO3ZhciBMPWQucmF0ZSxZPSJwYXltZW50IitrO2s9InBheW1lbnQiK2srIndpdGhUYXhlcyI7dj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iPHNwYW4+Iit2KyI8L3NwYW4+IG1vbnRoIjoiPHNwYW4+Iit2KyI8L3NwYW4+IG1vaXMiO3k9YDxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPiR7eX08L3NwYW4+YCsoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IiBkb3duIHBheW1lbnQiOiIgY29tcHRhbnQiKTt2YXIgTT0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8iPGRpdj4iKyQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCkrIjwvZGl2PiI6Iit0eCIsej1kLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlP2QuY2FsY3VsYXRlZEVmZmVjdGl2ZVJhdGU6MCxEPSIiOzA8cGFyc2VGbG9hdCh6KS1kLnJhdGUmJihEKz0KbS5mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoeiwiIiwnY2xhc3M9Ii1mczEwIicpKTt2YXIgTj1kLnRvdGFsT2JsaWdhdGlvbkFtb3VudD9kLnRvdGFsT2JsaWdhdGlvbkFtb3VudDowLE89J2RhdGEtdG9vbHRpcD0iJytkLnRvb2x0aXArJyInLFA9J2RhdGEtdG9vbHRpcD0iJytkLnRvb2x0aXBXaXRoVGF4ZXMrJyInLHIsWj1udWxsIT0ocj1kLm0yZF9maW5hbmNlKT9yOkk7cj0ic2luZ2xlLWNvbHVtbiI7dmFyIEU9InNtYWxsLWJveCIsdD0iIix1PSIiO2lmKGMpe3I9ImxlZnQtc2VjdGlvbiI7RT0iIjt0PWMucGF5bWVudC50b0ZpeGVkKGcpO2xldCBDPWMucGF5bWVudC50b0ZpeGVkKGcpO3Q9dC5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihhYSxGKXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrRisiPC9zdXA+In0pO3U9Yy5wYXltZW50V2l0aFRheGVzLnRvRml4ZWQoZyk7bGV0IHc9Yy5wYXltZW50V2l0aFRheGVzLnRvRml4ZWQoZyk7dT11LnJlcGxhY2UoL1wuKFswLTldKikvLApmdW5jdGlvbihhYSxGKXtyZXR1cm4nPHN1cCBjbGFzcz0icGQiPicrRisiPC9zdXA+In0pO3ZhciBRPWMucmF0ZS50b0ZpeGVkKDIpLGJhPSJwYXltZW50Iit4O3g9InBheW1lbnQiK3grIndpdGhUYXhlcyI7bGV0IEE9Yy5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9jLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsRz0iIjswPHBhcnNlRmxvYXQoQSktYy5yYXRlJiYoRys9bS5mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoQSwiIiwnY2xhc3M9Ii1mczEwIicpKTtsZXQgUj1jLnRvdGFsT2JsaWdhdGlvbkFtb3VudD9jLnRvdGFsT2JsaWdhdGlvbkFtb3VudDowLFM9J2RhdGEtdG9vbHRpcD0iJytjLnRvb2x0aXArJyInLFQ9J2RhdGEtdG9vbHRpcD0iJytjLnRvb2x0aXBXaXRoVGF4ZXMrJyInLFU9Yy5tMmRfZmluYW5jZTt0PSdcdDxkaXYgaWQ9IicrYmErJyIgY2xhc3M9InJpZ2h0LXNlY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytTKyc+XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1yYXRlIj4nKwpRKyclIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytTKyI+PC9pPiIrRysnPC9kaXY+XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK3QrJzwvc3Bhbj48L2Rpdj5cdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytNKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0PGlucHV0XHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnQiXHRcdFx0XHRcdHZhbHVlPSInK2MudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2MucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2MucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2MucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJysKQysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2MucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2MudG90YWxJbnRlcmVzdCsnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicrYy5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytBKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1IrJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2MucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytjLnJlc2lkdWFsVmFsdWUrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrVSsnIiAgICAgICAgICAgICAgICAgZGF0YS1pbml0aWFsUHJpY2U9IicrYy5pbml0aWFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmluYWxQcmljZT0iJytjLmZpbmFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmVlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmZlZXNMaXN0KSkrCiciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoYy5pbmNlbnRpdmVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IjAiXHRcdFx0XHQ+XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytLKyI8L2xhYmVsPlx0XHQ8L2Rpdj5cdDwvZGl2PiI7dT0nXHQ8ZGl2IGlkPSInK3grJyIgY2xhc3M9InJpZ2h0LXNlY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytUKyc+XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1yYXRlIj4nK1ErJyUgPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgcmlnaHRUb29sdGlwIiAnK1QrIj48L2k+IitHKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrCnUrJzwvc3Bhbj48L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0PGlucHV0XHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXHRcdFx0XHRcdHZhbHVlPSInK2MudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2MucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2MucGF5bWVudFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK2MucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJyt3KyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrYy5yZXNpZHVhbFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrYy50b3RhbEludGVyZXN0V2l0aFRheGVzKyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytjLmx1eGVUYXhBbW91bnQrCiciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytBKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1IrJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2MucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytjLnJlc2lkdWFsVmFsdWVXaXRoVGF4ZXMrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrVSsnIiAgICAgICAgICAgICAgICAgZGF0YS1pbml0aWFsUHJpY2U9IicrYy5pbml0aWFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmluYWxQcmljZT0iJytjLmZpbmFsUHJpY2UrJyIgICAgICAgICAgICAgICAgIGRhdGEtZmVlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmZlZXNMaXN0KSkrJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5jZW50aXZlc0xpc3Q9IicrYnRvYShKU09OLnN0cmluZ2lmeShjLmluY2VudGl2ZXNMaXN0KSkrJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2MuZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJysKYy5oc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSInK2MucHN0KyciXHRcdFx0XHQ+XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytLKyI8L2xhYmVsPlx0XHQ8L2Rpdj5cdDwvZGl2PiJ9Yz0nPGRpdiBjbGFzcz0iZmluYW5jaW5nLW9wdGlvbiBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyICcrRSsnIj5cdDxkaXYgY2xhc3M9InRlcm0iPicrdisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicreSsnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK1krJyIgY2xhc3M9IicrcisnIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrTysnPlx0XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0IrJzwvc3Bhbj4gPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrCk8rJz48L2k+PC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytNKyc8L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcmF0ZSI+JytMKyIlICIrRCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0XHQ8aW5wdXQgXHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50Ilx0XHRcdFx0XHR2YWx1ZT0iJytkLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytkLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrVysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2QucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInKwpkLnRvdGFsSW50ZXJlc3QrJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK2QubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicreisnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytOKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytkLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrZC5yZXNpZHVhbFZhbHVlKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK1orJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2QuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrZC5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5mZWVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5pbmNlbnRpdmVzTGlzdCkpKwonIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSIwIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytKKyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK3QrIlx0PC9kaXY+PC9kaXY+IjtkPSc8ZGl2IGNsYXNzPSJmaW5hbmNpbmctb3B0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgJytFKyciPlx0PGRpdiBjbGFzcz0idGVybSI+Jyt2Kyc8L2Rpdj5cdDxkaXYgY2xhc3M9ImRvd24tcGF5bWVudCI+Jyt5Kyc8L2Rpdj5cdDxkaXYgY2xhc3M9InNlcGFyYXRvclBheSI+PC9kaXY+XHQ8ZGl2IGNsYXNzPSJjb250ZW50LWNvbnRhaW5lciI+XHRcdDxkaXYgaWQ9IicraysnIiBjbGFzcz0iJytyKycgcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytQKyc+XHRcdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrCmwrJzwvc3Bhbj4gPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrUCsnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcmF0ZSI+JytMKyIlICIrRCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCI+XHRcdFx0XHQ8aW5wdXQgXHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIlx0XHRcdFx0XHR2YWx1ZT0iJytkLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytkLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytkLnBheW1lbnRXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytkLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrWCsnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInKwpkLnJlc2lkdWFsKyciXHRcdFx0XHRcdGRhdGEtdG90YWxpbnRlcmVzdD0iJytkLnRvdGFsSW50ZXJlc3QrJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK2QubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicreisnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytOKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytkLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrZC5yZXNpZHVhbFZhbHVlV2l0aFRheGVzKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK0krJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2QuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrZC5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoZC5mZWVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInKwpidG9hKEpTT04uc3RyaW5naWZ5KGQuaW5jZW50aXZlc0xpc3QpKSsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IicrZC5nc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSInK2QuaHN0KyciICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iJytkLnBzdCsnIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsIGNsYXNzPSJmaW5hbmNlQ2FsYyI+JytKKyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK3UrIlx0PC9kaXY+PC9kaXY+IjskKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmFwcGVuZChjKTskKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmFwcGVuZChkKTtWKyt9fSk7bS5zZXRQYXltZW50Q2FsY3VsYXRvclBvcHVwVG9vbHRpcCgpfXNldFBheW1lbnRDYWxjdWxhdG9yUG9wdXBUb29sdGlwKCl7dmFyIGE9dGhpcy5wYXJlbnQsZT10aGlzLnBhcmVudE5hbWU7aWYoIjEiPT0KJCgiI2lzbW9iaWxlIikudmFsKCkpJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIgLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbihmKXt0cnl7dmFyIG09JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKSxnPSQodGhpcykuaGFzQ2xhc3MoImxlZnRUb29sdGlwIik\/Indlc3QiOiJlYXN0IjskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50Om0sZ3Jhdml0eTpnLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiY2xpY2siLGFuaW1hdGlvbjoiZmxpcEluIn0pfWNhdGNoKGgpe319KTtlbHNle2Zvcih2YXIgYj0wOzU+YjtiKyspJCgiI2Rhcmt0b29sdGlwLSIrZSsicGF5bWVudCIrYikubGVuZ3RoJiYoJCgiI2Rhcmt0b29sdGlwLSIrZSsicGF5bWVudCIrYikucmVtb3ZlKCksJCgiI2Rhcmt0b29sdGlwLSIrZSsicGF5bWVudCIrYisid2l0aFRheGVzIikucmVtb3ZlKCkpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIikuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgZj0KJCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKTskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmYsZ3Jhdml0eToibm9ydGgiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoibm9uZSJ9KX1jYXRjaChtKXt9fSl9fXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGEpe3JldHVybiBhLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csIiwiKX1mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dENhbGMoYSxlLGIpe2I9dm9pZCAwPT09Yj8iIjpiO2E9IjxzcGFuICIrZSsiPiIrYSsiPC9zcGFuPiUiO2E9IkVOR0xJU0giPT1hY3RpdmVMYW5nP2ErIiBBUFIiOiJUYXV4ICIrYTtyZXR1cm4gJCgiI2lzbW9iaWxlIikudmFsKCk\/Ijxici8+PGRpdiAiK2IrIj4oIithKyIpPC9kaXY+IjoiIDxkaXYgIitiKyI+KCAiK2ErIiApPC9kaXY+In19OwovKiogL20vanMvY29udGFjdFBvcHVwLmpzICoqLwp2YXIgX19fZDJjX2NvbnRhY3RQb3B1cGpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6NDYiOyd1c2Ugc3RyaWN0Jzt2YXIgY29udGFjdFBvcHVwPXtwb3B1cDokKCIjY29udGFjdHBvcHVwIiksb3B0aW9uczp7dHlwZToiIn0sc2V0Q29uZmlnOmZ1bmN0aW9uKGEpe2NvbnRhY3RQb3B1cC5vcHRpb25zPSQuZXh0ZW5kKHt9LGNvbnRhY3RQb3B1cC5vcHRpb25zLGEpO3JldHVybiBjb250YWN0UG9wdXB9LGluaXQ6ZnVuY3Rpb24oKXtjb250YWN0UG9wdXAuc2V0Q29uZmlnKHt0eXBlOnNlbGYuc2V0dGluZ3MuZm9ybS50eXBlfSk7Y29udGFjdFBvcHVwLnBvcHVwLnBvcHVwaXplKHtvbkJlZm9yZVNlbmRNYWlsOmNvbnRhY3RQb3B1cC5vbkJlZm9yZVNlbmRNYWlsfSkub3BlbigpO3JldHVybiBjb250YWN0UG9wdXB9LG9uQmVmb3JlU2VuZE1haWw6ZnVuY3Rpb24oYSl7Y29udGFjdFBvcHVwLnNldEVtYWlsSGFuZGxlckZyb21BZGRyZXNzZXMoKTtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPWNvbnRhY3RQb3B1cC5nZXRDb25kaXRpb24oKTtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD1jb250YWN0UG9wdXAuZ2V0VHlwZSgpLnRvVXBwZXJDYXNlKCk7CiJCTlAiPT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudCYmKGVtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJORVciKTtlbWFpbEhhbmRsZXIuc2tpcEdldERlcD0hMDtlbWFpbEhhbmRsZXIuYm9keT1lbWFpbEhhbmRsZXIuYm9keS5yZXBsYWNlKCJ7JE5BTUV9IixlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSsiICIrZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSl9LGdldENvbmRpdGlvbjpmdW5jdGlvbigpe3N3aXRjaChjb250YWN0UG9wdXAuZ2V0VHlwZSgpKXtjYXNlICJibnAiOmNhc2UgIm5ldyI6Y2FzZSAibWFudWZhY3R1cmVyIjpyZXR1cm4ibmV3IjtkZWZhdWx0OnJldHVybiJ1c2VkIn19LGdldFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gY29udGFjdFBvcHVwLm9wdGlvbnMudHlwZX0sc2V0RW1haWxIYW5kbGVyRnJvbUFkZHJlc3NlczpmdW5jdGlvbigpe3ZhciBhPWNvbnRhY3RQb3B1cC5nZXRUeXBlKCk7dHJ5e3ZhciBiPWNvbnRhY3RQb3B1cC5nZXRFbWFpbHMoYSk7IiI9PT1iLnNlbmRUbyYmCiIiPT09Yi5zZW5kVG9BREYmJihiPWNvbnRhY3RQb3B1cC5nZXRFbWFpbHMoInVzZWQiKSk7dmFyIGM9Yi5zZW5kVG8sZD1iLnNlbmRUb0FERjsiIj09PWMmJiIiPT09ZCYmY29uc29sZS5sb2coIldhcm5pbmc6IGJvdGggZW1haWwgYW5kIEFERiBhZGRyZXNzZXMgYXJlIGVtcHR5ISIpO2lmKCQoIiNjdXN0b21Gb3JtX29yaWdpbmFsc2VuZHRvIikubGVuZ3RoJiYiT3RoZXIiPT0kKCIjY3VzdG9tRm9ybV9vcmlnaW5hbHNlbmR0byIpLnZhbCgpKXt2YXIgZT0kKCIjY3VzdG9tRm9ybV9zZW5kdG8iKS52YWwoKSxmPSQoIiNjdXN0b21Gb3JtX3NlbmR0b0FERiIpLnZhbCgpO2lmKCIiIT09ZXx8IiIhPT1mKWM9ZSxkPWZ9ZW1haWxIYW5kbGVyLnNlbmRUbz1jO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9ZH1jYXRjaChnKXtjb25zb2xlLmxvZyhnKX1yZXR1cm4gY29udGFjdFBvcHVwfSxnZXRFbWFpbHM6ZnVuY3Rpb24oYSl7dmFyIGI9JCgiI2hpZGRlbkNvbnRhY3Rwb3B1cCIpOwoiYm5wIj09YSYmKGE9Im5ldyIpO3ZhciBjPWIuZmluZCgiI2VtYWlsXyIrYSkudmFsKCk7YT1iLmZpbmQoIiNlbWFpbEFERl8iK2EpLnZhbCgpO3JldHVybntzZW5kVG86YyxzZW5kVG9BREY6YX19fSxpbml0Q29udGFjdHBvcHVwPWZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKTtjb250YWN0UG9wdXAuaW5pdCgpfSxjb250YWN0UG9wdXBTdWJtaXQ9ZnVuY3Rpb24oKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoKS5zdWJtaXQoKX0sY29udGFjdFBvcHVwQ2xvc2U9ZnVuY3Rpb24oKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoKS5jbG9zZSgpfTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9tb2RhbC5qcyAqKi8KdmFyIF9fX2QyY19tb2RhbGpzX2Nfb249IjIwMjYtMDItMjcgMTU6MzA6MDMiOyd1c2Ugc3RyaWN0Jztjb25zdCBNb2RhbHM9e30sTW9kYWw9ZnVuY3Rpb24oaCxiKXtsZXQgYz17fTtjb25zdCBuPXt0aXRsZTpoLGNvbnRlbnRUeXBlOiJub2RlIixjb250ZW50U3JjOiIiLGFmdGVySW5pdDooKT0+e319O2xldCBrPSIiO2NvbnN0IGU9aHRtbFRvTm9kZSgnPGRpdiBjbGFzcz0ibW9kYWwtb3ZlcmxheSI+PC9kaXY+JyksbD1mdW5jdGlvbihhKXthLm9uY2xpY2s9KCk9PmYoImNhbmNlbCIpfSxwPWZ1bmN0aW9uKCl7KGMucXVlcnlTZWxlY3RvcigiLm9rYXkiKXx8ITEpLm9uY2xpY2s9KCk9PmYoIm9rYXkiKTtjb25zdCBhPWMucXVlcnlTZWxlY3RvckFsbCgiLmNhbmNlbCIpfHwhMTsxPGEubGVuZ3RoPyQuZWFjaChhLGZ1bmN0aW9uKGQsZyl7bChnKX0pOmEmJmwoYVswXSl9LG09ZnVuY3Rpb24oYSl7IkVzY2FwZSI9PWEua2V5JiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLAptLHtjYXB0dXJlOiEwfSksZigpKX0sZj1hPT57YT1hfHwiIjtzd2l0Y2goYSl7Y2FzZSAiY2FuY2VsIjoiZnVuY3Rpb24iPT10eXBlb2YgYi5vbkJlZm9yZUNhbmNlbCYmYi5vbkJlZm9yZUNhbmNlbC5jYWxsKCk7YnJlYWs7Y2FzZSAib2theSI6ImZ1bmN0aW9uIj09dHlwZW9mIGIub25CZWZvcmVTYXZlJiZiLm9uQmVmb3JlU2F2ZS5jYWxsKCl9ImZ1bmN0aW9uIj09dHlwZW9mIGIub25CZWZvcmVDbG9zZSYmYi5vbkJlZm9yZUNsb3NlLmNhbGwoYSk7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvd1k9ImF1dG8iO2MuY2xhc3NMaXN0LnRvZ2dsZSgiaXMtYWN0aXZlIiwhMSk7ZS5wYXJlbnROb2RlJiYoZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLGsuZm9jdXMoKSl9O2I9T2JqZWN0LmFzc2lnbihuLGIpOyhmdW5jdGlvbigpe2NvbnN0IGE9K25ldyBEYXRlO3ZhciBkPSIiO3N3aXRjaChiLmNvbnRlbnRUeXBlKXtjYXNlICJub2RlIjpkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIuY29udGVudFNyYyk7CmQuaGlkZGVuPSExO2JyZWFrO2Nhc2UgImlmcmFtZSI6ZD1odG1sVG9Ob2RlKGA8ZGl2IGNsYXNzPSJpZnJhbWUtd3JhcHBlciI+CgkJCQkJCQkJPGlmcmFtZQoJCQkJCQkJCQlzcmM9IiR7Yi5jb250ZW50U3JjfSIKCQkJCQkJCQkJZnJhbWVib3JkZXI9IjAiCgkJCQkJCQkJCWFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIKCQkJCQkJCQkJd2Via2l0YWxsb3dmdWxsc2NyZWVuPSJ0cnVlIgoJCQkJCQkJCQltb3phbGxvd2Z1bGxzY3JlZW49InRydWUiCgkJCQkJCQkJPjwvaWZyYW1lPgoJCQkJCQkJPC9kaXY+YCl9bGV0IGc9IiI7Yi5zaG93WWVzTm9CdXR0b25zJiYoZz1gPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIC1wIC0tczUgZmxleC1iZXR3ZWVuIj4KCQkJCTxkaXY+CgkJCQkJPHNwYW4gY2xhc3M9IiAtbXQyIG1haW5UZXh0IC1ib2xkIj4ke2IuYnV0dG9uVGV4dHx8IiJ9PC9zcGFuPgoJCQkJPC9kaXY+CgkJCQk8ZGl2PgoJCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGNhbmNlbCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+JHtiLm5vQnV0dG9ufHwiTm8ifTwvYnV0dG9uPgoJCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1tYWluMiBva2F5IiBkYXRhLWRpc21pc3M9Im1vZGFsIj4ke2IueWVzQnV0dG9ufHwiWWVzIn08L2J1dHRvbj4KCQkJCTwvZGl2PmApO2M9aHRtbFRvTm9kZShgCgkJCTxib3gtbGMgY2xhc3M9Im1vZGFsLXdyYXBwZXIgLWJnLXdoaXRlIC0tczAiPgoJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMwIj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIgZmxleC1iZXR3ZWVuIC1wIC0tczUiPgoJCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC10aXRsZSB0eHQtdXBwZXIgLWZzLWwgLWJvbGQiPgoJCQkJCQkJJHtiLnRpdGxlfQoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtY29udHJvbCI+CgkJCQkJCQk8YnV0dG9uIHRpdGxlPSJjbG9zZSIgY2xhc3M9IngtY2xvc2UgY2FuY2VsIj48L2J1dHRvbj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSIgaWQ9InEtJHthfSI+CgoJCQkJCTwvZGl2PgoJCQkJCSR7Z30KCQkJCTwvc3RhY2stbGM+CgkJCTwvYm94LWxjPgoJCWApO2MuaWQ9YG1vZGFsJHtofWA7Yy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJkaWFsb2ciKTtjLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixgcS0ke2F9YCk7Yy5xdWVyeVNlbGVjdG9yKCIubW9kYWwtYm9keSIpLmFwcGVuZENoaWxkKGQpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYyk7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiI7Yi5hZnRlckluaXQoKTtwKCl9KSgpO3JldHVybntkaXNwbGF5OmZ1bmN0aW9uKCl7az1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLG0se2NhcHR1cmU6ITB9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5jbGFzc0xpc3QudG9nZ2xlKCJpcy1hY3RpdmUiLCEwKX0sMSl9LGNsb3NlOmZ9fTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9sZWFkLmpzICoqLwp2YXIgX19fZDJjX2xlYWRqc19jX29uPSIyMDI2LTA0LTAyIDEzOjMwOjAzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGIsYSxjKXtpZihiPT1BcnJheS5wcm90b3R5cGV8fGI9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGI7YlthXT1jLnZhbHVlO3JldHVybiBifTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYil7Yj1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGIsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBhPTA7YTxiLmxlbmd0aDsrK2Epe3ZhciBjPWJbYV07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYixhKXt2YXIgYz0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFthXTtpZihudWxsPT1jKXJldHVybiBiW2FdO2M9YltjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmJbYV19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYixhLGMsZSl7YSYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGIsYSxjLGUpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGIsYSxjLGUpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGIsYSxjLGUpe2M9JGpzY29tcC5nbG9iYWw7Yj1iLnNwbGl0KCIuIik7Zm9yKGU9MDtlPGIubGVuZ3RoLTE7ZSsrKXt2YXIgaD1iW2VdO2lmKCEoaCBpbiBjKSlyZXR1cm47Yz1jW2hdfWI9YltiLmxlbmd0aC0xXTtlPWNbYl07YT1hKGUpO2EhPWUmJm51bGwhPWEmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYyxiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6YX0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGIsYSxjLGUpe3ZhciBoPWIuc3BsaXQoIi4iKTtiPTE9PT1oLmxlbmd0aDtlPWhbMF07ZT0hYiYmZSBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIHE9MDtxPGgubGVuZ3RoLTE7cSsrKXt2YXIgcj1oW3FdO2lmKCEociBpbiBlKSlyZXR1cm47ZT1lW3JdfWg9aFtoLmxlbmd0aC0xXTtjPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1jP2VbaF06bnVsbDthPWEoYyk7bnVsbCE9YSYmKGI\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxoLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6YX0pOmEhPT1jJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0mJihjPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChoKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtjKyIkIitoKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGUsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTphfSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBiPXthOiEwfSxhPXt9O3RyeXtyZXR1cm4gYS5fX3Byb3RvX189YixhLmF9Y2F0Y2goYyl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihiLGEpe2IuX19wcm90b19fPWE7aWYoYi5fX3Byb3RvX18hPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoYisiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGJ9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihiKXt2YXIgYT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhPGIubGVuZ3RoP3tkb25lOiExLHZhbHVlOmJbYSsrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYil9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYil7dmFyIGE9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYltTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBhP2EuY2FsbChiKTokanNjb21wLmFycmF5SXRlcmF0b3IoYil9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGIpe2lmKCEoYiBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYisiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy55aWVsZFJlc3VsdD1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmIsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGIsYSl7dGhpcy5uZXh0QWRkcmVzcz1hO3JldHVybnt2YWx1ZTpifX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYixhKXtiPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGIpO3ZhciBjPWIubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGMpO2lmKGMuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWMudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1hO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89Yix0aGlzLnlpZWxkKGMudmFsdWUsYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYil7dGhpcy5uZXh0QWRkcmVzcz1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihiLGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1iO3ZvaWQgMCE9YSYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWEpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihiLGEpe3RoaXMubmV4dEFkZHJlc3M9Yjt0aGlzLmNhdGNoQWRkcmVzc189YXx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihiKXt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDtiPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixhLGMpe2M\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2NdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixhKXthPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYXx8MClbMF07aWYoYT10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGEpe2lmKGEuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9YS5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGEuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWEuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYil7dGhpcy5vYmplY3RfPWI7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGEgaW4gYil0aGlzLnByb3BlcnRpZXNfLnB1c2goYSk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBiPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYiBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGJ9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWJ9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBhPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYSlyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYT9hWyJyZXR1cm4iXTpmdW5jdGlvbihjKXtyZXR1cm57dmFsdWU6Yyxkb25lOiEwfX0sYix0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYik7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxiLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihiLGEsYyl7dHJ5e3ZhciBlPWIuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGEpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGUpO2lmKCFlLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxlO3ZhciBoPWUudmFsdWV9Y2F0Y2gocSl7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhxKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtjLmNhbGwodGhpcy5jb250ZXh0XyxoKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBiPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYilyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTpiLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGEpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGEpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtiPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGIuaXNFeGNlcHRpb24pdGhyb3cgYi5leGNlcHRpb247cmV0dXJue3ZhbHVlOmIucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGIpe3RoaXMubmV4dD1mdW5jdGlvbihhKXtyZXR1cm4gYi5uZXh0XyhhKX07dGhpcy50aHJvdz1mdW5jdGlvbihhKXtyZXR1cm4gYi50aHJvd18oYSl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGEpe3JldHVybiBiLnJldHVybl8oYSl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGIsYSl7YT1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYi5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYSxiLnByb3RvdHlwZSk7cmV0dXJuIGF9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYi5uZXh0KGUpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGIudGhyb3coZSl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsaCl7ZnVuY3Rpb24gcShyKXtyLmRvbmU\/ZShyLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoci52YWx1ZSkudGhlbihhLGMpLnRoZW4ocSxoKX1xKGIubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihiKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGIoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSkpfTsKY29uc3QgTGVhZD1mdW5jdGlvbihiKXtjb25zdCBhPU9iamVjdC5hc3NpZ24oe30sYiksYz1hLmxlYWRJZHx8YS5uYW1lO2I9YS5sZWFkTm9kZTtjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3JtIitjKTtsZXQgaD0hMSxxPWUucXVlcnlTZWxlY3RvcigiLmxlYWRFbWFpbCBbZGF0YS1zdWJqZWN0XSIpLmlubmVyVGV4dCxyPWUucXVlcnlTZWxlY3RvcigiLmxlYWRFbWFpbCBbZGF0YS1ib2R5XSIpLmlubmVySFRNTCx6PWEudHJpZ2dlcixrPXt9O2NvbnN0IEE9KCk9PntBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUuZWxlbWVudHMsZD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZC5hdHRyaWJ1dGVzLm5hbWUpe3ZhciBmPWQuYXR0cmlidXRlcy5uYW1lLnZhbHVlfHwhMTtzd2l0Y2goITApe2Nhc2UgWyJuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpjYXNlIFsiZmlyc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpjYXNlIFsibGFzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmNhc2UgImVtYWlsIj09CmYudG9Mb3dlckNhc2UoKTpjYXNlICJkYXRhIj09ZjpicmVhaztjYXNlICJwaG9uZSI9PWYudG9Mb3dlckNhc2UoKTpjYXNlICJ0ZWwiPT1kLnR5cGU6SU1hc2soZCx7bWFzazpbe21hc2s6IjAwMCAwMDAtMDAwMCJ9LHttYXNrOiIxIDAwMCAwMDAtMDAwMCJ9XX0pfX19KTsidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUuZWxlbWVudHMsZD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZC5hdHRyaWJ1dGVzLm5hbWUpe3ZhciBmPWQuYXR0cmlidXRlcy5uYW1lLnZhbHVlfHwhMTtzd2l0Y2goITApe2Nhc2UgWyJuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTp2YXIgZztmPW51bGwhPShnPWNsaWVudFN0b3JhZ2UuZ2V0KCJmaXJzdG5hbWUiKSk\/ZzoiIjt2YXIgbDtnPW51bGwhPShsPWNsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpKT9sOiIiO2w9ZisoIiIhPWc\/IiAiK2NsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpOgoiIik7ZC52YWx1ZT1sO2JyZWFrO2Nhc2UgWyJmaXJzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmxldCBtO2QudmFsdWU9bnVsbCE9KG09Y2xpZW50U3RvcmFnZS5nZXQoImZpcnN0bmFtZSIpKT9tOiIiO2JyZWFrO2Nhc2UgWyJsYXN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6bGV0IG47ZC52YWx1ZT1udWxsIT0obj1jbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKSk\/bjoiIjticmVhaztjYXNlICJlbWFpbCI9PWYudG9Mb3dlckNhc2UoKTpsZXQgcDtkLnZhbHVlPW51bGwhPShwPWNsaWVudFN0b3JhZ2UuZ2V0KCJlbWFpbCIpKT9wOiIiO2JyZWFrO2Nhc2UgInBob25lIj09Zi50b0xvd2VyQ2FzZSgpOmxldCB1O2QudmFsdWU9bnVsbCE9KHU9Y2xpZW50U3RvcmFnZS5nZXQoInBob25lIikpP3U6IiJ9fX0pfSxFPSgpPT57aWYoaClyZXR1cm4hMTtoPSEwO0IoKS50aGVuKGQ9PntpZighZClyZXR1cm4gdigicG9wdXAudmFsaWRhdGlvbkZhaWxlZCIpLApoPSExO2EudmFsaWRhdGVkPSEwO0MoKTtEKCl9KX0sQz0oKT0+e0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5lbGVtZW50cyxkPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkLmF0dHJpYnV0ZXMubmFtZSl7dmFyIGY9ZC5hdHRyaWJ1dGVzLm5hbWUudmFsdWV8fCExO2lmKGYpc3dpdGNoKGtbZl09ZC52YWx1ZSwhMCl7Y2FzZSBbIm5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmQ9ZC52YWx1ZS5zcGxpdCgiICIpO2sudXNlckZpcnN0TmFtZSs9ZC5zaGlmdCgpO2sudXNlckxhc3ROYW1lKz1kLmpvaW4oIiAiKTticmVhaztjYXNlIFsiZmlyc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTprLnVzZXJGaXJzdE5hbWUrPWQudmFsdWU7YnJlYWs7Y2FzZSBbImxhc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTprLnVzZXJMYXN0TmFtZSs9ZC52YWx1ZTticmVhaztjYXNlICJlbWFpbCI9PWYudG9Mb3dlckNhc2UoKTprLnVzZXJFbWFpbD0KZC52YWx1ZTticmVhaztjYXNlICJwaG9uZSI9PWYudG9Mb3dlckNhc2UoKTpjYXNlICJ0ZWwiPT1kLnR5cGU6SU1hc2soZCx7bWFzazpbe21hc2s6IjAwMCAwMDAtMDAwMCJ9LHttYXNrOiIxIDAwMCAwMDAtMDAwMCJ9XX0pO2sudXNlclBob25lPWQudmFsdWU7YnJlYWs7Y2FzZSAiZGF0YSI9PWY6Zm9yKGxldCBnIGluIGQuZGF0YXNldClrW2cucmVwbGFjZSgvLS4vZyxsPT5sWzFdLnRvVXBwZXJDYXNlKCkpXT1kLmRhdGFzZXRbZ119fX0pfSxEPSgpPT57aWYoITE9PT1hLm9uQmVmb3JlU3VibWl0KGEpKXJldHVybiBhLmNsb3NlT25TdWJtaXQmJnQoKSwhMTt2YXIgZD14KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtpZihDb29raWVzLmdldChhLmxlYWRJZCtkKSlyZXR1cm4gaD0hMSx5KCEwKSwhMTtGKCk7digicG9wdXAuc3VibWl0Iik7bGV0IGY7aWYoIkRpZ2l0YWxSZXRhaWwiPT0obnVsbD09KGY9ayk\/dm9pZCAwOmYuaW52b2tlcikpe2Q9Y2xpZW50U3RvcmFnZS5nZXQoImNsaWVudFN0b3JhZ2UiKXx8Cnt9O2xldCBuLHA7ay5sZWFkSW52b2tlclNJRD1HKChudWxsPT1kP3ZvaWQgMDpudWxsPT0obj1kLmNvbnRhY3QpP3ZvaWQgMDpuLmVtYWlsKSsobnVsbD09ZD92b2lkIDA6bnVsbD09KHA9ZC5jb250YWN0KT92b2lkIDA6cC5waG9uZSkpO2VtYWlsSGFuZGxlci5sZWFkSW52b2tlcj0iRGlnaXRhbFJldGFpbCI7ZW1haWxIYW5kbGVyLmRpZ2l0YWxSZXRhaWxTSUQ9ay5sZWFkSW52b2tlclNJRH12YXIgZztxPShudWxsPT0oZz1lLnF1ZXJ5U2VsZWN0b3IoIi5sZWFkRW1haWwgW2RhdGEtc3ViamVjdF0iKSk\/dm9pZCAwOmcuaW5uZXJUZXh0KXx8cTtsZXQgbDtyPShudWxsPT0obD1lLnF1ZXJ5U2VsZWN0b3IoIi5sZWFkRW1haWwgW2RhdGEtYm9keV0iKSk\/dm9pZCAwOmwuaW5uZXJIVE1MKXx8cjtlbWFpbEhhbmRsZXIuYm9keT1IKCk7ZW1haWxIYW5kbGVyLnN1YmplY3Q9cTtPYmplY3QuYXNzaWduKGVtYWlsSGFuZGxlcixrKTsic3RyaW5nIj09dHlwZW9mIGVtYWlsSGFuZGxlci51c2VyTmFtZSYmCihnPWVtYWlsSGFuZGxlci51c2VyTmFtZS5zcGxpdCgiICIpLGVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWcuc2hpZnQoKSxlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPWcuam9pbigiICIpKTtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD1mdW5jdGlvbigpe2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25BZnRlckNvbnNlbnQ9ZnVuY3Rpb24obil7ZW1haWxIYW5kbGVyLm9uQmVmb3JlU2hvd0NvbnNlbnQ9ITE7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25EdXBsaWNhdGVTZW5kPWZ1bmN0aW9uKCl7ZW1haWxIYW5kbGVyLnJlc2V0Q2FsbGJhY2tzKCl9O2VtYWlsSGFuZGxlci5jYWxsYmFjaz1mdW5jdGlvbihuKXt2YXIgcD0hMTthLnNob3dFbWFpbENvbmZpcm1hdGlvbiYmKHA9Z2V0TWFpbFNlbnRIYW5kbGVyKCJfIithLm5hbWUpLHAudGltZW91dENhbGxiYWNrPWZ1bmN0aW9uKCl7ZS5yZXNldCgpfSk7CmlmKG4pdigicG9wdXAubGVhZF9zZW50IiksImZ1bmN0aW9uIj09dHlwZW9mIG9yaWdpbmFsQ2FsbGJhY2smJm9yaWdpbmFsQ2FsbGJhY2suY2FsbCgpLCJvblN1Ym1pdCI9PWEuY29va2llQ3JlYXRlJiZDb29raWVzLnNldChhLmNvb2tpZU5hbWUsIjEiLGEuY29va2llRHVyYXRpb24sIi8iKSxhLnN1Ym1pdEZsYWcmJkNvb2tpZXMuc2V0KCJwb3B1cEZvcm1GaWxsZWQiLCIxIiwxLCIvIiksYS5jbG9zZU9uU3VibWl0JiZ0KCJDT05TRU5UIikscD9wLnNob3dTdWNjZXNzKCk6MDwkKGBmb3JtI2Zvcm0ke2EubmFtZX1fY29uZmlybWApLmxlbmd0aCYmJChgZm9ybSNmb3JtJHthLm5hbWV9X2NvbmZpcm1gKS50cmlnZ2VyKCJzdWJtaXQiKTtlbHNle3B8fChwPWdldE1haWxTZW50SGFuZGxlcigpKTt0cnl7cC5zaG93RmFpbCgpfWNhdGNoKHUpe319eShuKTt3KCk7c2V0VGltZW91dChlbWFpbEhhbmRsZXIucmVzZXRDYWxsYmFja3MoKSwxRTMpO24mJihuPXgod2luZG93LmxvY2F0aW9uLmhyZWYpLApDb29raWVzLnNldChhLmxlYWRJZCtuLCIxIiwxLCIvIikpfTthLnN1Ym1pdHRlZD0hMDtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkJlZm9yZVNlbmRNYWlsJiYwPT1hLm9uQmVmb3JlU2VuZE1haWwuY2FsbCgpKXJldHVybiExO2xldCBtPXt9OyJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQURGJiYobT1hLm9uQURGLmNhbGwoKSk7Im1ha2UgbW9kZWwgeWVhciBzdG9ja051bWJlciB0cmltIHZpbiBwcmljZSBjYXJpZCIuc3BsaXQoIiAiKS5mb3JFYWNoKG49PntlbWFpbEhhbmRsZXJbbl09bVtuXXx8ZW1haWxIYW5kbGVyW25dfSk7YS5wdXJjaGFzZUludGVudFBvcHVwfHxlbWFpbEhhbmRsZXIuc2VuZE1haWwoYS5ieXBhc3NDb25zZW50KTtyZXR1cm4hMH0sdz0oKT0+e2s9e3VzZXJGaXJzdE5hbWU6IiIsdXNlckxhc3ROYW1lOiIiLHVzZXJFbWFpbDoiIix1c2VyUGhvbmU6IiJ9O2g9ITF9LEI9ZnVuY3Rpb24oKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7aWYoYS5za2lwVmFsaWRhdGlvbilyZXR1cm4hMDsKY29uc3QgZD1uZXcgUHJpc3RpbmUoZSx7Y2xhc3NUbzoiZm9ybS1sYWJlbCIsZXJyb3JDbGFzczoiaW52YWxpZCJ9LCExKTtsZXQgZj1lLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJwaG9uZW51bSJdJyksZz0hMCxsPSEwO2lmKGYucmVxdWlyZWR8fGYudmFsdWUpZz1udWxsLGc9eWllbGQgSShmLnZhbHVlKTtudWxsPT09Zz8oZC5hZGRWYWxpZGF0b3IoZixmdW5jdGlvbihtKXttPW0ucmVwbGFjZSgvW14wLTldKy9naSwiIik7IjEiPT1tWzBdJiYobT1tLnN1YnN0cmluZygxKSk7bT1wYXJzZUludChtLnN1YnN0cmluZygwLDMpKTtyZXR1cm4gZz1bNDM4LDUxNCwyNjMsNDUwLDU3OSw4MTksMjQ5LDcwNSwyMjYsNTE5LDI4OSwzNjUsOTA1LDQxNiw0MzcsNjQ3LDM0Myw2MTMsNzA5LDg3Myw0MTgsNTgxLDUwNiw5MDJdLmluY2x1ZGVzKG0pfSwiRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXIiLDUsITEpLGw9ZC52YWxpZGF0ZSgpKToobD1kLnZhbGlkYXRlKCkmJmcsZi5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImludmFsaWQiLAohZykpO2YucmVxdWlyZWQmJiFnJiYidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmKGVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrLGVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT0hMCk7cmV0dXJuIGx9KX0sST1kPT4kanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXtsZXQgZj1udWxsO2Q9ZC5yZXBsYWNlKC9bXjAtOV0rL2dpLCIiKTt5aWVsZCBheGlvcy5nZXQoIi9wcm94eV9yZDJjL3NpdGVzL3N2Yy92YWxpZGF0ZVBob25lTnVtYmVyLnBocCIse3RpbWVvdXQ6MkUzLGRhdGFUeXBlOiJqc29uIixwYXJhbXM6e3Bob25lOmR9LHJlc3BvbnNlVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKGcpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGcuZGF0YS5pc09rJiYoZj1nLmRhdGEucGhvbmVOdW1iZXJJc1ZhbGlkKX0pLmNhdGNoKGZ1bmN0aW9uKGcpe30pO3JldHVybiBmfSksRj0oKT0+e2NvbnN0IGQ9CmRvY3VtZW50LmZvcm1zLmVtYWlsbXNnZnJtfHwhMTtpZighZClyZXR1cm4hMTtkLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJsYWJlbCInKS52YWx1ZT1gJHthLnR5cGV9ICgke2suY29uZGl0aW9ufSlgO2QucXVlcnlTZWxlY3RvcignW25hbWU9InNlY3Rpb24iJykudmFsdWU9ay5jb25kaXRpb259LHg9ZD0+Wy4uLmRdLnJlZHVjZSgoZixnKT0+TWF0aC5pbXVsKDMxLGYpK2cuY2hhckNvZGVBdCgwKXwwLDApLEg9ZnVuY3Rpb24oKXtsZXQgZD1yLGY9e25hbWU6WyJNTkFNRSJdLHBob25lbnVtOlsiTVBIT05FIiwiUEhPTkUiXSxlbWFpbDpbIk1NQUlMIl19O09iamVjdC5rZXlzKGspLmZvckVhY2goZz0+e3ZhciBsPW5ldyBSZWdFeHAoIntcXCQiK2cudG9VcHBlckNhc2UoKSsifSIsImciKTtkPWQucmVwbGFjZShsLGtbZ10pO2ZbZ10mJihsPW5ldyBSZWdFeHAoIntcXCQoIitmW2ddLmpvaW4oInwiKSsiKX0iLCJnIiksZD1kLnJlcGxhY2UobCxrW2ddKSl9KTtyZXR1cm4gZH0sdj1mdW5jdGlvbihkKXt2YXIgZj0KYS50eXBlO2lmKCFkKXJldHVybiExO2lmKCJwb3B1cC5sZWFkX3NlbnQiPT1kKXt2YXIgZz0iY2xpY2siLnJlcGxhY2UoLyheW2Etel17MX0pL2csZnVuY3Rpb24obSl7cmV0dXJuIG0udG9VcHBlckNhc2UoKX0pLGw9ZDJjbWVkaWEucGFnZURlcGFydG1lbnQoKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiUG9wdXAtbGVhZHMiLGcsbCwxKX0idW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQ\/KCJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiTG9nIEV2ZW50IixkLGYsc2VsZiksYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChkLGYpKToidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIiFVTkxPR0dFRCBFVkVOVCEiLGQsZil9LHQ9KCk9PnthLm9uQmVmb3JlQ2xvc2UoYSk7dygpO01vZGFsc1tjXSYmTW9kYWxzW2NdLmNsb3NlKCl9LAp5PWQ9PnthLm9uQWZ0ZXJTdWJtaXQoYSxkKTthLmNsb3NlT25TdWJtaXQmJmQmJnQoKTtkJiZlLnJlc2V0KCl9LEc9ZD0+e2xldCBmPTA7aWYoMD09ZC5sZW5ndGgpcmV0dXJuIGY7Zm9yKGxldCBnPTAsbD1kLmxlbmd0aDtnPGw7ZysrKXtsZXQgbT1kLmNoYXJDb2RlQXQoZyk7Zj0oZjw8NSktZittO2Z8PTB9cmV0dXJuIE1hdGguYWJzKGYpfTsoKCk9PnskKGUpLnRyaWdnZXIoInBvcHVwaXplci5vbk9wZW4iLCQoZSkpO3coKTtBKCk7ZS5vbnN1Ym1pdD1kPT57ZC5wcmV2ZW50RGVmYXVsdCgpO0UoKX07YS5vbkJlZm9yZU9wZW4oYSl9KSgpO3JldHVybntsZWFkSWQ6YyxsZWFkTm9kZTpiLHRyaWdnZXI6eixkaXNwbGF5OigpPT57YS5kaXNwbGF5P2EuZGlzcGxheShhKTooYS5jb250ZW50U3JjPWBsZWFkJHtjfWAsTW9kYWxzW2NdfHwoTW9kYWxzW2NdPW5ldyBNb2RhbChjLGEpKSxNb2RhbHNbY10uZGlzcGxheSgpKX0sY2xvc2U6dH19LExlYWRIYW5kbGVyPWZ1bmN0aW9uKCl7Y29uc3QgYj0Ke29uQmVmb3JlT3BlbjooKT0+e30sb25CZWZvcmVWYWxpZGF0aW9uOigpPT57fSxvbkJlZm9yZVN1Ym1pdDooKT0+e30sb25BZnRlclN1Ym1pdDooKT0+e30sb25CZWZvcmVDYW5jZWw6KCk9Pnt9LG9uQmVmb3JlQ2xvc2U6KCk9Pnt9LG9uQ2xvc2U6KCk9Pnt9LGZvcm06e2VtYWlsaWQ6bnVsbCxvZmZlcnR5cGU6bnVsbCxuYW1lOm51bGwsc2VuZFRvOm51bGwsc2VuZFRvQURGOm51bGwsT0tCdXR0b25DbGFzczoic3VibWl0QnRuIixDYW5jZWxCdXR0b25DbGFzczoiY2FuY2VsQnRuIixzaG93RW1haWxDb25maXJtYXRpb246ITEsZnJvbUFBOiExfSxnZXRJZFN1ZmZpeDphPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqRGF0ZS5ub3coKSksbW9kZToic3RhdGljIix0cmlnZ2VyOiJhdXRvIixkZWxheTohMSxkaXNwbGF5OiExLHN1Ym1pdHRlZDohMSxjbG9zZU9uU3VibWl0OiEwLHN1Ym1pdEZsYWc6ITEsYnlwYXNzQ29uc2VudDohMSxzaG93RW1haWxDb25maXJtYXRpb246ITAscHVyY2hhc2VJbnRlbnRQb3B1cDohMX07CmluaXQ9KCk9PnsidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuQWJzdHJhY3RVc2VkU3JwT2JqZWN0JiYobmV3IEFic3RyYWN0VXNlZFNycE9iamVjdCh7bmFtZToiVmlld0Rpc2NvdmVyQnRuSGFuZGxlciJ9KSkuYWRkVXNlZFNycEV2ZW50T2JzZXJ2ZXIoImNvbnRlbnQiLGFkZExlYWRFdmVudHMpLmluaXRVc2VkU3JwT2JzZXJ2ZXIoKTthZGRMZWFkRXZlbnRzKCl9O2FkZExlYWRFdmVudHM9KCk9Pntkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1sZWFkLXRyaWdnZXJdIikuZm9yRWFjaChhPT57dGhpcy5pbml0TGVhZFRyaWdnZXIoYSl9KX07dGhpcy5pbml0TGVhZFRyaWdnZXI9YT0+e2EuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGM9PntjLnN0b3BQcm9wYWdhdGlvbigpO2M9YS5kYXRhc2V0LmxlYWRUcmlnZ2VyO2xldCBlPWEuZGF0YXNldC5sZWFkaWR8fCExO0xlYWRDb25maWdzW2NdLnRyaWdnZXI9YTtjPXRoaXMuZ2V0TGVhZChjLGUpO2MuZGlzcGxheSgpOwphLmRhdGFzZXQubGVhZGlkPWMubGVhZElkfSl9O3RoaXMuZ2V0TGVhZD0oYSxjKT0+e2lmKCEoYz1MZWFkc1tjfHxhXSkpe3tjPWE7bGV0IGU9T2JqZWN0LmFzc2lnbih7fSxiKTtPYmplY3QuYXNzaWduKGUsTGVhZENvbmZpZ3NbYV0pO2NvbnN0IGg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGxlYWQke2F9YCk7aD8oYT1oLCJzdGF0aWMiIT1lLm1vZGUmJihjPWAke2UubmFtZX1fJHtlLmdldElkU3VmZml4KGUpfWAsYT1oLmNsb25lTm9kZSghMCksYS5zZXRBdHRyaWJ1dGUoImlkIiwibGVhZCIrYyksYS5xdWVyeVNlbGVjdG9yKCJmb3JtIikuc2V0QXR0cmlidXRlKCJpZCIsImZvcm0iK2MpLGRvY3VtZW50LmJvZHkuYXBwZW5kKGEpKSxlLmxlYWRJZD1jLGUubGVhZE5vZGU9YSxMZWFkc1tjXT1uZXcgTGVhZChlKSxjPUxlYWRzW2NdKTpjPSExfX1yZXR1cm4gY307cmV0dXJue2luaXQsaW5pdExlYWRUcmlnZ2VyLGdldExlYWR9fTt2YXIgTGVhZHM9TGVhZHN8fHt9O2RvY1JlYWR5QXJyLnB1c2goTGVhZEhhbmRsZXIoKS5pbml0KTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9heGlvcy5taW4uanMgKiovCiFmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9dCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFtdLHQpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLmF4aW9zPXQoKTplLmF4aW9zPXQoKX0odGhpcywoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsbiksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gbi5tPWUsbi5jPXQsbi5kPWZ1bmN0aW9uKGUsdCxyKXtuLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLnI9ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sbi50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1uKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiYib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKG4ucihyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmInN0cmluZyIhPXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKW4uZChyLG8sZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxvKSk7cmV0dXJuIHJ9LG4ubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU\/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gbi5kKHQsImEiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPSIiLG4obi5zPTExKX0oW2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzKSxvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaShlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09by5jYWxsKGUpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHZvaWQgMD09PWV9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX1mdW5jdGlvbiB1KGUpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKXJldHVybiExO3ZhciB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PXR8fHQ9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PW8uY2FsbChlKX1mdW5jdGlvbiBmKGUsdCl7aWYobnVsbCE9ZSlpZigib2JqZWN0IiE9dHlwZW9mIGUmJihlPVtlXSksaShlKSlmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspdC5jYWxsKG51bGwsZVtuXSxuLGUpO2Vsc2UgZm9yKHZhciBvIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJnQuY2FsbChudWxsLGVbb10sbyxlKX1lLmV4cG9ydHM9e2lzQXJyYXk6aSxpc0FycmF5QnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1vLmNhbGwoZSl9LGlzQnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIXMoZSkmJm51bGwhPT1lLmNvbnN0cnVjdG9yJiYhcyhlLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBGb3JtRGF0YSYmZSBpbnN0YW5jZW9mIEZvcm1EYXRhfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc\/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX0saXNPYmplY3Q6YSxpc1BsYWluT2JqZWN0OnUsaXNVbmRlZmluZWQ6cyxpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09by5jYWxsKGUpfSxpc0ZpbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09by5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09by5jYWxsKGUpfSxpc0Z1bmN0aW9uOmMsaXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSkmJmMoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXMmJmUgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl9LGZvckVhY2g6ZixtZXJnZTpmdW5jdGlvbiBlKCl7dmFyIHQ9e307ZnVuY3Rpb24gbihuLHIpe3UodFtyXSkmJnUobik\/dFtyXT1lKHRbcl0sbik6dShuKT90W3JdPWUoe30sbik6aShuKT90W3JdPW4uc2xpY2UoKTp0W3JdPW59Zm9yKHZhciByPTAsbz1hcmd1bWVudHMubGVuZ3RoO3I8bztyKyspZihhcmd1bWVudHNbcl0sbik7cmV0dXJuIHR9LGV4dGVuZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYodCwoZnVuY3Rpb24odCxvKXtlW29dPW4mJiJmdW5jdGlvbiI9PXR5cGVvZiB0P3IodCxuKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMTcpLGk9big1KSxzPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gYShlLHQpeyFyLmlzVW5kZWZpbmVkKGUpJiZyLmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciB1LGM9e3RyYW5zaXRpb25hbDp7c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fCJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpKSYmKHU9big2KSksdSksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyh0LCJBY2NlcHQiKSxvKHQsIkNvbnRlbnQtVHlwZSIpLHIuaXNGb3JtRGF0YShlKXx8ci5pc0FycmF5QnVmZmVyKGUpfHxyLmlzQnVmZmVyKGUpfHxyLmlzU3RyZWFtKGUpfHxyLmlzRmlsZShlKXx8ci5pc0Jsb2IoZSk\/ZTpyLmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOnIuaXNVUkxTZWFyY2hQYXJhbXMoZSk\/KGEodCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxlLnRvU3RyaW5nKCkpOnIuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhhKHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQsbil7aWYoci5pc1N0cmluZyhlKSl0cnl7cmV0dXJuKHR8fEpTT04ucGFyc2UpKGUpLHIudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKG58fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWx8fGMudHJhbnNpdGlvbmFsLG49dCYmdC5zaWxlbnRKU09OUGFyc2luZyxvPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcscz0hbiYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoc3x8byYmci5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKHMpe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgaShlLHRoaXMsIkVfSlNPTl9QQVJTRSIpO3Rocm93IGV9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoifX19O3IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7Yy5oZWFkZXJzW2VdPXt9fSkpLHIuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtjLmhlYWRlcnNbZV09ci5tZXJnZShzKX0pKSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMubWVzc2FnZT1lfXIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LHIucHJvdG90eXBlLl9fQ0FOQ0VMX189ITAsZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxyPTA7cjxuLmxlbmd0aDtyKyspbltyXT1hcmd1bWVudHNbcl07cmV0dXJuIGUuYXBwbHkodCxuKX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe2lmKCF0KXJldHVybiBlO3ZhciBpO2lmKG4paT1uKHQpO2Vsc2UgaWYoci5pc1VSTFNlYXJjaFBhcmFtcyh0KSlpPXQudG9TdHJpbmcoKTtlbHNle3ZhciBzPVtdO3IuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihyLmlzQXJyYXkoZSk\/dCs9IltdIjplPVtlXSxyLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7ci5pc0RhdGUoZSk\/ZT1lLnRvSVNPU3RyaW5nKCk6ci5pc09iamVjdChlKSYmKGU9SlNPTi5zdHJpbmdpZnkoZSkpLHMucHVzaChvKHQpKyI9IitvKGUpKX0pKSl9KSksaT1zLmpvaW4oIiYiKX1pZihpKXt2YXIgYT1lLmluZGV4T2YoIiMiKTstMSE9PWEmJihlPWUuc2xpY2UoMCxhKSksZSs9KC0xPT09ZS5pbmRleE9mKCI\/Iik\/Ij8iOiImIikraX1yZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIGUuY29uZmlnPXQsbiYmKGUuY29kZT1uKSxlLnJlcXVlc3Q9cixlLnJlc3BvbnNlPW8sZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fSxlfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigxOCksaT1uKDE5KSxzPW4oNCksYT1uKDIwKSx1PW4oMjMpLGM9bigyNCksZj1uKDcpLGw9bigxKSxwPW4oMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxuKXt2YXIgZCxoPWUuZGF0YSxtPWUuaGVhZGVycyx2PWUucmVzcG9uc2VUeXBlO2Z1bmN0aW9uIHkoKXtlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGQpLGUuc2lnbmFsJiZlLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsZCl9ci5pc0Zvcm1EYXRhKGgpJiZkZWxldGUgbVsiQ29udGVudC1UeXBlIl07dmFyIGc9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIGI9ZS5hdXRoLnVzZXJuYW1lfHwiIix4PWUuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZS5hdXRoLnBhc3N3b3JkKSk6IiI7bS5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYisiOiIreCl9dmFyIHc9YShlLmJhc2VVUkwsZS51cmwpO2Z1bmN0aW9uIEUoKXtpZihnKXt2YXIgcj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGc\/dShnLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsLGk9e2RhdGE6diYmInRleHQiIT09diYmImpzb24iIT09dj9nLnJlc3BvbnNlOmcucmVzcG9uc2VUZXh0LHN0YXR1czpnLnN0YXR1cyxzdGF0dXNUZXh0Omcuc3RhdHVzVGV4dCxoZWFkZXJzOnIsY29uZmlnOmUscmVxdWVzdDpnfTtvKChmdW5jdGlvbihlKXt0KGUpLHkoKX0pLChmdW5jdGlvbihlKXtuKGUpLHkoKX0pLGkpLGc9bnVsbH19aWYoZy5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCkscyh3LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLGcudGltZW91dD1lLnRpbWVvdXQsIm9ubG9hZGVuZCJpbiBnP2cub25sb2FkZW5kPUU6Zy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtnJiY0PT09Zy5yZWFkeVN0YXRlJiYoMCE9PWcuc3RhdHVzfHxnLnJlc3BvbnNlVVJMJiYwPT09Zy5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpKSYmc2V0VGltZW91dChFKX0sZy5vbmFib3J0PWZ1bmN0aW9uKCl7ZyYmKG4oZigiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLGcpKSxnPW51bGwpfSxnLm9uZXJyb3I9ZnVuY3Rpb24oKXtuKGYoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCxnKSksZz1udWxsfSxnLm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PWUudGltZW91dD8idGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixyPWUudHJhbnNpdGlvbmFsfHxsLnRyYW5zaXRpb25hbDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSksbihmKHQsZSxyLmNsYXJpZnlUaW1lb3V0RXJyb3I\/IkVUSU1FRE9VVCI6IkVDT05OQUJPUlRFRCIsZykpLGc9bnVsbH0sci5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgUz0oZS53aXRoQ3JlZGVudGlhbHN8fGModykpJiZlLnhzcmZDb29raWVOYW1lP2kucmVhZChlLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7UyYmKG1bZS54c3JmSGVhZGVyTmFtZV09Uyl9InNldFJlcXVlc3RIZWFkZXIiaW4gZyYmci5mb3JFYWNoKG0sKGZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09aCYmImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCk\/ZGVsZXRlIG1bdF06Zy5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSksci5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fChnLndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSx2JiYianNvbiIhPT12JiYoZy5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmZy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJmcudXBsb2FkJiZnLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYoZD1mdW5jdGlvbihlKXtnJiYobighZXx8ZSYmZS50eXBlP25ldyBwKCJjYW5jZWxlZCIpOmUpLGcuYWJvcnQoKSxnPW51bGwpfSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnN1YnNjcmliZShkKSxlLnNpZ25hbCYmKGUuc2lnbmFsLmFib3J0ZWQ\/ZCgpOmUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixkKSkpLGh8fChoPW51bGwpLGcuc2VuZChoKX0pKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4sbyxpKXt2YXIgcz1uZXcgRXJyb3IoZSk7cmV0dXJuIHIocyx0LG4sbyxpKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLl9fQ0FOQ0VMX18pfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIG49e307ZnVuY3Rpb24gbyhlLHQpe3JldHVybiByLmlzUGxhaW5PYmplY3QoZSkmJnIuaXNQbGFpbk9iamVjdCh0KT9yLm1lcmdlKGUsdCk6ci5pc1BsYWluT2JqZWN0KHQpP3IubWVyZ2Uoe30sdCk6ci5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIGkobil7cmV0dXJuIHIuaXNVbmRlZmluZWQodFtuXSk\/ci5pc1VuZGVmaW5lZChlW25dKT92b2lkIDA6byh2b2lkIDAsZVtuXSk6byhlW25dLHRbbl0pfWZ1bmN0aW9uIHMoZSl7aWYoIXIuaXNVbmRlZmluZWQodFtlXSkpcmV0dXJuIG8odm9pZCAwLHRbZV0pfWZ1bmN0aW9uIGEobil7cmV0dXJuIHIuaXNVbmRlZmluZWQodFtuXSk\/ci5pc1VuZGVmaW5lZChlW25dKT92b2lkIDA6byh2b2lkIDAsZVtuXSk6byh2b2lkIDAsdFtuXSl9ZnVuY3Rpb24gdShuKXtyZXR1cm4gbiBpbiB0P28oZVtuXSx0W25dKTpuIGluIGU\/byh2b2lkIDAsZVtuXSk6dm9pZCAwfXZhciBjPXt1cmw6cyxtZXRob2Q6cyxkYXRhOnMsYmFzZVVSTDphLHRyYW5zZm9ybVJlcXVlc3Q6YSx0cmFuc2Zvcm1SZXNwb25zZTphLHBhcmFtc1NlcmlhbGl6ZXI6YSx0aW1lb3V0OmEsdGltZW91dE1lc3NhZ2U6YSx3aXRoQ3JlZGVudGlhbHM6YSxhZGFwdGVyOmEscmVzcG9uc2VUeXBlOmEseHNyZkNvb2tpZU5hbWU6YSx4c3JmSGVhZGVyTmFtZTphLG9uVXBsb2FkUHJvZ3Jlc3M6YSxvbkRvd25sb2FkUHJvZ3Jlc3M6YSxkZWNvbXByZXNzOmEsbWF4Q29udGVudExlbmd0aDphLG1heEJvZHlMZW5ndGg6YSx0cmFuc3BvcnQ6YSxodHRwQWdlbnQ6YSxodHRwc0FnZW50OmEsY2FuY2VsVG9rZW46YSxzb2NrZXRQYXRoOmEscmVzcG9uc2VFbmNvZGluZzphLHZhbGlkYXRlU3RhdHVzOnV9O3JldHVybiByLmZvckVhY2goT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKSwoZnVuY3Rpb24oZSl7dmFyIHQ9Y1tlXXx8aSxvPXQoZSk7ci5pc1VuZGVmaW5lZChvKSYmdCE9PXV8fChuW2VdPW8pfSkpLG59fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17dmVyc2lvbjoiMC4yNC4wIn19LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxMil9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMyksaT1uKDEzKSxzPW4oOSk7dmFyIGE9ZnVuY3Rpb24gZSh0KXt2YXIgbj1uZXcgaSh0KSxhPW8oaS5wcm90b3R5cGUucmVxdWVzdCxuKTtyZXR1cm4gci5leHRlbmQoYSxpLnByb3RvdHlwZSxuKSxyLmV4dGVuZChhLG4pLGEuY3JlYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBlKHModCxuKSl9LGF9KG4oMSkpO2EuQXhpb3M9aSxhLkNhbmNlbD1uKDIpLGEuQ2FuY2VsVG9rZW49bigyNiksYS5pc0NhbmNlbD1uKDgpLGEuVkVSU0lPTj1uKDEwKS52ZXJzaW9uLGEuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX0sYS5zcHJlYWQ9bigyNyksYS5pc0F4aW9zRXJyb3I9bigyOCksZS5leHBvcnRzPWEsZS5leHBvcnRzLmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89big0KSxpPW4oMTQpLHM9bigxNSksYT1uKDkpLHU9bigyNSksYz11LnZhbGlkYXRvcnM7ZnVuY3Rpb24gZihlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IGkscmVzcG9uc2U6bmV3IGl9fWYucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlPyhlPWFyZ3VtZW50c1sxXXx8e30pLnVybD1hcmd1bWVudHNbMF06ZT1lfHx7fSwoZT1hKHRoaXMuZGVmYXVsdHMsZSkpLm1ldGhvZD9lLm1ldGhvZD1lLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP2UubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6ZS5tZXRob2Q9ImdldCI7dmFyIHQ9ZS50cmFuc2l0aW9uYWw7dm9pZCAwIT09dCYmdS5hc3NlcnRPcHRpb25zKHQse3NpbGVudEpTT05QYXJzaW5nOmMudHJhbnNpdGlvbmFsKGMuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6Yy50cmFuc2l0aW9uYWwoYy5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOmMudHJhbnNpdGlvbmFsKGMuYm9vbGVhbil9LCExKTt2YXIgbj1bXSxyPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQucnVuV2hlbiYmITE9PT10LnJ1bldoZW4oZSl8fChyPXImJnQuc3luY2hyb25vdXMsbi51bnNoaWZ0KHQuZnVsZmlsbGVkLHQucmVqZWN0ZWQpKX0pKTt2YXIgbyxpPVtdO2lmKHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kucHVzaChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKX0pKSwhcil7dmFyIGY9W3Msdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZixuKSxmPWYuY29uY2F0KGkpLG89UHJvbWlzZS5yZXNvbHZlKGUpO2YubGVuZ3RoOylvPW8udGhlbihmLnNoaWZ0KCksZi5zaGlmdCgpKTtyZXR1cm4gb31mb3IodmFyIGw9ZTtuLmxlbmd0aDspe3ZhciBwPW4uc2hpZnQoKSxkPW4uc2hpZnQoKTt0cnl7bD1wKGwpfWNhdGNoKGUpe2QoZSk7YnJlYWt9fXRyeXtvPXMobCl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7aS5sZW5ndGg7KW89by50aGVuKGkuc2hpZnQoKSxpLnNoaWZ0KCkpO3JldHVybiBvfSxmLnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9YSh0aGlzLmRlZmF1bHRzLGUpLG8oZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0sci5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSwoZnVuY3Rpb24oZSl7Zi5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGEobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KG58fHt9KS5kYXRhfSkpfX0pKSxyLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7Zi5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0aGlzLnJlcXVlc3QoYShyfHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpufSkpfX0pKSxlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2Z1bmN0aW9uIG8oKXt0aGlzLmhhbmRsZXJzPVtdfW8ucHJvdG90eXBlLnVzZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czohIW4mJm4uc3luY2hyb25vdXMscnVuV2hlbjpuP24ucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sby5wcm90b3R5cGUuZWplY3Q9ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVyc1tlXSYmKHRoaXMuaGFuZGxlcnNbZV09bnVsbCl9LG8ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7ci5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsKGZ1bmN0aW9uKHQpe251bGwhPT10JiZlKHQpfSkpfSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigxNiksaT1uKDgpLHM9bigxKSxhPW4oMik7ZnVuY3Rpb24gdShlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgYSgiY2FuY2VsZWQiKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPW8uY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9ci5tZXJnZShlLmhlYWRlcnMuY29tbW9ufHx7fSxlLmhlYWRlcnNbZS5tZXRob2RdfHx7fSxlLmhlYWRlcnMpLHIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxzLmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB1KGUpLHQuZGF0YT1vLmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGkodCl8fCh1KGUpLHQmJnQucmVzcG9uc2UmJih0LnJlc3BvbnNlLmRhdGE9by5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXN8fG87cmV0dXJuIHIuZm9yRWFjaChuLChmdW5jdGlvbihuKXtlPW4uY2FsbChpLGUsdCl9KSksZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyLmZvckVhY2goZSwoZnVuY3Rpb24obixyKXtyIT09dCYmci50b1VwcGVyQ2FzZSgpPT09dC50b1VwcGVyQ2FzZSgpJiYoZVt0XT1uLGRlbGV0ZSBlW3JdKX0pKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW4uY29uZmlnLnZhbGlkYXRlU3RhdHVzO24uc3RhdHVzJiZvJiYhbyhuLnN0YXR1cyk\/dChyKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrbi5zdGF0dXMsbi5jb25maWcsbnVsbCxuLnJlcXVlc3QsbikpOmUobil9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZS5leHBvcnRzPXIuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LG4sbyxpLHMpe3ZhciBhPVtdO2EucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLHIuaXNOdW1iZXIobikmJmEucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKG4pLnRvR01UU3RyaW5nKCkpLHIuaXNTdHJpbmcobykmJmEucHVzaCgicGF0aD0iK28pLHIuaXNTdHJpbmcoaSkmJmEucHVzaCgiZG9tYWluPSIraSksITA9PT1zJiZhLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1hLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIxKSxvPW4oMjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiYhcih0KT9vKGUsdCk6dH19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybi9eKFthLXpdW2EtelxkXCtcLVwuXSo6KT9cL1wvL2kudGVzdChlKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ\/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK3QucmVwbGFjZSgvXlwvKy8sIiIpOmV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxuLGkscz17fTtyZXR1cm4gZT8oci5mb3JFYWNoKGUuc3BsaXQoIlxuIiksKGZ1bmN0aW9uKGUpe2lmKGk9ZS5pbmRleE9mKCI6IiksdD1yLnRyaW0oZS5zdWJzdHIoMCxpKSkudG9Mb3dlckNhc2UoKSxuPXIudHJpbShlLnN1YnN0cihpKzEpKSx0KXtpZihzW3RdJiZvLmluZGV4T2YodCk+PTApcmV0dXJuO3NbdF09InNldC1jb29raWUiPT09dD8oc1t0XT9zW3RdOltdKS5jb25jYXQoW25dKTpzW3RdP3NbdF0rIiwgIituOm59fSkpLHMpOnN9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZS5leHBvcnRzPXIuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBlLHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBvKGUpe3ZhciByPWU7cmV0dXJuIHQmJihuLnNldEF0dHJpYnV0ZSgiaHJlZiIscikscj1uLmhyZWYpLG4uc2V0QXR0cmlidXRlKCJocmVmIixyKSx7aHJlZjpuLmhyZWYscHJvdG9jb2w6bi5wcm90b2NvbD9uLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpuLmhvc3Qsc2VhcmNoOm4uc2VhcmNoP24uc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6bi5oYXNoP24uaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOm4uaG9zdG5hbWUscG9ydDpuLnBvcnQscGF0aG5hbWU6Ii8iPT09bi5wYXRobmFtZS5jaGFyQXQoMCk\/bi5wYXRobmFtZToiLyIrbi5wYXRobmFtZX19cmV0dXJuIGU9byh3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24odCl7dmFyIG49ci5pc1N0cmluZyh0KT9vKHQpOnQ7cmV0dXJuIG4ucHJvdG9jb2w9PT1lLnByb3RvY29sJiZuLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTApLnZlcnNpb24sbz17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7b1tlXT1mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PT1lfHwiYSIrKHQ8MT8ibiAiOiIgIikrZX19KSk7dmFyIGk9e307by50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4iW0F4aW9zIHYiK3IrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitlKyInIit0KyhuPyIuICIrbjoiIil9cmV0dXJuIGZ1bmN0aW9uKG4scixzKXtpZighMT09PWUpdGhyb3cgbmV3IEVycm9yKG8ociwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSkpO3JldHVybiB0JiYhaVtyXSYmKGlbcl09ITAsY29uc29sZS53YXJuKG8ociwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShuLHIscyl9fSxlLmV4cG9ydHM9e2Fzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciByPU9iamVjdC5rZXlzKGUpLG89ci5sZW5ndGg7by0tID4wOyl7dmFyIGk9cltvXSxzPXRbaV07aWYocyl7dmFyIGE9ZVtpXSx1PXZvaWQgMD09PWF8fHMoYSxpLGUpO2lmKCEwIT09dSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIitpKyIgbXVzdCBiZSAiK3UpfWVsc2UgaWYoITAhPT1uKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2kpfX0sdmFsaWRhdG9yczpvfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIpO2Z1bmN0aW9uIG8oZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciBuPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKG4uX2xpc3RlbmVycyl7dmFyIHQscj1uLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxyO3QrKyluLl9saXN0ZW5lcnNbdF0oZSk7bi5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe24uc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiByLmNhbmNlbD1mdW5jdGlvbigpe24udW5zdWJzY3JpYmUodCl9LHJ9LGUoKGZ1bmN0aW9uKGUpe24ucmVhc29ufHwobi5yZWFzb249bmV3IHIoZSksdChuLnJlYXNvbikpfSkpfW8ucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn0sby5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxvLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlzLl9saXN0ZW5lcnMpe3ZhciB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGUpOy0xIT09dCYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfX0sby5zb3VyY2U9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm57dG9rZW46bmV3IG8oKGZ1bmN0aW9uKHQpe2U9dH0pKSxjYW5jZWw6ZX19LGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkobnVsbCx0KX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJiEwPT09ZS5pc0F4aW9zRXJyb3J9fV0pfSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1heGlvcy5taW4ubWFwOwovKiogL20vanMvdmFuaWxsYWpzL3ByaXN0aW5lLm1pbi5qcyAqKi8KIWZ1bmN0aW9uKGUscil7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1yKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUocik6KGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuUHJpc3RpbmU9cigpfSh0aGlzLChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17ZW46e3JlcXVpcmVkOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIixlbWFpbDoiVGhpcyBmaWVsZCByZXF1aXJlcyBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzIixudW1iZXI6IlRoaXMgZmllbGQgcmVxdWlyZXMgYSBudW1iZXIiLGludGVnZXI6IlRoaXMgZmllbGQgcmVxdWlyZXMgYW4gaW50ZWdlciB2YWx1ZSIsdXJsOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGEgdmFsaWQgd2Vic2l0ZSBVUkwiLHRlbDoiVGhpcyBmaWVsZCByZXF1aXJlcyBhIHZhbGlkIHRlbGVwaG9uZSBudW1iZXIiLG1heGxlbmd0aDoiVGhpcyBmaWVsZHMgbGVuZ3RoIG11c3QgYmUgPCAkezF9IixtaW5sZW5ndGg6IlRoaXMgZmllbGRzIGxlbmd0aCBtdXN0IGJlID4gJHsxfSIsbWluOiJNaW5pbXVtIHZhbHVlIGZvciB0aGlzIGZpZWxkIGlzICR7MX0iLG1heDoiTWF4aW11bSB2YWx1ZSBmb3IgdGhpcyBmaWVsZCBpcyAkezF9IixwYXR0ZXJuOiJQbGVhc2UgbWF0Y2ggdGhlIHJlcXVlc3RlZCBmb3JtYXQiLGVxdWFsczoiVGhlIHR3byBmaWVsZHMgZG8gbm90IG1hdGNoIn19O2Z1bmN0aW9uIHIoZSl7dmFyIHI9YXJndW1lbnRzO3JldHVybiB0aGlzLnJlcGxhY2UoL1wkeyhbXnt9XSopfS9nLChmdW5jdGlvbihlLHQpe3JldHVybiByW3RdfSkpfWZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUucHJpc3RpbmUuc2VsZi5mb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9IicrZS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSsnIl06Y2hlY2tlZCcpLmxlbmd0aH12YXIgbj17Y2xhc3NUbzoiZm9ybS1ncm91cCIsZXJyb3JDbGFzczoiaGFzLWRhbmdlciIsc3VjY2Vzc0NsYXNzOiJoYXMtc3VjY2VzcyIsZXJyb3JUZXh0UGFyZW50OiJmb3JtLWdyb3VwIixlcnJvclRleHRUYWc6ImRpdiIsZXJyb3JUZXh0Q2xhc3M6InRleHQtaGVscCJ9LGk9WyJyZXF1aXJlZCIsIm1pbiIsIm1heCIsIm1pbmxlbmd0aCIsIm1heGxlbmd0aCIsInBhdHRlcm4iXSxzPS9eKChbXjw+KClcW1xdXFwuLDs6XHNAIl0rKFwuW148PigpXFtcXVxcLiw7OlxzQCJdKykqKXwoIi4rIikpQCgoXFtbMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XSl8KChbYS16QS1aXC0wLTldK1wuKStbYS16QS1aXXsyLH0pKSQvLGE9Ly1tZXNzYWdlKD86LShbYS16XXsyfSg\/Ol9bQS1aXXsyfSk\/KSk\/LyxvPSJlbiIsbD17fSx1PWZ1bmN0aW9uKGUscil7ci5uYW1lPWUsdm9pZCAwPT09ci5wcmlvcml0eSYmKHIucHJpb3JpdHk9MSksbFtlXT1yfTtmdW5jdGlvbiBmKHQscyx1KXt2YXIgZj10aGlzO2Z1bmN0aW9uIGMoZSxyLHQsbil7dmFyIGk9bFt0XTtpZihpJiYoZS5wdXNoKGkpLG4pKXt2YXIgcz0icGF0dGVybiI9PT10P1tuXTpuLnNwbGl0KCIsIik7cy51bnNoaWZ0KG51bGwpLHJbdF09c319ZnVuY3Rpb24gcCh0KXtmb3IodmFyIG49W10saT0hMCxzPTA7dC52YWxpZGF0b3JzW3NdO3MrKyl7dmFyIGE9dC52YWxpZGF0b3JzW3NdLGw9dC5wYXJhbXNbYS5uYW1lXT90LnBhcmFtc1thLm5hbWVdOltdO2lmKGxbMF09dC5pbnB1dC52YWx1ZSwhYS5mbi5hcHBseSh0LmlucHV0LGwpJiYoaT0hMSwiZnVuY3Rpb24iPT10eXBlb2YgYS5tc2c\/bi5wdXNoKGEubXNnKHQuaW5wdXQudmFsdWUsbCkpOiJzdHJpbmciPT10eXBlb2YgYS5tc2c\/bi5wdXNoKHIuYXBwbHkoYS5tc2csbCkpOmEubXNnPT09T2JqZWN0KGEubXNnKSYmYS5tc2dbb10\/bi5wdXNoKHIuYXBwbHkoYS5tc2dbb10sbCkpOnQubWVzc2FnZXNbb10mJnQubWVzc2FnZXNbb11bYS5uYW1lXT9uLnB1c2goci5hcHBseSh0Lm1lc3NhZ2VzW29dW2EubmFtZV0sbCkpOmVbb10mJmVbb11bYS5uYW1lXSYmbi5wdXNoKHIuYXBwbHkoZVtvXVthLm5hbWVdLGwpKSwhMD09PWEuaGFsdCkpYnJlYWt9cmV0dXJuIHQuZXJyb3JzPW4saX1mdW5jdGlvbiBtKGUpe2lmKGUuZXJyb3JFbGVtZW50cylyZXR1cm4gZS5lcnJvckVsZW1lbnRzO3ZhciByPWZ1bmN0aW9uKGUscil7Zm9yKDsoZT1lLnBhcmVudEVsZW1lbnQpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMocik7KTtyZXR1cm4gZX0oZS5pbnB1dCxmLmNvbmZpZy5jbGFzc1RvKSx0PW51bGwsbj1udWxsO3JldHVybih0PWYuY29uZmlnLmNsYXNzVG89PT1mLmNvbmZpZy5lcnJvclRleHRQYXJlbnQ\/cjpyLnF1ZXJ5U2VsZWN0b3IoIi4iK2YuY29uZmlnLmVycm9yVGV4dFBhcmVudCkpJiYoKG49dC5xdWVyeVNlbGVjdG9yKCIucHJpc3RpbmUtZXJyb3IiKSl8fCgobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGYuY29uZmlnLmVycm9yVGV4dFRhZykpLmNsYXNzTmFtZT0icHJpc3RpbmUtZXJyb3IgIitmLmNvbmZpZy5lcnJvclRleHRDbGFzcyx0LmFwcGVuZENoaWxkKG4pLG4ucHJpc3RpbmVEaXNwbGF5PW4uc3R5bGUuZGlzcGxheSkpLGUuZXJyb3JFbGVtZW50cz1bcixuXX1mdW5jdGlvbiBkKGUpe3ZhciByPW0oZSksdD1yWzBdLG49clsxXTt0JiYodC5jbGFzc0xpc3QucmVtb3ZlKGYuY29uZmlnLnN1Y2Nlc3NDbGFzcyksdC5jbGFzc0xpc3QuYWRkKGYuY29uZmlnLmVycm9yQ2xhc3MpKSxuJiYobi5pbm5lckhUTUw9ZS5lcnJvcnMuam9pbigiPGJyLz4iKSxuLnN0eWxlLmRpc3BsYXk9bi5wcmlzdGluZURpc3BsYXl8fCIiKX1mdW5jdGlvbiBoKGUpe3ZhciByPWZ1bmN0aW9uKGUpe3ZhciByPW0oZSksdD1yWzBdLG49clsxXTtyZXR1cm4gdCYmKHQuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5lcnJvckNsYXNzKSx0LmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuc3VjY2Vzc0NsYXNzKSksbiYmKG4uaW5uZXJIVE1MPSIiLG4uc3R5bGUuZGlzcGxheT0ibm9uZSIpLHJ9KGUpWzBdO3ImJnIuY2xhc3NMaXN0LmFkZChmLmNvbmZpZy5zdWNjZXNzQ2xhc3MpfXJldHVybiBmdW5jdGlvbihlLHIsdCl7ZS5zZXRBdHRyaWJ1dGUoIm5vdmFsaWRhdGUiLCJ0cnVlIiksZi5mb3JtPWUsZi5jb25maWc9ZnVuY3Rpb24oZSxyKXtmb3IodmFyIHQgaW4gcil0IGluIGV8fChlW3RdPXJbdF0pO3JldHVybiBlfShyfHx7fSxuKSxmLmxpdmU9ISghMT09PXQpLGYuZmllbGRzPUFycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dDpub3QoW3R5cGVePWhpZGRlbl0pOm5vdChbdHlwZV49c3VibWl0XSksIHNlbGVjdCwgdGV4dGFyZWEiKSkubWFwKGZ1bmN0aW9uKGUpe3ZhciByPVtdLHQ9e30sbj17fTtyZXR1cm5bXS5mb3JFYWNoLmNhbGwoZS5hdHRyaWJ1dGVzLChmdW5jdGlvbihlKXtpZigvXmRhdGEtcHJpc3RpbmUtLy50ZXN0KGUubmFtZSkpe3ZhciBzPWUubmFtZS5zdWJzdHIoMTQpLG89cy5tYXRjaChhKTtpZihudWxsIT09byl7dmFyIGw9dm9pZCAwPT09b1sxXT8iZW4iOm9bMV07cmV0dXJuIG4uaGFzT3duUHJvcGVydHkobCl8fChuW2xdPXt9KSx2b2lkKG5bbF1bcy5zbGljZSgwLHMubGVuZ3RoLW9bMF0ubGVuZ3RoKV09ZS52YWx1ZSl9InR5cGUiPT09cyYmKHM9ZS52YWx1ZSksYyhyLHQscyxlLnZhbHVlKX1lbHNlfmkuaW5kZXhPZihlLm5hbWUpP2Mocix0LGUubmFtZSxlLnZhbHVlKToidHlwZSI9PT1lLm5hbWUmJmMocix0LGUudmFsdWUpfSkpLHIuc29ydCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gci5wcmlvcml0eS1lLnByaW9yaXR5fSkpLGYubGl2ZSYmZS5hZGRFdmVudExpc3RlbmVyKH5bInJhZGlvIiwiY2hlY2tib3giXS5pbmRleE9mKGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpPyJjaGFuZ2UiOiJpbnB1dCIsZnVuY3Rpb24oZSl7Zi52YWxpZGF0ZShlLnRhcmdldCl9LmJpbmQoZikpLGUucHJpc3RpbmU9e2lucHV0OmUsdmFsaWRhdG9yczpyLHBhcmFtczp0LG1lc3NhZ2VzOm4sc2VsZjpmfX0uYmluZChmKSl9KHQscyx1KSxmLnZhbGlkYXRlPWZ1bmN0aW9uKGUscil7cj1lJiYhMD09PXJ8fCEwPT09ZTt2YXIgdD1mLmZpZWxkczshMCE9PWUmJiExIT09ZSYmKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudD90PVtlLnByaXN0aW5lXTooZSBpbnN0YW5jZW9mIE5vZGVMaXN0fHxlIGluc3RhbmNlb2Yod2luZG93LiR8fEFycmF5KXx8ZSBpbnN0YW5jZW9mIEFycmF5KSYmKHQ9QXJyYXkuZnJvbShlKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnByaXN0aW5lfSkpKSk7Zm9yKHZhciBuPSEwLGk9MDt0W2ldO2krKyl7dmFyIHM9dFtpXTtwKHMpPyFyJiZoKHMpOihuPSExLCFyJiZkKHMpKX1yZXR1cm4gbn0sZi5nZXRFcnJvcnM9ZnVuY3Rpb24oZSl7aWYoIWUpe2Zvcih2YXIgcj1bXSx0PTA7dDxmLmZpZWxkcy5sZW5ndGg7dCsrKXt2YXIgbj1mLmZpZWxkc1t0XTtuLmVycm9ycy5sZW5ndGgmJnIucHVzaCh7aW5wdXQ6bi5pbnB1dCxlcnJvcnM6bi5lcnJvcnN9KX1yZXR1cm4gcn1yZXR1cm4gZS50YWdOYW1lJiYic2VsZWN0Ij09PWUudGFnTmFtZS50b0xvd2VyQ2FzZSgpP2UucHJpc3RpbmUuZXJyb3JzOmUubGVuZ3RoP2VbMF0ucHJpc3RpbmUuZXJyb3JzOmUucHJpc3RpbmUuZXJyb3JzfSxmLmFkZFZhbGlkYXRvcj1mdW5jdGlvbihlLHIsdCxuLGkpe2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudD8oZS5wcmlzdGluZS52YWxpZGF0b3JzLnB1c2goe2ZuOnIsbXNnOnQscHJpb3JpdHk6bixoYWx0Oml9KSxlLnByaXN0aW5lLnZhbGlkYXRvcnMuc29ydCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gci5wcmlvcml0eS1lLnByaW9yaXR5fSkpKTpjb25zb2xlLndhcm4oIlRoZSBwYXJhbWV0ZXIgZWxlbSBtdXN0IGJlIGEgZG9tIGVsZW1lbnQiKX0sZi5hZGRFcnJvcj1mdW5jdGlvbihlLHIpeyhlPWUubGVuZ3RoP2VbMF06ZSkucHJpc3RpbmUuZXJyb3JzLnB1c2gociksZChlLnByaXN0aW5lKX0sZi5yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2YuZmllbGRzW2VdO2UrKylmLmZpZWxkc1tlXS5lcnJvckVsZW1lbnRzPW51bGw7QXJyYXkuZnJvbShmLmZvcm0ucXVlcnlTZWxlY3RvckFsbCgiLnByaXN0aW5lLWVycm9yIikpLm1hcCgoZnVuY3Rpb24oZSl7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSkpLEFycmF5LmZyb20oZi5mb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK2YuY29uZmlnLmNsYXNzVG8pKS5tYXAoKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5zdWNjZXNzQ2xhc3MpLGUuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5lcnJvckNsYXNzKX0pKX0sZi5kZXN0cm95PWZ1bmN0aW9uKCl7Zi5yZXNldCgpLGYuZmllbGRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2RlbGV0ZSBlLmlucHV0LnByaXN0aW5lfSkpLGYuZmllbGRzPVtdfSxmLnNldEdsb2JhbENvbmZpZz1mdW5jdGlvbihlKXtuPWV9LGZ9cmV0dXJuIHUoInRleHQiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4hMH0scHJpb3JpdHk6MH0pLHUoInJlcXVpcmVkIix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuInJhZGlvIj09PXRoaXMudHlwZXx8ImNoZWNrYm94Ij09PXRoaXMudHlwZT90KHRoaXMpOnZvaWQgMCE9PWUmJiIiIT09ZX0scHJpb3JpdHk6OTksaGFsdDohMH0pLHUoImVtYWlsIix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fHMudGVzdChlKX19KSx1KCJudW1iZXIiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4hZXx8IWlzTmFOKHBhcnNlRmxvYXQoZSkpfSxwcmlvcml0eToyfSksdSgiaW50ZWdlciIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiFlfHwvXlxkKyQvLnRlc3QoZSl9fSksdSgibWlubGVuZ3RoIix7Zm46ZnVuY3Rpb24oZSxyKXtyZXR1cm4hZXx8ZS5sZW5ndGg+PXBhcnNlSW50KHIpfX0pLHUoIm1heGxlbmd0aCIse2ZuOmZ1bmN0aW9uKGUscil7cmV0dXJuIWV8fGUubGVuZ3RoPD1wYXJzZUludChyKX19KSx1KCJtaW4iLHtmbjpmdW5jdGlvbihlLHIpe3JldHVybiFlfHwoImNoZWNrYm94Ij09PXRoaXMudHlwZT90KHRoaXMpPj1wYXJzZUludChyKTpwYXJzZUZsb2F0KGUpPj1wYXJzZUZsb2F0KHIpKX19KSx1KCJtYXgiLHtmbjpmdW5jdGlvbihlLHIpe3JldHVybiFlfHwoImNoZWNrYm94Ij09PXRoaXMudHlwZT90KHRoaXMpPD1wYXJzZUludChyKTpwYXJzZUZsb2F0KGUpPD1wYXJzZUZsb2F0KHIpKX19KSx1KCJwYXR0ZXJuIix7Zm46ZnVuY3Rpb24oZSxyKXt2YXIgdD1yLm1hdGNoKG5ldyBSZWdFeHAoIl4vKC4qPykvKFtnaW15XSopJCIpKTtyZXR1cm4hZXx8bmV3IFJlZ0V4cCh0WzFdLHRbMl0pLnRlc3QoZSl9fSksdSgiZXF1YWxzIix7Zm46ZnVuY3Rpb24oZSxyKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHIpO3JldHVybiB0JiYoIWUmJiF0LnZhbHVlfHx0LnZhbHVlPT09ZSl9fSksZi5hZGRWYWxpZGF0b3I9ZnVuY3Rpb24oZSxyLHQsbixpKXt1KGUse2ZuOnIsbXNnOnQscHJpb3JpdHk6bixoYWx0Oml9KX0sZi5hZGRNZXNzYWdlcz1mdW5jdGlvbihyLHQpe3ZhciBuPWUuaGFzT3duUHJvcGVydHkocik\/ZVtyXTplW3JdPXt9O09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUscil7bltlXT10W2VdfSkpfSxmLnNldExvY2FsZT1mdW5jdGlvbihlKXtvPWV9LGZ9KSk7CgovL0V4dGVuc2lvbgovLyBBIHZhbGlkYXRvciB0byBjaGVjayBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlCi8vIFRoZSBnbG9iYWwgdmFsaWRhdG9yIG11c3QgYmUgYWRkZWQgYmVmb3JlIGNyZWF0aW5nIHRoZSBwcmlzdGluZSBpbnN0YW5jZQoKLy8gUHJpc3RpbmUuYWRkVmFsaWRhdG9yKCJwaG9uZSIsIGZ1bmN0aW9uKHBob25lKSB7CgovLyAJdmFyIFZhbGlkQXJlYUNvZGVzID0gWwovLyAJCTQzOCw1MTQsMjYzLDQ1MCw1NzksODE5LDI0OSw3MDUsMjI2LAovLyAJCTUxOSwyODksMzY1LDkwNSw0MTYsNDM3LDY0NywzNDMsCi8vIAkJNjEzLDcwOSw4NzMsNDE4LDU4MSw1MDYsOTAyCi8vIAldOwoKLy8gCXBob25lID0gcGhvbmUucmVwbGFjZSgvW14wLTldKy9naSwgJycpOwovLyAJaWYodHlwZW9mIGVtYWlsSGFuZGxlciE9J3VuZGVmaW5lZCcgJiYgdGhpcy5oYXNDbGFzcygncmVxdWlyZWQnKSkgewovLyAJCWVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT10cnVlOwovLyAJfQovLyAJaWYoIHBob25lWzBdID09ICcxJyApewovLyAJCXBob25lID0gcGhvbmUuc3Vic3RyaW5nKCAxICk7Ci8vIAl9CgovLyAJdmFyIGFyZWFDb2RlID0gcGFyc2VJbnQoIHBob25lLnN1YnN0cmluZygwLDMpICk7CgovLyAJYXhpb3MuZ2V0KCdodHRwczovL2F1dG9hdWJhaW5lLmNvbS9zZXJ2aWNlcy92YWxpZGF0ZVBob25lTnVtYmVyLnBocCcsewovLyAJCXRpbWVvdXQ6MjAwMCwKLy8gCQlkYXRhVHlwZTogJ2pzb24nLAovLyAJCXBhcmFtczoge3Bob25lOiBwaG9uZX0sCi8vIAkJcmVzcG9uc2VUeXBlOiAnanNvbicKLy8gCX0pCi8vIAkudGhlbihmdW5jdGlvbihyZXMpIHsKCi8vIAkJaWYgKHR5cGVvZiByZXMuaXNPayAhPT0gJ3VuZGVmaW5lZCcpewovLyAJCQlpZiAocmVzLnBob25lTnVtYmVySXNWYWxpZCA9PT0gZmFsc2UpIHsKLy8gCQkJCS8vY29uc29sZS5sb2coJ3Bob25lICcrcGhvbmUrJyBpcyBpbnZhbGlkJyk7Ci8vIAkJCQlpZih0eXBlb2YgZW1haWxIYW5kbGVyIT0ndW5kZWZpbmVkJyAmJiBlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnkgKSB7Ci8vIAkJCQkJZW1haWxIYW5kbGVyLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzKys7Ci8vIAkJCQl9Ci8vIAkJCQlyZXR1cm4gdHJ1ZTsKLy8gCQkJfQovLyAJCQl9IGVsc2UgewovLyAJCQkvL3ZhbGlkYXRlIGFyZWFjb2RlIGF0IGxlYXN0Ci8vIAkJCWlmKCB0eXBlb2YgVmFsaWRBcmVhQ29kZXMuaW5kZXhPZiAhPSAndW5kZWZpbmVkJyAmJglWYWxpZEFyZWFDb2Rlcy5pbmRleE9mKCBhcmVhQ29kZSApID09IC0xICl7Ci8vIAkJCQlyZXR1cm4gZmFsc2U7Ci8vIAkJCX0KLy8gCQl9CgovLyAJfSkKLy8gCS5jYXRjaChmdW5jdGlvbihlcnJvcikgewovLyAJCS8vIHZhbGlkYXRlIGFyZWFjb2RlIGF0IGxlYXN0Ci8vIAkJaWYoIHR5cGVvZiBWYWxpZEFyZWFDb2Rlcy5pbmRleE9mICE9ICd1bmRlZmluZWQnICYmCVZhbGlkQXJlYUNvZGVzLmluZGV4T2YoIGFyZWFDb2RlICkgPT0gLTEgKXsKLy8gCQlpZih0eXBlb2YgZW1haWxIYW5kbGVyIT0ndW5kZWZpbmVkJwkmJiBlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnkpIGVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrOwovLyAJCQlyZXR1cm4gZmFsc2U7Ci8vIAkJfQovLyAJCS8vY29uc29sZS5sb2coInZhbGlkaXR5IHZhbGlkYXRlUGhvbmVOdW1iZXIgbmV0d29yayBlcnJvciIpOwoKLy8gCQlyZXR1cm4gZmFsc2U7Ci8vIAl9KTsKCgoKLy8gfSwgIlRoZSB2YWx1ZSAoJHswfSkgbXVzdCBiZSBiZXR3ZWVuICR7MX0gYW5kICR7Mn0iLCA1LCBmYWxzZSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvZmxhdHBpY2tyLm1pbi5qcyAqKi8KLyogZmxhdHBpY2tyIHY0LjYuOSwsIEBsaWNlbnNlIE1JVCAqLwohZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0KTooZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczplfHxzZWxmKS5mbGF0cGlja3I9dCgpfSh0aGlzLChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT1mdW5jdGlvbigpe3JldHVybihlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEsYT1hcmd1bWVudHMubGVuZ3RoO248YTtuKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpJiYoZVtpXT10W2ldKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gdCgpe2Zvcih2YXIgZT0wLHQ9MCxuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKyllKz1hcmd1bWVudHNbdF0ubGVuZ3RoO3ZhciBhPUFycmF5KGUpLGk9MDtmb3IodD0wO3Q8bjt0KyspZm9yKHZhciBvPWFyZ3VtZW50c1t0XSxyPTAsbD1vLmxlbmd0aDtyPGw7cisrLGkrKylhW2ldPW9bcl07cmV0dXJuIGF9dmFyIG49WyJvbkNoYW5nZSIsIm9uQ2xvc2UiLCJvbkRheUNyZWF0ZSIsIm9uRGVzdHJveSIsIm9uS2V5RG93biIsIm9uTW9udGhDaGFuZ2UiLCJvbk9wZW4iLCJvblBhcnNlQ29uZmlnIiwib25SZWFkeSIsIm9uVmFsdWVVcGRhdGUiLCJvblllYXJDaGFuZ2UiLCJvblByZUNhbGVuZGFyUG9zaXRpb24iXSxhPXtfZGlzYWJsZTpbXSxhbGxvd0lucHV0OiExLGFsbG93SW52YWxpZFByZWxvYWQ6ITEsYWx0Rm9ybWF0OiJGIGosIFkiLGFsdElucHV0OiExLGFsdElucHV0Q2xhc3M6ImZvcm0tY29udHJvbCBpbnB1dCIsYW5pbWF0ZToib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmLTE9PT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIiksYXJpYURhdGVGb3JtYXQ6IkYgaiwgWSIsYXV0b0ZpbGxEZWZhdWx0VGltZTohMCxjbGlja09wZW5zOiEwLGNsb3NlT25TZWxlY3Q6ITAsY29uanVuY3Rpb246IiwgIixkYXRlRm9ybWF0OiJZLW0tZCIsZGVmYXVsdEhvdXI6MTIsZGVmYXVsdE1pbnV0ZTowLGRlZmF1bHRTZWNvbmRzOjAsZGlzYWJsZTpbXSxkaXNhYmxlTW9iaWxlOiExLGVuYWJsZVNlY29uZHM6ITEsZW5hYmxlVGltZTohMSxlcnJvckhhbmRsZXI6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLndhcm4oZSl9LGdldFdlZWs6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGUoZS5nZXRUaW1lKCkpO3Quc2V0SG91cnMoMCwwLDAsMCksdC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzMtKHQuZ2V0RGF5KCkrNiklNyk7dmFyIG49bmV3IERhdGUodC5nZXRGdWxsWWVhcigpLDAsNCk7cmV0dXJuIDErTWF0aC5yb3VuZCgoKHQuZ2V0VGltZSgpLW4uZ2V0VGltZSgpKS84NjRlNS0zKyhuLmdldERheSgpKzYpJTcpLzcpfSxob3VySW5jcmVtZW50OjEsaWdub3JlZEZvY3VzRWxlbWVudHM6W10saW5saW5lOiExLGxvY2FsZToiZGVmYXVsdCIsbWludXRlSW5jcmVtZW50OjUsbW9kZToic2luZ2xlIixtb250aFNlbGVjdG9yVHlwZToiZHJvcGRvd24iLG5leHRBcnJvdzoiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J00xMy4yMDcgOC40NzJsLTcuODU0IDcuODU0LTAuNzA3LTAuNzA3IDcuMTQ2LTcuMTQ2LTcuMTQ2LTcuMTQ4IDAuNzA3LTAuNzA3IDcuODU0IDcuODU0eicgLz48L3N2Zz4iLG5vQ2FsZW5kYXI6ITEsbm93Om5ldyBEYXRlLG9uQ2hhbmdlOltdLG9uQ2xvc2U6W10sb25EYXlDcmVhdGU6W10sb25EZXN0cm95OltdLG9uS2V5RG93bjpbXSxvbk1vbnRoQ2hhbmdlOltdLG9uT3BlbjpbXSxvblBhcnNlQ29uZmlnOltdLG9uUmVhZHk6W10sb25WYWx1ZVVwZGF0ZTpbXSxvblllYXJDaGFuZ2U6W10sb25QcmVDYWxlbmRhclBvc2l0aW9uOltdLHBsdWdpbnM6W10scG9zaXRpb246ImF1dG8iLHBvc2l0aW9uRWxlbWVudDp2b2lkIDAscHJldkFycm93OiI8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgdmlld0JveD0nMCAwIDE3IDE3Jz48Zz48L2c+PHBhdGggZD0nTTUuMjA3IDguNDcxbDcuMTQ2IDcuMTQ3LTAuNzA3IDAuNzA3LTcuODUzLTcuODU0IDcuODU0LTcuODUzIDAuNzA3IDAuNzA3LTcuMTQ3IDcuMTQ2eicgLz48L3N2Zz4iLHNob3J0aGFuZEN1cnJlbnRNb250aDohMSxzaG93TW9udGhzOjEsc3RhdGljOiExLHRpbWVfMjRocjohMSx3ZWVrTnVtYmVyczohMSx3cmFwOiExfSxpPXt3ZWVrZGF5czp7c2hvcnRoYW5kOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbG9uZ2hhbmQ6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSxtb250aHM6e3Nob3J0aGFuZDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGxvbmdoYW5kOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sZGF5c0luTW9udGg6WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxmaXJzdERheU9mV2VlazowLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMDA7aWYodD4zJiZ0PDIxKXJldHVybiJ0aCI7c3dpdGNoKHQlMTApe2Nhc2UgMTpyZXR1cm4ic3QiO2Nhc2UgMjpyZXR1cm4ibmQiO2Nhc2UgMzpyZXR1cm4icmQiO2RlZmF1bHQ6cmV0dXJuInRoIn19LHJhbmdlU2VwYXJhdG9yOiIgdG8gIix3ZWVrQWJicmV2aWF0aW9uOiJXayIsc2Nyb2xsVGl0bGU6IlNjcm9sbCB0byBpbmNyZW1lbnQiLHRvZ2dsZVRpdGxlOiJDbGljayB0byB0b2dnbGUiLGFtUE06WyJBTSIsIlBNIl0seWVhckFyaWFMYWJlbDoiWWVhciIsbW9udGhBcmlhTGFiZWw6Ik1vbnRoIixob3VyQXJpYUxhYmVsOiJIb3VyIixtaW51dGVBcmlhTGFiZWw6Ik1pbnV0ZSIsdGltZV8yNGhyOiExfSxvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTIpLCgiMDAwIitlKS5zbGljZSgtMSp0KX0scj1mdW5jdGlvbihlKXtyZXR1cm4hMD09PWU\/MTowfTtmdW5jdGlvbiBsKGUsdCl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcztjbGVhclRpbWVvdXQobiksbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KGEsYXJndW1lbnRzKX0pLHQpfX12YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEFycmF5P2U6W2VdfTtmdW5jdGlvbiBkKGUsdCxuKXtpZighMD09PW4pcmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KTtlLmNsYXNzTGlzdC5yZW1vdmUodCl9ZnVuY3Rpb24gcyhlLHQsbil7dmFyIGE9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIHQ9dHx8IiIsbj1ufHwiIixhLmNsYXNzTmFtZT10LHZvaWQgMCE9PW4mJihhLnRleHRDb250ZW50PW4pLGF9ZnVuY3Rpb24gdShlKXtmb3IoO2UuZmlyc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gdChlKT9lOmUucGFyZW50Tm9kZT9mKGUucGFyZW50Tm9kZSx0KTp2b2lkIDB9ZnVuY3Rpb24gbShlLHQpe3ZhciBuPXMoImRpdiIsIm51bUlucHV0V3JhcHBlciIpLGE9cygiaW5wdXQiLCJudW1JbnB1dCAiK2UpLGk9cygic3BhbiIsImFycm93VXAiKSxvPXMoInNwYW4iLCJhcnJvd0Rvd24iKTtpZigtMT09PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSA5LjAiKT9hLnR5cGU9Im51bWJlciI6KGEudHlwZT0idGV4dCIsYS5wYXR0ZXJuPSJcXGQqIiksdm9pZCAwIT09dClmb3IodmFyIHIgaW4gdClhLnNldEF0dHJpYnV0ZShyLHRbcl0pO3JldHVybiBuLmFwcGVuZENoaWxkKGEpLG4uYXBwZW5kQ2hpbGQoaSksbi5hcHBlbmRDaGlsZChvKSxufWZ1bmN0aW9uIGcoZSl7dHJ5e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbXBvc2VkUGF0aD9lLmNvbXBvc2VkUGF0aCgpWzBdOmUudGFyZ2V0fWNhdGNoKHQpe3JldHVybiBlLnRhcmdldH19dmFyIHA9ZnVuY3Rpb24oKXt9LGg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLm1vbnRoc1t0PyJzaG9ydGhhbmQiOiJsb25naGFuZCJdW2VdfSx2PXtEOnAsRjpmdW5jdGlvbihlLHQsbil7ZS5zZXRNb250aChuLm1vbnRocy5sb25naGFuZC5pbmRleE9mKHQpKX0sRzpmdW5jdGlvbihlLHQpe2Uuc2V0SG91cnMocGFyc2VGbG9hdCh0KSl9LEg6ZnVuY3Rpb24oZSx0KXtlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpfSxKOmZ1bmN0aW9uKGUsdCl7ZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpfSxLOmZ1bmN0aW9uKGUsdCxuKXtlLnNldEhvdXJzKGUuZ2V0SG91cnMoKSUxMisxMipyKG5ldyBSZWdFeHAobi5hbVBNWzFdLCJpIikudGVzdCh0KSkpfSxNOmZ1bmN0aW9uKGUsdCxuKXtlLnNldE1vbnRoKG4ubW9udGhzLnNob3J0aGFuZC5pbmRleE9mKHQpKX0sUzpmdW5jdGlvbihlLHQpe2Uuc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHQpKX0sVTpmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRGF0ZSgxZTMqcGFyc2VGbG9hdCh0KSl9LFc6ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPXBhcnNlSW50KHQpLGk9bmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLDAsMis3KihhLTEpLDAsMCwwLDApO3JldHVybiBpLnNldERhdGUoaS5nZXREYXRlKCktaS5nZXREYXkoKStuLmZpcnN0RGF5T2ZXZWVrKSxpfSxZOmZ1bmN0aW9uKGUsdCl7ZS5zZXRGdWxsWWVhcihwYXJzZUZsb2F0KHQpKX0sWjpmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRGF0ZSh0KX0sZDpmdW5jdGlvbihlLHQpe2Uuc2V0RGF0ZShwYXJzZUZsb2F0KHQpKX0saDpmdW5jdGlvbihlLHQpe2Uuc2V0SG91cnMocGFyc2VGbG9hdCh0KSl9LGk6ZnVuY3Rpb24oZSx0KXtlLnNldE1pbnV0ZXMocGFyc2VGbG9hdCh0KSl9LGo6ZnVuY3Rpb24oZSx0KXtlLnNldERhdGUocGFyc2VGbG9hdCh0KSl9LGw6cCxtOmZ1bmN0aW9uKGUsdCl7ZS5zZXRNb250aChwYXJzZUZsb2F0KHQpLTEpfSxuOmZ1bmN0aW9uKGUsdCl7ZS5zZXRNb250aChwYXJzZUZsb2F0KHQpLTEpfSxzOmZ1bmN0aW9uKGUsdCl7ZS5zZXRTZWNvbmRzKHBhcnNlRmxvYXQodCkpfSx1OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBEYXRlKHBhcnNlRmxvYXQodCkpfSx3OnAseTpmdW5jdGlvbihlLHQpe2Uuc2V0RnVsbFllYXIoMmUzK3BhcnNlRmxvYXQodCkpfX0sRD17RDoiKFxcdyspIixGOiIoXFx3KykiLEc6IihcXGRcXGR8XFxkKSIsSDoiKFxcZFxcZHxcXGQpIixKOiIoXFxkXFxkfFxcZClcXHcrIixLOiIiLE06IihcXHcrKSIsUzoiKFxcZFxcZHxcXGQpIixVOiIoLispIixXOiIoXFxkXFxkfFxcZCkiLFk6IihcXGR7NH0pIixaOiIoLispIixkOiIoXFxkXFxkfFxcZCkiLGg6IihcXGRcXGR8XFxkKSIsaToiKFxcZFxcZHxcXGQpIixqOiIoXFxkXFxkfFxcZCkiLGw6IihcXHcrKSIsbToiKFxcZFxcZHxcXGQpIixuOiIoXFxkXFxkfFxcZCkiLHM6IihcXGRcXGR8XFxkKSIsdToiKC4rKSIsdzoiKFxcZFxcZHxcXGQpIix5OiIoXFxkezJ9KSJ9LHc9e1o6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9JU09TdHJpbmcoKX0sRDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQud2Vla2RheXMuc2hvcnRoYW5kW3cudyhlLHQsbildfSxGOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaCh3Lm4oZSx0LG4pLTEsITEsdCl9LEc6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvKHcuaChlLHQsbikpfSxIOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0SG91cnMoKSl9LEo6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwIT09dC5vcmRpbmFsP2UuZ2V0RGF0ZSgpK3Qub3JkaW5hbChlLmdldERhdGUoKSk6ZS5nZXREYXRlKCl9LEs6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5hbVBNW3IoZS5nZXRIb3VycygpPjExKV19LE06ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaChlLmdldE1vbnRoKCksITAsdCl9LFM6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRTZWNvbmRzKCkpfSxVOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFRpbWUoKS8xZTN9LFc6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLmdldFdlZWsoZSl9LFk6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRGdWxsWWVhcigpLDQpfSxkOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0RGF0ZSgpKX0saDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3VycygpJTEyP2UuZ2V0SG91cnMoKSUxMjoxMn0saTpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldE1pbnV0ZXMoKSl9LGo6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0RGF0ZSgpfSxsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQud2Vla2RheXMubG9uZ2hhbmRbZS5nZXREYXkoKV19LG06ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRNb250aCgpKzEpfSxuOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldE1vbnRoKCkrMX0sczpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRTZWNvbmRzKCl9LHU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VGltZSgpfSx3OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldERheSgpfSx5OmZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZS5nZXRGdWxsWWVhcigpKS5zdWJzdHJpbmcoMil9fSxiPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLG49dm9pZCAwPT09dD9hOnQsbz1lLmwxMG4scj12b2lkIDA9PT1vP2k6byxsPWUuaXNNb2JpbGUsYz12b2lkIDAhPT1sJiZsO3JldHVybiBmdW5jdGlvbihlLHQsYSl7dmFyIGk9YXx8cjtyZXR1cm4gdm9pZCAwPT09bi5mb3JtYXREYXRlfHxjP3Quc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24odCxhLG8pe3JldHVybiB3W3RdJiYiXFwiIT09b1thLTFdP3dbdF0oZSxpLG4pOiJcXCIhPT10P3Q6IiJ9KSkuam9pbigiIik6bi5mb3JtYXREYXRlKGUsdCxpKX19LEM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcsbj12b2lkIDA9PT10P2E6dCxvPWUubDEwbixyPXZvaWQgMD09PW8\/aTpvO3JldHVybiBmdW5jdGlvbihlLHQsaSxvKXtpZigwPT09ZXx8ZSl7dmFyIGwsYz1vfHxyLGQ9ZTtpZihlIGluc3RhbmNlb2YgRGF0ZSlsPW5ldyBEYXRlKGUuZ2V0VGltZSgpKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgZSYmdm9pZCAwIT09ZS50b0ZpeGVkKWw9bmV3IERhdGUoZSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBzPXR8fChufHxhKS5kYXRlRm9ybWF0LHU9U3RyaW5nKGUpLnRyaW0oKTtpZigidG9kYXkiPT09dSlsPW5ldyBEYXRlLGk9ITA7ZWxzZSBpZigvWiQvLnRlc3QodSl8fC9HTVQkLy50ZXN0KHUpKWw9bmV3IERhdGUoZSk7ZWxzZSBpZihuJiZuLnBhcnNlRGF0ZSlsPW4ucGFyc2VEYXRlKGUscyk7ZWxzZXtsPW4mJm4ubm9DYWxlbmRhcj9uZXcgRGF0ZSgobmV3IERhdGUpLnNldEhvdXJzKDAsMCwwLDApKTpuZXcgRGF0ZSgobmV3IERhdGUpLmdldEZ1bGxZZWFyKCksMCwxLDAsMCwwLDApO2Zvcih2YXIgZj12b2lkIDAsbT1bXSxnPTAscD0wLGg9IiI7ZzxzLmxlbmd0aDtnKyspe3ZhciB3PXNbZ10sYj0iXFwiPT09dyxDPSJcXCI9PT1zW2ctMV18fGI7aWYoRFt3XSYmIUMpe2grPURbd107dmFyIE09bmV3IFJlZ0V4cChoKS5leGVjKGUpO00mJihmPSEwKSYmbVsiWSIhPT13PyJwdXNoIjoidW5zaGlmdCJdKHtmbjp2W3ddLHZhbDpNWysrcF19KX1lbHNlIGJ8fChoKz0iLiIpO20uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5mbixuPWUudmFsO3JldHVybiBsPXQobCxuLGMpfHxsfSkpfWw9Zj9sOnZvaWQgMH19aWYobCBpbnN0YW5jZW9mIERhdGUmJiFpc05hTihsLmdldFRpbWUoKSkpcmV0dXJuITA9PT1pJiZsLnNldEhvdXJzKDAsMCwwLDApLGw7bi5lcnJvckhhbmRsZXIobmV3IEVycm9yKCJJbnZhbGlkIGRhdGUgcHJvdmlkZWQ6ICIrZCkpfX19O2Z1bmN0aW9uIE0oZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksITEhPT1uP25ldyBEYXRlKGUuZ2V0VGltZSgpKS5zZXRIb3VycygwLDAsMCwwKS1uZXcgRGF0ZSh0LmdldFRpbWUoKSkuc2V0SG91cnMoMCwwLDAsMCk6ZS5nZXRUaW1lKCktdC5nZXRUaW1lKCl9dmFyIHk9ODY0ZTU7ZnVuY3Rpb24geChlKXt2YXIgdD1lLmRlZmF1bHRIb3VyLG49ZS5kZWZhdWx0TWludXRlLGE9ZS5kZWZhdWx0U2Vjb25kcztpZih2b2lkIDAhPT1lLm1pbkRhdGUpe3ZhciBpPWUubWluRGF0ZS5nZXRIb3VycygpLG89ZS5taW5EYXRlLmdldE1pbnV0ZXMoKSxyPWUubWluRGF0ZS5nZXRTZWNvbmRzKCk7dDxpJiYodD1pKSx0PT09aSYmbjxvJiYobj1vKSx0PT09aSYmbj09PW8mJmE8ciYmKGE9ZS5taW5EYXRlLmdldFNlY29uZHMoKSl9aWYodm9pZCAwIT09ZS5tYXhEYXRlKXt2YXIgbD1lLm1heERhdGUuZ2V0SG91cnMoKSxjPWUubWF4RGF0ZS5nZXRNaW51dGVzKCk7KHQ9TWF0aC5taW4odCxsKSk9PT1sJiYobj1NYXRoLm1pbihjLG4pKSx0PT09bCYmbj09PWMmJihhPWUubWF4RGF0ZS5nZXRTZWNvbmRzKCkpfXJldHVybntob3Vyczp0LG1pbnV0ZXM6bixzZWNvbmRzOmF9fSJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuYXNzaWduJiYoT2JqZWN0LmFzc2lnbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtpZighZSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgYT1mdW5jdGlvbih0KXt0JiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZVtuXT10W25dfSkpfSxpPTAsbz10O2k8by5sZW5ndGg7aSsrKXt2YXIgcj1vW2ldO2Eocil9cmV0dXJuIGV9KTtmdW5jdGlvbiBFKHAsdil7dmFyIHc9e2NvbmZpZzplKGUoe30sYSksVC5kZWZhdWx0Q29uZmlnKSxsMTBuOml9O2Z1bmN0aW9uIEUoZSl7cmV0dXJuIGUuYmluZCh3KX1mdW5jdGlvbiBrKCl7dmFyIGU9dy5jb25maWc7ITE9PT1lLndlZWtOdW1iZXJzJiYxPT09ZS5zaG93TW9udGhzfHwhMCE9PWUubm9DYWxlbmRhciYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT13LmNhbGVuZGFyQ29udGFpbmVyJiYody5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUuZGlzcGxheT0iYmxvY2siKSx2b2lkIDAhPT13LmRheXNDb250YWluZXIpe3ZhciB0PSh3LmRheXMub2Zmc2V0V2lkdGgrMSkqZS5zaG93TW9udGhzO3cuZGF5c0NvbnRhaW5lci5zdHlsZS53aWR0aD10KyJweCIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS53aWR0aD10Kyh2b2lkIDAhPT13LndlZWtXcmFwcGVyP3cud2Vla1dyYXBwZXIub2Zmc2V0V2lkdGg6MCkrInB4Iix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ2aXNpYmlsaXR5Iiksdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpfX0pKX1mdW5jdGlvbiBJKGUpe2lmKDA9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoKXt2YXIgdD12b2lkIDA9PT13LmNvbmZpZy5taW5EYXRlfHxNKG5ldyBEYXRlLHcuY29uZmlnLm1pbkRhdGUpPj0wP25ldyBEYXRlOm5ldyBEYXRlKHcuY29uZmlnLm1pbkRhdGUuZ2V0VGltZSgpKSxuPXgody5jb25maWcpO3Quc2V0SG91cnMobi5ob3VycyxuLm1pbnV0ZXMsbi5zZWNvbmRzLHQuZ2V0TWlsbGlzZWNvbmRzKCkpLHcuc2VsZWN0ZWREYXRlcz1bdF0sdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9dH12b2lkIDAhPT1lJiYiYmx1ciIhPT1lLnR5cGUmJmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD0ia2V5ZG93biI9PT1lLnR5cGUsbj1nKGUpLGE9bjt2b2lkIDAhPT13LmFtUE0mJm49PT13LmFtUE0mJih3LmFtUE0udGV4dENvbnRlbnQ9dy5sMTBuLmFtUE1bcih3LmFtUE0udGV4dENvbnRlbnQ9PT13LmwxMG4uYW1QTVswXSldKTt2YXIgaT1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJtaW4iKSksbD1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJtYXgiKSksYz1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKCJzdGVwIikpLGQ9cGFyc2VJbnQoYS52YWx1ZSwxMCkscz1lLmRlbHRhfHwodD8zOD09PWUud2hpY2g\/MTotMTowKSx1PWQrYypzO2lmKHZvaWQgMCE9PWEudmFsdWUmJjI9PT1hLnZhbHVlLmxlbmd0aCl7dmFyIGY9YT09PXcuaG91ckVsZW1lbnQsbT1hPT09dy5taW51dGVFbGVtZW50O3U8aT8odT1sK3UrcighZikrKHIoZikmJnIoIXcuYW1QTSkpLG0mJmoodm9pZCAwLC0xLHcuaG91ckVsZW1lbnQpKTp1PmwmJih1PWE9PT13LmhvdXJFbGVtZW50P3UtbC1yKCF3LmFtUE0pOmksbSYmaih2b2lkIDAsMSx3LmhvdXJFbGVtZW50KSksdy5hbVBNJiZmJiYoMT09PWM\/dStkPT09MjM6TWF0aC5hYnModS1kKT5jKSYmKHcuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVtyKHcuYW1QTS50ZXh0Q29udGVudD09PXcubDEwbi5hbVBNWzBdKV0pLGEudmFsdWU9byh1KX19KGUpO3ZhciBhPXcuX2lucHV0LnZhbHVlO1MoKSxiZSgpLHcuX2lucHV0LnZhbHVlIT09YSYmdy5fZGVib3VuY2VkQ2hhbmdlKCl9ZnVuY3Rpb24gUygpe2lmKHZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJnZvaWQgMCE9PXcubWludXRlRWxlbWVudCl7dmFyIGUsdCxuPShwYXJzZUludCh3LmhvdXJFbGVtZW50LnZhbHVlLnNsaWNlKC0yKSwxMCl8fDApJTI0LGE9KHBhcnNlSW50KHcubWludXRlRWxlbWVudC52YWx1ZSwxMCl8fDApJTYwLGk9dm9pZCAwIT09dy5zZWNvbmRFbGVtZW50PyhwYXJzZUludCh3LnNlY29uZEVsZW1lbnQudmFsdWUsMTApfHwwKSU2MDowO3ZvaWQgMCE9PXcuYW1QTSYmKGU9bix0PXcuYW1QTS50ZXh0Q29udGVudCxuPWUlMTIrMTIqcih0PT09dy5sMTBuLmFtUE1bMV0pKTt2YXIgbz12b2lkIDAhPT13LmNvbmZpZy5taW5UaW1lfHx3LmNvbmZpZy5taW5EYXRlJiZ3Lm1pbkRhdGVIYXNUaW1lJiZ3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiYmMD09PU0ody5sYXRlc3RTZWxlY3RlZERhdGVPYmosdy5jb25maWcubWluRGF0ZSwhMCk7aWYodm9pZCAwIT09dy5jb25maWcubWF4VGltZXx8dy5jb25maWcubWF4RGF0ZSYmdy5tYXhEYXRlSGFzVGltZSYmdy5sYXRlc3RTZWxlY3RlZERhdGVPYmomJjA9PT1NKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLHcuY29uZmlnLm1heERhdGUsITApKXt2YXIgbD12b2lkIDAhPT13LmNvbmZpZy5tYXhUaW1lP3cuY29uZmlnLm1heFRpbWU6dy5jb25maWcubWF4RGF0ZTsobj1NYXRoLm1pbihuLGwuZ2V0SG91cnMoKSkpPT09bC5nZXRIb3VycygpJiYoYT1NYXRoLm1pbihhLGwuZ2V0TWludXRlcygpKSksYT09PWwuZ2V0TWludXRlcygpJiYoaT1NYXRoLm1pbihpLGwuZ2V0U2Vjb25kcygpKSl9aWYobyl7dmFyIGM9dm9pZCAwIT09dy5jb25maWcubWluVGltZT93LmNvbmZpZy5taW5UaW1lOncuY29uZmlnLm1pbkRhdGU7KG49TWF0aC5tYXgobixjLmdldEhvdXJzKCkpKT09PWMuZ2V0SG91cnMoKSYmYTxjLmdldE1pbnV0ZXMoKSYmKGE9Yy5nZXRNaW51dGVzKCkpLGE9PT1jLmdldE1pbnV0ZXMoKSYmKGk9TWF0aC5tYXgoaSxjLmdldFNlY29uZHMoKSkpfU8obixhLGkpfX1mdW5jdGlvbiBfKGUpe3ZhciB0PWV8fHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqO3QmJk8odC5nZXRIb3VycygpLHQuZ2V0TWludXRlcygpLHQuZ2V0U2Vjb25kcygpKX1mdW5jdGlvbiBPKGUsdCxuKXt2b2lkIDAhPT13LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiYmdy5sYXRlc3RTZWxlY3RlZERhdGVPYmouc2V0SG91cnMoZSUyNCx0LG58fDAsMCksdy5ob3VyRWxlbWVudCYmdy5taW51dGVFbGVtZW50JiYhdy5pc01vYmlsZSYmKHcuaG91ckVsZW1lbnQudmFsdWU9byh3LmNvbmZpZy50aW1lXzI0aHI\/ZTooMTIrZSklMTIrMTIqcihlJTEyPT0wKSksdy5taW51dGVFbGVtZW50LnZhbHVlPW8odCksdm9pZCAwIT09dy5hbVBNJiYody5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNW3IoZT49MTIpXSksdm9pZCAwIT09dy5zZWNvbmRFbGVtZW50JiYody5zZWNvbmRFbGVtZW50LnZhbHVlPW8obikpKX1mdW5jdGlvbiBGKGUpe3ZhciB0PWcoZSksbj1wYXJzZUludCh0LnZhbHVlKSsoZS5kZWx0YXx8MCk7KG4vMWUzPjF8fCJFbnRlciI9PT1lLmtleSYmIS9bXlxkXS8udGVzdChuLnRvU3RyaW5nKCkpKSYmUShuKX1mdW5jdGlvbiBBKGUsdCxuLGEpe3JldHVybiB0IGluc3RhbmNlb2YgQXJyYXk\/dC5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gQShlLHQsbixhKX0pKTplIGluc3RhbmNlb2YgQXJyYXk\/ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gQShlLHQsbixhKX0pKTooZS5hZGRFdmVudExpc3RlbmVyKHQsbixhKSx2b2lkIHcuX2hhbmRsZXJzLnB1c2goe3JlbW92ZTpmdW5jdGlvbigpe3JldHVybiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX19KSl9ZnVuY3Rpb24gTigpe3BlKCJvbkNoYW5nZSIpfWZ1bmN0aW9uIFAoZSx0KXt2YXIgbj12b2lkIDAhPT1lP3cucGFyc2VEYXRlKGUpOncubGF0ZXN0U2VsZWN0ZWREYXRlT2JqfHwody5jb25maWcubWluRGF0ZSYmdy5jb25maWcubWluRGF0ZT53Lm5vdz93LmNvbmZpZy5taW5EYXRlOncuY29uZmlnLm1heERhdGUmJncuY29uZmlnLm1heERhdGU8dy5ub3c\/dy5jb25maWcubWF4RGF0ZTp3Lm5vdyksYT13LmN1cnJlbnRZZWFyLGk9dy5jdXJyZW50TW9udGg7dHJ5e3ZvaWQgMCE9PW4mJih3LmN1cnJlbnRZZWFyPW4uZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD1uLmdldE1vbnRoKCkpfWNhdGNoKGUpe2UubWVzc2FnZT0iSW52YWxpZCBkYXRlIHN1cHBsaWVkOiAiK24sdy5jb25maWcuZXJyb3JIYW5kbGVyKGUpfXQmJncuY3VycmVudFllYXIhPT1hJiYocGUoIm9uWWVhckNoYW5nZSIpLEsoKSksIXR8fHcuY3VycmVudFllYXI9PT1hJiZ3LmN1cnJlbnRNb250aD09PWl8fHBlKCJvbk1vbnRoQ2hhbmdlIiksdy5yZWRyYXcoKX1mdW5jdGlvbiBZKGUpe3ZhciB0PWcoZSk7fnQuY2xhc3NOYW1lLmluZGV4T2YoImFycm93IikmJmooZSx0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dVcCIpPzE6LTEpfWZ1bmN0aW9uIGooZSx0LG4pe3ZhciBhPWUmJmcoZSksaT1ufHxhJiZhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5maXJzdENoaWxkLG89aGUoImluY3JlbWVudCIpO28uZGVsdGE9dCxpJiZpLmRpc3BhdGNoRXZlbnQobyl9ZnVuY3Rpb24gSChlLHQsbixhKXt2YXIgaT1YKHQsITApLG89cygic3BhbiIsImZsYXRwaWNrci1kYXkgIitlLHQuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkpO3JldHVybiBvLmRhdGVPYmo9dCxvLiRpPWEsby5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHcuZm9ybWF0RGF0ZSh0LHcuY29uZmlnLmFyaWFEYXRlRm9ybWF0KSksLTE9PT1lLmluZGV4T2YoImhpZGRlbiIpJiYwPT09TSh0LHcubm93KSYmKHcudG9kYXlEYXRlRWxlbT1vLG8uY2xhc3NMaXN0LmFkZCgidG9kYXkiKSxvLnNldEF0dHJpYnV0ZSgiYXJpYS1jdXJyZW50IiwiZGF0ZSIpKSxpPyhvLnRhYkluZGV4PS0xLHZlKHQpJiYoby5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpLHcuc2VsZWN0ZWREYXRlRWxlbT1vLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYoZChvLCJzdGFydFJhbmdlIix3LnNlbGVjdGVkRGF0ZXNbMF0mJjA9PT1NKHQsdy5zZWxlY3RlZERhdGVzWzBdLCEwKSksZChvLCJlbmRSYW5nZSIsdy5zZWxlY3RlZERhdGVzWzFdJiYwPT09TSh0LHcuc2VsZWN0ZWREYXRlc1sxXSwhMCkpLCJuZXh0TW9udGhEYXkiPT09ZSYmby5jbGFzc0xpc3QuYWRkKCJpblJhbmdlIikpKSk6by5jbGFzc0xpc3QuYWRkKCJmbGF0cGlja3ItZGlzYWJsZWQiKSwicmFuZ2UiPT09dy5jb25maWcubW9kZSYmZnVuY3Rpb24oZSl7cmV0dXJuISgicmFuZ2UiIT09dy5jb25maWcubW9kZXx8dy5zZWxlY3RlZERhdGVzLmxlbmd0aDwyKSYmKE0oZSx3LnNlbGVjdGVkRGF0ZXNbMF0pPj0wJiZNKGUsdy5zZWxlY3RlZERhdGVzWzFdKTw9MCl9KHQpJiYhdmUodCkmJm8uY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpLHcud2Vla051bWJlcnMmJjE9PT13LmNvbmZpZy5zaG93TW9udGhzJiYicHJldk1vbnRoRGF5IiE9PWUmJm4lNz09MSYmdy53ZWVrTnVtYmVycy5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsIjxzcGFuIGNsYXNzPSdmbGF0cGlja3ItZGF5Jz4iK3cuY29uZmlnLmdldFdlZWsodCkrIjwvc3Bhbj4iKSxwZSgib25EYXlDcmVhdGUiLG8pLG99ZnVuY3Rpb24gTChlKXtlLmZvY3VzKCksInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJmFlKGUpfWZ1bmN0aW9uIFcoZSl7Zm9yKHZhciB0PWU+MD8wOncuY29uZmlnLnNob3dNb250aHMtMSxuPWU+MD93LmNvbmZpZy5zaG93TW9udGhzOi0xLGE9dDthIT1uO2ErPWUpZm9yKHZhciBpPXcuZGF5c0NvbnRhaW5lci5jaGlsZHJlblthXSxvPWU+MD8wOmkuY2hpbGRyZW4ubGVuZ3RoLTEscj1lPjA\/aS5jaGlsZHJlbi5sZW5ndGg6LTEsbD1vO2whPXI7bCs9ZSl7dmFyIGM9aS5jaGlsZHJlbltsXTtpZigtMT09PWMuY2xhc3NOYW1lLmluZGV4T2YoImhpZGRlbiIpJiZYKGMuZGF0ZU9iaikpcmV0dXJuIGN9fWZ1bmN0aW9uIFIoZSx0KXt2YXIgbj1lZShkb2N1bWVudC5hY3RpdmVFbGVtZW50fHxkb2N1bWVudC5ib2R5KSxhPXZvaWQgMCE9PWU\/ZTpuP2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ6dm9pZCAwIT09dy5zZWxlY3RlZERhdGVFbGVtJiZlZSh3LnNlbGVjdGVkRGF0ZUVsZW0pP3cuc2VsZWN0ZWREYXRlRWxlbTp2b2lkIDAhPT13LnRvZGF5RGF0ZUVsZW0mJmVlKHcudG9kYXlEYXRlRWxlbSk\/dy50b2RheURhdGVFbGVtOlcodD4wPzE6LTEpO3ZvaWQgMD09PWE\/dy5faW5wdXQuZm9jdXMoKTpuP2Z1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPS0xPT09ZS5jbGFzc05hbWUuaW5kZXhPZigiTW9udGgiKT9lLmRhdGVPYmouZ2V0TW9udGgoKTp3LmN1cnJlbnRNb250aCxhPXQ+MD93LmNvbmZpZy5zaG93TW9udGhzOi0xLGk9dD4wPzE6LTEsbz1uLXcuY3VycmVudE1vbnRoO28hPWE7bys9aSlmb3IodmFyIHI9dy5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW29dLGw9bi13LmN1cnJlbnRNb250aD09PW8\/ZS4kaSt0OnQ8MD9yLmNoaWxkcmVuLmxlbmd0aC0xOjAsYz1yLmNoaWxkcmVuLmxlbmd0aCxkPWw7ZD49MCYmZDxjJiZkIT0odD4wP2M6LTEpO2QrPWkpe3ZhciBzPXIuY2hpbGRyZW5bZF07aWYoLTE9PT1zLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSYmWChzLmRhdGVPYmopJiZNYXRoLmFicyhlLiRpLWQpPj1NYXRoLmFicyh0KSlyZXR1cm4gTChzKX13LmNoYW5nZU1vbnRoKGkpLFIoVyhpKSwwKX0oYSx0KTpMKGEpfWZ1bmN0aW9uIEIoZSx0KXtmb3IodmFyIG49KG5ldyBEYXRlKGUsdCwxKS5nZXREYXkoKS13LmwxMG4uZmlyc3REYXlPZldlZWsrNyklNyxhPXcudXRpbHMuZ2V0RGF5c0luTW9udGgoKHQtMSsxMiklMTIsZSksaT13LnV0aWxzLmdldERheXNJbk1vbnRoKHQsZSksbz13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHI9dy5jb25maWcuc2hvd01vbnRocz4xLGw9cj8icHJldk1vbnRoRGF5IGhpZGRlbiI6InByZXZNb250aERheSIsYz1yPyJuZXh0TW9udGhEYXkgaGlkZGVuIjoibmV4dE1vbnRoRGF5IixkPWErMS1uLHU9MDtkPD1hO2QrKyx1Kyspby5hcHBlbmRDaGlsZChIKGwsbmV3IERhdGUoZSx0LTEsZCksZCx1KSk7Zm9yKGQ9MTtkPD1pO2QrKyx1Kyspby5hcHBlbmRDaGlsZChIKCIiLG5ldyBEYXRlKGUsdCxkKSxkLHUpKTtmb3IodmFyIGY9aSsxO2Y8PTQyLW4mJigxPT09dy5jb25maWcuc2hvd01vbnRoc3x8dSU3IT0wKTtmKyssdSsrKW8uYXBwZW5kQ2hpbGQoSChjLG5ldyBEYXRlKGUsdCsxLGYlaSksZix1KSk7dmFyIG09cygiZGl2IiwiZGF5Q29udGFpbmVyIik7cmV0dXJuIG0uYXBwZW5kQ2hpbGQobyksbX1mdW5jdGlvbiBKKCl7aWYodm9pZCAwIT09dy5kYXlzQ29udGFpbmVyKXt1KHcuZGF5c0NvbnRhaW5lciksdy53ZWVrTnVtYmVycyYmdSh3LndlZWtOdW1iZXJzKTtmb3IodmFyIGU9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHQ9MDt0PHcuY29uZmlnLnNob3dNb250aHM7dCsrKXt2YXIgbj1uZXcgRGF0ZSh3LmN1cnJlbnRZZWFyLHcuY3VycmVudE1vbnRoLDEpO24uc2V0TW9udGgody5jdXJyZW50TW9udGgrdCksZS5hcHBlbmRDaGlsZChCKG4uZ2V0RnVsbFllYXIoKSxuLmdldE1vbnRoKCkpKX13LmRheXNDb250YWluZXIuYXBwZW5kQ2hpbGQoZSksdy5kYXlzPXcuZGF5c0NvbnRhaW5lci5maXJzdENoaWxkLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYxPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmYWUoKX19ZnVuY3Rpb24gSygpe2lmKCEody5jb25maWcuc2hvd01vbnRocz4xfHwiZHJvcGRvd24iIT09dy5jb25maWcubW9udGhTZWxlY3RvclR5cGUpKXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4hKHZvaWQgMCE9PXcuY29uZmlnLm1pbkRhdGUmJncuY3VycmVudFllYXI9PT13LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkmJmU8dy5jb25maWcubWluRGF0ZS5nZXRNb250aCgpKSYmISh2b2lkIDAhPT13LmNvbmZpZy5tYXhEYXRlJiZ3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpJiZlPncuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKSl9O3cubW9udGhzRHJvcGRvd25Db250YWluZXIudGFiSW5kZXg9LTEsdy5tb250aHNEcm9wZG93bkNvbnRhaW5lci5pbm5lckhUTUw9IiI7Zm9yKHZhciB0PTA7dDwxMjt0KyspaWYoZSh0KSl7dmFyIG49cygib3B0aW9uIiwiZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGgiKTtuLnZhbHVlPW5ldyBEYXRlKHcuY3VycmVudFllYXIsdCkuZ2V0TW9udGgoKS50b1N0cmluZygpLG4udGV4dENvbnRlbnQ9aCh0LHcuY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCx3LmwxMG4pLG4udGFiSW5kZXg9LTEsdy5jdXJyZW50TW9udGg9PT10JiYobi5zZWxlY3RlZD0hMCksdy5tb250aHNEcm9wZG93bkNvbnRhaW5lci5hcHBlbmRDaGlsZChuKX19fWZ1bmN0aW9uIFUoKXt2YXIgZSx0PXMoImRpdiIsImZsYXRwaWNrci1tb250aCIpLG49d2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTt3LmNvbmZpZy5zaG93TW9udGhzPjF8fCJzdGF0aWMiPT09dy5jb25maWcubW9udGhTZWxlY3RvclR5cGU\/ZT1zKCJzcGFuIiwiY3VyLW1vbnRoIik6KHcubW9udGhzRHJvcGRvd25Db250YWluZXI9cygic2VsZWN0IiwiZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzIiksdy5tb250aHNEcm9wZG93bkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHcubDEwbi5tb250aEFyaWFMYWJlbCksQSh3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLCJjaGFuZ2UiLChmdW5jdGlvbihlKXt2YXIgdD1nKGUpLG49cGFyc2VJbnQodC52YWx1ZSwxMCk7dy5jaGFuZ2VNb250aChuLXcuY3VycmVudE1vbnRoKSxwZSgib25Nb250aENoYW5nZSIpfSkpLEsoKSxlPXcubW9udGhzRHJvcGRvd25Db250YWluZXIpO3ZhciBhPW0oImN1ci15ZWFyIix7dGFiaW5kZXg6Ii0xIn0pLGk9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTtpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdy5sMTBuLnllYXJBcmlhTGFiZWwpLHcuY29uZmlnLm1pbkRhdGUmJmkuc2V0QXR0cmlidXRlKCJtaW4iLHcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSx3LmNvbmZpZy5tYXhEYXRlJiYoaS5zZXRBdHRyaWJ1dGUoIm1heCIsdy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpLGkuZGlzYWJsZWQ9ISF3LmNvbmZpZy5taW5EYXRlJiZ3LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCk9PT13LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBvPXMoImRpdiIsImZsYXRwaWNrci1jdXJyZW50LW1vbnRoIik7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoZSksby5hcHBlbmRDaGlsZChhKSxuLmFwcGVuZENoaWxkKG8pLHQuYXBwZW5kQ2hpbGQobikse2NvbnRhaW5lcjp0LHllYXJFbGVtZW50OmksbW9udGhFbGVtZW50OmV9fWZ1bmN0aW9uIHEoKXt1KHcubW9udGhOYXYpLHcubW9udGhOYXYuYXBwZW5kQ2hpbGQody5wcmV2TW9udGhOYXYpLHcuY29uZmlnLnNob3dNb250aHMmJih3LnllYXJFbGVtZW50cz1bXSx3Lm1vbnRoRWxlbWVudHM9W10pO2Zvcih2YXIgZT13LmNvbmZpZy5zaG93TW9udGhzO2UtLTspe3ZhciB0PVUoKTt3LnllYXJFbGVtZW50cy5wdXNoKHQueWVhckVsZW1lbnQpLHcubW9udGhFbGVtZW50cy5wdXNoKHQubW9udGhFbGVtZW50KSx3Lm1vbnRoTmF2LmFwcGVuZENoaWxkKHQuY29udGFpbmVyKX13Lm1vbnRoTmF2LmFwcGVuZENoaWxkKHcubmV4dE1vbnRoTmF2KX1mdW5jdGlvbiAkKCl7dy53ZWVrZGF5Q29udGFpbmVyP3Uody53ZWVrZGF5Q29udGFpbmVyKTp3LndlZWtkYXlDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWtkYXlzIik7Zm9yKHZhciBlPXcuY29uZmlnLnNob3dNb250aHM7ZS0tOyl7dmFyIHQ9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWtkYXljb250YWluZXIiKTt3LndlZWtkYXlDb250YWluZXIuYXBwZW5kQ2hpbGQodCl9cmV0dXJuIHooKSx3LndlZWtkYXlDb250YWluZXJ9ZnVuY3Rpb24geigpe2lmKHcud2Vla2RheUNvbnRhaW5lcil7dmFyIGU9dy5sMTBuLmZpcnN0RGF5T2ZXZWVrLG49dCh3LmwxMG4ud2Vla2RheXMuc2hvcnRoYW5kKTtlPjAmJmU8bi5sZW5ndGgmJihuPXQobi5zcGxpY2UoZSxuLmxlbmd0aCksbi5zcGxpY2UoMCxlKSkpO2Zvcih2YXIgYT13LmNvbmZpZy5zaG93TW9udGhzO2EtLTspdy53ZWVrZGF5Q29udGFpbmVyLmNoaWxkcmVuW2FdLmlubmVySFRNTD0iXG4gICAgICA8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPlxuICAgICAgICAiK24uam9pbigiPC9zcGFuPjxzcGFuIGNsYXNzPSdmbGF0cGlja3Itd2Vla2RheSc+IikrIlxuICAgICAgPC9zcGFuPlxuICAgICAgIn19ZnVuY3Rpb24gRyhlLHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgbj10P2U6ZS13LmN1cnJlbnRNb250aDtuPDAmJiEwPT09dy5faGlkZVByZXZNb250aEFycm93fHxuPjAmJiEwPT09dy5faGlkZU5leHRNb250aEFycm93fHwody5jdXJyZW50TW9udGgrPW4sKHcuY3VycmVudE1vbnRoPDB8fHcuY3VycmVudE1vbnRoPjExKSYmKHcuY3VycmVudFllYXIrPXcuY3VycmVudE1vbnRoPjExPzE6LTEsdy5jdXJyZW50TW9udGg9KHcuY3VycmVudE1vbnRoKzEyKSUxMixwZSgib25ZZWFyQ2hhbmdlIiksSygpKSxKKCkscGUoIm9uTW9udGhDaGFuZ2UiKSxEZSgpKX1mdW5jdGlvbiBWKGUpe3JldHVybiEoIXcuY29uZmlnLmFwcGVuZFRvfHwhdy5jb25maWcuYXBwZW5kVG8uY29udGFpbnMoZSkpfHx3LmNhbGVuZGFyQ29udGFpbmVyLmNvbnRhaW5zKGUpfWZ1bmN0aW9uIFooZSl7aWYody5pc09wZW4mJiF3LmNvbmZpZy5pbmxpbmUpe3ZhciB0PWcoZSksbj1WKHQpLGE9dD09PXcuaW5wdXR8fHQ9PT13LmFsdElucHV0fHx3LmVsZW1lbnQuY29udGFpbnModCl8fGUucGF0aCYmZS5wYXRoLmluZGV4T2YmJih+ZS5wYXRoLmluZGV4T2Yody5pbnB1dCl8fH5lLnBhdGguaW5kZXhPZih3LmFsdElucHV0KSksaT0iYmx1ciI9PT1lLnR5cGU\/YSYmZS5yZWxhdGVkVGFyZ2V0JiYhVihlLnJlbGF0ZWRUYXJnZXQpOiFhJiYhbiYmIVYoZS5yZWxhdGVkVGFyZ2V0KSxvPSF3LmNvbmZpZy5pZ25vcmVkRm9jdXNFbGVtZW50cy5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb250YWlucyh0KX0pKTtpJiZvJiYodm9pZCAwIT09dy50aW1lQ29udGFpbmVyJiZ2b2lkIDAhPT13Lm1pbnV0ZUVsZW1lbnQmJnZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJiIiIT09dy5pbnB1dC52YWx1ZSYmdm9pZCAwIT09dy5pbnB1dC52YWx1ZSYmSSgpLHcuY2xvc2UoKSx3LmNvbmZpZyYmInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJjE9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiYody5jbGVhcighMSksdy5yZWRyYXcoKSkpfX1mdW5jdGlvbiBRKGUpe2lmKCEoIWV8fHcuY29uZmlnLm1pbkRhdGUmJmU8dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpfHx3LmNvbmZpZy5tYXhEYXRlJiZlPncuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSkpe3ZhciB0PWUsbj13LmN1cnJlbnRZZWFyIT09dDt3LmN1cnJlbnRZZWFyPXR8fHcuY3VycmVudFllYXIsdy5jb25maWcubWF4RGF0ZSYmdy5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKT93LmN1cnJlbnRNb250aD1NYXRoLm1pbih3LmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCksdy5jdXJyZW50TW9udGgpOncuY29uZmlnLm1pbkRhdGUmJncuY3VycmVudFllYXI9PT13LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkmJih3LmN1cnJlbnRNb250aD1NYXRoLm1heCh3LmNvbmZpZy5taW5EYXRlLmdldE1vbnRoKCksdy5jdXJyZW50TW9udGgpKSxuJiYody5yZWRyYXcoKSxwZSgib25ZZWFyQ2hhbmdlIiksSygpKX19ZnVuY3Rpb24gWChlLHQpe3ZhciBuO3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgYT13LnBhcnNlRGF0ZShlLHZvaWQgMCx0KTtpZih3LmNvbmZpZy5taW5EYXRlJiZhJiZNKGEsdy5jb25maWcubWluRGF0ZSx2b2lkIDAhPT10P3Q6IXcubWluRGF0ZUhhc1RpbWUpPDB8fHcuY29uZmlnLm1heERhdGUmJmEmJk0oYSx3LmNvbmZpZy5tYXhEYXRlLHZvaWQgMCE9PXQ\/dDohdy5tYXhEYXRlSGFzVGltZSk+MClyZXR1cm4hMTtpZighdy5jb25maWcuZW5hYmxlJiYwPT09dy5jb25maWcuZGlzYWJsZS5sZW5ndGgpcmV0dXJuITA7aWYodm9pZCAwPT09YSlyZXR1cm4hMTtmb3IodmFyIGk9ISF3LmNvbmZpZy5lbmFibGUsbz1udWxsIT09KG49dy5jb25maWcuZW5hYmxlKSYmdm9pZCAwIT09bj9uOncuY29uZmlnLmRpc2FibGUscj0wLGw9dm9pZCAwO3I8by5sZW5ndGg7cisrKXtpZigiZnVuY3Rpb24iPT10eXBlb2YobD1vW3JdKSYmbChhKSlyZXR1cm4gaTtpZihsIGluc3RhbmNlb2YgRGF0ZSYmdm9pZCAwIT09YSYmbC5nZXRUaW1lKCk9PT1hLmdldFRpbWUoKSlyZXR1cm4gaTtpZigic3RyaW5nIj09dHlwZW9mIGwpe3ZhciBjPXcucGFyc2VEYXRlKGwsdm9pZCAwLCEwKTtyZXR1cm4gYyYmYy5nZXRUaW1lKCk9PT1hLmdldFRpbWUoKT9pOiFpfWlmKCJvYmplY3QiPT10eXBlb2YgbCYmdm9pZCAwIT09YSYmbC5mcm9tJiZsLnRvJiZhLmdldFRpbWUoKT49bC5mcm9tLmdldFRpbWUoKSYmYS5nZXRUaW1lKCk8PWwudG8uZ2V0VGltZSgpKXJldHVybiBpfXJldHVybiFpfWZ1bmN0aW9uIGVlKGUpe3JldHVybiB2b2lkIDAhPT13LmRheXNDb250YWluZXImJigtMT09PWUuY2xhc3NOYW1lLmluZGV4T2YoImhpZGRlbiIpJiYtMT09PWUuY2xhc3NOYW1lLmluZGV4T2YoImZsYXRwaWNrci1kaXNhYmxlZCIpJiZ3LmRheXNDb250YWluZXIuY29udGFpbnMoZSkpfWZ1bmN0aW9uIHRlKGUpeyEoZS50YXJnZXQ9PT13Ll9pbnB1dCl8fCEody5zZWxlY3RlZERhdGVzLmxlbmd0aD4wfHx3Ll9pbnB1dC52YWx1ZS5sZW5ndGg+MCl8fGUucmVsYXRlZFRhcmdldCYmVihlLnJlbGF0ZWRUYXJnZXQpfHx3LnNldERhdGUody5faW5wdXQudmFsdWUsITAsZS50YXJnZXQ9PT13LmFsdElucHV0P3cuY29uZmlnLmFsdEZvcm1hdDp3LmNvbmZpZy5kYXRlRm9ybWF0KX1mdW5jdGlvbiBuZShlKXt2YXIgdD1nKGUpLG49dy5jb25maWcud3JhcD9wLmNvbnRhaW5zKHQpOnQ9PT13Ll9pbnB1dCxhPXcuY29uZmlnLmFsbG93SW5wdXQsaT13LmlzT3BlbiYmKCFhfHwhbiksbz13LmNvbmZpZy5pbmxpbmUmJm4mJiFhO2lmKDEzPT09ZS5rZXlDb2RlJiZuKXtpZihhKXJldHVybiB3LnNldERhdGUody5faW5wdXQudmFsdWUsITAsdD09PXcuYWx0SW5wdXQ\/dy5jb25maWcuYWx0Rm9ybWF0OncuY29uZmlnLmRhdGVGb3JtYXQpLHQuYmx1cigpO3cub3BlbigpfWVsc2UgaWYoVih0KXx8aXx8byl7dmFyIHI9ISF3LnRpbWVDb250YWluZXImJncudGltZUNvbnRhaW5lci5jb250YWlucyh0KTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIDEzOnI\/KGUucHJldmVudERlZmF1bHQoKSxJKCksc2UoKSk6dWUoZSk7YnJlYWs7Y2FzZSAyNzplLnByZXZlbnREZWZhdWx0KCksc2UoKTticmVhaztjYXNlIDg6Y2FzZSA0NjpuJiYhdy5jb25maWcuYWxsb3dJbnB1dCYmKGUucHJldmVudERlZmF1bHQoKSx3LmNsZWFyKCkpO2JyZWFrO2Nhc2UgMzc6Y2FzZSAzOTppZihyfHxuKXcuaG91ckVsZW1lbnQmJncuaG91ckVsZW1lbnQuZm9jdXMoKTtlbHNlIGlmKGUucHJldmVudERlZmF1bHQoKSx2b2lkIDAhPT13LmRheXNDb250YWluZXImJighMT09PWF8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJmVlKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSl7dmFyIGw9Mzk9PT1lLmtleUNvZGU\/MTotMTtlLmN0cmxLZXk\/KGUuc3RvcFByb3BhZ2F0aW9uKCksRyhsKSxSKFcoMSksMCkpOlIodm9pZCAwLGwpfWJyZWFrO2Nhc2UgMzg6Y2FzZSA0MDplLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9NDA9PT1lLmtleUNvZGU\/MTotMTt3LmRheXNDb250YWluZXImJnZvaWQgMCE9PXQuJGl8fHQ9PT13LmlucHV0fHx0PT09dy5hbHRJbnB1dD9lLmN0cmxLZXk\/KGUuc3RvcFByb3BhZ2F0aW9uKCksUSh3LmN1cnJlbnRZZWFyLWMpLFIoVygxKSwwKSk6cnx8Uih2b2lkIDAsNypjKTp0PT09dy5jdXJyZW50WWVhckVsZW1lbnQ\/USh3LmN1cnJlbnRZZWFyLWMpOncuY29uZmlnLmVuYWJsZVRpbWUmJighciYmdy5ob3VyRWxlbWVudCYmdy5ob3VyRWxlbWVudC5mb2N1cygpLEkoZSksdy5fZGVib3VuY2VkQ2hhbmdlKCkpO2JyZWFrO2Nhc2UgOTppZihyKXt2YXIgZD1bdy5ob3VyRWxlbWVudCx3Lm1pbnV0ZUVsZW1lbnQsdy5zZWNvbmRFbGVtZW50LHcuYW1QTV0uY29uY2F0KHcucGx1Z2luRWxlbWVudHMpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkscz1kLmluZGV4T2YodCk7aWYoLTEhPT1zKXt2YXIgdT1kW3MrKGUuc2hpZnRLZXk\/LTE6MSldO2UucHJldmVudERlZmF1bHQoKSwodXx8dy5faW5wdXQpLmZvY3VzKCl9fWVsc2Uhdy5jb25maWcubm9DYWxlbmRhciYmdy5kYXlzQ29udGFpbmVyJiZ3LmRheXNDb250YWluZXIuY29udGFpbnModCkmJmUuc2hpZnRLZXkmJihlLnByZXZlbnREZWZhdWx0KCksdy5faW5wdXQuZm9jdXMoKSl9fWlmKHZvaWQgMCE9PXcuYW1QTSYmdD09PXcuYW1QTSlzd2l0Y2goZS5rZXkpe2Nhc2Ugdy5sMTBuLmFtUE1bMF0uY2hhckF0KDApOmNhc2Ugdy5sMTBuLmFtUE1bMF0uY2hhckF0KDApLnRvTG93ZXJDYXNlKCk6dy5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNWzBdLFMoKSxiZSgpO2JyZWFrO2Nhc2Ugdy5sMTBuLmFtUE1bMV0uY2hhckF0KDApOmNhc2Ugdy5sMTBuLmFtUE1bMV0uY2hhckF0KDApLnRvTG93ZXJDYXNlKCk6dy5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNWzFdLFMoKSxiZSgpfShufHxWKHQpKSYmcGUoIm9uS2V5RG93biIsZSl9ZnVuY3Rpb24gYWUoZSl7aWYoMT09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJighZXx8ZS5jbGFzc0xpc3QuY29udGFpbnMoImZsYXRwaWNrci1kYXkiKSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSkpe2Zvcih2YXIgdD1lP2UuZGF0ZU9iai5nZXRUaW1lKCk6dy5kYXlzLmZpcnN0RWxlbWVudENoaWxkLmRhdGVPYmouZ2V0VGltZSgpLG49dy5wYXJzZURhdGUody5zZWxlY3RlZERhdGVzWzBdLHZvaWQgMCwhMCkuZ2V0VGltZSgpLGE9TWF0aC5taW4odCx3LnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKSxpPU1hdGgubWF4KHQsdy5zZWxlY3RlZERhdGVzWzBdLmdldFRpbWUoKSksbz0hMSxyPTAsbD0wLGM9YTtjPGk7Yys9eSlYKG5ldyBEYXRlKGMpLCEwKXx8KG89b3x8Yz5hJiZjPGksYzxuJiYoIXJ8fGM+cik\/cj1jOmM+biYmKCFsfHxjPGwpJiYobD1jKSk7Zm9yKHZhciBkPTA7ZDx3LmNvbmZpZy5zaG93TW9udGhzO2QrKylmb3IodmFyIHM9dy5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW2RdLHU9ZnVuY3Rpb24oYSxpKXt2YXIgYyxkLHUsZj1zLmNoaWxkcmVuW2FdLG09Zi5kYXRlT2JqLmdldFRpbWUoKSxnPXI+MCYmbTxyfHxsPjAmJm0+bDtyZXR1cm4gZz8oZi5jbGFzc0xpc3QuYWRkKCJub3RBbGxvd2VkIiksWyJpblJhbmdlIiwic3RhcnRSYW5nZSIsImVuZFJhbmdlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zi5jbGFzc0xpc3QucmVtb3ZlKGUpfSkpLCJjb250aW51ZSIpOm8mJiFnPyJjb250aW51ZSI6KFsic3RhcnRSYW5nZSIsImluUmFuZ2UiLCJlbmRSYW5nZSIsIm5vdEFsbG93ZWQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmLmNsYXNzTGlzdC5yZW1vdmUoZSl9KSksdm9pZCh2b2lkIDAhPT1lJiYoZS5jbGFzc0xpc3QuYWRkKHQ8PXcuc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKCk\/InN0YXJ0UmFuZ2UiOiJlbmRSYW5nZSIpLG48dCYmbT09PW4\/Zi5jbGFzc0xpc3QuYWRkKCJzdGFydFJhbmdlIik6bj50JiZtPT09biYmZi5jbGFzc0xpc3QuYWRkKCJlbmRSYW5nZSIpLG0+PXImJigwPT09bHx8bTw9bCkmJihkPW4sdT10LChjPW0pPk1hdGgubWluKGQsdSkmJmM8TWF0aC5tYXgoZCx1KSkmJmYuY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpKSkpfSxmPTAsbT1zLmNoaWxkcmVuLmxlbmd0aDtmPG07ZisrKXUoZil9fWZ1bmN0aW9uIGllKCl7IXcuaXNPcGVufHx3LmNvbmZpZy5zdGF0aWN8fHcuY29uZmlnLmlubGluZXx8Y2UoKX1mdW5jdGlvbiBvZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dy5jb25maWdbIl8iK2UrIkRhdGUiXT13LnBhcnNlRGF0ZSh0LHcuY29uZmlnLmRhdGVGb3JtYXQpLGE9dy5jb25maWdbIl8iKygibWluIj09PWU\/Im1heCI6Im1pbiIpKyJEYXRlIl07dm9pZCAwIT09biYmKHdbIm1pbiI9PT1lPyJtaW5EYXRlSGFzVGltZSI6Im1heERhdGVIYXNUaW1lIl09bi5nZXRIb3VycygpPjB8fG4uZ2V0TWludXRlcygpPjB8fG4uZ2V0U2Vjb25kcygpPjApLHcuc2VsZWN0ZWREYXRlcyYmKHcuc2VsZWN0ZWREYXRlcz13LnNlbGVjdGVkRGF0ZXMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gWChlKX0pKSx3LnNlbGVjdGVkRGF0ZXMubGVuZ3RofHwibWluIiE9PWV8fF8obiksYmUoKSksdy5kYXlzQ29udGFpbmVyJiYoZGUoKSx2b2lkIDAhPT1uP3cuY3VycmVudFllYXJFbGVtZW50W2VdPW4uZ2V0RnVsbFllYXIoKS50b1N0cmluZygpOncuY3VycmVudFllYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShlKSx3LmN1cnJlbnRZZWFyRWxlbWVudC5kaXNhYmxlZD0hIWEmJnZvaWQgMCE9PW4mJmEuZ2V0RnVsbFllYXIoKT09PW4uZ2V0RnVsbFllYXIoKSl9fWZ1bmN0aW9uIHJlKCl7cmV0dXJuIHcuY29uZmlnLndyYXA\/cC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1pbnB1dF0iKTpwfWZ1bmN0aW9uIGxlKCl7Im9iamVjdCIhPXR5cGVvZiB3LmNvbmZpZy5sb2NhbGUmJnZvaWQgMD09PVQubDEwbnNbdy5jb25maWcubG9jYWxlXSYmdy5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiZmxhdHBpY2tyOiBpbnZhbGlkIGxvY2FsZSAiK3cuY29uZmlnLmxvY2FsZSkpLHcubDEwbj1lKGUoe30sVC5sMTBucy5kZWZhdWx0KSwib2JqZWN0Ij09dHlwZW9mIHcuY29uZmlnLmxvY2FsZT93LmNvbmZpZy5sb2NhbGU6ImRlZmF1bHQiIT09dy5jb25maWcubG9jYWxlP1QubDEwbnNbdy5jb25maWcubG9jYWxlXTp2b2lkIDApLEQuSz0iKCIrdy5sMTBuLmFtUE1bMF0rInwiK3cubDEwbi5hbVBNWzFdKyJ8Iit3LmwxMG4uYW1QTVswXS50b0xvd2VyQ2FzZSgpKyJ8Iit3LmwxMG4uYW1QTVsxXS50b0xvd2VyQ2FzZSgpKyIpIix2b2lkIDA9PT1lKGUoe30sdiksSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwLmRhdGFzZXR8fHt9KSkpLnRpbWVfMjRociYmdm9pZCAwPT09VC5kZWZhdWx0Q29uZmlnLnRpbWVfMjRociYmKHcuY29uZmlnLnRpbWVfMjRocj13LmwxMG4udGltZV8yNGhyKSx3LmZvcm1hdERhdGU9Yih3KSx3LnBhcnNlRGF0ZT1DKHtjb25maWc6dy5jb25maWcsbDEwbjp3LmwxMG59KX1mdW5jdGlvbiBjZShlKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygdy5jb25maWcucG9zaXRpb24pe2lmKHZvaWQgMCE9PXcuY2FsZW5kYXJDb250YWluZXIpe3BlKCJvblByZUNhbGVuZGFyUG9zaXRpb24iKTt2YXIgdD1lfHx3Ll9wb3NpdGlvbkVsZW1lbnQsbj1BcnJheS5wcm90b3R5cGUucmVkdWNlLmNhbGwody5jYWxlbmRhckNvbnRhaW5lci5jaGlsZHJlbiwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lm9mZnNldEhlaWdodH0pLDApLGE9dy5jYWxlbmRhckNvbnRhaW5lci5vZmZzZXRXaWR0aCxpPXcuY29uZmlnLnBvc2l0aW9uLnNwbGl0KCIgIiksbz1pWzBdLHI9aS5sZW5ndGg+MT9pWzFdOm51bGwsbD10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGM9d2luZG93LmlubmVySGVpZ2h0LWwuYm90dG9tLHM9ImFib3ZlIj09PW98fCJiZWxvdyIhPT1vJiZjPG4mJmwudG9wPm4sdT13aW5kb3cucGFnZVlPZmZzZXQrbC50b3ArKHM\/LW4tMjp0Lm9mZnNldEhlaWdodCsyKTtpZihkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93VG9wIiwhcyksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhcnJvd0JvdHRvbSIscyksIXcuY29uZmlnLmlubGluZSl7dmFyIGY9d2luZG93LnBhZ2VYT2Zmc2V0K2wubGVmdCxtPSExLGc9ITE7ImNlbnRlciI9PT1yPyhmLT0oYS1sLndpZHRoKS8yLG09ITApOiJyaWdodCI9PT1yJiYoZi09YS1sLndpZHRoLGc9ITApLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dMZWZ0IiwhbSYmIWcpLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dDZW50ZXIiLG0pLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dSaWdodCIsZyk7dmFyIHA9d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgtKHdpbmRvdy5wYWdlWE9mZnNldCtsLnJpZ2h0KSxoPWYrYT53aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCx2PXArYT53aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtpZihkKHcuY2FsZW5kYXJDb250YWluZXIsInJpZ2h0TW9zdCIsaCksIXcuY29uZmlnLnN0YXRpYylpZih3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnRvcD11KyJweCIsaClpZih2KXt2YXIgRD1mdW5jdGlvbigpe2Zvcih2YXIgZT1udWxsLHQ9MDt0PGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDt0Kyspe3ZhciBuPWRvY3VtZW50LnN0eWxlU2hlZXRzW3RdO3RyeXtuLmNzc1J1bGVzfWNhdGNoKGUpe2NvbnRpbnVlfWU9bjticmVha31yZXR1cm4gbnVsbCE9ZT9lOihhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhKSxhLnNoZWV0KTt2YXIgYX0oKTtpZih2b2lkIDA9PT1EKXJldHVybjt2YXIgYj13aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCxDPU1hdGgubWF4KDAsYi8yLWEvMiksTT1ELmNzc1J1bGVzLmxlbmd0aCx5PSJ7bGVmdDoiK2wubGVmdCsicHg7cmlnaHQ6YXV0bzt9IjtkKHcuY2FsZW5kYXJDb250YWluZXIsInJpZ2h0TW9zdCIsITEpLGQody5jYWxlbmRhckNvbnRhaW5lciwiY2VudGVyTW9zdCIsITApLEQuaW5zZXJ0UnVsZSgiLmZsYXRwaWNrci1jYWxlbmRhci5jZW50ZXJNb3N0OmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YWZ0ZXIiK3ksTSksdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0PUMrInB4Iix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0PSJhdXRvIn1lbHNlIHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdD0iYXV0byIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodD1wKyJweCI7ZWxzZSB3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmxlZnQ9ZisicHgiLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQ9ImF1dG8ifX19ZWxzZSB3LmNvbmZpZy5wb3NpdGlvbih3LGUpfWZ1bmN0aW9uIGRlKCl7dy5jb25maWcubm9DYWxlbmRhcnx8dy5pc01vYmlsZXx8KEsoKSxEZSgpLEooKSl9ZnVuY3Rpb24gc2UoKXt3Ll9pbnB1dC5mb2N1cygpLC0xIT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpfHx2b2lkIDAhPT1uYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cz9zZXRUaW1lb3V0KHcuY2xvc2UsMCk6dy5jbG9zZSgpfWZ1bmN0aW9uIHVlKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO3ZhciB0PWYoZyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NMaXN0JiZlLmNsYXNzTGlzdC5jb250YWlucygiZmxhdHBpY2tyLWRheSIpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMoImZsYXRwaWNrci1kaXNhYmxlZCIpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMoIm5vdEFsbG93ZWQiKX0pKTtpZih2b2lkIDAhPT10KXt2YXIgbj10LGE9dy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9bmV3IERhdGUobi5kYXRlT2JqLmdldFRpbWUoKSksaT0oYS5nZXRNb250aCgpPHcuY3VycmVudE1vbnRofHxhLmdldE1vbnRoKCk+dy5jdXJyZW50TW9udGgrdy5jb25maWcuc2hvd01vbnRocy0xKSYmInJhbmdlIiE9PXcuY29uZmlnLm1vZGU7aWYody5zZWxlY3RlZERhdGVFbGVtPW4sInNpbmdsZSI9PT13LmNvbmZpZy5tb2RlKXcuc2VsZWN0ZWREYXRlcz1bYV07ZWxzZSBpZigibXVsdGlwbGUiPT09dy5jb25maWcubW9kZSl7dmFyIG89dmUoYSk7bz93LnNlbGVjdGVkRGF0ZXMuc3BsaWNlKHBhcnNlSW50KG8pLDEpOncuc2VsZWN0ZWREYXRlcy5wdXNoKGEpfWVsc2UicmFuZ2UiPT09dy5jb25maWcubW9kZSYmKDI9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiZ3LmNsZWFyKCExLCExKSx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj1hLHcuc2VsZWN0ZWREYXRlcy5wdXNoKGEpLDAhPT1NKGEsdy5zZWxlY3RlZERhdGVzWzBdLCEwKSYmdy5zZWxlY3RlZERhdGVzLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfSkpKTtpZihTKCksaSl7dmFyIHI9dy5jdXJyZW50WWVhciE9PWEuZ2V0RnVsbFllYXIoKTt3LmN1cnJlbnRZZWFyPWEuZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD1hLmdldE1vbnRoKCksciYmKHBlKCJvblllYXJDaGFuZ2UiKSxLKCkpLHBlKCJvbk1vbnRoQ2hhbmdlIil9aWYoRGUoKSxKKCksYmUoKSxpfHwicmFuZ2UiPT09dy5jb25maWcubW9kZXx8MSE9PXcuY29uZmlnLnNob3dNb250aHM\/dm9pZCAwIT09dy5zZWxlY3RlZERhdGVFbGVtJiZ2b2lkIDA9PT13LmhvdXJFbGVtZW50JiZ3LnNlbGVjdGVkRGF0ZUVsZW0mJncuc2VsZWN0ZWREYXRlRWxlbS5mb2N1cygpOkwobiksdm9pZCAwIT09dy5ob3VyRWxlbWVudCYmdm9pZCAwIT09dy5ob3VyRWxlbWVudCYmdy5ob3VyRWxlbWVudC5mb2N1cygpLHcuY29uZmlnLmNsb3NlT25TZWxlY3Qpe3ZhciBsPSJzaW5nbGUiPT09dy5jb25maWcubW9kZSYmIXcuY29uZmlnLmVuYWJsZVRpbWUsYz0icmFuZ2UiPT09dy5jb25maWcubW9kZSYmMj09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJiF3LmNvbmZpZy5lbmFibGVUaW1lOyhsfHxjKSYmc2UoKX1OKCl9fXcucGFyc2VEYXRlPUMoe2NvbmZpZzp3LmNvbmZpZyxsMTBuOncubDEwbn0pLHcuX2hhbmRsZXJzPVtdLHcucGx1Z2luRWxlbWVudHM9W10sdy5sb2FkZWRQbHVnaW5zPVtdLHcuX2JpbmQ9QSx3Ll9zZXRIb3Vyc0Zyb21EYXRlPV8sdy5fcG9zaXRpb25DYWxlbmRhcj1jZSx3LmNoYW5nZU1vbnRoPUcsdy5jaGFuZ2VZZWFyPVEsdy5jbGVhcj1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PWUmJihlPSEwKTt2b2lkIDA9PT10JiYodD0hMCk7dy5pbnB1dC52YWx1ZT0iIix2b2lkIDAhPT13LmFsdElucHV0JiYody5hbHRJbnB1dC52YWx1ZT0iIik7dm9pZCAwIT09dy5tb2JpbGVJbnB1dCYmKHcubW9iaWxlSW5wdXQudmFsdWU9IiIpO3cuc2VsZWN0ZWREYXRlcz1bXSx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj12b2lkIDAsITA9PT10JiYody5jdXJyZW50WWVhcj13Ll9pbml0aWFsRGF0ZS5nZXRGdWxsWWVhcigpLHcuY3VycmVudE1vbnRoPXcuX2luaXRpYWxEYXRlLmdldE1vbnRoKCkpO2lmKCEwPT09dy5jb25maWcuZW5hYmxlVGltZSl7dmFyIG49eCh3LmNvbmZpZyksYT1uLmhvdXJzLGk9bi5taW51dGVzLG89bi5zZWNvbmRzO08oYSxpLG8pfXcucmVkcmF3KCksZSYmcGUoIm9uQ2hhbmdlIil9LHcuY2xvc2U9ZnVuY3Rpb24oKXt3LmlzT3Blbj0hMSx3LmlzTW9iaWxlfHwodm9pZCAwIT09dy5jYWxlbmRhckNvbnRhaW5lciYmdy5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJvcGVuIiksdm9pZCAwIT09dy5faW5wdXQmJncuX2lucHV0LmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpKTtwZSgib25DbG9zZSIpfSx3Ll9jcmVhdGVFbGVtZW50PXMsdy5kZXN0cm95PWZ1bmN0aW9uKCl7dm9pZCAwIT09dy5jb25maWcmJnBlKCJvbkRlc3Ryb3kiKTtmb3IodmFyIGU9dy5faGFuZGxlcnMubGVuZ3RoO2UtLTspdy5faGFuZGxlcnNbZV0ucmVtb3ZlKCk7aWYody5faGFuZGxlcnM9W10sdy5tb2JpbGVJbnB1dCl3Lm1vYmlsZUlucHV0LnBhcmVudE5vZGUmJncubW9iaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh3Lm1vYmlsZUlucHV0KSx3Lm1vYmlsZUlucHV0PXZvaWQgMDtlbHNlIGlmKHcuY2FsZW5kYXJDb250YWluZXImJncuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSlpZih3LmNvbmZpZy5zdGF0aWMmJncuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZSl7dmFyIHQ9dy5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlO2lmKHQubGFzdENoaWxkJiZ0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKSx0LnBhcmVudE5vZGUpe2Zvcig7dC5maXJzdENoaWxkOyl0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQuZmlyc3RDaGlsZCx0KTt0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9fWVsc2Ugdy5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpO3cuYWx0SW5wdXQmJih3LmlucHV0LnR5cGU9InRleHQiLHcuYWx0SW5wdXQucGFyZW50Tm9kZSYmdy5hbHRJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHcuYWx0SW5wdXQpLGRlbGV0ZSB3LmFsdElucHV0KTt3LmlucHV0JiYody5pbnB1dC50eXBlPXcuaW5wdXQuX3R5cGUsdy5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCJmbGF0cGlja3ItaW5wdXQiKSx3LmlucHV0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSk7WyJfc2hvd1RpbWVJbnB1dCIsImxhdGVzdFNlbGVjdGVkRGF0ZU9iaiIsIl9oaWRlTmV4dE1vbnRoQXJyb3ciLCJfaGlkZVByZXZNb250aEFycm93IiwiX19oaWRlTmV4dE1vbnRoQXJyb3ciLCJfX2hpZGVQcmV2TW9udGhBcnJvdyIsImlzTW9iaWxlIiwiaXNPcGVuIiwic2VsZWN0ZWREYXRlRWxlbSIsIm1pbkRhdGVIYXNUaW1lIiwibWF4RGF0ZUhhc1RpbWUiLCJkYXlzIiwiZGF5c0NvbnRhaW5lciIsIl9pbnB1dCIsIl9wb3NpdGlvbkVsZW1lbnQiLCJpbm5lckNvbnRhaW5lciIsInJDb250YWluZXIiLCJtb250aE5hdiIsInRvZGF5RGF0ZUVsZW0iLCJjYWxlbmRhckNvbnRhaW5lciIsIndlZWtkYXlDb250YWluZXIiLCJwcmV2TW9udGhOYXYiLCJuZXh0TW9udGhOYXYiLCJtb250aHNEcm9wZG93bkNvbnRhaW5lciIsImN1cnJlbnRNb250aEVsZW1lbnQiLCJjdXJyZW50WWVhckVsZW1lbnQiLCJuYXZpZ2F0aW9uQ3VycmVudE1vbnRoIiwic2VsZWN0ZWREYXRlRWxlbSIsImNvbmZpZyJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RyeXtkZWxldGUgd1tlXX1jYXRjaChlKXt9fSkpfSx3LmlzRW5hYmxlZD1YLHcuanVtcFRvRGF0ZT1QLHcub3Blbj1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXcuX3Bvc2l0aW9uRWxlbWVudCk7aWYoITA9PT13LmlzTW9iaWxlKXtpZihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIG49ZyhlKTtuJiZuLmJsdXIoKX1yZXR1cm4gdm9pZCAwIT09dy5tb2JpbGVJbnB1dCYmKHcubW9iaWxlSW5wdXQuZm9jdXMoKSx3Lm1vYmlsZUlucHV0LmNsaWNrKCkpLHZvaWQgcGUoIm9uT3BlbiIpfWlmKHcuX2lucHV0LmRpc2FibGVkfHx3LmNvbmZpZy5pbmxpbmUpcmV0dXJuO3ZhciBhPXcuaXNPcGVuO3cuaXNPcGVuPSEwLGF8fCh3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm9wZW4iKSx3Ll9pbnB1dC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSxwZSgib25PcGVuIiksY2UodCkpOyEwPT09dy5jb25maWcuZW5hYmxlVGltZSYmITA9PT13LmNvbmZpZy5ub0NhbGVuZGFyJiYoITEhPT13LmNvbmZpZy5hbGxvd0lucHV0fHx2b2lkIDAhPT1lJiZ3LnRpbWVDb250YWluZXIuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KXx8c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdy5ob3VyRWxlbWVudC5zZWxlY3QoKX0pLDUwKSl9LHcucmVkcmF3PWRlLHcuc2V0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSlmb3IodmFyIGEgaW4gT2JqZWN0LmFzc2lnbih3LmNvbmZpZyxlKSxlKXZvaWQgMCE9PWZlW2FdJiZmZVthXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpO2Vsc2Ugdy5jb25maWdbZV09dCx2b2lkIDAhPT1mZVtlXT9mZVtlXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpOm4uaW5kZXhPZihlKT4tMSYmKHcuY29uZmlnW2VdPWModCkpO3cucmVkcmF3KCksYmUoITApfSx3LnNldERhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PXQmJih0PSExKTt2b2lkIDA9PT1uJiYobj13LmNvbmZpZy5kYXRlRm9ybWF0KTtpZigwIT09ZSYmIWV8fGUgaW5zdGFuY2VvZiBBcnJheSYmMD09PWUubGVuZ3RoKXJldHVybiB3LmNsZWFyKHQpO21lKGUsbiksdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9dy5zZWxlY3RlZERhdGVzW3cuc2VsZWN0ZWREYXRlcy5sZW5ndGgtMV0sdy5yZWRyYXcoKSxQKHZvaWQgMCx0KSxfKCksMD09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJncuY2xlYXIoITEpO2JlKHQpLHQmJnBlKCJvbkNoYW5nZSIpfSx3LnRvZ2dsZT1mdW5jdGlvbihlKXtpZighMD09PXcuaXNPcGVuKXJldHVybiB3LmNsb3NlKCk7dy5vcGVuKGUpfTt2YXIgZmU9e2xvY2FsZTpbbGUsel0sc2hvd01vbnRoczpbcSxrLCRdLG1pbkRhdGU6W1BdLG1heERhdGU6W1BdLGNsaWNrT3BlbnM6W2Z1bmN0aW9uKCl7ITA9PT13LmNvbmZpZy5jbGlja09wZW5zPyhBKHcuX2lucHV0LCJmb2N1cyIsdy5vcGVuKSxBKHcuX2lucHV0LCJjbGljayIsdy5vcGVuKSk6KHcuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix3Lm9wZW4pLHcuX2lucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix3Lm9wZW4pKX1dfTtmdW5jdGlvbiBtZShlLHQpe3ZhciBuPVtdO2lmKGUgaW5zdGFuY2VvZiBBcnJheSluPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdy5wYXJzZURhdGUoZSx0KX0pKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBEYXRlfHwibnVtYmVyIj09dHlwZW9mIGUpbj1bdy5wYXJzZURhdGUoZSx0KV07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpc3dpdGNoKHcuY29uZmlnLm1vZGUpe2Nhc2Uic2luZ2xlIjpjYXNlInRpbWUiOm49W3cucGFyc2VEYXRlKGUsdCldO2JyZWFrO2Nhc2UibXVsdGlwbGUiOm49ZS5zcGxpdCh3LmNvbmZpZy5jb25qdW5jdGlvbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdy5wYXJzZURhdGUoZSx0KX0pKTticmVhaztjYXNlInJhbmdlIjpuPWUuc3BsaXQody5sMTBuLnJhbmdlU2VwYXJhdG9yKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB3LnBhcnNlRGF0ZShlLHQpfSkpfWVsc2Ugdy5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBkYXRlIHN1cHBsaWVkOiAiK0pTT04uc3RyaW5naWZ5KGUpKSk7dy5zZWxlY3RlZERhdGVzPXcuY29uZmlnLmFsbG93SW52YWxpZFByZWxvYWQ\/bjpuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlJiZYKGUsITEpfSkpLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiZ3LnNlbGVjdGVkRGF0ZXMuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRUaW1lKCktdC5nZXRUaW1lKCl9KSl9ZnVuY3Rpb24gZ2UoZSl7cmV0dXJuIGUuc2xpY2UoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgRGF0ZT93LnBhcnNlRGF0ZShlLHZvaWQgMCwhMCk6ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlLmZyb20mJmUudG8\/e2Zyb206dy5wYXJzZURhdGUoZS5mcm9tLHZvaWQgMCksdG86dy5wYXJzZURhdGUoZS50byx2b2lkIDApfTplfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSl9ZnVuY3Rpb24gcGUoZSx0KXtpZih2b2lkIDAhPT13LmNvbmZpZyl7dmFyIG49dy5jb25maWdbZV07aWYodm9pZCAwIT09biYmbi5sZW5ndGg+MClmb3IodmFyIGE9MDtuW2FdJiZhPG4ubGVuZ3RoO2ErKyluW2FdKHcuc2VsZWN0ZWREYXRlcyx3LmlucHV0LnZhbHVlLHcsdCk7Im9uQ2hhbmdlIj09PWUmJih3LmlucHV0LmRpc3BhdGNoRXZlbnQoaGUoImNoYW5nZSIpKSx3LmlucHV0LmRpc3BhdGNoRXZlbnQoaGUoImlucHV0IikpKX19ZnVuY3Rpb24gaGUoZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7cmV0dXJuIHQuaW5pdEV2ZW50KGUsITAsITApLHR9ZnVuY3Rpb24gdmUoZSl7Zm9yKHZhciB0PTA7dDx3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoO3QrKylpZigwPT09TSh3LnNlbGVjdGVkRGF0ZXNbdF0sZSkpcmV0dXJuIiIrdDtyZXR1cm4hMX1mdW5jdGlvbiBEZSgpe3cuY29uZmlnLm5vQ2FsZW5kYXJ8fHcuaXNNb2JpbGV8fCF3Lm1vbnRoTmF2fHwody55ZWFyRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgRGF0ZSh3LmN1cnJlbnRZZWFyLHcuY3VycmVudE1vbnRoLDEpO24uc2V0TW9udGgody5jdXJyZW50TW9udGgrdCksdy5jb25maWcuc2hvd01vbnRocz4xfHwic3RhdGljIj09PXcuY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlP3cubW9udGhFbGVtZW50c1t0XS50ZXh0Q29udGVudD1oKG4uZ2V0TW9udGgoKSx3LmNvbmZpZy5zaG9ydGhhbmRDdXJyZW50TW9udGgsdy5sMTBuKSsiICI6dy5tb250aHNEcm9wZG93bkNvbnRhaW5lci52YWx1ZT1uLmdldE1vbnRoKCkudG9TdHJpbmcoKSxlLnZhbHVlPW4uZ2V0RnVsbFllYXIoKS50b1N0cmluZygpfSkpLHcuX2hpZGVQcmV2TW9udGhBcnJvdz12b2lkIDAhPT13LmNvbmZpZy5taW5EYXRlJiYody5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKT93LmN1cnJlbnRNb250aDw9dy5jb25maWcubWluRGF0ZS5nZXRNb250aCgpOncuY3VycmVudFllYXI8dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpKSx3Ll9oaWRlTmV4dE1vbnRoQXJyb3c9dm9pZCAwIT09dy5jb25maWcubWF4RGF0ZSYmKHcuY3VycmVudFllYXI9PT13LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCk\/dy5jdXJyZW50TW9udGgrMT53LmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCk6dy5jdXJyZW50WWVhcj53LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpKX1mdW5jdGlvbiB3ZShlKXtyZXR1cm4gdy5zZWxlY3RlZERhdGVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHcuZm9ybWF0RGF0ZSh0LGUpfSkpLmZpbHRlcigoZnVuY3Rpb24oZSx0LG4pe3JldHVybiJyYW5nZSIhPT13LmNvbmZpZy5tb2RlfHx3LmNvbmZpZy5lbmFibGVUaW1lfHxuLmluZGV4T2YoZSk9PT10fSkpLmpvaW4oInJhbmdlIiE9PXcuY29uZmlnLm1vZGU\/dy5jb25maWcuY29uanVuY3Rpb246dy5sMTBuLnJhbmdlU2VwYXJhdG9yKX1mdW5jdGlvbiBiZShlKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwIT09dy5tb2JpbGVJbnB1dCYmdy5tb2JpbGVGb3JtYXRTdHImJih3Lm1vYmlsZUlucHV0LnZhbHVlPXZvaWQgMCE9PXcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cuZm9ybWF0RGF0ZSh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaix3Lm1vYmlsZUZvcm1hdFN0cik6IiIpLHcuaW5wdXQudmFsdWU9d2Uody5jb25maWcuZGF0ZUZvcm1hdCksdm9pZCAwIT09dy5hbHRJbnB1dCYmKHcuYWx0SW5wdXQudmFsdWU9d2Uody5jb25maWcuYWx0Rm9ybWF0KSksITEhPT1lJiZwZSgib25WYWx1ZVVwZGF0ZSIpfWZ1bmN0aW9uIENlKGUpe3ZhciB0PWcoZSksbj13LnByZXZNb250aE5hdi5jb250YWlucyh0KSxhPXcubmV4dE1vbnRoTmF2LmNvbnRhaW5zKHQpO258fGE\/RyhuPy0xOjEpOncueWVhckVsZW1lbnRzLmluZGV4T2YodCk+PTA\/dC5zZWxlY3QoKTp0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dVcCIpP3cuY2hhbmdlWWVhcih3LmN1cnJlbnRZZWFyKzEpOnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcnJvd0Rvd24iKSYmdy5jaGFuZ2VZZWFyKHcuY3VycmVudFllYXItMSl9cmV0dXJuIGZ1bmN0aW9uKCl7dy5lbGVtZW50PXcuaW5wdXQ9cCx3LmlzT3Blbj0hMSxmdW5jdGlvbigpe3ZhciB0PVsid3JhcCIsIndlZWtOdW1iZXJzIiwiYWxsb3dJbnB1dCIsImFsbG93SW52YWxpZFByZWxvYWQiLCJjbGlja09wZW5zIiwidGltZV8yNGhyIiwiZW5hYmxlVGltZSIsIm5vQ2FsZW5kYXIiLCJhbHRJbnB1dCIsInNob3J0aGFuZEN1cnJlbnRNb250aCIsImlubGluZSIsInN0YXRpYyIsImVuYWJsZVNlY29uZHMiLCJkaXNhYmxlTW9iaWxlIl0saT1lKGUoe30sSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwLmRhdGFzZXR8fHt9KSkpLHYpLG89e307dy5jb25maWcucGFyc2VEYXRlPWkucGFyc2VEYXRlLHcuY29uZmlnLmZvcm1hdERhdGU9aS5mb3JtYXREYXRlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywiZW5hYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9lbmFibGV9LHNldDpmdW5jdGlvbihlKXt3LmNvbmZpZy5fZW5hYmxlPWdlKGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywiZGlzYWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fZGlzYWJsZX0sc2V0OmZ1bmN0aW9uKGUpe3cuY29uZmlnLl9kaXNhYmxlPWdlKGUpfX0pO3ZhciByPSJ0aW1lIj09PWkubW9kZTtpZighaS5kYXRlRm9ybWF0JiYoaS5lbmFibGVUaW1lfHxyKSl7dmFyIGw9VC5kZWZhdWx0Q29uZmlnLmRhdGVGb3JtYXR8fGEuZGF0ZUZvcm1hdDtvLmRhdGVGb3JtYXQ9aS5ub0NhbGVuZGFyfHxyPyJIOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIjoiIik6bCsiIEg6aSIrKGkuZW5hYmxlU2Vjb25kcz8iOlMiOiIiKX1pZihpLmFsdElucHV0JiYoaS5lbmFibGVUaW1lfHxyKSYmIWkuYWx0Rm9ybWF0KXt2YXIgZD1ULmRlZmF1bHRDb25maWcuYWx0Rm9ybWF0fHxhLmFsdEZvcm1hdDtvLmFsdEZvcm1hdD1pLm5vQ2FsZW5kYXJ8fHI\/Img6aSIrKGkuZW5hYmxlU2Vjb25kcz8iOlMgSyI6IiBLIik6ZCsiIGg6aSIrKGkuZW5hYmxlU2Vjb25kcz8iOlMiOiIiKSsiIEsifU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywibWluRGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fbWluRGF0ZX0sc2V0Om9lKCJtaW4iKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywibWF4RGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fbWF4RGF0ZX0sc2V0Om9lKCJtYXgiKX0pO3ZhciBzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt3LmNvbmZpZ1sibWluIj09PWU\/Il9taW5UaW1lIjoiX21heFRpbWUiXT13LnBhcnNlRGF0ZSh0LCJIOmk6UyIpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJtaW5UaW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9taW5UaW1lfSxzZXQ6cygibWluIil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsIm1heFRpbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX21heFRpbWV9LHNldDpzKCJtYXgiKX0pLCJ0aW1lIj09PWkubW9kZSYmKHcuY29uZmlnLm5vQ2FsZW5kYXI9ITAsdy5jb25maWcuZW5hYmxlVGltZT0hMCk7T2JqZWN0LmFzc2lnbih3LmNvbmZpZyxvLGkpO2Zvcih2YXIgdT0wO3U8dC5sZW5ndGg7dSsrKXcuY29uZmlnW3RbdV1dPSEwPT09dy5jb25maWdbdFt1XV18fCJ0cnVlIj09PXcuY29uZmlnW3RbdV1dO24uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09dy5jb25maWdbZV19KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dy5jb25maWdbZV09Yyh3LmNvbmZpZ1tlXXx8W10pLm1hcChFKX0pKSx3LmlzTW9iaWxlPSF3LmNvbmZpZy5kaXNhYmxlTW9iaWxlJiYhdy5jb25maWcuaW5saW5lJiYic2luZ2xlIj09PXcuY29uZmlnLm1vZGUmJiF3LmNvbmZpZy5kaXNhYmxlLmxlbmd0aCYmIXcuY29uZmlnLmVuYWJsZSYmIXcuY29uZmlnLndlZWtOdW1iZXJzJiYvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7Zm9yKHU9MDt1PHcuY29uZmlnLnBsdWdpbnMubGVuZ3RoO3UrKyl7dmFyIGY9dy5jb25maWcucGx1Z2luc1t1XSh3KXx8e307Zm9yKHZhciBtIGluIGYpbi5pbmRleE9mKG0pPi0xP3cuY29uZmlnW21dPWMoZlttXSkubWFwKEUpLmNvbmNhdCh3LmNvbmZpZ1ttXSk6dm9pZCAwPT09aVttXSYmKHcuY29uZmlnW21dPWZbbV0pfWkuYWx0SW5wdXRDbGFzc3x8KHcuY29uZmlnLmFsdElucHV0Q2xhc3M9cmUoKS5jbGFzc05hbWUrIiAiK3cuY29uZmlnLmFsdElucHV0Q2xhc3MpO3BlKCJvblBhcnNlQ29uZmlnIil9KCksbGUoKSxmdW5jdGlvbigpe2lmKHcuaW5wdXQ9cmUoKSwhdy5pbnB1dClyZXR1cm4gdm9pZCB3LmNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IGVsZW1lbnQgc3BlY2lmaWVkIikpO3cuaW5wdXQuX3R5cGU9dy5pbnB1dC50eXBlLHcuaW5wdXQudHlwZT0idGV4dCIsdy5pbnB1dC5jbGFzc0xpc3QuYWRkKCJmbGF0cGlja3ItaW5wdXQiKSx3Ll9pbnB1dD13LmlucHV0LHcuY29uZmlnLmFsdElucHV0JiYody5hbHRJbnB1dD1zKHcuaW5wdXQubm9kZU5hbWUsdy5jb25maWcuYWx0SW5wdXRDbGFzcyksdy5faW5wdXQ9dy5hbHRJbnB1dCx3LmFsdElucHV0LnBsYWNlaG9sZGVyPXcuaW5wdXQucGxhY2Vob2xkZXIsdy5hbHRJbnB1dC5kaXNhYmxlZD13LmlucHV0LmRpc2FibGVkLHcuYWx0SW5wdXQucmVxdWlyZWQ9dy5pbnB1dC5yZXF1aXJlZCx3LmFsdElucHV0LnRhYkluZGV4PXcuaW5wdXQudGFiSW5kZXgsdy5hbHRJbnB1dC50eXBlPSJ0ZXh0Iix3LmlucHV0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLCF3LmNvbmZpZy5zdGF0aWMmJncuaW5wdXQucGFyZW50Tm9kZSYmdy5pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3LmFsdElucHV0LHcuaW5wdXQubmV4dFNpYmxpbmcpKTt3LmNvbmZpZy5hbGxvd0lucHV0fHx3Ll9pbnB1dC5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwicmVhZG9ubHkiKTt3Ll9wb3NpdGlvbkVsZW1lbnQ9dy5jb25maWcucG9zaXRpb25FbGVtZW50fHx3Ll9pbnB1dH0oKSxmdW5jdGlvbigpe3cuc2VsZWN0ZWREYXRlcz1bXSx3Lm5vdz13LnBhcnNlRGF0ZSh3LmNvbmZpZy5ub3cpfHxuZXcgRGF0ZTt2YXIgZT13LmNvbmZpZy5kZWZhdWx0RGF0ZXx8KCJJTlBVVCIhPT13LmlucHV0Lm5vZGVOYW1lJiYiVEVYVEFSRUEiIT09dy5pbnB1dC5ub2RlTmFtZXx8IXcuaW5wdXQucGxhY2Vob2xkZXJ8fHcuaW5wdXQudmFsdWUhPT13LmlucHV0LnBsYWNlaG9sZGVyP3cuaW5wdXQudmFsdWU6bnVsbCk7ZSYmbWUoZSx3LmNvbmZpZy5kYXRlRm9ybWF0KTt3Ll9pbml0aWFsRGF0ZT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPjA\/dy5zZWxlY3RlZERhdGVzWzBdOncuY29uZmlnLm1pbkRhdGUmJncuY29uZmlnLm1pbkRhdGUuZ2V0VGltZSgpPncubm93LmdldFRpbWUoKT93LmNvbmZpZy5taW5EYXRlOncuY29uZmlnLm1heERhdGUmJncuY29uZmlnLm1heERhdGUuZ2V0VGltZSgpPHcubm93LmdldFRpbWUoKT93LmNvbmZpZy5tYXhEYXRlOncubm93LHcuY3VycmVudFllYXI9dy5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD13Ll9pbml0aWFsRGF0ZS5nZXRNb250aCgpLHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg+MCYmKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPXcuc2VsZWN0ZWREYXRlc1swXSk7dm9pZCAwIT09dy5jb25maWcubWluVGltZSYmKHcuY29uZmlnLm1pblRpbWU9dy5wYXJzZURhdGUody5jb25maWcubWluVGltZSwiSDppIikpO3ZvaWQgMCE9PXcuY29uZmlnLm1heFRpbWUmJih3LmNvbmZpZy5tYXhUaW1lPXcucGFyc2VEYXRlKHcuY29uZmlnLm1heFRpbWUsIkg6aSIpKTt3Lm1pbkRhdGVIYXNUaW1lPSEhdy5jb25maWcubWluRGF0ZSYmKHcuY29uZmlnLm1pbkRhdGUuZ2V0SG91cnMoKT4wfHx3LmNvbmZpZy5taW5EYXRlLmdldE1pbnV0ZXMoKT4wfHx3LmNvbmZpZy5taW5EYXRlLmdldFNlY29uZHMoKT4wKSx3Lm1heERhdGVIYXNUaW1lPSEhdy5jb25maWcubWF4RGF0ZSYmKHcuY29uZmlnLm1heERhdGUuZ2V0SG91cnMoKT4wfHx3LmNvbmZpZy5tYXhEYXRlLmdldE1pbnV0ZXMoKT4wfHx3LmNvbmZpZy5tYXhEYXRlLmdldFNlY29uZHMoKT4wKX0oKSx3LnV0aWxzPXtnZXREYXlzSW5Nb250aDpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT1lJiYoZT13LmN1cnJlbnRNb250aCksdm9pZCAwPT09dCYmKHQ9dy5jdXJyZW50WWVhciksMT09PWUmJih0JTQ9PTAmJnQlMTAwIT0wfHx0JTQwMD09MCk\/Mjk6dy5sMTBuLmRheXNJbk1vbnRoW2VdfX0sdy5pc01vYmlsZXx8ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKHcuY2FsZW5kYXJDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLWNhbGVuZGFyIiksdy5jYWxlbmRhckNvbnRhaW5lci50YWJJbmRleD0tMSwhdy5jb25maWcubm9DYWxlbmRhcil7aWYoZS5hcHBlbmRDaGlsZCgody5tb250aE5hdj1zKCJkaXYiLCJmbGF0cGlja3ItbW9udGhzIiksdy55ZWFyRWxlbWVudHM9W10sdy5tb250aEVsZW1lbnRzPVtdLHcucHJldk1vbnRoTmF2PXMoInNwYW4iLCJmbGF0cGlja3ItcHJldi1tb250aCIpLHcucHJldk1vbnRoTmF2LmlubmVySFRNTD13LmNvbmZpZy5wcmV2QXJyb3csdy5uZXh0TW9udGhOYXY9cygic3BhbiIsImZsYXRwaWNrci1uZXh0LW1vbnRoIiksdy5uZXh0TW9udGhOYXYuaW5uZXJIVE1MPXcuY29uZmlnLm5leHRBcnJvdyxxKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcsIl9oaWRlUHJldk1vbnRoQXJyb3ciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5fX2hpZGVQcmV2TW9udGhBcnJvd30sc2V0OmZ1bmN0aW9uKGUpe3cuX19oaWRlUHJldk1vbnRoQXJyb3chPT1lJiYoZCh3LnByZXZNb250aE5hdiwiZmxhdHBpY2tyLWRpc2FibGVkIixlKSx3Ll9faGlkZVByZXZNb250aEFycm93PWUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LCJfaGlkZU5leHRNb250aEFycm93Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuX19oaWRlTmV4dE1vbnRoQXJyb3d9LHNldDpmdW5jdGlvbihlKXt3Ll9faGlkZU5leHRNb250aEFycm93IT09ZSYmKGQody5uZXh0TW9udGhOYXYsImZsYXRwaWNrci1kaXNhYmxlZCIsZSksdy5fX2hpZGVOZXh0TW9udGhBcnJvdz1lKX19KSx3LmN1cnJlbnRZZWFyRWxlbWVudD13LnllYXJFbGVtZW50c1swXSxEZSgpLHcubW9udGhOYXYpKSx3LmlubmVyQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1pbm5lckNvbnRhaW5lciIpLHcuY29uZmlnLndlZWtOdW1iZXJzKXt2YXIgdD1mdW5jdGlvbigpe3cuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzV2Vla3MiKTt2YXIgZT1zKCJkaXYiLCJmbGF0cGlja3Itd2Vla3dyYXBwZXIiKTtlLmFwcGVuZENoaWxkKHMoInNwYW4iLCJmbGF0cGlja3Itd2Vla2RheSIsdy5sMTBuLndlZWtBYmJyZXZpYXRpb24pKTt2YXIgdD1zKCJkaXYiLCJmbGF0cGlja3Itd2Vla3MiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZCh0KSx7d2Vla1dyYXBwZXI6ZSx3ZWVrTnVtYmVyczp0fX0oKSxuPXQud2Vla1dyYXBwZXIsYT10LndlZWtOdW1iZXJzO3cuaW5uZXJDb250YWluZXIuYXBwZW5kQ2hpbGQobiksdy53ZWVrTnVtYmVycz1hLHcud2Vla1dyYXBwZXI9bn13LnJDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLXJDb250YWluZXIiKSx3LnJDb250YWluZXIuYXBwZW5kQ2hpbGQoJCgpKSx3LmRheXNDb250YWluZXJ8fCh3LmRheXNDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLWRheXMiKSx3LmRheXNDb250YWluZXIudGFiSW5kZXg9LTEpLEooKSx3LnJDb250YWluZXIuYXBwZW5kQ2hpbGQody5kYXlzQ29udGFpbmVyKSx3LmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHcuckNvbnRhaW5lciksZS5hcHBlbmRDaGlsZCh3LmlubmVyQ29udGFpbmVyKX13LmNvbmZpZy5lbmFibGVUaW1lJiZlLmFwcGVuZENoaWxkKGZ1bmN0aW9uKCl7dy5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoYXNUaW1lIiksdy5jb25maWcubm9DYWxlbmRhciYmdy5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJub0NhbGVuZGFyIik7dmFyIGU9eCh3LmNvbmZpZyk7dy50aW1lQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci10aW1lIiksdy50aW1lQ29udGFpbmVyLnRhYkluZGV4PS0xO3ZhciB0PXMoInNwYW4iLCJmbGF0cGlja3ItdGltZS1zZXBhcmF0b3IiLCI6Iiksbj1tKCJmbGF0cGlja3ItaG91ciIseyJhcmlhLWxhYmVsIjp3LmwxMG4uaG91ckFyaWFMYWJlbH0pO3cuaG91ckVsZW1lbnQ9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTt2YXIgYT1tKCJmbGF0cGlja3ItbWludXRlIix7ImFyaWEtbGFiZWwiOncubDEwbi5taW51dGVBcmlhTGFiZWx9KTt3Lm1pbnV0ZUVsZW1lbnQ9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSx3LmhvdXJFbGVtZW50LnRhYkluZGV4PXcubWludXRlRWxlbWVudC50YWJJbmRleD0tMSx3LmhvdXJFbGVtZW50LnZhbHVlPW8ody5sYXRlc3RTZWxlY3RlZERhdGVPYmo\/dy5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0SG91cnMoKTp3LmNvbmZpZy50aW1lXzI0aHI\/ZS5ob3VyczpmdW5jdGlvbihlKXtzd2l0Y2goZSUyNCl7Y2FzZSAwOmNhc2UgMTI6cmV0dXJuIDEyO2RlZmF1bHQ6cmV0dXJuIGUlMTJ9fShlLmhvdXJzKSksdy5taW51dGVFbGVtZW50LnZhbHVlPW8ody5sYXRlc3RTZWxlY3RlZERhdGVPYmo\/dy5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0TWludXRlcygpOmUubWludXRlcyksdy5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLHcuY29uZmlnLmhvdXJJbmNyZW1lbnQudG9TdHJpbmcoKSksdy5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgic3RlcCIsdy5jb25maWcubWludXRlSW5jcmVtZW50LnRvU3RyaW5nKCkpLHcuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLHcuY29uZmlnLnRpbWVfMjRocj8iMCI6IjEiKSx3LmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4Iix3LmNvbmZpZy50aW1lXzI0aHI\/IjIzIjoiMTIiKSx3LmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwiMiIpLHcubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsIjAiKSx3Lm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCI1OSIpLHcubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heGxlbmd0aCIsIjIiKSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQobiksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHQpLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChhKSx3LmNvbmZpZy50aW1lXzI0aHImJncudGltZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ0aW1lMjRociIpO2lmKHcuY29uZmlnLmVuYWJsZVNlY29uZHMpe3cudGltZUNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoYXNTZWNvbmRzIik7dmFyIGk9bSgiZmxhdHBpY2tyLXNlY29uZCIpO3cuc2Vjb25kRWxlbWVudD1pLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLHcuc2Vjb25kRWxlbWVudC52YWx1ZT1vKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldFNlY29uZHMoKTplLnNlY29uZHMpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLHcubWludXRlRWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSksdy5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgibWluIiwiMCIpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsIjU5Iiksdy5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwiMiIpLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChzKCJzcGFuIiwiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yIiwiOiIpKSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQoaSl9dy5jb25maWcudGltZV8yNGhyfHwody5hbVBNPXMoInNwYW4iLCJmbGF0cGlja3ItYW0tcG0iLHcubDEwbi5hbVBNW3IoKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cuaG91ckVsZW1lbnQudmFsdWU6dy5jb25maWcuZGVmYXVsdEhvdXIpPjExKV0pLHcuYW1QTS50aXRsZT13LmwxMG4udG9nZ2xlVGl0bGUsdy5hbVBNLnRhYkluZGV4PS0xLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh3LmFtUE0pKTtyZXR1cm4gdy50aW1lQ29udGFpbmVyfSgpKTtkKHcuY2FsZW5kYXJDb250YWluZXIsInJhbmdlTW9kZSIsInJhbmdlIj09PXcuY29uZmlnLm1vZGUpLGQody5jYWxlbmRhckNvbnRhaW5lciwiYW5pbWF0ZSIsITA9PT13LmNvbmZpZy5hbmltYXRlKSxkKHcuY2FsZW5kYXJDb250YWluZXIsIm11bHRpTW9udGgiLHcuY29uZmlnLnNob3dNb250aHM+MSksdy5jYWxlbmRhckNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTt2YXIgaT12b2lkIDAhPT13LmNvbmZpZy5hcHBlbmRUbyYmdm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8ubm9kZVR5cGU7aWYoKHcuY29uZmlnLmlubGluZXx8dy5jb25maWcuc3RhdGljKSYmKHcuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCh3LmNvbmZpZy5pbmxpbmU\/ImlubGluZSI6InN0YXRpYyIpLHcuY29uZmlnLmlubGluZSYmKCFpJiZ3LmVsZW1lbnQucGFyZW50Tm9kZT93LmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUody5jYWxlbmRhckNvbnRhaW5lcix3Ll9pbnB1dC5uZXh0U2libGluZyk6dm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8mJncuY29uZmlnLmFwcGVuZFRvLmFwcGVuZENoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpKSx3LmNvbmZpZy5zdGF0aWMpKXt2YXIgbD1zKCJkaXYiLCJmbGF0cGlja3Itd3JhcHBlciIpO3cuZWxlbWVudC5wYXJlbnROb2RlJiZ3LmVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobCx3LmVsZW1lbnQpLGwuYXBwZW5kQ2hpbGQody5lbGVtZW50KSx3LmFsdElucHV0JiZsLmFwcGVuZENoaWxkKHcuYWx0SW5wdXQpLGwuYXBwZW5kQ2hpbGQody5jYWxlbmRhckNvbnRhaW5lcil9dy5jb25maWcuc3RhdGljfHx3LmNvbmZpZy5pbmxpbmV8fCh2b2lkIDAhPT13LmNvbmZpZy5hcHBlbmRUbz93LmNvbmZpZy5hcHBlbmRUbzp3aW5kb3cuZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQody5jYWxlbmRhckNvbnRhaW5lcil9KCksZnVuY3Rpb24oKXt3LmNvbmZpZy53cmFwJiZbIm9wZW4iLCJjbG9zZSIsInRvZ2dsZSIsImNsZWFyIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh3LmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtIitlKyJdIiksKGZ1bmN0aW9uKHQpe3JldHVybiBBKHQsImNsaWNrIix3W2VdKX0pKX0pKTtpZih3LmlzTW9iaWxlKXJldHVybiB2b2lkIGZ1bmN0aW9uKCl7dmFyIGU9dy5jb25maWcuZW5hYmxlVGltZT93LmNvbmZpZy5ub0NhbGVuZGFyPyJ0aW1lIjoiZGF0ZXRpbWUtbG9jYWwiOiJkYXRlIjt3Lm1vYmlsZUlucHV0PXMoImlucHV0Iix3LmlucHV0LmNsYXNzTmFtZSsiIGZsYXRwaWNrci1tb2JpbGUiKSx3Lm1vYmlsZUlucHV0LnRhYkluZGV4PTEsdy5tb2JpbGVJbnB1dC50eXBlPWUsdy5tb2JpbGVJbnB1dC5kaXNhYmxlZD13LmlucHV0LmRpc2FibGVkLHcubW9iaWxlSW5wdXQucmVxdWlyZWQ9dy5pbnB1dC5yZXF1aXJlZCx3Lm1vYmlsZUlucHV0LnBsYWNlaG9sZGVyPXcuaW5wdXQucGxhY2Vob2xkZXIsdy5tb2JpbGVGb3JtYXRTdHI9ImRhdGV0aW1lLWxvY2FsIj09PWU\/IlktbS1kXFxUSDppOlMiOiJkYXRlIj09PWU\/IlktbS1kIjoiSDppOlMiLHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg+MCYmKHcubW9iaWxlSW5wdXQuZGVmYXVsdFZhbHVlPXcubW9iaWxlSW5wdXQudmFsdWU9dy5mb3JtYXREYXRlKHcuc2VsZWN0ZWREYXRlc1swXSx3Lm1vYmlsZUZvcm1hdFN0cikpO3cuY29uZmlnLm1pbkRhdGUmJih3Lm1vYmlsZUlucHV0Lm1pbj13LmZvcm1hdERhdGUody5jb25maWcubWluRGF0ZSwiWS1tLWQiKSk7dy5jb25maWcubWF4RGF0ZSYmKHcubW9iaWxlSW5wdXQubWF4PXcuZm9ybWF0RGF0ZSh3LmNvbmZpZy5tYXhEYXRlLCJZLW0tZCIpKTt3LmlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpJiYody5tb2JpbGVJbnB1dC5zdGVwPVN0cmluZyh3LmlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpKSk7dy5pbnB1dC50eXBlPSJoaWRkZW4iLHZvaWQgMCE9PXcuYWx0SW5wdXQmJih3LmFsdElucHV0LnR5cGU9ImhpZGRlbiIpO3RyeXt3LmlucHV0LnBhcmVudE5vZGUmJncuaW5wdXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUody5tb2JpbGVJbnB1dCx3LmlucHV0Lm5leHRTaWJsaW5nKX1jYXRjaChlKXt9QSh3Lm1vYmlsZUlucHV0LCJjaGFuZ2UiLChmdW5jdGlvbihlKXt3LnNldERhdGUoZyhlKS52YWx1ZSwhMSx3Lm1vYmlsZUZvcm1hdFN0cikscGUoIm9uQ2hhbmdlIikscGUoIm9uQ2xvc2UiKX0pKX0oKTt2YXIgZT1sKGllLDUwKTt3Ll9kZWJvdW5jZWRDaGFuZ2U9bChOLDMwMCksdy5kYXlzQ29udGFpbmVyJiYhL2lQaG9uZXxpUGFkfGlQb2QvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiZBKHcuZGF5c0NvbnRhaW5lciwibW91c2VvdmVyIiwoZnVuY3Rpb24oZSl7InJhbmdlIj09PXcuY29uZmlnLm1vZGUmJmFlKGcoZSkpfSkpO0Eod2luZG93LmRvY3VtZW50LmJvZHksImtleWRvd24iLG5lKSx3LmNvbmZpZy5pbmxpbmV8fHcuY29uZmlnLnN0YXRpY3x8QSh3aW5kb3csInJlc2l6ZSIsZSk7dm9pZCAwIT09d2luZG93Lm9udG91Y2hzdGFydD9BKHdpbmRvdy5kb2N1bWVudCwidG91Y2hzdGFydCIsWik6QSh3aW5kb3cuZG9jdW1lbnQsIm1vdXNlZG93biIsWik7QSh3aW5kb3cuZG9jdW1lbnQsImZvY3VzIixaLHtjYXB0dXJlOiEwfSksITA9PT13LmNvbmZpZy5jbGlja09wZW5zJiYoQSh3Ll9pbnB1dCwiZm9jdXMiLHcub3BlbiksQSh3Ll9pbnB1dCwiY2xpY2siLHcub3BlbikpO3ZvaWQgMCE9PXcuZGF5c0NvbnRhaW5lciYmKEEody5tb250aE5hdiwiY2xpY2siLENlKSxBKHcubW9udGhOYXYsWyJrZXl1cCIsImluY3JlbWVudCJdLEYpLEEody5kYXlzQ29udGFpbmVyLCJjbGljayIsdWUpKTtpZih2b2lkIDAhPT13LnRpbWVDb250YWluZXImJnZvaWQgMCE9PXcubWludXRlRWxlbWVudCYmdm9pZCAwIT09dy5ob3VyRWxlbWVudCl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSkuc2VsZWN0KCl9O0Eody50aW1lQ29udGFpbmVyLFsiaW5jcmVtZW50Il0sSSksQSh3LnRpbWVDb250YWluZXIsImJsdXIiLEkse2NhcHR1cmU6ITB9KSxBKHcudGltZUNvbnRhaW5lciwiY2xpY2siLFkpLEEoW3cuaG91ckVsZW1lbnQsdy5taW51dGVFbGVtZW50XSxbImZvY3VzIiwiY2xpY2siXSx0KSx2b2lkIDAhPT13LnNlY29uZEVsZW1lbnQmJkEody5zZWNvbmRFbGVtZW50LCJmb2N1cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHcuc2Vjb25kRWxlbWVudCYmdy5zZWNvbmRFbGVtZW50LnNlbGVjdCgpfSkpLHZvaWQgMCE9PXcuYW1QTSYmQSh3LmFtUE0sImNsaWNrIiwoZnVuY3Rpb24oZSl7SShlKSxOKCl9KSl9dy5jb25maWcuYWxsb3dJbnB1dCYmQSh3Ll9pbnB1dCwiYmx1ciIsdGUpfSgpLCh3LnNlbGVjdGVkRGF0ZXMubGVuZ3RofHx3LmNvbmZpZy5ub0NhbGVuZGFyKSYmKHcuY29uZmlnLmVuYWJsZVRpbWUmJl8ody5jb25maWcubm9DYWxlbmRhcj93LmxhdGVzdFNlbGVjdGVkRGF0ZU9iajp2b2lkIDApLGJlKCExKSksaygpO3ZhciB0PS9eKCg\/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7IXcuaXNNb2JpbGUmJnQmJmNlKCkscGUoIm9uUmVhZHkiKX0oKSx3fWZ1bmN0aW9uIGsoZSx0KXtmb3IodmFyIG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fSkpLGE9W10saT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO3RyeXtpZihudWxsIT09by5nZXRBdHRyaWJ1dGUoImRhdGEtZnAtb21pdCIpKWNvbnRpbnVlO3ZvaWQgMCE9PW8uX2ZsYXRwaWNrciYmKG8uX2ZsYXRwaWNrci5kZXN0cm95KCksby5fZmxhdHBpY2tyPXZvaWQgMCksby5fZmxhdHBpY2tyPUUobyx0fHx7fSksYS5wdXNoKG8uX2ZsYXRwaWNrcil9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19cmV0dXJuIDE9PT1hLmxlbmd0aD9hWzBdOmF9InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MRWxlbWVudCYmInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ29sbGVjdGlvbiYmInVuZGVmaW5lZCIhPXR5cGVvZiBOb2RlTGlzdCYmKEhUTUxDb2xsZWN0aW9uLnByb3RvdHlwZS5mbGF0cGlja3I9Tm9kZUxpc3QucHJvdG90eXBlLmZsYXRwaWNrcj1mdW5jdGlvbihlKXtyZXR1cm4gayh0aGlzLGUpfSxIVE1MRWxlbWVudC5wcm90b3R5cGUuZmxhdHBpY2tyPWZ1bmN0aW9uKGUpe3JldHVybiBrKFt0aGlzXSxlKX0pO3ZhciBUPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2sod2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSksdCk6ZSBpbnN0YW5jZW9mIE5vZGU\/ayhbZV0sdCk6ayhlLHQpfTtyZXR1cm4gVC5kZWZhdWx0Q29uZmlnPXt9LFQubDEwbnM9e2VuOmUoe30saSksZGVmYXVsdDplKHt9LGkpfSxULmxvY2FsaXplPWZ1bmN0aW9uKHQpe1QubDEwbnMuZGVmYXVsdD1lKGUoe30sVC5sMTBucy5kZWZhdWx0KSx0KX0sVC5zZXREZWZhdWx0cz1mdW5jdGlvbih0KXtULmRlZmF1bHRDb25maWc9ZShlKHt9LFQuZGVmYXVsdENvbmZpZyksdCl9LFQucGFyc2VEYXRlPUMoe30pLFQuZm9ybWF0RGF0ZT1iKHt9KSxULmNvbXBhcmVEYXRlcz1NLCJ1bmRlZmluZWQiIT10eXBlb2YgalF1ZXJ5JiZ2b2lkIDAhPT1qUXVlcnkuZm4mJihqUXVlcnkuZm4uZmxhdHBpY2tyPWZ1bmN0aW9uKGUpe3JldHVybiBrKHRoaXMsZSl9KSxEYXRlLnByb3RvdHlwZS5mcF9pbmNyPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksdGhpcy5nZXRNb250aCgpLHRoaXMuZ2V0RGF0ZSgpKygic3RyaW5nIj09dHlwZW9mIGU\/cGFyc2VJbnQoZSwxMCk6ZSkpfSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5mbGF0cGlja3I9VCksVH0pKTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9mbGF0cGlja3IuZnIuanMgKiovCnZhciBfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA1OjE3IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzI6NDYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDIzLTAxLTEyIDExOjQxOjQ2IjsidXNlIHN0cmljdCI7X19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyMy0wMS0xMiAxMDo1MTozMCI7InVzZSBzdHJpY3QiO19fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjEtMTItMjEgMTM6MzA6NTIiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGIsYSl7Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPT10eXBlb2YgbW9kdWxlP2EoZXhwb3J0cyk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyJdLGEpOihiPSJ1bmRlZmluZWQiIT09dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczpifHxzZWxmLGEoYi5mcj17fSkpfSkodGhpcyxmdW5jdGlvbihiKXt2YXIgYT0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5mbGF0cGlja3I\/d2luZG93LmZsYXRwaWNrcjp7bDEwbnM6e319LGM9e2ZpcnN0RGF5T2ZXZWVrOjEsd2Vla2RheXM6e3Nob3J0aGFuZDoiZGltIGx1biBtYXIgbWVyIGpldSB2ZW4gc2FtIi5zcGxpdCgiICIpLGxvbmdoYW5kOiJkaW1hbmNoZSBsdW5kaSBtYXJkaSBtZXJjcmVkaSBqZXVkaSB2ZW5kcmVkaSBzYW1lZGkiLnNwbGl0KCIgIil9LG1vbnRoczp7c2hvcnRoYW5kOiJqYW52IGbDqXZyIG1hcnMgYXZyIG1haSBqdWluIGp1aWwgYW\/Du3Qgc2VwdCBvY3Qgbm92IGTDqWMiLnNwbGl0KCIgIiksCmxvbmdoYW5kOiJqYW52aWVyIGbDqXZyaWVyIG1hcnMgYXZyaWwgbWFpIGp1aW4ganVpbGxldCBhb8O7dCBzZXB0ZW1icmUgb2N0b2JyZSBub3ZlbWJyZSBkw6ljZW1icmUiLnNwbGl0KCIgIil9LG9yZGluYWw6ZnVuY3Rpb24oZCl7cmV0dXJuIDE8ZD8iIjoiZXIifSxyYW5nZVNlcGFyYXRvcjoiIGF1ICIsd2Vla0FiYnJldmlhdGlvbjoiU2VtIixzY3JvbGxUaXRsZToiRMOpZmlsZXIgcG91ciBhdWdtZW50ZXIgbGEgdmFsZXVyIix0b2dnbGVUaXRsZToiQ2xpcXVlciBwb3VyIGJhc2N1bGVyIix0aW1lXzI0aHI6ITB9O2EubDEwbnMuZnI9YzthPWEubDEwbnM7Yi5GcmVuY2g9YztiLmRlZmF1bHQ9YTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KTsKLyoqIC9tL2pzL2ZyLm5ld2NhcnMuaW5saW5lLmpzICoqLwp2YXIganNfZDJjX2dldF92YWw9KGpzX2QyY19nZXRfdmFsfHxmdW5jdGlvbihpZCl7dHJ5e3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWU7fWNhdGNoKGV4KXtpZihjb25zb2xlJiZjb25zb2xlLmxvZyljb25zb2xlLmxvZygiU3lzdGVtIGZhaWxlZCB3aGlsZSByZXRyaWV2aW5nIHJlcGxhY2VtZW50IHZhbHVlOiAiK2lkLGV4KTtyZXR1cm4nJzt9fSk7dmFyIGlkZW50XzIzYzNiMDI1NzQ2YjQ3MzgwOTYxMWYyMmFlNzM1NTY0O3RyeXsoZnVuY3Rpb24odyxkLHMsbCxpKXt3W2xdPXdbbF18fFtdO3dbbF0ucHVzaCh7J2d0bS5zdGFydCc6bmV3IERhdGUoKS5nZXRUaW1lKCksZXZlbnQ6J2d0bS5qcyd9KTt2YXIgZj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHMpWzBdLGo9ZC5jcmVhdGVFbGVtZW50KHMpLGRsPWwhPSdkYXRhTGF5ZXInPycmbD0nK2w6Jyc7ai5hc3luYz10cnVlO2ouc3JjPSdodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM\/aWQ9JytpK2RsO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaixmKTt9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2RhdGFMYXllcicsJ0dUTS01ODNWUTNKTicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNDgwMDcwN2U3NjAyM2ZmMWViYjZmNGMxM2RhZTVmNDM7dHJ5eyhmdW5jdGlvbih3LGQscyxsLGkpe3dbbF09d1tsXXx8W107d1tsXS5wdXNoKHsnZ3RtLnN0YXJ0JzpuZXcgRGF0ZSgpLmdldFRpbWUoKSxldmVudDonZ3RtLmpzJ30pO3ZhciBmPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF0saj1kLmNyZWF0ZUVsZW1lbnQocyksZGw9bCE9J2RhdGFMYXllcic\/JyZsPScrbDonJztqLmFzeW5jPXRydWU7ai5zcmM9J2h0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD0nK2krZGw7Zi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqLGYpO30pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnZGF0YUxheWVyJywnR1RNLU5YM1BEUFNOJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8xN2E0ZThiMDU0NzhhNjE1MjFiMGY2MDI5MDA2MGQxMTt0cnl7RDJTRCh7ImxpYnJhcnlKUyI6IlwvXC90YWdnaW5nLnNoaWZ0ZGlnaXRhbGFwcHMuaW9cL3NjcmlwdHNcL0tJQUNBXC9zZC5qcyIsImNsaWVudElEIjoiS0lBQ0EiLCJwcm92aWRlcklEIjoiRDJDTWVkaWEiLCJyZXRhaWxlcklEIjoiNjExMzUifSx7Imxhbmd1YWdlIjoiZnIiLCJwYWdlVHlwZSI6IlNob3dyb29tIiwid2Vic2l0ZVRpZXIiOiJUaWVyIDMiLCJwYWdlQnJhbmQiOiJLaWEiLCJzaXRlVGVjaG5vbG9neVZlcnNpb24iOiI2OWUxYjBkZThlNDZmIiwiZGVhbGVyTmFtZSI6IlZpbGxlLU1hcmllIEtpYSIsImRlYWxlckNpdHkiOiJNb250cmVhbCIsImRlYWxlclN0YXRlIjoiUUMiLCJkZWFsZXJaaXBDb2RlIjoiSDFXIDFHMiIsIkdFTkVSQUxfRU5BQkxFX0NPT0tJRV9PTkVCQU5ORVJfU0NSSVBUIjpmYWxzZSwiR0VORVJBTF9FTkFCTEVfVFJBTlNBQ1RJT05fQlVJTERFUiI6ZmFsc2V9LHsiYW1wcG9wdXAiOjB9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzkyNmE0MWQ5ODEyMjI4MDM1ZjU1N2I4N2Y5NmZkYzliO3RyeXtEMkFTQyh7InVzZXJMYW5ndWFnZSI6ImZyZSIsInBhQ29kZSI6IjYxMTM1IiwiY2xpZW50Ijoia2lhIiwicGFnZUlkIjoic2hvd3Jvb20iLCJvZW1JbmZvIjp7Im9lbURlYWxlckNvZGUiOiI2MTEzNSIsIjAiOiI2MTEzNSIsIm9lbSI6IktpYSBTSElGVCIsIjEiOiJLaWEgU0hJRlQifSwiZGVhbGVyX25hbWUiOiIiLCJmb3JtTWFwIjp7IkFERkJ1cmxpbmd0b25fQ2VudHJlXy1fRVZfVG91cl8tX0RyaXZlZmUiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBCdXJsaW5ndG9uIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBCdXJsaW5ndG9uIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERmNhbXBiZWxscml2ZXJjYXJzLmNhXyhEMkNfTWVkaWEpXy1fTGUiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYW1wYmVsbHJpdmVyY2Fycy5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtHb29nbGUgLSBVc2VkICAgTG9jX3BoeXNpY2FsPTkwMDE2MTNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYW1wYmVsbHJpdmVyY2Fycy5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtHb29nbGUgLSBVc2VkICAgTG9jX3BoeXNpY2FsPTkwMDE2MTNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9BcHAiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQXBwb2ludG1lbnQgcmVxdWVzdCBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBBcHBvaW50bWVudCByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfQ2FyIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IENhckZheCByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IENhckZheCByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfT2ZmIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IE9mZmVyIG9uIGEgdmVoaWNsZSBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBPZmZlciBvbiBhIHZlaGljbGUgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9QREYiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogUERGIHJlcXVlc3QgLSBWZWhpY2xlIGluIGludmVudG9yeSBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBQREYgcmVxdWVzdCAtIFZlaGljbGUgaW4gaW52ZW50b3J5IFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfUmVxIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsdGlzdGVwKSBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bHRpc3RlcCkgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9TZXIiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogU2VydmljZSBhcHBvaW50bWVudCByZXF1ZXN0IFtGYWNlYm9vayAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogU2VydmljZSBhcHBvaW50bWVudCByZXF1ZXN0IFtGYWNlYm9vayAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9UcmEiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVHJhZGUtaW4gcmVxdWVzdCBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfVmVoIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWFfLV9PcmdhbmljKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW09yZ2FuaWNdIn0sIkFERmRhbmllbHBhcmVkb2RnZS5jb21fKHBhcl9EMkNfTWVkaWEpXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBkYW5pZWxwYXJlZG9kZ2UuY29tIChwYXIgRDJDIE1lZGlhKSAtIEQyQyBNZWRpYSAtIExlYWQgOiBWb2lyIGwnb2ZmcmUgY291cG9uIFNSUCBbR29vZ2xlIC0gTmV1Zi12bGFdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBkYW5pZWxwYXJlZG9kZ2UuY29tIChwYXIgRDJDIE1lZGlhKSAtIEQyQyBNZWRpYSAtIExlYWQgOiBWb2lyIGwnb2ZmcmUgY291cG9uIFNSUCBbR29vZ2xlIC0gTmV1Zi12bGFdIn0sIkFERmRlbW9jcm0uZDJjbWVkaWEuY2FfKEQyQ19NZWRpYV8tX09yZ2EiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBkZW1vY3JtLmQyY21lZGlhLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5IHZlaGljbGUpIFtPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gZGVtb2NybS5kMmNtZWRpYS5jYSAoRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSB2ZWhpY2xlKSBbT3JnYW5pY10ifSwiQURGTW9uX3NpdGVfLV9EMkNfTWVkaWFfLV9MZWFkXzpfRGVtYW5kZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIE1vbiBzaXRlIC0gRDJDIE1lZGlhIC0gTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnJkF0aWxkZTsmY29weTtjaGFuZ2UgKFNNUykgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBNb24gc2l0ZSAtIEQyQyBNZWRpYSAtIExlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJyZBdGlsZGU7JmNvcHk7Y2hhbmdlIChTTVMpIFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tXyhEMkNfTWVkaWEpXy1fIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDIE1lZGlhKSAtIExlYWQ6IENhckZheCByZXF1ZXN0IFtHb29nbGUgLSBVc2VkLXZsYSAgIExvY19waHlzaWNhbD05MDAxMTQxXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDIE1lZGlhKSAtIExlYWQ6IENhckZheCByZXF1ZXN0IFtHb29nbGUgLSBVc2VkLXZsYSAgIExvY19waHlzaWNhbD05MDAxMTQxXSJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tXyhEMkNfTWVkaWEpX18tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDIE1lZGlhKSAgLSBMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0IFtGYWNlYm9vayAtIFVzZWQgWyBLZXl3b3JkOiBVc2VkK1RydWNrXSAgTG9jXyIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDIE1lZGlhKSAgLSBMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0IFtGYWNlYm9vayAtIFVzZWQgWyBLZXl3b3JkOiBVc2VkK1RydWNrXSAgTG9jX3AifSwiQURGcGFsbGFkaW5vYXV0b2dyb3VwLmNvbV8oRDJDX19NZWRpYSlfLSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIHBhbGxhZGlub2F1dG9ncm91cC5jb20gKEQyQyAgTWVkaWEpIC0gTGVhZDogVHJhZGUtaW4gcmVxdWVzdCBbR29vZ2xlIC0gVHJhZGUgICBMb2NfcGh5c2ljYWw9OTAwMTExOF0iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIHBhbGxhZGlub2F1dG9ncm91cC5jb20gKEQyQyAgTWVkaWEpIC0gTGVhZDogVHJhZGUtaW4gcmVxdWVzdCBbR29vZ2xlIC0gVHJhZGUgICBMb2NfcGh5c2ljYWw9OTAwMTExOF0ifSwiQURGcGFsbGFkaW5vYXV0b2dyb3VwLmNvbV9fKEQyQ19NZWRpYSlfLSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIHBhbGxhZGlub2F1dG9ncm91cC5jb20gIChEMkMgTWVkaWEpIC0gTGVhZDogVHJhZGUtaW4gcmVxdWVzdCBbR29vZ2xlIC0gVHJhZGUgICBMb2NfcGh5c2ljYWw9OTAwMTEzM10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIHBhbGxhZGlub2F1dG9ncm91cC5jb20gIChEMkMgTWVkaWEpIC0gTGVhZDogVHJhZGUtaW4gcmVxdWVzdCBbR29vZ2xlIC0gVHJhZGUgICBMb2NfcGh5c2ljYWw9OTAwMTEzM10ifSwiQURGcGFsbGFkaW5vc3ViYXJ1LmNhXyhwYXJfRDJDX01lZGlhXy1fTyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIHBhbGxhZGlub3N1YmFydS5jYSAocGFyIEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gRDJDIE1lZGlhIC0gTGVhZDogUERGIGJyb2NodXJlIHJlcXVlc3QgW09yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9zdWJhcnUuY2EgKHBhciBEMkMgTWVkaWEgLSBPcmdhbmljKSAtIEQyQyBNZWRpYSAtIExlYWQ6IFBERiBicm9jaHVyZSByZXF1ZXN0IFtPcmdhbmljXSJ9LCJBREZTY2FyYm9yb3VnaF9Ub3duX0NlbnRyZV8tX0VWX1RvdXJfLV9EIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgU2NhcmJvcm91Z2ggVG93biBDZW50cmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU2NhcmJvcm91Z2ggVG93biBDZW50cmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciJ9LCJBREZTaGVyd2F5X0dhcmRlbnNfLV9FVl9Ub3VyXy1fRHJpdmVmZXN0Ijp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgU2hlcndheSBHYXJkZW5zIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIFNoZXJ3YXkgR2FyZGVucyAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlNxdWFyZV9PbmVfLV9FVl9Ub3VyXy1fRHJpdmVmZXN0XytfS2kiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTcXVhcmUgT25lIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIFNxdWFyZSBPbmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciJ9LCJBREZTcXVhcmVfT25lXy1fRVZfVG91cl8tX0tpYV9TaWduX1VwX0hvIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBLaWEgU2lnbiBVcCBIb3QgTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIFNxdWFyZSBPbmUgLSBFViBUb3VyIC0gS2lhIFNpZ24gVXAgSG90IExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlVwcGVyX0NhbmFkYV9NYWxsXy1fRVZfVG91cl8tX0RyaXZlZmUiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBVcHBlciBDYW5hZGEgTWFsbCAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBVcHBlciBDYW5hZGEgTWFsbCAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFJQ2hhdGJvdExlYWQiOnsiRlJFTkNIIjoiTGVhZCA6IENoYXRCb3QgSUEiLCJFTkdMSVNIIjoiTGVhZDogQ2hhdEJvdCBBSSJ9LCJBdmFpbGFiaWxpdHlVc2VkIjp7IkZSRU5DSCI6IkxlYWQ6IERpc3BvbmliaWxpdGUgZCd1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSJ9LCJCYW5uZXJGb3JtIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgZm9ybSBiYW5uZXIiLCJFTkdMSVNIIjoiTGVhZDogQmFubmVyIEZvcm0gUmVxdWVzdCJ9LCJCZXN0UHJpY2VSZXF1ZXN0TmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlICBtZWlsbGV1ciBwcml4ICh2ZWhpY3VsZSBuZXVmKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIGJlc3QgcHJpY2UgKG5ldyB2ZWhpY2xlKSJ9LCJCb2R5U2hvcCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBlbiBjYXJvc3NlcmllIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgYm9keSBzaG9wIGFwcG9pbnRtZW50IHJlcXVlc3QifSwiQnJvY2h1cmVzIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGJyb2NodXJlIiwiRU5HTElTSCI6IkxlYWQgOiBCcm9jaHVyZSByZXF1ZXN0In0sIkJyb2NodXJlc1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgYnJvY2h1cmUiLCJFTkdMSVNIIjoiTGVhZCA6IEJyb2NodXJlIHJlcXVlc3QifSwiQnVpbGRBbmRQcmljZV9TYXZlIjp7IkZSRU5DSCI6IkxlYWQ6IENvbmZpZ3VyYXRpb24gZCd1biB2ZWhpY3VsZSBuZXVmIiwiRU5HTElTSCI6IkxlYWQ6IE5ldyBWZWhpY2xlIENvbmZpZ3VyYXRpb24gKEJ1aWxkICYgUHJpY2UpIn0sIkJ1aWxkQW5kUHJpY2VfU3RvY2siOnsiRlJFTkNIIjoiTGVhZDogRGlzcG9uaWJpbGl0ZSBkJ3VuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5In0sIkNhcnByb29mTWFpbCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBDYXJGYXgiLCJFTkdMSVNIIjoiTGVhZDogQ2FyRmF4IHJlcXVlc3QifSwiQ29udGFjdFJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0In0sIkNvbnRhY3RVc1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0In0sIkNvbnRhY3RWaXNpdFJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCBWZW50ZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0IFNhbGVzIn0sIkNvbnRhY3RWaXNpdFJlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCBWZW50ZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0IFNhbGVzIn0sIkNyZWRpdEJvb3N0TXVsdGkiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBwcmVxdWFsaWZpY2F0aW9uIGRlIGNyZWRpdCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBDcmVkaXQgUHJlLVF1YWxpZmljYXRpb24ifSwiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAoUGx1c2lldXJzIGV0YXBlcykiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWx0aXN0ZXApIn0sIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QybmRDaGFuY2UiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQgKFBsdXNpZXVycyBldGFwZXMgMmUgY2hhbmNlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bGlzdGVwIDJuZCBjaGFuY2UpIn0sIkNyZWRpdE11bHRpc3RlcFJlcXVlc3RJbnN0YW50Ijp7IkZSRU5DSCI6IkxlYWQ6IEFwcHJvYmF0aW9uIGRlIGNyZWRpdCBpbnN0YW50YW5lZSIsIkVOR0xJU0giOiJMZWFkOiBJbnN0YW50IENyZWRpdCBBcHByb3ZhbCJ9LCJDcmVkaXRSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyJ9LCJDcmVkaXRSZXF1ZXN0TW9iaWxlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyJ9LCJDcmVkaXRSZXF1ZXN0TW9iaWxlRnVsbCI6eyJGUkVOQ0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmciLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIn0sIkNyZWRpdFJlcXVlc3RfU2hvcnQiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQgKHZlcnNpb24gY291cnRlKSIsIkVOR0xJU0giOiJMZWFkIDogQ3JlZGl0IGFwcGxpY2F0aW9uIChzaG9ydCB2ZXJzaW9uKSJ9LCJEZWFsZXJBcHBvaW50bWVudCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyIsIkVOR0xJU0giOiJMZWFkOiBBcHBvaW50bWVudCByZXF1ZXN0In0sIkRpc2NvdmVyT2ZmZXIiOnsiRlJFTkNIIjoiTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIiwiRU5HTElTSCI6IkxlYWQ6IFNlZSBPZmZlciBDb3Vwb24gaW4gU1JQIn0sIkVzdGhldGljUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGEgbCdlc3RoZXRxdWUgZXQgbGF2ZS1hdXRvIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgZXN0aGV0aWMgYW5kIGNhciB3YXNoIGFwcG9pbnRtZW50IHJlcXVlc3QifSwiZmFjZWJvb2tDb25uZWN0Ijp7IkZSRU5DSCI6IkxlYWQ6IFJhYmFpcyBGYWNlYm9vayIsIkVOR0xJU0giOiJMZWFkOiBGYWNlYm9vayBSZWJhdGUifSwiRmluZFZlaGljbGUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVjaGVyY2hlIGRlIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgdG8gZmluZCBhIHByZS1vd25lZCB2ZWhpY2xlIn0sImhlYWRlclNlcnZpY2UiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgYXUgc2VydmljZSBFeHByZXNzIiwiRU5HTElTSCI6IkxlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCBFeHByZXNzIn0sIk1ha2VPZmZlciI6eyJGUkVOQ0giOiJMZWFkIDogT2ZmcmUgZCdhY2hhdCBzdXIgdW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIn0sIk1ha2VPZmZlck5ldyI6eyJGUkVOQ0giOiJMZWFkIDogT2ZmcmUgZCdhY2hhdCBzdXIgdW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIn0sIm1lbnVTZXJ2aWNlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGF1IHNlcnZpY2UgRXhwcmVzcyIsIkVOR0xJU0giOiJMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgRXhwcmVzcyJ9LCJNb250aGx5UGF5bWVudHMiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIn0sIk1vbnRobHlQYXltZW50c19ORVciOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIn0sIk1vbnRobHlQYXltZW50c19TTVMiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyAtIFNNUyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIC0gU01TIn0sIk1vbnRobHlQYXltZW50c19TTVNfTkVXIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgbWVuc3VhbGl0ZXMgLSBTTVMiLCJFTkdMSVNIIjoiUmVxdWVzdCBmb3IgbW9udGhseSBwYXltZW50cyAtIFNNUyJ9LCJQYXJ0c1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29tbWFuZGUgcGkmZWdyYXZlO2NlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIHZlaGljbGUgcGFydHMifSwiUGhvdG9SZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgcGhvdG9zIiwiRU5HTElTSCI6IkxlYWQ6IFBob3RvIHJlcXVlc3QifSwiUG9wVXBJbnN0YW50UmViYXRlIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgUmFiYWlzIEluc3RhbnRhbmUiLCJFTkdMSVNIIjoiTGVhZDogSW5zdGFudCBSZWJhdGUgcmVxdWVzdCJ9LCJQb3BVcEluc3RhbnRSZWJhdGUzIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgUmFiYWlzIEluc3RhbnRhbmUiLCJFTkdMSVNIIjoiTGVhZDogSW5zdGFudCBSZWJhdGUgcmVxdWVzdCJ9LCJQb3BVcEluc3RhbnRSZWJhdGVBQSI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIFJhYmFpcyBJbnN0YW50YW5lIiwiRU5HTElTSCI6IkxlYWQ6IEluc3RhbnQgUmViYXRlIHJlcXVlc3QifSwiUHJpY2VSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHByaXgiLCJFTkdMSVNIIjoiTGVhZDogUHJpY2UgcmVxdWVzdCJ9LCJQcmljZVJlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcHJpeCIsIkVOR0xJU0giOiJMZWFkOiBQcmljZSByZXF1ZXN0In0sIlByaWNlVmVoaWNsZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCdlY2hhbmdlIiwiRU5HTElTSCI6IkxlYWQ6IFRyYWRlLWluIHJlcXVlc3QifSwiUHJpY2VWZWhpY2xlQWNjdXRyYWRlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiLCJFTkdMSVNIIjoiTGVhZCA6IFRyYWRlLWluIHJlcXVlc3QifSwiUHJpY2VWZWhpY2xlTmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiLCJFTkdMSVNIIjoiTGVhZDogVHJhZGUtaW4gcmVxdWVzdCJ9LCJRdWlja0VtYWlsIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIEV4cHJlc3MiLCJFTkdMSVNIIjoiTGVhZDogRXhwcmVzcyByZXF1ZXN0In0sIlF1aWNrRW1haWxOZXdJbnZlbnRvcnkiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgRXhwcmVzcyAoaW52ZW50YWlyZSBuZXVmKSIsIkVOR0xJU0giOiJMZWFkOiBFeHByZXNzIHJlcXVlc3QgKG5ldyBpbnZlbnRvcnkpIn0sIlJlYmF0ZUNvdXBvbiI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzICh2ZWhpY3VsZSBlbiBpbnZlbnRhaXJlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSB2ZWhpY2xlKSJ9LCJSZWJhdGVDb3Vwb25JbnZlbnRvcnkiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoaW52ZW50YWlyZSkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkpIn0sIlJlYmF0ZUNvdXBvbk5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiJ9LCJSZWJhdGVDb3Vwb25OZXdCTlAiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoY29uZmlndXJhdGV1cikiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChjb25maWd1cmF0b3IpIn0sIlJlYmF0ZUNvdXBvbk5ld0ludmVudG9yeSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChpbnZlbnRhaXJlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSkifSwiUmViYXRlQ291cG9uTmV3U2xpZGVyIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGNhcm91c2VsKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKHNsaWRlcikifSwiUmViYXRlQ291cG9uUHJvbW8iOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChib3V0b24gJ1Byb21vdGlvbnMnKSIsIkVOR0xJU0giOiJMZWFkOiBSZWJhdGUgQ291cG9uIHJlcXVlc3QgKCdQcm9tb3Rpb25zJyBidXR0b24pIn0sIlJlYmF0ZUNvdXBvblNsaWRlciI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChjYXJvdXNlbCkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChzbGlkZXIpIn0sIlJlYmF0ZUNvdXBvblVzZWRTbGlkZXIiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoY2Fyb3VzZWwpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoc2xpZGVyKSJ9LCJSZWNhbGxzIjp7IkZSRU5DSCI6IkRlbWFuZGUgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIHJhcHBlbHMiLCJFTkdMSVNIIjoiUmVjYWxsIGluZm9ybWF0aW9uIHJlcXVlc3QifSwiUmVzZXJ2ZUl0Tm93Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIHBvdXIgcmVzZXJ2ZXIgdW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgdG8gcHJlLW9yZGVyIGEgdmVoaWNsZSJ9LCJSZXNlcnZlSXROb3dOZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgcG91ciByZXNlcnZlciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCB0byBwcmUtb3JkZXIgYSB2ZWhpY2xlIn0sIlNlbGxDYXIiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgVmVuZGV6IFZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IHRvIGJ1eSB5b3VyIGNhciJ9LCJTZWxsQ2FyX1Nob3J0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIFZlbmRlei1ub3VzIHZvdHJlIHZlaGljdWxlICh2ZXJzaW9uIGNvdXJ0ZSkiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgdG8gYnV5IHlvdXIgY2FyIChTaG9ydCB2ZXJzaW9uKSJ9LCJTZXJ2aWNlUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBhdSBzZXJ2aWNlIiwiRU5HTElTSCI6IkxlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCJ9LCJTTVNMZWFkIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgU01TIChUZXh0bykiLCJFTkdMSVNIIjoiTGVhZDogU01TIHJlcXVlc3QifSwiU01TTGVhZF9vbGQiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgU01TIChUZXh0bykiLCJFTkdMSVNIIjoiTGVhZCA6IFNNUyByZXF1ZXN0In0sIlNwZWNzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIGZpY2hlIFBERiAtIFZlaGljdWxlIGVuIGludmVudGFpcmUiLCJFTkdMSVNIIjoiTGVhZDogUERGIHJlcXVlc3QgLSBWZWhpY2xlIGluIGludmVudG9yeSJ9LCJTcGVjc1JlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBicm9jaHVyZSBQREYiLCJFTkdMSVNIIjoiTGVhZDogUERGIGJyb2NodXJlIHJlcXVlc3QifSwiU1JQQ29udGFjdFVzIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvbnRhY3QgU1JQIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IGZvciBjb250YWN0IFNSUCJ9LCJUZXN0RHJpdmUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZCdlc3NhaSByb3V0aWVyIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgdGVzdCBkcml2ZSJ9LCJUZXN0RHJpdmVOZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZCdlc3NhaSByb3V0aWVyIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgdGVzdCBkcml2ZSJ9LCJUaXJlc1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcG5ldXMiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgdGlyZXMifSwiUHJvbW9NYWlsIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGQnaW52aXRhdGlvbiBhIGxhIHZlbnRlIHByaXZlZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBpbnZpdGF0aW9uIHRvIHByaXZhdGUgc2FsZSJ9LCJTbGlkZVdpZGdldEZvcm0iOnsiRlJFTkNIIjoiVUlURVhUIiwiRU5HTElTSCI6IlVJVEVYVCJ9LCJDb21wYXJlRm9ybSI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn0sIlNlYXJjaEZpbHRlcnMiOnsiRlJFTkNIIjoiVUlURVhUIiwiRU5HTElTSCI6IlVJVEVYVCJ9LCJoZWFkZXJHbG9iYWxTZWFyY2giOnsiRlJFTkNIIjoiVUlURVhUIiwiRU5HTElTSCI6IlVJVEVYVCJ9fSwic3ViX2dhNCI6IlkifSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF85ZmY1MTg5ODExYTk3NmQyMzgzYmI1NDQxN2ZhMGRlMjt0cnl7KGZ1bmN0aW9uKHcsZCx0LHIsdSl7dmFyIGYsbixpO3dbdV09d1t1XXx8W10sZj1mdW5jdGlvbigpe3ZhciBvPXt0aToiNTA3OTM5MSIsZW5hYmxlQXV0b1NwYVRyYWNraW5nOnRydWV9O28ucT13W3VdLHdbdV09bmV3IFVFVChvKSx3W3VdLnB1c2goInBhZ2VMb2FkIil9LG49ZC5jcmVhdGVFbGVtZW50KHQpLG4uc3JjPXIsbi5hc3luYz0xLG4ub25sb2FkPW4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5yZWFkeVN0YXRlO3MmJnMhPT0ibG9hZGVkIiYmcyE9PSJjb21wbGV0ZSJ8fChmKCksbi5vbmxvYWQ9bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LGk9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KVswXSxpLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG4saSl9KSh3aW5kb3csZG9jdW1lbnQsInNjcmlwdCIsIi8vYmF0LmJpbmcuY29tL2JhdC5qcyIsInVldHEiKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzE1ZGJlMWVjNGJiODE5ZjNiZTlhZjBiYjkxNzMxZDlmO3RyeXt2YXIgZGVwbG95bWVudFR5cGU9JycranNfZDJjX2dldF92YWwoIjJlamhiYzB5eW9nMHd3dyIpKycnO2lmKGRlcGxveW1lbnRUeXBlPT0nbGl2ZScpe2dhVHJhY2soJ190cmFja0V2ZW50JywnUGFnZXMgdnVlcycsJ1NlY3Rpb24tTmV1Zi1Nb2JpbGUnLCcnLDEpO2dhVHJhY2soJ2MuX3RyYWNrRXZlbnQnLCdNb2JpbGUgcGFnZXZpZXdzJywnU3RhbmRhcmQgTW9iaWxlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwnMScpO31lbHNlIGlmKGRlcGxveW1lbnRUeXBlPT0nc3RhZ2luZycpe2dhVHJhY2soJ2IuX3RyYWNrRXZlbnQnLCdNb2JpbGUgcGFnZXZpZXdzJywnU3RhbmRhcmQgTW9iaWxlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwnMScpO319Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzA1NTg1YTYyYzQxMWZkYmJiNjg4MmFkZDBiNTNlZTI0O3RyeXtmdW5jdGlvbiBzaG93UGhvbmVQb3B1cCgpe2dhVHJhY2soJ190cmFja0V2ZW50JywnVGVsZXBob25lcycsJ1NpdGUtTW9iaWxlJywnJywxKTt2YXIgaHRtbD1QaG9uZXNUb1JlcGxhY2UucmVwbGFjZShhdG9iKCJQR1JwZGlCamJHRnpjejBuYldWdWRTYytQSFZzSUdOc1lYTnpQU0p6ZEdGamF5MXNZeUkrUEd4cFBnb0pQR0VnSUdoeVpXWTlJblJsYkRwN0pGQklUMDVGZlNJZ2RHRnlaMlYwUFNKZmMyVnNaaUlnYzNSNWJHVTlJbVp2Ym5RdGMybDZaVG9nTWpKd2VEc2lJR1JoZEdFdFpHVndZWEowYldWdWREMGliM1JvWlhJaVBnb0pDVHhwSUdOc1lYTnpQU0ptWVNCbVlTMXdhRzl1WlNJZ2MzUjViR1U5SW0xaGNtZHBiam9nTTNCNElERXdjSGdnTUNBeE5YQjRPeUkrUEM5cFBnb0pDVlpsYm5SbGN3b0pQQzloUGdvSkNqd3ZiR2srUEM5MWJENDhMMlJwZGo0PSIpKTtpZigkKGh0bWwpLmZpbmQoJ2EnKS5sZW5ndGg9PTEpeyQoJyNwaG9uZU51bWJlckRpdicpLmh0bWwoaHRtbCkuZmluZCgnYScpWzBdLmNsaWNrKCk7cmV0dXJuO30KJCgnI3Bob25lTnVtYmVyRGl2JykuaHRtbChodG1sKS5yZXZlYWwoe2FuaW1hdGlvbjonZmFkZUFuZFBvcCcsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6dHJ1ZSxkaXNtaXNzbW9kYWxjbGFzczonY2xvc2UtcmV2ZWFsLW1vZGFsJ30pO30KZnVuY3Rpb24gY2hlY2tBdXRoKCl7Z2FwaS5hdXRoLmF1dGhvcml6ZSh7Y2xpZW50X2lkOmdhcGljbGllbnRJZCxzY29wZTpnYXBpc2NvcGVzLGltbWVkaWF0ZTpmYWxzZX0saGFuZGxlQXV0aFJlc3VsdCk7fQpmdW5jdGlvbiBoYW5kbGVBdXRoUmVzdWx0KGF1dGhSZXN1bHQpe2lmKGF1dGhSZXN1bHQmJiFhdXRoUmVzdWx0LmVycm9yKXtvcGVuR29vZ2xlTWFwKHRydWUpO31lbHNle29wZW5Hb29nbGVNYXAoZmFsc2UpO319CmZ1bmN0aW9uIG9wZW5Hb29nbGVNYXAoKXt2YXIgbWFwVG9Vc2U9IiIranNfZDJjX2dldF92YWwoIjE0MDRyYTA0Yndya280d2ciKSsiIjt2YXIgdXJsPSJodHRwOi8vbWFwcy4iK21hcFRvVXNlKyIuY29tLz9xPTMwMTAlMkMrcnVlK0hvY2hlbGFnYSUyQytNb250ciUzRmFsJTJDK1F1JTNGYmVjJTJDK0gxVysxRzImej0xMyI7d2luZG93Lm9wZW4odXJsKTt9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF84ZGE4MjQ4NWYzZDNlYjg5OGRlOTI5Yzg3NzMwMzIwYTt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7Im9uQmVmb3JlT3BlbiI6ZnVuY3Rpb24oKXskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0JykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0Jykuc2hvdygpO3RyYWRlaW5wb3B1cGQyYy5pbml0VHJhZGVJblN0ZXAxKCk7JCgnaW5wdXRbbmFtZT1zdGVwM2RvbmVdJykudmFsKDApO3RyYWRlaW5wb3B1cGQyYy5vbkJlZm9yZU9wZW4oKTt9LCJvbkJlZm9yZXN1Ym1pdCI6ZnVuY3Rpb24ocG9wdXApe3JldHVybiB0cmFkZWlucG9wdXBkMmMub25CZWZvcmVTdWJtaXQocG9wdXApO30sIm9uQWZ0ZXJzdWJtaXQiOmZ1bmN0aW9uKHBvcHVwKXt0cmFkZWlucG9wdXBkMmMub25BZnRlclN1Ym1pdChwb3B1cCk7Q29va2llcy5zZXQoJ3BvcHVwRm9ybUZpbGxlZCcsbnVsbCxudWxsLCcvJyk7Q29va2llcy5zZXQoJ3RyYWRlSW5Qb3B1cFNob3duJyxudWxsLG51bGwsJy8nKTtpZigkKCcjdHJhZGVJbkJhcicpLmxlbmd0aCl7JCgnI3RyYWRlSW5CYXInKS5oaWRlKCk7fQppZigkKCcjdHJhZGVpbkJhckZsb2F0JykubGVuZ3RoKXskKCcjdHJhZGVpbkJhckZsb2F0JykuaGlkZSgpO319LCJvbkJlZm9yZVZhbGlkYXRpb24iOmZ1bmN0aW9uKHBvcHVwKXtyZXR1cm4gdHJhZGVpbnBvcHVwZDJjLm9uQmVmb3JlVmFsaWRhdGlvbihwb3B1cCk7fSwib25CZWZvcmVDbG9zZSI6ZnVuY3Rpb24ocG9wdXApe0Nvb2tpZXMuZ2V0KCd0cmFkZUluUG9wdXBTaG93bicsbnVsbCxudWxsLCcvJyk7JCgnI2xlYWRTZW50JykucmVtb3ZlKCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwJykuaGlkZSgpO30sIm9uQmVmb3JlSW5pdGlhbGl6ZSI6ZnVuY3Rpb24ocG9wdXApe3BvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvPXBvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvO3BvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGPXBvcHVwLnNldHRpbmdzLmZvcm0uc2VuZFRvQURGO30sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXt0cmFkZUluQmFySW5pdGlhbGl6ZSgpO3RyYWRlaW5wb3B1cGQyYy5pbml0KCk7d2luZG93LmxhdW5jaFRyYWRlSW5Qb3B1cD1mdW5jdGlvbihzb3VyY2Upe3ZhciBwPSQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7cG9wdXBFdmVudFNvdXJjZTpzb3VyY2V9KTtpZihzb3VyY2UhPSJhdXRvbWF0aWMiKXtwLnNldFRyaWdnZXIoImNsaWNrIik7fQpwLm9wZW4oKTtyZXR1cm4gZmFsc2U7fQppZih0eXBlb2YgcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUhPSJ1bmRlZmluZWQiKXt2YXIgcG9wdXBUeXBlPSJ1c2VkIjt2YXIgY3VycmVudFBhZ2U9IiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIjt2YXIgdG1wPXBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplKCJ1c2VkIiwiIitqc19kMmNfZ2V0X3ZhbCgiNmp5cDQ2NjR2Z3dzODB3IikrIiIsZmFsc2UsInRyYWRlSW5CYXJQb3B1cCIsIiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIiwiVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIixmYWxzZSk7cmV0dXJuIHRtcDt9fSwib25CZWZvcmVTZW5kTWFpbCI6ZnVuY3Rpb24ocG9wdXApe2lmKCcnPT0nJyl7aWYoZW1haWxIYW5kbGVyLmdldERlcCgpPT0nTkVXJyl7ZW1haWxIYW5kbGVyLnNlbmRUbz0nN2I1MzMzOGY5YWMyYzg2YjlhZDBkNDYwMDNjZWVjNWJ8MzY3ODUyNzU1NCc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD0nMTMxZDE5YThiMTY1NzRkMGM5NWY1YmI3MTczYmRjZWN8MzY3ODUyNzU1NCc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERj0nMTMxZDE5YThiMTY1NzRkMGM5NWY1YmI3MTczYmRjZWN8MzY3ODUyNzU1NCc7fWVsc2V7ZW1haWxIYW5kbGVyLnNlbmRUbz0nJytqc19kMmNfZ2V0X3ZhbCgiM3BtNnR2Z3FxZWd3NHciKSsnJztlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PScxMzFkMTlhOGIxNjU3NGQwYzk1ZjViYjcxNzNiZGNlY3wzNjc4NTI3NTU0JztlbWFpbEhhbmRsZXIuc2VuZFRvQURGPScxMzFkMTlhOGIxNjU3NGQwYzk1ZjViYjcxNzNiZGNlY3wzNjc4NTI3NTU0Jzt9fQppZihlbWFpbEhhbmRsZXIuZ2V0RGVwKCk9PSdORVcnKXtlbWFpbEhhbmRsZXIubWFpbElEPSdwcmljZXZlaGljbGVuZXcnO31lbHNle2VtYWlsSGFuZGxlci5tYWlsSUQ9J3ByaWNldmVoaWNsZSc7fX0sIm9uQWZ0ZXJDb25zZW50IjpmdW5jdGlvbihwb3B1cCl7JCgnI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCcpLnByb3AoJ2Rpc2FibGVkJyxmYWxzZSk7JCgnI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCcpLnNob3coKTt9LCJjb29raWVEdXJhdGlvbiI6NjAsImNvb2tpZU5hbWUiOiJ0cmFkZUluUG9wdXBTaG93biIsImNvb2tpZUNyZWF0ZSI6Im9uU3VibWl0IiwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJQcmljZVZlaGljbGVBY2N1dHJhZGUiLCJvZmZlcnR5cGUiOiJ0cmFkZUluQmFyUG9wdXAiLCJuYW1lIjpudWxsLCJzZW5kVG8iOiIiK2pzX2QyY19nZXRfdmFsKCIzcG02dHZncXFlZ3c0dyIpKyIiLCJzZW5kVG9BREYiOiJhZGZsZWFkc0BzdWl2aWNsaWVudC5jYSIsIk9LQnV0dG9uQ2xhc3MiOiJ0cmFkZUluQmFyUG9wdXBTdWJtaXQiLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6dHJ1ZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOmZhbHNlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOmZhbHNlLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsImNvdW50ZG93biI6MTc3NzAwMzIwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNjt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lcicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNGQyNWJhMDY0MTcxMzg3ODVhY2ZhNTAwNjViYmJhYTk7dHJ5e31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMTA2NjNiMGE4ZGMwNDVkMjJkZDQ1Y2Y4ZWY4N2Y5OTQ7dHJ5eyhmdW5jdGlvbigpe3ZhciBzY3JpcHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7c2NyaXB0LnNyYz0iaHR0cHM6Ly9jYW5hZGEuZGlnaXRhbC1pbnRlcnZpZXcuY29tL2ZyLWNhL2xhdW5jaGVyL2Y3NzU3ZmRmLTZjYWMtNGY3My05NDY5LWIzMzgyYTUxNjg4YiI7c3dpdGNoKCdhc3luYycpe2Nhc2UnZGVmZXInOnNjcmlwdC5kZWZlcj10cnVlO2JyZWFrO2Nhc2UnYXN5bmMnOnNjcmlwdC5hc3luYz10cnVlO2JyZWFrO2RlZmF1bHQ6c2NyaXB0LmFzeW5jPXRydWU7YnJlYWs7fQpzY3JpcHQub25sb2FkPWZ1bmN0aW9uKCl7dHJ5e0RpZ2l0YWxJbnRlcnZpZXcuTGF1bmNoZXIuZW5hYmxlTGF1bmNoUG9pbnRzKCk7fWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSk7fX07ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO30pKCk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF83MzM1YTJkNDJiYzg5ZjQxYWFiYzc4Yzk2OGNhYWM1NTt0cnl7dmFyIGVzZkRlbGF5PTEwO2Z1bmN0aW9uIGVzY2FwZUZyYW1lKCl7aWYoKGRvY3VtZW50LmxvY2F0aW9uKycnKS5pbmRleE9mKCduZnI9MScpPT0tMSlyZXR1cm47JCgnYScpLm5vdCgnW3RhcmdldF0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGVsPSQodGhpcyk7dmFyIHRhcmdldD1lbC5hdHRyKCd0YXJnZXQnKTt2YXIgaHJlZj1lbC5hdHRyKCdocmVmJyk7aWYodGFyZ2V0JiZ0YXJnZXQubGVuZ3RoPjApe3JldHVybjt9CmlmKCFocmVmKXJldHVybjt2YXIgcHJvdG9jb2w9aHJlZi5tYXRjaCgvXihbYS16MC05XSspOi8pO2lmKHByb3RvY29sIT1udWxsJiYhcHJvdG9jb2xbMV0ubWF0Y2goL15odHRwLykpe3JldHVybjt9CmlmKGhyZWZbMF09PT0nIycpe3JldHVybjt9CmVsLmF0dHIoJ3RhcmdldCcsJ190b3AnKTt9KTtzZXRUaW1lb3V0KGVzY2FwZUZyYW1lLDEwMCplc2ZEZWxheSsrKTt9CmpRdWVyeShlc2NhcGVGcmFtZSk7ZnVuY3Rpb24gdG9nZ2xlU3VibWVudXMob2JqKXskKG9iaikuY2xvc2VzdCgnbGknKS5maW5kKCcuc3VibWVudUl0ZW1Db250YWluZXIsIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyJykuZmlyc3QoKS5zbGlkZVRvZ2dsZSgnc2xvdycpO2lmKCQob2JqKS5oYXNDbGFzcygnbWVudUNvbGxwYXNlJykpeyQob2JqKS5yZW1vdmVDbGFzcygnbWVudUNvbGxwYXNlJyk7fWVsc2V7JChvYmopLmFkZENsYXNzKCdtZW51Q29sbHBhc2UnKTt9CnJldHVybiBmYWxzZTt9CmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lKXtuYW1lPW5hbWUucmVwbGFjZSgvW1xbXS8sIlxbIikucmVwbGFjZSgvW1xdXS8sIlxdIik7dmFyIHJlZ2V4PW5ldyBSZWdFeHAoIltcPyZdIituYW1lKyI9KFteJiNdKikiKSxyZXN1bHRzPXJlZ2V4LmV4ZWMobG9jYXRpb24uc2VhcmNoKTtyZXR1cm4gcmVzdWx0cz09bnVsbD8iIjpkZWNvZGVVUklDb21wb25lbnQocmVzdWx0c1sxXS5yZXBsYWNlKC9cKy9nLCIgIikpO30KdmFyIHV0bV9zb3VyY2U9Z2V0UGFyYW1ldGVyQnlOYW1lKCd1dG1fc291cmNlJyk7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoJy5ub3RDbGlja2FibGUnKS5vbignY2xpY2snLGZ1bmN0aW9uKGV2ZW50KXtldmVudC5wcmV2ZW50RGVmYXVsdCgpO3RvZ2dsZVN1Ym1lbnVzKCQoJy5tZW51RXhwYW5kJyx0aGlzKSk7cmV0dXJuIGZhbHNlO30pOyQoJy5tZW51RXhwYW5kJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTt0b2dnbGVTdWJtZW51cygkKCcubWVudUV4cGFuZCcsdGhpcy5jbG9zZXN0KCcubWVudS1pdGVtJykpKTtyZXR1cm4gZmFsc2U7fSk7aWYoJCgnLnVzZWRwaG9uZWZvcm1hdGVkJykubGVuZ3RoPjAmJiQoJyNhZ2VudHBob25lJykubGVuZ3RoPjAmJiQoJyNhZ2VudHBob25lJykudmFsKCkubGVuZ3RoPjUpeyQoJy51c2VkcGhvbmVmb3JtYXRlZCcpLmF0dHIoJ2hyZWYnLCd0ZWw6JyskKCcjYWdlbnRwaG9uZScpLnZhbCgpKTt9CnNldFRpbWVvdXQoZnVuY3Rpb24oKXskKHdpbmRvdykub24oJ29yaWVudGF0aW9uY2hhbmdlJyxmdW5jdGlvbihldmVudCl7aWYod2luZG93Lm9yaWVudGF0aW9uPT05MHx8d2luZG93Lm9yaWVudGF0aW9uPT0tOTB8fHdpbmRvdy5vcmllbnRhdGlvbj09MjcwKXskKCdtZXRhW25hbWU9InZpZXdwb3J0Il0nKS5hdHRyKCdjb250ZW50JywnaGVpZ2h0PWRldmljZS13aWR0aCx3aWR0aD1kZXZpY2UtaGVpZ2h0LGluaXRpYWwtc2NhbGU9MSxtYXhpbXVtLXNjYWxlPTMnKTskKHdpbmRvdykudHJpZ2dlcigncmVzaXplJyk7fWVsc2V7JCgnbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJykuYXR0cignY29udGVudCcsJ2hlaWdodD1kZXZpY2UtaGVpZ2h0LHdpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsbWF4aW11bS1zY2FsZT0zJyk7JCh3aW5kb3cpLnRyaWdnZXIoJ3Jlc2l6ZScpO319KS50cmlnZ2VyKCdvcmllbnRhdGlvbmNoYW5nZScpO2lmKHV0bV9zb3VyY2UhPSIiKXtDb29raWVzLnNldCgndXRtX2xhbmRpbmdfZm9vdGVyJyxudWxsLG51bGwsIi8iKTt9CmlmKENvb2tpZXMuZ2V0KCJ1dG1fbGFuZGluZ19mb290ZXIiKT09bnVsbCl7Q29va2llcy5zZXQoJ3V0bV9sYW5kaW5nX2Zvb3Rlcicsd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLG51bGwsIi8iKTt9fSk7fSwxMDAwMCk7ZnVuY3Rpb24gc2hvd05vcm1hbFNpdGUoKXt2YXIgZG9tYWluPSIiK2pzX2QyY19nZXRfdmFsKCJ1NnRocnc5b2xjZzh3OHciKSsiIjtDb29raWVzLnNldCgnVXNlRnVsbFNpdGUnLCcxJyxudWxsLCIvIixkb21haW4pO3dpbmRvdy5sb2NhdGlvbi5ocmVmPScnK2pzX2QyY19nZXRfdmFsKCJjb3U5aG00MjkxYzBrb2MiKSsnJzt9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8zYThlNzdlZDM0YmNkOWE4NTc4NTJkMjcwZmNmNjQ2ZDt0cnl7d2luZG93LkQyQ0ZiQ29uc2VudD13aW5kb3cuRDJDRmJDb25zZW50fHx7X3N0YXRlOm51bGwsX3F1ZXVlOltdLF9mbHVzaDpmdW5jdGlvbigpe3ZhciBxPXRoaXMuX3F1ZXVlO3RoaXMuX3F1ZXVlPVtdO3EuZm9yRWFjaChmdW5jdGlvbihjYil7dHJ5e2NiKCk7fWNhdGNoKGUpe319KTt9LGdyYW50OmZ1bmN0aW9uKCl7dGhpcy5fc3RhdGU9J2dyYW50JztpZih0eXBlb2YgZmJxIT09J3VuZGVmaW5lZCcpe2ZicSgnY29uc2VudCcsJ2dyYW50Jyk7dGhpcy5fZmx1c2goKTt9fSxyZXZva2U6ZnVuY3Rpb24oKXt0aGlzLl9zdGF0ZT0ncmV2b2tlJztpZih0eXBlb2YgZmJxIT09J3VuZGVmaW5lZCcpe2ZicSgnY29uc2VudCcsJ3Jldm9rZScpO319LG9uR3JhbnRlZDpmdW5jdGlvbihjYil7aWYodHlwZW9mIGNiIT09J2Z1bmN0aW9uJyl7cmV0dXJuO31pZih0aGlzLl9zdGF0ZT09PSdncmFudCcmJnR5cGVvZiBmYnEhPT0ndW5kZWZpbmVkJyl7dHJ5e2NiKCk7fWNhdGNoKGUpe319ZWxzZXt0aGlzLl9xdWV1ZS5wdXNoKGNiKTt9fSxzeW5jVG9GYnE6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdGF0ZSYmdHlwZW9mIGZicSE9PSd1bmRlZmluZWQnKXtmYnEoJ2NvbnNlbnQnLHRoaXMuX3N0YXRlKTtpZih0aGlzLl9zdGF0ZT09PSdncmFudCcpe3RoaXMuX2ZsdXNoKCk7fX19fTshZnVuY3Rpb24oZixiLGUsdixuLHQscyl7aWYoZi5mYnEpcmV0dXJuO249Zi5mYnE9ZnVuY3Rpb24oKXtuLmNhbGxNZXRob2Q\/bi5jYWxsTWV0aG9kLmFwcGx5KG4sYXJndW1lbnRzKTpuLnF1ZXVlLnB1c2goYXJndW1lbnRzKX07aWYoIWYuX2ZicSlmLl9mYnE9bjtuLnB1c2g9bjtuLmxvYWRlZD0hMDtuLnZlcnNpb249JzIuMCc7bi5xdWV1ZT1bXTt0PWIuY3JlYXRlRWxlbWVudChlKTt0LmFzeW5jPSEwO3Quc3JjPXY7cz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpWzBdO3MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxzKX0od2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczovL2Nvbm5lY3QuZmFjZWJvb2submV0L2VuX1VTL2ZiZXZlbnRzLmpzJyk7ZmJxKCdpbml0JywnMTM4NDI0ODU1NTI4OTQ4MCcpO3dpbmRvdy5EMkNGYkNvbnNlbnQuc3luY1RvRmJxKCk7d2luZG93LkQyQ0ZiQ29uc2VudC5vbkdyYW50ZWQoZnVuY3Rpb24oKXtmYnEoJ3RyYWNrJywiUGFnZVZpZXciKTt9KTt3aW5kb3cuRDJDRmJDb25zZW50Lm9uR3JhbnRlZChmdW5jdGlvbigpe2ZicSgndHJhY2snLCdWaWV3Q29udGVudCcpO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMzE0Y2FhNWJmNTkwOTJjNmY3Y2Y2YTJmYzcyZTk1MTM7dHJ5e2lmKHR5cGVvZiBwYWdlIT09J3VuZGVmaW5lZCcmJnBhZ2U9PSJORVdDQVJERVRBSUxTIil7JChkb2N1bWVudCkub24oJ2NsaWNrJywnYScsZnVuY3Rpb24oKXt2YXIgb2JqPSQodGhpcyk7dmFyIGhyZWY9b2JqLmF0dHIoJ2hyZWYnKTt2YXIgdGV4dD1vYmoudGV4dCgpO2lmKHRleHQubGVuZ3RoPjAmJm9iai5maW5kKCdpbWcnKS5sZW5ndGg9PTAmJnR5cGVvZiBocmVmIT0ndW5kZWZpbmVkJyl7dmFyIHRpdGxlPSQoJy5icmFuZGVtYWlsW25hbWU9ImJyYW5kIl0nKS52YWwoKSsnLScrJCgnLm1vZGVsZW1haWxbbmFtZT0ibW9kZWwiXScpLnZhbCgpKyctJyskKCcueWVhcmVtYWlsJykudmFsKCk7aWYoaHJlZiE9IiMiJiZocmVmIT0iIiYmaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0Iik8MCYmaHJlZi5pbmRleE9mKCd7Jyk8MCl7dGl0bGU9aHJlZjt9CmdhVHJhY2soJ190cmFja0V2ZW50JywnTmV3LVZEUC1PdXRib3VuZC1jbGlja3MnLG9iai50ZXh0KCksdGl0bGUpO319KX19Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzM2ZjVlNDYzM2U2YWI3MWNiYTFiODRiNjZiNjY5ZGQ3O3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2QyY0Zvb3RlckNvb2tpZURlbGV0ZSIpLnBvcHVwaXplKHsiY29va2llRHVyYXRpb24iOjMwLCJjb29raWVOYW1lIjpudWxsLCJjb29raWVDcmVhdGUiOm51bGwsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjpudWxsLCJvZmZlcnR5cGUiOm51bGwsIm5hbWUiOm51bGwsInNlbmRUbyI6bnVsbCwic2VuZFRvQURGIjpudWxsLCJPS0J1dHRvbkNsYXNzIjoic3VibWl0QnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOmZhbHNlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOm51bGwsImJvZHkiOm51bGx9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjpmYWxzZSwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzc3MDAzMjAwLCJjb25maXJtRm9ybSI6W3sibmFtZSI6ImxhYmVsIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsZW1haWwifSx7Im5hbWUiOiJzZWN0aW9uIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsc2VjdGlvbiJ9LHsibmFtZSI6ImJyYW5kIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiIsImNsYXNzIjoiYnJhbmRlbWFpbCJ9LHsibmFtZSI6Im1vZGVsIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIiwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiIsImNsYXNzIjoieWVhcmVtYWlsIn0seyJuYW1lIjoiZ29vZ2xlaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imdvb2dsZWlkZDJjbWVkaWEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdjb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2FjdGlvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nZG9tYWluaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbEFkdiIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsUGl4IiwidmFsdWUiOiIifSx7Im5hbWUiOiJmYWNlYm9va0NvbklkIiwidmFsdWUiOiIxMzg0MjQ4NTU1Mjg5NDgwIn0seyJuYW1lIjoiZG9tYWluIiwidmFsdWUiOiJ2aWxsZW1hcmlla2lhLmNvbSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIn0seyJuYW1lIjoiaXNleHByZXNzIiwidmFsdWUiOiIwIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIwIn0seyJuYW1lIjoiaXNob21lcGFnZSIsInZhbHVlIjoiMCJ9LHsibmFtZSI6InRleHRDYXJTZWN0aW9uVHlwZSIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrIiJ9LHsibmFtZSI6ImZyb21BQSIsInZhbHVlIjoiIn0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn1dfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8wMjcwNzdhZjg2NTU0ZGY5Y2UyY2U2MTI5ZTM1YjUxMDt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKCQoJyNnZW5lcmljX2Zvcm1fY29uZmlybScpLmxlbmd0aDwxKXt2YXIgRm9ybT0kKCc8Zm9ybSBpZD0iZ2VuZXJpY19mb3JtX2NvbmZpcm0iIHRhcmdldD0iaWZyYW1lZ3RyYWNrIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj48L2Zvcm0+Jyk7dmFyIG1ha2VWYWw9IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIjt2YXIgbW9kZWxWYWw9IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiO3ZhciB5ZWFyVmFsPSIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIjt2YXIgcmVmZXJhbFZhbD0iIitqc19kMmNfZ2V0X3ZhbCgiaTNnc2F4Z3M1ams4d2NrIikrIiI7dmFyIHNlY3Rpb25WYWw9JycranNfZDJjX2dldF92YWwoInNvN3l1cWFqNGR3Y2M4cyIpKycnO3ZhciBmcm9tQXV0b2F1YmFpbmU9JCgnI2F1dG9hdWJhaW5lX3BvcHVwJykubGVuZ3RoPjAmJigkKCcjYXV0b2F1YmFpbmVfcG9wdXAnKS52YWwoKSE9J2ZhbHNlJyk7dmFyIGlucHV0cz0oW3sibmFtZSI6ImxhYmVsIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsZW1haWwifSx7Im5hbWUiOiJzZWN0aW9uIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsc2VjdGlvbiJ9LHsibmFtZSI6ImJyYW5kIiwidmFsdWUiOm1ha2VWYWwsImNsYXNzIjoiYnJhbmRlbWFpbCJ9LHsibmFtZSI6Im1vZGVsIiwidmFsdWUiOm1vZGVsVmFsLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOnllYXJWYWwsImNsYXNzIjoieWVhcmVtYWlsIn0seyJuYW1lIjoiZ29vZ2xlaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imdvb2dsZWlkZDJjbWVkaWEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdjb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2FjdGlvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nZG9tYWluaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imd0YWdfY29udmVyc2lvbiIsInZhbHVlIjoiZ3RhZyJ9LHsibmFtZSI6ImFkcm9sbEFkdiIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsUGl4IiwidmFsdWUiOiIifSx7Im5hbWUiOiJmYWNlYm9va0NvbklkIiwidmFsdWUiOiIxMzg0MjQ4NTU1Mjg5NDgwIn0seyJuYW1lIjoibGVhZF9kZXBhcnRtZW50IiwidmFsdWUiOiIifSx7Im5hbWUiOiJsZWFkVHlwZSIsInZhbHVlIjoiIn0seyJuYW1lIjoicGFnZUlEIiwidmFsdWUiOiIifSx7Im5hbWUiOiJjdXJyZW50VVJMIiwidmFsdWUiOiIifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6InZpbGxlbWFyaWVraWEuY29tIn0seyJuYW1lIjoicmVmZXJyZXIiLCJ2YWx1ZSI6cmVmZXJhbFZhbH0seyJuYW1lIjoiaXNleHByZXNzIiwidmFsdWUiOiIiLCJjbGFzcyI6ImlzZXhwcmVzcyJ9LHsibmFtZSI6ImlzcHJvbW8iLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImlzaG9tZXBhZ2UiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6InRlc3Rtb2RlIiwidmFsdWUiOiIwIiwiY2xhc3MiOiJ0ZXN0bW9kZSJ9LHsibmFtZSI6InRleHRDYXJTZWN0aW9uVHlwZSIsInZhbHVlIjpzZWN0aW9uVmFsfSx7Im5hbWUiOiJsYW5nIiwidmFsdWUiOiJGUkVOQ0gifSx7Im5hbWUiOiJidXR0b25Qb3NpdGlvbiIsInZhbHVlIjoiIn0seyJuYW1lIjoiZGVhbGVyTmFtZSIsInZhbHVlIjoiIn0seyJuYW1lIjoiaXNGdWxsV2lkdGgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImlzTW9iaWxlTmV3VkRQIiwidmFsdWUiOiIifSx7Im5hbWUiOiJmcm9tQXV0b0F1YmFpbmUiLCJ2YWx1ZSI6MH1dKTtmb3IodmFyIGk9MDtpPGlucHV0cy5sZW5ndGg7aSsrKXskKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiAvPicpLmF0dHIoaW5wdXRzW2ldKS5hcHBlbmRUbyhGb3JtKTt9CkZvcm0uYXBwZW5kVG8oJ2JvZHknKTtGb3JtLm9uKCdzdWJtaXQnLG9uQ29uZmlybVN1Ym1pdCk7fQppZigkKCcjZ3RyYWNrRnJhbWUnKS5sZW5ndGg8MSl7JCgnPGlmcmFtZT48L2lmcmFtZT4nKS5hdHRyKHt3aWR0aDoxLGhlaWdodDoxLGZyYW1lQm9yZGVyOjAsaWQ6J2d0cmFja0ZyYW1lJyxuYW1lOidpZnJhbWVndHJhY2snLHN0eWxlOid3aWR0aDoxcHg7aGVpZ2h0OjFweDsnLHRpdGxlOidmcmFtZSd9KS5hcHBlbmRUbygnI2NvbmZpcm1fZm9ybXMnKTt9fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lZjY3NjlmOGY4YzdiM2MyODQ4NGUyYjMzMzI0Nzc0NDt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNtdWx0aWZvcm1Qb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25CZWZvcmVPcGVuIjpmdW5jdGlvbigpe3ZhciAkJD0kKHRoaXMpO2lmKCFDb29raWVzLmdldCgicG9wdXBQYWdlVmlld3MiKSl7Q29va2llcy5nZXQoInBvcHVwUGFnZVZpZXdzIiwiMCIsbnVsbCwiLyIpO30KJCgiI211bHRpZm9ybVBvcHVwQ29udGFpbmVyIikuY3NzKHtwYWRkaW5nOjAsYmFja2dyb3VuZDoiI2ZmZiJ9KTtpZihDb29raWVzLmdldCgibXVsdGlGb3JtUG9wdXBGaWxsZWQiKSl7JCgiLm11bHRpZm9ybV9ib2R5IiwkJCkuaHRtbCgkKCIubXVsdGlmb3JtX2ZpbGxlZCIsJCQpLmh0bWwoKSk7JCgiLm11bHRpZm9ybV9mb290ZXIiLCQkKS5oaWRlKCk7JCgiI211bHRpZm9ybV9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiMjQwcHgiKTskKCIjbXVsdGlmb3JtUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjI0MHB4Iik7fQokKGRvY3VtZW50KS5vbigicmV2ZWFsOm9wZW4iLCIjbXVsdGlmb3JtUG9wdXBDb250YWluZXIiLGZ1bmN0aW9uKCl7JCgibXVsdGlmb3JtUG9wdXBDb250YWluZXIgI211bHRpZm9ybV9wb3N0YWwiKS50cmlnZ2VyKCJmb2N1cyIpO30pO30sIm9uQmVmb3Jlc3VibWl0IjpmdW5jdGlvbihzZWxmKXt2YXIgJCQ9JCh0aGlzKTtDb29raWVzLnNldCgnbXVsdGlGb3JtUG9wdXBGaWxsZWQnLCcxJyxwYXJzZUludCgyMDI2LTA0LTE3KSwnLycpO2lmKCQoJyNtdWx0aWZvcm1fc21zJykudmFsKCkubGVuZ3RoPjMpeyQoJy5lbWFpbFN1YmplY3QnLCQkKS5odG1sKCQoJy5zbXNfZW1haWxTdWJqZWN0JywkJCkuaHRtbCgpKTskKCcuZW1haWxCb2R5JywkJCkuaHRtbCgkKCcuc21zX2VtYWlsQm9keScsJCQpLmh0bWwoKSk7c2VsZi5zZXR0aW5ncy5mb3JtLmVtYWlsaWQ9J011bHRpRm9ybV9TTVMnO3NlbGYuc2V0dGluZ3MuZ29vZ2xlVHJhY2tpbmcubGFiZWw9J01laWxsZXVyZSBvZmZyZSBTTVMgKE5ldWYpJztzZWxmLnNldHRpbmdzLmdvb2dsZVRyYWNraW5nLmxhYmVsc2VjdGlvbj0nTmV1Zic7fQplbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD1lbWFpbEhhbmRsZXIuZ2V0RGVwKCk7aWYoZW1haWxIYW5kbGVyLmRlcGFydG1lbnQhPSdORVcnfHxlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudCE9J1VTRUQnKXtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0nTkVXJzt9fSwib25CZWZvcmVWYWxpZGF0aW9uIjpmdW5jdGlvbigpeyQudmFsaWRpdHkuc3RhcnQoKTt2YXIgaXNTTVM9ZmFsc2U7aWYoJCgnI211bHRpZm9ybVBvcHVwQ29udGFpbmVyJykuZmluZCgnI211bHRpZm9ybV9zbXMnKS52YWwoKS5sZW5ndGg+M3x8JCgnI211bHRpZm9ybV9zbXMnKS5oYXNDbGFzcygncmVxdWlyZWQnKSl7aXNTTVM9dHJ1ZTskKCcjbXVsdGlmb3JtUG9wdXBDb250YWluZXInKS5maW5kKCcjbXVsdGlmb3JtX3NtcycpLnJlcXVpcmUoKS52YWxpZGF0ZVBob25lKCk7JCgnI211bHRpZm9ybVBvcHVwQ29udGFpbmVyJykuZmluZCgnI3VzZXJuYW1lJykucmVxdWlyZSgpO31lbHNleyQoJyNtdWx0aWZvcm1Qb3B1cENvbnRhaW5lcicpLmZpbmQoJyNtdWx0aWZvcm1fZW1haWwnKS5yZXF1aXJlKCkudmFsaWRFbWFpbEFkZHJlc3MoKTskKCcjbXVsdGlmb3JtUG9wdXBDb250YWluZXInKS5maW5kKCcjdXNlcm5hbWUnKS5yZXF1aXJlKCk7fQp2YXIgcmVzdWx0PSQudmFsaWRpdHkuZW5kKCk7cmV0dXJuIHJlc3VsdC52YWxpZDt9LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7bXVsdGlGb3JtUG9wdXBJbml0aWFsaXplKCJtdWx0aWZvcm1Qb3B1cENvbnRhaW5lciIpOyhuZXcgRm9ybSgpKS5tYXNrUG9zdGFsQ29kZSgibXVsdGlmb3JtUG9wdXBDb250YWluZXIgI211bHRpZm9ybV9wb3N0YWwiKTskKCJtdWx0aWZvcm1Qb3B1cENvbnRhaW5lciAjbXVsdGlmb3JtX2VtYWlsIikub24oImZvY3VzIixmdW5jdGlvbigpeyQoIltuYW1lPW11bHRpZm9ybV9vcl0iKS52YWwoWyJlbWFpbCJdKTt9KTskKCJtdWx0aWZvcm1Qb3B1cENvbnRhaW5lciAjbXVsdGlmb3JtX3NtcyIpLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXskKCJbbmFtZT1tdWx0aWZvcm1fb3JdIikudmFsKFsic21zIl0pO30pO3ZhciBwb3B1cFR5cGU9Im5ldyI7dmFyIGN1cnJlbnRQYWdlPSIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiI7aWYodHlwZW9mIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIT0idW5kZWZpbmVkIil7dmFyIHRtcD1wb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSgibmV3IiwiIitqc19kMmNfZ2V0X3ZhbCgiNmp5cDQ2NjR2Z3dzODB3IikrIiIsdHJ1ZSwiIiwiIitqc19kMmNfZ2V0X3ZhbCgiMTZkN3Z3dDY2cG1vd28wayIpKyIiLCJtdWx0aWZvcm1Qb3B1cENvbnRhaW5lciIsZmFsc2UpO3JldHVybiB0bXA7fX0sIm9uQmVmb3JlU2VuZE1haWwiOmZ1bmN0aW9uKHNlbGYpe2VtYWlsSGFuZGxlci5kZXBhcnRtZW50PWVtYWlsSGFuZGxlci5nZXREZXAoKTtpZihlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD09J1VTRUQnKXtlbWFpbEhhbmRsZXIuc3ViamVjdD1lbWFpbEhhbmRsZXIuc3ViamVjdC5yZXBsYWNlKCduZXcnLCd1c2VkJyk7ZW1haWxIYW5kbGVyLnN1YmplY3Q9ZW1haWxIYW5kbGVyLnN1YmplY3QucmVwbGFjZSgnbmV1ZicsJ29jY2FzaW9uJyk7fX0sImNvb2tpZUR1cmF0aW9uIjo2MCwiY29va2llTmFtZSI6Im11bHRpZm9ybVBvcHVwU2hvd24iLCJjb29raWVDcmVhdGUiOiJvbk9wZW4iLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiQmVzdCBvZmZlciAoTmV3KSIsImxhYmVsc2VjdGlvbiI6Ik5ldyIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJNdWx0aUZvcm0iLCJvZmZlcnR5cGUiOiJNdWx0aUZvcm1Qb3B1cCIsIm5hbWUiOiJtdWx0aWZvcm1fZm9ybSIsInNlbmRUbyI6IjdiNTMzMzhmOWFjMmM4NmI5YWQwZDQ2MDAzY2VlYzVifDM2Nzg1Mjc1NTQiLCJzZW5kVG9BREYiOiIxMzFkMTlhOGIxNjU3NGQwYzk1ZjViYjcxNzNiZGNlY3wzNjc4NTI3NTU0IiwiT0tCdXR0b25DbGFzcyI6Im11bHRpZm9ybV9idG5fMiIsIkNhbmNlbEJ1dHRvbkNsYXNzIjpudWxsLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6IlZvdHJlIGRlbWFuZGUgYSBiaWVuICZlYWN1dGU7dCZlYWN1dGU7IGVudm95JmVhY3V0ZTtlISIsImJvZHkiOiJWb3RyZSBkZW1hbmRlIGEgJmVhY3V0ZTt0JmVhY3V0ZTsgZW52b3kmZWFjdXRlO2UgYXZlYyBzdWNjJmVncmF2ZTtzLiBVbiByZXByJmVhY3V0ZTtzZW50YW50IHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS4ifX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoiTmV3IiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjoiNzUiLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6dHJ1ZSwic2hvd29ubG9hZCI6ZmFsc2UsImVycm9yTXNnIjoiQ2VydGFpbnMgY2hhbXBzIG9ibGlnYXRvaXJlcyBuJ29udCBwYXMgJmVhY3V0ZTt0JmVhY3V0ZTsgcmVtcGxpcyIsImNvdW50ZG93biI6MTc3NzAwMzIwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9iMTkyNWMyZDNkM2E4ZDM4ZjY0YzRmMDgyNDM4NDkxMzt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX211bHRpZm9ybVBvcHVwQ29udGFpbmVyJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9mMDY1MzQ1NTk4OWRjZmU5MzQxMzBkNjVmMmI3YzY4NTt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkFmdGVyc3VibWl0IjpmdW5jdGlvbihzZWxmKXtzZXRDb29raWUoJ2NyZWRpdFNjb3JlRW1iZWRkZWRGaWxsZWQnLDEsMzApO2lmKHR5cGVvZiBnVXNlZFNycEFwcHohPT0ndW5kZWZpbmVkJyl7Z1VzZWRTcnBBcHB6LmZpbHRlckludGVyZmFjZS5jbGVhclByb3h5Q2FjaGVBbmRSZUZldGNoKCk7fX0sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXsobmV3IEZvcm0oKSkubWFza1Bob25lKCIjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAjY3JlZGl0U2NvcmVQaG9uZSIpO3ZhciBsYW5nPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJlbiI6ImZyIjt2YXIgc3RhcnREYXRlPW5ldyBEYXRlKCk7c3RhcnREYXRlLnNldEZ1bGxZZWFyKHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLTMwKTt2YXIgbWF4RGF0ZT1uZXcgRGF0ZSgpO21heERhdGUuc2V0RnVsbFllYXIobWF4RGF0ZS5nZXRGdWxsWWVhcigpLTE4KTt2YXIgbWluRGF0ZT1uZXcgRGF0ZSgpO21pbkRhdGUuc2V0RnVsbFllYXIobWluRGF0ZS5nZXRGdWxsWWVhcigpLTEyMCk7JCgiLmNyZWRpdFNjb3JlQmlydGhkYXRlIikubmViQ2FsKHttYXhEYXRlOm1heERhdGUuZm9ybWF0KCJ5eXl5LU1NLWRkIiksbWluRGF0ZTptaW5EYXRlLmZvcm1hdCgieXl5eS1NTS1kZCIpLGRlZmF1bHREYXRlOnN0YXJ0RGF0ZS5mb3JtYXQoInl5eXktTU0tZGQiKSxmb3JtYXQ6ImRkIE1NTSB5eXl5IixkZWZhdWx0VmlldzoiZGVjYWRlIn0pOyQoJyNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXScpLmdvb2dsZVBsYWNlcygpO3ZhciBwb3B1cFR5cGU9Im5ldyI7aWYodHlwZW9mIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIT0idW5kZWZpbmVkIil7dmFyIHRtcD1wb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSgibmV3IiwiIitqc19kMmNfZ2V0X3ZhbCgiNmp5cDQ2NjR2Z3dzODB3IikrIiIsZmFsc2UsIiIsIiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIiwiY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIsZmFsc2UpO2lmKDAmJnRtcCl7c2VsZi5zZXR0aW5ncy5zaG93b25sb2FkPTEwO30KZWxzZXtzZWxmLnNldHRpbmdzLnNob3dvbmxvYWQ9ZmFsc2U7fQpyZXR1cm4gdG1wO319LCJjb29raWVEdXJhdGlvbiI6NjAsImNvb2tpZU5hbWUiOiJjcmVkaXRTY29yZVNob3duIiwiY29va2llQ3JlYXRlIjoib25PcGVuIiwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJDcmVkaXRTY29yZSIsIm9mZmVydHlwZSI6IkNyZWRpdFNjb3JlIiwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTNkcXRzbmNkODF3azg0NCIpKyIiLCJzZW5kVG9BREYiOiIiK2pzX2QyY19nZXRfdmFsKCI1Y2N5Z2s5MjVtZ3dnMCIpKyIiLCJPS0J1dHRvbkNsYXNzIjoiY3JlZGl0U2NvcmVfYnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6IlZvdHJlIGRlbWFuZGUgYSBiaWVuICZlYWN1dGU7dCZlYWN1dGU7IGVudm95JmVhY3V0ZTtlISIsImJvZHkiOiJNZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGQmZWFjdXRlO3RhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3ImZWFjdXRlO2RpdC4ifX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6MCwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzc3MDAzMjAwLCJjb25maXJtRm9ybSI6W119KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2Q2NmY1ZDk0ODU5NzQyYzZhNTFmOGJhZDljMGRmYWUwO3RyeXttYWlsU2VudEhhbmRsZXI9Z2V0TWFpbFNlbnRIYW5kbGVyKCdfY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lcicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfOTc4MDg2N2Q3Y2I0NGUxNmYxMDZiZDUzYWRhNWMxYTA7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoeyJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7Y29udGFjdFBvcHVwLnNldENvbmZpZyh7dHlwZTpzZWxmLnNldHRpbmdzLmZvcm0udHlwZX0pO2lmKHR5cGVvZiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSE9InVuZGVmaW5lZCIpe3ZhciB0bXA9cG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoIm5ldyIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLGZhbHNlLCIiLCIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiIsImNvbnRhY3Rwb3B1cCIsZmFsc2UpO2lmKGZhbHNlJiZ0bXApc2VsZi5zZXR0aW5ncy5zaG93b25sb2FkPTMwO3JldHVybiB0bXA7fX0sIm9uQmVmb3JlU2VuZE1haWwiOmZ1bmN0aW9uKHNlbGYpe2NvbnRhY3RQb3B1cC5vbkJlZm9yZVNlbmRNYWlsKCk7fSwiY29va2llRHVyYXRpb24iOjMwLCJjb29raWVOYW1lIjpudWxsLCJjb29raWVDcmVhdGUiOm51bGwsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiQ29udGFjdFVzUmVxdWVzdCIsInNlbmRUbyI6bnVsbCwic2VuZFRvQURGIjpudWxsLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6IlZvdHJlIG1lc3NhZ2UgYSBiaWVuICZlYWN1dGU7dCZlYWN1dGU7IGVudm95JmVhY3V0ZTshIiwiYm9keSI6Ik1lcmNpISBVbiBtZW1icmUgZGUgbm90cmUgJmVhY3V0ZTtxdWlwZSB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuIn0sInR5cGUiOiJuZXcifSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjowLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsImNvdW50ZG93biI6MTc3NzAwMzIwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8zZDc4NTQyNzQxMjVlYTY5YjAyNDU3NTY0NmE2OThkYzt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX2NvbnRhY3Rwb3B1cCcpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMjZmODY5MTI0OTUxYmI4OTY4NGUyMzM4YjliY2YyMWI7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7dmFyIG11bHRpc3RlcD1pbml0aWFsaXplRmluYW5jZU11bHRpU3RlcChzZWxmLnRhcmdldCk7JChkb2N1bWVudCkub24oJ2NyZWRpdC5tdWx0aXN0ZXBwb3B1cC5zdGFydCcsZnVuY3Rpb24oZSl7bXVsdGlzdGVwLnN0YXJ0KCk7fSk7fSwiY29va2llRHVyYXRpb24iOjMwLCJjb29raWVOYW1lIjpudWxsLCJjb29raWVDcmVhdGUiOm51bGwsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCIsIm9mZmVydHlwZSI6IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiLCJuYW1lIjpudWxsLCJzZW5kVG8iOiIiK2pzX2QyY19nZXRfdmFsKCIxM2RxdHNuY2Q4MXdrODQ0IikrIiIsInNlbmRUb0FERiI6IiIranNfZDJjX2dldF92YWwoIjVjY3lnazkyNW1nd2cwIikrIiIsIk9LQnV0dG9uQ2xhc3MiOiJzdWJtaXRCdG4iLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6ZmFsc2UsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6bnVsbCwiYm9keSI6bnVsbH19LCJzdGF0ZSI6W10sInZlaGljbGVTdGF0ZSI6InVzZWQiLCJjbG9zZU9uU3VibWl0Ijp0cnVlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOjAsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjpmYWxzZSwic2hvd29ubG9hZCI6ZmFsc2UsImNvdW50ZG93biI6MTc3NzAwMzIwMCwiY29uZmlybUZvcm0iOlt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbHNlY3Rpb24ifSx7Im5hbWUiOiJicmFuZCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMWVyaXY5MDBwZGE4OHd3OCIpKyIiLCJjbGFzcyI6ImJyYW5kZW1haWwifSx7Im5hbWUiOiJtb2RlbCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTBwYTd2M3FlbGRjb3NrIikrIiIsImNsYXNzIjoibW9kZWxlbWFpbCJ9LHsibmFtZSI6InllYXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInI4Mnpma3hhMmR3c3MwMCIpKyIiLCJjbGFzcyI6InllYXJlbWFpbCJ9LHsibmFtZSI6Imdvb2dsZWlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJnb29nbGVpZGQyY21lZGlhIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nY29uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdhY3Rpb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2RvbWFpbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxBZHYiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbFBpeCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZmFjZWJvb2tDb25JZCIsInZhbHVlIjoiMTM4NDI0ODU1NTI4OTQ4MCJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoidmlsbGVtYXJpZWtpYS5jb20ifSx7Im5hbWUiOiJyZWZlcnJlciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiaTNnc2F4Z3M1ams4d2NrIikrIiJ9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiMCIsImNsYXNzIjoiaXNleHByZXNzIn0seyJuYW1lIjoiaXNwcm9tbyIsInZhbHVlIjoiMCJ9LHsibmFtZSI6ImlzaG9tZXBhZ2UiLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInNvN3l1cWFqNGR3Y2M4cyIpKyIifSx7Im5hbWUiOiJmcm9tQUEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImxhbmciLCJ2YWx1ZSI6IkZSRU5DSCJ9XX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfM2UyYmQ5NzQxMDZiY2JmMjY4MDM5ZTk3Y2I4NDM4YWU7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25CZWZvcmVPcGVuIjpmdW5jdGlvbihzZWxmKXtpZihzZWxmLnNldHRpbmdzLmFscmVhZHlJbml0KXtzZWxmLnNldHRpbmdzLmFscmVhZHlJbml0PWZhbHNlO2lmKENvb2tpZXMuZ2V0KCdwb3B1cEZvcm1GaWxsZWQnKT09IjEiKXskKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIiKS5oaWRlKCk7fQpyZXR1cm4gdHJ1ZTt9CmlmKCFzZWxmLnNldHRpbmdzLnN0eWxlaWQpcmV0dXJuIGZhbHNlO3NlbGYuc2V0dGluZ3MuaW5pdGlhbFN0eWxlaWQ9c2VsZi5zZXR0aW5ncy5zdHlsZWlkO2lmKCQoIi5ibnBfcGF5bWVudF9jb250YWluZXIiKS5sZW5ndGgpe3NlbGYuc2V0dGluZ3MucGF5bWVudE9wdGlvbnM9cGFyc2VJbnQoJCgiI29wdGlvblByaWNlVG90YWwiKS5odG1sKCkucmVwbGFjZSgiLCIsIiIpKTt9CmdhVHJhY2soJ2MuX3RyYWNrRXZlbnQnLCdDbGlxdWVzIENhbGN1bGF0cmljZScsJ05ldWYnLCdPcGVuJywxKTtwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpO30sIm9uQ2xvc2UiOmZ1bmN0aW9uKHNlbGYpe2lmKCFzZWxmLnNldHRpbmdzLmFscmVhZHlJbml0KXtnYVRyYWNrKCdjLl90cmFja0V2ZW50JywnQ2xpcXVlcyBDYWxjdWxhdHJpY2UnLCdOZXVmJywnQ2xvc2UnLDEpO30KaWYoKCgkKCcjdGFyZ2V0UGFnZScpLnZhbCgpfHxmYWxzZSk9PSdORVdDQVJTJ3x8KCQoJyN0YXJnZXRQYWdlJykudmFsKCl8fGZhbHNlKT09J1VTRURDQVJTJykmJndpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD09dHJ1ZSl7bG9jYXRpb24ucmVsb2FkKCk7fX0sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXtwb3B1cENhbGN1bGF0b3JJbml0aWFsaXplZCgpO30sImNvb2tpZUR1cmF0aW9uIjozMCwiY29va2llTmFtZSI6bnVsbCwiY29va2llQ3JlYXRlIjpudWxsLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6bnVsbCwib2ZmZXJ0eXBlIjpudWxsLCJuYW1lIjpudWxsLCJzZW5kVG8iOm51bGwsInNlbmRUb0FERiI6bnVsbCwiT0tCdXR0b25DbGFzcyI6InN1Ym1pdEJ0biIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjpmYWxzZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6ZmFsc2UsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjpmYWxzZSwic2hvd29ubG9hZCI6ZmFsc2UsImNvdW50ZG93biI6MTc3NzAwMzIwMCwiY29uZmlybUZvcm0iOlt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbHNlY3Rpb24ifSx7Im5hbWUiOiJicmFuZCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMWVyaXY5MDBwZGE4OHd3OCIpKyIiLCJjbGFzcyI6ImJyYW5kZW1haWwifSx7Im5hbWUiOiJtb2RlbCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTBwYTd2M3FlbGRjb3NrIikrIiIsImNsYXNzIjoibW9kZWxlbWFpbCJ9LHsibmFtZSI6InllYXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInI4Mnpma3hhMmR3c3MwMCIpKyIiLCJjbGFzcyI6InllYXJlbWFpbCJ9LHsibmFtZSI6Imdvb2dsZWlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJnb29nbGVpZGQyY21lZGlhIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nY29uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdhY3Rpb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2RvbWFpbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxBZHYiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbFBpeCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZmFjZWJvb2tDb25JZCIsInZhbHVlIjoiMTM4NDI0ODU1NTI4OTQ4MCJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoidmlsbGVtYXJpZWtpYS5jb20ifSx7Im5hbWUiOiJyZWZlcnJlciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiaTNnc2F4Z3M1ams4d2NrIikrIiJ9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiMCIsImNsYXNzIjoiaXNleHByZXNzIn0seyJuYW1lIjoiaXNwcm9tbyIsInZhbHVlIjoiMCJ9LHsibmFtZSI6ImlzaG9tZXBhZ2UiLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInNvN3l1cWFqNGR3Y2M4cyIpKyIifSx7Im5hbWUiOiJmcm9tQUEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImxhbmciLCJ2YWx1ZSI6IkZSRU5DSCJ9XX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fTsKLyoqIC9tL2pzL3NrZWxldG9uLmNvbnRyb2xsZXIuanMgKiovCnZhciBfX19kMmNfc2tlbGV0b25jb250cm9sbGVyanNfY19vbj0iMjAyNi0wNC0wMSAxMTozMDowMiI7J3VzZSBzdHJpY3QnO3RyeXtqUXVlcnkoZnVuY3Rpb24oYyl7bGV0IGg7Y29uc29sZS5sb2coIkdTUEVFRC1BRlRFUi1KUVVFUlk6IisoRGF0ZS5ub3coKS0obnVsbCE9KGg9d2luZG93LmdUZXN0U3BlZWRDb25uKT9oOjApKS8xRTMpO3dpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PSEwO3NldFRpbWVvdXQoKCk9Pnt2YXIgYj1jKCIjZW1iZWQtY29udGFpbmVyLXlvdXR1YmUtaG9tZXBhZ2UtYnlpZCIpO2NvbnNvbGUubG9nKCJTS0VMRVRPTnwjZW1iZWQtY29udGFpbmVyLXlvdXR1YmUtaG9tZXBhZ2UtYnlpZCIpO2lmKGIubGVuZ3RoKXt2YXIgYT1iLmF0dHIoImRhdGEtaWZyYW1lLWF0dHJpYnV0ZXMiKTsidW5kZWZpbmVkIiE9PWEmJnZvaWQgMCE9PWEmJihhPUpTT04ucGFyc2UoYXRvYihhKSksYygiPGlmcmFtZS8+IixhKS5hcHBlbmRUbyhiKSl9fSw3RTMpO3NldFRpbWVvdXQoKCk9Pnt2YXIgYj1jKCIjZW1iZWQtY29udGFpbmVyLW1hcHMtaG9tZXBhZ2UtYnlpZCIpOwpjb25zb2xlLmxvZygiU0tFTEVUT058I2VtYmVkLWNvbnRhaW5lci1tYXBzLWhvbWVwYWdlLWJ5aWQiKTtpZihiLmxlbmd0aCl7dmFyIGE9Yi5hdHRyKCJkYXRhLWlmcmFtZS1hdHRyaWJ1dGVzIik7InVuZGVmaW5lZCIhPT1hJiZ2b2lkIDAhPT1hJiYoYT1KU09OLnBhcnNlKGF0b2IoYSkpLGluamVjdEdvb2dsZU1hcHNLZXkoZnVuY3Rpb24oZil7YS5zcmM9YS5zcmMucmVwbGFjZSgiX19LRVlfXyIsZik7YygiPGlmcmFtZS8+IixhKS5hcHBlbmRUbyhiKX0pKX19LDdFMyk7d2luZG93LmRlbGF5ZWRDc3M9ZnVuY3Rpb24oYil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTthLnR5cGU9InRleHQvY3NzIjthLnN0eWxlU2hlZXQ\/YS5zdHlsZVNoZWV0LmNzc1RleHQ9YjphLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGIpKTtjb25zb2xlLmxvZygiU0tFTEVUT058REVMQVlFRExPQURDU1N8IitiKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpfTsKd2luZG93LmRlbGF5ZWRDc3MoIi5oaWRlT25QcmVMb2Fke3Zpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50O30iKTtzZXRUaW1lb3V0KCgpPT57Y29uc29sZS5sb2coIlNLRUxFVE9OfHNldHRpbmcgbWVudSBtdXRhdGlvbiBvYnNlcnZlciIpO3RyeXtjb25zdCBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIpO2lmKG51bGwhPT1hKXtjb25zdCBmPW5ldyBNdXRhdGlvbk9ic2VydmVyKChkLGspPT57Zm9yKGNvbnN0IGUgb2YgZCkiYXR0cmlidXRlcyI9PT1lLnR5cGUmJiJjbGFzcyI9PT1lLmF0dHJpYnV0ZU5hbWUmJmUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygidXBfbWVudSIpJiYoZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIiKSxlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIik\/ZC5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIil8fApkLmNsYXNzTGlzdC5hZGQoImZpeGVkIik6ZC5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIikmJmQuY2xhc3NMaXN0LnJlbW92ZSgiZml4ZWQiKSl9KSxnPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiA+IC51cF9tZW51Iik7ZyYmKGYub2JzZXJ2ZShnLHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksZy5jbGFzc0xpc3QuY29udGFpbnMoImZpeGVkIikmJmEuY2xhc3NMaXN0LmFkZCgiZml4ZWQiKSl9fWNhdGNoKGEpe2NvbnNvbGUuZXJyb3IoIlNLRUxFVE9OfC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIsYSl9Y29uc29sZS5sb2coIlNLRUxFVE9OfGlzLWxvYWRlZC1ub3ciKTtjb25zdCBiPWMoIi5za2VsZXRvbiIpO2IuYWRkQ2xhc3MoImlzLWxvYWRlZC1ub3ciKTtzZXRUaW1lb3V0KCgpPT57Y29uc29sZS5sb2coIlNLRUxFVE9OfHJlbW92aW5nIHNrZWxldG9ucyBmaXJzdCBpbWcgYmFja2dyb3VuZCIpOwpiLmZpbmQoImltZy5pcy1za2VsZXRvbi1iZy1pbWciKS5yZW1vdmUoKX0sMzx3aW5kb3cuZ1NwZWVkQ29ubj8xRTQ6NkUzKX0sMjAwKX0pfWNhdGNoKGMpe307","menu_new":"","html":"Cgk8c3R5bGU+CgkJaHRtbCB7Zm9udC1zaXplOjEwMCU7fQoJCW1haW4gKiB7bWFyZ2luOmluaXRpYWw7fQoJCWZvb3RlciB7Y2xlYXI6IGJvdGg7fQoJPC9zdHlsZT4KCgk8ZGl2IGlkPSJkMmNfYm9keUNvbnRlbnQiIGNsYXNzPSJkMmMtZW1iZWRkZWQtY29udGVudC1tb2JpbGUiPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0aXZlc2l0ZWxhbmd1YWdlIiB2YWx1ZT0iRlJFTkNIIi8+CgoJCTxpbnB1dAoJCQl0eXBlPSJoaWRkZW4iCgkJCWlkPSJkMmNEYXRhU3RvcmUiCgkJCWRhdGEtYmFzZXVybD0iaHR0cHM6Ly92aWxsZW1hcmlla2lhLmNvbSIKCQkJZGF0YS1ib2R5Y2xhc3M9IiBoZWFkaW5nQ2Fwc09uIEZSRU5DSCBOZXdTcnAyIE5ld1NycDJNb2JpbGUiCgkJCWRhdGEtaXNtb2JpbGU9IjEiCgkJPgoKCQk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9haWFwcHMuZDJjbWVkaWEuY2EvZXZib29zdC9ldi1jb21wYXJhdG9yLmlpZmUuanMiIGFzeW5jPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgICB7IkBjb250ZXh0IjoiaHR0cHM6XC9cL3NjaGVtYS5vcmciLCJAdHlwZSI6IldlYlNpdGUiLCJuYW1lIjoiVmlsbGUtTWFyaWUgS2lhIiwidXJsIjoiaHR0cHM6XC9cL3d3dy52aWxsZW1hcmlla2lhLmNvbVwvIiwicG90ZW50aWFsQWN0aW9uIjp7IkB0eXBlIjoiU2VhcmNoQWN0aW9uIiwidGFyZ2V0IjoiaHR0cHM6XC9cL3d3dy52aWxsZW1hcmlla2lhLmNvbVwvb2NjYXNpb25cL3JlY2hlcmNoZS5odG1sP3E9e3NlYXJjaF90ZXJtX3N0cmluZ30iLCJxdWVyeS1pbnB1dCI6InJlcXVpcmVkIG5hbWU9c2VhcmNoX3Rlcm1fc3RyaW5nIn19Cjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgICB7IkBjb250ZXh0IjoiaHR0cHM6XC9cL3NjaGVtYS5vcmciLCJAdHlwZSI6IkF1dG9tb3RpdmVCdXNpbmVzcyIsInVybCI6Imh0dHBzOlwvXC93d3cudmlsbGVtYXJpZWtpYS5jb20iLCJuYW1lIjoiVmlsbGUtTWFyaWUgS2lhIiwiaW1hZ2UiOiJodHRwczpcL1wvd3d3LnZpbGxlbWFyaWVraWEuY29tXC9pbWFnZXNcL0xvZ29Nb2JpbGVcL0tpYS1Mb2dvLnN2ZyIsImxvZ28iOiJodHRwczpcL1wvd3d3LnZpbGxlbWFyaWVraWEuY29tXC9pbWFnZXNcL0xvZ29Nb2JpbGVcL0tpYS1Mb2dvLnN2ZyIsInNhbWVBcyI6WyJodHRwczpcL1wvd3d3LmZhY2Vib29rLmNvbVwvdmlsbGVtYXJpZWtpYVwvP3JmPTE1MjcxNjc1ODY4OTg4NCIsImh0dHBzOlwvXC90d2l0dGVyLmNvbVwvVmlsbGVLaWEiLCJodHRwczpcL1wvd3d3LnlvdXR1YmUuY29tXC9jaGFubmVsXC9VQ3k2eF9namw3RUxoUnhyU3pZZUQ3VnciLCJodHRwczpcL1wvd3d3Lmluc3RhZ3JhbS5jb21cL3ZpbGxlbWFyaWVraWFcLyJdLCJnZW8iOnsiQHR5cGUiOiJHZW9DaXJjbGUiLCJnZW9NaWRwb2ludCI6eyJAdHlwZSI6Ikdlb0Nvb3JkaW5hdGVzIiwibGF0aXR1ZGUiOiI0NS41NDA1MTAwMDAwIiwibG9uZ2l0dWRlIjoiLTczLjU1NTczMDAwMDAifSwiZ2VvUmFkaXVzIjoxMDAwMDB9LCJhZGRyZXNzIjp7IkB0eXBlIjoiUG9zdGFsQWRkcmVzcyIsInN0cmVldEFkZHJlc3MiOiIzMDEwLCBydWUgSG9jaGVsYWdhIiwiYWRkcmVzc0xvY2FsaXR5IjoiTW9udHJcdTAwZTlhbCIsImFkZHJlc3NSZWdpb24iOiJRdWViZWMiLCJwb3N0YWxDb2RlIjoiSDFXIDFHMiIsImFkZHJlc3NDb3VudHJ5IjoiQ0EifSwidGVsZXBob25lIjoiNTE0LTU5OC04ODAwIiwicHJpY2VSYW5nZSI6IjI1ODk0JC02MzE0NCQiLCJvcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIjpbeyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOiJNb25kYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMjA6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IlR1ZXNkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMjA6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IldlZG5lc2RheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIyMDowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiVGh1cnNkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMjA6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IkZyaWRheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIxNzowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiU2F0dXJkYXkiLCJvcGVucyI6IjEwOjAwIiwiY2xvc2VzIjoiMTY6MDAifV0sImhhc01hcCI6Imh0dHBzOlwvXC93d3cuZ29vZ2xlLmNvbVwvbWFwc1wvcGxhY2VcLzMwMTAsIHJ1ZSBIb2NoZWxhZ2EgTW9udHJcdTAwZTlhbCBRdWViZWMgSDFXIDFHMiIsImNvbnRhY3RQb2ludCI6eyJAdHlwZSI6IkNvbnRhY3RQb2ludCIsInRlbGVwaG9uZSI6IjUxNC01OTgtODgwMCIsImNvbnRhY3RUeXBlIjpbIlNhbGVzIiwiU2VydmljZSIsIlBhcnRzIl0sImF2YWlsYWJsZUxhbmd1YWdlIjpbIkVuZ2xpc2giLCJGcmVuY2giXX0sImFyZWFTZXJ2ZWQiOiJRdWViZWMiLCJtYWtlc09mZmVyIjpbeyJAdHlwZSI6Ik9mZmVyIiwiaXRlbU9mZmVyZWQiOnsiQHR5cGUiOiJTZXJ2aWNlIiwibmFtZSI6IlZlbnRlcyBkZSB2XHUwMGU5aGljdWxlcyBLaWEgbmV1ZnMgZXQgZCdvY2Nhc2lvbiJ9fSx7IkB0eXBlIjoiT2ZmZXIiLCJpdGVtT2ZmZXJlZCI6eyJAdHlwZSI6IlNlcnZpY2UiLCJuYW1lIjoiRmluYW5jZW1lbnQgZGUgdlx1MDBlOWhpY3VsZXMifX0seyJAdHlwZSI6Ik9mZmVyIiwiaXRlbU9mZmVyZWQiOnsiQHR5cGUiOiJTZXJ2aWNlIiwibmFtZSI6IlJcdTAwZTlwYXJhdGlvbiBldCBtYWludGVuYW5jZSBkZSB2XHUwMGU5aGljdWxlcyJ9fSx7IkB0eXBlIjoiT2ZmZXIiLCJpdGVtT2ZmZXJlZCI6eyJAdHlwZSI6IlNlcnZpY2UiLCJuYW1lIjoiVmVudGVzIGRlIHBpXHUwMGU4Y2VzIGV0IGFjY2Vzc29pcmVzIn19XX0KPC9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2VsZW1lbnRzLmRlY2lzaW9uaW5naXQubmV0L3N0eWxlcy5jc3MiPjxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly92aWxsZW1hcmlla2lhLmNvbS9pbWFnZXMvRmF2aWNvbi9mYXZpY29uLmljbyIgdHlwZT0iaW1hZ2UveC1pY29uIj48bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cudmlsbGVtYXJpZWtpYS5jb20vZW5nLyIgaHJlZmxhbmc9ImVuLWNhIj48bGluayByZWw9InByZWxvYWQiIGFzPSJpbWFnZSIgaHJlZj0iaHR0cHM6Ly92aWxsZW1hcmlla2lhLmNvbS9pbWFnZXMvTG9nb01vYmlsZS9LaWEtTG9nby5zdmciPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL0tpYVNpZ25hdHVyZUJvbGQud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2EvS2lhU2lnbmF0dXJlTGlnaHQud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vdmlsbGVtYXJpZWtpYS5jb20vY3NzX3IvcmVzb3VyY2UubG9hZGVyLmZyLmNzcz92PTMmYW1wO2Nzc3JwbD0mYW1wO3dzd2lkdGg9MCZhbXA7ZGV2aWNlPW1vYmlsZSZhbXA7dWE9UTBOQ2IzUXZNaTR3SUNob2RIUndjem92TDJOdmJXMXZibU55WVhkc0xtOXlaeTltWVhFdktRPT0iPjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9pbWFnZXNjZG4uZDJjbWVkaWEuY2EiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYSIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vd3d3LnZpbGxlbWFyaWVraWEuY29tL2VtYmVkZXIvcHJvY2Vzcy9mci9tIiBkYXRhLWNhbm9uaWNhbC1oZWFkZXItd2lkZ2V0PSIxIj48ZGl2IGlkPSJkaWdpdGFsX2RhdGFfaW5mbyIgZGF0YS1hbmFseXRpY3MtdHlwZT0ic2hpZnQgZGlnaXRhbCI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InZlaGljbGVDYXRlZ29yeSIgdmFsdWU9IjAiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdGF0dXMiIHZhbHVlPSJ7JFNEVkVISUNMRVNUQVRVU30iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtYWtlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmluIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHJpbSIgdmFsdWU9InskVkVSU0lPTn0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXNwbGF5ZWRQcmljZSIgdmFsdWU9InskQ0FSRElTUExBWUVEUFJJQ0V9Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibXNycCIgdmFsdWU9InskQ0FSTVNSUH0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmdWVsVHlwZSIgdmFsdWU9InskQ0FSRlVFTFRZUEV9Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHJhbnNtaXNzaW9uIiB2YWx1ZT0ieyRDQVJUUkFOU01JU1NJT059Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZHJpdmVUcmFpbiIgdmFsdWU9InskQ0FSRFJJVkVUUkFJTn0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJlbmdpbmUiIHZhbHVlPSJ7JENBUkVOR0lORX0iPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJleHRDb2xvciIgdmFsdWU9InskQ0FSRVhUQ09MT1J9Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaW50Q29sb3IiIHZhbHVlPSJ7JENBUklOVENPTE9SfSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNkX2NpdHlfdGVzdCIgdmFsdWU9Ik1vbnRyZWFsIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHJhZmZpY190eXBlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyQkFDIiB2YWx1ZT0iIj4KCQk8L2Rpdj4KCQk8IS0tIE9POjoxN2E0ZThiMDU0NzhhNjE1MjFiMGY2MDI5MDA2MGQxMSAtLT48IS0tIG9lbUNlcnRpZmljYXRpb24gIktpYSBTSElGVCIgLS0+CQk8ZGl2IGlkPSJhc2NfZGlnaXRhbF9kYXRhX2luZm8iIGRhdGEtYW5hbHl0aWNzPSJnb29nbGVfYW5hbHl0aWNzXzQiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2ZWhpY2xlQ2F0ZWdvcnkiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtYWtlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmluIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHJpbSIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InByaWNlIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZXh0Y29sb3IiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRlX2xpc3RpbmciIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkMmFzY19pc0NlcnRpZmllZCIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InZlaGljbGVTdGF0dXMiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJDb2RlIiB2YWx1ZT0iNjExMzUiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlVHlwZSIgdmFsdWU9IlNob3dyb29tIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyX25hbWUiIHZhbHVlPSJWaWxsZS1NYXJpZSBLaWEiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJfYWRkcmVzcyIgdmFsdWU9IjMwMTAsIHJ1ZSBIb2NoZWxhZ2EsIE1vbnRyw6lhbCwgTW9udHLDqWFsIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyX3Bvc3RhbCIgdmFsdWU9IkgxVyAxRzIiPgoJCTwvZGl2PgoJCTwhLS0gT086OjkyNmE0MWQ5ODEyMjI4MDM1ZjU1N2I4N2Y5NmZkYzliIC0tPgo8IS0tRU5EX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMi0tPgoKPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KCjwhLS1TVEFSVF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM\/aWQ9Ry1GN0c4NjVIVktHIj48L3NjcmlwdD4KPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KCjwhLS0gIyNWTUpTMiMjIC0tPjwhLS0gR08gSUQgLS0+CjwhLS0gQklORyBTQ1JJUFQgLS0+CjwhLS0gT086OjlmZjUxODk4MTFhOTc2ZDIzODNiYjU0NDE3ZmEwZGUyIC0tPgogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgZGF0YS1ybD0iMSI+Ci8qKiAvY3NzL3Jvb3QuY3NzICoqLwo6cm9vdHsgLS1yYXRpbzoxLjE1OyAtLXMwOjA7IC0tcy05OmNhbGModmFyKC0tcy04KSAvIHZhcigtLXJhdGlvKSk7IC0tcy04OmNhbGModmFyKC0tcy03KSAvIHZhcigtLXJhdGlvKSk7IC0tcy03OmNhbGModmFyKC0tcy02KSAvIHZhcigtLXJhdGlvKSk7IC0tcy02OmNhbGModmFyKC0tcy01KSAvIHZhcigtLXJhdGlvKSk7IC0tcy01OmNhbGModmFyKC0tcy00KSAvIHZhcigtLXJhdGlvKSk7IC0tcy00OmNhbGModmFyKC0tcy0zKSAvIHZhcigtLXJhdGlvKSk7IC0tcy0zOmNhbGModmFyKC0tcy0yKSAvIHZhcigtLXJhdGlvKSk7IC0tcy0yOmNhbGModmFyKC0tcy0xKSAvIHZhcigtLXJhdGlvKSk7IC0tcy0xOmNhbGModmFyKC0tcykgLyB2YXIoLS1yYXRpbykpOyAtLXM6MC41cmVtOyAtLXMxOmNhbGModmFyKC0tcykgKiB2YXIoLS1yYXRpbykpOyAtLXMyOmNhbGModmFyKC0tczEpICogdmFyKC0tcmF0aW8pKTsgLS1zMzpjYWxjKHZhcigtLXMyKSAqIHZhcigtLXJhdGlvKSk7IC0tczQ6Y2FsYyh2YXIoLS1zMykgKiB2YXIoLS1yYXRpbykpOyAtLXM1OmNhbGModmFyKC0tczQpICogdmFyKC0tcmF0aW8pKTsgLS1zNjpjYWxjKHZhcigtLXM1KSAqIHZhcigtLXJhdGlvKSk7IC0tczc6Y2FsYyh2YXIoLS1zNikgKiB2YXIoLS1yYXRpbykpOyAtLXM4OmNhbGModmFyKC0tczcpICogdmFyKC0tcmF0aW8pKTsgLS1zOTpjYWxjKHZhcigtLXM4KSAqIHZhcigtLXJhdGlvKSk7IC0tZnMtYmFzZTowLjg3NXJlbTsgLS1mczp2YXIoLS1mcy1iYXNlKTsgLS1mcy05OmNhbGModmFyKC0tZnMtOCkgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTggOmNhbGModmFyKC0tZnMtNykgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTcgOmNhbGModmFyKC0tZnMtNikgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTYgOmNhbGModmFyKC0tZnMtNSkgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTUgOmNhbGModmFyKC0tZnMtNCkgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTQgOmNhbGModmFyKC0tZnMtMykgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTMgOmNhbGModmFyKC0tZnMtMikgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTIgOmNhbGModmFyKC0tZnMtMSkgLyB2YXIoLS1yYXRpbykpOyAtLWZzLTEgOmNhbGModmFyKC0tZnMwKSAvIHZhcigtLXJhdGlvKSk7IC0tZnMwIDp2YXIoLS1mcy1iYXNlLCAwLjg3NXJlbSk7IC0tZnMxIDpjYWxjKHZhcigtLWZzMCkgKiB2YXIoLS1yYXRpbykpOyAtLWZzMiA6Y2FsYyh2YXIoLS1mczEpICogdmFyKC0tcmF0aW8pKTsgLS1mczMgOmNhbGModmFyKC0tZnMyKSAqIHZhcigtLXJhdGlvKSk7IC0tZnM0IDpjYWxjKHZhcigtLWZzMykgKiB2YXIoLS1yYXRpbykpOyAtLWZzNSA6Y2FsYyh2YXIoLS1mczQpICogdmFyKC0tcmF0aW8pKTsgLS1mczYgOmNhbGModmFyKC0tZnM1KSAqIHZhcigtLXJhdGlvKSk7IC0tZnM3IDpjYWxjKHZhcigtLWZzNikgKiB2YXIoLS1yYXRpbykpOyAtLWZzOCA6Y2FsYyh2YXIoLS1mczcpICogdmFyKC0tcmF0aW8pKTsgLS1mczkgOmNhbGModmFyKC0tZnM4KSAqIHZhcigtLXJhdGlvKSk7IC0tZGVmYXVsdC1ibGFjazojMDUxNDFmOyAtLXRhYi1jb2xvci1zcGVjaWFsY2FzZTojMDAwMDAwOyAtLXRhYi1jb2xvcjojZmZmZmZmOyAtLXRhYi10ZXh0LWNvbG9yOiMwNTE0MWY7IC0tdGFiLWNvbG9yLW1vYjojMDUxNDFmOyAtLXRhYi10ZXh0LWNvbG9yLW1vYjojZmZmZmZmOyAtLXRhYi1jb2xvci1tb2ItZXg6I2M3YzhjYTsgLS10YWItdGV4dC1jb2xvci1tb2ItZXg6IzA1MTQxZjsgLS1tZW51LWNvbG9yLWJvcmRlcjojZmZmZmZmOyAtLW1lbnUtY29sb3ItbW9iOiNmZmZmZmY7IC0tbWVudS10ZXh0LWNvbG9yLW1vYjojMDUxNDFmOyAtLW1lbnUtY29sb3ItbW9iLWV4OiNjN2M4Y2E7IC0tbWVudS10ZXh0LWNvbG9yLW1vYi1leDojMDUxNDFmOyAtLXByb21vLWNvbG9yOiMwNTE0MWY7IC0tcHJvbW8tdGV4dC1jb2xvcjojZmZmZmZmOyAtLW5ld3NycC1tb2RlbC1jb2xvcjojMDUxNDFmOyAtLWZvb3Rlci1saW5rLXRpdGxlLWNvbDojZmZmZmZmOyAtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yOiNmZmZmZmY7IC0tZm9vdGVyLWNvbmRpdGlvbnMtY29sb3I6I2ZmZmZmZjsgLS1mb290ZXItYmctY29sb3I6IzA1MTQxZjsgLS1nZW5lcmFsLWJnLWNvbG9yOiNmZmZmZmY7IC0tdG9wLXByb21vLWJ0bi10eHQ6I2ZmZmZmZjsgLS10b3AtcHJvbW8tYnRuLWJnOiMwNTE0MWY7IC0tcHJvbW8tYnRuLWNvbG9yOiMwNTE0MWY7IC0tcHJvbW8tYnRuLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1wcm9tby1idG4taG92ZXItYmctY29sb3I6IzA1MTQxZjsgLS1wcm9tby1idG4taG92ZXItdGV4dC1jb2xvcjojZmZmZmZmOyAtLXByb21vLWJ0bi1ib3JkZXItcmFkaXVzOjFweDsgLS1ob21lLWJnLWNvbG9yOiNmZmZmZmY7IC0tYnVzaW5lc3MtZGVzYy10eHQtY29sb3I6IzA1MTQxZjsgLS1idXNpbmVzcy1kZXNjLWJnLWNvbG9yOiNmZmZmZmY7IC0tYnVzaW5lc3MtZGVzYy10eHQtY29sb3JfbW9iOiMwNTE0MWY7IC0tYnVzaW5lc3MtZGVzYy1iZy1jb2xvcl9tb2I6I2ZmZmZmZjsgLS11c2VkLXNsaWRlci1iZzojZmZmZmZmOyAtLXVzZWQtc2xpZGVyLXR4dDojMDUxNDFmOyAtLXVzZWQtc2xpZGVyLXByaWNlOiMwNTE0MWY7IC0tbmV3LXNsaWRlci1iZzojZmZmZmZmOyAtLW5ldy12ZHAtYmVzdHByaWNlLWJ0bi1iZy1jb2xvcjojMDUxNDFmOyAtLW5ldy12ZHAtYmVzdHByaWNlLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tZGVhbGVyLW5hbWUtY29sb3I6I2ZmZmZmZjsgLS1uZXdzLWJnLWNvbG9yOiNmZmZmZmY7IC0tbmV3cy10ZXh0LWNvbG9yOiMwNTE0MWY7IC0tZXhpdC1wb3B1cC1iZ2NvbDo7IC0tdXNlZC1vZmZlci1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLXVzZWQtb2ZmZXItYnRuLWJnLWNvbG9yOiMwNTE0MWY7IC0tZmluYW5jZS1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLWZpbmFuY2UtYnRuLWJnLWNvbG9yOiMwNTE0MWY7IC0tZmluYW5jZS1idG4tdGV4dC1jb2xvci1uZXdpbnY6I2ZmZmZmZjsgLS1maW5hbmNlLWJ0bi1iZy1jb2xvci1uZXdpbnY6I2ZmMDAwMDsgLS1tZW51LWhvdmVyLXRleHQtY29sb3I6IzA1MTQxZjsgLS1tZW51LWhvdmVyLWJnLWNvbG9yOiNmZmZmZmY7IC0tbWVudS1iZy1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtLW1haW4tbWVudS1iZy1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtLWRlYWxlci1hZGRyZXNzLWNvbG9yOiNmZmZmZmY7IC0tZGVhbGVyLWFkZHJlc3MtZm9udC1zaXplOjE0OyAtLXdoaXRlOiNmZmY7IC0tbGlnaHQ6I2Y2ZjZmNjsgLS1saWdodC1ncmF5OiNlZmVmZWY7IC0tbWlkLWdyYXk6I2RkZDsgLS1ncmF5OiM5OTk7IC0tY250ci1ncmF5OiM3Njc2NzY7IC0tZGFyay1ncmF5OiM2NjY7IC0tYmxhY2stZ3JheTojMzMzOyAtLWJsYWNrOiMwMDA7IC0tYm9yZGVyLXRoaW46MXB4OyAtLWJvcmRlci10aGljazoycHg7IC0tdHh0LXVwcGVyOnVwcGVyY2FzZTsgLS1mb250LW1lbnU6U2lnbmF0dXJlOyAtLWZvbnQtbWVudS1tb2I6U2lnbmF0dXJlOyAtLWZvbnQtbWVudS13ZWlnaHQ6NDAwOyAtLWZvbnQtaDE6U2lnbmF0dXJlOyAtLWZvbnQtaDEtbW9iOlNpZ25hdHVyZTsgLS1mb250LWgxLXdlaWdodDo0MDA7IC0tZm9udC1oMjpTaWduYXR1cmU7IC0tZm9udC1oMi1tb2I6U2lnbmF0dXJlOyAtLWZvbnQtaDItd2VpZ2h0OjQwMDsgLS1mb250LXRleHQ6U2lnbmF0dXJlTGlnaHQ7IC0tZm9udC10ZXh0LW1vYjpTaWduYXR1cmVMaWdodDsgLS1mb250LXRleHQtd2VpZ2h0OjQwMDsgLS1mb250LWJ1dHRvbnM6U2lnbmF0dXJlTGlnaHQ7IC0tZm9udC1idXR0b25zLW1vYjpTaWduYXR1cmVMaWdodDsgLS1mb250LWJ1dHRvbnMtd2VpZ2h0OjQwMDsgLS1jb3JuZXItcmliYm9uLWJnLWNvbG9yOiMwNTE0MWY7IC0tY29ybmVyLXJpYmJvbi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtbWVudS1pdGVtLWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3I6I2ZmZmZmZjsgLS1ob21lcGFnZS1iYW5uZXItc2VhcmNoLWJhci12aWRlby1vcGFjaXR5OjMwOyAtLWhvbWVwYWdlLXNvY2lhbC1iZy1jb2xvcjojZmZmZmZmOyAtLWhvbWVwYWdlLXNvY2lhbC10ZXh0LWNvbG9yOiMwMDAwMDA7IC0taG9tZXBhZ2Utc29jaWFsLWxvZ28tY29sb3I6IzE4NzdGMjsgLS1wcm9tb3Rpb24tYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGOyAtLXByb21vdGlvbi10ZXh0LWNvbG9yOiMwNTE0MUY7IC0tdW5kZXJiYW5uZXJfc2VhcmNoX2Jhcl9iZzojYzdjOGNhOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfY29sb3I6IzA1MTQxZjsgLS11bmRlcmJhbm5lcl9zZWFyY2hfYmFyX2J0bl9iZzojMDUxNDFGOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfYnRuX2NvbG9yOiNmZmZmZmY7IC0tbmV3dmRwLWJlc3RwcmljZS10ZXh0LWNvbG9yLXByaWNlOiMwNTE0MWY7IC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dDojOTM5NTk4OyAtLWFkbWluLWdlbmVyYWwtaGVhZGVyLWJnLWNvbG9yOiNmZmZmZmY7IC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtYmctY29sb3I6IzA1MTQxZjsgLS10cmFkZWluYmFyLWJ0bi1iZzojMDUxNDFmOyAtLXRyYWRlaW5iYXItYnRuLWNvbG9yOiNmZmZmZmY7IC0tZGVmYXVsdC1ibGFjay10ZXh0OiMwNTE0MWY7IC0tcHJvbW8tYnRuLWJnLWNvbG9yOiMwNTE0MWY7IC0tdHJhZGVpbmJhci1iZzojYzdjOGNhOyAtLXRyYWRlaW5iYXItY29sb3I6IzA1MTQxZjsgLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yOiMwNTE0MWY7IC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZzojZmZmZmZmOyAtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3I6IzA1MTQxZjsgLS1hZG1pbi1nZW5lcmFsLWFsZXJ0LWJhci10ZXh0LWNvbG9yOiMwNTE0MWY7IC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3I6cmdiKDUsMjAsMzEpOyAtLXRvcC1wcm9tby1idG4tYmctY29sb3I6I0ZGRkZGRjsgLS1uZXctdmVoaWNsZS1jYXJvdXNlbC10eHQtY29sb3I6IzA1MTQxZjsgLS1kaWdpdGFsLXJldGFpbGluZy1kcmF3ZXItd2lkdGg6JTsgfSAqIHsgYm9yZGVyLWNvbG9yOmluaGVyaXQ7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLXdpZHRoOjA7IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGxpbmUtaGVpZ2h0OjEuMmVtOyB9IG9sLCB1bCwgbWVudSB7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSBhIHsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOmluaGVyaXQ7IH0gaDEsaDIsaDMsaDQsaDUsaDYsIHAgeyBtYXJnaW46MDsgfSBoMSxoMixoMyxoNCxoNSxoNnsgZm9udC1zaXplOmluaGVyaXQ7IGZvbnQtd2VpZ2h0OmluaGVyaXQ7IH0gaW1nIHsgbWF4LXdpZHRoOjEwMCU7IH0gdGFibGUgeyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0gdGV4dGFyZWEgeyB3aGl0ZS1zcGFjZTpyZXZlcnQ7IH0gOndoZXJlKFtoaWRkZW5dKXsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0gOndoZXJlKFtjb250ZW50ZWRpdGFibGVdKXsgLW1vei11c2VyLW1vZGlmeTpyZWFkLXdyaXRlOyAtd2Via2l0LXVzZXItbW9kaWZ5OnJlYWQtd3JpdGU7IG92ZXJmbG93LXdyYXA6YnJlYWstd29yZDsgbGluZS1icmVhazphZnRlci13aGl0ZS1zcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOmFmdGVyLXdoaXRlLXNwYWNlOyB9IDp3aGVyZShbZHJhZ2dhYmxlPSJ0cnVlIl0pIHsgLXdlYmtpdC11c2VyLWRyYWc6ZWxlbWVudDsgfSAjQWZ0ZXJDYXJvdXNlbCA+IC5jb250YWluZXIsICNob21lcGFnZS1jb250ZW50ID4gLmNvbnRhaW5lciwgI2hvbWVfQWZ0ZXJBY3Rpb25Cb3ggPiAuY29udGFpbmVyLCAjaG9tZV9BZnRlckRpc3BsYXlWZWhpY2xlID4gLmNvbnRhaW5lciB7IG1heC13aWR0aDoxMjAwcHg7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9ICNBZnRlckNhcm91c2VsID4gLmNvbnRhaW5lcjpoYXMoLkFmdGVyQ2Fyb3VzZWxGdyksICNob21lX0FmdGVyQWN0aW9uQm94ID4gLmNvbnRhaW5lcjpoYXMoLkFmdGVyQ2Fyb3VzZWxGdyksICNob21lX0FmdGVyRGlzcGxheVZlaGljbGUgPiAuY29udGFpbmVyOmhhcyguQWZ0ZXJDYXJvdXNlbEZ3KSB7IG1heC13aWR0aDpub25lOyBwYWRkaW5nLWxlZnQ6MDsgcGFkZGluZy1yaWdodDowOyB9IGJvZHkuaGFzLWQyY2JvdCAjQWZ0ZXJDYXJvdXNlbCAuY29udGFpbmVyLCBib2R5Lmhhcy1kMmNib3QgI2hvbWVwYWdlLWNvbnRlbnQgLmNvbnRhaW5lciwgYm9keS5oYXMtZDJjYm90ICNob21lX0FmdGVyQWN0aW9uQm94IC5jb250YWluZXIsIGJvZHkuaGFzLWQyY2JvdCAjaG9tZV9BZnRlckRpc3BsYXlWZWhpY2xlIC5jb250YWluZXIgeyBtYXgtd2lkdGg6bm9uZSAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MCAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OjAgIWltcG9ydGFudDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgLmNvbnRhaW5lci1mbHVpZHsgb3ZlcmZsb3cteDpoaWRkZW47IH0gLnJlc3BvbnNpdmUtZWRpdG9yIC5jb250YWluZXItZmx1aWQgKiB7IGxpbmUtaGVpZ2h0OmluaXRpYWw7IH0gLmNrZWRpdG9yV3JhcHBlcnsgb3ZlcmZsb3cteDpoaWRkZW47IHNjcm9sbGJhci13aWR0aDpub25lOyB9ICogeyBmb250LXZhcmlhbnQtbnVtZXJpYzpsaW5pbmctbnVtczsgfQovKiogL2Nzcy92Mi9uYXYuY3NzICoqLwpoZWFkZXIubW9iaWxlLWhlYWRlcnsgLS10eHQtY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yLW1vYiwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgd2lkdGg6MTAwdnc7IGhlaWdodDozLjJyZW07IGJveC1zaGFkb3c6cmdiYSgwLCAwLCAwLCAwLjUpIDAgMCA1cHggM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtY29sb3ItbW9iLCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tdHh0LWNvbG9yKTsgei1pbmRleDoxMDAwOyB9IGRpdi5tb2JpbGUtaGVhZGVyLXNwYWNlcnsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMHZ3OyBoZWlnaHQ6My4ycmVtOyBkaXNwbGF5OmJsb2NrOyB9IGhlYWRlci5tb2JpbGUtaGVhZGVyID4gKiArICogeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgaGVpZ2h0OjEwMCU7IH0gaGVhZGVyLm1vYmlsZS1oZWFkZXIudGFsbCA+ICogKyAqeyBib3JkZXItbGVmdDoxcHggc29saWQgI2RkZDsgZmxleDoxIDEgYXV0bzsgfSBoZWFkZXIgLmxvZ28tYWN0aW9uIH4gKiB7IG1pbi13aWR0aDoyLjVyZW07IH0gLmhlYWRlci1kZWFsZXItbmFtZSB7IGNvbG9yOmluaGVyaXQ7IGZvbnQtc2l6ZTp2YXIoLS1mcy0xKTsgLS1mczp2YXIoLS1mcy0xKTsgfSBoZWFkZXIgYXNpZGV7IC0tdHh0LWNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6Mi45NXJlbTsgbGVmdDotMTlyZW07IHdpZHRoOm1pbig4MHZ3LCAxOXJlbSk7IG1pbi1oZWlnaHQ6MTAwdmg7IGZvbnQtc2l6ZTp2YXIoLS1mcyk7IHRyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGVhc2UtaW47IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1jb2xvci1tb2IsIHZhcigtLXRhYi1jb2xvcikpOyBjb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3IpOyBtYXgtaGVpZ2h0OjEwMHZoOyBvdmVyZmxvdzphdXRvOyB6LWluZGV4OjEwMDsgfSBuYXZ7IC0tZnM6dmFyKC0tZnMxKTsgZm9udC1zaXplOnZhcigtLWZzKTsgfSBuYXYgLm1lbnUtaXRlbSwgbmF2IC5zdWJtZW51LWl0ZW0geyBwYWRkaW5nOnZhcigtLXMpOyB9IG5hdiAubWVudS1pdGVteyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gbmF2IC5tZW51LWl0ZW0uaW52ZXJzZS1jb2xvcnsgY29sb3I6dmFyKC0tbWVudS1ob3Zlci10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWhvdmVyLWJnLWNvbG9yKTsgfSBuYXYgLnN1Ym1lbnUtaXRlbXsgYm9yZGVyLWNvbG9yOnZhcigtLWdyYXkpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtY29sb3ItbW9iLWV4LCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yLW1vYi1leCk7IH0gbmF2IC5zdWJtZW51LWl0ZW0gc3ZnLmljb24geyBmaWxsOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSBuYXYgLm1lbnUtZ3JvdXAgeyBib3JkZXItdG9wLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSBuYXYgLm1lbnUtZ3JvdXAgfiAubWVudS1ncm91cCB7IGJvcmRlci10b3Atd2lkdGg6MDsgfSBuYXYgLm1lbnVDb2xscGFzZSBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfSAjaG9tZW5hdiBuYXZ7IC0tdHh0LWNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYiwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSAjaG9tZW5hdiBuYXYgLm1lbnUtaXRlbXsgYmFja2dyb3VuZDp2YXIoLS10YWItY29sb3ItbW9iLCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3ItbW9iLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyB9ICNob21lbmF2IG5hdiAubWVudS1pdGVtLmludmVyc2UtY29sb3J7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IH0gI2hvbWVuYXYgbmF2IC5zdWJtZW51LWl0ZW17IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSAjaG9tZW5hdiBuYXYgbGl7IHBhZGRpbmctdG9wOnZhcigtLXMtOCk7IH0gI2hvbWVuYXYgbmF2IC5tZW51LWl0ZW17IGJvcmRlci1yYWRpdXM6MC4yNXJlbTsgfSAjaG9tZW5hdiBuYXYgLm1lbnUtaXRlbS5MQU5HVUFHRXsgZGlzcGxheTpub25lOyB9IC5idXJnZXItbWVudS1jb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5idXJnZXJfdG9wIHsgdHJhbnNmb3JtLW9yaWdpbjowIDUwJTsgfSAuYnVyZ2VyX2JvdHRvbSB7IHRyYW5zZm9ybS1vcmlnaW46MCA1MCU7IH0gLmJ1cmdlci1tZW51LWJ1dHRvbiA+IHNwYW4geyB3aWR0aDoxLjZyZW07IGhlaWdodDowLjI1cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2IpOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuNHMgZWFzZTsgei1pbmRleDoxMDE7IH0gI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX3RvcCwgI2JtX2JvdHRvbV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl90b3B7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlKDAuMXJlbSwgMCk7IH0gI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX21pZGRsZSwgI2JtX2JvdHRvbV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9taWRkbGV7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSBzY2FsZSgwLjIsIDAuMik7IH0gI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiAuYnVyZ2VyX2JvdHRvbSwgI2JtX2JvdHRvbV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9ib3R0b217IG9wYWNpdHk6MTsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZSgwLjFyZW0sIDApOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gfiBhc2lkZXsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgxOXJlbSk7IH0gbGFiZWxbZm9yPSJibV90b2dnbGUiXXsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwMjsgfSAudGhpbkxlZnQgLmhlYWRlci1kZWFsZXItbmFtZSB7IGZvbnQtc2l6ZTp2YXIoLS1mczApOyBtYXJnaW4tbGVmdDo4cHg7IH0gLnRoaW5MZWZ0IC5sb2dvLWFjdGlvbiBhIHsgZmxleC1iYXNpczoxNSUgfSBoZWFkZXIudGhpbkxlZnQgYXNpZGUgeyBsZWZ0OnVuc2V0OyByaWdodDowOyB0cmFuc2Zvcm06c2NhbGVYKDApIHRyYW5zbGF0ZVgoMTlyZW0pOyB0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgNTAlOyB9IC50aGluTGVmdCAjYm1fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIH4gYXNpZGV7IHRyYW5zZm9ybTp1bnNldDsgfQovKiogL2Nzcy9za2VsZXRvbi5jc3MgKiovCi5oaWRlT25QcmVMb2FkIHsgdmlzaWJpbGl0eTpoaWRkZW47IH0gLnJldmVhbC1tb2RhbCB7IHZpc2liaWxpdHk6aGlkZGVuOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi0xMDAwcHg7IH0gLnNrZWxldG9uIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6I2VlZTsgfSAuc2tlbGV0b246OmJlZm9yZSB7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjQ7IGNvbnRlbnQ6IiI7IGZvbnQtc2l6ZTowLjc1cmVtOyBsaW5lLWhlaWdodDowLjc1cmVtOyBjb2xvcjojODg4OyBhbmltYXRpb246c2tlbGV0b24tYW5pbSAycyBsaW5lYXIgaW5maW5pdGU7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGxldHRlci1zcGFjaW5nOjAuMjVyZW07IGFsaWduLWl0ZW1zOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBAa2V5ZnJhbWVzIHNrZWxldG9uLWFuaW0geyAwJSB7IGNvbnRlbnQ6IiI7IH0gMjUlIHsgY29udGVudDoifCI7IH0gNTAlIHsgY29udGVudDoifHwiOyB9IDc1JSB7IGNvbnRlbnQ6Inx8fCI7IH0gfSAuc2tlbGV0b24gZGl2OmZpcnN0LWNoaWxkLCAuc2tlbGV0b24gc3BhbjpmaXJzdC1jaGlsZCB7IG9wYWNpdHk6MDsgdHJhbnNpdGlvbjpvcGFjaXR5IC4zMDBzOyB9IC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiB7IGJhY2tncm91bmQ6bm9uZTsgfSAuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIuZml4ZWQgeyB3aWR0aDppbmhlcml0ICFpbXBvcnRhbnQ7IH0gLnNrZWxldG9uLmlzLWxvYWRlZC1ub3cgeyBiYWNrZ3JvdW5kOnVuc2V0OyB9IC5za2VsZXRvbi5pcy1sb2FkZWQtbm93IGRpdjpmaXJzdC1jaGlsZCwgLnNrZWxldG9uLmlzLWxvYWRlZC1ub3cgc3BhbjpmaXJzdC1jaGlsZCB7IG9wYWNpdHk6MTsgfSAuc2tlbGV0b24uaXMtbG9hZGVkLW5vdzo6YmVmb3JlIHsgY29udGVudDoiIjsgZGlzcGxheTpub25lOyBhbmltYXRpb246dW5zZXQ7IH0gLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yLmZpeGVkLmlzLWxvYWRlZC1ub3cgPiBkaXY6Zmlyc3QtY2hpbGQgeyBvcGFjaXR5Oi43NTsgfSAuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIuZml4ZWQuaXMtbG9hZGVkLW5vdyA+IGRpdjpmaXJzdC1jaGlsZDpob3ZlciB7IG9wYWNpdHk6MTsgfQovKiogL2Nzcy9jc3MuY3NzICoqLwpodG1sLCBib2R5LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwgZGVsLCBkZm4sIGVtLCBmb250LCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLCBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gaHRtbHsgZm9udC1zaXplOjFyZW0gOyB9IGJvZHkgeyBwYWRkaW5nOjA7IG1hcmdpbi1sZWZ0OjBweDsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MHB4OyBtYXJnaW4tYm90dG9tOjBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC10ZXh0KTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IGJhY2tncm91bmQ6IHRvcCBjZW50ZXIgbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1nZW5lcmFsLWJnLWNvbG9yKTsgfSBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uIHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC10ZXh0KTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IH0gLm5hdiBsaSBhLnRvcF9saW5rLCAudXBfbWVudSB1bC5uYXYgdWwuc3ViIGxpIGEuc3VidGl0bGUsIC5pbWdfbWVudS51cF9tZW51IHVsLm5hdiAjTWFpbk1lbnVfTkVXPnVsLnN1YiBsaT51bC5zdWI+bGkuaGFzU3ViIGxpIGEsIGJvZHkgLndyYXBwZXIgLnVwX21lbnUgLm5hdnsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1tZW51KTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1tZW51LXdlaWdodCk7IH0gaDF7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDEpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgxLXdlaWdodCk7IGNsZWFyOmJvdGg7IH0gLmZuLm9yZ3sgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMSk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDEtd2VpZ2h0KTsgfSBpbnB1dFt0eXBlPWJ1dHRvbl0sIGJ1dHRvbi5qcVRyYW5zZm9ybUJ1dHRvbiBzcGFuIHNwYW4sIC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLmJ1dHRvbl8zIGEsIC5idXR0b25fdW5kZXIgYSwgLmJ1dHRvbl9jbXBfbGVmdCBhLCAuYnV0dG9uX2NtcF9yaWdodCBhLCAuYnV0dG9uX2NtcF9hY3QgYSwgLnB1bGxvdXRzIGEsIC5pZE5hdjEgbGkgYS50b3BfbGluazEsIC5jdGFfcHJpY2UuYWx0LCAuY3RhX2NyZWRpdC5hbHQsIC5jdGFfdGVzdERyaXZlLCAuY3RhX2V2YWwuYWx0LCAuY3RhX3NlcnZpY2UuYWx0LCAuY3RhX3BhcnRzLmFsdCwgLmN0YV90aXJlcy5hbHQsIC5jdGFfc3ZjcHJvbW8uYWx0LCAuYm94MTUgaDIgYSwgLmJveDE5IGgyIGEsIC5ib3gyNyBhLCAudmlvciwgLmJ0bi1kZWZhdWx0LCAuYnRuLXNtLCAuYnRuLWxnIHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1idXR0b25zKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1idXR0b25zLXdlaWdodCk7IH0gaDIsaDMsaDQsaDUsaDZ7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDIpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IH0gc3Ryb25neyBmb250LXdlaWdodDo5MDAgIWltcG9ydGFudDsgfSAjbWFpbkRpdi53cmFwcGVyIC50b3BfYmd7IG1heC1oZWlnaHQ6MjUwcHg7IG1pbi1oZWlnaHQ6MTE1cHg7IH0gLmhlYWRlci1pbWFnZS13cmFwcGVyIGltZy5pbWFnZS1wYWRkaW5nIHsgcGFkZGluZy1ib3R0b206NXB4OyB9IC5ja2VkaXRvcldyYXBwZXIgaDIgeyBtYXJnaW4tbGVmdDowcHggIWltcG9ydGFudDsgbWFyZ2luLXJpZ2h0OjBweCAhaW1wb3J0YW50OyBtYXJnaW4tdG9wOjE1cHggIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToxNXB4ICFpbXBvcnRhbnQ7IH0gLmNrZWRpdG9yV3JhcHBlciBhIHsgZmxvYXQ6bm9uZSAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowcHggIWltcG9ydGFudDsgZm9udC1zaXplOjEwMCUgIWltcG9ydGFudDsgfSAuY2tlZGl0b3JXcmFwcGVyIHAgeyBmbG9hdDpub25lICFpbXBvcnRhbnQ7IH0gLmNrZWRpdG9yV3JhcHBlciBwOmVtcHR5IHsgbWFyZ2luLWJvdHRvbToxcmVtOyB9IC5yZXNwb25zaXZlLWVkaXRvciAuY29sbGFwc2Uuc2hvdywgLnJlc3BvbnNpdmUtZWRpdG9yIC5jb2xsYXBzZS5zaG93IC5jYXJkLWJvZHkgeyB2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDsgfSBhLmRlc2NyaXB0aW9uLWF1dG8tbGluayB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgIWltcG9ydGFudDsgY29sb3I6aW5oZXJpdDsgfSAuY2tlZGl0b3JXcmFwcGVyIFtkYXRhLW4xZWQtY29sLWJvcmRlci1yaWdodD0idHJ1ZSJdOm5vdChbc3R5bGUqPSJib3JkZXIiXSkgeyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZWUyZTY7IH0gLmNscnsgY2xlYXI6Ym90aDt9IC5mbGVmdHsgZmxvYXQ6bGVmdDsgfSBpbnB1dDppbnZhbGlke2JveC1zaGFkb3c6bm9uZTsgLW1vei1ib3gtc2hhZG93Om5vbmU7fSAuY29uZGl0aW9ucy0tY29udGFpbmVyIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3c7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tYm90dG9tOjhweDsgfSAuY29uZGl0aW9ucy0tY29udGFpbmVyIC5jb25kaXRpb25zIHsgZmxleC1ncm93OjI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE4cHg7IGNvbG9yOiNmZmZmZmY7IH0gLmNvbmRpdGlvbnNGb290ZXJ7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tdG9wOjI1cHg7IGNvbG9yOiNmZmZmZmY7IH0gLmNvbmRpdGlvbnMtLWNvbnRhaW5lciBhLCAuY29uZGl0aW9uc0Zvb3RlciBhIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiNmZmZmZmY7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuZXh0ZW5kZWRQaG9uZVRyaWdnZXIgYXsgY29sb3I6aW5oZXJpdDsgfSAubWFpbkRpdi13cmFwcGVyID4gLmxhbmd1YWdlQmFyLXplcm8geyBtYXJnaW46MDsgaGVpZ2h0OmluaGVyaXQ7IHdpZHRoOjEwMCU7IH0gLmhlYWRlci1zZWN0aW9uIC5sYW5ndWFnZUJhciB7IG1hcmdpbjowIGF1dG8gMi43NXJlbTsgd2lkdGg6aW5oZXJpdDsgfSAuaGVhZGVyLXNlY3Rpb24gLmxhbmd1YWdlQmFyICsgLnBob25lIHsgbWFyZ2luLWJvdHRvbTowLjVyZW07IH0gLmxhbmd1YWdlQmFyIHVsIGE6aG92ZXJ7Zm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjY2NjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IC5sYW5ndWFnZUJhciB1bCBhOnZpc2l0ZWR7cGFkZGluZy1yaWdodDozNXB4OyB3aWR0aDphdXRvOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNjY2NjY2OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB0ZXh0LWFsaWduOnJpZ2h0O30gLmxhbmd1YWdlQmFyLmxhbmd1YWdlQmFyLXplcm8geyBoZWlnaHQ6MDsgcGFkZGluZzowOyBtYXJnaW46MDsgfSAjbWFpbkRpdi53cmFwcGVyLm5vLWljb25zIHsgcGFkZGluZy10b3A6MC4wMXJlbTsgfSAudG9wX3JvdXsgd2lkdGg6OTYwcHg7IGhlaWdodDo0cHg7IGZsb2F0OmxlZnQ7IH0gLmxvZ297IH0gLmxvZ29Ob1BhZGRpbmcgaW1neyB3aWR0aDoxMDAlO30gLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbiwgLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbnsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBmb250LXNpemU6MC43NXJlbSA7IHdpZHRoOjI4cHg7IGhlaWdodDoyNnB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdmVydGljYWwtYWxpZ246dG9wOyBib3JkZXI6MXB4IHNvbGlkICNCNkI3Qjk7IGNvbG9yOiNCNkI3Qjk7IGNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uLmFjdGl2ZSwgLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbjpob3ZlcnsgY29sb3I6I2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojQjZCN0I5OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IH0gLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbjpudGgtY2hpbGQoZXZlbiksIC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b246bnRoLWNoaWxkKGV2ZW4peyBtYXJnaW4tbGVmdDoycHg7IH0gLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbiBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dCwgLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbiBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IH0gLmxvZ29Ob1BhZGRpbmd7IG1heC13aWR0aDo1MCU7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6LTRweDt9IC52LWNhcmQudG9wX2JnIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IH0gLnYtY2FyZC50b3BfYmcuLW10MCAuaGVhZGVyLXNlY3Rpb246bnRoLWNoaWxkKDIpIHsgbWFyZ2luLXRvcDo3NHB4OyB9IC5oZWFkZXItc2VjdGlvbiB7IGRpc3BsYXk6ZmxleDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5oZWFkZXItaW1hZ2Utd3JhcHBlciB7IG1pbi1oZWlnaHQ6OTdweDsgfSAuaGVhZGVyLXNlY3Rpb24uaW1hZ2UgeyB3aWR0aDoyNSU7IH0gLmhlYWRlci1zZWN0aW9uLmltYWdlID4gLmhlYWRlci1pbWFnZS13cmFwcGVyIGltZyB7IG1heC1oZWlnaHQ6MjUwcHg7IH0gLmhlYWRlci1zZWN0aW9uID4gZGl2IHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmhlYWRlci1zZWN0aW9uIC5waG9uZSB7IHdpZHRoOmF1dG87IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmc6MC41cmVtIDA7IH0gLmhlYWRlci1zZWN0aW9uOm50aC1jaGlsZCgyKS5pbWFnZSB7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmhlYWRlci1zZWN0aW9uIC5waG9uZS5waG9uZV9yaWdodHsgdGV4dC1hbGlnbjpyaWdodDsgfSAuaGVhZGVyLXNlY3Rpb24gLnBob25lLnBob25lX2xlZnQgeyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmhlYWRlci1zZWN0aW9uID4gLnYtY2FyZCB7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZXsgZGlzcGxheTpmbGV4OyB9IC5tdWx0aS1hZGRyZXNzLXdyYXBwZXIuZXhjZXB0aW9uU3R5bGUgLm11bHRpLWFkZHJlc3MtLXBob25leyB3aWR0aDphdXRvOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZSAubXVsdGktYWRkcmVzcy0tcGhvbmUgaXsgZm9udC1zaXplOjAuNjI1cmVtIDsgfSAubXVsdGktYWRkcmVzcy13cmFwcGVyLmV4Y2VwdGlvblN0eWxlIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5tdWx0aS1hZGRyZXNzIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7IH0gLm11bHRpLWFkZHJlc3MtLXBob25lIHsgd2lkdGg6MTMzcHg7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IH0gLm11bHRpLWFkZHJlc3MgaSB7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgfSAudG9wX2JnIHRhYmxlIHRib2R5IHRkOm50aC1jaGlsZCgyKSAuaGVhZGVyLXNlY3Rpb24geyB3aWR0aDoxMDAlOyB9IC50b3BfYmcuZGl2VGFibGUgLmhlYWRlci1zZWN0aW9uOm50aC1jaGlsZCgyKSB7IHRleHQtYWxpZ246cmlnaHQ7IH0gLnRvcF9iZyB0YWJsZSB0ZCAuaGVhZGVyLXNlY3Rpb24geyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAucGhvbmUgaDJ7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojNTI1MjUyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5waG9uZSBoMXsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzUyNTI1MjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGhvbmUgZGl2Lm9yZ3sgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzUyNTI1MjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGhvbmVfdGV4dCB7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDoycHg7IHBhZGRpbmctdG9wOjJweDt9IC5waG9uZV90ZXh0IGF7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWxsLWNoYW5nZTp0cmFuc2Zvcm07IHRyYW5zZm9ybS1vcmlnaW46cmlnaHQgY2VudGVyOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjNzIGVhc2U7IH0gLnBob25lX3RleHQgYTpob3ZlcnsgdHJhbnNmb3JtOnNjYWxlKDAuOTMpOyBjb2xvcjojMDA1NzljOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBhLnBob25lLWxpbmsgeyBkaXNwbGF5IDppbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgcGFkZGluZyA6MCAhaW1wb3J0YW50OyBjb2xvciA6aW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uIDpub25lOyB9IGEucGhvbmUtbGluazpob3ZlciB7IGNvbG9yOmluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICNzbGlkZXJ7IHdpZHRoOjk2MHB4OyBtYXJnaW4tbGVmdDowcHg7IGJveC1zaGFkb3c6bm9uZTsgfSAuY2VudGVyZWQge3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUwJTsgdG9wOjUwJTt9IC51cF9tZW51eyB3aWR0aDo5NjBweDsgaGVpZ2h0OjMxcHg7IHotaW5kZXg6MTExMTsgZmxvYXQ6cmlnaHQ7d2hpdGUtc3BhY2U6bm93cmFwOyB9IC5iYW5uZXJ7IHdpZHRoOjk2MHB4OyBoZWlnaHQ6MzAxcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjJweDsgbWFyZ2luLWJvdHRvbTo2cHg7IH0gLm1lX3RvcHsgd2lkdGg6OTY3cHg7IGhlaWdodDo4cHg7IGZsb2F0OmxlZnQ7fSAubWVfYmd7IHdpZHRoOjk2N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZV9iZ19yb3UucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5tZV9kZXNje21hcmdpbjowcHg7aGVpZ2h0OmF1dG87Zm9udC1zaXplOjAuODc1cmVtIDsgb3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NXB4IDE1cHh9IC5tZV9ib3V7IHdpZHRoOjk2N3B4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm9uZXsgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjhweDt9IC50d297IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTRweDsgbWFyZ2luLXRvcDo4cHg7fSAudGhyZWV7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTRweDsgbWFyZ2luLXRvcDo4cHg7fSAuZm91cnsgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo0cHg7IG1hcmdpbi10b3A6NHB4O30gLlZvdXN7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IGNvbG9yOiMwNTE0MWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbToycHg7fSAuY2xhc3N7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbTowcHg7IHBhZGRpbmctdG9wOjZweDt9IC5jbGFzczF7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyBoZWlnaHQ6MTU3cHg7IG1hcmdpbi10b3A6NnB4O30gLmJvcmRlcntib3JkZXI6MXB4IHNvbGlkICNkM2QzZDM7IHdpZHRoOjIxOHB4O30gLmJveHsgd2lkdGg6NzVweDsgaGVpZ2h0OjczcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLXRvcDoxMHB4OyBtYXJnaW46MCBhdXRvO30gLmNhe2hlaWdodDoxNDNweDt9IC5ib3gyMjV7IHdpZHRoOjIyNXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206M3B4O30gLmJveDIyNHsgd2lkdGg6MjI1cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctYm90dG9tOjZweDt9IC5ib3gyMjN7IHdpZHRoOjIyNXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDozcHg7fSAubm9zeyB3aWR0aDo3MTBweDsgaGVpZ2h0OjEwMCU7IG1hcmdpbi10b3A6NXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4O30gLm5vc190b3B7IHdpZHRoOjcxNnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm5vc19iZ3sgd2lkdGg6NzE2cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL25vc19iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC15O30gLm5vc19ib3V7IHdpZHRoOjcxNnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm5vc190ZXh0e2hlaWdodDozMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuYXJvd3sgd2lkdGg6Njk1cHg7IGhlaWdodDoxNjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NHB4O30gLmNvbnsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzNjM2MzYzt9IC5kZXNjIHttYXgtd2lkdGg6MTAwJTt9IC5kZXNjX2JnIHt3aWR0aDoxMDAlOyBoZWlnaHQ6MjQ4cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL25vc19iZy5wbmciKSByZXBlYXQteSBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7fSAuYWRkcnttYXJnaW4tdG9wOjI1cHg7fSAuYWRkcl9taWR7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZV9iZ19yb3UucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5oaWRkZW57ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fSAuaG91cnNfcmVtIHsgdGV4dC1hbGlnbjpyaWdodDtsaW5lLWhlaWdodDoxOHB4OyBmbG9hdDpyaWdodDtwYWRkaW5nLXJpZ2h0OjE1cHg7IH0gLmhvdXJzX3JlbSBheyBmb250LXNpemU6MC42ODhyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAjbHt3aWR0aDo2MHB4OyBmbG9hdDpsZWZ0O30gLmRlcnt3aWR0aDo0NjBweDsgaGVpZ2h0OjI1NXB4OyBtYXJnaW4tdG9wOjFweDsgZmxvYXQ6bGVmdDt9IC5kZXJfdG9weyB3aWR0aDo0NjRweDsgaGVpZ2h0OjhweDsgZmxvYXQ6bGVmdDt9IC5kZXJfYmd7IHdpZHRoOjQ0NHB4OyBoZWlnaHQ6MjI2cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGVyX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6NnB4IDEwcHggMTBweCAxMHB4O30gLmRlcl9ib3V7IHdpZHRoOjQ2NHB4OyBoZWlnaHQ6OHB4OyBmbG9hdDpsZWZ0O30gLmRlbXt3aWR0aDo0OTVweDsgaGVpZ2h0OjI1NXB4OyBtYXJnaW4tdG9wOjNweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1ib3R0b206NnB4O30gLnNib3gxeyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuc2JveDJ7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MTIzcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCA1cHggMTBweCA1cHh9IC5zYm94M3sgd2lkdGg6MjQwcHg7IGhlaWdodDoxMjNweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDVweCAxMHB4IDVweH0gLnNib3g0eyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuYm90dG9tNGJveGVze2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO30gLmJvdHRvbTRib3hlcyAqIHtib3gtc2l6aW5nOmJvcmRlci1ib3g7fSAuYm90dG9tNGJveGVzID4gLmJveDI0NXtmbG9hdDpsZWZ0O3dpZHRoOjI1JTttYXgtd2lkdGg6MjQ1cHg7fSAuYm90dG9tNGJveGVzID4gLmJveDI0MXtmbG9hdDpsZWZ0O21hcmdpbjoxMHB4IDZweDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQxOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjBweDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQxOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjBweDt9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLmJvdHRvbTRib3hlcyB0YWJsZSB7IHBhZGRpbmc6MCAxMHB4OyB9IH0gLnNib3hVc2VkeyBmbG9hdDpsZWZ0OyB9IC5zYm94X3RvcHsgd2lkdGg6MjQ3cHg7IGhlaWdodDo1cHg7IGZsb2F0OmxlZnQ7fSAuc2JveF9iZ3sgd2lkdGg6MjQ3cHg7IGhlaWdodDoxMDdweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9zYm94X2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyO30gLnNib3hfYm91eyB3aWR0aDoyNDdweDsgaGVpZ2h0OjVweDsgZmxvYXQ6bGVmdDt9IC5kYXsgbWFyZ2luLXRvcDoxMnB4O30gLmRhMXsgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5kYTEgaDF7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpub3JtYWw7fSAuYWRkbGluZXsgY29sb3I6IzA1MTQxZiFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI3JldHVyblBvcHVwTmV4dE1vZGVseyBoZWlnaHQ6NDBweCFpbXBvcnRhbnQ7IH0gLmFkZGxpbmU6OmJlZm9yZSwgLmFkZGxpbmU6OmFmdGVyIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBjb250ZW50OiIiOyBkaXNwbGF5OmlubGluZS1ibG9jazsgaGVpZ2h0OjFweDsgcG9zaXRpb246cmVsYXRpdmU7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgd2lkdGg6NTAlOyB9IC5hZGRsaW5lOmJlZm9yZSB7IHJpZ2h0OjAuNWVtOyBtYXJnaW4tbGVmdDotNTAlOyB9IC5hZGRsaW5lOmFmdGVyIHsgbGVmdDowLjVlbTsgbWFyZ2luLXJpZ2h0Oi01MCU7IH0gLnNib3gxIGEuY0xpbmssIC5zYm94MiBhLmNMaW5rLCAuc2JveDMgYS5jTGluaywgLnNib3g0IGEuY0xpbmt7IGRpc3BsYXk6YmxvY2s7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuc2JveDEgYS5jTGluazpob3ZlciwgLnNib3gyIGEuY0xpbms6aG92ZXIsIC5zYm94MyBhLmNMaW5rOmhvdmVyLCAuc2JveDQgYS5jTGluazpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbi1jZXJ0LCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uIC5ib3JkZXJfYm94IHsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiBhLCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uLWNlcnQgYSB7IGNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiAuYm9yZGVyX2JveCwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbi1jZXJ0IC5ib3JkZXJfYm94IHsgYmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyBjb2xvcjppbmhlcml0OyB9IC5ibGFja190ZXh0eyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzE5MTkxOTsgbWFyZ2luLWJvdHRvbTo0cHg7fSAuZ3JheV90ZXh0eyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMTkxOTE5O30gLmJ1dHsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjowcHggMHB4IDBweCAwcHg7fSAubGluZXsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2QyZDJkMjsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1ib3R0b206NXB4O30gLnZpdnsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiNmZmY7IGNvbG9yOiNmZmZmZmY7IHRleHQtYWxpZ246anVzdGlmeTt9IC50d3sgd2lkdGg6MjYwcHg7IGhlaWdodDo0MHB4OyBmbG9hdDpyaWdodDsgbWFyZ2luLXRvcDo1cHg7IHRleHQtYWxpZ246cmlnaHQ7fSAuRU5HTElTSCAudml2e3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7fSAuTWFpbkJveExheWVyIC52aXYgeyBtYXJnaW4tbGVmdDowOyB9IC5zb2NpYWwtc2hhcmluZ3sgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6NXB4OyB9IC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWx7IGZsb2F0OnJpZ2h0OyBwYWRkaW5nLWxlZnQ6NXB4OyB9IC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWw6bGFzdC1jaGlsZHsgcGFkZGluZy1sZWZ0OjA7IH0gLnNvY2lhbC1zaGFyaW5nID4gZGl2LnNvY2lhbDpmaXJzdC1jaGlsZHsgcGFkZGluZy1yaWdodDo1cHg7IH0gLk1haW5Cb3hMYXllciAuc29jaWFsLXNoYXJpbmcgPiBkaXYuc29jaWFsOmZpcnN0LWNoaWxkeyBwYWRkaW5nLXJpZ2h0OjA7IH0gI2Zvb3RlckRpdiAuYWRkLCAjZm9vdGVyRGl2IC5hZGQgYSB7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgfSAjZm9vdGVyRGl2IC5hZGQgLm9yZ3sgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAucG91cnsgd2lkdGg6NzI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLnBhZ2Vub3t3aWR0aDoyMzZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjVweDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpub3JtYWw7IG1hcmdpbi10b3A6MTBweDsgfSAucGFnZW5vIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjAgMCAxNXB4IDA7IHBhZGRpbmc6MDsgd2lkdGg6MjM2cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAucGFnZW5vIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7ZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgd2lkdGg6MjM2cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5wYWdlbm8gdWwgbGkgYXsgd2lkdGg6MjM3cHg7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAucGFnZW5vIHVsIGxpIHNwYW4sIC5wYWdlbm8gdWwgbGkgYS5mdGl0bGV7IHdpZHRoOjIzNnB4OyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I2ZmZjsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWFsaWduOmxlZnQ7IH0gLnBhZ2VubyB1bCBsaSBhLmZ0aXRsZTpob3ZlcnsgbWFyZ2luLWJvdHRvbToxMHB4O30gLnBhZ2VubyB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDoxOHB4O30gLnBhZ2VubyBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBjb2xvcjojOTE5MTkxOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgbGluZS1oZWlnaHQ6MThweDt9IC5FTkdMSVNIIC5wYWdlbm8gdWwgbGkgYXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO30gLmFkZHsgd2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojOTE5MTkxOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOnJpZ2h0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBtYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O30gLmNvcHl7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM5MTkxOTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tdG9wOjI1cHg7fSAuY29weSBheyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojOTE5MTkxOyBmb250LXdlaWdodDpub3JtYWx9IC5jb3B5IGE6aG92ZXJ7IGNvbG9yOiNkNGQ0ZDQ7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuZm9vdGVyLWxpc3RzIGxpID4gc3BhbiB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gI2Zvb3RlcldyYXBwZXIgLnYtY2FyZC5hZGQgeyBsaW5lLWhlaWdodDppbml0aWFsOyB9ICNmb290ZXIgLmZvb3Rlci10aXRsZSB7IGZvbnQtc2l6ZTp2YXIoLS1mczQpOyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wsIHZhcigtLXdoaXRlKSk7IH0gLkVOR0xJU0ggI2Zvb3RlciAuZm9vdGVyLXRpdGxlIHsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjZm9vdGVyID4gLmZsZXgtYm94ID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgeyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1yaWdodDp2YXIoLS1zNSk7IH0gI2Zvb3RlciA+IC5mbGV4LWJveCA+IC5mb290ZXItbG9nb19fY29udGFpbmVyIGltZyB7IG1heC13aWR0aDoxMDAlOyBtYXgtaGVpZ2h0OjE1MHB4OyB9IC5zb2NpYWwtbWVkaWEtaWNvbnMgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOnJvdzsganVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5kZWFsZXItYWxpZ24tbGVmdCAuc29jaWFsLW1lZGlhLWljb25zIHsgdGV4dC1hbGlnbjpsZWZ0OyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgfSAuc29jaWFsLW1lZGlhLWljb25zIC5zb2NpYWwtaWNvbnMgeyB3aWR0aCA6YXV0bzsgaGVpZ2h0OmF1dG87IG1hcmdpbjowIDRweDsgfSAjZm9vdGVyIGEuc29jaWFsLWxpbmsgPiBzdmcgeyBoZWlnaHQ6MjJweDsgbWFyZ2luLWxlZnQ6M3B4OyB9IGhlYWRlciAuaGVhZGVyLXNvY2lhbCAjc29jaWFsX21lZGlhX2ljb25zX2RpdiA+IGEgPiBzdmcgeyBoZWlnaHQ6MjFweDsgbWFyZ2luLXRvcDo0cHg7IH0gLnNvY2lhbC1tZWRpYS1pY29ucyAuc29jaWFsLWljb25zIC5mYWIgeyBtYXJnaW4tdG9wOjA7IGZvbnQtc2l6ZSA6MS45ZW07IGNvbG9yIDp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5kaXZTcGFuLmRpdlNwYW4zID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgeyBtYXJnaW4tdG9wOjFyZW07IHRleHQtYWxpZ246cmlnaHQ7IH0gLmRlYWxlci1hbGlnbi1sZWZ0IC5mb290ZXItbG9nb19fY29udGFpbmVyIHsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5kaXZTcGFuLmRpdlNwYW4zID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgaW1nIHsgbWF4LXdpZHRoOjE4MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLmhlYWRlci1zZWN0aW9uIC5waG9uZS5waG9uZV9sZWZ0IHsgcGFkZGluZy1sZWZ0OjEwcHg7IH0gI2Zvb3RlciB7IHBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IH0gfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTk5cHgpIHsgI01haW5NZW51X1NFQVJDSF9CQVIgeyBkaXNwbGF5Om5vbmU7IH0gLnVwX21lbnUgdWwubmF2ID4gbGkuZmlyc3RNZW51IHsgcGFkZGluZy1sZWZ0OjEwcHg7IH0gLnVwX21lbnUgdWwubmF2ID4gbGk6bnRoLW9mLXR5cGUoMikgeyBwYWRkaW5nLXJpZ2h0OjEwcHg7IH0gLnVwX21lbnUgdWwubmF2ID4gbGk6bnRoLW9mLXR5cGUoMikgPiB1bC5zdWIgeyByaWdodDoxMHB4OyB9IC5sYW5ndWFnZUJhciBkaXY6Zmlyc3Qtb2YtdHlwZSB7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5tZW51NyAuZmluYW5jZS1tZW51LWZyZWVjcmVkaXQuY2VudGVyIHsgcmlnaHQ6LTE2MHB4ICFpbXBvcnRhbnQ7IGxlZnQ6YXV0bzsgfSAubWVudTggLmZpbmFuY2UtbWVudS1mcmVlY3JlZGl0LmNlbnRlciB7IHJpZ2h0Oi0xNjBweCAhaW1wb3J0YW50OyBsZWZ0OmF1dG87IH0gLm1lbnU1IC5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdC5jZW50ZXIgeyByaWdodDotMzAwcHggIWltcG9ydGFudDsgbGVmdDphdXRvOyB9IH0gLmRpdlNwYW4ucGFnZW5vIHsgbWFyZ2luLWxlZnQ6MDsgfSAuZGl2U3Bhbi5wYWdlbm8gdWwgbGkgc3BhbiwgLmRpdlNwYW4ucGFnZW5vIHVsIGxpIGEuZnRpdGxlIHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWF4LXdpZHRoOjIyNXB4OyB9IC5kaXZTcGFuLnBhZ2VubyB1bCBsaSBhIHsgZm9udC1zaXplOjAuODc1cmVtIDsgfSAuYWRyIHsgbGluZS1oZWlnaHQ6MS4ycmVtOyBtYXJnaW46MC41cmVtIDA7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuZm9vdGVyLXRpdGxlX19jb250YWluZXIgeyBtYXJnaW4tYm90dG9tOjJyZW07IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuZGl2U3BhbjMgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjE1cHg7IHBhZGRpbmctcmlnaHQ6MzBweDsgdGV4dC1hbGlnbjpsZWZ0OyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLmRpdlNwYW45IHsgZmxvYXQ6cmlnaHQ7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuc29jaWFsLXNoYXJpbmcgeyBmbG9hdDp1bnNldDsgY2xlYXI6dW5zZXQ7IG1hcmdpbjowOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLnNvY2lhbCB7IGZsb2F0OmxlZnQ7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tcmlnaHQuZGVhbGVyLWFsaWduLWxlZnQgLnNvY2lhbC1zaGFyaW5nIHsgd2lkdGg6MjUlOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6NzUlOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLXJpZ2h0LmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWwgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxcmVtOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLXJpZ2h0LmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWw6Zmlyc3QtY2hpbGQgeyBtYXJnaW46MDsgcGFkZGluZzowOyB9ICNmb290ZXIgLmljb24tdGV4dHsgbWFyZ2luLWJvdHRvbTouNHJlbTsgfSAjZm9vdGVyIC5pY29uLXRleHQgc3Bhbnsgd2lkdGg6MjBweDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI2Zvb3RlciAuZm4ub3JnIHsgbGluZS1oZWlnaHQ6Mi4wNjI1cmVtOyB9IC5zbWFsbHBpY19ib3h7d2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MDt9IC5zbWFsbHBpYzQze3dpZHRoOjQzcHg7IGhlaWdodDozMXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA1cHggMCAwOyBib3JkZXI6MnB4IHNvbGlkICNGRkZGRkY7fSAuZGV0YWlsc3t3aWR0aDo4MXB4OyBoZWlnaHQ6MzBweDsgZGlzcGxheTpibG9jazsgfSBhLmRldGFpbHN7d2lkdGg6ODFweDsgaGVpZ2h0OjMwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGV0YWlscy5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IGE6aG92ZXIuZGV0YWlsc3t3aWR0aDo4MXB4OyBoZWlnaHQ6MzBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kZXRhaWxzLnBuZykgbGVmdCAtMzJweCBuby1yZXBlYXQ7fSAuYmlnX3BpY2JveHttaW4taGVpZ2h0OjExMHB4O3dpZHRoOjE0NnB4O30gLmJpZ19waWNib3ggaW1neyBkaXNwbGF5OmJsb2NrOyB9IC5waWNib3hfdmlkZW9idG5fZW4sIC5waWNib3hfdmlkZW9idG5fZnIge2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjQ1cHg7fSAucGljYm94X3ZpZGVvYnRuX2VuIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZW4ucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2ZyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZnIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2VuOmhvdmVyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZW5faG92ZXIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2ZyOmhvdmVyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZnJfaG92ZXIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAuYmlnX3BpY2JveF93cmFwcGVyIHsgd2lkdGg6MTQ2cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDEwcHggMHB4IDIxcHg7IH0gLnRleHRfdGl0bGUgYXsgZGlzcGxheTpibG9jazt0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBtYXJnaW46MDsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxOyBmb250LXdlaWdodDpib2xkO30gLnRleHRfdGl0bGUye3dpZHRoOjMyOXB4OyBoZWlnaHQ6MzJweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxO30gLnNvbGRfY2FyX25vdGV7YmFja2dyb3VuZC1jb2xvcjojMUUxRTFFOyBib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgY29sb3I6I0ZGRjsgd2lkdGg6MTAwJTsgcGFkZGluZzoxMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjE1cHg7fSAuc29sZF9jYXJfbm90ZSBhIHtjb2xvcjojRkZGO30gLnNvbGRfY2FyX25vdGUgYTpob3ZlciB7Y29sb3I6I0JCQjt9IC50ZXh0X3RpdGxlM3t3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDsgcGFkZGluZy1ib3R0b206N3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDg0ODQ4O30gLnRleHRfYm94Mnt3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDBweCAwcHggMHB4OyB9IC5tYWluX3BpY2JveHt3aWR0aDo2NzFweDsgbWluLWhlaWdodDoxNzBweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lLnBuZykgbGVmdCBib3R0b20gcmVwZWF0LXg7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjA7IG1hcmdpbjowIDt9IC5ib3gyX2RldGFpbHNfZm9vdGVyMnt3aWR0aDo2ODFweDsgaGVpZ2h0OjE1cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3gyX2RldGFpbHNfbWlkRXh7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGJhY2tncm91bmQ6bm9uZTsgcGFkZGluZzowIDBweDtoZWlnaHQ6ODVweDt9IC5ib3gyX2RldGFpbHNfdGV4dCBzcGFueyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5ib3gyX2RldGFpbHNfZm9vdGVyMjJ7d2lkdGg6OTcxcHg7IGhlaWdodDoxNXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjk3MXB4IGF1dG87fSAuYm94MTcwe3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjY3MXB4OyBtaW4taGVpZ2h0OjE3MHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpbmUucG5nKSBsZWZ0IGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjA7IG1hcmdpbjowIDBweCAxMHB4IDA7fSAuY3VzdG9tQm94QmFzaWN7IHdpZHRoOjI0MXB4OyBoZWlnaHQ6MTE2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDAgMCAwOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZToyNDFweCAxMjFweDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6IzE5MTkxOTsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IH0gLmN1c3RvbUJveEJhc2ljOmhvdmVyeyBjb2xvcjojZmZmOyB9IC5jdXN0b201IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyMl9ob3Zlci5wbmcpOyB9IC5jdXN0b201NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjIucG5nKTsgfSAuY3VzdG9tNjY1IHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3gyM19ob3Zlci5wbmcpOyB9IC5jdXN0b202NjU1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyMy5wbmcpOyB9IC5jdXN0b202NzUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI3LnBuZyk7IH0gLmN1c3RvbTY3NTUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI3X2hvdmVyLnBuZyk7IH0gLmN1c3RvbTY4NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjgucG5nKTsgfSAuY3VzdG9tNjg1NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjhfaG92ZXIucG5nKTsgfSAuaW1hZ2VfcmliYm9uIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTVweDsgdG9wOi00cHg7IHotaW5kZXg6MTsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxMTJweDsgaGVpZ2h0OjExMnB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5pbWFnZV9yaWJib24gc3BhbiB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNmZmZmZmY7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyOHB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyB3aWR0aDoxNDhweDsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDojMDUxNDFmOyBib3gtc2hhZG93OjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjMwcHg7IGxlZnQ6LTMwcHg7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgIzA1MTQxZjsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMwNTE0MWY7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDozcHggc29saWQgIzA1MTQxZjsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMwNTE0MWY7IH0gLmltYWdlX3JpYmJvbl92ZHAgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDotNXB4OyB0b3A6LTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxOTRweDsgaGVpZ2h0OjE5NHB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB6LWluZGV4OjQwOyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW4geyBmb250LXNpemU6MS4wNjNyZW0gOyBjb2xvcjojZmZmZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzZweDsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgd2lkdGg6MjczcHg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6IzA1MTQxZjsgYm94LXNoYWRvdzowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo2N3B4OyBsZWZ0Oi01MXB4OyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW46OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCAjZmZmZmZmOzsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNmZmZmZmY7OyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW46OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjZmZmZmZmOzsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNmZmZmZmY7OyB9IC5yaWJib24tY29udGFpbmVyIHsgd2lkdGggOjMwMHB4OyBoZWlnaHQgOjMwMHB4OyBvdmVyZmxvdyA6aGlkZGVuOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbiB7IHotaW5kZXggOjU1NTsgbWFyZ2luIDowOyBwYWRkaW5nIDowLjVyZW0gMCAhaW1wb3J0YW50OyBib3gtc2hhZG93IDowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgZm9udC1zaXplIDoxN3B4OyBsaW5lLWhlaWdodCA6MjNweDsgdGV4dC1hbGlnbiA6Y2VudGVyOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgdHJhbnNmb3JtIDp0cmFuc2xhdGVYKC0zMCUpIHRyYW5zbGF0ZVkoMCUpIHJvdGF0ZSgtNDVkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luIDp0b3AgcmlnaHQ7IGJhY2tncm91bmQgOiMwNTE0MWY7IGNvbG9yIDojZmZmZmZmOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSwgLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyBjb250ZW50IDoiIjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IG1hcmdpbiA6MCAtMXB4OyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDoxMDAlOyBiYWNrZ3JvdW5kIDojMDUxNDFmOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSB7IGxlZnQ6MTAwJTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjphZnRlciB7IHJpZ2h0OjEwMCU7IH0gLnNlYXJjaHJpZ2h0IHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6bm9ybWFsO2N1cnNvcjpwb2ludGVyOyB9IC5zZWFyY2hyaWdodGhvdmVyIHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IG1hcmdpbjowIDAgMCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0LXNlYXJjaC1ib3gtaG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IH0gLnNlYXJjaHJpZ2h0WFhYIHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdCAjMDAwMDAwOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDtjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSAuc2VhcmNocmlnaHRob3ZlclhYWCB7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MTE2cHg7IHBhZGRpbmc6NXB4IDAgMCAwOyBtYXJnaW46MCAwIDAgMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodC1zZWFyY2gtYm94LWhvdmVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0ICMwMDAwMDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSAuc2VhcmNocmlnaHQtdGV4dHsgbWFyZ2luLWxlZnQ6MTAwcHg7IHRleHQtYWxpZ246bGVmdDsgd2lkdGg6NjAlOyB9IC5zZWFyY2hyaWdodC10ZXh0IHB7IG1hcmdpbjoxNXB4IDAgMDsgfSAucGFnZW5vMntoZWlnaHQ6MjRweDsgfSAucGFnZW5vMiB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLnBhZ2VubzIgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTppbmxpbmU7fSAucGFnZW5vMiB1bCBsaSBheyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojYjNiNGI1OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLnBhZ2VubzIgdWwgbGkgYTpob3ZlcnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6IzI4MjgyODsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5wYWdlbm8yIGxpIGEuYWN0aXZleyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojMjgyODI4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLm1haW5fYm94e3dpZHRoOjk2MHB4OyBtYXJnaW46MCBhdXRvO30gLm1haW5fbGVmdF9ib3h7d2lkdGg6NjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O3BhZGRpbmctcmlnaHQ6MTBweDt9IC5tYWluX2xlZnRfYm94IHVse3BhZGRpbmc6MHB4O30gLmJveF9taWRfcm91bmQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzpub25lOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLXRvcDoxMHB4OyB9IC5ib3hfdG9wX3JvdW5kIHsgZGlzcGxheTpub25lOyB9IC5ib3gyX2RldGFpbHNfZm9vdGVyMiB7IGRpc3BsYXk6bm9uZTsgfSAuZGV0YWlsc19ib3ggaW1nLnZpcHsgbWFyZ2luLXRvcDotNDhweDsgd2lkdGg6MTQwcHg7IGJvcmRlcjoxcHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9IC5ib3hfdG9wX3JvdW5kMnt3aWR0aDo5NzFweDsgaGVpZ2h0OjE1cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6OTcxcHggYXV0bzsgbWFyZ2luLXRvcDo1cHg7fSAuYm94X21pZF9yb3VuZDJ7d2lkdGg6OTcxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTtiYWNrZ3JvdW5kLXNpemU6OTcxcHggYXV0bzsgcGFkZGluZzowIDVweDt9IC5wYWdlX25hbWV7d2lkdGg6NjUwcHg7IGhlaWdodDozMHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5wYWdlX25hbWUgYXsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGFnZV9uYW1lIGE6aG92ZXJ7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWM7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSB0YWJsZS52ZWhpY2xlTGlzdFRhYmxlIGF7ZGlzcGxheTp0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGluZS1oZWlnaHQ6MS4yO30gdGFibGUudmVoaWNsZUxpc3RUYWJsZSBhOmhvdmVye2Rpc3BsYXk6dGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuMjt9IC5Qb3JzY2hlMnt3aWR0aDoxMDAlO2hlaWdodDozMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDIwcHggMjFweDsgbWFyZ2luOjE1cHggMCAyNXB4IDA7IGxpbmUtaGVpZ2h0OjMxcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7ZGlzcGxheTppbmxpbmV9IC5Qb3JzY2hlMiBoMXtmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAuVHJpZXJwYXJ7IGZvbnQtc2l6ZTowLjc1cmVtIDsgY29sb3I6IzVCNjk5QzsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo1cHg7fSAuc2VsZWN0ZWRfYm94Mnt3aWR0aDoxNzVweDsgaGVpZ2h0OjMxcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbWFyZ2luOjE1cHggMDsgbGluZS1oZWlnaHQ6MzFweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5zZWxlY3RlZF9vcmRlcmJ5e3dpZHRoOjEzNXB4OyBmbG9hdDpyaWdodDsgcGFkZGluZzowIDBweCAwcHggMHB4OyBtYXJnaW46MTBweCAxMHB4IDBweCAwcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAucHJpeHt3aWR0aDo3OXB4OyBoZWlnaHQ6NzhweDsgZmxvYXQ6bGVmdDsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTE7IG1hcmdpbi10b3A6LTRweDsgbWFyZ2luLWxlZnQ6LTRweDsgdG9wOjBweDt9IC5wYWdlbm81e3dpZHRoOjEwMCU7IGhlaWdodDoyNHB4OyBtYXJnaW46MzBweCAwIDIwcHggMHB4OyBwYWRkaW5nOjA7IGZsb2F0OmxlZnQgfSAucGFnZW5vNnt3aWR0aDoyNTRweDsgaGVpZ2h0OjI0cHg7IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246cmlnaHQ7fSAuc3VpdmFudHt3aWR0aDoyODBweDsgaGVpZ2h0OjE5cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjVweDt9IC5tYWluX3JpZ2h0X2JveHt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7fSAuYm94N3t3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5ib3g3TGlua3t3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5ib3g3X21pZHt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MCAycHg7fSAuYm94N19taWRfZnVsbHt3aWR0aDo5NTZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6bm9uZSBsZWZ0IHRvcCBuby1yZXBlYXQgMCAwIHRyYW5zcGFyZW50OyBwYWRkaW5nOjAgMnB4IDE1cHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNCQkI7fSAuc2ltdWxhcl92X2JveHsgd2lkdGg6MjY1cHg7IHBhZGRpbmc6MHB4IDBweCA1cHggMTBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJveFNlYXJjaE5ld3N7bWFyZ2luLXRvcDotM3B4O21hcmdpbi1sZWZ0Oi01cHg7d2lkdGg6Mjg1cHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X3RvcF8yODAucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94U2VhcmNoTmV3c19taWR7bWFyZ2luLWxlZnQ6LTVweDtwYWRkaW5nOjBweDt3aWR0aDoyODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfbWlkXzI4MC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyB9IC5ib3hTZWFyY2hOZXdzX2Zvb3RlcjE1e21hcmdpbi1sZWZ0Oi01cHg7d2lkdGg6Mjg1cHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X2Zvb3Rlcl8yODAucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94N0hfbWlke3dpZHRoOjI4MHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWJvdHRvbTo2cHg7fSAuUmVjaGVyY2hlMjJ7aGVpZ2h0OjIwcHg7IHBhZGRpbmc6MTBweCA3cHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwNTE0MWY7fSAuc2ltVGl0bGV7aGVpZ2h0OmF1dG87IHBhZGRpbmc6MHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmJveDh7d2lkdGg6MjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMHB4IDEwcHg7fSAuYm94OXt3aWR0aDoyMHB4OyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmJveDExe3dpZHRoOjEwMHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo3cHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDoxOHB4O30gLmJveDEye3dpZHRoOjEzMHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo3cHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDoxOHB4O30gLnNlbGVjdF9ib3gxNHtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMTBweCAwcHggMHB4OyBtYXJnaW4tYm90dG9tOjNweDt9IC5zZWxlY3RfYm94MTZ7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMHB4IDEwcHg7IG1hcmdpbi1ib3R0b206M3B4O30gLnNlbGVjdF9ib3gxNXtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDEwcHggMHB4IDEwcHg7IG1hcmdpbi1ib3R0b206MTBweDt9IC5zZWxlY3RfYm94MTE1e3dpZHRoOjExNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDBweCAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuc2VsZWN0X2JveDgwe3dpZHRoOjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMHB4IDBweDsgbWFyZ2luLWJvdHRvbToxMHB4O30gLmFfdGV4dHt3aWR0aDoyMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDozMXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowIDVweDt9IC5ham91dGVye3dpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgYmFja2dyb3VuZC1jb2xvcjojMWYxZjFmO21hcmdpbjo1cHggMCAxMHB4IDBweDt9IC5ham91dGVyX2F7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvc2VhcmNoLWRvd24tYXJyb3cucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IDNweCB0cmFuc3BhcmVudDsgcGFkZGluZy1sZWZ0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ham91dGVyX2FfZnVsbHtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9zZWFyY2gtcmlnaHQtYXJyb3cucG5nIikgbm8tcmVwZWF0IHNjcm9sbCByaWdodCAtMXB4IHRyYW5zcGFyZW50OyBwYWRkaW5nLXJpZ2h0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ib3gxM3t3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMHB4IDEwcHg7fSAuaW5wdXRfYm94Mnt3aWR0aDoyMHB4OyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmlucHV0X3RleHR7IHdpZHRoOjE5NXB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzozcHggMHB4IDdweCA1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IGxpbmUtaGVpZ2h0OjE4cHg7IH0gLmJ1dHRvbl9ib3gye3dpZHRoOjI2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSAuYnV0dG9uX2JveFMyeyB3aWR0aDoyNDZweDsgaGVpZ2h0OjI5cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAzcHggMTNweCAzcHg7IH0gLmJveC1mb290ZXIxNXt3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmRpc3sgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgd2lkdGg6MjQwcHg7fSAuZGlzX2N1c3RvbXsgd2lkdGg6MjQwcHg7d2lkdGg6MjQwcHg7fSAuZGlzX3RvcHsgd2lkdGg6MjQ2cHg7IGhlaWdodDo5cHg7IGZsb2F0OmxlZnQ7fSAuZGlzX3RvcF9jdXN0b217IHdpZHRoOjIzOHB4OyBoZWlnaHQ6NDBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzAwMDAwMDsgYmFja2dyb3VuZDojY2JjYmNiO30gLmRpc19iZ3sgd2lkdGg6MjQ2cHg7IGhlaWdodDoxNTBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5fZGlzX2JneyB3aWR0aDoyNDBweDsgaGVpZ2h0OjIwMHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4O30gLmRpc19iZ19jdXN0b217IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5fZGlzX2JnX2N1c3RvbXsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmRpc19ib3V7IHdpZHRoOjI0NnB4OyBoZWlnaHQ6NTBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJkMmQyZDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYm91LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLl9kaXNfYm91eyB3aWR0aDoyNDBweDsgaGVpZ2h0OjM4cHg7IGZsb2F0OmxlZnQ7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IG1hcmdpbi10b3A6MTRweDsgY29sb3I6IzJkMmQyZDs7IH0gLmRpc19ib3VfY3VzdG9teyB3aWR0aDoyMzhweDsgaGVpZ2h0OjUwcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjVweDsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZDojZmZmZmZmO30gLl9kaXNfYm91X2N1c3RvbXsgd2lkdGg6MjQwcHg7IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMDUxNDFmOyBib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4OyBtYXJnaW4tdG9wOjEycHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuZGlzX2JvdV8yeyB3aWR0aDoyNDZweDsgaGVpZ2h0OjlweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJkMmQyZDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYm91XzIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuZGlzX3RleHR7IGZvbnQtc2l6ZToxLjQzOHJlbSA7IHBhZGRpbmc6NHB4IDBweCAwcHggMTVweDt9IC5sdW5kaV90ZXh0eyBmb250LXNpemU6MC44MTNyZW0gOyBwYWRkaW5nOjJweCAwcHggMHB4IDIwcHg7IGxpbmUtaGVpZ2h0OjE0cHg7fSAubHVuZGlfdGV4dF9ob21lcGFnZV9oMjQ4e2ZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE4cHg7IHBhZGRpbmc6MTBweCAwIDAgMjBweDsgfSAubHVuZGlfdGV4dCB0aHt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6bm9ybWFsO3dpZHRoOjYwcHg7fSAubHVuZGlfdGV4dCB0ZHt0ZXh0LWFsaWduOmxlZnQ7fSAucHsgaGVpZ2h0OjE2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6N3B4IDVweCAwcHggMTBweDsgZm9udC1zaXplOjAuODEzcmVtIDt9IC5leyBoZWlnaHQ6MTZweDsgZmxvYXQ6cmlnaHQ7IHBhZGRpbmc6N3B4IDBweCAwcHggMHB4OyBmb250LXNpemU6MC44NzVyZW0gO30gLmJveDI4OCwgLmJveDI4OF9jdXN0b217d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB9IC5fYm94Mjg4LCAuX2JveDI4OF9jdXN0b217d2lkdGg6MjgwcHg7IGZsb2F0OmxlZnQ7IH0gLmJveDI4OFVzZWR7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDowcHg7fSAuYm94Mjg4TmV3e3dpZHRoOjI4MHB4OyBmbG9hdDpsZWZ0OyB9IC5ib3gyODhOZXdfY3VzdG9te2Zsb2F0OmxlZnQ7fSAuYm94Mjg4TmV3UU0sIC5ib3gyODhOZXdRTV9tb2JpbGUgeyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYm94LXNoYWRvdzpub25lOyBjbGVhcjpib3RoOyBmbG9hdDpsZWZ0OyB3aWR0aDoyODBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJveDI4OE5ld1FNX21vYmlsZSB7IHdpZHRoOjEwMCU7IH0gLmJveDI4OE5ld1FNX21vYmlsZSAuUmVjaGVyY2hlMjIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIHRhYmxlIHsgd2lkdGg6MTAwJTsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIC5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IC5ib3gyODhOZXdRTV9tb2JpbGUgLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIGlucHV0IHsgd2lkdGg6OTUlIWltcG9ydGFudDsgfSAuYm94Mjg4UU17IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOjAuODc1cmVtIDtmb250LXdlaWdodDpub3JtYWw7fSAuYm94Mjg4UU1fY3VzdG9te3dpZHRoOjI3OHB4O21hcmdpbjo1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNoYWRvdzowIDAgNHB4ICMzMzM7fSAudGV4dEFyZWFRTXsgZm9udC1zaXplOjAuODEzcmVtIDtsaW5lLWhlaWdodDoxNXB4O30gLmJveDI4OF90b3B7d2lkdGg6Mjg4cHg7IGhlaWdodDoxNHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBtYXJnaW4tdG9wOjBweDt9IC5ib3gyODhfdG9wX2N1c3RvbXt3aWR0aDoyNzhweDsgaGVpZ2h0OjQwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQ6I2NiY2JjYjt9IC5fYm94Mjg4UU17IHdpZHRoOjI4MHB4OyB9IC5fYm94Mjg4X3RvcHt9IC5fYm94Mjg4X3RvcF9jdXN0b217IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBXaWR0aDoxMDAlOyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGJvcmRlci1yYWRpdXM6NnB4IDZweCAwIDA7IH0gLl9ib3gyODgwX21pZHt9IC5fYm94Mjg4MF9taWRfY3VzdG9te2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5ib3gyODhfbWlkeyBib3gtc2hhZG93OjAgMCA1cHggIzMzMzMzMzsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tbGVmdDo1cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgfSAuYm94Mjg4X21pZF9jdXN0b217IGJveC1zaGFkb3c6MCAwIDVweCAjMzMzMzMzOyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmJveDI4ODBfbWlke3dpZHRoOjI1OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgMTVweCAwcHggMTVweDt9IC5ib3gyODgwX21pZF9jdXN0b217d2lkdGg6MjI4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjVweCAyNXB4OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMSk7fSAuYm94MjY5X21pZHt3aWR0aDoyNThweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzowIDE1cHggMHB4IDE1cHg7fSAuem9vbTIye3dpZHRoOjI1OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuc2VhcmNoX3JpZ2h0IHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3NlYXJjaC5wbmcpIDAgMCBuby1yZXBlYXQ7IHdpZHRoOjI3OHB4OyBoZWlnaHQ6MTExcHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjo1cHggNXB4IDVweCA1cHh9IC5EZW1hbmRlMjJ7d2lkdGg6Mjc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgbGluZS1oZWlnaHQ6MjZweDsgbWFyZ2luLXRvcDo2N3B4O30gLkRlbWFuZGUyMiBheyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgbGluZS1oZWlnaHQ6MjBweCA7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLkRlbWFuZGUyMiBhOmhvdmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IC5EZW1hbmRlMjIgc3BhbiBheyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI5MjkyOTsgbGluZS1oZWlnaHQ6MjBweCA7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLkRlbWFuZGUyMiBzcGFuIGE6aG92ZXJ7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjkyOTI5OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30gLmJveDI4OF9mb290ZXJ7d2lkdGg6Mjg4cHg7IGhlaWdodDoxNHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXJfcXN7d2lkdGg6Mjg4cHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXJfcXN7d2lkdGg6Mjg4cHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXI1NXsgd2lkdGg6MjgwcHg7IGhlaWdodDo1MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMmQyZDJkOyBiYWNrZ3JvdW5kLWNvbG9yOiNDQkNCQ0I7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IH0gLmJveDI4OF9mb290ZXI1NV9jdXN0b217IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MzVweDsgcGFkZGluZy10b3A6NXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IH0gLnAgYXt0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5nYXAxMHt3aWR0aDoyMzBweDsgaGVpZ2h0OjEwcHg7IGZsb2F0OmxlZnQ7fSAucGFnZV9uYW1lMnt3aWR0aDo2NTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwIDIwcHggMDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNjI1cmVtIDsgY29sb3I6IzA1MTQxZjtmb250LXdlaWdodDpub3JtYWx9IC5wYWdlX25hbWUzeyB3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMTBweCAxMHB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI0MjQyNDt9IC5wYWdlX25hbWUzIGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMjQyNDI0O2ZvbnQtd2VpZ2h0Om5vcm1hbH0gLnBhZ2VfbmFtZTR7d2lkdGg6NjUwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAxMHB4IDIxcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwMTRGODA7fSAucGFnZV9uYW1lNCBoMnsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOnJnYigyNTUsMjU1LDI1NSk7Zm9udC13ZWlnaHQ6bm9ybWFsfSAucGFnZV9uYW1lNXt3aWR0aDoxMDAlO2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAxMHB4IDA7IG1hcmdpbi1ib3R0b206MTVweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNDI0MjQ7Zm9udC13ZWlnaHQ6bm9ybWFsIH0gI3NlYXJjaENvbnRhaW5lclBhcmVudCAucGFnZV9uYW1lNTpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6MzBweDsgfSAuYm94Ml90ZXh0e2hlaWdodDphdXRvOyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5ib3gyX3RleHQgcHsgbGluZS1oZWlnaHQ6MThweDsgZm9udC1zaXplOjAuODc1cmVtIDtjb2xvcjojMDUxNDFmOyBtYXJnaW4tYm90dG9tOjIwcHg7fSAucG9zaXRpdmVSYXRpbmdUeHQgcHtmb250LXNpemU6MXJlbSA7fSAucG9zaXRpdmVSYXRpbmdUeHQgaDMsIC5wb3NpdGl2ZVJhdGluZ1R4dCBoNHtmb250LXdlaWdodDpub3JtYWw7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e3RleHQtdHJhbnNmb3JtOm5vbmU7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e2ZvbnQtc2l6ZToxLjI1cmVtIDt9IC5ldGFwZXt3aWR0aDphdXRvOyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjIwcHg7fSAudGV4dDF7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDt9IC50ZXh0MSBhe3dpZHRoOmF1dG87IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQzNDM0MzsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNmM2YzZjM7IH0gLnRleHQxIGE6aG92ZXJ7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDM0MzQzOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI2YzZjNmMzsgfSAudGV4dDEgYS5hY3RpdmV7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDM0MzQzOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI2YzZjNmMzsgfSAub25lMXt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi1sZWZ0OjEwcHg7fSAub25lMSBhe3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzLzFfcm91bmQucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6I0ZGRkZGRjsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLm9uZTEgYTpob3Zlcnt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy8xX2hvdmVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6Mi4yNXJlbSA7IGNvbG9yOiMwNTE0MWY7IGxpbmUtaGVpZ2h0OjQ2cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5vbmUxIGEuYWN0aXZle3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzLzFfaG92ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgY29sb3I6IzA1MTQxZjsgbGluZS1oZWlnaHQ6NDZweDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnNlbGVjdGlvbm5lent3aWR0aDphdXRvOyBoZWlnaHQ6YXV0byA7IGZsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLWxlZnQ6M3B4OyBwYWRkaW5nLXRvcDo0cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMxYTFhMWE7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuZm9ybXNfYm94MjJ7Ym94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgMCAxMHB4IDA7IH0gLndpdGhfYm9yZGVyIHsgYm9yZGVyOjFweCBzb2xpZCAjZDRkNGQ0OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MCAxNnB4OyB9IC5QcmVub217d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzo4cHggMCAxMHB4IDA7fSAuUHJlbm9tIHNwYW57IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiNmZjAxMDE7fSAuUHJlbm9tMnt3aWR0aDozMjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjhweCAwIDEwcHggMDt9IC5QcmVub20yIHNwYW57IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiNmZjAxMDE7fSAuUHJlbm9tM3t3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEwcHggMDt9IC5QcmVub200e3dpZHRoOjMyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTV7d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzpweCAwIDEwcHggMDt9IC5QcmVub202e3dpZHRoOjIxNHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTd7d2lkdGg6MTA3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxMHB4IDA7fSAuUHJlbm9tOHt3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6cHggMCAxMHB4IDA7IGRpc3BsYXk6YmxvY2t9IC5QcmVub205e3dpZHRoOjIxNHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMCAxMHB4IDA7ZGlzcGxheTpibG9ja30gLlByZW5vbTEwe3dpZHRoOjEwN3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMCAxMHB4IDA7ZGlzcGxheTpibG9ja30gLnRleHQxNXt3aWR0aDoyODVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxNnt3aWR0aDoxNzJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxN3t3aWR0aDoxMTJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxOHt3aWR0aDoyODVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjhweCAwIDNweCAwO30gLnRleHQxNSBzcGFueyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojZmYwMTAxO30gLmJ1dHRvbjV7d2lkdGg6Mjg1cHg7IG1hcmdpbi1ib3R0b206MzBweDsgbWFyZ2luLXRvcDo3MHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5ib3hfZGF0ZXt3aWR0aDoxNjdweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDoxcHg7IG1hcmdpbi1yaWdodDo1cHg7fSAuYm94X2RhdGUye3dpZHRoOjEwN3B4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3hfZGF0ZTN7d2lkdGg6ODBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4O30gc3Bhbi5hc3RreyBjb2xvcjojRkYwMTAxO2ZvbnQtc2l6ZTowLjY4OHJlbSA7ZmxvYXQ6bGVmdDtwYWRkaW5nLXJpZ2h0OjNweDsgfSAuYm94NjF7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjEwcHg7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IH0gLmJveDYxNjZ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjEwcHg7IH0gLlBvbGl0aXF1ZXt3aWR0aDphdXRvOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IHBhZGRpbmc6MCAycHggMHB4IDJweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkNTlhZjsgbGluZS1oZWlnaHQ6MjJweDsgfSAuUG9saXRpcXVlIGF7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZDU5YWY7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjNmI5MWJkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMy5wbmcpIGJvdHRvbSBsZWZ0IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTt9IC5Qb2xpdGlxdWUgYTpob3ZlcnsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgbGluZS1oZWlnaHQ6MjRweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lNC5wbmcpIGJvdHRvbSBsZWZ0IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMyNDI0MjQ7fSAudGV4dDE1NXt3aWR0aDoyODVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxNTVjaGt7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAxMHB4IDEwcHggMTVweDt0ZXh0LWFsaWduOmxlZnQ7fSAuVmV1aWxsZXp7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE3cHggMDsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzA1MTQxZjtmb250LXdlaWdodDpub3JtYWx9IC5WZXVpbGxleiBzcGFue3RleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgbGluZS1oZWlnaHQ6MjJweDt9IC5WZXVpbGxleiBzcGFuIGF7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OnJpZ2h0OyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzI0MjQyNDsgZGlzcGxheTpibG9ja30gLlZldWlsbGV6IHNwYW4gYTpob3ZlcnsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNDQ2ZjsgZmxvYXQ6cmlnaHQ7IGxpbmUtaGVpZ2h0OjIycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMDA0NDZmOyBkaXNwbGF5OmJsb2NrO30gLkh5cG90aGVxdWV7d2lkdGg6MTk1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDo1MHB4O30gLkh5cG90aGVxdWUyMnt3aWR0aDoyMjRweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLkh5cG90aGVxdWUzM3t3aWR0aDo1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwOyBsaW5lLWhlaWdodDozNXB4O30gLmNpdmlxdWV7d2lkdGg6MTMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5SdWV7d2lkdGg6MjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5BcHB7d2lkdGg6MTgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5mb3JtczEwMHt3aWR0aDoxMzBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLmZvcm1zMTAxe3dpZHRoOjI5MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7fSAuZm9ybXMxMDJ7d2lkdGg6MTgwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDt9IC5WaWxsZXsgd2lkdGg6MjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxM3B4IDA7fSAuUHJvdmluY2V7IHdpZHRoOjE1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTNweCAwO30gLkNvZGV7IHdpZHRoOjE2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTNweCAwO30gLmZvcm1zMTAzeyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgfSAuZm9ybXMxMDR7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyB9IC5mb3JtczEwNXsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IH0gLmZvcm1zMTA2eyB3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnR9IC5UeXBle3dpZHRoOjIwMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAuYm94NjAwe3dpZHRoOjYwMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgcGFkZGluZy1ib3R0b206MjBweDsgbWFyZ2luLXJpZ2h0OjBweDt9IC5EZW1hbmRlNTV7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjQwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTY2e21hcmdpbjoxNXB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2FsMi5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgcGFkZGluZzowIDAgMCA2MnB4OyBsaW5lLWhlaWdodDoyMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMTkxOTE5OyBmb250LXdlaWdodDpib2xkO30gLkRlbWFuZGU3N3ttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL20ucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6NDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5EZW1hbmRlODh7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9mLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjIwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTg4N3ttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2YucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6MjBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5ib3gyX3RleHQye3dpZHRoOjY0OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDBweCAxNXB4IDIzcHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7fSAuYm94X2JyYW5ke3dpZHRoOjY0OHB4OyBmbG9hdDpsZWZ0O3BhZGRpbmc6MjBweCAwcHggMTVweCAwcHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IH0gLmJveDJfdGV4dDN7d2lkdGg6NjYxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDEwcHggMTBweDsgbWFyZ2luLXRvcDoxNXB4OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5jYXJfYm94e3dpZHRoOjIwOHB4OyBoZWlnaHQ6MTMwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDhweCAwIDA7IHBhZGRpbmc6MDsgYm9yZGVyOjA7fSAuY2FyX2ltYWdlc3t3aWR0aDoyMDhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJvcmRlcjowOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5jYXJfdGV4dHt3aWR0aDoyMDhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMwNTE0MWY7IHRleHQtYWxpZ246Y2VudGVyfSAuY2FyX3RleHQgYSB7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiMwNTE0MWY7IGxpbmUtaGVpZ2h0OjEuMTt9IC5jYXJfdGV4dCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6IzA1MTQxZn0gLmNhcl9ib3gyeyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjAgMTBweCAxMHB4IDA7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6I0ZGRjsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyBib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IH0gLmNhcl9ib3gyX3RheHR7aGVpZ2h0OmF1dG87IHBhZGRpbmctYm90dG9tOjVweDsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWFsaWduOmxlZnQ7IGxpbmUtaGVpZ2h0OjIxcHg7fSAucGljX2JveDJ7IGJvcmRlcjoxcHggc29saWQgI0FBQTsgYmFja2dyb3VuZDojRkZGRkZGOyBib3JkZXItcmFkaXVzOjNweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgfSAucGljX2JveDIgaW1nIHt3aWR0aDoxMDAlO30gLnByaW50e3dpZHRoOjE5MnB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmctdG9wOjdweDt9IC5wcmludCBheyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3ByaW50LnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyBwYWRkaW5nLWxlZnQ6MzVweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucHJpbnQgYTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9wcmludF9ob3Zlci5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNGE3ODsgcGFkZGluZy1sZWZ0OjM1cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5wYWdlX25hbWVfY29ue3dpZHRoOjg0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDIxcHggMTBweCAyMHB4OyB9IC5ob21lMnt3aWR0aDoyMzBweDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjIwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzM3MzczNzsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmhvbWUze3dpZHRoOjUxMHB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MTBweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojMzczNzM3OyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDIwe3dpZHRoOjMxMHB4OyBoZWlnaHQ6MzJweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgbGluZS1oZWlnaHQ6MzJweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGQwZDBkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDIwIHNwYW57IGNvbG9yOiNGRjAwMDA7fSAuaW5wdXQyNXt3aWR0aDozMTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAudmV1eHt3aWR0aDo2MDBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWJvdHRvbToxMHB4OyBwYWRkaW5nLXRvcDo1cHg7IGxpbmUtaGVpZ2h0OjE3cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkMGQwZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1ib3R0b206MTBweDt9IC5Ob3N7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOiMwMDAwMDA7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTVweCAwIDE1cHggMTVweDsgbWFyZ2luOjVweCAwOyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6I0ZGRkZGRjt9IC5idXR0b25fam9ib2ZmZXIgeyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9pY29uX2VtcGxveS5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDBweCAwcHggcmdiKDIzMSwgMjMyLCAyMzIpOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDo0MHB4OyBib3JkZXItcmFkaXVzOjNweDsgfSAuYnV0dG9uXzEsIC5idXR0b25fMiwgLmJ1dHRvbl8zIHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLmJ1dHRvbl8zIGEgeyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IH0gLmJ1dHRvbl8xIGEsIC5idXR0b25fMiBhIHsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDUxNDFmOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IH0gLmJ1dHRvbl8xIGE6aG92ZXIsIC5idXR0b25fMiBhOmhvdmVyeyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgfSAuYnV0dG9uXzMgYXsgYmFja2dyb3VuZDojMDAwOyBjb2xvcjojRkZGOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IH0gLmJ1dHRvbl8zIGE6aG92ZXJ7IGJhY2tncm91bmQ6I0ZGRjsgY29sb3I6IzAwMDsgfSAuZmJDb25uZWN0QnRuIHsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzMwNTg5ODsgY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czozcHg7IGxpbmUtaGVpZ2h0OjM4cHg7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuZmJDb25uZWN0QnRuIC5mYS1mYWNlYm9va3sgY29sb3I6IzMwNTg5ODsgfSBhLmZhY2Vib29rQ29ubmVjdEJ0biB7IGNvbG9yOiNmZmY7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1mYW1pbHk6aW5oZXJpdDsgfSAuYnV0dG9uX3ZpZGVvc19mciBhLCAuYnV0dG9uX3ZpZGVvc19lbiBheyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGRpc3BsYXk6YmxvY2s7IH0gLmJ1dHRvbl92aWRlb3NfZnIgYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZnIgYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhLCAuYnV0dG9uX3ZpZGVvX2VuIGF7IHdpZHRoOjE5M3B4OyBoZWlnaHQ6NTFweDsgZGlzcGxheTpibG9jazsgfSAuYnV0dG9uX3ZpZGVvX2ZyIGF7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhOmhvdmVye2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvLWJ1dHRvbi1ob3Zlcl9mci5wbmciKSBuby1yZXBlYXQgMHB4IDBweCB0cmFuc3BhcmVudDt9IC5idXR0b25fdmlkZW9fZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlby1idXR0b25fZW4ucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvX2VuIGE6aG92ZXJ7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl91bmRlcnt3aWR0aDoyNDlweDsgcGFkZGluZzowcHg7IG1hcmdpbjoxMHB4IDBweDt9IC5idXR0b25fdW5kZXIgYXsgd2lkdGg6MTAwJTttaW4taGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93Om5vbmU7IGRpc3BsYXk6YmxvY2sgfSAuYnV0dG9uX3VuZGVyIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICMwMDFlMzE7IH0gLmJ1dHRvbl91bmRlci5wcm9tbyBhe2JhY2tncm91bmQtY29sb3I6I2U4MGQwZDsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBjb2xvcjojRkZGOyB3aWR0aDoyMzdweDsgbWFyZ2luLWxlZnQ6NXB4O30gLmJ1dHRvbl91bmRlci5wcm9tbzMgYXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwMDA7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgY29sb3I6I0ZGRjsgd2lkdGg6MjM3cHg7IG1hcmdpbi1sZWZ0OjVweDt9IC5idXR0b25fdW5kZXIucHJvbW8gYTpob3ZlciwuYnV0dG9uX3VuZGVyLnByb21vMiBhOmhvdmVyLC5idXR0b25fdW5kZXIucHJvbW8zIGE6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9idXR0b25fMWhvdmVyLnBuZyl9IC5idXR0b25fNHt3aWR0aDoyNDlweDsgaGVpZ2h0OjU3cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuYnV0dG9uXzQgYXsgd2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBwYWRkaW5nLXRvcDo3cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uXzQucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7Zm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjMDAxZTMxOyBkaXNwbGF5OmJsb2NrIH0gLmJ1dHRvbl80IGE6aG92ZXJ7d2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbl80aG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MjJweDsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzAwMWUzMTsgfSAuY2hlY2tib3gxNTJ7d2lkdGg6YXV0bzsgaGVpZ2h0OjE4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjAgNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IH0gLkJhc2UyMnt3aWR0aDphdXRvOyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjZweDsgcGFkZGluZzo2cHggNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwNTE0MWY7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLmJveDk0MF9saW5le3dpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMjUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IGJvdHRvbTowO30gLndoaXRlX2JveHt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6I0ZGRkZGRjsgb3ZlcmZsb3c6aGlkZGVuOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDt9IC5ib3gxMDB7d2lkdGg6MjIwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nOjEzcHggMCAxNXB4IDEwcHg7fSAuYm94MTAxe3dpZHRoOjE3N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2xpbmUyNS5wbmciKSByZXBlYXQteCBzY3JvbGwgY2VudGVyIGJvdHRvbSAjRDlEOUQ5O30gLmJveDEwMnt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxM3B4IDAgMTVweDt9IC5ib3gxMDN7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwIDE1cHg7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvbGluZTI1LnBuZyIpIHJlcGVhdC14IHNjcm9sbCBjZW50ZXIgYm90dG9tICNEOUQ5RDk7fSAuYm94MTA0e3dpZHRoOjE3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O30gLmJveEV2ZW57d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDt9IC5ib3hPZGR7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9saW5lMjUucG5nIikgcmVwZWF0LXggc2Nyb2xsIGNlbnRlciBib3R0b20gI0Q5RDlEOTt9IC5maWxlaW5wdXQtYnV0dG9uLCAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDozMXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgbWFyZ2luOjA7IG9wYWNpdHk6MDsgLW1zLWZpbHRlcjonYWxwaGEob3BhY2l0eT0wKSc7IGN1cnNvcjpwb2ludGVyOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYm94OTQwX21haW57d2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwIDE1cHggMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveDIwMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjZweDt9IC53aGl0ZV9ib3hfdGV4dDJ7d2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHQze2JhY2tncm91bmQtY29sb3I6I0Y2RjZGNjtib3JkZXItbGVmdDoxcHggc29saWQgI0M5QzlDOTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNDOUM5Qzk7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDV7YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC53aGl0ZV9ib3hfdGV4dDZ7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfYmxhbmt7d2lkdGg6MTc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHRPZGR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dEV2ZW57YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLmJveF90aXRsZXt3aWR0aDo5MzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MzBweCAwcHggNXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fSAuY3VzdG9tXzIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNlYmViZWI7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC5jdXN0b21fMjIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC50b3lvdGFfY2Ftcnl7d2lkdGg6NDMwcHg7IGhlaWdodDoyMjJweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDBweCAwcHggMTBweDsgbWFyZ2luLXJpZ2h0OjhweDsgYmFja2dyb3VuZDojZWJlYmViOy1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7fSAudG95b3RhX2NhbXJ5IGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206NXB4O30gLnRveW90YV9jYW1yeSBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDJfZGV0YWlsc190ZXh0MjV7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjoxNXB4IGF1dG87IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDRweCAjODI4MjgyO30gLmJveDJfZGV0YWlsc190ZXh0MjUgc3BhbnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuYm94MTV7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDJweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE1IGgye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTUgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxNSBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTZ7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDRweCA0cHggOHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTYgaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxNiBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24zLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjIwcHg7IHBhZGRpbmctcmlnaHQ6MHB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE2IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6cmdiKDUsMjAsMzEpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMy5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE3e3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL21lbnUxMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjRweCA0cHggNHB4IDhweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE3IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTcgaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBwYWRkaW5nLXJpZ2h0OjBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxNyBoMiBhOmhvdmVye2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb240LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTh7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDRweCA0cHggOHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTggaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxOCBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb241LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjI1cHg7IHBhZGRpbmctcmlnaHQ6NXB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE4IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5ZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjUucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxOXt3aWR0aDphdXRvOyBoZWlnaHQ6MjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZW51MTBfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzo0cHg7IHBhZGRpbmctcmlnaHQ6M3B4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTkgaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxOSBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb242LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjI1cHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTkgaDIgYTpob3ZlcntmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA1ODlkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDExMTR7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uXzEucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzo0cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBtYXJnaW4tcmlnaHQ6MXB4OyB9IC5ib3gxMTE0IGgye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTExNCBoMiBhe2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjQwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxMTE0IGgyIGE6aG92ZXJ7Y3Vyc29yOnBvaW50ZXI7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5ZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5TcGVjaWZpY2F0aW9uc3t3aWR0aDo2NTFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IHBhZGRpbmc6MTBweCAwOyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI1MjUyNTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbi10b3A6NXB4O30gLk1vcmJpMnt3aWR0aDo2MzFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweDsgbWFyZ2luOjBweDsgYmFja2dyb3VuZDojRUZFRkVGOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4O2ZvbnQtd2VpZ2h0Om5vcm1hbDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzVhNWE1YTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuTW9yYmkyIHB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM1YTVhNWE7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbTo4cHg7fSAuYm94Mjg4OV9taWR7d2lkdGg6Mjc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MCA1cHggMjBweCA1cHg7fSAuTW9yYmkyMnt3aWR0aDo2NTFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4OyBtYXJnaW46MHB4OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5ib3gyODg5X21pZCBoMXsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAxMHB4IDIwcHggMTBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyNHB4fSAuX2JveDI4ODlfbWlkIGgxeyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDEwcHggMjBweCAxMHB4OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMjgyODI4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjI0cHh9IC5ib3gyODg5X21pZCBoMnsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NHB4IDEwcHggMjBweCAxNXB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyM3B4fSAjc2ltaWxhclRpdGxleyBwYWRkaW5nOjRweCAxMHB4IDlweCAxNXB4OyBmb250LXNpemU6MS40MzhyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IH0gLnRhYmU1e3dpZHRoOjYzMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSAudGFiZTUgdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC50YWJlNSB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrO30gLnRhYmU1IHVsIGxpIHNwYW57Y3Vyc29yOnBvaW50ZXI7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6N3B4IDE1cHggN3B4IDE1cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvdGFiX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO30gLnRhYmU1IHVsIGxpIHNwYW46aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojN2IwMDAwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzo3cHggMTVweCA3cHggMTVweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDogI2ViZWJlYjsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6NnB4OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NnB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6MHB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDowOyAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowcHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7IH0gLnRhYmU1IHVsIGxpIHNwYW4uYWN0aXZle2N1cnNvcjpkZWZhdWx0OyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6N3B4IDE1cHggN3B4IDE1cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6ICNlYmViZWI7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowOyB9IC50YWJfZGV0YWlsczJ7d2lkdGg6NjMxcHg7IHBhZGRpbmc6MTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6I0VGRUZFRjsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6MHB4OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6MHB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4OyAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDt9IC5ib3gyNXt3aWR0aDo0ODdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6I0VGRUZFRjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgbWFyZ2luOjAgMTNweCAwIDA7IHBhZGRpbmc6MjBweCAwIDIwcHggMjBweDt9IC5ib3gyNnt3aWR0aDoyNDNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7fSAuYm94MjYgdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5ib3gyNiB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrO30gLmJveDI2IHVsIGxpIHNwYW57IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHggN3B4IDBweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7fSAuYm94MjYgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmJveDI2IHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgcGFkZGluZzowIDdweCA3cHggMjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI2IHVsIGxpIGEuYWN0aXZleyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAyMnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94Mjd7d2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjhweDsgfSAuYm94MzN7d2lkdGg6NjMxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLmJveDMzIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94MzMgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC5ib3gzMyB1bCBsaSBheyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAwcHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTt9IC5ib3gzMyB1bCBsaSBzcGFueyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAwcHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTt9IC5ib3gzMyBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDBweCA3cHggMHB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmJveDMzIHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9hcnJvdzgucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IH0gLk1vdGV1cnt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206NXB4O30gLk1vdGV1ciBoMnt3aGl0ZS1zcGFjZTpub3JtYWw7IHdpZHRoOjEzNXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiMyMDIwMjA7fSAuTW90ZXVyIGgze3doaXRlLXNwYWNlOm5vcm1hbDsgd2lkdGg6MTQwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzVhNWE1YTt9IC5ib3gyNiB1bCBsaSBzcGFuOmJlZm9yZSwuYm94MzMgdWwgbGkgc3BhbjpiZWZvcmUsLk1vdGV1ciBoMjpiZWZvcmUgeyBjb250ZW50OiJcZjEzOCI7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBmb250LXdlaWdodDo5MDA7IG1hcmdpbi1yaWdodDo1cHg7IH0gLmJveDI3IGF7d2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXggOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjA7IGxpbmUtaGVpZ2h0OjI4cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lO30gLmJveDI3IGE6aG92ZXJ7d2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjEwX2JnLnBuZykgbGVmdCAtMzJweCByZXBlYXQteCA7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyOHB4OyB9IC5ib3gyOHt3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6IzZmNmY2ZiB1cmwoL2ltYWdlcy9saXRlcl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjEwcHggMnB4IDEwcHggMnB4OyBtYXJnaW46MCAwcHggMCAwO30gLnRleHQ0NHt3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGl0ZXJfbGluZS5wbmcpIGxlZnQgYm90dG9tIHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoxOHB4fSAudGV4dF9ib3g2MHt3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MDsgfSAudGV4dF9ib3g2MCBoMnt3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI2MjYyNjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjAgaDN7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoxOHB4fSAudGV4dF9ib3g2MCBwe3dpZHRoOjEzM3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzo1cHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI2MjYyNjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnZpb3J7d2lkdGg6YXV0bzsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvdmlvci5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBsaW5lLWhlaWdodDoyMnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo1cHg7IH0gLmJveDEzM3t3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MDsgbWFyZ2luOjA7fSAuYm94MjU4e3dpZHRoOjI1OHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYjliOWI5OyBwYWRkaW5nOjAgMTBweCA1cHggMTBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGZsb2F0OmxlZnQ7fSAuYm94MTE2e3dpZHRoOjExNnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYm9yZGVyOjJweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOjA7IG1hcmdpbi1yaWdodDo1cHg7fSAuYm94MTE2IGltZ3t3aWR0aDoxMjBweDsgfSAuYm94Mnt3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo0N3B4OyBtYXJnaW4tbGVmdDoyMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7fSAuYm94MiBzcGFue2ZvbnQ6Ym9sZCAxMnB4IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiNGRjAwMDB9IC5ib3gze3dpZHRoOjI2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjIwcHg7IHBhZGRpbmc6MCAwIDEwcHggNXB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDt9IC5ib3gzIHNwYW57Zm9udDpib2xkIDEycHggVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6I0ZGMDAwMH0gLmJveDR7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDQ1cHggMTBweCAyMHB4OyB9IC5ib3g0NHt3aWR0aDoyNjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHggNDdweCAxMHB4IDIwcHg7IHBvc2l0aW9uOnJlbGF0aXZlO30gLmJveDV7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDIwcHggMTBweCAwO30gLmJveDZ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MTBweCAwcHggMHB4IDA7fSAuYm94NTV7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDIwcHggMTBweCAwO3Bvc2l0aW9uOnJlbGF0aXZlO30gLmxpbjJ7d2lkdGg6NjE3cHg7IGhlaWdodDoycHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHggMCAxMHB4IDA7IHBhZGRpbmc6MDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMi5wbmcpIGxlZnQgdG9wIHJlcGVhdC14O30gLmJveDE0e3BhZGRpbmc6MHB4IDA7IGhlaWdodDoxNXB4OyBmbG9hdDpsZWZ0fSAuYm94MjB7cGFkZGluZzowIDEwcHg7IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjI3cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBmb250LXdlaWdodDpib2xkO30gLnRleHQzMHt3aWR0aDo2MTdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTdweCAwOyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojMjQyNDI0fSAudGV4dDMwIHNwYW57cGFkZGluZy1yaWdodDoxMHB4OyBmbG9hdDpyaWdodDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojMjQyNDI0O30gLnRleHQzMCBzcGFuIHN0cm9uZ3tmb250OmJvbGQgMjBweCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjojRkYwMDAwIH0gLmJveDYxN3t3aWR0aDo2MTdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IHBhZGRpbmctYm90dG9tOjIwcHg7IG1hcmdpbi1yaWdodDowcHg7fSAubWFpbjYxN3t3aWR0aDo2MTdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbi10b3A6MTVweDt9IC5ib3gyMEF7cGFkZGluZzowIDVweDsgZmxvYXQ6bGVmdDsgbGluZS1oZWlnaHQ6MjVweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAub25TaXRlICsgLnByZWZlcnJlZCwgLnByZWZlcnJlZDpoYXMoKy5vblNpdGUpIHsgYWxpZ24tc2VsZjplbmQ7IH0gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB3aWR0aDoxMDAlOyBsaW5lLWhlaWdodDozMHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZTo5MCU7fSAjc2VydmljZVBhY2thZ2VzIHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtiYWNrZ3JvdW5kOiNmM2YzZjM7fSAjc2VydmljZVBhY2thZ2VzIHRhYmxlIHRke3BhZGRpbmctdG9wOjAuNXJlbTsgdmVydGljYWwtYWxpZ246dG9wOyBsaW5lLWhlaWdodDoxLjU7fSAjc2VydmljZVBhY2thZ2VzIHRhYmxlIHRkOm50aC1jaGlsZCgyKSB7cGFkZGluZzowLjVyZW07fSAuZGV0YWlsQ2FyVGl0bGUsIC5kZXRhaWxDYXJUaXRsZVdpZGUsIC5kZXRhaWxDYXJUaXRsZUZ1bGwge3dvcmQtd3JhcDpicmVhay13b3JkO2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDE0MTQxO2ZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5kZXRhaWxDYXJUaXRsZSB7d2lkdGg6NDkwcHg7fSAuZGV0YWlsQ2FyVGl0bGVXaWRlIHt3aWR0aDo3NzVweDt9IC5kZXRhaWxDYXJUaXRsZUZ1bGwge3dpZHRoOjEwMCU7fSAubWFpbmJveF90ZXh0YXJlNjE3e2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW46MjBweCAwOyB0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIDAlKTsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6NTAlO30gLnRleHRib3gyMnt3aWR0aDozODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbjowcHggMHB4IDAgMDt9IC5idXR0b241MXsgd2lkdGg6YXV0bzsgaGVpZ2h0OjM2cHg7IGZsb2F0OmxlZnQ7IH0gLmJ1dHRvbjUxIGF7IHdpZHRoOmF1dG87IGhlaWdodDozNnB4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjUucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRiA7IHBhZGRpbmc6MCAxMHB4OyBsaW5lLWhlaWdodDozNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9IC5idXR0b241MSBhOmhvdmVyeyB3aWR0aDphdXRvOyBoZWlnaHQ6MzZweDsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b241LnBuZykgbGVmdCAtNDRweCByZXBlYXQteDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRiA7IHBhZGRpbmc6MCAxMHB4OyBsaW5lLWhlaWdodDozNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO30gLnRleHQ1NXt3aWR0aDozODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbjowcHggMHB4IDIwcHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjaykgOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDU1IHB7IHBhZGRpbmctbGVmdDowcHggNXB4IDAgMDsgbWFyZ2luOjBweCAwcHggMHB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAucGljYm94XzIyMXtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luOjBweCAxNXB4IDAgMDt9IC5waWNib3hfMjIxIGltZyB7IHdpZHRoOjMzMnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAuaXNGdWxsV2lkdGhQYWdlIC5waWNib3hfMjIxIGltZyB7IHdpZHRoOjQ0MnB4OyB9IC5waWNib3g2NTF7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46NXB4IDEwcHggMHB4O30gLnBpY2JveDkzMHt3aWR0aDo5MzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjo1cHggNXB4IDBweDt9IC5waWNib3g2NTEgaW1nIHsgd2lkdGg6NjUxcHg7IH0gLnBpY2JveDkzMCBpbWcgeyB3aWR0aDo5MzBweDsgfSAucGljYm94NjUxIGltZywgLnBpY2JveDkzMCBpbWcgeyBmbG9hdDpsZWZ0OyBjdXJzb3I6cG9pbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAudG9wUHJvbW9JbWFnZSBpbWcgeyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW4tdG9wOjVweDsgd2lkdGg6OTMwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC50b3BQcm9tb0ltYWdlVXNlZCBpbWcgeyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyB3aWR0aDo2NTBweDsgY3Vyc29yOnBvaW50ZXI7IH0gLnRlYW1fdGl0bGVfZGVhbGVye21hcmdpbi1ib3R0b206MTVweDsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuZm9ybXNfYm94NjYxe3dpZHRoOjk2MHB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjEwcHggYXV0bzsgfSAucGljYm94OTB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo4cHg7IGJvcmRlcjoxcHggc29saWQgI2FjYWNhYzsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAucGljYm94OTAgaW1nIHt3aWR0aDo5MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAudGV4dGJveDE5MXt3aWR0aDo1MiU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxLjI7IGNvbG9yOiMyNDI0MjQ7IH0gLnRleHRib3gxOTEgaDR7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMyNDI0MjQ7IHBhZGRpbmctYm90dG9tOjVweDsgfSAubWFpbmJveDI5MXt3aWR0aDoyOTFweDsgbWluLWhlaWdodDoxMjNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDVweCAxMHB4IDA7IGJhY2tncm91bmQ6I2U2ZTZlNjsgYm9yZGVyOjFweCBzb2xpZCAjZDRkNGQ0OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItcmFkaXVzOjhweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjE1cHggMTBweDt9IC5sYXp5e2JvcmRlcjowO2Rpc3BsYXk6bm9uZX0gLnRlY2hTcGVjc3t3aWR0aDo2MjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IHBhZGRpbmc6MjVweCAxNXB4OyBiYWNrZ3JvdW5kOiNlYmViZWI7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgYm90dG9tOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDowcHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDt9IC5lbWFpbF9saW5re3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojODg4O30gLmVtYWlsX2xpbms6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiMzMzM7fSAucGFnZV9uYW1lNTU1IHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OmF1dG87IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW46MDsgfSAucGFnZV9uYW1lNTU1IGF7IGNvbG9yOiMyNDI0MjQ7IH0gLnBhZ2VfbmFtZTU1NSBhOmhvdmVyeyBjb2xvcjojMjQyNDI0OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wYWdlX25hbWU1NTUgYTp2aXNpdGVkeyBjb2xvcjojMjQyNDI0OyB9IC5wYWdlX25hbWVORVc1NTUgeyBjb2xvcjojMjQyNDI0OyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDphdXRvOyBmb250LXNpemU6MC44NzVyZW0gOyB9IC5wYWdlX25hbWVORVc1NTUgYXsgY29sb3I6IzI0MjQyNDsgfSAucGFnZV9uYW1lTkVXNTU1IGE6aG92ZXJ7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnBhZ2VfbmFtZU5FVzU1NSBhOnZpc2l0ZWR7IGNvbG9yOiMyNDI0MjQ7IH0gLmJveDJfdGV4dDQ0IHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjFyZW07IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDoxOHB4OyBwYWRkaW5nOjEwcHggMCAwIDA7IHdpZHRoOmF1dG87IH0gLnRleHRfYm94MTEgeyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MCAyMHB4IDEwcHggMDsgd2lkdGg6YXV0bzsgbGluZS1oZWlnaHQ6MjFweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IH0gLnRleHRfYm94MTEgaDQgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MTBweCAwOyB9IC50ZXh0X2JveDExIGEgeyBjb2xvcjojMjQyNDI0OyBmb250LXNpemU6MC43NXJlbSA7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDowOyBwYWRkaW5nOjEwcHggMDsgZmxvYXQ6bGVmdDsgfSAudGV4dF9ib3gxMSBhOmhvdmVyIHsgY29sb3I6IzI0MjQyNDsgfSAudGV4dF9ib3gxMSBhOnZpc2l0ZWQgeyBjb2xvcjojMjQyNDI0OyB9IC50ZXh0X2JveDExIHVsLCAudGV4dF9ib3gxMSBwIHsgfSAudGV4dF9ib3gxMSB1bCwgLnRleHRfYm94MTEgcCB7IGNvbG9yOiMyNDI0MjQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGhlaWdodDphdXRvOyBtYXJnaW46MDsgcGFkZGluZzowIDAgNXB4OyB9IC50ZXh0X2JveDExIHVsIHsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7IH0gLnRleHRfYm94MTEgcCBhIHsgZm9udC1zaXplOjAuODc1cmVtIDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZmxvYXQ6bm9uZTsgfSAucGljYm94MzM2IHsgYm9yZGVyOjFweCBzb2xpZCAjN0Q3RDdEOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLXJpZ2h0OjY4cHg7IH0gLmZvbnRfc2l6ZTIxIHsgZm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7IH0gLnBhZ2VfbmFtZTE4IHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjEuMTI1cmVtIDsgaGVpZ2h0OmF1dG87IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAucGFnZV9uYW1lMTggYXsgY29sb3I6IzI0MjQyNDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnBhZ2VfbmFtZTE4IGE6aG92ZXJ7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnZpZGVvNSB7IGZsb2F0OmxlZnQ7IGhlaWdodDo0MXB4OyBtYXJnaW4tdG9wOjcwcHg7IG1hcmdpbi1sZWZ0OjcwcHg7IH0gLmZsb2F0TG9nb3sgd2lkdGg6NjIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjI1cHggMTVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9MT0dPX0dBX1RSQU5TUEFSRU5ULnBuZykgcmlnaHQgYm90dG9tIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCBib3R0b207IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo2cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4Oy13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYm9yZGVyOm1lZGl1bSBub25lOyBjb2xvcjojRkZGRkZGOyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOjAuODEzcmVtIDsgbWFyZ2luOjA7IG92ZXJmbG93OnZpc2libGU7IHBhZGRpbmc6MDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b24gc3BhbiB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2J0bl9yaWdodDIucG5nIikgbm8tcmVwZWF0IHNjcm9sbCByaWdodCB0b3AgdHJhbnNwYXJlbnQ7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDozNXB4OyBtYXJnaW46MDsgcGFkZGluZzowIDZweCAwIDA7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b24gc3BhbiBzcGFuIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYnRuX2xlZnQyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IGNvbG9yOiNGRkZGRkY7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OjI2cHg7IGxpbmUtaGVpZ2h0OjEzcHg7IHBhZGRpbmc6MTJweCAxM3B4IDAgMTVweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAuYnV0dG9uMi5qcVRyYW5zZm9ybUJ1dHRvbl9ob3ZlciBzcGFuIHNwYW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTM4cHg7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b25faG92ZXIgc3BhbiB7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgLTM4cHg7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b25fY2xpY2sgc3BhbiBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC02NnB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2NsaWNrIHNwYW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC02NnB4OyB9IC52ZWhpY2xlTGlzdFRhYmxlIHsgbWFyZ2luOjEwcHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgY29sb3I6IzQxNDE0MTsgfSAudmVoaWNsZUxpc3RUYWJsZSB0ciB0ZCB7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjNjY2NjY2OyBoZWlnaHQ6MzBweDsgfSAudmVoaWNsZUxpc3RUYWJsZSB0ciB0ZCBheyBjb2xvcjojNDE0MTQxOyBmb250LXNpemU6MC43NXJlbSA7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgYTpob3ZlcnsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC52ZWhpY2xlTGlzdFRhYmxlIHRyIHRkIGE6dmlzaXRlZHsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5leHBhbmRSb3d7IGJhY2tncm91bmQtY29sb3I6IzFmMWYxZjsgdGV4dC1hbGlnbjpyaWdodDsgY29sb3I6IzQxNDE0MTsgbWFyZ2luLWxlZnQ6NHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyB9IGRpdi5lcnJvck1zZyB7IGJhY2tncm91bmQtY29sb3I6I2ZmZGRkZDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvZXJyb3IucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZDsgY29sb3I6I2QxMDAwYzsgZGlzcGxheTpub25lOyBmbG9hdDpsZWZ0OyB6LWluZGV4Ojk5OTk7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSBkaXYuZW1haWxTZW50TXNnIHsgYmFja2dyb3VuZC1jb2xvcjojZWZmZmVmOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiL2ltYWdlcy9hY2NlcHRlZC5wbmciKTsgYmFja2dyb3VuZC1wb3NpdGlvbjoxMHB4IGNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBib3JkZXI6MXB4IHNvbGlkICMwOTc3MDA7IGNvbG9yOiMwOTc3MDA7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB9IGRpdi50b3lvdEltYWdlIHsgY29sb3I6IzY2NjY2NjsgZm9udC1zaXplOjMuNDM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjI1MHB4OyBsZWZ0OjA7IG9wYWNpdHk6MC44OyBvdmVyZmxvdzpoaWRkZW47IHBhZGRpbmc6NXB4IDEwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6MzgwcHg7IHotaW5kZXg6ODsgfSBkaXYudG95b3RJbWFnZSBwIHsgcGFkZGluZzo1cHg7IG1hcmdpbjowOyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojQTZBNkE2OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBkaXYubmV3Q2FyTWFpbkJveCB7IHdpZHRoOjk2MHB4OyBtYXJnaW46MCBhdXRvOyB9IGRpdi5uZXdDYXJNYWluQm94MiB7IG1hcmdpbi10b3A6NXB4OyB9IGRpdi5uZXdDYXJNYWluQm94MyB7IHdpZHRoOjk2MHB4OyBoZWlnaHQ6MTJweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3g5NzBfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5zdG9ja0ltZ1N0eWxleyB3aWR0aDoxMDAlOyBoZWlnaHQ6NTAlOyBmb250LXNpemU6Mi4yNXJlbSA7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLXRvcDozMHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luOjBweDsgY29sb3I6IzMwMzAzMDsgfSAjZmlyc3RTbGlkZXJJbWcgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjE1OyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgb3BhY2l0eToxOyBwYWRkaW5nOjA7IG1hcmdpbjowOyB9ICNmaXJzdFNsaWRlckltZyAucGxhY2Vob2xkZXJ7IGJvcmRlcjoxcHggc29saWQgI0ZGRjsgd2lkdGg6NjQwcHg7IGhlaWdodDo0ODBweDsgfSAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyIC5pbm5lci1wbGFjZWhvbGRlcnsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6ZmxleDsgdG9wOjA7IGJvdHRvbTowOyBsZWZ0OjA7IHJpZ2h0OjA7IH0gI2ZpcnN0U2xpZGVySW1nIElNR3sgaGVpZ2h0OmF1dG87IG1heC13aWR0aDo2NDBweDsgbWF4LWhlaWdodDo0ODBweDsgd2lkdGg6YXV0bzsgbWFyZ2luOmF1dG87IH0gI2ZpcnN0U2xpZGVySW1nLmZhZGUtb3V0eyB2aXNpYmlsaXR5OmhpZGRlbjsgb3BhY2l0eTowOyAtd2Via2l0LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMC4yNXMsIG9wYWNpdHkgMC4yNXMgbGluZWFyOyAtbW96LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMC4yNXMsIG9wYWNpdHkgMC4yNXMgbGluZWFyOyAtby10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAwLjI1cywgb3BhY2l0eSAwLjI1cyBsaW5lYXI7IH0gI3NvY2lhbFRpbWVsaW5leyB3aWR0aDo5NjBweDsgaGVpZ2h0OmF1dG87IH0gZGl2Lm5ld0Nhck1haW5Cb3g0IHsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveDk3MF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzoxMHB4IDE1cHg7IH0gZGl2Lm5ld0NhclRpdGxlQm94IGgxeyB3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMzMDMwMzA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ncmF5Ym94IHsgYmFja2dyb3VuZC1jb2xvcjojRUZFRkVGOyBib3JkZXI6MXB4IHNvbGlkICNGRkZGRkY7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojMDAwOyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDpub3JtYWw7IHBhZGRpbmc6MTBweCAwIDEwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtc2hhZG93OjAgMXB4IDAgI0ZGRkZGRjsgfSAuZ3JheWJveCA+IHNwYW4geyBjb2xvcjojMDAwOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuZ3JheWJveCAuc21hbGx0ZXh0IHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0NDQ0NDQzsgYm9yZGVyLXRvcDoxcHggc29saWQgI0NDQ0NDQzsgY29sb3I6IzMzMzMzMzsgZm9udC1zaXplOjAuNjg4cmVtIDsgbWFyZ2luLXRvcDoxMHB4OyBwYWRkaW5nOjEwcHg7IH0gLmdyYXlib3ggaDIgeyBjb2xvcjojMDAwOyBmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luOjVweCBhdXRvOyB9IC5leHRlbmRlZFBob25leyBwb3NpdGlvbjpmaXhlZDsgYmFja2dyb3VuZC1jb2xvcjojNjc2NzY3OyBjb2xvcjojZGRkOyBwYWRkaW5nOjAuNmVtOyBib3JkZXItcmFkaXVzOjVweDsgei1pbmRleDo5OTk5OyBmb250LXNpemU6MC44NzVyZW0gOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmV4dGVuZGVkUGhvbmUgbGFiZWx7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5leHRlbmRlZFBob25lIHNwYW57IGNvbG9yOiNmZmY7IH0gLnBob25lTm90ZXsgZm9udC1zaXplOjAuNjg4cmVtIDsgcGFkZGluZy10b3A6N3B4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2RXggeyBjb2xvcjojNDE0MTQxOyBmb250LXNpemU6MXJlbSA7IHRleHQtYWxpZ246bGVmdDsgcGFkZGluZy1sZWZ0OjIwcHg7IHBhZGRpbmctdG9wOjMwcHg7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgZGl2eyBwYWRkaW5nLWxlZnQ6MTBweDsgcGFkZGluZy10b3A6MTBweDsgd2lkdGg6MjAwcHg7IGZsb2F0OmxlZnQ7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgdWx7IG1hcmdpbi1ib3R0b206MjBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgbWFyZ2luLXRvcDo1cHg7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgdWwgbGl7IGxpc3Qtc3R5bGU6bm9uZSBvdXRzaWRlIG5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OjQwcHg7IHRleHQtaW5kZW50Oi0xMHB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVsIGxpIGF7IGNvbG9yOiMzMzM7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjdXJzb3I6cG9pbnRlcjsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBheyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9hcnJvd19yZWQucG5nIikgbm8tcmVwZWF0IHNjcm9sbCAwIDEwcHggdHJhbnNwYXJlbnQ7IGNvbG9yOiMzMzMzMzM7IG1hcmdpbi1yaWdodDoycHg7IHBhZGRpbmc6NnB4IDEwcHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVsIGxpIGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5jb21wYXJlTGlua3MgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmNvbXBhcmVMaW5rcyBhOmhvdmVyeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5lbWFpbEJvZHksIC5lbWFpbFN1YmplY3R7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHVzIGRpdi5lcnJvck1zZyB7IGJhY2tncm91bmQtY29sb3I6I2ZmZGRkZDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvZXJyb3IucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZDsgY29sb3I6I2QxMDAwYzsgZGlzcGxheTpub25lOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gI2NvbnRhY3R1cyBkaXYuZW1haWxTZW50TXNnIHsgYmFja2dyb3VuZC1jb2xvcjojZWZmZmVmOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiL2ltYWdlcy9hY2NlcHRlZC5wbmciKTsgYmFja2dyb3VuZC1wb3NpdGlvbjoxMHB4IGNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBib3JkZXI6MXB4IHNvbGlkICMwOTc3MDA7IGNvbG9yOiMwOTc3MDA7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB9ICNQYWdlRmluYW5jZSAuc3RlcEFjdGl2ZSB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzLzFfaG92ZXIucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IHRvcCB0cmFuc3BhcmVudDsgY29sb3I6IzA1MTQxZjsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjIuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6NDZweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB3aWR0aDo0NnB4OyBtYXJnaW4tbGVmdDoxMHB4OyB9ICNQYWdlRmluYW5jZSAuc3RlcFVuYWN0aXZlIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvMV9yb3VuZC5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50OyBjb2xvcjojRkZGRkZGOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6Mi4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDo0NnB4OyBsaW5lLWhlaWdodDo0NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHdpZHRoOjQ2cHg7IG1hcmdpbi1sZWZ0OjEwcHg7IH0gI1BhZ2VGaW5hbmNlIC50ZXh0MSBzcGFuIHsgY29sb3I6IzQzNDM0MzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuODc1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjQ2cHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI0YzRjNGMzsgd2lkdGg6YXV0bzsgfSAjUGFnZUZpbmFuY2UgZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I0I4RkZCODsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMEI5NjAwOyBjb2xvcjojMEI5NjAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSAub3RoZXJfbGlua3MgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLm90aGVyX2xpbmtzIGE6aG92ZXJ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnByb21vdGlvblNpZGVCdG5BIHsgYmFja2dyb3VuZDojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyBkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxLjI1cmVtIDt3aWR0aDpmaXQtY29udGVudDtoZWlnaHQ6NTNweDtwYWRkaW5nOjJweCAxNXB4IDBweCAxNXB4O2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjUzcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1zaXplOjEwMCU7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjNweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjNweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjBweDsgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMyB7IGJvcmRlci1yaWdodDoxcHggIzkxOTE5MSBzb2xpZDsgcGFkZGluZy1yaWdodDo3MHB4OyBtYXJnaW4tbGVmdDoxNHB4OyBjb2xvcjojNTc1NzU3OyB9IC5mb290ZXJNdWx0aUFkZHJlc3MyIHsgYm9yZGVyLXJpZ2h0OjFweCAjOTE5MTkxIHNvbGlkOyBwYWRkaW5nLXJpZ2h0OjE1MHB4OyBtYXJnaW4tbGVmdDo5M3B4OyBjb2xvcjojNTc1NzU3OyB9IC5mb290ZXJNdWx0aUFkZHJlc3MxIHsgbWFyZ2luLWxlZnQ6MzQ1cHg7IGNvbG9yOiM1NzU3NTc7IH0gLnNtYWxsQWN0aW9uV2Vic2l0ZUNvbG9yIHsgYmFja2dyb3VuZCA6dXJsKCIvaW1hZ2VzL2JsX2JnMi5wbmciKSBsZWZ0IHRvcCByZXBlYXQteDsgY29sb3I6cmdiKDUsMjAsMzEpOyB9IC5zbWFsbEFjdGlvbldlYnNpdGVDb2xvcjpob3ZlcnsgYmFja2dyb3VuZCA6dXJsKCIvaW1hZ2VzL21lbnUxMF9iZy5wbmciKSBsZWZ0IHRvcCByZXBlYXQteDsgY29sb3I6I0ZGRjsgfSAubmF2IGxpIGEudG9wX2xpbmsuaXNCb2xkLCAubmF2IGxpIGEuaXNCb2xkeyBmb250LXdlaWdodDpib2xkOyB9ICNtYWluSGVhZGVyIGRpdi5ib3gxNVBhZGRpbmd7IHBhZGRpbmctdG9wOjE1cHg7IH0gLm5hdiAubm90Q2xpY2thYmxleyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyB9IC5TMTAwUGVyY2VudFdpZHRoeyB3aWR0aDoxMDAlOyB9ICNmaWx0ZXJNYWluQm94IHsgY29sb3I6IzAwMDsgfSAjZmlsdGVyTWFpbkJveCAuZmlsdGVyU3BhbiwgI2ZpbHRlck1haW5Cb3ggLmZpbHRlckNoZWNrLCAjZmlsdGVyTWFpbkJveCAucmFkaW9Tb3J0IHsgY3Vyc29yOnBvaW50ZXI7IH0gLmJDb2RlU3R5bGUgeyBmbG9hdDpsZWZ0OyB3aWR0aDoyNSU7IGZvbnQtc2l6ZTowLjhlbTsgcGFkZGluZy10b3A6MTVweDsgcGFkZGluZy1ib3R0b206MTVweDsgYmFja2dyb3VuZC1jb2xvcjo7IH0gLmJDb2RlU29ydCB7IGZsb2F0OmxlZnQ7IHdpZHRoOjE2JTsgYmFja2dyb3VuZC1jb2xvcjo7IGZvbnQtc2l6ZTowLjhlbTsgcGFkZGluZy10b3A6MTVweDsgcGFkZGluZy1ib3R0b206MTVweDsgfSAuYkNvZGVTb3J0IC5iQ29kZUhlYWRpbmcsIC5iQ29kZVN0eWxlIC5iQ29kZUhlYWRpbmcgeyBtYXJnaW4tYm90dG9tOjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1sZWZ0OjJweDsgfSAucGFnZV9uYW1lNDJ7d2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDEwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMwNTE0MWY7fSAucGFnZV9uYW1lNDIgaDIge2ZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojMDUxNDFmO2ZvbnQtd2VpZ2h0Om5vcm1hbDtib3JkZXI6bm9uZTt9IC5wYWdlX25hbWU0MiBoMi5ub3RmaXJzdCB7Zm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMwNTE0MWY7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbi10b3A6MHB4O3BhZGRpbmctdG9wOjQwcHg7Ym9yZGVyLXRvcDoxcHggI2NjY2NjYyBzb2xpZDt3aWR0aDo5MjBweDt9ICNmaWx0ZXJNYWluQm94Lm5ld2NhcnNzdHlsZTJ7IC1tb3otYm9yZGVyLXJhZGl1czowcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czowcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyLXJhZGl1czowcHg7IGJvcmRlcjpub25lOyBib3JkZXItdG9wOjFweCBzb2xpZCAjYmViZWJlOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYmViZWJlOyB3aWR0aDo5NTVweDsgbGVmdDozcHg7IH0gZGl2LmltZGV2IGxhYmVseyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLXRvcDoxMHB4OyB9IGRpdi5pbWRldiBkaXZ7IGJhY2tncm91bmQ6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjojRDlEOUQ5OyBwYWRkaW5nOjEwcHggMHB4IDEwcHggMHB4OyB3aWR0aDoxMDAlOyBmb250LXNpemU6MC44MTNyZW0gOyB9IGRpdi5pbWRldl9pbm5lciB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbWFyZ2luLWxlZnQ6MzBweDsgd2lkdGg6OTAlICFpbXBvcnRhbnQ7IH0gdWwucXVpeiB7cGFkZGluZzoxMHB4IDAgMTBweCAyMHB4OyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgaGVpZ2h0OjE3NXB4O30gdWwucXVpeiBsaSB7cGFkZGluZzoxMHB4O30gdWwucXVpeiBsaSBpbnB1dCB7bWFyZ2luLXJpZ2h0OjEwcHg7fSAubmV3cy1ib2R5IHt3aWR0aDoxMDAlO3RleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjAuODEzcmVtIDtjb2xvcjojMTkxOTE5O3BhZGRpbmctcmlnaHQ6MTVweDttYXJnaW4tdG9wOi0yMHB4O3BhZGRpbmctYm90dG9tOjEwcHg7fSAubmV3cy1hbGwtdGV4dCB7Y29sb3I6IzE5MTkxOTt9ICNuZXdzQ29udGFpbmVyIC50ZXh0X2JveDExIGltZyB7IG1heC13aWR0aDo2NDBweDsgZGlzcGxheTpibG9jazsgbWFyZ2luOjVweCBhdXRvOyB9ICNuZXdzQ29udGFpbmVyIC51c2VkeyBjbGVhcjpib3RoOyB9IC5ob21lX2FjdGlvbl9hZGogeyB3aWR0aDo5NjFweDsgfSAuaG9tZV9hY3Rpb25fYWRqMiB7IHdpZHRoOjczMHB4IWltcG9ydGFudDsgaGVpZ2h0OjYwMHB4IWltcG9ydGFudDsgfSAuaG9tZV9lbWFpbHsgd2lkdGg6MjMycHg7IG1hcmdpbi1sZWZ0OjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLndpZGdldF9tZW51X2FkajF7IGZvbnQtc2l6ZTowLjhlbTsgfSAud2lkZ2V0X21lbnVfYWRqMnsgZmxvYXQ6cmlnaHQ7cG9zaXRpb246cmVsYXRpdmU7dG9wOi0ycHg7IH0gLndpZGdldF9tZW51X2V4dGVuZGVkUGhvbmV7IGZvbnQtc2l6ZTowLjhlbTsgbWFyZ2luLWxlZnQ6MTA0cHg7IHRvcDoxMzJweDsgfSAud2lkZ2V0X21lbnVfYWRqM3sgZm9udC1zaXplOjAuOGVtO2NvbG9yOiM1NzU3NTc7cG9zaXRpb246cmVsYXRpdmU7bGVmdDotOHB4OyB9IC53aWRnZXRfbWVudV9hZGo0eyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjAuOGVtOyBkaXNwbGF5OnRhYmxlOyBwYWRkaW5nLWJvdHRvbToxMHB4OyB9IC5waG9uZV90ZXh0LnJpZ2h0IHsgZmxvYXQ6bm9uZTsgaGVpZ2h0OmluaXRpYWw7IG1hcmdpbi1sZWZ0OmF1dG87IHdpZHRoOmluaGVyaXQ7IH0gLnBob25lX3RleHQgLnRlbCB7IG1hcmdpbi1sZWZ0OjEwcHg7IH0gLnBob25lX3RleHQgbGFiZWwgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tYm90dG9tOjRweDsgfSAud2lkZ2V0X21lbnVfYWRqNC5yaWdodCB7IHBhZGRpbmctbGVmdDoxMHB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC53aWRnZXRfbWVudV9hZGo0LmxlZnQgeyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHdpZHRoOmluaGVyaXQ7IH0gLndpZGdldF9tZW51X2FkajZ7IGZvbnQtc2l6ZTowLjhlbTtwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Oi0zcHg7Y29sb3I6IzU3NTc1NztjdXJzb3I6cG9pbnRlcjsgfSAud2lkZ2V0X2V4cHJlc3NfbWFpbF9waG9uZV90aXRsZXsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2FhYTt0ZXh0LWFsaWduOiBjZW50ZXI7Zm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctYm90dG9tOjhweDsgcGFkZGluZy10b3A6OHB4OyBjb2xvcjojMDUxNDFmOyB9IC53aWRnZXRfZXhwcmVzc19tYWlsX2FkajF7IHBhZGRpbmc6MTVweCAxMHB4OyBsaW5lLWhlaWdodDo2MHB4OyBmb250LXNpemU6MmVtOyBwYWRkaW5nOjE1cHggMTBweDt0ZXh0LWFsaWduOmNlbnRlcjsgfSAuYmFubmVyUG9wdXBDbG9zZXsgbGVmdDo3MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjE1cHg7IHRvcDoyMHB4OyBjdXJzb3I6cG9pbnRlcjsgfSAucHJpY2VOb3RlIHsgY29sb3I6Izc1NzU3NTsgZm9udC1zdHlsZTppdGFsaWM7IHRleHQtYWxpZ246anVzdGlmeTsgZGlzcGxheTpibG9jazsgcGFkZGluZy1yaWdodDoxMHB4OyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjE0cHg7IH0gLnN0YWNrZWREaXNjbGFpbWVyeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjEwcHg7IH0gc3Bhbi5zdGFja2VkRGlzY2xhaW1lcjpiZWZvcmV7IGNvbnRlbnQ6IioqIjsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZToxcmVtOyB9IC50b3ByaW50eyBkaXNwbGF5Om5vbmU7IH0gLnJlZmZlcmVuY2VDb250ZW50RGVtbywgLnJlZmZlcmVuY2VDb250ZW50Q2xlYXJhbmNleyBwYWRkaW5nOjMwcHggMjBweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYzsgbWFyZ2luLWJvdHRvbToyMHB4OyB9IC5ib3gyX2RldGFpbHNfdGV4dDIgLmNvbXBhcmVCdXR0b24sIC5ib3gyX2RldGFpbHNfdGV4dDIyIC5jb21wYXJlQnV0dG9ueyBwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luLXRvcDotMjBweDsgei1pbmRleDoxOyBsZWZ0Oi0zMHB4OyB9IC52ZHB7IGNsZWFyOmJvdGg7IHdpZHRoOjE2MHB4OyB9IC5jb21wYXJlQnV0dG9ueyB0cmFuc2l0aW9uOmJveC1zaGFkb3cgMC4yNXMgZWFzZS1vdXQgMHM7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuMjVzIGVhc2Utb3V0IDBzOyBkaXNwbGF5Om5vbmU7IH0gZGl2I3NsaWRlci1wcm8tMTIgeyBib3JkZXI6MXB4IHNvbGlkICNFQkVCRUI7IGJvcmRlci1yYWRpdXM6M3B4OyBiYWNrZ3JvdW5kOiNmZmY7IH0gI3NsaWRlclByb21vQWxlcnR7IGJvcmRlci1yYWRpdXM6M3B4IDNweCAwIDA7IH0gLnNsaWRlLXdyYXBwZXJ7IGJvcmRlci1yYWRpdXM6M3B4OyB9ICNzbGlkZWl0IGxhYmVsLm9wZW57IGJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7IH0gaW1nLmltYWdlIHsgYm9yZGVyLXJhZGl1czozcHg7IH0gLm5ld1ZkcFZpZXdlciAuY29tcGFyZUJ1dHRvbnsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbToycHg7IHJpZ2h0OjBweDsgei1pbmRleDoxMTExOyB9IC5saXZlQWxlcnRfbGlua3sgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmxpdmVBbGVydF9saW5rOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuYnV0dG9uLXRvYXN0cnsgYmFja2dyb3VuZDojRkZGO3BhZGRpbmc6NHB4IDIwcHg7Ym9yZGVyLXJhZGl1czo1cHg7IGNvbG9yOiNCRDM2MkYhaW1wb3J0YW50OyB9IC5idXR0b24tdG9hc3RyOmhvdmVyeyBiYWNrZ3JvdW5kOiMwMDA7IGNvbG9yOiNGRkY7IH0gLnJldHVyblBvcHVwX3N1Ym1pdCBzcGFuIHsgcG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50OyB0b3A6NTAlIWltcG9ydGFudDsgZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudDsgbGVmdDowIWltcG9ydGFudDsgcmlnaHQ6MCFpbXBvcnRhbnQ7IHBhZGRpbmc6MCA4cHggMCA4cHghaW1wb3J0YW50OyBjdXJzb3I6cG9pbnRlciFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBtYXJnaW46MCFpbXBvcnRhbnQ7IGNvbG9yOiNGRkYhaW1wb3J0YW50OyBtYXJnaW4tdG9wOi05cHghaW1wb3J0YW50OyB9IHJldHVyblBvcHVwX3N1Ym1pdDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6IzBiYjFlMDsgY29sb3I6I2ZmZjsgfSAucmV0dXJuUG9wdXBfc3VibWl0IHsgZGlzcGxheTpibG9jazsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItcmFkaXVzOjVweDsgbGVmdDoyMjhweDsgei1pbmRleDo1OyB3aWR0aDoyMjVweDsgaGVpZ2h0OjQwcHg7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IHRleHQtc2hhZG93OjFweCAxcHggIzAwMmI0NjsgY29sb3I6I2ZmZjsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLWNvbG9yOiMzMzMzMzM7IGZvbnQtc2l6ZToxcmVtIDsgbGluZS1oZWlnaHQ6MTlweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9ICNyZXR1cm5Qb3B1cEZvcm1fd3JhcHBlciB7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6cmdiYSg2Niw2Niw2NiwxKTsgYm9yZGVyLXN0eWxlOm5vbmU7IGJvcmRlci1yYWRpdXM6MTFweDsgbGVmdDoyODBweDsgdG9wOjE1NXB4OyB6LWluZGV4OjI7IHdpZHRoOjUzMXB4OyBoZWlnaHQ6Mzg0cHg7IHBvc2l0aW9uOmFic29sdXRlOyB9ICNyZXR1cm5Qb3B1cFRpbHRleyB3aWR0aDozMzVweDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjoyMHB4OyBjb2xvcjojMDUxNDFmOyBmb250LXNpemU6MS4xMjVyZW0gOyB9ICNyZXR1cm5Qb3B1cFRpbHRlIC5ycF9tY3sgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7IH0gI3JldHVyblBvcHVwVGlsdGUyeyBjb2xvcjojRkZGOyBtYXJnaW46MjBweCAxMHB4IDIwcHggMjBweDsgcGFkZGluZzowOyB9IC5yZXR1cm5Qb3B1cEZvcm1fbGFiZWwgeyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE0cHg7IGNvbG9yOiNiZmJmYmY7IG1hcmdpbi1sZWZ0OjIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5yZXR1cm5Qb3B1cEZvcm1fdGFibGUgdHIgdGR7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLnJwX21jIHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGNvbG9yOiMwNTE0MWYhaW1wb3J0YW50OyBwYWRkaW5nOjAhaW1wb3J0YW50OyBtYXJnaW46MCFpbXBvcnRhbnQ7IH0gI2V4aXRQb3B1cENvbnRhaW5lcnsgcGFkZGluZzowOyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IH0gI2V4aXRfcG9wdXBfYWNjdXRyYWRlX2Zvcm17IGhlaWdodDozNHJlbTsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wb3B1cHMvdHJhZGVpbi1leGl0cG9wdXAtZnIucG5nKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1leGl0LXBvcHVwLWJnY29sLCAjZWVlKTsgfSBib2R5LkVOR0xJU0ggI2V4aXRfcG9wdXBfYWNjdXRyYWRlX2Zvcm17IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcG9wdXBzL3RyYWRlaW4tZXhpdHBvcHVwLWVuLnBuZyk7IH0gLmV4aXRfcG9wdXBfYnV0dG9ucyBidXR0b24geyB3aWR0aDoxMXJlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuZXhpdF9wb3B1cF90ZXh0X2xpbmVfMnsgbWFyZ2luLXRvcDoyN3B4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAuZXhpdF9wb3B1cF90ZXh0X2xpbmVfM3sgZm9udC1zaXplOjEuNjI1cmVtIDsgbWFyZ2luLWJvdHRvbTozcHg7IGZvbnQtd2VpZ2h0OmJvbGRlcjsgfSAuZXhpdF9wb3B1cF90ZXh0X2xpbmVfNSB7IG1hcmdpbi1ib3R0b206MjBweDsgZm9udC1zaXplOjEuNjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZGVyOyBtYXJnaW4tdG9wOjYzcHg7IH0gI2V4aXRfcG9wdXBfYWNjdXRyYWRlX3RpdGxleyBoZWlnaHQ6OTVweDsgd2lkdGg6NTcwcHg7IG1hcmdpbi10b3A6MjBweDsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGUuX0ZSRU5DSHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wb3B1cHMvYWNjdS10cmFkZS1leGl0LXRpdGxlX2ZyLnBuZyk7IH0gI2V4aXRfcG9wdXBfYWNjdXRyYWRlX3RpdGxlLl9FTkdMSVNIeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy9hY2N1LXRyYWRlLWV4aXQtdGl0bGVfZW4ucG5nKTsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXJ7IHdpZHRoOjQ4MHB4OyBoZWlnaHQ6NTEwcHg7IH0gI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIC5wb3B1cF9iZ3sgd2lkdGg6NDgwcHg7IGhlaWdodDo1MTVweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9wb3B1cHMvZnIvYmVzdFByaWNlTmV3VmRwLnBuZycpOyB9IC5wb3B1cF9iZ3sgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLXNpemU6NDgwcHggNTE1cHg7IH0gLnBvcHVwRm9ybSAuYXN0ZXJpc2t7IGNvbG9yOiNkMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOmluaGVyaXQ7IG1hcmdpbjowOyB9IC5wb3B1cEZvcm17IHotaW5kZXg6NTA7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MjQ4cHg7IGhlaWdodDoyNDlweDsgbGVmdDo4MHB4OyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9jb3Vwb24tZm9ybS1iZy0yLnBuZyIpIG5vLXJlcGVhdDsgd2lkdGg6MzM1cHg7IHBhZGRpbmc6MzBweDsgfSAucG9wdXBGb3JtVGl0bGV7IGhlaWdodDo0MHB4OyBtYXJnaW46OHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBmb250LXdlaWdodDpib2xkOyB9IC5wb3B1cEZvcm1JbnB1dHMgdGQgeyBmb250LXNpemU6MC44NzVyZW0gOyB0ZXh0LWFsaWduOnJpZ2h0OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHBhZGRpbmctYm90dG9tOjNweDsgfSAucG9wdXBGb3JtIGlucHV0eyB3aWR0aDoyMTBweDsgfSAjYXNQdXJjaGFzZUludGVudHsgd2lkdGg6NjAwcHg7IHBhZGRpbmc6MzBweCAzMHB4OyBoZWlnaHQ6YXV0bzsgY29sb3I6IzAwMDsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyB6LWluZGV4OjEwMDAwMjE7IH0gI3Byb21vRGlzY292ZXJCdXR0b257IH0gLm5ld1ZkcFZpZXdlciB7IHdpZHRoOjY0MHB4OyBoZWlnaHQ6NDgwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjIwcHg7IH0gLmxvY2F0aW9uLW5hbWVzIHsgcG9zaXRpb246c3RhdGljOyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyA+IHVsLnN1YiA+IGxpID4gdWwgeyBwb3NpdGlvbjpzdGF0aWM7IH0gLmltZ19tZW51LnVwX21lbnUgdWwubmF2IHVsLnN1YiBsaSAubG9jYXRpb24tbmFtZXMgeyBtaW4td2lkdGg6MjAwcHg7IH0gI01haW5NZW51X0RFQUxFUlNISVBTIGxpLmxvY2F0aW9uLW5hbWVzIHsgbWluLXdpZHRoOjIwMHB4OyB9IC5sb2NhdGlvbi1uYW1lcywgLmxvY2F0aW9uLW5hbWVzIGxpIHsgbGlzdC1zdHlsZTpub25lOyB9IC5MMTAwIHsgbGVmdDoxMDAlOyB9IC5SMTAwIHsgcmlnaHQ6MTAwJTsgfSAubG9jYXRpb24tbmFtZXMgLmxvY2F0aW9uLWRldGFpbHMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHBhZGRpbmc6MTRweDsgYm94LXNoYWRvdzowIDZweCAxMnB4IHJnYmEoMCwwLDAsLjE3NSk7IGRpc3BsYXk6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgbWluLXdpZHRoOjI5MHB4OyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyA+IC50aXRsZSB7IG1hcmdpbi1ib3R0b206MWVtOyBmb250LXNpemU6aW5pdGlhbDsgY29sb3I6IzAwMDAwMDsgfSAubG9jYXRpb24tbmFtZXMgLmxvY2F0aW9uLWRldGFpbHMgPiAubG9jYXRpb24tZGV0YWlscy1sb2dvID4gaW1nIHsgbWF4LXdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206OHB4OyB9IGxpLmxvY2F0aW9uLW5hbWVzOmhvdmVyIC5sb2NhdGlvbi1kZXRhaWxzIHsgZGlzcGxheTpibG9jazsgfSBsaS5sb2NhdGlvbi1uYW1lczpob3ZlciAubWFpbm1lbnUtc3VibWVudSB7IG9wYWNpdHk6MTsgdmlzaWJpbGl0eTp2aXNpYmxlOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyAubG9jYXRpb24tZGV0YWlscy1sb2dvIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNTsgbWFyZ2luLWJvdHRvbTo4cHg7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyAubG9jYXRpb24tbmFtZXMgLm1haW5tZW51LXN1Ym1lbnUgLmxvY2F0aW9uLWRldGFpbHMgeyBtYXgtaGVpZ2h0OjYwdmg7IHBvc2l0aW9uOnN0YXRpYzsgfSAudXBfbWVudSB1bC5uYXYgLmxvY2F0aW9uLWRldGFpbHMtaW5mbyBhIHsgY29sb3I6IzA1MTQxZjsgcGFkZGluZzowOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gLmxvY2F0aW9uLXNwYWNpbmctbWwtMTMgeyBtYXJnaW4tbGVmdDoxMy40OXB4OyB9IC51cF9tZW51IHVsLm5hdiBsaS5kZXRhaWxzLWluZm8tbGluayBhIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnVwX21lbnUgdWwubmF2IC5kZXRhaWxzLWluZm8tbGluazpob3ZlciBhIHsgY29sb3I6IzA1MTQxZjsgfSAjTWFpbk1lbnVfREVBTEVSU0hJUFMgPiB1bC5zdWIgPiBsaSA+IHVsIHsgbWF4LWhlaWdodDo2MHZoOyBvdmVyZmxvdy15OmF1dG87IG92ZXJmbG93LXg6aGlkZGVuOyB9IGJvZHkgLndyYXBwZXIgLnVwX21lbnUgLm5hdiA+IGxpOmhvdmVyIHVsLnN1YiBsaTpob3ZlciAuZGV0YWlscy1pbmZvLWxpbmsgbGk6aG92ZXIgYSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IGNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSBsaS5kZXRhaWxzLWluZm8tbGluazpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZjsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvIHVsIGxpIHsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWJvdHRvbTo0cHg7IGZvbnQtd2VpZ2h0OjIwMDsgZm9udC1zaXplOjAuODc1cmVtIDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmxvY2F0aW9uLWRldGFpbHMtaW5mbyA+IHVsID4gbGk6YmVmb3JlIHsgY29udGVudDoiICI7IGJvcmRlcjpzb2xpZDsgYm9yZGVyLXdpZHRoOjAgMnB4IDJweCAwOyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzoycHg7IGJvcmRlci1yYWRpdXM6MnB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyBtYXJnaW4tcmlnaHQ6N3B4OyBtYXJnaW4tYm90dG9tOjFweDsgfSAjTWFpbk1lbnVfREVBTEVSU0hJUFMgdWwgeyBwYWRkaW5nOjA7IH0gQG1lZGlhIHByaW50eyAudG9wcmludHsgZGlzcGxheTpibG9jazt9IH0gLm1yLTE1IHsgbWFyZ2luLXJpZ2h0OjE1cHg7IH0gLm1sLTE1IHsgbWFyZ2luLWxlZnQ6MTVweDsgfSAubWwtNyB7IG1hcmdpbi1sZWZ0OjdweDsgfSBzcGFuLmFycm93IHsgYm9yZGVyOnNvbGlkOyBib3JkZXItd2lkdGg6MCAycHggMnB4IDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjJweDsgYm9yZGVyLXJhZGl1czoxcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTJweDsgfSBzcGFuLmFycm93LmFycm93LWxhcmdlIHsgYm9yZGVyLXdpZHRoOjAgM3B4IDNweCAwOyBwYWRkaW5nOjRweDsgYm9yZGVyLXJhZGl1czozcHg7IH0gc3Bhbi5hcnJvdy5hcnJvdy1yaWdodCB7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IH0gc3Bhbi5hcnJvdy5hcnJvdy1sZWZ0IHsgdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTsgfSBzcGFuLmFycm93LmFycm93LXVwIHsgdHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpOyB9IHNwYW4uYXJyb3cuYXJyb3ctZG93biB7IHRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOyB9IC50b3BiYXIzYnRuV3JhcHsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmZmZmOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGhlaWdodDo0MnB4OyBwYWRkaW5nOjAgMjBweDsgY29sb3I6I2ZmZmZmZjsgfSAudG9wYmFyM2J0bnsgZm9udC13ZWlnaHQ6Ym9sZDsgdHJhbnNpdGlvbjouMnM7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7IGJvcmRlci1jb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6aW5oZXJpdDsgfSAudHJhZGVJbkJhcl9idG57IGZvbnQtd2VpZ2h0OmJvbGQ7IGJvcmRlci1yYWRpdXM6NXB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlcikpOyB0cmFuc2l0aW9uOi4yczsgYm9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6d2hpdGU7IGJvcmRlci1jb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGN1cnNvcjpwb2ludGVyOyBoZWlnaHQ6NTBweDsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjogI2ZmZmZmZjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmZmZmOyBtaW4td2lkdGg6MjAwcHg7IG1heC13aWR0aDoyMDBweDsgfSAudHJhZGVJbkJhcl9idG46aG92ZXIsLnRvcGJhcjNidG5XcmFwOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYhaW1wb3J0YW50OyB9ICNnUmF0aW5nTGFyZ2V7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzAwMDAwMDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjVweCAwcHg7IG1hcmdpbi10b3A6NXB4OyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czozcHg7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoxNTBweDsgbWFyZ2luLWxlZnQ6MzBweDsgfSAjZ1JhdGluZ3sgY3Vyc29yOnBvaW50ZXI7IH0gLnRyYWRlSW5WaW5JbnB1dHsgaGVpZ2h0OjUwcHg7IGJvcmRlci1yYWRpdXM6NXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgI2ZmZmZmZjsgfSAudHJhZGVJblZpbklucHV0OjpwbGFjZWhvbGRlcnsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojM2MzODM2OyB9IC50cmFkZUluT3JMYWJlbHsgbWF4LXdpZHRoOjI1cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyeyB3aWR0aDoxMDAlOyBwYWRkaW5nOjEycHg7IG1hcmdpbi10b3A6MTBweDsgZm9udC1zaXplOjFyZW0gOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0eyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3RMYWJlbHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbjowIDEycHg7IGN1cnNvcjpwb2ludGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQrbGFiZWx7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIGJsYWNrOyB9IC50cmFkaW5TZWxlY3RXeyBtaW4td2lkdGg6MjAwcHg7IG1heC13aWR0aDoyMDBweDsgfSAudHJhZGluU2VsZWN0Vy53aXRoVklOTWFrZXsgbWluLXdpZHRoOjE0MHB4OyBtYXgtd2lkdGg6MTQwcHg7IH0gLnRyYWRpblNlbGVjdFcud2l0aFZJTlllYXJ7IG1pbi13aWR0aDo4MHB4OyBtYXgtd2lkdGg6ODBweDsgfSAudHJhZGluSW5wdXRXeyBtaW4td2lkdGg6MjAwcHg7IG1heC13aWR0aDoyMDBweDsgfSAudHJhZGluU2VsZWN0QXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnRyYWRpblNlbGVjdEE6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSAudHJhZGluU2VsZWN0eyBjb2xvcjojM2MzODM2OyBib3JkZXI6MnB4IHNvbGlkICNmZmZmZmY7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjEwcHggMTBweDsgZm9udC1zaXplOjFyZW0gOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgd2lkdGg6MTAwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBwYWRkaW5nLXJpZ2h0OjI3cHg7IGhlaWdodDo1MHB4OyB9IC50cmFkaW5TZWxlY3Q6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyB3aWR0aDo1NjhweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyB9IC51aS1tdWx0aXNlbGVjdC1tZW51LnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgbWluLXdpZHRoOjI3MnB4OyB6LWluZGV4OjEwMDAwMjA7IG1heC1oZWlnaHQ6MTIwcHg7IG92ZXJmbG93OnNjcm9sbDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IH0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyRGVhbGVyU3RlcE1ha2VNb2RlbFllYXJ7IGZvbnQtd2VpZ2h0OjcwMDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgc3BhbnsgbWFyZ2luOjAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAhaW1wb3J0YW50OyBjb2xvcjojMDAwMDAwIWltcG9ydGFudDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTAyNHB4KSB7IC50cmFkaW5TZWxlY3RXIHsgbWluLXdpZHRoOmNhbGMoKDIwMHB4IC0gdmFyKC0tcykpIC0gdmFyKC0tcywgMC41cmVtKSk7IG1heC13aWR0aDpjYWxjKCgyMDBweCAtIHZhcigtLXMpKSAtIHZhcigtLXMsIDAuNXJlbSkpOyB9IH0gI2dvb2dsZVJldmlld3NGb290ZXJ7IG1hcmdpbjowIGF1dG87IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czo1cHg7IG1heC13aWR0aDo5NDBweDsgaGVpZ2h0OjI3NXB4OyB9IC5yZXZpZXctaXRlbSB7IGZsb2F0OmxlZnQ7IGhlaWdodDoxODVweDsgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjQ2MHB4OyBtYXJnaW4tcmlnaHQ6MTBweDsgYm9yZGVyLXRvcDo0cHggc29saWQgI0VCRUJFQjsgcGFkZGluZy10b3A6MTBweDsgfSAuZmlyc3RjaGFydXA6OmZpcnN0LWxldHRlcnsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9IEkuaWNvbi1jb21wYXJlLTEsIHNwYW4uaWNvbi1jb21wYXJlLTF7IGNvbG9yOiMwNTE0MWY7IH0gSS5pY29uLWNvbXBhcmUtMTpob3Zlciwgc3Bhbi5pY29uLWNvbXBhcmUtMTpob3ZlcnsgY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzojMDUxNDFmIDFweCAxcHgsICMwNTE0MWYgLTFweCAxcHgsICMwNTE0MWYgLTFweCAtMXB4LCAjMDUxNDFmIDFweCAtMXB4OyBib3JkZXItcmFkaXVzOjIwcHg7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgfSAuZ1JhdGluZy1pY29uIGkgeyBmb250LXNpemU6MS4wNjNyZW0gOyB9IC5nUmF0aW5nLWljb24jZ1JhdGluZyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB3aWR0aDo5MHB4OyBoZWlnaHQ6MjhweDsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjp3aGl0ZTsgY29sb3I6I2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgZ2FwOjdweDsgfSAuZ1JhdGluZy1pbWcjZ1JhdGluZyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvZ3JhdGluZy5wbmcpOyBjb2xvcjojMzU2Q0YyOyB3aWR0aDo5NXB4OyBoZWlnaHQ6MjhweDsgcGFkZGluZzo0cHggMzFweCAxMHB4IDEwcHg7IG1hcmdpbi10b3A6MXB4OyB9ICNnUmF0aW5neyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IH0gSU5QVVRbdHlwZT0idGV4dCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJ0ZWwiXS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gSU5QVVRbdHlwZT0iZW1haWwiXS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gSU5QVVRbdHlwZT0icGFzc3dvcmQiXS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gSDEuZGVmYXVsdHsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzA1MTQxZjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjAgMCAyNXB4IDA7IH0gSDEuZGVmYXVsdCBBeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBIMS5kZWZhdWx0IEkuaWNvbiwgSDEuZGVmYXVsdCBzcGFuLmljb24geyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIzcHg7IGhlaWdodDoyOXB4OyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctbGVmdDoxMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS41NjNyZW0gOyBtYXJnaW4tcmlnaHQ6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gSDEuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDEsIEgxLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjEwcHg7IH0gSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxLCBIMS5kZWZhdWx0IHNwYW4uaWNvbi5zaW5nbGVMaW5lSDF7IG1hcmdpbi10b3A6MnB4OyB9IEgxLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjEuMTI1cmVtIDsgfSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMyl7IGZvbnQtc2l6ZTowLjhyZW07IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiNiYmI7IHBhZGRpbmctdG9wOjVweDsgfSBoMS5ja2VkaXRvci1kZWZhdWx0IHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjIuMTI1cmVtIDsgcGFkZGluZzowIDAgMTVweCAwOyBjb2xvcjojMDUxNDFmOyB9IGgxLmNrZWRpdG9yLWRlZmF1bHQ6OmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDU0IjsgZm9udC1mYW1pbHk6Rm9udEF3ZXNvbWU7IHdpZHRoOjI4cHg7IGhlaWdodDozNXB4OyBtYXJnaW4tcmlnaHQ6MTBweDsgcGFkZGluZzo0cHggMCAwIDExcHg7IGJvcmRlci1yYWRpdXM6NDFweDsgZm9udC1zaXplOjEuOTM4cmVtIDsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gSDIuZGVmYXVsdHsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMwNTE0MWY7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY2xlYXI6Ym90aDsgcGFkZGluZzoxMHB4IDA7IG1hcmdpbi10b3A6MTBweDsgfSBIMi5kZWZhdWx0IEkuaWNvbiwgSDIuZGVmYXVsdCBzcGFuLmljb257IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjBweDsgaGVpZ2h0OjI1cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjlweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMzc1cmVtIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IEgyLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgyLCBIMi5kZWZhdWx0IHNwYW4uaWNvbi5tdWx0aUxpbmVIMnsgbWFyZ2luLXRvcDo3cHg7IH0gSDIuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgyLCBIMi5kZWZhdWx0IHNwYW4uaWNvbi5zaW5nbGVMaW5lSDJ7IG1hcmdpbi10b3A6MHB4OyB9IEgyLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IEgyLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBIMi5kZWZhdWx0LmNyZWRzaWlVc2VkTWluSGVpZ2h0IC5UaXRsZVRleHQgeyB3aWR0aDo4MCU7IH0gSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkICNmaXJzdFNsaWRlckltZyAucGxhY2Vob2xkZXJ7IHdpZHRoOjgwMHB4OyBoZWlnaHQ6NjAwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCAjZmlyc3RTbGlkZXJJbWcgSU1HeyBtYXgtd2lkdGg6ODAwcHg7IG1heC1oZWlnaHQ6NjAwcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IHsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC1zaXplOjEuNDM4cmVtIDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgSS5pY29uLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgc3Bhbi5pY29uIHsgd2lkdGg6MjhweDsgaGVpZ2h0OjM1cHg7IGZvbnQtc2l6ZToxLjkzOHJlbSA7IHBhZGRpbmctbGVmdDoxMXB4OyBib3JkZXItcmFkaXVzOjQxcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMSwgQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IHNwYW4uaWNvbi5tdWx0aUxpbmVIMXsgbWFyZ2luLXRvcDoxMXB4OyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDoxcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMi5kZWZhdWx0IHsgZm9udC1zaXplOjEuODc1cmVtIDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC1zaXplOjEuMTg4cmVtIDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQuY3JlZHNpaVVzZWRNaW5IZWlnaHQgLlRpdGxlVGV4dCB7IHdpZHRoOjkwJTsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgyLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgyeyBtYXJnaW4tdG9wOjExcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMi5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDIsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBzcGFuLmljb24uc2luZ2xlTGluZUgyeyBtYXJnaW4tdG9wOjRweDsgfSB9ICNjaXR5VGl0bGUge2NvbG9yOiMwNTE0MWY7fSAubWFpbl9sZWZ0X2JveCB7IGNvbG9yOiMwNTE0MWY7IH0gLmRpdlRhYmxlIHsgZGlzcGxheTp0YWJsZTsgfSAuZGl2VGFibGUuYWxpZ24tY2VudGVyIHsgbWFyZ2luOjAgYXV0bzsgfSAuZGl2VGFibGUgLmZvcm1zX2JveDIyLCAuZGl2VGFibGUgZm9ybVtuYW1lPSJzZW5kRW1haWxGb3JtIl0geyB3aWR0aDo5NDBweDsgfSAuZGl2VGFibGUgLnRleHQzMCB7IHdpZHRoOjEwMCU7IH0gLnNlcnZpY2UtdGl0bGUgeyBtYXJnaW4tdG9wOjIwcHg7IH0gLmZ1bGxXaWR0aEZvcm0gLmZvcm1zX2JveDIyIHsgd2lkdGg6MTAwJTsgbWFyZ2luLWxlZnQ6MDsgbWFyZ2luLXJpZ2h0OjA7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZnVsbFdpZHRoRm9ybSAudGV4dDMwIHsgd2lkdGg6MTAwJTsgfSAuZm9ybS1ncm91cCB7IG1hcmdpbi1ib3R0b206MTVweDsgfSAuaW5saW5lLWZvcm0tZ3JvdXAgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuZm9ybS1ncm91cCBsYWJlbCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXgtd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0OjcwMDsgfSAuZGl2U2VhcmNoTXNnIHsgZm9udC1zaXplOjAuOXJlbTsgbWFyZ2luOjIwcHggMCAwIDA7IHBhZGRpbmc6MTVweDsgYmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3OyBib3JkZXItcmFkaXVzOjVweDsgY2xlYXI6Ym90aDsgfSAuY3JlZHNpaU5ldyB7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDo0NzBweDsgbWluLXdpZHRoOjMwMHB4OyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBoZWlnaHQ6YXV0bzsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyByaWdodDowOyB9IC5jcmVkc2lpTmV3VkRQIHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjM1MHB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlVc2VkTWluSGVpZ2h0IHsgbWluLWhlaWdodDoxMzBweDsgfSAuY3JlZHNpaUZpbmFuY2UgeyBkaXNwbGF5OmJsb2NrOyBtYXgtd2lkdGg6OTYwcHg7IG1pbi13aWR0aDozMDBweDsgd2lkdGg6MTAwJTsgY3Vyc29yOnBvaW50ZXI7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDoxMjVweDsgbWFyZ2luLXRvcDoxNXB4OyB9IC5jcmVkc2lpRmluYW5jZSAuY3JlZHNpaS13aWRnZXQtY29udGFpbmVyeyBtYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0gLmNyZWRzaWlGaW5hbmNlTWVudSB7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDozNDVweDsgbWluLXdpZHRoOjMwMHB4OyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBoZWlnaHQ6YXV0bzsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDowOyByaWdodDowOyB9IC5jcmVkc2lpRGl2IC5jcmVkc2lpRmluYW5jZU1lbnUgeyBtYXgtd2lkdGg6Mzc1cHg7IH0gLmNyZWRzaWlGaW5hbmNlTWVudSAuY3JlZHNpaS13aWRnZXR7IGJvcmRlcjowOyB9IC5wcm9tby1jYXJkIHsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDphdXRvOyBtYXJnaW4tYm90dG9tOjEwcHg7IGJhY2tncm91bmQtY29sb3I6I2YxZjFmMTsgcGFkZGluZzoyMHB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLnByb21vLWJvZHkgLnBpY19ib3gyIHsgbWluLWhlaWdodDoxMzBweDsgfSAucHJvbW8taG92ZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IC13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4zczsgLW1vei10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbXMtdHJhbnNpdGlvbjphbGwgMC4zczsgLW8tdHJhbnNpdGlvbjphbGwgMC4zczsgdHJhbnNpdGlvbjphbGwgMC4zczsgb3BhY2l0eTowOyB9IC5wcm9tby1ib2R5OmhvdmVyIC5wcm9tby1ob3ZlciB7IG9wYWNpdHk6MTsgfSAucHJvbW8tYm9keTpob3ZlciAucHJvbW8taW5mbyB7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEsMSk7IH0gLnByb21vLW1hc2sgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpOyB9IC5wcm9tby1pbmZvIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgcmlnaHQ6MDsgdG9wOjUwJTsgd2lkdGg6MzUlOyBtYXJnaW46YXV0bzsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjI1cHg7IC1tb3otYm9yZGVyLXJhZGl1czoyNXB4OyBib3JkZXItcmFkaXVzOjI1cHg7IC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNTAlKSBzY2FsZSgwLDApOyAtd2Via2l0LWJveC1zaGFkb3c6MCAwIDEwcHggNXB4IHJiZ2EoMCwwLDAsMC4yKTsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IDVweCByYmdhKDAsMCwwLDAuMik7IGJveC1zaGFkb3c6MCAwIDEwcHggNXB4IHJiZ2EoMCwwLDAsMC4yKTsgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbW96LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tcy10cmFuc2l0aW9uOmFsbCAwLjNzOyAtby10cmFuc2l0aW9uOmFsbCAwLjNzOyB0cmFuc2l0aW9uOmFsbCAwLjNzOyB9IC5mb3JtLWVuZCB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5mb3JtLWVuZCAuYnRuLXdyYXBwZXIgeyBtYXJnaW46MCBhdXRvOyB9IC5mb3JtLWVuZCAuZW1wdHktc3BhY2UgeyBtYXJnaW46YXV0bzsgfSAuZm9ybS1lbmQgLnByb21vLWJ0biB7IHBvc2l0aW9uOmluaXRpYWw7IH0gLmZvcm0tZW5kIC5wcmludCB7IG1hcmdpbi1sZWZ0OmF1dG87IHdpZHRoOmluaXRpYWw7IH0gLnByb21vLWJ0biB7IHBhZGRpbmc6MTBweCAxMHB4IDEwcHggMTBweDsgd2lkdGg6MTAwJTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyOjFweCBzb2xpZDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIpKTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwb3NpdGlvbjphYnNvbHV0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItY29sb3I6dmFyKC0tcHJvbW8tYnRuLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1cyk7IHRyYW5zaXRpb246MC4yNXM7IH0gLnByb21vcyB7IGJhY2tncm91bmQ6I2YxZjFmMTsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgcG9zaXRpb246cmVsYXRpdmU7IGN1cnNvcjpkZWZhdWx0OyBtYXJnaW46MTJweCAxMHB4OyBkaXNwbGF5OiBncmlkOyBncmlkLXJvdzpzcGFuIDg7IGdyaWQtY29sdW1uOnNwYW4gMTsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnN1YmdyaWQ7IGdyaWQtdGVtcGxhdGUtcm93czpzdWJncmlkOyB9IC5wcm9tb3MgLmhlYWRlciB7IGdyaWQtYXJlYTpoZWFkZXI7IH0gI3NlcnZpY2UgLnByb21vcyAucHJvbW8tY29udGVudHsgZGlzcGxheTpibG9jazsgZ3JpZC1yb3c6YXV0bzsgfSAucHJvbW9zIC5wcm9tby1jb250ZW50IHsgZ3JpZC1hcmVhOmNvbnRlbnQ7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWQ7IGdyaWQtcm93OjIgLyA3OyB9IC5wcm9tb3MgLnByb21vLWZvb3RlciB7IGdyaWQtYXJlYTpmb290ZXI7IHBhZGRpbmc6MCAxNXB4IDE1cHggMTVweDsgfSAucHJvbW9zOmhvdmVyIC5wcm9tby1idG4sIC5wcm9tby1idG46aG92ZXIgeyBjb2xvcjp2YXIoLS1wcm9tby1idG4taG92ZXItdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLWJnLWNvbG9yKTsgYm9yZGVyLWNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgfSAucHJvbW9zIC5wcm9tby1idG4geyB3aWR0aDppbmhlcml0OyBwb3NpdGlvbjppbml0aWFsOyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOjE1cHggNDVweDsgfSAucHJvbW9zLnByb21vLXNtYWxsIC5wcm9tby1idG4geyBwYWRkaW5nOjEwcHggMjVweDsgfSAucHJvbW8tYnJlYWsgeyBib3JkZXItdG9wOjFweCBzb2xpZCAjYWJhYmFiOyBwYWRkaW5nLXRvcDoxMHB4OyBtYXJnaW46MTVweCAwOyB9IC5wcm9tby1pbWFnZSwgLnByb21vLWRldGFpbHMtaW1hZ2UgeyBvdmVyZmxvdzpoaWRkZW47IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgLW1vei1ib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYmFja2dyb3VuZC1zaXplOmNvbnRhaW47IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGFzcGVjdC1yYXRpbzp2YXIoLS1wcm9tby1pbWctcmF0aW8sIG5vbmUpOyB9IC5wcm9tby1kZXRhaWxzLWltYWdleyB3aWR0aDoxMDAlOyB9IC5wcm9tb3M6aG92ZXIgLnByb21vLWltYWdlIGltZyB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMSk7IC1tb3otdHJhbnNmb3JtOnNjYWxlKDEuMSk7IC1tcy10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW8tdHJhbnNmb3JtOnNjYWxlKDEuMSk7IHRyYW5zZm9ybTpzY2FsZSgxLjEpOyB9IC5wcm9tby1pbWFnZSBpbWcgeyBtYXgtd2lkdGg6MTAwJTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMXM7IGRpc3BsYXk6dGFibGUtY2VsbDsgbWFyZ2luOjAgYXV0bzsgfSAucHJvbW8tYm9keSB7IHBhZGRpbmc6MTVweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnByb21vLWJvZHkuZ3JpZCB7IGRpc3BsYXk6Z3JpZDsgaGVpZ2h0OjEwMCU7IGdyaWQtdGVtcGxhdGUtcm93czoxZnIgM2ZyOyB9IC5wcm9tby1ib2R5LmdyaWQgLnByb21vLWNhcHRpb24uaGVhZGVyIHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLXJvd3M6MWZyIGF1dG87IH0gLnByb21vLWNvbnRlbnQucGFkZGVkIHsgcGFkZGluZzoxNXB4OyB9IC5wcm9tby1kZXNjIHsgZGlzcGxheTpub25lOyB9IC5wcm9tby10aXRsZSB7IGZvbnQtc2l6ZToxLjVyZW0gOyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMzMzMzMzM7IG1pbi1oZWlnaHQ6NzhweDsgfSAucHJvbW8tbWVkaXVtIC5wcm9tby10aXRsZSB7IG1pbi1oZWlnaHQ6ODdweDsgfSAucHJvbW8tc21hbGwgLnByb21vLXRpdGxlIHsgZm9udC1zaXplOjEuMjVyZW0gOyB9IC5wcm9tby1jYXB0aW9uIHsgY29sb3I6IzMzMzMzMzsgfSAucHJvbW8tY2FwdGlvbjpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5wcm9tby1vZmZlciAucHJvbW8tdGl0bGUgeyBtaW4taGVpZ2h0OjA7IH0gLnByb21vLXN1YmNhcHRpb24geyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOjAuODc1cmVtOyB9IC5wcm9tby1zdWJjYXB0aW9uLnN1YmhlYWRpbmcuLW1oIHsgbWluLWhlaWdodDozMXB4OyB9IC5wcm9tby1zdWJjYXB0aW9uLmRlc2NyaXB0aW9uLi1taCB7IG1pbi1oZWlnaHQ6NDhweDsgfSAucHJvbW8tZGlzbGNhaW1lciB7IGZvbnQtc2l6ZTowLjc1cmVtOyB9IC5wcm9tby1saW5rcyB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAucHJvbW8tbGluay1pdGVtIC5wcmludCB7IHdpZHRoOmF1dG87IHRleHQtYWxpZ246cmlnaHQ7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmdyaWQ7IH0gLnByb21vcy1jb250YWluZXIgLmZhLWFycm93LWRvd24tdG8tbGluZSB7IGZvbnQtc2l6ZToycmVtOyBjb2xvcjojMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo1MCU7IHRvcDo1MCU7IGJhY2tncm91bmQ6I2ZmZmZmZjsgcGFkZGluZzo2cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IHRyYW5zaXRpb246YWxsIDAuMjVzIGVhc2Utb3V0OyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQucHJvbW8tbWVkaXVtIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLCAxZnIpOyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQucHJvbW8tc21hbGwgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsIDFmcik7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZSB7IGhlaWdodDoxNDJweDsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQuY29sbGFwc2U6OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgbGVmdDoxMHB4OyByaWdodDoxMHB4OyB0b3A6MTBweDsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiKDAgMCAwIC8gMzAlKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKSB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQuY29sbGFwc2U6aG92ZXI6OmJlZm9yZSB7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYigxMzggMTM4IDEzOCAvIDMwJSkgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJSk7IGN1cnNvcjpwb2ludGVyOyB9IC5wcm9tb3MtY29udGFpbmVyLmdyaWQuY29sbGFwc2U6aG92ZXIgLmZhLWFycm93LWRvd24tdG8tbGluZSB7IHRvcDo1NSU7IGNvbG9yOiM4MzgzODM7IH0gLmJhbm5lci1mb3JtIHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6dGFibGU7IG1hcmdpbjowIGF1dG87IH0gLmJhbm5lci1mb3JtIC5NYWluQm94TGF5ZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMDsgbGVmdDowOyByaWdodDowOyB0b3A6MDsgZGlzcGxheTp0YWJsZS1jZWxsOyBoZWlnaHQ6MTAwJTsgfSAuYmFubmVyLWZvcm0tYm94IHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyBtYXgtd2lkdGg6MzUwcHg7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MzVweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IC5NYWluQm94TGF5ZXIgLmJhbm5lci1mb3JtLWJveCB7IHRvcDo1MCU7IC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyBtYXJnaW4tdG9wOjA7IH0gfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTMwMXB4KSB7IC5iYW5uZXItZm9ybSAuYmFubmVyLWZvcm0tYm94IHsgcGFkZGluZzoxNXB4OyBtYXgtd2lkdGg6MjcwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IH0gLmJhbm5lci1mb3JtICNiYW5uZXJGb3JtIC5mb3JtLWNvbnRyb2wgeyBwYWRkaW5nOjRweCA4cHg7IGhlaWdodDozMHB4OyBtYXJnaW4tYm90dG9tOjEycHg7IH0gLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS10aXRsZSB7IGZvbnQtc2l6ZToxNXB0OyB9IC5iYW5uZXItZm9ybSAuYmFubmVyLWZvcm0tc3VidGl0bGUgeyBmb250LXNpemU6MTFwdDsgfSAuYmFubmVyLWZvcm0gLmJ0bi5iYW5uZXItYnRuIHsgcGFkZGluZzo0cHggMTJweDsgfSB9IC5vdGhlckxvZ29NZW51Q29udGFpbmVyeyBmbG9hdDpsZWZ0OyB9IC5vdGhlckxvZ29NZW51Q29udGFpbmVyUmlnaHR7IGZsb2F0OnJpZ2h0OyB9IC5vdGhlckxvZ29NZW51SW1hZ2V7IG1heC13aWR0aDoyNTBweDsgbWF4LWhlaWdodDoxMDBweDsgfSAuY3RhYm94LS13cmFwcGVyIHsgY2xlYXI6Ym90aDsgcGFkZGluZzowLjc1cmVtIDA7IGJhY2tncm91bmQ6I2ZmZmZmZjsgfSAuY3RhYm94LS10YWJsZSB7IHdpZHRoOjg1JSFpbXBvcnRhbnQ7IG1heC13aWR0aDoxMjAwcHg7IG1hcmdpbjphdXRvOyBib3JkZXItc3BhY2luZzoxcmVtOyBib3JkZXItY29sbGFwc2U6dW5zZXQ7IH0gLmN0YWJveC0tY2VsbCB7IHdpZHRoOjI1JTsgdHJhbnNpdGlvbjphbGwgMC4ycyBsaW5lYXI7IH0gLmN0YWJveC0tY2VsbDpub3QoW29uY2xpY2s9JyddKTpob3ZlciB7IGN1cnNvcjpwb2ludGVyOyB9IC5jdGFib3gtLWNlbGwuY3RhYm94LS1jZWxsX18xIHsgd2lkdGg6MTAwJTsgfSAuY3RhYm94LS1jZWxsLmN0YWJveC0tY2VsbF9fMiB7IHdpZHRoOjQ4MHB4OyB9IC5jdGFib3gtLWNlbGwuY3RhYm94LS1jZWxsX18zIHsgd2lkdGg6MzMlOyB9IC5jdGFib3gtLWNvbnRhaW5lciB7IHBhZGRpbmc6MXJlbTsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0taWNvbiB7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWljb24uY3RhYm94LS1pY29uX190b3AgeyBwYWRkaW5nLWJvdHRvbToxMHB4OyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS1pY29uLmN0YWJveC0taWNvbl9fbGVmdCB7IGZsb2F0OmxlZnQ7IH0gLmN0YWJveC0taWNvbl9fbGVmdCB+IC5jdGFib3gtLXRpdGxlLCAuY3RhYm94LS1pY29uX19sZWZ0IH4gLmN0YWJveC0tZGVzY3JpcHRpb24sIC5jdGFib3gtLWljb25fX2xlZnQgfiAuY3RhYm94LS1idXR0b24geyBtYXJnaW4tbGVmdDozNXB4OyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS10aXRsZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWRlc2NyaXB0aW9uIHsgbWFyZ2luLXRvcDoxMHB4OyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS1idXR0b24geyBtYXJnaW4tdG9wOjIwcHg7IH0gLnBhcmFsbGF4LXNlY3Rpb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1zaXplOmNvdmVyOyBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6bG9jYWw7IHBhZGRpbmc6MjVweCAwOyAtd2Via2l0LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tb3otdHJhbnNpdGlvbjphbGwgMC4zczsgLW1zLXRyYW5zaXRpb246YWxsIDAuM3M7IC1vLXRyYW5zaXRpb246YWxsIDAuM3M7IHRyYW5zaXRpb246YWxsIDAuM3M7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgfSAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyIHsgd2lkdGg6NjAlOyBwYWRkaW5nLXJpZ2h0OjE1cHg7IHBhZGRpbmctbGVmdDoxNXB4OyBtYXJnaW4tcmlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6YXV0bzsgfSAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyLmxhcmdlIHsgd2lkdGg6ODAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLnBhcmFsbGF4LWNvbnRlbnQgeyB3aWR0aDo0NSU7IHBhZGRpbmc6NDBweCA0MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC43KTsgY29sb3I6I2ZmZjsgfSAucGFyYWxsYXgtY29udGVudCAucGFyYWxsYXgtY29udGVudC1idXNpbmVzcy10aXRsZSB7IGZvbnQtc2l6ZToxLjQzOHJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToyMHB4OyBjb2xvcjppbmhlcml0OyB9IC5wYXJhbGxheC1jb250ZW50IC5wYXJhbGxheC1jb250ZW50LWJ1c2luZXNzLWRlc2MgeyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgdGV4dC1hbGlnbjpsZWZ0OyBjb2xvcjppbmhlcml0OyB9IC5wYXJhbGxheC1jb250ZW50IC5wYXJhbGxheC1jb250ZW50LWJ1c2luZXNzLWRlc2MgYXsgY29sb3I6aW5oZXJpdDsgfSBAbWVkaWEgKG1heC13aWR0aDoxMzMwcHgpIHsgLnBhcmFsbGF4LXNlY3Rpb24gLmNvbnRhaW5lciB7IHdpZHRoOjgwJTsgfSAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyLmxhcmdlIHsgd2lkdGg6MTAwJTsgfSB9IC5zci1vbmx5IHsgcG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDsgd2lkdGg6MXB4ICFpbXBvcnRhbnQ7IGhlaWdodDoxcHggIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjotMXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50OyBjbGlwOnJlY3QoMCwgMCwgMCwgMCkgIWltcG9ydGFudDsgYm9yZGVyOjAgIWltcG9ydGFudDsgfSAuYm5wX3B1bGxvdXRfaW1neyBtYXgtd2lkdGg6MTByZW07IG1hcmdpbjphdXRvOyB9IC5ibnBfcHVsbG91dF9jb2xfc2VwYXJhdG9yeyB3aWR0aDoxcHg7IGJhY2tncm91bmQtY29sb3I6I0VCRUJFQjsgaGVpZ2h0Ojk4cHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MjBweDsgfSAuYm5wX3B1bGxvdXRfbWlkX2NvbHsgd2lkdGg6NzAlOyBkaXNwbGF5OnRhYmxlLWNlbGw7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcmlnaHR7IGJvcmRlci1sZWZ0LXdpZHRoOjFweDsgfSAuYm5wX3B1bGxvdXRfbWlkX2NvbF9zZXBhcmF0b3J7IHdpZHRoOjFweDsgYmFja2dyb3VuZC1jb2xvcjojRUJFQkVCOyBoZWlnaHQ6NDBweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo3OHB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3ByaWNlX3dpdGhfdGl0bGV7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6NDUlOyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3ByaWNleyBmb250LXNpemU6MnJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6MTMzMHB4KSB7IC5ibnBfcHVsbG91dF9taWRfY29sIHsgd2lkdGg6NTAlOyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3ByaWNlX3dpdGhfdGl0bGUgeyB3aWR0aDoxMDAlOyB9IC5ibnBfcHVsbG91dF9jb2xfc2VwYXJhdG9yIHsgaGVpZ2h0OjE2NHB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3NlcGFyYXRvciB7IGhlaWdodDoxMDZweDsgfSB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dEltZ3sgaGVpZ2h0OjExMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0QnV0dG9ueyBiYWNrZ3JvdW5kOiM0MTdGMUEgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOiNmZmZmZmY7IHBhZGRpbmc6N3B4IDIwcHggN3B4OyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0OjcwMDsgdGV4dC1zaGFkb3c6MC40cHggMDsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRDb250ZW50eyBjb2xvcjojMDAwMDAwOyBmb250LXNpemU6MS41NjNyZW0gOyBmb250LXdlaWdodDo3MDA7IG1hcmdpbi1ib3R0b206LTE1cHg7IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0Q29udGVudFNjb3JleyBjb2xvcjojMDAwMDAwOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IHRleHQtc2hhZG93OjJweCAwOyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dENvbnRlbnRGcmVleyBjb2xvcjojNDE3RjFBOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToyLjgxM3JlbSA7IHRleHQtc2hhZG93OjJweCAwOyB9IC5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkLmlzRnVsbFdpZHRoUGFnZSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRNYXhXaWR0aHsgbWF4LXdpZHRoOjEyMDBweDsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRNYXhXaWR0aHsgbWF4LXdpZHRoOjk2MHB4OyB9IC5zbGlkZXItbWFpbiBpbWd7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuNXMgZWFzZS1vdXQgfSAuY29tbXVuaWNhdGlvblByZWZ7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB3aWR0aDo1MCUgIWltcG9ydGFudDsgfSAuZDJjZm9ybSB7IC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sOiIqIjsgLS1sYWJlbC1yZXF1aXJlZC1jb2xvcjojRkYwMDAwOyAtLWlucHV0LXBhZGRpbmc6dmFyKC0tcy0xKSB2YXIoLS1zMSk7IC0taW5wdXQtYmctY29sb3I6dmFyKC0td2hpdGUpOyAtLWlucHV0LWJvcmRlci1jb2xvcjp2YXIoLS1taWQtZ3JheSk7IC0taW5wdXQtcmFkaXVzOnZhcigtLXMtNik7IC0taW5wdXQtZm9udC1zaXplOnZhcigtLWZzMCk7IC0taW5wdXQtbGluZS1oZWlnaHQ6dmFyKC0tZnMyKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudXBfbWVudSAuUzEwMFBlcmNlbnRXaWR0aCB7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IH0gLnVwX21lbnUuZml4ZWQgLlMxMDBQZXJjZW50V2lkdGh7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5vcmcsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5zdHJlZXQtYWRkcmVzcywgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLmxvY2FsaXR5LCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucmVnaW9uLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucG9zdGFsLWNvZGUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5leHRlbmRlZFBob25lVHJpZ2dlciwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLnBob25lLWxpbmsgeyBjb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcikgIWltcG9ydGFudDsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAuZGVhbGVyTWFwTGluayBzdmcgeyBmaWxsOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAuZmEtY2FyZXQtZG93bjo6YmVmb3JlLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAuZmEtcGhvbmU6OmJlZm9yZSB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAudXBfbWVudSAuUzEwMFBlcmNlbnRXaWR0aCA+IHVsID4gbGkgPiBhLnRvcF9saW5rIHsgY29sb3I6dmFyKC0taG9tZXBhZ2UtbWVudS1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLmdSYXRpbmctaWNvbiNnUmF0aW5nLCAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b24uYWN0aXZlLCAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgYS5kZXNrdG9wX2xhbmdfYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgY29sb3I6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b24geyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgaS5mYXIgeyBjb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyIC5zZXJ2aWNlLWhlYWRlci1mb3JtIC5idG4geyBib3JkZXItY29sb3I6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5sYW5ndWFnZUJhciAuZ1JhdGluZy1pY29uI2dSYXRpbmcsIC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEsIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbiB7IGJvcmRlci1yYWRpdXM6dmFyKC0tcHJvbW8tYnRuLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7IH0gLmdSYXRpbmctaWNvbiNnUmF0aW5nIC5yYXRpbmcgeyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbGluZS1oZWlnaHQ6MTsgfSAubWFyZ2luLWJvdHRvbS0tNHB4IHsgbWFyZ2luLWJvdHRvbTotNHB4OyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLmJhbm5lci1zZWFyY2gtYm94LXdyYXBwZXIgeyB6LWluZGV4OjI7IHBvc2l0aW9uOnJlbGF0aXZlIH0KLyoqIC9jc3MvcHJvX2Ryb3Bkb3duXzQuY3NzICoqLwouaWROYXYxIHsgcGFkZGluZzowOyBsaXN0LXN0eWxlOm5vbmU7IGhlaWdodDoyOHB4OyBmb250LXNpemU6MC43NXJlbSA7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOiNGOUY5Rjk7IH0gLmlkTmF2MSBsaS50b3Age2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjA7fSAuaWROYXYxIGxpLnRvcDEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IHBhZGRpbmc6MDsgcGFkZGluZy1yaWdodDoycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYxIGxpIGEudG9wX2xpbmsgeyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjBweCAxMnB4IDBweCAxMnB4OyBjdXJzb3I6cG9pbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDUxNDFmOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazpob3ZlciB7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmaWx0ZXI6YnJpZ2h0bmVzcyg5NSUpOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBjb2xvcjojZmVmZWZlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIHsgcGFkZGluZzowOyBsaXN0LXN0eWxlOm5vbmU7IGhlaWdodDoyOHB4OyBmb250LXNpemU6MC43NXJlbSA7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOiNGOUY5Rjk7IH0gLmlkTmF2MiBsaS50b3Age2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjA7IHBhZGRpbmctcmlnaHQ6MnB4O30gLmlkTmF2MiBsaS50b3AxIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9ob3ZlcjIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgcGFkZGluZzowOyBwYWRkaW5nLXJpZ2h0OjJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgbGkgYS50b3BfbGluayB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGNvbG9yOiNmZWZlZmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowcHggMTJweCAwcHggMTJweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfYmcyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIGxpIGEudG9wX2xpbms6aG92ZXIge2NvbG9yOiNmZmY7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIGxpIGEudG9wX2xpbmsxIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgY29sb3I6I2ZlZmVmZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjBweCAxMnB4IDBweCAxMnB4OyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9ob3ZlcjIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9Ci8qKiAvY3NzL2pxdWVyeS11aS1mYWN0b3J5LzEuMTMuMi9qcXVlcnktdWkubWluLmNzcyAqKi8KLnVpLWhlbHBlci1oaWRkZW57ZGlzcGxheTpub25lfS51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGV7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LnVpLWhlbHBlci1yZXNldHttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7b3V0bGluZTowO2xpbmUtaGVpZ2h0OjEuMzt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTAwJTtsaXN0LXN0eWxlOm5vbmV9LnVpLWhlbHBlci1jbGVhcmZpeDpiZWZvcmUsLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWktaGVscGVyLXpmaXh7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MCkifS51aS1mcm9udHt6LWluZGV4OjEwMH0udWktc3RhdGUtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnVpLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi10b3A6LS4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtaW5kZW50Oi05OTk5OXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnVpLXdpZGdldC1pY29uLWJsb2Nre2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHg7ZGlzcGxheTpibG9ja30udWktd2lkZ2V0LW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlcntkaXNwbGF5OmJsb2NrO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoycHggMCAwIDA7cGFkZGluZzouNWVtIC41ZW0gLjVlbSAuN2VtO2ZvbnQtc2l6ZToxMDAlfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6MWVtIDIuMmVtO2JvcmRlci10b3A6MDtvdmVyZmxvdzphdXRvfS51aS1zbGlkZXJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fS51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyO3dpZHRoOjEuMmVtO2hlaWdodDoxLjJlbTtjdXJzb3I6cG9pbnRlcjstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTtmb250LXNpemU6LjdlbTtkaXNwbGF5OmJsb2NrO2JvcmRlcjowO2JhY2tncm91bmQtcG9zaXRpb246MCAwfS51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1oYW5kbGUsLnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLXJhbmdle2ZpbHRlcjppbmhlcml0fS51aS1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6LjhlbX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1oYW5kbGV7dG9wOi0uM2VtO21hcmdpbi1sZWZ0Oi0uNmVtfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdle3RvcDowO2hlaWdodDoxMDAlfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1pbntsZWZ0OjB9LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3JpZ2h0OjB9LnVpLXNsaWRlci12ZXJ0aWNhbHt3aWR0aDouOGVtO2hlaWdodDoxMDBweH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItaGFuZGxle2xlZnQ6LS4zZW07bWFyZ2luLWxlZnQ6MDttYXJnaW4tYm90dG9tOi0uNmVtfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZXtsZWZ0OjA7d2lkdGg6MTAwJX0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWlue2JvdHRvbTowfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7dG9wOjB9LnVpLXdpZGdldHtmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS51aS13aWRnZXQgLnVpLXdpZGdldHtmb250LXNpemU6MWVtfS51aS13aWRnZXQgaW5wdXQsLnVpLXdpZGdldCBzZWxlY3QsLnVpLXdpZGdldCB0ZXh0YXJlYSwudWktd2lkZ2V0IGJ1dHRvbntmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS51aS13aWRnZXQudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCAjYzVjNWM1fS51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMzMzN9LnVpLXdpZGdldC1jb250ZW50IGF7Y29sb3I6IzMzM30udWktd2lkZ2V0LWhlYWRlcntib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZTllOWU5O2NvbG9yOiMzMzM7Zm9udC13ZWlnaHQ6Ym9sZH0udWktd2lkZ2V0LWhlYWRlciBhe2NvbG9yOiMzMzN9LnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0LC51aS1idXR0b24saHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmhvdmVyLGh0bWwgLnVpLWJ1dHRvbi51aS1zdGF0ZS1kaXNhYmxlZDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYzVjNWM1O2JhY2tncm91bmQ6I2Y2ZjZmNjtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6IzQ1NDU0NX0udWktc3RhdGUtZGVmYXVsdCBhLC51aS1zdGF0ZS1kZWZhdWx0IGE6bGluaywudWktc3RhdGUtZGVmYXVsdCBhOnZpc2l0ZWQsYS51aS1idXR0b24sYTpsaW5rLnVpLWJ1dHRvbixhOnZpc2l0ZWQudWktYnV0dG9uLC51aS1idXR0b257Y29sb3I6IzQ1NDU0NTt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtaG92ZXIsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaG92ZXIsLnVpLXN0YXRlLWZvY3VzLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWZvY3VzLC51aS1idXR0b246aG92ZXIsLnVpLWJ1dHRvbjpmb2N1c3tib3JkZXI6MXB4IHNvbGlkICNjY2M7YmFja2dyb3VuZDojZWRlZGVkO2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojMmIyYjJifS51aS1zdGF0ZS1ob3ZlciBhLC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyLC51aS1zdGF0ZS1ob3ZlciBhOmxpbmssLnVpLXN0YXRlLWhvdmVyIGE6dmlzaXRlZCwudWktc3RhdGUtZm9jdXMgYSwudWktc3RhdGUtZm9jdXMgYTpob3ZlciwudWktc3RhdGUtZm9jdXMgYTpsaW5rLC51aS1zdGF0ZS1mb2N1cyBhOnZpc2l0ZWQsYS51aS1idXR0b246aG92ZXIsYS51aS1idXR0b246Zm9jdXN7Y29sb3I6IzJiMmIyYjt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktdmlzdWFsLWZvY3Vze2JveC1zaGFkb3c6MCAwIDNweCAxcHggcmdiKDk0LDE1OCwyMTQpfS51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSxhLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbi51aS1zdGF0ZS1hY3RpdmU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjMDAzZWZmO2JhY2tncm91bmQ6IzAwN2ZmZjtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6I2ZmZn0udWktaWNvbi1iYWNrZ3JvdW5kLC51aS1zdGF0ZS1hY3RpdmUgLnVpLWljb24tYmFja2dyb3VuZHtib3JkZXI6IzAwM2VmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnVpLXN0YXRlLWFjdGl2ZSBhLC51aS1zdGF0ZS1hY3RpdmUgYTpsaW5rLC51aS1zdGF0ZS1hY3RpdmUgYTp2aXNpdGVke2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0e2JvcmRlcjoxcHggc29saWQgI2RhZDU1ZTtiYWNrZ3JvdW5kOiNmZmZhOTA7Y29sb3I6Izc3NzYyMH0udWktc3RhdGUtY2hlY2tlZHtib3JkZXI6MXB4IHNvbGlkICNkYWQ1NWU7YmFja2dyb3VuZDojZmZmYTkwfS51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgYXtjb2xvcjojNzc3NjIwfS51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvcntib3JkZXI6MXB4IHNvbGlkICNmMWE4OTk7YmFja2dyb3VuZDojZmRkZmRmO2NvbG9yOiM1ZjNmM2Z9LnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvciBhe2NvbG9yOiM1ZjNmM2Z9LnVpLXN0YXRlLWVycm9yLXRleHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvci10ZXh0e2NvbG9yOiM1ZjNmM2Z9LnVpLXByaW9yaXR5LXByaW1hcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1wcmltYXJ5e2ZvbnQtd2VpZ2h0OmJvbGR9LnVpLXByaW9yaXR5LXNlY29uZGFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXNlY29uZGFyeSwudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktc2Vjb25kYXJ5e29wYWNpdHk6Ljc7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT03MCkiO2ZvbnQtd2VpZ2h0Om5vcm1hbH0udWktc3RhdGUtZGlzYWJsZWQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGlzYWJsZWR7b3BhY2l0eTouMzU7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0zNSkiO2JhY2tncm91bmQtaW1hZ2U6bm9uZX0udWktc3RhdGUtZGlzYWJsZWQgLnVpLWljb257LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0zNSkifS51aS1pY29ue3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9LnVpLWljb24sLnVpLXdpZGdldC1jb250ZW50IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nIil9LnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtaG92ZXIgLnVpLWljb24sLnVpLXN0YXRlLWZvY3VzIC51aS1pY29uLC51aS1idXR0b246aG92ZXIgLnVpLWljb24sLnVpLWJ1dHRvbjpmb2N1cyAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzU1NTU1NV8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1hY3RpdmUgLnVpLWljb24sLnVpLWJ1dHRvbjphY3RpdmUgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc19mZmZmZmZfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtaGlnaGxpZ2h0IC51aS1pY29uLC51aS1idXR0b24gLnVpLXN0YXRlLWhpZ2hsaWdodC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNzc3NjIwXzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWVycm9yIC51aS1pY29uLC51aS1zdGF0ZS1lcnJvci10ZXh0IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfY2MwMDAwXzI1NngyNDAucG5nIil9LnVpLWJ1dHRvbiAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzc3Nzc3N18yNTZ4MjQwLnBuZyIpfS51aS1pY29uLWJsYW5rLnVpLWljb24tYmxhbmsudWktaWNvbi1ibGFua3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLWljb24tY2FyZXQtMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAwfS51aS1pY29uLWNhcmV0LTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAwfS51aS1pY29uLWNhcmV0LTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IDB9LnVpLWljb24tY2FyZXQtMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IDB9LnVpLWljb24tY2FyZXQtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggMH0udWktaWNvbi1jYXJldC0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggMH0udWktaWNvbi1jYXJldC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAwfS51aS1pY29uLWNhcmV0LTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggMH0udWktaWNvbi1jYXJldC0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAwfS51aS1pY29uLWNhcmV0LTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IDB9LnVpLWljb24tdHJpYW5nbGUtMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNnB4fS51aS1pY29uLWFycm93LTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTMycHh9LnVpLWljb24tYXJyb3ctMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLW5lLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItc2Utbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMzJweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjFweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItc2Utbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC00OHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13e2JhY2tncm91bmQtcG9zaXRpb246MCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNjRweH0udWktaWNvbi1hcnJvdy00e2JhY2tncm91bmQtcG9zaXRpb246MCAtODBweH0udWktaWNvbi1hcnJvdy00LWRpYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtODBweH0udWktaWNvbi1leHRsaW5re2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTgwcHh9LnVpLWljb24tbmV3d2lue2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTgwcHh9LnVpLWljb24tcmVmcmVzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC04MHB4fS51aS1pY29uLXNodWZmbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtODBweH0udWktaWNvbi10cmFuc2Zlci1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtODBweH0udWktaWNvbi10cmFuc2ZlcnRoaWNrLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtODBweH0udWktaWNvbi1mb2xkZXItY29sbGFwc2Vke2JhY2tncm91bmQtcG9zaXRpb246MCAtOTZweH0udWktaWNvbi1mb2xkZXItb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC05NnB4fS51aS1pY29uLWRvY3VtZW50e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnQtYntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC05NnB4fS51aS1pY29uLW5vdGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtOTZweH0udWktaWNvbi1tYWlsLWNsb3NlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC05NnB4fS51aS1pY29uLW1haWwtb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC05NnB4fS51aS1pY29uLXN1aXRjYXNle2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC05NnB4fS51aS1pY29uLWNvbW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTk2cHh9LnVpLWljb24tcGVyc29ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC05NnB4fS51aS1pY29uLXByaW50e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC05NnB4fS51aS1pY29uLXRyYXNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC05NnB4fS51aS1pY29uLWxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtOTZweH0udWktaWNvbi11bmxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtOTZweH0udWktaWNvbi1ib29rbWFya3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtOTZweH0udWktaWNvbi10YWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTk2cHh9LnVpLWljb24taG9tZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTExMnB4fS51aS1pY29uLWZsYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTEycHh9LnVpLWljb24tY2FsZW5kYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTEycHh9LnVpLWljb24tY2FydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMTJweH0udWktaWNvbi1wZW5jaWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTEycHh9LnVpLWljb24tY2xvY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTEycHh9LnVpLWljb24tZGlza3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMTJweH0udWktaWNvbi1jYWxjdWxhdG9ye2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMTJweH0udWktaWNvbi16b29taW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTExMnB4fS51aS1pY29uLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTExMnB4fS51aS1pY29uLXNlYXJjaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTEycHh9LnVpLWljb24td3JlbmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMTJweH0udWktaWNvbi1nZWFye2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMTJweH0udWktaWNvbi1oZWFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTEycHh9LnVpLWljb24tc3RhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTEycHh9LnVpLWljb24tbGlua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTEycHh9LnVpLWljb24tY2FuY2Vse2JhY2tncm91bmQtcG9zaXRpb246MCAtMTI4cHh9LnVpLWljb24tcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMjhweH0udWktaWNvbi1wbHVzdGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTI4cHh9LnVpLWljb24tbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTI4cHh9LnVpLWljb24tbWludXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXRoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTEyOHB4fS51aS1pY29uLWtleXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTI4cHh9LnVpLWljb24tbGlnaHRidWxie2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xMjhweH0udWktaWNvbi1zY2lzc29yc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTI4cHh9LnVpLWljb24tY2xpcGJvYXJke2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMjhweH0udWktaWNvbi1jb3B5e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMjhweH0udWktaWNvbi1jb250YWN0e2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMjhweH0udWktaWNvbi1pbWFnZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTI4cHh9LnVpLWljb24tdmlkZW97YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTEyOHB4fS51aS1pY29uLXNjcmlwdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTI4cHh9LnVpLWljb24tYWxlcnR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNDRweH0udWktaWNvbi1pbmZve2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE0NHB4fS51aS1pY29uLW5vdGljZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNDRweH0udWktaWNvbi1oZWxwe2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE0NHB4fS51aS1pY29uLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE0NHB4fS51aS1pY29uLWJ1bGxldHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE0NHB4fS51aS1pY29uLXBpbi13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNDRweH0udWktaWNvbi1waW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTQ0cHh9LnVpLWljb24tcGxheXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE2MHB4fS51aS1pY29uLXBhdXNle2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE2MHB4fS51aS1pY29uLXNlZWstbmV4dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNjBweH0udWktaWNvbi1zZWVrLXByZXZ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTYwcHh9LnVpLWljb24tc2Vlay1lbmR7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTYwcHh9LnVpLWljb24tc2Vlay1zdGFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWZpcnN0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXN0b3B7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTYwcHh9LnVpLWljb24tZWplY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTYwcHh9LnVpLWljb24tcG93ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNzZweH0udWktaWNvbi1zaWduYWwtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNzZweH0udWktaWNvbi1zaWduYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0we2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTJ7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0ze2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE3NnB4fS51aS1pY29uLWNpcmNsZS1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMTkycHh9LnVpLWljb24tY2lyY2xlLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjA4cHh9LnVpLWljb24tZ3JpcC1kb3R0ZWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yMjRweH0udWktaWNvbi1ncmlwLWRvdHRlZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIyNHB4fS51aS1pY29uLWdyaXAtc29saWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTIyNHB4fS51aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMjRweH0udWktaWNvbi1ncmlwLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTIyNHB4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItdG9wLC51aS1jb3JuZXItbGVmdCwudWktY29ybmVyLXRse2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItdG9wLC51aS1jb3JuZXItcmlnaHQsLnVpLWNvcm5lci10cntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci1ib3R0b20sLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItYmx7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci1ib3R0b20sLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLWJye2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweH0udWktd2lkZ2V0LW92ZXJsYXl7YmFja2dyb3VuZDojYWFhO29wYWNpdHk6LjM7LW1zLWZpbHRlcjpBbHBoYShPcGFjaXR5PTMwKX0udWktd2lkZ2V0LXNoYWRvd3std2Via2l0LWJveC1zaGFkb3c6MCAwIDVweCAjNjY2O2JveC1zaGFkb3c6MCAwIDVweCAjNjY2fQovKiogL2Nzcy9zdHlsZS5jc3MgKiovCmh0bWwsIGJvZHksIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGJsb2NrcXVvdGUsIHByZSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLCBkZWwsIGRmbiwgZW0sIGZvbnQsIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsIGIsIHUsIGksIGNlbnRlciwgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSwgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkIHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSBodG1sIHsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7IH0gYm9keSB7IHBhZGRpbmc6MDsgbWFyZ2luOjAgMCAwIDA7IGJhY2tncm91bmQ6I0ZGRkZGRjsgY29sb3I6IzMzMzMzMzsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC10ZXh0LW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyBmb250LXNpemU6MC45MzhyZW0gOyB9IGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBidXR0b24geyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IH0gLmZ1bGxXaWR0aEJ1dHRvbiBhLCAudG9wbmF2IHRyIHRkIGEsIGEjbW9iaWxlUHJvbW90aW9uQnRuIHNwYW57IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtYnV0dG9ucy1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWJ1dHRvbnMtd2VpZ2h0KTsgfSAuZGVhbGVyLWNvbG9yIHsgY29sb3I6I2ZmZmZmZjsgfSAuaDJmb3JteyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBiYWNrZ3JvdW5kOiM5OTk7IGNvbG9yOndoaXRlOyBwYWRkaW5nOjVweCAxMHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW4tdG9wOjE1cHg7IH0gLi1zZWxlY3QgeyBwYWRkaW5nOjA7IG1hcmdpbjowOyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGJvcmRlci1yYWRpdXM6M3B4OyBvdmVyZmxvdzpoaWRkZW47IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudXNlZF9kZXRhaWxzX29wdGlvbnNfdGl0bGUsIC5uZXdfZGV0YWlsc19vcHRpb25zX3RpdGxleyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7IGNvbG9yOiMwMDA7IHBhZGRpbmc6MTBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWFyZ2luLWxlZnQ6LTEwcHg7IG1hcmdpbi1yaWdodDotMTBweDsgfSAuLXNlbGVjdDphZnRlciB7IHRvcDo1MCU7IHJpZ2h0OjVweDsgYm9yZGVyOnNvbGlkIHRyYW5zcGFyZW50OyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IHBvc2l0aW9uOmFic29sdXRlOyBwb2ludGVyLWV2ZW50czpub25lOyBib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwKTsgYm9yZGVyLXRvcC1jb2xvcjojMDAwMDAwOyBib3JkZXItd2lkdGg6NXB4OyBtYXJnaW4tdG9wOi0ycHg7IHotaW5kZXg6MTAwOyB9IC4tc2VsZWN0IHNlbGVjdCB7IHBhZGRpbmc6NXB4IDhweDsgd2lkdGg6MTAwJTsgYm9yZGVyOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1pbWFnZTpub25lOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IGFwcGVhcmFuY2U6bm9uZTsgfSAuLXNlbGVjdCBzZWxlY3Q6Zm9jdXMgeyBvdXRsaW5lOm5vbmU7IH0gYSwgYTpob3ZlciB7IG91dGxpbmU6bm9uZTsgfSAubmF2ID4gdWwgPiBsaXsgbWFyZ2luLWJvdHRvbTozcHg7IH0gaDF7IGZvbnQtc2l6ZToxLjRlbTsgcGFkZGluZy10b3A6MTBweDsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMS1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgxLXdlaWdodCk7IH0gc3Bhbi5oMi1hbHQsc3Bhbi5oMy1hbHR7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gaDIsaDMsaDQsaDUsaDYsc3Bhbi5oMi1hbHQsc3Bhbi5oMy1hbHR7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDItbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMi13ZWlnaHQpOyB9IGlucHV0W3R5cGU9YnV0dG9uXSwgLmRldGFpbHMgYSwgLmgtYnV0dG9ucyB1bCBsaSBhLCAucHJpY2UsIC5kZXRhaWxzLCAuZGV0YWlscyBhLCAuYnV0dG9uLXByb21vMywgLmJ0bi1kZWZhdWx0LCAuYnRuLXNtLCAuYnRuLWxnIHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1idXR0b25zLW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtYnV0dG9ucy13ZWlnaHQpOyB9IC5jbGVhcnsgY2xlYXI6Ym90aDt9IGEsIGE6aG92ZXIge3RleHQtZGVjb3JhdGlvbjpub25lO30gLmNvbnRhaW5lciB7IHdpZHRoOjEwMCU7IG1hcmdpbjowIDAgMCAwOyB9IC50b3AgeyBiYWNrZ3JvdW5kOiMyMjIyMjI7IGJhY2tncm91bmQ6I2ZmZmZmZjsgaGVpZ2h0OjUwcHg7IH0gLnRvcG5hdiAuYnVyZ2VyLWJ0bi1jb250YWluZXIubWVudS10YWxseyB3aWR0aDo0MHB4ICFpbXBvcnRhbnQ7IH0gLnRvcG5hdiBhIHsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZToxZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gLmJ1cmdlci1tZW51eyBoZWlnaHQ6MjAwJSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC41KSAhaW1wb3J0YW50OyB9IC5yaWdodGJvcmRlciB7IGJvcmRlci1yaWdodDoxcHggc29saWQ7IGJvcmRlci1jb2xvcjojZmZmZmZmOyBib3JkZXItY29sb3I6IzA1MTQxZjsgfSAubGVmdGJvcmRlciB7IGJvcmRlci1sZWZ0OjFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1jb2xvcjojMDUxNDFmOyB9IC50ZWxlcGhvbmUsIC5tYXAge2Rpc3BsYXk6YmxvY2s7IGhlaWdodDo2NHB4OyBwYWRkaW5nOjI1cHggMCAwIDA7fSAudGVsZXBob25lIHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24tcGhvbmUucG5nKSBuby1yZXBlYXQgMjBweCAxNXB4OyB9IC5tYXAge2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbi1tYXAucG5nKSBuby1yZXBlYXQgNTBweCAxMHB4O30gLmhlYWRlcmJhciB7IGJhY2tncm91bmQ6IzMzMzsgY29sb3I6d2hpdGU7IGJveC1zaGFkb3c6cmdiYSgwLCAwLCAwLCAwLjUpIDAgMCA1cHggM3B4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYgfSAuaGVhZGVyYmFyLnRhbGwgeyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgd2lkdGggOjEwMCU7IH0gLmhlYWRlcmJhciAudG9wbmF2IHsgd2lkdGggOjEwMCU7IGhlaWdodCA6MTAwJTsgZGlzcGxheSA6ZmxleDsganVzdGlmeS1jb250ZW50IDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB9IC5oZWFkZXJiYXIudGFsbCAudG9wbmF2IHsganVzdGlmeS1jb250ZW50OnN0cmV0Y2g7IH0gLmhlYWRlcmJhciAudG9wbmF2ID4gZGl2IHsgaGVpZ2h0IDo1MHB4OyBkaXNwbGF5IDpmbGV4OyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB9IC5oZWFkZXJiYXIgLnRvcG5hdiA+IC5sb2dvLWFjdGlvbiB7IGZsZXgtZGlyZWN0aW9uIDpjb2x1bW47IGp1c3RpZnktY29udGVudCA6c3BhY2UtZXZlbmx5OyB9IC5oZWFkZXJiYXIudGFsbCAudG9wbmF2ID4gZGl2Om5vdCguYnVyZ2VyLWJ0bi1jb250YWluZXIpIHsgZmxleC1ncm93OjE7IH0gLmhlYWRlcmJhci50YWxsIC50b3BuYXYgPiBkaXY6bm90KDpsYXN0LW9mLXR5cGUpIHsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkOyB9IC5oZWFkZXJiYXIgLm1lbnUuYnVyZ2VyLWJ0bi1jb250YWluZXIgeyBtYXgtd2lkdGggOjQwcHg7IGhlaWdodCA6NTBweDsgfSAuaGVhZGVyYmFyIC5idXJnZXItbWVudS1idXR0b24sIC5oZWFkZXJiYXIudGFsbCAudG9wbmF2ID4gZGl2IHsgZGlzcGxheSA6ZmxleDsganVzdGlmeS1jb250ZW50IDpjZW50ZXI7IGFsaWduLWl0ZW1zIDpjZW50ZXI7IHRleHQtY2VudGVyIDpjZW50ZXI7IH0gLmhlYWRlcmJhciAuYnVyZ2VyLW1lbnUtYnV0dG9uIGkgeyBmb250LXNpemU6MS4yNXJlbTsgY29sb3I6IzA1MTQxZjsgfSAuaGVhZGVyYmFyIC5sb2dvLWFjdGlvbiBpbWcgeyBwYWRkaW5nIDowOyBoZWlnaHQgOjEwMCU7IG1heC1oZWlnaHQgOjUwcHg7IH0gLmhlYWRlcmJhciAuaGVhZGVyLWRlYWxlci1uYW1lIHsgZGlzcGxheSA6YmxvY2s7IHRleHQtYWxpZ24gOmNlbnRlcjsgbGluZS1oZWlnaHQgOjEuM2VtOyBmb250LXNpemUgOjAuOHJlbTsgY29sb3IgOiM4ODg4ODg7IGZvbnQtZmFtaWx5IDp2YXIoLS1mb250LWgxLW1vYik7IGZvbnQtd2VpZ2h0IDp2YXIoLS1mb250LXdlaWdodC1oMS1tb2IpOyB9IC5oZWFkZXJiYXIgLnRvcG5hdiA+IGRpdjpub3QoLmxvZ28tYWN0aW9uKSA+IGEgeyB0ZXh0LWFsaWduIDpjZW50ZXI7IHdpZHRoIDoxMDAlOyBwYWRkaW5nIDowLjc1cmVtOyB9IGRpdiNwaG9uZU51bWJlckRpdiBsaSB7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gI25ld3NDb250YWluZXIgYXsgY29sb3I6IzMzMzsgfSAjbmV3c0NvbnRhaW5lciBhLnRvcF9saW5rIHsgY29sb3I6I2ZmZjsgfSAubmV3c19hcnRpY2xlIGgyeyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gLm5ld3NfYXJ0aWNsZSBoMSxoMixoMyxoNCxoNSxoNnsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5hZGRyZXNzIHsgbGV0dGVyLXNwYWNpbmc6LTFweDsgY29sb3I6IzMzMzsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDpub3JtYWw7IHdpZHRoOjUwJTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmFkZHJlc3MsIC5sb2dvIHsgdmVydGljYWwtYWxpZ246dG9wOyB9IC5jb250ZW50cyB7IGJhY2tncm91bmQ6I2ZiZmJmYjsgcGFkZGluZzoxMHB4OyB9IC5jb250ZW50cyBoMiB7Zm9udC1zaXplOjEuNXJlbTsgbGluZS1oZWlnaHQ6Mi4yNXJlbTt9IC5jb250ZW50cyBwIHtmb250LXNpemU6MWVtOyBsaW5lLWhlaWdodDoxLjFlbTsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBsZXR0ZXItc3BhY2luZzowO30gLm1vYmlsZV9idXNpbmVzc0Rlc2MgeyBiYWNrZ3JvdW5kOiNmZmZmZmYhaW1wb3J0YW50OyBjb2xvcjojMDUxNDFmIWltcG9ydGFudDsgfSAubWVudSB7IHdpZHRoOjEwMCU7IGNsZWFyOmJvdGg7IH0gI25ld3NDb250YWluZXIgLm5ld3NfYXJ0aWNsZSBpbWdbc3JjKj0nL2NrZmluZGVyJ117IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IG1heC13aWR0aDoxMDAlICFpbXBvcnRhbnQ7IH0gI25ld3NDb250YWluZXIgLm5ld3NfYXJ0aWNsZSBpbWd7IG1heC13aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgfSAjbmV3c0NvbnRhaW5lciAuY2xlYXJmaXggeyBoZWlnaHQ6MHB4OyB9IC5tZW51IHVsIGxpIGEgc3BhbiB7cGFkZGluZy1sZWZ0OjdweDt9IC5tZW51IHVsIGxpIGEgc3Bhbi50ZXh0dmFsIHtsaW5lLWhlaWdodDozMnB4OyAjI01PQklMRV9NRU5VX0NTUyMjfSAubWVudSB1bCBsaSBhIHNwYW4gaW1nIHtwYWRkaW5nLWxlZnQ6MTBweDsgdmVydGljYWwtYWxpZ246bWlkZGxlO30gLmJvdHRvbSAubGlua3MgYSB7IGNvbG9yOiNmZmZmZmY7IH0gLkVOR0xJU0ggLmJvdHRvbSAubGlua3MgdWwgbGkgYXsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAuYm90dG9tIC5saW5rcyBkaXYgeyBtYXJnaW46MTVweCAwOyBkaXNwbGF5OmJsb2NrOyB9IC5ib3R0b20geyBwYWRkaW5nOjEwcHg7IGRpc3BsYXk6YmxvY2s7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IC1tb3otYm94LXNoYWRvdzogaW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyBib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgY29sb3I6I2ZmZmZmZjsgLS10eHQtY29sb3I6I2ZmZmZmZjsgfSAuYm90dG9tIC5saW5rcyB7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGxpbmUtaGVpZ2h0OjIxcHg7IGNsZWFyOmJvdGg7IHBhZGRpbmctdG9wOjVweDsgfSAuYm90dG9tIC5mb290ZXJfYWRkcmVzcyBzcGFueyBjb2xvcjppbmhlcml0ICFpbXBvcnRhbnQ7IH0gLmJvdHRvbSAubGlua3MgZGl2LmZvb3Rlcl9sb2dvIHsgbWFyZ2luOjEuMjVyZW0gMCAxLjc1cmVtIDA7IH0gLmJvdHRvbSAubGlua3MgZGl2LmZvb3Rlcl9sb2dvIGltZyB7IG1heC13aWR0aDoxODBweDsgbWF4LWhlaWdodDoxMDBweDsgfSBhLmJ1dHRvbi1wcm9tbyB7IGNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB9IC5icmVhZGNydW1icyB7IGZvbnQtc2l6ZSA6MC45cmVtOyBjb2xvciA6IzIyMjIyMjsgZm9udC13ZWlnaHQgOmJvbGQ7IHBhZGRpbmcgOjE1cHg7IH0gLmJyZWFkY3J1bWJzIGEge2NvbG9yOiM2NjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ib3R0b20gLmxpbmtzIGRpdi5mb290ZXItY2FybGlzdGluZyB7IHBhZGRpbmctYm90dG9tOjVweDsgfSAuY0Zvb3RlckNhckxpbmtzeyBwYWRkaW5nOjAgMCA1cHggMDsgfSAuc2VhcmNoYm94IHsgYmFja2dyb3VuZDojRTVFNUU1OyB9IC5zZWFyY2hib3ggaDMgLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiB7cGFkZGluZzowcHggNHB4IDZweCAwcHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Rvd25hcnJvdy5wbmcpIG5vLXJlcGVhdCA5OCUgY2VudGVyOyB0b3A6MThweCFpbXBvcnRhbnQ7fSAuZm9ybWFyZWEgeyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgLW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IGJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgfSAuZm9ybWFyZWEgdGFibGUgdHIgdGQgeyBwYWRkaW5nOjVweDsgfSBpbnB1dCwgaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT10ZWxdLCBpbnB1dFt0eXBlPWVtYWlsXSwgc2VsZWN0LCB0ZXh0YXJlYXsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgcGFkZGluZzo1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuY2hlY2tib3ggeyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTpibG9jazsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IHdpZHRoOmF1dG87IG9wYWNpdHk6MC4wMDAwMDAwMTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgbWFyZ2luLWxlZnQ6LTJweDsgfSAuY2hlY2tib3hfaGVscGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDotNHB4OyBsZWZ0Oi00cHg7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MXJlbSA7IHVzZXItc2VsZWN0Om5vbmU7IGNvbG9yOiNlN2U3ZTc7IH0gLmNoZWNrYm94X2hlbHBlcjpiZWZvcmUgeyBjb250ZW50OicnOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MDsgbWFyZ2luOjRweDsgd2lkdGg6MTVweDsgaGVpZ2h0OjE1cHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuMjhzIGVhc2U7IGJvcmRlci1yYWRpdXM6MnB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGJhY2tncm91bmQ6d2hpdGU7IH0gLmNoZWNrYm94X2hlbHBlcjphZnRlciB7IGNvbnRlbnQ6Jyc7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjhweDsgaGVpZ2h0OjVweDsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzMzMzsgYm9yZGVyLWxlZnQ6MnB4IHNvbGlkICMzMzM7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKTsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKTsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjdweDsgbGVmdDo4cHg7IH0gLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il1jaGVja2VkIH4gLmNoZWNrYm94X2hlbHBlcjo6YmVmb3JlIHsgY29sb3I6IzMzMzsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkIH4gLmNoZWNrYm94X2hlbHBlcjo6YWZ0ZXIgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgLW1vei10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMSk7IC1tcy10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMSk7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgfSAuY2hlY2tib3ggbGFiZWwgeyBtaW4taGVpZ2h0OjI0cHg7IHBhZGRpbmctbGVmdDoyNHB4OyBtYXJnaW4tYm90dG9tOjA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IHZlcnRpY2FsLWFsaWduOnN1YjsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXTpmb2N1cyArIGxhYmVsOjpiZWZvcmUgeyBvdXRsaW5lOnJnYig1OSwgMTUzLCAyNTIpIGF1dG8gNXB4OyB9IHNlbGVjdHsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAuZHJvcGRvd24ge3dpZHRoOjk1JTsgbWFyZ2luOmF1dG8gNXB4O30gLmJ1dHRvbiB7YmFja2dyb3VuZDojMzMzOyBjb2xvcjojZmZmOyBmb250LXNpemU6MS4xZW07IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDozMDBweDsgcGFkZGluZzoxNXB4OyBjdXJzb3I6cG9pbnRlcn0gLmltYWdlX2JveCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW46N3B4OyB9IC5pbWFnZV9ib3ggaW1neyBib3JkZXI6MXB4IHNvbGlkICNlZWU7IH0gI2NvbnRhaW5lckZsQiB7IHotaW5kZXg6OTk5OTk5OTsgfSAuaW1hZ2VfcmliYm9uIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6M3B4OyB0b3A6LTRweDsgei1pbmRleDo4NTA7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MTEycHg7IGhlaWdodDoxMTJweDsgdGV4dC1hbGlnbjpyaWdodDsgfSAuaW1hZ2VfcmliYm9uIHNwYW4geyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDUxNDFmOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MjhweDsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgd2lkdGg6MTQ4cHg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6I2ZmZmZmZjsgYm94LXNoYWRvdzowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDozMHB4OyBsZWZ0Oi0zMHB4OyB9IC5pbWFnZV9yaWJib24gc3Bhbjo6YmVmb3JlIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkICNmZmZmZmY7IGJvcmRlci1yaWdodDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjZmZmZmZmOyB9IC5pbWFnZV9yaWJib24gc3Bhbjo6YWZ0ZXIgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6M3B4IHNvbGlkICNmZmZmZmY7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjNweCBzb2xpZCAjZmZmZmZmOyB9IC5yaWJib24tY29udGFpbmVyIHsgd2lkdGggOjIwMHB4OyBoZWlnaHQgOjIwMHB4OyBvdmVyZmxvdyA6aGlkZGVuOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbiB7IHotaW5kZXggOjU1NTsgbWFyZ2luIDowOyBwYWRkaW5nIDowLjVyZW0gMCAhaW1wb3J0YW50OyBib3gtc2hhZG93IDowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgZm9udC1zaXplIDoxcmVtOyBsaW5lLWhlaWdodCA6MTJweDsgdGV4dC1hbGlnbiA6Y2VudGVyOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgdHJhbnNmb3JtIDp0cmFuc2xhdGVYKC0zNSUpIHRyYW5zbGF0ZVkoMCUpIHJvdGF0ZSgtNDVkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luIDp0b3AgcmlnaHQ7IGJhY2tncm91bmQgOnZhcigtLWNvcm5lci1yaWJib24tYmctY29sb3IpOyBjb2xvciA6dmFyKC0tY29ybmVyLXJpYmJvbi10ZXh0LWNvbG9yKTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjpiZWZvcmUsIC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmFmdGVyIHsgY29udGVudCA6IiI7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBtYXJnaW4gOjAgLTFweDsgd2lkdGggOjEwMCU7IGhlaWdodCA6MTAwJTsgYmFja2dyb3VuZCA6dmFyKC0tY29ybmVyLXJpYmJvbi1iZy1jb2xvcik7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YmVmb3JlIHsgbGVmdDoxMDAlOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmFmdGVyIHsgcmlnaHQ6MTAwJTsgfSAuaGVhZGluZyB7IG1pbi1oZWlnaHQ6MzVweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzgwODA4MDsgYmFja2dyb3VuZDojY2NjY2NjOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxMHB4IDVweCA1cHggNXB4OyB9IC5oZWFkaW5nIHRhYmxleyB3aWR0aDoyMjVweDsgbWFyZ2luOjAgYXV0bzsgfSAjc2VhcmNoQ29udGFpbmVyIC5pdGVtIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpOyBib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNCk7IHBhZGRpbmc6MTBweCBpbmhlcml0OyBtYXJnaW46MCAwIDAgMDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgbWluLWhlaWdodDo4MHB4OyBmb250LXNpemU6MC44NzVyZW0gOyB9ICNzZWFyY2hDb250YWluZXIgLml0ZW0gaW1nIHtmbG9hdDpsZWZ0OyB3aWR0aDo5MHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyOjNweCBzb2xpZCAjZmZmOyBtYXJnaW46LjNlbSAxMHB4OyAtd2Via2l0LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgLW1vei1ib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgfSAjc2VhcmNoQ29udGFpbmVyIC5pdGVtIGgzIHsgbWFyZ2luOjAgMCAwIDA7IHBhZGRpbmc6MCAwIDAgMDsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiMxMTE7IGxpbmUtaGVpZ2h0OjE4cHg7IG1hcmdpbi10b3A6NXB4OyB9IC5wcmljZSwgLmRldGFpbHMgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IC1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6N3B4OyBmbG9hdDpsZWZ0OyBkaXNwbGF5OmJsb2NrOyB9IC5wcmljZV91c2VkX2xlZnQsLnByaWNlX3VzZWRfcmlnaHR7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuNzVyZW0gOyBmb250LXdlaWdodDpib2xkOyBiYWNrZ3JvdW5kLWNvbG9yOiNGMkYyRjI7IGhlaWdodDo2MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowOyB3aWR0aDo1MCU7IH0gLnNwZWNzX3VzZWRfbGVmdCB7IHBhZGRpbmc6OHB4IDEwcHg7IGNvbG9yOiNhYWFhYWE7IH0gLnNwZWNzX3VzZWRfcm93MiB7IGJhY2tncm91bmQtY29sb3I6I0YyRjJGMjsgfSAuc3BlY3NfdXNlZF9hZnRlcnsgYmFja2dyb3VuZC1jb2xvcjojRjJGMkYyOyBwYWRkaW5nLWJvdHRvbToxMHB4OyBib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjY2NjOyB9IC51c2VkX2RldGFpbHNfYnRueyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoyNDBweDsgYm9yZGVyLXJhZGl1czozcHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgYmFja2dyb3VuZDojMDAwOyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjEwcHggMDsgfSAudXNlZF9kZXRhaWxzX2J0biBheyBjb2xvcjojRkZGOyB9IC5wcmljZV91c2VkX2xlZnQgc3BhbnsgY29sb3I6I0QzRDNEMzsgfSAudXNlZF9zZWFyY2hfcmViYXRleyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xODhyZW0gOyBmb250LXdlaWdodDpib2xkOyB9IC5yZWJhdGVfcHJpY2V7IGNvbG9yOnJlZDsgfSAudXNlZF9zZWFyY2hfcmViYXRlX3RkeyBwYWRkaW5nOjEwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2U2ZTZlNjsgfSAucHJpY2UgeyBiYWNrZ3JvdW5kLWNvbG9yOiNjZGNkY2Q7IGNvbG9yOiMxMTE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgcGFkZGluZy10b3A6OHB4OyB3aWR0aDozNiU7IHBhZGRpbmctYm90dG9tOjVweDsgfSBwcmljZV9zZWFyY2hfdXNlZHsgYmFja2dyb3VuZDojRjJGMkYyOyBoZWlnaHQ6NDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgZm9udC1zaXplOjEuNTYzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAudXNlZF9vbGRfcHJpY2V7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNhYWFhYWE7IGxpbmUtaGVpZ2h0OjEwcHg7IH0gLmRldGFpbHMgeyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGNvbG9yLXN0b3AoMC4wNSwjMDAwMDAwKSxjb2xvci1zdG9wKDEsIzMzMzMzMykpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwJyxlbmRDb2xvcnN0cj0nIzMzMzMzMycsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzMzMzM7IG1hcmdpbi1yaWdodDoxMHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW4tbGVmdDo1cHg7IHBhZGRpbmc6OHB4IDIwcHg7IG1hcmdpbi1yaWdodDowcHg7IH0gLnZpZGVvc19waWN0dXJlc19idXR0b25zX2NvbnRhaW5lciB7IG1hcmdpbi1ib3R0b206MHB4IWltcG9ydGFudDsgfSAuaS1jYW1lcmE6YmVmb3JleyBjb250ZW50OiJcZjAzZCI7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBwYWRkaW5nLXJpZ2h0OjVweDsgZm9udC13ZWlnaHQ6OTAwOyB3aWR0aDoxNXB4OyB9IC5pLXBob3RvOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDMwIjsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IHBhZGRpbmctcmlnaHQ6NXB4OyBmb250LXdlaWdodDo5MDA7IHdpZHRoOjE1cHg7IH0gLmZ1bGxXaWR0aEJ1dHRvbnsgd2lkdGg6OTAlOyBwYWRkaW5nOnZhcigtLXMpOyBmb250LXdlaWdodDpub3JtYWw7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLWxlZnQ6NSU7IG1hcmdpbi1yaWdodDo1JTsgYm9yZGVyLXJhZGl1czozcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5mdWxsV2lkdGhCdXR0b24gYSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5mYi5mdWxsV2lkdGhCdXR0b257IHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiMzYTU4OTg7IGNvbG9yOiNmZmY7IH0gLmZiLmZ1bGxXaWR0aEJ1dHRvbiBhIHsgY29sb3I6I2ZmZjsgbWFyZ2luLWxlZnQ6NTBweDsgfSAuZmIgc3Bhbi5mYS1zdGFja3sgY29sb3I6IzNhNTg5ODsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyB9IC50ZXh0X3NsaWRlIGEgeyBoZWlnaHQ6MTRweCFpbXBvcnRhbnQ7IH0gI3ZkcF9wcmljZV9ibG9jaywjdmRwX3ByaWNlX2Jsb2NrX3VzZWR7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICMwMDA7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQpOyBib3JkZXItY29sb3I6I2JiYjsgfSAjdmRwX3ByaWNlX2Jsb2NreyBtaW4taGVpZ2h0OjMwcHg7IH0gZGl2I2NvbXBsX3RhYmxlIGEgeyBjb2xvcjojMzMzOyB9IC5jaGV2cm9uLXJpZ2h0OmFmdGVyIHsgY29udGVudDoiXGYwNTQiOyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OjkwMDsgdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoyJTsgfSBmdWxsV2lkdGhCdXR0b246YmVmb3JlIHsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDo5MDA7IHRleHQtZGVjb3JhdGlvbjppbmhlcml0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IHBhZGRpbmctdG9wOjJweDsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdnsgbWFyZ2luLXRvcDoxNXB4OyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2ICogKyAqeyBtYXJnaW4tbGVmdDoxcmVtOyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IC5mYWJ7IGZvbnQtc2l6ZToxLjVyZW07IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgYXsgY29sb3I6IzgwODA4MDsgfSAuc29jaWFsIHsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjE5cHg7IGhlaWdodDoxOXB4OyBmbG9hdDpyaWdodDsgYmFja2dyb3VuZDpyZ2IoMjU1LDI1NSwyNTUpOyBib3JkZXI6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7IGJveC1zaGFkb3c6MCAycHggNHB4IHJnYmEoMCwwLDAsMC4xNSksIGluc2V0IDAgMCA1MHB4IHJnYmEoMCwwLDAsMC4xKTsgYm9yZGVyLXJhZGl1czoxMDBweDsgbWFyZ2luOjAgMTBweCAwcHggMDsgcGFkZGluZzo5cHg7IH0gLnNvY2lhbC1zaGFyZSB7IHdpZHRoOjE5cHg7IGhlaWdodDoxOXB4OyBiYWNrZ3JvdW5kOnJnYigyNTUsMjU1LDI1NSk7IGJvcmRlci1yYWRpdXM6MTAwcHg7IG1hcmdpbjowIDEwcHggMHB4IDA7IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgYS5zb2NpYWwgLmZhYnsgZm9udC1zaXplOjEuMTg4cmVtIDsgfSAuc29jaWFsIGl7IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAuZ29vZ2xlLXBsdXM6aG92ZXJ7YmFja2dyb3VuZDojREQ0QjM5O2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLmZhY2Vib29rOmhvdmVye2JhY2tncm91bmQ6IzNiNTk5ODtjb2xvcjojRkZGIWltcG9ydGFudDt9IC50d2l0dGVyOmhvdmVye2JhY2tncm91bmQ6IzAwYWNlZTtjb2xvcjojRkZGIWltcG9ydGFudDt9IC5waW50ZXJlc3Q6aG92ZXJ7YmFja2dyb3VuZDojYzgyMzJjO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLmxpbmtlZGluOmhvdmVye2JhY2tncm91bmQ6IzBlNzZhODtjb2xvcjojRkZGIWltcG9ydGFudDt9IC5za3lwZTpob3ZlcntiYWNrZ3JvdW5kOiMwMGFmZjA7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAueW91dHViZTpob3ZlcntiYWNrZ3JvdW5kOiNjNDMwMmI7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAudHVtYmxyOmhvdmVye2JhY2tncm91bmQ6IzM0NTI2Zjtjb2xvcjojRkZGIWltcG9ydGFudDt9IC5kZXRhaWxzIGEgeyBjb2xvcjojZmZmOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucGFnaW5hdGlvbiB7Y2xlYXI6Ym90aDsgcGFkZGluZzo1cHg7IHBhZGRpbmctbGVmdDoxMDBweDt9IC5wYWdpbmF0aW9uIGEsIC5wYWdpbmF0aW9uIGEuc2VsZWN0ZWQgeyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOjVweCA3cHg7IHBhZGRpbmctdG9wOjhweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZsb2F0OmxlZnQ7IHdpZHRoOjEzcHg7IG1hcmdpbjo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7IC1tb3otYm9yZGVyLXJhZGl1czo2cHg7IGJvcmRlci1yYWRpdXM6NnB4OyB9IC5wYWdpbmF0aW9uIGEge2JhY2tncm91bmQ6IzY2NiA7fSAucGFnaW5hdGlvbiBhLnNlbGVjdGVkIHtiYWNrZ3JvdW5kOiMyMjIgO30gLnBhZ2VubzV7d2lkdGg6MTAwJTttYXJnaW46MzBweCAwIDIwcHggMHB4OyBwYWRkaW5nOjA7IGZsb2F0OmxlZnR9IC5wYWdlX25hbWUxOCBheyBjb2xvcjojMzMzOyB9IC5wYWdlbm8ye2hlaWdodDoyNHB4OyB9IC5wYWdlbm8yIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAucGFnZW5vMiB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmlubGluZTt9IC5wYWdlbm8yIHVsIGxpIGF7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiNiM2I0YjU7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAucGFnZW5vMiB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojMjgyODI4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLnBhZ2VubzIgbGkgYS5hY3RpdmV7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiMyODI4Mjg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAjcGFnZURpdiBhIHsgY29sb3I6I2ZmZjsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyLWJveCwuZmlsdGVyLWFkansgYmFja2dyb3VuZDojODA4MDgwOyBjb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI3NlYXJjaF91c2VkX2ZpbHRlci1ib3h7IHBhZGRpbmc6MTVweCA1cHg7IH0gLmZpbHRlci1hZGp7IHBhZGRpbmc6NXB4IDVweDsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyLWJveCAuZmEsIC5maWx0ZXItYWRqIC5mYXsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAudWktYWNjb3JkaW9uLWhlYWRlci1pY29ueyBtYXJnaW4tdG9wOi0xMXB4IWltcG9ydGFudDsgfSAudWktYWNjb3JkaW9uLWNvbnRlbnR7IGJvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7IGJvcmRlcjpub25lIWltcG9ydGFudDsgYm94LXNoYWRvdzpub25lIWltcG9ydGFudDsgfSAjY2l0eVRpdGxleyBjb2xvcjojNjY2NjY2OyBmb250LXNpemU6MC45MzhyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGRpc3BsYXk6YmxvY2s7IH0gLnRpdGxlSW5mb3sgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyB9IC50aXRsZUNhcnsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50OyB9IC5zZWFyY2hyZXN1bHQgaDIsICNTZWFyY2hUaXRsZSB7IGNvbG9yOiMzMzM7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbWFyZ2luOjAgMCAwIDA7IHBhZGRpbmc6MjVweCAwIDEwcHggMTVweDsgY2xlYXI6Ym90aDsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5uZXctaXRlbSB7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xKTsgcGFkZGluZzowIDsgbWFyZ2luOjAgMCAwIDA7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgfSAubmV3LWl0ZW06bGFzdC1vZi10eXBleyBib3JkZXItYm90dG9tOm5vbmU7IH0gLm5ld19wcmljZV9ibG9ja3sgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmbG9hdDpsZWZ0OyBjbGVhcjpib3RoOyBtYXJnaW4tdG9wOi01cHg7IH0gLm5ld19tYWtlX25hbWV7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbWFyZ2luLWJvdHRvbTotM3B4OyB9IC5uZXctaXRlbSAudGh1bWIgeyBmbG9hdDpyaWdodDsgd2lkdGg6NDAlOyBtYXJnaW46LjNlbSAwcHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLm5ld2Nhcl9ibG9ja19kZXNjIGF7IGNvbG9yOiMzMzMzMzM7IH0gLm5ld19tb2RlbF9uYW1leyBmb250LXNpemU6MS4xMjVyZW0gOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyBmb250LXdlaWdodDpib2xkOyB9IC5uZXdfeWVhcnsgZmxvYXQ6bGVmdDsgfSAubmV3LWl0ZW0gLnRodW1iIGltZ3sgbWF4LXdpZHRoOjEwMCU7IGJvcmRlcjowOyB9IC5uZXdjYXJfYmxvY2tfZGVzYyB7IG1hcmdpbi10b3A6MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IHBhZGRpbmc6MDsgbGluZS1oZWlnaHQ6MjBweDsgd2lkdGg6NTAlOyBwYWRkaW5nLWxlZnQ6MjVweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzMzMzsgfSBuZXdjYXJfYmxvY2sgaDN7IH0gLm5ldy1pdGVtIGgzIHsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB3aWR0aDo5NSU7IH0gLm5ldy1pdGVtIC5hcnJvdyB7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsgYm9yZGVyLXJhZGl1czoxNHB4OyB3aWR0aDoxNXB4OyBtYXJnaW46MzBweCA1cHggMTBweCAxMHB4OyB9IC5uZXctZGV0YWlscyBoMSwgLm5ldy1kZXRhaWxzIGgyICwudXNlZF9zZWFyY2hfaXRlbSBoMiwgLnVzZWQtZGV0YWlscyBoMSwgLm5ldy1kZXRhaWxzIHNwYW4uaDItYWx0IHsgY29sb3I6IzExMTsgY2xlYXI6Ym90aDsgcG9zaXRpb246cmVsYXRpdmU7IHBhZGRpbmctbGVmdDoyMHB4OyBsaW5lLWhlaWdodDoyMXB4OyBtYXJnaW4tbGVmdDoxNXB4OyBtYXJnaW4tcmlnaHQ6MTVweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5uZXctZGV0YWlscyAudGJvcmRlciB7IHBhZGRpbmctdG9wOjEwcHg7IGJvcmRlci10b3A6MXB4IHNvbGlkICNlN2U3ZTc7IH0gLm5ldy1kZXRhaWxzIGgxIC5tYWtlTW9kZWxZZWFyLCAudXNlZF9zZWFyY2hfaXRlbSBoMiAubWFrZU1vZGVsWWVhciwgLnVzZWQtZGV0YWlscyBoMSAubWFrZU1vZGVsWWVhcnsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAubmV3LWRldGFpbHMgaDEgLnZlcnNpb25GdWxsLCAudXNlZF9zZWFyY2hfaXRlbSBoMiAudmVyc2lvbkZ1bGwsIC51c2VkLWRldGFpbHMgaDEgLnZlcnNpb25GdWxseyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxcmVtIDsgb3ZlcmZsb3ctd3JhcDphbnl3aGVyZTsgfSAubmV3LWRldGFpbHMgaDEgLmRlYWxlckxjYXRpb25DYXJUaXRsZSwgLnVzZWRfc2VhcmNoX2l0ZW0gaDIgLmRlYWxlckxjYXRpb25DYXJUaXRsZSwgLnVzZWQtZGV0YWlscyBoMSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC45MzhyZW0gOyBsZXR0ZXItc3BhY2luZzotMXB4OyB9IC5mdWxsV2lkdGhCdXR0b24gaXsgcGFkZGluZy1yaWdodDo1cHg7IG1pbi13aWR0aDoxOHB4OyB9IC51c2VkLWRldGFpbHMgaDEgc3Bhbi5mYS1jaGV2cm9uLXJpZ2h0eyBtaW4td2lkdGg6MS41cmVtOyBtaW4taGVpZ2h0OjEuNXJlbTsgZm9udC1zaXplOjFyZW07IHBhZGRpbmc6MDsgYm9yZGVyLXJhZGl1czoxcmVtOyBtYXJnaW46MCA1cHggMCAwOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAubmV3LWRldGFpbHMgI2NhclRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0LCAudXNlZF9zZWFyY2hfaXRlbSAjY2FyVGl0bGUgLmZhLWNoZXZyb24tcmlnaHQsIC51c2VkLWRldGFpbHMgaDEgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MTNweDsgd2lkdGg6MTRweDsgaGVpZ2h0OjE3cHg7IHBhZGRpbmctdG9wOjNweDsgcGFkZGluZy1sZWZ0OjZweDsgbWFyZ2luLWxlZnQ6LTI4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6MTRweDsgZm9udC1zaXplOjAuODc1cmVtIDsgYm94LXNpemluZzpjb250ZW50LWJveDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gI1NlYXJjaFRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIzcHggIWltcG9ydGFudDsgaGVpZ2h0OjI5cHggIWltcG9ydGFudDsgcGFkZGluZy10b3A6M3B4ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDoxMXB4ICFpbXBvcnRhbnQ7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6MS41cmVtICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMDUxNDFmIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmZvb3Rlcl9kaXNjbGFtZXIgYXsgY29sb3I6I2ZmZmZmZiB9IC5uZXdjYXJfYmxvY2tfZGVzYyAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czoxMHB4OyB3aWR0aDoxMnB4OyBoZWlnaHQ6MTRweDsgcGFkZGluZy10b3A6MnB4OyBwYWRkaW5nLWxlZnQ6NHB4OyBtYXJnaW4tbGVmdDotMjhweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDoxNHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZiA7IH0gLm5ldy1kZXRhaWxzICNtYWluQ29tcGFyZVZpZXcgaDIsIC5uZXctZGV0YWlscyAjbWFpbkNvbXBhcmVWaWV3IHNwYW4uaDItYWx0LCAubmV3LWRldGFpbHMgLmJyb2NodXJlLWltZy1idG4gc3Bhbi5oMi1hbHQsIGgyLmJyb2NodXJlLWltZy10aXRsZSB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbjowIDAgMCAwOyBwYWRkaW5nOjdweCAwIDdweCAxMHB4OyBjbGVhcjpib3RoOyB9IC5uZXctZGV0YWlscyAjbWFpbkNvbXBhcmVWaWV3IHNwYW4uaDItYWx0LCAubmV3LWRldGFpbHMgLmJyb2NodXJlLWltZy1idG4gc3Bhbi5oMi1hbHQgeyBkaXNwbGF5OmJsb2NrOyB9IC5uZXctZGV0YWlscyA+IHAge3BhZGRpbmc6N3B4IDEwcHg7fSAub3RoZXJMaW5rcyB7IG1hcmdpbjozMHB4IDAgMTVweDsgcGFkZGluZzowIDE1cHg7IH0gLm90aGVyTGlua3MgYSB7IGRpc3BsYXk6bGlzdC1pdGVtOyBmb250LXNpemU6MS4xZW07IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGxpc3Qtc3R5bGUtcG9zaXRpb246aW5zaWRlOyB9IC5vdGhlckxpbmtzIGEgKyBhIHsgbWFyZ2luLXRvcDoxMHB4OyB9IC5yYWl0aW5nLWRldGFpbHMgaDF7IGNvbG9yOiMxMTE7IGZvbnQtc2l6ZToxLjNlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucmFpdGluZy1kZXRhaWxzIC5ib3gyX3RleHR7IHRleHQtYWxpZ246anVzdGlmeTsgcGFkZGluZzowIDVweDsgfSAucG9zaXRpdmVSYXRpbmdUeHR7cGFkZGluZzoxMHB4O30gLnBvc2l0aXZlUmF0aW5nVHh0IC5idG4tZGVmYXVsdHt0ZXh0LXRyYW5zZm9ybTpub25lO30gLnBvc2l0aXZlUmF0aW5nVHh0IHAge2ZvbnQtc2l6ZToxLjA2M3JlbSA7IHRleHQtYWxpZ246anVzdGlmeTt9IC5wYWdlX25hbWUye3RleHQtYWxpZ246Y2VudGVyO30gLm91cnRlYW0gYSB7IGNvbG9yOiMzMzMzMzM7IH0gI3NlYXJjaF91c2VkX2ZpbHRlcnsgYm9yZGVyOjA7IGJvcmRlci1yYWRpdXM6dW5zZXQ7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI3VzZWRPcHRpb25zIC5saXN0aXRlbTphZnRlcnsgY29udGVudDoiXGYwMGMiOyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgZm9udC13ZWlnaHQ6OTAwOyBwYWRkaW5nLXJpZ2h0OjVweDsgd2lkdGg6MTVweDsgZmxvYXQ6cmlnaHQ7IH0gLmxpc3RpdGVtIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpOyBwYWRkaW5nOjVweCAwOyBmb250LXNpemU6MC45MzhyZW0gOyB9IC5saXN0aXRlbSBpbWcge3dpZHRoOjEwMCUgIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O30gLmxpc3RpdGVtIHNwYW4ge2Rpc3BsYXk6aW5saW5lLWJsb2NrO30gLmxpc3RpdGVtIC5saXN0ZGVzYyB7ZmxvYXQ6bGVmdDsgd2lkdGg6NTAlOyBtYXJnaW4tbGVmdDo1cHg7fSAubGlzdGl0ZW0gLmxpc3R2YWwge2Zsb2F0OnJpZ2h0O3dpZHRoOjQ1JTsgdGV4dC1hbGlnbjpyaWdodDttYXJnaW4tcmlnaHQ6NXB4O30gLmJpZyB7d2lkdGg6OTUlOyBjbGVhcjpib3RoOyBtYXJnaW46MTBweCBhdXRvOyBkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6NDBweDt9IC5wcmljZXRleHQge2NvbG9yOiMxMTE7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luOjEwcHggMCAwIDA7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnR9IC5wcmludCwgLmxpa2Uge2Zsb2F0OnJpZ2h0OyB3aWR0aDo2MHB4O2ZvbnQtc2l6ZTowLjc1cmVtIDsgdGV4dC1hbGlnbjpyaWdodDsgbWFyZ2luLXRvcDoxMHB4O30gLm9sZC1kZXRhaWxzIHRhYmxleyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0gI3NwZWNUaXRsZXsgYm9yZGVyLXRvcDoxcHggc29saWQgI2FhYWFhYTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2FhYWFhYTsgcGFkZGluZy10b3A6MTBweDsgcGFkZGluZy1ib3R0b206MTBweDsgcGFkZGluZy1sZWZ0OjEwcHg7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgbWFyZ2luLXRvcDoyNXB4OyB9IC5vbGQtZGV0YWlscyB0YWJsZSB0ciB0ZHsgcGFkZGluZzo1cHggMHB4IDVweCAxMHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTZlNmU2OyB9IC5vbGQtZGV0YWlscyB1bHsgbGlzdC1zdHlsZTpub25lOyB9IC5vbGQtZGV0YWlscyB0ZCBpLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MTNweDsgd2lkdGg6MTJweDsgaGVpZ2h0OjE0cHg7IHBhZGRpbmctdG9wOjNweDsgcGFkZGluZy1sZWZ0OjVweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuNzVyZW0gOyBtYXJnaW46MHB4OyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZiA7IH0gLm9sZC1kZXRhaWxzIHRyOm50aC1jaGlsZChldmVuKSB7IGJhY2tncm91bmQ6I2VlZTsgfSAub3RoZXJCR3sgYmFja2dyb3VuZDojZmZmZmZmICFpbXBvcnRhbnQ7IH0gLmJnTm9uZXsgYmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQ7IH0gLnRleHRDb2xvcnsgY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyB9IC50ZXh0Q29sb3JVc2VkU1JQTW9iaWxleyBjb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IH0gLnRleHRfc2xpZGUgYSA+IGJ7IGZsb2F0OmxlZnQhaW1wb3J0YW50OyBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDsgcG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50OyBtYXJnaW46MHB4IWltcG9ydGFudDsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IHRvcDotM3B4IWltcG9ydGFudDsgd2lkdGg6MjAwcHghaW1wb3J0YW50OyBsZWZ0OjJweDsgfSAuZ3JheWJnIHsgbWFyZ2luOjEwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBjbGVhcjpib3RoOyBkaXNwbGF5OmJsb2NrOyBiYWNrZ3JvdW5kOiNjZmNmY2YgdXJsKC9pbWFnZXMvZ3JheWJnLnBuZykgcmVwZWF0LXggMCAwOyBwYWRkaW5nOjAgMTBweDsgaGVpZ2h0OjUwcHg7IH0gLnRleHQxLCB0ZXh0MiwgcGljIHttYXJnaW46MCAwIDAgMDsgaGVpZ2h0OjUwcHg7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6MCAxMHB4IDAgMTBweDsgbGluZS1oZWlnaHQ6NTBweDsgZm9udC1zaXplOjAuODc1cmVtIDt9IC50ZXh0MSB7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNik7fSAucGljIHtib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjMpOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC42KTt9IC50ZXh0MiB7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4zKTt9IC5wcm9tb2ltYWdlIHtmbG9hdDpsZWZ0OyB3aWR0aDoxMTBweDsgbWFyZ2luLXRvcDo3cHg7fSAucHJvbW9kZXRhaWwge2Zsb2F0OmxlZnQ7IHdpZHRoOjE3MHB4O30gLnByb21vZGV0YWlsIGgyIHtmb250LXNpemU6MS41cmVtIDsgbWFyZ2luOi0xMHB4IDAgMCAwOyBwYWRkaW5nOjAgMCAwIDB9IC5wcm9tby1jYXJkIHsgbWFyZ2luOjAgMTVweCAxMHB4OyBtYXJnaW4tYm90dG9tOjhweDsgZGlzcGxheTpibG9jazsgYm9yZGVyOjFweCBzb2xpZCAjYzhjOGM4OyBwYWRkaW5nOjNweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MHB4IDBweCAxMHB4IDJweCAjYzhjOGM4OyB9IC5wcm9tby1jYXJkIC5wcm9tby1pbWFnZSB7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wcm9tby1jYXJkIC5wcm9tby10aXRsZSB7IGZvbnQtc2l6ZToxLjMxM3JlbSA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzMzMzsgbWFyZ2luLXRvcDo4cHg7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wcm9tby1pbWFnZSBpbWcgeyB3aWR0aDoxMDAlOyB9IC5wcm9tby1jYXJkIC5wcm9tby1kZXRhaWxzLXdyYXBwZXIgeyB9IC5wcm9tby1jYXB0aW9uIHsgY29sb3I6IzMzMzMzMzsgfSAucHJvbW8tY2FwdGlvbjpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbToxNXB4OyB9IC5wcm9tby1jYXB0aW9uIC5wcm9tby10aXRsZSB7IHRleHQtYWxpZ246bGVmdDsgfSAucHJvbW8tb2ZmZXIgLnByb21vLWJvZHkgLnByb21vLXRpdGxlIHsgbWluLWhlaWdodDowOyB9IC5wcm9tby1zdWJjYXB0aW9uIHsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbTsgfSAucHJvbW8tZGV0YWlscy1idG4geyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGNvbG9yLXN0b3AoMC4wNSwjMDAwMDAwKSxjb2xvci1zdG9wKDEsIzMzMzMzMykpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwJyxlbmRDb2xvcnN0cj0nIzMzMzMzMycsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzMzMzM7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOjZweDsgcGFkZGluZzo3cHg7IH0gLnByb21vLWNhcmQgLnByb21vLWRldGFpbHMtYnRuIGEgeyBjb2xvcjp3aGl0ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnNlcnZpY2Utc2VjdGlvbiB7Y2xlYXI6Ym90aDsgbWFyZ2luOjEwcHg7IGRpc3BsYXk6YmxvY2s7IG1pbi1oZWlnaHQ6ODBweDt9IC5zZXJ2aWNlLXNlY3Rpb24gaW1nIHsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTo3cHg7IH0gLnNlcnZpY2Utc2VjdGlvbiAuZGV0YWlscyB7IGJhY2tncm91bmQ6cmdiKDY4LDY4LDY4KTsgd2lkdGg6MTY1cHg7IGZsb2F0Om5vbmU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjBweDsgfSAuc2VydmljZV9kZXNjeyB9IC5zZXJ2aWNlX21haW5fZGVzYyB7IG1hcmdpbjoxMHB4OyB9IC5zZXJ2aWNlX21haW5fZGVzYyBheyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5zdGVwcyB7fSAuc3RlcHMgdWwge30gLnN0ZXBzIHVsIGxpeyBsaXN0LXN0eWxlOm5vbmU7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW46MCAxMHB4IDAgMTBweDsgZGlzcGxheTpibG9jazsgd2lkdGg6NzBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBjdXJzb3I6ZGVmYXVsdH0gLnN0ZXBzIHVsIGxpIC5hY3RpdmUsIC5zdGVwcyB1bCBsaSAuaW5hY3RpdmUgeyAtd2Via2l0LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsgLW1vei1ib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7IGJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjI1cHg7IC1tb3otYm9yZGVyLXJhZGl1czoyNXB4OyBib3JkZXItcmFkaXVzOjI1cHg7IHdpZHRoOjI1cHg7IGhlaWdodDoyNXB4OyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tdG9wOi0ycHg7IHBhZGRpbmctcmlnaHQ6MXB4OyBsaW5lLWhlaWdodDoyNXB4OyB9IC5zdGVwcyB1bCBsaSAuYWN0aXZlIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy93aGl0ZS5wbmcpIHJlcGVhdC14OyBjb2xvcjojMDUxNDFmO30gLnN0ZXBzIHVsIGxpIC5pbmFjdGl2ZSB7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibGFjay5wbmcpIHJlcGVhdC14OyBjb2xvcjojZmZmOyB9IC5mb3JtIHttYXJnaW46MTBweDt9IC5mb3Jtc19ib3gyMiB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDAgMTBweCAwOyB9IC52b2kgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgfSAjY3JlZGl0X3ZpX2FkdmFuY2VkIGxhYmVsIGlucHV0IHsgbWFyZ2luLXRvcDoxMHB4OyB9IHNwYW4uYXN0ayB7IGNvbG9yOiNGRjAxMDE7IGZvbnQtc2l6ZTowLjY4OHJlbTsgZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDozcHg7IH0gLmNyZWRpdC1jb25zZW50X19jb250YWluZXIgeyBkaXNwbGF5OmZsZXg7IHBhZGRpbmc6MCAwLjdyZW07IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiMyNDI0MjQ7IH0gLmNyZWRpdC1jb25zZW50X19jb250YWluZXIgZGl2Om5vdCg6Zmlyc3Qtb2YtdHlwZSkgeyBtYXJnaW4tbGVmdDowLjdyZW07IH0gLmZpZWxkIHsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5sYWJlbCB7cGFkZGluZzoxMHB4IDAgMCAwO30gLmRlYWxlcmFkZHJlc3MsIC5kZWFsZXJwaG9uZSwgLmRlYWxlcmVtYWlsIHsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6MzBweDsgYmFja2dyb3VuZC1wb3NpdGlvbjo1cHggMTNweDsgYmFja2dyb3VuZC1jb2xvcjojZGJkYmRiOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgbWFyZ2luOjEwcHg7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNDBweDsgZm9udC13ZWlnaHQ6bm9ybWFsIH0gLmRlYWxlcmFkZHJlc3MsIC5kZWFsZXJwaG9uZSwgLmRlYWxlcmVtYWlsIHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfSAuZGVhbGVyYWRkcmVzczpiZWZvcmUgeyBjb250ZW50OiJcZjAxNSI7IH0gLmRlYWxlcnBob25lOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDk1IjsgbWFyZ2luLXRvcDo4cHg7IH0gLmRlYWxlcmVtYWlsOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMGUwIjsgfSAuZGVhbGVyYWRkcmVzczpiZWZvcmUsIC5kZWFsZXJwaG9uZTpiZWZvcmUsIC5kZWFsZXJlbWFpbDpiZWZvcmV7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC13ZWlnaHQ6OTAwOyB0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsgY29sb3I6IzMzMzsgZm9udC1zaXplOjEuMTI1cmVtIDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MjFweDsgfSAuZGVhbGVycGhvbmUgI2FjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlci1pY29uLCAub3Blbl9ob3Vyc19jb250YWluZXIgLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiB7IGRpc3BsYXk6bm9uZTsgfSAub3Blbl9ob3Vyc19jb250YWluZXIgLm1hcF9vcGVuX2hvdXJzX2V4cGFuZCB7IGNvbG9yOiMwMDAwMDA7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZSAudmlzaXRDb250YWN0QnV0dG9uLCAub3Blbl9ob3Vyc19jb250YWluZXIgLnZpc2l0Q29udGFjdEJ1dHRvbnsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTFweCA1cHggOXB4OyBmb250LXNpemU6MC44MTNyZW0gOyBtYXJnaW4tdG9wOjEwcHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5kZWFsZXJwaG9uZSAudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taWNvbnN7IHBhZGRpbmctbGVmdDowOyB9IC5kZWFsZXJwaG9uZSAuZmEtY2FsZW5kYXJ7IG1hcmdpbi1sZWZ0OjEzcHg7IG1hcmdpbi1yaWdodDo1cHg7IH0gLmRlYWxlcnBob25lIC51aS1hY2NvcmRpb24tY29udGVudCB7IGJhY2tncm91bmQtY29sb3I6I2YzZjNmMyFpbXBvcnRhbnQ7IGJvcmRlcjpub25lIWltcG9ydGFudDsgfSAuZGVhbGVycGhvbmUudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyeyBwYWRkaW5nOjhweDsgfSAuaDMubW9iaWxlQnV0dG9ueyBmb250LXNpemU6MC45MzhyZW0gOyB9IC5tb2JpbGVCdXR0b25Db250YWN0eyBib3JkZXItcmFkaXVzOjRweDsgZGlzcGxheTpibG9jazsgY3Vyc29yOnBvaW50ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tdG9wOjJweDsgcGFkZGluZzouNWVtIC41ZW0gLjVlbSAuN2VtOyB6b29tOjE7IHBhZGRpbmctbGVmdDoyLjJlbTsgb3V0bGluZTowOyBsaW5lLWhlaWdodDoxLjM7IHRleHQtZGVjb3JhdGlvbjpub25lOyBsaXN0LXN0eWxlOm5vbmU7IH0gLm1vYmlsZUJ1dHRvbkNvbnRhY3QgaXsgbWFyZ2luLWxlZnQ6LTIwcHg7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5iaWdmYiB7cGFkZGluZzozMHB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmlnZmIucG5nKSByZXBlYXQteCAwIDB9IC5idXR0b25fam9ib2ZmZXIgeyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9pY29uX2VtcGxveS5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDBweCAwcHggcmdiKDIzMSwgMjMyLCAyMzIpOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDo0MHB4OyB9IGRpdi5lcnJvck1zZyB7IGJhY2tncm91bmQtY29sb3I6I0ZGQkFCQTsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvZXJyb3IucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZDsgY29sb3I6I0Q4MDAwQzsgZGlzcGxheTpub25lOyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IHotaW5kZXg6OTk5OTsgfSAuZW1haWxCb2R5LCAuZW1haWxTdWJqZWN0eyBkaXNwbGF5Om5vbmU7IH0gLmZpbGVpbnB1dC1idXR0b24geyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9ibF9iZy5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3AgcmdiYSgwLCAwLCAwLCAwKTsgfSAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2J1dHRvbl8yLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcCByZ2JhKDAsIDAsIDAsIDApOyB9IC5maWxlaW5wdXQtYnV0dG9uLCAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDozMXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgbWFyZ2luOjA7IG9wYWNpdHk6MDsgLW1zLWZpbHRlcjonYWxwaGEob3BhY2l0eT0wKSc7IGN1cnNvcjpwb2ludGVyOyB9IC5wYWdlX25hbWU1e2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7cGFkZGluZzowIDBweCAxMHB4IDIxcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojMjQyNDI0O2ZvbnQtd2VpZ2h0Om5vcm1hbCB9IC5waWNib3g5MHt3aWR0aDo5MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjhweDsgYm9yZGVyOjFweCBzb2xpZCAjYWNhY2FjOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6N3B4OyBib3JkZXItcmFkaXVzOjdweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6N3B4OyB9IC5waWNib3g5MCBpbWcge3dpZHRoOjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6N3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6N3B4OyBib3JkZXItcmFkaXVzOjdweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6N3B4OyB9IC50ZXh0Ym94MTkxe3dpZHRoOjE5MXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MS4yOyBjb2xvcjojMjQyNDI0OyB9IC50ZXh0Ym94MTkxIGg0eyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMjQyNDI0OyBwYWRkaW5nLWJvdHRvbTo1cHg7IH0gLm1haW5ib3gyOTF7d2lkdGg6OTMlO2hlaWdodDoxMTJweDsgZmxvYXQ6bGVmdDsgY2xlYXI6Ym90aDsgbWFyZ2luOjAgNXB4IDEwcHggMDsgYmFja2dyb3VuZDojZTZlNmU2OyBib3JkZXI6MXB4IHNvbGlkICNkNGQ0ZDQ7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MTVweCAxMHB4O30gLmxhenl7Ym9yZGVyOjA7ZGlzcGxheTpub25lfSAudGVjaFNwZWNze3dpZHRoOjYyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgcGFkZGluZzoyNXB4IDE1cHg7IGJhY2tncm91bmQ6I2U2ZTdlNzsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCBib3R0b207IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo2cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4Oy13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4O30gLnRleHRfYm94MTEgYSB7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDoxNXB4OyBwYWRkaW5nOjEwcHggMDsgfSAudGV4dF9ib3gxMSBhIHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjE1cHg7IHBhZGRpbmc6MTBweCAwOyB9IC50ZXh0X2JveDExIHVsLCAudGV4dF9ib3gxMSBwIHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246anVzdGlmeTsgfSAudGV4dF9ib3gxMSBwIGltZ3sgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6YXV0byAhaW1wb3J0YW50OyBtYXJnaW46MCFpbXBvcnRhbnQ7IHBhZGRpbmc6MTBweCAwIWltcG9ydGFudDsgfSAucHJpY2VOb3RlIHsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuODVlbTsgZm9udC1zdHlsZTppdGFsaWM7IHRleHQtYWxpZ246anVzdGlmeTsgZGlzcGxheTpibG9jazsgcGFkZGluZy1yaWdodDoxMHB4OyBsaW5lLWhlaWdodDoxLjFlbTsgbWFyZ2luOjEwcHggMDsgfSAuc3RhY2tlZERpc2NsYWltZXJ7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6MTBweDsgfSBzcGFuLnN0YWNrZWREaXNjbGFpbWVyOmJlZm9yZXsgY29udGVudDoiKioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjFyZW07IH0gI21haW5Db21wYXJlVmlld3sgbWFyZ2luOjA7IH0gI2NvbXBsX3RhYmxleyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLmlkTmF2MSB7IGNvbG9yOiNmOWY5Zjk7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDoyOHB4OyBsaXN0LXN0eWxlOm91dHNpZGUgbm9uZSBub25lOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmlkTmF2MSBsaS50b3AgeyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgcGFkZGluZzowIDJweCAwIDA7IH0gLmlkTmF2MSBsaS50b3AxIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojZmZmOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBoZWlnaHQ6MjhweDsgcGFkZGluZzowIDJweCAwIDA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluayB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYmxfYmcucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6cmdiKDI1NSwgMjU1LCAyNTUpOyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgcGFkZGluZzowIDEycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazpob3ZlciB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYmxfaG92ZXIucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6I2ZmZjsgfSAuaWROYXYxIGxpIGEudG9wX2xpbmsxIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojZmVmZWZlOyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgcGFkZGluZzowIDEycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9ICNmcm1SZWJhdGUgLmlkTmF2MSBsaSBhLnRvcF9saW5rIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9idXR0b25fcG9wdXAucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBjb2xvcjojZmZmOyB9ICNmcm1SZWJhdGUgLmlkTmF2MSBsaSBhLnRvcF9saW5rOmhvdmVyIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGNvbG9yOiNmZmY7IH0gLnRleHQyMCB7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDoyM3B4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAucHJvbW9jb2RlYm94eyAtbW96LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZTgwZDBkOyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZTgwZDBkOyBib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggI2U4MGQwZDsgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAuMDUsICNmZjMzMzMpLCBjb2xvci1zdG9wKDEsICNEQjAwMDApKTsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYzMzMzIDUlLCAjREIwMDAwIDEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmYzMzMzJywgZW5kQ29sb3JzdHI9JyNEQjAwMDAnLEdyYWRpZW50VHlwZT0wKTsgYmFja2dyb3VuZC1jb2xvcjojZmYzMzMzOyBib3JkZXI6MXB4IHNvbGlkICNmNTFhMWE7IGNvbG9yOiNGRkZGRkYhaW1wb3J0YW50OyBmb250LXNpemU6MC45MzhyZW0gOyBwYWRkaW5nOjEwcHggMTBweCAwOyBtYXJnaW46MDsgbWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tbGVmdDozOHB4OyBtaW4td2lkdGg6MTAwcHg7IGJvcmRlci1yYWRpdXM6NnB4OyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZsb2F0OmxlZnQ7IGRpc3BsYXk6YmxvY2s7IGJvcmRlcjowOyB3aWR0aDoxMDBweDsgfSAuZGV0YWlsUHJpY2VXaXRoQnV0dG9uIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tbGVmdDo1cHg7IHZlcnRpY2FsLWFsaWduOnRvcDsgbWFyZ2luLWJvdHRvbToxMHB4OyBtYXJnaW4tcmlnaHQ6NXB4OyB3aWR0aDo0OSU7IG1heC13aWR0aDoxOTVweDsgbWluLXdpZHRoOjEyMHB4OyB9IC5kZXRhaWxQcmljZVdpdGhCdXR0b24gPiAuZGV0YWlsUHJpY2VCbG9jayB7IG1hcmdpbi1sZWZ0OjA7IG1hcmdpbi1ib3R0b206OXB4OyB9IC5kZXRhaWxQcmljZVdpdGhCdXR0b24gPiAucHJvbW9jb2RlYm94IHsgbWFyZ2luOjBweDsgd2lkdGg6MTAwJTsgcGFkZGluZzo2cHggMHB4IDNweCAwcHg7IG1hcmdpbi10b3A6OXB4OyB9IC5kZXRhaWwtcHJpY2UtcHJvbW8gaDIgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2J1dHRvbl9wcm9tb3Rpb24ucG5nKTsgY29sb3I6I0ZGRjsgYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6NXB4IDA7IH0gLmRldGFpbC1wcmljZS1wcm9tbyBhIHsgY29sb3I6I0ZGRjsgfSAuZGV0YWlsUHJpY2VCbG9ja3sgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1sZWZ0OjVweDsgcGFkZGluZzowcHg7IGJhY2tncm91bmQtY29sb3I6bGlnaHRncmV5OyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IGJvcmRlci1yYWRpdXM6NXB4OyBtYXJnaW4tYm90dG9tOjBweDsgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjE5NXB4OyB9IC5uZXctZGV0YWlscyAuZGV0YWlsUHJpY2VXaXRoQnV0dG9uID4gLmRldGFpbFByaWNlQmxvY2sgeyBtYXJnaW4tYm90dG9tOjBweDsgfSBAbWVkaWEobWF4LXdpZHRoOjMwN3B4KSB7IC5kZXRhaWxQcmljZUJsb2NrIHsgbWF4LXdpZHRoOjE3NXB4OyB9IH0gLmRldGFpbFByaWNlQmxvY2sgI3JlYmF0ZXsgbWFyZ2luOjA7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOndoaXRlOyBib3JkZXItcmFkaXVzOjAgMCA1cHggNXB4OyBwYWRkaW5nOjRweCAwIDAgMDsgfSAuZGV0YWlsUHJpY2VCbG9jayAjY2FyUHJpY2V7IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjBweDsgY29sb3I6IzExMTExMTsgaGVpZ2h0OjI1cHg7IH0gLnNjcmF0Y2hEZXRhaWxQcmljZXsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDozcHg7IGxlZnQ6LTFweDsgfSAucHJvbW9CVE46aG92ZXIsIC5wcm9tb0JUTiBhOmhvdmVyLCAuYnJvY2h1cmVCdG46aG92ZXIgeyBiYWNrZ3JvdW5kOiMwNTE0MWYhaW1wb3J0YW50OyBjb2xvcjojZmZmZmZmIWltcG9ydGFudDsgYm9yZGVyOm5vbmUhaW1wb3J0YW50OyB9IGRpdiNsZWFzZUNvbW1lbnRzIHsgcGFkZGluZy1ib3R0b206MTBweDsgfSAuZGV0YWlsUHJpY2VCbG9jayAjY2FyUHJpY2VEaXNjeyBiYWNrZ3JvdW5kOm5vbmU7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowcHg7IGNvbG9yOiNENDAwMDA7IGhlaWdodDoyMHB4OyB9IC5kZXRhaWxQcmljZUJsb2NrICNjYXJQcmljZVByb21veyBiYWNrZ3JvdW5kOm5vbmU7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXNQSVRpdGxlIHsgZm9udC1zaXplOjEuMjVyZW0gIWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCBsaSBsYWJlbHsgbWFyZ2luLWxlZnQ6MHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zeyBwYWRkaW5nOjBweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9ucyBsaXsgaGVpZ2h0OjIwcHghaW1wb3J0YW50OyB3aWR0aDoyNjBweCFpbXBvcnRhbnQ7IHBhZGRpbmc6MCFpbXBvcnRhbnQ7IG1hcmdpbjoycHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5zdGVwcyA+IGxpeyBwYWRkaW5nOjEwcHghaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjVweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzeyB0ZXh0LWluZGVudDowIWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXMgeyBwYWRkaW5nLWxlZnQ6NjVweCFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6OHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXNub3sgd2lkdGg6NjBweCFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6MHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCBpbnB1dHsgcGFkZGluZyA6MHB4IWltcG9ydGFudDsgfSAjbXljYXJvdXNlbGRpdnsgbWFyZ2luLXRvcDoxMHB4OyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2V7IG1pbi1oZWlnaHQ6dmFyKC0tbW9iLWNhcm91c2VsLW1pbi1oZWlnaHQpOyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gaW1neyBib3JkZXI6MDsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdlIC5sb2FkZXJfb3dseyB2aXNpYmlsaXR5OnZpc2libGU7IG9wYWNpdHk6MTsgei1pbmRleDoyOyBwb3NpdGlvbjphYnNvbHV0ZTsgaGVpZ2h0OjEwMCU7IHdpZHRoOjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdlIC5sb2FkZXJfb3dsIC5wbGFjZWhvbGRlcnsgaGVpZ2h0OjEwMCU7IHdpZHRoOmNhbGMoMTAwdncgLSAyMHB4KTsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOmNvbnRhaW47IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjsgbWFyZ2luOjAgMTBweDsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdlIC5sb2FkZXJfb3dsLmZhZGUtb3V0eyB2aXNpYmlsaXR5OmhpZGRlbjsgb3BhY2l0eTowOyAtd2Via2l0LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMXMsIG9wYWNpdHkgMXMgbGluZWFyOyAtbW96LXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMXMsIG9wYWNpdHkgMXMgbGluZWFyOyAtby10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDFzLCBvcGFjaXR5IDFzIGxpbmVhcjsgdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAxcywgb3BhY2l0eSAxcyBsaW5lYXI7IH0gaW5wdXRbdHlwZT1yYWRpb117IC13ZWJraXQtYm94LXNoYWRvdzpub25lIWltcG9ydGFudDsgLW1vei1ib3gtc2hhZG93OiBub25lIWltcG9ydGFudDsgYm94LXNoYWRvdzogbm9uZSFpbXBvcnRhbnQ7IH0gLmxhbmd1YWdlQmFyeyBtYXgtd2lkdGg6MjAwcHg7IH0gLnVpLXdpZGdldC1jb250ZW50LCAudWktd2lkZ2V0LWhlYWRlcnsgYmFja2dyb3VuZDojRjJGMkYyIWltcG9ydGFudDsgfSAudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24tY29udGVudCB7IHBhZGRpbmc6MTBweCFpbXBvcnRhbnQ7IH0gLnVpLXdpZGdldC1jb250ZW50IHsgYmFja2dyb3VuZDojZTZlNmU2IWltcG9ydGFudDsgfSAudWktdGFicyAudWktdGFicy1uYXYgbGl7IHBhZGRpbmc6MXB4IDNweCFpbXBvcnRhbnQ7IH0gI21haW5EaXZfTmV3TW9iaWxlTGFuZGluZ1BhZ2V7IGJhY2tncm91bmQ6I2ZmZiB1cmwoL2ltYWdlcy9maW5hbmNlL2hlYWRlci1iZy1tb2JpbGUuanBnKSB0b3AgY2VudGVyIG5vLXJlcGVhdCB9IC5jcmVkaXRfbV9oZWFkZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY3JlZGl0X21faGVhZGVyIGltZyB7IG1hcmdpbjowIGF1dG87IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IH0gLmNyZWRpdF9tX3RleHQtd3JhcHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyBoZWlnaHQ6MTAwJTsgd2lkdGg6MTAwJTsgbGVmdDo1MCU7IHRvcDowOyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTsgfSAuY3JlZGl0X21fdGltZSB7IGNvbG9yOiM4RjBEMjA7IGZvbnQtd2VpZ2h0OjUwMDsgfSAuY3JlZGl0X21fYm94IHsgY29sb3I6I2ZmZmZmZjsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luLWxlZnQ6NDAlOyBtYXJnaW4tdG9wOjklOyBsaW5lLWhlaWdodDoxNXZ3OyB9IC5jcmVkaXRfbV9ib3gyIHsgbWFyZ2luLWxlZnQ6NDclOyBtYXJnaW4tdG9wOjUlOyBmb250LXNpemU6NS41dnc7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDo0NSU7IH0gLmNyZWRpdF9tX2JveCAuY3JlZGl0X21fOTkgeyBmb250LXNpemU6MTl2dzsgfSAuY3JlZGl0X21fYm94IC5jcmVkaXRfbV9hcHByb3ZlZCB7IGZvbnQtc2l6ZTo4dnc7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmNyZWRpdF9tX2xvZ297IHBvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OnJpZ2h0O2hlaWdodDo4NXB4O21hcmdpbi1yaWdodDozMHB4O2NsZWFyOmJvdGg7IH0gLmNyZWRpdF9tX3Bob3RveyBoZWlnaHQ6MzYzcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZmluYW5jZS9tb2JpbGUtZmluYW5jaW5nLWltZy5wbmcpIDAgMCBuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZToxMDAlOyB9IC5jcmVkaXRfbV9hcHByb3ZhbF9mcnsgZmxvYXQ6cmlnaHQ7IGNsZWFyOnJpZ2h0OyB3aWR0aDoxNjNweDsgaGVpZ2h0OjEzN3B4OyBtYXJnaW46MjVweCAyMHB4IDEwcHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9maW5hbmNlL2xvZ28tYXBwcm92ZWQtbW9iaWxlX3JlZF9mci5wbmcpIDAgMCBuby1yZXBlYXQ7IH0gLmNyZWRpdF9tX2FwcHJvdmFsX2VueyBmbG9hdDpyaWdodDsgY2xlYXI6cmlnaHQ7IHdpZHRoOjE2M3B4OyBoZWlnaHQ6MTM3cHg7IG1hcmdpbjoyNXB4IDIwcHggMTBweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ZpbmFuY2UvbG9nby1hcHByb3ZlZC1tb2JpbGVfcmVkX2VuLnBuZykgMCAwIG5vLXJlcGVhdDsgfSAuY3JlZGl0X21fc3RhcnRpbmdhdF93cmFwcGVyeyBmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6bGlnaHRlciAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzAyNDA2ZjtjbGVhcjpib3RoO21hcmdpbi1ib3R0b206MzBweDsgfSAuY3JlZGl0X21fc3RhcnRpbmdhdCB7IG1hcmdpbi10b3A6MjYwcHg7Zm9udC1zaXplOjEuNDM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjI2cHg7ZGlzcGxheTpibG9jazsgfSAuY3JlZGl0X21fZGVsaXZlcnl7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzAyNDA2ZjsgfSAuY3JlZGl0X21fY2FsbHVzX3dyYXBwZXJ7IGJhY2tncm91bmQtY29sb3I6IzAyNjJhYzsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCgjMDI2MmFjLCMwMTM3NjApOyBiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KCMwMjYyYWMsIzAxMzc2MCk7IGJhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KCMwMjYyYWMsIzAxMzc2MCk7IHdpZHRoOjEwMCU7IG1hcmdpbjowIDAgMjBweCAwOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNyZWRpdF9tX2NhbGx1cywgLmNyZWRpdF9tX2NhbGx1cyBheyBkaXNwbGF5OmJsb2NrO2hlaWdodDo1NXB4O3dpZHRoOjEwMCU7Y29sb3I6I2ZmZjsgfSAuY3JlZGl0X2NhbGxfdXNfMSB7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC13ZWlnaHQ6bGlnaHRlciAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxMnB4OyBsaW5lLWhlaWdodDo1NXB4OyBtYXJnaW4tbGVmdDoxMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvdHRvbTo2cHg7IH0gLmNyZWRpdF9jYWxsX3VzXzIgeyBjb250ZW50OnVybCgvaW1hZ2VzL2ZpbmFuY2UvaWNvbi1waG9uZS13aGl0ZS5wbmcpO21hcmdpbjowIDEwcHg7IH0gLmNyZWRpdF9jYWxsX3VzXzMgeyBmb250LXNpemU6MS4zNzVyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjJweDsgbGluZS1oZWlnaHQ6NTVweDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmNyZWRpdF9tX2lubmVyIHsgcGFkZGluZzoxNXB4IDEwcHg7IH0gLmNyZWRpdF9tX3NlZW5fYWxseyBwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlOyBoZWlnaHQ6NDAwcHg7IG1hcmdpbjowIGF1dG87IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZmluYW5jZS9oZWFkZXItY29uZGl0aW9ucy1iZy1tX3JlZC5wbmcpIHRvcCBjZW50ZXIgbm8tcmVwZWF0OyB6LWluZGV4OjU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHVseyBwYWRkaW5nLXRvcDoyMHB4O2ZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHVsIGxpeyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IHBhZGRpbmc6NXB4OyBib3JkZXItdG9wOjFweCByZ2JhKDI1NSwyNTUsMjU1LDAuMikgc29saWQ7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHVsIGxpOmZpcnN0LWNoaWxkIHsgcGFkZGluZy10b3A6MDsgYm9yZGVyLXRvcDpub25lOyB9IC5jcmVkaXRfbV9zZWVuX2FsbCBweyBmb250LXNpemU6MS45MzhyZW0gOyBsaW5lLWhlaWdodDozMXB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBtYXJnaW46MjBweCAwIDAgMDsgfSAuY3JlZGl0X21fZm9ybV93cmFwcGVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJpZ2h0Om5vbmU7IGNvbG9yOiMwMjQwNmY7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHotaW5kZXg6NzA7IHBhZGRpbmc6MjBweCAxMHB4IDgwcHggNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjVweCBzb2xpZCAjMDI0MDZmOyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6I0ZGRjsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDoyMHB4OyB9IC5jcmVkaXRfbV9iZWZvcmVfZm9ybXsgZm9udC1zaXplOjIuMTI1cmVtIDsgbGluZS1oZWlnaHQ6MzRweDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuY3JlZGl0X21fYmVmb3JlX2Zvcm0gcHsgZm9udC1zaXplOjEuMTg4cmVtIDsgbGluZS1oZWlnaHQ6MTlweDsgbWFyZ2luLXRvcDoxNXB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbXsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTotMnB4OyBsZWZ0Oi0ycHg7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MTJweCAycHggOHB4IDJweDsgYmFja2dyb3VuZDojMDI0MDZmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MTZweDsgfSAuY3JlZGl0X21fYWZ0ZXJfZm9ybXsgYm94LXNpemluZzpib3JkZXItYm94OyBjb2xvcjojZmZmOyBwYWRkaW5nOjM1cHggMDsgYmFja2dyb3VuZDojZmZmIHVybCgvaW1hZ2VzL2ZpbmFuY2UvZmVhdC1iZ19yZWQucG5nKTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMTI1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjIwcHg7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jcmVkaXRfbV9hZnRlcl9mb3JtIHNwYW57IH0gLmNyZWRpdF9tX2Zvcm1fYm90dG9tIHB7IHBhZGRpbmc6MDsgbGluZS1oZWlnaHQ6MS4zOyB9IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgyeyBmb250LXNpemU6MS4zMTNyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjI1cHg7IG1hcmdpbjo1cHggMCAwIDA7IHBhZGRpbmc6MDsgfSBAbWVkaWEobWF4LXdpZHRoOjQ1MHB4KSB7IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgye3BhZGRpbmc6MCAyMCU7fSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHtwYWRkaW5nOjAgMjAlO30gfSBAbWVkaWEobWF4LXdpZHRoOjQwMHB4KSB7IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgye3BhZGRpbmc6MCAxNSU7fSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHtwYWRkaW5nOjAgMTUlO30gfSBAbWVkaWEobWF4LXdpZHRoOjM0MHB4KSB7IC5jcmVkaXRfbV9hZnRlcl9mb3JtIGgye3BhZGRpbmc6MCAxMCU7fSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHtwYWRkaW5nOjAgMTAlO30gfSAuY3JlZGl0X21fM3N0ZXBzeyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHBhZGRpbmctbGVmdDoxMHB4OyBtYXgtd2lkdGg6OTYwcHg7IH0gLmNyZWRpdF9tXzNzdGVwcyBoMnsgZm9udC1zaXplOjEuNTYzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjI1cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IG1hcmdpbi10b3A6MDsgcGFkZGluZy10b3A6MDsgYm9yZGVyLXRvcDpub25lOyBjb2xvcjojMDI0MDZmOyB9IC5jcmVkaXRfbV8zc3RlcHMgdWx7IGxpc3Qtc3R5bGU6bm9uZTsgfSAuY3JlZGl0X21fM3N0ZXBzIGxpeyBwYWRkaW5nOjIwcHggMjBweCAyMHB4IDExM3B4OyBib3JkZXItcmFkaXVzOjEwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IG1hcmdpbi10b3A6MTBweDsgfSAuY3JlZGl0X21fM3N0ZXBzX3dyYXBwZXJ7IHBhZGRpbmc6NDBweCAwOyBiYWNrZ3JvdW5kOiNlMWUxZTEgdXJsKC9pbWFnZXMvZmluYW5jZS9zdGVwcy1iZy5qcGcpIHRvcCBjZW50ZXIgbm8tcmVwZWF0OyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgbGkgaDN7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyMnB4OyBjb2xvcjojMDI0MDZmOyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgbGkgcHsgbGluZS1oZWlnaHQ6MjBweDsgbWFyZ2luOjAgMCAxNXB4IDA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjEuMTI1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjE4cHg7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCBsaTphZnRlcnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBib3R0b206MDsgbGVmdDoyMHB4OyBtYXJnaW46YXV0byAwOyBjb250ZW50OicgJzsgZGlzcGxheTpibG9jazsgd2lkdGg6NzNweDsgaGVpZ2h0OjY2cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL2ZpbmFuY2Uvc3RlcHMtbW9iaWxlX3JlZC5wbmcnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgPiBsaTpmaXJzdC1jaGlsZDphZnRlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTE5MXB4IDA7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCA+IGxpOm50aC1jaGlsZCgyKTphZnRlcnsgYmFja2dyb3VuZC1wb3NpdGlvbjowIDFweDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsID4gbGk6bnRoLWNoaWxkKDMpOmFmdGVyeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi05MHB4IDlweDsgfSAuY3JlZGl0X21fZm9vdGVyX3dyYXBwZXJ7IHBhZGRpbmc6MTBweCAwOyB9IC5jcmVkaXRfbV9mb290ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246cmVsYXRpdmU7IHRleHQtYWxpZ246bGVmdDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZy1yaWdodDoxMHB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgbWF4LXdpZHRoOjk2MHB4OyB9IC5jcmVkaXRfbV9mb290ZXIgaDIgeyBtYXJnaW46dmFyKC0tczkpIDAgdmFyKC0tczMpIDA7IGxpbmUtaGVpZ2h0OjEuNzVyZW07IH0gLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT10ZXh0XSwgLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT1kYXRlXSwgLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT1udW1iZXJdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPWVtYWlsXSwgLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT10ZWxdLCAuY3JlZGl0X21fZm9ybSBzZWxlY3R7IGhlaWdodDo1MHB4OyBmb250LXNpemU6MS4zNzVyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjIycHg7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MHB4OyBib3JkZXItcmFkaXVzOjEwcHg7IG1hcmdpbjowOyBwYWRkaW5nOjNweCA1cHg7IGJhY2tncm91bmQtY29sb3I6I0RBREFEQTsgYm9yZGVyOjFweCAjQzJCM0IzIHNvbGlkOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmNyZWRpdF9tX2Zvcm0gdGFibGV7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MCAxMHB4OyB9IC5jcmVkaXRfbV9mb3JtIC5jcmVkaXRfcmVxdWVzdF9zdWJtaXR7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IHBhZGRpbmc6NXB4OyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjYwcHg7IG1hcmdpbjozMHB4IDAgMzBweCAwOyBib3gtc2hhZG93Om5vbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOm5vbmU7IGJhY2tncm91bmQtY29sb3I6I2NmMTcxZjsgY29sb3I6I2ZmZjsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyB9IC5jcmVkaXRfbV9mb3JtIC5sYWJlbHsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bGlnaHRlcjsgIWltcG9ydGFudDsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5jcmVkaXRfbV9yZXF1aXJlZHsgY29sb3I6I2MwMDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXJ7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6NDkwcHg7IHBhZGRpbmc6MjZweCAxMHB4IDEwcHggMTBweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyB3aWR0aDoyODBweDsgaGVpZ2h0OjQ5MHB4OyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciAucG9wdXBfYmd7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL3BvcHVwcy9tL2ZyL2Jlc3RQcmljZU5ld1ZkcC5wbmcnKTsgfSAucG9wdXBfYmd7IGJhY2tncm91bmQtY29sb3I6IzQ0NDQ0NDsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IC5wb3B1cEZvcm0gLmFzdGVyaXNreyBjb2xvcjojZDAwOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZTppbmhlcml0OyBtYXJnaW46MDsgfSAucG9wdXBGb3JteyB6LWluZGV4OjUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjI3N3B4OyBoZWlnaHQ6MjQ5cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgd2lkdGg6MjcwcHg7IHBhZGRpbmc6M3B4OyB9IC5wb3B1cEZvcm0gdGFibGV7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucG9wdXBGb3JtVGl0bGV7IGhlaWdodDoyNXB4OyBtYXJnaW46OHB4OyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnBvcHVwRm9ybUlucHV0cyB0ZCB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1ib3R0b206M3B4OyBsaW5lLWhlaWdodDoxM3B4OyBtaW4td2lkdGg6NjBweDsgfSAucG9wdXBGb3JtIGlucHV0eyB3aWR0aDoxODBweDsgfSAjYXNQdXJjaGFzZUludGVudHsgd2lkdGg6ODUlOyBtYXgtd2lkdGg6NjAwcHg7IHBhZGRpbmc6MTBweCAxMHB4OyB6LWluZGV4OjEwMDAwMjE7IH0gLnN0cmlrZXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnN0cmlrZTo6YWZ0ZXJ7IGNvbnRlbnQ6Jyc7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICNDRTAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDoyNSU7IHdpZHRoOjEwMCU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyIHsgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OnNjcm9sbDsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyLTE2eDkgeyBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyLTR4MyB7IHBhZGRpbmctYm90dG9tOjc1JTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItMTAwIHsgcGFkZGluZy1ib3R0b206MTAwJTsgd2lkdGg6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItMTAgeyBwYWRkaW5nLWJvdHRvbToxMCU7IHdpZHRoOjEwMCU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyIGlmcmFtZSB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXIgW2NsYXNzKj0iY3JlZHNpaSJdIGlmcmFtZSB7IHBvc2l0aW9uOmluaGVyaXQ7IH0gLnJlc3BvbnNpdmUtZWRpdG9yIGlmcmFtZXsgcG9zaXRpb246aW5pdGlhbDsgfSAuc3VibWVudUl0ZW1Db250YWluZXIgLmxvY2F0aW9uLW5hbWVzIGEsIC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgLnRpdGxlLCAuc3VibWVudUl0ZW1Db250YWluZXIgLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gbGkgeyBwYWRkaW5nLWxlZnQ6OXB4OyB9IC5zdWJtZW51SXRlbUNvbnRhaW5lciAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciB7IGRpc3BsYXk6bm9uZTsgfSAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciB7IGRpc3BsYXk6YmxvY2s7IH0gLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIHsgZGlzcGxheTpub25lOyB9IC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgPiBhIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IGxpLmxvY2F0aW9uLW5hbWVzIHsgdGV4dC1hbGlnbjpsZWZ0OyB9IGxpLmxvY2F0aW9uLW5hbWVzLm1vYmlsZSB7IG1hcmdpbi1ib3R0b206MDsgfSBsaS5sb2NhdGlvbi1uYW1lcy5tb2JpbGUgPiBhIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXItcmFkaXVzOjA7IGJvcmRlcjoxcHggc29saWQgI0JCQjsgYm9yZGVyLWJvdHRvbTpub25lOyB9IC5sb2NhdGlvbi1kZXRhaWxzIHsgZm9udC1zaXplOjFyZW0gOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28gLnRpdGxlIHsgbWFyZ2luLXRvcDo4cHg7IH0gLmxvY2F0aW9uLWRldGFpbHMtbG9nbyBpbWcgeyBtYXJnaW4tYm90dG9tOjhweDsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvIHVsIGxpOm5vdCguZGV0YWlscy1pbmZvLWxpbmspIHsgYm9yZGVyLWxlZnQ6bm9uZTsgYm9yZGVyLXJpZ2h0Om5vbmU7IGJvcmRlci1ib3R0b206bm9uZTsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvIHVsIGxpOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyOm5vbmU7IH0gI2RlZmF1bHRUb3BCYW5uZXJUZXh0IHsgfSBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjMyMHB4KSB7ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGV7IGZvbnQtc2l6ZToxLjM3NXJlbSAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjEuMTg4cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGV7IGZvbnQtc2l6ZToxLjM3NXJlbSAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHR7IGZvbnQtc2l6ZToxLjE4OHJlbSAhaW1wb3J0YW50OyB9IH0gQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDozMjBweCkgeyAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxlLCN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxlIHsgZm9udC1zaXplOjEuMTg4cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0LCN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHQgeyBmb250LXNpemU6MS4wNjNyZW0gIWltcG9ydGFudDsgfSB9ICN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lcldyYXB7IGhlaWdodDoxNjVweCAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjE2NXB4ICFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJ7IG1pbi1oZWlnaHQ6aW5pdGlhbDsgaGVpZ2h0OmF1dG87IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFwIGRpdi5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjEwcHggMCAhaW1wb3J0YW50OyB9ICNkZWZhdWx0VG9wQmFubmVyV3JhcCB7IHRvcDowIWltcG9ydGFudDsgcGFkZGluZzoxNXB4IDRweCAhaW1wb3J0YW50OyB9ICNkZWZhdWx0VG9wQmFubmVyVGl0bGUgeyBsaW5lLWhlaWdodDpub3JtYWwhaW1wb3J0YW50OyB9ICNkZWZhdWx0VG9wQmFubmVyVGV4dCB7IH0gI2RlZmF1bHRUb3BCYW5uZXJCdG4geyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IHBhZGRpbmc6NHB4IDIwcHghaW1wb3J0YW50OyB9IC5wcm9tb0JUTiBheyBib3JkZXI6bm9uZSFpbXBvcnRhbnQ7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLnByb21vQlROLmlzLXN0aWNreXsgcG9zaXRpb246c3RpY2t5OyB0b3A6M3JlbTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5zcGVjaWFsLXNjaGVkdWxlIHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjFlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo3cHggOHB4IDdweCAwcHg7IGJhY2tncm91bmQ6cmdiKDcyLCA3MiwgNzMpOyBtYXJnaW46MTJweCAxMHB4IDNweCAxMHB4OyB9ICNkZWZhdWx0VG9wQmFubmVyIHsgaGVpZ2h0OmF1dG87IH0gSU5QVVRbdHlwZT0idGV4dCJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0iZGF0ZSJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0iZW1haWwiXS52YWxpZGl0eS1lcnJvbmVvdXMsIElOUFVUW3R5cGU9InRlbCJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0icGFzc3dvcmQiXS52YWxpZGl0eS1lcnJvbmVvdXMgeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSBTRUxFQ1QudmFsaWRpdHktZXJyb25lb3VzeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSBURVhUQVJFQS52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRpblNlbGVjdFBvcHVweyBjb2xvcjojM2MzODM2OyBmb250LXNpemU6MXJlbTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSA1MCU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgbWFyZ2luOjVweCAwIDA7IHBhZGRpbmc6MC4zcmVtIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6cGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyBvcGFjaXR5OjE7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAucmV2ZWFsLW1vZGFsIDo6cGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyBvcGFjaXR5OjE7IH0gLnJldmVhbC1tb2RhbCA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAucmV2ZWFsLW1vZGFsIDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjYXNQdXJjaGFzZUludGVudCAqeyBib3gtc2l6aW5nOmNvbnRlbnQtYm94IWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX3RpdGxleyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6IzA1MTQxZjsgfSAjdHJhZGVJbkJhclBvcHVwU2VsZWN0ZWRWZWhpY2xleyBtYXJnaW4tYm90dG9tOjEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBjb2xvcjojMDUxNDFmOyB9IC50cmFkaW5TZWxlY3RXeyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxMHB4OyB9IC50cmFkaW5TZWxlY3RBeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudHJhZGluU2VsZWN0QTphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyBwb2ludGVyLWV2ZW50czpub25lOyB9IC50cmFkaW5OaXZ7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MC40cmVtOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGJvcmRlci1yYWRpdXM6NXB4OyB9IC50cmFkaW5TZWxlY3R7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgIyNUUkFERUlOSlNFTEVDVEJPUkRFUkNPTE9SIyM7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjEwcHggMTBweDsgZm9udC1zaXplOjFyZW0gOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSA1MCU7IHdpZHRoOjIwMHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgfSAudHJhZGluU2VsZWN0OmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxNHB4OyB0b3A6MTdweDsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24geyBwb3NpdGlvbjpmaXhlZDsgYm90dG9tOjEwcHg7IGxlZnQ6MTBweDsgei1pbmRleDo0OyB3aWR0aDoxNDBweCAhaW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4OyB0ZXh0LWFsaWduOmxlZnQ7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci13aWR0aDoxcHggM3B4IDRweCAxcHg7IGJvcmRlci1jb2xvcjojMzMzMzMzOyBwYWRkaW5nLXRvcDoxMHB4OyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgLnRyYWRlSW5CYXJNb2JpbGVCdXR0b257IGJvdHRvbTo2cmVtOyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIGl7IGRpc3BsYXk6aW5saW5lLWZsZXg7IGJvcmRlci1yYWRpdXM6MTAwJTsgd2lkdGg6MmVtOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGJvcmRlcjoycHggc29saWQgI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBoZWlnaHQ6MS41ZW07IGNvbG9yOiMwMDA7IGZsb2F0OmxlZnQ7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24ud2l0aFRvYXN0ZXIgeyBib3R0b206ODBweDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiBhIHsgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsgfSAudHJhZGVJbkJhclN0ZXAyeyBtYXJnaW46NjBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAudHJhZGVJbkJhclN0ZXAyIC50cmFkZUluQmFyU3RlcDJRdWVzdGlvbnsgbWFyZ2luOjIwcHggMDsgfSAudHJhZGVJbkJhclN0ZXAzIC50cmFkZUluQmFyU3RlcDNRdWVzdGlvbnsgbWFyZ2luOjIwcHggMDsgfSAudHJhZGVJbkJhclN0ZXAyIC5yYWRpb19kaXYgbGFiZWx7IHdpZHRoOjUwcHg7IHBhZGRpbmc6MDsgbWFyZ2luOjVweDsgZGlzcGxheTppbmxpbmUtYmxvY2sgfSAudHJhZGVJbkJhclN0ZXAyIC5yYWRpb19kaXYgaW5wdXR7IHdpZHRoOmF1dG8gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjo1cHggIWltcG9ydGFudDsgYm9yZGVyOm5vbmUgIWltcG9ydGFudDsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9uc3sgbWFyZ2luLXRvcDo1cHg7IH0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMgc3BhbnsgZm9udC1zaXplOjAuOTM4cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyBtYXJnaW46MCAhaW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0gLnVpLW11bHRpc2VsZWN0LW1lbnUudHJhZGVJbkJhck11bHRpc2VsZWN0eyB6LWluZGV4OjEwMDAwMjA7IG1heC1oZWlnaHQ6MTEwcHg7IG92ZXJmbG93OnNjcm9sbDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IH0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyRGVhbGVyU3RlcE1ha2VNb2RlbFllYXJ7IGZvbnQtd2VpZ2h0OjcwMDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgc3BhbnsgbWFyZ2luOjAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAhaW1wb3J0YW50OyBjb2xvcjojMDAwMDAwIWltcG9ydGFudDsgcGFkZGluZzowIWltcG9ydGFudDsgZm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdHsgbWluLWhlaWdodDo0MnB4OyBtYXJnaW46MTVweCAwOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgdWx7IGZsb2F0OmxlZnQ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBwYWRkaW5nOjA7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaXsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1yaWdodDozcHg7IGxpbmUtaGVpZ2h0OjQwcHg7IHBhZGRpbmc6MHB4IDE1cHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7IGNvbG9yOiMwNTE0MWY7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaTpob3ZlcnsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBzcGFueyBtYXJnaW4tbGVmdDoxMHB4OyBib3JkZXItcmFkaXVzOjIwcHg7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgY29sb3I6I2YwZjBmMDsgcGFkZGluZzoycHggMTBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6NzAwOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGk6aG92ZXIgc3BhbnsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGkubW9kZWxub3llYXJCdXR0b25TZWxlY3RlZHsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyBjb2xvcjpyZ2IoNSwyMCwzMSk7IGJvcmRlcjoxcHggc29saWQgcmdiKDUsMjAsMzEpOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGkubW9kZWxub3llYXJCdXR0b25TZWxlY3RlZCBzcGFueyBiYWNrZ3JvdW5kLWNvbG9yOnJnYig1LDIwLDMxKTsgY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgfSAubXVsdGlmb3JtX2Zvb3RlciAubXVsdGlmb3JtX3N0ZXAyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAubXVsdGlmb3JtX2JvZHl7IHBhZGRpbmc6MzBweCAxMHB4OyB9IC5tdWx0aWZvcm1fdGV4dHsgcGFkZGluZy1ib3R0b206MTVweCFpbXBvcnRhbnQ7IH0gLm11bHRpZm9ybV9idG5fMnsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnJlYmF0ZVRhZ3sgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzo0cHggN3B4IDRweCA3cHg7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDpmaXQtY29udGVudDsgbGluZS1oZWlnaHQ6MTVweDsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQ6IzA1MTQxZiFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzpub25lIWltcG9ydGFudDsgfSAucmViYXRlVGFnIHNwYW4ucmViYXRlVGV4dHsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVBbW91bnR7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjFyZW0gOyB9IC5ncmF5Ym94IC5jYXItcHJpY2UtZG93bi1hcnJvd3sgbWFyZ2luLXRvcDotMjVweDsgbWFyZ2luLWJvdHRvbTowcHg7IG1hcmdpbi1sZWZ0OjIwcHg7IGZsb2F0OmxlZnQ7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjU7IH0gLmdyYXlib3ggLmNhci1wcmljZS1kb3duLWFycm93LnVzZWR7IG1hcmdpbi1sZWZ0OjUwcHg7IH0gLnByb21vSW5mb1dyYXBwZXJ7IHdpZHRoOjEwMCU7IGhlaWdodDo2MHB4OyBib3R0b206MDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZC1jb2xvcjojZWZlZmVmOyBkaXNwbGF5OmlubGluZS10YWJsZTsgbWFyZ2luLXRvcDotMjBweDsgfSAuZGl2Q2FyUGF5bWVudENvbnRhaW5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IGNvbG9yOmJsYWNrOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lciAuY29udGVudC13cmFwcGVyIHsgbWFyZ2luOjAgMTVweDsgfSAuY2FyZmF4IHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNhcmZheCBpbWcgeyB3aWR0aDoyMDBweDsgcGFkZGluZy10b3A6MTVweDsgfSAuY2FyZmF4IC5jYXJwcm9vZi1iYWRnZSA+IERJVnsgbWF4LXdpZHRoOm5vbmUgIWltcG9ydGFudDsgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY2FyZmF4IC5jYXJwcm9vZi1iYWRnZSA+IERJViBJTUcgeyBtYXgtd2lkdGg6bm9uZTsgaGVpZ2h0OjQwcHg7IHdpZHRoOjEwMCU7IG1hcmdpbjoxMHB4IDAgMjBweDsgfSAuZGl2U2VhcmNoTXNnIHsgZm9udC1zaXplOjAuOXJlbTsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7IGJvcmRlci1yYWRpdXM6NXB4OyB9IC5idXR0b25fMSwgLmJ1dHRvbl8yLCAuYnV0dG9uXzMgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLmJ1dHRvbl8xIGEsIC5idXR0b25fMiBhLCAuYnV0dG9uXzMgYSB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjI0OXB4OyBoZWlnaHQ6MzhweDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzhweDsgfSAuYnV0dG9uXzMuanMtQ1RBLW51bWJlciBhID4gKjpmaXJzdC1jaGlsZHsgbWFyZ2luLXJpZ2h0OjAuNXJlbTsgfSAuYnV0dG9uXzMgYXsgYmFja2dyb3VuZDojMDAwOyBjb2xvcjojRkZGOyB9IC5idXR0b25fMyBhOmhvdmVyLCAuYnV0dG9uXzMgYTpmb2N1c3sgYmFja2dyb3VuZDojNjY2NjY2OyB9ICNwcm9tb0Rlc2MgLmNrZWRpdG9yV3JhcHBlciBpZnJhbWUgeyBtYXgtd2lkdGg6MTAwJTsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHR7IGZvbnQtc2l6ZToxLjJyZW07IGxpbmUtaGVpZ2h0OjEuMnJlbTsgY29sb3I6IzA1MTQxZjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjAgMCAxNXB4IDA7IGRpc3BsYXk6aW5saW5lLWZsZXg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0eyBwYWRkaW5nOjEwcHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luOjA7IGRpc3BsYXk6aW5saW5lLWZsZXg7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24sIEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24geyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjE2cHg7IGhlaWdodDoyMHB4OyBwYWRkaW5nLXRvcDo1cHg7IHBhZGRpbmctbGVmdDo4cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgbWFyZ2luLXJpZ2h0OjVweDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMSwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMXsgbWFyZ2luLXRvcDowcHg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxeyBtYXJnaW4tdG9wOjBweDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYsIEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMSl7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuOXJlbTsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgzKXsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6I2JiYjsgcGFkZGluZy10b3A6NXB4OyB9IC5jYXJmYXgubW9iaWxlIGRpdnsgaGVpZ2h0OmF1dG8haW1wb3J0YW50OyB9IC5jYXJmYXgubW9iaWxlIGRpdiBheyBkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgfSAuY3JlZHNpaU1vYmlsZXsgZGlzcGxheTpibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmNyZWRzaWlNb2JpbGUgLmNyZWRzaWktd2lkZ2V0LWNvbnRhaW5lcnsgbWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IC5iYW5uZXItZm9ybSAuTWFpbkJveExheWVyIHsgd2lkdGg6aW5pdGlhbDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXB7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmZsZXg7IGZsZXgtZmxvdzpyb3cgd3JhcDsgYWxpZ24taXRlbXM6Y2VudGVyOyBncmlkLWdhcDozMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IG1hcmdpbjozMHB4IDE1cHg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwID4gZGl2eyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxleDoxIDEgNDUlOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCA+IGRpdiA+IGltZyB7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBwYWRkaW5nOjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCAuY2VydC10aXRsZSB7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjFlbTsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXAgLmNlcnQtc3VidGl0bGUgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tYm90dG9tOjEwcHg7IGNvbG9yOiM3Nzc7IGZvbnQtc2l6ZTowLjk1ZW07IG1hcmdpbi10b3A6NXB4OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCAuY2VydC1oaWdobGlnaHRlZC12YWx1ZSB7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBjb2xvcjojRkZGOyBwYWRkaW5nOjExcHggMjBweCA5cHggMjBweDsgYm9yZGVyLXJhZGl1czozcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5jb21wYXJlVGFibGVJbWcgeyBoZWlnaHQ6OTBweDsgbWFyZ2luOjAgYXV0bzsgZGlzcGxheTpibG9jazsgfSAuZGVhbGVyLWluc2lkZS1jYWxsIGJ1dHRvbnsgZGlzcGxheTpub25lIWltcG9ydGFudDsgfSAuYnJvY2h1cmVQb3N0ZXIgeyB3aWR0aDoxNzVweDsgbWFyZ2luOjAgYXV0bzsgYm9yZGVyOjFweCBzb2xpZCAjYWFhOyBib3JkZXItcmFkaXVzOjRweDsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5icm9jaHVyZVBvc3RlciBpbWd7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyB9IC5waHlzaWNhbEFkZHJlc3NCb3h7IGJhY2tncm91bmQtY29sb3I6I0Y3RjZGODsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnV2ZHAtbG9jYXRlZC1hdC1tc2d7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzcwNzA3MDsgZm9udC13ZWlnaHQ6bGlnaHRlcjsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo1cHg7IH0gLnV2ZHAtbG9jYXRlZC1kZWFsZXItbmFtZXsgZm9udC1zaXplOjEuMzEzcmVtIDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnV2ZHAtbG9jYXRlZC1hZGRyZXNzeyBmb250LXNpemU6MC43NXJlbSA7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjo1cHggMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC51dmRwLWxvY2F0ZWQtd2Vic2l0ZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6NXB4OyBmb250LXNpemU6dmFyKC0tZnMtMSk7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmRyb3Bkb3duLWNvbnRlbnR7IGRpc3BsYXk6bm9uZTsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTsgd2lkdGg6MTAwJTsgYm94LXNoYWRvdzowcHggOHB4IDE2cHggMHB4IHJnYmEoMCwwLDAsMC4yKTsgei1pbmRleDoxOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbjoxMHB4IC0xMHB4OyB9IC5kcm9wZG93bi1jb250ZW50IGF7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgYm9yZGVyOm5vbmU7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBwYWRkaW5nOjhweDsgdGV4dC1hbGlnbjpsZWZ0OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgbGluZS1oZWlnaHQ6MS41cmVtOyBwYWRkaW5nLWxlZnQ6MzBweDsgfSAudGVzdGRyaXZlSWNvbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgbWFyZ2luLXJpZ2h0OjIwcHg7IH0gLnByaWNlRGl2eyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IHBhZGRpbmc6MCAyMHB4IDAgMTBweDsgZmxleC1mbG93OndyYXA7IH0gLnByaWNlTXNnRGl2eyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo1MCU7IHRleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50OyBjb2xvcjojNmQ2ZDZkICFpbXBvcnRhbnQ7IH0gLnByaWNlRGl2UHJpY2UubXVsdGlmZWVzeyBmb250LXNpemU6MXJlbTsgY29sb3I6IzcwNzA3MDsgfSAucHJpY2VEaXZQcmljZXsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6YmxhY2s7IH0gLmhhc0F2ZyAucHJpY2VEaXZQcmljZXsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAucHJpY2VEaXNjbGFpbWVyRGl2eyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmVuZDsgd2lkdGg6MTAwJTsgfSAjdmRwX3ByaWNlX2Jsb2NrIC5wcmljZURpc2NsYWltZXJEaXZ7IHBhZGRpbmc6MCAyMHB4IDAgMTBweDsgd2lkdGg6dW5zZXQ7IH0gLnByaWNlRGlzY2xhaW1lclNwYW57IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2s7IHRleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50OyBjb2xvcjojNmQ2ZDZkICFpbXBvcnRhbnQ7IH0gLnByaWNlQmFyeyBib3JkZXItdG9wOjFweCBzb2xpZCAjYjhiOGI4OyBtYXJnaW46MCAxMHB4IDAgNTUlOyB9IC5jYXJJbmZvc0RpdnsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6NXB4IDElIDBweCAxJTsgfSAuY2FySW5mb1ByaWNlRGl2eyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC43NXJlbSA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBvdmVyZmxvdzpoaWRkZW47IH0gLmNhckluZm9QcmljZURpdiBpeyBtYXJnaW4tcmlnaHQ6MnB4IH0gLmNhckluZm9LTXsgdGV4dC1hbGlnbjpsZWZ0OyB3aWR0aDoyOCU7IH0gLmNhckluZm9NaWRkbGV7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoyNyU7IH0gLmNhckluZm9Db2xvcnsgdGV4dC1hbGlnbjpyaWdodDsgd2lkdGg6NDAlOyB9ICN2ZHB2aWRlb3sgbWF4LXdpZHRoOjEwMHZ3OyB9ICN2ZHB2aWRlbyA+ICp7IG1heC13aWR0aDoxMDAlOyB9IC5iZGN0eyBwYWRkaW5nOjAgMTBweDsgbWFyZ2luOjIwcHggMDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBmb250LXNpemU6MC44NXJlbTsgY29sb3I6IzY2NjsgfSAuYmRjdCBIM3sgcGFkZGluZzowOyBtYXJnaW46MCAwIDVweCAwOyBmb250LXNpemU6MXJlbTsgfSAuYmRjdCA+IGRpdnsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IGJvcmRlci1yYWRpdXM6N3B4OyB9IC5wcm9tby1idG4geyBwYWRkaW5nOjE1cHggMjBweDsgbWFyZ2luOmF1dG87IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlcjoxcHggc29saWQ7IHRleHQtdHJhbnNmb3JtOnZhcigtLWNlcnQtdHh0LXRyYW5zZm9ybSwgdmFyKC0tdHh0LXVwcGVyKSk7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItY29sb3I6IzA1MTQxZjsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBib3JkZXItcmFkaXVzOjI1cHg7IGZvbnQtc2l6ZTowLjlyZW07IH0gLi10ZXh0LXVwcGVyY2FzZSwgLi11cHBlcmNhc2UsIC50ZXh0LXVwcGVyY2FzZSB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gI2Rhcmt0b29sdGlwLWNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29ueyB3aWR0aDoyMDBweDsgfQovKiogL2Nzcy9uZXdjYXJzLmNzcyAqKi8KLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXJ7IG1hcmdpbi1ib3R0b206NDBweDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlcjpsYXN0LWNoaWxkeyBtYXJnaW4tYm90dG9tOjA7IH0gSDEuZGVmYXVsdC5pc1NpbmdsZVRpdGxlLmlzQm90dG9tQm9yZGVyZWQsIC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIEgyeyBib3JkZXI6MDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2Fyc0JveFdyYXBwZXIgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZmxvdzpyb3cgd3JhcDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3h7IHBvc2l0aW9uOnJlbGF0aXZlOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlci1yYWRpdXM6N3B4OyBtYXJnaW46MCAwIDIwcHggMDsgcGFkZGluZzoxMHB4OyBib3JkZXI6MXB4ICNhYWEgc29saWQ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgd2lkdGg6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveC5kaXZNYWtlTG9nb09ubHl7IGhlaWdodDoxNTZweDsgd2lkdGg6YXV0bzsgbWFyZ2luLXRvcDoyMHB4OyBwYWRkaW5nOjIwcHg7IGJvcmRlci1jb2xvcjojZWVlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3guZGl2TWFrZUxvZ29Pbmx5IElNRyB7IGhlaWdodDoxMDAlOyB3aWR0aDphdXRvOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveDphY3RpdmUgeyBib3JkZXItY29sb3I6IzY2NjsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94eyBtYXJnaW46MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGZsb2F0OmxlZnQ7IG9wYWNpdHk6MTsgb3ZlcmZsb3c6aGlkZGVuOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lcnsgY2xlYXI6Ym90aDsgd2lkdGg6NzUlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIHNwYW4uc3BhbkNhck1ha2V7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEuMHJlbTsgbGluZS1oZWlnaHQ6MS4ycmVtOyB3aWR0aDphdXRvOyBoZWlnaHQ6YXV0bzsgY29sb3I6IzA1MTQxZjsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciBzcGFuLnNwYW5Nb2RlbE5hbWV7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjEuNHJlbTsgZm9udC1zaXplOjEuNHJlbTsgd2lkdGg6YXV0bzsgaGVpZ2h0OmF1dG87IGNvbG9yOiMwNTE0MWY7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgLmRpdk5ld0NhclN0YXJ0UHJpY2UsIC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIC5kaXZOZXdDYXJQcm9tb1ByaWNleyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxcmVtOyB3aWR0aDphdXRvOyBoZWlnaHQ6YXV0bzsgbGluZS1oZWlnaHQ6bm9ybWFsOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhckltYWdlQ29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206LTEwcHg7IG1pbi1oZWlnaHQ6MjUwcHg7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FySW1hZ2VDb250YWluZXIgQXsgZmxvYXQ6bGVmdDsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJJbWFnZUNvbnRhaW5lciBJTUd7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyB9IGRpdi5kaXZDYXJGb290ZXJDb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBib3R0b206MHB4OyBsZWZ0OjA7IHJpZ2h0OjA7IHdpZHRoOjEwMCU7IH0gZGl2LmNhclBheW1lbnRXcmFwcGVyeyBoZWlnaHQ6NnJlbTsgfSAucmViYXRlVGFneyBwYWRkaW5nOjVweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MTBweDsgcmlnaHQ6MTBweDsgYmFja2dyb3VuZDojMDUxNDFmIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiFpbXBvcnRhbnQ7IHRleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjVweDsgfSAucmViYXRlVGFnIHNwYW4ucmViYXRlVGV4dHsgZm9udC1zaXplOjAuOHJlbTsgbGluZS1oZWlnaHQ6MXJlbTsgfSAucmViYXRlVGFnIHNwYW4ucmViYXRlQW1vdW50eyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxcmVtOyBsaW5lLWhlaWdodDoxLjJyZW07IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZjM7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6MCAwIDdweCA3cHg7IHBhZGRpbmc6MTBweCA1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIC5wYXltZW50TGluZTJ7IGZvbnQtc2l6ZToxLjNyZW07IGNvbG9yOmJsYWNrOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lMiBzcGFueyBjb2xvcjojMDUxNDFmOyBmb250LXdlaWdodDpib2xkOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lM3sgZm9udC1zaXplOjAuOXJlbTsgbGluZS1oZWlnaHQ6MXJlbTsgY29sb3I6Z3JleTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIC5wYXltZW50TGluZTF7IGZvbnQtc2l6ZTowLjlyZW07IGxpbmUtaGVpZ2h0OjFyZW07IGNvbG9yOmdyZXk7IH0gZGl2LmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIGRpdi5kaXZDYXRlZ29yeUJveFdyYXBwZXIgZGl2LmRpdkNhclNpbmdsZU91dGVyQm94IGRpdi5kaXZDYXJTaW5nbGVJbm5lckJveCBkaXYuZGl2Q2FyQ29udGFjdENUQUNvbnRhaW5lcnsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyB9IGRpdi5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciBkaXYuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIGRpdi5kaXZDYXJTaW5nbGVPdXRlckJveCBkaXYuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggZGl2LmRpdkNhclBheW1lbnRDb250YWluZXJXaXRoQ1RBeyB9IC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lclRvb2x0aXB7IGRpc3BsYXk6aW5saW5lLXRhYmxlOyBwYWRkaW5nOjAgMTBweDsgY3Vyc29yOnBvaW50ZXI7IH0gLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclBheW1lbnRDYWxjdWxhdG9yIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTAlOyB9IC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5wYXltZW50SW5mb0J1YmJsZSB7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxMCU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBmb250LXNpemU6MS41NjNyZW0gOyB0b3A6MzAlOyBjb2xvcjojMDAwOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHR7IGZvbnQtc2l6ZToxLjdyZW07IGxpbmUtaGVpZ2h0OjEuN3JlbTsgY29sb3I6IzA1MTQxZjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjAgMCAxMHB4IDA7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0IEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uIHsgYm9yZGVyLXJhZGl1czozMnB4OyB3aWR0aDozMnB4OyBoZWlnaHQ6MzJweDsgcGFkZGluZy10b3A6MDsgcGFkZGluZy1sZWZ0OjEwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IG1hcmdpbi1yaWdodDo1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6MzBweDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDF7IG1hcmdpbi10b3A6MHB4OyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDowcHg7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MS4xcmVtOyBsaW5lLWhlaWdodDoxLjJyZW07IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDMpeyBmb250LXNpemU6MC44cmVtOyBjb2xvcjojYmJiOyBwYWRkaW5nLXRvcDo1cHg7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdHsgZm9udC1zaXplOjEuNHJlbTsgbGluZS1oZWlnaHQ6MS40cmVtOyBjb2xvcjojMDUxNDFmOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MjBweCAwOyBtYXJnaW46MDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0IEkuaWNvbiB7IGJvcmRlci1yYWRpdXM6MjhweDsgd2lkdGg6MjhweDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmctdG9wOjA7IHBhZGRpbmctbGVmdDo5cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgbGluZS1oZWlnaHQ6MjZweDsgbWFyZ2luLXJpZ2h0OjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMnsgbWFyZ2luLXRvcDowcHg7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgyeyBtYXJnaW4tdG9wOjBweDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0ID4gRElWeyBkaXNwbGF5OnRhYmxlLXJvdzsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMSl7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZToxcmVtOyBsaW5lLWhlaWdodDoxcmVtOyB9IC5OZXdTcnAyLk5ld1NycDJNb2JpbGUgZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllciB7IHBhZGRpbmc6MTBweDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5jYXJfdGV4dCBhIHt0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6IzA1MTQxZjsgbGluZS1oZWlnaHQ6MS4xO30gLmNhcl90ZXh0IGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjb2xvcjojMDUxNDFmfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciAuZGl2Q2FySW5TdG9ja0xpbmt7IGJhY2tncm91bmQtY29sb3I6I2VmZWZlZjsgcGFkZGluZzozcHggOHB4OyBib3JkZXItcmFkaXVzOjNweDsgd2lkdGg6Zml0LWNvbnRlbnQ7IGNvbG9yOiMwMDA7IG1hcmdpbi10b3A6MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6MzsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciAuZGl2Q2FySW5TdG9ja0xpbmsgYXsgY29sb3I6IzAwMDsgfSAuZGl2RGlzY2xhaW1lckJsb2NreyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IGJvcmRlci1yYWRpdXM6M3B4OyB9IC5kaXZEaXNjbGFpbWVyQmxvY2tDb250ZW50eyBwYWRkaW5nOjE1cHggMDsgfSAuZGl2RGlzY2xhaW1lckJsb2NrVGl0bGV7IGhlaWdodDphdXRvOyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjAgNDBweCAxMHB4OyBiYWNrZ3JvdW5kOm5vbmU7IG1hcmdpbjowOyB9IC5kaXZEaXNjbGFpbWVyQmxvY2tUZXh0eyBwYWRkaW5nOjAgNDBweDsgYmFja2dyb3VuZDpub25lOyBtYXJnaW46MDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggLmRpdkZpbHRlclRpdGxleyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWJvdHRvbToxMHB4OyBwYWRkaW5nLXRvcDoyMHB4OyBmb250LXNpemU6MXJlbSA7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5maWx0ZXJDaGVjaywgLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5yYWRpb1NvcnR7IHBvc2l0aW9uOmFic29sdXRlOyBvcGFjaXR5OjA7IHdpZHRoOjFweDsgaGVpZ2h0OjFweDsgb3ZlcmZsb3c6aGlkZGVuOyBjbGlwOnJlY3QoMCAwIDAgMCk7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5maWx0ZXJDaGVjaysuZmlsdGVyU3BhbiwgLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5yYWRpb1NvcnQrLmZpbHRlclNwYW57IGJhY2tncm91bmQtY29sb3I6I0Y2RjZGNjsgY29sb3I6IzMzMzMzMzsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlckNoZWNrOmNoZWNrZWQrLmZpbHRlclNwYW4sIC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAucmFkaW9Tb3J0OmNoZWNrZWQrLmZpbHRlclNwYW57IGJhY2tncm91bmQtY29sb3I6IzY2NjY2NjsgY29sb3I6I0ZGRjsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBjb2x1bW4tZ2FwOjEwcHg7IHJvdy1nYXA6NXB4OyBwYWRkaW5nOjA7IG1hcmdpbjowOyBhbGlnbi1pdGVtczpzdHJldGNoOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaXsgZmxleDowIDAgY2FsYyg1MCUgLSA1cHgpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5maWx0ZXJTcGFueyBkaXNwbGF5OmZsZXg7IHBhZGRpbmc6N3B4IDIwcHg7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjVweDsgY3Vyc29yOnBvaW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODc1cmVtIDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW4tdG9wOjVweDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuTWFpbkJveExheWVyIC5maWx0ZXJUb2dnbGVXcmFwcGVyIC5maWx0ZXJUb2dnbGVCdG4geyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzoxMHB4IDIwcHg7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NXB4OyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxcmVtIDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsgd2lkdGg6MTAwJTsgdGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50OyB9IC5NYWluQm94TGF5ZXIgLnNlbGVjdFRvZ2dsZVdyYXBwZXJ7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGNvbHVtbi1nYXA6MTBweDsgcm93LWdhcDo1cHg7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH0gLk1haW5Cb3hMYXllciAuc2VsZWN0VG9nZ2xlV3JhcHBlciAuc2VsZWN0QWxsVG9nZ2xlQnRuLCAuTWFpbkJveExheWVyIC5zZWxlY3RUb2dnbGVXcmFwcGVyIC51bnNlbGVjdEFsbFRvZ2dsZUJ0biB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjEwcHggM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjVweDsgY3Vyc29yOnBvaW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MXJlbSA7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7IHRleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDsgZmxleDowIDAgY2FsYyg1MCUgLSA1cHgpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmRpdkZpbHRlck91dGVyQm94IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIHsgbWFyZ2luOjBweCAwIDQwcHggMCFpbXBvcnRhbnQ7IH0gLmRpdlByaWNlUmFuZ2VTbGlkZXIgPiAuZGl2U3Bhbi5kaXZTcGFuMTI6bm90KC5kaXZGaWx0ZXJUaXRsZSkgeyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuZGl2UHJpY2VSYW5nZVNsaWRlciAucmFuZ2Utc2xpZGVyLWxlZnQsIC5kaXZQcmljZVJhbmdlU2xpZGVyIC5yYW5nZS1zbGlkZXItcmlnaHQgeyB3aWR0aDphdXRvOyBtaW4td2lkdGg6NDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmRpdlByaWNlUmFuZ2VTbGlkZXIgLnJhbmdlLXNsaWRlci51aS1zbGlkZXIgeyBmbGV4OjEgMSBhdXRvOyBtYXgtd2lkdGg6NTAwcHg7IH0gLk1haW5Cb3hMYXllciAuc2lkZVNpZGViYXIgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MzAwcHg7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJveC1zaGFkb3c6LTJweCAwIDhweCByZ2JhKDAsMCwwLDAuMyk7IHBhZGRpbmc6MCAyMHB4IDIwcHggMjBweDsgei1pbmRleDoxMDAwOyBvdmVyZmxvdy15OmF1dG87IG92ZXJmbG93LXg6aGlkZGVuOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuM3MgZWFzZTsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhci5vcGVuIHsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7IGRpc3BsYXk6YmxvY2s7IH0gLk1haW5Cb3hMYXllciAuY2xvc2VCdG4geyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjEwcHg7IHJpZ2h0Oi0xMHB4OyBmb250LXNpemU6MS41cmVtIDsgYmFja2dyb3VuZDpub25lOyBib3JkZXI6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IHotaW5kZXg6MTE7IH0gLk1haW5Cb3hMYXllciAuc2lkZVNpZGViYXIgLmRpdkZpbHRlckJveFRpdGxleyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6MS4xMjVyZW0gOyBwb3NpdGlvbjpzdGlja3k7IHRvcDowOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHotaW5kZXg6MTA7IHBhZGRpbmc6MTBweCAwIDAgMDsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhciAuc2lkZWJhckhlYWRlciB7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgei1pbmRleDoxMDA7IHBhZGRpbmc6MTBweCAwIDAgMDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9Ci8qKiAvY3NzL3JlZC5jc3MgKiovCi5tZW51IHVsIGxpIGEsIC5tZW51IHVsIGxpIGE6aG92ZXJ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBjb2xvcjojZmZmZmZmOyBmaWxsOiNmZmZmZmY7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjFlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo1cHggMCA1cHggN3B4OyBiYWNrZ3JvdW5kOiMwNTE0MWY7IH0gLnRvcG5hdiAubWVudSB1bCBsaSBheyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IGZpbGw6IzA1MTQxZjsgfSAubWVudSB1bCBsaSBhOmhvdmVyeyBib3JkZXItcmFkaXVzOjNweCAzcHggMHB4IDBweDsgfSAubWVudSAucHJvbW8geyBtYXJnaW46aW5pdGlhbDsgbWluLWhlaWdodDphdXRvOyB9IC5tZW51LmJ1cmdlci1idG4tY29udGFpbmVyIHVsIGxpIGEsIC5tZW51LmJ1cmdlci1idG4tY29udGFpbmVyIHVsIGxpIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6MDsgfSAubW9iaWxlQnV0dG9ueyBjb2xvcjpyZ2IoNSwyMCwzMSkgIWltcG9ydGFudDsgYmFja2dyb3VuZDojRkZGRkZGIWltcG9ydGFudDsgfSAubWVudSB1bCBsaSBhLmJsYWNrIHtiYWNrZ3JvdW5kOiMyMjI7fSAuaC1idXR0b25zIHVsIGxpIGEuYmxhY2sge2JhY2tncm91bmQ6IzAwMDtjb2xvcjojRkZGRkZGfSAuaC1idXR0b25zIHt9IC5oLWJ1dHRvbnMgdWwgbGkge2Zsb2F0OmxlZnQ7IGxpc3Qtc3R5bGU6bm9uZTsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowIDAgMTBweCAwcHg7ZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuaC1idXR0b25zIHVsIGxpIGEgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IGNvbG9yOiMwMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgbWluLXdpZHRoOjk1cHg7IH0gLmRlYWxlcnBob25lIHVsIGxpIGEgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjEwcHg7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjI1cHg7IGJhY2tncm91bmQtcG9zaXRpb246OTglIDZweDsgYmFja2dyb3VuZC1jb2xvcjojZDAwOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2Fycm93LnBuZyk7IH0gLm1lbnUgbGkuaW52ZXJzZS1jb2xvciA+IGEgeyBjb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJvcmRlcjoxcHggc29saWQ7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuVXNlZFNycDJNb2JpbGUgaWZyYW1lI3BvZGl1bS1idWJibGV7IGJvdHRvbTozcmVtICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyBtaW4td2lkdGg6MjI1cHg7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAudWktbXVsdGlzZWxlY3QtbWVudS50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMTBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zeyBtYXJnaW4tdG9wOjVweDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gLnRyYWRpbk5pdnsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluTml2eyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAuNXJlbTsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXJ7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdHsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0TGFiZWx7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW46MCA1cHg7IGN1cnNvcjpwb2ludGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQrbGFiZWx7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIGJsYWNrOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluU2VsZWN0UG9wdXB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgcGFkZGluZzowLjNyZW0haW1wb3J0YW50OyB9Ci8qKiAvY3NzL2Rpdl9yYW5nZXNsaWRlci5jc3MgKiovCmRpdi5kaXZQcmljZVJhbmdlU2xpZGVyeyBtYXJnaW46MCAwIDEwcHggMDsgcGFkZGluZzowOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItdGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MCAwIDEwcHggMDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXByaWNlc3sgcGFkZGluZzowIDAgMTVweCAwOyBmb250LXNpemU6MS4xMjVyZW0gOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcHJpY2VzIHNwYW4ucHJpY2UtbWlue30gZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlci1wcmljZXMgc3Bhbi5wcmljZS1tYXh7fSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyeyBib3JkZXItcmFkaXVzOjVweCAhaW1wb3J0YW50OyBoZWlnaHQ6MTBweDsgbWFyZ2luOjRweCA2cHggMCAtM3B4OyBwYWRkaW5nOjA7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnQsIGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcmlnaHR7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbGluZS1oZWlnaHQ6MjBweDsgY29sb3I6Izc1NzU3NTsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnR7IHRleHQtYWxpZ246bGVmdDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXJpZ2h0eyB0ZXh0LWFsaWduOnJpZ2h0OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgZGl2LnVpLXNsaWRlci1yYW5nZXsgYmFja2dyb3VuZDojZmZmZmZmIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZSwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGV7IG1hcmdpbjotOHB4IDAgMCAtMTFweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOjAgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo1MHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyB0b3A6MDsgaGVpZ2h0OjI1cHg7IHdpZHRoOjI1cHg7IGN1cnNvcjpwb2ludGVyOyBvdXRsaW5lOm5vbmUgIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBBLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZlLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIHNwYW4udWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZleyBib3JkZXItY29sb3I6IzY2NjsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1mb2N1cywgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtZm9jdXN7IG91dGxpbmU6bm9uZSAhaW1wb3J0YW50OyB9Ci8qKiAvY3NzL3BheW1lbnRDYWxjdWxhdG9yLmNzcyAqKi8KOmlzKCNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciwjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IpLmNhbGMtbW9iaWxlIHsgLS13cmFwLXBheW1lbnRzOndyYXA7IC0tbW9iaWxlLWRpc3BsYXk6bm9uZTsgLS1tb2ItZnVsbC13aWR0aDoxMDAlOyAtLXBheW1lbnQtbWluLXdpZHRoOjYuM3JlbTsgLS1oZWFkZXItZm9udC1zaXplOnZhcigtLWZzMik7IC0taGVhZGVyLWljb24tc2l6ZTp2YXIoLS1mczUpOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lcnsgbWluLWhlaWdodDo0NTBweDsgY29sb3I6YmxhY2s7IH0gI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXJ7IGJvcmRlcjo0cHggc29saWQgI2ZmZmZmZjsgfSAjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lcjpoYXMoLmNhbGMtbW9iaWxlKXsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lci5jYWxjLW1vYmlsZSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcnsgb3ZlcmZsb3cteDp2aXNpYmxlOyBvdmVyZmxvdy15OnNjcm9sbDsgaGVpZ2h0OjM3MHB4OyBmbGV4LXdyYXA6d3JhcDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgb3ZlcmZsb3cteDpzY3JvbGw7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIsIC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgd2lkdGg6MTAwJTsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNHsgd2lkdGg6NjQlOyB9IC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCwgLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMuYm94ZXM0eyB3aWR0aDo4MCU7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIHNwYW4sIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyBzcGFueyBwYWRkaW5nOjAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50OyBjb2xvcjppbmhlcml0OyBmb250LXNpemU6aW5oZXJpdDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zKTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IG1hcmdpbi1ib3R0b206MDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcy5ib3hlczQgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IHdpZHRoOjI0JTsgfSAucGF5bWVudENhbGN1bGF0b3JMaW5leyBib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmV5OyBtYXJnaW46MTBweCAwOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMXsgZm9udC1zaXplOjAuNjg4cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMSBzcGFueyBmb250LXNpemU6MS43NXJlbSA7IGNvbG9yOiMwNTE0MWY7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmUyeyBmb250LXNpemU6MC43NXJlbSA7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTIgc3BhbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTN7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMyBzcGFueyBmb250LXNpemU6MS4yNXJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmU0eyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOmdyZXk7IHdoaXRlLXNwYWNlOm5vcm1hbDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2VEaXZ7IG1heC13aWR0aDozMyU7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyB0b3A6LTUwJTsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyeyB3aWR0aDptYXgodmFyKC0tbW9iLWZ1bGwtd2lkdGgsIDY2JSksIDIwcmVtKTsgfSAuY2FsYy1wYXltZW50c3sgbWF4LXdpZHRoOnZhcigtLW1vYi1mdWxsLXdpZHRoLCA2NiUpOyB9IC5jYWxjLXBheW1lbnRzIDppcygucHJpY2UtZnIsIC5wcmljZS1lbil7IHRleHQtYWxpZ246cmV2ZXJ0OyBtaW4td2lkdGg6dW5zZXQ7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVDb250YWluZXJ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2NjY2M7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlQ29udGFpbmVyeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGV7IGxpc3Qtc3R5bGU6bm9uZTsgcGFkZGluZzowIDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpeyBwYWRkaW5nOjEwcHg7IGZsb2F0OmxlZnQ7IG1pbi13aWR0aDo1cmVtOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgYm9yZGVyLWJvdHRvbTowcHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDk7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkuYWN0aXZlUGF5bWVudFR5cGV7IGJhY2tncm91bmQtY29sb3I6Izk4OTg5ODsgY29sb3I6d2hpdGU7IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXJ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciA+ICogeyBwYWRkaW5nLWJvdHRvbTowLjVyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXIgbGFiZWx7IGNvbG9yOmdyZXk7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IG1hcmdpbi1sZWZ0OjNweDsgbWFyZ2luLWJvdHRvbTowOyB9IC5wYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3R7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjEwcmVtOyBtYXgtd2lkdGg6MjByZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLCAuZDJjZm9ybSAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCB7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjdyZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNleyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjExMHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFoMGxFUVZRNFQ5M1RNUXJDVUF6RzhWOXg4UXppaVlTdVhkekZDN2g0QWNFTE9QUUFkWFlvdlpDSEVBVGxnUVY1R0ZUZTFvekpsei9rUzFJcGpLcXczd1FCVnl5KytKSTB5MUdUZTdEQ0JiTUFja2VOSVFLay9CYW5BTEJCKzE2THRuREVMb01jc00vQkVTRGx6MmhlRFIzV2VQd0tTTG81ZW94ejN6Nk5OY0ZEK3Z1M2lqMTRBcXovRHhHYktCN0NBQUFBQUVsRlRrU3VRbUNDJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgY2VudGVyOyBib3JkZXItY29sb3I6I2E5YTlhOTsgY29sb3I6aW5oZXJpdDsgYm94LXNoYWRvdzpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZTsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudHsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjVyZW07IHBhZGRpbmctbGVmdDoyMHB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgaGVpZ2h0PScyOHB4JyB3aWR0aD0nODVweCc+PHRleHQgeD0nNicgeT0nMjEnIGZpbGw9JycgZm9udC1zaXplPScxNicgZm9udC1mYW1pbHk9J2FyaWFsJz4kIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjYwJTsgYmFja2dyb3VuZC1wb3NpdGlvbi15OjQwJTsgLW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyBtYXJnaW46MDsgfSAucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXJ7IG1pbi13aWR0aDoxOHJlbTsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6Izg2ODY4NjsgcGFkZGluZzowOyBtYXJnaW46MDsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyLmJveGVzNHsgd2lkdGg6MzAlOyB9IC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHAsIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHNwYW57IGNvbG9yOmluaGVyaXQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOjFyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9yRXJyb3JNZXNzYWdleyB3aWR0aDo1MCU7IG1hcmdpbi10b3A6MzBweDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mb3sgcG9zaXRpb246cmVsYXRpdmU7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmljb257IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IG1hcmdpbjowOyBwYWRkaW5nOjAuNHJlbTsgLS10eHQtY29sb3I6I2ZmZmZmZjsgLS1mczp2YXIoLS1oZWFkZXItaWNvbi1zaXplLCB2YXIoLS1mczcpKTsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIGgyIHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gaDIgc3BhbnsgZm9udC1zaXplOnZhcigtLWhlYWRlci1mb250LXNpemUsIHZhcigtLWZzMykpOyBtYXJnaW46MDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBoM3sgZm9udC1zaXplOjEuMTg4cmVtIDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBzcGFuLmgyLWFsdHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgbWFyZ2luLWxlZnQ6dmFyKC0tcyk7IGZvbnQtc2l6ZTppbmhlcml0OyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IGxpbmUtaGVpZ2h0OjEuMmVtOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyAuaDItYWx0IHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmgyLWFsdCBzcGFueyBmb250LXNpemU6dmFyKC0taGVhZGVyLWZvbnQtc2l6ZSwgdmFyKC0tZnMzKSk7IG1hcmdpbjowOyBsaW5lLWhlaWdodDpub3JtYWw7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzowOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIC5oMy1hbHR7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIuYm94ZXM0eyB3aWR0aDo2NCU7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGF7IHdpZHRoOm1pbig2NCUsMThyZW0pOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3R7IH0gLmZhLmZhLWNhbGN1bGF0b3J7IGNvbG9yOiMwMDAwMDA7IH0gLi1iZy1ibGFjayAuZmEuZmEtY2FsY3VsYXRvcnsgY29sb3I6I0ZGRkZGRjsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgc2VsZWN0OjotbXMtZXhwYW5kIHsgZGlzcGxheTpub25lOyB9IC5jYWxjLXBheW1lbnQtY2FzaCB7IHdpZHRoOm1pbigxN3JlbSw5MCUpOyBwYWRkaW5nOjAgMS41cmVtOyB9IC5jYWxjLXBheW1lbnQtY2FzaCBzcGFueyBtYXJnaW4tYm90dG9tOjA7IGZvbnQtc2l6ZTpyZXZlcnQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZUZpbmFsIHsgcGFkZGluZy10b3A6dmFyKC0tcyk7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiYmI7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZVJvdyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgbGluZS1oZWlnaHQ6bm9ybWFsOyB9IC5jYWxjLXBheW1lbnQtY2FzaCAucHJpY2VOYW1leyBwYWRkaW5nOjA7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOnZhcigtLWZzMCk7IH0gI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b257IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjEwNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgcGFkZGluZzoycHg7IGN1cnNvcjpwb2ludGVyOyB9ICNwYXltZW50Q2FsY3VsYXRvck9wdGlvbkNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWV7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6NXB4IDVweDsgZm9udC1zaXplOjFyZW0gOyB3aWR0aDoxMDBweDsgcGFkZGluZy1sZWZ0OjE1cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uIHsgYm9yZGVyOjEuNXB4IHNvbGlkICNhYWE7IGJvcmRlci1yYWRpdXM6NnB4OyBwYWRkaW5nOjhweDsgd2lkdGg6MTkwcHg7IGJhY2tncm91bmQ6d2hpdGU7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBmbGV4LXNocmluazowOyBtaW4td2lkdGg6MTg3cHg7IGJveC1zaXppbmc6Y29udGVudC1ib3ghaW1wb3J0YW50OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbi5zZWxlY3RlZCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uLnNlbGVjdGVkIHsgYm9yZGVyLWNvbG9yOiMwMDdCRkY7IGJveC1zaGFkb3c6MCAwIDEwcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnRlcm0sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAudGVybSB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzMzM7IG1hcmdpbi1ib3R0b206MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZG93bi1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmRvd24tcGF5bWVudCB7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGNvbG9yOiM5OTk7IG1hcmdpbi1ib3R0b206NXB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc2VwYXJhdG9yUGF5LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnNlcGFyYXRvclBheSB7IHdpZHRoOjkwJTsgaGVpZ2h0OjFweDsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBtYXJnaW4tYm90dG9tOjZweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmNvbnRlbnQtY29udGFpbmVyIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB3aWR0aDoxMDAlOyBwYWRkaW5nLWJvdHRvbTo4cHg7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sZWZ0LXNlY3Rpb24sICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucmlnaHQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sZWZ0LXNlY3Rpb24sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucmlnaHQtc2VjdGlvbiB7IHdpZHRoOjUwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6NnB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxlZnQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sZWZ0LXNlY3Rpb24geyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sb3dlc3QtcGF5bWVudCwgI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sb3dlc3QtcmF0ZSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sb3dlc3QtcGF5bWVudCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sb3dlc3QtcmF0ZSB7IGZvbnQtc2l6ZToxLjI1cmVtIDsgY29sb3I6I2QzMmYyZjsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5pbmZvLWljb24sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuaW5mby1pY29uIHsgZm9udC1zaXplOjAuNzVyZW0gOyBjb2xvcjojNjY2OyBjdXJzb3I6cG9pbnRlcjsgbWFyZ2luLWxlZnQ6NHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1yYXRlLCAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1yYXRlLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1wYXltZW50IHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5hY3R1YWwtcmF0ZSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5hY3R1YWwtcmF0ZSB7IGNvbG9yOiMzMzM7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5hY3R1YWwtcGF5bWVudCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5hY3R1YWwtcGF5bWVudCB7IGNvbG9yOiMwMDMzNjY7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5kZXRhaWxzVGF4LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmRldGFpbHNUYXggeyBmb250LXNpemU6MC42ODhyZW0gOyBjb2xvcjojMzMzOyBtYXJnaW4tdG9wOjJweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnJhZGlvLWNvbnRhaW5lciwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5yYWRpby1jb250YWluZXIgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjBweDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0sICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFt0eXBlPSJyYWRpbyJdW25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0geyBtYXJnaW4tcmlnaHQ6NHB4OyBvcGFjaXR5OnVuc2V0OyB3aWR0aDp1bnNldDsgaGVpZ2h0OnVuc2V0OyBwb3NpdGlvbjp1bnNldDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnNpbmdsZS1jb2x1bW4sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuc2luZ2xlLWNvbHVtbiB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHdpZHRoOjEwMCU7IHBhZGRpbmc6OHB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc21hbGwtYm94LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnNtYWxsLWJveCB7IHdpZHRoOjEwMHB4OyBwYWRkaW5nOjhweDsgbWluLXdpZHRoOjEwMHB4OyBtYXgtd2lkdGg6MTAwcHg7IH0KLyoqIC9jc3MvZGFya3Rvb2x0aXAuY3NzICoqLwouZGFyay10b29sdGlwe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6bm9ybWFsO2hlaWdodDphdXRvO3RvcDowO2xlZnQ6MH0uZGFyay10b29sdGlwLnNtYWxse3BhZGRpbmc6NHB4O2ZvbnQtc2l6ZTowLjc1cmVtIDttYXgtd2lkdGg6MTUwcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDstbW96LWJvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1yYWRpdXM6MnB4fS5kYXJrLXRvb2x0aXAubWVkaXVte3BhZGRpbmc6NnB4O2ZvbnQtc2l6ZTowLjY4OHJlbSA7bWF4LXdpZHRoOjIwMHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweH0uZGFyay10b29sdGlwLmxhcmdle3BhZGRpbmc6MTZweDtmb250LXNpemU6MXJlbSA7bWF4LXdpZHRoOjI1MHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7LW1vei1ib3JkZXItcmFkaXVzOjZweDtib3JkZXItcmFkaXVzOjZweH0uZGFyay10b29sdGlwIC50aXB7dHJhbnNmb3JtOnNjYWxlKDEuMDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDEpO3RyYW5zZm9ybTpzY2FsZSgxLjAxKTtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXN0eWxlOnNvbGlkO2xpbmUtaGVpZ2h0OjB9LmRhcmstdG9vbHRpcC5zb3V0aCAudGlwe2xlZnQ6NTAlO3RvcDoxMDAlfS5kYXJrLXRvb2x0aXAud2VzdCAudGlwe2xlZnQ6MDt0b3A6NTAlfS5kYXJrLXRvb2x0aXAubm9ydGggLnRpcHtsZWZ0OjUwJTt0b3A6MH0uZGFyay10b29sdGlwLmVhc3QgLnRpcHtsZWZ0OjEwMCU7dG9wOjUwJX0uZGFyay10b29sdGlwLnNvdXRoLnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjAgNXB4IDAgNXB4O21hcmdpbi1sZWZ0Oi01cHh9LmRhcmstdG9vbHRpcC5zb3V0aC5tZWRpdW0gLnRpcHtib3JkZXItd2lkdGg6MCA2cHggMCA2cHg7bWFyZ2luLWxlZnQ6LTZweH0uZGFyay10b29sdGlwLnNvdXRoLmxhcmdlIC50aXB7Ym9yZGVyLXdpZHRoOjAgMTJweCAwIDEycHg7bWFyZ2luLWxlZnQ6LTEycHh9LmRhcmstdG9vbHRpcC53ZXN0LnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjVweCA3cHggNXB4IDA7bWFyZ2luLWxlZnQ6LTdweDttYXJnaW4tdG9wOi01cHh9LmRhcmstdG9vbHRpcC53ZXN0Lm1lZGl1bSAudGlwe2JvcmRlci13aWR0aDo2cHggOHB4IDZweCAwO21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXRvcDotNnB4fS5kYXJrLXRvb2x0aXAud2VzdC5sYXJnZSAudGlwe2JvcmRlci13aWR0aDoxMnB4IDE0cHggMTJweCAwO21hcmdpbi1sZWZ0Oi0xNHB4O21hcmdpbi10b3A6LTEycHh9LmRhcmstdG9vbHRpcC5ub3J0aC5zbWFsbCAudGlwe2JvcmRlci13aWR0aDowIDVweCA3cHggNXB4O21hcmdpbi1sZWZ0Oi01cHg7bWFyZ2luLXRvcDotN3B4fS5kYXJrLXRvb2x0aXAubm9ydGgubWVkaXVtIC50aXB7Ym9yZGVyLXdpZHRoOjAgNnB4IDhweCA2cHg7bWFyZ2luLWxlZnQ6LTZweDttYXJnaW4tdG9wOi04cHh9LmRhcmstdG9vbHRpcC5ub3J0aC5sYXJnZSAudGlwe2JvcmRlci13aWR0aDowIDEycHggMTRweCAxMnB4O21hcmdpbi1sZWZ0Oi0xMnB4O21hcmdpbi10b3A6LTE0cHh9LmRhcmstdG9vbHRpcC5lYXN0LnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCAwO21hcmdpbi10b3A6LTVweH0uZGFyay10b29sdGlwLmVhc3QubWVkaXVtIC50aXB7Ym9yZGVyLXdpZHRoOjZweCAwIDZweCAwO21hcmdpbi10b3A6LTZweH0uZGFyay10b29sdGlwLmVhc3QubGFyZ2UgLnRpcHtib3JkZXItd2lkdGg6MTJweCAwIDEycHggMDttYXJnaW4tdG9wOi0xMnB4fS5kYXJrLXRvb2x0aXAgdWwuY29uZmlybXtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW4tdG9wOjVweDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCBhdXRvfS5kYXJrLXRvb2x0aXAgdWwuY29uZmlybSBsaXtwYWRkaW5nOjEwcHg7ZmxvYXQ6bGVmdDttYXJnaW46NXB4O21pbi13aWR0aDoyNXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstby1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweH0uZGFyay10b29sdGlwLmRhcmt7YmFja2dyb3VuZC1jb2xvcjojZGFkOWRiO2NvbG9yOiMwMDB9LmRhcmstdG9vbHRpcC5saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Y29sb3I6IzVlNWU1ZTtib3JkZXI6MXB4IHNvbGlkICM1ZTVlNWU7ei1pbmRleDoxMDAwMDMwfS5kYXJrLXRvb2x0aXAuZGFyay5zb3V0aCAudGlwe2JvcmRlci1jb2xvcjojZGFkOWRiIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O19ib3JkZXItY29sb3I6I2RhZDlkYiAjMDAwICMwMDAgIzAwMDtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmRhcmsud2VzdCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjZGFkOWRiIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O19ib3JkZXItY29sb3I6IzAwMCAjZGFkOWRiICMwMDAgIzAwMDtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmRhcmsubm9ydGggLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2RhZDlkYiB0cmFuc3BhcmVudDtfYm9yZGVyLWNvbG9yOiMwMDAgIzAwMCAjZGFkOWRiICMwMDA7X2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyl9LmRhcmstdG9vbHRpcC5kYXJrLmVhc3QgLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2RhZDlkYjtfYm9yZGVyLWNvbG9yOiMwMDAgIzAwMCAjMDAwICNkYWQ5ZGI7X2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyl9LmRhcmstdG9vbHRpcC5saWdodC5zb3V0aCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6dXJsKC9jc3MvdGlwcy5wbmcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDt3aWR0aDoxMnB4O2hlaWdodDo4cHh9LmRhcmstdG9vbHRpcC5saWdodC53ZXN0IC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXB3LnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjhweDtoZWlnaHQ6MTJweH0uZGFyay10b29sdGlwLmxpZ2h0Lm5vcnRoIC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXBuLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjEycHg7aGVpZ2h0OjhweH0uZGFyay10b29sdGlwLmxpZ2h0LmVhc3QgLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOnVybCgvY3NzL3RpcGUucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IGNlbnRlcjt3aWR0aDo4cHg7aGVpZ2h0OjEycHh9LmRhcmstdG9vbHRpcC5kYXJrIHVsLmNvbmZpcm0gbGl7YmFja2dyb3VuZC1jb2xvcjojNDE2ZTg1fS5kYXJrLXRvb2x0aXAuZGFyayB1bC5jb25maXJtIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzQxN2U4NX0uZGFyay10b29sdGlwLmxpZ2h0IHVsLmNvbmZpcm0gbGl7YmFja2dyb3VuZC1jb2xvcjojYzFkYmRifS5kYXJrLXRvb2x0aXAubGlnaHQgdWwuY29uZmlybSBsaTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkY2U4ZTh9LmFuaW1hdGVkey13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy1tb3otYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy1tcy1hbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7LW8tYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoO2FuaW1hdGlvbi1maWxsLW1vZGU6Ym90aDstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7LW1vei1hbmltYXRpb24tZHVyYXRpb246LjVzOy1tcy1hbmltYXRpb24tZHVyYXRpb246LjVzOy1vLWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7YW5pbWF0aW9uLWR1cmF0aW9uOi41c31ALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluVXB7MC4wMDAxJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtOTBkZWcpO29wYWNpdHk6MH00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDApO29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1ALW8ta2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1ALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluUmlnaHR7MC4wMDAxJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtOTBkZWcpO29wYWNpdHk6MH00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDApO29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX1ALW8ta2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX0uZmxpcEluey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnQ7LW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDstby1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtiYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudH0uZmxpcEluLnNvdXRoLC5mbGlwSW4ubm9ydGh7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwSW5VcDstbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwOy1vLWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwO2FuaW1hdGlvbi1uYW1lOmZsaXBJblVwfS5mbGlwSW4ud2VzdCwuZmxpcEluLmVhc3R7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwSW5SaWdodDstbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0Oy1vLWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0O2FuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0fUAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW57MHtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUAtbW96LWtleWZyYW1lcyBmYWRlSW57MHtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUAtby1rZXlmcmFtZXMgZmFkZUluezB7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGVJbnswe29wYWNpdHk6MH0xMDAle29wYWNpdHk6MX19LmZhZGVJbnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhZGVJbjstbW96LWFuaW1hdGlvbi1uYW1lOmZhZGVJbjstby1hbmltYXRpb24tbmFtZTpmYWRlSW47YW5pbWF0aW9uLW5hbWU6ZmFkZUlufQovKiogL2Nzcy9yZXZlYWwuY3NzICoqLwoucmV2ZWFsLW1vZGFsLWJnIHsgcG9zaXRpb246Zml4ZWQ7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kOiMwMDA7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7IHotaW5kZXg6MTAwMDAwOTsgZGlzcGxheTpub25lOyB0b3A6MDsgbGVmdDowOyB9IC5yZXZlYWwtbW9kYWwgeyB2aXNpYmlsaXR5OmhpZGRlbjsgdG9wOi0xMDAwcHg7IHdpZHRoOm1pbig1MjBweCwgOTB2dyk7IGJhY2tncm91bmQ6I2VlZSB1cmwoL2ltYWdlcy9tb2RhbC1nbG9zcy5wbmcpIG5vLXJlcGVhdCAtMjAwcHggLTgwcHg7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgcmlnaHQ6MDsgbWFyZ2luOmF1dG87IHotaW5kZXg6MTAwMDAyMDsgcGFkZGluZzozMHB4IDQwcHggMzRweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC40KTsgLXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMHB4IHJnYmEoMCwwLDAsLjQpOyAtYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC40KTsgfSAucmV2ZWFsLW1vZGVsLWRvLW5vdC1zaG93IHsgdmlzaWJpbGl0eTpoaWRkZW47IHRvcDoxMDBweDsgd2lkdGg6NTIwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwMDAwMjA7IHBhZGRpbmc6MzBweCA0MHB4IDM0cHg7IGJhY2tncm91bmQ6bm9uZTsgLW1vei1ib3JkZXItcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyLXJhZGl1czowcHg7IC1tb3otYm94LXNoYWRvdzpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZTsgLWJveC1zaGFkb3c6bm9uZTsgfSAuLS1pcy1wb3B1cC1maXhlZC1jb250YWluZXIgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgcmlnaHQ6MDsgei1pbmRleDoxMDAwMDAwMDA7IH0gLnJldmVhbC1tb2RhbC5zbWFsbCB7IHdpZHRoOjIwMHB4O30gLnJldmVhbC1tb2RhbC5tZWRpdW0geyB3aWR0aDo0MDBweDt9IC5yZXZlYWwtbW9kYWwubGFyZ2UgeyB3aWR0aDo2MDBweDt9IC5yZXZlYWwtbW9kYWwueGxhcmdlIHsgd2lkdGg6ODAwcHg7fSAucmV2ZWFsLW1vZGFsIC5jbG9zZS1yZXZlYWwtbW9kYWwgeyBmb250LXNpemU6MS4zNzVyZW0gOyBsaW5lLWhlaWdodDouNTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo5cHg7IHJpZ2h0OjEwcHg7IGNvbG9yOiM0NDQ7IHRleHQtc2hhZG93OjAgLTFweCAxcHggcmJnYSgwLDAsMCwuNik7IGZvbnQtd2VpZ2h0OmJvbGQ7IGN1cnNvcjpwb2ludGVyOyB9IC5jbG9zZS1yZXZlYWwtbW9kYWwubW9kYWwtY2xvc2UtaGlkZSB7IGRpc3BsYXk6bm9uZTsgfSAucmV2ZWFsLW1vZGFsIHNwYW4geyBwYWRkaW5nOjBweDsgZm9udC1zaXplOjEuNXJlbSA7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6IzQxNDE0MTsgfSAucmV2ZWFsLW1vZGFsIHNwYW4uc3VjY2VzcyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2lyY2xlLWdyZWVuLTI0LW5zLnBuZykgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IGNlbnRlciB0cmFuc3BhcmVudDsgfSAucmV2ZWFsLW1vZGFsIHNwYW4uZmFpbCB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2lyY2xlLXJlZC0yNC1ucy5wbmcpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCBjZW50ZXIgdHJhbnNwYXJlbnQ7IHBhZGRpbmctbGVmdDozMHB4OyB9IC5yZXZlYWwtbW9kYWwgcCB7IG1hcmdpbjowIDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6IzQxNDE0MTsgfSAucG9wdXAtZG9tLW5vd3JhcHBlciB7IGJhY2tncm91bmQ6bm9uZSAhaW1wb3J0YW50OyBib3gtc2hhZG93Om5vbmU7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDo0ODBweCkgeyAucmV2ZWFsLW1vZGFsLCAucmV2ZWFsLW1vZGVsLWRvLW5vdC1zaG93IHsgdG9wOjEwcHg7IHotaW5kZXg6MTAwMDAyMDsgcGFkZGluZzowLjVyZW07IHBhZGRpbmctdG9wOjJyZW07IH0gLnJldmVhbC1tb2RhbCAuY2xvc2UtcmV2ZWFsLW1vZGFsIHsgZm9udC1zaXplOjEuODc1cmVtIDsgbGluZS1oZWlnaHQ6MC42OyByaWdodDowLjVyZW07IHRvcDowLjVyZW07IHotaW5kZXg6MTsgfSB9IC5lbWFpbC1jb25zZW50LWJveCA6aXMoLnRpdGxlLXR4dCwgcCl7IG1hcmdpbi1sZWZ0OjA7IHBhZGRpbmc6MDsgY29sb3I6IzQxNDE0MTsgfSAuZW1haWwtY29uc2VudC1ib3h7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgY29sb3I6IzQxNDE0MTsgfSAuZW1haWwtY29uc2VudC1ib3ggLmljb24tdGl0bGV7IHRleHQtYWxpZ246Y2VudGVyOyB9Ci8qKiAvY3NzL21haW4uY3NzICoqLwouLWxlZnQge2Zsb2F0OmxlZnQhaW1wb3J0YW50O30gLi1yaWdodCB7ZmxvYXQ6cmlnaHR9IC4tc21hbGwge2ZvbnQtc2l6ZTouOGVtO21hcmdpbi1ib3R0b206MS44NzVlbTtsaW5lLWhlaWdodDoxLjg3NWVtIWltcG9ydGFudDt9IC4tbGFyZ2Uge2ZvbnQtc2l6ZToxLjJlbTtsaW5lLWhlaWdodDoyLjVlbTttYXJnaW4tYm90dG9tOjEuMjVlbSFpbXBvcnRhbnQ7fSAuLWhpZGUge2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fSAuLXF1aWV0IHtjb2xvcjojNjY2IWltcG9ydGFudDt9IC4tbG91ZCB7Y29sb3I6IzA1MTQxZiFpbXBvcnRhbnQ7fSAuLWhpZ2hsaWdodCB7YmFja2dyb3VuZDojZmYwIWltcG9ydGFudDt9IC4tYWRkZWQge2JhY2tncm91bmQ6IzA2MDtjb2xvcjojZmZmIWltcG9ydGFudDt9IC4tcmVtb3ZlZCB7YmFja2dyb3VuZDojOTAwO2NvbG9yOiNmZmYhaW1wb3J0YW50O30gLi1wdXNoLWZpcnN0IHttYXJnaW4tbGVmdDowO3BhZGRpbmctbGVmdDowIWltcG9ydGFudDt9IC4tcHVzaC1sYXN0IHttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50O30gLi1wdXNoLWxlZnQge21hcmdpbi10b3A6MDtwYWRkaW5nLXRvcDowIWltcG9ydGFudDt9IC4tcHVzaC1ib3R0b20ge21hcmdpbi1ib3R0b206MDtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudDt9IC4tbm9ib3JkZXIge2JvcmRlcjowIWltcG9ydGFudDt9IC4tbm9kZWNvcmF0aW9uLCAuLW5vLXRleHQtZGVjb3JhdGlvbiwgLi1ub3RleHQtZGVjb3JhdGlvbiB7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O30gLi10ZXh0LXVwcGVyY2FzZSwgLi11cHBlcmNhc2UsIC50ZXh0LXVwcGVyY2FzZSB7dGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTt9IC4tdGV4dC1sb3dlcmNhc2UsIC4tbG93ZXJjYXNlIHt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2UhaW1wb3J0YW50O30gLi1oaWRkZW4geyBkaXNwbGF5Om5vbmU7IH0gLi10ZXh0LWJvbGQsLmJvbGR7Zm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7fSAuLXRleHQtbm9ybWFsLC5ub3JtYWx7Zm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDt9IC4tYWxpZ24tdG9wIHt2ZXJ0aWNhbC1hbGlnbjp0b3AhaW1wb3J0YW50O30gLi1hbGlnbi1taWRkbGUge3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnQ7fSAuLWxpbmUtaDF7IGxpbmUtaGVpZ2h0OjFlbTsgfSAuLWxpbmUtaDJ7IGxpbmUtaGVpZ2h0OjJlbTsgfSAuLWJvdHRvbTB7IGJvdHRvbTowOyB9IC4tYm90dG9tMC1pbXBvcnRhbnR7IGJvdHRvbTowIWltcG9ydGFudDsgfSAuUG9yc2NoZTJ7IGNsZWFyOmJvdGg7IH0gLmJsYWNrLXRleHQgeyBjb2xvcjojMDUxNDFmOyB9IDo6cGxhY2Vob2xkZXIgeyBwYWRkaW5nLXRvcDoxcHg7IGNvbG9yOiNhOWE5YTk7IG9wYWNpdHk6MTsgfSA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gI2NhclRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0LCAuU3BlY2lmaWNhdGlvbnMgLmZhLWNoZXZyb24tcmlnaHQgeyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIwcHg7IGhlaWdodDoyNXB4OyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctbGVmdDo5cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6MS4zNzVyZW0gOyBib3JkZXI6MXB4IHNvbGlkICMwNTE0MWY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZiA7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5TcGVjaWZpY2F0aW9ucyAuZmEtY2hldnJvbi1yaWdodHsgbWFyZ2luLXRvcDoxcHg7IH0gI2NhclRpdGxlIC5tYWtlTW9kZWxZZWFyeyBmb250LXNpemU6MS41NjNyZW0gOyB9ICNjYXJUaXRsZSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojOWM5YzljOyBmb250LXNpemU6MS4xMjVyZW0gOyBsZXR0ZXItc3BhY2luZzotMXB4OyB9IC5jYXJUaXRsZSAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjVweDsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWxlZnQ6OXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjEuMzc1cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYgOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuY2FyVGl0bGUgLm1ha2VNb2RlbFllYXJ7IGZvbnQtc2l6ZToxLjQzOHJlbSA7IH0gLmNhclRpdGxlIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUgeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM5YzljOWM7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IH0gI1NlYXJjaFRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjMxcHg7IGhlaWdodDo0MXB4OyBwYWRkaW5nLXRvcDo1cHg7IHBhZGRpbmctbGVmdDoxNHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjIuMTg4cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWYgOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAjU2VhcmNoVGl0bGUgLmRlYWxlckxjYXRpb25DYXJUaXRsZSB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzljOWM5YzsgZm9udC1zaXplOjFyZW0gOyBsZXR0ZXItc3BhY2luZzotMXB4OyBtYXJnaW4tbGVmdDo0NXB4OyBkaXNwbGF5OmJsb2NrOyB9IC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVsIGlucHV0IHsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDoxcHg7IG1hcmdpbi1yaWdodDo4cHg7IGhlaWdodDoxM3B4OyB9IC51aS13aWRnZXQsLnVpLXN0YXRlLWhvdmVyLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhvdmVyLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaG92ZXIsIC51aS1zdGF0ZS1mb2N1cywgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1mb2N1cywgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWZvY3VzLCAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdHsgYmFja2dyb3VuZDojZmZmIWltcG9ydGFudDsgY29sb3I6IzU1NTsgZm9udC1zaXplOjAuOTM4cmVtICFpbXBvcnRhbnQ7IH0gLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHR7IHBhZGRpbmc6OHB4IDEwcHghaW1wb3J0YW50OyB9IC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxpeyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgfSAudWktY29ybmVyLWFsbHsgYm9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50OyB9IC4tY29sbGFwc2V7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgfSAuLWxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgfSAuLW5vLXNoYWRvdywgLi1zaGFkb3cwLCAuLW5vc2hhZG93eyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9IC4tdW5kZXJsaW5leyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIWltcG9ydGFudDsgfSAuLXRvcDB7IHRvcDowOyB9IC4tdGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7fSAuLXRleHQtcmlnaHR7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnQ7fSAuLXRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudDt9IC4tdGV4dC1yZWQsIC4tcmVkLXRleHR7Y29sb3I6cmVkIWltcG9ydGFudDt9IC4tYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7fSAuLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7fSAuLW5vbmUsIC4taGlkZGVuLCAuLWhpZGRlIHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30gLi1pbmxpbmUge2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9IC4tY29sb3IxIHsgY29sb3I6IzU3NTc1NyFpbXBvcnRhbnQ7fSAuLXRpdGxlMSB7IGZvbnQtc2l6ZToxLjQzOHJlbSAhaW1wb3J0YW50OyBmb250LWNvbG9yOiMwNTE0MWYgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50OyB9IC4taW5wdXQgeyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxNXB4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGhlaWdodDozMnB4OyBjb2xvcjojNDA0MDQwOyBwYWRkaW5nOjBweCA2cHghaW1wb3J0YW50OyBtYXJnaW46MHB4OyBvdXRsaW5lOm5vbmU7IG1pbi1oZWlnaHQ6MjBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2VkNGRhOyBib3JkZXItcmFkaXVzOi4yNXJlbTsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7IH0gLi1pbnB1dDpmb2N1cywgLi1pbnB1dDpob3ZlcnsgYm9yZGVyLWNvbG9yOiM4MGJkZmYgIWltcG9ydGFudDsgYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiYSgwLDEyMywyNTUsLjI1KTsgfSAuLXBvc2l0aW9uLXN0YXRpYywgLi1wb3Mtc3RhdGljLCAuLXBvcy1zdGF0IHtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1hYnNvbHV0ZSwgLi1wb3MtYWJzb2x1dGUsIC4tcG9zLWFicyB7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1maXhlZCwgLi1wb3MtZml4ZWQsIC4tcG9zLWZpeCB7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1yZWxhdGl2ZSwgLi1wb3MtcmVsYXRpdmUsIC4tcG9zLXJlbCB7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O30gLi1wb3NpdGlvbi1pbmhlcml0LCAuLXBvcy1pbmhlcml0LCAuLXBvcy1pbmgge3Bvc2l0aW9uOmluaGVyaXQhaW1wb3J0YW50O30gLWxoLTEtMywgLWxpbmUtaGVpZ2h0LTEtM3sgbGluZS1oZWlnaHQ6MS4zOyB9IC1saC0yMHsgbGluZS1oZWlnaHQ6MjBweDsgfSAuLWVycm9yLCAuLWFsZXJ0LCAuLW5vdGljZSwgLi1zdWNjZXNzLCAuLWluZm8ge3BhZGRpbmc6MC44ZW07bWFyZ2luLWJvdHRvbToxZW07Ym9yZGVyOjJweCBzb2xpZCAjZGRkIWltcG9ydGFudDt9IC4tZXJyb3IsIC4tYWxlcnQge2JhY2tncm91bmQ6I2ZiZTNlNDtjb2xvcjojOGExZjExO2JvcmRlci1jb2xvcjojZmJjMmM0IWltcG9ydGFudDt9IC4tbm90aWNlIHtiYWNrZ3JvdW5kOiNmZmY2YmY7Y29sb3I6IzUxNDcyMTtib3JkZXItY29sb3I6I2ZmZDMyNCFpbXBvcnRhbnQ7fSAuLXN1Y2Nlc3Mge2JhY2tncm91bmQ6I2U2ZWZjMjtjb2xvcjojMjY0NDA5O2JvcmRlci1jb2xvcjojYzZkODgwIWltcG9ydGFudDt9IC4taW5mbyB7YmFja2dyb3VuZDojZDVlZGY4O2NvbG9yOiMyMDU3OTE7Ym9yZGVyLWNvbG9yOiM5MmNhZTQhaW1wb3J0YW50O30gLi1lcnJvciBhLCAuYWxlcnQgYSB7Y29sb3I6IzhhMWYxMSFpbXBvcnRhbnQ7fSAuLW5vdGljZSBhIHtjb2xvcjojNTE0NzIxIWltcG9ydGFudDt9IC4tc3VjY2VzcyBhIHtjb2xvcjojMjY0NDA5IWltcG9ydGFudDt9IC4taW5mbyBhIHtjb2xvcjojMjA1NzkxIWltcG9ydGFudDt9IC4tYm94IHtwYWRkaW5nOjEuNWVtO21hcmdpbi1ib3R0b206MS41ZW07YmFja2dyb3VuZDojZTVlQ2Y5IWltcG9ydGFudDt9IC1ociB7YmFja2dyb3VuZDojZGRkZGRkO2NvbG9yOiNkZGRkZGQ7Y2xlYXI6Ym90aDtmbG9hdDpub25lO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDttYXJnaW46MCAwIDE3cHg7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O30gLXNwYWNlIHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6I2ZmZjt2aXNpYmlsaXR5OmhpZGRlbjtjbGVhcjpib3RoO2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O21hcmdpbjowIDAgMTdweDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7fSAuLWNsZWFyZml4OmFmdGVyIHtjb250ZW50OiJcMDAyMCI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtjbGVhcjpib3RoO3Zpc2liaWxpdHk6aGlkZGVuO292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fSAuLWNsZWFyZml4e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O30gLi1jbGVhciB7Y2xlYXI6Ym90aCFpbXBvcnRhbnQ7fSAuaW52aXNpYmxlIHt2aXNpYmlsaXR5OmhpZGRlbjt9IC5jbGVhcmZpeDphZnRlciB7Y29udGVudDoiIjsgZGlzcGxheTp0YWJsZTsgY2xlYXI6Ym90aDt9IC4tb3ZlcmZsb3ctaGlkZGVuIHtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O30gLi13NSB7d2lkdGg6NXB4IWltcG9ydGFudDt9IC4tdzEwIHt3aWR0aDoxMHB4IWltcG9ydGFudDt9IC4tdzE1IHt3aWR0aDoxNXB4IWltcG9ydGFudDt9IC4tdzE4IHt3aWR0aDoxOHB4IWltcG9ydGFudDt9IC4tdzIwIHt3aWR0aDoyMHB4IWltcG9ydGFudDt9IC4tdzI1IHt3aWR0aDoyNXB4IWltcG9ydGFudDt9IC4tdzMwIHt3aWR0aDozMHB4IWltcG9ydGFudDt9IC4tdzM1IHt3aWR0aDozNXB4IWltcG9ydGFudDt9IC4tdzQwIHt3aWR0aDo0MHB4IWltcG9ydGFudDt9IC4tdzQ1IHt3aWR0aDo0NXB4IWltcG9ydGFudDt9IC4tdzUwIHt3aWR0aDo1MHB4IWltcG9ydGFudDt9IC4tdzU1IHt3aWR0aDo1NXB4IWltcG9ydGFudDt9IC4tdzYwIHt3aWR0aDo2MHB4IWltcG9ydGFudDt9IC4tdzY1IHt3aWR0aDo2NXB4IWltcG9ydGFudDt9IC4tdzcwIHt3aWR0aDo3MHB4IWltcG9ydGFudDt9IC4tdzczIHt3aWR0aDo3M3B4IWltcG9ydGFudDt9IC4tdzc1IHt3aWR0aDo3NXB4IWltcG9ydGFudDt9IC4tdzgwIHt3aWR0aDo4MHB4IWltcG9ydGFudDt9IC4tdzg1IHt3aWR0aDo4NXB4IWltcG9ydGFudDt9IC4tdzg4IHt3aWR0aDo4OHB4IWltcG9ydGFudDt9IC4tdzkwIHt3aWR0aDo5MHB4IWltcG9ydGFudDt9IC4tdzk1IHt3aWR0aDo5NXB4IWltcG9ydGFudDt9IC4tdzEwMCB7d2lkdGg6MTAwcHghaW1wb3J0YW50O30gLi13MTEwIHt3aWR0aDoxMTBweCFpbXBvcnRhbnQ7fSAuLXcxMjAge3dpZHRoOjEyMHB4IWltcG9ydGFudDt9IC4tdzEyNSB7d2lkdGg6MTI1cHghaW1wb3J0YW50O30gLi13MTMwIHt3aWR0aDoxMzBweCFpbXBvcnRhbnQ7fSAuLXcxMzUge3dpZHRoOjEzNXB4IWltcG9ydGFudDt9IC4tdzE0MCB7d2lkdGg6MTQwcHghaW1wb3J0YW50O30gLi13MTQzIHt3aWR0aDoxNDNweCFpbXBvcnRhbnQ7fSAuLXcxNDUge3dpZHRoOjE0NXB4IWltcG9ydGFudDt9IC4tdzE1MCB7d2lkdGg6MTUwcHghaW1wb3J0YW50O30gLi13MTcwIHt3aWR0aDoxODBweCFpbXBvcnRhbnQ7fSAuLXcxODAge3dpZHRoOjE4MHB4IWltcG9ydGFudDt9IC4tdzE4NSB7d2lkdGg6MTg1cHghaW1wb3J0YW50O30gLi13MTkwIHt3aWR0aDoxOTBweCFpbXBvcnRhbnQ7fSAuLXcyMDAge3dpZHRoOjIwMHB4IWltcG9ydGFudDt9IC4tdzIxMCB7d2lkdGg6MjEwcHghaW1wb3J0YW50O30gLi13MjE1IHt3aWR0aDoyMTVweCFpbXBvcnRhbnQ7fSAuLXcyMjAge3dpZHRoOjIyMHB4IWltcG9ydGFudDt9IC4tdzIzMCB7d2lkdGg6MjMwcHghaW1wb3J0YW50O30gLi13MjQwIHt3aWR0aDoyNDBweCFpbXBvcnRhbnQ7fSAuLXcyNTAge3dpZHRoOjI1MHB4IWltcG9ydGFudDt9IC4tdzI1NSB7d2lkdGg6MjU1cHghaW1wb3J0YW50O30gLi13MjYwIHt3aWR0aDoyNjBweCFpbXBvcnRhbnQ7fSAuLXcyNzAge3dpZHRoOjI3MHB4IWltcG9ydGFudDt9IC4tdzI3NSB7d2lkdGg6Mjc1cHghaW1wb3J0YW50O30gLi13MjgwIHt3aWR0aDoyODBweCFpbXBvcnRhbnQ7fSAuLXcyOTAge3dpZHRoOjI5MHB4IWltcG9ydGFudDt9IC4tdzMwMCB7d2lkdGg6MzAwcHghaW1wb3J0YW50O30gLi13MzE1IHt3aWR0aDozMTVweCFpbXBvcnRhbnQ7fSAuLXczMjAge3dpZHRoOjMyMHB4IWltcG9ydGFudDt9IC4tdzMyNSB7d2lkdGg6MzI1cHghaW1wb3J0YW50O30gLi13MzUwIHt3aWR0aDozNTBweCFpbXBvcnRhbnQ7fSAuLXc0MDAge3dpZHRoOjQwMHB4IWltcG9ydGFudDt9IC4tdzQ1MCB7d2lkdGg6NDUwcHghaW1wb3J0YW50O30gLi13NDYwIHt3aWR0aDo0NTBweCFpbXBvcnRhbnQ7fSAuLXc1MDAge3dpZHRoOjUwMHB4IWltcG9ydGFudDt9IC4tdzYzMCB7d2lkdGg6NjMwcHghaW1wb3J0YW50O30gLi13NjIwIHt3aWR0aDo2MjBweCFpbXBvcnRhbnQ7fSAuLXc2MjUge3dpZHRoOjYyNXB4IWltcG9ydGFudDt9IC4tdzY3NSB7d2lkdGg6Njc1cHghaW1wb3J0YW50O30gLi13NjgwIHt3aWR0aDo2ODBweCFpbXBvcnRhbnQ7fSAuLXc2NzAge3dpZHRoOjY3MHB4IWltcG9ydGFudDt9IC4tdzcwMCB7d2lkdGg6NzAwcHghaW1wb3J0YW50O30gLi13NzIwIHt3aWR0aDo3MjBweCFpbXBvcnRhbnQ7fSAuLXc3MjUge3dpZHRoOjcyNXB4IWltcG9ydGFudDt9IC4tdzczMCB7d2lkdGg6NzMwcHghaW1wb3J0YW50O30gLi13NzUwIHt3aWR0aDo3NTBweCFpbXBvcnRhbnQ7fSAuLXc4MDAge3dpZHRoOjgwMHB4IWltcG9ydGFudDt9IC4tdzkwMCB7d2lkdGg6OTAwcHghaW1wb3J0YW50O30gLi13OTM3IHt3aWR0aDo5MzdweCFpbXBvcnRhbnQ7fSAuLXc5NDAge3dpZHRoOjk0MHB4IWltcG9ydGFudDt9IC4tdzk2MCB7d2lkdGg6OTYwcHghaW1wb3J0YW50O30gLi13OTcwIHt3aWR0aDo5NzBweCFpbXBvcnRhbnQ7fSAuLXcxMDAwIHt3aWR0aDoxMDAwcHghaW1wb3J0YW50O30gLi13NXAge3dpZHRoOjUlIWltcG9ydGFudDt9IC4tdzEwcCB7d2lkdGg6MTAlIWltcG9ydGFudDt9IC4tdzE1cCB7d2lkdGg6MjAlIWltcG9ydGFudDt9IC4tdzIwcCB7d2lkdGg6MjAlIWltcG9ydGFudDt9IC4td3EsIC4tdzI1cCB7d2lkdGg6MjUlIWltcG9ydGFudDt9IC4tdzMwcCB7d2lkdGg6MzAlIWltcG9ydGFudDt9IC4tdzM1cCB7d2lkdGg6MzUlIWltcG9ydGFudDt9IC4tdzQwcCB7d2lkdGg6NDAlIWltcG9ydGFudDt9IC4tdzQ1cCB7d2lkdGg6NDUlIWltcG9ydGFudDt9IC4td2gsLi13NTBwIHt3aWR0aDo1MCUhaW1wb3J0YW50O30gLi13NTVwIHt3aWR0aDo1NSUhaW1wb3J0YW50O30gLi13NjBwIHt3aWR0aDo2MCUhaW1wb3J0YW50O30gLi13NjVwIHt3aWR0aDo2NSUhaW1wb3J0YW50O30gLi13NzBwIHt3aWR0aDo3MCUhaW1wb3J0YW50O30gLi13NzVwIHt3aWR0aDo3NSUhaW1wb3J0YW50O30gLi13ODBwIHt3aWR0aDo4MCUhaW1wb3J0YW50O30gLi13ODVwIHt3aWR0aDo4NSUhaW1wb3J0YW50O30gLi13OTBwIHt3aWR0aDo5MCUhaW1wb3J0YW50O30gLi13OTVwIHt3aWR0aDo5NSUhaW1wb3J0YW50O30gLi13ZiwuLXcxMDBwIHt3aWR0aDoxMDAlIWltcG9ydGFudDt9IC4tbWF4LXctbm9uZSB7bWF4LXdpZHRoOm5vbmUhaW1wb3J0YW50O30gLi1oNSB7aGVpZ2h0OjVweCFpbXBvcnRhbnQ7fSAuLWg2IHtoZWlnaHQ6NnB4IWltcG9ydGFudDt9IC4taDcge2hlaWdodDo3cHghaW1wb3J0YW50O30gLi1oOCB7aGVpZ2h0OjhweCFpbXBvcnRhbnQ7fSAuLWg5IHtoZWlnaHQ6OXB4IWltcG9ydGFudDt9IC4taDEwIHtoZWlnaHQ6MTBweCFpbXBvcnRhbnQ7fSAuLWgxMSB7aGVpZ2h0OjExcHghaW1wb3J0YW50O30gLi1oMTIge2hlaWdodDoxMnB4IWltcG9ydGFudDt9IC4taDEzIHtoZWlnaHQ6MTNweCFpbXBvcnRhbnQ7fSAuLWgxNCB7aGVpZ2h0OjE0cHghaW1wb3J0YW50O30gLi1oMTUge2hlaWdodDoxNXB4IWltcG9ydGFudDt9IC4taDIwIHtoZWlnaHQ6MjBweCFpbXBvcnRhbnQ7fSAuLWgyNSB7aGVpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1oMzAge2hlaWdodDozMHB4IWltcG9ydGFudDt9IC4taDMyIHtoZWlnaHQ6MzJweCFpbXBvcnRhbnQ7fSAuLWgzNSB7aGVpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1oNDAge2hlaWdodDo0MHB4IWltcG9ydGFudDt9IC4taDQ1IHtoZWlnaHQ6NDVweCFpbXBvcnRhbnQ7fSAuLWg1MCB7aGVpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1oNTUge2hlaWdodDo1NXB4IWltcG9ydGFudDt9IC4taDYwIHtoZWlnaHQ6NjBweCFpbXBvcnRhbnQ7fSAuLWg2NSB7aGVpZ2h0OjY1cHghaW1wb3J0YW50O30gLi1oNzAge2hlaWdodDo3MHB4IWltcG9ydGFudDt9IC4taDc1IHtoZWlnaHQ6NzVweCFpbXBvcnRhbnQ7fSAuLWg4MCB7aGVpZ2h0OjgwcHghaW1wb3J0YW50O30gLi1oODUge2hlaWdodDo4NXB4IWltcG9ydGFudDt9IC4taDkwIHtoZWlnaHQ6OTBweCFpbXBvcnRhbnQ7fSAuLWg5NSB7aGVpZ2h0Ojk1cHghaW1wb3J0YW50O30gLi1oMTAwIHtoZWlnaHQ6MTAwcHghaW1wb3J0YW50O30gLi1oMTEwIHtoZWlnaHQ6MTEwcHghaW1wb3J0YW50O30gLi1oMTIwIHtoZWlnaHQ6MTIwcHghaW1wb3J0YW50O30gLi1oMTMwIHtoZWlnaHQ6MTMwcHghaW1wb3J0YW50O30gLi1oMTQwIHtoZWlnaHQ6MTQwcHghaW1wb3J0YW50O30gLi1oMTUwIHtoZWlnaHQ6MTUwcHghaW1wb3J0YW50O30gLi1oMTYwIHtoZWlnaHQ6MTYwcHghaW1wb3J0YW50O30gLi1oMTcwIHtoZWlnaHQ6MTcwcHghaW1wb3J0YW50O30gLi1oMTgwIHtoZWlnaHQ6MTgwcHghaW1wb3J0YW50O30gLi1oMTkwIHtoZWlnaHQ6MTkwcHghaW1wb3J0YW50O30gLi1oMjAwIHtoZWlnaHQ6MjAwcHghaW1wb3J0YW50O30gLi1oMjIwIHtoZWlnaHQ6MjIwcHghaW1wb3J0YW50O30gLi1oMjMwIHtoZWlnaHQ6MjMwcHghaW1wb3J0YW50O30gLi1oMjQwIHtoZWlnaHQ6MjQwcHghaW1wb3J0YW50O30gLi1oMjQ1IHtoZWlnaHQ6MjQ1cHghaW1wb3J0YW50O30gLi1oMjQ4IHtoZWlnaHQ6MjQ4cHghaW1wb3J0YW50O30gLi1oMjUwIHtoZWlnaHQ6MjUwcHghaW1wb3J0YW50O30gLi1oMjU1IHtoZWlnaHQ6MjU1cHghaW1wb3J0YW50O30gLi1oMjYwIHtoZWlnaHQ6MjYwcHghaW1wb3J0YW50O30gLi1oMzAwIHtoZWlnaHQ6MzAwcHghaW1wb3J0YW50O30gLi1oMzUwIHtoZWlnaHQ6MzUwcHghaW1wb3J0YW50O30gLi1oNDAwIHtoZWlnaHQ6NDAwcHghaW1wb3J0YW50O30gLi1oNDUwIHtoZWlnaHQ6NDUwcHghaW1wb3J0YW50O30gLi1oNTAwIHtoZWlnaHQ6NTAwcHghaW1wb3J0YW50O30gLi1oNTUwIHtoZWlnaHQ6NTUwcHghaW1wb3J0YW50O30gLi1oNjAwIHtoZWlnaHQ6NjAwcHghaW1wb3J0YW50O30gLi1oNjUwIHtoZWlnaHQ6NjUwcHghaW1wb3J0YW50O30gLi1oNzAwIHtoZWlnaHQ6NzAwcHghaW1wb3J0YW50O30gLi1oNzUwIHtoZWlnaHQ6NzUwcHghaW1wb3J0YW50O30gLi1oODAwIHtoZWlnaHQ6ODAwcHghaW1wb3J0YW50O30gLi1oOTAwIHtoZWlnaHQ6OTAwcHghaW1wb3J0YW50O30gLi1oMTAwMCB7aGVpZ2h0OjEwMDBweCFpbXBvcnRhbnQ7fSAuLWg1cCB7aGVpZ2h0OjUlIWltcG9ydGFudDt9IC4taDEwcCB7aGVpZ2h0OjEwJSFpbXBvcnRhbnQ7fSAuLWgxNXAge2hlaWdodDoxNSUhaW1wb3J0YW50O30gLi1oMjBwIHtoZWlnaHQ6MjAlIWltcG9ydGFudDt9IC4taHEsIC4taDI1cCB7aGVpZ2h0OjI1JSFpbXBvcnRhbnQ7fSAuLWhoLC4taDUwcCB7aGVpZ2h0OjUwJSFpbXBvcnRhbnQ7fSAuLWhmLC4taDEwMHAge2hlaWdodDoxMDAlIWltcG9ydGFudDt9IC4tYm94LXMtYnsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLi1ib3gtY29udGVudHsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAuLWZsZXh7ZGlzcGxheTpmbGV4O30gLi1mbGV4LWNvbHVtbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO30gLi1haS1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyO30gLi1wMCwuLW5vcGFkZGluZywuLW5vcGFkZGluZ3Mge3BhZGRpbmc6MDt9IC4tcDEge3BhZGRpbmc6MXB4IWltcG9ydGFudDt9IC4tcDIge3BhZGRpbmc6MnB4IWltcG9ydGFudDt9IC4tcDMge3BhZGRpbmc6M3B4IWltcG9ydGFudDt9IC4tcDQge3BhZGRpbmc6NHB4IWltcG9ydGFudDt9IC4tcDUge3BhZGRpbmc6NXB4IWltcG9ydGFudDt9IC4tcDYge3BhZGRpbmc6NnB4IWltcG9ydGFudDt9IC4tcDcge3BhZGRpbmc6N3B4IWltcG9ydGFudDt9IC4tcDgge3BhZGRpbmc6OHB4IWltcG9ydGFudDt9IC4tcDkge3BhZGRpbmc6OXB4IWltcG9ydGFudDt9IC4tcDEwIHtwYWRkaW5nOjEwcHghaW1wb3J0YW50O30gLi1wMTUge3BhZGRpbmc6MTVweCFpbXBvcnRhbnQ7fSAuLXAyMCB7cGFkZGluZzoyMHB4IWltcG9ydGFudDt9IC4tcDI1IHtwYWRkaW5nOjI1cHghaW1wb3J0YW50O30gLi1wMzAge3BhZGRpbmc6MzBweCFpbXBvcnRhbnQ7fSAuLXAzNSB7cGFkZGluZzozNXB4IWltcG9ydGFudDt9IC4tcDQwIHtwYWRkaW5nOjQwcHghaW1wb3J0YW50O30gLi1wNDUge3BhZGRpbmc6NDVweCFpbXBvcnRhbnQ7fSAuLXA1MCB7cGFkZGluZzo1MHB4IWltcG9ydGFudDt9IC4tcGwwIHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7fSAuLXBsMSB7cGFkZGluZy1sZWZ0OjFweCFpbXBvcnRhbnQ7fSAuLXBsMiB7cGFkZGluZy1sZWZ0OjJweCFpbXBvcnRhbnQ7fSAuLXBsMyB7cGFkZGluZy1sZWZ0OjNweCFpbXBvcnRhbnQ7fSAuLXBsNCB7cGFkZGluZy1sZWZ0OjRweCFpbXBvcnRhbnQ7fSAuLXBsNSB7cGFkZGluZy1sZWZ0OjVweCFpbXBvcnRhbnQ7fSAuLXBsNiB7cGFkZGluZy1sZWZ0OjZweCFpbXBvcnRhbnQ7fSAuLXBsNyB7cGFkZGluZy1sZWZ0OjdweCFpbXBvcnRhbnQ7fSAuLXBsOCB7cGFkZGluZy1sZWZ0OjhweCFpbXBvcnRhbnQ7fSAuLXBsOSB7cGFkZGluZy1sZWZ0OjlweCFpbXBvcnRhbnQ7fSAuLXBsMTAge3BhZGRpbmctbGVmdDoxMHB4IWltcG9ydGFudDt9IC4tcGwxNSB7cGFkZGluZy1sZWZ0OjE1cHghaW1wb3J0YW50O30gLi1wbDE2IHtwYWRkaW5nLWxlZnQ6MTZweCFpbXBvcnRhbnQ7fSAuLXBsMTcge3BhZGRpbmctbGVmdDoxN3B4IWltcG9ydGFudDt9IC4tcGwyMCB7cGFkZGluZy1sZWZ0OjIwcHghaW1wb3J0YW50O30gLi1wbDI1IHtwYWRkaW5nLWxlZnQ6MjVweCFpbXBvcnRhbnQ7fSAuLXBsMzAge3BhZGRpbmctbGVmdDozMHB4IWltcG9ydGFudDt9IC4tcGwzNSB7cGFkZGluZy1sZWZ0OjM1cHghaW1wb3J0YW50O30gLi1wbDQwIHtwYWRkaW5nLWxlZnQ6NDBweCFpbXBvcnRhbnQ7fSAuLXBsNDUge3BhZGRpbmctbGVmdDo0NXB4IWltcG9ydGFudDt9IC4tcGw1MCB7cGFkZGluZy1sZWZ0OjUwcHghaW1wb3J0YW50O30gLi1wbDU1IHtwYWRkaW5nLWxlZnQ6NTVweCFpbXBvcnRhbnQ7fSAuLXByMCB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDt9IC4tcHIxIHtwYWRkaW5nLXJpZ2h0OjFweCFpbXBvcnRhbnQ7fSAuLXByMiB7cGFkZGluZy1yaWdodDoycHghaW1wb3J0YW50O30gLi1wcjMge3BhZGRpbmctcmlnaHQ6M3B4IWltcG9ydGFudDt9IC4tcHI0IHtwYWRkaW5nLXJpZ2h0OjRweCFpbXBvcnRhbnQ7fSAuLXByNSB7cGFkZGluZy1yaWdodDo1cHghaW1wb3J0YW50O30gLi1wcjYge3BhZGRpbmctcmlnaHQ6NnB4IWltcG9ydGFudDt9IC4tcHI3IHtwYWRkaW5nLXJpZ2h0OjdweCFpbXBvcnRhbnQ7fSAuLXByOCB7cGFkZGluZy1yaWdodDo4cHghaW1wb3J0YW50O30gLi1wcjkge3BhZGRpbmctcmlnaHQ6OXB4IWltcG9ydGFudDt9IC4tcHIxMCB7cGFkZGluZy1yaWdodDoxMHB4IWltcG9ydGFudDt9IC4tcHIxNSB7cGFkZGluZy1yaWdodDoxNXB4IWltcG9ydGFudDt9IC4tcHIyMCB7cGFkZGluZy1yaWdodDoyMHB4IWltcG9ydGFudDt9IC4tcHIyNSB7cGFkZGluZy1yaWdodDoyNXB4IWltcG9ydGFudDt9IC4tcHIzMCB7cGFkZGluZy1yaWdodDozMHB4IWltcG9ydGFudDt9IC4tcHIzNSB7cGFkZGluZy1yaWdodDozNXB4IWltcG9ydGFudDt9IC4tcHI0MCB7cGFkZGluZy1yaWdodDo0MHB4IWltcG9ydGFudDt9IC4tcHI0NSB7cGFkZGluZy1yaWdodDo0NXB4IWltcG9ydGFudDt9IC4tcHI1MCB7cGFkZGluZy1yaWdodDo1MHB4IWltcG9ydGFudDt9IC4tcHI1NSB7cGFkZGluZy1yaWdodDo1NXB4IWltcG9ydGFudDt9IC4tcHQwe3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30gLi1wdDEge3BhZGRpbmctdG9wOjFweCFpbXBvcnRhbnQ7fSAuLXB0MiB7cGFkZGluZy10b3A6MnB4IWltcG9ydGFudDt9IC4tcHQzIHtwYWRkaW5nLXRvcDozcHghaW1wb3J0YW50O30gLi1wdDQge3BhZGRpbmctdG9wOjRweCFpbXBvcnRhbnQ7fSAuLXB0NSB7cGFkZGluZy10b3A6NXB4IWltcG9ydGFudDt9IC4tcHQ2IHtwYWRkaW5nLXRvcDo2cHghaW1wb3J0YW50O30gLi1wdDcge3BhZGRpbmctdG9wOjdweCFpbXBvcnRhbnQ7fSAuLXB0OCB7cGFkZGluZy10b3A6OHB4IWltcG9ydGFudDt9IC4tcHQ5IHtwYWRkaW5nLXRvcDo5cHghaW1wb3J0YW50O30gLi1wdDEwIHtwYWRkaW5nLXRvcDoxMHB4IWltcG9ydGFudDt9IC4tcHQxNSB7cGFkZGluZy10b3A6MTVweCFpbXBvcnRhbnQ7fSAuLXB0MjAge3BhZGRpbmctdG9wOjIwcHghaW1wb3J0YW50O30gLi1wdDI1IHtwYWRkaW5nLXRvcDoyNXB4IWltcG9ydGFudDt9IC4tcHQzMCB7cGFkZGluZy10b3A6MzBweCFpbXBvcnRhbnQ7fSAuLXB0MzUge3BhZGRpbmctdG9wOjM1cHghaW1wb3J0YW50O30gLi1wdDQwIHtwYWRkaW5nLXRvcDo0MHB4IWltcG9ydGFudDt9IC4tcHQ0NSB7cGFkZGluZy10b3A6NDVweCFpbXBvcnRhbnQ7fSAuLXB0NTAge3BhZGRpbmctdG9wOjUwcHghaW1wb3J0YW50O30gLi1wdDU1IHtwYWRkaW5nLXRvcDo1NXB4IWltcG9ydGFudDt9IC4tcHQyMDAge3BhZGRpbmctdG9wOjIwMHB4IWltcG9ydGFudDt9IC4tcGIwIHtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudDt9IC4tcGIxIHtwYWRkaW5nLWJvdHRvbToxcHghaW1wb3J0YW50O30gLi1wYjIge3BhZGRpbmctYm90dG9tOjJweCFpbXBvcnRhbnQ7fSAuLXBiMyB7cGFkZGluZy1ib3R0b206M3B4IWltcG9ydGFudDt9IC4tcGI0IHtwYWRkaW5nLWJvdHRvbTo0cHghaW1wb3J0YW50O30gLi1wYjUge3BhZGRpbmctYm90dG9tOjVweCFpbXBvcnRhbnQ7fSAuLXBiNiB7cGFkZGluZy1ib3R0b206NnB4IWltcG9ydGFudDt9IC4tcGI3IHtwYWRkaW5nLWJvdHRvbTo3cHghaW1wb3J0YW50O30gLi1wYjgge3BhZGRpbmctYm90dG9tOjhweCFpbXBvcnRhbnQ7fSAuLXBiOSB7cGFkZGluZy1ib3R0b206OXB4IWltcG9ydGFudDt9IC4tcGIxMCB7cGFkZGluZy1ib3R0b206MTBweCFpbXBvcnRhbnQ7fSAuLXBiMTUge3BhZGRpbmctYm90dG9tOjE1cHghaW1wb3J0YW50O30gLi1wYjIwIHtwYWRkaW5nLWJvdHRvbToyMHB4IWltcG9ydGFudDt9IC4tcGIyNSB7cGFkZGluZy1ib3R0b206MjVweCFpbXBvcnRhbnQ7fSAuLXBiMzAge3BhZGRpbmctYm90dG9tOjMwcHghaW1wb3J0YW50O30gLi1wYjQwIHtwYWRkaW5nLWJvdHRvbTo0MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMCwtcmFkaXVzMCwtcmFkMCB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMxLC1yYWRpdXMxLC1yYWQxIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czIsLXJhZGl1czIsLXJhZDIge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMywtcmFkaXVzMywtcmFkMyB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM0LC1yYWRpdXM0LC1yYWQ0IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czUsLXJhZGl1czUsLXJhZDUge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzNiwtcmFkaXVzNiwtcmFkNiB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM3LC1yYWRpdXM3LC1yYWQ3IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czgsLXJhZGl1czgsLXJhZDgge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzOSwtcmFkaXVzOSwtcmFkOSB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMxMCwtcmFkaXVzMTAsLXJhZDEwIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAuLW1hdXRvIHttYXJnaW46YXV0byFpbXBvcnRhbnQ7fSAuLW0wIC4tbm9tYXJnaW5zLC4tbm9tYXJnaW57bWFyZ2luOjAhaW1wb3J0YW50O30gLi1tMSB7bWFyZ2luOjFweCFpbXBvcnRhbnQ7fSAuLW0yIHttYXJnaW46MnB4IWltcG9ydGFudDt9IC4tbTMge21hcmdpbjozcHghaW1wb3J0YW50O30gLi1tNCB7bWFyZ2luOjRweCFpbXBvcnRhbnQ7fSAuLW01IHttYXJnaW46NXB4IWltcG9ydGFudDt9IC4tbTYge21hcmdpbjo2cHghaW1wb3J0YW50O30gLi1tNyB7bWFyZ2luOjdweCFpbXBvcnRhbnQ7fSAuLW04IHttYXJnaW46OHB4IWltcG9ydGFudDt9IC4tbTkge21hcmdpbjo5cHghaW1wb3J0YW50O30gLi1tMTAge21hcmdpbjoxMHB4IWltcG9ydGFudDt9IC4tbTE1IHttYXJnaW46MTVweCFpbXBvcnRhbnQ7fSAuLW0yMCB7bWFyZ2luOjIwcHghaW1wb3J0YW50O30gLi1tMjIge21hcmdpbjoyMnB4IWltcG9ydGFudDt9IC4tbTI1IHttYXJnaW46MjVweCFpbXBvcnRhbnQ7fSAuLW01cCB7bWFyZ2luOjUlIWltcG9ydGFudDt9IC4tbTEwcCB7bWFyZ2luOjEwJSFpbXBvcnRhbnQ7fSAuLW0xNXAge21hcmdpbjoxNSUhaW1wb3J0YW50O30gLi1tMjBwIHttYXJnaW46MjAlIWltcG9ydGFudDt9IC4tbTI1cCB7bWFyZ2luOjI1JSFpbXBvcnRhbnQ7fSAuLW1sYXV0byB7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7fSAuLW1sMCB7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnQ7fSAuLW1sMSB7bWFyZ2luLWxlZnQ6MXB4IWltcG9ydGFudDt9IC4tbWwyIHttYXJnaW4tbGVmdDoycHghaW1wb3J0YW50O30gLi1tbDMge21hcmdpbi1sZWZ0OjNweCFpbXBvcnRhbnQ7fSAuLW1sNCB7bWFyZ2luLWxlZnQ6NHB4IWltcG9ydGFudDt9IC4tbWw1IHttYXJnaW4tbGVmdDo1cHghaW1wb3J0YW50O30gLi1tbDYge21hcmdpbi1sZWZ0OjZweCFpbXBvcnRhbnQ7fSAuLW1sNyB7bWFyZ2luLWxlZnQ6N3B4IWltcG9ydGFudDt9IC4tbWw4IHttYXJnaW4tbGVmdDo4cHghaW1wb3J0YW50O30gLi1tbDkge21hcmdpbi1sZWZ0OjlweCFpbXBvcnRhbnQ7fSAuLW1sMTAge21hcmdpbi1sZWZ0OjEwcHghaW1wb3J0YW50O30gLi1tbDE1IHttYXJnaW4tbGVmdDoxNXB4IWltcG9ydGFudDt9IC4tbWwyMCB7bWFyZ2luLWxlZnQ6MjBweCFpbXBvcnRhbnQ7fSAuLW1sMjUge21hcmdpbi1sZWZ0OjI1cHghaW1wb3J0YW50O30gLi1tbDI3IHttYXJnaW4tbGVmdDoyN3B4IWltcG9ydGFudDt9IC4tbWwzMCB7bWFyZ2luLWxlZnQ6MzBweCFpbXBvcnRhbnQ7fSAuLW1sNTAge21hcmdpbi1sZWZ0OjUwcHghaW1wb3J0YW50O30gLi1tbDgwIHttYXJnaW4tbGVmdDo4MHB4IWltcG9ydGFudDt9IC4tbWwxMDAge21hcmdpbi1sZWZ0OjEwMHB4IWltcG9ydGFudDt9IC4tbWwxMzAge21hcmdpbi1sZWZ0OjEzMHB4IWltcG9ydGFudDt9IC4tbWwxNTAge21hcmdpbi1sZWZ0OjE1MHB4IWltcG9ydGFudDt9IC4tbWwycCB7bWFyZ2luLWxlZnQ6MiUhaW1wb3J0YW50O30gLi1tbDNwIHttYXJnaW4tbGVmdDozJSFpbXBvcnRhbnQ7fSAuLW1sNXAge21hcmdpbi1sZWZ0OjUlIWltcG9ydGFudDt9IC4tbWwxMHAge21hcmdpbi1sZWZ0OjEwJSFpbXBvcnRhbnQ7fSAuLW1sMTVwIHttYXJnaW4tbGVmdDoxNSUhaW1wb3J0YW50O30gLi1tbDIwcCB7bWFyZ2luLWxlZnQ6MjAlIWltcG9ydGFudDt9IC4tbWwyNXAge21hcmdpbi1sZWZ0OjI1JSFpbXBvcnRhbnQ7fSAuLW1yYXV0byB7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O30gLi1tcjAge21hcmdpbi1yaWdodDowIWltcG9ydGFudDt9IC4tbXIxIHttYXJnaW4tcmlnaHQ6MXB4IWltcG9ydGFudDt9IC4tbXIyIHttYXJnaW4tcmlnaHQ6MnB4IWltcG9ydGFudDt9IC4tbXIzIHttYXJnaW4tcmlnaHQ6M3B4IWltcG9ydGFudDt9IC4tbXI0IHttYXJnaW4tcmlnaHQ6NHB4IWltcG9ydGFudDt9IC4tbXI1IHttYXJnaW4tcmlnaHQ6NXB4IWltcG9ydGFudDt9IC4tbXI2IHttYXJnaW4tcmlnaHQ6NnB4IWltcG9ydGFudDt9IC4tbXI3IHttYXJnaW4tcmlnaHQ6N3B4IWltcG9ydGFudDt9IC4tbXI4IHttYXJnaW4tcmlnaHQ6OHB4IWltcG9ydGFudDt9IC4tbXI5IHttYXJnaW4tcmlnaHQ6OXB4IWltcG9ydGFudDt9IC4tbXIxMCB7bWFyZ2luLXJpZ2h0OjEwcHghaW1wb3J0YW50O30gLi1tcjE1IHttYXJnaW4tcmlnaHQ6MTVweCFpbXBvcnRhbnQ7fSAuLW1yMjAge21hcmdpbi1yaWdodDoyMHB4IWltcG9ydGFudDt9IC4tbXIyNSB7bWFyZ2luLXJpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1tcjMwIHttYXJnaW4tcmlnaHQ6MzBweCFpbXBvcnRhbnQ7fSAuLW1yMzUge21hcmdpbi1yaWdodDozNXB4IWltcG9ydGFudDt9IC4tbXI0MCB7bWFyZ2luLXJpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1tcjQ1IHttYXJnaW4tcmlnaHQ6NDVweCFpbXBvcnRhbnQ7fSAuLW1yNTAge21hcmdpbi1yaWdodDo1MHB4IWltcG9ydGFudDt9IC4tbXIxMDAge21hcmdpbi1yaWdodDoxMDBweCFpbXBvcnRhbnQ7fSAuLW1yMnAge21hcmdpbi1yaWdodDoyJSFpbXBvcnRhbnQ7fSAuLW1yM3Age21hcmdpbi1yaWdodDozJSFpbXBvcnRhbnQ7fSAuLW1yNXAge21hcmdpbi1yaWdodDo1JSFpbXBvcnRhbnQ7fSAuLW1yMTBwIHttYXJnaW4tcmlnaHQ6MTAlIWltcG9ydGFudDt9IC4tbXIxNXAge21hcmdpbi1yaWdodDoxNSUhaW1wb3J0YW50O30gLi1tcjIwcCB7bWFyZ2luLXJpZ2h0OjIwJSFpbXBvcnRhbnQ7fSAuLW1yMjVwIHttYXJnaW4tcmlnaHQ6MjUlIWltcG9ydGFudDt9IC4tbXRhdXRvIHttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O30gLi1tdC03e21hcmdpbi10b3A6LTdweCFpbXBvcnRhbnQ7fSAuLW10MHttYXJnaW4tdG9wOjAhaW1wb3J0YW50O30gLi1tdDEge21hcmdpbi10b3A6MXB4IWltcG9ydGFudDt9IC4tbXQyIHttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnQ7fSAuLW10MyB7bWFyZ2luLXRvcDozcHghaW1wb3J0YW50O30gLi1tdDQge21hcmdpbi10b3A6NHB4IWltcG9ydGFudDt9IC4tbXQ1IHttYXJnaW4tdG9wOjVweCFpbXBvcnRhbnQ7fSAuLW10NiB7bWFyZ2luLXRvcDo2cHghaW1wb3J0YW50O30gLi1tdDcge21hcmdpbi10b3A6N3B4IWltcG9ydGFudDt9IC4tbXQ4IHttYXJnaW4tdG9wOjhweCFpbXBvcnRhbnQ7fSAuLW10OSB7bWFyZ2luLXRvcDo5cHghaW1wb3J0YW50O30gLi1tdDEwIHttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50O30gLi1tdDExIHttYXJnaW4tdG9wOjExcHghaW1wb3J0YW50O30gLi1tdDEyIHttYXJnaW4tdG9wOjEycHghaW1wb3J0YW50O30gLi1tdDEzIHttYXJnaW4tdG9wOjEzcHghaW1wb3J0YW50O30gLi1tdDE0IHttYXJnaW4tdG9wOjE0cHghaW1wb3J0YW50O30gLi1tdDE1IHttYXJnaW4tdG9wOjE1cHghaW1wb3J0YW50O30gLi1tdDIwIHttYXJnaW4tdG9wOjIwcHghaW1wb3J0YW50O30gLi1tdDI1IHttYXJnaW4tdG9wOjI1cHghaW1wb3J0YW50O30gLi1tdDI3IHttYXJnaW4tdG9wOjI3cHghaW1wb3J0YW50O30gLi1tdDMwIHttYXJnaW4tdG9wOjMwcHghaW1wb3J0YW50O30gLi1tdDM1IHttYXJnaW4tdG9wOjM1cHghaW1wb3J0YW50O30gLi1tdDQwIHttYXJnaW4tdG9wOjQwcHghaW1wb3J0YW50O30gLi1tdDUwIHttYXJnaW4tdG9wOjUwcHghaW1wb3J0YW50O30gLi1tdDExNSB7bWFyZ2luLXRvcDoxMTVweCFpbXBvcnRhbnQ7fSAuLW10MjAwIHttYXJnaW4tdG9wOjIwMHB4IWltcG9ydGFudDt9IC4tbWJhdXRvIHttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50O30gLi1tYjAge21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnQ7fSAuLW1iMSB7bWFyZ2luLWJvdHRvbToxcHghaW1wb3J0YW50O30gLi1tYjIge21hcmdpbi1ib3R0b206MnB4IWltcG9ydGFudDt9IC4tbWIzIHttYXJnaW4tYm90dG9tOjNweCFpbXBvcnRhbnQ7fSAuLW1iNCB7bWFyZ2luLWJvdHRvbTo0cHghaW1wb3J0YW50O30gLi1tYjUge21hcmdpbi1ib3R0b206NXB4IWltcG9ydGFudDt9IC4tbWI2IHttYXJnaW4tYm90dG9tOjZweCFpbXBvcnRhbnQ7fSAuLW1iNyB7bWFyZ2luLWJvdHRvbTo3cHghaW1wb3J0YW50O30gLi1tYjgge21hcmdpbi1ib3R0b206OHB4IWltcG9ydGFudDt9IC4tbWI5IHttYXJnaW4tYm90dG9tOjlweCFpbXBvcnRhbnQ7fSAuLW1iMTAge21hcmdpbi1ib3R0b206MTBweCFpbXBvcnRhbnQ7fSAuLW1iMTUge21hcmdpbi1ib3R0b206MTVweCFpbXBvcnRhbnQ7fSAuLW1iMjAge21hcmdpbi1ib3R0b206MjBweCFpbXBvcnRhbnQ7fSAuLW1iMjUge21hcmdpbi1ib3R0b206MjVweCFpbXBvcnRhbnQ7fSAuLW1iMzAge21hcmdpbi1ib3R0b206MzBweCFpbXBvcnRhbnQ7fSAuLW1iNTAge21hcmdpbi1ib3R0b206NTBweCFpbXBvcnRhbnQ7fSAuLXRvcC0xMCwgLi10LTEwIHt0b3A6LTEwcHghaW1wb3J0YW50O30gLi10b3AwLCAuLXQwIHt0b3A6MHB4IWltcG9ydGFudDt9IC4tdG9wMSwgLi10MSB7dG9wOjFweCFpbXBvcnRhbnQ7fSAuLXRvcDIsIC4tdDIge3RvcDoycHghaW1wb3J0YW50O30gLi10b3AzLCAuLXQzIHt0b3A6M3B4IWltcG9ydGFudDt9IC4tdG9wNCwgLi10NCB7dG9wOjRweCFpbXBvcnRhbnQ7fSAuLXRvcDUsIC4tdDUge3RvcDo1cHghaW1wb3J0YW50O30gLi10b3A2LCAuLXQ2IHt0b3A6NnB4IWltcG9ydGFudDt9IC4tdG9wNywgLi10NyB7dG9wOjdweCFpbXBvcnRhbnQ7fSAuLXRvcDgsIC4tdDgge3RvcDo4cHghaW1wb3J0YW50O30gLi10b3A5LCAuLXQ5IHt0b3A6OXB4IWltcG9ydGFudDt9IC4tdG9wMTAsIC4tdDEwIHt0b3A6MTBweCFpbXBvcnRhbnQ7fSAuLXRvcDE1LCAuLXQxNSB7dG9wOjE1cHghaW1wb3J0YW50O30gLi10b3AyMCwgLi10MjAge3RvcDoyMHB4IWltcG9ydGFudDt9IC4tdG9wMjUsIC4tdDI1e3RvcDoyNXB4IWltcG9ydGFudDt9IC4tdG9wMzAsIC4tdDMwIHt0b3A6MzBweCFpbXBvcnRhbnQ7fSAuLXRvcDM1LCAuLXQzNSB7dG9wOjM1cHghaW1wb3J0YW50O30gLi10b3A0MCwgLi10NDAge3RvcDo0MHB4IWltcG9ydGFudDt9IC4tdG9wNDUsIC4tdDQ1IHt0b3A6NDVweCFpbXBvcnRhbnQ7fSAuLXRvcDUwLCAuLXQ1MCB7dG9wOjUwcHghaW1wb3J0YW50O30gLi10b3AxMDAsIC4tdDEwMCB7dG9wOjEwMHB4IWltcG9ydGFudDt9IC4tdG9wMjAwLCAuLXQyMDAge3RvcDoyMDBweCFpbXBvcnRhbnQ7fSAuLXRvcDVwLCAuLXQ1cCB7dG9wOjUlIWltcG9ydGFudDt9IC4tdG9wMTBwLCAuLXQxMHAge3RvcDoxMCUhaW1wb3J0YW50O30gLi10b3AxNXAsIC4tdDE1cCB7dG9wOjE1JSFpbXBvcnRhbnQ7fSAuLXRvcDIwcCwgLi10MjBwIHt0b3A6MjAlIWltcG9ydGFudDt9IC4tdG9wMjVwLCAuLXQyNXAge3RvcDoyNSUhaW1wb3J0YW50O30gLi10b3A1MHAsIC4tdDUwcCB7dG9wOjUwJSFpbXBvcnRhbnQ7fSAuLXRvcDEwMHAsIC4tdDEwMHAge3RvcDoxMDAlIWltcG9ydGFudDt9IC4tbGVmdDAsIC4tbDAge2xlZnQ6MHB4IWltcG9ydGFudDt9IC4tbGVmdDEsIC4tbDEge2xlZnQ6MXB4IWltcG9ydGFudDt9IC4tbGVmdDIsIC4tbDIge2xlZnQ6MnB4IWltcG9ydGFudDt9IC4tbGVmdDMsIC4tbDMge2xlZnQ6M3B4IWltcG9ydGFudDt9IC4tbGVmdDQsIC4tbDQge2xlZnQ6NHB4IWltcG9ydGFudDt9IC4tbGVmdDUsIC4tbDUge2xlZnQ6NXB4IWltcG9ydGFudDt9IC4tbGVmdDYsIC4tbDYge2xlZnQ6NnB4IWltcG9ydGFudDt9IC4tbGVmdDcsIC4tbDcge2xlZnQ6N3B4IWltcG9ydGFudDt9IC4tbGVmdDgsIC4tbDgge2xlZnQ6OHB4IWltcG9ydGFudDt9IC4tbGVmdDksIC4tbDkge2xlZnQ6OXB4IWltcG9ydGFudDt9IC4tbGVmdDEwLCAuLWwxMCB7bGVmdDoxMHB4IWltcG9ydGFudDt9IC4tbGVmdDE1LCAuLWwxNSB7bGVmdDoxNXB4IWltcG9ydGFudDt9IC4tbGVmdDIwLCAuLWwyMCB7bGVmdDoyMHB4IWltcG9ydGFudDt9IC4tbGVmdDI1LCAuLWwyNXtsZWZ0OjI1cHghaW1wb3J0YW50O30gLi1sZWZ0MzAsIC4tbDMwIHtsZWZ0OjMwcHghaW1wb3J0YW50O30gLi1sZWZ0MzUsIC4tbDM1IHtsZWZ0OjM1cHghaW1wb3J0YW50O30gLi1sZWZ0NDAsIC4tbDQwIHtsZWZ0OjQwcHghaW1wb3J0YW50O30gLi1sZWZ0NDUsIC4tbDQ1IHtsZWZ0OjQ1cHghaW1wb3J0YW50O30gLi1sZWZ0NTAsIC4tbDUwIHtsZWZ0OjUwcHghaW1wb3J0YW50O30gLi1sZWZ0NTUsIC4tbDU1IHtsZWZ0OjU1cHghaW1wb3J0YW50O30gLi1sZWZ0NjAsIC4tbDYwIHtsZWZ0OjYwcHghaW1wb3J0YW50O30gLi1sZWZ0NjUsIC4tbDY1IHtsZWZ0OjY1cHghaW1wb3J0YW50O30gLi1sZWZ0NzAsIC4tbDcwIHtsZWZ0OjcwcHghaW1wb3J0YW50O30gLi1sZWZ0NzUsIC4tbDc1IHtsZWZ0Ojc1cHghaW1wb3J0YW50O30gLi1sZWZ0ODAsIC4tbDgwIHtsZWZ0OjgwcHghaW1wb3J0YW50O30gLi1sZWZ0ODUsIC4tbDg1IHtsZWZ0Ojg1cHghaW1wb3J0YW50O30gLi1sZWZ0OTAsIC4tbDkwIHtsZWZ0OjkwcHghaW1wb3J0YW50O30gLi1sZWZ0OTUsIC4tbDk1IHtsZWZ0Ojk1cHghaW1wb3J0YW50O30gLi1sZWZ0MTAwLCAuLWwxMDAge2xlZnQ6MTAwcHghaW1wb3J0YW50O30gLi1sZWZ0MTUwLCAuLWwxNTAge2xlZnQ6MTUwcHghaW1wb3J0YW50O30gLi1sZWZ0MjAwLCAuLWwyMDAge2xlZnQ6MjAwcHghaW1wb3J0YW50O30gLi1sZWZ0MjUwLCAuLWwyNTAge2xlZnQ6MjUwcHghaW1wb3J0YW50O30gLi1sZWZ0MzAwLCAuLWwzMDAge2xlZnQ6MzAwcHghaW1wb3J0YW50O30gLi1sZWZ0NXAsIC4tbDVwIHtsZWZ0OjUlIWltcG9ydGFudDt9IC4tbGVmdDEwcCwgLi1sMTBwIHtsZWZ0OjEwJSFpbXBvcnRhbnQ7fSAuLWxlZnQxNXAsIC4tbDE1cCB7bGVmdDoxNSUhaW1wb3J0YW50O30gLi1sZWZ0MjBwLCAuLWwyMHAge2xlZnQ6MjAlIWltcG9ydGFudDt9IC4tbGVmdDI1cCwgLi1sMjVwIHtsZWZ0OjI1JSFpbXBvcnRhbnQ7fSAuLWxlZnQ0MHAsIC4tbDQwcCB7bGVmdDo0MCUhaW1wb3J0YW50O30gLi1sZWZ0NTBwLCAuLWw1MHAge2xlZnQ6NTAlIWltcG9ydGFudDt9IC4tbGVmdDEwMHAsIC4tbDEwMHAge2xlZnQ6MTAwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MCwgLi1yMCB7cmlnaHQ6MHB4IWltcG9ydGFudDt9IC4tcmlnaHQxLCAuLXIxIHtyaWdodDoxcHghaW1wb3J0YW50O30gLi1yaWdodDIsIC4tcjIge3JpZ2h0OjJweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MywgLi1yMyB7cmlnaHQ6M3B4IWltcG9ydGFudDt9IC4tcmlnaHQ0LCAuLXI0IHtyaWdodDo0cHghaW1wb3J0YW50O30gLi1yaWdodDUsIC4tcjUge3JpZ2h0OjVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NiwgLi1yNiB7cmlnaHQ6NnB4IWltcG9ydGFudDt9IC4tcmlnaHQ3LCAuLXI3IHtyaWdodDo3cHghaW1wb3J0YW50O30gLi1yaWdodDgsIC4tcjgge3JpZ2h0OjhweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OSwgLi1yOSB7cmlnaHQ6OXB4IWltcG9ydGFudDt9IC4tcmlnaHQxMCwgLi1yMTAge3JpZ2h0OjEwcHghaW1wb3J0YW50O30gLi1yaWdodDE1LCAuLXIxNSB7cmlnaHQ6MTVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjAsIC4tcjIwIHtyaWdodDoyMHB4IWltcG9ydGFudDt9IC4tcmlnaHQyNSwgLi1yMjUge3JpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1yaWdodDMwLCAuLXIzMCB7cmlnaHQ6MzBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MzUsIC4tcjM1IHtyaWdodDozNXB4IWltcG9ydGFudDt9IC4tcmlnaHQ0MCwgLi1yNDAge3JpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1yaWdodDQ1LCAuLXI0NSB7cmlnaHQ6NDVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NTAsIC4tcjUwIHtyaWdodDo1MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ1NSwgLi1yNTUge3JpZ2h0OjU1cHghaW1wb3J0YW50O30gLi1yaWdodDYwLCAuLXI2MCB7cmlnaHQ6NjBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NjUsIC4tcjY1IHtyaWdodDo2NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ3MCwgLi1yNzAge3JpZ2h0OjcwcHghaW1wb3J0YW50O30gLi1yaWdodDc1LCAuLXI3NSB7cmlnaHQ6NzVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0ODAsIC4tcjgwIHtyaWdodDo4MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ4NSwgLi1yODUge3JpZ2h0Ojg1cHghaW1wb3J0YW50O30gLi1yaWdodDkwLCAuLXI5MCB7cmlnaHQ6OTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OTUsIC4tcjk1IHtyaWdodDo5NXB4IWltcG9ydGFudDt9IC4tcmlnaHQxMDAsIC4tcjEwMCB7cmlnaHQ6MTAwcHghaW1wb3J0YW50O30gLi1yaWdodDE1MCwgLi1yMTUwIHtyaWdodDoxNTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjAwLCAuLXIyMDAge3JpZ2h0OjIwMHB4IWltcG9ydGFudDt9IC4tcmlnaHQyNTAsIC4tcjI1MCB7cmlnaHQ6MjUwcHghaW1wb3J0YW50O30gLi1yaWdodDVwLCAuLXI1cCB7cmlnaHQ6NSUhaW1wb3J0YW50O30gLi1yaWdodDEwcCwgLi1yMTBwIHtyaWdodDoxMCUhaW1wb3J0YW50O30gLi1yaWdodDE1cCwgLi1yMTVwIHtyaWdodDoxNSUhaW1wb3J0YW50O30gLi1yaWdodDIwcCwgLi1yMjBwIHtyaWdodDoyMCUhaW1wb3J0YW50O30gLi1yaWdodDI1cCwgLi1yMjVwIHtyaWdodDoyNSUhaW1wb3J0YW50O30gLi1yaWdodDUwcCwgLi1yNTBwIHtyaWdodDo1MCUhaW1wb3J0YW50O30gLi1yaWdodDEwMHAsIC4tcjEwMHAge3JpZ2h0OjEwMCUhaW1wb3J0YW50O30gLi16LWluZGV4OTl7ei1pbmRleDo5OSFpbXBvcnRhbnQ7fSAuLXotaW5kZXgxMDB7ei1pbmRleDoxMDAhaW1wb3J0YW50O30gLi16LWluZGV4MTAxe3otaW5kZXg6MTAxIWltcG9ydGFudDt9IC4tei1pbmRleDEwMDEsIC56aW5kZXgxMDAxeyB6LWluZGV4OjEwMDEhaW1wb3J0YW50OyB9IC4tei1pbmRleDM2MDAxLCAuemluZGV4MzYwMDF7IHotaW5kZXg6MzYwMDEhaW1wb3J0YW50OyB9IC4tbm8tYm9yZGVyLXNwYWNpbmd7IGJvcmRlci1zcGFjaW5nOjAhaW1wb3J0YW50OyB9IC4tdGFibGV7IGNlbGxwYWRkaW5nOjAhaW1wb3J0YW50OyBjZWxsc3BhY2luZzowIWltcG9ydGFudDsgYm9yZGVyOjAhaW1wb3J0YW50OyB9IHRhYmxlLi10YWJsZSB0aGVhZCB0aCB7IGJhY2tncm91bmQ6I2MzZDlmZiFpbXBvcnRhbnQ7IH0gdGFibGUuLXRhYmxlIHRyIHRoLCB0YWJsZS4tdGFibGUgdHIgdGQgeyBwYWRkaW5nOjRweCAxMHB4IDRweCA1cHghaW1wb3J0YW50OyB9IHRyLi1ib3JkZXItYm90dG9tIHRkLCB0ci4tYm9yZGVyLWJvdHRvbSB0aCB7IGJvcmRlci1ib3R0b206MXB0IHNvbGlkIGJsYWNrIWltcG9ydGFudDsgfSAtd2hpdGUtc3BhY2Utbm93cmFwIHt3aGl0ZS1zcGFjZTpub3dyYXAhaW1wb3J0YW50O30gLi1jdXJzb3ItYXV0byB7IGN1cnNvcjphdXRvOyB9IC4tY3Vyc29yLWRlZmF1bHQgeyBjdXJzb3I6ZGVmYXVsdDsgfSAuLWN1cnNvci1ub25lIHsgY3Vyc29yOm5vbmU7IH0gLi1jdXJzb3ItY29udGV4dC1tZW51IHsgY3Vyc29yOmNvbnRleHQtbWVudTsgfSAuLWN1cnNvci1oZWxwIHsgY3Vyc29yOmhlbHA7IH0gLi1jdXJzb3ItcG9pbnRlciB7IGN1cnNvcjpwb2ludGVyOyB9IC4tY3Vyc29yLXByb2dyZXNzIHsgY3Vyc29yOnByb2dyZXNzOyB9IC4tY3Vyc29yLXdhaXQgeyBjdXJzb3I6d2FpdDsgfSAuLWN1cnNvci1jZWxsIHsgY3Vyc29yOmNlbGw7IH0gLi1jdXJzb3ItY3Jvc3NoYWlyIHsgY3Vyc29yOmNyb3NzaGFpcjsgfSAuLWN1cnNvci10ZXh0IHsgY3Vyc29yOnRleHQ7IH0gLi1jdXJzb3ItdmVydGljYWwtdGV4dCB7IGN1cnNvcjp2ZXJ0aWNhbC10ZXh0OyB9IC4tY3Vyc29yLWFsaWFzIHsgY3Vyc29yOmFsaWFzOyB9IC4tY3Vyc29yLWNvcHkgeyBjdXJzb3I6Y29weTsgfSAuLWN1cnNvci1tb3ZlIHsgY3Vyc29yOm1vdmU7IH0gLi1jdXJzb3Itbm8tZHJvcCB7IGN1cnNvcjpuby1kcm9wOyB9IC4tY3Vyc29yLW5vdC1hbGxvd2VkIHsgY3Vyc29yOm5vdC1hbGxvd2VkOyB9IC4tY3Vyc29yLWFsbC1zY3JvbGwgeyBjdXJzb3I6YWxsLXNjcm9sbDsgfSAuLWN1cnNvci1jb2wtcmVzaXplIHsgY3Vyc29yOmNvbC1yZXNpemU7IH0gLi1jdXJzb3Itcm93LXJlc2l6ZSB7IGN1cnNvcjpyb3ctcmVzaXplOyB9IC4tY3Vyc29yLW4tcmVzaXplIHsgY3Vyc29yOm4tcmVzaXplOyB9IC4tY3Vyc29yLWUtcmVzaXplIHsgY3Vyc29yOmUtcmVzaXplOyB9IC4tY3Vyc29yLXMtcmVzaXplIHsgY3Vyc29yOnMtcmVzaXplOyB9IC4tY3Vyc29yLXctcmVzaXplIHsgY3Vyc29yOnctcmVzaXplOyB9IC4tY3Vyc29yLW5zLXJlc2l6ZSB7IGN1cnNvcjpucy1yZXNpemU7IH0gLi1jdXJzb3ItZXctcmVzaXplIHsgY3Vyc29yOmV3LXJlc2l6ZTsgfSAuLWN1cnNvci1uZS1yZXNpemUgeyBjdXJzb3I6bmUtcmVzaXplOyB9IC4tY3Vyc29yLW53LXJlc2l6ZSB7IGN1cnNvcjpudy1yZXNpemU7IH0gLi1jdXJzb3Itc2UtcmVzaXplIHsgY3Vyc29yOnNlLXJlc2l6ZTsgfSAuLWN1cnNvci1zdy1yZXNpemUgeyBjdXJzb3I6c3ctcmVzaXplOyB9IC4tY3Vyc29yLW5lc3ctcmVzaXplIHsgY3Vyc29yOm5lc3ctcmVzaXplOyB9IC4tY3Vyc29yLW53c2UtcmVzaXplIHsgY3Vyc29yOm53c2UtcmVzaXplOyB9IC4tZm9udC1zaXplMCwgLi1mczB7IGZvbnQtc2l6ZTowIWltcG9ydGFudDt9IC4tZm9udC1zaXplMSwgLi1mczF7IGZvbnQtc2l6ZToxcHghaW1wb3J0YW50O30gLi1mb250LXNpemUyLCAuLWZzMnsgZm9udC1zaXplOjJweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMsIC4tZnMzeyBmb250LXNpemU6M3B4IWltcG9ydGFudDt9IC4tZm9udC1zaXplNCwgLi1mczR7IGZvbnQtc2l6ZTo0cHghaW1wb3J0YW50O30gLi1mb250LXNpemU1LCAuLWZzNXsgZm9udC1zaXplOjVweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTYsIC4tZnM2eyBmb250LXNpemU6NnB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplNywgLi1mczd7IGZvbnQtc2l6ZTo3cHghaW1wb3J0YW50O30gLi1mb250LXNpemU4LCAuLWZzOHsgZm9udC1zaXplOjAuNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemU5LCAuLWZzOXsgZm9udC1zaXplOjAuNTYzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTEwLCAuLWZzMTB7IGZvbnQtc2l6ZTowLjYyNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxMSwgLi1mczExeyBmb250LXNpemU6MC42ODhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTIsIC4tZnMxMnsgZm9udC1zaXplOjAuNzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTMsIC4tZnMxM3sgZm9udC1zaXplOjAuODEzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE0LCAuLWZzMTR7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxNSwgLi1mczE1eyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTYsIC4tZnMxNnsgZm9udC1zaXplOjFyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTcsIC4tZnMxN3sgZm9udC1zaXplOjEuMDYzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE4LCAuLWZzMTh7IGZvbnQtc2l6ZToxLjEyNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxOSwgLi1mczE5eyBmb250LXNpemU6MS4xODhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjAsIC4tZnMyMHsgZm9udC1zaXplOjEuMjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjEsIC4tZnMyMXsgZm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIyLCAuLWZzMjJ7IGZvbnQtc2l6ZToxLjM3NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyMywgLi1mczIzeyBmb250LXNpemU6MS40MzhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjQsIC4tZnMyNHsgZm9udC1zaXplOjEuNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyNSwgLi1mczI1eyBmb250LXNpemU6MS41NjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjYsIC4tZnMyNnsgZm9udC1zaXplOjEuNjI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI3LCAuLWZzMjd7IGZvbnQtc2l6ZToxLjY4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyOCwgLi1mczI4eyBmb250LXNpemU6MS43NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyOSwgLi1mczI5eyBmb250LXNpemU6MS44MTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzAsIC4tZnMzMHsgZm9udC1zaXplOjEuODc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMxLCAuLWZzMzF7IGZvbnQtc2l6ZToxLjkzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzMiwgLi1mczMyeyBmb250LXNpemU6MnJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzMywgLi1mczMzeyBmb250LXNpemU6Mi4wNjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzQsIC4tZnMzNHsgZm9udC1zaXplOjIuMTI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM1LCAuLWZzMzV7IGZvbnQtc2l6ZToyLjE4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzNiwgLi1mczM2eyBmb250LXNpemU6Mi4yNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzNywgLi1mczM3eyBmb250LXNpemU6Mi4zMTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzgsIC4tZnMzOHsgZm9udC1zaXplOjIuMzc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM5LCAuLWZzMzl7IGZvbnQtc2l6ZToyLjQzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemU0MCwgLi1mczQweyBmb250LXNpemU6Mi41cmVtICFpbXBvcnRhbnQ7fSAuLXJlZC1saW5lLWgzNXsgaGVpZ2h0OjM1cHg7IG1hcmdpbi1ib3R0b206LTM1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTI1cHg7IH0gI2JyZWFkY3J1bWJzeyBmb250LXNpemU6MXJlbSA7IG1hcmdpbi1sZWZ0OjEwcHg7IG1hcmdpbi10b3A6OHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGNvbG9yOiM3NTc1NzU7IH0gLlVzZWRWZHAyTW9iaWxlICNicmVhZGNydW1ic3sgZm9udC1zaXplOjAuOXJlbTsgY29sb3I6IzIyMjIyMjsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzoxMHB4OyBtYXJnaW46MDsgbGluZS1oZWlnaHQ6MS4yNXJlbTsgfSAjYnJlYWRjcnVtYnMgYXsgY29sb3I6Izc1NzU3NTsgfSAjY2FycHJvb2ZfbWFpbi5jYXJwcm9vZl9tYWlueyB3aWR0aDozNDBweDsgaGVpZ2h0OmF1dG87IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgcGFkZGluZzoyMHB4OyBkaXNwbGF5Om5vbmU7IHotaW5kZXg6OTk5OTsgYm94LXNpemluZzpib3JkZXItYm94OyBib3JkZXItcmFkaXVzOjVweDsgcG9zaXRpb246Zml4ZWQ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7IC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpOyBsZWZ0OjUwJTsgdG9wOjUwJTsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZDbG9zZUJ1dHRvbnsgZmxvYXQ6cmlnaHQ7IHRvcDowOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZk1haW5EaXYgeyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgcGFkZGluZzowOyBiYWNrZ3JvdW5kOiNmZmY7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246cmVsYXRpdmU7IGZsb2F0OmxlZnQ7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mTWFpbkRpdiBVTHsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZNYWluRGl2IFVMIExJIHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwIDVweCAwOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9maWVsZHsgbWFyZ2luLWJvdHRvbTo3cHg7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mTWVzc2FnZXsgZm9udC1zaXplOjFyZW07IGNvbG9yOiMwMDA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZy1ib3R0b206MTVweDsgcG9zaXRpb246cmVsYXRpdmU7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAjaW5uZXJQYWdlRGl2eyBkaXNwbGF5OnRhYmxlOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9sYWJlbHsgZm9udC1zaXplOjFyZW07IGNvbG9yOiM2NjY2NjY7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyB0ZXh0LWFsaWduOmxlZnQ7IHdpZHRoOjEwMCU7IGxpbmUtaGVpZ2h0OjI1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfaW5wdXR7IGZvbnQtc2l6ZToxcmVtOyBwYWRkaW5nOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjYjliZGMxOyB3aWR0aDoxMDAlOyBjb2xvcjojNzk3OTc5OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyLXJhZGl1czo1cHg7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2lucHV0OmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjojRjRGNEY0OyBjb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IH0gI2NhcnByb29mX21haW4gLnBob25lSW5wdXR7IGZvbnQtc2l6ZToxcmVtOyBwYWRkaW5nOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjYjliZGMxOyB3aWR0aDo0N3B4OyBtYXJnaW4tcmlnaHQ6NXB4OyBjb2xvcjojNzk3OTc5OyBib3JkZXItcmFkaXVzOjVweDsgfSAjY2FycHJvb2ZfbWFpbiAucGhvbmVJbnB1dDpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6I0Y0RjRGNDsgY29sb3I6IzA1MTQxZjsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uSUUgeyBib3JkZXI6MXB4IHNvbGlkICNDODNGNDE7IG1hcmdpbjoxMHB4IDEwcHggMTBweCAwOyBwYWRkaW5nOjNweCAxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxvYXQ6cmlnaHQ7IHdpZHRoOjYwcHg7IGNvbG9yOiNmZmY7IGN1cnNvcjpwb2ludGVyOyBib3JkZXItdG9wLWNvbG9yOiNDODNGNDE7IGJvcmRlci1yaWdodC1jb2xvcjojQzgzRjQxOyBib3JkZXItYm90dG9tLWNvbG9yOiNDODNGNDE7IGJvcmRlci1sZWZ0LWNvbG9yOiNDODNGNDE7IGJvcmRlci10b3Atd2lkdGg6MXB4OyBib3JkZXItcmlnaHQtd2lkdGg6MXB4OyBib3JkZXItYm90dG9tLXdpZHRoOjFweDsgYm9yZGVyLWxlZnQtd2lkdGg6MXB4OyBib3JkZXItdG9wLXN0eWxlOnNvbGlkOyBib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7IGJvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7IGJvcmRlci1sZWZ0LXN0eWxlOnNvbGlkOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjhweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6OHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo4cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6OHB4OyBib3gtc2hhZG93OjBweCAycHggM3B4ICM2NjY7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgYmFja2dyb3VuZC1hdHRhY2htZW50OnNjcm9sbDsgYmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgYmFja2dyb3VuZC1zaXplOmF1dG87IGJhY2tncm91bmQtb3JpZ2luOnBhZGRpbmctYm94OyBiYWNrZ3JvdW5kLWNsaXA6Ym9yZGVyLWJveDsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjAwLCA2MywgNjUpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2J1dHRvbklFSG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNDODNGNDE7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2J1dHRvbiB7IGZvbnQtc2l6ZToxLjJyZW07IGZsb2F0OnJpZ2h0OyBtYXJnaW46MjVweCAwIDA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MXJlbTsgcGFkZGluZzoxMHB4IDE1cHg7IGN1cnNvcjpwb2ludGVyOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1zaGFkb3c6MCAtMXB4IDFweCAjNjQ3OTllOyBiYWNrZ3JvdW5kOiNiYjAwMDM7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjQzgzRjQxIDAlLCAjYmIwMDAzIDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwJSAwJSwgMCUgMTAwJSwgZnJvbSgjQzgzRjQxKSwgdG8oI2JiMDAwMykpOyBib3JkZXI6MXB4IHNvbGlkICM1YzZmOTE7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2J1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6I0M4M0Y0MTsgY3Vyc29yOnBvaW50ZXI7IH0gI2NhcnByb29mX2RpYWxvZy1vdmVybGF5IHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLC44KTsgcG9zaXRpb246Zml4ZWQ7IHRvcDowOyBsZWZ0OjA7IHJpZ2h0OjA7IGJvdHRvbTowOyB6LWluZGV4Ojk5OTg7IGRpc3BsYXk6bm9uZTsgfSAuY2FycHJvb2YtYmFkZ2UuZGVza3RvcCB7IG1hcmdpbi1sZWZ0Oi0xNXB4OyBoZWlnaHQ6NTZweDsgb3ZlcmZsb3c6aGlkZGVuOyBtYXJnaW4tdG9wOi0xMHB4OyBmbG9hdDpsZWZ0OyB9IC5wcmVQcm9jZXNzb3JIdG1sQ2FyUG9vZkFQSXJlcG9ydC5jYXJwcm9vZi1iYWRnZS5kZXNrdG9wLCAucHJlUHJvY2Vzc29yQ2FyUG9vZkFQSXJlcG9ydFY1LmNhcnByb29mLWJhZGdlLmRlc2t0b3AsIC5wcmVQcm9jZXNzb3JIdG1sQ2FyUHJvb2ZEZWZhdWx0LmNhcnByb29mLWJhZGdlLmRlc2t0b3AgeyB3aWR0aDoxMDZweDsgbWFyZ2luOjJweCA1cHggMCAwOyBmbG9hdDpsZWZ0OyB9ICNjYXJwcm9vZl9tYWluIGltZyB7IHdpZHRoOjUwJTsgZmxvYXQ6bGVmdDsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjowIDAgMTVweCAwOyB9ICNhc1BvcFVweyBiYWNrZ3JvdW5kOiNmZmZmZmY7IHdpZHRoOjYwMHB4OyBwYWRkaW5nOjMwcHg7IGNvbG9yOiMwNTE0MWY7IHotaW5kZXg6MTAwMDAyMTsgfSAjYXNQb3BVcCAucG9wdXAtcG9saWN5IHsgbWluLWhlaWdodDoxMDBweDsgbWF4LWhlaWdodDoxNTBweDsgb3ZlcmZsb3cteTphdXRvOyB9IC5wb3B1cC1wb2xpY3kgYSB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGNvbG9yOmJsdWU7IH0gI2FzUG9wVXAgLmFzVGl0bGV7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6Mi4yNXJlbSA7IGZvbnQtd2VpZ2h0OjsgbWFyZ2luLWJvdHRvbToyMHB4OyB9ICNhc1BvcFVwIC5idG5FeHBsaWNpdHsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjcwcHg7IHdpZHRoOjEwMHB4OyB9ICNhc1BvcFVwIC5idG5JbXBsaWNpdHsgZmxvYXQ6cmlnaHQ7IHdpZHRoOjEwMHB4OyBwYWRkaW5nLXJpZ2h0OjcwcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQucmV2ZWFsLW1vZGFsIHNwYW4uanFUcmFuc2Zvcm1SYWRpb1dyYXBwZXJ7IHBhZGRpbmc6MDsgbWFyZ2luOjZweCA0cHggMDsgfSAjYXNQdXJjaGFzZUludGVudCAucG9wdXAtcG9saWN5IHsgbWF4LWhlaWdodDoxNzBweDsgb3ZlcmZsb3cteTphdXRvOyBmb250LXdlaWdodDpib2xkOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc1BJVGl0bGV7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuNTYzcmVtIDsgbWFyZ2luLWJvdHRvbTowOyBwYWRkaW5nLWJvdHRvbToxMHB4OyBkaXNwbGF5OmJsb2NrOyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aVRleHR7IGNsZWFyOmJvdGg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9uc3sgbGlzdC1zdHlsZTpub25lOyBwYWRkaW5nOjVweDsgbWFyZ2luLWJvdHRvbTozcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9ucyBsaSB7IHBhZGRpbmc6MnB4OyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aU9wdGlvbnMgbGl7IGNsZWFyOmJvdGg7IGZvbnQtc2l6ZToxMHB0OyB9ICNhc1B1cmNoYXNlSW50ZW50IGxpIGxhYmVseyBmb250LXNpemU6MTBwdDsgfSAjYXNQdXJjaGFzZUludGVudCAuYnV0dG9uRGVmYXVsdENvbG9yIHsgbWFyZ2luOjAgYXV0byA1cHg7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzIHsgbGlzdC1zdHlsZTppbnNpZGUgbm9uZSBub25lOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5zdGVwcyA+IGxpeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgI2JiYmJiYjsgYm9yZGVyLXdpZHRoOjAgMXB4IDFweCAwOyBwYWRkaW5nOjE1cHg7IG1hcmdpbi1ib3R0b206MTVweDsgZm9udC1zaXplOjEwcHQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzeWVzbm8geyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHdpZHRoOjkwcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzeWVzeyBwYWRkaW5nLWxlZnQ6OTBweDsgd2lkdGg6NzBweDsgfSAuY29uc2VudC5kaXNjbGFpbWVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6Ymx1ZTsgYWxpZ24tc2VsZjpjZW50ZXI7IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgY3Vyc29yOmhlbHA7IH0gLmN1c3RvbTVfbGVmdCwgLmN1c3RvbTI1X2xlZnQsIC5jdXN0b20zNV9sZWZ0LCAuY3VzdG9tNDVfbGVmdCwgLmN0YV9wcmljZSwuY3RhX2NyZWRpdCwuY3RhX3Rlc3REcml2ZSwuY3RhX2V2YWwsLmN0YV9zdmNwcm9tbywuY3RhX3NlcnZpY2UsLmN0YV9wYXJ0cywuY3RhX3RpcmVzIHsgd2lkdGg6MjgwcHg7IGhlaWdodDo2MXB4OyBwYWRkaW5nOjAgMTVweCAwIDYwcHg7IGRpc3BsYXk6dGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGN1cnNvcjpwb2ludGVyOyBjb2xvcjojMTkxOTE5OyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ib3gyNS5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wOyBiYWNrZ3JvdW5kLXNpemU6NTg5cHggNTUwcHg7IH0gLmN0YV9wcmljZS5hbHQ6aG92ZXIsIC5jdGFfY3JlZGl0LmFsdDpob3ZlciwgLmN0YV90ZXN0RHJpdmUuYWx0OmhvdmVyLCAuY3RhX2V2YWwuYWx0OmhvdmVyLCAuY3RhX3NlcnZpY2UuYWx0OmhvdmVyLCAuY3RhX3BhcnRzLmFsdDpob3ZlciwgLmN0YV90aXJlcy5hbHQ6aG92ZXIsIC5jdGFfc3ZjcHJvbW8uYWx0OmhvdmVyIHsgY29sb3I6IzE5MTkxOTsgfSAuY3VzdG9tNTVfbGVmdCwgLmN1c3RvbTI1NV9sZWZ0LCAuY3VzdG9tMzU1X2xlZnQsIC5jdXN0b200NTVfbGVmdCwgLmN0YV9wcmljZS5hbHQsLmN0YV9wcmljZTpob3ZlciwgLmN0YV9jcmVkaXQuYWx0LCAuY3RhX2NyZWRpdDpob3ZlciwgLmN0YV90ZXN0RHJpdmUuYWx0LCAuY3RhX3Rlc3REcml2ZTpob3ZlciwgLmN0YV9ldmFsLmFsdCwgLmN0YV9ldmFsOmhvdmVyLCAuY3RhX3NlcnZpY2UuYWx0LCAuY3RhX3NlcnZpY2U6aG92ZXIsIC5jdGFfcGFydHMuYWx0LCAuY3RhX3BhcnRzOmhvdmVyLCAuY3RhX3RpcmVzLmFsdCwgLmN0YV90aXJlczpob3ZlciwgLmN0YV9zdmNwcm9tby5hbHQsIC5jdGFfc3ZjcHJvbW86aG92ZXIgeyBjb2xvcjojRkZGRkZGOyB9IC5jdGFfcHJpY2UsIC5jdGFfcHJpY2UuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjowIDA7IH0gLmN0YV9wcmljZS5hbHQsIC5jdGFfcHJpY2U6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAwOyB9IC5jdGFfY3JlZGl0LCAuY3RhX2NyZWRpdC5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTY3cHg7IH0gLmN0YV9jcmVkaXQuYWx0LCAuY3RhX2NyZWRpdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC02N3B4OyB9IC5jdGFfdGVzdERyaXZlLCAuY3RhX3Rlc3REcml2ZS5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTEzNXB4OyB9IC5jdGFfdGVzdERyaXZlLmFsdCwgLmN0YV90ZXN0RHJpdmU6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMTM1cHg7IH0gLmN0YV9ldmFsLCAuY3RhX2V2YWwuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0yMDRweDsgfSAuY3RhX2V2YWwuYWx0LCAuY3RhX2V2YWw6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMjA0cHg7IH0gLmN0YV9zdmNwcm9tbywgLmN0YV9zdmNwcm9tby5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTI3M3B4OyB9IC5jdGFfc3ZjcHJvbW8uYWx0LCAuY3RhX3N2Y3Byb21vOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTI3M3B4OyB9IC5jdGFfc2VydmljZSwgLmN0YV9zZXJ2aWNlLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMzQxcHg7IH0gLmN0YV9zZXJ2aWNlLmFsdCwgLmN0YV9zZXJ2aWNlOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTM0MXB4OyB9IC5jdGFfcGFydHMsIC5jdGFfcGFydHMuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC00MTBweDsgfSAuY3RhX3BhcnRzLmFsdCwgLmN0YV9wYXJ0czpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC00MTBweDsgfSAuY3RhX3RpcmVzLCAuY3RhX3RpcmVzLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNDgycHg7IH0gLmN0YV90aXJlcy5hbHQsIC5jdGFfdGlyZXM6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtNDgycHg7IH0gLmN0YV9zZXJ2aWNlLmhpZGVfdGV4dCwgLmN0YV9wYXJ0cy5oaWRlX3RleHQsIC5jdGFfdGlyZXMuaGlkZV90ZXh0LCAuY3RhX3ByaWNlLmhpZGVfdGV4dCwgLmN0YV9jcmVkaXQuaGlkZV90ZXh0LCAuY3RhX3Rlc3REcml2ZS5oaWRlX3RleHQsIC5jdGFfZXZhbC5oaWRlX3RleHQsIC5jdGFfc3ZjcHJvbW8uaGlkZV90ZXh0IHsgdGV4dC1pbmRlbnQ6LTIwMDBlbTsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX2V2YWwuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUucmVkLCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8ucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8ucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5oZWFkaW5nQ2Fwc09uIGgxLCBib2R5LmhlYWRpbmdDYXBzT24gaDIsIGJvZHkuaGVhZGluZ0NhcHNPbiBoMywgYm9keS5oZWFkaW5nQ2Fwc09uIHNwYW4uaDItYWx0LCBib2R5LmhlYWRpbmdDYXBzT24gc3Bhbi5oMy1hbHQsIGJvZHkuaGVhZGluZ0NhcHNPbi5Vc2VkU3JwMiAuY2FyQmFzaWNzIC5jYXJUaXRsZSAuZGl2Q2l0eSwgYm9keS5oZWFkaW5nQ2Fwc09uIC52LWNhcmQgLmhlYWRlci1zZWN0aW9uIC5vcmcsIGJvZHkuaGVhZGluZ0NhcHNPbiAjZm9vdGVyIC5vcmcsIGJvZHkuaGVhZGluZ0NhcHNPbiAubG9nb2FyZWEgLmFkZHJlc3MgLmFkciBzcGFuOmZpcnN0LWNoaWxkLCBib2R5LmhlYWRpbmdDYXBzT24gI2Zvb3RlciAudml2LCBib2R5LmhlYWRpbmdDYXBzT24gLnNlYXJjaC1saW5rcy13cmFwcGVyIC5zZWFyY2gtbGluay10aXRsZSwgYm9keS5oZWFkaW5nQ2Fwc09uIC5wb3B1cGl6ZXJCb2R5ICN0cmFkZUluQmFyUG9wdXBfbGluZTEsIGJvZHkuaGVhZGluZ0NhcHNPbiAuY2Fyb3Vzc2VsIC5jYXJvdXNlbFRhYnMgLnRhYi1sYWJlbCwgYm9keS5oZWFkaW5nQ2Fwc09uIC5mb3JtSGVhZGluZywgYm9keS5oZWFkaW5nQ2Fwc09uIC5jb21wYXJlLXZlaGljbGVzLWZvcm0tdGFibGUgLnRyaW0tcHJldmlldyAuY29tcGFyZS10aXRsZSB7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSAhaW1wb3J0YW50OyB9IGJvZHkuaGVhZGluZ0NhcHNPbiAuY2Fyb3Vzc2VsIC5jYXJvdXNlbFRhYnMgLnRhYi1sYWJlbCB7IGZvbnQtc2l6ZToxLjI1cmVtOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgYm9keS5oZWFkaW5nQ2Fwc09uIC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgaDIuZGVmYXVsdCB7IGZvbnQtc2l6ZToxLjRyZW0gIWltcG9ydGFudDsgfSB9IC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgaDIgc3Bhbi5pY29uLCAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIHNwYW4uaDItYWx0IHNwYW4uaWNvbiB7IG1pbi13aWR0aDoyMHB4OyB9IC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgLmNlcnQtdGl0bGUgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tbGVmdDoyMHB4OyBmb250LXNpemU6MS4zZW07IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayAuY2VydC1zdWJ0aXRsZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OjIwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6Izc3NzsgZm9udC1zaXplOjFlbTsgbWFyZ2luLXRvcDo1cHg7IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayAuY2VydC1oaWdobGlnaHRlZC12YWx1ZSB7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBjb2xvcjojRkZGOyBwYWRkaW5nOjExcHggMjBweCA5cHggMjBweDsgYm9yZGVyLXJhZGl1czozcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5Jbm5lckJveExheWVyLmRpdkNlcnRpZmljYXRpb25CbG9jay5pc09uZVJvdyBpbWcgeyBtYXgtd2lkdGg6YXV0byAhaW1wb3J0YW50OyB9IC51c2VkVmRwQWN0aW9ucyAuYWN0aW9uLWJveCBhLmJ0bi1kZWZhdWx0IHsgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTBweCAhaW1wb3J0YW50OyB9IC5jdGFfcHJpY2U6aG92ZXIsIC5jdGFfY3JlZGl0OmhvdmVyLCAuY3RhX3Rlc3REcml2ZTpob3ZlciwgLmN0YV9ldmFsOmhvdmVyLCAuY3RhX3NlcnZpY2U6aG92ZXIsIC5jdGFfcGFydHM6aG92ZXIsIC5jdGFfdGlyZXM6aG92ZXIsIC5jdGFfc3ZjcHJvbW86aG92ZXJ7IG9wYWNpdHk6MC43NTsgfSAuc2VhcmNoX2NlcnRfZ2VuZXJpY3sgaGVpZ2h0OjQ0cHg7IG1hcmdpbjoycHggNXB4IDAgMDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDotMHB4OyB9ICNuZXdDYXJJblVzZWRQYWdleyBtYXJnaW4tdG9wOi0ycHg7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5Om5vbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICNuZXdDYXJJblVzZWRQYWdlIC5ib3gyODhfdG9weyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9yaWdodF9ib3g0X3RvcC5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50OyB9ICNuZXdDYXJJblVzZWRQYWdlIC5ib3gyODgwX21pZHsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvcmlnaHRfYm94NF9taWQucG5nJykgcmVwZWF0LXkgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4OF9mb290ZXJfcXN7IGJhY2tncm91bmQgOnVybCgnL2ltYWdlcy9yaWdodF9ib3g0X2Zvb3Rlci5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50IH0gI25ld0NhckluVXNlZFBhZ2Vfc2NyYXRjaFByaWNleyB3aWR0aDoxMTBweDsgaGVpZ2h0OjM1cHg7IGZsb2F0OnJpZ2h0OyBwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDotODNweDsgZGlzcGxheTpub25lOyB9ICNuZXdDYXJJblVzZWRQYWdlX3RpdGxleyBkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTowLjkzOHJlbSA7Zm9udC13ZWlnaHQ6Ym9sZDt0ZXh0LWRlY29yYXRpb246bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiwgdWwjY3JlZGl0X2Z1ZWx0eXBlLCB1bCNjcmVkaXRfYm9keVR5cGVzIHsgbGlzdC1zdHlsZTpub25lOyBmbG9hdDpsZWZ0OyB3aWR0aDozMyU7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gdWwjY3JlZGl0X2RyaXZldHJhaW4gbGkgPiBsYWJlbCwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gbGFiZWwsIHVsI2NyZWRpdF9ib2R5VHlwZXMgbGkgPiBsYWJlbHsgZGlzcGxheTpibG9jazsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0Om5vbmU7IH0gdWwjY3JlZGl0X2RyaXZldHJhaW4gbGkgPiBkaXYsIHVsI2NyZWRpdF9mdWVsdHlwZSBsaSA+IGRpdiwgdWwjY3JlZGl0X2JvZHlUeXBlcyBsaSA+IGRpdnsgZGlzcGxheTpibG9jazsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMwNTE0MWY7IGZsb2F0Om5vbmU7IH0gdWwjY3JlZGl0X2RyaXZldHJhaW4gbGkgPiBsYWJlbCA+IHNwYW4sIHVsI2NyZWRpdF9mdWVsdHlwZSBsaSA+IGxhYmVsID4gc3BhbiwgdWwjY3JlZGl0X2JvZHlUeXBlcyBsaSA+IGxhYmVsID4gc3BhbnsgbWFyZ2luLXJpZ2h0OjhweDsgbWFyZ2luLXRvcDowcHg7IH0gI2NyZWRpdF92aV9hZHZhbmNlZCBsYWJlbHsgZmxvYXQ6bGVmdDsgfSAjY3JlZGl0X3ZpX2FkdmFuY2VkIGxhYmVsIGRpdi5sYWJlbHsgZmxvYXQ6bGVmdDsgbGluZS1oZWlnaHQ6MzJweDsgbWFyZ2luLXJpZ2h0OjZweDsgd2lkdGg6MjAwcHg7IHRleHQtYWxpZ246cmlnaHQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNDsgfSAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWQgLmJveDJfZGV0YWlsc190ZXh0LCAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWQgLmJveDJfZGV0YWlsc190ZXh0MjUgc3BhbiwgLmRldGFpbHNfYm94IC5ib3gyX2RldGFpbHNfbWlkIC5ib3gyX2RldGFpbHNfdGV4dCBzcGFueyBjb2xvcjojMDUxNDFmOyB9IC51c3AtY29sb3IgeyBjb2xvcjojMDUxNDFmOyB9IC5teWNhcm91c2VsX3RkeyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo1NjBweDsgb3ZlcmZsb3c6aGlkZGVuOyBtYXJnaW4tbGVmdDozMHB4OyBtYXJnaW4tdG9wOjEwcHg7IH0gLnZlaGljbGVDYXJvdXNlbHsgd2lkdGg6MTkwcHg7IH0gLmRldGFpbHNfYm94LCAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWRFeCB7IGJhY2tncm91bmQ6I2I1YjViNDsgfSAjZXh0Q29sb3JTZWxlY3QuZml4ZWRXaWR0aCAsICNpbnRDb2xvclNlbGVjdC5maXhlZFdpZHRoIHsgd2lkdGg6MjMwcHg7IH0gLmNvbG9yQ2hvaWNleyBoZWlnaHQ6MzFweDsgd2lkdGg6MzFweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtaW5kZW50Oi0yMDAwZW07IGxpbmUtaGVpZ2h0OjMxcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgbWFyZ2luOjJweDsgY29sb3I6I2ZmZjsgfSAuY29sb3JDaG9pY2UuY2hvc2VuIHsgdGV4dC1pbmRlbnQ6MDsgfSAuY29sb3JDaG9pY2UudGFuIHsgYmFja2dyb3VuZC1jb2xvcjojZDJiNDhjOyB9IC5jb2xvckNob2ljZS5ibGFjayB7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMDsgfSAuY29sb3JDaG9pY2UuZ29sZCB7IGJhY2tncm91bmQtY29sb3I6I2IyOTYwMDsgfSAuY29sb3JDaG9pY2UuYnJvd24geyBiYWNrZ3JvdW5kLWNvbG9yOiM2NjMzMGU7IH0gLmNvbG9yQ2hvaWNlLmdyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjojMDA5OTAwOyB9IC5jb2xvckNob2ljZS5ncmF5IHsgYmFja2dyb3VuZC1jb2xvcjojOTc5Nzk3OyB9IC5jb2xvckNob2ljZS5ncmV5IHsgYmFja2dyb3VuZC1jb2xvcjojOTc5Nzk3OyB9IC5jb2xvckNob2ljZS5vcmFuZ2UgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlNjk0MDA7IH0gLmNvbG9yQ2hvaWNlLnNpbHZlciB7IGJhY2tncm91bmQtY29sb3I6I2MwYzBjMDsgY29sb3I6IzA1MTQxZjsgfSAuY29sb3JDaG9pY2UubWF1dmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiNkNDczZDQ7IH0gLmNvbG9yQ2hvaWNlLnJlZCB7IGJhY2tncm91bmQtY29sb3I6I2NjMDAwMDsgfSAuY29sb3JDaG9pY2Uud2hpdGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7IGNvbG9yOiMwNTE0MWY7IH0gLmNvbG9yQ2hvaWNlLnllbGxvdyB7IGJhY2tncm91bmQtY29sb3I6I2YwYzAwMDsgY29sb3I6IzA1MTQxZjsgfSAuY29sb3JDaG9pY2UuYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6IzE5MTljNDsgfSAuY29sb3JDaG9pY2UuY29wcGVyIHsgYmFja2dyb3VuZC1jb2xvcjojQUY0NzQ0OyB9IC5jb2xvckNob2ljZS5wdXJwbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiM1MzE1QjI7IH0gLmxpZ2h0LWdyYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM0YjRjNGM7IGNvbG9yOiMwNTE0MWY7fSBhLmNvbG9yQ2hvaWNlIHsgY29sb3I6I2ZmZjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gdHIuYm9yZGVyX2JvdHRvbV9saW5lIHRkLCB0ci5ib3JkZXJfYm90dG9tX2xpbmUgdGggeyBib3JkZXItYm90dG9tOjFwdCBzb2xpZCBibGFjazsgfSAuYm9yZGVyX2JveHsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBib3gtc2hhZG93Om5vbmU7IGNsZWFyOmJvdGg7IH0gLmhvbWVwYWdlIC5ib3JkZXJfYm94eyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9ICNob21lX3NvY2lhbFRpbWVsaW5leyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWhvbWVwYWdlLXNvY2lhbC1iZy1jb2xvcik7IH0gI2Zvb3RlcldyYXBwZXJ7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyBjbGVhcjpib3RoOyBwYWRkaW5nLXRvcDoxNXB4OyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyB9ICNmb290ZXJXcmFwcGVyIHN2ZyB7IGZpbGw6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAuY3VzdG9tZm9ybV9zdWJtaXR7IG1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbToyMHB4OyB9IC5zZWVPcHRpb25zeyBkaXNwbGF5Om5vbmU7IH0gLnN0cmlrZS1wcmljZSwgLnN0cmlrZS1wcmljZS1ibGFjaywgLnN0cmlrZS1wcmljZS13aGl0ZSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuc3RyaWtlLXByaWNlOjpiZWZvcmUsIC5zdHJpa2UtcHJpY2UtYmxhY2s6OmJlZm9yZSwgLnN0cmlrZS1wcmljZS13aGl0ZTo6YmVmb3JlIHsgY29udGVudDoiIjsgaGVpZ2h0OjJweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo0MCU7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSg3ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luOjUwJSA1MCUgMDsgd2lkdGg6MTAwJTsgfSAuc3RyaWtlLXByaWNlLi10aGluOjpiZWZvcmV7IGhlaWdodDoxcHg7IH0gLnN0cmlrZS1wcmljZTo6YmVmb3JlIHsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwICMwMDA7IH0gLnN0cmlrZS1wcmljZS1ibGFjazo6YmVmb3JlIHsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwIGJsYWNrOyB9IC5zdHJpa2UtcHJpY2Utd2hpdGU6OmJlZm9yZSB7IGJhY2tncm91bmQ6bm9uZSByZXBlYXQgc2Nyb2xsIDAgMCB3aGl0ZTsgfSAuYmx1ci1wcmljZSB7IC13ZWJraXQtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW1vei1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbXMtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW8tZmlsdGVyOmJsdXIoMC4xNWVtKTsgZmlsdGVyOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyBoZWlnaHQ9JzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PGZpbHRlciBpZD0nc3ZnQmx1cicgeD0nLTUlJyB5PSctNSUnIHdpZHRoPScxMTAlJyBoZWlnaHQ9JzExMCUnPjxmZUdhdXNzaWFuQmx1ciBpbj0nU291cmNlR3JhcGhpYycgc3RkRGV2aWF0aW9uPSc1Jy8+I3N2Z0JsdXIiKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CbHVyKFBpeGVsUmFkaXVzPSc1Jyk7IGZpbHRlcjpibHVyKDAuMTVlbSk7IH0gLmxlZnRfYm94eyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBtYXJnaW4tdG9wOjEwcHggOyBwYWRkaW5nOjEwcHggMCAxMHB4OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6bm9uZTsgfSAuYnRuLWRlZmF1bHQsIC5idG4tc20sIC5idG4tbGcsLmN1c3RvbWZvcm1fc3VibWl0LC5zdWJtaXR7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLWNlcnQtdHh0LXRyYW5zZm9ybSwgdmFyKC0tdHh0LXVwcGVyKSk7IH0gLmJ0bi1kZWZhdWx0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LCAuc3VibWl0LCAuY3VzdG9tZm9ybV9zdWJtaXQsIGlucHV0W3R5cGU9YnV0dG9uXS5idG4tZGVmYXVsdCwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1kZWZhdWx0IHsgcGFkZGluZzoxMXB4IDIwcHggOXB4IDIwcHg7IGJvcmRlci1yYWRpdXM6M3B4OyB9IC5idG4tc20sIGlucHV0W3R5cGU9YnV0dG9uXS5idG4tc20sIGlucHV0W3R5cGU9c3VibWl0XS5idG4tc20geyBmb250LXNpemU6aW5oZXJpdCFpbXBvcnRhbnQ7IHBhZGRpbmc6NHB4IDEwcHghaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweCFpbXBvcnRhbnQ7IH0gLmJ0bi1sZywgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1sZywgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1sZyB7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IHBhZGRpbmc6MTJweCA1MHB4OyBib3JkZXItcmFkaXVzOjZweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuYnRuLWRlZmF1bHQ6Zm9jdXMsIC5jdXN0b21mb3JtX3N1Ym1pdDpmb2N1cywgLmJ0bi1zbTpmb2N1cywgLmJ0bi1sZzpmb2N1cywgI2V4aXRfcG9wdXBfeWVzOmZvY3VzLCAjZXhpdF9wb3B1cF9ubzpmb2N1cyB7IG91dGxpbmU6bm9uZTsgfSAuYnRuLWRlZmF1bHQuYXBwbHktY3JlZGl0IHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgd29yZC13cmFwOm5vcm1hbDsgd2lkdGg6MTAwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjNweCA1cHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAuYnRuLWRlZmF1bHQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1kZWZhdWx0LCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWRlZmF1bHR7IGZvbnQtc2l6ZTowLjhyZW07IH0gLmJ0bi1kZWZhdWx0LCAuYnRuLXNtLC5idG4tbGcsIC5zdWJtaXQsICNzbGlkZWl0IGlucHV0LnNlbmQsIC5jdXN0b21mb3JtX3N1Ym1pdCB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLXN0eWxlOnNvbGlkOyBib3JkZXItY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IHRleHQtc2hhZG93Om5vbmU7IH0gLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lIHsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0OmhvdmVyLCAuY3VzdG9tZm9ybV9zdWJtaXQ6aG92ZXIsIC5idG4tc206aG92ZXIsIC5idG4tbGc6aG92ZXIsIC5zdWJtaXQ6aG92ZXIsICNzbGlkZWl0IGlucHV0LnNlbmQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItYmctY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyB9IC5idG4tZGVmYXVsdC5wcm9tb2NvbG9yLCAuYnRuLXNtLnByb21vY29sb3IsIC5idG4tbGcucHJvbW9jb2xvciB7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxZjsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5idG4tZGVmYXVsdC5wcm9tb2NvbG9yOmhvdmVyLCAuYnRuLXNtLnByb21vY29sb3I6aG92ZXIsIC5idG4tbGcucHJvbW9jb2xvcjpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBjb2xvcjojMDUxNDFmOyB9IC5idG4tZGVmYXVsdC5ibGFjaywgLmJ0bi1zbS5ibGFjaywgLmJ0bi1sZy5ibGFjayB7IGJhY2tncm91bmQtY29sb3IgOiMwMDAwMDA7IGJvcmRlciA6MXB4IHNvbGlkICMwMDAwMDA7IGNvbG9yIDojZmZmZmZmOyB9IC5idG4tZGVmYXVsdC5ibGFjay53aXRoYm9yZGVyLCAuYnRuLXNtLmJsYWNrLndpdGhib3JkZXIsIC5idG4tbGcuYmxhY2sud2l0aGJvcmRlciB7IGJvcmRlciA6MXB4IHNvbGlkICNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrOmhvdmVyLCAuYnRuLXNtLmJsYWNrOmhvdmVyLCAuYnRuLWxnLmJsYWNrOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvciA6I2ZmZmZmZjsgY29sb3I6IzAwMDAwMDsgfSAuYnRuLWRlZmF1bHQubm8sIC5idG4tc20ubm8sIC5idG4tbGcubm8geyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7IGJvcmRlcjoxcHggc29saWQgIzU1NTsgY29sb3I6IzAwMDsgfSAuYnRuLWRlZmF1bHQubm86aG92ZXIsIC5idG4tc20ubm86aG92ZXIsIC5idG4tbGcubm86aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6IzY2NjY2NjsgYm9yZGVyOjFweCBzb2xpZCAjNjY2NjY2OyBjb2xvcjojRkZGRkZGOyB9IC5idG4tZGVmYXVsdC5pbnZlcnQsIC5idG4tc20uaW52ZXJ0LCAuYnRuLWxnLmludmVydCwgLmJ0bi1kZWZhdWx0LmludmVydC5mbGF0LCAuYnRuLXNtLmludmVydC5mbGF0LCAuYnRuLWxnLmludmVydC5mbGF0IHsgYmFja2dyb3VuZDogdmFyKC0tdGFiLXRleHQtY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLXRhYi10ZXh0LWNvbG9yKTsgY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYm94LXNoYWRvdzpub25lOyB9IC5idG4tZGVmYXVsdC5pbnZlcnQ6aG92ZXIsIC5idG4tc20uaW52ZXJ0OmhvdmVyLCAuYnRuLWxnLmludmVydDpob3ZlciwgLmJ0bi1kZWZhdWx0LmludmVydC5mbGF0OmhvdmVyLCAuYnRuLXNtLmludmVydC5mbGF0OmhvdmVyLCAuYnRuLWxnLmludmVydC5mbGF0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IH0gLmJ0bi1kZWZhdWx0LnJlZCwgLmJ0bi1zbS5yZWQsIC5idG4tbGcucmVkIHsgYmFja2dyb3VuZDojZmYzMzMzIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjojZmYzMzMzIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCAjZjUxYTFhIWltcG9ydGFudDsgY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7IH0gLmJ0bi1kZWZhdWx0LnJlZDpob3ZlciwgLmJ0bi1zbS5yZWQ6aG92ZXIsIC5idG4tbGcucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOiMzMzMzMzMhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiMzMzMzMzMhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICMzMzMzMzMhaW1wb3J0YW50OyBjb2xvcjojRkZGRkZGIWltcG9ydGFudDsgfSAuYnRuLWRlZmF1bHQud2hpdGUsIC5idG4tc20ud2hpdGUsIC5idG4tbGcud2hpdGUgeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgY29sb3I6IzA1MTQxZjsgYm94LXNoYWRvdzpub25lOyB9IC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyOyBjb2x1bW4tZ2FwOjEuNXJlbTsgcm93LWdhcDowLjVyZW07IGdyaWQtYXV0by1jb2x1bW5zOjAuNWZyOyBtYXJnaW4tYm90dG9tOjEwcHg7IG1hcmdpbi10b3A6MTVweDsgfSAuZGVhbGVyLXNlbGVjdC13cmFwcGVyIC5idG4geyB0ZXh0LXdyYXA6YXV0bzsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nLWxlZnQ6MTBweDsgdHJhbnNpdGlvbjowLjJzIGVhc2UtaW4tb3V0OyBmb250LXdlaWdodDpub3JtYWw7IH0gLmRlYWxlci1zZWxlY3Qtd3JhcHBlciAuYnRuLmZvY3VzZWQsIC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgLmJ0bjpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBjb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMnB4KTsgfSAuYXBwbHktY3JlZGl0IHsgLW1vei1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggIzEyMjEyYzsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggIzEyMjEyYzsgYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICMxMjIxMmM7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLjA1LCAjMzg0NzUyKSwgY29sb3Itc3RvcCgxLCAjMDUxNDFmKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjMzg0NzUyIDUlLCAjMDUxNDFmIDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzM4NDc1MiA1JSwgIzA1MTQxZiAxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCAjMzg0NzUyIDUlLCAjMDUxNDFmIDEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjMzg0NzUyIDUlLCAjMDUxNDFmIDEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMzODQ3NTIgNSUsICMwNTE0MWYgMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmMzMzMycsIGVuZENvbG9yc3RyPScjREIwMDAwJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzM4NDc1MjsgYm9yZGVyOjFweCBzb2xpZCAjMWYyZTM5OyB9IC5hcHBseS1jcmVkaXQ6aG92ZXIgeyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMC4wNSwgIzM4NDc1MiksIGNvbG9yLXN0b3AoMSwgIzA1MTQxZikpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzA1MTQxZiA1JSwgIzM4NDc1MiAxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMwNTE0MWYgNSUsICMzODQ3NTIgMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzA1MTQxZiA1JSwgIzM4NDc1MiAxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzA1MTQxZiA1JSwgIzM4NDc1MiAxMDAlKTsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDUxNDFmIDUlLCAjMzg0NzUyIDEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjMzMzMnLCBlbmRDb2xvcnN0cj0nI0RCMDAwMCcsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiMzODQ3NTI7IH0gLm9mZmVyLWJ0bnsgY29sb3I6dmFyKC0tYnRuLXR4dC1jb2wsIHZhcigtLXVzZWQtb2ZmZXItYnRuLXRleHQtY29sb3IsICNmZmYpKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idG4tYmctY29sLCB2YXIoLS11c2VkLW9mZmVyLWJ0bi1iZy1jb2xvciwgdmFyKC0tcHJvbW8tY29sb3IpKSk7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpICp7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSA6aXMoLm5ld1ZkcEFjdGlvbnMsIC51c2VkVmRwQWN0aW9ucykgLnByb21vQlROeyB0ZXh0LWFsaWduOmxlZnQ7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpIC5wcm9tb0JUTjo6YWZ0ZXJ7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nLCBzZXJpZjsgZm9udC13ZWlnaHQ6OTAwOyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zLCAudXNlZC1kZXRhaWxzLCAubmV3LWRldGFpbHMpIC5wcm9tb0JUTiA+IHNwYW4uZmF7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MS41ZW07IGhlaWdodDoxLjVlbTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjppbmhlcml0OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAuY29tcGxldGVkLnByb21vQlROOjphZnRlcnsgY29udGVudDoiXGYwMGMiOyBjb2xvcjppbmhlcml0OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAuY29tcGxldGVkLnByb21vQlROIHNwYW4uZmF7IGNvbG9yOiMwMDA7IH0gLmdyYXlib3ggLnByb21vQlROLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROeyBib3JkZXItcmFkaXVzOjFweCFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHRleHQtYWxpZ246dW5zZXQ7IGxpbmUtaGVpZ2h0OjEuNXJlbTsgfSAuZ3JheWJveCAuYnV0dG9uX3VuZGVyIC5wcm9tb0JUTiBzdGFjay1sYywgLm5ld1ZkcEFjdGlvbnMgLmJ1dHRvbl91bmRlciAucHJvbW9CVE4gc3RhY2stbGMgeyBmbGV4LWdyb3c6MSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50OyB9IC5tdWx0aWZvcm1fZW1iZWRkZWRfZm9vdGVyIC4tZm9yY2VkLS1hLWNmYTo6YWZ0ZXIgeyBmbGV4OjAgMTsgfSAuZ3JheWJveCAucHJvbW9CVE4uYnRuLWljb25lZHsganVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW46YXV0bzsgd2lkdGg6OTUlOyB9IC5ncmF5Ym94IC5wcm9tb0JUTi5idG4tZGVmYXVsdCBzcGFuLmZheyBkaXNwbGF5Om5vbmU7IH0gLmdyYXlib3ggLnByb21vQlROLmJ0bi1pY29uZWQgc3Bhbi5mYXsgZGlzcGxheTpmbGV4OyB9IC5ncmF5Ym94IC5wcm9tb0JUTiBzcGFuLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROIHNwYW57IG1hcmdpbi1sZWZ0OnVuc2V0OyBsaW5lLWhlaWdodDoxLjVlbTsgfSAucHJvbW9CVE4uY2hldnJvbi1yaWdodCAuY3RhLWxhYmVsIHsgcGFkZGluZy1yaWdodDoxLjVyZW07IH0gLnByb21vQlROLCAucHJvbW9CVE4gYSwgLmJyb2NodXJlQnRueyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IHRleHQtc2hhZG93Om5vbmU7IGFuaW1hdGlvbjphbGwgM3M7IGJvcmRlci1jb2xvcjojMDUxNDFmOyB9IC5wcm9tb0JUTjpob3ZlciwgLnByb21vQlROIGE6aG92ZXJ7IGJhY2tncm91bmQ6IzA1MTQxZjsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOjFweCBzb2xpZCAjMDUxNDFmOyB9IC5wcm9tb0JUTjpob3ZlciA+ICogPiAuZmEsIC5wcm9tb0JUTiBhOmhvdmVyID4gKiA+IC5mYSB7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZjsgfSAucHJvbW9CVE4uZ3Jvdzpob3ZlciB7IHRyYW5zZm9ybTpzY2FsZSgxLjEpOyB9IC5wcm9tb0JUTi5ncm93OmhvdmVyLCAucHJvbW9CVE4uZ3Jvdzpob3ZlciA+ICogPiAuZmEsIC5wcm9tb0JUTi5ncm93IGE6aG92ZXIgPiAqID4gLmZhIHsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjE7IG92ZXJmbG93OmhpZGRlbjsgdHJhbnNpdGlvbjoxcyBhbGwgZWFzZTsgfSA6bm90KC5jdGEtdHJhY2stdHBsKSAucHJvbW9CVE4ucmlwcGxlOmJlZm9yZSB7IGNvbnRlbnQgOiIgIjsgcG9zaXRpb24gOmFic29sdXRlOyB6LWluZGV4IDotMTsgYm9yZGVyLXJhZGl1cyA6MTAwcHg7IHdpZHRoIDowJTsgaGVpZ2h0IDoxMjAlOyB0b3AgOjUwJTsgYm90dG9tIDo1MCU7IGxlZnQgOjUwJTsgcmlnaHQgOjUwJTsgdHJhbnNmb3JtIDp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IHRyYW5zaXRpb24gOmFsbCAwLjZzIGVhc2U7IGJvcmRlcjp1bnNldDsgYmFja2dyb3VuZDojMDUxNDFmOyB9IDpub3QoLmN0YS10cmFjay10cGwpIC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgeyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgYm9yZGVyLWNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTs7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZTpob3ZlcjpiZWZvcmUgeyB3aWR0aDoxMjAlOyB9IC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgc3Bhbi5mYXsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyB9IC5wcm9tb0Fycm93LC5wcm9tb0NvbG9yeyBjb2xvcjojMDUxNDFmIWltcG9ydGFudDsgfSAuYnJvY2h1cmVCdG57IGJvcmRlcjpub25lOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo1cHg7IH0gLnZkcC1idG4geyBib3JkZXItcmFkaXVzOjNweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMDYzcmVtIDsgcGFkZGluZzo4cHggNXB4OyB3aWR0aDoyMzdweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDAwcHgpIHsgLmJ0bi1kZWZhdWx0LCAuY3VzdG9tZm9ybV9zdWJtaXQsIGlucHV0W3R5cGU9YnV0dG9uXS5idG4tZGVmYXVsdCwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1kZWZhdWx0eyBmb250LXNpemU6aW5oZXJpdDsgfSAuYXBwbHktY3JlZGl0IHsgYmFja2dyb3VuZDojMzg0NzUyOyBib3JkZXI6MXB4IHNvbGlkICMxZjJlMzk7IH0gLmFwcGx5LWNyZWRpdDpob3ZlciB7IGJhY2tncm91bmQ6eyRBUFBMWV9DUkVESVRfQlROX0NPTE9SX0VOREhPVkVSQ09MT1J9OyB9IH0gLmJnX2JsdWV7IGJhY2tncm91bmQtY29sb3I6IzA2ODhmYSFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX3JlZHsgYmFja2dyb3VuZC1jb2xvcjojZmYwMDAwIWltcG9ydGFudDsgY29sb3I6I2ZmZjsgfSAuYmdfZ3JlZW57IGJhY2tncm91bmQtY29sb3I6IzY4YTU0YiFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX2JsYWNreyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOiM3OTc5NzkhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ibHVlIGEsLmJnX3JlZCBhLC5iZ19ncmVlbiBhLC5iZ19ibGFjayBhLC5iZ19ncmF5IGEgeyBjb2xvcjojZmZmOyB9IC5iZ19kZWZhdWx0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB9IC5ib3gyN3sgd2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjhweDsgfSAuYm94MjcgYXsgd2lkdGg6MTMxcHg7IGhlaWdodDoyOHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXggOyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI3IGE6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uMTBfYmcucG5nKSBsZWZ0IC0zMnB4IHJlcGVhdC14OyBjb2xvcjojRkZGRkZGOyB9IC5ib3gyOHsgd2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiM2ZjZmNmYgdXJsKC9pbWFnZXMvbGl0ZXJfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6MTBweCAycHggMTBweCAycHg7IG1hcmdpbjowIDBweCAwIDA7IH0gLnRleHQ0NHsgd2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpdGVyX2xpbmUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweDsgfSAuY29uc3VtcHRpb24tbm90LWF2YWlsYWJsZSA+IC50ZXh0NDQgPiBzcGFuID4gI2NpdHlGdWVsIHsgZGlzcGxheTpub25lOyB9IC5jb25zdW1wdGlvbi1ub3QtYXZhaWxhYmxlID4gLnRleHQ0NCA+IHNwYW4gPiAjaGlnaHdheUZ1ZWwgeyBkaXNwbGF5Om5vbmU7IH0gLnRleHRfc2xpZGUgYSB7IGhlaWdodDozOHB4OyBtYXJnaW4tcmlnaHQ6MC4zZW07IHBhZGRpbmctdG9wOjFweCAhaW1wb3J0YW50OyB9IC50ZXh0X3NsaWRlIGEgPiBiIHsgZGlzcGxheTpibG9jazsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlOyBoZWlnaHQ6MjVweDsgd2lkdGg6MTAwJTsgfSAudGV4dF9zbGlkZSBhID4gYiA+IG0xIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aGl0ZS1zcGFjZTpub3dyYXA7IGxpbmUtaGVpZ2h0OjM4cHggIWltcG9ydGFudDsgdG9wOi04cHg7IGxlZnQ6MDsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzQgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzQgNHMgZWFzZSA1czsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzMgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzMgM3MgZWFzZSA0czsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS50ZXh0X3NsaWRlXzIgYSA+IGIgPiBtMSB7IGFuaW1hdGlvbjp0ZXh0X3NsaWRlXzIgMnMgZWFzZSAyczsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgfSAudGV4dF9zbGlkZS5wcm9tb2NvZGVib3ggeyBwYWRkaW5nOjBweCAwcHg7IG1hcmdpbi1sZWZ0OjBweDsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDo5cHg7IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzQgeyAwJSB7IHRvcDotOHB4OyB9IDI1JSB7IHRvcDotNDZweDsgfSA1MCUgeyB0b3A6LTg0cHg7IH0gNzUlIHsgdG9wOi0xMjJweDsgfSAxMDAlIHsgdG9wOi0xNjBweDsgfSB9IEBrZXlmcmFtZXMgdGV4dF9zbGlkZV8zIHsgMCUgeyB0b3A6LThweDsgfSAzMyUgeyB0b3A6LTQ2cHg7IH0gNjYlIHsgdG9wOi04NHB4OyB9IDEwMCUgeyB0b3A6LTEyMnB4OyB9IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzIgeyAwJSB7IHRvcDotOHB4OyB9IDUwJSB7IHRvcDotNDZweDsgfSAxMDAlIHsgdG9wOi04NHB4OyB9IH0gLm1hcCB7IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubWFwIC53cmFwcGVyeyBwb3NpdGlvbjpzdGF0aWMgIWltcG9ydGFudDsgfSAubWFwX2RlYWxlcl9saXN0IHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHBhZGRpbmc6MCAzMHB4OyB3aWR0aDozMTVweDsgaGVpZ2h0OjEwMCU7IHRleHQtYWxpZ246bGVmdDsgb3ZlcmZsb3cteTphdXRvOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbSB7IGN1cnNvcjpwb2ludGVyOyBwYWRkaW5nOjEzcHggMDsgZm9udC1zaXplOjAuODEzcmVtIDsgfSAubWFwX2RlYWxlcl9saXN0X2l0ZW1fbmFtZSB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lOmhvdmVyIHsgZm9udC13ZWlnaHQ6NzAwOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lX2FjdGl2ZSB7IGZvbnQtd2VpZ2h0OjcwMDsgfSAubWFya2VyU3BhbiB7IGhlaWdodDoxOHB4OyB3aWR0aDoyMHB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5tYXJrZXJTcGFuOmJlZm9yZSB7IGNvbnRlbnQ6Jyc7IGhlaWdodDo0cHg7IHdpZHRoOjRweDsgYm9yZGVyOjJweCBzb2xpZCAjMzMzOyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgbGVmdDowcHg7IHotaW5kZXg6MTsgYmFja2dyb3VuZDojZmZmOyBsaW5lLWhlaWdodDoyNnB4OyBib3JkZXItcmFkaXVzOjQwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0MHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NDBweDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm1hcmtlclNwYW46YWZ0ZXIgeyBjb250ZW50OicnOyBoZWlnaHQ6MHB4OyB3aWR0aDowcHg7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206MnB4OyBsZWZ0OjJweDsgYm9yZGVyOjEwcHggdHJhbnNwYXJlbnQgc29saWQ7IGJvcmRlci10b3AtY29sb3I6IzMzMzsgYm9yZGVyLXdpZHRoOjdweCAycHggMHB4IDJweDsgfSAubWFwX29wZW5faG91cnMgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgd2lkdGg6NDAwcHg7IGhlaWdodDoxMDAlOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLm9wZW5faG91cnNfY29udGFpbmVyIHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYm94LXNpemluZzpib3JkZXItYm94OyB0ZXh0LWFsaWduOmxlZnQ7IH0gLm1hcF9vcGVuX2hvdXJzIC5tYXBfb3Blbl9ob3Vycy0tdGl0bGUsIC5vcGVuX2hvdXJzX2NvbnRhaW5lciBoMiwgLm9wZW5faG91cnNfY29udGFpbmVyIHNwYW4uaDItYWx0IHsgZm9udC1zaXplOjEuNWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWxlZnQ6MTVweDsgbWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGNvbG9yOmluaGVyaXQ7IH0gLm1hcF9vcGVuX2hvdXJzIHVsLCAub3Blbl9ob3Vyc19jb250YWluZXIgdWwgeyBwYWRkaW5nOjAgMDsgfSAubWFwX29wZW5faG91cnMgdWwgbGksIC5vcGVuX2hvdXJzX2NvbnRhaW5lciB1bCBsaSB7IGxpc3Qtc3R5bGU6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGN1cnNvcjpoYW5kOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZjNmM2YzOyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmR7IHBhZGRpbmc6NnB4IDMwcHggOHB4IDE1cHg7IGRpc3BsYXk6YmxvY2s7IH0gLmV4cGFuZGFibGVfY29udGVudHsgcGFkZGluZzowcHggMTZweCA1cHggMTZweDsgZm9udC1zaXplOjAuODc1cmVtIDsgbGluZS1oZWlnaHQ6MS40Mjg1NzE0MzsgfSAuZXhwYW5kYWJsZV9jb250ZW50IGRpdiwgLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIGRpdiB7IGRpc3BsYXkgOmZsZXg7IGZsZXgtZGlyZWN0aW9uIDpyb3c7IH0gLmV4cGFuZGFibGVfY29udGVudCA+IGRpdiA+IHNwYW46Zmlyc3Qtb2YtdHlwZSwgLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIGRpdiBzcGFuOmZpcnN0LW9mLXR5cGUgeyB3aWR0aDo0MCU7IH0gLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9ueyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyBtYXJnaW4tdG9wOjE1cHg7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoIDo3NTlweCkgeyAuZXhwYW5kYWJsZV9jb250ZW50LCAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb24geyBmb250LXNpemU6aW5oZXJpdDsgfSB9IC5leHBhbmRhYmxlX2NvbnRlbnRfbXVsdGlsb2NhdGlvbiB0YWJsZXsgbWFyZ2luLXRvcDoxNXB4OyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmRfYXJyb3d7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tdG9wOjNweDsgfSAubWFwX29wZW5faG91cnNfZXhwYW5kX2Fycm93LmV4cGFuZGVkeyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZXsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgfSAubWFwX29wZW5faG91cnNfbW9iaWxlIC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUtLXRpdGxlIHsgZm9udC1zaXplOnZhcigtLWZzNCk7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgdWx7IHBhZGRpbmc6MCAwOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgdWwgbGl7IGxpc3Qtc3R5bGU6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNmM2YzZjM7IH0gLm1haW5fbGVmdF9ib3ggI2Zvb3Rlckdvb2dsZU1hcEhvdXJzQ29udGFpbmVyeyB3aWR0aDo5NjBweDsgfSAudmlkZW9CdG5TbGlkZXIsIC5waG90b0J0blNsaWRlcnsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlcjoxcHggc29saWQgIzA1MTQxZjsgY29sb3I6IzA1MTQxZjsgd2lkdGg6NzVweDsgaGVpZ2h0Ojc1cHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgb3BhY2l0eTowLjU7IH0gLnZpZGVvQnRuU2xpZGVyOmhvdmVyLCAucGhvdG9CdG5TbGlkZXI6aG92ZXJ7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IHdpZHRoOjc1cHg7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWY7IG9wYWNpdHk6MC41OyB9IC5waG90b0J0blNsaWRlciAuZmEsIC52aWRlb0J0blNsaWRlciAuZmF7IGNvbG9yOiMwNTE0MWY7IH0gLnBob3RvQnRuU2xpZGVyOmhvdmVyIC5mYSwgLnZpZGVvQnRuU2xpZGVyOmhvdmVyIC5mYXsgY29sb3I6I2ZmZmZmZjsgfSAudmlkZW9CdG5TbGlkZXJVc2VkLCAucGhvdG9CdG5TbGlkZXJVc2VkeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjYjNiM2IzOyBjb2xvcjojYjNiM2IzOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBvcGFjaXR5OjAuOTsgfSAudmlkZW9CdG5TbGlkZXJVc2VkOmhvdmVyLCAucGhvdG9CdG5TbGlkZXJVc2VkOmhvdmVyeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjZmZmZmZmOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojYjNiM2IzOyBvcGFjaXR5OjAuNTsgfSAucGhvdG9CdG5TbGlkZXJVc2VkIC5mYSwgLnZpZGVvQnRuU2xpZGVyVXNlZCAuZmF7IGNvbG9yOiNiM2IzYjM7IH0gLnBob3RvQnRuU2xpZGVyVXNlZDpob3ZlciAuZmEsIC52aWRlb0J0blNsaWRlclVzZWQ6aG92ZXIgLmZheyBjb2xvcjojZmZmZmZmOyB9IC52aWRlb3NfcGljdHVyZXNfYnV0dG9uc19jb250YWluZXJ7IGxlZnQ6NXB4OyBib3R0b206ODJweDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6OTk5OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOi04MHB4OyB9IC4tZGlzcGxheS1ub25leyBkaXNwbGF5Om5vbmU7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFweyB0ZXh0LWFsaWduOmNlbnRlcjsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBwYWRkaW5nOjQwcHggMTVweDsgfSAjZGVmYXVsdFRvcEJhbm5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBjdXJzb3I6cG9pbnRlcjsgfSAjZGVmYXVsdFRvcEJhbm5lclRpdGxlLCAjZGVmYXVsdFRvcEJhbm5lclRleHR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFwIGRpdi5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjMwcHggMCAyMHB4IDA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJCdG57IHBhZGRpbmc6MTBweCAzMHB4OyBiYWNrZ3JvdW5kOmJsYWNrOyBib3JkZXI6MnB4IHdoaXRlIHNvbGlkOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBib3gtc2hhZG93OjBweCAycHggMTNweCAwcHggIzFiMWIxYjsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBmb250LXNpemU6My4xMjVyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjIuODEzcmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjMuMTI1cmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6Mi44MTNyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZTplbXB0eXsgbWFyZ2luOjAgIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICNnb29nbGVfcmV2aWV3c3sgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgbGlzdC1zdHlsZTpub25lOyBwYWRkaW5nOjA7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIHsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgd2lkdGg6aW5pdGlhbCAhaW1wb3J0YW50OyBwYWRkaW5nOmluaXRpYWw7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIGkgeyBjb2xvcjojRTRCMjQ4OyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgbGkgaS5pbmFjdGl2ZSB7IGNvbG9yOiNjNmM2YzY7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXI6YWZ0ZXIgeyBjb250ZW50OiJcMjYwNSI7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dHsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo1cHggOHB4OyBoZWlnaHQ6MjdweDsgbGluZS1oZWlnaHQ6MjdweDsgfSAucmV2aWV3LWF1dGhvcnsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjZWFzeS1ncGxhY2VzLXJldmlld3MtYnV0LmRlZmF1bHR7IGNvbG9yOiM0NDQ7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudChjZW50ZXIgdG9wICwgI2Y1ZjVmNSwgI2YxZjFmMSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOyB9ICNlYXN5LWdwbGFjZXMtcmV2aWV3cy1idXQucmVkeyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICNERDRCMzksICNEMTQ4MzYpOyBib3JkZXI6MXB4IHNvbGlkICNEMTQ4MzY7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dC5ibHVleyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiM0RDkwRkU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICM0RDkwRkUsICM0Nzg3RUQpOyBib3JkZXI6MXB4IHNvbGlkICMzMDc5RUQ7IH0gLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGlmcmFtZSwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGVtYmVkIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW47IG1heC13aWR0aDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTIgaWZyYW1lLCAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUyIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlMiBlbWJlZCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAjc2VhcmNoQ3JpdGVyaWFXOjphZnRlciwgI2FjdGlvbkJveEJ0bjo6YWZ0ZXIsICNsaW5rQ29udGFpbmVyOjphZnRlcnsgY29udGVudDonJzsgaGVpZ2h0OjFweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1ib3R0b206JzE1cHgnOyB9ICNzZWFyY2hDcml0ZXJpYVc6OmFmdGVyLCAjYWN0aW9uQm94QnRuOjphZnRlciwgI2xpbmtDb250YWluZXI6OmFmdGVyeyBiYWNrZ3JvdW5kOiNhYWE7IHdpZHRoOjI4MHB4OyB9IC5iYW5uZXJQb3B1cENsb3NleyBjb2xvcjojYWFhOyB9IC5zZWVWaWRlb0J0bjF7IGJhY2tncm91bmQtY29sb3I6IzAwMCAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNmZmYgIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyB9IC5zZWVWaWRlb0J0bjE6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICMwMDAgIWltcG9ydGFudDsgY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyB9ICNib3R0b21MZWZ0QmFubmVySW1hZ2V7IG1hcmdpbjoxMHB4IDBweCAwcHg7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGN1cnNvcjpwb2ludGVyOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXB7IHRleHQtYWxpZ246Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6MTVweDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUaXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjIuMTg4cmVtIDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUZXh0eyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6MS45MzhyZW0gOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXAgZGl2LmRlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjIwcHggMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRueyBwYWRkaW5nOjdweCAyMXB4OyBiYWNrZ3JvdW5kOmJsYWNrOyBib3JkZXI6MnB4IHdoaXRlIHNvbGlkOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBib3gtc2hhZG93OjBweCAycHggMTNweCAwcHggIzFiMWIxYjsgZm9udC1zaXplOjcwJTsgfSAubWFpbkRpdi13cmFwcGVyIHsgcGFkZGluZy10b3A6MC4wMXJlbTsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEgeyBwYWRkaW5nOjAgMTJweDsgaGVpZ2h0OjI2cHg7IGxpbmUtaGVpZ2h0OjI3cHg7IGJvcmRlci1yYWRpdXM6MDsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOndoaXRlOyBjb2xvcjojMDUxNDFmOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYS5idG4geyBmb250LXdlaWdodDpub3JtYWw7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gLmJ0bi1kZWZhdWx0OmhvdmVyIHsgYm9yZGVyLWNvbG9yOiMwNTE0MWY7IGJvcmRlci1jb2xvcjojZmZmZmZmOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5Om5vbmU7IGJveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIC4xNzUpOyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MzUwcHg7IHJpZ2h0OjA7IHBhZGRpbmc6MTVweDsgei1pbmRleDo5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBoZWlnaHQ6YXV0bzsgdG9wOjIzcHg7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIGRpdjpub3QoW2NsYXNzXSkgeyBmbG9hdDppbml0aWFsOyB3aWR0aDoxMDAlOyBtYXJnaW4tcmlnaHQ6MDsgdGV4dC1hbGlnbjppbml0aWFsOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyOmhvdmVyIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5OmJsb2NrOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIuaXNPcGVuIC5zaG9ydC1zZXJ2aWNlLWZvcm0geyBkaXNwbGF5OmJsb2NrOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciAubWFpbHdpZGdldC0tZm9ybS1yb3csIC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciAubWFpbHdpZGdldC0tZm9ybS1yb3cgZGl2IHsgbWFyZ2luLXJpZ2h0OmluaGVyaXQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsgZmxvYXQ6bm9uZTsgfSAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgLm1haWx3aWRnZXQtLWZvcm0tcm93IHRhYmxlIHRleHRhcmVhIHsgd2lkdGg6Y2FsYygxMDAlICsgMnB4KSAhaW1wb3J0YW50OyB9ICN1c2VkXzQwNF9tZXNzYWdlIHsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MzBweDsgYm9yZGVyOjFweCBzb2xpZCAjZjAwOyBtYXJnaW46MCAwIDIwcHggMDsgfSAuYXVkaS10aXRsZSBoMiB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuYXVkaS1jb2xvciB7IGNvbG9yOiNiYjBhMzA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gZGl2I3NvY2lhbF9tZWRpYV9pY29uc19kaXYgeyBmb250LXNpemU6aW5oZXJpdDsgfSBhLnNvY2lhbC1saW5rIHsgLS1mczp2YXIoLS1mczYpOyAtLXR4dC1jb2xvcjojMDUxNDFmOyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IC5zb2NpYWwtbGlua1tkYXRhLXRvb2x0aXA9J1lvdXR1YmUnXSAuc29jaWFsLWljb25zIHsgbWFyZ2luLXJpZ2h0OjNweDsgfSAucGF5cGFsX2J1dHRvbl9odG1sIHRhYmxleyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6d2hpdGU7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MCAwIDEwcHggMDsgYm9yZGVyLXJhZGl1czozcHggM3B4IDAgMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnBheXBhbF9idXR0b25faHRtbCB0YWJsZSB0cjpmaXJzdC1jaGlsZHsgZm9udC1zaXplOjEuMTI1cmVtIDsgaGVpZ2h0OjQwcHg7IH0gLnBheXBhbF9idXR0b25faHRtbCB0YWJsZSBzZWxlY3R7IGJvcmRlci1yYWRpdXM6NXB4OyB3aWR0aDoyMDBweDsgaGVpZ2h0OjM1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0gLnBheXBhbF9idXR0b25faHRtbCBpbnB1dFt0eXBlPSJpbWFnZSJdW25hbWU9InN1Ym1pdCJdeyB3aWR0aDoxMDAlOyBib3JkZXI6bm9uZTsgcGFkZGluZzowOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MDBweCkgeyAucGF5cGFsX2J1dHRvbl9odG1seyB3aWR0aDo5MCU7IG1hcmdpbjowIGF1dG87IH0gfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIHsgei1pbmRleDoxMDAwMDAwMDAyMTsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLmRlc2t0b3AgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLmRlc2t0b3Agc2VsZWN0IHsgbWF4LXdpZHRoOjMwMHB4OyBtYXJnaW46MCBhdXRvOyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24uc21hbGwgeyBwYWRkaW5nOjIwcHggMTBweDsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIGxhYmVsIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiAjbXV0bGlBZGRyZXNzU3VibWl0IHsgbWFyZ2luOjAgYXV0bzsgbWFyZ2luLXRvcDo4cHg7IGRpc3BsYXk6dGFibGU7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiAjbXVsdGktZGVhbGVyLW1hcCB7IGhlaWdodDo1MjBweDsgbWFyZ2luLWJvdHRvbToxMnB4OyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24ucmV2ZWFsLW1vZGFsIHNwYW4geyBmb250LXNpemU6aW5oZXJpdDsgfSAudmFsaWRpdHktZXJyb25lb3VzIHsgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMhaW1wb3J0YW50OyB9IC5ib3g0LnZhbGlkaXR5LWVycm9uZW91cywgLmJveDUudmFsaWRpdHktZXJyb25lb3VzIHsgd2lkdGg6MjYzcHg7IH0gLmZvcm0tY29udHJvbCB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IGhlaWdodDozNHB4OyBwYWRkaW5nOjZweCAxMnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyBjb2xvcjojNTU1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOyAtd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyAtby10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgLXdlYmtpdC10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXMsLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IH0gLmJhbm5lci1mb3JtLWJveCB7IHBhZGRpbmc6MzBweDsgYmFja2dyb3VuZC1jb2xvcjo7IGNvbG9yOjsgfSAuYmFubmVyLWZvcm0tdGl0bGUgeyBmb250LXdlaWdodDo2MDA7IGZvbnQtc2l6ZToxOHB0OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYmFubmVyLWZvcm0tc3VidGl0bGUgeyBmb250LXNpemU6MTEuNXB0OyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYmFubmVyLWZvcm0tYm9keSB7IG1hcmdpbi1ib3R0b206MjVweDsgfSAuYmFubmVyLWZvcm0tYm9keSAuZm9ybS1jb250cm9sIHsgaGVpZ2h0OjQxcHg7IG1hcmdpbi1ib3R0b206MTVweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmJhbm5lci1mb3JtLWJveC1mb290ZXIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyB9IC5iYW5uZXItZm9ybS1ib3gtaGVhZGVyIHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTVweDsgfSAuYnRuLmJhbm5lci1idG4geyBwYWRkaW5nOjZweCAyNHB4OyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOjsgY29sb3I6OyB9IC5idG4uYmFubmVyLWJ0bjpob3ZlciB7IGJveC1zaGFkb3c6aW5zZXQgMCAwIDEwMHB4IDEwMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsgfSAuYnRuIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6NnB4IDEycHg7IG1hcmdpbi1ib3R0b206MDsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6NDAwOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2hpdGUtc3BhY2U6bm93cmFwOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IC1tcy10b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOyB0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOyBjdXJzb3I6cG9pbnRlcjsgLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyAtbW96LXVzZXItc2VsZWN0Om5vbmU7IC1tcy11c2VyLXNlbGVjdDpub25lOyB1c2VyLXNlbGVjdDpub25lOyBib3JkZXItcmFkaXVzOjRweDsgfSAubGF6eWxvYWR7IHZpc2liaWxpdHk6aGlkZGVuOyB9IC5nYm94IHsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgfSAucGQgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBmb250LXNpemU6MC41ZW07IHZlcnRpY2FsLWFsaWduOnN1cGVyOyB9IC51aS1sb2FkZXItYmFja2dyb3VuZHsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHRvcDowOyBwYWRkaW5nOjA7IG1hcmdpbjowOyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMC4zKTsgZGlzcGxheTpub25lOyBwb3NpdGlvbjpmaXhlZDsgei1pbmRleDoxMDAwMDAwMDA7IH0gLnVpLWxvYWRlci1iYWNrZ3JvdW5kLWdpZnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1MCU7IGxlZnQ6NTAlOyB9IC5kMmNGb290ZXJDb29raWVEZWxldGVUaXRsZSB7IGZvbnQtc2l6ZToxLjNlbTsgfSAuZDJjRm9vdGVyQ29va2llRGVsZXRlVGV4dCB7IG1hcmdpbi10b3A6MzBweDsgfSAubW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXJfYnRueyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IHBhZGRpbmc6MTBweCAyMHB4IDEwcHggMjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLm1vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX2J0biBzcGFueyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IH0gI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX3Ntc3sgYmFja2dyb3VuZDojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9ICNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lcl9zbXMgc3BhbnsgYmFja2dyb3VuZDojMDUxNDFmOyBjb2xvcjojZmZmZmZmOyB9IC5ibGFja0NvbG9yQm9sZHsgY29sb3I6IzAwMCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGZvbnQtc2l6ZToxcmVtICFpbXBvcnRhbnQ7IH0gLmZsZXgtY2VudGVyIC5yZXNwb25zaXZlLWVkaXRvciB7IGZsZXgtZ3JvdzoxOyB9IC5yZXZlYWwtbW9kYWx7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gLmdtLXN0eWxlLWl3LWQgeyBwYWRkaW5nLXRvcDoxMnB4OyBtYXJnaW4tcmlnaHQ6LTI0cHg7IH0gLmdtLXN0eWxlIC5nbS1zdHlsZS1pdy1jIHsgZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7IH0gLmdyZWNhcHRjaGEtYmFkZ2UgeyBib3R0b206MTAwcHggIWltcG9ydGFudDsgfQovKiogL2Nzcy9mb250cy5TaWduYXR1cmVMaWdodC5jc3MgKiovCkBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J1NpZ25hdHVyZUxpZ2h0Jztmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVMaWdodC53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVMaWdodC53b2ZmJylmb3JtYXQoJ3dvZmYnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonU2lnbmF0dXJlTGlnaHQnO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVCb2xkLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0tpYVNpZ25hdHVyZUJvbGQud29mZicpZm9ybWF0KCd3b2ZmJyk7fQovKiogL2Nzcy9mb250cy5TaWduYXR1cmUuY3NzICoqLwpAZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidTaWduYXR1cmUnO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0tpYVNpZ25hdHVyZVJlZ3VsYXIud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvS2lhU2lnbmF0dXJlUmVndWxhci53b2ZmJylmb3JtYXQoJ3dvZmYnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonU2lnbmF0dXJlJztmb250LXdlaWdodDpib2xkO2ZvbnQtc3R5bGU6bm9ybWFsO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvS2lhU2lnbmF0dXJlQm9sZC53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9LaWFTaWduYXR1cmVCb2xkLndvZmYnKWZvcm1hdCgnd29mZicpO30KLyoqIC9jc3MvYmFzZS5jc3MgKiovCnN0YWNrLWxjLCAuc3RhY2stbGMgeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgfSBzdGFjay1sYyA+ICosIC5zdGFjay1sYyA+ICogeyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206MDsgfSBzdGFjay1sYyA+ICogKyAqLCAuc3RhY2stbGMgPiAqICsgKiB7IG1hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyB9IHN0YWNrLWxjLi0tczAgPiAqICsgKiwgLnN0YWNrLWxjLi0tczAgPiAqICsgKiB7IGJvcmRlci13aWR0aDowOyBib3JkZXItdG9wLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgYm9yZGVyLWNvbG9yOmluaGVyaXQ7IH0gLmJveC1sYywgYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOnZhcigtLXNwYWNlKTsgb3V0bGluZTp2YXIoLS1ib3JkZXItdGhpbikgdHJhbnNwYXJlbnQ7IG91dGxpbmUtb2Zmc2V0OmNhbGModmFyKC0tYm9yZGVyLXRoaW4pICogLTEpOyB9IC5ib3gtbGMsIGJveC1sYyAqIHsgY29sb3I6aW5oZXJpdDsgfSAuYmctYm94eyBjb2xvcjp2YXIoLS1ibGFjayk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0td2hpdGUpOyBib3JkZXItd2lkdGg6dmFyKC0tYm9yZGVyLXRoaW4pOyB9IC5nbGFzcy1ib3h7IGJvcmRlcjpub25lOyBiYWNrZ3JvdW5kOm5vbmU7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGNvbG9yOmluaGVyaXQ7IH0gLmN0ci1ib3gsIC5mbGV4LWJveCwgLmZsZXgtY29sdW1uLCAuZmxleC1hcm91bmQsIC5mbGV4LWJldHdlZW4sIC5mbGV4LWV2ZW5seSwgLmZsZXgtY2VudGVyLCAuZmxleC1zdGFydCwgLmZsZXgtZW5kLCAuZmxleC1hdXRvLCAuZmxleC1lcXVhbHsgZGlzcGxheTpmbGV4OyB9IC5pbmxpbmUtYm94eyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuc2hhZG93LWJveHsgYm94LXNoYWRvdzowIDAgMTBweCAycHggdmFyKC0tbWlkLWdyYXkpOyBib3JkZXItY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IH0gLmZsZXgtYm94Om5vdCg6aXMoLmZsZXgtYmV0d2VlbiwuZmxleC1ldmVubHksLmZsZXgtYXJvdW5kKSkgPiAqICsgKnsgbWFyZ2luLWxlZnQ6dmFyKC0tcyk7IH0gLmdyb3VwLWxjLCBncm91cC1sYyB7IC0tc3BhY2U6dmFyKC0tcywgMC41cmVtKTsgfSAuZ3JvdXAtbGMgPiAqLCBncm91cC1sYyA+ICogeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyICogLTEpOyB9IC5ncm91cC1sYyA+ICogPiAqLCBncm91cC1sYyA+ICogPiAqIHsgbWFyZ2luOmNhbGModmFyKC0tc3BhY2UpIC8gMik7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpIHsgb3ZlcmZsb3c6aGlkZGVuOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSA+ICogeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIgKiAtMSk7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpID4gKiA+ICogeyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyKTsgZmxleC1ncm93OjE7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpID4gKiA+IDpmaXJzdC1jaGlsZCB7IGZsZXgtYmFzaXM6MDsgZmxleC1ncm93Ojk5OTsgbWluLXdpZHRoOmNhbGModmFyKC0tc2lkZWJhci1icCwgNTAlKSAtIHZhcigtLXNwYWNlKSk7IH0gOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW46Y2FsYygodmFyKC0tc3BhY2UpIC8gMikgKiAtMSk7IH0gOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqID4gKiB7IGZsZXgtZ3JvdzoxOyBmbGV4LWJhc2lzOmNhbGMoKHZhcigtLXN3aXRjaC1icCwgMzByZW0pIC0gKDEwMCUgLSB2YXIoLS1zcGFjZSkpKSAqIDk5OSk7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIpOyB9IDppcyguc3dpdGNoZXItbGMsc3dpdGNoZXItbGMpID4gKiA+IDpudGgtbGFzdC1jaGlsZChuKzUpLCA6aXMoLnN3aXRjaGVyLWxjLHN3aXRjaGVyLWxjKSA+ICogPiA6bnRoLWxhc3QtY2hpbGQobis1KSB+ICogeyBmbGV4LWJhc2lzOjEwMCU7IH0gLi0tczB7LS1zcGFjZTp2YXIoLS1zMCk7fSAuLS1zLTl7LS1zcGFjZTp2YXIoLS1zLTkpO30gLi0tcy04ey0tc3BhY2U6dmFyKC0tcy04KTt9IC4tLXMtN3stLXNwYWNlOnZhcigtLXMtNyk7fSAuLS1zLTZ7LS1zcGFjZTp2YXIoLS1zLTYpO30gLi0tcy01ey0tc3BhY2U6dmFyKC0tcy01KTt9IC4tLXMtNHstLXNwYWNlOnZhcigtLXMtNCk7fSAuLS1zLTN7LS1zcGFjZTp2YXIoLS1zLTMpO30gLi0tcy0yey0tc3BhY2U6dmFyKC0tcy0yKTt9IC4tLXMtMXstLXNwYWNlOnZhcigtLXMtMSk7fSAuLS1zey0tc3BhY2U6dmFyKC0tcyk7fSAuLS1zMXstLXNwYWNlOnZhcigtLXMxKTt9IC4tLXMyey0tc3BhY2U6dmFyKC0tczIpO30gLi0tczN7LS1zcGFjZTp2YXIoLS1zMyk7fSAuLS1zNHstLXNwYWNlOnZhcigtLXM0KTt9IC4tLXM1ey0tc3BhY2U6dmFyKC0tczUpO30gLi0tczZ7LS1zcGFjZTp2YXIoLS1zNik7fSAuLS1zN3stLXNwYWNlOnZhcigtLXM3KTt9IC4tLXM4ey0tc3BhY2U6dmFyKC0tczgpO30gLi0tczl7LS1zcGFjZTp2YXIoLS1zOSk7fSAuLS1mcy05e2ZvbnQtc2l6ZTp2YXIoLS1mcy05KTstLWZzOnZhcigtLWZzLTkpO30gLi0tZnMtOHtmb250LXNpemU6dmFyKC0tZnMtOCk7LS1mczp2YXIoLS1mcy04KTt9IC4tLWZzLTd7Zm9udC1zaXplOnZhcigtLWZzLTcpOy0tZnM6dmFyKC0tZnMtNyk7fSAuLS1mcy02e2ZvbnQtc2l6ZTp2YXIoLS1mcy02KTstLWZzOnZhcigtLWZzLTYpO30gLi0tZnMtNXtmb250LXNpemU6dmFyKC0tZnMtNSk7LS1mczp2YXIoLS1mcy01KTt9IC4tLWZzLTR7Zm9udC1zaXplOnZhcigtLWZzLTQpOy0tZnM6dmFyKC0tZnMtNCk7fSAuLS1mcy0ze2ZvbnQtc2l6ZTp2YXIoLS1mcy0zKTstLWZzOnZhcigtLWZzLTMpO30gLi0tZnMtMntmb250LXNpemU6dmFyKC0tZnMtMik7LS1mczp2YXIoLS1mcy0yKTt9IC4tLWZzLTF7Zm9udC1zaXplOnZhcigtLWZzLTEpOy0tZnM6dmFyKC0tZnMtMSk7fSAuLS1mczB7Zm9udC1zaXplOnZhcigtLWZzMCk7LS1mczp2YXIoLS1mczApO30gLi0tZnMxe2ZvbnQtc2l6ZTp2YXIoLS1mczEpOy0tZnM6dmFyKC0tZnMxKTt9IC4tLWZzMntmb250LXNpemU6dmFyKC0tZnMyKTstLWZzOnZhcigtLWZzMik7fSAuLS1mczN7Zm9udC1zaXplOnZhcigtLWZzMyk7LS1mczp2YXIoLS1mczMpO30gLi0tZnM0e2ZvbnQtc2l6ZTp2YXIoLS1mczQpOy0tZnM6dmFyKC0tZnM0KTt9IC4tLWZzNXtmb250LXNpemU6dmFyKC0tZnM1KTstLWZzOnZhcigtLWZzNSk7fSAuLS1mczZ7Zm9udC1zaXplOnZhcigtLWZzNik7LS1mczp2YXIoLS1mczYpO30gLi0tZnM3e2ZvbnQtc2l6ZTp2YXIoLS1mczcpOy0tZnM6dmFyKC0tZnM3KTt9IC4tLWZzOHtmb250LXNpemU6dmFyKC0tZnM4KTstLWZzOnZhcigtLWZzOCk7fSAuLS1mczl7Zm9udC1zaXplOnZhcigtLWZzOSk7LS1mczp2YXIoLS1mczkpO30gLnNocmluay1ncm93e2ZsZXg6MSAxO30gLmZsZXgtd3JhcCB7ZmxleC13cmFwOndyYXA7fSAuZmxleC1yZXZlcnNlIHtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTt9IC5mbGV4LWF1dG8gPiAqe2ZsZXg6MSAxIGF1dG87fSAuZmxleC1lcXVhbCA+ICp7ZmxleDoxIDE7fSAuYWxpZ24tY2VudGVyIHthbGlnbi1pdGVtczpjZW50ZXI7fSAuYWxpZ24tc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt9IC5hbGlnbi1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQ7fSAuYWxpZ24tYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmU7fSAuZmxleC1jb2x1bW4ge2ZsZXgtZmxvdzpjb2x1bW47fSAuZmxleC1yb3cge2ZsZXgtZmxvdzpyb3c7fSAuZmxleC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDt9IC5mbGV4LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47fSAuZmxleC1ldmVubHl7anVzdGlmeS1jb250ZW50OnNwYWNlLWV2ZW5seTt9IC5mbGV4LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO30gLmZsZXgtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7fSAuZmxleC1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO30gLi1wMCB7cGFkZGluZzowO30gLi1wdDAge3BhZGRpbmctdG9wOjA7fSAuLXBiMCB7cGFkZGluZy1ib3R0b206MDt9IC4tcHYwIHtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjB9IC4tcGgwIHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9IC4tcCB7cGFkZGluZzp2YXIoLS1zcGFjZSk7fSAuLXB2e3BhZGRpbmctdG9wOnZhcigtLXNwYWNlKTsgcGFkZGluZy1ib3R0b206dmFyKC0tc3BhY2UpO30gLi1waHtwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2UpOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXNwYWNlKTt9IC4tcHR7cGFkZGluZy10b3A6dmFyKC0tc3BhY2UpO30gLi1wYntwYWRkaW5nLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLW0wIHttYXJnaW46MDt9IC4tbXQwIHttYXJnaW4tdG9wOjA7fSAuLW1iMCB7bWFyZ2luLWJvdHRvbTowO30gLi1tdjAge21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9IC4tbWgwIHttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfSAuLW0ge21hcmdpbjp2YXIoLS1zcGFjZSk7fSAuLW12e21hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyBtYXJnaW4tYm90dG9tOnZhcigtLXNwYWNlKTt9IC4tbWh7bWFyZ2luLWxlZnQ6dmFyKC0tc3BhY2UpOyBtYXJnaW4tcmlnaHQ6dmFyKC0tc3BhY2UpO30gLi1tdHttYXJnaW4tdG9wOnZhcigtLXNwYWNlKTt9IC4tbWJ7bWFyZ2luLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLWIwIHtib3JkZXI6bm9uZTt9IC4tYjIge2JvcmRlci13aWR0aDoycHg7fSAuLWJ7Ym9yZGVyLXdpZHRoOjFweDt9IC4tYnR7Ym9yZGVyLXRvcC13aWR0aDoxcHg7fSAuLWJie2JvcmRlci1ib3R0b20td2lkdGg6MXB4O30gLi1idntib3JkZXItdG9wLXdpZHRoOjFweDtib3JkZXItYm90dG9tLXdpZHRoOjFweDt9IC4tYmh7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoxcHg7fSAuLXctZnVsbCB7d2lkdGg6MTAwdnc7fSAuLXctMTAwIHt3aWR0aDoxMDAlO30gLi13LTUwIHt3aWR0aDo1MCU7fSAuLXctMzMge3dpZHRoOjMzLjMzJTt9IC4tdy0yNSB7d2lkdGg6MjUlO30gLi13LTUwdyB7d2lkdGg6NTB2dzt9IC4tZnMteHhze2ZvbnQtc2l6ZTowLjE1cmVtOyAtLWZzOjAuMTVyZW07fSAuLWZzLXhze2ZvbnQtc2l6ZTowLjVyZW07IC0tZnM6MC41cmVtO30gLi1mcy1ze2ZvbnQtc2l6ZTowLjc1cmVtOyAtLWZzOjAuNzVyZW07fSAuLWZzLXNye2ZvbnQtc2l6ZTowLjlyZW07IC0tZnM6MC45cmVtO30gLi1mcy1scntmb250LXNpemU6MS4xcmVtOyAtLWZzOjEuMXJlbTt9IC4tZnMtbHtmb250LXNpemU6MS4yNXJlbTsgLS1mczoxLjI1cmVtO30gLi1mcy14bHtmb250LXNpemU6MS41cmVtOyAtLWZzOjEuNXJlbTt9IC4tZnMteHhse2ZvbnQtc2l6ZToycmVtOyAtLWZzOjJyZW07fSAuLWZzLXh4eGx7Zm9udC1zaXplOjIuMjVyZW07IC0tZnM6Mi4yNXJlbTt9IC4tZncxIHtmb250LXdlaWdodDoxMDA7fSAuLWZ3MiB7Zm9udC13ZWlnaHQ6MjAwO30gLi1mdzMge2ZvbnQtd2VpZ2h0OjMwMDt9IC4tZnc0IHtmb250LXdlaWdodDo0MDA7fSAuLWZ3NSB7Zm9udC13ZWlnaHQ6NTAwO30gLi1mdzYge2ZvbnQtd2VpZ2h0OjYwMDt9IC4tZnc3IHtmb250LXdlaWdodDo3MDA7fSAuLWZ3OCB7Zm9udC13ZWlnaHQ6ODAwO30gLi1mdzkge2ZvbnQtd2VpZ2h0OjkwMDt9IC4tYm9sZCB7Zm9udC13ZWlnaHQ6Ym9sZDt9IC50eHQtcmVkIHtjb2xvcjojY2MwMDAwO30gLnR4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXI7fSAudHh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHQ7fSAudHh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0O30gLnR4dC11cHBlcnt0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKSk7fSAudHh0LW5vdGV7Zm9udC1zdHlsZTppdGFsaWM7fSAudHh0LXBheW1lbnQge2NvbG9yOnZhcigtLW5ld3ZkcC1iZXN0cHJpY2UtdGV4dC1jb2xvci1wcmljZSkgIWltcG9ydGFudDt9IC4tcG9zcmVse3Bvc2l0aW9uOnJlbGF0aXZlO30gLmNlcnQtdHh0LXRyYW5zZm9ybXt0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIG5vbmUpO30gW2hpZGRlbl0sIC5oaWRkZW4geyBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsgfSAuc2tlbGV0b24tc2xpZGVyID4gKnsgZGlzcGxheTpub25lOyB9IC5za2VsZXRvbi10eHR7IHRleHQtaW5kZW50OjEwMCU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjIxLCAyMjEsIDIyMSwgMC44KTsgYm9yZGVyLXJhZGl1czowLjVyZW07IH0gLnNrZWxldG9uLWJ0bnsgd2lkdGg6bWluKDIwcmVtLDEwMCUpOyBoZWlnaHQ6Mi41cmVtOyBib3JkZXItcmFkaXVzOjAuNXJlbTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyMSwgMjIxLCAyMjEsIDAuOCk7IG1hcmdpbjphdXRvOyB9IC5za2VsZXRvbi1ibG9ja3sgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyMjEsIDIyMSwgMjIxLCAwLjgpOyB9IC5za2VsZXRvbi1zbGlkZXIsIC5za2VsZXRvbi10eHQsIC5za2VsZXRvbi1idG4sIC5za2VsZXRvbi1ibG9jayB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6YmxvY2s7IH0gLnNrZWxldG9uLXNsaWRlcjo6YWZ0ZXIsIC5za2VsZXRvbi10eHQ6OmFmdGVyLCAuc2tlbGV0b24tYnRuOjphZnRlciwgLnNrZWxldG9uLWJsb2NrOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgYm90dG9tOjA7IGxlZnQ6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOyBiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgNjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApKTsgYW5pbWF0aW9uOnNoaW1tZXIgMnMgaW5maW5pdGU7IH0gLnNrZWxldG9uLXNsaWRlciB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDUxMiA1MTInJTNFJTNDcGF0aCBkPSdNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6JyBmaWxsPSclMjNlZWUnLyUzRSUzQy9zdmclM0UiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBvcGFjaXR5OjAuOTsgfSBAa2V5ZnJhbWVzIHNoaW1tZXIgeyAxMDAlIHt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTt9IH0gQHN1cHBvcnRzICgtd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZSkgeyAuc2tlbGV0b24tc2xpZGVyOjphZnRlciwgLnNrZWxldG9uLXR4dDo6YWZ0ZXJ7IGFuaW1hdGlvbjpub25lOyB9IH0gLmNvbnRlbnQtc2tlbGV0b24geyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlci1yYWRpdXM6MC41cmVtOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBtYXgtd2lkdGg6NDAwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5jb250ZW50LXNrZWxldG9uLnJlY3RhbmdsZSB7IGFzcGVjdC1yYXRpbzp2YXIoLS1yYXRpbywgMTYvOSk7IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dCB7IGhlaWdodDphdXRvOyBwYWRkaW5nOjFyZW07IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YmVmb3JlLCAuY29udGVudC1za2VsZXRvbi50ZXh0OjphZnRlciB7IGNvbnRlbnQ6IiI7IGRpc3BsYXk6YmxvY2s7IGhlaWdodDoxcmVtOyBiYWNrZ3JvdW5kOiNkZGQ7IG1hcmdpbi1ib3R0b206MC41cmVtOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YWZ0ZXIgeyB3aWR0aDo3MCU7IH0gLmNvbnRlbnQtc2tlbGV0b24uYWN0aXZlIHsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmOWY5ZjkgMjUlLCAjZGVkZWRlIDUwJSwgI2Y5ZjlmOSA3NSUpOyBiYWNrZ3JvdW5kLXNpemU6MjAwJSAxMDAlOyBhbmltYXRpb246c2hpbW1lciAycyBpbmZpbml0ZSBsaW5lYXI7IH0gQGtleWZyYW1lcyBzaGltbWVyIHsgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjIwMCUgMDsgfSAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMjAwJSAwOyB9IH0gLmNvbnRlbnQtc2tlbGV0b24uZGVidWc6OmFmdGVyIHsgY29udGVudDphdHRyKGRhdGEtYmxvY2spICIgfCAiIGF0dHIoZGF0YS1zb3VyY2UpICIgfCAiIGF0dHIoZGF0YS1nZW5lcmF0ZWQtYXQpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjRweDsgbGVmdDo0cHg7IHJpZ2h0OjRweDsgZm9udC1zaXplOjAuN3JlbTsgZm9udC1mYW1pbHk6bW9ub3NwYWNlLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC42KTsgcGFkZGluZzoycHggNHB4OyBib3JkZXItcmFkaXVzOjRweDsgei1pbmRleDoxMDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSBib2R5IHsgd2lkdGg6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjFyZW07IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dC1tb2IpOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IH0gdWwgeyBsaXN0LXN0eWxlOm5vbmU7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBsaXN0LXN0eWxlLXBvc2l0aW9uOmluaXRpYWw7IGxpc3Qtc3R5bGUtaW1hZ2U6aW5pdGlhbDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgdWwgeyBsaXN0LXN0eWxlOmluaGVyaXQ7IGxpc3Qtc3R5bGUtdHlwZTppbmhlcml0OyBsaXN0LXN0eWxlLXBvc2l0aW9uOmluaGVyaXQ7IGxpc3Qtc3R5bGUtaW1hZ2U6aW5oZXJpdDsgfSBzdmcsIHN2Zy5pY29ueyAtLWljb24tc2l6ZTpjYWxjKHZhcigtLWZzLCB2YXIoLS1mczApKSAvIHZhcigtLXJhdGlvKSk7IGZpbGw6dmFyKC0tdHh0LWNvbG9yLCB2YXIoLS1ibGFjaykpOyB3aWR0aDp2YXIoLS1pY29uLXNpemUpOyBoZWlnaHQ6dmFyKC0taWNvbi1zaXplKTsgfSBzdmcuYXV0aG9yaXplZC1ibGFja3tmaWxsOiMyODI4MjghaW1wb3J0YW50O30gc3ZnLmF1dGhvcml6ZWQtYmxhY2sta2lhe2ZpbGw6IzA1MTQxRiFpbXBvcnRhbnQ7fSBzdmcuYXV0aG9yaXplZC1yZWR7ZmlsbDojRkYwMDAwIWltcG9ydGFudDt9IHN2Zy5hdXRob3JpemVkLXdoaXRle2ZpbGw6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuYXV0aG9yaXplZC1yZWQtd2hpdGUtcGxheS1idG57YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoI0ZGRkZGRiA1MCUsdHJhbnNwYXJlbnQgNTAlKTt9IHN2Zy5vZ2NvbG9yLWZhY2Vib29re2ZpbGw6IzQyNjdCMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci10d2l0dGVye2ZpbGw6IzFEQTFGMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci14LXR3aXR0ZXJ7ZmlsbDojMTQxNzFBIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXgtdHdpdHRlci13aGl0ZXtmaWxsOiNGRkZGRkYhaW1wb3J0YW50O30gc3ZnLm9nY29sb3ItbGlua2VkaW57ZmlsbDojMDA3N0I1IWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLWJsb2dnZXJ7ZmlsbDojRkY1NzIyIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXBpbnRlcmVzdHtmaWxsOiNFNjAwMjMhaW1wb3J0YW50O30gc3ZnLm9nY29sb3IteW91dHViZXtmaWxsOiNGRjAwMDAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCgjRkZGRkZGIDUwJSx0cmFuc3BhcmVudCA1MCUpO30gc3ZnLm9nY29sb3ItaW5zdGFncmFte2ZpbGw6IzgzM0FCNCFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci10aWt0b2t7ZmlsbDojZmYwMDUwIWltcG9ydGFudDt9IC5mYWNlYm9vay1vZ2ljb24tdHdlYWtze2hlaWdodDoyNHB4IWltcG9ydGFudDttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnQ7fSAjZm9vdGVyIC5mYWNlYm9vay1vZ2ljb24tdHdlYWtze2hlaWdodDoyM3B4IWltcG9ydGFudDttYXJnaW4tdG9wOjBweCFpbXBvcnRhbnQ7fSAuaW5zdGFncmFtLW9naWNvbi10d2Vha3N7aGVpZ2h0OjI4cHghaW1wb3J0YW50O21hcmdpbi10b3A6MHB4IWltcG9ydGFudDt9ICNmb290ZXIgLmluc3RhZ3JhbS1vZ2ljb24tdHdlYWtze2hlaWdodDoyOXB4IWltcG9ydGFudDttYXJnaW4tdG9wOi00cHghaW1wb3J0YW50O30gc3ZnLmN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2ZpbGw6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLWJsYWNre2JhY2tncm91bmQtY29sb3I6IzI4MjgyOCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtYmxhY2sta2lhe2JhY2tncm91bmQtY29sb3I6IzA1MTQxRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtcmVke2JhY2tncm91bmQtY29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtd2hpdGV7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1mYWNlYm9va3tiYWNrZ3JvdW5kLWNvbG9yOiMzYTU5OTghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDBhY2VkIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci14LXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTQxNzFBIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci14LXR3aXR0ZXItd2hpdGV7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1saW5rZWRpbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDc3QjUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLWJsb2dnZXJ7YmFja2dyb3VuZC1jb2xvcjojRkY1NzIyIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1waW50ZXJlc3R7YmFja2dyb3VuZC1jb2xvcjojRTYwMDIzIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci15b3V0dWJle2JhY2tncm91bmQtY29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItaW5zdGFncmFte2JhY2tncm91bmQtY29sb3I6I2YyMzk5NSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItdGlrdG9re2JhY2tncm91bmQtY29sb3I6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2JhY2tncm91bmQtY29sb3I6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtYmxhY2t7Y29sb3I6IzI4MjgyOCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC1ibGFjay1raWF7Y29sb3I6IzA1MTQxRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC1yZWR7Y29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC13aGl0ZXtjb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWZhY2Vib29re2NvbG9yOiMzYTU5OTghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItdHdpdHRlcntjb2xvcjojMDBhY2VkIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXgtdHdpdHRlcntjb2xvcjojMTQxNzFBIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXgtdHdpdHRlci13aGl0ZXtjb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWxpbmtlZGlue2NvbG9yOiMwMDc3QjUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItYmxvZ2dlcntjb2xvcjojRkY1NzIyIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXBpbnRlcmVzdHtjb2xvcjojRTYwMDIzIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXlvdXR1YmV7Y29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KCNGRkZGRkYgNTAlLHRyYW5zcGFyZW50IDUwJSk7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1pbnN0YWdyYW17Y29sb3I6I2YyMzk5NSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci10aWt0b2t7Y29sb3I6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtY3VzdG9tbWVkaWEtY29sb3JwaWNrZXJ7Y29sb3I6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLm5vdGUtYm94eyBkaXNwbGF5OmJsb2NrOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gLm5vdGUtc3VjY2Vzc3sgY29sb3I6IzE1NTcyNDsgYmFja2dyb3VuZC1jb2xvcjojZDRlZGRhOyBib3JkZXItY29sb3I6IzE1NTcyNDsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSAubm90ZS1lcnJvcnsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmYwMDAwOyBib3JkZXItY29sb3I6I2ZmMDAwMDsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSB1bC5jaGVja2xpc3QgbGk6YmVmb3JleyBjb250ZW50OiIiOyBib3JkZXItbGVmdDowLjJyZW0gc29saWQ7IGJvcmRlci1ib3R0b206MC4ycmVtIHNvbGlkOyB3aWR0aDowLjdyZW07IGhlaWdodDowLjRyZW07IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IG1hcmdpbi1yaWdodDoxcmVtOyB9IHVsLmNoZWNrbGlzdCBsaXsgbWFyZ2luLXRvcDp2YXIoLS1zcGFjZSk7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuLWJnLXdoaXRleyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWdyYXl7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZ3JheSk7IGNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWRhcmstZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ibGFjay1ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJsYWNrLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ibGFja3sgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ibGFjayk7IGNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWxpZ2h0eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0KTsgY29sb3I6dmFyKC0tYmxhY2spOyB9IC4tYmctbGlnaHQtZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgY29sb3I6dmFyKC0tYmxhY2spOyB9IC4tYmctbm9uZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O30gLi1yb3VuZHsgYm9yZGVyLXJhZGl1czowLjNyZW07IH0gLnB1c2gtZG93bnsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTowcHg7IH0gLnByaWNlLW1haW57IGNvbG9yOiNmZjAwMDA7IH0gLnByaWNlLXN0cmlrZXsgY29sb3I6Izk5OTsgdGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDsgfSAuZm9ybWF0LXByaWNleyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWF4LXdpZHRoOmZpdC1jb250ZW50OyBtYXJnaW4tcmlnaHQ6MC43cmVtOyBsaW5lLWhlaWdodDoxZW07IHdoaXRlLXNwYWNlOm5vd3JhcDsgfSA6aXMoLkVOR0xJU0gsW2RhdGEtbGFuZz0iZW4iXSkgLmZvcm1hdC1wcmljZXsgbWFyZ2luLWxlZnQ6MC42cmVtOyBtYXJnaW4tcmlnaHQ6dW5zZXQ7IH0gLmZvcm1hdC1wcmljZTphZnRlcnsgY29udGVudDoiJCI7IGZvbnQtc2l6ZTptYXgoMC41cmVtLDAuNmVtKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDp2YXIoLS1mb3JtYXQtcGljZS1zaWduLXBvc2l0aW9uLDApOyByaWdodDotMC42ZW07IGxpbmUtaGVpZ2h0OmluaGVyaXQ7IH0gLmZpbmFsLXByaWNlIC5mb3JtYXQtcHJpY2U6YWZ0ZXJ7IG1hcmdpbi10b3A6LTVweDsgfSAuZmluYWwtcHJpY2UgLmZvcm1hdC1wcmljZXsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmctcmlnaHQ6MnB4OyB9IDppcyguRU5HTElTSCxbZGF0YS1sYW5nPSJlbiJdKSAuZm9ybWF0LXByaWNlOmFmdGVyeyBsZWZ0Oi0wLjdlbTsgcmlnaHQ6dW5zZXQ7IH0gLnByaWNlLWVuOmJlZm9yZXsgY29udGVudDoiJCI7IH0gOmlzKC5wcmljZS1lbik6YmVmb3JleyBmb250LXNpemU6MC42ZW07IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTAuNWVtOyB9IC5wcmljZS1mcjphZnRlcnsgY29udGVudDoiICQiOyB9IDppcygucHJpY2UtZnIpOmFmdGVyeyBmb250LXNpemU6MC42ZW07IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTAuNWVtOyB9IC5zY3JhdGNoLW92ZXIsIC5zY3JhdGNoLWxlYXNleyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuc2NyYXRjaC1vdmVyOmJlZm9yZSwgLnNjcmF0Y2gtbGVhc2U6YmVmb3JleyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgYmxhY2s7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MnB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjQ1JTsgLW1vei10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHdpZHRoOjkwJTsgfSAuRU5HTElTSCA6aXMoLnNjcmF0Y2gtbGVhc2UsLnNjcmF0Y2gtb3Zlcik6aGFzKC5mb3JtYXQtcHJpY2UpOmJlZm9yZXsgbWFyZ2luLWxlZnQ6MC41cmVtOyB9IC5ibHVyLW92ZXIsIC5ibHVyLWxlYXNlIHsgLXdlYmtpdC1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbW96LWZpbHRlcjpibHVyKDAuMTVlbSk7IC1tcy1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtby1maWx0ZXI6Ymx1cigwLjE1ZW0pOyBmaWx0ZXI6Ymx1cigwLjE1ZW0pOyB9IC5vdXQtdmlld3sgcG9zaXRpb246Zml4ZWQ7IHRvcDotMjBweDsgY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwKTsgei1pbmRleDowOyB9IC50b3AtZml4ZWQgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjMuMnJlbTsgbGVmdDowOyB6LWluZGV4OjEwMDsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5maXhlZC13cmFwcGVyLnRvcC1maXhlZCB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6dmFyKC0tcyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OyBib3JkZXItYm90dG9tLWNvbG9yOiMwMDA7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5maXhlZC13cmFwcGVyLnRvcC1maXhlZCA+IC5wcm9tb0JUTiB7IG1hcmdpbjowOyB3aWR0aDo5MHZ3OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5maXhlZC13cmFwcGVyLnRvcC1maXhlZCAuY3RhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAubWFpbi1jb2xvcnN7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyB9IC5wcm9tby1jb2xvcnN7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgY29sb3I6dmFyKC0tcHJvbW8tdGV4dC1jb2xvcik7IH0gLmJ0bnsgLS1idG4tYmctY29sOnZhcigtLXRhYi1jb2xvcik7IC0tYnRuLXR4dC1jb2w6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJ0bi1iZy1jb2wpOyBjb2xvcjp2YXIoLS1idG4tdHh0LWNvbCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYnRuLWJyZC1jb2wsIHZhcigtLWJ0bi10eHQtY29sKSk7IHBhZGRpbmc6MC41cmVtOyBmb250LXdlaWdodDpib2xkOyB9IC5idG4tZGFyay1ncmV5LCAuY2JEYXJrR3JleXsgLS1idG4tYmctY29sOiMzMzM7IC0tYnRuLXR4dC1jb2w6I2ZmZjsgfSBbcm9sZT0iYnV0dG9uIl17IGN1cnNvcjpwb2ludGVyOyB9IC5idG4tcHJvbW97IC0tdHh0LWNvbG9yOnZhcigtLXByb21vLXRleHQtY29sb3IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IGNvbG9yOnZhcigtLXR4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tcHJvbW8tdGV4dC1jb2xvcik7IHBvc2l0aW9uOnJlbGF0aXZlOyBhbGlnbi1pdGVtczpjZW50ZXI7IGJvcmRlcjpub25lOyB9IC5idG4tY3RhOmFmdGVyeyBjb250ZW50OiJcZjA1NCI7IGZvbnQtc3R5bGU6bm9ybWFsOyB0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjFyZW07IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBmb250LXdlaWdodDo5MDA7IH0gLmJ0bi1tYWlueyAtLWJ0bi1iZy1jb2w6dmFyKC0tdGFiLWNvbG9yKTsgLS1idG4tdHh0LWNvbDp2YXIoLS10YWItdGV4dC1jb2xvcik7IC0tYnRuLWJyZC1jb2w6dmFyKC0tdGFiLXRleHQtY29sb3IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gLmJ0bi1tYWluMiwgLmJ0bi1tYWluOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItYmctY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IH0gLmJ0bi1ibGFja3sgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBjb2xvcjojZmZmOyAtLXR4dC1jb2xvcjojZmZmOyB9IC5idG4tbGlnaHR7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjYWFhOyBjb2xvcjojODg4OyB9IC5idG4tc3VjY2Vzc3sgLS1idG4tYmctY29sOiM0Y2FmNTA7IC0tYnRuLXR4dC1jb2w6I2ZmZjsgfSAuYnRuLXdhcm5pbmd7IC0tYnRuLWJnLWNvbDojZmY5ODAwOyAtLWJ0bi10eHQtY29sOiNmZmY7IH0gLmJudC1kaXNhYmxlZCwgLmJ0bltkaXNhYmxlZF0geyBjb2xvcjp2YXIoLS1ncmF5KTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ncmF5KTsgfSAuYnRuLWVtYWlsLW1lLCAuYnRuLXRleHQtbWV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5idG4tZW1haWwtbWU6YmVmb3JleyBjb250ZW50OiJcZjBlMCI7IGZvbnQtd2VpZ2h0OjkwMDsgfSAuYnRuLXRleHQtbWU6YmVmb3JleyBjb250ZW50OiJcZjNjZCI7IGZvbnQtc2l6ZTp4LWxhcmdlOyBmb250LXdlaWdodDo5MDA7IH0gLmJ0bi1lbWFpbC1tZTpiZWZvcmUsIC5idG4tdGV4dC1tZTpiZWZvcmV7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBtYXJnaW4tcmlnaHQ6NXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOi0xcHg7IH0gYnV0dG9uLnJvdW5kLWJ1dHRvbnsgYWxsOmluaGVyaXQ7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgZmlsbDp2YXIoLS10YWItY29sb3IpOyBwYWRkaW5nOjAuM3JlbTsgY3Vyc29yOnBvaW50ZXI7IH0gYnV0dG9uLmljb24tYnV0dG9ueyBjb2xvcjp2YXIoLS1wcm9tby1idG4tY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBwYWRkaW5nOjAuNXJlbTsgd2lkdGg6YXV0bzsgfSAueC1jbG9zZXsgYmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBhcmlhLWhpZGRlbj0ndHJ1ZScgZm9jdXNhYmxlPSdmYWxzZScgdmlld0JveD0nMCAwIDEwIDEwJyUzRSUzQ3N0eWxlJTNFLnZlcnQlN0JmaWxsOiUyMzAwMDslN0QlM0Mvc3R5bGUlM0UlM0NyZWN0IGNsYXNzPSd2ZXJ0JyBoZWlnaHQ9JzgnIHdpZHRoPScyJyB5PScxJyB4PSc0JyUzRSUzQy9yZWN0JTNFJTNDcmVjdCBoZWlnaHQ9JzInIHdpZHRoPSc4JyB5PSc0JyB4PScxJyUzRSUzQy9yZWN0JTNFJTNDL3N2ZyUzRSIpOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgd2lkdGg6MS41cmVtOyBoZWlnaHQ6MS41cmVtOyB0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTsgY3Vyc29yOnBvaW50ZXI7IH0gOm5vdCguY29tcGxldGVkKS5yaXBwbGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7IH0gOm5vdCguY29tcGxldGVkKS5yaXBwbGU6YWZ0ZXIgeyBjb250ZW50OiIiOyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHRvcDowOyBsZWZ0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IGJhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiKDAsIDAsIDApIDEwJSwgdHJhbnNwYXJlbnQgMTAuMDElKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTsgdHJhbnNmb3JtOnNjYWxlKDEwLDEwKTsgb3BhY2l0eTowOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMsIG9wYWNpdHkgMXM7IH0gOm5vdCguY29tcGxldGVkKS5yaXBwbGU6YWN0aXZlOmFmdGVyIHsgdHJhbnNmb3JtOnNjYWxlKDAsMCk7IG9wYWNpdHk6LjI7IHRyYW5zaXRpb246MHM7IH0gLmxvZ29hcmVhIHsgbWluLWhlaWdodDo3cmVtOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVlOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtaGVhZGVyLWJnLWNvbG9yKTsgfSBhID4gOndoZXJlKDppcyhzdmcsIC5mYSwgLmZhcyk6Zmlyc3QtY2hpbGQ6bm90KDpvbmx5LWNoaWxkKSl7IG1hcmdpbi1yaWdodDowLjZyZW07IH0gLnByb21vVG9wQnRuIDppcyhhLGJ1dHRvbikgeyAtLWZzOnZhcigtLWZzMSk7IC0tdHh0LWNvbG9yOnZhcigtLXRvcC1wcm9tby1idG4tdHh0LCB2YXIoLS10b3AtcHJvbW8tYnRuLXR4dC1jb2xvcikpOyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXRvcC13aWR0aDoxcHg7IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OyBib3JkZXItY29sb3I6I2YzZjNmMzsgaGVpZ2h0OjMuMnJlbTsgZm9udC1zaXplOnZhcigtLWZzMSk7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBiYWNrZ3JvdW5kOnZhcigtLXRvcC1wcm9tby1idG4tYmcsIHZhcigtLXRvcC1wcm9tby1idG4tYmctY29sb3IpKTsgY29sb3I6dmFyKC0tdG9wLXByb21vLWJ0bi10eHQsIHZhcigtLXRvcC1wcm9tby1idG4tdHh0LWNvbG9yKSk7IH0gLnByb21vVG9wQnRuLmRlYWxlckxpbmVCdXR0b24gOmlzKGEsYnV0dG9uKXsgLS10eHQtY29sb3I6dmFyKC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS1iZy1jb2xvcik7IGNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS10ZXh0LWNvbG9yKTsgYm9yZGVyLWNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS10ZXh0LWNvbG9yKTsgd2lkdGg6MTAwJTsgfSA6aXMoLnByb21vVG9wQnRuLGxhYmVsKS5mbG9hdGluZ3sgcG9zaXRpb246Zml4ZWQ7IGJvdHRvbToxLjVyZW07IHJpZ2h0OjEuNXJlbTsgei1pbmRleDoxMDsgfSAucHJvbW9Ub3BCdG4uZmxvYXRpbmcud2l0aFRvYXN0ZXIge2JvdHRvbTo2cmVtO30gLnByb21vVG9wQnRuLmZsb2F0aW5nIDppcyhhLGJ1dHRvbil7IC0tZnM6dmFyKC0tZnM1KTsgcGFkZGluZzoxcmVtOyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyLXdpZHRoOjFweDsgaGVpZ2h0OnVuc2V0OyB9IC5wcm9tb1RvcEJ0bi5mbG9hdGluZyA6aXMoYSxidXR0b24pIHNwYW4ge2Rpc3BsYXk6bm9uZTt9IC5pY29uLWhlYWRpbmcgc3Bhbi5mYXsgZm9udC1zaXplOmluaGVyaXQ7IHdpZHRoOjFlbTsgcGFkZGluZzowLjJlbTsgaGVpZ2h0OjFlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJsYWNrKTsgY29sb3I6dmFyKC0td2hpdGUpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJsYWNrKTsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAuaWNvbi1oZWFkaW5nIC5zZWNvbmRhcnlUZXh0eyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC43NWVtOyB9IC5ncm91cFRhYnMgPiAqeyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOmNhbGMoMS4ycmVtICsgKDIwIC0gMTgpICogKCgxMDB2dyAtIDMyMHB4KSAvICgxMTAwIC0gMzAwKSkpOyB9IC5ncm91cFRhYnMgPiAqOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZmVmZWY7IH0gLmdyb3VwVGFicyAudGFiLWxhYmVsLCAubmV3Q2FyU2xpZGVyIC5jYXJvdXNlbFRpdGxleyBjb2xvcjp2YXIoLS1uZXctdmVoaWNsZS1jYXJvdXNlbC10eHQtY29sb3IsIHZhcigtLWRlZmF1bHQtYmxhY2spKTsgfSAuZ3JvdXBUYWJzIC5hY3RpdmVUYWIgLnRhYi1sYWJlbHsgY29sb3I6dmFyKC0tbmV3LXZlaGljbGUtY2Fyb3VzZWwtdHh0LWNvbG9yLCB2YXIoLS1kZWZhdWx0LWJsYWNrKSk7IGJvcmRlci1ib3R0b206M3B4IHNvbGlkOyBib3JkZXItYm90dG9tLWNvbG9yOiMwMDA7IGJvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tdGFiLWNvbG9yKTsgfSAuY2FyU2xpZGVyeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLmNhclNsaWRlciA+ICp7IHdpZHRoOm1pbig5MHJlbSwxMDAlKTsgfSAuY2FyU2xpZGVyLi1iZy1saWdodC1ncmF5ID4gKnsgbWF4LXdpZHRoOm1pbig3NXJlbSwxMDAlKTsgfSAubmV3Q2FyQ2FyZHsgaGVpZ2h0OjEwMCU7IG1pbi1oZWlnaHQ6MjdyZW07IGJvcmRlcjoxcHggc29saWQgI2JiYjsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13aGl0ZSk7IH0gLm5ld0NhckNhcmQgaW1neyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOi0xcmVtOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY2FyUGF5bWVudFdyYXBwZXJ7IHdpZHRoOm1pbigxMDAlLDI1cmVtKTsgbWluLWhlaWdodDo1cmVtOyB9IC5jYXJQYXltZW50V3JhcHBlciAucGF5bWVudEJsb2NreyBoZWlnaHQ6MTAwJTsgfSAucGF5bWVudHNEaXNhYmxlZCAubmV3Q2FyQ2FyZHsgbWluLWhlaWdodDoyMnJlbTsgfSAudmVoaWNsZUNhcm91c2VsIC5uZXdDYXJDYXJkeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgd2lkdGg6MjMuN3JlbTsgYm9yZGVyOjFweCBzb2xpZCAjYmJiOyBtYXJnaW46MCAwLjRyZW07IGhlaWdodDoxMDAlIH0gLm5ld0NhckNhcmQgLnByb21vLWJhZGdleyBoZWlnaHQ6Zml0LWNvbnRlbnQ7IG1pbi13aWR0aDo2cmVtOyB9IC5uZXdDYXJDYXJkOmhvdmVyeyBib3gtc2hhZG93OjAgMCAxMHB4IDJweCB2YXIoLS1taWQtZ3JheSk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IH0gLm5ld0NhckNhcmQ6aG92ZXIgLmluU3RvY2tMaW5rIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5uZXdDYXJDYXJkIC5jYXJkLWJvZHl7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBoZWlnaHQ6MTJyZW07IG92ZXJmbG93OmhpZGRlbjsgfSAubmV3Q2FyQ2FyZCA+IC5ib3gtbGN7IG1hcmdpbi10b3A6MDsgcGFkZGluZy10b3A6MDsgcGFkZGluZy1ib3R0b206MDsgfSAubmV3Q2FyQ2FyZCA+IC5ib3gtbGM6Zmlyc3QtY2hpbGR7IHBhZGRpbmctdG9wOjAuNXJlbTsgbWF4LWhlaWdodDoxMHJlbTsgfSAubmV3Q2FyQ2FyZCAuZGVza3RvcFBheW1lbnR7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5uZXdDYXJDYXJkIHNwYW4ucGF5bWVudENhbGNCdG4uZGVza3RvcHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjclOyBmb250LXNpemU6MS43ZW07IGN1cnNvcjpwb2ludGVyOyB9IC51c2VkQ2FyU2xpZGV7IGRpc3BsYXk6YmxvY2s7IGJvcmRlcjoxcHggc29saWQgI2JiYjsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBoZWlnaHQ6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC51c2VkQ2FyU2xpZGUgKnsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC51c2VkQ2FyU2xpZGUgLnNsaWRlQ29udGVudHsgaGVpZ2h0OjEwMCUgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlID4gLmZhOjphZnRlciB7IGNvbnRlbnQ6IlxmMDcxIjsgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgaXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlID4gc3ZnLCAuYW5pbWF0ZWQtdHJpYW5nbGUgPiAuZmE6OmFmdGVyIHsgYW5pbWF0aW9uOnJpcHBsZS0xIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OyBhbmltYXRpb24tZGVsYXk6MC41czsgYW5pbWF0aW9uOnJpcHBsZS0yIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OyBhbmltYXRpb24tZGVsYXk6MC43NXM7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IC5mYTo6YWZ0ZXJ7IHRvcDowOyBsZWZ0OjA7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlID4gc3ZneyB0b3A6MXB4OyBsZWZ0Oi0xcmVtOyB9IEBrZXlmcmFtZXMgcmlwcGxlLTEgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSgxKTsgb3BhY2l0eToxOyB9IDEwMCUgeyB0cmFuc2Zvcm06c2NhbGUoMS43KTsgb3BhY2l0eTowOyB9IH0gQGtleWZyYW1lcyByaXBwbGUtMiB7IDAlIHsgdHJhbnNmb3JtOnNjYWxlKDEpOyBvcGFjaXR5OjE7IH0gMTAwJSB7IHRyYW5zZm9ybTpzY2FsZSgyKTsgb3BhY2l0eTowOyB9IH0gc3Bhbi5hc3Rlcml4OmFmdGVyeyBjb250ZW50OiIqIjsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZToycmVtOyB9IGRpdi5wcmljZU5vdGUuYXN0ZXJpeDpiZWZvcmV7IGNvbnRlbnQ6IioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjFyZW07IH0gZm9vdGVyIHsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IGJveC1zaGFkb3c6IGluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgLS10eHQtY29sb3I6dmFyKC0tZm9vdGVyLWl0ZW1zLWxpbmstY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWZvb3Rlci1iZy1jb2xvcik7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgfSBhLnZpc2l0Q29udGFjdEJ1dHRvbnsgLS10eHQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByb21vLWJ0bi1iZy1jb2xvcik7IGNvbG9yOnZhcigtLXByb21vLWJ0bi10ZXh0LWNvbG9yKTsgfSAuY0Zvb3RlckNhckxpbmtzIGxpLmNJdGVtRXhwZW5keyBkaXNwbGF5Om5vbmU7IH0gLmNGb290ZXJDYXJMaW5rcyBoMywgLmZvb3Rlcl9hZGRyZXNzIC5hZHIgPiBzcGFueyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5jRm9vdGVyQ2FyTGlua3Mgc3Bhbi5oMy1hbHQgeyBkaXNwbGF5OmJsb2NrOyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5jRm9vdGVyQ2FyTGlua3MuY0xpc3RFeHBlbmRlZCBsaS5jSXRlbUV4cGVuZHsgZGlzcGxheTpibG9jazsgfSAuY0V4cGVuZExpc3QgYnV0dG9ueyBwYWRkaW5nOnZhcigtLXMpIDA7IGJhY2tncm91bmQ6bm9uZTsgfSAuY29uZGl0aW9uc0Zvb3RlciB7IGNvbG9yOnZhcigtLWZvb3Rlci1jb25kaXRpb25zLWNvbG9yLCAjOTE5MTkxKTsgLS10eHQtY29sb3I6dmFyKC0tZm9vdGVyLWNvbmRpdGlvbnMtY29sb3IpOyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIHsgcG9zaXRpb246Zml4ZWQ7IGJvdHRvbToxMHB4OyBtYXJnaW46NXB4IDVweCAxNXB4IDE1cHg7IHotaW5kZXg6NDsgd2lkdGg6MTQwcHggIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweDsgYmFja2dyb3VuZC1jb2xvcjojZWEwMDI5OyB0ZXh0LWFsaWduOmxlZnQ7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdHJhZGVpbmJhci1idG4tYmcpOyBjb2xvcjogdmFyKC0tdHJhZGVpbmJhci1idG4tY29sb3IpOyBhbGlnbi1pdGVtczpjZW50ZXI7IGJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItd2lkdGg6MXB4IDNweCA0cHggMXB4OyBib3JkZXItY29sb3I6IzMzMzMzMzsgcGFkZGluZy10b3A6MTBweDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiBpeyBkaXNwbGF5OmlubGluZS1mbGV4OyBib3JkZXItcmFkaXVzOjEwMCU7IHdpZHRoOjJlbTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBib3JkZXI6MnB4IHNvbGlkICNmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgaGVpZ2h0OjEuNWVtOyBjb2xvcjojMDAwOyBmbG9hdDpsZWZ0OyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uLndpdGhUb2FzdGVyIHsgYm90dG9tOjVyZW07IH0gI3RyYWRlSW5CYXJQb3B1cF9saW5lMXsgYmFja2dyb3VuZC1jb2xvcjojZjFmMWYxOyBib3JkZXI6MXB4IHNvbGlkIGdyZXk7IHBhZGRpbmc6MjBweCA0MHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuYnRuLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdHsgcGFkZGluZzowLjc1cmVtIDAuMzc1cmVtOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItY29sb3I6IzAwMDsgZm9udC13ZWlnaHQ6Ym9sZDsgYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIGlucHV0eyBtYXJnaW46NXB4IDAgMDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XeyBoZWlnaHQ6NTgwcHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjay10ZXh0KTsgcGFkZGluZzoxNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIGlucHV0eyBwYWRkaW5nOjExcHggMTBweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgd2lkdGg6MjUwcHg7IG1hcmdpbjo1cHggMCAwOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTkhaW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRpblNlbGVjdFBvcHVweyBjb2xvcjojM2MzODM2OyBmb250LXNpemU6MXJlbTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSA1MCU7IGFwcGVhcmFuY2U6bm9uZTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6cGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyBvcGFjaXR5OjE7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAudHJhZGluU2VsZWN0LCAudHJhZGluU2VsZWN0UG9wdXAgeyBjb2xvcjojM2MzODM2OyBmb250LXNpemU6MXJlbTsgbWFyZ2luOjVweCAwIDA7IGFwcGVhcmFuY2U6bm9uZTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyB9IC50cmFkaW5TZWxlY3RBIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnRyYWRpblNlbGVjdEE6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSAuZW1haWxCb2R5LCAuZW1haWxTdWJqZWN0eyBkaXNwbGF5Om5vbmU7IH0gLnJldmVhbC1tb2RhbDpub3QoI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIpICo6bm90KC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciA6aXMoaW5wdXQsIHNlbGVjdCkpeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLnJldmVhbC1tb2RhbDpub3QoI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIpIDppcyhpbnB1dFt0eXBlPSJ0ZXh0Il06bm90KC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBpbnB1dCksaW5wdXRbdHlwZT0iZW1haWwiXSxpbnB1dFt0eXBlPSJ0ZWwiXSxzZWxlY3Q6bm90KC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlLC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3QsIHNlbGVjdC5zdGVwMjRzZWxlY3QpKXsgcGFkZGluZzowLjRyZW07IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1yYWRpdXM6MC4zcmVtOyB3aWR0aDoxMDAlOyBib3JkZXItY29sb3I6I2E5YTlhOTsgfSBbZGF0YS1wYWdlPSJIT01FUEFHRSJdeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWhvbWUtYmctY29sb3IsICNGRkZGRkYpOyB9IC55dC1iZy1jb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmJhbm5lci1iZy1jb250YWluZXJ7IGJhY2tncm91bmQtc2l6ZTpjb3ZlcjsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyOyBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6Y29sb3I7IH0gI3lvdXR1YmVfX2NvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMCU7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW47IHBhZGRpbmctYm90dG9tOm1pbihjYWxjKDEwMHZoIC0gdmFyKC0taGVhZGVyLWhlaWdodCwxMHJlbSkpLDY3dncpOyBiYWNrZ3JvdW5kLWNvbG9yOiM4ODg7IH0gI2hvbWVwYWdlX3lvdXR1YmVfcGxheWVyeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi00NSU7IGxlZnQ6LTEwJTsgaGVpZ2h0OjE5MCU7IHdpZHRoOjEyMCU7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gI3lvdXR1YmVfX2NvbnRhaW5lcjppcyguZnVsbEhlaWdodCwudmlzaWJsZUhlaWdodCl7IHBhZGRpbmctYm90dG9tOmNhbGMoMTAwdmggLSB2YXIoLS1oZWFkZXItaGVpZ2h0LDEwcmVtKSk7IH0gOmlzKC5mdWxsSGVpZ2h0LC52aXNpYmxlSGVpZ2h0KSAjaG9tZXBhZ2VfeW91dHViZV9wbGF5ZXJ7IGhlaWdodDoxMDAlOyB0b3A6MDsgfSAjeW91dHViZV9fY29udGFpbmVyLmZ1bGxXaWR0aHsgcGFkZGluZy1ib3R0b206NTYuMjUlOyB9ICNtb2JpbGVTbGlkZXIgI3lvdXR1YmVfX2NvbnRhaW5lcnsgcGFkZGluZy1ib3R0b206bWF4KDY3dncsMjRyZW0pOyB9ICNtb2JpbGVTbGlkZXIgI3lvdXR1YmVfX2NvbnRhaW5lciAjYmFubmVyX3NlYXJjaF9iYXJfY29udGFpbmVyeyBoZWlnaHQ6bWF4KDY3dncsMjRyZW0pOyBtaW4taGVpZ2h0OjE4cmVtOyB6LWluZGV4OjE7IH0gLmZ1bGxXaWR0aCAjaG9tZXBhZ2VfeW91dHViZV9wbGF5ZXJ7IGhlaWdodDoxMjAlOyB0b3A6LTEwJTsgfSAueXQtdmlkZW97IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtc2l6ZTpjb3ZlcjsgfSAueXQtcGxheXsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTc2IDUxMiI+PCEtLSBGb250IEF3ZXNvbWUgRnJlZSA1LjE1LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6Q0MgQlkgNC4wLCBGb250czpTSUwgT0ZMIDEuMSwgQ29kZTpNSVQgTGljZW5zZSkgLS0+PHBhdGggZD0iTTU0OS42NTUgMTI0LjA4M2MtNi4yODEtMjMuNjUtMjQuNzg3LTQyLjI3Ni00OC4yODQtNDguNTk3QzQ1OC43ODEgNjQgMjg4IDY0IDI4OCA2NFMxMTcuMjIgNjQgNzQuNjI5IDc1LjQ4NmMtMjMuNDk3IDYuMzIyLTQyLjAwMyAyNC45NDctNDguMjg0IDQ4LjU5Ny0xMS40MTIgNDIuODY3LTExLjQxMiAxMzIuMzA1LTExLjQxMiAxMzIuMzA1czAgODkuNDM4IDExLjQxMiAxMzIuMzA1YzYuMjgxIDIzLjY1IDI0Ljc4NyA0MS41IDQ4LjI4NCA0Ny44MjFDMTE3LjIyIDQ0OCAyODggNDQ4IDI4OCA0NDhzMTcwLjc4IDAgMjEzLjM3MS0xMS40ODZjMjMuNDk3LTYuMzIxIDQyLjAwMy0yNC4xNzEgNDguMjg0LTQ3LjgyMSAxMS40MTItNDIuODY3IDExLjQxMi0xMzIuMzA1IDExLjQxMi0xMzIuMzA1czAtODkuNDM4LTExLjQxMi0xMzIuMzA1em0tMzE3LjUxIDIxMy41MDhWMTc1LjE4NWwxNDIuNzM5IDgxLjIwNS0xNDIuNzM5IDgxLjIwMXoiIGZpbGw9IiUyM2MzM2MyZCIgLyUzRSUzQy9zdmclM0UnKTsgd2lkdGg6NXJlbTsgaGVpZ2h0OjVyZW07IGJhY2tncm91bmQtc2l6ZTpjb250YWluOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IG9wYWNpdHk6MC43OyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBoZWlnaHQ6Y2FsYygxMDB2dyAvICgxNiAvIDkpKTsgb3ZlcmZsb3c6aGlkZGVuOyBtYXgtd2lkdGg6MTAwJTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1zaXplOmNvdmVyOyB9IC5tb2JpbGVfYnVzaW5lc3NEZXNjIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idXNpbmVzcy1kZXNjLWJnLWNvbG9yX21vYiwgdmFyKC0tZm9vdGVyLWJnLWNvbG9yKSk7IGNvbG9yOnZhcigtLWJ1c2luZXNzLWRlc2MtdHh0LWNvbG9yX21vYiwgdmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKSk7IH0gLmJ1c2luZXNzRGVzYyB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYnVzaW5lc3MtZGVzYy1iZy1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1iZy1jb2xvcikpOyBjb2xvcjp2YXIoLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCkpOyB9IC5idXNpbmVzc0Rlc2MgKiB7IGxpbmUtaGVpZ2h0OjEuNXJlbTsgfSAud3JhcHBlciB7IG1hcmdpbjowIGF1dG87IHdpZHRoOjk2MHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubGFuZ3VhZ2VCYXIgeyBtYXJnaW46MXJlbSBhdXRvIDVweDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MCB2YXIoLS1zKTsgfSAudi1jYXJkLnRvcF9iZyB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4OyBtaW4taGVpZ2h0OjhyZW07IHBhZGRpbmc6MCB2YXIoLS1zKTsgfSAuaGVhZGVyLXNlY3Rpb24geyBkaXNwbGF5OmZsZXg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgYWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gI3RyYWRlSW5CYXJNb2JpbGV7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czo1cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjozcHggNXB4IDVweCA1cHg7IH0gI3RyYWRlSW5CYXJNb2JpbGUgLm1pZGRsZXsgY29sb3I6I2ZmZmZmZjsgfSAjdHJhZGVJbkJhck1vYmlsZSAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBwYWRkaW5nOjVweCAyMHB4IDBweCAyMHB4OyB9ICN0cmFkZUluQmFyTW9iaWxlIC5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlciBkaXZ7IG1heC13aWR0aDozMzBweDsgbWFyZ2luOjEwcHggYXV0bzsgcGFkZGluZzoxMnB4IDA7IGJvcmRlci1yYWRpdXM6MnB4OyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByb21vLWJ0bi1iZy1jb2xvcik7IH0gI3RyYWRlSW5CYXJNb2JpbGUgLmRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyIGF7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW46MCBhdXRvOyBmb250LXdlaWdodDo3MDA7IH0gI3RyYWRlSW5CYXJNb2JpbGUgI2RlZmF1bHRUb3BCYW5uZXJMb2dvIHNwYW57IGZvbnQtc2l6ZTowLjhyZW07IGZvbnQtd2VpZ2h0OjMwMDsgY29sb3I6dmFyKC0tbWlkLWdyYXkpOyB9ICN0cmFkZUluQmFyeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRyYWRlaW5iYXItYmcpOyBjb2xvcjogdmFyKC0tdHJhZGVpbmJhci1jb2xvcik7IH0gI3RyYWRlSW5CYXJXTW9iaWxlLCAjdHJhZGVJbkJhclcgeyBkaXNwbGF5OmZsZXg7IG1pbi1oZWlnaHQ6NTBweDsgbWFyZ2luOmF1dG87IHdpZHRoOm1pbigxMDAlLDEzNTBweCk7IHBvc2l0aW9uOnJlbGF0aXZlOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5sYW5ndWFnZUJhciAuc2VydmljZS1oZWFkZXItZm9ybSA+IGF7IHBhZGRpbmc6NHB4IDEycHg7IGhlaWdodDoxOHB4OyBsaW5lLWhlaWdodDoxOHB4OyBib3JkZXItcmFkaXVzOjA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1oZWFkZXItc2VydmljZS1hcHBvaW50bWVudC10ZXh0LWNvbG9yLWJnLCB2YXIoLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yKSk7IGNvbG9yOnZhcigtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3IsIHdoaXRlICk7IH0gLmxhbmd1YWdlQmFyIC5zZXJ2aWNlLWhlYWRlci1mb3JtIGE6aG92ZXIgeyBib3JkZXItY29sb3I6dmFyKC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZywgdmFyKC0tbGFuZ3VhZ2UtYnRuLWFjdGl2ZS1iZy1jb2xvcikpOyB9ICNhbGVydE1zZ0NvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgei1pbmRleDo5OTk7IHdpZHRoOjEwMCU7IGNvbG9yOndoaXRlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtYWxlcnQtYmFyLXRleHQtY29sb3IpOyBmb250LXdlaWdodDo2MDA7IH0gI2FsZXJ0TXNnQ29udGFpbmVyLnN0aWNrLXRvcHsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgei1pbmRleDo5OTk5OTsgfSAuZmEtZml4LWNlbnRlcjpiZWZvcmUgeyB3aWR0aDoxLjVlbTsgaGVpZ2h0OjEuNWVtOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGRpc3BsYXk6ZmxleDsgfSAjeW91dHViZV9fY29udGFpbmVyLmZ1bGxzY3JlZW57IG9iamVjdC1maXQ6Y292ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjA7IHJpZ2h0OjA7IHRvcDowOyBvcGFjaXR5OjAuODsgfSAubWFpbkRpdkFkanVzdEhlYWRlciB7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzLCBib3JkZXIgLjNzOyB0b3A6MDsgbGVmdDowOyByaWdodDowOyBib3R0b206MDsgfSAubWFpbkRpdkFkanVzdEhlYWRlci53aXRoLWFsZXJ0IHsgdG9wOjQwcHg7IH0gLnBheW1lbnRCbG9ja0NvbnRhaW5lciB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tY2VydC1jb25jcmV0ZS1ncmF5LCB2YXIoLS1saWdodC1ncmF5KSk7IGNvbG9yOnZhcigtLWRhcmstZ3JheSk7IH0gLnZlaGljbGVMb2NhdGlvbnsgYm9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmxpbmVTZXBhcmF0b3J7IGJvcmRlci10b3A6MXB4IHNvbGlkICNBOUE5QTk7IG1hcmdpbi10b3A6NDBweDsgbWFyZ2luLWJvdHRvbTo0MHB4OyB9IC5yZXZlYWwtbW9kYWwgc3Bhbi5mYS1oYW5kLXBvaW50ZXItY29sb3IgeyBjb2xvcjojZmZmZmZmOyBtYXJnaW4tcmlnaHQ6NXB4OyBtYXJnaW4tdG9wOjVweDsgfSAuY29uZmxpY3QtcmVzb2x2ZS1vcHRpb25zIHsgZm9udC1zaXplOjAuODEzcmVtIDsgfQovKiogL2Nzcy9mb250YXdlc29tZS1hbGwubWluLmNzcyAqKi8KLmZhLC5mYXMsLmZhciwuZmFsLC5mYWQsLmZhYnstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO3RleHQtcmVuZGVyaW5nOmF1dG87bGluZS1oZWlnaHQ6MX0uZmEtbGd7Zm9udC1zaXplOjEuMzMzMzNlbTtsaW5lLWhlaWdodDouNzVlbTt2ZXJ0aWNhbC1hbGlnbjotLjA2NjdlbX0uZmEteHN7Zm9udC1zaXplOi43NWVtfS5mYS1zbXtmb250LXNpemU6Ljg3NWVtfS5mYS0xeHtmb250LXNpemU6MWVtfS5mYS0yeHtmb250LXNpemU6MmVtfS5mYS0zeHtmb250LXNpemU6M2VtfS5mYS00eHtmb250LXNpemU6NGVtfS5mYS01eHtmb250LXNpemU6NWVtfS5mYS02eHtmb250LXNpemU6NmVtfS5mYS03eHtmb250LXNpemU6N2VtfS5mYS04eHtmb250LXNpemU6OGVtfS5mYS05eHtmb250LXNpemU6OWVtfS5mYS0xMHh7Zm9udC1zaXplOjEwZW19LmZhLWZ3e3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEuMjVlbX0uZmEtdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luLWxlZnQ6Mi41ZW07cGFkZGluZy1sZWZ0OjB9LmZhLXVsID4gbGl7cG9zaXRpb246cmVsYXRpdmV9LmZhLWxpe2xlZnQ6LTJlbTtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoyZW07bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtYm9yZGVye2JvcmRlcjpzb2xpZCAuMDhlbSAjZWVlO2JvcmRlci1yYWRpdXM6LjFlbTtwYWRkaW5nOi4yZW0gLjI1ZW0gLjE1ZW19LmZhLXB1bGwtbGVmdHtmbG9hdDpsZWZ0fS5mYS1wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0fS5mYS5mYS1wdWxsLWxlZnQsLmZhcy5mYS1wdWxsLWxlZnQsLmZhci5mYS1wdWxsLWxlZnQsLmZhbC5mYS1wdWxsLWxlZnQsLmZhYi5mYS1wdWxsLWxlZnR7bWFyZ2luLXJpZ2h0Oi4zZW19LmZhLmZhLXB1bGwtcmlnaHQsLmZhcy5mYS1wdWxsLXJpZ2h0LC5mYXIuZmEtcHVsbC1yaWdodCwuZmFsLmZhLXB1bGwtcmlnaHQsLmZhYi5mYS1wdWxsLXJpZ2h0e21hcmdpbi1sZWZ0Oi4zZW19LmZhLXNwaW57LXdlYmtpdC1hbmltYXRpb246ZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7YW5pbWF0aW9uOmZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyfS5mYS1wdWxzZXstd2Via2l0LWFuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpO2FuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpfUAtd2Via2l0LWtleWZyYW1lcyBmYS1zcGluezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIGZhLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5mYS1yb3RhdGUtOTB7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0xKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5mYS1yb3RhdGUtMTgwey1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249Mik7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5mYS1yb3RhdGUtMjcwey1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249Myk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDI3MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfS5mYS1mbGlwLWhvcml6b250YWx7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MCxtaXJyb3I9MSkiOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLDEpO3RyYW5zZm9ybTpzY2FsZSgtMSwxKX0uZmEtZmxpcC12ZXJ0aWNhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yLG1pcnJvcj0xKSI7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSwtMSk7dHJhbnNmb3JtOnNjYWxlKDEsLTEpfS5mYS1mbGlwLWJvdGgsLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2Fsey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsbWlycm9yPTEpIjstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgtMSwtMSk7dHJhbnNmb3JtOnNjYWxlKC0xLC0xKX06cm9vdCAuZmEtcm90YXRlLTkwLDpyb290IC5mYS1yb3RhdGUtMTgwLDpyb290IC5mYS1yb3RhdGUtMjcwLDpyb290IC5mYS1mbGlwLWhvcml6b250YWwsOnJvb3QgLmZhLWZsaXAtdmVydGljYWwsOnJvb3QgLmZhLWZsaXAtYm90aHstd2Via2l0LWZpbHRlcjpub25lO2ZpbHRlcjpub25lfS5mYS1zdGFja3tkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MmVtO2xpbmUtaGVpZ2h0OjJlbTtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6Mi41ZW19LmZhLXN0YWNrLTF4LC5mYS1zdGFjay0yeHtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJX0uZmEtc3RhY2stMXh7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtc3RhY2stMnh7Zm9udC1zaXplOjJlbX0uZmEtaW52ZXJzZXtjb2xvcjojZmZmfS5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hY2Nlc3NpYmxlLWljb246YmVmb3Jle2NvbnRlbnQ6IlxmMzY4In0uZmEtYWRkcmVzcy1ib29rOmJlZm9yZXtjb250ZW50OiJcZjJiOSJ9LmZhLWFkZHJlc3MtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYmIifS5mYS1haXItZnJlc2hlbmVyOmJlZm9yZXtjb250ZW50OiJcZjVkMCJ9LmZhLWFsYXJtLWNsb2NrOmJlZm9yZXtjb250ZW50OiJcZjM0ZSJ9LmZhLWFtYnVsYW5jZTpiZWZvcmV7Y29udGVudDoiXGYwZjkifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwMyJ9LmZhLWFuZ2xlLWRvdWJsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwMCJ9LmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDEifS5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0uZmEtYW5nbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDcifS5mYS1hbmdsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwNCJ9LmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwNSJ9LmZhLWFuZ2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwNiJ9LmZhLWFwcGxlOmJlZm9yZXtjb250ZW50OiJcZjE3OSJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWFycm93LWFsdC1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1YSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzViIn0uZmEtYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzU0In0uZmEtYXJyb3ctYWx0LWZyb20tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjM0NiJ9LmZhLWFycm93LWFsdC1mcm9tLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ3In0uZmEtYXJyb3ctYWx0LWZyb20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ4In0uZmEtYXJyb3ctYWx0LWZyb20tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0OSJ9LmZhLWFycm93LWFsdC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1NSJ9LmZhLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNTYifS5mYS1hcnJvdy1hbHQtc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzUwIn0uZmEtYXJyb3ctYWx0LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1MSJ9LmZhLWFycm93LWFsdC1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzUyIn0uZmEtYXJyb3ctYWx0LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYzNTMifS5mYS1hcnJvdy1hbHQtdG8tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjM0YSJ9LmZhLWFycm93LWFsdC10by1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM0YiJ9LmZhLWFycm93LWFsdC10by1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNGMifS5mYS1hcnJvdy1hbHQtdG8tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0ZCJ9LmZhLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzNTcifS5mYS1hcnJvdy1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYWIifS5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTgifS5mYS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE5In0uZmEtYXJyb3ctY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjBhYSJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtYXJyb3ctZnJvbS1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IlxmMzQyIn0uZmEtYXJyb3ctZnJvbS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM0MyJ9LmZhLWFycm93LWZyb20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ0In0uZmEtYXJyb3ctZnJvbS10b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ1In0uZmEtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNjAifS5mYS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNjEifS5mYS1hcnJvdy1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMzkifS5mYS1hcnJvdy1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzM2EifS5mYS1hcnJvdy1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzNiIn0uZmEtYXJyb3ctc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMzYyJ9LmZhLWFycm93LXRvLWJvdHRvbTpiZWZvcmV7Y29udGVudDoiXGYzM2QifS5mYS1hcnJvdy10by1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMzZSJ9LmZhLWFycm93LXRvLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM0MCJ9LmZhLWFycm93LXRvLXRvcDpiZWZvcmV7Y29udGVudDoiXGYzNDEifS5mYS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYwNjIifS5mYS1hcnJvd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ3In0uZmEtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1hcnJvd3MtYWx0LWg6YmVmb3Jle2NvbnRlbnQ6IlxmMzM3In0uZmEtYXJyb3dzLWFsdC12OmJlZm9yZXtjb250ZW50OiJcZjMzOCJ9LmZhLWFycm93cy1oOmJlZm9yZXtjb250ZW50OiJcZjA3ZSJ9LmZhLWFycm93cy12OmJlZm9yZXtjb250ZW50OiJcZjA3ZCJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmV7Y29udGVudDoiXGYyYTIifS5mYS1hdDpiZWZvcmV7Y29udGVudDoiXGYxZmEifS5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmV7Y29udGVudDoiXGYyOWUifS5mYS1hd2FyZDpiZWZvcmV7Y29udGVudDoiXGY1NTkifS5mYS1iYWRnZTpiZWZvcmV7Y29udGVudDoiXGYzMzUifS5mYS1iYWRnZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYzMzYifS5mYS1iYW46YmVmb3Jle2NvbnRlbnQ6IlxmMDVlIn0uZmEtYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMmEifS5mYS1iYXJjb2RlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0NjMifS5mYS1iYXJzOmJlZm9yZXtjb250ZW50OiJcZjBjOSJ9LmZhLWJhdHRlcnktZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyNDAifS5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmVsbDpiZWZvcmV7Y29udGVudDoiXGYwZjMifS5mYS1iZWxsLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjg0OCJ9LmZhLWJlbGwtcGx1czpiZWZvcmV7Y29udGVudDoiXGY4NDkifS5mYS1iZWxsLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmNiJ9LmZhLWJsb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNzgxIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGU3In0uZmEtYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMDJlIn0uZmEtYm94LW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNDllIn0uZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZXtjb250ZW50OiJcZjUxOSJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtYnVsbGhvcm46YmVmb3Jle2NvbnRlbnQ6IlxmMGExIn0uZmEtYnVsbHNleWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQwIn0uZmEtYnVzOmJlZm9yZXtjb250ZW50OiJcZjIwNyJ9LmZhLWJ1cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTVlIn0uZmEtYnVzLXNjaG9vbDpiZWZvcmV7Y29udGVudDoiXGY1ZGQifS5mYS1jYWxjdWxhdG9yOmJlZm9yZXtjb250ZW50OiJcZjFlYyJ9LmZhLWNhbGN1bGF0b3ItYWx0OmJlZm9yZXtjb250ZW50OiJcZjY0YyJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjEzMyJ9LmZhLWNhbGVuZGFyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwNzMifS5mYS1jYWxlbmRhci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyNzQifS5mYS1jYWxlbmRhci1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjMzMyJ9LmZhLWNhbGVuZGFyLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjMzNCJ9LmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjI3MiJ9LmZhLWNhbGVuZGFyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1jYW1lcmEtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMzMiJ9LmZhLWNhbWVyYS1ob21lOmJlZm9yZXtjb250ZW50OiJcZjhmZSJ9LmZhLWNhcjpiZWZvcmV7Y29udGVudDoiXGYxYjkifS5mYS1jYXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjVkZSJ9LmZhLWNhci1iYXR0ZXJ5OmJlZm9yZXtjb250ZW50OiJcZjVkZiJ9LmZhLWNhci1idWlsZGluZzpiZWZvcmV7Y29udGVudDoiXGY4NTkifS5mYS1jYXItYnVtcDpiZWZvcmV7Y29udGVudDoiXGY1ZTAifS5mYS1jYXItYnVzOmJlZm9yZXtjb250ZW50OiJcZjg1YSJ9LmZhLWNhci1jcmFzaDpiZWZvcmV7Y29udGVudDoiXGY1ZTEifS5mYS1jYXItZ2FyYWdlOmJlZm9yZXtjb250ZW50OiJcZjVlMiJ9LmZhLWNhci1tZWNoYW5pYzpiZWZvcmV7Y29udGVudDoiXGY1ZTMifS5mYS1jYXItc2lkZTpiZWZvcmV7Y29udGVudDoiXGY1ZTQifS5mYS1jYXItdGlsdDpiZWZvcmV7Y29udGVudDoiXGY1ZTUifS5mYS1jYXItd2FzaDpiZWZvcmV7Y29udGVudDoiXGY1ZTYifS5mYS1jYXJhdmFuOmJlZm9yZXtjb250ZW50OiJcZjhmZiJ9LmZhLWNhcmF2YW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZTAwMCJ9LmZhLWNhcmV0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMyZCJ9LmZhLWNhcmV0LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMyZSJ9LmZhLWNhcmV0LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMzAifS5mYS1jYXJldC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzMxIn0uZmEtY2FyZXQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZDcifS5mYS1jYXJldC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBkOSJ9LmZhLWNhcmV0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBkYSJ9LmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1MCJ9LmZhLWNhcmV0LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE5MSJ9LmZhLWNhcmV0LXNxdWFyZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNTIifS5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTUxIn0uZmEtY2FyZXQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ4In0uZmEtY2FyczpiZWZvcmV7Y29udGVudDoiXGY4NWIifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNjLXBheXBhbDpiZWZvcmV7Y29udGVudDoiXGYxZjQifS5mYS1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGYwYTMifS5mYS1jaGFpcjpiZWZvcmV7Y29udGVudDoiXGY2YzAifS5mYS1jaGFsa2JvYXJkOmJlZm9yZXtjb250ZW50OiJcZjUxYiJ9LmZhLWNoYXJnaW5nLXN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNWU3In0uZmEtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1saW5lLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmNjRkIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLWNoZWNrLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGY1NjAifS5mYS1jaGVjay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRhIn0uZmEtY2hldnJvbi1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxM2EifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEzNyJ9LmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEzOCJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9LmZhLWNoZXZyb24tZG91YmxlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzIyIn0uZmEtY2hldnJvbi1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMjMifS5mYS1jaGV2cm9uLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMjQifS5mYS1jaGV2cm9uLWRvdWJsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzMjUifS5mYS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDc4In0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDU0In0uZmEtY2hldnJvbi1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMjkifS5mYS1jaGV2cm9uLXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMyYSJ9LmZhLWNoZXZyb24tc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMyYiJ9LmZhLWNoZXZyb24tc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMyYyJ9LmZhLWNoZXZyb24tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDc3In0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWNpcmNsZS1ub3RjaDpiZWZvcmV7Y29udGVudDoiXGYxY2UifS5mYS1jaXR5OmJlZm9yZXtjb250ZW50OiJcZjY0ZiJ9LmZhLWNsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGYzMjgifS5mYS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYwMTcifS5mYS1jbG9uZTpiZWZvcmV7Y29udGVudDoiXGYyNGQifS5mYS1jbG9zZWQtY2FwdGlvbmluZzpiZWZvcmV7Y29udGVudDoiXGYyMGEifS5mYS1jbG91ZDpiZWZvcmV7Y29udGVudDoiXGYwYzIifS5mYS1jbG91ZC1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwZWQifS5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgxIn0uZmEtY2xvdWQtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjBlZSJ9LmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgyIn0uZmEtY2x1YjpiZWZvcmV7Y29udGVudDoiXGYzMjcifS5mYS1jb2ZmZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMGY0In0uZmEtY29nOmJlZm9yZXtjb250ZW50OiJcZjAxMyJ9LmZhLWNvZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDg1In0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1jb21tZW50LWFsdC1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0YTIifS5mYS1jb21tZW50LWFsdC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUwIn0uZmEtY29tbWVudC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUxIn0uZmEtY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMDg2In0uZmEtY29tbWVudHMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjRiNiJ9LmZhLWNvbW1lbnRzLWFsdC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUyIn0uZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MyJ9LmZhLWNvbXByZXNzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MjIifS5mYS1jb21wcmVzcy1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjc4YyJ9LmZhLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxmMGM1In0uZmEtY29weXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjFmOSJ9LmZhLWNvdWNoOmJlZm9yZXtjb250ZW50OiJcZjRiOCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNGYyIn0uZmEtY3JlZGl0LWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDlkIn0uZmEtY3V0OmJlZm9yZXtjb250ZW50OiJcZjBjNCJ9LmZhLWRhdGFiYXNlOmJlZm9yZXtjb250ZW50OiJcZjFjMCJ9LmZhLWRlc2t0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA4In0uZmEtZGlhbW9uZDpiZWZvcmV7Y29udGVudDoiXGYyMTkifS5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3Jle2NvbnRlbnQ6IlxmNTY2In0uZmEtZG9sbGFyLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU1In0uZmEtZG90LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxOTIifS5mYS1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTkifS5mYS1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjA0NCJ9LmZhLWVsbGlwc2lzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0uZmEtZWxsaXBzaXMtaC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzliIn0uZmEtZWxsaXBzaXMtdjpiZWZvcmV7Y29udGVudDoiXGYxNDIifS5mYS1lbGxpcHNpcy12LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOWMifS5mYS1lbmdpbmUtd2FybmluZzpiZWZvcmV7Y29udGVudDoiXGY1ZjIifS5mYS1lbnZlbG9wZTpiZWZvcmV7Y29udGVudDoiXGYwZTAifS5mYS1lbnZlbG9wZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjJiNiJ9LmZhLWVudmVsb3BlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxOTkifS5mYS1lcmFzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTJkIn0uZmEtZXhjaGFuZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGVjIn0uZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MiJ9LmZhLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyYSJ9LmZhLWV4Y2xhbWF0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNmEifS5mYS1leGNsYW1hdGlvbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzIxIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZXhwYW5kLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MjQifS5mYS1leHBhbmQtYXJyb3dzOmJlZm9yZXtjb250ZW50OiJcZjMxZCJ9LmZhLWV4cGFuZC1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMxZSJ9LmZhLWV4dGVybmFsLWxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMDhlIn0uZmEtZXh0ZXJuYWwtbGluay1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVkIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRjIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MCJ9LmZhLWV5ZTpiZWZvcmV7Y29udGVudDoiXGYwNmUifS5mYS1leWUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDcwIn0uZmEtZmFjZWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDlhIn0uZmEtZmFjZWJvb2stZjpiZWZvcmV7Y29udGVudDoiXGYzOWUifS5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzlmIn0uZmEtZmFjZWJvb2stc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MiJ9LmZhLWZheDpiZWZvcmV7Y29udGVudDoiXGYxYWMifS5mYS1maWxlOmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9LmZhLWZpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLWZpbGUtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxYzYifS5mYS1maWxlLWF1ZGlvOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGY2NTkifS5mYS1maWxlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjMxNiJ9LmZhLWZpbGUtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS1maWxlLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjU2ZCJ9LmZhLWZpbGUtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYzMWMifS5mYS1maWxlLWV4Y2VsOmJlZm9yZXtjb250ZW50OiJcZjFjMyJ9LmZhLWZpbGUtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMzFhIn0uZmEtZmlsZS1leHBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZlIn0uZmEtZmlsZS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYzUifS5mYS1maWxlLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1NmYifS5mYS1maWxlLWludm9pY2UtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjU3MSJ9LmZhLWZpbGUtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE4In0uZmEtZmlsZS1tdXNpYzpiZWZvcmV7Y29udGVudDoiXGY4YjYifS5mYS1maWxlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxYzEifS5mYS1maWxlLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE5In0uZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9LmZhLWZpbGUtc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjg2NSJ9LmZhLWZpbGUtdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzE3In0uZmEtZmlsZS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc0In0uZmEtZmlsZS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1maWxlLXdvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWMyIn0uZmEtZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjBiMCJ9LmZhLWZpbmdlcnByaW50OmJlZm9yZXtjb250ZW50OiJcZjU3NyJ9LmZhLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZkIn0uZmEtZmxhZzpiZWZvcmV7Y29udGVudDoiXGYwMjQifS5mYS1mbGFnLWFsdDpiZWZvcmV7Y29udGVudDoiXGY3NGMifS5mYS1mbGFnLWNoZWNrZXJlZDpiZWZvcmV7Y29udGVudDoiXGYxMWUifS5mYS1mbHV4LWNhcGFjaXRvcjpiZWZvcmV7Y29udGVudDoiXGY4YmEifS5mYS1mb2xkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDdiIn0uZmEtZm9sZGVyLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZTA1MyJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWZvbGRlci11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDU0In0uZmEtZnJvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTE5In0uZmEtZnJvd24tb3BlbjpiZWZvcmV7Y29udGVudDoiXGY1N2EifS5mYS1nYWxhY3RpYy1zZW5hdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTBkIn0uZmEtZ2FyYWdlOmJlZm9yZXtjb250ZW50OiJcZTAwOSJ9LmZhLWdhcmFnZS1jYXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDBhIn0uZmEtZ2FyYWdlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxlMDBiIn0uZmEtZ2FzLXB1bXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTJmIn0uZmEtZ2FzLXB1bXAtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWY0In0uZmEtZ2xhc3NlczpiZWZvcmV7Y29udGVudDoiXGY1MzAifS5mYS1nbG9iZTpiZWZvcmV7Y29udGVudDoiXGYwYWMifS5mYS1nb29nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0uZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZjU4ZCJ9LmZhLWdyaXAtbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxmN2E0In0uZmEtZ3JpcC1saW5lcy12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY3YTUifS5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjU4ZSJ9LmZhLWhhbmQtaG9sZGluZy11c2Q6YmVmb3Jle2NvbnRlbnQ6IlxmNGMwIn0uZmEtaGFuZC1wb2ludC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhNyJ9LmZhLWhhbmQtcG9pbnQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTUifS5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhNCJ9LmZhLWhhbmQtcG9pbnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGE2In0uZmEtaGFuZC1wb2ludGVyOmJlZm9yZXtjb250ZW50OiJcZjI1YSJ9LmZhLWhhbmRzLXVzZDpiZWZvcmV7Y29udGVudDoiXGY0YzUifS5mYS1oYXNodGFnOmJlZm9yZXtjb250ZW50OiJcZjI5MiJ9LmZhLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZjAwNCJ9LmZhLWhlYXJ0LWJyb2tlbjpiZWZvcmV7Y29udGVudDoiXGY3YTkifS5mYS1oZXhhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMxMiJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1ob21lLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MGEifS5mYS1ob21lLWxnOmJlZm9yZXtjb250ZW50OiJcZjgwYiJ9LmZhLWhvbWUtbGctYWx0OmJlZm9yZXtjb250ZW50OiJcZjgwYyJ9LmZhLWhvdXNlOmJlZm9yZXtjb250ZW50OiJcZTAwZCJ9LmZhLWktY3Vyc29yOmJlZm9yZXtjb250ZW50OiJcZjI0NiJ9LmZhLWluYm94OmJlZm9yZXtjb250ZW50OiJcZjAxYyJ9LmZhLWluYm94LWluOmJlZm9yZXtjb250ZW50OiJcZjMxMCJ9LmZhLWluYm94LW91dDpiZWZvcmV7Y29udGVudDoiXGYzMTEifS5mYS1pbmZvOmJlZm9yZXtjb250ZW50OiJcZjEyOSJ9LmZhLWluZm8tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1YSJ9LmZhLWluZm8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjMwZiJ9LmZhLWluc3RhZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYxNmQifS5mYS1pbnN0YWdyYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZTA1NSJ9LmZhLWtleTpiZWZvcmV7Y29udGVudDoiXGYwODQifS5mYS1sYW5ndWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYWIifS5mYS1sYXNzbzpiZWZvcmV7Y29udGVudDoiXGY4YzgifS5mYS1sZWFmOmJlZm9yZXtjb250ZW50OiJcZjA2YyJ9LmZhLWxldmVsLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTQ5In0uZmEtbGV2ZWwtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2JlIn0uZmEtbGV2ZWwtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ4In0uZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZiJ9LmZhLWxpbmtlZGluOmJlZm9yZXtjb250ZW50OiJcZjA4YyJ9LmZhLWxpbmtlZGluLWluOmJlZm9yZXtjb250ZW50OiJcZjBlMSJ9LmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZXtjb250ZW50OiJcZjEyNCJ9LmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtbG9uZy1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMGEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzMGMifS5mYS1sb25nLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTc1In0uZmEtbG9uZy1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE3NyJ9LmZhLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTc4In0uZmEtbG9uZy1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYxNzYifS5mYS1tYWdpYzpiZWZvcmV7Y29udGVudDoiXGYwZDAifS5mYS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjc5In0uZmEtbWFwLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYwNDEifS5mYS1tYXAtbWFya2VyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYzUifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLW1hcC1zaWduczpiZWZvcmV7Y29udGVudDoiXGYyNzcifS5mYS1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWExIn0uZmEtbWVkYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNWEyIn0uZmEtbWVoOmJlZm9yZXtjb250ZW50OiJcZjExYSJ9LmZhLW1pY3JvY2hpcDpiZWZvcmV7Y29udGVudDoiXGYyZGIifS5mYS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjEzMCJ9LmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjOSJ9LmZhLW1pY3JvcGhvbmUtYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjUzOSJ9LmZhLW1pY3JvcGhvbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTMxIn0uZmEtbWluZC1zaGFyZTpiZWZvcmV7Y29udGVudDoiXGY2NzcifS5mYS1taW51czpiZWZvcmV7Y29udGVudDoiXGYwNjgifS5mYS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU2In0uZmEtbWludXMtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDcifS5mYS1taW51cy1vY3RhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMwOCJ9LmZhLW1pbnVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDYifS5mYS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTBiIn0uZmEtbW9iaWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzY2QifS5mYS1tb2JpbGUtYW5kcm9pZDpiZWZvcmV7Y29udGVudDoiXGYzY2UifS5mYS1tb2JpbGUtYW5kcm9pZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NmIn0uZmEtbW9uZXktY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNTNjIn0uZmEtbW9uZXktY2hlY2stYWx0OmJlZm9yZXtjb250ZW50OiJcZjUzZCJ9LmZhLW1vbmV5LWNoZWNrLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmODcyIn0uZmEtbW9uZXktY2hlY2stZWRpdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODczIn0uZmEtbW90b3JjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMWMifS5mYS1tb3VudGFpbjpiZWZvcmV7Y29udGVudDoiXGY2ZmMifS5mYS1tb3VzZS1wb2ludGVyOmJlZm9yZXtjb250ZW50OiJcZjI0NSJ9LmZhLW1wMy1wbGF5ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmOGNlIn0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDYifS5mYS1vaWwtY2FuOmJlZm9yZXtjb250ZW50OiJcZjYxMyJ9LmZhLW9pbC10ZW1wOmJlZm9yZXtjb250ZW50OiJcZjYxNCJ9LmZhLXBhaW50LWJydXNoOmJlZm9yZXtjb250ZW50OiJcZjFmYyJ9LmZhLXBhbGV0dGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTNmIn0uZmEtcGFwZXItcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ4In0uZmEtcGFzdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGVhIn0uZmEtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9LmZhLXBlbjpiZWZvcmV7Y29udGVudDoiXGYzMDQifS5mYS1wZW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZjMwNSJ9LmZhLXBlbi1mYW5jeTpiZWZvcmV7Y29udGVudDoiXGY1YWMifS5mYS1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDQwIn0uZmEtcGVuY2lsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMDMifS5mYS1wZW5jaWwtcnVsZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWFlIn0uZmEtcGVvcGxlLWFycm93czpiZWZvcmV7Y29udGVudDoiXGUwNjgifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1waG9uZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODc5In0uZmEtcGhvbmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA5OCJ9LmZhLXBob25lLXNxdWFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODdiIn0uZmEtcGhvbmUtdm9sdW1lOmJlZm9yZXtjb250ZW50OiJcZjJhMCJ9LmZhLXBob3RvLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjg3YyJ9LmZhLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDIifS5mYS1waW50ZXJlc3QtcDpiZWZvcmV7Y29udGVudDoiXGYyMzEifS5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBkMyJ9LmZhLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDRiIn0uZmEtcGxheS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ0In0uZmEtcGx1ZzpiZWZvcmV7Y29udGVudDoiXGYxZTYifS5mYS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjA2NyJ9LmZhLXBsdXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NSJ9LmZhLXBsdXMtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDAifS5mYS1wbHVzLW9jdGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzAxIn0uZmEtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGZlIn0uZmEtcG9vOmJlZm9yZXtjb250ZW50OiJcZjJmZSJ9LmZhLXByaW50OmJlZm9yZXtjb250ZW50OiJcZjAyZiJ9LmZhLXFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMjkifS5mYS1xdWVzdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMjgifS5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU5In0uZmEtcXVlc3Rpb24tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJmZCJ9LmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtcXVvdGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBlIn0uZmEtcmFuZG9tOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXJlY3RhbmdsZS1sYW5kc2NhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmZhIn0uZmEtcmVjdGFuZ2xlLXBvcnRyYWl0OmJlZm9yZXtjb250ZW50OiJcZjJmYiJ9LmZhLXJlY3RhbmdsZS13aWRlOmJlZm9yZXtjb250ZW50OiJcZjJmYyJ9LmZhLXJlY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI4In0uZmEtcmVkbzpiZWZvcmV7Y29udGVudDoiXGYwMWUifS5mYS1yZWRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjkifS5mYS1yZXBlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYzIn0uZmEtcmVwZWF0LTE6YmVmb3Jle2NvbnRlbnQ6IlxmMzY1In0uZmEtcmVwZWF0LTEtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2NiJ9LmZhLXJlcGVhdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY0In0uZmEtcmVwbHk6YmVmb3Jle2NvbnRlbnQ6IlxmM2U1In0uZmEtcmVwbHktYWxsOmJlZm9yZXtjb250ZW50OiJcZjEyMiJ9LmZhLXJldHdlZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc5In0uZmEtcmV0d2VldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYxIn0uZmEtcm9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTgifS5mYS1yb2JvdDpiZWZvcmV7Y29udGVudDoiXGY1NDQifS5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDMifS5mYS1ydjpiZWZvcmV7Y29udGVudDoiXGY3YmUifS5mYS1zYXZlOmJlZm9yZXtjb250ZW50OiJcZjBjNyJ9LmZhLXNjcmV3ZHJpdmVyOmJlZm9yZXtjb250ZW50OiJcZjU0YSJ9LmZhLXNlYXJjaDpiZWZvcmV7Y29udGVudDoiXGYwMDIifS5mYS1zZWFyY2gtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDEwIn0uZmEtc2VhcmNoLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBlIn0uZmEtc2hhcGVzOmJlZm9yZXtjb250ZW50OiJcZjYxZiJ9LmZhLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjA2NCJ9LmZhLXNoYXJlLWFsbDpiZWZvcmV7Y29udGVudDoiXGYzNjcifS5mYS1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWUwIn0uZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTEifS5mYS1zaGFyZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0uZmEtc2hpZWxkOmJlZm9yZXtjb250ZW50OiJcZjEzMiJ9LmZhLXNoaWVsZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2VkIn0uZmEtc2hvcHBpbmctYmFza2V0OmJlZm9yZXtjb250ZW50OiJcZjI5MSJ9LmZhLXNob3BwaW5nLWNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDdhIn0uZmEtc2h1dHRsZS12YW46YmVmb3Jle2NvbnRlbnQ6IlxmNWI2In0uZmEtc2lnbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwOTAifS5mYS1zaWduLWluLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjYifS5mYS1zaWduLW91dDpiZWZvcmV7Y29udGVudDoiXGYwOGIifS5mYS1zaWduLW91dC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY1In0uZmEtc2lnbmFsOmJlZm9yZXtjb250ZW50OiJcZjAxMiJ9LmZhLXNpZ25hbC1zdHJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmOGRkIn0uZmEtc2l0ZW1hcDpiZWZvcmV7Y29udGVudDoiXGYwZTgifS5mYS1zbGlkZXJzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMWRlIn0uZmEtc2xpZGVycy1oLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzZjAifS5mYS1zbGlkZXJzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmM2YxIn0uZmEtc2xpZGVycy12LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzZjIifS5mYS1zbWlsZTpiZWZvcmV7Y29udGVudDoiXGYxMTgifS5mYS1zbXM6YmVmb3Jle2NvbnRlbnQ6IlxmN2NkIn0uZmEtc25vd2ZsYWtlOmJlZm9yZXtjb250ZW50OiJcZjJkYyJ9LmZhLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRjIn0uZmEtc29ydC1hbHBoYS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1ZCJ9LmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgxIn0uZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1zb3J0LWFscGhhLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODIifS5mYS1zb3J0LWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODMifS5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9LmZhLXNvcnQtYW1vdW50LWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NCJ9LmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLXNvcnQtYW1vdW50LXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODUifS5mYS1zb3J0LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwMzAifS5mYS1zb3J0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTAzMSJ9LmZhLXNvcnQtY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZTAzMiJ9LmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjIifS5mYS1zb3J0LW51bWVyaWMtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg2In0uZmEtc29ydC1udW1lcmljLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9LmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg3In0uZmEtc29ydC1zaGFwZXMtZG93bjpiZWZvcmV7Y29udGVudDoiXGY4ODgifS5mYS1zb3J0LXNoYXBlcy1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODkifS5mYS1zb3J0LXNoYXBlcy11cDpiZWZvcmV7Y29udGVudDoiXGY4OGEifS5mYS1zb3J0LXNoYXBlcy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODhiIn0uZmEtc29ydC1zaXplLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmODhjIn0uZmEtc29ydC1zaXplLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4ZCJ9LmZhLXNvcnQtc2l6ZS11cDpiZWZvcmV7Y29udGVudDoiXGY4OGUifS5mYS1zb3J0LXNpemUtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4ZiJ9LmZhLXNvcnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGRlIn0uZmEtc3BhZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmY0In0uZmEtc3Bpbm5lcjpiZWZvcmV7Y29udGVudDoiXGYxMTAifS5mYS1zcGlubmVyLXRoaXJkOmJlZm9yZXtjb250ZW50OiJcZjNmNCJ9LmZhLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwYzgifS5mYS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjAwNSJ9LmZhLXN0YXItZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMmYzIn0uZmEtc3Rhci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjA4OSJ9LmZhLXN0YXItaGFsZi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWMwIn0uZmEtc3RlZXJpbmctd2hlZWw6YmVmb3Jle2NvbnRlbnQ6IlxmNjIyIn0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RvcHdhdGNoOmJlZm9yZXtjb250ZW50OiJcZjJmMiJ9LmZhLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjU0ZSJ9LmZhLXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1NGYifS5mYS1zdWl0Y2FzZS1yb2xsaW5nOmJlZm9yZXtjb250ZW50OiJcZjVjMSJ9LmZhLXN1bjpiZWZvcmV7Y29udGVudDoiXGYxODUifS5mYS1zeW5jOmJlZm9yZXtjb250ZW50OiJcZjAyMSJ9LmZhLXN5bmMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmMSJ9LmZhLXRhYmxldDpiZWZvcmV7Y29udGVudDoiXGYxMGEifS5mYS10YWJsZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmYSJ9LmZhLXRhY2hvbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGU0In0uZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZkIn0uZmEtdGFjaG9tZXRlci1hbHQtYXZlcmFnZTpiZWZvcmV7Y29udGVudDoiXGY2MjQifS5mYS10YWNob21ldGVyLWFsdC1mYXN0OmJlZm9yZXtjb250ZW50OiJcZjYyNSJ9LmZhLXRhY2hvbWV0ZXItYWx0LWZhc3Rlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjI2In0uZmEtdGFjaG9tZXRlci1hbHQtc2xvdzpiZWZvcmV7Y29udGVudDoiXGY2MjcifS5mYS10YWNob21ldGVyLWFsdC1zbG93ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyOCJ9LmZhLXRhY2hvbWV0ZXItYXZlcmFnZTpiZWZvcmV7Y29udGVudDoiXGY2MjkifS5mYS10YWNob21ldGVyLWZhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjJhIn0uZmEtdGFjaG9tZXRlci1mYXN0ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyYiJ9LmZhLXRhY2hvbWV0ZXItc2xvdzpiZWZvcmV7Y29udGVudDoiXGY2MmMifS5mYS10YWNob21ldGVyLXNsb3dlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjJkIn0uZmEtdGFnOmJlZm9yZXtjb250ZW50OiJcZjAyYiJ9LmZhLXRhZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDJjIn0uZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZXtjb250ZW50OiJcZjc2OSJ9LmZhLXRlbXBlcmF0dXJlLWxvdzpiZWZvcmV7Y29udGVudDoiXGY3NmIifS5mYS10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzQifS5mYS10ZXh0LXdpZHRoOmJlZm9yZXtjb250ZW50OiJcZjAzNSJ9LmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMmM5In0uZmEtdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTY1In0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRpY2tldDpiZWZvcmV7Y29udGVudDoiXGYxNDUifS5mYS10aWt0b2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDdiIn0uZmEtdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBkIn0uZmEtdGltZXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NyJ9LmZhLXRpbWVzLWhleGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMmVlIn0uZmEtdGltZXMtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYyZjAifS5mYS10aW1lcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQzIn0uZmEtdGludDpiZWZvcmV7Y29udGVudDoiXGYwNDMifS5mYS10aXJlOmJlZm9yZXtjb250ZW50OiJcZjYzMSJ9LmZhLXRpcmUtZmxhdDpiZWZvcmV7Y29udGVudDoiXGY2MzIifS5mYS10aXJlLXByZXNzdXJlLXdhcm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNjMzIn0uZmEtdGlyZS1ydWdnZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjM0In0uZmEtdG9nZ2xlLW9mZjpiZWZvcmV7Y29udGVudDoiXGYyMDQifS5mYS10b2dnbGUtb246YmVmb3Jle2NvbnRlbnQ6IlxmMjA1In0uZmEtdG9vbHM6YmVmb3Jle2NvbnRlbnQ6IlxmN2Q5In0uZmEtdHJhaWxlcjpiZWZvcmV7Y29udGVudDoiXGUwNDEifS5mYS10cmFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjgifS5mYS10cmFzaC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmVkIn0uZmEtdHJhc2gtcmVzdG9yZTpiZWZvcmV7Y29udGVudDoiXGY4MjkifS5mYS10cmFzaC1yZXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MmEifS5mYS10cmFzaC11bmRvOmJlZm9yZXtjb250ZW50OiJcZjg5NSJ9LmZhLXRyYXNoLXVuZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg5NiJ9LmZhLXRyaWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjJlYyJ9LmZhLXRyb3BoeTpiZWZvcmV7Y29udGVudDoiXGYwOTEifS5mYS10cm9waHktYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlYiJ9LmZhLXRydWNrOmJlZm9yZXtjb250ZW50OiJcZjBkMSJ9LmZhLXRydWNrLWxvYWRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNGRlIn0uZmEtdHJ1Y2stbW9uc3RlcjpiZWZvcmV7Y29udGVudDoiXGY2M2IifS5mYS10cnVjay1waWNrdXA6YmVmb3Jle2NvbnRlbnQ6IlxmNjNjIn0uZmEtdHR5OmJlZm9yZXtjb250ZW50OiJcZjFlNCJ9LmZhLXR2OmJlZm9yZXtjb250ZW50OiJcZjI2YyJ9LmZhLXR3aXR0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDk5In0uZmEtdHdpdHRlci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgxIn0uZmEtdW5kbzpiZWZvcmV7Y29udGVudDoiXGYwZTIifS5mYS11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWEifS5mYS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDkzIn0uZmEtdXNkLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyZTgifS5mYS11c2Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJlOSJ9LmZhLXVzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA3In0uZmEtdXNlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDA2In0uZmEtdXNlci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0ZmMifS5mYS11c2VyLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyYmQifS5mYS11c2VyLWZyaWVuZHM6YmVmb3Jle2NvbnRlbnQ6IlxmNTAwIn0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMDNkIn0uZmEtdm9pY2VtYWlsOmJlZm9yZXtjb250ZW50OiJcZjg5NyJ9LmZhLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGY2YTgifS5mYS12b2x1bWUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwMjcifS5mYS12b2x1bWUtbXV0ZTpiZWZvcmV7Y29udGVudDoiXGY2YTkifS5mYS12b2x1bWUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAyNiJ9LmZhLXZvbHVtZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYyZTIifS5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtd2Fnb24tY292ZXJlZDpiZWZvcmV7Y29udGVudDoiXGY4ZWUifS5mYS13YWxraWUtdGFsa2llOmJlZm9yZXtjb250ZW50OiJcZjhlZiJ9LmZhLXdlYmNhbTpiZWZvcmV7Y29udGVudDoiXGY4MzIifS5mYS13ZWJjYW0tc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmODMzIn0uZmEtd2hlZWxjaGFpcjpiZWZvcmV7Y29udGVudDoiXGYxOTMifS5mYS13aWZpOmJlZm9yZXtjb250ZW50OiJcZjFlYiJ9LmZhLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYwYWQifS5mYS15b3V0dWJlOmJlZm9yZXtjb250ZW50OiJcZjE2NyJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQzMSJ9LmZhLXNoaWVsZC1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyZjcifS5mYS1saW5rOmJlZm9yZXtjb250ZW50OiJcZjBjMSJ9LmZhLXVubGluazpiZWZvcmV7Y29udGVudDoiXGYxMjcifS5mYS1iYWRnZS1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjQ1In0uZmEtcGVuLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGIifS5mYS1jb21tZW50LWFsdC1kb3RzOmJlZm9yZXtjb250ZW50OiJcZjRhMyJ9LmZhLWFycm93LWRvd24tdG8tbGluZTpiZWZvcmV7Y29udGVudDoiXGYzM2QifS5mYS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNTYiO30uc3Itb25seXtib3JkZXI6MDtjbGlwOnJlY3QoMCwwLDAsMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1c3tjbGlwOmF1dG87aGVpZ2h0OmF1dG87bWFyZ2luOjA7b3ZlcmZsb3c6dmlzaWJsZTtwb3NpdGlvbjpzdGF0aWM7d2lkdGg6YXV0b31AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBCcmFuZHMnO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdCk7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFie2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBCcmFuZHMnO2ZvbnQtd2VpZ2h0OjQwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjMwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFse2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtd2VpZ2h0OjMwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5lb3QpO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmFye2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtd2VpZ2h0OjQwMH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjkwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLnN2ZyNmb250YXdlc29tZSkgZm9ybWF0KCJzdmciKX0uZmEsLmZhc3tmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJyFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6OTAwfUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0QyQ0N1c3RvbUljb25zJztzcmM6bG9jYWwoRDJDQ3VzdG9tSWNvbnMpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZDJjLWN1c3RvbS1pY29ucy50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kMmMtY3VzdG9tLWljb25zLnN2ZyNzdmdGb250TmFtZSkgZm9ybWF0KCJzdmciKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9LmZhLXgtdHdpdHRlcjpiZWZvcmV7Zm9udC1mYW1pbHk6J0QyQ0N1c3RvbUljb25zJyxzZXJpZjtjb250ZW50OiJcZTkwMCI7ZGlzcGxheTpibG9jaztmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9Ci8qKiAvY3NzL2ZvbnQtYXdlc29tZS5jb250ZW50Lm1pbi5jc3MgKiovCi5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hY2Nlc3NpYmxlLWljb246YmVmb3Jle2NvbnRlbnQ6IlxmMzY4In0uZmEtYWNjdXNvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY5In0uZmEtYWRkcmVzcy1ib29rOmJlZm9yZXtjb250ZW50OiJcZjJiOSJ9LmZhLWFkZHJlc3MtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYmIifS5mYS1hZGp1c3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDQyIn0uZmEtYWRuOmJlZm9yZXtjb250ZW50OiJcZjE3MCJ9LmZhLWFkdmVyc2FsOmJlZm9yZXtjb250ZW50OiJcZjM2YSJ9LmZhLWFmZmlsaWF0ZXRoZW1lOmJlZm9yZXtjb250ZW50OiJcZjM2YiJ9LmZhLWFsZ29saWE6YmVmb3Jle2NvbnRlbnQ6IlxmMzZjIn0uZmEtYWxpZ24tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZjAzNyJ9LmZhLWFsaWduLWp1c3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMDM5In0uZmEtYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwMzYifS5mYS1hbGlnbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzgifS5mYS1hbWF6b246YmVmb3Jle2NvbnRlbnQ6IlxmMjcwIn0uZmEtYW1hem9uLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MmMifS5mYS1hbWJ1bGFuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGY5In0uZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMmEzIn0uZmEtYW1pbGlhOmJlZm9yZXtjb250ZW50OiJcZjM2ZCJ9LmZhLWFuY2hvcjpiZWZvcmV7Y29udGVudDoiXGYxM2QifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWFuZ2VsbGlzdDpiZWZvcmV7Y29udGVudDoiXGYyMDkifS5mYS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDMifS5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDAifS5mYS1hbmdsZS1kb3VibGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTAxIn0uZmEtYW5nbGUtZG91YmxlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwMiJ9LmZhLWFuZ2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTA3In0uZmEtYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDQifS5mYS1hbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDUifS5mYS1hbmdsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDYifS5mYS1hbmdyeWNyZWF0aXZlOmJlZm9yZXtjb250ZW50OiJcZjM2ZSJ9LmZhLWFuZ3VsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIwIn0uZmEtYXBwLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjM2ZiJ9LmZhLWFwcC1zdG9yZS1pb3M6YmVmb3Jle2NvbnRlbnQ6IlxmMzcwIn0uZmEtYXBwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzcxIn0uZmEtYXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc5In0uZmEtYXBwbGUtcGF5OmJlZm9yZXtjb250ZW50OiJcZjQxNSJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWFycm93LWFsdC1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1YSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzViIn0uZmEtYXJyb3ctY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGFiIn0uZmEtYXJyb3ctY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE4In0uZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhOSJ9LmZhLWFycm93LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYwYWEifS5mYS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA2MyJ9LmZhLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYwIn0uZmEtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYxIn0uZmEtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDYyIn0uZmEtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1hcnJvd3MtYWx0LWg6YmVmb3Jle2NvbnRlbnQ6IlxmMzM3In0uZmEtYXJyb3dzLWFsdC12OmJlZm9yZXtjb250ZW50OiJcZjMzOCJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmV7Y29udGVudDoiXGYyYTIifS5mYS1hc3RlcmlzazpiZWZvcmV7Y29udGVudDoiXGYwNjkifS5mYS1hc3ltbWV0cmlrOmJlZm9yZXtjb250ZW50OiJcZjM3MiJ9LmZhLWF0OmJlZm9yZXtjb250ZW50OiJcZjFmYSJ9LmZhLWF1ZGlibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzczIn0uZmEtYXVkaW8tZGVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMjllIn0uZmEtYXV0b3ByZWZpeGVyOmJlZm9yZXtjb250ZW50OiJcZjQxYyJ9LmZhLWF2aWFuZXg6YmVmb3Jle2NvbnRlbnQ6IlxmMzc0In0uZmEtYXZpYXRvOmJlZm9yZXtjb250ZW50OiJcZjQyMSJ9LmZhLWF3czpiZWZvcmV7Y29udGVudDoiXGYzNzUifS5mYS1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGEifS5mYS1iYWxhbmNlLXNjYWxlOmJlZm9yZXtjb250ZW50OiJcZjI0ZSJ9LmZhLWJhbjpiZWZvcmV7Y29udGVudDoiXGYwNWUifS5mYS1iYW5kY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyZDUifS5mYS1iYXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyYSJ9LmZhLWJhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGM5In0uZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0MzMifS5mYS1iYXNrZXRiYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM0In0uZmEtYmF0aDpiZWZvcmV7Y29udGVudDoiXGYyY2QifS5mYS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjI0NCJ9LmZhLWJhdHRlcnktZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyNDAifS5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZXtjb250ZW50OiJcZjI0MyJ9LmZhLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjQxIn0uZmEtYmVkOmJlZm9yZXtjb250ZW50OiJcZjIzNiJ9LmZhLWJlZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGZjIn0uZmEtYmVoYW5jZTpiZWZvcmV7Y29udGVudDoiXGYxYjQifS5mYS1iZWhhbmNlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjUifS5mYS1iZWxsOmJlZm9yZXtjb250ZW50OiJcZjBmMyJ9LmZhLWJlbGwtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY2In0uZmEtYmljeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMDYifS5mYS1iaW1vYmplY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMzc4In0uZmEtYmlub2N1bGFyczpiZWZvcmV7Y29udGVudDoiXGYxZTUifS5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9LmZhLWJpdGJ1Y2tldDpiZWZvcmV7Y29udGVudDoiXGYxNzEifS5mYS1iaXRjb2luOmJlZm9yZXtjb250ZW50OiJcZjM3OSJ9LmZhLWJpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdhIn0uZmEtYmxhY2stdGllOmJlZm9yZXtjb250ZW50OiJcZjI3ZSJ9LmZhLWJsYWNrYmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdiIn0uZmEtYmxpbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjlkIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMyIn0uZmEtYm9sdDpiZWZvcmV7Y29udGVudDoiXGYwZTcifS5mYS1ib21iOmJlZm9yZXtjb250ZW50OiJcZjFlMiJ9LmZhLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDJkIn0uZmEtYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMDJlIn0uZmEtYm93bGluZy1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzNiJ9LmZhLWJyYWlsbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmExIn0uZmEtYnJpZWZjYXNlOmJlZm9yZXtjb250ZW50OiJcZjBiMSJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtYnVsbGhvcm46YmVmb3Jle2NvbnRlbnQ6IlxmMGExIn0uZmEtYnVsbHNleWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQwIn0uZmEtYnVyb21vYmVsZXhwZXJ0ZTpiZWZvcmV7Y29udGVudDoiXGYzN2YifS5mYS1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0uZmEtYnV5c2VsbGFkczpiZWZvcmV7Y29udGVudDoiXGYyMGQifS5mYS1jYWxjdWxhdG9yOmJlZm9yZXtjb250ZW50OiJcZjFlYyJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjEzMyJ9LmZhLWNhbGVuZGFyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwNzMifS5mYS1jYWxlbmRhci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYyNzQifS5mYS1jYWxlbmRhci1taW51czpiZWZvcmV7Y29udGVudDoiXGYyNzIifS5mYS1jYWxlbmRhci1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjI3MSJ9LmZhLWNhbGVuZGFyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1jYW1lcmEtcmV0cm86YmVmb3Jle2NvbnRlbnQ6IlxmMDgzIn0uZmEtY2FyOmJlZm9yZSwuZmEtYXV0b21vYmlsZTpiZWZvcmV7Y29udGVudDoiXGYxYjkifS5mYS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkNyJ9LmZhLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ5In0uZmEtY2FyZXQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRhIn0uZmEtY2FyZXQtc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTUwIn0uZmEtY2FyZXQtc3F1YXJlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0uZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE1MiJ9LmZhLWNhcmV0LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYxNTEifS5mYS1jYXJldC11cDpiZWZvcmV7Y29udGVudDoiXGYwZDgifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNjLWFtYXpvbi1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDJkIn0uZmEtY2MtYW1leDpiZWZvcmV7Y29udGVudDoiXGYxZjMifS5mYS1jYy1hcHBsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE2In0uZmEtY2MtZGluZXJzLWNsdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjRjIn0uZmEtY2MtZGlzY292ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWYyIn0uZmEtY2MtamNiOmJlZm9yZXtjb250ZW50OiJcZjI0YiJ9LmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWYxIn0uZmEtY2MtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFmNCJ9LmZhLWNjLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGYxZjUifS5mYS1jYy12aXNhOmJlZm9yZXtjb250ZW50OiJcZjFmMCJ9LmZhLWNlbnRlcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzgwIn0uZmEtY2VydGlmaWNhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGEzIn0uZmEtY2hhcnQtYXJlYTpiZWZvcmV7Y29udGVudDoiXGYxZmUifS5mYS1jaGFydC1iYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDgwIn0uZmEtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1waWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLWNoZWNrLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGEifS5mYS1jaGVzczpiZWZvcmV7Y29udGVudDoiXGY0MzkifS5mYS1jaGVzcy1iaXNob3A6YmVmb3Jle2NvbnRlbnQ6IlxmNDNhIn0uZmEtY2hlc3MtYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDNjIn0uZmEtY2hlc3Mta2luZzpiZWZvcmV7Y29udGVudDoiXGY0M2YifS5mYS1jaGVzcy1rbmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDQxIn0uZmEtY2hlc3MtcGF3bjpiZWZvcmV7Y29udGVudDoiXGY0NDMifS5mYS1jaGVzcy1xdWVlbjpiZWZvcmV7Y29udGVudDoiXGY0NDUifS5mYS1jaGVzcy1yb29rOmJlZm9yZXtjb250ZW50OiJcZjQ0NyJ9LmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTNhIn0uZmEtY2hldnJvbi1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMzcifS5mYS1jaGV2cm9uLWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMzgifS5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMzkifS5mYS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDc4In0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDU0In0uZmEtY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGYwNzcifS5mYS1jaGlsZDpiZWZvcmV7Y29udGVudDoiXGYxYWUifS5mYS1jaHJvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjY4In0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWNpcmNsZS1ub3RjaDpiZWZvcmV7Y29udGVudDoiXGYxY2UifS5mYS1jbGlwYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzI4In0uZmEtY2xvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDE3In0uZmEtY2xvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjRkIn0uZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMjBhIn0uZmEtY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGMyIn0uZmEtY2xvdWQtZG93bmxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4MSJ9LmZhLWNsb3VkLXVwbG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgyIn0uZmEtY2xvdWRzY2FsZTpiZWZvcmV7Y29udGVudDoiXGYzODMifS5mYS1jbG91ZHNtaXRoOmJlZm9yZXtjb250ZW50OiJcZjM4NCJ9LmZhLWNsb3VkdmVyc2lmeTpiZWZvcmV7Y29udGVudDoiXGYzODUifS5mYS1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjEyMSJ9LmZhLWNvZGUtYnJhbmNoOmJlZm9yZXtjb250ZW50OiJcZjEyNiJ9LmZhLWNvZGVwZW46YmVmb3Jle2NvbnRlbnQ6IlxmMWNiIn0uZmEtY29kaWVwaWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjg0In0uZmEtY29mZmVlOmJlZm9yZXtjb250ZW50OiJcZjBmNCJ9LmZhLWNvZzpiZWZvcmV7Y29udGVudDoiXGYwMTMifS5mYS1jb2dzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWdlYXJzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWNvbHVtbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGRiIn0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1jb21tZW50czpiZWZvcmV7Y29udGVudDoiXGYwODYifS5mYS1jb21wYXNzOmJlZm9yZXtjb250ZW50OiJcZjE0ZSJ9LmZhLWNvbXByZXNzOmJlZm9yZXtjb250ZW50OiJcZjA2NiJ9LmZhLWNvbm5lY3RkZXZlbG9wOmJlZm9yZXtjb250ZW50OiJcZjIwZSJ9LmZhLWNvbnRhbzpiZWZvcmV7Y29udGVudDoiXGYyNmQifS5mYS1jb3B5OmJlZm9yZXtjb250ZW50OiJcZjBjNSJ9LmZhLWNvcHlyaWdodDpiZWZvcmV7Y29udGVudDoiXGYxZjkifS5mYS1jcGFuZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzg4In0uZmEtY3JlYXRpdmUtY29tbW9uczpiZWZvcmV7Y29udGVudDoiXGYyNWUifS5mYS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYwOWQifS5mYS1jcm9wOmJlZm9yZXtjb250ZW50OiJcZjEyNSJ9LmZhLWNyb3NzaGFpcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMDViIn0uZmEtY3NzMzpiZWZvcmV7Y29udGVudDoiXGYxM2MifS5mYS1jc3MzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOGIifS5mYS1jdWJlOmJlZm9yZXtjb250ZW50OiJcZjFiMiJ9LmZhLWN1YmVzOmJlZm9yZXtjb250ZW50OiJcZjFiMyJ9LmZhLWN1dDpiZWZvcmV7Y29udGVudDoiXGYwYzQifS5mYS1jdXR0bGVmaXNoOmJlZm9yZXtjb250ZW50OiJcZjM4YyJ9LmZhLWQtYW5kLWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzhkIn0uZmEtZGFzaGN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0uZmEtZGF0YWJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWMwIn0uZmEtZGVhZjpiZWZvcmV7Y29udGVudDoiXGYyYTQifS5mYS1kZWxpY2lvdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWE1In0uZmEtZGVwbG95ZG9nOmJlZm9yZXtjb250ZW50OiJcZjM4ZSJ9LmZhLWRlc2twcm86YmVmb3Jle2NvbnRlbnQ6IlxmMzhmIn0uZmEtZGVza3RvcDpiZWZvcmV7Y29udGVudDoiXGYxMDgifS5mYS1kZXZpYW50YXJ0OmJlZm9yZXtjb250ZW50OiJcZjFiZCJ9LmZhLWRpZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMWE2In0uZmEtZGlnaXRhbC1vY2VhbjpiZWZvcmV7Y29udGVudDoiXGYzOTEifS5mYS1kaXNjb3JkOmJlZm9yZXtjb250ZW50OiJcZjM5MiJ9LmZhLWRpc2NvdXJzZTpiZWZvcmV7Y29udGVudDoiXGYzOTMifS5mYS1kb2NodWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzk0In0uZmEtZG9ja2VyOmJlZm9yZXtjb250ZW50OiJcZjM5NSJ9LmZhLWRvbGxhci1zaWduOmJlZm9yZSwuZmEtZG9sbGFyOmJlZm9yZSwuZmEtdXNkOmJlZm9yZXtjb250ZW50OiJcZjE1NSJ9LmZhLWRvdC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTkyIn0uZmEtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE5In0uZmEtZHJhZnQyZGlnaXRhbDpiZWZvcmV7Y29udGVudDoiXGYzOTYifS5mYS1kcmliYmJsZTpiZWZvcmV7Y29udGVudDoiXGYxN2QifS5mYS1kcmliYmJsZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzk3In0uZmEtZHJvcGJveDpiZWZvcmV7Y29udGVudDoiXGYxNmIifS5mYS1kcnVwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWE5In0uZmEtZHlhbG9nOmJlZm9yZXtjb250ZW50OiJcZjM5OSJ9LmZhLWVhcmx5YmlyZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMzlhIn0uZmEtZWRnZTpiZWZvcmV7Y29udGVudDoiXGYyODIifS5mYS1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjA0NCJ9LmZhLWVqZWN0OmJlZm9yZXtjb250ZW50OiJcZjA1MiJ9LmZhLWVsZW1lbnRvcjpiZWZvcmV7Y29udGVudDoiXGY0MzAifS5mYS1lbGxpcHNpcy1oOmJlZm9yZXtjb250ZW50OiJcZjE0MSJ9LmZhLWVsbGlwc2lzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMTQyIn0uZmEtZW1iZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIzIn0uZmEtZW1waXJlOmJlZm9yZXtjb250ZW50OiJcZjFkMSJ9LmZhLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OiJcZjBlMCJ9LmZhLWVudmVsb3BlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMmI2In0uZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE5OSJ9LmZhLWVudmlyYTpiZWZvcmV7Y29udGVudDoiXGYyOTkifS5mYS1lcmFzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTJkIn0uZmEtZXJsYW5nOmJlZm9yZXtjb250ZW50OiJcZjM5ZCJ9LmZhLWV0aGVyZXVtOmJlZm9yZXtjb250ZW50OiJcZjQyZSJ9LmZhLWV0c3k6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ3In0uZmEtZXVyby1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1MyJ9LmZhLWV4Y2hhbmdlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjIifS5mYS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMmEifS5mYS1leGNsYW1hdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZhIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZXhwYW5kOmJlZm9yZXtjb250ZW50OiJcZjA2NSJ9LmZhLWV4cGFuZC1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMxZSJ9LmZhLWV4cGVkaXRlZHNzbDpiZWZvcmV7Y29udGVudDoiXGYyM2UifS5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNWQifS5mYS1leHRlcm5hbC1saW5rLXNxdWFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYwIn0uZmEtZXllOmJlZm9yZXtjb250ZW50OiJcZjA2ZSJ9LmZhLWV5ZS1kcm9wcGVyOmJlZm9yZXtjb250ZW50OiJcZjFmYiJ9LmZhLWV5ZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYwNzAifS5mYS1mYWNlYm9vazpiZWZvcmV7Y29udGVudDoiXGYwOWEifS5mYS1mYWNlYm9vay1mOmJlZm9yZXtjb250ZW50OiJcZjM5ZSJ9LmZhLWZhY2Vib29rLW1lc3NlbmdlcjpiZWZvcmV7Y29udGVudDoiXGYzOWYifS5mYS1mYWNlYm9vay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgyIn0uZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNDkifS5mYS1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUwIn0uZmEtZmF4OmJlZm9yZXtjb250ZW50OiJcZjFhYyJ9LmZhLWZlbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxODIifS5mYS1maWdodGVyLWpldDpiZWZvcmV7Y29udGVudDoiXGYwZmIifS5mYS1maWxlOmJlZm9yZSwuZmEtZmlsZS1vOmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9LmZhLWZpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLWZpbGUtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxYzYifS5mYS1maWxlLWF1ZGlvOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS1maWxlLWV4Y2VsOmJlZm9yZXtjb250ZW50OiJcZjFjMyJ9LmZhLWZpbGUtaW1hZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWM1In0uZmEtZmlsZS1wZGY6YmVmb3Jle2NvbnRlbnQ6IlxmMWMxIn0uZmEtZmlsZS1wb3dlcnBvaW50OmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9LmZhLWZpbGUtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM4In0uZmEtZmlsZS13b3JkOmJlZm9yZXtjb250ZW50OiJcZjFjMiJ9LmZhLWZpbG06YmVmb3Jle2NvbnRlbnQ6IlxmMDA4In0uZmEtZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjBiMCJ9LmZhLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZkIn0uZmEtZmlyZS1leHRpbmd1aXNoZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTM0In0uZmEtZmlyZWZveDpiZWZvcmV7Y29udGVudDoiXGYyNjkifS5mYS1maXJzdC1vcmRlcjpiZWZvcmV7Y29udGVudDoiXGYyYjAifS5mYS1maXJzdGRyYWZ0OmJlZm9yZXtjb250ZW50OiJcZjNhMSJ9LmZhLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDI0In0uZmEtZmxhZy1jaGVja2VyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0uZmEtZmxhc2s6YmVmb3Jle2NvbnRlbnQ6IlxmMGMzIn0uZmEtZmxpY2tyOmJlZm9yZXtjb250ZW50OiJcZjE2ZSJ9LmZhLWZsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGY0NGQifS5mYS1mbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE3In0uZmEtZm9sZGVyOmJlZm9yZXtjb250ZW50OiJcZjA3YiJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWZvbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMxIn0uZmEtZm9udC1hd2Vzb21lOmJlZm9yZXtjb250ZW50OiJcZjJiNCJ9LmZhLWZvbnQtYXdlc29tZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVjIn0uZmEtZm9udC1hd2Vzb21lLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmNDI1In0uZmEtZm9udGljb25zOmJlZm9yZXtjb250ZW50OiJcZjI4MCJ9LmZhLWZvbnRpY29ucy1maTpiZWZvcmV7Y29udGVudDoiXGYzYTIifS5mYS1mb290YmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ0ZSJ9LmZhLWZvcnQtYXdlc29tZTpiZWZvcmV7Y29udGVudDoiXGYyODYifS5mYS1mb3J0LWF3ZXNvbWUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNhMyJ9LmZhLWZvcnVtYmVlOmJlZm9yZXtjb250ZW50OiJcZjIxMSJ9LmZhLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRlIn0uZmEtZm91cnNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxODAifS5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyYzUifS5mYS1mcmVlYnNkOmJlZm9yZXtjb250ZW50OiJcZjNhNCJ9LmZhLWZyb3duOmJlZm9yZXtjb250ZW50OiJcZjExOSJ9LmZhLWZ1dGJvbDpiZWZvcmV7Y29udGVudDoiXGYxZTMifS5mYS1nYW1lcGFkOmJlZm9yZXtjb250ZW50OiJcZjExYiJ9LmZhLWdhdmVsOmJlZm9yZXtjb250ZW50OiJcZjBlMyJ9LmZhLWdlbTpiZWZvcmV7Y29udGVudDoiXGYzYTUifS5mYS1nZW5kZXJsZXNzOmJlZm9yZXtjb250ZW50OiJcZjIyZCJ9LmZhLWdldC1wb2NrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjY1In0uZmEtZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMjYwIn0uZmEtZ2ctY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI2MSJ9LmZhLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDZiIn0uZmEtZ2l0OmJlZm9yZXtjb250ZW50OiJcZjFkMyJ9LmZhLWdpdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQyIn0uZmEtZ2l0aHViOmJlZm9yZXtjb250ZW50OiJcZjA5YiJ9LmZhLWdpdGh1Yi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTEzIn0uZmEtZ2l0aHViLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTIifS5mYS1naXRrcmFrZW46YmVmb3Jle2NvbnRlbnQ6IlxmM2E2In0uZmEtZ2l0bGFiOmJlZm9yZXtjb250ZW50OiJcZjI5NiJ9LmZhLWdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGY0MjYifS5mYS1nbGFzcy1tYXJ0aW5pOmJlZm9yZXtjb250ZW50OiJcZjAwMCJ9LmZhLWdsaWRlOmJlZm9yZXtjb250ZW50OiJcZjJhNSJ9LmZhLWdsaWRlLWc6YmVmb3Jle2NvbnRlbnQ6IlxmMmE2In0uZmEtZ2xvYmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGFjIn0uZmEtZ29mb3JlOmJlZm9yZXtjb250ZW50OiJcZjNhNyJ9LmZhLWdvbGYtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NTAifS5mYS1nb29kcmVhZHM6YmVmb3Jle2NvbnRlbnQ6IlxmM2E4In0uZmEtZ29vZHJlYWRzLWc6YmVmb3Jle2NvbnRlbnQ6IlxmM2E5In0uZmEtZ29vZ2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMCJ9LmZhLWdvb2dsZS1kcml2ZTpiZWZvcmV7Y29udGVudDoiXGYzYWEifS5mYS1nb29nbGUtcGxheTpiZWZvcmV7Y29udGVudDoiXGYzYWIifS5mYS1nb29nbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyYjMifS5mYS1nb29nbGUtcGx1cy1nOmJlZm9yZXtjb250ZW50OiJcZjBkNSJ9LmZhLWdvb2dsZS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZDQifS5mYS1nb29nbGUtd2FsbGV0OmJlZm9yZXtjb250ZW50OiJcZjFlZSJ9LmZhLWdyYWR1YXRpb24tY2FwOmJlZm9yZXtjb250ZW50OiJcZjE5ZCJ9LmZhLWdyYXRpcGF5OmJlZm9yZXtjb250ZW50OiJcZjE4NCJ9LmZhLWdyYXY6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ2In0uZmEtZ3JpcGZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FjIn0uZmEtZ3J1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2FkIn0uZmEtZ3VscDpiZWZvcmV7Y29udGVudDoiXGYzYWUifS5mYS1oLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZmQifS5mYS1oYWNrZXItbmV3czpiZWZvcmV7Y29udGVudDoiXGYxZDQifS5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FmIn0uZmEtaGFuZC1saXphcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjU4In0uZmEtaGFuZC1wYXBlcjpiZWZvcmV7Y29udGVudDoiXGYyNTYifS5mYS1oYW5kLXBlYWNlOmJlZm9yZXtjb250ZW50OiJcZjI1YiJ9LmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYTcifS5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZC1wb2ludC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTQifS5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjBhNiJ9LmZhLWhhbmQtcG9pbnRlcjpiZWZvcmUsLmZhLWhhbmQtcG9pbnRlci1vOmJlZm9yZXtjb250ZW50OiJcZjI1YSJ9LmZhLWhhbmQtcm9jazpiZWZvcmV7Y29udGVudDoiXGYyNTUifS5mYS1oYW5kLXNjaXNzb3JzOmJlZm9yZXtjb250ZW50OiJcZjI1NyJ9LmZhLWhhbmQtc3BvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjU5In0uZmEtaGFuZHNoYWtlOmJlZm9yZXtjb250ZW50OiJcZjJiNSJ9LmZhLWhhc2h0YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMjkyIn0uZmEtaGRkOmJlZm9yZXtjb250ZW50OiJcZjBhMCJ9LmZhLWhlYWRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWRjIn0uZmEtaGVhZHBob25lczpiZWZvcmV7Y29udGVudDoiXGYwMjUifS5mYS1oZWFydDpiZWZvcmV7Y29udGVudDoiXGYwMDQifS5mYS1oZWFydGJlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFlIn0uZmEtaGlwczpiZWZvcmV7Y29udGVudDoiXGY0NTIifS5mYS1oaXJlLWEtaGVscGVyOmJlZm9yZXtjb250ZW50OiJcZjNiMCJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtaG9ja2V5LXB1Y2s6YmVmb3Jle2NvbnRlbnQ6IlxmNDUzIn0uZmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1ob29saTpiZWZvcmV7Y29udGVudDoiXGY0MjcifS5mYS1ob3NwaXRhbDpiZWZvcmV7Y29udGVudDoiXGYwZjgifS5mYS1ob3RqYXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2IxIn0uZmEtaG91cmdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjI1NCJ9LmZhLWhvdXJnbGFzcy1lbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUzIn0uZmEtaG91cmdsYXNzLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjUyIn0uZmEtaG91cmdsYXNzLXN0YXJ0OmJlZm9yZXtjb250ZW50OiJcZjI1MSJ9LmZhLWhvdXp6OmJlZm9yZXtjb250ZW50OiJcZjI3YyJ9LmZhLWh0bWw1OmJlZm9yZXtjb250ZW50OiJcZjEzYiJ9LmZhLWh1YnNwb3Q6YmVmb3Jle2NvbnRlbnQ6IlxmM2IyIn0uZmEtaS1jdXJzb3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ2In0uZmEtaWQtYmFkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmMxIn0uZmEtaWQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYzIifS5mYS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYwM2UifS5mYS1pbWFnZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzAyIn0uZmEtaW1kYjpiZWZvcmV7Y29udGVudDoiXGYyZDgifS5mYS1pbmJveDpiZWZvcmV7Y29udGVudDoiXGYwMWMifS5mYS1pbmRlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDNjIn0uZmEtaW5kdXN0cnk6YmVmb3Jle2NvbnRlbnQ6IlxmMjc1In0uZmEtaW5mbzpiZWZvcmV7Y29udGVudDoiXGYxMjkifS5mYS1pbmZvLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNWEifS5mYS1pbnN0YWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmMTZkIn0uZmEtaW50ZXJuZXQtZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjZiIn0uZmEtaW94aG9zdDpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5mYS1pdGFsaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDMzIn0uZmEtaXR1bmVzOmJlZm9yZXtjb250ZW50OiJcZjNiNCJ9LmZhLWl0dW5lcy1ub3RlOmJlZm9yZXtjb250ZW50OiJcZjNiNSJ9LmZhLWplbmtpbnM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I2In0uZmEtam9nZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2I3In0uZmEtam9vbWxhOmJlZm9yZXtjb250ZW50OiJcZjFhYSJ9LmZhLWpzOmJlZm9yZXtjb250ZW50OiJcZjNiOCJ9LmZhLWpzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzYjkifS5mYS1qc2ZpZGRsZTpiZWZvcmV7Y29udGVudDoiXGYxY2MifS5mYS1rZXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDg0In0uZmEta2V5Ym9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFjIn0uZmEta2V5Y2RuOmJlZm9yZXtjb250ZW50OiJcZjNiYSJ9LmZhLWtpY2tzdGFydGVyOmJlZm9yZXtjb250ZW50OiJcZjNiYiJ9LmZhLWtpY2tzdGFydGVyLWs6YmVmb3Jle2NvbnRlbnQ6IlxmM2JjIn0uZmEta29ydnVlOmJlZm9yZXtjb250ZW50OiJcZjQyZiJ9LmZhLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjFhYiJ9LmZhLWxhcHRvcDpiZWZvcmV7Y29udGVudDoiXGYxMDkifS5mYS1sYXJhdmVsOmJlZm9yZXtjb250ZW50OiJcZjNiZCJ9LmZhLWxhc3RmbTpiZWZvcmV7Y29udGVudDoiXGYyMDIifS5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjIwMyJ9LmZhLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxmMDZjIn0uZmEtbGVhbnB1YjpiZWZvcmV7Y29udGVudDoiXGYyMTIifS5mYS1sZW1vbjpiZWZvcmV7Y29udGVudDoiXGYwOTQifS5mYS1sZXNzOmJlZm9yZXtjb250ZW50OiJcZjQxZCJ9LmZhLWxldmVsLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZSJ9LmZhLWxldmVsLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYmYifS5mYS1saWZlLXJpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWNkIn0uZmEtbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjBlYiJ9LmZhLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2MwIn0uZmEtbGluazpiZWZvcmV7Y29udGVudDoiXGYwYzEifS5mYS1saW5rZWRpbjpiZWZvcmV7Y29udGVudDoiXGYwOGMifS5mYS1saW5rZWRpbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwZTEifS5mYS1saW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI4In0uZmEtbGludXg6YmVmb3Jle2NvbnRlbnQ6IlxmMTdjIn0uZmEtbGlyYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9LmZhLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDNhIn0uZmEtbGlzdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDIyIn0uZmEtbGlzdC1vbDpiZWZvcmV7Y29udGVudDoiXGYwY2IifS5mYS1saXN0LXVsOmJlZm9yZXtjb250ZW50OiJcZjBjYSJ9LmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZXtjb250ZW50OiJcZjEyNCJ9LmZhLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDIzIn0uZmEtbG9jay1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjNjMSJ9LmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtbG9uZy1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMGEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzMGMifS5mYS1sb3ctdmlzaW9uOmJlZm9yZXtjb250ZW50OiJcZjJhOCJ9LmZhLWx5ZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2MzIn0uZmEtbWFnZW50bzpiZWZvcmV7Y29udGVudDoiXGYzYzQifS5mYS1tYWdpYzpiZWZvcmV7Y29udGVudDoiXGYwZDAifS5mYS1tYWduZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc2In0uZmEtbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxODMifS5mYS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjc5In0uZmEtbWFwLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYwNDEifS5mYS1tYXAtbWFya2VyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYzUifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLW1hcC1zaWduczpiZWZvcmV7Y29udGVudDoiXGYyNzcifS5mYS1tYXJzOmJlZm9yZXtjb250ZW50OiJcZjIyMiJ9LmZhLW1hcnMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNyJ9LmZhLW1hcnMtc3Ryb2tlOmJlZm9yZXtjb250ZW50OiJcZjIyOSJ9LmZhLW1hcnMtc3Ryb2tlLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMjJiIn0uZmEtbWFycy1zdHJva2UtdjpiZWZvcmV7Y29udGVudDoiXGYyMmEifS5mYS1tYXhjZG46YmVmb3Jle2NvbnRlbnQ6IlxmMTM2In0uZmEtbWVkYXBwczpiZWZvcmV7Y29udGVudDoiXGYzYzYifS5mYS1tZWRpdW06YmVmb3Jle2NvbnRlbnQ6IlxmMjNhIn0uZmEtbWVkaXVtLW06YmVmb3Jle2NvbnRlbnQ6IlxmM2M3In0uZmEtbWVka2l0OmJlZm9yZXtjb250ZW50OiJcZjBmYSJ9LmZhLW1lZHJ0OmJlZm9yZXtjb250ZW50OiJcZjNjOCJ9LmZhLW1lZXR1cDpiZWZvcmV7Y29udGVudDoiXGYyZTAifS5mYS1tZWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFhIn0uZmEtbWVyY3VyeTpiZWZvcmV7Y29udGVudDoiXGYyMjMifS5mYS1taWNyb2NoaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmRiIn0uZmEtbWljcm9waG9uZTpiZWZvcmV7Y29udGVudDoiXGYxMzAifS5mYS1taWNyb3Bob25lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjEzMSJ9LmZhLW1pY3Jvc29mdDpiZWZvcmV7Y29udGVudDoiXGYzY2EifS5mYS1taW51czpiZWZvcmV7Y29udGVudDoiXGYwNjgifS5mYS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU2In0uZmEtbWludXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0NiJ9LmZhLW1peDpiZWZvcmV7Y29udGVudDoiXGYzY2IifS5mYS1taXhjbG91ZDpiZWZvcmV7Y29udGVudDoiXGYyODkifS5mYS1taXp1bmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2NjIn0uZmEtbW9iaWxlOmJlZm9yZXtjb250ZW50OiJcZjEwYiJ9LmZhLW1vYmlsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NkIn0uZmEtbW9keDpiZWZvcmV7Y29udGVudDoiXGYyODUifS5mYS1tb25lcm86YmVmb3Jle2NvbnRlbnQ6IlxmM2QwIn0uZmEtbW9uZXktYmlsbC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2QxIn0uZmEtbW9vbjpiZWZvcmV7Y29udGVudDoiXGYxODYifS5mYS1tb3RvcmN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjIxYyJ9LmZhLW1vdXNlLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ1In0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtbmFwc3RlcjpiZWZvcmV7Y29udGVudDoiXGYzZDIifS5mYS1uZXV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjJjIn0uZmEtbmV3c3BhcGVyOmJlZm9yZSwuZmEtbmV3c3BhcGVyLW86YmVmb3Jle2NvbnRlbnQ6IlxmMWVhIn0uZmEtbmludGVuZG8tc3dpdGNoOmJlZm9yZXtjb250ZW50OiJcZjQxOCJ9LmZhLW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDE5In0uZmEtbm9kZS1qczpiZWZvcmV7Y29udGVudDoiXGYzZDMifS5mYS1ucG06YmVmb3Jle2NvbnRlbnQ6IlxmM2Q0In0uZmEtbnM4OmJlZm9yZXtjb250ZW50OiJcZjNkNSJ9LmZhLW51dHJpdGlvbml4OmJlZm9yZXtjb250ZW50OiJcZjNkNiJ9LmZhLW9iamVjdC1ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDcifS5mYS1vYmplY3QtdW5ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDgifS5mYS1vZG5va2xhc3NuaWtpOmJlZm9yZXtjb250ZW50OiJcZjI2MyJ9LmZhLW9kbm9rbGFzc25pa2ktc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjI2NCJ9LmZhLW9wZW5jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjIzZCJ9LmZhLW9wZW5pZDpiZWZvcmV7Y29udGVudDoiXGYxOWIifS5mYS1vcGVyYTpiZWZvcmV7Y29udGVudDoiXGYyNmEifS5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZXtjb250ZW50OiJcZjIzYyJ9LmZhLW9zaTpiZWZvcmV7Y29udGVudDoiXGY0MWEifS5mYS1vdXRkZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYiJ9LmZhLXBhZ2U0OmJlZm9yZXtjb250ZW50OiJcZjNkNyJ9LmZhLXBhZ2VsaW5lczpiZWZvcmV7Y29udGVudDoiXGYxOGMifS5mYS1wYWludC1icnVzaDpiZWZvcmV7Y29udGVudDoiXGYxZmMifS5mYS1wYWxmZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q4In0uZmEtcGFwZXItcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ4In0uZmEtcGFwZXJjbGlwOmJlZm9yZXtjb250ZW50OiJcZjBjNiJ9LmZhLXBhcmFncmFwaDpiZWZvcmV7Y29udGVudDoiXGYxZGQifS5mYS1wYXN0ZTpiZWZvcmV7Y29udGVudDoiXGYwZWEifS5mYS1wYXRyZW9uOmJlZm9yZXtjb250ZW50OiJcZjNkOSJ9LmZhLXBhdXNlOmJlZm9yZXtjb250ZW50OiJcZjA0YyJ9LmZhLXBhdXNlLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGIifS5mYS1wYXc6YmVmb3Jle2NvbnRlbnQ6IlxmMWIwIn0uZmEtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9LmZhLXBlbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRiIn0uZmEtcGVuY2lsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMDMifS5mYS1wZXJjZW50OmJlZm9yZXtjb250ZW50OiJcZjI5NSJ9LmZhLXBlcmlzY29wZTpiZWZvcmV7Y29udGVudDoiXGYzZGEifS5mYS1waGFicmljYXRvcjpiZWZvcmV7Y29udGVudDoiXGYzZGIifS5mYS1waG9lbml4LWZyYW1ld29yazpiZWZvcmV7Y29udGVudDoiXGYzZGMifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1waG9uZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDk4In0uZmEtcGhvbmUtdm9sdW1lOmJlZm9yZXtjb250ZW50OiJcZjJhMCJ9LmZhLXBocDpiZWZvcmV7Y29udGVudDoiXGY0NTcifS5mYS1waWVkLXBpcGVyOmJlZm9yZXtjb250ZW50OiJcZjJhZSJ9LmZhLXBpZWQtcGlwZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjFhOCJ9LmZhLXBpZWQtcGlwZXItcHA6YmVmb3Jle2NvbnRlbnQ6IlxmMWE3In0uZmEtcGludGVyZXN0OmJlZm9yZXtjb250ZW50OiJcZjBkMiJ9LmZhLXBpbnRlcmVzdC1wOmJlZm9yZXtjb250ZW50OiJcZjIzMSJ9LmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGQzIn0uZmEtcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcyIn0uZmEtcGxheTpiZWZvcmV7Y29udGVudDoiXGYwNGIifS5mYS1wbGF5LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxNDQifS5mYS1wbGF5c3RhdGlvbjpiZWZvcmV7Y29udGVudDoiXGYzZGYifS5mYS1wbHVnOmJlZm9yZXtjb250ZW50OiJcZjFlNiJ9LmZhLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY3In0uZmEtcGx1cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU1In0uZmEtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGZlIn0uZmEtcG9kY2FzdDpiZWZvcmV7Y29udGVudDoiXGYyY2UifS5mYS1wb3VuZC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1NCJ9LmZhLXBvd2VyLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMTEifS5mYS1wcmludDpiZWZvcmV7Y29udGVudDoiXGYwMmYifS5mYS1wcm9kdWN0LWh1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg4In0uZmEtcHVzaGVkOmJlZm9yZXtjb250ZW50OiJcZjNlMSJ9LmZhLXB1enpsZS1waWVjZTpiZWZvcmV7Y29udGVudDoiXGYxMmUifS5mYS1weXRob246YmVmb3Jle2NvbnRlbnQ6IlxmM2UyIn0uZmEtcXE6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ2In0uZmEtcXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyOSJ9LmZhLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyOCJ9LmZhLXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTkifS5mYS1xdWlkZGl0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNDU4In0uZmEtcXVpbnNjYXBlOmJlZm9yZXtjb250ZW50OiJcZjQ1OSJ9LmZhLXF1b3JhOmJlZm9yZXtjb250ZW50OiJcZjJjNCJ9LmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtcXVvdGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBlIn0uZmEtcmFuZG9tOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXJhdmVscnk6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ5In0uZmEtcmVhY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNDFiIn0uZmEtcmViZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWQwIn0uZmEtcmVjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYxYjgifS5mYS1yZWQtcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2UzIn0uZmEtcmVkZGl0OmJlZm9yZXtjb250ZW50OiJcZjFhMSJ9LmZhLXJlZGRpdC1hbGllbjpiZWZvcmV7Y29udGVudDoiXGYyODEifS5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFhMiJ9LmZhLXJlZG86YmVmb3Jle2NvbnRlbnQ6IlxmMDFlIn0uZmEtcmVkby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY5In0uZmEtcmVnaXN0ZXJlZDpiZWZvcmV7Y29udGVudDoiXGYyNWQifS5mYS1yZW5kYWN0OmJlZm9yZXtjb250ZW50OiJcZjNlNCJ9LmZhLXJlbnJlbjpiZWZvcmV7Y29udGVudDoiXGYxOGIifS5mYS1yZXBseTpiZWZvcmV7Y29udGVudDoiXGYzZTUifS5mYS1yZXBseS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0uZmEtcmVwbHlkOmJlZm9yZXtjb250ZW50OiJcZjNlNiJ9LmZhLXJlc29sdmluZzpiZWZvcmV7Y29udGVudDoiXGYzZTcifS5mYS1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZjA3OSJ9LmZhLXJvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE4In0uZmEtcm9ja2V0OmJlZm9yZXtjb250ZW50OiJcZjEzNSJ9LmZhLXJvY2tldGNoYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2U4In0uZmEtcm9ja3JtczpiZWZvcmV7Y29udGVudDoiXGYzZTkifS5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDMifS5mYS1ydWJsZS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1OCJ9LmZhLXJ1cGVlLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU2In0uZmEtc2FmYXJpOmJlZm9yZXtjb250ZW50OiJcZjI2NyJ9LmZhLXNhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDFlIn0uZmEtc2F2ZTpiZWZvcmV7Y29udGVudDoiXGYwYzcifS5mYS1zY2hsaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2VhIn0uZmEtc2NyaWJkOmJlZm9yZXtjb250ZW50OiJcZjI4YSJ9LmZhLXNlYXJjaDpiZWZvcmV7Y29udGVudDoiXGYwMDIifS5mYS1zZWFyY2gtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDEwIn0uZmEtc2VhcmNoLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBlIn0uZmEtc2VhcmNoZW5naW46YmVmb3Jle2NvbnRlbnQ6IlxmM2ViIn0uZmEtc2VsbGNhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmRhIn0uZmEtc2VsbHN5OmJlZm9yZXtjb250ZW50OiJcZjIxMyJ9LmZhLXNlcnZlcjpiZWZvcmV7Y29udGVudDoiXGYyMzMifS5mYS1zZXJ2aWNlc3RhY2s6YmVmb3Jle2NvbnRlbnQ6IlxmM2VjIn0uZmEtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDY0In0uZmEtc2hhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjFlMCJ9LmZhLXNoYXJlLWFsdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWUxIn0uZmEtc2hhcmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0ZCJ9LmZhLXNoZWtlbC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjIwYiJ9LmZhLXNoaWVsZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2VkIn0uZmEtc2hpcDpiZWZvcmV7Y29udGVudDoiXGYyMWEifS5mYS1zaGlydHNpbmJ1bGs6YmVmb3Jle2NvbnRlbnQ6IlxmMjE0In0uZmEtc2hvcHBpbmctYmFnOmJlZm9yZXtjb250ZW50OiJcZjI5MCJ9LmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmV7Y29udGVudDoiXGYyOTEifS5mYS1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjA3YSJ9LmZhLXNob3dlcjpiZWZvcmV7Y29udGVudDoiXGYyY2MifS5mYS1zaWduLWluLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjYifS5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjJhNyJ9LmZhLXNpZ24tb3V0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjUifS5mYS1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDEyIn0uZmEtc2ltcGx5YnVpbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjE1In0uZmEtc2lzdHJpeDpiZWZvcmV7Y29udGVudDoiXGYzZWUifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLXNreWF0bGFzOmJlZm9yZXtjb250ZW50OiJcZjIxNiJ9LmZhLXNreXBlOmJlZm9yZXtjb250ZW50OiJcZjE3ZSJ9LmZhLXNsYWNrOmJlZm9yZXtjb250ZW50OiJcZjE5OCJ9LmZhLXNsYWNrLWhhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmM2VmIn0uZmEtc2xpZGVycy1oOmJlZm9yZXtjb250ZW50OiJcZjFkZSJ9LmZhLXNsaWRlc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWU3In0uZmEtc21pbGU6YmVmb3JlLC5mYS1zbWlsZS1vOmJlZm9yZXtjb250ZW50OiJcZjExOCJ9LmZhLXNuYXBjaGF0OmJlZm9yZXtjb250ZW50OiJcZjJhYiJ9LmZhLXNuYXBjaGF0LWdob3N0OmJlZm9yZXtjb250ZW50OiJcZjJhYyJ9LmZhLXNuYXBjaGF0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWQifS5mYS1zbm93Zmxha2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmRjIn0uZmEtc29ydDpiZWZvcmV7Y29udGVudDoiXGYwZGMifS5mYS1zb3J0LWFscGhhLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0uZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1zb3J0LWFtb3VudC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9LmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjIifS5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYzIn0uZmEtc29ydC11cDpiZWZvcmV7Y29udGVudDoiXGYwZGUifS5mYS1zb3VuZGNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjFiZSJ9LmZhLXNwYWNlLXNodXR0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk3In0uZmEtc3BlYWthcDpiZWZvcmV7Y29udGVudDoiXGYzZjMifS5mYS1zcGlubmVyOmJlZm9yZXtjb250ZW50OiJcZjExMCJ9LmZhLXNwb3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWJjIn0uZmEtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBjOCJ9LmZhLXNxdWFyZS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjQ1YyJ9LmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjE4ZCJ9LmZhLXN0YWNrLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiJcZjE2YyJ9LmZhLXN0YXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA1In0uZmEtc3Rhci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjA4OSJ9LmZhLXN0YXlsaW5rZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y1In0uZmEtc3RlYW06YmVmb3Jle2NvbnRlbnQ6IlxmMWI2In0uZmEtc3RlYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFiNyJ9LmZhLXN0ZWFtLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGYzZjYifS5mYS1zdGVwLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0OCJ9LmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNTEifS5mYS1zdGV0aG9zY29wZTpiZWZvcmV7Y29udGVudDoiXGYwZjEifS5mYS1zdGlja2VyLW11bGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y3In0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RvcDpiZWZvcmV7Y29udGVudDoiXGYwNGQifS5mYS1zdG9wLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGQifS5mYS1zdG9wd2F0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMmYyIn0uZmEtc3RyYXZhOmJlZm9yZXtjb250ZW50OiJcZjQyOCJ9LmZhLXN0cmVldC12aWV3OmJlZm9yZXtjb250ZW50OiJcZjIxZCJ9LmZhLXN0cmlrZXRocm91Z2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGNjIn0uZmEtc3RyaXBlOmJlZm9yZXtjb250ZW50OiJcZjQyOSJ9LmZhLXN0cmlwZS1zOmJlZm9yZXtjb250ZW50OiJcZjQyYSJ9LmZhLXN0dWRpb3ZpbmFyaTpiZWZvcmV7Y29udGVudDoiXGYzZjgifS5mYS1zdHVtYmxldXBvbjpiZWZvcmV7Y29udGVudDoiXGYxYTQifS5mYS1zdHVtYmxldXBvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEzIn0uZmEtc3Vic2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZjEyYyJ9LmZhLXN1YndheTpiZWZvcmV7Y29udGVudDoiXGYyMzkifS5mYS1zdWl0Y2FzZTpiZWZvcmV7Y29udGVudDoiXGYwZjIifS5mYS1zdW46YmVmb3JlLC5mYS1zdW4tbzpiZWZvcmV7Y29udGVudDoiXGYxODUifS5mYS1zdXBlcnBvd2VyczpiZWZvcmV7Y29udGVudDoiXGYyZGQifS5mYS1zdXBlcnNjcmlwdDpiZWZvcmV7Y29udGVudDoiXGYxMmIifS5mYS1zdXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y5In0uZmEtc3luYzpiZWZvcmV7Y29udGVudDoiXGYwMjEifS5mYS1zeW5jLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjEifS5mYS10YWJsZTpiZWZvcmV7Y29udGVudDoiXGYwY2UifS5mYS10YWJsZS10ZW5uaXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDVkIn0uZmEtdGFibGV0OmJlZm9yZXtjb250ZW50OiJcZjEwYSJ9LmZhLXRhYmxldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZhIn0uZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZkIn0uZmEtdGFnOmJlZm9yZXtjb250ZW50OiJcZjAyYiJ9LmZhLXRhZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDJjIn0uZmEtdGFza3M6YmVmb3Jle2NvbnRlbnQ6IlxmMGFlIn0uZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZWxlZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYyYzYifS5mYS10ZWxlZ3JhbS1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYzZmUifS5mYS10ZW5jZW50LXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjFkNSJ9LmZhLXRlcm1pbmFsOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9LmZhLXRleHQtaGVpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzNCJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDBhIn0uZmEtdGgtbGFyZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDA5In0uZmEtdGgtbGlzdDpiZWZvcmV7Y29udGVudDoiXGYwMGIifS5mYS10aGVtZWlzbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmIyIn0uZmEtdGhlcm1vbWV0ZXItZW1wdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMmNiIn0uZmEtdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmV7Y29udGVudDoiXGYyYzcifS5mYS10aGVybW9tZXRlci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjJjOSJ9LmZhLXRoZXJtb21ldGVyLXF1YXJ0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmNhIn0uZmEtdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMmM4In0uZmEtdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTY1In0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRodW1idGFjazpiZWZvcmV7Y29udGVudDoiXGYwOGQifS5mYS10aWNrZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmZiJ9LmZhLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjAwZCJ9LmZhLXRpbWVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTcifS5mYS10aW50OmJlZm9yZXtjb250ZW50OiJcZjA0MyJ9LmZhLXRvZ2dsZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMjA0In0uZmEtdG9nZ2xlLW9uOmJlZm9yZXtjb250ZW50OiJcZjIwNSJ9LmZhLXRyYWRlbWFyazpiZWZvcmV7Y29udGVudDoiXGYyNWMifS5mYS10cmFpbjpiZWZvcmV7Y29udGVudDoiXGYyMzgifS5mYS10cmFuc2dlbmRlcjpiZWZvcmV7Y29udGVudDoiXGYyMjQifS5mYS10cmFuc2dlbmRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjI1In0uZmEtdHJhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY4In0uZmEtdHJhc2gtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlZCJ9LmZhLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMWJiIn0uZmEtdHJlbGxvOmJlZm9yZXtjb250ZW50OiJcZjE4MSJ9LmZhLXRyaXBhZHZpc29yOmJlZm9yZXtjb250ZW50OiJcZjI2MiJ9LmZhLXRyb3BoeTpiZWZvcmV7Y29udGVudDoiXGYwOTEifS5mYS10cnVjazpiZWZvcmV7Y29udGVudDoiXGYwZDEifS5mYS10dHk6YmVmb3Jle2NvbnRlbnQ6IlxmMWU0In0uZmEtdHVtYmxyOmJlZm9yZXtjb250ZW50OiJcZjE3MyJ9LmZhLXR1bWJsci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc0In0uZmEtdHY6YmVmb3Jle2NvbnRlbnQ6IlxmMjZjIn0uZmEtdHdpdGNoOmJlZm9yZXtjb250ZW50OiJcZjFlOCJ9LmZhLXR3aXR0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDk5In0uZmEtdHdpdHRlci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgxIn0uZmEtdHlwbzM6YmVmb3Jle2NvbnRlbnQ6IlxmNDJiIn0uZmEtdWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MDIifS5mYS11aWtpdDpiZWZvcmV7Y29udGVudDoiXGY0MDMifS5mYS11bWJyZWxsYTpiZWZvcmV7Y29udGVudDoiXGYwZTkifS5mYS11bmRlcmxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGNkIn0uZmEtdW5kbzpiZWZvcmV7Y29udGVudDoiXGYwZTIifS5mYS11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWEifS5mYS11bmlyZWdpc3RyeTpiZWZvcmV7Y29udGVudDoiXGY0MDQifS5mYS11bml2ZXJzYWwtYWNjZXNzOmJlZm9yZXtjb250ZW50OiJcZjI5YSJ9LmZhLXVuaXZlcnNpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMTljIn0uZmEtdW5saW5rOmJlZm9yZXtjb250ZW50OiJcZjEyNyJ9LmZhLXVubG9jazpiZWZvcmV7Y29udGVudDoiXGYwOWMifS5mYS11bmxvY2stYWx0OmJlZm9yZXtjb250ZW50OiJcZjEzZSJ9LmZhLXVudGFwcGQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDA1In0uZmEtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjA5MyJ9LmZhLXVzYjpiZWZvcmV7Y29udGVudDoiXGYyODcifS5mYS11c2VyOmJlZm9yZXtjb250ZW50OiJcZjAwNyJ9LmZhLXVzZXItY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjJiZCJ9LmZhLXVzZXItbWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGYwIn0uZmEtdXNlci1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIzNCJ9LmZhLXVzZXItc2VjcmV0OmJlZm9yZXtjb250ZW50OiJcZjIxYiJ9LmZhLXVzZXItdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjM1In0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdXNzdW5uYWg6YmVmb3Jle2NvbnRlbnQ6IlxmNDA3In0uZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmV7Y29udGVudDoiXGYyZTUifS5mYS11dGVuc2lsczpiZWZvcmV7Y29udGVudDoiXGYyZTcifS5mYS12YWFkaW46YmVmb3Jle2NvbnRlbnQ6IlxmNDA4In0uZmEtdmVudXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjIxIn0uZmEtdmVudXMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNiJ9LmZhLXZlbnVzLW1hcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjI4In0uZmEtdmlhY29pbjpiZWZvcmV7Y29udGVudDoiXGYyMzcifS5mYS12aWFkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMmE5In0uZmEtdmlhZGVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWEifS5mYS12aWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MDkifS5mYS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYwM2QifS5mYS12aW1lbzpiZWZvcmV7Y29udGVudDoiXGY0MGEifS5mYS12aW1lby1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk0In0uZmEtdmltZW8tdjpiZWZvcmV7Y29udGVudDoiXGYyN2QifS5mYS12aW5lOmJlZm9yZXtjb250ZW50OiJcZjFjYSJ9LmZhLXZrOmJlZm9yZXtjb250ZW50OiJcZjE4OSJ9LmZhLXZudjpiZWZvcmV7Y29udGVudDoiXGY0MGIifS5mYS12b2xsZXliYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDVmIn0uZmEtdm9sdW1lLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDI3In0uZmEtdm9sdW1lLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMjYifS5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtdnVlanM6YmVmb3Jle2NvbnRlbnQ6IlxmNDFmIn0uZmEtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMThhIn0uZmEtd2VpeGluOmJlZm9yZXtjb250ZW50OiJcZjFkNyJ9LmZhLXdoYXRzYXBwOmJlZm9yZXtjb250ZW50OiJcZjIzMiJ9LmZhLXdoYXRzYXBwLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MGMifS5mYS13aGVlbGNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjE5MyJ9LmZhLXdobWNzOmJlZm9yZXtjb250ZW50OiJcZjQwZCJ9LmZhLXdpZmk6YmVmb3Jle2NvbnRlbnQ6IlxmMWViIn0uZmEtd2lraXBlZGlhLXc6YmVmb3Jle2NvbnRlbnQ6IlxmMjY2In0uZmEtd2luZG93LWNsb3NlOmJlZm9yZXtjb250ZW50OiJcZjQxMCJ9LmZhLXdpbmRvdy1tYXhpbWl6ZTpiZWZvcmV7Y29udGVudDoiXGYyZDAifS5mYS13aW5kb3ctbWluaW1pemU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQxIn0uZmEtd2luZG93LXJlc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQyIn0uZmEtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxN2EifS5mYS13b24tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTkifS5mYS13b3JkcHJlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTlhIn0uZmEtd29yZHByZXNzLXNpbXBsZTpiZWZvcmV7Y29udGVudDoiXGY0MTEifS5mYS13cGJlZ2lubmVyOmJlZm9yZXtjb250ZW50OiJcZjI5NyJ9LmZhLXdwZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmRlIn0uZmEtd3Bmb3JtczpiZWZvcmV7Y29udGVudDoiXGYyOTgifS5mYS13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGFkIn0uZmEteGJveDpiZWZvcmV7Y29udGVudDoiXGY0MTIifS5mYS14aW5nOmJlZm9yZXtjb250ZW50OiJcZjE2OCJ9LmZhLXhpbmctc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE2OSJ9LmZhLXktY29tYmluYXRvcjpiZWZvcmV7Y29udGVudDoiXGYyM2IifS5mYS15YWhvbzpiZWZvcmV7Y29udGVudDoiXGYxOWUifS5mYS15YW5kZXg6YmVmb3Jle2NvbnRlbnQ6IlxmNDEzIn0uZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDE0In0uZmEteWVscDpiZWZvcmV7Y29udGVudDoiXGYxZTkifS5mYS15ZW4tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTcifS5mYS15b2FzdDpiZWZvcmV7Y29udGVudDoiXGYyYjEifS5mYS15b3V0dWJlOmJlZm9yZXtjb250ZW50OiJcZjE2NyJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQzMSJ9Ci8qKiAvY3NzL3YyL2FuaW1hdGUuY3NzICoqLwouYW5pbS1iZWF0IHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWJlYXQ7IGFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdDsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpIH0gLmFuaW0tYm91bmNlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWJvdW5jZTsgYW5pbWF0aW9uLW5hbWU6YW5pbS1ib3VuY2U7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC4yOCwuODQsLjQyLDEpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjI4LC44NCwuNDIsMSkpIH0gLmFuaW0tZmFkZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1mYWRlOyBhbmltYXRpb24tbmFtZTphbmltLWZhZGU7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKSB9IC5hbmltLWJlYXQtZmFkZSwuYW5pbS1mYWRlIHsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKSB9IC5hbmltLWJlYXQtZmFkZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1iZWF0LWZhZGU7IGFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdC1mYWRlOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSkgfSAuYW5pbS1mbGlwIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWZsaXA7IGFuaW1hdGlvbi1uYW1lOmFuaW0tZmxpcDsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwzcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDNzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpIH0gLmFuaW0tc2hha2UgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tc2hha2U7IGFuaW1hdGlvbi1uYW1lOmFuaW0tc2hha2U7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsbGluZWFyKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpIH0gLmFuaW0tc2hha2UsLmFuaW0tc3BpbiB7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCkgfSAuYW5pbS1zcGluIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLXNwaW47IGFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwycyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDJzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGxpbmVhcikgfSAuYW5pbS1zcGluLXJldmVyc2UgeyAtLWFuaW0tZGlyZWN0aW9uOnJldmVyc2UgfSAuYW5pbS1wdWxzZSwuYW5pbS1zcGluLXB1bHNlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLXNwaW47IGFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxzdGVwcyg4KSk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsc3RlcHMoOCkpIH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tYmVhdCB7IDAlLDkwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOyB0cmFuc2Zvcm06c2NhbGUoMSkgfSA0NSUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtc2NhbGUsMS4yNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKSB9IH0gQGtleWZyYW1lcyBhbmltLWJlYXQgeyAwJSw5MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNDUlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1zY2FsZSwxLjI1KSkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWJvdW5jZSB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSAxMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCkgfSAzMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1oZWlnaHQsLS41ZW0pKSB9IDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKSB9IDU3JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpIH0gNjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gfSBAa2V5ZnJhbWVzIGFuaW0tYm91bmNlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IDEwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKSB9IDMwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpIH0gNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApIH0gNTclIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSkgfSA2NCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWZhZGUgeyA1MCUgeyBvcGFjaXR5OnZhcigtLWFuaW0tZmFkZS1vcGFjaXR5LC40KSB9IH0gQGtleWZyYW1lcyBhbmltLWZhZGUgeyA1MCUgeyBvcGFjaXR5OnZhcigtLWFuaW0tZmFkZS1vcGFjaXR5LC40KSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tYmVhdC1mYWRlIHsgMCUsdG8geyBvcGFjaXR5OnZhcigtLWFuaW0tYmVhdC1mYWRlLW9wYWNpdHksLjQpOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNTAlIHsgb3BhY2l0eToxOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKSB9IH0gQGtleWZyYW1lcyBhbmltLWJlYXQtZmFkZSB7IDAlLHRvIHsgb3BhY2l0eTp2YXIoLS1hbmltLWJlYXQtZmFkZS1vcGFjaXR5LC40KTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB9IDUwJSB7IG9wYWNpdHk6MTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWZsaXAgeyA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpOyB0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKSB9IH0gQGtleWZyYW1lcyBhbmltLWZsaXAgeyA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpOyB0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tc2hha2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xNWRlZykgfSA0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxNWRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpIH0gOCUsMjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xOGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKSB9IDEyJSwyOCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE4ZGVnKSB9IDE2JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0yMmRlZykgfSAyMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDIyZGVnKSB9IDMyJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xMmRlZykgfSAzNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDEyZGVnKSB9IDQwJSx0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IH0gQGtleWZyYW1lcyBhbmltLXNoYWtlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpIH0gNCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE1ZGVnKSB9IDglLDI0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xOGRlZykgfSAxMiUsMjglIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxOGRlZykgfSAxNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpIH0gMjAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgyMmRlZykgfSAzMiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpIH0gMzYlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZykgfSA0MCUsdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLXNwaW4geyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTsgdHJhbnNmb3JtOnJvdGF0ZSgxdHVybikgfSB9IEBrZXlmcmFtZXMgYW5pbS1zcGluIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7IHRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pIH0gfSBAc3VwcG9ydHMgKC13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lKSB7IGJvZHkgI3Byb21vVG9wQnRuIC5hbmltLWZsaXB7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnVuc2V0OyBhbmltYXRpb24tZGVsYXk6dW5zZXQ7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp1bnNldDsgYW5pbWF0aW9uLWRpcmVjdGlvbjp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dW5zZXQ7IGFuaW1hdGlvbi1kdXJhdGlvbjp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnVuc2V0OyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnVuc2V0OyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dW5zZXQ7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dW5zZXQ7IH0gfSAucHVsc2F0aW5nLWNpcmNsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDsgZmxleDowIDAgYXV0bzsgJjpiZWZvcmUgeyBjb250ZW50OicnOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTpibG9jazsgd2lkdGg6MzAwJTsgaGVpZ2h0OjMwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLWxlZnQ6LTEwMCU7IG1hcmdpbi10b3A6LTEwMCU7IGJvcmRlci1yYWRpdXM6NDVweDsgYmFja2dyb3VuZC1jb2xvcjojMDFhNGU5OyBhbmltYXRpb246cHVsc2UtcmluZyAxLjI1cyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSBpbmZpbml0ZTsgfSAmOmFmdGVyIHsgY29udGVudDonJzsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjA7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXItcmFkaXVzOjE1cHg7IGJveC1zaGFkb3c6MCAwIDhweCByZ2JhKDAsMCwwLC4zKTsgYW5pbWF0aW9uOnB1bHNlLWRvdCAxLjI1cyBjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSkgLS40cyBpbmZpbml0ZTsgfSB9IEBrZXlmcmFtZXMgcHVsc2UtcmluZyB7IDAlIHsgdHJhbnNmb3JtOnNjYWxlKC4zMyk7IH0gODAlLCAxMDAlIHsgb3BhY2l0eTowOyB9IH0gQGtleWZyYW1lcyBwdWxzZS1kb3QgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSguOCk7IH0gNTAlIHsgdHJhbnNmb3JtOnNjYWxlKDEpOyB9IDEwMCUgeyB0cmFuc2Zvcm06c2NhbGUoLjgpOyB9IH0KLyoqIC9jc3MvZGl2X2xheWVycy5jc3MgKiovCmRpdi5NYWluQm94TGF5ZXJ7IHdpZHRoOm1pbigxMDAlLDk2MHB4KTsgbWFyZ2luOjAgYXV0bzsgfSBkaXYuTWFpbkJveExheWVyIEgxeyB3aWR0aDo5NDBweDsgfSBkaXYuTWFpbkJveExheWVyIC5yZXNwb25zaXZlLWVkaXRvciBoMSB7IHdpZHRoOmluaXRpYWw7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuY3JlZHNpaURpdiBIMXsgd2lkdGg6YXV0bzsgfSAuY3JlZHNpaURpdnsgd2hpdGUtc3BhY2U6bm9ybWFsOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkxlZnRCb3hMYXllciB7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuUmlnaHRCb3hMYXllciB7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllciB7IHBhZGRpbmc6MTBweDsgZmxvYXQ6bGVmdDsgd2lkdGg6OTQwcHg7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuSW5uZXJCb3hMYXllciB7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjBweDsgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Jbm5lckJveExheWVyLnRvcEJvcmRlcmVkeyBib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LklubmVyQm94TGF5ZXIuYm90dG9tQm9yZGVyZWR7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQgeyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkLmVhc3R7IGZsb2F0OnJpZ2h0OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkLndlc3R7IGZsb2F0OmxlZnQ7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZXsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luOjAgYXV0bzsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgI3RvcEJhbm5lckltYWdlID4gaW1neyBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIjaGlzdG9yeURpdiBkaXYuSW5uZXJCb3hMYXllciAjYnJlYWRjcnVtYnMgeyBtYXJnaW46MDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciB7IHdpZHRoOjEyMDBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIgeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyLnh0aW1lRnJhbWUgeyB3aWR0aDoxMjAwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIEgxeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIC5yZXNwb25zaXZlLWVkaXRvciBoMSB7IHdpZHRoOmluaXRpYWw7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIGRpdi5jcmVkc2lpRGl2IEgxeyB3aWR0aDphdXRvOyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciAjdG9wQmFubmVySW1hZ2UgeyB3aWR0aDoxMTgwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZS5URUFNIHsgd2lkdGg6OTYwcHg7IH0gfSBkaXYuTWFpbkJveExheWVyLnVjcENvbnRlbnRGdWxsV2lkdGggeyB3aWR0aDoxMDAlIWltcG9ydGFudDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5MZWZ0Qm94TGF5ZXIudWNwQ29udGVudEZ1bGxXaWR0aCB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIudWNwQ29udGVudEZ1bGxXaWR0aCB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9Ci8qKiAvY3NzL2Rpdl9zcGFucy5jc3MgKiovCi5kaXZTcGFue2Zsb2F0OmxlZnQ7Ym94LXNpemluZzpib3JkZXItYm94fS5kaXZTcGFuLmRpdlNwYW5MZWZ0e2Zsb2F0OmxlZnR9LmRpdlNwYW4uZGl2U3BhblJpZ2h0e2Zsb2F0OnJpZ2h0fS5kaXZTcGFuLmRpdlNwYW4xe3dpZHRoOjguMzMzMzMzMzMzMzMzMzMzJX0uZGl2U3Bhbi5kaXZTcGFuMnt3aWR0aDoxNi42NjY2NjY2NjY2NjY2NyV9LmRpdlNwYW4uZGl2U3BhbjN7d2lkdGg6MjUlfS5kaXZTcGFuLmRpdlNwYW40e3dpZHRoOjMzLjMzMzMzMzMzMzMzMzMzJX0uZGl2U3Bhbi5kaXZTcGFuNXt3aWR0aDo0MS42NjY2NjY2NjY2NjY2NyV9LmRpdlNwYW4uZGl2U3BhbjZ7d2lkdGg6NTAlfS5kaXZTcGFuLmRpdlNwYW43e3dpZHRoOjU4LjMzMzMzMzMzMzMzMzMzJX0uZGl2U3Bhbi5kaXZTcGFuOHt3aWR0aDo2Ni42NjY2NjY2NjY2NjY2NiV9LmRpdlNwYW4uZGl2U3Bhbjl7d2lkdGg6NzUlfS5kaXZTcGFuLmRpdlNwYW4xMHt3aWR0aDo4My4zMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3BhbjExe3dpZHRoOjkxLjY2NjY2NjY2NjY2NjY2JX0uZGl2U3Bhbi5kaXZTcGFuMTJ7d2lkdGg6MTAwJX0KLyoqIC9jc3MvbWVudWltZy5jc3MgKiovCi5tZW51c3ByaXRle2JhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbWVudWljb25zL21lbnVzcHJpdGVzaGVldC5wbmcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtkaXNwbGF5OmlubGluZS10YWJsZTtib3JkZXI6MH0ubWVudXNwcml0ZS1hcnJvd19kb3due3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC01cHh9Lm1lbnVzcHJpdGUtYXJyb3dfdXB7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTQ3cHh9Lm1lbnVzcHJpdGUtY29udGFjdHt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtODlweH0ubWVudXNwcml0ZS1kZW1vY2Fye3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0xMzFweH0ubWVudXNwcml0ZS1maW5hbmNle3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0xNzNweH0ubWVudXNwcml0ZS1ob21le3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0yMTVweH0ubWVudXNwcml0ZS1uZXdjYXJ7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTI1N3B4fS5tZW51c3ByaXRlLW9sZGNhcnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMjk5cHh9Lm1lbnVzcHJpdGUtcHJvbW90aW9uc3t3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMzQxcHh9Lm1lbnVzcHJpdGUtc2VydmljZXt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMzgzcHh9Ci8qKiAvY3NzL2pxdWVyeS5tdWx0aXNlbGVjdC5jc3MgKiovCi51aS1tdWx0aXNlbGVjdHtwYWRkaW5nOjJweCAwIDJweCA0cHg7dGV4dC1hbGlnbjpsZWZ0fS51aS1tdWx0aXNlbGVjdCBzcGFuLnVpLWljb257ZmxvYXQ6cmlnaHR9LnVpLW11bHRpc2VsZWN0LXNpbmdsZSAudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBpbnB1dHtwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O3RvcDphdXRvICFpbXBvcnRhbnQ7bGVmdDotOTk5OXB4fS51aS1tdWx0aXNlbGVjdC1zaW5nbGUgLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWx7cGFkZGluZzo1cHggIWltcG9ydGFudH0udWktbXVsdGlzZWxlY3QtaGVhZGVye21hcmdpbi1ib3R0b206M3B4O3BhZGRpbmc6M3B4IDAgM3B4IDRweH0udWktbXVsdGlzZWxlY3QtaGVhZGVyIHVse2ZvbnQtc2l6ZTouOWVtfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgdWwgbGl7ZmxvYXQ6bGVmdDtwYWRkaW5nOjAgMTBweCAwIDB9LnVpLW11bHRpc2VsZWN0LWhlYWRlciBhe3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgc3Bhbi51aS1pY29ue2Zsb2F0OmxlZnR9LnVpLW11bHRpc2VsZWN0LWhlYWRlciBsaS51aS1tdWx0aXNlbGVjdC1jbG9zZXtmbG9hdDpyaWdodDt0ZXh0LWFsaWduOnJpZ2h0O3BhZGRpbmctcmlnaHQ6MH0udWktbXVsdGlzZWxlY3QtbWVudXtkaXNwbGF5Om5vbmU7cGFkZGluZzozcHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMDt0ZXh0LWFsaWduOmxlZnR9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXN7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteTphdXRvfS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVse2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtwYWRkaW5nOjNweCAxcHh9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWwgaW5wdXR7cG9zaXRpb246cmVsYXRpdmU7dG9wOjFweH0udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsaXtjbGVhcjpib3RoO2ZvbnQtc2l6ZTouOWVtO3BhZGRpbmctcmlnaHQ6M3B4fS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxpLnVpLW11bHRpc2VsZWN0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWR9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGkudWktbXVsdGlzZWxlY3Qtb3B0Z3JvdXAtbGFiZWwgYXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4O21hcmdpbjoxcHggMDt0ZXh0LWRlY29yYXRpb246bm9uZX0qIGh0bWwgLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWx7Ym9yZGVyOjB9LnVpLW11bHRpc2VsZWN0LWhhc2ZpbHRlciB1bHtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4fS51aS1tdWx0aXNlbGVjdC1maWx0ZXJ7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6MTBweDtmb250LXNpemU6MTFweH0udWktbXVsdGlzZWxlY3QtZmlsdGVyIGlucHV0e3dpZHRoOjEwMHB4O2ZvbnQtc2l6ZTowLjYyNXJlbSA7bWFyZ2luLWxlZnQ6NXB4O2hlaWdodDoxNXB4O3BhZGRpbmc6MnB4O2JvcmRlcjoxcHggc29saWQgIzI5MjkyOTstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveH0KLyoqIC9jc3MvdHJhZGVpbnBvcHVwLmNzcyAqKi8KLnRyYWRlSW5CYXJTbXNPckVtYWlseyB3aWR0aDo1MCU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclNtc09yRW1haWxTbXMsICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJTbXNPckVtYWlsRW1haWx7IHdpZHRoOjUwJTsgfSAudHJhZGVJbkJhclN0ZXA0LCAudHJhZGVJbkJhclN0ZXA1LCAudHJhZGVJbkJhclN0ZXA2eyBtYXJnaW46NjBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAudHJhZGVJbkJhclN0ZXA2eyBtYXJnaW46MCAwIDMwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnRyYWRlSW5CYXJTdGVwMyAudHJhZGVJbkJhclN0ZXAzUXVlc3Rpb24sIC50cmFkZUluQmFyU3RlcDQgLnRyYWRlSW5CYXJTdGVwNFF1ZXN0aW9uLCAudHJhZGVJbkJhclN0ZXA1IC50cmFkZUluQmFyU3RlcDVRdWVzdGlvbiwgLnRyYWRlSW5CYXJTdGVwNiAudHJhZGVJbkJhclN0ZXA2UXVlc3Rpb257IG1hcmdpbjoyMHB4IDA7IH0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCwgLnRyYWRlSW5CYXJTdGVwMyAjdHJhZGVJblN0ZXAzWWVzLCAudHJhZGVJbkJhclN0ZXA0ICN0cmFkZUluU3RlcDRZZXMsIC50cmFkZUluQmFyU3RlcDUgI3RyYWRlSW5TdGVwNVllcywgLnRyYWRlSW5CYXJTdGVwNiAjdHJhZGVJblN0ZXA2WWVzeyBiYWNrZ3JvdW5kOiMwNTE0MWY7IGNvbG9yOiNmZmZmZmY7IHBhZGRpbmc6MTJweCA2cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyOnVuc2V0OyBmb250LXNpemU6MC44NzVyZW0gOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LXdyYXA6YXV0bzsgfSAudHJhZGVJbkJhclN0ZXAzICN0cmFkZUluU3RlcDNOb3sgYmFja2dyb3VuZDojZTBlMGUwOyBjb2xvcjojMzMzOyBwYWRkaW5nOjEycHggNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlcjp1bnNldDsgZm9udC1zaXplOjAuODc1cmVtIDsgZGlzcGxheTpibG9jazsgdGV4dC13cmFwOmF1dG87IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2IC50cmFkZUluQmFyU3RlcDZUaXRsZXsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cF9saW5lMXsgYm9yZGVyLXJhZGl1czo2cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkZXItY29udGFpbmVyIHsgbWF4LXdpZHRoOjYwMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MCBhdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHBhZGRpbmc6MjBweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJveC1zaGFkb3c6MCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWRlci1jb250YWluZXIgaDIgeyBmb250LXNpemU6MS4ycmVtOyBtYXJnaW4tYm90dG9tOjEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciBwIHsgY29sb3I6IzY2NjsgbWFyZ2luLWJvdHRvbToyMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuOXJlbTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5pbWFnZS1ncmlkIHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDQsIDFmcik7IGdhcDoxNXB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZC1hcmVhIHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMCU7IGFzcGVjdC1yYXRpbzoxIC8gMTsgYm9yZGVyOjJweCBkYXNoZWQgI2NjYzsgYm9yZGVyLXJhZGl1czoxMHB4OyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBiYWNrZ3JvdW5kLXNpemU6OTAlOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWEgaW5wdXRbdHlwZT0iZmlsZSJdIHsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnBsYWNlaG9sZGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBvYmplY3QtZml0OmNvbnRhaW47IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NXB4OyBsZWZ0OjUwJTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7IGZvbnQtc2l6ZTowLjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojNjY2OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsgcGFkZGluZzoxcHggNnB4OyBib3JkZXItcmFkaXVzOjRweDsgcG9pbnRlci1ldmVudHM6bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHdoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmFkZC1pY29uIHsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTo1cHg7IHJpZ2h0OjVweDsgZm9udC1zaXplOjEuMXJlbTsgY29sb3I6IzAwN0JGRjsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IHdpZHRoOjI4cHg7IGhlaWdodDoyOHB4OyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYm94LXNoYWRvdzowIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmRlbGV0ZS1idG4geyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjVweDsgcmlnaHQ6NXB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjBweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuNyk7IGNvbG9yOndoaXRlOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbGluZS1oZWlnaHQ6MjBweDsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYTpob3ZlciAuZGVsZXRlLWJ0biB7IGRpc3BsYXk6ZmxleDsgfSAudHJhZGVJbkJvdHRvbUxvZ297IHRleHQtYWxpZ246Y2VudGVyOyBjb2xvcjojYTlhOWE5OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLXRvcDowIWltcG9ydGFudDsgfSAudHJhZGVJbkJvdHRvbUxvZ28udHJhZGVJbkJvdHRvbUxvZ29WV3sgbWFyZ2luOjAgYXV0bzsgd2lkdGg6ODUlOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0eyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2hpdGUtc3BhY2U6bm93cmFwOyBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6Y2xpcDsgbWF4LXdpZHRoOjEwMCU7IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OjE2cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIgLnRyYWRlSW5EaXNjbGFpbWVyU2hvcnQ6OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyB0b3A6MDsgd2lkdGg6MjBweDsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQ6d2hpdGU7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIgLnRyYWRlSW5EaXNjbGFpbWVyU2hvcnQ6OmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDo1cHg7IHRvcDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgcG9pbnRlci1ldmVudHM6bm9uZTsgYmFja2dyb3VuZDp3aGl0ZSB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5EaXNjbGFpbWVyIC50cmFkZUluRGlzY2xhaW1lclNob3J0IHNwYW57IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBmb250LXNpemU6MC44MTNyZW0gIWltcG9ydGFudDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjAgIWltcG9ydGFudDsgY3Vyc29yOnBvaW50ZXI7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkRpc2NsYWltZXIgLnRyYWRlSW5EaXNjbGFpbWVyU2hvcnQgc3BhbiBheyBmb250LXdlaWdodDpib2xkOyB9IC50cmFkZUluRGlzY2xhaW1lckRyYXdlcnsgcG9zaXRpb246Zml4ZWQ7IGxlZnQ6MDsgYm90dG9tOi0zMDBweDsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGJhY2tncm91bmQ6I2ZmZjsgYm94LXNoYWRvdzowIC0ycHggMTBweCByZ2JhKDAsMCwwLDAuMyk7IHRyYW5zaXRpb246Ym90dG9tIDAuM3MgZWFzZTsgZGlzcGxheTpub25lOyBvdmVyZmxvdzphdXRvOyB6LWluZGV4OjEwOyB9IC50cmFkZUluRGlzY2xhaW1lckRyYXdlci5vcGVueyBib3R0b206MDsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiAudHJhZGVJbkRpc2NsYWltZXJDb250ZW50eyBwYWRkaW5nOjIwcHg7IG92ZXJmbG93LXk6YXV0bzsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiAudHJhZGVJbkRpc2NsYWltZXJDbG9zZXsgcGFkZGluZzo3cHg7IGN1cnNvcjpwb2ludGVyOyBwb3NpdGlvbjpmaXhlZDsgcmlnaHQ6MDsgfSAudHJhZGVJbkRpc2NsYWltZXJEcmF3ZXIub3BlbiBheyBmb250LXdlaWdodDpib2xkOyB9IEBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KSB7ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciB7IHBhZGRpbmc6MTVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5pbWFnZS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLCAxZnIpOyBnYXA6MTBweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9IH0gQG1lZGlhIChtYXgtd2lkdGg6NDAwcHgpIHsgI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuaW1hZ2UtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwgMWZyKTsgZ2FwOjhweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmFkZC1pY29uIHsgd2lkdGg6MjRweDsgaGVpZ2h0OjI0cHg7IGZvbnQtc2l6ZToxcmVtOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmRlbGV0ZS1idG4geyB3aWR0aDoxNnB4OyBoZWlnaHQ6MTZweDsgZm9udC1zaXplOjAuNjI1cmVtIDsgfSB9Ci8qKiAvY3NzL2FkdmFuY2VkLXNsaWRlci1iYXNlLmNzcyAqKi8KLmFkdmFuY2VkLXNsaWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyBvdXRsaW5lOm5vbmU7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgKiB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGVyLW1haW4geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtd3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIHVsLnNsaWRlcyB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbjowOyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6ZmxleDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHZpc2liaWxpdHk6aGlkZGVuOyBsaXN0LXN0eWxlOm5vbmU7IGZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7IG9wYWNpdHk6MTsgfSAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5pbWFnZSwgLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudGh1bWJuYWlsLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5jYXB0aW9uLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5odG1sIHsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSBpbWcsIC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCBpbWcgeyBtYXgtd2lkdGg6bm9uZTsgbWF4LWhlaWdodDpub25lOyBib3JkZXI6MCBub25lOyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUgLmh0bWwgeyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudmlkZW8geyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUuYWN0aXZlIC52aWRlbyB7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpY2UtY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgeyAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IC1tb3otdXNlci1zZWxlY3Q6bm9uZTsgLW8tdXNlci1zZWxlY3Q6bm9uZTsgdXNlci1zZWxlY3Q6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgLnNlbGVjdGFibGUgeyAtd2Via2l0LXVzZXItc2VsZWN0OmF1dG87IC1tb3otdXNlci1zZWxlY3Q6YXV0bzsgLW8tdXNlci1zZWxlY3Q6YXV0bzsgdXNlci1zZWxlY3Q6YXV0bzsgY3Vyc29yOmF1dG87IH0gLmFkdmFuY2VkLXNsaWRlciAuc3dpcGVhYmxlLWNvbnRhaW5lciAuZ3JhYiB7IGN1cnNvcjpncmFiOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgLmdyYWJiaW5nIHsgY3Vyc29yOmdyYWJiaW5nOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWNlIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAucHJlbG9hZGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcHJlbG9hZGVyMi5naWYpIG5vLXJlcGVhdDsgd2lkdGg6NjJweDsgaGVpZ2h0OjE0cHg7IHotaW5kZXg6MTU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYXJyb3dzIHsgcG9zaXRpb246c3RhdGljOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MzA7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6ODBweDsgaGVpZ2h0OjgwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi00MHB4OyBtYXJnaW4tbGVmdDotNDBweDsgY3Vyc29yOnBvaW50ZXI7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5wbGF5IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9wbGF5LnBuZyk7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5tYWduaWZ5aW5nIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saWdodGJveF9tYWduaWZ5aW5nX3NtYWxsLnBuZykgbm8tcmVwZWF0OyBmbG9hdDpsZWZ0OyBsZWZ0OjA7IHRvcDowOyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjEwcHg7IGRpc3BsYXk6bm9uZTsgfSB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24uaHlwZXJsaW5rIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9oeXBlcmxpbmsucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZXNob3ctY29udHJvbHMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo0MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IHsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDo5NHB4OyBtYXJnaW4tdG9wOi01MHB4OyB6LWluZGV4OjU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctbGVmdCwgLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctcmlnaHQsIC5hZHZhbmNlZC1zbGlkZXIgLnNoYWRvdyAuc2hhZG93LW1pZGRsZSB7IGZsb2F0OmxlZnQ7IH0gLmFkdmFuY2VkLXNsaWRlciAuZnVsbC1zY3JlZW4tY29udHJvbHMgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Z1bGxzY3JlZW4ucG5nKSBuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDozMXB4OyBoZWlnaHQ6MjdweDsgdG9wOjIwcHg7IGxlZnQ6MjBweDsgei1pbmRleDo2MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6NTA7IH0gLmFkdmFuY2VkLXNsaWRlciBjYW52YXMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IHBvc2l0aW9uOmFic29sdXRlOyBjdXJzb3I6cG9pbnRlcjsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xMHB4OyBtYXJnaW4tbGVmdDotMTBweDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcGxheXBhdXNlX3NtYWxsLnBuZykgbm8tcmVwZWF0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRpbWVyLWFuaW1hdGlvbi5wbGF5IC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMHB4IDA7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uLnBhdXNlIC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciB7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAuY2FwdGlvbi1jb250YWluZXIgLndyYXBwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtd3JhcHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcHJlbG9hZGVyLmdpZik7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLmxlZnQsIC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLnJpZ2h0LCAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZS1idXR0b25zIC5taWRkbGUgeyBmbG9hdDpsZWZ0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgYSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBjdXJzb3I6cG9pbnRlcjsgZmxvYXQ6bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAudmlzaWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IG92ZXJmbG93OnZpc2libGU7IHRvcDowOyBsZWZ0OjA7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLnRodW1ibmFpbC13cmFwcGVyIHsgY3Vyc29yOnBvaW50ZXI7IGxpc3Qtc3R5bGU6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xNXB4OyBtYXJnaW4tbGVmdDotMTVweDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5saWdodGJveC1pY29uLnBsYXkgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X3BsYXlfc21hbGwucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24ubWFnbmlmeWluZyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbGlnaHRib3hfbWFnbmlmeWluZ19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAubGlnaHRib3gtaWNvbi5oeXBlcmxpbmsgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X2h5cGVybGlua19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwgLmNhcHRpb24gLmNvbnRlbnQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgei1pbmRleDoyMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyLXRvb2x0aXAgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo5OTk5OyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGUgYSB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGU6bnRoLWNoaWxkKC1uKzQpIGEgaW1neyB3aWR0aDoxMTUlICFpbXBvcnRhbnQ7IH0gLm9lbS1pbWctc2xpZGVyIC5zbGlkZSBhIGltZ3sgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgbWF4LXdpZHRoOm5vbmUgIWltcG9ydGFudDsgbWF4LWhlaWdodDpub25lICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7IGxlZnQ6aW5pdGlhbCAhaW1wb3J0YW50OyB0b3A6aW5pdGlhbCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6dW5zZXQgIWltcG9ydGFudDsgbWF4LWhlaWdodDp1bnNldCAhaW1wb3J0YW50OyB9IC5vZW0taW1nLXNsaWRlciAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyIHsgYmFja2dyb3VuZC1zaXplOjExNSU7IH0KLyoqIC9jc3MvdG9hc3RyLmNzcyAqKi8KLnRvYXN0LXRpdGxle2ZvbnQtd2VpZ2h0OmJvbGR9LnRvYXN0LW1lc3NhZ2V7LW1zLXdvcmQtd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS50b2FzdC1tZXNzYWdlIGEsLnRvYXN0LW1lc3NhZ2UgbGFiZWx7Y29sb3I6I2ZmZn0udG9hc3QtbWVzc2FnZSBhOmhvdmVye2NvbG9yOiNjY2M7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRvYXN0LWNsb3NlLWJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZTtyaWdodDotMC4zZW07dG9wOi0wLjNlbTtmbG9hdDpyaWdodDtmb250LXNpemU6MS4yNXJlbSA7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6YWxwaGEob3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfS50b2FzdC1jbG9zZS1idXR0b246aG92ZXIsLnRvYXN0LWNsb3NlLWJ1dHRvbjpmb2N1c3tjb2xvcjojMDUxNDFmO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9YnV0dG9uLnRvYXN0LWNsb3NlLWJ1dHRvbntwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9hc3QtdG9wLWNlbnRlcnt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1jZW50ZXJ7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtZnVsbC13aWR0aHt0b3A6MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoe2JvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtdG9wLWxlZnR7dG9wOjEycHg7bGVmdDoxMnB4fS50b2FzdC10b3AtcmlnaHR7dG9wOjEycHg7cmlnaHQ6MTJweH0udG9hc3QtYm90dG9tLXJpZ2h0e3JpZ2h0OjEycHg7Ym90dG9tOjEycHh9LnRvYXN0LWJvdHRvbS1sZWZ0e2JvdHRvbToxMnB4O2xlZnQ6MTJweH0jdG9hc3QtY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5OTk5O2NvbG9yOiNGRkZ9I3RvYXN0LWNvbnRhaW5lciAqey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdG9hc3QtY29udGFpbmVyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjAgMCA2cHg7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjMwMHB4Oy1tb3otYm9yZGVyLXJhZGl1czozcHggM3B4IDNweCAzcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDtib3JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjE1cHggY2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDstbW96LWJveC1zaGFkb3c6MCAwIDEycHggIzk5OTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDEycHggIzk5OTtib3gtc2hhZG93OjAgMCAxMnB4ICM5OTk7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi44Oy1tcy1maWx0ZXI6YWxwaGEob3BhY2l0eT04MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfSN0b2FzdC1jb250YWluZXI+OmhvdmVyey1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjMDAwOy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjMDAwO2JveC1zaGFkb3c6MCAwIDEycHggIzAwMDtvcGFjaXR5OjE7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtjdXJzb3I6cG9pbnRlcn0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1pbmZve2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQUhPU1VSQlZFaExyWmEvU2dOQkVNWnpoMFdLQ0NsU0NLYUlZT0VEK0FBS2VRUUxHOEhXenRMQ0ltQnJZYWRnSWRZK2dJS05Za0JGU3d1N0NBb3FDZ2trb0dCSS9FMjhQZGJMWm1lRExnelp6Y3g4My96WjJTU1hDMWo5ZnIrSTFIcTkzZzJ5eEg0aXdNMXZrb0JXQWR4Q21welR4ZmtOMlJjeVpOYUhGSWtTbzEwKzhrZ3hrWElVUlY1SEd4VG1GdWM3NUIyUmZRa3B4SEc4YUFnYUFGYTB0QUhxWUZmUTdJd2UyeWhPRGs4K0o0Qzd5QW9SVFdJM3cvNGtsR1JnUjRsTzdScG45K2d2TXlXcCt1eEZoOCtIK0FSbGdOMW5KdUp1UUFZdk5rRW53R0ZjazE4RXI0cTNlZ0VjL29PK21oTGRLZ1J5aGRORmlhY0MwcmxPQ2JoTlZ6NEg5Rm5BWWdEQnZVM1FJaW9abEpGTEp0c29IWVJEZmlab1V5SXhxQ3RScFZsQU5xMEVVNGRBcGpydGdlelBGYWQ1UzE5V2dqa2MwaE5WbnVGNEhqVkE2QzdRclNJYnlsQitvWmUzYUhnQnNxbE5xS1lINDhqWHlKS011QWJpeVZKOEt6YUIzZVJjMHBnOVZ3UTRuaUZyeUk2OHFpT2kzQWJqd2RzZm5BdGswYkNqVExKS3I2bXJEOWc4aXEvUy9CODFoZ3VPTWxRVG5WeUc0MHdBY2pubWdzQ05FU0Ryam1lN3dmZnRQNFA3U1A0TjNDSlpkdnpvTnlHcTJjL0hXT1hKR3N2VmcrUkEvazJNQy93TjZJMllBMlB0OEdrQUFBQUFTVVZPUks1Q1lJST0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFEc1NVUkJWRWhMWTJBWUJmUU1nZi8vLzNQOCsvZXZBSWd2QS9Gc0lGK0JhdllERFdNQkdyb2FTTU1CaUU4VkM3QVpEcklGYU1GbmlpM0FaVGpVZ3NVVVdVREE4T2RBSDZpUWJRRWh3NEh5R3NQRWNLQlhCSUM0QVJoZXg0RzRCc2ptd2VVMXNvSUZhR2cvV3RvRlpSSVpkRXZJTWh4a0NDalhJVnNBVFY2Z0ZHQUNzNFJzdzBFR2dJSUgzUUpZSmdIU0FSUVpEcldBQitqYXd6Z3MrUTJVTzQ5RDdqblJTUkdvRUZSSUxjZG1FTVdHSTBjbTBKSjJRcFlBMVJEdmNtekpFV2hBQmhEL3BxckwwUzBDV3VBQktnblJraTlsTHNlUzdnMkFscXdIV1FTS0g0b0tMcklMcFJHaEVRQ3cyTGlSVUlhNGx3QUFBQUJKUlU1RXJrSmdnZz09IikgIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyPi50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSIpICFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtY2VudGVyPmRpdiwjdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1jZW50ZXI+ZGl2e3dpZHRoOjMwMHB4O21hcmdpbjphdXRvfSN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGg+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWZ1bGwtd2lkdGg+ZGl2e3dpZHRoOjk2JTttYXJnaW46YXV0b30udG9hc3R7YmFja2dyb3VuZC1jb2xvcjojMDMwMzAzfS50b2FzdC1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzUxYTM1MX0udG9hc3QtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjojYmQzNjJmfS50b2FzdC1pbmZve2JhY2tncm91bmQtY29sb3I6IzJmOTZiNH0udG9hc3Qtd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmODk0MDZ9LnRvYXN0LXByb2dyZXNze3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDtoZWlnaHQ6NHB4O2JhY2tncm91bmQtY29sb3I6IzAwMDtvcGFjaXR5Oi40Oy1tcy1maWx0ZXI6YWxwaGEob3BhY2l0eT00MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApfUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6MjQwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxMWVtfSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotMC4yZW07dG9wOi0wLjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDoyNDFweCkgYW5kIChtYXgtd2lkdGg6NDgwcHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6OHB4IDhweCA4cHggNTBweDt3aWR0aDoxOGVtfSN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbntyaWdodDotMC4yZW07dG9wOi0wLjJlbX19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo0ODFweCkgYW5kIChtYXgtd2lkdGg6NzY4cHgpeyN0b2FzdC1jb250YWluZXI+ZGl2e3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNTBweDt3aWR0aDoyNWVtfX0KLyoqIC9jc3Mva2lhU2hpZnRfY2VydGlmaWVkLmNzcyAqKi8KOnJvb3QgeyAtLWtpYS1ibGFjazojMDUxNDFGOyAtLXByb21vLWJ0bi1jb2xvcjojMDUxNDFmOyAtLXByb21vLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tcHJvbW8tYnRuLWhvdmVyLWJnLWNvbG9yOiMwNTE0MWY7IC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1jZXJ0LXR4dC10cmFuc2Zvcm06bm9uZTsgLS10eHQtdXBwZXI6bm9uZTsgLS1mb3JtYXQtcGljZS1zaWduLXBvc2l0aW9uOm1pbigxNyUsMC40ZW0pOyAtLWZvcm1hdC1zbWFsbC1wcmljZS1zaWduLXBvc2l0aW9uOm1pbig3JSwwLjRlbSk7IH0gI291dHB1dHByaWNlZm9ybXsgLS1mb3JtYXQtcGljZS1zaWduLXBvc2l0aW9uOjFlbTsgfSBib2R5LkVOR0xJU0h7IC0tY2VydC10eHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7IH0gYm9keSAqOm5vdCguZmEsIC5mYWIsIC5mYWQsIC5mYWwsIC5mYXIsIC5mYXMpIHsgZm9udC1mYW1pbHk6aW5oZXJpdCAhaW1wb3J0YW50OyB9IC5iYW5uZXJfc2VhcmNoX2Jhcl90aXRsZSB7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyB9ICNiYW5uZXJfc2VhcmNoX2Jhcl9vcGVuX2hvdXJzIGRpdiB7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyB9IC5iYW5uZXJfc2VhcmNoX2Jhcl9zdWJtaXRfYnV0dG9uIHsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IH0gLmJhbm5lcl9zZWFyY2hfYmFyX3N1YnRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IH0gI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIHsgd2lkdGggOjEwMCU7IGhlaWdodCA6ODBweDsgYmFja2dyb3VuZC1jb2xvciA6I2ZmZmZmZjsgY29sb3IgOnZhcigtLWtpYS1ibGFjayk7IGZvbnQtZmFtaWx5IDonU2lnbmF0dXJlTGlnaHQnOyBjbGVhciA6Ym90aDsgfSAja2lhU2hpZnRDZXJ0aWZpZWRGb290ZXIgLmNvbnRhaW5lciB7IHdpZHRoIDoxMDAlOyBtYXgtd2lkdGggOjEyMDBweDsgbWFyZ2luIDowIGF1dG87IGRpc3BsYXkgOmZsZXg7IGp1c3RpZnktY29udGVudCA6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXMgOmNlbnRlcjsgfSAja2lhU2hpZnRDZXJ0aWZpZWRGb290ZXIgLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIHsgZGlzcGxheSA6ZmxleDsgZmxleC1kaXJlY3Rpb24gOnJvdzsganVzdGlmeS1jb250ZW50IDpzcGFjZS1ldmVubHk7IGFsaWduLWl0ZW1zIDpjZW50ZXI7IGZsZXgtZ3JvdyA6MC4yOyBtYXJnaW4tdG9wIDoxLjc1cmVtOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuc29jaWFsLW1lZGlhX19jb250YWluZXIgaW1nIHsgaGVpZ2h0IDoyOHB4OyB3aWR0aCA6MjhweDsgfSAja2lhU2hpZnRDZXJ0aWZpZWRGb290ZXIgLmRpc2NsYWltZXJfX2NvbnRhaW5lciB7IHdpZHRoIDo1MCU7IG1hcmdpbiA6MS43NXJlbSAycmVtIDAgMnJlbTsgZmxleC1ncm93IDoyOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuZGlzY2xhaW1lcl9fY29udGFpbmVyIHAgeyBmb250LXNpemUgOjAuOHJlbTsgdGV4dC1hbGlnbiA6Y2VudGVyOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuZGlzY2xhaW1lcl9fY29udGFpbmVyIGEgeyB0ZXh0LWRlY29yYXRpb24gOm5vbmU7IH0gI2tpYVNoaWZ0Q2VydGlmaWVkRm9vdGVyIC5kaXNjbGFpbWVyX19jb250YWluZXIgYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbiA6dW5kZXJsaW5lOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuY2VydGlmaWVkLWxvZ29fX2NvbnRhaW5lciB7IG1hcmdpbi10b3AgOi00NS41cHg7IGZsZXgtZ3JvdyA6MTsgdGV4dC1hbGlnbiA6Y2VudGVyOyB9ICNraWFTaGlmdENlcnRpZmllZEZvb3RlciAuY2VydGlmaWVkLWxvZ28geyB3aWR0aCA6MjAwcHg7IGhlaWdodCA6YXV0bzsgfSAja2lhU2hpZnRDZXJ0aWZpZWRGb290ZXIgLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5mYWIgeyBjb2xvciA6aW5oZXJpdDsgfSAucHJvbW8tb2VtLWhlYWRlciBpbWcsIC5wcm9tby1vZW0taGVhZGVyLS1jb2xvciBpbWcgeyBtYXgtd2lkdGg6NXJlbSAhaW1wb3J0YW50OyB9IC52aXNpdENvbnRhY3RIZWFkZXIgLnZpc2l0Q29udGFjdENUQUNvbnRhaW5lciAudmlzaXRDb250YWN0QnV0dG9uLCAudmlzaXRDb250YWN0SGVhZGVyIC52aXNpdENvbnRhY3RGb3JtQ29udGFpbmVyIC52aXNpdENvbnRhY3RGb3JtIC52aXNpdENvbnRhY3RGb3JtU3VibWl0IHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1raWEtYmxhY2spICFpbXBvcnRhbnQ7IH0gYTpob3ZlciwgYTpmb2N1cywgLnNvY2lhbC1pdGVtIGE6aG92ZXIsIC5zb2NpYWwtaXRlbSBhOmZvY3VzLCAuZGVza3RvcF9sYW5nX2J1dHRvbjpob3ZlciBzcGFuLCAuZGVza3RvcF9sYW5nX2J1dHRvbjpmb2N1cyBzcGFuLCBbdHlwZT0ic3VibWl0Il06aG92ZXIsIFt0eXBlPSJzdWJtaXQiXTpmb2N1cywgW3JvbGU9ImJ1dHRvbiJdID4gLnRpdGxlOmhvdmVyLCBbcm9sZT0iYnV0dG9uIl0gPiAudGl0bGU6Zm9jdXMsIC5mbHRGaWx0ZXIgLmRpdkJ1dHRvbkJveE91dGVyOmhvdmVyIC5zLXRleHQsIC5mbHRGaWx0ZXIgLmRpdkJ1dHRvbkJveE91dGVyOmZvY3VzIC5zLXRleHQsIC5mbHRGaWx0ZXIgYnV0dG9uOmhvdmVyIC5zLW5hbWUsIC5mbHRGaWx0ZXIgYnV0dG9uOmZvY3VzIC5zLW5hbWUgYnV0dG9uOmhvdmVyIC5jdGEtbGFiZWwsIGJ1dHRvbjpmb2N1cyAuY3RhLWxhYmVsLCBidXR0b25bY2xhc3MqPSJ0cmFkZUluQmFyIl06aG92ZXIgZGl2LCBidXR0b25bY2xhc3MqPSJ0cmFkZUluQmFyIl06Zm9jdXMgZGl2LCBidXR0b246Zm9jdXMsIGJ1dHRvbjpob3ZlciwgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2xhYmVsOmZvY3VzLCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fbGFiZWw6aG92ZXJ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczoxcHggIWltcG9ydGFudDsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OjRweCAhaW1wb3J0YW50OyB9IC5ncm91cFRhYnMgYm94LWxjOmhvdmVyIC50YWItbGFiZWx7IGNvbG9yOnZhcigtLWJsYWNrKTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQ7IH0gI0NvbXBhcmVCb3ggI2NvbXBhcmVCdXR0b24geyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWtpYS1ibGFjayk7IH0gLlVzZWRTcnAyIC5jYXJCYXNpY3MgLmNhclRpdGxlIC5kaXZUcmltIHsgbGluZS1oZWlnaHQ6aW5oZXJpdDsgfSAuY2FyQmFzaWNzIC5kaXZNYWtlLmVsSXNHcmV5YWJsZSB7IHRleHQtdHJhbnNmb3JtOmluaXRpYWw7IH0gLmNhcm91c2VsVGl0bGUgeyB0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplOyB9IC5jYXJUaXRsZSAuZGl2TWFrZSwgLmNhcmQtdGl0bGUgLm1ha2UtdGl0bGUgeyB0ZXh0LXRyYW5zZm9ybTppbml0aWFsOyB9IGJvZHkuRlJFTkNIIC5kaXZTZW9MaW5rV3JhcHBlciAuaGVhZGluZzN7IHRleHQtdHJhbnNmb3JtOmluaXRpYWw7IH0gYm9keS5FTkdMSVNIIC5kaXZTZW9MaW5rV3JhcHBlciAuaGVhZGluZzN7IHRleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7IH0gLmRlYWxlck1hcExpbmsgc3ZneyBkaXNwbGF5OmlubGluZS1mbGV4OyB9Ci8qKiAvY3NzL2Zhdm9yaXRlcy5wcmVsb2FkLmNzcyAqKi8KZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQtMiBkaXYuU2xpZGVyT3V0ZXJCb3gsIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjExMHB4OyB0b3A6MzBweDsgei1pbmRleDoxMTsgZm9udC1zaXplOjEuNmVtOyBjdXJzb3I6cG9pbnRlcjsgfSAuY2FyQm94T3V0ZXIgLmNhckltYWdlIC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgeyByaWdodDo0MHB4OyB0b3A6MTVweDsgfSAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciB7IG1heC13aWR0aDo4NSU7IH0gLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIHsgcmlnaHQ6MjdweDsgdG9wOjA7IH0gLmRpdkNhclNpbmdsZU91dGVyQm94IC5yZWJhdGVUYWcgKyAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciB7IHRvcDo2MHB4OyB9IC5mYS1sYXllcnMgLmZhLCAuZmEtbGF5ZXJzIC5mYXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgfSAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIC5mYS1sYXllcnMgLmZhIHsgY29sb3I6I0ZGRjsgZm9udC1zaXplOjAuOTc1ZW07IGxlZnQ6MXB4ICFpbXBvcnRhbnQ7IH0gLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciAuZmEtbGF5ZXJzIC5mYXIsIC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIuZDJjLWZhdnMtc2VsZWN0ZWQgLmZhLWxheWVycyAuZmEgeyBjb2xvcjojMDUxNDFmOyBjb2xvcjojMDUxNDFmOyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlIC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgeyBmaWx0ZXI6YWxwaGEob3BhY2l0eT0wKTsgb3BhY2l0eTowOyB9IGRpdiNteWNhcm91c2VsZGl2IC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIsIGRpdi51c2VkLWRldGFpbHMgLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciB7IHJpZ2h0OjQwcHg7IHRvcDoxNXB4OyB9IC5oZWFkZXItc29jaWFsIC5sYW5ndWFnZUJhciB7IG1hcmdpbi1yaWdodDoyNXB4OyB9IC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgeyBmb250LXNpemU6dmFyKC0tZnM1KTsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjI4cHg7IGhlaWdodDoyOHB4OyB9IC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgaS5mYSB7IGNvbG9yOnRyYW5zcGFyZW50OyB9IC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgaS5mYXIgeyBjb2xvcjojYWViNWJlOyBmb250LXdlaWdodDoxMDA7IH0gLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlci5mYXYtbmF2LWhhcy12ZWhpY2xlcyAuZmEtbGF5ZXJzIGkuZmEsIC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIuZmF2LW5hdi1oYXMtdmVoaWNsZXMgLmZhLWxheWVycyBpLmZhciB7IGN1cnNvcjpwb2ludGVyOyBjb2xvcjojMDUxNDFmOyBjb2xvcjojMDUxNDFmOyB9IC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIgaS5mYXIgc3Bhbi5mYXYtbmF2LWNvdW50IHsgcG9zaXRpb246YWJzb2x1dGU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRvcDo3cHg7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgY29sb3I6I0ZGRjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0OjYwMDsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1tZW51KSAhaW1wb3J0YW50OyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIHsgZGlzcGxheTpub25lOyB9IC5oZWFkZXItc29jaWFsIGRpdi5sYW5ndWFnZUJhci5pc0tpYVNoaWZ0IHsgbWFyZ2luLXJpZ2h0OjA7IH0gLmxhbmd1YWdlQmFyIC5kMmMtZmF2cy1uYXYtd3JhcHBlci5pc0tpYVNoaWZ0IHsgZm9udC1zaXplOjAuODc1cmVtOyB3aWR0aDoyMHB4OyBsZWZ0OjA7IHRvcDo1cHg7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIuaXNLaWFTaGlmdCBpIHsgcGFkZGluZzowOyBtYXJnaW4tcmlnaHQ6OHB4OyBmb250LXNpemU6MS4yNXJlbTsgfSAubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyLmZhdi1uYXYtaGFzLXZlaGljbGVzLmlzS2lhU2hpZnQgLmZhLWxheWVycyBpLmZhLCAubGFuZ3VhZ2VCYXIgZGl2LmQyYy1mYXZzLW5hdi13cmFwcGVyLmZhdi1uYXYtaGFzLXZlaGljbGVzLmlzS2lhU2hpZnQgLmZhLWxheWVycyBpLmZhciB7IGN1cnNvcjpwb2ludGVyOyBjb2xvcjojRkZGOyB9IC5sYW5ndWFnZUJhciBkaXYuZDJjLWZhdnMtbmF2LXdyYXBwZXIuaXNLaWFTaGlmdCBpLmZhciBzcGFuLmZhdi1uYXYtY291bnQgeyBwYWRkaW5nOjA7IGZvbnQtc2l6ZTowLjY3NXJlbTsgdG9wOjRweDsgY29sb3I6IzAwMDsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyLmlzS2lhU2hpZnQgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIHsgdG9wOjIwcHg7IH0KLyoqIC9jc3MvZmF2b3JpdGVzLmxvYWQuY3NzICoqLwpib2R5LmlzRnVsbFdpZHRoUGFnZSBkaXYuTWFpbkJveExheWVyIGRpdi5Cb3hDaGlsZC0yIGRpdi5TbGlkZXJPdXRlckJveDpob3ZlciAuZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyLCBib2R5LmlzRnVsbFdpZHRoUGFnZSAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3g6aG92ZXIgLmRpdkNhclNpbmdsZUlubmVyQm94IC5kMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIsIGJvZHkuaXNGdWxsV2lkdGhQYWdlIC5jYXJCb3hPdXRlcjpob3ZlciAuY2FySW1hZ2UgLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciwgYm9keS5pc0Z1bGxXaWR0aFBhZ2UgLmQyYy1mYXZzLXRyaWdnZXItd3JhcHBlci5kMmMtZmF2cy1zZWxlY3RlZCB7IGZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7IG9wYWNpdHk6MTsgLXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMzUwbXMgZWFzZS1pbi1vdXQ7IC1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDM1MG1zIGVhc2UtaW4tb3V0OyAtbXMtdHJhbnNpdGlvbjpvcGFjaXR5IDM1MG1zIGVhc2UtaW4tb3V0OyAtby10cmFuc2l0aW9uOm9wYWNpdHkgMzUwbXMgZWFzZS1pbi1vdXQ7IHRyYW5zaXRpb246b3BhY2l0eSAzNTBtcyBlYXNlLWluLW91dDsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24td3JhcHBlciB7IHdpZHRoOjQwMHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MDsgdG9wOjI1cHg7IHotaW5kZXg6OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojRkZGOyBib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTU7IGJvcmRlci1ib3R0b206bm9uZTsgLXdlYmtpdC1ib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwwLjE4KTsgYm94LXNoYWRvdzowIDZweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xOCk7IG92ZXJmbG93OmhpZGRlbjsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24td3JhcHBlcjpob3ZlciwgLmxhbmd1YWdlQmFyIC5kMmMtZmF2cy1uYXYtd3JhcHBlcjpub3QoLmQyYy1mYXZzLW5hdi1kaXNhYmxlZCk6aG92ZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIHsgZGlzcGxheTpibG9jazsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24td3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWlubmVyQm94IHsgd2lkdGg6MTAwJTsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24td3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWlubmVyQm94IGEgeyB3aWR0aDoxMDAlOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW07IH0gLmxhbmd1YWdlQmFyIC5kMmMtZmF2cy1uYXYtd3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pbm5lckJveCBhIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taXRlbSB7IHBhZGRpbmc6MTBweDsgd2lkdGg6Y2FsYygxMDAlIC0gMjBweCk7IGRpc3BsYXk6YmxvY2s7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTU7IHRleHQtYWxpZ246bGVmdDsgbWluLWhlaWdodDozMHB4OyB9IC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taW5uZXJCb3ggYSAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWl0ZW06aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZjM7IH0gLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taXRlbS1zdWIsIC5sYW5ndWFnZUJhciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taW5uZXJCb3ggYSAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWl0ZW0tc3ViIHsgY29sb3I6I2ExYTFhMTsgZm9udC1zaXplOjAuN3JlbTsgZm9udC13ZWlnaHQ6MTAwOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5kMmMtZmF2cy1uYXYtZGQtd3JhcHBlci5kMmMtZmF2cy1uYXYtZGlzYWJsZWQgLm1lbnVFeHBhbmQgeyBkaXNwbGF5Om5vbmU7IH0gLmQyYy1mYXZzLW5hdi1kZC13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24taXRlbS1zdWIgeyBtYXJnaW4tdG9wOjVweDsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24td3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWlubmVyQm94IGEgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pdGVtIGltZyB7IG1heC13aWR0aDo1MHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAubGFuZ3VhZ2VCYXIgLmQyYy1mYXZzLW5hdi13cmFwcGVyIC5kMmMtZmF2cy1uYXYtZHJvcGRvd24td3JhcHBlciAuZDJjLWZhdnMtbmF2LWRyb3Bkb3duLWlubmVyQm94IGEgLmQyYy1mYXZzLW5hdi1kcm9wZG93bi1pdGVtIGRpdiB7IGZsb2F0Om5vbmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5kMmMtZmF2cy1uYXYtZGQtd3JhcHBlciAuZDJjLWZhdnMtbmF2LXdyYXBwZXIgaS5mYSB7IGZvbnQtc2l6ZTowLjg1cmVtOyB9Ci8qKiAvY3NzL3ZlaGljbGVGZWF0dXJlU3VtbWFyeS5wcmVsb2FkLmNzcyAqKi8KLnZkcEZlYXR1cmVTdW1tYXJ5eyAtLXN3aXRjaC1icDo1MHJlbTsgYm9yZGVyLWNvbG9yOiNjY2NjY2M7IGNsZWFyOmJvdGg7IH0gLnZzZmlJdGVtU3VtbWFyeSB7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEuMnJlbTsgfSAudmRwRmVhdHVyZUNvbnN1bXB0aW9ueyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyB9IC52ZHBGZWF0dXJlQ29uc3VtcHRpb24gPiAqeyBmbGV4OjEgMSAzMSU7IG1pbi13aWR0aDo5cmVtOyB9Ci8qKiAvY3NzL2tjLmZhYi5jc3MgKiovCiNjb250YWluZXJGbEIgeyBtYXJnaW46MDsgd2lkdGg6NjBweDsgaGVpZ2h0OjYwcHg7IHBvc2l0aW9uOmZpeGVkO2JvdHRvbToyMHB4O3JpZ2h0OjEwcHg7fSAjY2lyY2xlRmxCIHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMCU7IHBhZGRpbmctYm90dG9tOjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAjY2lyY2xlRmxCIHRleHQgeyBmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLCBBcmlhbDsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB9ICNjaXJjbGVGbEIgc3ZnIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgLW1vei1hbmltYXRpb24tbmFtZTpyb3RhdGU7IC1tcy1hbmltYXRpb24tbmFtZTpyb3RhdGU7IC1vLWFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgYW5pbWF0aW9uLW5hbWU6cm90YXRlOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjo1czsgLW1vei1hbmltYXRpb24tZHVyYXRpb246NXM7IC1tcy1hbmltYXRpb24tZHVyYXRpb246NXM7IC1vLWFuaW1hdGlvbi1kdXJhdGlvbjo1czsgYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7IC1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgLW1zLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7IC1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7IC1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7IC1tcy1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgLW8tYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyB9IEAtd2Via2l0LWtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDApOyB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSBALW1vei1rZXlmcmFtZXMgcm90YXRlIHsgZnJvbSB7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gQC1tcy1rZXlmcmFtZXMgcm90YXRlIHsgZnJvbSB7IC1tcy10cmFuc2Zvcm06cm90YXRlKDApOyB9IHRvIHsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9IEAtby1rZXlmcmFtZXMgcm90YXRlIHsgZnJvbSB7IC1vLXRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyAtby10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSBAa2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyB0cmFuc2Zvcm06cm90YXRlKDApOyB9IHRvIHsgdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gI3NpZ25GbEJ7IGNvbG9yOiNmZmY7cG9zaXRpb246cmVsYXRpdmU7dG9wOi00N3B4O2xlZnQ6MTlweDtmb250LXNpemU6Mi4xODhyZW0gOyB6LWluZGV4Ojk5OTk5OTsgfQovKiogL2Nzcy9tdWx0aUZvcm1Qb3B1cC5jc3MgKiovCi5tdWx0aWZvcm1fZm9ybSBsYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOi41cmVtO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41O2NvbG9yOiMyMTI1Mjk7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtd2VpZ2h0OmJvbGR9Lm11bHRpZm9ybV9mb3Jte21hcmdpbi1sZWZ0OjQwcHh9Lm11bHRpZm9ybV9jaXJjbGUtbGluZXtoZWlnaHQ6MXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjEzcHg7ZmxvYXQ6bGVmdH0ubXVsdGlmb3JtX3RleHR7ZGlzcGxheTpibG9jaztjbGVhcjpib3RoO3BhZGRpbmctdG9wOjIwcHg7Zm9udC13ZWlnaHQ6NjAwO3BhZGRpbmctYm90dG9tOjIwcHh9Lm11bHRpZm9ybV9jaXJjbGV7YmFja2dyb3VuZDojZmZmO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czozMHB4O2JvcmRlcjoxcHggc29saWQgI2NjYztwYWRkaW5nOjVweCAwIDAgMDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6I2NjYztmb250LXNpemU6MC44MTNyZW0gO21hcmdpbjowIGF1dG99Lm11bHRpZm9ybV9jaXJjbGUxe2JhY2tncm91bmQ6IzMzMztjb2xvcjojZmZmfS5tdWx0aWZvcm1fYm9keXtwYWRkaW5nOjMwcHh9Lm11bHRpZm9ybV9mb290ZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztwYWRkaW5nOjI1cHg7dGV4dC1hbGlnbjpyaWdodDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubXVsdGlmb3JtX2xpbmVfd3JhcHBlcnttYXJnaW46MCBhdXRvO3dpZHRoOjMwMHB4O2hlaWdodDozMHB4O2JvcmRlci1yYWRpdXM6M3B4fS5tdWx0aWZvcm1fY2lyY2xlX3dyYXBwZXIye3dpZHRoOjExN3B4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTowLjg3NXJlbSA7ZmxvYXQ6bGVmdDttYXJnaW4tdG9wOi0zMHB4fS5tdWx0aWZvcm1fY2lyY2xlX3dyYXBwZXJ7d2lkdGg6MjM1cHg7bWFyZ2luOjAgYXV0b30jbXVsdGlmb3JtX2Zvcm1Xe2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLXJhZGl1czozcHg7Y29sb3I6IzQxNDE0MX0ubXVsdGlmb3JtX2NpcmNsZVRleHRfd3JhcHBlcnt3aWR0aDoyMDBweDttYXJnaW46MCBhdXRvfS5tdWx0aWZvcm1fc3RlcDJ7ZGlzcGxheTpub25lfS5tdWx0aWZvcm1JbWFnZTF7cG9zaXRpb246cmVsYXRpdmV9Lm11bHRpZm9ybUltYWdlVGV4dDF7cG9zaXRpb246YWJzb2x1dGU7Y29sb3I6I2ZmZjt0b3A6MTA1cHg7bGVmdDowO3JpZ2h0OjA7bWFyZ2luOmF1dG87dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEuMzc1cmVtIDt3aWR0aDoyNzBweH0ucmV2ZWFsLW1vZGFsIC5tdWx0aWZvcm1JbWFnZVRleHQxIHNwYW57bWFyZ2luOjA7cGFkZGluZzowO2NvbG9yOiNmZmY7ZGlzcGxheTpibG9jaztmb250LXNpemU6Mi4wNjNyZW0gO2ZvbnQtd2VpZ2h0OjcwMH0ubXVsdGlmb3JtSW1hZ2Uye3Bvc2l0aW9uOnJlbGF0aXZlfS5tdWx0aWZvcm1JbWFnZVRleHQye3Bvc2l0aW9uOmFic29sdXRlO2NvbG9yOiNmZmY7dG9wOjExNXB4O2xlZnQ6MDtyaWdodDowO21hcmdpbjphdXRvO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxLjM3NXJlbSA7d2lkdGg6MjcwcHh9LnJldmVhbC1tb2RhbCAubXVsdGlmb3JtSW1hZ2VUZXh0MiBzcGFue21hcmdpbjowO3BhZGRpbmc6MDtjb2xvcjojZmZmO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjIuMDYzcmVtIDtmb250LXdlaWdodDo3MDB9Lm11bHRpZm9ybUltYWdlVGV4dDFfbXtwb3NpdGlvbjphYnNvbHV0ZTtjb2xvcjojZmZmO3RvcDo3MHB4O2xlZnQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MC44MTNyZW0gO3dpZHRoOjE4NHB4fS5tdWx0aWZvcm1JbWFnZVRleHQxX20gc3BhbnttYXJnaW46MCAhaW1wb3J0YW50O3BhZGRpbmc6MCAhaW1wb3J0YW50O2NvbG9yOiNmZmYgIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7Zm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnR9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KSxvbmx5IHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6NDgwcHgpey5tdWx0aWZvcm1fZm9ybXttYXJnaW4tbGVmdDoxNXB4fS5tdWx0aWZvcm1fY2lyY2xlLWxpbmV7d2lkdGg6MTAwJX0ubXVsdGlmb3JtX2xpbmVfd3JhcHBlcnt3aWR0aDoyNDVweH19Ci8qKiAvY3NzL2NyZWRpdFNjb3JlUG9wdXAuY3NzICoqLwojY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lcnsgYmFja2dyb3VuZDp3aGl0ZTsgcGFkZGluZzozMHB4IDIwcHggMzRweDsgbWF4LXdpZHRoOmNhbGMoMTAwdncgLSA0MHB4KTsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFueyBtYXJnaW46MDsgcGFkZGluZzowOyBmb250LXNpemU6MS4xMjVyZW0gOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVHcmVlbkNvbG9yeyBjb2xvcjojNGQ4ZjE0OyBmb250LXdlaWdodDpib2xkOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVCb2xkeyBmb250LXdlaWdodDpib2xkOyB9IC5jcmVkaXRTY29yZV9idG57IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQ6IzA1MTQxZjsgfSAuY3JlZGl0U2NvcmVJbWFnZXsgd2lkdGg6MTAwJTsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVUaXRsZUNvbnRhaW5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlVGl0bGV7IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVJbWFnZUNvbnRhaW5lcnsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZVRpdGxlRnJlZXsgZm9udC1zaXplOjIuODEzcmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZVRpdGxlU2NvcmV7IGZvbnQtc2l6ZToxLjgxM3JlbSA7IHRleHQtc2hhZG93OjEuNHB4IDA7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgaW5wdXR7IGhlaWdodDozMnB4OyBmb250LXNpemU6MC44MTNyZW0gOyB3aWR0aDoxMzVweDsgcGFkZGluZzowIDEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlOyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyICNjcmVkaXRTY29yZUVtYWlseyB3aWR0aDoyOTZweDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAjY3JlZGl0U2NvcmVBZGRyZXNzeyB3aWR0aDoyOTZweDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVfYnRueyB3aWR0aDozMjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGhlaWdodDo0MHB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUV4dHJhVGV4dHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlQ29uc2VudE1lc3NhZ2V7IGNvbG9yOiNiM2IzYjM7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjJweDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVJbWFnZXsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmOyB9IC5wYWMtY29udGFpbmVyIHsgei1pbmRleDoxMDAwMDIxOyB9Ci8qKiAvY3NzL25lYkNhbC9uZWJDYWwuY3NzICoqLwoubmViQ2FsICogeyBvdmVyZmxvdzpoaWRkZW47IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGxpbmUtaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3IgOndoaXRlOyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0LCAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyBjdXJzb3I6cG9pbnRlcjt9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0IHsgZmxvYXQ6bGVmdDsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdDpiZWZvcmUgeyBjb250ZW50Oic8JzsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzUyM2EyOTsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyBmbG9hdDpyaWdodDsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQ6YmVmb3JlIHsgY29udGVudDonPic7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiM1MjNhMjk7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWxhYmVsIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG92ZXJmbG93OnZpc2libGU7IHdpZHRoOjE0NnB4OyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlIHsgY3Vyc29yOnBvaW50ZXI7IH0gLm5lYkNhbCAuY2FsLWJvZHkgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubmViQ2FsIC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgfSAubmViQ2FsIC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdiB7IGZsb2F0OmxlZnQ7IH0gLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGguY2FsLXBpY2thYmxlIC5jYWwtcm93IGRpdiwgLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2IHsgY3Vyc29yOnBvaW50ZXI7fSAubmViQ2FsIHsgY3Vyc29yOmRlZmF1bHQ7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwMDAwMjA7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoyOTBweDsgaGVpZ2h0OjIxNXB4OyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojNTIzYTI5OyB9IC5uZWJDYWwuaW5saW5lIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtd3JhcHBlciB7IHBhZGRpbmc6MCA0cHg7IGJvcmRlcjpzb2xpZCAxcHggI2RkZGVkOTsgLW1vei1ib3gtc2hhZG93OjBweCAwcHggNHB4IDJweCAjZDhkOGQ4Oy13ZWJraXQtYm94LXNoYWRvdzowcHggMHB4IDRweCAycHggI2Q4ZDhkODtib3gtc2hhZG93OjBweCAwcHggNHB4IDJweCAjZDhkOGQ4O30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIHsgaGVpZ2h0OjI1cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCwgLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyB3aWR0aDoxMnB4OyBoZWlnaHQ6MTNweDsgbWFyZ2luOjZweCA3cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCB7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdDpob3ZlciB7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQgeyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0OmhvdmVyIHsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbCB7IGxpbmUtaGVpZ2h0OjI1cHg7IGNvbG9yOiM1MjNhMjk7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlIHsgY29sb3I6IzA4YTUzYzsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IHsgaGVpZ2h0OjE4MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciB7IHdpZHRoOjI5MHB4OyBoZWlnaHQ6MTgwcHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IHsgd2lkdGg6MjkwcHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdy5jYWwtb2RkIGRpdiB7IG1hcmdpbjo1cHg7IGJhY2tncm91bmQtY29sb3I6I2RlZGVkZTtib3JkZXI6MXB4IHNvbGlkICNkOWQ5ZDk7fSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93LmNhbC1ldmVuIGRpdiB7IG1hcmdpbjo1cHg7IGJhY2tncm91bmQtY29sb3I6I2YwZjBmMDtib3JkZXI6MXB4IHNvbGlkICNlY2VjZWM7fSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgLmNhbC1yb3cgZGl2LmNhbC10b2RheSB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtc2VsZWN0ZWQgeyBtYXJnaW4tbGVmdDo1cHg7IG1hcmdpbi1yaWdodDo1cHg7IGhlaWdodDoyMHB4O2ZvbnQtc2l6ZToxcmVtIDtmb250LXdlaWdodDo2MDA7IGNvbG9yOiNmZmYgIWltcG9ydGFudDt0ZXh0LXNoYWRvdzoxcHggMXB4IDBweCAjMzlhNjYzOyBiYWNrZ3JvdW5kLWNvbG9yOiM1NGJiMDA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDstbW96LWJvcmRlci1yYWRpdXM6NXB4O2JvcmRlci1yYWRpdXM6NXB4O30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtbm9uLXNlbGVjdGFibGUsIC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYuY2FsLW5vbi1zZWxlY3RhYmxlOmhvdmVyIHsgY29sb3I6I2JkYmRiZCAhaW1wb3J0YW50OyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cuYSBkaXYgeyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyBjb2xvcjojMzc5YjU3ICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgeyBoZWlnaHQ6MjZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdiB7IG1hcmdpbi10b3A6M3B4OyB3aWR0aDo0MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1zZWxlY3RlZCB7IG1hcmdpbi10b3A6M3B4OyB3aWR0aDozMHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1maXJzdCB7IHBhZGRpbmctbGVmdDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1sYXN0IHsgcGFkZGluZy1yaWdodDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cgZGl2LmNhbC1vdXRzaWRlIHsgY29sb3I6I2RlZGVkZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93LmNhbC1ldmVuIGRpdi5jYWwtb3V0c2lkZSB7IGNvbG9yOiNjZWNlY2U7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdy5hIGRpdiB7IGNvbG9yOiM5YzljOWM7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyB7IGhlaWdodDo0MnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2IHsgd2lkdGg6ODBweDtsaW5lLWhlaWdodDoyN3B4OyBoZWlnaHQ6MjdweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdi5jYWwtZmlyc3QgeyBtYXJnaW4tbGVmdDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2LmNhbC1sYXN0IHsgbWFyZ2luLXJpZ2h0OjE2cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXYuY2FsLXNlbGVjdGVkIHsgYmFja2dyb3VuZC1jb2xvcjojNTRiYjAwO30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aC5jYWwtcGlja2FibGUgLmNhbC1yb3cgZGl2OmhvdmVyLCAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdjpob3ZlciB7IGNvbG9yOiNiMmNmZTE7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtZm9vdGVyIHsgaGVpZ2h0OjRweDsgfQovKiogL2Nzcy9maW5hbmNlX211bHRpc3RlcC5jc3MgKiovCiNmaW5hbmNlX211bHRpc3RlcF9mb3JteyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3J7IHRleHQtYWxpZ246bGVmdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBoMnsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGgzeyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IG1hcmdpbi1ib3R0b206MTVweDsgd2lkdGg6MTAwJTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgYm90dG9tOjA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9ueyBwYWRkaW5nOjE3cHggNjVweCAxNXB4IDY1cHg7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6NDAwOyB3aWR0aDoyODBweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgY29sb3I6I0MwQzBDMDsgYm9yZGVyOm5vbmU7IGN1cnNvcjpwb2ludGVyOyBib3JkZXI6MXB4IHNvbGlkICNDMEMwQzA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uLmlzVmFsaWR7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA1MTQxZjsgYm9yZGVyOjFweCBzb2xpZCAjMDAwMDAwOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InJhZGlvIl17IG9wYWNpdHk6MDsgd2lkdGg6MDsgaGVpZ2h0OjA7IHBvc2l0aW9uOmFic29sdXRlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGxhYmVsLnJhZGlvX2xhYmVsIHsgYm94LXNpemluZzpib3JkZXItYm94OyBwYWRkaW5nOjE1cHggMTBweDsgY3Vyc29yOnBvaW50ZXI7IG9wYWNpdHk6MTsgdHJhbnNpdGlvbjphbGwgMXMgZWFzZS1pbi1vdXQ7IG1hcmdpbi1ib3R0b206NXB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7IGJvcmRlci1ib3R0b20td2lkdGg6NXB4OyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS4xMjVyZW0gOyBtaW4taGVpZ2h0OjEwMnB4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0icmFkaW8iXTpjaGVja2VkIH4gbGFiZWwucmFkaW9fbGFiZWwgeyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGJvcmRlci1ib3R0b20td2lkdGg6NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGxhYmVsLnJhZGlvX2xhYmVsMiB7IGJvcmRlcjoxcHggc29saWQgcmdiYSgyNTAsIDI1MCwgMjUwLCAwLjE1KTsgYm94LXNpemluZzpib3JkZXItYm94OyBwYWRkaW5nOjEwcHggNXB4IDVweCA1cHg7IGN1cnNvcjpwb2ludGVyOyBvcGFjaXR5OjE7IHRyYW5zaXRpb246YWxsIDFzIGVhc2UtaW4tb3V0OyBtYXJnaW4tYm90dG9tOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWluLWhlaWdodDo0NXB4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0icmFkaW8iXTpjaGVja2VkIH4gbGFiZWwucmFkaW9fbGFiZWwyIHsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fZGl2eyB3aWR0aDo0NSU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2Rpdi5yZF93aWRleyB3aWR0aDo0NiU7IG1pbi1oZWlnaHQ6ODhweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmFkaW9fZGl2Om50aC1vZi10eXBlKG9kZCl7IGZsb2F0OmxlZnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2RpdjpudGgtb2YtdHlwZShldmVuKXsgZmxvYXQ6cmlnaHQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0idGV4dCJdeyB3aWR0aDoyOTBweDsgaGVpZ2h0OjQwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS4yNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0ibnVtYmVyIl06bm90KC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50KXsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjZGRkZGRkOyB3aWR0aDoxMjBweDsgYm9yZGVyLXJpZ2h0Om5vbmU7IG1hcmdpbjowIDAgMTBweDsgbGluZS1oZWlnaHQ6MzBweDsgaGVpZ2h0Ojc1cHg7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5udW1iZXItdHlwZS1sYWJlbHsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjZGRkZGRkOyB3aWR0aDoxMjBweDsgY29sb3I6IzI1MjUyNTsgaGVpZ2h0Ojc1cHg7IGxpbmUtaGVpZ2h0OjM1cHg7IGZvbnQtc2l6ZToxLjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5udW1iZXItdHlwZS1kaXZ7IGZsb2F0OmxlZnQ7IGxlZnQ6MTAlOyBtYXJnaW4tdG9wOjIwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyeyBtYXJnaW4tdG9wOjEwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX3NlbGVjdF9jb250YWluZXJfZGl2eyB3aWR0aDoxMDAlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyIHNlbGVjdHsgY29sb3I6IzNjMzgzNjsgYm9yZGVyOjJweCBzb2xpZCAjMDAwMDAwOyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzoxMHB4IDEwcHg7IGZvbnQtc2l6ZToxcmVtIDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyB3aWR0aDo5MHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lcl9zZWxlY3R7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDo0MCU7IG1hcmdpbjphdXRvOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyX3NlbGVjdDphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIC4zcyBsaW5lYXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnN0ZXAyNHNlbGVjdHsgbWFyZ2luLXRvcDoxMHB4OyBwYWRkaW5nOjAuNXJlbTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czowLjVyZW07IGJvcmRlcjoxcHggc29saWQgI2RkZDsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOjAuODc1cmVtIDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBmb250LXdlaWdodDo0MDA7IHdpZHRoOjEwMCU7IH0gLnBhYy1jb250YWluZXIgeyB6LWluZGV4OjEwMDAwMjE7IH0gaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IG1hcmdpbjowOyB9ICNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXJ7IG1heC13aWR0aDpjYWxjKDEwMHZ3IC0gMjBweCk7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI211bHRpc3RlcC1tdWx0aWFkZHJlc3Mgc2VsZWN0IHsgbWF4LXdpZHRoOjI4MHB4OyBtYXJnaW46MCBhdXRvOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIGxhYmVsIHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgbWFyZ2luLWJvdHRvbToyNXB4OyBmb250LXNpemU6MS41cmVtIDsgZGlzcGxheTpibG9jazsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyAjbXV0bGlBZGRyZXNzU3VibWl0IHsgZGlzcGxheTpub25lOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRzeyBkaXNwbGF5OmlubGluZS1mbGV4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2eyBtYXJnaW46MjBweCA1cHggMjBweCA1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgbGFiZWx7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2JpcnRoZGF0ZV9pbnB1dF9kaXYgaW5wdXRbdHlwZT0ibnVtYmVyIl17IHdpZHRoOjgwcHg7IGhlaWdodDo1MHB4OyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpub25lOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2IGlucHV0W3R5cGU9Im51bWJlciJdLmJpcnRoeWVhcnsgd2lkdGg6MTAwcHg7IH0gLnJldmVhbC1tb2RhbC5maW5hbmNlX2JhY2tncm91bmRfaW1hZ2V7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3BvcHVwcy9maW5hbmNlcG9wdXAtYmctbW9iaWxlLndlYnAnKTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZUljb25EaXZ7IHBvc2l0aW9uOnJlbGF0aXZlOyBoZWlnaHQ6MTM1cHg7IG1hcmdpbi1ib3R0b206MTBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZUljb25EaXYgLmZpbmFuY2VDYWxjeyBjb2xvcjojNGViYTU5OyBmb250LXNpemU6MTAwcHg7IGxlZnQ6MzUlOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZUljb25EaXYgLmZpbmFuY2VDYXJ7IGNvbG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxMDBweDsgbGVmdDozMyU7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NTBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZW1wbG95bWVudFRleHRMYWJlbHsgd2lkdGg6NDUlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5lbXBsb3ltZW50VGV4dExhYmVsMnsgbWFyZ2luLXJpZ2h0OjI1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmVtcGxveW1lbnRUZXh0eyB3aWR0aDo2MCUhaW1wb3J0YW50OyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBoZWlnaHQ6MjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbdHlwZT0ibnVtYmVyIl0uZW1wbG95bWVudFN0YXR1c1RpbWV7IHdpZHRoOjUwcHg7IGhlaWdodDo1MHB4OyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGJvcmRlci1yYWRpdXM6NXB4OyBhbGlnbi1zZWxmOmNlbnRlcjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZW1wbG95bWVudEFkZGVkSW5mb3sgd2lkdGg6OTUlOyBoZWlnaHQ6NTBweDsgcmVzaXplOm5vbmU7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB9IC5mYWRlLWVudGVyLCAuZmFkZS1sZWF2ZSB7IG9wYWNpdHk6MDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm17IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBsYWJlbHsgbWFyZ2luLWJvdHRvbToxNXB4OyBwYWRkaW5nOjA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgcG9zaXRpb246cmVsYXRpdmU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGxhYmVsLnBheW1lbnRWYWx1ZUxhYmVseyBqdXN0aWZ5LWNvbnRlbnQ6dW5zZXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBzcGFueyBmb250LXNpemU6MWVtOyB3aWR0aDo1MCU7IHRleHQtYWxpZ246bGVmdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIGlucHV0eyB0ZXh0LWFsaWduOmxlZnQ7IGhlaWdodDoyNXB4OyBmb250LXNpemU6MWVtOyBjb2xvcjpibGFjazsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIHNlbGVjdHsgaGVpZ2h0OjI4cHg7IGNvbG9yOmJsYWNrOyBmb250LXNpemU6MWVtOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmVzdGltYXRlZFRleHR7IGZvbnQtd2VpZ2h0OjcwMDsgd2lkdGg6NzAlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLm91dHB1dHByaWNlLXR4dHsgd2lkdGg6MzUlOyBtYXJnaW4tbGVmdDozMHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnRheGVUZXh0eyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyBib3R0b206LTEwcHg7IHdpZHRoOmZpdC1jb250ZW50OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmlucHV0IHsgYm9yZGVyOjFweCBzb2xpZCAjOTk5OyBiYWNrZ3JvdW5kOiNlZWU7IHBhZGRpbmc6MC4yNXJlbTsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB3aWR0aDptaW4oNTAlLDZyZW0pOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBkaXYuZG9sbGFyU3BhbnsgZGlzcGxheTpjb250ZW50czsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIGRpdi5kb2xsYXJTcGFuIC5pbnB1dHsgcGFkZGluZy1sZWZ0OjEycHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGRpdi5kb2xsYXJTcGFuOjpiZWZvcmV7IGNvbnRlbnQ6IiQiOyBmb250LXNpemU6MWVtOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6ODVweDsgdG9wOjQ5JTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTQzJSk7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX2NvbnNlbnRfdGV4dF9kaXZ7IG92ZXJmbG93LXk6c2Nyb2xsOyBoZWlnaHQ6NDQwcHg7IHdpZHRoOjEwMCU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLm11bHRpc3RlcFBheW1lbnRWZWhpY2xleyBmb250LXNpemU6aW5oZXJpdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgbWF4LWhlaWdodDoxNzVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyeyBoZWlnaHQ6Mjc1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIC5sb2FuYW1vdW50LCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gLmludGVyZXN0cmF0ZXsgYm9yZGVyOjA7IGJhY2tncm91bmQtY29sb3I6dW5zZXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGlucHV0LCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gc2VsZWN0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlci1yYWRpdXM6MC4zcmVtOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5tdWx0aXN0ZXBJbml0aWFsVGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi10b3A6MDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBzcGFuLmgyLWFsdHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTVweDsgZm9udC1zaXplOmluaGVyaXQ7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyBtYXJnaW4tbGVmdDowOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIHNwYW4uaDMtYWx0eyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZGlzcGxheTpibG9jazsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMi1tb2IpOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5oaWRkZW5JbnB1dHsgZGlzcGxheTpub25lOyB9IC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2tEaXZ7IHBvc2l0aW9uOmFic29sdXRlOyBtYXJnaW4tdG9wOjEwcHg7IHJpZ2h0OjBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkluaXRpYWx7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDoxMDVweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IHBhZGRpbmc6NHB4IDJweCA1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbHsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBoZWlnaHQ6MzVweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjEwNXB4IWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6NXB4IDJweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIGhlaWdodD0nMjhweCcgd2lkdGg9Jzg1cHgnPjx0ZXh0IHg9JzYnIHk9JzIxJyBmaWxsPScnIGZvbnQtc2l6ZT0nMTYnIGZvbnQtZmFtaWx5PSdhcmlhbCc+JCIpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluSW5pdGlhbHsgZm9udC1zaXplOjAuNjI1cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBoZWlnaHQ6MzVweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjk2cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBwYWRkaW5nOjVweCAycHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWx7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDo5NnB4IWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6NXB4IDJweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIGhlaWdodD0nMjhweCcgd2lkdGg9Jzg1cHgnPjx0ZXh0IHg9JzYnIHk9JzIxJyBmaWxsPScnIGZvbnQtc2l6ZT0nMTYnIGZvbnQtZmFtaWx5PSdhcmlhbCc+JCIpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZvcm1hdC1wcmljZXsgbWFyZ2luLWJvdHRvbTp1bnNldDsgbWFyZ2luLWxlZnQ6MC43cmVtOyB9IDppcyguRU5HTElTSCxbZGF0YS1sYW5nPSJlbiJdKSBsYWJlbCAuZm9ybWF0LXByaWNleyBtYXJnaW4tcmlnaHQ6MC4zcmVtOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC52d0NvbnNlbnRUZXh0eyBoZWlnaHQ6MTIwcHg7IG92ZXJmbG93LXk6c2Nyb2xsOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHBhZGRpbmc6MTBweCAxMHB4OyBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBoMXsgZm9udC1zaXplOjEuMjVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTZweCAwICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgaDJ7IGZvbnQtc2l6ZToxcmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyBtYXJnaW46MjRweCAwIDEwcHggMCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IHB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDo0MDAgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MS41ICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTJweCAwICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246anVzdGlmeSAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IHVseyBtYXJnaW46OHB4IDAgMTZweCAyNHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IGxpeyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NDAwICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDEycHggMCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmp1c3RpZnkgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBzdHJvbmd7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IGF7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgIWltcG9ydGFudDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAudndDb25zZW50RGl2c3sgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MC43NXJlbSA7IHRleHQtYWxpZ246bGVmdDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucmVudE9yT3duUXVlc3Rpb257IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjIwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJlbnRPck93blF1ZXN0aW9uLnZ3UmVudE9yT3dueyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDo1cHg7IH0gLmRyVmlld0Rpc2NsYWltZXJMaW5rIHsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC43NXJlbSA7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLmRyRGlzY2xhaW1lckRyYXdlciB7IHBvc2l0aW9uOmZpeGVkOyBsZWZ0OjA7IGJvdHRvbTotMzAwcHg7IHdpZHRoOjEwMCU7IGhlaWdodDoyMDBweDsgYmFja2dyb3VuZDojZmZmOyBib3gtc2hhZG93OjAgLTJweCAxMHB4IHJnYmEoMCwwLDAsMC4zKTsgdHJhbnNpdGlvbjpib3R0b20gMC4zcyBlYXNlOyBkaXNwbGF5Om5vbmU7IG92ZXJmbG93OmF1dG87IH0gLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIHsgYm90dG9tOjA7IH0gLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5kckRpc2NsYWltZXJDb250ZW50IHsgcGFkZGluZzoyMHB4OyBvdmVyZmxvdy15OmF1dG87IH0gLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5jbG9zZURSRGlzY2xhaW1lckRyYXdlciwgLmRyRGlzY2xhaW1lckRyYXdlci5vcGVuIC5jbG9zZURSQ2FsY3VsYXRvckRpc2NsYWltZXJEcmF3ZXIgeyBwYWRkaW5nOjEwcHg7IGN1cnNvcjpwb2ludGVyOyB9Ci8qKiAvY3NzL2NvbnRhY3RQb3B1cC5jc3MgKiovCiNjb250YWN0cG9wdXAgeyB3aWR0aDo1OThweDsgbWluLXdpZHRoOjIzMHB4OyB9ICNjb250YWN0cG9wdXAubW9iaWxlIHsgd2lkdGg6MTAwJTsgfSAuY29udGFjdHBvcHVwLm1vYmlsZSB0YWJsZS5qcVRyYW5zZm9ybVRleHRhcmVhLCAuY29udGFjdHBvcHVwLm1vYmlsZSB0YWJsZS5qcVRyYW5zZm9ybVRleHRhcmVhIHRleHRhcmVhLmpxdHJhbnNmb3JtZG9uZSB7IHdpZHRoOjEwMCU7IH0gLmNvbnRhY3Rwb3B1cC5tb2JpbGUgdGFibGUuanFUcmFuc2Zvcm1UZXh0YXJlYSB0ZC5qcVRyYW5zZm9ybVRleHRhcmVhLW1sLCAuY29udGFjdHBvcHVwLm1vYmlsZSB0YWJsZS5qcVRyYW5zZm9ybVRleHRhcmVhIHRkLmpxVHJhbnNmb3JtVGV4dGFyZWEtbXIgeyBkaXNwbGF5Om5vbmU7IH0gI2NvbnRhY3Rwb3B1cCAqIHsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNjb250YWN0cG9wdXAucmV2ZWFsLW1vZGFsIHsgcGFkZGluZzowOyB9ICNjb250YWN0cG9wdXAucmV2ZWFsLW1vZGFsIC5jbG9zZS1yZXZlYWwtbW9kYWwgeyBkaXNwbGF5Om5vbmU7IH0gI2NvbnRhY3Rwb3B1cCAuY29udGFjdHBvcHVwLWJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBwYWRkaW5nOjMwcHggMTBweCAxMHB4OyB9IC5jb250YWN0cG9wdXAtYm9keSBpbnB1dCB7IHdpZHRoOjEwMCU7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1Jvdzpub3QoOmxhc3QtY2hpbGQpIC5kaXZTcGFuIHsgbWFyZ2luLWJvdHRvbToxNXB4OyB9IC5jb250YWN0cG9wdXAtYm9keSAuZGl2QmxvY2tSb3cgLmRpdlNwYW42OmZpcnN0LWNoaWxkIHsgcGFkZGluZy1yaWdodDoxNXB4OyB9IC5jb250YWN0cG9wdXAtYm9keSAuZGl2QmxvY2tSb3cgLmRpdlNwYW42Omxhc3QtY2hpbGQgeyBwYWRkaW5nLWxlZnQ6MTVweDsgfSAuY29udGFjdHBvcHVwLWJvZHkgLmRpdkJsb2NrUm93IC5kaXZTcGFuNiAuanFUcmFuc2Zvcm1JbnB1dFdyYXBwZXIgeyBtYXgtd2lkdGg6Mjc0cHggIWltcG9ydGFudDsgfSAuY29udGFjdHBvcHVwLWhlYWRlciB7IGJvcmRlci1yYWRpdXM6NXB4IDVweCAwIDA7IHBhZGRpbmc6MTVweCAxNXB4IDMwcHggMTVweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyAtd2Via2l0LWJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IDJweCByZ2JhKDAsMCwwLDAuMyk7IGJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsgZm9udC1zaXplOjEuNjI1cmVtIDsgY29sb3I6IzA1MTQxZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206LTE1cHg7IGxlZnQ6NTAlOyAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSk7IC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSk7IC1vLXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSk7IHRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSk7IGJvcmRlci1sZWZ0OjMwcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDozMHB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjE1cHggc29saWQgI2ZmZmZmZjsgfSAuY29udGFjdHBvcHVwLWhlYWRlciAuZmEtdGltZXMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MC41cmVtOyB0b3A6MC41cmVtOyBmb250LXNpemU6aW5pdGlhbDsgfSAuY29udGFjdHBvcHVwLWhlYWRlciAuZmEtdGltZXM6aG92ZXIgeyBjdXJzb3I6cG9pbnRlcjsgfSAuY29udGFjdHBvcHVwLWhlYWRlciAuaGVhZGVyLXJlcGxhY2UgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSBidXR0b24uY29udGFjdC1zdWJtaXQgeyBwYWRkaW5nOjEwcHggMTVweDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYm9yZGVyLWNvbG9yOiMwNTE0MWY7IGJhY2tncm91bmQ6I2ZmZmZmZjsgdHJhbnNpdGlvbjphbGwgMC4yNXM7IGNvbG9yOiMwNTE0MWY7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luOjA7IGJvcmRlcjoxcHggc29saWQ7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLmNvbnRhY3Qtc3VibWl0OmhvdmVyIHsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci1jb2xvcjojMDUxNDFmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwNTE0MWY7IH0gLmNvbnRhY3Rwb3B1cC1mb290ZXIgeyB9IC5jb250YWN0cG9wdXAtZm9vdGVyIC5idG4td3JhcHBlciB7IHBhZGRpbmc6MTBweDsgfSAjY29udGFjdHBvcHVwIC5qcVRyYW5zZm9ybUlucHV0SW5uZXIgZGl2IHsgaGVpZ2h0OjMwcHg7IH0gI2NvbnRhY3Rwb3B1cCAuanFUcmFuc2Zvcm1JbnB1dElubmVyIGRpdi52YWxpZGl0eS1lcnJvbmVvdXMgeyB3aWR0aDppbmhlcml0OyB9Ci8qKiAvY3NzL2Rpdl90YWJsZXMuY3NzICoqLwpkaXYuZGl2VGFibGVWaWV3eyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlRhYmxlV3JhcGVyeyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlRpdGxleyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHBhZGRpbmc6MzBweCAwcHggMTBweCAxMHB4OyBjb2xvcjojMDUxNDFmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgaGVpZ2h0OmF1dG87IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGFibGVPdXRlcnsgYm9yZGVyOjFweCBzb2xpZCAjZGRkOyBwYWRkaW5nOjA7IGJvcmRlci1yYWRpdXM6OHB4OyBtYXJnaW46MDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOyBvdmVyZmxvdzpoaWRkZW47IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGFibGV7IGRpc3BsYXk6dGFibGU7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZ3sgZGlzcGxheTp0YWJsZS1yb3c7IGZvbnQtd2VpZ2h0OmluaXRpYWw7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6NDVweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZSb3d7IGRpc3BsYXk6dGFibGUtcm93OyB3aWR0aDoxMDAlOyBoZWlnaHQ6NjVweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZDZWxseyBkaXNwbGF5OnRhYmxlLWNlbGw7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjE1cHggMTVweCAyNXB4IDE1cHg7IGJvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDsgY29sb3I6IzA1MTQxZjsgZm9udC1zaXplOjAuODc1cmVtIDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZDZWxsOmxhc3QtY2hpbGR7IGJvcmRlci1yaWdodDoxcHggc29saWQgdHJhbnNwYXJlbnQ7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbHsgcGFkZGluZzoxMHB4IDE1cHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAxLjApOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkhlYWRpbmcgZGl2LmRpdkNlbGw6bnRoLWNoaWxkKGV2ZW4peyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbDpsYXN0LWNoaWxkeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo4cHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbDpmaXJzdC1jaGlsZHsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo4cHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Um93Omxhc3QtY2hpbGQgZGl2LmRpdkNlbGx7IGJvcmRlci1ib3R0b206MHB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlJvdyBkaXYuZGl2Q2VsbHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Um93IGRpdi5kaXZDZWxsOm50aC1jaGlsZChldmVuKXsgYmFja2dyb3VuZC1jb2xvcjojZjZmN2Y4OyB9Ci8qKiAvY3NzL2Rpdl9ibG9ja3MuY3NzICoqLwpkaXYuZGl2QmxvY2tWaWV3eyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrVGl0bGUsIGRpdi5kaXZCbG9ja1ZpZXcgbGFiZWwuZGl2QmxvY2tUaXRsZXsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nOjMwcHggMTBweCAxMHB4IDEwcHg7IGNvbG9yOiMwNTE0MWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1RpdGxlLmJsb2NrVGl0bGVTdHlsZTIsIGRpdi5kaXZCbG9ja1ZpZXcgbGFiZWwuZGl2QmxvY2tUaXRsZS5ibG9ja1RpdGxlU3R5bGUyeyBwYWRkaW5nOjAgNDBweCAxMHB4OyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ29udGVudHsgYmFja2dyb3VuZDpub25lOyBwYWRkaW5nOjE1cHggMHB4OyBtYXJnaW46MDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja0NvbnRlbnQgZGl2LmRpdkJsb2NrQ29sdW1ueyBiYWNrZ3JvdW5kOm5vbmU7IHBhZGRpbmc6MCA0MHB4OyBtYXJnaW46MDsgd2lkdGg6ODYwcHggIWltcG9ydGFudDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOmluaGVyaXQ7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3R7IGJhY2tncm91bmQ6aW5pdGlhbDsgcGFkZGluZzowOyBtYXJnaW46MCAwIDIwcHggMDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBVTC5kaXZJbm5lckJsb2NrTGlzdCB7IHBhZGRpbmc6MTBweCAwIDAgMDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdC5zaXplRm9yNENvbHVtbnNMaXN0eyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0Om5vdCguc2l6ZUZvcjRDb2x1bW5zTGlzdCk6bnRoLWNoaWxkKDNuKzEpLCBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdC5zaXplRm9yNENvbHVtbnNMaXN0Om50aC1jaGlsZCg0bisxKXsgY2xlYXI6bGVmdDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBkaXYuZGl2QmxvY2tMaXN0VGl0bGV7IGJhY2tncm91bmQ6aW5pdGlhbDsgcGFkZGluZzowIDAgMTBweCAwOyBtYXJnaW46MDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgZm9udC13ZWlnaHQ6Ym9sZCB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVteyBwYWRkaW5nOjAgMzBweCAxMHB4IDEwcHg7IG1hcmdpbjowOyB0ZXh0LWluZGVudDowOyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hcnJvd19yZWQucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDVweCB0cmFuc3BhcmVudDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbSA+IEF7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOmluaXRpYWw7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdFRpdGxlMnsgZm9udC1zaXplOjEuMWVtOyBib3JkZXI6MDsgbWFyZ2luOjA7IHBhZGRpbmc6MCAwIDEwcHggMDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGlzdC1zdHlsZTpub25lOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtMnsgcGFkZGluZzowIDMwcHggMTBweCAxMHB4OyB0ZXh0LWluZGVudDowOyBsaXN0LXN0eWxlOm5vbmUgb3V0c2lkZSBub25lOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MCAwIDAgMTJweDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbTI6YmVmb3JleyBjb250ZW50OiJcZjEzOCI7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBmb250LXdlaWdodDo5MDA7IG1hcmdpbi1yaWdodDowOyBtYXJnaW4tbGVmdDotMjFweDsgcGFkZGluZy1yaWdodDo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgVUwuZGl2SW5uZXJCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0yOmJlZm9yZXsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IFVMLmRpdklubmVyQmxvY2tMaXN0IExJIHsgcGFkZGluZzowIDMwcHggMTBweCAxMHB4OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtLm5vU3R5bGVJdGVteyBwYWRkaW5nOjAgMCA1cHggMDsgbWFyZ2luOjA7IHRleHQtaW5kZW50OjA7IGJhY2tncm91bmQ6bm9uZTsgbGlzdC1zdHlsZTpub25lOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtLm9uU2FtZUxpbmV7IHBhZGRpbmctcmlnaHQ6MTVweDsgZGlzcGxheTppbmxpbmUtdGFibGU7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0ub25TYW1lTGluZTpsYXN0LWNoaWxkeyBwYWRkaW5nLXJpZ2h0OjA7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tUYWJsZU91dGVyeyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrVGFibGV7IGRpc3BsYXk6dGFibGU7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tSb3d7IGRpc3BsYXk6dGFibGUtcm93OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ2VsbHsgZGlzcGxheTp0YWJsZS1jZWxsOyB9IGRpdi5kaXZEaXNjbGFpbWVyQmxvY2t7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZ2VuZXJhbC1iZy1jb2xvcik7IGJvcmRlci1yYWRpdXM6M3B4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja0NvbnRlbnQgZGl2LmRpdkJsb2NrQ29sdW1uIHsgd2lkdGg6MTEwMHB4ICFpbXBvcnRhbnQ7IH0gfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5wcmVsb2FkLmNzcyAqKi8KLmQyY2Zvcm0geyAtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbDoiKiI7IC0tbGFiZWwtcmVxdWlyZWQtY29sb3I6I0ZGMDAwMDsgLS1pbnB1dC1wYWRkaW5nOnZhcigtLXMtMSkgdmFyKC0tczEpOyAtLWlucHV0LWJnLWNvbG9yOnZhcigtLXdoaXRlKTsgLS1pbnB1dC1ib3JkZXItY29sb3I6dmFyKC0tbWlkLWdyYXkpOyAtLWlucHV0LXJhZGl1czp2YXIoLS1zLTYpOyAtLWlucHV0LWZvbnQtc2l6ZTp2YXIoLS1mczApOyAtLWlucHV0LWxpbmUtaGVpZ2h0OnZhcigtLWZzMik7IH0gLmQyY2Zvcm0gKiB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZDJjZm9ybSBib3gtbGMgeyAtLXNwYWNlOnZhcigtLXMtNCk7IHBhZGRpbmctbGVmdDowOyBwYWRkaW5nLXJpZ2h0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS10aGluIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy05KTsgfSAuZDJjZm9ybS0tcm93IHN0YWNrLWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBmbGV4LXdyYXA6d3JhcDsgfSAuZDJjZm9ybS0tcm93IGJveC1sYyB7IHBhZGRpbmctcmlnaHQ6dmFyKC0tc3BhY2UpOyBwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2UpOyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyB7IGZsZXgtZGlyZWN0aW9uOnJvdzsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgfSAuZDJjZm9ybS0taG9yaXpvbnRhbCBib3gtbGMgbGFiZWwgeyBtaW4td2lkdGg6MTE1cHg7IHdpZHRoOjMwJTsgcGFkZGluZy1yaWdodDp2YXIoLS1zKTsgbWFyZ2luLXRvcDp2YXIoLS1zMSk7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSBsYWJlbDpoYXMoW3JlcXVpcmVkXSkgc3BhbjphZnRlcnsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsOm5vdCguZmluYW5jZUNhbGMpLCAuZDJjZm9ybSAubGFiZWw6bm90KC5maW5hbmNlQ2FsYykgeyBtYXJnaW4tYm90dG9tOnZhcigtLXMtMyk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGZvbnQtd2VpZ2h0OjQwMDsgfSAuZDJjZm9ybSBsYWJlbC4tLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSBsYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctbGVmdCA6dmFyKC0tcy02KTsgfSAuZDJjZm9ybSBsYWJlbC4tLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlLCAuZDJjZm9ybSAubGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUgeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLXJpZ2h0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIDp3aGVyZShpbnB1dDpub3QoW3R5cGU9c3VibWl0XSwucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pKSwgLmQyY2Zvcm0gc2VsZWN0Om5vdCgucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCwucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSwuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gc2VsZWN0KSwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB3aWR0aDoxMDAlOyBwYWRkaW5nOnZhcigtLWlucHV0LXBhZGRpbmcpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0LWJnLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7IGNvbG9yOiMyMTI1Mjk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGZvbnQtd2VpZ2h0OjQwMDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pLCAuZDJjZm9ybSBzZWxlY3QgeyBoZWlnaHQ6MzVweDsgfSAuZDJjZm9ybSAuaW52YWxpZCA+IDppcyhpbnB1dCxzZWxlY3QsdGV4dGFyZWEpeyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gLmQyY2Zvcm0gaW5wdXQ6ZGlzYWJsZWQsIC5kMmNmb3JtIGlucHV0LmRpc2FibGVkIHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwgMjM5LCAyMzksIDAuMyk7IGNvbG9yOnJnYig4NCwgODQsIDg0KTsgYm9yZGVyLWNvbG9yOnJnYmEoMTE4LCAxMTgsIDExOCwgMC4zKTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB9IC5kMmNmb3JtIGlucHV0LnR4dC11cHBlciB7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyOjpwbGFjZWhvbGRlciB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0LCAuZDJjZm9ybSAuaW5wdXQtaWNvbi1yaWdodCB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTsgdG9wOnZhcigtLXMxKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgY29sb3I6dmFyKC0tZGFyay1ncmF5KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1yaWdodCAuaW5wdXQtaWNvbiB7IHJpZ2h0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IC5pbnB1dC1pY29uIHsgbGVmdDp2YXIoLS1zNCk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tbGVmdCBpbnB1dCB7IHBhZGRpbmctbGVmdDp2YXIoLS1zOSk7IH0gLmQyY2Zvcm0gLnNlcGFyYXRvciB7IHdpZHRoOjEwMCU7IGJvcmRlci10b3A6MXB4IHNvbGlkICNkNGQ0ZDQ7IG1hcmdpbi10b3A6dmFyKC0tczcpOyBtYXJnaW4tYm90dG9tOnZhcigtLXM3KTsgfSAuZDJjZm9ybSAucmFkaW8taW5saW5lIHsgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0IHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgfSAuZDJjZm9ybSAuY2hlY2tib3gtbGlzdCA+ICogeyBtYXJnaW4tYm90dG9tOjA7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0IHsgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyB9IC5kMmNmb3JtIC5tdWx0aXBsZS1pbnB1dCA+ICo6bm90KDpsYXN0LW9mLXR5cGUpIHsgbWFyZ2luLXJpZ2h0OnZhcigtLXMxKTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgeyBkaXNwbGF5OmZsZXg7IHdpZHRoIDoxMDAlOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtdGV4dCB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBwYWRkaW5nOnZhcigtLWlucHV0LXBhZGRpbmcpOyBiYWNrZ3JvdW5kOnZhcigtLWxpZ2h0LWdyYXkpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmZpcnN0LWNoaWxkKSB7IGJvcmRlci1sZWZ0OjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjAgIWltcG9ydGFudDsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgPiA6bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjAgIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IEBtZWRpYSAobWF4LXdpZHRoOjk4MHB4KSB7IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDo4NXB4OyB9IH0KLyoqIC9jc3MvZm9ybXMvZm9ybXMuY3NzICoqLwouZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pLCAuZDJjZm9ybSBzZWxlY3QsIC5kMmNmb3JtIHRleHRhcmVhIHsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7IH0gLmQyY2Zvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpmb2N1cywgLmQyY2Zvcm0gc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSB0ZXh0YXJlYTpmb2N1cyB7IGJvcmRlci1jb2xvcjojODZiN2ZlOyBvdXRsaW5lOjA7IGJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYigxMyAxMTAgMjUzIC8gMjUlKTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpmb2N1cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHNlbGVjdDpmb2N1cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHRleHRhcmVhOmZvY3VzIHsgei1pbmRleDozOyB9IC5kMmNmb3JtIGlucHV0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gc2VsZWN0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gdGV4dGFyZWEudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgYm9yZGVyLWNvbG9yOiNkYzM1NDUgIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzOjpwbGFjZWhvbGRlciwgLmQyY2Zvcm0gdGV4dGFyZWEudmFsaWRpdHktZXJyb25lb3VzOjpwbGFjZWhvbGRlciwgLmQyY2Zvcm0gc2VsZWN0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC52YWxpZGl0eS1lcnJvbmVvdXMgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7IGNvbG9yOiNkYzM1NDU7IH0KLyoqIC9jc3MvZm9ybXMvZm9ybXMucHJlbG9hZC5jc3MgKiovCi5kMmNmb3JtIHsgLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2w6IioiOyAtLWxhYmVsLXJlcXVpcmVkLWNvbG9yOiNGRjAwMDA7IC0taW5wdXQtcGFkZGluZzp2YXIoLS1zLTEpIHZhcigtLXMxKTsgLS1pbnB1dC1iZy1jb2xvcjp2YXIoLS13aGl0ZSk7IC0taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLW1pZC1ncmF5KTsgLS1pbnB1dC1yYWRpdXM6dmFyKC0tcy02KTsgLS1pbnB1dC1mb250LXNpemU6dmFyKC0tZnMwKTsgLS1pbnB1dC1saW5lLWhlaWdodDp2YXIoLS1mczIpOyB9IC5kMmNmb3JtICogeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmQyY2Zvcm0gYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLTQpOyBwYWRkaW5nLWxlZnQ6MDsgcGFkZGluZy1yaWdodDowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgfSAuZDJjZm9ybS0tdGhpbiBib3gtbGMgeyAtLXNwYWNlOnZhcigtLXMtOSk7IH0gLmQyY2Zvcm0tLXJvdyBzdGFjay1sYyB7IGZsZXgtZGlyZWN0aW9uOnJvdzsgZmxleC13cmFwOndyYXA7IH0gLmQyY2Zvcm0tLXJvdyBib3gtbGMgeyBwYWRkaW5nLXJpZ2h0OnZhcigtLXNwYWNlKTsgcGFkZGluZy1sZWZ0OnZhcigtLXNwYWNlKTsgfSAuZDJjZm9ybS0taG9yaXpvbnRhbCBib3gtbGMgeyBmbGV4LWRpcmVjdGlvbjpyb3c7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IH0gLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIGxhYmVsIHsgbWluLXdpZHRoOjExNXB4OyB3aWR0aDozMCU7IHBhZGRpbmctcmlnaHQ6dmFyKC0tcyk7IG1hcmdpbi10b3A6dmFyKC0tczEpOyBtYXJnaW4tYm90dG9tOjA7IH0gLmQyY2Zvcm0gbGFiZWw6aGFzKFtyZXF1aXJlZF0pIHNwYW46YWZ0ZXJ7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctbGVmdCA6dmFyKC0tcy02KTsgfSAuZDJjZm9ybSBsYWJlbDpub3QoLmZpbmFuY2VDYWxjKSwgLmQyY2Zvcm0gLmxhYmVsOm5vdCguZmluYW5jZUNhbGMpIHsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBmb250LXdlaWdodDo0MDA7IH0gLmQyY2Zvcm0gbGFiZWwuLS1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIC5sYWJlbC4tLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciwgLmQyY2Zvcm0gbGFiZWwuLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciwgLmQyY2Zvcm0gLmxhYmVsLi1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIgeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLWxlZnQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gbGFiZWwuLS1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlLCAuZDJjZm9ybSAubGFiZWwuLS1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlLCAuZDJjZm9ybSBsYWJlbC4tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gLmxhYmVsLi1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlIHsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1yaWdodCA6dmFyKC0tcy02KTsgfSAuZDJjZm9ybSA6d2hlcmUoaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0sLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQpOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKSksIC5kMmNmb3JtIHNlbGVjdDpub3QoLnBheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwsLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UsLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIHNlbGVjdCksIC5kMmNmb3JtIHRleHRhcmVhIHsgd2lkdGg6MTAwJTsgcGFkZGluZzp2YXIoLS1pbnB1dC1wYWRkaW5nKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbnB1dC1iZy1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpOyBjb2xvcjojMjEyNTI5OyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBmb250LXdlaWdodDo0MDA7IH0gLmQyY2Zvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKSwgLmQyY2Zvcm0gc2VsZWN0IHsgaGVpZ2h0OjM1cHg7IH0gLmQyY2Zvcm0gLmludmFsaWQgPiA6aXMoaW5wdXQsc2VsZWN0LHRleHRhcmVhKXsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9IC5kMmNmb3JtIGlucHV0OmRpc2FibGVkLCAuZDJjZm9ybSBpbnB1dC5kaXNhYmxlZCB7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyMzksIDIzOSwgMjM5LCAwLjMpOyBjb2xvcjpyZ2IoODQsIDg0LCA4NCk7IGJvcmRlci1jb2xvcjpyZ2JhKDExOCwgMTE4LCAxMTgsIDAuMyk7IGN1cnNvcjpub3QtYWxsb3dlZDsgfSAuZDJjZm9ybSBpbnB1dC50eHQtdXBwZXIgeyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5kMmNmb3JtIGlucHV0LnR4dC11cHBlcjo6cGxhY2Vob2xkZXIgeyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIsIHVwcGVyY2FzZSk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tbGVmdCwgLmQyY2Zvcm0gLmlucHV0LWljb24tcmlnaHQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjE7IHRvcDp2YXIoLS1zMSk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGNvbG9yOnZhcigtLWRhcmstZ3JheSk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tcmlnaHQgLmlucHV0LWljb24geyByaWdodDp2YXIoLS1zNCk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tbGVmdCAuaW5wdXQtaWNvbiB7IGxlZnQ6dmFyKC0tczQpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQgaW5wdXQgeyBwYWRkaW5nLWxlZnQ6dmFyKC0tczkpOyB9IC5kMmNmb3JtIC5zZXBhcmF0b3IgeyB3aWR0aDoxMDAlOyBib3JkZXItdG9wOjFweCBzb2xpZCAjZDRkNGQ0OyBtYXJnaW4tdG9wOnZhcigtLXM3KTsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zNyk7IH0gLmQyY2Zvcm0gLnJhZGlvLWlubGluZSB7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MTAwJTsgfSAuZDJjZm9ybSAuY2hlY2tib3gtbGlzdCB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBtYXJnaW4tYm90dG9tOnZhcigtLXMtMyk7IH0gLmQyY2Zvcm0gLmNoZWNrYm94LWxpc3QgPiAqIHsgbWFyZ2luLWJvdHRvbTowOyB9IC5kMmNmb3JtIC5tdWx0aXBsZS1pbnB1dCB7IGRpc3BsYXk6ZmxleDsgd2lkdGg6MTAwJTsgfSAuZDJjZm9ybSAubXVsdGlwbGUtaW5wdXQgPiAqOm5vdCg6bGFzdC1vZi10eXBlKSB7IG1hcmdpbi1yaWdodDp2YXIoLS1zMSk7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHsgZGlzcGxheTpmbGV4OyB3aWR0aCA6MTAwJTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLXRleHQgeyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgcGFkZGluZzp2YXIoLS1pbnB1dC1wYWRkaW5nKTsgYmFja2dyb3VuZDp2YXIoLS1saWdodC1ncmF5KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgPiA6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItbGVmdDowOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjAgIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnQ7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwID4gOm5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjAgIWltcG9ydGFudDsgfSBAbWVkaWEgKG1heC13aWR0aDo5ODBweCkgeyAuZDJjZm9ybS0taG9yaXpvbnRhbCBib3gtbGMgbGFiZWwgeyBtaW4td2lkdGg6ODVweDsgfSB9Ci8qKiAvY3NzL2Zvcm1zL2Zvcm1zLmNzcyAqKi8KLmQyY2Zvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKSwgLmQyY2Zvcm0gc2VsZWN0LCAuZDJjZm9ybSB0ZXh0YXJlYSB7IHRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OyB9IC5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6Zm9jdXMsIC5kMmNmb3JtIHNlbGVjdDpmb2N1cywgLmQyY2Zvcm0gdGV4dGFyZWE6Zm9jdXMgeyBib3JkZXItY29sb3I6Izg2YjdmZTsgb3V0bGluZTowOyBib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2IoMTMgMTEwIDI1MyAvIDI1JSk7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSk6Zm9jdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCBzZWxlY3Q6Zm9jdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCB0ZXh0YXJlYTpmb2N1cyB7IHotaW5kZXg6MzsgfSAuZDJjZm9ybSBpbnB1dC52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIHNlbGVjdC52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIHRleHRhcmVhLnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC52YWxpZGl0eS1lcnJvbmVvdXMgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7IGJvcmRlci1jb2xvcjojZGMzNTQ1ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYyAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIGlucHV0LnZhbGlkaXR5LWVycm9uZW91czo6cGxhY2Vob2xkZXIsIC5kMmNmb3JtIHRleHRhcmVhLnZhbGlkaXR5LWVycm9uZW91czo6cGxhY2Vob2xkZXIsIC5kMmNmb3JtIHNlbGVjdC52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCAudmFsaWRpdHktZXJyb25lb3VzICsgLmlucHV0LWdyb3VwLXRleHQgeyBjb2xvcjojZGMzNTQ1OyB9Ci8qKiAvY3NzL3YyL21vZGFsLmNzcyAqKi8KLm1vZGFsLXdyYXBwZXIgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjE1MCU7IGxlZnQ6NTAlOyB0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIC01MCUpOyB6LWluZGV4OjE2MDAxOyB0cmFuc2l0aW9uOnRvcCAxNTBtcyBlYXNlLWluOyB9IC5tb2RhbC13cmFwcGVyLmlzLWFjdGl2ZXsgdG9wOjUwJTsgfSAubW9kYWwtd3JhcHBlciAubW9kYWwtYm9keXsgbWluLXdpZHRoOjIwcmVtOyBtYXgtd2lkdGg6MTAwJTsgbWF4LWhlaWdodDo4NXZoOyBvdmVyZmxvdy15OmF1dG87IH0gLm1vZGFsLW92ZXJsYXl7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDB2dzsgaGVpZ2h0OjEwMHZoOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC41KTsgei1pbmRleDoxMDAwMDsgfSAubG9hZGluZy1vdmVybGF5eyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHRvcDowOyBsZWZ0OjA7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYWpheC1sb2FkZXIuZ2lmKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgfSAubW9kYWwtd3JhcHBlciA6aXMoaW5wdXRbdHlwZT0idGV4dCJdLGlucHV0W3R5cGU9ImVtYWlsIl0saW5wdXRbdHlwZT0idGVsIl0peyBwYWRkaW5nOjAuNHJlbTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1taWQtZ3JheSk7IGJvcmRlci1yYWRpdXM6MC4zcmVtOyB9IC5tb2RhbC1ib2R5IC5pZnJhbWUtd3JhcHBlcnsgd2lkdGg6bWF4KDkwdncsIDIwLjVyZW0pOyBoZWlnaHQ6bWF4KDg0dmgsIDMwcmVtKTsgd2lkdGg6Y2xhbXAoMjAuNXJlbSwgbWF4KDkwdncsIDIwLjVyZW0pLCA2MHJlbSk7IGhlaWdodDpjbGFtcCgzMHJlbSwgbWF4KDg0dmgsIDMwcmVtKSwgNjByZW0pOyB9IC5tb2RhbC1ib2R5IC5pZnJhbWUtd3JhcHBlciBpZnJhbWV7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9Ci8qKiAvY3NzL3YyL2ZsYXRwaWNrci5taW4uY3NzICoqLwouZmxhdHBpY2tyLWNhbGVuZGFye2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7b3BhY2l0eTowO2Rpc3BsYXk6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcjt2aXNpYmlsaXR5OmhpZGRlbjtwYWRkaW5nOjA7LXdlYmtpdC1hbmltYXRpb246bm9uZTthbmltYXRpb246bm9uZTtkaXJlY3Rpb246bHRyO2JvcmRlcjowO2ZvbnQtc2l6ZTowLjg3NXJlbSA7bGluZS1oZWlnaHQ6MjRweDtib3JkZXItcmFkaXVzOjVweDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMDcuODc1cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94Oy1tcy10b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247YmFja2dyb3VuZDojZmZmOy13ZWJraXQtYm94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTYsLTFweCAwIDAgI2U2ZTZlNiwwIDFweCAwICNlNmU2ZTYsMCAtMXB4IDAgI2U2ZTZlNiwwIDNweCAxM3B4IHJnYmEoMCwwLDAsMC4wOCk7Ym94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTYsLTFweCAwIDAgI2U2ZTZlNiwwIDFweCAwICNlNmU2ZTYsMCAtMXB4IDAgI2U2ZTZlNiwwIDNweCAxM3B4IHJnYmEoMCwwLDAsMC4wOCl9LmZsYXRwaWNrci1jYWxlbmRhci5vcGVuLC5mbGF0cGlja3ItY2FsZW5kYXIuaW5saW5le29wYWNpdHk6MTttYXgtaGVpZ2h0OjY0MHB4O3Zpc2liaWxpdHk6dmlzaWJsZX0uZmxhdHBpY2tyLWNhbGVuZGFyLm9wZW57ZGlzcGxheTppbmxpbmUtYmxvY2s7ei1pbmRleDo5OTk5OX0uZmxhdHBpY2tyLWNhbGVuZGFyLmFuaW1hdGUub3Blbnstd2Via2l0LWFuaW1hdGlvbjpmcEZhZGVJbkRvd24gMzAwbXMgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKTthbmltYXRpb246ZnBGYWRlSW5Eb3duIDMwMG1zIGN1YmljLWJlemllciguMjMsMSwuMzIsMSl9LmZsYXRwaWNrci1jYWxlbmRhci5pbmxpbmV7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4fS5mbGF0cGlja3ItY2FsZW5kYXIuc3RhdGlje3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKDEwMCUgKyAycHgpfS5mbGF0cGlja3ItY2FsZW5kYXIuc3RhdGljLm9wZW57ei1pbmRleDo5OTk7ZGlzcGxheTpibG9ja30uZmxhdHBpY2tyLWNhbGVuZGFyLm11bHRpTW9udGggLmZsYXRwaWNrci1kYXlzIC5kYXlDb250YWluZXI6bnRoLWNoaWxkKG4rMSkgLmZsYXRwaWNrci1kYXkuaW5SYW5nZTpudGgtY2hpbGQoN24rNyl7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmUgIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUgIWltcG9ydGFudH0uZmxhdHBpY2tyLWNhbGVuZGFyLm11bHRpTW9udGggLmZsYXRwaWNrci1kYXlzIC5kYXlDb250YWluZXI6bnRoLWNoaWxkKG4rMikgLmZsYXRwaWNrci1kYXkuaW5SYW5nZTpudGgtY2hpbGQoN24rMSl7LXdlYmtpdC1ib3gtc2hhZG93Oi0ycHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2O2JveC1zaGFkb3c6LTJweCAwIDAgI2U2ZTZlNiw1cHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci1jYWxlbmRhciAuaGFzV2Vla3MgLmRheUNvbnRhaW5lciwuZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNUaW1lIC5kYXlDb250YWluZXJ7Ym9yZGVyLWJvdHRvbTowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5mbGF0cGlja3ItY2FsZW5kYXIgLmhhc1dlZWtzIC5kYXlDb250YWluZXJ7Ym9yZGVyLWxlZnQ6MH0uZmxhdHBpY2tyLWNhbGVuZGFyLmhhc1RpbWUgLmZsYXRwaWNrci10aW1le2hlaWdodDo0MHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9LmZsYXRwaWNrci1jYWxlbmRhci5ub0NhbGVuZGFyLmhhc1RpbWUgLmZsYXRwaWNrci10aW1le2hlaWdodDphdXRvfS5mbGF0cGlja3ItY2FsZW5kYXI6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXI6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztwb2ludGVyLWV2ZW50czpub25lO2JvcmRlcjpzb2xpZCB0cmFuc3BhcmVudDtjb250ZW50OicnO2hlaWdodDowO3dpZHRoOjA7bGVmdDoyMnB4fS5mbGF0cGlja3ItY2FsZW5kYXIucmlnaHRNb3N0OmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93UmlnaHQ6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIucmlnaHRNb3N0OmFmdGVyLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dSaWdodDphZnRlcntsZWZ0OmF1dG87cmlnaHQ6MjJweH0uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Q2VudGVyOmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Q2VudGVyOmFmdGVye2xlZnQ6NTAlO3JpZ2h0OjUwJX0uZmxhdHBpY2tyLWNhbGVuZGFyOmJlZm9yZXtib3JkZXItd2lkdGg6NXB4O21hcmdpbjowIC01cHh9LmZsYXRwaWNrci1jYWxlbmRhcjphZnRlcntib3JkZXItd2lkdGg6NHB4O21hcmdpbjowIC00cHh9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDphZnRlcntib3R0b206MTAwJX0uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmJlZm9yZXtib3JkZXItYm90dG9tLWNvbG9yOiNlNmU2ZTZ9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTphZnRlcnt0b3A6MTAwJX0uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmJlZm9yZXtib3JkZXItdG9wLWNvbG9yOiNlNmU2ZTZ9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTphZnRlcntib3JkZXItdG9wLWNvbG9yOiNmZmZ9LmZsYXRwaWNrci1jYWxlbmRhcjpmb2N1c3tvdXRsaW5lOjB9LmZsYXRwaWNrci13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5mbGF0cGlja3ItbW9udGhze2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1tb250aHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnJnYmEoMCwwLDAsMC45KTtmaWxsOnJnYmEoMCwwLDAsMC45KTtoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDoxO3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxfS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGh7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7aGVpZ2h0OjM0cHg7cGFkZGluZzoxMHB4O3otaW5kZXg6Mztjb2xvcjpyZ2JhKDAsMCwwLDAuOSk7ZmlsbDpyZ2JhKDAsMCwwLDAuOSl9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1kaXNhYmxlZCwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLWRpc2FibGVke2Rpc3BsYXk6bm9uZX0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGggaSwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGggaXtwb3NpdGlvbjpyZWxhdGl2ZX0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGguZmxhdHBpY2tyLXByZXYtbW9udGgsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoLmZsYXRwaWNrci1wcmV2LW1vbnRoe2xlZnQ6MH0gLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1uZXh0LW1vbnRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aC5mbGF0cGlja3ItbmV4dC1tb250aHtyaWdodDowfSAuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGg6aG92ZXIsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoOmhvdmVye2NvbG9yOiM5NTllYTl9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyIHN2ZywuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGg6aG92ZXIgc3Zne2ZpbGw6I2Y2NDc0N30uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGggc3ZnLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBzdmd7d2lkdGg6MTRweDtoZWlnaHQ6MTRweH0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGggc3ZnIHBhdGgsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIHN2ZyBwYXRoey13ZWJraXQtdHJhbnNpdGlvbjpmaWxsIC4xczt0cmFuc2l0aW9uOmZpbGwgLjFzO2ZpbGw6aW5oZXJpdH0ubnVtSW5wdXRXcmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDphdXRvfS5udW1JbnB1dFdyYXBwZXIgaW5wdXQsLm51bUlucHV0V3JhcHBlciBzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5udW1JbnB1dFdyYXBwZXIgaW5wdXR7d2lkdGg6MTAwJX0ubnVtSW5wdXRXcmFwcGVyIGlucHV0OjotbXMtY2xlYXJ7ZGlzcGxheTpub25lfS5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sLm51bUlucHV0V3JhcHBlciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnttYXJnaW46MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubnVtSW5wdXRXcmFwcGVyIHNwYW57cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt3aWR0aDoxNHB4O3BhZGRpbmc6MCA0cHggMCAycHg7aGVpZ2h0OjUwJTtsaW5lLWhlaWdodDo1MCU7b3BhY2l0eTowO2N1cnNvcjpwb2ludGVyO2JvcmRlcjoxcHggc29saWQgcmdiYSg1Nyw1Nyw1NywwLjE1KTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm51bUlucHV0V3JhcHBlciBzcGFuOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjEpfS5udW1JbnB1dFdyYXBwZXIgc3BhbjphY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMil9Lm51bUlucHV0V3JhcHBlciBzcGFuOmFmdGVye2Rpc3BsYXk6YmxvY2s7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZX0ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcHt0b3A6MDtib3JkZXItYm90dG9tOjB9Lm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXA6YWZ0ZXJ7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgcmdiYSg1Nyw1Nyw1NywwLjYpO3RvcDoyNiV9Lm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bnt0b3A6NTAlfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd246YWZ0ZXJ7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo0cHggc29saWQgcmdiYSg1Nyw1Nyw1NywwLjYpO3RvcDo0MCV9Lm51bUlucHV0V3JhcHBlciBzcGFuIHN2Z3t3aWR0aDppbmhlcml0O2hlaWdodDphdXRvfS5udW1JbnB1dFdyYXBwZXIgc3BhbiBzdmcgcGF0aHtmaWxsOnJnYmEoMCwwLDAsMC41KX0ubnVtSW5wdXRXcmFwcGVyOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjA1KX0ubnVtSW5wdXRXcmFwcGVyOmhvdmVyIHNwYW57b3BhY2l0eToxfS5mbGF0cGlja3ItY3VycmVudC1tb250aHtmb250LXNpemU6MTM1JTtsaW5lLWhlaWdodDppbmhlcml0O2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjppbmhlcml0O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjc1JTtsZWZ0OjEyLjUlO3BhZGRpbmc6Ny40OHB4IDAgMCAwO2xpbmUtaGVpZ2h0OjE7aGVpZ2h0OjM0cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIHNwYW4uY3VyLW1vbnRoe2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6LjVjaDtwYWRkaW5nOjB9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIHNwYW4uY3VyLW1vbnRoOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjA1KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlcnt3aWR0aDo2Y2g7d2lkdGg6N2NoXDA7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd1VwOmFmdGVye2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwwLjkpfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duOmFmdGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwwLjkpfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjp0ZXh0O3BhZGRpbmc6MCAwIDAgLjVjaDttYXJnaW46MDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6aW5oZXJpdDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDppbmhlcml0O2hlaWdodDphdXRvO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDt2ZXJ0aWNhbC1hbGlnbjppbml0aWFsOy13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDthcHBlYXJhbmNlOnRleHRmaWVsZH0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXI6Zm9jdXN7b3V0bGluZTowfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcltkaXNhYmxlZF0sLmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIGlucHV0LmN1ci15ZWFyW2Rpc2FibGVkXTpob3Zlcntmb250LXNpemU6MTAwJTtjb2xvcjpyZ2JhKDAsMCwwLDAuNSk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwb2ludGVyLWV2ZW50czpub25lfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhze2FwcGVhcmFuY2U6bWVudWxpc3Q7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjA7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDozMDA7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46LTFweCAwIDAgMDtvdXRsaW5lOm5vbmU7cGFkZGluZzowIDAgMCAuNWNoO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmluaXRpYWw7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1hcHBlYXJhbmNlOm1lbnVsaXN0Oy1tb3otYXBwZWFyYW5jZTptZW51bGlzdDt3aWR0aDphdXRvfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmZvY3VzLC5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmFjdGl2ZXtvdXRsaW5lOm5vbmV9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHM6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMDUpfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O291dGxpbmU6bm9uZTtwYWRkaW5nOjB9LmZsYXRwaWNrci13ZWVrZGF5c3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O3RleHQtYWxpZ246Y2VudGVyO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy13ZWJraXQtYWxpZ24taXRlbXM6Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI4cHh9LmZsYXRwaWNrci13ZWVrZGF5cyAuZmxhdHBpY2tyLXdlZWtkYXljb250YWluZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1mbGV4OjE7LXdlYmtpdC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjF9c3Bhbi5mbGF0cGlja3Itd2Vla2RheXtjdXJzb3I6ZGVmYXVsdDtmb250LXNpemU6OTAlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6cmdiYSgwLDAsMCwwLjU0KTtsaW5lLWhlaWdodDoxO21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6YmxvY2s7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxO2ZvbnQtd2VpZ2h0OmJvbGRlcn0uZGF5Q29udGFpbmVyLC5mbGF0cGlja3Itd2Vla3N7cGFkZGluZzoxcHggMCAwIDB9LmZsYXRwaWNrci1kYXlze3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOnN0YXJ0Oy13ZWJraXQtYWxpZ24taXRlbXM6ZmxleC1zdGFydDstbXMtZmxleC1hbGlnbjpzdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3dpZHRoOjMwNy44NzVweH0uZmxhdHBpY2tyLWRheXM6Zm9jdXN7b3V0bGluZTowfS5kYXlDb250YWluZXJ7cGFkZGluZzowO291dGxpbmU6MDt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6MzA3Ljg3NXB4O21pbi13aWR0aDozMDcuODc1cHg7bWF4LXdpZHRoOjMwNy44NzVweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDstd2Via2l0LWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwOy1tcy1mbGV4LXdyYXA6d3JhcDstbXMtZmxleC1wYWNrOmp1c3RpZnk7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kO2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7b3BhY2l0eToxfS5kYXlDb250YWluZXIgKyAuZGF5Q29udGFpbmVyey13ZWJraXQtYm94LXNoYWRvdzotMXB4IDAgMCAjZTZlNmU2O2JveC1zaGFkb3c6LTFweCAwIDAgI2U2ZTZlNn0uZmxhdHBpY2tyLWRheXtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjE1MHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojMzkzOTM5O2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjQwMDt3aWR0aDoxNC4yODU3MTQzJTstd2Via2l0LWZsZXgtYmFzaXM6MTQuMjg1NzE0MyU7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6MTQuMjg1NzE0MyU7ZmxleC1iYXNpczoxNC4yODU3MTQzJTttYXgtd2lkdGg6MzlweDtoZWlnaHQ6MzlweDtsaW5lLWhlaWdodDozOXB4O21hcmdpbjowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtYm94LXBhY2s6Y2VudGVyOy13ZWJraXQtanVzdGlmeS1jb250ZW50OmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyfS5mbGF0cGlja3ItZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkudG9kYXkuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXkudG9kYXkuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5uZXh0TW9udGhEYXkudG9kYXkuaW5SYW5nZSwuZmxhdHBpY2tyLWRheTpob3ZlciwuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXk6aG92ZXIsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5OmhvdmVyLC5mbGF0cGlja3ItZGF5OmZvY3VzLC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheTpmb2N1cywuZmxhdHBpY2tyLWRheS5uZXh0TW9udGhEYXk6Zm9jdXN7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowO2JhY2tncm91bmQ6I2U2ZTZlNjtib3JkZXItY29sb3I6I2U2ZTZlNn0uZmxhdHBpY2tyLWRheS50b2RheXtib3JkZXItY29sb3I6Izk1OWVhOX0uZmxhdHBpY2tyLWRheS50b2RheTpob3ZlciwuZmxhdHBpY2tyLWRheS50b2RheTpmb2N1c3tib3JkZXItY29sb3I6Izk1OWVhOTtiYWNrZ3JvdW5kOiM5NTllYTk7Y29sb3I6I2ZmZn0uZmxhdHBpY2tyLWRheS5zZWxlY3RlZCwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLmluUmFuZ2UsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLmluUmFuZ2UsLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQ6Zm9jdXMsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZTpmb2N1cywuZmxhdHBpY2tyLWRheS5lbmRSYW5nZTpmb2N1cywuZmxhdHBpY2tyLWRheS5zZWxlY3RlZDpob3ZlciwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlOmhvdmVyLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlOmhvdmVyLC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnByZXZNb250aERheSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnByZXZNb250aERheSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQubmV4dE1vbnRoRGF5LC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UubmV4dE1vbnRoRGF5LC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLm5leHRNb250aERheXtiYWNrZ3JvdW5kOiM1NjlmZjc7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiM1NjlmZjd9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnN0YXJ0UmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZXtib3JkZXItcmFkaXVzOjUwcHggMCAwIDUwcHh9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5lbmRSYW5nZXtib3JkZXItcmFkaXVzOjAgNTBweCA1MHB4IDB9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSksLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5zdGFydFJhbmdlICsgLmVuZFJhbmdlOm5vdCg6bnRoLWNoaWxkKDduKzEpKSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5zdGFydFJhbmdlICsgLmVuZFJhbmdlOm5vdCg6bnRoLWNoaWxkKDduKzEpKXstd2Via2l0LWJveC1zaGFkb3c6LTEwcHggMCAwICM1NjlmZjc7Ym94LXNoYWRvdzotMTBweCAwIDAgIzU2OWZmN30uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5zdGFydFJhbmdlLmVuZFJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2Uuc3RhcnRSYW5nZS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5zdGFydFJhbmdlLmVuZFJhbmdle2JvcmRlci1yYWRpdXM6NTBweH0uZmxhdHBpY2tyLWRheS5pblJhbmdle2JvcmRlci1yYWRpdXM6MDstd2Via2l0LWJveC1zaGFkb3c6LTVweCAwIDAgI2U2ZTZlNiw1cHggMCAwICNlNmU2ZTY7Ym94LXNoYWRvdzotNXB4IDAgMCAjZTZlNmU2LDVweCAwIDAgI2U2ZTZlNn0uZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQsLmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkOmhvdmVyLC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheSwuZmxhdHBpY2tyLWRheS5uZXh0TW9udGhEYXksLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZCwuZmxhdHBpY2tyLWRheS5ub3RBbGxvd2VkLnByZXZNb250aERheSwuZmxhdHBpY2tyLWRheS5ub3RBbGxvd2VkLm5leHRNb250aERheXtjb2xvcjpyZ2JhKDU3LDU3LDU3LDAuMyk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y3Vyc29yOmRlZmF1bHR9LmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkLC5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZDpob3ZlcntjdXJzb3I6bm90LWFsbG93ZWQ7Y29sb3I6cmdiYSg1Nyw1Nyw1NywwLjEpfS5mbGF0cGlja3ItZGF5LndlZWsuc2VsZWN0ZWR7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm94LXNoYWRvdzotNXB4IDAgMCAjNTY5ZmY3LDVweCAwIDAgIzU2OWZmNztib3gtc2hhZG93Oi01cHggMCAwICM1NjlmZjcsNXB4IDAgMCAjNTY5ZmY3fS5mbGF0cGlja3ItZGF5LmhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0ucmFuZ2VNb2RlIC5mbGF0cGlja3ItZGF5e21hcmdpbi10b3A6MXB4fS5mbGF0cGlja3Itd2Vla3dyYXBwZXJ7ZmxvYXQ6bGVmdH0uZmxhdHBpY2tyLXdlZWt3cmFwcGVyIC5mbGF0cGlja3Itd2Vla3N7cGFkZGluZzowIDEycHg7LXdlYmtpdC1ib3gtc2hhZG93OjFweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93OjFweCAwIDAgI2U2ZTZlNn0uZmxhdHBpY2tyLXdlZWt3cmFwcGVyIC5mbGF0cGlja3Itd2Vla2RheXtmbG9hdDpub25lO3dpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MjhweH0uZmxhdHBpY2tyLXdlZWt3cmFwcGVyIHNwYW4uZmxhdHBpY2tyLWRheSwuZmxhdHBpY2tyLXdlZWt3cmFwcGVyIHNwYW4uZmxhdHBpY2tyLWRheTpob3ZlcntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWF4LXdpZHRoOm5vbmU7Y29sb3I6cmdiYSg1Nyw1Nyw1NywwLjMpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y3Vyc29yOmRlZmF1bHQ7Ym9yZGVyOm5vbmV9LmZsYXRwaWNrci1pbm5lckNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmhpZGRlbn0uZmxhdHBpY2tyLXJDb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzowOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZmxhdHBpY2tyLXRpbWV7dGV4dC1hbGlnbjpjZW50ZXI7b3V0bGluZTowO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7bGluZS1oZWlnaHQ6NDBweDttYXgtaGVpZ2h0OjQwcHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmhpZGRlbjtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5mbGF0cGlja3ItdGltZTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0uZmxhdHBpY2tyLXRpbWUgLm51bUlucHV0V3JhcHBlcnstd2Via2l0LWJveC1mbGV4OjE7LXdlYmtpdC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjE7d2lkdGg6NDAlO2hlaWdodDo0MHB4O2Zsb2F0OmxlZnR9LmZsYXRwaWNrci10aW1lIC5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd1VwOmFmdGVye2JvcmRlci1ib3R0b20tY29sb3I6IzM5MzkzOX0uZmxhdHBpY2tyLXRpbWUgLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlcntib3JkZXItdG9wLWNvbG9yOiMzOTM5Mzl9LmZsYXRwaWNrci10aW1lLmhhc1NlY29uZHMgLm51bUlucHV0V3JhcHBlcnt3aWR0aDoyNiV9LmZsYXRwaWNrci10aW1lLnRpbWUyNGhyIC5udW1JbnB1dFdyYXBwZXJ7d2lkdGg6NDklfS5mbGF0cGlja3ItdGltZSBpbnB1dHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50Oy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7cGFkZGluZzowO2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6IzM5MzkzOTtmb250LXNpemU6MC44NzVyZW0gO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7YXBwZWFyYW5jZTp0ZXh0ZmllbGR9LmZsYXRwaWNrci10aW1lIGlucHV0LmZsYXRwaWNrci1ob3Vye2ZvbnQtd2VpZ2h0OmJvbGR9LmZsYXRwaWNrci10aW1lIGlucHV0LmZsYXRwaWNrci1taW51dGUsLmZsYXRwaWNrci10aW1lIGlucHV0LmZsYXRwaWNrci1zZWNvbmR7Zm9udC13ZWlnaHQ6NDAwfS5mbGF0cGlja3ItdGltZSBpbnB1dDpmb2N1c3tvdXRsaW5lOjA7Ym9yZGVyOjB9LmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItdGltZS1zZXBhcmF0b3IsLmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG17aGVpZ2h0OmluaGVyaXQ7ZmxvYXQ6bGVmdDtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOiMzOTM5Mzk7Zm9udC13ZWlnaHQ6Ym9sZDt3aWR0aDoyJTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC1hbGlnbi1zZWxmOmNlbnRlcjstbXMtZmxleC1pdGVtLWFsaWduOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcn0uZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbXtvdXRsaW5lOjA7d2lkdGg6MTglO2N1cnNvcjpwb2ludGVyO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjQwMH0uZmxhdHBpY2tyLXRpbWUgaW5wdXQ6aG92ZXIsLmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG06aG92ZXIsLmZsYXRwaWNrci10aW1lIGlucHV0OmZvY3VzLC5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBtOmZvY3Vze2JhY2tncm91bmQ6I2VlZX0uZmxhdHBpY2tyLWlucHV0W3JlYWRvbmx5XXtjdXJzb3I6cG9pbnRlcn1ALXdlYmtpdC1rZXlmcmFtZXMgZnBGYWRlSW5Eb3due2Zyb217b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfX1Aa2V5ZnJhbWVzIGZwRmFkZUluRG93bntmcm9te29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX19Ci8qKiAvY3NzL2lubGluZS5mci5uZXdjYXJzLmNzcyAqKi8KLmN1c3RvbS1wYWdlIC5jb2wtc20tMTIsIC5jdXN0b20tcGFnZSAuY29sLXNtLTksIC5jdXN0b20tcGFnZSAuY29sLXNtLTYsIC5jdXN0b20tcGFnZSAuY29sLXNtLTQsIC5jdXN0b20tcGFnZSAuY29sLXNtLTMgeyBwYWRkaW5nLWxlZnQ6MCAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OjAgIWltcG9ydGFudDsgfSAuY3VzdG9tLXBhZ2UgYSB7IGNvbG9yOiNiYjE2MmI7IH0gLmN1c3RvbS1wYWdlIHAgeyBjb2xvcjojNjY2OyBtYXJnaW46MTVweCAwOyB9IC5jdXN0b20tcGFnZSAuY29sLXNtLTYgcCB7IHdpZHRoOjk1JTsgfSAuY3VzdG9tLXBhZ2UgbGkgeyBtYXJnaW4tdG9wOjE1cHg7IH0gLmN1c3RvbS1wYWdlX19oMSB7IGNvbG9yOiM0NDQ7IGZvbnQtc2l6ZTozMHB4OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IG1hcmdpbi1ib3R0b206MTBweDsgfSAuY3VzdG9tLXBhZ2VfX2gxLS1jZW50ZXIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY3VzdG9tLXBhZ2VfX2gyIHsgY29sb3I6IzQ0NDsgZm9udC1zaXplOjI0cHg7IH0gLmN1c3RvbS1wYWdlX19oMyB7IGNvbG9yOiM0NDQ7IGZvbnQtc2l6ZToxNnB4OyB9IC5jdXN0b20tcGFnZV9faGVhZGluZy1pbWcgeyBtYXJnaW4tYm90dG9tOjMwcHg7IH0gLmN1c3RvbS1wYWdlX19saXN0LWhlYWRpbmcgeyBwYWRkaW5nLWxlZnQ6MTNweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDoyMHB4OyB9IC5jdXN0b20tcGFnZV9fbGlzdC1oZWFkaW5nLS1ibGFjayB7IGNvbG9yOiMwMDA7IH0gLmN1c3RvbS1wYWdlX19jaGVja2xpc3QgeyBsaXN0LXN0eWxlOm5vbmU7IGxpc3Qtc3R5bGUtaW1hZ2U6dXJsKCcvaW1hZ2VzL2NrZmluZGVyL2NoZWNrLnBuZycpOyB9IC5jdXN0b20tcGFnZV9fY2hlY2tsaXN0IGxpIHsgbWFyZ2luOjIwcHggMDsgY29sb3I6IzY2NjsgfSAuY3VzdG9tLXBhZ2VfX2xpc3QgeyBsaXN0LXN0eWxlOm5vbmU7IGNvbHVtbi1jb3VudDozOyB9IC5jdXN0b20tcGFnZV9fbGlzdCBsaSB7IGZvbnQtc2l6ZToxOHB4OyBtYXJnaW46MjBweCAwOyB9IC5jdXN0b20tcGFnZV9fbGlzdCBsaSBhIHsgY29sb3I6IzY2NjsgfSAuY3VzdG9tLXBhZ2VfX2NvbnRlbnQtaW1nIHsgZGlzcGxheTpibG9jazsgbWFyZ2luOjAgYXV0bzsgd2lkdGg6MTAwJTsgfSAuY3VzdG9tLXBhZ2VfX2hlYWRpbmctaW1nIHsgbWFyZ2luLWJvdHRvbTozMHB4OyB3aWR0aDoxMDAlOyB9IC5jdXN0b20tcGFnZV9fY29udGVudC1pbWcgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MjVweCBhdXRvOyB3aWR0aDphdXRvOyB9IC5jdXN0b20tbWFpbnRlbmFuY2Utc2NoZWR1bGVfX2J1dHRvbi13cmFwcGVyIHsgbWFyZ2luLXRvcDoyNXB4ICFpbXBvcnRhbnQ7IH0gQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo2MDBweCkgeyAuY3VzdG9tLXBhZ2VfX2gxIHsgZm9udC1zaXplOjV2dzsgfSAuY3VzdG9tLXBhZ2UgaW1nIHsgZGlzcGxheTpibG9jazsgbWFyZ2luOjAgYXV0bzsgd2lkdGg6YXV0bzsgfSAuY3VzdG9tLXBhZ2UgLmN1c3RvbS1wYWdlX19jb250ZW50LWltZyB7IHdpZHRoOjEwMCU7IH0gLmN1c3RvbS1wYWdlIHAgeyB0ZXh0LWFsaWduOmp1c3RpZnk7IH0gLmN1c3RvbS1wYWdlIC5jb250YWluZXIgeyB3aWR0aDo5MCUgIWltcG9ydGFudDsgfSAuY3VzdG9tLXBhZ2VfX2NoZWNrbGlzdCB7IHdpZHRoOjg1JTsgbWFyZ2luOjAgYXV0bzsgfSAuY3VzdG9tLXBhZ2VfX2xpc3QgeyBjb2x1bW4tY291bnQ6MTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmN1c3RvbS1wYWdlX19saXN0LWhlYWRpbmcgeyB0b3A6MHB4OyB9IC5jdXN0b20tcGFnZSB1bCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjE1cHg7IH0gLmN1c3RvbS1wYWdlIC5jdXN0b20tcGFnZV9fbGlzdCB7IGxlZnQ6MDsgfSB9IGJ1dHRvbiNvbmV0cnVzdC1hY2NlcHQtYnRuLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MWYgIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjFweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNvbmV0cnVzdC1yZWplY3QtYWxsLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MUYgIWltcG9ydGFudDsgY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzA1MTQxZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjFweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNvbmV0cnVzdC1wYy1idG4taGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBjb2xvcjojNmQ2ZTcxICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MXB4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uLnNhdmUtcHJlZmVyZW5jZS1idG4taGFuZGxlci5vbmV0cnVzdC1jbG9zZS1idG4taGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBjb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MXB4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uLm90LXBjLXJlZnVzZS1hbGwtaGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6IzA1MTQxRiAhaW1wb3J0YW50OyBjb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MXB4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uI2FjY2VwdC1yZWNvbW1lbmRlZC1idG4taGFuZGxlcnsgYmFja2dyb3VuZC1jb2xvcjojMDUxNDFmICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgZm9udC1zaXplOnNtYWxsICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MXB4ICFpbXBvcnRhbnQ7IH0gLm90LXBjLWxvZ28gaW1neyBjb250ZW50OnVybCgiL2ltYWdlcy9Mb2dvTW9iaWxlL0tpYS1Mb2dvLnN2ZyIpICFpbXBvcnRhbnQ7IH0gI29uZXRydXN0LXBjLXNkayAub3QtcGMtbG9nb3sgd2lkdGg6MzAlICFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDpsZWZ0ICFpbXBvcnRhbnQ7IH0gLm90LWJuci1sb2dveyBjb250ZW50OnVybCgiL2ltYWdlcy9Mb2dvTW9iaWxlL0tpYS1Mb2dvLnN2ZyIpICFpbXBvcnRhbnQ7IH0gI29uZXRydXN0LWJhbm5lci1zZGsub3QtYm5yLXctbG9nbyAub3QtYm5yLWxvZ297IHdpZHRoOjg1cHggIWltcG9ydGFudDsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6MjVweCAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gI29uZXRydXN0LXBvbGljeSB7IG1hcmdpbi1sZWZ0OjExMHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDoyNXB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MjVweCl7ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gLm90LWJuci1sb2dveyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjE1cHggMCAxMHB4IDAgIWltcG9ydGFudDsgdHJhbnNmb3JtOmluaGVyaXQ7IHpvb206NDAlOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gI29uZXRydXN0LXBvbGljeSB7IG1hcmdpbi1sZWZ0OjBweCAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW4tdG9wOjVweDsgfSAjb25ldHJ1c3QtY29uc2VudC1zZGsgI29uZXRydXN0LXBvbGljeS10aXRsZXsgZm9udC1zaXplOjFlbSAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1hY2NlcHQtYnRuLWhhbmRsZXIsICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1yZWplY3QtYWxsLWhhbmRsZXIsICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1wYy1idG4taGFuZGxlcnsgcGFkZGluZzoxMHB4IDEwcHg7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgYnV0dG9uLCAjb25ldHJ1c3QtcGMtc2RrIGJ1dHRvbiwgI290LXNkay1jb29raWUtcG9saWN5IGJ1dHRvbnsgbWFyZ2luLWJvdHRvbTowLjVyZW07IH0gI29uZXRydXN0LXBjLXNkayBidXR0b24geyB3aWR0aDphdXRvOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrIC5vdC1zZGstY29udGFpbmVyLCAjb25ldHJ1c3QtcGMtc2RrIC5vdC1zZGstY29udGFpbmVyLCAjb3Qtc2RrLWNvb2tpZS1wb2xpY3kgLm90LXNkay1jb250YWluZXJ7IHBhZGRpbmc6NXB4IDIwcHg7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgI29uZXRydXN0LXBvbGljeXsgbWFyZ2luOjA7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgI29uZXRydXN0LWJ1dHRvbi1ncm91cCAjb25ldHJ1c3QtYWNjZXB0LWJ0bi1oYW5kbGVyeyBmb250LXNpemU6dmFyKC0tZnMwKTsgfSB9PC9zdHlsZT4KCiAgICAgICAKICAgICAgIDwhLS0gT086OjE1ZGJlMWVjNGJiODE5ZjNiZTlhZjBiYjkxNzMxZDlmIC0tPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IsOgIHZlbmRyZSIgaWQ9InRleHRGb3JTYWxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJEw6l0YWlscyIgaWQ9InRleHREZXRhaWxzIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJUb3VzIiBpZD0idGV4dEFsbCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iUHJpeCBSw6lkdWl0IiBpZD0idGV4dFJlZHVjZWQiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlPDqWxlY3Rpb25uZXogdW5lIG1hcnF1ZSIgaWQ9InRleHRNYW51VGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlZvaXIgbm9zIG1vZMOobGVzIEtpYSIgaWQ9InRleHRCcmFuZFRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJNb2TDqGxlcyBLaWEgbmV1ZnMgMjAyNSwgMjAyNiAmYW1wOyAyMDI3IiBpZD0idGV4dE1haW5UaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQXV0b3MgbmV1dmVzIEtpYSAyMDI1LCAyMDI2ICZhbXA7IDIwMjcgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRDYXJUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iVlVTIG5ldWZzIEtpYSAyMDI1LCAyMDI2ICZhbXA7IDIwMjcgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRTVVZUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQ2FtaW9ucyBuZXVmcyBLaWEgMjAyNSwgMjAyNiAmYW1wOyAyMDI3IMOgIHskTkVXQ0lUWX0iIGlkPSJ0ZXh0VHJ1Y2tUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iSHlicmlkZXMgbmV1dmVzIEtpYSAyMDI1LCAyMDI2ICZhbXA7IDIwMjcgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRIeWJyaWRUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ibm91dmVhdSIgaWQ9InRleHROZXciPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IktpYSB7JENMQVNTTkFNRX0gMjAyNSwgMjAyNiAmYW1wOyAyMDI3IiBpZD0idGV4dENsYXNzVmlldyI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iQWNjdWVpbCIgaWQ9InRleHRIb21lIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvIiBpZD0idXJpSG9tZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iL25ldWZzL25vdXZlYXUuaHRtbCIgaWQ9InVyaU5ld0NhcnMiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9uZXVmcy8iIGlkPSJ0ZXh0TmV3Q2FyRm9sZGVyIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJOb3MgbWFycXVlcyIgaWQ9InRleHRNYW51U2VsZWN0Ij4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJFbiBTdG9jayAvIERpc3BvbmlibGVzIiBpZD0iaW5TdG9ja0xhYmVsIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvaW1hZ2VzLyIgaWQ9InRleHRCYXNlSW1hZ2VQYXRoIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvcHJveHlfYXViLyIgaWQ9ImJyYW5kSW1hZ2VQYXRoIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcmNlVG9GaWxsUG9wdXBfbmV3IiB2YWx1ZT0ibm9uZSI+CgkgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMSIgaWQ9ImlzbW9iaWxlIj4KICAgICAgIAkJCQk8c2NyaXB0PgoKCQkvL2dsb2JhbCBzdG9yZQoJCXZhciBzdG9yZSA9IG51bGw7CgoJCWNvbnN0IGluaXRTdG9yZSA9ICgpID0+IHsKCgkJCWlmKHR5cGVvZiBjcmVhdGVEYXRhU3RvcmUgIT09ICdmdW5jdGlvbicpewoJCQkJc2V0VGltZW91dChpbml0U3RvcmUsIDUwKTsKCQkJCXJldHVybjsKCQkJfQoKCQkJc3RvcmUgPSBjcmVhdGVEYXRhU3RvcmUoeyJjb250ZXh0Ijp7ImxhbmciOiJGUkVOQ0giLCJzaG9ydExhbmciOiJmciIsImlzTW9iaWxlIjp0cnVlLCJjYXRlZ29yeSI6ImFsbCIsInNlY3Rpb24iOiJORVciLCJsb2NhbGUiOiJmcl9DQSIsImRhdGVmb3JtYXQiOiIlZSAlQiJ9LCJkZWFsZXJJbmZvIjp7ImFkZHJlc3MiOiIzMDEwLCBydWUgSG9jaGVsYWdhIiwiY2l0eSI6Ik1vbnRyXHUwMGU5YWwiLCJwcm92aW5jZSI6IlF1XHUwMGU5YmVjIiwicmVnaW9uIjoiTW9udHJcdTAwZTlhbCIsInBvc3RhbCI6IkgxVyAxRzIiLCJuYW1lIjoiVmlsbGUtTWFyaWUgS2lhIiwiZW1haWwiOiJnbWlyYXNvbGFAdmlsbGVtYXJpZWtpYS5jb20iLCJkZWFsZXJJRCI6IjIwNjEiLCJkZWFsZXJHcm91cCI6ZmFsc2UsImZheCI6IiIsInBob25lIjoiNTE0LTU5OC04ODAwIiwibGF0aXR1ZGUiOiI0NS41NDA1MTAwMDAwIiwibG9uZ2l0dWRlIjoiLTczLjU1NTczMDAwMDAiLCJwcm92aW5jZV9jb2RlIjoiUUMiLCJkZXRhaWxfcHJpeCI6IiIsImRldGFpbF9wcml4X2FuIjoiIiwiZGV0YWlsX3ByaXhfdXNlZCI6IiIsImRldGFpbF9wcml4X3VzZWRfYW4iOiIiLCJvZW1EZWFsZXJDb2RlIjoiNjExMzUiLCJwcmljZV9kaXNjbGFpbWVyX3ByZWZlcmVuY2UiOiIwIiwicHJpY2VfZGlzY2xhaW1lcl9wcmVmZXJlbmNlX3VzZWQiOiIwIiwiZ21CQUMiOiIiLCJwbGFjZUlkIjoiQ2hJSjcyVHJJSk1ieVV3UlJOVnFUa3JDMTdJIn0sImlzVk0iOmZhbHNlLCJmaWVsZHMiOnsiU0hPV1JPT01fSU1BR0VfU09VUkNFX1RZUEUiOiJjaHJvbWUiLCJORVdfSU5WX0lNQUdFX1NPVVJDRV9UWVBFIjoiY2hyb21lIn0sImkxOG4iOnsiV0VCX1NJVEVfR0VORVJBVE9SX1BBR0VfTkVXSU5WIjoiXC9uZXVmc1wvaW52ZW50YWlyZVwvcmVjaGVyY2hlLmh0bWwiLCJQQVlNRU5UUyI6IlBhaWVtZW50cyIsIkRFRkFVTFRfUEFZTUVOVF9DQVNIIjoiQ29tcHRhbnQiLCJMQUJFTF9CRUZPUkVfVEFYRVMiOiJBdmFudCB0YXhlcyIsIkxBQkVMX1NBVkVfQlVJTERfVElUTEUiOiJFbnJlZ2lzdHJlciB2b3RyZSBjb25maWd1cmF0aW9uISIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9UT09MVElQIjoiUmVzdGF1cmV6IHVuZSBjb25maWd1cmF0aW9uIHByXHUwMGU5Y1x1MDBlOWRlbW1lbnQgZW5yZWdpc3RyXHUwMGU5ZSBlbiBzYWlzaXNzYW50IHZvdHJlIGFkcmVzc2UgZS1tYWlsIG91IHZvdHJlIG51bVx1MDBlOXJvIGRlIHRcdTAwZTlsXHUwMGU5cGhvbmUuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VNQUlMX1BIT05FIjoiU2Fpc2lzc2V6IHZvdHJlIGFkcmVzc2UgZS1tYWlsIGV0XC9vdSB2b3RyZSBudW1cdTAwZTlybyBkZSB0XHUwMGU5bFx1MDBlOXBob25lIHBvdXIgY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBlbnJlZ2lzdHJcdTAwZTllLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9FTUFJTF9QSE9ORV9FUlJPUiI6IlZldWlsbGV6IHNhaXNpciB2b3RyZSBhZHJlc3NlIGUtbWFpbCBvdSB2b3RyZSBudW1cdTAwZTlybyBkZSB0XHUwMGU5bFx1MDBlOXBob25lLiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9FUlJPUiI6IkxlcyBkb25uXHUwMGU5ZXMgZGUgY29uZmlndXJhdGlvbiBuZSBzb250IHBhcyBkaXNwb25pYmxlcyBwb3VyIGNldCBlbnJlZ2lzdHJlbWVudC4iLCJXRUJTSVRFX09FTURSX0xPQURfQlVJTERfUkVESVJFQ1RJTkciOiJDb21waWxhdGlvbiBjaGFyZ1x1MDBlOWUhIFJlZGlyZWN0aW9uIGVuIGNvdXJzLi4uIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfRVJST1IiOiJBdWN1bmUgY29uZmlndXJhdGlvbiBuJiMzOTthIFx1MDBlOXRcdTAwZTkgdHJvdXZcdTAwZTllIHBvdXIgY2V0dGUgYWRyZXNzZSBlLW1haWxcL251bVx1MDBlOXJvIGRlIHRcdTAwZTlsXHUwMGU5cGhvbmUuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0lOVkFMSURfVE9LRU4iOiJMZSBqZXRvbiBlc3QgaW52YWxpZGUgb3UgYSBleHBpclx1MDBlOS4gVmV1aWxsZXogclx1MDBlOWVzc2F5ZXIuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1QiOiJDaGFyZ2VtZW50IGRlcyBjb25maWd1cmF0aW9ucyBzYXV2ZWdhcmRcdTAwZTlzLi4uIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfU0VMRUNUIjoiU1x1MDBlOWxlY3Rpb25uZXogdW5lIGNvbmZpZ3VyYXRpb24gXHUwMGUwIGNoYXJnZXI6IiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfRkFJTEVEIjoiSW1wb3NzaWJsZSBkZSBjaGFyZ2VyIGxlcyBjb25maWd1cmF0aW9ucy4iLCJXRUJTSVRFX09FTURSX01GQV9TRU5EX0NPREUiOiJFbnZvaSBkdSBjb2RlIGRlIHZcdTAwZTlyaWZpY2F0aW9uLi4uIiwiV0VCU0lURV9PRU1EUl9NRkFfU1RBUlRfRVJST1IiOiJJbXBvc3NpYmxlIGRlIGRcdTAwZTltYXJyZXIgbGEgdlx1MDBlOXJpZmljYXRpb24uIiwiV0VCU0lURV9PRU1EUl9NRkFfRU5URVJfQ09ERSI6IlNhaXNpc3NleiBsZSBjb2RlIFx1MDBlMCA2IGNoaWZmcmVzIGVudm95XHUwMGU5IFx1MDBlMCB2b3RyZSBhZHJlc3NlIGUtbWFpbCBvdSBcdTAwZTAgdm90cmUgbnVtXHUwMGU5cm8gZGUgdFx1MDBlOWxcdTAwZTlwaG9uZS4iLCJXRUJTSVRFX09FTURSX01GQV9FTlRFUl9DT0RFX0VSUk9SIjoiVmV1aWxsZXogc2Fpc2lyIGxlIGNvZGUgZGUgdlx1MDBlOXJpZmljYXRpb24uIiwiV0VCU0lURV9PRU1EUl9NRkFfVkVSSUZZX0NPREUiOiJWXHUwMGU5cmlmaWNhdGlvbiBkdSBjb2RlLi4uIiwiV0VCU0lURV9PRU1EUl9NRkFfRVhQSVJFRF9DT0RFIjoiQ29kZSBpbnZhbGlkZSBvdSBleHBpclx1MDBlOS4gVmV1aWxsZXogclx1MDBlOWVzc2F5ZXIuIiwiV0VCU0lURV9PRU1EUl9NRkFfVkVSSUZZX0ZBSUxFRCI6IkxhIHZcdTAwZTlyaWZpY2F0aW9uIGEgXHUwMGU5Y2hvdVx1MDBlOS4gVmV1aWxsZXogclx1MDBlOWVzc2F5ZXIuIiwiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX1VQREFUSU5HIjoiTWlzZSBcdTAwZTAgam91ciBkZSBsYSBjb25maWd1YXRpb24uLi4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRFX1NVQ0NFU1MiOiJMYSBjb25maWd1YXRpb24gYSBcdTAwZTl0XHUwMGU5IG1pc2UgXHUwMGUwIGpvdXIgYXZlYyBzdWNjXHUwMGU4cy4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRFX0VSUk9SIjoiSW1wb3NzaWJsZSBkZSBtZXR0cmUgXHUwMGUwIGpvdXIgbGEgY29uZmlndWF0aW9uLiIsIldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9TQVZJTkciOiJTYXV2ZWdhcmRlIGRlIGxhIGNvbmZpZ3VhdGlvbi4uLiIsIldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9TQVZFX1NVQ0NFU1MiOiJDb25maWd1YXRpb24gZW5yZWdpc3RyXHUwMGU5ICEgVm91cyBwb3VycmV6IGxlIGNoYXJnZXIgdWx0XHUwMGU5cmlldXJlbWVudCBlbiB1dGlsaXNhbnQgdm90cmUgYWRyZXNzZSBlLW1haWwgb3Ugdm90cmUgbnVtXHUwMGU5cm8gZGUgdFx1MDBlOWxcdTAwZTlwaG9uZS4iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfU0FWRV9FUlJPUiI6IkltcG9zc2libGUgZCYjMzk7ZW5yZWdpc3RyZXIgbGEgY29uZmlndXJhdGlvbi4iLCJXRUJTSVRFX09FTURSX0JUTl9MT0FEIjoiQ2hhcmdlciIsIldFQlNJVEVfT0VNRFJfQlROX1ZFUklGWSI6IlZcdTAwZTlyaWZpZXIiLCJXRUJTSVRFX09FTURSX0JUTl9SRVNFTkRfQ09ERSI6IlJlbnZveWVyIGxlIGNvZGUiLCJXRUJTSVRFX09FTURSX01GQV9WRVJJRklDQVRJT05fQ09ERSI6IkxlIGNvZGUgZGUgdlx1MDBlOXJpZmljYXRpb24iLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfTU9EQUxfVElUTEUiOiJDaGFyZ2VyIHVuZSBjb25maWd1cmF0aW9uIGVucmVnaXN0clx1MDBlOWUifSwic2hvd09lbUltYWdlcyI6ZmFsc2V9KTsKCQl9OwoKCQlpbml0U3RvcmUoKTsKCgk8L3NjcmlwdD4KCQkJCQkJPHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDA7IGhlaWdodDogMDsgb3ZlcmZsb3c6IGhpZGRlbjsiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CgkJCQkJPHN5bWJvbCBpZD0iaWNvbi1jaGV2cm9uLXJpZ2h0IiB2aWV3Ym94PSIwIDAgMzIwIDUxMiI+CgkJPHBhdGggZD0iTTI4NS40NzYgMjcyLjk3MUw5MS4xMzIgNDY3LjMxNGMtOS4zNzMgOS4zNzMtMjQuNTY5IDkuMzczLTMzLjk0MSAwbC0yMi42NjctMjIuNjY3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxODguNTA1IDI1NiAzNC40ODQgMTAxLjI1NWMtOS4zMzUtOS4zNzktOS4zMTctMjQuNTQ0LjA0LTMzLjkwMWwyMi42NjctMjIuNjY3YzkuMzczLTkuMzczIDI0LjU2OS05LjM3MyAzMy45NDEgMEwyODUuNDc1IDIzOS4wM2M5LjM3MyA5LjM3MiA5LjM3MyAyNC41NjguMDAxIDMzLjk0MXoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWNoZXZyb24tZG93biIgdmlld2JveD0iMCAwIDQ0OCA1MTIiPgoJCTxwYXRoIGQ9Ik0yMDcuMDI5IDM4MS40NzZMMTIuNjg2IDE4Ny4xMzJjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MWwyMi42NjctMjIuNjY3YzkuMzU3LTkuMzU3IDI0LjUyMi05LjM3NSAzMy45MDEtLjA0TDIyNCAyODQuNTA1bDE1NC43NDUtMTU0LjAyMWM5LjM3OS05LjMzNSAyNC41NDQtOS4zMTcgMzMuOTAxLjA0bDIyLjY2NyAyMi42NjdjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxTDI0MC45NzEgMzgxLjQ3NmMtOS4zNzMgOS4zNzItMjQuNTY5IDkuMzcyLTMzLjk0MiAweiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tY2FyIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+CgkJPHBhdGggZD0iTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45eiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tc3RlZXJpbmctd2hlZWwiIHZpZXdib3g9IjAgMCA1MTIgNTEyIj4KCQk8cGF0aCBkPSJNMCAyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwQzM5Ny40IDAgNTEyIDExNC42IDUxMiAyNTZDNTEyIDM5Ny40IDM5Ny40IDUxMiAyNTYgNTEyQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2ek0xNjguOSAyODhINjYuNjVDODAuMTQgMzY4LjQgMTQzLjYgNDMxLjkgMjI0IDQ0NS4zVjM1OC45TDE2OC45IDI4OHpNMjg4IDM1OC45VjQ0NS4zQzM2OC40IDQzMS45IDQzMS45IDM2OC40IDQ0NS4zIDI4OEgzNDMuMUwyODggMzU4Ljl6TTM1MiAyMjRINDQ1LjNDNDMwLjEgMTMzLjIgMzUxLjEgNjQgMjU2IDY0QzE2MC45IDY0IDgxLjg5IDEzMy4yIDY2LjY1IDIyNEgxNjBMMTY3LjIgMjA5LjdDMTcyLjYgMTk4LjggMTgzLjcgMTkyIDE5NS44IDE5MkgzMTYuMkMzMjguMyAxOTIgMzM5LjQgMTk4LjggMzQ0LjggMjA5LjdMMzUyIDIyNHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLXNob3BwaW5nLWNhcnQiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNNTI4LjEyIDMwMS4zMTlsNDcuMjczLTIwOEM1NzguODA2IDc4LjMwMSA1NjcuMzkxIDY0IDU1MS45OSA2NEgxNTkuMjA4bC05LjE2Ni00NC44MUMxNDcuNzU4IDguMDIxIDEzNy45MyAwIDEyNi41MjkgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg2OS44ODNsNzAuMjQ4IDM0My40MzVDMTQ3LjMyNSA0MTcuMSAxMzYgNDM1LjIyMiAxMzYgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0xNS42NzQtNi40NDctMjkuODM1LTE2LjgyNC00MGgyMDkuNjQ3QzQzMC40NDcgNDI2LjE2NSA0MjQgNDQwLjMyNiA0MjQgNDU2YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZjMC0yMi4xNzItMTIuODg4LTQxLjMzMi0zMS41NzktNTAuNDA1bDUuNTE3LTI0LjI3NmMzLjQxMy0xNS4wMTgtOC4wMDItMjkuMzE5LTIzLjQwMy0yOS4zMTlIMjE4LjExN2wtNi41NDUtMzJoMjkzLjE0NWMxMS4yMDYgMCAyMC45Mi03Ljc1NCAyMy40MDMtMTguNjgxeiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tdGFncyIgdmlld2JveD0iMCAwIDY0MCA1MTIiPgoJCTxwYXRoIGQ9Ik00OTcuOTQxIDIyNS45NDFMMjg2LjA1OSAxNC4wNTlBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djIwNC4xMThhNDggNDggMCAwIDAgMTQuMDU5IDMzLjk0MWwyMTEuODgyIDIxMS44ODJjMTguNzQ0IDE4Ljc0NSA0OS4xMzYgMTguNzQ2IDY3Ljg4MiAwbDIwNC4xMTgtMjA0LjExOGMxOC43NDUtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMC02Ny44ODJ6TTExMiAxNjBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTUxMy45NDEgMTMzLjgyM0w0MjEuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMGwtLjM2LS4zNkw1MjcuNjQgMzIzLjUyMmMxNi45OTktMTYuOTk5IDI2LjM2LTM5LjYgMjYuMzYtNjMuNjRzLTkuMzYyLTQ2LjY0MS0yNi4zNi02My42NEwzMzEuMzk3IDBoNDguNzIxYTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MnoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWhhbmQtaG9sZGluZy11c2QiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNMjcxLjA2LDE0NC4zbDU0LjI3LDE0LjNhOC41OSw4LjU5LDAsMCwxLDYuNjMsOC4xYzAsNC42LTQuMDksOC40LTkuMTIsOC40aC0zNS42YTMwLDMwLDAsMCwxLTExLjE5LTIuMmMtNS4yNC0yLjItMTEuMjgtMS43LTE1LjMsMmwtMTksMTcuNWExMS42OCwxMS42OCwwLDAsMC0yLjI1LDIuNjYsMTEuNDIsMTEuNDIsMCwwLDAsMy44OCwxNS43NCw4My43Nyw4My43NywwLDAsMCwzNC41MSwxMS41VjI0MGMwLDguOCw3LjgzLDE2LDE3LjM3LDE2aDE3LjM3YzkuNTUsMCwxNy4zOC03LjIsMTcuMzgtMTZWMjIyLjRjMzIuOTMtMy42LDU3Ljg0LTMxLDUzLjUtNjMtMy4xNS0yMy0yMi40Ni00MS4zLTQ2LjU2LTQ3LjdMMjgyLjY4LDk3LjRhOC41OSw4LjU5LDAsMCwxLTYuNjMtOC4xYzAtNC42LDQuMDktOC40LDkuMTItOC40aDM1LjZBMzAsMzAsMCwwLDEsMzMyLDgzLjFjNS4yMywyLjIsMTEuMjgsMS43LDE1LjMtMmwxOS0xNy41QTExLjMxLDExLjMxLDAsMCwwLDM2OC40Nyw2MWExMS40MywxMS40MywwLDAsMC0zLjg0LTE1Ljc4LDgzLjgyLDgzLjgyLDAsMCwwLTM0LjUyLTExLjVWMTZjMC04LjgtNy44Mi0xNi0xNy4zNy0xNkgyOTUuMzdDMjg1LjgyLDAsMjc4LDcuMiwyNzgsMTZWMzMuNmMtMzIuODksMy42LTU3Ljg1LDMxLTUzLjUxLDYzQzIyNy42MywxMTkuNiwyNDcsMTM3LjksMjcxLjA2LDE0NC4zWk01NjUuMjcsMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYsMEw0MzAuMjcsNDAyYTYzLjY0LDYzLjY0LDAsMCwxLTQwLDE0SDI3MmExNiwxNiwwLDAsMSwwLTMyaDc4LjI5YzE1LjksMCwzMC43MS0xMC45LDMzLjI1LTI2LjZhMzEuMiwzMS4yLDAsMCwwLC40Ni01LjQ2QTMyLDMyLDAsMCwwLDM1MiwzMjBIMTkyYTExNy42NiwxMTcuNjYsMCwwLDAtNzQuMSwyNi4yOUw3MS40LDM4NEgxNkExNiwxNiwwLDAsMCwwLDQwMHY5NmExNiwxNiwwLDAsMCwxNiwxNkgzNzIuNzdhNjQsNjQsMCwwLDAsNDAtMTRMNTY0LDM3N2EzMiwzMiwwLDAsMCwxLjI4LTQ4LjlaIj48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi10b29scyIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik01MDEuMSAzOTUuN0wzODQgMjc4LjZjLTIzLjEtMjMuMS01Ny42LTI3LjYtODUuNC0xMy45TDE5MiAxNTguMVY5Nkw2NCAwIDAgNjRsOTYgMTI4aDYyLjFsMTA2LjYgMTA2LjZjLTEzLjYgMjcuOC05LjIgNjIuMyAxMy45IDg1LjRsMTE3LjEgMTE3LjFjMTQuNiAxNC42IDM4LjIgMTQuNiA1Mi43IDBsNTIuNy01Mi43YzE0LjUtMTQuNiAxNC41LTM4LjIgMC01Mi43ek0zMzEuNyAyMjVjMjguMyAwIDU0LjkgMTEgNzQuOSAzMWwxOS40IDE5LjRjMTUuOC02LjkgMzAuOC0xNi41IDQzLjgtMjkuNSAzNy4xLTM3LjEgNDkuNy04OS4zIDM3LjktMTM2LjctMi4yLTktMTMuNS0xMi4xLTIwLjEtNS41bC03NC40IDc0LjQtNjcuOS0xMS4zTDMzNCA5OC45bDc0LjQtNzQuNGM2LjYtNi42IDMuNC0xNy45LTUuNy0yMC4yLTQ3LjQtMTEuNy05OS42LjktMTM2LjYgMzcuOS0yOC41IDI4LjUtNDEuOSA2Ni4xLTQxLjIgMTAzLjZsODIuMSA4Mi4xYzguMS0xLjkgMTYuNS0yLjkgMjQuNy0yLjl6bS0xMDMuOSA4MmwtNTYuNy01Ni43TDE4LjcgNDAyLjhjLTI1IDI1LTI1IDY1LjUgMCA5MC41czY1LjUgMjUgOTAuNSAwbDEyMy42LTEyMy42Yy03LjYtMTkuOS05LjktNDEuNi01LTYyLjd6TTY0IDQ3MmMtMTMuMiAwLTI0LTEwLjgtMjQtMjQgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLjItMTAuNyAyNC0yNCAyNHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLXVzZXItZnJpZW5kcyIgdmlld2JveD0iMCAwIDY0MCA1MTIiPgoJCTxwYXRoIGQ9Ik0xOTIgMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzI1My45IDMyIDE5MiAzMiA4MCA4Mi4xIDgwIDE0NHM1MC4xIDExMiAxMTIgMTEyem03Ni44IDMyaC04LjNjLTIwLjggMTAtNDMuOSAxNi02OC41IDE2cy00Ny42LTYtNjguNS0xNmgtOC4zQzUxLjYgMjg4IDAgMzM5LjYgMCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yOC44YzAtNjMuNi01MS42LTExNS4yLTExNS4yLTExNS4yek00ODAgMjU2YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2LTk2IDQzLTk2IDk2IDQzIDk2IDk2IDk2em00OCAzMmgtMy44Yy0xMy45IDQuOC0yOC42IDgtNDQuMiA4cy0zMC4zLTMuMi00NC4yLThINDMyYy0yMC40IDAtMzkuMiA1LjktNTUuNyAxNS40IDI0LjQgMjYuMyAzOS43IDYxLjIgMzkuNyA5OS44djM4LjRjMCAyLjItLjUgNC4zLS42IDYuNEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1nbG9iZSIgdmlld2JveD0iMCAwIDQ5NiA1MTIiPgoJCTxwYXRoIGQ9Ik0zMzYuNSAxNjBDMzIyIDcwLjcgMjg3LjggOCAyNDggOHMtNzQgNjIuNy04OC41IDE1MmgxNzd6TTE1MiAyNTZjMCAyMi4yIDEuMiA0My41IDMuMyA2NGgxODUuM2MyLjEtMjAuNSAzLjMtNDEuOCAzLjMtNjRzLTEuMi00My41LTMuMy02NEgxNTUuM2MtMi4xIDIwLjUtMy4zIDQxLjgtMy4zIDY0em0zMjQuNy05NmMtMjguNi02Ny45LTg2LjUtMTIwLjQtMTU4LTE0MS42IDI0LjQgMzMuOCA0MS4yIDg0LjcgNTAgMTQxLjZoMTA4ek0xNzcuMiAxOC40QzEwNS44IDM5LjYgNDcuOCA5Mi4xIDE5LjMgMTYwaDEwOGM4LjctNTYuOSAyNS41LTEwNy44IDQ5LjktMTQxLjZ6TTQ4Ny40IDE5MkgzNzIuN2MyLjEgMjEgMy4zIDQyLjUgMy4zIDY0cy0xLjIgNDMtMy4zIDY0aDExNC42YzUuNS0yMC41IDguNi00MS44IDguNi02NHMtMy4xLTQzLjUtOC41LTY0ek0xMjAgMjU2YzAtMjEuNSAxLjItNDMgMy4zLTY0SDguNkMzLjIgMjEyLjUgMCAyMzMuOCAwIDI1NnMzLjIgNDMuNSA4LjYgNjRoMTE0LjZjLTItMjEtMy4yLTQyLjUtMy4yLTY0em0zOS41IDk2YzE0LjUgODkuMyA0OC43IDE1MiA4OC41IDE1MnM3NC02Mi43IDg4LjUtMTUyaC0xNzd6bTE1OS4zIDE0MS42YzcxLjQtMjEuMiAxMjkuNC03My43IDE1OC0xNDEuNmgtMTA4Yy04LjggNTYuOS0yNS42IDEwNy44LTUwIDE0MS42ek0xOS4zIDM1MmMyOC42IDY3LjkgODYuNSAxMjAuNCAxNTggMTQxLjYtMjQuNC0zMy44LTQxLjItODQuNy01MC0xNDEuNmgtMTA4eiI+PC9wYXRoPgoJPC9zeW1ib2w+CgkJCTwvc3ZnPgoKCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImlzTW9iaWxlIiBuYW1lPSJpc01vYmlsZSIgdmFsdWU9IjEiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU2l0ZXNfUGFnZV9HZW5lcmFsX01lbnVfQlROIiB2YWx1ZT0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCgkJCTxoZWFkZXIgY2xhc3M9Im1vYmlsZS1oZWFkZXIgZmxleC1ib3ggZmxleC1iZXR3ZWVuIGFsaWduLWNlbnRlciAtLWZzMiB0aGluIiBoaWRkZW49IjEiPgoJCQkJCgkJCTxib3gtbGMgY2xhc3M9ImJ1cmdlci1tZW51LWNvbnRhaW5lciAtcGgiPgoJCQkJPGxhYmVsIGZvcj0iYm1fdG9nZ2xlIj48L2xhYmVsPgoJCQkJPGlucHV0IGlkPSJibV90b2dnbGUiIHR5cGU9ImNoZWNrYm94IiBoaWRkZW4+CgkJCQk8ZGl2IGlkPSJidXJnZXItbWVudS1idXR0b24iIGNsYXNzPSJzdGFjay1sYyBidXJnZXItbWVudS1idXR0b24gLS1zLTIiPgoJCQkJCTxzcGFuIGNsYXNzPSJidXJnZXJfdG9wIj48L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImJ1cmdlcl9taWRkbGUiPjwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iYnVyZ2VyX2JvdHRvbSI+PC9zcGFuPgoJCQkJPC9kaXY+CgoJCQkJPGFzaWRlIGNsYXNzPSJidXJnZXItbmF2Ij4KCQkJCQkJCQk8bmF2PgoJCQkJPHVsPgoJCQkJCQkJCQk8bGkgY2xhc3M9IiIgaHJlZj0iP3BhdGg9Ij4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iVVNFRCAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2ludmVudGFpcmUuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNhciI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPlZlbnRlczwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fVVNFRCIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfTkVXSU5WIiBocmVmPSI\/cGF0aD0vbmV1ZnMvaW52ZW50YWlyZS9yZWNoZXJjaGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+VsOpaGljdWxlcyBuZXVmczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfQ0FSUyIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL3JlY2hlcmNoZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ww6loaWN1bGVzIGQnb2NjYXNpb248L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0NFUlRfQ0FSUyIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL2NlcnRpZmllcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ww6loaWN1bGVzIGQnb2NjYXNpb24gY2VydGlmw6lzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9BTExJTlYiIGhyZWY9Ij9wYXRoPS9pbnZlbnRhaXJlL2E4Lmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlZvaXIgdG91cyBsZXMgdsOpaGljdWxlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQXzRmNGZiZmEyODg1MzdhYjYiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi1jZXJ0aWZpZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5RdSdlc3QtY2UgcXVlIHbDqWhpY3VsZSBkJ29jY2FzaW9uIGNlcnRpZmnDqT88L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4KCQkJCQkJPC9zdGFjay1sYz4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9IiI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9Ik5FVyAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L25ldWZzL25vdXZlYXUuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLXN0ZWVyaW5nLXdoZWVsIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+U2FsbGUgZCdleHBvc2l0aW9uPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9ORVciIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfTElORVVQIiBocmVmPSI\/cGF0aD0vbmV1ZnMvbm91dmVhdS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Wb2lyIGxhIGdhbW1lPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX1BIRVYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9QSEVWLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkh5YnJpZGVzIHJlY2hhcmdlYWJsZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfU0VEQU4iIGhyZWY9Ij9wYXRoPS9uZXVmcy9hdXRvcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5BdXRvczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV19NSU5JVkFOIiBocmVmPSI\/cGF0aD0vbmV1ZnMvbWluaV9mb3VyZ29ubmV0dGVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk1pbmktZm91cmdvbm5ldHRlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV19TVVYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9WVVMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+VlVTPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX0VMRUNUUklDIiBocmVmPSI\/cGF0aD0vbmV1ZnMvZWxlY3RyaXF1ZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj7DiWxlY3RyaXF1ZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfSFlCUklEIiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHlicmlkZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SHlicmlkZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF9jMzZjZGU5NGU3N2M0Y2QzIiBocmVmPSI\/cGF0aD0vdmVoaWN1bGVzLWVsZWN0cmlxdWVzLWtpYS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ww6loaWN1bGVzIMOpbGVjdHJpcXVlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iVE9PTFMgICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9jb25maWd1cmF0aW9uLWV0LXByaXgvY29uZmlndXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tc2hvcHBpbmctY2FydCI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPk91dGlscyBkJ2FjaGF0PC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9UT09MUyIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEJOUCIgaHJlZj0iP3BhdGg9L2NvbmZpZ3VyYXRpb24tZXQtcHJpeC9jb25maWd1cmF0aW9uLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkNvbmZpZ3VyYXRldXI8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBURVNURFJWIiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvZXNzYWlzLXJvdXRpZXItbmV1Zi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Sw6lzZXJ2ZXIgdW4gZXNzYWkgcm91dGllcjwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFFVT1RFIiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvcHJpeC1uZXVmLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk9idGVuaXIgdW4gZGV2aXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBUUkFERUlOIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIHRhcmdldD0iIiBvbmNsaWNrPSJqYXZhc2NyaXB0OnZvaWQoJCgnI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCkpOyI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+w4l2YWx1ZXogbCfDqWNoYW5nZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEJST0NIVVJFIiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvYnJvY2h1cmVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkJyb2NodXJlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iT0ZGRVJTICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vcHJvbW90aW9ucy5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tdGFncyI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPk9mZnJlczwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fT0ZGRVJTIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgUFJPTU9fU0VSVklDRSIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCNzZXJ2aWNlIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5TZXJ2aWNlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgUFJPTU9fTUFOVUZBQ1RVUkVSIiBocmVmPSI\/cGF0aD0vcHJvbW90aW9ucy5odG1sI21hbnVmYWN0dXJlciIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SW5jaXRhdGlmcyBLaWE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF9lZTMwZGYzNzQ5ZjE0MDI4IiBocmVmPSI\/cGF0aD0vb2ZmcmVzLXByb21vdGlvbm5lbGxlcy1raWEuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+T2ZmcmVzIHByb21vdGlvbm5lbGxlcyBLaWE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBQUk9NT19PRU1SRUJBVEVTX0tJQSIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCNraWFyZWJhdGVzIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Nb2TDqGxlcyBLaWEgZW4gcmFiYWlzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJGSU5BTkNFICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvZmluYW5jZW1lbnQuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWhhbmQtaG9sZGluZy11c2QiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0IiBkYXRhLW1lbnUtdHJhbnNsYXRlPSJGSU5BTkNFIj5QcsOpcXVhbGlmaWNhdGlvbiBpbnN0YW50YW7DqWU8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX0ZJTkFOQ0UiIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF9iZDRjM2FkOWFlNTc2MDciIGhyZWY9Ij9wYXRoPS9raWEtZmluYW5jZS1mci5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5LaWEgRmluYW5jZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IENSRURJVCIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2ZpbmFuY2VtZW50Lmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlNveWV6IHByw6lxdWFsaWZpw6kgaW5zdGFudGFuw6ltZW50PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJTRVJWSUNFICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vc2VydmljZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLXRvb2xzIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCIgZGF0YS1tZW51LXRyYW5zbGF0ZT0iU0VSVklDRSI+UGnDqGNlcyAmYW1wOyBTZXJ2aWNlPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9TRVJWSUNFIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgQVBQT0lOVE1FTlQiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9yZW5kZXotdm91cy1hdS1zZXJ2aWNlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlByZW5kcmUgcmVuZGV6LXZvdXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBQVF9BQ0NFU1MiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9jb21tYW5kZS1waWVjZXMtYWNjZXNzb2lyZXMtYXV0b21vYmlsZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UGnDqGNlcyAmYW1wOyBBY2Nlc3NvaXJlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQX2QxODUyMzMwNmM2NWJjZWQiIGhyZWY9Ij9wYXRoPS9nYXJhbnRpZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5HYXJhbnRpZSBLaWE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF80NDRkZDY5ZmJlYTY1NTBmIiBocmVmPSI\/cGF0aD0va2lhLXByb3RlY3QtZnIuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+S2lhIFByb3RlY3Q8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF82MzFhMWUzMTFmZjA3OGRmIiBocmVmPSI\/cGF0aD0vcGllY2VzLW9yaWdpbmUta2lhLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlBpw6hjZXMgZCdvcmlnaW5lIEtpYTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQXzQ4ODUzM2EzZmFiNDExZjEiIGhyZWY9Ij9wYXRoPS9leHBlcnRzLWVuLXBuZXVzLWtpYS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5FeHBlcnRzIGVuIHBuZXVzIEtpYTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQX2E1ZGU4YTcxNWU2NjZlYTEiIGhyZWY9Ij9wYXRoPS9lbnRyZXRpZW5zLXJlY29tbWFuZGVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkVudHJldGllbnMgcmVjb21tYW5kw6lzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfODZjNWI3NjY0Njg2MzM0ZCIgaHJlZj0iP3BhdGg9L2FjY2Vzc29pcmVzLWtpYS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5BY2Nlc3NvaXJlcyBLaWE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF8zMzY4ZDc2YTFlZTlhNjJmIiBocmVmPSI\/cGF0aD0vYXNzaXN0YW5jZS1yb3V0aWVyZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Bc3Npc3RhbmNlIHJvdXRpw6hyZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iVEVBTSAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2NvbnRhY3Rlem5vdXMuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLXVzZXItZnJpZW5kcyI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPsOAIHByb3BvcyBkZSBub3VzPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9URUFNIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXUyIgaHJlZj0iP3BhdGg9L25vdXZlbGxlcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ob3V2ZWxsZXMgZXQgw6l2w6luZW1lbnRzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgQ09OVEFDVCIgaHJlZj0iP3BhdGg9L2NvbnRhY3Rlem5vdXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q29udGFjdGV6LW5vdXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBKT0lOIiBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvZW1wbG9pcy1hdXRvbW9iaWxlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkpvaWduZXotdm91cyDDoCBsJ8OpcXVpcGU8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4KCQkJCQkJPC9zdGFjay1sYz4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9Im1lbnUtZ3JvdXAiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJMQU5HVUFHRSAgLWJvbGQgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2VuZy8iIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1nbG9iZSI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPkVuZ2xpc2g8L3NwYW4+CgkJCQkJCQoJCQkJCTwvYT4KCQkJCQkKCQkJCTwvbGk+CgoJCQkJCgoJCQkJPC91bD4KCQkJPC9uYXY+CgkJCQk8L2FzaWRlPgoJCQk8L2JveC1sYz4KCgoJCQk8c3RhY2stbGMgY2xhc3M9ImxvZ28tYWN0aW9uIHNocmluay1ncm93IGFsaWduLWNlbnRlciBmbGV4LWV2ZW5seSI+CgkJCQk8YSBjbGFzcz0ibG9nbyIgaHJlZj0iP3BhdGg9LyIgaXRlbXByb3A9InVybCI+CgkJCQkJPGltZyBhbHQ9IkxvZ28iIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLXNjb2RlcmVmPSI1MTk3OC1UIiBzcmM9Imh0dHBzOi8vdmlsbGVtYXJpZWtpYS5jb20vL2ltYWdlcy9Mb2dvTW9iaWxlL0tpYS1Mb2dvLnN2ZyIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDMwcHg7IiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaGVhZGVyLWRlYWxlci1uYW1lIC1tMCI+CgkJCQlWaWxsZS1NYXJpZSBLaWEKCQkJPC9zcGFuPgoJCQk8L3N0YWNrLWxjPgoJCQk8ZGl2IGNsYXNzPSJzZXJ2aWNlLWFjdGlvbiIgYXJpYS1sYWJlbD0iIj4KCQkJCTxhIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9yZW5kZXotdm91cy1hdS1zZXJ2aWNlLmh0bWwiPgoJCQkJCTxzdmcgY2xhc3M9IiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+PCEtLSBGb250IEF3ZXNvbWUgRnJlZSA1LjE1LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6IENDIEJZIDQuMCwgRm9udHM6IFNJTCBPRkwgMS4xLCBDb2RlOiBNSVQgTGljZW5zZSkgLS0+PHBhdGggZD0iTTUwNy43MyAxMDkuMWMtMi4yNC05LjAzLTEzLjU0LTEyLjA5LTIwLjEyLTUuNTFsLTc0LjM2IDc0LjM2LTY3Ljg4LTExLjMxLTExLjMxLTY3Ljg4IDc0LjM2LTc0LjM2YzYuNjItNi42MiAzLjQzLTE3LjktNS42Ni0yMC4xNi00Ny4zOC0xMS43NC05OS41NS45MS0xMzYuNTggMzcuOTMtMzkuNjQgMzkuNjQtNTAuNTUgOTcuMS0zNC4wNSAxNDcuMkwxOC43NCA0MDIuNzZjLTI0Ljk5IDI0Ljk5LTI0Ljk5IDY1LjUxIDAgOTAuNSAyNC45OSAyNC45OSA2NS41MSAyNC45OSA5MC41IDBsMjEzLjIxLTIxMy4yMWM1MC4xMiAxNi43MSAxMDcuNDcgNS42OCAxNDcuMzctMzQuMjIgMzcuMDctMzcuMDcgNDkuNy04OS4zMiAzNy45MS0xMzYuNzN6TTY0IDQ3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6Ij48L3BhdGg+PC9zdmc+CgkJCQkJCgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8YSBjbGFzcz0icGhvbmUtYWN0aW9uIiB0aXRsZT0iQ29udGFjdGV6LW5vdXMiIGRhdGEtZGVwYXJ0bWVudD0iU2FsZXMiIGhyZWY9Ij9wYXRoPXRlbDo1MTQlMjA1OTgtODgwMCI+CgkJCQk8c3ZnIGNsYXNzPSIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld2JveD0iMCAwIDUxMiA1MTIiPjwhLS0gRm9udCBBd2Vzb21lIEZyZWUgNS4xNS4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik00OTcuMzkgMzYxLjhsLTExMi00OGEyNCAyNCAwIDAgMC0yOCA2LjlsLTQ5LjYgNjAuNkEzNzAuNjYgMzcwLjY2IDAgMCAxIDEzMC42IDIwNC4xMWw2MC42LTQ5LjZhMjMuOTQgMjMuOTQgMCAwIDAgNi45LTI4bC00OC0xMTJBMjQuMTYgMjQuMTYgMCAwIDAgMTIyLjYuNjFsLTEwNCAyNEEyNCAyNCAwIDAgMCAwIDQ4YzAgMjU2LjUgMjA3LjkgNDY0IDQ2NCA0NjRhMjQgMjQgMCAwIDAgMjMuNC0xOC42bDI0LTEwNGEyNC4yOSAyNC4yOSAwIDAgMC0xNC4wMS0yNy42eiI+PC9wYXRoPjwvc3ZnPgoJCQkJCgkJCTwvYT4KCgkJCTwvaGVhZGVyPgkKCQkJCgkJCQoKCQkJPGRpdiBpZD0icGhvbmVOdW1iZXJEaXYiIGNsYXNzPSJyZXZlYWwtbW9kYWwiIHN0eWxlPSJ3aWR0aDo4MCU7bWFyZ2luLWxlZnQ6MHB4O2xlZnQ6NSU7cGFkZGluZzo1JTt6LWluZGV4OiA5OTk5OTk5O3Zpc2liaWxpdHk6aGlkZGVuO3RvcDogLTEwMDBweDtwb3NpdGlvbjogYWJzb2x1dGU7Ij48L2Rpdj4KCgkJCQoJCQkKCQkJPCEtLSBPTzo6MDU1ODVhNjJjNDExZmRiYmI2ODgyYWRkMGI1M2VlMjQgLS0+CgkJCTwhLS1lbmQgdG9wIC0tPgoKCiAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2hib3giPgogICAgICAgICAgICAgICA8ZGl2IGlkPSJuZXdjYXJDb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBNYWluQm94TGF5ZXIiPgogICAgICAgIDwhLS0gSU5JVElBTCBMT0NBVElPTkJBUiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBPdXRlckJveExheWVyIj4KICAgICAgICAJPGRpdiBjbGFzcz0iaGVhZGVySW1nIj48aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMSIgaWQ9InRyYWRlSW5CYXJTdGlja3lCb3R0b20iPgo8IS0tU1RBUlRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+CgoJCQkJCTxkaXYgaWQ9InRyYWRlSW5CYXJNb2JpbGUiIGNsYXNzPSJib3gtbGMgLWNsZWFyIj4KICAgICAgICAgICAgCQk8ZGl2IGlkPSJ0cmFkZUluQmFyV01vYmlsZSIgY2xhc3M9ImZsZXgtYm94IGZsZXgtZXF1YWwiPgoJCQkJCTx0YWJsZSBjbGFzcz0ibWlkZGxlIiBpZD0iZGVmYXVsdFRvcEJhbm5lciI+CgkJCQkJPHRib2R5PgoJCQkJCQk8dHI+CgkJCQkJCTx0ZCBpZD0iZGVmYXVsdFRvcEJhbm5lcldyYXAiPgoJCQkJCQkJPGRpdiBpZD0iZGVmYXVsdFRvcEJhbm5lclRpdGxlIj48cD5Ew6ljb3V2cmV6IGxhIHZhbGV1ciBkZSB2b3RyZSDDqWNoYW5nZTwvcD48L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyIj4KCQkJCQkJCQk8ZGl2PjxhIGRhdGEtcG9wdXBpZD0iVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIj5SRUNFVkVaIFVOIEVTVElNw4kgR1JBVFVJVCE8L2E+PC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxkaXYgaWQ9ImRlZmF1bHRUb3BCYW5uZXJMb2dvIj4KCQkJCQkJCQk8cD48c3Bhbj5Qcm9wdWxzw6kgcGFyPC9zcGFuPiBBY2N1LVRyYWRlPC9wPgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvdGQ+CgkJCQkJCTwvdHI+CgkJCQkJPC90Ym9keT4KCQkJCQk8L3RhYmxlPgoJCQkJCTwvZGl2PgoJCQkJCTwvZGl2Pjxib3gtbGMgaWQ9InRyYWRlSW5CYXJNb2JpbGVCdXR0b24iIGNsYXNzPSJ0cmFkZUluQmFyTW9iaWxlQnV0dG9uIC0tZnMwIiBzdHlsZT0iZGlzcGxheTpmbGV4O3dpZHRoOjE0MHB4IWltcG9ydGFudDsiPjxpIGNsYXNzPSJmYSBmYS1zeW5jIGZhLXNwaW4iPjwvaT48YSBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDt3aWR0aDogMTAwJTtmbG9hdDogbGVmdDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO2ZvbnQtc2l6ZTogLjlyZW07cGFkZGluZy1sZWZ0OiA1cHg7d2lkdGg6MTAwJTsiIGRhdGEtcG9wdXBpZD0iVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIj7DiXZhbHVleiB2b3RyZTxwIHN0eWxlPSJmb250LXNpemU6IDFyZW07Zm9udC13ZWlnaHQ6IGJvbGQ7Ij7DiUNIQU5HRSE8L3A+PC9hPjwvYm94LWxjPgkJCgkJPGRpdiBpZD0iVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjMwMHB4O2hlaWdodDo5ODBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc190cmFkZWluYmFycG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6OGRhODI0ODVmM2QzZWI4OThkZTkyOWM4NzczMDMyMGEgLS0+CgoJCQoKICAgIDxkaXYgaWQ9ImVtYWlsU3VjY2Vzc01lc3NhZ2VfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxkaXYgY2xhc3M9Imljb24tdGl0bGUiPgogICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9InRpdGxlLWljb24gc3VjY2VzcyAtbWwwIj48L3NwYW4+IC0tPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZS10eHQiPlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIGVudm95w6llITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPlZpbGxlLU1hcmllIEtpYSB2b3VzIHJlbWVyY2llIGQnYXZvaXIgY29tbXVuaXF1w6kgdm90cmUgZGVtYW5kZS4gVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHNvdXMgcGV1LjwvcD4KICAgICAgPHAgY2xhc3M9InNlcnZpY2VTdWNjZXNzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGJyPk1lcmNpIHBvdXIgdm90cmUgZGVtYW5kZS4gVW4gbWVtYnJlIGRlIG5vdHJlIMOpcXVpcGUgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBzb3VzIHBldS48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9IjE2NTk0OTc2MDcyIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iSjk4ckNMV2Q4YllaRU1qNmpPazkiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSIxMzg0MjQ4NTU1Mjg5NDgwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9InZpbGxlbWFyaWVraWEuY29tIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZV9UcmFkZUluQmFyUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdS48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjplMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNiAtLT4KCQkKDTwhLS0gVFJBREUgSU4gQkFSIE5FV0NBUlMgLS0+Cg0KPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KCjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9InVuZGVyQmFubmVyIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBPdXRlckJveExheWVyIj4KICAgICAgICAJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgogICAgICAgIAkJPGRpdiBjbGFzcz0iSW5uZXJCb3hMYXllciI+PGgxIGNsYXNzPSJkZWZhdWx0IEgxXzE2OTQgIj48ZGl2PjxkaXY+S2lhIG5ldXZlcyAyMDI1LCAyMDI2ICZhbXA7IDIwMjcgw6AgdmVuZHJlwqA8L2Rpdj48ZGl2PsOgIE1vbnRyw6lhbMKgPC9kaXY+PC9kaXY+PC9oMT48L2Rpdj48ZGl2IGNsYXNzPSJJbm5lckJveExheWVyIj48L2Rpdj4JCQkJCTwhLS0gT1BFTiBNT0JJTEUgRklMVEVSIEJVVFRPTiAoJy5fX0xJTkVfXy4nKS0tPgoJPGRpdiBjbGFzcz0iZmlsdGVyVG9nZ2xlV3JhcHBlciI+CgkJPGJ1dHRvbiBpZD0idG9nZ2xlRmlsdGVyQnRuIiBjbGFzcz0iZmlsdGVyVG9nZ2xlQnRuIj5GaWx0cmVyPC9idXR0b24+Cgk8L2Rpdj4KCTwhLS0gQ0xPU0UgTU9CSUxFIEZJTFRFUiBCVVRUT04gKCcuX19MSU5FX18uJyktLT4KCQkJCTxkaXYgaWQ9InNpZGVTaWRlYmFyRmlsdGVyIiBjbGFzcz0ic2lkZVNpZGViYXIiPgoJCQkJCTxkaXYgY2xhc3M9InNpZGViYXJIZWFkZXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZGaWx0ZXJCb3hUaXRsZSI+CgkJCQkJCQlSYWZmaW5leiB2b3RyZSByZWNoZXJjaGUgOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGJ1dHRvbiBpZD0iY2xvc2VTaWRlYmFyQnRuIiBjbGFzcz0iY2xvc2VCdG4iPsOXPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBpZD0iZmlsdGVyQ29udGVudCI+CgkJCQkJCTxkaXYgaWQ9ImZpbHRlck1haW5Cb3giIGNsYXNzPSJJbm5lckJveExheWVyIGJsYWNrLXRleHQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkZpbHRlck91dGVyQm94Ij4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48ZGl2IGNsYXNzPSJkaXZGaWx0ZXJUaXRsZSI+VHlwZSBkZSBjYXJyb3NzZXJpZTwvZGl2Pjx1bCBjbGFzcz0iIj48bGkgY2xhc3M9IiI+PGlucHV0IGNsYXNzPSJmaWx0ZXJDaGVjayBjYXRlZ29yeSIgaWQ9InNob3dDbGFzc19jYXIiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iY2FyIiBjaGVja2VkPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiBjYXRlZ29yeSIgZm9yPSJzaG93Q2xhc3NfY2FyIj5BdXRvPC9sYWJlbD48L2xpPjxsaSBjbGFzcz0iIj48aW5wdXQgY2xhc3M9ImZpbHRlckNoZWNrIGNhdGVnb3J5IiBpZD0ic2hvd0NsYXNzX21pbml2YW4iIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0ibWluaXZhbiIgY2hlY2tlZD48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4gY2F0ZWdvcnkiIGZvcj0ic2hvd0NsYXNzX21pbml2YW4iPk1pbmktRm91cmdvbm5ldHRlPC9sYWJlbD48L2xpPjxsaSBjbGFzcz0iIj48aW5wdXQgY2xhc3M9ImZpbHRlckNoZWNrIGNhdGVnb3J5IiBpZD0ic2hvd0NsYXNzX3N1diIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJzdXYiIGNoZWNrZWQ+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIGNhdGVnb3J5IiBmb3I9InNob3dDbGFzc19zdXYiPlZVUzwvbGFiZWw+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPk1vdHJpY2l0w6k8L2Rpdj48dWwgY2xhc3M9IiI+PGxpIGNsYXNzPSIiPjxpbnB1dCBpZD0iZmlsdGVyRHJpdmVUcmFpbkNoZWNrMSIgY2xhc3M9ImZpbHRlckNoZWNrIGRyaXZldHJhaW4iIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgZGF0YS1kcml2ZXRyYWluPSJGV0QiIGNoZWNrZWQ+PGxhYmVsIGZvcj0iZmlsdGVyRHJpdmVUcmFpbkNoZWNrMSIgY2xhc3M9ImZpbHRlclNwYW4iPlRyYWN0aW9uIGF2YW50PC9sYWJlbD48L2xpPjxsaSBjbGFzcz0iIj48aW5wdXQgaWQ9ImZpbHRlckRyaXZlVHJhaW5DaGVjazIiIGNsYXNzPSJmaWx0ZXJDaGVjayBkcml2ZXRyYWluIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjIiIGRhdGEtZHJpdmV0cmFpbj0iUldEIiBjaGVja2VkPjxsYWJlbCBmb3I9ImZpbHRlckRyaXZlVHJhaW5DaGVjazIiIGNsYXNzPSJmaWx0ZXJTcGFuIj5Qcm9wdWxzaW9uIGFycmnDqHJlPC9sYWJlbD48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPjxkaXYgY2xhc3M9ImRpdkZpbHRlclRpdGxlIj5UeXBlIGRlIGNhcmJ1cmFudDwvZGl2Pjx1bCBjbGFzcz0iIj4JPGxpIGNsYXNzPSIiPgoJCTxpbnB1dCBkYXRhLWVzc2VuY2U9ImVsZWN0cmljIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZnVlbHR5cGUiIGlkPSJmaWx0ZXJFc3NlbmNlQ2hlY2szIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjMiIGNoZWNrZWQ+CgkJPGxhYmVsIGZvcj0iZmlsdGVyRXNzZW5jZUNoZWNrMyIgY2xhc3M9ImZpbHRlclNwYW4iPgoJCQnDiWxlY3RyaXF1ZQoJCTwvbGFiZWw+Cgk8L2xpPgk8bGkgY2xhc3M9IiI+CgkJPGlucHV0IGRhdGEtZXNzZW5jZT0iZ2FzIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZnVlbHR5cGUiIGlkPSJmaWx0ZXJFc3NlbmNlQ2hlY2sxIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIGNoZWNrZWQ+CgkJPGxhYmVsIGZvcj0iZmlsdGVyRXNzZW5jZUNoZWNrMSIgY2xhc3M9ImZpbHRlclNwYW4iPgoJCQlFc3NlbmNlCgkJPC9sYWJlbD4KCTwvbGk+CTxsaSBjbGFzcz0iIj4KCQk8aW5wdXQgZGF0YS1lc3NlbmNlPSJoeWJyaWQiIGNsYXNzPSJmaWx0ZXJDaGVjayBmdWVsdHlwZSIgaWQ9ImZpbHRlckVzc2VuY2VDaGVjazQiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iNCIgY2hlY2tlZD4KCQk8bGFiZWwgZm9yPSJmaWx0ZXJFc3NlbmNlQ2hlY2s0IiBjbGFzcz0iZmlsdGVyU3BhbiI+CgkJCUh5YnJpZGUKCQk8L2xhYmVsPgoJPC9saT4JPGxpIGNsYXNzPSIiPgoJCTxpbnB1dCBkYXRhLWVzc2VuY2U9InBoZXYiIGNsYXNzPSJmaWx0ZXJDaGVjayBmdWVsdHlwZSIgaWQ9ImZpbHRlckVzc2VuY2VDaGVjazUiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iNSIgY2hlY2tlZD4KCQk8bGFiZWwgZm9yPSJmaWx0ZXJFc3NlbmNlQ2hlY2s1IiBjbGFzcz0iZmlsdGVyU3BhbiI+CgkJCUh5YnJpZGUgcmVjaGFyZ2VhYmxlCgkJPC9sYWJlbD4KCTwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPlRyaWVyIHBhcjwvZGl2Pjx1bCBjbGFzcz0iIj48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJyYWRpb01vZGxlIiBjbGFzcz0icmFkaW9Tb3J0IiB0eXBlPSJyYWRpbyIgbmFtZT0ic29ydGJ5IiB2YWx1ZT0ibW9kZWwiIGNoZWNrZWQ+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIiBmb3I9InJhZGlvTW9kbGUiPk1vZMOobGU8bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJyYWRpb1ByaWNlIiBjbGFzcz0icmFkaW9Tb3J0IiB0eXBlPSJyYWRpbyIgbmFtZT0ic29ydGJ5IiB2YWx1ZT0icHJpY2UiPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiIgZm9yPSJyYWRpb1ByaWNlIj5Qcml4PC9sYWJlbD48L2xpPjxsaSBjbGFzcz0iIj48aW5wdXQgaWQ9InJhZGlvQ29uc28iIGNsYXNzPSJyYWRpb1NvcnQiIHR5cGU9InJhZGlvIiBuYW1lPSJzb3J0YnkiIHZhbHVlPSJjb25zbyI+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIiBmb3I9InJhZGlvQ29uc28iPkwvMTAwa208L2xhYmVsPjwvbGk+PC9sYWJlbD48L2xpPjwvdWw+PC9kaXY+CQkJCQkKCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZQcmljZVJhbmdlU2xpZGVyIiBpZD0icHJpY2VSYW5nZVNsaWRlckZpbHRlckNvbnRhaW5lciI+CgkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2RmlsdGVyVGl0bGUiPgoJCQkJCQlGb3VyY2hldHRlIGRlIHByaXgKCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiByYW5nZS1zbGlkZXItcHJpY2VzIj4KCQkJCQkJPHNwYW4gY2xhc3M9InByaWNlLW1pbiBmb3JtYXQtcHJpY2UiPjwvc3Bhbj7CoMKgw6DCoMKgPHNwYW4gY2xhc3M9InByaWNlLW1heCBmb3JtYXQtcHJpY2UiPjwvc3Bhbj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEgcmFuZ2Utc2xpZGVyLWxlZnQiPk1pbjwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW45IHJhbmdlLXNsaWRlciIgYXR0ci1wcmljZS1taW49IjI2NTE2IiBhdHRyLXByaWNlLW1heD0iNjM3NjYiPjwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xIHJhbmdlLXNsaWRlci1yaWdodCI+TWF4PC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PjwhLS0gT1BFTiBDQVRFR09SSUVTQk9YV1JBUFBFUiAoMTk4OCktLT48ZGl2IGNsYXNzPSJJbm5lckJveExheWVyIGRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIj48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc2Nhcl9jb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXRlZ29yeUJveFdyYXBwZXIiIHN0YXRlPSJvcGVuIiBuYnZpc2libGU9IjEiPjxoMiBjbGFzcz0iZGVmYXVsdCBpY29uLWhlYWRpbmcgZmxleC1ib3ggYWxpZ24tY2VudGVyIj4KCTxzcGFuIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgoJPGJveC1sYyBjbGFzcz0iLXB2MCI+CgkJPGRpdiBjbGFzcz0ibWFpblRleHQgLWJvbGQiPkF1dG9zIG5ldXZlcyBLaWEgMjAyNSAmYW1wOyAyMDI2PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgTW9udHLDqWFsPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU19jYXIiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfY2FyXzEiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iSzQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgSzQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1LNC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJLNCAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+SzQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI2IDkxNzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNCAyOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEgOTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNiA5MTcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJLNCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODMyODgsNDgzMjg5LDQ4MzI5MCw0ODMyOTQsNDgzMjkxLDQ4MzI5NSw0ODMyOTIsNDgzMjkzIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBLNCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUs0LTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBLNCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9LNC8yMDI2LzQ4MzI4OC9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDgzMjg4JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0tpYSBLNCAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvS2lhLUs0LTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9jYXJfMiI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iSzQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgSzQgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1LNC0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJLNCAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+SzQgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI3IDIxNjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyA5OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEgOTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIEtpYSBDYW5hZGEmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjcgMjE2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9IiIgc3R5bGU9ImNvbG9yOiAjMDUxNDFmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI2IDcxNjwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iSzQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYzNjg1LDQ2MzY4Niw0NjM2ODcsNDYzNjg4LDQ2MzY4OSw0NjYzNjIiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIEs0IDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtSzQtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIEs0IDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0s0LzIwMjUvNDYzNjg1L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjM2ODUmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIEs0IDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtSzQtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl8zIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Iks0IEhhdGNoYmFjayIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBLNCBIYXRjaGJhY2sgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1LNF9IYXRjaGJhY2stMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iSzQgw6AgaGF5b24gMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPks0IEhhdGNoYmFjayAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MjcgNDE3PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzI0IDc5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MSA5MDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzI3IDQxNyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Iks0IEhhdGNoYmFjayIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODMyOTYsNDgzMjk3LDQ4MzI5OCw0ODMyOTksNDgzMzAwLDQ4MzMwMSw0ODMzMDIsNDgzMzAzIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBLNCBIYXRjaGJhY2sgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1LNF9IYXRjaGJhY2stMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIEs0IEhhdGNoYmFjayAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9LNF9IYXRjaGJhY2svMjAyNi80ODMyOTYvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MzI5NiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtLaWEgSzQgSGF0Y2hiYWNrIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtSzRfSGF0Y2hiYWNrLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+PC9kaXY+PC9kaXY+PCEtLSBDTE9TRSBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNjApLS0+PCEtLSBPUEVOIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA1MikgLS0+PGRpdiBpZD0iY2xhc3NzdXZfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5WVVMgbmV1ZnMgS2lhIDIwMjUgJmFtcDsgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIE1vbnRyw6lhbDwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1Nfc3V2Ij4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl8xIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNlbHRvcyIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBTZWx0b3MgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1TZWx0b3MtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU2VsdG9zIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5TZWx0b3MgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI4IDkxNzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNiAwOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyOCA5MTcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTZWx0b3MiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDczNTYyLDQ3MzU2NCw0NzM1NjMsNDczNTY1LDQ3MzU2Niw0NzM1NjcsNDczNTY4LDQ3MzU2OSIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgU2VsdG9zIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU2VsdG9zLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBTZWx0b3MgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvU2VsdG9zLzIwMjYvNDczNTYyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NzM1NjImcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIFNlbHRvcyAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvS2lhLVNlbHRvcy0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzIiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU2VsdG9zIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNlbHRvcyAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNlbHRvcy0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTZWx0b3MgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNlbHRvcyAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MjkgMTE2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzI1IDY5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgS2lhIENhbmFkYSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyOSAxMTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTZWx0b3MiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDU4Mzk2LDQ1ODM5OCw0NTgzOTcsNDU4Mzk5LDQ1ODQwMCw0NTg0MDEsNDU4NDAyLDQ1ODQwMyIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgU2VsdG9zIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU2VsdG9zLTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBTZWx0b3MgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvU2VsdG9zLzIwMjUvNDU4Mzk2L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NTgzOTYmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIFNlbHRvcyAyMDI1JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvS2lhLVNlbHRvcy0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzMiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3JlbnRvIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50by0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTb3JlbnRvIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5Tb3JlbnRvIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40MiA0MTY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzggOTk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBLaWEgQ2FuYWRhJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQyIDQxNiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8iIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYyMTkyLDQ2MjE5Myw0NjIxOTQsNDYyMTk1LDQ2MjE5Niw0NjIxOTcsNDYyMTk4IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3JlbnRvIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50by0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgU29yZW50byAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9Tb3JlbnRvLzIwMjUvNDYyMTkyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjIxOTImcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIFNvcmVudG8gMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1Tb3JlbnRvLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9zdXZfNCI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTb3VsIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNvdWwgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1Tb3VsLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvdWwgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNvdWwgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI2IDUxNjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyAxOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIEtpYSBDYW5hZGEmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjYgNTE2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU291bCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NTgwODQsNDU4MDg1LDQ2NjA2Miw0NTgwODYsNDY2MDYzLDQ1ODA4Nyw0NjYwNjQsNDU4MDg4IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3VsIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU291bC0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgU291bCAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9Tb3VsLzIwMjUvNDU4MDg0L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NTgwODQmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIFNvdWwgMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1Tb3VsLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9zdXZfNSI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBTcG9ydGFnZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNwb3J0YWdlLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5TcG9ydGFnZSAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzUgMTY3PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMyIDI5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM1IDE2NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3NTI2Miw0NzUyNjMsNDc1MjY0LDQ4NDg3Niw0NzUyNjUsNDc1MjY2LDQ3NTI2Nyw0NzUyNjgsNDg0ODc3LDQ3NTI2OSw0ODQ4NzgiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2UtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNwb3J0YWdlIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1Nwb3J0YWdlLzIwMjYvNDc1MjYyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NzUyNjImcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIFNwb3J0YWdlIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtU3BvcnRhZ2UtMjAyNi5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl82Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2UtMjAyNS5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU3BvcnRhZ2UgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNwb3J0YWdlIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zNCAxNjY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzAgNjk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDE1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBLaWEgQ2FuYWRhJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM0IDE2NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MTU4NCw0NjE1ODUsNDYxNTg2LDQ2Nzc3MCw0NjE1ODcsNDYxNTg4LDQ2MTU4OSw0NjE1OTAsNDYxNTkxLDQ2Nzc3MSw0Njc3NzIiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2UtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNwb3J0YWdlIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1Nwb3J0YWdlLzIwMjUvNDYxNTg0L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjE1ODQmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIFNwb3J0YWdlIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtU3BvcnRhZ2UtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl83Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlRlbGx1cmlkZSIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBUZWxsdXJpZGUgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1UZWxsdXJpZGUtMjAyNS5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iVGVsbHVyaWRlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5UZWxsdXJpZGUgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjU0IDQxNjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1MCA5OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIEtpYSBDYW5hZGEmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTQgNDE2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iVGVsbHVyaWRlIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2NDI2Niw0NjQyNjcsNDY0MjY4LDQ2NDI2OSw0NjQyNzAsNDY0MjcxLDQ2NDI3Miw0NjQyNzMiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFRlbGx1cmlkZSAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVRlbGx1cmlkZS0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgVGVsbHVyaWRlIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1RlbGx1cmlkZS8yMDI1LzQ2NDI2Ni9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDY0MjY2JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0tpYSBUZWxsdXJpZGUgMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1UZWxsdXJpZGUtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc21pbml2YW5fY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5NaW5pLWZvdXJnb25uZXR0ZXMgbmV1dmVzIEtpYSAyMDI1ICZhbXA7IDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBNb250csOpYWw8L2Rpdj4KCTwvYm94LWxjPgo8L2gyPjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhcnNCb3hXcmFwcGVyIENMQVNTX21pbml2YW4iPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfbWluaXZhbl8xIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkNhcm5pdmFsIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtQ2Fybml2YWwtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iQ2Fybml2YWwgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkNhcm5pdmFsIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40NSAzMTc8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDIgNDQ1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDE1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDUgMzE3Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iQ2Fybml2YWwiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc0NDcyLDQ3NDQ3Myw0NzQ0NzQsNDc0NDc1LDQ3NDQ3Niw0NzQ0NzciIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtQ2Fybml2YWwtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIENhcm5pdmFsIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0Nhcm5pdmFsLzIwMjYvNDc0NDcyL1doaXRlL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0Nhcm5pdmFsLzIwMjYvNDc0NDcyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NzQ0NzImcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIENhcm5pdmFsIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtQ2Fybml2YWwtMjAyNi5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X21pbml2YW5fMiI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJDYXJuaXZhbCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBDYXJuaXZhbCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUNhcm5pdmFsLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkNhcm5pdmFsIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5DYXJuaXZhbCAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDMgOTY2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQwIDQ5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgS2lhIENhbmFkYSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MyA5NjYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJDYXJuaXZhbCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjA1ODMsNDYwNTg0LDQ2MDU4NSw0NjA1ODYsNDYwNTg3LDQ2NjE5NSw0NjA1ODgiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtQ2Fybml2YWwtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIENhcm5pdmFsIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0Nhcm5pdmFsLzIwMjUvNDYwNTgzL1doaXRlL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0Nhcm5pdmFsLzIwMjUvNDYwNTgzL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjA1ODMmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIENhcm5pdmFsIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtQ2Fybml2YWwtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc2h5YnJpZF9jb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXRlZ29yeUJveFdyYXBwZXIiIHN0YXRlPSJvcGVuIiBuYnZpc2libGU9IjEiPjxoMiBjbGFzcz0iZGVmYXVsdCBpY29uLWhlYWRpbmcgZmxleC1ib3ggYWxpZ24tY2VudGVyIj4KCTxzcGFuIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgoJPGJveC1sYyBjbGFzcz0iLXB2MCI+CgkJPGRpdiBjbGFzcz0ibWFpblRleHQgLWJvbGQiPkh5YnJpZGVzICjDiWNvSHlicmlkZSkgbmV1dmVzIEtpYSAyMDI1ICZhbXA7IDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBNb250csOpYWw8L2Rpdj4KCTwvYm94LWxjPgo8L2gyPjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhcnNCb3hXcmFwcGVyIENMQVNTX2h5YnJpZCI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfMSI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJDYXJuaXZhbCBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgQ2Fybml2YWwgSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtQ2Fybml2YWxfSHlicmlkLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkNhcm5pdmFsIGh5YnJpZGUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkNhcm5pdmFsIEh5YnJpZCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTEgMjY3PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4IDM5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzUxIDI2NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkNhcm5pdmFsIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0NzQxOTIsNDc0MTkzLDQ3NDE5NSw0NzQxOTQiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUNhcm5pdmFsX0h5YnJpZC0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgQ2Fybml2YWwgSHlicmlkIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0Nhcm5pdmFsX0h5YnJpZC8yMDI2LzQ3NDE5Mi9XaGl0ZS9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9DYXJuaXZhbF9IeWJyaWQvMjAyNi80NzQxOTIvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ3NDE5MiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtLaWEgQ2Fybml2YWwgSHlicmlkIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtQ2Fybml2YWxfSHlicmlkLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfMiI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJDYXJuaXZhbCBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgQ2Fybml2YWwgSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtQ2Fybml2YWxfSHlicmlkLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkNhcm5pdmFsIGh5YnJpZGUgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkNhcm5pdmFsIEh5YnJpZCAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTAgMDE2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ2IDU0NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgS2lhIENhbmFkYSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1MCAwMTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJDYXJuaXZhbCBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDU4MTcwLDQ1ODE3MSw0NTgxNzIiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIENhcm5pdmFsIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUNhcm5pdmFsX0h5YnJpZC0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgQ2Fybml2YWwgSHlicmlkIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0Nhcm5pdmFsX0h5YnJpZC8yMDI1LzQ1ODE3MC9XaGl0ZS9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9DYXJuaXZhbF9IeWJyaWQvMjAyNS80NTgxNzAvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ1ODE3MCZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtLaWEgQ2Fybml2YWwgSHlicmlkIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtQ2Fybml2YWxfSHlicmlkLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfMyI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fSHlicmlkLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gSHlicmlkZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+TmlybyBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjMzIDU2Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMCA4NDUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMyA1NjcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzc3NzUsNDc3Nzc2LDQ3Nzc3Nyw0Nzc3NzgsNDc3Nzc5IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBOaXJvIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9OaXJvX0h5YnJpZC8yMDI2LzQ3Nzc3NS9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDc3Nzc1JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0tpYSBOaXJvIEh5YnJpZCAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvS2lhLU5pcm9fSHlicmlkLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfNCI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgTmlybyBIeWJyaWQgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1OaXJvX0h5YnJpZC0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIEh5YnJpZGUgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPk5pcm8gSHlicmlkIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zNCAxMTY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzAgNzk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBLaWEgQ2FuYWRhJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM0IDExNiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSIiIHN0eWxlPSJjb2xvcjogIzA1MTQxZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zMyA2MTY8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MjM5Nyw0NjIzOTgsNDYyMzk5LDQ2MjQwMCw0NjI0MDEiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIE5pcm8gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19IeWJyaWQtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIE5pcm8gSHlicmlkIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL05pcm9fSHlicmlkLzIwMjUvNDYyMzk3L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjIzOTcmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIE5pcm8gSHlicmlkIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtTmlyb19IeWJyaWQtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF81Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNvcmVudG8gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50b19IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byBoeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5Tb3JlbnRvIEh5YnJpZCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDYgNTE3PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQzIDY5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ2IDUxNyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3ODc5NCw0Nzg3OTIsNDc4NzkzIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3JlbnRvIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNvcmVudG9fSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBTb3JlbnRvIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9Tb3JlbnRvX0h5YnJpZC8yMDI2LzQ3ODc5NC9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDc4Nzk0JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0tpYSBTb3JlbnRvIEh5YnJpZCAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvS2lhLVNvcmVudG9fSHlicmlkLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfNiI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTb3JlbnRvIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3JlbnRvIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNvcmVudG9fSHlicmlkLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gaHlicmlkZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U29yZW50byBIeWJyaWQgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ5IDA2Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NSA2NDUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIEtpYSBDYW5hZGEmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDkgMDY2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDU3NTcyLDQ1NzU3MyIgZGF0YS1oeWJyaWQ9IjEiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgU29yZW50byBIeWJyaWQgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1Tb3JlbnRvX0h5YnJpZC0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgU29yZW50byBIeWJyaWQgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvU29yZW50b19IeWJyaWQvMjAyNS80NTc1NzIvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ1NzU3MiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtLaWEgU29yZW50byBIeWJyaWQgMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1Tb3JlbnRvX0h5YnJpZC0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzciPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU3BvcnRhZ2UgSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNwb3J0YWdlX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBoeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5TcG9ydGFnZSBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ0IDM2Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MSA0OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NCAzNjcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc2OTYyLDQ3Njk2NSw0NzY5NjMsNDc2OTY0IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTcG9ydGFnZSBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1TcG9ydGFnZV9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNwb3J0YWdlIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9TcG9ydGFnZV9IeWJyaWQvMjAyNi80NzY5NjIvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ3Njk2MiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtLaWEgU3BvcnRhZ2UgSHlicmlkIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtU3BvcnRhZ2VfSHlicmlkLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfOCI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgU3BvcnRhZ2UgSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2VfSHlicmlkLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIGh5YnJpZGUgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNwb3J0YWdlIEh5YnJpZCAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDIgMjY2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM4IDc5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgS2lhIENhbmFkYSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MiAyNjYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYxNTQyLDQ2MTU0Myw0NjE1NDQiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNwb3J0YWdlX0h5YnJpZC0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgU3BvcnRhZ2UgSHlicmlkIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1Nwb3J0YWdlX0h5YnJpZC8yMDI1LzQ2MTU0Mi9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDYxNTQyJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0tpYSBTcG9ydGFnZSBIeWJyaWQgMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1TcG9ydGFnZV9IeWJyaWQtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc3BoZXZfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5IeWJyaWRlcyByZWNoYXJnZWFibGUgbmV1ZnMgS2lhIDIwMjUgJmFtcDsgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIE1vbnRyw6lhbDwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfcGhldiI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9waGV2XzEiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MyA1MDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBQbHVnLUluIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIFBsdWctSW4gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIGh5YnJpZGUgcmVjaGFyZ2VhYmxlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5OaXJvIFBsdWctSW4gSHlicmlkIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zOSA1Njc8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzYgODQ1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzkgNTY3Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9IiIgc3R5bGU9ImNvbG9yOiAjMDUxNDFmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjM5IDA2Nzwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBQbHVnLUluIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzc3ODAsNDc3NzgxLDQ3Nzc4MiIgZGF0YS1oeWJyaWQ9IjEiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgTmlybyBQbHVnLUluIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fUGx1Z19Jbl9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIE5pcm8gUGx1Zy1JbiBIeWJyaWQgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvTmlyb19QbHVnX0luX0h5YnJpZC8yMDI2LzQ3Nzc4MC9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDc3NzgwJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0tpYSBOaXJvIFBsdWctSW4gSHlicmlkIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtTmlyb19QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfcGhldl8yIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgTmlybyBQbHVnLUluIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fUGx1Z19Jbl9IeWJyaWQtMjAyNS5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyBoeWJyaWRlIHJlY2hhcmdlYWJsZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+TmlybyBQbHVnLUluIEh5YnJpZCAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDAgMTE2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM2IDc5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgS2lhIENhbmFkYSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MCAxMTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICMwNTE0MWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzkgMTE2PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIFBsdWctSW4gSHlicmlkIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MjIyOCw0NjIyMjcsNDYyMjI5IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIFBsdWctSW4gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19QbHVnX0luX0h5YnJpZC0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgTmlybyBQbHVnLUluIEh5YnJpZCAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9OaXJvX1BsdWdfSW5fSHlicmlkLzIwMjUvNDYyMjI4L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0NjIyMjgiLCJ0aXRsZSI6IktpYSBOaXJvIFBsdWctSW4gSHlicmlkIDIwMjUiLCJocmVmIjoiXC9uZXVmc1wvS2lhLU5pcm9fUGx1Z19Jbl9IeWJyaWQtMjAyNS5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJEZW1hbmRleiBcdTAwZTAgdW4gZXhwZXJ0ISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3BoZXZfMyI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40IDAwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTb3JlbnRvIFBsdWctSW4gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNvcmVudG8gUGx1Zy1JbiBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1Tb3JlbnRvX1BsdWdfSW5fSHlicmlkLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gaHlicmlkZSByZWNoYXJnZWFibGUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUxIDUxNzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCA2OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1MSA1MTcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICMwNTE0MWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTAgNTE3PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTb3JlbnRvIFBsdWctSW4gSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3ODc5MSw0Nzg3ODksNDc4NzkwIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3JlbnRvIFBsdWctSW4gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50b19QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgU29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9Tb3JlbnRvX1BsdWdfSW5fSHlicmlkLzIwMjYvNDc4NzkxL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0Nzg3OTEmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIFNvcmVudG8gUGx1Zy1JbiBIeWJyaWQgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1Tb3JlbnRvX1BsdWdfSW5fSHlicmlkLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9waGV2XzQiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MiA1MDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU29yZW50byBQbHVnLUluIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBTb3JlbnRvIFBsdWctSW4gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU29yZW50b19QbHVnX0luX0h5YnJpZC0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTb3JlbnRvIGh5YnJpZGUgcmVjaGFyZ2VhYmxlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5Tb3JlbnRvIFBsdWctSW4gSHlicmlkIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41NCAwNjY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTAgNjQ1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBLaWEgQ2FuYWRhJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU0IDA2NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSIiIHN0eWxlPSJjb2xvcjogIzA1MTQxZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MiAwNjY8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNvcmVudG8gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDU3NjYwLDQ1NzY2MSIgZGF0YS1oeWJyaWQ9IjEiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgU29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNvcmVudG9fUGx1Z19Jbl9IeWJyaWQtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNvcmVudG8gUGx1Zy1JbiBIeWJyaWQgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvU29yZW50b19QbHVnX0luX0h5YnJpZC8yMDI1LzQ1NzY2MC9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDU3NjYwIiwidGl0bGUiOiJLaWEgU29yZW50byBQbHVnLUluIEh5YnJpZCAyMDI1IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1Tb3JlbnRvX1BsdWdfSW5fSHlicmlkLTIwMjUuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiIiwicHJvbW90ZXh0IjoiRGVtYW5kZXogXHUwMGUwIHVuIGV4cGVydCEifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9waGV2XzUiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MyA1MDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1TcG9ydGFnZV9QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBoeWJyaWRlIHJlY2hhcmdlYWJsZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ5IDI2Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NiAzOTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OSAyNjcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJTcG9ydGFnZSBQbHVnLUluIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0NzY5NjksNDc2OTY2LDQ3Njk2Nyw0NzY5NjgiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIFBsdWctSW4gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2VfUGx1Z19Jbl9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIFNwb3J0YWdlIFBsdWctSW4gSHlicmlkIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL1Nwb3J0YWdlX1BsdWdfSW5fSHlicmlkLzIwMjYvNDc2OTY5L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0NzY5NjkiLCJ0aXRsZSI6IktpYSBTcG9ydGFnZSBQbHVnLUluIEh5YnJpZCAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0tpYS1TcG9ydGFnZV9QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6IiIsInByb21vdGV4dCI6IkRlbWFuZGV6IFx1MDBlMCB1biBleHBlcnQhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfcGhldl82Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjMgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIFBsdWctSW4gSHlicmlkIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIFNwb3J0YWdlIFBsdWctSW4gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtU3BvcnRhZ2VfUGx1Z19Jbl9IeWJyaWQtMjAyNS5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iU3BvcnRhZ2UgaHlicmlkZSByZWNoYXJnZWFibGUgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNwb3J0YWdlIFBsdWctSW4gSHlicmlkIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MSAwNjY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDcgNTk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDE1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBLaWEgQ2FuYWRhJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzUxIDA2NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IlNwb3J0YWdlIFBsdWctSW4gSHlicmlkIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MTU5Miw0NjE1OTMsNDYxNTk0IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBTcG9ydGFnZSBQbHVnLUluIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLVNwb3J0YWdlX1BsdWdfSW5fSHlicmlkLTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBTcG9ydGFnZSBQbHVnLUluIEh5YnJpZCAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9TcG9ydGFnZV9QbHVnX0luX0h5YnJpZC8yMDI1LzQ2MTU5Mi9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDYxNTkyIiwidGl0bGUiOiJLaWEgU3BvcnRhZ2UgUGx1Zy1JbiBIeWJyaWQgMjAyNSIsImhyZWYiOiJcL25ldWZzXC9LaWEtU3BvcnRhZ2VfUGx1Z19Jbl9IeWJyaWQtMjAyNS5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiIiLCJwcm9tb3RleHQiOiJEZW1hbmRleiBcdTAwZTAgdW4gZXhwZXJ0ISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc2VsZWN0cmljX2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+w4lsZWN0cmlxdWVzIG5ldXZlcyBLaWEgMjAyNSwgMjAyNiAmYW1wOyAyMDI3PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgTW9udHLDqWFsPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU19lbGVjdHJpYyI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY18xIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjcgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBFVjQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1FVjQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iRVY0IDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5FVjQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQxIDg2Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszOCA5OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQyIDE2NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODM3OTMsNDgzNzk0LDQ4Mzc5NSw0ODMxMzAsNDgzMTMxIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBFVjQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1FVjQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIEVWNCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9FVjQvMjAyNi80ODM3OTMvV2hpdGUvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvRVY0LzIwMjYvNDgzNzkzL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0ODM3OTMmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIEVWNCAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvS2lhLUVWNC0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfMiI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41IDAwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjUiIGRhdGEteWVhcj0iMjAyNyIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY1IDIwMjciIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY1LTIwMjcuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNSAyMDI3Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RVY1IDIwMjc8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40NiAzNjc8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDMgNDk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NiA2NjcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjUiIGRhdGEteWVhcj0iMjAyNyIgZGF0YS1zdHlsZWlkcz0iNDgzMDE5LDQ4MzAyMCw0ODMwMjEsNDgzMDI0LDQ4MzAyNSw0ODMwMjIsNDgzMDI2LDQ4MzAyMyw0ODMwMjciIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIEVWNSAyMDI3IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUVWNS0yMDI3Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgRVY1IDIwMjciIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0VWNS8yMDI3LzQ4MzAxOS9XaGl0ZS9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9FVjUvMjAyNy80ODMwMTkvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MzAxOSZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtLaWEgRVY1IDIwMjcmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtRVY1LTIwMjcuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY18zIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjEwIDAwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjYiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY2IDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY2LTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWNiAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RVY2IDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MiA3NjY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDggOTk1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGVzIHN1ciBsZXMgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIEtpYSBDYW5hZGEmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs4OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTMgMDY2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9IiIgc3R5bGU9ImNvbG9yOiAjMDUxNDFmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ5IDc2Njwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iRVY2IiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ3MzE2Niw0NzMxNjIsNDczMTYzLDQ3MzE2Nyw0NzMxNjQsNDczMTY1IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBFVjYgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1FVjYtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iS2lhIEVWNiAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9FVjYvMjAyNS80NzMxNjYvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ3MzE2NiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtLaWEgRVY2IDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9LaWEtRVY2LTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY180Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjIgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWOSIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXRyaW09IiIgZGF0YS1jYXJpZD0iIj48L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IktpYSBFVjkgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1FVjktMjAyNi5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iRVY5IDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+S2lhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5FVjkgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjYyIDg2Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OSA5OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAxNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzYzIDE2NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWOSIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0NzEyNjcsNDcxMjY4LDQ3MTI2OSw0NzEyNzAsNDcxMjcxLDQ3MTI3Miw0NzY5NzAiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iS2lhIEVWOSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUVWOS0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgRVY5IDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvS2lhL0VWOS8yMDI2LzQ3MTI2Ny9XaGl0ZS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDcxMjY3JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0tpYSBFVjkgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1FVjktMjAyNi5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2VsZWN0cmljXzUiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MiAwMDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJPGRpdiBjbGFzcz0iZDJjLWZhdnMtdHJpZ2dlci13cmFwcGVyIGQyZmF2LTAxIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iRVY5IiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIEVWOSAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLUVWOS0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJFVjkgMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkVWOSAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NjMgNzY2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5IDk5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGFkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDE1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBLaWEgQ2FuYWRhJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7ODk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzY0IDA2NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9IkVWOSIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjIyMDIsNDYyMjAzLDQ2MjIwNCw0NjIyMDcsNDYyMjA1LDQ2MjIwNiIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJLaWEgRVY5IDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtRVY5LTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IktpYSBFVjkgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9LaWEvRVY5LzIwMjUvNDYyMjAyL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjIyMDImcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIEVWOSAyMDI1JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvS2lhLUVWOS0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfNiI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj45IDAwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQk8ZGl2IGNsYXNzPSJkMmMtZmF2cy10cmlnZ2VyLXdyYXBwZXIgZDJmYXYtMDEiIGRhdGEtbWFrZT0iS2lhIiBkYXRhLW1vZGVsPSJOaXJvIEVWIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtdHJpbT0iIiBkYXRhLWNhcmlkPSIiPjwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iS2lhIE5pcm8gRVYgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0tpYS1OaXJvX0VWLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gw6lsZWN0cmlxdWUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5LaWE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPk5pcm8gRVYgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ4IDMxNzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NSA1OTUmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBhZG1pbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZXMgc3VyIGxlcyBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4IDYxNyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSIiIHN0eWxlPSJjb2xvcjogIzA1MTQxZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40NiAzMTc8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gRVYiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc3NzgzLDQ3Nzc4NCw0Nzc3ODUsNDc3Nzg2IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIEVWIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19FVi0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgTmlybyBFViAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9OaXJvX0VWLzIwMjYvNDc3NzgzL1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0Nzc3ODMmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIE5pcm8gRVYgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1OaXJvX0VWLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY183Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjcgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCTxkaXYgY2xhc3M9ImQyYy1mYXZzLXRyaWdnZXItd3JhcHBlciBkMmZhdi0wMSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gRVYiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS10cmltPSIiIGRhdGEtY2FyaWQ9IiI+PC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJLaWEgTmlybyBFViAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvS2lhLU5pcm9fRVYtMjAyNS5odG1sIiBkYXRhLW1ha2U9IktpYSIgZGF0YS1tb2RlbD0iTmlybyDDqWxlY3RyaXF1ZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPktpYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+TmlybyBFViAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDkgMjE2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ1IDU5NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGFkbWluJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlcyBzdXIgbGVzIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBLaWEgQ2FuYWRhJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7ODk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ5IDUxNiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJLaWEiIGRhdGEtbW9kZWw9Ik5pcm8gRVYiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYyMTg4LDQ2MjE4OSw0NjIxOTAsNDYyMTkxIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9IktpYSBOaXJvIEVWIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9LaWEtTmlyb19FVi0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJLaWEgTmlybyBFViAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0tpYS9OaXJvX0VWLzIwMjUvNDYyMTg4L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjIxODgmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7S2lhIE5pcm8gRVYgMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0tpYS1OaXJvX0VWLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+PC9kaXY+PC9kaXY+PCEtLSBDTE9TRSBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNjApLS0+PC9kaXY+PCEtLSBDTE9TRSBDQVRFR09SSUVTQk9YV1JBUFBFUiAoMjA2NiktLT48aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iS2lhIiBpZD0iaXNCcmFuZFBhZ2UiPgogICAgICAgIAk8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkRpc2NsYWltZXJCbG9jayI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2RGlzY2xhaW1lckJsb2NrQ29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdkRpc2NsYWltZXJCbG9ja1RpdGxlIj4KICAgICAgICAgICAgICAgIENsYXVzZSBkZSBub24tcmVzcG9uc2FiaWxpdMOpCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZEaXNjbGFpbWVyQmxvY2tUZXh0Ij4KICAgICAgICAgICAgICAgIExlIG1vbnRhbnQgaW5kaXF1w6kgcmVwcsOpc2VudGUgdW5lIGVzdGltYXRpb24gZHUgbW9udGFudCBxdWUgdm91cyBwb3V2ZXogdm91cyBhdHRlbmRyZSDDoCBwYXllciBlbiBkb2xsYXJzIGNhbmFkaWVucy4gTGVzIHRheGVzIHNvbnQgZXhjbHVlcyAoc2F1ZiBpbmRpY2F0aW9uIGNvbnRyYWlyZSkuIExlcyBwaG90b3MgcmVwcsOpc2VudGVudCBsZSBtb2TDqGxlIG9mZmVydCBtYWlzIHBldXZlbnQgdmFyaWVyIGzDqWfDqHJlbWVudCBlbiBjb3VsZXVyLCBvcHRpb25zLCBvdSBjYXJhY3TDqXJpc3RpcXVlcy4gQmllbiBxdWUgbm91cyBub3VzIGVmZm9yY2lvbnMgZGUgZ2FyYW50aXIgbCdleGFjdGl0dWRlIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGNlIHNpdGUgV2ViLCBub3VzIHZvdXMgcmVjb21tYW5kb25zIGRlIG5vdXMgY29udGFjdGVyIGRpcmVjdGVtZW50IHBvdXIgdsOpcmlmaWVyIGxlcyBkw6l0YWlscyBldCBvYnRlbmlyIGRlcyBpbmZvcm1hdGlvbnMgc3VwcGzDqW1lbnRhaXJlcyBzdXIgbGUgdsOpaGljdWxlLCB5IGNvbXByaXMgbGEgY29uZmlybWF0aW9uIGRlcyBwcml4LCBkZXMgY291bGV1cnMsIGRlcyBmaW5pdGlvbnMsIGRlcyBvcHRpb25zIGV0IGF1dHJlcyBzcMOpY2lmaWNhdGlvbnMuCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgkJCTwvZGl2PgoKICAgICAgIAkKCgk8ZGl2IGNsYXNzPSJ1aS1sb2FkZXItYmFja2dyb3VuZCI+PGltZyBjbGFzcz0idWktbG9hZGVyLWJhY2tncm91bmQtZ2lmIGxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL3ZpbGxlbWFyaWVraWEuY29tLy9pbWFnZXMvYWpheC1sb2FkZXIyLmdpZiIgYWx0PSJhamF4IGxvYWRlcjIiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj48L2Rpdj4KCgkJPGRpdiBpZD0iYXNQb3BVcCIgY2xhc3M9InJldmVhbC1tb2RhbCBzbWFsbCIgc3R5bGU9ImJveC1zaGFkb3c6IG5vbmU7YmFja2dyb3VuZDojZmZmZmZmO2NvbG9yOiMwMDA7d2lkdGg6ODUlO21heC13aWR0aDo2MDBweDtwYWRkaW5nOjIwcHg7Ij4KCQk8ZGl2IGNsYXNzPSJ0ZXh0LXVwcGVyY2FzZSIgc3R5bGU9ImhlaWdodDo0MHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTogMS43NXJlbTttYXJnaW4tYm90dG9tOjEwcHg7Ij4KCQkJU1ZQIGNvbmZpcm1lcgoJCTwvZGl2PgoKCQk8Zm9ybSBtZXRob2Q9InBvc3QiPgoJCQkJPHN0YWNrLWxjPgoJCTxib3gtbGMgY2xhc3M9InZpVGV4dCI+CgkJCTxkaXYgY2xhc3M9InBvcHVwLXBvbGljeSI+QWZpbiBkZSByZXNwZWN0ZXIgbGEgTG9pIENhbmFkaWVubmUgQW50aS1Qb3VycmllbCBldCBsYSBMb2kgMjUgZHUgUXXDqWJlYywgbm91cyB2b3VzIHByaW9ucyBkZSBiaWVuIHZvdWxvaXIgY29uZmlybWVyIHNpIHZvdXMgc291aGFpdGV6IHJlY2V2b2lyIG5vcyBjb21tdW5pY2F0aW9ucyBmdXR1cmVzIGNvbmNlcm5hbnQgbGVzIHJhYmFpcywgbGVzIHByb21vdGlvbnMsIGxlcyBvZmZyZXMgZXQgbGVzIHZlbnRlcyBwcml2w6llcy4gVmV1aWxsZXogbm90ZXIgcXVlIHZvdXMgcG91dmV6IG1vZGlmaWVyIG91IHJldGlyZXIgY2UgY29uc2VudGVtZW50IMOgIHRvdXQgbW9tZW50LiBFbiBjbGlxdWFudCBzdXIgT3VpLCB2b3VzIGNvbmZpcm1leiBhdm9pciBsdSBldCBhY2NlcHTDqSBub3RyZSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iP3BhdGg9L3BvbGl0aXF1ZS1kZS1jb25maWRlbnRpYWxpdGUuaHRtbCI+cG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6k8L2E+LjwvZGl2PgoJCTwvYm94LWxjPgoJCTxib3gtbGMgY2xhc3M9ImRlYWxlckNvbnNlbnQiPgoJCQk8ZGl2IGNsYXNzPSJmbGV4LWJldHdlZW4iPgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPlZpbGxlLU1hcmllIEtpYTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPgoJCQkJCTxsYWJlbD4KCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJT3VpCgkJCQkJPC9sYWJlbD4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9Ii0xIiBuYW1lPSJjb25zZW50IiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQlOb24KCQkJCQk8L2xhYmVsPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJjb25zZW50IGRpc2NsYWltZXIiIHN0eWxlPSJ3aWR0aDogNTAlOyIgZGF0YS10b29sdGlwPSdFbiBmb3Vybmlzc2FudCBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcywgamUgY29uc2VucyDDoCBsZXVyIHV0aWxpc2F0aW9uIGV0IGxldXIgZGl2dWxnYXRpb24gY29uZm9ybcOpbWVudCDDoCBsYSBQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSBkZSBWaWxsZS1NYXJpZSBLaWEuIEplIGNvbmZpcm1lIGF2b2lyIGx1IGxhICZsdDthIGhyZWY9Ii9wb2xpdGlxdWUtZGUtY29uZmlkZW50aWFsaXRlLmh0bWwiJmd0O1BvbGl0aXF1ZSBkZSBjb25maWRlbnRpYWxpdMOpJmx0Oy9hJmd0Oy4gSmUgY29tcHJlbmRzIHF1ZSBWaWxsZS1NYXJpZSBLaWEgcGV1dCBwYXJ0YWdlciBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBhdmVjIGRlcyB0aWVycyBkYW5zIGxlIGJ1dCBkZSBnw6lyZXIgbWEgcmVsYXRpb24gYXZlYyBldXgsIHRlbHMgcXVlIG5vdHJlIGZvdXJuaXNzZXVyIGRlIGdlc3Rpb24gZGUgbGEgcmVsYXRpb24gY2xpZW50IChDUk0pLiBKZSBjb21wcmVuZHMgcXVlIGNlcnRhaW5zIGRlIGNlcyBmb3Vybmlzc2V1cnMgcGV1dmVudCBzdG9ja2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIHN1ciBkZXMgc2VydmV1cnMgZXQgZGVzIGJhc2VzIGRlIGRvbm7DqWVzIHNpdHXDqXMgZW4gZGVob3JzIGRlIG1hIHByb3ZpbmNlLiBKZSBjb21wcmVuZHMgw6lnYWxlbWVudCBxdWUgamUgcGV1eCByZXRpcmVyIG1vbiBjb25zZW50ZW1lbnQgZXQgbWUgZMOpc2Fib25uZXIgZGUgbGEgcsOpY2VwdGlvbiBkZSBjb21tdW5pY2F0aW9ucyBmdXR1cmVzIGRlIFZpbGxlLU1hcmllIEtpYSDDoCB0b3V0IG1vbWVudC4gTGUgY29uc2VudGVtZW50IMOgIGxhIHLDqWNlcHRpb24gZGUgY29tbXVuaWNhdGlvbnMgw6lsZWN0cm9uaXF1ZXMgZXN0IHNvbGxpY2l0w6kgcGFyIFZpbGxlLU1hcmllIEtpYS4nPkNsYXVzZSBkZSBub24tcmVzcG9uc2FiaWxpdMOpPC9kaXY+CgkJPC9ib3gtbGM+CgoJCQoKCTwvc3RhY2stbGM+Cgk8ZGl2IGNsYXNzPSItcHQxMCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBweDt0ZXh0LWFsaWduOiBjZW50ZXI7Y29sb3I6IHZhcigtLWRhcmstZ3JheSk7Ij5JTVBPUlRBTlQ6IFZvdXMgcG91dmV6IGZhY2lsZW1lbnQgcmV0aXJlciB2b3RyZSBjb25zZW50ZW1lbnQgZW4gdG91dCB0ZW1wcyE8L2Rpdj4KCgkJCTxkaXYgY2xhc3M9ImZsZXgtYm94IGZsZXgtZXZlbmx5IiBzdHlsZT0ibWFyZ2luLXRvcDogMzVweDsiPgoJCQkJPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImNvbnNlbnRTdWJtaXQiIGNsYXNzPSIgYnRuLWRlZmF1bHQgIiB2YWx1ZT0iU291bWV0dHJlIj4KCQkJPC9kaXY+CgkJPC9mb3JtPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdENvbnNlbnRQb3AiIHZhbHVlPSIiPgoJPC9kaXY+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InB1cmNoYXNlX2ludGVudF9hbnN3ZXIiIHZhbHVlPSJQR0p5SUM4K1RHVWdZMnhwWlc1MElHRWdiQ2RwYm5SbGJuUnBiMjRnWkNkaFkyaGxkR1Z5SUhOdmJpQndjbTlqYUdGcGJpQjI2V2hwWTNWc1pTQThZajRsZEdsdFpXWnlZVzFsSlR3dllqNDhZbklnTHo0PSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icHVyY2hhc2VfaW50ZW50X25vX2Fuc3dlciIgdmFsdWU9ImMyRnVjeUJrWVhSbElIQnk2V05wYzJVPSI+Cgk8ZGl2IGNsYXNzPSJyZXZlYWwtbW9kYWwiIGlkPSJhc1B1cmNoYXNlSW50ZW50Ij4KCSAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4KCSAgICA8c3Ryb25nIGNsYXNzPSJhc1BJVGl0bGUiPgoJICAgICAgUXVlbHF1ZXMgcHLDqWNpc2lvbnMKCSAgICA8L3N0cm9uZz4KCSAgICA8b2wgY2xhc3M9InN0ZXBzIj4KCSAgICA8bGkgaWQ9IkFMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk8iIGNsYXNzPSJoaWRkZW4iPgoJCQkJCTxkaXYgc3R5bGU9ImhlaWdodDoxMDVweDsiPgoJCQkJCQk8c3Ryb25nIGNsYXNzPSJ2aVRleHQiPgoJCQkJCQkJTm91cyBwZXJtZXR0ZXotdm91cyBkZSBwYXJ0YWdlciB2b3MgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBhdmVjIGxlcyBpbnN0aXR1dGlvbnMgZmluYW5jacOocmVzIHBvdXIgdm90cmUgYnVyZWF1IGRlIGNyw6lkaXQ\/CgkJCQkJCTwvc3Ryb25nPgoJCQkJCQk8ZGl2IGNsYXNzPSJjbHIiPjwvZGl2PgoKCQkJCQkJPGRpdiBjbGFzcz0iYXN5ZXNubyBhc3llcyI+CgkJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJ5ZXMiIG5hbWU9InNoYXJlX3BlcnNvbmFsIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJCTxsYWJlbD5PdWk8L2xhYmVsPgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0iYXN5ZXNubyBhc25vIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9Im5vIiBuYW1lPSJzaGFyZV9wZXJzb25hbCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCQk8bGFiZWw+Tm9uPC9sYWJlbD4KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgc3R5bGU9ImRpc3BsYXk6bm9uZTtjb2xvcjpyZWQ7cGFkZGluZy10b3A6NHB4O2NsZWFyOiBib3RoOyIgaWQ9IkFMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk9fVEVYVF9FUlJPUiI+Vm90cmUgY29uc2VudGVtZW50IGVzdCByZXF1aXMgcG91ciBjb21wbMOpdGVyIHZvdHJlIGRlbWFuZGUgZGUgY3LDqWRpdCE8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJICAgICAgPGxpIGNsYXNzPSJzdGVwSW50ZW50ICI+CgkgICAgICAgIDxzdHJvbmcgY2xhc3M9InZpVGV4dCI+CgkJCQkJUXVhbmQgcHLDqXZveWV6LXZvdXMgYWNoZXRlciB1biB2w6loaWN1bGU\/CgkgICAgICAgIDwvc3Ryb25nPgoJICAgICAgICA8dWwgY2xhc3M9InZpT3B0aW9ucyI+CgkgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IkQnaWNpIDMwIGpvdXJzIiBuYW1lPSJwdXJjaGFzZV9pbnRlbnQiIGNsYXNzPSJyZXFSYWRpbyI+PGxhYmVsPiBEJ2ljaSAzMCBqb3VyczwvbGFiZWw+PC9saT4KCSAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iRCdpY2kgMyBtb2lzIiBuYW1lPSJwdXJjaGFzZV9pbnRlbnQiIGNsYXNzPSJyZXFSYWRpbyI+PGxhYmVsPiBEJ2ljaSAzIG1vaXM8L2xhYmVsPjwvbGk+CgkgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IkQnaWNpIDYgbW9pcyIgbmFtZT0icHVyY2hhc2VfaW50ZW50IiBjbGFzcz0icmVxUmFkaW8iPjxsYWJlbD4gRCdpY2kgNiBtb2lzPC9sYWJlbD48L2xpPgoJICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJEJ2ljaSBwbHVzIGRlIDYgbW9pcyIgbmFtZT0icHVyY2hhc2VfaW50ZW50IiBjbGFzcz0icmVxUmFkaW8iPjxsYWJlbD4gRCdpY2kgcGx1cyBkZSA2IG1vaXM8L2xhYmVsPjwvbGk+CgkgICAgICAgIDwvdWw+CgkgICAgICAgIDxiciBjbGFzcz0iY2xyIj4KCSAgICAgIDwvbGk+CgoJICAgICAgPGxpIGNsYXNzPSJzdGVwQ29udGFjdCBoaWRkZW4iIGRhdGEtZGVwYXJ0bWVudHM9IiI+CgkJCTxkaXYgc3R5bGU9ImJvcmRlcjogbm9uZTsiIGNsYXNzPSJkMmNmb3JtIGQyY2Zvcm0tLXJvdyI+CgkJCQk8Ym94LWxjPgoJCQkJCTxkaXYgY2xhc3M9InZpVGV4dCI+CgkJCQkJCTxzdHJvbmc+UXVlbGxlIGVzdCB2b3RyZSBtw6l0aG9kZSBkZSBjb250YWN0IHByw6lmw6lyw6llID88L3N0cm9uZz4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJyYWRpby1pbmxpbmUiPgoJCQkJCQk8bGFiZWwgY2xhc3M9IiI+CgkJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InByZWZlcnJlZF9jb250YWN0IiB2YWx1ZT0iVMOpbMOpcGhvbmUiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCQlUw6lsw6lwaG9uZQoJCQkJCQk8L2xhYmVsPgoJCQkJCQk8bGFiZWwgY2xhc3M9IiI+CgkJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InByZWZlcnJlZF9jb250YWN0IiB2YWx1ZT0iQ291cnJpZWwiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCQlDb3VycmllbAoJCQkJCQk8L2xhYmVsPgoJCQkJCQk8bGFiZWwgY2xhc3M9IiI+CgkJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InByZWZlcnJlZF9jb250YWN0IiB2YWx1ZT0iU01TIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJU01TCgkJCQkJCTwvbGFiZWw+CgkJCQkJPC9kaXY+CgkJCQk8L2JveC1sYz4KCQkJPC9kaXY+CgkJPC9saT4KCgkJPGxpIGNsYXNzPSJzdGVwQ29uc2VudCI+CgkJCQk8c3RhY2stbGM+CgkJPGJveC1sYyBjbGFzcz0idmlUZXh0Ij4KCQkJPGRpdiBjbGFzcz0icG9wdXAtcG9saWN5Ij5BZmluIGRlIHJlc3BlY3RlciBsYSBMb2kgQ2FuYWRpZW5uZSBBbnRpLVBvdXJyaWVsIGV0IGxhIExvaSAyNSBkdSBRdcOpYmVjLCBub3VzIHZvdXMgcHJpb25zIGRlIGJpZW4gdm91bG9pciBjb25maXJtZXIgc2kgdm91cyBzb3VoYWl0ZXogcmVjZXZvaXIgbm9zIGNvbW11bmljYXRpb25zIGZ1dHVyZXMgY29uY2VybmFudCBsZXMgcmFiYWlzLCBsZXMgcHJvbW90aW9ucywgbGVzIG9mZnJlcyBldCBsZXMgdmVudGVzIHByaXbDqWVzLiBWZXVpbGxleiBub3RlciBxdWUgdm91cyBwb3V2ZXogbW9kaWZpZXIgb3UgcmV0aXJlciBjZSBjb25zZW50ZW1lbnQgw6AgdG91dCBtb21lbnQuIEVuIGNsaXF1YW50IHN1ciBPdWksIHZvdXMgY29uZmlybWV6IGF2b2lyIGx1IGV0IGFjY2VwdMOpIG5vdHJlIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSI\/cGF0aD0vcG9saXRpcXVlLWRlLWNvbmZpZGVudGlhbGl0ZS5odG1sIj5wb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqTwvYT4uPC9kaXY+CgkJPC9ib3gtbGM+CgkJPGJveC1sYyBjbGFzcz0iZGVhbGVyQ29uc2VudCI+CgkJCTxkaXYgY2xhc3M9ImZsZXgtYmV0d2VlbiI+CgkJCQk8ZGl2IGNsYXNzPSItdzUwcCI+VmlsbGUtTWFyaWUgS2lhPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSItdzUwcCI+CgkJCQkJPGxhYmVsPgoJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSIxIiBuYW1lPSJjb25zZW50IiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQlPdWkKCQkJCQk8L2xhYmVsPgoJCQkJCTxsYWJlbD4KCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iLTEiIG5hbWU9ImNvbnNlbnQiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCU5vbgoJCQkJCTwvbGFiZWw+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImNvbnNlbnQgZGlzY2xhaW1lciIgc3R5bGU9IndpZHRoOiA1MCU7IiBkYXRhLXRvb2x0aXA9J0VuIGZvdXJuaXNzYW50IG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzLCBqZSBjb25zZW5zIMOgIGxldXIgdXRpbGlzYXRpb24gZXQgbGV1ciBkaXZ1bGdhdGlvbiBjb25mb3Jtw6ltZW50IMOgIGxhIFBvbGl0aXF1ZSBkZSBjb25maWRlbnRpYWxpdMOpIGRlIFZpbGxlLU1hcmllIEtpYS4gSmUgY29uZmlybWUgYXZvaXIgbHUgbGEgJmx0O2EgaHJlZj0iL3BvbGl0aXF1ZS1kZS1jb25maWRlbnRpYWxpdGUuaHRtbCImZ3Q7UG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kmbHQ7L2EmZ3Q7LiBKZSBjb21wcmVuZHMgcXVlIFZpbGxlLU1hcmllIEtpYSBwZXV0IHBhcnRhZ2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIGF2ZWMgZGVzIHRpZXJzIGRhbnMgbGUgYnV0IGRlIGfDqXJlciBtYSByZWxhdGlvbiBhdmVjIGV1eCwgdGVscyBxdWUgbm90cmUgZm91cm5pc3NldXIgZGUgZ2VzdGlvbiBkZSBsYSByZWxhdGlvbiBjbGllbnQgKENSTSkuIEplIGNvbXByZW5kcyBxdWUgY2VydGFpbnMgZGUgY2VzIGZvdXJuaXNzZXVycyBwZXV2ZW50IHN0b2NrZXIgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgc3VyIGRlcyBzZXJ2ZXVycyBldCBkZXMgYmFzZXMgZGUgZG9ubsOpZXMgc2l0dcOpcyBlbiBkZWhvcnMgZGUgbWEgcHJvdmluY2UuIEplIGNvbXByZW5kcyDDqWdhbGVtZW50IHF1ZSBqZSBwZXV4IHJldGlyZXIgbW9uIGNvbnNlbnRlbWVudCBldCBtZSBkw6lzYWJvbm5lciBkZSBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIGZ1dHVyZXMgZGUgVmlsbGUtTWFyaWUgS2lhIMOgIHRvdXQgbW9tZW50LiBMZSBjb25zZW50ZW1lbnQgw6AgbGEgcsOpY2VwdGlvbiBkZSBjb21tdW5pY2F0aW9ucyDDqWxlY3Ryb25pcXVlcyBlc3Qgc29sbGljaXTDqSBwYXIgVmlsbGUtTWFyaWUgS2lhLic+Q2xhdXNlIGRlIG5vbi1yZXNwb25zYWJpbGl0w6k8L2Rpdj4KCQk8L2JveC1sYz4KCgkJCgoJPC9zdGFjay1sYz4KCTxkaXYgY2xhc3M9Ii1wdDEwIiBzdHlsZT0iZm9udC1zaXplOiAxMHB4O3RleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogdmFyKC0tZGFyay1ncmF5KTsiPklNUE9SVEFOVDogVm91cyBwb3V2ZXogZmFjaWxlbWVudCByZXRpcmVyIHZvdHJlIGNvbnNlbnRlbWVudCBlbiB0b3V0IHRlbXBzITwvZGl2PgoJCTwvbGk+CgoJICAgIDwvb2w+CgkgIDwvZm9ybT4KCSAgPGRpdiBjbGFzcz0iLXRleHQtY2VudGVyIj4KCSAgICA8YSBpZD0iZW1haWxDb25zZW50U3VibWl0IiBocmVmPSI\/cGF0aD0jIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIj5TT1VNRVRUUkU8L2E+CgkgIDwvZGl2PgoJPC9kaXY+CgoKCgkKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJvbkxlYWRTdWJtaXRHZW9sb2MiIHZhbHVlPSIxIj4KCQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImN1cnJlbnRJdGVtVHlwZSIgdmFsdWU9ImNhciI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VycmVudEl0ZW1UeXBlVVJMU2FmZUVOIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjdXJyZW50U3RhdHVzIiB2YWx1ZT0ibmV3Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0eHRVc2VyQWdlbnQiIHZhbHVlPSIgICI+CgkJPHNjcmlwdCBhc3luYyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9zdGF0cy5kMmNtZWRpYS5jYS9zZXJ2aWNlL2QyYy5pbml0LmpzIj48L3NjcmlwdD4KCgk8ZGl2IGlkPSJjb252ZXJzaW9uVGFnc1dyYXBwZXIiPjwvZGl2PgoKCTxkaXYgaWQ9ImQyY192YXJzIj48aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ibmV3Y2Fycy5odG1sIiBpZD0iMTZkN3Z3dDY2cG1vd28wayIgZGF0YS1mb3J2YXI9IkNVUlJFTlRQQUdFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjdiNTMzMzhmOWFjMmM4NmI5YWQwZDQ2MDAzY2VlYzVifDM2Nzg1Mjc1NTQiIGlkPSIzcG02dHZncXFlZ3c0dyIgZGF0YS1mb3J2YXI9IlVTRURfRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBpZD0ic283eXVxYWo0ZHdjYzhzIiBkYXRhLWZvcnZhcj0iU0lURV9DQVJfU0VDVElPTl9UWVBFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9ImE5NDU1Y2FjZTY2MTQ2ZTg1MjcxNjg4OTc0MmU1ZTE4fDM2Nzg1Mjc1NTQiIGlkPSIxM2RxdHNuY2Q4MXdrODQ0IiBkYXRhLWZvcnZhcj0iRklOQU5DRV9FTUFJTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIxMzFkMTlhOGIxNjU3NGQwYzk1ZjViYjcxNzNiZGNlY3wzNjc4NTI3NTU0IiBpZD0iNWNjeWdrOTI1bWd3ZzAiIGRhdGEtZm9ydmFyPSJGSU5BTkNFX0FERl9FTUFJTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJsaXZlIiBpZD0iMmVqaGJjMHl5b2cwd3d3IiBkYXRhLWZvcnZhcj0iREVQTE9ZTUVOVFRZUEUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iZ29vZ2xlIiBpZD0iMTQwNHJhMDRid3JrbzR3ZyIgZGF0YS1mb3J2YXI9Ik1BUFRPVVNFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InJlc2V0IiBpZD0iNmp5cDQ2NjR2Z3dzODB3IiBkYXRhLWZvcnZhcj0iUE9QVVBXSURHRVRUT0FDVElWRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ2aWxsZW1hcmlla2lhLmNvbSIgaWQ9InU2dGhydzlvbGNnOHc4dyIgZGF0YS1mb3J2YXI9IkRPTUFJTk5BTUUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly93d3cudmlsbGVtYXJpZWtpYS5jb20iIGlkPSJjb3U5aG00MjkxYzBrb2MiIGRhdGEtZm9ydmFyPSJOT1JNQUxTSVRFVVJJIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9IjFlcml2OTAwcGRhODh3dzgiIGRhdGEtZm9ydmFyPSJNQUtFRk9SRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBpZD0iMTBwYTd2M3FlbGRjb3NrIiBkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSJyODJ6Zmt4YTJkd3NzMDAiIGRhdGEtZm9ydmFyPSJZRUFSIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9ImkzZ3NheGdzNWprOHdjayIgZGF0YS1mb3J2YXI9IlJFRkVSRVIiPgo8L2Rpdj48IS0tICMjRU5ET0ZQQUdFIyMgLS0+Cgk8ZGl2IGlkPSJjb25maXJtX2Zvcm1zIj48L2Rpdj4KCgk8IS0tIE9POjo3MzM1YTJkNDJiYzg5ZjQxYWFiYzc4Yzk2OGNhYWM1NSAtLT4KCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb29rX2lzX2FjdGl2ZSIgdmFsdWU9IjEiPgoJPCEtLSBGYWNlYm9vayBQaXhlbCBDb2RlIFZpZXdDb250ZW50IC0tPgoJPCEtLSBPTzo6M2E4ZTc3ZWQzNGJjZDlhODU3ODUyZDI3MGZjZjY0NmQgLS0+Cgk8bm9zY3JpcHQ+CgkJPGltZyBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS90cj9pZD0xMzg0MjQ4NTU1Mjg5NDgwJmFtcDtldj1QYWdlVmlldyZhbXA7bm9zY3JpcHQ9MSIgYWx0PSJ0ciBpZCAxMzg0MjQ4NTU1Mjg5NDgwIGV2ICBwYWdlIHZpZXcgbm9zY3JpcHQgMSIgaGVpZ2h0PSIxIiBzdHlsZT0iZGlzcGxheTpub25lIiB3aWR0aD0iMSIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJPC9ub3NjcmlwdD4KCTwhLS0gRW5kIEZhY2Vib29rIFBpeGVsIENvZGUgVmlld0NvbnRlbnQgLS0+CgoJPCEtLSBEV1AtMjQzOSAtLT4KCTwhLS0gT086OjMxNGNhYTViZjU5MDkyYzZmN2NmNmEyZmM3MmU5NTEzIC0tPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9haWFwcHMuZDJjbWVkaWEuY2EvY2hhdGJvdC9kMmNib3Qtd2lkZ2V0LmpzIiBkYXRhLWNoYXQtd2lkZ2V0PSIiPjwvc2NyaXB0PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9haWFwcHMuZDJjbWVkaWEuY2EvY2hhdGJvdC9kMmNib3Qtd2lkZ2V0LmNzcyI+CTxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIxIiBpZD0iaXNtb2JpbGUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkZSRU5DSCIgaWQ9ImFjdGl2ZXNpdGVsYW5ndWFnZSI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcHNpdGVpZCIgbmFtZT0idG9wc2l0ZWlkIiB2YWx1ZT0iNDc1Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3BjYXJpZCIgbmFtZT0idG9wY2FyaWQiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGNhcmlkTXVsdGlzdGVwRm9ybSIgbmFtZT0idG9wY2FyaWRNdWx0aXN0ZXBGb3JtIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3Bpc21vYmlsZSIgbmFtZT0idG9waXNtb2JpbGUiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3BkZXBsb3ltZW50dHlwZSIgbmFtZT0idG9wZGVwbG95bWVudHR5cGUiIHZhbHVlPSJsaXZlIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJlTW9kZWwiIG5hbWU9ImVNb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtYWtlIiBuYW1lPSJwb3B1cG1ha2UiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwbWFrZU11bHRpc3RlcEZvcm0iIG5hbWU9InBvcHVwbWFrZU11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwbW9kZWwiIG5hbWU9InBvcHVwbW9kZWwiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIiBuYW1lPSJwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXB5ZWFyIiBuYW1lPSJwb3B1cHllYXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVweWVhck11bHRpc3RlcEZvcm0iIG5hbWU9InBvcHVweWVhck11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwdHJpbSIgbmFtZT0icG9wdXB0cmltIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHN0b2NrbnVtYmVyIiBuYW1lPSJwb3B1cHN0b2NrbnVtYmVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIgbmFtZT0icG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWRtYWtlIiBuYW1lPSJsYXN0dmlld2VkbWFrZSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZG1vZGVsIiBuYW1lPSJsYXN0dmlld2VkbW9kZWwiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWR5ZWFyIiBuYW1lPSJsYXN0dmlld2VkeWVhciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZHRyaW0iIG5hbWU9Imxhc3R2aWV3ZWR0cmltIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2Vkc3RvY2tudW1iZXIiIG5hbWU9Imxhc3R2aWV3ZWRzdG9ja251bWJlciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaGFzTXVsdGlwbGVEZWFsZXJzIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZW5kRW1haWxUb0FsbERlYWxlcnMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZFZlaGljbGUiIHZhbHVlPSIgICI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRxdWVyeW1ha2UiIG5hbWU9InNlYXJjaGVkcXVlcnltYWtlIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZHF1ZXJ5bW9kZWwiIG5hbWU9InNlYXJjaGVkcXVlcnltb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRxdWVyeXllYXIiIG5hbWU9InNlYXJjaGVkcXVlcnl5ZWFyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpbWdzdnJwb29sYWN0aXZlIiBuYW1lPSJpbWdzdnJwb29sYWN0aXZlIiB2YWx1ZT0iVFJVRSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaXNBVkdNYXJrZXRQcmljZUFjdGl2ZSIgdmFsdWU9IjAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNpdGVjb21waWxlaWQiIG5hbWU9InNpdGVjb21waWxlaWQiIHZhbHVlPSI2OWUyMGM1ZTYzNWFmIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJlbWFpbExpc3RTdWZmaXgiIG5hbWU9ImVtYWlsTGlzdFN1ZmZpeCIgdmFsdWU9IjM2Nzg1Mjc1NTQiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImRpc2FibGVQb3B1cHMiIG5hbWU9ImRpc2FibGVQb3B1cHMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBRE1JTl9HRU5FUkFMX0JMT0NLX0ZSX0RPTUFJTl9DSEVDSyIgbmFtZT0iQURNSU5fR0VORVJBTF9CTE9DS19GUl9ET01BSU5fQ0hFQ0siIHZhbHVlPSIiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0YXJnZXRQYWdlIiBuYW1lPSJ0YXJnZXRQYWdlIiB2YWx1ZT0iTkVXQ0FSUyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icGFnZVNlY3Rpb24iIG5hbWU9InBhZ2VTZWN0aW9uIiB2YWx1ZT0iTkVXIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cE90aGVyUGFnZXMiIG5hbWU9IkRpc2NvdW50UG9wdXBPdGhlclBhZ2VzIiB2YWx1ZT0iSE9NRVBBR0UiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBEZWxheVNob3dPdGhlciIgbmFtZT0iRGlzY291bnRQb3B1cERlbGF5U2hvd090aGVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93IiBuYW1lPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93IiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93TmV3IiBuYW1lPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93TmV3IiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJTSE9XX1BPUFVQX0FVVE8iIG5hbWU9IlNIT1dfUE9QVVBfQVVUTyIgdmFsdWU9InBlcmNlbnQiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNIT1dfUE9QVVBfQVVUT19VU0VEIiBuYW1lPSJTSE9XX1BPUFVQX0FVVE9fVVNFRCIgdmFsdWU9ImRlbGF5Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJTSE9XX1BPUFVQX0FVVE9fTkVXIiBuYW1lPSJTSE9XX1BPUFVQX0FVVE9fTkVXIiB2YWx1ZT0ic2Nyb2xsdXAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUCIgbmFtZT0iQVVUT19QRVJDRU5UX1BPUFVQIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUF9VU0VEIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVBfVVNFRCIgdmFsdWU9Ijc1Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBVVRPX1BFUkNFTlRfUE9QVVBfTkVXIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVBfTkVXIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkdFTkVSQUxfVVNFRF9QQUdFX1BPUFVQX1NFTEVDVCIgbmFtZT0iR0VORVJBTF9VU0VEX1BBR0VfUE9QVVBfU0VMRUNUIiB2YWx1ZT0iRVhDTFVESU5HIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJHRU5FUkFMX05FV19QQUdFX1BPUFVQX1NFTEVDVCIgbmFtZT0iR0VORVJBTF9ORVdfUEFHRV9QT1BVUF9TRUxFQ1QiIHZhbHVlPSJFWENMVURJTkciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlVTRURfTE9HT19PTl9DSEVDSyIgbmFtZT0iVVNFRF9MT0dPX09OX0NIRUNLIiB2YWx1ZT0iIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0VNX0JPT1NURVJfQUNUSVZFIiBuYW1lPSJTRU1fQk9PU1RFUl9BQ1RJVkUiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJQQUdFSUQiIG5hbWU9IlBBR0VJRCIgdmFsdWU9Im5ld2NhcnMuaHRtbCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cENoZWNrYm94T3RoZXIiIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveE90aGVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwQ2hlY2tib3giIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBDaGVja2JveE5ldyIgbmFtZT0iRGlzY291bnRQb3B1cENoZWNrYm94TmV3IiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQ1JNX1dTU19BQ1RJVkUiIG5hbWU9IkNSTV9XU1NfQUNUSVZFIiB2YWx1ZT0ibm8iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InR4dEJ1aWxkQW5kUHJpY2VFbWFpbExpbmsiIHZhbHVlPSJEZXJuaWVyIHbDqWhpY3VsZSBjb25maWd1csOpIChtb2R1bGUgQ29uZmlndXJhdGlvbiAmYW1wOyBQcml4KSBsZSB7JEJBTlBMSU5LfSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idHh0QnVpbGRBbmRQcmljZUZvbGRlclBhdGgiIHZhbHVlPSIvY29uZmlndXJhdGlvbi1ldC1wcml4LyI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Im5ld1NlY3Rpb25uYWJsZWQiIG5hbWU9Im5ld1NlY3Rpb25uYWJsZWQiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ1c2VkU2VjdGlvbm5hYmxlZCIgbmFtZT0idXNlZFNlY3Rpb25uYWJsZWQiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmaW5hbmNlU2VjdGlvbm5hYmxlZCIgbmFtZT0iZmluYW5jZVNlY3Rpb25uYWJsZWQiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZXJ2aWNlU2VjdGlvbm5hYmxlZCIgbmFtZT0ic2VydmljZVNlY3Rpb25uYWJsZWQiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwcm9tb1NlY3Rpb25uYWJsZWQiIG5hbWU9InByb21vU2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkNBTVBBSUdOSUQiIG5hbWU9IkNBTVBBSUdOSUQiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IklTVk0iIG5hbWU9IklTVk0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImhpZGRlbkRlYWxlck5hbWUiIHZhbHVlPSJWaWxsZS1NYXJpZSBLaWEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ0JCQ2hlY2tVc2VyIiB2YWx1ZT0iTVRndU9UY3VPUzR4TnpVPSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtX2VtYWlscyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMSIgaWQ9Imhhc1ZCRENFbmFibGVkIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmZmRMMSIgdmFsdWU9IjFmNTg0YmVkYmNiZDg5Y2VmZjY3MjdkYTUyYTZmMDg3NjRhNGY3YTQiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkdSV0wiIG5hbWU9IkdSV0wiIHZhbHVlPSJiMmUzNTBiNzFjMTY0NmI3ZWVlYzllMWFmNmM4NTRiMTNjYjFkYjUxO2JhNmI4NjExY2JhMTE3ODAzMWIxN2ZhN2UzNTBhY2YyY2UxMzVhYTU7MDljMzU4MDdiYTQ3YTgyNTkyZWY4OGU1ZDYzMDRlYTY5OWI4Y2JlMiI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRFQUxFUkJSQU5EIiBuYW1lPSJERUFMRVJCUkFORCIgdmFsdWU9IktpYSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iREVBTEVSUEFDT0RFIiBuYW1lPSJERUFMRVJQQUNPREUiIHZhbHVlPSI2MTEzNSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRklOQU5DRUZPUk1UWVBFIiBuYW1lPSJGSU5BTkNFRk9STVRZUEUiIHZhbHVlPSJpZnJhbWUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBOZXdSZWJhdGVTaG93VGV4dFVzIiB2YWx1ZT0iMCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cFVzZWRSZWJhdGVTaG93VGV4dFVzIiB2YWx1ZT0iMCI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Im9lbUNlcnRpZmljYXRpb24iIHZhbHVlPSIxMDA0Ij4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY29va2llTG9nVG9rZW4iIHZhbHVlPSJPRFF6T0RBeU9ETTVOekkxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb29raWVUb0NoZWNrIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJkaXNhYmxlSW50ZXJuYWxTZXNzaW9uIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZGVhbGVyUHJvdmluY2VDb2RlIiB2YWx1ZT0iUUMiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNpdGVJRCIgdmFsdWU9IjQ3NSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2l0ZWFwaXVybCIgdmFsdWU9Imh0dHBzOi8vc2l0ZWFwaS5kMmNtZWRpYS5jYSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRmluYW5jZV9Gb3JtVHlwZSIgdmFsdWU9ImlmcmFtZSI+CgogICAgPGRpdiBpZD0iZW1haWxTdWNjZXNzTWVzc2FnZSIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5Wb3RyZSBkZW1hbmRlIGEgw6l0w6kgZW52b3nDqWUgYXZlYyBzdWNjw6hzLiBVbiByZXByw6lzZW50YW50IHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSBwb3VyIHZvdHJlIGRlbWFuZGUuIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgc291cyBwZXUuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9IjE2NTk0OTc2MDcyIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iSjk4ckNMV2Q4YllaRU1qNmpPazkiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSIxMzg0MjQ4NTU1Mjg5NDgwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9InZpbGxlbWFyaWVraWEuY29tIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZSIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1LjwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkKCQk8ZGl2IGlkPSJkMmNGb290ZXJDb29raWVEZWxldGUiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MzIwcHg7aGVpZ2h0OjI1MHB4O3BhZGRpbmc6MzBweCAxMHB4IDgwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfZDJjZm9vdGVyY29va2llZGVsZXRlIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjM2ZjVlNDYzM2U2YWI3MWNiYTFiODRiNjZiNjY5ZGQ3IC0tPgoKCQkKCQkJCQkKCgkJCQoJCTxzdHlsZT4KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc2lkZWJhci1sYyA+ICp7CgkJCQl3aWR0aDogY2xhbXAoMjAuNXJlbSwgbWF4KDkwdncsIDIwLjVyZW0pLCA2MHJlbSk7CgkJCQlkaXJlY3Rpb246IHJ0bDsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzaWRlYmFyLWxjID4gKiA+ICp7CgkJCQlkaXJlY3Rpb246IGluaXRpYWw7CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc2lkZWJhci1sYyA+ICogPjpsYXN0LWNoaWxkewoJCQkJd2lkdGg6IDIwcmVtOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHNpZGViYXItbGN7CgkJCQktLXNpZGViYXItYnA6IDQwJTsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzd2l0Y2hlci1sY3sKCQkJCS0tc3dpdGNoLWJwOiAzNXJlbTsKCQkJfQoKCgkJCSNmb3JtRGVhbGVyQXBwb2ludG1lbnQgbGFiZWx7CgkJCQltYXgtd2lkdGg6MTlyZW07CgkJCQlkaXNwbGF5OiBmbGV4OwoJCQkJZmxleC13cmFwOiB3cmFwOwoJCQkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwoJCQl9CgoJCQkjZm9ybURlYWxlckFwcG9pbnRtZW50IGxhYmVsIHNwYW57CgkJCQl3aWR0aDo0cmVtOwoJCQl9CgoKCQkJI2Zvcm1EZWFsZXJBcHBvaW50bWVudCBbdHlwZT0ic3VibWl0Il17CgkJCQltYXgtd2lkdGg6MTlyZW07CgkJCX0KCgkJCS5jb250YWN0TWFwQ29udGFpbmVyewoJCQkJaGVpZ2h0OjEwMCU7CgkJCQltaW4taGVpZ2h0Om1pbig3NXZoLCAzOHJlbSk7CgkJCX0KCgkJCS5jb250YWN0Rm9ybXsKCQkJCWJvcmRlci1jb2xvcjojYmJiOwoJCQkJYm94LXNpemluZzogYm9yZGVyLWJveDsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCAuY29udGFjdEZvcm0gaW5wdXR7CgkJCQltYXgtd2lkdGg6IDEwcmVtOwoJCQl9CgoKCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWR7CgkJCQliYWNrZ3JvdW5kLWNvbG9yOiMwMDA7CgkJCQlib3JkZXItY29sb3I6IzAwMDsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCAuZmxhdHBpY2tyLXRpbWUgOmlzKGlucHV0OmhvdmVyLGlucHV0OmZvY3VzKXsKCQkJCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJCQl9CgoJCQkuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGgsIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHN7CgkJCQl0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIsIHVwcGVyY2FzZSk7CgkJCX0KCgkJCS8qIC5kcC1sYXJnZSAuZmxhdHBpY2tyLWNhbGVuZGFyewoJCQkJd2lkdGg6MzByZW07CgkJCQlmb250LXNpemU6MS4xcmVtOwoJCQl9CgoJCQkuZHAtbGFyZ2UgLmZsYXRwaWNrci13ZWVrZGF5c3sKCQkJCWhlaWdodDoyLjVyZW07CgkJCX0KCgkJCS5kcC1sYXJnZSAuZmxhdHBpY2tyLWRheXsKCQkJCW1heC13aWR0aDogNHJlbTsKCQkJCWhlaWdodDogMi41cmVtOwoJCQkJbGluZS1oZWlnaHQ6IDIuNXJlbTsKCQkJfQoKCQkJLmRwLWxhcmdlIDppcyguZmxhdHBpY2tyLWRheXMsLmRheUNvbnRhaW5lcikgewoJCQkJd2lkdGg6MTAwJTsKCQkJCW1heC13aWR0aDogMzByZW07CgkJCX0gKi8KCQk8L3N0eWxlPgoKCQkJPGRpdiBpZD0ibGVhZERlYWxlckFwcG9pbnRtZW50IiBoaWRkZW4+CgkJCQk8ZGl2IGNsYXNzPSJmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIiPgoJCQkJPHNpZGViYXItbGM+CgkJCQkJPGRpdj4gPCEtLSBpbnRlcm1lZGlhcnkgd3JhcHBlciAtLT4KCgkJCQkJCTxib3gtbGM+CgkJCQkJCQk8c3RhY2stbGMgY2xhc3M9ImFsaWduLWNlbnRlciI+CgkJCQkJCQkJPHVsIGNsYXNzPSJjaGVja2xpc3QgLWZzLTEgLS1zIj4KCQkJCQkJCQkJPGxpPlVuZSBleHDDqXJpZW5jZSBwZXJzb25uYWxpc8OpZSBkw6hzIHZvdHJlIGFycml2w6llPC9saT4KCQkJCQkJCQkJPGxpPkF1Y3VuZSBhdHRlbnRlIGNoZXogbGUgY29uY2Vzc2lvbm5haXJlPC9saT4KCQkJCQkJCQkJPGxpPkF1Y3VuZSBwYXBlcmFzc2UgaW51dGlsZTogY29uY2VudHJlei12b3VzIHN1ciBsZSB2w6loaWN1bGU8L2xpPgoJCQkJCQkJCTwvdWw+CgkJCQkJCQkJPGJveC1sYyBjbGFzcz0iZmxleC1jZW50ZXIiPgoJCQkJCQkJCQk8aW5wdXQgY2xhc3M9ImRhdGVwaWNrZXIgZmxhdHBpY2tyLWlucHV0IiBoaWRkZW4gdHlwZT0idGV4dCIgdGl0bGU9IlNlbGVjdCBEYXRlLi4uIiBwbGFjZWhvbGRlcj0iU2VsZWN0IERhdGUuLi4iIGRhdGEtaWQ9ImlubGluZSIgcmVhZG9ubHk+CgkJCQkJCQkJPC9ib3gtbGM+CgkJCQkJCQkJPGJveC1sYyBjbGFzcz0iY29udGFjdEZvcm0gLWIgLXctMTAwIGZsZXgtY2VudGVyIC0tczIiPgoJCQkJCQkJCQk8Zm9ybSBpZD0iZm9ybURlYWxlckFwcG9pbnRtZW50IiBjbGFzcz0iLXctMTAwIiBub3ZhbGlkYXRlPgoJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMyIGFsaWduLWNlbnRlciI+CgoJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItYm9sZCB0eHQtY2VudGVyIHR4dC11cHBlciBzZWxlY3RlZFRpbWUiPjwvc3Bhbj4KCQkJCQkJCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkYXRlIj4KCgkJCQkJCQkJCQkJPHN3aXRjaGVyLWxjPgoJCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmbGV4LWNlbnRlciI+IDwhLS0gaW50ZXJtZWRpYXJ5IHdyYXBwZXIgLS0+CgkJCQkJCQkJCQkJCQk8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwgYWxpZ24tY2VudGVyIj4KCQkJCQkJCQkJCQkJCQk8c3Bhbj5Ob20gKjwvc3Bhbj4KCQkJCQkJCQkJCQkJCQk8aW5wdXQgcmVxdWlyZWQgY2xhc3M9Ii1waCIgbmFtZT0ibmFtZSIgdHlwZT0idGV4dCI+CgkJCQkJCQkJCQkJCQk8L2xhYmVsPgoKCQkJCQkJCQkJCQkJCTxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCBhbGlnbi1jZW50ZXIiPgoJCQkJCQkJCQkJCQkJCTxzcGFuPkNvdXJyaWVsICo8L3NwYW4+CgkJCQkJCQkJCQkJCQkJPGlucHV0IG5hbWU9ImVtYWlsIiB0eXBlPSJlbWFpbCIgcmVxdWlyZWQ+CgkJCQkJCQkJCQkJCQk8L2xhYmVsPgoKCQkJCQkJCQkJCQkJCTxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCBhbGlnbi1jZW50ZXIiPgoJCQkJCQkJCQkJCQkJCTxzcGFuPlTDqWzDqXBob25lICo8L3NwYW4+CgkJCQkJCQkJCQkJCQkJPGlucHV0IGRhdGEtcHJpc3RpbmUtcGhvbmUgbmFtZT0icGhvbmVudW0iIHR5cGU9InRlbCIgcmVxdWlyZWQ+CgkJCQkJCQkJCQkJCQk8L2xhYmVsPgoJCQkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCQk8L3N3aXRjaGVyLWxjPgoKCQkJCQkJCQkJCQk8YnV0dG9uIG9uc3VibWl0PSJqYXZhc2NyaXB0OnZvaWQoKSIgY2xhc3M9ImJ0biBidG4tcHJvbW8gLWZzLWxyIC13LTEwMCB0eHQtdXBwZXIgLWJvbGQiIHR5cGU9InN1Ym1pdCI+CgkJCQkJCQkJCQkJCVByZW5kcmUgcmVuZGV6LXZvdXMKCQkJCQkJCQkJCQk8L2J1dHRvbj4KCgkJCQkJCQkJCQkJPGlucHV0IG5hbWU9ImRhdGEiIHR5cGU9ImhpZGRlbiIgZGF0YS1tYWtlPSIiIGRhdGEtbW9kZWw9IiIgZGF0YS15ZWFyPSIiIGRhdGEtdHJpbT0iIiBkYXRhLWNvbmRpdGlvbj0iIiBkYXRhLWttPSIiIGRhdGEtdmluPSIiIGRhdGEtc3RvY2stbnVtYmVyPSIiPgoKCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0ic2VuZFRvIiB2YWx1ZT0iN2I1MzMzOGY5YWMyYzg2YjlhZDBkNDYwMDNjZWVjNWJ8MzY3ODUyNzU1NCIgdHlwZT0iaGlkZGVuIj4KCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0ic2VuZFRvQURGRm9ybWF0IiB2YWx1ZT0iMTMxZDE5YThiMTY1NzRkMGM5NWY1YmI3MTczYmRjZWN8MzY3ODUyNzU1NCIgdHlwZT0iaGlkZGVuIj4KCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0ibWFpbElEIiB2YWx1ZT0iRGVhbGVyQXBwb2ludG1lbnQiIHR5cGU9ImhpZGRlbiI+CgkJCQkJCQkJCQkJPGlucHV0IG5hbWU9InBvcHVwT2ZmZXJUeXBlIiB2YWx1ZT0iRGVhbGVyQXBwb2ludG1lbnRBbGwiIHR5cGU9ImhpZGRlbiI+CgoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImxlYWRFbWFpbCIgaGlkZGVuPgoJCQkJCQkJCQkJCQk8c3BhbiBkYXRhLXN1YmplY3Q+TGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXM8L3NwYW4+CgkJCQkJCQkJCQkJCTxzcGFuIGRhdGEtYm9keT5Cb25qb3VyLDxicj48YnI+VW4gY2xpZW50IHBvdGVudGllbCBheWFudCB2aXNpdMOpIHZvdHJlIHNpdGUgd2ViLCBhaW1lcmFpdCBwcmVuZHJlIHVuIHJlbmRlei12b3VzOjxicj48YnI+PHU+UmVuc2VpZ25lbWVudHMgc3VyIGxlIHbDqWhpY3VsZTwvdT46PGJyPk1vZMOobGU6IDxzdHJvbmc+ICA8L3N0cm9uZz48YnI+TklWOiA8c3Ryb25nPnskVklOfTwvc3Ryb25nPjxicj5OdW3DqXJvIGRlIHN0b2NrOiA8c3Ryb25nPnskU1RPQ0tOVU1CRVJ9PC9zdHJvbmc+PGJyPktpbG9tw6h0cmVzOiA8c3Ryb25nPnskS019PC9zdHJvbmc+PGJyPjxicj48dT5EYXRlIGR1IHJlbmRlei12b3VzIHNvdWhhaXTDqTwvdT4gOiA8c3Ryb25nPnskREFURX08L3N0cm9uZz48YnI+PGJyPjx1PlJlbnNlaWduZW1lbnRzIHN1ciBsZSB2aXNpdGV1cjwvdT46PGJyPk5vbTogPHN0cm9uZz57JE5BTUV9PC9zdHJvbmc+PGJyPkNvdXJyaWVsOiA8c3Ryb25nPjxhIGhyZWY9Ij9wYXRoPW1haWx0bzolN0IlMjRFTUFJTCU3RCI+eyRFTUFJTH08L2E+PC9zdHJvbmc+PGJyPlTDqWzDqXBob25lOiA8c3Ryb25nPjxhIGhyZWY9Ij9wYXRoPXRlbDolN0IlMjRQSE9ORU5VTSU3RCI+eyRQSE9ORU5VTX08L2E+PC9zdHJvbmc+IHskUEhPTkVfVkFMSURBVElPTl9BVFRFTVBUU308YnI+PGJyPjx1PkNvbmNlc3Npb248L3U+Ojxicj5Ob20gOiA8c3Ryb25nPnskREVBTEVSTkFNRX08L3N0cm9uZz48YnI+PGJyPjxkaXYgc3R5bGU9IiMjU0VPQkxPQ0tESVNQTEFZIyMiPlNvdXJjZSBNw6lkaWE6IDxzdHJvbmc+eyRVVE1ERVRBSUxTfTwvc3Ryb25nPjxicj5OYXZpZ2F0ZXVyOiA8c3Ryb25nPnskVVNFUkFHRU5UfSAtIDwvc3Ryb25nPjxicj5IaXN0b3JpcXVlIGRlIG5hdmlnYXRpb246IDxzdHJvbmc+PGEgaHJlZj0iP3BhdGg9JTdCJTI0VVVMSU5LJTdEIiByZWw9Im5vZm9sbG93IHVnYyBzcG9uc29yZWQgbm9pbmRleCIgc3R5bGU9ImNvbG9yOmJsYWNrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij5DbGlxdWV6IGljaTwvYT48L3N0cm9uZz48YnI+PC9kaXY+Q29uc2VudGVtZW50OiA8c3Ryb25nPnskQ09OU0VOVF9ERVRBSUxTfTwvc3Ryb25nPnskUFVSQ0hBU0VfSU5URU5UfTwvc3Bhbj4KCQkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCQk8L2Zvcm0+CgkJCQkJCQkJPC9ib3gtbGM+CgkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQk8L2JveC1sYz4KCgkJCQkJCTxkaXY+CgkJCQkJCQk8c3RhY2stbGMgY2xhc3M9ImNvbnRhY3RNYXBDb250YWluZXIgLS1zLTggLWJnLWxpZ2h0IiBpZD0iZm9vdGVyR29vZ2xlTWFwSG91cnNDb250YWluZXIiPgoKCQkJCQkJCQkKCQkJPGlmcmFtZSB0aXRsZT0iR29vZ2xlIE1hcCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZnJhbWVib3JkZXI9IjAiIGNsYXNzPSIgbGF6eWxvYWRlZCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQvdjEvcGxhY2U\/cT1wbGFjZV9pZCUzQUNoSUo3MlRySUpNYnlVd1JSTlZxVGtyQzE3SSZhbXA7a2V5PUFJemFTeUFHUk5zRXNHT3VqV3pvbGY0NkRhNnNINjNPTUpDdlo2MCZhbXA7em9vbT0xNCZhbXA7cmVnaW9uPUNBJmFtcDtsYW5ndWFnZT1mciIgYWxsb3dmdWxsc2NyZWVuPSIiPjwvaWZyYW1lPgoKCQkJCQkJCQk8Ym94LWxjIGNsYXNzPSJjb250YWN0QmxvY2sgLS1zMiAtbTAiPgoJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tczMiPgoJCQkJCQkJCQkJPGRpdj4KCQkJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tcy04Ij4KCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii0tZnMwIj5WaWxsZS1NYXJpZSBLaWE8L3NwYW4+CgkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jYS9tYXBzL2Rpci8\/YXBpPTEmYW1wO2Rlc3RpbmF0aW9uPVZpbGxlLU1hcmllJTJCS2lhJTJDMzAxMCsrcnVlK0hvY2hlbGFnYSUyQ01vbnRyQSVDMiVBOWFsJTJDUUMlMkNIMVcrMUcyJmFtcDtobD1mciZhbXA7dD1tJmFtcDt6PTE2JmFtcDtpZT1VVEY4JmFtcDtkZXN0aW5hdGlvbl9wbGFjZV9pZD1DaElKNzJUcklKTWJ5VXdSUk5WcVRrckMxN0kiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iLS1mcy0xIj4KCQkJCQkJCQkJCQkJCTxzcGFuPjMwMTAsIHJ1ZSBIb2NoZWxhZ2E8L3NwYW4+CgkJCQkJCQkJCQkJCQk8c3Bhbj5Nb250csOpYWwsIFFDPC9zcGFuPgoJCQkJCQkJCQkJCQkJPHNwYW4+SDFXIDFHMjwvc3Bhbj4KCQkJCQkJCQkJCQkJPC9hPgoJCQkJCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQk8ZGl2PgoJCQkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zLTgiPgoJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLWJvbGQiPlTDqWzDqXBob25lPC9zcGFuPgoJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLS1mcy0xIj4KCQkJCQkJCQkJCQkJCTxhIGhyZWY9Ij9wYXRoPXRlbDo1MTQlMjA1OTgtODgwMCIgZGF0YS1kZXBhcnRtZW50PSJTYWxlcyIgdGl0bGU9IkNvbnRhY3QgUGhvbmUiPjUxNCA1OTgtODgwMDwvYT4KCQkJCQkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCQk8ZGl2PgoJCQkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zLTgiPgoJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLWJvbGQiPkhldXJlczwvc3Bhbj4KCQkJCQkJCQkJCQkJCQkJPGRpdiBpZD0iaXRlbV9uZXciPgoJCQkJPHN0YWNrLWxjIGNsYXNzPSJob3Vyc0xpc3QiPgoJCQkJCQkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjIwOjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+THVuZGk8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj4wOTowMCAtIDIwOjAwPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMjA6MDAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5NYXJkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMjA6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIyMDowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPk1lcmNyZWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAyMDowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjIwOjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+SmV1ZGk8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj4wOTowMCAtIDIwOjAwPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMTc6MDAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5WZW5kcmVkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMTc6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIxMDowMCIgZGF0YS1tYXhob3VyPSIxNjowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPlNhbWVkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjEwOjAwIC0gMTY6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwIiBkYXRhLW1heGhvdXI9IjAiIGRhdGEtY2xvc2VkPSIxIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5EaW1hbmNoZTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPkZlcm3DqTwvc3Bhbj4KCQkJCTwvYm94LWxjPgoJCQkJPC9zdGFjay1sYz4KCQkJPC9kaXY+CgkJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQk8L2JveC1sYz4KCgkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQk8L2Rpdj4KCgkJCQkJPC9kaXY+CgkJCQk8L3NpZGViYXItbGM+CgkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoKCQkJCQoKCQkJCTwhLS0gT086OjAyNzA3N2FmODY1NTRkZjljZTJjZTYxMjllMzViNTEwIC0tPgoKICAgICAgIDwhLS0gTUFJTiBQT1BVUCBuZXcgTXVsdGlmb3JtUG9wdXAgLS0+CgkJCgkJPGRpdiBpZD0ibXVsdGlmb3JtUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MzAwcHg7aGVpZ2h0OjUwMHB4O3BhZGRpbmc6MHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX211bHRpZm9ybXBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OmVmNjc2OWY4ZjhjN2IzYzI4NDg0ZTJiMzMzMjQ3NzQ0IC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX211bHRpZm9ybVBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxkaXYgY2xhc3M9Imljb24tdGl0bGUiPgogICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9InRpdGxlLWljb24gc3VjY2VzcyAtbWwwIj48L3NwYW4+IC0tPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZS10eHQiPlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIGVudm95w6llITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPlZvdHJlIGRlbWFuZGUgYSDDqXTDqSBlbnZvecOpZSBhdmVjIHN1Y2PDqHMuIFVuIHJlcHLDqXNlbnRhbnQgdm91cyBjb250YWN0ZXJhIHNvdXMgcGV1LjwvcD4KICAgICAgPHAgY2xhc3M9InNlcnZpY2VTdWNjZXNzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGJyPlZvdHJlIGRlbWFuZGUgYSDDqXTDqSBlbnZvecOpZSBhdmVjIHN1Y2PDqHMuIFVuIHJlcHLDqXNlbnRhbnQgdm91cyBjb250YWN0ZXJhIHNvdXMgcGV1LjwvcD4KICAgICAgPCEtLSA8YSBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj4mIzIxNTs8L2E+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJlbWFpbC1jb25zZW50LWJ0bnMgLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8YSBocmVmPSI\/cGF0aD0jIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcuY2xvc2UtcmV2ZWFsLW1vZGFsOnZpc2libGUnKS50cmlnZ2VyKCdjbGljaycpO3JldHVybiBmYWxzZTsiPkZlcm1lcjwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxmb3JtIGlkPSJlbWFpbG1zZ2ZybV9tdWx0aWZvcm1Qb3B1cENvbnRhaW5lciIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSJCZXN0IG9mZmVyIChOZXcpIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iMTY1OTQ5NzYwNzIiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSJKOThyQ0xXZDhiWVpFTWo2ak9rOSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdjb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdhY3Rpb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdkb21haW5pZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxBZHYiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxQaXgiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb2tDb25JZCIgdmFsdWU9IjEzODQyNDg1NTUyODk0ODAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9tYWluIiB2YWx1ZT0idmlsbGVtYXJpZWtpYS5jb20iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcnJlciIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlcGFydG1lbnQiIHZhbHVlPSJORVciPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkX2RlcGFydG1lbnQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2V4cHJlc3MiIGNsYXNzPSJpc2V4cHJlc3MiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNwcm9tbyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2hvbWVwYWdlIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRlc3Rtb2RlIiBjbGFzcz0idGVzdG1vZGUiIHZhbHVlPSIwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRUeXBlIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZUlEIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3VycmVudFVSTCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzQ29uZmlybVBvcHVwIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2ZpcnN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2xhc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fcGhvbmVfbnVtYmVyIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzRnVsbFdpZHRoIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyTmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJ1dHRvblBvc2l0aW9uIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNNb2JpbGVOZXdWRFAiIHZhbHVlPSIxIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZnJvbUF1dG9BdWJhaW5lIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIG5hbWU9InRleHRDYXJTZWN0aW9uVHlwZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5nIiB2YWx1ZT0iZnIiPgogICAgICA8L2Zvcm0+CiAgICAgIDxpZnJhbWUgd2lkdGg9IjEiIGhlaWdodD0iMSIgbmFtZT0iaWZyYW1lIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PC9pZnJhbWU+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJlbWFpbEZhaWxNZXNzYWdlX211bHRpZm9ybVBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXUuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPjxlbSBjbGFzcz0iZmEgZmEtdGltZXMtY2lyY2xlIj48L2VtPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSItcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJyNlbWFpbEZhaWxNZXNzYWdlJykudHJpZ2dlcigncmV2ZWFsOmNsb3NlJyk7IiB2YWx1ZT0iRmVybWVyIj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgoJCQkJPCEtLSBPTzo6YjE5MjVjMmQzZDNhOGQzOGY2NGM0ZjA4MjQzODQ5MTMgLS0+CgkJCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gQ1JFRElUIFNDT1JFIFBPUFVQIC0tPgoJCQoJCTxkaXYgaWQ9ImNyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MzIwcHg7aGVpZ2h0OjYwMHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX2NyZWRpdHNjb3JlcG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6ZjA2NTM0NTU5ODlkY2ZlOTM0MTMwZDY1ZjJiN2M2ODUgLS0+CgoJCQoKICAgIDxkaXYgaWQ9ImVtYWlsU3VjY2Vzc01lc3NhZ2VfY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5NZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGTDqXRhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3LDqWRpdC48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGTDqXRhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3LDqWRpdC48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSIxNjU5NDk3NjA3MiI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzbGFiZWxpZCIgdmFsdWU9Iko5OHJDTFdkOGJZWkVNajZqT2s5Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iMTM4NDI0ODU1NTI4OTQ4MCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb21haW4iIHZhbHVlPSJ2aWxsZW1hcmlla2lhLmNvbSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1LjwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OmQ2NmY1ZDk0ODU5NzQyYzZhNTFmOGJhZDljMGRmYWUwIC0tPgoJCQo8IS0tIEVORCBDUkVESVQgU0NPUkUgUE9QVVAgLS0+Cgo8IS0tIENSRURJVCBTQ09SRSBDT05GSVJNIFBPUFVQIC0tPgoKPCEtLSBFTkQgQ1JFRElUIFNDT1JFIENPTkZJUk0gUE9QVVAgLS0+CgoJCQoJCTxkaXYgaWQ9ImNvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDo4MCU7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfY29udGFjdHBvcHVwIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086Ojk3ODA4NjdkN2NiNDRlMTZmMTA2YmQ1M2FkYTVjMWEwIC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX2NvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBtZXNzYWdlIGEgYmllbiDDqXTDqSBlbnZvecOpITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPk1lcmNpISBVbiBtZW1icmUgZGUgbm90cmUgw6lxdWlwZSB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fY29udGFjdHBvcHVwIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9IjE2NTk0OTc2MDcyIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iSjk4ckNMV2Q4YllaRU1qNmpPazkiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSIxMzg0MjQ4NTU1Mjg5NDgwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9InZpbGxlbWFyaWVraWEuY29tIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZV9jb250YWN0cG9wdXAiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdS48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjozZDc4NTQyNzQxMjVlYTY5YjAyNDU3NTY0NmE2OThkYyAtLT4KCQkKCgo8IS0tIEZJTkFOQ0UgTVVMVElTVEVQIFBPUFVQIG5ldyAtLT4KCQkKCQk8ZGl2IGlkPSJmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MzIwcHg7aGVpZ2h0OjQ5NXB4O3BhZGRpbmc6MzBweCAxMHB4IDgwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfZmluYW5jZW11bHRpc3RlcHBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjI2Zjg2OTEyNDk1MWJiODk2ODRlMjMzOGI5YmNmMjFiIC0tPgoKCQkKCQkKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBGSU5BTkNFIE1VTFRJU1RFUCBJTlNUQU5UIC0tPgoKPCEtLSBFTkQgRklOQU5DRSBNVUxUSVNURVAgSU5TVEFOVCAtLT4KCjwhLS0gQ1JFRElUIEJPT1NUIE1VTFRJIC0tPgoKPCEtLSBFTkQgQ1JFRElUIEJPT1NUIE1VTFRJIC0tPgoKPCEtLSBTRUNPTkQgQ0hBTkNFIFBPUFVQIG5ldyAtLT4KCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gUkVUVVJOIFBPUFVQIG5ldyAtLT4KCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gRVhJVCBQT1BVUCBuZXcgLS0+Cgo8IS0tIEVORCBuZXcgLS0+Cgo8IS0tIEJFU1QgUFJBQ1RJQ0UgUE9QVVAgbmV3IC0tPgoKPCEtLSBFTkQgbmV3IC0tPgogICAgICAgCQkKCQk8ZGl2IGlkPSJwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjgyJTttaW4taGVpZ2h0OjczMHB4O21pbi13aWR0aDozNTBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19wYXltZW50Y2FsY3VsYXRvcnBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjNlMmJkOTc0MTA2YmNiZjI2ODAzOWU5N2NiODQzOGFlIC0tPgoKCQkKCQkKICAgICAgIAogICAgICA8c2NyaXB0IGRhdGEtc2NvZGVyZWY9IjIxMTEtQiIgc3JjPSJodHRwczovL3ZpbGxlbWFyaWVraWEuY29tL2pzL21hcHMuanMucGhwPyZhbXA7bGFuZz1mciIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0idHJ1ZSI+PC9zY3JpcHQ+CjxzY3JpcHQgZGF0YS1zY29kZXJlZj0iMjExMS1CIiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgYXN5bmM9InRydWUiPjwvc2NyaXB0Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBpZD0iZGVmYXVsdERlcGFydG1lbnQiPgogICAgCgk8L2Rpdj4=","logs":"{\"result\":\"1\",\"error\":\"\",\"sources\":\"https:\\\/\\\/villemariekia.com\\\/js_r\\\/resource.loader.fr.js?v=3&js=hVTRbtswDPyhJUG7YR-wDsEGtEOBbtijwUi0zVgWPYlO5n796GSWbKfDHoJYR0m8I4_aHePu-KvHMGyP8d0urwxzQziBJ_DkHOiXYS_o5ZHBYngrPB6Lq8sOEPHjhxVoITTC7IS6VeQEjixJotQC-enbwesQ6VVTtBm8ntv0tCnBCIdhd7e9e7-9z4H57sw26t6kETWN-wLeuizsWEOsBQ4u7fJ4NhDWAjWBcG_qTdd7U8-TdTC0Wq8HcKZ3oPluWVALsXmbYMmhndAKPQYyT8oyXc5d32kx8qWzYp5fTAAx9TPYCYrnciE59br3YvmcCFgQ_CHkkkx7b4pYUymFpYoE3DzwFyoCinK77pvHIZqignX7A54w39MFbrmwg4eWTFGSw6JMqiSo2b76T7BEyF_0r-7tlIYMzzUL369CespHEmJ_a55r_17O1OE8uHSuqhHT7HplO1LcluRVwmx7Y7YlHKYVd-hr7rNbKubKqc-6hJTMguEn2QqleEryGKIksVbrhOGljd_69pB7XcKJA0ketgr5kQ1c9KWykpfvNcWFY9Jc9Tp8e7XY8xztbLlYezyoe8e_z2qLvb_FH3IfTz2Ov4Wbr9BGatxcnD7x1-J5g8WFRRRMCU2alb1O0ygn0R9fH53wBb88LS3bGZMEO8wTkFH4TRzfnjqtWhTy-I-ZVGodmSb8L5wNHBt0KNqWkX9gN3thUuiA5Wwy9ez00pB3I5dj_AM&jsrpl=&wswidth=0&device=mobile&ua=Q0NCb3QvMi4wIChodHRwczovL2NvbW1vbmNyYXdsLm9yZy9mYXEvKQ==\"}"}