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/IF9fKCdzL0EnKSA6ICROV2FXTldmUGcgLiBfXygnIFo5Jyk7DQoNCi8qIEpoTnJOIGpCZE5yIHh0QmRVIGZ0SCBIaE4gRGR0YUJtIHJETkdCakJHIGZESEJmbXIgcW1VIHFycmZHQnFITlUganRtR0hCZm1yLiAqLw0KUE4wdEJQTl9mbUdOIChYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9mREhCZm1yLkRoRCcpOyANCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgUWR0YUJtIEtEVXFITiA3aE5HMQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KLyogQHJCbUdOIEUuUy55LmINCkJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX3RER2gxJyApID09ICdFJyApIHsNCkJtR2R0VU5fZm1HTihYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci90RC1tZkhCakJOUC5EaEQnKTsNCn0NCiovDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIHVmcVUgN2ZtSFBmZCBRcW1OZA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvTldhLXJOSEhCbWFyLkRoRCcgKTsNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgdWZxVSBpUGZtSCBYbVUgMkdQQkRIDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fRGR0YScgKSA9PSAnRScgKSB7CQ0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9qUGZtSE5tVS5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL1VnbXFXQkctckhnZE4uRGhEJyApOw0KfQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBBVVUgOEJVYU5ILCBaTkhxeGZjICYgMmhmUEhHZlVODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9XTkhxeGZjTnIuRGhEJyApOyANCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvcmhmUEhHZlVOLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1yZEJVTlAtZm1OLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1yZEJVTlAtSDNmLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1HcVBmdHJOZC5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hOV0RkcUhOci9OV2EtamZIZlBxV3EuRGhEJyApOw0KQm1HZHRVTl9mbUdOKCBYWm5GWGlfUXVLbllzX0ZZViAuICdCbUdkdFVOci9ITldEZHFITnIvcWtxYy1xZHh0Vy5EaEQnICk7ICANCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvSE5XRGRxSE5yL05XYS1xZHh0Vy5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hOV0RkcUhOci9OV2EtcWR4dFcteHFHMS5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hCbWdXR04tVWRhLkRoRCcgKTsgDQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL0hxY2ZtZldnLkRoRCcgKTsNCkJtR2R0VU5fZm1HTiggWFpuRlhpX1F1S25Zc19GWVYgLiAnQm1HZHRVTnIvTnFyZzNCVWFOSC5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL05xcmctVWZHci5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL05XYS1qTnFIdFBOVS5EaEQnICk7DQpCbUdkdFVOX2ZtR04oIFhabkZYaV9RdUtuWXNfRllWIC4gJ0JtR2R0VU5yL05XYS1qUE5ORGR0YUJtci5EaEQnICk7DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIFRmb05QIDJIZ2ROIG5ObU5QcUhmUCBAckJtR04gRS5TLnkuYg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KanRtR0hCZm0gTldhX2hmb05QX2FObSggJEJyaGZvTlAsICRySGdkTkhnRE4sICRIQkhkTiwgJHJ0eEhCSGROICkgew0KCQ0KCUJqICggJEJyaGZvTlAgPT0gJ0UnICkgew0KCQkNCgkvLyBKaEJyIEJyIHEgRk5qcXRkSCAySGdkTgkNCgkJDQoJCXIzQkhHaCAoJHJIZ2ROSGdETikgew0KCQkJDQoJCQlHcXJOICdoZm9OUGZtTic6DQoJCQkkSFd4ckhnZE4gPSAnPHFQSEJHZE4gR2RxcnI9IlVxLXFtQldxSE4gVXEtcmRCVU5pUGZXVkJhaEgiPjxEIEdkcXJyPSJOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9EPjxVQm8gR2RxcnI9ImpmUHJEcW0iPjxyRHFtIEdkcXJyPSJwZmZXIj48L3JEcW0+PC9VQm8+PC9xUEhCR2ROPic7DQoJCQl4UE5xMTsNCgkJCQ0KCQkJDQoJCQlHcXJOICdOV2FvQk4zLUgzZic6DQoJCQkkSFd4ckhnZE4gPSAnPFVCbyBHZHFycj0iTldhV3FyMSI+PGhDIEdkcXJyPSJOV2FIQkhkTiBOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9oQz48RCBHZHFycj0iTldhcnR4SEJIZE4iPicuJHJ0eEhCSGROLic8L0Q+PC9VQm8+JzsNCgkJCQ0KCQkJeFBOcTE7DQoJCQkNCgkJCQ0KCQkJR3FyTiAnTldhb0JOMy1IaFBOTic6DQoJCQkkSFd4ckhnZE4gPSAnPFVCbyBHZHFycj0iTldhV3FyMSI+PGhDIEdkcXJyPSJOV2FIQkhkTiBOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9oQz48RCBHZHFycj0iTldhcnR4SEJIZE4iPicuJHJ0eEhCSGROLic8L0Q+PC9VQm8+JzsNCgkJCQ0KCQkJeFBOcTE7DQoJCQkNCgkJCQ0KCQkJR3FyTiAnTldhb0JOMy1qZnRQJzoNCgkJCSRIV3hySGdkTiA9ICc8aEMgR2RxcnI9Ik5XYUhIZCBOV2FqQkhITmNIIj4nLiRIQkhkTi4nPC9oQz4nOw0KCQkJDQoJCQl4UE5xMTsJCQkJDQoJCQkNCgkNCgkJVU5qcXRkSDoNCgkJeFBOcTE7CQ0KCQl9DQoJCQ0KCX0gTmRyTiB7DQoJCSRIV3hySGdkTiA9ICc8RCBHZHFycj0iVXEtcW1CV3FITm1oIE5XYWpCSEhOY0giIHJIZ2ROPSJVQnJEZHFnOm1mbU47Ij4nLiRIQkhkTi4nPC9EPjxVQm8gR2RxcnI9ImpmUHJEcW1xIj48ckRxbSBHZHFycj0icGZmV3EiPjwvckRxbT48L1VCbz4nOw0KCX0JCQ0KDQpQTkh0UG0gJEhXeHJIZ2ROOw0KDQp9DQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgQWR4dFcgbk5tTlBxSGZQIEByQm1HTiBFLlMueS5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQpqdG1HSEJmbSBOV2FfZEJhaEh4ZmNfQldxYU5fcWR4dFdfYU5tTlBxSGZQKCAkZGFIZ0ROLCAkZGEzLCAkZGFoLCAkZGFHZHIsICRkYVdOQlVqQmRITlAsICRkYUJyUEcsICRkYXFkSCwgJGRhR3JIZ2ROLCAkZGFQTmQsICRkYUhIZCA9IG10ZGQsICRQbVVXLCAkaGZvZlBtZlAsICRXTlVIZ0ROLCAkQnJ4cVVhTiwgJEJXYUdmdG1ILCAkcmZQbSwgJEhodFd4ckhnZE4sICRxZEJVLCAkQnJkcXBnLCAkZHFwRGRHICkgew0KCQ0KCQkkQnJhcWRkQm1qZiA9IGFOSF9EZnJIX1dOSHEoICRxZEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hcWRkTlBnX2ZESEMnLCBIUHROICk7DQoJCQ0KCQlCaiAoICRCcmFxZGRCbWpmID09ICdmbScgKSB7DQoJCQkkQldhQm1qZiA9IGFOSF9EZnJIKCAkcWRCVSApOw0KCQkJJEJISGQgPSBySFBCRHJkcXJoTnIgKCBOckdfaEhXZCggTnJHX2tyKCAkQldhQm1qZi0+RGZySF9IQkhkTiApICkgKTsNCgkJCSRCcnh4SEhkID0gckhQQkRyZHFyaE5yICggTnJHX2hIV2QoIE5yR19rciggJEJXYUJtamYtPkRmckhfTmNHTlBESCApICkgKTsNCgkJfQ0KCQlOZHJOIHsNCgkJCSRCSEhkID0gckhQQkRyZHFyaE5yKCBhTkhfRGZySF9XTkhxKCAkcWRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfSEJIZE4nLCBIUHROICkgKTsNCgkJCSRCcnh4SEhkID0gckhQQkRyZHFyaE5yKCBhTkhfRGZySF9XTkhxKCAkcWRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcnR4X0hCSGROJywgSFB0TiApICk7DQoJCX0NCgkJDQoJCUJqICgkQnJ4cVVhTiA9PSAnRScgJiYgJFdOVUhnRE4gPT0gJ1p0ZEhCRGROIFlXcWFOciAoMmRCVU5QKScgKXsNCgkJCSRxVVV4cVVhTiA9ICc8ckRxbSBHZHFycj0iTldhLXhxVWFOciI+PHJEcW0gR2RxcnI9IkJHZnRtSCI+Jy4kQldhR2Z0bUguJzwvckRxbT48ckRxbSBHZHFycj0iQldhSGEiPicuJHJmUG0uJzwvckRxbT48L3JEcW0+JzsNCgkJfSBOZHJOIHsNCgkJCSRxVVV4cVVhTiA9ICcnOw0KCQl9CQ0KDQoJCU5HaGYgJzxVQm8gVXFIcS1OV2EtR2hCZFU9IicuJEJXYUdmdG1ILiciIFVxSHEtTldhLXFkeHRXPSInLiRxZEJVLiciIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlVqQmRITlAuJyBrdHJIcWR4dFciPicuJHFVVXhxVWFOLic8VUJvIEdkcXJyPSJCTmhxbVUiPjxxIGZtR2RCRzE9IlBOSHRQbSBqcWRyTjsiIEdkcXJyPSInLiRxZEJVLicgbWZqZmZ4ZmMiIGhQTmo9IiMiPjxCV2EgR2RxcnI9Ik5XYWRxcGciICcuJGRxcERkRy4nICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiAvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOw0KCQkJDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIHVCYWhIeGZjIG5ObU5QcUhmUCBAckJtR04gRS5TLnkuYg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9kQmFoSHhmY19CV3FhTl9hUEJVX2FObU5QcUhmUCggJGRhSGdETiwgJGRhMywgJGRhaCwgJGRhR2RyLCAkZGFXTkJVLCAkZGFCclBHLCAkZGFxZEgsICRkYUdySGdkTiwgJERySEJVLCAkZGFCV0JVLCAkZGFQTmQsICRkYWp0ZGRESGgsICRkYUhIZCA9IG10ZGQsICRQbVVXLCAkaGZvZlBtZlAsICRIaHRXeHJIZ2ROLCAkQnJkcXBnLCAkRGRHaGRVUCA9IG10ZGQgKSB7DQoJDQoJCSRCcmFxZGRCbWpmID0gYU5IX0RmckhfV05IcSggJERySEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hcWRkTlBnX2ZESEMnLCBIUHROICk7DQoJCQ0KCQlCaiAoICRCcmFxZGRCbWpmID09ICdmbScgKSB7DQoJCQkkQldhQm1qZiA9IGFOSF9EZnJIKCAkZGFCV0JVICk7DQoJCQkkQkhIZCA9IHJIUEJEcmRxcmhOciAoIE5yR19oSFdkKCBOckdfa3IoICRCV2FCbWpmLT5EZnJIX0hCSGROICkgKSApOw0KCQkJJEJyeHhISGQgPSBySFBCRHJkcXJoTnIgKCBOckdfaEhXZCggTnJHX2tyKCAkQldhQm1qZi0+RGZySF9OY0dOUERIICkgKSApOw0KCQl9DQoJCU5kck4gew0KCQkJJEJISGQgPSBySFBCRHJkcXJoTnIoIGFOSF9EZnJIX1dOSHEoICREckhCVSwgJ05xcldOVUJxX1dOSHF4ZmNfSEJIZE4nLCBIUHROICkgKTsNCgkJCSRCcnh4SEhkID0gckhQQkRyZHFyaE5yKCBhTkhfRGZySF9XTkhxKCAkRHJIQlUsICdOcXJXTlVCcV9XTkhxeGZjX3J0eF9IQkhkTicsIEhQdE4gKSApOw0KCQl9DQoJCQ0KCUJqICggJGRhcWRIICkgew0KCQkNCgkJJGRhcWRIID0gdEczZlBVciggckhQX1BORGRxR04oICctJywgJyAnLCAkZGFxZEggKSApOw0KCQkNCgkJfSBOZHJOIHsNCgkJCQ0KCQkJJGRhcWRIID0gJ0JXcWFOIGFxZGROUGcnOw0KCQkJDQoJCQl9DQoJCQ0KCXIzQkhHaCAoICRkYUhnRE4gKSB7DQoJCQ0KCQkvLyBYWm4gdUJhaEh4ZmMgKCBGTmpxdGRIICkNCgkJR3FyTiAnTldhZHgnOg0KCQlOR2hmICc8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+PFVCbyBHZHFycj0iQk5ocW1VIj48cSBmbUdkQkcxPSJOcXJnQUdIQm9OMkhnZE4yaE5OSChcJycuJGRhR3JIZ2ROLidcJyk7UE5IdFBtIEhQdE47IiBHZHFycj0iJy4kRHJIQlUuJy0nLiRkYUJXQlUuJyBtZmpmZnhmYyIgUE5kPSInLiRkYVBOZC4nIiBoUE5qPSInLiRkYWp0ZGRESGguJyI+PEJXYSAnLiREZEdoZFVQLicgR2RxcnI9Ik5XYWRxcGciICcuJEJyZHFwZy4nPSInLiRkYUJyUEcuJyIgcWRIPSInLiRkYXFkSC4nIiBIQkhkTj0iJy4kZGFxZEguJyIvPicuTldhX2hmb05QX2FObSggJGhmb2ZQbWZQLCAkSGh0V3hySGdkTiwgJEJISGQsICRCcnh4SEhkICkuJzwvcT48L1VCbz48L1VCbz4nOw0KDQoJCXhQTnExOw0KCQkNCgkJLy8gaWZmOWZjIHVCYWhIeGZjDQoJCUdxck4gJ2pmZnhjJzoJDQoJCUJqICggTnFyZ1dOVUJxX0JyamZmeGZjKCkgPT0gJ3FHSEJvTicgKXsgCQ0KCQkNCgkJCUJqKEdkcXJyX05jQnJIcignaWZmeGZjX2lQTk4nKSl7DQoJCQkJJEJyamZmeGZjalBOTiA9ICdHZHFycj0iM0QtQldxYU4tJy4kRHJIQlUuJy0nLiRkYUJXQlUuJyInOw0KCQkJCX0gTmRyTiB7DQoJCQkJCSRCcmpmZnhmY2pQTk4gPSAnJzsNCgkJCQkJfQkJDQoJCQ0KCQlOR2hmICc8VUJvIHJIZ2ROPSIzQlVIaDonLiRkYTMuJ0RjOyBoTkJhaEg6Jy4kZGFoLidEYzsiIEdkcXJyPSInLiRkYUdkci4nICcuJEhodFd4ckhnZE4uJyBvQk4zIFVxLUhodFd4ciBEUE5kZnFVTlBvQk4zIGpkSFAnLiRkYVdOQlUuJyI+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+JzsJCQkNCg0KCQl4UE5xMTsNCgkJDQoJCQ0KCQkvLyBRaGZIZjlmYw0KCQlHcXJOICdEeGZjJzoNCk5HaGYnPHJHUEJESCBIZ0ROPSJITmNIL2txb3FyR1BCREgiPg0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpIHsNCglrenROUGcoIi5kQmFoSHhmYycuJFdxQm1CVS4nIikuRGhmSGZ4ZmMoInEiLHsgSEJXTjonLiRCcnJkQlVOQm1IUG9kLicsIHF0SGZEZHFnOicuJEJycmRCVU5xdEhmLid9KTsNCgl9KTs8L3JHUEJESD4nOwkNCgkJDQoJCXhQTnExOwkJCQkJCQkJCQkNCgkJDQoJCVVOanF0ZEg6DQoJCXhQTnExOw0KCX0gIAkNCgkNCiRCckdkTnFtID0gZnhfYU5IX0dkTnFtKCk7DQpOR2hmIE5XYV9rcl9HZldEUE5yciggJEJyR2ROcW0gKTsNCgkNCn0NCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBBZHh0VyB1ZnFVTlAgKEFrcWMpIEByQm1HTiBFLlMueS5iDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX19qUGZtSF9xa3FjX3FkeHRXX2RmcVVOUCgkV05VLCAkckJwTiwgJHRCVSwgJEJEYSA9ICcnLCAkcWR4R2ZtSCwgJHBHciA9IG10ZGQsICRHV2ZVTiA9IG10ZGQsICRHRyA9IG10ZGQsICRHZm9OUHJCcE4gPSBtdGRkICl7DQoJDQoJZnhfckhxUEgoKTsNCgkNCglCaiAoJEJEYSkgew0KCQkkQkRhID0gJEJEYTsNCgl9IE5kck4gew0KCQkkQkRhID0gJyc7DQoJCX0NCgkJDQoJQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fZHFwZ2RmcVUnICkgPT0gJ0UnICkgew0KCQkkQnJkcCA9ICdFJzsNCgkJfSBOZHJOIHsNCgkJCSRCcmRwID0gJ3knOwkJDQoJCQl9DQoJCQ0KCQ0KTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+DQprenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgew0KCQ0KCW9xUCBXTlVCcUJVICwgR0JXYUdmdG1ILCBIQldOZnRIOw0KCQkNCglrenROUGcoVWZHdFdObUgpLmZtKCJHZEJHMSIsIi5OcXJnR2ZtSHFCbU5QLScuJHRCVS4nIC5rdHJIcWR4dFciLCBqdG1HSEJmbSAoKSB7DQoJCScuKCAoIE5XYV9yZHRhX0hmX21xV04oIE5xcmdfYU5IX2ZESEJmbSggIk5xcmdXTlVCcV9kQmFoSHhmY19ySGdkTiIgKSApID09ICdEeGZjJyApID8gJ2t6dE5QZygiLmRCYWhIeGZjJy4kdEJVLiciKS5EaGZIZnhmYygiRFBORHFQTkZNWiIpOycgICA6ICcnKS4nDQoJCWt6dE5QZygiLkJyZmpCZEdmbUgtJy4kdEJVLicgI05XYXJoZjNxZGQiKS5IUEJhYU5QKCJHZEJHMSIpOw0KCQlrenROUGcoIi5CcmZqQmRHZm1ILScuJHRCVS4nLCAuRHFhM1BxRC0nLiR0QlUuJyIpLmhCVU4oKTsNCgkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IERxUHJOWW1IKGt6dE5QZygiLkRxYTNQcUQtJy4kdEJVLiciKS5mampyTkgoKS5IZkQtU3kpfSwgRVN5eSk7DQoJCVdOVUJxQlUgPSBrenROUGcoSGhCcikucUhIUCgiVXFIcS1OV2EtcWR4dFciKTsNCgkJR2ROcVBKQldOZnRIKEhCV05mdEgpOw0KCQlrenROUGcoIiNCcmRmcVVOUGpmUC0nLiR0QlUuJyIpLmpxVU5ZbShTeXkpOw0KCQlvcVAgR1dVID0gInJoZjNhcWRkTlBnIjsNCgkJb3FQIEhodFd4bXFCZCA9ICInLiRyQnBOLiciOw0KCQlvcVAgV3FCbUJVID0gIicuJHRCVS4nIjsNCgkJb3FQIEdXZlVOID0gIicuJEdXZlVOLiciOw0KCQlvcVAgcEdyID0gIicuJHBHci4nIjsJCQ0KCQlvcVAgR0cgPSAiJy4kR0cuJyI7DQoJCW9xUCBHb1ByQnBOID0gIiI7DQoJCUdCV2FHZnRtSCA9IGt6dE5QZyhIaEJyKS5xSEhQKCJVcUhxLU5XYS1HaEJkVSIpOwkNCgkJSEJXTmZ0SCA9IHJOSEpCV05mdEgoanRtR0hCZm0oKXsgTldhX3FrcWNfcWR4dFdfZGZxVU5QKEdXVSwgV05VQnFCVSwgSGh0V3htcUJkLCBHQldhR2Z0bUgsIFdxQm1CVSwgR1dmVU4sIHBHciwgR0csIEdvUHJCcE4pOyB9LCBFeXl5KTsNCgkJfSk7DQoJCQ0KCQkNCgkJa3p0TlBnKFVmR3RXTm1IKS5mbSgiR2RCRzEiLCIjTldhcWtxY3hxRzEnLiR0QlUuJyIsIGp0bUdIQmZtICgpIHsNCgkJJy4oICggTldhX3JkdGFfSGZfbXFXTiggTnFyZ19hTkhfZkRIQmZtKCAiTnFyZ1dOVUJxX2RCYWhIeGZjX3JIZ2ROIiApICkgPT0gJ0R4ZmMnICkgPyAna3p0TlBnKCIuZEJhaEh4ZmMnLiR0QlUuJyIpLkRoZkhmeGZjKCJVTnJIUGZnIik7JyAgIDogJycpLicNCgkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IERxUHJOWW1IKGt6dE5QZygiLkRxYTNQcUQtJy4kdEJVLiciKS5mampyTkgoKS5IZkQtQ1N5KX0sIEVTeXkpOw0KCQlHZE5xUEpCV05mdEgoSEJXTmZ0SCk7DQoJCWt6dE5QZygiI0JyZGZxVU5QamZQLScuJHRCVS4nIikuanFVTlltKFN5eSk7DQoJCWt6dE5QZygiI05XYXFrcWN4cUcxJy4kdEJVLiciKS5qcVVOTXRIKCJqcXJIIik7CQ0KCQlrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIikuaEJVTigpOw0KCQlvcVAgR1dVID0gIk5XYXFrcWN4cUcxIjsJCQ0KCQlvcVAgV05VQnFCVSA9ICInLiRXTlUuJyI7DQoJCW9xUCBIaHRXeG1xQmQgPSAiJy4kckJwTi4nIjsNCgkJb3FQIFdxQm1CVSA9ICInLiR0QlUuJyI7DQoJCW9xUCBHV2ZVTiA9ICInLiRHV2ZVTi4nIjsNCgkJb3FQIHBHciA9ICInLiRwR3IuJyI7CQkNCgkJb3FQIEdHID0gIicuJEdHLiciOw0KCQlvcVAgR29QckJwTiA9ICInLiRHZm9OUHJCcE4uJyI7DQoJCUhCV05mdEggPSByTkhKQldOZnRIKGp0bUdIQmZtKCl7IE5XYV9xa3FjX3FkeHRXX2RmcVVOUChHV1UsIFdOVUJxQlUsIEhodFd4bXFCZCwgR0JXYUdmdG1ILCBXcUJtQlUsIEdXZlVOLCBwR3IsIEdHLCBHb1ByQnBOKTsgfSwgRVN5eSk7CQkNCgkJfSk7DQoJCQkJDQoJCWp0bUdIQmZtIE5XYV9xa3FjX3FkeHRXX2RmcVVOUChHV1UsIFdOVUJxQlUsIEhodFd4bXFCZCwgR0JXYUdmdG1ILCBXcUJtQlUsIEdXZlVOLCBwR3IsIEdHLCBHb1ByQnBOKSB7DQoJCQkJb3FQIFVxSHEgPSB7DQoJCQkJcUdIQmZtOiAiTldhX3FrcWNfcWR4dFdfZGZxVU5QIiwNCgkJCQlyTkd0UEJIZzogIicuM0RfR1BOcUhOX21mbUdOKCAiTnFyZ1dOVUJxLURQZi1tZm1HTiIpLiciLAkNCgkJCQlXTlVCcUJVOiBXTlVCcUJVLA0KCQkJCUREUHJOOiBHV1UsDQoJCQkJSGh0V3htcUJkOiBIaHRXeG1xQmQsDQoJCQkJV3FCbUJVOiBXcUJtQlUsDQoJCQkJR1dmVU46IEdXZlVOLA0KCQkJCXBHcjogcEdyLA0KCQkJCUdHOiBHRywNCgkJCQlHb1ByQnBOOiBHb1ByQnBODQoJCQkJfTsNCgkJCQ0KCQkJCWt6dE5QZy5EZnJIKCInLnFVV0JtX3RQZCgncVVXQm0tcWtxYy5EaEQnKS4nIiwgVXFIcSwganRtR0hCZm0oUE5yRGZtck4pIHsNCgkJCQkJR2ROcVBKQldOZnRIKEhCV05mdEgpOw0KCQkJCQlrenROUGcoIi5EcWEzUHFELScuJHRCVS4nIikuanFVTlltKGJ5eXkpOw0KCQkJCQkNCgkJCQkJcjNCSEdoIChHV1UpIHsNCgkJCQkJCQ0KCQkJCQkJR3FyTiAicmhmM2FxZGROUGciOg0KCQkJCQkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdEJVLiciKS5qcVVOTXRIKCJqcXJIIik7DQoJCQkJCQlrenROUGcoIiNOV2Fxa3FjeHFHMScuJHRCVS4nIikuanFVTlltKEV5eXkpOw0KCQkJCQkJb3FQIG1OM1lITldyID0ga3p0TlBnKFBOckRmbXJOKTsNCgkJCQkJCW9xUCBQTldmb05ZSE5XID0ga3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyAua3RySHFkeHRXIiApOw0KCQkJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC0nLiR0QlUuJyIpLk5XYUJyZkhmRE4oIlBOV2ZvTiIsIFBOV2ZvTllITlcpOw0KCQkJCQkJa3p0TlBnKCIuTnFyZ0dmbUhxQm1OUC0nLiR0QlUuJyIpLk5XYUJyZkhmRE4oIkJtck5QSCIsIG1OM1lITldyKTsJDQoJCQkJCQlkZnFVWVdxYU5yKCIuRHFhM1BxRC0nLiR0QlUuJyAuTldhZHFwZyIsIicuJHRCVS4nIiwiJy4kQkRhLiciLCBHQldhR2Z0bUgsIicuJEJyZHAuJyIpOw0KCQkJCQkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IERxUHJOWW1IKGt6dE5QZygiLkRxYTNQcUQtJy4kdEJVLiciKS5mampyTkgoKS5IZkQtQ3l5KX0sIEVTeXkpOwkJCQkJCQkNCg0KCQkJCQkJeFBOcTE7DQoJCQkJCQkNCgkJCQkJCUdxck4gIk5XYXFrcWN4cUcxIjoNCgkJCQkJCWt6dE5QZygiI0JyZGZxVU5QamZQLScuJHRCVS4nIikuanFVTk10SChTeXkpOw0KCQkJCQkJa3p0TlBnKCIuQnJmakJkR2ZtSC0nLiR0QlUuJyIpLmpxVU5ZbShTeXkpOw0KCQkJCQkJb3FQIG1OM1lITldyID0ga3p0TlBnKFBOckRmbXJOKTsNCgkJCQkJCW9xUCBQTldmb05ZSE5XID0ga3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyAub0JOMyIgKTsNCgkJCQkJCWt6dE5QZygiLk5xcmdHZm1IcUJtTlAtJy4kdEJVLiciKS5OV2FCcmZIZkROKCJQTldmb04iLCBQTldmb05ZSE5XKTsJCQkJCQkNCgkJCQkJCWt6dE5QZygiLk5xcmdHZm1IcUJtTlAtJy4kdEJVLiciKS5OV2FCcmZIZkROKCJCbXJOUEgiLCBtTjNZSE5Xcik7DQoJCQkJCQlkZnFVWVdxYU5yKCIuRHFhM1BxRC0nLiR0QlUuJyAuTldhZHFwZyIsIicuJHRCVS4nIiwiJy4kQkRhLiciLCAiJy4kcWR4R2ZtSC4nIiwiJy4kQnJkcC4nIik7DQoJCQkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogRHFQck5ZbUgoa3p0TlBnKCIuRHFhM1BxRC0nLiR0QlUuJyIpLmZqanJOSCgpLkhmRC1DeXkpfSwgRVN5eSk7DQoJCQkJCQkNCgkJCQkJCXhQTnExOwkJCQkJCQkJCQ0KCQkJCQkJDQoJCQkJCQlVTmpxdGRIOg0KCQkJCQl9DQoJDQoJCQkJfSk7DQoJCQl9CQkNCg0KfSk7DQoJDQoJDQo8L3JHUEJESD4nOwkNCg0KJHFkeHRXckdQREggPSBmeF9hTkhfR2ROcW0oKTsNCk5HaGYgTldhX2tyX0dmV0RQTnJyKCAkcWR4dFdyR1BESCApOw0KDQp9DQoNCg0KLy8gMnVZRlhWIEUgblhzWFZBSk1WCQ0KanRtR0hCZm0gTldhX0JXcWFOX3JkQlVOUF9mbU5fYU5tTlBxSGZQICggJE5XYXJQRywgJE5XYUhodFd4LCAkR3FEM0JVSGgsICRIaHRXeEhIZCApew0KCQ0KCUJqIChIUEJXKCRIaHRXeEhIZCkpew0KCQkkcmhmM2ZQbWZIID0gJyc7DQoJfSBOZHJOIHsNCgkJJHJoZjNmUG1mSCA9ICdVQnJEZHFnOiBtZm1OICFCV0RmUEhxbUg7JzsNCgl9DQoJDQogICAgTkdoZic8VUJvPg0KICAgIDxCV2EgdD0iQldxYU4iIHJQR0M9IicuJE5XYXJQRy4nIiAvPg0KICAgICAgICAgICAgICAgIDxVQm8gR2RxcnI9Ik5XYXJkQlVOUEdxRCIgdD0iR3FESEJmbSIgSD0iWjd1WVF8OSIgckhnZE49IicuJHJoZjNmUG1mSC4nIERmckJIQmZtOiBxeHJmZHRITjsgSGZEOiB5RGM7IGROakg6IHlEYzsNCiAgICAgICAgICAgICAgICAgICAgM0JVSGg6ICcuJEdxRDNCVUhoLidEYzsgaE5CYWhIOiBDU0RjOyI+DQogICAgICAgICAgICAgICAgICAgIDxVQm8gckhnZE49IkRmckJIQmZtOiBxeHJmZHRITjsgSGZEOiB5RGM7IGROakg6IHlEYzsgM0JVSGg6ICcuJEdxRDNCVUhoLidEYzsgaE5CYWhIOiBDU0RjOw0KICAgICAgICAgICAgICAgICAgICAgICAgeHFHMWFQZnRtVS1HZmRmUDogOWRxRzE7IGZEcUdCSGc6IHkuRTsgakJkSE5QOiBxZERocShmRHFHQkhnPUV5KTsiPg0KICAgICAgICAgICAgICAgICAgICA8L1VCbz4NCiAgICAgICAgICAgICAgICAgICAgPFVCbyBySGdkTj0iRGZyQkhCZm06IHF4cmZkdEhOOyBIZkQ6IHlEYzsgZE5qSDogeURjOyAzQlVIaDogJy4kR3FEM0JVSGguJ0RjOyBoTkJhaEg6IENTRGM7DQogICAgICAgICAgICAgICAgICAgICAgICBHZmRmUDogOGhCSE47IGpmbUgtckJwTjogRWVEYzsgamZtSC0zTkJhaEg6IHhmZFU7IGRCbU4taE5CYWhIOiBDU0RjOyBITmNILXFkQmFtOiBHTm1ITlA7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICcuJEhodFd4SEhkLicNCiAgICAgICAgICAgICAgICAgICAgPC9VQm8+DQogICAgICAgICAgICAgICAgPC9VQm8+DQogICAgPEJXYSB0PSJIaHRXeCIgclBHPSInLiROV2FIaHRXeC4nIiAvPg0KICAgIDwvVUJvPic7DQoJDQp9DQoNCi8vIDJ1WUZYViBFIDI3VllRSiBuWHNYVkFKTVYNCmp0bUdIQmZtIE5XYV9yZEJVTlBfZm1OX3JHUEJESF9hTm1OUHFIZlAoICRCcnJkQlVOcXRIZiwgJEJycmRCVU5CbUhQb2QsICRCVzNCVUhoLCAkQldoTkJhaEgsICR0bUIwdE5CVSApIHsNCgkJTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+a3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpew0KCQkJa3p0TlBnKCIjQnJkZnFVTlBqZlAtJy4kdG1CMHROQlUuJyIpLmpxVU5NdEgoQ3l5eSwganRtR0hCZm0gKCl7DQoJCQkJa3p0TlBnKCIuRHFhM1BxRC0nLiR0bUIwdE5CVS4nIikuanFVTlltKEV5eXkpOw0KCQkJCX0pOw0KCQkJCWp0bUdIQmZtIFAoKXtvcVAgTj1tLiRYZFdILkRxUE5tSHNmVU4uR2RCTm1IOEJVSGg7QmooTiltLiQyTkgyR3FkTjhCVUhoKFpxSGguV0JtKE4sJy4kQlczQlVIaC4nKSk7TmRyTiAzQm1VZjMuck5ISkJXTmZ0SChQLGJ5KX1vcVAgTj1bXTtOWyJaN3VZUXw5Il09eyRGdFBxSEJmbTp3eXksJDdkQkQ6ZSwkWmZvTjpIUHROLCRYcXJCbWE6JElycmZQWHFyQm1hJC4kWHFyTk10SFhjRGZ9O29xUCBIPXskaUJkZFpmVU46ZSwkdXFwZ3VmcVVCbWE6QywkQXRIZlFkcWc6Jy4kQnJyZEJVTnF0SGYuJywkQXRIZlFkcWcySE5EcjpFLCRBdEhmUWRxZ1ltSE5Qb3FkOicuJEJycmRCVU5CbUhQb2QuJywkUXF0ck5NbVRmb05QOnksJEFQUGYzNU5nc3FvQmFxSEJmbTpIUHROLCQyZEJVTkZ0UHFIQmZtOlN5eSwkWkJtRlBxYU1qanJOSEpmMmRCVU46Q3ksJDJkQlVOOEJVSGg6Jy4kQlczQlVIaC4nLCQyZEJVTlROQmFoSDonLiRCV2hOQmFoSC4nLCQyZEJVTjJEcUdCbWE6eSwkRkJyRGRxZ1FCTkdOcjpFLCRRcVAxQm1hUWZyQkhCZm06eSwkS1kyTnFQR2haZlVOOkUsJFFkcWdNUEJObUhxSEJmbTpFLCRGUHFhTVBCTm1IcUhCZm06YiwkQVBQZjNzcW9CYXFIZlBNREhCZm1yOnskN2RxcnI6JElycmZQQVBQZjNzcW9CYXFIZlAkLCQ3aHFtR05KZjJoZjM6RSwkMkhORHI6RX0sJEpodFd4bXFCZHNxb0JhcUhmUE1ESEJmbXI6eyQ3ZHFycjokSXJyZlBKaHRXeG1xQmRzcW9CYXFIZlAkLCQ3aHFtR05KZjJoZjM6QywkQUdIQmZtWmZVTjpFLCRBdEhmN05tSE5QOmIsJHVxbU5yOkUsJDJEcUdCbWFSOmIsJDJEcUdCbWE2OmIsJEZCckRkcWdRQk5HTnI6TywkUXFQMUJtYVFmckJIQmZtOkN3eSwkTVBCTm1IcUhCZm06RSwkRkJycXhkTkZQcWE6anFkck59LCQ3cURIQmZtMmRCVU5QTURIQmZtcjp7JDdkcXJyOiRJcnJmUDdxREhCZm0yZEJVTlAkLCQ3cURIQmZtSlBxbXJCSEJmbXI6TiwkUWRxZ1ltWmZVTjpFLCRRZHFnTXRIWmZVTjpifX07b3FQIG09bU4zICRJcnJmUDJkQlVOUCQoInJkQlVOUEVfR2ZtSHFCbU5QLScuJHRtQjB0TkJVLiciLEgpO1AoKTtCaighbXFvQmFxSGZQLnRyTlBBYU5tSC5XcUhHaCgvKEJRaGZtTnxCUWZVfEJRcVV8OWRxRzE5TlBQZ3xZWFpmeEJkTikvKSl7a3p0TlBnKDNCbVVmMykueEJtVSgiUE5yQnBOIixQKX19KTwvckdQQkRIPic7DQoJCX0NCg0KLy8gMnVZRlhWIEMgblhzWFZBSk1WCQ0KanRtR0hCZm0gTldhX0JXcWFOX3JkQlVOUF9IM2ZfYU5tTlBxSGZQICggJE5XYXJQRywgJE5XYUhodFd4LCAkR3FEM0JVSGgsICRIaHRXeEhIZCApew0KCUJqIChIUEJXKCRIaHRXeEhIZCkpew0KCQkkcmhmM2ZQbWZIID0gJyc7DQoJfSBOZHJOIHsNCgkJJHJoZjNmUG1mSCA9ICdVQnJEZHFnOiBtZm1OICFCV0RmUEhxbUg7JzsNCgl9DQoJDQogICAgTkdoZic8VUJvPg0KICAgIDxCV2EgdD0iQldxYU4iIHJQR0M9IicuJE5XYXJQRy4nIiAvPg0KICAgICAgICAgICAgICAgIDxVQm8gR2RxcnI9Ik5XYXJkQlVOUEdxRCIgdD0iR3FESEJmbSIgSD0iWjd1WVF8OSIgckhnZE49IicuJHJoZjNmUG1mSC4nIERmckJIQmZtOiBxeHJmZHRITjsgSGZEOiB5RGM7IGROakg6IHlEYzsNCiAgICAgICAgICAgICAgICAgICAgM0JVSGg6ICcuJEdxRDNCVUhoLidEYzsgaE5CYWhIOiBDU0RjOyI+DQogICAgICAgICAgICAgICAgICAgIDxVQm8gckhnZE49IkRmckJIQmZtOiBxeHJmZHRITjsgSGZEOiB5RGM7IGROakg6IHlEYzsgM0JVSGg6ICcuJEdxRDNCVUhoLidEYzsgaE5CYWhIOiBDU0RjOw0KICAgICAgICAgICAgICAgICAgICAgICAgeHFHMWFQZnRtVS1HZmRmUDogOWRxRzE7IGZEcUdCSGc6IHkuRTsgakJkSE5QOiBxZERocShmRHFHQkhnPUV5KTsiPg0KICAgICAgICAgICAgICAgICAgICA8L1VCbz4NCiAgICAgICAgICAgICAgICAgICAgPFVCbyBySGdkTj0iRGZyQkhCZm06IHF4cmZkdEhOOyBIZkQ6IHlEYzsgZE5qSDogeURjOyAzQlVIaDogJy4kR3FEM0JVSGguJ0RjOyBoTkJhaEg6IENTRGM7DQogICAgICAgICAgICAgICAgICAgICAgICBHZmRmUDogOGhCSE47IGpmbUgtckJwTjogRWVEYzsgamZtSC0zTkJhaEg6IHhmZFU7IGRCbU4taE5CYWhIOiBDU0RjOyBITmNILXFkQmFtOiBHTm1ITlA7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICcuJEhodFd4SEhkLicNCiAgICAgICAgICAgICAgICAgICAgPC9VQm8+DQogICAgICAgICAgICAgICAgPC9VQm8+DQogICAgPEJXYSB0PSJIaHRXeCIgclBHPSInLiROV2FIaHRXeC4nIiAvPg0KICAgIDwvVUJvPic7DQoNCn0NCg0KLy8gMnVZRlhWIEMgMjdWWVFKIG5Yc1hWQUpNVgkNCmp0bUdIQmZtIE5XYV9yZEJVTlBfSDNmX3JHUEJESF9hTm1OUHFIZlAoICRCcnJkQlVOcXRIZiwgJEJycmRCVU5CbUhQb2QsICRCVzNCVUhoLCAkQldoTkJhaEgsICR0bUIwdE5CVSApIHsNCgkJTkdoZic8ckdQQkRIIEhnRE49IkhOY0gva3FvcXJHUEJESCI+a3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgpew0KCQkJCWt6dE5QZygiI0JyZGZxVU5QamZQLScuJHRtQjB0TkJVLiciKS5qcVVOTXRIKEN5eXksIGp0bUdIQmZtICgpIHsgDQoJCQkJa3p0TlBnKCIuRHFhM1BxRC0nLiR0bUIwdE5CVS4nIikuanFVTlltKEV5eXkpOw0KCQkJCX0pOw0KCQkJanRtR0hCZm0gQigpe29xUCBOPVAuJFhkV0guRHFQTm1Ic2ZVTi5HZEJObUg4QlVIaDtCaihOKVAuJDJOSDJHcWROOEJVSGgoWnFIaC5XcWMoWnFIaC5XQm0oTiwnLiRCVzNCVUhoLicpLGJ5eSkpO05kck4gM0JtVWYzLnJOSEpCV05mdEgoQixieSl9b3FQIE49W107TlsiWjd1WVF8OSJdPXskRnRQcUhCZm06d3l5LCQ3ZEJEOmUsJFpmb046SFB0TiwkWHFyQm1hOiRJcnJmUFhxckJtYSQuJFhxck5NdEhYY0RmfTtvcVAgSD1beyRGdFBxSEJmbTpFQ3l5LCR2ZmZXOkUsJFhxckJtYTp7JHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTk10SHp0cVV9LCRNRHFHQkhnOkN9LHskRnRQcUhCZm06RU5iLCR2ZmZXOkMsJDJkQlVOTXRIOkhQdE4sJFhxckJtYTp7JHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQfSwkTURxR0JIZzpDfSx7JEZ0UHFIQmZtOkVDeXksJHZmZlc6RSwkVmZIcUhOOkhQdE4sJEZ0UEJtYTp7JHZmZlc6Wy5DLC40XSwkVmZIcUhOOlsuQywuNF19LCRYcXJCbWE6eyR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYSwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hfSwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjouU319LHskRnRQcUhCZm06RU5iLCR2ZmZXOkMsJFZmSHFITjpIUHROLCQyZEJVTk10SDpIUHROLCRYcXJCbWE6eyR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUCwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGZ9LCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi40fX0seyRGdFBxSEJmbTpFQ3l5LCQ3ZmRyOkMsJHZmZlc6RSwkaWRnRkJQTkdIQmZtOkUsJEFyck5XeGRnOkN5ZU8sJDdoTnJyWmZVTjp7JDdmZHRXbTpFU30sJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUH0sJDJHcWROVGZQQnBmbUhxZDouUywkTURxR0JIZzpDfSx7JEZ0UHFIQmZtOkVDeXksJDdmZHI6QywkdmZmVzpDLCQyZEJVTk10SDpIUHROLCRpZGdGQlBOR0hCZm06RSwkQXJyTld4ZGc6Q3llTywkN2hOcnJaZlVOOnskN2ZkdFdtOkVTfSwkWHFyQm1hOnskdU5qSDokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTnVCbU5xUH0sJDJHcWROVGZQQnBmbUhxZDplLCRNRHFHQkhnOkN9LHskRnRQcUhCZm06RUN5eSwkdmZmVzpFLCRWZkhxSE46SFB0TiwkRnRQQm1hOnskdU5qSDpbLkMsLjRdLCR2ZmZXOlsuQywuNF0sJFZmSHFITjpbLkMsLjRdfSwkaWRnRkJQTkdIQmZtOkUsJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck4yM0JtYSwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hfSwkMkdxZE5UZlBCcGZtSHFkOi53LCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi5TfX0seyRGdFBxSEJmbTpFTmIsJHZmZlc6QywkVmZIcUhOOkhQdE4sJDJkQlVOTXRIOkhQdE4sJGlkZ0ZCUE5HSEJmbTpDLCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZn0sJDJHcWROVGZQQnBmbUhxZDplLCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi40fX0seyRGdFBxSEJmbTpFQ3l5LCR2ZmZXOkUsJFZmSHFITjpIUHROLCRGdFBCbWE6eyR1TmpIOlsuQywuNF0sJHZmZlc6Wy5DLC40XSwkVmZIcUhOOlsuQywuNF19LCRpZGdGQlBOR0hCZm06QywkWHFyQm1hOnskdU5qSDokSXJyZlBYcXJCbWEkLiRYcXJOMjNCbWEsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTjIzQm1hLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVAsJFZmSHFITjokSXJyZlBYcXJCbWEkLiRYcXJOMjNCbWF9LCQyR3FkTlRmUEJwZm1IcWQ6LncsJE1EcUdCSGc6QywkVmZ0bVU6eyRWZkhxSE46LlN9fSx7JEZ0UHFIQmZtOkVOYiwkdmZmVzpDLCRWZkhxSE46SFB0TiwkMmRCVU5NdEg6SFB0TiwkaWRnRkJQTkdIQmZtOkUsJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck51Qm1OcVAsJFZmSHFITjokSXJyZlBYcXJCbWEkLiRYcXJOWW1YY0RmfSwkMkdxZE5UZlBCcGZtSHFkOmUsJE1EcUdCSGc6QywkVmZ0bVU6eyRWZkhxSE46LjR9fSx7JEZ0UHFIQmZtOkVDeXksJDdmZHI6QywkdmZmVzpFLCRWZkhxSE46SFB0TiwkaWRnRkJQTkdIQmZtOlMsJEFyck5XeGRnOkN5ZU8sJDdoTnJyWmZVTjp7JDdmZHRXbTpFU30sJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJEpmRDokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkdmZmVzokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOTXRIenRxVSwkVmZIcUhOOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHfSwkMkdxZE5UZlBCcGZtSHFkOi5TLCQyR3FkTkxOUEhCR3FkOi5iLCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi5sfX0seyRGdFBxSEJmbTpFTmIsJDdmZHI6QywkdmZmVzpFLCRWZkhxSE46SFB0TiwkMmRCVU5NdEg6SFB0TiwkaWRnRkJQTkdIQmZtOlMsJEFyck5XeGRnOkN5ZU8sJDdoTnJyWmZVTjp7JDdmZHRXbTpFU30sJFhxckJtYTp7JHVOakg6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkSmZEOiRJcnJmUFhxckJtYSQuJFhxck5ZbVhjRGYsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZiwkTURxR0JIZzokSXJyZlBYcXJCbWEkLiRYcXJOdUJtTnFQLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTlltWGNEZn0sJDJHcWROVGZQQnBmbUhxZDouUywkMkdxZE5MTlBIQkdxZDouYiwkTURxR0JIZzpDLCRWZnRtVTp7JFZmSHFITjoubH19LHskRnRQcUhCZm06RUN5eSwkVmYzcjpDLCR2ZmZXOkMsJFZmSHFITjpIUHROLCRpZGdGQlBOR0hCZm06dywkQXJyTld4ZGc6Q3llTywkN2hOcnJaZlVOOnskVmYzOkM0fSwkWHFyQm1hOnskdU5qSDokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCRywkSmZEOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCR2ZmZXOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRNRHFHQkhnOiRJcnJmUFhxckJtYSQuJFhxck5NdEh6dHFVLCRWZkhxSE46JElycmZQWHFyQm1hJC4kWHFyTlltN3R4Qkd9LCQyR3FkTlRmUEJwZm1IcWQ6ZSwkMkdxZE5MTlBIQkdxZDpDLCRNRHFHQkhnOkMsJFZmdG1VOnskVmZIcUhOOi5sfX0seyRGdFBxSEJmbTpFQ3l5LCQ3ZmRyOkMsJHZmZlc6QywkVmZIcUhOOkhQdE4sJGlkZ0ZCUE5HSEJmbTpTLCRBcnJOV3hkZzpDeWVPLCQ3aE5yclpmVU46eyQ3ZmR0V206RU99LCRYcXJCbWE6eyR1TmpIOiRJcnJmUFhxckJtYSQuJFhxck5ZbTd0eEJHLCRKZkQ6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJHZmZlc6JElycmZQWHFyQm1hJC4kWHFyTlltN3R4QkcsJE1EcUdCSGc6JElycmZQWHFyQm1hJC4kWHFyTk10SHp0cVUsJFZmSHFITjokSXJyZlBYcXJCbWEkLiRYcXJOWW03dHhCR30sJDJHcWROVGZQQnBmbUhxZDpFLCQyR3FkTkxOUEhCR3FkOkMsJE1EcUdCSGc6QywkVmZ0bVU6eyRWZkhxSE46LjR9fV07b3FQIG09eyRBdEhmUWRxZzonLiRCcnJkQlVOcXRIZi4nLCRBdEhmUWRxZ1ltSE5Qb3FkOicuJEJycmRCVU5CbUhQb2QuJywkUXF0ck5NbVRmb05QOmIsJHVxcGd1ZnFVQm1hOkMsJEZQcWFNUEJObUhxSEJmbTpiLCRBUFBmMzVOZ3Nxb0JhcUhCZm06SFB0TiwkMmRCVU5GdFBxSEJmbTp3eXksJDJkQlVOcmhmM01ESEJmbXI6eyQ3ZHFycjokSXJyZlAyZEJVTnJoZjNWdG1tTlAkLCRKUHFtckJIQmZtcjpILCRKUHFtckJIQmZtck1QVU5QOkUsJDJoZjN1Qm0xOkhQdE59LCRBUFBmM3Nxb0JhcUhmUE1ESEJmbXI6eyQ3ZHFycjokSXJyZlBBUFBmM3Nxb0JhcUhmUCQsJDdocW1HTkpmMmhmMzpFLCRBdEhmN05tSE5QOkMsJDJITkRyOkV9LCRKaHRXeG1xQmRzcW9CYXFIZlBNREhCZm1yOnskN2RxcnI6JElycmZQSmh0V3htcUJkc3FvQmFxSGZQJCwkN2hxbUdOSmYyaGYzOkMsJEFHSEJmbVpmVU46RSwkdXFtTnI6QywkMkRxR0JtYVI6RWUsJDJEcUdCbWE2OkVDLCRGQnJEZHFnUUJOR05yOlMsJFFxUDFCbWFRZnJCSEJmbTpFU3csJE1QQk5tSHFIQmZtOkN9LCQ3cURIQmZtMmRCVU5QTURIQmZtcjp7JDdkcXJyOiRJcnJmUDdxREhCZm0yZEJVTlAkLCQ3cURIQmZtSlBxbXJCSEJmbXI6TiwkUWRxZ1ltWmZVTjpFLCRRZHFnTXRIWmZVTjpifX07b3FQIFA9bU4zICRJcnJmUDJkQlVOUCQoInJkQlVOUENfR2ZtSHFCbU5QLScuJHRtQjB0TkJVLiciLG0pO0IoKTtCaighbXFvQmFxSGZQLnRyTlBBYU5tSC5XcUhHaCgvKEJRaGZtTnxCUWZVfEJRcVV8OWRxRzE5TlBQZ3xZWFpmeEJkTikvKSl7a3p0TlBnKDNCbVVmMykueEJtVSgiUE5yQnBOIixCKX19KTwvckdQQkRIPic7DQp9DQoNCi8vIDdxUGZ0ck5kIG5Yc1hWQUpNVgkNCmp0bUdIQmZtIE5XYV9HcVBmdHJOZF9hTm1OUHFIZlAgKCAkTldhclBHLCAkTldhSGh0V3gsICQzQlVIaCwgJEhodFd4SEhkLCAkanRkZCApew0KCQ0KICAgIE5HaGYnPFVCbyBHZHFycj0iTldhLUdxUGZ0ck5kIj48cSBoUE5qPSInLiRqdGRkLiciIEhCSGROPSInLiRIaHRXeEhIZC4nIiBQTmQ9Ik5XYURQTkhIZ1FoZkhmW3JoZjNxZGRdIj48QldhIEhCSGROPSInLiRIaHRXeEhIZC4nIiBHZHFycj0iTldhR3FQZnRyTmQiIHJQRz0iJy4kTldhSGh0V3guJyIgLz48L3E+PC9VQm8+JzsNCgkNCn0NCg0KLy8gN3FQZnRyTmQgMjdWWVFKIG5Yc1hWQUpNVgkNCmp0bUdIQmZtIE5XYV9HcVBmdHJOZF9yR1BCREhfYU5tTlBxSGZQKCAkQnJyZEJVTnF0SGYsICRCcnJkQlVOQm1IUG9kLCAkQlczQlVIaCwgJEJXaE5CYWhILCAkTmROV05tSEJVLCAkTnFyQm1hTmpqTkdILCAkSEJIZE4sICR0bUIwdE5CVSApew0KCU5HaGYgJzxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCglrenROUGcoVWZHdFdObUgpLlBOcVVnKGp0bUdIQmZtKCkgew0KCQlrenROUGcoIiNCcmRmcVVOUGpmUC0nLiR0bUIwdE5CVS4nIikuanFVTk10SChDeXl5LCBqdG1HSEJmbSAoKSB7DQoJCQlrenROUGcoIi5EcWEzUHFELScuJHRtQjB0TkJVLiciKS5qcVVOWW0oYnl5eSk7DQoJCQkNCgkJa3p0TlBnKCIueGNyZEJVTlAtJy4kTmROV05tSEJVLiciKS54YzJkQlVOUCh7DQoJCQlyZEJVTjhCVUhoOiAnLiRCVzNCVUhoLicsDQoJCQlyZEJVTlpxUGFCbTogRXksDQoJCQlXcWMyZEJVTnI6IEV5LA0KCQkJRHFhTlA6IGpxZHJOLA0KCQkJdHJONzIyOiBqcWRyTiwNCgkJCU5xckJtYTogIicuJE5xckJtYU5qak5HSC4nIiwNCgkJCXF0SGY6IEhQdE4sDQoJCQlyRE5OVTogRVN5eSwNCgkJCUdmbUhQZmRyOiBIUHROLA0KCQkJcXRIZjdmbUhQZmRyOiBIUHROLA0KCQkJRFBOZGZxVVlXcWFOcjogInFkZCIsDQoJCQlCbWpCbUJITnVmZkQ6IEhQdE4sDQoJCQlHcURIQmZtcjogJy4kSEJIZE4uJywNCgkJCXF0SGZUZm9OUDogSFB0TiwNCgkJCXF0SGYySHFQSDogJy4kQnJyZEJVTnF0SGYuJywNCgkJCURxdHJOOiAnLiRCcnJkQlVOQm1IUG9kLicsDQoJCQlmbTJkQlVOQWpITlA6IGp0bUdIQmZtKCkgew0KCQkJCWt6dE5QZygiLnhjLXJIcVBIIikuSFBCYWFOUCgiR2RCRzEiKTsNCiAgICAgICAgICAgIH0NCgkJCQl9KTsNCgkJCQkNCgkJCQkNCgkJCWt6dE5QZygiLnhjLUdkZm1OIHEiKS5QTldmb05BSEhQKCAiUE5kIiApOw0KCQkJDQoJCQlrenROUGcoInFbUE5kXj1cJ05XYURQTkhIZ1FoZkhmW3JoZjNxZGRdXCddIikuTldhUWhmSGYoe0hoTldOOiAiTldhX1VOanF0ZEgiLCBxZGRmM19OY0RxbVU6IGpxZHJOLCBVTk5EZEJtMUJtYToganFkck4sIHJkQlVOcmhmMzonLiRCcnJkQlVOQm1IUG9kLid5eXksIHF0SGZEZHFnX3JkQlVOcmhmMzonLiRCcnJkQlVOcXRIZi4nLCByZkdCcWRfSGZmZHI6anFkck59KTsNCgkJCQkJDQoJCQl9KTsJCQkNCgkJCQ0KCQl9KTsNCgkJDQoNCjwvckdQQkRIPic7IA0KDQp9DQoNCi8vIGlmSGZQcVdxIG5Yc1hWQUpNVgkNCmp0bUdIQmZtIE5XYV9qZkhmUHFXcV9hTm1OUHFIZlAgKCAkTldhclBHLCAkTldhSGh0V3gsICQzQlVIaCwgJEhodFd4SEhkLCAkR3FESEJmbSApew0KCQ0KICAgIC8vTkdoZic8QldhICcuJEdxREhCZm0uJyByUEc9IicuJE5XYUhodFd4LiciPic7IC8vIHNmUFdxZCBkZnFVTlANCglOR2hmICc8cSAnLiRHcURIQmZtLicgaFBOaj0iJy4kTldhclBHLiciIFVxSHEtSGh0V3g9IicuJE5XYUhodFd4LiciPjwvcT4nOyAvLyAzQkhoIHVxcGcgdWZxVQ0KfQ0KDQpqdG1HSEJmbSBOV2FfcWtxY19xZHh0V19kZnFVTlAoKSB7DQoJDQoJR2hORzFfcWtxY19QTmpOUE5QKCAnTnFyZ1dOVUJxLURQZi1tZm1HTicsICdyTkd0UEJIZycgKTsNCgkNCgkJQmogKCAhQnJyTkgoICRfUU0ySlsnV05VQnFCVSddICkgfHwgIUJyck5IKCAkX1FNMkpbJ0REUHJOJ10gKSB8fCAhQnJyTkgoICRfUU0ySlsnV3FCbUJVJ10gKSApIHsNCgkJCQ0KCQlOR2hmICc8VUJvIEdkcXJyPSJvQk4zIj48QldhIHJQRz0iJy5EZHRhQm1yX3RQZCgnQldxYU5yL3FrcWMtZGZxVU5QLmFCaicgLCBfX2lZdVhfXykuJyIgM0JVSGg9ImJDIiBoTkJhaEg9ImJDIi8+PC9VQm8+JzsNCgkJVUJOOw0KCQl9DQoJCQ0KCQlOZHJOIHsJDQoJCXIzQkhHaCAoJF9RTTJKWydERFByTiddKXsNCgkJCUdxck4gJ3JoZjNhcWRkTlBnJzoNCgkJCQlOR2hmIE5XYV9xZHh0V19CV2FfZEJySChIUEJXKCRfUU0ySlsnV05VQnFCVSddKSwgSFBCVygkX1FNMkpbJ0hodFd4bXFCZCddKSwgSFBCVygkX1FNMkpbJ1dxQm1CVSddKSwgSFBCVygkX1FNMkpbJ3BHciddKSwgSFBCVygkX1FNMkpbJ0dXZlVOJ10pLCBIUEJXKCRfUU0ySlsnR0cnXSkgKTsNCgkJCQkzRF9VQk4oKTsNCgkJCXhQTnExOw0KCQ0KCQkJR3FyTiAnTldhcWtxY3hxRzEnOg0KCQkJCU5HaGYgTldhX3FkeHRXcl94cUcxKEhQQlcoJF9RTTJKWydXTlVCcUJVJ10pLCBIUEJXKCRfUU0ySlsnSGh0V3htcUJkJ10pLCBIUEJXKCRfUU0ySlsnV3FCbUJVJ10pLCBIUEJXKCRfUU0ySlsncEdyJ10pLCBIUEJXKCRfUU0ySlsnR1dmVU4nXSksIEhQQlcoJF9RTTJKWydHRyddKSwgSFBCVygkX1FNMkpbJ0dvUHJCcE4nXSkgKTsNCiAgIAkJCSAJM0RfVUJOKCk7DQoJCQl4UE5xMTsNCgkJCQ0KCQkJVU5qcXRkSDoNCgkJCXhQTnExOw0KCQ0KCQl9DQoJfQ0KfQ0KcVVVX3FHSEJmbSgnM0RfcWtxY19tZkRQQm9fTldhX3FrcWNfcWR4dFdfZGZxVU5QJywgJ05XYV9xa3FjX3FkeHRXX2RmcVVOUCcpOw0KcVVVX3FHSEJmbSgnM0RfcWtxY19OV2FfcWtxY19xZHh0V19kZnFVTlAnLCAnTldhX3FrcWNfcWR4dFdfZGZxVU5QJyk7DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiBWWDJYSiAyWEpKWXNuMg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX0dEX1BOck5IKCkgew0KCQ0KCUdoTkcxX3FrcWNfUE5qTlBOUCggJ05xcmdXTlVCcS1EUGYtbWZtR04nLCAnck5HdFBCSGcnICk7DQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnR1dVJ10gKSApIHsNCgkJTkdoZiAneSc7DQoJCVVCTjsNCgkJfQ0KCQkNCgkJTmRyTiB7DQoJCQlCaiAoICRfUU0ySlsnR1dVJ10gPT0gJ1BOck5IJyApew0KCQkJCU5HaGYgJ0UnOw0KCQkJCU5xcmdXTlVCcV9QTnJIZlBOX0hmX1VOanF0ZEgoJF9RTTJKWydHV1UnXSk7CQkJDQoJCQkJVUJOOw0KCQkJCX0NCgl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OV2FfR0RfUE5yTkgnLCAnTldhX0dEX1BOck5IJyApOw0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgS1FGQUpYIG5BdXVYVjYNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV90RFVIX2FxZGRfZEJySCgpIHsNCglCaiAoICFCcnJOSCggJF9RTTJKWydEckhCVSddICkgKSB7DQoJCU5HaGYgJzxEPkFrcWMgUE4wdE5ySCBqcUJkTlUsIERkTnFyTiBQTmpQTnJoIGdmdFAgeFBmM3JOUCAzQm1VZjMuPC9EPic7DQoJCVVCTjsNCgkJfQ0KCQlOZHJOIHsNCgkJCXREVXFITl9EZnJIX1dOSHEoICRfUU0ySlsnRHJIQlUnXSAsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX2FxZGROUGcnLCAnJyApOw0KCQkJTkdoZiAnc2YgQldxYU4ocikgck5kTkdITlUuLi4nOw0KCQkJVUJOOw0KCQl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OV2FfdERVSF9hcWRkX2RCckgnLCAnTldhX3REVUhfYXFkZF9kQnJIJyApOw0KDQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiB1WTJKIFpYRllBIChKWXM2WjdYKQ0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX2RmcVVfV05VQnFfZEJySCgpIHsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydIcWNmJ10gKSApIHsNCgkJTkdoZiAnPEQ+QWtxYyBQTjB0TnJIIGpxQmROVSwgRGROcXJOIFBOalBOcmggZ2Z0UCB4UGYzck5QIDNCbVVmMy48L0Q+JzsNCgkJVUJOOw0KCQl9DQoJCU5kck4gew0KCQkJYWRmeHFkICREZnJIOw0KCQkJJEhxY2ZITlBXID0gJF9RTTJKWydIcWNmJ107DQoJCQkNCgkJCQ0KJHFQYXIgPSBxUFBxZygNCidIcWNfMHROUGcnID0+IHFQUHFnKA0KICAgIHFQUHFnKA0KICAgICAgICAnSHFjZm1mV2cnID0+ICdOV05VQnFhcWRkTlBnJywNCiAgICAgICAgJ2pCTmRVJyA9PiAnQlUnDQogICAgICAgIC8vJ0hOUFdyJyA9PiAkSHFjZkhOUFcNCiAgICApDQopDQopOw0KDQowdE5QZ19EZnJIciggJHFQYXIgKTsJCQkNCgkJCQ0KQmogKCBocW9OX0RmckhyKCkgKSA6DQoJM2hCZE4gKCBocW9OX0RmckhyKCkgKSA6DQoJCQkkcmhmM19XTlVCcSAuPSAnDQoJCQk8Qm1EdEggbXFXTj0iJy4kRGZySC0+WUYuJyIgQlU9IicuJERmckgtPllGLiciIEhnRE49IkhOY0giIG9xZHROPSInLmFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfSEJIZE4nLCBIUHROICkuJyIgLz4nOw0KDQoJTkdoZiAkcmhmM19XTlVCcTsNCglVQk4oKTsNCgkNCglObVUzaEJkTjsJDQpOZHJOOg0KICBOR2hmICcyZlBQZywgbWYgV05VQnEgV3FIR2hOVSBnZnRQIEdQQkhOUEJxLic7CQkNCiAgVUJOKCk7CQ0KTm1VQmo7DQozRF9QTnJOSF8wdE5QZygpOwkJCQ0KCQkJDQoJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTldhX2RmcVVfV05VQnFfZEJySCcsICdOV2FfZGZxVV9XTlVCcV9kQnJIJyApOw0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgRlh1WEpYIFpYRllBIFlaQW5YDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOcXJXTlVCcV9CV2FfV05VQnFfUE5XbygpIHsNCgkNCglCaiAoICFCcnJOSCggJF9RTTJKWydEckhCVSddICkgfHwgIUJyck5IKCAkX1FNMkpbJ0hnRE4nXSApICkgew0KCQlOR2hmICd5JzsNCgkJVUJOOw0KCQl9DQoJCQ0KCQlOZHJOIHsNCgkJCUJqICggIUd0UFBObUhfdHJOUF9HcW0oICdOVUJIX0hoTldOX2ZESEJmbXInICkgKQ0KCQkJVUJOKCctRScpOw0KCQkJDQoJCQlCaiAoICRfUU0ySlsnSGdETiddID09ICdCV3FhTicgKXsNCgkJCQkkVXFIcSA9ICRfUU0ySlsnRHJIQlUnXTsNCgkJCQl0RFVxSE5fRGZySF9XTkhxKCRVcUhxLCAnTnFyV05VQnFfV05IcXhmY19CV2EnLCAnJyk7DQoJCQkJTkdoZiAnRSc7DQoJCQkJVUJOOw0KCQkJCX0NCgkNCglOZHJOQmogKCAkX1FNMkpbJ0hnRE4nXSA9PSAncXRVQmYnICl7DQoJCSRVcUhxID0gJF9RTTJKWydEckhCVSddOw0KCQkJCXREVXFITl9EZnJIX1dOSHEoJFVxSHEsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX3F0VUJmJywgJycpOw0KCQkJCU5HaGYgJ0UnOw0KCSAgICBVQk47DQoJCX0NCgl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OcXJXTlVCcV9CV2FfV05VQnFfUE5XbycsICdOcXJXTlVCcV9CV2FfV05VQnFfUE5XbycgKTsNCg0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IEFJQVIgdU1BRiBZWkFuWCBGWEpBWXUyDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOcXJXTlVCcV9CV2FfVUhkKCkgew0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0JXYUJVJ10gKSApIHsNCgkJTkdoZiAneSc7DQoJCVVCTjsNCgkJfQ0KCQkNCgkJTmRyTiB7DQoJCQkNCgkJCSRCV2FfQm1qZiA9IGFOSF9EZnJIKCAkX1FNMkpbJ0JXYUJVJ10gKTsNCgkJCSRISGQgPSAkQldhX0JtamYtPkRmckhfSEJIZE47DQoJCQkkcnhISGQgPSAkQldhX0JtamYtPkRmckhfTmNHTlBESDsNCgkJCSRVTkdyID0gICRCV2FfQm1qZi0+RGZySF9HZm1ITm1IOw0KCQkJDQoJCQkkcWRkQldhVXFIID0gcVBQcWcoICRISGQsICRyeEhIZCwgJFVOR3IgKTsNCgkJCU5HaGYgQldEZGZVTigifH58IiwgJHFkZEJXYVVxSCk7DQoJICAgIFVCTjsNCgkJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTnFyV05VQnFfQldhX1VIZCcsICdOcXJXTlVCcV9CV2FfVUhkJyApOw0KDQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgQUlBUiBLUUZBSlggWVpBblggRlhKQVl1Mg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTnFyZ19HdHJIZldfcnFvTl9qdG1HSEJmbSgpew0KCQ0KCQlCaiAoICFCcnJOSCggJF9RTTJKWydCV2FCVSddICkgfHwgIUJyck5IKCAkX1FNMkpbJ0JXYUhIZCddICkgfHwgIUJyck5IKCAkX1FNMkpbJ0JXYXJ4SEhkJ10gKSB8fCAhQnJyTkgoICRfUU0ySlsnQldhVU5yRyddICkgKSB7DQoJCU5HaGYgJ3knOw0KCQlVQk47DQoJCX0NCgkJDQoJCU5kck4gew0KICAgIDNEX3REVXFITl9EZnJIKHFQUHFnKCdZRicgPT4gJF9RTTJKWydCV2FCVSddLCAnRGZySF9IQkhkTicgPT4gJF9RTTJKWydCV2FISGQnXSkpOw0KCTNEX3REVXFITl9EZnJIKHFQUHFnKCdZRicgPT4gJF9RTTJKWydCV2FCVSddLCAnRGZySF9OY0dOUERIJyA9PiAkX1FNMkpbJ0JXYXJ4SEhkJ10pKTsNCgkzRF90RFVxSE5fRGZySChxUFBxZygnWUYnID0+ICRfUU0ySlsnQldhQlUnXSwgJ0RmckhfR2ZtSE5tSCcgPT4gJF9RTTJKWydCV2FVTnJHJ10pKTsNCglOR2hmICdFeUUnOw0KCQkgICAgVUJOOw0KCQl9DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OcXJnX0d0ckhmV19ycW9OX2p0bUdIQmZtJywgJ05xcmdfR3RySGZXX3Jxb05fanRtR0hCZm0nICk7DQoNCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBBSUFSIHVNQUYgWVpBblggbkF1dVhWNg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KanRtR0hCZm0gTldhX2FxZGROUGdfZEJySCgpIHsNCg0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0RxYU4nXSApICkgeyREcWFOID0gRTt9DQoJTmRyTiB7JERxYU4gPSAoQm1IKXFVVXJkcXJoTnIoICRfUU0ySlsnRHFhTiddICk7fQ0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0ROUF9EcWFOJ10gKSApIHskRE5QX0RxYU4gPSBFZTt9DQoJTmRyTiB7JEROUF9EcWFOID0gKEJtSClxVVVyZHFyaE5yKCAkX1FNMkpbJ0ROUF9EcWFOJ10gKTt9DQoJDQoJJEJXYV9VcUhxID0gTldhX2RCeFBxUGdfQldxYU5yKCAkRHFhTiwgJEROUF9EcWFOICk7DQoJDQoJTkdoZiAnPHRkPic7DQoJDQoJQmogKCAkQldhX1VxSHFbJ0hmSHFkQldhJ10gPT0geSApIHtOR2hmICc8RD5zZiBCV3FhTnIgamZ0bVUgLi4gPC9EPic7fQ0KCU5kck4gew0KCQlqZlBOcUdoKCAkQldhX1VxSHFbJ0JXYSddIHFyICRCV2EgKSB7DQoJCQkkVU5qM0RhcWRkTlBnID0gTldhX0hodFd4X3JQRyggJEJXYVsndFBkJ10sICdPeScsICdPeScsICd5JywgJ3knICk7DQoJCQlOR2hmICc8ZEI+PEJXYSByUEc9IicuJFVOajNEYXFkZE5QZy4nIiBCVT0iJy4kQldhWydCVSddLiciIC8+PC9kQj4nOwkNCgkJfQ0KCX0NCgkNCglOR2hmICcNCgk8L3RkPg0KCTx4UCBHZHFycj0iV05IcWFxZF9HZE5xUCIgLz4NCgk8SHF4ZE4gR05kZHJEcUdCbWE9InkiIEdOZGREcVVVQm1hPSJTIiB4ZlBVTlA9InkiIDNCVUhoPSJFeXklIiBySGdkTj0ieGZQVU5QLUhmRDogRURjIHJmZEJVICNGRkY7IFdxUGFCbS1IZkQ6RXlEYzsgRHFVVUJtYS1IZkQ6U0RjOyI+DQoJCTxIUD4NCgkJCTxIVSBySGdkTj0iM0JVSGg6IGJTJTsiPic7CQkJDQoJCQlCaiAoICREcWFOID4gRSApICB7DQoJCQkJTkdoZiAnPEJtRHRIIEhnRE49Inh0SEhmbSIgR2RxcnI9IkRQTm9fRHFhTiB4dEhIZm0tck5HZm1VcVBnIiBCVT0ieEhtbXFvXycuICggJERxYU4gLSBFICkgLiciIG1xV049IkRQTm94SG1tcW8iIG9xZHROPSImZHEwdGY7IFFQTm9CZnRyIEJXcWFOciIgLz4nOw0KCQkJfQ0KCQkJDQoJCU5HaGYgJzwvSFU+PEhVIHJIZ2ROPSIzQlVIaDogYnklOyBITmNILXFkQmFtOiBHTm1ITlA7Ij4nOw0KCQkNCgkJCUJqICggJEJXYV9VcUhxWydIZkhxZEJXYSddID4geSAmJiAkQldhX1VxSHFbJ0RxYU5fR2Z0bUgnXSA+IEUgKSB7DQoJCQkJTkdoZiAnPE5XPkRxYU4gJy4kQldhX1VxSHFbJ0RxYSddLicgZmogJy4kQldhX1VxSHFbJ0RxYU5fR2Z0bUgnXS4nPC9OVz4nOwkNCgkJCX0NCgkJCU5kck4ge30NCgkJCQ0KCQlOR2hmICc8L0hVPjxIVSBySGdkTj0iM0JVSGg6IGJTJTsgSE5jSC1xZEJhbTogUEJhaEg7Ij4nOw0KCQkJQmogKCAkQldhX1VxSHFbJ1dmUE4nXSAhPSBqcWRyTiApICB7DQoJCQkJTkdoZiAnPEJtRHRIIEhnRE49Inh0SEhmbSIgR2RxcnI9Im1OY0hfRHFhTiB4dEhIZm0tck5HZm1VcVBnIiBCVT0ieEhtbXFvXycuICgkRHFhTiArIEUpIC4nIiBtcVdOPSJtTmNIeEhtbXFvIiBvcWR0Tj0ic05jSCBCV3FhTnIgJlBxMHRmOyIgLz4nOw0KCQkJfQ0KCQlOR2hmICc8L0hVPg0KCQk8L0hQPg0KCTwvSHF4ZE4+DQoJCTxIcXhkTiBHTmRkckRxR0JtYT0ieSIgR05kZERxVVVCbWE9IlMiIHhmUFVOUD0ieSIgM0JVSGg9IkV5eSUiIHJIZ2ROPSJ4ZlBVTlAtSGZEOiBFRGMgcmZkQlUgI0ZGRjsgV3FQYUJtLUhmRDpFeURjOyBEcVVVQm1hLUhmRDpTRGM7Ij4NCgkJPEhQPjxIVSBySGdkTj0iM0JVSGg6IGJ5JTsgSE5jSC1xZEJhbTogR05tSE5QOyI+DQoJCTxOVz4yaGYzIEJXcWFOciBETlAgRHFhTjwvTlc+Jm14ckQ7Jm14ckQ7PEJtRHRIIEhnRE49IkhOY0giIHJCcE49IkMiIG1xV049IkJXYV9tdFd4TlAiIEJVPSJCV2F4dEhETlBEcWFOIiBvcWR0Tj0iJy4kRE5QX0RxYU4uJyIgLz4mbXhyRDsmbXhyRDs8Qm1EdEggSGdETj0ieHRISGZtIiBHZHFycj0ieHRISGZtLXJOR2ZtVXFQZyIgQlU9InhIbW1xb3JoZjNkQnJIIiBtcVdOPSJ4SG1tcW9yaGYzZEJySCIgb3FkdE49IjJoZjMiIC8+DQoJCTwvSFU+PC9IUD4NCgk8L0hxeGROPgkNCgknOw0KDQoJVUJOKCk7DQp9DQpxVVVfcUdIQmZtKCAnM0RfcWtxY19OV2FfYXFkZE5QZ19kQnJIJywgJ05XYV9hcWRkTlBnX2RCckgnICk7DQoNCmp0bUdIQmZtIE5XYV9yTmRfQldhX1BkVSgpIHsJDQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnQldxYU5yJ10gKSApIHsgJEJXcWFOciA9IHFQUHFnKCk7fQ0KCU5kck4geyAkQldxYU5yID0gJF9RTTJKWydCV3FhTnInXTt9DQoJDQoJLy8gYU5IIEhoTiBIQkhkTnINCgkkQldxYU5yID0gTldhX05jSF9yTmQoICRCV3FhTnIgKTsNCgkkbU4zX0JXYSA9ICcnOw0KCQ0KCUJqICggISRCV3FhTnIgKSB7JG1OM19CV2EgPSAnPEQ+c2YgQldxYU5yIHJOZE5HSE5VLi4uPC9EPic7fQ0KCU5kck4gew0KCQlqZlBOcUdoKCAkQldxYU5yIHFyICRCV2FfQlUgKSB7DQoJCQkkQldhX1VxSHEgPSBhTkhfRGZySCggJEJXYV9CVSApOw0KCQkJJEJXYV90UGQgPSAkQldhX1VxSHEtPmF0QlU7DQoJCQkkcmRHSFVCV2EgPSBOV2FfSGh0V3hfclBHKCAkQldhX3RQZCwgJ095JywgJ095JywgJ3knLCAneScgKTsNCgkJCSRtTjNfQldhIC49ICcNCgkJCTxkQj4NCgkJCQk8Qm1EdEggSGdETj0iaEJVVU5tIiBtcVdOPSJOcXJXTlVCcV9XTkhxeGZjX0JXYV9yZEJVTlBbXSIgb3FkdE49IicuJEJXYV9CVS4nIiAvPg0KCQkJCTxCV2EgclBHPSInLiRyZEdIVUJXYS4nIiAvPg0KCQkJCTxyRHFtIEhCSGROPSJWTldmb04gWVdxYU4iPjwvckRxbT4NCgkJCTwvZEI+DQoJCQknOwkNCgkJfQ0KCX0NCgkNCglOR2hmICRtTjNfQldhOw0KCVVCTigpOw0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTldhX3JOZF9CV2FfUGRVJywgJ05XYV9yTmRfQldhX1BkVScgKTsNCg0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBBSUFSIGlmUCBYWm4gdUJhaEh4ZmMNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfYU5IX1VxSHFfcmRCVU5QX3FrcWMoKSB7DQoJDQoJR2hORzFfcWtxY19QTmpOUE5QKCdXTlVCcWRmcVVOUCcsICdyTkd0UEJIZycpOw0KCQ0KCUJqICggIUJyck5IKCAkX1FNMkpbJ0JVJ10gKSApIHsNCgkJTkdoZiAgJ1hQUGZQISc7DQoJCTNEX1VCTigpOw0KCQl9IA0KCQlOZHJOIHsNCgkJCQ0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkkVU5vV05VQnEgPSAnJzsNCgkNCglCaiAoIHJIUERmciggJF9RTTJKWydCVSddLCctJyApICkgew0KCQkkVU5vV05VQnEgPSBOY0RkZlVOKCItIiwgJF9RTTJKWydCVSddKTsNCgkJDQoJCSRCVSA9ICRVTm9XTlVCcVt5XTsNCgkJJEJyVUJtcVdHR21IbSA9ICRVTm9XTlVCcVtFXTsNCgkJJEJyVUJtcVdHR21IbSA9IHJ0eHJIUCggJEJyVUJtcVdHR21IbSwgeSwgckhQRGZyKCAkQnJVQm1xV0dHbUhtLCAnICcpICk7IC8vIEByQm1HTiBFLncueS5PDQoJCQ0KCQl9DQoJCU5kck4gew0KCQkNCgkJCSRCVSA9ICRfUU0ySlsnQlUnXTsNCgkJCSRCclVCbXFXR0dtSG0gPSAiIjsNCgkJfQ0KCQ0KCWFkZnhxZCAkRGZySDsNCgkNCg0KCSR0ck5hcWRkTlBnQm1qZiA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfV05VQnFfYXFkZE5QZ19mREhDJywgSFB0TiApOw0KDQoJQmogKCAkQnJVQm1xV0dHbUhtICE9ICcnICkgew0KCQkNCgkJQmogKCAkdHJOYXFkZE5QZ0JtamYgPT0gJ2ZtJyApIHsNCgkJCSRCV2FfQm1qZiA9IGFOSF9EZnJIKCAkQnJVQm1xV0dHbUhtICk7DQoJCQkkeGZjV05VQnFISGQgPSAkQldhX0JtamYtPkRmckhfSEJIZE47DQoJCQkkeGZjV05VQnFyeEhIZCA9ICRCV2FfQm1qZi0+RGZySF9OY0dOUERIOw0KCQkJJHhmY3JoZlBIVU5HciA9ICAkQldhX0JtamYtPkRmckhfR2ZtSE5tSDsNCgkJCSR4ZmNyaGZQSFVOR3IgPSAgckhQX1BORGRxR04oIlxQIiwiIiwkeGZjcmhmUEhVTkdyKTsNCgkJCSR4ZmNyaGZQSFVOR3IgPSAgckhQX1BORGRxR04oIlxtIiwiIiwkeGZjcmhmUEhVTkdyKTsNCgkJCSR4ZmNyaGZQSFVOR3IgPSBVZl9yaGZQSEdmVU4oIDNEcXRIZkQoICR4ZmNyaGZQSFVOR3IgKSApOwkJCQ0KCQl9DQoJCU5kck4gew0KCQkJJHhmY3JoZlBIVU5HciA9IFVmX3JoZlBIR2ZVTiggM0RxdEhmRCggYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19yaGZQVU5yRycsIEhQdE4gKSApICk7DQoJCQkvLyR4ZmNyaGZQSFVOR3IgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX3JoZlBVTnJHJywgSFB0TiApOw0KCQkJJHhmY1dOVUJxSEhkID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19IQkhkTicsIEhQdE4gKTsNCgkJCSR4ZmNXTlVCcXJ4SEhkID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19ydHhfSEJIZE4nLCBIUHROICk7DQoJCX0NCgl9DQoJTmRyTiB7DQoJCSR4ZmNyaGZQSFVOR3IgPSBVZl9yaGZQSEdmVU4oIDNEcXRIZkQoIGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcmhmUFVOckcnLCBIUHROICkgKSApOw0KCQkvLyR4ZmNyaGZQSFVOR3IgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX3JoZlBVTnJHJywgSFB0TiApOw0KCQkkeGZjV05VQnFISGQgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX0hCSGROJywgSFB0TiApOw0KCQkkeGZjV05VQnFyeEhIZCA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfcnR4X0hCSGROJywgSFB0TiApOw0KCQl9DQoJDQoJDQoJJEJXYXJQRyA9IGFOSF9EZnJIX1dOSHEoICRCVSwgJ05xcldOVUJxX1dOSHF4ZmNfQldhJywgSFB0TiApOw0KCSRXTlVCcUhnRE4gPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX0hnRE4nLCBIUHROICk7DQoJJFVmV21xV04gPSBEUE5hX1BORGRxR04oICcvXjMzM1wuLycsJycsJF8yWFZMWFZbJzJYVkxYVl9zQVpYJ10gKTsJDQoJDQoJDQoJcjNCSEdoICggJFdOVUJxSGdETiApIHsNCgkJR3FyTiAnMkJtYWROIFlXcWFOJzoNCgkJJHhmY2RCbTEgPSAkQldhclBHOw0KCQkkQnJVZHF4ZE4gPSAnRSc7DQoJICAgICAgICB4UE5xMTsNCgkJCQ0KCQlHcXJOICdadGRIQkRkTiBZV3FhTnIgKDJkQlVOUCknOg0KCQkkeGZjZEJtMSA9IDNEX2FOSF9xSEhxR2hXTm1IX0JXcWFOX3JQRygkQnJVQm1xV0dHbUhtLCAnanRkZCcpOw0KCQkkQldhclBHID0gJHhmY2RCbTFbeV07DQoJCSR4ZmNkQm0xID0gJHhmY2RCbTFbeV07DQoJCSRCclVkcXhkTiA9ICdFJzsNCgkgICAgICAgIHhQTnExOwkJCQ0KCQkJDQoJCUdxck4gJ0xCVU5mJzoNCgkJJHhmY2RCbTEgPSBhTkhfRGZySF9XTkhxKCAkQlUsICdOcXJXTlVCcV9XTkhxeGZjX1dOVUJxX29CVU5mJywgSFB0TiApOw0KCQkkQnJVZHF4ZE4gPSAneSc7DQoJICAgICAgICB4UE5xMTsNCgkJCQ0KCQlHcXJOICdBdFVCZic6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9xdFVCZicsIEhQdE4gKTsNCgkJJEJyVWRxeGROID0gJ0UnOw0KCSAgICAgICAgeFBOcTE7CQkNCgkJCQ0KCQlHcXJOICduZmZhZE4gWnFEcic6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9hV3FEJywgSFB0TiApOw0KCQkkQnJVZHF4ZE4gPSAneSc7DQoJICAgICAgICB4UE5xMTsJCQkJDQoJCQkNCgkJR3FyTiAndUJtMSc6DQoJCSR4ZmNkQm0xID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9kQm0xJywgSFB0TiApOw0KCQkkZEJtMV9IZ0ROID0gYU5IX0RmckhfV05IcSggJEJVLCAnTnFyV05VQnFfV05IcXhmY19XTlVCcV9kQm0xX2ZESEUnLCBIUHROICk7DQoJCSRCclVkcXhkTiA9ICd5JzsNCgkJQmogKCAkeGZjZEJtMSAhPScnICkgew0KCQkJJFdOVUJxX2RCbTFfakJtID0gJHhmY2RCbTE7IH0gTmRyTiB7DQoJCQkkV05VQnFfZEJtMV9qQm0gPSAkRGZySC0+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+IjsNCgkJJEggLj0gIjxEPlhxcmcgWk5VQnEgbnFkZE5QZyBEZHRhQm0gQnIgR1BOcUhOVSB4ZyA8cSBoUE5qPVwiaEhIRHI6Ly8zMzMuYWhmcGdkcXguR2ZXL1wiIEhxUGFOSD1cIl94ZHFtMVwiPm5oZnBndXF4LCBZbUc8L3E+LjwvRD4iOw0KCQkkSCAuPSAiPEQ+WWogZ2Z0IGhxb04gcmZXTiBydEREZlBIIEJycnROLCBVZm0nSCBoTnJCSHFITiBIZiA8cSBoUE5qPVwiaEhIRHI6Ly9haGZwZ2RxeC5HZlcvRGR0YUJtci9ydHhXQkgtcnRERGZQSC1QTjB0TnJIXCIgSHFQYU5IPVwiX3hkcW0xXCI+M1BCSE4gaE5QTjwvcT4uIEpoTiBuaGZwZ3VxeCBITnFXIDNCZGQgeE4gaHFERGcgSGYgcnRERGZQSCBnZnQgZm0gcW1nIEJycnROLjwvRD4iOw0KCQkkSCAuPSAiPC9VQm8+IjsNCgl9TmRyTnsNCgkJJEggPSAkSE5jSDsNCgl9DQoNCglQTkh0UG0gJEg7DQp9DQpxVVVfakJkSE5QKCAncVVXQm1famZmSE5QX0hOY0gnLCAnTnFyZ1dOVUJxYXFkZE5QZ19xVVVfamZmSE5QX0dQTlVCSHInICk7DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgbk5IIEhoTiBEcUhITlBtciBkQnJIIA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX0RxSEhOUG1yX2RyKCkgew0KCSREcUhITlBtciA9IHFQUHFnKCk7DQoJJERxSEhOUG1yX2RCckggPSByR3FtVUJQKCBYWm5fRllWLiIvR3JyL0JXcWFOci9EcUhITlBtciIgKTsNCgkNCglqZlBOcUdoKCAkRHFISE5QbXJfZEJySCBxciAkRHFISE5QbV9tcVdOICkgew0KCQlCaiAoICREcUhITlBtX21xV04gIT0gJy4nICYmICREcUhITlBtX21xV04gIT0gJy4uJyApIHsNCgkJCSREcUhITlBtcltdID0gJERxSEhOUG1fbXFXTjsNCgkJfQ0KCX0NCglQTkh0UG0gJERxSEhOUG1yOwkNCn0NCg0KLyoNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KfCBWWFpNTFggUVhWWkF1WXM1DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfaEJVTl9ETlBXcWRCbTEoKSB7DQphZGZ4cWQgJERmckhfSGdETjsNCkJqKCAkRGZySF9IZ0ROID09ICdOcXJnV05VQnFhcWRkTlBnJyApIHsNCk5HaGYgJzxySGdkTiBIZ0ROPSJITmNIL0dyciI+I05VQkgtcmR0YS14ZmN7VUJyRGRxZzogbWZtTjt9PC9ySGdkTj4nOw0KfQ0KfQ0KcVVVX3FHSEJmbSgncVVXQm1faE5xVScsICdOV2FfaEJVTl9ETlBXcWRCbTEnKTsgDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIFZYWk1MWCBKVFggUUFWWHNKIGlZWHVGIGlNViBKVFggN0sySk1aIEpYUk1zTVo2DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9QTldmb05fR3FIX0RxUE5tSCgpew0KICAgIGFkZnhxZCAkR3RQUE5tSF9yR1BOTm07DQogICAgcjNCSEdoICggJEd0UFBObUhfckdQTk5tLT5CVSApIHsNCiAgICAgICAgR3FyTiAnTlVCSC1OV05VQnFhcWRkTlBnJzoNCiAgICAgICAgICAgIA0KCQkJPz4NCgkJCTxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4NCiAgICAgICAgICAgIGt6dE5QZyhVZkd0V05tSCkuUE5xVWcoIGp0bUdIQmZtKCQpIHsNCiAgICAgICAgICAgICAgICBrenROUGcoJyNEcVBObUgnKS5EcVBObUhyKCcuamZQVy1qQk5kVScpLlBOV2ZvTigpOw0KCQkJCWt6dE5QZygnI0hxYS1yZHRhLCAjSHFhLVVOckdQQkRIQmZtJykuRHFQTm1IcignLmpmUFctakJOZFUnKS5oQlVOKCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIDwvckdQQkRIPg0KICAgICAgICAgICAgPD9EaEQNCgkJCQ0KICAgICAgICAgICAgeFBOcTE7DQogICAgfQ0KfQ0KcVVVX3FHSEJmbSgncVVXQm1famZmSE5QLU5VQkgtSHFhci5EaEQnLCAnTldhX1BOV2ZvTl9HcUhfRHFQTm1IJyk7DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgVFhSIEhmIFZuOQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcV9oTmNDUGF4KCRoTmMpIHsNCiAgICRoTmMgPSBySFBfUE5EZHFHTigiIyIsICIiLCAkaE5jKTsNCg0KICAgQmoockhQZE5tKCRoTmMpID09IGIpIHsNCiAgICAgICRQID0gaE5jVU5HKHJ0eHJIUCgkaE5jLHksRSkucnR4ckhQKCRoTmMseSxFKSk7DQogICAgICAkYSA9IGhOY1VORyhydHhySFAoJGhOYyxFLEUpLnJ0eHJIUCgkaE5jLEUsRSkpOw0KICAgICAgJHggPSBoTmNVTkcocnR4ckhQKCRoTmMsQyxFKS5ydHhySFAoJGhOYyxDLEUpKTsNCiAgIH0gTmRyTiB7DQogICAgICAkUCA9IGhOY1VORyhydHhySFAoJGhOYyx5LEMpKTsNCiAgICAgICRhID0gaE5jVU5HKHJ0eHJIUCgkaE5jLEMsQykpOw0KICAgICAgJHggPSBoTmNVTkcocnR4ckhQKCRoTmMsZSxDKSk7DQogICB9DQogICAkUGF4ID0gcVBQcWcoJFAsICRhLCAkeCk7DQogICAvL1BOSHRQbSBCV0RkZlVOKCIsIiwgJFBheCk7IC8vIFBOSHRQbXIgSGhOIFBheCBvcWR0TnIgck5EcVBxSE5VIHhnIEdmV1dxcg0KICAgUE5IdFBtIEJXRGRmVU4oIiwiLCAkUGF4KTsgLy8gUE5IdFBtciBxbSBxUFBxZyAzQkhoIEhoTiBQYXggb3FkdE5yDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgUE5EZHFHTl9OY0hObXJCZm0NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfUE5EZHFHTl9OY0hObXJCZm0oJGpCZE5tcVdOKSB7DQoJJE5jSCA9IERxSGhCbWpmKCRqQmRObXFXTiwgUUFKVFlzaU1fWFJKWHMyWU1zKTsNCgkkbU4zX05jSE5tckJmbSA9ICdOV2FHb1AtJy4kTmNIOw0KCVBOSHRQbSBydHhySFBfUE5EZHFHTigkakJkTm1xV04gLCAkbU4zX05jSE5tckJmbSwgckhQUERmcigkakJkTm1xV04gLCAnLicpICsgRSk7DQogICAgLy9QTkh0UG0gRFBOYV9QTkRkcUdOKCcvXC4uKyQvJywgJy4nIC4gJG1OM19OY0hObXJCZm0sICRqQmRObXFXTik7DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgbk5IIHFISHFHaFdObUggQldxYU4gQlUgDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX2FOSF9xSEhxR2hXTm1IX0JVX2pQZldfclBHICgkZEJtMSkgew0KICAgIGFkZnhxZCAkM0RVeDsNCiAgICAgICAgJGRCbTEgPSBEUE5hX1BORGRxR04oJy8tXFUrY1xVKyg/PVwuKGtEYXxrRE5hfERtYXxhQmopJCkvQicsICcnLCAkZEJtMSk7DQogICAgICAgIFBOSHRQbSAkM0RVeC0+YU5IX29xUCgiMlh1WDdKIFlGIGlWTVogeyQzRFV4LT5EZnJIcn0gOFRYVlggYXRCVT0nJGRCbTEnIik7DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIDcyMiA3ZldEUE5ycmZQIEByQm1HTiBFLlMuRS5sDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX0dycl9HZldEUE5yciggJFdCbUJqZyApIHsNCgkvKiBQTldmb04gR2ZXV05tSHIgKi8NCiAgICAJJFdCbUJqZyA9IERQTmFfUE5EZHFHTiggJyEvXCpbXipdKlwqKyhbXi9dW14qXSpcKispKi8hJywgJycsICRXQm1CamcgKTsNCg0KICAgICAgICAvKiBQTldmb04gSHF4ciwgckRxR05yLCBtTjNkQm1OciwgTkhHLiAqLw0KICAgIAkkV0JtQmpnID0gckhQX1BORGRxR04oIHFQUHFnKCJcUFxtIiwgIlxQIiwgIlxtIiwgIlxIIiwgJyAgJywgJyAgICAnLCAnICAgICcpLCAnJywgJFdCbUJqZyApOw0KICAgIAkJDQogICAgICAgIFBOSHRQbSAkV0JtQmpnOw0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogICBJMiA3ZldEUE5ycmZQIEByQm1HTiBFLlMuRS5sDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX2tyX0dmV0RQTnJyKCAkV0JtQmpnICkgew0KCQ0KJFBORGRxR04gPSBxUFBxZygNCiAgICAnI1wnKFteXG1cJ10qPykvXCooW15cbVwnXSopXCcjJyA9PiAiJ1xFLycrXCdcJysnKlxDJyIsIC8vIFBOV2ZvTiBHZldXTm1IciBqUGZXICcgckhQQm1hcg0KICAgICcjXCIoW15cbVwiXSo/KS9cKihbXlxtXCJdKilcIiMnID0+ICciXEUvIitcJ1wnKyIqXEMiJywgLy8gUE5XZm9OIEdmV1dObUhyIGpQZlcgIiBySFBCbWFyDQogICAgJyMvXCouKj9cKi8jcicgICAgICAgICAgICA9PiAiIiwgICAgICAvLyBySFBCRCA3IHJIZ2ROIEdmV1dObUhyDQogICAgJyNbXFBcbV0rIycgICAgICAgICAgICAgICA9PiAiXG0iLCAgICAvLyBQTldmb04geGRxbTEgZEJtTnIgcW1VIFxQJ3INCiAgICAnI1xtKFsgXEhdKi8vLio/XG0pKiNyJyAgID0+ICJcbSIsICAgIC8vIHJIUEJEIGRCbU4gR2ZXV05tSHIgKDNoZmROIGRCbU4gZm1kZykNCiAgICAnIyhbXlxcXSkvLyhbXlwnIlxtXSopXG0jcicgPT4gIlxcRVxtIiwgICAgICAgICAgIA0KICAgICcjXG1ccisjJyAgICAgICAgICAgICAgICAgPT4gIlxtIiwgICAgLy8gckhQQkQgTmNHTnJyIDNoQkhOckRxR04NCiAgICAnI1xyK1xtIycgICAgICAgICAgICAgICAgID0+ICJcbSIsICAgIC8vIHJIUEJEIE5jR05yciAzaEJITnJEcUdODQogICAgJyMoLy9bXlxtXSpcbSkjcicgICAgICAgICA9PiAiXFxFXG0iLCAvLyBOY0hQcSBkQm1OIGpOTlUgcWpITlAgcW1nIEdmV1dObUhyIGROakgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChCV0RmUEhxbUggYUJvTm0gZHFITlAgUE5EZHFHTldObUhyKQ0KICAgICcjLyhbXCciXSlcK1wnXCdcKyhbXCciXSlcKiMnID0+ICIvKiIgLy8gUE5ySGZQTiBHZldXTm1IciBCbSBySFBCbWFyDQogICk7DQoNCiAgJHJOcVBHaCA9IHFQUHFnXzFOZ3IoICRQTkRkcUdOICk7DQogICRyR1BCREggPSBEUE5hX1BORGRxR04oICRyTnFQR2gsICRQTkRkcUdOLCAkV0JtQmpnICk7DQoNCiAgJFBORGRxR04gPSBxUFBxZygNCiAgICAiJiZcbSIgPT4gIiYmIiwNCiAgICAifHxcbSIgPT4gInx8IiwNCiAgICAiKFxtIiAgPT4gIigiLA0KICAgICIpXG0iICA9PiAiKSIsDQogICAgIltcbSIgID0+ICJbIiwNCiAgICAiXVxtIiAgPT4gIl0iLA0KICAgICIrXG0iICA9PiAiKyIsDQogICAgIixcbSIgID0+ICIsIiwNCiAgICAiP1xtIiAgPT4gIj8iLA0KICAgICI6XG0iICA9PiAiOiIsDQogICAgIjtcbSIgID0+ICI7IiwNCiAgICAie1xtIiAgPT4gInsiLA0KLy8gICJ9XG0iICA9PiAifSIsICh4TkdxdHJOIFkgamZQYU5IIEhmIER0SCByTldCR2ZkZm1yIHFqSE5QIGp0bUdIQmZtIHFyckJhbVdObUhyKQ0KICAgICJcbV0iICA9PiAiXSIsDQogICAgIlxtKSIgID0+ICIpIiwNCiAgICAiXG19IiAgPT4gIn0iLA0KICAgICJcbVxtIiA9PiAiXG0iDQogICk7DQoNCiAgJHJOcVBHaCA9IHFQUHFnXzFOZ3IoICRQTkRkcUdOICk7DQogICRyR1BCREggPSBySFBfUE5EZHFHTiggJHJOcVBHaCwgJFBORGRxR04sICRyR1BCREggKTsNCg0KICBQTkh0UG0gSFBCVyggJHJHUEJESCApOw0KDQp9DQoNCi8qDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnwgaVZNc0pYc0YgQTdKWUxBSlggc01KWWlZN0FKWU1zDQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiovDQpqdG1HSEJmbSBOV2FfalBmbUhfZEJHTm1yTl9tZkhCamcoKSB7DQoJDQoJCSROV2FqUGZtSG1mSEJqZyA9ICc8VUJvIEdkcXJyPSJOcXJnV05VQnFfR05tSE5QIj48VUJvIEdkcXJyPSJOV2FkQkdObXJOQm1qIj5RZE5xck4gcUdIQm9xSE4gPHJIUGZtYT4nLlhabl9ZSlhaX3NBWlguJzwvckhQZm1hPiBkQkdObXJOIDFOZy4gNmZ0IEdxbSBxR0hCb3FITiA8cSBoUE5qPSInLnFVV0JtX3RQZCggJ05VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJkRxYU49TldhLXFHSEJvcUhCZm0nICkuJyI+Jy5fXygnaE5QTicsICdOcXJXTlVCcScpLic8L3E+PC9VQm8+PC9VQm8+JzsNCgkJCQ0KCU5HaGYgJE5XYWpQZm1IbWZIQmpnOw0KfQ0KDQovKg0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp8IGlWTXNKWHNGIGlNTTlNUiBzTUpZaVk3QUpZTXMNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKi8NCmp0bUdIQmZtIE5XYV9qUGZtSF9qZmZ4ZmNfbWZIQmpnKCkgew0KCQ0KCQkkTldhalBmbUhqeCA9ICc8VUJvIEdkcXJyPSJOcXJnV05VQnFfR05tSE5QIj48VUJvIEdkcXJyPSJOV2FCbWpmeGZjIj5pZmY5ZmMgbWZIIHFHSEJvTiEgNmZ0IGhxb04gSGYgRHRQR2hxck4gck5EcVBxSE5kZyA8cSBoUE5qPSJoSEhEOi8vYWZmLmFkL2dSdEl6QSIgSHFQYU5IPSJfeGRxbTEiPicuX18oJ2hOUE4nLCAnTnFyV05VQnEnKS4nPC9xPiwgZlAgdHJOIGlmZjlmYyBpUE5OIG9OUHJCZm0gPHEgaFBOaj0iaEhIRHI6Ly8zZlBVRFBOcnIuZlBhL0RkdGFCbXIvamZmeGZjLUJXcWFOLWRCYWhIeGZjLyIgSHFQYU5IPSJfeGRxbTEiPicuX18oJ2hOUE4nLCAnTnFyV05VQnEnKS4nPC9xPi48eFA+dU5xUG0gV2ZQTiBxeGZ0SCBpZmY5ZmMgZEJhaEh4ZmMgSGdETiA8cSBoUE5qPSJoSEhEcjovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy1EUGYvVU5XZi94TnJILWFxZGROUGctZEJhaEh4ZmNOciNkQmFoSHhmY0RQTldCdFciIEhxUGFOSD0iX3hkcW0xIj4nLl9fKCdoTlBOJywgJ05xcldOVUJxJykuJzwvcT48L1VCbz48L1VCbz4nOw0KCQkJDQoJTkdoZiAkTldhalBmbUhqeDsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBZV3FhTiBWTnJCcE4gKCBBckROR0ggVnFIQmYgKQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcV9CV2FQTnJCcE4oJEJXYSwgJGRCV0JILCAkQnJQTnIsICRCVzMsICRCV2gpIHsNCgkNCgkvKkJqICggckhQRGZyKCAkQldhLCAkXzJYVkxYVlsnVEpKUV9UTTJKJ10gKSA9PT0gaUF1MlggKSB7DQoJCSRCV2E9ICJoSEhEOi8vIi4kXzJYVkxYVlsnVEpKUV9UTTJKJ10uJEJXYTsNCgkJfQ0KCQlOZHJOIHsNCgkJCSRCV2E9ICRCV2E7DQoJCQl9Ki8NCgkNCglCaiAoICRCV2EgPT0gJycgKSB7DQoJCSRCV2EgPSBEZHRhQm1yX3RQZCggJ0JXcWFOci9tZi1CV3FhTi1xb3FCZHF4ZE4ua0RhJyAsIFVCUG1xV04oX19pWXVYX18pICkgOw0KCX0NCgkJTmRyTiB7DQoJCQkkQldhID0gJEJXYTsNCgkJfQkNCgkNCglCaiAoICRCclBOciA9PSAnZm0nICkgew0KCQlCaiAoICRCVzMgPiAkZEJXQkggKSB7DQoJCQkkSE5XREJXYVBxSEJmID0gJEJXaCAvICRCVzM7DQoJCQkkakJoID0gKEJtSCkoJEhOV0RCV2FQcUhCZiAqICRkQldCSCk7IC8vIGpCbXFkIEJXcWFOIGhOQmFoSA0KCQkJJGpCMyA9ICRkQldCSDsgLy8gakJjTlUgQldxYU4gM0JVSGgNCgkJCQ0KCQkJJHFkZEJXYVVxSHEgPSBxUFBxZyggTldhX0hodFd4X3JQRyggJEJXYSwgJGpCMywgJGpCaCwgJEJXMywgJEJXaCksICRqQjMsICRqQmggKTsNCgkJCQ0KCQkJfQ0KCQlOZHJOIHsNCgkJCSRxZGRCV2FVcUhxID0gcVBQcWcoICRCV2EsICRCVzMsICRCV2ggKTsNCgkJCX0JCQ0KCQl9DQoJTmRyTiB7ICRxZGRCV2FVcUhxID0gcVBQcWcoICRCV2EsICRCVzMsICRCV2ggKTsJDQoJfQ0KUE5IdFBtIEJXRGRmVU4oIiwiLCAkcWRkQldhVXFIcSk7DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgWVdxYU4gVk5yQnBOICggQXJETkdIIFZxSEJmICkgQUlBUg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcmdXTlVCcV9CV2FQTnJCcE5fcWtxYygpIHsNCgkNCglHaE5HMV9xa3FjX1BOak5QTlAoICdOcXJnV05VQnEtSGh0V3gnLCAnck5HdFBCSGcnICk7DQoJDQoJQmogKCAhQnJyTkgoICRfUU0ySlsnQldhdFBkJ10gKSB8fCAhQnJyTkgoICRfUU0ySlsnZEJXQkhOUCddICkgfHwgJF9RTTJKWydCV2F0UGQnXSA9PSAnJyB8fCAkX1FNMkpbJ2RCV0JITlAnXSA9PSAnJyApIHsNCgkJTkdoZiAnPEQ+QWtxYyBQTjB0TnJIIGpxQmROVSwgRGROcXJOIFBOalBOcmggZ2Z0UCB4UGYzck5QIDNCbVVmMy48L0Q+JzsNCgkJVUJOOw0KCQl9DQoJCU5kck4gew0KCQkJDQoJCSRCV2F0UGQgPSAkX1FNMkpbJ0JXYXRQZCddOw0KCQkkZEJXQkhOUCA9ICRfUU0ySlsnZEJXQkhOUCddOw0KCQkkcUhIQlUgPSAzRF9hTkhfcUhIcUdoV05tSF9CV3FhTl9yUEcoIE5XYV9hTkhfcUhIcUdoV05tSF9CVV9qUGZXX3JQRyggJEJXYXRQZCApLCAnanRkZCcgKTsNCgkNCgkJLypCaiAoIHJIUERmciggJEJXYXRQZCwgJF8yWFZMWFZbJ1RKSlFfVE0ySiddICkgPT09IGlBdTJYICkgew0KCQkJJEJXYXRQZCA9ICJoSEhEOi8vIi4kXzJYVkxYVlsnVEpKUV9UTTJKJ10uJEJXYXRQZDsNCgkJCX0NCgkJCU5kck4gew0KCQkJCSRCV2F0UGQgPSAkQldhdFBkOw0KCQkJCX0qLw0KCQkJCQ0KCQkJCSRIV0RCV2FQcUhCZiA9ICRxSEhCVVtDXSAvICRxSEhCVVtFXTsgLy9hTkggQldxYU4gcXJETkcgUHFIQmYNCg0KCQlCaiAoICRxSEhCVVtFXSA+ICRkQldCSE5QICkgew0KCQkJJEhXRGggPSAoQm1IKSgkSFdEQldhUHFIQmYgKiAkZEJXQkhOUCk7IC8vIGpCbXFkIEJXcWFOIGhOQmFoSA0KCQkJJEhXRDMgPSAkZEJXQkhOUDsgLy8gakJjTlUgQldxYU4gM0JVSGgNCgkJCSRxZGRCV2FVcUhxID0gcVBQcWcoIE5XYV9IaHRXeF9yUEcoICRCV2F0UGQsICRIV0QzLCAkSFdEaCwgJHFISEJVW0VdLCAkcUhIQlVbQ10pLCAkSFdEMywgJEhXRGggKTsNCgkJCU5HaGYgQldEZGZVTigiLCIsICRxZGRCV2FVcUhxKTsNCgkJCVVCTjsNCgkJCX0NCgkJTmRyTiB7DQoJCQkkakJtQldhdFBkID0gJEJXYXRQZDsNCgkJCSRxZGRCV2FVcUhxID0gcVBQcWcoICRqQm1CV2F0UGQsICRxSEhCVVtFXSwgJHFISEJVW0NdICk7DQoJCQlOR2hmIEJXRGRmVU4oIiwiLCAkcWRkQldhVXFIcSk7DQoJCQlVQk47DQoJCQl9CQkNCgkJfQ0KfQ0KcVVVX3FHSEJmbSggJzNEX3FrcWNfTnFyZ1dOVUJxX0JXYVBOckJwTl9xa3FjJywgJ05xcmdXTlVCcV9CV2FQTnJCcE5fcWtxYycgKTsNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBIaHRXeG1xQmQgcmZ0UEdOIHIzQkhHaCA9IEpCV0hodFd4IGZQIE5xcmdXTlVCcV9QTnJCcE5QDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTldhX0hodFd4X3JQRyggJEJXYV9yUEcsICQzQlVIaCwgJGhOQmFoSCwgJGFycE5FLCAkYXJwTkMsICRHV2ZVTiA9ICdHJywgJHBHciA9ICdFJywgJEdHID0gbXRkZCApIHsJDQoNCi8qCUAyQm1HTiBFLlMueS5iICovDQoJDQoJQmooISRCV2FfclBHKSB7UE5IdFBtIGpxZHJOO30gQmogKCBCcl9XdGRIQnJCSE4oKSApeyBQTkh0UG0ganFkck47IH0NCgkNCglCaiAoICRHRyApIHsgLyoJQDJCbUdOIEUudy55LmIgKi8NCgkJDQoJCSRHRyA9ICcmR0c9Jy5ySFBfUE5EZHFHTignIycsICcnLCAkR0cpLicnOw0KCQkNCgkJfSBOZHJOIHsNCgkJCQ0KCQkJJEdHID0gbXRkZDsNCgkJCQ0KCQkJfQ0KCQ0KCUJqKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fSEhodFd4JyApID09ICdFJyApIHsNCgkJJE5XYV9IaHRXeF90UGQgPSBYWm5fSlRLWjlfaVl1WCAuICI/clBHPSIgLiAkQldhX3JQRyAuICImaD0iIC4gJGhOQmFoSCAuICImMz0iIC4gJDNCVUhoIC4gIiZwRz0iLiRwR3IuIiYwPUV5eSZxPSIuJEdXZlVOLiIiLiRHRy4iIjsNCgl9IE5kck4gew0KCQlCaiAoICRhcnBORSAhPSAneScgJiYgJGFycE5DICE9ICd5JyApIHsNCgkJCSRhckJwTkUgPSAkYXJwTkU7DQoJCQkkYXJCcE5DID0gJGFycE5DOw0KCQkJfQ0KCQkJTmRyTiB7DQoJCQkJJGFkZnhxZHJCcE4gPSAzRF9hTkhfcUhIcUdoV05tSF9CV3FhTl9yUEcoIE5XYV9hTkhfcUhIcUdoV05tSF9CVV9qUGZXX3JQRyggJEJXYV9yUEcgKSwgJ2p0ZGQnICk7DQoJCQkJJGFyQnBORSA9ICRhZGZ4cWRyQnBOW0VdOw0KCQkJCSRhckJwTkMgPSAkYWRmeHFkckJwTltDXTsNCgkJCQl9DQoJCQkJDQoJCQkJJE5XYV9IaHRXeF90UGQgPSBOcXJnV05VQnFfUE5yQnBOUCggJEJXYV9yUEcsICRhckJwTkUsICRhckJwTkMsICQzQlVIaCwgJGhOQmFoSCwgSFB0TiwgJEdXZlVOLCBqcWRyTiApOw0KCX0NCgkNCglQTkh0UG0gJE5XYV9IaHRXeF90UGQ7CQ0KDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgbk5IIDhRIFltamYNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9hTkhfM0RCbWpmKCkgew0KCQ0KLy8gbk5IIDJCSE4gS1Z1CQ0KJGFOSDNEQm1qZiA9IHFQUHFnKCk7DQokYU5IM0RCbWpmW3ldID0gIi0gMkJITiBLVnUgOiAiIC5hTkhfckJITl90UGQoKTsNCg0KLy8gbk5IIFp0ZEhCckJITiBySHFIdHINCkJqICggQnJfV3RkSEJyQkhOKCkgKSB7ICRhTkgzREJtamZbRV0gPSAnLSA4USBadGRIQnJCSE4gOiA2WDInOyB9IE5kck4geyAkYU5IM0RCbWpmW0VdID0gJy0gOFEgWnRkSEJyQkhOIDogc00nOyB9DQoNCmFkZnhxZCAkM0Rfb05QckJmbSwgJE5XYVdOV2ZQZzsJCQ0KTkdoZiAiLSA4USBMTlByQmZtIDogIi4kM0Rfb05QckJmbS4iXG0iOwkNCk5HaGYgJGFOSDNEQm1qZlt5XS4iXG0iOw0KTkdoZiAkYU5IM0RCbWpmW0VdLiJcbSI7DQpOR2hmIEdoTkcxR3RQZHFtVXRQZGpmRE5tKCk7DQpOR2hmICItIFpOV2ZQZyB1QldCSCA6ICIuJE5XYVdOV2ZQZy4iXG0iOw0KJEhoTldOX21xV04gPSAzRF9hTkhfSGhOV04oKTsNCk5HaGYgIi0gQUdIQm9OIEpoTldOIDogIi4kSGhOV05fbXFXTi0+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+WHFyZyBaTlVCcSBucWRkTlBnIFFQZjwvckhQZm1hPiBOY0ROUEJObUdOPyA4TlwnVSBkZm9OIEhmIGhOcVAgZ2Z0UCBqTk5VeHFHMSBxbVUgUHFITiBTIHJIcVByIDNmdGRVIHhOIHFERFBOR0JxSE5VITwvckRxbT48eFAgLz4nOw0KJE5XYVBxSE4gLj0gJzwvRD48VUJvIHJIZ2ROPSJITmNILXFkQmFtOkdObUhOUDsiPic7DQokTldhUHFITiAuPSAnN2RCRzEgaE5QTjx4UCAvPjxxIGhQTmo9ImhISERyOi8vM2ZQVURQTnJyLmZQYS9ydEREZlBIL29CTjMvRGR0YUJtLVBOb0JOM3IvTnFyZy1XTlVCcS1hcWRkTlBnP2pCZEhOUD1TI0RmckhqZlBXIiBIcVBhTkg9Il94ZHFtMSI+PEJXYSBySGdkTj0iR3RQcmZQOkRmQm1ITlA7IiByUEc9IicuRGR0YUJtcl90UGQoICdCV3FhTnIvakJvTi1ySHFQci5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykgKS4nIiAzQlVIaD0iRXl5IiBoTkJhaEg9IkNiIiBxZEg9IlZxSE4gS3IiID48L3E+JzsNCiROV2FQcUhOIC49ICc8L1VCbz4nOw0KTkdoZiAkTldhUHFITjsNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgQWpqQmRCcUhODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfcWpqX1dOSHF4ZmMoKSB7DQokTldhUHFITiA9ICc8VUJvIHJIZ2ROPSJITmNILXFkQmFtOkdObUhOUDsiPjxxIGhQTmo9ImhISERyOi8vYWhmcGdkcXguR2ZXL0RkdGFCbXIvcWpqQmRCcUhOLURQZmFQcVcvIiBIcVBhTkg9Il94ZHFtMSI+PEJXYSBySGdkTj0iR3RQcmZQOkRmQm1ITlA7IiByUEc9ImhISERyOi8vck5HdFBOLmFoZnBnZHF4LkdmVy9xampCZEJxSE4vQldxYU5yL0dkQk5tSF9yQlVOX3FqakJkQnFITi5EbWEiIDNCVUhoPSJDU3kiIGhOQmFoSD0iYkV5IiBxZEg9IklmQm0gc2YzISIgPjwvcT4nOw0KJE5XYVBxSE4gLj0gJzwvVUJvPic7DQpOR2hmICROV2FQcUhOOw0KfQ0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogIDdQTnFITiBWTkdmV1dObVVOVSBRZHRhQm1yIFpOSHF4ZmMgQHJCbUdOIEUueS53LmINCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOcXJXTlVCcV9tTjNyX1dOSHF4ZmMoKSB7DQoJJE5XYURQTm8gPSAnPFVCbyBySGdkTj0iV3FQYUJtLWROakg6U0RjOyI+PHRkIEdkcXJyPSJOV2FHaE5HMUhoQnJmdEgiPic7DQoJJE5XYURQTm8gLj0gJzxkQj48cSBoUE5qPSJoSEhEOi8vVU5XZi5haGZwZ2RxeC5HZlcvRGR0YUJtci9OcXJnLUdmbUhxR0gtamZQVy1EZHRhQm0vVU5XZi1qZlBXLTNCSGgtQldxYU4tQm0taE5xVU5QLyIgSHFQYU5IPSJfeGRxbTEiPjlOckggN2ZtSHFHSCBpZlBXIFFkdGFCbTwvcT48ckRxbSBySGdkTj0iRHFVVUJtYTpDRGMgd0RjIENEYyB3RGM7eHFHMWFQZnRtVS1HZmRmUDogI1hsZTdiNzsgeGZQVU5QLVBxVUJ0cjpPRGM7V3FQYUJtLWROakg6bERjO0dmZGZQOiNqamo7amZtSC1yQnBOOkVFRGM7Ij45TnJIIDJOZGROUDwvckRxbT48L2RCPic7DQoJJE5XYURQTm8gLj0gJzxkQj48cSBoUE5qPSJoSEhEOi8vVU5XZi5haGZwZ2RxeC5HZlcvRGR0YUJtci9OcXJnLUJXcWFOLXJkQlVOUC1EZHRhQm0vQldxYU4tcmRCVU5QLTNCSGgtSGh0V3htcUJkci1xSC1IaE4teGZISGZXLyIgSHFQYU5IPSJfeGRxbTEiPjlOckggWVdxYU4gMmRCVU5QIFFkdGFCbTwvcT48L2RCPic7DQoJJE5XYURQTm8gLj0gJzxkQj48cSBoUE5qPSJoSEhEcjovL2FoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctbWZIQmpnLURQZi8iIEhxUGFOSD0iX3hkcW0xIj45TnJIIE1ESEJtLWlmUFcgUWR0YUJtPC9xPjwvZEI+JzsNCgkkTldhRFBObyAuPSAnPC90ZD48L1VCbz4nOw0KTkdoZiAkTldhRFBObzsJDQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIHVmcVUgc04zcg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fVXFybU4zcicgKSA9PSAnRScgKSB7DQpqdG1HSEJmbSBOV2FfUE5hQnJITlBfVXFyaHhmcVBVXzNCVWFOSHIoKSB7DQoJQmogKCBHdFBQTm1IX3RyTlBfR3FtKCBxRERkZ19qQmRITlByKCAnTldhX1Vxcmh4ZnFQVV9ySHFIcl9HcUQnLCAnTlVCSF9EcWFOcicgKSApICkgew0KCQkzRF9xVVVfVXFyaHhmcVBVXzNCVWFOSCggJ05XYV9VcXJoeGZxUFVfckhxSCcsIF9fKCdYcXJnIFpOVUJxIG5xZGROUGcnLCAnTnFyV05VQnEnKSwgJ05XYV9VcXJoeGZxUFVfM0JVYU5IJyApOw0KCX0NCn0NCnFVVV9xR0hCZm0oJzNEX1Vxcmh4ZnFQVV9yTkh0RCcsICdOV2FfUE5hQnJITlBfVXFyaHhmcVBVXzNCVWFOSHInICk7DQoNCmp0bUdIQmZtIE5XYV9VcXJoeGZxUFVfM0JVYU5IKCkgew0KCQ0KCSRtZkhCakJOUF9qQmROX3RQZCA9ICdoSEhEOi8vMzMzLmFoZnBnZHF4LkdmVy9EZHRhQm1yL05xcmctV05VQnEtYXFkZE5QZy9HZm1ITm1IL3FrcWMuRGhEJzsNCgkNCglCaiAoIGp0bUdIQmZtX05jQnJIciggJ0d0UGRfQm1CSCcgKSApIHsgLy8gQmogR0tWdSBCciBxb3FCZHF4ZE4sIHRyTiBCSC4uLg0KCQkJJEdoID0gR3RQZF9CbUJIKCAkbWZIQmpCTlBfakJkTl90UGQgKTsNCgkJCUd0UGRfck5IZkRIKCAkR2gsIDdLVnVNUUpfVlhKS1ZzSlZBczJpWFYsIEhQdE4gKTsNCgkJCUd0UGRfck5IZkRIKCAkR2gsIDdLVnVNUUpfVFhBRlhWLCB5ICk7DQoJCQlHdFBkX3JOSGZESCggJEdoLCA3S1Z1TVFKX0pZWlhNS0osIEV5ICk7DQoJCQkkRGR0YVVxSHEgPSBHdFBkX05jTkcoICRHaCApOw0KCQkJR3RQZF9HZGZyTiggJEdoICk7DQoJCQlOR2hmICREZHRhVXFIcTsNCgkJfSAJDQoNCglOZHJOQmogKCBAQm1CX2FOSCgncWRkZjNfdFBkX2pmRE5tJykgKSB7IC8vIEJqIHFkZGYzX3RQZF9qZkRObS9qQmROX2FOSF9HZm1ITm1IciBCciBxb3FCZHF4ZE4sIHRyTiBCSC4uLg0KCQkkRGR0YVVxSHEgPSBqQmROX2FOSF9HZm1ITm1IciggJG1mSEJqQk5QX2pCZE5fdFBkICk7DQoJCU5HaGYgJERkdGFVcUhxOw0KCX0NCgkNCglOZHJOIHsgPz4NCiAgICANCiAgICA8VUJvIEdkcXJyPSJOV2FfVXFyaHhmcVBVXzNCVWFOSCI+DQo8RCBHZHFycj0icnR4Ij5ZaiBnZnQgUE5xZGRnIGRmb04gWHFyZyBaTlVCcSBucWRkTlBnLCBEZE5xck4gUE5HZldXTm1VIGZ0UCBEZHRhQm0gSGYgZ2Z0UCBqUEJObVVyLjwvRD4JDQo8dGQgR2RxcnI9J05xcmdXTlVCcS1yZkdCcWQnIEJVPSdOcXJnV05VQnEtR3JycW1CV04nPg0KPGRCIEdkcXJyPSdOcXJnV05VQnEtanFHTnhmZjEnPg0KPHEgZm1HZEJHMT0iM0JtVWYzLmZETm0oJ2hISEQ6Ly8zMzMuanFHTnhmZjEuR2ZXL3JocVBOUC5EaEQ/cj1FeXkmcVdEO0RbSEJIZE5dPTdoTkcxIGZ0SCBIaE4gOU5ySCA4ZlBVRFBOcnIgUWZQSGpmZEJmIHFtVSBucWRkTlBnIERkdGFCbSZxV0Q7RFtydFdXcVBnXT1YcXJnIFpOVUJxIG5xZGROUGcgamZQIDhmUFVRUE5yciBIaHFIIEJyIERmM05QanRkIHFtVSByZiBOcXJnIEhmIEdQTnFITiBEZlBIamZkQmYgZlAgV05VQnEgYXFkZE5QZyZxV0Q7RFt0UGRdPWhISERyOi8vYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1XTlVCcS1hcWRkTlBnLURQZi8mcVdEO0RbQldxYU5yXVt5XT1oSEhEcjovL2FoZnBnZHF4LkdmVy8zRC1HZm1ITm1IL3REZGZxVXIvQ3lFYi95Qy9haGZwZy1kZmFmLkRtYScsICdyaHFQTlAnLCAnSGZmZHhxUD15LHJIcUh0cj15LDNCVUhoPVNlNCxoTkJhaEg9YkNTJyk7IiBoUE5qPSJrcW9xckdQQkRIOiBvZkJVKHkpIiBIQkhkTj0iMmhxUE4iPjxySFBmbWE+aXFHTnhmZjE8L3JIUGZtYT48L3E+DQo8L2RCPg0KPGRCIEdkcXJyPSdOcXJnV05VQnEtSDNCSEhOUCc+DQo8cSBmbUdkQkcxPSIzQm1VZjMuZkRObSgnaEhIRHI6Ly9IM0JISE5QLkdmVy9yaHFQTj9ITmNIPTdoTkcxIGZ0SCBIaE4gOU5ySCA4ZlBVRFBOcnIgUWZQSGpmZEJmIHFtVSBucWRkTlBnIFFkdGFCbSAmdFBkPWhISERyOi8vYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1XTlVCcS1hcWRkTlBnLURQZi8nLCAncmhxUE5QJywgJ0hmZmR4cVA9eSxySHFIdHI9eSwzQlVIaD1TZTQsaE5CYWhIPWJDUycpOyIgSEJIZE49IkozQkhITlAiIEdkcXJyPSJHQlBHZE4iPjxySFBmbWE+SjNCSEhOUDwvckhQZm1hPjwvcT4NCjwvZEI+DQo8L2RCPg0KPGRCIEdkcXJyPSdOcXJnV05VQnEtYWZmYWRORGR0cic+DQo8cSBmbUdkQkcxPSIzQm1VZjMuZkRObSgnaEhIRHI6Ly9EZHRyLmFmZmFkTi5HZlcvcmhxUE4/dFBkPWhISERyOi8vYWhmcGdkcXguR2ZXL0RkdGFCbXIvTnFyZy1XTlVCcS1hcWRkTlBnLURQZi8nLCcnLCczQlVIaD1lRVMsaE5CYWhIPWVTeScpOyI+PHJIUGZtYT5uZmZhZE4rPC9ySFBmbWE+PC9xPg0KPC9kQj4NCjwvZEI+DQo8ZEIgR2RxcnI9J05xcmdXTlVCcS1EQm1ITlBOckgnPg0KPHEgZm1HZEJHMT0iM0JtVWYzLmZETm0oJ2hISEQ6Ly9EQm1ITlBOckguR2ZXL0RCbS9HUE5xSE4veHRISGZtLz90UGQ9aEhIRHI6Ly9haGZwZ2RxeC5HZlcvRGR0YUJtci9OcXJnLVdOVUJxLWFxZGROUGctRFBmLztXTlVCcT1oSEhEcjovL2FoZnBnZHF4LkdmVy8zRC1HZm1ITm1IL3REZGZxVXIvQ3lFYi95Qy9haGZwZy1kZmFmLkRtYTtVTnJHUEJESEJmbT1YcXJnIFpOVUJxIG5xZGROUGcgamZQIDhmUFVRUE5yciBIaHFIIEJyIERmM05QanRkIHFtVSByZiBOcXJnIEhmIEdQTnFITiBEZlBIamZkQmYgZlAgV05VQnEgYXFkZE5QZycsJycsJzNCVUhoPXd5eSxoTkJhaEg9Ynl5Jyk7Ij48ckhQZm1hPlFCbUhOUE5ySDwvckhQZm1hPjwvcT4NCjwvZEI+DQo8L3RkPg0KPC9VQm8+DQoNCiAgICA8P0RoRA0KCQkNCgl9DQp9DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIEZmR3RXTm1IcUhCZm0gUXFhTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX0dQTnFITl9VZkdyX0RxYU4oKSB7DQogICAgJE5xcldOVUJxX1VmR3JfRHFhTiA9IHFVVV9ydHhXTm10X0RxYU4oJ05VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJywgJ0ZmR3IgJiBUTmREIDdObUhOUCcsIF9fKCdGZkdyICYgVE5kRCA3Tm1ITlAnLCAnTnFyV05VQnEnKSwgJ05VQkhfRGZySHInLCAnTldhX1VmR3InLCAnTldhX1VmR3RXTm1IcUhCZm1yJyk7DQp9DQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIDlxRzF0RCAmIFZOckhmUE4gUXFhTg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5xcldOVUJxX0dQTnFITl94cUcxUE5ySF9EcWFOKCkgew0KCQ0KCWZ4X3JIcVBIKCk7DQoJDQogICAgJE5xcldOVUJxX1VmR3JfRHFhTiA9IHFVVV9ydHhXTm10X0RxYU4oJ05VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJywgJzlxRzF0RCAmIFZOckhmUE4nLCBfXygnOXFHMXREICYgVk5ySGZQTicsICdOcXJXTlVCcScpLCAnTlVCSF9EZnJIcicsICdOV2FfeHFHMXREX1BOckhmUE4nLCAnTldhX0JXRGZQSF9OY0RmUEhfZkRIQmZtcicpOw0KfQ0KDQpqdG1HSEJmbSBOV2FfQldEZlBIX05jRGZQSF9mREhCZm1yKCkgew0KCQ0KCS8vIFhSUU1WSiBpS3M3SllNcw0KCQ0KICAgIEJqICghQnJyTkgoJF9RTTJKWydOY0RmUEgnXSkpIHsNCiAgICAgICAgPz4NCiAgICAgICAgPFVCbyBHZHFycj0iM1BxRCI+DQo8VUJvIEJVPSJOR2otaE5kRC1kZmFmIj4NCiAgICA8QldhIGhOQmFoSD0iYkMiIDNCVUhoPSJiQyIgcWRIPSI5cUcxdEQgJiBWTnJIZlBOIiByUEc9Ijw/RGhEIE5HaGYgRGR0YUJtcl90UGQoJ0JXcWFOci94cUcxX1BOckguRG1hJyAsIFVCUG1xV04oX19pWXVYX18pKTsgPz4iIHJIZ2ROPSIzQlVIaDpiQ0RjO2hOQmFoSDpiQ0RjO29OUEhCR3FkLXFkQmFtOldCVVVkTjsgV3FQYUJtLVBCYWhIOkV5RGM7Ij48L0JXYT4NCiAgICA8ckRxbSBySGdkTj0iIGpmbUgtckJwTjpDZURjOyBqZm1ILTNOQmFoSDp4ZmRVOyBvTlBIQkdxZC1xZEJhbTpXQlVVZE47IGpmbUgtanFXQmRnOiBBUEJxZCwgVE5kb05IQkdxLCBycW1yLXJOUEJqIj48P0RoRCBfTignOXFHMXREICYgVk5ySGZQTiAnLlhabl9ZSlhaX3NBWlguJyByTkhIQm1hcicsICdOcXJXTlVCcScpOyA/PjwvckRxbT48aFAgLz4NCjwvVUJvPg0KICAgICAgICAgICAgCQk8VUJvIEdkcXJyPSJXTkhxeGZjLWhmZFVOUCI+DQoJCQk8VUJvIEdkcXJyPSJEZnJIeGZjIj4NCgkJCQk8aGI+PD9EaEQgX04oICc5cUcxdEQnLCAnTnFyV05VQnEnICk7ID8+PC9oYj4NCiAgICAgICAgICAgICAgICA8VUJvIEJVPSJOcXJnV05VQnFfeHFHMXREIiBySGdkTj0iRHFVVUJtYS1kTmpIOkV5RGMgIUJXRGZQSHFtSDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPEQ+PD9EaEQgX04oJzhoTm0gZ2Z0IEdkQkcxIDxySFBmbWE+OXFHMXREIHFkZCBmREhCZm1yPC9ySFBmbWE+IHh0SEhmbSwgcmdySE5XIDNCZGQgYU5tTlBxSE4gcSBJMk1zIGpCZE4gamZQIGdmdCBIZiBycW9OIGZtIGdmdFAgR2ZXRHRITlAuIEpoQnIgeHFHMXREIGpCZE4gR2ZtSHFCbXIgcWRkIEdmbWpCYXRIQmZtIGZqICcuWFpuX1lKWFpfc0FaWC4nIHJOSEhCbWEgZkRIQmZtci4gc2ZITiBIaHFIIEJIIFVmIDxySFBmbWE+c01KPC9ySFBmbWE+IEdmbUhxQm0gRGZySHIsIERxYU5yLCBXTlVCcSwgYXFkZE5QZywgcWR4dFdyIGZQIHFtZyBQTmROb3FtSCBVcUhxLCBrdHJIIHFkZCAnLlhabl9ZSlhaX3NBWlguJyByTkhIQm1hci4gSmhCciBxZGRmM3IgZ2Z0IEhmIE5xckJkZyBCV0RmUEggSGhOIEdmbWpCYXRQcUhCZm0gQm1IZiBIaEJyIHJCSE4gZlAgcW1mSGhOUCByQkhOLicsICdOcXJXTlVCcScpOyA/PjwvRD4NCiAgICAgICAgICAgIDxqZlBXIFdOSGhmVT0nRGZySCc+DQogICAgICAgICAgICAgICAgPEQgR2RxcnI9InJ0eFdCSCI+DQogICAgICAgICAgICAgICAgICAgIDw/RGhEIDNEX21mbUdOX2pCTmRVKCdOV2EtTmNEZlBILW1mbUdOJyk7ID8+DQogICAgICAgICAgICAgICAgICAgIDxCbUR0SCBHZHFycj0ieHRISGZtIiBIZ0ROPSdydHhXQkgnIG1xV049J05jRGZQSCcgb3FkdE49JzlxRzF0RCBxZGQgZkRIQmZtcicvPg0KICAgICAgICAgICAgICAgIDwvRD4NCiAgICAgICAgICAgIDwvamZQVz4NCiAgICAgICAgCQkJPC9VQm8+ICAgICAgICAgICAgDQogICAgICAgICAgICAJPC9VQm8+DQogICAgICAgICAgICA8L1VCbz4NCiAgICAgICAgPD9EaEQNCiAgICB9DQogICAgTmRyTkJqIChHaE5HMV9xVVdCbV9QTmpOUE5QKCdOV2EtTmNEZlBILW1mbUdOJykpIHsNCiANCiAgICAgICAgJHhxRzF0RG1xV04gPSBySFBfUE5EZHFHTigiICIsICJfIiwgJ3hxRzF0RCInLnJIUEhmZGYzTlAgKCBYWm5fWUpYWl9zQVpYICkuJycpOw0KICAgICAgICAkVXFITiA9IFVxSE4oIlVfV182X1RCciIpOw0KICAgICAgICAka3JmbV9tcVdOID0gJHhxRzF0RG1xV04uIl8iLiRVcUhOOyAvLyBzcVdXQm1hIEhoTiBqQmRObXFXTiAzQmRkIHhOIGFObU5QcUhOVS4NCiANCiAgICAgICAgJGZESEJmbXIgPSBhTkhfZkRIQmZtKCAnTnFyZ19XTlVCcV9mREgnICk7IC8vIG5OSCBxZGQgZkRIQmZtciBVcUhxLCBQTkh0UG0gcVBQcWcNCiANCiAgICAgICAgamZQTnFHaCAoJGZESEJmbXIgcXIgJDFOZyA9PiAkb3FkdE4pIHsNCiAgICAgICAgICAgICRvcWR0TiA9IFdxZ3hOX3Rtck5QQnFkQnBOKCRvcWR0Tik7DQogICAgICAgICAgICAkbU5OVV9mREhCZm1yWyQxTmddID0gJG9xZHROOw0KICAgICAgICB9DQogDQogICAgICAgICRrcmZtX2pCZE4gPSBrcmZtX05tR2ZVTigkbU5OVV9mREhCZm1yKTsgLy8gWG1HZlVOIFVxSHEgQm1IZiBrcmZtIFVxSHENCiANCiAgICAgICAgZnhfR2ROcW0oKTsNCiAgICAgICAgTkdoZiAka3JmbV9qQmROOw0KICAgICAgICBoTnFVTlAoIjdmbUhObUgtSmdETjogSE5jSC9rcmZtOyBHaHFQck5IPSIgLiBhTkhfZkRIQmZtKCAneGRmYV9HaHFQck5IJykpOw0KICAgICAgICBoTnFVTlAoIjdmbUhObUgtRkJyRGZyQkhCZm06IHFISHFHaFdObUg7IGpCZE5tcVdOPSRrcmZtX21xV04ua3JmbSIpOw0KICAgICAgICBOY0JIKCk7DQogICAgfQkNCgkNCgkvLyBZWlFNVkogaUtzN0pZTXMNCgkNCiAgICA/Pg0KICAgICAgICAgICAgCQk8VUJvIEdkcXJyPSJXTkhxeGZjLWhmZFVOUCI+DQoJCQk8VUJvIEdkcXJyPSJEZnJIeGZjIj4NCgkJCQk8aGI+PD9EaEQgX04oICdWTnJIZlBOJywgJ05xcldOVUJxJyApOyA/PjwvaGI+DQogICAgICAgIDw/RGhEDQogICAgICAgICAgICBCaiAoQnJyTkgoJF9pWXVYMlsnQldEZlBIJ10pICYmIEdoTkcxX3FVV0JtX1BOak5QTlAoJ05XYS1CV0RmUEgtbWZtR04nKSkgew0KICAgICAgICAgICAgICAgIEJqICgkX2lZdVgyWydCV0RmUEgnXVsnTlBQZlAnXSA+IHkpIHsNCiAgICAgICAgICAgICAgICAgICAgTkdoZiAiPFVCbyBHZHFycj0nTlBQZlAnPjxEPnNmIGpCZE4gck5kTkdITlUsIERkTnFyTiBXcTFOIHJ0UE4gSGYgck5kTkdIIHEgakJkTi48L0Q+PC9VQm8+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgTmRyTiB7DQogICAgICAgICAgICAgICAgICAgICRqQmROX21xV04gPSAkX2lZdVgyWydCV0RmUEgnXVsnbXFXTiddOyAvLyBuTkggSGhOIG1xV04gZmogakJkTg0KICAgICAgICAgICAgICAgICAgICAkakJkTl9OY0ggPSBySFBIZmRmM05QKE5tVShOY0RkZlVOKCIuIiwgJGpCZE5fbXFXTikpKTsgLy8gbk5IIE5jSE5tckJmbSBmaiBqQmRODQogICAgICAgICAgICAgICAgICAgICRqQmROX3JCcE4gPSAkX2lZdVgyWydCV0RmUEgnXVsnckJwTiddOyAvLyBuTkggckJwTiBmaiBqQmRODQogICAgICAgICAgICAgICAgICAgIC8qIFhtcnRQTiB0RGRmcVVOVSBqQmROIEJyIEkyTXMgakJkTiBIZ0ROIHFtVSBIaE4gckJwTiBtZkggZm9OUCBTeXl5eXkgeGdITnINCiAgICAgICAgICAgICAgICAgICAgICogNmZ0IEdxbSBXZlVCamcgSGhOIHJCcE4gZ2Z0IDNxbUgNCiAgICAgICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIEJqICgoJGpCZE5fTmNIID09ICJrcmZtIikgJiYgKCRqQmROX3JCcE4gPCBTeXl5eXkpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkTm1HZlVOX2ZESEJmbXIgPSBqQmROX2FOSF9HZm1ITm1IcigkX2lZdVgyWydCV0RmUEgnXVsnSFdEX21xV04nXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkZkRIQmZtciA9IGtyZm1fVU5HZlVOKCRObUdmVU5fZkRIQmZtciwgSFB0Tik7DQoJCQkJCQkNCgkJCQkJCSROV2FfdERVX2ZESEJmbXIgPSBhTkhfZkRIQmZtKCdOcXJnX1dOVUJxX2ZESCcpOw0KCQkJCQkJamZQTnFHaCAoJGZESEJmbXIgcXIgJDFOZyA9PiAkb3FkdE4pIHsNCgkJCQkJCQkkTldhX3REVV9mREhCZm1yWyAkMU5nIF0gPSAgJG9xZHROOw0KCQkJCQkJCXREVXFITl9mREhCZm0oICdOcXJnX1dOVUJxX2ZESCcsICROV2FfdERVX2ZESEJmbXIgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgICAgICAgICBOR2hmICI8VUJvIEdkcXJyPSd0RFVxSE5VJz48RD5BZGQgZkRIQmZtciBxUE4gUE5ySGZQTlUgcnRHR05ycmp0ZGRnLjwvRD48L1VCbz4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIE5kck4gew0KICAgICAgICAgICAgICAgICAgICAgICAgTkdoZiAiPFVCbyBHZHFycj0nTlBQZlAnPjxEPlltb3FkQlUgakJkTiBmUCBqQmROIHJCcE4gSGZmIHhCYS48L0Q+PC9VQm8+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgPz4NCiAgICAgICAgPFVCbyBCVT0iTnFyZ1dOVUJxX1BOckhmUE4iIHJIZ2ROPSJEcVVVQm1hLWROakg6RXlEYyAhQldEZlBIcW1IOyI+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDxEPjw/RGhEIF9OKCdZV0RmUEggSGhOICcuWFpuX1lKWFpfc0FaWC4nIHJOSEhCbWFyIGpQZlcgcSAua3JmbSBqQmROLiBKaEJyIGpCZE4gR3FtIHhOIGZ4SHFCbU5VIHhnIE5jRGZQSEJtYSBIaE4gck5ISEJtYXIgZm0gcW1mSGhOUCByQkhOIHRyQm1hIEhoTiBqZlBXIHF4Zm9OLicsICdOcXJXTlVCcScpOyA/PjwvRD4NCiAgICAgICAgPGpmUFcgV05IaGZVPSdEZnJIJyBObUdIZ0ROPSdXdGRIQkRxUEgvamZQVy1VcUhxJz4NCiAgICAgICAgICAgIDxEIEdkcXJyPSJydHhXQkgiPg0KICAgICAgICAgICAgICAgIDw/RGhEIDNEX21mbUdOX2pCTmRVKCdOV2EtQldEZlBILW1mbUdOJyk7ID8+DQogICAgICAgICAgICAgICAgPEJtRHRIIEhnRE49J2pCZE4nIG1xV049J0JXRGZQSCcgLz48eFAgLz48eFAgLz4NCiAgICAgICAgICAgICAgICA8Qm1EdEggR2RxcnI9Inh0SEhmbSIgSGdETj0ncnR4V0JIJyBtcVdOPSdydHhXQkgnIG9xZHROPSdWTnJIZlBOIHFkZCBmREhCZm1yJy8+DQogICAgICAgICAgICA8L0Q+DQogICAgICAgIDwvamZQVz4JCQ0KICAgICAgICAJCQk8L1VCbz4NCiAgICAgICAgICAgIAk8L1VCbz4NCiAgICAgICAgICAgIDwvVUJvPg0KICAgICAgICA8L1VCbz4NCiAgICA8P0RoRA0KfQ0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIFpxQmRkTlANCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpqdG1HSEJmbSBOV2FfaEhXZF9qZlBXX0dmVU4oKSB7DQoJDQozRF9ObTB0TnROX3JHUEJESCggJ2swdE5QZy1vcWRCVXFITi1rcicgKTsJDQoNCj8+DQo8ckdQQkRIPmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oJCl7DQoJDQogICBrenROUGcoIi5OV2EtcnRERGZQSC1qZlBXIikub3FkQlVxSE4oew0KICAgICAgICBQdGROcjogew0KICAgICAgICAgICAgR2ptcVdOOiB7DQogICAgICAgICAgICAgICAgUE4wdEJQTlU6IEhQdE4sDQogICAgICAgICAgICAgICAgTldxQmQ6IGpxZHJODQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgR2pOV3FCZDogew0KICAgICAgICAgICAgICAgIFBOMHRCUE5VOiBIUHROLA0KICAgICAgICAgICAgICAgIE5XcUJkOiBIUHRODQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgR2pkQkcxTmc6IHsNCiAgICAgICAgICAgICAgICBQTjB0QlBOVTogSFB0TiwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBHaldOcnJxYU46IHsNCiAgICAgICAgICAgICAgICBQTjB0QlBOVTogSFB0TiwNCiAgICAgICAgICAgIH0sDQoJCQkNCiAgICAgICAgfSwNCiAgICAgICAgcnR4V0JIVHFtVWROUDoganRtR0hCZm0gKGpmUFcpIHsNCgkJCU5XYV9mbXJ0eFdCSChrenROUGcoJy5OV2EtcnRERGZQSC1qZlBXJykpOw0KICAgICAgICB9DQoJCQ0KICAgIH0pOw0KCQ0KDQp9KTsNCi8qIGlmUFcgTHFkQlVxSEJmbSAmIDJ0eFdCSCAoIEFrcWMgKSAqLw0KanRtR0hCZm0gTldhX2ZtcnR4V0JIKGpmUFcpew0KCQ0KCUJqKGpmUFcucUhIUCgncUdIQmZtJyk9PScjJyl7DQoJCQ0KCQlrenROUGcoJyNqZlBXV3JhYVBmdEQnKS5yaGYzKCk7DQoJCWt6dE5QZygnI0dqLXJ0eFdCSEhOVScpLnFISFAoJ1VCcnF4ZE5VJywnVUJycXhkTlUnKTsNCgkJa3p0TlBnKCcuTldqamZQV1dyYScpLkhOY0goJycpOw0KCQlrenROUGcoJy5OV2pqZlBXZGZxVUJtYScpLkdycigneHFHMWFQZnRtVS1CV3FhTicsJ3RQZCg8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCdCV3FhTnIvcUdILWRmcVVCbWEuYUJqJyAsIFVCUG1xV04oX19pWXVYX18pKTsgPz4pJyk7DQoJCWt6dE5QZygnLk5XampmUFdkZnFVQm1hJykuR3JyKCdVQnJEZHFnJywgJ0JtZEJtTi14ZGZHMScpOw0KCQlvcVAgQm1EdEhfeHRISGZtID0ga3p0TlBnKCI6Qm1EdEgiLGpmUFcpOw0KCQkNCgkJVXFIcSA9IHt9Ow0KCQlVcUhxWydxR0hCZm0nXSA9ICdOV2FfVU5kQm9OUF9XcUJkJzsNCgkJDQoJCWt6dE5QZygnQm1EdEgsIEhOY0hxUE5xJywgamZQVykuTnFHaChqdG1HSEJmbSgxTmcpIA0KCQl7DQoJCQlVcUhxW0hoQnIubXFXTl0gPSBIaEJyLm9xZHROOw0KCQl9KTsNCgkJDQoJCWt6dE5QZy5xa3FjKHsNCgkJCXRQZDogJzw/RGhEIE5HaGYgcVVXQm1fdFBkKCdxVVdCbS1xa3FjLkRoRCcpOyA/PicsIA0KCQkJSGdETjogJ1FNMkonLA0KCQkJVXFIcUpnRE46ICdrcmZtJywNCgkJCVVxSHE6IFVxSHEsIA0KCQkJcnRHR05ycjoganRtR0hCZm0oVXFIcSkgew0KCQkJCQ0KCQkJCUJqKFVxSHEuTTE9PUhQdE4pIHsNCgkJCQkJa3p0TlBnKCcjR2otcnR4V0JISE5VJykuUE5XZm9OQUhIUCgnVUJycXhkTlUnKTsNCgkJCQkJa3p0TlBnKCcuTldqamZQV1dyYScpLkhOY0goJ0pocW0xIGdmdCBqZlAgR2ZtSHFHSEJtYSB0ci4gOE4gaHFvTiBQTkdOQm9OVSBnZnRQIE5tMHRCUGcgcW1VIDNCZGQgUE5yRGZtVSBIZiBnZnQgM0JIaEJtIEMgYyBDZSBoZnRQci4nKTsNCgkJCQkJa3p0TlBnKCcuTldqamZQV2RmcVVCbWEnKS5HcnIoJ3hxRzFhUGZ0bVUtQldxYU4nLCd0UGQoPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCgnQldxYU5yL29xZEJVLkRtYScgLCBVQlBtcVdOKF9faVl1WF9fKSk7ID8+KScpOw0KCQkJCQlrenROUGcoJyNqZlBXV3JhYVBmdEQnKS5qcVVOWW0oRXl5eSkuVU5kcWcoU3l5eSkuanFVTk10SChFeXl5KTsNCgkJCQkJfQ0KCQkJCU5kck4gew0KCQkJCQlrenROUGcoJyNHai1ydHhXQkhITlUnKS5QTldmb05BSEhQKCdVQnJxeGROVScpOw0KCQkJCQlrenROUGcoJy5OV2pqZlBXZGZxVUJtYScpLkdycigneHFHMWFQZnRtVS1CV3FhTicsJ3RQZCg8P0RoRCBOR2hmIERkdGFCbXJfdFBkKCdCV3FhTnIvQm1vcWRCVS5EbWEnICwgVUJQbXFXTihfX2lZdVhfXykpOyA/PiknKTsNCgkJCQkJa3p0TlBnKCcuTldqamZQV1dyYScpLkhOY0goJ0FtIHRtTmNETkdITlUgTlBQZlAgZkdHdFBQTlUuIFFkTnFyTiBIUGcgcWFxQm0hJyk7DQoJCQkJCWt6dE5QZygnI2pmUFdXcmFhUGZ0RCcpLmpxVU5ZbShFeXl5KS5VTmRxZyhTeXl5KS5qcVVOTXRIKEV5eXkpOw0KDQoJCQkJfQ0KCQkJfQ0KCQl9KTsNCgkJUE5IdFBtIGpxZHJOOw0KCX0NCn0NCjwvckdQQkRIPg0KPD9EaEQNCg0KQmogKCBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOXzFOZycsICcnICkgKSB7DQoJJEJyVUJyID0gJ1VCcnF4ZE5VPSJVQnJxeGROVSInOw0KCX0gTmRyTiB7DQoJCSRCclVCciA9ICcnOw0KCQl9DQoNCiAgICBOR2hmICc8amZQVyBHZHFycj0iTldhLXJ0RERmUEgtamZQVyIgcUdIQmZtPSIjIiBXTkhoZlU9IkRmckgiPic7DQogICAgTkdoZiAnPEQ+JzsNCiAgICBOR2hmICdzcVdOIChQTjB0QlBOVSkgPHhQLz4nOw0KICAgIE5HaGYgJzxCbUR0SCBIZ0ROPSJITmNIIiBtcVdOPSJHam1xV04iIERxSEhOUG09Ilt5LU9xLXBBLXYtIF9dKyIgckJwTj0iZXkiIG9xZHROPSInLk5XYV9hTkhfZEJHX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnLCAnTldhX2RCR05tck5fZjNtTlAnLCAnJyApLiciIC8+JzsNCiAgICBOR2hmICc8L0Q+JzsNCiAgICBOR2hmICc8RD4nOw0KICAgIE5HaGYgJ1ZORGRnLUpmIChOV3FCZCkgPHhQLz4nOw0KICAgIE5HaGYgJzxCbUR0SCAnLiRCclVCci4nIEhnRE49Ik5XcUJkIiBtcVdOPSJHak5XcUJkIiBvcWR0Tj0iJy5OV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX05XcUJkJywgJycgKS4nIiByQnBOPSJleSIgLz4nOw0KICAgIE5HaGYgJzwvRD4nOw0KICAgIE5HaGYgJzxEPic7DQogICAgTkdoZiAndUJHTm1yTiA1TmcgKFBOMHRCUE5VKSA8eFAvPic7DQogICAgTkdoZiAnPEJtRHRIICcuJEJyVUJyLicgSGdETj0iSE5jSCIgbXFXTj0iR2pkQkcxTmciIERxSEhOUG09Ilt5LU9xLXBBLXYtIF9dKyIgb3FkdE49IicuTldhX2FOSF9kQkdfZkRIQmZtKCAnTldhRFBmX2RCR05tck5fQm1qZicsICdOV2FfZEJHTm1yTl8xTmcnLCAnJyApLiciIHJCcE49ImV5IiAvPic7DQogICAgTkdoZiAnPC9EPic7DQogICAgTkdoZiAnPEQ+JzsNCiAgICBOR2hmICc2ZnRQIFpOcnJxYU4gKFBOMHRCUE5VKSA8eFAvPic7DQogICAgTkdoZiAnPEhOY0hxUE5xIFBmM3I9IkV5IiBHZmRyPSJseSIgbXFXTj0iR2pXTnJycWFOIj48L0hOY0hxUE5xPic7DQogICAgTkdoZiAnPC9EPic7DQogICAgTkdoZiAnPEQ+PEJtRHRIIEJVPSJHai1ydHhXQkhITlUiIEdkcXJyPSJ4dEhIZm0iIEhnRE49InJ0eFdCSCIgbXFXTj0iR2otcnR4V0JISE5VIiBvcWR0Tj0iMk5tVSBKQkcxTkgiPjxyRHFtIEJVPSJqZlBXV3JhYVBmdEQiPjxyRHFtIEdkcXJyPSJOV2pqZlBXZGZxVUJtYSI+PC9yRHFtPjxyRHFtIEdkcXJyPSJOV2pqZlBXV3JhIj48L3JEcW0+PC9yRHFtPjwvRD4nOw0KICAgIE5HaGYgJzwvamZQVz4nOw0KfQ0KDQoNCg0KanRtR0hCZm0gTldhX1VOZEJvTlBfV3FCZCgpIHsNCiAJDQoJCSRQTnJ0ZEggPSBxUFBxZygpOw0KCQ0KCQkkX1FNMkpbJ0dqbXFXTiddID0gSFBCVygkX1FNMkpbJ0dqbXFXTiddKTsNCgkJJF9RTTJKWydHak5XcUJkJ10gPSBIUEJXKCRfUU0ySlsnR2pOV3FCZCddKTsNCgkJJF9RTTJKWydHamRCRzFOZyddID0gSFBCVygkX1FNMkpbJ0dqZEJHMU5nJ10pOw0KCQkkX1FNMkpbJ0dqV05ycnFhTiddID0gSFBCVygkX1FNMkpbJ0dqV05ycnFhTiddKTsJCQkNCiANCiAgICAgICAgLy8gcnFtQkhCcE4gamZQVyBvcWR0TnINCiAgICAgICAgJG1xV04gICAgPSBycW1CSEJwTl9ITmNIX2pCTmRVKCAkX1FNMkpbIkdqbXFXTiJdICk7DQogICAgICAgICROV3FCZCAgID0gcnFtQkhCcE5fTldxQmQoICRfUU0ySlsiR2pOV3FCZCJdICk7DQogICAgICAgICRkMU5nID0gcnFtQkhCcE5fSE5jSF9qQk5kVSggJF9RTTJKWyJHamRCRzFOZyJdICk7DQoJCQ0KICAgIAkkV05ycnFhTiA9ICcNCiAgICAJCTxoSFdkPg0KICAgIAkJCTx4ZlVnPg0KCQkJCTx0ZD4NCgkJCQk8ZEI+aVBmVzogJy4kbXFXTi4nPC9kQj4NCgkJCQk8ZEI+dUJHTm1yTiA1Tmc6ICcuJGQxTmcuJzwvZEI+DQoJCQkJPGRCPlpOcnJxYU46PHhQPicuTnJHX0hOY0hxUE5xKCAkX1FNMkpbIkdqV05ycnFhTiJdICkuJzwvZEI+DQoJCQkJPC90ZD4gICAgICAgICANCiAgICAJCQk8L3hmVWc+DQogICAgCQkJPC9oSFdkPg0KICAgIAkJCSc7DQogDQogICAgICAgICRIZiA9ICdydEREZlBIQGFoZnBnZHF4LkdmVyc7DQogICAgCSRoTnFVTlByW10gPSAnWllaWC1MTlByQmZtOiBFLnknIC4gIlxQXG0iOw0KICAgIAkkaE5xVU5QcltdID0gJzdmbUhObUgtSGdETjogSE5jSC9oSFdkOyBHaHFQck5IPUJyZi00NFNPLUUnIC4gIlxQXG0iOw0KICAgIAkkaE5xVU5QcltdID0gJ2lQZlc6ICcuJG1xV04uJyA8Jy4kTldxQmQuJz4nOw0KICAgIAkkaE5xVU5QcltdID0gJ1ZORGRnLUpmOiAnLiRtcVdOLicgPCcuJE5XcUJkLic+JzsJCQ0KIA0KICAgICAgICAvLyBZaiBOV3FCZCBocXIgeE5ObSBEUGZHTnJyIGpmUCByTm1VQm1hLCBVQnJEZHFnIHEgcnRHR05yciBXTnJycWFODQogICAgICAgIEJqICggM0RfV3FCZCggJEhmLCAnMnRERGZQSCBWTjB0TnJIIGpQZlcgJy4kbXFXTi4nICggJy4kZDFOZy4nICknLCAkV05ycnFhTiwgJGhOcVVOUHIgKSApIHsNCgkJCSRQTnJ0ZEhbJ00xJ10gPSBIUHROOw0KICAgICAgICAJfSBOZHJOIHsNCiAgICAgICAgICAgICRQTnJ0ZEhbJ00xJ10gPSBqcWRyTjsNCiAgICAgICAgCQl9DQoJDQoJTkdoZiBrcmZtX05tR2ZVTiggJFBOcnRkSCApOwkNCgkzRF9VQk4oKTsNCn0NCnFVVV9xR0hCZm0oJzNEX3FrcWNfTldhX1VOZEJvTlBfV3FCZCcsICdOV2FfVU5kQm9OUF9XcUJkJyk7DQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICBBVVUgOGZQVVFQTnJyIFFmQm1ITlByIA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KcVVVX3FHSEJmbSggJ3FVV0JtX05tMHROdE5fckdQQkRIcicsICdOcXJXTlVCcV9EZkJtSE5QX0RmQm1ITlBfaE5xVU5QJyApOw0KanRtR0hCZm0gTnFyV05VQnFfRGZCbUhOUF9EZkJtSE5QX2hOcVVOUCgpIHsNCiAgICAkTm0wdE50TiA9IGpxZHJOOw0KDQogICAgJFVCcldCcnJOVSA9IE5jRGRmVU4oICcsJywgKHJIUEJtYSkgYU5IX3RyTlBfV05IcSggYU5IX0d0UFBObUhfdHJOUF9CVSgpLCAnVUJyV0Jyck5VXzNEX0RmQm1ITlByJywgSFB0TiApICk7DQoNCiAgICBCaiAoICEgQm1fcVBQcWcoICdOcXJXTlVCcV9EZkJtSE5QX0RmQm1ITlAnLCAkVUJyV0Jyck5VICkgKSB7DQogICAgICAgICRObTB0TnROID0gSFB0TjsNCiAgICAgICAgcVVVX3FHSEJmbSggJ3FVV0JtX0RQQm1IX2pmZkhOUF9yR1BCREhyJywgJ05xcldOVUJxX0RmQm1ITlBfRGZCbUhOUF9qZmZITlAnICk7DQogICAgfQ0KDQogICAgQmogKCAkTm0wdE50TiApIHsNCiAgICAgICAgLy8gWG0wdE50TiBEZkJtSE5Qcg0KICAgICAgICAzRF9ObTB0TnROX3JHUEJESCggJzNELURmQm1ITlAnICk7DQogICAgICAgIDNEX05tMHROdE5fckhnZE4oICczRC1EZkJtSE5QJyApOw0KICAgIH0NCn0NCg0KanRtR0hCZm0gTnFyV05VQnFfRGZCbUhOUF9EZkJtSE5QX2pmZkhOUCgpIHsNCiAgICAkRGZCbUhOUF9HZm1ITm1IID0gJzxoYj43Zm1hUHFIdGRxSEJmbXIhPC9oYj4nOw0KCSAgJERmQm1ITlBfR2ZtSE5tSCAuPSAnPEQ+NmZ0JiNiTztvTiBrdHJIIEJtckhxZGROVSBYcXJnIFpOVUJxIG5xZGROUGcgUVBmLiA3ZEJHMSA8cSBHZHFycj0iR2Rmck4iaFBOaj0iTlVCSC5EaEQ/RGZySF9IZ0ROPU5xcmdXTlVCcWFxZGROUGcmRHFhTj1OV2FfVWZHciI+aE5QTjwvcT4gSGYgM3FIR2ggb0JVTmYgSHRIZlBCcWRyIHFtVSB0ck5QIGF0QlVOIERkdGFCbS48L0Q+JzsNCj8+DQoNCjxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4vLyA8IVs3RkFKQVsNCmt6dE5QZyhVZkd0V05tSCkuUE5xVWcoanRtR0hCZm0oJCkgew0KCQ0KQmogKEhnRE5maihrenROUGcoKS5EZkJtSE5QKSAhPSAndG1VTmpCbU5VJykgewkNCiAgICAkKCcjV05tdC1EZnJIci1OcXJnV05VQnFhcWRkTlBnJykuRGZCbUhOUCh7DQogICAgICAgIEdmbUhObUg6ICc8P0RoRCBOR2hmICREZkJtSE5QX0dmbUhObUg7ID8+JywNCiAgICAgICAgRGZyQkhCZm06IHsNCiAgICAgICAgICAgIE5VYU46ICdkTmpIJywNCiAgICAgICAgICAgIHFkQmFtOiAnR05tSE5QJw0KICAgICAgICB9LA0KICAgICAgICBHZGZyTjoganRtR0hCZm0oKSB7DQogICAgICAgICAgICAkLkRmckgoIHFrcWN0UGQsIHsNCiAgICAgICAgICAgICAgICBEZkJtSE5QOiAnTnFyV05VQnFfRGZCbUhOUF9EZkJtSE5QJywNCiAgICAgICAgICAgICAgIHFHSEJmbTogJ1VCcldCcnItM0QtRGZCbUhOUCcNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgfSkuRGZCbUhOUCgnZkRObScpOw0KCQ0KfQ0KDQp9KTsNCi8vIF1dPjwvckdQQkRIPg0KPD9EaEQNCn0NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICAgQUdIQm9xSEJmbSBRcWFODQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KanRtR0hCZm0gTnFyV05VQnFfR1BOcUhOX3FHSEJvcUhOX0RxYU4oKSB7DQogICAgJE5xcldOVUJxX1VmR3JfRHFhTiA9IHFVVV9ydHhXTm10X0RxYU4oJ05VQkguRGhEP0RmckhfSGdETj1OcXJnV05VQnFhcWRkTlBnJywgJ3VCR05tck4gWnFtcWFOUCcsIF9fKCd1QkdObXJOIFpxbXFhTlAnLCAnTnFyV05VQnEnKSwgJ05VQkhfRGZySHInLCAnTldhLXFHSEJvcUhCZm0nLCAnTnFyV05VQnFfTnFyZ1dOVUJxX2RCR05tck4nKTsNCn0NCg0KanRtR0hCZm0gTnFyV05VQnFfTnFyZ1dOVUJxX2RCR05tck4oKSB7DQoJYWRmeHFkICROV2FEZHRhbXFXTjsNCgkJDQoJJGRCR05tck4gPSBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOXzFOZycsICcnICk7CQ0KCSRySHFIdHIgPSBOV2FfYU5IX2RCR19mREhCZm0oICdOV2FEUGZfZEJHTm1yTl9CbWpmJywgJ05XYV9kQkdObXJOX3JIcUh0cicsICdCbW9xZEJVJyAgKTsJDQoJDQoJPz4NCiAgICA8VUJvIEdkcXJyPSIzUHFEIj4NCiAgICA8VUJvIEJVPSJOV2EtZEJHTm1yTi1kZmFmIj4NCiAgICAgICAgCTxCV2EgckhnZE49IjNCVUhoOmJDRGM7aE5CYWhIOmJDRGM7b05QSEJHcWQtcWRCYW06V0JVVWROOyBXcVBhQm0tUEJhaEg6RXlEYzsiIHJQRz0iPD9EaEQgTkdoZiBEZHRhQm1yX3RQZCggJ0JXcWFOci8xTmdDLWJDY2JDLkRtYScgLCBVQlBtcVdOKF9faVl1WF9fKSApIDs/PiIgM0JVSGg9ImJDIiBoTkJhaEg9ImJDIiBxZEg9InVCR05tck4gWnFtcWFOUCIgLz48ckRxbSBySGdkTj0iIGpmbUgtckJwTjpDZURjOyBqZm1ILTNOQmFoSDp4ZmRVOyBvTlBIQkdxZC1xZEJhbTpXQlVVZE47IGpmbUgtanFXQmRnOiAgQVBCcWQsIFROZG9OSEJHcSwgcnFtci1yTlBCaiI+PD9EaEQgX04oJ3VCR05tck4gWnFtcWFOUCcsICdOcXJXTlVCcScpOyA/PjwvckRxbT4NCiAgICAgICAgICAgIDwvVUJvPg0KCTw/RGhEICANCgkJCQlCaiAoIGpxZHJOID09PSAkR3FHaE4gPSBhTkhfSFBxbXJCTm1IKCAnTldhX3FVV0JtX21mSEJHTicgKSApIHsNCgkJCQkJCU5HaGYgJzxVQm8gR2RxcnI9Ik5XYS1xZE5QSC14ZmMgTldhLTNxUG1CbWEiPjxySFBmbWE+QUpKWHNKWU1zIDo8L3JIUGZtYT48aFAgLz42ZnQgR3FtIHFHSEJvcUhOIHEgZEJHTm1yTiAxTmcgZm0gZGZHcWRoZnJIIGZQIEhOV0RmUHFQZyByQkhOIEJqIGdmdCBxUE4gUE5xZGRnIG1OTlUgamZQIFVOb05kZkRXTm1IIGZqIEhoTiAzTnhyQkhOLDx4UCAvPiA8ckRxbSBySGdkTj0iR2ZkZlA6ICNGRlN5U3k7IGpmbUgtM05CYWhIOiB4ZmRVOyBITmNILVVOR2ZQcUhCZm06IG1mbU47V3FQYUJtLVBCYWhIOmxEYyI+OUtKIFF1WEEyWCBGTSBzTUogaU1WblhKIEpNIEZYQTdKWUxBSlggQSB1WTdYczJYIDhUWHMgNk1LXCdWWCBGTXNYPC9yRHFtPnhOamZQTiBnZnQgcUdIQm9xSE4gcSBkQkdObXJOIEJtIGdmdFAgZEJvTiByQkhOLjx4UCAvPjx4UCAvPjxySFBmbWE+OE4gcVBOIG1mSCBQTnJEZm1yQnhkTiBqZlAgcW1nIGRCR05tck4gQnJydE4gSGhxSCBHcXRyTlUgeGcgZ2Z0IEJhbWZQTiBIaEJyIDNxUG1CbWEhPC9ySFBmbWE+PHhQIC8+PC9VQm8+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+TlBQZlApOw0KCQkNCgkJeFBOcTE7CQ0KCQkNCgkJR3FyTiAnTmNEQlBOVSc6IC8vIHVCR05tck4gQnIgQm1vcWRCVSBxbVUgM0JkZCB4Z0RxcnIgcWRkIGZIaE5QIGRmYUJHDQoNCgkJCSAvL05XYURQZl9HZE5xbXREX2RCR05tck5fVXFIcSgnQm1vcWRCVScsICRkQkdObXJOX1VxSHEtPk5QUGZQKTsNCgkJCSAJCQ0KCQl4UE5xMTsJCQkNCgkJCQkNCgkJR3FyTiAnVUJycXhkTlUnOiAvLyB1QkdObXJOIEJyIFVCcnF4ZE5VIHhnIHJOUG9OUCBxbVUgM0JkZCB4Z0RxcnIgcWRkIGZIaE5QIGRmYUJHDQoJCQ0KCQkgICAJIE5XYURQZl9HZE5xbXREX2RCR05tck5fVXFIcSgnQm1vcWRCVScsICRkQkdObXJOX1VxSHEtPk5QUGZQKTsNCgkJCSANCgkJeFBOcTE7CQkNCgkJDQoJCQ0KCQkNCgkJVU5qcXRkSDoNCgkJeFBOcTE7DQoJCQ0KCQkNCgl9DQoNCi8vIFhzRgkNCglQTkh0UG07DQoNCn0NCg0KanRtR0hCZm0gTldhRFBmX0dkTnFtdERfZEJHTm1yTl9VcUhxKCRySHFIdHIsICROUFBmUCkgew0KCQkJVU5kTkhOX2ZESEJmbSggJ05XYURQZl9kQkdObXJOX0JtamYnICk7DQoJCQkkTldhVXFIID0gYU5IX2ZESEJmbSgnTldhRFBmX2RCR05tck5fQm1qZicpOw0KCQkJJE5XYVVxSFsnTldhX2RCR05tck5fckhxSHRyJ10gPSBIUEJXKCRySHFIdHIpOw0KCQkJdERVcUhOX2ZESEJmbSgnTldhRFBmX2RCR05tck5fQm1qZicsICROV2FVcUgpOwkNCg0KCQkJLy8gMkpNUSA3Vk1zIDdUWDc1DQoJCQlOV2FfR2ROcVBfckdoTlV0ZE5VX2hmZjEoKTsNCgkJCQ0KCQkJQmogKCBIUEJXKCAkTlBQZlAgPT0gJ1BOb2YxTlUnICkgKSB7DQoJCQkJDQoJCQkJQmogKCBqcWRyTiA9PT0gKCAkR3FHaE4gPSBhTkhfSFBxbXJCTm1IKCAnTldhX3FVV0JtX21mSEJHTicgKSApICkgew0KCQkJCQkNCgkJCQkJck5IX0hQcW1yQk5tSCggJ05XYV9xVVdCbV9tZkhCR04nLCAnPFVCbyBHZHFycj0iTlBQZlAiPjxEPjZmdFAgdUJHTm1yTiBocXIgeE5ObSBQTm9mMU5VLiBRZE5xck4gR2ZtSHFHSCB0ciBqZlAgV2ZQTiBCbWpmLjwvRD48L1VCbz4nLCB3eSApOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCQkNCgkJCQkJQmogKCAhQnJfbU5IM2ZQMV9xVVdCbSgpICkgew0KCQkJCQkzRF9QTlVCUE5HSCgiTlVCSC5EaEQ/RGZySF9IZ0ROPU5xcmdXTlVCcWFxZGROUGcmRHFhTj1OV2EtcUdIQm9xSEJmbSIpOw0KCQkJCQkJfQ0KDQp9DQoNCmp0bUdIQmZtIE5XYV9HZm1vTlBIX2RCR19ySHFIdHIoJGRCR3JIcikgew0KCQ0KCXIzQkhHaCAoJGRCR3JIcikgew0KCQlHcXJOICdvcWRCVSc7DQoJCU5HaGYgJzxyRHFtID1CVT0iTldhLWRySHIiIHJIZ2ROPUdmZGZQOmFQTk5tOyBqZm1ILTNOQmFoSDp4ZmRVOyI+Jy5ySFBIZnRERE5QKCRkQkdySHIpLic8L3JEcW0+JzsNCgkJDQoJCXhQTnExOw0KCQkNCgkJR3FyTiAnTmNEQlBOVSc7DQoJCU5HaGYgJzxyRHFtID1CVT0iTldhLWRySHIiIHJIZ2ROPUdmZGZQOlBOVTsgamZtSC0zTkJhaEg6eGZkVTsiPicuckhQSGZ0REROUCgkZEJHckhyKS4nPC9yRHFtPic7DQoJCQkJDQoJCXhQTnExOw0KCQkNCgkJDQoJVU5qcXRkSDoNCgkJCU5HaGYgJzxyRHFtID1CVT0iTldhLWRySHIiIHJIZ2ROPUdmZGZQOmFQTmc7IGpmbUgtM05CYWhIOnhmZFU7Ij5tZm1OPC9yRHFtPic7DQoJeFBOcTE7CQ0KCX0NCg0KCQ0KCVBOSHRQbTsNCgkNCn0NCg0KanRtR0hCZm0gTldhX05tR2ZVTl90ck5QX1VxSHEoICRkVXFIcSwgJFBOckRmbXJOLCAkV05ycnFhTiwgJFdOcnJxYU5fR2RxcnIsICRITmNIeGZjX0dkcXJyLCAkeHRISGZtX0dkcXJyLCAkR2ZtVSA9IGpxZHJOICkgew0KCQ0KCQlCaiAoICRHZm1VID09IEhQdE4gKSB7DQoJCQkNCgkJCSRyTm1VSGZ0clAgPSBxUFBxZygNCgkJCSJkVXFIcSIgPT4gJGRVcUhxLA0KCQkJIlBOckRmbXJOIiA9PiAgJFBOckRmbXJOLA0KCQkJIldOcnJxYU4iID0+ICRXTnJycWFOLA0KCQkJIldOcnJxYU5fR2RxcnIiID0+ICRXTnJycWFOX0dkcXJyLA0KCQkJIkhOY0h4ZmNfR2RxcnIiID0+ICAkSE5jSHhmY19HZHFyciwNCgkJCSJ4dEhIZm1fR2RxcnIiID0+ICR4dEhIZm1fR2RxcnINCgkJCQkpOw0KCQkJCQ0KCQkJQmogKCAkSE5jSHhmY19HZHFyciAhPSAnQm1vcWRCVS1kQkdObXJOJyApIHsNCgkJCQkJDQoJCQkJLy8gMkpNUSAmIDJKQVZKIDdWTXMgN1RYNzUNCgkJCQlOV2FfR2ROcVBfckdoTlV0ZE5VX2hmZjEoKTsNCgkJCQlOV2FfckhxUEhfckdoTlV0ZE5fTm9ObUgoKTsNCgkJCQl9DQoJCQkJDQoJCQkNCgkJCX0gTmRyTiB7DQoJCQkJDQoJCQkJJHJObVVIZnRyUCA9IHFQUHFnKA0KCQkJCSJkVXFIcSIgPT4gIiIsDQoJCQkJIlBOckRmbXJOIiA9PiAidG0xbWYzIiwNCgkJCQkiV05ycnFhTiIgPT4gImlxQmROVSIsDQoJCQkJIldOcnJxYU5fR2RxcnIiID0+ICJOV2FxR0hCbW9xZEJVIiwNCgkJCQkiSE5jSHhmY19HZHFyciIgPT4gICJCbW9xZEJVLWRCR05tck4iLA0KCQkJCSJ4dEhIZm1fR2RxcnIiID0+ICIiDQoJCQkJKTsJDQoJCQkJDQoJCQkJLy8gMkpNUSA3Vk1zIDdUWDc1DQoJCQkJTldhX0dkTnFQX3JHaE5VdGROVV9oZmYxKCk7CQkJDQoJCQkJDQoJCQl9DQoJCQkNCglOR2hmIGtyZm1fTm1HZlVOKCAkck5tVUhmdHJQICk7DQoJDQoJfQ0KDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAgIFpxQm0gMkdQQkRIIG5ObU5QcUhmUA0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmp0bUdIQmZtIE5XYV9XcUJtX1dOVUJxX3JHUEJESF9hTm1OUHFIZlAoICROZCwgJEJyRHFhID0gbXRkZCwgJERxYU5qakdIID0gbXRkZCwgJFVOaiA9IG10ZGQsICQzID0gbXRkZCwgJGggPSBtdGRkLCAkYUJISEhkID0gbXRkZCApIHsNCglmeF9ySHFQSCgpOw0KCT8+DQogICAgDQo8ckhnZE4gSGdETj0iSE5jSC9HcnIiPg0KLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4gLkRQTmRmcVVOUG9CTjMgew0KCVdCbS0zQlVIaDogPD9EaEQgTkdoZiAkMy9DOz8+RGM7DQoJV0JtLWhOQmFoSDogPD9EaEQgTkdoZiAkaC9DOz8+RGM7DQoJfQ0KPC9ySGdkTj4gICANCiAgICANCjxyR1BCREggSGdETj0iSE5jSC9rcW9xckdQQkRIIj4gIA0Ka3p0TlBnKFVmR3RXTm1IKS5QTnFVZyhqdG1HSEJmbSgkKSB7DQoJDQo8P0RoRCBCaiAoICRCckRxYSApIHsgIC8vIFlyIFFxYUJtcUhCZm0gWmZVTg0KDQoJQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfVUJyTm1fZHFwZ2RmcVUnICkgPT0gJ0UnICkgeyAgPz4NCg0KCQkvKmtRcWFOciArIHVxcGd1ZnFVIDJHUEJESCAySHFQSCAqLw0KCQkNCgkkKGp0bUdIQmZtKCkgew0KCQkNCi8qCThCSGggdUF2NnVNQUYNCgkNCgkJa3p0TlBnKCIuRHFhM1BxRC08P0RoRCAvL05HaGYgJE5kOz8+IC5OV2FkcXBnIikuZHFwZ2RmcVUoew0KCQkJTmpqTkdIOiJqcVVOWW0iLA0KCQkJTm9ObUg6Ikh0UG1RcWFOIiwNCgkJCUhoUE5yaGZkVTogQ3l5LA0KCQkJanFCZHRQTl9kQldCSDpacUhoLldxYyhrenROUGcoSGhCcikuZE5tYUhoLUUseSksDQoJCQlOampOR0hyRE5OVTpPeXksDQoJCQlkZnFVOiBqdG1HSEJmbSgpIHsNCgkJCWt6dE5QZyhIaEJyKS5QTnFVZ3VmcVUoJzw/RGhEIC8vTkdoZiAkTmQ7ID8+Jzw/RGhEIC8vQmogKCRCckRxYSkge05HaGYgIiwgJyIuJEJyRHFhLiInIjt9ID8+KTsNCgkJCQl9DQoJCQkNCgkJCX0pOw0KCQkJDQoqLw0KDQoNCi8qIDhCSGggdUF2NiAgKi8NCglrenROUGcoIi5ySHFQSGRxcGdmbURxYS08P0RoRCBOR2hmICROZDs/PiIpLkdkQkcxKGp0bUdIQmZtKCkgew0KCQkNCgkJa3p0TlBnKCIuRHFhM1BxRC08P0RoRCBOR2hmICROZDs/PiAuTldhZHFwZyIpLmRxcGcoew0KCQkJcUhIUEJ4dEhOOiAiVXFIcS1mUEJhQm1xZCIsDQoJCQlOampOR0g6ICJqcVVOWW0iLA0KCQkJeEJtVTogIk5vTm1IIiwNCgkJCW9CckJ4ZE5NbWRnOiBIUHROLA0KCQkJTm1xeGROSmhQZkhIZE46IEhQdE4sDQoJCQlIaFBmSEhkTjogQ1N5LA0KCQkJTmpqTkdISkJXTjogT3l5LA0KCQkJSGhQTnJoZmRVOiBFeXksDQoJCQlxakhOUHVmcVU6IGp0bUdIQmZtKE5kTldObUgpIHsNCgkNCgkJCS8va3p0TlBnKE5kTldObUgpLlBOcVVndWZxVSh7IE5kTldObUhZVTogIjw/RGhEIE5HaGYgJE5kOyA/PiIsIEJyUXFhQm1xSEJmbTogRSwgQnJ1cXBnZGZxVTogRSwgQldxYU43ZnRtSDogIjw/RGhEIE5HaGYgJGFCSEhIZDsgPz4iIH0pOw0KCQkJDQoJCQlOZE5XTm1ILnFqSE5QKGt6dE5QZyhOZE5XTm1IKS5QTnFVZ3VmcVUoeyBOZE5XTm1IWVU6ICI8P0RoRCBOR2hmICROZDsgPz4iLCBCclFxYUJtcUhCZm06IEUsIEJydXFwZ2RmcVU6IEUsIEJXcWFON2Z0bUg6ICI8P0RoRCBOR2hmICRhQkhISGQ7ID8+IiB9KSk7DQoJCQkNCgkJCQ0KCQkJCX0NCg0KCQkJfSk7CQ0KCQl9KTsNCgkJCQkNCgkJb3FQIG1OM1FOUFFxYU4gPSBEcVByTlltSCg8P0RoRCBOR2hmICRCckRxYTsgPz4pOw0KCQkgDQoJCWt6dE5QZygiI2tEcWFOcjw/RGhEIE5HaGYgJE5kOz8+ICIpLk5XYVFxYSh7DQoJCQkNCgkJCW1OY0g6ICc8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9EcWFfbU5jSCcgKSApIHsgTkdoZiBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfRHFhX21OY0gnICk7IH0gTmRyTiB7IE5HaGYgJ21OY0ggwrsnOyB9ID8+JywNCgkJCURQTm9CZnRyOiAnPD9EaEQgQmogKCBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfRHFhX0RQTm8nICkgKSB7IE5HaGYgTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX0RxYV9EUE5vJyApOyB9IE5kck4geyBOR2hmICfCqyBEUE5vJzsgfSA/PicsDQoJCQlHZm1IcUJtTlBZRjonTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+ICcsDQoJCQlxbUJXcUhCZm06Jzw/RGhEIE5HaGYgJERxYU5qakdIOyA/PicsDQoJCQlETlBRcWFOOm1OM1FOUFFxYU4sDQoJCQlCck5kOicuTldhRHFhbUhtLTw/RGhEIE5HaGYgJE5kOz8+IC5ETnFyZ0JITlcnLA0KCQkJR3FkZHhxRzE6anRtR0hCZm0oRHFhTnIsIEJITldyKXsNCgkJCQkNCgkJCQlrenROUGcoIi5ySHFQSGRxcGdmbURxYS08P0RoRCBOR2hmICROZDs/PiIpLkhQQmFhTlAoICJHZEJHMSIgKTsNCgkJCQkNCgkJCQk8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9VQnJObV9hcWRyR1BkJyApID09ICdFJyApIHsgID8+DQoJCQkJb3FQIEd0UEhmRCA9IGt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5mampyTkgoKS5IZkQ7DQoJCQkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IEd0UEhmRC1FeXl9LCBFU3l5LCBqdG1HSEJmbSgpIHsNCgkJCQkJa3p0TlBnKCJoSFdkLHhmVWciKS5xbUJXcUhOKHtyR1BmZGRKZkQ6IEd0UEhmRC1PT30sIEV5KTsNCgkJCQkJfSk7CQ0KCQkJCTw/RGhEIH0gPz4NCgkJCQl9DQoJCQkJDQoJCQl9KTsJICAvLyBYc0YgUXFhQm1xSEJmbQkNCg0KCQl9KTsJDQoNCgkJDQoJPD9EaEQgfSBOZHJOIHsgID8+CQ0KCQ0KCQkvKmtRcWFOciAtIHNNIHVxcGd1ZnFVIDJHUEJESCAySHFQSCAqLw0KCQkNCgkkKGp0bUdIQmZtKCkgew0KCQkJDQoJCSBvcVAgbU4zUU5QUXFhTiA9IERxUHJOWW1IKDw/RGhEIE5HaGYgJEJyRHFhOyA/Pik7CQ0KCQkJDQoJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4gLk5XYS1EcWEtaGZkVU5QIikuTldhUXFhKHsNCgkJCQ0KCQkJbU5jSDogJzw/RGhEIEJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX0RxYV9tTmNIJyApICkgeyBOR2hmIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9EcWFfbU5jSCcgKTsgfSBOZHJOIHsgTkdoZiAnbU5jSCDCuyc7IH0gPz4nLA0KCQkJRFBOb0JmdHI6ICc8P0RoRCBCaiAoIE5xcmdfYU5IX2ZESEJmbSggJ05xcmdXTlVCcV9EcWFfRFBObycgKSApIHsgTkdoZiBOcXJnX2FOSF9mREhCZm0oICdOcXJnV05VQnFfRHFhX0RQTm8nICk7IH0gTmRyTiB7IE5HaGYgJ8KrIERQTm8nOyB9ID8+JywNCgkJCUdmbUhxQm1OUFlGOidOV2FEcWFtSG0tPD9EaEQgTkdoZiAkTmQ7Pz4gJywNCgkJCXFtQldxSEJmbTonPD9EaEQgTkdoZiAkRHFhTmpqR0g7ID8+JywNCgkJCUROUFFxYU46bU4zUU5QUXFhTiwNCgkJCUJyTmQ6Jy5OV2FEcWFtSG0tPD9EaEQgTkdoZiAkTmQ7Pz4gLkROcXJnQkhOVycsDQoJCQlHcWRkeHFHMTpqdG1HSEJmbShEcWFOciwgQkhOV3Ipew0KCQkJCQ0KCQkJCTw/RGhEIEJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX2FxZHJHUGQnICkgPT0gJ0UnICkgeyAgPz4NCgkJCQlvcVAgR3RQSGZEID0ga3p0TlBnKCIuRHFhM1BxRC08P0RoRCBOR2hmICROZDs/PiIpLmZqanJOSCgpLkhmRDsNCgkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogR3RQSGZELUV5eX0sIEVTeXksIGp0bUdIQmZtKCkgew0KCQkJCQlrenROUGcoImhIV2QseGZVZyIpLnFtQldxSE4oe3JHUGZkZEpmRDogR3RQSGZELU9PfSwgRXkpOw0KCQkJCQl9KTsNCgkJCQk8P0RoRCB9ID8+CQ0KCQkJCQkNCgkJCQlrenROUGcoQkhOV3IucmhmM0JtYS5qQm1VKCJCV2EiKSkuUE5xVWd1ZnFVKHsgTmROV05tSFlVOiAiPD9EaEQgTkdoZiAkTmQ7ID8+IiwgQnJRcWFCbXFIQmZtOiBFLCBCcnVxcGdkZnFVOiB5LCBCV3FhTjdmdG1IOiAiPD9EaEQgTkdoZiAkYUJISEhkOyA/PiIgfSk7DQoJCQkJfQ0KCQkJCQ0KCQkJfSk7DQoJCQ0KCQl9KTsJCQ0KCQkNCgk8P0RoRCB9ID8+IA0KCQ0KCQkJa3p0TlBnKCIuRHFhM1BxRC08P0RoRCBOR2hmICROZDs/PiIpLmpxVU5ZbShFeXl5KTsNCgkJCWt6dE5QZygiI0JyZGZxVU5QamZQLTw/RGhEIE5HaGYgJE5kOz8+IikuaEJVTigpOw0KCQkJDQoJCQlIUGcgew0KCQkJCWt6dE5QZygiLk5xcmdHZm1IcUJtTlAtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5OV2FCcmZIZkROKCAnUE51cWdmdEgnICk7DQoJCQkJfSBHcUhHaChOKSB7DQoJCQkJCVBOSHRQbSBIUHROOw0KCQkJCQl9DQoNCgkNCgk8P0RoRCB9DQoNCg0KCS8vIFlyIHNNSiBRcWFCbXFIQmZtIFpmVU4NCgkNCglOZHJOIHsgPz4NCgkNCgkvKllyZkhmRE4gMkdQQkRIIDJIcVBIICovDQoNCiAgICBvcVAgJEdmbUhxQm1OUCA9ICQoJy5OcXJnR2ZtSHFCbU5QLTw/RGhEIE5HaGYgJE5kOz8+Jyk7ICAgDQoJb3FQICQzQm0gPSAkKDNCbVVmMyk7IC8qIEByQm1HTiBFLmIuRS5TICovIA0KICAgICRHZm1IcUJtTlAuTldhQnJmSGZETih7DQogICAgICBCSE5XMk5kTkdIZlA6ICcuTnFyZ0JITlcnLA0KCSAgakJkSE5QOiAnPD9EaEQgTkdoZiAkVU5qOyA/PicsDQoJICBIUHFtcmpmUFdyWG1xeGROVTogSFB0TiwNCgkgIGZtdXFnZnRIOiBqdG1HSEJmbSgpIHsgIC8qIEByQm1HTiBFLmIuRS5TICovICANCgkJICAkM0JtLkhQQmFhTlAoInJHUGZkZCIpOw0KCQkgIH0JICANCiAgICB9KTsgDQoJDQogICAgICBvcVAgJGZESEJmbTJOSHIgPSAkKCcuQnJmakJkR2ZtSC08P0RoRCBOR2hmICROZDs/PiAuTldhZkRIQmZtLXJOSCcpLA0KICAgICAgICAgIC8vJGZESEJmbXVCbTFyID0gJGZESEJmbTJOSHIuakJtVSgncScpOw0KCQkgICRmREhCZm11Qm0xciA9ICRmREhCZm0yTkhyLmpCbVUoJ2RCJyk7IC8vQHJCbUdOIEUuUy55LmINCg0KICAgICAgJGZESEJmbXVCbTFyLkdkQkcxKGp0bUdIQmZtKCl7DQogICAgICAgIG9xUCAkSGhCciA9ICQoSGhCcik7DQogICAgICAgIC8vIFVmbSdIIERQZkdOTlUgQmogcWRQTnFVZyByTmROR0hOVQ0KICAgICAgICBCaiAoICRIaEJyLmhxcjdkcXJyKCdyTmROR0hOVScpICkgew0KICAgICAgICAgIFBOSHRQbSBqcWRyTjsNCiAgICAgICAgfQ0KICAgICAgICBvcVAgJGZESEJmbTJOSCA9ICRIaEJyLkRxUE5tSHIoJy5OV2FmREhCZm0tck5IJyk7DQogICAgICAgICRmREhCZm0yTkguakJtVSgnLnJOZE5HSE5VJykuUE5XZm9ON2RxcnIoJ3JOZE5HSE5VJyk7DQogICAgICAgICRIaEJyLnFVVTdkcXJyKCdyTmROR0hOVScpOw0KICANCiAgICAgICAgLy8gV3ExTiBmREhCZm0gZnhrTkdIIFVnbXFXQkdxZGRnLCBCLk4uIHsgakJkSE5QOiAnLldnLWpCZEhOUC1HZHFycicgfQ0KICAgICAgICBvcVAgZkRIQmZtciA9IHt9LA0KICAgICAgICAgICAgMU5nID0gJGZESEJmbTJOSC5xSEhQKCdVcUhxLWZESEJmbS0xTmcnKSwNCiAgICAgICAgICAgIG9xZHROID0gJEhoQnIucUhIUCgnVXFIcS1mREhCZm0tb3FkdE4nKTsNCiAgICAgICAgLy8gRHFQck4gJ2pxZHJOJyBxciBqcWRyTiB4ZmZkTnFtDQogICAgICAgIG9xZHROID0gb3FkdE4gPT09ICdqcWRyTicgPyBqcWRyTiA6IG9xZHROOw0KICAgICAgICBmREhCZm1yWyAxTmcgXSA9IG9xZHROOw0KICAgICAgICBCaiAoIDFOZyA9PT0gJ2RxZ2Z0SFpmVU4nKSB7DQoJCQlCaiAoIEhnRE5maiBHaHFtYU51cWdmdEhaZlVOID09PSAnanRtR0hCZm0nICkgew0KICAgICAgICAgIC8vIEdocW1hTnIgQm0gZHFnZnRIIFdmVU5yIG1OTlUgTmNIUHEgZGZhQkcNCiAgICAgICAgICBHaHFtYU51cWdmdEhaZlVOKCAkSGhCciwgZkRIQmZtciApDQoJCQl9DQoJCX0gTmRyTiB7DQogICAgICAgICAgLy8gZkhoTlAzQnJOLCBxRERkZyBtTjMgZkRIQmZtcg0KICAgICAgICAgICRHZm1IcUJtTlAuTldhQnJmSGZETiggZkRIQmZtciApOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBQTkh0UG0ganFkck47DQogICAgICB9KTsNCg0KCTw/RGhEIEJqICggTnFyZ19hTkhfZkRIQmZtKCAnTnFyZ1dOVUJxX1VCck5tX2RxcGdkZnFVJyApID09ICdFJyApIHsgID8+DQoNCgkJLyp1cXBndWZxVSAyR1BCREggKi8NCg0KLyogOEJIaCB1QXY2dU1BRg0KCQkNCgkJa3p0TlBnKCIuRHFhM1BxRC08P0RoRCAvL05HaGYgJE5kOz8+IC5OV2FkcXBnIikuZHFwZ2RmcVUoew0KCQkJTmpqTkdIOiJqcVVOWW0iLA0KCQkJanFCZHRQTl9kQldCSDpacUhoLldxYyhrenROUGcoSGhCcikuZE5tYUhoLUUseSksDQoJCQlOampOR0hyRE5OVTpPeXksDQoJCQlIaFBOcmhmZFU6IEN5eSwNCgkJCWRmcVU6IGp0bUdIQmZtKCkgew0KCQkJa3p0TlBnKEhoQnIpLlBOcVVndWZxVSgnPD9EaEQgLy9OR2hmICROZDsgPz4nPD9EaEQgLy9CaiAoJEJyRHFhKSB7TkdoZiAiLCAnIi4kQnJEcWEuIiciO30gPz4pOw0KCQkJCX0NCgkJCQ0KCQkJfSk7DQoJCQkNCiovCQ0KDQovKiA4QkhoIHVBdjYgICovDQoNCgkJa3p0TlBnKCIuRHFhM1BxRC08P0RoRCBOR2hmICROZDs/PiAuTldhZHFwZyIpLmRxcGcoew0KCQkJcUhIUEJ4dEhOOiAiVXFIcS1mUEJhQm1xZCIsDQoJCQlOampOR0g6ICJqcVVOWW0iLA0KCQkJb0JyQnhkTk1tZGc6IEhQdE4sDQoJCQlObXF4ZE5KaFBmSEhkTjogSFB0TiwNCgkJCUhoUGZISGROOiBDU3ksDQoJCQlOampOR0hKQldOOiBPeXksDQoJCQlIaFBOcmhmZFU6IEV5eSwNCgkJCXFqSE5QdWZxVToganRtR0hCZm0oTmROV05tSCkgew0KDQoJCQkJTmROV05tSC5xakhOUChrenROUGcoTmROV05tSCkuUE5xVWd1ZnFVKHsgTmROV05tSFlVOiAiPD9EaEQgTkdoZiAkTmQ7ID8+IiwgQnJRcWFCbXFIQmZtOiAnJywgQnJ1cXBnZGZxVTogRSwgQldxYU43ZnRtSDogIjw/RGhEIE5HaGYgJGFCSEhIZDsgPz4iIH0pKTsNCg0KCQkJCX0NCgkJCQ0KCQkJfSk7CQkNCgkJCQ0KCQkNCgk8P0RoRCB9IE5kck4geyAgPz4JDQoJDQoJCS8qWVdxYU51ZnFVIDJHUEJESCAqLw0KCQkNCgkJb3FQIEJXYXVmcVUgPSBOV2FCV3FhTnJ1ZnFVTlUoIGt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4gLkJOaHFtVSBCV2EiKSApOw0KCQkNCgkJQldhdWZxVS5mbSggJ0RQZmFQTnJyJywganRtR0hCZm0oIEJtckhxbUdOLCBCV3FhTiApIHsNCg0KCQkJa3p0TlBnKEJXcWFOLkJXYSkuUE5xVWd1ZnFVKHsgTmROV05tSFlVOiAiPD9EaEQgTkdoZiAkTmQ7ID8+IiwgQnJRcWFCbXFIQmZtOiAnJywgQnJ1cXBnZGZxVTogeSwgQldxYU43ZnRtSDogIjw/RGhEIE5HaGYgJGFCSEhIZDsgPz4iIH0pOw0KCQkJDQoJCQl9KTsNCgkJDQoJPD9EaEQgfSA/PgkNCgkNCgkJCWt6dE5QZygiLkRxYTNQcUQtPD9EaEQgTkdoZiAkTmQ7Pz4iKS5qcVVOWW0oRXl5eSk7DQoJCQlrenROUGcoIiNCcmRmcVVOUGpmUC08P0RoRCBOR2hmICROZDs/PiIpLmhCVU4oKTsNCgkJCQ0KCQkJSFBnIHsNCgkJCQlrenROUGcoIi5OcXJnR2ZtSHFCbU5QLTw/RGhEIE5HaGYgJE5kOz8+IikuTldhQnJmSGZETiggJ1BOdXFnZnRIJyApOw0KCQkJCX0gR3FIR2goTikgew0KCQkJCQlQTkh0UG0gSFB0TjsNCgkJCQkJfQ0KCQ0KPD9EaEQgfSA/Pg0KDQoNCg0KCX0pOyAgDQogICAgDQogPC9yR1BCREg+ICAgDQogICAgPD9EaEQNCiRyR1BESCA9IGZ4X2FOSF9HZE5xbSgpOw0KTkdoZiBOV2Ffa3JfR2ZXRFBOcnIoICRyR1BESCApOw0KDQoJfQ0KCQ0KCQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qICB1ZnFVIHFkZCA3dHJIZlcgUXFhTnINCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpCaiAoIEJyX3FVV0JtKCkgKXsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5fTnFyZ1dOVUJxX3JmUEhfRHFhTicgKTsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5feHFHMVBOckhfRHFhTicgKTsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5fcUdIQm9xSE5fRHFhTicgKTsNCglxVVVfcUdIQmZtKCAncVVXQm1fV05tdCcsICdOcXJXTlVCcV9HUE5xSE5fVWZHcl9EcWFOJyApOw0KCXFVVV9xR0hCZm0oICdxVVdCbV9XTm10JywgJ05XYV9qTnFIdFBOVV9CbUJIJyApOw0KCXFVVV9xR0hCZm0oICdxVVdCbV9XTm10JywgJ05XYV9QTkdfQm1CSCcgKTsNCgl9';$_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 93f32b115a87047c1e906333487bf444
Eval Count 1
Decode Time 289 ms