IyEvYmluL2Jhc2gNCg0KLiAvaG9tZS8kKGlkIC1udSkvLmJhc2hfcHJvZmlsZQ0Kc291cmNlIEV4aXRDb2RlQ2hlY2suc2gNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgVmVyc2lvbiAgICAgICBWMS4wDQojIEF1dGhvciAgICAgICAgZXgtZmFuZ2ppYW5taW5nMDAyDQojIE1vZGlmaWVkICAgICAgMjAxOC0wNi0wOA0KIyBEZXNjcmliZSAgICAgIExpbmtkb+iwg+W6puWFpeWPo+mAmueUqOWvvOWFpeWklumDqOaWh+S7tueoi+W6jw0KIyBJblBhbWENCiMgICAgICAgIC1oZHBfcXVldWU96Zif5YiX5ZCN56ewDQojICAgICAgICAtdGFza19pbnN0YW5jZV9uYW1lPeimgeWvvOWFpeeahOaWh+S7tuWQjSzmlofku7blkI3ku6V0eHTmoLzlvI/nu5PlsL4NCiMgICAgICAgIC1oaXZlX2RiX25hbWU9SGl2ZeeahOaVsOaNruW6k+WQjQ0KIyAgICAgICAgLWhkcF91c2VyX25hbWU9SGFkb29w55So5oi35ZCNDQojICAgICAgICAtaGFkb29wX2luaXRmbGFnPeeUqOaIt+iHquWumuS5ieWPguaVsDE6MToxDQojICAgICAgICAgICAgICAgICAgICAgICAgICAxOui/veWKoOaPkuWFpeaVsOaNrg0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgMjropobnm5bljp/ooajmlbDmja4NCiMgICAgICAgIOazqDrlr7zlhaXnmoTmlofku7blkI3kuLogJ+ebruagh+ihqOWQjS50eHQnIOWIhumalOespuS4ujp0YWInXHQnIOaWh+S7tuWtmOaUvuWcqOW6k+S4i+mdoueahGZpbGVkYXRh5paH5Lu25aS5DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyBmdW5jdGlvbiBwcmludF9sb2cNCnByaW50X2xvZygpew0KICAgIHRzPSQoZGF0ZSArIiVGICVYIikNCiAgICBlY2hvICIkdHMgW0lORk9dICQxIg0KfQ0KDQojIOeUqOadpeino+aekOWPguaVsA0Kb3B0cz0kQA0KZ2V0cGFyYW0oKXsNCmFyZz0kMQ0KZWNobyAkb3B0cyB8eGFyZ3MgLW4xIHxjdXQgLWIgMi0gfGF3ayAtRic9JyAne2lmKCQxPT0iJyIkYXJnIiciKSBwcmludCAkMn0nDQp9DQoNCiMg6I635Y+W5Y+C5pWw55qE5YC8DQpJbmNTdGFydD1gZ2V0cGFyYW0gaW5jX3N0YXJ0YA0KSW5jRW5kPWBnZXRwYXJhbSBpbmNfZW5kYA0Kb3JhY2xlX2Nvbm5lY3Rpb249YGdldHBhcmFtIGpkYmNfc3RyYA0Kb3JhY2xlX3VzZXJuYW1lPWBnZXRwYXJhbSBkYl91c2VyYA0Kb3JhY2xlX3Bhc3N3b3JkPWBnZXRwYXJhbSBkYl9wc3dgDQpkYl9zaWQ9YGdldHBhcmFtIGRiX3NpZGANCnF1ZXVlTmFtZT1gZ2V0cGFyYW0gaGRwX3F1ZXVlYA0KaGRmc2hvc3RuYW1lPWBnZXRwYXJhbSBoZGZzX2hvc3RgDQp0YXNrX2luc3RhbmNlX25hbWU9YGdldHBhcmFtIHRhc2tfaW5zdGFuY2VfbmFtZWANCmhpdmVfZGJfbmFtZT1gZ2V0cGFyYW0gaGl2ZV9kYl9uYW1lYA0KaGRwX3VzZXJfbmFtZT1gZ2V0cGFyYW0gaGRwX3VzZXJfbmFtZWANCmhhZG9vcF9pbml0ZmxhZz1gZ2V0cGFyYW0gaGFkb29wX2luaXRmbGFnYA0KDQojIEhkZnNQYXRoIEhERlPot6/lvoQNCkhkZnNQYXRoPS9hcHBzLyR7aGRwX3VzZXJfbmFtZX0vJHtoaXZlX2RiX25hbWV9L2ZpbGVkYXRhDQoNCnByaW50X2xvZyAiIEhpdmXnlKjmiLflkI06OjpoZHBfdXNlcl9uYW1lPSR7aGRwX3VzZXJfbmFtZX0iDQpwcmludF9sb2cgIiBIaXZl5pWw5o2u5bqTOjo6aGl2ZV9kYl9uYW1lPSR7aGl2ZV9kYl9uYW1lfSINCnByaW50X2xvZyAiIEhpdmXpmJ/liJflkI06OjpxdWV1ZU5hbWU9JHtxdWV1ZU5hbWV9Ig0KcHJpbnRfbG9nICIgVGFibGUg6KGo5ZCNOjo6dGFza19pbnN0YW5jZV9uYW1lPSR7dGFza19pbnN0YW5jZV9uYW1lfSAiDQpwcmludF9sb2cgIiAgSW5pdEZsYWcgOjo6aGFkb29wX2luaXRmbGFnPSR7aGFkb29wX2luaXRmbGFnfSAiDQoNCiMg6I635Y+W5qCH5b+X5Yik5pat5omn6KGM55qE5Lia5Yqh5Luj56CB5paH5Lu2DQpmbGFnPSQoZWNobyAiJHtoYWRvb3BfaW5pdGZsYWd9IiB8YXdrIC1GICI6IiAne3ByaW50ICQxfScpDQppZiBbICIke2ZsYWd9IiA9ICIiIF07IHRoZW4NCiAgICAgICAgZmxhZz0xDQpmaQ0Kb3B0aW9uPSIiDQppZiBbICR7ZmxhZ30gLWVxIDEgXTsgdGhlbg0KICAgIG9wdGlvbj0iSU5UTyINCmVsaWYgWyAke2ZsYWd9IC1lcSAyIF07IHRoZW4NCiAgICBvcHRpb249Ik9WRVJXUklURSINCmVsc2UNCiAgICBleGl0IDENCmZpDQoNCiMg5q2j5bi45LuOaGRmc+WvvOWFpeaVsOaNrixmbGFn5pivMToxOjE6dGVzdOWImeS7juacrOWcsOW9k+WJjeebruW9leWvvOWFpea1i+ivlQ0KbG9hZD0iTE9BRCBEQVRBIElOUEFUSCAnJHtIZGZzUGF0aH0vJHt0YXNrX2luc3RhbmNlX25hbWV9LnR4dCciDQp0ZXN0X2ZsYWc9JChlY2hvICIke2hhZG9vcF9pbml0ZmxhZ30iIHxhd2sgLUYgIjoiICd7cHJpbnQgJE5GfScpDQppZiBbICIke3Rlc3RfZmxhZ30iID0gInRlc3QiIF07IHRoZW4NCiAgICBpZiBbIC1mICIke3Rhc2tfaW5zdGFuY2VfbmFtZX0udHh0IiBdOyB0aGVuDQogICAgICAgIGxvYWQ9IkxPQUQgREFUQSBMT0NBTCBJTlBBVEggJyR7dGFza19pbnN0YW5jZV9uYW1lfS50eHQnIg0KICAgIGVsc2UgDQogICAgICAgIGVjaG8gInRlc3TmqKHlvI/lvZPliY3nm67lvZXkuI3lrZjlnKgke3Rhc2tfaW5zdGFuY2VfbmFtZX0udHh0Ig0KICAgICAgICBleGl0IDENCiAgICBmaQ0KICAgIA0KZmkNCg0KIyB0eHRmaWxl5a2Q55uu5b2V5p+l5om+5paH5Lu2DQojaGFkb29wIGZzIC1scyAtUiAiJHtIZGZzUGF0aH0iIHxhd2sgJ3twcmludCAkTkZ9JyA+IEZJTEVMSVNULmNvbmYNCiNGaWxlTGlzdENvdW50PWBjYXQgRklMRUxJU1QuY29uZiB8IGdyZXAgLWMgIi8ke2hxbH0iYA0KDQoNCiMg5Li05pe26KGo5ZCNOuato+W8j+ihqOWPr+S7peW7uk9SQyzkuLTml7booahjb3B55Li6dGV4dGZpbGXliqDovb3mlofku7bmlbDmja7mj5LlhaXliLDmraPlvI/ooagNCnRtcF90YWJsZT0iJHt0YXNrX2luc3RhbmNlX25hbWV9X1RNUCINCg0KZXhwb3J0IEhBRE9PUF9VU0VSX05BTUU9JHtoZHBfdXNlcl9uYW1lfQ0KIyDmiZPljbDml6Xlv5cNCnByaW50X2xvZyAiVVNFICR7aGl2ZV9kYl9uYW1lfTsNCiAgICAgICAgU0VUIG1hcHJlZHVjZS5qb2IucXVldWVuYW1lPSR7cXVldWVOYW1lfTsNCiAgICAgICAgRFJPUCBUQUJMRSBJRiBFWElTVFMgJHt0bXBfdGFibGV9Ow0KICAgICAgICBDUkVBVEUgVEFCTEUgJHt0bXBfdGFibGV9IExJS0UgJHt0YXNrX2luc3RhbmNlX25hbWV9Ow0KICAgICAgICBBTFRFUiBUQUJMRSAke3RtcF90YWJsZX0gU0VUIFNFUkRFUFJPUEVSVElFUygnZmllbGQuZGVsaW0nPSdcdCcpOw0KICAgICAgICBBTFRFUiBUQUJMRSAke3RtcF90YWJsZX0gU0VUIEZJTEVGT1JNQVQgVEVYVEZJTEU7DQogICAgICAgICR7bG9hZH0gT1ZFUldSSVRFIElOVE8gVEFCTEUgJHt0bXBfdGFibGV9Ow0KICAgICAgICBJTlNFUlQgJHtvcHRpb259IFRBQkxFICR7dGFza19pbnN0YW5jZV9uYW1lfQ0KICAgICAgICBTRUxFQ1QgKiBGUk9NICR7dG1wX3RhYmxlfTsNCiAgICAgICAgRFJPUCBUQUJMRSBJRiBFWElTVFMgJHt0bXBfdGFibGV9OyINCiMg5omn6KGMDQpoaXZlIC1lICJVU0UgJHtoaXZlX2RiX25hbWV9Ow0KICAgICAgICBTRVQgbWFwcmVkdWNlLmpvYi5xdWV1ZW5hbWU9JHtxdWV1ZU5hbWV9Ow0KICAgICAgICBEUk9QIFRBQkxFIElGIEVYSVNUUyAke3RtcF90YWJsZX07DQogICAgICAgIENSRUFURSBUQUJMRSAke3RtcF90YWJsZX0gTElLRSAke3Rhc2tfaW5zdGFuY2VfbmFtZX07DQogICAgICAgIEFMVEVSIFRBQkxFICR7dG1wX3RhYmxlfSBTRVQgU0VSREVQUk9QRVJUSUVTKCdmaWVsZC5kZWxpbSc9J1x0Jyk7DQogICAgICAgIEFMVEVSIFRBQkxFICR7dG1wX3RhYmxlfSBTRVQgRklMRUZPUk1BVCBURVhURklMRTsNCiAgICAgICAgJHtsb2FkfSBPVkVSV1JJVEUgSU5UTyBUQUJMRSAke3RtcF90YWJsZX07DQogICAgICAgIElOU0VSVCAke29wdGlvbn0gVEFCTEUgJHt0YXNrX2luc3RhbmNlX25hbWV9DQogICAgICAgIFNFTEVDVCAqIEZST00gJHt0bXBfdGFibGV9Ow0KICAgICAgICBEUk9QIFRBQkxFIElGIEVYSVNUUyAke3RtcF90YWJsZX07Ig0KZXhpdENvZGVDaGVjayAkPw
