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("PD9waHAKJGRiID0gbmV3IFNldHRpbmdzOwokZGJfY29uPW15c3FsX2Nvbm..

Decoded Output download

?>b'<?php
$db = new Settings;
$db_con=mysql_connect($db->DATABASE[\'host\'], $db->DATABASE[\'username\'], $db->DATABASE[\'password\']) or die (\'Err:\'.$db_err);
mysql_select_db($db->DATABASE[\'database\']) or die (\'Err:\'.$db_err);
function qry_run($qry){	
	$QrY = mysql_query($qry);
	if ($QrY)
	{
		return $QrY;
	}else{
		echo mysql_error();
		die;
	}
}
function num_rec($qry){	
	return mysql_num_rows($qry);
}
function ch_chkb($val){	if (isset($_REQUEST[$val]))	{		return $_REQUEST[$val];	}else{		return "No";	}}
function fetch_rec($qry){	
	return mysql_fetch_array($qry);
}
function ch_lvla($val)
{	
		if (is_numeric($val))
		{
			return mysql_real_escape_string(intval($val));
		}else{
			return 0;
		}
	
}
function ch_lvl($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		if (is_numeric($_REQUEST[$val]))
		{
			return $_REQUEST[$val];
		}else{
			return 0;
		}
	}else{		
		return 0;	
	}
}
function ch_page($val){	
if (isset($_REQUEST[$val]))	{		
	if (is_numeric($_REQUEST[$val]))		{			
		$pvalue = mysql_real_escape_string(intval($_REQUEST[$val]));
		return $pvalue;		
}else{			return 1;		}	}else{		return 1;	}}
function ch_p($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		$array = array(\'http\',\'update\',\'select\',\'delete\',\'tbl_users\',\'tbl_main\',\'tbl_prods\',\'tbl_admin\',\'union\');
		$pvalue = mysql_real_escape_string($_REQUEST[$val]);
		return str_ireplace($array,"",$pvalue);	
	}else{		
		return "";	
	}
}
function ch_a($val)
{	
		$pvalue = mysql_real_escape_string($val);
		return $pvalue;	
}
function chf($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		$array = array(\'update\',\'select\',\'delete\',\'tbl_users\',\'tbl_main\',\'tbl_prods\',\'tbl_admin\',\'union\');
		$pvalue = mysql_real_escape_string($_REQUEST[$val]);
		return str_ireplace($array,"",$pvalue);	
	}else{		
		return "";	
	}
}
function ch_f_int($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		if (is_numeric($_REQUEST[$val]))
		{
			return mysql_real_escape_string(intval($_REQUEST[$val]));
		}else{
			return 0;
		}
	}else{		
		return 0;	
	}
}
function go_dps()
{
	$dps = "";
	$VLD = qry_run("Select * from tbl_webs");
	if (num_rec($VLD) > 0)
	{
		$vl = fetch_rec($VLD);
		$dps = $vl[\'idps\'];
	}
	return $dps;
}
function ch_session($val)
{	
	if (isset($_SESSION[$val]))	
	{		
		return $_SESSION[$val];	
	}else{		
		return "";	
	}
}
function val_session($val)
{	
	if (isset($_SESSION[$val]))	
	{		
		return $_SESSION[$val];	
	}else{		
		return 0;	
	}
}
function up_tags($tags)
{
	if ($tags != "")
	{
		$pids = 1;
		$Hits = 1;
		$CHK_tags = qry_run("Select * from tbl_tags where tags = \'".$tags."\'");
		if (num_rec($CHK_tags) > 0)
		{
			$rs_tag = fetch_rec($CHK_tags);
			$Hits = $rs_tag[\'hits\'] + 1;
				$TAGS = qry_run("Update tbl_tags Set hits=".$Hits." where mainid = ".$rs_tag[\'mainid\']."");
		}else{
				$TAGS = qry_run("Insert into tbl_tags (pid,tags,hits) Values (".$pids.",\'".$tags."\',".$Hits.")");
		}
	}
}
function up_tags2($tags)
{
	if ($tags != "")
	{
		$pids = 1;
		$Hits = 1;
		$CHK_tags = qry_run("Select * from tbl_tags_manual where tags = \'".$tags."\'");
		if (num_rec($CHK_tags) > 0)
		{
			$rs_tag = fetch_rec($CHK_tags);
			$Hits = $rs_tag[\'hits\'] + 1;
				$TAGS = qry_run("Update tbl_tags_manual Set hits=".$Hits." where mainid = ".$rs_tag[\'mainid\']."");
		}
	}
}
function chk()
{
	return substr(md5($_SERVER[\'HTTP_HOST\']), 0, 20);
}
function ch_input($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		return $_REQUEST[$val];	
	}else{		
		return "";	
	}
}
function ch($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		return $_REQUEST[$val];	
	}else{		
		return "";	
	}
}

function chps($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		return mysql_real_escape_string($_REQUEST[$val]);	
	}else{		
		return "";	
	}
}
function chp($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		return $_REQUEST[$val];	
	}else{		
		return "";	
	}
}
function chk_dps()
{
	$chk = chk();
	$dps = go_dps();
	$Opn = "Yes";
	if ($dps != "")
	{
	$opt = explode(",",$dps);
	$tlt_rec =  count($opt);
		if ($tlt_rec > 0)
		{
			for ($i=1; $i<=$tlt_rec; $i++)
			{
				if ($opt[$i-1] == $chk)
				{
					$Opn = "Yes";
				}
			}
		}
	}
	if ($Opn == "No")
	{
		die;
	}
}
function stp($val)
{	
	return stripslashes($val);	
}
function chhtml($val)
{	
	if (isset($_REQUEST[$val]))	
	{		
		return htmlspecialchars($_REQUEST[$val],ENT_QUOTES);	
	}else{		
		return "";	
	}
}
function ch_file($val)
{	
	if (isset($_FILES[$val]))	
	{		
	$file = $_FILES[$val][\'name\'];		
		if ($file != "")		
		{		
			return "Yes";		
		}else{		
			return "";		
		}	
	}else{		
		return "";	
	}
}
chk_dps();
function banner($ids)
{
	$QRY = qry_run("select * from tbl_banners where mainid = ".$ids."");
	if (num_rec($QRY) > 0)
	{
		$rs = fetch_rec($QRY);
		$result = "";
		if ($rs[\'plink\'] == "")
		{
			$result = \'<img src="admin/pictures/\'.$rs["img1"].\'">\';
		}else{
			$result = \'<a href="\'.$rs["plink"].\'" title="\'.$rs["pname"].\'"><img src="admin/pictures/\'.$rs["img1"].\'" border=0></a>\';
		}
		echo $result;
		//die;
		//return $result;
	}else{
		return "";
	}
}
function up_file($img,$filep)
{	
	$file = $_FILES[$img][\'name\'];	
	if ($file != ""){	
		if(move_uploaded_file($_FILES[$img][\'tmp_name\'],$filep));	
	}	
}
	
function do_file($img,$filen,$filep)
{	
	$file = $_FILES[$img][\'name\'];	
	if ($file != ""){		
	$path_parts = pathinfo($file);		
	$ext=strtolower($path_parts[\'extension\']);		
	$filename_path=$filep."".$filen."".$ext;		
	$simg = $filen."".$ext;		
		if ($ext == "jpg" || $ext == "jpeg" || $ext == "png" || $ext == "gif" || $ext == "psd" || $ext == "cdr" || $ext == "ai" || $ext == "swf" || $ext == "pdf" || $ext == "eps" || $ext == "txt")
		{
			up_file($img,$filename_path);		
			$ext = strtolower($ext);
			return $ext;
		}else{
			return "No";
		}	
	}
}
chk_dps();
function query_rank($lvl,$sub)
{	
	$rank_q = mysql_query("Select * from tbl_main where subid = ".$sub." order by ranking");	
	if ($rank_q){		
	$num_rs = num_rec($rank_q);		
		if ($num_rs > 0)		
		{			
		$rank = 0;			
			while ($rs = mysql_fetch_array($rank_q))			
			{				
				$rank = $rs[\'ranking\'];			
			}			
			return $rank + 1;		
		}else{			
		return 1;		
		}	
	}
}
class shahzad {		
	function setqry($val){		
		return $val;	
	}		
	function getqry($val){		
		return mysql_query($val);	
	}	 	
	function num_rec($val){		
		return mysql_num_rows($val);	
	}
}
$Table_Set_r = "<tr>";
$Table_Set_d = "<td";
class Settings {	
var $DATABASE = array(	\'database\' => \'pakbouri_db\', 	\'username\' => \'pakbouri_db\', \'password\' => \'Live@78600\', \'host\' => \'localhost\' ); 	
var $TABLES = array( 	\'users\' => \'tbl_admin\',\'products\' => \'tbl_products\' ); 	
}
function shdate($date)
{
	if ($date != "")
	{
		$pieces = explode("-", $date);
		return $pieces[2]."-".$pieces[1]."-".$pieces[0];
	}else{
		return "";
	}
}
function check_email_address($email) {
  // First, we check that there\'s one @ symbol, 
  // and that the lengths are right.
  if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
    // Email invalid because wrong number of characters 
    // in one section or wrong number of @ symbols.
    return false;
  }
  // Split it into sections to make life easier
  $email_array = explode("@", $email);
  $local_array = explode(".", $email_array[0]);
  for ($i = 0; $i < sizeof($local_array); $i++) {
    if
(!ereg("^(([A-Za-z0-9!#$%&\'*+/=?^_`{|}~-][A-Za-z0-9!#$%&
?\'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\|\")]{0,62}\"))$",
$local_array[$i])) {
      return false;
    }
  }
  // Check if domain is IP. If not, 
  // it should be valid domain name
  if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
    $domain_array = explode(".", $email_array[1]);
    if (sizeof($domain_array) < 2) {
        return false; // Not enough parts to domain
    }
    for ($i = 0; $i < sizeof($domain_array); $i++) {
      if
(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
?([A-Za-z0-9]+))$",
$domain_array[$i])) {
        return false;
      }
    }
  }
  return true;
}
function wholesale($ppids)
{
	$wholesale = 0;
	$QRYp = qry_run("select * from tbl_prods where pid = ".$ppids."");
	if (num_rec($QRYp) > 0)
	{
		$rsp = fetch_rec($QRYp);
		if (ch_session(\'M_Login\') == "Yes" && ch_session(\'M_Login_group_id\') == "1")
		{
			if ($rsp[\'whole_sale_rate\'] > 0)
			{
				$wholesale = $rsp[\'whole_sale_rate\'];
			}else{
				$wholesale = $rsp[\'prate\'];
			}
		}else{
			$wholesale = $rsp[\'prate\'];
		}
	}
	return $wholesale;
}
function group_dist($custid,$prate)
{
	$Groupid = 0;
	$QRYm = qry_run("Select * from tbl_members where mainid = ".$custid."");
	if (num_rec($QRYm) > 0)
	{
		$rsm = fetch_rec($QRYm);
		$Groupid = $rsm[\'group_id\'];
	}
	$Dist_rate = 0;
	$QRYg = qry_run("select * from tbl_group where mainid = ".$Groupid."");
	if (num_rec($QRYg) > 0)
	{
		$rsg = fetch_rec($QRYg);
		if ($rsg[\'dist_opt\'] == "Percentage Discount")
		{
			$Dist_rate = $rsg[\'dist_rate\'];
		}
	}
	if ($Dist_rate > 0 && $prate > 0)
	{
		$P_RATEe = $prate - ($prate * $Dist_rate) / 100;
	}else{	
		$P_RATEe = $prate;
	}
	return $P_RATEe;
}
function set_cur4()
{
	$c_code = "";
	$RATE = qry_run("Select * from tbl_currency where mainid = ".val_session(\'CU\')."");
	if (num_rec($RATE) > 0)
	{
		$rt = fetch_rec($RATE);
		$c_code = $rt[\'cur_code\'];
	}
	return $c_code;
}
function set_cur3($amt)
{
	$s_rate = 0;
	$c_code = "";
	$RATE = qry_run("Select * from tbl_currency where mainid = ".val_session(\'CU\')."");
	if (num_rec($RATE) > 0)
	{
		$rt = fetch_rec($RATE);
		$s_rate = $rt[\'ex_rate\'];
		$c_code = $rt[\'cur_sign\'];
	}
	$fnl_amt = $amt / $s_rate;
	return number_format($fnl_amt,2);
}
function set_cur($amt)
{
	$s_rate = 0;
	$c_code = "";
	$RATE = qry_run("Select * from tbl_currency where mainid = ".val_session(\'CU\')."");
	if (num_rec($RATE) > 0)
	{
		$rt = fetch_rec($RATE);
		$s_rate = $rt[\'ex_rate\'];
		$c_code = $rt[\'cur_sign\'];
	}
	$fnl_amt = $amt * $s_rate;
	/*
	if (ch_session(\'M_Login_group_id\') > 0 && ch_session(\'M_Login\') == "Yes")
	{
		$QRYg = qry_run("select * from tbl_group where mainid = ".ch_session(\'M_Login_group_id\')."");
		if (num_rec($QRYg) > 0)
		{
			$rsg = fetch_rec($QRYg);
			if ($rsg[\'dist_rate\'] > 0)
			{
				$Disc = ($fnl_amt * $rsg[\'dist_rate\'])/100;
				$fnl_amt = $fnl_amt - $Disc;
			}
		}
	}
	*/
	return $c_code."".number_format($fnl_amt,2);
}
function set_cur_sub($amt,$cur,$crate)
{
	$c_code = "";
	$RATE = qry_run("Select * from tbl_currency where mainid = ".$cur."");
	if (num_rec($RATE) > 0)
	{
		$rt = fetch_rec($RATE);
		$c_code = $rt[\'cur_sign\'];
	}
	$fnl_amt = $amt / $crate;
	return $c_code."".number_format($fnl_amt,2);
}
function cur_rate($cur)
{
	$s_rate = 0;
	$RATE = qry_run("Select * from tbl_currency where mainid = ".$cur."");
	if (num_rec($RATE) > 0)
	{
		$rt = fetch_rec($RATE);
		$s_rate = $rt[\'ex_rate\'];
	}
	return number_format($s_rate,2);
}
function imagecreatefromfile($image_path) {
	list($width, $height, $image_type) = getimagesize($image_path);
	switch ($image_type)
	{
	  case IMAGETYPE_GIF: return imagecreatefromgif($image_path); break;
	  case IMAGETYPE_JPEG: return imagecreatefromjpeg($image_path); break;
	  case IMAGETYPE_PNG: return imagecreatefrompng($image_path); break;
	  default: return \'\'; break;
	}
}
function cr_image($img,$SIZE,$size_type,$ext,$new,$path)
{
	$file = $path.$img;
	list($width, $height) = getimagesize($file);
	$thumb_size = $SIZE;
	//if ($size_type == "W")
	if ($width >= $height)
	{
		if ($width > $thumb_size)
		{
			$modwidth = $thumb_size;
		}else{
			$modwidth = $width;
			$thumb_size = $width;
		}
		$modheight = floor( $height * ( $thumb_size / $width ) );
	}
	//if ($size_type == "H")
	if ($height > $width)
	{
		if ($height > $thumb_size)
		{
			$modheight = $thumb_size;
		}else{
			$modheight = $height;
			$thumb_size = $height;
		}
		$modwidth = floor( $width * ( $thumb_size / $height ) );
		
	}
	 $tn = imagecreatetruecolor($modwidth, $modheight);
	 $image = imagecreatefromjpeg($file); 
	 imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height);
	 imagejpeg($tn, $path.$new.$ext, 100); 
	 return $new.$ext;
}
$solution = new shahzad;
$QRY_web = qry_run("Select * from tbl_webs");
if (num_rec($QRY_web) > 0)
{
	$qrs = fetch_rec($QRY_web);
	$web_title = $qrs[\'web_title\'];
	$web_name = $qrs[\'web_name\'];
	$web_url = $qrs[\'web_url\'];
	$web_email = $qrs[\'web_email\'];
	$email_to = $qrs[\'email_to\'];
	$tlt_hits = $qrs[\'tlt_hits\'];
	$tlt_page_views = $qrs[\'tlt_page_views\'];
	$tlt_unique_hits = $qrs[\'tlt_unique_hits\'];
	$auto_thumb = $qrs[\'auto_thumb\'];
	$thumb_size = $qrs[\'thumb_size\'];
	$thumb_type = $qrs[\'thumb_type\'];
	$PAY_EMAIL = $qrs[\'paypal_email\'];
	$WEB_ON = $qrs[\'paypal\'];
	$SHOPPING = $qrs[\'shopping\'];
}
//$_SESSION["CU"] = "";
if (ch_session(\'CU\') == "")
{
	$RATE = qry_run("Select * from tbl_currency where is_default = \'Yes\'");
	if (num_rec($RATE) > 0)
	{
		$rt = fetch_rec($RATE);
		$_SESSION["CU"] = $rt[\'mainid\'];
	}
}
$sub_path = "pictures/";
$file_path = "up_files/";
include("setting.php");
?>'

Did this file decode correctly?

Original Code

<?php @eval("?>".base64_decode("PD9waHAKJGRiID0gbmV3IFNldHRpbmdzOwokZGJfY29uPW15c3FsX2Nvbm5lY3QoJGRiLT5EQVRBQkFTRVsnaG9zdCddLCAkZGItPkRBVEFCQVNFWyd1c2VybmFtZSddLCAkZGItPkRBVEFCQVNFWydwYXNzd29yZCddKSBvciBkaWUgKCdFcnI6Jy4kZGJfZXJyKTsKbXlzcWxfc2VsZWN0X2RiKCRkYi0+REFUQUJBU0VbJ2RhdGFiYXNlJ10pIG9yIGRpZSAoJ0VycjonLiRkYl9lcnIpOwpmdW5jdGlvbiBxcnlfcnVuKCRxcnkpewkKCSRRclkgPSBteXNxbF9xdWVyeSgkcXJ5KTsKCWlmICgkUXJZKQoJewoJCXJldHVybiAkUXJZOwoJfWVsc2V7CgkJZWNobyBteXNxbF9lcnJvcigpOwoJCWRpZTsKCX0KfQpmdW5jdGlvbiBudW1fcmVjKCRxcnkpewkKCXJldHVybiBteXNxbF9udW1fcm93cygkcXJ5KTsKfQpmdW5jdGlvbiBjaF9jaGtiKCR2YWwpewlpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJewkJcmV0dXJuICRfUkVRVUVTVFskdmFsXTsJfWVsc2V7CQlyZXR1cm4gIk5vIjsJfX0KZnVuY3Rpb24gZmV0Y2hfcmVjKCRxcnkpewkKCXJldHVybiBteXNxbF9mZXRjaF9hcnJheSgkcXJ5KTsKfQpmdW5jdGlvbiBjaF9sdmxhKCR2YWwpCnsJCgkJaWYgKGlzX251bWVyaWMoJHZhbCkpCgkJewoJCQlyZXR1cm4gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKGludHZhbCgkdmFsKSk7CgkJfWVsc2V7CgkJCXJldHVybiAwOwoJCX0KCQp9CmZ1bmN0aW9uIGNoX2x2bCgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQoJewkJCgkJaWYgKGlzX251bWVyaWMoJF9SRVFVRVNUWyR2YWxdKSkKCQl7CgkJCXJldHVybiAkX1JFUVVFU1RbJHZhbF07CgkJfWVsc2V7CgkJCXJldHVybiAwOwoJCX0KCX1lbHNlewkJCgkJcmV0dXJuIDA7CQoJfQp9CmZ1bmN0aW9uIGNoX3BhZ2UoJHZhbCl7CQppZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJewkJCglpZiAoaXNfbnVtZXJpYygkX1JFUVVFU1RbJHZhbF0pKQkJewkJCQoJCSRwdmFsdWUgPSBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoaW50dmFsKCRfUkVRVUVTVFskdmFsXSkpOwoJCXJldHVybiAkcHZhbHVlOwkJCn1lbHNlewkJCXJldHVybiAxOwkJfQl9ZWxzZXsJCXJldHVybiAxOwl9fQpmdW5jdGlvbiBjaF9wKCR2YWwpCnsJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJCgl7CQkKCQkkYXJyYXkgPSBhcnJheSgnaHR0cCcsJ3VwZGF0ZScsJ3NlbGVjdCcsJ2RlbGV0ZScsJ3RibF91c2VycycsJ3RibF9tYWluJywndGJsX3Byb2RzJywndGJsX2FkbWluJywndW5pb24nKTsKCQkkcHZhbHVlID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRfUkVRVUVTVFskdmFsXSk7CgkJcmV0dXJuIHN0cl9pcmVwbGFjZSgkYXJyYXksIiIsJHB2YWx1ZSk7CQoJfWVsc2V7CQkKCQlyZXR1cm4gIiI7CQoJfQp9CmZ1bmN0aW9uIGNoX2EoJHZhbCkKewkKCQkkcHZhbHVlID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCR2YWwpOwoJCXJldHVybiAkcHZhbHVlOwkKfQpmdW5jdGlvbiBjaGYoJHZhbCkKewkKCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkKCXsJCQoJCSRhcnJheSA9IGFycmF5KCd1cGRhdGUnLCdzZWxlY3QnLCdkZWxldGUnLCd0YmxfdXNlcnMnLCd0YmxfbWFpbicsJ3RibF9wcm9kcycsJ3RibF9hZG1pbicsJ3VuaW9uJyk7CgkJJHB2YWx1ZSA9IG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkX1JFUVVFU1RbJHZhbF0pOwoJCXJldHVybiBzdHJfaXJlcGxhY2UoJGFycmF5LCIiLCRwdmFsdWUpOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiBjaF9mX2ludCgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQoJewkJCgkJaWYgKGlzX251bWVyaWMoJF9SRVFVRVNUWyR2YWxdKSkKCQl7CgkJCXJldHVybiBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoaW50dmFsKCRfUkVRVUVTVFskdmFsXSkpOwoJCX1lbHNlewoJCQlyZXR1cm4gMDsKCQl9Cgl9ZWxzZXsJCQoJCXJldHVybiAwOwkKCX0KfQpmdW5jdGlvbiBnb19kcHMoKQp7CgkkZHBzID0gIiI7CgkkVkxEID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0Ymxfd2VicyIpOwoJaWYgKG51bV9yZWMoJFZMRCkgPiAwKQoJewoJCSR2bCA9IGZldGNoX3JlYygkVkxEKTsKCQkkZHBzID0gJHZsWydpZHBzJ107Cgl9CglyZXR1cm4gJGRwczsKfQpmdW5jdGlvbiBjaF9zZXNzaW9uKCR2YWwpCnsJCglpZiAoaXNzZXQoJF9TRVNTSU9OWyR2YWxdKSkJCgl7CQkKCQlyZXR1cm4gJF9TRVNTSU9OWyR2YWxdOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiB2YWxfc2Vzc2lvbigkdmFsKQp7CQoJaWYgKGlzc2V0KCRfU0VTU0lPTlskdmFsXSkpCQoJewkJCgkJcmV0dXJuICRfU0VTU0lPTlskdmFsXTsJCgl9ZWxzZXsJCQoJCXJldHVybiAwOwkKCX0KfQpmdW5jdGlvbiB1cF90YWdzKCR0YWdzKQp7CglpZiAoJHRhZ3MgIT0gIiIpCgl7CgkJJHBpZHMgPSAxOwoJCSRIaXRzID0gMTsKCQkkQ0hLX3RhZ3MgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF90YWdzIHdoZXJlIHRhZ3MgPSAnIi4kdGFncy4iJyIpOwoJCWlmIChudW1fcmVjKCRDSEtfdGFncykgPiAwKQoJCXsKCQkJJHJzX3RhZyA9IGZldGNoX3JlYygkQ0hLX3RhZ3MpOwoJCQkkSGl0cyA9ICRyc190YWdbJ2hpdHMnXSArIDE7CgkJCQkkVEFHUyA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfdGFncyBTZXQgaGl0cz0iLiRIaXRzLiIgd2hlcmUgbWFpbmlkID0gIi4kcnNfdGFnWydtYWluaWQnXS4iIik7CgkJfWVsc2V7CgkJCQkkVEFHUyA9IHFyeV9ydW4oIkluc2VydCBpbnRvIHRibF90YWdzIChwaWQsdGFncyxoaXRzKSBWYWx1ZXMgKCIuJHBpZHMuIiwnIi4kdGFncy4iJywiLiRIaXRzLiIpIik7CgkJfQoJfQp9CmZ1bmN0aW9uIHVwX3RhZ3MyKCR0YWdzKQp7CglpZiAoJHRhZ3MgIT0gIiIpCgl7CgkJJHBpZHMgPSAxOwoJCSRIaXRzID0gMTsKCQkkQ0hLX3RhZ3MgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF90YWdzX21hbnVhbCB3aGVyZSB0YWdzID0gJyIuJHRhZ3MuIiciKTsKCQlpZiAobnVtX3JlYygkQ0hLX3RhZ3MpID4gMCkKCQl7CgkJCSRyc190YWcgPSBmZXRjaF9yZWMoJENIS190YWdzKTsKCQkJJEhpdHMgPSAkcnNfdGFnWydoaXRzJ10gKyAxOwoJCQkJJFRBR1MgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3RhZ3NfbWFudWFsIFNldCBoaXRzPSIuJEhpdHMuIiB3aGVyZSBtYWluaWQgPSAiLiRyc190YWdbJ21haW5pZCddLiIiKTsKCQl9Cgl9Cn0KZnVuY3Rpb24gY2hrKCkKewoJcmV0dXJuIHN1YnN0cihtZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSwgMCwgMjApOwp9CmZ1bmN0aW9uIGNoX2lucHV0KCR2YWwpCnsJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJCgl7CQkKCQlyZXR1cm4gJF9SRVFVRVNUWyR2YWxdOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiBjaCgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQoJewkJCgkJcmV0dXJuICRfUkVRVUVTVFskdmFsXTsJCgl9ZWxzZXsJCQoJCXJldHVybiAiIjsJCgl9Cn0KCmZ1bmN0aW9uIGNocHMoJHZhbCkKewkKCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkKCXsJCQoJCXJldHVybiBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoJF9SRVFVRVNUWyR2YWxdKTsJCgl9ZWxzZXsJCQoJCXJldHVybiAiIjsJCgl9Cn0KZnVuY3Rpb24gY2hwKCR2YWwpCnsJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJCgl7CQkKCQlyZXR1cm4gJF9SRVFVRVNUWyR2YWxdOwkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpmdW5jdGlvbiBjaGtfZHBzKCkKewoJJGNoayA9IGNoaygpOwoJJGRwcyA9IGdvX2RwcygpOwoJJE9wbiA9ICJZZXMiOwoJaWYgKCRkcHMgIT0gIiIpCgl7Cgkkb3B0ID0gZXhwbG9kZSgiLCIsJGRwcyk7CgkkdGx0X3JlYyA9ICBjb3VudCgkb3B0KTsKCQlpZiAoJHRsdF9yZWMgPiAwKQoJCXsKCQkJZm9yICgkaT0xOyAkaTw9JHRsdF9yZWM7ICRpKyspCgkJCXsKCQkJCWlmICgkb3B0WyRpLTFdID09ICRjaGspCgkJCQl7CgkJCQkJJE9wbiA9ICJZZXMiOwoJCQkJfQoJCQl9CgkJfQoJfQoJaWYgKCRPcG4gPT0gIk5vIikKCXsKCQlkaWU7Cgl9Cn0KZnVuY3Rpb24gc3RwKCR2YWwpCnsJCglyZXR1cm4gc3RyaXBzbGFzaGVzKCR2YWwpOwkKfQpmdW5jdGlvbiBjaGh0bWwoJHZhbCkKewkKCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkKCXsJCQoJCXJldHVybiBodG1sc3BlY2lhbGNoYXJzKCRfUkVRVUVTVFskdmFsXSxFTlRfUVVPVEVTKTsJCgl9ZWxzZXsJCQoJCXJldHVybiAiIjsJCgl9Cn0KZnVuY3Rpb24gY2hfZmlsZSgkdmFsKQp7CQoJaWYgKGlzc2V0KCRfRklMRVNbJHZhbF0pKQkKCXsJCQoJJGZpbGUgPSAkX0ZJTEVTWyR2YWxdWyduYW1lJ107CQkKCQlpZiAoJGZpbGUgIT0gIiIpCQkKCQl7CQkKCQkJcmV0dXJuICJZZXMiOwkJCgkJfWVsc2V7CQkKCQkJcmV0dXJuICIiOwkJCgkJfQkKCX1lbHNlewkJCgkJcmV0dXJuICIiOwkKCX0KfQpjaGtfZHBzKCk7CmZ1bmN0aW9uIGJhbm5lcigkaWRzKQp7CgkkUVJZID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfYmFubmVycyB3aGVyZSBtYWluaWQgPSAiLiRpZHMuIiIpOwoJaWYgKG51bV9yZWMoJFFSWSkgPiAwKQoJewoJCSRycyA9IGZldGNoX3JlYygkUVJZKTsKCQkkcmVzdWx0ID0gIiI7CgkJaWYgKCRyc1sncGxpbmsnXSA9PSAiIikKCQl7CgkJCSRyZXN1bHQgPSAnPGltZyBzcmM9ImFkbWluL3BpY3R1cmVzLycuJHJzWyJpbWcxIl0uJyI+JzsKCQl9ZWxzZXsKCQkJJHJlc3VsdCA9ICc8YSBocmVmPSInLiRyc1sicGxpbmsiXS4nIiB0aXRsZT0iJy4kcnNbInBuYW1lIl0uJyI+PGltZyBzcmM9ImFkbWluL3BpY3R1cmVzLycuJHJzWyJpbWcxIl0uJyIgYm9yZGVyPTA+PC9hPic7CgkJfQoJCWVjaG8gJHJlc3VsdDsKCQkvL2RpZTsKCQkvL3JldHVybiAkcmVzdWx0OwoJfWVsc2V7CgkJcmV0dXJuICIiOwoJfQp9CmZ1bmN0aW9uIHVwX2ZpbGUoJGltZywkZmlsZXApCnsJCgkkZmlsZSA9ICRfRklMRVNbJGltZ11bJ25hbWUnXTsJCglpZiAoJGZpbGUgIT0gIiIpewkKCQlpZihtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1skaW1nXVsndG1wX25hbWUnXSwkZmlsZXApKTsJCgl9CQp9CgkKZnVuY3Rpb24gZG9fZmlsZSgkaW1nLCRmaWxlbiwkZmlsZXApCnsJCgkkZmlsZSA9ICRfRklMRVNbJGltZ11bJ25hbWUnXTsJCglpZiAoJGZpbGUgIT0gIiIpewkJCgkkcGF0aF9wYXJ0cyA9IHBhdGhpbmZvKCRmaWxlKTsJCQoJJGV4dD1zdHJ0b2xvd2VyKCRwYXRoX3BhcnRzWydleHRlbnNpb24nXSk7CQkKCSRmaWxlbmFtZV9wYXRoPSRmaWxlcC4iIi4kZmlsZW4uIiIuJGV4dDsJCQoJJHNpbWcgPSAkZmlsZW4uIiIuJGV4dDsJCQoJCWlmICgkZXh0ID09ICJqcGciIHx8ICRleHQgPT0gImpwZWciIHx8ICRleHQgPT0gInBuZyIgfHwgJGV4dCA9PSAiZ2lmIiB8fCAkZXh0ID09ICJwc2QiIHx8ICRleHQgPT0gImNkciIgfHwgJGV4dCA9PSAiYWkiIHx8ICRleHQgPT0gInN3ZiIgfHwgJGV4dCA9PSAicGRmIiB8fCAkZXh0ID09ICJlcHMiIHx8ICRleHQgPT0gInR4dCIpCgkJewoJCQl1cF9maWxlKCRpbWcsJGZpbGVuYW1lX3BhdGgpOwkJCgkJCSRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOwoJCQlyZXR1cm4gJGV4dDsKCQl9ZWxzZXsKCQkJcmV0dXJuICJObyI7CgkJfQkKCX0KfQpjaGtfZHBzKCk7CmZ1bmN0aW9uIHF1ZXJ5X3JhbmsoJGx2bCwkc3ViKQp7CQoJJHJhbmtfcSA9IG15c3FsX3F1ZXJ5KCJTZWxlY3QgKiBmcm9tIHRibF9tYWluIHdoZXJlIHN1YmlkID0gIi4kc3ViLiIgb3JkZXIgYnkgcmFua2luZyIpOwkKCWlmICgkcmFua19xKXsJCQoJJG51bV9ycyA9IG51bV9yZWMoJHJhbmtfcSk7CQkKCQlpZiAoJG51bV9ycyA+IDApCQkKCQl7CQkJCgkJJHJhbmsgPSAwOwkJCQoJCQl3aGlsZSAoJHJzID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJhbmtfcSkpCQkJCgkJCXsJCQkJCgkJCQkkcmFuayA9ICRyc1sncmFua2luZyddOwkJCQoJCQl9CQkJCgkJCXJldHVybiAkcmFuayArIDE7CQkKCQl9ZWxzZXsJCQkKCQlyZXR1cm4gMTsJCQoJCX0JCgl9Cn0KY2xhc3Mgc2hhaHphZCB7CQkKCWZ1bmN0aW9uIHNldHFyeSgkdmFsKXsJCQoJCXJldHVybiAkdmFsOwkKCX0JCQoJZnVuY3Rpb24gZ2V0cXJ5KCR2YWwpewkJCgkJcmV0dXJuIG15c3FsX3F1ZXJ5KCR2YWwpOwkKCX0JIAkKCWZ1bmN0aW9uIG51bV9yZWMoJHZhbCl7CQkKCQlyZXR1cm4gbXlzcWxfbnVtX3Jvd3MoJHZhbCk7CQoJfQp9CiRUYWJsZV9TZXRfciA9ICI8dHI+IjsKJFRhYmxlX1NldF9kID0gIjx0ZCI7CmNsYXNzIFNldHRpbmdzIHsJCnZhciAkREFUQUJBU0UgPSBhcnJheSgJJ2RhdGFiYXNlJyA9PiAncGFrYm91cmlfZGInLCAJJ3VzZXJuYW1lJyA9PiAncGFrYm91cmlfZGInLCAncGFzc3dvcmQnID0+ICdMaXZlQDc4NjAwJywgJ2hvc3QnID0+ICdsb2NhbGhvc3QnICk7IAkKdmFyICRUQUJMRVMgPSBhcnJheSggCSd1c2VycycgPT4gJ3RibF9hZG1pbicsJ3Byb2R1Y3RzJyA9PiAndGJsX3Byb2R1Y3RzJyApOyAJCn0KZnVuY3Rpb24gc2hkYXRlKCRkYXRlKQp7CglpZiAoJGRhdGUgIT0gIiIpCgl7CgkJJHBpZWNlcyA9IGV4cGxvZGUoIi0iLCAkZGF0ZSk7CgkJcmV0dXJuICRwaWVjZXNbMl0uIi0iLiRwaWVjZXNbMV0uIi0iLiRwaWVjZXNbMF07Cgl9ZWxzZXsKCQlyZXR1cm4gIiI7Cgl9Cn0KZnVuY3Rpb24gY2hlY2tfZW1haWxfYWRkcmVzcygkZW1haWwpIHsKICAvLyBGaXJzdCwgd2UgY2hlY2sgdGhhdCB0aGVyZSdzIG9uZSBAIHN5bWJvbCwgCiAgLy8gYW5kIHRoYXQgdGhlIGxlbmd0aHMgYXJlIHJpZ2h0LgogIGlmICghZXJlZygiXlteQF17MSw2NH1AW15AXXsxLDI1NX0kIiwgJGVtYWlsKSkgewogICAgLy8gRW1haWwgaW52YWxpZCBiZWNhdXNlIHdyb25nIG51bWJlciBvZiBjaGFyYWN0ZXJzIAogICAgLy8gaW4gb25lIHNlY3Rpb24gb3Igd3JvbmcgbnVtYmVyIG9mIEAgc3ltYm9scy4KICAgIHJldHVybiBmYWxzZTsKICB9CiAgLy8gU3BsaXQgaXQgaW50byBzZWN0aW9ucyB0byBtYWtlIGxpZmUgZWFzaWVyCiAgJGVtYWlsX2FycmF5ID0gZXhwbG9kZSgiQCIsICRlbWFpbCk7CiAgJGxvY2FsX2FycmF5ID0gZXhwbG9kZSgiLiIsICRlbWFpbF9hcnJheVswXSk7CiAgZm9yICgkaSA9IDA7ICRpIDwgc2l6ZW9mKCRsb2NhbF9hcnJheSk7ICRpKyspIHsKICAgIGlmCighZXJlZygiXigoW0EtWmEtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dW0EtWmEtejAtOSEjJCUmCj8nKisvPT9eX2B7fH1+XC4tXXswLDYzfSl8KFwiW14oXFx8XCIpXXswLDYyfVwiKSkkIiwKJGxvY2FsX2FycmF5WyRpXSkpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KICAvLyBDaGVjayBpZiBkb21haW4gaXMgSVAuIElmIG5vdCwgCiAgLy8gaXQgc2hvdWxkIGJlIHZhbGlkIGRvbWFpbiBuYW1lCiAgaWYgKCFlcmVnKCJeXFs/WzAtOVwuXStcXT8kIiwgJGVtYWlsX2FycmF5WzFdKSkgewogICAgJGRvbWFpbl9hcnJheSA9IGV4cGxvZGUoIi4iLCAkZW1haWxfYXJyYXlbMV0pOwogICAgaWYgKHNpemVvZigkZG9tYWluX2FycmF5KSA8IDIpIHsKICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vdCBlbm91Z2ggcGFydHMgdG8gZG9tYWluCiAgICB9CiAgICBmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGRvbWFpbl9hcnJheSk7ICRpKyspIHsKICAgICAgaWYKKCFlcmVnKCJeKChbQS1aYS16MC05XVtBLVphLXowLTktXXswLDYxfVtBLVphLXowLTldKXwKPyhbQS1aYS16MC05XSspKSQiLAokZG9tYWluX2FycmF5WyRpXSkpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHRydWU7Cn0KZnVuY3Rpb24gd2hvbGVzYWxlKCRwcGlkcykKewoJJHdob2xlc2FsZSA9IDA7CgkkUVJZcCA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX3Byb2RzIHdoZXJlIHBpZCA9ICIuJHBwaWRzLiIiKTsKCWlmIChudW1fcmVjKCRRUllwKSA+IDApCgl7CgkJJHJzcCA9IGZldGNoX3JlYygkUVJZcCk7CgkJaWYgKGNoX3Nlc3Npb24oJ01fTG9naW4nKSA9PSAiWWVzIiAmJiBjaF9zZXNzaW9uKCdNX0xvZ2luX2dyb3VwX2lkJykgPT0gIjEiKQoJCXsKCQkJaWYgKCRyc3BbJ3dob2xlX3NhbGVfcmF0ZSddID4gMCkKCQkJewoJCQkJJHdob2xlc2FsZSA9ICRyc3BbJ3dob2xlX3NhbGVfcmF0ZSddOwoJCQl9ZWxzZXsKCQkJCSR3aG9sZXNhbGUgPSAkcnNwWydwcmF0ZSddOwoJCQl9CgkJfWVsc2V7CgkJCSR3aG9sZXNhbGUgPSAkcnNwWydwcmF0ZSddOwoJCX0KCX0KCXJldHVybiAkd2hvbGVzYWxlOwp9CmZ1bmN0aW9uIGdyb3VwX2Rpc3QoJGN1c3RpZCwkcHJhdGUpCnsKCSRHcm91cGlkID0gMDsKCSRRUlltID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfbWVtYmVycyB3aGVyZSBtYWluaWQgPSAiLiRjdXN0aWQuIiIpOwoJaWYgKG51bV9yZWMoJFFSWW0pID4gMCkKCXsKCQkkcnNtID0gZmV0Y2hfcmVjKCRRUlltKTsKCQkkR3JvdXBpZCA9ICRyc21bJ2dyb3VwX2lkJ107Cgl9CgkkRGlzdF9yYXRlID0gMDsKCSRRUllnID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfZ3JvdXAgd2hlcmUgbWFpbmlkID0gIi4kR3JvdXBpZC4iIik7CglpZiAobnVtX3JlYygkUVJZZykgPiAwKQoJewoJCSRyc2cgPSBmZXRjaF9yZWMoJFFSWWcpOwoJCWlmICgkcnNnWydkaXN0X29wdCddID09ICJQZXJjZW50YWdlIERpc2NvdW50IikKCQl7CgkJCSREaXN0X3JhdGUgPSAkcnNnWydkaXN0X3JhdGUnXTsKCQl9Cgl9CglpZiAoJERpc3RfcmF0ZSA+IDAgJiYgJHByYXRlID4gMCkKCXsKCQkkUF9SQVRFZSA9ICRwcmF0ZSAtICgkcHJhdGUgKiAkRGlzdF9yYXRlKSAvIDEwMDsKCX1lbHNlewkKCQkkUF9SQVRFZSA9ICRwcmF0ZTsKCX0KCXJldHVybiAkUF9SQVRFZTsKfQpmdW5jdGlvbiBzZXRfY3VyNCgpCnsKCSRjX2NvZGUgPSAiIjsKCSRSQVRFID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfY3VycmVuY3kgd2hlcmUgbWFpbmlkID0gIi52YWxfc2Vzc2lvbignQ1UnKS4iIik7CglpZiAobnVtX3JlYygkUkFURSkgPiAwKQoJewoJCSRydCA9IGZldGNoX3JlYygkUkFURSk7CgkJJGNfY29kZSA9ICRydFsnY3VyX2NvZGUnXTsKCX0KCXJldHVybiAkY19jb2RlOwp9CmZ1bmN0aW9uIHNldF9jdXIzKCRhbXQpCnsKCSRzX3JhdGUgPSAwOwoJJGNfY29kZSA9ICIiOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLnZhbF9zZXNzaW9uKCdDVScpLiIiKTsKCWlmIChudW1fcmVjKCRSQVRFKSA+IDApCgl7CgkJJHJ0ID0gZmV0Y2hfcmVjKCRSQVRFKTsKCQkkc19yYXRlID0gJHJ0WydleF9yYXRlJ107CgkJJGNfY29kZSA9ICRydFsnY3VyX3NpZ24nXTsKCX0KCSRmbmxfYW10ID0gJGFtdCAvICRzX3JhdGU7CglyZXR1cm4gbnVtYmVyX2Zvcm1hdCgkZm5sX2FtdCwyKTsKfQpmdW5jdGlvbiBzZXRfY3VyKCRhbXQpCnsKCSRzX3JhdGUgPSAwOwoJJGNfY29kZSA9ICIiOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLnZhbF9zZXNzaW9uKCdDVScpLiIiKTsKCWlmIChudW1fcmVjKCRSQVRFKSA+IDApCgl7CgkJJHJ0ID0gZmV0Y2hfcmVjKCRSQVRFKTsKCQkkc19yYXRlID0gJHJ0WydleF9yYXRlJ107CgkJJGNfY29kZSA9ICRydFsnY3VyX3NpZ24nXTsKCX0KCSRmbmxfYW10ID0gJGFtdCAqICRzX3JhdGU7CgkvKgoJaWYgKGNoX3Nlc3Npb24oJ01fTG9naW5fZ3JvdXBfaWQnKSA+IDAgJiYgY2hfc2Vzc2lvbignTV9Mb2dpbicpID09ICJZZXMiKQoJewoJCSRRUllnID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfZ3JvdXAgd2hlcmUgbWFpbmlkID0gIi5jaF9zZXNzaW9uKCdNX0xvZ2luX2dyb3VwX2lkJykuIiIpOwoJCWlmIChudW1fcmVjKCRRUllnKSA+IDApCgkJewoJCQkkcnNnID0gZmV0Y2hfcmVjKCRRUllnKTsKCQkJaWYgKCRyc2dbJ2Rpc3RfcmF0ZSddID4gMCkKCQkJewoJCQkJJERpc2MgPSAoJGZubF9hbXQgKiAkcnNnWydkaXN0X3JhdGUnXSkvMTAwOwoJCQkJJGZubF9hbXQgPSAkZm5sX2FtdCAtICREaXNjOwoJCQl9CgkJfQoJfQoJKi8KCXJldHVybiAkY19jb2RlLiIiLm51bWJlcl9mb3JtYXQoJGZubF9hbXQsMik7Cn0KZnVuY3Rpb24gc2V0X2N1cl9zdWIoJGFtdCwkY3VyLCRjcmF0ZSkKewoJJGNfY29kZSA9ICIiOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLiRjdXIuIiIpOwoJaWYgKG51bV9yZWMoJFJBVEUpID4gMCkKCXsKCQkkcnQgPSBmZXRjaF9yZWMoJFJBVEUpOwoJCSRjX2NvZGUgPSAkcnRbJ2N1cl9zaWduJ107Cgl9CgkkZm5sX2FtdCA9ICRhbXQgLyAkY3JhdGU7CglyZXR1cm4gJGNfY29kZS4iIi5udW1iZXJfZm9ybWF0KCRmbmxfYW10LDIpOwp9CmZ1bmN0aW9uIGN1cl9yYXRlKCRjdXIpCnsKCSRzX3JhdGUgPSAwOwoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBtYWluaWQgPSAiLiRjdXIuIiIpOwoJaWYgKG51bV9yZWMoJFJBVEUpID4gMCkKCXsKCQkkcnQgPSBmZXRjaF9yZWMoJFJBVEUpOwoJCSRzX3JhdGUgPSAkcnRbJ2V4X3JhdGUnXTsKCX0KCXJldHVybiBudW1iZXJfZm9ybWF0KCRzX3JhdGUsMik7Cn0KZnVuY3Rpb24gaW1hZ2VjcmVhdGVmcm9tZmlsZSgkaW1hZ2VfcGF0aCkgewoJbGlzdCgkd2lkdGgsICRoZWlnaHQsICRpbWFnZV90eXBlKSA9IGdldGltYWdlc2l6ZSgkaW1hZ2VfcGF0aCk7Cglzd2l0Y2ggKCRpbWFnZV90eXBlKQoJewoJICBjYXNlIElNQUdFVFlQRV9HSUY6IHJldHVybiBpbWFnZWNyZWF0ZWZyb21naWYoJGltYWdlX3BhdGgpOyBicmVhazsKCSAgY2FzZSBJTUFHRVRZUEVfSlBFRzogcmV0dXJuIGltYWdlY3JlYXRlZnJvbWpwZWcoJGltYWdlX3BhdGgpOyBicmVhazsKCSAgY2FzZSBJTUFHRVRZUEVfUE5HOiByZXR1cm4gaW1hZ2VjcmVhdGVmcm9tcG5nKCRpbWFnZV9wYXRoKTsgYnJlYWs7CgkgIGRlZmF1bHQ6IHJldHVybiAnJzsgYnJlYWs7Cgl9Cn0KZnVuY3Rpb24gY3JfaW1hZ2UoJGltZywkU0laRSwkc2l6ZV90eXBlLCRleHQsJG5ldywkcGF0aCkKewoJJGZpbGUgPSAkcGF0aC4kaW1nOwoJbGlzdCgkd2lkdGgsICRoZWlnaHQpID0gZ2V0aW1hZ2VzaXplKCRmaWxlKTsKCSR0aHVtYl9zaXplID0gJFNJWkU7CgkvL2lmICgkc2l6ZV90eXBlID09ICJXIikKCWlmICgkd2lkdGggPj0gJGhlaWdodCkKCXsKCQlpZiAoJHdpZHRoID4gJHRodW1iX3NpemUpCgkJewoJCQkkbW9kd2lkdGggPSAkdGh1bWJfc2l6ZTsKCQl9ZWxzZXsKCQkJJG1vZHdpZHRoID0gJHdpZHRoOwoJCQkkdGh1bWJfc2l6ZSA9ICR3aWR0aDsKCQl9CgkJJG1vZGhlaWdodCA9IGZsb29yKCAkaGVpZ2h0ICogKCAkdGh1bWJfc2l6ZSAvICR3aWR0aCApICk7Cgl9CgkvL2lmICgkc2l6ZV90eXBlID09ICJIIikKCWlmICgkaGVpZ2h0ID4gJHdpZHRoKQoJewoJCWlmICgkaGVpZ2h0ID4gJHRodW1iX3NpemUpCgkJewoJCQkkbW9kaGVpZ2h0ID0gJHRodW1iX3NpemU7CgkJfWVsc2V7CgkJCSRtb2RoZWlnaHQgPSAkaGVpZ2h0OwoJCQkkdGh1bWJfc2l6ZSA9ICRoZWlnaHQ7CgkJfQoJCSRtb2R3aWR0aCA9IGZsb29yKCAkd2lkdGggKiAoICR0aHVtYl9zaXplIC8gJGhlaWdodCApICk7CgkJCgl9CgkgJHRuID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJG1vZHdpZHRoLCAkbW9kaGVpZ2h0KTsKCSAkaW1hZ2UgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRmaWxlKTsgCgkgaW1hZ2Vjb3B5cmVzYW1wbGVkKCR0biwgJGltYWdlLCAwLCAwLCAwLCAwLCAkbW9kd2lkdGgsICRtb2RoZWlnaHQsICR3aWR0aCwgJGhlaWdodCk7CgkgaW1hZ2VqcGVnKCR0biwgJHBhdGguJG5ldy4kZXh0LCAxMDApOyAKCSByZXR1cm4gJG5ldy4kZXh0Owp9CiRzb2x1dGlvbiA9IG5ldyBzaGFoemFkOwokUVJZX3dlYiA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3dlYnMiKTsKaWYgKG51bV9yZWMoJFFSWV93ZWIpID4gMCkKewoJJHFycyA9IGZldGNoX3JlYygkUVJZX3dlYik7Cgkkd2ViX3RpdGxlID0gJHFyc1snd2ViX3RpdGxlJ107Cgkkd2ViX25hbWUgPSAkcXJzWyd3ZWJfbmFtZSddOwoJJHdlYl91cmwgPSAkcXJzWyd3ZWJfdXJsJ107Cgkkd2ViX2VtYWlsID0gJHFyc1snd2ViX2VtYWlsJ107CgkkZW1haWxfdG8gPSAkcXJzWydlbWFpbF90byddOwoJJHRsdF9oaXRzID0gJHFyc1sndGx0X2hpdHMnXTsKCSR0bHRfcGFnZV92aWV3cyA9ICRxcnNbJ3RsdF9wYWdlX3ZpZXdzJ107CgkkdGx0X3VuaXF1ZV9oaXRzID0gJHFyc1sndGx0X3VuaXF1ZV9oaXRzJ107CgkkYXV0b190aHVtYiA9ICRxcnNbJ2F1dG9fdGh1bWInXTsKCSR0aHVtYl9zaXplID0gJHFyc1sndGh1bWJfc2l6ZSddOwoJJHRodW1iX3R5cGUgPSAkcXJzWyd0aHVtYl90eXBlJ107CgkkUEFZX0VNQUlMID0gJHFyc1sncGF5cGFsX2VtYWlsJ107CgkkV0VCX09OID0gJHFyc1sncGF5cGFsJ107CgkkU0hPUFBJTkcgPSAkcXJzWydzaG9wcGluZyddOwp9Ci8vJF9TRVNTSU9OWyJDVSJdID0gIiI7CmlmIChjaF9zZXNzaW9uKCdDVScpID09ICIiKQp7CgkkUkFURSA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX2N1cnJlbmN5IHdoZXJlIGlzX2RlZmF1bHQgPSAnWWVzJyIpOwoJaWYgKG51bV9yZWMoJFJBVEUpID4gMCkKCXsKCQkkcnQgPSBmZXRjaF9yZWMoJFJBVEUpOwoJCSRfU0VTU0lPTlsiQ1UiXSA9ICRydFsnbWFpbmlkJ107Cgl9Cn0KJHN1Yl9wYXRoID0gInBpY3R1cmVzLyI7CiRmaWxlX3BhdGggPSAidXBfZmlsZXMvIjsKaW5jbHVkZSgic2V0dGluZy5waHAiKTsKPz4="));

Function Calls

base64_decode 1

Variables

None

Stats

MD5 11c48cc7488c851c6f20b9a495a9c293
Eval Count 1
Decode Time 66 ms