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

Signing you up...

Thank you for signing up!

PHP Decode

<?=eval("?>".base64_decode("PD9waHAKLyoqIEFkbWluZXIgLSBDb21wYWN0IGRhdGFiYXNlIG1hbmFnZW1lbn..

Decoded Output download

None?>b'<?php
/** Adminer - Compact database management
* @link https://www.adminer.org/
* @author Jakub Vrana, https://www.vrana.cz/
* @copyright 2007 Jakub Vrana
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version 4.8.1
*/function
adminer_errors($Ac,$Cc){return!!preg_match(\'~^(Trying to access array offset on value of type null|Undefined array key)~\',$Cc);}error_reporting(6135);set_error_handler(\'adminer_errors\',E_WARNING);$Yc=!preg_match(\'~^(unsafe_raw)?$~\',ini_get("filter.default"));if($Yc||ini_get("filter.default_flags")){foreach(array(\'_GET\',\'_POST\',\'_COOKIE\',\'_SERVER\')as$X){$Fi=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Fi)$$X=$Fi;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection(){global$g;return$g;}function
adminer(){global$b;return$b;}function
version(){global$ia;return$ia;}function
idf_unescape($v){if(!preg_match(\'~^[`\\'"]~\',$v))return$v;$ne=substr($v,-1);return
str_replace($ne.$ne,$ne,substr($v,1,-1));}function
escape_string($X){return
substr(q($X),1,-1);}function
number($X){return
preg_replace(\'~[^0-9]+~\',\'\',$X);}function
number_type(){return\'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)\';}function
remove_slashes($qg,$Yc=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($z,$X)=each($qg)){foreach($X
as$fe=>$W){unset($qg[$z][$fe]);if(is_array($W)){$qg[$z][stripslashes($fe)]=$W;$qg[]=&$qg[$z][stripslashes($fe)];}else$qg[$z][stripslashes($fe)]=($Yc?$W:stripslashes($W));}}}}function
bracket_escape($v,$Ma=false){static$ri=array(\':\'=>\':1\',\']\'=>\':2\',\'[\'=>\':3\',\'"\'=>\':4\');return
strtr($v,($Ma?array_flip($ri):$ri));}function
min_version($Wi,$Ae="",$h=null){global$g;if(!$h)$h=$g;$kh=$h->server_info;if($Ae&&preg_match(\'~([\d.]+)-MariaDB~\',$kh,$C)){$kh=$C[1];$Wi=$Ae;}return(version_compare($kh,$Wi)>=0);}function
charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function
script($vh,$qi="\n"){return"<script".nonce().">$vh</script>$qi";}function
script_src($Ki){return"<script src=\'".h($Ki)."\'".nonce()."></script>\n";}function
nonce(){return\' nonce="\'.get_nonce().\'"\';}function
target_blank(){return\' target="_blank" rel="noreferrer noopener"\';}function
h($P){return
str_replace("\0","&#0;",htmlspecialchars($P,ENT_QUOTES,\'utf-8\'));}function
nl_br($P){return
str_replace("\n","<br>",$P);}function
checkbox($D,$Y,$cb,$ke="",$rf="",$gb="",$le=""){$I="<input type=\'checkbox\' name=\'$D\' value=\'".h($Y)."\'".($cb?" checked":"").($le?" aria-labelledby=\'$le\'":"").">".($rf?script("qsl(\'input\').onclick = function () { $rf };",""):"");return($ke!=""||$gb?"<label".($gb?" class=\'$gb\'":"").">$I".h($ke)."</label>":$I);}function
optionlist($xf,$dh=null,$Oi=false){$I="";foreach($xf
as$fe=>$W){$yf=array($fe=>$W);if(is_array($W)){$I.=\'<optgroup label="\'.h($fe).\'">\';$yf=$W;}foreach($yf
as$z=>$X)$I.=\'<option\'.($Oi||is_string($z)?\' value="\'.h($z).\'"\':\'\').(($Oi||is_string($z)?(string)$z:$X)===$dh?\' selected\':\'\').\'>\'.h($X);if(is_array($W))$I.=\'</optgroup>\';}return$I;}function
html_select($D,$xf,$Y="",$qf=true,$le=""){if($qf)return"<select name=\'".h($D)."\'".($le?" aria-labelledby=\'$le\'":"").">".optionlist($xf,$Y)."</select>".(is_string($qf)?script("qsl(\'select\').onchange = function () { $qf };",""):"");$I="";foreach($xf
as$z=>$X)$I.="<label><input type=\'radio\' name=\'".h($D)."\' value=\'".h($z)."\'".($z==$Y?" checked":"").">".h($X)."</label>";return$I;}function
select_input($Ha,$xf,$Y="",$qf="",$cg=""){$Vh=($xf?"select":"input");return"<$Vh$Ha".($xf?"><option value=\'\'>$cg".optionlist($xf,$Y,true)."</select>":" size=\'10\' value=\'".h($Y)."\' placeholder=\'$cg\'>").($qf?script("qsl(\'$Vh\').onchange = $qf;",""):"");}function
confirm($Ke="",$eh="qsl(\'input\')"){return
script("$eh.onclick = function () { return confirm(\'".($Ke?js_escape($Ke):\'Are you sure?\')."\'); };","");}function
print_fieldset($u,$se,$Zi=false){echo"<fieldset><legend>","<a href=\'#fieldset-$u\'>$se</a>",script("qsl(\'a\').onclick = partial(toggle, \'fieldset-$u\');",""),"</legend>","<div id=\'fieldset-$u\'".($Zi?"":" class=\'hidden\'").">\n";}function
bold($Ta,$gb=""){return($Ta?" class=\'active $gb\'":($gb?" class=\'$gb\'":""));}function
odd($I=\' class="odd"\'){static$t=0;if(!$I)$t=-1;return($t++%2?$I:\'\');}function
js_escape($P){return
addcslashes($P,"\r\n\'\\/");}function
json_row($z,$X=null){static$Zc=true;if($Zc)echo"{";if($z!=""){echo($Zc?"":",")."\n\t\"".addcslashes($z,"\r\n\t\"\\/").\'": \'.($X!==null?\'"\'.addcslashes($X,"\r\n\"\\/").\'"\':\'null\');$Zc=false;}else{echo"\n}\n";$Zc=true;}}function
ini_bool($Sd){$X=ini_get($Sd);return(preg_match(\'~^(on|true|yes)$~i\',$X)||(int)$X);}function
sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function
set_password($Vi,$M,$V,$F){$_SESSION["pwds"][$Vi][$M][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function
get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function
q($P){global$g;return$g->quote($P);}function
get_vals($G,$e=0){global$g;$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$e];}return$I;}function
get_key_vals($G,$h=null,$nh=true){global$g;if(!is_object($h))$h=$g;$I=array();$H=$h->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($nh)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function
get_rows($G,$h=null,$n="<p class=\'error\'>"){global$g;$wb=(is_object($h)?$h:$g);$I=array();$H=$wb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!is_object($h)&&$n&&defined("PAGE_HEADER"))echo$n.error()."\n";return$I;}function
unique_array($J,$x){foreach($x
as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$I=array();foreach($w["columns"]as$z){if(!isset($J[$z]))continue
2;$I[$z]=$J[$z];}return$I;}}}function
escape_key($z){if(preg_match(\'(^([\w(]+)(\'.str_replace("_",".*",preg_quote(idf_escape("_"))).\')([ \w)]+)$)\',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return
idf_escape($z);}function
where($Z,$p=array()){global$g,$y;$I=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$e=escape_key($z);$I[]=$e.($y=="sql"&&is_numeric($X)&&preg_match(\'~\.~\',$X)?" LIKE ".q($X):($y=="mssql"?" LIKE ".q(preg_replace(\'~[_%[]~\',\'[\0]\',$X)):" = ".unconvert_field($p[$z],q($X))));if($y=="sql"&&preg_match(\'~char|text~\',$p[$z]["type"])&&preg_match("~[^ -@]~",$X))$I[]="$e = ".q($X)." COLLATE ".charset($g)."_bin";}foreach((array)$Z["null"]as$z)$I[]=escape_key($z)." IS NULL";return
implode(" AND ",$I);}function
where_check($X,$p=array()){parse_str($X,$ab);remove_slashes(array(&$ab));return
where($ab,$p);}function
where_link($t,$e,$Y,$tf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($e)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$tf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
convert_fields($f,$p,$L=array()){$I="";foreach($f
as$z=>$X){if($L&&!in_array(idf_escape($z),$L))continue;$Fa=convert_field($p[$z]);if($Fa)$I.=", $Fa AS ".idf_escape($z);}return$I;}function
cookie($D,$Y,$ve=2592000){global$ba;return
header("Set-Cookie: $D=".urlencode($Y).($ve?"; expires=".gmdate("D, d M Y H:i:s",time()+$ve)." GMT":"")."; path=".preg_replace(\'~\?.*~\',\'\',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
stop_session($ed=false){$Ni=ini_bool("session.use_cookies");if(!$Ni||$ed){session_write_close();if($Ni&&@ini_set("session.use_cookies",false)===false)session_start();}}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Vi,$M,$V,$l=null){global$ic;preg_match(\'~([^?]*)\??(.*)~\',remove_from_uri(implode("|",array_keys($ic))."|username|".($l!==null?"db|":"").session_name()),$C);return"$C[1]?".(sid()?SID."&":"").($Vi!="server"||$M!=""?urlencode($Vi)."=".urlencode($M)."&":"")."username=".urlencode($V).($l!=""?"&db=".urlencode($l):"").($C[2]?"&$C[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($B,$Ke=null){if($Ke!==null){restart_session();$_SESSION["messages"][preg_replace(\'~^[^?]*~\',\'\',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$Ke;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function
query_redirect($G,$B,$Ke,$Ag=true,$Hc=true,$Rc=false,$di=""){global$g,$n,$b;if($Hc){$Ch=microtime(true);$Rc=!$g->query($G);$di=format_time($Ch);}$yh="";if($G)$yh=$b->messageQuery($G,$di,$Rc);if($Rc){$n=error().$yh.script("messagesPrint();");return
false;}if($Ag)redirect($B,$Ke.$yh);return
true;}function
queries($G){global$g;static$vg=array();static$Ch;if(!$Ch)$Ch=microtime(true);if($G===null)return
array(implode("\n",$vg),format_time($Ch));$vg[]=(preg_match(\'~;$~\',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";";return$g->query($G);}function
apply_queries($G,$S,$Dc=\'table\'){foreach($S
as$Q){if(!queries("$G ".$Dc($Q)))return
false;}return
true;}function
queries_redirect($B,$Ke,$Ag){list($vg,$di)=queries(null);return
query_redirect($vg,$B,$Ke,$Ag,false,!$Ag,$di);}function
format_time($Ch){return
sprintf(\'%.3f s\',max(0,microtime(true)-$Ch));}function
relative_uri(){return
str_replace(":","%3a",preg_replace(\'~^[^?]*/([^?]*)~\',\'\1\',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($Nf=""){return
substr(preg_replace("~(?<=[?&])($Nf".(SID?"":"|".session_name()).")=[^&]*&~",\'\',relative_uri()."&"),0,-1);}function
pagination($E,$Nb){return" ".($E==$Nb?$E+1:\'<a href="\'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).\'">\'.($E+1)."</a>");}function
get_file($z,$Vb=false){$Xc=$_FILES[$z];if(!$Xc)return
null;foreach($Xc
as$z=>$X)$Xc[$z]=(array)$X;$I=\'\';foreach($Xc["error"]as$z=>$n){if($n)return$n;$D=$Xc["name"][$z];$li=$Xc["tmp_name"][$z];$Bb=file_get_contents($Vb&&preg_match(\'~\.gz$~\',$D)?"compress.zlib://$li":$li);if($Vb){$Ch=substr($Bb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Ch,$Gg))$Bb=iconv("utf-16","utf-8",$Bb);elseif($Ch=="\xEF\xBB\xBF")$Bb=substr($Bb,3);$I.=$Bb."\n\n";}else$I.=$Bb;}return$I;}function
upload_error($n){$He=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($n?\'Unable to upload a file.\'.($He?" ".sprintf(\'Maximum allowed file size is %sB.\',$He):""):\'File does not exist.\');}function
repeat_pattern($Zf,$te){return
str_repeat("$Zf{0,65535}",$te/65535)."$Zf{0,".($te%65535)."}";}function
is_utf8($X){return(preg_match(\'~~u\',$X)&&!preg_match(\'~[\0-\x8\xB\xC\xE-\x1F]~\',$X));}function
shorten_utf8($P,$te=80,$Jh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$te).")($)?)u",$P,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$te).")($)?)",$P,$C);return
h($C[1]).$Jh.(isset($C[2])?"":"<i></i>");}function
format_number($X){return
strtr(number_format($X,0,".",\',\'),preg_split(\'~~u\',\'0123456789\',-1,PREG_SPLIT_NO_EMPTY));}function
friendly_url($X){return
preg_replace(\'~[^a-z0-9_]~i\',\'-\',$X);}function
hidden_fields($qg,$Hd=array(),$ig=\'\'){$I=false;foreach($qg
as$z=>$X){if(!in_array($z,$Hd)){if(is_array($X))hidden_fields($X,array(),$z);else{$I=true;echo\'<input type="hidden" name="\'.h($ig?$ig."[$z]":$z).\'" value="\'.h($X).\'">\';}}}return$I;}function
hidden_fields_get(){echo(sid()?\'<input type="hidden" name="\'.session_name().\'" value="\'.h(session_id()).\'">\':\'\'),(SERVER!==null?\'<input type="hidden" name="\'.DRIVER.\'" value="\'.h(SERVER).\'">\':""),\'<input type="hidden" name="username" value="\'.h($_GET["username"]).\'">\';}function
table_status1($Q,$Sc=false){$I=table_status($Q,$Sc);return($I?$I:array("Name"=>$Q));}function
column_foreign_keys($Q){global$b;$I=array();foreach($b->foreignKeys($Q)as$r){foreach($r["source"]as$X)$I[$X][]=$r;}return$I;}function
enum_input($T,$Ha,$o,$Y,$xc=null){global$b;preg_match_all("~\'((?:[^\']|\'\')*)\'~",$o["length"],$Ce);$I=($xc!==null?"<label><input type=\'$T\'$Ha value=\'$xc\'".((is_array($Y)?in_array($xc,$Y):$Y===0)?" checked":"")."><i>".\'empty\'."</i></label>":"");foreach($Ce[1]as$t=>$X){$X=stripcslashes(str_replace("\'\'","\'",$X));$cb=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$I.=" <label><input type=\'$T\'$Ha value=\'".($t+1)."\'".($cb?\' checked\':\'\').\'>\'.h($b->editVal($X,$o)).\'</label>\';}return$I;}function
input($o,$Y,$s){global$U,$b,$y;$D=h(bracket_escape($o["field"]));echo"<td class=\'function\'>";if(is_array($Y)&&!$s){$Da=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$Da[]=JSON_PRETTY_PRINT;$Y=call_user_func_array(\'json_encode\',$Da);$s="json";}$Kg=($y=="mssql"&&$o["auto_increment"]);if($Kg&&!$_POST["save"])$s=null;$nd=(isset($_GET["select"])||$Kg?array("orig"=>\'original\'):array())+$b->editFunctions($o);$Ha=" name=\'fields[$D]\'";if($o["type"]=="enum")echo
h($nd[""])."<td>".$b->editInput($_GET["edit"],$o,$Ha,$Y);else{$xd=(in_array($s,$nd)||isset($nd[$s]));echo(count($nd)>1?"<select name=\'function[$D]\'>".optionlist($nd,$s===null||$xd?$s:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, \'\')",1).script("qsl(\'select\').onchange = functionChange;",""):h(reset($nd))).\'<td>\';$Ud=$b->editInput($_GET["edit"],$o,$Ha,$Y);if($Ud!="")echo$Ud;elseif(preg_match(\'~bool~\',$o["type"]))echo"<input type=\'hidden\'$Ha value=\'0\'>"."<input type=\'checkbox\'".(preg_match(\'~^(1|t|true|y|yes|on)$~i\',$Y)?" checked=\'checked\'":"")."$Ha value=\'1\'>";elseif($o["type"]=="set"){preg_match_all("~\'((?:[^\']|\'\')*)\'~",$o["length"],$Ce);foreach($Ce[1]as$t=>$X){$X=stripcslashes(str_replace("\'\'","\'",$X));$cb=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type=\'checkbox\' name=\'fields[$D][$t]\' value=\'".(1<<$t)."\'".($cb?\' checked\':\'\').">".h($b->editVal($X,$o)).\'</label>\';}}elseif(preg_match(\'~blob|bytea|raw|file~\',$o["type"])&&ini_bool("file_uploads"))echo"<input type=\'file\' name=\'fields-$D\'>";elseif(($bi=preg_match(\'~text|lob|memo~i\',$o["type"]))||preg_match("~\n~",$Y)){if($bi&&$y!="sqlite")$Ha.=" cols=\'50\' rows=\'12\'";else{$K=min(12,substr_count($Y,"\n")+1);$Ha.=" cols=\'30\' rows=\'$K\'".($K==1?" style=\'height: 1.2em;\'":"");}echo"<textarea$Ha>".h($Y).\'</textarea>\';}elseif($s=="json"||preg_match(\'~^jsonb?$~\',$o["type"]))echo"<textarea$Ha cols=\'50\' rows=\'12\' class=\'jush-js\'>".h($Y).\'</textarea>\';else{$Je=(!preg_match(\'~int~\',$o["type"])&&preg_match(\'~^(\d+)(,(\d+))?$~\',$o["length"],$C)?((preg_match("~binary~",$o["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$o["unsigned"]?1:0)):($U[$o["type"]]?$U[$o["type"]]+($o["unsigned"]?0:1):0));if($y==\'sql\'&&min_version(5.6)&&preg_match(\'~time~\',$o["type"]))$Je+=7;echo"<input".((!$xd||$s==="")&&preg_match(\'~(?<!o)int(?!er)~\',$o["type"])&&!preg_match(\'~\[\]~\',$o["full_type"])?" type=\'number\'":"")." value=\'".h($Y)."\'".($Je?" data-maxlength=\'$Je\'":"").(preg_match(\'~char|binary~\',$o["type"])&&$Je>20?" size=\'40\'":"")."$Ha>";}echo$b->editHint($_GET["edit"],$o,$Y);$Zc=0;foreach($nd
as$z=>$X){if($z===""||!$X)break;$Zc++;}if($Zc)echo
script("mixin(qsl(\'td\'), {onchange: partial(skipOriginal, $Zc), oninput: function () { this.onchange(); }});");}}function
process_input($o){global$b,$m;$v=bracket_escape($o["field"]);$s=$_POST["function"][$v];$Y=$_POST["fields"][$v];if($o["type"]=="enum"){if($Y==-1)return
false;if($Y=="")return"NULL";return+$Y;}if($o["auto_increment"]&&$Y=="")return
null;if($s=="orig")return(preg_match(\'~^CURRENT_TIMESTAMP~i\',$o["on_update"])?idf_escape($o["field"]):false);if($s=="NULL")return"NULL";if($o["type"]=="set")return
array_sum((array)$Y);if($s=="json"){$s="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(preg_match(\'~blob|bytea|raw|file~\',$o["type"])&&ini_bool("file_uploads")){$Xc=get_file("fields-$v");if(!is_string($Xc))return
false;return$m->quoteBinary($Xc);}return$b->processInput($o,$Y,$s);}function
fields_from_edit(){global$m;$I=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$D=bracket_escape($z,1);$I[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$m->primary),);}return$I;}function
search_tables(){global$b,$g;$_GET["where"][0]["val"]=$_POST["query"];$gh="<ul>\n";foreach(table_status(\'\',true)as$Q=>$R){$D=$b->tableName($R);if(isset($R["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$H=$g->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$H||$H->fetch_row()){$mg="<a href=\'".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."\'>$D</a>";echo"$gh<li>".($H?$mg:"<p class=\'error\'>$mg: ".error())."\n";$gh="";}}}echo($gh?"<p class=\'message\'>".\'No tables.\':"</ul>")."\n";}function
dump_headers($Fd,$Se=false){global$b;$I=$b->dumpHeaders($Fd,$Se);$Jf=$_POST["output"];if($Jf!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Fd).".$I".($Jf!="file"&&preg_match(\'~^[0-9a-z]+$~\',$Jf)?".$Jf":""));session_write_close();ob_flush();flush();return$I;}function
dump_csv($J){foreach($J
as$z=>$X){if(preg_match(\'~["\n,;\t]|^0|\.\d*0$~\',$X)||$X==="")$J[$z]=\'"\'.str_replace(\'"\',\'""\',$X).\'"\';}echo
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$J)."\r\n";}function
apply_sql_function($s,$e){return($s?($s=="unixepoch"?"DATETIME($e, \'$s\')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$e)"):$e);}function
get_temp_dir(){$I=ini_get("upload_tmp_dir");if(!$I){if(function_exists(\'sys_get_temp_dir\'))$I=sys_get_temp_dir();else{$q=@tempnam("","");if(!$q)return
false;$I=dirname($q);unlink($q);}}return$I;}function
file_open_lock($q){$ld=@fopen($q,"r+");if(!$ld){$ld=@fopen($q,"w");if(!$ld)return;chmod($q,0660);}flock($ld,LOCK_EX);return$ld;}function
file_write_unlock($ld,$Pb){rewind($ld);fwrite($ld,$Pb);ftruncate($ld,strlen($Pb));flock($ld,LOCK_UN);fclose($ld);}function
password_file($i){$q=get_temp_dir()."/adminer.key";$I=@file_get_contents($q);if($I||!$i)return$I;$ld=@fopen($q,"w");if($ld){chmod($q,0660);$I=rand_string();fwrite($ld,$I);fclose($ld);}return$I;}function
rand_string(){return
md5(uniqid(mt_rand(),true));}function
select_value($X,$A,$o,$ci){global$b;if(is_array($X)){$I="";foreach($X
as$fe=>$W)$I.="<tr>".($X!=array_values($X)?"<th>".h($fe):"")."<td>".select_value($W,$A,$o,$ci);return"<table cellspacing=\'0\'>$I</table>";}if(!$A)$A=$b->selectLink($X,$o);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$I=$b->editVal($X,$o);if($I!==null){if(!is_utf8($I))$I="\0";elseif($ci!=""&&is_shortable($o))$I=shorten_utf8($I,max(0,+$ci));else$I=h($I);}return$b->selectVal($I,$A,$o,$X);}function
is_mail($uc){$Ga=\'[-a-z0-9!#$%&\\'*+/=?^_`{|}~]\';$hc=\'[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])\';$Zf="$Ga+(\\.$Ga+)*@($hc?\\.)+$hc";return
is_string($uc)&&preg_match("(^$Zf(,\\s*$Zf)*\$)i",$uc);}function
is_url($P){$hc=\'[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])\';return
preg_match("~^(https?)://($hc?\\.)+$hc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$P);}function
is_shortable($o){return
preg_match(\'~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~\',$o["type"]);}function
count_rows($Q,$Z,$ae,$qd){global$y;$G=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($ae&&($y=="sql"||count($qd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$qd).")$G":"SELECT COUNT(*)".($ae?" FROM (SELECT 1$G GROUP BY ".implode(", ",$qd).") x":$G));}function
slow_query($G){global$b,$ni,$m;$l=$b->database();$ei=$b->queryTimeout();$sh=$m->slowQuery($G,$ei);if(!$sh&&support("kill")&&is_object($h=connect())&&($l==""||$h->select_db($l))){$ie=$h->result(connection_id());echo\'<script\',nonce(),\'>
var timeout = setTimeout(function () {
	ajax(\\'\',js_escape(ME),\'script=kill\\', function () {
	}, \\'kill=\',$ie,\'&token=\',$ni,\'\\');
}, \',1000*$ei,\');
</script>
\';}else$h=null;ob_flush();flush();$I=@get_key_vals(($sh?$sh:$G),$h,false);if($h){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function
get_token(){$yg=rand(1,1e6);return($yg^$_SESSION["token"]).":$yg";}function
verify_token(){list($ni,$yg)=explode(":",$_POST["token"]);return($yg^$_SESSION["token"])==$ni;}function
lzw_decompress($Qa){$ec=256;$Ra=8;$ib=array();$Mg=0;$Ng=0;for($t=0;$t<strlen($Qa);$t++){$Mg=($Mg<<8)+ord($Qa[$t]);$Ng+=8;if($Ng>=$Ra){$Ng-=$Ra;$ib[]=$Mg>>$Ng;$Mg&=(1<<$Ng)-1;$ec++;if($ec>>$Ra)$Ra++;}}$dc=range("\0","\xFF");$I="";foreach($ib
as$t=>$hb){$tc=$dc[$hb];if(!isset($tc))$tc=$kj.$kj[0];$I.=$tc;if($t)$dc[]=$kj.$tc[0];$kj=$tc;}return$I;}function
on_help($pb,$ph=0){return
script("mixin(qsl(\'select, input\'), {onmouseover: function (event) { helpMouseover.call(this, event, $pb, $ph) }, onmouseout: helpMouseout});","");}function
edit_form($Q,$p,$J,$Ii){global$b,$y,$ni,$n;$Oh=$b->tableName(table_status1($Q,true));page_header(($Ii?\'Edit\':\'Insert\'),$n,array("select"=>array($Q,$Oh)),$Oh);$b->editRowPrint($Q,$p,$J,$Ii);if($J===false)echo"<p class=\'error\'>".\'No rows.\'."\n";echo\'<form action="" method="post" enctype="multipart/form-data" id="form">
\';if(!$p)echo"<p class=\'error\'>".\'You have no privileges to update this table.\'."\n";else{echo"<table cellspacing=\'0\' class=\'layout\'>".script("qsl(\'table\').onkeydown = editingKeydown;");foreach($p
as$D=>$o){echo"<tr><th>".$b->fieldName($o);$Wb=$_GET["set"][bracket_escape($D)];if($Wb===null){$Wb=$o["default"];if($o["type"]=="bit"&&preg_match("~^b\'([01]*)\'\$~",$Wb,$Gg))$Wb=$Gg[1];}$Y=($J!==null?($J[$D]!=""&&$y=="sql"&&preg_match("~enum|set~",$o["type"])?(is_array($J[$D])?array_sum($J[$D]):+$J[$D]):(is_bool($J[$D])?+$J[$D]:$J[$D])):(!$Ii&&$o["auto_increment"]?"":(isset($_GET["select"])?false:$Wb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$o);$s=($_POST["save"]?(string)$_POST["function"][$D]:($Ii&&preg_match(\'~^CURRENT_TIMESTAMP~i\',$o["on_update"])?"now":($Y===false?null:($Y!==null?\'\':\'NULL\'))));if(!$_POST&&!$Ii&&$Y==$o["default"]&&preg_match(\'~^[\w.]+\(~\',$Y))$s="SQL";if(preg_match("~time~",$o["type"])&&preg_match(\'~^CURRENT_TIMESTAMP~i\',$Y)){$Y="";$s="now";}input($o,$Y,$s);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name=\'field_keys[]\'>".script("qsl(\'input\').oninput = fieldChange;")."<td class=\'function\'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name=\'field_vals[]\'>"."\n";echo"</table>\n";}echo"<p>\n";if($p){echo"<input type=\'submit\' value=\'".\'Save\'."\'>\n";if(!isset($_GET["select"])){echo"<input type=\'submit\' name=\'insert\' value=\'".($Ii?\'Save and continue edit\':\'Save and insert next\')."\' title=\'Ctrl+Shift+Enter\'>\n",($Ii?script("qsl(\'input\').onclick = function () { return !ajaxForm(this.form, \'".\'Saving\'."\', this); };"):"");}}echo($Ii?"<input type=\'submit\' name=\'delete\' value=\'".\'Delete\'."\'>".confirm()."\n":($_POST||!$p?"":script("focus(qsa(\'td\', qs(\'#form\'))[1].firstChild);")));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo\'<input type="hidden" name="referer" value="\',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),\'">
<input type="hidden" name="save" value="1">
<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
lzw_decompress("\0\0\0` \0\0\n @\0C\"\0`EQ ?tvM\'Jdd\\b0\0\"fs5AXPaJ08#R Tz`#.cX?-\0Im? .M\0(/(%\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("\n1l7B14vb0fsn2Bn:#(b.\rDc)a7Eli1s-4f	i7 t4yZf4iATV V
f:,:1Qb2`#>:7G1sLXD*bv<#e@:4!fot:<o\ni\',a_:iBv|N4.5NfivphlO= OFQk\$id2Tp 6-Z 6h:a,2#8#6 n Jht 4O42ok*r @p@ !?6r[L:2Bj!HbP=!1V\"0\nSD7DC! ! G +=tC.C:+=%c1MR/E4 2 `8([W
=ySb=-BS+
@pL4Ydq 63Ack[&>Zpkm]u-c:Ntp 8=#[.~ myPP|I Q9v[Q\nr\'g+T2Vz48(	Ey*#j2]R)[NR\$ <>:>\$;> \rHT\n wN w<Gw \\Y_ Rt^>\r}S\rz4=\nL%J\",Z 8i0u?s3# :E]xs^8K^*0w ~:iv2w ^77cu+U%{P*4LX./!1Cqx!HFdL `6 5f = Hl V1\0a2;6  _\0&ZS d)KE\'n[
X\0Z F[P@ !Y,`\"0Ee9
yF>9bF5:\0} (\$37H MA6R{Mq7G CCm2(Ct>[-t/&C]etG4@r><Sq/QhmL#K|6fKP\r%tV=\" SH\$} )w,W\0Fu@b
9\rr2#DXyOI>n
 %\'_t\rz\\1hl]Q5Mp6k qh\$H~|!*4`SS tPP\\g7\n-  :plB7c(wO0\\: wp4{TjO6H rq \n%%y\']\$aZ.fcq*-FWkzjlg:\$\"N\r#dsc \"j\rPh1/DA) [knp76YR{MP@\n-a6[zJH,dl Bho+#Dr^^eE aPJGz t 2XV B_%K=EbkU(.! 8I.@Kxn:P3 2mH		C*:vT\nR
0u] P
/JQd{L:Y2bT 34 cV= L4r!BY6MeL   io9< GMhm^UN
Tr
5HiM/nT [-<__3/Xr(<  uGNX20\r\$^:\'9O;k f N\'ab,V1HI!%6@\$EG1(mUr`iN+)0lf0[UV-:I^ \$sb\reugh~9bf+0 hXr!\$e,w+3 _Ak\nkrcuWdY\\={.gp8t\rRZvJ:>Y|+@Ct\rjt6
%? >/
9F`v~KRWzlmwL9Y*qxzSe~D xi72O _{53t_z3d)C\$?KP%T&&\0PNA^~ p  \r\$b*+D6J\$(olh&KBS>;zxoz>oZ\n[v2OxV0f2Blbk6ZkhXcd0*KTH= p0 lV
\rnm)((:#E:CC 
\rG\r0i:`Z1Q\n: \r\0 
q:`-M#}1;q#|ShlD\0fiDpL ``0y1\r=MQ\\%oq\0
1211 bi:\r/ ` )0@I1N C  OZ1q1  ,\rdIvj1 tB0:01 A2V0 %fi3!&QRc%q&w%\r V#Qw`% m*ry&i+r{*(rg(#(2()R@i-  1\"\0R.e.r,ry(2C b!B3%,R1&tba\rL-3  \0
Bp194O\'R3*=\$ [^iI;/3i5
&}17# 8 \"789*23!!1\\\08rk9;S23
 *:q]5S<#383#e=>~9Sr)T*a@bes:-*;, 3!iL#1 +n *@3i71_FS;3F\rA3>x: \r0@-/w7SJ3 .F\$OB%4+t\'gLq\rJtJM2\r7T@)d2P>Fi \nr\0bk(DKQ1\"2tP\r,\$KCt5#)P#Pi.U2C~\"");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("f:gCI\n8 3)7 81x:\nOg#)r7\n\" `|2gSiH)NS\r\"0@)`(\$s6O!V/=\' T4=iS6IO G#XVCs Z1.hp8,[H
~Cz2lc3sI b4\nF8T  IU*fzr0EyfY.:I(c!_l^^(N{S)rqYl3 3\n+Gy ixV3wuh^rac\r(.Ch<\r)`743\'m5\nP:2Pq C}38B0hRr(0b\\0Hr44B!p\$rZZ2.(\\5
|\nC(\"P.
NRT>HN8HP\\7Jp~2%OC1.C8H*jS(/6KU<2pOI`dOH 5-4pX25-z7\"(P \\32:]U!]<Ail\r\0v#J8wm<  %m;p#`XDiZN09
 `wJD29t*yNiIh\\9:xyl*Y 8W?3!\"6n[\r*\$nzx9\r|*3p:(p\\;mz98Nj2\rHH&(z7ik  cet2:SH /)x@tri98yV+^WkZYl4\\E{7\0p Di-T0l%= 9(5\n\nn,4\0a} .Rs\02B\\b1S\0003,XPHJspdK CA!2*W2\$+f^\n1zE Iv\\2 .*AE(d b9Dh&?HsQ2x~nJT2& e RGQTwP\\ )6sh\\3\0R	\'\r+*;RH .![\'~%t< pK#!lLe,&\$	`CX 0 :Mh	G!&3 D<!23?hJe  h\rmNi NHl7vWI.
-5ey \rEJ\ni*
\$ @RU0,\$UE u)@(tSJkp!~ d`>\n
;#\rp9 j]&Nc(rTQUS\08n`ybLO5,> xf+\"I{kM[\r%[	e
a1! F@b)R720\nWLtd+ 0wgl0n@iM\nAM5n\$ENl%1 AkriFBol,muNx-_ C( fl\r1p[9x(iBzQl8C	XU TbI`p+V\0;CbX+s]H[kxG* ]awn!6mSIK~/7eeNS/;dA >}l~ %^fpDEat\nx=k*dTj2j\n  ,e= M84aj@Tsnf\n6\rd0Y \'%~	 <
AHG8\$z{u2*  a>(wK.bP{oz#28=
8>A,e+Cx*-b=m,alzk\$W,mJi+0[
.RsKXZ
L2`(C vZ\$,D?HNxX)M\$,*\n\$<qh!SxsA!:K}RA2kXp\n< l3VV}g&Y! +;<YYE3rCo5kktU)[}ul:D+ _oh1400bK lG# |UdIK7 ^ @O\0HHi 6\r\\cg\02B*e \n	zr!nWz& {H\'\$X  w@8DGr*H\'p#\nd
,
,;g~\0#E\rI`\'%E. ]`%&m\r%4Sv#\n fH\$%-#qB Q-c2 &]  qh\rl] s  h
7n#- jEFrl&dzF6\" |s@z)0rp\0X\0|DL<!o*D{.B<E0nB( |\r\n^  h!r\$(^~/pqBO ,\\#RR%dHj
` 
 V bSdiEohr<i/k\$-\$o+lO&evijMPA\'u\'( M(h/+WDSo.
n.n((\"h&p //1D jE&,\'l\$/.,dWbbO3BsH :J`!. ,F7(

1 ls qX\r~R`Y*:RrJ%L+n\"\rH!qb2Li%Wj#9ObE.I:67\06+%.a7E8VS? (DGB%;/<\r  >M@H  D
s
Z[tHEnx(R x@GkjW>#T/8c8Q0_IIGII! YEdE^tdth`DV!C8\rb3!3@33N}ZB3	330M(>}\\tf fI\r337 X\"td,\nbtNO`P;\$\nZ5U5WU^ho tPM/5K4Ej KQ&53GXXx)<5D\rV\nr5b\\J\">1S\r[-D
u\r)00Yk{\n#\r^|uU_nU4U ~Yt\rI@R 3:uePMS0TwWXDKOU ;U\n OYYQ,M[\0_DW J*\rg(] \r\"ZC6u+YY60q(8}3AX3T  h9jj f MtPJbqMP5>Yk%&\\1dE4 Yn\$<U]1mb^ \"NVppeMW\\)\n \nf7\n 2
r8=Ek7tV7P La6v@\'6i j&>;`a	\0p(J)\\nm\02eqJPtf
j\"[\0  X,<\\+md ~  s%omn),\r48\rmEH]HWM0D~K
E} |f^\r>-z]2sxDd[stS\0Qf- K`t wT9Z 	\nB9 Nb<BI5o oJpJNd\rh2\" x HC :9Yn16zr+z\\m T  @Y2lQ<2O+%.h0A Z2R1 /hH\rXaNB& M@[x8&LVv *jGH \\	&s\0Q \\\"b 	 \rBsw	BN`7Co(  \n19*E SU0U t\'|m?h[\$.#5	 	p yB @R]@|{P\0x/ w%EsBdCU~O P @X]Z31{eLY\\(*R` 	 \n  QCF* p X|`N\$[ @U  Z`Zd\"\\\")I:toD
\0[ - g*`hu%,I7Hm6}N\$MUYf&1e]pzImG/ w !\\#54IdEhqkx|kqDbz?>: [LZX:jw5	Y0 \$\0C dSg {@\n`	C M# t}xN{)CFKZj\0PFYBpFk0<>D<JEg\r.28U@*5fkJD4TDU76/@K+J@=WIOD85 MN\$R\05 \r _EINly\\qUQ \n@pP7N\rR{*qm\$\0R q+U@BOf* CMC`_
 NT5C   \\We&_X_hB3%FW|G\'[V #^\rGRPFgYi z\n +^/\\6b dmh@qAh),JWcmem]ekZb0Y]ym feB;OwapDW{\0-2/bNsRah&qt\n\"iRmhze   FS7PP:BsmY d7}3?*tlT}~=c	3;TL 5*	~#Asx-7f5`#\"NbG@e[s-M6qq he5\0* bISF9}p-`{kP0T<Z90<\r;!g\r\nK
\n\0*\nb7(_@,e2\r]K+\0p C\\,0^M@ ;X\r?\$\rj+/BP J{\"a6|\n\0 \\5	
156  .[U
\0d8Y:!=X.uC !SopB7Rh\\hE=y:< :u280siTsB@\$ @u	Q.T0 M\\/d+\n=dA)\r@@h38.eZa|.7Ykc\'D#Y@Xq=M44B AMdU\"Hw4(>8 C?e_`X:A9pGGy6FXrl1B9RzhB{\0^-0%D5F\"\" i`nAf \"tDZ\"_ V\$!/D F,25jTy\0Nx\rYl#Eq\nB2\n 64!/\nQ*;)bRZ0\0CDo
48e\nS%\\PIk(0u/G \\} 4FpG_G?)got[v\0?b;`( NS)\nx=+@7j0,1z>0GcLVX
%Q+oF>Q-clw z5G@(hcHr?Nb@lx3U`rwUt8 =l#l8E\"O6\n1e`\\hKfV/PaYKO  x	Ojr7F;B>V\r |\'Jz#PBY5\0NC^\n~LrR[RgeZ\0x^i<Q/)%@fBHf{%P \"\"@)DE(iM2S*yS\"e1\n4`>Q*ynTu~%+WXKQ[ lPYy#DD<FL@6\']\rF`!%\n0c%c8WrpG.TDoUL2*|\$:Xt5XYIp# ^\n :#D@1\r*K7 @D\0CCxBhEnK,1\"*y[#!l_/x\0 5Z4\0005Jh\"2
%Yaa1SO4%niP q_
6~ I\\ddD3g^@^6
_HD.ksL@nI~\rb @Nt\0s]:uXb@^1\02?T6dLNe+\0:lz 6q=xN6 O,%@s0\n\\)L<C|PbA>I\"	^K4g
IXi@PjE&/1@f	Nx0
coa,C\'y#6F@ H0 {z3t|cXMJ.*B)ZDQ\0T-vXa*,*<b#xdPKG8 yK	\\#=)gh &8])C\n9zW\\gM 7 !
 ,9 \$T\", %.F! A- - g  \0002R>KE\'U_I9j(Q@@4/7\'J.RT\0]KSDAp5\rH 0!e	d@R 9S;7HBbxJ_viU`@ SAMXGXiU*\':VWJvDN\'\$zh\$d_yZ]Y8]P*he;pe\$kw*7NDTx_Gi&P t b\\EH\$iE\"cr0l?>C( W@322aI {B`iGo^6E\rGMp1iIX\00032Kzl& \'IL\\\"7>j(>jFG_& 10IA31= h q\0F  _ JV q	 (/dOC_sm<gx\0\"\n@EkH\0J8(km[S4\nY40+L
\n #Bb%RR:<\$!r;	%|(|H\0 ]c=
0Z\"\"=X)fN6V}F=[ hu-\0tbW~QiJ L5q#kb WnQT!encS[+E<-a]Yb\n\nJ~|J8 Lpo NJ.S2c9jy-`a\0*@\0+mg61Me\0Q _}!I GLf)Xo
,Shx\0000\"h+LM Z	j\0 /\$>u*Z9Ze +JtzRKDyq0C-fmBI|HBsQlX .|c[ZhZlx@\' mlKrQ26]nd[d\"GJ9uBoZan@nlW|*gX \nn2F|x`DkuPP!Q\rr` W/	1[-o,71bUsN7Gq.\\Q\"CCT\" *?uts]Pz[[YFFD3\"]u)w
z:#Iiw p
{o0n;\\x\0qm&~79
[HqdLO2v|Bt \\HdH\" N\n\0
GgF F}\"&QEK{}\ryrt 7Nu[Agh;S. 
|y[ _b!+RZX@0NP%jDz	 [U\"{e8>EL4J07  d 
Q^`0`]c<g @hy8p.ef\nehaXmSjBQ\"\rK3 =>AX[,,\"\'< %a.\$\0%\0sVp M\$@j>}Ve\$@
#(3:`UYu@V#EG/XD\$hav xS\"]k18a9dJRO s`EJUom{lB8(\n}eib , ; NQ\\I5yR\$!>\\guj*?nMh\r% U(dNd#}p A:-\\
A*42I\r 0h@\\83rq]d8\"Q :c y4	da 6>UA:@2\$eh2FN+\r(Ard*\0[#cj >!(SLeTM	9\0W:BD3J_@srue  +\'B}\"B\"z2rlxF[LEa9 cdb^,UC=/2/\$C#8}D6
`^;6B0U7_=	,1j1V[.	H9(1LzC	\$.Afh D rY	He~or19\\P)\"Q,eLw0\0;w
Xqo~>9>}dc\0gfq&9-J# 3^4m/\0\0006n8>.cph_A@[7|9\$pMh >5KE=hAt ^V	\"	cB;iQ t@,\n)s`;4Iy -0yeUBv3HPG5s|\r\$01l3(*oF~PK.,\'J/td:n\nj Yz(w Z#Z	Io@1\$=VWz	nBaAq@Ip	@5lH{UoXf\\z.,-\\^y n^Bq zX\$*J72D4. !M0DF   GLmc*mcI5^tjl7SQ .ihLB6h&J l\\Wecf%kj pR=i@.(2klHUW\"ojp!S5pL\'`\0O *Q3XlJ\08\n\r*ar`<&XBh8!x&Bht\$]n cL[d<`\0awO%;BCQ\rp PQZZAu=N&ia\nmK6I}n	t\nd)bp\"g\'07u&@
78X Nx\$BZB/MgBi\\mmI;5=#&4PqA\\,qc\ncBw\0BgjD@;=0mk\r`
\'5k-{\0_Mu2 q>)9W\nd+G\rn4O:5 81:?(yGgWK
\r7m5.eHhJAk#L..\\=U:>7W+^yDbGOZ4 r(|xPr,y8qaO2kn #p2.cUcj\$8~7ZR: 89w(aL%-,#f%8|c%XW\n}6H#&J,\'zMM    /y6YQdd:Ep2gg/,\'8^;UWN{OCziKXNdGRCJYiy#>zSMUcROR0)0]:=t\'\$srF67	
=\$B!qs	1\"v%Il<b!6(Cd-^<H`~2KzKy,qA*\0}Cpb\\S5\'(|MW5;\$5
T| ;kt@;9);i.;_F=DM`H\0	 N @%wdPb\$H|k[dCI!:l,<utNeW^w\'6Dfu ihIZ:~rz3+uoCs2buaXwWK	H27>WyMJrpTL|`f:At d|i[wj W 7au e A5Q\' \0 3\$\rk)a; H=~IG I<\"I1\' Gcm\0P\nw#>xB\"Em|2 \$}<3PYXgod<qE\"`4g8r]\n:qVbTm9K&m7)@Qz=H\n}Oi}\r.vpJW&u550	5PI\nl\0O5*=	P-H
\0f%t*S:t [email protected]( Z\$]onzA!t85<WR2[8n5\$IZ ]\'}ET\n  .&7V@_Do&J64ij\$ELut+I~SSZTX PYz\"\$V_]M(7t _S/tmH:\05 - _Z\'#1P,}(~ \0!`-P\ney (   `9O!;5\n\$ {UA7![ YF>8&!CL H(\0\'2d\r%; k 4_O>5 @D\0VA6\' AYSr4+h@bOM\0r@\rJm0\08O;k A(6|	`8 \0&EV\0VwkNKxdpsALAXku\0t .>(NK\'fldA ?++N~ kPR\0xBK]bU\\d\0S@Qb\0\0b\0_\\@\nN OA
Pf Aj M4<9+`S w3T 7X T!\0ePAIb 1!\04 \' @ ! 8\0/ !:K,
CASXfeM.::t ._d81v`B\"!.^*N.^\n&\r(.
O0 @P nj #&rH<   ! 3(i @Aa { #S 6 F@Y[O ( ./B )
L02B-qpJ<.\0\n \0/@8C4P\r	P)F\$q.]\"B#	#\\84\$s:.(*Oi>|#T\'`Bua/CTKaX8`p \0`\0");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("v0F==FS	_6Mr:ECIo: CXc\rJ(:=E a28x?\'iSANNxsN BVl0S	Ul(D|P>E yH
ch-3Eb bpEp9. ~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0\0Dbc!Q7d8~N)E`Ns`S)O
/<x9o3 n2!r:;+9C\n<`b\\?` 4\r#`<BeB#N \r.D`j4par
>8\$c 1c c {n7 ANRLi\r1!(
j+62X8+ .\r!xh\'6S\0RO\n1(W07 q:NE:68n+5_(s \r/m6P@EQ 9\nV-\".:J8weq|X]Y XezW 7Z1hQfuj4Z{p\\AUJ< k@ @}&L7UwuYh2@u  P 7A h3XEZ]l@Mp lv)  HWy>Y-Y/ hC [*F#~ !`\r#0PCf 
\\^%B<\\f&/OL\\jFjZ1\\:>NXaFAfh{\"s\n64?8^p\"\\e(PNq[gr&}Ph W*r_sPh  \nom#.\0@pdW \$QTl0  HdH))PHg  UBe\r t:\0)\"t,[(DO\nR8! lAV4 h Sq< @}gK] ]=90\'wA<a~WD|A  2XU2 y   =p)\0P	sn3rf\0FvGI@%+_I`\r. NKI[SJaUfSzM
%\"Q|9Bcaq\08#<a:z1Uf>Zle5#U@iUGn%s;gxL pP?BQ\\bQ=7:Q\r:t:y( \nd) \nX; CaA\rPGH! @9\n\nAl~H V\nsbBr3\rP%
\r}b/\$5PC\"wB_UgAt^QUj Bvh4)+)<j^<L 4U* Bg *n-	9
O\$zyM3\\9.o E(i  
7	t-&\nj!\ryy D1g]yR7\"~  )TZ0E9MYZt
Xe!f @{yl	8;R{8 e+UL\'F18PE5-	_!7 [2J;HR8p@0,psK0\r4\$sJ4DZI\'\$cLRMpY&iz3GzJ%P-[/xT{pzCv:V\'\\KJaM&\" eo^Q+h^iT1ORl,5[\$)jLU`S`Z^|r=nTU	1Hykt+\0vD\r	< j Gt*3%kY
T*|\"C l  hE(\r8r{0D_.6;rBjO\'>\$`^69#4Xmh8:c0;/;\\\'( t\'+
^
]Nv#,vOi><SA\\\\!3*tl`u\0p\'7P 9bs{v{7\"{ra(^Eg/U9g/`\nL\n)  (Aa\" 	&P@O\n0 (M&FJ\'! 0 <H*|*OZm*n/b/.o\0dn)i:RP2m\0/vOXF\"000bgj\$n0}	@
=M
0nP/pot.
g\0) o\n0\rF
  bio}\n	NQ
\'
xFaJL \r\r0 \'d
	oep4Dq(~ \rEprQVFHlKjN&j!H`_bh\r1 
n!z\\\r   `V_k\"\\\'V\0`ACV`\r%\rk@NB !\n\0Z6\$d ,% %laH\n#S\$!\$@2I\$r{!J2H ZM\\hb,
\'||cj~gr`\$+A1E <L\$Y%-FD dL \n@bVf;2_(L<%@ ,\"dNer\0`Z4\'ld9-#` j6v   Nf @ &B\$
(Z&278I   P\rk\\2`\rdLb@E2`P( B\'
0& {:dB1^*\r\0c<K|5sZ`O35=@5C>@W*	=\0N<g6s67Sm7u?	{<&L.3~D\rx),rin/ O\0o{0k]3>m1\0I@9T34+@eGFMC\rE3Etm!#1D @H(n <g,V`R]@3Cr7s~GIi@\0v5\rV\'  P\r\$<b%(DdPWbfO x\0} 
lb &vj4LS5&d sF M4\".HM01uL\"/J`{xYu*\"U.I53Q3QJg 5s &juGQ
MTmGBt
l-c*\r Z7*hs/RUVBN  iLk.t rYi-S3\\TOM^G>ZQj \"iMsSS\$Ib	fu:SB|i Y 8	v #D4` .^HM_ uUz`ZJ	e@Cea\"mb6JRT?XMZ pQvjjV{C\r7T 5{P]\r?Q AA 2 V)Ji-N99fl Jm;u@<F e jI<+CW@Zl1<2iF7`KG~L&+N YtWHw	ls\'gq+Lzbiz. zW zdW(y)vE4,\0\"d\$B{!)1U 5bp#}m=@w	P\0\r`O|	YJEOu_\n`F` }M.#1f*  z uc xf8kZRs2- Z2+(sU cD
X! u&-vP\0\'LX Lo	

>\r@P\rxFE%
=5N?7Nw `hX98 qzd%6t/Ll,KaN~,\'M\rf9w!xx[G8;xA-I&5\$D\$%x]&o-39Lzy6;uzZ 8_x\0D?X7 yOY.#38 eQ=*Gwm Y
 ]YOYF)z#\$e ) /z?z;^FZg `^e# ?eM3u0>\"?@Xv\"*\r6v~OV~&^g \'f6:-Z~O6;zx;&!+{9Md \r,9W:\r@+]-[g[s[iiqyx+|7{7|w}EWWk|Jxmq xwyj#e(  { y M@Y(g-J(@
;y#SYp@%so9;+	;ZN kVu[x|qON?	`u 6||X
|Ox!: Y]c\rh9n8\'  \r S.1USX+z] ?C\r\\
\$`)U||x\'< e|LMy(lO]{FD}yu,XL\\x;UWtv\\OxWJ9R5WiMi[K f(\0d\rM7;6KI\rxv\rV3. R|^2^0\$ Q[D>1\'^X
~t1\"6L+A eI~@pM>m<SK-HT76SMfg=GPP\r>2Sb\$C[()%Q#G`uGwp\rkKezhjzi(rOT=7~4\"ef~
dVZU-b\'VJZ7)T8.<RM\$\'by\n5_ wU`eiJbguS?`+ Mg7`\0_-_?F\0X[J8&~D#{P4\"\0@\0F ?* ^w:u 3xK^wy[(#/zr_g?\0?1wMR &M ?StT]G:I )B
 v1<t6:W{ x:=:!!\0xq&0}z\"]ozjw6JP[\\ }`S\0 qHM/7BP]FT8S5
/I\r\n O0aQ\n >2j;=dA=pVL)X\n`e\$TQJk7*O .\r\$#pWT>!v|} .%,;
f*?\0pD! #:MRcB/06	7@
\0Vvg hZ\nR\"@F	+EI\n8&2bXP=h[+\r:F\0:*\r}#!\"c
;h/0Ej]Z\0@iW_h;VRbP%!
b]SBUl	r\r-\0 \"Q=Ih	 FLFxR@\0*j5k\00\'	@ElOH Cx@\"G41`P(G91\0\"f:Q
@`\'>7dR41>rIHGt\nRH	b71fh)D8 B` (V<Q8c? 2E4j\09 \r@\0\'FD,!H=* E(?&xd_HE6~uG\0RXZ~P\'U= @l+A\nhIiPGZ`\$P.;E\0} Q%jAW\$!3r1 {%i=IfK!e\$ 80!h#\\HF|i8tl\$lli*(GL	  \$x.q\"Wzs{8d`&W\0&E15jWbVR-#{\0 Xig*7VF3`p@#7	 0[[h\\o{T]8l`f@reh\nW2*@\0`K(L\0vT\0c\'L : 0@L1T0b hW|\\-DN\ns3\"`2&\rU+^ReSni0ub	J2sps^n<Fla\0\0mA2`|6	nr\0D7&m-)\\\n= ;* bT
y7c|o /:tP<Y: K&C
\'G/@ Q *8
v/&W6p.\0u3Bq:(eOP p	\r0(ac>N|	t \n6v_e;y6fgQ;y[S	gOuddH
H= Z\r\'qC*) gEO \" !k(\'`\nkhT*s5REa\n#!1\0;Si@( lI v\rnj~ 63I:h\n.2pl9Bt0\$b p+*tJs JQ8;4P( !.Ppk@)65!(\n+{`=H,\\4\"[C1-luo4[E%\"w] ( Te)KAE={ \n`;?-G 5I.%q%EsgFs	 KGn4i/,i0ux)73SzgV[hDp\'L<TMjP*o\nH \n 4M-WNA/ @8mHRptpV=h*0	1;\0uGT6@s\0)6T\\(\"U,C:5iKlE*\"r .@jRJQ/L@SZP)(jjJL*\0\r-Q*Qg9~P@H\n-e\0Qw%^ ET< 2H@e\0 e#;ITl+A+C*Yh/ D\\!83AEE/}0tJ|1Qmn%(p!\nU)\rsEX5u%B- w]*E)<+qyV@mFH  BN#]YQ1:V#\$ <&Xx t@]Gj)-@qL\ncIY?qC\r v(@X\0Ov<R3XQJ
99lx Cud vTZkl\rJ\\o&?o6Eq \r \'3J6\'Y@6FZ 50VTy C`\0VS!&66rDf`Jvqz F @Z.\$kXkJ\\\"\" i:E\roX\0>PPmi]\0aV=I6jK3ZQmEb0:32V4N6 !l^@hhU>:	E>j0g\\|Sh7y \$ ,5a7&:[WX4q Jc8!H VD+D :9,DUa!X\$G B t9-+otL}qKx6&%xtR\"RIWA`c}l6~*0vkp68z+qXw*EIN*qPKFO\0,(|k *YF5;<6@QU\"\rbOAXvv)Ho`ST
pb j1+e Qx8@
5\\Q,Nb#YHp1kB8NoX3,#U\'\" eeH#zq^rG[:\rmng5V]-(W0~kh\\Z `lk ojW!.hF [tAweM 3!nK_SFj-S[rw0^hf-?X5/ IY V7ad 8bqbn\n1YRvT,+!NT2IK`K\"O)\nY4!}K^ D@na\$@ \$A j\\D[=	bHpSOAGho!F@lU`Xn\$\\_ `
HB]2
\"z0i1\\w.fy K)
 p0XS>1	*,] \r\"<cQ\$tq.	<+t,]L!{gX\$6 v  %GH
E X*0 )q
nC)I \"`KF@d5Ap{\\ pNr\'S(+5 + \"U0i!
nMbrK6r|a@x|ka
9WR4\"?5pkr7Hp 5YpWG#rAWD+`=\"}@H\\p)C3!sO:)_F/\r4<A\nn /T3f7P16OYq;aXtS<9nwsx@1xs?3@54
o0pR\0 
 yq L&S^:Q>\\4OInZnv 3
3+PL(
 .x \$ CCnAkc:L6 rwhnrZ==j6}MGu~3bg4s6sQ#:3g~v3<+<a}=e8\'n)cCz4L =h{iJ^~wgD jL^=6N\\DN E?h:S*>+uhhWE1j x t\'t [ wS9T[,jvtA #T9jK- YiQe?4_Wz@JkWYhpuj|z4	im	 O5 \0>|9 gVyu=}gs_Vs{k@r^(wH\'a=iN4_{6te [h-Ul?J0O\0^Hl\0.Zxu\"<	 /7  i:\n  ;!3_0`\0H`2\0H#h[P< gm@~(\0kYv#>\nz\n@Q\n( G\n \'k5n5@_`_l1wpPw\0coEl{7o0Ibnz { 8w=| /y3a#xq@ka !\08dmR[wvRGp8 v\$Zmtuop`2m|;#xmn~;VE3O\r,~ow[N} clyO;?~^j\"Wz:\'xW.	u(q<gvhWq\\;8)M\\5vx=hib-|b pyDHh\rce y7pxG@D= 1!4Ra\r9!\0\'Y@>iS>oofsO 9 .\"Fl20E!QD9dBW4\0y`RoF>Fa00	2<IP\'\\I\0\$\n R aU.s\"1 eY Zq1 |#G!PP\0|HFn p>W:`YP%\na8P>
`]4`<r\0z484`mh: HDj+p>*8 08A:]wz>9\n+:iiPoG01) ZneRgM gsLCr8! 3R)00sIJVPpK\n|9e[D0  z4o ,N8ns#{z3> BS\"; e5VD0[\$7z0=8	T 3Q\'RnLy\'\0o,\0:[}(|X >xvqW?tBE1wG;!5|0JI@#u I\\p8!\']l-lSB,]1HN8 %%	/;FGSh\\ct2|W\$t<hO +#BaN1{yw2\\Z&)db\',Xxm~H@:d	>=-
lKJ\0@r@\"(AZ7h>\\#>\0XrYYxq=:\rl omgbD_ TxC0. y R]_ZWI 
G	M(|@\0SOs {@k}FXSb8 =_ 
l\0=g{ HyG s_J\$hkFq d4\'>v [email protected]\"{K?shRd
`:yG\nQ
ow\'hS>LX}eG@9W|@_uZ=,!}\0I@#\"\'Y`\\?p,G_\'G	T #oH\r\"o}?O7|\'=8MQyaH? \0bUd67I O\"-2_0\r
? hOt\0\0002~ 4K,oh	Pcz`@\" H; ,= 
\'S.bS CcR,~X @ \'8Z0&(np<p32(.@R3@^\r+@ , \$	EtB, h\r><6]#;C.8P3;@L,+>p(#- f1z,8 P :9R )e\0R!\nr{eGA@*nD 6 N\rR8QK0 >PN
IQ=r<;&fNGJ;UAAP&`);!s\0p p\r n(@%&	SdYu C,8O#oRv,#|7\"CpB`jX3~ R@v9B#

 @\n
0>T-5/= E\n
d\"!;p*nZ\08/jX\r>F	Pe>OL
O
0\0
)k[	\'L	1 1\0C 1T
`Rzp< .>5\0> Bn <\"he>s!H{!\r\r\"| >R1d \"U@D63>o\rvL:K2+0>\0 B{!r*Hy;`8\0d\r02A?+\0\0Aw
Sl\r[6co=0z/J+ W[~C0e30HQPDPY}4#YD p)	|@&- /F	T	aH5#H.A>0;.Y	*D2 =3	pBnuDw\n!zCQ \0HQ4D*7\0J%puD (O=!>u,71 TM+31:\"PRQ?P +11= M\$ZlT7,Nq%E!S2&U*>GDS&ozh8881\\:Z0h T C+#A%D!\0XDA3\0!\\#h9bT!dYj2S\nA+HwD` (AB*+%EX. B#
&XeEo\"|r8W2@8Da| NhJ8[Wz{Z\"L\0\0 8xX@ Eh;af1;nhZ3E 0| A tB,~ W8^ <2/	8+O+ %P#\n??eO\\]7(#D(!c) NMFE#DXg)0A\0:rB``  QH>!\rB\0V%ceHFHm2B2I`#D>n\n:L9C0\0x((\nL\"G \n@`[ \ni\'\0)y)&(p\0N	\"N:8.\r!\'4|~\"cDlt 0c5kQQ+ZGk!Fc4Rx@&>z=\$(?(\n> 	Cqt-}G,tGW xqHfb\0\0zT9zwDmn\'ccb H\0z3! HHzIy\",- \0\"< 2 \'#H` d-#clj `i(_dg*j\r\0> 6 62kj<Cq9  I\r\$CA I\$x\rH78 ZpZrR _U\0l\rIRXi\0<r~xS%^%j@^T33GHz&\$(q\0f&8+\r%2hCxIlb(hSY& B`fxv n.L+/\"=I 0d\$4
7rA(4 2gJ(D=F(-\' XG29Z=,r` );x\"8;>&\',@2pl:0lI\rrJDhAz22p`O2h8HwtBFg`72{,Kl%C%om +X41\n2p 	ZB!=V+H6*\0k %< K\',3rI ; 8\0Z+E`+lW+Y-tfbQ_-+ 95 LjJ.G,\\.\$2J\\- 1-c.lfxBqK,d8AKo-3Kr/|
/\\r,H!Y10@.&|+J\00P3J-ZQ	\r&\nL*j|#\"A/8)1#7\$\"6\n>\n7L1 h9\0BZd#b:\0+A22\'\nt O2l.LHC\02 +L\\rKk+.;(D1sds9 P4@.
A nhJ13 K03J\$\02Lk3Q;3n\0\0,sI@u/VA1UM<Le4D2V% Ap\n235A-Tu531+fL~\n	-> M4XLS d*\\@Yk SDM5 Xf DsUs%	p+K6/8X=K6pH  %37lIK0LDu`P\rSO&(;L@N>S28(`JErF	2SEM M\$qE\$/I\$\\ID\"  \nw.tS	P#\nW-\0C :jR^S8;d`5aE+(XrM;3;B,*1 &2XS)< L9;RSNgIs+K<sLY-Z:A<OO*2vW7+| <T9 hy\$<#;v\$O\0 ,Hk 
- \r;O>7>3@O{.4pO?Tb..~O4S>1SS*4P>3\0W>2><P?4 @t\nNAxp%=P
@C@R?x\n0NwO?TJC@#	.dMt&=\\4A:L\$N:\rI\'
Ar;\r /CBi>L 7:9|C\$)z@tl:>C\nBi0G,\0FD%p)o\0 \n>`)QZIKG%M\0#\0D Q.H \'\$E\n \$%4ID3o:L\$m 0	B\\(8hDCsDX4TK{x`\n,\nE:p\n\'> o\0tI`
 -\0D/KP`/H\$\n= >UFP0UG}4B\$?E%TWD} *H0T\0t \"!o\0E7R.tfRFu!D\n\0F-4VQH%40uN\0DQRuE 	)I\n &Qm)m #\\
D(\$x
4WFM&R5H%q[F+IF \nTR3DLoy4TQ/E[<t^F )Q+4QI#IF\'TiX!F*nR>5pKm+s IRE+M\0(R?+HJ\"T
D\$ 	4wQ }Tz\0G8|xR6R	4XR6\n4ymNQNM &RH&2Q/7#{\',|\n	.\0>{o#1D;?UJ9*jFNJ #~%-?CL3@EP{`>Q%O)4R%I @%,\"I<\$TP>\n\0QP5DkOFTY<oQ=T\0x	5D,0?i?x  mE}>|[\0&RLHS9GI1M4VHoT-S)QGF [TQRjN#x]N(U8\nuU\n?5,Tm??@U\nu-R9U/S \nU3IEStQYJu.QFo\$&i	KPC6>5G\0uRu)U\'R0DuIUJ@	:V8*Rf%&\\RMU9RfUAU[TUQSe[\0KeZUaUhmS<,Rs`&Tj@G!\\x^0>\0&pQQ)TUPs@%\0W	`\$(1Q?\$CQp\nOJX#V7Xu;!YBSc+V#MUWHURU-+VmY}\\OKM\$SeToVHT!!<{RZA5R!=3U({@*Ratz\0)QP5HN5+P[9V%\"\nGSL9l\rV[ouUIYR_TYp5O\\q`U[Bu\'Uw\\mRU\\Es5K\\V\\S{AZ%O\$F>5EWVm`Wd]& \$!RZ}]}v5ZUgQ^y` !^=FR^vUKex@+r5#@?=us YNsS!^c5\$.u`\0XE~19JUZ@#1_[4J2 \n \$VI4n\0?4aR!U~)&B>tRI0
_EkTUS|Uk_8&E(?@J5JU BQT}HVjQx\neVsU=VN4\\xR34GD\":	KQ>[\rY_#!#][j<6X	c#KL}>`\'\05XcU[\0(Wt|tR]p/]H2IQO1SQjZHm)d^SXCY\rtu@Jp%M
?UQ\n=Rar:E-G\0\$d]meh*QWtc`AY=S\r	m-=MwH]J\" 
f\"{#9TeMcNIDU6g2e
aLQ&&uTX51Y >S Q#Ij\0W P?ub5FULn)V5R@\$
!%oP\'EUP- Bp\nF\$S4tUF|{q0Umjs\$jcaZI5Xj26&>v\n\r)2_kGTJeQ-cZVMz>]acc`tHj6+k M\0>##3l= \'^6\0vZ9Se\"bB>)/T=9\0`P \$\0]/0k-6{k[F\r|SJMQD=/WXVa\'atol Xj}C@\"KPom3\0#HVv~{ ?gx	n|[?U[rhG`
3#Gk%L\0I`CD	 \"\0#cN6fz;eeF7/N\r:QG9	\$I]TWGsdWMIfBc!#cnu&(S_wSf&TZ:0CSLN`Yj=>Z!=rV]g	r Xl-.U\'uJuJ\0sJ\'W%\\>?BVj4J}I/-rRLS3\0,RgqTf>1\0_\\V8
Ztc <^\\llj\0T]CwzIZwNpVWjvY>2	o\$|UWL%{toX3_RJ5~6\"Zl}`kceR=^U1w
7edvb=\0f ,m)Gp-)9L>| \"@5` :\0,t@xlJb6  aA\0AR[A0\$qoA S@<@y\" as.V^^\0H[H@bK)z\r=^zB\0No<t<x\00*R I{^E:{K1E0Y /c\"\04F7\' \n0`UT?MP l4r(	Z|& t\"IL w+m}Wi\r>U__u63y[8T-V}x_~%7{jMo_E~]P\$JCaXG 9\00075A#\0.\r_%\n\r#<MxJ|2\0;o^a+FLk;_#M\\
pr@OR~zANEYO	(1NR8Cn?O)1AD o\0\r? kJ\",OFa-b 6]PS) 5xC=@jLL:\" l#Bk@ N:>|B9	:N\$S CB:j6 Jk uK_WI =@Tv\n0^o\\ ?/&u._\rC+c ~Jb 6e\0y\0wxh8j%SVH@N\'\\N`n\runKqUB+f>G\r=@G
d \n)FO h fCX|I]3auy Ui^9y\no^rt\r8#N	VY ;c*%V <#h9r \rxcv(\ra(xja `g0VQ x(gl{gh`sW<Kj\';)Gnq\$p+_ d^&  Dx !bv!EjPV\' (=b\r\"bL\0bt\n>J1;4^ sQp`fr`7xE<l	8s\'PT
z_T[>:`1.;7@[>6!*\$`\0`, @ ?m>>\0LCRn/+`;C \0*<F+q
 M;1K\n:b3j1l:c>Yh#;38 5:\\\0XHaM1\\L[YC vN\0+\0t#\$ !@*l	FdhdF &f)=0 4x\0004ED6K\0nN];q4sj-=-8 \0sD
f5p4 J^\'[H^NR FKwz EgF|!codbx\0- 6,E_ 3up /wz( exRaHYce 59d\00@2@YfeyYcMh[ez\rv\\0e\\c [ueNY`]9h~^Yqe]qe_|6!u`f J
{7M{YjeCS6\0DuasFL}\$ (Mb ,0Bu2gxF{an:i\rPjerrGBY M+q
iYd`0,>6fo0 o Xf\0VL!f l6 /1e\0>kbf\r!uf<%(ra&	
 Y!mBg=@\r; \r5phI 9bm\$BYgx#@QEOm90\"!t O* \0>%\$orN&s9f4g ~jMfwygy\\`X1y5x^z_,& k|1xA6 \no&xgg{r?-|t3}gHgK9J<C C 197gh6!0HcdyfDA;9T0\0p  ! 6^.S?E(P . 5h EPJv .+\$5>P+?~g6\rhpz( W`\"y:Fad6:fi\0 A;e ^wf >y `-\r \0hr\rr8i\"_	9CIfX2\" hL~ \"%V:!% xyizygvx]}qgZ
i|`+ _g 6PA\$=9 h|p !.!i^i8zVCZ\"(9U)!DgU\0j?`4LTo@BN a{r:\nE8&=E*Z:\n?g h. N5(Shi2*cf@7z\"|rP .L8T\'k:(q2&ED2~9
v8 @^X=X`qZQ`9j5^@nqv3 (I6jdT\\  3,hk3(3PuV|\0 Uk;JQ . 	:J\r 1nBI\r\0h@?N\nsh\";r~7O\$ (5R	
jFYF ~xf \" vo#a P<h-3/Gxni@\"G?,ZpxX`v4X [I7X
c	!b}j_95qti6f5 FipX\'2r0D,#GU2I\rl( =Aa-8dbS4~H;0 6b{Rs3zN` + 4<^ay	}ryk&4@?~cE@LS@z^qqN</Hj^sC`sbgGy^\nN\n:GN}c\n + = p1NTB[d`noj;jwhc9p[y405N+`Xda/zn*P#t ~ 9W	V~=#n)	2;j:JkC!>x5==2. 
|\'[\';v;:SA	&[me n<6ma=Y.:g;Ix[IJ\0~zaYwT\\`V\n~P)zJQ@ [{rD
Bv|i-EK;^n{:Nh;2p699XhQ~iA@D j}ozLV~	8B?#F}FTdezcF g7  6#.ES.J35KJ;n5:ySCvo.{	d\\0?W\0!)\'Eg; +\0
Y Ntbp+ c\0B=\" 
c T:BcPIDV0!ROlO
N~aF|%)O	WoQw:l0h@:8Q&[nFp,@JTw9( <{O\r	 \$m/HnP\$o^U\"{<.nq8\r\0;n+3n{D\$7,Ez7\0l!{8x.s8PAFxrQ 1p+@d9OP5lK/\\msq vQ/	!z7oE :q V 5?GHOO \$l+ ,\r;~A{`7| r\'Ji\rc+|#+<&<W,>^P&nJhe%dCizXA\'D>Ek@Bw(.\n99AhNckN
d`p`%23H b2&< 9R(tTH	 z\' o>4?\rZw4` N\'-I 0(Srw,Kr\'-2Hlo-U_\'W#\'/Hj6 \0<j1EQTTrBcm16g:w6h@1I:2pL/w:K<E<J76s.sZ/\$AsEy rr:w?!?ZM9\01?AR%7>MARr}sr)\\t-8=U,WOCs #w5ERlM*D1>]gKV\n\\s8se9so~ w4x   f@D96\0	@. @9\0 C;Ky+Ju<\\`c{E>yJ=l/-7Z46uC5PRVlVaNx`?U7(HP}jVJzNQJSs-gQ!aV_SwRO3amZXwZo\'waOoZ![\n<ZO\'Omo[a=Q>:T\n\0 =mjATRbu(I:\$vWuS\\V8v\\g!Mu_&is\\CRVM]tXT7\\UoTo_S?alS-LutZGei`	}XZi}QyW[iT Yo (ZE\\}nifWd%Tpu3uTf5)v]UR3VEY]X\n^VqSS}XiGfv>SvJMQv \\g]QYE#1Vl5UEK]\0SU?\\BwSU 7mZV5\\Wf[eUr{G \\U,W[]xVj5mTVj~u7\0VU\'tw?ms5Vvq}u-Uq]c]W]Tt:f Mke][-p}^I[XDYVdO]	seNZWY[tV?3M`t^wd:qTL@@>]j\rFqv-LvGKwiLwIPMoMgv[Uss~	w:BANE{!-do\0}&
hXA5%fzLH5d Y_%v!m]%=B>E [#^}hYFa>{gSp[[email protected]\0 :  2#;vO}9ik]	&{ 2|a& Q)o:&.\05q\0JL64hy3aIz O\"yB{3%5r(m x.7rb%^ e M2\0x!b}.Y6\$qS\"^|xEaX59 \'TR	c9W1APh6\'o- p
T(\nn\r1RRUgxPe#*kT<<>b;\0gL.<kZvz8~y7Y7wO dn><E3wS @ oW1ze1z\0f=c g{>np\0:H Bn6FBrW=C>M.1~@3G98q<S|Y8QP`L[qzPN <{_-dOd-NB74B
N.V9Q3{IcP\$h<R yy?G:ng;Ah!&+>;M	6S N=#`T#+n;r,X|#\r# ?\nD>|VSe~Jm99\ns{S|r],~ qI?\"|w%|j\0rE,kSnqd8B.1\"/|]ENlxI Ic.|\$8DFPK3\\jxUC/
A{e
  \rpU\nWloY{`]\'s /|o 3r};[nOM7
qq(_lqsNy;igt:qk {?zMo\' j cyggkwf8Vc7fAY+Kx=gKAkT,95rd+G[ %Aw7 % {m8%_mq V_ %!Ei~h ~C~% _rLkDy~?p1O!? v\\Pm\"<E6 EVzk9z 
~/!Q> ONm3r Fle;M_a !~Cfb}3 Kf. 	}.DX	i5|?=\0???@fu~a^nyQ; q )sS,\"G \nu%UYAKl\nBI86VCcO\0`}.x,-N@~TG\'dJy1zlfgAB a!M\\<gz4@/C@	Qq)x/.7inD#= *79cFd2( .V3\$g`Arl|mb/qE !bU@9i;ppd=1yxx	=v=(vs_Bo# K\r n\\# fPXu-3&	J&,F(9v0
&@khZy
gCz hi=s9T eT>g3dtF2b&:\0PB-Q8~LSM cgTh\'f(\$.EVLAI r g\r0
 T1P`1d\r4=6@F F=6A>NAV	(\$A/
; ?gf^	\n&KOn{]g8c\n7Lt: hFVO\rJ)b(\"OBm	o\$]TSHZ^Kw\\[A9(\'c b0 K  srBx\n*Baz6o\ry&tX1p\'^M<Cg`48GHzd?gX .@,7w:+TiUX16 Ls:\rL6fr\r`t 67~gxgH9JO=- \$4?r4O:z{D`21F(DM;&U>I6c@\r//_ H\n7z 7a [9D\'}BORB#s]z!(D@L^	x@ouOD!e`\nak>0`-* 8EZ6=f%cK=F\rShyN[v*v\r@#Ah*L\$AA\\%*	p \r*==8
\$W\r [Jx0yZ+&YHA~A\n,\\(p!F<6S&IP`6Xz+df\rJis+&5/rEM^\$R(RQEw3lH*m\0BqarLBQz6~lB\rIGXXVbsmBHc_K\$ p-:8Nj:-#F	\0aiBs\\)<.!\\N
bIw8tPjW`y\0&0i?:Ia)=C ,a&Map\$IIFc\0! Yxa)~C1 PZL3TjC\0y`\\W\\t\$2\n+a\0aKb\n] C@?I \rHKs%N^9CL/=%h:?&PEY>5
n[G%V *w<gJ]*wd]B5^OQ>%s{
;WzGi*RnG9E ,(u* Xs R:5;)RN vK (RMb_{F<<3:%HVYS\n%L+{o.>Z(QkN!,:rH}nRNkI		[g;mYg%
9V~-J_g\\Q\n!t\\UY-tZnd:B*]\')tw[BUm*r4 *yvvZ+GH ZnP|\nT %#\\AX\0}5b+wrXw1u%Cg=Iv`cre0`..<h+H^\\jyF%]B\0r+> %Zx %C.`Vn1KSk\r X|[;6H	U@D:Mj	?]bA+G\0thxbL`64M Y#hfD=ew=c+H:.%^\$DZrAzjfLl7o\0-Edyz\'V W	ZK+d(AfyP?xR^h\' A\0:p\rd(V dt	SFcH]rrCHY	X_/f 4 7e6D{,<<Z^j\"	\n+MY9A(<Pllp	,>{E9& Ghh{(Agg8 (@jTngZ J x@ic (p\'oJ0 Mn&\r\'\0\r qF 4 )cL_oJ}5co  |6m}Q4Qb[xm( &@;+f|I R48 {	`k`ur`W`\")fI\n;8Zjg~A!j%T E\\\r3EjjFXZ	AykH XdgCQ0d t	zk`@\0001\0nH\04\0g&. \0\0O(P@\rE\0l\0 X \rE8x@\0^z@E\0.^Qq\" YD_p &3\0mZ.Pp \rEsv\"0`w,_`\rc/]xq3\0q.pq \0002_i E\0a1bwJ \0l\01,`1y\09#?0T^q\$F6/\$dFDyJ0b\0	W\0.c{c E\0s 3l]@\rbF\"\02`\"7/ \0a	^04eQ{c<j/_c\0001*28BA \0000xi1F 50ljH\"F30\\_q\0fTl_0BE#3]s 64_X1\0 d``\rS_JMV/f1\0005I6tf 4F34f  F-6d\"4k\$h #E\06_0 1c@F
/d]XQ#G\n 5gqEF\nm\\DnqYFv1/4` q4=8bq|\00043mX1e\0.\\ QcI	.7\\x`\"\0i^3(\"Ev4l_q\$F o \r#UE^9t.\03|r1\069l^xPF-]\n0vQy\"G2,sxQq#F+\0/Diq}8[6,j\0cmoN5eh QvGLH<T_Q?F..\$fyEC2l1s#E Dlohj 8ebF!9`xqC7hx7^xK<h	,uG);lu #E<kb\0sR.w#z~w2|x(\0001\' :v\0001G?|` .2X#G8K@<z1\"9|j	G/6qGs7/\0001b:|8Q#~FW4g#<F\r 2XQ#Fvk7x1#@rhFZ;frcy!\r	_x1\"H10Twc\rF1 \n8dXr2Db{d4HrA<~1dBHI[J?q~k0t#F\r#0\\h\rGEttc7U!=D_cN\0y6a Fg!v1q1K@ecGo\n/E\"3t`#cH<cqF% ?Tbd) r0qcE>3\$tyQECl`9)VFHMJ7f\$HHQ ;ri7#F-FHQ#\0G!1^&4vG&7g \$\0G\rr/dR(s6@\'RA&g\0k z=|H ^J]sd, \$1 <cqJ_bGQvJH5
FpIc[@r vH%3Dc<I\$M.dr1c=F.4c2bG.!L|{X{INFdxqsc#Ea)#GJm.\$=GhAN=sEGG\\a10HF.tg8[Idn8F.TF3E6riqsF
6xrL=nFTod >-3|2\$0= :xcHI\"NP\$bQ\$F D}F %?(G3\$O\$^x2T0R#D:E|i/2XG8-\$Hv=d `:laxI:XRJRmxJ#\nGG9!N{cI&I R=I\r&j:8g#H\'3_xbH}>7 c\"&K<x2H \"6@dbe;)!.]/dm*f6,vL(qAI87d9TtcULX%HI*z:|IXqs-Bq^(Raq(~e
 9JU+-eq*nT >\$er p\n\$es+VIbeq:#]cc7r\nf,gYTC%	}\0\\*EWPa:E,&Wp)xlM3\0t\0/IipD\'\0	k\$TF]fdMK\$H(@(znW_ M*\0elF^H	W*BZPeR/dRR\0Ku,yH)\"SXI\'Z=LR3\n\'[k6@;}RI_) w[ \nnbBrl,\$vH \\s* 
.QtBdb@?3S`a@K\\. ~f),?|&KZ9.X+S|\0PEe/\0V^K\0\n-	:S)0j9TXBK\",2\'2P,x  pK\"D#TVD1Ao;/9TH%V`WJ<9ae K/V^/Q \nBZ\"9XM~\$5 \$0dIU2^X\n*E7I\nV3+aIiNKKg0az*V#bJyMeZ V `U1C.\rF-j&LUp9s +Q&1RmgZ	,.Xr
yZ032A1eN(?Al ,Nue\$|r_%E05E}\$X2%Ze \n\";<9ah
 a]8 *u
LdR0+Qm.,GM_2edB,S2>U4vl~e22eYg2nf=\$%Ffa)fTGg2W,[X>)tA]R*&Z6j2|\0 (p	9 u?`n-lZn!H9zL9VLyZJhRgEfLU ~`4Yx)\$BQR#S,6i#Y,;Cri&X]\nw54Kx\n*&TW +SqNcyIW\0W5c&+Vr)Kg?  |gR hR%K)Z#5,k`l: LsC[MUB6ldJ1nl:jL\0h 
*)p/5\\<9V/hTdjrMbx\n]RWR MaU3=`0o,Zl
}mlmLS6\\tL \\%JK7oefMoCYvNV4=RsJ*hhn-m44 yHM|isU=A\$i>ppQfq,5s UL8}#XHI9U8c:If7kl5}fLYN2}&	ic,I3R6r3b6>lXYfL )+S,*elU\"ed\"Z6ZDE9%Y9rmtE\'.M[4^;Mw59av+70ld%<3 _<lN (v+7YRl].4I)=NT]\'U^?S7XC1u9EkL;NhSqNXk;1[LgpVB1_gs ;RlENT8w,s1Pxr q3(;Z	y\'{O	_rMg|I92eLfO\rY nku SNv9Vk	3.v 9zyd)NY&s\$jd\'6Q<V)e+:Yjtpu<3]qMY:9XSgI*mCv GR@jT=:e (\0_Vn,?p	3\' \r |\"igTnP\nq,Sf.YQ AA,ZeSsE\rv
TQZ\"pIsUA\0vZ}rKtfP
f9{^J\n0%NG*~lD.Ke6[,%O- ~jRO;@	enb_%sKYY0LWjr  !BPvfwMR22z4rh;#M@}\0| M\0== f-!6p g[P4 C[5:\rCt u@<ifNun[!u8j{&9Ku FQlRi(C As4\0Y ;fB<{R_I~6|MWTA]4e@JeP|[r5*O Bt)%-\0Pjm	us}Bi^*z0YK.`[Y2|XB(?.\$l,XD\njOD ->_<
\0sh\\ea\\\0eY`7U\"eCYTzt:V9P_aF;\0M 2eHCZ?V\'}cYa?Qh8	0
QCM`6,JeZZ\"GWu u\r>49KI%LV9Z{VEOX;o agP\$\nRX@}!-Si Rqz	ITH.\nk\n \ndT>\n ?E`5D+f?#zIZ7T[Qs#D \$
PI 	3*:9YIHHX0D !u7Jm YB}E r8Q\n}\'PS	Q\$`R)^(OP\0aKm3 \$H.X)V`9 .Y18eU`X9	\\LcjIE N6WDXB	Z:|:	E-P-&) *l)Puy|RLh.p_* QA  @ ?,Y)t<P*jVuQ: 2\0L?J,TPHLE%\0yP(YJZTHX\r	Q4hO;\\vV#TWw\\`O?JR2=F]I5TMjI9,(Dv|t) Wy-]zea,pQ6\$I-g=%SW#TP)T&]X15j B8V\nem yh*d4bd!0gRJ\\ Mt1R\n\nx._u +;*4)]\\l( m\"Q nT(*\0`1H@2	6h YcH_
f?a7=KKdetH 2\0/\062@b~`\0.\0v) !~JPTO{t\0005 / \rJ^0a!)8%KPP 4~H\r+Lb/24)GKe0 eS1B	-0jfSwLid  L\r1hS MJJht)+?Le5n|FHMN5jSHL4=TDMn6Zm@I@S`)\'7fzSzx~OU1kSFMOU4p2\000076 k#xSl\'K77\nlxSu LR77stxS}GM78*qt#xS OM\"78u)\09r)Sr2; 
)7Njm/ xsN:jy4 SgO:1=\ncTS;{S/ORH\r=tT IO\\zx4SM>j|TiSO ~\$lO}tOz*%]PPvU\"K @\no jH;P>1FdP.5B\r3uB<
L#<QPECu*\nyPNl\r6?KmBZijHO2}1JM_MmD &KQ6Fzv6Qj;jj)*mE
9FdQv5eGdEM\0+D\"j)SDQpZfmR&H U%{Rv0m0zL@\'ER?eJ>MIYTR/B.UTYRL:jNRL5ji&,OmJD5,9Q1hTfNQ\'7Lih\rcjSzu\0ng 9@c\rT%LAfTMT9uQ\n)USuD:jU	Pq*EKSbl\\FGTzgJHSF	\"Q:1; RL*~EoT\\z :]SBU^JuR*kE	TQtRg2UjV\$_SmPHU\\T[U5Jh\\UpV7a_*
=R>\0I*VX:hU8jTKZ\\:)jT8	WZUbJ8
R=YUVUR\\:-jiV.[z-{TZuojU3 [>E %\\h#bWZ-\\CW>]g4#KTrZwj\$z-RjtjU*Wtp\n4\'NMxUX32[x+\$BUS*qUqXZ}Sx@-W\n5XZJU2=\\F+V0]XXU0-VJ +/Z5sjDU%b
V%Y^u@dWRk&YR\\RkYcVO-\\	kdKoXK/9]VO-U<@V[6U=e o4TY0eH\r96 (+7ybrI
 | \0:Fz\n|s<R%J  ]F3jYZ^ <5XIJM`nO\\B&rsQuzx	TVwJ5g	?vqF496zjOV\ru=@fTy	pKaXU9m\nekMo5\nhT V v:
s\\p>L:)O=nk}jS&~ y eZ)jtVRVsr:+ao,!Tl U*n5\\Udv+M\\)]B|Jl;45pL7Li[~bmtSe\"Bvd@S4)Z\$)5ic!\\R*SDw\$9tS\nGfP*	KDVy5uJ\\C\$W,M\\5k^Vs 5kM^{uwFQ JHgWNk8 +1brVX]dLjYTv6twyk vx=5 h8]x\"c|ufU\05j}PknRlf +>c4W+TDo qSXb}}hn&<?/3-h qn	p%)SyP\rm-f5 [\\=T }y ) Yd46#Y>3 m\n09h;40+ae\n!)@xx }\$AF0N R	iU?b5!+\0Gw{lI )w-4;p8;@\r\n \r
 N5F \\hgPE il0
X%)\nLk^2<5FdI<FjbMd\'	DBmaOYXgg8ZV%mf%F-,\naFwfs0GZ\n	1 ;J1\"iPByCtz;l4JmLX+l{8\"\nV(\$Y\0d\\ 6D9BHd%16f \"TJ`/>C=c?e!k*3l~i,
Az/d 
Mon\"zTr}e{MaC7fiT/6WP8 Fa` 5Mf2V][\'}cn4]heZ\r2XllGa`(( \0_lOf&f1c8D{Q	S
6p\0Y\0\rq3
m&*f;p6r^c`&zn^;DSoj^=L\'g5&Ef&|\nK 6?bX*.fE~&9!dk@v\"FGx\\=E 7XP2[:\0  X~7X6 4(\";B\nXhy&DZl\nKC p`mS	2U;G 8{ -WBm\$F\r l&BY2\rmAwZ6R%d_T5``BaGcXK\r\0gN\\;N  s^\nuVwzU F\"\0T-,^\02 /  EW/\04;\"K-NZ
McRVNeZwj 6ayKVlN?jt2T/[Nj|0t% #\0`5F< X@\nZF\\-mcd2p5Gv\'B\'7{k *\'LAZ|Ik\n-.C6
k-Sk]_\$  +G [^z
]k8\\F|?B
^B|@ BzPW /R?[!bBk \'	(e:xf r7\r_q Ma\0#7|Q&\0@) 1 LA[Pt\0`6\\ezxSvU:T>f\nql+K(|\\ GU@(*iS%F\rR\$CL;dg-\$m?lh 3?PY\0");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0!M*)o) qe#L\0;";break;case"cross.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0##\naFo~y._wa1J
GL6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0 MQN\n}a8 ya\0\0;";break;case"down.gif":echo"GIF89a\0\0\0001\0\0\0\0\0!\0\0\0,\0\0\0\0\0\0 M*)[W\\L&\0\0;";break;case"arrow.gif":echo"GIF89a\0\n\0\0\0!\0\0\0,\0\0\0\0\0\n\0\0i\0\0;";break;}}exit;}if($_GET["script"]=="version"){$ld=file_open_lock(get_temp_dir()."/adminer.version");if($ld)file_write_unlock($ld,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$g,$m,$ic,$qc,$_c,$n,$nd,$td,$ba,$Td,$y,$ca,$me,$pf,$bg,$Gh,$yd,$ni,$ti,$U,$Hi,$ia;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],\'?\')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$ba=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");$Of=array(0,preg_replace(\'~\?.*~\',\'\',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,\'5.2.0\')>=0)$Of[]=true;call_user_func_array(\'session_set_cookie_params\',$Of);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Yc);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",15);function
get_lang(){return\'en\';}function
lang($si,$ef=null){if(is_array($si)){$eg=($ef==1?0:1);$si=$si[$eg];}$si=str_replace("%d","%s",$si);$ef=format_number($ef);return
sprintf($si,$ef);}if(extension_loaded(\'pdo\')){class
Min_PDO{var$_result,$server_info,$affected_rows,$errno,$error,$pdo;function
__construct(){global$b;$eg=array_search("SQL",$b->operators);if($eg!==false)unset($b->operators[$eg]);}function
dsn($nc,$V,$F,$xf=array()){$xf[PDO::ATTR_ERRMODE]=PDO::ERRMODE_SILENT;$xf[PDO::ATTR_STATEMENT_CLASS]=array(\'Min_PDOStatement\');try{$this->pdo=new
PDO($nc,$V,$F,$xf);}catch(Exception$Fc){auth_error(h($Fc->getMessage()));}$this->server_info=@$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);}function
quote($P){return$this->pdo->quote($P);}function
query($G,$Bi=false){$H=$this->pdo->query($G);$this->error="";if(!$H){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=\'Unknown error.\';return
false;}$this->store_result($H);return$H;}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result($H=null){if(!$H){$H=$this->_result;if(!$H)return
false;}if($H->columnCount()){$H->num_rows=$H->rowCount();return$H;}$this->affected_rows=$H->rowCount();return
true;}function
next_result(){if(!$this->_result)return
false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
result($G,$o=0){$H=$this->query($G);if(!$H)return
false;$J=$H->fetch();return$J[$o];}}class
Min_PDOStatement
extends
PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch(PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch(PDO::FETCH_NUM);}function
fetch_field(){$J=(object)$this->getColumnMeta($this->_offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$J->charsetnr=(in_array("blob",(array)$J->flags)?63:0);return$J;}}}$ic=array();function
add_driver($u,$D){global$ic;$ic[$u]=$D;}class
Min_SQL{var$_conn;function
__construct($g){$this->_conn=$g;}function
select($Q,$L,$Z,$qd,$zf=array(),$_=1,$E=0,$mg=false){global$b,$y;$ae=(count($qd)<count($L));$G=$b->selectQueryBuild($L,$Z,$qd,$zf,$_,$E);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$_!=""&&$qd&&$ae&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($qd&&$ae?"\nGROUP BY ".implode(", ",$qd):"").($zf?"\nORDER BY ".implode(", ",$zf):""),($_!=""?+$_:null),($E?$_*$E:0),"\n");$Ch=microtime(true);$I=$this->_conn->query($G);if($mg)echo$b->selectQuery($G,$Ch,!$I);return$I;}function
delete($Q,$wg,$_=0){$G="FROM ".table($Q);return
queries("DELETE".($_?limit1($Q,$G,$wg):" $G$wg"));}function
update($Q,$N,$wg,$_=0,$hh="\n"){$Ti=array();foreach($N
as$z=>$X)$Ti[]="$z = $X";$G=table($Q)." SET$hh".implode(",$hh",$Ti);return
queries("UPDATE".($_?limit1($Q,$G,$wg,$hh):" $G$wg"));}function
insert($Q,$N){return
queries("INSERT INTO ".table($Q).($N?" (".implode(", ",array_keys($N)).")\nVALUES (".implode(", ",$N).")":" DEFAULT VALUES"));}function
insertUpdate($Q,$K,$kg){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($G,$ei){}function
convertSearch($v,$X,$o){return$v;}function
value($X,$o){return(method_exists($this->_conn,\'value\')?$this->_conn->value($X,$o):(is_resource($X)?stream_get_contents($X):$X));}function
quoteBinary($Xg){return
q($Xg);}function
warnings(){return\'\';}function
tableHelp($D){}}$ic["sqlite"]="SQLite 3";$ic["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(class_exists(isset($_GET["sqlite"])?"SQLite3":"SQLiteDatabase")){if(isset($_GET["sqlite"])){class
Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function
__construct($q){$this->_link=new
SQLite3($q);$Wi=$this->_link->version();$this->server_info=$Wi["versionString"];}function
query($G){$H=@$this->_link->query($G);$this->error="";if(!$H){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return
false;}elseif($H->numColumns())return
new
Min_Result($H);$this->affected_rows=$this->_link->changes();return
true;}function
quote($P){return(is_utf8($P)?"\'".$this->_link->escapeString($P)."\'":"x\'".reset(unpack(\'H*\',$P))."\'");}function
store_result(){return$this->_result;}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->_result->fetchArray();return$J[$o];}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($H){$this->_result=$H;}function
fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$e=$this->_offset++;$T=$this->_result->columnType($e);return(object)array("name"=>$this->_result->columnName($e),"type"=>$T,"charsetnr"=>($T==SQLITE3_BLOB?63:0),);}function
__desctruct(){return$this->_result->finalize();}}}else{class
Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
__construct($q){$this->server_info=sqlite_libversion();$this->_link=new
SQLiteDatabase($q);}function
query($G,$Bi=false){$Pe=($Bi?"unbufferedQuery":"query");$H=@$this->_link->$Pe($G,SQLITE_BOTH,$n);$this->error="";if(!$H){$this->error=$n;return
false;}elseif($H===true){$this->affected_rows=$this->changes();return
true;}return
new
Min_Result($H);}function
quote($P){return"\'".sqlite_escape_string($P)."\'";}function
store_result(){return$this->_result;}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->_result->fetch();return$J[$o];}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($H){$this->_result=$H;if(method_exists($H,\'numRows\'))$this->num_rows=$H->numRows();}function
fetch_assoc(){$J=$this->_result->fetch(SQLITE_ASSOC);if(!$J)return
false;$I=array();foreach($J
as$z=>$X)$I[idf_unescape($z)]=$X;return$I;}function
fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
fetch_field(){$D=$this->_result->fieldName($this->_offset++);$Zf=\'(\[.*]|"(?:[^"]|"")*"|(.+))\';if(preg_match("~^($Zf\\.)?$Zf\$~",$D,$C)){$Q=($C[3]!=""?$C[3]:idf_unescape($C[2]));$D=($C[5]!=""?$C[5]:idf_unescape($C[4]));}return(object)array("name"=>$D,"orgname"=>$D,"orgtable"=>$Q,);}}}}elseif(extension_loaded("pdo_sqlite")){class
Min_SQLite
extends
Min_PDO{var$extension="PDO_SQLite";function
__construct($q){$this->dsn(DRIVER.":$q","","");}}}if(class_exists("Min_SQLite")){class
Min_DB
extends
Min_SQLite{function
__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
select_db($q){if(is_readable($q)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$q)?$q:dirname($_SERVER["SCRIPT_FILENAME"])."/$q")." AS a")){parent::__construct($q);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return
true;}return
false;}function
multi_query($G){return$this->_result=$this->query($G);}function
next_result(){return
false;}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($Q,$K,$kg){$Ti=array();foreach($K
as$N)$Ti[]="(".implode(", ",$N).")";return
queries("REPLACE INTO ".table($Q)." (".implode(", ",array_keys(reset($K))).") VALUES\n".implode(",\n",$Ti));}function
tableHelp($D){if($D=="sqlite_sequence")return"fileformat2.html#seqtab";if($D=="sqlite_master")return"fileformat2.html#$D";}}function
idf_escape($v){return\'"\'.str_replace(\'"\',\'""\',$v).\'"\';}function
table($v){return
idf_escape($v);}function
connect(){global$b;list(,,$F)=$b->credentials();if($F!="")return\'Database does not support password.\';return
new
Min_DB;}function
get_databases(){return
array();}function
limit($G,$Z,$_,$hf=0,$hh=" "){return" $G$Z".($_!==null?$hh."LIMIT $_".($hf?" OFFSET $hf":""):"");}function
limit1($Q,$G,$Z,$hh="\n"){global$g;return(preg_match(\'~^INTO~\',$G)||$g->result("SELECT sqlite_compileoption_used(\'ENABLE_UPDATE_DELETE_LIMIT\')")?limit($G,$Z,1,0,$hh):" $G WHERE rowid = (SELECT rowid FROM ".table($Q).$Z.$hh."LIMIT 1)");}function
db_collation($l,$lb){global$g;return$g->result("PRAGMA encoding");}function
engines(){return
array();}function
logged_user(){return
get_current_user();}function
tables_list(){return
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN (\'table\', \'view\') ORDER BY (name = \'sqlite_sequence\'), name");}function
count_tables($k){return
array();}function
table_status($D=""){global$g;$I=array();foreach(get_rows("SELECT name AS Name, type AS Engine, \'rowid\' AS Oid, \'\' AS Auto_increment FROM sqlite_master WHERE type IN (\'table\', \'view\') ".($D!=""?"AND name = ".q($D):"ORDER BY name"))as$J){$J["Rows"]=$g->result("SELECT COUNT(*) FROM ".idf_escape($J["Name"]));$I[$J["Name"]]=$J;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$J)$I[$J["name"]]["Auto_increment"]=$J["seq"];return($D!=""?$I[$D]:$I);}function
is_view($R){return$R["Engine"]=="view";}function
fk_support($R){global$g;return!$g->result("SELECT sqlite_compileoption_used(\'OMIT_FOREIGN_KEY\')");}function
fields($Q){global$g;$I=array();$kg="";foreach(get_rows("PRAGMA table_info(".table($Q).")")as$J){$D=$J["name"];$T=strtolower($J["type"]);$Wb=$J["dflt_value"];$I[$D]=array("field"=>$D,"type"=>(preg_match(\'~int~i\',$T)?"integer":(preg_match(\'~char|clob|text~i\',$T)?"text":(preg_match(\'~blob~i\',$T)?"blob":(preg_match(\'~real|floa|doub~i\',$T)?"real":"numeric")))),"full_type"=>$T,"default"=>(preg_match("~\'(.*)\'~",$Wb,$C)?str_replace("\'\'","\'",$C[1]):($Wb=="NULL"?null:$Wb)),"null"=>!$J["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$J["pk"],);if($J["pk"]){if($kg!="")$I[$kg]["auto_increment"]=false;elseif(preg_match(\'~^integer$~i\',$T))$I[$D]["auto_increment"]=true;$kg=$D;}}$yh=$g->result("SELECT sql FROM sqlite_master WHERE type = \'table\' AND name = ".q($Q));preg_match_all(\'~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\\'[^\\']+\\'|\S+)~i\',$yh,$Ce,PREG_SET_ORDER);foreach($Ce
as$C){$D=str_replace(\'""\',\'"\',preg_replace(\'~^"|"$~\',\'\',$C[1]));if($I[$D])$I[$D]["collation"]=trim($C[3],"\'");}return$I;}function
indexes($Q,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$yh=$h->result("SELECT sql FROM sqlite_master WHERE type = \'table\' AND name = ".q($Q));if(preg_match(\'~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i\',$yh,$C)){$I[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all(\'~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i\',$C[1],$Ce,PREG_SET_ORDER);foreach($Ce
as$C){$I[""]["columns"][]=idf_unescape($C[2]).$C[4];$I[""]["descs"][]=(preg_match(\'~DESC~i\',$C[5])?\'1\':null);}}if(!$I){foreach(fields($Q)as$D=>$o){if($o["primary"])$I[""]=array("type"=>"PRIMARY","columns"=>array($D),"lengths"=>array(),"descs"=>array(null));}}$Ah=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = \'index\' AND tbl_name = ".q($Q),$h);foreach(get_rows("PRAGMA index_list(".table($Q).")",$h)as$J){$D=$J["name"];$w=array("type"=>($J["unique"]?"UNIQUE":"INDEX"));$w["lengths"]=array();$w["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($D).")",$h)as$Wg){$w["columns"][]=$Wg["name"];$w["descs"][]=null;}if(preg_match(\'~^CREATE( UNIQUE)? INDEX \'.preg_quote(idf_escape($D).\' ON \'.idf_escape($Q),\'~\').\' \((.*)\)$~i\',$Ah[$D],$Gg)){preg_match_all(\'/("[^"]*+")+( DESC)?/\',$Gg[2],$Ce);foreach($Ce[2]as$z=>$X){if($X)$w["descs"][$z]=\'1\';}}if(!$I[""]||$w["type"]!="UNIQUE"||$w["columns"]!=$I[""]["columns"]||$w["descs"]!=$I[""]["descs"]||!preg_match("~^sqlite_~",$D))$I[$D]=$w;}return$I;}function
foreign_keys($Q){$I=array();foreach(get_rows("PRAGMA foreign_key_list(".table($Q).")")as$J){$r=&$I[$J["id"]];if(!$r)$r=$J;$r["source"][]=$J["from"];$r["target"][]=$J["to"];}return$I;}function
view($D){global$g;return
array("select"=>preg_replace(\'~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU\',\'\',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($D))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($l){return
false;}function
error(){global$g;return
h($g->error);}function
check_sqlite_name($D){global$g;$Oc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Oc)\$~",$D)){$g->error=sprintf(\'Please use one of the extensions %s.\',str_replace("|",", ",$Oc));return
false;}return
true;}function
create_database($l,$d){global$g;if(file_exists($l)){$g->error=\'File exists.\';return
false;}if(!check_sqlite_name($l))return
false;try{$A=new
Min_SQLite($l);}catch(Exception$Fc){$g->error=$Fc->getMessage();return
false;}$A->query(\'PRAGMA encoding = "UTF-8"\');$A->query(\'CREATE TABLE adminer (i)\');$A->query(\'DROP TABLE adminer\');return
true;}function
drop_databases($k){global$g;$g->__construct(":memory:");foreach($k
as$l){if(!@unlink($l)){$g->error=\'File exists.\';return
false;}}return
true;}function
rename_database($D,$d){global$g;if(!check_sqlite_name($D))return
false;$g->__construct(":memory:");$g->error=\'File exists.\';return@rename(DB,$D);}function
auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
alter_table($Q,$D,$p,$fd,$rb,$yc,$d,$Ka,$Tf){global$g;$Mi=($Q==""||$fd);foreach($p
as$o){if($o[0]!=""||!$o[1]||$o[2]){$Mi=true;break;}}$c=array();$Hf=array();foreach($p
as$o){if($o[1]){$c[]=($Mi?$o[1]:"ADD ".implode($o[1]));if($o[0]!="")$Hf[$o[0]]=$o[1][0];}}if(!$Mi){foreach($c
as$X){if(!queries("ALTER TABLE ".table($Q)." $X"))return
false;}if($Q!=$D&&!queries("ALTER TABLE ".table($Q)." RENAME TO ".table($D)))return
false;}elseif(!recreate_table($Q,$D,$c,$Hf,$fd,$Ka))return
false;if($Ka){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $Ka WHERE name = ".q($D));if(!$g->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($D).", $Ka)");queries("COMMIT");}return
true;}function
recreate_table($Q,$D,$p,$Hf,$fd,$Ka,$x=array()){global$g;if($Q!=""){if(!$p){foreach(fields($Q)as$z=>$o){if($x)$o["auto_increment"]=0;$p[]=process_field($o,$o);$Hf[$z]=idf_escape($z);}}$lg=false;foreach($p
as$o){if($o[6])$lg=true;}$lc=array();foreach($x
as$z=>$X){if($X[2]=="DROP"){$lc[$X[1]]=true;unset($x[$z]);}}foreach(indexes($Q)as$ge=>$w){$f=array();foreach($w["columns"]as$z=>$e){if(!$Hf[$e])continue
2;$f[]=$Hf[$e].($w["descs"][$z]?" DESC":"");}if(!$lc[$ge]){if($w["type"]!="PRIMARY"||!$lg)$x[]=array($w["type"],$ge,$f);}}foreach($x
as$z=>$X){if($X[0]=="PRIMARY"){unset($x[$z]);$fd[]="  PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($Q)as$ge=>$r){foreach($r["source"]as$z=>$e){if(!$Hf[$e])continue
2;$r["source"][$z]=idf_unescape($Hf[$e]);}if(!isset($fd[" $ge"]))$fd[]=" ".format_foreign_key($r);}queries("BEGIN");}foreach($p
as$z=>$o)$p[$z]="  ".implode($o);$p=array_merge($p,array_filter($fd));$Yh=($Q==$D?"adminer_$D":$D);if(!queries("CREATE TABLE ".table($Yh)." (\n".implode(",\n",$p)."\n)"))return
false;if($Q!=""){if($Hf&&!queries("INSERT INTO ".table($Yh)." (".implode(", ",$Hf).") SELECT ".implode(", ",array_map(\'idf_escape\',array_keys($Hf)))." FROM ".table($Q)))return
false;$zi=array();foreach(triggers($Q)as$xi=>$fi){$wi=trigger($xi);$zi[]="CREATE TRIGGER ".idf_escape($xi)." ".implode(" ",$fi)." ON ".table($D)."\n$wi[Statement]";}$Ka=$Ka?0:$g->result("SELECT seq FROM sqlite_sequence WHERE name = ".q($Q));if(!queries("DROP TABLE ".table($Q))||($Q==$D&&!queries("ALTER TABLE ".table($Yh)." RENAME TO ".table($D)))||!alter_indexes($D,$x))return
false;if($Ka)queries("UPDATE sqlite_sequence SET seq = $Ka WHERE name = ".q($D));foreach($zi
as$wi){if(!queries($wi))return
false;}queries("COMMIT");}return
true;}function
index_sql($Q,$T,$D,$f){return"CREATE $T ".($T!="INDEX"?"INDEX ":"").idf_escape($D!=""?$D:uniqid($Q."_"))." ON ".table($Q)." $f";}function
alter_indexes($Q,$c){foreach($c
as$kg){if($kg[0]=="PRIMARY")return
recreate_table($Q,$Q,array(),array(),array(),0,$c);}foreach(array_reverse($c)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($Q,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
false;}return
true;}function
truncate_tables($S){return
apply_queries("DELETE FROM",$S);}function
drop_views($Yi){return
apply_queries("DROP VIEW",$Yi);}function
drop_tables($S){return
apply_queries("DROP TABLE",$S);}function
move_tables($S,$Yi,$Wh){return
false;}function
trigger($D){global$g;if($D=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$v=\'(?:[^`"\s]+|`[^`]*`|"[^"]*")+\';$yi=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$v\\s*(".implode("|",$yi["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($v))?\\s+ON\\s*$v\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$g->result("SELECT sql FROM sqlite_master WHERE type = \'trigger\' AND name = ".q($D)),$C);$gf=$C[3];return
array("Timing"=>strtoupper($C[1]),"Event"=>strtoupper($C[2]).($gf?" OF":""),"Of"=>idf_unescape($gf),"Trigger"=>$D,"Statement"=>$C[4],);}function
triggers($Q){$I=array();$yi=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = \'trigger\' AND tbl_name = ".q($Q))as$J){preg_match(\'~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*(\'.implode("|",$yi["Timing"]).\')\s*(.*?)\s+ON\b~i\',$J["sql"],$C);$I[$J["name"]]=array($C[1],$C[2]);}return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
begin(){return
queries("BEGIN");}function
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ROWID()");}function
explain($g,$G){return$g->query("EXPLAIN QUERY PLAN $G");}function
found_rows($R,$Z){}function
types(){return
array();}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($ah){return
true;}function
create_sql($Q,$Ka,$Hh){global$g;$I=$g->result("SELECT sql FROM sqlite_master WHERE type IN (\'table\', \'view\') AND name = ".q($Q));foreach(indexes($Q)as$D=>$w){if($D==\'\')continue;$I.=";\n\n".index_sql($Q,$w[\'type\'],$D,"(".implode(", ",array_map(\'idf_escape\',$w[\'columns\'])).")");}return$I;}function
truncate_sql($Q){return"DELETE FROM ".table($Q);}function
use_sql($j){}function
trigger_sql($Q){return
implode(get_vals("SELECT sql || \';;\n\' FROM sqlite_master WHERE type = \'trigger\' AND tbl_name = ".q($Q)));}function
show_variables(){global$g;$I=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$z)$I[$z]=$g->result("PRAGMA $z");return$I;}function
show_status(){$I=array();foreach(get_vals("PRAGMA compile_options")as$wf){list($z,$X)=explode("=",$wf,2);$I[$z]=$X;}return$I;}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Tc){return
preg_match(\'~^(columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~\',$Tc);}function
driver_config(){$U=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);return
array(\'possible_drivers\'=>array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite"),\'jush\'=>"sqlite",\'types\'=>$U,\'structured_types\'=>array_keys($U),\'unsigned\'=>array(),\'operators\'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL"),\'functions\'=>array("hex","length","lower","round","unixepoch","upper"),\'grouping\'=>array("avg","count","count distinct","group_concat","max","min","sum"),\'edit_functions\'=>array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",)),);}}$ic["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){define("DRIVER","pgsql");if(extension_loaded("pgsql")){class
Min_DB{var$extension="PgSQL",$_link,$_result,$_string,$_database=true,$server_info,$affected_rows,$error,$timeout;function
_error($Ac,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace(\'~^[^:]*: ~\',\'\',$n);$this->error=$n;}function
connect($M,$V,$F){global$b;$l=$b->database();set_error_handler(array($this,\'_error\'));$this->_string="host=\'".str_replace(":","\' port=\'",addcslashes($M,"\'\\"))."\' user=\'".addcslashes($V,"\'\\")."\' password=\'".addcslashes($F,"\'\\")."\'";$this->_link=@pg_connect("$this->_string dbname=\'".($l!=""?addcslashes($l,"\'\\"):"postgres")."\'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$l!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname=\'postgres\'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Wi=pg_version($this->_link);$this->server_info=$Wi["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function
quote($P){return"\'".pg_escape_string($this->_link,$P)."\'";}function
value($X,$o){return($o["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
quoteBinary($P){return"\'".pg_escape_bytea($this->_link,$P)."\'";}function
select_db($j){global$b;if($j==$b->database())return$this->_database;$I=@pg_connect("$this->_string dbname=\'".addcslashes($j,"\'\\")."\'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->_link=$I;return$I;}function
close(){$this->_link=@pg_connect("$this->_string dbname=\'postgres\'");}function
query($G,$Bi=false){$H=@pg_query($this->_link,$G);$this->error="";if(!$H){$this->error=pg_last_error($this->_link);$I=false;}elseif(!pg_num_fields($H)){$this->affected_rows=pg_affected_rows($H);$I=true;}else$I=new
Min_Result($H);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$I;}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
false;}function
result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
false;return
pg_fetch_result($H->_result,0,$o);}function
warnings(){return
h(pg_last_notice($this->_link));}}class
Min_Result{var$_result,$_offset=0,$num_rows;function
__construct($H){$this->_result=$H;$this->num_rows=pg_num_rows($H);}function
fetch_assoc(){return
pg_fetch_assoc($this->_result);}function
fetch_row(){return
pg_fetch_row($this->_result);}function
fetch_field(){$e=$this->_offset++;$I=new
stdClass;if(function_exists(\'pg_field_table\'))$I->orgtable=pg_field_table($this->_result,$e);$I->name=pg_field_name($this->_result,$e);$I->orgname=$I->name;$I->type=pg_field_type($this->_result,$e);$I->charsetnr=($I->type=="bytea"?63:0);return$I;}function
__destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class
Min_DB
extends
Min_PDO{var$extension="PDO_PgSQL",$timeout;function
connect($M,$V,$F){global$b;$l=$b->database();$this->dsn("pgsql:host=\'".str_replace(":","\' port=\'",addcslashes($M,"\'\\"))."\' client_encoding=utf8 dbname=\'".($l!=""?addcslashes($l,"\'\\"):"postgres")."\'",$V,$F);return
true;}function
select_db($j){global$b;return($b->database()==$j);}function
quoteBinary($Xg){return
q($Xg);}function
query($G,$Bi=false){$I=parent::query($G,$Bi);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$I;}function
warnings(){return\'\';}function
close(){}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($Q,$K,$kg){global$g;foreach($K
as$N){$Ii=array();$Z=array();foreach($N
as$z=>$X){$Ii[]="$z = $X";if(isset($kg[idf_unescape($z)]))$Z[]="$z = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Ii)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).")")))return
false;}return
true;}function
slowQuery($G,$ei){$this->_conn->query("SET statement_timeout = ".(1000*$ei));$this->_conn->timeout=1000*$ei;return$G;}function
convertSearch($v,$X,$o){return(preg_match(\'~char|text\'.(!preg_match(\'~LIKE~\',$X["op"])?\'|date|time(stamp)?|boolean|uuid|\'.number_type():\'\').\'~\',$o["type"])?$v:"CAST($v AS text)");}function
quoteBinary($Xg){return$this->_conn->quoteBinary($Xg);}function
warnings(){return$this->_conn->warnings();}function
tableHelp($D){$we=array("information_schema"=>"infoschema","pg_catalog"=>"catalog",);$A=$we[$_GET["ns"]];if($A)return"$A-".str_replace("_","-",$D).".html";}}function
idf_escape($v){return\'"\'.str_replace(\'"\',\'""\',$v).\'"\';}function
table($v){return
idf_escape($v);}function
connect(){global$b,$U,$Gh;$g=new
Min_DB;$Kb=$b->credentials();if($g->connect($Kb[0],$Kb[1],$Kb[2])){if(min_version(9,0,$g)){$g->query("SET application_name = \'Adminer\'");if(min_version(9.2,0,$g)){$Gh[\'Strings\'][]="json";$U["json"]=4294967295;if(min_version(9.4,0,$g)){$Gh[\'Strings\'][]="jsonb";$U["jsonb"]=4294967295;}}}return$g;}return$g->error;}function
get_databases(){return
get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, \'CONNECT\') ORDER BY datname");}function
limit($G,$Z,$_,$hf=0,$hh=" "){return" $G$Z".($_!==null?$hh."LIMIT $_".($hf?" OFFSET $hf":""):"");}function
limit1($Q,$G,$Z,$hh="\n"){return(preg_match(\'~^INTO~\',$G)?limit($G,$Z,1,0,$hh):" $G".(is_view(table_status1($Q))?$Z:" WHERE ctid = (SELECT ctid FROM ".table($Q).$Z.$hh."LIMIT 1)"));}function
db_collation($l,$lb){global$g;return$g->result("SELECT datcollate FROM pg_database WHERE datname = ".q($l));}function
engines(){return
array();}function
logged_user(){global$g;return$g->result("SELECT user");}function
tables_list(){$G="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support(\'materializedview\'))$G.="
UNION ALL
SELECT matviewname, \'MATERIALIZED VIEW\'
FROM pg_matviews
WHERE schemaname = current_schema()";$G.="
ORDER BY 1";return
get_key_vals($G);}function
count_tables($k){return
array();}function
table_status($D=""){$I=array();foreach(get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN \'r\' THEN \'table\' WHEN \'m\' THEN \'materialized view\' ELSE \'view\' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, \'pg_class\') AS \"Comment\", ".(min_version(12)?"\'\'":"CASE WHEN c.relhasoids THEN \'oid\' ELSE \'\' END")." AS \"Oid\", c.reltuples as \"Rows\", n.nspname
FROM pg_class c
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
WHERE relkind IN (\'r\', \'m\', \'v\', \'f\', \'p\')
".($D!=""?"AND relname = ".q($D):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return($D!=""?$I[$D]:$I);}function
is_view($R){return
in_array($R["Engine"],array("view","materialized view"));}function
fk_support($R){return
true;}function
fields($Q){$I=array();$Ba=array(\'timestamp without time zone\'=>\'timestamp\',\'timestamp with time zone\'=>\'timestamptz\',);foreach(get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, pg_get_expr(d.adbin, d.adrelid) AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment".(min_version(10)?", a.attidentity":"")."
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
JOIN pg_attribute a ON c.oid = a.attrelid
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
WHERE c.relname = ".q($Q)."
AND n.nspname = current_schema()
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$J){preg_match(\'~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~\',$J["full_type"],$C);list(,$T,$te,$J["length"],$wa,$Ea)=$C;$J["length"].=$Ea;$bb=$T.$wa;if(isset($Ba[$bb])){$J["type"]=$Ba[$bb];$J["full_type"]=$J["type"].$te.$Ea;}else{$J["type"]=$T;$J["full_type"]=$J["type"].$te.$wa.$Ea;}if(in_array($J[\'attidentity\'],array(\'a\',\'d\')))$J[\'default\']=\'GENERATED \'.($J[\'attidentity\']==\'d\'?\'BY DEFAULT\':\'ALWAYS\').\' AS IDENTITY\';$J["null"]=!$J["attnotnull"];$J["auto_increment"]=$J[\'attidentity\']||preg_match(\'~^nextval\(~i\',$J["default"]);$J["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match(\'~(.+)::[^,)]+(.*)~\',$J["default"],$C))$J["default"]=($C[1]=="NULL"?null:idf_unescape($C[1]).$C[2]);$I[$J["field"]]=$J;}return$I;}function
indexes($Q,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$Ph=$h->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($Q));$f=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Ph AND attnum > 0",$h);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $Ph AND ci.oid = i.indexrelid",$h)as$J){$Hg=$J["relname"];$I[$Hg]["type"]=($J["indispartial"]?"INDEX":($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX")));$I[$Hg]["columns"]=array();foreach(explode(" ",$J["indkey"])as$Pd)$I[$Hg]["columns"][]=$f[$Pd];$I[$Hg]["descs"]=array();foreach(explode(" ",$J["indoption"])as$Qd)$I[$Hg]["descs"][]=($Qd&1?\'1\':null);$I[$Hg]["lengths"]=array();}return$I;}function
foreign_keys($Q){global$pf;$I=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($Q)." AND pn.nspname = current_schema())
AND contype = \'f\'::char
ORDER BY conkey, conname")as$J){if(preg_match(\'~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA\',$J[\'definition\'],$C)){$J[\'source\']=array_map(\'idf_unescape\',array_map(\'trim\',explode(\',\',$C[1])));if(preg_match(\'~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~\',$C[2],$Be)){$J[\'ns\']=idf_unescape($Be[2]);$J[\'table\']=idf_unescape($Be[4]);}$J[\'target\']=array_map(\'idf_unescape\',array_map(\'trim\',explode(\',\',$C[3])));$J[\'on_delete\']=(preg_match("~ON DELETE ($pf)~",$C[4],$Be)?$Be[1]:\'NO ACTION\');$J[\'on_update\']=(preg_match("~ON UPDATE ($pf)~",$C[4],$Be)?$Be[1]:\'NO ACTION\');$I[$J[\'conname\']]=$J;}}return$I;}function
constraints($Q){global$pf;$I=array();foreach(get_rows("SELECT conname, consrc
FROM pg_catalog.pg_constraint
INNER JOIN pg_catalog.pg_namespace ON pg_constraint.connamespace = pg_namespace.oid
INNER JOIN pg_catalog.pg_class ON pg_constraint.conrelid = pg_class.oid AND pg_constraint.connamespace = pg_class.relnamespace
WHERE pg_constraint.contype = \'c\'
AND conrelid != 0 -- handle only CONSTRAINTs here, not TYPES
AND nspname = current_schema()
AND relname = ".q($Q)."
ORDER BY connamespace, conname")as$J)$I[$J[\'conname\']]=$J[\'consrc\'];return$I;}function
view($D){global$g;return
array("select"=>trim($g->result("SELECT pg_get_viewdef(".$g->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($D)).")")));}function
collations(){return
array();}function
information_schema($l){return($l=="information_schema");}function
error(){global$g;$I=h($g->error);if(preg_match(\'~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s\',$I,$C))$I=$C[1].preg_replace(\'~((?:[^&]|&[^;]*;){\'.strlen($C[3]).\'})(.*)~\',\'\1<b>\2</b>\',$C[2]).$C[4];return
nl_br($I);}function
create_database($l,$d){return
queries("CREATE DATABASE ".idf_escape($l).($d?" ENCODING ".idf_escape($d):""));}function
drop_databases($k){global$g;$g->close();return
apply_queries("DROP DATABASE",$k,\'idf_escape\');}function
rename_database($D,$d){return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($D));}function
auto_increment(){return"";}function
alter_table($Q,$D,$p,$fd,$rb,$yc,$d,$Ka,$Tf){$c=array();$vg=array();if($Q!=""&&$Q!=$D)$vg[]="ALTER TABLE ".table($Q)." RENAME TO ".table($D);foreach($p
as$o){$e=idf_escape($o[0]);$X=$o[1];if(!$X)$c[]="DROP $e";else{$Si=$X[5];unset($X[5]);if($o[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$c[]=($Q!=""?"ADD ":"  ").implode($X);if(isset($X[6]))$c[]=($Q!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($e!=$X[0])$vg[]="ALTER TABLE ".table($D)." RENAME $e TO $X[0]";$c[]="ALTER $e TYPE$X[1]";if(!$X[6]){$c[]="ALTER $e ".($X[3]?"SET$X[3]":"DROP DEFAULT");$c[]="ALTER $e ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}}if($o[0]!=""||$Si!="")$vg[]="COMMENT ON COLUMN ".table($D).".$X[0] IS ".($Si!=""?substr($Si,9):"\'\'");}}$c=array_merge($c,$fd);if($Q=="")array_unshift($vg,"CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($vg,"ALTER TABLE ".table($Q)."\n".implode(",\n",$c));if($Q!=""||$rb!="")$vg[]="COMMENT ON TABLE ".table($D)." IS ".q($rb);if($Ka!=""){}foreach($vg
as$G){if(!queries($G))return
false;}return
true;}function
alter_indexes($Q,$c){$i=array();$jc=array();$vg=array();foreach($c
as$X){if($X[0]!="INDEX")$i[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$jc[]=idf_escape($X[1]);else$vg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($i)array_unshift($vg,"ALTER TABLE ".table($Q).implode(",",$i));if($jc)array_unshift($vg,"DROP INDEX ".implode(", ",$jc));foreach($vg
as$G){if(!queries($G))return
false;}return
true;}function
truncate_tables($S){return
queries("TRUNCATE ".implode(", ",array_map(\'table\',$S)));return
true;}function
drop_views($Yi){return
drop_tables($Yi);}function
drop_tables($S){foreach($S
as$Q){$O=table_status($Q);if(!queries("DROP ".strtoupper($O["Engine"])." ".table($Q)))return
false;}return
true;}function
move_tables($S,$Yi,$Wh){foreach(array_merge($S,$Yi)as$Q){$O=table_status($Q);if(!queries("ALTER ".strtoupper($O["Engine"])." ".table($Q)." SET SCHEMA ".idf_escape($Wh)))return
false;}return
true;}function
trigger($D,$Q){if($D=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$f=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q)." AND trigger_name = ".q($D);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$J)$f[]=$J["event_object_column"];$I=array();foreach(get_rows(\'SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \\'FOR EACH \\' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers \'."$Z ORDER BY event_manipulation DESC")as$J){if($f&&$J["Event"]=="UPDATE")$J["Event"].=" OF";$J["Of"]=implode(", ",$f);if($I)$J["Event"].=" OR $I[Event]";$I=$J;}return$I;}function
triggers($Q){$I=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q))as$J){$wi=trigger($J["trigger_name"],$Q);$I[$wi["Trigger"]]=array($wi["Timing"],$wi["Event"]);}return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
routine($D,$T){$K=get_rows(\'SELECT routine_definition AS definition, LOWER(external_language) AS language, *
FROM information_schema.routines
WHERE routine_schema = current_schema() AND specific_name = \'.q($D));$I=$K[0];$I["returns"]=array("type"=>$I["type_udt_name"]);$I["fields"]=get_rows(\'SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
FROM information_schema.parameters
WHERE specific_schema = current_schema() AND specific_name = \'.q($D).\'
ORDER BY ordinal_position\');return$I;}function
routines(){return
get_rows(\'SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
FROM information_schema.routines
WHERE routine_schema = current_schema()
ORDER BY SPECIFIC_NAME\');}function
routine_languages(){return
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
routine_id($D,$J){$I=array();foreach($J["fields"]as$o)$I[]=$o["type"];return
idf_escape($D)."(".implode(", ",$I).")";}function
last_id(){return
0;}function
explain($g,$G){return$g->query("EXPLAIN $G");}function
found_rows($R,$Z){global$g;if(preg_match("~ rows=([0-9]+)~",$g->result("EXPLAIN SELECT * FROM ".idf_escape($R["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Gg))return$Gg[1];return
false;}function
types(){return
get_vals("SELECT typname
FROM pg_type
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
AND typtype IN (\'b\',\'d\',\'e\')
AND typelem = 0");}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){global$g;return$g->result("SELECT current_schema()");}function
set_schema($Zg,$h=null){global$g,$U,$Gh;if(!$h)$h=$g;$I=$h->query("SET search_path TO ".idf_escape($Zg));foreach(types()as$T){if(!isset($U[$T])){$U[$T]=0;$Gh[\'User types\'][]=$T;}}return$I;}function
foreign_keys_sql($Q){$I="";$O=table_status($Q);$cd=foreign_keys($Q);ksort($cd);foreach($cd
as$bd=>$ad)$I.="ALTER TABLE ONLY ".idf_escape($O[\'nspname\']).".".idf_escape($O[\'Name\'])." ADD CONSTRAINT ".idf_escape($bd)." $ad[definition] ".($ad[\'deferrable\']?\'DEFERRABLE\':\'NOT DEFERRABLE\').";\n";return($I?"$I\n":$I);}function
create_sql($Q,$Ka,$Hh){global$g;$I=\'\';$Pg=array();$jh=array();$O=table_status($Q);if(is_view($O)){$Xi=view($Q);return
rtrim("CREATE VIEW ".idf_escape($Q)." AS $Xi[select]",";");}$p=fields($Q);$x=indexes($Q);ksort($x);$Ab=constraints($Q);if(!$O||empty($p))return
false;$I="CREATE TABLE ".idf_escape($O[\'nspname\']).".".idf_escape($O[\'Name\'])." (\n    ";foreach($p
as$Vc=>$o){$Qf=idf_escape($o[\'field\']).\' \'.$o[\'full_type\'].default_value($o).($o[\'attnotnull\']?" NOT NULL":"");$Pg[]=$Qf;if(preg_match(\'~nextval\(\\'([^\\']+)\\'\)~\',$o[\'default\'],$Ce)){$ih=$Ce[1];$xh=reset(get_rows(min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q($ih):"SELECT * FROM $ih"));$jh[]=($Hh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $ih;\n":"")."CREATE SEQUENCE $ih INCREMENT $xh[increment_by] MINVALUE $xh[min_value] MAXVALUE $xh[max_value]".($Ka&&$xh[\'last_value\']?" START $xh[last_value]":"")." CACHE $xh[cache_value];";}}if(!empty($jh))$I=implode("\n\n",$jh)."\n\n$I";foreach($x
as$Kd=>$w){switch($w[\'type\']){case\'UNIQUE\':$Pg[]="CONSTRAINT ".idf_escape($Kd)." UNIQUE (".implode(\', \',array_map(\'idf_escape\',$w[\'columns\'])).")";break;case\'PRIMARY\':$Pg[]="CONSTRAINT ".idf_escape($Kd)." PRIMARY KEY (".implode(\', \',array_map(\'idf_escape\',$w[\'columns\'])).")";break;}}foreach($Ab
as$xb=>$zb)$Pg[]="CONSTRAINT ".idf_escape($xb)." CHECK $zb";$I.=implode(",\n    ",$Pg)."\n) WITH (oids = ".($O[\'Oid\']?\'true\':\'false\').");";foreach($x
as$Kd=>$w){if($w[\'type\']==\'INDEX\'){$f=array();foreach($w[\'columns\']as$z=>$X)$f[]=idf_escape($X).($w[\'descs\'][$z]?" DESC":"");$I.="\n\nCREATE INDEX ".idf_escape($Kd)." ON ".idf_escape($O[\'nspname\']).".".idf_escape($O[\'Name\'])." USING btree (".implode(\', \',$f).");";}}if($O[\'Comment\'])$I.="\n\nCOMMENT ON TABLE ".idf_escape($O[\'nspname\']).".".idf_escape($O[\'Name\'])." IS ".q($O[\'Comment\']).";";foreach($p
as$Vc=>$o){if($o[\'comment\'])$I.="\n\nCOMMENT ON COLUMN ".idf_escape($O[\'nspname\']).".".idf_escape($O[\'Name\']).".".idf_escape($Vc)." IS ".q($o[\'comment\']).";";}return
rtrim($I,\';\');}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
trigger_sql($Q){$O=table_status($Q);$I="";foreach(triggers($Q)as$vi=>$ui){$wi=trigger($vi,$O[\'Name\']);$I.="\nCREATE TRIGGER ".idf_escape($wi[\'Trigger\'])." $wi[Timing] $wi[Event] ON ".idf_escape($O["nspname"]).".".idf_escape($O[\'Name\'])." $wi[Type] $wi[Statement];;\n";}return$I;}function
use_sql($j){return"\connect ".idf_escape($j);}function
show_variables(){return
get_key_vals("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
show_status(){}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Tc){return
preg_match(\'~^(database|table|columns|sql|indexes|descidx|comment|view|\'.(min_version(9.3)?\'materializedview|\':\'\').\'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~\',$Tc);}function
kill_process($X){return
queries("SELECT pg_terminate_backend(".number($X).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){global$g;return$g->result("SHOW max_connections");}function
driver_config(){$U=array();$Gh=array();foreach(array(\'Numbers\'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),\'Date and time\'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),\'Strings\'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),\'Binary\'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),\'Network\'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),\'Geometry\'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$z=>$X){$U+=$X;$Gh[$z]=array_keys($X);}return
array(\'possible_drivers\'=>array("PgSQL","PDO_PgSQL"),\'jush\'=>"pgsql",\'types\'=>$U,\'structured_types\'=>$Gh,\'unsigned\'=>array(),\'operators\'=>array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL"),\'functions\'=>array("char_length","lower","round","to_hex","to_timestamp","upper"),\'grouping\'=>array("avg","count","count distinct","max","min","sum"),\'edit_functions\'=>array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",)),);}}$ic["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){define("DRIVER","oracle");if(extension_loaded("oci8")){class
Min_DB{var$extension="oci8",$_link,$_result,$server_info,$affected_rows,$errno,$error;var$_current_db;function
_error($Ac,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace(\'~^[^:]*: ~\',\'\',$n);$this->error=$n;}function
connect($M,$V,$F){$this->_link=@oci_new_connect($V,$F,$M,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return
true;}$n=oci_error();$this->error=$n["message"];return
false;}function
quote($P){return"\'".str_replace("\'","\'\'",$P)."\'";}function
select_db($j){$this->_current_db=$j;return
true;}function
query($G,$Bi=false){$H=oci_parse($this->_link,$G);$this->error="";if(!$H){$n=oci_error($this->_link);$this->errno=$n["code"];$this->error=$n["message"];return
false;}set_error_handler(array($this,\'_error\'));$I=@oci_execute($H);restore_error_handler();if($I){if(oci_num_fields($H))return
new
Min_Result($H);$this->affected_rows=oci_num_rows($H);oci_free_statement($H);}return$I;}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
false;}function
result($G,$o=1){$H=$this->query($G);if(!is_object($H)||!oci_fetch($H->_result))return
false;return
oci_result($H->_result,$o);}}class
Min_Result{var$_result,$_offset=1,$num_rows;function
__construct($H){$this->_result=$H;}function
_convert($J){foreach((array)$J
as$z=>$X){if(is_a($X,\'OCI-Lob\'))$J[$z]=$X->load();}return$J;}function
fetch_assoc(){return$this->_convert(oci_fetch_assoc($this->_result));}function
fetch_row(){return$this->_convert(oci_fetch_row($this->_result));}function
fetch_field(){$e=$this->_offset++;$I=new
stdClass;$I->name=oci_field_name($this->_result,$e);$I->orgname=$I->name;$I->type=oci_field_type($this->_result,$e);$I->charsetnr=(preg_match("~raw|blob|bfile~",$I->type)?63:0);return$I;}function
__destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class
Min_DB
extends
Min_PDO{var$extension="PDO_OCI";var$_current_db;function
connect($M,$V,$F){$this->dsn("oci:dbname=//$M;charset=AL32UTF8",$V,$F);return
true;}function
select_db($j){$this->_current_db=$j;return
true;}}}class
Min_Driver
extends
Min_SQL{function
begin(){return
true;}function
insertUpdate($Q,$K,$kg){global$g;foreach($K
as$N){$Ii=array();$Z=array();foreach($N
as$z=>$X){$Ii[]="$z = $X";if(isset($kg[idf_unescape($z)]))$Z[]="$z = $X";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$Ii)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).")")))return
false;}return
true;}}function
idf_escape($v){return\'"\'.str_replace(\'"\',\'""\',$v).\'"\';}function
table($v){return
idf_escape($v);}function
connect(){global$b;$g=new
Min_DB;$Kb=$b->credentials();if($g->connect($Kb[0],$Kb[1],$Kb[2]))return$g;return$g->error;}function
get_databases(){return
get_vals("SELECT tablespace_name FROM user_tablespaces ORDER BY 1");}function
limit($G,$Z,$_,$hf=0,$hh=" "){return($hf?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $G$Z) t WHERE rownum <= ".($_+$hf).") WHERE rnum > $hf":($_!==null?" * FROM (SELECT $G$Z) WHERE rownum <= ".($_+$hf):" $G$Z"));}function
limit1($Q,$G,$Z,$hh="\n"){return" $G$Z";}function
db_collation($l,$lb){global$g;return$g->result("SELECT value FROM nls_database_parameters WHERE parameter = \'NLS_CHARACTERSET\'");}function
engines(){return
array();}function
logged_user(){global$g;return$g->result("SELECT USER FROM DUAL");}function
get_current_db(){global$g;$l=$g->_current_db?$g->_current_db:DB;unset($g->_current_db);return$l;}function
where_owner($ig,$Kf="owner"){if(!$_GET["ns"])return\'\';return"$ig$Kf = sys_context(\'USERENV\', \'CURRENT_SCHEMA\')";}function
views_table($f){$Kf=where_owner(\'\');return"(SELECT $f FROM all_views WHERE ".($Kf?$Kf:"rownum < 0").")";}function
tables_list(){$Xi=views_table("view_name");$Kf=where_owner(" AND ");return
get_key_vals("SELECT table_name, \'table\' FROM all_tables WHERE tablespace_name = ".q(DB)."$Kf
UNION SELECT view_name, \'view\' FROM $Xi
ORDER BY 1");}function
count_tables($k){global$g;$I=array();foreach($k
as$l)$I[$l]=$g->result("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($l));return$I;}function
table_status($D=""){$I=array();$bh=q($D);$l=get_current_db();$Xi=views_table("view_name");$Kf=where_owner(" AND ");foreach(get_rows(\'SELECT table_name "Name", \\'table\\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = \'.q($l).$Kf.($D!=""?" AND table_name = $bh":"")."
UNION SELECT view_name, \'view\', 0, 0 FROM $Xi".($D!=""?" WHERE view_name = $bh":"")."
ORDER BY 1")as$J){if($D!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
is_view($R){return$R["Engine"]=="view";}function
fk_support($R){return
true;}function
fields($Q){$I=array();$Kf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($Q)."$Kf ORDER BY column_id")as$J){$T=$J["DATA_TYPE"];$te="$J[DATA_PRECISION],$J[DATA_SCALE]";if($te==",")$te=$J["CHAR_COL_DECL_LENGTH"];$I[$J["COLUMN_NAME"]]=array("field"=>$J["COLUMN_NAME"],"full_type"=>$T.($te?"($te)":""),"type"=>strtolower($T),"length"=>$te,"default"=>$J["DATA_DEFAULT"],"null"=>($J["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$I;}function
indexes($Q,$h=null){$I=array();$Kf=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
FROM all_ind_columns aic
LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
WHERE aic.table_name = ".q($Q)."$Kf
ORDER BY ac.constraint_type, aic.column_position",$h)as$J){$Kd=$J["INDEX_NAME"];$ob=$J["DATA_DEFAULT"];$ob=($ob?trim($ob,\'"\'):$J["COLUMN_NAME"]);$I[$Kd]["type"]=($J["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($J["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$I[$Kd]["columns"][]=$ob;$I[$Kd]["lengths"][]=($J["CHAR_LENGTH"]&&$J["CHAR_LENGTH"]!=$J["COLUMN_LENGTH"]?$J["CHAR_LENGTH"]:null);$I[$Kd]["descs"][]=($J["DESCEND"]&&$J["DESCEND"]=="DESC"?\'1\':null);}return$I;}function
view($D){$Xi=views_table("view_name, text");$K=get_rows(\'SELECT text "select" FROM \'.$Xi.\' WHERE view_name = \'.q($D));return
reset($K);}function
collations(){return
array();}function
information_schema($l){return
false;}function
error(){global$g;return
h($g->error);}function
explain($g,$G){$g->query("EXPLAIN PLAN FOR $G");return$g->query("SELECT * FROM plan_table");}function
found_rows($R,$Z){}function
auto_increment(){return"";}function
alter_table($Q,$D,$p,$fd,$rb,$yc,$d,$Ka,$Tf){$c=$jc=array();$Ef=($Q?fields($Q):array());foreach($p
as$o){$X=$o[1];if($X&&$o[0]!=""&&idf_escape($o[0])!=$X[0])queries("ALTER TABLE ".table($Q)." RENAME COLUMN ".idf_escape($o[0])." TO $X[0]");$Df=$Ef[$o[0]];if($X&&$Df){$jf=process_field($Df,$Df);if($X[2]==$jf[2])$X[2]="";}if($X)$c[]=($Q!=""?($o[0]!=""?"MODIFY (":"ADD ("):"  ").implode($X).($Q!=""?")":"");else$jc[]=idf_escape($o[0]);}if($Q=="")return
queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($Q)."\n".implode("\n",$c)))&&(!$jc||queries("ALTER TABLE ".table($Q)." DROP (".implode(", ",$jc).")"))&&($Q==$D||queries("ALTER TABLE ".table($Q)." RENAME TO ".table($D)));}function
alter_indexes($Q,$c){$jc=array();$vg=array();foreach($c
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace(\'~ DESC$~\',\'\',$X[2]);$i=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");array_unshift($vg,"ALTER TABLE ".table($Q).$i);}elseif($X[2]=="DROP")$jc[]=idf_escape($X[1]);else$vg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q)." (".implode(", ",$X[2]).")";}if($jc)array_unshift($vg,"DROP INDEX ".implode(", ",$jc));foreach($vg
as$G){if(!queries($G))return
false;}return
true;}function
foreign_keys($Q){$I=array();$G="SELECT c_list.CONSTRAINT_NAME as NAME,
c_src.COLUMN_NAME as SRC_COLUMN,
c_dest.OWNER as DEST_DB,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME as DEST_COLUMN,
c_list.DELETE_RULE as ON_DELETE
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.CONSTRAINT_TYPE = \'R\'
AND c_src.TABLE_NAME = ".q($Q);foreach(get_rows($G)as$J)$I[$J[\'NAME\']]=array("db"=>$J[\'DEST_DB\'],"table"=>$J[\'DEST_TABLE\'],"source"=>array($J[\'SRC_COLUMN\']),"target"=>array($J[\'DEST_COLUMN\']),"on_delete"=>$J[\'ON_DELETE\'],"on_update"=>null,);return$I;}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($Yi){return
apply_queries("DROP VIEW",$Yi);}function
drop_tables($S){return
apply_queries("DROP TABLE",$S);}function
last_id(){return
0;}function
schemas(){$I=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN (\'SYSTEM\',\'SYSAUX\')) ORDER BY 1");return($I?$I:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
get_schema(){global$g;return$g->result("SELECT sys_context(\'USERENV\', \'SESSION_USER\') FROM dual");}function
set_schema($ah,$h=null){global$g;if(!$h)$h=$g;return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($ah));}function
show_variables(){return
get_key_vals(\'SELECT name, display_value FROM v$parameter\');}function
process_list(){return
get_rows(\'SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql
ON sql.sql_id = sess.sql_id
WHERE sess.type = \\'USER\\'
ORDER BY PROCESS
\');}function
show_status(){$K=get_rows(\'SELECT * FROM v$instance\');return
reset($K);}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Tc){return
preg_match(\'~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~\',$Tc);}function
driver_config(){$U=array();$Gh=array();foreach(array(\'Numbers\'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),\'Date and time\'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),\'Strings\'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),\'Binary\'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$z=>$X){$U+=$X;$Gh[$z]=array_keys($X);}return
array(\'possible_drivers\'=>array("OCI8","PDO_OCI"),\'jush\'=>"oracle",\'types\'=>$U,\'structured_types\'=>$Gh,\'unsigned\'=>array(),\'operators\'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),\'functions\'=>array("length","lower","round","upper"),\'grouping\'=>array("avg","count","count distinct","max","min","sum"),\'edit_functions\'=>array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",)),);}}$ic["mssql"]="MS SQL (beta)";if(isset($_GET["mssql"])){define("DRIVER","mssql");if(extension_loaded("sqlsrv")){class
Min_DB{var$extension="sqlsrv",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
_get_error(){$this->error="";foreach(sqlsrv_errors()as$n){$this->errno=$n["code"];$this->error.="$n[message]\n";}$this->error=rtrim($this->error);}function
connect($M,$V,$F){global$b;$l=$b->database();$yb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");if($l!="")$yb["Database"]=$l;$this->_link=@sqlsrv_connect(preg_replace(\'~:~\',\',\',$M),$yb);if($this->_link){$Rd=sqlsrv_server_info($this->_link);$this->server_info=$Rd[\'SQLServerVersion\'];}else$this->_get_error();return(bool)$this->_link;}function
quote($P){return"\'".str_replace("\'","\'\'",$P)."\'";}function
select_db($j){return$this->query("USE ".idf_escape($j));}function
query($G,$Bi=false){$H=sqlsrv_query($this->_link,$G);$this->error="";if(!$H){$this->_get_error();return
false;}return$this->store_result($H);}function
multi_query($G){$this->_result=sqlsrv_query($this->_link,$G);$this->error="";if(!$this->_result){$this->_get_error();return
false;}return
true;}function
store_result($H=null){if(!$H)$H=$this->_result;if(!$H)return
false;if(sqlsrv_field_metadata($H))return
new
Min_Result($H);$this->affected_rows=sqlsrv_rows_affected($H);return
true;}function
next_result(){return$this->_result?sqlsrv_next_result($this->_result):null;}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->fetch_row();return$J[$o];}}class
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
__construct($H){$this->_result=$H;}function
_convert($J){foreach((array)$J
as$z=>$X){if(is_a($X,\'DateTime\'))$J[$z]=$X->format("Y-m-d H:i:s");}return$J;}function
fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC));}function
fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC));}function
fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$o=$this->_fields[$this->_offset++];$I=new
stdClass;$I->name=$o["Name"];$I->orgname=$o["Name"];$I->type=($o["Type"]==1?254:0);return$I;}function
seek($hf){for($t=0;$t<$hf;$t++)sqlsrv_fetch($this->_result);}function
__destruct(){sqlsrv_free_stmt($this->_result);}}}elseif(extension_loaded("mssql")){class
Min_DB{var$extension="MSSQL",$_link,$_result,$server_info,$affected_rows,$error;function
connect($M,$V,$F){$this->_link=@mssql_connect($M,$V,$F);if($this->_link){$H=$this->query("SELECT SERVERPROPERTY(\'ProductLevel\'), SERVERPROPERTY(\'Edition\')");if($H){$J=$H->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$J[0]] $J[1]";}}else$this->error=mssql_get_last_message();return(bool)$this->_link;}function
quote($P){return"\'".str_replace("\'","\'\'",$P)."\'";}function
select_db($j){return
mssql_select_db($j);}function
query($G,$Bi=false){$H=@mssql_query($G,$this->_link);$this->error="";if(!$H){$this->error=mssql_get_last_message();return
false;}if($H===true){$this->affected_rows=mssql_rows_affected($this->_link);return
true;}return
new
Min_Result($H);}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
mssql_next_result($this->_result->_result);}function
result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
false;return
mssql_result($H->_result,0,$o);}}class
Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
__construct($H){$this->_result=$H;$this->num_rows=mssql_num_rows($H);}function
fetch_assoc(){return
mssql_fetch_assoc($this->_result);}function
fetch_row(){return
mssql_fetch_row($this->_result);}function
num_rows(){return
mssql_num_rows($this->_result);}function
fetch_field(){$I=mssql_fetch_field($this->_result);$I->orgtable=$I->table;$I->orgname=$I->name;return$I;}function
seek($hf){mssql_data_seek($this->_result,$hf);}function
__destruct(){mssql_free_result($this->_result);}}}elseif(extension_loaded("pdo_dblib")){class
Min_DB
extends
Min_PDO{var$extension="PDO_DBLIB";function
connect($M,$V,$F){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace(\'~:(\d)~\',\';port=\1\',$M)),$V,$F);return
true;}function
select_db($j){return$this->query("USE ".idf_escape($j));}}}class
Min_Driver
extends
Min_SQL{function
insertUpdate($Q,$K,$kg){foreach($K
as$N){$Ii=array();$Z=array();foreach($N
as$z=>$X){$Ii[]="$z = $X";if(isset($kg[idf_unescape($z)]))$Z[]="$z = $X";}if(!queries("MERGE ".table($Q)." USING (VALUES(".implode(", ",$N).")) AS source (c".implode(", c",range(1,count($N))).") ON ".implode(" AND ",$Z)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$Ii)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($N)).") VALUES (".implode(", ",$N).");"))return
false;}return
true;}function
begin(){return
queries("BEGIN TRANSACTION");}}function
idf_escape($v){return"[".str_replace("]","]]",$v)."]";}function
table($v){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($v);}function
connect(){global$b;$g=new
Min_DB;$Kb=$b->credentials();if($g->connect($Kb[0],$Kb[1],$Kb[2]))return$g;return$g->error;}function
get_databases(){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN (\'master\', \'tempdb\', \'model\', \'msdb\')");}function
limit($G,$Z,$_,$hf=0,$hh=" "){return($_!==null?" TOP (".($_+$hf).")":"")." $G$Z";}function
limit1($Q,$G,$Z,$hh="\n"){return
limit($G,$Z,1,0,$hh);}function
db_collation($l,$lb){global$g;return$g->result("SELECT collation_name FROM sys.databases WHERE name = ".q($l));}function
engines(){return
array();}function
logged_user(){global$g;return$g->result("SELECT SUSER_NAME()");}function
tables_list(){return
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN (\'S\', \'U\', \'V\') ORDER BY name");}function
count_tables($k){global$g;$I=array();foreach($k
as$l){$g->select_db($l);$I[$l]=$g->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$I;}function
table_status($D=""){$I=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value FROM fn_listextendedproperty(default, \'SCHEMA\', schema_name(schema_id), \'TABLE\', ao.name, null, null)) AS Comment FROM sys.all_objects AS ao WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN (\'S\', \'U\', \'V\') ".($D!=""?"AND name = ".q($D):"ORDER BY name"))as$J){if($D!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
is_view($R){return$R["Engine"]=="VIEW";}function
fk_support($R){return
true;}function
fields($Q){$tb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty(\'MS_DESCRIPTION\', \'schema\', ".q(get_schema()).", \'table\', ".q($Q).", \'column\', NULL)");$I=array();foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default]
FROM sys.all_columns c
JOIN sys.all_objects o ON c.object_id = o.object_id
JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id
WHERE o.schema_id = SCHEMA_ID(".q(get_schema()).") AND o.type IN (\'S\', \'U\', \'V\') AND o.name = ".q($Q))as$J){$T=$J["type"];$te=(preg_match("~char|binary~",$T)?$J["max_length"]:($T=="decimal"?"$J[precision],$J[scale]":""));$I[$J["name"]]=array("field"=>$J["name"],"full_type"=>$T.($te?"($te)":""),"type"=>$T,"length"=>$te,"default"=>$J["default"],"null"=>$J["is_nullable"],"auto_increment"=>$J["is_identity"],"collation"=>$J["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$J["is_identity"],"comment"=>$tb[$J["name"]],);}return$I;}function
indexes($Q,$h=null){$I=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
WHERE OBJECT_NAME(i.object_id) = ".q($Q),$h)as$J){$D=$J["name"];$I[$D]["type"]=($J["is_primary_key"]?"PRIMARY":($J["is_unique"]?"UNIQUE":"INDEX"));$I[$D]["lengths"]=array();$I[$D]["columns"][$J["key_ordinal"]]=$J["column_name"];$I[$D]["descs"][$J["key_ordinal"]]=($J["is_descending_key"]?\'1\':null);}return$I;}function
view($D){global$g;return
array("select"=>preg_replace(\'~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU\',\'\',$g->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($D))));}function
collations(){$I=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$d)$I[preg_replace(\'~_.*~\',\'\',$d)][]=$d;return$I;}function
information_schema($l){return
false;}function
error(){global$g;return
nl_br(h(preg_replace(\'~^(\[[^]]*])+~m\',\'\',$g->error)));}function
create_database($l,$d){return
queries("CREATE DATABASE ".idf_escape($l).(preg_match(\'~^[a-z0-9_]+$~i\',$d)?" COLLATE $d":""));}function
drop_databases($k){return
queries("DROP DATABASE ".implode(", ",array_map(\'idf_escape\',$k)));}function
rename_database($D,$d){if(preg_match(\'~^[a-z0-9_]+$~i\',$d))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $d");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($D));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($Q,$D,$p,$fd,$rb,$yc,$d,$Ka,$Tf){$c=array();$tb=array();foreach($p
as$o){$e=idf_escape($o[0]);$X=$o[1];if(!$X)$c["DROP"][]=" COLUMN $e";else{$X[1]=preg_replace("~( COLLATE )\'(\\w+)\'~",\'\1\2\',$X[1]);$tb[$o[0]]=$X[5];unset($X[5]);if($o[0]=="")$c["ADD"][]="\n  ".implode("",$X).($Q==""?substr($fd[$X[0]],16+strlen($X[0])):"");else{unset($X[6]);if($e!=$X[0])queries("EXEC sp_rename ".q(table($Q).".$e").", ".q(idf_unescape($X[0])).", \'COLUMN\'");$c["ALTER COLUMN ".implode("",$X)][]="";}}}if($Q=="")return
queries("CREATE TABLE ".table($D)." (".implode(",",(array)$c["ADD"])."\n)");if($Q!=$D)queries("EXEC sp_rename ".q(table($Q)).", ".q($D));if($fd)$c[""]=$fd;foreach($c
as$z=>$X){if(!queries("ALTER TABLE ".idf_escape($D)." $z".implode(",",$X)))return
false;}foreach($tb
as$z=>$X){$rb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N\'MS_Description\', @level0type = N\'Schema\', @level0name = ".q(get_schema()).", @level1type = N\'Table\', @level1name = ".q($D).", @level2type = N\'Column\', @level2name = ".q($z));queries("EXEC sp_addextendedproperty @name = N\'MS_Description\', @value = ".$rb.", @level0type = N\'Schema\', @level0name = ".q(get_schema()).", @level1type = N\'Table\', @level1name = ".q($D).", @level2type = N\'Column\', @level2name = ".q($z));}return
true;}function
alter_indexes($Q,$c){$w=array();$jc=array();foreach($c
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$jc[]=idf_escape($X[1]);else$w[]=idf_escape($X[1])." ON ".table($Q);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($Q."_"))." ON ".table($Q):"ALTER TABLE ".table($Q)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
false;}return(!$w||queries("DROP INDEX ".implode(", ",$w)))&&(!$jc||queries("ALTER TABLE ".table($Q)." DROP ".implode(", ",$jc)));}function
last_id(){global$g;return$g->result("SELECT SCOPE_IDENTITY()");}function
explain($g,$G){$g->query("SET SHOWPLAN_ALL ON");$I=$g->query($G);$g->query("SET SHOWPLAN_ALL OFF");return$I;}function
found_rows($R,$Z){}function
foreign_keys($Q){$I=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($Q))as$J){$r=&$I[$J["FK_NAME"]];$r["db"]=$J["PKTABLE_QUALIFIER"];$r["table"]=$J["PKTABLE_NAME"];$r["source"][]=$J["FKCOLUMN_NAME"];$r["target"][]=$J["PKCOLUMN_NAME"];}return$I;}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($Yi){return
queries("DROP VIEW ".implode(", ",array_map(\'table\',$Yi)));}function
drop_tables($S){return
queries("DROP TABLE ".implode(", ",array_map(\'table\',$S)));}function
move_tables($S,$Yi,$Wh){return
apply_queries("ALTER SCHEMA ".idf_escape($Wh)." TRANSFER",array_merge($S,$Yi));}function
trigger($D){if($D=="")return
array();$K=get_rows("SELECT s.name [Trigger],
CASE WHEN OBJECTPROPERTY(s.id, \'ExecIsInsertTrigger\') = 1 THEN \'INSERT\' WHEN OBJECTPROPERTY(s.id, \'ExecIsUpdateTrigger\') = 1 THEN \'UPDATE\' WHEN OBJECTPROPERTY(s.id, \'ExecIsDeleteTrigger\') = 1 THEN \'DELETE\' END [Event],
CASE WHEN OBJECTPROPERTY(s.id, \'ExecIsInsteadOfTrigger\') = 1 THEN \'INSTEAD OF\' ELSE \'AFTER\' END [Timing],
c.text
FROM sysobjects s
JOIN syscomments c ON s.id = c.id
WHERE s.xtype = \'TR\' AND s.name = ".q($D));$I=reset($K);if($I)$I["Statement"]=preg_replace(\'~^.+\s+AS\s+~isU\',\'\',$I["text"]);return$I;}function
triggers($Q){$I=array();foreach(get_rows("SELECT sys1.name,
CASE WHEN OBJECTPROPERTY(sys1.id, \'ExecIsInsertTrigger\') = 1 THEN \'INSERT\' WHEN OBJECTPROPERTY(sys1.id, \'ExecIsUpdateTrigger\') = 1 THEN \'UPDATE\' WHEN OBJECTPROPERTY(sys1.id, \'ExecIsDeleteTrigger\') = 1 THEN \'DELETE\' END [Event],
CASE WHEN OBJECTPROPERTY(sys1.id, \'ExecIsInsteadOfTrigger\') = 1 THEN \'INSTEAD OF\' ELSE \'AFTER\' END [Timing]
FROM sysobjects sys1
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
WHERE sys1.xtype = \'TR\' AND sys2.name = ".q($Q))as$J)$I[$J["name"]]=array($J["Timing"],$J["Event"]);return$I;}function
trigger_options(){return
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
schemas(){return
get_vals("SELECT name FROM sys.schemas");}function
get_schema(){global$g;if($_GET["ns"]!="")return$_GET["ns"];return$g->result("SELECT SCHEMA_NAME()");}function
set_schema($Zg){return
true;}function
use_sql($j){return"USE ".idf_escape($j);}function
show_variables(){return
array();}function
show_status(){return
array();}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
support($Tc){return
preg_match(\'~^(comment|columns|database|drop_col|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~\',$Tc);}function
driver_config(){$U=array();$Gh=array();foreach(array(\'Numbers\'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),\'Date and time\'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),\'Strings\'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),\'Binary\'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$z=>$X){$U+=$X;$Gh[$z]=array_keys($X);}return
array(\'possible_drivers\'=>array("SQLSRV","MSSQL","PDO_DBLIB"),\'jush\'=>"mssql",\'types\'=>$U,\'structured_types\'=>$Gh,\'unsigned\'=>array(),\'operators\'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL"),\'functions\'=>array("len","lower","round","upper"),\'grouping\'=>array("avg","count","count distinct","max","min","sum"),\'edit_functions\'=>array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",)),);}}$ic["mongo"]="MongoDB (alpha)";if(isset($_GET["mongo"])){define("DRIVER","mongo");if(class_exists(\'MongoDB\')){class
Min_DB{var$extension="Mongo",$server_info=MongoClient::VERSION,$error,$last_id,$_link,$_db;function
connect($Ji,$xf){try{$this->_link=new
MongoClient($Ji,$xf);if($xf["password"]!=""){$xf["password"]="";try{new
MongoClient($Ji,$xf);$this->error=\'Database does not support password.\';}catch(Exception$pc){}}}catch(Exception$pc){$this->error=$pc->getMessage();}}function
query($G){return
false;}function
select_db($j){try{$this->_db=$this->_link->selectDB($j);return
true;}catch(Exception$Fc){$this->error=$Fc->getMessage();return
false;}}function
quote($P){return$P;}}class
Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
__construct($H){foreach($H
as$de){$J=array();foreach($de
as$z=>$X){if(is_a($X,\'MongoBinData\'))$this->_charset[$z]=63;$J[$z]=(is_a($X,\'MongoId\')?"ObjectId(\"$X\")":(is_a($X,\'MongoDate\')?gmdate("Y-m-d H:i:s",$X->sec)." GMT":(is_a($X,\'MongoBinData\')?$X->bin:(is_a($X,\'MongoRegex\')?"$X":(is_object($X)?get_class($X):$X)))));}$this->_rows[]=$J;foreach($J
as$z=>$X){if(!isset($this->_rows[0][$z]))$this->_rows[0][$z]=null;}}$this->num_rows=count($this->_rows);}function
fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$z=>$X)$I[$z]=$J[$z];next($this->_rows);return$I;}function
fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
array_values($I);}function
fetch_field(){$he=array_keys($this->_rows[0]);$D=$he[$this->_offset++];return(object)array(\'name\'=>$D,\'charsetnr\'=>$this->_charset[$D],);}}class
Min_Driver
extends
Min_SQL{public$kg="_id";function
select($Q,$L,$Z,$qd,$zf=array(),$_=1,$E=0,$mg=false){$L=($L==array("*")?array():array_fill_keys($L,true));$uh=array();foreach($zf
as$X){$X=preg_replace(\'~ DESC$~\',\'\',$X,1,$Gb);$uh[$X]=($Gb?-1:1);}return
new
Min_Result($this->_conn->_db->selectCollection($Q)->find(array(),$L)->sort($uh)->limit($_!=""?+$_:0)->skip($E*$_));}function
insert($Q,$N){try{$I=$this->_conn->_db->selectCollection($Q)->insert($N);$this->_conn->errno=$I[\'code\'];$this->_conn->error=$I[\'err\'];$this->_conn->last_id=$N[\'_id\'];return!$I[\'err\'];}catch(Exception$Fc){$this->_conn->error=$Fc->getMessage();return
false;}}}function
get_databases($dd){global$g;$I=array();$Ub=$g->_link->listDBs();foreach($Ub[\'databases\']as$l)$I[]=$l[\'name\'];return$I;}function
count_tables($k){global$g;$I=array();foreach($k
as$l)$I[$l]=count($g->_link->selectDB($l)->getCollectionNames(true));return$I;}function
tables_list(){global$g;return
array_fill_keys($g->_db->getCollectionNames(true),\'table\');}function
drop_databases($k){global$g;foreach($k
as$l){$Lg=$g->_link->selectDB($l)->drop();if(!$Lg[\'ok\'])return
false;}return
true;}function
indexes($Q,$h=null){global$g;$I=array();foreach($g->_db->selectCollection($Q)->getIndexInfo()as$w){$cc=array();foreach($w["key"]as$e=>$T)$cc[]=($T==-1?\'1\':null);$I[$w["name"]]=array("type"=>($w["name"]=="_id_"?"PRIMARY":($w["unique"]?"UNIQUE":"INDEX")),"columns"=>array_keys($w["key"]),"lengths"=>array(),"descs"=>$cc,);}return$I;}function
fields($Q){return
fields_from_edit();}function
found_rows($R,$Z){global$g;return$g->_db->selectCollection($_GET["select"])->count($Z);}$uf=array("=");}elseif(class_exists(\'MongoDB\Driver\Manager\')){class
Min_DB{var$extension="MongoDB",$server_info=MONGODB_VERSION,$affected_rows,$error,$last_id;var$_link;var$_db,$_db_name;function
connect($Ji,$xf){$gb=\'MongoDB\Driver\Manager\';$this->_link=new$gb($Ji,$xf);$this->executeCommand(\'admin\',array(\'ping\'=>1));}function
executeCommand($l,$pb){$gb=\'MongoDB\Driver\Command\';try{return$this->_link->executeCommand($l,new$gb($pb));}catch(Exception$pc){$this->error=$pc->getMessage();return
array();}}function
executeBulkWrite($We,$Wa,$Hb){try{$Og=$this->_link->executeBulkWrite($We,$Wa);$this->affected_rows=$Og->$Hb();return
true;}catch(Exception$pc){$this->error=$pc->getMessage();return
false;}}function
query($G){return
false;}function
select_db($j){$this->_db_name=$j;return
true;}function
quote($P){return$P;}}class
Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
__construct($H){foreach($H
as$de){$J=array();foreach($de
as$z=>$X){if(is_a($X,\'MongoDB\BSON\Binary\'))$this->_charset[$z]=63;$J[$z]=(is_a($X,\'MongoDB\BSON\ObjectID\')?\'MongoDB\BSON\ObjectID("\'."$X\")":(is_a($X,\'MongoDB\BSON\UTCDatetime\')?$X->toDateTime()->format(\'Y-m-d H:i:s\'):(is_a($X,\'MongoDB\BSON\Binary\')?$X->getData():(is_a($X,\'MongoDB\BSON\Regex\')?"$X":(is_object($X)||is_array($X)?json_encode($X,256):$X)))));}$this->_rows[]=$J;foreach($J
as$z=>$X){if(!isset($this->_rows[0][$z]))$this->_rows[0][$z]=null;}}$this->num_rows=count($this->_rows);}function
fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$z=>$X)$I[$z]=$J[$z];next($this->_rows);return$I;}function
fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
array_values($I);}function
fetch_field(){$he=array_keys($this->_rows[0]);$D=$he[$this->_offset++];return(object)array(\'name\'=>$D,\'charsetnr\'=>$this->_charset[$D],);}}class
Min_Driver
extends
Min_SQL{public$kg="_id";function
select($Q,$L,$Z,$qd,$zf=array(),$_=1,$E=0,$mg=false){global$g;$L=($L==array("*")?array():array_fill_keys($L,1));if(count($L)&&!isset($L[\'_id\']))$L[\'_id\']=0;$Z=where_to_query($Z);$uh=array();foreach($zf
as$X){$X=preg_replace(\'~ DESC$~\',\'\',$X,1,$Gb);$uh[$X]=($Gb?-1:1);}if(isset($_GET[\'limit\'])&&is_numeric($_GET[\'limit\'])&&$_GET[\'limit\']>0)$_=$_GET[\'limit\'];$_=min(200,max(1,(int)$_));$rh=$E*$_;$gb=\'MongoDB\Driver\Query\';try{return
new
Min_Result($g->_link->executeQuery("$g->_db_name.$Q",new$gb($Z,array(\'projection\'=>$L,\'limit\'=>$_,\'skip\'=>$rh,\'sort\'=>$uh))));}catch(Exception$pc){$g->error=$pc->getMessage();return
false;}}function
update($Q,$N,$wg,$_=0,$hh="\n"){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($wg);$gb=\'MongoDB\Driver\BulkWrite\';$Wa=new$gb(array());if(isset($N[\'_id\']))unset($N[\'_id\']);$Ig=array();foreach($N
as$z=>$Y){if($Y==\'NULL\'){$Ig[$z]=1;unset($N[$z]);}}$Ii=array(\'$set\'=>$N);if(count($Ig))$Ii[\'$unset\']=$Ig;$Wa->update($Z,$Ii,array(\'upsert\'=>false));return$g->executeBulkWrite("$l.$Q",$Wa,\'getModifiedCount\');}function
delete($Q,$wg,$_=0){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($wg);$gb=\'MongoDB\Driver\BulkWrite\';$Wa=new$gb(array());$Wa->delete($Z,array(\'limit\'=>$_));return$g->executeBulkWrite("$l.$Q",$Wa,\'getDeletedCount\');}function
insert($Q,$N){global$g;$l=$g->_db_name;$gb=\'MongoDB\Driver\BulkWrite\';$Wa=new$gb(array());if($N[\'_id\']==\'\')unset($N[\'_id\']);$Wa->insert($N);return$g->executeBulkWrite("$l.$Q",$Wa,\'getInsertedCount\');}}function
get_databases($dd){global$g;$I=array();foreach($g->executeCommand(\'admin\',array(\'listDatabases\'=>1))as$Ub){foreach($Ub->databases
as$l)$I[]=$l->name;}return$I;}function
count_tables($k){$I=array();return$I;}function
tables_list(){global$g;$mb=array();foreach($g->executeCommand($g->_db_name,array(\'listCollections\'=>1))as$H)$mb[$H->name]=\'table\';return$mb;}function
drop_databases($k){return
false;}function
indexes($Q,$h=null){global$g;$I=array();foreach($g->executeCommand($g->_db_name,array(\'listIndexes\'=>$Q))as$w){$cc=array();$f=array();foreach(get_object_vars($w->key)as$e=>$T){$cc[]=($T==-1?\'1\':null);$f[]=$e;}$I[$w->name]=array("type"=>($w->name=="_id_"?"PRIMARY":(isset($w->unique)?"UNIQUE":"INDEX")),"columns"=>$f,"lengths"=>array(),"descs"=>$cc,);}return$I;}function
fields($Q){global$m;$p=fields_from_edit();if(!$p){$H=$m->select($Q,array("*"),null,null,array(),10);if($H){while($J=$H->fetch_assoc()){foreach($J
as$z=>$X){$J[$z]=null;$p[$z]=array("field"=>$z,"type"=>"string","null"=>($z!=$m->primary),"auto_increment"=>($z==$m->primary),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,),);}}}}return$p;}function
found_rows($R,$Z){global$g;$Z=where_to_query($Z);$mi=$g->executeCommand($g->_db_name,array(\'count\'=>$R[\'Name\'],\'query\'=>$Z))->toArray();return$mi[0]->n;}function
sql_query_where_parser($wg){$wg=preg_replace(\'~^\sWHERE \(?\(?(.+?)\)?\)?$~\',\'\1\',$wg);$ij=explode(\' AND \',$wg);$jj=explode(\') OR (\',$wg);$Z=array();foreach($ij
as$gj)$Z[]=trim($gj);if(count($jj)==1)$jj=array();elseif(count($jj)>1)$Z=array();return
where_to_query($Z,$jj);}function
where_to_query($ej=array(),$fj=array()){global$b;$Pb=array();foreach(array(\'and\'=>$ej,\'or\'=>$fj)as$T=>$Z){if(is_array($Z)){foreach($Z
as$Lc){list($jb,$sf,$X)=explode(" ",$Lc,3);if($jb=="_id"&&preg_match(\'~^(MongoDB\\\\BSON\\\\ObjectID)\("(.+)"\)$~\',$X,$C)){list(,$gb,$X)=$C;$X=new$gb($X);}if(!in_array($sf,$b->operators))continue;if(preg_match(\'~^\(f\)(.+)~\',$sf,$C)){$X=(float)$X;$sf=$C[1];}elseif(preg_match(\'~^\(date\)(.+)~\',$sf,$C)){$Rb=new
DateTime($X);$gb=\'MongoDB\BSON\UTCDatetime\';$X=new$gb($Rb->getTimestamp()*1000);$sf=$C[1];}switch($sf){case\'=\':$sf=\'$eq\';break;case\'!=\':$sf=\'$ne\';break;case\'>\':$sf=\'$gt\';break;case\'<\':$sf=\'$lt\';break;case\'>=\':$sf=\'$gte\';break;case\'<=\':$sf=\'$lte\';break;case\'regex\':$sf=\'$regex\';break;default:continue
2;}if($T==\'and\')$Pb[\'$and\'][]=array($jb=>array($sf=>$X));elseif($T==\'or\')$Pb[\'$or\'][]=array($jb=>array($sf=>$X));}}}return$Pb;}$uf=array("=","!=",">","<",">=","<=","regex","(f)=","(f)!=","(f)>","(f)<","(f)>=","(f)<=","(date)=","(date)!=","(date)>","(date)<","(date)>=","(date)<=",);}function
table($v){return$v;}function
idf_escape($v){return$v;}function
table_status($D="",$Sc=false){$I=array();foreach(tables_list()as$Q=>$T){$I[$Q]=array("Name"=>$Q);if($D==$Q)return$I[$Q];}return$I;}function
create_database($l,$d){return
true;}function
last_id(){global$g;return$g->last_id;}function
error(){global$g;return
h($g->error);}function
collations(){return
array();}function
logged_user(){global$b;$Kb=$b->credentials();return$Kb[1];}function
connect(){global$b;$g=new
Min_DB;list($M,$V,$F)=$b->credentials();$xf=array();if($V.$F!=""){$xf["username"]=$V;$xf["password"]=$F;}$l=$b->database();if($l!="")$xf["db"]=$l;if(($Ja=getenv("MONGO_AUTH_SOURCE")))$xf["authSource"]=$Ja;$g->connect("mongodb://$M",$xf);if($g->error)return$g->error;return$g;}function
alter_indexes($Q,$c){global$g;foreach($c
as$X){list($T,$D,$N)=$X;if($N=="DROP")$I=$g->_db->command(array("deleteIndexes"=>$Q,"index"=>$D));else{$f=array();foreach($N
as$e){$e=preg_replace(\'~ DESC$~\',\'\',$e,1,$Gb);$f[$e]=($Gb?-1:1);}$I=$g->_db->selectCollection($Q)->ensureIndex($f,array("unique"=>($T=="UNIQUE"),"name"=>$D,));}if($I[\'errmsg\']){$g->error=$I[\'errmsg\'];return
false;}}return
true;}function
support($Tc){return
preg_match("~database|indexes|descidx~",$Tc);}function
db_collation($l,$lb){}function
information_schema(){}function
is_view($R){}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
foreign_keys($Q){return
array();}function
fk_support($R){}function
engines(){return
array();}function
alter_table($Q,$D,$p,$fd,$rb,$yc,$d,$Ka,$Tf){global$g;if($Q==""){$g->_db->createCollection($D);return
true;}}function
drop_tables($S){global$g;foreach($S
as$Q){$Lg=$g->_db->selectCollection($Q)->drop();if(!$Lg[\'ok\'])return
false;}return
true;}function
truncate_tables($S){global$g;foreach($S
as$Q){$Lg=$g->_db->selectCollection($Q)->remove();if(!$Lg[\'ok\'])return
false;}return
true;}function
driver_config(){global$uf;return
array(\'possible_drivers\'=>array("mongo","mongodb"),\'jush\'=>"mongo",\'operators\'=>$uf,\'functions\'=>array(),\'grouping\'=>array(),\'edit_functions\'=>array(array("json")),);}}$ic["elastic"]="Elasticsearch (beta)";if(isset($_GET["elastic"])){define("DRIVER","elastic");if(function_exists(\'json_decode\')&&ini_bool(\'allow_url_fopen\')){class
Min_DB{var$extension="JSON",$server_info,$errno,$error,$_url,$_db;function
rootQuery($Xf,$Bb=array(),$Pe=\'GET\'){@ini_set(\'track_errors\',1);$Xc=@file_get_contents("$this->_url/".ltrim($Xf,\'/\'),false,stream_context_create(array(\'http\'=>array(\'method\'=>$Pe,\'content\'=>$Bb===null?$Bb:json_encode($Bb),\'header\'=>\'Content-Type: application/json\',\'ignore_errors\'=>1,))));if(!$Xc){$this->error=$php_errormsg;return$Xc;}if(!preg_match(\'~^HTTP/[0-9.]+ 2~i\',$http_response_header[0])){$this->error=\'Invalid credentials.\'." $http_response_header[0]";return
false;}$I=json_decode($Xc,true);if($I===null){$this->errno=json_last_error();if(function_exists(\'json_last_error_msg\'))$this->error=json_last_error_msg();else{$_b=get_defined_constants(true);foreach($_b[\'json\']as$D=>$Y){if($Y==$this->errno&&preg_match(\'~^JSON_ERROR_~\',$D)){$this->error=$D;break;}}}}return$I;}function
query($Xf,$Bb=array(),$Pe=\'GET\'){return$this->rootQuery(($this->_db!=""?"$this->_db/":"/").ltrim($Xf,\'/\'),$Bb,$Pe);}function
connect($M,$V,$F){preg_match(\'~^(https?://)?(.*)~\',$M,$C);$this->_url=($C[1]?$C[1]:"http://")."$V:$F@$C[2]";$I=$this->query(\'\');if($I)$this->server_info=$I[\'version\'][\'number\'];return(bool)$I;}function
select_db($j){$this->_db=$j;return
true;}function
quote($P){return$P;}}class
Min_Result{var$num_rows,$_rows;function
__construct($K){$this->num_rows=count($K);$this->_rows=$K;reset($this->_rows);}function
fetch_assoc(){$I=current($this->_rows);next($this->_rows);return$I;}function
fetch_row(){return
array_values($this->fetch_assoc());}}}class
Min_Driver
extends
Min_SQL{function
select($Q,$L,$Z,$qd,$zf=array(),$_=1,$E=0,$mg=false){global$b;$Pb=array();$G="$Q/_search";if($L!=array("*"))$Pb["fields"]=$L;if($zf){$uh=array();foreach($zf
as$jb){$jb=preg_replace(\'~ DESC$~\',\'\',$jb,1,$Gb);$uh[]=($Gb?array($jb=>"desc"):$jb);}$Pb["sort"]=$uh;}if($_){$Pb["size"]=+$_;if($E)$Pb["from"]=($E*$_);}foreach($Z
as$X){list($jb,$sf,$X)=explode(" ",$X,3);if($jb=="_id")$Pb["query"]["ids"]["values"][]=$X;elseif($jb.$X!=""){$Zh=array("term"=>array(($jb!=""?$jb:"_all")=>$X));if($sf=="=")$Pb["query"]["filtered"]["filter"]["and"][]=$Zh;else$Pb["query"]["filtered"]["query"]["bool"]["must"][]=$Zh;}}if($Pb["query"]&&!$Pb["query"]["filtered"]["query"]&&!$Pb["query"]["ids"])$Pb["query"]["filtered"]["query"]=array("match_all"=>array());$Ch=microtime(true);$bh=$this->_conn->query($G,$Pb);if($mg)echo$b->selectQuery("$G: ".json_encode($Pb),$Ch,!$bh);if(!$bh)return
false;$I=array();foreach($bh[\'hits\'][\'hits\']as$Cd){$J=array();if($L==array("*"))$J["_id"]=$Cd["_id"];$p=$Cd[\'_source\'];if($L!=array("*")){$p=array();foreach($L
as$z)$p[$z]=$Cd[\'fields\'][$z];}foreach($p
as$z=>$X){if($Pb["fields"])$X=$X[0];$J[$z]=(is_array($X)?json_encode($X):$X);}$I[]=$J;}return
new
Min_Result($I);}function
update($T,$_g,$wg,$_=0,$hh="\n"){$Vf=preg_split(\'~ *= *~\',$wg);if(count($Vf)==2){$u=trim($Vf[1]);$G="$T/$u";return$this->_conn->query($G,$_g,\'POST\');}return
false;}function
insert($T,$_g){$u="";$G="$T/$u";$Lg=$this->_conn->query($G,$_g,\'POST\');$this->_conn->last_id=$Lg[\'_id\'];return$Lg[\'created\'];}function
delete($T,$wg,$_=0){$Gd=array();if(is_array($_GET["where"])&&$_GET["where"]["_id"])$Gd[]=$_GET["where"]["_id"];if(is_array($_POST[\'check\'])){foreach($_POST[\'check\']as$ab){$Vf=preg_split(\'~ *= *~\',$ab);if(count($Vf)==2)$Gd[]=trim($Vf[1]);}}$this->_conn->affected_rows=0;foreach($Gd
as$u){$G="{$T}/{$u}";$Lg=$this->_conn->query($G,\'{}\',\'DELETE\');if(is_array($Lg)&&$Lg[\'found\']==true)$this->_conn->affected_rows++;}return$this->_conn->affected_rows;}}function
connect(){global$b;$g=new
Min_DB;list($M,$V,$F)=$b->credentials();if($F!=""&&$g->connect($M,$V,""))return\'Database does not support password.\';if($g->connect($M,$V,$F))return$g;return$g->error;}function
support($Tc){return
preg_match("~database|table|columns~",$Tc);}function
logged_user(){global$b;$Kb=$b->credentials();return$Kb[1];}function
get_databases(){global$g;$I=$g->rootQuery(\'_aliases\');if($I){$I=array_keys($I);sort($I,SORT_STRING);}return$I;}function
collations(){return
array();}function
db_collation($l,$lb){}function
engines(){return
array();}function
count_tables($k){global$g;$I=array();$H=$g->query(\'_stats\');if($H&&$H[\'indices\']){$Od=$H[\'indices\'];foreach($Od
as$Nd=>$Dh){$Md=$Dh[\'total\'][\'indexing\'];$I[$Nd]=$Md[\'index_total\'];}}return$I;}function
tables_list(){global$g;if(min_version(6))return
array(\'_doc\'=>\'table\');$I=$g->query(\'_mapping\');if($I)$I=array_fill_keys(array_keys($I[$g->_db]["mappings"]),\'table\');return$I;}function
table_status($D="",$Sc=false){global$g;$bh=$g->query("_search",array("size"=>0,"aggregations"=>array("count_by_type"=>array("terms"=>array("field"=>"_type")))),"POST");$I=array();if($bh){$S=$bh["aggregations"]["count_by_type"]["buckets"];foreach($S
as$Q){$I[$Q["key"]]=array("Name"=>$Q["key"],"Engine"=>"table","Rows"=>$Q["doc_count"],);if($D!=""&&$D==$Q["key"])return$I[$D];}}return$I;}function
error(){global$g;return
h($g->error);}function
information_schema(){}function
is_view($R){}function
indexes($Q,$h=null){return
array(array("type"=>"PRIMARY","columns"=>array("_id")),);}function
fields($Q){global$g;$ze=array();if(min_version(6)){$H=$g->query("_mapping");if($H)$ze=$H[$g->_db][\'mappings\'][\'properties\'];}else{$H=$g->query("$Q/_mapping");if($H){$ze=$H[$Q][\'properties\'];if(!$ze)$ze=$H[$g->_db][\'mappings\'][$Q][\'properties\'];}}$I=array();if($ze){foreach($ze
as$D=>$o){$I[$D]=array("field"=>$D,"full_type"=>$o["type"],"type"=>$o["type"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);if($o["properties"]){unset($I[$D]["privileges"]["insert"]);unset($I[$D]["privileges"]["update"]);}}}return$I;}function
foreign_keys($Q){return
array();}function
table($v){return$v;}function
idf_escape($v){return$v;}function
convert_field($o){}function
unconvert_field($o,$I){return$I;}function
fk_support($R){}function
found_rows($R,$Z){return
null;}function
create_database($l){global$g;return$g->rootQuery(urlencode($l),null,\'PUT\');}function
drop_databases($k){global$g;return$g->rootQuery(urlencode(implode(\',\',$k)),array(),\'DELETE\');}function
alter_table($Q,$D,$p,$fd,$rb,$yc,$d,$Ka,$Tf){global$g;$sg=array();foreach($p
as$Qc){$Vc=trim($Qc[1][0]);$Wc=trim($Qc[1][1]?$Qc[1][1]:"text");$sg[$Vc]=array(\'type\'=>$Wc);}if(!empty($sg))$sg=array(\'properties\'=>$sg);return$g->query("_mapping/{$D}",$sg,\'PUT\');}function
drop_tables($S){global$g;$I=true;foreach($S
as$Q)$I=$I&&$g->query(urlencode($Q),array(),\'DELETE\');return$I;}function
last_id(){global$g;return$g->last_id;}function
driver_config(){$U=array();$Gh=array();foreach(array(\'Numbers\'=>array("long"=>3,"integer"=>5,"short"=>8,"byte"=>10,"double"=>20,"float"=>66,"half_float"=>12,"scaled_float"=>21),\'Date and time\'=>array("date"=>10),\'Strings\'=>array("string"=>65535,"text"=>65535),\'Binary\'=>array("binary"=>255),)as$z=>$X){$U+=$X;$Gh[$z]=array_keys($X);}return
array(\'possible_drivers\'=>array("json + allow_url_fopen"),\'jush\'=>"elastic",\'operators\'=>array("=","query"),\'functions\'=>array(),\'grouping\'=>array(),\'edit_functions\'=>array(array("json")),\'types\'=>$U,\'structured_types\'=>$Gh,);}}class
Adminer{var$operators;function
name(){return"<a href=\'https://www.adminer.org/\'".target_blank()." id=\'h1\'>Adminer</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($i=false){return
password_file($i);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($M){return
h($M);}function
database(){return
DB;}function
databases($dd=true){return
get_databases($dd);}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(){return
csp();}function
head(){return
true;}function
css(){$I=array();$q="adminer.css";if(file_exists($q))$I[]="$q?v=".crc32(file_get_contents($q));return$I;}function
loginForm(){global$ic;echo"<table cellspacing=\'0\' class=\'layout\'>\n",$this->loginFormField(\'driver\',\'<tr><th>\'.\'System\'.\'<td>\',html_select("auth[driver]",$ic,DRIVER,"loginDriver(this);")."\n"),$this->loginFormField(\'server\',\'<tr><th>\'.\'Server\'.\'<td>\',\'<input name="auth[server]" value="\'.h(SERVER).\'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">\'."\n"),$this->loginFormField(\'username\',\'<tr><th>\'.\'Username\'.\'<td>\',\'<input name="auth[username]" id="username" value="\'.h($_GET["username"]).\'" autocomplete="username" autocapitalize="off">\'.script("focus(qs(\'#username\')); qs(\'#username\').form[\'auth[driver]\'].onchange();")),$this->loginFormField(\'password\',\'<tr><th>\'.\'Password\'.\'<td>\',\'<input type="password" name="auth[password]" autocomplete="current-password">\'."\n"),$this->loginFormField(\'db\',\'<tr><th>\'.\'Database\'.\'<td>\',\'<input name="auth[db]" value="\'.h($_GET["db"]).\'" autocapitalize="off">\'."\n"),"</table>\n","<p><input type=\'submit\' value=\'".\'Login\'."\'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],\'Permanent login\')."\n";}function
loginFormField($D,$_d,$Y){return$_d.$Y;}function
login($xe,$F){if($F=="")return
sprintf(\'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.\',target_blank());return
true;}function
tableName($Nh){return
h($Nh["Name"]);}function
fieldName($o,$zf=0){return\'<span title="\'.h($o["full_type"]).\'">\'.h($o["field"]).\'</span>\';}function
selectLinks($Nh,$N=""){global$y,$m;echo\'<p class="links">\';$we=array("select"=>\'Select data\');if(support("table")||support("indexes"))$we["table"]=\'Show structure\';if(support("table")){if(is_view($Nh))$we["view"]=\'Alter view\';else$we["create"]=\'Alter table\';}if($N!==null)$we["edit"]=\'New item\';$D=$Nh["Name"];foreach($we
as$z=>$X)echo" <a href=\'".h(ME)."$z=".urlencode($D).($z=="edit"?$N:"")."\'".bold(isset($_GET[$z])).">$X</a>";echo
doc_link(array($y=>$m->tableHelp($D)),"?"),"\n";}function
foreignKeys($Q){return
foreign_keys($Q);}function
backwardKeys($Q,$Mh){return
array();}function
backwardKeysPrint($Na,$J){}function
selectQuery($G,$Ch,$Rc=false){global$y,$m;$I="</p>\n";if(!$Rc&&($bj=$m->warnings())){$u="warnings";$I=", <a href=\'#$u\'>".\'Warnings\'."</a>".script("qsl(\'a\').onclick = partial(toggle, \'$u\');","")."$I<div id=\'$u\' class=\'hidden\'>\n$bj</div>\n";}return"<p><code class=\'jush-$y\'>".h(str_replace("\n"," ",$G))."</code> <span class=\'time\'>(".format_time($Ch).")</span>".(support("sql")?" <a href=\'".h(ME)."sql=".urlencode($G)."\'>".\'Edit\'."</a>":"").$I;}function
sqlCommandQuery($G){return
shorten_utf8(trim($G),1000);}function
rowDescription($Q){return"";}function
rowDescriptions($K,$gd){return$K;}function
selectLink($X,$o){}function
selectVal($X,$A,$o,$Gf){$I=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$o["type"])&&!preg_match("~var~",$o["type"])?"<code>$X</code>":$X));if(preg_match(\'~blob|bytea|raw|file~\',$o["type"])&&!is_utf8($X))$I="<i>".lang(array(\'%d byte\',\'%d bytes\'),strlen($Gf))."</i>";if(preg_match(\'~json~\',$o["type"]))$I="<code class=\'jush-js\'>$I</code>";return($A?"<a href=\'".h($A)."\'".(is_url($A)?target_blank():"").">$I</a>":$I);}function
editVal($X,$o){return$X;}function
tableStructurePrint($p){echo"<div class=\'scrollable\'>\n","<table cellspacing=\'0\' class=\'nowrap\'>\n","<thead><tr><th>".\'Column\'."<td>".\'Type\'.(support("comment")?"<td>".\'Comment\':"")."</thead>\n";foreach($p
as$o){echo"<tr".odd()."><th>".h($o["field"]),"<td><span title=\'".h($o["collation"])."\'>".h($o["full_type"])."</span>",($o["null"]?" <i>NULL</i>":""),($o["auto_increment"]?" <i>".\'Auto Increment\'."</i>":""),(isset($o["default"])?" <span title=\'".\'Default value\'."\'>[<b>".h($o["default"])."</b>]</span>":""),(support("comment")?"<td>".h($o["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint($x){echo"<table cellspacing=\'0\'>\n";foreach($x
as$D=>$w){ksort($w["columns"]);$mg=array();foreach($w["columns"]as$z=>$X)$mg[]="<i>".h($X)."</i>".($w["lengths"][$z]?"(".$w["lengths"][$z].")":"").($w["descs"][$z]?" DESC":"");echo"<tr title=\'".h($D)."\'><th>$w[type]<td>".implode(", ",$mg)."\n";}echo"</table>\n";}function
selectColumnsPrint($L,$f){global$nd,$td;print_fieldset("select",\'Select\',$L);$t=0;$L[""]=array();foreach($L
as$z=>$X){$X=$_GET["columns"][$z];$e=select_input(" name=\'columns[$t][col]\'",$f,$X["col"],($z!==""?"selectFieldChange":"selectAddRow"));echo"<div>".($nd||$td?"<select name=\'columns[$t][fun]\'>".optionlist(array(-1=>"")+array_filter(array(\'Functions\'=>$nd,\'Aggregation\'=>$td)),$X["fun"])."</select>".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, \'(\') + \')\'",1).script("qsl(\'select\').onchange = function () { helpClose();".($z!==""?"":" qsl(\'select, input\', this.parentNode).onchange();")." };","")."($e)":$e)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
selectSearchPrint($Z,$f,$x){print_fieldset("search",\'Search\',$Z);foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"){echo"<div>(<i>".implode("</i>, <i>",array_map(\'h\',$w["columns"]))."</i>) AGAINST"," <input type=\'search\' name=\'fulltext[$t]\' value=\'".h($_GET["fulltext"][$t])."\'>",script("qsl(\'input\').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"</div>\n";}}$Ya="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name=\'where[$t][col]\'",$f,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".\'anywhere\'.")"),html_select("where[$t][op]",$this->operators,$X["op"],$Ya),"<input type=\'search\' name=\'where[$t][val]\' value=\'".h($X["val"])."\'>",script("mixin(qsl(\'input\'), {oninput: function () { $Ya }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}}echo"</div></fieldset>\n";}function
selectOrderPrint($zf,$f,$x){print_fieldset("sort",\'Sort\',$zf);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".select_input(" name=\'order[$t]\'",$f,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),\'descending\')."</div>\n";$t++;}}echo"<div>".select_input(" name=\'order[$t]\'",$f,"","selectAddRow"),checkbox("desc[$t]",1,false,\'descending\')."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($_){echo"<fieldset><legend>".\'Limit\'."</legend><div>";echo"<input type=\'number\' name=\'limit\' class=\'size\' value=\'".h($_)."\'>",script("qsl(\'input\').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($ci){if($ci!==null){echo"<fieldset><legend>".\'Text length\'."</legend><div>","<input type=\'number\' name=\'text_length\' class=\'size\' value=\'".h($ci)."\'>","</div></fieldset>\n";}}function
selectActionPrint($x){echo"<fieldset><legend>".\'Action\'."</legend><div>","<input type=\'submit\' value=\'".\'Select\'."\'>"," <span id=\'noindex\' title=\'".\'Full table scan\'."\'></span>","<script".nonce().">\n","var indexColumns = ";$f=array();foreach($x
as$w){$Ob=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$Ob)$f[$Ob]=1;}$f[""]=1;foreach($f
as$z=>$X)json_row($z);echo";\n","selectFieldChange.call(qs(\'#form\')[\'select\']);\n","</script>\n","</div></fieldset>\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint($vc,$f){}function
selectColumnsProcess($f,$x){global$nd,$td;$L=array();$qd=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$nd)||in_array($X["fun"],$td)))){$L[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$td))$qd[]=$L[$z];}}return
array($L,$qd);}function
selectSearchProcess($p,$x){global$g,$m;$I=array();foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$I[]="MATCH (".implode(", ",array_map(\'idf_escape\',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$ig="";$ub=" $X[op]";if(preg_match(\'~IN$~\',$X["op"])){$Jd=process_length($X["val"]);$ub.=" ".($Jd!=""?$Jd:"(NULL)");}elseif($X["op"]=="SQL")$ub=" $X[val]";elseif($X["op"]=="LIKE %%")$ub=" LIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$ub=" ILIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$ig="$X[op](".q($X["val"]).", ";$ub=")";}elseif(!preg_match(\'~NULL$~\',$X["op"]))$ub.=" ".$this->processInput($p[$X["col"]],$X["val"]);if($X["col"]!="")$I[]=$ig.$m->convertSearch(idf_escape($X["col"]),$X,$p[$X["col"]]).$ub;else{$nb=array();foreach($p
as$D=>$o){if((preg_match(\'~^[-\d.\'.(preg_match(\'~IN$~\',$X["op"])?\',\':\'\').\']+$~\',$X["val"])||!preg_match(\'~\'.number_type().\'|bit~\',$o["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match(\'~char|text|enum|set~\',$o["type"]))&&(!preg_match(\'~date|timestamp~\',$o["type"])||preg_match(\'~^\d+-\d+-\d+~\',$X["val"])))$nb[]=$ig.$m->convertSearch(idf_escape($D),$X,$o).$ub;}$I[]=($nb?"(".implode(" OR ",$nb).")":"1 = 0");}}}return$I;}function
selectOrderProcess($p,$x){$I=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$I[]=(preg_match(\'~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~\',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$I;}function
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
selectEmailProcess($Z,$gd){return
false;}function
selectQueryBuild($L,$Z,$qd,$zf,$_,$E){return"";}function
messageQuery($G,$di,$Rc=false){global$y,$m;restart_session();$Ad=&get_session("queries");if(!$Ad[$_GET["db"]])$Ad[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace(\'~[\x80-\xFF]+$~\',\'\',substr($G,0,1e6))."\n";$Ad[$_GET["db"]][]=array($G,time(),$di);$_h="sql-".count($Ad[$_GET["db"]]);$I="<a href=\'#$_h\' class=\'toggle\'>".\'SQL command\'."</a>\n";if(!$Rc&&($bj=$m->warnings())){$u="warnings-".count($Ad[$_GET["db"]]);$I="<a href=\'#$u\' class=\'toggle\'>".\'Warnings\'."</a>, $I<div id=\'$u\' class=\'hidden\'>\n$bj</div>\n";}return" <span class=\'time\'>".@date("H:i:s")."</span>"." $I<div id=\'$_h\' class=\'hidden\'><pre><code class=\'jush-$y\'>".shorten_utf8($G,1000)."</code></pre>".($di?" <span class=\'time\'>($di)</span>":\'\').(support("sql")?\'<p><a href="\'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).\'sql=&history=\'.(count($Ad[$_GET["db"]])-1)).\'">\'.\'Edit\'.\'</a>\':\'\').\'</div>\';}function
editRowPrint($Q,$p,$J,$Ii){}function
editFunctions($o){global$qc;$I=($o["null"]?"NULL/":"");$Ii=isset($_GET["select"])||where($_GET);foreach($qc
as$z=>$nd){if(!$z||(!isset($_GET["call"])&&$Ii)){foreach($nd
as$Zf=>$X){if(!$Zf||preg_match("~$Zf~",$o["type"]))$I.="/$X";}}if($z&&!preg_match(\'~set|blob|bytea|raw|file|bool~\',$o["type"]))$I.="/SQL";}if($o["auto_increment"]&&!$Ii)$I=\'Auto Increment\';return
explode("/",$I);}function
editInput($Q,$o,$Ha,$Y){if($o["type"]=="enum")return(isset($_GET["select"])?"<label><input type=\'radio\'$Ha value=\'-1\' checked><i>".\'original\'."</i></label> ":"").($o["null"]?"<label><input type=\'radio\'$Ha value=\'\'".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$Ha,$o,$Y,0);return"";}function
editHint($Q,$o,$Y){return"";}function
processInput($o,$Y,$s=""){if($s=="SQL")return$Y;$D=$o["field"];$I=q($Y);if(preg_match(\'~^(now|getdate|uuid)$~\',$s))$I="$s()";elseif(preg_match(\'~^current_(date|timestamp)$~\',$s))$I=$s;elseif(preg_match(\'~^([+-]|\|\|)$~\',$s))$I=idf_escape($D)." $s $I";elseif(preg_match(\'~^[+-] interval$~\',$s))$I=idf_escape($D)." $s ".(preg_match("~^(\\d+|\'[0-9.: -]\') [A-Z_]+\$~i",$Y)?$Y:$I);elseif(preg_match(\'~^(addtime|subtime|concat)$~\',$s))$I="$s(".idf_escape($D).", $I)";elseif(preg_match(\'~^(md5|sha1|password|encrypt)$~\',$s))$I="$s($I)";return
unconvert_field($o,$I);}function
dumpOutput(){$I=array(\'text\'=>\'open\',\'file\'=>\'save\');if(function_exists(\'gzencode\'))$I[\'gz\']=\'gzip\';return$I;}function
dumpFormat(){return
array(\'sql\'=>\'SQL\',\'csv\'=>\'CSV,\',\'csv;\'=>\'CSV;\',\'tsv\'=>\'TSV\');}function
dumpDatabase($l){}function
dumpTable($Q,$Hh,$ce=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Hh)dump_csv(array_keys(fields($Q)));}else{if($ce==2){$p=array();foreach(fields($Q)as$D=>$o)$p[]=idf_escape($D)." $o[full_type]";$i="CREATE TABLE ".table($Q)." (".implode(", ",$p).")";}else$i=create_sql($Q,$_POST["auto_increment"],$Hh);set_utf8mb4($i);if($Hh&&$i){if($Hh=="DROP+CREATE"||$ce==1)echo"DROP ".($ce==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($ce==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
dumpData($Q,$Hh,$G){global$g,$y;$Ee=($y=="sqlite"?0:1048576);if($Hh){if($_POST["format"]=="sql"){if($Hh=="TRUNCATE+INSERT")echo
truncate_sql($Q).";\n";$p=fields($Q);}$H=$g->query($G,1);if($H){$Vd="";$Va="";$he=array();$Jh="";$Uc=($Q!=\'\'?\'fetch_assoc\':\'fetch_row\');while($J=$H->$Uc()){if(!$he){$Ti=array();foreach($J
as$X){$o=$H->fetch_field();$he[]=$o->name;$z=idf_escape($o->name);$Ti[]="$z = VALUES($z)";}$Jh=($Hh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ti):"").";\n";}if($_POST["format"]!="sql"){if($Hh=="table"){dump_csv($he);$Hh="INSERT";}dump_csv($J);}else{if(!$Vd)$Vd="INSERT INTO ".table($Q)." (".implode(", ",array_map(\'idf_escape\',$he)).") VALUES";foreach($J
as$z=>$X){$o=$p[$z];$J[$z]=($X!==null?unconvert_field($o,preg_match(number_type(),$o["type"])&&!preg_match(\'~\[~\',$o["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Xg=($Ee?"\n":" ")."(".implode(",\t",$J).")";if(!$Va)$Va=$Vd.$Xg;elseif(strlen($Va)+4+strlen($Xg)+strlen($Jh)<$Ee)$Va.=",$Xg";else{echo$Va.$Jh;$Va=$Vd.$Xg;}}}if($Va)echo$Va.$Jh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function
dumpFilename($Fd){return
friendly_url($Fd!=""?$Fd:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($Fd,$Se=false){$Jf=$_POST["output"];$Mc=(preg_match(\'~sql~\',$_POST["format"])?"sql":($Se?"tar":"csv"));header("Content-Type: ".($Jf=="gz"?"application/x-gzip":($Mc=="tar"?"application/x-tar":($Mc=="sql"||$Jf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Jf=="gz")ob_start(\'ob_gzencode\',1e6);return$Mc;}function
importServerPath(){return"adminer.sql";}function
homepage(){echo\'<p class="links">\'.($_GET["ns"]==""&&support("database")?\'<a href="\'.h(ME).\'database=">\'.\'Alter database\'."</a>\n":""),(support("scheme")?"<a href=\'".h(ME)."scheme=\'>".($_GET["ns"]!=""?\'Alter schema\':\'Create schema\')."</a>\n":""),($_GET["ns"]!==""?\'<a href="\'.h(ME).\'schema=">\'.\'Database schema\'."</a>\n":""),(support("privileges")?"<a href=\'".h(ME)."privileges=\'>".\'Privileges\'."</a>\n":"");return
true;}function
navigation($Re){global$ia,$y,$ic,$g;echo\'<h1>
\',$this->name(),\' <span class="version">\',$ia,\'</span>
<a href="https://www.adminer.org/#download"\',target_blank(),\' id="version">\',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),\'</a>
</h1>
\';if($Re=="auth"){$Jf="";foreach((array)$_SESSION["pwds"]as$Vi=>$lh){foreach($lh
as$M=>$Qi){foreach($Qi
as$V=>$F){if($F!==null){$Ub=$_SESSION["db"][$Vi][$M][$V];foreach(($Ub?array_keys($Ub):array(""))as$l)$Jf.="<li><a href=\'".h(auth_url($Vi,$M,$V,$l))."\'>($ic[$Vi]) ".h($V.($M!=""?"@".$this->serverName($M):"").($l!=""?" - $l":""))."</a>\n";}}}}if($Jf)echo"<ul id=\'logins\'>\n$Jf</ul>\n".script("mixin(qs(\'#logins\'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$S=array();if($_GET["ns"]!==""&&!$Re&&DB!=""){$g->select_db(DB);$S=table_status(\'\',true);}echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.8.1");if(support("sql")){echo\'<script\',nonce(),\'>
\';if($S){$we=array();foreach($S
as$Q=>$T)$we[]=preg_quote($Q,\'/\');echo"var jushLinks = { $y: [ \'".js_escape(ME).(support("table")?"table=":"select=")."\$&\', /\\b(".implode("|",$we).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}$kh=$g->server_info;echo\'bodyLoad(\\'\',(is_object($g)?preg_replace(\'~^(\d\.?\d).*~s\',\'\1\',$kh):""),\'\\'\',(preg_match(\'~MariaDB~\',$kh)?", true":""),\');
</script>
\';}$this->databasesPrint($Re);if(DB==""||!$Re){echo"<p class=\'links\'>".(support("sql")?"<a href=\'".h(ME)."sql=\'".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".\'SQL command\'."</a>\n<a href=\'".h(ME)."import=\'".bold(isset($_GET["import"])).">".\'Import\'."</a>\n":"")."";if(support("dump"))echo"<a href=\'".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."\' id=\'dump\'".bold(isset($_GET["dump"])).">".\'Export\'."</a>\n";}if($_GET["ns"]!==""&&!$Re&&DB!=""){echo\'<a href="\'.h(ME).\'create="\'.bold($_GET["create"]==="").">".\'Create table\'."</a>\n";if(!$S)echo"<p class=\'message\'>".\'No tables.\'."\n";else$this->tablesPrint($S);}}}function
databasesPrint($Re){global$b,$g;$k=$this->databases();if(DB&&$k&&!in_array(DB,$k))array_unshift($k,DB);echo\'<form action="">
<p id="dbs">
\';hidden_fields_get();$Sb=script("mixin(qsl(\'select\'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title=\'".\'database\'."\'>".\'DB\'."</span>: ".($k?"<select name=\'db\'>".optionlist(array(""=>"")+$k,DB)."</select>$Sb":"<input name=\'db\' value=\'".h(DB)."\' autocapitalize=\'off\'>\n"),"<input type=\'submit\' value=\'".\'Use\'."\'".($k?" class=\'hidden\'":"").">\n";if(support("scheme")){if($Re!="db"&&DB!=""&&$g->select_db(DB)){echo"<br>".\'Schema\'.": <select name=\'ns\'>".optionlist(array(""=>"")+$b->schemas(),$_GET["ns"])."</select>$Sb";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"<input type=\'hidden\' name=\'$X\' value=\'\'>";break;}}echo"</p></form>\n";}function
tablesPrint($S){echo"<ul id=\'tables\'>".script("mixin(qs(\'#tables\'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($S
as$Q=>$O){$D=$this->tableName($O);if($D!=""){echo\'<li><a href="\'.h(ME).\'select=\'.urlencode($Q).\'"\'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select")." title=\'".\'Select data\'."\'>".\'select\'."</a> ",(support("table")||support("indexes")?\'<a href="\'.h(ME).\'table=\'.urlencode($Q).\'"\'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($O)?"view":"structure"))." title=\'".\'Show structure\'."\'>$D</a>":"<span>$D</span>")."\n";}}echo"</ul>\n";}}$b=(function_exists(\'adminer_object\')?adminer_object():new
Adminer);$ic=array("server"=>"MySQL")+$ic;if(!defined("DRIVER")){define("DRIVER","server");if(extension_loaded("mysqli")){class
Min_DB
extends
MySQLi{var$extension="MySQLi";function
__construct(){parent::init();}function
connect($M="",$V="",$F="",$j=null,$dg=null,$th=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Dd,$dg)=explode(":",$M,2);$Bh=$b->connectSsl();if($Bh)$this->ssl_set($Bh[\'key\'],$Bh[\'cert\'],$Bh[\'ca\'],\'\',\'\');$I=@$this->real_connect(($M!=""?$Dd:ini_get("mysqli.default_host")),($M.$V!=""?$V:ini_get("mysqli.default_user")),($M.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$j,(is_numeric($dg)?$dg:ini_get("mysqli.default_port")),(!is_numeric($dg)?$dg:$th),($Bh?64:0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$I;}function
set_charset($Za){if(parent::set_charset($Za))return
true;parent::set_charset(\'utf8\');return$this->query("SET NAMES $Za");}function
result($G,$o=0){$H=$this->query($G);if(!$H)return
false;$J=$H->fetch_array();return$J[$o];}function
quote($P){return"\'".$this->escape_string($P)."\'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
connect($M,$V,$F){if(ini_bool("mysql.allow_local_infile")){$this->error=sprintf(\'Disable %s or enable %s or %s extensions.\',"\'mysql.allow_local_infile\'","MySQLi","PDO_MySQL");return
false;}$this->_link=@mysql_connect(($M!=""?$M:ini_get("mysql.default_host")),("$M$V"!=""?$V:ini_get("mysql.default_user")),("$M$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
set_charset($Za){if(function_exists(\'mysql_set_charset\')){if(mysql_set_charset($Za,$this->_link))return
true;mysql_set_charset(\'utf8\',$this->_link);}return$this->query("SET NAMES $Za");}function
quote($P){return"\'".mysql_real_escape_string($P,$this->_link)."\'";}function
select_db($j){return
mysql_select_db($j,$this->_link);}function
query($G,$Bi=false){$H=@($Bi?mysql_unbuffered_query($G,$this->_link):mysql_query($G,$this->_link));$this->error="";if(!$H){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
true;}return
new
Min_Result($H);}function
multi_query($G){return$this->_result=$this->query($G);}function
store_result(){return$this->_result;}function
next_result(){return
false;}function
result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
false;return
mysql_result($H->_result,0,$o);}}class
Min_Result{var$num_rows,$_result,$_offset=0;function
__construct($H){$this->_result=$H;$this->num_rows=mysql_num_rows($H);}function
fetch_assoc(){return
mysql_fetch_assoc($this->_result);}function
fetch_row(){return
mysql_fetch_row($this->_result);}function
fetch_field(){$I=mysql_fetch_field($this->_result,$this->_offset++);$I->orgtable=$I->table;$I->orgname=$I->name;$I->charsetnr=($I->blob?63:0);return$I;}function
__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
Min_DB
extends
Min_PDO{var$extension="PDO_MySQL";function
connect($M,$V,$F){global$b;$xf=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Bh=$b->connectSsl();if($Bh){if(!empty($Bh[\'key\']))$xf[PDO::MYSQL_ATTR_SSL_KEY]=$Bh[\'key\'];if(!empty($Bh[\'cert\']))$xf[PDO::MYSQL_ATTR_SSL_CERT]=$Bh[\'cert\'];if(!empty($Bh[\'ca\']))$xf[PDO::MYSQL_ATTR_SSL_CA]=$Bh[\'ca\'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace(\'~:(\d)~\',\';port=\1\',$M)),$V,$F,$xf);return
true;}function
set_charset($Za){$this->query("SET NAMES $Za");}function
select_db($j){return$this->query("USE ".idf_escape($j));}function
query($G,$Bi=false){$this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Bi);return
parent::query($G,$Bi);}}}class
Min_Driver
extends
Min_SQL{function
insert($Q,$N){return($N?parent::insert($Q,$N):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
insertUpdate($Q,$K,$kg){$f=array_keys(reset($K));$ig="INSERT INTO ".table($Q)." (".implode(", ",$f).") VALUES\n";$Ti=array();foreach($f
as$z)$Ti[$z]="$z = VALUES($z)";$Jh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ti);$Ti=array();$te=0;foreach($K
as$N){$Y="(".implode(", ",$N).")";if($Ti&&(strlen($ig)+$te+strlen($Y)+strlen($Jh)>1e6)){if(!queries($ig.implode(",\n",$Ti).$Jh))return
false;$Ti=array();$te=0;}$Ti[]=$Y;$te+=strlen($Y)+2;}return
queries($ig.implode(",\n",$Ti).$Jh);}function
slowQuery($G,$ei){if(min_version(\'5.7.8\',\'10.1.2\')){if(preg_match(\'~MariaDB~\',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$ei FOR $G";elseif(preg_match(\'~^(SELECT\b)(.+)~is\',$G,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($ei*1000).") */ $C[2]";}}function
convertSearch($v,$X,$o){return(preg_match(\'~char|text|enum|set~\',$o["type"])&&!preg_match("~^utf8~",$o["collation"])&&preg_match(\'~[\x80-\xFF]~\',$X[\'val\'])?"CONVERT($v USING ".charset($this->_conn).")":$v);}function
warnings(){$H=$this->_conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();select($H);return
ob_get_clean();}}function
tableHelp($D){$_e=preg_match(\'~MariaDB~\',$this->_conn->server_info);if(information_schema(DB))return
strtolower(($_e?"information-schema-$D-table/":str_replace("_","-",$D)."-table.html"));if(DB=="mysql")return($_e?"mysql$D-table/":"system-database.html");}}function
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
table($v){return
idf_escape($v);}function
connect(){global$b,$U,$Gh;$g=new
Min_DB;$Kb=$b->credentials();if($g->connect($Kb[0],$Kb[1],$Kb[2])){$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");if(min_version(\'5.7.8\',10.2,$g)){$Gh[\'Strings\'][]="json";$U["json"]=4294967295;}return$g;}$I=$g->error;if(function_exists(\'iconv\')&&!is_utf8($I)&&strlen($Xg=iconv("windows-1250","utf-8",$I))>strlen($I))$I=$Xg;return$I;}function
get_databases($dd){$I=get_session("dbs");if($I===null){$G=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$I=($dd?slow_query($G):get_vals($G));restart_session();set_session("dbs",$I);stop_session();}return$I;}function
limit($G,$Z,$_,$hf=0,$hh=" "){return" $G$Z".($_!==null?$hh."LIMIT $_".($hf?" OFFSET $hf":""):"");}function
limit1($Q,$G,$Z,$hh="\n"){return
limit($G,$Z,1,0,$hh);}function
db_collation($l,$lb){global$g;$I=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($l),1);if(preg_match(\'~ COLLATE ([^ ]+)~\',$i,$C))$I=$C[1];elseif(preg_match(\'~ CHARACTER SET ([^ ]+)~\',$i,$C))$I=$lb[$C[1]][-1];return$I;}function
engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function
logged_user(){global$g;return$g->result("SELECT USER()");}function
tables_list(){return
get_key_vals(min_version(5)?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
count_tables($k){$I=array();foreach($k
as$l)$I[$l]=count(get_vals("SHOW TABLES IN ".idf_escape($l)));return$I;}function
table_status($D="",$Sc=false){$I=array();foreach(get_rows($Sc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace(\'~(?:(.+); )?InnoDB free: .*~\',\'\1\',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($D!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
is_view($R){return$R["Engine"]===null;}function
fk_support($R){return
preg_match(\'~InnoDB|IBMDB2I~i\',$R["Engine"])||(preg_match(\'~NDB~i\',$R["Engine"])&&min_version(5.6));}function
fields($Q){$I=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$J){preg_match(\'~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~\',$J["Type"],$C);$I[$J["Field"]]=array("field"=>$J["Field"],"full_type"=>$J["Type"],"type"=>$C[1],"length"=>$C[2],"unsigned"=>ltrim($C[3].$C[4]),"default"=>($J["Default"]!=""||preg_match("~char|set~",$C[1])?(preg_match(\'~text~\',$C[1])?stripslashes(preg_replace("~^\'(.*)\'\$~",\'\1\',$J["Default"])):$J["Default"]):null),"null"=>($J["Null"]=="YES"),"auto_increment"=>($J["Extra"]=="auto_increment"),"on_update"=>(preg_match(\'~^on update (.+)~i\',$J["Extra"],$C)?$C[1]:""),"collation"=>$J["Collation"],"privileges"=>array_flip(preg_split(\'~, *~\',$J["Privileges"])),"comment"=>$J["Comment"],"primary"=>($J["Key"]=="PRI"),"generated"=>preg_match(\'~^(VIRTUAL|PERSISTENT|STORED)~\',$J["Extra"]),);}return$I;}function
indexes($Q,$h=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$h)as$J){$D=$J["Key_name"];$I[$D]["type"]=($D=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?($J["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$I[$D]["columns"][]=$J["Column_name"];$I[$D]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$D]["descs"][]=null;}return$I;}function
foreign_keys($Q){global$g,$pf;static$Zf=\'(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")\';$I=array();$Ib=$g->result("SHOW CREATE TABLE ".table($Q),1);if($Ib){preg_match_all("~CONSTRAINT ($Zf) FOREIGN KEY ?\\(((?:$Zf,? ?)+)\\) REFERENCES ($Zf)(?:\\.($Zf))? \\(((?:$Zf,? ?)+)\\)(?: ON DELETE ($pf))?(?: ON UPDATE ($pf))?~",$Ib,$Ce,PREG_SET_ORDER);foreach($Ce
as$C){preg_match_all("~$Zf~",$C[2],$vh);preg_match_all("~$Zf~",$C[5],$Wh);$I[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map(\'idf_unescape\',$vh[0]),"target"=>array_map(\'idf_unescape\',$Wh[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$I;}function
view($D){global$g;return
array("select"=>preg_replace(\'~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU\',\'\',$g->result("SHOW CREATE VIEW ".table($D),1)));}function
collations(){$I=array();foreach(get_rows("SHOW COLLATION")as$J){if($J["Default"])$I[$J["Charset"]][-1]=$J["Collation"];else$I[$J["Charset"]][]=$J["Collation"];}ksort($I);foreach($I
as$z=>$X)asort($I[$z]);return$I;}function
information_schema($l){return(min_version(5)&&$l=="information_schema")||(min_version(5.5)&&$l=="performance_schema");}function
error(){global$g;return
h(preg_replace(\'~^You have an error.*syntax to use~U\',"Syntax error",$g->error));}function
create_database($l,$d){return
queries("CREATE DATABASE ".idf_escape($l).($d?" COLLATE ".q($d):""));}function
drop_databases($k){$I=apply_queries("DROP DATABASE",$k,\'idf_escape\');restart_session();set_session("dbs",null);return$I;}function
rename_database($D,$d){$I=false;if(create_database($D,$d)){$S=array();$Yi=array();foreach(tables_list()as$Q=>$T){if($T==\'VIEW\')$Yi[]=$Q;else$S[]=$Q;}$I=(!$S&&!$Yi)||move_tables($S,$Yi,$D);drop_databases($I?array(DB):array());}return$I;}function
auto_increment(){$La=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$La="";break;}if($w["type"]=="PRIMARY")$La=" UNIQUE";}}return" AUTO_INCREMENT$La";}function
alter_table($Q,$D,$p,$fd,$rb,$yc,$d,$Ka,$Tf){$c=array();foreach($p
as$o)$c[]=($o[1]?($Q!=""?($o[0]!=""?"CHANGE ".idf_escape($o[0]):"ADD"):" ")." ".implode($o[1]).($Q!=""?$o[2]:""):"DROP ".idf_escape($o[0]));$c=array_merge($c,$fd);$O=($rb!==null?" COMMENT=".q($rb):"").($yc?" ENGINE=".q($yc):"").($d?" COLLATE ".q($d):"").($Ka!=""?" AUTO_INCREMENT=$Ka":"");if($Q=="")return
queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)$O$Tf");if($Q!=$D)$c[]="RENAME TO ".table($D);if($O)$c[]=ltrim($O);return($c||$Tf?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$c).$Tf):true);}function
alter_indexes($Q,$c){foreach($c
as$z=>$X)$c[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
queries("ALTER TABLE ".table($Q).implode(",",$c));}function
truncate_tables($S){return
apply_queries("TRUNCATE TABLE",$S);}function
drop_views($Yi){return
queries("DROP VIEW ".implode(", ",array_map(\'table\',$Yi)));}function
drop_tables($S){return
queries("DROP TABLE ".implode(", ",array_map(\'table\',$S)));}function
move_tables($S,$Yi,$Wh){global$g;$Jg=array();foreach($S
as$Q)$Jg[]=table($Q)." TO ".idf_escape($Wh).".".table($Q);if(!$Jg||queries("RENAME TABLE ".implode(", ",$Jg))){$Zb=array();foreach($Yi
as$Q)$Zb[table($Q)]=view($Q);$g->select_db($Wh);$l=idf_escape(DB);foreach($Zb
as$D=>$Xi){if(!queries("CREATE VIEW $D AS ".str_replace(" $l."," ",$Xi["select"]))||!queries("DROP VIEW $l.$D"))return
false;}return
true;}return
false;}function
copy_tables($S,$Yi,$Wh){queries("SET sql_mode = \'NO_AUTO_VALUE_ON_ZERO\'");foreach($S
as$Q){$D=($Wh==DB?table("copy_$Q"):idf_escape($Wh).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $D"))||!queries("CREATE TABLE $D LIKE ".table($Q))||!queries("INSERT INTO $D SELECT * FROM ".table($Q)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J){$wi=$J["Trigger"];if(!queries("CREATE TRIGGER ".($Wh==DB?idf_escape("copy_$wi"):idf_escape($Wh).".".idf_escape($wi))." $J[Timing] $J[Event] ON $D FOR EACH ROW\n$J[Statement];"))return
false;}}foreach($Yi
as$Q){$D=($Wh==DB?table("copy_$Q"):idf_escape($Wh).".".table($Q));$Xi=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $D"))||!queries("CREATE VIEW $D AS $Xi[select]"))return
false;}return
true;}function
trigger($D){if($D=="")return
array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return
reset($K);}function
triggers($Q){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J)$I[$J["Trigger"]]=array($J["Timing"],$J["Event"]);return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($D,$T){global$g,$_c,$Td,$U;$Ba=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$wh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Ai="((".implode("|",array_merge(array_keys($U),$Ba)).")\\b(?:\\s*\\(((?:[^\'\")]|$_c)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*[\'\"]?([^\'\"\\s,]+)[\'\"]?)?";$Zf="$wh*(".($T=="FUNCTION"?"":$Td).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Ai";$i=$g->result("SHOW CREATE $T ".idf_escape($D),2);preg_match("~\\(((?:$Zf\\s*,?)*)\\)\\s*".($T=="FUNCTION"?"RETURNS\\s+$Ai\\s+":"")."(.*)~is",$i,$C);$p=array();preg_match_all("~$Zf\\s*,?~is",$C[1],$Ce,PREG_SET_ORDER);foreach($Ce
as$Nf)$p[]=array("field"=>str_replace("``","`",$Nf[2]).$Nf[3],"type"=>strtolower($Nf[5]),"length"=>preg_replace_callback("~$_c~s",\'normalize_enum\',$Nf[6]),"unsigned"=>strtolower(preg_replace(\'~\s+~\',\' \',trim("$Nf[8] $Nf[7]"))),"null"=>1,"full_type"=>$Nf[4],"inout"=>strtoupper($Nf[1]),"collation"=>strtolower($Nf[9]),);if($T!="FUNCTION")return
array("fields"=>$p,"definition"=>$C[11]);return
array("fields"=>$p,"returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",);}function
routines(){return
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
routine_languages(){return
array();}function
routine_id($D,$J){return
idf_escape($D);}function
last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
explain($g,$G){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$G);}function
found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function
types(){return
array();}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($Zg,$h=null){return
true;}function
create_sql($Q,$Ka,$Hh){global$g;$I=$g->result("SHOW CREATE TABLE ".table($Q),1);if(!$Ka)$I=preg_replace(\'~ AUTO_INCREMENT=\d+~\',\'\',$I);return$I;}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
use_sql($j){return"USE ".idf_escape($j);}function
trigger_sql($Q){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$J)$I.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}function
show_variables(){return
get_key_vals("SHOW VARIABLES");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
show_status(){return
get_key_vals("SHOW STATUS");}function
convert_field($o){if(preg_match("~binary~",$o["type"]))return"HEX(".idf_escape($o["field"]).")";if($o["type"]=="bit")return"BIN(".idf_escape($o["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($o["field"]).")";}function
unconvert_field($o,$I){if(preg_match("~binary~",$o["type"]))$I="UNHEX($I)";if($o["type"]=="bit")$I="CONV($I, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))$I=(min_version(8)?"ST_":"")."GeomFromText($I, SRID($o[field]))";return$I;}function
support($Tc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view")))."~",$Tc);}function
kill_process($X){return
queries("KILL ".number($X));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){global$g;return$g->result("SELECT @@max_connections");}function
driver_config(){$U=array();$Gh=array();foreach(array(\'Numbers\'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),\'Date and time\'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),\'Strings\'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),\'Lists\'=>array("enum"=>65535,"set"=>64),\'Binary\'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),\'Geometry\'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$U+=$X;$Gh[$z]=array_keys($X);}return
array(\'possible_drivers\'=>array("MySQLi","MySQL","PDO_MySQL"),\'jush\'=>"sql",\'types\'=>$U,\'structured_types\'=>$Gh,\'unsigned\'=>array("unsigned","zerofill","unsigned zerofill"),\'operators\'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),\'functions\'=>array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper"),\'grouping\'=>array("avg","count","count distinct","group_concat","max","min","sum"),\'edit_functions\'=>array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",)),);}}$vb=driver_config();$hg=$vb[\'possible_drivers\'];$y=$vb[\'jush\'];$U=$vb[\'types\'];$Gh=$vb[\'structured_types\'];$Hi=$vb[\'unsigned\'];$uf=$vb[\'operators\'];$nd=$vb[\'functions\'];$td=$vb[\'grouping\'];$qc=$vb[\'edit_functions\'];if($b->operators===null)$b->operators=$uf;define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace(\'~\?.*~\',\'\',relative_uri()).\'?\'.(sid()?SID.\'&\':\'\').(SERVER!==null?DRIVER."=".urlencode(SERVER).\'&\':\'\').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).\'&\':\'\').(DB!=""?\'db=\'.urlencode(DB).\'&\'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):\'\'));$ia="4.8.1";function
page_header($gi,$n="",$Ua=array(),$hi=""){global$ca,$ia,$b,$ic,$y;page_headers();if(is_ajax()&&$n){page_messages($n);exit;}$ii=$gi.($hi!=""?": $hi":"");$ji=strip_tags($ii.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo\'<!DOCTYPE html>
<html lang="en" dir="ltr">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<title>\',$ji,\'</title>
<link rel="stylesheet" type="text/css" href="\',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=4.8.1"),\'">
\',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.8.1");if($b->head()){echo\'<link rel="shortcut icon" type="image/x-icon" href="\',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.8.1"),\'">
<link rel="apple-touch-icon" href="\',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.8.1"),\'">
\';foreach($b->css()as$Mb){echo\'<link rel="stylesheet" type="text/css" href="\',h($Mb),\'">
\';}}echo\'
<body class="ltr nojs">
\';$q=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists(\'openssl_verify\')&&file_exists($q)&&filemtime($q)+86400>time()){$Wi=unserialize(file_get_contents($q));$tg="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
-----END PUBLIC KEY-----
";if(openssl_verify($Wi["version"],base64_decode($Wi["signature"]),$tg)==1)$_COOKIE["adminer_version"]=$Wi["version"];}echo\'<script\',nonce(),\'>
mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick\',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, \'$ia\', \'".js_escape(ME)."\', \'".get_token()."\')");?>});
document.body.className = document.body.className.replace(/ nojs/, \' js\');
var offlineMessage = \'<?php echo
js_escape(\'You are offline.\'),\'\\';
var thousandsSeparator = \\'\',js_escape(\',\'),\'\\';
</script>

<div id="help" class="jush-\',$y,\' jsonly hidden"></div>
\',script("mixin(qs(\'#help\'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),\'
<div id="content">
\';if($Ua!==null){$A=substr(preg_replace(\'~\b(username|db|ns)=[^&]*&~\',\'\',ME),0,-1);echo\'<p id="breadcrumb"><a href="\'.h($A?$A:".").\'">\'.$ic[DRIVER].\'</a> &raquo; \';$A=substr(preg_replace(\'~\b(db|ns)=[^&]*&~\',\'\',ME),0,-1);$M=$b->serverName(SERVER);$M=($M!=""?$M:\'Server\');if($Ua===false)echo"$M\n";else{echo"<a href=\'".h($A)."\' accesskey=\'1\' title=\'Alt+Shift+1\'>$M</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ua)))echo\'<a href="\'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).\'">\'.h(DB).\'</a> &raquo; \';if(is_array($Ua)){if($_GET["ns"]!="")echo\'<a href="\'.h(substr(ME,0,-1)).\'">\'.h($_GET["ns"]).\'</a> &raquo; \';foreach($Ua
as$z=>$X){$bc=(is_array($X)?$X[1]:h($X));if($bc!="")echo"<a href=\'".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."\'>$bc</a> &raquo; ";}}echo"$gi\n";}}echo"<h2>$ii</h2>\n","<div id=\'ajaxstatus\' class=\'jsonly hidden\'></div>\n";restart_session();page_messages($n);$k=&get_session("dbs");if(DB!=""&&$k&&!in_array(DB,$k,true))$k=null;stop_session();define("PAGE_HEADER",1);}function
page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$Lb){$zd=array();foreach($Lb
as$z=>$X)$zd[]="$z $X";header("Content-Security-Policy: ".implode("; ",$zd));}$b->headers();}function
csp(){return
array(array("script-src"=>"\'self\' \'unsafe-inline\' \'nonce-".get_nonce()."\' \'strict-dynamic\'","connect-src"=>"\'self\'","frame-src"=>"https://www.adminer.org","object-src"=>"\'none\'","base-uri"=>"\'none\'","form-action"=>"\'self\'",),);}function
get_nonce(){static$bf;if(!$bf)$bf=base64_encode(rand_string());return$bf;}function
page_messages($n){$Ji=preg_replace(\'~^[^?]*~\',\'\',$_SERVER["REQUEST_URI"]);$Oe=$_SESSION["messages"][$Ji];if($Oe){echo"<div class=\'message\'>".implode("</div>\n<div class=\'message\'>",$Oe)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Ji]);}if($n)echo"<div class=\'error\'>$n</div>\n";}function
page_footer($Re=""){global$b,$ni;echo\'</div>

\';if($Re!="auth"){echo\'<form action="" method="post">
<p class="logout">
<input type="submit" name="logout" value="Logout" id="logout">
<input type="hidden" name="token" value="\',$ni,\'">
</p>
</form>
\';}echo\'<div id="menu">
\';$b->navigation($Re);echo\'</div>
\',script("setupSubmitHighlight(document);");}function
int32($Ue){while($Ue>=2147483648)$Ue-=4294967296;while($Ue<=-2147483649)$Ue+=4294967296;return(int)$Ue;}function
long2str($W,$aj){$Xg=\'\';foreach($W
as$X)$Xg.=pack(\'V\',$X);if($aj)return
substr($Xg,0,end($W));return$Xg;}function
str2long($Xg,$aj){$W=array_values(unpack(\'V*\',str_pad($Xg,4*ceil(strlen($Xg)/4),"\0")));if($aj)$W[]=strlen($Xg);return$W;}function
xxtea_mx($mj,$lj,$Kh,$fe){return
int32((($mj>>5&0x7FFFFFF)^$lj<<2)+(($lj>>3&0x1FFFFFFF)^$mj<<4))^int32(($Kh^$lj)+($fe^$mj));}function
encrypt_string($Fh,$z){if($Fh=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Fh,true);$Ue=count($W)-1;$mj=$W[$Ue];$lj=$W[0];$ug=floor(6+52/($Ue+1));$Kh=0;while($ug-->0){$Kh=int32($Kh+0x9E3779B9);$pc=$Kh>>2&3;for($Lf=0;$Lf<$Ue;$Lf++){$lj=$W[$Lf+1];$Te=xxtea_mx($mj,$lj,$Kh,$z[$Lf&3^$pc]);$mj=int32($W[$Lf]+$Te);$W[$Lf]=$mj;}$lj=$W[0];$Te=xxtea_mx($mj,$lj,$Kh,$z[$Lf&3^$pc]);$mj=int32($W[$Ue]+$Te);$W[$Ue]=$mj;}return
long2str($W,false);}function
decrypt_string($Fh,$z){if($Fh=="")return"";if(!$z)return
false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Fh,false);$Ue=count($W)-1;$mj=$W[$Ue];$lj=$W[0];$ug=floor(6+52/($Ue+1));$Kh=int32($ug*0x9E3779B9);while($Kh){$pc=$Kh>>2&3;for($Lf=$Ue;$Lf>0;$Lf--){$mj=$W[$Lf-1];$Te=xxtea_mx($mj,$lj,$Kh,$z[$Lf&3^$pc]);$lj=int32($W[$Lf]-$Te);$W[$Lf]=$lj;}$mj=$W[$Ue];$Te=xxtea_mx($mj,$lj,$Kh,$z[$Lf&3^$pc]);$lj=int32($W[0]-$Te);$W[0]=$lj;$Kh=int32($Kh-0x9E3779B9);}return
long2str($W,true);}$g=\'\';$yd=$_SESSION["token"];if(!$yd)$_SESSION["token"]=rand(1,1e6);$ni=get_token();$bg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$bg[$z]=$X;}}function
add_invalid_login(){global$b;$ld=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$ld)return;$Yd=unserialize(stream_get_contents($ld));$di=time();if($Yd){foreach($Yd
as$Zd=>$X){if($X[0]<$di)unset($Yd[$Zd]);}}$Xd=&$Yd[$b->bruteForceKey()];if(!$Xd)$Xd=array($di+30*60,0);$Xd[1]++;file_write_unlock($ld,serialize($Yd));}function
check_invalid_login(){global$b;$Yd=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Xd=($Yd?$Yd[$b->bruteForceKey()]:array());$af=($Xd[1]>29?$Xd[0]-time():0);if($af>0)auth_error(lang(array(\'Too many unsuccessful logins, try again in %d minute.\',\'Too many unsuccessful logins, try again in %d minutes.\'),ceil($af/60)));}$Ia=$_POST["auth"];if($Ia){session_regenerate_id();$Vi=$Ia["driver"];$M=$Ia["server"];$V=$Ia["username"];$F=(string)$Ia["password"];$l=$Ia["db"];set_password($Vi,$M,$V,$F);$_SESSION["db"][$Vi][$M][$V][$l]=true;if($Ia["permanent"]){$z=base64_encode($Vi)."-".base64_encode($M)."-".base64_encode($V)."-".base64_encode($l);$ng=$b->permanentLogin(true);$bg[$z]="$z:".base64_encode($ng?encrypt_string($F,$ng):"");cookie("adminer_permanent",implode(" ",$bg));}if(count($_POST)==1||DRIVER!=$Vi||SERVER!=$M||$_GET["username"]!==$V||DB!=$l)redirect(auth_url($Vi,$M,$V,$l));}elseif($_POST["logout"]&&(!$yd||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace(\'~\b(username|db|ns)=[^&]*&~\',\'\',ME),0,-1),\'Logout successful.\'.\' \'.\'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.\');}elseif($bg&&!$_SESSION["pwds"]){session_regenerate_id();$ng=$b->permanentLogin();foreach($bg
as$z=>$X){list(,$fb)=explode(":",$X);list($Vi,$M,$V,$l)=array_map(\'base64_decode\',explode("-",$z));set_password($Vi,$M,$V,decrypt_string(base64_decode($fb),$ng));$_SESSION["db"][$Vi][$M][$V][$l]=true;}}function
unset_permanent(){global$bg;foreach($bg
as$z=>$X){list($Vi,$M,$V,$l)=array_map(\'base64_decode\',explode("-",$z));if($Vi==DRIVER&&$M==SERVER&&$V==$_GET["username"]&&$l==DB)unset($bg[$z]);}cookie("adminer_permanent",implode(" ",$bg));}function
auth_error($n){global$b,$yd;$mh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$mh]||$_GET[$mh])&&!$yd)$n=\'Session expired, please login again.\';else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$n.=($n?\'<br>\':\'\').sprintf(\'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.\',target_blank(),\'<code>permanentLogin()</code>\');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$mh]&&$_GET[$mh]&&ini_bool("session.use_only_cookies"))$n=\'Session support must be enabled.\';$Of=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$Of["lifetime"]);page_header(\'Login\',$n,null);echo"<form action=\'\' method=\'post\'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class=\'message\'>".\'The action will be performed after successful login with the same credentials.\'."\n";echo"</div>\n";$b->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(\'No extension\',sprintf(\'None of the supported PHP extensions (%s) are available.\',implode(", ",$hg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Dd,$dg)=explode(":",SERVER,2);if(preg_match(\'~^\s*([-+]?\d+)~\',$dg,$C)&&($C[1]<1024||$C[1]>65535))auth_error(\'Connecting to privileged ports is not allowed.\');check_invalid_login();$g=connect();$m=new
Min_Driver($g);}$xe=null;if(!is_object($g)||($xe=$b->login($_GET["username"],get_password()))!==true){$n=(is_string($g)?h($g):(is_string($xe)?$xe:\'Invalid credentials.\'));auth_error($n.(preg_match(\'~^ | $~\',get_password())?\'<br>\'.\'There is a space in the input password which might be the cause.\':\'\'));}if($_POST["logout"]&&$yd&&!verify_token()){page_header(\'Logout\',\'Invalid CSRF token. Send the form again.\');page_footer("db");exit;}if($Ia&&$_POST["token"])$_POST["token"]=$ni;$n=\'\';if($_POST){if(!verify_token()){$Sd="max_input_vars";$Ie=ini_get($Sd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Ie||$X<$Ie)){$Sd=$z;$Ie=$X;}}}$n=(!$_POST["token"]&&$Ie?sprintf(\'Maximum number of allowed fields exceeded. Please increase %s.\',"\'$Sd\'"):\'Invalid CSRF token. Send the form again.\'.\' \'.\'If you did not send this request from Adminer then close this page.\');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=sprintf(\'Too big POST data. Reduce the data or increase the %s configuration directive.\',"\'post_max_size\'");if(isset($_GET["sql"]))$n.=\' \'.\'You can upload a big SQL file via FTP and import it from server.\';}function
select($H,$h=null,$Bf=array(),$_=0){global$y;$we=array();$x=array();$f=array();$Sa=array();$U=array();$I=array();odd(\'\');for($t=0;(!$_||$t<$_)&&($J=$H->fetch_row());$t++){if(!$t){echo"<div class=\'scrollable\'>\n","<table cellspacing=\'0\' class=\'nowrap\'>\n","<thead><tr>";for($ee=0;$ee<count($J);$ee++){$o=$H->fetch_field();$D=$o->name;$Af=$o->orgtable;$_f=$o->orgname;$I[$o->table]=$Af;if($Bf&&$y=="sql")$we[$ee]=($D=="table"?"table=":($D=="possible_keys"?"indexes=":null));elseif($Af!=""){if(!isset($x[$Af])){$x[$Af]=array();foreach(indexes($Af,$h)as$w){if($w["type"]=="PRIMARY"){$x[$Af]=array_flip($w["columns"]);break;}}$f[$Af]=$x[$Af];}if(isset($f[$Af][$_f])){unset($f[$Af][$_f]);$x[$Af][$_f]=$ee;$we[$ee]=$Af;}}if($o->charsetnr==63)$Sa[$ee]=true;$U[$ee]=$o->type;echo"<th".($Af!=""||$o->name!=$_f?" title=\'".h(($Af!=""?"$Af.":"").$_f)."\'":"").">".h($D).($Bf?doc_link(array(\'sql\'=>"explain-output.html#explain_".strtolower($D),\'mariadb\'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($J
as$z=>$X){$A="";if(isset($we[$z])&&!$f[$we[$z]]){if($Bf&&$y=="sql"){$Q=$J[array_search("table=",$we)];$A=ME.$we[$z].urlencode($Bf[$Q]!=""?$Bf[$Q]:$Q);}else{$A=ME."edit=".urlencode($we[$z]);foreach($x[$we[$z]]as$jb=>$ee)$A.="&where".urlencode("[".bracket_escape($jb)."]")."=".urlencode($J[$ee]);}}elseif(is_url($X))$A=$X;if($X===null)$X="<i>NULL</i>";elseif($Sa[$z]&&!is_utf8($X))$X="<i>".lang(array(\'%d byte\',\'%d bytes\'),strlen($X))."</i>";else{$X=h($X);if($U[$z]==254)$X="<code>$X</code>";}if($A)$X="<a href=\'".h($A)."\'".(is_url($A)?target_blank():\'\').">$X</a>";echo"<td>$X";}}echo($t?"</table>\n</div>":"<p class=\'message\'>".\'No rows.\')."\n";return$I;}function
referencable_primary($fh){$I=array();foreach(table_status(\'\',true)as$Oh=>$Q){if($Oh!=$fh&&fk_support($Q)){foreach(fields($Oh)as$o){if($o["primary"]){if($I[$Oh]){unset($I[$Oh]);break;}$I[$Oh]=$o;}}}}return$I;}function
adminer_settings(){parse_str($_COOKIE["adminer_settings"],$oh);return$oh;}function
adminer_setting($z){$oh=adminer_settings();return$oh[$z];}function
set_adminer_settings($oh){return
cookie("adminer_settings",http_build_query($oh+adminer_settings()));}function
textarea($D,$Y,$K=10,$nb=80){global$y;echo"<textarea name=\'$D\' rows=\'$K\' cols=\'$nb\' class=\'sqlarea jush-$y\' spellcheck=\'false\' wrap=\'off\'>";if(is_array($Y)){foreach($Y
as$X)echo
h($X[0])."\n\n\n";}else
echo
h($Y);echo"</textarea>";}function
edit_type($z,$o,$lb,$hd=array(),$Pc=array()){global$Gh,$U,$Hi,$pf;$T=$o["type"];echo\'<td><select name="\',h($z),\'[type]" class="type" aria-labelledby="label-type">\';if($T&&!isset($U[$T])&&!isset($hd[$T])&&!in_array($T,$Pc))$Pc[]=$T;if($hd)$Gh[\'Foreign keys\']=$hd;echo
optionlist(array_merge($Pc,$Gh),$T),\'</select><td><input name="\',h($z),\'[length]" value="\',h($o["length"]),\'" size="3"\',(!$o["length"]&&preg_match(\'~var(char|binary)$~\',$T)?" class=\'required\'":"");echo\' aria-labelledby="label-length"><td class="options">\',"<select name=\'".h($z)."[collation]\'".(preg_match(\'~(char|text|enum|set)$~\',$T)?"":" class=\'hidden\'").\'><option value="">(\'.\'collation\'.\')\'.optionlist($lb,$o["collation"]).\'</select>\',($Hi?"<select name=\'".h($z)."[unsigned]\'".(!$T||preg_match(number_type(),$T)?"":" class=\'hidden\'").\'><option>\'.optionlist($Hi,$o["unsigned"]).\'</select>\':\'\'),(isset($o[\'on_update\'])?"<select name=\'".h($z)."[on_update]\'".(preg_match(\'~timestamp|datetime~\',$T)?"":" class=\'hidden\'").\'>\'.optionlist(array(""=>"(".\'ON UPDATE\'.")","CURRENT_TIMESTAMP"),(preg_match(\'~^CURRENT_TIMESTAMP~i\',$o["on_update"])?"CURRENT_TIMESTAMP":$o["on_update"])).\'</select>\':\'\'),($hd?"<select name=\'".h($z)."[on_delete]\'".(preg_match("~`~",$T)?"":" class=\'hidden\'")."><option value=\'\'>(".\'ON DELETE\'.")".optionlist(explode("|",$pf),$o["on_delete"])."</select> ":" ");}function
process_length($te){global$_c;return(preg_match("~^\\s*\\(?\\s*$_c(?:\\s*,\\s*$_c)*+\\s*\\)?\\s*\$~",$te)&&preg_match_all("~$_c~",$te,$Ce)?"(".implode(",",$Ce[0]).")":preg_replace(\'~^[0-9].*~\',\'(\0)\',preg_replace(\'~[^-0-9,+()[\]]~\',\'\',$te)));}function
process_type($o,$kb="COLLATE"){global$Hi;return" $o[type]".process_length($o["length"]).(preg_match(number_type(),$o["type"])&&in_array($o["unsigned"],$Hi)?" $o[unsigned]":"").(preg_match(\'~char|text|enum|set~\',$o["type"])&&$o["collation"]?" $kb ".q($o["collation"]):"");}function
process_field($o,$_i){return
array(idf_escape(trim($o["field"])),process_type($_i),($o["null"]?" NULL":" NOT NULL"),default_value($o),(preg_match(\'~timestamp|datetime~\',$o["type"])&&$o["on_update"]?" ON UPDATE $o[on_update]":""),(support("comment")&&$o["comment"]!=""?" COMMENT ".q($o["comment"]):""),($o["auto_increment"]?auto_increment():null),);}function
default_value($o){$Wb=$o["default"];return($Wb===null?"":" DEFAULT ".(preg_match(\'~char|binary|text|enum|set~\',$o["type"])||preg_match(\'~^(?![a-z])~i\',$Wb)?q($Wb):$Wb));}function
type_class($T){foreach(array(\'char\'=>\'text\',\'date\'=>\'time|year\',\'binary\'=>\'blob\',\'enum\'=>\'set\',)as$z=>$X){if(preg_match("~$z|$X~",$T))return" class=\'$z\'";}}function
edit_fields($p,$lb,$T="TABLE",$hd=array()){global$Td;$p=array_values($p);$Xb=(($_POST?$_POST["defaults"]:adminer_setting("defaults"))?"":" class=\'hidden\'");$sb=(($_POST?$_POST["comments"]:adminer_setting("comments"))?"":" class=\'hidden\'");echo\'<thead><tr>
\';if($T=="PROCEDURE"){echo\'<td>\';}echo\'<th id="label-name">\',($T=="TABLE"?\'Column name\':\'Parameter name\'),\'<td id="label-type">Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;"></textarea>\',script("qs(\'#enum-edit\').onblur = editingLengthBlur;"),\'<td id="label-length">Length
<td>\',\'Options\';if($T=="TABLE"){echo\'<td id="label-null">NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym id="label-ai" title="Auto Increment">AI</acronym>\',doc_link(array(\'sql\'=>"example-auto-increment.html",\'mariadb\'=>"auto_increment/",\'sqlite\'=>"autoinc.html",\'pgsql\'=>"datatype.html#DATATYPE-SERIAL",\'mssql\'=>"ms186775.aspx",)),\'<td id="label-default"\',$Xb,\'>Default value
\',(support("comment")?"<td id=\'label-comment\'$sb>".\'Comment\':"");}echo\'<td>\',"<input type=\'image\' class=\'icon\' name=\'add[".(support("move_col")?0:count($p))."]\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."\' alt=\'+\' title=\'".\'Add next\'."\'>".script("row_count = ".count($p).";"),\'</thead>
<tbody>
\',script("mixin(qsl(\'tbody\'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($p
as$t=>$o){$t++;$Cf=$o[($_POST?"orig":"field")];$fc=(isset($_POST["add"][$t-1])||(isset($o["field"])&&!$_POST["drop_col"][$t]))&&(support("drop_col")||$Cf=="");echo\'<tr\',($fc?"":" style=\'display: none;\'"),\'>
\',($T=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",$Td),$o["inout"]):""),\'<th>\';if($fc){echo\'<input name="fields[\',$t,\'][field]" value="\',h($o["field"]),\'" data-maxlength="64" autocapitalize="off" aria-labelledby="label-name">\';}echo\'<input type="hidden" name="fields[\',$t,\'][orig]" value="\',h($Cf),\'">\';edit_type("fields[$t]",$o,$lb,$hd);if($T=="TABLE"){echo\'<td>\',checkbox("fields[$t][null]",1,$o["null"],"","","block","label-null"),\'<td><label class="block"><input type="radio" name="auto_increment_col" value="\',$t,\'"\';if($o["auto_increment"]){echo\' checked\';}echo\' aria-labelledby="label-ai"></label><td\',$Xb,\'>\',checkbox("fields[$t][has_default]",1,$o["has_default"],"","","","label-default"),\'<input name="fields[\',$t,\'][default]" value="\',h($o["default"]),\'" aria-labelledby="label-default">\',(support("comment")?"<td$sb><input name=\'fields[$t][comment]\' value=\'".h($o["comment"])."\' data-maxlength=\'".(min_version(5.5)?1024:255)."\' aria-labelledby=\'label-comment\'>":"");}echo"<td>",(support("move_col")?"<input type=\'image\' class=\'icon\' name=\'add[$t]\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."\' alt=\'+\' title=\'".\'Add next\'."\'> "."<input type=\'image\' class=\'icon\' name=\'up[$t]\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=up.gif&version=4.8.1")."\' alt=\' \' title=\'".\'Move up\'."\'> "."<input type=\'image\' class=\'icon\' name=\'down[$t]\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=down.gif&version=4.8.1")."\' alt=\' \' title=\'".\'Move down\'."\'> ":""),($Cf==""||support("drop_col")?"<input type=\'image\' class=\'icon\' name=\'drop_col[$t]\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.1")."\' alt=\'x\' title=\'".\'Remove\'."\'>":"");}}function
process_fields(&$p){$hf=0;if($_POST["up"]){$ne=0;foreach($p
as$z=>$o){if(key($_POST["up"])==$z){unset($p[$z]);array_splice($p,$ne,0,array($o));break;}if(isset($o["field"]))$ne=$hf;$hf++;}}elseif($_POST["down"]){$jd=false;foreach($p
as$z=>$o){if(isset($o["field"])&&$jd){unset($p[key($_POST["down"])]);array_splice($p,$hf,0,array($jd));break;}if(key($_POST["down"])==$z)$jd=$o;$hf++;}}elseif($_POST["add"]){$p=array_values($p);array_splice($p,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum($C){return"\'".str_replace("\'","\'\'",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),\'\\\'))."\'";}function
grant($od,$pg,$f,$of){if(!$pg)return
true;if($pg==array("ALL PRIVILEGES","GRANT OPTION"))return($od=="GRANT"?queries("$od ALL PRIVILEGES$of WITH GRANT OPTION"):queries("$od ALL PRIVILEGES$of")&&queries("$od GRANT OPTION$of"));return
queries("$od ".preg_replace(\'~(GRANT OPTION)\([^)]*\)~\',\'\1\',implode("$f, ",$pg).$f).$of);}function
drop_create($jc,$i,$kc,$ai,$mc,$B,$Ne,$Le,$Me,$lf,$Ye){if($_POST["drop"])query_redirect($jc,$B,$Ne);elseif($lf=="")query_redirect($i,$B,$Me);elseif($lf!=$Ye){$Jb=queries($i);queries_redirect($B,$Le,$Jb&&queries($jc));if($Jb)queries($kc);}else
queries_redirect($B,$Le,queries($ai)&&queries($mc)&&queries($jc)&&queries($i));}function
create_trigger($of,$J){global$y;$fi=" $J[Timing] $J[Event]".(preg_match(\'~ OF~\',$J["Event"])?" $J[Of]":"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($y=="mssql"?$of.$fi:$fi.$of).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
create_routine($Tg,$J){global$Td,$y;$N=array();$p=(array)$J["fields"];ksort($p);foreach($p
as$o){if($o["field"]!="")$N[]=(preg_match("~^($Td)\$~",$o["inout"])?"$o[inout] ":"").idf_escape($o["field"]).process_type($o,"CHARACTER SET");}$Yb=rtrim("\n$J[definition]",";");return"CREATE $Tg ".idf_escape(trim($J["name"]))." (".implode(", ",$N).")".(isset($_GET["function"])?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($y=="pgsql"?" AS ".q($Yb):"$Yb;");}function
remove_definer($G){return
preg_replace(\'~^([A-Z =]+) DEFINER=`\'.preg_replace(\'~@(.*)~\',\'`@`(%|\1)\',logged_user()).\'`~\',\'\1\',$G);}function
format_foreign_key($r){global$pf;$l=$r["db"];$cf=$r["ns"];return" FOREIGN KEY (".implode(", ",array_map(\'idf_escape\',$r["source"])).") REFERENCES ".($l!=""&&$l!=$_GET["db"]?idf_escape($l).".":"").($cf!=""&&$cf!=$_GET["ns"]?idf_escape($cf).".":"").table($r["table"])." (".implode(", ",array_map(\'idf_escape\',$r["target"])).")".(preg_match("~^($pf)\$~",$r["on_delete"])?" ON DELETE $r[on_delete]":"").(preg_match("~^($pf)\$~",$r["on_update"])?" ON UPDATE $r[on_update]":"");}function
tar_file($q,$ki){$I=pack("a100a8a8a8a12a12",$q,644,0,0,decoct($ki->size),decoct(time()));$eb=8*32;for($t=0;$t<strlen($I);$t++)$eb+=ord($I[$t]);$I.=sprintf("%06o",$eb)."\0 ";echo$I,str_repeat("\0",512-strlen($I));$ki->send();echo
str_repeat("\0",511-($ki->size+511)%512);}function
ini_bytes($Sd){$X=ini_get($Sd);switch(strtolower(substr($X,-1))){case\'g\':$X*=1024;case\'m\':$X*=1024;case\'k\':$X*=1024;}return$X;}function
doc_link($Yf,$bi="<sup>?</sup>"){global$y,$g;$kh=$g->server_info;$Wi=preg_replace(\'~^(\d\.?\d).*~s\',\'\1\',$kh);$Li=array(\'sql\'=>"https://dev.mysql.com/doc/refman/$Wi/en/",\'sqlite\'=>"https://www.sqlite.org/",\'pgsql\'=>"https://www.postgresql.org/docs/$Wi/",\'mssql\'=>"https://msdn.microsoft.com/library/",\'oracle\'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace(\'~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s\',\'\1\2\',$kh)."&id=",);if(preg_match(\'~MariaDB~\',$kh)){$Li[\'sql\']="https://mariadb.com/kb/en/library/";$Yf[\'sql\']=(isset($Yf[\'mariadb\'])?$Yf[\'mariadb\']:str_replace(".html","/",$Yf[\'sql\']));}return($Yf[$y]?"<a href=\'".h($Li[$y].$Yf[$y])."\'".target_blank().">$bi</a>":"");}function
ob_gzencode($P){return
gzencode($P);}function
db_size($l){global$g;if(!$g->select_db($l))return"?";$I=0;foreach(table_status()as$R)$I+=$R["Data_length"]+$R["Index_length"];return
format_number($I);}function
set_utf8mb4($i){global$g;static$N=false;if(!$N&&preg_match(\'~\butf8mb4~i\',$i)){$N=true;echo"SET NAMES ".charset($g).";\n\n";}}function
connect_error(){global$b,$g,$ni,$n,$ic;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(\'Database\'.": ".h(DB),\'Invalid database.\',true);}else{if($_POST["db"]&&!$n)queries_redirect(substr(ME,0,-1),\'Databases have been dropped.\',drop_databases($_POST["db"]));page_header(\'Select database\',$n,false);echo"<p class=\'links\'>\n";foreach(array(\'database\'=>\'Create database\',\'privileges\'=>\'Privileges\',\'processlist\'=>\'Process list\',\'variables\'=>\'Variables\',\'status\'=>\'Status\',)as$z=>$X){if(support($z))echo"<a href=\'".h(ME)."$z=\'>$X</a>\n";}echo"<p>".sprintf(\'%s version: %s through PHP extension %s\',$ic[DRIVER],"<b>".h($g->server_info)."</b>","<b>$g->extension</b>")."\n","<p>".sprintf(\'Logged as: %s\',"<b>".h(logged_user())."</b>")."\n";$k=$b->databases();if($k){$ah=support("scheme");$lb=collations();echo"<form action=\'\' method=\'post\'>\n","<table cellspacing=\'0\' class=\'checkable\'>\n",script("mixin(qsl(\'table\'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".\'Database\'." - <a href=\'".h(ME)."refresh=1\'>".\'Refresh\'."</a>"."<td>".\'Collation\'."<td>".\'Tables\'."<td>".\'Size\'." - <a href=\'".h(ME)."dbsize=1\'>".\'Compute\'."</a>".script("qsl(\'a\').onclick = partial(ajaxSetHtml, \'".js_escape(ME)."script=connect\');","")."</thead>\n";$k=($_GET["dbsize"]?count_tables($k):array_flip($k));foreach($k
as$l=>$S){$Sg=h(ME)."db=".urlencode($l);$u=h("Db-".$l);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$l,in_array($l,(array)$_POST["db"]),"","","",$u):""),"<th><a href=\'$Sg\' id=\'$u\'>".h($l)."</a>";$d=h(db_collation($l,$lb));echo"<td>".(support("database")?"<a href=\'$Sg".($ah?"&amp;ns=":"")."&amp;database=\' title=\'".\'Alter database\'."\'>$d</a>":$d),"<td align=\'right\'><a href=\'$Sg&amp;schema=\' id=\'tables-".h($l)."\' title=\'".\'Database schema\'."\'>".($_GET["dbsize"]?$S:"?")."</a>","<td align=\'right\' id=\'size-".h($l)."\'>".($_GET["dbsize"]?db_size($l):"?"),"\n";}echo"</table>\n",(support("database")?"<div class=\'footer\'><div>\n"."<fieldset><legend>".\'Selected\'." <span id=\'selected\'></span></legend><div>\n"."<input type=\'hidden\' name=\'all\' value=\'\'>".script("qsl(\'input\').onclick = function () { selectCount(\'selected\', formChecked(this, /^db/)); };")."<input type=\'submit\' name=\'drop\' value=\'".\'Drop\'."\'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),"<input type=\'hidden\' name=\'token\' value=\'$ni\'>\n","</form>\n",script("tableCheck();");}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$g->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace(\'~ns=[^&]*&~\',\'\',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(\'Schema\'.": ".h($_GET["ns"]),\'Invalid schema.\',true);page_footer("ns");exit;}}}$pf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
TmpFile{var$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Cb){$this->size+=strlen($Cb);fwrite($this->handler,$Cb);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$_c="\'(?:\'\'|[^\'\\\\]|\\\\.)*\'";$Td="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$p=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$m->select($a,$L,array(where($_GET,$p)),$L);$J=($H?$H->fetch_row():array());echo$m->value($J[0],$p[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$p=fields($a);if(!$p)$n=error();$R=table_status1($a,true);$D=$b->tableName($R);page_header(($p&&is_view($R)?$R[\'Engine\']==\'materialized view\'?\'Materialized view\':\'View\':\'Table\').": ".($D!=""?$D:h($a)),$n);$b->selectLinks($R);$rb=$R["Comment"];if($rb!="")echo"<p class=\'nowrap\'>".\'Comment\'.": ".h($rb)."\n";if($p)$b->tableStructurePrint($p);if(!is_view($R)){if(support("indexes")){echo"<h3 id=\'indexes\'>".\'Indexes\'."</h3>\n";$x=indexes($a);if($x)$b->tableIndexesPrint($x);echo\'<p class="links"><a href="\'.h(ME).\'indexes=\'.urlencode($a).\'">\'.\'Alter indexes\'."</a>\n";}if(fk_support($R)){echo"<h3 id=\'foreign-keys\'>".\'Foreign keys\'."</h3>\n";$hd=foreign_keys($a);if($hd){echo"<table cellspacing=\'0\'>\n","<thead><tr><th>".\'Source\'."<td>".\'Target\'."<td>".\'ON DELETE\'."<td>".\'ON UPDATE\'."<td></thead>\n";foreach($hd
as$D=>$r){echo"<tr title=\'".h($D)."\'>","<th><i>".implode("</i>, <i>",array_map(\'h\',$r["source"]))."</i>","<td><a href=\'".h($r["db"]!=""?preg_replace(\'~db=[^&]*~\',"db=".urlencode($r["db"]),ME):($r["ns"]!=""?preg_replace(\'~ns=[^&]*~\',"ns=".urlencode($r["ns"]),ME):ME))."table=".urlencode($r["table"])."\'>".($r["db"]!=""?"<b>".h($r["db"])."</b>.":"").($r["ns"]!=""?"<b>".h($r["ns"])."</b>.":"").h($r["table"])."</a>","(<i>".implode("</i>, <i>",array_map(\'h\',$r["target"]))."</i>)","<td>".h($r["on_delete"])."\n","<td>".h($r["on_update"])."\n",\'<td><a href="\'.h(ME.\'foreign=\'.urlencode($a).\'&name=\'.urlencode($D)).\'">\'.\'Alter\'.\'</a>\';}echo"</table>\n";}echo\'<p class="links"><a href="\'.h(ME).\'foreign=\'.urlencode($a).\'">\'.\'Add foreign key\'."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id=\'triggers\'>".\'Triggers\'."</h3>\n";$zi=triggers($a);if($zi){echo"<table cellspacing=\'0\'>\n";foreach($zi
as$z=>$X)echo"<tr valign=\'top\'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href=\'".h(ME.\'trigger=\'.urlencode($a).\'&name=\'.urlencode($z))."\'>".\'Alter\'."</a>\n";echo"</table>\n";}echo\'<p class="links"><a href="\'.h(ME).\'trigger=\'.urlencode($a).\'">\'.\'Add trigger\'."</a>\n";}}elseif(isset($_GET["schema"])){page_header(\'Database schema\',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qh=array();$Rh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all(\'~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~\',$ea,$Ce,PREG_SET_ORDER);foreach($Ce
as$t=>$C){$Qh[$C[1]]=array($C[2],$C[3]);$Rh[]="\n\t\'".js_escape($C[1])."\': [ $C[2], $C[3] ]";}$oi=0;$Pa=-1;$Zg=array();$Eg=array();$re=array();foreach(table_status(\'\',true)as$Q=>$R){if(is_view($R))continue;$eg=0;$Zg[$Q]["fields"]=array();foreach(fields($Q)as$D=>$o){$eg+=1.25;$o["pos"]=$eg;$Zg[$Q]["fields"][$D]=$o;}$Zg[$Q]["pos"]=($Qh[$Q]?$Qh[$Q]:array($oi,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$pe=$Pa;if($Qh[$Q][1]||$Qh[$X["table"]][1])$pe=min(floatval($Qh[$Q][1]),floatval($Qh[$X["table"]][1]))-1;else$Pa-=.1;while($re[(string)$pe])$pe-=.0001;$Zg[$Q]["references"][$X["table"]][(string)$pe]=array($X["source"],$X["target"]);$Eg[$X["table"]][$Q][(string)$pe]=$X["target"];$re[(string)$pe]=true;}}$oi=max($oi,$Zg[$Q]["pos"][0]+2.5+$eg);}echo\'<div id="schema" style="height: \',$oi,\'em;">
<script\',nonce(),\'>
qs(\\'#schema\\').onselectstart = function () { return false; };
var tablePos = {\',implode(",",$Rh)."\n",\'};
var em = qs(\\'#schema\\').offsetHeight / \',$oi,\';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \\'\',js_escape(DB),\'\\');
</script>
\';foreach($Zg
as$D=>$Q){echo"<div class=\'table\' style=\'top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;\'>",\'<a href="\'.h(ME).\'table=\'.urlencode($D).\'"><b>\'.h($D)."</b></a>",script("qsl(\'div\').onmousedown = schemaMousedown;");foreach($Q["fields"]as$o){$X=\'<span\'.type_class($o["type"]).\' title="\'.h($o["full_type"].($o["null"]?" NULL":\'\')).\'">\'.h($o["field"]).\'</span>\';echo"<br>".($o["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$Xh=>$Fg){foreach($Fg
as$pe=>$Bg){$qe=$pe-$Qh[$D][1];$t=0;foreach($Bg[0]as$vh)echo"\n<div class=\'references\' title=\'".h($Xh)."\' id=\'refs$pe-".($t++)."\' style=\'left: $qe"."em; top: ".$Q["fields"][$vh]["pos"]."em; padding-top: .5em;\'><div style=\'border-top: 1px solid Gray; width: ".(-$qe)."em;\'></div></div>";}}foreach((array)$Eg[$D]as$Xh=>$Fg){foreach($Fg
as$pe=>$f){$qe=$pe-$Qh[$D][1];$t=0;foreach($f
as$Wh)echo"\n<div class=\'references\' title=\'".h($Xh)."\' id=\'refd$pe-".($t++)."\' style=\'left: $qe"."em; top: ".$Q["fields"][$Wh]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME)."?file=arrow.gif) no-repeat right center;&version=4.8.1")."\'><div style=\'height: .5em; border-bottom: 1px solid Gray; width: ".(-$qe)."em;\'></div></div>";}}echo"\n</div>\n";}foreach($Zg
as$D=>$Q){foreach((array)$Q["references"]as$Xh=>$Fg){foreach($Fg
as$pe=>$Bg){$Qe=$oi;$Ge=-10;foreach($Bg[0]as$z=>$vh){$fg=$Q["pos"][0]+$Q["fields"][$vh]["pos"];$gg=$Zg[$Xh]["pos"][0]+$Zg[$Xh]["fields"][$Bg[1][$z]]["pos"];$Qe=min($Qe,$fg,$gg);$Ge=max($Ge,$fg,$gg);}echo"<div class=\'references\' id=\'refl$pe\' style=\'left: $pe"."em; top: $Qe"."em; padding: .5em 0;\'><div style=\'border-right: 1px solid Gray; margin-top: 1px; height: ".($Ge-$Qe)."em;\'></div></div>\n";}}}echo\'</div>
<p class="links"><a href="\',h(ME."schema=".urlencode($ea)),\'" id="schema-link">Permanent link</a>
\';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$n){$Fb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$Fb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($Fb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Mc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$be=preg_match(\'~sql~\',$_POST["format"]);if($be){echo"-- Adminer $ia ".$ic[DRIVER]." ".str_replace("\n"," ",$g->server_info)." dump\n\n";if($y=="sql"){echo"SET NAMES utf8;
SET time_zone = \'+00:00\';
SET foreign_key_checks = 0;
".($_POST["data_style"]?"SET sql_mode = \'NO_AUTO_VALUE_ON_ZERO\';
":"")."
";$g->query("SET time_zone = \'+00:00\'");$g->query("SET sql_mode = \'\'");}}$Hh=$_POST["db_style"];$k=array(DB);if(DB==""){$k=$_POST["databases"];if(is_string($k))$k=explode("\n",rtrim(str_replace("\r","",$k),"\n"));}foreach((array)$k
as$l){$b->dumpDatabase($l);if($g->select_db($l)){if($be&&preg_match(\'~CREATE~\',$Hh)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($l),1))){set_utf8mb4($i);if($Hh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($l).";\n";echo"$i;\n";}if($be){if($Hh)echo
use_sql($l).";\n\n";$If="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Tg){foreach(get_rows("SHOW $Tg STATUS WHERE Db = ".q($l),null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE $Tg ".idf_escape($J["Name"]),2));set_utf8mb4($i);$If.=($Hh!=\'DROP+CREATE\'?"DROP $Tg IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE EVENT ".idf_escape($J["Name"]),3));set_utf8mb4($i);$If.=($Hh!=\'DROP+CREATE\'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}if($If)echo"DELIMITER ;;\n\n$If"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Yi=array();foreach(table_status(\'\',true)as$D=>$R){$Q=(DB==""||in_array($D,(array)$_POST["tables"]));$Pb=(DB==""||in_array($D,(array)$_POST["data"]));if($Q||$Pb){if($Mc=="tar"){$ki=new
TmpFile;ob_start(array($ki,\'write\'),1e5);}$b->dumpTable($D,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Yi[]=$D;elseif($Pb){$p=fields($D);$b->dumpData($D,$_POST["data_style"],"SELECT *".convert_fields($p,$p)." FROM ".table($D));}if($be&&$_POST["triggers"]&&$Q&&($zi=trigger_sql($D)))echo"\nDELIMITER ;;\n$zi\nDELIMITER ;\n";if($Mc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$l/")."$D.csv",$ki);}elseif($be)echo"\n";}}if(function_exists(\'foreign_keys_sql\')){foreach(table_status(\'\',true)as$D=>$R){$Q=(DB==""||in_array($D,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
foreign_keys_sql($D);}}foreach($Yi
as$Xi)$b->dumpTable($Xi,$_POST["table_style"],1);if($Mc=="tar")echo
pack("x512");}}}if($be)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header(\'Export\',$n,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo\'
<form action="" method="post">
<table cellspacing="0" class="layout">
\';$Tb=array(\'\',\'USE\',\'DROP+CREATE\',\'CREATE\');$Sh=array(\'\',\'DROP+CREATE\',\'CREATE\');$Qb=array(\'\',\'TRUNCATE+INSERT\',\'INSERT\');if($y=="sql")$Qb[]=\'INSERT+UPDATE\';parse_str($_COOKIE["adminer_export"],$J);if(!$J)$J=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($J["events"])){$J["routines"]=$J["events"]=($_GET["dump"]=="");$J["triggers"]=$J["table_style"];}echo"<tr><th>".\'Output\'."<td>".html_select("output",$b->dumpOutput(),$J["output"],0)."\n";echo"<tr><th>".\'Format\'."<td>".html_select("format",$b->dumpFormat(),$J["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".\'Database\'."<td>".html_select(\'db_style\',$Tb,$J["db_style"]).(support("routine")?checkbox("routines",1,$J["routines"],\'Routines\'):"").(support("event")?checkbox("events",1,$J["events"],\'Events\'):"")),"<tr><th>".\'Tables\'."<td>".html_select(\'table_style\',$Sh,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],\'Auto Increment\').(support("trigger")?checkbox("triggers",1,$J["triggers"],\'Triggers\'):""),"<tr><th>".\'Data\'."<td>".html_select(\'data_style\',$Qb,$J["data_style"]),\'</table>
<p><input type="submit" value="Export">
<input type="hidden" name="token" value="\',$ni,\'">

<table cellspacing="0">
\',script("qsl(\'table\').onclick = dumpClick;");$jg=array();if(DB!=""){$cb=($a!=""?"":" checked");echo"<thead><tr>","<th style=\'text-align: left;\'><label class=\'block\'><input type=\'checkbox\' id=\'check-tables\'$cb>".\'Tables\'."</label>".script("qs(\'#check-tables\').onclick = partial(formCheck, /^tables\\[/);",""),"<th style=\'text-align: right;\'><label class=\'block\'>".\'Data\'."<input type=\'checkbox\' id=\'check-data\'$cb></label>".script("qs(\'#check-data\').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Yi="";$Th=tables_list();foreach($Th
as$D=>$T){$ig=preg_replace(\'~_.*~\',\'\',$D);$cb=($a==""||$a==(substr($a,-1)=="%"?"$ig%":$D));$mg="<tr><td>".checkbox("tables[]",$D,$cb,$D,"","block");if($T!==null&&!preg_match(\'~table~i\',$T))$Yi.="$mg\n";else
echo"$mg<td align=\'right\'><label class=\'block\'><span id=\'Rows-".h($D)."\'></span>".checkbox("data[]",$D,$cb)."</label>\n";$jg[$ig]++;}echo$Yi;if($Th)echo
script("ajaxSetHtml(\'".js_escape(ME)."script=db\');");}else{echo"<thead><tr><th style=\'text-align: left;\'>","<label class=\'block\'><input type=\'checkbox\' id=\'check-databases\'".($a==""?" checked":"").">".\'Database\'."</label>",script("qs(\'#check-databases\').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$k=$b->databases();if($k){foreach($k
as$l){if(!information_schema($l)){$ig=preg_replace(\'~_.*~\',\'\',$l);echo"<tr><td>".checkbox("databases[]",$l,$a==""||$a=="$ig%",$l,"","block")."\n";$jg[$ig]++;}}}else
echo"<tr><td><textarea name=\'databases\' rows=\'10\' cols=\'20\'></textarea>";}echo\'</table>
</form>
\';$Zc=true;foreach($jg
as$z=>$X){if($z!=""&&$X>1){echo($Zc?"<p>":" ")."<a href=\'".h(ME)."dump=".urlencode("$z%")."\'>".h($z)."</a>";$Zc=false;}}}elseif(isset($_GET["privileges"])){page_header(\'Privileges\');echo\'<p class="links"><a href="\'.h(ME).\'user=">\'.\'Create user\'."</a>";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$od=$H;if(!$H)$H=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, \'@\', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, \'@\', -1) AS Host");echo"<form action=\'\'><p>\n";hidden_fields_get();echo"<input type=\'hidden\' name=\'db\' value=\'".h(DB)."\'>\n",($od?"":"<input type=\'hidden\' name=\'grant\' value=\'\'>\n"),"<table cellspacing=\'0\'>\n","<thead><tr><th>".\'Username\'."<th>".\'Server\'."<th></thead>\n";while($J=$H->fetch_assoc())echo\'<tr\'.odd().\'><td>\'.h($J["User"])."<td>".h($J["Host"]).\'<td><a href="\'.h(ME.\'user=\'.urlencode($J["User"]).\'&host=\'.urlencode($J["Host"])).\'">\'.\'Edit\'."</a>\n";if(!$od||DB!="")echo"<tr".odd()."><td><input name=\'user\' autocapitalize=\'off\'><td><input name=\'host\' value=\'localhost\' autocapitalize=\'off\'><td><input type=\'submit\' value=\'".\'Edit\'."\'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Bd=&get_session("queries");$Ad=&$Bd[DB];if(!$n&&$_POST["clear"]){$Ad=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?\'Import\':\'SQL command\'),$n);if(!$n&&$_POST){$ld=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$zh=$b->importServerPath();$ld=@fopen((file_exists($zh)?$zh:"compress.zlib://$zh.gz"),"rb");$G=($ld?fread($ld,1e6):false);}else$G=get_file("sql_file",true);if(is_string($G)){if(function_exists(\'memory_get_usage\'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($G)+memory_get_usage()+8e6));if($G!=""&&strlen($G)<1e6){$ug=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$Ad||reset(end($Ad))!=$ug){restart_session();$Ad[]=array($ug,time());set_session("queries",$Bd);stop_session();}}$wh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$ac=";";$hf=0;$xc=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$qb=0;$Bc=array();$Pf=\'[\\'"\'.($y=="sql"?\'`#\':($y=="sqlite"?\'`[\':($y=="mssql"?\'[\':\'\'))).\']|/\*|-- |$\'.($y=="pgsql"?\'|\$[^$]*\$\':\'\');$pi=microtime(true);parse_str($_COOKIE["adminer_export"],$xa);$oc=$b->dumpFormat();unset($oc["sql"]);while($G!=""){if(!$hf&&preg_match("~^$wh*+DELIMITER\\s+(\\S+)~i",$G,$C)){$ac=$C[1];$G=substr($G,strlen($C[0]));}else{preg_match(\'(\'.preg_quote($ac)."\\s*|$Pf)",$G,$C,PREG_OFFSET_CAPTURE,$hf);list($jd,$eg)=$C[0];if(!$jd&&$ld&&!feof($ld))$G.=fread($ld,1e5);else{if(!$jd&&rtrim($G)=="")break;$hf=$eg+strlen($jd);if($jd&&rtrim($jd)!=$ac){while(preg_match(\'(\'.($jd==\'/*\'?\'\*/\':($jd==\'[\'?\']\':(preg_match(\'~^-- |^#~\',$jd)?"\n":preg_quote($jd)."|\\\\."))).\'|$)s\',$G,$C,PREG_OFFSET_CAPTURE,$hf)){$Xg=$C[0][0];if(!$Xg&&$ld&&!feof($ld))$G.=fread($ld,1e5);else{$hf=$C[0][1]+strlen($Xg);if($Xg[0]!="\\")break;}}}else{$xc=false;$ug=substr($G,0,$eg);$qb++;$mg="<pre id=\'sql-$qb\'><code class=\'jush-$y\'>".$b->sqlCommandQuery($ug)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$wh*+ATTACH\\b~i",$ug,$C)){echo$mg,"<p class=\'error\'>".\'ATTACH queries are not supported.\'."\n";$Bc[]=" <a href=\'#sql-$qb\'>$qb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$mg;ob_flush();flush();}$Ch=microtime(true);if($g->multi_query($ug)&&is_object($h)&&preg_match("~^$wh*+USE\\b~i",$ug))$h->query($ug);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$mg:""),"<p class=\'error\'>".\'Error in query\'.($g->errno?" ($g->errno)":"").": ".error()."\n";$Bc[]=" <a href=\'#sql-$qb\'>$qb</a>";if($_POST["error_stops"])break
2;}else{$di=" <span class=\'time\'>(".format_time($Ch).")</span>".(strlen($ug)<1000?" <a href=\'".h(ME)."sql=".urlencode(trim($ug))."\'>".\'Edit\'."</a>":"");$za=$g->affected_rows;$bj=($_POST["only_errors"]?"":$m->warnings());$cj="warnings-$qb";if($bj)$di.=", <a href=\'#$cj\'>".\'Warnings\'."</a>".script("qsl(\'a\').onclick = partial(toggle, \'$cj\');","");$Jc=null;$Kc="explain-$qb";if(is_object($H)){$_=$_POST["limit"];$Bf=select($H,$h,array(),$_);if(!$_POST["only_errors"]){echo"<form action=\'\' method=\'post\'>\n";$df=$H->num_rows;echo"<p>".($df?($_&&$df>$_?sprintf(\'%d / \',$_):"").lang(array(\'%d row\',\'%d rows\'),$df):""),$di;if($h&&preg_match("~^($wh|\\()*+SELECT\\b~i",$ug)&&($Jc=explain($h,$ug)))echo", <a href=\'#$Kc\'>Explain</a>".script("qsl(\'a\').onclick = partial(toggle, \'$Kc\');","");$u="export-$qb";echo", <a href=\'#$u\'>".\'Export\'."</a>".script("qsl(\'a\').onclick = partial(toggle, \'$u\');","")."<span id=\'$u\' class=\'hidden\'>: ".html_select("output",$b->dumpOutput(),$xa["output"])." ".html_select("format",$oc,$xa["format"])."<input type=\'hidden\' name=\'query\' value=\'".h($ug)."\'>"." <input type=\'submit\' name=\'export\' value=\'".\'Export\'."\'><input type=\'hidden\' name=\'token\' value=\'$ni\'></span>\n"."</form>\n";}}else{if(preg_match("~^$wh*+(CREATE|DROP|ALTER)$wh++(DATABASE|SCHEMA)\\b~i",$ug)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class=\'message\' title=\'".h($g->info)."\'>".lang(array(\'Query executed OK, %d row affected.\',\'Query executed OK, %d rows affected.\'),$za)."$di\n";}echo($bj?"<div id=\'$cj\' class=\'hidden\'>\n$bj</div>\n":"");if($Jc){echo"<div id=\'$Kc\' class=\'hidden\'>\n";select($Jc,$h,$Bf);echo"</div>\n";}}$Ch=microtime(true);}while($g->next_result());}$G=substr($G,$hf);$hf=0;}}}}if($xc)echo"<p class=\'message\'>".\'No commands to execute.\'."\n";elseif($_POST["only_errors"]){echo"<p class=\'message\'>".lang(array(\'%d query executed OK.\',\'%d queries executed OK.\'),$qb-count($Bc))," <span class=\'time\'>(".format_time($pi).")</span>\n";}elseif($Bc&&$qb>1)echo"<p class=\'error\'>".\'Error in query\'.": ".implode("",$Bc)."\n";}else
echo"<p class=\'error\'>".upload_error($G)."\n";}echo\'
<form action="" method="post" enctype="multipart/form-data" id="form">
\';$Hc="<input type=\'submit\' value=\'".\'Execute\'."\' title=\'Ctrl+Enter\'>";if(!isset($_GET["import"])){$ug=$_GET["sql"];if($_POST)$ug=$_POST["query"];elseif($_GET["history"]=="all")$ug=$Ad;elseif($_GET["history"]!="")$ug=$Ad[$_GET["history"]][0];echo"<p>";textarea("query",$ug,20);echo
script(($_POST?"":"qs(\'textarea\').focus();\n")."qs(\'#form\').onsubmit = partial(sqlSubmit, qs(\'#form\'), \'".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."\');"),"<p>$Hc\n",\'Limit rows\'.": <input type=\'number\' name=\'limit\' class=\'size\' value=\'".h($_POST?$_POST["limit"]:$_GET["limit"])."\'>\n";}else{echo"<fieldset><legend>".\'File upload\'."</legend><div>";$ud=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$ud (&lt; ".ini_get("upload_max_filesize")."B): <input type=\'file\' name=\'sql_file[]\' multiple>\n$Hc":\'File uploads are disabled.\'),"</div></fieldset>\n";$Id=$b->importServerPath();if($Id){echo"<fieldset><legend>".\'From server\'."</legend><div>",sprintf(\'Webserver file %s\',"<code>".h($Id)."$ud</code>"),\' <input type="submit" name="webfile" value="\'.\'Run file\'.\'">\',"</div></fieldset>\n";}echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),\'Stop on error\')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),\'Show only errors\')."\n","<input type=\'hidden\' name=\'token\' value=\'$ni\'>\n";if(!isset($_GET["import"])&&$Ad){print_fieldset("history",\'History\',$_GET["history"]!="");for($X=end($Ad);$X;$X=prev($Ad)){$z=key($Ad);list($ug,$di,$sc)=$X;echo\'<a href="\'.h(ME."sql=&history=$z").\'">\'.\'Edit\'."</a>"." <span class=\'time\' title=\'".@date(\'Y-m-d\',$di)."\'>".@date("H:i:s",$di)."</span>"." <code class=\'jush-$y\'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace(\'~^(#|-- ).*~m\',\'\',$ug)))),80,"</code>").($sc?" <span class=\'time\'>($sc)</span>":"")."<br>\n";}echo"<input type=\'submit\' name=\'clear\' value=\'".\'Clear\'."\'>\n","<a href=\'".h(ME."sql=&history=all")."\'>".\'Edit all\'."</a>\n","</div></fieldset>\n";}echo\'</form>
\';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Ii=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p
as$D=>$o){if(!isset($o["privileges"][$Ii?"update":"insert"])||$b->fieldName($o)==""||$o["generated"])unset($p[$D]);}if($_POST&&!$n&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Ii?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match(\'~^.+&select=.+$~\',$B))$B=ME."select=".urlencode($a);$x=indexes($a);$Di=unique_array($_GET["where"],$x);$xg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,\'Item has been deleted.\',$m->delete($a,$xg,!$Di));else{$N=array();foreach($p
as$D=>$o){$X=process_input($o);if($X!==false&&$X!==null)$N[idf_escape($D)]=$X;}if($Ii){if(!$N)redirect($B);queries_redirect($B,\'Item has been updated.\',$m->update($a,$N,$xg,!$Di));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$H=$m->insert($a,$N);$oe=($H?last_id():0);queries_redirect($B,sprintf(\'Item%s has been inserted.\',($oe?" $oe":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($p
as$D=>$o){if(isset($o["privileges"]["select"])){$Fa=convert_field($o);if($_POST["clone"]&&$o["auto_increment"])$Fa="\'\'";if($y=="sql"&&preg_match("~enum|set~",$o["type"]))$Fa="1*".idf_escape($D);$L[]=($Fa?"$Fa AS ":"").idf_escape($D);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$m->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$n=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$p){if(!$Z){$H=$m->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($m->primary=>"");}if($J){foreach($J
as$z=>$X){if(!$Z)$J[$z]=null;$p[$z]=array("field"=>$z,"null"=>($z!=$m->primary),"auto_increment"=>($z==$m->primary));}}}edit_form($a,$p,$J,$Ii);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Rf=array();foreach(array(\'HASH\',\'LINEAR HASH\',\'KEY\',\'LINEAR KEY\',\'RANGE\',\'LIST\')as$z)$Rf[$z]=$z;$Dg=referencable_primary($a);$hd=array();foreach($Dg
as$Oh=>$o)$hd[str_replace("`","``",$Oh)."`".str_replace("`","``",$o["field"])]=$Oh;$Ef=array();$R=array();if($a!=""){$Ef=fields($a);$R=table_status($a);if(!$R)$n=\'No tables.\';}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$n){if($_POST["drop"])queries_redirect(substr(ME,0,-1),\'Table has been dropped.\',drop_tables(array($a)));else{$p=array();$Ca=array();$Mi=false;$fd=array();$Df=reset($Ef);$Aa=" FIRST";foreach($J["fields"]as$z=>$o){$r=$hd[$o["type"]];$_i=($r!==null?$Dg[$r]:$o);if($o["field"]!=""){if(!$o["has_default"])$o["default"]=null;if($z==$J["auto_increment_col"])$o["auto_increment"]=true;$rg=process_field($o,$_i);$Ca[]=array($o["orig"],$rg,$Aa);if(!$Df||$rg!=process_field($Df,$Df)){$p[]=array($o["orig"],$rg,$Aa);if($o["orig"]!=""||$Aa)$Mi=true;}if($r!==null)$fd[idf_escape($o["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array(\'table\'=>$hd[$o["type"]],\'source\'=>array($o["field"]),\'target\'=>array($_i["field"]),\'on_delete\'=>$o["on_delete"],));$Aa=" AFTER ".idf_escape($o["field"]);}elseif($o["orig"]!=""){$Mi=true;$p[]=array($o["orig"]);}if($o["orig"]!=""){$Df=next($Ef);if(!$Df)$Aa="";}}$Tf="";if($Rf[$J["partition_by"]]){$Uf=array();if($J["partition_by"]==\'RANGE\'||$J["partition_by"]==\'LIST\'){foreach(array_filter($J["partition_names"])as$z=>$X){$Y=$J["partition_values"][$z];$Uf[]="\n  PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]==\'RANGE\'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Tf.="\nPARTITION BY $J[partition_by]($J[partition])".($Uf?" (".implode(",",$Uf)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$Tf.="\nREMOVE PARTITIONING";$Ke=\'Table has been altered.\';if($a==""){cookie("adminer_engine",$J["Engine"]);$Ke=\'Table has been created.\';}$D=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($D),$Ke,alter_table($a,$D,($y=="sqlite"&&($Mi||$fd)?$Ca:$p),$fd,($J["Comment"]!=$R["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$R["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$R["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Tf));}}page_header(($a!=""?\'Alter table\':\'Create table\'),$n,array("table"=>$a),h($a));if(!$_POST){$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($U["int"])?"int":(isset($U["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$R;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Ef
as$o){$o["has_default"]=isset($o["default"]);$J["fields"][]=$o;}if(support("partitioning")){$md="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$H=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $md ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$Uf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $md AND PARTITION_NAME != \'\' ORDER BY PARTITION_ORDINAL_POSITION");$Uf[""]="";$J["partition_names"]=array_keys($Uf);$J["partition_values"]=array_values($Uf);}}}$lb=collations();$zc=engines();foreach($zc
as$yc){if(!strcasecmp($yc,$J["Engine"])){$J["Engine"]=$yc;break;}}echo\'
<form action="" method="post" id="form">
<p>
\';if(support("columns")||$a==""){echo\'Table name: <input name="name" data-maxlength="64" value="\',h($J["name"]),\'" autocapitalize="off">
\';if($a==""&&!$_POST)echo
script("focus(qs(\'#form\')[\'name\']);");echo($zc?"<select name=\'Engine\'>".optionlist(array(""=>"(".\'engine\'.")")+$zc,$J["Engine"])."</select>".on_help("getTarget(event).value",1).script("qsl(\'select\').onchange = helpClose;"):""),\' \',($lb&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".\'collation\'.")")+$lb,$J["Collation"]):""),\' <input type="submit" value="Save">
\';}echo\'
\';if(support("columns")){echo\'<div class="scrollable">
<table cellspacing="0" id="edit-fields" class="nowrap">
\';edit_fields($J["fields"],$lb,"TABLE",$hd);echo\'</table>
\',script("editFields();"),\'</div>
<p>
Auto Increment: <input type="number" name="Auto_increment" size="6" value="\',h($J["Auto_increment"]),\'">
\',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),\'Default values\',"columnShow(this.checked, 5)","jsonly"),(support("comment")?checkbox("comments",1,($_POST?$_POST["comments"]:adminer_setting("comments")),\'Comment\',"editingCommentsClick(this, true);","jsonly").\' <input name="Comment" value="\'.h($J["Comment"]).\'" data-maxlength="\'.(min_version(5.5)?2048:60).\'">\':\'\'),\'<p>
<input type="submit" value="Save">
\';}echo\'
\';if($a!=""){echo\'<input type="submit" name="drop" value="Drop">\',confirm(sprintf(\'Drop %s?\',$a));}if(support("partitioning")){$Sf=preg_match(\'~RANGE|LIST~\',$J["partition_by"]);print_fieldset("partition",\'Partition by\',$J["partition_by"]);echo\'<p>
\',"<select name=\'partition_by\'>".optionlist(array(""=>"")+$Rf,$J["partition_by"])."</select>".on_help("getTarget(event).value.replace(/./, \'PARTITION BY \$&\')",1).script("qsl(\'select\').onchange = partitionByChange;"),\'(<input name="partition" value="\',h($J["partition"]),\'">)
Partitions: <input type="number" name="partitions" class="size\',($Sf||!$J["partition_by"]?" hidden":""),\'" value="\',h($J["partitions"]),\'">
<table cellspacing="0" id="partition-table"\',($Sf?"":" class=\'hidden\'"),\'>
<thead><tr><th>Partition name<th>Values</thead>
\';foreach($J["partition_names"]as$z=>$X){echo\'<tr>\',\'<td><input name="partition_names[]" value="\'.h($X).\'" autocapitalize="off">\',($z==count($J["partition_names"])-1?script("qsl(\'input\').oninput = partitionNameChange;"):\'\'),\'<td><input name="partition_values[]" value="\'.h($J["partition_values"][$z]).\'">\';}echo\'</table>
</div></fieldset>
\';}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Ld=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match(\'~MyISAM|M?aria\'.(min_version(5.6,\'10.0.5\')?\'|InnoDB\':\'\').\'~i\',$R["Engine"]))$Ld[]="FULLTEXT";if(preg_match(\'~MyISAM|M?aria\'.(min_version(5.7,\'10.2.2\')?\'|InnoDB\':\'\').\'~i\',$R["Engine"]))$Ld[]="SPATIAL";$x=indexes($a);$kg=array();if($y=="mongo"){$kg=$x["_id_"];unset($Ld[0]);unset($x["_id_"]);}$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$w){$D=$w["name"];if(in_array($w["type"],$Ld)){$f=array();$ue=array();$cc=array();$N=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$e){if($e!=""){$te=$w["lengths"][$z];$bc=$w["descs"][$z];$N[]=idf_escape($e).($te?"(".(+$te).")":"").($bc?" DESC":"");$f[]=$e;$ue[]=($te?$te:null);$cc[]=$bc;}}if($f){$Ic=$x[$D];if($Ic){ksort($Ic["columns"]);ksort($Ic["lengths"]);ksort($Ic["descs"]);if($w["type"]==$Ic["type"]&&array_values($Ic["columns"])===$f&&(!$Ic["lengths"]||array_values($Ic["lengths"])===$ue)&&array_values($Ic["descs"])===$cc){unset($x[$D]);continue;}}$c[]=array($w["type"],$D,$N);}}}foreach($x
as$D=>$Ic)$c[]=array($Ic["type"],$D,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),\'Indexes have been altered.\',alter_indexes($a,$c));}page_header(\'Indexes\',$n,array("table"=>$a),h($a));$p=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$J["indexes"][$z]["columns"][]="";}$w=end($J["indexes"]);if($w["type"]||array_filter($w["columns"],\'strlen\'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($x
as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$J["indexes"]=$x;}echo\'
<form action="" method="post">
<div class="scrollable">
<table cellspacing="0" class="nowrap">
<thead><tr>
<th id="label-type">Index Type
<th><input type="submit" class="wayoff">Column (length)
<th id="label-name">Name
<th><noscript>\',"<input type=\'image\' class=\'icon\' name=\'add[0]\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."\' alt=\'+\' title=\'".\'Add next\'."\'>",\'</noscript>
</thead>
\';if($kg){echo"<tr><td>PRIMARY<td>";foreach($kg["columns"]as$z=>$e){echo
select_input(" disabled",$p,$e),"<label><input disabled type=\'checkbox\'>".\'descending\'."</label> ";}echo"<td><td>\n";}$ee=1;foreach($J["indexes"]as$w){if(!$_POST["drop_col"]||$ee!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ee][type]",array(-1=>"")+$Ld,$w["type"],($ee==count($J["indexes"])?"indexesAddRow.call(this);":1),"label-type"),"<td>";ksort($w["columns"]);$t=1;foreach($w["columns"]as$z=>$e){echo"<span>".select_input(" name=\'indexes[$ee][columns][$t]\' title=\'".\'Column\'."\'",($p?array_combine($p,$p):$p),$e,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", \'".js_escape($y=="sql"?"":$_GET["indexes"]."_")."\')"),($y=="sql"||$y=="mssql"?"<input type=\'number\' name=\'indexes[$ee][lengths][$t]\' class=\'size\' value=\'".h($w["lengths"][$z])."\' title=\'".\'Length\'."\'>":""),(support("descidx")?checkbox("indexes[$ee][descs][$t]",1,$w["descs"][$z],\'descending\'):"")," </span>";$t++;}echo"<td><input name=\'indexes[$ee][name]\' value=\'".h($w["name"])."\' autocapitalize=\'off\' aria-labelledby=\'label-name\'>\n","<td><input type=\'image\' class=\'icon\' name=\'drop_col[$ee]\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=cross.gif&version=4.8.1")."\' alt=\'x\' title=\'".\'Remove\'."\'>".script("qsl(\'input\').onclick = partial(editingRemoveRow, \'indexes\$1[type]\');");}$ee++;}echo\'</table>
</div>
<p>
<input type="submit" value="Save">
<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$n&&!isset($_POST["add_x"])){$D=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),\'Database has been dropped.\',drop_databases(array(DB)));}elseif(DB!==$D){if(DB!=""){$_GET["db"]=$D;queries_redirect(preg_replace(\'~\bdb=[^&]*&~\',\'\',ME)."db=".urlencode($D),\'Database has been renamed.\',rename_database($D,$J["collation"]));}else{$k=explode("\n",str_replace("\r","",$D));$Ih=true;$ne="";foreach($k
as$l){if(count($k)==1||$l!=""){if(!create_database($l,$J["collation"]))$Ih=false;$ne=$l;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($ne),\'Database has been created.\',$Ih);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($D).(preg_match(\'~^[a-z0-9_]+$~i\',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),\'Database has been altered.\');}}page_header(DB!=""?\'Alter database\':\'Create database\',$n,array(),h(DB));$lb=collations();$D=DB;if($_POST)$D=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$lb);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$od){if(preg_match(\'~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~\',$od,$C)&&$C[1]){$D=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo\'
<form action="" method="post">
<p>
\',($_POST["add_x"]||strpos($D,"\n")?\'<textarea id="name" name="name" rows="10" cols="40">\'.h($D).\'</textarea><br>\':\'<input name="name" id="name" value="\'.h($D).\'" data-maxlength="64" autocapitalize="off">\')."\n".($lb?html_select("collation",array(""=>"(".\'collation\'.")")+$lb,$J["collation"]).doc_link(array(\'sql\'=>"charset-charsets.html",\'mariadb\'=>"supported-character-sets-and-collations/",\'mssql\'=>"ms187963.aspx",)):""),script("focus(qs(\'#name\'));"),\'<input type="submit" value="Save">
\';if(DB!="")echo"<input type=\'submit\' name=\'drop\' value=\'".\'Drop\'."\'>".confirm(sprintf(\'Drop %s?\',DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type=\'image\' class=\'icon\' name=\'add\' src=\'".h(preg_replace("~\\?.*~","",ME)."?file=plus.gif&version=4.8.1")."\' alt=\'+\' title=\'".\'Add next\'."\'>\n";echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$n){$A=preg_replace(\'~ns=[^&]*&~\',\'\',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$A,\'Schema has been dropped.\');else{$D=trim($J["name"]);$A.=urlencode($D);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($D),$A,\'Schema has been created.\');elseif($_GET["ns"]!=$D)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($D),$A,\'Schema has been altered.\');else
redirect($A);}}page_header($_GET["ns"]!=""?\'Alter schema\':\'Create schema\',$n);if(!$J)$J["name"]=$_GET["ns"];echo\'
<form action="" method="post">
<p><input name="name" id="name" value="\',h($J["name"]),\'" autocapitalize="off">
\',script("focus(qs(\'#name\'));"),\'<input type="submit" value="Save">
\';if($_GET["ns"]!="")echo"<input type=\'submit\' name=\'drop\' value=\'".\'Drop\'."\'>".confirm(sprintf(\'Drop %s?\',$_GET["ns"]))."\n";echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(\'Call\'.": ".h($da),$n);$Tg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Jd=array();$If=array();foreach($Tg["fields"]as$t=>$o){if(substr($o["inout"],-3)=="OUT")$If[$t]="@".idf_escape($o["field"])." AS ".idf_escape($o["field"]);if(!$o["inout"]||substr($o["inout"],0,2)=="IN")$Jd[]=$t;}if(!$n&&$_POST){$Xa=array();foreach($Tg["fields"]as$z=>$o){if(in_array($z,$Jd)){$X=process_input($o);if($X===false)$X="\'\'";if(isset($If[$z]))$g->query("SET @".idf_escape($o["field"])." = $X");}$Xa[]=(isset($If[$z])?"@".idf_escape($o["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Xa).")";$Ch=microtime(true);$H=$g->multi_query($G);$za=$g->affected_rows;echo$b->selectQuery($G,$Ch,!$H);if(!$H)echo"<p class=\'error\'>".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$H=$g->store_result();if(is_object($H))select($H,$h);else
echo"<p class=\'message\'>".lang(array(\'Routine has been called, %d row affected.\',\'Routine has been called, %d rows affected.\'),$za)." <span class=\'time\'>".@date("H:i:s")."</span>\n";}while($g->next_result());if($If)select($g->query("SELECT ".implode(", ",$If)));}}echo\'
<form action="" method="post">
\';if($Jd){echo"<table cellspacing=\'0\' class=\'layout\'>\n";foreach($Jd
as$z){$o=$Tg["fields"][$z];$D=$o["field"];echo"<tr><th>".$b->fieldName($o);$Y=$_POST["fields"][$D];if($Y!=""){if($o["type"]=="enum")$Y=+$Y;if($o["type"]=="set")$Y=array_sum($Y);}input($o,$Y,(string)$_POST["function"][$D]);echo"\n";}echo"</table>\n";}echo\'<p>
<input type="submit" value="Call">
<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$D=$_GET["name"];$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$Ke=($_POST["drop"]?\'Foreign key has been dropped.\':($D!=""?\'Foreign key has been altered.\':\'Foreign key has been created.\'));$B=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],\'strlen\');ksort($J["source"]);$Wh=array();foreach($J["source"]as$z=>$X)$Wh[$z]=$J["target"][$z];$J["target"]=$Wh;}if($y=="sqlite")queries_redirect($B,$Ke,recreate_table($a,$a,array(),array(),array(" $D"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$jc="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($D);if($_POST["drop"])query_redirect($c.$jc,$B,$Ke);else{query_redirect($c.($D!=""?"$jc,":"")."\nADD".format_foreign_key($J),$B,$Ke);$n=\'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.\'."<br>$n";}}}page_header(\'Foreign key\',$n,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($D!=""){$hd=foreign_keys($a);$J=$hd[$D];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo\'
<form action="" method="post">
\';$vh=array_keys(fields($a));if($J["db"]!="")$g->select_db($J["db"]);if($J["ns"]!="")set_schema($J["ns"]);$Cg=array_keys(array_filter(table_status(\'\',true),\'fk_support\'));$Wh=array_keys(fields(in_array($J["table"],$Cg)?$J["table"]:reset($Cg)));$qf="this.form[\'change-js\'].value = \'1\'; this.form.submit();";echo"<p>".\'Target table\'.": ".html_select("table",$Cg,$J["table"],$qf)."\n";if($y=="pgsql")echo\'Schema\'.": ".html_select("ns",$b->schemas(),$J["ns"]!=""?$J["ns"]:$_GET["ns"],$qf);elseif($y!="sqlite"){$Ub=array();foreach($b->databases()as$l){if(!information_schema($l))$Ub[]=$l;}echo\'DB\'.": ".html_select("db",$Ub,$J["db"]!=""?$J["db"]:$_GET["db"],$qf);}echo\'<input type="hidden" name="change-js" value="">
<noscript><p><input type="submit" name="change" value="Change"></noscript>
<table cellspacing="0">
<thead><tr><th id="label-source">Source<th id="label-target">Target</thead>
\';$ee=0;foreach($J["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$vh,$X,($ee==count($J["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"<td>".html_select("target[".(+$z)."]",$Wh,$J["target"][$z],1,"label-target");$ee++;}echo\'</table>
<p>
ON DELETE: \',html_select("on_delete",array(-1=>"")+explode("|",$pf),$J["on_delete"]),\' ON UPDATE: \',html_select("on_update",array(-1=>"")+explode("|",$pf),$J["on_update"]),doc_link(array(\'sql\'=>"innodb-foreign-key-constraints.html",\'mariadb\'=>"foreign-keys/",\'pgsql\'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",\'mssql\'=>"ms174979.aspx",\'oracle\'=>"https://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#sthref2903",)),\'<p>
<input type="submit" value="Save">
<noscript><p><input type="submit" name="add" value="Add column"></noscript>
\';if($D!=""){echo\'<input type="submit" name="drop" value="Drop">\',confirm(sprintf(\'Drop %s?\',$D));}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Ff="VIEW";if($y=="pgsql"&&$a!=""){$O=table_status($a);$Ff=strtoupper($O["Engine"]);}if($_POST&&!$n){$D=trim($J["name"]);$Fa=" AS\n$J[select]";$B=ME."table=".urlencode($D);$Ke=\'View has been altered.\';$T=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$D&&$y!="sqlite"&&$T=="VIEW"&&$Ff=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($D).$Fa,$B,$Ke);else{$Yh=$D."_adminer_".uniqid();drop_create("DROP $Ff ".table($a),"CREATE $T ".table($D).$Fa,"DROP $T ".table($D),"CREATE $T ".table($Yh).$Fa,"DROP $T ".table($Yh),($_POST["drop"]?substr(ME,0,-1):$B),\'View has been dropped.\',$Ke,\'View has been created.\',$a,$D);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Ff!="VIEW");if(!$n)$n=error();}page_header(($a!=""?\'Alter view\':\'Create view\'),$n,array("table"=>$a),h($a));echo\'
<form action="" method="post">
<p>Name: <input name="name" value="\',h($J["name"]),\'" data-maxlength="64" autocapitalize="off">
\',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],\'Materialized view\'):""),\'<p>\';textarea("select",$J["select"]);echo\'<p>
<input type="submit" value="Save">
\';if($a!=""){echo\'<input type="submit" name="drop" value="Drop">\',confirm(sprintf(\'Drop %s?\',$a));}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Wd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Eh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$n){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),\'Event has been dropped.\');elseif(in_array($J["INTERVAL_FIELD"],$Wd)&&isset($Eh[$J["STATUS"]])){$Yg="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?\'Event has been altered.\':\'Event has been created.\'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Yg.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$Yg)."\n".$Eh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?\'Alter event\'.": ".h($aa):\'Create event\'),$n);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo\'
<form action="" method="post">
<table cellspacing="0" class="layout">
<tr><th>Name<td><input name="EVENT_NAME" value="\',h($J["EVENT_NAME"]),\'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">Start<td><input name="STARTS" value="\',h("$J[EXECUTE_AT]$J[STARTS]"),\'">
<tr><th title="datetime">End<td><input name="ENDS" value="\',h($J["ENDS"]),\'">
<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="\',h($J["INTERVAL_VALUE"]),\'" class="size"> \',html_select("INTERVAL_FIELD",$Wd,$J["INTERVAL_FIELD"]),\'<tr><th>Status<td>\',html_select("STATUS",$Eh,$J["STATUS"]),\'<tr><th>Comment<td><input name="EVENT_COMMENT" value="\',h($J["EVENT_COMMENT"]),\'" data-maxlength="64">
<tr><th><td>\',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",\'On completion preserve\'),\'</table>
<p>\';textarea("EVENT_DEFINITION",$J["EVENT_DEFINITION"]);echo\'<p>
<input type="submit" value="Save">
\';if($aa!=""){echo\'<input type="submit" name="drop" value="Drop">\',confirm(sprintf(\'Drop %s?\',$aa));}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Tg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$n){$Cf=routine($_GET["procedure"],$Tg);$Yh="$J[name]_adminer_".uniqid();drop_create("DROP $Tg ".routine_id($da,$Cf),create_routine($Tg,$J),"DROP $Tg ".routine_id($J["name"],$J),create_routine($Tg,array("name"=>$Yh)+$J),"DROP $Tg ".routine_id($Yh,$J),substr(ME,0,-1),\'Routine has been dropped.\',\'Routine has been altered.\',\'Routine has been created.\',$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?\'Alter function\':\'Alter procedure\').": ".h($da):(isset($_GET["function"])?\'Create function\':\'Create procedure\')),$n);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Tg);$J["name"]=$da;}$lb=get_vals("SHOW CHARACTER SET");sort($lb);$Ug=routine_languages();echo\'
<form action="" method="post" id="form">
<p>Name: <input name="name" value="\',h($J["name"]),\'" data-maxlength="64" autocapitalize="off">
\',($Ug?\'Language\'.": ".html_select("language",$Ug,$J["language"])."\n":""),\'<input type="submit" value="Save">
<div class="scrollable">
<table cellspacing="0" class="nowrap">
\';edit_fields($J["fields"],$lb,$Tg);if(isset($_GET["function"])){echo"<tr><td>".\'Return type\';edit_type("returns",$J["returns"],$lb,array(),($y=="pgsql"?array("void","trigger"):array()));}echo\'</table>
\',script("editFields();"),\'</div>
<p>\';textarea("definition",$J["definition"]);echo\'<p>
<input type="submit" value="Save">
\';if($da!=""){echo\'<input type="submit" name="drop" value="Drop">\',confirm(sprintf(\'Drop %s?\',$da));}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$n){$A=substr(ME,0,-1);$D=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$A,\'Sequence has been dropped.\');elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($D),$A,\'Sequence has been created.\');elseif($fa!=$D)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($D),$A,\'Sequence has been altered.\');else
redirect($A);}page_header($fa!=""?\'Alter sequence\'.": ".h($fa):\'Create sequence\',$n);if(!$J)$J["name"]=$fa;echo\'
<form action="" method="post">
<p><input name="name" value="\',h($J["name"]),\'" autocapitalize="off">
<input type="submit" value="Save">
\';if($fa!="")echo"<input type=\'submit\' name=\'drop\' value=\'".\'Drop\'."\'>".confirm(sprintf(\'Drop %s?\',$fa))."\n";echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$n){$A=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$A,\'Type has been dropped.\');else
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$A,\'Type has been created.\');}page_header($ga!=""?\'Alter type\'.": ".h($ga):\'Create type\',$n);if(!$J)$J["as"]="AS ";echo\'
<form action="" method="post">
<p>
\';if($ga!="")echo"<input type=\'submit\' name=\'drop\' value=\'".\'Drop\'."\'>".confirm(sprintf(\'Drop %s?\',$ga))."\n";else{echo"<input name=\'name\' value=\'".h($J[\'name\'])."\' autocapitalize=\'off\'>\n";textarea("as",$J["as"]);echo"<p><input type=\'submit\' value=\'".\'Save\'."\'>\n";}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$D=$_GET["name"];$yi=trigger_options();$J=(array)trigger($D,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$n&&in_array($_POST["Timing"],$yi["Timing"])&&in_array($_POST["Event"],$yi["Event"])&&in_array($_POST["Type"],$yi["Type"])){$of=" ON ".table($a);$jc="DROP TRIGGER ".idf_escape($D).($y=="pgsql"?$of:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($jc,$B,\'Trigger has been dropped.\');else{if($D!="")queries($jc);queries_redirect($B,($D!=""?\'Trigger has been altered.\':\'Trigger has been created.\'),queries(create_trigger($of,$_POST)));if($D!="")queries(create_trigger($of,$J+array("Type"=>reset($yi["Type"]))));}}$J=$_POST;}page_header(($D!=""?\'Alter trigger\'.": ".h($D):\'Create trigger\'),$n,array("table"=>$a));echo\'
<form action="" method="post" id="form">
<table cellspacing="0" class="layout">
<tr><th>Time<td>\',html_select("Timing",$yi["Timing"],$J["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, \'".js_escape($a)."\', this.form);"),\'<tr><th>Event<td>\',html_select("Event",$yi["Event"],$J["Event"],"this.form[\'Timing\'].onchange();"),(in_array("UPDATE OF",$yi["Event"])?" <input name=\'Of\' value=\'".h($J["Of"])."\' class=\'hidden\'>":""),\'<tr><th>Type<td>\',html_select("Type",$yi["Type"],$J["Type"]),\'</table>
<p>Name: <input name="Trigger" value="\',h($J["Trigger"]),\'" data-maxlength="64" autocapitalize="off">
\',script("qs(\'#form\')[\'Timing\'].onchange();"),\'<p>\';textarea("Statement",$J["Statement"]);echo\'<p>
<input type="submit" value="Save">
\';if($D!=""){echo\'<input type="submit" name="drop" value="Drop">\',confirm(sprintf(\'Drop %s?\',$D));}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$pg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Db)$pg[$Db][$J["Privilege"]]=$J["Comment"];}$pg["Server Admin"]+=$pg["File access on server"];$pg["Databases"]["Create routine"]=$pg["Procedures"]["Create routine"];unset($pg["Procedures"]["Create routine"]);$pg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$pg["Columns"][$X]=$pg["Tables"][$X];unset($pg["Server Admin"]["Usage"]);foreach($pg["Tables"]as$z=>$X)unset($pg["Databases"][$z]);$Xe=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Xe[$X]=(array)$Xe[$X]+(array)$_POST["grants"][$z];}$pd=array();$mf="";if(isset($_GET["host"])&&($H=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match(\'~GRANT (.*) ON (.*) TO ~\',$J[0],$C)&&preg_match_all(\'~ *([^(,]*[^ ,(])( *\([^)]+\))?~\',$C[1],$Ce,PREG_SET_ORDER)){foreach($Ce
as$X){if($X[1]!="USAGE")$pd["$C[2]$X[2]"][$X[1]]=true;if(preg_match(\'~ WITH GRANT OPTION~\',$J[0]))$pd["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD \'([^\']+)~",$J[0],$C))$mf=$C[1];}}if($_POST&&!$n){$nf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"\'\'");if($_POST["drop"])query_redirect("DROP USER $nf",ME."privileges=",\'User has been dropped.\');else{$Ze=q($_POST["user"])."@".q($_POST["host"]);$Wf=$_POST["pass"];if($Wf!=\'\'&&!$_POST["hashed"]&&!min_version(8)){$Wf=$g->result("SELECT PASSWORD(".q($Wf).")");$n=!$Wf;}$Jb=false;if(!$n){if($nf!=$Ze){$Jb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Ze IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Wf));$n=!$Jb;}elseif($Wf!=$mf)queries("SET PASSWORD FOR $Ze = ".q($Wf));}if(!$n){$Qg=array();foreach($Xe
as$ff=>$od){if(isset($_GET["grant"]))$od=array_filter($od);$od=array_keys($od);if(isset($_GET["grant"]))$Qg=array_diff(array_keys(array_filter($Xe[$ff],\'strlen\')),$od);elseif($nf==$Ze){$kf=array_keys((array)$pd[$ff]);$Qg=array_diff($kf,$od);$od=array_diff($od,$kf);unset($pd[$ff]);}if(preg_match(\'~^(.+)\s*(\(.*\))?$~U\',$ff,$C)&&(!grant("REVOKE",$Qg,$C[2]," ON $C[1] FROM $Ze")||!grant("GRANT",$od,$C[2]," ON $C[1] TO $Ze"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($nf!=$Ze)queries("DROP USER $nf");elseif(!isset($_GET["grant"])){foreach($pd
as$ff=>$Qg){if(preg_match(\'~^(.+)(\(.*\))?$~U\',$ff,$C))grant("REVOKE",array_keys($Qg),$C[2]," ON $C[1] FROM $Ze");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?\'User has been altered.\':\'User has been created.\'),!$n);if($Jb)$g->query("DROP USER $Ze");}}page_header((isset($_GET["host"])?\'Username\'.": ".h("$ha@$_GET[host]"):\'Create user\'),$n,array("privileges"=>array(\'\',\'Privileges\')));if($_POST){$J=$_POST;$pd=$Xe;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, \'@\', -1)"));$J["pass"]=$mf;if($mf!="")$J["hashed"]=true;$pd[(DB==""||$pd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo\'<form action="" method="post">
<table cellspacing="0" class="layout">
<tr><th>Server<td><input name="host" data-maxlength="60" value="\',h($J["host"]),\'" autocapitalize="off">
<tr><th>Username<td><input name="user" data-maxlength="80" value="\',h($J["user"]),\'" autocapitalize="off">
<tr><th>Password<td><input name="pass" id="pass" value="\',h($J["pass"]),\'" autocomplete="new-password">
\';if(!$J["hashed"])echo
script("typePassword(qs(\'#pass\'));");echo(min_version(8)?"":checkbox("hashed",1,$J["hashed"],\'Hashed\',"typePassword(this.form[\'pass\'], this.checked);")),\'</table>

\';echo"<table cellspacing=\'0\'>\n","<thead><tr><th colspan=\'2\'>".\'Privileges\'.doc_link(array(\'sql\'=>"grant.html#priv_level"));$t=0;foreach($pd
as$ff=>$od){echo\'<th>\'.($ff!="*.*"?"<input name=\'objects[$t]\' value=\'".h($ff)."\' size=\'10\' autocapitalize=\'off\'>":"<input type=\'hidden\' name=\'objects[$t]\' value=\'*.*\' size=\'10\'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>\'Server\',"Databases"=>\'Database\',"Tables"=>\'Table\',"Columns"=>\'Column\',"Procedures"=>\'Routine\',)as$Db=>$bc){foreach((array)$pg[$Db]as$og=>$rb){echo"<tr".odd()."><td".($bc?">$bc<td":" colspan=\'2\'").\' lang="en" title="\'.h($rb).\'">\'.h($og);$t=0;foreach($pd
as$ff=>$od){$D="\'grants[$t][".h(strtoupper($og))."]\'";$Y=$od[strtoupper($og)];if($Db=="Server Admin"&&$ff!=(isset($pd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$D><option><option value=\'1\'".($Y?" selected":"").">".\'Grant\'."<option value=\'0\'".($Y=="0"?" selected":"").">".\'Revoke\'."</select>";else{echo"<td align=\'center\'><label class=\'block\'>","<input type=\'checkbox\' name=$D value=\'1\'".($Y?" checked":"").($og=="All privileges"?" id=\'grants-$t-all\'>":">".($og=="Grant option"?"":script("qsl(\'input\').onclick = function () { if (this.checked) formUncheck(\'grants-$t-all\'); };"))),"</label>";}$t++;}}}echo"</table>\n",\'<p>
<input type="submit" value="Save">
\';if(isset($_GET["host"])){echo\'<input type="submit" name="drop" value="Drop">\',confirm(sprintf(\'Drop %s?\',"$ha@$_GET[host]"));}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$n){$je=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$je++;}queries_redirect(ME."processlist=",lang(array(\'%d process has been killed.\',\'%d processes have been killed.\'),$je),$je||!$_POST["kill"]);}}page_header(\'Process list\',$n);echo\'
<form action="" method="post">
<div class="scrollable">
<table cellspacing="0" class="nowrap checkable">
\',script("mixin(qsl(\'table\'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()as$t=>$J){if(!$t){echo"<thead><tr lang=\'en\'>".(support("kill")?"<th>":"");foreach($J
as$z=>$X)echo"<th>$z".doc_link(array(\'sql\'=>"show-processlist.html#processlist_".strtolower($z),\'pgsql\'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",\'oracle\'=>"REFRN30223",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$J[$y=="sql"?"Id":"pid"],0):"");foreach($J
as$z=>$X)echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$J["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class=\'jush-$y\'>".shorten_utf8($X,100,"</code>").\' <a href="\'.h(ME.($J["db"]!=""?"db=".urlencode($J["db"])."&":"")."sql=".urlencode($X)).\'">\'.\'Clone\'.\'</a>\':h($X));echo"\n";}echo\'</table>
</div>
<p>
\';if(support("kill")){echo($t+1)."/".sprintf(\'%d in total\',max_connections()),"<p><input type=\'submit\' value=\'".\'Kill\'."\'>\n";}echo\'<input type="hidden" name="token" value="\',$ni,\'">
</form>
\',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$x=indexes($a);$p=fields($a);$hd=column_foreign_keys($a);$if=$R["Oid"];parse_str($_COOKIE["adminer_import"],$ya);$Rg=array();$f=array();$ci=null;foreach($p
as$z=>$o){$D=$b->fieldName($o);if(isset($o["privileges"]["select"])&&$D!=""){$f[$z]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($o))$ci=$b->selectLengthProcess();}$Rg+=$o["privileges"];}list($L,$qd)=$b->selectColumnsProcess($f,$x);$ae=count($qd)<count($L);$Z=$b->selectSearchProcess($p,$x);$zf=$b->selectOrderProcess($p,$x);$_=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Ei=>$J){$Fa=convert_field($p[key($J)]);$L=array($Fa?$Fa:idf_escape(key($J)));$Z[]=where_check($Ei,$p);$I=$m->select($a,$L,$Z,$L);if($I)echo
reset($I->fetch_row());}exit;}$kg=$Gi=null;foreach($x
as$w){if($w["type"]=="PRIMARY"){$kg=array_flip($w["columns"]);$Gi=($L?$kg:array());foreach($Gi
as$z=>$X){if(in_array(idf_escape($z),$L))unset($Gi[$z]);}break;}}if($if&&!$kg){$kg=$Gi=array($if=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($if));}if($_POST&&!$n){$hj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$db=array();foreach($_POST["check"]as$ab)$db[]=where_check($ab,$p);$hj[]="((".implode(") OR (",$db)."))";}$hj=($hj?"\nWHERE ".implode(" AND ",$hj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$md=($L?implode(", ",$L):"*").convert_fields($f,$p,$L)."\nFROM ".table($a);$sd=($qd&&$ae?"\nGROUP BY ".implode(", ",$qd):"").($zf?"\nORDER BY ".implode(", ",$zf):"");if(!is_array($_POST["check"])||$kg)$G="SELECT $md$hj$sd";else{$Ci=array();foreach($_POST["check"]as$X)$Ci[]="(SELECT".limit($md,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$sd,1).")";$G=implode(" UNION ALL ",$Ci);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$hd)){if($_POST["save"]||$_POST["delete"]){$H=true;$za=0;$N=array();if(!$_POST["delete"]){foreach($f
as$D=>$X){$X=process_input($p[$D]);if($X!==null&&($_POST["clone"]||$X!==false))$N[idf_escape($D)]=($X!==false?$X:idf_escape($D));}}if($_POST["delete"]||$N){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a);if($_POST["all"]||($kg&&is_array($_POST["check"]))||$ae){$H=($_POST["delete"]?$m->delete($a,$hj):($_POST["clone"]?queries("INSERT $G$hj"):$m->update($a,$N,$hj)));$za=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$dj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$H=($_POST["delete"]?$m->delete($a,$dj,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$dj)):$m->update($a,$N,$dj,1)));if(!$H)break;$za+=$g->affected_rows;}}}$Ke=lang(array(\'%d item has been affected.\',\'%d items have been affected.\'),$za);if($_POST["clone"]&&$H&&$za==1){$oe=last_id();if($oe)$Ke=sprintf(\'Item%s has been inserted.\'," $oe");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Ke,$H);if(!$_POST["delete"]){edit_form($a,$p,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n=\'Ctrl+click on a value to modify it.\';else{$H=true;$za=0;foreach($_POST["val"]as$Ei=>$J){$N=array();foreach($J
as$z=>$X){$z=bracket_escape($z,1);$N[idf_escape($z)]=(preg_match(\'~char|text~\',$p[$z]["type"])||$X!=""?$b->processInput($p[$z],$X):"NULL");}$H=$m->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Ei,$p),!$ae&&!$kg," ");if(!$H)break;$za+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(array(\'%d item has been affected.\',\'%d items have been affected.\'),$za),$H);}}elseif(!is_string($Xc=get_file("csv_file",true)))$n=upload_error($Xc);elseif(!preg_match(\'~~u\',$Xc))$n=\'File must be in UTF-8 encoding.\';else{cookie("adminer_import","output=".urlencode($ya["output"])."&format=".urlencode($_POST["separator"]));$H=true;$nb=array_keys($p);preg_match_all(\'~(?>"[^"]*"|[^"\r\n]+)+~\',$Xc,$Ce);$za=count($Ce[0]);$m->begin();$hh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($Ce[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$hh]*)$hh~",$X.$hh,$De);if(!$z&&!array_diff($De[1],$nb)){$nb=$De[1];$za--;}else{$N=array();foreach($De[1]as$t=>$jb)$N[idf_escape($nb[$t])]=($jb==""&&$p[$nb[$t]]["null"]?"NULL":q(str_replace(\'""\',\'"\',preg_replace(\'~^"|"$~\',\'\',$jb))));$K[]=$N;}}$H=(!$K||$m->insertUpdate($a,$K,$kg));if($H)$H=$m->commit();queries_redirect(remove_from_uri("page"),lang(array(\'%d row has been imported.\',\'%d rows have been imported.\'),$za),$H);$m->rollback();}}}$Oh=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(\'Select\'.": $Oh",$n);$N=null;if(isset($Rg["insert"])||!support("table")){$N="";foreach((array)$_GET["where"]as$X){if($hd[$X["col"]]&&count($hd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match(\'~[_%]~\',$X["val"]))))$N.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$N);if(!$f&&support("table"))echo"<p class=\'error\'>".\'Unable to select the table\'.($p?".":": ".error())."\n";else{echo"<form action=\'\' id=\'form\'>\n","<div style=\'display: none;\'>";hidden_fields_get();echo(DB!=""?\'<input type="hidden" name="db" value="\'.h(DB).\'">\'.(isset($_GET["ns"])?\'<input type="hidden" name="ns" value="\'.h($_GET["ns"]).\'">\':""):"");echo\'<input type="hidden" name="select" value="\'.h($a).\'">\',"</div>\n";$b->selectColumnsPrint($L,$f);$b->selectSearchPrint($Z,$f,$x);$b->selectOrderPrint($zf,$f,$x);$b->selectLimitPrint($_);$b->selectLengthPrint($ci);$b->selectActionPrint($x);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$kd=$g->result(count_rows($a,$Z,$ae,$qd));$E=floor(max(0,$kd-1)/$_);}$ch=$L;$rd=$qd;if(!$ch){$ch[]="*";$Eb=convert_fields($f,$p,$L);if($Eb)$ch[]=substr($Eb,2);}foreach($L
as$z=>$X){$o=$p[idf_unescape($X)];if($o&&($Fa=convert_field($o)))$ch[$z]="$Fa AS $X";}if(!$ae&&$Gi){foreach($Gi
as$z=>$X){$ch[]=idf_escape($z);if($rd)$rd[]=idf_escape($z);}}$H=$m->select($a,$ch,$Z,$rd,$zf,$_,$E,true);if(!$H)echo"<p class=\'error\'>".error()."\n";else{if($y=="mssql"&&$E)$H->seek($_*$E);$wc=array();echo"<form action=\'\' method=\'post\' enctype=\'multipart/form-data\'>\n";$K=array();while($J=$H->fetch_assoc()){if($E&&$y=="oracle")unset($J["RNUM"]);$K[]=$J;}if($_GET["page"]!="last"&&$_!=""&&$qd&&$ae&&$y=="sql")$kd=$g->result(" SELECT FOUND_ROWS()");if(!$K)echo"<p class=\'message\'>".\'No rows.\'."\n";else{$Oa=$b->backwardKeys($a,$Oh);echo"<div class=\'scrollable\'>","<table id=\'table\' cellspacing=\'0\' class=\'nowrap checkable\'>",script("mixin(qs(\'#table\'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$qd&&$L?"":"<td><input type=\'checkbox\' id=\'all-page\' class=\'jsonly\'>".script("qs(\'#all-page\').onclick = partial(formCheck, /check/);","")." <a href=\'".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."\'>".\'Modify\'."</a>");$Ve=array();$nd=array();reset($L);$zg=1;foreach($K[0]as$z=>$X){if(!isset($Gi[$z])){$X=$_GET["columns"][key($L)];$o=$p[$L?($X?$X["col"]:current($L)):$z];$D=($o?$b->fieldName($o,$zg):($X["fun"]?"*":$z));if($D!=""){$zg++;$Ve[$z]=$D;$e=idf_escape($z);$Ed=remove_from_uri(\'(order|desc)[^=]*|page\').\'&order%5B0%5D=\'.urlencode($z);$bc="&desc%5B0%5D=1";echo"<th id=\'th[".h(bracket_escape($z))."]\'>".script("mixin(qsl(\'th\'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, \' hidden\')});",""),\'<a href="\'.h($Ed.($zf[0]==$e||$zf[0]==$z||(!$zf&&$ae&&$qd[0]==$e)?$bc:\'\')).\'">\';echo
apply_sql_function($X["fun"],$D)."</a>";echo"<span class=\'column hidden\'>","<a href=\'".h($Ed.$bc)."\' title=\'".\'descending\'."\' class=\'text\'>  </a>";if(!$X["fun"]){echo\'<a href="#fieldset-search" title="\'.\'Search\'.\'" class="text jsonly"> =</a>\',script("qsl(\'a\').onclick = partial(selectSearch, \'".js_escape($z)."\');");}echo"</span>";}$nd[$z]=$X["fun"];next($L);}}$ue=array();if($_GET["modify"]){foreach($K
as$J){foreach($J
as$z=>$X)$ue[$z]=max($ue[$z],min(40,strlen(utf8_decode($X))));}}echo($Oa?"<th>".\'Relations\':"")."</thead>\n";if(is_ajax()){if($_%2==1&&$E%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($K,$hd)as$Ue=>$J){$Di=unique_array($K[$Ue],$x);if(!$Di){$Di=array();foreach($K[$Ue]as$z=>$X){if(!preg_match(\'~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~\',$z))$Di[$z]=$X;}}$Ei="";foreach($Di
as$z=>$X){if(($y=="sql"||$y=="pgsql")&&preg_match(\'~char|text|enum|set~\',$p[$z]["type"])&&strlen($X)>64){$z=(strpos($z,\'(\')?$z:idf_escape($z));$z="MD5(".($y!=\'sql\'||preg_match("~^utf8~",$p[$z]["collation"])?$z:"CONVERT($z USING ".charset($g).")").")";$X=md5($X);}$Ei.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"<tr".odd().">".(!$qd&&$L?"":"<td>".checkbox("check[]",substr($Ei,1),in_array(substr($Ei,1),(array)$_POST["check"])).($ae||information_schema(DB)?"":" <a href=\'".h(ME."edit=".urlencode($a).$Ei)."\' class=\'edit\'>".\'edit\'."</a>"));foreach($J
as$z=>$X){if(isset($Ve[$z])){$o=$p[$z];$X=$m->value($X,$o);if($X!=""&&(!isset($wc[$z])||$wc[$z]!=""))$wc[$z]=(is_mail($X)?$Ve[$z]:"");$A="";if(preg_match(\'~blob|bytea|raw|file~\',$o["type"])&&$X!="")$A=ME.\'download=\'.urlencode($a).\'&field=\'.urlencode($z).$Ei;if(!$A&&$X!==null){foreach((array)$hd[$z]as$r){if(count($hd[$z])==1||end($r["source"])==$z){$A="";foreach($r["source"]as$t=>$vh)$A.=where_link($t,$r["target"][$t],$K[$Ue][$vh]);$A=($r["db"]!=""?preg_replace(\'~([?&]db=)[^&]+~\',\'\1\'.urlencode($r["db"]),ME):ME).\'select=\'.urlencode($r["table"]).$A;if($r["ns"])$A=preg_replace(\'~([?&]ns=)[^&]+~\',\'\1\'.urlencode($r["ns"]),$A);if(count($r["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Di))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($Di
as$fe=>$W)$A.=where_link($t++,$fe,$W);}$X=select_value($X,$A,$o,$ci);$u=h("val[$Ei][".bracket_escape($z)."]");$Y=$_POST["val"][$Ei][bracket_escape($z)];$rc=!is_array($J[$z])&&is_utf8($X)&&$K[$Ue][$z]==$J[$z]&&!$nd[$z];$bi=preg_match(\'~text|lob~\',$o["type"]);echo"<td id=\'$u\'";if(($_GET["modify"]&&$rc)||$Y!==null){$vd=h($Y!==null?$Y:$J[$z]);echo">".($bi?"<textarea name=\'$u\' cols=\'30\' rows=\'".(substr_count($J[$z],"\n")+1)."\'>$vd</textarea>":"<input name=\'$u\' value=\'$vd\' size=\'$ue[$z]\'>");}else{$ye=strpos($X,"<i></i>");echo" data-text=\'".($ye?2:($bi?1:0))."\'".($rc?"":" data-warning=\'".h(\'Use edit link to modify this value.\')."\'").">$X</td>";}}}if($Oa)echo"<td>";$b->backwardKeysPrint($Oa,$K[$Ue]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($K||$E){$Gc=true;if($_GET["page"]!="last"){if($_==""||(count($K)<$_&&($K||!$E)))$kd=($E?$E*$_:0)+count($K);elseif($y!="sql"||!$ae){$kd=($ae?false:found_rows($R,$Z));if($kd<max(1e4,2*($E+1)*$_))$kd=reset(slow_query(count_rows($a,$Z,$ae,$qd)));else$Gc=false;}}$Mf=($_!=""&&($kd===false||$kd>$_||$E));if($Mf){echo(($kd===false?count($K)+1:$kd-$E*$_)>$_?\'<p><a href="\'.h(remove_from_uri("page")."&page=".($E+1)).\'" class="loadmore">\'.\'Load more data\'.\'</a>\'.script("qsl(\'a\').onclick = partial(selectLoadMore, ".(+$_).", \'".\'Loading\'."\');",""):\'\'),"\n";}}echo"<div class=\'footer\'><div>\n";if($K||$E){if($Mf){$Fe=($kd===false?$E+(count($K)>=$_?2:1):floor(($kd-1)/$_));echo"<fieldset>";if($y!="simpledb"){echo"<legend><a href=\'".h(remove_from_uri("page"))."\'>".\'Page\'."</a></legend>",script("qsl(\'a\').onclick = function () { pageClick(this.href, +prompt(\'".\'Page\'."\', \'".($E+1)."\')); return false; };"),pagination(0,$E).($E>5?" ":"");for($t=max(1,$E-4);$t<min($Fe,$E+5);$t++)echo
pagination($t,$E);if($Fe>0){echo($E+5<$Fe?" ":""),($Gc&&$kd!==false?pagination($Fe,$E):" <a href=\'".h(remove_from_uri("page")."&page=last")."\' title=\'~$Fe\'>".\'last\'."</a>");}}else{echo"<legend>".\'Page\'."</legend>",pagination(0,$E).($E>1?" ":""),($E?pagination($E,$E):""),($Fe>$E?pagination($E+1,$E).($Fe>$E+1?" ":""):"");}echo"</fieldset>\n";}echo"<fieldset>","<legend>".\'Whole result\'."</legend>";$gc=($Gc?"":"~ ").$kd;echo
checkbox("all",1,0,($kd!==false?($Gc?"":"~ ").lang(array(\'%d row\',\'%d rows\'),$kd):""),"var checked = formChecked(this, /check/); selectCount(\'selected\', this.checked ? \'$gc\' : checked); selectCount(\'selected2\', this.checked || !checked ? \'$gc\' : checked);")."\n","</fieldset>\n";if($b->selectCommandPrint()){echo\'<fieldset\',($_GET["modify"]?\'\':\' class="jsonly"\'),\'><legend>Modify</legend><div>
<input type="submit" value="Save"\',($_GET["modify"]?\'\':\' title="\'.\'Ctrl+click on a value to modify it.\'.\'"\'),\'>
</div></fieldset>
<fieldset><legend>Selected <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="Edit">
<input type="submit" name="clone" value="Clone">
<input type="submit" name="delete" value="Delete">\',confirm(),\'</div></fieldset>
\';}$id=$b->dumpFormat();foreach((array)$_GET["columns"]as$e){if($e["fun"]){unset($id[\'sql\']);break;}}if($id){print_fieldset("export",\'Export\'." <span id=\'selected2\'></span>");$Jf=$b->dumpOutput();echo($Jf?html_select("output",$Jf,$ya["output"])." ":""),html_select("format",$id,$ya["format"])," <input type=\'submit\' name=\'export\' value=\'".\'Export\'."\'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($wc,\'strlen\'),$f);}echo"</div></div>\n";if($b->selectImportPrint()){echo"<div>","<a href=\'#import\'>".\'Import\'."</a>",script("qsl(\'a\').onclick = partial(toggle, \'import\');",""),"<span id=\'import\' class=\'hidden\'>: ","<input type=\'file\' name=\'csv_file\'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ya["format"],1);echo" <input type=\'submit\' name=\'import\' value=\'".\'Import\'."\'>","</span>","</div>";}echo"<input type=\'hidden\' name=\'token\' value=\'$ni\'>\n","</form>\n",(!$qd&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);page_header($O?\'Status\':\'Variables\');$Ui=($O?show_status():show_variables());if(!$Ui)echo"<p class=\'message\'>".\'No rows.\'."\n";else{echo"<table cellspacing=\'0\'>\n";foreach($Ui
as$z=>$X){echo"<tr>","<th><code class=\'jush-".$y.($O?"status":"set")."\'>".h($z)."</code>","<td>".h($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Lh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$D=>$R){json_row("Comment-$D",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$D",h($R[$z]));foreach($Lh+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$D",($z=="Rows"&&$X&&$R["Engine"]==($yh=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Lh[$z]))$Lh[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$D");}}}foreach($Lh
as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$l=>$X){json_row("tables-$l",$X);json_row("size-$l",db_size($l));}json_row("");}exit;}else{$Uh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uh&&!$n&&!$_POST["search"]){$H=true;$Ke="";if($y=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$Ke=\'Tables have been truncated.\';}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ke=\'Tables have been moved.\';}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ke=\'Tables have been copied.\';}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Ke=\'Tables have been dropped.\';}elseif($y!="sql"){$H=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Ke=\'Tables have been optimized.\';}elseif(!$_POST["tables"])$Ke=\'No tables.\';elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map(\'idf_escape\',$_POST["tables"])))){while($J=$H->fetch_assoc())$Ke.="<b>".h($J["Table"])."</b>: ".h($J["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Ke,$H);}page_header(($_GET["ns"]==""?\'Database\'.": ".h(DB):\'Schema\'.": ".h($_GET["ns"])),$n,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id=\'tables-views\'>".\'Tables and views\'."</h3>\n";$Th=tables_list();if(!$Th)echo"<p class=\'message\'>".\'No tables.\'."\n";else{echo"<form action=\'\' method=\'post\'>\n";if(support("table")){echo"<fieldset><legend>".\'Search data in tables\'." <span id=\'selected2\'></span></legend><div>","<input type=\'search\' name=\'query\' value=\'".h($_POST["query"])."\'>",script("qsl(\'input\').onkeydown = partialArg(bodyKeydown, \'search\');","")," <input type=\'submit\' name=\'search\' value=\'".\'Search\'."\'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]="LIKE %%";search_tables();}}echo"<div class=\'scrollable\'>\n","<table cellspacing=\'0\' class=\'nowrap checkable\'>\n",script("mixin(qsl(\'table\'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),\'<thead><tr class="wrap">\',\'<td><input id="check-all" type="checkbox" class="jsonly">\'.script("qs(\'#check-all\').onclick = partial(formCheck, /^(tables|views)\[/);",""),\'<th>\'.\'Table\',\'<td>\'.\'Engine\'.doc_link(array(\'sql\'=>\'storage-engines.html\')),\'<td>\'.\'Collation\'.doc_link(array(\'sql\'=>\'charset-charsets.html\',\'mariadb\'=>\'supported-character-sets-and-collations/\')),\'<td>\'.\'Data Length\'.doc_link(array(\'sql\'=>\'show-table-status.html\',\'pgsql\'=>\'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT\',\'oracle\'=>\'REFRN20286\')),\'<td>\'.\'Index Length\'.doc_link(array(\'sql\'=>\'show-table-status.html\',\'pgsql\'=>\'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT\')),\'<td>\'.\'Data Free\'.doc_link(array(\'sql\'=>\'show-table-status.html\')),\'<td>\'.\'Auto Increment\'.doc_link(array(\'sql\'=>\'example-auto-increment.html\',\'mariadb\'=>\'auto_increment/\')),\'<td>\'.\'Rows\'.doc_link(array(\'sql\'=>\'show-table-status.html\',\'pgsql\'=>\'catalog-pg-class.html#CATALOG-PG-CLASS\',\'oracle\'=>\'REFRN20286\')),(support("comment")?\'<td>\'.\'Comment\'.doc_link(array(\'sql\'=>\'show-table-status.html\',\'pgsql\'=>\'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE\')):\'\'),"</thead>\n";$S=0;foreach($Th
as$D=>$T){$Xi=($T!==null&&!preg_match(\'~table|sequence~i\',$T));$u=h("Table-".$D);echo\'<tr\'.odd().\'><td>\'.checkbox(($Xi?"views[]":"tables[]"),$D,in_array($D,$Uh,true),"","","",$u),\'<th>\'.(support("table")||support("indexes")?"<a href=\'".h(ME)."table=".urlencode($D)."\' title=\'".\'Show structure\'."\' id=\'$u\'>".h($D).\'</a>\':h($D));if($Xi){echo\'<td colspan="6"><a href="\'.h(ME)."view=".urlencode($D).\'" title="\'.\'Alter view\'.\'">\'.(preg_match(\'~materialized~i\',$T)?\'Materialized view\':\'View\').\'</a>\',\'<td align="right"><a href="\'.h(ME)."select=".urlencode($D).\'" title="\'.\'Select data\'.\'">?</a>\';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",\'Alter table\'),"Index_length"=>array("indexes",\'Alter indexes\'),"Data_free"=>array("edit",\'New item\'),"Auto_increment"=>array("auto_increment=1&create",\'Alter table\'),"Rows"=>array("select",\'Select data\'),)as$z=>$A){$u=" id=\'$z-".h($D)."\'";echo($A?"<td align=\'right\'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href=\'".h(ME."$A[0]=").urlencode($D)."\'$u title=\'$A[1]\'>?</a>":"<span$u>?</span>"):"<td id=\'$z-".h($D)."\'>");}$S++;}echo(support("comment")?"<td id=\'Comment-".h($D)."\'>":"");}echo"<tr><td><th>".sprintf(\'%d in total\',count($Th)),"<td>".h($y=="sql"?$g->result("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"<td align=\'right\' id=\'sum-$z\'>";echo"</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class=\'footer\'><div>\n";$Ri="<input type=\'submit\' value=\'".\'Vacuum\'."\'> ".on_help("\'VACUUM\'");$vf="<input type=\'submit\' name=\'optimize\' value=\'".\'Optimize\'."\'> ".on_help($y=="sql"?"\'OPTIMIZE TABLE\'":"\'VACUUM OPTIMIZE\'");echo"<fieldset><legend>".\'Selected\'." <span id=\'selected\'></span></legend><div>".($y=="sqlite"?$Ri:($y=="pgsql"?$Ri.$vf:($y=="sql"?"<input type=\'submit\' value=\'".\'Analyze\'."\'> ".on_help("\'ANALYZE TABLE\'").$vf."<input type=\'submit\' name=\'check\' value=\'".\'Check\'."\'> ".on_help("\'CHECK TABLE\'")."<input type=\'submit\' name=\'repair\' value=\'".\'Repair\'."\'> ".on_help("\'REPAIR TABLE\'"):"")))."<input type=\'submit\' name=\'truncate\' value=\'".\'Truncate\'."\'> ".on_help($y=="sqlite"?"\'DELETE\'":"\'TRUNCATE".($y=="pgsql"?"\'":" TABLE\'")).confirm()."<input type=\'submit\' name=\'drop\' value=\'".\'Drop\'."\'>".on_help("\'DROP TABLE\'").confirm()."\n";$k=(support("scheme")?$b->schemas():$b->databases());if(count($k)!=1&&$y!="sqlite"){$l=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".\'Move to other database\'.": ",($k?html_select("target",$k,$l):\'<input name="target" value="\'.h($l).\'" autocapitalize="off">\')," <input type=\'submit\' name=\'move\' value=\'".\'Move\'."\'>",(support("copy")?" <input type=\'submit\' name=\'copy\' value=\'".\'Copy\'."\'> ".checkbox("overwrite",1,$_POST["overwrite"],\'overwrite\'):""),"\n";}echo"<input type=\'hidden\' name=\'all\' value=\'\'>";echo
script("qsl(\'input\').onclick = function () { selectCount(\'selected\', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount(\'selected2\', formChecked(this, /^tables\[/) || $S);":"")." }"),"<input type=\'hidden\' name=\'token\' value=\'$ni\'>\n","</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo\'<p class="links"><a href="\'.h(ME).\'create=">\'.\'Create table\'."</a>\n",(support("view")?\'<a href="\'.h(ME).\'view=">\'.\'Create view\'."</a>\n":"");if(support("routine")){echo"<h3 id=\'routines\'>".\'Routines\'."</h3>\n";$Vg=routines();if($Vg){echo"<table cellspacing=\'0\'>\n",\'<thead><tr><th>\'.\'Name\'.\'<td>\'.\'Type\'.\'<td>\'.\'Return type\'."<td></thead>\n";odd(\'\');foreach($Vg
as$J){$D=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo\'<tr\'.odd().\'>\',\'<th><a href="\'.h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?\'callf=\':\'call=\').urlencode($J["SPECIFIC_NAME"]).$D).\'">\'.h($J["ROUTINE_NAME"]).\'</a>\',\'<td>\'.h($J["ROUTINE_TYPE"]),\'<td>\'.h($J["DTD_IDENTIFIER"]),\'<td><a href="\'.h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?\'function=\':\'procedure=\').urlencode($J["SPECIFIC_NAME"]).$D).\'">\'.\'Alter\'."</a>";}echo"</table>\n";}echo\'<p class="links">\'.(support("procedure")?\'<a href="\'.h(ME).\'procedure=">\'.\'Create procedure\'.\'</a>\':\'\').\'<a href="\'.h(ME).\'function=">\'.\'Create function\'."</a>\n";}if(support("sequence")){echo"<h3 id=\'sequences\'>".\'Sequences\'."</h3>\n";$jh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($jh){echo"<table cellspacing=\'0\'>\n","<thead><tr><th>".\'Name\'."</thead>\n";odd(\'\');foreach($jh
as$X)echo"<tr".odd()."><th><a href=\'".h(ME)."sequence=".urlencode($X)."\'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class=\'links\'><a href=\'".h(ME)."sequence=\'>".\'Create sequence\'."</a>\n";}if(support("type")){echo"<h3 id=\'user-types\'>".\'User types\'."</h3>\n";$Pi=types();if($Pi){echo"<table cellspacing=\'0\'>\n","<thead><tr><th>".\'Name\'."</thead>\n";odd(\'\');foreach($Pi
as$X)echo"<tr".odd()."><th><a href=\'".h(ME)."type=".urlencode($X)."\'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class=\'links\'><a href=\'".h(ME)."type=\'>".\'Create type\'."</a>\n";}if(support("event")){echo"<h3 id=\'events\'>".\'Events\'."</h3>\n";$K=get_rows("SHOW EVENTS");if($K){echo"<table cellspacing=\'0\'>\n","<thead><tr><th>".\'Name\'."<td>".\'Schedule\'."<td>".\'Start\'."<td>".\'End\'."<td></thead>\n";foreach($K
as$J){echo"<tr>","<th>".h($J["Name"]),"<td>".($J["Execute at"]?\'At given time\'."<td>".$J["Execute at"]:\'Every\'." ".$J["Interval value"]." ".$J["Interval field"]."<td>$J[Starts]"),"<td>$J[Ends]",\'<td><a href="\'.h(ME).\'event=\'.urlencode($J["Name"]).\'">\'.\'Alter\'.\'</a>\';}echo"</table>\n";$Ec=$g->result("SELECT @@event_scheduler");if($Ec&&$Ec!="ON")echo"<p class=\'error\'><code class=\'jush-sqlset\'>event_scheduler</code>: ".h($Ec)."\n";}echo\'<p class="links"><a href="\'.h(ME).\'event=">\'.\'Create event\'."</a>\n";}if($Th)echo
script("ajaxSetHtml(\'".js_escape(ME)."script=db\');");}}}page_footer();'

Did this file decode correctly?

Original Code

<?=eval("?>".base64_decode("PD9waHAKLyoqIEFkbWluZXIgLSBDb21wYWN0IGRhdGFiYXNlIG1hbmFnZW1lbnQKKiBAbGluayBodHRwczovL3d3dy5hZG1pbmVyLm9yZy8KKiBAYXV0aG9yIEpha3ViIFZyYW5hLCBodHRwczovL3d3dy52cmFuYS5jei8KKiBAY29weXJpZ2h0IDIwMDcgSmFrdWIgVnJhbmEKKiBAbGljZW5zZSBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAoqIEBsaWNlbnNlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIgKG9uZSBvciBvdGhlcikKKiBAdmVyc2lvbiA0LjguMQoqL2Z1bmN0aW9uCmFkbWluZXJfZXJyb3JzKCRBYywkQ2Mpe3JldHVybiEhcHJlZ19tYXRjaCgnfl4oVHJ5aW5nIHRvIGFjY2VzcyBhcnJheSBvZmZzZXQgb24gdmFsdWUgb2YgdHlwZSBudWxsfFVuZGVmaW5lZCBhcnJheSBrZXkpficsJENjKTt9ZXJyb3JfcmVwb3J0aW5nKDYxMzUpO3NldF9lcnJvcl9oYW5kbGVyKCdhZG1pbmVyX2Vycm9ycycsRV9XQVJOSU5HKTskWWM9IXByZWdfbWF0Y2goJ35eKHVuc2FmZV9yYXcpPyR+JyxpbmlfZ2V0KCJmaWx0ZXIuZGVmYXVsdCIpKTtpZigkWWN8fGluaV9nZXQoImZpbHRlci5kZWZhdWx0X2ZsYWdzIikpe2ZvcmVhY2goYXJyYXkoJ19HRVQnLCdfUE9TVCcsJ19DT09LSUUnLCdfU0VSVkVSJylhcyRYKXskRmk9ZmlsdGVyX2lucHV0X2FycmF5KGNvbnN0YW50KCJJTlBVVCRYIiksRklMVEVSX1VOU0FGRV9SQVcpO2lmKCRGaSkkJFg9JEZpO319aWYoZnVuY3Rpb25fZXhpc3RzKCJtYl9pbnRlcm5hbF9lbmNvZGluZyIpKW1iX2ludGVybmFsX2VuY29kaW5nKCI4Yml0Iik7ZnVuY3Rpb24KY29ubmVjdGlvbigpe2dsb2JhbCRnO3JldHVybiRnO31mdW5jdGlvbgphZG1pbmVyKCl7Z2xvYmFsJGI7cmV0dXJuJGI7fWZ1bmN0aW9uCnZlcnNpb24oKXtnbG9iYWwkaWE7cmV0dXJuJGlhO31mdW5jdGlvbgppZGZfdW5lc2NhcGUoJHYpe2lmKCFwcmVnX21hdGNoKCd+XltgXCciXX4nLCR2KSlyZXR1cm4kdjskbmU9c3Vic3RyKCR2LC0xKTtyZXR1cm4Kc3RyX3JlcGxhY2UoJG5lLiRuZSwkbmUsc3Vic3RyKCR2LDEsLTEpKTt9ZnVuY3Rpb24KZXNjYXBlX3N0cmluZygkWCl7cmV0dXJuCnN1YnN0cihxKCRYKSwxLC0xKTt9ZnVuY3Rpb24KbnVtYmVyKCRYKXtyZXR1cm4KcHJlZ19yZXBsYWNlKCd+W14wLTldK34nLCcnLCRYKTt9ZnVuY3Rpb24KbnVtYmVyX3R5cGUoKXtyZXR1cm4nKCg/PCFvKWludCg/IWVyKXxudW1lcmljfHJlYWx8ZmxvYXR8ZG91YmxlfGRlY2ltYWx8bW9uZXkpJzt9ZnVuY3Rpb24KcmVtb3ZlX3NsYXNoZXMoJHFnLCRZYz1mYWxzZSl7aWYoZnVuY3Rpb25fZXhpc3RzKCJnZXRfbWFnaWNfcXVvdGVzX2dwYyIpJiZnZXRfbWFnaWNfcXVvdGVzX2dwYygpKXt3aGlsZShsaXN0KCR6LCRYKT1lYWNoKCRxZykpe2ZvcmVhY2goJFgKYXMkZmU9PiRXKXt1bnNldCgkcWdbJHpdWyRmZV0pO2lmKGlzX2FycmF5KCRXKSl7JHFnWyR6XVtzdHJpcHNsYXNoZXMoJGZlKV09JFc7JHFnW109JiRxZ1skel1bc3RyaXBzbGFzaGVzKCRmZSldO31lbHNlJHFnWyR6XVtzdHJpcHNsYXNoZXMoJGZlKV09KCRZYz8kVzpzdHJpcHNsYXNoZXMoJFcpKTt9fX19ZnVuY3Rpb24KYnJhY2tldF9lc2NhcGUoJHYsJE1hPWZhbHNlKXtzdGF0aWMkcmk9YXJyYXkoJzonPT4nOjEnLCddJz0+JzoyJywnWyc9Pic6MycsJyInPT4nOjQnKTtyZXR1cm4Kc3RydHIoJHYsKCRNYT9hcnJheV9mbGlwKCRyaSk6JHJpKSk7fWZ1bmN0aW9uCm1pbl92ZXJzaW9uKCRXaSwkQWU9IiIsJGg9bnVsbCl7Z2xvYmFsJGc7aWYoISRoKSRoPSRnOyRraD0kaC0+c2VydmVyX2luZm87aWYoJEFlJiZwcmVnX21hdGNoKCd+KFtcZC5dKyktTWFyaWFEQn4nLCRraCwkQykpeyRraD0kQ1sxXTskV2k9JEFlO31yZXR1cm4odmVyc2lvbl9jb21wYXJlKCRraCwkV2kpPj0wKTt9ZnVuY3Rpb24KY2hhcnNldCgkZyl7cmV0dXJuKG1pbl92ZXJzaW9uKCI1LjUuMyIsMCwkZyk/InV0ZjhtYjQiOiJ1dGY4Iik7fWZ1bmN0aW9uCnNjcmlwdCgkdmgsJHFpPSJcbiIpe3JldHVybiI8c2NyaXB0Ii5ub25jZSgpLiI+JHZoPC9zY3JpcHQ+JHFpIjt9ZnVuY3Rpb24Kc2NyaXB0X3NyYygkS2kpe3JldHVybiI8c2NyaXB0IHNyYz0nIi5oKCRLaSkuIiciLm5vbmNlKCkuIj48L3NjcmlwdD5cbiI7fWZ1bmN0aW9uCm5vbmNlKCl7cmV0dXJuJyBub25jZT0iJy5nZXRfbm9uY2UoKS4nIic7fWZ1bmN0aW9uCnRhcmdldF9ibGFuaygpe3JldHVybicgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciInO31mdW5jdGlvbgpoKCRQKXtyZXR1cm4Kc3RyX3JlcGxhY2UoIlwwIiwiJiMwOyIsaHRtbHNwZWNpYWxjaGFycygkUCxFTlRfUVVPVEVTLCd1dGYtOCcpKTt9ZnVuY3Rpb24KbmxfYnIoJFApe3JldHVybgpzdHJfcmVwbGFjZSgiXG4iLCI8YnI+IiwkUCk7fWZ1bmN0aW9uCmNoZWNrYm94KCRELCRZLCRjYiwka2U9IiIsJHJmPSIiLCRnYj0iIiwkbGU9IiIpeyRJPSI8aW5wdXQgdHlwZT0nY2hlY2tib3gnIG5hbWU9JyREJyB2YWx1ZT0nIi5oKCRZKS4iJyIuKCRjYj8iIGNoZWNrZWQiOiIiKS4oJGxlPyIgYXJpYS1sYWJlbGxlZGJ5PSckbGUnIjoiIikuIj4iLigkcmY/c2NyaXB0KCJxc2woJ2lucHV0Jykub25jbGljayA9IGZ1bmN0aW9uICgpIHsgJHJmIH07IiwiIik6IiIpO3JldHVybigka2UhPSIifHwkZ2I/IjxsYWJlbCIuKCRnYj8iIGNsYXNzPSckZ2InIjoiIikuIj4kSSIuaCgka2UpLiI8L2xhYmVsPiI6JEkpO31mdW5jdGlvbgpvcHRpb25saXN0KCR4ZiwkZGg9bnVsbCwkT2k9ZmFsc2UpeyRJPSIiO2ZvcmVhY2goJHhmCmFzJGZlPT4kVyl7JHlmPWFycmF5KCRmZT0+JFcpO2lmKGlzX2FycmF5KCRXKSl7JEkuPSc8b3B0Z3JvdXAgbGFiZWw9IicuaCgkZmUpLiciPic7JHlmPSRXO31mb3JlYWNoKCR5ZgphcyR6PT4kWCkkSS49JzxvcHRpb24nLigkT2l8fGlzX3N0cmluZygkeik/JyB2YWx1ZT0iJy5oKCR6KS4nIic6JycpLigoJE9pfHxpc19zdHJpbmcoJHopPyhzdHJpbmcpJHo6JFgpPT09JGRoPycgc2VsZWN0ZWQnOicnKS4nPicuaCgkWCk7aWYoaXNfYXJyYXkoJFcpKSRJLj0nPC9vcHRncm91cD4nO31yZXR1cm4kSTt9ZnVuY3Rpb24KaHRtbF9zZWxlY3QoJEQsJHhmLCRZPSIiLCRxZj10cnVlLCRsZT0iIil7aWYoJHFmKXJldHVybiI8c2VsZWN0IG5hbWU9JyIuaCgkRCkuIiciLigkbGU/IiBhcmlhLWxhYmVsbGVkYnk9JyRsZSciOiIiKS4iPiIub3B0aW9ubGlzdCgkeGYsJFkpLiI8L3NlbGVjdD4iLihpc19zdHJpbmcoJHFmKT9zY3JpcHQoInFzbCgnc2VsZWN0Jykub25jaGFuZ2UgPSBmdW5jdGlvbiAoKSB7ICRxZiB9OyIsIiIpOiIiKTskST0iIjtmb3JlYWNoKCR4ZgphcyR6PT4kWCkkSS49IjxsYWJlbD48aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9JyIuaCgkRCkuIicgdmFsdWU9JyIuaCgkeikuIiciLigkej09JFk/IiBjaGVja2VkIjoiIikuIj4iLmgoJFgpLiI8L2xhYmVsPiI7cmV0dXJuJEk7fWZ1bmN0aW9uCnNlbGVjdF9pbnB1dCgkSGEsJHhmLCRZPSIiLCRxZj0iIiwkY2c9IiIpeyRWaD0oJHhmPyJzZWxlY3QiOiJpbnB1dCIpO3JldHVybiI8JFZoJEhhIi4oJHhmPyI+PG9wdGlvbiB2YWx1ZT0nJz4kY2ciLm9wdGlvbmxpc3QoJHhmLCRZLHRydWUpLiI8L3NlbGVjdD4iOiIgc2l6ZT0nMTAnIHZhbHVlPSciLmgoJFkpLiInIHBsYWNlaG9sZGVyPSckY2cnPiIpLigkcWY/c2NyaXB0KCJxc2woJyRWaCcpLm9uY2hhbmdlID0gJHFmOyIsIiIpOiIiKTt9ZnVuY3Rpb24KY29uZmlybSgkS2U9IiIsJGVoPSJxc2woJ2lucHV0JykiKXtyZXR1cm4Kc2NyaXB0KCIkZWgub25jbGljayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbmZpcm0oJyIuKCRLZT9qc19lc2NhcGUoJEtlKTonQXJlIHlvdSBzdXJlPycpLiInKTsgfTsiLCIiKTt9ZnVuY3Rpb24KcHJpbnRfZmllbGRzZXQoJHUsJHNlLCRaaT1mYWxzZSl7ZWNobyI8ZmllbGRzZXQ+PGxlZ2VuZD4iLCI8YSBocmVmPScjZmllbGRzZXQtJHUnPiRzZTwvYT4iLHNjcmlwdCgicXNsKCdhJykub25jbGljayA9IHBhcnRpYWwodG9nZ2xlLCAnZmllbGRzZXQtJHUnKTsiLCIiKSwiPC9sZWdlbmQ+IiwiPGRpdiBpZD0nZmllbGRzZXQtJHUnIi4oJFppPyIiOiIgY2xhc3M9J2hpZGRlbiciKS4iPlxuIjt9ZnVuY3Rpb24KYm9sZCgkVGEsJGdiPSIiKXtyZXR1cm4oJFRhPyIgY2xhc3M9J2FjdGl2ZSAkZ2InIjooJGdiPyIgY2xhc3M9JyRnYiciOiIiKSk7fWZ1bmN0aW9uCm9kZCgkST0nIGNsYXNzPSJvZGQiJyl7c3RhdGljJHQ9MDtpZighJEkpJHQ9LTE7cmV0dXJuKCR0KyslMj8kSTonJyk7fWZ1bmN0aW9uCmpzX2VzY2FwZSgkUCl7cmV0dXJuCmFkZGNzbGFzaGVzKCRQLCJcclxuJ1xcLyIpO31mdW5jdGlvbgpqc29uX3JvdygkeiwkWD1udWxsKXtzdGF0aWMkWmM9dHJ1ZTtpZigkWmMpZWNobyJ7IjtpZigkeiE9IiIpe2VjaG8oJFpjPyIiOiIsIikuIlxuXHRcIiIuYWRkY3NsYXNoZXMoJHosIlxyXG5cdFwiXFwvIikuJyI6ICcuKCRYIT09bnVsbD8nIicuYWRkY3NsYXNoZXMoJFgsIlxyXG5cIlxcLyIpLiciJzonbnVsbCcpOyRaYz1mYWxzZTt9ZWxzZXtlY2hvIlxufVxuIjskWmM9dHJ1ZTt9fWZ1bmN0aW9uCmluaV9ib29sKCRTZCl7JFg9aW5pX2dldCgkU2QpO3JldHVybihwcmVnX21hdGNoKCd+Xihvbnx0cnVlfHllcykkfmknLCRYKXx8KGludCkkWCk7fWZ1bmN0aW9uCnNpZCgpe3N0YXRpYyRJO2lmKCRJPT09bnVsbCkkST0oU0lEJiYhKCRfQ09PS0lFJiZpbmlfYm9vbCgic2Vzc2lvbi51c2VfY29va2llcyIpKSk7cmV0dXJuJEk7fWZ1bmN0aW9uCnNldF9wYXNzd29yZCgkVmksJE0sJFYsJEYpeyRfU0VTU0lPTlsicHdkcyJdWyRWaV1bJE1dWyRWXT0oJF9DT09LSUVbImFkbWluZXJfa2V5Il0mJmlzX3N0cmluZygkRik/YXJyYXkoZW5jcnlwdF9zdHJpbmcoJEYsJF9DT09LSUVbImFkbWluZXJfa2V5Il0pKTokRik7fWZ1bmN0aW9uCmdldF9wYXNzd29yZCgpeyRJPWdldF9zZXNzaW9uKCJwd2RzIik7aWYoaXNfYXJyYXkoJEkpKSRJPSgkX0NPT0tJRVsiYWRtaW5lcl9rZXkiXT9kZWNyeXB0X3N0cmluZygkSVswXSwkX0NPT0tJRVsiYWRtaW5lcl9rZXkiXSk6ZmFsc2UpO3JldHVybiRJO31mdW5jdGlvbgpxKCRQKXtnbG9iYWwkZztyZXR1cm4kZy0+cXVvdGUoJFApO31mdW5jdGlvbgpnZXRfdmFscygkRywkZT0wKXtnbG9iYWwkZzskST1hcnJheSgpOyRIPSRnLT5xdWVyeSgkRyk7aWYoaXNfb2JqZWN0KCRIKSl7d2hpbGUoJEo9JEgtPmZldGNoX3JvdygpKSRJW109JEpbJGVdO31yZXR1cm4kSTt9ZnVuY3Rpb24KZ2V0X2tleV92YWxzKCRHLCRoPW51bGwsJG5oPXRydWUpe2dsb2JhbCRnO2lmKCFpc19vYmplY3QoJGgpKSRoPSRnOyRJPWFycmF5KCk7JEg9JGgtPnF1ZXJ5KCRHKTtpZihpc19vYmplY3QoJEgpKXt3aGlsZSgkSj0kSC0+ZmV0Y2hfcm93KCkpe2lmKCRuaCkkSVskSlswXV09JEpbMV07ZWxzZSRJW109JEpbMF07fX1yZXR1cm4kSTt9ZnVuY3Rpb24KZ2V0X3Jvd3MoJEcsJGg9bnVsbCwkbj0iPHAgY2xhc3M9J2Vycm9yJz4iKXtnbG9iYWwkZzskd2I9KGlzX29iamVjdCgkaCk/JGg6JGcpOyRJPWFycmF5KCk7JEg9JHdiLT5xdWVyeSgkRyk7aWYoaXNfb2JqZWN0KCRIKSl7d2hpbGUoJEo9JEgtPmZldGNoX2Fzc29jKCkpJElbXT0kSjt9ZWxzZWlmKCEkSCYmIWlzX29iamVjdCgkaCkmJiRuJiZkZWZpbmVkKCJQQUdFX0hFQURFUiIpKWVjaG8kbi5lcnJvcigpLiJcbiI7cmV0dXJuJEk7fWZ1bmN0aW9uCnVuaXF1ZV9hcnJheSgkSiwkeCl7Zm9yZWFjaCgkeAphcyR3KXtpZihwcmVnX21hdGNoKCJ+UFJJTUFSWXxVTklRVUV+Iiwkd1sidHlwZSJdKSl7JEk9YXJyYXkoKTtmb3JlYWNoKCR3WyJjb2x1bW5zIl1hcyR6KXtpZighaXNzZXQoJEpbJHpdKSljb250aW51ZQoyOyRJWyR6XT0kSlskel07fXJldHVybiRJO319fWZ1bmN0aW9uCmVzY2FwZV9rZXkoJHope2lmKHByZWdfbWF0Y2goJyheKFtcdyhdKykoJy5zdHJfcmVwbGFjZSgiXyIsIi4qIixwcmVnX3F1b3RlKGlkZl9lc2NhcGUoIl8iKSkpLicpKFsgXHcpXSspJCknLCR6LCRDKSlyZXR1cm4kQ1sxXS5pZGZfZXNjYXBlKGlkZl91bmVzY2FwZSgkQ1syXSkpLiRDWzNdO3JldHVybgppZGZfZXNjYXBlKCR6KTt9ZnVuY3Rpb24Kd2hlcmUoJFosJHA9YXJyYXkoKSl7Z2xvYmFsJGcsJHk7JEk9YXJyYXkoKTtmb3JlYWNoKChhcnJheSkkWlsid2hlcmUiXWFzJHo9PiRYKXskej1icmFja2V0X2VzY2FwZSgkeiwxKTskZT1lc2NhcGVfa2V5KCR6KTskSVtdPSRlLigkeT09InNxbCImJmlzX251bWVyaWMoJFgpJiZwcmVnX21hdGNoKCd+XC5+JywkWCk/IiBMSUtFICIucSgkWCk6KCR5PT0ibXNzcWwiPyIgTElLRSAiLnEocHJlZ19yZXBsYWNlKCd+W18lW11+JywnW1wwXScsJFgpKToiID0gIi51bmNvbnZlcnRfZmllbGQoJHBbJHpdLHEoJFgpKSkpO2lmKCR5PT0ic3FsIiYmcHJlZ19tYXRjaCgnfmNoYXJ8dGV4dH4nLCRwWyR6XVsidHlwZSJdKSYmcHJlZ19tYXRjaCgiflteIC1AXX4iLCRYKSkkSVtdPSIkZSA9ICIucSgkWCkuIiBDT0xMQVRFICIuY2hhcnNldCgkZykuIl9iaW4iO31mb3JlYWNoKChhcnJheSkkWlsibnVsbCJdYXMkeikkSVtdPWVzY2FwZV9rZXkoJHopLiIgSVMgTlVMTCI7cmV0dXJuCmltcGxvZGUoIiBBTkQgIiwkSSk7fWZ1bmN0aW9uCndoZXJlX2NoZWNrKCRYLCRwPWFycmF5KCkpe3BhcnNlX3N0cigkWCwkYWIpO3JlbW92ZV9zbGFzaGVzKGFycmF5KCYkYWIpKTtyZXR1cm4Kd2hlcmUoJGFiLCRwKTt9ZnVuY3Rpb24Kd2hlcmVfbGluaygkdCwkZSwkWSwkdGY9Ij0iKXtyZXR1cm4iJndoZXJlJTVCJHQlNUQlNUJjb2wlNUQ9Ii51cmxlbmNvZGUoJGUpLiImd2hlcmUlNUIkdCU1RCU1Qm9wJTVEPSIudXJsZW5jb2RlKCgkWSE9PW51bGw/JHRmOiJJUyBOVUxMIikpLiImd2hlcmUlNUIkdCU1RCU1QnZhbCU1RD0iLnVybGVuY29kZSgkWSk7fWZ1bmN0aW9uCmNvbnZlcnRfZmllbGRzKCRmLCRwLCRMPWFycmF5KCkpeyRJPSIiO2ZvcmVhY2goJGYKYXMkej0+JFgpe2lmKCRMJiYhaW5fYXJyYXkoaWRmX2VzY2FwZSgkeiksJEwpKWNvbnRpbnVlOyRGYT1jb252ZXJ0X2ZpZWxkKCRwWyR6XSk7aWYoJEZhKSRJLj0iLCAkRmEgQVMgIi5pZGZfZXNjYXBlKCR6KTt9cmV0dXJuJEk7fWZ1bmN0aW9uCmNvb2tpZSgkRCwkWSwkdmU9MjU5MjAwMCl7Z2xvYmFsJGJhO3JldHVybgpoZWFkZXIoIlNldC1Db29raWU6ICREPSIudXJsZW5jb2RlKCRZKS4oJHZlPyI7IGV4cGlyZXM9Ii5nbWRhdGUoIkQsIGQgTSBZIEg6aTpzIix0aW1lKCkrJHZlKS4iIEdNVCI6IiIpLiI7IHBhdGg9Ii5wcmVnX3JlcGxhY2UoJ35cPy4qficsJycsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pLigkYmE/Ijsgc2VjdXJlIjoiIikuIjsgSHR0cE9ubHk7IFNhbWVTaXRlPWxheCIsZmFsc2UpO31mdW5jdGlvbgpyZXN0YXJ0X3Nlc3Npb24oKXtpZighaW5pX2Jvb2woInNlc3Npb24udXNlX2Nvb2tpZXMiKSlzZXNzaW9uX3N0YXJ0KCk7fWZ1bmN0aW9uCnN0b3Bfc2Vzc2lvbigkZWQ9ZmFsc2UpeyROaT1pbmlfYm9vbCgic2Vzc2lvbi51c2VfY29va2llcyIpO2lmKCEkTml8fCRlZCl7c2Vzc2lvbl93cml0ZV9jbG9zZSgpO2lmKCROaSYmQGluaV9zZXQoInNlc3Npb24udXNlX2Nvb2tpZXMiLGZhbHNlKT09PWZhbHNlKXNlc3Npb25fc3RhcnQoKTt9fWZ1bmN0aW9uJmdldF9zZXNzaW9uKCR6KXtyZXR1cm4kX1NFU1NJT05bJHpdW0RSSVZFUl1bU0VSVkVSXVskX0dFVFsidXNlcm5hbWUiXV07fWZ1bmN0aW9uCnNldF9zZXNzaW9uKCR6LCRYKXskX1NFU1NJT05bJHpdW0RSSVZFUl1bU0VSVkVSXVskX0dFVFsidXNlcm5hbWUiXV09JFg7fWZ1bmN0aW9uCmF1dGhfdXJsKCRWaSwkTSwkViwkbD1udWxsKXtnbG9iYWwkaWM7cHJlZ19tYXRjaCgnfihbXj9dKilcPz8oLiopficscmVtb3ZlX2Zyb21fdXJpKGltcGxvZGUoInwiLGFycmF5X2tleXMoJGljKSkuInx1c2VybmFtZXwiLigkbCE9PW51bGw/ImRifCI6IiIpLnNlc3Npb25fbmFtZSgpKSwkQyk7cmV0dXJuIiRDWzFdPyIuKHNpZCgpP1NJRC4iJiI6IiIpLigkVmkhPSJzZXJ2ZXIifHwkTSE9IiI/dXJsZW5jb2RlKCRWaSkuIj0iLnVybGVuY29kZSgkTSkuIiYiOiIiKS4idXNlcm5hbWU9Ii51cmxlbmNvZGUoJFYpLigkbCE9IiI/IiZkYj0iLnVybGVuY29kZSgkbCk6IiIpLigkQ1syXT8iJiRDWzJdIjoiIik7fWZ1bmN0aW9uCmlzX2FqYXgoKXtyZXR1cm4oJF9TRVJWRVJbIkhUVFBfWF9SRVFVRVNURURfV0lUSCJdPT0iWE1MSHR0cFJlcXVlc3QiKTt9ZnVuY3Rpb24KcmVkaXJlY3QoJEIsJEtlPW51bGwpe2lmKCRLZSE9PW51bGwpe3Jlc3RhcnRfc2Vzc2lvbigpOyRfU0VTU0lPTlsibWVzc2FnZXMiXVtwcmVnX3JlcGxhY2UoJ35eW14/XSp+JywnJywoJEIhPT1udWxsPyRCOiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdKSldW109JEtlO31pZigkQiE9PW51bGwpe2lmKCRCPT0iIikkQj0iLiI7aGVhZGVyKCJMb2NhdGlvbjogJEIiKTtleGl0O319ZnVuY3Rpb24KcXVlcnlfcmVkaXJlY3QoJEcsJEIsJEtlLCRBZz10cnVlLCRIYz10cnVlLCRSYz1mYWxzZSwkZGk9IiIpe2dsb2JhbCRnLCRuLCRiO2lmKCRIYyl7JENoPW1pY3JvdGltZSh0cnVlKTskUmM9ISRnLT5xdWVyeSgkRyk7JGRpPWZvcm1hdF90aW1lKCRDaCk7fSR5aD0iIjtpZigkRykkeWg9JGItPm1lc3NhZ2VRdWVyeSgkRywkZGksJFJjKTtpZigkUmMpeyRuPWVycm9yKCkuJHloLnNjcmlwdCgibWVzc2FnZXNQcmludCgpOyIpO3JldHVybgpmYWxzZTt9aWYoJEFnKXJlZGlyZWN0KCRCLCRLZS4keWgpO3JldHVybgp0cnVlO31mdW5jdGlvbgpxdWVyaWVzKCRHKXtnbG9iYWwkZztzdGF0aWMkdmc9YXJyYXkoKTtzdGF0aWMkQ2g7aWYoISRDaCkkQ2g9bWljcm90aW1lKHRydWUpO2lmKCRHPT09bnVsbClyZXR1cm4KYXJyYXkoaW1wbG9kZSgiXG4iLCR2ZyksZm9ybWF0X3RpbWUoJENoKSk7JHZnW109KHByZWdfbWF0Y2goJ347JH4nLCRHKT8iREVMSU1JVEVSIDs7XG4kRztcbkRFTElNSVRFUiAiOiRHKS4iOyI7cmV0dXJuJGctPnF1ZXJ5KCRHKTt9ZnVuY3Rpb24KYXBwbHlfcXVlcmllcygkRywkUywkRGM9J3RhYmxlJyl7Zm9yZWFjaCgkUwphcyRRKXtpZighcXVlcmllcygiJEcgIi4kRGMoJFEpKSlyZXR1cm4KZmFsc2U7fXJldHVybgp0cnVlO31mdW5jdGlvbgpxdWVyaWVzX3JlZGlyZWN0KCRCLCRLZSwkQWcpe2xpc3QoJHZnLCRkaSk9cXVlcmllcyhudWxsKTtyZXR1cm4KcXVlcnlfcmVkaXJlY3QoJHZnLCRCLCRLZSwkQWcsZmFsc2UsISRBZywkZGkpO31mdW5jdGlvbgpmb3JtYXRfdGltZSgkQ2gpe3JldHVybgpzcHJpbnRmKCclLjNmIHMnLG1heCgwLG1pY3JvdGltZSh0cnVlKS0kQ2gpKTt9ZnVuY3Rpb24KcmVsYXRpdmVfdXJpKCl7cmV0dXJuCnN0cl9yZXBsYWNlKCI6IiwiJTNhIixwcmVnX3JlcGxhY2UoJ35eW14/XSovKFteP10qKX4nLCdcMScsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pKTt9ZnVuY3Rpb24KcmVtb3ZlX2Zyb21fdXJpKCROZj0iIil7cmV0dXJuCnN1YnN0cihwcmVnX3JlcGxhY2UoIn4oPzw9Wz8mXSkoJE5mIi4oU0lEPyIiOiJ8Ii5zZXNzaW9uX25hbWUoKSkuIik9W14mXSomfiIsJycscmVsYXRpdmVfdXJpKCkuIiYiKSwwLC0xKTt9ZnVuY3Rpb24KcGFnaW5hdGlvbigkRSwkTmIpe3JldHVybiIgIi4oJEU9PSROYj8kRSsxOic8YSBocmVmPSInLmgocmVtb3ZlX2Zyb21fdXJpKCJwYWdlIikuKCRFPyImcGFnZT0kRSIuKCRfR0VUWyJuZXh0Il0/IiZuZXh0PSIudXJsZW5jb2RlKCRfR0VUWyJuZXh0Il0pOiIiKToiIikpLiciPicuKCRFKzEpLiI8L2E+Iik7fWZ1bmN0aW9uCmdldF9maWxlKCR6LCRWYj1mYWxzZSl7JFhjPSRfRklMRVNbJHpdO2lmKCEkWGMpcmV0dXJuCm51bGw7Zm9yZWFjaCgkWGMKYXMkej0+JFgpJFhjWyR6XT0oYXJyYXkpJFg7JEk9Jyc7Zm9yZWFjaCgkWGNbImVycm9yIl1hcyR6PT4kbil7aWYoJG4pcmV0dXJuJG47JEQ9JFhjWyJuYW1lIl1bJHpdOyRsaT0kWGNbInRtcF9uYW1lIl1bJHpdOyRCYj1maWxlX2dldF9jb250ZW50cygkVmImJnByZWdfbWF0Y2goJ35cLmd6JH4nLCREKT8iY29tcHJlc3MuemxpYjovLyRsaSI6JGxpKTtpZigkVmIpeyRDaD1zdWJzdHIoJEJiLDAsMyk7aWYoZnVuY3Rpb25fZXhpc3RzKCJpY29udiIpJiZwcmVnX21hdGNoKCJ+Xlx4RkVceEZGfF5ceEZGXHhGRX4iLCRDaCwkR2cpKSRCYj1pY29udigidXRmLTE2IiwidXRmLTgiLCRCYik7ZWxzZWlmKCRDaD09Ilx4RUZceEJCXHhCRiIpJEJiPXN1YnN0cigkQmIsMyk7JEkuPSRCYi4iXG5cbiI7fWVsc2UkSS49JEJiO31yZXR1cm4kSTt9ZnVuY3Rpb24KdXBsb2FkX2Vycm9yKCRuKXskSGU9KCRuPT1VUExPQURfRVJSX0lOSV9TSVpFP2luaV9nZXQoInVwbG9hZF9tYXhfZmlsZXNpemUiKTowKTtyZXR1cm4oJG4/J1VuYWJsZSB0byB1cGxvYWQgYSBmaWxlLicuKCRIZT8iICIuc3ByaW50ZignTWF4aW11bSBhbGxvd2VkIGZpbGUgc2l6ZSBpcyAlc0IuJywkSGUpOiIiKTonRmlsZSBkb2VzIG5vdCBleGlzdC4nKTt9ZnVuY3Rpb24KcmVwZWF0X3BhdHRlcm4oJFpmLCR0ZSl7cmV0dXJuCnN0cl9yZXBlYXQoIiRaZnswLDY1NTM1fSIsJHRlLzY1NTM1KS4iJFpmezAsIi4oJHRlJTY1NTM1KS4ifSI7fWZ1bmN0aW9uCmlzX3V0ZjgoJFgpe3JldHVybihwcmVnX21hdGNoKCd+fnUnLCRYKSYmIXByZWdfbWF0Y2goJ35bXDAtXHg4XHhCXHhDXHhFLVx4MUZdficsJFgpKTt9ZnVuY3Rpb24Kc2hvcnRlbl91dGY4KCRQLCR0ZT04MCwkSmg9IiIpe2lmKCFwcmVnX21hdGNoKCIoXigiLnJlcGVhdF9wYXR0ZXJuKCJbXHRcclxuIC1ceHsxMEZGRkZ9XSIsJHRlKS4iKSgkKT8pdSIsJFAsJEMpKXByZWdfbWF0Y2goIiheKCIucmVwZWF0X3BhdHRlcm4oIltcdFxyXG4gLX5dIiwkdGUpLiIpKCQpPykiLCRQLCRDKTtyZXR1cm4KaCgkQ1sxXSkuJEpoLihpc3NldCgkQ1syXSk/IiI6IjxpPsODwqLDouKAmsKsw4LCpjwvaT4iKTt9ZnVuY3Rpb24KZm9ybWF0X251bWJlcigkWCl7cmV0dXJuCnN0cnRyKG51bWJlcl9mb3JtYXQoJFgsMCwiLiIsJywnKSxwcmVnX3NwbGl0KCd+fnUnLCcwMTIzNDU2Nzg5JywtMSxQUkVHX1NQTElUX05PX0VNUFRZKSk7fWZ1bmN0aW9uCmZyaWVuZGx5X3VybCgkWCl7cmV0dXJuCnByZWdfcmVwbGFjZSgnflteYS16MC05X11+aScsJy0nLCRYKTt9ZnVuY3Rpb24KaGlkZGVuX2ZpZWxkcygkcWcsJEhkPWFycmF5KCksJGlnPScnKXskST1mYWxzZTtmb3JlYWNoKCRxZwphcyR6PT4kWCl7aWYoIWluX2FycmF5KCR6LCRIZCkpe2lmKGlzX2FycmF5KCRYKSloaWRkZW5fZmllbGRzKCRYLGFycmF5KCksJHopO2Vsc2V7JEk9dHJ1ZTtlY2hvJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicuaCgkaWc/JGlnLiJbJHpdIjokeikuJyIgdmFsdWU9IicuaCgkWCkuJyI+Jzt9fX1yZXR1cm4kSTt9ZnVuY3Rpb24KaGlkZGVuX2ZpZWxkc19nZXQoKXtlY2hvKHNpZCgpPyc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInLnNlc3Npb25fbmFtZSgpLiciIHZhbHVlPSInLmgoc2Vzc2lvbl9pZCgpKS4nIj4nOicnKSwoU0VSVkVSIT09bnVsbD8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJy5EUklWRVIuJyIgdmFsdWU9IicuaChTRVJWRVIpLiciPic6IiIpLCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1c2VybmFtZSIgdmFsdWU9IicuaCgkX0dFVFsidXNlcm5hbWUiXSkuJyI+Jzt9ZnVuY3Rpb24KdGFibGVfc3RhdHVzMSgkUSwkU2M9ZmFsc2UpeyRJPXRhYmxlX3N0YXR1cygkUSwkU2MpO3JldHVybigkST8kSTphcnJheSgiTmFtZSI9PiRRKSk7fWZ1bmN0aW9uCmNvbHVtbl9mb3JlaWduX2tleXMoJFEpe2dsb2JhbCRiOyRJPWFycmF5KCk7Zm9yZWFjaCgkYi0+Zm9yZWlnbktleXMoJFEpYXMkcil7Zm9yZWFjaCgkclsic291cmNlIl1hcyRYKSRJWyRYXVtdPSRyO31yZXR1cm4kSTt9ZnVuY3Rpb24KZW51bV9pbnB1dCgkVCwkSGEsJG8sJFksJHhjPW51bGwpe2dsb2JhbCRiO3ByZWdfbWF0Y2hfYWxsKCJ+JygoPzpbXiddfCcnKSopJ34iLCRvWyJsZW5ndGgiXSwkQ2UpOyRJPSgkeGMhPT1udWxsPyI8bGFiZWw+PGlucHV0IHR5cGU9JyRUJyRIYSB2YWx1ZT0nJHhjJyIuKChpc19hcnJheSgkWSk/aW5fYXJyYXkoJHhjLCRZKTokWT09PTApPyIgY2hlY2tlZCI6IiIpLiI+PGk+Ii4nZW1wdHknLiI8L2k+PC9sYWJlbD4iOiIiKTtmb3JlYWNoKCRDZVsxXWFzJHQ9PiRYKXskWD1zdHJpcGNzbGFzaGVzKHN0cl9yZXBsYWNlKCInJyIsIiciLCRYKSk7JGNiPShpc19pbnQoJFkpPyRZPT0kdCsxOihpc19hcnJheSgkWSk/aW5fYXJyYXkoJHQrMSwkWSk6JFk9PT0kWCkpOyRJLj0iIDxsYWJlbD48aW5wdXQgdHlwZT0nJFQnJEhhIHZhbHVlPSciLigkdCsxKS4iJyIuKCRjYj8nIGNoZWNrZWQnOicnKS4nPicuaCgkYi0+ZWRpdFZhbCgkWCwkbykpLic8L2xhYmVsPic7fXJldHVybiRJO31mdW5jdGlvbgppbnB1dCgkbywkWSwkcyl7Z2xvYmFsJFUsJGIsJHk7JEQ9aChicmFja2V0X2VzY2FwZSgkb1siZmllbGQiXSkpO2VjaG8iPHRkIGNsYXNzPSdmdW5jdGlvbic+IjtpZihpc19hcnJheSgkWSkmJiEkcyl7JERhPWFycmF5KCRZKTtpZih2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sNS40KT49MCkkRGFbXT1KU09OX1BSRVRUWV9QUklOVDskWT1jYWxsX3VzZXJfZnVuY19hcnJheSgnanNvbl9lbmNvZGUnLCREYSk7JHM9Impzb24iO30kS2c9KCR5PT0ibXNzcWwiJiYkb1siYXV0b19pbmNyZW1lbnQiXSk7aWYoJEtnJiYhJF9QT1NUWyJzYXZlIl0pJHM9bnVsbDskbmQ9KGlzc2V0KCRfR0VUWyJzZWxlY3QiXSl8fCRLZz9hcnJheSgib3JpZyI9PidvcmlnaW5hbCcpOmFycmF5KCkpKyRiLT5lZGl0RnVuY3Rpb25zKCRvKTskSGE9IiBuYW1lPSdmaWVsZHNbJERdJyI7aWYoJG9bInR5cGUiXT09ImVudW0iKWVjaG8KaCgkbmRbIiJdKS4iPHRkPiIuJGItPmVkaXRJbnB1dCgkX0dFVFsiZWRpdCJdLCRvLCRIYSwkWSk7ZWxzZXskeGQ9KGluX2FycmF5KCRzLCRuZCl8fGlzc2V0KCRuZFskc10pKTtlY2hvKGNvdW50KCRuZCk+MT8iPHNlbGVjdCBuYW1lPSdmdW5jdGlvblskRF0nPiIub3B0aW9ubGlzdCgkbmQsJHM9PT1udWxsfHwkeGQ/JHM6IiIpLiI8L3NlbGVjdD4iLm9uX2hlbHAoImdldFRhcmdldChldmVudCkudmFsdWUucmVwbGFjZSgvXlNRTFwkLywgJycpIiwxKS5zY3JpcHQoInFzbCgnc2VsZWN0Jykub25jaGFuZ2UgPSBmdW5jdGlvbkNoYW5nZTsiLCIiKTpoKHJlc2V0KCRuZCkpKS4nPHRkPic7JFVkPSRiLT5lZGl0SW5wdXQoJF9HRVRbImVkaXQiXSwkbywkSGEsJFkpO2lmKCRVZCE9IiIpZWNobyRVZDtlbHNlaWYocHJlZ19tYXRjaCgnfmJvb2x+Jywkb1sidHlwZSJdKSllY2hvIjxpbnB1dCB0eXBlPSdoaWRkZW4nJEhhIHZhbHVlPScwJz4iLiI8aW5wdXQgdHlwZT0nY2hlY2tib3gnIi4ocHJlZ19tYXRjaCgnfl4oMXx0fHRydWV8eXx5ZXN8b24pJH5pJywkWSk/IiBjaGVja2VkPSdjaGVja2VkJyI6IiIpLiIkSGEgdmFsdWU9JzEnPiI7ZWxzZWlmKCRvWyJ0eXBlIl09PSJzZXQiKXtwcmVnX21hdGNoX2FsbCgificoKD86W14nXXwnJykqKSd+Iiwkb1sibGVuZ3RoIl0sJENlKTtmb3JlYWNoKCRDZVsxXWFzJHQ9PiRYKXskWD1zdHJpcGNzbGFzaGVzKHN0cl9yZXBsYWNlKCInJyIsIiciLCRYKSk7JGNiPShpc19pbnQoJFkpPygkWT4+JHQpJjE6aW5fYXJyYXkoJFgsZXhwbG9kZSgiLCIsJFkpLHRydWUpKTtlY2hvIiA8bGFiZWw+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBuYW1lPSdmaWVsZHNbJERdWyR0XScgdmFsdWU9JyIuKDE8PCR0KS4iJyIuKCRjYj8nIGNoZWNrZWQnOicnKS4iPiIuaCgkYi0+ZWRpdFZhbCgkWCwkbykpLic8L2xhYmVsPic7fX1lbHNlaWYocHJlZ19tYXRjaCgnfmJsb2J8Ynl0ZWF8cmF3fGZpbGV+Jywkb1sidHlwZSJdKSYmaW5pX2Jvb2woImZpbGVfdXBsb2FkcyIpKWVjaG8iPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J2ZpZWxkcy0kRCc+IjtlbHNlaWYoKCRiaT1wcmVnX21hdGNoKCd+dGV4dHxsb2J8bWVtb35pJywkb1sidHlwZSJdKSl8fHByZWdfbWF0Y2goIn5cbn4iLCRZKSl7aWYoJGJpJiYkeSE9InNxbGl0ZSIpJEhhLj0iIGNvbHM9JzUwJyByb3dzPScxMiciO2Vsc2V7JEs9bWluKDEyLHN1YnN0cl9jb3VudCgkWSwiXG4iKSsxKTskSGEuPSIgY29scz0nMzAnIHJvd3M9JyRLJyIuKCRLPT0xPyIgc3R5bGU9J2hlaWdodDogMS4yZW07JyI6IiIpO31lY2hvIjx0ZXh0YXJlYSRIYT4iLmgoJFkpLic8L3RleHRhcmVhPic7fWVsc2VpZigkcz09Impzb24ifHxwcmVnX21hdGNoKCd+Xmpzb25iPyR+Jywkb1sidHlwZSJdKSllY2hvIjx0ZXh0YXJlYSRIYSBjb2xzPSc1MCcgcm93cz0nMTInIGNsYXNzPSdqdXNoLWpzJz4iLmgoJFkpLic8L3RleHRhcmVhPic7ZWxzZXskSmU9KCFwcmVnX21hdGNoKCd+aW50ficsJG9bInR5cGUiXSkmJnByZWdfbWF0Y2goJ35eKFxkKykoLChcZCspKT8kficsJG9bImxlbmd0aCJdLCRDKT8oKHByZWdfbWF0Y2goIn5iaW5hcnl+Iiwkb1sidHlwZSJdKT8yOjEpKiRDWzFdKygkQ1szXT8xOjApKygkQ1syXSYmISRvWyJ1bnNpZ25lZCJdPzE6MCkpOigkVVskb1sidHlwZSJdXT8kVVskb1sidHlwZSJdXSsoJG9bInVuc2lnbmVkIl0/MDoxKTowKSk7aWYoJHk9PSdzcWwnJiZtaW5fdmVyc2lvbig1LjYpJiZwcmVnX21hdGNoKCd+dGltZX4nLCRvWyJ0eXBlIl0pKSRKZSs9NztlY2hvIjxpbnB1dCIuKCghJHhkfHwkcz09PSIiKSYmcHJlZ19tYXRjaCgnfig/PCFvKWludCg/IWVyKX4nLCRvWyJ0eXBlIl0pJiYhcHJlZ19tYXRjaCgnflxbXF1+Jywkb1siZnVsbF90eXBlIl0pPyIgdHlwZT0nbnVtYmVyJyI6IiIpLiIgdmFsdWU9JyIuaCgkWSkuIiciLigkSmU/IiBkYXRhLW1heGxlbmd0aD0nJEplJyI6IiIpLihwcmVnX21hdGNoKCd+Y2hhcnxiaW5hcnl+Jywkb1sidHlwZSJdKSYmJEplPjIwPyIgc2l6ZT0nNDAnIjoiIikuIiRIYT4iO31lY2hvJGItPmVkaXRIaW50KCRfR0VUWyJlZGl0Il0sJG8sJFkpOyRaYz0wO2ZvcmVhY2goJG5kCmFzJHo9PiRYKXtpZigkej09PSIifHwhJFgpYnJlYWs7JFpjKys7fWlmKCRaYyllY2hvCnNjcmlwdCgibWl4aW4ocXNsKCd0ZCcpLCB7b25jaGFuZ2U6IHBhcnRpYWwoc2tpcE9yaWdpbmFsLCAkWmMpLCBvbmlucHV0OiBmdW5jdGlvbiAoKSB7IHRoaXMub25jaGFuZ2UoKTsgfX0pOyIpO319ZnVuY3Rpb24KcHJvY2Vzc19pbnB1dCgkbyl7Z2xvYmFsJGIsJG07JHY9YnJhY2tldF9lc2NhcGUoJG9bImZpZWxkIl0pOyRzPSRfUE9TVFsiZnVuY3Rpb24iXVskdl07JFk9JF9QT1NUWyJmaWVsZHMiXVskdl07aWYoJG9bInR5cGUiXT09ImVudW0iKXtpZigkWT09LTEpcmV0dXJuCmZhbHNlO2lmKCRZPT0iIilyZXR1cm4iTlVMTCI7cmV0dXJuKyRZO31pZigkb1siYXV0b19pbmNyZW1lbnQiXSYmJFk9PSIiKXJldHVybgpudWxsO2lmKCRzPT0ib3JpZyIpcmV0dXJuKHByZWdfbWF0Y2goJ35eQ1VSUkVOVF9USU1FU1RBTVB+aScsJG9bIm9uX3VwZGF0ZSJdKT9pZGZfZXNjYXBlKCRvWyJmaWVsZCJdKTpmYWxzZSk7aWYoJHM9PSJOVUxMIilyZXR1cm4iTlVMTCI7aWYoJG9bInR5cGUiXT09InNldCIpcmV0dXJuCmFycmF5X3N1bSgoYXJyYXkpJFkpO2lmKCRzPT0ianNvbiIpeyRzPSIiOyRZPWpzb25fZGVjb2RlKCRZLHRydWUpO2lmKCFpc19hcnJheSgkWSkpcmV0dXJuCmZhbHNlO3JldHVybiRZO31pZihwcmVnX21hdGNoKCd+YmxvYnxieXRlYXxyYXd8ZmlsZX4nLCRvWyJ0eXBlIl0pJiZpbmlfYm9vbCgiZmlsZV91cGxvYWRzIikpeyRYYz1nZXRfZmlsZSgiZmllbGRzLSR2Iik7aWYoIWlzX3N0cmluZygkWGMpKXJldHVybgpmYWxzZTtyZXR1cm4kbS0+cXVvdGVCaW5hcnkoJFhjKTt9cmV0dXJuJGItPnByb2Nlc3NJbnB1dCgkbywkWSwkcyk7fWZ1bmN0aW9uCmZpZWxkc19mcm9tX2VkaXQoKXtnbG9iYWwkbTskST1hcnJheSgpO2ZvcmVhY2goKGFycmF5KSRfUE9TVFsiZmllbGRfa2V5cyJdYXMkej0+JFgpe2lmKCRYIT0iIil7JFg9YnJhY2tldF9lc2NhcGUoJFgpOyRfUE9TVFsiZnVuY3Rpb24iXVskWF09JF9QT1NUWyJmaWVsZF9mdW5zIl1bJHpdOyRfUE9TVFsiZmllbGRzIl1bJFhdPSRfUE9TVFsiZmllbGRfdmFscyJdWyR6XTt9fWZvcmVhY2goKGFycmF5KSRfUE9TVFsiZmllbGRzIl1hcyR6PT4kWCl7JEQ9YnJhY2tldF9lc2NhcGUoJHosMSk7JElbJERdPWFycmF5KCJmaWVsZCI9PiRELCJwcml2aWxlZ2VzIj0+YXJyYXkoImluc2VydCI9PjEsInVwZGF0ZSI9PjEpLCJudWxsIj0+MSwiYXV0b19pbmNyZW1lbnQiPT4oJHo9PSRtLT5wcmltYXJ5KSwpO31yZXR1cm4kSTt9ZnVuY3Rpb24Kc2VhcmNoX3RhYmxlcygpe2dsb2JhbCRiLCRnOyRfR0VUWyJ3aGVyZSJdWzBdWyJ2YWwiXT0kX1BPU1RbInF1ZXJ5Il07JGdoPSI8dWw+XG4iO2ZvcmVhY2godGFibGVfc3RhdHVzKCcnLHRydWUpYXMkUT0+JFIpeyREPSRiLT50YWJsZU5hbWUoJFIpO2lmKGlzc2V0KCRSWyJFbmdpbmUiXSkmJiREIT0iIiYmKCEkX1BPU1RbInRhYmxlcyJdfHxpbl9hcnJheSgkUSwkX1BPU1RbInRhYmxlcyJdKSkpeyRIPSRnLT5xdWVyeSgiU0VMRUNUIi5saW1pdCgiMSBGUk9NICIudGFibGUoJFEpLCIgV0hFUkUgIi5pbXBsb2RlKCIgQU5EICIsJGItPnNlbGVjdFNlYXJjaFByb2Nlc3MoZmllbGRzKCRRKSxhcnJheSgpKSksMSkpO2lmKCEkSHx8JEgtPmZldGNoX3JvdygpKXskbWc9IjxhIGhyZWY9JyIuaChNRS4ic2VsZWN0PSIudXJsZW5jb2RlKCRRKS4iJndoZXJlWzBdW29wXT0iLnVybGVuY29kZSgkX0dFVFsid2hlcmUiXVswXVsib3AiXSkuIiZ3aGVyZVswXVt2YWxdPSIudXJsZW5jb2RlKCRfR0VUWyJ3aGVyZSJdWzBdWyJ2YWwiXSkpLiInPiREPC9hPiI7ZWNobyIkZ2g8bGk+Ii4oJEg/JG1nOiI8cCBjbGFzcz0nZXJyb3InPiRtZzogIi5lcnJvcigpKS4iXG4iOyRnaD0iIjt9fX1lY2hvKCRnaD8iPHAgY2xhc3M9J21lc3NhZ2UnPiIuJ05vIHRhYmxlcy4nOiI8L3VsPiIpLiJcbiI7fWZ1bmN0aW9uCmR1bXBfaGVhZGVycygkRmQsJFNlPWZhbHNlKXtnbG9iYWwkYjskST0kYi0+ZHVtcEhlYWRlcnMoJEZkLCRTZSk7JEpmPSRfUE9TVFsib3V0cHV0Il07aWYoJEpmIT0idGV4dCIpaGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iLiRiLT5kdW1wRmlsZW5hbWUoJEZkKS4iLiRJIi4oJEpmIT0iZmlsZSImJnByZWdfbWF0Y2goJ35eWzAtOWEtel0rJH4nLCRKZik/Ii4kSmYiOiIiKSk7c2Vzc2lvbl93cml0ZV9jbG9zZSgpO29iX2ZsdXNoKCk7Zmx1c2goKTtyZXR1cm4kSTt9ZnVuY3Rpb24KZHVtcF9jc3YoJEope2ZvcmVhY2goJEoKYXMkej0+JFgpe2lmKHByZWdfbWF0Y2goJ35bIlxuLDtcdF18XjB8XC5cZCowJH4nLCRYKXx8JFg9PT0iIikkSlskel09JyInLnN0cl9yZXBsYWNlKCciJywnIiInLCRYKS4nIic7fWVjaG8KaW1wbG9kZSgoJF9QT1NUWyJmb3JtYXQiXT09ImNzdiI/IiwiOigkX1BPU1RbImZvcm1hdCJdPT0idHN2Ij8iXHQiOiI7IikpLCRKKS4iXHJcbiI7fWZ1bmN0aW9uCmFwcGx5X3NxbF9mdW5jdGlvbigkcywkZSl7cmV0dXJuKCRzPygkcz09InVuaXhlcG9jaCI/IkRBVEVUSU1FKCRlLCAnJHMnKSI6KCRzPT0iY291bnQgZGlzdGluY3QiPyJDT1VOVChESVNUSU5DVCAiOnN0cnRvdXBwZXIoIiRzKCIpKS4iJGUpIik6JGUpO31mdW5jdGlvbgpnZXRfdGVtcF9kaXIoKXskST1pbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpO2lmKCEkSSl7aWYoZnVuY3Rpb25fZXhpc3RzKCdzeXNfZ2V0X3RlbXBfZGlyJykpJEk9c3lzX2dldF90ZW1wX2RpcigpO2Vsc2V7JHE9QHRlbXBuYW0oIiIsIiIpO2lmKCEkcSlyZXR1cm4KZmFsc2U7JEk9ZGlybmFtZSgkcSk7dW5saW5rKCRxKTt9fXJldHVybiRJO31mdW5jdGlvbgpmaWxlX29wZW5fbG9jaygkcSl7JGxkPUBmb3BlbigkcSwicisiKTtpZighJGxkKXskbGQ9QGZvcGVuKCRxLCJ3Iik7aWYoISRsZClyZXR1cm47Y2htb2QoJHEsMDY2MCk7fWZsb2NrKCRsZCxMT0NLX0VYKTtyZXR1cm4kbGQ7fWZ1bmN0aW9uCmZpbGVfd3JpdGVfdW5sb2NrKCRsZCwkUGIpe3Jld2luZCgkbGQpO2Z3cml0ZSgkbGQsJFBiKTtmdHJ1bmNhdGUoJGxkLHN0cmxlbigkUGIpKTtmbG9jaygkbGQsTE9DS19VTik7ZmNsb3NlKCRsZCk7fWZ1bmN0aW9uCnBhc3N3b3JkX2ZpbGUoJGkpeyRxPWdldF90ZW1wX2RpcigpLiIvYWRtaW5lci5rZXkiOyRJPUBmaWxlX2dldF9jb250ZW50cygkcSk7aWYoJEl8fCEkaSlyZXR1cm4kSTskbGQ9QGZvcGVuKCRxLCJ3Iik7aWYoJGxkKXtjaG1vZCgkcSwwNjYwKTskST1yYW5kX3N0cmluZygpO2Z3cml0ZSgkbGQsJEkpO2ZjbG9zZSgkbGQpO31yZXR1cm4kSTt9ZnVuY3Rpb24KcmFuZF9zdHJpbmcoKXtyZXR1cm4KbWQ1KHVuaXFpZChtdF9yYW5kKCksdHJ1ZSkpO31mdW5jdGlvbgpzZWxlY3RfdmFsdWUoJFgsJEEsJG8sJGNpKXtnbG9iYWwkYjtpZihpc19hcnJheSgkWCkpeyRJPSIiO2ZvcmVhY2goJFgKYXMkZmU9PiRXKSRJLj0iPHRyPiIuKCRYIT1hcnJheV92YWx1ZXMoJFgpPyI8dGg+Ii5oKCRmZSk6IiIpLiI8dGQ+Ii5zZWxlY3RfdmFsdWUoJFcsJEEsJG8sJGNpKTtyZXR1cm4iPHRhYmxlIGNlbGxzcGFjaW5nPScwJz4kSTwvdGFibGU+Ijt9aWYoISRBKSRBPSRiLT5zZWxlY3RMaW5rKCRYLCRvKTtpZigkQT09PW51bGwpe2lmKGlzX21haWwoJFgpKSRBPSJtYWlsdG86JFgiO2lmKGlzX3VybCgkWCkpJEE9JFg7fSRJPSRiLT5lZGl0VmFsKCRYLCRvKTtpZigkSSE9PW51bGwpe2lmKCFpc191dGY4KCRJKSkkST0iXDAiO2Vsc2VpZigkY2khPSIiJiZpc19zaG9ydGFibGUoJG8pKSRJPXNob3J0ZW5fdXRmOCgkSSxtYXgoMCwrJGNpKSk7ZWxzZSRJPWgoJEkpO31yZXR1cm4kYi0+c2VsZWN0VmFsKCRJLCRBLCRvLCRYKTt9ZnVuY3Rpb24KaXNfbWFpbCgkdWMpeyRHYT0nWy1hLXowLTkhIyQlJlwnKisvPT9eX2B7fH1+XSc7JGhjPSdbYS16MC05XShbLWEtejAtOV17MCw2MX1bYS16MC05XSknOyRaZj0iJEdhKyhcXC4kR2ErKSpAKCRoYz9cXC4pKyRoYyI7cmV0dXJuCmlzX3N0cmluZygkdWMpJiZwcmVnX21hdGNoKCIoXiRaZigsXFxzKiRaZikqXCQpaSIsJHVjKTt9ZnVuY3Rpb24KaXNfdXJsKCRQKXskaGM9J1thLXowLTldKFstYS16MC05XXswLDYxfVthLXowLTldKSc7cmV0dXJuCnByZWdfbWF0Y2goIn5eKGh0dHBzPyk6Ly8oJGhjP1xcLikrJGhjKDpcXGQrKT8oLy4qKT8oXFw/LiopPygjLiopP1wkfmkiLCRQKTt9ZnVuY3Rpb24KaXNfc2hvcnRhYmxlKCRvKXtyZXR1cm4KcHJlZ19tYXRjaCgnfmNoYXJ8dGV4dHxqc29ufGxvYnxnZW9tZXRyeXxwb2ludHxsaW5lc3RyaW5nfHBvbHlnb258c3RyaW5nfGJ5dGVhficsJG9bInR5cGUiXSk7fWZ1bmN0aW9uCmNvdW50X3Jvd3MoJFEsJFosJGFlLCRxZCl7Z2xvYmFsJHk7JEc9IiBGUk9NICIudGFibGUoJFEpLigkWj8iIFdIRVJFICIuaW1wbG9kZSgiIEFORCAiLCRaKToiIik7cmV0dXJuKCRhZSYmKCR5PT0ic3FsInx8Y291bnQoJHFkKT09MSk/IlNFTEVDVCBDT1VOVChESVNUSU5DVCAiLmltcGxvZGUoIiwgIiwkcWQpLiIpJEciOiJTRUxFQ1QgQ09VTlQoKikiLigkYWU/IiBGUk9NIChTRUxFQ1QgMSRHIEdST1VQIEJZICIuaW1wbG9kZSgiLCAiLCRxZCkuIikgeCI6JEcpKTt9ZnVuY3Rpb24Kc2xvd19xdWVyeSgkRyl7Z2xvYmFsJGIsJG5pLCRtOyRsPSRiLT5kYXRhYmFzZSgpOyRlaT0kYi0+cXVlcnlUaW1lb3V0KCk7JHNoPSRtLT5zbG93UXVlcnkoJEcsJGVpKTtpZighJHNoJiZzdXBwb3J0KCJraWxsIikmJmlzX29iamVjdCgkaD1jb25uZWN0KCkpJiYoJGw9PSIifHwkaC0+c2VsZWN0X2RiKCRsKSkpeyRpZT0kaC0+cmVzdWx0KGNvbm5lY3Rpb25faWQoKSk7ZWNobyc8c2NyaXB0Jyxub25jZSgpLCc+CnZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CglhamF4KFwnJyxqc19lc2NhcGUoTUUpLCdzY3JpcHQ9a2lsbFwnLCBmdW5jdGlvbiAoKSB7Cgl9LCBcJ2tpbGw9JywkaWUsJyZ0b2tlbj0nLCRuaSwnXCcpOwp9LCAnLDEwMDAqJGVpLCcpOwo8L3NjcmlwdD4KJzt9ZWxzZSRoPW51bGw7b2JfZmx1c2goKTtmbHVzaCgpOyRJPUBnZXRfa2V5X3ZhbHMoKCRzaD8kc2g6JEcpLCRoLGZhbHNlKTtpZigkaCl7ZWNobwpzY3JpcHQoImNsZWFyVGltZW91dCh0aW1lb3V0KTsiKTtvYl9mbHVzaCgpO2ZsdXNoKCk7fXJldHVybiRJO31mdW5jdGlvbgpnZXRfdG9rZW4oKXskeWc9cmFuZCgxLDFlNik7cmV0dXJuKCR5Z14kX1NFU1NJT05bInRva2VuIl0pLiI6JHlnIjt9ZnVuY3Rpb24KdmVyaWZ5X3Rva2VuKCl7bGlzdCgkbmksJHlnKT1leHBsb2RlKCI6IiwkX1BPU1RbInRva2VuIl0pO3JldHVybigkeWdeJF9TRVNTSU9OWyJ0b2tlbiJdKT09JG5pO31mdW5jdGlvbgpsendfZGVjb21wcmVzcygkUWEpeyRlYz0yNTY7JFJhPTg7JGliPWFycmF5KCk7JE1nPTA7JE5nPTA7Zm9yKCR0PTA7JHQ8c3RybGVuKCRRYSk7JHQrKyl7JE1nPSgkTWc8PDgpK29yZCgkUWFbJHRdKTskTmcrPTg7aWYoJE5nPj0kUmEpeyROZy09JFJhOyRpYltdPSRNZz4+JE5nOyRNZyY9KDE8PCROZyktMTskZWMrKztpZigkZWM+PiRSYSkkUmErKzt9fSRkYz1yYW5nZSgiXDAiLCJceEZGIik7JEk9IiI7Zm9yZWFjaCgkaWIKYXMkdD0+JGhiKXskdGM9JGRjWyRoYl07aWYoIWlzc2V0KCR0YykpJHRjPSRrai4ka2pbMF07JEkuPSR0YztpZigkdCkkZGNbXT0ka2ouJHRjWzBdOyRraj0kdGM7fXJldHVybiRJO31mdW5jdGlvbgpvbl9oZWxwKCRwYiwkcGg9MCl7cmV0dXJuCnNjcmlwdCgibWl4aW4ocXNsKCdzZWxlY3QsIGlucHV0JyksIHtvbm1vdXNlb3ZlcjogZnVuY3Rpb24gKGV2ZW50KSB7IGhlbHBNb3VzZW92ZXIuY2FsbCh0aGlzLCBldmVudCwgJHBiLCAkcGgpIH0sIG9ubW91c2VvdXQ6IGhlbHBNb3VzZW91dH0pOyIsIiIpO31mdW5jdGlvbgplZGl0X2Zvcm0oJFEsJHAsJEosJElpKXtnbG9iYWwkYiwkeSwkbmksJG47JE9oPSRiLT50YWJsZU5hbWUodGFibGVfc3RhdHVzMSgkUSx0cnVlKSk7cGFnZV9oZWFkZXIoKCRJaT8nRWRpdCc6J0luc2VydCcpLCRuLGFycmF5KCJzZWxlY3QiPT5hcnJheSgkUSwkT2gpKSwkT2gpOyRiLT5lZGl0Um93UHJpbnQoJFEsJHAsJEosJElpKTtpZigkSj09PWZhbHNlKWVjaG8iPHAgY2xhc3M9J2Vycm9yJz4iLidObyByb3dzLicuIlxuIjtlY2hvJzxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGlkPSJmb3JtIj4KJztpZighJHApZWNobyI8cCBjbGFzcz0nZXJyb3InPiIuJ1lvdSBoYXZlIG5vIHByaXZpbGVnZXMgdG8gdXBkYXRlIHRoaXMgdGFibGUuJy4iXG4iO2Vsc2V7ZWNobyI8dGFibGUgY2VsbHNwYWNpbmc9JzAnIGNsYXNzPSdsYXlvdXQnPiIuc2NyaXB0KCJxc2woJ3RhYmxlJykub25rZXlkb3duID0gZWRpdGluZ0tleWRvd247Iik7Zm9yZWFjaCgkcAphcyREPT4kbyl7ZWNobyI8dHI+PHRoPiIuJGItPmZpZWxkTmFtZSgkbyk7JFdiPSRfR0VUWyJzZXQiXVticmFja2V0X2VzY2FwZSgkRCldO2lmKCRXYj09PW51bGwpeyRXYj0kb1siZGVmYXVsdCJdO2lmKCRvWyJ0eXBlIl09PSJiaXQiJiZwcmVnX21hdGNoKCJ+XmInKFswMV0qKSdcJH4iLCRXYiwkR2cpKSRXYj0kR2dbMV07fSRZPSgkSiE9PW51bGw/KCRKWyREXSE9IiImJiR5PT0ic3FsIiYmcHJlZ19tYXRjaCgifmVudW18c2V0fiIsJG9bInR5cGUiXSk/KGlzX2FycmF5KCRKWyREXSk/YXJyYXlfc3VtKCRKWyREXSk6KyRKWyREXSk6KGlzX2Jvb2woJEpbJERdKT8rJEpbJERdOiRKWyREXSkpOighJElpJiYkb1siYXV0b19pbmNyZW1lbnQiXT8iIjooaXNzZXQoJF9HRVRbInNlbGVjdCJdKT9mYWxzZTokV2IpKSk7aWYoISRfUE9TVFsic2F2ZSJdJiZpc19zdHJpbmcoJFkpKSRZPSRiLT5lZGl0VmFsKCRZLCRvKTskcz0oJF9QT1NUWyJzYXZlIl0/KHN0cmluZykkX1BPU1RbImZ1bmN0aW9uIl1bJERdOigkSWkmJnByZWdfbWF0Y2goJ35eQ1VSUkVOVF9USU1FU1RBTVB+aScsJG9bIm9uX3VwZGF0ZSJdKT8ibm93IjooJFk9PT1mYWxzZT9udWxsOigkWSE9PW51bGw/Jyc6J05VTEwnKSkpKTtpZighJF9QT1NUJiYhJElpJiYkWT09JG9bImRlZmF1bHQiXSYmcHJlZ19tYXRjaCgnfl5bXHcuXStcKH4nLCRZKSkkcz0iU1FMIjtpZihwcmVnX21hdGNoKCJ+dGltZX4iLCRvWyJ0eXBlIl0pJiZwcmVnX21hdGNoKCd+XkNVUlJFTlRfVElNRVNUQU1QfmknLCRZKSl7JFk9IiI7JHM9Im5vdyI7fWlucHV0KCRvLCRZLCRzKTtlY2hvIlxuIjt9aWYoIXN1cHBvcnQoInRhYmxlIikpZWNobyI8dHI+Ii4iPHRoPjxpbnB1dCBuYW1lPSdmaWVsZF9rZXlzW10nPiIuc2NyaXB0KCJxc2woJ2lucHV0Jykub25pbnB1dCA9IGZpZWxkQ2hhbmdlOyIpLiI8dGQgY2xhc3M9J2Z1bmN0aW9uJz4iLmh0bWxfc2VsZWN0KCJmaWVsZF9mdW5zW10iLCRiLT5lZGl0RnVuY3Rpb25zKGFycmF5KCJudWxsIj0+aXNzZXQoJF9HRVRbInNlbGVjdCJdKSkpKS4iPHRkPjxpbnB1dCBuYW1lPSdmaWVsZF92YWxzW10nPiIuIlxuIjtlY2hvIjwvdGFibGU+XG4iO31lY2hvIjxwPlxuIjtpZigkcCl7ZWNobyI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIi4nU2F2ZScuIic+XG4iO2lmKCFpc3NldCgkX0dFVFsic2VsZWN0Il0pKXtlY2hvIjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2luc2VydCcgdmFsdWU9JyIuKCRJaT8nU2F2ZSBhbmQgY29udGludWUgZWRpdCc6J1NhdmUgYW5kIGluc2VydCBuZXh0JykuIicgdGl0bGU9J0N0cmwrU2hpZnQrRW50ZXInPlxuIiwoJElpP3NjcmlwdCgicXNsKCdpbnB1dCcpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAhYWpheEZvcm0odGhpcy5mb3JtLCAnIi4nU2F2aW5nJy4iw4PCosOi4oCawqzDgsKmJywgdGhpcyk7IH07Iik6IiIpO319ZWNobygkSWk/IjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2RlbGV0ZScgdmFsdWU9JyIuJ0RlbGV0ZScuIic+Ii5jb25maXJtKCkuIlxuIjooJF9QT1NUfHwhJHA/IiI6c2NyaXB0KCJmb2N1cyhxc2EoJ3RkJywgcXMoJyNmb3JtJykpWzFdLmZpcnN0Q2hpbGQpOyIpKSk7aWYoaXNzZXQoJF9HRVRbInNlbGVjdCJdKSloaWRkZW5fZmllbGRzKGFycmF5KCJjaGVjayI9PihhcnJheSkkX1BPU1RbImNoZWNrIl0sImNsb25lIj0+JF9QT1NUWyJjbG9uZSJdLCJhbGwiPT4kX1BPU1RbImFsbCJdKSk7ZWNobyc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcmVyIiB2YWx1ZT0iJyxoKGlzc2V0KCRfUE9TVFsicmVmZXJlciJdKT8kX1BPU1RbInJlZmVyZXIiXTokX1NFUlZFUlsiSFRUUF9SRUZFUkVSIl0pLCciPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzYXZlIiB2YWx1ZT0iMSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRva2VuIiB2YWx1ZT0iJywkbmksJyI+CjwvZm9ybT4KJzt9aWYoaXNzZXQoJF9HRVRbImZpbGUiXSkpe2lmKCRfU0VSVkVSWyJIVFRQX0lGX01PRElGSUVEX1NJTkNFIl0pe2hlYWRl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vlxcw4LCosOD4oChTCbDg+KEosOF4oCcHcOD4oCgw4LCtsOi4oKswqJcMMOD4oChw4PCshwXXDA7IjticmVhaztjYXNlImFycm93LmdpZiI6ZWNobyJHSUY4OWEIXDBcblwww6LigJrCrFwwXDDDouKAmsKsw6LigJrCrMOi4oCawqzDg8K/w4PCv8ODwr8hw4PCuQQBXDBcMAFcMCxcMFwwXDBcMAhcMFxuXDBcMAIPBMOi4oKsxaFpw6LigqzigJzDgsKxw6LigqzCucOFwr7DouKCrMKdEcOCwqrDg+KAnMOCwrLDg8W+w4LCu1wwXDA7IjticmVhazt9fWV4aXQ7fWlmKCRfR0VUWyJzY3JpcHQiXT09InZlcnNpb24iKXskbGQ9ZmlsZV9vcGVuX2xvY2soZ2V0X3RlbXBfZGlyKCkuIi9hZG1pbmVyLnZlcnNpb24iKTtpZigkbGQpZmlsZV93cml0ZV91bmxvY2soJGxkLHNlcmlhbGl6ZShhcnJheSgic2lnbmF0dXJlIj0+JF9QT1NUWyJzaWduYXR1cmUiXSwidmVyc2lvbiI9PiRfUE9TVFsidmVyc2lvbiJdKSkpO2V4aXQ7fWdsb2JhbCRiLCRnLCRtLCRpYywkcWMsJF9jLCRuLCRuZCwkdGQsJGJhLCRUZCwkeSwkY2EsJG1lLCRwZiwkYmcsJEdoLCR5ZCwkbmksJHRpLCRVLCRIaSwkaWE7aWYoISRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdKSRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdPSRfU0VSVkVSWyJPUklHX1BBVEhfSU5GTyJdO2lmKCFzdHJwb3MoJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0sJz8nKSYmJF9TRVJWRVJbIlFVRVJZX1NUUklORyJdIT0iIikkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXS49Ij8kX1NFUlZFUltRVUVSWV9TVFJJTkddIjtpZigkX1NFUlZFUlsiSFRUUF9YX0ZPUldBUkRFRF9QUkVGSVgiXSkkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXT0kX1NFUlZFUlsiSFRUUF9YX0ZPUldBUkRFRF9QUkVGSVgiXS4kX1NFUlZFUlsiUkVRVUVTVF9VUkkiXTskYmE9KCRfU0VSVkVSWyJIVFRQUyJdJiZzdHJjYXNlY21wKCRfU0VSVkVSWyJIVFRQUyJdLCJvZmYiKSl8fGluaV9ib29sKCJzZXNzaW9uLmNvb2tpZV9zZWN1cmUiKTtAaW5pX3NldCgic2Vzc2lvbi51c2VfdHJhbnNfc2lkIixmYWxzZSk7aWYoIWRlZmluZWQoIlNJRCIpKXtzZXNzaW9uX2NhY2hlX2xpbWl0ZXIoIiIpO3Nlc3Npb25fbmFtZSgiYWRtaW5lcl9zaWQiKTskT2Y9YXJyYXkoMCxwcmVnX3JlcGxhY2UoJ35cPy4qficsJycsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pLCIiLCRiYSk7aWYodmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCc1LjIuMCcpPj0wKSRPZltdPXRydWU7Y2FsbF91c2VyX2Z1bmNfYXJyYXkoJ3Nlc3Npb25fc2V0X2Nvb2tpZV9wYXJhbXMnLCRPZik7c2Vzc2lvbl9zdGFydCgpO31yZW1vdmVfc2xhc2hlcyhhcnJheSgmJF9HRVQsJiRfUE9TVCwmJF9DT09LSUUpLCRZYyk7aWYoZnVuY3Rpb25fZXhpc3RzKCJnZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUiKSYmZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKCkpc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKGZhbHNlKTtAc2V0X3RpbWVfbGltaXQoMCk7QGluaV9zZXQoInplbmQuemUxX2NvbXBhdGliaWxpdHlfbW9kZSIsZmFsc2UpO0Bpbmlfc2V0KCJwcmVjaXNpb24iLDE1KTtmdW5jdGlvbgpnZXRfbGFuZygpe3JldHVybidlbic7fWZ1bmN0aW9uCmxhbmcoJHNpLCRlZj1udWxsKXtpZihpc19hcnJheSgkc2kpKXskZWc9KCRlZj09MT8wOjEpOyRzaT0kc2lbJGVnXTt9JHNpPXN0cl9yZXBsYWNlKCIlZCIsIiVzIiwkc2kpOyRlZj1mb3JtYXRfbnVtYmVyKCRlZik7cmV0dXJuCnNwcmludGYoJHNpLCRlZik7fWlmKGV4dGVuc2lvbl9sb2FkZWQoJ3BkbycpKXtjbGFzcwpNaW5fUERPe3ZhciRfcmVzdWx0LCRzZXJ2ZXJfaW5mbywkYWZmZWN0ZWRfcm93cywkZXJybm8sJGVycm9yLCRwZG87ZnVuY3Rpb24KX19jb25zdHJ1Y3QoKXtnbG9iYWwkYjskZWc9YXJyYXlfc2VhcmNoKCJTUUwiLCRiLT5vcGVyYXRvcnMpO2lmKCRlZyE9PWZhbHNlKXVuc2V0KCRiLT5vcGVyYXRvcnNbJGVnXSk7fWZ1bmN0aW9uCmRzbigkbmMsJFYsJEYsJHhmPWFycmF5KCkpeyR4ZltQRE86OkFUVFJfRVJSTU9ERV09UERPOjpFUlJNT0RFX1NJTEVOVDskeGZbUERPOjpBVFRSX1NUQVRFTUVOVF9DTEFTU109YXJyYXkoJ01pbl9QRE9TdGF0ZW1lbnQnKTt0cnl7JHRoaXMtPnBkbz1uZXcKUERPKCRuYywkViwkRiwkeGYpO31jYXRjaChFeGNlcHRpb24kRmMpe2F1dGhfZXJyb3IoaCgkRmMtPmdldE1lc3NhZ2UoKSkpO30kdGhpcy0+c2VydmVyX2luZm89QCR0aGlzLT5wZG8tPmdldEF0dHJpYnV0ZShQRE86OkFUVFJfU0VSVkVSX1ZFUlNJT04pO31mdW5jdGlvbgpxdW90ZSgkUCl7cmV0dXJuJHRoaXMtPnBkby0+cXVvdGUoJFApO31mdW5jdGlvbgpxdWVyeSgkRywkQmk9ZmFsc2UpeyRIPSR0aGlzLT5wZG8tPnF1ZXJ5KCRHKTskdGhpcy0+ZXJyb3I9IiI7aWYoISRIKXtsaXN0KCwkdGhpcy0+ZXJybm8sJHRoaXMtPmVycm9yKT0kdGhpcy0+cGRvLT5lcnJvckluZm8oKTtpZighJHRoaXMtPmVycm9yKSR0aGlzLT5lcnJvcj0nVW5rbm93biBlcnJvci4nO3JldHVybgpmYWxzZTt9JHRoaXMtPnN0b3JlX3Jlc3VsdCgkSCk7cmV0dXJuJEg7fWZ1bmN0aW9uCm11bHRpX3F1ZXJ5KCRHKXtyZXR1cm4kdGhpcy0+X3Jlc3VsdD0kdGhpcy0+cXVlcnkoJEcpO31mdW5jdGlvbgpzdG9yZV9yZXN1bHQoJEg9bnVsbCl7aWYoISRIKXskSD0kdGhpcy0+X3Jlc3VsdDtpZighJEgpcmV0dXJuCmZhbHNlO31pZigkSC0+Y29sdW1uQ291bnQoKSl7JEgtPm51bV9yb3dzPSRILT5yb3dDb3VudCgpO3JldHVybiRIO30kdGhpcy0+YWZmZWN0ZWRfcm93cz0kSC0+cm93Q291bnQoKTtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KbmV4dF9yZXN1bHQoKXtpZighJHRoaXMtPl9yZXN1bHQpcmV0dXJuCmZhbHNlOyR0aGlzLT5fcmVzdWx0LT5fb2Zmc2V0PTA7cmV0dXJuQCR0aGlzLT5fcmVzdWx0LT5uZXh0Um93c2V0KCk7fWZ1bmN0aW9uCnJlc3VsdCgkRywkbz0wKXskSD0kdGhpcy0+cXVlcnkoJEcpO2lmKCEkSClyZXR1cm4KZmFsc2U7JEo9JEgtPmZldGNoKCk7cmV0dXJuJEpbJG9dO319Y2xhc3MKTWluX1BET1N0YXRlbWVudApleHRlbmRzClBET1N0YXRlbWVudHt2YXIkX29mZnNldD0wLCRudW1fcm93cztmdW5jdGlvbgpmZXRjaF9hc3NvYygpe3JldHVybiR0aGlzLT5mZXRjaChQRE86OkZFVENIX0FTU09DKTt9ZnVuY3Rpb24KZmV0Y2hfcm93KCl7cmV0dXJuJHRoaXMtPmZldGNoKFBETzo6RkVUQ0hfTlVNKTt9ZnVuY3Rpb24KZmV0Y2hfZmllbGQoKXskSj0ob2JqZWN0KSR0aGlzLT5nZXRDb2x1bW5NZXRhKCR0aGlzLT5fb2Zmc2V0KyspOyRKLT5vcmd0YWJsZT0kSi0+dGFibGU7JEotPm9yZ25hbWU9JEotPm5hbWU7JEotPmNoYXJzZXRucj0oaW5fYXJyYXkoImJsb2IiLChhcnJheSkkSi0+ZmxhZ3MpPzYzOjApO3JldHVybiRKO319fSRpYz1hcnJheSgpO2Z1bmN0aW9uCmFkZF9kcml2ZXIoJHUsJEQpe2dsb2JhbCRpYzskaWNbJHVdPSREO31jbGFzcwpNaW5fU1FMe3ZhciRfY29ubjtmdW5jdGlvbgpfX2NvbnN0cnVjdCgkZyl7JHRoaXMtPl9jb25uPSRnO31mdW5jdGlvbgpzZWxlY3QoJFEsJEwsJFosJHFkLCR6Zj1hcnJheSgpLCRfPTEsJEU9MCwkbWc9ZmFsc2Upe2dsb2JhbCRiLCR5OyRhZT0oY291bnQoJHFkKTxjb3VudCgkTCkpOyRHPSRiLT5zZWxlY3RRdWVyeUJ1aWxkKCRMLCRaLCRxZCwkemYsJF8sJEUpO2lmKCEkRykkRz0iU0VMRUNUIi5saW1pdCgoJF9HRVRbInBhZ2UiXSE9Imxhc3QiJiYkXyE9IiImJiRxZCYmJGFlJiYkeT09InNxbCI/IlNRTF9DQUxDX0ZPVU5EX1JPV1MgIjoiIikuaW1wbG9kZSgiLCAiLCRMKS4iXG5GUk9NICIudGFibGUoJFEpLCgkWj8iXG5XSEVSRSAiLmltcGxvZGUoIiBBTkQgIiwkWik6IiIpLigkcWQmJiRhZT8iXG5HUk9VUCBCWSAiLmltcGxvZGUoIiwgIiwkcWQpOiIiKS4oJHpmPyJcbk9SREVSIEJZICIuaW1wbG9kZSgiLCAiLCR6Zik6IiIpLCgkXyE9IiI/KyRfOm51bGwpLCgkRT8kXyokRTowKSwiXG4iKTskQ2g9bWljcm90aW1lKHRydWUpOyRJPSR0aGlzLT5fY29ubi0+cXVlcnkoJEcpO2lmKCRtZyllY2hvJGItPnNlbGVjdFF1ZXJ5KCRHLCRDaCwhJEkpO3JldHVybiRJO31mdW5jdGlvbgpkZWxldGUoJFEsJHdnLCRfPTApeyRHPSJGUk9NICIudGFibGUoJFEpO3JldHVybgpxdWVyaWVzKCJERUxFVEUiLigkXz9saW1pdDEoJFEsJEcsJHdnKToiICRHJHdnIikpO31mdW5jdGlvbgp1cGRhdGUoJFEsJE4sJHdnLCRfPTAsJGhoPSJcbiIpeyRUaT1hcnJheSgpO2ZvcmVhY2goJE4KYXMkej0+JFgpJFRpW109IiR6ID0gJFgiOyRHPXRhYmxlKCRRKS4iIFNFVCRoaCIuaW1wbG9kZSgiLCRoaCIsJFRpKTtyZXR1cm4KcXVlcmllcygiVVBEQVRFIi4oJF8/bGltaXQxKCRRLCRHLCR3ZywkaGgpOiIgJEckd2ciKSk7fWZ1bmN0aW9uCmluc2VydCgkUSwkTil7cmV0dXJuCnF1ZXJpZXMoIklOU0VSVCBJTlRPICIudGFibGUoJFEpLigkTj8iICgiLmltcGxvZGUoIiwgIixhcnJheV9rZXlzKCROKSkuIilcblZBTFVFUyAoIi5pbXBsb2RlKCIsICIsJE4pLiIpIjoiIERFRkFVTFQgVkFMVUVTIikpO31mdW5jdGlvbgppbnNlcnRVcGRhdGUoJFEsJEssJGtnKXtyZXR1cm4KZmFsc2U7fWZ1bmN0aW9uCmJlZ2luKCl7cmV0dXJuCnF1ZXJpZXMoIkJFR0lOIik7fWZ1bmN0aW9uCmNvbW1pdCgpe3JldHVybgpxdWVyaWVzKCJDT01NSVQiKTt9ZnVuY3Rpb24Kcm9sbGJhY2soKXtyZXR1cm4KcXVlcmllcygiUk9MTEJBQ0siKTt9ZnVuY3Rpb24Kc2xvd1F1ZXJ5KCRHLCRlaSl7fWZ1bmN0aW9uCmNvbnZlcnRTZWFyY2goJHYsJFgsJG8pe3JldHVybiR2O31mdW5jdGlvbgp2YWx1ZSgkWCwkbyl7cmV0dXJuKG1ldGhvZF9leGlzdHMoJHRoaXMtPl9jb25uLCd2YWx1ZScpPyR0aGlzLT5fY29ubi0+dmFsdWUoJFgsJG8pOihpc19yZXNvdXJjZSgkWCk/c3RyZWFtX2dldF9jb250ZW50cygkWCk6JFgpKTt9ZnVuY3Rpb24KcXVvdGVCaW5hcnkoJFhnKXtyZXR1cm4KcSgkWGcpO31mdW5jdGlvbgp3YXJuaW5ncygpe3JldHVybicnO31mdW5jdGlvbgp0YWJsZUhlbHAoJEQpe319JGljWyJzcWxpdGUiXT0iU1FMaXRlIDMiOyRpY1sic3FsaXRlMiJdPSJTUUxpdGUgMiI7aWYoaXNzZXQoJF9HRVRbInNxbGl0ZSJdKXx8aXNzZXQoJF9HRVRbInNxbGl0ZTIiXSkpe2RlZmluZSgiRFJJVkVSIiwoaXNzZXQoJF9HRVRbInNxbGl0ZSJdKT8ic3FsaXRlIjoic3FsaXRlMiIpKTtpZihjbGFzc19leGlzdHMoaXNzZXQoJF9HRVRbInNxbGl0ZSJdKT8iU1FMaXRlMyI6IlNRTGl0ZURhdGFiYXNlIikpe2lmKGlzc2V0KCRfR0VUWyJzcWxpdGUiXSkpe2NsYXNzCk1pbl9TUUxpdGV7dmFyJGV4dGVuc2lvbj0iU1FMaXRlMyIsJHNlcnZlcl9pbmZvLCRhZmZlY3RlZF9yb3dzLCRlcnJubywkZXJyb3IsJF9saW5rO2Z1bmN0aW9uCl9fY29uc3RydWN0KCRxKXskdGhpcy0+X2xpbms9bmV3ClNRTGl0ZTMoJHEpOyRXaT0kdGhpcy0+X2xpbmstPnZlcnNpb24oKTskdGhpcy0+c2VydmVyX2luZm89JFdpWyJ2ZXJzaW9uU3RyaW5nIl07fWZ1bmN0aW9uCnF1ZXJ5KCRHKXskSD1AJHRoaXMtPl9saW5rLT5xdWVyeSgkRyk7JHRoaXMtPmVycm9yPSIiO2lmKCEkSCl7JHRoaXMtPmVycm5vPSR0aGlzLT5fbGluay0+bGFzdEVycm9yQ29kZSgpOyR0aGlzLT5lcnJvcj0kdGhpcy0+X2xpbmstPmxhc3RFcnJvck1zZygpO3JldHVybgpmYWxzZTt9ZWxzZWlmKCRILT5udW1Db2x1bW5zKCkpcmV0dXJuCm5ldwpNaW5fUmVzdWx0KCRIKTskdGhpcy0+YWZmZWN0ZWRfcm93cz0kdGhpcy0+X2xpbmstPmNoYW5nZXMoKTtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KcXVvdGUoJFApe3JldHVybihpc191dGY4KCRQKT8iJyIuJHRoaXMtPl9saW5rLT5lc2NhcGVTdHJpbmcoJFApLiInIjoieCciLnJlc2V0KHVucGFjaygnSConLCRQKSkuIiciKTt9ZnVuY3Rpb24Kc3RvcmVfcmVzdWx0KCl7cmV0dXJuJHRoaXMtPl9yZXN1bHQ7fWZ1bmN0aW9uCnJlc3VsdCgkRywkbz0wKXskSD0kdGhpcy0+cXVlcnkoJEcpO2lmKCFpc19vYmplY3QoJEgpKXJldHVybgpmYWxzZTskSj0kSC0+X3Jlc3VsdC0+ZmV0Y2hBcnJheSgpO3JldHVybiRKWyRvXTt9fWNsYXNzCk1pbl9SZXN1bHR7dmFyJF9yZXN1bHQsJF9vZmZzZXQ9MCwkbnVtX3Jvd3M7ZnVuY3Rpb24KX19jb25zdHJ1Y3QoJEgpeyR0aGlzLT5fcmVzdWx0PSRIO31mdW5jdGlvbgpmZXRjaF9hc3NvYygpe3JldHVybiR0aGlzLT5fcmVzdWx0LT5mZXRjaEFycmF5KFNRTElURTNfQVNTT0MpO31mdW5jdGlvbgpmZXRjaF9yb3coKXtyZXR1cm4kdGhpcy0+X3Jlc3VsdC0+ZmV0Y2hBcnJheShTUUxJVEUzX05VTSk7fWZ1bmN0aW9uCmZldGNoX2ZpZWxkKCl7JGU9JHRoaXMtPl9vZmZzZXQrKzskVD0kdGhpcy0+X3Jlc3VsdC0+Y29sdW1uVHlwZSgkZSk7cmV0dXJuKG9iamVjdClhcnJheSgibmFtZSI9PiR0aGlzLT5fcmVzdWx0LT5jb2x1bW5OYW1lKCRlKSwidHlwZSI9PiRULCJjaGFyc2V0bnIiPT4oJFQ9PVNRTElURTNfQkxPQj82MzowKSwpO31mdW5jdGlvbgpfX2Rlc2N0cnVjdCgpe3JldHVybiR0aGlzLT5fcmVzdWx0LT5maW5hbGl6ZSgpO319fWVsc2V7Y2xhc3MKTWluX1NRTGl0ZXt2YXIkZXh0ZW5zaW9uPSJTUUxpdGUiLCRzZXJ2ZXJfaW5mbywkYWZmZWN0ZWRfcm93cywkZXJyb3IsJF9saW5rO2Z1bmN0aW9uCl9fY29uc3RydWN0KCRxKXskdGhpcy0+c2VydmVyX2luZm89c3FsaXRlX2xpYnZlcnNpb24oKTskdGhpcy0+X2xpbms9bmV3ClNRTGl0ZURhdGFiYXNlKCRxKTt9ZnVuY3Rpb24KcXVlcnkoJEcsJEJpPWZhbHNlKXskUGU9KCRCaT8idW5idWZmZXJlZFF1ZXJ5IjoicXVlcnkiKTskSD1AJHRoaXMtPl9saW5rLT4kUGUoJEcsU1FMSVRFX0JPVEgsJG4pOyR0aGlzLT5lcnJvcj0iIjtpZighJEgpeyR0aGlzLT5lcnJvcj0kbjtyZXR1cm4KZmFsc2U7fWVsc2VpZigkSD09PXRydWUpeyR0aGlzLT5hZmZlY3RlZF9yb3dzPSR0aGlzLT5jaGFuZ2VzKCk7cmV0dXJuCnRydWU7fXJldHVybgpuZXcKTWluX1Jlc3VsdCgkSCk7fWZ1bmN0aW9uCnF1b3RlKCRQKXtyZXR1cm4iJyIuc3FsaXRlX2VzY2FwZV9zdHJpbmcoJFApLiInIjt9ZnVuY3Rpb24Kc3RvcmVfcmVzdWx0KCl7cmV0dXJuJHRoaXMtPl9yZXN1bHQ7fWZ1bmN0aW9uCnJlc3VsdCgkRywkbz0wKXskSD0kdGhpcy0+cXVlcnkoJEcpO2lmKCFpc19vYmplY3QoJEgpKXJldHVybgpmYWxzZTskSj0kSC0+X3Jlc3VsdC0+ZmV0Y2goKTtyZXR1cm4kSlskb107fX1jbGFzcwpNaW5fUmVzdWx0e3ZhciRfcmVzdWx0LCRfb2Zmc2V0PTAsJG51bV9yb3dzO2Z1bmN0aW9uCl9fY29uc3RydWN0KCRIKXskdGhpcy0+X3Jlc3VsdD0kSDtpZihtZXRob2RfZXhpc3RzKCRILCdudW1Sb3dzJykpJHRoaXMtPm51bV9yb3dzPSRILT5udW1Sb3dzKCk7fWZ1bmN0aW9uCmZldGNoX2Fzc29jKCl7JEo9JHRoaXMtPl9yZXN1bHQtPmZldGNoKFNRTElURV9BU1NPQyk7aWYoISRKKXJldHVybgpmYWxzZTskST1hcnJheSgpO2ZvcmVhY2goJEoKYXMkej0+JFgpJElbaWRmX3VuZXNjYXBlKCR6KV09JFg7cmV0dXJuJEk7fWZ1bmN0aW9uCmZldGNoX3Jvdygpe3JldHVybiR0aGlzLT5fcmVzdWx0LT5mZXRjaChTUUxJVEVfTlVNKTt9ZnVuY3Rpb24KZmV0Y2hfZmllbGQoKXskRD0kdGhpcy0+X3Jlc3VsdC0+ZmllbGROYW1lKCR0aGlzLT5fb2Zmc2V0KyspOyRaZj0nKFxbLipdfCIoPzpbXiJdfCIiKSoifCguKykpJztpZihwcmVnX21hdGNoKCJ+XigkWmZcXC4pPyRaZlwkfiIsJEQsJEMpKXskUT0oJENbM10hPSIiPyRDWzNdOmlkZl91bmVzY2FwZSgkQ1syXSkpOyREPSgkQ1s1XSE9IiI/JENbNV06aWRmX3VuZXNjYXBlKCRDWzRdKSk7fXJldHVybihvYmplY3QpYXJyYXkoIm5hbWUiPT4kRCwib3JnbmFtZSI9PiRELCJvcmd0YWJsZSI9PiRRLCk7fX19fWVsc2VpZihleHRlbnNpb25fbG9hZGVkKCJwZG9fc3FsaXRlIikpe2NsYXNzCk1pbl9TUUxpdGUKZXh0ZW5kcwpNaW5fUERPe3ZhciRleHRlbnNpb249IlBET19TUUxpdGUiO2Z1bmN0aW9uCl9fY29uc3RydWN0KCRxKXskdGhpcy0+ZHNuKERSSVZFUi4iOiRxIiwiIiwiIik7fX19aWYoY2xhc3NfZXhpc3RzKCJNaW5fU1FMaXRlIikpe2NsYXNzCk1pbl9EQgpleHRlbmRzCk1pbl9TUUxpdGV7ZnVuY3Rpb24KX19jb25zdHJ1Y3QoKXtwYXJlbnQ6Ol9fY29uc3RydWN0KCI6bWVtb3J5OiIpOyR0aGlzLT5xdWVyeSgiUFJBR01BIGZvcmVpZ25fa2V5cyA9IDEiKTt9ZnVuY3Rpb24Kc2VsZWN0X2RiKCRxKXtpZihpc19yZWFkYWJsZSgkcSkmJiR0aGlzLT5xdWVyeSgiQVRUQUNIICIuJHRoaXMtPnF1b3RlKHByZWdfbWF0Y2goIn4oXlsvXFxcXF18Oil+IiwkcSk/JHE6ZGlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pLiIvJHEiKS4iIEFTIGEiKSl7cGFyZW50OjpfX2NvbnN0cnVjdCgkcSk7JHRoaXMtPnF1ZXJ5KCJQUkFHTUEgZm9yZWlnbl9rZXlzID0gMSIpOyR0aGlzLT5xdWVyeSgiUFJBR01BIGJ1c3lfdGltZW91dCA9IDUwMCIpO3JldHVybgp0cnVlO31yZXR1cm4KZmFsc2U7fWZ1bmN0aW9uCm11bHRpX3F1ZXJ5KCRHKXtyZXR1cm4kdGhpcy0+X3Jlc3VsdD0kdGhpcy0+cXVlcnkoJEcpO31mdW5jdGlvbgpuZXh0X3Jlc3VsdCgpe3JldHVybgpmYWxzZTt9fX1jbGFzcwpNaW5fRHJpdmVyCmV4dGVuZHMKTWluX1NRTHtmdW5jdGlvbgppbnNlcnRVcGRhdGUoJFEsJEssJGtnKXskVGk9YXJyYXkoKTtmb3JlYWNoKCRLCmFzJE4pJFRpW109IigiLmltcGxvZGUoIiwgIiwkTikuIikiO3JldHVybgpxdWVyaWVzKCJSRVBMQUNFIElOVE8gIi50YWJsZSgkUSkuIiAoIi5pbXBsb2RlKCIsICIsYXJyYXlfa2V5cyhyZXNldCgkSykpKS4iKSBWQUxVRVNcbiIuaW1wbG9kZSgiLFxuIiwkVGkpKTt9ZnVuY3Rpb24KdGFibGVIZWxwKCREKXtpZigkRD09InNxbGl0ZV9zZXF1ZW5jZSIpcmV0dXJuImZpbGVmb3JtYXQyLmh0bWwjc2VxdGFiIjtpZigkRD09InNxbGl0ZV9tYXN0ZXIiKXJldHVybiJmaWxlZm9ybWF0Mi5odG1sIyREIjt9fWZ1bmN0aW9uCmlkZl9lc2NhcGUoJHYpe3JldHVybiciJy5zdHJfcmVwbGFjZSgnIicsJyIiJywkdikuJyInO31mdW5jdGlvbgp0YWJsZSgkdil7cmV0dXJuCmlkZl9lc2NhcGUoJHYpO31mdW5jdGlvbgpjb25uZWN0KCl7Z2xvYmFsJGI7bGlzdCgsLCRGKT0kYi0+Y3JlZGVudGlhbHMoKTtpZigkRiE9IiIpcmV0dXJuJ0RhdGFiYXNlIGRvZXMgbm90IHN1cHBvcnQgcGFzc3dvcmQuJztyZXR1cm4KbmV3Ck1pbl9EQjt9ZnVuY3Rpb24KZ2V0X2RhdGFiYXNlcygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpsaW1pdCgkRywkWiwkXywkaGY9MCwkaGg9IiAiKXtyZXR1cm4iICRHJFoiLigkXyE9PW51bGw/JGhoLiJMSU1JVCAkXyIuKCRoZj8iIE9GRlNFVCAkaGYiOiIiKToiIik7fWZ1bmN0aW9uCmxpbWl0MSgkUSwkRywkWiwkaGg9IlxuIil7Z2xvYmFsJGc7cmV0dXJuKHByZWdfbWF0Y2goJ35eSU5UT34nLCRHKXx8JGctPnJlc3VsdCgiU0VMRUNUIHNxbGl0ZV9jb21waWxlb3B0aW9uX3VzZWQoJ0VOQUJMRV9VUERBVEVfREVMRVRFX0xJTUlUJykiKT9saW1pdCgkRywkWiwxLDAsJGhoKToiICRHIFdIRVJFIHJvd2lkID0gKFNFTEVDVCByb3dpZCBGUk9NICIudGFibGUoJFEpLiRaLiRoaC4iTElNSVQgMSkiKTt9ZnVuY3Rpb24KZGJfY29sbGF0aW9uKCRsLCRsYil7Z2xvYmFsJGc7cmV0dXJuJGctPnJlc3VsdCgiUFJBR01BIGVuY29kaW5nIik7fWZ1bmN0aW9uCmVuZ2luZXMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24KbG9nZ2VkX3VzZXIoKXtyZXR1cm4KZ2V0X2N1cnJlbnRfdXNlcigpO31mdW5jdGlvbgp0YWJsZXNfbGlzdCgpe3JldHVybgpnZXRfa2V5X3ZhbHMoIlNFTEVDVCBuYW1lLCB0eXBlIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlIElOICgndGFibGUnLCAndmlldycpIE9SREVSIEJZIChuYW1lID0gJ3NxbGl0ZV9zZXF1ZW5jZScpLCBuYW1lIik7fWZ1bmN0aW9uCmNvdW50X3RhYmxlcygkayl7cmV0dXJuCmFycmF5KCk7fWZ1bmN0aW9uCnRhYmxlX3N0YXR1cygkRD0iIil7Z2xvYmFsJGc7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgbmFtZSBBUyBOYW1lLCB0eXBlIEFTIEVuZ2luZSwgJ3Jvd2lkJyBBUyBPaWQsICcnIEFTIEF1dG9faW5jcmVtZW50IEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlIElOICgndGFibGUnLCAndmlldycpICIuKCREIT0iIj8iQU5EIG5hbWUgPSAiLnEoJEQpOiJPUkRFUiBCWSBuYW1lIikpYXMkSil7JEpbIlJvd3MiXT0kZy0+cmVzdWx0KCJTRUxFQ1QgQ09VTlQoKikgRlJPTSAiLmlkZl9lc2NhcGUoJEpbIk5hbWUiXSkpOyRJWyRKWyJOYW1lIl1dPSRKO31mb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgKiBGUk9NIHNxbGl0ZV9zZXF1ZW5jZSIsbnVsbCwiIilhcyRKKSRJWyRKWyJuYW1lIl1dWyJBdXRvX2luY3JlbWVudCJdPSRKWyJzZXEiXTtyZXR1cm4oJEQhPSIiPyRJWyREXTokSSk7fWZ1bmN0aW9uCmlzX3ZpZXcoJFIpe3JldHVybiRSWyJFbmdpbmUiXT09InZpZXciO31mdW5jdGlvbgpma19zdXBwb3J0KCRSKXtnbG9iYWwkZztyZXR1cm4hJGctPnJlc3VsdCgiU0VMRUNUIHNxbGl0ZV9jb21waWxlb3B0aW9uX3VzZWQoJ09NSVRfRk9SRUlHTl9LRVknKSIpO31mdW5jdGlvbgpmaWVsZHMoJFEpe2dsb2JhbCRnOyRJPWFycmF5KCk7JGtnPSIiO2ZvcmVhY2goZ2V0X3Jvd3MoIlBSQUdNQSB0YWJsZV9pbmZvKCIudGFibGUoJFEpLiIpIilhcyRKKXskRD0kSlsibmFtZSJdOyRUPXN0cnRvbG93ZXIoJEpbInR5cGUiXSk7JFdiPSRKWyJkZmx0X3ZhbHVlIl07JElbJERdPWFycmF5KCJmaWVsZCI9PiRELCJ0eXBlIj0+KHByZWdfbWF0Y2goJ35pbnR+aScsJFQpPyJpbnRlZ2VyIjoocHJlZ19tYXRjaCgnfmNoYXJ8Y2xvYnx0ZXh0fmknLCRUKT8idGV4dCI6KHByZWdfbWF0Y2goJ35ibG9ifmknLCRUKT8iYmxvYiI6KHByZWdfbWF0Y2goJ35yZWFsfGZsb2F8ZG91Yn5pJywkVCk/InJlYWwiOiJudW1lcmljIikpKSksImZ1bGxfdHlwZSI9PiRULCJkZWZhdWx0Ij0+KHByZWdfbWF0Y2goIn4nKC4qKSd+IiwkV2IsJEMpP3N0cl9yZXBsYWNlKCInJyIsIiciLCRDWzFdKTooJFdiPT0iTlVMTCI/bnVsbDokV2IpKSwibnVsbCI9PiEkSlsibm90bnVsbCJdLCJwcml2aWxlZ2VzIj0+YXJyYXkoInNlbGVjdCI9PjEsImluc2VydCI9PjEsInVwZGF0ZSI9PjEpLCJwcmltYXJ5Ij0+JEpbInBrIl0sKTtpZigkSlsicGsiXSl7aWYoJGtnIT0iIikkSVska2ddWyJhdXRvX2luY3JlbWVudCJdPWZhbHNlO2Vsc2VpZihwcmVnX21hdGNoKCd+XmludGVnZXIkfmknLCRUKSkkSVskRF1bImF1dG9faW5jcmVtZW50Il09dHJ1ZTska2c9JEQ7fX0keWg9JGctPnJlc3VsdCgiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICd0YWJsZScgQU5EIG5hbWUgPSAiLnEoJFEpKTtwcmVnX21hdGNoX2FsbCgnfigoIlteIl0qKyIpK3xbYS16MC05X10rKVxzK3RleHRccytDT0xMQVRFXHMrKFwnW15cJ10rXCd8XFMrKX5pJywkeWgsJENlLFBSRUdfU0VUX09SREVSKTtmb3JlYWNoKCRDZQphcyRDKXskRD1zdHJfcmVwbGFjZSgnIiInLCciJyxwcmVnX3JlcGxhY2UoJ35eInwiJH4nLCcnLCRDWzFdKSk7aWYoJElbJERdKSRJWyREXVsiY29sbGF0aW9uIl09dHJpbSgkQ1szXSwiJyIpO31yZXR1cm4kSTt9ZnVuY3Rpb24KaW5kZXhlcygkUSwkaD1udWxsKXtnbG9iYWwkZztpZighaXNfb2JqZWN0KCRoKSkkaD0kZzskST1hcnJheSgpOyR5aD0kaC0+cmVzdWx0KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ3RhYmxlJyBBTkQgbmFtZSA9ICIucSgkUSkpO2lmKHByZWdfbWF0Y2goJ35cYlBSSU1BUllccytLRVlccypcKCgoW14pIl0rfCJbXiJdKiJ8YFteYF0qYCkrKyl+aScsJHloLCRDKSl7JElbIiJdPWFycmF5KCJ0eXBlIj0+IlBSSU1BUlkiLCJjb2x1bW5zIj0+YXJyYXkoKSwibGVuZ3RocyI9PmFycmF5KCksImRlc2NzIj0+YXJyYXkoKSk7cHJlZ19tYXRjaF9hbGwoJ34oKCgiW14iXSorIikrfCg/OmBbXmBdKitgKSspfChcUyspKShccysoQVNDfERFU0MpKT8oLFxzKnwkKX5pJywkQ1sxXSwkQ2UsUFJFR19TRVRfT1JERVIpO2ZvcmVhY2goJENlCmFzJEMpeyRJWyIiXVsiY29sdW1ucyJdW109aWRmX3VuZXNjYXBlKCRDWzJdKS4kQ1s0XTskSVsiIl1bImRlc2NzIl1bXT0ocHJlZ19tYXRjaCgnfkRFU0N+aScsJENbNV0pPycxJzpudWxsKTt9fWlmKCEkSSl7Zm9yZWFjaChmaWVsZHMoJFEpYXMkRD0+JG8pe2lmKCRvWyJwcmltYXJ5Il0pJElbIiJdPWFycmF5KCJ0eXBlIj0+IlBSSU1BUlkiLCJjb2x1bW5zIj0+YXJyYXkoJEQpLCJsZW5ndGhzIj0+YXJyYXkoKSwiZGVzY3MiPT5hcnJheShudWxsKSk7fX0kQWg9Z2V0X2tleV92YWxzKCJTRUxFQ1QgbmFtZSwgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ2luZGV4JyBBTkQgdGJsX25hbWUgPSAiLnEoJFEpLCRoKTtmb3JlYWNoKGdldF9yb3dzKCJQUkFHTUEgaW5kZXhfbGlzdCgiLnRhYmxlKCRRKS4iKSIsJGgpYXMkSil7JEQ9JEpbIm5hbWUiXTskdz1hcnJheSgidHlwZSI9PigkSlsidW5pcXVlIl0/IlVOSVFVRSI6IklOREVYIikpOyR3WyJsZW5ndGhzIl09YXJyYXkoKTskd1siZGVzY3MiXT1hcnJheSgpO2ZvcmVhY2goZ2V0X3Jvd3MoIlBSQUdNQSBpbmRleF9pbmZvKCIuaWRmX2VzY2FwZSgkRCkuIikiLCRoKWFzJFdnKXskd1siY29sdW1ucyJdW109JFdnWyJuYW1lIl07JHdbImRlc2NzIl1bXT1udWxsO31pZihwcmVnX21hdGNoKCd+XkNSRUFURSggVU5JUVVFKT8gSU5ERVggJy5wcmVnX3F1b3RlKGlkZl9lc2NhcGUoJEQpLicgT04gJy5pZGZfZXNjYXBlKCRRKSwnficpLicgXCgoLiopXCkkfmknLCRBaFskRF0sJEdnKSl7cHJlZ19tYXRjaF9hbGwoJy8oIlteIl0qKyIpKyggREVTQyk/LycsJEdnWzJdLCRDZSk7Zm9yZWFjaCgkQ2VbMl1hcyR6PT4kWCl7aWYoJFgpJHdbImRlc2NzIl1bJHpdPScxJzt9fWlmKCEkSVsiIl18fCR3WyJ0eXBlIl0hPSJVTklRVUUifHwkd1siY29sdW1ucyJdIT0kSVsiIl1bImNvbHVtbnMiXXx8JHdbImRlc2NzIl0hPSRJWyIiXVsiZGVzY3MiXXx8IXByZWdfbWF0Y2goIn5ec3FsaXRlX34iLCREKSkkSVskRF09JHc7fXJldHVybiRJO31mdW5jdGlvbgpmb3JlaWduX2tleXMoJFEpeyRJPWFycmF5KCk7Zm9yZWFjaChnZXRfcm93cygiUFJBR01BIGZvcmVpZ25fa2V5X2xpc3QoIi50YWJsZSgkUSkuIikiKWFzJEopeyRyPSYkSVskSlsiaWQiXV07aWYoISRyKSRyPSRKOyRyWyJzb3VyY2UiXVtdPSRKWyJmcm9tIl07JHJbInRhcmdldCJdW109JEpbInRvIl07fXJldHVybiRJO31mdW5jdGlvbgp2aWV3KCREKXtnbG9iYWwkZztyZXR1cm4KYXJyYXkoInNlbGVjdCI9PnByZWdfcmVwbGFjZSgnfl4oPzpbXmAiW10rfGBbXmBdKmB8IlteIl0qIikqIEFTXHMrfmlVJywnJywkZy0+cmVzdWx0KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSBuYW1lID0gIi5xKCREKSkpKTt9ZnVuY3Rpb24KY29sbGF0aW9ucygpe3JldHVybihpc3NldCgkX0dFVFsiY3JlYXRlIl0pP2dldF92YWxzKCJQUkFHTUEgY29sbGF0aW9uX2xpc3QiLDEpOmFycmF5KCkpO31mdW5jdGlvbgppbmZvcm1hdGlvbl9zY2hlbWEoJGwpe3JldHVybgpmYWxzZTt9ZnVuY3Rpb24KZXJyb3IoKXtnbG9iYWwkZztyZXR1cm4KaCgkZy0+ZXJyb3IpO31mdW5jdGlvbgpjaGVja19zcWxpdGVfbmFtZSgkRCl7Z2xvYmFsJGc7JE9jPSJkYnxzZGJ8c3FsaXRlIjtpZighcHJlZ19tYXRjaCgifl5bXlxcMF0qXFwuKCRPYylcJH4iLCREKSl7JGctPmVycm9yPXNwcmludGYoJ1BsZWFzZSB1c2Ugb25lIG9mIHRoZSBleHRlbnNpb25zICVzLicsc3RyX3JlcGxhY2UoInwiLCIsICIsJE9jKSk7cmV0dXJuCmZhbHNlO31yZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KY3JlYXRlX2RhdGFiYXNlKCRsLCRkKXtnbG9iYWwkZztpZihmaWxlX2V4aXN0cygkbCkpeyRnLT5lcnJvcj0nRmlsZSBleGlzdHMuJztyZXR1cm4KZmFsc2U7fWlmKCFjaGVja19zcWxpdGVfbmFtZSgkbCkpcmV0dXJuCmZhbHNlO3RyeXskQT1uZXcKTWluX1NRTGl0ZSgkbCk7fWNhdGNoKEV4Y2VwdGlvbiRGYyl7JGctPmVycm9yPSRGYy0+Z2V0TWVzc2FnZSgpO3JldHVybgpmYWxzZTt9JEEtPnF1ZXJ5KCdQUkFHTUEgZW5jb2RpbmcgPSAiVVRGLTgiJyk7JEEtPnF1ZXJ5KCdDUkVBVEUgVEFCTEUgYWRtaW5lciAoaSknKTskQS0+cXVlcnkoJ0RST1AgVEFCTEUgYWRtaW5lcicpO3JldHVybgp0cnVlO31mdW5jdGlvbgpkcm9wX2RhdGFiYXNlcygkayl7Z2xvYmFsJGc7JGctPl9fY29uc3RydWN0KCI6bWVtb3J5OiIpO2ZvcmVhY2goJGsKYXMkbCl7aWYoIUB1bmxpbmsoJGwpKXskZy0+ZXJyb3I9J0ZpbGUgZXhpc3RzLic7cmV0dXJuCmZhbHNlO319cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnJlbmFtZV9kYXRhYmFzZSgkRCwkZCl7Z2xvYmFsJGc7aWYoIWNoZWNrX3NxbGl0ZV9uYW1lKCREKSlyZXR1cm4KZmFsc2U7JGctPl9fY29uc3RydWN0KCI6bWVtb3J5OiIpOyRnLT5lcnJvcj0nRmlsZSBleGlzdHMuJztyZXR1cm5AcmVuYW1lKERCLCREKTt9ZnVuY3Rpb24KYXV0b19pbmNyZW1lbnQoKXtyZXR1cm4iIFBSSU1BUlkgS0VZIi4oRFJJVkVSPT0ic3FsaXRlIj8iIEFVVE9JTkNSRU1FTlQiOiIiKTt9ZnVuY3Rpb24KYWx0ZXJfdGFibGUoJFEsJEQsJHAsJGZkLCRyYiwkeWMsJGQsJEthLCRUZil7Z2xvYmFsJGc7JE1pPSgkUT09IiJ8fCRmZCk7Zm9yZWFjaCgkcAphcyRvKXtpZigkb1swXSE9IiJ8fCEkb1sxXXx8JG9bMl0peyRNaT10cnVlO2JyZWFrO319JGM9YXJyYXkoKTskSGY9YXJyYXkoKTtmb3JlYWNoKCRwCmFzJG8pe2lmKCRvWzFdKXskY1tdPSgkTWk/JG9bMV06IkFERCAiLmltcGxvZGUoJG9bMV0pKTtpZigkb1swXSE9IiIpJEhmWyRvWzBdXT0kb1sxXVswXTt9fWlmKCEkTWkpe2ZvcmVhY2goJGMKYXMkWCl7aWYoIXF1ZXJpZXMoIkFMVEVSIFRBQkxFICIudGFibGUoJFEpLiIgJFgiKSlyZXR1cm4KZmFsc2U7fWlmKCRRIT0kRCYmIXF1ZXJpZXMoIkFMVEVSIFRBQkxFICIudGFibGUoJFEpLiIgUkVOQU1FIFRPICIudGFibGUoJEQpKSlyZXR1cm4KZmFsc2U7fWVsc2VpZighcmVjcmVhdGVfdGFibGUoJFEsJEQsJGMsJEhmLCRmZCwkS2EpKXJldHVybgpmYWxzZTtpZigkS2Epe3F1ZXJpZXMoIkJFR0lOIik7cXVlcmllcygiVVBEQVRFIHNxbGl0ZV9zZXF1ZW5jZSBTRVQgc2VxID0gJEthIFdIRVJFIG5hbWUgPSAiLnEoJEQpKTtpZighJGctPmFmZmVjdGVkX3Jvd3MpcXVlcmllcygiSU5TRVJUIElOVE8gc3FsaXRlX3NlcXVlbmNlIChuYW1lLCBzZXEpIFZBTFVFUyAoIi5xKCREKS4iLCAkS2EpIik7cXVlcmllcygiQ09NTUlUIik7fXJldHVybgp0cnVlO31mdW5jdGlvbgpyZWNyZWF0ZV90YWJsZSgkUSwkRCwkcCwkSGYsJGZkLCRLYSwkeD1hcnJheSgpKXtnbG9iYWwkZztpZigkUSE9IiIpe2lmKCEkcCl7Zm9yZWFjaChmaWVsZHMoJFEpYXMkej0+JG8pe2lmKCR4KSRvWyJhdXRvX2luY3JlbWVudCJdPTA7JHBbXT1wcm9jZXNzX2ZpZWxkKCRvLCRvKTskSGZbJHpdPWlkZl9lc2NhcGUoJHopO319JGxnPWZhbHNlO2ZvcmVhY2goJHAKYXMkbyl7aWYoJG9bNl0pJGxnPXRydWU7fSRsYz1hcnJheSgpO2ZvcmVhY2goJHgKYXMkej0+JFgpe2lmKCRYWzJdPT0iRFJPUCIpeyRsY1skWFsxXV09dHJ1ZTt1bnNldCgkeFskel0pO319Zm9yZWFjaChpbmRleGVzKCRRKWFzJGdlPT4kdyl7JGY9YXJyYXkoKTtmb3JlYWNoKCR3WyJjb2x1bW5zIl1hcyR6PT4kZSl7aWYoISRIZlskZV0pY29udGludWUKMjskZltdPSRIZlskZV0uKCR3WyJkZXNjcyJdWyR6XT8iIERFU0MiOiIiKTt9aWYoISRsY1skZ2VdKXtpZigkd1sidHlwZSJdIT0iUFJJTUFSWSJ8fCEkbGcpJHhbXT1hcnJheSgkd1sidHlwZSJdLCRnZSwkZik7fX1mb3JlYWNoKCR4CmFzJHo9PiRYKXtpZigkWFswXT09IlBSSU1BUlkiKXt1bnNldCgkeFskel0pOyRmZFtdPSIgIFBSSU1BUlkgS0VZICgiLmltcGxvZGUoIiwgIiwkWFsyXSkuIikiO319Zm9yZWFjaChmb3JlaWduX2tleXMoJFEpYXMkZ2U9PiRyKXtmb3JlYWNoKCRyWyJzb3VyY2UiXWFzJHo9PiRlKXtpZighJEhmWyRlXSljb250aW51ZQoyOyRyWyJzb3VyY2UiXVskel09aWRmX3VuZXNjYXBlKCRIZlskZV0pO31pZighaXNzZXQoJGZkWyIgJGdlIl0pKSRmZFtdPSIgIi5mb3JtYXRfZm9yZWlnbl9rZXkoJHIpO31xdWVyaWVzKCJCRUdJTiIpO31mb3JlYWNoKCRwCmFzJHo9PiRvKSRwWyR6XT0iICAiLmltcGxvZGUoJG8pOyRwPWFycmF5X21lcmdlKCRwLGFycmF5X2ZpbHRlcigkZmQpKTskWWg9KCRRPT0kRD8iYWRtaW5lcl8kRCI6JEQpO2lmKCFxdWVyaWVzKCJDUkVBVEUgVEFCTEUgIi50YWJsZSgkWWgpLiIgKFxuIi5pbXBsb2RlKCIsXG4iLCRwKS4iXG4pIikpcmV0dXJuCmZhbHNlO2lmKCRRIT0iIil7aWYoJEhmJiYhcXVlcmllcygiSU5TRVJUIElOVE8gIi50YWJsZSgkWWgpLiIgKCIuaW1wbG9kZSgiLCAiLCRIZikuIikgU0VMRUNUICIuaW1wbG9kZSgiLCAiLGFycmF5X21hcCgnaWRmX2VzY2FwZScsYXJyYXlfa2V5cygkSGYpKSkuIiBGUk9NICIudGFibGUoJFEpKSlyZXR1cm4KZmFsc2U7JHppPWFycmF5KCk7Zm9yZWFjaCh0cmlnZ2VycygkUSlhcyR4aT0+JGZpKXskd2k9dHJpZ2dlcigkeGkpOyR6aVtdPSJDUkVBVEUgVFJJR0dFUiAiLmlkZl9lc2NhcGUoJHhpKS4iICIuaW1wbG9kZSgiICIsJGZpKS4iIE9OICIudGFibGUoJEQpLiJcbiR3aVtTdGF0ZW1lbnRdIjt9JEthPSRLYT8wOiRnLT5yZXN1bHQoIlNFTEVDVCBzZXEgRlJPTSBzcWxpdGVfc2VxdWVuY2UgV0hFUkUgbmFtZSA9ICIucSgkUSkpO2lmKCFxdWVyaWVzKCJEUk9QIFRBQkxFICIudGFibGUoJFEpKXx8KCRRPT0kRCYmIXF1ZXJpZXMoIkFMVEVSIFRBQkxFICIudGFibGUoJFloKS4iIFJFTkFNRSBUTyAiLnRhYmxlKCREKSkpfHwhYWx0ZXJfaW5kZXhlcygkRCwkeCkpcmV0dXJuCmZhbHNlO2lmKCRLYSlxdWVyaWVzKCJVUERBVEUgc3FsaXRlX3NlcXVlbmNlIFNFVCBzZXEgPSAkS2EgV0hFUkUgbmFtZSA9ICIucSgkRCkpO2ZvcmVhY2goJHppCmFzJHdpKXtpZighcXVlcmllcygkd2kpKXJldHVybgpmYWxzZTt9cXVlcmllcygiQ09NTUlUIik7fXJldHVybgp0cnVlO31mdW5jdGlvbgppbmRleF9zcWwoJFEsJFQsJEQsJGYpe3JldHVybiJDUkVBVEUgJFQgIi4oJFQhPSJJTkRFWCI/IklOREVYICI6IiIpLmlkZl9lc2NhcGUoJEQhPSIiPyREOnVuaXFpZCgkUS4iXyIpKS4iIE9OICIudGFibGUoJFEpLiIgJGYiO31mdW5jdGlvbgphbHRlcl9pbmRleGVzKCRRLCRjKXtmb3JlYWNoKCRjCmFzJGtnKXtpZigka2dbMF09PSJQUklNQVJZIilyZXR1cm4KcmVjcmVhdGVfdGFibGUoJFEsJFEsYXJyYXkoKSxhcnJheSgpLGFycmF5KCksMCwkYyk7fWZvcmVhY2goYXJyYXlfcmV2ZXJzZSgkYylhcyRYKXtpZighcXVlcmllcygkWFsyXT09IkRST1AiPyJEUk9QIElOREVYICIuaWRmX2VzY2FwZSgkWFsxXSk6aW5kZXhfc3FsKCRRLCRYWzBdLCRYWzFdLCIoIi5pbXBsb2RlKCIsICIsJFhbMl0pLiIpIikpKXJldHVybgpmYWxzZTt9cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnRydW5jYXRlX3RhYmxlcygkUyl7cmV0dXJuCmFwcGx5X3F1ZXJpZXMoIkRFTEVURSBGUk9NIiwkUyk7fWZ1bmN0aW9uCmRyb3Bfdmlld3MoJFlpKXtyZXR1cm4KYXBwbHlfcXVlcmllcygiRFJPUCBWSUVXIiwkWWkpO31mdW5jdGlvbgpkcm9wX3RhYmxlcygkUyl7cmV0dXJuCmFwcGx5X3F1ZXJpZXMoIkRST1AgVEFCTEUiLCRTKTt9ZnVuY3Rpb24KbW92ZV90YWJsZXMoJFMsJFlpLCRXaCl7cmV0dXJuCmZhbHNlO31mdW5jdGlvbgp0cmlnZ2VyKCREKXtnbG9iYWwkZztpZigkRD09IiIpcmV0dXJuCmFycmF5KCJTdGF0ZW1lbnQiPT4iQkVHSU5cblx0O1xuRU5EIik7JHY9Jyg/OlteYCJcc10rfGBbXmBdKmB8IlteIl0qIikrJzskeWk9dHJpZ2dlcl9vcHRpb25zKCk7cHJlZ19tYXRjaCgifl5DUkVBVEVcXHMrVFJJR0dFUlxccyokdlxccyooIi5pbXBsb2RlKCJ8IiwkeWlbIlRpbWluZyJdKS4iKVxccysoW2Etel0rKSg/OlxccytPRlxccysoJHYpKT9cXHMrT05cXHMqJHZcXHMqKD86Rk9SXFxzK0VBQ0hcXHMrUk9XXFxzKT8oLiopfmlzIiwkZy0+cmVzdWx0KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ3RyaWdnZXInIEFORCBuYW1lID0gIi5xKCREKSksJEMpOyRnZj0kQ1szXTtyZXR1cm4KYXJyYXkoIlRpbWluZyI9PnN0cnRvdXBwZXIoJENbMV0pLCJFdmVudCI9PnN0cnRvdXBwZXIoJENbMl0pLigkZ2Y/IiBPRiI6IiIpLCJPZiI9PmlkZl91bmVzY2FwZSgkZ2YpLCJUcmlnZ2VyIj0+JEQsIlN0YXRlbWVudCI9PiRDWzRdLCk7fWZ1bmN0aW9uCnRyaWdnZXJzKCRRKXskST1hcnJheSgpOyR5aT10cmlnZ2VyX29wdGlvbnMoKTtmb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgKiBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICd0cmlnZ2VyJyBBTkQgdGJsX25hbWUgPSAiLnEoJFEpKWFzJEope3ByZWdfbWF0Y2goJ35eQ1JFQVRFXHMrVFJJR0dFUlxzKig/OlteYCJcc10rfGBbXmBdKmB8IlteIl0qIikrXHMqKCcuaW1wbG9kZSgifCIsJHlpWyJUaW1pbmciXSkuJylccyooLio/KVxzK09OXGJ+aScsJEpbInNxbCJdLCRDKTskSVskSlsibmFtZSJdXT1hcnJheSgkQ1sxXSwkQ1syXSk7fXJldHVybiRJO31mdW5jdGlvbgp0cmlnZ2VyX29wdGlvbnMoKXtyZXR1cm4KYXJyYXkoIlRpbWluZyI9PmFycmF5KCJCRUZPUkUiLCJBRlRFUiIsIklOU1RFQUQgT0YiKSwiRXZlbnQiPT5hcnJheSgiSU5TRVJUIiwiVVBEQVRFIiwiVVBEQVRFIE9GIiwiREVMRVRFIiksIlR5cGUiPT5hcnJheSgiRk9SIEVBQ0ggUk9XIiksKTt9ZnVuY3Rpb24KYmVnaW4oKXtyZXR1cm4KcXVlcmllcygiQkVHSU4iKTt9ZnVuY3Rpb24KbGFzdF9pZCgpe2dsb2JhbCRnO3JldHVybiRnLT5yZXN1bHQoIlNFTEVDVCBMQVNUX0lOU0VSVF9ST1dJRCgpIik7fWZ1bmN0aW9uCmV4cGxhaW4oJGcsJEcpe3JldHVybiRnLT5xdWVyeSgiRVhQTEFJTiBRVUVSWSBQTEFOICRHIik7fWZ1bmN0aW9uCmZvdW5kX3Jvd3MoJFIsJFope31mdW5jdGlvbgp0eXBlcygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpzY2hlbWFzKCl7cmV0dXJuCmFycmF5KCk7fWZ1bmN0aW9uCmdldF9zY2hlbWEoKXtyZXR1cm4iIjt9ZnVuY3Rpb24Kc2V0X3NjaGVtYSgkYWgpe3JldHVybgp0cnVlO31mdW5jdGlvbgpjcmVhdGVfc3FsKCRRLCRLYSwkSGgpe2dsb2JhbCRnOyRJPSRnLT5yZXN1bHQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgSU4gKCd0YWJsZScsICd2aWV3JykgQU5EIG5hbWUgPSAiLnEoJFEpKTtmb3JlYWNoKGluZGV4ZXMoJFEpYXMkRD0+JHcpe2lmKCREPT0nJyljb250aW51ZTskSS49IjtcblxuIi5pbmRleF9zcWwoJFEsJHdbJ3R5cGUnXSwkRCwiKCIuaW1wbG9kZSgiLCAiLGFycmF5X21hcCgnaWRmX2VzY2FwZScsJHdbJ2NvbHVtbnMnXSkpLiIpIik7fXJldHVybiRJO31mdW5jdGlvbgp0cnVuY2F0ZV9zcWwoJFEpe3JldHVybiJERUxFVEUgRlJPTSAiLnRhYmxlKCRRKTt9ZnVuY3Rpb24KdXNlX3NxbCgkail7fWZ1bmN0aW9uCnRyaWdnZXJfc3FsKCRRKXtyZXR1cm4KaW1wbG9kZShnZXRfdmFscygiU0VMRUNUIHNxbCB8fCAnOztcbicgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndHJpZ2dlcicgQU5EIHRibF9uYW1lID0gIi5xKCRRKSkpO31mdW5jdGlvbgpzaG93X3ZhcmlhYmxlcygpe2dsb2JhbCRnOyRJPWFycmF5KCk7Zm9yZWFjaChhcnJheSgiYXV0b192YWN1dW0iLCJjYWNoZV9zaXplIiwiY291bnRfY2hhbmdlcyIsImRlZmF1bHRfY2FjaGVfc2l6ZSIsImVtcHR5X3Jlc3VsdF9jYWxsYmFja3MiLCJlbmNvZGluZyIsImZvcmVpZ25fa2V5cyIsImZ1bGxfY29sdW1uX25hbWVzIiwiZnVsbGZzeW5jIiwiam91cm5hbF9tb2RlIiwiam91cm5hbF9zaXplX2xpbWl0IiwibGVnYWN5X2ZpbGVfZm9ybWF0IiwibG9ja2luZ19tb2RlIiwicGFnZV9zaXplIiwibWF4X3BhZ2VfY291bnQiLCJyZWFkX3VuY29tbWl0dGVkIiwicmVjdXJzaXZlX3RyaWdnZXJzIiwicmV2ZXJzZV91bm9yZGVyZWRfc2VsZWN0cyIsInNlY3VyZV9kZWxldGUiLCJzaG9ydF9jb2x1bW5fbmFtZXMiLCJzeW5jaHJvbm91cyIsInRlbXBfc3RvcmUiLCJ0ZW1wX3N0b3JlX2RpcmVjdG9yeSIsInNjaGVtYV92ZXJzaW9uIiwiaW50ZWdyaXR5X2NoZWNrIiwicXVpY2tfY2hlY2siKWFzJHopJElbJHpdPSRnLT5yZXN1bHQoIlBSQUdNQSAkeiIpO3JldHVybiRJO31mdW5jdGlvbgpzaG93X3N0YXR1cygpeyRJPWFycmF5KCk7Zm9yZWFjaChnZXRfdmFscygiUFJBR01BIGNvbXBpbGVfb3B0aW9ucyIpYXMkd2Ype2xpc3QoJHosJFgpPWV4cGxvZGUoIj0iLCR3ZiwyKTskSVskel09JFg7fXJldHVybiRJO31mdW5jdGlvbgpjb252ZXJ0X2ZpZWxkKCRvKXt9ZnVuY3Rpb24KdW5jb252ZXJ0X2ZpZWxkKCRvLCRJKXtyZXR1cm4kSTt9ZnVuY3Rpb24Kc3VwcG9ydCgkVGMpe3JldHVybgpwcmVnX21hdGNoKCd+Xihjb2x1bW5zfGRhdGFiYXNlfGRyb3BfY29sfGR1bXB8aW5kZXhlc3xkZXNjaWR4fG1vdmVfY29sfHNxbHxzdGF0dXN8dGFibGV8dHJpZ2dlcnx2YXJpYWJsZXN8dmlld3x2aWV3X3RyaWdnZXIpJH4nLCRUYyk7fWZ1bmN0aW9uCmRyaXZlcl9jb25maWcoKXskVT1hcnJheSgiaW50ZWdlciI9PjAsInJlYWwiPT4wLCJudW1lcmljIj0+MCwidGV4dCI9PjAsImJsb2IiPT4wKTtyZXR1cm4KYXJyYXkoJ3Bvc3NpYmxlX2RyaXZlcnMnPT5hcnJheSgoaXNzZXQoJF9HRVRbInNxbGl0ZSJdKT8iU1FMaXRlMyI6IlNRTGl0ZSIpLCJQRE9fU1FMaXRlIiksJ2p1c2gnPT4ic3FsaXRlIiwndHlwZXMnPT4kVSwnc3RydWN0dXJlZF90eXBlcyc9PmFycmF5X2tleXMoJFUpLCd1bnNpZ25lZCc9PmFycmF5KCksJ29wZXJhdG9ycyc9PmFycmF5KCI9IiwiPCIsIj4iLCI8PSIsIj49IiwiIT0iLCJMSUtFIiwiTElLRSAlJSIsIklOIiwiSVMgTlVMTCIsIk5PVCBMSUtFIiwiTk9UIElOIiwiSVMgTk9UIE5VTEwiLCJTUUwiKSwnZnVuY3Rpb25zJz0+YXJyYXkoImhleCIsImxlbmd0aCIsImxvd2VyIiwicm91bmQiLCJ1bml4ZXBvY2giLCJ1cHBlciIpLCdncm91cGluZyc9PmFycmF5KCJhdmciLCJjb3VudCIsImNvdW50IGRpc3RpbmN0IiwiZ3JvdXBfY29uY2F0IiwibWF4IiwibWluIiwic3VtIiksJ2VkaXRfZnVuY3Rpb25zJz0+YXJyYXkoYXJyYXkoKSxhcnJheSgiaW50ZWdlcnxyZWFsfG51bWVyaWMiPT4iKy8tIiwidGV4dCI9PiJ8fCIsKSksKTt9fSRpY1sicGdzcWwiXT0iUG9zdGdyZVNRTCI7aWYoaXNzZXQoJF9HRVRbInBnc3FsIl0pKXtkZWZpbmUoIkRSSVZFUiIsInBnc3FsIik7aWYoZXh0ZW5zaW9uX2xvYWRlZCgicGdzcWwiKSl7Y2xhc3MKTWluX0RCe3ZhciRleHRlbnNpb249IlBnU1FMIiwkX2xpbmssJF9yZXN1bHQsJF9zdHJpbmcsJF9kYXRhYmFzZT10cnVlLCRzZXJ2ZXJfaW5mbywkYWZmZWN0ZWRfcm93cywkZXJyb3IsJHRpbWVvdXQ7ZnVuY3Rpb24KX2Vycm9yKCRBYywkbil7aWYoaW5pX2Jvb2woImh0bWxfZXJyb3JzIikpJG49aHRtbF9lbnRpdHlfZGVjb2RlKHN0cmlwX3RhZ3MoJG4pKTskbj1wcmVnX3JlcGxhY2UoJ35eW146XSo6IH4nLCcnLCRuKTskdGhpcy0+ZXJyb3I9JG47fWZ1bmN0aW9uCmNvbm5lY3QoJE0sJFYsJEYpe2dsb2JhbCRiOyRsPSRiLT5kYXRhYmFzZSgpO3NldF9lcnJvcl9oYW5kbGVyKGFycmF5KCR0aGlzLCdfZXJyb3InKSk7JHRoaXMtPl9zdHJpbmc9Imhvc3Q9JyIuc3RyX3JlcGxhY2UoIjoiLCInIHBvcnQ9JyIsYWRkY3NsYXNoZXMoJE0sIidcXCIpKS4iJyB1c2VyPSciLmFkZGNzbGFzaGVzKCRWLCInXFwiKS4iJyBwYXNzd29yZD0nIi5hZGRjc2xhc2hlcygkRiwiJ1xcIikuIiciOyR0aGlzLT5fbGluaz1AcGdfY29ubmVjdCgiJHRoaXMtPl9zdHJpbmcgZGJuYW1lPSciLigkbCE9IiI/YWRkY3NsYXNoZXMoJGwsIidcXCIpOiJwb3N0Z3JlcyIpLiInIixQR1NRTF9DT05ORUNUX0ZPUkNFX05FVyk7aWYoISR0aGlzLT5fbGluayYmJGwhPSIiKXskdGhpcy0+X2RhdGFiYXNlPWZhbHNlOyR0aGlzLT5fbGluaz1AcGdfY29ubmVjdCgiJHRoaXMtPl9zdHJpbmcgZGJuYW1lPSdwb3N0Z3JlcyciLFBHU1FMX0NPTk5FQ1RfRk9SQ0VfTkVXKTt9cmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7aWYoJHRoaXMtPl9saW5rKXskV2k9cGdfdmVyc2lvbigkdGhpcy0+X2xpbmspOyR0aGlzLT5zZXJ2ZXJfaW5mbz0kV2lbInNlcnZlciJdO3BnX3NldF9jbGllbnRfZW5jb2RpbmcoJHRoaXMtPl9saW5rLCJVVEY4Iik7fXJldHVybihib29sKSR0aGlzLT5fbGluazt9ZnVuY3Rpb24KcXVvdGUoJFApe3JldHVybiInIi5wZ19lc2NhcGVfc3RyaW5nKCR0aGlzLT5fbGluaywkUCkuIiciO31mdW5jdGlvbgp2YWx1ZSgkWCwkbyl7cmV0dXJuKCRvWyJ0eXBlIl09PSJieXRlYSImJiRYIT09bnVsbD9wZ191bmVzY2FwZV9ieXRlYSgkWCk6JFgpO31mdW5jdGlvbgpxdW90ZUJpbmFyeSgkUCl7cmV0dXJuIiciLnBnX2VzY2FwZV9ieXRlYSgkdGhpcy0+X2xpbmssJFApLiInIjt9ZnVuY3Rpb24Kc2VsZWN0X2RiKCRqKXtnbG9iYWwkYjtpZigkaj09JGItPmRhdGFiYXNlKCkpcmV0dXJuJHRoaXMtPl9kYXRhYmFzZTskST1AcGdfY29ubmVjdCgiJHRoaXMtPl9zdHJpbmcgZGJuYW1lPSciLmFkZGNzbGFzaGVzKCRqLCInXFwiKS4iJyIsUEdTUUxfQ09OTkVDVF9GT1JDRV9ORVcpO2lmKCRJKSR0aGlzLT5fbGluaz0kSTtyZXR1cm4kSTt9ZnVuY3Rpb24KY2xvc2UoKXskdGhpcy0+X2xpbms9QHBnX2Nvbm5lY3QoIiR0aGlzLT5fc3RyaW5nIGRibmFtZT0ncG9zdGdyZXMnIik7fWZ1bmN0aW9uCnF1ZXJ5KCRHLCRCaT1mYWxzZSl7JEg9QHBnX3F1ZXJ5KCR0aGlzLT5fbGluaywkRyk7JHRoaXMtPmVycm9yPSIiO2lmKCEkSCl7JHRoaXMtPmVycm9yPXBnX2xhc3RfZXJyb3IoJHRoaXMtPl9saW5rKTskST1mYWxzZTt9ZWxzZWlmKCFwZ19udW1fZmllbGRzKCRIKSl7JHRoaXMtPmFmZmVjdGVkX3Jvd3M9cGdfYWZmZWN0ZWRfcm93cygkSCk7JEk9dHJ1ZTt9ZWxzZSRJPW5ldwpNaW5fUmVzdWx0KCRIKTtpZigkdGhpcy0+dGltZW91dCl7JHRoaXMtPnRpbWVvdXQ9MDskdGhpcy0+cXVlcnkoIlJFU0VUIHN0YXRlbWVudF90aW1lb3V0Iik7fXJldHVybiRJO31mdW5jdGlvbgptdWx0aV9xdWVyeSgkRyl7cmV0dXJuJHRoaXMtPl9yZXN1bHQ9JHRoaXMtPnF1ZXJ5KCRHKTt9ZnVuY3Rpb24Kc3RvcmVfcmVzdWx0KCl7cmV0dXJuJHRoaXMtPl9yZXN1bHQ7fWZ1bmN0aW9uCm5leHRfcmVzdWx0KCl7cmV0dXJuCmZhbHNlO31mdW5jdGlvbgpyZXN1bHQoJEcsJG89MCl7JEg9JHRoaXMtPnF1ZXJ5KCRHKTtpZighJEh8fCEkSC0+bnVtX3Jvd3MpcmV0dXJuCmZhbHNlO3JldHVybgpwZ19mZXRjaF9yZXN1bHQoJEgtPl9yZXN1bHQsMCwkbyk7fWZ1bmN0aW9uCndhcm5pbmdzKCl7cmV0dXJuCmgocGdfbGFzdF9ub3RpY2UoJHRoaXMtPl9saW5rKSk7fX1jbGFzcwpNaW5fUmVzdWx0e3ZhciRfcmVzdWx0LCRfb2Zmc2V0PTAsJG51bV9yb3dzO2Z1bmN0aW9uCl9fY29uc3RydWN0KCRIKXskdGhpcy0+X3Jlc3VsdD0kSDskdGhpcy0+bnVtX3Jvd3M9cGdfbnVtX3Jvd3MoJEgpO31mdW5jdGlvbgpmZXRjaF9hc3NvYygpe3JldHVybgpwZ19mZXRjaF9hc3NvYygkdGhpcy0+X3Jlc3VsdCk7fWZ1bmN0aW9uCmZldGNoX3Jvdygpe3JldHVybgpwZ19mZXRjaF9yb3coJHRoaXMtPl9yZXN1bHQpO31mdW5jdGlvbgpmZXRjaF9maWVsZCgpeyRlPSR0aGlzLT5fb2Zmc2V0Kys7JEk9bmV3CnN0ZENsYXNzO2lmKGZ1bmN0aW9uX2V4aXN0cygncGdfZmllbGRfdGFibGUnKSkkSS0+b3JndGFibGU9cGdfZmllbGRfdGFibGUoJHRoaXMtPl9yZXN1bHQsJGUpOyRJLT5uYW1lPXBnX2ZpZWxkX25hbWUoJHRoaXMtPl9yZXN1bHQsJGUpOyRJLT5vcmduYW1lPSRJLT5uYW1lOyRJLT50eXBlPXBnX2ZpZWxkX3R5cGUoJHRoaXMtPl9yZXN1bHQsJGUpOyRJLT5jaGFyc2V0bnI9KCRJLT50eXBlPT0iYnl0ZWEiPzYzOjApO3JldHVybiRJO31mdW5jdGlvbgpfX2Rlc3RydWN0KCl7cGdfZnJlZV9yZXN1bHQoJHRoaXMtPl9yZXN1bHQpO319fWVsc2VpZihleHRlbnNpb25fbG9hZGVkKCJwZG9fcGdzcWwiKSl7Y2xhc3MKTWluX0RCCmV4dGVuZHMKTWluX1BET3t2YXIkZXh0ZW5zaW9uPSJQRE9fUGdTUUwiLCR0aW1lb3V0O2Z1bmN0aW9uCmNvbm5lY3QoJE0sJFYsJEYpe2dsb2JhbCRiOyRsPSRiLT5kYXRhYmFzZSgpOyR0aGlzLT5kc24oInBnc3FsOmhvc3Q9JyIuc3RyX3JlcGxhY2UoIjoiLCInIHBvcnQ9JyIsYWRkY3NsYXNoZXMoJE0sIidcXCIpKS4iJyBjbGllbnRfZW5jb2Rpbmc9dXRmOCBkYm5hbWU9JyIuKCRsIT0iIj9hZGRjc2xhc2hlcygkbCwiJ1xcIik6InBvc3RncmVzIikuIiciLCRWLCRGKTtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24Kc2VsZWN0X2RiKCRqKXtnbG9iYWwkYjtyZXR1cm4oJGItPmRhdGFiYXNlKCk9PSRqKTt9ZnVuY3Rpb24KcXVvdGVCaW5hcnkoJFhnKXtyZXR1cm4KcSgkWGcpO31mdW5jdGlvbgpxdWVyeSgkRywkQmk9ZmFsc2UpeyRJPXBhcmVudDo6cXVlcnkoJEcsJEJpKTtpZigkdGhpcy0+dGltZW91dCl7JHRoaXMtPnRpbWVvdXQ9MDtwYXJlbnQ6OnF1ZXJ5KCJSRVNFVCBzdGF0ZW1lbnRfdGltZW91dCIpO31yZXR1cm4kSTt9ZnVuY3Rpb24Kd2FybmluZ3MoKXtyZXR1cm4nJzt9ZnVuY3Rpb24KY2xvc2UoKXt9fX1jbGFzcwpNaW5fRHJpdmVyCmV4dGVuZHMKTWluX1NRTHtmdW5jdGlvbgppbnNlcnRVcGRhdGUoJFEsJEssJGtnKXtnbG9iYWwkZztmb3JlYWNoKCRLCmFzJE4peyRJaT1hcnJheSgpOyRaPWFycmF5KCk7Zm9yZWFjaCgkTgphcyR6PT4kWCl7JElpW109IiR6ID0gJFgiO2lmKGlzc2V0KCRrZ1tpZGZfdW5lc2NhcGUoJHopXSkpJFpbXT0iJHogPSAkWCI7fWlmKCEoKCRaJiZxdWVyaWVzKCJVUERBVEUgIi50YWJsZSgkUSkuIiBTRVQgIi5pbXBsb2RlKCIsICIsJElpKS4iIFdIRVJFICIuaW1wbG9kZSgiIEFORCAiLCRaKSkmJiRnLT5hZmZlY3RlZF9yb3dzKXx8cXVlcmllcygiSU5TRVJUIElOVE8gIi50YWJsZSgkUSkuIiAoIi5pbXBsb2RlKCIsICIsYXJyYXlfa2V5cygkTikpLiIpIFZBTFVFUyAoIi5pbXBsb2RlKCIsICIsJE4pLiIpIikpKXJldHVybgpmYWxzZTt9cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnNsb3dRdWVyeSgkRywkZWkpeyR0aGlzLT5fY29ubi0+cXVlcnkoIlNFVCBzdGF0ZW1lbnRfdGltZW91dCA9ICIuKDEwMDAqJGVpKSk7JHRoaXMtPl9jb25uLT50aW1lb3V0PTEwMDAqJGVpO3JldHVybiRHO31mdW5jdGlvbgpjb252ZXJ0U2VhcmNoKCR2LCRYLCRvKXtyZXR1cm4ocHJlZ19tYXRjaCgnfmNoYXJ8dGV4dCcuKCFwcmVnX21hdGNoKCd+TElLRX4nLCRYWyJvcCJdKT8nfGRhdGV8dGltZShzdGFtcCk/fGJvb2xlYW58dXVpZHwnLm51bWJlcl90eXBlKCk6JycpLid+Jywkb1sidHlwZSJdKT8kdjoiQ0FTVCgkdiBBUyB0ZXh0KSIpO31mdW5jdGlvbgpxdW90ZUJpbmFyeSgkWGcpe3JldHVybiR0aGlzLT5fY29ubi0+cXVvdGVCaW5hcnkoJFhnKTt9ZnVuY3Rpb24Kd2FybmluZ3MoKXtyZXR1cm4kdGhpcy0+X2Nvbm4tPndhcm5pbmdzKCk7fWZ1bmN0aW9uCnRhYmxlSGVscCgkRCl7JHdlPWFycmF5KCJpbmZvcm1hdGlvbl9zY2hlbWEiPT4iaW5mb3NjaGVtYSIsInBnX2NhdGFsb2ciPT4iY2F0YWxvZyIsKTskQT0kd2VbJF9HRVRbIm5zIl1dO2lmKCRBKXJldHVybiIkQS0iLnN0cl9yZXBsYWNlKCJfIiwiLSIsJEQpLiIuaHRtbCI7fX1mdW5jdGlvbgppZGZfZXNjYXBlKCR2KXtyZXR1cm4nIicuc3RyX3JlcGxhY2UoJyInLCciIicsJHYpLiciJzt9ZnVuY3Rpb24KdGFibGUoJHYpe3JldHVybgppZGZfZXNjYXBlKCR2KTt9ZnVuY3Rpb24KY29ubmVjdCgpe2dsb2JhbCRiLCRVLCRHaDskZz1uZXcKTWluX0RCOyRLYj0kYi0+Y3JlZGVudGlhbHMoKTtpZigkZy0+Y29ubmVjdCgkS2JbMF0sJEtiWzFdLCRLYlsyXSkpe2lmKG1pbl92ZXJzaW9uKDksMCwkZykpeyRnLT5xdWVyeSgiU0VUIGFwcGxpY2F0aW9uX25hbWUgPSAnQWRtaW5lciciKTtpZihtaW5fdmVyc2lvbig5LjIsMCwkZykpeyRHaFsnU3RyaW5ncyddW109Impzb24iOyRVWyJqc29uIl09NDI5NDk2NzI5NTtpZihtaW5fdmVyc2lvbig5LjQsMCwkZykpeyRHaFsnU3RyaW5ncyddW109Impzb25iIjskVVsianNvbmIiXT00Mjk0OTY3Mjk1O319fXJldHVybiRnO31yZXR1cm4kZy0+ZXJyb3I7fWZ1bmN0aW9uCmdldF9kYXRhYmFzZXMoKXtyZXR1cm4KZ2V0X3ZhbHMoIlNFTEVDVCBkYXRuYW1lIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgaGFzX2RhdGFiYXNlX3ByaXZpbGVnZShkYXRuYW1lLCAnQ09OTkVDVCcpIE9SREVSIEJZIGRhdG5hbWUiKTt9ZnVuY3Rpb24KbGltaXQoJEcsJFosJF8sJGhmPTAsJGhoPSIgIil7cmV0dXJuIiAkRyRaIi4oJF8hPT1udWxsPyRoaC4iTElNSVQgJF8iLigkaGY/IiBPRkZTRVQgJGhmIjoiIik6IiIpO31mdW5jdGlvbgpsaW1pdDEoJFEsJEcsJFosJGhoPSJcbiIpe3JldHVybihwcmVnX21hdGNoKCd+XklOVE9+JywkRyk/bGltaXQoJEcsJFosMSwwLCRoaCk6IiAkRyIuKGlzX3ZpZXcodGFibGVfc3RhdHVzMSgkUSkpPyRaOiIgV0hFUkUgY3RpZCA9IChTRUxFQ1QgY3RpZCBGUk9NICIudGFibGUoJFEpLiRaLiRoaC4iTElNSVQgMSkiKSk7fWZ1bmN0aW9uCmRiX2NvbGxhdGlvbigkbCwkbGIpe2dsb2JhbCRnO3JldHVybiRnLT5yZXN1bHQoIlNFTEVDVCBkYXRjb2xsYXRlIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9ICIucSgkbCkpO31mdW5jdGlvbgplbmdpbmVzKCl7cmV0dXJuCmFycmF5KCk7fWZ1bmN0aW9uCmxvZ2dlZF91c2VyKCl7Z2xvYmFsJGc7cmV0dXJuJGctPnJlc3VsdCgiU0VMRUNUIHVzZXIiKTt9ZnVuY3Rpb24KdGFibGVzX2xpc3QoKXskRz0iU0VMRUNUIHRhYmxlX25hbWUsIHRhYmxlX3R5cGUgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX3NjaGVtYSA9IGN1cnJlbnRfc2NoZW1hKCkiO2lmKHN1cHBvcnQoJ21hdGVyaWFsaXplZHZpZXcnKSkkRy49IgpVTklPTiBBTEwKU0VMRUNUIG1hdHZpZXduYW1lLCAnTUFURVJJQUxJWkVEIFZJRVcnCkZST00gcGdfbWF0dmlld3MKV0hFUkUgc2NoZW1hbmFtZSA9IGN1cnJlbnRfc2NoZW1hKCkiOyRHLj0iCk9SREVSIEJZIDEiO3JldHVybgpnZXRfa2V5X3ZhbHMoJEcpO31mdW5jdGlvbgpjb3VudF90YWJsZXMoJGspe3JldHVybgphcnJheSgpO31mdW5jdGlvbgp0YWJsZV9zdGF0dXMoJEQ9IiIpeyRJPWFycmF5KCk7Zm9yZWFjaChnZXRfcm93cygiU0VMRUNUIGMucmVsbmFtZSBBUyBcIk5hbWVcIiwgQ0FTRSBjLnJlbGtpbmQgV0hFTiAncicgVEhFTiAndGFibGUnIFdIRU4gJ20nIFRIRU4gJ21hdGVyaWFsaXplZCB2aWV3JyBFTFNFICd2aWV3JyBFTkQgQVMgXCJFbmdpbmVcIiwgcGdfcmVsYXRpb25fc2l6ZShjLm9pZCkgQVMgXCJEYXRhX2xlbmd0aFwiLCBwZ190b3RhbF9yZWxhdGlvbl9zaXplKGMub2lkKSAtIHBnX3JlbGF0aW9uX3NpemUoYy5vaWQpIEFTIFwiSW5kZXhfbGVuZ3RoXCIsIG9ial9kZXNjcmlwdGlvbihjLm9pZCwgJ3BnX2NsYXNzJykgQVMgXCJDb21tZW50XCIsICIuKG1pbl92ZXJzaW9uKDEyKT8iJyciOiJDQVNFIFdIRU4gYy5yZWxoYXNvaWRzIFRIRU4gJ29pZCcgRUxTRSAnJyBFTkQiKS4iIEFTIFwiT2lkXCIsIGMucmVsdHVwbGVzIGFzIFwiUm93c1wiLCBuLm5zcG5hbWUKRlJPTSBwZ19jbGFzcyBjCkpPSU4gcGdfbmFtZXNwYWNlIG4gT04obi5uc3BuYW1lID0gY3VycmVudF9zY2hlbWEoKSBBTkQgbi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkKV0hFUkUgcmVsa2luZCBJTiAoJ3InLCAnbScsICd2JywgJ2YnLCAncCcpCiIuKCREIT0iIj8iQU5EIHJlbG5hbWUgPSAiLnEoJEQpOiJPUkRFUiBCWSByZWxuYW1lIikpYXMkSikkSVskSlsiTmFtZSJdXT0kSjtyZXR1cm4oJEQhPSIiPyRJWyREXTokSSk7fWZ1bmN0aW9uCmlzX3ZpZXcoJFIpe3JldHVybgppbl9hcnJheSgkUlsiRW5naW5lIl0sYXJyYXkoInZpZXciLCJtYXRlcmlhbGl6ZWQgdmlldyIpKTt9ZnVuY3Rpb24KZmtfc3VwcG9ydCgkUil7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCmZpZWxkcygkUSl7JEk9YXJyYXkoKTskQmE9YXJyYXkoJ3RpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSc9Pid0aW1lc3RhbXAnLCd0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUnPT4ndGltZXN0YW1wdHonLCk7Zm9yZWFjaChnZXRfcm93cygiU0VMRUNUIGEuYXR0bmFtZSBBUyBmaWVsZCwgZm9ybWF0X3R5cGUoYS5hdHR0eXBpZCwgYS5hdHR0eXBtb2QpIEFTIGZ1bGxfdHlwZSwgcGdfZ2V0X2V4cHIoZC5hZGJpbiwgZC5hZHJlbGlkKSBBUyBkZWZhdWx0LCBhLmF0dG5vdG51bGw6OmludCwgY29sX2Rlc2NyaXB0aW9uKGMub2lkLCBhLmF0dG51bSkgQVMgY29tbWVudCIuKG1pbl92ZXJzaW9uKDEwKT8iLCBhLmF0dGlkZW50aXR5IjoiIikuIgpGUk9NIHBnX2NsYXNzIGMKSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkCkpPSU4gcGdfYXR0cmlidXRlIGEgT04gYy5vaWQgPSBhLmF0dHJlbGlkCkxFRlQgSk9JTiBwZ19hdHRyZGVmIGQgT04gYy5vaWQgPSBkLmFkcmVsaWQgQU5EIGEuYXR0bnVtID0gZC5hZG51bQpXSEVSRSBjLnJlbG5hbWUgPSAiLnEoJFEpLiIKQU5EIG4ubnNwbmFtZSA9IGN1cnJlbnRfc2NoZW1hKCkKQU5EIE5PVCBhLmF0dGlzZHJvcHBlZApBTkQgYS5hdHRudW0gPiAwCk9SREVSIEJZIGEuYXR0bnVtIilhcyRKKXtwcmVnX21hdGNoKCd+KFteKFtdKykoXCgoLiopXCkpPyhbYS16IF0rKT8oKFxbWzAtOV0qXSkqKSR+JywkSlsiZnVsbF90eXBlIl0sJEMpO2xpc3QoLCRULCR0ZSwkSlsibGVuZ3RoIl0sJHdhLCRFYSk9JEM7JEpbImxlbmd0aCJdLj0kRWE7JGJiPSRULiR3YTtpZihpc3NldCgkQmFbJGJiXSkpeyRKWyJ0eXBlIl09JEJhWyRiYl07JEpbImZ1bGxfdHlwZSJdPSRKWyJ0eXBlIl0uJHRlLiRFYTt9ZWxzZXskSlsidHlwZSJdPSRUOyRKWyJmdWxsX3R5cGUiXT0kSlsidHlwZSJdLiR0ZS4kd2EuJEVhO31pZihpbl9hcnJheSgkSlsnYXR0aWRlbnRpdHknXSxhcnJheSgnYScsJ2QnKSkpJEpbJ2RlZmF1bHQnXT0nR0VORVJBVEVEICcuKCRKWydhdHRpZGVudGl0eSddPT0nZCc/J0JZIERFRkFVTFQnOidBTFdBWVMnKS4nIEFTIElERU5USVRZJzskSlsibnVsbCJdPSEkSlsiYXR0bm90bnVsbCJdOyRKWyJhdXRvX2luY3JlbWVudCJdPSRKWydhdHRpZGVudGl0eSddfHxwcmVnX21hdGNoKCd+Xm5leHR2YWxcKH5pJywkSlsiZGVmYXVsdCJdKTskSlsicHJpdmlsZWdlcyJdPWFycmF5KCJpbnNlcnQiPT4xLCJzZWxlY3QiPT4xLCJ1cGRhdGUiPT4xKTtpZihwcmVnX21hdGNoKCd+KC4rKTo6W14sKV0rKC4qKX4nLCRKWyJkZWZhdWx0Il0sJEMpKSRKWyJkZWZhdWx0Il09KCRDWzFdPT0iTlVMTCI/bnVsbDppZGZfdW5lc2NhcGUoJENbMV0pLiRDWzJdKTskSVskSlsiZmllbGQiXV09JEo7fXJldHVybiRJO31mdW5jdGlvbgppbmRleGVzKCRRLCRoPW51bGwpe2dsb2JhbCRnO2lmKCFpc19vYmplY3QoJGgpKSRoPSRnOyRJPWFycmF5KCk7JFBoPSRoLT5yZXN1bHQoIlNFTEVDVCBvaWQgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lc3BhY2UgPSAoU0VMRUNUIG9pZCBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBuc3BuYW1lID0gY3VycmVudF9zY2hlbWEoKSkgQU5EIHJlbG5hbWUgPSAiLnEoJFEpKTskZj1nZXRfa2V5X3ZhbHMoIlNFTEVDVCBhdHRudW0sIGF0dG5hbWUgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0cmVsaWQgPSAkUGggQU5EIGF0dG51bSA+IDAiLCRoKTtmb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgcmVsbmFtZSwgaW5kaXN1bmlxdWU6OmludCwgaW5kaXNwcmltYXJ5OjppbnQsIGluZGtleSwgaW5kb3B0aW9uLCAoaW5kcHJlZCBJUyBOT1QgTlVMTCk6OmludCBhcyBpbmRpc3BhcnRpYWwgRlJPTSBwZ19pbmRleCBpLCBwZ19jbGFzcyBjaSBXSEVSRSBpLmluZHJlbGlkID0gJFBoIEFORCBjaS5vaWQgPSBpLmluZGV4cmVsaWQiLCRoKWFzJEopeyRIZz0kSlsicmVsbmFtZSJdOyRJWyRIZ11bInR5cGUiXT0oJEpbImluZGlzcGFydGlhbCJdPyJJTkRFWCI6KCRKWyJpbmRpc3ByaW1hcnkiXT8iUFJJTUFSWSI6KCRKWyJpbmRpc3VuaXF1ZSJdPyJVTklRVUUiOiJJTkRFWCIpKSk7JElbJEhnXVsiY29sdW1ucyJdPWFycmF5KCk7Zm9yZWFjaChleHBsb2RlKCIgIiwkSlsiaW5ka2V5Il0pYXMkUGQpJElbJEhnXVsiY29sdW1ucyJdW109JGZbJFBkXTskSVskSGddWyJkZXNjcyJdPWFycmF5KCk7Zm9yZWFjaChleHBsb2RlKCIgIiwkSlsiaW5kb3B0aW9uIl0pYXMkUWQpJElbJEhnXVsiZGVzY3MiXVtdPSgkUWQmMT8nMSc6bnVsbCk7JElbJEhnXVsibGVuZ3RocyJdPWFycmF5KCk7fXJldHVybiRJO31mdW5jdGlvbgpmb3JlaWduX2tleXMoJFEpe2dsb2JhbCRwZjskST1hcnJheSgpO2ZvcmVhY2goZ2V0X3Jvd3MoIlNFTEVDVCBjb25uYW1lLCBjb25kZWZlcnJhYmxlOjppbnQgQVMgZGVmZXJyYWJsZSwgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBBUyBkZWZpbml0aW9uCkZST00gcGdfY29uc3RyYWludApXSEVSRSBjb25yZWxpZCA9IChTRUxFQ1QgcGMub2lkIEZST00gcGdfY2xhc3MgQVMgcGMgSU5ORVIgSk9JTiBwZ19uYW1lc3BhY2UgQVMgcG4gT04gKHBuLm9pZCA9IHBjLnJlbG5hbWVzcGFjZSkgV0hFUkUgcGMucmVsbmFtZSA9ICIucSgkUSkuIiBBTkQgcG4ubnNwbmFtZSA9IGN1cnJlbnRfc2NoZW1hKCkpCkFORCBjb250eXBlID0gJ2YnOjpjaGFyCk9SREVSIEJZIGNvbmtleSwgY29ubmFtZSIpYXMkSil7aWYocHJlZ19tYXRjaCgnfkZPUkVJR04gS0VZXHMqXCgoLispXClccypSRUZFUkVOQ0VTICguKylcKCguKylcKSguKikkfmlBJywkSlsnZGVmaW5pdGlvbiddLCRDKSl7JEpbJ3NvdXJjZSddPWFycmF5X21hcCgnaWRmX3VuZXNjYXBlJyxhcnJheV9tYXAoJ3RyaW0nLGV4cGxvZGUoJywnLCRDWzFdKSkpO2lmKHByZWdfbWF0Y2goJ35eKCgiKFteIl18IiIpKyJ8W14iXSspXC4pPyI/KCIoW14iXXwiIikrInxbXiJdKykkficsJENbMl0sJEJlKSl7JEpbJ25zJ109aWRmX3VuZXNjYXBlKCRCZVsyXSk7JEpbJ3RhYmxlJ109aWRmX3VuZXNjYXBlKCRCZVs0XSk7fSRKWyd0YXJnZXQnXT1hcnJheV9tYXAoJ2lkZl91bmVzY2FwZScsYXJyYXlfbWFwKCd0cmltJyxleHBsb2RlKCcsJywkQ1szXSkpKTskSlsnb25fZGVsZXRlJ109KHByZWdfbWF0Y2goIn5PTiBERUxFVEUgKCRwZil+IiwkQ1s0XSwkQmUpPyRCZVsxXTonTk8gQUNUSU9OJyk7JEpbJ29uX3VwZGF0ZSddPShwcmVnX21hdGNoKCJ+T04gVVBEQVRFICgkcGYpfiIsJENbNF0sJEJlKT8kQmVbMV06J05PIEFDVElPTicpOyRJWyRKWydjb25uYW1lJ11dPSRKO319cmV0dXJuJEk7fWZ1bmN0aW9uCmNvbnN0cmFpbnRzKCRRKXtnbG9iYWwkcGY7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgY29ubmFtZSwgY29uc3JjCkZST00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50CklOTkVSIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgT04gcGdfY29uc3RyYWludC5jb25uYW1lc3BhY2UgPSBwZ19uYW1lc3BhY2Uub2lkCklOTkVSIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBPTiBwZ19jb25zdHJhaW50LmNvbnJlbGlkID0gcGdfY2xhc3Mub2lkIEFORCBwZ19jb25zdHJhaW50LmNvbm5hbWVzcGFjZSA9IHBnX2NsYXNzLnJlbG5hbWVzcGFjZQpXSEVSRSBwZ19jb25zdHJhaW50LmNvbnR5cGUgPSAnYycKQU5EIGNvbnJlbGlkICE9IDAgLS0gaGFuZGxlIG9ubHkgQ09OU1RSQUlOVHMgaGVyZSwgbm90IFRZUEVTCkFORCBuc3BuYW1lID0gY3VycmVudF9zY2hlbWEoKQpBTkQgcmVsbmFtZSA9ICIucSgkUSkuIgpPUkRFUiBCWSBjb25uYW1lc3BhY2UsIGNvbm5hbWUiKWFzJEopJElbJEpbJ2Nvbm5hbWUnXV09JEpbJ2NvbnNyYyddO3JldHVybiRJO31mdW5jdGlvbgp2aWV3KCREKXtnbG9iYWwkZztyZXR1cm4KYXJyYXkoInNlbGVjdCI9PnRyaW0oJGctPnJlc3VsdCgiU0VMRUNUIHBnX2dldF92aWV3ZGVmKCIuJGctPnJlc3VsdCgiU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWVzcGFjZSA9IChTRUxFQ1Qgb2lkIEZST00gcGdfbmFtZXNwYWNlIFdIRVJFIG5zcG5hbWUgPSBjdXJyZW50X3NjaGVtYSgpKSBBTkQgcmVsbmFtZSA9ICIucSgkRCkpLiIpIikpKTt9ZnVuY3Rpb24KY29sbGF0aW9ucygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgppbmZvcm1hdGlvbl9zY2hlbWEoJGwpe3JldHVybigkbD09ImluZm9ybWF0aW9uX3NjaGVtYSIpO31mdW5jdGlvbgplcnJvcigpe2dsb2JhbCRnOyRJPWgoJGctPmVycm9yKTtpZihwcmVnX21hdGNoKCd+XiguKlxuKT8oW15cbl0qKVxuKCAqKVxeKFxuLiopPyR+cycsJEksJEMpKSRJPSRDWzFdLnByZWdfcmVwbGFjZSgnfigoPzpbXiZdfCZbXjtdKjspeycuc3RybGVuKCRDWzNdKS4nfSkoLiopficsJ1wxPGI+XDI8L2I+JywkQ1syXSkuJENbNF07cmV0dXJuCm5sX2JyKCRJKTt9ZnVuY3Rpb24KY3JlYXRlX2RhdGFiYXNlKCRsLCRkKXtyZXR1cm4KcXVlcmllcygiQ1JFQVRFIERBVEFCQVNFICIuaWRmX2VzY2FwZSgkbCkuKCRkPyIgRU5DT0RJTkcgIi5pZGZfZXNjYXBlKCRkKToiIikpO31mdW5jdGlvbgpkcm9wX2RhdGFiYXNlcygkayl7Z2xvYmFsJGc7JGctPmNsb3NlKCk7cmV0dXJuCmFwcGx5X3F1ZXJpZXMoIkRST1AgREFUQUJBU0UiLCRrLCdpZGZfZXNjYXBlJyk7fWZ1bmN0aW9uCnJlbmFtZV9kYXRhYmFzZSgkRCwkZCl7cmV0dXJuCnF1ZXJpZXMoIkFMVEVSIERBVEFCQVNFICIuaWRmX2VzY2FwZShEQikuIiBSRU5BTUUgVE8gIi5pZGZfZXNjYXBlKCREKSk7fWZ1bmN0aW9uCmF1dG9faW5jcmVtZW50KCl7cmV0dXJuIiI7fWZ1bmN0aW9uCmFsdGVyX3RhYmxlKCRRLCRELCRwLCRmZCwkcmIsJHljLCRkLCRLYSwkVGYpeyRjPWFycmF5KCk7JHZnPWFycmF5KCk7aWYoJFEhPSIiJiYkUSE9JEQpJHZnW109IkFMVEVSIFRBQkxFICIudGFibGUoJFEpLiIgUkVOQU1FIFRPICIudGFibGUoJEQpO2ZvcmVhY2goJHAKYXMkbyl7JGU9aWRmX2VzY2FwZSgkb1swXSk7JFg9JG9bMV07aWYoISRYKSRjW109IkRST1AgJGUiO2Vsc2V7JFNpPSRYWzVdO3Vuc2V0KCRYWzVdKTtpZigkb1swXT09IiIpe2lmKGlzc2V0KCRYWzZdKSkkWFsxXT0oJFhbMV09PSIgYmlnaW50Ij8iIGJpZyI6KCRYWzFdPT0iIHNtYWxsaW50Ij8iIHNtYWxsIjoiICIpKS4ic2VyaWFsIjskY1tdPSgkUSE9IiI/IkFERCAiOiIgICIpLmltcGxvZGUoJFgpO2lmKGlzc2V0KCRYWzZdKSkkY1tdPSgkUSE9IiI/IkFERCI6IiAiKS4iIFBSSU1BUlkgS0VZICgkWFswXSkiO31lbHNle2lmKCRlIT0kWFswXSkkdmdbXT0iQUxURVIgVEFCTEUgIi50YWJsZSgkRCkuIiBSRU5BTUUgJGUgVE8gJFhbMF0iOyRjW109IkFMVEVSICRlIFRZUEUkWFsxXSI7aWYoISRYWzZdKXskY1tdPSJBTFRFUiAkZSAiLigkWFszXT8iU0VUJFhbM10iOiJEUk9QIERFRkFVTFQiKTskY1tdPSJBTFRFUiAkZSAiLigkWFsyXT09IiBOVUxMIj8iRFJPUCBOT1QiOiJTRVQiKS4kWFsyXTt9fWlmKCRvWzBdIT0iInx8JFNpIT0iIikkdmdbXT0iQ09NTUVOVCBPTiBDT0xVTU4gIi50YWJsZSgkRCkuIi4kWFswXSBJUyAiLigkU2khPSIiP3N1YnN0cigkU2ksOSk6IicnIik7fX0kYz1hcnJheV9tZXJnZSgkYywkZmQpO2lmKCRRPT0iIilhcnJheV91bnNoaWZ0KCR2ZywiQ1JFQVRFIFRBQkxFICIudGFibGUoJEQpLiIgKFxuIi5pbXBsb2RlKCIsXG4iLCRjKS4iXG4pIik7ZWxzZWlmKCRjKWFycmF5X3Vuc2hpZnQoJHZnLCJBTFRFUiBUQUJMRSAiLnRhYmxlKCRRKS4iXG4iLmltcGxvZGUoIixcbiIsJGMpKTtpZigkUSE9IiJ8fCRyYiE9IiIpJHZnW109IkNPTU1FTlQgT04gVEFCTEUgIi50YWJsZSgkRCkuIiBJUyAiLnEoJHJiKTtpZigkS2EhPSIiKXt9Zm9yZWFjaCgkdmcKYXMkRyl7aWYoIXF1ZXJpZXMoJEcpKXJldHVybgpmYWxzZTt9cmV0dXJuCnRydWU7fWZ1bmN0aW9uCmFsdGVyX2luZGV4ZXMoJFEsJGMpeyRpPWFycmF5KCk7JGpjPWFycmF5KCk7JHZnPWFycmF5KCk7Zm9yZWFjaCgkYwphcyRYKXtpZigkWFswXSE9IklOREVYIikkaVtdPSgkWFsyXT09IkRST1AiPyJcbkRST1AgQ09OU1RSQUlOVCAiLmlkZl9lc2NhcGUoJFhbMV0pOiJcbkFERCIuKCRYWzFdIT0iIj8iIENPTlNUUkFJTlQgIi5pZGZfZXNjYXBlKCRYWzFdKToiIikuIiAkWFswXSAiLigkWFswXT09IlBSSU1BUlkiPyJLRVkgIjoiIikuIigiLmltcGxvZGUoIiwgIiwkWFsyXSkuIikiKTtlbHNlaWYoJFhbMl09PSJEUk9QIikkamNbXT1pZGZfZXNjYXBlKCRYWzFdKTtlbHNlJHZnW109IkNSRUFURSBJTkRFWCAiLmlkZl9lc2NhcGUoJFhbMV0hPSIiPyRYWzFdOnVuaXFpZCgkUS4iXyIpKS4iIE9OICIudGFibGUoJFEpLiIgKCIuaW1wbG9kZSgiLCAiLCRYWzJdKS4iKSI7fWlmKCRpKWFycmF5X3Vuc2hpZnQoJHZnLCJBTFRFUiBUQUJMRSAiLnRhYmxlKCRRKS5pbXBsb2RlKCIsIiwkaSkpO2lmKCRqYylhcnJheV91bnNoaWZ0KCR2ZywiRFJPUCBJTkRFWCAiLmltcGxvZGUoIiwgIiwkamMpKTtmb3JlYWNoKCR2ZwphcyRHKXtpZighcXVlcmllcygkRykpcmV0dXJuCmZhbHNlO31yZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KdHJ1bmNhdGVfdGFibGVzKCRTKXtyZXR1cm4KcXVlcmllcygiVFJVTkNBVEUgIi5pbXBsb2RlKCIsICIsYXJyYXlfbWFwKCd0YWJsZScsJFMpKSk7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCmRyb3Bfdmlld3MoJFlpKXtyZXR1cm4KZHJvcF90YWJsZXMoJFlpKTt9ZnVuY3Rpb24KZHJvcF90YWJsZXMoJFMpe2ZvcmVhY2goJFMKYXMkUSl7JE89dGFibGVfc3RhdHVzKCRRKTtpZighcXVlcmllcygiRFJPUCAiLnN0cnRvdXBwZXIoJE9bIkVuZ2luZSJdKS4iICIudGFibGUoJFEpKSlyZXR1cm4KZmFsc2U7fXJldHVybgp0cnVlO31mdW5jdGlvbgptb3ZlX3RhYmxlcygkUywkWWksJFdoKXtmb3JlYWNoKGFycmF5X21lcmdlKCRTLCRZaSlhcyRRKXskTz10YWJsZV9zdGF0dXMoJFEpO2lmKCFxdWVyaWVzKCJBTFRFUiAiLnN0cnRvdXBwZXIoJE9bIkVuZ2luZSJdKS4iICIudGFibGUoJFEpLiIgU0VUIFNDSEVNQSAiLmlkZl9lc2NhcGUoJFdoKSkpcmV0dXJuCmZhbHNlO31yZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KdHJpZ2dlcigkRCwkUSl7aWYoJEQ9PSIiKXJldHVybgphcnJheSgiU3RhdGVtZW50Ij0+IkVYRUNVVEUgUFJPQ0VEVVJFICgpIik7JGY9YXJyYXkoKTskWj0iV0hFUkUgdHJpZ2dlcl9zY2hlbWEgPSBjdXJyZW50X3NjaGVtYSgpIEFORCBldmVudF9vYmplY3RfdGFibGUgPSAiLnEoJFEpLiIgQU5EIHRyaWdnZXJfbmFtZSA9ICIucSgkRCk7Zm9yZWFjaChnZXRfcm93cygiU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudHJpZ2dlcmVkX3VwZGF0ZV9jb2x1bW5zICRaIilhcyRKKSRmW109JEpbImV2ZW50X29iamVjdF9jb2x1bW4iXTskST1hcnJheSgpO2ZvcmVhY2goZ2V0X3Jvd3MoJ1NFTEVDVCB0cmlnZ2VyX25hbWUgQVMgIlRyaWdnZXIiLCBhY3Rpb25fdGltaW5nIEFTICJUaW1pbmciLCBldmVudF9tYW5pcHVsYXRpb24gQVMgIkV2ZW50IiwgXCdGT1IgRUFDSCBcJyB8fCBhY3Rpb25fb3JpZW50YXRpb24gQVMgIlR5cGUiLCBhY3Rpb25fc3RhdGVtZW50IEFTICJTdGF0ZW1lbnQiIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRyaWdnZXJzICcuIiRaIE9SREVSIEJZIGV2ZW50X21hbmlwdWxhdGlvbiBERVNDIilhcyRKKXtpZigkZiYmJEpbIkV2ZW50Il09PSJVUERBVEUiKSRKWyJFdmVudCJdLj0iIE9GIjskSlsiT2YiXT1pbXBsb2RlKCIsICIsJGYpO2lmKCRJKSRKWyJFdmVudCJdLj0iIE9SICRJW0V2ZW50XSI7JEk9JEo7fXJldHVybiRJO31mdW5jdGlvbgp0cmlnZ2VycygkUSl7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgKiBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50cmlnZ2VycyBXSEVSRSB0cmlnZ2VyX3NjaGVtYSA9IGN1cnJlbnRfc2NoZW1hKCkgQU5EIGV2ZW50X29iamVjdF90YWJsZSA9ICIucSgkUSkpYXMkSil7JHdpPXRyaWdnZXIoJEpbInRyaWdnZXJfbmFtZSJdLCRRKTskSVskd2lbIlRyaWdnZXIiXV09YXJyYXkoJHdpWyJUaW1pbmciXSwkd2lbIkV2ZW50Il0pO31yZXR1cm4kSTt9ZnVuY3Rpb24KdHJpZ2dlcl9vcHRpb25zKCl7cmV0dXJuCmFycmF5KCJUaW1pbmciPT5hcnJheSgiQkVGT1JFIiwiQUZURVIiKSwiRXZlbnQiPT5hcnJheSgiSU5TRVJUIiwiVVBEQVRFIiwiVVBEQVRFIE9GIiwiREVMRVRFIiwiSU5TRVJUIE9SIFVQREFURSIsIklOU0VSVCBPUiBVUERBVEUgT0YiLCJERUxFVEUgT1IgSU5TRVJUIiwiREVMRVRFIE9SIFVQREFURSIsIkRFTEVURSBPUiBVUERBVEUgT0YiLCJERUxFVEUgT1IgSU5TRVJUIE9SIFVQREFURSIsIkRFTEVURSBPUiBJTlNFUlQgT1IgVVBEQVRFIE9GIiksIlR5cGUiPT5hcnJheSgiRk9SIEVBQ0ggUk9XIiwiRk9SIEVBQ0ggU1RBVEVNRU5UIiksKTt9ZnVuY3Rpb24Kcm91dGluZSgkRCwkVCl7JEs9Z2V0X3Jvd3MoJ1NFTEVDVCByb3V0aW5lX2RlZmluaXRpb24gQVMgZGVmaW5pdGlvbiwgTE9XRVIoZXh0ZXJuYWxfbGFuZ3VhZ2UpIEFTIGxhbmd1YWdlLCAqCkZST00gaW5mb3JtYXRpb25fc2NoZW1hLnJvdXRpbmVzCldIRVJFIHJvdXRpbmVfc2NoZW1hID0gY3VycmVudF9zY2hlbWEoKSBBTkQgc3BlY2lmaWNfbmFtZSA9ICcucSgkRCkpOyRJPSRLWzBdOyRJWyJyZXR1cm5zIl09YXJyYXkoInR5cGUiPT4kSVsidHlwZV91ZHRfbmFtZSJdKTskSVsiZmllbGRzIl09Z2V0X3Jvd3MoJ1NFTEVDVCBwYXJhbWV0ZXJfbmFtZSBBUyBmaWVsZCwgZGF0YV90eXBlIEFTIHR5cGUsIGNoYXJhY3Rlcl9tYXhpbXVtX2xlbmd0aCBBUyBsZW5ndGgsIHBhcmFtZXRlcl9tb2RlIEFTIGlub3V0CkZST00gaW5mb3JtYXRpb25fc2NoZW1hLnBhcmFtZXRlcnMKV0hFUkUgc3BlY2lmaWNfc2NoZW1hID0gY3VycmVudF9zY2hlbWEoKSBBTkQgc3BlY2lmaWNfbmFtZSA9ICcucSgkRCkuJwpPUkRFUiBCWSBvcmRpbmFsX3Bvc2l0aW9uJyk7cmV0dXJuJEk7fWZ1bmN0aW9uCnJvdXRpbmVzKCl7cmV0dXJuCmdldF9yb3dzKCdTRUxFQ1Qgc3BlY2lmaWNfbmFtZSBBUyAiU1BFQ0lGSUNfTkFNRSIsIHJvdXRpbmVfdHlwZSBBUyAiUk9VVElORV9UWVBFIiwgcm91dGluZV9uYW1lIEFTICJST1VUSU5FX05BTUUiLCB0eXBlX3VkdF9uYW1lIEFTICJEVERfSURFTlRJRklFUiIKRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucm91dGluZXMKV0hFUkUgcm91dGluZV9zY2hlbWEgPSBjdXJyZW50X3NjaGVtYSgpCk9SREVSIEJZIFNQRUNJRklDX05BTUUnKTt9ZnVuY3Rpb24Kcm91dGluZV9sYW5ndWFnZXMoKXtyZXR1cm4KZ2V0X3ZhbHMoIlNFTEVDVCBMT1dFUihsYW5uYW1lKSBGUk9NIHBnX2NhdGFsb2cucGdfbGFuZ3VhZ2UiKTt9ZnVuY3Rpb24Kcm91dGluZV9pZCgkRCwkSil7JEk9YXJyYXkoKTtmb3JlYWNoKCRKWyJmaWVsZHMiXWFzJG8pJElbXT0kb1sidHlwZSJdO3JldHVybgppZGZfZXNjYXBlKCREKS4iKCIuaW1wbG9kZSgiLCAiLCRJKS4iKSI7fWZ1bmN0aW9uCmxhc3RfaWQoKXtyZXR1cm4KMDt9ZnVuY3Rpb24KZXhwbGFpbigkZywkRyl7cmV0dXJuJGctPnF1ZXJ5KCJFWFBMQUlOICRHIik7fWZ1bmN0aW9uCmZvdW5kX3Jvd3MoJFIsJFope2dsb2JhbCRnO2lmKHByZWdfbWF0Y2goIn4gcm93cz0oWzAtOV0rKX4iLCRnLT5yZXN1bHQoIkVYUExBSU4gU0VMRUNUICogRlJPTSAiLmlkZl9lc2NhcGUoJFJbIk5hbWUiXSkuKCRaPyIgV0hFUkUgIi5pbXBsb2RlKCIgQU5EICIsJFopOiIiKSksJEdnKSlyZXR1cm4kR2dbMV07cmV0dXJuCmZhbHNlO31mdW5jdGlvbgp0eXBlcygpe3JldHVybgpnZXRfdmFscygiU0VMRUNUIHR5cG5hbWUKRlJPTSBwZ190eXBlCldIRVJFIHR5cG5hbWVzcGFjZSA9IChTRUxFQ1Qgb2lkIEZST00gcGdfbmFtZXNwYWNlIFdIRVJFIG5zcG5hbWUgPSBjdXJyZW50X3NjaGVtYSgpKQpBTkQgdHlwdHlwZSBJTiAoJ2InLCdkJywnZScpCkFORCB0eXBlbGVtID0gMCIpO31mdW5jdGlvbgpzY2hlbWFzKCl7cmV0dXJuCmdldF92YWxzKCJTRUxFQ1QgbnNwbmFtZSBGUk9NIHBnX25hbWVzcGFjZSBPUkRFUiBCWSBuc3BuYW1lIik7fWZ1bmN0aW9uCmdldF9zY2hlbWEoKXtnbG9iYWwkZztyZXR1cm4kZy0+cmVzdWx0KCJTRUxFQ1QgY3VycmVudF9zY2hlbWEoKSIpO31mdW5jdGlvbgpzZXRfc2NoZW1hKCRaZywkaD1udWxsKXtnbG9iYWwkZywkVSwkR2g7aWYoISRoKSRoPSRnOyRJPSRoLT5xdWVyeSgiU0VUIHNlYXJjaF9wYXRoIFRPICIuaWRmX2VzY2FwZSgkWmcpKTtmb3JlYWNoKHR5cGVzKClhcyRUKXtpZighaXNzZXQoJFVbJFRdKSl7JFVbJFRdPTA7JEdoWydVc2VyIHR5cGVzJ11bXT0kVDt9fXJldHVybiRJO31mdW5jdGlvbgpmb3JlaWduX2tleXNfc3FsKCRRKXskST0iIjskTz10YWJsZV9zdGF0dXMoJFEpOyRjZD1mb3JlaWduX2tleXMoJFEpO2tzb3J0KCRjZCk7Zm9yZWFjaCgkY2QKYXMkYmQ9PiRhZCkkSS49IkFMVEVSIFRBQkxFIE9OTFkgIi5pZGZfZXNjYXBlKCRPWyduc3BuYW1lJ10pLiIuIi5pZGZfZXNjYXBlKCRPWydOYW1lJ10pLiIgQUREIENPTlNUUkFJTlQgIi5pZGZfZXNjYXBlKCRiZCkuIiAkYWRbZGVmaW5pdGlvbl0gIi4oJGFkWydkZWZlcnJhYmxlJ10/J0RFRkVSUkFCTEUnOidOT1QgREVGRVJSQUJMRScpLiI7XG4iO3JldHVybigkST8iJElcbiI6JEkpO31mdW5jdGlvbgpjcmVhdGVfc3FsKCRRLCRLYSwkSGgpe2dsb2JhbCRnOyRJPScnOyRQZz1hcnJheSgpOyRqaD1hcnJheSgpOyRPPXRhYmxlX3N0YXR1cygkUSk7aWYoaXNfdmlldygkTykpeyRYaT12aWV3KCRRKTtyZXR1cm4KcnRyaW0oIkNSRUFURSBWSUVXICIuaWRmX2VzY2FwZSgkUSkuIiBBUyAkWGlbc2VsZWN0XSIsIjsiKTt9JHA9ZmllbGRzKCRRKTskeD1pbmRleGVzKCRRKTtrc29ydCgkeCk7JEFiPWNvbnN0cmFpbnRzKCRRKTtpZighJE98fGVtcHR5KCRwKSlyZXR1cm4KZmFsc2U7JEk9IkNSRUFURSBUQUJMRSAiLmlkZl9lc2NhcGUoJE9bJ25zcG5hbWUnXSkuIi4iLmlkZl9lc2NhcGUoJE9bJ05hbWUnXSkuIiAoXG4gICAgIjtmb3JlYWNoKCRwCmFzJFZjPT4kbyl7JFFmPWlkZl9lc2NhcGUoJG9bJ2ZpZWxkJ10pLicgJy4kb1snZnVsbF90eXBlJ10uZGVmYXVsdF92YWx1ZSgkbykuKCRvWydhdHRub3RudWxsJ10/IiBOT1QgTlVMTCI6IiIpOyRQZ1tdPSRRZjtpZihwcmVnX21hdGNoKCd+bmV4dHZhbFwoXCcoW15cJ10rKVwnXCl+Jywkb1snZGVmYXVsdCddLCRDZSkpeyRpaD0kQ2VbMV07JHhoPXJlc2V0KGdldF9yb3dzKG1pbl92ZXJzaW9uKDEwKT8iU0VMRUNUICosIGNhY2hlX3NpemUgQVMgY2FjaGVfdmFsdWUgRlJPTSBwZ19zZXF1ZW5jZXMgV0hFUkUgc2NoZW1hbmFtZSA9IGN1cnJlbnRfc2NoZW1hKCkgQU5EIHNlcXVlbmNlbmFtZSA9ICIucSgkaWgpOiJTRUxFQ1QgKiBGUk9NICRpaCIpKTskamhbXT0oJEhoPT0iRFJPUCtDUkVBVEUiPyJEUk9QIFNFUVVFTkNFIElGIEVYSVNUUyAkaWg7XG4iOiIiKS4iQ1JFQVRFIFNFUVVFTkNFICRpaCBJTkNSRU1FTlQgJHhoW2luY3JlbWVudF9ieV0gTUlOVkFMVUUgJHhoW21pbl92YWx1ZV0gTUFYVkFMVUUgJHhoW21heF92YWx1ZV0iLigkS2EmJiR4aFsnbGFzdF92YWx1ZSddPyIgU1RBUlQgJHhoW2xhc3RfdmFsdWVdIjoiIikuIiBDQUNIRSAkeGhbY2FjaGVfdmFsdWVdOyI7fX1pZighZW1wdHkoJGpoKSkkST1pbXBsb2RlKCJcblxuIiwkamgpLiJcblxuJEkiO2ZvcmVhY2goJHgKYXMkS2Q9PiR3KXtzd2l0Y2goJHdbJ3R5cGUnXSl7Y2FzZSdVTklRVUUnOiRQZ1tdPSJDT05TVFJBSU5UICIuaWRmX2VzY2FwZSgkS2QpLiIgVU5JUVVFICgiLmltcGxvZGUoJywgJyxhcnJheV9tYXAoJ2lkZl9lc2NhcGUnLCR3Wydjb2x1bW5zJ10pKS4iKSI7YnJlYWs7Y2FzZSdQUklNQVJZJzokUGdbXT0iQ09OU1RSQUlOVCAiLmlkZl9lc2NhcGUoJEtkKS4iIFBSSU1BUlkgS0VZICgiLmltcGxvZGUoJywgJyxhcnJheV9tYXAoJ2lkZl9lc2NhcGUnLCR3Wydjb2x1bW5zJ10pKS4iKSI7YnJlYWs7fX1mb3JlYWNoKCRBYgphcyR4Yj0+JHpiKSRQZ1tdPSJDT05TVFJBSU5UICIuaWRmX2VzY2FwZSgkeGIpLiIgQ0hFQ0sgJHpiIjskSS49aW1wbG9kZSgiLFxuICAgICIsJFBnKS4iXG4pIFdJVEggKG9pZHMgPSAiLigkT1snT2lkJ10/J3RydWUnOidmYWxzZScpLiIpOyI7Zm9yZWFjaCgkeAphcyRLZD0+JHcpe2lmKCR3Wyd0eXBlJ109PSdJTkRFWCcpeyRmPWFycmF5KCk7Zm9yZWFjaCgkd1snY29sdW1ucyddYXMkej0+JFgpJGZbXT1pZGZfZXNjYXBlKCRYKS4oJHdbJ2Rlc2NzJ11bJHpdPyIgREVTQyI6IiIpOyRJLj0iXG5cbkNSRUFURSBJTkRFWCAiLmlkZl9lc2NhcGUoJEtkKS4iIE9OICIuaWRmX2VzY2FwZSgkT1snbnNwbmFtZSddKS4iLiIuaWRmX2VzY2FwZSgkT1snTmFtZSddKS4iIFVTSU5HIGJ0cmVlICgiLmltcGxvZGUoJywgJywkZikuIik7Ijt9fWlmKCRPWydDb21tZW50J10pJEkuPSJcblxuQ09NTUVOVCBPTiBUQUJMRSAiLmlkZl9lc2NhcGUoJE9bJ25zcG5hbWUnXSkuIi4iLmlkZl9lc2NhcGUoJE9bJ05hbWUnXSkuIiBJUyAiLnEoJE9bJ0NvbW1lbnQnXSkuIjsiO2ZvcmVhY2goJHAKYXMkVmM9PiRvKXtpZigkb1snY29tbWVudCddKSRJLj0iXG5cbkNPTU1FTlQgT04gQ09MVU1OICIuaWRmX2VzY2FwZSgkT1snbnNwbmFtZSddKS4iLiIuaWRmX2VzY2FwZSgkT1snTmFtZSddKS4iLiIuaWRmX2VzY2FwZSgkVmMpLiIgSVMgIi5xKCRvWydjb21tZW50J10pLiI7Ijt9cmV0dXJuCnJ0cmltKCRJLCc7Jyk7fWZ1bmN0aW9uCnRydW5jYXRlX3NxbCgkUSl7cmV0dXJuIlRSVU5DQVRFICIudGFibGUoJFEpO31mdW5jdGlvbgp0cmlnZ2VyX3NxbCgkUSl7JE89dGFibGVfc3RhdHVzKCRRKTskST0iIjtmb3JlYWNoKHRyaWdnZXJzKCRRKWFzJHZpPT4kdWkpeyR3aT10cmlnZ2VyKCR2aSwkT1snTmFtZSddKTskSS49IlxuQ1JFQVRFIFRSSUdHRVIgIi5pZGZfZXNjYXBlKCR3aVsnVHJpZ2dlciddKS4iICR3aVtUaW1pbmddICR3aVtFdmVudF0gT04gIi5pZGZfZXNjYXBlKCRPWyJuc3BuYW1lIl0pLiIuIi5pZGZfZXNjYXBlKCRPWydOYW1lJ10pLiIgJHdpW1R5cGVdICR3aVtTdGF0ZW1lbnRdOztcbiI7fXJldHVybiRJO31mdW5jdGlvbgp1c2Vfc3FsKCRqKXtyZXR1cm4iXGNvbm5lY3QgIi5pZGZfZXNjYXBlKCRqKTt9ZnVuY3Rpb24Kc2hvd192YXJpYWJsZXMoKXtyZXR1cm4KZ2V0X2tleV92YWxzKCJTSE9XIEFMTCIpO31mdW5jdGlvbgpwcm9jZXNzX2xpc3QoKXtyZXR1cm4KZ2V0X3Jvd3MoIlNFTEVDVCAqIEZST00gcGdfc3RhdF9hY3Rpdml0eSBPUkRFUiBCWSAiLihtaW5fdmVyc2lvbig5LjIpPyJwaWQiOiJwcm9jcGlkIikpO31mdW5jdGlvbgpzaG93X3N0YXR1cygpe31mdW5jdGlvbgpjb252ZXJ0X2ZpZWxkKCRvKXt9ZnVuY3Rpb24KdW5jb252ZXJ0X2ZpZWxkKCRvLCRJKXtyZXR1cm4kSTt9ZnVuY3Rpb24Kc3VwcG9ydCgkVGMpe3JldHVybgpwcmVnX21hdGNoKCd+XihkYXRhYmFzZXx0YWJsZXxjb2x1bW5zfHNxbHxpbmRleGVzfGRlc2NpZHh8Y29tbWVudHx2aWV3fCcuKG1pbl92ZXJzaW9uKDkuMyk/J21hdGVyaWFsaXplZHZpZXd8JzonJykuJ3NjaGVtZXxyb3V0aW5lfHByb2Nlc3NsaXN0fHNlcXVlbmNlfHRyaWdnZXJ8dHlwZXx2YXJpYWJsZXN8ZHJvcF9jb2x8a2lsbHxkdW1wKSR+JywkVGMpO31mdW5jdGlvbgpraWxsX3Byb2Nlc3MoJFgpe3JldHVybgpxdWVyaWVzKCJTRUxFQ1QgcGdfdGVybWluYXRlX2JhY2tlbmQoIi5udW1iZXIoJFgpLiIpIik7fWZ1bmN0aW9uCmNvbm5lY3Rpb25faWQoKXtyZXR1cm4iU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCkiO31mdW5jdGlvbgptYXhfY29ubmVjdGlvbnMoKXtnbG9iYWwkZztyZXR1cm4kZy0+cmVzdWx0KCJTSE9XIG1heF9jb25uZWN0aW9ucyIpO31mdW5jdGlvbgpkcml2ZXJfY29uZmlnKCl7JFU9YXJyYXkoKTskR2g9YXJyYXkoKTtmb3JlYWNoKGFycmF5KCdOdW1iZXJzJz0+YXJyYXkoInNtYWxsaW50Ij0+NSwiaW50ZWdlciI9PjEwLCJiaWdpbnQiPT4xOSwiYm9vbGVhbiI9PjEsIm51bWVyaWMiPT4wLCJyZWFsIj0+NywiZG91YmxlIHByZWNpc2lvbiI9PjE2LCJtb25leSI9PjIwKSwnRGF0ZSBhbmQgdGltZSc9PmFycmF5KCJkYXRlIj0+MTMsInRpbWUiPT4xNywidGltZXN0YW1wIj0+MjAsInRpbWVzdGFtcHR6Ij0+MjEsImludGVydmFsIj0+MCksJ1N0cmluZ3MnPT5hcnJheSgiY2hhcmFjdGVyIj0+MCwiY2hhcmFjdGVyIHZhcnlpbmciPT4wLCJ0ZXh0Ij0+MCwidHNxdWVyeSI9PjAsInRzdmVjdG9yIj0+MCwidXVpZCI9PjAsInhtbCI9PjApLCdCaW5hcnknPT5hcnJheSgiYml0Ij0+MCwiYml0IHZhcnlpbmciPT4wLCJieXRlYSI9PjApLCdOZXR3b3JrJz0+YXJyYXkoImNpZHIiPT40MywiaW5ldCI9PjQzLCJtYWNhZGRyIj0+MTcsInR4aWRfc25hcHNob3QiPT4wKSwnR2VvbWV0cnknPT5hcnJheSgiYm94Ij0+MCwiY2lyY2xlIj0+MCwibGluZSI9PjAsImxzZWciPT4wLCJwYXRoIj0+MCwicG9pbnQiPT4wLCJwb2x5Z29uIj0+MCksKWFzJHo9PiRYKXskVSs9JFg7JEdoWyR6XT1hcnJheV9rZXlzKCRYKTt9cmV0dXJuCmFycmF5KCdwb3NzaWJsZV9kcml2ZXJzJz0+YXJyYXkoIlBnU1FMIiwiUERPX1BnU1FMIiksJ2p1c2gnPT4icGdzcWwiLCd0eXBlcyc9PiRVLCdzdHJ1Y3R1cmVkX3R5cGVzJz0+JEdoLCd1bnNpZ25lZCc9PmFycmF5KCksJ29wZXJhdG9ycyc9PmFycmF5KCI9IiwiPCIsIj4iLCI8PSIsIj49IiwiIT0iLCJ+IiwiIX4iLCJMSUtFIiwiTElLRSAlJSIsIklMSUtFIiwiSUxJS0UgJSUiLCJJTiIsIklTIE5VTEwiLCJOT1QgTElLRSIsIk5PVCBJTiIsIklTIE5PVCBOVUxMIiksJ2Z1bmN0aW9ucyc9PmFycmF5KCJjaGFyX2xlbmd0aCIsImxvd2VyIiwicm91bmQiLCJ0b19oZXgiLCJ0b190aW1lc3RhbXAiLCJ1cHBlciIpLCdncm91cGluZyc9PmFycmF5KCJhdmciLCJjb3VudCIsImNvdW50IGRpc3RpbmN0IiwibWF4IiwibWluIiwic3VtIiksJ2VkaXRfZnVuY3Rpb25zJz0+YXJyYXkoYXJyYXkoImNoYXIiPT4ibWQ1IiwiZGF0ZXx0aW1lIj0+Im5vdyIsKSxhcnJheShudW1iZXJfdHlwZSgpPT4iKy8tIiwiZGF0ZXx0aW1lIj0+IisgaW50ZXJ2YWwvLSBpbnRlcnZhbCIsImNoYXJ8dGV4dCI9PiJ8fCIsKSksKTt9fSRpY1sib3JhY2xlIl09Ik9yYWNsZSAoYmV0YSkiO2lmKGlzc2V0KCRfR0VUWyJvcmFjbGUiXSkpe2RlZmluZSgiRFJJVkVSIiwib3JhY2xlIik7aWYoZXh0ZW5zaW9uX2xvYWRlZCgib2NpOCIpKXtjbGFzcwpNaW5fREJ7dmFyJGV4dGVuc2lvbj0ib2NpOCIsJF9saW5rLCRfcmVzdWx0LCRzZXJ2ZXJfaW5mbywkYWZmZWN0ZWRfcm93cywkZXJybm8sJGVycm9yO3ZhciRfY3VycmVudF9kYjtmdW5jdGlvbgpfZXJyb3IoJEFjLCRuKXtpZihpbmlfYm9vbCgiaHRtbF9lcnJvcnMiKSkkbj1odG1sX2VudGl0eV9kZWNvZGUoc3RyaXBfdGFncygkbikpOyRuPXByZWdfcmVwbGFjZSgnfl5bXjpdKjogficsJycsJG4pOyR0aGlzLT5lcnJvcj0kbjt9ZnVuY3Rpb24KY29ubmVjdCgkTSwkViwkRil7JHRoaXMtPl9saW5rPUBvY2lfbmV3X2Nvbm5lY3QoJFYsJEYsJE0sIkFMMzJVVEY4Iik7aWYoJHRoaXMtPl9saW5rKXskdGhpcy0+c2VydmVyX2luZm89b2NpX3NlcnZlcl92ZXJzaW9uKCR0aGlzLT5fbGluayk7cmV0dXJuCnRydWU7fSRuPW9jaV9lcnJvcigpOyR0aGlzLT5lcnJvcj0kblsibWVzc2FnZSJdO3JldHVybgpmYWxzZTt9ZnVuY3Rpb24KcXVvdGUoJFApe3JldHVybiInIi5zdHJfcmVwbGFjZSgiJyIsIicnIiwkUCkuIiciO31mdW5jdGlvbgpzZWxlY3RfZGIoJGopeyR0aGlzLT5fY3VycmVudF9kYj0kajtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KcXVlcnkoJEcsJEJpPWZhbHNlKXskSD1vY2lfcGFyc2UoJHRoaXMtPl9saW5rLCRHKTskdGhpcy0+ZXJyb3I9IiI7aWYoISRIKXskbj1vY2lfZXJyb3IoJHRoaXMtPl9saW5rKTskdGhpcy0+ZXJybm89JG5bImNvZGUiXTskdGhpcy0+ZXJyb3I9JG5bIm1lc3NhZ2UiXTtyZXR1cm4KZmFsc2U7fXNldF9lcnJvcl9oYW5kbGVyKGFycmF5KCR0aGlzLCdfZXJyb3InKSk7JEk9QG9jaV9leGVjdXRlKCRIKTtyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTtpZigkSSl7aWYob2NpX251bV9maWVsZHMoJEgpKXJldHVybgpuZXcKTWluX1Jlc3VsdCgkSCk7JHRoaXMtPmFmZmVjdGVkX3Jvd3M9b2NpX251bV9yb3dzKCRIKTtvY2lfZnJlZV9zdGF0ZW1lbnQoJEgpO31yZXR1cm4kSTt9ZnVuY3Rpb24KbXVsdGlfcXVlcnkoJEcpe3JldHVybiR0aGlzLT5fcmVzdWx0PSR0aGlzLT5xdWVyeSgkRyk7fWZ1bmN0aW9uCnN0b3JlX3Jlc3VsdCgpe3JldHVybiR0aGlzLT5fcmVzdWx0O31mdW5jdGlvbgpuZXh0X3Jlc3VsdCgpe3JldHVybgpmYWxzZTt9ZnVuY3Rpb24KcmVzdWx0KCRHLCRvPTEpeyRIPSR0aGlzLT5xdWVyeSgkRyk7aWYoIWlzX29iamVjdCgkSCl8fCFvY2lfZmV0Y2goJEgtPl9yZXN1bHQpKXJldHVybgpmYWxzZTtyZXR1cm4Kb2NpX3Jlc3VsdCgkSC0+X3Jlc3VsdCwkbyk7fX1jbGFzcwpNaW5fUmVzdWx0e3ZhciRfcmVzdWx0LCRfb2Zmc2V0PTEsJG51bV9yb3dzO2Z1bmN0aW9uCl9fY29uc3RydWN0KCRIKXskdGhpcy0+X3Jlc3VsdD0kSDt9ZnVuY3Rpb24KX2NvbnZlcnQoJEope2ZvcmVhY2goKGFycmF5KSRKCmFzJHo9PiRYKXtpZihpc19hKCRYLCdPQ0ktTG9iJykpJEpbJHpdPSRYLT5sb2FkKCk7fXJldHVybiRKO31mdW5jdGlvbgpmZXRjaF9hc3NvYygpe3JldHVybiR0aGlzLT5fY29udmVydChvY2lfZmV0Y2hfYXNzb2MoJHRoaXMtPl9yZXN1bHQpKTt9ZnVuY3Rpb24KZmV0Y2hfcm93KCl7cmV0dXJuJHRoaXMtPl9jb252ZXJ0KG9jaV9mZXRjaF9yb3coJHRoaXMtPl9yZXN1bHQpKTt9ZnVuY3Rpb24KZmV0Y2hfZmllbGQoKXskZT0kdGhpcy0+X29mZnNldCsrOyRJPW5ldwpzdGRDbGFzczskSS0+bmFtZT1vY2lfZmllbGRfbmFtZSgkdGhpcy0+X3Jlc3VsdCwkZSk7JEktPm9yZ25hbWU9JEktPm5hbWU7JEktPnR5cGU9b2NpX2ZpZWxkX3R5cGUoJHRoaXMtPl9yZXN1bHQsJGUpOyRJLT5jaGFyc2V0bnI9KHByZWdfbWF0Y2goIn5yYXd8YmxvYnxiZmlsZX4iLCRJLT50eXBlKT82MzowKTtyZXR1cm4kSTt9ZnVuY3Rpb24KX19kZXN0cnVjdCgpe29jaV9mcmVlX3N0YXRlbWVudCgkdGhpcy0+X3Jlc3VsdCk7fX19ZWxzZWlmKGV4dGVuc2lvbl9sb2FkZWQoInBkb19vY2kiKSl7Y2xhc3MKTWluX0RCCmV4dGVuZHMKTWluX1BET3t2YXIkZXh0ZW5zaW9uPSJQRE9fT0NJIjt2YXIkX2N1cnJlbnRfZGI7ZnVuY3Rpb24KY29ubmVjdCgkTSwkViwkRil7JHRoaXMtPmRzbigib2NpOmRibmFtZT0vLyRNO2NoYXJzZXQ9QUwzMlVURjgiLCRWLCRGKTtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24Kc2VsZWN0X2RiKCRqKXskdGhpcy0+X2N1cnJlbnRfZGI9JGo7cmV0dXJuCnRydWU7fX19Y2xhc3MKTWluX0RyaXZlcgpleHRlbmRzCk1pbl9TUUx7ZnVuY3Rpb24KYmVnaW4oKXtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KaW5zZXJ0VXBkYXRlKCRRLCRLLCRrZyl7Z2xvYmFsJGc7Zm9yZWFjaCgkSwphcyROKXskSWk9YXJyYXkoKTskWj1hcnJheSgpO2ZvcmVhY2goJE4KYXMkej0+JFgpeyRJaVtdPSIkeiA9ICRYIjtpZihpc3NldCgka2dbaWRmX3VuZXNjYXBlKCR6KV0pKSRaW109IiR6ID0gJFgiO31pZighKCgkWiYmcXVlcmllcygiVVBEQVRFICIudGFibGUoJFEpLiIgU0VUICIuaW1wbG9kZSgiLCAiLCRJaSkuIiBXSEVSRSAiLmltcGxvZGUoIiBBTkQgIiwkWikpJiYkZy0+YWZmZWN0ZWRfcm93cyl8fHF1ZXJpZXMoIklOU0VSVCBJTlRPICIudGFibGUoJFEpLiIgKCIuaW1wbG9kZSgiLCAiLGFycmF5X2tleXMoJE4pKS4iKSBWQUxVRVMgKCIuaW1wbG9kZSgiLCAiLCROKS4iKSIpKSlyZXR1cm4KZmFsc2U7fXJldHVybgp0cnVlO319ZnVuY3Rpb24KaWRmX2VzY2FwZSgkdil7cmV0dXJuJyInLnN0cl9yZXBsYWNlKCciJywnIiInLCR2KS4nIic7fWZ1bmN0aW9uCnRhYmxlKCR2KXtyZXR1cm4KaWRmX2VzY2FwZSgkdik7fWZ1bmN0aW9uCmNvbm5lY3QoKXtnbG9iYWwkYjskZz1uZXcKTWluX0RCOyRLYj0kYi0+Y3JlZGVudGlhbHMoKTtpZigkZy0+Y29ubmVjdCgkS2JbMF0sJEtiWzFdLCRLYlsyXSkpcmV0dXJuJGc7cmV0dXJuJGctPmVycm9yO31mdW5jdGlvbgpnZXRfZGF0YWJhc2VzKCl7cmV0dXJuCmdldF92YWxzKCJTRUxFQ1QgdGFibGVzcGFjZV9uYW1lIEZST00gdXNlcl90YWJsZXNwYWNlcyBPUkRFUiBCWSAxIik7fWZ1bmN0aW9uCmxpbWl0KCRHLCRaLCRfLCRoZj0wLCRoaD0iICIpe3JldHVybigkaGY/IiAqIEZST00gKFNFTEVDVCB0LiosIHJvd251bSBBUyBybnVtIEZST00gKFNFTEVDVCAkRyRaKSB0IFdIRVJFIHJvd251bSA8PSAiLigkXyskaGYpLiIpIFdIRVJFIHJudW0gPiAkaGYiOigkXyE9PW51bGw/IiAqIEZST00gKFNFTEVDVCAkRyRaKSBXSEVSRSByb3dudW0gPD0gIi4oJF8rJGhmKToiICRHJFoiKSk7fWZ1bmN0aW9uCmxpbWl0MSgkUSwkRywkWiwkaGg9IlxuIil7cmV0dXJuIiAkRyRaIjt9ZnVuY3Rpb24KZGJfY29sbGF0aW9uKCRsLCRsYil7Z2xvYmFsJGc7cmV0dXJuJGctPnJlc3VsdCgiU0VMRUNUIHZhbHVlIEZST00gbmxzX2RhdGFiYXNlX3BhcmFtZXRlcnMgV0hFUkUgcGFyYW1ldGVyID0gJ05MU19DSEFSQUNURVJTRVQnIik7fWZ1bmN0aW9uCmVuZ2luZXMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24KbG9nZ2VkX3VzZXIoKXtnbG9iYWwkZztyZXR1cm4kZy0+cmVzdWx0KCJTRUxFQ1QgVVNFUiBGUk9NIERVQUwiKTt9ZnVuY3Rpb24KZ2V0X2N1cnJlbnRfZGIoKXtnbG9iYWwkZzskbD0kZy0+X2N1cnJlbnRfZGI/JGctPl9jdXJyZW50X2RiOkRCO3Vuc2V0KCRnLT5fY3VycmVudF9kYik7cmV0dXJuJGw7fWZ1bmN0aW9uCndoZXJlX293bmVyKCRpZywkS2Y9Im93bmVyIil7aWYoISRfR0VUWyJucyJdKXJldHVybicnO3JldHVybiIkaWckS2YgPSBzeXNfY29udGV4dCgnVVNFUkVOVicsICdDVVJSRU5UX1NDSEVNQScpIjt9ZnVuY3Rpb24Kdmlld3NfdGFibGUoJGYpeyRLZj13aGVyZV9vd25lcignJyk7cmV0dXJuIihTRUxFQ1QgJGYgRlJPTSBhbGxfdmlld3MgV0hFUkUgIi4oJEtmPyRLZjoicm93bnVtIDwgMCIpLiIpIjt9ZnVuY3Rpb24KdGFibGVzX2xpc3QoKXskWGk9dmlld3NfdGFibGUoInZpZXdfbmFtZSIpOyRLZj13aGVyZV9vd25lcigiIEFORCAiKTtyZXR1cm4KZ2V0X2tleV92YWxzKCJTRUxFQ1QgdGFibGVfbmFtZSwgJ3RhYmxlJyBGUk9NIGFsbF90YWJsZXMgV0hFUkUgdGFibGVzcGFjZV9uYW1lID0gIi5xKERCKS4iJEtmClVOSU9OIFNFTEVDVCB2aWV3X25hbWUsICd2aWV3JyBGUk9NICRYaQpPUkRFUiBCWSAxIik7fWZ1bmN0aW9uCmNvdW50X3RhYmxlcygkayl7Z2xvYmFsJGc7JEk9YXJyYXkoKTtmb3JlYWNoKCRrCmFzJGwpJElbJGxdPSRnLT5yZXN1bHQoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGFsbF90YWJsZXMgV0hFUkUgdGFibGVzcGFjZV9uYW1lID0gIi5xKCRsKSk7cmV0dXJuJEk7fWZ1bmN0aW9uCnRhYmxlX3N0YXR1cygkRD0iIil7JEk9YXJyYXkoKTskYmg9cSgkRCk7JGw9Z2V0X2N1cnJlbnRfZGIoKTskWGk9dmlld3NfdGFibGUoInZpZXdfbmFtZSIpOyRLZj13aGVyZV9vd25lcigiIEFORCAiKTtmb3JlYWNoKGdldF9yb3dzKCdTRUxFQ1QgdGFibGVfbmFtZSAiTmFtZSIsIFwndGFibGVcJyAiRW5naW5lIiwgYXZnX3Jvd19sZW4gKiBudW1fcm93cyAiRGF0YV9sZW5ndGgiLCBudW1fcm93cyAiUm93cyIgRlJPTSBhbGxfdGFibGVzIFdIRVJFIHRhYmxlc3BhY2VfbmFtZSA9ICcucSgkbCkuJEtmLigkRCE9IiI/IiBBTkQgdGFibGVfbmFtZSA9ICRiaCI6IiIpLiIKVU5JT04gU0VMRUNUIHZpZXdfbmFtZSwgJ3ZpZXcnLCAwLCAwIEZST00gJFhpIi4oJEQhPSIiPyIgV0hFUkUgdmlld19uYW1lID0gJGJoIjoiIikuIgpPUkRFUiBCWSAxIilhcyRKKXtpZigkRCE9IiIpcmV0dXJuJEo7JElbJEpbIk5hbWUiXV09JEo7fXJldHVybiRJO31mdW5jdGlvbgppc192aWV3KCRSKXtyZXR1cm4kUlsiRW5naW5lIl09PSJ2aWV3Ijt9ZnVuY3Rpb24KZmtfc3VwcG9ydCgkUil7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCmZpZWxkcygkUSl7JEk9YXJyYXkoKTskS2Y9d2hlcmVfb3duZXIoIiBBTkQgIik7Zm9yZWFjaChnZXRfcm93cygiU0VMRUNUICogRlJPTSBhbGxfdGFiX2NvbHVtbnMgV0hFUkUgdGFibGVfbmFtZSA9ICIucSgkUSkuIiRLZiBPUkRFUiBCWSBjb2x1bW5faWQiKWFzJEopeyRUPSRKWyJEQVRBX1RZUEUiXTskdGU9IiRKW0RBVEFfUFJFQ0lTSU9OXSwkSltEQVRBX1NDQUxFXSI7aWYoJHRlPT0iLCIpJHRlPSRKWyJDSEFSX0NPTF9ERUNMX0xFTkdUSCJdOyRJWyRKWyJDT0xVTU5fTkFNRSJdXT1hcnJheSgiZmllbGQiPT4kSlsiQ09MVU1OX05BTUUiXSwiZnVsbF90eXBlIj0+JFQuKCR0ZT8iKCR0ZSkiOiIiKSwidHlwZSI9PnN0cnRvbG93ZXIoJFQpLCJsZW5ndGgiPT4kdGUsImRlZmF1bHQiPT4kSlsiREFUQV9ERUZBVUxUIl0sIm51bGwiPT4oJEpbIk5VTExBQkxFIl09PSJZIiksInByaXZpbGVnZXMiPT5hcnJheSgiaW5zZXJ0Ij0+MSwic2VsZWN0Ij0+MSwidXBkYXRlIj0+MSksKTt9cmV0dXJuJEk7fWZ1bmN0aW9uCmluZGV4ZXMoJFEsJGg9bnVsbCl7JEk9YXJyYXkoKTskS2Y9d2hlcmVfb3duZXIoIiBBTkQgIiwiYWljLnRhYmxlX293bmVyIik7Zm9yZWFjaChnZXRfcm93cygiU0VMRUNUIGFpYy4qLCBhYy5jb25zdHJhaW50X3R5cGUsIGF0Yy5kYXRhX2RlZmF1bHQKRlJPTSBhbGxfaW5kX2NvbHVtbnMgYWljCkxFRlQgSk9JTiBhbGxfY29uc3RyYWludHMgYWMgT04gYWljLmluZGV4X25hbWUgPSBhYy5jb25zdHJhaW50X25hbWUgQU5EIGFpYy50YWJsZV9uYW1lID0gYWMudGFibGVfbmFtZSBBTkQgYWljLmluZGV4X293bmVyID0gYWMub3duZXIKTEVGVCBKT0lOIGFsbF90YWJfY29scyBhdGMgT04gYWljLmNvbHVtbl9uYW1lID0gYXRjLmNvbHVtbl9uYW1lIEFORCBhaWMudGFibGVfbmFtZSA9IGF0Yy50YWJsZV9uYW1lIEFORCBhaWMuaW5kZXhfb3duZXIgPSBhdGMub3duZXIKV0hFUkUgYWljLnRhYmxlX25hbWUgPSAiLnEoJFEpLiIkS2YKT1JERVIgQlkgYWMuY29uc3RyYWludF90eXBlLCBhaWMuY29sdW1uX3Bvc2l0aW9uIiwkaClhcyRKKXskS2Q9JEpbIklOREVYX05BTUUiXTskb2I9JEpbIkRBVEFfREVGQVVMVCJdOyRvYj0oJG9iP3RyaW0oJG9iLCciJyk6JEpbIkNPTFVNTl9OQU1FIl0pOyRJWyRLZF1bInR5cGUiXT0oJEpbIkNPTlNUUkFJTlRfVFlQRSJdPT0iUCI/IlBSSU1BUlkiOigkSlsiQ09OU1RSQUlOVF9UWVBFIl09PSJVIj8iVU5JUVVFIjoiSU5ERVgiKSk7JElbJEtkXVsiY29sdW1ucyJdW109JG9iOyRJWyRLZF1bImxlbmd0aHMiXVtdPSgkSlsiQ0hBUl9MRU5HVEgiXSYmJEpbIkNIQVJfTEVOR1RIIl0hPSRKWyJDT0xVTU5fTEVOR1RIIl0/JEpbIkNIQVJfTEVOR1RIIl06bnVsbCk7JElbJEtkXVsiZGVzY3MiXVtdPSgkSlsiREVTQ0VORCJdJiYkSlsiREVTQ0VORCJdPT0iREVTQyI/JzEnOm51bGwpO31yZXR1cm4kSTt9ZnVuY3Rpb24KdmlldygkRCl7JFhpPXZpZXdzX3RhYmxlKCJ2aWV3X25hbWUsIHRleHQiKTskSz1nZXRfcm93cygnU0VMRUNUIHRleHQgInNlbGVjdCIgRlJPTSAnLiRYaS4nIFdIRVJFIHZpZXdfbmFtZSA9ICcucSgkRCkpO3JldHVybgpyZXNldCgkSyk7fWZ1bmN0aW9uCmNvbGxhdGlvbnMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24KaW5mb3JtYXRpb25fc2NoZW1hKCRsKXtyZXR1cm4KZmFsc2U7fWZ1bmN0aW9uCmVycm9yKCl7Z2xvYmFsJGc7cmV0dXJuCmgoJGctPmVycm9yKTt9ZnVuY3Rpb24KZXhwbGFpbigkZywkRyl7JGctPnF1ZXJ5KCJFWFBMQUlOIFBMQU4gRk9SICRHIik7cmV0dXJuJGctPnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHBsYW5fdGFibGUiKTt9ZnVuY3Rpb24KZm91bmRfcm93cygkUiwkWil7fWZ1bmN0aW9uCmF1dG9faW5jcmVtZW50KCl7cmV0dXJuIiI7fWZ1bmN0aW9uCmFsdGVyX3RhYmxlKCRRLCRELCRwLCRmZCwkcmIsJHljLCRkLCRLYSwkVGYpeyRjPSRqYz1hcnJheSgpOyRFZj0oJFE/ZmllbGRzKCRRKTphcnJheSgpKTtmb3JlYWNoKCRwCmFzJG8peyRYPSRvWzFdO2lmKCRYJiYkb1swXSE9IiImJmlkZl9lc2NhcGUoJG9bMF0pIT0kWFswXSlxdWVyaWVzKCJBTFRFUiBUQUJMRSAiLnRhYmxlKCRRKS4iIFJFTkFNRSBDT0xVTU4gIi5pZGZfZXNjYXBlKCRvWzBdKS4iIFRPICRYWzBdIik7JERmPSRFZlskb1swXV07aWYoJFgmJiREZil7JGpmPXByb2Nlc3NfZmllbGQoJERmLCREZik7aWYoJFhbMl09PSRqZlsyXSkkWFsyXT0iIjt9aWYoJFgpJGNbXT0oJFEhPSIiPygkb1swXSE9IiI/Ik1PRElGWSAoIjoiQUREICgiKToiICAiKS5pbXBsb2RlKCRYKS4oJFEhPSIiPyIpIjoiIik7ZWxzZSRqY1tdPWlkZl9lc2NhcGUoJG9bMF0pO31pZigkUT09IiIpcmV0dXJuCnF1ZXJpZXMoIkNSRUFURSBUQUJMRSAiLnRhYmxlKCREKS4iIChcbiIuaW1wbG9kZSgiLFxuIiwkYykuIlxuKSIpO3JldHVybighJGN8fHF1ZXJpZXMoIkFMVEVSIFRBQkxFICIudGFibGUoJFEpLiJcbiIuaW1wbG9kZSgiXG4iLCRjKSkpJiYoISRqY3x8cXVlcmllcygiQUxURVIgVEFCTEUgIi50YWJsZSgkUSkuIiBEUk9QICgiLmltcGxvZGUoIiwgIiwkamMpLiIpIikpJiYoJFE9PSREfHxxdWVyaWVzKCJBTFRFUiBUQUJMRSAiLnRhYmxlKCRRKS4iIFJFTkFNRSBUTyAiLnRhYmxlKCREKSkpO31mdW5jdGlvbgphbHRlcl9pbmRleGVzKCRRLCRjKXskamM9YXJyYXkoKTskdmc9YXJyYXkoKTtmb3JlYWNoKCRjCmFzJFgpe2lmKCRYWzBdIT0iSU5ERVgiKXskWFsyXT1wcmVnX3JlcGxhY2UoJ34gREVTQyR+JywnJywkWFsyXSk7JGk9KCRYWzJdPT0iRFJPUCI/IlxuRFJPUCBDT05TVFJBSU5UICIuaWRmX2VzY2FwZSgkWFsxXSk6IlxuQUREIi4oJFhbMV0hPSIiPyIgQ09OU1RSQUlOVCAiLmlkZl9lc2NhcGUoJFhbMV0pOiIiKS4iICRYWzBdICIuKCRYWzBdPT0iUFJJTUFSWSI/IktFWSAiOiIiKS4iKCIuaW1wbG9kZSgiLCAiLCRYWzJdKS4iKSIpO2FycmF5X3Vuc2hpZnQoJHZnLCJBTFRFUiBUQUJMRSAiLnRhYmxlKCRRKS4kaSk7fWVsc2VpZigkWFsyXT09IkRST1AiKSRqY1tdPWlkZl9lc2NhcGUoJFhbMV0pO2Vsc2UkdmdbXT0iQ1JFQVRFIElOREVYICIuaWRmX2VzY2FwZSgkWFsxXSE9IiI/JFhbMV06dW5pcWlkKCRRLiJfIikpLiIgT04gIi50YWJsZSgkUSkuIiAoIi5pbXBsb2RlKCIsICIsJFhbMl0pLiIpIjt9aWYoJGpjKWFycmF5X3Vuc2hpZnQoJHZnLCJEUk9QIElOREVYICIuaW1wbG9kZSgiLCAiLCRqYykpO2ZvcmVhY2goJHZnCmFzJEcpe2lmKCFxdWVyaWVzKCRHKSlyZXR1cm4KZmFsc2U7fXJldHVybgp0cnVlO31mdW5jdGlvbgpmb3JlaWduX2tleXMoJFEpeyRJPWFycmF5KCk7JEc9IlNFTEVDVCBjX2xpc3QuQ09OU1RSQUlOVF9OQU1FIGFzIE5BTUUsCmNfc3JjLkNPTFVNTl9OQU1FIGFzIFNSQ19DT0xVTU4sCmNfZGVzdC5PV05FUiBhcyBERVNUX0RCLApjX2Rlc3QuVEFCTEVfTkFNRSBhcyBERVNUX1RBQkxFLApjX2Rlc3QuQ09MVU1OX05BTUUgYXMgREVTVF9DT0xVTU4sCmNfbGlzdC5ERUxFVEVfUlVMRSBhcyBPTl9ERUxFVEUKRlJPTSBBTExfQ09OU1RSQUlOVFMgY19saXN0LCBBTExfQ09OU19DT0xVTU5TIGNfc3JjLCBBTExfQ09OU19DT0xVTU5TIGNfZGVzdApXSEVSRSBjX2xpc3QuQ09OU1RSQUlOVF9OQU1FID0gY19zcmMuQ09OU1RSQUlOVF9OQU1FCkFORCBjX2xpc3QuUl9DT05TVFJBSU5UX05BTUUgPSBjX2Rlc3QuQ09OU1RSQUlOVF9OQU1FCkFORCBjX2xpc3QuQ09OU1RSQUlOVF9UWVBFID0gJ1InCkFORCBjX3NyYy5UQUJMRV9OQU1FID0gIi5xKCRRKTtmb3JlYWNoKGdldF9yb3dzKCRHKWFzJEopJElbJEpbJ05BTUUnXV09YXJyYXkoImRiIj0+JEpbJ0RFU1RfREInXSwidGFibGUiPT4kSlsnREVTVF9UQUJMRSddLCJzb3VyY2UiPT5hcnJheSgkSlsnU1JDX0NPTFVNTiddKSwidGFyZ2V0Ij0+YXJyYXkoJEpbJ0RFU1RfQ09MVU1OJ10pLCJvbl9kZWxldGUiPT4kSlsnT05fREVMRVRFJ10sIm9uX3VwZGF0ZSI9Pm51bGwsKTtyZXR1cm4kSTt9ZnVuY3Rpb24KdHJ1bmNhdGVfdGFibGVzKCRTKXtyZXR1cm4KYXBwbHlfcXVlcmllcygiVFJVTkNBVEUgVEFCTEUiLCRTKTt9ZnVuY3Rpb24KZHJvcF92aWV3cygkWWkpe3JldHVybgphcHBseV9xdWVyaWVzKCJEUk9QIFZJRVciLCRZaSk7fWZ1bmN0aW9uCmRyb3BfdGFibGVzKCRTKXtyZXR1cm4KYXBwbHlfcXVlcmllcygiRFJPUCBUQUJMRSIsJFMpO31mdW5jdGlvbgpsYXN0X2lkKCl7cmV0dXJuCjA7fWZ1bmN0aW9uCnNjaGVtYXMoKXskST1nZXRfdmFscygiU0VMRUNUIERJU1RJTkNUIG93bmVyIEZST00gZGJhX3NlZ21lbnRzIFdIRVJFIG93bmVyIElOIChTRUxFQ1QgdXNlcm5hbWUgRlJPTSBkYmFfdXNlcnMgV0hFUkUgZGVmYXVsdF90YWJsZXNwYWNlIE5PVCBJTiAoJ1NZU1RFTScsJ1NZU0FVWCcpKSBPUkRFUiBCWSAxIik7cmV0dXJuKCRJPyRJOmdldF92YWxzKCJTRUxFQ1QgRElTVElOQ1Qgb3duZXIgRlJPTSBhbGxfdGFibGVzIFdIRVJFIHRhYmxlc3BhY2VfbmFtZSA9ICIucShEQikuIiBPUkRFUiBCWSAxIikpO31mdW5jdGlvbgpnZXRfc2NoZW1hKCl7Z2xvYmFsJGc7cmV0dXJuJGctPnJlc3VsdCgiU0VMRUNUIHN5c19jb250ZXh0KCdVU0VSRU5WJywgJ1NFU1NJT05fVVNFUicpIEZST00gZHVhbCIpO31mdW5jdGlvbgpzZXRfc2NoZW1hKCRhaCwkaD1udWxsKXtnbG9iYWwkZztpZighJGgpJGg9JGc7cmV0dXJuJGgtPnF1ZXJ5KCJBTFRFUiBTRVNTSU9OIFNFVCBDVVJSRU5UX1NDSEVNQSA9ICIuaWRmX2VzY2FwZSgkYWgpKTt9ZnVuY3Rpb24Kc2hvd192YXJpYWJsZXMoKXtyZXR1cm4KZ2V0X2tleV92YWxzKCdTRUxFQ1QgbmFtZSwgZGlzcGxheV92YWx1ZSBGUk9NIHYkcGFyYW1ldGVyJyk7fWZ1bmN0aW9uCnByb2Nlc3NfbGlzdCgpe3JldHVybgpnZXRfcm93cygnU0VMRUNUIHNlc3MucHJvY2VzcyBBUyAicHJvY2VzcyIsIHNlc3MudXNlcm5hbWUgQVMgInVzZXIiLCBzZXNzLnNjaGVtYW5hbWUgQVMgInNjaGVtYSIsIHNlc3Muc3RhdHVzIEFTICJzdGF0dXMiLCBzZXNzLndhaXRfY2xhc3MgQVMgIndhaXRfY2xhc3MiLCBzZXNzLnNlY29uZHNfaW5fd2FpdCBBUyAic2Vjb25kc19pbl93YWl0Iiwgc3FsLnNxbF90ZXh0IEFTICJzcWxfdGV4dCIsIHNlc3MubWFjaGluZSBBUyAibWFjaGluZSIsIHNlc3MucG9ydCBBUyAicG9ydCIKRlJPTSB2JHNlc3Npb24gc2VzcyBMRUZUIE9VVEVSIEpPSU4gdiRzcWwgc3FsCk9OIHNxbC5zcWxfaWQgPSBzZXNzLnNxbF9pZApXSEVSRSBzZXNzLnR5cGUgPSBcJ1VTRVJcJwpPUkRFUiBCWSBQUk9DRVNTCicpO31mdW5jdGlvbgpzaG93X3N0YXR1cygpeyRLPWdldF9yb3dzKCdTRUxFQ1QgKiBGUk9NIHYkaW5zdGFuY2UnKTtyZXR1cm4KcmVzZXQoJEspO31mdW5jdGlvbgpjb252ZXJ0X2ZpZWxkKCRvKXt9ZnVuY3Rpb24KdW5jb252ZXJ0X2ZpZWxkKCRvLCRJKXtyZXR1cm4kSTt9ZnVuY3Rpb24Kc3VwcG9ydCgkVGMpe3JldHVybgpwcmVnX21hdGNoKCd+Xihjb2x1bW5zfGRhdGFiYXNlfGRyb3BfY29sfGluZGV4ZXN8ZGVzY2lkeHxwcm9jZXNzbGlzdHxzY2hlbWV8c3FsfHN0YXR1c3x0YWJsZXx2YXJpYWJsZXN8dmlldykkficsJFRjKTt9ZnVuY3Rpb24KZHJpdmVyX2NvbmZpZygpeyRVPWFycmF5KCk7JEdoPWFycmF5KCk7Zm9yZWFjaChhcnJheSgnTnVtYmVycyc9PmFycmF5KCJudW1iZXIiPT4zOCwiYmluYXJ5X2Zsb2F0Ij0+MTIsImJpbmFyeV9kb3VibGUiPT4yMSksJ0RhdGUgYW5kIHRpbWUnPT5hcnJheSgiZGF0ZSI9PjEwLCJ0aW1lc3RhbXAiPT4yOSwiaW50ZXJ2YWwgeWVhciI9PjEyLCJpbnRlcnZhbCBkYXkiPT4yOCksJ1N0cmluZ3MnPT5hcnJheSgiY2hhciI9PjIwMDAsInZhcmNoYXIyIj0+NDAwMCwibmNoYXIiPT4yMDAwLCJudmFyY2hhcjIiPT40MDAwLCJjbG9iIj0+NDI5NDk2NzI5NSwibmNsb2IiPT40Mjk0OTY3Mjk1KSwnQmluYXJ5Jz0+YXJyYXkoInJhdyI9PjIwMDAsImxvbmcgcmF3Ij0+MjE0NzQ4MzY0OCwiYmxvYiI9PjQyOTQ5NjcyOTUsImJmaWxlIj0+NDI5NDk2NzI5NiksKWFzJHo9PiRYKXskVSs9JFg7JEdoWyR6XT1hcnJheV9rZXlzKCRYKTt9cmV0dXJuCmFycmF5KCdwb3NzaWJsZV9kcml2ZXJzJz0+YXJyYXkoIk9DSTgiLCJQRE9fT0NJIiksJ2p1c2gnPT4ib3JhY2xlIiwndHlwZXMnPT4kVSwnc3RydWN0dXJlZF90eXBlcyc9PiRHaCwndW5zaWduZWQnPT5hcnJheSgpLCdvcGVyYXRvcnMnPT5hcnJheSgiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIiE9IiwiTElLRSIsIkxJS0UgJSUiLCJJTiIsIklTIE5VTEwiLCJOT1QgTElLRSIsIk5PVCBSRUdFWFAiLCJOT1QgSU4iLCJJUyBOT1QgTlVMTCIsIlNRTCIpLCdmdW5jdGlvbnMnPT5hcnJheSgibGVuZ3RoIiwibG93ZXIiLCJyb3VuZCIsInVwcGVyIiksJ2dyb3VwaW5nJz0+YXJyYXkoImF2ZyIsImNvdW50IiwiY291bnQgZGlzdGluY3QiLCJtYXgiLCJtaW4iLCJzdW0iKSwnZWRpdF9mdW5jdGlvbnMnPT5hcnJheShhcnJheSgiZGF0ZSI9PiJjdXJyZW50X2RhdGUiLCJ0aW1lc3RhbXAiPT4iY3VycmVudF90aW1lc3RhbXAiLCksYXJyYXkoIm51bWJlcnxmbG9hdHxkb3VibGUiPT4iKy8tIiwiZGF0ZXx0aW1lc3RhbXAiPT4iKyBpbnRlcnZhbC8tIGludGVydmFsIiwiY2hhcnxjbG9iIj0+Inx8IiwpKSwpO319JGljWyJtc3NxbCJdPSJNUyBTUUwgKGJldGEpIjtpZihpc3NldCgkX0dFVFsibXNzcWwiXSkpe2RlZmluZSgiRFJJVkVSIiwibXNzcWwiKTtpZihleHRlbnNpb25fbG9hZGVkKCJzcWxzcnYiKSl7Y2xhc3MKTWluX0RCe3ZhciRleHRlbnNpb249InNxbHNydiIsJF9saW5rLCRfcmVzdWx0LCRzZXJ2ZXJfaW5mbywkYWZmZWN0ZWRfcm93cywkZXJybm8sJGVycm9yO2Z1bmN0aW9uCl9nZXRfZXJyb3IoKXskdGhpcy0+ZXJyb3I9IiI7Zm9yZWFjaChzcWxzcnZfZXJyb3JzKClhcyRuKXskdGhpcy0+ZXJybm89JG5bImNvZGUiXTskdGhpcy0+ZXJyb3IuPSIkblttZXNzYWdlXVxuIjt9JHRoaXMtPmVycm9yPXJ0cmltKCR0aGlzLT5lcnJvcik7fWZ1bmN0aW9uCmNvbm5lY3QoJE0sJFYsJEYpe2dsb2JhbCRiOyRsPSRiLT5kYXRhYmFzZSgpOyR5Yj1hcnJheSgiVUlEIj0+JFYsIlBXRCI9PiRGLCJDaGFyYWN0ZXJTZXQiPT4iVVRGLTgiKTtpZigkbCE9IiIpJHliWyJEYXRhYmFzZSJdPSRsOyR0aGlzLT5fbGluaz1Ac3Fsc3J2X2Nvbm5lY3QocHJlZ19yZXBsYWNlKCd+On4nLCcsJywkTSksJHliKTtpZigkdGhpcy0+X2xpbmspeyRSZD1zcWxzcnZfc2VydmVyX2luZm8oJHRoaXMtPl9saW5rKTskdGhpcy0+c2VydmVyX2luZm89JFJkWydTUUxTZXJ2ZXJWZXJzaW9uJ107fWVsc2UkdGhpcy0+X2dldF9lcnJvcigpO3JldHVybihib29sKSR0aGlzLT5fbGluazt9ZnVuY3Rpb24KcXVvdGUoJFApe3JldHVybiInIi5zdHJfcmVwbGFjZSgiJyIsIicnIiwkUCkuIiciO31mdW5jdGlvbgpzZWxlY3RfZGIoJGope3JldHVybiR0aGlzLT5xdWVyeSgiVVNFICIuaWRmX2VzY2FwZSgkaikpO31mdW5jdGlvbgpxdWVyeSgkRywkQmk9ZmFsc2UpeyRIPXNxbHNydl9xdWVyeSgkdGhpcy0+X2xpbmssJEcpOyR0aGlzLT5lcnJvcj0iIjtpZighJEgpeyR0aGlzLT5fZ2V0X2Vycm9yKCk7cmV0dXJuCmZhbHNlO31yZXR1cm4kdGhpcy0+c3RvcmVfcmVzdWx0KCRIKTt9ZnVuY3Rpb24KbXVsdGlfcXVlcnkoJEcpeyR0aGlzLT5fcmVzdWx0PXNxbHNydl9xdWVyeSgkdGhpcy0+X2xpbmssJEcpOyR0aGlzLT5lcnJvcj0iIjtpZighJHRoaXMtPl9yZXN1bHQpeyR0aGlzLT5fZ2V0X2Vycm9yKCk7cmV0dXJuCmZhbHNlO31yZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24Kc3RvcmVfcmVzdWx0KCRIPW51bGwpe2lmKCEkSCkkSD0kdGhpcy0+X3Jlc3VsdDtpZighJEgpcmV0dXJuCmZhbHNlO2lmKHNxbHNydl9maWVsZF9tZXRhZGF0YSgkSCkpcmV0dXJuCm5ldwpNaW5fUmVzdWx0KCRIKTskdGhpcy0+YWZmZWN0ZWRfcm93cz1zcWxzcnZfcm93c19hZmZlY3RlZCgkSCk7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCm5leHRfcmVzdWx0KCl7cmV0dXJuJHRoaXMtPl9yZXN1bHQ/c3Fsc3J2X25leHRfcmVzdWx0KCR0aGlzLT5fcmVzdWx0KTpudWxsO31mdW5jdGlvbgpyZXN1bHQoJEcsJG89MCl7JEg9JHRoaXMtPnF1ZXJ5KCRHKTtpZighaXNfb2JqZWN0KCRIKSlyZXR1cm4KZmFsc2U7JEo9JEgtPmZldGNoX3JvdygpO3JldHVybiRKWyRvXTt9fWNsYXNzCk1pbl9SZXN1bHR7dmFyJF9yZXN1bHQsJF9vZmZzZXQ9MCwkX2ZpZWxkcywkbnVtX3Jvd3M7ZnVuY3Rpb24KX19jb25zdHJ1Y3QoJEgpeyR0aGlzLT5fcmVzdWx0PSRIO31mdW5jdGlvbgpfY29udmVydCgkSil7Zm9yZWFjaCgoYXJyYXkpJEoKYXMkej0+JFgpe2lmKGlzX2EoJFgsJ0RhdGVUaW1lJykpJEpbJHpdPSRYLT5mb3JtYXQoIlktbS1kIEg6aTpzIik7fXJldHVybiRKO31mdW5jdGlvbgpmZXRjaF9hc3NvYygpe3JldHVybiR0aGlzLT5fY29udmVydChzcWxzcnZfZmV0Y2hfYXJyYXkoJHRoaXMtPl9yZXN1bHQsU1FMU1JWX0ZFVENIX0FTU09DKSk7fWZ1bmN0aW9uCmZldGNoX3Jvdygpe3JldHVybiR0aGlzLT5fY29udmVydChzcWxzcnZfZmV0Y2hfYXJyYXkoJHRoaXMtPl9yZXN1bHQsU1FMU1JWX0ZFVENIX05VTUVSSUMpKTt9ZnVuY3Rpb24KZmV0Y2hfZmllbGQoKXtpZighJHRoaXMtPl9maWVsZHMpJHRoaXMtPl9maWVsZHM9c3Fsc3J2X2ZpZWxkX21ldGFkYXRhKCR0aGlzLT5fcmVzdWx0KTskbz0kdGhpcy0+X2ZpZWxkc1skdGhpcy0+X29mZnNldCsrXTskST1uZXcKc3RkQ2xhc3M7JEktPm5hbWU9JG9bIk5hbWUiXTskSS0+b3JnbmFtZT0kb1siTmFtZSJdOyRJLT50eXBlPSgkb1siVHlwZSJdPT0xPzI1NDowKTtyZXR1cm4kSTt9ZnVuY3Rpb24Kc2VlaygkaGYpe2ZvcigkdD0wOyR0PCRoZjskdCsrKXNxbHNydl9mZXRjaCgkdGhpcy0+X3Jlc3VsdCk7fWZ1bmN0aW9uCl9fZGVzdHJ1Y3QoKXtzcWxzcnZfZnJlZV9zdG10KCR0aGlzLT5fcmVzdWx0KTt9fX1lbHNlaWYoZXh0ZW5zaW9uX2xvYWRlZCgibXNzcWwiKSl7Y2xhc3MKTWluX0RCe3ZhciRleHRlbnNpb249Ik1TU1FMIiwkX2xpbmssJF9yZXN1bHQsJHNlcnZlcl9pbmZvLCRhZmZlY3RlZF9yb3dzLCRlcnJvcjtmdW5jdGlvbgpjb25uZWN0KCRNLCRWLCRGKXskdGhpcy0+X2xpbms9QG1zc3FsX2Nvbm5lY3QoJE0sJFYsJEYpO2lmKCR0aGlzLT5fbGluayl7JEg9JHRoaXMtPnF1ZXJ5KCJTRUxFQ1QgU0VSVkVSUFJPUEVSVFkoJ1Byb2R1Y3RMZXZlbCcpLCBTRVJWRVJQUk9QRVJUWSgnRWRpdGlvbicpIik7aWYoJEgpeyRKPSRILT5mZXRjaF9yb3coKTskdGhpcy0+c2VydmVyX2luZm89JHRoaXMtPnJlc3VsdCgic3Bfc2VydmVyX2luZm8gMiIsMikuIiBbJEpbMF1dICRKWzFdIjt9fWVsc2UkdGhpcy0+ZXJyb3I9bXNzcWxfZ2V0X2xhc3RfbWVzc2FnZSgpO3JldHVybihib29sKSR0aGlzLT5fbGluazt9ZnVuY3Rpb24KcXVvdGUoJFApe3JldHVybiInIi5zdHJfcmVwbGFjZSgiJyIsIicnIiwkUCkuIiciO31mdW5jdGlvbgpzZWxlY3RfZGIoJGope3JldHVybgptc3NxbF9zZWxlY3RfZGIoJGopO31mdW5jdGlvbgpxdWVyeSgkRywkQmk9ZmFsc2UpeyRIPUBtc3NxbF9xdWVyeSgkRywkdGhpcy0+X2xpbmspOyR0aGlzLT5lcnJvcj0iIjtpZighJEgpeyR0aGlzLT5lcnJvcj1tc3NxbF9nZXRfbGFzdF9tZXNzYWdlKCk7cmV0dXJuCmZhbHNlO31pZigkSD09PXRydWUpeyR0aGlzLT5hZmZlY3RlZF9yb3dzPW1zc3FsX3Jvd3NfYWZmZWN0ZWQoJHRoaXMtPl9saW5rKTtyZXR1cm4KdHJ1ZTt9cmV0dXJuCm5ldwpNaW5fUmVzdWx0KCRIKTt9ZnVuY3Rpb24KbXVsdGlfcXVlcnkoJEcpe3JldHVybiR0aGlzLT5fcmVzdWx0PSR0aGlzLT5xdWVyeSgkRyk7fWZ1bmN0aW9uCnN0b3JlX3Jlc3VsdCgpe3JldHVybiR0aGlzLT5fcmVzdWx0O31mdW5jdGlvbgpuZXh0X3Jlc3VsdCgpe3JldHVybgptc3NxbF9uZXh0X3Jlc3VsdCgkdGhpcy0+X3Jlc3VsdC0+X3Jlc3VsdCk7fWZ1bmN0aW9uCnJlc3VsdCgkRywkbz0wKXskSD0kdGhpcy0+cXVlcnkoJEcpO2lmKCFpc19vYmplY3QoJEgpKXJldHVybgpmYWxzZTtyZXR1cm4KbXNzcWxfcmVzdWx0KCRILT5fcmVzdWx0LDAsJG8pO319Y2xhc3MKTWluX1Jlc3VsdHt2YXIkX3Jlc3VsdCwkX29mZnNldD0wLCRfZmllbGRzLCRudW1fcm93cztmdW5jdGlvbgpfX2NvbnN0cnVjdCgkSCl7JHRoaXMtPl9yZXN1bHQ9JEg7JHRoaXMtPm51bV9yb3dzPW1zc3FsX251bV9yb3dzKCRIKTt9ZnVuY3Rpb24KZmV0Y2hfYXNzb2MoKXtyZXR1cm4KbXNzcWxfZmV0Y2hfYXNzb2MoJHRoaXMtPl9yZXN1bHQpO31mdW5jdGlvbgpmZXRjaF9yb3coKXtyZXR1cm4KbXNzcWxfZmV0Y2hfcm93KCR0aGlzLT5fcmVzdWx0KTt9ZnVuY3Rpb24KbnVtX3Jvd3MoKXtyZXR1cm4KbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPl9yZXN1bHQpO31mdW5jdGlvbgpmZXRjaF9maWVsZCgpeyRJPW1zc3FsX2ZldGNoX2ZpZWxkKCR0aGlzLT5fcmVzdWx0KTskSS0+b3JndGFibGU9JEktPnRhYmxlOyRJLT5vcmduYW1lPSRJLT5uYW1lO3JldHVybiRJO31mdW5jdGlvbgpzZWVrKCRoZil7bXNzcWxfZGF0YV9zZWVrKCR0aGlzLT5fcmVzdWx0LCRoZik7fWZ1bmN0aW9uCl9fZGVzdHJ1Y3QoKXttc3NxbF9mcmVlX3Jlc3VsdCgkdGhpcy0+X3Jlc3VsdCk7fX19ZWxzZWlmKGV4dGVuc2lvbl9sb2FkZWQoInBkb19kYmxpYiIpKXtjbGFzcwpNaW5fREIKZXh0ZW5kcwpNaW5fUERPe3ZhciRleHRlbnNpb249IlBET19EQkxJQiI7ZnVuY3Rpb24KY29ubmVjdCgkTSwkViwkRil7JHRoaXMtPmRzbigiZGJsaWI6Y2hhcnNldD11dGY4O2hvc3Q9Ii5zdHJfcmVwbGFjZSgiOiIsIjt1bml4X3NvY2tldD0iLHByZWdfcmVwbGFjZSgnfjooXGQpficsJztwb3J0PVwxJywkTSkpLCRWLCRGKTtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24Kc2VsZWN0X2RiKCRqKXtyZXR1cm4kdGhpcy0+cXVlcnkoIlVTRSAiLmlkZl9lc2NhcGUoJGopKTt9fX1jbGFzcwpNaW5fRHJpdmVyCmV4dGVuZHMKTWluX1NRTHtmdW5jdGlvbgppbnNlcnRVcGRhdGUoJFEsJEssJGtnKXtmb3JlYWNoKCRLCmFzJE4peyRJaT1hcnJheSgpOyRaPWFycmF5KCk7Zm9yZWFjaCgkTgphcyR6PT4kWCl7JElpW109IiR6ID0gJFgiO2lmKGlzc2V0KCRrZ1tpZGZfdW5lc2NhcGUoJHopXSkpJFpbXT0iJHogPSAkWCI7fWlmKCFxdWVyaWVzKCJNRVJHRSAiLnRhYmxlKCRRKS4iIFVTSU5HIChWQUxVRVMoIi5pbXBsb2RlKCIsICIsJE4pLiIpKSBBUyBzb3VyY2UgKGMiLmltcGxvZGUoIiwgYyIscmFuZ2UoMSxjb3VudCgkTikpKS4iKSBPTiAiLmltcGxvZGUoIiBBTkQgIiwkWikuIiBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUICIuaW1wbG9kZSgiLCAiLCRJaSkuIiBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUICgiLmltcGxvZGUoIiwgIixhcnJheV9rZXlzKCROKSkuIikgVkFMVUVTICgiLmltcGxvZGUoIiwgIiwkTikuIik7IikpcmV0dXJuCmZhbHNlO31yZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KYmVnaW4oKXtyZXR1cm4KcXVlcmllcygiQkVHSU4gVFJBTlNBQ1RJT04iKTt9fWZ1bmN0aW9uCmlkZl9lc2NhcGUoJHYpe3JldHVybiJbIi5zdHJfcmVwbGFjZSgiXSIsIl1dIiwkdikuIl0iO31mdW5jdGlvbgp0YWJsZSgkdil7cmV0dXJuKCRfR0VUWyJucyJdIT0iIj9pZGZfZXNjYXBlKCRfR0VUWyJucyJdKS4iLiI6IiIpLmlkZl9lc2NhcGUoJHYpO31mdW5jdGlvbgpjb25uZWN0KCl7Z2xvYmFsJGI7JGc9bmV3Ck1pbl9EQjskS2I9JGItPmNyZWRlbnRpYWxzKCk7aWYoJGctPmNvbm5lY3QoJEtiWzBdLCRLYlsxXSwkS2JbMl0pKXJldHVybiRnO3JldHVybiRnLT5lcnJvcjt9ZnVuY3Rpb24KZ2V0X2RhdGFiYXNlcygpe3JldHVybgpnZXRfdmFscygiU0VMRUNUIG5hbWUgRlJPTSBzeXMuZGF0YWJhc2VzIFdIRVJFIG5hbWUgTk9UIElOICgnbWFzdGVyJywgJ3RlbXBkYicsICdtb2RlbCcsICdtc2RiJykiKTt9ZnVuY3Rpb24KbGltaXQoJEcsJFosJF8sJGhmPTAsJGhoPSIgIil7cmV0dXJuKCRfIT09bnVsbD8iIFRPUCAoIi4oJF8rJGhmKS4iKSI6IiIpLiIgJEckWiI7fWZ1bmN0aW9uCmxpbWl0MSgkUSwkRywkWiwkaGg9IlxuIil7cmV0dXJuCmxpbWl0KCRHLCRaLDEsMCwkaGgpO31mdW5jdGlvbgpkYl9jb2xsYXRpb24oJGwsJGxiKXtnbG9iYWwkZztyZXR1cm4kZy0+cmVzdWx0KCJTRUxFQ1QgY29sbGF0aW9uX25hbWUgRlJPTSBzeXMuZGF0YWJhc2VzIFdIRVJFIG5hbWUgPSAiLnEoJGwpKTt9ZnVuY3Rpb24KZW5naW5lcygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpsb2dnZWRfdXNlcigpe2dsb2JhbCRnO3JldHVybiRnLT5yZXN1bHQoIlNFTEVDVCBTVVNFUl9OQU1FKCkiKTt9ZnVuY3Rpb24KdGFibGVzX2xpc3QoKXtyZXR1cm4KZ2V0X2tleV92YWxzKCJTRUxFQ1QgbmFtZSwgdHlwZV9kZXNjIEZST00gc3lzLmFsbF9vYmplY3RzIFdIRVJFIHNjaGVtYV9pZCA9IFNDSEVNQV9JRCgiLnEoZ2V0X3NjaGVtYSgpKS4iKSBBTkQgdHlwZSBJTiAoJ1MnLCAnVScsICdWJykgT1JERVIgQlkgbmFtZSIpO31mdW5jdGlvbgpjb3VudF90YWJsZXMoJGspe2dsb2JhbCRnOyRJPWFycmF5KCk7Zm9yZWFjaCgkawphcyRsKXskZy0+c2VsZWN0X2RiKCRsKTskSVskbF09JGctPnJlc3VsdCgiU0VMRUNUIENPVU5UKCopIEZST00gSU5GT1JNQVRJT05fU0NIRU1BLlRBQkxFUyIpO31yZXR1cm4kSTt9ZnVuY3Rpb24KdGFibGVfc3RhdHVzKCREPSIiKXskST1hcnJheSgpO2ZvcmVhY2goZ2V0X3Jvd3MoIlNFTEVDVCBhby5uYW1lIEFTIE5hbWUsIGFvLnR5cGVfZGVzYyBBUyBFbmdpbmUsIChTRUxFQ1QgdmFsdWUgRlJPTSBmbl9saXN0ZXh0ZW5kZWRwcm9wZXJ0eShkZWZhdWx0LCAnU0NIRU1BJywgc2NoZW1hX25hbWUoc2NoZW1hX2lkKSwgJ1RBQkxFJywgYW8ubmFtZSwgbnVsbCwgbnVsbCkpIEFTIENvbW1lbnQgRlJPTSBzeXMuYWxsX29iamVjdHMgQVMgYW8gV0hFUkUgc2NoZW1hX2lkID0gU0NIRU1BX0lEKCIucShnZXRfc2NoZW1hKCkpLiIpIEFORCB0eXBlIElOICgnUycsICdVJywgJ1YnKSAiLigkRCE9IiI/IkFORCBuYW1lID0gIi5xKCREKToiT1JERVIgQlkgbmFtZSIpKWFzJEope2lmKCREIT0iIilyZXR1cm4kSjskSVskSlsiTmFtZSJdXT0kSjt9cmV0dXJuJEk7fWZ1bmN0aW9uCmlzX3ZpZXcoJFIpe3JldHVybiRSWyJFbmdpbmUiXT09IlZJRVciO31mdW5jdGlvbgpma19zdXBwb3J0KCRSKXtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KZmllbGRzKCRRKXskdGI9Z2V0X2tleV92YWxzKCJTRUxFQ1Qgb2JqbmFtZSwgY2FzdCh2YWx1ZSBhcyB2YXJjaGFyKG1heCkpIEZST00gZm5fbGlzdGV4dGVuZGVkcHJvcGVydHkoJ01TX0RFU0NSSVBUSU9OJywgJ3NjaGVtYScsICIucShnZXRfc2NoZW1hKCkpLiIsICd0YWJsZScsICIucSgkUSkuIiwgJ2NvbHVtbicsIE5VTEwpIik7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgYy5tYXhfbGVuZ3RoLCBjLnByZWNpc2lvbiwgYy5zY2FsZSwgYy5uYW1lLCBjLmlzX251bGxhYmxlLCBjLmlzX2lkZW50aXR5LCBjLmNvbGxhdGlvbl9uYW1lLCB0Lm5hbWUgdHlwZSwgQ0FTVChkLmRlZmluaXRpb24gYXMgdGV4dCkgW2RlZmF1bHRdCkZST00gc3lzLmFsbF9jb2x1bW5zIGMKSk9JTiBzeXMuYWxsX29iamVjdHMgbyBPTiBjLm9iamVjdF9pZCA9IG8ub2JqZWN0X2lkCkpPSU4gc3lzLnR5cGVzIHQgT04gYy51c2VyX3R5cGVfaWQgPSB0LnVzZXJfdHlwZV9pZApMRUZUIEpPSU4gc3lzLmRlZmF1bHRfY29uc3RyYWludHMgZCBPTiBjLmRlZmF1bHRfb2JqZWN0X2lkID0gZC5wYXJlbnRfY29sdW1uX2lkCldIRVJFIG8uc2NoZW1hX2lkID0gU0NIRU1BX0lEKCIucShnZXRfc2NoZW1hKCkpLiIpIEFORCBvLnR5cGUgSU4gKCdTJywgJ1UnLCAnVicpIEFORCBvLm5hbWUgPSAiLnEoJFEpKWFzJEopeyRUPSRKWyJ0eXBlIl07JHRlPShwcmVnX21hdGNoKCJ+Y2hhcnxiaW5hcnl+IiwkVCk/JEpbIm1heF9sZW5ndGgiXTooJFQ9PSJkZWNpbWFsIj8iJEpbcHJlY2lzaW9uXSwkSltzY2FsZV0iOiIiKSk7JElbJEpbIm5hbWUiXV09YXJyYXkoImZpZWxkIj0+JEpbIm5hbWUiXSwiZnVsbF90eXBlIj0+JFQuKCR0ZT8iKCR0ZSkiOiIiKSwidHlwZSI9PiRULCJsZW5ndGgiPT4kdGUsImRlZmF1bHQiPT4kSlsiZGVmYXVsdCJdLCJudWxsIj0+JEpbImlzX251bGxhYmxlIl0sImF1dG9faW5jcmVtZW50Ij0+JEpbImlzX2lkZW50aXR5Il0sImNvbGxhdGlvbiI9PiRKWyJjb2xsYXRpb25fbmFtZSJdLCJwcml2aWxlZ2VzIj0+YXJyYXkoImluc2VydCI9PjEsInNlbGVjdCI9PjEsInVwZGF0ZSI9PjEpLCJwcmltYXJ5Ij0+JEpbImlzX2lkZW50aXR5Il0sImNvbW1lbnQiPT4kdGJbJEpbIm5hbWUiXV0sKTt9cmV0dXJuJEk7fWZ1bmN0aW9uCmluZGV4ZXMoJFEsJGg9bnVsbCl7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF9yb3dzKCJTRUxFQ1QgaS5uYW1lLCBrZXlfb3JkaW5hbCwgaXNfdW5pcXVlLCBpc19wcmltYXJ5X2tleSwgYy5uYW1lIEFTIGNvbHVtbl9uYW1lLCBpc19kZXNjZW5kaW5nX2tleQpGUk9NIHN5cy5pbmRleGVzIGkKSU5ORVIgSk9JTiBzeXMuaW5kZXhfY29sdW1ucyBpYyBPTiBpLm9iamVjdF9pZCA9IGljLm9iamVjdF9pZCBBTkQgaS5pbmRleF9pZCA9IGljLmluZGV4X2lkCklOTkVSIEpPSU4gc3lzLmNvbHVtbnMgYyBPTiBpYy5vYmplY3RfaWQgPSBjLm9iamVjdF9pZCBBTkQgaWMuY29sdW1uX2lkID0gYy5jb2x1bW5faWQKV0hFUkUgT0JKRUNUX05BTUUoaS5vYmplY3RfaWQpID0gIi5xKCRRKSwkaClhcyRKKXskRD0kSlsibmFtZSJdOyRJWyREXVsidHlwZSJdPSgkSlsiaXNfcHJpbWFyeV9rZXkiXT8iUFJJTUFSWSI6KCRKWyJpc191bmlxdWUiXT8iVU5JUVVFIjoiSU5ERVgiKSk7JElbJERdWyJsZW5ndGhzIl09YXJyYXkoKTskSVskRF1bImNvbHVtbnMiXVskSlsia2V5X29yZGluYWwiXV09JEpbImNvbHVtbl9uYW1lIl07JElbJERdWyJkZXNjcyJdWyRKWyJrZXlfb3JkaW5hbCJdXT0oJEpbImlzX2Rlc2NlbmRpbmdfa2V5Il0/JzEnOm51bGwpO31yZXR1cm4kSTt9ZnVuY3Rpb24KdmlldygkRCl7Z2xvYmFsJGc7cmV0dXJuCmFycmF5KCJzZWxlY3QiPT5wcmVnX3JlcGxhY2UoJ35eKD86W15bXXxcW1teXV0qXSkqXHMrQVNccyt+aXNVJywnJywkZy0+cmVzdWx0KCJTRUxFQ1QgVklFV19ERUZJTklUSU9OIEZST00gSU5GT1JNQVRJT05fU0NIRU1BLlZJRVdTIFdIRVJFIFRBQkxFX1NDSEVNQSA9IFNDSEVNQV9OQU1FKCkgQU5EIFRBQkxFX05BTUUgPSAiLnEoJEQpKSkpO31mdW5jdGlvbgpjb2xsYXRpb25zKCl7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF92YWxzKCJTRUxFQ1QgbmFtZSBGUk9NIGZuX2hlbHBjb2xsYXRpb25zKCkiKWFzJGQpJElbcHJlZ19yZXBsYWNlKCd+Xy4qficsJycsJGQpXVtdPSRkO3JldHVybiRJO31mdW5jdGlvbgppbmZvcm1hdGlvbl9zY2hlbWEoJGwpe3JldHVybgpmYWxzZTt9ZnVuY3Rpb24KZXJyb3IoKXtnbG9iYWwkZztyZXR1cm4KbmxfYnIoaChwcmVnX3JlcGxhY2UoJ35eKFxbW15dXSpdKSt+bScsJycsJGctPmVycm9yKSkpO31mdW5jdGlvbgpjcmVhdGVfZGF0YWJhc2UoJGwsJGQpe3JldHVybgpxdWVyaWVzKCJDUkVBVEUgREFUQUJBU0UgIi5pZGZfZXNjYXBlKCRsKS4ocHJlZ19tYXRjaCgnfl5bYS16MC05X10rJH5pJywkZCk/IiBDT0xMQVRFICRkIjoiIikpO31mdW5jdGlvbgpkcm9wX2RhdGFiYXNlcygkayl7cmV0dXJuCnF1ZXJpZXMoIkRST1AgREFUQUJBU0UgIi5pbXBsb2RlKCIsICIsYXJyYXlfbWFwKCdpZGZfZXNjYXBlJywkaykpKTt9ZnVuY3Rpb24KcmVuYW1lX2RhdGFiYXNlKCRELCRkKXtpZihwcmVnX21hdGNoKCd+XlthLXowLTlfXSskfmknLCRkKSlxdWVyaWVzKCJBTFRFUiBEQVRBQkFTRSAiLmlkZl9lc2NhcGUoREIpLiIgQ09MTEFURSAkZCIpO3F1ZXJpZXMoIkFMVEVSIERBVEFCQVNFICIuaWRmX2VzY2FwZShEQikuIiBNT0RJRlkgTkFNRSA9ICIuaWRmX2VzY2FwZSgkRCkpO3JldHVybgp0cnVlO31mdW5jdGlvbgphdXRvX2luY3JlbWVudCgpe3JldHVybiIgSURFTlRJVFkiLigkX1BPU1RbIkF1dG9faW5jcmVtZW50Il0hPSIiPyIoIi5udW1iZXIoJF9QT1NUWyJBdXRvX2luY3JlbWVudCJdKS4iLDEpIjoiIikuIiBQUklNQVJZIEtFWSI7fWZ1bmN0aW9uCmFsdGVyX3RhYmxlKCRRLCRELCRwLCRmZCwkcmIsJHljLCRkLCRLYSwkVGYpeyRjPWFycmF5KCk7JHRiPWFycmF5KCk7Zm9yZWFjaCgkcAphcyRvKXskZT1pZGZfZXNjYXBlKCRvWzBdKTskWD0kb1sxXTtpZighJFgpJGNbIkRST1AiXVtdPSIgQ09MVU1OICRlIjtlbHNleyRYWzFdPXByZWdfcmVwbGFjZSgifiggQ09MTEFURSApJyhcXHcrKSd+IiwnXDFcMicsJFhbMV0pOyR0Ylskb1swXV09JFhbNV07dW5zZXQoJFhbNV0pO2lmKCRvWzBdPT0iIikkY1siQUREIl1bXT0iXG4gICIuaW1wbG9kZSgiIiwkWCkuKCRRPT0iIj9zdWJzdHIoJGZkWyRYWzBdXSwxNitzdHJsZW4oJFhbMF0pKToiIik7ZWxzZXt1bnNldCgkWFs2XSk7aWYoJGUhPSRYWzBdKXF1ZXJpZXMoIkVYRUMgc3BfcmVuYW1lICIucSh0YWJsZSgkUSkuIi4kZSIpLiIsICIucShpZGZfdW5lc2NhcGUoJFhbMF0pKS4iLCAnQ09MVU1OJyIpOyRjWyJBTFRFUiBDT0xVTU4gIi5pbXBsb2RlKCIiLCRYKV1bXT0iIjt9fX1pZigkUT09IiIpcmV0dXJuCnF1ZXJpZXMoIkNSRUFURSBUQUJMRSAiLnRhYmxlKCREKS4iICgiLmltcGxvZGUoIiwiLChhcnJheSkkY1siQUREIl0pLiJcbikiKTtpZigkUSE9JEQpcXVlcmllcygiRVhFQyBzcF9yZW5hbWUgIi5xKHRhYmxlKCRRKSkuIiwgIi5xKCREKSk7aWYoJGZkKSRjWyIiXT0kZmQ7Zm9yZWFjaCgkYwphcyR6PT4kWCl7aWYoIXF1ZXJpZXMoIkFMVEVSIFRBQkxFICIuaWRmX2VzY2FwZSgkRCkuIiAkeiIuaW1wbG9kZSgiLCIsJFgpKSlyZXR1cm4KZmFsc2U7fWZvcmVhY2goJHRiCmFzJHo9PiRYKXskcmI9c3Vic3RyKCRYLDkpO3F1ZXJpZXMoIkVYRUMgc3BfZHJvcGV4dGVuZGVkcHJvcGVydHkgQG5hbWUgPSBOJ01TX0Rlc2NyaXB0aW9uJywgQGxldmVsMHR5cGUgPSBOJ1NjaGVtYScsIEBsZXZlbDBuYW1lID0gIi5xKGdldF9zY2hlbWEoKSkuIiwgQGxldmVsMXR5cGUgPSBOJ1RhYmxlJywgQGxldmVsMW5hbWUgPSAiLnEoJEQpLiIsIEBsZXZlbDJ0eXBlID0gTidDb2x1bW4nLCBAbGV2ZWwybmFtZSA9ICIucSgkeikpO3F1ZXJpZXMoIkVYRUMgc3BfYWRkZXh0ZW5kZWRwcm9wZXJ0eSBAbmFtZSA9IE4nTVNfRGVzY3JpcHRpb24nLCBAdmFsdWUgPSAiLiRyYi4iLCBAbGV2ZWwwdHlwZSA9IE4nU2NoZW1hJywgQGxldmVsMG5hbWUgPSAiLnEoZ2V0X3NjaGVtYSgpKS4iLCBAbGV2ZWwxdHlwZSA9IE4nVGFibGUnLCBAbGV2ZWwxbmFtZSA9ICIucSgkRCkuIiwgQGxldmVsMnR5cGUgPSBOJ0NvbHVtbicsIEBsZXZlbDJuYW1lID0gIi5xKCR6KSk7fXJldHVybgp0cnVlO31mdW5jdGlvbgphbHRlcl9pbmRleGVzKCRRLCRjKXskdz1hcnJheSgpOyRqYz1hcnJheSgpO2ZvcmVhY2goJGMKYXMkWCl7aWYoJFhbMl09PSJEUk9QIil7aWYoJFhbMF09PSJQUklNQVJZIikkamNbXT1pZGZfZXNjYXBlKCRYWzFdKTtlbHNlJHdbXT1pZGZfZXNjYXBlKCRYWzFdKS4iIE9OICIudGFibGUoJFEpO31lbHNlaWYoIXF1ZXJpZXMoKCRYWzBdIT0iUFJJTUFSWSI/IkNSRUFURSAkWFswXSAiLigkWFswXSE9IklOREVYIj8iSU5ERVggIjoiIikuaWRmX2VzY2FwZSgkWFsxXSE9IiI/JFhbMV06dW5pcWlkKCRRLiJfIikpLiIgT04gIi50YWJsZSgkUSk6IkFMVEVSIFRBQkxFICIudGFibGUoJFEpLiIgQUREIFBSSU1BUlkgS0VZIikuIiAoIi5pbXBsb2RlKCIsICIsJFhbMl0pLiIpIikpcmV0dXJuCmZhbHNlO31yZXR1cm4oISR3fHxxdWVyaWVzKCJEUk9QIElOREVYICIuaW1wbG9kZSgiLCAiLCR3KSkpJiYoISRqY3x8cXVlcmllcygiQUxURVIgVEFCTEUgIi50YWJsZSgkUSkuIiBEUk9QICIuaW1wbG9kZSgiLCAiLCRqYykpKTt9ZnVuY3Rpb24KbGFzdF9pZCgpe2dsb2JhbCRnO3JldHVybiRnLT5yZXN1bHQoIlNFTEVDVCBTQ09QRV9JREVOVElUWSgpIik7fWZ1bmN0aW9uCmV4cGxhaW4oJGcsJEcpeyRnLT5xdWVyeSgiU0VUIFNIT1dQTEFOX0FMTCBPTiIpOyRJPSRnLT5xdWVyeSgkRyk7JGctPnF1ZXJ5KCJTRVQgU0hPV1BMQU5fQUxMIE9GRiIpO3JldHVybiRJO31mdW5jdGlvbgpmb3VuZF9yb3dzKCRSLCRaKXt9ZnVuY3Rpb24KZm9yZWlnbl9rZXlzKCRRKXskST1hcnJheSgpO2ZvcmVhY2goZ2V0X3Jvd3MoIkVYRUMgc3BfZmtleXMgQGZrdGFibGVfbmFtZSA9ICIucSgkUSkpYXMkSil7JHI9JiRJWyRKWyJGS19OQU1FIl1dOyRyWyJkYiJdPSRKWyJQS1RBQkxFX1FVQUxJRklFUiJdOyRyWyJ0YWJsZSJdPSRKWyJQS1RBQkxFX05BTUUiXTskclsic291cmNlIl1bXT0kSlsiRktDT0xVTU5fTkFNRSJdOyRyWyJ0YXJnZXQiXVtdPSRKWyJQS0NPTFVNTl9OQU1FIl07fXJldHVybiRJO31mdW5jdGlvbgp0cnVuY2F0ZV90YWJsZXMoJFMpe3JldHVybgphcHBseV9xdWVyaWVzKCJUUlVOQ0FURSBUQUJMRSIsJFMpO31mdW5jdGlvbgpkcm9wX3ZpZXdzKCRZaSl7cmV0dXJuCnF1ZXJpZXMoIkRST1AgVklFVyAiLmltcGxvZGUoIiwgIixhcnJheV9tYXAoJ3RhYmxlJywkWWkpKSk7fWZ1bmN0aW9uCmRyb3BfdGFibGVzKCRTKXtyZXR1cm4KcXVlcmllcygiRFJPUCBUQUJMRSAiLmltcGxvZGUoIiwgIixhcnJheV9tYXAoJ3RhYmxlJywkUykpKTt9ZnVuY3Rpb24KbW92ZV90YWJsZXMoJFMsJFlpLCRXaCl7cmV0dXJuCmFwcGx5X3F1ZXJpZXMoIkFMVEVSIFNDSEVNQSAiLmlkZl9lc2NhcGUoJFdoKS4iIFRSQU5TRkVSIixhcnJheV9tZXJnZSgkUywkWWkpKTt9ZnVuY3Rpb24KdHJpZ2dlcigkRCl7aWYoJEQ9PSIiKXJldHVybgphcnJheSgpOyRLPWdldF9yb3dzKCJTRUxFQ1Qgcy5uYW1lIFtUcmlnZ2VyXSwKQ0FTRSBXSEVOIE9CSkVDVFBST1BFUlRZKHMuaWQsICdFeGVjSXNJbnNlcnRUcmlnZ2VyJykgPSAxIFRIRU4gJ0lOU0VSVCcgV0hFTiBPQkpFQ1RQUk9QRVJUWShzLmlkLCAnRXhlY0lzVXBkYXRlVHJpZ2dlcicpID0gMSBUSEVOICdVUERBVEUnIFdIRU4gT0JKRUNUUFJPUEVSVFkocy5pZCwgJ0V4ZWNJc0RlbGV0ZVRyaWdnZXInKSA9IDEgVEhFTiAnREVMRVRFJyBFTkQgW0V2ZW50XSwKQ0FTRSBXSEVOIE9CSkVDVFBST1BFUlRZKHMuaWQsICdFeGVjSXNJbnN0ZWFkT2ZUcmlnZ2VyJykgPSAxIFRIRU4gJ0lOU1RFQUQgT0YnIEVMU0UgJ0FGVEVSJyBFTkQgW1RpbWluZ10sCmMudGV4dApGUk9NIHN5c29iamVjdHMgcwpKT0lOIHN5c2NvbW1lbnRzIGMgT04gcy5pZCA9IGMuaWQKV0hFUkUgcy54dHlwZSA9ICdUUicgQU5EIHMubmFtZSA9ICIucSgkRCkpOyRJPXJlc2V0KCRLKTtpZigkSSkkSVsiU3RhdGVtZW50Il09cHJlZ19yZXBsYWNlKCd+Xi4rXHMrQVNccyt+aXNVJywnJywkSVsidGV4dCJdKTtyZXR1cm4kSTt9ZnVuY3Rpb24KdHJpZ2dlcnMoJFEpeyRJPWFycmF5KCk7Zm9yZWFjaChnZXRfcm93cygiU0VMRUNUIHN5czEubmFtZSwKQ0FTRSBXSEVOIE9CSkVDVFBST1BFUlRZKHN5czEuaWQsICdFeGVjSXNJbnNlcnRUcmlnZ2VyJykgPSAxIFRIRU4gJ0lOU0VSVCcgV0hFTiBPQkpFQ1RQUk9QRVJUWShzeXMxLmlkLCAnRXhlY0lzVXBkYXRlVHJpZ2dlcicpID0gMSBUSEVOICdVUERBVEUnIFdIRU4gT0JKRUNUUFJPUEVSVFkoc3lzMS5pZCwgJ0V4ZWNJc0RlbGV0ZVRyaWdnZXInKSA9IDEgVEhFTiAnREVMRVRFJyBFTkQgW0V2ZW50XSwKQ0FTRSBXSEVOIE9CSkVDVFBST1BFUlRZKHN5czEuaWQsICdFeGVjSXNJbnN0ZWFkT2ZUcmlnZ2VyJykgPSAxIFRIRU4gJ0lOU1RFQUQgT0YnIEVMU0UgJ0FGVEVSJyBFTkQgW1RpbWluZ10KRlJPTSBzeXNvYmplY3RzIHN5czEKSk9JTiBzeXNvYmplY3RzIHN5czIgT04gc3lzMS5wYXJlbnRfb2JqID0gc3lzMi5pZApXSEVSRSBzeXMxLnh0eXBlID0gJ1RSJyBBTkQgc3lzMi5uYW1lID0gIi5xKCRRKSlhcyRKKSRJWyRKWyJuYW1lIl1dPWFycmF5KCRKWyJUaW1pbmciXSwkSlsiRXZlbnQiXSk7cmV0dXJuJEk7fWZ1bmN0aW9uCnRyaWdnZXJfb3B0aW9ucygpe3JldHVybgphcnJheSgiVGltaW5nIj0+YXJyYXkoIkFGVEVSIiwiSU5TVEVBRCBPRiIpLCJFdmVudCI9PmFycmF5KCJJTlNFUlQiLCJVUERBVEUiLCJERUxFVEUiKSwiVHlwZSI9PmFycmF5KCJBUyIpLCk7fWZ1bmN0aW9uCnNjaGVtYXMoKXtyZXR1cm4KZ2V0X3ZhbHMoIlNFTEVDVCBuYW1lIEZST00gc3lzLnNjaGVtYXMiKTt9ZnVuY3Rpb24KZ2V0X3NjaGVtYSgpe2dsb2JhbCRnO2lmKCRfR0VUWyJucyJdIT0iIilyZXR1cm4kX0dFVFsibnMiXTtyZXR1cm4kZy0+cmVzdWx0KCJTRUxFQ1QgU0NIRU1BX05BTUUoKSIpO31mdW5jdGlvbgpzZXRfc2NoZW1hKCRaZyl7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnVzZV9zcWwoJGope3JldHVybiJVU0UgIi5pZGZfZXNjYXBlKCRqKTt9ZnVuY3Rpb24Kc2hvd192YXJpYWJsZXMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24Kc2hvd19zdGF0dXMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24KY29udmVydF9maWVsZCgkbyl7fWZ1bmN0aW9uCnVuY29udmVydF9maWVsZCgkbywkSSl7cmV0dXJuJEk7fWZ1bmN0aW9uCnN1cHBvcnQoJFRjKXtyZXR1cm4KcHJlZ19tYXRjaCgnfl4oY29tbWVudHxjb2x1bW5zfGRhdGFiYXNlfGRyb3BfY29sfGluZGV4ZXN8ZGVzY2lkeHxzY2hlbWV8c3FsfHRhYmxlfHRyaWdnZXJ8dmlld3x2aWV3X3RyaWdnZXIpJH4nLCRUYyk7fWZ1bmN0aW9uCmRyaXZlcl9jb25maWcoKXskVT1hcnJheSgpOyRHaD1hcnJheSgpO2ZvcmVhY2goYXJyYXkoJ051bWJlcnMnPT5hcnJheSgidGlueWludCI9PjMsInNtYWxsaW50Ij0+NSwiaW50Ij0+MTAsImJpZ2ludCI9PjIwLCJiaXQiPT4xLCJkZWNpbWFsIj0+MCwicmVhbCI9PjEyLCJmbG9hdCI9PjUzLCJzbWFsbG1vbmV5Ij0+MTAsIm1vbmV5Ij0+MjApLCdEYXRlIGFuZCB0aW1lJz0+YXJyYXkoImRhdGUiPT4xMCwic21hbGxkYXRldGltZSI9PjE5LCJkYXRldGltZSI9PjE5LCJkYXRldGltZTIiPT4xOSwidGltZSI9PjgsImRhdGV0aW1lb2Zmc2V0Ij0+MTApLCdTdHJpbmdzJz0+YXJyYXkoImNoYXIiPT44MDAwLCJ2YXJjaGFyIj0+ODAwMCwidGV4dCI9PjIxNDc0ODM2NDcsIm5jaGFyIj0+NDAwMCwibnZhcmNoYXIiPT40MDAwLCJudGV4dCI9PjEwNzM3NDE4MjMpLCdCaW5hcnknPT5hcnJheSgiYmluYXJ5Ij0+ODAwMCwidmFyYmluYXJ5Ij0+ODAwMCwiaW1hZ2UiPT4yMTQ3NDgzNjQ3KSwpYXMkej0+JFgpeyRVKz0kWDskR2hbJHpdPWFycmF5X2tleXMoJFgpO31yZXR1cm4KYXJyYXkoJ3Bvc3NpYmxlX2RyaXZlcnMnPT5hcnJheSgiU1FMU1JWIiwiTVNTUUwiLCJQRE9fREJMSUIiKSwnanVzaCc9PiJtc3NxbCIsJ3R5cGVzJz0+JFUsJ3N0cnVjdHVyZWRfdHlwZXMnPT4kR2gsJ3Vuc2lnbmVkJz0+YXJyYXkoKSwnb3BlcmF0b3JzJz0+YXJyYXkoIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCIhPSIsIkxJS0UiLCJMSUtFICUlIiwiSU4iLCJJUyBOVUxMIiwiTk9UIExJS0UiLCJOT1QgSU4iLCJJUyBOT1QgTlVMTCIpLCdmdW5jdGlvbnMnPT5hcnJheSgibGVuIiwibG93ZXIiLCJyb3VuZCIsInVwcGVyIiksJ2dyb3VwaW5nJz0+YXJyYXkoImF2ZyIsImNvdW50IiwiY291bnQgZGlzdGluY3QiLCJtYXgiLCJtaW4iLCJzdW0iKSwnZWRpdF9mdW5jdGlvbnMnPT5hcnJheShhcnJheSgiZGF0ZXx0aW1lIj0+ImdldGRhdGUiLCksYXJyYXkoImludHxkZWNpbWFsfHJlYWx8ZmxvYXR8bW9uZXl8ZGF0ZXRpbWUiPT4iKy8tIiwiY2hhcnx0ZXh0Ij0+IisiLCkpLCk7fX0kaWNbIm1vbmdvIl09Ik1vbmdvREIgKGFscGhhKSI7aWYoaXNzZXQoJF9HRVRbIm1vbmdvIl0pKXtkZWZpbmUoIkRSSVZFUiIsIm1vbmdvIik7aWYoY2xhc3NfZXhpc3RzKCdNb25nb0RCJykpe2NsYXNzCk1pbl9EQnt2YXIkZXh0ZW5zaW9uPSJNb25nbyIsJHNlcnZlcl9pbmZvPU1vbmdvQ2xpZW50OjpWRVJTSU9OLCRlcnJvciwkbGFzdF9pZCwkX2xpbmssJF9kYjtmdW5jdGlvbgpjb25uZWN0KCRKaSwkeGYpe3RyeXskdGhpcy0+X2xpbms9bmV3Ck1vbmdvQ2xpZW50KCRKaSwkeGYpO2lmKCR4ZlsicGFzc3dvcmQiXSE9IiIpeyR4ZlsicGFzc3dvcmQiXT0iIjt0cnl7bmV3Ck1vbmdvQ2xpZW50KCRKaSwkeGYpOyR0aGlzLT5lcnJvcj0nRGF0YWJhc2UgZG9lcyBub3Qgc3VwcG9ydCBwYXNzd29yZC4nO31jYXRjaChFeGNlcHRpb24kcGMpe319fWNhdGNoKEV4Y2VwdGlvbiRwYyl7JHRoaXMtPmVycm9yPSRwYy0+Z2V0TWVzc2FnZSgpO319ZnVuY3Rpb24KcXVlcnkoJEcpe3JldHVybgpmYWxzZTt9ZnVuY3Rpb24Kc2VsZWN0X2RiKCRqKXt0cnl7JHRoaXMtPl9kYj0kdGhpcy0+X2xpbmstPnNlbGVjdERCKCRqKTtyZXR1cm4KdHJ1ZTt9Y2F0Y2goRXhjZXB0aW9uJEZjKXskdGhpcy0+ZXJyb3I9JEZjLT5nZXRNZXNzYWdlKCk7cmV0dXJuCmZhbHNlO319ZnVuY3Rpb24KcXVvdGUoJFApe3JldHVybiRQO319Y2xhc3MKTWluX1Jlc3VsdHt2YXIkbnVtX3Jvd3MsJF9yb3dzPWFycmF5KCksJF9vZmZzZXQ9MCwkX2NoYXJzZXQ9YXJyYXkoKTtmdW5jdGlvbgpfX2NvbnN0cnVjdCgkSCl7Zm9yZWFjaCgkSAphcyRkZSl7JEo9YXJyYXkoKTtmb3JlYWNoKCRkZQphcyR6PT4kWCl7aWYoaXNfYSgkWCwnTW9uZ29CaW5EYXRhJykpJHRoaXMtPl9jaGFyc2V0WyR6XT02MzskSlskel09KGlzX2EoJFgsJ01vbmdvSWQnKT8iT2JqZWN0SWQoXCIkWFwiKSI6KGlzX2EoJFgsJ01vbmdvRGF0ZScpP2dtZGF0ZSgiWS1tLWQgSDppOnMiLCRYLT5zZWMpLiIgR01UIjooaXNfYSgkWCwnTW9uZ29CaW5EYXRhJyk/JFgtPmJpbjooaXNfYSgkWCwnTW9uZ29SZWdleCcpPyIkWCI6KGlzX29iamVjdCgkWCk/Z2V0X2NsYXNzKCRYKTokWCkpKSkpO30kdGhpcy0+X3Jvd3NbXT0kSjtmb3JlYWNoKCRKCmFzJHo9PiRYKXtpZighaXNzZXQoJHRoaXMtPl9yb3dzWzBdWyR6XSkpJHRoaXMtPl9yb3dzWzBdWyR6XT1udWxsO319JHRoaXMtPm51bV9yb3dzPWNvdW50KCR0aGlzLT5fcm93cyk7fWZ1bmN0aW9uCmZldGNoX2Fzc29jKCl7JEo9Y3VycmVudCgkdGhpcy0+X3Jvd3MpO2lmKCEkSilyZXR1cm4kSjskST1hcnJheSgpO2ZvcmVhY2goJHRoaXMtPl9yb3dzWzBdYXMkej0+JFgpJElbJHpdPSRKWyR6XTtuZXh0KCR0aGlzLT5fcm93cyk7cmV0dXJuJEk7fWZ1bmN0aW9uCmZldGNoX3JvdygpeyRJPSR0aGlzLT5mZXRjaF9hc3NvYygpO2lmKCEkSSlyZXR1cm4kSTtyZXR1cm4KYXJyYXlfdmFsdWVzKCRJKTt9ZnVuY3Rpb24KZmV0Y2hfZmllbGQoKXskaGU9YXJyYXlfa2V5cygkdGhpcy0+X3Jvd3NbMF0pOyREPSRoZVskdGhpcy0+X29mZnNldCsrXTtyZXR1cm4ob2JqZWN0KWFycmF5KCduYW1lJz0+JEQsJ2NoYXJzZXRucic9PiR0aGlzLT5fY2hhcnNldFskRF0sKTt9fWNsYXNzCk1pbl9Ecml2ZXIKZXh0ZW5kcwpNaW5fU1FMe3B1YmxpYyRrZz0iX2lkIjtmdW5jdGlvbgpzZWxlY3QoJFEsJEwsJFosJHFkLCR6Zj1hcnJheSgpLCRfPTEsJEU9MCwkbWc9ZmFsc2UpeyRMPSgkTD09YXJyYXkoIioiKT9hcnJheSgpOmFycmF5X2ZpbGxfa2V5cygkTCx0cnVlKSk7JHVoPWFycmF5KCk7Zm9yZWFjaCgkemYKYXMkWCl7JFg9cHJlZ19yZXBsYWNlKCd+IERFU0MkficsJycsJFgsMSwkR2IpOyR1aFskWF09KCRHYj8tMToxKTt9cmV0dXJuCm5ldwpNaW5fUmVzdWx0KCR0aGlzLT5fY29ubi0+X2RiLT5zZWxlY3RDb2xsZWN0aW9uKCRRKS0+ZmluZChhcnJheSgpLCRMKS0+c29ydCgkdWgpLT5saW1pdCgkXyE9IiI/KyRfOjApLT5za2lwKCRFKiRfKSk7fWZ1bmN0aW9uCmluc2VydCgkUSwkTil7dHJ5eyRJPSR0aGlzLT5fY29ubi0+X2RiLT5zZWxlY3RDb2xsZWN0aW9uKCRRKS0+aW5zZXJ0KCROKTskdGhpcy0+X2Nvbm4tPmVycm5vPSRJWydjb2RlJ107JHRoaXMtPl9jb25uLT5lcnJvcj0kSVsnZXJyJ107JHRoaXMtPl9jb25uLT5sYXN0X2lkPSROWydfaWQnXTtyZXR1cm4hJElbJ2VyciddO31jYXRjaChFeGNlcHRpb24kRmMpeyR0aGlzLT5fY29ubi0+ZXJyb3I9JEZjLT5nZXRNZXNzYWdlKCk7cmV0dXJuCmZhbHNlO319fWZ1bmN0aW9uCmdldF9kYXRhYmFzZXMoJGRkKXtnbG9iYWwkZzskST1hcnJheSgpOyRVYj0kZy0+X2xpbmstPmxpc3REQnMoKTtmb3JlYWNoKCRVYlsnZGF0YWJhc2VzJ11hcyRsKSRJW109JGxbJ25hbWUnXTtyZXR1cm4kSTt9ZnVuY3Rpb24KY291bnRfdGFibGVzKCRrKXtnbG9iYWwkZzskST1hcnJheSgpO2ZvcmVhY2goJGsKYXMkbCkkSVskbF09Y291bnQoJGctPl9saW5rLT5zZWxlY3REQigkbCktPmdldENvbGxlY3Rpb25OYW1lcyh0cnVlKSk7cmV0dXJuJEk7fWZ1bmN0aW9uCnRhYmxlc19saXN0KCl7Z2xvYmFsJGc7cmV0dXJuCmFycmF5X2ZpbGxfa2V5cygkZy0+X2RiLT5nZXRDb2xsZWN0aW9uTmFtZXModHJ1ZSksJ3RhYmxlJyk7fWZ1bmN0aW9uCmRyb3BfZGF0YWJhc2VzKCRrKXtnbG9iYWwkZztmb3JlYWNoKCRrCmFzJGwpeyRMZz0kZy0+X2xpbmstPnNlbGVjdERCKCRsKS0+ZHJvcCgpO2lmKCEkTGdbJ29rJ10pcmV0dXJuCmZhbHNlO31yZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KaW5kZXhlcygkUSwkaD1udWxsKXtnbG9iYWwkZzskST1hcnJheSgpO2ZvcmVhY2goJGctPl9kYi0+c2VsZWN0Q29sbGVjdGlvbigkUSktPmdldEluZGV4SW5mbygpYXMkdyl7JGNjPWFycmF5KCk7Zm9yZWFjaCgkd1sia2V5Il1hcyRlPT4kVCkkY2NbXT0oJFQ9PS0xPycxJzpudWxsKTskSVskd1sibmFtZSJdXT1hcnJheSgidHlwZSI9Pigkd1sibmFtZSJdPT0iX2lkXyI/IlBSSU1BUlkiOigkd1sidW5pcXVlIl0/IlVOSVFVRSI6IklOREVYIikpLCJjb2x1bW5zIj0+YXJyYXlfa2V5cygkd1sia2V5Il0pLCJsZW5ndGhzIj0+YXJyYXkoKSwiZGVzY3MiPT4kY2MsKTt9cmV0dXJuJEk7fWZ1bmN0aW9uCmZpZWxkcygkUSl7cmV0dXJuCmZpZWxkc19mcm9tX2VkaXQoKTt9ZnVuY3Rpb24KZm91bmRfcm93cygkUiwkWil7Z2xvYmFsJGc7cmV0dXJuJGctPl9kYi0+c2VsZWN0Q29sbGVjdGlvbigkX0dFVFsic2VsZWN0Il0pLT5jb3VudCgkWik7fSR1Zj1hcnJheSgiPSIpO31lbHNlaWYoY2xhc3NfZXhpc3RzKCdNb25nb0RCXERyaXZlclxNYW5hZ2VyJykpe2NsYXNzCk1pbl9EQnt2YXIkZXh0ZW5zaW9uPSJNb25nb0RCIiwkc2VydmVyX2luZm89TU9OR09EQl9WRVJTSU9OLCRhZmZlY3RlZF9yb3dzLCRlcnJvciwkbGFzdF9pZDt2YXIkX2xpbms7dmFyJF9kYiwkX2RiX25hbWU7ZnVuY3Rpb24KY29ubmVjdCgkSmksJHhmKXskZ2I9J01vbmdvREJcRHJpdmVyXE1hbmFnZXInOyR0aGlzLT5fbGluaz1uZXckZ2IoJEppLCR4Zik7JHRoaXMtPmV4ZWN1dGVDb21tYW5kKCdhZG1pbicsYXJyYXkoJ3BpbmcnPT4xKSk7fWZ1bmN0aW9uCmV4ZWN1dGVDb21tYW5kKCRsLCRwYil7JGdiPSdNb25nb0RCXERyaXZlclxDb21tYW5kJzt0cnl7cmV0dXJuJHRoaXMtPl9saW5rLT5leGVjdXRlQ29tbWFuZCgkbCxuZXckZ2IoJHBiKSk7fWNhdGNoKEV4Y2VwdGlvbiRwYyl7JHRoaXMtPmVycm9yPSRwYy0+Z2V0TWVzc2FnZSgpO3JldHVybgphcnJheSgpO319ZnVuY3Rpb24KZXhlY3V0ZUJ1bGtXcml0ZSgkV2UsJFdhLCRIYil7dHJ5eyRPZz0kdGhpcy0+X2xpbmstPmV4ZWN1dGVCdWxrV3JpdGUoJFdlLCRXYSk7JHRoaXMtPmFmZmVjdGVkX3Jvd3M9JE9nLT4kSGIoKTtyZXR1cm4KdHJ1ZTt9Y2F0Y2goRXhjZXB0aW9uJHBjKXskdGhpcy0+ZXJyb3I9JHBjLT5nZXRNZXNzYWdlKCk7cmV0dXJuCmZhbHNlO319ZnVuY3Rpb24KcXVlcnkoJEcpe3JldHVybgpmYWxzZTt9ZnVuY3Rpb24Kc2VsZWN0X2RiKCRqKXskdGhpcy0+X2RiX25hbWU9JGo7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnF1b3RlKCRQKXtyZXR1cm4kUDt9fWNsYXNzCk1pbl9SZXN1bHR7dmFyJG51bV9yb3dzLCRfcm93cz1hcnJheSgpLCRfb2Zmc2V0PTAsJF9jaGFyc2V0PWFycmF5KCk7ZnVuY3Rpb24KX19jb25zdHJ1Y3QoJEgpe2ZvcmVhY2goJEgKYXMkZGUpeyRKPWFycmF5KCk7Zm9yZWFjaCgkZGUKYXMkej0+JFgpe2lmKGlzX2EoJFgsJ01vbmdvREJcQlNPTlxCaW5hcnknKSkkdGhpcy0+X2NoYXJzZXRbJHpdPTYzOyRKWyR6XT0oaXNfYSgkWCwnTW9uZ29EQlxCU09OXE9iamVjdElEJyk/J01vbmdvREJcQlNPTlxPYmplY3RJRCgiJy4iJFhcIikiOihpc19hKCRYLCdNb25nb0RCXEJTT05cVVRDRGF0ZXRpbWUnKT8kWC0+dG9EYXRlVGltZSgpLT5mb3JtYXQoJ1ktbS1kIEg6aTpzJyk6KGlzX2EoJFgsJ01vbmdvREJcQlNPTlxCaW5hcnknKT8kWC0+Z2V0RGF0YSgpOihpc19hKCRYLCdNb25nb0RCXEJTT05cUmVnZXgnKT8iJFgiOihpc19vYmplY3QoJFgpfHxpc19hcnJheSgkWCk/anNvbl9lbmNvZGUoJFgsMjU2KTokWCkpKSkpO30kdGhpcy0+X3Jvd3NbXT0kSjtmb3JlYWNoKCRKCmFzJHo9PiRYKXtpZighaXNzZXQoJHRoaXMtPl9yb3dzWzBdWyR6XSkpJHRoaXMtPl9yb3dzWzBdWyR6XT1udWxsO319JHRoaXMtPm51bV9yb3dzPWNvdW50KCR0aGlzLT5fcm93cyk7fWZ1bmN0aW9uCmZldGNoX2Fzc29jKCl7JEo9Y3VycmVudCgkdGhpcy0+X3Jvd3MpO2lmKCEkSilyZXR1cm4kSjskST1hcnJheSgpO2ZvcmVhY2goJHRoaXMtPl9yb3dzWzBdYXMkej0+JFgpJElbJHpdPSRKWyR6XTtuZXh0KCR0aGlzLT5fcm93cyk7cmV0dXJuJEk7fWZ1bmN0aW9uCmZldGNoX3JvdygpeyRJPSR0aGlzLT5mZXRjaF9hc3NvYygpO2lmKCEkSSlyZXR1cm4kSTtyZXR1cm4KYXJyYXlfdmFsdWVzKCRJKTt9ZnVuY3Rpb24KZmV0Y2hfZmllbGQoKXskaGU9YXJyYXlfa2V5cygkdGhpcy0+X3Jvd3NbMF0pOyREPSRoZVskdGhpcy0+X29mZnNldCsrXTtyZXR1cm4ob2JqZWN0KWFycmF5KCduYW1lJz0+JEQsJ2NoYXJzZXRucic9PiR0aGlzLT5fY2hhcnNldFskRF0sKTt9fWNsYXNzCk1pbl9Ecml2ZXIKZXh0ZW5kcwpNaW5fU1FMe3B1YmxpYyRrZz0iX2lkIjtmdW5jdGlvbgpzZWxlY3QoJFEsJEwsJFosJHFkLCR6Zj1hcnJheSgpLCRfPTEsJEU9MCwkbWc9ZmFsc2Upe2dsb2JhbCRnOyRMPSgkTD09YXJyYXkoIioiKT9hcnJheSgpOmFycmF5X2ZpbGxfa2V5cygkTCwxKSk7aWYoY291bnQoJEwpJiYhaXNzZXQoJExbJ19pZCddKSkkTFsnX2lkJ109MDskWj13aGVyZV90b19xdWVyeSgkWik7JHVoPWFycmF5KCk7Zm9yZWFjaCgkemYKYXMkWCl7JFg9cHJlZ19yZXBsYWNlKCd+IERFU0MkficsJycsJFgsMSwkR2IpOyR1aFskWF09KCRHYj8tMToxKTt9aWYoaXNzZXQoJF9HRVRbJ2xpbWl0J10pJiZpc19udW1lcmljKCRfR0VUWydsaW1pdCddKSYmJF9HRVRbJ2xpbWl0J10+MCkkXz0kX0dFVFsnbGltaXQnXTskXz1taW4oMjAwLG1heCgxLChpbnQpJF8pKTskcmg9JEUqJF87JGdiPSdNb25nb0RCXERyaXZlclxRdWVyeSc7dHJ5e3JldHVybgpuZXcKTWluX1Jlc3VsdCgkZy0+X2xpbmstPmV4ZWN1dGVRdWVyeSgiJGctPl9kYl9uYW1lLiRRIixuZXckZ2IoJFosYXJyYXkoJ3Byb2plY3Rpb24nPT4kTCwnbGltaXQnPT4kXywnc2tpcCc9PiRyaCwnc29ydCc9PiR1aCkpKSk7fWNhdGNoKEV4Y2VwdGlvbiRwYyl7JGctPmVycm9yPSRwYy0+Z2V0TWVzc2FnZSgpO3JldHVybgpmYWxzZTt9fWZ1bmN0aW9uCnVwZGF0ZSgkUSwkTiwkd2csJF89MCwkaGg9IlxuIil7Z2xvYmFsJGc7JGw9JGctPl9kYl9uYW1lOyRaPXNxbF9xdWVyeV93aGVyZV9wYXJzZXIoJHdnKTskZ2I9J01vbmdvREJcRHJpdmVyXEJ1bGtXcml0ZSc7JFdhPW5ldyRnYihhcnJheSgpKTtpZihpc3NldCgkTlsnX2lkJ10pKXVuc2V0KCROWydfaWQnXSk7JElnPWFycmF5KCk7Zm9yZWFjaCgkTgphcyR6PT4kWSl7aWYoJFk9PSdOVUxMJyl7JElnWyR6XT0xO3Vuc2V0KCROWyR6XSk7fX0kSWk9YXJyYXkoJyRzZXQnPT4kTik7aWYoY291bnQoJElnKSkkSWlbJyR1bnNldCddPSRJZzskV2EtPnVwZGF0ZSgkWiwkSWksYXJyYXkoJ3Vwc2VydCc9PmZhbHNlKSk7cmV0dXJuJGctPmV4ZWN1dGVCdWxrV3JpdGUoIiRsLiRRIiwkV2EsJ2dldE1vZGlmaWVkQ291bnQnKTt9ZnVuY3Rpb24KZGVsZXRlKCRRLCR3ZywkXz0wKXtnbG9iYWwkZzskbD0kZy0+X2RiX25hbWU7JFo9c3FsX3F1ZXJ5X3doZXJlX3BhcnNlcigkd2cpOyRnYj0nTW9uZ29EQlxEcml2ZXJcQnVsa1dyaXRlJzskV2E9bmV3JGdiKGFycmF5KCkpOyRXYS0+ZGVsZXRlKCRaLGFycmF5KCdsaW1pdCc9PiRfKSk7cmV0dXJuJGctPmV4ZWN1dGVCdWxrV3JpdGUoIiRsLiRRIiwkV2EsJ2dldERlbGV0ZWRDb3VudCcpO31mdW5jdGlvbgppbnNlcnQoJFEsJE4pe2dsb2JhbCRnOyRsPSRnLT5fZGJfbmFtZTskZ2I9J01vbmdvREJcRHJpdmVyXEJ1bGtXcml0ZSc7JFdhPW5ldyRnYihhcnJheSgpKTtpZigkTlsnX2lkJ109PScnKXVuc2V0KCROWydfaWQnXSk7JFdhLT5pbnNlcnQoJE4pO3JldHVybiRnLT5leGVjdXRlQnVsa1dyaXRlKCIkbC4kUSIsJFdhLCdnZXRJbnNlcnRlZENvdW50Jyk7fX1mdW5jdGlvbgpnZXRfZGF0YWJhc2VzKCRkZCl7Z2xvYmFsJGc7JEk9YXJyYXkoKTtmb3JlYWNoKCRnLT5leGVjdXRlQ29tbWFuZCgnYWRtaW4nLGFycmF5KCdsaXN0RGF0YWJhc2VzJz0+MSkpYXMkVWIpe2ZvcmVhY2goJFViLT5kYXRhYmFzZXMKYXMkbCkkSVtdPSRsLT5uYW1lO31yZXR1cm4kSTt9ZnVuY3Rpb24KY291bnRfdGFibGVzKCRrKXskST1hcnJheSgpO3JldHVybiRJO31mdW5jdGlvbgp0YWJsZXNfbGlzdCgpe2dsb2JhbCRnOyRtYj1hcnJheSgpO2ZvcmVhY2goJGctPmV4ZWN1dGVDb21tYW5kKCRnLT5fZGJfbmFtZSxhcnJheSgnbGlzdENvbGxlY3Rpb25zJz0+MSkpYXMkSCkkbWJbJEgtPm5hbWVdPSd0YWJsZSc7cmV0dXJuJG1iO31mdW5jdGlvbgpkcm9wX2RhdGFiYXNlcygkayl7cmV0dXJuCmZhbHNlO31mdW5jdGlvbgppbmRleGVzKCRRLCRoPW51bGwpe2dsb2JhbCRnOyRJPWFycmF5KCk7Zm9yZWFjaCgkZy0+ZXhlY3V0ZUNvbW1hbmQoJGctPl9kYl9uYW1lLGFycmF5KCdsaXN0SW5kZXhlcyc9PiRRKSlhcyR3KXskY2M9YXJyYXkoKTskZj1hcnJheSgpO2ZvcmVhY2goZ2V0X29iamVjdF92YXJzKCR3LT5rZXkpYXMkZT0+JFQpeyRjY1tdPSgkVD09LTE/JzEnOm51bGwpOyRmW109JGU7fSRJWyR3LT5uYW1lXT1hcnJheSgidHlwZSI9Pigkdy0+bmFtZT09Il9pZF8iPyJQUklNQVJZIjooaXNzZXQoJHctPnVuaXF1ZSk/IlVOSVFVRSI6IklOREVYIikpLCJjb2x1bW5zIj0+JGYsImxlbmd0aHMiPT5hcnJheSgpLCJkZXNjcyI9PiRjYywpO31yZXR1cm4kSTt9ZnVuY3Rpb24KZmllbGRzKCRRKXtnbG9iYWwkbTskcD1maWVsZHNfZnJvbV9lZGl0KCk7aWYoISRwKXskSD0kbS0+c2VsZWN0KCRRLGFycmF5KCIqIiksbnVsbCxudWxsLGFycmF5KCksMTApO2lmKCRIKXt3aGlsZSgkSj0kSC0+ZmV0Y2hfYXNzb2MoKSl7Zm9yZWFjaCgkSgphcyR6PT4kWCl7JEpbJHpdPW51bGw7JHBbJHpdPWFycmF5KCJmaWVsZCI9PiR6LCJ0eXBlIj0+InN0cmluZyIsIm51bGwiPT4oJHohPSRtLT5wcmltYXJ5KSwiYXV0b19pbmNyZW1lbnQiPT4oJHo9PSRtLT5wcmltYXJ5KSwicHJpdmlsZWdlcyI9PmFycmF5KCJpbnNlcnQiPT4xLCJzZWxlY3QiPT4xLCJ1cGRhdGUiPT4xLCksKTt9fX19cmV0dXJuJHA7fWZ1bmN0aW9uCmZvdW5kX3Jvd3MoJFIsJFope2dsb2JhbCRnOyRaPXdoZXJlX3RvX3F1ZXJ5KCRaKTskbWk9JGctPmV4ZWN1dGVDb21tYW5kKCRnLT5fZGJfbmFtZSxhcnJheSgnY291bnQnPT4kUlsnTmFtZSddLCdxdWVyeSc9PiRaKSktPnRvQXJyYXkoKTtyZXR1cm4kbWlbMF0tPm47fWZ1bmN0aW9uCnNxbF9xdWVyeV93aGVyZV9wYXJzZXIoJHdnKXskd2c9cHJlZ19yZXBsYWNlKCd+XlxzV0hFUkUgXCg/XCg/KC4rPylcKT9cKT8kficsJ1wxJywkd2cpOyRpaj1leHBsb2RlKCcgQU5EICcsJHdnKTskamo9ZXhwbG9kZSgnKSBPUiAoJywkd2cpOyRaPWFycmF5KCk7Zm9yZWFjaCgkaWoKYXMkZ2opJFpbXT10cmltKCRnaik7aWYoY291bnQoJGpqKT09MSkkamo9YXJyYXkoKTtlbHNlaWYoY291bnQoJGpqKT4xKSRaPWFycmF5KCk7cmV0dXJuCndoZXJlX3RvX3F1ZXJ5KCRaLCRqaik7fWZ1bmN0aW9uCndoZXJlX3RvX3F1ZXJ5KCRlaj1hcnJheSgpLCRmaj1hcnJheSgpKXtnbG9iYWwkYjskUGI9YXJyYXkoKTtmb3JlYWNoKGFycmF5KCdhbmQnPT4kZWosJ29yJz0+JGZqKWFzJFQ9PiRaKXtpZihpc19hcnJheSgkWikpe2ZvcmVhY2goJFoKYXMkTGMpe2xpc3QoJGpiLCRzZiwkWCk9ZXhwbG9kZSgiICIsJExjLDMpO2lmKCRqYj09Il9pZCImJnByZWdfbWF0Y2goJ35eKE1vbmdvREJcXFxcQlNPTlxcXFxPYmplY3RJRClcKCIoLispIlwpJH4nLCRYLCRDKSl7bGlzdCgsJGdiLCRYKT0kQzskWD1uZXckZ2IoJFgpO31pZighaW5fYXJyYXkoJHNmLCRiLT5vcGVyYXRvcnMpKWNvbnRpbnVlO2lmKHByZWdfbWF0Y2goJ35eXChmXCkoLispficsJHNmLCRDKSl7JFg9KGZsb2F0KSRYOyRzZj0kQ1sxXTt9ZWxzZWlmKHByZWdfbWF0Y2goJ35eXChkYXRlXCkoLispficsJHNmLCRDKSl7JFJiPW5ldwpEYXRlVGltZSgkWCk7JGdiPSdNb25nb0RCXEJTT05cVVRDRGF0ZXRpbWUnOyRYPW5ldyRnYigkUmItPmdldFRpbWVzdGFtcCgpKjEwMDApOyRzZj0kQ1sxXTt9c3dpdGNoKCRzZil7Y2FzZSc9Jzokc2Y9JyRlcSc7YnJlYWs7Y2FzZSchPSc6JHNmPSckbmUnO2JyZWFrO2Nhc2UnPic6JHNmPSckZ3QnO2JyZWFrO2Nhc2UnPCc6JHNmPSckbHQnO2JyZWFrO2Nhc2UnPj0nOiRzZj0nJGd0ZSc7YnJlYWs7Y2FzZSc8PSc6JHNmPSckbHRlJzticmVhaztjYXNlJ3JlZ2V4Jzokc2Y9JyRyZWdleCc7YnJlYWs7ZGVmYXVsdDpjb250aW51ZQoyO31pZigkVD09J2FuZCcpJFBiWyckYW5kJ11bXT1hcnJheSgkamI9PmFycmF5KCRzZj0+JFgpKTtlbHNlaWYoJFQ9PSdvcicpJFBiWyckb3InXVtdPWFycmF5KCRqYj0+YXJyYXkoJHNmPT4kWCkpO319fXJldHVybiRQYjt9JHVmPWFycmF5KCI9IiwiIT0iLCI+IiwiPCIsIj49IiwiPD0iLCJyZWdleCIsIihmKT0iLCIoZikhPSIsIihmKT4iLCIoZik8IiwiKGYpPj0iLCIoZik8PSIsIihkYXRlKT0iLCIoZGF0ZSkhPSIsIihkYXRlKT4iLCIoZGF0ZSk8IiwiKGRhdGUpPj0iLCIoZGF0ZSk8PSIsKTt9ZnVuY3Rpb24KdGFibGUoJHYpe3JldHVybiR2O31mdW5jdGlvbgppZGZfZXNjYXBlKCR2KXtyZXR1cm4kdjt9ZnVuY3Rpb24KdGFibGVfc3RhdHVzKCREPSIiLCRTYz1mYWxzZSl7JEk9YXJyYXkoKTtmb3JlYWNoKHRhYmxlc19saXN0KClhcyRRPT4kVCl7JElbJFFdPWFycmF5KCJOYW1lIj0+JFEpO2lmKCREPT0kUSlyZXR1cm4kSVskUV07fXJldHVybiRJO31mdW5jdGlvbgpjcmVhdGVfZGF0YWJhc2UoJGwsJGQpe3JldHVybgp0cnVlO31mdW5jdGlvbgpsYXN0X2lkKCl7Z2xvYmFsJGc7cmV0dXJuJGctPmxhc3RfaWQ7fWZ1bmN0aW9uCmVycm9yKCl7Z2xvYmFsJGc7cmV0dXJuCmgoJGctPmVycm9yKTt9ZnVuY3Rpb24KY29sbGF0aW9ucygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpsb2dnZWRfdXNlcigpe2dsb2JhbCRiOyRLYj0kYi0+Y3JlZGVudGlhbHMoKTtyZXR1cm4kS2JbMV07fWZ1bmN0aW9uCmNvbm5lY3QoKXtnbG9iYWwkYjskZz1uZXcKTWluX0RCO2xpc3QoJE0sJFYsJEYpPSRiLT5jcmVkZW50aWFscygpOyR4Zj1hcnJheSgpO2lmKCRWLiRGIT0iIil7JHhmWyJ1c2VybmFtZSJdPSRWOyR4ZlsicGFzc3dvcmQiXT0kRjt9JGw9JGItPmRhdGFiYXNlKCk7aWYoJGwhPSIiKSR4ZlsiZGIiXT0kbDtpZigoJEphPWdldGVudigiTU9OR09fQVVUSF9TT1VSQ0UiKSkpJHhmWyJhdXRoU291cmNlIl09JEphOyRnLT5jb25uZWN0KCJtb25nb2RiOi8vJE0iLCR4Zik7aWYoJGctPmVycm9yKXJldHVybiRnLT5lcnJvcjtyZXR1cm4kZzt9ZnVuY3Rpb24KYWx0ZXJfaW5kZXhlcygkUSwkYyl7Z2xvYmFsJGc7Zm9yZWFjaCgkYwphcyRYKXtsaXN0KCRULCRELCROKT0kWDtpZigkTj09IkRST1AiKSRJPSRnLT5fZGItPmNvbW1hbmQoYXJyYXkoImRlbGV0ZUluZGV4ZXMiPT4kUSwiaW5kZXgiPT4kRCkpO2Vsc2V7JGY9YXJyYXkoKTtmb3JlYWNoKCROCmFzJGUpeyRlPXByZWdfcmVwbGFjZSgnfiBERVNDJH4nLCcnLCRlLDEsJEdiKTskZlskZV09KCRHYj8tMToxKTt9JEk9JGctPl9kYi0+c2VsZWN0Q29sbGVjdGlvbigkUSktPmVuc3VyZUluZGV4KCRmLGFycmF5KCJ1bmlxdWUiPT4oJFQ9PSJVTklRVUUiKSwibmFtZSI9PiRELCkpO31pZigkSVsnZXJybXNnJ10peyRnLT5lcnJvcj0kSVsnZXJybXNnJ107cmV0dXJuCmZhbHNlO319cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnN1cHBvcnQoJFRjKXtyZXR1cm4KcHJlZ19tYXRjaCgifmRhdGFiYXNlfGluZGV4ZXN8ZGVzY2lkeH4iLCRUYyk7fWZ1bmN0aW9uCmRiX2NvbGxhdGlvbigkbCwkbGIpe31mdW5jdGlvbgppbmZvcm1hdGlvbl9zY2hlbWEoKXt9ZnVuY3Rpb24KaXNfdmlldygkUil7fWZ1bmN0aW9uCmNvbnZlcnRfZmllbGQoJG8pe31mdW5jdGlvbgp1bmNvbnZlcnRfZmllbGQoJG8sJEkpe3JldHVybiRJO31mdW5jdGlvbgpmb3JlaWduX2tleXMoJFEpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpma19zdXBwb3J0KCRSKXt9ZnVuY3Rpb24KZW5naW5lcygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgphbHRlcl90YWJsZSgkUSwkRCwkcCwkZmQsJHJiLCR5YywkZCwkS2EsJFRmKXtnbG9iYWwkZztpZigkUT09IiIpeyRnLT5fZGItPmNyZWF0ZUNvbGxlY3Rpb24oJEQpO3JldHVybgp0cnVlO319ZnVuY3Rpb24KZHJvcF90YWJsZXMoJFMpe2dsb2JhbCRnO2ZvcmVhY2goJFMKYXMkUSl7JExnPSRnLT5fZGItPnNlbGVjdENvbGxlY3Rpb24oJFEpLT5kcm9wKCk7aWYoISRMZ1snb2snXSlyZXR1cm4KZmFsc2U7fXJldHVybgp0cnVlO31mdW5jdGlvbgp0cnVuY2F0ZV90YWJsZXMoJFMpe2dsb2JhbCRnO2ZvcmVhY2goJFMKYXMkUSl7JExnPSRnLT5fZGItPnNlbGVjdENvbGxlY3Rpb24oJFEpLT5yZW1vdmUoKTtpZighJExnWydvayddKXJldHVybgpmYWxzZTt9cmV0dXJuCnRydWU7fWZ1bmN0aW9uCmRyaXZlcl9jb25maWcoKXtnbG9iYWwkdWY7cmV0dXJuCmFycmF5KCdwb3NzaWJsZV9kcml2ZXJzJz0+YXJyYXkoIm1vbmdvIiwibW9uZ29kYiIpLCdqdXNoJz0+Im1vbmdvIiwnb3BlcmF0b3JzJz0+JHVmLCdmdW5jdGlvbnMnPT5hcnJheSgpLCdncm91cGluZyc9PmFycmF5KCksJ2VkaXRfZnVuY3Rpb25zJz0+YXJyYXkoYXJyYXkoImpzb24iKSksKTt9fSRpY1siZWxhc3RpYyJdPSJFbGFzdGljc2VhcmNoIChiZXRhKSI7aWYoaXNzZXQoJF9HRVRbImVsYXN0aWMiXSkpe2RlZmluZSgiRFJJVkVSIiwiZWxhc3RpYyIpO2lmKGZ1bmN0aW9uX2V4aXN0cygnanNvbl9kZWNvZGUnKSYmaW5pX2Jvb2woJ2FsbG93X3VybF9mb3BlbicpKXtjbGFzcwpNaW5fREJ7dmFyJGV4dGVuc2lvbj0iSlNPTiIsJHNlcnZlcl9pbmZvLCRlcnJubywkZXJyb3IsJF91cmwsJF9kYjtmdW5jdGlvbgpyb290UXVlcnkoJFhmLCRCYj1hcnJheSgpLCRQZT0nR0VUJyl7QGluaV9zZXQoJ3RyYWNrX2Vycm9ycycsMSk7JFhjPUBmaWxlX2dldF9jb250ZW50cygiJHRoaXMtPl91cmwvIi5sdHJpbSgkWGYsJy8nKSxmYWxzZSxzdHJlYW1fY29udGV4dF9jcmVhdGUoYXJyYXkoJ2h0dHAnPT5hcnJheSgnbWV0aG9kJz0+JFBlLCdjb250ZW50Jz0+JEJiPT09bnVsbD8kQmI6anNvbl9lbmNvZGUoJEJiKSwnaGVhZGVyJz0+J0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicsJ2lnbm9yZV9lcnJvcnMnPT4xLCkpKSk7aWYoISRYYyl7JHRoaXMtPmVycm9yPSRwaHBfZXJyb3Jtc2c7cmV0dXJuJFhjO31pZighcHJlZ19tYXRjaCgnfl5IVFRQL1swLTkuXSsgMn5pJywkaHR0cF9yZXNwb25zZV9oZWFkZXJbMF0pKXskdGhpcy0+ZXJyb3I9J0ludmFsaWQgY3JlZGVudGlhbHMuJy4iICRodHRwX3Jlc3BvbnNlX2hlYWRlclswXSI7cmV0dXJuCmZhbHNlO30kST1qc29uX2RlY29kZSgkWGMsdHJ1ZSk7aWYoJEk9PT1udWxsKXskdGhpcy0+ZXJybm89anNvbl9sYXN0X2Vycm9yKCk7aWYoZnVuY3Rpb25fZXhpc3RzKCdqc29uX2xhc3RfZXJyb3JfbXNnJykpJHRoaXMtPmVycm9yPWpzb25fbGFzdF9lcnJvcl9tc2coKTtlbHNleyRfYj1nZXRfZGVmaW5lZF9jb25zdGFudHModHJ1ZSk7Zm9yZWFjaCgkX2JbJ2pzb24nXWFzJEQ9PiRZKXtpZigkWT09JHRoaXMtPmVycm5vJiZwcmVnX21hdGNoKCd+XkpTT05fRVJST1JfficsJEQpKXskdGhpcy0+ZXJyb3I9JEQ7YnJlYWs7fX19fXJldHVybiRJO31mdW5jdGlvbgpxdWVyeSgkWGYsJEJiPWFycmF5KCksJFBlPSdHRVQnKXtyZXR1cm4kdGhpcy0+cm9vdFF1ZXJ5KCgkdGhpcy0+X2RiIT0iIj8iJHRoaXMtPl9kYi8iOiIvIikubHRyaW0oJFhmLCcvJyksJEJiLCRQZSk7fWZ1bmN0aW9uCmNvbm5lY3QoJE0sJFYsJEYpe3ByZWdfbWF0Y2goJ35eKGh0dHBzPzovLyk/KC4qKX4nLCRNLCRDKTskdGhpcy0+X3VybD0oJENbMV0/JENbMV06Imh0dHA6Ly8iKS4iJFY6JEZAJENbMl0iOyRJPSR0aGlzLT5xdWVyeSgnJyk7aWYoJEkpJHRoaXMtPnNlcnZlcl9pbmZvPSRJWyd2ZXJzaW9uJ11bJ251bWJlciddO3JldHVybihib29sKSRJO31mdW5jdGlvbgpzZWxlY3RfZGIoJGopeyR0aGlzLT5fZGI9JGo7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnF1b3RlKCRQKXtyZXR1cm4kUDt9fWNsYXNzCk1pbl9SZXN1bHR7dmFyJG51bV9yb3dzLCRfcm93cztmdW5jdGlvbgpfX2NvbnN0cnVjdCgkSyl7JHRoaXMtPm51bV9yb3dzPWNvdW50KCRLKTskdGhpcy0+X3Jvd3M9JEs7cmVzZXQoJHRoaXMtPl9yb3dzKTt9ZnVuY3Rpb24KZmV0Y2hfYXNzb2MoKXskST1jdXJyZW50KCR0aGlzLT5fcm93cyk7bmV4dCgkdGhpcy0+X3Jvd3MpO3JldHVybiRJO31mdW5jdGlvbgpmZXRjaF9yb3coKXtyZXR1cm4KYXJyYXlfdmFsdWVzKCR0aGlzLT5mZXRjaF9hc3NvYygpKTt9fX1jbGFzcwpNaW5fRHJpdmVyCmV4dGVuZHMKTWluX1NRTHtmdW5jdGlvbgpzZWxlY3QoJFEsJEwsJFosJHFkLCR6Zj1hcnJheSgpLCRfPTEsJEU9MCwkbWc9ZmFsc2Upe2dsb2JhbCRiOyRQYj1hcnJheSgpOyRHPSIkUS9fc2VhcmNoIjtpZigkTCE9YXJyYXkoIioiKSkkUGJbImZpZWxkcyJdPSRMO2lmKCR6Zil7JHVoPWFycmF5KCk7Zm9yZWFjaCgkemYKYXMkamIpeyRqYj1wcmVnX3JlcGxhY2UoJ34gREVTQyR+JywnJywkamIsMSwkR2IpOyR1aFtdPSgkR2I/YXJyYXkoJGpiPT4iZGVzYyIpOiRqYik7fSRQYlsic29ydCJdPSR1aDt9aWYoJF8peyRQYlsic2l6ZSJdPSskXztpZigkRSkkUGJbImZyb20iXT0oJEUqJF8pO31mb3JlYWNoKCRaCmFzJFgpe2xpc3QoJGpiLCRzZiwkWCk9ZXhwbG9kZSgiICIsJFgsMyk7aWYoJGpiPT0iX2lkIikkUGJbInF1ZXJ5Il1bImlkcyJdWyJ2YWx1ZXMiXVtdPSRYO2Vsc2VpZigkamIuJFghPSIiKXskWmg9YXJyYXkoInRlcm0iPT5hcnJheSgoJGpiIT0iIj8kamI6Il9hbGwiKT0+JFgpKTtpZigkc2Y9PSI9IikkUGJbInF1ZXJ5Il1bImZpbHRlcmVkIl1bImZpbHRlciJdWyJhbmQiXVtdPSRaaDtlbHNlJFBiWyJxdWVyeSJdWyJmaWx0ZXJlZCJdWyJxdWVyeSJdWyJib29sIl1bIm11c3QiXVtdPSRaaDt9fWlmKCRQYlsicXVlcnkiXSYmISRQYlsicXVlcnkiXVsiZmlsdGVyZWQiXVsicXVlcnkiXSYmISRQYlsicXVlcnkiXVsiaWRzIl0pJFBiWyJxdWVyeSJdWyJmaWx0ZXJlZCJdWyJxdWVyeSJdPWFycmF5KCJtYXRjaF9hbGwiPT5hcnJheSgpKTskQ2g9bWljcm90aW1lKHRydWUpOyRiaD0kdGhpcy0+X2Nvbm4tPnF1ZXJ5KCRHLCRQYik7aWYoJG1nKWVjaG8kYi0+c2VsZWN0UXVlcnkoIiRHOiAiLmpzb25fZW5jb2RlKCRQYiksJENoLCEkYmgpO2lmKCEkYmgpcmV0dXJuCmZhbHNlOyRJPWFycmF5KCk7Zm9yZWFjaCgkYmhbJ2hpdHMnXVsnaGl0cyddYXMkQ2QpeyRKPWFycmF5KCk7aWYoJEw9PWFycmF5KCIqIikpJEpbIl9pZCJdPSRDZFsiX2lkIl07JHA9JENkWydfc291cmNlJ107aWYoJEwhPWFycmF5KCIqIikpeyRwPWFycmF5KCk7Zm9yZWFjaCgkTAphcyR6KSRwWyR6XT0kQ2RbJ2ZpZWxkcyddWyR6XTt9Zm9yZWFjaCgkcAphcyR6PT4kWCl7aWYoJFBiWyJmaWVsZHMiXSkkWD0kWFswXTskSlskel09KGlzX2FycmF5KCRYKT9qc29uX2VuY29kZSgkWCk6JFgpO30kSVtdPSRKO31yZXR1cm4KbmV3Ck1pbl9SZXN1bHQoJEkpO31mdW5jdGlvbgp1cGRhdGUoJFQsJF9nLCR3ZywkXz0wLCRoaD0iXG4iKXskVmY9cHJlZ19zcGxpdCgnfiAqPSAqficsJHdnKTtpZihjb3VudCgkVmYpPT0yKXskdT10cmltKCRWZlsxXSk7JEc9IiRULyR1IjtyZXR1cm4kdGhpcy0+X2Nvbm4tPnF1ZXJ5KCRHLCRfZywnUE9TVCcpO31yZXR1cm4KZmFsc2U7fWZ1bmN0aW9uCmluc2VydCgkVCwkX2cpeyR1PSIiOyRHPSIkVC8kdSI7JExnPSR0aGlzLT5fY29ubi0+cXVlcnkoJEcsJF9nLCdQT1NUJyk7JHRoaXMtPl9jb25uLT5sYXN0X2lkPSRMZ1snX2lkJ107cmV0dXJuJExnWydjcmVhdGVkJ107fWZ1bmN0aW9uCmRlbGV0ZSgkVCwkd2csJF89MCl7JEdkPWFycmF5KCk7aWYoaXNfYXJyYXkoJF9HRVRbIndoZXJlIl0pJiYkX0dFVFsid2hlcmUiXVsiX2lkIl0pJEdkW109JF9HRVRbIndoZXJlIl1bIl9pZCJdO2lmKGlzX2FycmF5KCRfUE9TVFsnY2hlY2snXSkpe2ZvcmVhY2goJF9QT1NUWydjaGVjayddYXMkYWIpeyRWZj1wcmVnX3NwbGl0KCd+ICo9ICp+JywkYWIpO2lmKGNvdW50KCRWZik9PTIpJEdkW109dHJpbSgkVmZbMV0pO319JHRoaXMtPl9jb25uLT5hZmZlY3RlZF9yb3dzPTA7Zm9yZWFjaCgkR2QKYXMkdSl7JEc9InskVH0veyR1fSI7JExnPSR0aGlzLT5fY29ubi0+cXVlcnkoJEcsJ3t9JywnREVMRVRFJyk7aWYoaXNfYXJyYXkoJExnKSYmJExnWydmb3VuZCddPT10cnVlKSR0aGlzLT5fY29ubi0+YWZmZWN0ZWRfcm93cysrO31yZXR1cm4kdGhpcy0+X2Nvbm4tPmFmZmVjdGVkX3Jvd3M7fX1mdW5jdGlvbgpjb25uZWN0KCl7Z2xvYmFsJGI7JGc9bmV3Ck1pbl9EQjtsaXN0KCRNLCRWLCRGKT0kYi0+Y3JlZGVudGlhbHMoKTtpZigkRiE9IiImJiRnLT5jb25uZWN0KCRNLCRWLCIiKSlyZXR1cm4nRGF0YWJhc2UgZG9lcyBub3Qgc3VwcG9ydCBwYXNzd29yZC4nO2lmKCRnLT5jb25uZWN0KCRNLCRWLCRGKSlyZXR1cm4kZztyZXR1cm4kZy0+ZXJyb3I7fWZ1bmN0aW9uCnN1cHBvcnQoJFRjKXtyZXR1cm4KcHJlZ19tYXRjaCgifmRhdGFiYXNlfHRhYmxlfGNvbHVtbnN+IiwkVGMpO31mdW5jdGlvbgpsb2dnZWRfdXNlcigpe2dsb2JhbCRiOyRLYj0kYi0+Y3JlZGVudGlhbHMoKTtyZXR1cm4kS2JbMV07fWZ1bmN0aW9uCmdldF9kYXRhYmFzZXMoKXtnbG9iYWwkZzskST0kZy0+cm9vdFF1ZXJ5KCdfYWxpYXNlcycpO2lmKCRJKXskST1hcnJheV9rZXlzKCRJKTtzb3J0KCRJLFNPUlRfU1RSSU5HKTt9cmV0dXJuJEk7fWZ1bmN0aW9uCmNvbGxhdGlvbnMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24KZGJfY29sbGF0aW9uKCRsLCRsYil7fWZ1bmN0aW9uCmVuZ2luZXMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24KY291bnRfdGFibGVzKCRrKXtnbG9iYWwkZzskST1hcnJheSgpOyRIPSRnLT5xdWVyeSgnX3N0YXRzJyk7aWYoJEgmJiRIWydpbmRpY2VzJ10peyRPZD0kSFsnaW5kaWNlcyddO2ZvcmVhY2goJE9kCmFzJE5kPT4kRGgpeyRNZD0kRGhbJ3RvdGFsJ11bJ2luZGV4aW5nJ107JElbJE5kXT0kTWRbJ2luZGV4X3RvdGFsJ107fX1yZXR1cm4kSTt9ZnVuY3Rpb24KdGFibGVzX2xpc3QoKXtnbG9iYWwkZztpZihtaW5fdmVyc2lvbig2KSlyZXR1cm4KYXJyYXkoJ19kb2MnPT4ndGFibGUnKTskST0kZy0+cXVlcnkoJ19tYXBwaW5nJyk7aWYoJEkpJEk9YXJyYXlfZmlsbF9rZXlzKGFycmF5X2tleXMoJElbJGctPl9kYl1bIm1hcHBpbmdzIl0pLCd0YWJsZScpO3JldHVybiRJO31mdW5jdGlvbgp0YWJsZV9zdGF0dXMoJEQ9IiIsJFNjPWZhbHNlKXtnbG9iYWwkZzskYmg9JGctPnF1ZXJ5KCJfc2VhcmNoIixhcnJheSgic2l6ZSI9PjAsImFnZ3JlZ2F0aW9ucyI9PmFycmF5KCJjb3VudF9ieV90eXBlIj0+YXJyYXkoInRlcm1zIj0+YXJyYXkoImZpZWxkIj0+Il90eXBlIikpKSksIlBPU1QiKTskST1hcnJheSgpO2lmKCRiaCl7JFM9JGJoWyJhZ2dyZWdhdGlvbnMiXVsiY291bnRfYnlfdHlwZSJdWyJidWNrZXRzIl07Zm9yZWFjaCgkUwphcyRRKXskSVskUVsia2V5Il1dPWFycmF5KCJOYW1lIj0+JFFbImtleSJdLCJFbmdpbmUiPT4idGFibGUiLCJSb3dzIj0+JFFbImRvY19jb3VudCJdLCk7aWYoJEQhPSIiJiYkRD09JFFbImtleSJdKXJldHVybiRJWyREXTt9fXJldHVybiRJO31mdW5jdGlvbgplcnJvcigpe2dsb2JhbCRnO3JldHVybgpoKCRnLT5lcnJvcik7fWZ1bmN0aW9uCmluZm9ybWF0aW9uX3NjaGVtYSgpe31mdW5jdGlvbgppc192aWV3KCRSKXt9ZnVuY3Rpb24KaW5kZXhlcygkUSwkaD1udWxsKXtyZXR1cm4KYXJyYXkoYXJyYXkoInR5cGUiPT4iUFJJTUFSWSIsImNvbHVtbnMiPT5hcnJheSgiX2lkIikpLCk7fWZ1bmN0aW9uCmZpZWxkcygkUSl7Z2xvYmFsJGc7JHplPWFycmF5KCk7aWYobWluX3ZlcnNpb24oNikpeyRIPSRnLT5xdWVyeSgiX21hcHBpbmciKTtpZigkSCkkemU9JEhbJGctPl9kYl1bJ21hcHBpbmdzJ11bJ3Byb3BlcnRpZXMnXTt9ZWxzZXskSD0kZy0+cXVlcnkoIiRRL19tYXBwaW5nIik7aWYoJEgpeyR6ZT0kSFskUV1bJ3Byb3BlcnRpZXMnXTtpZighJHplKSR6ZT0kSFskZy0+X2RiXVsnbWFwcGluZ3MnXVskUV1bJ3Byb3BlcnRpZXMnXTt9fSRJPWFycmF5KCk7aWYoJHplKXtmb3JlYWNoKCR6ZQphcyREPT4kbyl7JElbJERdPWFycmF5KCJmaWVsZCI9PiRELCJmdWxsX3R5cGUiPT4kb1sidHlwZSJdLCJ0eXBlIj0+JG9bInR5cGUiXSwicHJpdmlsZWdlcyI9PmFycmF5KCJpbnNlcnQiPT4xLCJzZWxlY3QiPT4xLCJ1cGRhdGUiPT4xKSwpO2lmKCRvWyJwcm9wZXJ0aWVzIl0pe3Vuc2V0KCRJWyREXVsicHJpdmlsZWdlcyJdWyJpbnNlcnQiXSk7dW5zZXQoJElbJERdWyJwcml2aWxlZ2VzIl1bInVwZGF0ZSJdKTt9fX1yZXR1cm4kSTt9ZnVuY3Rpb24KZm9yZWlnbl9rZXlzKCRRKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24KdGFibGUoJHYpe3JldHVybiR2O31mdW5jdGlvbgppZGZfZXNjYXBlKCR2KXtyZXR1cm4kdjt9ZnVuY3Rpb24KY29udmVydF9maWVsZCgkbyl7fWZ1bmN0aW9uCnVuY29udmVydF9maWVsZCgkbywkSSl7cmV0dXJuJEk7fWZ1bmN0aW9uCmZrX3N1cHBvcnQoJFIpe31mdW5jdGlvbgpmb3VuZF9yb3dzKCRSLCRaKXtyZXR1cm4KbnVsbDt9ZnVuY3Rpb24KY3JlYXRlX2RhdGFiYXNlKCRsKXtnbG9iYWwkZztyZXR1cm4kZy0+cm9vdFF1ZXJ5KHVybGVuY29kZSgkbCksbnVsbCwnUFVUJyk7fWZ1bmN0aW9uCmRyb3BfZGF0YWJhc2VzKCRrKXtnbG9iYWwkZztyZXR1cm4kZy0+cm9vdFF1ZXJ5KHVybGVuY29kZShpbXBsb2RlKCcsJywkaykpLGFycmF5KCksJ0RFTEVURScpO31mdW5jdGlvbgphbHRlcl90YWJsZSgkUSwkRCwkcCwkZmQsJHJiLCR5YywkZCwkS2EsJFRmKXtnbG9iYWwkZzskc2c9YXJyYXkoKTtmb3JlYWNoKCRwCmFzJFFjKXskVmM9dHJpbSgkUWNbMV1bMF0pOyRXYz10cmltKCRRY1sxXVsxXT8kUWNbMV1bMV06InRleHQiKTskc2dbJFZjXT1hcnJheSgndHlwZSc9PiRXYyk7fWlmKCFlbXB0eSgkc2cpKSRzZz1hcnJheSgncHJvcGVydGllcyc9PiRzZyk7cmV0dXJuJGctPnF1ZXJ5KCJfbWFwcGluZy97JER9Iiwkc2csJ1BVVCcpO31mdW5jdGlvbgpkcm9wX3RhYmxlcygkUyl7Z2xvYmFsJGc7JEk9dHJ1ZTtmb3JlYWNoKCRTCmFzJFEpJEk9JEkmJiRnLT5xdWVyeSh1cmxlbmNvZGUoJFEpLGFycmF5KCksJ0RFTEVURScpO3JldHVybiRJO31mdW5jdGlvbgpsYXN0X2lkKCl7Z2xvYmFsJGc7cmV0dXJuJGctPmxhc3RfaWQ7fWZ1bmN0aW9uCmRyaXZlcl9jb25maWcoKXskVT1hcnJheSgpOyRHaD1hcnJheSgpO2ZvcmVhY2goYXJyYXkoJ051bWJlcnMnPT5hcnJheSgibG9uZyI9PjMsImludGVnZXIiPT41LCJzaG9ydCI9PjgsImJ5dGUiPT4xMCwiZG91YmxlIj0+MjAsImZsb2F0Ij0+NjYsImhhbGZfZmxvYXQiPT4xMiwic2NhbGVkX2Zsb2F0Ij0+MjEpLCdEYXRlIGFuZCB0aW1lJz0+YXJyYXkoImRhdGUiPT4xMCksJ1N0cmluZ3MnPT5hcnJheSgic3RyaW5nIj0+NjU1MzUsInRleHQiPT42NTUzNSksJ0JpbmFyeSc9PmFycmF5KCJiaW5hcnkiPT4yNTUpLClhcyR6PT4kWCl7JFUrPSRYOyRHaFskel09YXJyYXlfa2V5cygkWCk7fXJldHVybgphcnJheSgncG9zc2libGVfZHJpdmVycyc9PmFycmF5KCJqc29uICsgYWxsb3dfdXJsX2ZvcGVuIiksJ2p1c2gnPT4iZWxhc3RpYyIsJ29wZXJhdG9ycyc9PmFycmF5KCI9IiwicXVlcnkiKSwnZnVuY3Rpb25zJz0+YXJyYXkoKSwnZ3JvdXBpbmcnPT5hcnJheSgpLCdlZGl0X2Z1bmN0aW9ucyc9PmFycmF5KGFycmF5KCJqc29uIikpLCd0eXBlcyc9PiRVLCdzdHJ1Y3R1cmVkX3R5cGVzJz0+JEdoLCk7fX1jbGFzcwpBZG1pbmVye3ZhciRvcGVyYXRvcnM7ZnVuY3Rpb24KbmFtZSgpe3JldHVybiI8YSBocmVmPSdodHRwczovL3d3dy5hZG1pbmVyLm9yZy8nIi50YXJnZXRfYmxhbmsoKS4iIGlkPSdoMSc+QWRtaW5lcjwvYT4iO31mdW5jdGlvbgpjcmVkZW50aWFscygpe3JldHVybgphcnJheShTRVJWRVIsJF9HRVRbInVzZXJuYW1lIl0sZ2V0X3Bhc3N3b3JkKCkpO31mdW5jdGlvbgpjb25uZWN0U3NsKCl7fWZ1bmN0aW9uCnBlcm1hbmVudExvZ2luKCRpPWZhbHNlKXtyZXR1cm4KcGFzc3dvcmRfZmlsZSgkaSk7fWZ1bmN0aW9uCmJydXRlRm9yY2VLZXkoKXtyZXR1cm4kX1NFUlZFUlsiUkVNT1RFX0FERFIiXTt9ZnVuY3Rpb24Kc2VydmVyTmFtZSgkTSl7cmV0dXJuCmgoJE0pO31mdW5jdGlvbgpkYXRhYmFzZSgpe3JldHVybgpEQjt9ZnVuY3Rpb24KZGF0YWJhc2VzKCRkZD10cnVlKXtyZXR1cm4KZ2V0X2RhdGFiYXNlcygkZGQpO31mdW5jdGlvbgpzY2hlbWFzKCl7cmV0dXJuCnNjaGVtYXMoKTt9ZnVuY3Rpb24KcXVlcnlUaW1lb3V0KCl7cmV0dXJuCjI7fWZ1bmN0aW9uCmhlYWRlcnMoKXt9ZnVuY3Rpb24KY3NwKCl7cmV0dXJuCmNzcCgpO31mdW5jdGlvbgpoZWFkKCl7cmV0dXJuCnRydWU7fWZ1bmN0aW9uCmNzcygpeyRJPWFycmF5KCk7JHE9ImFkbWluZXIuY3NzIjtpZihmaWxlX2V4aXN0cygkcSkpJElbXT0iJHE/dj0iLmNyYzMyKGZpbGVfZ2V0X2NvbnRlbnRzKCRxKSk7cmV0dXJuJEk7fWZ1bmN0aW9uCmxvZ2luRm9ybSgpe2dsb2JhbCRpYztlY2hvIjx0YWJsZSBjZWxsc3BhY2luZz0nMCcgY2xhc3M9J2xheW91dCc+XG4iLCR0aGlzLT5sb2dpbkZvcm1GaWVsZCgnZHJpdmVyJywnPHRyPjx0aD4nLidTeXN0ZW0nLic8dGQ+JyxodG1sX3NlbGVjdCgiYXV0aFtkcml2ZXJdIiwkaWMsRFJJVkVSLCJsb2dpbkRyaXZlcih0aGlzKTsiKS4iXG4iKSwkdGhpcy0+bG9naW5Gb3JtRmllbGQoJ3NlcnZlcicsJzx0cj48dGg+Jy4nU2VydmVyJy4nPHRkPicsJzxpbnB1dCBuYW1lPSJhdXRoW3NlcnZlcl0iIHZhbHVlPSInLmgoU0VSVkVSKS4nIiB0aXRsZT0iaG9zdG5hbWVbOnBvcnRdIiBwbGFjZWhvbGRlcj0ibG9jYWxob3N0IiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIj4nLiJcbiIpLCR0aGlzLT5sb2dpbkZvcm1GaWVsZCgndXNlcm5hbWUnLCc8dHI+PHRoPicuJ1VzZXJuYW1lJy4nPHRkPicsJzxpbnB1dCBuYW1lPSJhdXRoW3VzZXJuYW1lXSIgaWQ9InVzZXJuYW1lIiB2YWx1ZT0iJy5oKCRfR0VUWyJ1c2VybmFtZSJdKS4nIiBhdXRvY29tcGxldGU9InVzZXJuYW1lIiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIj4nLnNjcmlwdCgiZm9jdXMocXMoJyN1c2VybmFtZScpKTsgcXMoJyN1c2VybmFtZScpLmZvcm1bJ2F1dGhbZHJpdmVyXSddLm9uY2hhbmdlKCk7IikpLCR0aGlzLT5sb2dpbkZvcm1GaWVsZCgncGFzc3dvcmQnLCc8dHI+PHRoPicuJ1Bhc3N3b3JkJy4nPHRkPicsJzxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0iYXV0aFtwYXNzd29yZF0iIGF1dG9jb21wbGV0ZT0iY3VycmVudC1wYXNzd29yZCI+Jy4iXG4iKSwkdGhpcy0+bG9naW5Gb3JtRmllbGQoJ2RiJywnPHRyPjx0aD4nLidEYXRhYmFzZScuJzx0ZD4nLCc8aW5wdXQgbmFtZT0iYXV0aFtkYl0iIHZhbHVlPSInLmgoJF9HRVRbImRiIl0pLiciIGF1dG9jYXBpdGFsaXplPSJvZmYiPicuIlxuIiksIjwvdGFibGU+XG4iLCI8cD48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIi4nTG9naW4nLiInPlxuIixjaGVja2JveCgiYXV0aFtwZXJtYW5lbnRdIiwxLCRfQ09PS0lFWyJhZG1pbmVyX3Blcm1hbmVudCJdLCdQZXJtYW5lbnQgbG9naW4nKS4iXG4iO31mdW5jdGlvbgpsb2dpbkZvcm1GaWVsZCgkRCwkX2QsJFkpe3JldHVybiRfZC4kWTt9ZnVuY3Rpb24KbG9naW4oJHhlLCRGKXtpZigkRj09IiIpcmV0dXJuCnNwcmludGYoJ0FkbWluZXIgZG9lcyBub3Qgc3VwcG9ydCBhY2Nlc3NpbmcgYSBkYXRhYmFzZSB3aXRob3V0IGEgcGFzc3dvcmQsIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFkbWluZXIub3JnL2VuL3Bhc3N3b3JkLyIlcz5tb3JlIGluZm9ybWF0aW9uPC9hPi4nLHRhcmdldF9ibGFuaygpKTtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KdGFibGVOYW1lKCROaCl7cmV0dXJuCmgoJE5oWyJOYW1lIl0pO31mdW5jdGlvbgpmaWVsZE5hbWUoJG8sJHpmPTApe3JldHVybic8c3BhbiB0aXRsZT0iJy5oKCRvWyJmdWxsX3R5cGUiXSkuJyI+Jy5oKCRvWyJmaWVsZCJdKS4nPC9zcGFuPic7fWZ1bmN0aW9uCnNlbGVjdExpbmtzKCROaCwkTj0iIil7Z2xvYmFsJHksJG07ZWNobyc8cCBjbGFzcz0ibGlua3MiPic7JHdlPWFycmF5KCJzZWxlY3QiPT4nU2VsZWN0IGRhdGEnKTtpZihzdXBwb3J0KCJ0YWJsZSIpfHxzdXBwb3J0KCJpbmRleGVzIikpJHdlWyJ0YWJsZSJdPSdTaG93IHN0cnVjdHVyZSc7aWYoc3VwcG9ydCgidGFibGUiKSl7aWYoaXNfdmlldygkTmgpKSR3ZVsidmlldyJdPSdBbHRlciB2aWV3JztlbHNlJHdlWyJjcmVhdGUiXT0nQWx0ZXIgdGFibGUnO31pZigkTiE9PW51bGwpJHdlWyJlZGl0Il09J05ldyBpdGVtJzskRD0kTmhbIk5hbWUiXTtmb3JlYWNoKCR3ZQphcyR6PT4kWCllY2hvIiA8YSBocmVmPSciLmgoTUUpLiIkej0iLnVybGVuY29kZSgkRCkuKCR6PT0iZWRpdCI/JE46IiIpLiInIi5ib2xkKGlzc2V0KCRfR0VUWyR6XSkpLiI+JFg8L2E+IjtlY2hvCmRvY19saW5rKGFycmF5KCR5PT4kbS0+dGFibGVIZWxwKCREKSksIj8iKSwiXG4iO31mdW5jdGlvbgpmb3JlaWduS2V5cygkUSl7cmV0dXJuCmZvcmVpZ25fa2V5cygkUSk7fWZ1bmN0aW9uCmJhY2t3YXJkS2V5cygkUSwkTWgpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpiYWNrd2FyZEtleXNQcmludCgkTmEsJEope31mdW5jdGlvbgpzZWxlY3RRdWVyeSgkRywkQ2gsJFJjPWZhbHNlKXtnbG9iYWwkeSwkbTskST0iPC9wPlxuIjtpZighJFJjJiYoJGJqPSRtLT53YXJuaW5ncygpKSl7JHU9Indhcm5pbmdzIjskST0iLCA8YSBocmVmPScjJHUnPiIuJ1dhcm5pbmdzJy4iPC9hPiIuc2NyaXB0KCJxc2woJ2EnKS5vbmNsaWNrID0gcGFydGlhbCh0b2dnbGUsICckdScpOyIsIiIpLiIkSTxkaXYgaWQ9JyR1JyBjbGFzcz0naGlkZGVuJz5cbiRiajwvZGl2PlxuIjt9cmV0dXJuIjxwPjxjb2RlIGNsYXNzPSdqdXNoLSR5Jz4iLmgoc3RyX3JlcGxhY2UoIlxuIiwiICIsJEcpKS4iPC9jb2RlPiA8c3BhbiBjbGFzcz0ndGltZSc+KCIuZm9ybWF0X3RpbWUoJENoKS4iKTwvc3Bhbj4iLihzdXBwb3J0KCJzcWwiKT8iIDxhIGhyZWY9JyIuaChNRSkuInNxbD0iLnVybGVuY29kZSgkRykuIic+Ii4nRWRpdCcuIjwvYT4iOiIiKS4kSTt9ZnVuY3Rpb24Kc3FsQ29tbWFuZFF1ZXJ5KCRHKXtyZXR1cm4Kc2hvcnRlbl91dGY4KHRyaW0oJEcpLDEwMDApO31mdW5jdGlvbgpyb3dEZXNjcmlwdGlvbigkUSl7cmV0dXJuIiI7fWZ1bmN0aW9uCnJvd0Rlc2NyaXB0aW9ucygkSywkZ2Qpe3JldHVybiRLO31mdW5jdGlvbgpzZWxlY3RMaW5rKCRYLCRvKXt9ZnVuY3Rpb24Kc2VsZWN0VmFsKCRYLCRBLCRvLCRHZil7JEk9KCRYPT09bnVsbD8iPGk+TlVMTDwvaT4iOihwcmVnX21hdGNoKCJ+Y2hhcnxiaW5hcnl8Ym9vbGVhbn4iLCRvWyJ0eXBlIl0pJiYhcHJlZ19tYXRjaCgifnZhcn4iLCRvWyJ0eXBlIl0pPyI8Y29kZT4kWDwvY29kZT4iOiRYKSk7aWYocHJlZ19tYXRjaCgnfmJsb2J8Ynl0ZWF8cmF3fGZpbGV+Jywkb1sidHlwZSJdKSYmIWlzX3V0ZjgoJFgpKSRJPSI8aT4iLmxhbmcoYXJyYXkoJyVkIGJ5dGUnLCclZCBieXRlcycpLHN0cmxlbigkR2YpKS4iPC9pPiI7aWYocHJlZ19tYXRjaCgnfmpzb25+Jywkb1sidHlwZSJdKSkkST0iPGNvZGUgY2xhc3M9J2p1c2gtanMnPiRJPC9jb2RlPiI7cmV0dXJuKCRBPyI8YSBocmVmPSciLmgoJEEpLiInIi4oaXNfdXJsKCRBKT90YXJnZXRfYmxhbmsoKToiIikuIj4kSTwvYT4iOiRJKTt9ZnVuY3Rpb24KZWRpdFZhbCgkWCwkbyl7cmV0dXJuJFg7fWZ1bmN0aW9uCnRhYmxlU3RydWN0dXJlUHJpbnQoJHApe2VjaG8iPGRpdiBjbGFzcz0nc2Nyb2xsYWJsZSc+XG4iLCI8dGFibGUgY2VsbHNwYWNpbmc9JzAnIGNsYXNzPSdub3dyYXAnPlxuIiwiPHRoZWFkPjx0cj48dGg+Ii4nQ29sdW1uJy4iPHRkPiIuJ1R5cGUnLihzdXBwb3J0KCJjb21tZW50Iik/Ijx0ZD4iLidDb21tZW50JzoiIikuIjwvdGhlYWQ+XG4iO2ZvcmVhY2goJHAKYXMkbyl7ZWNobyI8dHIiLm9kZCgpLiI+PHRoPiIuaCgkb1siZmllbGQiXSksIjx0ZD48c3BhbiB0aXRsZT0nIi5oKCRvWyJjb2xsYXRpb24iXSkuIic+Ii5oKCRvWyJmdWxsX3R5cGUiXSkuIjwvc3Bhbj4iLCgkb1sibnVsbCJdPyIgPGk+TlVMTDwvaT4iOiIiKSwoJG9bImF1dG9faW5jcmVtZW50Il0/IiA8aT4iLidBdXRvIEluY3JlbWVudCcuIjwvaT4iOiIiKSwoaXNzZXQoJG9bImRlZmF1bHQiXSk/IiA8c3BhbiB0aXRsZT0nIi4nRGVmYXVsdCB2YWx1ZScuIic+WzxiPiIuaCgkb1siZGVmYXVsdCJdKS4iPC9iPl08L3NwYW4+IjoiIiksKHN1cHBvcnQoImNvbW1lbnQiKT8iPHRkPiIuaCgkb1siY29tbWVudCJdKToiIiksIlxuIjt9ZWNobyI8L3RhYmxlPlxuIiwiPC9kaXY+XG4iO31mdW5jdGlvbgp0YWJsZUluZGV4ZXNQcmludCgkeCl7ZWNobyI8dGFibGUgY2VsbHNwYWNpbmc9JzAnPlxuIjtmb3JlYWNoKCR4CmFzJEQ9PiR3KXtrc29ydCgkd1siY29sdW1ucyJdKTskbWc9YXJyYXkoKTtmb3JlYWNoKCR3WyJjb2x1bW5zIl1hcyR6PT4kWCkkbWdbXT0iPGk+Ii5oKCRYKS4iPC9pPiIuKCR3WyJsZW5ndGhzIl1bJHpdPyIoIi4kd1sibGVuZ3RocyJdWyR6XS4iKSI6IiIpLigkd1siZGVzY3MiXVskel0/IiBERVNDIjoiIik7ZWNobyI8dHIgdGl0bGU9JyIuaCgkRCkuIic+PHRoPiR3W3R5cGVdPHRkPiIuaW1wbG9kZSgiLCAiLCRtZykuIlxuIjt9ZWNobyI8L3RhYmxlPlxuIjt9ZnVuY3Rpb24Kc2VsZWN0Q29sdW1uc1ByaW50KCRMLCRmKXtnbG9iYWwkbmQsJHRkO3ByaW50X2ZpZWxkc2V0KCJzZWxlY3QiLCdTZWxlY3QnLCRMKTskdD0wOyRMWyIiXT1hcnJheSgpO2ZvcmVhY2goJEwKYXMkej0+JFgpeyRYPSRfR0VUWyJjb2x1bW5zIl1bJHpdOyRlPXNlbGVjdF9pbnB1dCgiIG5hbWU9J2NvbHVtbnNbJHRdW2NvbF0nIiwkZiwkWFsiY29sIl0sKCR6IT09IiI/InNlbGVjdEZpZWxkQ2hhbmdlIjoic2VsZWN0QWRkUm93IikpO2VjaG8iPGRpdj4iLigkbmR8fCR0ZD8iPHNlbGVjdCBuYW1lPSdjb2x1bW5zWyR0XVtmdW5dJz4iLm9wdGlvbmxpc3QoYXJyYXkoLTE9PiIiKSthcnJheV9maWx0ZXIoYXJyYXkoJ0Z1bmN0aW9ucyc9PiRuZCwnQWdncmVnYXRpb24nPT4kdGQpKSwkWFsiZnVuIl0pLiI8L3NlbGVjdD4iLm9uX2hlbHAoImdldFRhcmdldChldmVudCkudmFsdWUgJiYgZ2V0VGFyZ2V0KGV2ZW50KS52YWx1ZS5yZXBsYWNlKC8gfFwkLywgJygnKSArICcpJyIsMSkuc2NyaXB0KCJxc2woJ3NlbGVjdCcpLm9uY2hhbmdlID0gZnVuY3Rpb24gKCkgeyBoZWxwQ2xvc2UoKTsiLigkeiE9PSIiPyIiOiIgcXNsKCdzZWxlY3QsIGlucHV0JywgdGhpcy5wYXJlbnROb2RlKS5vbmNoYW5nZSgpOyIpLiIgfTsiLCIiKS4iKCRlKSI6JGUpLiI8L2Rpdj5cbiI7JHQrKzt9ZWNobyI8L2Rpdj48L2ZpZWxkc2V0PlxuIjt9ZnVuY3Rpb24Kc2VsZWN0U2VhcmNoUHJpbnQoJFosJGYsJHgpe3ByaW50X2ZpZWxkc2V0KCJzZWFyY2giLCdTZWFyY2gnLCRaKTtmb3JlYWNoKCR4CmFzJHQ9PiR3KXtpZigkd1sidHlwZSJdPT0iRlVMTFRFWFQiKXtlY2hvIjxkaXY+KDxpPiIuaW1wbG9kZSgiPC9pPiwgPGk+IixhcnJheV9tYXAoJ2gnLCR3WyJjb2x1bW5zIl0pKS4iPC9pPikgQUdBSU5TVCIsIiA8aW5wdXQgdHlwZT0nc2VhcmNoJyBuYW1lPSdmdWxsdGV4dFskdF0nIHZhbHVlPSciLmgoJF9HRVRbImZ1bGx0ZXh0Il1bJHRdKS4iJz4iLHNjcmlwdCgicXNsKCdpbnB1dCcpLm9uaW5wdXQgPSBzZWxlY3RGaWVsZENoYW5nZTsiLCIiKSxjaGVja2JveCgiYm9vbGVhblskdF0iLDEsaXNzZXQoJF9HRVRbImJvb2xlYW4iXVskdF0pLCJCT09MIiksIjwvZGl2PlxuIjt9fSRZYT0idGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQub25jaGFuZ2UoKTsiO2ZvcmVhY2goYXJyYXlfbWVyZ2UoKGFycmF5KSRfR0VUWyJ3aGVyZSJdLGFycmF5KGFycmF5KCkpKWFzJHQ9PiRYKXtpZighJFh8fCgiJFhbY29sXSRYW3ZhbF0iIT0iIiYmaW5fYXJyYXkoJFhbIm9wIl0sJHRoaXMtPm9wZXJhdG9ycykpKXtlY2hvIjxkaXY+Ii5zZWxlY3RfaW5wdXQoIiBuYW1lPSd3aGVyZVskdF1bY29sXSciLCRmLCRYWyJjb2wiXSwoJFg/InNlbGVjdEZpZWxkQ2hhbmdlIjoic2VsZWN0QWRkUm93IiksIigiLidhbnl3aGVyZScuIikiKSxodG1sX3NlbGVjdCgid2hlcmVbJHRdW29wXSIsJHRoaXMtPm9wZXJhdG9ycywkWFsib3AiXSwkWWEpLCI8aW5wdXQgdHlwZT0nc2VhcmNoJyBuYW1lPSd3aGVyZVskdF1bdmFsXScgdmFsdWU9JyIuaCgkWFsidmFsIl0pLiInPiIsc2NyaXB0KCJtaXhpbihxc2woJ2lucHV0JyksIHtvbmlucHV0OiBmdW5jdGlvbiAoKSB7ICRZYSB9LCBvbmtleWRvd246IHNlbGVjdFNlYXJjaEtleWRvd24sIG9uc2VhcmNoOiBzZWxlY3RTZWFyY2hTZWFyY2h9KTsiLCIiKSwiPC9kaXY+XG4iO319ZWNobyI8L2Rpdj48L2ZpZWxkc2V0PlxuIjt9ZnVuY3Rpb24Kc2VsZWN0T3JkZXJQcmludCgkemYsJGYsJHgpe3ByaW50X2ZpZWxkc2V0KCJzb3J0IiwnU29ydCcsJHpmKTskdD0wO2ZvcmVhY2goKGFycmF5KSRfR0VUWyJvcmRlciJdYXMkej0+JFgpe2lmKCRYIT0iIil7ZWNobyI8ZGl2PiIuc2VsZWN0X2lucHV0KCIgbmFtZT0nb3JkZXJbJHRdJyIsJGYsJFgsInNlbGVjdEZpZWxkQ2hhbmdlIiksY2hlY2tib3goImRlc2NbJHRdIiwxLGlzc2V0KCRfR0VUWyJkZXNjIl1bJHpdKSwnZGVzY2VuZGluZycpLiI8L2Rpdj5cbiI7JHQrKzt9fWVjaG8iPGRpdj4iLnNlbGVjdF9pbnB1dCgiIG5hbWU9J29yZGVyWyR0XSciLCRmLCIiLCJzZWxlY3RBZGRSb3ciKSxjaGVja2JveCgiZGVzY1skdF0iLDEsZmFsc2UsJ2Rlc2NlbmRpbmcnKS4iPC9kaXY+XG4iLCI8L2Rpdj48L2ZpZWxkc2V0PlxuIjt9ZnVuY3Rpb24Kc2VsZWN0TGltaXRQcmludCgkXyl7ZWNobyI8ZmllbGRzZXQ+PGxlZ2VuZD4iLidMaW1pdCcuIjwvbGVnZW5kPjxkaXY+IjtlY2hvIjxpbnB1dCB0eXBlPSdudW1iZXInIG5hbWU9J2xpbWl0JyBjbGFzcz0nc2l6ZScgdmFsdWU9JyIuaCgkXykuIic+IixzY3JpcHQoInFzbCgnaW5wdXQnKS5vbmlucHV0ID0gc2VsZWN0RmllbGRDaGFuZ2U7IiwiIiksIjwvZGl2PjwvZmllbGRzZXQ+XG4iO31mdW5jdGlvbgpzZWxlY3RMZW5ndGhQcmludCgkY2kpe2lmKCRjaSE9PW51bGwpe2VjaG8iPGZpZWxkc2V0PjxsZWdlbmQ+Ii4nVGV4dCBsZW5ndGgnLiI8L2xlZ2VuZD48ZGl2PiIsIjxpbnB1dCB0eXBlPSdudW1iZXInIG5hbWU9J3RleHRfbGVuZ3RoJyBjbGFzcz0nc2l6ZScgdmFsdWU9JyIuaCgkY2kpLiInPiIsIjwvZGl2PjwvZmllbGRzZXQ+XG4iO319ZnVuY3Rpb24Kc2VsZWN0QWN0aW9uUHJpbnQoJHgpe2VjaG8iPGZpZWxkc2V0PjxsZWdlbmQ+Ii4nQWN0aW9uJy4iPC9sZWdlbmQ+PGRpdj4iLCI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIi4nU2VsZWN0Jy4iJz4iLCIgPHNwYW4gaWQ9J25vaW5kZXgnIHRpdGxlPSciLidGdWxsIHRhYmxlIHNjYW4nLiInPjwvc3Bhbj4iLCI8c2NyaXB0Ii5ub25jZSgpLiI+XG4iLCJ2YXIgaW5kZXhDb2x1bW5zID0gIjskZj1hcnJheSgpO2ZvcmVhY2goJHgKYXMkdyl7JE9iPXJlc2V0KCR3WyJjb2x1bW5zIl0pO2lmKCR3WyJ0eXBlIl0hPSJGVUxMVEVYVCImJiRPYikkZlskT2JdPTE7fSRmWyIiXT0xO2ZvcmVhY2goJGYKYXMkej0+JFgpanNvbl9yb3coJHopO2VjaG8iO1xuIiwic2VsZWN0RmllbGRDaGFuZ2UuY2FsbChxcygnI2Zvcm0nKVsnc2VsZWN0J10pO1xuIiwiPC9zY3JpcHQ+XG4iLCI8L2Rpdj48L2ZpZWxkc2V0PlxuIjt9ZnVuY3Rpb24Kc2VsZWN0Q29tbWFuZFByaW50KCl7cmV0dXJuIWluZm9ybWF0aW9uX3NjaGVtYShEQik7fWZ1bmN0aW9uCnNlbGVjdEltcG9ydFByaW50KCl7cmV0dXJuIWluZm9ybWF0aW9uX3NjaGVtYShEQik7fWZ1bmN0aW9uCnNlbGVjdEVtYWlsUHJpbnQoJHZjLCRmKXt9ZnVuY3Rpb24Kc2VsZWN0Q29sdW1uc1Byb2Nlc3MoJGYsJHgpe2dsb2JhbCRuZCwkdGQ7JEw9YXJyYXkoKTskcWQ9YXJyYXkoKTtmb3JlYWNoKChhcnJheSkkX0dFVFsiY29sdW1ucyJdYXMkej0+JFgpe2lmKCRYWyJmdW4iXT09ImNvdW50Inx8KCRYWyJjb2wiXSE9IiImJighJFhbImZ1biJdfHxpbl9hcnJheSgkWFsiZnVuIl0sJG5kKXx8aW5fYXJyYXkoJFhbImZ1biJdLCR0ZCkpKSl7JExbJHpdPWFwcGx5X3NxbF9mdW5jdGlvbigkWFsiZnVuIl0sKCRYWyJjb2wiXSE9IiI/aWRmX2VzY2FwZSgkWFsiY29sIl0pOiIqIikpO2lmKCFpbl9hcnJheSgkWFsiZnVuIl0sJHRkKSkkcWRbXT0kTFskel07fX1yZXR1cm4KYXJyYXkoJEwsJHFkKTt9ZnVuY3Rpb24Kc2VsZWN0U2VhcmNoUHJvY2VzcygkcCwkeCl7Z2xvYmFsJGcsJG07JEk9YXJyYXkoKTtmb3JlYWNoKCR4CmFzJHQ9PiR3KXtpZigkd1sidHlwZSJdPT0iRlVMTFRFWFQiJiYkX0dFVFsiZnVsbHRleHQiXVskdF0hPSIiKSRJW109Ik1BVENIICgiLmltcGxvZGUoIiwgIixhcnJheV9tYXAoJ2lkZl9lc2NhcGUnLCR3WyJjb2x1bW5zIl0pKS4iKSBBR0FJTlNUICgiLnEoJF9HRVRbImZ1bGx0ZXh0Il1bJHRdKS4oaXNzZXQoJF9HRVRbImJvb2xlYW4iXVskdF0pPyIgSU4gQk9PTEVBTiBNT0RFIjoiIikuIikiO31mb3JlYWNoKChhcnJheSkkX0dFVFsid2hlcmUiXWFzJHo9PiRYKXtpZigiJFhbY29sXSRYW3ZhbF0iIT0iIiYmaW5fYXJyYXkoJFhbIm9wIl0sJHRoaXMtPm9wZXJhdG9ycykpeyRpZz0iIjskdWI9IiAkWFtvcF0iO2lmKHByZWdfbWF0Y2goJ35JTiR+JywkWFsib3AiXSkpeyRKZD1wcm9jZXNzX2xlbmd0aCgkWFsidmFsIl0pOyR1Yi49IiAiLigkSmQhPSIiPyRKZDoiKE5VTEwpIik7fWVsc2VpZigkWFsib3AiXT09IlNRTCIpJHViPSIgJFhbdmFsXSI7ZWxzZWlmKCRYWyJvcCJdPT0iTElLRSAlJSIpJHViPSIgTElLRSAiLiR0aGlzLT5wcm9jZXNzSW5wdXQoJHBbJFhbImNvbCJdXSwiJSRYW3ZhbF0lIik7ZWxzZWlmKCRYWyJvcCJdPT0iSUxJS0UgJSUiKSR1Yj0iIElMSUtFICIuJHRoaXMtPnByb2Nlc3NJbnB1dCgkcFskWFsiY29sIl1dLCIlJFhbdmFsXSUiKTtlbHNlaWYoJFhbIm9wIl09PSJGSU5EX0lOX1NFVCIpeyRpZz0iJFhbb3BdKCIucSgkWFsidmFsIl0pLiIsICI7JHViPSIpIjt9ZWxzZWlmKCFwcmVnX21hdGNoKCd+TlVMTCR+JywkWFsib3AiXSkpJHViLj0iICIuJHRoaXMtPnByb2Nlc3NJbnB1dCgkcFskWFsiY29sIl1dLCRYWyJ2YWwiXSk7aWYoJFhbImNvbCJdIT0iIikkSVtdPSRpZy4kbS0+Y29udmVydFNlYXJjaChpZGZfZXNjYXBlKCRYWyJjb2wiXSksJFgsJHBbJFhbImNvbCJdXSkuJHViO2Vsc2V7JG5iPWFycmF5KCk7Zm9yZWFjaCgkcAphcyREPT4kbyl7aWYoKHByZWdfbWF0Y2goJ35eWy1cZC4nLihwcmVnX21hdGNoKCd+SU4kficsJFhbIm9wIl0pPycsJzonJykuJ10rJH4nLCRYWyJ2YWwiXSl8fCFwcmVnX21hdGNoKCd+Jy5udW1iZXJfdHlwZSgpLid8Yml0ficsJG9bInR5cGUiXSkpJiYoIXByZWdfbWF0Y2goIn5bXHg4MC1ceEZGXX4iLCRYWyJ2YWwiXSl8fHByZWdfbWF0Y2goJ35jaGFyfHRleHR8ZW51bXxzZXR+Jywkb1sidHlwZSJdKSkmJighcHJlZ19tYXRjaCgnfmRhdGV8dGltZXN0YW1wficsJG9bInR5cGUiXSl8fHByZWdfbWF0Y2goJ35eXGQrLVxkKy1cZCt+JywkWFsidmFsIl0pKSkkbmJbXT0kaWcuJG0tPmNvbnZlcnRTZWFyY2goaWRmX2VzY2FwZSgkRCksJFgsJG8pLiR1Yjt9JElbXT0oJG5iPyIoIi5pbXBsb2RlKCIgT1IgIiwkbmIpLiIpIjoiMSA9IDAiKTt9fX1yZXR1cm4kSTt9ZnVuY3Rpb24Kc2VsZWN0T3JkZXJQcm9jZXNzKCRwLCR4KXskST1hcnJheSgpO2ZvcmVhY2goKGFycmF5KSRfR0VUWyJvcmRlciJdYXMkej0+JFgpe2lmKCRYIT0iIikkSVtdPShwcmVnX21hdGNoKCd+XigoQ09VTlRcKERJU1RJTkNUIHxbQS1aMC05X10rXCgpKGAoPzpbXmBdfGBgKStgfCIoPzpbXiJdfCIiKSsiKVwpfENPVU5UXChcKlwpKSR+JywkWCk/JFg6aWRmX2VzY2FwZSgkWCkpLihpc3NldCgkX0dFVFsiZGVzYyJdWyR6XSk/IiBERVNDIjoiIik7fXJldHVybiRJO31mdW5jdGlvbgpzZWxlY3RMaW1pdFByb2Nlc3MoKXtyZXR1cm4oaXNzZXQoJF9HRVRbImxpbWl0Il0pPyRfR0VUWyJsaW1pdCJdOiI1MCIpO31mdW5jdGlvbgpzZWxlY3RMZW5ndGhQcm9jZXNzKCl7cmV0dXJuKGlzc2V0KCRfR0VUWyJ0ZXh0X2xlbmd0aCJdKT8kX0dFVFsidGV4dF9sZW5ndGgiXToiMTAwIik7fWZ1bmN0aW9uCnNlbGVjdEVtYWlsUHJvY2VzcygkWiwkZ2Qpe3JldHVybgpmYWxzZTt9ZnVuY3Rpb24Kc2VsZWN0UXVlcnlCdWlsZCgkTCwkWiwkcWQsJHpmLCRfLCRFKXtyZXR1cm4iIjt9ZnVuY3Rpb24KbWVzc2FnZVF1ZXJ5KCRHLCRkaSwkUmM9ZmFsc2Upe2dsb2JhbCR5LCRtO3Jlc3RhcnRfc2Vzc2lvbigpOyRBZD0mZ2V0X3Nlc3Npb24oInF1ZXJpZXMiKTtpZighJEFkWyRfR0VUWyJkYiJdXSkkQWRbJF9HRVRbImRiIl1dPWFycmF5KCk7aWYoc3RybGVuKCRHKT4xZTYpJEc9cHJlZ19yZXBsYWNlKCd+W1x4ODAtXHhGRl0rJH4nLCcnLHN1YnN0cigkRywwLDFlNikpLiJcbsODwqLDouKAmsKsw4LCpiI7JEFkWyRfR0VUWyJkYiJdXVtdPWFycmF5KCRHLHRpbWUoKSwkZGkpOyRfaD0ic3FsLSIuY291bnQoJEFkWyRfR0VUWyJkYiJdXSk7JEk9IjxhIGhyZWY9JyMkX2gnIGNsYXNzPSd0b2dnbGUnPiIuJ1NRTCBjb21tYW5kJy4iPC9hPlxuIjtpZighJFJjJiYoJGJqPSRtLT53YXJuaW5ncygpKSl7JHU9Indhcm5pbmdzLSIuY291bnQoJEFkWyRfR0VUWyJkYiJdXSk7JEk9IjxhIGhyZWY9JyMkdScgY2xhc3M9J3RvZ2dsZSc+Ii4nV2FybmluZ3MnLiI8L2E+LCAkSTxkaXYgaWQ9JyR1JyBjbGFzcz0naGlkZGVuJz5cbiRiajwvZGl2PlxuIjt9cmV0dXJuIiA8c3BhbiBjbGFzcz0ndGltZSc+Ii5AZGF0ZSgiSDppOnMiKS4iPC9zcGFuPiIuIiAkSTxkaXYgaWQ9JyRfaCcgY2xhc3M9J2hpZGRlbic+PHByZT48Y29kZSBjbGFzcz0nanVzaC0keSc+Ii5zaG9ydGVuX3V0ZjgoJEcsMTAwMCkuIjwvY29kZT48L3ByZT4iLigkZGk/IiA8c3BhbiBjbGFzcz0ndGltZSc+KCRkaSk8L3NwYW4+IjonJykuKHN1cHBvcnQoInNxbCIpPyc8cD48YSBocmVmPSInLmgoc3RyX3JlcGxhY2UoImRiPSIudXJsZW5jb2RlKERCKSwiZGI9Ii51cmxlbmNvZGUoJF9HRVRbImRiIl0pLE1FKS4nc3FsPSZoaXN0b3J5PScuKGNvdW50KCRBZFskX0dFVFsiZGIiXV0pLTEpKS4nIj4nLidFZGl0Jy4nPC9hPic6JycpLic8L2Rpdj4nO31mdW5jdGlvbgplZGl0Um93UHJpbnQoJFEsJHAsJEosJElpKXt9ZnVuY3Rpb24KZWRpdEZ1bmN0aW9ucygkbyl7Z2xvYmFsJHFjOyRJPSgkb1sibnVsbCJdPyJOVUxMLyI6IiIpOyRJaT1pc3NldCgkX0dFVFsic2VsZWN0Il0pfHx3aGVyZSgkX0dFVCk7Zm9yZWFjaCgkcWMKYXMkej0+JG5kKXtpZighJHp8fCghaXNzZXQoJF9HRVRbImNhbGwiXSkmJiRJaSkpe2ZvcmVhY2goJG5kCmFzJFpmPT4kWCl7aWYoISRaZnx8cHJlZ19tYXRjaCgifiRaZn4iLCRvWyJ0eXBlIl0pKSRJLj0iLyRYIjt9fWlmKCR6JiYhcHJlZ19tYXRjaCgnfnNldHxibG9ifGJ5dGVhfHJhd3xmaWxlfGJvb2x+Jywkb1sidHlwZSJdKSkkSS49Ii9TUUwiO31pZigkb1siYXV0b19pbmNyZW1lbnQiXSYmISRJaSkkST0nQXV0byBJbmNyZW1lbnQnO3JldHVybgpleHBsb2RlKCIvIiwkSSk7fWZ1bmN0aW9uCmVkaXRJbnB1dCgkUSwkbywkSGEsJFkpe2lmKCRvWyJ0eXBlIl09PSJlbnVtIilyZXR1cm4oaXNzZXQoJF9HRVRbInNlbGVjdCJdKT8iPGxhYmVsPjxpbnB1dCB0eXBlPSdyYWRpbyckSGEgdmFsdWU9Jy0xJyBjaGVja2VkPjxpPiIuJ29yaWdpbmFsJy4iPC9pPjwvbGFiZWw+ICI6IiIpLigkb1sibnVsbCJdPyI8bGFiZWw+PGlucHV0IHR5cGU9J3JhZGlvJyRIYSB2YWx1ZT0nJyIuKCRZIT09bnVsbHx8aXNzZXQoJF9HRVRbInNlbGVjdCJdKT8iIjoiIGNoZWNrZWQiKS4iPjxpPk5VTEw8L2k+PC9sYWJlbD4gIjoiIikuZW51bV9pbnB1dCgicmFkaW8iLCRIYSwkbywkWSwwKTtyZXR1cm4iIjt9ZnVuY3Rpb24KZWRpdEhpbnQoJFEsJG8sJFkpe3JldHVybiIiO31mdW5jdGlvbgpwcm9jZXNzSW5wdXQoJG8sJFksJHM9IiIpe2lmKCRzPT0iU1FMIilyZXR1cm4kWTskRD0kb1siZmllbGQiXTskST1xKCRZKTtpZihwcmVnX21hdGNoKCd+Xihub3d8Z2V0ZGF0ZXx1dWlkKSR+JywkcykpJEk9IiRzKCkiO2Vsc2VpZihwcmVnX21hdGNoKCd+XmN1cnJlbnRfKGRhdGV8dGltZXN0YW1wKSR+JywkcykpJEk9JHM7ZWxzZWlmKHByZWdfbWF0Y2goJ35eKFsrLV18XHxcfCkkficsJHMpKSRJPWlkZl9lc2NhcGUoJEQpLiIgJHMgJEkiO2Vsc2VpZihwcmVnX21hdGNoKCd+XlsrLV0gaW50ZXJ2YWwkficsJHMpKSRJPWlkZl9lc2NhcGUoJEQpLiIgJHMgIi4ocHJlZ19tYXRjaCgifl4oXFxkK3wnWzAtOS46IC1dJykgW0EtWl9dK1wkfmkiLCRZKT8kWTokSSk7ZWxzZWlmKHByZWdfbWF0Y2goJ35eKGFkZHRpbWV8c3VidGltZXxjb25jYXQpJH4nLCRzKSkkST0iJHMoIi5pZGZfZXNjYXBlKCREKS4iLCAkSSkiO2Vsc2VpZihwcmVnX21hdGNoKCd+XihtZDV8c2hhMXxwYXNzd29yZHxlbmNyeXB0KSR+JywkcykpJEk9IiRzKCRJKSI7cmV0dXJuCnVuY29udmVydF9maWVsZCgkbywkSSk7fWZ1bmN0aW9uCmR1bXBPdXRwdXQoKXskST1hcnJheSgndGV4dCc9PidvcGVuJywnZmlsZSc9PidzYXZlJyk7aWYoZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKSRJWydneiddPSdnemlwJztyZXR1cm4kSTt9ZnVuY3Rpb24KZHVtcEZvcm1hdCgpe3JldHVybgphcnJheSgnc3FsJz0+J1NRTCcsJ2Nzdic9PidDU1YsJywnY3N2Oyc9PidDU1Y7JywndHN2Jz0+J1RTVicpO31mdW5jdGlvbgpkdW1wRGF0YWJhc2UoJGwpe31mdW5jdGlvbgpkdW1wVGFibGUoJFEsJEhoLCRjZT0wKXtpZigkX1BPU1RbImZvcm1hdCJdIT0ic3FsIil7ZWNobyJceGVmXHhiYlx4YmYiO2lmKCRIaClkdW1wX2NzdihhcnJheV9rZXlzKGZpZWxkcygkUSkpKTt9ZWxzZXtpZigkY2U9PTIpeyRwPWFycmF5KCk7Zm9yZWFjaChmaWVsZHMoJFEpYXMkRD0+JG8pJHBbXT1pZGZfZXNjYXBlKCREKS4iICRvW2Z1bGxfdHlwZV0iOyRpPSJDUkVBVEUgVEFCTEUgIi50YWJsZSgkUSkuIiAoIi5pbXBsb2RlKCIsICIsJHApLiIpIjt9ZWxzZSRpPWNyZWF0ZV9zcWwoJFEsJF9QT1NUWyJhdXRvX2luY3JlbWVudCJdLCRIaCk7c2V0X3V0ZjhtYjQoJGkpO2lmKCRIaCYmJGkpe2lmKCRIaD09IkRST1ArQ1JFQVRFInx8JGNlPT0xKWVjaG8iRFJPUCAiLigkY2U9PTI/IlZJRVciOiJUQUJMRSIpLiIgSUYgRVhJU1RTICIudGFibGUoJFEpLiI7XG4iO2lmKCRjZT09MSkkaT1yZW1vdmVfZGVmaW5lcigkaSk7ZWNobyIkaTtcblxuIjt9fX1mdW5jdGlvbgpkdW1wRGF0YSgkUSwkSGgsJEcpe2dsb2JhbCRnLCR5OyRFZT0oJHk9PSJzcWxpdGUiPzA6MTA0ODU3Nik7aWYoJEhoKXtpZigkX1BPU1RbImZvcm1hdCJdPT0ic3FsIil7aWYoJEhoPT0iVFJVTkNBVEUrSU5TRVJUIillY2hvCnRydW5jYXRlX3NxbCgkUSkuIjtcbiI7JHA9ZmllbGRzKCRRKTt9JEg9JGctPnF1ZXJ5KCRHLDEpO2lmKCRIKXskVmQ9IiI7JFZhPSIiOyRoZT1hcnJheSgpOyRKaD0iIjskVWM9KCRRIT0nJz8nZmV0Y2hfYXNzb2MnOidmZXRjaF9yb3cnKTt3aGlsZSgkSj0kSC0+JFVjKCkpe2lmKCEkaGUpeyRUaT1hcnJheSgpO2ZvcmVhY2goJEoKYXMkWCl7JG89JEgtPmZldGNoX2ZpZWxkKCk7JGhlW109JG8tPm5hbWU7JHo9aWRmX2VzY2FwZSgkby0+bmFtZSk7JFRpW109IiR6ID0gVkFMVUVTKCR6KSI7fSRKaD0oJEhoPT0iSU5TRVJUK1VQREFURSI/IlxuT04gRFVQTElDQVRFIEtFWSBVUERBVEUgIi5pbXBsb2RlKCIsICIsJFRpKToiIikuIjtcbiI7fWlmKCRfUE9TVFsiZm9ybWF0Il0hPSJzcWwiKXtpZigkSGg9PSJ0YWJsZSIpe2R1bXBfY3N2KCRoZSk7JEhoPSJJTlNFUlQiO31kdW1wX2NzdigkSik7fWVsc2V7aWYoISRWZCkkVmQ9IklOU0VSVCBJTlRPICIudGFibGUoJFEpLiIgKCIuaW1wbG9kZSgiLCAiLGFycmF5X21hcCgnaWRmX2VzY2FwZScsJGhlKSkuIikgVkFMVUVTIjtmb3JlYWNoKCRKCmFzJHo9PiRYKXskbz0kcFskel07JEpbJHpdPSgkWCE9PW51bGw/dW5jb252ZXJ0X2ZpZWxkKCRvLHByZWdfbWF0Y2gobnVtYmVyX3R5cGUoKSwkb1sidHlwZSJdKSYmIXByZWdfbWF0Y2goJ35cW34nLCRvWyJmdWxsX3R5cGUiXSkmJmlzX251bWVyaWMoJFgpPyRYOnEoKCRYPT09ZmFsc2U/MDokWCkpKToiTlVMTCIpO30kWGc9KCRFZT8iXG4iOiIgIikuIigiLmltcGxvZGUoIixcdCIsJEopLiIpIjtpZighJFZhKSRWYT0kVmQuJFhnO2Vsc2VpZihzdHJsZW4oJFZhKSs0K3N0cmxlbigkWGcpK3N0cmxlbigkSmgpPCRFZSkkVmEuPSIsJFhnIjtlbHNle2VjaG8kVmEuJEpoOyRWYT0kVmQuJFhnO319fWlmKCRWYSllY2hvJFZhLiRKaDt9ZWxzZWlmKCRfUE9TVFsiZm9ybWF0Il09PSJzcWwiKWVjaG8iLS0gIi5zdHJfcmVwbGFjZSgiXG4iLCIgIiwkZy0+ZXJyb3IpLiJcbiI7fX1mdW5jdGlvbgpkdW1wRmlsZW5hbWUoJEZkKXtyZXR1cm4KZnJpZW5kbHlfdXJsKCRGZCE9IiI/JEZkOihTRVJWRVIhPSIiP1NFUlZFUjoibG9jYWxob3N0IikpO31mdW5jdGlvbgpkdW1wSGVhZGVycygkRmQsJFNlPWZhbHNlKXskSmY9JF9QT1NUWyJvdXRwdXQiXTskTWM9KHByZWdfbWF0Y2goJ35zcWx+JywkX1BPU1RbImZvcm1hdCJdKT8ic3FsIjooJFNlPyJ0YXIiOiJjc3YiKSk7aGVhZGVyKCJDb250ZW50LVR5cGU6ICIuKCRKZj09Imd6Ij8iYXBwbGljYXRpb24veC1nemlwIjooJE1jPT0idGFyIj8iYXBwbGljYXRpb24veC10YXIiOigkTWM9PSJzcWwifHwkSmYhPSJmaWxlIj8idGV4dC9wbGFpbiI6InRleHQvY3N2IikuIjsgY2hhcnNldD11dGYtOCIpKSk7aWYoJEpmPT0iZ3oiKW9iX3N0YXJ0KCdvYl9nemVuY29kZScsMWU2KTtyZXR1cm4kTWM7fWZ1bmN0aW9uCmltcG9ydFNlcnZlclBhdGgoKXtyZXR1cm4iYWRtaW5lci5zcWwiO31mdW5jdGlvbgpob21lcGFnZSgpe2VjaG8nPHAgY2xhc3M9ImxpbmtzIj4nLigkX0dFVFsibnMiXT09IiImJnN1cHBvcnQoImRhdGFiYXNlIik/JzxhIGhyZWY9IicuaChNRSkuJ2RhdGFiYXNlPSI+Jy4nQWx0ZXIgZGF0YWJhc2UnLiI8L2E+XG4iOiIiKSwoc3VwcG9ydCgic2NoZW1lIik/IjxhIGhyZWY9JyIuaChNRSkuInNjaGVtZT0nPiIuKCRfR0VUWyJucyJdIT0iIj8nQWx0ZXIgc2NoZW1hJzonQ3JlYXRlIHNjaGVtYScpLiI8L2E+XG4iOiIiKSwoJF9HRVRbIm5zIl0hPT0iIj8nPGEgaHJlZj0iJy5oKE1FKS4nc2NoZW1hPSI+Jy4nRGF0YWJhc2Ugc2NoZW1hJy4iPC9hPlxuIjoiIiksKHN1cHBvcnQoInByaXZpbGVnZXMiKT8iPGEgaHJlZj0nIi5oKE1FKS4icHJpdmlsZWdlcz0nPiIuJ1ByaXZpbGVnZXMnLiI8L2E+XG4iOiIiKTtyZXR1cm4KdHJ1ZTt9ZnVuY3Rpb24KbmF2aWdhdGlvbigkUmUpe2dsb2JhbCRpYSwkeSwkaWMsJGc7ZWNobyc8aDE+CicsJHRoaXMtPm5hbWUoKSwnIDxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj4nLCRpYSwnPC9zcGFuPgo8YSBocmVmPSJodHRwczovL3d3dy5hZG1pbmVyLm9yZy8jZG93bmxvYWQiJyx0YXJnZXRfYmxhbmsoKSwnIGlkPSJ2ZXJzaW9uIj4nLCh2ZXJzaW9uX2NvbXBhcmUoJGlhLCRfQ09PS0lFWyJhZG1pbmVyX3ZlcnNpb24iXSk8MD9oKCRfQ09PS0lFWyJhZG1pbmVyX3ZlcnNpb24iXSk6IiIpLCc8L2E+CjwvaDE+Cic7aWYoJFJlPT0iYXV0aCIpeyRKZj0iIjtmb3JlYWNoKChhcnJheSkkX1NFU1NJT05bInB3ZHMiXWFzJFZpPT4kbGgpe2ZvcmVhY2goJGxoCmFzJE09PiRRaSl7Zm9yZWFjaCgkUWkKYXMkVj0+JEYpe2lmKCRGIT09bnVsbCl7JFViPSRfU0VTU0lPTlsiZGIiXVskVmldWyRNXVskVl07Zm9yZWFjaCgoJFViP2FycmF5X2tleXMoJFViKTphcnJheSgiIikpYXMkbCkkSmYuPSI8bGk+PGEgaHJlZj0nIi5oKGF1dGhfdXJsKCRWaSwkTSwkViwkbCkpLiInPigkaWNbJFZpXSkgIi5oKCRWLigkTSE9IiI/IkAiLiR0aGlzLT5zZXJ2ZXJOYW1lKCRNKToiIikuKCRsIT0iIj8iIC0gJGwiOiIiKSkuIjwvYT5cbiI7fX19fWlmKCRKZillY2hvIjx1bCBpZD0nbG9naW5zJz5cbiRKZjwvdWw+XG4iLnNjcmlwdCgibWl4aW4ocXMoJyNsb2dpbnMnKSwge29ubW91c2VvdmVyOiBtZW51T3Zlciwgb25tb3VzZW91dDogbWVudU91dH0pOyIpO31lbHNleyRTPWFycmF5KCk7aWYoJF9HRVRbIm5zIl0hPT0iIiYmISRSZSYmREIhPSIiKXskZy0+c2VsZWN0X2RiKERCKTskUz10YWJsZV9zdGF0dXMoJycsdHJ1ZSk7fWVjaG8Kc2NyaXB0X3NyYyhwcmVnX3JlcGxhY2UoIn5cXD8uKn4iLCIiLE1FKS4iP2ZpbGU9anVzaC5qcyZ2ZXJzaW9uPTQuOC4xIik7aWYoc3VwcG9ydCgic3FsIikpe2VjaG8nPHNjcmlwdCcsbm9uY2UoKSwnPgonO2lmKCRTKXskd2U9YXJyYXkoKTtmb3JlYWNoKCRTCmFzJFE9PiRUKSR3ZVtdPXByZWdfcXVvdGUoJFEsJy8nKTtlY2hvInZhciBqdXNoTGlua3MgPSB7ICR5OiBbICciLmpzX2VzY2FwZShNRSkuKHN1cHBvcnQoInRhYmxlIik/InRhYmxlPSI6InNlbGVjdD0iKS4iXCQmJywgL1xcYigiLmltcGxvZGUoInwiLCR3ZSkuIilcXGIvZyBdIH07XG4iO2ZvcmVhY2goYXJyYXkoImJhYyIsImJyYSIsInNxbGl0ZV9xdW8iLCJtc3NxbF9icmEiKWFzJFgpZWNobyJqdXNoTGlua3MuJFggPSBqdXNoTGlua3MuJHk7XG4iO30ka2g9JGctPnNlcnZlcl9pbmZvO2VjaG8nYm9keUxvYWQoXCcnLChpc19vYmplY3QoJGcpP3ByZWdfcmVwbGFjZSgnfl4oXGRcLj9cZCkuKn5zJywnXDEnLCRraCk6IiIpLCdcJycsKHByZWdfbWF0Y2goJ35NYXJpYURCficsJGtoKT8iLCB0cnVlIjoiIiksJyk7Cjwvc2NyaXB0PgonO30kdGhpcy0+ZGF0YWJhc2VzUHJpbnQoJFJlKTtpZihEQj09IiJ8fCEkUmUpe2VjaG8iPHAgY2xhc3M9J2xpbmtzJz4iLihzdXBwb3J0KCJzcWwiKT8iPGEgaHJlZj0nIi5oKE1FKS4ic3FsPSciLmJvbGQoaXNzZXQoJF9HRVRbInNxbCJdKSYmIWlzc2V0KCRfR0VUWyJpbXBvcnQiXSkpLiI+Ii4nU1FMIGNvbW1hbmQnLiI8L2E+XG48YSBocmVmPSciLmgoTUUpLiJpbXBvcnQ9JyIuYm9sZChpc3NldCgkX0dFVFsiaW1wb3J0Il0pKS4iPiIuJ0ltcG9ydCcuIjwvYT5cbiI6IiIpLiIiO2lmKHN1cHBvcnQoImR1bXAiKSllY2hvIjxhIGhyZWY9JyIuaChNRSkuImR1bXA9Ii51cmxlbmNvZGUoaXNzZXQoJF9HRVRbInRhYmxlIl0pPyRfR0VUWyJ0YWJsZSJdOiRfR0VUWyJzZWxlY3QiXSkuIicgaWQ9J2R1bXAnIi5ib2xkKGlzc2V0KCRfR0VUWyJkdW1wIl0pKS4iPiIuJ0V4cG9ydCcuIjwvYT5cbiI7fWlmKCRfR0VUWyJucyJdIT09IiImJiEkUmUmJkRCIT0iIil7ZWNobyc8YSBocmVmPSInLmgoTUUpLidjcmVhdGU9IicuYm9sZCgkX0dFVFsiY3JlYXRlIl09PT0iIikuIj4iLidDcmVhdGUgdGFibGUnLiI8L2E+XG4iO2lmKCEkUyllY2hvIjxwIGNsYXNzPSdtZXNzYWdlJz4iLidObyB0YWJsZXMuJy4iXG4iO2Vsc2UkdGhpcy0+dGFibGVzUHJpbnQoJFMpO319fWZ1bmN0aW9uCmRhdGFiYXNlc1ByaW50KCRSZSl7Z2xvYmFsJGIsJGc7JGs9JHRoaXMtPmRhdGFiYXNlcygpO2lmKERCJiYkayYmIWluX2FycmF5KERCLCRrKSlhcnJheV91bnNoaWZ0KCRrLERCKTtlY2hvJzxmb3JtIGFjdGlvbj0iIj4KPHAgaWQ9ImRicyI+Cic7aGlkZGVuX2ZpZWxkc19nZXQoKTskU2I9c2NyaXB0KCJtaXhpbihxc2woJ3NlbGVjdCcpLCB7b25tb3VzZWRvd246IGRiTW91c2VEb3duLCBvbmNoYW5nZTogZGJDaGFuZ2V9KTsiKTtlY2hvIjxzcGFuIHRpdGxlPSciLidkYXRhYmFzZScuIic+Ii4nREInLiI8L3NwYW4+OiAiLigkaz8iPHNlbGVjdCBuYW1lPSdkYic+Ii5vcHRpb25saXN0KGFycmF5KCIiPT4iIikrJGssREIpLiI8L3NlbGVjdD4kU2IiOiI8aW5wdXQgbmFtZT0nZGInIHZhbHVlPSciLmgoREIpLiInIGF1dG9jYXBpdGFsaXplPSdvZmYnPlxuIiksIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSciLidVc2UnLiInIi4oJGs/IiBjbGFzcz0naGlkZGVuJyI6IiIpLiI+XG4iO2lmKHN1cHBvcnQoInNjaGVtZSIpKXtpZigkUmUhPSJkYiImJkRCIT0iIiYmJGctPnNlbGVjdF9kYihEQikpe2VjaG8iPGJyPiIuJ1NjaGVtYScuIjogPHNlbGVjdCBuYW1lPSducyc+Ii5vcHRpb25saXN0KGFycmF5KCIiPT4iIikrJGItPnNjaGVtYXMoKSwkX0dFVFsibnMiXSkuIjwvc2VsZWN0PiRTYiI7aWYoJF9HRVRbIm5zIl0hPSIiKXNldF9zY2hlbWEoJF9HRVRbIm5zIl0pO319Zm9yZWFjaChhcnJheSgiaW1wb3J0Iiwic3FsIiwic2NoZW1hIiwiZHVtcCIsInByaXZpbGVnZXMiKWFzJFgpe2lmKGlzc2V0KCRfR0VUWyRYXSkpe2VjaG8iPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nJFgnIHZhbHVlPScnPiI7YnJlYWs7fX1lY2hvIjwvcD48L2Zvcm0+XG4iO31mdW5jdGlvbgp0YWJsZXNQcmludCgkUyl7ZWNobyI8dWwgaWQ9J3RhYmxlcyc+Ii5zY3JpcHQoIm1peGluKHFzKCcjdGFibGVzJyksIHtvbm1vdXNlb3ZlcjogbWVudU92ZXIsIG9ubW91c2VvdXQ6IG1lbnVPdXR9KTsiKTtmb3JlYWNoKCRTCmFzJFE9PiRPKXskRD0kdGhpcy0+dGFibGVOYW1lKCRPKTtpZigkRCE9IiIpe2VjaG8nPGxpPjxhIGhyZWY9IicuaChNRSkuJ3NlbGVjdD0nLnVybGVuY29kZSgkUSkuJyInLmJvbGQoJF9HRVRbInNlbGVjdCJdPT0kUXx8JF9HRVRbImVkaXQiXT09JFEsInNlbGVjdCIpLiIgdGl0bGU9JyIuJ1NlbGVjdCBkYXRhJy4iJz4iLidzZWxlY3QnLiI8L2E+ICIsKHN1cHBvcnQoInRhYmxlIil8fHN1cHBvcnQoImluZGV4ZXMiKT8nPGEgaHJlZj0iJy5oKE1FKS4ndGFibGU9Jy51cmxlbmNvZGUoJFEpLiciJy5ib2xkKGluX2FycmF5KCRRLGFycmF5KCRfR0VUWyJ0YWJsZSJdLCRfR0VUWyJjcmVhdGUiXSwkX0dFVFsiaW5kZXhlcyJdLCRfR0VUWyJmb3JlaWduIl0sJF9HRVRbInRyaWdnZXIiXSkpLChpc192aWV3KCRPKT8idmlldyI6InN0cnVjdHVyZSIpKS4iIHRpdGxlPSciLidTaG93IHN0cnVjdHVyZScuIic+JEQ8L2E+IjoiPHNwYW4+JEQ8L3NwYW4+IikuIlxuIjt9fWVjaG8iPC91bD5cbiI7fX0kYj0oZnVuY3Rpb25fZXhpc3RzKCdhZG1pbmVyX29iamVjdCcpP2FkbWluZXJfb2JqZWN0KCk6bmV3CkFkbWluZXIpOyRpYz1hcnJheSgic2VydmVyIj0+Ik15U1FMIikrJGljO2lmKCFkZWZpbmVkKCJEUklWRVIiKSl7ZGVmaW5lKCJEUklWRVIiLCJzZXJ2ZXIiKTtpZihleHRlbnNpb25fbG9hZGVkKCJteXNxbGkiKSl7Y2xhc3MKTWluX0RCCmV4dGVuZHMKTXlTUUxpe3ZhciRleHRlbnNpb249Ik15U1FMaSI7ZnVuY3Rpb24KX19jb25zdHJ1Y3QoKXtwYXJlbnQ6OmluaXQoKTt9ZnVuY3Rpb24KY29ubmVjdCgkTT0iIiwkVj0iIiwkRj0iIiwkaj1udWxsLCRkZz1udWxsLCR0aD1udWxsKXtnbG9iYWwkYjtteXNxbGlfcmVwb3J0KE1ZU1FMSV9SRVBPUlRfT0ZGKTtsaXN0KCREZCwkZGcpPWV4cGxvZGUoIjoiLCRNLDIpOyRCaD0kYi0+Y29ubmVjdFNzbCgpO2lmKCRCaCkkdGhpcy0+c3NsX3NldCgkQmhbJ2tleSddLCRCaFsnY2VydCddLCRCaFsnY2EnXSwnJywnJyk7JEk9QCR0aGlzLT5yZWFsX2Nvbm5lY3QoKCRNIT0iIj8kRGQ6aW5pX2dldCgibXlzcWxpLmRlZmF1bHRfaG9zdCIpKSwoJE0uJFYhPSIiPyRWOmluaV9nZXQoIm15c3FsaS5kZWZhdWx0X3VzZXIiKSksKCRNLiRWLiRGIT0iIj8kRjppbmlfZ2V0KCJteXNxbGkuZGVmYXVsdF9wdyIpKSwkaiwoaXNfbnVtZXJpYygkZGcpPyRkZzppbmlfZ2V0KCJteXNxbGkuZGVmYXVsdF9wb3J0IikpLCghaXNfbnVtZXJpYygkZGcpPyRkZzokdGgpLCgkQmg/NjQ6MCkpOyR0aGlzLT5vcHRpb25zKE1ZU1FMSV9PUFRfTE9DQUxfSU5GSUxFLGZhbHNlKTtyZXR1cm4kSTt9ZnVuY3Rpb24Kc2V0X2NoYXJzZXQoJFphKXtpZihwYXJlbnQ6OnNldF9jaGFyc2V0KCRaYSkpcmV0dXJuCnRydWU7cGFyZW50OjpzZXRfY2hhcnNldCgndXRmOCcpO3JldHVybiR0aGlzLT5xdWVyeSgiU0VUIE5BTUVTICRaYSIpO31mdW5jdGlvbgpyZXN1bHQoJEcsJG89MCl7JEg9JHRoaXMtPnF1ZXJ5KCRHKTtpZighJEgpcmV0dXJuCmZhbHNlOyRKPSRILT5mZXRjaF9hcnJheSgpO3JldHVybiRKWyRvXTt9ZnVuY3Rpb24KcXVvdGUoJFApe3JldHVybiInIi4kdGhpcy0+ZXNjYXBlX3N0cmluZygkUCkuIiciO319fWVsc2VpZihleHRlbnNpb25fbG9hZGVkKCJteXNxbCIpJiYhKChpbmlfYm9vbCgic3FsLnNhZmVfbW9kZSIpfHxpbmlfYm9vbCgibXlzcWwuYWxsb3dfbG9jYWxfaW5maWxlIikpJiZleHRlbnNpb25fbG9hZGVkKCJwZG9fbXlzcWwiKSkpe2NsYXNzCk1pbl9EQnt2YXIkZXh0ZW5zaW9uPSJNeVNRTCIsJHNlcnZlcl9pbmZvLCRhZmZlY3RlZF9yb3dzLCRlcnJubywkZXJyb3IsJF9saW5rLCRfcmVzdWx0O2Z1bmN0aW9uCmNvbm5lY3QoJE0sJFYsJEYpe2lmKGluaV9ib29sKCJteXNxbC5hbGxvd19sb2NhbF9pbmZpbGUiKSl7JHRoaXMtPmVycm9yPXNwcmludGYoJ0Rpc2FibGUgJXMgb3IgZW5hYmxlICVzIG9yICVzIGV4dGVuc2lvbnMuJywiJ215c3FsLmFsbG93X2xvY2FsX2luZmlsZSciLCJNeVNRTGkiLCJQRE9fTXlTUUwiKTtyZXR1cm4KZmFsc2U7fSR0aGlzLT5fbGluaz1AbXlzcWxfY29ubmVjdCgoJE0hPSIiPyRNOmluaV9nZXQoIm15c3FsLmRlZmF1bHRfaG9zdCIpKSwoIiRNJFYiIT0iIj8kVjppbmlfZ2V0KCJteXNxbC5kZWZhdWx0X3VzZXIiKSksKCIkTSRWJEYiIT0iIj8kRjppbmlfZ2V0KCJteXNxbC5kZWZhdWx0X3Bhc3N3b3JkIikpLHRydWUsMTMxMDcyKTtpZigkdGhpcy0+X2xpbmspJHRoaXMtPnNlcnZlcl9pbmZvPW15c3FsX2dldF9zZXJ2ZXJfaW5mbygkdGhpcy0+X2xpbmspO2Vsc2UkdGhpcy0+ZXJyb3I9bXlzcWxfZXJyb3IoKTtyZXR1cm4oYm9vbCkkdGhpcy0+X2xpbms7fWZ1bmN0aW9uCnNldF9jaGFyc2V0KCRaYSl7aWYoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9zZXRfY2hhcnNldCcpKXtpZihteXNxbF9zZXRfY2hhcnNldCgkWmEsJHRoaXMtPl9saW5rKSlyZXR1cm4KdHJ1ZTtteXNxbF9zZXRfY2hhcnNldCgndXRmOCcsJHRoaXMtPl9saW5rKTt9cmV0dXJuJHRoaXMtPnF1ZXJ5KCJTRVQgTkFNRVMgJFphIik7fWZ1bmN0aW9uCnF1b3RlKCRQKXtyZXR1cm4iJyIubXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCRQLCR0aGlzLT5fbGluaykuIiciO31mdW5jdGlvbgpzZWxlY3RfZGIoJGope3JldHVybgpteXNxbF9zZWxlY3RfZGIoJGosJHRoaXMtPl9saW5rKTt9ZnVuY3Rpb24KcXVlcnkoJEcsJEJpPWZhbHNlKXskSD1AKCRCaT9teXNxbF91bmJ1ZmZlcmVkX3F1ZXJ5KCRHLCR0aGlzLT5fbGluayk6bXlzcWxfcXVlcnkoJEcsJHRoaXMtPl9saW5rKSk7JHRoaXMtPmVycm9yPSIiO2lmKCEkSCl7JHRoaXMtPmVycm5vPW15c3FsX2Vycm5vKCR0aGlzLT5fbGluayk7JHRoaXMtPmVycm9yPW15c3FsX2Vycm9yKCR0aGlzLT5fbGluayk7cmV0dXJuCmZhbHNlO31pZigkSD09PXRydWUpeyR0aGlzLT5hZmZlY3RlZF9yb3dzPW15c3FsX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPl9saW5rKTskdGhpcy0+aW5mbz1teXNxbF9pbmZvKCR0aGlzLT5fbGluayk7cmV0dXJuCnRydWU7fXJldHVybgpuZXcKTWluX1Jlc3VsdCgkSCk7fWZ1bmN0aW9uCm11bHRpX3F1ZXJ5KCRHKXtyZXR1cm4kdGhpcy0+X3Jlc3VsdD0kdGhpcy0+cXVlcnkoJEcpO31mdW5jdGlvbgpzdG9yZV9yZXN1bHQoKXtyZXR1cm4kdGhpcy0+X3Jlc3VsdDt9ZnVuY3Rpb24KbmV4dF9yZXN1bHQoKXtyZXR1cm4KZmFsc2U7fWZ1bmN0aW9uCnJlc3VsdCgkRywkbz0wKXskSD0kdGhpcy0+cXVlcnkoJEcpO2lmKCEkSHx8ISRILT5udW1fcm93cylyZXR1cm4KZmFsc2U7cmV0dXJuCm15c3FsX3Jlc3VsdCgkSC0+X3Jlc3VsdCwwLCRvKTt9fWNsYXNzCk1pbl9SZXN1bHR7dmFyJG51bV9yb3dzLCRfcmVzdWx0LCRfb2Zmc2V0PTA7ZnVuY3Rpb24KX19jb25zdHJ1Y3QoJEgpeyR0aGlzLT5fcmVzdWx0PSRIOyR0aGlzLT5udW1fcm93cz1teXNxbF9udW1fcm93cygkSCk7fWZ1bmN0aW9uCmZldGNoX2Fzc29jKCl7cmV0dXJuCm15c3FsX2ZldGNoX2Fzc29jKCR0aGlzLT5fcmVzdWx0KTt9ZnVuY3Rpb24KZmV0Y2hfcm93KCl7cmV0dXJuCm15c3FsX2ZldGNoX3JvdygkdGhpcy0+X3Jlc3VsdCk7fWZ1bmN0aW9uCmZldGNoX2ZpZWxkKCl7JEk9bXlzcWxfZmV0Y2hfZmllbGQoJHRoaXMtPl9yZXN1bHQsJHRoaXMtPl9vZmZzZXQrKyk7JEktPm9yZ3RhYmxlPSRJLT50YWJsZTskSS0+b3JnbmFtZT0kSS0+bmFtZTskSS0+Y2hhcnNldG5yPSgkSS0+YmxvYj82MzowKTtyZXR1cm4kSTt9ZnVuY3Rpb24KX19kZXN0cnVjdCgpe215c3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5fcmVzdWx0KTt9fX1lbHNlaWYoZXh0ZW5zaW9uX2xvYWRlZCgicGRvX215c3FsIikpe2NsYXNzCk1pbl9EQgpleHRlbmRzCk1pbl9QRE97dmFyJGV4dGVuc2lvbj0iUERPX015U1FMIjtmdW5jdGlvbgpjb25uZWN0KCRNLCRWLCRGKXtnbG9iYWwkYjskeGY9YXJyYXkoUERPOjpNWVNRTF9BVFRSX0xPQ0FMX0lORklMRT0+ZmFsc2UpOyRCaD0kYi0+Y29ubmVjdFNzbCgpO2lmKCRCaCl7aWYoIWVtcHR5KCRCaFsna2V5J10pKSR4ZltQRE86Ok1ZU1FMX0FUVFJfU1NMX0tFWV09JEJoWydrZXknXTtpZighZW1wdHkoJEJoWydjZXJ0J10pKSR4ZltQRE86Ok1ZU1FMX0FUVFJfU1NMX0NFUlRdPSRCaFsnY2VydCddO2lmKCFlbXB0eSgkQmhbJ2NhJ10pKSR4ZltQRE86Ok1ZU1FMX0FUVFJfU1NMX0NBXT0kQmhbJ2NhJ107fSR0aGlzLT5kc24oIm15c3FsOmNoYXJzZXQ9dXRmODtob3N0PSIuc3RyX3JlcGxhY2UoIjoiLCI7dW5peF9zb2NrZXQ9IixwcmVnX3JlcGxhY2UoJ346KFxkKX4nLCc7cG9ydD1cMScsJE0pKSwkViwkRiwkeGYpO3JldHVybgp0cnVlO31mdW5jdGlvbgpzZXRfY2hhcnNldCgkWmEpeyR0aGlzLT5xdWVyeSgiU0VUIE5BTUVTICRaYSIpO31mdW5jdGlvbgpzZWxlY3RfZGIoJGope3JldHVybiR0aGlzLT5xdWVyeSgiVVNFICIuaWRmX2VzY2FwZSgkaikpO31mdW5jdGlvbgpxdWVyeSgkRywkQmk9ZmFsc2UpeyR0aGlzLT5wZG8tPnNldEF0dHJpYnV0ZShQRE86Ok1ZU1FMX0FUVFJfVVNFX0JVRkZFUkVEX1FVRVJZLCEkQmkpO3JldHVybgpwYXJlbnQ6OnF1ZXJ5KCRHLCRCaSk7fX19Y2xhc3MKTWluX0RyaXZlcgpleHRlbmRzCk1pbl9TUUx7ZnVuY3Rpb24KaW5zZXJ0KCRRLCROKXtyZXR1cm4oJE4/cGFyZW50OjppbnNlcnQoJFEsJE4pOnF1ZXJpZXMoIklOU0VSVCBJTlRPICIudGFibGUoJFEpLiIgKClcblZBTFVFUyAoKSIpKTt9ZnVuY3Rpb24KaW5zZXJ0VXBkYXRlKCRRLCRLLCRrZyl7JGY9YXJyYXlfa2V5cyhyZXNldCgkSykpOyRpZz0iSU5TRVJUIElOVE8gIi50YWJsZSgkUSkuIiAoIi5pbXBsb2RlKCIsICIsJGYpLiIpIFZBTFVFU1xuIjskVGk9YXJyYXkoKTtmb3JlYWNoKCRmCmFzJHopJFRpWyR6XT0iJHogPSBWQUxVRVMoJHopIjskSmg9IlxuT04gRFVQTElDQVRFIEtFWSBVUERBVEUgIi5pbXBsb2RlKCIsICIsJFRpKTskVGk9YXJyYXkoKTskdGU9MDtmb3JlYWNoKCRLCmFzJE4peyRZPSIoIi5pbXBsb2RlKCIsICIsJE4pLiIpIjtpZigkVGkmJihzdHJsZW4oJGlnKSskdGUrc3RybGVuKCRZKStzdHJsZW4oJEpoKT4xZTYpKXtpZighcXVlcmllcygkaWcuaW1wbG9kZSgiLFxuIiwkVGkpLiRKaCkpcmV0dXJuCmZhbHNlOyRUaT1hcnJheSgpOyR0ZT0wO30kVGlbXT0kWTskdGUrPXN0cmxlbigkWSkrMjt9cmV0dXJuCnF1ZXJpZXMoJGlnLmltcGxvZGUoIixcbiIsJFRpKS4kSmgpO31mdW5jdGlvbgpzbG93UXVlcnkoJEcsJGVpKXtpZihtaW5fdmVyc2lvbignNS43LjgnLCcxMC4xLjInKSl7aWYocHJlZ19tYXRjaCgnfk1hcmlhREJ+JywkdGhpcy0+X2Nvbm4tPnNlcnZlcl9pbmZvKSlyZXR1cm4iU0VUIFNUQVRFTUVOVCBtYXhfc3RhdGVtZW50X3RpbWU9JGVpIEZPUiAkRyI7ZWxzZWlmKHByZWdfbWF0Y2goJ35eKFNFTEVDVFxiKSguKyl+aXMnLCRHLCRDKSlyZXR1cm4iJENbMV0gLyorIE1BWF9FWEVDVVRJT05fVElNRSgiLigkZWkqMTAwMCkuIikgKi8gJENbMl0iO319ZnVuY3Rpb24KY29udmVydFNlYXJjaCgkdiwkWCwkbyl7cmV0dXJuKHByZWdfbWF0Y2goJ35jaGFyfHRleHR8ZW51bXxzZXR+Jywkb1sidHlwZSJdKSYmIXByZWdfbWF0Y2goIn5edXRmOH4iLCRvWyJjb2xsYXRpb24iXSkmJnByZWdfbWF0Y2goJ35bXHg4MC1ceEZGXX4nLCRYWyd2YWwnXSk/IkNPTlZFUlQoJHYgVVNJTkcgIi5jaGFyc2V0KCR0aGlzLT5fY29ubikuIikiOiR2KTt9ZnVuY3Rpb24Kd2FybmluZ3MoKXskSD0kdGhpcy0+X2Nvbm4tPnF1ZXJ5KCJTSE9XIFdBUk5JTkdTIik7aWYoJEgmJiRILT5udW1fcm93cyl7b2Jfc3RhcnQoKTtzZWxlY3QoJEgpO3JldHVybgpvYl9nZXRfY2xlYW4oKTt9fWZ1bmN0aW9uCnRhYmxlSGVscCgkRCl7JF9lPXByZWdfbWF0Y2goJ35NYXJpYURCficsJHRoaXMtPl9jb25uLT5zZXJ2ZXJfaW5mbyk7aWYoaW5mb3JtYXRpb25fc2NoZW1hKERCKSlyZXR1cm4Kc3RydG9sb3dlcigoJF9lPyJpbmZvcm1hdGlvbi1zY2hlbWEtJEQtdGFibGUvIjpzdHJfcmVwbGFjZSgiXyIsIi0iLCREKS4iLXRhYmxlLmh0bWwiKSk7aWYoREI9PSJteXNxbCIpcmV0dXJuKCRfZT8ibXlzcWwkRC10YWJsZS8iOiJzeXN0ZW0tZGF0YWJhc2UuaHRtbCIpO319ZnVuY3Rpb24KaWRmX2VzY2FwZSgkdil7cmV0dXJuImAiLnN0cl9yZXBsYWNlKCJgIiwiYGAiLCR2KS4iYCI7fWZ1bmN0aW9uCnRhYmxlKCR2KXtyZXR1cm4KaWRmX2VzY2FwZSgkdik7fWZ1bmN0aW9uCmNvbm5lY3QoKXtnbG9iYWwkYiwkVSwkR2g7JGc9bmV3Ck1pbl9EQjskS2I9JGItPmNyZWRlbnRpYWxzKCk7aWYoJGctPmNvbm5lY3QoJEtiWzBdLCRLYlsxXSwkS2JbMl0pKXskZy0+c2V0X2NoYXJzZXQoY2hhcnNldCgkZykpOyRnLT5xdWVyeSgiU0VUIHNxbF9xdW90ZV9zaG93X2NyZWF0ZSA9IDEsIGF1dG9jb21taXQgPSAxIik7aWYobWluX3ZlcnNpb24oJzUuNy44JywxMC4yLCRnKSl7JEdoWydTdHJpbmdzJ11bXT0ianNvbiI7JFVbImpzb24iXT00Mjk0OTY3Mjk1O31yZXR1cm4kZzt9JEk9JGctPmVycm9yO2lmKGZ1bmN0aW9uX2V4aXN0cygnaWNvbnYnKSYmIWlzX3V0ZjgoJEkpJiZzdHJsZW4oJFhnPWljb252KCJ3aW5kb3dzLTEyNTAiLCJ1dGYtOCIsJEkpKT5zdHJsZW4oJEkpKSRJPSRYZztyZXR1cm4kSTt9ZnVuY3Rpb24KZ2V0X2RhdGFiYXNlcygkZGQpeyRJPWdldF9zZXNzaW9uKCJkYnMiKTtpZigkST09PW51bGwpeyRHPShtaW5fdmVyc2lvbig1KT8iU0VMRUNUIFNDSEVNQV9OQU1FIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLlNDSEVNQVRBIE9SREVSIEJZIFNDSEVNQV9OQU1FIjoiU0hPVyBEQVRBQkFTRVMiKTskST0oJGRkP3Nsb3dfcXVlcnkoJEcpOmdldF92YWxzKCRHKSk7cmVzdGFydF9zZXNzaW9uKCk7c2V0X3Nlc3Npb24oImRicyIsJEkpO3N0b3Bfc2Vzc2lvbigpO31yZXR1cm4kSTt9ZnVuY3Rpb24KbGltaXQoJEcsJFosJF8sJGhmPTAsJGhoPSIgIil7cmV0dXJuIiAkRyRaIi4oJF8hPT1udWxsPyRoaC4iTElNSVQgJF8iLigkaGY/IiBPRkZTRVQgJGhmIjoiIik6IiIpO31mdW5jdGlvbgpsaW1pdDEoJFEsJEcsJFosJGhoPSJcbiIpe3JldHVybgpsaW1pdCgkRywkWiwxLDAsJGhoKTt9ZnVuY3Rpb24KZGJfY29sbGF0aW9uKCRsLCRsYil7Z2xvYmFsJGc7JEk9bnVsbDskaT0kZy0+cmVzdWx0KCJTSE9XIENSRUFURSBEQVRBQkFTRSAiLmlkZl9lc2NhcGUoJGwpLDEpO2lmKHByZWdfbWF0Y2goJ34gQ09MTEFURSAoW14gXSspficsJGksJEMpKSRJPSRDWzFdO2Vsc2VpZihwcmVnX21hdGNoKCd+IENIQVJBQ1RFUiBTRVQgKFteIF0rKX4nLCRpLCRDKSkkST0kbGJbJENbMV1dWy0xXTtyZXR1cm4kSTt9ZnVuY3Rpb24KZW5naW5lcygpeyRJPWFycmF5KCk7Zm9yZWFjaChnZXRfcm93cygiU0hPVyBFTkdJTkVTIilhcyRKKXtpZihwcmVnX21hdGNoKCJ+WUVTfERFRkFVTFR+IiwkSlsiU3VwcG9ydCJdKSkkSVtdPSRKWyJFbmdpbmUiXTt9cmV0dXJuJEk7fWZ1bmN0aW9uCmxvZ2dlZF91c2VyKCl7Z2xvYmFsJGc7cmV0dXJuJGctPnJlc3VsdCgiU0VMRUNUIFVTRVIoKSIpO31mdW5jdGlvbgp0YWJsZXNfbGlzdCgpe3JldHVybgpnZXRfa2V5X3ZhbHMobWluX3ZlcnNpb24oNSk/IlNFTEVDVCBUQUJMRV9OQU1FLCBUQUJMRV9UWVBFIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLlRBQkxFUyBXSEVSRSBUQUJMRV9TQ0hFTUEgPSBEQVRBQkFTRSgpIE9SREVSIEJZIFRBQkxFX05BTUUiOiJTSE9XIFRBQkxFUyIpO31mdW5jdGlvbgpjb3VudF90YWJsZXMoJGspeyRJPWFycmF5KCk7Zm9yZWFjaCgkawphcyRsKSRJWyRsXT1jb3VudChnZXRfdmFscygiU0hPVyBUQUJMRVMgSU4gIi5pZGZfZXNjYXBlKCRsKSkpO3JldHVybiRJO31mdW5jdGlvbgp0YWJsZV9zdGF0dXMoJEQ9IiIsJFNjPWZhbHNlKXskST1hcnJheSgpO2ZvcmVhY2goZ2V0X3Jvd3MoJFNjJiZtaW5fdmVyc2lvbig1KT8iU0VMRUNUIFRBQkxFX05BTUUgQVMgTmFtZSwgRU5HSU5FIEFTIEVuZ2luZSwgVEFCTEVfQ09NTUVOVCBBUyBDb21tZW50IEZST00gaW5mb3JtYXRpb25fc2NoZW1hLlRBQkxFUyBXSEVSRSBUQUJMRV9TQ0hFTUEgPSBEQVRBQkFTRSgpICIuKCREIT0iIj8iQU5EIFRBQkxFX05BTUUgPSAiLnEoJEQpOiJPUkRFUiBCWSBOYW1lIik6IlNIT1cgVEFCTEUgU1RBVFVTIi4oJEQhPSIiPyIgTElLRSAiLnEoYWRkY3NsYXNoZXMoJEQsIiVfXFwiKSk6IiIpKWFzJEope2lmKCRKWyJFbmdpbmUiXT09Iklubm9EQiIpJEpbIkNvbW1lbnQiXT1wcmVnX3JlcGxhY2UoJ34oPzooLispOyApP0lubm9EQiBmcmVlOiAuKn4nLCdcMScsJEpbIkNvbW1lbnQiXSk7aWYoIWlzc2V0KCRKWyJFbmdpbmUiXSkpJEpbIkNvbW1lbnQiXT0iIjtpZigkRCE9IiIpcmV0dXJuJEo7JElbJEpbIk5hbWUiXV09JEo7fXJldHVybiRJO31mdW5jdGlvbgppc192aWV3KCRSKXtyZXR1cm4kUlsiRW5naW5lIl09PT1udWxsO31mdW5jdGlvbgpma19zdXBwb3J0KCRSKXtyZXR1cm4KcHJlZ19tYXRjaCgnfklubm9EQnxJQk1EQjJJfmknLCRSWyJFbmdpbmUiXSl8fChwcmVnX21hdGNoKCd+TkRCfmknLCRSWyJFbmdpbmUiXSkmJm1pbl92ZXJzaW9uKDUuNikpO31mdW5jdGlvbgpmaWVsZHMoJFEpeyRJPWFycmF5KCk7Zm9yZWFjaChnZXRfcm93cygiU0hPVyBGVUxMIENPTFVNTlMgRlJPTSAiLnRhYmxlKCRRKSlhcyRKKXtwcmVnX21hdGNoKCd+XihbXiggXSspKD86XCgoLispXCkpPyggdW5zaWduZWQpPyggemVyb2ZpbGwpPyR+JywkSlsiVHlwZSJdLCRDKTskSVskSlsiRmllbGQiXV09YXJyYXkoImZpZWxkIj0+JEpbIkZpZWxkIl0sImZ1bGxfdHlwZSI9PiRKWyJUeXBlIl0sInR5cGUiPT4kQ1sxXSwibGVuZ3RoIj0+JENbMl0sInVuc2lnbmVkIj0+bHRyaW0oJENbM10uJENbNF0pLCJkZWZhdWx0Ij0+KCRKWyJEZWZhdWx0Il0hPSIifHxwcmVnX21hdGNoKCJ+Y2hhcnxzZXR+IiwkQ1sxXSk/KHByZWdfbWF0Y2goJ350ZXh0ficsJENbMV0pP3N0cmlwc2xhc2hlcyhwcmVnX3JlcGxhY2UoIn5eJyguKiknXCR+IiwnXDEnLCRKWyJEZWZhdWx0Il0pKTokSlsiRGVmYXVsdCJdKTpudWxsKSwibnVsbCI9PigkSlsiTnVsbCJdPT0iWUVTIiksImF1dG9faW5jcmVtZW50Ij0+KCRKWyJFeHRyYSJdPT0iYXV0b19pbmNyZW1lbnQiKSwib25fdXBkYXRlIj0+KHByZWdfbWF0Y2goJ35eb24gdXBkYXRlICguKyl+aScsJEpbIkV4dHJhIl0sJEMpPyRDWzFdOiIiKSwiY29sbGF0aW9uIj0+JEpbIkNvbGxhdGlvbiJdLCJwcml2aWxlZ2VzIj0+YXJyYXlfZmxpcChwcmVnX3NwbGl0KCd+LCAqficsJEpbIlByaXZpbGVnZXMiXSkpLCJjb21tZW50Ij0+JEpbIkNvbW1lbnQiXSwicHJpbWFyeSI9PigkSlsiS2V5Il09PSJQUkkiKSwiZ2VuZXJhdGVkIj0+cHJlZ19tYXRjaCgnfl4oVklSVFVBTHxQRVJTSVNURU5UfFNUT1JFRCl+JywkSlsiRXh0cmEiXSksKTt9cmV0dXJuJEk7fWZ1bmN0aW9uCmluZGV4ZXMoJFEsJGg9bnVsbCl7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF9yb3dzKCJTSE9XIElOREVYIEZST00gIi50YWJsZSgkUSksJGgpYXMkSil7JEQ9JEpbIktleV9uYW1lIl07JElbJERdWyJ0eXBlIl09KCREPT0iUFJJTUFSWSI/IlBSSU1BUlkiOigkSlsiSW5kZXhfdHlwZSJdPT0iRlVMTFRFWFQiPyJGVUxMVEVYVCI6KCRKWyJOb25fdW5pcXVlIl0/KCRKWyJJbmRleF90eXBlIl09PSJTUEFUSUFMIj8iU1BBVElBTCI6IklOREVYIik6IlVOSVFVRSIpKSk7JElbJERdWyJjb2x1bW5zIl1bXT0kSlsiQ29sdW1uX25hbWUiXTskSVskRF1bImxlbmd0aHMiXVtdPSgkSlsiSW5kZXhfdHlwZSJdPT0iU1BBVElBTCI/bnVsbDokSlsiU3ViX3BhcnQiXSk7JElbJERdWyJkZXNjcyJdW109bnVsbDt9cmV0dXJuJEk7fWZ1bmN0aW9uCmZvcmVpZ25fa2V5cygkUSl7Z2xvYmFsJGcsJHBmO3N0YXRpYyRaZj0nKD86YCg/OlteYF18YGApK2B8Iig/OlteIl18IiIpKyIpJzskST1hcnJheSgpOyRJYj0kZy0+cmVzdWx0KCJTSE9XIENSRUFURSBUQUJMRSAiLnRhYmxlKCRRKSwxKTtpZigkSWIpe3ByZWdfbWF0Y2hfYWxsKCJ+Q09OU1RSQUlOVCAoJFpmKSBGT1JFSUdOIEtFWSA/XFwoKCg/OiRaZiw/ID8pKylcXCkgUkVGRVJFTkNFUyAoJFpmKSg/OlxcLigkWmYpKT8gXFwoKCg/OiRaZiw/ID8pKylcXCkoPzogT04gREVMRVRFICgkcGYpKT8oPzogT04gVVBEQVRFICgkcGYpKT9+IiwkSWIsJENlLFBSRUdfU0VUX09SREVSKTtmb3JlYWNoKCRDZQphcyRDKXtwcmVnX21hdGNoX2FsbCgifiRaZn4iLCRDWzJdLCR2aCk7cHJlZ19tYXRjaF9hbGwoIn4kWmZ+IiwkQ1s1XSwkV2gpOyRJW2lkZl91bmVzY2FwZSgkQ1sxXSldPWFycmF5KCJkYiI9PmlkZl91bmVzY2FwZSgkQ1s0XSE9IiI/JENbM106JENbNF0pLCJ0YWJsZSI9PmlkZl91bmVzY2FwZSgkQ1s0XSE9IiI/JENbNF06JENbM10pLCJzb3VyY2UiPT5hcnJheV9tYXAoJ2lkZl91bmVzY2FwZScsJHZoWzBdKSwidGFyZ2V0Ij0+YXJyYXlfbWFwKCdpZGZfdW5lc2NhcGUnLCRXaFswXSksIm9uX2RlbGV0ZSI9PigkQ1s2XT8kQ1s2XToiUkVTVFJJQ1QiKSwib25fdXBkYXRlIj0+KCRDWzddPyRDWzddOiJSRVNUUklDVCIpLCk7fX1yZXR1cm4kSTt9ZnVuY3Rpb24KdmlldygkRCl7Z2xvYmFsJGc7cmV0dXJuCmFycmF5KCJzZWxlY3QiPT5wcmVnX3JlcGxhY2UoJ35eKD86W15gXXxgW15gXSpgKSpccytBU1xzK35pc1UnLCcnLCRnLT5yZXN1bHQoIlNIT1cgQ1JFQVRFIFZJRVcgIi50YWJsZSgkRCksMSkpKTt9ZnVuY3Rpb24KY29sbGF0aW9ucygpeyRJPWFycmF5KCk7Zm9yZWFjaChnZXRfcm93cygiU0hPVyBDT0xMQVRJT04iKWFzJEope2lmKCRKWyJEZWZhdWx0Il0pJElbJEpbIkNoYXJzZXQiXV1bLTFdPSRKWyJDb2xsYXRpb24iXTtlbHNlJElbJEpbIkNoYXJzZXQiXV1bXT0kSlsiQ29sbGF0aW9uIl07fWtzb3J0KCRJKTtmb3JlYWNoKCRJCmFzJHo9PiRYKWFzb3J0KCRJWyR6XSk7cmV0dXJuJEk7fWZ1bmN0aW9uCmluZm9ybWF0aW9uX3NjaGVtYSgkbCl7cmV0dXJuKG1pbl92ZXJzaW9uKDUpJiYkbD09ImluZm9ybWF0aW9uX3NjaGVtYSIpfHwobWluX3ZlcnNpb24oNS41KSYmJGw9PSJwZXJmb3JtYW5jZV9zY2hlbWEiKTt9ZnVuY3Rpb24KZXJyb3IoKXtnbG9iYWwkZztyZXR1cm4KaChwcmVnX3JlcGxhY2UoJ35eWW91IGhhdmUgYW4gZXJyb3IuKnN5bnRheCB0byB1c2V+VScsIlN5bnRheCBlcnJvciIsJGctPmVycm9yKSk7fWZ1bmN0aW9uCmNyZWF0ZV9kYXRhYmFzZSgkbCwkZCl7cmV0dXJuCnF1ZXJpZXMoIkNSRUFURSBEQVRBQkFTRSAiLmlkZl9lc2NhcGUoJGwpLigkZD8iIENPTExBVEUgIi5xKCRkKToiIikpO31mdW5jdGlvbgpkcm9wX2RhdGFiYXNlcygkayl7JEk9YXBwbHlfcXVlcmllcygiRFJPUCBEQVRBQkFTRSIsJGssJ2lkZl9lc2NhcGUnKTtyZXN0YXJ0X3Nlc3Npb24oKTtzZXRfc2Vzc2lvbigiZGJzIixudWxsKTtyZXR1cm4kSTt9ZnVuY3Rpb24KcmVuYW1lX2RhdGFiYXNlKCRELCRkKXskST1mYWxzZTtpZihjcmVhdGVfZGF0YWJhc2UoJEQsJGQpKXskUz1hcnJheSgpOyRZaT1hcnJheSgpO2ZvcmVhY2godGFibGVzX2xpc3QoKWFzJFE9PiRUKXtpZigkVD09J1ZJRVcnKSRZaVtdPSRRO2Vsc2UkU1tdPSRRO30kST0oISRTJiYhJFlpKXx8bW92ZV90YWJsZXMoJFMsJFlpLCREKTtkcm9wX2RhdGFiYXNlcygkST9hcnJheShEQik6YXJyYXkoKSk7fXJldHVybiRJO31mdW5jdGlvbgphdXRvX2luY3JlbWVudCgpeyRMYT0iIFBSSU1BUlkgS0VZIjtpZigkX0dFVFsiY3JlYXRlIl0hPSIiJiYkX1BPU1RbImF1dG9faW5jcmVtZW50X2NvbCJdKXtmb3JlYWNoKGluZGV4ZXMoJF9HRVRbImNyZWF0ZSJdKWFzJHcpe2lmKGluX2FycmF5KCRfUE9TVFsiZmllbGRzIl1bJF9QT1NUWyJhdXRvX2luY3JlbWVudF9jb2wiXV1bIm9yaWciXSwkd1siY29sdW1ucyJdLHRydWUpKXskTGE9IiI7YnJlYWs7fWlmKCR3WyJ0eXBlIl09PSJQUklNQVJZIikkTGE9IiBVTklRVUUiO319cmV0dXJuIiBBVVRPX0lOQ1JFTUVOVCRMYSI7fWZ1bmN0aW9uCmFsdGVyX3RhYmxlKCRRLCRELCRwLCRmZCwkcmIsJHljLCRkLCRLYSwkVGYpeyRjPWFycmF5KCk7Zm9yZWFjaCgkcAphcyRvKSRjW109KCRvWzFdPygkUSE9IiI/KCRvWzBdIT0iIj8iQ0hBTkdFICIuaWRmX2VzY2FwZSgkb1swXSk6IkFERCIpOiIgIikuIiAiLmltcGxvZGUoJG9bMV0pLigkUSE9IiI/JG9bMl06IiIpOiJEUk9QICIuaWRmX2VzY2FwZSgkb1swXSkpOyRjPWFycmF5X21lcmdlKCRjLCRmZCk7JE89KCRyYiE9PW51bGw/IiBDT01NRU5UPSIucSgkcmIpOiIiKS4oJHljPyIgRU5HSU5FPSIucSgkeWMpOiIiKS4oJGQ/IiBDT0xMQVRFICIucSgkZCk6IiIpLigkS2EhPSIiPyIgQVVUT19JTkNSRU1FTlQ9JEthIjoiIik7aWYoJFE9PSIiKXJldHVybgpxdWVyaWVzKCJDUkVBVEUgVEFCTEUgIi50YWJsZSgkRCkuIiAoXG4iLmltcGxvZGUoIixcbiIsJGMpLiJcbikkTyRUZiIpO2lmKCRRIT0kRCkkY1tdPSJSRU5BTUUgVE8gIi50YWJsZSgkRCk7aWYoJE8pJGNbXT1sdHJpbSgkTyk7cmV0dXJuKCRjfHwkVGY/cXVlcmllcygiQUxURVIgVEFCTEUgIi50YWJsZSgkUSkuIlxuIi5pbXBsb2RlKCIsXG4iLCRjKS4kVGYpOnRydWUpO31mdW5jdGlvbgphbHRlcl9pbmRleGVzKCRRLCRjKXtmb3JlYWNoKCRjCmFzJHo9PiRYKSRjWyR6XT0oJFhbMl09PSJEUk9QIj8iXG5EUk9QIElOREVYICIuaWRmX2VzY2FwZSgkWFsxXSk6IlxuQUREICRYWzBdICIuKCRYWzBdPT0iUFJJTUFSWSI/IktFWSAiOiIiKS4oJFhbMV0hPSIiP2lkZl9lc2NhcGUoJFhbMV0pLiIgIjoiIikuIigiLmltcGxvZGUoIiwgIiwkWFsyXSkuIikiKTtyZXR1cm4KcXVlcmllcygiQUxURVIgVEFCTEUgIi50YWJsZSgkUSkuaW1wbG9kZSgiLCIsJGMpKTt9ZnVuY3Rpb24KdHJ1bmNhdGVfdGFibGVzKCRTKXtyZXR1cm4KYXBwbHlfcXVlcmllcygiVFJVTkNBVEUgVEFCTEUiLCRTKTt9ZnVuY3Rpb24KZHJvcF92aWV3cygkWWkpe3JldHVybgpxdWVyaWVzKCJEUk9QIFZJRVcgIi5pbXBsb2RlKCIsICIsYXJyYXlfbWFwKCd0YWJsZScsJFlpKSkpO31mdW5jdGlvbgpkcm9wX3RhYmxlcygkUyl7cmV0dXJuCnF1ZXJpZXMoIkRST1AgVEFCTEUgIi5pbXBsb2RlKCIsICIsYXJyYXlfbWFwKCd0YWJsZScsJFMpKSk7fWZ1bmN0aW9uCm1vdmVfdGFibGVzKCRTLCRZaSwkV2gpe2dsb2JhbCRnOyRKZz1hcnJheSgpO2ZvcmVhY2goJFMKYXMkUSkkSmdbXT10YWJsZSgkUSkuIiBUTyAiLmlkZl9lc2NhcGUoJFdoKS4iLiIudGFibGUoJFEpO2lmKCEkSmd8fHF1ZXJpZXMoIlJFTkFNRSBUQUJMRSAiLmltcGxvZGUoIiwgIiwkSmcpKSl7JFpiPWFycmF5KCk7Zm9yZWFjaCgkWWkKYXMkUSkkWmJbdGFibGUoJFEpXT12aWV3KCRRKTskZy0+c2VsZWN0X2RiKCRXaCk7JGw9aWRmX2VzY2FwZShEQik7Zm9yZWFjaCgkWmIKYXMkRD0+JFhpKXtpZighcXVlcmllcygiQ1JFQVRFIFZJRVcgJEQgQVMgIi5zdHJfcmVwbGFjZSgiICRsLiIsIiAiLCRYaVsic2VsZWN0Il0pKXx8IXF1ZXJpZXMoIkRST1AgVklFVyAkbC4kRCIpKXJldHVybgpmYWxzZTt9cmV0dXJuCnRydWU7fXJldHVybgpmYWxzZTt9ZnVuY3Rpb24KY29weV90YWJsZXMoJFMsJFlpLCRXaCl7cXVlcmllcygiU0VUIHNxbF9tb2RlID0gJ05PX0FVVE9fVkFMVUVfT05fWkVSTyciKTtmb3JlYWNoKCRTCmFzJFEpeyREPSgkV2g9PURCP3RhYmxlKCJjb3B5XyRRIik6aWRmX2VzY2FwZSgkV2gpLiIuIi50YWJsZSgkUSkpO2lmKCgkX1BPU1RbIm92ZXJ3cml0ZSJdJiYhcXVlcmllcygiXG5EUk9QIFRBQkxFIElGIEVYSVNUUyAkRCIpKXx8IXF1ZXJpZXMoIkNSRUFURSBUQUJMRSAkRCBMSUtFICIudGFibGUoJFEpKXx8IXF1ZXJpZXMoIklOU0VSVCBJTlRPICREIFNFTEVDVCAqIEZST00gIi50YWJsZSgkUSkpKXJldHVybgpmYWxzZTtmb3JlYWNoKGdldF9yb3dzKCJTSE9XIFRSSUdHRVJTIExJS0UgIi5xKGFkZGNzbGFzaGVzKCRRLCIlX1xcIikpKWFzJEopeyR3aT0kSlsiVHJpZ2dlciJdO2lmKCFxdWVyaWVzKCJDUkVBVEUgVFJJR0dFUiAiLigkV2g9PURCP2lkZl9lc2NhcGUoImNvcHlfJHdpIik6aWRmX2VzY2FwZSgkV2gpLiIuIi5pZGZfZXNjYXBlKCR3aSkpLiIgJEpbVGltaW5nXSAkSltFdmVudF0gT04gJEQgRk9SIEVBQ0ggUk9XXG4kSltTdGF0ZW1lbnRdOyIpKXJldHVybgpmYWxzZTt9fWZvcmVhY2goJFlpCmFzJFEpeyREPSgkV2g9PURCP3RhYmxlKCJjb3B5XyRRIik6aWRmX2VzY2FwZSgkV2gpLiIuIi50YWJsZSgkUSkpOyRYaT12aWV3KCRRKTtpZigoJF9QT1NUWyJvdmVyd3JpdGUiXSYmIXF1ZXJpZXMoIkRST1AgVklFVyBJRiBFWElTVFMgJEQiKSl8fCFxdWVyaWVzKCJDUkVBVEUgVklFVyAkRCBBUyAkWGlbc2VsZWN0XSIpKXJldHVybgpmYWxzZTt9cmV0dXJuCnRydWU7fWZ1bmN0aW9uCnRyaWdnZXIoJEQpe2lmKCREPT0iIilyZXR1cm4KYXJyYXkoKTskSz1nZXRfcm93cygiU0hPVyBUUklHR0VSUyBXSEVSRSBgVHJpZ2dlcmAgPSAiLnEoJEQpKTtyZXR1cm4KcmVzZXQoJEspO31mdW5jdGlvbgp0cmlnZ2VycygkUSl7JEk9YXJyYXkoKTtmb3JlYWNoKGdldF9yb3dzKCJTSE9XIFRSSUdHRVJTIExJS0UgIi5xKGFkZGNzbGFzaGVzKCRRLCIlX1xcIikpKWFzJEopJElbJEpbIlRyaWdnZXIiXV09YXJyYXkoJEpbIlRpbWluZyJdLCRKWyJFdmVudCJdKTtyZXR1cm4kSTt9ZnVuY3Rpb24KdHJpZ2dlcl9vcHRpb25zKCl7cmV0dXJuCmFycmF5KCJUaW1pbmciPT5hcnJheSgiQkVGT1JFIiwiQUZURVIiKSwiRXZlbnQiPT5hcnJheSgiSU5TRVJUIiwiVVBEQVRFIiwiREVMRVRFIiksIlR5cGUiPT5hcnJheSgiRk9SIEVBQ0ggUk9XIiksKTt9ZnVuY3Rpb24Kcm91dGluZSgkRCwkVCl7Z2xvYmFsJGcsJF9jLCRUZCwkVTskQmE9YXJyYXkoImJvb2wiLCJib29sZWFuIiwiaW50ZWdlciIsImRvdWJsZSBwcmVjaXNpb24iLCJyZWFsIiwiZGVjIiwibnVtZXJpYyIsImZpeGVkIiwibmF0aW9uYWwgY2hhciIsIm5hdGlvbmFsIHZhcmNoYXIiKTskd2g9Iig/Olxcc3wvXFwqW1xzXFNdKj9cXCovfCg/OiN8LS0gKVteXG5dKlxuP3wtLVxyP1xuKSI7JEFpPSIoKCIuaW1wbG9kZSgifCIsYXJyYXlfbWVyZ2UoYXJyYXlfa2V5cygkVSksJEJhKSkuIilcXGIoPzpcXHMqXFwoKCg/OlteJ1wiKV18JF9jKSsrKVxcKSk/XFxzKih6ZXJvZmlsbFxccyopPyh1bnNpZ25lZCg/Olxccyt6ZXJvZmlsbCk/KT8pKD86XFxzKig/OkNIQVJTRVR8Q0hBUkFDVEVSXFxzK1NFVClcXHMqWydcIl0/KFteJ1wiXFxzLF0rKVsnXCJdPyk/IjskWmY9IiR3aCooIi4oJFQ9PSJGVU5DVElPTiI/IiI6JFRkKS4iKT9cXHMqKD86YCgoPzpbXmBdfGBgKSopYFxccyp8XFxiKFxcUyspXFxzKykkQWkiOyRpPSRnLT5yZXN1bHQoIlNIT1cgQ1JFQVRFICRUICIuaWRmX2VzY2FwZSgkRCksMik7cHJlZ19tYXRjaCgiflxcKCgoPzokWmZcXHMqLD8pKilcXClcXHMqIi4oJFQ9PSJGVU5DVElPTiI/IlJFVFVSTlNcXHMrJEFpXFxzKyI6IiIpLiIoLiopfmlzIiwkaSwkQyk7JHA9YXJyYXkoKTtwcmVnX21hdGNoX2FsbCgifiRaZlxccyosP35pcyIsJENbMV0sJENlLFBSRUdfU0VUX09SREVSKTtmb3JlYWNoKCRDZQphcyROZikkcFtdPWFycmF5KCJmaWVsZCI9PnN0cl9yZXBsYWNlKCJgYCIsImAiLCROZlsyXSkuJE5mWzNdLCJ0eXBlIj0+c3RydG9sb3dlcigkTmZbNV0pLCJsZW5ndGgiPT5wcmVnX3JlcGxhY2VfY2FsbGJhY2soIn4kX2N+cyIsJ25vcm1hbGl6ZV9lbnVtJywkTmZbNl0pLCJ1bnNpZ25lZCI9PnN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCd+XHMrficsJyAnLHRyaW0oIiROZls4XSAkTmZbN10iKSkpLCJudWxsIj0+MSwiZnVsbF90eXBlIj0+JE5mWzRdLCJpbm91dCI9PnN0cnRvdXBwZXIoJE5mWzFdKSwiY29sbGF0aW9uIj0+c3RydG9sb3dlcigkTmZbOV0pLCk7aWYoJFQhPSJGVU5DVElPTiIpcmV0dXJuCmFycmF5KCJmaWVsZHMiPT4kcCwiZGVmaW5pdGlvbiI9PiRDWzExXSk7cmV0dXJuCmFycmF5KCJmaWVsZHMiPT4kcCwicmV0dXJucyI9PmFycmF5KCJ0eXBlIj0+JENbMTJdLCJsZW5ndGgiPT4kQ1sxM10sInVuc2lnbmVkIj0+JENbMTVdLCJjb2xsYXRpb24iPT4kQ1sxNl0pLCJkZWZpbml0aW9uIj0+JENbMTddLCJsYW5ndWFnZSI9PiJTUUwiLCk7fWZ1bmN0aW9uCnJvdXRpbmVzKCl7cmV0dXJuCmdldF9yb3dzKCJTRUxFQ1QgUk9VVElORV9OQU1FIEFTIFNQRUNJRklDX05BTUUsIFJPVVRJTkVfTkFNRSwgUk9VVElORV9UWVBFLCBEVERfSURFTlRJRklFUiBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5ST1VUSU5FUyBXSEVSRSBST1VUSU5FX1NDSEVNQSA9ICIucShEQikpO31mdW5jdGlvbgpyb3V0aW5lX2xhbmd1YWdlcygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpyb3V0aW5lX2lkKCRELCRKKXtyZXR1cm4KaWRmX2VzY2FwZSgkRCk7fWZ1bmN0aW9uCmxhc3RfaWQoKXtnbG9iYWwkZztyZXR1cm4kZy0+cmVzdWx0KCJTRUxFQ1QgTEFTVF9JTlNFUlRfSUQoKSIpO31mdW5jdGlvbgpleHBsYWluKCRnLCRHKXtyZXR1cm4kZy0+cXVlcnkoIkVYUExBSU4gIi4obWluX3ZlcnNpb24oNS4xKSYmIW1pbl92ZXJzaW9uKDUuNyk/IlBBUlRJVElPTlMgIjoiIikuJEcpO31mdW5jdGlvbgpmb3VuZF9yb3dzKCRSLCRaKXtyZXR1cm4oJFp8fCRSWyJFbmdpbmUiXSE9Iklubm9EQiI/bnVsbDokUlsiUm93cyJdKTt9ZnVuY3Rpb24KdHlwZXMoKXtyZXR1cm4KYXJyYXkoKTt9ZnVuY3Rpb24Kc2NoZW1hcygpe3JldHVybgphcnJheSgpO31mdW5jdGlvbgpnZXRfc2NoZW1hKCl7cmV0dXJuIiI7fWZ1bmN0aW9uCnNldF9zY2hlbWEoJFpnLCRoPW51bGwpe3JldHVybgp0cnVlO31mdW5jdGlvbgpjcmVhdGVfc3FsKCRRLCRLYSwkSGgpe2dsb2JhbCRnOyRJPSRnLT5yZXN1bHQoIlNIT1cgQ1JFQVRFIFRBQkxFICIudGFibGUoJFEpLDEpO2lmKCEkS2EpJEk9cHJlZ19yZXBsYWNlKCd+IEFVVE9fSU5DUkVNRU5UPVxkK34nLCcnLCRJKTtyZXR1cm4kSTt9ZnVuY3Rpb24KdHJ1bmNhdGVfc3FsKCRRKXtyZXR1cm4iVFJVTkNBVEUgIi50YWJsZSgkUSk7fWZ1bmN0aW9uCnVzZV9zcWwoJGope3JldHVybiJVU0UgIi5pZGZfZXNjYXBlKCRqKTt9ZnVuY3Rpb24KdHJpZ2dlcl9zcWwoJFEpeyRJPSIiO2ZvcmVhY2goZ2V0X3Jvd3MoIlNIT1cgVFJJR0dFUlMgTElLRSAiLnEoYWRkY3NsYXNoZXMoJFEsIiVfXFwiKSksbnVsbCwiLS0gIilhcyRKKSRJLj0iXG5DUkVBVEUgVFJJR0dFUiAiLmlkZl9lc2NhcGUoJEpbIlRyaWdnZXIiXSkuIiAkSltUaW1pbmddICRKW0V2ZW50XSBPTiAiLnRhYmxlKCRKWyJUYWJsZSJdKS4iIEZPUiBFQUNIIFJPV1xuJEpbU3RhdGVtZW50XTs7XG4iO3JldHVybiRJO31mdW5jdGlvbgpzaG93X3ZhcmlhYmxlcygpe3JldHVybgpnZXRfa2V5X3ZhbHMoIlNIT1cgVkFSSUFCTEVTIik7fWZ1bmN0aW9uCnByb2Nlc3NfbGlzdCgpe3JldHVybgpnZXRfcm93cygiU0hPVyBGVUxMIFBST0NFU1NMSVNUIik7fWZ1bmN0aW9uCnNob3dfc3RhdHVzKCl7cmV0dXJuCmdldF9rZXlfdmFscygiU0hPVyBTVEFUVVMiKTt9ZnVuY3Rpb24KY29udmVydF9maWVsZCgkbyl7aWYocHJlZ19tYXRjaCgifmJpbmFyeX4iLCRvWyJ0eXBlIl0pKXJldHVybiJIRVgoIi5pZGZfZXNjYXBlKCRvWyJmaWVsZCJdKS4iKSI7aWYoJG9bInR5cGUiXT09ImJpdCIpcmV0dXJuIkJJTigiLmlkZl9lc2NhcGUoJG9bImZpZWxkIl0pLiIgKyAwKSI7aWYocHJlZ19tYXRjaCgifmdlb21ldHJ5fHBvaW50fGxpbmVzdHJpbmd8cG9seWdvbn4iLCRvWyJ0eXBlIl0pKXJldHVybihtaW5fdmVyc2lvbig4KT8iU1RfIjoiIikuIkFzV0tUKCIuaWRmX2VzY2FwZSgkb1siZmllbGQiXSkuIikiO31mdW5jdGlvbgp1bmNvbnZlcnRfZmllbGQoJG8sJEkpe2lmKHByZWdfbWF0Y2goIn5iaW5hcnl+Iiwkb1sidHlwZSJdKSkkST0iVU5IRVgoJEkpIjtpZigkb1sidHlwZSJdPT0iYml0IikkST0iQ09OVigkSSwgMiwgMTApICsgMCI7aWYocHJlZ19tYXRjaCgifmdlb21ldHJ5fHBvaW50fGxpbmVzdHJpbmd8cG9seWdvbn4iLCRvWyJ0eXBlIl0pKSRJPShtaW5fdmVyc2lvbig4KT8iU1RfIjoiIikuIkdlb21Gcm9tVGV4dCgkSSwgU1JJRCgkb1tmaWVsZF0pKSI7cmV0dXJuJEk7fWZ1bmN0aW9uCnN1cHBvcnQoJFRjKXtyZXR1cm4hcHJlZ19tYXRjaCgifnNjaGVtZXxzZXF1ZW5jZXx0eXBlfHZpZXdfdHJpZ2dlcnxtYXRlcmlhbGl6ZWR2aWV3Ii4obWluX3ZlcnNpb24oOCk/IiI6InxkZXNjaWR4Ii4obWluX3ZlcnNpb24oNS4xKT8iIjoifGV2ZW50fHBhcnRpdGlvbmluZyIuKG1pbl92ZXJzaW9uKDUpPyIiOiJ8cm91dGluZXx0cmlnZ2VyfHZpZXciKSkpLiJ+IiwkVGMpO31mdW5jdGlvbgpraWxsX3Byb2Nlc3MoJFgpe3JldHVybgpxdWVyaWVzKCJLSUxMICIubnVtYmVyKCRYKSk7fWZ1bmN0aW9uCmNvbm5lY3Rpb25faWQoKXtyZXR1cm4iU0VMRUNUIENPTk5FQ1RJT05fSUQoKSI7fWZ1bmN0aW9uCm1heF9jb25uZWN0aW9ucygpe2dsb2JhbCRnO3JldHVybiRnLT5yZXN1bHQoIlNFTEVDVCBAQG1heF9jb25uZWN0aW9ucyIpO31mdW5jdGlvbgpkcml2ZXJfY29uZmlnKCl7JFU9YXJyYXkoKTskR2g9YXJyYXkoKTtmb3JlYWNoKGFycmF5KCdOdW1iZXJzJz0+YXJyYXkoInRpbnlpbnQiPT4zLCJzbWFsbGludCI9PjUsIm1lZGl1bWludCI9PjgsImludCI9PjEwLCJiaWdpbnQiPT4yMCwiZGVjaW1hbCI9PjY2LCJmbG9hdCI9PjEyLCJkb3VibGUiPT4yMSksJ0RhdGUgYW5kIHRpbWUnPT5hcnJheSgiZGF0ZSI9PjEwLCJkYXRldGltZSI9PjE5LCJ0aW1lc3RhbXAiPT4xOSwidGltZSI9PjEwLCJ5ZWFyIj0+NCksJ1N0cmluZ3MnPT5hcnJheSgiY2hhciI9PjI1NSwidmFyY2hhciI9PjY1NTM1LCJ0aW55dGV4dCI9PjI1NSwidGV4dCI9PjY1NTM1LCJtZWRpdW10ZXh0Ij0+MTY3NzcyMTUsImxvbmd0ZXh0Ij0+NDI5NDk2NzI5NSksJ0xpc3RzJz0+YXJyYXkoImVudW0iPT42NTUzNSwic2V0Ij0+NjQpLCdCaW5hcnknPT5hcnJheSgiYml0Ij0+MjAsImJpbmFyeSI9PjI1NSwidmFyYmluYXJ5Ij0+NjU1MzUsInRpbnlibG9iIj0+MjU1LCJibG9iIj0+NjU1MzUsIm1lZGl1bWJsb2IiPT4xNjc3NzIxNSwibG9uZ2Jsb2IiPT40Mjk0OTY3Mjk1KSwnR2VvbWV0cnknPT5hcnJheSgiZ2VvbWV0cnkiPT4wLCJwb2ludCI9PjAsImxpbmVzdHJpbmciPT4wLCJwb2x5Z29uIj0+MCwibXVsdGlwb2ludCI9PjAsIm11bHRpbGluZXN0cmluZyI9PjAsIm11bHRpcG9seWdvbiI9PjAsImdlb21ldHJ5Y29sbGVjdGlvbiI9PjApLClhcyR6PT4kWCl7JFUrPSRYOyRHaFskel09YXJyYXlfa2V5cygkWCk7fXJldHVybgphcnJheSgncG9zc2libGVfZHJpdmVycyc9PmFycmF5KCJNeVNRTGkiLCJNeVNRTCIsIlBET19NeVNRTCIpLCdqdXNoJz0+InNxbCIsJ3R5cGVzJz0+JFUsJ3N0cnVjdHVyZWRfdHlwZXMnPT4kR2gsJ3Vuc2lnbmVkJz0+YXJyYXkoInVuc2lnbmVkIiwiemVyb2ZpbGwiLCJ1bnNpZ25lZCB6ZXJvZmlsbCIpLCdvcGVyYXRvcnMnPT5hcnJheSgiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIiE9IiwiTElLRSIsIkxJS0UgJSUiLCJSRUdFWFAiLCJJTiIsIkZJTkRfSU5fU0VUIiwiSVMgTlVMTCIsIk5PVCBMSUtFIiwiTk9UIFJFR0VYUCIsIk5PVCBJTiIsIklTIE5PVCBOVUxMIiwiU1FMIiksJ2Z1bmN0aW9ucyc9PmFycmF5KCJjaGFyX2xlbmd0aCIsImRhdGUiLCJmcm9tX3VuaXh0aW1lIiwibG93ZXIiLCJyb3VuZCIsImZsb29yIiwiY2VpbCIsInNlY190b190aW1lIiwidGltZV90b19zZWMiLCJ1cHBlciIpLCdncm91cGluZyc9PmFycmF5KCJhdmciLCJjb3VudCIsImNvdW50IGRpc3RpbmN0IiwiZ3JvdXBfY29uY2F0IiwibWF4IiwibWluIiwic3VtIiksJ2VkaXRfZnVuY3Rpb25zJz0+YXJyYXkoYXJyYXkoImNoYXIiPT4ibWQ1L3NoYTEvcGFzc3dvcmQvZW5jcnlwdC91dWlkIiwiYmluYXJ5Ij0+Im1kNS9zaGExIiwiZGF0ZXx0aW1lIj0+Im5vdyIsKSxhcnJheShudW1iZXJfdHlwZSgpPT4iKy8tIiwiZGF0ZSI9PiIrIGludGVydmFsLy0gaW50ZXJ2YWwiLCJ0aW1lIj0+ImFkZHRpbWUvc3VidGltZSIsImNoYXJ8dGV4dCI9PiJjb25jYXQiLCkpLCk7fX0kdmI9ZHJpdmVyX2NvbmZpZygpOyRoZz0kdmJbJ3Bvc3NpYmxlX2RyaXZlcnMnXTskeT0kdmJbJ2p1c2gnXTskVT0kdmJbJ3R5cGVzJ107JEdoPSR2Ylsnc3RydWN0dXJlZF90eXBlcyddOyRIaT0kdmJbJ3Vuc2lnbmVkJ107JHVmPSR2Ylsnb3BlcmF0b3JzJ107JG5kPSR2YlsnZnVuY3Rpb25zJ107JHRkPSR2YlsnZ3JvdXBpbmcnXTskcWM9JHZiWydlZGl0X2Z1bmN0aW9ucyddO2lmKCRiLT5vcGVyYXRvcnM9PT1udWxsKSRiLT5vcGVyYXRvcnM9JHVmO2RlZmluZSgiU0VSVkVSIiwkX0dFVFtEUklWRVJdKTtkZWZpbmUoIkRCIiwkX0dFVFsiZGIiXSk7ZGVmaW5lKCJNRSIscHJlZ19yZXBsYWNlKCd+XD8uKn4nLCcnLHJlbGF0aXZlX3VyaSgpKS4nPycuKHNpZCgpP1NJRC4nJic6JycpLihTRVJWRVIhPT1udWxsP0RSSVZFUi4iPSIudXJsZW5jb2RlKFNFUlZFUikuJyYnOicnKS4oaXNzZXQoJF9HRVRbInVzZXJuYW1lIl0pPyJ1c2VybmFtZT0iLnVybGVuY29kZSgkX0dFVFsidXNlcm5hbWUiXSkuJyYnOicnKS4oREIhPSIiPydkYj0nLnVybGVuY29kZShEQikuJyYnLihpc3NldCgkX0dFVFsibnMiXSk/Im5zPSIudXJsZW5jb2RlKCRfR0VUWyJucyJdKS4iJiI6IiIpOicnKSk7JGlhPSI0LjguMSI7ZnVuY3Rpb24KcGFnZV9oZWFkZXIoJGdpLCRuPSIiLCRVYT1hcnJheSgpLCRoaT0iIil7Z2xvYmFsJGNhLCRpYSwkYiwkaWMsJHk7cGFnZV9oZWFkZXJzKCk7aWYoaXNfYWpheCgpJiYkbil7cGFnZV9tZXNzYWdlcygkbik7ZXhpdDt9JGlpPSRnaS4oJGhpIT0iIj8iOiAkaGkiOiIiKTskamk9c3RyaXBfdGFncygkaWkuKFNFUlZFUiE9IiImJlNFUlZFUiE9ImxvY2FsaG9zdCI/aCgiIC0gIi5TRVJWRVIpOiIiKS4iIC0gIi4kYi0+bmFtZSgpKTtlY2hvJzwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiIgZGlyPSJsdHIiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCI+Cjx0aXRsZT4nLCRqaSwnPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJyxoKHByZWdfcmVwbGFjZSgiflxcPy4qfiIsIiIsTUUpLiI/ZmlsZT1kZWZhdWx0LmNzcyZ2ZXJzaW9uPTQuOC4xIiksJyI+Cicsc2NyaXB0X3NyYyhwcmVnX3JlcGxhY2UoIn5cXD8uKn4iLCIiLE1FKS4iP2ZpbGU9ZnVuY3Rpb25zLmpzJnZlcnNpb249NC44LjEiKTtpZigkYi0+aGVhZCgpKXtlY2hvJzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSInLGgocHJlZ19yZXBsYWNlKCJ+XFw/Lip+IiwiIixNRSkuIj9maWxlPWZhdmljb24uaWNvJnZlcnNpb249NC44LjEiKSwnIj4KPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSInLGgocHJlZ19yZXBsYWNlKCJ+XFw/Lip+IiwiIixNRSkuIj9maWxlPWZhdmljb24uaWNvJnZlcnNpb249NC44LjEiKSwnIj4KJztmb3JlYWNoKCRiLT5jc3MoKWFzJE1iKXtlY2hvJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicsaCgkTWIpLCciPgonO319ZWNobycKPGJvZHkgY2xhc3M9Imx0ciBub2pzIj4KJzskcT1nZXRfdGVtcF9kaXIoKS4iL2FkbWluZXIudmVyc2lvbiI7aWYoISRfQ09PS0lFWyJhZG1pbmVyX3ZlcnNpb24iXSYmZnVuY3Rpb25fZXhpc3RzKCdvcGVuc3NsX3ZlcmlmeScpJiZmaWxlX2V4aXN0cygkcSkmJmZpbGVtdGltZSgkcSkrODY0MDA+dGltZSgpKXskV2k9dW5zZXJpYWxpemUoZmlsZV9nZXRfY29udGVudHMoJHEpKTskdGc9Ii0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBd3FXT1Z1RjV1dzcvK1o3MGRqb0sKUmxISVpGWlBPMHVZUmV6cTkwKzdBbWsrRkROZDdLa0w1ZUR2ZSt2SFJKQkxBc3pGLzdYS1hlMTF4d2xpSXNGcwpERldRbHNBQlZaQjNvaXNLQ0JFdUk3MUo0a1BIOGRLR0VXUjlqREhGdzNjV21vSDNQbXFJbVg2RklTV2JHM0I4Cmg3Rkl4M2pFYXc1Y2tWUFZUZW81SlJtLzFEWnpKeGp5RGVuWHZCUS82bzlEZ1pLZU5EZ3h3S3pIK3N3OS9ZQ08KakhucTFjRnBPSUlTekFSbHJITWEvNDNZZmVOUkFtL3RzQlhqU3hlbWJCUG83YVFaTEFXSG1hajUrSzE5SDEwQgpuQ3B6OVkrK2NpcGtWRWlLUkdpaDRaRXZqb0Z5c0VPZFJMajZXaUQvdVVOa3k0eEdlQTZMYUpxaDVYcGtGa2NRCmZRSURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQoiO2lmKG9wZW5zc2xfdmVyaWZ5KCRXaVsidmVyc2lvbiJdLGJhc2U2NF9kZWNvZGUoJFdpWyJzaWduYXR1cmUiXSksJHRnKT09MSkkX0NPT0tJRVsiYWRtaW5lcl92ZXJzaW9uIl09JFdpWyJ2ZXJzaW9uIl07fWVjaG8nPHNjcmlwdCcsbm9uY2UoKSwnPgptaXhpbihkb2N1bWVudC5ib2R5LCB7b25rZXlkb3duOiBib2R5S2V5ZG93biwgb25jbGljazogYm9keUNsaWNrJywoaXNzZXQoJF9DT09LSUVbImFkbWluZXJfdmVyc2lvbiJdKT8iIjoiLCBvbmxvYWQ6IHBhcnRpYWwodmVyaWZ5VmVyc2lvbiwgJyRpYScsICciLmpzX2VzY2FwZShNRSkuIicsICciLmdldF90b2tlbigpLiInKSIpOz8+fSk7CmRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gZG9jdW1lbnQuYm9keS5jbGFzc05hbWUucmVwbGFjZSgvIG5vanMvLCAnIGpzJyk7CnZhciBvZmZsaW5lTWVzc2FnZSA9ICc8P3BocCBlY2hvCmpzX2VzY2FwZSgnWW91IGFyZSBvZmZsaW5lLicpLCdcJzsKdmFyIHRob3VzYW5kc1NlcGFyYXRvciA9IFwnJyxqc19lc2NhcGUoJywnKSwnXCc7Cjwvc2NyaXB0PgoKPGRpdiBpZD0iaGVscCIgY2xhc3M9Imp1c2gtJywkeSwnIGpzb25seSBoaWRkZW4iPjwvZGl2PgonLHNjcmlwdCgibWl4aW4ocXMoJyNoZWxwJyksIHtvbm1vdXNlb3ZlcjogZnVuY3Rpb24gKCkgeyBoZWxwT3BlbiA9IDE7IH0sIG9ubW91c2VvdXQ6IGhlbHBNb3VzZW91dH0pOyIpLCcKPGRpdiBpZD0iY29udGVudCI+Cic7aWYoJFVhIT09bnVsbCl7JEE9c3Vic3RyKHByZWdfcmVwbGFjZSgnflxiKHVzZXJuYW1lfGRifG5zKT1bXiZdKiZ+JywnJyxNRSksMCwtMSk7ZWNobyc8cCBpZD0iYnJlYWRjcnVtYiI+PGEgaHJlZj0iJy5oKCRBPyRBOiIuIikuJyI+Jy4kaWNbRFJJVkVSXS4nPC9hPiAmcmFxdW87ICc7JEE9c3Vic3RyKHByZWdfcmVwbGFjZSgnflxiKGRifG5zKT1bXiZdKiZ+JywnJyxNRSksMCwtMSk7JE09JGItPnNlcnZlck5hbWUoU0VSVkVSKTskTT0oJE0hPSIiPyRNOidTZXJ2ZXInKTtpZigkVWE9PT1mYWxzZSllY2hvIiRNXG4iO2Vsc2V7ZWNobyI8YSBocmVmPSciLmgoJEEpLiInIGFjY2Vzc2tleT0nMScgdGl0bGU9J0FsdCtTaGlmdCsxJz4kTTwvYT4gJnJhcXVvOyAiO2lmKCRfR0VUWyJucyJdIT0iInx8KERCIT0iIiYmaXNfYXJyYXkoJFVhKSkpZWNobyc8YSBocmVmPSInLmgoJEEuIiZkYj0iLnVybGVuY29kZShEQikuKHN1cHBvcnQoInNjaGVtZSIpPyImbnM9IjoiIikpLiciPicuaChEQikuJzwvYT4gJnJhcXVvOyAnO2lmKGlzX2FycmF5KCRVYSkpe2lmKCRfR0VUWyJucyJdIT0iIillY2hvJzxhIGhyZWY9IicuaChzdWJzdHIoTUUsMCwtMSkpLiciPicuaCgkX0dFVFsibnMiXSkuJzwvYT4gJnJhcXVvOyAnO2ZvcmVhY2goJFVhCmFzJHo9PiRYKXskYmM9KGlzX2FycmF5KCRYKT8kWFsxXTpoKCRYKSk7aWYoJGJjIT0iIillY2hvIjxhIGhyZWY9JyIuaChNRS4iJHo9IikudXJsZW5jb2RlKGlzX2FycmF5KCRYKT8kWFswXTokWCkuIic+JGJjPC9hPiAmcmFxdW87ICI7fX1lY2hvIiRnaVxuIjt9fWVjaG8iPGgyPiRpaTwvaDI+XG4iLCI8ZGl2IGlkPSdhamF4c3RhdHVzJyBjbGFzcz0nanNvbmx5IGhpZGRlbic+PC9kaXY+XG4iO3Jlc3RhcnRfc2Vzc2lvbigpO3BhZ2VfbWVzc2FnZXMoJG4pOyRrPSZnZXRfc2Vzc2lvbigiZGJzIik7aWYoREIhPSIiJiYkayYmIWluX2FycmF5KERCLCRrLHRydWUpKSRrPW51bGw7c3RvcF9zZXNzaW9uKCk7ZGVmaW5lKCJQQUdFX0hFQURFUiIsMSk7fWZ1bmN0aW9uCnBhZ2VfaGVhZGVycygpe2dsb2JhbCRiO2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKTtoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlIik7aGVhZGVyKCJYLUZyYW1lLU9wdGlvbnM6IGRlbnkiKTtoZWFkZXIoIlgtWFNTLVByb3RlY3Rpb246IDAiKTtoZWFkZXIoIlgtQ29udGVudC1UeXBlLU9wdGlvbnM6IG5vc25pZmYiKTtoZWFkZXIoIlJlZmVycmVyLVBvbGljeTogb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIik7Zm9yZWFjaCgkYi0+Y3NwKClhcyRMYil7JHpkPWFycmF5KCk7Zm9yZWFjaCgkTGIKYXMkej0+JFgpJHpkW109IiR6ICRYIjtoZWFkZXIoIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5OiAiLmltcGxvZGUoIjsgIiwkemQpKTt9JGItPmhlYWRlcnMoKTt9ZnVuY3Rpb24KY3NwKCl7cmV0dXJuCmFycmF5KGFycmF5KCJzY3JpcHQtc3JjIj0+IidzZWxmJyAndW5zYWZlLWlubGluZScgJ25vbmNlLSIuZ2V0X25vbmNlKCkuIicgJ3N0cmljdC1keW5hbWljJyIsImNvbm5lY3Qtc3JjIj0+IidzZWxmJyIsImZyYW1lLXNyYyI9PiJodHRwczovL3d3dy5hZG1pbmVyLm9yZyIsIm9iamVjdC1zcmMiPT4iJ25vbmUnIiwiYmFzZS11cmkiPT4iJ25vbmUnIiwiZm9ybS1hY3Rpb24iPT4iJ3NlbGYnIiwpLCk7fWZ1bmN0aW9uCmdldF9ub25jZSgpe3N0YXRpYyRiZjtpZighJGJmKSRiZj1iYXNlNjRfZW5jb2RlKHJhbmRfc3RyaW5nKCkpO3JldHVybiRiZjt9ZnVuY3Rpb24KcGFnZV9tZXNzYWdlcygkbil7JEppPXByZWdfcmVwbGFjZSgnfl5bXj9dKn4nLCcnLCRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdKTskT2U9JF9TRVNTSU9OWyJtZXNzYWdlcyJdWyRKaV07aWYoJE9lKXtlY2hvIjxkaXYgY2xhc3M9J21lc3NhZ2UnPiIuaW1wbG9kZSgiPC9kaXY+XG48ZGl2IGNsYXNzPSdtZXNzYWdlJz4iLCRPZSkuIjwvZGl2PiIuc2NyaXB0KCJtZXNzYWdlc1ByaW50KCk7Iik7dW5zZXQoJF9TRVNTSU9OWyJtZXNzYWdlcyJdWyRKaV0pO31pZigkbillY2hvIjxkaXYgY2xhc3M9J2Vycm9yJz4kbjwvZGl2PlxuIjt9ZnVuY3Rpb24KcGFnZV9mb290ZXIoJFJlPSIiKXtnbG9iYWwkYiwkbmk7ZWNobyc8L2Rpdj4KCic7aWYoJFJlIT0iYXV0aCIpe2VjaG8nPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CjxwIGNsYXNzPSJsb2dvdXQiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJsb2dvdXQiIHZhbHVlPSJMb2dvdXQiIGlkPSJsb2dvdXQiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0b2tlbiIgdmFsdWU9IicsJG5pLCciPgo8L3A+CjwvZm9ybT4KJzt9ZWNobyc8ZGl2IGlkPSJtZW51Ij4KJzskYi0+bmF2aWdhdGlvbigkUmUpO2VjaG8nPC9kaXY+Cicsc2NyaXB0KCJzZXR1cFN1Ym1pdEhpZ2hsaWdodChkb2N1bWVudCk7Iik7fWZ1bmN0aW9uCmludDMyKCRVZSl7d2hpbGUoJFVlPj0yMTQ3NDgzNjQ4KSRVZS09NDI5NDk2NzI5Njt3aGlsZSgkVWU8PS0yMTQ3NDgzNjQ5KSRVZSs9NDI5NDk2NzI5NjtyZXR1cm4oaW50KSRVZTt9ZnVuY3Rpb24KbG9uZzJzdHIoJFcsJGFqKXskWGc9Jyc7Zm9yZWFjaCgkVwphcyRYKSRYZy49cGFjaygnVicsJFgpO2lmKCRhailyZXR1cm4Kc3Vic3RyKCRYZywwLGVuZCgkVykpO3JldHVybiRYZzt9ZnVuY3Rpb24Kc3RyMmxvbmcoJFhnLCRhail7JFc9YXJyYXlfdmFsdWVzKHVucGFjaygnVionLHN0cl9wYWQoJFhnLDQqY2VpbChzdHJsZW4oJFhnKS80KSwiXDAiKSkpO2lmKCRhaikkV1tdPXN0cmxlbigkWGcpO3JldHVybiRXO31mdW5jdGlvbgp4eHRlYV9teCgkbWosJGxqLCRLaCwkZmUpe3JldHVybgppbnQzMigoKCRtaj4+NSYweDdGRkZGRkYpXiRsajw8MikrKCgkbGo+PjMmMHgxRkZGRkZGRileJG1qPDw0KSleaW50MzIoKCRLaF4kbGopKygkZmVeJG1qKSk7fWZ1bmN0aW9uCmVuY3J5cHRfc3RyaW5nKCRGaCwkeil7aWYoJEZoPT0iIilyZXR1cm4iIjskej1hcnJheV92YWx1ZXModW5wYWNrKCJWKiIscGFjaygiSCoiLG1kNSgkeikpKSk7JFc9c3RyMmxvbmcoJEZoLHRydWUpOyRVZT1jb3VudCgkVyktMTskbWo9JFdbJFVlXTskbGo9JFdbMF07JHVnPWZsb29yKDYrNTIvKCRVZSsxKSk7JEtoPTA7d2hpbGUoJHVnLS0+MCl7JEtoPWludDMyKCRLaCsweDlFMzc3OUI5KTskcGM9JEtoPj4yJjM7Zm9yKCRMZj0wOyRMZjwkVWU7JExmKyspeyRsaj0kV1skTGYrMV07JFRlPXh4dGVhX214KCRtaiwkbGosJEtoLCR6WyRMZiYzXiRwY10pOyRtaj1pbnQzMigkV1skTGZdKyRUZSk7JFdbJExmXT0kbWo7fSRsaj0kV1swXTskVGU9eHh0ZWFfbXgoJG1qLCRsaiwkS2gsJHpbJExmJjNeJHBjXSk7JG1qPWludDMyKCRXWyRVZV0rJFRlKTskV1skVWVdPSRtajt9cmV0dXJuCmxvbmcyc3RyKCRXLGZhbHNlKTt9ZnVuY3Rpb24KZGVjcnlwdF9zdHJpbmcoJEZoLCR6KXtpZigkRmg9PSIiKXJldHVybiIiO2lmKCEkeilyZXR1cm4KZmFsc2U7JHo9YXJyYXlfdmFsdWVzKHVucGFjaygiVioiLHBhY2soIkgqIixtZDUoJHopKSkpOyRXPXN0cjJsb25nKCRGaCxmYWxzZSk7JFVlPWNvdW50KCRXKS0xOyRtaj0kV1skVWVdOyRsaj0kV1swXTskdWc9Zmxvb3IoNis1Mi8oJFVlKzEpKTskS2g9aW50MzIoJHVnKjB4OUUzNzc5QjkpO3doaWxlKCRLaCl7JHBjPSRLaD4+MiYzO2ZvcigkTGY9JFVlOyRMZj4wOyRMZi0tKXskbWo9JFdbJExmLTFdOyRUZT14eHRlYV9teCgkbWosJGxqLCRLaCwkelskTGYmM14kcGNdKTskbGo9aW50MzIoJFdbJExmXS0kVGUpOyRXWyRMZl09JGxqO30kbWo9JFdbJFVlXTskVGU9eHh0ZWFfbXgoJG1qLCRsaiwkS2gsJHpbJExmJjNeJHBjXSk7JGxqPWludDMyKCRXWzBdLSRUZSk7JFdbMF09JGxqOyRLaD1pbnQzMigkS2gtMHg5RTM3NzlCOSk7fXJldHVybgpsb25nMnN0cigkVyx0cnVlKTt9JGc9Jyc7JHlkPSRfU0VTU0lPTlsidG9rZW4iXTtpZighJHlkKSRfU0VTU0lPTlsidG9rZW4iXT1yYW5kKDEsMWU2KTskbmk9Z2V0X3Rva2VuKCk7JGJnPWFycmF5KCk7aWYoJF9DT09LSUVbImFkbWluZXJfcGVybWFuZW50Il0pe2ZvcmVhY2goZXhwbG9kZSgiICIsJF9DT09LSUVbImFkbWluZXJfcGVybWFuZW50Il0pYXMkWCl7bGlzdCgkeik9ZXhwbG9kZSgiOiIsJFgpOyRiZ1skel09JFg7fX1mdW5jdGlvbgphZGRfaW52YWxpZF9sb2dpbigpe2dsb2JhbCRiOyRsZD1maWxlX29wZW5fbG9jayhnZXRfdGVtcF9kaXIoKS4iL2FkbWluZXIuaW52YWxpZCIpO2lmKCEkbGQpcmV0dXJuOyRZZD11bnNlcmlhbGl6ZShzdHJlYW1fZ2V0X2NvbnRlbnRzKCRsZCkpOyRkaT10aW1lKCk7aWYoJFlkKXtmb3JlYWNoKCRZZAphcyRaZD0+JFgpe2lmKCRYWzBdPCRkaSl1bnNldCgkWWRbJFpkXSk7fX0kWGQ9JiRZZFskYi0+YnJ1dGVGb3JjZUtleSgpXTtpZighJFhkKSRYZD1hcnJheSgkZGkrMzAqNjAsMCk7JFhkWzFdKys7ZmlsZV93cml0ZV91bmxvY2soJGxkLHNlcmlhbGl6ZSgkWWQpKTt9ZnVuY3Rpb24KY2hlY2tfaW52YWxpZF9sb2dpbigpe2dsb2JhbCRiOyRZZD11bnNlcmlhbGl6ZShAZmlsZV9nZXRfY29udGVudHMoZ2V0X3RlbXBfZGlyKCkuIi9hZG1pbmVyLmludmFsaWQiKSk7JFhkPSgkWWQ/JFlkWyRiLT5icnV0ZUZvcmNlS2V5KCldOmFycmF5KCkpOyRhZj0oJFhkWzFdPjI5PyRYZFswXS10aW1lKCk6MCk7aWYoJGFmPjApYXV0aF9lcnJvcihsYW5nKGFycmF5KCdUb28gbWFueSB1bnN1Y2Nlc3NmdWwgbG9naW5zLCB0cnkgYWdhaW4gaW4gJWQgbWludXRlLicsJ1RvbyBtYW55IHVuc3VjY2Vzc2Z1bCBsb2dpbnMsIHRyeSBhZ2FpbiBpbiAlZCBtaW51dGVzLicpLGNlaWwoJGFmLzYwKSkpO30kSWE9JF9QT1NUWyJhdXRoIl07aWYoJElhKXtzZXNzaW9uX3JlZ2VuZXJhdGVfaWQoKTskVmk9JElhWyJkcml2ZXIiXTskTT0kSWFbInNlcnZlciJdOyRWPSRJYVsidXNlcm5hbWUiXTskRj0oc3RyaW5nKSRJYVsicGFzc3dvcmQiXTskbD0kSWFbImRiIl07c2V0X3Bhc3N3b3JkKCRWaSwkTSwkViwkRik7JF9TRVNTSU9OWyJkYiJdWyRWaV1bJE1dWyRWXVskbF09dHJ1ZTtpZigkSWFbInBlcm1hbmVudCJdKXskej1iYXNlNjRfZW5jb2RlKCRWaSkuIi0iLmJhc2U2NF9lbmNvZGUoJE0pLiItIi5iYXNlNjRfZW5jb2RlKCRWKS4iLSIuYmFzZTY0X2VuY29kZSgkbCk7JG5nPSRiLT5wZXJtYW5lbnRMb2dpbih0cnVlKTskYmdbJHpdPSIkejoiLmJhc2U2NF9lbmNvZGUoJG5nP2VuY3J5cHRfc3RyaW5nKCRGLCRuZyk6IiIpO2Nvb2tpZSgiYWRtaW5lcl9wZXJtYW5lbnQiLGltcGxvZGUoIiAiLCRiZykpO31pZihjb3VudCgkX1BPU1QpPT0xfHxEUklWRVIhPSRWaXx8U0VSVkVSIT0kTXx8JF9HRVRbInVzZXJuYW1lIl0hPT0kVnx8REIhPSRsKXJlZGlyZWN0KGF1dGhfdXJsKCRWaSwkTSwkViwkbCkpO31lbHNlaWYoJF9QT1NUWyJsb2dvdXQiXSYmKCEkeWR8fHZlcmlmeV90b2tlbigpKSl7Zm9yZWFjaChhcnJheSgicHdkcyIsImRiIiwiZGJzIiwicXVlcmllcyIpYXMkeilzZXRfc2Vzc2lvbigkeixudWxsKTt1bnNldF9wZXJtYW5lbnQoKTtyZWRpcmVjdChzdWJzdHIocHJlZ19yZXBsYWNlKCd+XGIodXNlcm5hbWV8ZGJ8bnMpPVteJl0qJn4nLCcnLE1FKSwwLC0xKSwnTG9nb3V0IHN1Y2Nlc3NmdWwuJy4nICcuJ1RoYW5rcyBmb3IgdXNpbmcgQWRtaW5lciwgY29uc2lkZXIgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYWRtaW5lci5vcmcvZW4vZG9uYXRpb24vIj5kb25hdGluZzwvYT4uJyk7fWVsc2VpZigkYmcmJiEkX1NFU1NJT05bInB3ZHMiXSl7c2Vzc2lvbl9yZWdlbmVyYXRlX2lkKCk7JG5nPSRiLT5wZXJtYW5lbnRMb2dpbigpO2ZvcmVhY2goJGJnCmFzJHo9PiRYKXtsaXN0KCwkZmIpPWV4cGxvZGUoIjoiLCRYKTtsaXN0KCRWaSwkTSwkViwkbCk9YXJyYXlfbWFwKCdiYXNlNjRfZGVjb2RlJyxleHBsb2RlKCItIiwkeikpO3NldF9wYXNzd29yZCgkVmksJE0sJFYsZGVjcnlwdF9zdHJpbmcoYmFzZTY0X2RlY29kZSgkZmIpLCRuZykpOyRfU0VTU0lPTlsiZGIiXVskVmldWyRNXVskVl1bJGxdPXRydWU7fX1mdW5jdGlvbgp1bnNldF9wZXJtYW5lbnQoKXtnbG9iYWwkYmc7Zm9yZWFjaCgkYmcKYXMkej0+JFgpe2xpc3QoJFZpLCRNLCRWLCRsKT1hcnJheV9tYXAoJ2Jhc2U2NF9kZWNvZGUnLGV4cGxvZGUoIi0iLCR6KSk7aWYoJFZpPT1EUklWRVImJiRNPT1TRVJWRVImJiRWPT0kX0dFVFsidXNlcm5hbWUiXSYmJGw9PURCKXVuc2V0KCRiZ1skel0pO31jb29raWUoImFkbWluZXJfcGVybWFuZW50IixpbXBsb2RlKCIgIiwkYmcpKTt9ZnVuY3Rpb24KYXV0aF9lcnJvcigkbil7Z2xvYmFsJGIsJHlkOyRtaD1zZXNzaW9uX25hbWUoKTtpZihpc3NldCgkX0dFVFsidXNlcm5hbWUiXSkpe2hlYWRlcigiSFRUUC8xLjEgNDAzIEZvcmJpZGRlbiIpO2lmKCgkX0NPT0tJRVskbWhdfHwkX0dFVFskbWhdKSYmISR5ZCkkbj0nU2Vzc2lvbiBleHBpcmVkLCBwbGVhc2UgbG9naW4gYWdhaW4uJztlbHNle3Jlc3RhcnRfc2Vzc2lvbigpO2FkZF9pbnZhbGlkX2xvZ2luKCk7JEY9Z2V0X3Bhc3N3b3JkKCk7aWYoJEYhPT1udWxsKXtpZigkRj09PWZhbHNlKSRuLj0oJG4/Jzxicj4nOicnKS5zcHJpbnRmKCdNYXN0ZXIgcGFzc3dvcmQgZXhwaXJlZC4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuYWRtaW5lci5vcmcvZW4vZXh0ZW5zaW9uLyIlcz5JbXBsZW1lbnQ8L2E+ICVzIG1ldGhvZCB0byBtYWtlIGl0IHBlcm1hbmVudC4nLHRhcmdldF9ibGFuaygpLCc8Y29kZT5wZXJtYW5lbnRMb2dpbigpPC9jb2RlPicpO3NldF9wYXNzd29yZChEUklWRVIsU0VSVkVSLCRfR0VUWyJ1c2VybmFtZSJdLG51bGwpO311bnNldF9wZXJtYW5lbnQoKTt9fWlmKCEkX0NPT0tJRVskbWhdJiYkX0dFVFskbWhdJiZpbmlfYm9vbCgic2Vzc2lvbi51c2Vfb25seV9jb29raWVzIikpJG49J1Nlc3Npb24gc3VwcG9ydCBtdXN0IGJlIGVuYWJsZWQuJzskT2Y9c2Vzc2lvbl9nZXRfY29va2llX3BhcmFtcygpO2Nvb2tpZSgiYWRtaW5lcl9rZXkiLCgkX0NPT0tJRVsiYWRtaW5lcl9rZXkiXT8kX0NPT0tJRVsiYWRtaW5lcl9rZXkiXTpyYW5kX3N0cmluZygpKSwkT2ZbImxpZmV0aW1lIl0pO3BhZ2VfaGVhZGVyKCdMb2dpbicsJG4sbnVsbCk7ZWNobyI8Zm9ybSBhY3Rpb249JycgbWV0aG9kPSdwb3N0Jz5cbiIsIjxkaXY+IjtpZihoaWRkZW5fZmllbGRzKCRfUE9TVCxhcnJheSgiYXV0aCIpKSllY2hvIjxwIGNsYXNzPSdtZXNzYWdlJz4iLidUaGUgYWN0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGFmdGVyIHN1Y2Nlc3NmdWwgbG9naW4gd2l0aCB0aGUgc2FtZSBjcmVkZW50aWFscy4nLiJcbiI7ZWNobyI8L2Rpdj5cbiI7JGItPmxvZ2luRm9ybSgpO2VjaG8iPC9mb3JtPlxuIjtwYWdlX2Zvb3RlcigiYXV0aCIpO2V4aXQ7fWlmKGlzc2V0KCRfR0VUWyJ1c2VybmFtZSJdKSYmIWNsYXNzX2V4aXN0cygiTWluX0RCIikpe3Vuc2V0KCRfU0VTU0lPTlsicHdkcyJdW0RSSVZFUl0pO3Vuc2V0X3Blcm1hbmVudCgpO3BhZ2VfaGVhZGVyKCdObyBleHRlbnNpb24nLHNwcmludGYoJ05vbmUgb2YgdGhlIHN1cHBvcnRlZCBQSFAgZXh0ZW5zaW9ucyAoJXMpIGFyZSBhdmFpbGFibGUuJyxpbXBsb2RlKCIsICIsJGhnKSksZmFsc2UpO3BhZ2VfZm9vdGVyKCJhdXRoIik7ZXhpdDt9c3RvcF9zZXNzaW9uKHRydWUpO2lmKGlzc2V0KCRfR0VUWyJ1c2VybmFtZSJdKSYmaXNfc3RyaW5nKGdldF9wYXNzd29yZCgpKSl7bGlzdCgkRGQsJGRnKT1leHBsb2RlKCI6IixTRVJWRVIsMik7aWYocHJlZ19tYXRjaCgnfl5ccyooWy0rXT9cZCspficsJGRnLCRDKSYmKCRDWzFdPDEwMjR8fCRDWzFdPjY1NTM1KSlhdXRoX2Vycm9yKCdDb25uZWN0aW5nIHRvIHByaXZpbGVnZWQgcG9ydHMgaXMgbm90IGFsbG93ZWQuJyk7Y2hlY2tfaW52YWxpZF9sb2dpbigpOyRnPWNvbm5lY3QoKTskbT1uZXcKTWluX0RyaXZlcigkZyk7fSR4ZT1udWxsO2lmKCFpc19vYmplY3QoJGcpfHwoJHhlPSRiLT5sb2dpbigkX0dFVFsidXNlcm5hbWUiXSxnZXRfcGFzc3dvcmQoKSkpIT09dHJ1ZSl7JG49KGlzX3N0cmluZygkZyk/aCgkZyk6KGlzX3N0cmluZygkeGUpPyR4ZTonSW52YWxpZCBjcmVkZW50aWFscy4nKSk7YXV0aF9lcnJvcigkbi4ocHJlZ19tYXRjaCgnfl4gfCAkficsZ2V0X3Bhc3N3b3JkKCkpPyc8YnI+Jy4nVGhlcmUgaXMgYSBzcGFjZSBpbiB0aGUgaW5wdXQgcGFzc3dvcmQgd2hpY2ggbWlnaHQgYmUgdGhlIGNhdXNlLic6JycpKTt9aWYoJF9QT1NUWyJsb2dvdXQiXSYmJHlkJiYhdmVyaWZ5X3Rva2VuKCkpe3BhZ2VfaGVhZGVyKCdMb2dvdXQnLCdJbnZhbGlkIENTUkYgdG9rZW4uIFNlbmQgdGhlIGZvcm0gYWdhaW4uJyk7cGFnZV9mb290ZXIoImRiIik7ZXhpdDt9aWYoJElhJiYkX1BPU1RbInRva2VuIl0pJF9QT1NUWyJ0b2tlbiJdPSRuaTskbj0nJztpZigkX1BPU1Qpe2lmKCF2ZXJpZnlfdG9rZW4oKSl7JFNkPSJtYXhfaW5wdXRfdmFycyI7JEllPWluaV9nZXQoJFNkKTtpZihleHRlbnNpb25fbG9hZGVkKCJzdWhvc2luIikpe2ZvcmVhY2goYXJyYXkoInN1aG9zaW4ucmVxdWVzdC5tYXhfdmFycyIsInN1aG9zaW4ucG9zdC5tYXhfdmFycyIpYXMkeil7JFg9aW5pX2dldCgkeik7aWYoJFgmJighJEllfHwkWDwkSWUpKXskU2Q9JHo7JEllPSRYO319fSRuPSghJF9QT1NUWyJ0b2tlbiJdJiYkSWU/c3ByaW50ZignTWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBmaWVsZHMgZXhjZWVkZWQuIFBsZWFzZSBpbmNyZWFzZSAlcy4nLCInJFNkJyIpOidJbnZhbGlkIENTUkYgdG9rZW4uIFNlbmQgdGhlIGZvcm0gYWdhaW4uJy4nICcuJ0lmIHlvdSBkaWQgbm90IHNlbmQgdGhpcyByZXF1ZXN0IGZyb20gQWRtaW5lciB0aGVuIGNsb3NlIHRoaXMgcGFnZS4nKTt9fWVsc2VpZigkX1NFUlZFUlsiUkVRVUVTVF9NRVRIT0QiXT09IlBPU1QiKXskbj1zcHJpbnRmKCdUb28gYmlnIFBPU1QgZGF0YS4gUmVkdWNlIHRoZSBkYXRhIG9yIGluY3JlYXNlIHRoZSAlcyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4nLCIncG9zdF9tYXhfc2l6ZSciKTtpZihpc3NldCgkX0dFVFsic3FsIl0pKSRuLj0nICcuJ1lvdSBjYW4gdXBsb2FkIGEgYmlnIFNRTCBmaWxlIHZpYSBGVFAgYW5kIGltcG9ydCBpdCBmcm9tIHNlcnZlci4nO31mdW5jdGlvbgpzZWxlY3QoJEgsJGg9bnVsbCwkQmY9YXJyYXkoKSwkXz0wKXtnbG9iYWwkeTskd2U9YXJyYXkoKTskeD1hcnJheSgpOyRmPWFycmF5KCk7JFNhPWFycmF5KCk7JFU9YXJyYXkoKTskST1hcnJheSgpO29kZCgnJyk7Zm9yKCR0PTA7KCEkX3x8JHQ8JF8pJiYoJEo9JEgtPmZldGNoX3JvdygpKTskdCsrKXtpZighJHQpe2VjaG8iPGRpdiBjbGFzcz0nc2Nyb2xsYWJsZSc+XG4iLCI8dGFibGUgY2VsbHNwYWNpbmc9JzAnIGNsYXNzPSdub3dyYXAnPlxuIiwiPHRoZWFkPjx0cj4iO2ZvcigkZWU9MDskZWU8Y291bnQoJEopOyRlZSsrKXskbz0kSC0+ZmV0Y2hfZmllbGQoKTskRD0kby0+bmFtZTskQWY9JG8tPm9yZ3RhYmxlOyRfZj0kby0+b3JnbmFtZTskSVskby0+dGFibGVdPSRBZjtpZigkQmYmJiR5PT0ic3FsIikkd2VbJGVlXT0oJEQ9PSJ0YWJsZSI/InRhYmxlPSI6KCREPT0icG9zc2libGVfa2V5cyI/ImluZGV4ZXM9IjpudWxsKSk7ZWxzZWlmKCRBZiE9IiIpe2lmKCFpc3NldCgkeFskQWZdKSl7JHhbJEFmXT1hcnJheSgpO2ZvcmVhY2goaW5kZXhlcygkQWYsJGgpYXMkdyl7aWYoJHdbInR5cGUiXT09IlBSSU1BUlkiKXskeFskQWZdPWFycmF5X2ZsaXAoJHdbImNvbHVtbnMiXSk7YnJlYWs7fX0kZlskQWZdPSR4WyRBZl07fWlmKGlzc2V0KCRmWyRBZl1bJF9mXSkpe3Vuc2V0KCRmWyRBZl1bJF9mXSk7JHhbJEFmXVskX2ZdPSRlZTskd2VbJGVlXT0kQWY7fX1pZigkby0+Y2hhcnNldG5yPT02MykkU2FbJGVlXT10cnVlOyRVWyRlZV09JG8tPnR5cGU7ZWNobyI8dGgiLigkQWYhPSIifHwkby0+bmFtZSE9JF9mPyIgdGl0bGU9JyIuaCgoJEFmIT0iIj8iJEFmLiI6IiIpLiRfZikuIiciOiIiKS4iPiIuaCgkRCkuKCRCZj9kb2NfbGluayhhcnJheSgnc3FsJz0+ImV4cGxhaW4tb3V0cHV0Lmh0bWwjZXhwbGFpbl8iLnN0cnRvbG93ZXIoJEQpLCdtYXJpYWRiJz0+ImV4cGxhaW4vI3RoZS1jb2x1bW5zLWluLWV4cGxhaW4tc2VsZWN0IiwpKToiIik7fWVjaG8iPC90aGVhZD5cbiI7fWVjaG8iPHRyIi5vZGQoKS4iPiI7Zm9yZWFjaCgkSgphcyR6PT4kWCl7JEE9IiI7aWYoaXNzZXQoJHdlWyR6XSkmJiEkZlskd2VbJHpdXSl7aWYoJEJmJiYkeT09InNxbCIpeyRRPSRKW2FycmF5X3NlYXJjaCgidGFibGU9Iiwkd2UpXTskQT1NRS4kd2VbJHpdLnVybGVuY29kZSgkQmZbJFFdIT0iIj8kQmZbJFFdOiRRKTt9ZWxzZXskQT1NRS4iZWRpdD0iLnVybGVuY29kZSgkd2VbJHpdKTtmb3JlYWNoKCR4WyR3ZVskel1dYXMkamI9PiRlZSkkQS49IiZ3aGVyZSIudXJsZW5jb2RlKCJbIi5icmFja2V0X2VzY2FwZSgkamIpLiJdIikuIj0iLnVybGVuY29kZSgkSlskZWVdKTt9fWVsc2VpZihpc191cmwoJFgpKSRBPSRYO2lmKCRYPT09bnVsbCkkWD0iPGk+TlVMTDwvaT4iO2Vsc2VpZigkU2FbJHpdJiYhaXNfdXRmOCgkWCkpJFg9IjxpPiIubGFuZyhhcnJheSgnJWQgYnl0ZScsJyVkIGJ5dGVzJyksc3RybGVuKCRYKSkuIjwvaT4iO2Vsc2V7JFg9aCgkWCk7aWYoJFVbJHpdPT0yNTQpJFg9Ijxjb2RlPiRYPC9jb2RlPiI7fWlmKCRBKSRYPSI8YSBocmVmPSciLmgoJEEpLiInIi4oaXNfdXJsKCRBKT90YXJnZXRfYmxhbmsoKTonJykuIj4kWDwvYT4iO2VjaG8iPHRkPiRYIjt9fWVjaG8oJHQ/IjwvdGFibGU+XG48L2Rpdj4iOiI8cCBjbGFzcz0nbWVzc2FnZSc+Ii4nTm8gcm93cy4nKS4iXG4iO3JldHVybiRJO31mdW5jdGlvbgpyZWZlcmVuY2FibGVfcHJpbWFyeSgkZmgpeyRJPWFycmF5KCk7Zm9yZWFjaCh0YWJsZV9zdGF0dXMoJycsdHJ1ZSlhcyRPaD0+JFEpe2lmKCRPaCE9JGZoJiZma19zdXBwb3J0KCRRKSl7Zm9yZWFjaChmaWVsZHMoJE9oKWFzJG8pe2lmKCRvWyJwcmltYXJ5Il0pe2lmKCRJWyRPaF0pe3Vuc2V0KCRJWyRPaF0pO2JyZWFrO30kSVskT2hdPSRvO319fX1yZXR1cm4kSTt9ZnVuY3Rpb24KYWRtaW5lcl9zZXR0aW5ncygpe3BhcnNlX3N0cigkX0NPT0tJRVsiYWRtaW5lcl9zZXR0aW5ncyJdLCRvaCk7cmV0dXJuJG9oO31mdW5jdGlvbgphZG1pbmVyX3NldHRpbmcoJHopeyRvaD1hZG1pbmVyX3NldHRpbmdzKCk7cmV0dXJuJG9oWyR6XTt9ZnVuY3Rpb24Kc2V0X2FkbWluZXJfc2V0dGluZ3MoJG9oKXtyZXR1cm4KY29va2llKCJhZG1pbmVyX3NldHRpbmdzIixodHRwX2J1aWxkX3F1ZXJ5KCRvaCthZG1pbmVyX3NldHRpbmdzKCkpKTt9ZnVuY3Rpb24KdGV4dGFyZWEoJEQsJFksJEs9MTAsJG5iPTgwKXtnbG9iYWwkeTtlY2hvIjx0ZXh0YXJlYSBuYW1lPSckRCcgcm93cz0nJEsnIGNvbHM9JyRuYicgY2xhc3M9J3NxbGFyZWEganVzaC0keScgc3BlbGxjaGVjaz0nZmFsc2UnIHdyYXA9J29mZic+IjtpZihpc19hcnJheSgkWSkpe2ZvcmVhY2goJFkKYXMkWCllY2hvCmgoJFhbMF0pLiJcblxuXG4iO31lbHNlCmVjaG8KaCgkWSk7ZWNobyI8L3RleHRhcmVhPiI7fWZ1bmN0aW9uCmVkaXRfdHlwZSgkeiwkbywkbGIsJGhkPWFycmF5KCksJFBjPWFycmF5KCkpe2dsb2JhbCRHaCwkVSwkSGksJHBmOyRUPSRvWyJ0eXBlIl07ZWNobyc8dGQ+PHNlbGVjdCBuYW1lPSInLGgoJHopLCdbdHlwZV0iIGNsYXNzPSJ0eXBlIiBhcmlhLWxhYmVsbGVkYnk9ImxhYmVsLXR5cGUiPic7aWYoJFQmJiFpc3NldCgkVVskVF0pJiYhaXNzZXQoJGhkWyRUXSkmJiFpbl9hcnJheSgkVCwkUGMpKSRQY1tdPSRUO2lmKCRoZCkkR2hbJ0ZvcmVpZ24ga2V5cyddPSRoZDtlY2hvCm9wdGlvbmxpc3QoYXJyYXlfbWVyZ2UoJFBjLCRHaCksJFQpLCc8L3NlbGVjdD48dGQ+PGlucHV0IG5hbWU9IicsaCgkeiksJ1tsZW5ndGhdIiB2YWx1ZT0iJyxoKCRvWyJsZW5ndGgiXSksJyIgc2l6ZT0iMyInLCghJG9bImxlbmd0aCJdJiZwcmVnX21hdGNoKCd+dmFyKGNoYXJ8YmluYXJ5KSR+JywkVCk/IiBjbGFzcz0ncmVxdWlyZWQnIjoiIik7ZWNobycgYXJpYS1sYWJlbGxlZGJ5PSJsYWJlbC1sZW5ndGgiPjx0ZCBjbGFzcz0ib3B0aW9ucyI+JywiPHNlbGVjdCBuYW1lPSciLmgoJHopLiJbY29sbGF0aW9uXSciLihwcmVnX21hdGNoKCd+KGNoYXJ8dGV4dHxlbnVtfHNldCkkficsJFQpPyIiOiIgY2xhc3M9J2hpZGRlbiciKS4nPjxvcHRpb24gdmFsdWU9IiI+KCcuJ2NvbGxhdGlvbicuJyknLm9wdGlvbmxpc3QoJGxiLCRvWyJjb2xsYXRpb24iXSkuJzwvc2VsZWN0PicsKCRIaT8iPHNlbGVjdCBuYW1lPSciLmgoJHopLiJbdW5zaWduZWRdJyIuKCEkVHx8cHJlZ19tYXRjaChudW1iZXJfdHlwZSgpLCRUKT8iIjoiIGNsYXNzPSdoaWRkZW4nIikuJz48b3B0aW9uPicub3B0aW9ubGlzdCgkSGksJG9bInVuc2lnbmVkIl0pLic8L3NlbGVjdD4nOicnKSwoaXNzZXQoJG9bJ29uX3VwZGF0ZSddKT8iPHNlbGVjdCBuYW1lPSciLmgoJHopLiJbb25fdXBkYXRlXSciLihwcmVnX21hdGNoKCd+dGltZXN0YW1wfGRhdGV0aW1lficsJFQpPyIiOiIgY2xhc3M9J2hpZGRlbiciKS4nPicub3B0aW9ubGlzdChhcnJheSgiIj0+IigiLidPTiBVUERBVEUnLiIpIiwiQ1VSUkVOVF9USU1FU1RBTVAiKSwocHJlZ19tYXRjaCgnfl5DVVJSRU5UX1RJTUVTVEFNUH5pJywkb1sib25fdXBkYXRlIl0pPyJDVVJSRU5UX1RJTUVTVEFNUCI6JG9bIm9uX3VwZGF0ZSJdKSkuJzwvc2VsZWN0Pic6JycpLCgkaGQ/IjxzZWxlY3QgbmFtZT0nIi5oKCR6KS4iW29uX2RlbGV0ZV0nIi4ocHJlZ19tYXRjaCgifmB+IiwkVCk/IiI6IiBjbGFzcz0naGlkZGVuJyIpLiI+PG9wdGlvbiB2YWx1ZT0nJz4oIi4nT04gREVMRVRFJy4iKSIub3B0aW9ubGlzdChleHBsb2RlKCJ8IiwkcGYpLCRvWyJvbl9kZWxldGUiXSkuIjwvc2VsZWN0PiAiOiIgIik7fWZ1bmN0aW9uCnByb2Nlc3NfbGVuZ3RoKCR0ZSl7Z2xvYmFsJF9jO3JldHVybihwcmVnX21hdGNoKCJ+XlxccypcXCg/XFxzKiRfYyg/OlxccyosXFxzKiRfYykqK1xccypcXCk/XFxzKlwkfiIsJHRlKSYmcHJlZ19tYXRjaF9hbGwoIn4kX2N+IiwkdGUsJENlKT8iKCIuaW1wbG9kZSgiLCIsJENlWzBdKS4iKSI6cHJlZ19yZXBsYWNlKCd+XlswLTldLip+JywnKFwwKScscHJlZ19yZXBsYWNlKCd+W14tMC05LCsoKVtcXV1+JywnJywkdGUpKSk7fWZ1bmN0aW9uCnByb2Nlc3NfdHlwZSgkbywka2I9IkNPTExBVEUiKXtnbG9iYWwkSGk7cmV0dXJuIiAkb1t0eXBlXSIucHJvY2Vzc19sZW5ndGgoJG9bImxlbmd0aCJdKS4ocHJlZ19tYXRjaChudW1iZXJfdHlwZSgpLCRvWyJ0eXBlIl0pJiZpbl9hcnJheSgkb1sidW5zaWduZWQiXSwkSGkpPyIgJG9bdW5zaWduZWRdIjoiIikuKHByZWdfbWF0Y2goJ35jaGFyfHRleHR8ZW51bXxzZXR+Jywkb1sidHlwZSJdKSYmJG9bImNvbGxhdGlvbiJdPyIgJGtiICIucSgkb1siY29sbGF0aW9uIl0pOiIiKTt9ZnVuY3Rpb24KcHJvY2Vzc19maWVsZCgkbywkX2kpe3JldHVybgphcnJheShpZGZfZXNjYXBlKHRyaW0oJG9bImZpZWxkIl0pKSxwcm9jZXNzX3R5cGUoJF9pKSwoJG9bIm51bGwiXT8iIE5VTEwiOiIgTk9UIE5VTEwiKSxkZWZhdWx0X3ZhbHVlKCRvKSwocHJlZ19tYXRjaCgnfnRpbWVzdGFtcHxkYXRldGltZX4nLCRvWyJ0eXBlIl0pJiYkb1sib25fdXBkYXRlIl0/IiBPTiBVUERBVEUgJG9bb25fdXBkYXRlXSI6IiIpLChzdXBwb3J0KCJjb21tZW50IikmJiRvWyJjb21tZW50Il0hPSIiPyIgQ09NTUVOVCAiLnEoJG9bImNvbW1lbnQiXSk6IiIpLCgkb1siYXV0b19pbmNyZW1lbnQiXT9hdXRvX2luY3JlbWVudCgpOm51bGwpLCk7fWZ1bmN0aW9uCmRlZmF1bHRfdmFsdWUoJG8peyRXYj0kb1siZGVmYXVsdCJdO3JldHVybigkV2I9PT1udWxsPyIiOiIgREVGQVVMVCAiLihwcmVnX21hdGNoKCd+Y2hhcnxiaW5hcnl8dGV4dHxlbnVtfHNldH4nLCRvWyJ0eXBlIl0pfHxwcmVnX21hdGNoKCd+Xig/IVthLXpdKX5pJywkV2IpP3EoJFdiKTokV2IpKTt9ZnVuY3Rpb24KdHlwZV9jbGFzcygkVCl7Zm9yZWFjaChhcnJheSgnY2hhcic9Pid0ZXh0JywnZGF0ZSc9Pid0aW1lfHllYXInLCdiaW5hcnknPT4nYmxvYicsJ2VudW0nPT4nc2V0JywpYXMkej0+JFgpe2lmKHByZWdfbWF0Y2goIn4kenwkWH4iLCRUKSlyZXR1cm4iIGNsYXNzPSckeiciO319ZnVuY3Rpb24KZWRpdF9maWVsZHMoJHAsJGxiLCRUPSJUQUJMRSIsJGhkPWFycmF5KCkpe2dsb2JhbCRUZDskcD1hcnJheV92YWx1ZXMoJHApOyRYYj0oKCRfUE9TVD8kX1BPU1RbImRlZmF1bHRzIl06YWRtaW5lcl9zZXR0aW5nKCJkZWZhdWx0cyIpKT8iIjoiIGNsYXNzPSdoaWRkZW4nIik7JHNiPSgoJF9QT1NUPyRfUE9TVFsiY29tbWVudHMiXTphZG1pbmVyX3NldHRpbmcoImNvbW1lbnRzIikpPyIiOiIgY2xhc3M9J2hpZGRlbiciKTtlY2hvJzx0aGVhZD48dHI+Cic7aWYoJFQ9PSJQUk9DRURVUkUiKXtlY2hvJzx0ZD4nO31lY2hvJzx0aCBpZD0ibGFiZWwtbmFtZSI+JywoJFQ9PSJUQUJMRSI/J0NvbHVtbiBuYW1lJzonUGFyYW1ldGVyIG5hbWUnKSwnPHRkIGlkPSJsYWJlbC10eXBlIj5UeXBlPHRleHRhcmVhIGlkPSJlbnVtLWVkaXQiIHJvd3M9IjQiIGNvbHM9IjEyIiB3cmFwPSJvZmYiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC90ZXh0YXJlYT4nLHNjcmlwdCgicXMoJyNlbnVtLWVkaXQnKS5vbmJsdXIgPSBlZGl0aW5nTGVuZ3RoQmx1cjsiKSwnPHRkIGlkPSJsYWJlbC1sZW5ndGgiPkxlbmd0aAo8dGQ+JywnT3B0aW9ucyc7aWYoJFQ9PSJUQUJMRSIpe2VjaG8nPHRkIGlkPSJsYWJlbC1udWxsIj5OVUxMCjx0ZD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImF1dG9faW5jcmVtZW50X2NvbCIgdmFsdWU9IiI+PGFjcm9ueW0gaWQ9ImxhYmVsLWFpIiB0aXRsZT0iQXV0byBJbmNyZW1lbnQiPkFJPC9hY3JvbnltPicsZG9jX2xpbmsoYXJyYXkoJ3NxbCc9PiJleGFtcGxlLWF1dG8taW5jcmVtZW50Lmh0bWwiLCdtYXJpYWRiJz0+ImF1dG9faW5jcmVtZW50LyIsJ3NxbGl0ZSc9PiJhdXRvaW5jLmh0bWwiLCdwZ3NxbCc9PiJkYXRhdHlwZS5odG1sI0RBVEFUWVBFLVNFUklBTCIsJ21zc3FsJz0+Im1zMTg2Nzc1LmFzcHgiLCkpLCc8dGQgaWQ9ImxhYmVsLWRlZmF1bHQiJywkWGIsJz5EZWZhdWx0IHZhbHVlCicsKHN1cHBvcnQoImNvbW1lbnQiKT8iPHRkIGlkPSdsYWJlbC1jb21tZW50JyRzYj4iLidDb21tZW50JzoiIik7fWVjaG8nPHRkPicsIjxpbnB1dCB0eXBlPSdpbWFnZScgY2xhc3M9J2ljb24nIG5hbWU9J2FkZFsiLihzdXBwb3J0KCJtb3ZlX2NvbCIpPzA6Y291bnQoJHApKS4iXScgc3JjPSciLmgocHJlZ19yZXBsYWNlKCJ+XFw/Lip+IiwiIixNRSkuIj9maWxlPXBsdXMuZ2lmJnZlcnNpb249NC44LjEiKS4iJyBhbHQ9JysnIHRpdGxlPSciLidBZGQgbmV4dCcuIic+Ii5zY3JpcHQoInJvd19jb3VudCA9ICIuY291bnQoJHApLiI7IiksJzwvdGhlYWQ+Cjx0Ym9keT4KJyxzY3JpcHQoIm1peGluKHFzbCgndGJvZHknKSwge29uY2xpY2s6IGVkaXRpbmdDbGljaywgb25rZXlkb3duOiBlZGl0aW5nS2V5ZG93biwgb25pbnB1dDogZWRpdGluZ0lucHV0fSk7Iik7Zm9yZWFjaCgkcAphcyR0PT4kbyl7JHQrKzskQ2Y9JG9bKCRfUE9TVD8ib3JpZyI6ImZpZWxkIildOyRmYz0oaXNzZXQoJF9QT1NUWyJhZGQiXVskdC0xXSl8fChpc3NldCgkb1siZmllbGQiXSkmJiEkX1BPU1RbImRyb3BfY29sIl1bJHRdKSkmJihzdXBwb3J0KCJkcm9wX2NvbCIpfHwkQ2Y9PSIiKTtlY2hvJzx0cicsKCRmYz8iIjoiIHN0eWxlPSdkaXNwbGF5OiBub25lOyciKSwnPgonLCgkVD09IlBST0NFRFVSRSI/Ijx0ZD4iLmh0bWxfc2VsZWN0KCJmaWVsZHNbJHRdW2lub3V0XSIsZXhwbG9kZSgifCIsJFRkKSwkb1siaW5vdXQiXSk6IiIpLCc8dGg+JztpZigkZmMpe2VjaG8nPGlucHV0IG5hbWU9ImZpZWxkc1snLCR0LCddW2ZpZWxkXSIgdmFsdWU9IicsaCgkb1siZmllbGQiXSksJyIgZGF0YS1tYXhsZW5ndGg9IjY0IiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIiBhcmlhLWxhYmVsbGVkYnk9ImxhYmVsLW5hbWUiPic7fWVjaG8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRzWycsJHQsJ11bb3JpZ10iIHZhbHVlPSInLGgoJENmKSwnIj4nO2VkaXRfdHlwZSgiZmllbGRzWyR0XSIsJG8sJGxiLCRoZCk7aWYoJFQ9PSJUQUJMRSIpe2VjaG8nPHRkPicsY2hlY2tib3goImZpZWxkc1skdF1bbnVsbF0iLDEsJG9bIm51bGwiXSwiIiwiIiwiYmxvY2siLCJsYWJlbC1udWxsIiksJzx0ZD48bGFiZWwgY2xhc3M9ImJsb2NrIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImF1dG9faW5jcmVtZW50X2NvbCIgdmFsdWU9IicsJHQsJyInO2lmKCRvWyJhdXRvX2luY3JlbWVudCJdKXtlY2hvJyBjaGVja2VkJzt9ZWNobycgYXJpYS1sYWJlbGxlZGJ5PSJsYWJlbC1haSI+PC9sYWJlbD48dGQnLCRYYiwnPicsY2hlY2tib3goImZpZWxkc1skdF1baGFzX2RlZmF1bHRdIiwxLCRvWyJoYXNfZGVmYXVsdCJdLCIiLCIiLCIiLCJsYWJlbC1kZWZhdWx0IiksJzxpbnB1dCBuYW1lPSJmaWVsZHNbJywkdCwnXVtkZWZhdWx0XSIgdmFsdWU9IicsaCgkb1siZGVmYXVsdCJdKSwnIiBhcmlhLWxhYmVsbGVkYnk9ImxhYmVsLWRlZmF1bHQiPicsKHN1cHBvcnQoImNvbW1lbnQiKT8iPHRkJHNiPjxpbnB1dCBuYW1lPSdmaWVsZHNbJHRdW2NvbW1lbnRdJyB2YWx1ZT0nIi5oKCRvWyJjb21tZW50Il0pLiInIGRhdGEtbWF4bGVuZ3RoPSciLihtaW5fdmVyc2lvbig1LjUpPzEwMjQ6MjU1KS4iJyBhcmlhLWxhYmVsbGVkYnk9J2xhYmVsLWNvbW1lbnQnPiI6IiIpO31lY2hvIjx0ZD4iLChzdXBwb3J0KCJtb3ZlX2NvbCIpPyI8aW5wdXQgdHlwZT0naW1hZ2UnIGNsYXNzPSdpY29uJyBuYW1lPSdhZGRbJHRdJyBzcmM9JyIuaChwcmVnX3JlcGxhY2UoIn5cXD8uKn4iLCIiLE1FKS4iP2ZpbGU9cGx1cy5naWYmdmVyc2lvbj00LjguMSIpLiInIGFsdD0nKycgdGl0bGU9JyIuJ0FkZCBuZXh0Jy4iJz4gIi4iPGlucHV0IHR5cGU9J2ltYWdlJyBjbGFzcz0naWNvbicgbmFtZT0ndXBbJHRdJyBzcmM9JyIuaChwcmVnX3JlcGxhY2UoIn5cXD8uKn4iLCIiLE1FKS4iP2ZpbGU9dXAuZ2lmJnZlcnNpb249NC44LjEiKS4iJyBhbHQ9J8ODwqLDouKCrCDDouKCrMucJyB0aXRsZT0nIi4nTW92ZSB1cCcuIic+ICIuIjxpbnB1dCB0eXBlPSdpbWFnZScgY2xhc3M9J2ljb24nIG5hbWU9J2Rvd25bJHRdJyBzcmM9JyIuaChwcmVnX3JlcGxhY2UoIn5cXD8uKn4iLCIiLE1FKS4iP2ZpbGU9ZG93bi5naWYmdmVyc2lvbj00LjguMSIpLiInIGFsdD0nw4PCosOi4oKsIMOi4oKsxZMnIHRpdGxlPSciLidNb3ZlIGRvd24nLiInPiAiOiIiKSwoJENmPT0iInx8c3VwcG9ydCgiZHJvcF9jb2wiKT8iPGlucHV0IHR5cGU9J2ltYWdlJyBjbGFzcz0naWNvbicgbmFtZT0nZHJvcF9jb2xbJHRdJyBzcmM9JyIuaChwcmVnX3JlcGxhY2UoIn5cXD8uKn4iLCIiLE1FKS4iP2ZpbGU9Y3Jvc3MuZ2lmJnZlcnNpb249NC44LjEiKS4iJyBhbHQ9J3gnIHRpdGxlPSciLidSZW1vdmUnLiInPiI6IiIpO319ZnVuY3Rpb24KcHJvY2Vzc19maWVsZHMoJiRwKXskaGY9MDtpZigkX1BPU1RbInVwIl0peyRuZT0wO2ZvcmVhY2goJHAKYXMkej0+JG8pe2lmKGtleSgkX1BPU1RbInVwIl0pPT0keil7dW5zZXQoJHBbJHpdKTthcnJheV9zcGxpY2UoJHAsJG5lLDAsYXJyYXkoJG8pKTticmVhazt9aWYoaXNzZXQoJG9bImZpZWxkIl0pKSRuZT0kaGY7JGhmKys7fX1lbHNlaWYoJF9QT1NUWyJkb3duIl0peyRqZD1mYWxzZTtmb3JlYWNoKCRwCmFzJHo9PiRvKXtpZihpc3NldCgkb1siZmllbGQiXSkmJiRqZCl7dW5zZXQoJHBba2V5KCRfUE9TVFsiZG93biJdKV0pO2FycmF5X3NwbGljZSgkcCwkaGYsMCxhcnJheSgkamQpKTticmVhazt9aWYoa2V5KCRfUE9TVFsiZG93biJdKT09JHopJGpkPSRvOyRoZisrO319ZWxzZWlmKCRfUE9TVFsiYWRkIl0peyRwPWFycmF5X3ZhbHVlcygkcCk7YXJyYXlfc3BsaWNlKCRwLGtleSgkX1BPU1RbImFkZCJdKSwwLGFycmF5KGFycmF5KCkpKTt9ZWxzZWlmKCEkX1BPU1RbImRyb3BfY29sIl0pcmV0dXJuCmZhbHNlO3JldHVybgp0cnVlO31mdW5jdGlvbgpub3JtYWxpemVfZW51bSgkQyl7cmV0dXJuIiciLnN0cl9yZXBsYWNlKCInIiwiJyciLGFkZGNzbGFzaGVzKHN0cmlwY3NsYXNoZXMoc3RyX3JlcGxhY2UoJENbMF1bMF0uJENbMF1bMF0sJENbMF1bMF0sc3Vic3RyKCRDWzBdLDEsLTEpKSksJ1xcJykpLiInIjt9ZnVuY3Rpb24KZ3JhbnQoJG9kLCRwZywkZiwkb2Ype2lmKCEkcGcpcmV0dXJuCnRydWU7aWYoJHBnPT1hcnJheSgiQUxMIFBSSVZJTEVHRVMiLCJHUkFOVCBPUFRJT04iKSlyZXR1cm4oJG9kPT0iR1JBTlQiP3F1ZXJpZXMoIiRvZCBBTEwgUFJJVklMRUdFUyRvZiBXSVRIIEdSQU5UIE9QVElPTiIpOnF1ZXJpZXMoIiRvZCBBTEwgUFJJVklMRUdFUyRvZiIpJiZxdWVyaWVzKCIkb2QgR1JBTlQgT1BUSU9OJG9mIikpO3JldHVybgpxdWVyaWVzKCIkb2QgIi5wcmVnX3JlcGxhY2UoJ34oR1JBTlQgT1BUSU9OKVwoW14pXSpcKX4nLCdcMScsaW1wbG9kZSgiJGYsICIsJHBnKS4kZikuJG9mKTt9ZnVuY3Rpb24KZHJvcF9jcmVhdGUoJGpjLCRpLCRrYywkYWksJG1jLCRCLCROZSwkTGUsJE1lLCRsZiwkWWUpe2lmKCRfUE9TVFsiZHJvcCJdKXF1ZXJ5X3JlZGlyZWN0KCRqYywkQiwkTmUpO2Vsc2VpZigkbGY9PSIiKXF1ZXJ5X3JlZGlyZWN0KCRpLCRCLCRNZSk7ZWxzZWlmKCRsZiE9JFllKXskSmI9cXVlcmllcygkaSk7cXVlcmllc19yZWRpcmVjdCgkQiwkTGUsJEpiJiZxdWVyaWVzKCRqYykpO2lmKCRKYilxdWVyaWVzKCRrYyk7fWVsc2UKcXVlcmllc19yZWRpcmVjdCgkQiwkTGUscXVlcmllcygkYWkpJiZxdWVyaWVzKCRtYykmJnF1ZXJpZXMoJGpjKSYmcXVlcmllcygkaSkpO31mdW5jdGlvbgpjcmVhdGVfdHJpZ2dlcigkb2YsJEope2dsb2JhbCR5OyRmaT0iICRKW1RpbWluZ10gJEpbRXZlbnRdIi4ocHJlZ19tYXRjaCgnfiBPRn4nLCRKWyJFdmVudCJdKT8iICRKW09mXSI6IiIpO3JldHVybiJDUkVBVEUgVFJJR0dFUiAiLmlkZl9lc2NhcGUoJEpbIlRyaWdnZXIiXSkuKCR5PT0ibXNzcWwiPyRvZi4kZmk6JGZpLiRvZikucnRyaW0oIiAkSltUeXBlXVxuJEpbU3RhdGVtZW50XSIsIjsiKS4iOyI7fWZ1bmN0aW9uCmNyZWF0ZV9yb3V0aW5lKCRUZywkSil7Z2xvYmFsJFRkLCR5OyROPWFycmF5KCk7JHA9KGFycmF5KSRKWyJmaWVsZHMiXTtrc29ydCgkcCk7Zm9yZWFjaCgkcAphcyRvKXtpZigkb1siZmllbGQiXSE9IiIpJE5bXT0ocHJlZ19tYXRjaCgifl4oJFRkKVwkfiIsJG9bImlub3V0Il0pPyIkb1tpbm91dF0gIjoiIikuaWRmX2VzY2FwZSgkb1siZmllbGQiXSkucHJvY2Vzc190eXBlKCRvLCJDSEFSQUNURVIgU0VUIik7fSRZYj1ydHJpbSgiXG4kSltkZWZpbml0aW9uXSIsIjsiKTtyZXR1cm4iQ1JFQVRFICRUZyAiLmlkZl9lc2NhcGUodHJpbSgkSlsibmFtZSJdKSkuIiAoIi5pbXBsb2RlKCIsICIsJE4pLiIpIi4oaXNzZXQoJF9HRVRbImZ1bmN0aW9uIl0pPyIgUkVUVVJOUyIucHJvY2Vzc190eXBlKCRKWyJyZXR1cm5zIl0sIkNIQVJBQ1RFUiBTRVQiKToiIikuKCRKWyJsYW5ndWFnZSJdPyIgTEFOR1VBR0UgJEpbbGFuZ3VhZ2VdIjoiIikuKCR5PT0icGdzcWwiPyIgQVMgIi5xKCRZYik6IiRZYjsiKTt9ZnVuY3Rpb24KcmVtb3ZlX2RlZmluZXIoJEcpe3JldHVybgpwcmVnX3JlcGxhY2UoJ35eKFtBLVogPV0rKSBERUZJTkVSPWAnLnByZWdfcmVwbGFjZSgnfkAoLiopficsJ2BAYCglfFwxKScsbG9nZ2VkX3VzZXIoKSkuJ2B+JywnXDEnLCRHKTt9ZnVuY3Rpb24KZm9ybWF0X2ZvcmVpZ25fa2V5KCRyKXtnbG9iYWwkcGY7JGw9JHJbImRiIl07JGNmPSRyWyJucyJdO3JldHVybiIgRk9SRUlHTiBLRVkgKCIuaW1wbG9kZSgiLCAiLGFycmF5X21hcCgnaWRmX2VzY2FwZScsJHJbInNvdXJjZSJdKSkuIikgUkVGRVJFTkNFUyAiLigkbCE9IiImJiRsIT0kX0dFVFsiZGIiXT9pZGZfZXNjYXBlKCRsKS4iLiI6IiIpLigkY2YhPSIiJiYkY2YhPSRfR0VUWyJucyJdP2lkZl9lc2NhcGUoJGNmKS4iLiI6IiIpLnRhYmxlKCRyWyJ0YWJsZSJdKS4iICgiLmltcGxvZGUoIiwgIixhcnJheV9tYXAoJ2lkZl9lc2NhcGUnLCRyWyJ0YXJnZXQiXSkpLiIpIi4ocHJlZ19tYXRjaCgifl4oJHBmKVwkfiIsJHJbIm9uX2RlbGV0ZSJdKT8iIE9OIERFTEVURSAkcltvbl9kZWxldGVdIjoiIikuKHByZWdfbWF0Y2goIn5eKCRwZilcJH4iLCRyWyJvbl91cGRhdGUiXSk/IiBPTiBVUERBVEUgJHJbb25fdXBkYXRlXSI6IiIpO31mdW5jdGlvbgp0YXJfZmlsZSgkcSwka2kpeyRJPXBhY2soImExMDBhOGE4YThhMTJhMTIiLCRxLDY0NCwwLDAsZGVjb2N0KCRraS0+c2l6ZSksZGVjb2N0KHRpbWUoKSkpOyRlYj04KjMyO2ZvcigkdD0wOyR0PHN0cmxlbigkSSk7JHQrKykkZWIrPW9yZCgkSVskdF0pOyRJLj1zcHJpbnRmKCIlMDZvIiwkZWIpLiJcMCAiO2VjaG8kSSxzdHJfcmVwZWF0KCJcMCIsNTEyLXN0cmxlbigkSSkpOyRraS0+c2VuZCgpO2VjaG8Kc3RyX3JlcGVhdCgiXDAiLDUxMS0oJGtpLT5zaXplKzUxMSklNTEyKTt9ZnVuY3Rpb24KaW5pX2J5dGVzKCRTZCl7JFg9aW5pX2dldCgkU2QpO3N3aXRjaChzdHJ0b2xvd2VyKHN1YnN0cigkWCwtMSkpKXtjYXNlJ2cnOiRYKj0xMDI0O2Nhc2UnbSc6JFgqPTEwMjQ7Y2FzZSdrJzokWCo9MTAyNDt9cmV0dXJuJFg7fWZ1bmN0aW9uCmRvY19saW5rKCRZZiwkYmk9IjxzdXA+Pzwvc3VwPiIpe2dsb2JhbCR5LCRnOyRraD0kZy0+c2VydmVyX2luZm87JFdpPXByZWdfcmVwbGFjZSgnfl4oXGRcLj9cZCkuKn5zJywnXDEnLCRraCk7JExpPWFycmF5KCdzcWwnPT4iaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vJFdpL2VuLyIsJ3NxbGl0ZSc9PiJodHRwczovL3d3dy5zcWxpdGUub3JnLyIsJ3Bnc3FsJz0+Imh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL2RvY3MvJFdpLyIsJ21zc3FsJz0+Imh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2xpYnJhcnkvIiwnb3JhY2xlJz0+Imh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vcGxzL3RvcGljL2xvb2t1cD9jdHg9ZGIiLnByZWdfcmVwbGFjZSgnfl4uKiAoXGQrKVwuKFxkKylcLlxkK1wuXGQrXC5cZCsuKn5zJywnXDFcMicsJGtoKS4iJmlkPSIsKTtpZihwcmVnX21hdGNoKCd+TWFyaWFEQn4nLCRraCkpeyRMaVsnc3FsJ109Imh0dHBzOi8vbWFyaWFkYi5jb20va2IvZW4vbGlicmFyeS8iOyRZZlsnc3FsJ109KGlzc2V0KCRZZlsnbWFyaWFkYiddKT8kWWZbJ21hcmlhZGInXTpzdHJfcmVwbGFjZSgiLmh0bWwiLCIvIiwkWWZbJ3NxbCddKSk7fXJldHVybigkWWZbJHldPyI8YSBocmVmPSciLmgoJExpWyR5XS4kWWZbJHldKS4iJyIudGFyZ2V0X2JsYW5rKCkuIj4kYmk8L2E+IjoiIik7fWZ1bmN0aW9uCm9iX2d6ZW5jb2RlKCRQKXtyZXR1cm4KZ3plbmNvZGUoJFApO31mdW5jdGlvbgpkYl9zaXplKCRsKXtnbG9iYWwkZztpZighJGctPnNlbGVjdF9kYigkbCkpcmV0dXJuIj8iOyRJPTA7Zm9yZWFjaCh0YWJsZV9zdGF0dXMoKWFzJFIpJEkrPSRSWyJEYXRhX2xlbmd0aCJdKyRSWyJJbmRleF9sZW5ndGgiXTtyZXR1cm4KZm9ybWF0X251bWJlcigkSSk7fWZ1bmN0aW9uCnNldF91dGY4bWI0KCRpKXtnbG9iYWwkZztzdGF0aWMkTj1mYWxzZTtpZighJE4mJnByZWdfbWF0Y2goJ35cYnV0ZjhtYjR+aScsJGkpKXskTj10cnVlO2VjaG8iU0VUIE5BTUVTICIuY2hhcnNldCgkZykuIjtcblxuIjt9fWZ1bmN0aW9uCmNvbm5lY3RfZXJyb3IoKXtnbG9iYWwkYiwkZywkbmksJG4sJGljO2lmKERCIT0iIil7aGVhZGVyKCJIVFRQLzEuMSA0MDQgTm90IEZvdW5kIik7cGFnZV9oZWFkZXIoJ0RhdGFiYXNlJy4iOiAiLmgoREIpLCdJbnZhbGlkIGRhdGFiYXNlLicsdHJ1ZSk7fWVsc2V7aWYoJF9QT1NUWyJkYiJdJiYhJG4pcXVlcmllc19yZWRpcmVjdChzdWJzdHIoTUUsMCwtMSksJ0RhdGFiYXNlcyBoYXZlIGJlZW4gZHJvcHBlZC4nLGRyb3BfZGF0YWJhc2VzKCRfUE9TVFsiZGIiXSkpO3BhZ2VfaGVhZGVyKCdTZWxlY3QgZGF0YWJhc2UnLCRuLGZhbHNlKTtlY2hvIjxwIGNsYXNzPSdsaW5rcyc+XG4iO2ZvcmVhY2goYXJyYXkoJ2RhdGFiYXNlJz0+J0NyZWF0ZSBkYXRhYmFzZScsJ3ByaXZpbGVnZXMnPT4nUHJpdmlsZWdlcycsJ3Byb2Nlc3NsaXN0Jz0+J1Byb2Nlc3MgbGlzdCcsJ3ZhcmlhYmxlcyc9PidWYXJpYWJsZXMnLCdzdGF0dXMnPT4nU3RhdHVzJywpYXMkej0+JFgpe2lmKHN1cHBvcnQoJHopKWVjaG8iPGEgaHJlZj0nIi5oKE1FKS4iJHo9Jz4kWDwvYT5cbiI7fWVjaG8iPHA+Ii5zcHJpbnRmKCclcyB2ZXJzaW9uOiAlcyB0aHJvdWdoIFBIUCBleHRlbnNpb24gJXMnLCRpY1tEUklWRVJdLCI8Yj4iLmgoJGctPnNlcnZlcl9pbmZvKS4iPC9iPiIsIjxiPiRnLT5leHRlbnNpb248L2I+IikuIlxuIiwiPHA+Ii5zcHJpbnRmKCdMb2dnZWQgYXM6ICVzJywiPGI+Ii5oKGxvZ2dlZF91c2VyKCkpLiI8L2I+IikuIlxuIjskaz0kYi0+ZGF0YWJhc2VzKCk7aWYoJGspeyRhaD1zdXBwb3J0KCJzY2hlbWUiKTskbGI9Y29sbGF0aW9ucygpO2VjaG8iPGZvcm0gYWN0aW9uPScnIG1ldGhvZD0ncG9zdCc+XG4iLCI8dGFibGUgY2VsbHNwYWNpbmc9JzAnIGNsYXNzPSdjaGVja2FibGUnPlxuIixzY3JpcHQoIm1peGluKHFzbCgndGFibGUnKSwge29uY2xpY2s6IHRhYmxlQ2xpY2ssIG9uZGJsY2xpY2s6IHBhcnRpYWxBcmcodGFibGVDbGljaywgdHJ1ZSl9KTsiKSwiPHRoZWFkPjx0cj4iLihzdXBwb3J0KCJkYXRhYmFzZSIpPyI8dGQ+IjoiIikuIjx0aD4iLidEYXRhYmFzZScuIiAtIDxhIGhyZWY9JyIuaChNRSkuInJlZnJlc2g9MSc+Ii4nUmVmcmVzaCcuIjwvYT4iLiI8dGQ+Ii4nQ29sbGF0aW9uJy4iPHRkPiIuJ1RhYmxlcycuIjx0ZD4iLidTaXplJy4iIC0gPGEgaHJlZj0nIi5oKE1FKS4iZGJzaXplPTEnPiIuJ0NvbXB1dGUnLiI8L2E+Ii5zY3JpcHQoInFzbCgnYScpLm9uY2xpY2sgPSBwYXJ0aWFsKGFqYXhTZXRIdG1sLCAnIi5qc19lc2NhcGUoTUUpLiJzY3JpcHQ9Y29ubmVjdCcpOyIsIiIpLiI8L3RoZWFkPlxuIjskaz0oJF9HRVRbImRic2l6ZSJdP2NvdW50X3RhYmxlcygkayk6YXJyYXlfZmxpcCgkaykpO2ZvcmVhY2goJGsKYXMkbD0+JFMpeyRTZz1oKE1FKS4iZGI9Ii51cmxlbmNvZGUoJGwpOyR1PWgoIkRiLSIuJGwpO2VjaG8iPHRyIi5vZGQoKS4iPiIuKHN1cHBvcnQoImRhdGFiYXNlIik/Ijx0ZD4iLmNoZWNrYm94KCJkYltdIiwkbCxpbl9hcnJheSgkbCwoYXJyYXkpJF9QT1NUWyJkYiJdKSwiIiwiIiwiIiwkdSk6IiIpLCI8dGg+PGEgaHJlZj0nJFNnJyBpZD0nJHUnPiIuaCgkbCkuIjwvYT4iOyRkPWgoZGJfY29sbGF0aW9uKCRsLCRsYikpO2VjaG8iPHRkPiIuKHN1cHBvcnQoImRhdGFiYXNlIik/IjxhIGhyZWY9JyRTZyIuKCRhaD8iJmFtcDtucz0iOiIiKS4iJmFtcDtkYXRhYmFzZT0nIHRpdGxlPSciLidBbHRlciBkYXRhYmFzZScuIic+JGQ8L2E+IjokZCksIjx0ZCBhbGlnbj0ncmlnaHQnPjxhIGhyZWY9JyRTZyZhbXA7c2NoZW1hPScgaWQ9J3RhYmxlcy0iLmgoJGwpLiInIHRpdGxlPSciLidEYXRhYmFzZSBzY2hlbWEnLiInPiIuKCRfR0VUWyJkYnNpemUiXT8kUzoiPyIpLiI8L2E+IiwiPHRkIGFsaWduPSdyaWdodCcgaWQ9J3NpemUtIi5oKCRsKS4iJz4iLigkX0dFVFsiZGJzaXplIl0/ZGJfc2l6ZSgkbCk6Ij8iKSwiXG4iO31lY2hvIjwvdGFibGU+XG4iLChzdXBwb3J0KCJkYXRhYmFzZSIpPyI8ZGl2IGNsYXNzPSdmb290ZXInPjxkaXY+XG4iLiI8ZmllbGRzZXQ+PGxlZ2VuZD4iLidTZWxlY3RlZCcuIiA8c3BhbiBpZD0nc2VsZWN0ZWQnPjwvc3Bhbj48L2xlZ2VuZD48ZGl2PlxuIi4iPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWxsJyB2YWx1ZT0nJz4iLnNjcmlwdCgicXNsKCdpbnB1dCcpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IHNlbGVjdENvdW50KCdzZWxlY3RlZCcsIGZvcm1DaGVja2VkKHRoaXMsIC9eZGIvKSk7IH07IikuIjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2Ryb3AnIHZhbHVlPSciLidEcm9wJy4iJz4iLmNvbmZpcm0oKS4iXG4iLiI8L2Rpdj48L2ZpZWxkc2V0PlxuIi4iPC9kaXY+PC9kaXY+XG4iOiIiKSwiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ndG9rZW4nIHZhbHVlPSckbmknPlxuIiwiPC9mb3JtPlxuIixzY3JpcHQoInRhYmxlQ2hlY2soKTsiKTt9fXBhZ2VfZm9vdGVyKCJkYiIpO31pZihpc3NldCgkX0dFVFsic3RhdHVzIl0pKSRfR0VUWyJ2YXJpYWJsZXMiXT0kX0dFVFsic3RhdHVzIl07aWYoaXNzZXQoJF9HRVRbImltcG9ydCJdKSkkX0dFVFsic3FsIl09JF9HRVRbImltcG9ydCJdO2lmKCEoREIhPSIiPyRnLT5zZWxlY3RfZGIoREIpOmlzc2V0KCRfR0VUWyJzcWwiXSl8fGlzc2V0KCRfR0VUWyJkdW1wIl0pfHxpc3NldCgkX0dFVFsiZGF0YWJhc2UiXSl8fGlzc2V0KCRfR0VUWyJwcm9jZXNzbGlzdCJdKXx8aXNzZXQoJF9HRVRbInByaXZpbGVnZXMiXSl8fGlzc2V0KCRfR0VUWyJ1c2VyIl0pfHxpc3NldCgkX0dFVFsidmFyaWFibGVzIl0pfHwkX0dFVFsic2NyaXB0Il09PSJjb25uZWN0Inx8JF9HRVRbInNjcmlwdCJdPT0ia2lsbCIpKXtpZihEQiE9IiJ8fCRfR0VUWyJyZWZyZXNoIl0pe3Jlc3RhcnRfc2Vzc2lvbigpO3NldF9zZXNzaW9uKCJkYnMiLG51bGwpO31jb25uZWN0X2Vycm9yKCk7ZXhpdDt9aWYoc3VwcG9ydCgic2NoZW1lIikpe2lmKERCIT0iIiYmJF9HRVRbIm5zIl0hPT0iIil7aWYoIWlzc2V0KCRfR0VUWyJucyJdKSlyZWRpcmVjdChwcmVnX3JlcGxhY2UoJ35ucz1bXiZdKiZ+JywnJyxNRSkuIm5zPSIuZ2V0X3NjaGVtYSgpKTtpZighc2V0X3NjaGVtYSgkX0dFVFsibnMiXSkpe2hlYWRlcigiSFRUUC8xLjEgNDA0IE5vdCBGb3VuZCIpO3BhZ2VfaGVhZGVyKCdTY2hlbWEnLiI6ICIuaCgkX0dFVFsibnMiXSksJ0ludmFsaWQgc2NoZW1hLicsdHJ1ZSk7cGFnZV9mb290ZXIoIm5zIik7ZXhpdDt9fX0kcGY9IlJFU1RSSUNUfE5PIEFDVElPTnxDQVNDQURFfFNFVCBOVUxMfFNFVCBERUZBVUxUIjtjbGFzcwpUbXBGaWxle3ZhciRoYW5kbGVyO3ZhciRzaXplO2Z1bmN0aW9uCl9fY29uc3RydWN0KCl7JHRoaXMtPmhhbmRsZXI9dG1wZmlsZSgpO31mdW5jdGlvbgp3cml0ZSgkQ2IpeyR0aGlzLT5zaXplKz1zdHJsZW4oJENiKTtmd3JpdGUoJHRoaXMtPmhhbmRsZXIsJENiKTt9ZnVuY3Rpb24Kc2VuZCgpe2ZzZWVrKCR0aGlzLT5oYW5kbGVyLDApO2ZwYXNzdGhydSgkdGhpcy0+aGFuZGxlcik7ZmNsb3NlKCR0aGlzLT5oYW5kbGVyKTt9fSRfYz0iJyg/OicnfFteJ1xcXFxdfFxcXFwuKSonIjskVGQ9IklOfE9VVHxJTk9VVCI7aWYoaXNzZXQoJF9HRVRbInNlbGVjdCJdKSYmKCRfUE9TVFsiZWRpdCJdfHwkX1BPU1RbImNsb25lIl0pJiYhJF9QT1NUWyJzYXZlIl0pJF9HRVRbImVkaXQiXT0kX0dFVFsic2VsZWN0Il07aWYoaXNzZXQoJF9HRVRbImNhbGxmIl0pKSRfR0VUWyJjYWxsIl09JF9HRVRbImNhbGxmIl07aWYoaXNzZXQoJF9HRVRbImZ1bmN0aW9uIl0pKSRfR0VUWyJwcm9jZWR1cmUiXT0kX0dFVFsiZnVuY3Rpb24iXTtpZihpc3NldCgkX0dFVFsiZG93bmxvYWQiXSkpeyRhPSRfR0VUWyJkb3dubG9hZCJdOyRwPWZpZWxkcygkYSk7aGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpO2hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Ii5mcmllbmRseV91cmwoIiRhLSIuaW1wbG9kZSgiXyIsJF9HRVRbIndoZXJlIl0pKS4iLiIuZnJpZW5kbHlfdXJsKCRfR0VUWyJmaWVsZCJdKSk7JEw9YXJyYXkoaWRmX2VzY2FwZSgkX0dFVFsiZmllbGQiXSkpOyRIPSRtLT5zZWxlY3QoJGEsJEwsYXJyYXkod2hlcmUoJF9HRVQsJHApKSwkTCk7JEo9KCRIPyRILT5mZXRjaF9yb3coKTphcnJheSgpKTtlY2hvJG0tPnZhbHVlKCRKWzBdLCRwWyRfR0VUWyJmaWVsZCJdXSk7ZXhpdDt9ZWxzZWlmKGlzc2V0KCRfR0VUWyJ0YWJsZSJdKSl7JGE9JF9HRVRbInRhYmxlIl07JHA9ZmllbGRzKCRhKTtpZighJHApJG49ZXJyb3IoKTskUj10YWJsZV9zdGF0dXMxKCRhLHRydWUpOyREPSRiLT50YWJsZU5hbWUoJFIpO3BhZ2VfaGVhZGVyKCgkcCYmaXNfdmlldygkUik/JFJbJ0VuZ2luZSddPT0nbWF0ZXJpYWxpemVkIHZpZXcnPydNYXRlcmlhbGl6ZWQgdmlldyc6J1ZpZXcnOidUYWJsZScpLiI6ICIuKCREIT0iIj8kRDpoKCRhKSksJG4pOyRiLT5zZWxlY3RMaW5rcygkUik7JHJiPSRSWyJDb21tZW50Il07aWYoJHJiIT0iIillY2hvIjxwIGNsYXNzPSdub3dyYXAnPiIuJ0NvbW1lbnQnLiI6ICIuaCgkcmIpLiJcbiI7aWYoJHApJGItPnRhYmxlU3RydWN0dXJlUHJpbnQoJHApO2lmKCFpc192aWV3KCRSKSl7aWYoc3VwcG9ydCgiaW5kZXhlcyIpKXtlY2hvIjxoMyBpZD0naW5kZXhlcyc+Ii4nSW5kZXhlcycuIjwvaDM+XG4iOyR4PWluZGV4ZXMoJGEpO2lmKCR4KSRiLT50YWJsZUluZGV4ZXNQcmludCgkeCk7ZWNobyc8cCBjbGFzcz0ibGlua3MiPjxhIGhyZWY9IicuaChNRSkuJ2luZGV4ZXM9Jy51cmxlbmNvZGUoJGEpLiciPicuJ0FsdGVyIGluZGV4ZXMnLiI8L2E+XG4iO31pZihma19zdXBwb3J0KCRSKSl7ZWNobyI8aDMgaWQ9J2ZvcmVpZ24ta2V5cyc+Ii4nRm9yZWlnbiBrZXlzJy4iPC9oMz5cbiI7JGhkPWZvcmVpZ25fa2V5cygkYSk7aWYoJGhkKXtlY2hvIjx0YWJsZSBjZWxsc3BhY2luZz0nMCc+XG4iLCI8dGhlYWQ+PHRyPjx0aD4iLidTb3VyY2UnLiI8dGQ+Ii4nVGFyZ2V0Jy4iPHRkPiIuJ09OIERFTEVURScuIjx0ZD4iLidPTiBVUERBVEUnLiI8dGQ+PC90aGVhZD5cbiI7Zm9yZWFjaCgkaGQKYXMkRD0+JHIpe2VjaG8iPHRyIHRpdGxlPSciLmgoJEQpLiInPiIsIjx0aD48aT4iLmltcGxvZGUoIjwvaT4sIDxpPiIsYXJyYXlfbWFwKCdoJywkclsic291cmNlIl0pKS4iPC9pPiIsIjx0ZD48YSBocmVmPSciLmgoJHJbImRiIl0hPSIiP3ByZWdfcmVwbGFjZSgnfmRiPVteJl0qficsImRiPSIudXJsZW5jb2RlKCRyWyJkYiJdKSxNRSk6KCRyWyJucyJdIT0iIj9wcmVnX3JlcGxhY2UoJ35ucz1bXiZdKn4nLCJucz0iLnVybGVuY29kZSgkclsibnMiXSksTUUpOk1FKSkuInRhYmxlPSIudXJsZW5jb2RlKCRyWyJ0YWJsZSJdKS4iJz4iLigkclsiZGIiXSE9IiI/IjxiPiIuaCgkclsiZGIiXSkuIjwvYj4uIjoiIikuKCRyWyJucyJdIT0iIj8iPGI+Ii5oKCRyWyJucyJdKS4iPC9iPi4iOiIiKS5oKCRyWyJ0YWJsZSJdKS4iPC9hPiIsIig8aT4iLmltcGxvZGUoIjwvaT4sIDxpPiIsYXJyYXlfbWFwKCdoJywkclsidGFyZ2V0Il0pKS4iPC9pPikiLCI8dGQ+Ii5oKCRyWyJvbl9kZWxldGUiXSkuIlxuIiwiPHRkPiIuaCgkclsib25fdXBkYXRlIl0pLiJcbiIsJzx0ZD48YSBocmVmPSInLmgoTUUuJ2ZvcmVpZ249Jy51cmxlbmNvZGUoJGEpLicmbmFtZT0nLnVybGVuY29kZSgkRCkpLiciPicuJ0FsdGVyJy4nPC9hPic7fWVjaG8iPC90YWJsZT5cbiI7fWVjaG8nPHAgY2xhc3M9ImxpbmtzIj48YSBocmVmPSInLmgoTUUpLidmb3JlaWduPScudXJsZW5jb2RlKCRhKS4nIj4nLidBZGQgZm9yZWlnbiBrZXknLiI8L2E+XG4iO319aWYoc3VwcG9ydChpc192aWV3KCRSKT8idmlld190cmlnZ2VyIjoidHJpZ2dlciIpKXtlY2hvIjxoMyBpZD0ndHJpZ2dlcnMnPiIuJ1RyaWdnZXJzJy4iPC9oMz5cbiI7JHppPXRyaWdnZXJzKCRhKTtpZigkemkpe2VjaG8iPHRhYmxlIGNlbGxzcGFjaW5nPScwJz5cbiI7Zm9yZWFjaCgkemkKYXMkej0+JFgpZWNobyI8dHIgdmFsaWduPSd0b3AnPjx0ZD4iLmgoJFhbMF0pLiI8dGQ+Ii5oKCRYWzFdKS4iPHRoPiIuaCgkeikuIjx0ZD48YSBocmVmPSciLmgoTUUuJ3RyaWdnZXI9Jy51cmxlbmNvZGUoJGEpLicmbmFtZT0nLnVybGVuY29kZSgkeikpLiInPiIuJ0FsdGVyJy4iPC9hPlxuIjtlY2hvIjwvdGFibGU+XG4iO31lY2hvJzxwIGNsYXNzPSJsaW5rcyI+PGEgaHJlZj0iJy5oKE1FKS4ndHJpZ2dlcj0nLnVybGVuY29kZSgkYSkuJyI+Jy4nQWRkIHRyaWdnZXInLiI8L2E+XG4iO319ZWxzZWlmKGlzc2V0KCRfR0VUWyJzY2hlbWEiXSkpe3BhZ2VfaGVhZGVyKCdEYXRhYmFzZSBzY2hlbWEnLCIiLGFycmF5KCksaChEQi4oJF9HRVRbIm5zIl0/Ii4kX0dFVFtuc10iOiIiKSkpOyRRaD1hcnJheSgpOyRSaD1hcnJheSgpOyRlYT0oJF9HRVRbInNjaGVtYSJdPyRfR0VUWyJzY2hlbWEiXTokX0NPT0tJRVsiYWRtaW5lcl9zY2hlbWEtIi5zdHJfcmVwbGFjZSgiLiIsIl8iLERCKV0pO3ByZWdfbWF0Y2hfYWxsKCd+KFteOl0rKTooWy0wLTkuXSspeChbLTAtOS5dKykoX3wkKX4nLCRlYSwkQ2UsUFJFR19TRVRfT1JERVIpO2ZvcmVhY2goJENlCmFzJHQ9PiRDKXskUWhbJENbMV1dPWFycmF5KCRDWzJdLCRDWzNdKTskUmhbXT0iXG5cdCciLmpzX2VzY2FwZSgkQ1sxXSkuIic6IFsgJENbMl0sICRDWzNdIF0iO30kb2k9MDskUGE9LTE7JFpnPWFycmF5KCk7JEVnPWFycmF5KCk7JHJlPWFycmF5KCk7Zm9yZWFjaCh0YWJsZV9zdGF0dXMoJycsdHJ1ZSlhcyRRPT4kUil7aWYoaXNfdmlldygkUikpY29udGludWU7JGVnPTA7JFpnWyRRXVsiZmllbGRzIl09YXJyYXkoKTtmb3JlYWNoKGZpZWxkcygkUSlhcyREPT4kbyl7JGVnKz0xLjI1OyRvWyJwb3MiXT0kZWc7JFpnWyRRXVsiZmllbGRzIl1bJERdPSRvO30kWmdbJFFdWyJwb3MiXT0oJFFoWyRRXT8kUWhbJFFdOmFycmF5KCRvaSwwKSk7Zm9yZWFjaCgkYi0+Zm9yZWlnbktleXMoJFEpYXMkWCl7aWYoISRYWyJkYiJdKXskcGU9JFBhO2lmKCRRaFskUV1bMV18fCRRaFskWFsidGFibGUiXV1bMV0pJHBlPW1pbihmbG9hdHZhbCgkUWhbJFFdWzFdKSxmbG9hdHZhbCgkUWhbJFhbInRhYmxlIl1dWzFdKSktMTtlbHNlJFBhLT0uMTt3aGlsZSgkcmVbKHN0cmluZykkcGVdKSRwZS09LjAwMDE7JFpnWyRRXVsicmVmZXJlbmNlcyJdWyRYWyJ0YWJsZSJdXVsoc3RyaW5nKSRwZV09YXJyYXkoJFhbInNvdXJjZSJdLCRYWyJ0YXJnZXQiXSk7JEVnWyRYWyJ0YWJsZSJdXVskUV1bKHN0cmluZykkcGVdPSRYWyJ0YXJnZXQiXTskcmVbKHN0cmluZykkcGVdPXRydWU7fX0kb2k9bWF4KCRvaSwkWmdbJFFdWyJwb3MiXVswXSsyLjUrJGVnKTt9ZWNobyc8ZGl2IGlkPSJzY2hlbWEiIHN0eWxlPSJoZWlnaHQ6ICcsJG9pLCdlbTsiPgo8c2NyaXB0Jyxub25jZSgpLCc+CnFzKFwnI3NjaGVtYVwnKS5vbnNlbGVjdHN0YXJ0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH07CnZhciB0YWJsZVBvcyA9IHsnLGltcGxvZGUoIiwiLCRSaCkuIlxuIiwnfTsKdmFyIGVtID0gcXMoXCcjc2NoZW1hXCcpLm9mZnNldEhlaWdodCAvICcsJG9pLCc7CmRvY3VtZW50Lm9ubW91c2Vtb3ZlID0gc2NoZW1hTW91c2Vtb3ZlOwpkb2N1bWVudC5vbm1vdXNldXAgPSBwYXJ0aWFsQXJnKHNjaGVtYU1vdXNldXAsIFwnJyxqc19lc2NhcGUoREIpLCdcJyk7Cjwvc2NyaXB0PgonO2ZvcmVhY2goJFpnCmFzJEQ9PiRRKXtlY2hvIjxkaXYgY2xhc3M9J3RhYmxlJyBzdHlsZT0ndG9wOiAiLiRRWyJwb3MiXVswXS4iZW07IGxlZnQ6ICIuJFFbInBvcyJdWzFdLiJlbTsnPiIsJzxhIGhyZWY9IicuaChNRSkuJ3RhYmxlPScudXJsZW5jb2RlKCREKS4nIj48Yj4nLmgoJEQpLiI8L2I+PC9hPiIsc2NyaXB0KCJxc2woJ2RpdicpLm9ubW91c2Vkb3duID0gc2NoZW1hTW91c2Vkb3duOyIpO2ZvcmVhY2goJFFbImZpZWxkcyJdYXMkbyl7JFg9JzxzcGFuJy50eXBlX2NsYXNzKCRvWyJ0eXBlIl0pLicgdGl0bGU9IicuaCgkb1siZnVsbF90eXBlIl0uKCRvWyJudWxsIl0/IiBOVUxMIjonJykpLiciPicuaCgkb1siZmllbGQiXSkuJzwvc3Bhbj4nO2VjaG8iPGJyPiIuKCRvWyJwcmltYXJ5Il0/IjxpPiRYPC9pPiI6JFgpO31mb3JlYWNoKChhcnJheSkkUVsicmVmZXJlbmNlcyJdYXMkWGg9PiRGZyl7Zm9yZWFjaCgkRmcKYXMkcGU9PiRCZyl7JHFlPSRwZS0kUWhbJERdWzFdOyR0PTA7Zm9yZWFjaCgkQmdbMF1hcyR2aCllY2hvIlxuPGRpdiBjbGFzcz0ncmVmZXJlbmNlcycgdGl0bGU9JyIuaCgkWGgpLiInIGlkPSdyZWZzJHBlLSIuKCR0KyspLiInIHN0eWxlPSdsZWZ0OiAkcWUiLiJlbTsgdG9wOiAiLiRRWyJmaWVsZHMiXVskdmhdWyJwb3MiXS4iZW07IHBhZGRpbmctdG9wOiAuNWVtOyc+PGRpdiBzdHlsZT0nYm9yZGVyLXRvcDogMXB4IHNvbGlkIEdyYXk7IHdpZHRoOiAiLigtJHFlKS4iZW07Jz48L2Rpdj48L2Rpdj4iO319Zm9yZWFjaCgoYXJyYXkpJEVnWyREXWFzJFhoPT4kRmcpe2ZvcmVhY2goJEZnCmFzJHBlPT4kZil7JHFlPSRwZS0kUWhbJERdWzFdOyR0PTA7Zm9yZWFjaCgkZgphcyRXaCllY2hvIlxuPGRpdiBjbGFzcz0ncmVmZXJlbmNlcycgdGl0bGU9JyIuaCgkWGgpLiInIGlkPSdyZWZkJHBlLSIuKCR0KyspLiInIHN0eWxlPSdsZWZ0OiAkcWUiLiJlbTsgdG9wOiAiLiRRWyJmaWVsZHMiXVskV2hdWyJwb3MiXS4iZW07IGhlaWdodDogMS4yNWVtOyBiYWNrZ3JvdW5kOiB1cmwoIi5oKHByZWdfcmVwbGFjZSgiflxcPy4qfiIsIiIsTUUpLiI/ZmlsZT1hcnJvdy5naWYpIG5vLXJlcGVhdCByaWdodCBjZW50ZXI7JnZlcnNpb249NC44LjEiKS4iJz48ZGl2IHN0eWxlPSdoZWlnaHQ6IC41ZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBHcmF5OyB3aWR0aDogIi4oLSRxZSkuImVtOyc+PC9kaXY+PC9kaXY+Ijt9fWVjaG8iXG48L2Rpdj5cbiI7fWZvcmVhY2goJFpnCmFzJEQ9PiRRKXtmb3JlYWNoKChhcnJheSkkUVsicmVmZXJlbmNlcyJdYXMkWGg9PiRGZyl7Zm9yZWFjaCgkRmcKYXMkcGU9PiRCZyl7JFFlPSRvaTskR2U9LTEwO2ZvcmVhY2goJEJnWzBdYXMkej0+JHZoKXskZmc9JFFbInBvcyJdWzBdKyRRWyJmaWVsZHMiXVskdmhdWyJwb3MiXTskZ2c9JFpnWyRYaF1bInBvcyJdWzBdKyRaZ1skWGhdWyJmaWVsZHMiXVskQmdbMV1bJHpdXVsicG9zIl07JFFlPW1pbigkUWUsJGZnLCRnZyk7JEdlPW1heCgkR2UsJGZnLCRnZyk7fWVjaG8iPGRpdiBjbGFzcz0ncmVmZXJlbmNlcycgaWQ9J3JlZmwkcGUnIHN0eWxlPSdsZWZ0OiAkcGUiLiJlbTsgdG9wOiAkUWUiLiJlbTsgcGFkZGluZzogLjVlbSAwOyc+PGRpdiBzdHlsZT0nYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgR3JheTsgbWFyZ2luLXRvcDogMXB4OyBoZWlnaHQ6ICIuKCRHZS0kUWUpLiJlbTsnPjwvZGl2PjwvZGl2PlxuIjt9fX1lY2hvJzwvZGl2Pgo8cCBjbGFzcz0ibGlua3MiPjxhIGhyZWY9IicsaChNRS4ic2NoZW1hPSIudXJsZW5jb2RlKCRlYSkpLCciIGlkPSJzY2hlbWEtbGluayI+UGVybWFuZW50IGxpbms8L2E+Cic7fWVsc2VpZihpc3NldCgkX0dFVFsiZHVtcCJdKSl7JGE9JF9HRVRbImR1bXAiXTtpZigkX1BPU1QmJiEkbil7JEZiPSIiO2ZvcmVhY2goYXJyYXkoIm91dHB1dCIsImZvcm1hdCIsImRiX3N0eWxlIiwicm91dGluZXMiLCJldmVudHMiLCJ0YWJsZV9zdHlsZSIsImF1dG9faW5jcmVtZW50IiwidHJpZ2dlcnMiLCJkYXRhX3N0eWxlIilhcyR6KSRGYi49IiYkej0iLnVybGVuY29kZSgkX1BPU1RbJHpdKTtjb29raWUoImFkbWluZXJfZXhwb3J0IixzdWJzdHIoJEZiLDEpKTskUz1hcnJheV9mbGlwKChhcnJheSkkX1BPU1RbInRhYmxlcyJdKSthcnJheV9mbGlwKChhcnJheSkkX1BPU1RbImRhdGEiXSk7JE1jPWR1bXBfaGVhZGVycygoY291bnQoJFMpPT0xP2tleSgkUyk6REIpLChEQj09IiJ8fGNvdW50KCRTKT4xKSk7JGJlPXByZWdfbWF0Y2goJ35zcWx+JywkX1BPU1RbImZvcm1hdCJdKTtpZigkYmUpe2VjaG8iLS0gQWRtaW5lciAkaWEgIi4kaWNbRFJJVkVSXS4iICIuc3RyX3JlcGxhY2UoIlxuIiwiICIsJGctPnNlcnZlcl9pbmZvKS4iIGR1bXBcblxuIjtpZigkeT09InNxbCIpe2VjaG8iU0VUIE5BTUVTIHV0Zjg7ClNFVCB0aW1lX3pvbmUgPSAnKzAwOjAwJzsKU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDA7CiIuKCRfUE9TVFsiZGF0YV9zdHlsZSJdPyJTRVQgc3FsX21vZGUgPSAnTk9fQVVUT19WQUxVRV9PTl9aRVJPJzsKIjoiIikuIgoiOyRnLT5xdWVyeSgiU0VUIHRpbWVfem9uZSA9ICcrMDA6MDAnIik7JGctPnF1ZXJ5KCJTRVQgc3FsX21vZGUgPSAnJyIpO319JEhoPSRfUE9TVFsiZGJfc3R5bGUiXTskaz1hcnJheShEQik7aWYoREI9PSIiKXskaz0kX1BPU1RbImRhdGFiYXNlcyJdO2lmKGlzX3N0cmluZygkaykpJGs9ZXhwbG9kZSgiXG4iLHJ0cmltKHN0cl9yZXBsYWNlKCJcciIsIiIsJGspLCJcbiIpKTt9Zm9yZWFjaCgoYXJyYXkpJGsKYXMkbCl7JGItPmR1bXBEYXRhYmFzZSgkbCk7aWYoJGctPnNlbGVjdF9kYigkbCkpe2lmKCRiZSYmcHJlZ19tYXRjaCgnfkNSRUFURX4nLCRIaCkmJigkaT0kZy0+cmVzdWx0KCJTSE9XIENSRUFURSBEQVRBQkFTRSAiLmlkZl9lc2NhcGUoJGwpLDEpKSl7c2V0X3V0ZjhtYjQoJGkpO2lmKCRIaD09IkRST1ArQ1JFQVRFIillY2hvIkRST1AgREFUQUJBU0UgSUYgRVhJU1RTICIuaWRmX2VzY2FwZSgkbCkuIjtcbiI7ZWNobyIkaTtcbiI7fWlmKCRiZSl7aWYoJEhoKWVjaG8KdXNlX3NxbCgkbCkuIjtcblxuIjskSWY9IiI7aWYoJF9QT1NUWyJyb3V0aW5lcyJdKXtmb3JlYWNoKGFycmF5KCJGVU5DVElPTiIsIlBST0NFRFVSRSIpYXMkVGcpe2ZvcmVhY2goZ2V0X3Jvd3MoIlNIT1cgJFRnIFNUQVRVUyBXSEVSRSBEYiA9ICIucSgkbCksbnVsbCwiLS0gIilhcyRKKXskaT1yZW1vdmVfZGVmaW5lcigkZy0+cmVzdWx0KCJTSE9XIENSRUFURSAkVGcgIi5pZGZfZXNjYXBlKCRKWyJOYW1lIl0pLDIpKTtzZXRfdXRmOG1iNCgkaSk7JElmLj0oJEhoIT0nRFJPUCtDUkVBVEUnPyJEUk9QICRUZyBJRiBFWElTVFMgIi5pZGZfZXNjYXBlKCRKWyJOYW1lIl0pLiI7O1xuIjoiIikuIiRpOztcblxuIjt9fX1pZigkX1BPU1RbImV2ZW50cyJdKXtmb3JlYWNoKGdldF9yb3dzKCJTSE9XIEVWRU5UUyIsbnVsbCwiLS0gIilhcyRKKXskaT1yZW1vdmVfZGVmaW5lcigkZy0+cmVzdWx0KCJTSE9XIENSRUFURSBFVkVOVCAiLmlkZl9lc2NhcGUoJEpbIk5hbWUiXSksMykpO3NldF91dGY4bWI0KCRpKTskSWYuPSgkSGghPSdEUk9QK0NSRUFURSc/IkRST1AgRVZFTlQgSUYgRVhJU1RTICIuaWRmX2VzY2FwZSgkSlsiTmFtZSJdKS4iOztcbiI6IiIpLiIkaTs7XG5cbiI7fX1pZigkSWYpZWNobyJERUxJTUlURVIgOztcblxuJElmIi4iREVMSU1JVEVSIDtcblxuIjt9aWYoJF9QT1NUWyJ0YWJsZV9zdHlsZSJdfHwkX1BPU1RbImRhdGFfc3R5bGUiXSl7JFlpPWFycmF5KCk7Zm9yZWFjaCh0YWJsZV9zdGF0dXMoJycsdHJ1ZSlhcyREPT4kUil7JFE9KERCPT0iInx8aW5fYXJyYXkoJEQsKGFycmF5KSRfUE9TVFsidGFibGVzIl0pKTskUGI9KERCPT0iInx8aW5fYXJyYXkoJEQsKGFycmF5KSRfUE9TVFsiZGF0YSJdKSk7aWYoJFF8fCRQYil7aWYoJE1jPT0idGFyIil7JGtpPW5ldwpUbXBGaWxlO29iX3N0YXJ0KGFycmF5KCRraSwnd3JpdGUnKSwxZTUpO30kYi0+ZHVtcFRhYmxlKCRELCgkUT8kX1BPU1RbInRhYmxlX3N0eWxlIl06IiIpLChpc192aWV3KCRSKT8yOjApKTtpZihpc192aWV3KCRSKSkkWWlbXT0kRDtlbHNlaWYoJFBiKXskcD1maWVsZHMoJEQpOyRiLT5kdW1wRGF0YSgkRCwkX1BPU1RbImRhdGFfc3R5bGUiXSwiU0VMRUNUICoiLmNvbnZlcnRfZmllbGRzKCRwLCRwKS4iIEZST00gIi50YWJsZSgkRCkpO31pZigkYmUmJiRfUE9TVFsidHJpZ2dlcnMiXSYmJFEmJigkemk9dHJpZ2dlcl9zcWwoJEQpKSllY2hvIlxuREVMSU1JVEVSIDs7XG4kemlcbkRFTElNSVRFUiA7XG4iO2lmKCRNYz09InRhciIpe29iX2VuZF9mbHVzaCgpO3Rhcl9maWxlKChEQiE9IiI/IiI6IiRsLyIpLiIkRC5jc3YiLCRraSk7fWVsc2VpZigkYmUpZWNobyJcbiI7fX1pZihmdW5jdGlvbl9leGlzdHMoJ2ZvcmVpZ25fa2V5c19zcWwnKSl7Zm9yZWFjaCh0YWJsZV9zdGF0dXMoJycsdHJ1ZSlhcyREPT4kUil7JFE9KERCPT0iInx8aW5fYXJyYXkoJEQsKGFycmF5KSRfUE9TVFsidGFibGVzIl0pKTtpZigkUSYmIWlzX3ZpZXcoJFIpKWVjaG8KZm9yZWlnbl9rZXlzX3NxbCgkRCk7fX1mb3JlYWNoKCRZaQphcyRYaSkkYi0+ZHVtcFRhYmxlKCRYaSwkX1BPU1RbInRhYmxlX3N0eWxlIl0sMSk7aWYoJE1jPT0idGFyIillY2hvCnBhY2soIng1MTIiKTt9fX1pZigkYmUpZWNobyItLSAiLiRnLT5yZXN1bHQoIlNFTEVDVCBOT1coKSIpLiJcbiI7ZXhpdDt9cGFnZV9oZWFkZXIoJ0V4cG9ydCcsJG4sKCRfR0VUWyJleHBvcnQiXSE9IiI/YXJyYXkoInRhYmxlIj0+JF9HRVRbImV4cG9ydCJdKTphcnJheSgpKSxoKERCKSk7ZWNobycKPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9ImxheW91dCI+Cic7JFRiPWFycmF5KCcnLCdVU0UnLCdEUk9QK0NSRUFURScsJ0NSRUFURScpOyRTaD1hcnJheSgnJywnRFJPUCtDUkVBVEUnLCdDUkVBVEUnKTskUWI9YXJyYXkoJycsJ1RSVU5DQVRFK0lOU0VSVCcsJ0lOU0VSVCcpO2lmKCR5PT0ic3FsIikkUWJbXT0nSU5TRVJUK1VQREFURSc7cGFyc2Vfc3RyKCRfQ09PS0lFWyJhZG1pbmVyX2V4cG9ydCJdLCRKKTtpZighJEopJEo9YXJyYXkoIm91dHB1dCI9PiJ0ZXh0IiwiZm9ybWF0Ij0+InNxbCIsImRiX3N0eWxlIj0+KERCIT0iIj8iIjoiQ1JFQVRFIiksInRhYmxlX3N0eWxlIj0+IkRST1ArQ1JFQVRFIiwiZGF0YV9zdHlsZSI9PiJJTlNFUlQiKTtpZighaXNzZXQoJEpbImV2ZW50cyJdKSl7JEpbInJvdXRpbmVzIl09JEpbImV2ZW50cyJdPSgkX0dFVFsiZHVtcCJdPT0iIik7JEpbInRyaWdnZXJzIl09JEpbInRhYmxlX3N0eWxlIl07fWVjaG8iPHRyPjx0aD4iLidPdXRwdXQnLiI8dGQ+Ii5odG1sX3NlbGVjdCgib3V0cHV0IiwkYi0+ZHVtcE91dHB1dCgpLCRKWyJvdXRwdXQiXSwwKS4iXG4iO2VjaG8iPHRyPjx0aD4iLidGb3JtYXQnLiI8dGQ+Ii5odG1sX3NlbGVjdCgiZm9ybWF0IiwkYi0+ZHVtcEZvcm1hdCgpLCRKWyJmb3JtYXQiXSwwKS4iXG4iO2VjaG8oJHk9PSJzcWxpdGUiPyIiOiI8dHI+PHRoPiIuJ0RhdGFiYXNlJy4iPHRkPiIuaHRtbF9zZWxlY3QoJ2RiX3N0eWxlJywkVGIsJEpbImRiX3N0eWxlIl0pLihzdXBwb3J0KCJyb3V0aW5lIik/Y2hlY2tib3goInJvdXRpbmVzIiwxLCRKWyJyb3V0aW5lcyJdLCdSb3V0aW5lcycpOiIiKS4oc3VwcG9ydCgiZXZlbnQiKT9jaGVja2JveCgiZXZlbnRzIiwxLCRKWyJldmVudHMiXSwnRXZlbnRzJyk6IiIpKSwiPHRyPjx0aD4iLidUYWJsZXMnLiI8dGQ+Ii5odG1sX3NlbGVjdCgndGFibGVfc3R5bGUnLCRTaCwkSlsidGFibGVfc3R5bGUiXSkuY2hlY2tib3goImF1dG9faW5jcmVtZW50IiwxLCRKWyJhdXRvX2luY3JlbWVudCJdLCdBdXRvIEluY3JlbWVudCcpLihzdXBwb3J0KCJ0cmlnZ2VyIik/Y2hlY2tib3goInRyaWdnZXJzIiwxLCRKWyJ0cmlnZ2VycyJdLCdUcmlnZ2VycycpOiIiKSwiPHRyPjx0aD4iLidEYXRhJy4iPHRkPiIuaHRtbF9zZWxlY3QoJ2RhdGFfc3R5bGUnLCRRYiwkSlsiZGF0YV9zdHlsZSJdKSwnPC90YWJsZT4KPHA+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkV4cG9ydCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRva2VuIiB2YWx1ZT0iJywkbmksJyI+Cgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiPgonLHNjcmlwdCgicXNsKCd0YWJsZScpLm9uY2xpY2sgPSBkdW1wQ2xpY2s7Iik7JGpnPWFycmF5KCk7aWYoREIhPSIiKXskY2I9KCRhIT0iIj8iIjoiIGNoZWNrZWQiKTtlY2hvIjx0aGVhZD48dHI+IiwiPHRoIHN0eWxlPSd0ZXh0LWFsaWduOiBsZWZ0Oyc+PGxhYmVsIGNsYXNzPSdibG9jayc+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBpZD0nY2hlY2stdGFibGVzJyRjYj4iLidUYWJsZXMnLiI8L2xhYmVsPiIuc2NyaXB0KCJxcygnI2NoZWNrLXRhYmxlcycpLm9uY2xpY2sgPSBwYXJ0aWFsKGZvcm1DaGVjaywgL150YWJsZXNcXFsvKTsiLCIiKSwiPHRoIHN0eWxlPSd0ZXh0LWFsaWduOiByaWdodDsnPjxsYWJlbCBjbGFzcz0nYmxvY2snPiIuJ0RhdGEnLiI8aW5wdXQgdHlwZT0nY2hlY2tib3gnIGlkPSdjaGVjay1kYXRhJyRjYj48L2xhYmVsPiIuc2NyaXB0KCJxcygnI2NoZWNrLWRhdGEnKS5vbmNsaWNrID0gcGFydGlhbChmb3JtQ2hlY2ssIC9eZGF0YVxcWy8pOyIsIiIpLCI8L3RoZWFkPlxuIjskWWk9IiI7JFRoPXRhYmxlc19saXN0KCk7Zm9yZWFjaCgkVGgKYXMkRD0+JFQpeyRpZz1wcmVnX3JlcGxhY2UoJ35fLip+JywnJywkRCk7JGNiPSgkYT09IiJ8fCRhPT0oc3Vic3RyKCRhLC0xKT09IiUiPyIkaWclIjokRCkpOyRtZz0iPHRyPjx0ZD4iLmNoZWNrYm94KCJ0YWJsZXNbXSIsJEQsJGNiLCRELCIiLCJibG9jayIpO2lmKCRUIT09bnVsbCYmIXByZWdfbWF0Y2goJ350YWJsZX5pJywkVCkpJFlpLj0iJG1nXG4iO2Vsc2UKZWNobyIkbWc8dGQgYWxpZ249J3JpZ2h0Jz48bGFiZWwgY2xhc3M9J2Jsb2NrJz48c3BhbiBpZD0nUm93cy0iLmgoJEQpLiInPjwvc3Bhbj4iLmNoZWNrYm94KCJkYXRhW10iLCRELCRjYikuIjwvbGFiZWw+XG4iOyRqZ1skaWddKys7fWVjaG8kWWk7aWYoJFRoKWVjaG8Kc2NyaXB0KCJhamF4U2V0SHRtbCgnIi5qc19lc2NhcGUoTUUpLiJzY3JpcHQ9ZGInKTsiKTt9ZWxzZXtlY2hvIjx0aGVhZD48dHI+PHRoIHN0eWxlPSd0ZXh0LWFsaWduOiBsZWZ0Oyc+IiwiPGxhYmVsIGNsYXNzPSdibG9jayc+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBpZD0nY2hlY2stZGF0YWJhc2VzJyIuKCRhPT0iIj8iIGNoZWNrZWQiOiIiKS4iPiIuJ0RhdGFiYXNlJy4iPC9sYWJlbD4iLHNjcmlwdCgicXMoJyNjaGVjay1kYXRhYmFzZXMnKS5vbmNsaWNrID0gcGFydGlhbChmb3JtQ2hlY2ssIC9eZGF0YWJhc2VzXFxbLyk7IiwiIiksIjwvdGhlYWQ+XG4iOyRrPSRiLT5kYXRhYmFzZXMoKTtpZigkayl7Zm9yZWFjaCgkawphcyRsKXtpZighaW5mb3JtYXRpb25fc2NoZW1hKCRsKSl7JGlnPXByZWdfcmVwbGFjZSgnfl8uKn4nLCcnLCRsKTtlY2hvIjx0cj48dGQ+Ii5jaGVja2JveCgiZGF0YWJhc2VzW10iLCRsLCRhPT0iInx8JGE9PSIkaWclIiwkbCwiIiwiYmxvY2siKS4iXG4iOyRqZ1skaWddKys7fX19ZWxzZQplY2hvIjx0cj48dGQ+PHRleHRhcmVhIG5hbWU9J2RhdGFiYXNlcycgcm93cz0nMTAnIGNvbHM9JzIwJz48L3RleHRhcmVhPiI7fWVjaG8nPC90YWJsZT4KPC9mb3JtPgonOyRaYz10cnVlO2ZvcmVhY2goJGpnCmFzJHo9PiRYKXtpZigkeiE9IiImJiRYPjEpe2VjaG8oJFpjPyI8cD4iOiIgIikuIjxhIGhyZWY9JyIuaChNRSkuImR1bXA9Ii51cmxlbmNvZGUoIiR6JSIpLiInPiIuaCgkeikuIjwvYT4iOyRaYz1mYWxzZTt9fX1lbHNlaWYoaXNzZXQoJF9HRVRbInByaXZpbGVnZXMiXSkpe3BhZ2VfaGVhZGVyKCdQcml2aWxlZ2VzJyk7ZWNobyc8cCBjbGFzcz0ibGlua3MiPjxhIGhyZWY9IicuaChNRSkuJ3VzZXI9Ij4nLidDcmVhdGUgdXNlcicuIjwvYT4iOyRIPSRnLT5xdWVyeSgiU0VMRUNUIFVzZXIsIEhvc3QgRlJPTSBteXNxbC4iLihEQj09IiI/InVzZXIiOiJkYiBXSEVSRSAiLnEoREIpLiIgTElLRSBEYiIpLiIgT1JERVIgQlkgSG9zdCwgVXNlciIpOyRvZD0kSDtpZighJEgpJEg9JGctPnF1ZXJ5KCJTRUxFQ1QgU1VCU1RSSU5HX0lOREVYKENVUlJFTlRfVVNFUiwgJ0AnLCAxKSBBUyBVc2VyLCBTVUJTVFJJTkdfSU5ERVgoQ1VSUkVOVF9VU0VSLCAnQCcsIC0xKSBBUyBIb3N0Iik7ZWNobyI8Zm9ybSBhY3Rpb249Jyc+PHA+XG4iO2hpZGRlbl9maWVsZHNfZ2V0KCk7ZWNobyI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkYicgdmFsdWU9JyIuaChEQikuIic+XG4iLCgkb2Q/IiI6IjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2dyYW50JyB2YWx1ZT0nJz5cbiIpLCI8dGFibGUgY2VsbHNwYWNpbmc9JzAnPlxuIiwiPHRoZWFkPjx0cj48dGg+Ii4nVXNlcm5hbWUnLiI8dGg+Ii4nU2VydmVyJy4iPHRoPjwvdGhlYWQ+XG4iO3doaWxlKCRKPSRILT5mZXRjaF9hc3NvYygpKWVjaG8nPHRyJy5vZGQoKS4nPjx0ZD4nLmgoJEpbIlVzZXIiXSkuIjx0ZD4iLmgoJEpbIkhvc3QiXSkuJzx0ZD48YSBocmVmPSInLmgoTUUuJ3VzZXI9Jy51cmxlbmNvZGUoJEpbIlVzZXIiXSkuJyZob3N0PScudXJsZW5jb2RlKCRKWyJIb3N0Il0pKS4nIj4nLidFZGl0Jy4iPC9hPlxuIjtpZighJG9kfHxEQiE9IiIpZWNobyI8dHIiLm9kZCgpLiI+PHRkPjxpbnB1dCBuYW1lPSd1c2VyJyBhdXRvY2FwaXRhbGl6ZT0nb2ZmJz48dGQ+PGlucHV0IG5hbWU9J2hvc3QnIHZhbHVlPSdsb2NhbGhvc3QnIGF1dG9jYXBpdGFsaXplPSdvZmYnPjx0ZD48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIi4nRWRpdCcuIic+XG4iO2VjaG8iPC90YWJsZT5cbiIsIjwvZm9ybT5cbiI7fWVsc2VpZihpc3NldCgkX0dFVFsic3FsIl0pKXtpZighJG4mJiRfUE9TVFsiZXhwb3J0Il0pe2R1bXBfaGVhZGVycygic3FsIik7JGItPmR1bXBUYWJsZSgiIiwiIik7JGItPmR1bXBEYXRhKCIiLCJ0YWJsZSIsJF9QT1NUWyJxdWVyeSJdKTtleGl0O31yZXN0YXJ0X3Nlc3Npb24oKTskQmQ9JmdldF9zZXNzaW9uKCJxdWVyaWVzIik7JEFkPSYkQmRbREJdO2lmKCEkbiYmJF9QT1NUWyJjbGVhciJdKXskQWQ9YXJyYXkoKTtyZWRpcmVjdChyZW1vdmVfZnJvbV91cmkoImhpc3RvcnkiKSk7fXBhZ2VfaGVhZGVyKChpc3NldCgkX0dFVFsiaW1wb3J0Il0pPydJbXBvcnQnOidTUUwgY29tbWFuZCcpLCRuKTtpZighJG4mJiRfUE9TVCl7JGxkPWZhbHNlO2lmKCFpc3NldCgkX0dFVFsiaW1wb3J0Il0pKSRHPSRfUE9TVFsicXVlcnkiXTtlbHNlaWYoJF9QT1NUWyJ3ZWJmaWxlIl0peyR6aD0kYi0+aW1wb3J0U2VydmVyUGF0aCgpOyRsZD1AZm9wZW4oKGZpbGVfZXhpc3RzKCR6aCk/JHpoOiJjb21wcmVzcy56bGliOi8vJHpoLmd6IiksInJiIik7JEc9KCRsZD9mcmVhZCgkbGQsMWU2KTpmYWxzZSk7fWVsc2UkRz1nZXRfZmlsZSgic3FsX2ZpbGUiLHRydWUpO2lmKGlzX3N0cmluZygkRykpe2lmKGZ1bmN0aW9uX2V4aXN0cygnbWVtb3J5X2dldF91c2FnZScpKUBpbmlfc2V0KCJtZW1vcnlfbGltaXQiLG1heChpbmlfYnl0ZXMoIm1lbW9yeV9saW1pdCIpLDIqc3RybGVuKCRHKSttZW1vcnlfZ2V0X3VzYWdlKCkrOGU2KSk7aWYoJEchPSIiJiZzdHJsZW4oJEcpPDFlNil7JHVnPSRHLihwcmVnX21hdGNoKCJ+O1sgXHRcclxuXSpcJH4iLCRHKT8iIjoiOyIpO2lmKCEkQWR8fHJlc2V0KGVuZCgkQWQpKSE9JHVnKXtyZXN0YXJ0X3Nlc3Npb24oKTskQWRbXT1hcnJheSgkdWcsdGltZSgpKTtzZXRfc2Vzc2lvbigicXVlcmllcyIsJEJkKTtzdG9wX3Nlc3Npb24oKTt9fSR3aD0iKD86XFxzfC9cXCpbXHNcU10qP1xcKi98KD86I3wtLSApW15cbl0qXG4/fC0tXHI/XG4pIjskYWM9IjsiOyRoZj0wOyR4Yz10cnVlOyRoPWNvbm5lY3QoKTtpZihpc19vYmplY3QoJGgpJiZEQiE9IiIpeyRoLT5zZWxlY3RfZGIoREIpO2lmKCRfR0VUWyJucyJdIT0iIilzZXRfc2NoZW1hKCRfR0VUWyJucyJdLCRoKTt9JHFiPTA7JEJjPWFycmF5KCk7JFBmPSdbXCciJy4oJHk9PSJzcWwiPydgIyc6KCR5PT0ic3FsaXRlIj8nYFsnOigkeT09Im1zc3FsIj8nWyc6JycpKSkuJ118L1wqfC0tIHwkJy4oJHk9PSJwZ3NxbCI/J3xcJFteJF0qXCQnOicnKTskcGk9bWljcm90aW1lKHRydWUpO3BhcnNlX3N0cigkX0NPT0tJRVsiYWRtaW5lcl9leHBvcnQiXSwkeGEpOyRvYz0kYi0+ZHVtcEZvcm1hdCgpO3Vuc2V0KCRvY1sic3FsIl0pO3doaWxlKCRHIT0iIil7aWYoISRoZiYmcHJlZ19tYXRjaCgifl4kd2gqK0RFTElNSVRFUlxccysoXFxTKyl+aSIsJEcsJEMpKXskYWM9JENbMV07JEc9c3Vic3RyKCRHLHN0cmxlbigkQ1swXSkpO31lbHNle3ByZWdfbWF0Y2goJygnLnByZWdfcXVvdGUoJGFjKS4iXFxzKnwkUGYpIiwkRywkQyxQUkVHX09GRlNFVF9DQVBUVVJFLCRoZik7bGlzdCgkamQsJGVnKT0kQ1swXTtpZighJGpkJiYkbGQmJiFmZW9mKCRsZCkpJEcuPWZyZWFkKCRsZCwxZTUpO2Vsc2V7aWYoISRqZCYmcnRyaW0oJEcpPT0iIilicmVhazskaGY9JGVnK3N0cmxlbigkamQpO2lmKCRqZCYmcnRyaW0oJGpkKSE9JGFjKXt3aGlsZShwcmVnX21hdGNoKCcoJy4oJGpkPT0nLyonPydcKi8nOigkamQ9PSdbJz8nXSc6KHByZWdfbWF0Y2goJ35eLS0gfF4jficsJGpkKT8iXG4iOnByZWdfcXVvdGUoJGpkKS4ifFxcXFwuIikpKS4nfCQpcycsJEcsJEMsUFJFR19PRkZTRVRfQ0FQVFVSRSwkaGYpKXskWGc9JENbMF1bMF07aWYoISRYZyYmJGxkJiYhZmVvZigkbGQpKSRHLj1mcmVhZCgkbGQsMWU1KTtlbHNleyRoZj0kQ1swXVsxXStzdHJsZW4oJFhnKTtpZigkWGdbMF0hPSJcXCIpYnJlYWs7fX19ZWxzZXskeGM9ZmFsc2U7JHVnPXN1YnN0cigkRywwLCRlZyk7JHFiKys7JG1nPSI8cHJlIGlkPSdzcWwtJHFiJz48Y29kZSBjbGFzcz0nanVzaC0keSc+Ii4kYi0+c3FsQ29tbWFuZFF1ZXJ5KCR1ZykuIjwvY29kZT48L3ByZT5cbiI7aWYoJHk9PSJzcWxpdGUiJiZwcmVnX21hdGNoKCJ+XiR3aCorQVRUQUNIXFxifmkiLCR1ZywkQykpe2VjaG8kbWcsIjxwIGNsYXNzPSdlcnJvcic+Ii4nQVRUQUNIIHF1ZXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuJy4iXG4iOyRCY1tdPSIgPGEgaHJlZj0nI3NxbC0kcWInPiRxYjwvYT4iO2lmKCRfUE9TVFsiZXJyb3Jfc3RvcHMiXSlicmVhazt9ZWxzZXtpZighJF9QT1NUWyJvbmx5X2Vycm9ycyJdKXtlY2hvJG1nO29iX2ZsdXNoKCk7Zmx1c2goKTt9JENoPW1pY3JvdGltZSh0cnVlKTtpZigkZy0+bXVsdGlfcXVlcnkoJHVnKSYmaXNfb2JqZWN0KCRoKSYmcHJlZ19tYXRjaCgifl4kd2gqK1VTRVxcYn5pIiwkdWcpKSRoLT5xdWVyeSgkdWcpO2RveyRIPSRnLT5zdG9yZV9yZXN1bHQoKTtpZigkZy0+ZXJyb3Ipe2VjaG8oJF9QT1NUWyJvbmx5X2Vycm9ycyJdPyRtZzoiIiksIjxwIGNsYXNzPSdlcnJvcic+Ii4nRXJyb3IgaW4gcXVlcnknLigkZy0+ZXJybm8/IiAoJGctPmVycm5vKSI6IiIpLiI6ICIuZXJyb3IoKS4iXG4iOyRCY1tdPSIgPGEgaHJlZj0nI3NxbC0kcWInPiRxYjwvYT4iO2lmKCRfUE9TVFsiZXJyb3Jfc3RvcHMiXSlicmVhawoyO31lbHNleyRkaT0iIDxzcGFuIGNsYXNzPSd0aW1lJz4oIi5mb3JtYXRfdGltZSgkQ2gpLiIpPC9zcGFuPiIuKHN0cmxlbigkdWcpPDEwMDA/IiA8YSBocmVmPSciLmgoTUUpLiJzcWw9Ii51cmxlbmNvZGUodHJpbSgkdWcpKS4iJz4iLidFZGl0Jy4iPC9hPiI6IiIpOyR6YT0kZy0+YWZmZWN0ZWRfcm93czskYmo9KCRfUE9TVFsib25seV9lcnJvcnMiXT8iIjokbS0+d2FybmluZ3MoKSk7JGNqPSJ3YXJuaW5ncy0kcWIiO2lmKCRiaikkZGkuPSIsIDxhIGhyZWY9JyMkY2onPiIuJ1dhcm5pbmdzJy4iPC9hPiIuc2NyaXB0KCJxc2woJ2EnKS5vbmNsaWNrID0gcGFydGlhbCh0b2dnbGUsICckY2onKTsiLCIiKTskSmM9bnVsbDskS2M9ImV4cGxhaW4tJHFiIjtpZihpc19vYmplY3QoJEgpKXskXz0kX1BPU1RbImxpbWl0Il07JEJmPXNlbGVjdCgkSCwkaCxhcnJheSgpLCRfKTtpZighJF9QT1NUWyJvbmx5X2Vycm9ycyJdKXtlY2hvIjxmb3JtIGFjdGlvbj0nJyBtZXRob2Q9J3Bvc3QnPlxuIjskZGY9JEgtPm51bV9yb3dzO2VjaG8iPHA+Ii4oJGRmPygkXyYmJGRmPiRfP3NwcmludGYoJyVkIC8gJywkXyk6IiIpLmxhbmcoYXJyYXkoJyVkIHJvdycsJyVkIHJvd3MnKSwkZGYpOiIiKSwkZGk7aWYoJGgmJnByZWdfbWF0Y2goIn5eKCR3aHxcXCgpKitTRUxFQ1RcXGJ+aSIsJHVnKSYmKCRKYz1leHBsYWluKCRoLCR1ZykpKWVjaG8iLCA8YSBocmVmPScjJEtjJz5FeHBsYWluPC9hPiIuc2NyaXB0KCJxc2woJ2EnKS5vbmNsaWNrID0gcGFydGlhbCh0b2dnbGUsICckS2MnKTsiLCIiKTskdT0iZXhwb3J0LSRxYiI7ZWNobyIsIDxhIGhyZWY9JyMkdSc+Ii4nRXhwb3J0Jy4iPC9hPiIuc2NyaXB0KCJxc2woJ2EnKS5vbmNsaWNrID0gcGFydGlhbCh0b2dnbGUsICckdScpOyIsIiIpLiI8c3BhbiBpZD0nJHUnIGNsYXNzPSdoaWRkZW4nPjogIi5odG1sX3NlbGVjdCgib3V0cHV0IiwkYi0+ZHVtcE91dHB1dCgpLCR4YVsib3V0cHV0Il0pLiIgIi5odG1sX3NlbGVjdCgiZm9ybWF0Iiwkb2MsJHhhWyJmb3JtYXQiXSkuIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3F1ZXJ5JyB2YWx1ZT0nIi5oKCR1ZykuIic+Ii4iIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2V4cG9ydCcgdmFsdWU9JyIuJ0V4cG9ydCcuIic+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ndG9rZW4nIHZhbHVlPSckbmknPjwvc3Bhbj5cbiIuIjwvZm9ybT5cbiI7fX1lbHNle2lmKHByZWdfbWF0Y2goIn5eJHdoKisoQ1JFQVRFfERST1B8QUxURVIpJHdoKysoREFUQUJBU0V8U0NIRU1BKVxcYn5pIiwkdWcpKXtyZXN0YXJ0X3Nlc3Npb24oKTtzZXRfc2Vzc2lvbigiZGJzIixudWxsKTtzdG9wX3Nlc3Npb24oKTt9aWYoISRfUE9TVFsib25seV9lcnJvcnMiXSllY2hvIjxwIGNsYXNzPSdtZXNzYWdlJyB0aXRsZT0nIi5oKCRnLT5pbmZvKS4iJz4iLmxhbmcoYXJyYXkoJ1F1ZXJ5IGV4ZWN1dGVkIE9LLCAlZCByb3cgYWZmZWN0ZWQuJywnUXVlcnkgZXhlY3V0ZWQgT0ssICVkIHJvd3MgYWZmZWN0ZWQuJyksJHphKS4iJGRpXG4iO31lY2hvKCRiaj8iPGRpdiBpZD0nJGNqJyBjbGFzcz0naGlkZGVuJz5cbiRiajwvZGl2PlxuIjoiIik7aWYoJEpjKXtlY2hvIjxkaXYgaWQ9JyRLYycgY2xhc3M9J2hpZGRlbic+XG4iO3NlbGVjdCgkSmMsJGgsJEJmKTtlY2hvIjwvZGl2PlxuIjt9fSRDaD1taWNyb3RpbWUodHJ1ZSk7fXdoaWxlKCRnLT5uZXh0X3Jlc3VsdCgpKTt9JEc9c3Vic3RyKCRHLCRoZik7JGhmPTA7fX19fWlmKCR4YyllY2hvIjxwIGNsYXNzPSdtZXNzYWdlJz4iLidObyBjb21tYW5kcyB0byBleGVjdXRlLicuIlxuIjtlbHNlaWYoJF9QT1NUWyJvbmx5X2Vycm9ycyJdKXtlY2hvIjxwIGNsYXNzPSdtZXNzYWdlJz4iLmxhbmcoYXJyYXkoJyVkIHF1ZXJ5IGV4ZWN1dGVkIE9LLicsJyVkIHF1ZXJpZXMgZXhlY3V0ZWQgT0suJyksJHFiLWNvdW50KCRCYykpLCIgPHNwYW4gY2xhc3M9J3RpbWUnPigiLmZvcm1hdF90aW1lKCRwaSkuIik8L3NwYW4+XG4iO31lbHNlaWYoJEJjJiYkcWI+MSllY2hvIjxwIGNsYXNzPSdlcnJvcic+Ii4nRXJyb3IgaW4gcXVlcnknLiI6ICIuaW1wbG9kZSgiIiwkQmMpLiJcbiI7fWVsc2UKZWNobyI8cCBjbGFzcz0nZXJyb3InPiIudXBsb2FkX2Vycm9yKCRHKS4iXG4iO31lY2hvJwo8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBpZD0iZm9ybSI+Cic7JEhjPSI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIi4nRXhlY3V0ZScuIicgdGl0bGU9J0N0cmwrRW50ZXInPiI7aWYoIWlzc2V0KCRfR0VUWyJpbXBvcnQiXSkpeyR1Zz0kX0dFVFsic3FsIl07aWYoJF9QT1NUKSR1Zz0kX1BPU1RbInF1ZXJ5Il07ZWxzZWlmKCRfR0VUWyJoaXN0b3J5Il09PSJhbGwiKSR1Zz0kQWQ7ZWxzZWlmKCRfR0VUWyJoaXN0b3J5Il0hPSIiKSR1Zz0kQWRbJF9HRVRbImhpc3RvcnkiXV1bMF07ZWNobyI8cD4iO3RleHRhcmVhKCJxdWVyeSIsJHVnLDIwKTtlY2hvCnNjcmlwdCgoJF9QT1NUPyIiOiJxcygndGV4dGFyZWEnKS5mb2N1cygpO1xuIikuInFzKCcjZm9ybScpLm9uc3VibWl0ID0gcGFydGlhbChzcWxTdWJtaXQsIHFzKCcjZm9ybScpLCAnIi5qc19lc2NhcGUocmVtb3ZlX2Zyb21fdXJpKCJzcWx8bGltaXR8ZXJyb3Jfc3RvcHN8b25seV9lcnJvcnN8aGlzdG9yeSIpKS4iJyk7IiksIjxwPiRIY1xuIiwnTGltaXQgcm93cycuIjogPGlucHV0IHR5cGU9J251bWJlcicgbmFtZT0nbGltaXQnIGNsYXNzPSdzaXplJyB2YWx1ZT0nIi5oKCRfUE9TVD8kX1BPU1RbImxpbWl0Il06JF9HRVRbImxpbWl0Il0pLiInPlxuIjt9ZWxzZXtlY2hvIjxmaWVsZHNldD48bGVnZW5kPiIuJ0ZpbGUgdXBsb2FkJy4iPC9sZWdlbmQ+PGRpdj4iOyR1ZD0oZXh0ZW5zaW9uX2xvYWRlZCgiemxpYiIpPyJbLmd6XSI6IiIpO2VjaG8oaW5pX2Jvb2woImZpbGVfdXBsb2FkcyIpPyJTUUwkdWQgKCZsdDsgIi5pbmlfZ2V0KCJ1cGxvYWRfbWF4X2ZpbGVzaXplIikuIkIpOiA8aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0nc3FsX2ZpbGVbXScgbXVsdGlwbGU+XG4kSGMiOidGaWxlIHVwbG9hZHMgYXJlIGRpc2FibGVkLicpLCI8L2Rpdj48L2ZpZWxkc2V0PlxuIjskSWQ9JGItPmltcG9ydFNlcnZlclBhdGgoKTtpZigkSWQpe2VjaG8iPGZpZWxkc2V0PjxsZWdlbmQ+Ii4nRnJvbSBzZXJ2ZXInLiI8L2xlZ2VuZD48ZGl2PiIsc3ByaW50ZignV2Vic2VydmVyIGZpbGUgJXMnLCI8Y29kZT4iLmgoJElkKS4iJHVkPC9jb2RlPiIpLCcgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0id2ViZmlsZSIgdmFsdWU9IicuJ1J1biBmaWxlJy4nIj4nLCI8L2Rpdj48L2ZpZWxkc2V0PlxuIjt9ZWNobyI8cD4iO31lY2hvCmNoZWNrYm94KCJlcnJvcl9zdG9wcyIsMSwoJF9QT1NUPyRfUE9TVFsiZXJyb3Jfc3RvcHMiXTppc3NldCgkX0dFVFsiaW1wb3J0Il0pfHwkX0dFVFsiZXJyb3Jfc3RvcHMiXSksJ1N0b3Agb24gZXJyb3InKS4iXG4iLGNoZWNrYm94KCJvbmx5X2Vycm9ycyIsMSwoJF9QT1NUPyRfUE9TVFsib25seV9lcnJvcnMiXTppc3NldCgkX0dFVFsiaW1wb3J0Il0pfHwkX0dFVFsib25seV9lcnJvcnMiXSksJ1Nob3cgb25seSBlcnJvcnMnKS4iXG4iLCI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0b2tlbicgdmFsdWU9JyRuaSc+XG4iO2lmKCFpc3NldCgkX0dFVFsiaW1wb3J0Il0pJiYkQWQpe3ByaW50X2ZpZWxkc2V0KCJoaXN0b3J5IiwnSGlzdG9yeScsJF9HRVRbImhpc3RvcnkiXSE9IiIpO2ZvcigkWD1lbmQoJEFkKTskWDskWD1wcmV2KCRBZCkpeyR6PWtleSgkQWQpO2xpc3QoJHVnLCRkaSwkc2MpPSRYO2VjaG8nPGEgaHJlZj0iJy5oKE1FLiJzcWw9Jmhpc3Rvcnk9JHoiKS4nIj4nLidFZGl0Jy4iPC9hPiIuIiA8c3BhbiBjbGFzcz0ndGltZScgdGl0bGU9JyIuQGRhdGUoJ1ktbS1kJywkZGkpLiInPiIuQGRhdGUoIkg6aTpzIiwkZGkpLiI8L3NwYW4+Ii4iIDxjb2RlIGNsYXNzPSdqdXNoLSR5Jz4iLnNob3J0ZW5fdXRmOChsdHJpbShzdHJfcmVwbGFjZSgiXG4iLCIgIixzdHJfcmVwbGFjZSgiXHIiLCIiLHByZWdfcmVwbGFjZSgnfl4oI3wtLSApLip+bScsJycsJHVnKSkpKSw4MCwiPC9jb2RlPiIpLigkc2M/IiA8c3BhbiBjbGFzcz0ndGltZSc+KCRzYyk8L3NwYW4+IjoiIikuIjxicj5cbiI7fWVjaG8iPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nY2xlYXInIHZhbHVlPSciLidDbGVhcicuIic+XG4iLCI8YSBocmVmPSciLmgoTUUuInNxbD0maGlzdG9yeT1hbGwiKS4iJz4iLidFZGl0IGFsbCcuIjwvYT5cbiIsIjwvZGl2PjwvZmllbGRzZXQ+XG4iO31lY2hvJzwvZm9ybT4KJzt9ZWxzZWlmKGlzc2V0KCRfR0VUWyJlZGl0Il0pKXskYT0kX0dFVFsiZWRpdCJdOyRwPWZpZWxkcygkYSk7JFo9KGlzc2V0KCRfR0VUWyJzZWxlY3QiXSk/KCRfUE9TVFsiY2hlY2siXSYmY291bnQoJF9QT1NUWyJjaGVjayJdKT09MT93aGVyZV9jaGVjaygkX1BPU1RbImNoZWNrIl1bMF0sJHApOiIiKTp3aGVyZSgkX0dFVCwkcCkpOyRJaT0oaXNzZXQoJF9HRVRbInNlbGVjdCJdKT8kX1BPU1RbImVkaXQiXTokWik7Zm9yZWFjaCgkcAphcyREPT4kbyl7aWYoIWlzc2V0KCRvWyJwcml2aWxlZ2VzIl1bJElpPyJ1cGRhdGUiOiJpbnNlcnQiXSl8fCRiLT5maWVsZE5hbWUoJG8pPT0iInx8JG9bImdlbmVyYXRlZCJdKXVuc2V0KCRwWyREXSk7fWlmKCRfUE9TVCYmISRuJiYhaXNzZXQoJF9HRVRbInNlbGVjdCJdKSl7JEI9JF9QT1NUWyJyZWZlcmVyIl07aWYoJF9QT1NUWyJpbnNlcnQiXSkkQj0oJElpP251bGw6JF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pO2Vsc2VpZighcHJlZ19tYXRjaCgnfl4uKyZzZWxlY3Q9LiskficsJEIpKSRCPU1FLiJzZWxlY3Q9Ii51cmxlbmNvZGUoJGEpOyR4PWluZGV4ZXMoJGEpOyREaT11bmlxdWVfYXJyYXkoJF9HRVRbIndoZXJlIl0sJHgpOyR4Zz0iXG5XSEVSRSAkWiI7aWYoaXNzZXQoJF9QT1NUWyJkZWxldGUiXSkpcXVlcmllc19yZWRpcmVjdCgkQiwnSXRlbSBoYXMgYmVlbiBkZWxldGVkLicsJG0tPmRlbGV0ZSgkYSwkeGcsISREaSkpO2Vsc2V7JE49YXJyYXkoKTtmb3JlYWNoKCRwCmFzJEQ9PiRvKXskWD1wcm9jZXNzX2lucHV0KCRvKTtpZigkWCE9PWZhbHNlJiYkWCE9PW51bGwpJE5baWRmX2VzY2FwZSgkRCldPSRYO31pZigkSWkpe2lmKCEkTilyZWRpcmVjdCgkQik7cXVlcmllc19yZWRpcmVjdCgkQiwnSXRlbSBoYXMgYmVlbiB1cGRhdGVkLicsJG0tPnVwZGF0ZSgkYSwkTiwkeGcsISREaSkpO2lmKGlzX2FqYXgoKSl7cGFnZV9oZWFkZXJzKCk7cGFnZV9tZXNzYWdlcygkbik7ZXhpdDt9fWVsc2V7JEg9JG0tPmluc2VydCgkYSwkTik7JG9lPSgkSD9sYXN0X2lkKCk6MCk7cXVlcmllc19yZWRpcmVjdCgkQixzcHJpbnRmKCdJdGVtJXMgaGFzIGJlZW4gaW5zZXJ0ZWQuJywoJG9lPyIgJG9lIjoiIikpLCRIKTt9fX0kSj1udWxsO2lmKCRfUE9TVFsic2F2ZSJdKSRKPShhcnJheSkkX1BPU1RbImZpZWxkcyJdO2Vsc2VpZigkWil7JEw9YXJyYXkoKTtmb3JlYWNoKCRwCmFzJEQ9PiRvKXtpZihpc3NldCgkb1sicHJpdmlsZWdlcyJdWyJzZWxlY3QiXSkpeyRGYT1jb252ZXJ0X2ZpZWxkKCRvKTtpZigkX1BPU1RbImNsb25lIl0mJiRvWyJhdXRvX2luY3JlbWVudCJdKSRGYT0iJyciO2lmKCR5PT0ic3FsIiYmcHJlZ19tYXRjaCgifmVudW18c2V0fiIsJG9bInR5cGUiXSkpJEZhPSIxKiIuaWRmX2VzY2FwZSgkRCk7JExbXT0oJEZhPyIkRmEgQVMgIjoiIikuaWRmX2VzY2FwZSgkRCk7fX0kSj1hcnJheSgpO2lmKCFzdXBwb3J0KCJ0YWJsZSIpKSRMPWFycmF5KCIqIik7aWYoJEwpeyRIPSRtLT5zZWxlY3QoJGEsJEwsYXJyYXkoJFopLCRMLGFycmF5KCksKGlzc2V0KCRfR0VUWyJzZWxlY3QiXSk/MjoxKSk7aWYoISRIKSRuPWVycm9yKCk7ZWxzZXskSj0kSC0+ZmV0Y2hfYXNzb2MoKTtpZighJEopJEo9ZmFsc2U7fWlmKGlzc2V0KCRfR0VUWyJzZWxlY3QiXSkmJighJEp8fCRILT5mZXRjaF9hc3NvYygpKSkkSj1udWxsO319aWYoIXN1cHBvcnQoInRhYmxlIikmJiEkcCl7aWYoISRaKXskSD0kbS0+c2VsZWN0KCRhLGFycmF5KCIqIiksJFosYXJyYXkoIioiKSk7JEo9KCRIPyRILT5mZXRjaF9hc3NvYygpOmZhbHNlKTtpZighJEopJEo9YXJyYXkoJG0tPnByaW1hcnk9PiIiKTt9aWYoJEope2ZvcmVhY2goJEoKYXMkej0+JFgpe2lmKCEkWikkSlskel09bnVsbDskcFskel09YXJyYXkoImZpZWxkIj0+JHosIm51bGwiPT4oJHohPSRtLT5wcmltYXJ5KSwiYXV0b19pbmNyZW1lbnQiPT4oJHo9PSRtLT5wcmltYXJ5KSk7fX19ZWRpdF9mb3JtKCRhLCRwLCRKLCRJaSk7fWVsc2VpZihpc3NldCgkX0dFVFsiY3JlYXRlIl0pKXskYT0kX0dFVFsiY3JlYXRlIl07JFJmPWFycmF5KCk7Zm9yZWFjaChhcnJheSgnSEFTSCcsJ0xJTkVBUiBIQVNIJywnS0VZJywnTElORUFSIEtFWScsJ1JBTkdFJywnTElTVCcpYXMkeikkUmZbJHpdPSR6OyREZz1yZWZlcmVuY2FibGVfcHJpbWFyeSgkYSk7JGhkPWFycmF5KCk7Zm9yZWFjaCgkRGcKYXMkT2g9PiRvKSRoZFtzdHJfcmVwbGFjZSgiYCIsImBgIiwkT2gpLiJgIi5zdHJfcmVwbGFjZSgiYCIsImBgIiwkb1siZmllbGQiXSldPSRPaDskRWY9YXJyYXkoKTskUj1hcnJheSgpO2lmKCRhIT0iIil7JEVmPWZpZWxkcygkYSk7JFI9dGFibGVfc3RhdHVzKCRhKTtpZighJFIpJG49J05vIHRhYmxlcy4nO30kSj0kX1BPU1Q7JEpbImZpZWxkcyJdPShhcnJheSkkSlsiZmllbGRzIl07aWYoJEpbImF1dG9faW5jcmVtZW50X2NvbCJdKSRKWyJmaWVsZHMiXVskSlsiYXV0b19pbmNyZW1lbnRfY29sIl1dWyJhdXRvX2luY3JlbWVudCJdPXRydWU7aWYoJF9QT1NUKXNldF9hZG1pbmVyX3NldHRpbmdzKGFycmF5KCJjb21tZW50cyI9PiRfUE9TVFsiY29tbWVudHMiXSwiZGVmYXVsdHMiPT4kX1BPU1RbImRlZmF1bHRzIl0pKTtpZigkX1BPU1QmJiFwcm9jZXNzX2ZpZWxkcygkSlsiZmllbGRzIl0pJiYhJG4pe2lmKCRfUE9TVFsiZHJvcCJdKXF1ZXJpZXNfcmVkaXJlY3Qoc3Vic3RyKE1FLDAsLTEpLCdUYWJsZSBoYXMgYmVlbiBkcm9wcGVkLicsZHJvcF90YWJsZXMoYXJyYXkoJGEpKSk7ZWxzZXskcD1hcnJheSgpOyRDYT1hcnJheSgpOyRNaT1mYWxzZTskZmQ9YXJyYXkoKTskRGY9cmVzZXQoJEVmKTskQWE9IiBGSVJTVCI7Zm9yZWFjaCgkSlsiZmllbGRzIl1hcyR6PT4kbyl7JHI9JGhkWyRvWyJ0eXBlIl1dOyRfaT0oJHIhPT1udWxsPyREZ1skcl06JG8pO2lmKCRvWyJmaWVsZCJdIT0iIil7aWYoISRvWyJoYXNfZGVmYXVsdCJdKSRvWyJkZWZhdWx0Il09bnVsbDtpZigkej09JEpbImF1dG9faW5jcmVtZW50X2NvbCJdKSRvWyJhdXRvX2luY3JlbWVudCJdPXRydWU7JHJnPXByb2Nlc3NfZmllbGQoJG8sJF9pKTskQ2FbXT1hcnJheSgkb1sib3JpZyJdLCRyZywkQWEpO2lmKCEkRGZ8fCRyZyE9cHJvY2Vzc19maWVsZCgkRGYsJERmKSl7JHBbXT1hcnJheSgkb1sib3JpZyJdLCRyZywkQWEpO2lmKCRvWyJvcmlnIl0hPSIifHwkQWEpJE1pPXRydWU7fWlmKCRyIT09bnVsbCkkZmRbaWRmX2VzY2FwZSgkb1siZmllbGQiXSldPSgkYSE9IiImJiR5IT0ic3FsaXRlIj8iQUREIjoiICIpLmZvcm1hdF9mb3JlaWduX2tleShhcnJheSgndGFibGUnPT4kaGRbJG9bInR5cGUiXV0sJ3NvdXJjZSc9PmFycmF5KCRvWyJmaWVsZCJdKSwndGFyZ2V0Jz0+YXJyYXkoJF9pWyJmaWVsZCJdKSwnb25fZGVsZXRlJz0+JG9bIm9uX2RlbGV0ZSJdLCkpOyRBYT0iIEFGVEVSICIuaWRmX2VzY2FwZSgkb1siZmllbGQiXSk7fWVsc2VpZigkb1sib3JpZyJdIT0iIil7JE1pPXRydWU7JHBbXT1hcnJheSgkb1sib3JpZyJdKTt9aWYoJG9bIm9yaWciXSE9IiIpeyREZj1uZXh0KCRFZik7aWYoISREZikkQWE9IiI7fX0kVGY9IiI7aWYoJFJmWyRKWyJwYXJ0aXRpb25fYnkiXV0peyRVZj1hcnJheSgpO2lmKCRKWyJwYXJ0aXRpb25fYnkiXT09J1JBTkdFJ3x8JEpbInBhcnRpdGlvbl9ieSJdPT0nTElTVCcpe2ZvcmVhY2goYXJyYXlfZmlsdGVyKCRKWyJwYXJ0aXRpb25fbmFtZXMiXSlhcyR6PT4kWCl7JFk9JEpbInBhcnRpdGlvbl92YWx1ZXMiXVskel07JFVmW109IlxuICBQQVJUSVRJT04gIi5pZGZfZXNjYXBlKCRYKS4iIFZBTFVFUyAiLigkSlsicGFydGl0aW9uX2J5Il09PSdSQU5HRSc/IkxFU1MgVEhBTiI6IklOIikuKCRZIT0iIj8iICgkWSkiOiIgTUFYVkFMVUUiKTt9fSRUZi49IlxuUEFSVElUSU9OIEJZICRKW3BhcnRpdGlvbl9ieV0oJEpbcGFydGl0aW9uXSkiLigkVWY/IiAoIi5pbXBsb2RlKCIsIiwkVWYpLiJcbikiOigkSlsicGFydGl0aW9ucyJdPyIgUEFSVElUSU9OUyAiLigrJEpbInBhcnRpdGlvbnMiXSk6IiIpKTt9ZWxzZWlmKHN1cHBvcnQoInBhcnRpdGlvbmluZyIpJiZwcmVnX21hdGNoKCJ+cGFydGl0aW9uZWR+IiwkUlsiQ3JlYXRlX29wdGlvbnMiXSkpJFRmLj0iXG5SRU1PVkUgUEFSVElUSU9OSU5HIjskS2U9J1RhYmxlIGhhcyBiZWVuIGFsdGVyZWQuJztpZigkYT09IiIpe2Nvb2tpZSgiYWRtaW5lcl9lbmdpbmUiLCRKWyJFbmdpbmUiXSk7JEtlPSdUYWJsZSBoYXMgYmVlbiBjcmVhdGVkLic7fSREPXRyaW0oJEpbIm5hbWUiXSk7cXVlcmllc19yZWRpcmVjdChNRS4oc3VwcG9ydCgidGFibGUiKT8idGFibGU9Ijoic2VsZWN0PSIpLnVybGVuY29kZSgkRCksJEtlLGFsdGVyX3RhYmxlKCRhLCRELCgkeT09InNxbGl0ZSImJigkTWl8fCRmZCk/JENhOiRwKSwkZmQsKCRKWyJDb21tZW50Il0hPSRSWyJDb21tZW50Il0/JEpbIkNvbW1lbnQiXTpudWxsKSwoJEpbIkVuZ2luZSJdJiYkSlsiRW5naW5lIl0hPSRSWyJFbmdpbmUiXT8kSlsiRW5naW5lIl06IiIpLCgkSlsiQ29sbGF0aW9uIl0mJiRKWyJDb2xsYXRpb24iXSE9JFJbIkNvbGxhdGlvbiJdPyRKWyJDb2xsYXRpb24iXToiIiksKCRKWyJBdXRvX2luY3JlbWVudCJdIT0iIj9udW1iZXIoJEpbIkF1dG9faW5jcmVtZW50Il0pOiIiKSwkVGYpKTt9fXBhZ2VfaGVhZGVyKCgkYSE9IiI/J0FsdGVyIHRhYmxlJzonQ3JlYXRlIHRhYmxlJyksJG4sYXJyYXkoInRhYmxlIj0+JGEpLGgoJGEpKTtpZighJF9QT1NUKXskSj1hcnJheSgiRW5naW5lIj0+JF9DT09LSUVbImFkbWluZXJfZW5naW5lIl0sImZpZWxkcyI9PmFycmF5KGFycmF5KCJmaWVsZCI9PiIiLCJ0eXBlIj0+KGlzc2V0KCRVWyJpbnQiXSk/ImludCI6KGlzc2V0KCRVWyJpbnRlZ2VyIl0pPyJpbnRlZ2VyIjoiIikpLCJvbl91cGRhdGUiPT4iIikpLCJwYXJ0aXRpb25fbmFtZXMiPT5hcnJheSgiIiksKTtpZigkYSE9IiIpeyRKPSRSOyRKWyJuYW1lIl09JGE7JEpbImZpZWxkcyJdPWFycmF5KCk7aWYoISRfR0VUWyJhdXRvX2luY3JlbWVudCJdKSRKWyJBdXRvX2luY3JlbWVudCJdPSIiO2ZvcmVhY2goJEVmCmFzJG8peyRvWyJoYXNfZGVmYXVsdCJdPWlzc2V0KCRvWyJkZWZhdWx0Il0pOyRKWyJmaWVsZHMiXVtdPSRvO31pZihzdXBwb3J0KCJwYXJ0aXRpb25pbmciKSl7JG1kPSJGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5QQVJUSVRJT05TIFdIRVJFIFRBQkxFX1NDSEVNQSA9ICIucShEQikuIiBBTkQgVEFCTEVfTkFNRSA9ICIucSgkYSk7JEg9JGctPnF1ZXJ5KCJTRUxFQ1QgUEFSVElUSU9OX01FVEhPRCwgUEFSVElUSU9OX09SRElOQUxfUE9TSVRJT04sIFBBUlRJVElPTl9FWFBSRVNTSU9OICRtZCBPUkRFUiBCWSBQQVJUSVRJT05fT1JESU5BTF9QT1NJVElPTiBERVNDIExJTUlUIDEiKTtsaXN0KCRKWyJwYXJ0aXRpb25fYnkiXSwkSlsicGFydGl0aW9ucyJdLCRKWyJwYXJ0aXRpb24iXSk9JEgtPmZldGNoX3JvdygpOyRVZj1nZXRfa2V5X3ZhbHMoIlNFTEVDVCBQQVJUSVRJT05fTkFNRSwgUEFSVElUSU9OX0RFU0NSSVBUSU9OICRtZCBBTkQgUEFSVElUSU9OX05BTUUgIT0gJycgT1JERVIgQlkgUEFSVElUSU9OX09SRElOQUxfUE9TSVRJT04iKTskVWZbIiJdPSIiOyRKWyJwYXJ0aXRpb25fbmFtZXMiXT1hcnJheV9rZXlzKCRVZik7JEpbInBhcnRpdGlvbl92YWx1ZXMiXT1hcnJheV92YWx1ZXMoJFVmKTt9fX0kbGI9Y29sbGF0aW9ucygpOyR6Yz1lbmdpbmVzKCk7Zm9yZWFjaCgkemMKYXMkeWMpe2lmKCFzdHJjYXNlY21wKCR5YywkSlsiRW5naW5lIl0pKXskSlsiRW5naW5lIl09JHljO2JyZWFrO319ZWNobycKPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm0iPgo8cD4KJztpZihzdXBwb3J0KCJjb2x1bW5zIil8fCRhPT0iIil7ZWNobydUYWJsZSBuYW1lOiA8aW5wdXQgbmFtZT0ibmFtZSIgZGF0YS1tYXhsZW5ndGg9IjY0IiB2YWx1ZT0iJyxoKCRKWyJuYW1lIl0pLCciIGF1dG9jYXBpdGFsaXplPSJvZmYiPgonO2lmKCRhPT0iIiYmISRfUE9TVCllY2hvCnNjcmlwdCgiZm9jdXMocXMoJyNmb3JtJylbJ25hbWUnXSk7Iik7ZWNobygkemM/IjxzZWxlY3QgbmFtZT0nRW5naW5lJz4iLm9wdGlvbmxpc3QoYXJyYXkoIiI9PiIoIi4nZW5naW5lJy4iKSIpKyR6YywkSlsiRW5naW5lIl0pLiI8L3NlbGVjdD4iLm9uX2hlbHAoImdldFRhcmdldChldmVudCkudmFsdWUiLDEpLnNjcmlwdCgicXNsKCdzZWxlY3QnKS5vbmNoYW5nZSA9IGhlbHBDbG9zZTsiKToiIiksJyAnLCgkbGImJiFwcmVnX21hdGNoKCJ+c3FsaXRlfG1zc3FsfiIsJHkpP2h0bWxfc2VsZWN0KCJDb2xsYXRpb24iLGFycmF5KCIiPT4iKCIuJ2NvbGxhdGlvbicuIikiKSskbGIsJEpbIkNvbGxhdGlvbiJdKToiIiksJyA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSI+Cic7fWVjaG8nCic7aWYoc3VwcG9ydCgiY29sdW1ucyIpKXtlY2hvJzxkaXYgY2xhc3M9InNjcm9sbGFibGUiPgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGlkPSJlZGl0LWZpZWxkcyIgY2xhc3M9Im5vd3JhcCI+Cic7ZWRpdF9maWVsZHMoJEpbImZpZWxkcyJdLCRsYiwiVEFCTEUiLCRoZCk7ZWNobyc8L3RhYmxlPgonLHNjcmlwdCgiZWRpdEZpZWxkcygpOyIpLCc8L2Rpdj4KPHA+CkF1dG8gSW5jcmVtZW50OiA8aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJBdXRvX2luY3JlbWVudCIgc2l6ZT0iNiIgdmFsdWU9IicsaCgkSlsiQXV0b19pbmNyZW1lbnQiXSksJyI+CicsY2hlY2tib3goImRlZmF1bHRzIiwxLCgkX1BPU1Q/JF9QT1NUWyJkZWZhdWx0cyJdOmFkbWluZXJfc2V0dGluZygiZGVmYXVsdHMiKSksJ0RlZmF1bHQgdmFsdWVzJywiY29sdW1uU2hvdyh0aGlzLmNoZWNrZWQsIDUpIiwianNvbmx5IiksKHN1cHBvcnQoImNvbW1lbnQiKT9jaGVja2JveCgiY29tbWVudHMiLDEsKCRfUE9TVD8kX1BPU1RbImNvbW1lbnRzIl06YWRtaW5lcl9zZXR0aW5nKCJjb21tZW50cyIpKSwnQ29tbWVudCcsImVkaXRpbmdDb21tZW50c0NsaWNrKHRoaXMsIHRydWUpOyIsImpzb25seSIpLicgPGlucHV0IG5hbWU9IkNvbW1lbnQiIHZhbHVlPSInLmgoJEpbIkNvbW1lbnQiXSkuJyIgZGF0YS1tYXhsZW5ndGg9IicuKG1pbl92ZXJzaW9uKDUuNSk/MjA0ODo2MCkuJyI+JzonJyksJzxwPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSI+Cic7fWVjaG8nCic7aWYoJGEhPSIiKXtlY2hvJzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImRyb3AiIHZhbHVlPSJEcm9wIj4nLGNvbmZpcm0oc3ByaW50ZignRHJvcCAlcz8nLCRhKSk7fWlmKHN1cHBvcnQoInBhcnRpdGlvbmluZyIpKXskU2Y9cHJlZ19tYXRjaCgnflJBTkdFfExJU1R+JywkSlsicGFydGl0aW9uX2J5Il0pO3ByaW50X2ZpZWxkc2V0KCJwYXJ0aXRpb24iLCdQYXJ0aXRpb24gYnknLCRKWyJwYXJ0aXRpb25fYnkiXSk7ZWNobyc8cD4KJywiPHNlbGVjdCBuYW1lPSdwYXJ0aXRpb25fYnknPiIub3B0aW9ubGlzdChhcnJheSgiIj0+IiIpKyRSZiwkSlsicGFydGl0aW9uX2J5Il0pLiI8L3NlbGVjdD4iLm9uX2hlbHAoImdldFRhcmdldChldmVudCkudmFsdWUucmVwbGFjZSgvLi8sICdQQVJUSVRJT04gQlkgXCQmJykiLDEpLnNjcmlwdCgicXNsKCdzZWxlY3QnKS5vbmNoYW5nZSA9IHBhcnRpdGlvbkJ5Q2hhbmdlOyIpLCcoPGlucHV0IG5hbWU9InBhcnRpdGlvbiIgdmFsdWU9IicsaCgkSlsicGFydGl0aW9uIl0pLCciPikKUGFydGl0aW9uczogPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0icGFydGl0aW9ucyIgY2xhc3M9InNpemUnLCgkU2Z8fCEkSlsicGFydGl0aW9uX2J5Il0/IiBoaWRkZW4iOiIiKSwnIiB2YWx1ZT0iJyxoKCRKWyJwYXJ0aXRpb25zIl0pLCciPgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGlkPSJwYXJ0aXRpb24tdGFibGUiJywoJFNmPyIiOiIgY2xhc3M9J2hpZGRlbiciKSwnPgo8dGhlYWQ+PHRyPjx0aD5QYXJ0aXRpb24gbmFtZTx0aD5WYWx1ZXM8L3RoZWFkPgonO2ZvcmVhY2goJEpbInBhcnRpdGlvbl9uYW1lcyJdYXMkej0+JFgpe2VjaG8nPHRyPicsJzx0ZD48aW5wdXQgbmFtZT0icGFydGl0aW9uX25hbWVzW10iIHZhbHVlPSInLmgoJFgpLiciIGF1dG9jYXBpdGFsaXplPSJvZmYiPicsKCR6PT1jb3VudCgkSlsicGFydGl0aW9uX25hbWVzIl0pLTE/c2NyaXB0KCJxc2woJ2lucHV0Jykub25pbnB1dCA9IHBhcnRpdGlvbk5hbWVDaGFuZ2U7Iik6JycpLCc8dGQ+PGlucHV0IG5hbWU9InBhcnRpdGlvbl92YWx1ZXNbXSIgdmFsdWU9IicuaCgkSlsicGFydGl0aW9uX3ZhbHVlcyJdWyR6XSkuJyI+Jzt9ZWNobyc8L3RhYmxlPgo8L2Rpdj48L2ZpZWxkc2V0PgonO31lY2hvJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRva2VuIiB2YWx1ZT0iJywkbmksJyI+CjwvZm9ybT4KJzt9ZWxzZWlmKGlzc2V0KCRfR0VUWyJpbmRleGVzIl0pKXskYT0kX0dFVFsiaW5kZXhlcyJdOyRMZD1hcnJheSgiUFJJTUFSWSIsIlVOSVFVRSIsIklOREVYIik7JFI9dGFibGVfc3RhdHVzKCRhLHRydWUpO2lmKHByZWdfbWF0Y2goJ35NeUlTQU18TT9hcmlhJy4obWluX3ZlcnNpb24oNS42LCcxMC4wLjUnKT8nfElubm9EQic6JycpLid+aScsJFJbIkVuZ2luZSJdKSkkTGRbXT0iRlVMTFRFWFQiO2lmKHByZWdfbWF0Y2goJ35NeUlTQU18TT9hcmlhJy4obWluX3ZlcnNpb24oNS43LCcxMC4yLjInKT8nfElubm9EQic6JycpLid+aScsJFJbIkVuZ2luZSJdKSkkTGRbXT0iU1BBVElBTCI7JHg9aW5kZXhlcygkYSk7JGtnPWFycmF5KCk7aWYoJHk9PSJtb25nbyIpeyRrZz0keFsiX2lkXyJdO3Vuc2V0KCRMZFswXSk7dW5zZXQoJHhbIl9pZF8iXSk7fSRKPSRfUE9TVDtpZigkX1BPU1QmJiEkbiYmISRfUE9TVFsiYWRkIl0mJiEkX1BPU1RbImRyb3BfY29sIl0peyRjPWFycmF5KCk7Zm9yZWFjaCgkSlsiaW5kZXhlcyJdYXMkdyl7JEQ9JHdbIm5hbWUiXTtpZihpbl9hcnJheSgkd1sidHlwZSJdLCRMZCkpeyRmPWFycmF5KCk7JHVlPWFycmF5KCk7JGNjPWFycmF5KCk7JE49YXJyYXkoKTtrc29ydCgkd1siY29sdW1ucyJdKTtmb3JlYWNoKCR3WyJjb2x1bW5zIl1hcyR6PT4kZSl7aWYoJGUhPSIiKXskdGU9JHdbImxlbmd0aHMiXVskel07JGJjPSR3WyJkZXNjcyJdWyR6XTskTltdPWlkZl9lc2NhcGUoJGUpLigkdGU/IigiLigrJHRlKS4iKSI6IiIpLigkYmM/IiBERVNDIjoiIik7JGZbXT0kZTskdWVbXT0oJHRlPyR0ZTpudWxsKTskY2NbXT0kYmM7fX1pZigkZil7JEljPSR4WyREXTtpZigkSWMpe2tzb3J0KCRJY1siY29sdW1ucyJdKTtrc29ydCgkSWNbImxlbmd0aHMiXSk7a3NvcnQoJEljWyJkZXNjcyJdKTtpZigkd1sidHlwZSJdPT0kSWNbInR5cGUiXSYmYXJyYXlfdmFsdWVzKCRJY1siY29sdW1ucyJdKT09PSRmJiYoISRJY1sibGVuZ3RocyJdfHxhcnJheV92YWx1ZXMoJEljWyJsZW5ndGhzIl0pPT09JHVlKSYmYXJyYXlfdmFsdWVzKCRJY1siZGVzY3MiXSk9PT0kY2Mpe3Vuc2V0KCR4WyREXSk7Y29udGludWU7fX0kY1tdPWFycmF5KCR3WyJ0eXBlIl0sJEQsJE4pO319fWZvcmVhY2goJHgKYXMkRD0+JEljKSRjW109YXJyYXkoJEljWyJ0eXBlIl0sJEQsIkRST1AiKTtpZighJGMpcmVkaXJlY3QoTUUuInRhYmxlPSIudXJsZW5jb2RlKCRhKSk7cXVlcmllc19yZWRpcmVjdChNRS4idGFibGU9Ii51cmxlbmNvZGUoJGEpLCdJbmRleGVzIGhhdmUgYmVlbiBhbHRlcmVkLicsYWx0ZXJfaW5kZXhlcygkYSwkYykpO31wYWdlX2hlYWRlcignSW5kZXhlcycsJG4sYXJyYXkoInRhYmxlIj0+JGEpLGgoJGEpKTskcD1hcnJheV9rZXlzKGZpZWxkcygkYSkpO2lmKCRfUE9TVFsiYWRkIl0pe2ZvcmVhY2goJEpbImluZGV4ZXMiXWFzJHo9PiR3KXtpZigkd1siY29sdW1ucyJdW2NvdW50KCR3WyJjb2x1bW5zIl0pXSE9IiIpJEpbImluZGV4ZXMiXVskel1bImNvbHVtbnMiXVtdPSIiO30kdz1lbmQoJEpbImluZGV4ZXMiXSk7aWYoJHdbInR5cGUiXXx8YXJyYXlfZmlsdGVyKCR3WyJjb2x1bW5zIl0sJ3N0cmxlbicpKSRKWyJpbmRleGVzIl1bXT1hcnJheSgiY29sdW1ucyI9PmFycmF5KDE9PiIiKSk7fWlmKCEkSil7Zm9yZWFjaCgkeAphcyR6PT4kdyl7JHhbJHpdWyJuYW1lIl09JHo7JHhbJHpdWyJjb2x1bW5zIl1bXT0iIjt9JHhbXT1hcnJheSgiY29sdW1ucyI9PmFycmF5KDE9PiIiKSk7JEpbImluZGV4ZXMiXT0keDt9ZWNobycKPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CjxkaXYgY2xhc3M9InNjcm9sbGFibGUiPgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJub3dyYXAiPgo8dGhlYWQ+PHRyPgo8dGggaWQ9ImxhYmVsLXR5cGUiPkluZGV4IFR5cGUKPHRoPjxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJ3YXlvZmYiPkNvbHVtbiAobGVuZ3RoKQo8dGggaWQ9ImxhYmVsLW5hbWUiPk5hbWUKPHRoPjxub3NjcmlwdD4nLCI8aW5wdXQgdHlwZT0naW1hZ2UnIGNsYXNzPSdpY29uJyBuYW1lPSdhZGRbMF0nIHNyYz0nIi5oKHByZWdfcmVwbGFjZSgiflxcPy4qfiIsIiIsTUUpLiI/ZmlsZT1wbHVzLmdpZiZ2ZXJzaW9uPTQuOC4xIikuIicgYWx0PScrJyB0aXRsZT0nIi4nQWRkIG5leHQnLiInPiIsJzwvbm9zY3JpcHQ+CjwvdGhlYWQ+Cic7aWYoJGtnKXtlY2hvIjx0cj48dGQ+UFJJTUFSWTx0ZD4iO2ZvcmVhY2goJGtnWyJjb2x1bW5zIl1hcyR6PT4kZSl7ZWNobwpzZWxlY3RfaW5wdXQoIiBkaXNhYmxlZCIsJHAsJGUpLCI8bGFiZWw+PGlucHV0IGRpc2FibGVkIHR5cGU9J2NoZWNrYm94Jz4iLidkZXNjZW5kaW5nJy4iPC9sYWJlbD4gIjt9ZWNobyI8dGQ+PHRkPlxuIjt9JGVlPTE7Zm9yZWFjaCgkSlsiaW5kZXhlcyJdYXMkdyl7aWYoISRfUE9TVFsiZHJvcF9jb2wiXXx8JGVlIT1rZXkoJF9QT1NUWyJkcm9wX2NvbCJdKSl7ZWNobyI8dHI+PHRkPiIuaHRtbF9zZWxlY3QoImluZGV4ZXNbJGVlXVt0eXBlXSIsYXJyYXkoLTE9PiIiKSskTGQsJHdbInR5cGUiXSwoJGVlPT1jb3VudCgkSlsiaW5kZXhlcyJdKT8iaW5kZXhlc0FkZFJvdy5jYWxsKHRoaXMpOyI6MSksImxhYmVsLXR5cGUiKSwiPHRkPiI7a3NvcnQoJHdbImNvbHVtbnMiXSk7JHQ9MTtmb3JlYWNoKCR3WyJjb2x1bW5zIl1hcyR6PT4kZSl7ZWNobyI8c3Bhbj4iLnNlbGVjdF9pbnB1dCgiIG5hbWU9J2luZGV4ZXNbJGVlXVtjb2x1bW5zXVskdF0nIHRpdGxlPSciLidDb2x1bW4nLiInIiwoJHA/YXJyYXlfY29tYmluZSgkcCwkcCk6JHApLCRlLCJwYXJ0aWFsKCIuKCR0PT1jb3VudCgkd1siY29sdW1ucyJdKT8iaW5kZXhlc0FkZENvbHVtbiI6ImluZGV4ZXNDaGFuZ2VDb2x1bW4iKS4iLCAnIi5qc19lc2NhcGUoJHk9PSJzcWwiPyIiOiRfR0VUWyJpbmRleGVzIl0uIl8iKS4iJykiKSwoJHk9PSJzcWwifHwkeT09Im1zc3FsIj8iPGlucHV0IHR5cGU9J251bWJlcicgbmFtZT0naW5kZXhlc1skZWVdW2xlbmd0aHNdWyR0XScgY2xhc3M9J3NpemUnIHZhbHVlPSciLmgoJHdbImxlbmd0aHMiXVskel0pLiInIHRpdGxlPSciLidMZW5ndGgnLiInPiI6IiIpLChzdXBwb3J0KCJkZXNjaWR4Iik/Y2hlY2tib3goImluZGV4ZXNbJGVlXVtkZXNjc11bJHRdIiwxLCR3WyJkZXNjcyJdWyR6XSwnZGVzY2VuZGluZycpOiIiKSwiIDwvc3Bhbj4iOyR0Kys7fWVjaG8iPHRkPjxpbnB1dCBuYW1lPSdpbmRleGVzWyRlZV1bbmFtZV0nIHZhbHVlPSciLmgoJHdbIm5hbWUiXSkuIicgYXV0b2NhcGl0YWxpemU9J29mZicgYXJpYS1sYWJlbGxlZGJ5PSdsYWJlbC1uYW1lJz5cbiIsIjx0ZD48aW5wdXQgdHlwZT0naW1hZ2UnIGNsYXNzPSdpY29uJyBuYW1lPSdkcm9wX2NvbFskZWVdJyBzcmM9JyIuaChwcmVnX3JlcGxhY2UoIn5cXD8uKn4iLCIiLE1FKS4iP2ZpbGU9Y3Jvc3MuZ2lmJnZlcnNpb249NC44LjEiKS4iJyBhbHQ9J3gnIHRpdGxlPSciLidSZW1vdmUnLiInPiIuc2NyaXB0KCJxc2woJ2lucHV0Jykub25jbGljayA9IHBhcnRpYWwoZWRpdGluZ1JlbW92ZVJvdywgJ2luZGV4ZXNcJDFbdHlwZV0nKTsiKTt9JGVlKys7fWVjaG8nPC90YWJsZT4KPC9kaXY+CjxwPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRva2VuIiB2YWx1ZT0iJywkbmksJyI+CjwvZm9ybT4KJzt9ZWxzZWlmKGlzc2V0KCRfR0VUWyJkYXRhYmFzZSJdKSl7JEo9JF9QT1NUO2lmKCRfUE9TVCYmISRuJiYhaXNzZXQoJF9QT1NUWyJhZGRfeCJdKSl7JEQ9dHJpbSgkSlsibmFtZSJdKTtpZigkX1BPU1RbImRyb3AiXSl7JF9HRVRbImRiIl09IiI7cXVlcmllc19yZWRpcmVjdChyZW1vdmVfZnJvbV91cmkoImRifGRhdGFiYXNlIiksJ0RhdGFiYXNlIGhhcyBiZWVuIGRyb3BwZWQuJyxkcm9wX2RhdGFiYXNlcyhhcnJheShEQikpKTt9ZWxzZWlmKERCIT09JEQpe2lmKERCIT0iIil7JF9HRVRbImRiIl09JEQ7cXVlcmllc19yZWRpcmVjdChwcmVnX3JlcGxhY2UoJ35cYmRiPVteJl0qJn4nLCcnLE1FKS4iZGI9Ii51cmxlbmNvZGUoJEQpLCdEYXRhYmFzZSBoYXMgYmVlbiByZW5hbWVkLicscmVuYW1lX2RhdGFiYXNlKCRELCRKWyJjb2xsYXRpb24iXSkpO31lbHNleyRrPWV4cGxvZGUoIlxuIixzdHJfcmVwbGFjZSgiXHIiLCIiLCREKSk7JEloPXRydWU7JG5lPSIiO2ZvcmVhY2goJGsKYXMkbCl7aWYoY291bnQoJGspPT0xfHwkbCE9IiIpe2lmKCFjcmVhdGVfZGF0YWJhc2UoJGwsJEpbImNvbGxhdGlvbiJdKSkkSWg9ZmFsc2U7JG5lPSRsO319cmVzdGFydF9zZXNzaW9uKCk7c2V0X3Nlc3Npb24oImRicyIsbnVsbCk7cXVlcmllc19yZWRpcmVjdChNRS4iZGI9Ii51cmxlbmNvZGUoJG5lKSwnRGF0YWJhc2UgaGFzIGJlZW4gY3JlYXRlZC4nLCRJaCk7fX1lbHNle2lmKCEkSlsiY29sbGF0aW9uIl0pcmVkaXJlY3Qoc3Vic3RyKE1FLDAsLTEpKTtxdWVyeV9yZWRpcmVjdCgiQUxURVIgREFUQUJBU0UgIi5pZGZfZXNjYXBlKCREKS4ocHJlZ19tYXRjaCgnfl5bYS16MC05X10rJH5pJywkSlsiY29sbGF0aW9uIl0pPyIgQ09MTEFURSAkSltjb2xsYXRpb25dIjoiIiksc3Vic3RyKE1FLDAsLTEpLCdEYXRhYmFzZSBoYXMgYmVlbiBhbHRlcmVkLicpO319cGFnZV9oZWFkZXIoREIhPSIiPydBbHRlciBkYXRhYmFzZSc6J0NyZWF0ZSBkYXRhYmFzZScsJG4sYXJyYXkoKSxoKERCKSk7JGxiPWNvbGxhdGlvbnMoKTskRD1EQjtpZigkX1BPU1QpJEQ9JEpbIm5hbWUiXTtlbHNlaWYoREIhPSIiKSRKWyJjb2xsYXRpb24iXT1kYl9jb2xsYXRpb24oREIsJGxiKTtlbHNlaWYoJHk9PSJzcWwiKXtmb3JlYWNoKGdldF92YWxzKCJTSE9XIEdSQU5UUyIpYXMkb2Qpe2lmKHByZWdfbWF0Y2goJ34gT04gKGAoKFteXFxcXGBdfGBgfFxcXFwuKSopJWBcLlwqKT9+Jywkb2QsJEMpJiYkQ1sxXSl7JEQ9c3RyaXBjc2xhc2hlcyhpZGZfdW5lc2NhcGUoImAkQ1syXWAiKSk7YnJlYWs7fX19ZWNobycKPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CjxwPgonLCgkX1BPU1RbImFkZF94Il18fHN0cnBvcygkRCwiXG4iKT8nPHRleHRhcmVhIGlkPSJuYW1lIiBuYW1lPSJuYW1lIiByb3dzPSIxMCIgY29scz0iNDAiPicuaCgkRCkuJzwvdGV4dGFyZWE+PGJyPic6JzxpbnB1dCBuYW1lPSJuYW1lIiBpZD0ibmFtZSIgdmFsdWU9IicuaCgkRCkuJyIgZGF0YS1tYXhsZW5ndGg9IjY0IiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIj4nKS4iXG4iLigkbGI/aHRtbF9zZWxlY3QoImNvbGxhdGlvbiIsYXJyYXkoIiI9PiIoIi4nY29sbGF0aW9uJy4iKSIpKyRsYiwkSlsiY29sbGF0aW9uIl0pLmRvY19saW5rKGFycmF5KCdzcWwnPT4iY2hhcnNldC1jaGFyc2V0cy5odG1sIiwnbWFyaWFkYic9PiJzdXBwb3J0ZWQtY2hhcmFjdGVyLXNldHMtYW5kLWNvbGxhdGlvbnMvIiwnbXNzcWwnPT4ibXMxODc5NjMuYXNweCIsKSk6IiIpLHNjcmlwdCgiZm9jdXMocXMoJyNuYW1lJykpOyIpLCc8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSI+Cic7aWYoREIhPSIiKWVjaG8iPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nZHJvcCcgdmFsdWU9JyIuJ0Ryb3AnLiInPiIuY29uZmlybShzcHJpbnRmKCdEcm9wICVzPycsREIpKS4iXG4iO2Vsc2VpZighJF9QT1NUWyJhZGRfeCJdJiYkX0dFVFsiZGIiXT09IiIpZWNobyI8aW5wdXQgdHlwZT0naW1hZ2UnIGNsYXNzPSdpY29uJyBuYW1lPSdhZGQnIHNyYz0nIi5oKHByZWdfcmVwbGFjZSgiflxcPy4qfiIsIiIsTUUpLiI/ZmlsZT1wbHVzLmdpZiZ2ZXJzaW9uPTQuOC4xIikuIicgYWx0PScrJyB0aXRsZT0nIi4nQWRkIG5leHQnLiInPlxuIjtlY2hvJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRva2VuIiB2YWx1ZT0iJywkbmksJyI+CjwvZm9ybT4KJzt9ZWxzZWlmKGlzc2V0KCRfR0VUWyJzY2hlbWUiXSkpeyRKPSRfUE9TVDtpZigkX1BPU1QmJiEkbil7JEE9cHJlZ19yZXBsYWNlKCd+bnM9W14mXSomficsJycsTUUpLiJucz0iO2lmKCRfUE9TVFsiZHJvcCJdKXF1ZXJ5X3JlZGlyZWN0KCJEUk9QIFNDSEVNQSAiLmlkZl9lc2NhcGUoJF9HRVRbIm5zIl0pLCRBLCdTY2hlbWEgaGFzIGJlZW4gZHJvcHBlZC4nKTtlbHNleyREPXRyaW0oJEpbIm5hbWUiXSk7JEEuPXVybGVuY29kZSgkRCk7aWYoJF9HRVRbIm5zIl09PSIiKXF1ZXJ5X3JlZGlyZWN0KCJDUkVBVEUgU0NIRU1BICIuaWRmX2VzY2FwZSgkRCksJEEsJ1NjaGVtYSBoYXMgYmVlbiBjcmVhdGVkLicpO2Vsc2VpZigkX0dFVFsibnMiXSE9JEQpcXVlcnlfcmVkaXJlY3QoIkFMVEVSIFNDSEVNQSAiLmlkZl9lc2NhcGUoJF9HRVRbIm5zIl0pLiIgUkVOQU1FIFRPICIuaWRmX2VzY2FwZSgkRCksJEEsJ1NjaGVtYSBoYXMgYmVlbiBhbHRlcmVkLicpO2Vsc2UKcmVkaXJlY3QoJEEpO319cGFnZV9oZWFkZXIoJF9HRVRbIm5zIl0hPSIiPydBbHRlciBzY2hlbWEnOidDcmVhdGUgc2NoZW1hJywkbik7aWYoISRKKSRKWyJuYW1lIl09JF9HRVRbIm5zIl07ZWNobycKPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CjxwPjxpbnB1dCBuYW1lPSJuYW1lIiBpZD0ibmFtZSIgdmFsdWU9IicsaCgkSlsibmFtZSJdKSwnIiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIj4KJyxzY3JpcHQoImZvY3VzKHFzKCcjbmFtZScpKTsiKSwnPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNhdmUiPgonO2lmKCRfR0VUWyJucyJdIT0iIillY2hvIjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2Ryb3AnIHZhbHVlPSciLidEcm9wJy4iJz4iLmNvbmZpcm0oc3ByaW50ZignRHJvcCAlcz8nLCRfR0VUWyJucyJdKSkuIlxuIjtlY2hvJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRva2VuIiB2YWx1ZT0iJywkbmksJyI+CjwvZm9ybT4KJzt9ZWxzZWlmKGlzc2V0KCRfR0VUWyJjYWxsIl0pKXskZGE9KCRfR0VUWyJuYW1lIl0/JF9HRVRbIm5hbWUiXTokX0dFVFsiY2FsbCJdKTtwYWdlX2hlYWRlcignQ2FsbCcuIjogIi5oKCRkYSksJG4pOyRUZz1yb3V0aW5lKCRfR0VUWyJjYWxsIl0sKGlzc2V0KCRfR0VUWyJjYWxsZiJdKT8iRlVOQ1RJT04iOiJQUk9DRURVUkUiKSk7JEpkPWFycmF5KCk7JElmPWFycmF5KCk7Zm9yZWFjaCgkVGdbImZpZWxkcyJdYXMkdD0+JG8pe2lmKHN1YnN0cigkb1siaW5vdXQiXSwtMyk9PSJPVVQiKSRJZlskdF09IkAiLmlkZl9lc2NhcGUoJG9bImZpZWxkIl0pLiIgQVMgIi5pZGZfZXNjYXBlKCRvWyJmaWVsZCJdKTtpZighJG9bImlub3V0Il18fHN1YnN0cigkb1siaW5vdXQiXSwwLDIpPT0iSU4iKSRKZFtdPSR0O31pZighJG4mJiRfUE9TVCl7JFhhPWFycmF5KCk7Zm9yZWFjaCgkVGdbImZpZWxkcyJdYXMkej0+JG8pe2lmKGluX2FycmF5KCR6LCRKZCkpeyRYPXByb2Nlc3NfaW5wdXQoJG8pO2lmKCRYPT09ZmFsc2UpJFg9IicnIjtpZihpc3NldCgkSWZbJHpdKSkkZy0+cXVlcnkoIlNFVCBAIi5pZGZfZXNjYXBlKCRvWyJmaWVsZCJdKS4iID0gJFgiKTt9JFhhW109KGlzc2V0KCRJZlskel0pPyJAIi5pZGZfZXNjYXBlKCRvWyJmaWVsZCJdKTokWCk7fSRHPShpc3NldCgkX0dFVFsiY2FsbGYiXSk/IlNFTEVDVCI6IkNBTEwiKS4iICIudGFibGUoJGRhKS4iKCIuaW1wbG9kZSgiLCAiLCRYYSkuIikiOyRDaD1taWNyb3RpbWUodHJ1ZSk7JEg9JGctPm11bHRpX3F1ZXJ5KCRHKTskemE9JGctPmFmZmVjdGVkX3Jvd3M7ZWNobyRiLT5zZWxlY3RRdWVyeSgkRywkQ2gsISRIKTtpZighJEgpZWNobyI8cCBjbGFzcz0nZXJyb3InPiIuZXJyb3IoKS4iXG4iO2Vsc2V7JGg9Y29ubmVjdCgpO2lmKGlzX29iamVjdCgkaCkpJGgtPnNlbGVjdF9kYihEQik7ZG97JEg9JGctPnN0b3JlX3Jlc3VsdCgpO2lmKGlzX29iamVjdCgkSCkpc2VsZWN0KCRILCRoKTtlbHNlCmVjaG8iPHAgY2xhc3M9J21lc3NhZ2UnPiIubGFuZyhhcnJheSgnUm91dGluZSBoYXMgYmVlbiBjYWxsZWQsICVkIHJvdyBhZmZlY3RlZC4nLCdSb3V0aW5lIGhhcyBiZWVuIGNhbGxlZCwgJWQgcm93cyBhZmZlY3RlZC4nKSwkemEpLiIgPHNwYW4gY2xhc3M9J3RpbWUnPiIuQGRhdGUoIkg6aTpzIikuIjwvc3Bhbj5cbiI7fXdoaWxlKCRnLT5uZXh0X3Jlc3VsdCgpKTtpZigkSWYpc2VsZWN0KCRnLT5xdWVyeSgiU0VMRUNUICIuaW1wbG9kZSgiLCAiLCRJZikpKTt9fWVjaG8nCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgonO2lmKCRKZCl7ZWNobyI8dGFibGUgY2VsbHNwYWNpbmc9JzAnIGNsYXNzPSdsYXlvdXQnPlxuIjtmb3JlYWNoKCRKZAphcyR6KXskbz0kVGdbImZpZWxkcyJdWyR6XTskRD0kb1siZmllbGQiXTtlY2hvIjx0cj48dGg+Ii4kYi0+ZmllbGROYW1lKCRvKTskWT0kX1BPU1RbImZpZWxkcyJdWyREXTtpZigkWSE9IiIpe2lmKCRvWyJ0eXBlIl09PSJlbnVtIikkWT0rJFk7aWYoJG9bInR5cGUiXT09InNldCIpJFk9YXJyYXlfc3VtKCRZKTt9aW5wdXQoJG8sJFksKHN0cmluZykkX1BPU1RbImZ1bmN0aW9uIl1bJERdKTtlY2hvIlxuIjt9ZWNobyI8L3RhYmxlPlxuIjt9ZWNobyc8cD4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNhbGwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0b2tlbiIgdmFsdWU9IicsJG5pLCciPgo8L2Zvcm0+Cic7fWVsc2VpZihpc3NldCgkX0dFVFsiZm9yZWlnbiJdKSl7JGE9JF9HRVRbImZvcmVpZ24iXTskRD0kX0dFVFsibmFtZSJdOyRKPSRfUE9TVDtpZigkX1BPU1QmJiEkbiYmISRfUE9TVFsiYWRkIl0mJiEkX1BPU1RbImNoYW5nZSJdJiYhJF9QT1NUWyJjaGFuZ2UtanMiXSl7JEtlPSgkX1BPU1RbImRyb3AiXT8nRm9yZWlnbiBrZXkgaGFzIGJlZW4gZHJvcHBlZC4nOigkRCE9IiI/J0ZvcmVpZ24ga2V5IGhhcyBiZWVuIGFsdGVyZWQuJzonRm9yZWlnbiBrZXkgaGFzIGJlZW4gY3JlYXRlZC4nKSk7JEI9TUUuInRhYmxlPSIudXJsZW5jb2RlKCRhKTtpZighJF9QT1NUWyJkcm9wIl0peyRKWyJzb3VyY2UiXT1hcnJheV9maWx0ZXIoJEpbInNvdXJjZSJdLCdzdHJsZW4nKTtrc29ydCgkSlsic291cmNlIl0pOyRXaD1hcnJheSgpO2ZvcmVhY2goJEpbInNvdXJjZSJdYXMkej0+JFgpJFdoWyR6XT0kSlsidGFyZ2V0Il1bJHpdOyRKWyJ0YXJnZXQiXT0kV2g7fWlmKCR5PT0ic3FsaXRlIilxdWVyaWVzX3JlZGlyZWN0KCRCLCRLZSxyZWNyZWF0ZV90YWJsZSgkYSwkYSxhcnJheSgpLGFycmF5KCksYXJyYXkoIiAkRCI9PigkX1BPU1RbImRyb3AiXT8iIjoiICIuZm9ybWF0X2ZvcmVpZ25fa2V5KCRKKSkpKSk7ZWxzZXskYz0iQUxURVIgVEFCTEUgIi50YWJsZSgkYSk7JGpjPSJcbkRST1AgIi4oJHk9PSJzcWwiPyJGT1JFSUdOIEtFWSAiOiJDT05TVFJBSU5UICIpLmlkZl9lc2NhcGUoJEQpO2lmKCRfUE9TVFsiZHJvcCJdKXF1ZXJ5X3JlZGlyZWN0KCRjLiRqYywkQiwkS2UpO2Vsc2V7cXVlcnlfcmVkaXJlY3QoJGMuKCREIT0iIj8iJGpjLCI6IiIpLiJcbkFERCIuZm9ybWF0X2ZvcmVpZ25fa2V5KCRKKSwkQiwkS2UpOyRuPSdTb3VyY2UgYW5kIHRhcmdldCBjb2x1bW5zIG11c3QgaGF2ZSB0aGUgc2FtZSBkYXRhIHR5cGUsIHRoZXJlIG11c3QgYmUgYW4gaW5kZXggb24gdGhlIHRhcmdldCBjb2x1bW5zIGFuZCByZWZlcmVuY2VkIGRhdGEgbXVzdCBleGlzdC4nLiI8YnI+JG4iO319fXBhZ2VfaGVhZGVyKCdGb3JlaWduIGtleScsJG4sYXJyYXkoInRhYmxlIj0+JGEpLGgoJGEpKTtpZigkX1BPU1Qpe2tzb3J0KCRKWyJzb3VyY2UiXSk7aWYoJF9QT1NUWyJhZGQiXSkkSlsic291cmNlIl1bXT0iIjtlbHNlaWYoJF9QT1NUWyJjaGFuZ2UiXXx8JF9QT1NUWyJjaGFuZ2UtanMiXSkkSlsidGFyZ2V0Il09YXJyYXkoKTt9ZWxzZWlmKCREIT0iIil7JGhkPWZvcmVpZ25fa2V5cygkYSk7JEo9JGhkWyREXTskSlsic291cmNlIl1bXT0iIjt9ZWxzZXskSlsidGFibGUiXT0kYTskSlsic291cmNlIl09YXJyYXkoIiIpO31lY2hvJwo8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KJzskdmg9YXJyYXlfa2V5cyhmaWVsZHMoJGEpKTtpZigkSlsiZGIiXSE9IiIpJGctPnNlbGVjdF9kYigkSlsiZGIiXSk7aWYoJEpbIm5zIl0hPSIiKXNldF9zY2hlbWEoJEpbIm5zIl0pOyRDZz1hcnJheV9rZXlzKGFycmF5X2ZpbHRlcih0YWJsZV9zdGF0dXMoJycsdHJ1ZSksJ2ZrX3N1cHBvcnQnKSk7JFdoPWFycmF5X2tleXMoZmllbGRzKGluX2FycmF5KCRKWyJ0YWJsZSJdLCRDZyk/JEpbInRhYmxlIl06cmVzZXQoJENnKSkpOyRxZj0idGhpcy5mb3JtWydjaGFuZ2UtanMnXS52YWx1ZSA9ICcxJzsgdGhpcy5mb3JtLnN1Ym1pdCgpOyI7ZWNobyI8cD4iLidUYXJnZXQgdGFibGUnLiI6ICIuaHRtbF9zZWxlY3QoInRhYmxlIiwkQ2csJEpbInRhYmxlIl0sJHFmKS4iXG4iO2lmKCR5PT0icGdzcWwiKWVjaG8nU2NoZW1hJy4iOiAiLmh0bWxfc2VsZWN0KCJucyIsJGItPnNjaGVtYXMoKSwkSlsibnMiXSE9IiI/JEpbIm5zIl06JF9HRVRbIm5zIl0sJHFmKTtlbHNlaWYoJHkhPSJzcWxpdGUiKXskVWI9YXJyYXkoKTtmb3JlYWNoKCRiLT5kYXRhYmFzZXMoKWFzJGwpe2lmKCFpbmZvcm1hdGlvbl9zY2hlbWEoJGwpKSRVYltdPSRsO31lY2hvJ0RCJy4iOiAiLmh0bWxfc2VsZWN0KCJkYiIsJFViLCRKWyJkYiJdIT0iIj8kSlsiZGIiXTokX0dFVFsiZGIiXSwkcWYpO31lY2hvJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNoYW5nZS1qcyIgdmFsdWU9IiI+Cjxub3NjcmlwdD48cD48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjaGFuZ2UiIHZhbHVlPSJDaGFuZ2UiPjwvbm9zY3JpcHQ+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCI+Cjx0aGVhZD48dHI+PHRoIGlkPSJsYWJlbC1zb3VyY2UiPlNvdXJjZTx0aCBpZD0ibGFiZWwtdGFyZ2V0Ij5UYXJnZXQ8L3RoZWFkPgonOyRlZT0wO2ZvcmVhY2goJEpbInNvdXJjZSJdYXMkej0+JFgpe2VjaG8iPHRyPiIsIjx0ZD4iLmh0bWxfc2VsZWN0KCJzb3VyY2VbIi4oKyR6KS4iXSIsYXJyYXkoLTE9PiIiKSskdmgsJFgsKCRlZT09Y291bnQoJEpbInNvdXJjZSJdKS0xPyJmb3JlaWduQWRkUm93LmNhbGwodGhpcyk7IjoxKSwibGFiZWwtc291cmNlIiksIjx0ZD4iLmh0bWxfc2VsZWN0KCJ0YXJnZXRbIi4oKyR6KS4iXSIsJFdoLCRKWyJ0YXJnZXQiXVskel0sMSwibGFiZWwtdGFyZ2V0Iik7JGVlKys7fWVjaG8nPC90YWJsZT4KPHA+Ck9OIERFTEVURTogJyxodG1sX3NlbGVjdCgib25fZGVsZXRlIixhcnJheSgtMT0+IiIpK2V4cGxvZGUoInwiLCRwZiksJEpbIm9uX2RlbGV0ZSJdKSwnIE9OIFVQREFURTogJyxodG1sX3NlbGVjdCgib25fdXBkYXRlIixhcnJheSgtMT0+IiIpK2V4cGxvZGUoInwiLCRwZiksJEpbIm9uX3VwZGF0ZSJdKSxkb2NfbGluayhhcnJheSgnc3FsJz0+Imlubm9kYi1mb3JlaWduLWtleS1jb25zdHJhaW50cy5odG1sIiwnbWFyaWFkYic9PiJmb3JlaWduLWtleXMvIiwncGdzcWwnPT4ic3FsLWNyZWF0ZXRhYmxlLmh0bWwjU1FMLUNSRUFURVRBQkxFLVJFRkVSRU5DRVMiLCdtc3NxbCc9PiJtczE3NDk3OS5hc3B4Iiwnb3JhY2xlJz0+Imh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2NkL0IxOTMwNl8wMS9zZXJ2ZXIuMTAyL2IxNDIwMC9jbGF1c2VzMDAyLmh0bSNzdGhyZWYyOTAzIiwpKSwnPHA+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTYXZlIj4KPG5vc2NyaXB0PjxwPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImFkZCIgdmFsdWU9IkFkZCBjb2x1bW4iPjwvbm9zY3JpcHQ+Cic7aWYoJEQhPSIiKXtlY2hvJzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImRyb3AiIHZhbHVlPSJEcm9wIj4nLGNvbmZpcm0oc3ByaW50ZignRHJvcCAlcz8nLCREKSk7fWVjaG8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInLCRuaSwnIj4KPC9mb3JtPgonO31lbHNlaWYoaXNzZXQoJF9HRVRbInZpZXciXSkpeyRhPSRfR0VUWyJ2aWV3Il07JEo9JF9QT1NUOyRGZj0iVklFVyI7aWYoJHk9PSJwZ3NxbCImJiRhIT0iIil7JE89dGFibGVfc3RhdHVzKCRhKTskRmY9c3RydG91cHBlcigkT1siRW5naW5lIl0pO31pZigkX1BPU1QmJiEkbil7JEQ9dHJpbSgkSlsibmFtZSJdKTskRmE9IiBBU1xuJEpbc2VsZWN0XSI7JEI9TUUuInRhYmxlPSIudXJsZW5jb2RlKCREKTskS2U9J1ZpZXcgaGFzIGJlZW4gYWx0ZXJlZC4nOyRUPSgkX1BPU1RbIm1hdGVyaWFsaXplZCJdPyJNQVRFUklBTElaRUQgVklFVyI6IlZJRVciKTtpZighJF9QT1NUWyJkcm9wIl0mJiRhPT0kRCYmJHkhPSJzcWxpdGUiJiYkVD09IlZJRVciJiYkRmY9PSJWSUVXIilxdWVyeV9yZWRpcmVjdCgoJHk9PSJtc3NxbCI/IkFMVEVSIjoiQ1JFQVRFIE9SIFJFUExBQ0UiKS4iIFZJRVcgIi50YWJsZSgkRCkuJEZhLCRCLCRLZSk7ZWxzZXskWWg9JEQuIl9hZG1pbmVyXyIudW5pcWlkKCk7ZHJvcF9jcmVhdGUoIkRST1AgJEZmICIudGFibGUoJGEpLCJDUkVBVEUgJFQgIi50YWJsZSgkRCkuJEZhLCJEUk9QICRUICIudGFibGUoJEQpLCJDUkVBVEUgJFQgIi50YWJsZSgkWWgpLiRGYSwiRFJPUCAkVCAiLnRhYmxlKCRZaCksKCRfUE9TVFsiZHJvcCJdP3N1YnN0cihNRSwwLC0xKTokQiksJ1ZpZXcgaGFzIGJlZW4gZHJvcHBlZC4nLCRLZSwnVmlldyBoYXMgYmVlbiBjcmVhdGVkLicsJGEsJEQpO319aWYoISRfUE9TVCYmJGEhPSIiKXskSj12aWV3KCRhKTskSlsibmFtZSJdPSRhOyRKWyJtYXRlcmlhbGl6ZWQiXT0oJEZmIT0iVklFVyIpO2lmKCEkbikkbj1lcnJvcigpO31wYWdlX2hlYWRlcigoJGEhPSIiPydBbHRlciB2aWV3JzonQ3JlYXRlIHZpZXcnKSwkbixhcnJheSgidGFibGUiPT4kYSksaCgkYSkpO2VjaG8nCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgo8cD5OYW1lOiA8aW5wdXQgbmFtZT0ibmFtZSIgdmFsdWU9IicsaCgkSlsibmFtZSJdKSwnIiBkYXRhLW1heGxlbmd0aD0iNjQiIGF1dG9jYXBpdGFsaXplPSJvZmYiPgonLChzdXBwb3J0KCJtYXRlcmlhbGl6ZWR2aWV3Iik/IiAiLmNoZWNrYm94KCJtYXRlcmlhbGl6ZWQiLDEsJEpbIm1hdGVyaWFsaXplZCJdLCdNYXRlcmlhbGl6ZWQgdmlldycpOiIiKSwnPHA+Jzt0ZXh0YXJlYSgic2VsZWN0IiwkSlsic2VsZWN0Il0pO2VjaG8nPHA+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTYXZlIj4KJztpZigkYSE9IiIpe2VjaG8nPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZHJvcCIgdmFsdWU9IkRyb3AiPicsY29uZmlybShzcHJpbnRmKCdEcm9wICVzPycsJGEpKTt9ZWNobyc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0b2tlbiIgdmFsdWU9IicsJG5pLCciPgo8L2Zvcm0+Cic7fWVsc2VpZihpc3NldCgkX0dFVFsiZXZlbnQiXSkpeyRhYT0kX0dFVFsiZXZlbnQiXTskV2Q9YXJyYXkoIllFQVIiLCJRVUFSVEVSIiwiTU9OVEgiLCJEQVkiLCJIT1VSIiwiTUlOVVRFIiwiV0VFSyIsIlNFQ09ORCIsIllFQVJfTU9OVEgiLCJEQVlfSE9VUiIsIkRBWV9NSU5VVEUiLCJEQVlfU0VDT05EIiwiSE9VUl9NSU5VVEUiLCJIT1VSX1NFQ09ORCIsIk1JTlVURV9TRUNPTkQiKTskRWg9YXJyYXkoIkVOQUJMRUQiPT4iRU5BQkxFIiwiRElTQUJMRUQiPT4iRElTQUJMRSIsIlNMQVZFU0lERV9ESVNBQkxFRCI9PiJESVNBQkxFIE9OIFNMQVZFIik7JEo9JF9QT1NUO2lmKCRfUE9TVCYmISRuKXtpZigkX1BPU1RbImRyb3AiXSlxdWVyeV9yZWRpcmVjdCgiRFJPUCBFVkVOVCAiLmlkZl9lc2NhcGUoJGFhKSxzdWJzdHIoTUUsMCwtMSksJ0V2ZW50IGhhcyBiZWVuIGRyb3BwZWQuJyk7ZWxzZWlmKGluX2FycmF5KCRKWyJJTlRFUlZBTF9GSUVMRCJdLCRXZCkmJmlzc2V0KCRFaFskSlsiU1RBVFVTIl1dKSl7JFlnPSJcbk9OIFNDSEVEVUxFICIuKCRKWyJJTlRFUlZBTF9WQUxVRSJdPyJFVkVSWSAiLnEoJEpbIklOVEVSVkFMX1ZBTFVFIl0pLiIgJEpbSU5URVJWQUxfRklFTERdIi4oJEpbIlNUQVJUUyJdPyIgU1RBUlRTICIucSgkSlsiU1RBUlRTIl0pOiIiKS4oJEpbIkVORFMiXT8iIEVORFMgIi5xKCRKWyJFTkRTIl0pOiIiKToiQVQgIi5xKCRKWyJTVEFSVFMiXSkpLiIgT04gQ09NUExFVElPTiIuKCRKWyJPTl9DT01QTEVUSU9OIl0/IiI6IiBOT1QiKS4iIFBSRVNFUlZFIjtxdWVyaWVzX3JlZGlyZWN0KHN1YnN0cihNRSwwLC0xKSwoJGFhIT0iIj8nRXZlbnQgaGFzIGJlZW4gYWx0ZXJlZC4nOidFdmVudCBoYXMgYmVlbiBjcmVhdGVkLicpLHF1ZXJpZXMoKCRhYSE9IiI/IkFMVEVSIEVWRU5UICIuaWRmX2VzY2FwZSgkYWEpLiRZZy4oJGFhIT0kSlsiRVZFTlRfTkFNRSJdPyJcblJFTkFNRSBUTyAiLmlkZl9lc2NhcGUoJEpbIkVWRU5UX05BTUUiXSk6IiIpOiJDUkVBVEUgRVZFTlQgIi5pZGZfZXNjYXBlKCRKWyJFVkVOVF9OQU1FIl0pLiRZZykuIlxuIi4kRWhbJEpbIlNUQVRVUyJdXS4iIENPTU1FTlQgIi5xKCRKWyJFVkVOVF9DT01NRU5UIl0pLnJ0cmltKCIgRE9cbiRKW0VWRU5UX0RFRklOSVRJT05dIiwiOyIpLiI7IikpO319cGFnZV9oZWFkZXIoKCRhYSE9IiI/J0FsdGVyIGV2ZW50Jy4iOiAiLmgoJGFhKTonQ3JlYXRlIGV2ZW50JyksJG4pO2lmKCEkSiYmJGFhIT0iIil7JEs9Z2V0X3Jvd3MoIlNFTEVDVCAqIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLkVWRU5UUyBXSEVSRSBFVkVOVF9TQ0hFTUEgPSAiLnEoREIpLiIgQU5EIEVWRU5UX05BTUUgPSAiLnEoJGFhKSk7JEo9cmVzZXQoJEspO31lY2hvJwo8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0ibGF5b3V0Ij4KPHRyPjx0aD5OYW1lPHRkPjxpbnB1dCBuYW1lPSJFVkVOVF9OQU1FIiB2YWx1ZT0iJyxoKCRKWyJFVkVOVF9OQU1FIl0pLCciIGRhdGEtbWF4bGVuZ3RoPSI2NCIgYXV0b2NhcGl0YWxpemU9Im9mZiI+Cjx0cj48dGggdGl0bGU9ImRhdGV0aW1lIj5TdGFydDx0ZD48aW5wdXQgbmFtZT0iU1RBUlRTIiB2YWx1ZT0iJyxoKCIkSltFWEVDVVRFX0FUXSRKW1NUQVJUU10iKSwnIj4KPHRyPjx0aCB0aXRsZT0iZGF0ZXRpbWUiPkVuZDx0ZD48aW5wdXQgbmFtZT0iRU5EUyIgdmFsdWU9IicsaCgkSlsiRU5EUyJdKSwnIj4KPHRyPjx0aD5FdmVyeTx0ZD48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJJTlRFUlZBTF9WQUxVRSIgdmFsdWU9IicsaCgkSlsiSU5URVJWQUxfVkFMVUUiXSksJyIgY2xhc3M9InNpemUiPiAnLGh0bWxfc2VsZWN0KCJJTlRFUlZBTF9GSUVMRCIsJFdkLCRKWyJJTlRFUlZBTF9GSUVMRCJdKSwnPHRyPjx0aD5TdGF0dXM8dGQ+JyxodG1sX3NlbGVjdCgiU1RBVFVTIiwkRWgsJEpbIlNUQVRVUyJdKSwnPHRyPjx0aD5Db21tZW50PHRkPjxpbnB1dCBuYW1lPSJFVkVOVF9DT01NRU5UIiB2YWx1ZT0iJyxoKCRKWyJFVkVOVF9DT01NRU5UIl0pLCciIGRhdGEtbWF4bGVuZ3RoPSI2NCI+Cjx0cj48dGg+PHRkPicsY2hlY2tib3goIk9OX0NPTVBMRVRJT04iLCJQUkVTRVJWRSIsJEpbIk9OX0NPTVBMRVRJT04iXT09IlBSRVNFUlZFIiwnT24gY29tcGxldGlvbiBwcmVzZXJ2ZScpLCc8L3RhYmxlPgo8cD4nO3RleHRhcmVhKCJFVkVOVF9ERUZJTklUSU9OIiwkSlsiRVZFTlRfREVGSU5JVElPTiJdKTtlY2hvJzxwPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSI+Cic7aWYoJGFhIT0iIil7ZWNobyc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJkcm9wIiB2YWx1ZT0iRHJvcCI+Jyxjb25maXJtKHNwcmludGYoJ0Ryb3AgJXM/JywkYWEpKTt9ZWNobyc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0b2tlbiIgdmFsdWU9IicsJG5pLCciPgo8L2Zvcm0+Cic7fWVsc2VpZihpc3NldCgkX0dFVFsicHJvY2VkdXJlIl0pKXskZGE9KCRfR0VUWyJuYW1lIl0/JF9HRVRbIm5hbWUiXTokX0dFVFsicHJvY2VkdXJlIl0pOyRUZz0oaXNzZXQoJF9HRVRbImZ1bmN0aW9uIl0pPyJGVU5DVElPTiI6IlBST0NFRFVSRSIpOyRKPSRfUE9TVDskSlsiZmllbGRzIl09KGFycmF5KSRKWyJmaWVsZHMiXTtpZigkX1BPU1QmJiFwcm9jZXNzX2ZpZWxkcygkSlsiZmllbGRzIl0pJiYhJG4peyRDZj1yb3V0aW5lKCRfR0VUWyJwcm9jZWR1cmUiXSwkVGcpOyRZaD0iJEpbbmFtZV1fYWRtaW5lcl8iLnVuaXFpZCgpO2Ryb3BfY3JlYXRlKCJEUk9QICRUZyAiLnJvdXRpbmVfaWQoJGRhLCRDZiksY3JlYXRlX3JvdXRpbmUoJFRnLCRKKSwiRFJPUCAkVGcgIi5yb3V0aW5lX2lkKCRKWyJuYW1lIl0sJEopLGNyZWF0ZV9yb3V0aW5lKCRUZyxhcnJheSgibmFtZSI9PiRZaCkrJEopLCJEUk9QICRUZyAiLnJvdXRpbmVfaWQoJFloLCRKKSxzdWJzdHIoTUUsMCwtMSksJ1JvdXRpbmUgaGFzIGJlZW4gZHJvcHBlZC4nLCdSb3V0aW5lIGhhcyBiZWVuIGFsdGVyZWQuJywnUm91dGluZSBoYXMgYmVlbiBjcmVhdGVkLicsJGRhLCRKWyJuYW1lIl0pO31wYWdlX2hlYWRlcigoJGRhIT0iIj8oaXNzZXQoJF9HRVRbImZ1bmN0aW9uIl0pPydBbHRlciBmdW5jdGlvbic6J0FsdGVyIHByb2NlZHVyZScpLiI6ICIuaCgkZGEpOihpc3NldCgkX0dFVFsiZnVuY3Rpb24iXSk/J0NyZWF0ZSBmdW5jdGlvbic6J0NyZWF0ZSBwcm9jZWR1cmUnKSksJG4pO2lmKCEkX1BPU1QmJiRkYSE9IiIpeyRKPXJvdXRpbmUoJF9HRVRbInByb2NlZHVyZSJdLCRUZyk7JEpbIm5hbWUiXT0kZGE7fSRsYj1nZXRfdmFscygiU0hPVyBDSEFSQUNURVIgU0VUIik7c29ydCgkbGIpOyRVZz1yb3V0aW5lX2xhbmd1YWdlcygpO2VjaG8nCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIGlkPSJmb3JtIj4KPHA+TmFtZTogPGlucHV0IG5hbWU9Im5hbWUiIHZhbHVlPSInLGgoJEpbIm5hbWUiXSksJyIgZGF0YS1tYXhsZW5ndGg9IjY0IiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIj4KJywoJFVnPydMYW5ndWFnZScuIjogIi5odG1sX3NlbGVjdCgibGFuZ3VhZ2UiLCRVZywkSlsibGFuZ3VhZ2UiXSkuIlxuIjoiIiksJzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTYXZlIj4KPGRpdiBjbGFzcz0ic2Nyb2xsYWJsZSI+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9Im5vd3JhcCI+Cic7ZWRpdF9maWVsZHMoJEpbImZpZWxkcyJdLCRsYiwkVGcpO2lmKGlzc2V0KCRfR0VUWyJmdW5jdGlvbiJdKSl7ZWNobyI8dHI+PHRkPiIuJ1JldHVybiB0eXBlJztlZGl0X3R5cGUoInJldHVybnMiLCRKWyJyZXR1cm5zIl0sJGxiLGFycmF5KCksKCR5PT0icGdzcWwiP2FycmF5KCJ2b2lkIiwidHJpZ2dlciIpOmFycmF5KCkpKTt9ZWNobyc8L3RhYmxlPgonLHNjcmlwdCgiZWRpdEZpZWxkcygpOyIpLCc8L2Rpdj4KPHA+Jzt0ZXh0YXJlYSgiZGVmaW5pdGlvbiIsJEpbImRlZmluaXRpb24iXSk7ZWNobyc8cD4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNhdmUiPgonO2lmKCRkYSE9IiIpe2VjaG8nPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZHJvcCIgdmFsdWU9IkRyb3AiPicsY29uZmlybShzcHJpbnRmKCdEcm9wICVzPycsJGRhKSk7fWVjaG8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInLCRuaSwnIj4KPC9mb3JtPgonO31lbHNlaWYoaXNzZXQoJF9HRVRbInNlcXVlbmNlIl0pKXskZmE9JF9HRVRbInNlcXVlbmNlIl07JEo9JF9QT1NUO2lmKCRfUE9TVCYmISRuKXskQT1zdWJzdHIoTUUsMCwtMSk7JEQ9dHJpbSgkSlsibmFtZSJdKTtpZigkX1BPU1RbImRyb3AiXSlxdWVyeV9yZWRpcmVjdCgiRFJPUCBTRVFVRU5DRSAiLmlkZl9lc2NhcGUoJGZhKSwkQSwnU2VxdWVuY2UgaGFzIGJlZW4gZHJvcHBlZC4nKTtlbHNlaWYoJGZhPT0iIilxdWVyeV9yZWRpcmVjdCgiQ1JFQVRFIFNFUVVFTkNFICIuaWRmX2VzY2FwZSgkRCksJEEsJ1NlcXVlbmNlIGhhcyBiZWVuIGNyZWF0ZWQuJyk7ZWxzZWlmKCRmYSE9JEQpcXVlcnlfcmVkaXJlY3QoIkFMVEVSIFNFUVVFTkNFICIuaWRmX2VzY2FwZSgkZmEpLiIgUkVOQU1FIFRPICIuaWRmX2VzY2FwZSgkRCksJEEsJ1NlcXVlbmNlIGhhcyBiZWVuIGFsdGVyZWQuJyk7ZWxzZQpyZWRpcmVjdCgkQSk7fXBhZ2VfaGVhZGVyKCRmYSE9IiI/J0FsdGVyIHNlcXVlbmNlJy4iOiAiLmgoJGZhKTonQ3JlYXRlIHNlcXVlbmNlJywkbik7aWYoISRKKSRKWyJuYW1lIl09JGZhO2VjaG8nCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgo8cD48aW5wdXQgbmFtZT0ibmFtZSIgdmFsdWU9IicsaCgkSlsibmFtZSJdKSwnIiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIj4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNhdmUiPgonO2lmKCRmYSE9IiIpZWNobyI8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdkcm9wJyB2YWx1ZT0nIi4nRHJvcCcuIic+Ii5jb25maXJtKHNwcmludGYoJ0Ryb3AgJXM/JywkZmEpKS4iXG4iO2VjaG8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInLCRuaSwnIj4KPC9mb3JtPgonO31lbHNlaWYoaXNzZXQoJF9HRVRbInR5cGUiXSkpeyRnYT0kX0dFVFsidHlwZSJdOyRKPSRfUE9TVDtpZigkX1BPU1QmJiEkbil7JEE9c3Vic3RyKE1FLDAsLTEpO2lmKCRfUE9TVFsiZHJvcCJdKXF1ZXJ5X3JlZGlyZWN0KCJEUk9QIFRZUEUgIi5pZGZfZXNjYXBlKCRnYSksJEEsJ1R5cGUgaGFzIGJlZW4gZHJvcHBlZC4nKTtlbHNlCnF1ZXJ5X3JlZGlyZWN0KCJDUkVBVEUgVFlQRSAiLmlkZl9lc2NhcGUodHJpbSgkSlsibmFtZSJdKSkuIiAkSlthc10iLCRBLCdUeXBlIGhhcyBiZWVuIGNyZWF0ZWQuJyk7fXBhZ2VfaGVhZGVyKCRnYSE9IiI/J0FsdGVyIHR5cGUnLiI6ICIuaCgkZ2EpOidDcmVhdGUgdHlwZScsJG4pO2lmKCEkSikkSlsiYXMiXT0iQVMgIjtlY2hvJwo8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KPHA+Cic7aWYoJGdhIT0iIillY2hvIjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2Ryb3AnIHZhbHVlPSciLidEcm9wJy4iJz4iLmNvbmZpcm0oc3ByaW50ZignRHJvcCAlcz8nLCRnYSkpLiJcbiI7ZWxzZXtlY2hvIjxpbnB1dCBuYW1lPSduYW1lJyB2YWx1ZT0nIi5oKCRKWyduYW1lJ10pLiInIGF1dG9jYXBpdGFsaXplPSdvZmYnPlxuIjt0ZXh0YXJlYSgiYXMiLCRKWyJhcyJdKTtlY2hvIjxwPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSciLidTYXZlJy4iJz5cbiI7fWVjaG8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInLCRuaSwnIj4KPC9mb3JtPgonO31lbHNlaWYoaXNzZXQoJF9HRVRbInRyaWdnZXIiXSkpeyRhPSRfR0VUWyJ0cmlnZ2VyIl07JEQ9JF9HRVRbIm5hbWUiXTskeWk9dHJpZ2dlcl9vcHRpb25zKCk7JEo9KGFycmF5KXRyaWdnZXIoJEQsJGEpK2FycmF5KCJUcmlnZ2VyIj0+JGEuIl9iaSIpO2lmKCRfUE9TVCl7aWYoISRuJiZpbl9hcnJheSgkX1BPU1RbIlRpbWluZyJdLCR5aVsiVGltaW5nIl0pJiZpbl9hcnJheSgkX1BPU1RbIkV2ZW50Il0sJHlpWyJFdmVudCJdKSYmaW5fYXJyYXkoJF9QT1NUWyJUeXBlIl0sJHlpWyJUeXBlIl0pKXskb2Y9IiBPTiAiLnRhYmxlKCRhKTskamM9IkRST1AgVFJJR0dFUiAiLmlkZl9lc2NhcGUoJEQpLigkeT09InBnc3FsIj8kb2Y6IiIpOyRCPU1FLiJ0YWJsZT0iLnVybGVuY29kZSgkYSk7aWYoJF9QT1NUWyJkcm9wIl0pcXVlcnlfcmVkaXJlY3QoJGpjLCRCLCdUcmlnZ2VyIGhhcyBiZWVuIGRyb3BwZWQuJyk7ZWxzZXtpZigkRCE9IiIpcXVlcmllcygkamMpO3F1ZXJpZXNfcmVkaXJlY3QoJEIsKCREIT0iIj8nVHJpZ2dlciBoYXMgYmVlbiBhbHRlcmVkLic6J1RyaWdnZXIgaGFzIGJlZW4gY3JlYXRlZC4nKSxxdWVyaWVzKGNyZWF0ZV90cmlnZ2VyKCRvZiwkX1BPU1QpKSk7aWYoJEQhPSIiKXF1ZXJpZXMoY3JlYXRlX3RyaWdnZXIoJG9mLCRKK2FycmF5KCJUeXBlIj0+cmVzZXQoJHlpWyJUeXBlIl0pKSkpO319JEo9JF9QT1NUO31wYWdlX2hlYWRlcigoJEQhPSIiPydBbHRlciB0cmlnZ2VyJy4iOiAiLmgoJEQpOidDcmVhdGUgdHJpZ2dlcicpLCRuLGFycmF5KCJ0YWJsZSI9PiRhKSk7ZWNobycKPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm0iPgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJsYXlvdXQiPgo8dHI+PHRoPlRpbWU8dGQ+JyxodG1sX3NlbGVjdCgiVGltaW5nIiwkeWlbIlRpbWluZyJdLCRKWyJUaW1pbmciXSwidHJpZ2dlckNoYW5nZSgvXiIucHJlZ19xdW90ZSgkYSwiLyIpLiJfW2JhXVtpdWRdJC8sICciLmpzX2VzY2FwZSgkYSkuIicsIHRoaXMuZm9ybSk7IiksJzx0cj48dGg+RXZlbnQ8dGQ+JyxodG1sX3NlbGVjdCgiRXZlbnQiLCR5aVsiRXZlbnQiXSwkSlsiRXZlbnQiXSwidGhpcy5mb3JtWydUaW1pbmcnXS5vbmNoYW5nZSgpOyIpLChpbl9hcnJheSgiVVBEQVRFIE9GIiwkeWlbIkV2ZW50Il0pPyIgPGlucHV0IG5hbWU9J09mJyB2YWx1ZT0nIi5oKCRKWyJPZiJdKS4iJyBjbGFzcz0naGlkZGVuJz4iOiIiKSwnPHRyPjx0aD5UeXBlPHRkPicsaHRtbF9zZWxlY3QoIlR5cGUiLCR5aVsiVHlwZSJdLCRKWyJUeXBlIl0pLCc8L3RhYmxlPgo8cD5OYW1lOiA8aW5wdXQgbmFtZT0iVHJpZ2dlciIgdmFsdWU9IicsaCgkSlsiVHJpZ2dlciJdKSwnIiBkYXRhLW1heGxlbmd0aD0iNjQiIGF1dG9jYXBpdGFsaXplPSJvZmYiPgonLHNjcmlwdCgicXMoJyNmb3JtJylbJ1RpbWluZyddLm9uY2hhbmdlKCk7IiksJzxwPic7dGV4dGFyZWEoIlN0YXRlbWVudCIsJEpbIlN0YXRlbWVudCJdKTtlY2hvJzxwPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSI+Cic7aWYoJEQhPSIiKXtlY2hvJzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImRyb3AiIHZhbHVlPSJEcm9wIj4nLGNvbmZpcm0oc3ByaW50ZignRHJvcCAlcz8nLCREKSk7fWVjaG8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInLCRuaSwnIj4KPC9mb3JtPgonO31lbHNlaWYoaXNzZXQoJF9HRVRbInVzZXIiXSkpeyRoYT0kX0dFVFsidXNlciJdOyRwZz1hcnJheSgiIj0+YXJyYXkoIkFsbCBwcml2aWxlZ2VzIj0+IiIpKTtmb3JlYWNoKGdldF9yb3dzKCJTSE9XIFBSSVZJTEVHRVMiKWFzJEope2ZvcmVhY2goZXhwbG9kZSgiLCIsKCRKWyJQcml2aWxlZ2UiXT09IkdyYW50IG9wdGlvbiI/IiI6JEpbIkNvbnRleHQiXSkpYXMkRGIpJHBnWyREYl1bJEpbIlByaXZpbGVnZSJdXT0kSlsiQ29tbWVudCJdO30kcGdbIlNlcnZlciBBZG1pbiJdKz0kcGdbIkZpbGUgYWNjZXNzIG9uIHNlcnZlciJdOyRwZ1siRGF0YWJhc2VzIl1bIkNyZWF0ZSByb3V0aW5lIl09JHBnWyJQcm9jZWR1cmVzIl1bIkNyZWF0ZSByb3V0aW5lIl07dW5zZXQoJHBnWyJQcm9jZWR1cmVzIl1bIkNyZWF0ZSByb3V0aW5lIl0pOyRwZ1siQ29sdW1ucyJdPWFycmF5KCk7Zm9yZWFjaChhcnJheSgiU2VsZWN0IiwiSW5zZXJ0IiwiVXBkYXRlIiwiUmVmZXJlbmNlcyIpYXMkWCkkcGdbIkNvbHVtbnMiXVskWF09JHBnWyJUYWJsZXMiXVskWF07dW5zZXQoJHBnWyJTZXJ2ZXIgQWRtaW4iXVsiVXNhZ2UiXSk7Zm9yZWFjaCgkcGdbIlRhYmxlcyJdYXMkej0+JFgpdW5zZXQoJHBnWyJEYXRhYmFzZXMiXVskel0pOyRYZT1hcnJheSgpO2lmKCRfUE9TVCl7Zm9yZWFjaCgkX1BPU1RbIm9iamVjdHMiXWFzJHo9PiRYKSRYZVskWF09KGFycmF5KSRYZVskWF0rKGFycmF5KSRfUE9TVFsiZ3JhbnRzIl1bJHpdO30kcGQ9YXJyYXkoKTskbWY9IiI7aWYoaXNzZXQoJF9HRVRbImhvc3QiXSkmJigkSD0kZy0+cXVlcnkoIlNIT1cgR1JBTlRTIEZPUiAiLnEoJGhhKS4iQCIucSgkX0dFVFsiaG9zdCJdKSkpKXt3aGlsZSgkSj0kSC0+ZmV0Y2hfcm93KCkpe2lmKHByZWdfbWF0Y2goJ35HUkFOVCAoLiopIE9OICguKikgVE8gficsJEpbMF0sJEMpJiZwcmVnX21hdGNoX2FsbCgnfiAqKFteKCxdKlteICwoXSkoICpcKFteKV0rXCkpP34nLCRDWzFdLCRDZSxQUkVHX1NFVF9PUkRFUikpe2ZvcmVhY2goJENlCmFzJFgpe2lmKCRYWzFdIT0iVVNBR0UiKSRwZFsiJENbMl0kWFsyXSJdWyRYWzFdXT10cnVlO2lmKHByZWdfbWF0Y2goJ34gV0lUSCBHUkFOVCBPUFRJT05+JywkSlswXSkpJHBkWyIkQ1syXSRYWzJdIl1bIkdSQU5UIE9QVElPTiJdPXRydWU7fX1pZihwcmVnX21hdGNoKCJ+IElERU5USUZJRUQgQlkgUEFTU1dPUkQgJyhbXiddKyl+IiwkSlswXSwkQykpJG1mPSRDWzFdO319aWYoJF9QT1NUJiYhJG4peyRuZj0oaXNzZXQoJF9HRVRbImhvc3QiXSk/cSgkaGEpLiJAIi5xKCRfR0VUWyJob3N0Il0pOiInJyIpO2lmKCRfUE9TVFsiZHJvcCJdKXF1ZXJ5X3JlZGlyZWN0KCJEUk9QIFVTRVIgJG5mIixNRS4icHJpdmlsZWdlcz0iLCdVc2VyIGhhcyBiZWVuIGRyb3BwZWQuJyk7ZWxzZXskWmU9cSgkX1BPU1RbInVzZXIiXSkuIkAiLnEoJF9QT1NUWyJob3N0Il0pOyRXZj0kX1BPU1RbInBhc3MiXTtpZigkV2YhPScnJiYhJF9QT1NUWyJoYXNoZWQiXSYmIW1pbl92ZXJzaW9uKDgpKXskV2Y9JGctPnJlc3VsdCgiU0VMRUNUIFBBU1NXT1JEKCIucSgkV2YpLiIpIik7JG49ISRXZjt9JEpiPWZhbHNlO2lmKCEkbil7aWYoJG5mIT0kWmUpeyRKYj1xdWVyaWVzKChtaW5fdmVyc2lvbig1KT8iQ1JFQVRFIFVTRVIiOiJHUkFOVCBVU0FHRSBPTiAqLiogVE8iKS4iICRaZSBJREVOVElGSUVEIEJZICIuKG1pbl92ZXJzaW9uKDgpPyIiOiJQQVNTV09SRCAiKS5xKCRXZikpOyRuPSEkSmI7fWVsc2VpZigkV2YhPSRtZilxdWVyaWVzKCJTRVQgUEFTU1dPUkQgRk9SICRaZSA9ICIucSgkV2YpKTt9aWYoISRuKXskUWc9YXJyYXkoKTtmb3JlYWNoKCRYZQphcyRmZj0+JG9kKXtpZihpc3NldCgkX0dFVFsiZ3JhbnQiXSkpJG9kPWFycmF5X2ZpbHRlcigkb2QpOyRvZD1hcnJheV9rZXlzKCRvZCk7aWYoaXNzZXQoJF9HRVRbImdyYW50Il0pKSRRZz1hcnJheV9kaWZmKGFycmF5X2tleXMoYXJyYXlfZmlsdGVyKCRYZVskZmZdLCdzdHJsZW4nKSksJG9kKTtlbHNlaWYoJG5mPT0kWmUpeyRrZj1hcnJheV9rZXlzKChhcnJheSkkcGRbJGZmXSk7JFFnPWFycmF5X2RpZmYoJGtmLCRvZCk7JG9kPWFycmF5X2RpZmYoJG9kLCRrZik7dW5zZXQoJHBkWyRmZl0pO31pZihwcmVnX21hdGNoKCd+XiguKylccyooXCguKlwpKT8kflUnLCRmZiwkQykmJighZ3JhbnQoIlJFVk9LRSIsJFFnLCRDWzJdLCIgT04gJENbMV0gRlJPTSAkWmUiKXx8IWdyYW50KCJHUkFOVCIsJG9kLCRDWzJdLCIgT04gJENbMV0gVE8gJFplIikpKXskbj10cnVlO2JyZWFrO319fWlmKCEkbiYmaXNzZXQoJF9HRVRbImhvc3QiXSkpe2lmKCRuZiE9JFplKXF1ZXJpZXMoIkRST1AgVVNFUiAkbmYiKTtlbHNlaWYoIWlzc2V0KCRfR0VUWyJncmFudCJdKSl7Zm9yZWFjaCgkcGQKYXMkZmY9PiRRZyl7aWYocHJlZ19tYXRjaCgnfl4oLispKFwoLipcKSk/JH5VJywkZmYsJEMpKWdyYW50KCJSRVZPS0UiLGFycmF5X2tleXMoJFFnKSwkQ1syXSwiIE9OICRDWzFdIEZST00gJFplIik7fX19cXVlcmllc19yZWRpcmVjdChNRS4icHJpdmlsZWdlcz0iLChpc3NldCgkX0dFVFsiaG9zdCJdKT8nVXNlciBoYXMgYmVlbiBhbHRlcmVkLic6J1VzZXIgaGFzIGJlZW4gY3JlYXRlZC4nKSwhJG4pO2lmKCRKYikkZy0+cXVlcnkoIkRST1AgVVNFUiAkWmUiKTt9fXBhZ2VfaGVhZGVyKChpc3NldCgkX0dFVFsiaG9zdCJdKT8nVXNlcm5hbWUnLiI6ICIuaCgiJGhhQCRfR0VUW2hvc3RdIik6J0NyZWF0ZSB1c2VyJyksJG4sYXJyYXkoInByaXZpbGVnZXMiPT5hcnJheSgnJywnUHJpdmlsZWdlcycpKSk7aWYoJF9QT1NUKXskSj0kX1BPU1Q7JHBkPSRYZTt9ZWxzZXskSj0kX0dFVCthcnJheSgiaG9zdCI9PiRnLT5yZXN1bHQoIlNFTEVDVCBTVUJTVFJJTkdfSU5ERVgoQ1VSUkVOVF9VU0VSLCAnQCcsIC0xKSIpKTskSlsicGFzcyJdPSRtZjtpZigkbWYhPSIiKSRKWyJoYXNoZWQiXT10cnVlOyRwZFsoREI9PSIifHwkcGQ/IiI6aWRmX2VzY2FwZShhZGRjc2xhc2hlcyhEQiwiJV9cXCIpKSkuIi4qIl09YXJyYXkoKTt9ZWNobyc8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0ibGF5b3V0Ij4KPHRyPjx0aD5TZXJ2ZXI8dGQ+PGlucHV0IG5hbWU9Imhvc3QiIGRhdGEtbWF4bGVuZ3RoPSI2MCIgdmFsdWU9IicsaCgkSlsiaG9zdCJdKSwnIiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIj4KPHRyPjx0aD5Vc2VybmFtZTx0ZD48aW5wdXQgbmFtZT0idXNlciIgZGF0YS1tYXhsZW5ndGg9IjgwIiB2YWx1ZT0iJyxoKCRKWyJ1c2VyIl0pLCciIGF1dG9jYXBpdGFsaXplPSJvZmYiPgo8dHI+PHRoPlBhc3N3b3JkPHRkPjxpbnB1dCBuYW1lPSJwYXNzIiBpZD0icGFzcyIgdmFsdWU9IicsaCgkSlsicGFzcyJdKSwnIiBhdXRvY29tcGxldGU9Im5ldy1wYXNzd29yZCI+Cic7aWYoISRKWyJoYXNoZWQiXSllY2hvCnNjcmlwdCgidHlwZVBhc3N3b3JkKHFzKCcjcGFzcycpKTsiKTtlY2hvKG1pbl92ZXJzaW9uKDgpPyIiOmNoZWNrYm94KCJoYXNoZWQiLDEsJEpbImhhc2hlZCJdLCdIYXNoZWQnLCJ0eXBlUGFzc3dvcmQodGhpcy5mb3JtWydwYXNzJ10sIHRoaXMuY2hlY2tlZCk7IikpLCc8L3RhYmxlPgoKJztlY2hvIjx0YWJsZSBjZWxsc3BhY2luZz0nMCc+XG4iLCI8dGhlYWQ+PHRyPjx0aCBjb2xzcGFuPScyJz4iLidQcml2aWxlZ2VzJy5kb2NfbGluayhhcnJheSgnc3FsJz0+ImdyYW50Lmh0bWwjcHJpdl9sZXZlbCIpKTskdD0wO2ZvcmVhY2goJHBkCmFzJGZmPT4kb2Qpe2VjaG8nPHRoPicuKCRmZiE9IiouKiI/IjxpbnB1dCBuYW1lPSdvYmplY3RzWyR0XScgdmFsdWU9JyIuaCgkZmYpLiInIHNpemU9JzEwJyBhdXRvY2FwaXRhbGl6ZT0nb2ZmJz4iOiI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdvYmplY3RzWyR0XScgdmFsdWU9JyouKicgc2l6ZT0nMTAnPiouKiIpOyR0Kys7fWVjaG8iPC90aGVhZD5cbiI7Zm9yZWFjaChhcnJheSgiIj0+IiIsIlNlcnZlciBBZG1pbiI9PidTZXJ2ZXInLCJEYXRhYmFzZXMiPT4nRGF0YWJhc2UnLCJUYWJsZXMiPT4nVGFibGUnLCJDb2x1bW5zIj0+J0NvbHVtbicsIlByb2NlZHVyZXMiPT4nUm91dGluZScsKWFzJERiPT4kYmMpe2ZvcmVhY2goKGFycmF5KSRwZ1skRGJdYXMkb2c9PiRyYil7ZWNobyI8dHIiLm9kZCgpLiI+PHRkIi4oJGJjPyI+JGJjPHRkIjoiIGNvbHNwYW49JzInIikuJyBsYW5nPSJlbiIgdGl0bGU9IicuaCgkcmIpLiciPicuaCgkb2cpOyR0PTA7Zm9yZWFjaCgkcGQKYXMkZmY9PiRvZCl7JEQ9IidncmFudHNbJHRdWyIuaChzdHJ0b3VwcGVyKCRvZykpLiJdJyI7JFk9JG9kW3N0cnRvdXBwZXIoJG9nKV07aWYoJERiPT0iU2VydmVyIEFkbWluIiYmJGZmIT0oaXNzZXQoJHBkWyIqLioiXSk/IiouKiI6Ii4qIikpZWNobyI8dGQ+IjtlbHNlaWYoaXNzZXQoJF9HRVRbImdyYW50Il0pKWVjaG8iPHRkPjxzZWxlY3QgbmFtZT0kRD48b3B0aW9uPjxvcHRpb24gdmFsdWU9JzEnIi4oJFk/IiBzZWxlY3RlZCI6IiIpLiI+Ii4nR3JhbnQnLiI8b3B0aW9uIHZhbHVlPScwJyIuKCRZPT0iMCI/IiBzZWxlY3RlZCI6IiIpLiI+Ii4nUmV2b2tlJy4iPC9zZWxlY3Q+IjtlbHNle2VjaG8iPHRkIGFsaWduPSdjZW50ZXInPjxsYWJlbCBjbGFzcz0nYmxvY2snPiIsIjxpbnB1dCB0eXBlPSdjaGVja2JveCcgbmFtZT0kRCB2YWx1ZT0nMSciLigkWT8iIGNoZWNrZWQiOiIiKS4oJG9nPT0iQWxsIHByaXZpbGVnZXMiPyIgaWQ9J2dyYW50cy0kdC1hbGwnPiI6Ij4iLigkb2c9PSJHcmFudCBvcHRpb24iPyIiOnNjcmlwdCgicXNsKCdpbnB1dCcpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IGlmICh0aGlzLmNoZWNrZWQpIGZvcm1VbmNoZWNrKCdncmFudHMtJHQtYWxsJyk7IH07IikpKSwiPC9sYWJlbD4iO30kdCsrO319fWVjaG8iPC90YWJsZT5cbiIsJzxwPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2F2ZSI+Cic7aWYoaXNzZXQoJF9HRVRbImhvc3QiXSkpe2VjaG8nPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZHJvcCIgdmFsdWU9IkRyb3AiPicsY29uZmlybShzcHJpbnRmKCdEcm9wICVzPycsIiRoYUAkX0dFVFtob3N0XSIpKTt9ZWNobyc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0b2tlbiIgdmFsdWU9IicsJG5pLCciPgo8L2Zvcm0+Cic7fWVsc2VpZihpc3NldCgkX0dFVFsicHJvY2Vzc2xpc3QiXSkpe2lmKHN1cHBvcnQoImtpbGwiKSl7aWYoJF9QT1NUJiYhJG4peyRqZT0wO2ZvcmVhY2goKGFycmF5KSRfUE9TVFsia2lsbCJdYXMkWCl7aWYoa2lsbF9wcm9jZXNzKCRYKSkkamUrKzt9cXVlcmllc19yZWRpcmVjdChNRS4icHJvY2Vzc2xpc3Q9IixsYW5nKGFycmF5KCclZCBwcm9jZXNzIGhhcyBiZWVuIGtpbGxlZC4nLCclZCBwcm9jZXNzZXMgaGF2ZSBiZWVuIGtpbGxlZC4nKSwkamUpLCRqZXx8ISRfUE9TVFsia2lsbCJdKTt9fXBhZ2VfaGVhZGVyKCdQcm9jZXNzIGxpc3QnLCRuKTtlY2hvJwo8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KPGRpdiBjbGFzcz0ic2Nyb2xsYWJsZSI+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9Im5vd3JhcCBjaGVja2FibGUiPgonLHNjcmlwdCgibWl4aW4ocXNsKCd0YWJsZScpLCB7b25jbGljazogdGFibGVDbGljaywgb25kYmxjbGljazogcGFydGlhbEFyZyh0YWJsZUNsaWNrLCB0cnVlKX0pOyIpOyR0PS0xO2ZvcmVhY2gocHJvY2Vzc19saXN0KClhcyR0PT4kSil7aWYoISR0KXtlY2hvIjx0aGVhZD48dHIgbGFuZz0nZW4nPiIuKHN1cHBvcnQoImtpbGwiKT8iPHRoPiI6IiIpO2ZvcmVhY2goJEoKYXMkej0+JFgpZWNobyI8dGg+JHoiLmRvY19saW5rKGFycmF5KCdzcWwnPT4ic2hvdy1wcm9jZXNzbGlzdC5odG1sI3Byb2Nlc3NsaXN0XyIuc3RydG9sb3dlcigkeiksJ3Bnc3FsJz0+Im1vbml0b3Jpbmctc3RhdHMuaHRtbCNQRy1TVEFULUFDVElWSVRZLVZJRVciLCdvcmFjbGUnPT4iUkVGUk4zMDIyMyIsKSk7ZWNobyI8L3RoZWFkPlxuIjt9ZWNobyI8dHIiLm9kZCgpLiI+Ii4oc3VwcG9ydCgia2lsbCIpPyI8dGQ+Ii5jaGVja2JveCgia2lsbFtdIiwkSlskeT09InNxbCI/IklkIjoicGlkIl0sMCk6IiIpO2ZvcmVhY2goJEoKYXMkej0+JFgpZWNobyI8dGQ+Ii4oKCR5PT0ic3FsIiYmJHo9PSJJbmZvIiYmcHJlZ19tYXRjaCgiflF1ZXJ5fEtpbGxlZH4iLCRKWyJDb21tYW5kIl0pJiYkWCE9IiIpfHwoJHk9PSJwZ3NxbCImJiR6PT0iY3VycmVudF9xdWVyeSImJiRYIT0iPElETEU+Iil8fCgkeT09Im9yYWNsZSImJiR6PT0ic3FsX3RleHQiJiYkWCE9IiIpPyI8Y29kZSBjbGFzcz0nanVzaC0keSc+Ii5zaG9ydGVuX3V0ZjgoJFgsMTAwLCI8L2NvZGU+IikuJyA8YSBocmVmPSInLmgoTUUuKCRKWyJkYiJdIT0iIj8iZGI9Ii51cmxlbmNvZGUoJEpbImRiIl0pLiImIjoiIikuInNxbD0iLnVybGVuY29kZSgkWCkpLiciPicuJ0Nsb25lJy4nPC9hPic6aCgkWCkpO2VjaG8iXG4iO31lY2hvJzwvdGFibGU+CjwvZGl2Pgo8cD4KJztpZihzdXBwb3J0KCJraWxsIikpe2VjaG8oJHQrMSkuIi8iLnNwcmludGYoJyVkIGluIHRvdGFsJyxtYXhfY29ubmVjdGlvbnMoKSksIjxwPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSciLidLaWxsJy4iJz5cbiI7fWVjaG8nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInLCRuaSwnIj4KPC9mb3JtPgonLHNjcmlwdCgidGFibGVDaGVjaygpOyIpO31lbHNlaWYoaXNzZXQoJF9HRVRbInNlbGVjdCJdKSl7JGE9JF9HRVRbInNlbGVjdCJdOyRSPXRhYmxlX3N0YXR1czEoJGEpOyR4PWluZGV4ZXMoJGEpOyRwPWZpZWxkcygkYSk7JGhkPWNvbHVtbl9mb3JlaWduX2tleXMoJGEpOyRpZj0kUlsiT2lkIl07cGFyc2Vfc3RyKCRfQ09PS0lFWyJhZG1pbmVyX2ltcG9ydCJdLCR5YSk7JFJnPWFycmF5KCk7JGY9YXJyYXkoKTskY2k9bnVsbDtmb3JlYWNoKCRwCmFzJHo9PiRvKXskRD0kYi0+ZmllbGROYW1lKCRvKTtpZihpc3NldCgkb1sicHJpdmlsZWdlcyJdWyJzZWxlY3QiXSkmJiREIT0iIil7JGZbJHpdPWh0bWxfZW50aXR5X2RlY29kZShzdHJpcF90YWdzKCREKSxFTlRfUVVPVEVTKTtpZihpc19zaG9ydGFibGUoJG8pKSRjaT0kYi0+c2VsZWN0TGVuZ3RoUHJvY2VzcygpO30kUmcrPSRvWyJwcml2aWxlZ2VzIl07fWxpc3QoJEwsJHFkKT0kYi0+c2VsZWN0Q29sdW1uc1Byb2Nlc3MoJGYsJHgpOyRhZT1jb3VudCgkcWQpPGNvdW50KCRMKTskWj0kYi0+c2VsZWN0U2VhcmNoUHJvY2VzcygkcCwkeCk7JHpmPSRiLT5zZWxlY3RPcmRlclByb2Nlc3MoJHAsJHgpOyRfPSRiLT5zZWxlY3RMaW1pdFByb2Nlc3MoKTtpZigkX0dFVFsidmFsIl0mJmlzX2FqYXgoKSl7aGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiKTtmb3JlYWNoKCRfR0VUWyJ2YWwiXWFzJEVpPT4kSil7JEZhPWNvbnZlcnRfZmllbGQoJHBba2V5KCRKKV0pOyRMPWFycmF5KCRGYT8kRmE6aWRmX2VzY2FwZShrZXkoJEopKSk7JFpbXT13aGVyZV9jaGVjaygkRWksJHApOyRJPSRtLT5zZWxlY3QoJGEsJEwsJFosJEwpO2lmKCRJKWVjaG8KcmVzZXQoJEktPmZldGNoX3JvdygpKTt9ZXhpdDt9JGtnPSRHaT1udWxsO2ZvcmVhY2goJHgKYXMkdyl7aWYoJHdbInR5cGUiXT09IlBSSU1BUlkiKXska2c9YXJyYXlfZmxpcCgkd1siY29sdW1ucyJdKTskR2k9KCRMPyRrZzphcnJheSgpKTtmb3JlYWNoKCRHaQphcyR6PT4kWCl7aWYoaW5fYXJyYXkoaWRmX2VzY2FwZSgkeiksJEwpKXVuc2V0KCRHaVskel0pO31icmVhazt9fWlmKCRpZiYmISRrZyl7JGtnPSRHaT1hcnJheSgkaWY9PjApOyR4W109YXJyYXkoInR5cGUiPT4iUFJJTUFSWSIsImNvbHVtbnMiPT5hcnJheSgkaWYpKTt9aWYoJF9QT1NUJiYhJG4peyRoaj0kWjtpZighJF9QT1NUWyJhbGwiXSYmaXNfYXJyYXkoJF9QT1NUWyJjaGVjayJdKSl7JGRiPWFycmF5KCk7Zm9yZWFjaCgkX1BPU1RbImNoZWNrIl1hcyRhYikkZGJbXT13aGVyZV9jaGVjaygkYWIsJHApOyRoaltdPSIoKCIuaW1wbG9kZSgiKSBPUiAoIiwkZGIpLiIpKSI7fSRoaj0oJGhqPyJcbldIRVJFICIuaW1wbG9kZSgiIEFORCAiLCRoaik6IiIpO2lmKCRfUE9TVFsiZXhwb3J0Il0pe2Nvb2tpZSgiYWRtaW5lcl9pbXBvcnQiLCJvdXRwdXQ9Ii51cmxlbmNvZGUoJF9QT1NUWyJvdXRwdXQiXSkuIiZmb3JtYXQ9Ii51cmxlbmNvZGUoJF9QT1NUWyJmb3JtYXQiXSkpO2R1bXBfaGVhZGVycygkYSk7JGItPmR1bXBUYWJsZSgkYSwiIik7JG1kPSgkTD9pbXBsb2RlKCIsICIsJEwpOiIqIikuY29udmVydF9maWVsZHMoJGYsJHAsJEwpLiJcbkZST00gIi50YWJsZSgkYSk7JHNkPSgkcWQmJiRhZT8iXG5HUk9VUCBCWSAiLmltcGxvZGUoIiwgIiwkcWQpOiIiKS4oJHpmPyJcbk9SREVSIEJZICIuaW1wbG9kZSgiLCAiLCR6Zik6IiIpO2lmKCFpc19hcnJheSgkX1BPU1RbImNoZWNrIl0pfHwka2cpJEc9IlNFTEVDVCAkbWQkaGokc2QiO2Vsc2V7JENpPWFycmF5KCk7Zm9yZWFjaCgkX1BPU1RbImNoZWNrIl1hcyRYKSRDaVtdPSIoU0VMRUNUIi5saW1pdCgkbWQsIlxuV0hFUkUgIi4oJFo/aW1wbG9kZSgiIEFORCAiLCRaKS4iIEFORCAiOiIiKS53aGVyZV9jaGVjaygkWCwkcCkuJHNkLDEpLiIpIjskRz1pbXBsb2RlKCIgVU5JT04gQUxMICIsJENpKTt9JGItPmR1bXBEYXRhKCRhLCJ0YWJsZSIsJEcpO2V4aXQ7fWlmKCEkYi0+c2VsZWN0RW1haWxQcm9jZXNzKCRaLCRoZCkpe2lmKCRfUE9TVFsic2F2ZSJdfHwkX1BPU1RbImRlbGV0ZSJdKXskSD10cnVlOyR6YT0wOyROPWFycmF5KCk7aWYoISRfUE9TVFsiZGVsZXRlIl0pe2ZvcmVhY2goJGYKYXMkRD0+JFgpeyRYPXByb2Nlc3NfaW5wdXQoJHBbJERdKTtpZigkWCE9PW51bGwmJigkX1BPU1RbImNsb25lIl18fCRYIT09ZmFsc2UpKSROW2lkZl9lc2NhcGUoJEQpXT0oJFghPT1mYWxzZT8kWDppZGZfZXNjYXBlKCREKSk7fX1pZigkX1BPU1RbImRlbGV0ZSJdfHwkTil7aWYoJF9QT1NUWyJjbG9uZSJdKSRHPSJJTlRPICIudGFibGUoJGEpLiIgKCIuaW1wbG9kZSgiLCAiLGFycmF5X2tleXMoJE4pKS4iKVxuU0VMRUNUICIuaW1wbG9kZSgiLCAiLCROKS4iXG5GUk9NICIudGFibGUoJGEpO2lmKCRfUE9TVFsiYWxsIl18fCgka2cmJmlzX2FycmF5KCRfUE9TVFsiY2hlY2siXSkpfHwkYWUpeyRIPSgkX1BPU1RbImRlbGV0ZSJdPyRtLT5kZWxldGUoJGEsJGhqKTooJF9QT1NUWyJjbG9uZSJdP3F1ZXJpZXMoIklOU0VSVCAkRyRoaiIpOiRtLT51cGRhdGUoJGEsJE4sJGhqKSkpOyR6YT0kZy0+YWZmZWN0ZWRfcm93czt9ZWxzZXtmb3JlYWNoKChhcnJheSkkX1BPU1RbImNoZWNrIl1hcyRYKXskZGo9IlxuV0hFUkUgIi4oJFo/aW1wbG9kZSgiIEFORCAiLCRaKS4iIEFORCAiOiIiKS53aGVyZV9jaGVjaygkWCwkcCk7JEg9KCRfUE9TVFsiZGVsZXRlIl0/JG0tPmRlbGV0ZSgkYSwkZGosMSk6KCRfUE9TVFsiY2xvbmUiXT9xdWVyaWVzKCJJTlNFUlQiLmxpbWl0MSgkYSwkRywkZGopKTokbS0+dXBkYXRlKCRhLCROLCRkaiwxKSkpO2lmKCEkSClicmVhazskemErPSRnLT5hZmZlY3RlZF9yb3dzO319fSRLZT1sYW5nKGFycmF5KCclZCBpdGVtIGhhcyBiZWVuIGFmZmVjdGVkLicsJyVkIGl0ZW1zIGhhdmUgYmVlbiBhZmZlY3RlZC4nKSwkemEpO2lmKCRfUE9TVFsiY2xvbmUiXSYmJEgmJiR6YT09MSl7JG9lPWxhc3RfaWQoKTtpZigkb2UpJEtlPXNwcmludGYoJ0l0ZW0lcyBoYXMgYmVlbiBpbnNlcnRlZC4nLCIgJG9lIik7fXF1ZXJpZXNfcmVkaXJlY3QocmVtb3ZlX2Zyb21fdXJpKCRfUE9TVFsiYWxsIl0mJiRfUE9TVFsiZGVsZXRlIl0/InBhZ2UiOiIiKSwkS2UsJEgpO2lmKCEkX1BPU1RbImRlbGV0ZSJdKXtlZGl0X2Zvcm0oJGEsJHAsKGFycmF5KSRfUE9TVFsiZmllbGRzIl0sISRfUE9TVFsiY2xvbmUiXSk7cGFnZV9mb290ZXIoKTtleGl0O319ZWxzZWlmKCEkX1BPU1RbImltcG9ydCJdKXtpZighJF9QT1NUWyJ2YWwiXSkkbj0nQ3RybCtjbGljayBvbiBhIHZhbHVlIHRvIG1vZGlmeSBpdC4nO2Vsc2V7JEg9dHJ1ZTskemE9MDtmb3JlYWNoKCRfUE9TVFsidmFsIl1hcyRFaT0+JEopeyROPWFycmF5KCk7Zm9yZWFjaCgkSgphcyR6PT4kWCl7JHo9YnJhY2tldF9lc2NhcGUoJHosMSk7JE5baWRmX2VzY2FwZSgkeildPShwcmVnX21hdGNoKCd+Y2hhcnx0ZXh0ficsJHBbJHpdWyJ0eXBlIl0pfHwkWCE9IiI/JGItPnByb2Nlc3NJbnB1dCgkcFskel0sJFgpOiJOVUxMIik7fSRIPSRtLT51cGRhdGUoJGEsJE4sIiBXSEVSRSAiLigkWj9pbXBsb2RlKCIgQU5EICIsJFopLiIgQU5EICI6IiIpLndoZXJlX2NoZWNrKCRFaSwkcCksISRhZSYmISRrZywiICIpO2lmKCEkSClicmVhazskemErPSRnLT5hZmZlY3RlZF9yb3dzO31xdWVyaWVzX3JlZGlyZWN0KHJlbW92ZV9mcm9tX3VyaSgpLGxhbmcoYXJyYXkoJyVkIGl0ZW0gaGFzIGJlZW4gYWZmZWN0ZWQuJywnJWQgaXRlbXMgaGF2ZSBiZWVuIGFmZmVjdGVkLicpLCR6YSksJEgpO319ZWxzZWlmKCFpc19zdHJpbmcoJFhjPWdldF9maWxlKCJjc3ZfZmlsZSIsdHJ1ZSkpKSRuPXVwbG9hZF9lcnJvcigkWGMpO2Vsc2VpZighcHJlZ19tYXRjaCgnfn51JywkWGMpKSRuPSdGaWxlIG11c3QgYmUgaW4gVVRGLTggZW5jb2RpbmcuJztlbHNle2Nvb2tpZSgiYWRtaW5lcl9pbXBvcnQiLCJvdXRwdXQ9Ii51cmxlbmNvZGUoJHlhWyJvdXRwdXQiXSkuIiZmb3JtYXQ9Ii51cmxlbmNvZGUoJF9QT1NUWyJzZXBhcmF0b3IiXSkpOyRIPXRydWU7JG5iPWFycmF5X2tleXMoJHApO3ByZWdfbWF0Y2hfYWxsKCd+KD8+IlteIl0qInxbXiJcclxuXSspK34nLCRYYywkQ2UpOyR6YT1jb3VudCgkQ2VbMF0pOyRtLT5iZWdpbigpOyRoaD0oJF9QT1NUWyJzZXBhcmF0b3IiXT09ImNzdiI/IiwiOigkX1BPU1RbInNlcGFyYXRvciJdPT0idHN2Ij8iXHQiOiI7IikpOyRLPWFycmF5KCk7Zm9yZWFjaCgkQ2VbMF1hcyR6PT4kWCl7cHJlZ19tYXRjaF9hbGwoIn4oKD8+XCJbXlwiXSpcIikrfFteJGhoXSopJGhofiIsJFguJGhoLCREZSk7aWYoISR6JiYhYXJyYXlfZGlmZigkRGVbMV0sJG5iKSl7JG5iPSREZVsxXTskemEtLTt9ZWxzZXskTj1hcnJheSgpO2ZvcmVhY2goJERlWzFdYXMkdD0+JGpiKSROW2lkZl9lc2NhcGUoJG5iWyR0XSldPSgkamI9PSIiJiYkcFskbmJbJHRdXVsibnVsbCJdPyJOVUxMIjpxKHN0cl9yZXBsYWNlKCciIicsJyInLHByZWdfcmVwbGFjZSgnfl4ifCIkficsJycsJGpiKSkpKTskS1tdPSROO319JEg9KCEkS3x8JG0tPmluc2VydFVwZGF0ZSgkYSwkSywka2cpKTtpZigkSCkkSD0kbS0+Y29tbWl0KCk7cXVlcmllc19yZWRpcmVjdChyZW1vdmVfZnJvbV91cmkoInBhZ2UiKSxsYW5nKGFycmF5KCclZCByb3cgaGFzIGJlZW4gaW1wb3J0ZWQuJywnJWQgcm93cyBoYXZlIGJlZW4gaW1wb3J0ZWQuJyksJHphKSwkSCk7JG0tPnJvbGxiYWNrKCk7fX19JE9oPSRiLT50YWJsZU5hbWUoJFIpO2lmKGlzX2FqYXgoKSl7cGFnZV9oZWFkZXJzKCk7b2Jfc3RhcnQoKTt9ZWxzZQpwYWdlX2hlYWRlcignU2VsZWN0Jy4iOiAkT2giLCRuKTskTj1udWxsO2lmKGlzc2V0KCRSZ1siaW5zZXJ0Il0pfHwhc3VwcG9ydCgidGFibGUiKSl7JE49IiI7Zm9yZWFjaCgoYXJyYXkpJF9HRVRbIndoZXJlIl1hcyRYKXtpZigkaGRbJFhbImNvbCJdXSYmY291bnQoJGhkWyRYWyJjb2wiXV0pPT0xJiYoJFhbIm9wIl09PSI9Inx8KCEkWFsib3AiXSYmIXByZWdfbWF0Y2goJ35bXyVdficsJFhbInZhbCJdKSkpKSROLj0iJnNldCIudXJsZW5jb2RlKCJbIi5icmFja2V0X2VzY2FwZSgkWFsiY29sIl0pLiJdIikuIj0iLnVybGVuY29kZSgkWFsidmFsIl0pO319JGItPnNlbGVjdExpbmtzKCRSLCROKTtpZighJGYmJnN1cHBvcnQoInRhYmxlIikpZWNobyI8cCBjbGFzcz0nZXJyb3InPiIuJ1VuYWJsZSB0byBzZWxlY3QgdGhlIHRhYmxlJy4oJHA/Ii4iOiI6ICIuZXJyb3IoKSkuIlxuIjtlbHNle2VjaG8iPGZvcm0gYWN0aW9uPScnIGlkPSdmb3JtJz5cbiIsIjxkaXYgc3R5bGU9J2Rpc3BsYXk6IG5vbmU7Jz4iO2hpZGRlbl9maWVsZHNfZ2V0KCk7ZWNobyhEQiE9IiI/JzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRiIiB2YWx1ZT0iJy5oKERCKS4nIj4nLihpc3NldCgkX0dFVFsibnMiXSk/JzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im5zIiB2YWx1ZT0iJy5oKCRfR0VUWyJucyJdKS4nIj4nOiIiKToiIik7ZWNobyc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWxlY3QiIHZhbHVlPSInLmgoJGEpLiciPicsIjwvZGl2PlxuIjskYi0+c2VsZWN0Q29sdW1uc1ByaW50KCRMLCRmKTskYi0+c2VsZWN0U2VhcmNoUHJpbnQoJFosJGYsJHgpOyRiLT5zZWxlY3RPcmRlclByaW50KCR6ZiwkZiwkeCk7JGItPnNlbGVjdExpbWl0UHJpbnQoJF8pOyRiLT5zZWxlY3RMZW5ndGhQcmludCgkY2kpOyRiLT5zZWxlY3RBY3Rpb25QcmludCgkeCk7ZWNobyI8L2Zvcm0+XG4iOyRFPSRfR0VUWyJwYWdlIl07aWYoJEU9PSJsYXN0Iil7JGtkPSRnLT5yZXN1bHQoY291bnRfcm93cygkYSwkWiwkYWUsJHFkKSk7JEU9Zmxvb3IobWF4KDAsJGtkLTEpLyRfKTt9JGNoPSRMOyRyZD0kcWQ7aWYoISRjaCl7JGNoW109IioiOyRFYj1jb252ZXJ0X2ZpZWxkcygkZiwkcCwkTCk7aWYoJEViKSRjaFtdPXN1YnN0cigkRWIsMik7fWZvcmVhY2goJEwKYXMkej0+JFgpeyRvPSRwW2lkZl91bmVzY2FwZSgkWCldO2lmKCRvJiYoJEZhPWNvbnZlcnRfZmllbGQoJG8pKSkkY2hbJHpdPSIkRmEgQVMgJFgiO31pZighJGFlJiYkR2kpe2ZvcmVhY2goJEdpCmFzJHo9PiRYKXskY2hbXT1pZGZfZXNjYXBlKCR6KTtpZigkcmQpJHJkW109aWRmX2VzY2FwZSgkeik7fX0kSD0kbS0+c2VsZWN0KCRhLCRjaCwkWiwkcmQsJHpmLCRfLCRFLHRydWUpO2lmKCEkSCllY2hvIjxwIGNsYXNzPSdlcnJvcic+Ii5lcnJvcigpLiJcbiI7ZWxzZXtpZigkeT09Im1zc3FsIiYmJEUpJEgtPnNlZWsoJF8qJEUpOyR3Yz1hcnJheSgpO2VjaG8iPGZvcm0gYWN0aW9uPScnIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+XG4iOyRLPWFycmF5KCk7d2hpbGUoJEo9JEgtPmZldGNoX2Fzc29jKCkpe2lmKCRFJiYkeT09Im9yYWNsZSIpdW5zZXQoJEpbIlJOVU0iXSk7JEtbXT0kSjt9aWYoJF9HRVRbInBhZ2UiXSE9Imxhc3QiJiYkXyE9IiImJiRxZCYmJGFlJiYkeT09InNxbCIpJGtkPSRnLT5yZXN1bHQoIiBTRUxFQ1QgRk9VTkRfUk9XUygpIik7aWYoISRLKWVjaG8iPHAgY2xhc3M9J21lc3NhZ2UnPiIuJ05vIHJvd3MuJy4iXG4iO2Vsc2V7JE9hPSRiLT5iYWNrd2FyZEtleXMoJGEsJE9oKTtlY2hvIjxkaXYgY2xhc3M9J3Njcm9sbGFibGUnPiIsIjx0YWJsZSBpZD0ndGFibGUnIGNlbGxzcGFjaW5nPScwJyBjbGFzcz0nbm93cmFwIGNoZWNrYWJsZSc+IixzY3JpcHQoIm1peGluKHFzKCcjdGFibGUnKSwge29uY2xpY2s6IHRhYmxlQ2xpY2ssIG9uZGJsY2xpY2s6IHBhcnRpYWxBcmcodGFibGVDbGljaywgdHJ1ZSksIG9ua2V5ZG93bjogZWRpdGluZ0tleWRvd259KTsiKSwiPHRoZWFkPjx0cj4iLighJHFkJiYkTD8iIjoiPHRkPjxpbnB1dCB0eXBlPSdjaGVja2JveCcgaWQ9J2FsbC1wYWdlJyBjbGFzcz0nanNvbmx5Jz4iLnNjcmlwdCgicXMoJyNhbGwtcGFnZScpLm9uY2xpY2sgPSBwYXJ0aWFsKGZvcm1DaGVjaywgL2NoZWNrLyk7IiwiIikuIiA8YSBocmVmPSciLmgoJF9HRVRbIm1vZGlmeSJdP3JlbW92ZV9mcm9tX3VyaSgibW9kaWZ5Iik6JF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0uIiZtb2RpZnk9MSIpLiInPiIuJ01vZGlmeScuIjwvYT4iKTskVmU9YXJyYXkoKTskbmQ9YXJyYXkoKTtyZXNldCgkTCk7JHpnPTE7Zm9yZWFjaCgkS1swXWFzJHo9PiRYKXtpZighaXNzZXQoJEdpWyR6XSkpeyRYPSRfR0VUWyJjb2x1bW5zIl1ba2V5KCRMKV07JG89JHBbJEw/KCRYPyRYWyJjb2wiXTpjdXJyZW50KCRMKSk6JHpdOyREPSgkbz8kYi0+ZmllbGROYW1lKCRvLCR6Zyk6KCRYWyJmdW4iXT8iKiI6JHopKTtpZigkRCE9IiIpeyR6ZysrOyRWZVskel09JEQ7JGU9aWRmX2VzY2FwZSgkeik7JEVkPXJlbW92ZV9mcm9tX3VyaSgnKG9yZGVyfGRlc2MpW149XSp8cGFnZScpLicmb3JkZXIlNUIwJTVEPScudXJsZW5jb2RlKCR6KTskYmM9IiZkZXNjJTVCMCU1RD0xIjtlY2hvIjx0aCBpZD0ndGhbIi5oKGJyYWNrZXRfZXNjYXBlKCR6KSkuIl0nPiIuc2NyaXB0KCJtaXhpbihxc2woJ3RoJyksIHtvbm1vdXNlb3ZlcjogcGFydGlhbChjb2x1bW5Nb3VzZSksIG9ubW91c2VvdXQ6IHBhcnRpYWwoY29sdW1uTW91c2UsICcgaGlkZGVuJyl9KTsiLCIiKSwnPGEgaHJlZj0iJy5oKCRFZC4oJHpmWzBdPT0kZXx8JHpmWzBdPT0kenx8KCEkemYmJiRhZSYmJHFkWzBdPT0kZSk/JGJjOicnKSkuJyI+JztlY2hvCmFwcGx5X3NxbF9mdW5jdGlvbigkWFsiZnVuIl0sJEQpLiI8L2E+IjtlY2hvIjxzcGFuIGNsYXNzPSdjb2x1bW4gaGlkZGVuJz4iLCI8YSBocmVmPSciLmgoJEVkLiRiYykuIicgdGl0bGU9JyIuJ2Rlc2NlbmRpbmcnLiInIGNsYXNzPSd0ZXh0Jz4gw4PCosOi4oKsIMOi4oKsxZM8L2E+IjtpZighJFhbImZ1biJdKXtlY2hvJzxhIGhyZWY9IiNmaWVsZHNldC1zZWFyY2giIHRpdGxlPSInLidTZWFyY2gnLiciIGNsYXNzPSJ0ZXh0IGpzb25seSI+ID08L2E+JyxzY3JpcHQoInFzbCgnYScpLm9uY2xpY2sgPSBwYXJ0aWFsKHNlbGVjdFNlYXJjaCwgJyIuanNfZXNjYXBlKCR6KS4iJyk7Iik7fWVjaG8iPC9zcGFuPiI7fSRuZFskel09JFhbImZ1biJdO25leHQoJEwpO319JHVlPWFycmF5KCk7aWYoJF9HRVRbIm1vZGlmeSJdKXtmb3JlYWNoKCRLCmFzJEope2ZvcmVhY2goJEoKYXMkej0+JFgpJHVlWyR6XT1tYXgoJHVlWyR6XSxtaW4oNDAsc3RybGVuKHV0ZjhfZGVjb2RlKCRYKSkpKTt9fWVjaG8oJE9hPyI8dGg+Ii4nUmVsYXRpb25zJzoiIikuIjwvdGhlYWQ+XG4iO2lmKGlzX2FqYXgoKSl7aWYoJF8lMj09MSYmJEUlMj09MSlvZGQoKTtvYl9lbmRfY2xlYW4oKTt9Zm9yZWFjaCgkYi0+cm93RGVzY3JpcHRpb25zKCRLLCRoZClhcyRVZT0+JEopeyREaT11bmlxdWVfYXJyYXkoJEtbJFVlXSwkeCk7aWYoISREaSl7JERpPWFycmF5KCk7Zm9yZWFjaCgkS1skVWVdYXMkej0+JFgpe2lmKCFwcmVnX21hdGNoKCd+XihDT1VOVFwoKFwqfChESVNUSU5DVCApP2AoPzpbXmBdfGBgKStgKVwpfChBVkd8R1JPVVBfQ09OQ0FUfE1BWHxNSU58U1VNKVwoYCg/OlteYF18YGApK2BcKSkkficsJHopKSREaVskel09JFg7fX0kRWk9IiI7Zm9yZWFjaCgkRGkKYXMkej0+JFgpe2lmKCgkeT09InNxbCJ8fCR5PT0icGdzcWwiKSYmcHJlZ19tYXRjaCgnfmNoYXJ8dGV4dHxlbnVtfHNldH4nLCRwWyR6XVsidHlwZSJdKSYmc3RybGVuKCRYKT42NCl7JHo9KHN0cnBvcygkeiwnKCcpPyR6OmlkZl9lc2NhcGUoJHopKTskej0iTUQ1KCIuKCR5IT0nc3FsJ3x8cHJlZ19tYXRjaCgifl51dGY4fiIsJHBbJHpdWyJjb2xsYXRpb24iXSk/JHo6IkNPTlZFUlQoJHogVVNJTkcgIi5jaGFyc2V0KCRnKS4iKSIpLiIpIjskWD1tZDUoJFgpO30kRWkuPSImIi4oJFghPT1udWxsP3VybGVuY29kZSgid2hlcmVbIi5icmFja2V0X2VzY2FwZSgkeikuIl0iKS4iPSIudXJsZW5jb2RlKCRYKToibnVsbCU1QiU1RD0iLnVybGVuY29kZSgkeikpO31lY2hvIjx0ciIub2RkKCkuIj4iLighJHFkJiYkTD8iIjoiPHRkPiIuY2hlY2tib3goImNoZWNrW10iLHN1YnN0cigkRWksMSksaW5fYXJyYXkoc3Vic3RyKCRFaSwxKSwoYXJyYXkpJF9QT1NUWyJjaGVjayJdKSkuKCRhZXx8aW5mb3JtYXRpb25fc2NoZW1hKERCKT8iIjoiIDxhIGhyZWY9JyIuaChNRS4iZWRpdD0iLnVybGVuY29kZSgkYSkuJEVpKS4iJyBjbGFzcz0nZWRpdCc+Ii4nZWRpdCcuIjwvYT4iKSk7Zm9yZWFjaCgkSgphcyR6PT4kWCl7aWYoaXNzZXQoJFZlWyR6XSkpeyRvPSRwWyR6XTskWD0kbS0+dmFsdWUoJFgsJG8pO2lmKCRYIT0iIiYmKCFpc3NldCgkd2NbJHpdKXx8JHdjWyR6XSE9IiIpKSR3Y1skel09KGlzX21haWwoJFgpPyRWZVskel06IiIpOyRBPSIiO2lmKHByZWdfbWF0Y2goJ35ibG9ifGJ5dGVhfHJhd3xmaWxlficsJG9bInR5cGUiXSkmJiRYIT0iIikkQT1NRS4nZG93bmxvYWQ9Jy51cmxlbmNvZGUoJGEpLicmZmllbGQ9Jy51cmxlbmNvZGUoJHopLiRFaTtpZighJEEmJiRYIT09bnVsbCl7Zm9yZWFjaCgoYXJyYXkpJGhkWyR6XWFzJHIpe2lmKGNvdW50KCRoZFskel0pPT0xfHxlbmQoJHJbInNvdXJjZSJdKT09JHopeyRBPSIiO2ZvcmVhY2goJHJbInNvdXJjZSJdYXMkdD0+JHZoKSRBLj13aGVyZV9saW5rKCR0LCRyWyJ0YXJnZXQiXVskdF0sJEtbJFVlXVskdmhdKTskQT0oJHJbImRiIl0hPSIiP3ByZWdfcmVwbGFjZSgnfihbPyZdZGI9KVteJl0rficsJ1wxJy51cmxlbmNvZGUoJHJbImRiIl0pLE1FKTpNRSkuJ3NlbGVjdD0nLnVybGVuY29kZSgkclsidGFibGUiXSkuJEE7aWYoJHJbIm5zIl0pJEE9cHJlZ19yZXBsYWNlKCd+KFs/Jl1ucz0pW14mXSt+JywnXDEnLnVybGVuY29kZSgkclsibnMiXSksJEEpO2lmKGNvdW50KCRyWyJzb3VyY2UiXSk9PTEpYnJlYWs7fX19aWYoJHo9PSJDT1VOVCgqKSIpeyRBPU1FLiJzZWxlY3Q9Ii51cmxlbmNvZGUoJGEpOyR0PTA7Zm9yZWFjaCgoYXJyYXkpJF9HRVRbIndoZXJlIl1hcyRXKXtpZighYXJyYXlfa2V5X2V4aXN0cygkV1siY29sIl0sJERpKSkkQS49d2hlcmVfbGluaygkdCsrLCRXWyJjb2wiXSwkV1sidmFsIl0sJFdbIm9wIl0pO31mb3JlYWNoKCREaQphcyRmZT0+JFcpJEEuPXdoZXJlX2xpbmsoJHQrKywkZmUsJFcpO30kWD1zZWxlY3RfdmFsdWUoJFgsJEEsJG8sJGNpKTskdT1oKCJ2YWxbJEVpXVsiLmJyYWNrZXRfZXNjYXBlKCR6KS4iXSIpOyRZPSRfUE9TVFsidmFsIl1bJEVpXVticmFja2V0X2VzY2FwZSgkeildOyRyYz0haXNfYXJyYXkoJEpbJHpdKSYmaXNfdXRmOCgkWCkmJiRLWyRVZV1bJHpdPT0kSlskel0mJiEkbmRbJHpdOyRiaT1wcmVnX21hdGNoKCd+dGV4dHxsb2J+Jywkb1sidHlwZSJdKTtlY2hvIjx0ZCBpZD0nJHUnIjtpZigoJF9HRVRbIm1vZGlmeSJdJiYkcmMpfHwkWSE9PW51bGwpeyR2ZD1oKCRZIT09bnVsbD8kWTokSlskel0pO2VjaG8iPiIuKCRiaT8iPHRleHRhcmVhIG5hbWU9JyR1JyBjb2xzPSczMCcgcm93cz0nIi4oc3Vic3RyX2NvdW50KCRKWyR6XSwiXG4iKSsxKS4iJz4kdmQ8L3RleHRhcmVhPiI6IjxpbnB1dCBuYW1lPSckdScgdmFsdWU9JyR2ZCcgc2l6ZT0nJHVlWyR6XSc+Iik7fWVsc2V7JHllPXN0cnBvcygkWCwiPGk+w4PCosOi4oCawqzDgsKmPC9pPiIpO2VjaG8iIGRhdGEtdGV4dD0nIi4oJHllPzI6KCRiaT8xOjApKS4iJyIuKCRyYz8iIjoiIGRhdGEtd2FybmluZz0nIi5oKCdVc2UgZWRpdCBsaW5rIHRvIG1vZGlmeSB0aGlzIHZhbHVlLicpLiInIikuIj4kWDwvdGQ+Ijt9fX1pZigkT2EpZWNobyI8dGQ+IjskYi0+YmFja3dhcmRLZXlzUHJpbnQoJE9hLCRLWyRVZV0pO2VjaG8iPC90cj5cbiI7fWlmKGlzX2FqYXgoKSlleGl0O2VjaG8iPC90YWJsZT5cbiIsIjwvZGl2PlxuIjt9aWYoIWlzX2FqYXgoKSl7aWYoJEt8fCRFKXskR2M9dHJ1ZTtpZigkX0dFVFsicGFnZSJdIT0ibGFzdCIpe2lmKCRfPT0iInx8KGNvdW50KCRLKTwkXyYmKCRLfHwhJEUpKSkka2Q9KCRFPyRFKiRfOjApK2NvdW50KCRLKTtlbHNlaWYoJHkhPSJzcWwifHwhJGFlKXska2Q9KCRhZT9mYWxzZTpmb3VuZF9yb3dzKCRSLCRaKSk7aWYoJGtkPG1heCgxZTQsMiooJEUrMSkqJF8pKSRrZD1yZXNldChzbG93X3F1ZXJ5KGNvdW50X3Jvd3MoJGEsJFosJGFlLCRxZCkpKTtlbHNlJEdjPWZhbHNlO319JE1mPSgkXyE9IiImJigka2Q9PT1mYWxzZXx8JGtkPiRffHwkRSkpO2lmKCRNZil7ZWNobygoJGtkPT09ZmFsc2U/Y291bnQoJEspKzE6JGtkLSRFKiRfKT4kXz8nPHA+PGEgaHJlZj0iJy5oKHJlbW92ZV9mcm9tX3VyaSgicGFnZSIpLiImcGFnZT0iLigkRSsxKSkuJyIgY2xhc3M9ImxvYWRtb3JlIj4nLidMb2FkIG1vcmUgZGF0YScuJzwvYT4nLnNjcmlwdCgicXNsKCdhJykub25jbGljayA9IHBhcnRpYWwoc2VsZWN0TG9hZE1vcmUsICIuKCskXykuIiwgJyIuJ0xvYWRpbmcnLiLDg8Kiw6LigJrCrMOCwqYnKTsiLCIiKTonJyksIlxuIjt9fWVjaG8iPGRpdiBjbGFzcz0nZm9vdGVyJz48ZGl2PlxuIjtpZigkS3x8JEUpe2lmKCRNZil7JEZlPSgka2Q9PT1mYWxzZT8kRSsoY291bnQoJEspPj0kXz8yOjEpOmZsb29yKCgka2QtMSkvJF8pKTtlY2hvIjxmaWVsZHNldD4iO2lmKCR5IT0ic2ltcGxlZGIiKXtlY2hvIjxsZWdlbmQ+PGEgaHJlZj0nIi5oKHJlbW92ZV9mcm9tX3VyaSgicGFnZSIpKS4iJz4iLidQYWdlJy4iPC9hPjwvbGVnZW5kPiIsc2NyaXB0KCJxc2woJ2EnKS5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBwYWdlQ2xpY2sodGhpcy5ocmVmLCArcHJvbXB0KCciLidQYWdlJy4iJywgJyIuKCRFKzEpLiInKSk7IHJldHVybiBmYWxzZTsgfTsiKSxwYWdpbmF0aW9uKDAsJEUpLigkRT41PyIgw4PCosOi4oCawqzDgsKmIjoiIik7Zm9yKCR0PW1heCgxLCRFLTQpOyR0PG1pbigkRmUsJEUrNSk7JHQrKyllY2hvCnBhZ2luYXRpb24oJHQsJEUpO2lmKCRGZT4wKXtlY2hvKCRFKzU8JEZlPyIgw4PCosOi4oCawqzDgsKmIjoiIiksKCRHYyYmJGtkIT09ZmFsc2U/cGFnaW5hdGlvbigkRmUsJEUpOiIgPGEgaHJlZj0nIi5oKHJlbW92ZV9mcm9tX3VyaSgicGFnZSIpLiImcGFnZT1sYXN0IikuIicgdGl0bGU9J34kRmUnPiIuJ2xhc3QnLiI8L2E+Iik7fX1lbHNle2VjaG8iPGxlZ2VuZD4iLidQYWdlJy4iPC9sZWdlbmQ+IixwYWdpbmF0aW9uKDAsJEUpLigkRT4xPyIgw4PCosOi4oCawqzDgsKmIjoiIiksKCRFP3BhZ2luYXRpb24oJEUsJEUpOiIiKSwoJEZlPiRFP3BhZ2luYXRpb24oJEUrMSwkRSkuKCRGZT4kRSsxPyIgw4PCosOi4oCawqzDgsKmIjoiIik6IiIpO31lY2hvIjwvZmllbGRzZXQ+XG4iO31lY2hvIjxmaWVsZHNldD4iLCI8bGVnZW5kPiIuJ1dob2xlIHJlc3VsdCcuIjwvbGVnZW5kPiI7JGdjPSgkR2M/IiI6In4gIikuJGtkO2VjaG8KY2hlY2tib3goImFsbCIsMSwwLCgka2QhPT1mYWxzZT8oJEdjPyIiOiJ+ICIpLmxhbmcoYXJyYXkoJyVkIHJvdycsJyVkIHJvd3MnKSwka2QpOiIiKSwidmFyIGNoZWNrZWQgPSBmb3JtQ2hlY2tlZCh0aGlzLCAvY2hlY2svKTsgc2VsZWN0Q291bnQoJ3NlbGVjdGVkJywgdGhpcy5jaGVja2VkID8gJyRnYycgOiBjaGVja2VkKTsgc2VsZWN0Q291bnQoJ3NlbGVjdGVkMicsIHRoaXMuY2hlY2tlZCB8fCAhY2hlY2tlZCA/ICckZ2MnIDogY2hlY2tlZCk7IikuIlxuIiwiPC9maWVsZHNldD5cbiI7aWYoJGItPnNlbGVjdENvbW1hbmRQcmludCgpKXtlY2hvJzxmaWVsZHNldCcsKCRfR0VUWyJtb2RpZnkiXT8nJzonIGNsYXNzPSJqc29ubHkiJyksJz48bGVnZW5kPk1vZGlmeTwvbGVnZW5kPjxkaXY+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTYXZlIicsKCRfR0VUWyJtb2RpZnkiXT8nJzonIHRpdGxlPSInLidDdHJsK2NsaWNrIG9uIGEgdmFsdWUgdG8gbW9kaWZ5IGl0LicuJyInKSwnPgo8L2Rpdj48L2ZpZWxkc2V0Pgo8ZmllbGRzZXQ+PGxlZ2VuZD5TZWxlY3RlZCA8c3BhbiBpZD0ic2VsZWN0ZWQiPjwvc3Bhbj48L2xlZ2VuZD48ZGl2Pgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJlZGl0IiB2YWx1ZT0iRWRpdCI+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNsb25lIiB2YWx1ZT0iQ2xvbmUiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJkZWxldGUiIHZhbHVlPSJEZWxldGUiPicsY29uZmlybSgpLCc8L2Rpdj48L2ZpZWxkc2V0PgonO30kaWQ9JGItPmR1bXBGb3JtYXQoKTtmb3JlYWNoKChhcnJheSkkX0dFVFsiY29sdW1ucyJdYXMkZSl7aWYoJGVbImZ1biJdKXt1bnNldCgkaWRbJ3NxbCddKTticmVhazt9fWlmKCRpZCl7cHJpbnRfZmllbGRzZXQoImV4cG9ydCIsJ0V4cG9ydCcuIiA8c3BhbiBpZD0nc2VsZWN0ZWQyJz48L3NwYW4+Iik7JEpmPSRiLT5kdW1wT3V0cHV0KCk7ZWNobygkSmY/aHRtbF9zZWxlY3QoIm91dHB1dCIsJEpmLCR5YVsib3V0cHV0Il0pLiIgIjoiIiksaHRtbF9zZWxlY3QoImZvcm1hdCIsJGlkLCR5YVsiZm9ybWF0Il0pLCIgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nZXhwb3J0JyB2YWx1ZT0nIi4nRXhwb3J0Jy4iJz5cbiIsIjwvZGl2PjwvZmllbGRzZXQ+XG4iO30kYi0+c2VsZWN0RW1haWxQcmludChhcnJheV9maWx0ZXIoJHdjLCdzdHJsZW4nKSwkZik7fWVjaG8iPC9kaXY+PC9kaXY+XG4iO2lmKCRiLT5zZWxlY3RJbXBvcnRQcmludCgpKXtlY2hvIjxkaXY+IiwiPGEgaHJlZj0nI2ltcG9ydCc+Ii4nSW1wb3J0Jy4iPC9hPiIsc2NyaXB0KCJxc2woJ2EnKS5vbmNsaWNrID0gcGFydGlhbCh0b2dnbGUsICdpbXBvcnQnKTsiLCIiKSwiPHNwYW4gaWQ9J2ltcG9ydCcgY2xhc3M9J2hpZGRlbic+OiAiLCI8aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0nY3N2X2ZpbGUnPiAiLGh0bWxfc2VsZWN0KCJzZXBhcmF0b3IiLGFycmF5KCJjc3YiPT4iQ1NWLCIsImNzdjsiPT4iQ1NWOyIsInRzdiI9PiJUU1YiKSwkeWFbImZvcm1hdCJdLDEpO2VjaG8iIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2ltcG9ydCcgdmFsdWU9JyIuJ0ltcG9ydCcuIic+IiwiPC9zcGFuPiIsIjwvZGl2PiI7fWVjaG8iPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ndG9rZW4nIHZhbHVlPSckbmknPlxuIiwiPC9mb3JtPlxuIiwoISRxZCYmJEw/IiI6c2NyaXB0KCJ0YWJsZUNoZWNrKCk7IikpO319fWlmKGlzX2FqYXgoKSl7b2JfZW5kX2NsZWFuKCk7ZXhpdDt9fWVsc2VpZihpc3NldCgkX0dFVFsidmFyaWFibGVzIl0pKXskTz1pc3NldCgkX0dFVFsic3RhdHVzIl0pO3BhZ2VfaGVhZGVyKCRPPydTdGF0dXMnOidWYXJpYWJsZXMnKTskVWk9KCRPP3Nob3dfc3RhdHVzKCk6c2hvd192YXJpYWJsZXMoKSk7aWYoISRVaSllY2hvIjxwIGNsYXNzPSdtZXNzYWdlJz4iLidObyByb3dzLicuIlxuIjtlbHNle2VjaG8iPHRhYmxlIGNlbGxzcGFjaW5nPScwJz5cbiI7Zm9yZWFjaCgkVWkKYXMkej0+JFgpe2VjaG8iPHRyPiIsIjx0aD48Y29kZSBjbGFzcz0nanVzaC0iLiR5LigkTz8ic3RhdHVzIjoic2V0IikuIic+Ii5oKCR6KS4iPC9jb2RlPiIsIjx0ZD4iLmgoJFgpO31lY2hvIjwvdGFibGU+XG4iO319ZWxzZWlmKGlzc2V0KCRfR0VUWyJzY3JpcHQiXSkpe2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiKTtpZigkX0dFVFsic2NyaXB0Il09PSJkYiIpeyRMaD1hcnJheSgiRGF0YV9sZW5ndGgiPT4wLCJJbmRleF9sZW5ndGgiPT4wLCJEYXRhX2ZyZWUiPT4wKTtmb3JlYWNoKHRhYmxlX3N0YXR1cygpYXMkRD0+JFIpe2pzb25fcm93KCJDb21tZW50LSREIixoKCRSWyJDb21tZW50Il0pKTtpZighaXNfdmlldygkUikpe2ZvcmVhY2goYXJyYXkoIkVuZ2luZSIsIkNvbGxhdGlvbiIpYXMkeilqc29uX3JvdygiJHotJEQiLGgoJFJbJHpdKSk7Zm9yZWFjaCgkTGgrYXJyYXkoIkF1dG9faW5jcmVtZW50Ij0+MCwiUm93cyI9PjApYXMkej0+JFgpe2lmKCRSWyR6XSE9IiIpeyRYPWZvcm1hdF9udW1iZXIoJFJbJHpdKTtqc29uX3JvdygiJHotJEQiLCgkej09IlJvd3MiJiYkWCYmJFJbIkVuZ2luZSJdPT0oJHloPT0icGdzcWwiPyJ0YWJsZSI6Iklubm9EQiIpPyJ+ICRYIjokWCkpO2lmKGlzc2V0KCRMaFskel0pKSRMaFskel0rPSgkUlsiRW5naW5lIl0hPSJJbm5vREIifHwkeiE9IkRhdGFfZnJlZSI/JFJbJHpdOjApO31lbHNlaWYoYXJyYXlfa2V5X2V4aXN0cygkeiwkUikpanNvbl9yb3coIiR6LSREIik7fX19Zm9yZWFjaCgkTGgKYXMkej0+JFgpanNvbl9yb3coInN1bS0keiIsZm9ybWF0X251bWJlcigkWCkpO2pzb25fcm93KCIiKTt9ZWxzZWlmKCRfR0VUWyJzY3JpcHQiXT09ImtpbGwiKSRnLT5xdWVyeSgiS0lMTCAiLm51bWJlcigkX1BPU1RbImtpbGwiXSkpO2Vsc2V7Zm9yZWFjaChjb3VudF90YWJsZXMoJGItPmRhdGFiYXNlcygpKWFzJGw9PiRYKXtqc29uX3JvdygidGFibGVzLSRsIiwkWCk7anNvbl9yb3coInNpemUtJGwiLGRiX3NpemUoJGwpKTt9anNvbl9yb3coIiIpO31leGl0O31lbHNleyRVaD1hcnJheV9tZXJnZSgoYXJyYXkpJF9QT1NUWyJ0YWJsZXMiXSwoYXJyYXkpJF9QT1NUWyJ2aWV3cyJdKTtpZigkVWgmJiEkbiYmISRfUE9TVFsic2VhcmNoIl0peyRIPXRydWU7JEtlPSIiO2lmKCR5PT0ic3FsIiYmJF9QT1NUWyJ0YWJsZXMiXSYmY291bnQoJF9QT1NUWyJ0YWJsZXMiXSk+MSYmKCRfUE9TVFsiZHJvcCJdfHwkX1BPU1RbInRydW5jYXRlIl18fCRfUE9TVFsiY29weSJdKSlxdWVyaWVzKCJTRVQgZm9yZWlnbl9rZXlfY2hlY2tzID0gMCIpO2lmKCRfUE9TVFsidHJ1bmNhdGUiXSl7aWYoJF9QT1NUWyJ0YWJsZXMiXSkkSD10cnVuY2F0ZV90YWJsZXMoJF9QT1NUWyJ0YWJsZXMiXSk7JEtlPSdUYWJsZXMgaGF2ZSBiZWVuIHRydW5jYXRlZC4nO31lbHNlaWYoJF9QT1NUWyJtb3ZlIl0peyRIPW1vdmVfdGFibGVzKChhcnJheSkkX1BPU1RbInRhYmxlcyJdLChhcnJheSkkX1BPU1RbInZpZXdzIl0sJF9QT1NUWyJ0YXJnZXQiXSk7JEtlPSdUYWJsZXMgaGF2ZSBiZWVuIG1vdmVkLic7fWVsc2VpZigkX1BPU1RbImNvcHkiXSl7JEg9Y29weV90YWJsZXMoKGFycmF5KSRfUE9TVFsidGFibGVzIl0sKGFycmF5KSRfUE9TVFsidmlld3MiXSwkX1BPU1RbInRhcmdldCJdKTskS2U9J1RhYmxlcyBoYXZlIGJlZW4gY29waWVkLic7fWVsc2VpZigkX1BPU1RbImRyb3AiXSl7aWYoJF9QT1NUWyJ2aWV3cyJdKSRIPWRyb3Bfdmlld3MoJF9QT1NUWyJ2aWV3cyJdKTtpZigkSCYmJF9QT1NUWyJ0YWJsZXMiXSkkSD1kcm9wX3RhYmxlcygkX1BPU1RbInRhYmxlcyJdKTskS2U9J1RhYmxlcyBoYXZlIGJlZW4gZHJvcHBlZC4nO31lbHNlaWYoJHkhPSJzcWwiKXskSD0oJHk9PSJzcWxpdGUiP3F1ZXJpZXMoIlZBQ1VVTSIpOmFwcGx5X3F1ZXJpZXMoIlZBQ1VVTSIuKCRfUE9TVFsib3B0aW1pemUiXT8iIjoiIEFOQUxZWkUiKSwkX1BPU1RbInRhYmxlcyJdKSk7JEtlPSdUYWJsZXMgaGF2ZSBiZWVuIG9wdGltaXplZC4nO31lbHNlaWYoISRfUE9TVFsidGFibGVzIl0pJEtlPSdObyB0YWJsZXMuJztlbHNlaWYoJEg9cXVlcmllcygoJF9QT1NUWyJvcHRpbWl6ZSJdPyJPUFRJTUlaRSI6KCRfUE9TVFsiY2hlY2siXT8iQ0hFQ0siOigkX1BPU1RbInJlcGFpciJdPyJSRVBBSVIiOiJBTkFMWVpFIikpKS4iIFRBQkxFICIuaW1wbG9kZSgiLCAiLGFycmF5X21hcCgnaWRmX2VzY2FwZScsJF9QT1NUWyJ0YWJsZXMiXSkpKSl7d2hpbGUoJEo9JEgtPmZldGNoX2Fzc29jKCkpJEtlLj0iPGI+Ii5oKCRKWyJUYWJsZSJdKS4iPC9iPjogIi5oKCRKWyJNc2dfdGV4dCJdKS4iPGJyPiI7fXF1ZXJpZXNfcmVkaXJlY3Qoc3Vic3RyKE1FLDAsLTEpLCRLZSwkSCk7fXBhZ2VfaGVhZGVyKCgkX0dFVFsibnMiXT09IiI/J0RhdGFiYXNlJy4iOiAiLmgoREIpOidTY2hlbWEnLiI6ICIuaCgkX0dFVFsibnMiXSkpLCRuLHRydWUpO2lmKCRiLT5ob21lcGFnZSgpKXtpZigkX0dFVFsibnMiXSE9PSIiKXtlY2hvIjxoMyBpZD0ndGFibGVzLXZpZXdzJz4iLidUYWJsZXMgYW5kIHZpZXdzJy4iPC9oMz5cbiI7JFRoPXRhYmxlc19saXN0KCk7aWYoISRUaCllY2hvIjxwIGNsYXNzPSdtZXNzYWdlJz4iLidObyB0YWJsZXMuJy4iXG4iO2Vsc2V7ZWNobyI8Zm9ybSBhY3Rpb249JycgbWV0aG9kPSdwb3N0Jz5cbiI7aWYoc3VwcG9ydCgidGFibGUiKSl7ZWNobyI8ZmllbGRzZXQ+PGxlZ2VuZD4iLidTZWFyY2ggZGF0YSBpbiB0YWJsZXMnLiIgPHNwYW4gaWQ9J3NlbGVjdGVkMic+PC9zcGFuPjwvbGVnZW5kPjxkaXY+IiwiPGlucHV0IHR5cGU9J3NlYXJjaCcgbmFtZT0ncXVlcnknIHZhbHVlPSciLmgoJF9QT1NUWyJxdWVyeSJdKS4iJz4iLHNjcmlwdCgicXNsKCdpbnB1dCcpLm9ua2V5ZG93biA9IHBhcnRpYWxBcmcoYm9keUtleWRvd24sICdzZWFyY2gnKTsiLCIiKSwiIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3NlYXJjaCcgdmFsdWU9JyIuJ1NlYXJjaCcuIic+XG4iLCI8L2Rpdj48L2ZpZWxkc2V0PlxuIjtpZigkX1BPU1RbInNlYXJjaCJdJiYkX1BPU1RbInF1ZXJ5Il0hPSIiKXskX0dFVFsid2hlcmUiXVswXVsib3AiXT0iTElLRSAlJSI7c2VhcmNoX3RhYmxlcygpO319ZWNobyI8ZGl2IGNsYXNzPSdzY3JvbGxhYmxlJz5cbiIsIjx0YWJsZSBjZWxsc3BhY2luZz0nMCcgY2xhc3M9J25vd3JhcCBjaGVja2FibGUnPlxuIixzY3JpcHQoIm1peGluKHFzbCgndGFibGUnKSwge29uY2xpY2s6IHRhYmxlQ2xpY2ssIG9uZGJsY2xpY2s6IHBhcnRpYWxBcmcodGFibGVDbGljaywgdHJ1ZSl9KTsiKSwnPHRoZWFkPjx0ciBjbGFzcz0id3JhcCI+JywnPHRkPjxpbnB1dCBpZD0iY2hlY2stYWxsIiB0eXBlPSJjaGVja2JveCIgY2xhc3M9Impzb25seSI+Jy5zY3JpcHQoInFzKCcjY2hlY2stYWxsJykub25jbGljayA9IHBhcnRpYWwoZm9ybUNoZWNrLCAvXih0YWJsZXN8dmlld3MpXFsvKTsiLCIiKSwnPHRoPicuJ1RhYmxlJywnPHRkPicuJ0VuZ2luZScuZG9jX2xpbmsoYXJyYXkoJ3NxbCc9PidzdG9yYWdlLWVuZ2luZXMuaHRtbCcpKSwnPHRkPicuJ0NvbGxhdGlvbicuZG9jX2xpbmsoYXJyYXkoJ3NxbCc9PidjaGFyc2V0LWNoYXJzZXRzLmh0bWwnLCdtYXJpYWRiJz0+J3N1cHBvcnRlZC1jaGFyYWN0ZXItc2V0cy1hbmQtY29sbGF0aW9ucy8nKSksJzx0ZD4nLidEYXRhIExlbmd0aCcuZG9jX2xpbmsoYXJyYXkoJ3NxbCc9PidzaG93LXRhYmxlLXN0YXR1cy5odG1sJywncGdzcWwnPT4nZnVuY3Rpb25zLWFkbWluLmh0bWwjRlVOQ1RJT05TLUFETUlOLURCT0JKRUNUJywnb3JhY2xlJz0+J1JFRlJOMjAyODYnKSksJzx0ZD4nLidJbmRleCBMZW5ndGgnLmRvY19saW5rKGFycmF5KCdzcWwnPT4nc2hvdy10YWJsZS1zdGF0dXMuaHRtbCcsJ3Bnc3FsJz0+J2Z1bmN0aW9ucy1hZG1pbi5odG1sI0ZVTkNUSU9OUy1BRE1JTi1EQk9CSkVDVCcpKSwnPHRkPicuJ0RhdGEgRnJlZScuZG9jX2xpbmsoYXJyYXkoJ3NxbCc9PidzaG93LXRhYmxlLXN0YXR1cy5odG1sJykpLCc8dGQ+Jy4nQXV0byBJbmNyZW1lbnQnLmRvY19saW5rKGFycmF5KCdzcWwnPT4nZXhhbXBsZS1hdXRvLWluY3JlbWVudC5odG1sJywnbWFyaWFkYic9PidhdXRvX2luY3JlbWVudC8nKSksJzx0ZD4nLidSb3dzJy5kb2NfbGluayhhcnJheSgnc3FsJz0+J3Nob3ctdGFibGUtc3RhdHVzLmh0bWwnLCdwZ3NxbCc9PidjYXRhbG9nLXBnLWNsYXNzLmh0bWwjQ0FUQUxPRy1QRy1DTEFTUycsJ29yYWNsZSc9PidSRUZSTjIwMjg2JykpLChzdXBwb3J0KCJjb21tZW50Iik/Jzx0ZD4nLidDb21tZW50Jy5kb2NfbGluayhhcnJheSgnc3FsJz0+J3Nob3ctdGFibGUtc3RhdHVzLmh0bWwnLCdwZ3NxbCc9PidmdW5jdGlvbnMtaW5mby5odG1sI0ZVTkNUSU9OUy1JTkZPLUNPTU1FTlQtVEFCTEUnKSk6JycpLCI8L3RoZWFkPlxuIjskUz0wO2ZvcmVhY2goJFRoCmFzJEQ9PiRUKXskWGk9KCRUIT09bnVsbCYmIXByZWdfbWF0Y2goJ350YWJsZXxzZXF1ZW5jZX5pJywkVCkpOyR1PWgoIlRhYmxlLSIuJEQpO2VjaG8nPHRyJy5vZGQoKS4nPjx0ZD4nLmNoZWNrYm94KCgkWGk/InZpZXdzW10iOiJ0YWJsZXNbXSIpLCRELGluX2FycmF5KCRELCRVaCx0cnVlKSwiIiwiIiwiIiwkdSksJzx0aD4nLihzdXBwb3J0KCJ0YWJsZSIpfHxzdXBwb3J0KCJpbmRleGVzIik/IjxhIGhyZWY9JyIuaChNRSkuInRhYmxlPSIudXJsZW5jb2RlKCREKS4iJyB0aXRsZT0nIi4nU2hvdyBzdHJ1Y3R1cmUnLiInIGlkPSckdSc+Ii5oKCREKS4nPC9hPic6aCgkRCkpO2lmKCRYaSl7ZWNobyc8dGQgY29sc3Bhbj0iNiI+PGEgaHJlZj0iJy5oKE1FKS4idmlldz0iLnVybGVuY29kZSgkRCkuJyIgdGl0bGU9IicuJ0FsdGVyIHZpZXcnLiciPicuKHByZWdfbWF0Y2goJ35tYXRlcmlhbGl6ZWR+aScsJFQpPydNYXRlcmlhbGl6ZWQgdmlldyc6J1ZpZXcnKS4nPC9hPicsJzx0ZCBhbGlnbj0icmlnaHQiPjxhIGhyZWY9IicuaChNRSkuInNlbGVjdD0iLnVybGVuY29kZSgkRCkuJyIgdGl0bGU9IicuJ1NlbGVjdCBkYXRhJy4nIj4/PC9hPic7fWVsc2V7Zm9yZWFjaChhcnJheSgiRW5naW5lIj0+YXJyYXkoKSwiQ29sbGF0aW9uIj0+YXJyYXkoKSwiRGF0YV9sZW5ndGgiPT5hcnJheSgiY3JlYXRlIiwnQWx0ZXIgdGFibGUnKSwiSW5kZXhfbGVuZ3RoIj0+YXJyYXkoImluZGV4ZXMiLCdBbHRlciBpbmRleGVzJyksIkRhdGFfZnJlZSI9PmFycmF5KCJlZGl0IiwnTmV3IGl0ZW0nKSwiQXV0b19pbmNyZW1lbnQiPT5hcnJheSgiYXV0b19pbmNyZW1lbnQ9MSZjcmVhdGUiLCdBbHRlciB0YWJsZScpLCJSb3dzIj0+YXJyYXkoInNlbGVjdCIsJ1NlbGVjdCBkYXRhJyksKWFzJHo9PiRBKXskdT0iIGlkPSckei0iLmgoJEQpLiInIjtlY2hvKCRBPyI8dGQgYWxpZ249J3JpZ2h0Jz4iLihzdXBwb3J0KCJ0YWJsZSIpfHwkej09IlJvd3MifHwoc3VwcG9ydCgiaW5kZXhlcyIpJiYkeiE9IkRhdGFfbGVuZ3RoIik/IjxhIGhyZWY9JyIuaChNRS4iJEFbMF09IikudXJsZW5jb2RlKCREKS4iJyR1IHRpdGxlPSckQVsxXSc+PzwvYT4iOiI8c3BhbiR1Pj88L3NwYW4+Iik6Ijx0ZCBpZD0nJHotIi5oKCREKS4iJz4iKTt9JFMrKzt9ZWNobyhzdXBwb3J0KCJjb21tZW50Iik/Ijx0ZCBpZD0nQ29tbWVudC0iLmgoJEQpLiInPiI6IiIpO31lY2hvIjx0cj48dGQ+PHRoPiIuc3ByaW50ZignJWQgaW4gdG90YWwnLGNvdW50KCRUaCkpLCI8dGQ+Ii5oKCR5PT0ic3FsIj8kZy0+cmVzdWx0KCJTRUxFQ1QgQEBkZWZhdWx0X3N0b3JhZ2VfZW5naW5lIik6IiIpLCI8dGQ+Ii5oKGRiX2NvbGxhdGlvbihEQixjb2xsYXRpb25zKCkpKTtmb3JlYWNoKGFycmF5KCJEYXRhX2xlbmd0aCIsIkluZGV4X2xlbmd0aCIsIkRhdGFfZnJlZSIpYXMkeillY2hvIjx0ZCBhbGlnbj0ncmlnaHQnIGlkPSdzdW0tJHonPiI7ZWNobyI8L3RhYmxlPlxuIiwiPC9kaXY+XG4iO2lmKCFpbmZvcm1hdGlvbl9zY2hlbWEoREIpKXtlY2hvIjxkaXYgY2xhc3M9J2Zvb3Rlcic+PGRpdj5cbiI7JFJpPSI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nIi4nVmFjdXVtJy4iJz4gIi5vbl9oZWxwKCInVkFDVVVNJyIpOyR2Zj0iPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nb3B0aW1pemUnIHZhbHVlPSciLidPcHRpbWl6ZScuIic+ICIub25faGVscCgkeT09InNxbCI/IidPUFRJTUlaRSBUQUJMRSciOiInVkFDVVVNIE9QVElNSVpFJyIpO2VjaG8iPGZpZWxkc2V0PjxsZWdlbmQ+Ii4nU2VsZWN0ZWQnLiIgPHNwYW4gaWQ9J3NlbGVjdGVkJz48L3NwYW4+PC9sZWdlbmQ+PGRpdj4iLigkeT09InNxbGl0ZSI/JFJpOigkeT09InBnc3FsIj8kUmkuJHZmOigkeT09InNxbCI/IjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSciLidBbmFseXplJy4iJz4gIi5vbl9oZWxwKCInQU5BTFlaRSBUQUJMRSciKS4kdmYuIjxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2NoZWNrJyB2YWx1ZT0nIi4nQ2hlY2snLiInPiAiLm9uX2hlbHAoIidDSEVDSyBUQUJMRSciKS4iPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0ncmVwYWlyJyB2YWx1ZT0nIi4nUmVwYWlyJy4iJz4gIi5vbl9oZWxwKCInUkVQQUlSIFRBQkxFJyIpOiIiKSkpLiI8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSd0cnVuY2F0ZScgdmFsdWU9JyIuJ1RydW5jYXRlJy4iJz4gIi5vbl9oZWxwKCR5PT0ic3FsaXRlIj8iJ0RFTEVURSciOiInVFJVTkNBVEUiLigkeT09InBnc3FsIj8iJyI6IiBUQUJMRSciKSkuY29uZmlybSgpLiI8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdkcm9wJyB2YWx1ZT0nIi4nRHJvcCcuIic+Ii5vbl9oZWxwKCInRFJPUCBUQUJMRSciKS5jb25maXJtKCkuIlxuIjskaz0oc3VwcG9ydCgic2NoZW1lIik/JGItPnNjaGVtYXMoKTokYi0+ZGF0YWJhc2VzKCkpO2lmKGNvdW50KCRrKSE9MSYmJHkhPSJzcWxpdGUiKXskbD0oaXNzZXQoJF9QT1NUWyJ0YXJnZXQiXSk/JF9QT1NUWyJ0YXJnZXQiXTooc3VwcG9ydCgic2NoZW1lIik/JF9HRVRbIm5zIl06REIpKTtlY2hvIjxwPiIuJ01vdmUgdG8gb3RoZXIgZGF0YWJhc2UnLiI6ICIsKCRrP2h0bWxfc2VsZWN0KCJ0YXJnZXQiLCRrLCRsKTonPGlucHV0IG5hbWU9InRhcmdldCIgdmFsdWU9IicuaCgkbCkuJyIgYXV0b2NhcGl0YWxpemU9Im9mZiI+JyksIiA8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdtb3ZlJyB2YWx1ZT0nIi4nTW92ZScuIic+Iiwoc3VwcG9ydCgiY29weSIpPyIgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nY29weScgdmFsdWU9JyIuJ0NvcHknLiInPiAiLmNoZWNrYm94KCJvdmVyd3JpdGUiLDEsJF9QT1NUWyJvdmVyd3JpdGUiXSwnb3ZlcndyaXRlJyk6IiIpLCJcbiI7fWVjaG8iPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWxsJyB2YWx1ZT0nJz4iO2VjaG8Kc2NyaXB0KCJxc2woJ2lucHV0Jykub25jbGljayA9IGZ1bmN0aW9uICgpIHsgc2VsZWN0Q291bnQoJ3NlbGVjdGVkJywgZm9ybUNoZWNrZWQodGhpcywgL14odGFibGVzfHZpZXdzKVxbLykpOyIuKHN1cHBvcnQoInRhYmxlIik/IiBzZWxlY3RDb3VudCgnc2VsZWN0ZWQyJywgZm9ybUNoZWNrZWQodGhpcywgL150YWJsZXNcWy8pIHx8ICRTKTsiOiIiKS4iIH0iKSwiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ndG9rZW4nIHZhbHVlPSckbmknPlxuIiwiPC9kaXY+PC9maWVsZHNldD5cbiIsIjwvZGl2PjwvZGl2PlxuIjt9ZWNobyI8L2Zvcm0+XG4iLHNjcmlwdCgidGFibGVDaGVjaygpOyIpO31lY2hvJzxwIGNsYXNzPSJsaW5rcyI+PGEgaHJlZj0iJy5oKE1FKS4nY3JlYXRlPSI+Jy4nQ3JlYXRlIHRhYmxlJy4iPC9hPlxuIiwoc3VwcG9ydCgidmlldyIpPyc8YSBocmVmPSInLmgoTUUpLid2aWV3PSI+Jy4nQ3JlYXRlIHZpZXcnLiI8L2E+XG4iOiIiKTtpZihzdXBwb3J0KCJyb3V0aW5lIikpe2VjaG8iPGgzIGlkPSdyb3V0aW5lcyc+Ii4nUm91dGluZXMnLiI8L2gzPlxuIjskVmc9cm91dGluZXMoKTtpZigkVmcpe2VjaG8iPHRhYmxlIGNlbGxzcGFjaW5nPScwJz5cbiIsJzx0aGVhZD48dHI+PHRoPicuJ05hbWUnLic8dGQ+Jy4nVHlwZScuJzx0ZD4nLidSZXR1cm4gdHlwZScuIjx0ZD48L3RoZWFkPlxuIjtvZGQoJycpO2ZvcmVhY2goJFZnCmFzJEopeyREPSgkSlsiU1BFQ0lGSUNfTkFNRSJdPT0kSlsiUk9VVElORV9OQU1FIl0/IiI6IiZuYW1lPSIudXJsZW5jb2RlKCRKWyJST1VUSU5FX05BTUUiXSkpO2VjaG8nPHRyJy5vZGQoKS4nPicsJzx0aD48YSBocmVmPSInLmgoTUUuKCRKWyJST1VUSU5FX1RZUEUiXSE9IlBST0NFRFVSRSI/J2NhbGxmPSc6J2NhbGw9JykudXJsZW5jb2RlKCRKWyJTUEVDSUZJQ19OQU1FIl0pLiREKS4nIj4nLmgoJEpbIlJPVVRJTkVfTkFNRSJdKS4nPC9hPicsJzx0ZD4nLmgoJEpbIlJPVVRJTkVfVFlQRSJdKSwnPHRkPicuaCgkSlsiRFREX0lERU5USUZJRVIiXSksJzx0ZD48YSBocmVmPSInLmgoTUUuKCRKWyJST1VUSU5FX1RZUEUiXSE9IlBST0NFRFVSRSI/J2Z1bmN0aW9uPSc6J3Byb2NlZHVyZT0nKS51cmxlbmNvZGUoJEpbIlNQRUNJRklDX05BTUUiXSkuJEQpLiciPicuJ0FsdGVyJy4iPC9hPiI7fWVjaG8iPC90YWJsZT5cbiI7fWVjaG8nPHAgY2xhc3M9ImxpbmtzIj4nLihzdXBwb3J0KCJwcm9jZWR1cmUiKT8nPGEgaHJlZj0iJy5oKE1FKS4ncHJvY2VkdXJlPSI+Jy4nQ3JlYXRlIHByb2NlZHVyZScuJzwvYT4nOicnKS4nPGEgaHJlZj0iJy5oKE1FKS4nZnVuY3Rpb249Ij4nLidDcmVhdGUgZnVuY3Rpb24nLiI8L2E+XG4iO31pZihzdXBwb3J0KCJzZXF1ZW5jZSIpKXtlY2hvIjxoMyBpZD0nc2VxdWVuY2VzJz4iLidTZXF1ZW5jZXMnLiI8L2gzPlxuIjskamg9Z2V0X3ZhbHMoIlNFTEVDVCBzZXF1ZW5jZV9uYW1lIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnNlcXVlbmNlcyBXSEVSRSBzZXF1ZW5jZV9zY2hlbWEgPSBjdXJyZW50X3NjaGVtYSgpIE9SREVSIEJZIHNlcXVlbmNlX25hbWUiKTtpZigkamgpe2VjaG8iPHRhYmxlIGNlbGxzcGFjaW5nPScwJz5cbiIsIjx0aGVhZD48dHI+PHRoPiIuJ05hbWUnLiI8L3RoZWFkPlxuIjtvZGQoJycpO2ZvcmVhY2goJGpoCmFzJFgpZWNobyI8dHIiLm9kZCgpLiI+PHRoPjxhIGhyZWY9JyIuaChNRSkuInNlcXVlbmNlPSIudXJsZW5jb2RlKCRYKS4iJz4iLmgoJFgpLiI8L2E+XG4iO2VjaG8iPC90YWJsZT5cbiI7fWVjaG8iPHAgY2xhc3M9J2xpbmtzJz48YSBocmVmPSciLmgoTUUpLiJzZXF1ZW5jZT0nPiIuJ0NyZWF0ZSBzZXF1ZW5jZScuIjwvYT5cbiI7fWlmKHN1cHBvcnQoInR5cGUiKSl7ZWNobyI8aDMgaWQ9J3VzZXItdHlwZXMnPiIuJ1VzZXIgdHlwZXMnLiI8L2gzPlxuIjskUGk9dHlwZXMoKTtpZigkUGkpe2VjaG8iPHRhYmxlIGNlbGxzcGFjaW5nPScwJz5cbiIsIjx0aGVhZD48dHI+PHRoPiIuJ05hbWUnLiI8L3RoZWFkPlxuIjtvZGQoJycpO2ZvcmVhY2goJFBpCmFzJFgpZWNobyI8dHIiLm9kZCgpLiI+PHRoPjxhIGhyZWY9JyIuaChNRSkuInR5cGU9Ii51cmxlbmNvZGUoJFgpLiInPiIuaCgkWCkuIjwvYT5cbiI7ZWNobyI8L3RhYmxlPlxuIjt9ZWNobyI8cCBjbGFzcz0nbGlua3MnPjxhIGhyZWY9JyIuaChNRSkuInR5cGU9Jz4iLidDcmVhdGUgdHlwZScuIjwvYT5cbiI7fWlmKHN1cHBvcnQoImV2ZW50Iikpe2VjaG8iPGgzIGlkPSdldmVudHMnPiIuJ0V2ZW50cycuIjwvaDM+XG4iOyRLPWdldF9yb3dzKCJTSE9XIEVWRU5UUyIpO2lmKCRLKXtlY2hvIjx0YWJsZSBjZWxsc3BhY2luZz0nMCc+XG4iLCI8dGhlYWQ+PHRyPjx0aD4iLidOYW1lJy4iPHRkPiIuJ1NjaGVkdWxlJy4iPHRkPiIuJ1N0YXJ0Jy4iPHRkPiIuJ0VuZCcuIjx0ZD48L3RoZWFkPlxuIjtmb3JlYWNoKCRLCmFzJEope2VjaG8iPHRyPiIsIjx0aD4iLmgoJEpbIk5hbWUiXSksIjx0ZD4iLigkSlsiRXhlY3V0ZSBhdCJdPydBdCBnaXZlbiB0aW1lJy4iPHRkPiIuJEpbIkV4ZWN1dGUgYXQiXTonRXZlcnknLiIgIi4kSlsiSW50ZXJ2YWwgdmFsdWUiXS4iICIuJEpbIkludGVydmFsIGZpZWxkIl0uIjx0ZD4kSltTdGFydHNdIiksIjx0ZD4kSltFbmRzXSIsJzx0ZD48YSBocmVmPSInLmgoTUUpLidldmVudD0nLnVybGVuY29kZSgkSlsiTmFtZSJdKS4nIj4nLidBbHRlcicuJzwvYT4nO31lY2hvIjwvdGFibGU+XG4iOyRFYz0kZy0+cmVzdWx0KCJTRUxFQ1QgQEBldmVudF9zY2hlZHVsZXIiKTtpZigkRWMmJiRFYyE9Ik9OIillY2hvIjxwIGNsYXNzPSdlcnJvcic+PGNvZGUgY2xhc3M9J2p1c2gtc3Fsc2V0Jz5ldmVudF9zY2hlZHVsZXI8L2NvZGU+OiAiLmgoJEVjKS4iXG4iO31lY2hvJzxwIGNsYXNzPSJsaW5rcyI+PGEgaHJlZj0iJy5oKE1FKS4nZXZlbnQ9Ij4nLidDcmVhdGUgZXZlbnQnLiI8L2E+XG4iO31pZigkVGgpZWNobwpzY3JpcHQoImFqYXhTZXRIdG1sKCciLmpzX2VzY2FwZShNRSkuInNjcmlwdD1kYicpOyIpO319fXBhZ2VfZm9vdGVyKCk7"));?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 408d7d0fc0652b52eec20be2d5b38886
Eval Count 1
Decode Time 641 ms