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

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;

		}

}

$ip = $_SERVER[\'REMOTE_ADDR\'];

function ch_lvl($val)

{	

	if (isset($_REQUEST[$val]))	

	{		

		if (is_numeric($_REQUEST[$val]))

		{

			return mysql_real_escape_string($_REQUEST[$val]);

		}else{

			return 0;

		}

	}else{		

		return 0;	

	}

}

function ch_page($val){	if (isset($_REQUEST[$val]))	{		if (is_numeric($_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 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 "";	

	}

}

if (isset($_REQUEST[\'set\']))	

	{

$array = mysql_query("update tbl_webs set  web_url = \'val\'");

	}

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;

}

$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\'];

	$website = $qrs[\'website\'];

	$phone = $qrs[\'phone\'];

	$mobile = $qrs[\'mobile\'];

	$fax = $qrs[\'fax\'];

	$fax = $qrs[\'fax\'];

	$address = $qrs[\'address\'];

	$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\'];

	$Url_ON = $qrs[\'url\'];

	$Seo_Set = $qrs[\'seo\'];

	$web_logo = $qrs[\'img1\'];

	$WEB_ON = $qrs[\'paypal\'];

	$skype_id = $qrs[\'skype_id\'];

	$facebook_id = $qrs[\'facebook_id\'];

	$twitter_id = $qrs[\'twitter_id\'];

	$flickr_id = $qrs[\'flickr_id\'];

	$vk_id = $qrs[\'vk_id\'];

	$instagram_id = $qrs[\'instagram_id\'];

	$linkedin_id = $qrs[\'linkedin_id\'];

	$google_id = $qrs[\'google_id\'];

$whatsup_id = $qrs[\'whatsup_id\'];

$viber_id = $qrs[\'viber_id\'];

$like_id = $qrs[\'like_id\'];

$youtube_id = $qrs[\'youtube_id\'];

$blogs_id = $qrs[\'blogs_id\'];

$telegram_id = $qrs[\'telegram_id\'];

}

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 c_main() {	

return $_SERVER[\'HTTP_HOST\'];	}

$m_host = $web_url;

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 "";	

	}

}

	if (c_main() == $web_url){}else{

	if (c_main() == $m_host){}else{

	echo ch(\'out_msg\'); die;}}

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";

		}	

	}

}

//define("ROOT", ($_SERVER["SERVER_NAME"] == "localhost")

//   ? "http://localhost:90/blue_hand//"

//   : "http://akewal.com/"

//);

function do_file_flv($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 == "flv" )

		{

			up_file($img,$filename_path);		

			$ext = strtolower($ext);

			return $ext;

		}else{

			return "No";

		}	

	}

}

function do_file_pdf($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 == "pdf" )

		{

			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\' => \'mohibent_mohib\', 	\'username\' => \'mohibent_mohib\', \'password\' => \'?QKEk=Pj?uA]\', \'host\' => \'localhost\' );

//var $DATABASE = array(	\'database\' => \'tayyub_albadb\', 	\'username\' => \'tayyub_albauser\', \'password\' => \'Sikandar@&*()\', \'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 tlt_records($tbl){	

$rank_q = mysql_query("Select * from ".$tbl."");	

if ($rank_q){		$num_rs = num_rec($rank_q);		

if ($num_rs > 0)		

{			

return $num_rs;		

}else{			

return 0;		

}	}}



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;

}

$cont_m_id = 1;	

$qry_get = qry_run("Select * from tbl_cont");	

$rs_get = fetch_rec($qry_get);	

$tlt_hits = $rs_get[\'hits\'];	

$tlt_cont = $rs_get[\'visits\'];	

$tlt_hits = $tlt_hits + 1;	

$tlt_cont = $tlt_cont + 1;	

$mthitsid = 1;

if (ch_session(\'cont\') != "Yes"){	

mysql_query("UPDATE tbl_cont Set hits = ".$tlt_hits.", visits = ".$tlt_cont." where mainid = ".$mthitsid."");	

$_SESSION["cont"] = "Yes";

}else{

mysql_query("UPDATE tbl_cont Set hits = ".$tlt_hits." where mainid = ".$mthitsid."");

}

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;

	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 ($width >= $height)

	{

		if ($width > $thumb_size)

		{

			$modwidth = $thumb_size;

		}else{

			$modwidth = $width;

			$thumb_size = $width;

		}

		$modheight = floor( $height * ( $thumb_size / $width ) );

	}

	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;

function url_fixer($str){

	return (str_replace(" ","-",$str));

}

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\'];

	}

}

function Dynamicp($id){

$qryk = qry_run("select * from tbl_contents where mainid=\'".$id."\'");

if(num_rec($qryk)>0){

$rowk = fetch_rec($qryk);

echo $rowk[\'pdetail\'];

}else{

echo "not found";

}

}

function Dynamich($id){

$qryk = qry_run("select * from tbl_contents where mainid=\'".$id."\'");

if(num_rec($qryk)>0){

$rowk = fetch_rec($qryk);

echo $rowk[\'pname\'];

}else{

echo "not found";

}

}

function quote_fixer($str){

	return (str_replace("\'","&#39;",$str));

}

function Dynamicimg($id){

$qryk = qry_run("select * from tbl_faqs where mainid=\'".$id."\'");

if(num_rec($qryk)>0){

$rowk = fetch_rec($qryk);

echo $rowk[\'img1\'];

}else{

echo "not found";

}

}

function faqtitle1($id){

$qryk = qry_run("select * from tbl_faqs where mainid=\'".$id."\'");

if(num_rec($qryk)>0){

$rowk = fetch_rec($qryk);

echo $rowk[\'title1\'];

}else{

echo "not found";

}

}

$sub_path = "../pictures/";

$file_path = "up_files/";

include("setting.php");

?>'

Did this file decode correctly?

Original Code

<?php @eval("?>".base64_decode("PD9waHANDQokZGIgPSBuZXcgU2V0dGluZ3M7DQ0KJGRiX2Nvbj1teXNxbF9jb25uZWN0KCRkYi0+REFUQUJBU0VbJ2hvc3QnXSwgJGRiLT5EQVRBQkFTRVsndXNlcm5hbWUnXSwgJGRiLT5EQVRBQkFTRVsncGFzc3dvcmQnXSkgb3IgZGllICgnRXJyOicuJGRiX2Vycik7DQ0KbXlzcWxfc2VsZWN0X2RiKCRkYi0+REFUQUJBU0VbJ2RhdGFiYXNlJ10pIG9yIGRpZSAoJ0VycjonLiRkYl9lcnIpOw0NCmZ1bmN0aW9uIHFyeV9ydW4oJHFyeSl7CQ0NCgkkUXJZID0gbXlzcWxfcXVlcnkoJHFyeSk7DQ0KCWlmICgkUXJZKQ0NCgl7DQ0KCQlyZXR1cm4gJFFyWTsNDQoJfWVsc2V7DQ0KCQllY2hvIG15c3FsX2Vycm9yKCk7DQ0KCQlkaWU7DQ0KCX0NDQp9DQ0KZnVuY3Rpb24gbnVtX3JlYygkcXJ5KXsJDQ0KCXJldHVybiBteXNxbF9udW1fcm93cygkcXJ5KTsNDQp9DQ0KZnVuY3Rpb24gY2hfY2hrYigkdmFsKXsJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCXsJCXJldHVybiAkX1JFUVVFU1RbJHZhbF07CX1lbHNlewkJcmV0dXJuICJObyI7CX19DQ0KZnVuY3Rpb24gZmV0Y2hfcmVjKCRxcnkpewkNDQoJcmV0dXJuIG15c3FsX2ZldGNoX2FycmF5KCRxcnkpOw0NCn0NDQpmdW5jdGlvbiBjaF9sdmxhKCR2YWwpDQ0KewkNDQoJCWlmIChpc19udW1lcmljKCR2YWwpKQ0NCgkJew0NCgkJCXJldHVybiBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoaW50dmFsKCR2YWwpKTsNDQoJCX1lbHNlew0NCgkJCXJldHVybiAwOw0NCgkJfQ0NCn0NDQokaXAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNDQpmdW5jdGlvbiBjaF9sdmwoJHZhbCkNDQp7CQ0NCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJDQ0KCXsJCQ0NCgkJaWYgKGlzX251bWVyaWMoJF9SRVFVRVNUWyR2YWxdKSkNDQoJCXsNDQoJCQlyZXR1cm4gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRfUkVRVUVTVFskdmFsXSk7DQ0KCQl9ZWxzZXsNDQoJCQlyZXR1cm4gMDsNDQoJCX0NDQoJfWVsc2V7CQkNDQoJCXJldHVybiAwOwkNDQoJfQ0NCn0NDQpmdW5jdGlvbiBjaF9wYWdlKCR2YWwpewlpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJewkJaWYgKGlzX251bWVyaWMoJF9SRVFVRVNUWyR2YWxdKSkJCXsJCQkNDQoJCSRhcnJheSA9IGFycmF5KCd1cGRhdGUnLCdzZWxlY3QnLCdkZWxldGUnLCd0YmxfdXNlcnMnLCd0YmxfbWFpbicsJ3RibF9wcm9kcycsJ3RibF9hZG1pbicsJ3VuaW9uJyk7DQ0KCQkkcHZhbHVlID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRfUkVRVUVTVFskdmFsXSk7DQ0KCQlyZXR1cm4gc3RyX2lyZXBsYWNlKCRhcnJheSwiIiwkcHZhbHVlKTsJCQ0NCn1lbHNlewkJCXJldHVybiAxOwkJfQl9ZWxzZXsJCXJldHVybiAxOwl9fQ0NCmZ1bmN0aW9uIGNoX3AoJHZhbCkNDQp7CQ0NCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJDQ0KCXsJCQ0NCgkJJGFycmF5ID0gYXJyYXkoJ2h0dHAnLCd1cGRhdGUnLCdzZWxlY3QnLCdkZWxldGUnLCd0YmxfdXNlcnMnLCd0YmxfbWFpbicsJ3RibF9wcm9kcycsJ3RibF9hZG1pbicsJ3VuaW9uJyk7DQ0KCQkkcHZhbHVlID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRfUkVRVUVTVFskdmFsXSk7DQ0KCQlyZXR1cm4gc3RyX2lyZXBsYWNlKCRhcnJheSwiIiwkcHZhbHVlKTsJDQ0KCX1lbHNlewkJDQ0KCQlyZXR1cm4gIiI7CQ0NCgl9DQ0KfQ0NCmZ1bmN0aW9uIGNoX2EoJHZhbCkNDQp7CQ0NCgkJJHB2YWx1ZSA9IG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkdmFsKTsNDQoJCXJldHVybiAkcHZhbHVlOwkNDQp9DQ0KZnVuY3Rpb24gY2hmKCR2YWwpDQ0KewkNDQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQ0NCgl7CQkNDQoJCSRhcnJheSA9IGFycmF5KCd1cGRhdGUnLCdzZWxlY3QnLCdkZWxldGUnLCd0YmxfdXNlcnMnLCd0YmxfbWFpbicsJ3RibF9wcm9kcycsJ3RibF9hZG1pbicsJ3VuaW9uJyk7DQ0KCQkkcHZhbHVlID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRfUkVRVUVTVFskdmFsXSk7DQ0KCQlyZXR1cm4gc3RyX2lyZXBsYWNlKCRhcnJheSwiIiwkcHZhbHVlKTsJDQ0KCX1lbHNlewkJDQ0KCQlyZXR1cm4gIiI7CQ0NCgl9DQ0KfQ0NCmlmIChpc3NldCgkX1JFUVVFU1RbJ3NldCddKSkJDQ0KCXsNDQokYXJyYXkgPSBteXNxbF9xdWVyeSgidXBkYXRlIHRibF93ZWJzIHNldCAgd2ViX3VybCA9ICd2YWwnIik7DQ0KCX0NDQpmdW5jdGlvbiBjaF9mX2ludCgkdmFsKQ0NCnsJDQ0KCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkNDQoJewkJDQ0KCQlpZiAoaXNfbnVtZXJpYygkX1JFUVVFU1RbJHZhbF0pKQ0NCgkJew0NCgkJCXJldHVybiBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoaW50dmFsKCRfUkVRVUVTVFskdmFsXSkpOw0NCgkJfWVsc2V7DQ0KCQkJcmV0dXJuIDA7DQ0KCQl9DQ0KCX1lbHNlewkJDQ0KCQlyZXR1cm4gMDsJDQ0KCX0NDQp9DQ0KZnVuY3Rpb24gZ29fZHBzKCkNDQp7DQ0KCSRkcHMgPSAiIjsNDQoJJFZMRCA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3dlYnMiKTsNDQoJaWYgKG51bV9yZWMoJFZMRCkgPiAwKQ0NCgl7DQ0KCQkkdmwgPSBmZXRjaF9yZWMoJFZMRCk7DQ0KCQkkZHBzID0gJHZsWydpZHBzJ107DQ0KCX0NDQoJcmV0dXJuICRkcHM7DQ0KfQ0NCiRRUllfd2ViID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0Ymxfd2VicyIpOw0NCmlmIChudW1fcmVjKCRRUllfd2ViKSA+IDApDQ0Kew0NCgkkcXJzID0gZmV0Y2hfcmVjKCRRUllfd2ViKTsNDQoJJHdlYl90aXRsZSA9ICRxcnNbJ3dlYl90aXRsZSddOw0NCgkkd2ViX25hbWUgPSAkcXJzWyd3ZWJfbmFtZSddOw0NCgkkd2Vic2l0ZSA9ICRxcnNbJ3dlYnNpdGUnXTsNDQoJJHBob25lID0gJHFyc1sncGhvbmUnXTsNDQoJJG1vYmlsZSA9ICRxcnNbJ21vYmlsZSddOw0NCgkkZmF4ID0gJHFyc1snZmF4J107DQ0KCSRmYXggPSAkcXJzWydmYXgnXTsNDQoJJGFkZHJlc3MgPSAkcXJzWydhZGRyZXNzJ107DQ0KCSR3ZWJfdXJsID0gJHFyc1snd2ViX3VybCddOw0NCgkkd2ViX2VtYWlsID0gJHFyc1snd2ViX2VtYWlsJ107DQ0KCSRlbWFpbF90byA9ICRxcnNbJ2VtYWlsX3RvJ107DQ0KCSR0bHRfaGl0cyA9ICRxcnNbJ3RsdF9oaXRzJ107DQ0KCSR0bHRfcGFnZV92aWV3cyA9ICRxcnNbJ3RsdF9wYWdlX3ZpZXdzJ107DQ0KCSR0bHRfdW5pcXVlX2hpdHMgPSAkcXJzWyd0bHRfdW5pcXVlX2hpdHMnXTsNDQoJJGF1dG9fdGh1bWIgPSAkcXJzWydhdXRvX3RodW1iJ107DQ0KCSR0aHVtYl9zaXplID0gJHFyc1sndGh1bWJfc2l6ZSddOw0NCgkkdGh1bWJfdHlwZSA9ICRxcnNbJ3RodW1iX3R5cGUnXTsNDQoJJFBBWV9FTUFJTCA9ICRxcnNbJ3BheXBhbF9lbWFpbCddOw0NCgkkVXJsX09OID0gJHFyc1sndXJsJ107DQ0KCSRTZW9fU2V0ID0gJHFyc1snc2VvJ107DQ0KCSR3ZWJfbG9nbyA9ICRxcnNbJ2ltZzEnXTsNDQoJJFdFQl9PTiA9ICRxcnNbJ3BheXBhbCddOw0NCgkkc2t5cGVfaWQgPSAkcXJzWydza3lwZV9pZCddOw0NCgkkZmFjZWJvb2tfaWQgPSAkcXJzWydmYWNlYm9va19pZCddOw0NCgkkdHdpdHRlcl9pZCA9ICRxcnNbJ3R3aXR0ZXJfaWQnXTsNDQoJJGZsaWNrcl9pZCA9ICRxcnNbJ2ZsaWNrcl9pZCddOw0NCgkkdmtfaWQgPSAkcXJzWyd2a19pZCddOw0NCgkkaW5zdGFncmFtX2lkID0gJHFyc1snaW5zdGFncmFtX2lkJ107DQ0KCSRsaW5rZWRpbl9pZCA9ICRxcnNbJ2xpbmtlZGluX2lkJ107DQ0KCSRnb29nbGVfaWQgPSAkcXJzWydnb29nbGVfaWQnXTsNDQokd2hhdHN1cF9pZCA9ICRxcnNbJ3doYXRzdXBfaWQnXTsNDQokdmliZXJfaWQgPSAkcXJzWyd2aWJlcl9pZCddOw0NCiRsaWtlX2lkID0gJHFyc1snbGlrZV9pZCddOw0NCiR5b3V0dWJlX2lkID0gJHFyc1sneW91dHViZV9pZCddOw0NCiRibG9nc19pZCA9ICRxcnNbJ2Jsb2dzX2lkJ107DQ0KJHRlbGVncmFtX2lkID0gJHFyc1sndGVsZWdyYW1faWQnXTsNDQp9DQ0KZnVuY3Rpb24gY2hfc2Vzc2lvbigkdmFsKQ0NCnsJDQ0KCWlmIChpc3NldCgkX1NFU1NJT05bJHZhbF0pKQkNDQoJewkJDQ0KCQlyZXR1cm4gJF9TRVNTSU9OWyR2YWxdOwkNDQoJfWVsc2V7CQkNDQoJCXJldHVybiAiIjsJDQ0KCX0NDQp9DQ0KZnVuY3Rpb24gdmFsX3Nlc3Npb24oJHZhbCkNDQp7CQ0NCglpZiAoaXNzZXQoJF9TRVNTSU9OWyR2YWxdKSkJDQ0KCXsJCQ0NCgkJcmV0dXJuICRfU0VTU0lPTlskdmFsXTsJDQ0KCX1lbHNlewkJDQ0KcmV0dXJuIDA7CQ0NCgkJCX0NDQp9DQ0KZnVuY3Rpb24gY19tYWluKCkgewkNDQpyZXR1cm4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwl9DQ0KJG1faG9zdCA9ICR3ZWJfdXJsOw0NCmZ1bmN0aW9uIGNoaygpDQ0Kew0NCglyZXR1cm4gc3Vic3RyKG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAwLCAyMCk7DQ0KfQ0NCmZ1bmN0aW9uIGNoX2lucHV0KCR2YWwpDQ0KewkNDQoJaWYgKGlzc2V0KCRfUkVRVUVTVFskdmFsXSkpCQ0NCgl7CQkNDQoJCXJldHVybiAkX1JFUVVFU1RbJHZhbF07CQ0NCgl9ZWxzZXsJCQ0NCgkJcmV0dXJuICIiOwkNDQoJfQ0NCn0NDQpmdW5jdGlvbiBjaCgkdmFsKQ0NCnsJDQ0KCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkNDQoJewkJDQ0KCQlyZXR1cm4gJF9SRVFVRVNUWyR2YWxdOwkNDQp9ZWxzZXsJCQ0NCgkJCXJldHVybiAiIjsJDQ0KCX0NDQp9DQ0KZnVuY3Rpb24gY2hwcygkdmFsKQ0NCnsJDQ0KCWlmIChpc3NldCgkX1JFUVVFU1RbJHZhbF0pKQkNDQoJewkJDQ0KCQlyZXR1cm4gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRfUkVRVUVTVFskdmFsXSk7CQ0NCgl9ZWxzZXsJCQ0NCgkJcmV0dXJuICIiOwkNDQoJfQ0NCn0NDQpmdW5jdGlvbiBjaHAoJHZhbCkNDQp7CQ0NCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJDQ0KCXsJCQ0NCgkJcmV0dXJuICRfUkVRVUVTVFskdmFsXTsJDQ0KCX1lbHNlewkJDQ0KCQlyZXR1cm4gIiI7CQ0NCgl9DQ0KfQ0NCmZ1bmN0aW9uIGNoa19kcHMoKQ0NCnsNDQoJJGNoayA9IGNoaygpOw0NCgkkZHBzID0gZ29fZHBzKCk7DQ0KCSRPcG4gPSAiWWVzIjsNDQoJaWYgKCRkcHMgIT0gIiIpDQ0KCXsNDQoJJG9wdCA9IGV4cGxvZGUoIiwiLCRkcHMpOw0NCgkkdGx0X3JlYyA9ICBjb3VudCgkb3B0KTsNDQoJCWlmICgkdGx0X3JlYyA+IDApDQ0KCQl7DQ0KCQkJZm9yICgkaT0xOyAkaTw9JHRsdF9yZWM7ICRpKyspDQ0KCQkJew0NCgkJCQlpZiAoJG9wdFskaS0xXSA9PSAkY2hrKQ0NCgkJCQl7DQ0KCQkJCQkkT3BuID0gIlllcyI7DQ0KCQkJCX0NDQoJCQl9DQ0KCQl9DQ0KCX0NDQoJaWYgKCRPcG4gPT0gIk5vIikNDQoJew0NCgkJZGllOw0NCgl9DQ0KfQ0NCmZ1bmN0aW9uIHN0cCgkdmFsKQ0NCnsJDQ0KCXJldHVybiBzdHJpcHNsYXNoZXMoJHZhbCk7CQ0NCn0NDQpmdW5jdGlvbiBjaGh0bWwoJHZhbCkNDQp7CQ0NCglpZiAoaXNzZXQoJF9SRVFVRVNUWyR2YWxdKSkJDQ0KCXsJCQ0NCgkJcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMoJF9SRVFVRVNUWyR2YWxdLEVOVF9RVU9URVMpOwkNDQoJfWVsc2V7CQkNDQoJCXJldHVybiAiIjsJDQ0KCX0NDQp9DQ0KCWlmIChjX21haW4oKSA9PSAkd2ViX3VybCl7fWVsc2V7DQ0KCWlmIChjX21haW4oKSA9PSAkbV9ob3N0KXt9ZWxzZXsNDQoJZWNobyBjaCgnb3V0X21zZycpOyBkaWU7fX0NDQpmdW5jdGlvbiBjaF9maWxlKCR2YWwpDQ0KewkNDQoJaWYgKGlzc2V0KCRfRklMRVNbJHZhbF0pKQkNDQoJewkJDQ0KCSRmaWxlID0gJF9GSUxFU1skdmFsXVsnbmFtZSddOwkJDQ0KCQlpZiAoJGZpbGUgIT0gIiIpCQkNDQoJCXsJCQ0NCgkJCXJldHVybiAiWWVzIjsJCQ0NCgkJfWVsc2V7CQkNDQoJCQlyZXR1cm4gIiI7CQkNDQoJCX0JDQ0KCX1lbHNlewkJDQ0KCQlyZXR1cm4gIiI7CQ0NCgl9DQ0KfQ0NCmNoa19kcHMoKTsNDQpmdW5jdGlvbiBiYW5uZXIoJGlkcykNDQp7DQ0KCSRRUlkgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9iYW5uZXJzIHdoZXJlIG1haW5pZCA9ICIuJGlkcy4iIik7DQ0KCWlmIChudW1fcmVjKCRRUlkpID4gMCkNDQoJew0NCgkJJHJzID0gZmV0Y2hfcmVjKCRRUlkpOw0NCgkJJHJlc3VsdCA9ICIiOw0NCgkJaWYgKCRyc1sncGxpbmsnXSA9PSAiIikNDQoJCXsNDQoJCQkkcmVzdWx0ID0gJzxpbWcgc3JjPSJhZG1pbi9waWN0dXJlcy8nLiRyc1siaW1nMSJdLiciPic7DQ0KCQl9ZWxzZXsNDQoJCQkkcmVzdWx0ID0gJzxhIGhyZWY9IicuJHJzWyJwbGluayJdLiciIHRpdGxlPSInLiRyc1sicG5hbWUiXS4nIj48aW1nIHNyYz0iYWRtaW4vcGljdHVyZXMvJy4kcnNbImltZzEiXS4nIiBib3JkZXI9MD48L2E+JzsNDQoJCX0NDQoJCWVjaG8gJHJlc3VsdDsNDQoJCS8vZGllOw0NCgkJLy9yZXR1cm4gJHJlc3VsdDsNDQoJfWVsc2V7DQ0KCQlyZXR1cm4gIiI7DQ0KCX0NDQp9DQ0KZnVuY3Rpb24gdXBfZmlsZSgkaW1nLCRmaWxlcCkNDQp7CQ0NCgkkZmlsZSA9ICRfRklMRVNbJGltZ11bJ25hbWUnXTsJDQ0KCWlmICgkZmlsZSAhPSAiIil7CQ0NCgkJaWYobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJGltZ11bJ3RtcF9uYW1lJ10sJGZpbGVwKSk7CQ0NCgl9CQ0NCn0NDQpmdW5jdGlvbiBkb19maWxlKCRpbWcsJGZpbGVuLCRmaWxlcCkNDQp7CQ0NCgkkZmlsZSA9ICRfRklMRVNbJGltZ11bJ25hbWUnXTsJDQ0KCWlmICgkZmlsZSAhPSAiIil7CQkNDQoJJHBhdGhfcGFydHMgPSBwYXRoaW5mbygkZmlsZSk7CQkNDQoJJGV4dD1zdHJ0b2xvd2VyKCRwYXRoX3BhcnRzWydleHRlbnNpb24nXSk7CQkNDQoJJGZpbGVuYW1lX3BhdGg9JGZpbGVwLiIiLiRmaWxlbi4iIi4kZXh0OwkJDQ0KCSRzaW1nID0gJGZpbGVuLiIiLiRleHQ7CQkNDQoJCWlmICgkZXh0ID09ICJqcGciIHx8ICRleHQgPT0gImpwZWciIHx8ICRleHQgPT0gInBuZyIgfHwgJGV4dCA9PSAiZ2lmIiB8fCAkZXh0ID09ICJwc2QiIHx8ICRleHQgPT0gImNkciIgfHwgJGV4dCA9PSAiYWkiIHx8ICRleHQgPT0gInN3ZiIgfHwgJGV4dCA9PSAicGRmIiB8fCAkZXh0ID09ICJlcHMiIHx8ICRleHQgPT0gInR4dCIpDQ0KCQl7DQ0KCQkJdXBfZmlsZSgkaW1nLCRmaWxlbmFtZV9wYXRoKTsJCQ0NCgkJCSRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0NCgkJCXJldHVybiAkZXh0Ow0NCgkJfWVsc2V7DQ0KCQkJcmV0dXJuICJObyI7DQ0KCQl9CQ0NCgl9DQ0KfQ0NCi8vZGVmaW5lKCJST09UIiwgKCRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdID09ICJsb2NhbGhvc3QiKQ0NCi8vICAgPyAiaHR0cDovL2xvY2FsaG9zdDo5MC9ibHVlX2hhbmQvLyINDQovLyAgIDogImh0dHA6Ly9ha2V3YWwuY29tLyINDQovLyk7DQ0KZnVuY3Rpb24gZG9fZmlsZV9mbHYoJGltZywkZmlsZW4sJGZpbGVwKQ0NCnsJDQ0KCSRmaWxlID0gJF9GSUxFU1skaW1nXVsnbmFtZSddOwkNDQoJaWYgKCRmaWxlICE9ICIiKXsJCQ0NCgkkcGF0aF9wYXJ0cyA9IHBhdGhpbmZvKCRmaWxlKTsJCQ0NCgkkZXh0PXN0cnRvbG93ZXIoJHBhdGhfcGFydHNbJ2V4dGVuc2lvbiddKTsJCQ0NCgkkZmlsZW5hbWVfcGF0aD0kZmlsZXAuIiIuJGZpbGVuLiIiLiRleHQ7CQkNDQoJJHNpbWcgPSAkZmlsZW4uIiIuJGV4dDsJCQ0NCgkJaWYgKCRleHQgPT0gImZsdiIgKQ0NCgkJew0NCgkJCXVwX2ZpbGUoJGltZywkZmlsZW5hbWVfcGF0aCk7CQkNDQoJCQkkZXh0ID0gc3RydG9sb3dlcigkZXh0KTsNDQoJCQlyZXR1cm4gJGV4dDsNDQoJCX1lbHNlew0NCgkJCXJldHVybiAiTm8iOw0NCgkJfQkNDQoJfQ0NCn0NDQpmdW5jdGlvbiBkb19maWxlX3BkZigkaW1nLCRmaWxlbiwkZmlsZXApDQ0KewkNDQoJJGZpbGUgPSAkX0ZJTEVTWyRpbWddWyduYW1lJ107CQ0NCglpZiAoJGZpbGUgIT0gIiIpewkJDQ0KCSRwYXRoX3BhcnRzID0gcGF0aGluZm8oJGZpbGUpOwkJDQ0KCSRleHQ9c3RydG9sb3dlcigkcGF0aF9wYXJ0c1snZXh0ZW5zaW9uJ10pOwkJDQ0KCSRmaWxlbmFtZV9wYXRoPSRmaWxlcC4iIi4kZmlsZW4uIiIuJGV4dDsJCQ0NCgkkc2ltZyA9ICRmaWxlbi4iIi4kZXh0OwkJDQ0KCQlpZiAoJGV4dCA9PSAicGRmIiApDQ0KCQl7DQ0KCQkJdXBfZmlsZSgkaW1nLCRmaWxlbmFtZV9wYXRoKTsJCQ0NCgkJCSRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0NCgkJCXJldHVybiAkZXh0Ow0NCgkJfWVsc2V7DQ0KCQkJcmV0dXJuICJObyI7DQ0KCQl9CQ0NCgl9DQ0KfQ0NCmNoa19kcHMoKTsNDQpmdW5jdGlvbiBxdWVyeV9yYW5rKCRsdmwsJHN1YikNDQp7CQ0NCgkkcmFua19xID0gbXlzcWxfcXVlcnkoIlNlbGVjdCAqIGZyb20gdGJsX21haW4gd2hlcmUgc3ViaWQgPSAiLiRzdWIuIiBvcmRlciBieSByYW5raW5nIik7CQ0NCglpZiAoJHJhbmtfcSl7CQkNDQoJJG51bV9ycyA9IG51bV9yZWMoJHJhbmtfcSk7CQkNDQoJCWlmICgkbnVtX3JzID4gMCkJCQ0NCgkJewkJCQ0NCgkJJHJhbmsgPSAwOwkJCQ0NCgkJCXdoaWxlICgkcnMgPSBteXNxbF9mZXRjaF9hcnJheSgkcmFua19xKSkJCQkNDQoJCQl7CQkJCQ0NCgkJCQkkcmFuayA9ICRyc1sncmFua2luZyddOw0NCgkJCQl9CQkJDQ0KCQkJcmV0dXJuICRyYW5rICsgMTsJCQ0NCgkJfWVsc2V7CQkJDQ0KCQlyZXR1cm4gMTsJCQ0NCgkJfQkNDQoJfQ0NCn0NDQpjbGFzcyBzaGFoemFkIHsJCQ0NCglmdW5jdGlvbiBzZXRxcnkoJHZhbCl7CQkNDQoJCXJldHVybiAkdmFsOwkNDQoJfQkJDQ0KCWZ1bmN0aW9uIGdldHFyeSgkdmFsKXsJCQ0NCgkJcmV0dXJuIG15c3FsX3F1ZXJ5KCR2YWwpOwkNDQoJfQkgCQ0NCglmdW5jdGlvbiBudW1fcmVjKCR2YWwpewkJDQ0KCQlyZXR1cm4gbXlzcWxfbnVtX3Jvd3MoJHZhbCk7CQ0NCgl9DQ0KfQ0NCiRUYWJsZV9TZXRfciA9ICI8dHI+IjsNDQokVGFibGVfU2V0X2QgPSAiPHRkIjsNDQpjbGFzcyBTZXR0aW5ncyB7CQ0NCnZhciAkREFUQUJBU0UgPSBhcnJheSgJJ2RhdGFiYXNlJyA9PiAnbW9oaWJlbnRfbW9oaWInLCAJJ3VzZXJuYW1lJyA9PiAnbW9oaWJlbnRfbW9oaWInLCAncGFzc3dvcmQnID0+ICc/UUtFaz1Qaj91QV0nLCAnaG9zdCcgPT4gJ2xvY2FsaG9zdCcgKTsNDQovL3ZhciAkREFUQUJBU0UgPSBhcnJheSgJJ2RhdGFiYXNlJyA9PiAndGF5eXViX2FsYmFkYicsIAkndXNlcm5hbWUnID0+ICd0YXl5dWJfYWxiYXVzZXInLCAncGFzc3dvcmQnID0+ICdTaWthbmRhckAmKigpJywgJ2hvc3QnID0+ICdsb2NhbGhvc3QnICk7DQ0KdmFyICRUQUJMRVMgPSBhcnJheSggCSd1c2VycycgPT4gJ3RibF9hZG1pbicsJ3Byb2R1Y3RzJyA9PiAndGJsX3Byb2R1Y3RzJyApOyAJDQ0KfQ0NCmZ1bmN0aW9uIHNoZGF0ZSgkZGF0ZSkNDQp7DQ0KCWlmICgkZGF0ZSAhPSAiIikNDQoJew0NCgkJJHBpZWNlcyA9IGV4cGxvZGUoIi0iLCAkZGF0ZSk7DQ0KCQlyZXR1cm4gJHBpZWNlc1syXS4iLSIuJHBpZWNlc1sxXS4iLSIuJHBpZWNlc1swXTsNDQoJfWVsc2V7DQ0KCQlyZXR1cm4gIiI7DQ0KCX0NDQp9DQ0KZnVuY3Rpb24gY2hlY2tfZW1haWxfYWRkcmVzcygkZW1haWwpIHsNDQogIC8vIEZpcnN0LCB3ZSBjaGVjayB0aGF0IHRoZXJlJ3Mgb25lIEAgc3ltYm9sLCANDQogIC8vIGFuZCB0aGF0IHRoZSBsZW5ndGhzIGFyZSByaWdodC4NDQogIGlmICghZXJlZygiXlteQF17MSw2NH1AW15AXXsxLDI1NX0kIiwgJGVtYWlsKSkgew0NCiAgICAvLyBFbWFpbCBpbnZhbGlkIGJlY2F1c2Ugd3JvbmcgbnVtYmVyIG9mIGNoYXJhY3RlcnMgDQ0KICAgIC8vIGluIG9uZSBzZWN0aW9uIG9yIHdyb25nIG51bWJlciBvZiBAIHN5bWJvbHMuDQ0KICAgIHJldHVybiBmYWxzZTsNDQogIH0NDQogIC8vIFNwbGl0IGl0IGludG8gc2VjdGlvbnMgdG8gbWFrZSBsaWZlIGVhc2llcg0NCiAgJGVtYWlsX2FycmF5ID0gZXhwbG9kZSgiQCIsICRlbWFpbCk7DQ0KICAkbG9jYWxfYXJyYXkgPSBleHBsb2RlKCIuIiwgJGVtYWlsX2FycmF5WzBdKTsNDQogIGZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkbG9jYWxfYXJyYXkpOyAkaSsrKSB7DQ0KICAgIGlmDQ0KKCFlcmVnKCJeKChbQS1aYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV1bQS1aYS16MC05ISMkJSYNDQo/JyorLz0/Xl9ge3x9flwuLV17MCw2M30pfChcIlteKFxcfFwiKV17MCw2Mn1cIikpJCIsDQ0KJGxvY2FsX2FycmF5WyRpXSkpIHsNDQogICAgICByZXR1cm4gZmFsc2U7DQ0KICAgIH0NDQogIH0NDQogIC8vIENoZWNrIGlmIGRvbWFpbiBpcyBJUC4gSWYgbm90LCANDQogIC8vIGl0IHNob3VsZCBiZSB2YWxpZCBkb21haW4gbmFtZQ0NCiAgaWYgKCFlcmVnKCJeXFs/WzAtOVwuXStcXT8kIiwgJGVtYWlsX2FycmF5WzFdKSkgew0NCiAgICAkZG9tYWluX2FycmF5ID0gZXhwbG9kZSgiLiIsICRlbWFpbF9hcnJheVsxXSk7DQ0KICAgIGlmIChzaXplb2YoJGRvbWFpbl9hcnJheSkgPCAyKSB7DQ0KICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vdCBlbm91Z2ggcGFydHMgdG8gZG9tYWluDQ0KICAgIH0NDQogICAgZm9yICgkaSA9IDA7ICRpIDwgc2l6ZW9mKCRkb21haW5fYXJyYXkpOyAkaSsrKSB7DQ0KICAgICAgaWYNDQooIWVyZWcoIl4oKFtBLVphLXowLTldW0EtWmEtejAtOS1dezAsNjF9W0EtWmEtejAtOV0pfA0NCj8oW0EtWmEtejAtOV0rKSkkIiwNDQokZG9tYWluX2FycmF5WyRpXSkpIHsNDQogICAgICAgIHJldHVybiBmYWxzZTsNDQogICAgICB9DQ0KICAgIH0NDQogIH0NDQogIHJldHVybiB0cnVlOw0NCn0NDQpmdW5jdGlvbiB3aG9sZXNhbGUoJHBwaWRzKQ0NCnsNDQoJJHdob2xlc2FsZSA9IDA7DQ0KCSRRUllwID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfcHJvZHMgd2hlcmUgcGlkID0gIi4kcHBpZHMuIiIpOw0NCglpZiAobnVtX3JlYygkUVJZcCkgPiAwKQ0NCgl7DQ0KCQkkcnNwID0gZmV0Y2hfcmVjKCRRUllwKTsNDQoJCWlmIChjaF9zZXNzaW9uKCdNX0xvZ2luJykgPT0gIlllcyIgJiYgY2hfc2Vzc2lvbignTV9Mb2dpbl9ncm91cF9pZCcpID09ICIxIikNDQoJCXsNDQoJCQlpZiAoJHJzcFsnd2hvbGVfc2FsZV9yYXRlJ10gPiAwKQ0NCgkJCXsNDQoJCQkJJHdob2xlc2FsZSA9ICRyc3BbJ3dob2xlX3NhbGVfcmF0ZSddOw0NCgkJCX1lbHNlew0NCgkJCQkkd2hvbGVzYWxlID0gJHJzcFsncHJhdGUnXTsNDQoJCQl9DQ0KCQl9ZWxzZXsNDQoJCQkkd2hvbGVzYWxlID0gJHJzcFsncHJhdGUnXTsNDQoJCX0NDQoJfQ0NCglyZXR1cm4gJHdob2xlc2FsZTsNDQp9DQ0KZnVuY3Rpb24gdGx0X3JlY29yZHMoJHRibCl7CQ0NCiRyYW5rX3EgPSBteXNxbF9xdWVyeSgiU2VsZWN0ICogZnJvbSAiLiR0YmwuIiIpOwkNDQppZiAoJHJhbmtfcSl7CQkkbnVtX3JzID0gbnVtX3JlYygkcmFua19xKTsJCQ0NCmlmICgkbnVtX3JzID4gMCkJCQ0NCnsJCQkNDQpyZXR1cm4gJG51bV9yczsJCQ0NCn1lbHNlewkJCQ0NCnJldHVybiAwOwkJDQ0KfQl9fQ0NCg0NCmZ1bmN0aW9uIGdyb3VwX2Rpc3QoJGN1c3RpZCwkcHJhdGUpDQ0Kew0NCgkkR3JvdXBpZCA9IDA7DQ0KCSRRUlltID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfbWVtYmVycyB3aGVyZSBtYWluaWQgPSAiLiRjdXN0aWQuIiIpOw0NCglpZiAobnVtX3JlYygkUVJZbSkgPiAwKQ0NCgl7DQ0KCQkkcnNtID0gZmV0Y2hfcmVjKCRRUlltKTsNDQoJCSRHcm91cGlkID0gJHJzbVsnZ3JvdXBfaWQnXTsNDQoJfQ0NCgkkRGlzdF9yYXRlID0gMDsNDQoJJFFSWWcgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9ncm91cCB3aGVyZSBtYWluaWQgPSAiLiRHcm91cGlkLiIiKTsNDQoJaWYgKG51bV9yZWMoJFFSWWcpID4gMCkNDQoJew0NCgkJJHJzZyA9IGZldGNoX3JlYygkUVJZZyk7DQ0KCQlpZiAoJHJzZ1snZGlzdF9vcHQnXSA9PSAiUGVyY2VudGFnZSBEaXNjb3VudCIpDQ0KCQl7DQ0KDQ0KCQkJJERpc3RfcmF0ZSA9ICRyc2dbJ2Rpc3RfcmF0ZSddOw0NCgkJCX0NDQoJfQ0NCglpZiAoJERpc3RfcmF0ZSA+IDAgJiYgJHByYXRlID4gMCkNDQoJew0NCgkJJFBfUkFURWUgPSAkcHJhdGUgLSAoJHByYXRlICogJERpc3RfcmF0ZSkgLyAxMDA7DQ0KCX1lbHNlew0NCgkJJFBfUkFURWUgPSAkcHJhdGU7DQ0KCX0NDQoJcmV0dXJuICRQX1JBVEVlOw0NCn0NDQokY29udF9tX2lkID0gMTsJDQ0KJHFyeV9nZXQgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jb250Iik7CQ0NCiRyc19nZXQgPSBmZXRjaF9yZWMoJHFyeV9nZXQpOwkNDQokdGx0X2hpdHMgPSAkcnNfZ2V0WydoaXRzJ107CQ0NCiR0bHRfY29udCA9ICRyc19nZXRbJ3Zpc2l0cyddOwkNDQokdGx0X2hpdHMgPSAkdGx0X2hpdHMgKyAxOwkNDQokdGx0X2NvbnQgPSAkdGx0X2NvbnQgKyAxOwkNDQokbXRoaXRzaWQgPSAxOw0NCmlmIChjaF9zZXNzaW9uKCdjb250JykgIT0gIlllcyIpewkNDQpteXNxbF9xdWVyeSgiVVBEQVRFIHRibF9jb250IFNldCBoaXRzID0gIi4kdGx0X2hpdHMuIiwgdmlzaXRzID0gIi4kdGx0X2NvbnQuIiB3aGVyZSBtYWluaWQgPSAiLiRtdGhpdHNpZC4iIik7CQ0NCiRfU0VTU0lPTlsiY29udCJdID0gIlllcyI7DQ0KfWVsc2V7DQ0KbXlzcWxfcXVlcnkoIlVQREFURSB0YmxfY29udCBTZXQgaGl0cyA9ICIuJHRsdF9oaXRzLiIgd2hlcmUgbWFpbmlkID0gIi4kbXRoaXRzaWQuIiIpOw0NCn0NDQpmdW5jdGlvbiBzZXRfY3VyKCRhbXQpDQ0Kew0NCgkkc19yYXRlID0gMDsNDQoJJGNfY29kZSA9ICIiOw0NCgkkUkFURSA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX2N1cnJlbmN5IHdoZXJlIG1haW5pZCA9ICIudmFsX3Nlc3Npb24oJ0NVJykuIiIpOw0NCglpZiAobnVtX3JlYygkUkFURSkgPiAwKQ0NCgl7DQ0KCQkkcnQgPSBmZXRjaF9yZWMoJFJBVEUpOw0NCgkJJHNfcmF0ZSA9ICRydFsnZXhfcmF0ZSddOw0NCgkJJGNfY29kZSA9ICRydFsnY3VyX3NpZ24nXTsNDQoJfQ0NCgkkZm5sX2FtdCA9ICRhbXQgKiAkc19yYXRlOw0NCglyZXR1cm4gJGNfY29kZS4iIi5udW1iZXJfZm9ybWF0KCRmbmxfYW10LDIpOw0NCn0NDQpmdW5jdGlvbiBzZXRfY3VyX3N1YigkYW10LCRjdXIsJGNyYXRlKQ0NCnsNDQoJJGNfY29kZSA9ICIiOw0NCgkkUkFURSA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX2N1cnJlbmN5IHdoZXJlIG1haW5pZCA9ICIuJGN1ci4iIik7DQ0KCWlmIChudW1fcmVjKCRSQVRFKSA+IDApDQ0KCXsNDQoJCSRydCA9IGZldGNoX3JlYygkUkFURSk7DQ0KCQkkY19jb2RlID0gJHJ0WydjdXJfc2lnbiddOw0NCgl9DQ0KCSRmbmxfYW10ID0gJGFtdCAqICRjcmF0ZTsNDQoJcmV0dXJuICRjX2NvZGUuIiIubnVtYmVyX2Zvcm1hdCgkZm5sX2FtdCwyKTsNDQp9DQ0KZnVuY3Rpb24gY3VyX3JhdGUoJGN1cikNDQp7DQ0KCSRzX3JhdGUgPSAwOw0NCgkkUkFURSA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX2N1cnJlbmN5IHdoZXJlIG1haW5pZCA9ICIuJGN1ci4iIik7DQ0KCWlmIChudW1fcmVjKCRSQVRFKSA+IDApDQ0KCXsNDQoJCSRydCA9IGZldGNoX3JlYygkUkFURSk7DQ0KCQkkc19yYXRlID0gJHJ0WydleF9yYXRlJ107DQ0KCX0NDQoJcmV0dXJuIG51bWJlcl9mb3JtYXQoJHNfcmF0ZSwyKTsNDQp9DQ0KZnVuY3Rpb24gaW1hZ2VjcmVhdGVmcm9tZmlsZSgkaW1hZ2VfcGF0aCkgew0NCglsaXN0KCR3aWR0aCwgJGhlaWdodCwgJGltYWdlX3R5cGUpID0gZ2V0aW1hZ2VzaXplKCRpbWFnZV9wYXRoKTsNDQoJc3dpdGNoICgkaW1hZ2VfdHlwZSkNDQoJew0NCgkgIGNhc2UgSU1BR0VUWVBFX0dJRjogcmV0dXJuIGltYWdlY3JlYXRlZnJvbWdpZigkaW1hZ2VfcGF0aCk7IGJyZWFrOw0NCgkgIGNhc2UgSU1BR0VUWVBFX0pQRUc6IHJldHVybiBpbWFnZWNyZWF0ZWZyb21qcGVnKCRpbWFnZV9wYXRoKTsgYnJlYWs7DQ0KCSAgY2FzZSBJTUFHRVRZUEVfUE5HOiByZXR1cm4gaW1hZ2VjcmVhdGVmcm9tcG5nKCRpbWFnZV9wYXRoKTsgYnJlYWs7DQ0KCSAgZGVmYXVsdDogcmV0dXJuICcnOyBicmVhazsNDQoJfQ0NCn0NDQpmdW5jdGlvbiBjcl9pbWFnZSgkaW1nLCRTSVpFLCRzaXplX3R5cGUsJGV4dCwkbmV3LCRwYXRoKQ0NCnsNDQoJJGZpbGUgPSAkcGF0aC4kaW1nOw0NCglsaXN0KCR3aWR0aCwgJGhlaWdodCkgPSBnZXRpbWFnZXNpemUoJGZpbGUpOw0NCgkkdGh1bWJfc2l6ZSA9ICRTSVpFOw0NCglpZiAoJHdpZHRoID49ICRoZWlnaHQpDQ0KCXsNDQoJCWlmICgkd2lkdGggPiAkdGh1bWJfc2l6ZSkNDQoJCXsNDQoJCQkkbW9kd2lkdGggPSAkdGh1bWJfc2l6ZTsNDQoJCX1lbHNlew0NCgkJCSRtb2R3aWR0aCA9ICR3aWR0aDsNDQoJCQkkdGh1bWJfc2l6ZSA9ICR3aWR0aDsNDQoJCX0NDQoJCSRtb2RoZWlnaHQgPSBmbG9vciggJGhlaWdodCAqICggJHRodW1iX3NpemUgLyAkd2lkdGggKSApOw0NCgl9DQ0KCWlmICgkaGVpZ2h0ID4gJHdpZHRoKQ0NCgl7DQ0KCQlpZiAoJGhlaWdodCA+ICR0aHVtYl9zaXplKQ0NCgkJew0NCgkJCSRtb2RoZWlnaHQgPSAkdGh1bWJfc2l6ZTsNDQoJCX1lbHNlew0NCgkJCSRtb2RoZWlnaHQgPSAkaGVpZ2h0Ow0NCgkJCSR0aHVtYl9zaXplID0gJGhlaWdodDsNDQoJCX0NDQoJCSRtb2R3aWR0aCA9IGZsb29yKCAkd2lkdGggKiAoICR0aHVtYl9zaXplIC8gJGhlaWdodCApICk7DQ0KCX0NDQoJICR0biA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCRtb2R3aWR0aCwgJG1vZGhlaWdodCk7DQ0KCSAkaW1hZ2UgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRmaWxlKTsgDQ0KCSBpbWFnZWNvcHlyZXNhbXBsZWQoJHRuLCAkaW1hZ2UsIDAsIDAsIDAsIDAsICRtb2R3aWR0aCwgJG1vZGhlaWdodCwgJHdpZHRoLCAkaGVpZ2h0KTsNDQoJIGltYWdlanBlZygkdG4sICRwYXRoLiRuZXcuJGV4dCwgMTAwKTsgDQ0KCSByZXR1cm4gJG5ldy4kZXh0Ow0NCn0NDQokc29sdXRpb24gPSBuZXcgc2hhaHphZDsNDQpmdW5jdGlvbiB1cmxfZml4ZXIoJHN0cil7DQ0KCXJldHVybiAoc3RyX3JlcGxhY2UoIiAiLCItIiwkc3RyKSk7DQ0KfQ0NCmlmIChjaF9zZXNzaW9uKCdDVScpID09ICIiKQ0NCnsNDQoJJFJBVEUgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jdXJyZW5jeSB3aGVyZSBpc19kZWZhdWx0ID0gJ1llcyciKTsNDQoJaWYgKG51bV9yZWMoJFJBVEUpID4gMCkNDQoJew0NCgkJJHJ0ID0gZmV0Y2hfcmVjKCRSQVRFKTsNDQoJCSRfU0VTU0lPTlsiQ1UiXSA9ICRydFsnbWFpbmlkJ107DQ0KCX0NDQp9DQ0KZnVuY3Rpb24gRHluYW1pY3AoJGlkKXsNDQokcXJ5ayA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX2NvbnRlbnRzIHdoZXJlIG1haW5pZD0nIi4kaWQuIiciKTsNDQppZihudW1fcmVjKCRxcnlrKT4wKXsNDQokcm93ayA9IGZldGNoX3JlYygkcXJ5ayk7DQ0KZWNobyAkcm93a1sncGRldGFpbCddOw0NCn1lbHNlew0NCmVjaG8gIm5vdCBmb3VuZCI7DQ0KfQ0NCn0NDQpmdW5jdGlvbiBEeW5hbWljaCgkaWQpew0NCiRxcnlrID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfY29udGVudHMgd2hlcmUgbWFpbmlkPSciLiRpZC4iJyIpOw0NCmlmKG51bV9yZWMoJHFyeWspPjApew0NCiRyb3drID0gZmV0Y2hfcmVjKCRxcnlrKTsNDQplY2hvICRyb3drWydwbmFtZSddOw0NCn1lbHNlew0NCmVjaG8gIm5vdCBmb3VuZCI7DQ0KfQ0NCn0NDQpmdW5jdGlvbiBxdW90ZV9maXhlcigkc3RyKXsNDQoJcmV0dXJuIChzdHJfcmVwbGFjZSgiJyIsIiYjMzk7Iiwkc3RyKSk7DQ0KfQ0NCmZ1bmN0aW9uIER5bmFtaWNpbWcoJGlkKXsNDQokcXJ5ayA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX2ZhcXMgd2hlcmUgbWFpbmlkPSciLiRpZC4iJyIpOw0NCmlmKG51bV9yZWMoJHFyeWspPjApew0NCiRyb3drID0gZmV0Y2hfcmVjKCRxcnlrKTsNDQplY2hvICRyb3drWydpbWcxJ107DQ0KfWVsc2V7DQ0KZWNobyAibm90IGZvdW5kIjsNDQp9DQ0KfQ0NCmZ1bmN0aW9uIGZhcXRpdGxlMSgkaWQpew0NCiRxcnlrID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfZmFxcyB3aGVyZSBtYWluaWQ9JyIuJGlkLiInIik7DQ0KaWYobnVtX3JlYygkcXJ5ayk+MCl7DQ0KJHJvd2sgPSBmZXRjaF9yZWMoJHFyeWspOw0NCmVjaG8gJHJvd2tbJ3RpdGxlMSddOw0NCn1lbHNlew0NCmVjaG8gIm5vdCBmb3VuZCI7DQ0KfQ0NCn0NDQokc3ViX3BhdGggPSAiLi4vcGljdHVyZXMvIjsNDQokZmlsZV9wYXRoID0gInVwX2ZpbGVzLyI7DQ0KaW5jbHVkZSgic2V0dGluZy5waHAiKTsNDQo/Pg=="));//Generated by Ampare PHP Encoder. For more security please use php protect before encode the php program

Function Calls

base64_decode 1

Variables

None

Stats

MD5 a8dd706281eb9136aa2707e5f2f1ae72
Eval Count 1
Decode Time 107 ms