Files
lis/htdocs/public/adminer.php
T
2025-12-29 19:58:01 +07:00

1750 lines
496 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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 5.4.1
*/namespace
Adminer;const
VERSION="5.4.1";error_reporting(24575);set_error_handler(function($Ec,$Gc){return!!preg_match('~^Undefined (array key|offset|index)~',$Gc);},E_WARNING|E_NOTICE);$cd=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($cd||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$xj=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($xj)$$X=$xj;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection($h=null){return($h?:Db::$instance);}function
adminer(){return
Adminer::$instance;}function
driver(){return
Driver::$instance;}function
connect(){$Hb=adminer()->credentials();$J=Driver::connect($Hb[0],$Hb[1],$Hb[2]);return(is_object($J)?$J:null);}function
idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$Le=substr($v,-1);return
str_replace($Le.$Le,$Le,substr($v,1,-1));}function
q($Q){return
connection()->quote($Q);}function
escape_string($X){return
substr(q($X),1,-1);}function
idx($xa,$y,$l=null){return($xa&&array_key_exists($y,$xa)?$xa[$y]:$l);}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(array$eh,$cd=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($y,$X)=each($eh)){foreach($X
as$Ce=>$W){unset($eh[$y][$Ce]);if(is_array($W)){$eh[$y][stripslashes($Ce)]=$W;$eh[]=&$eh[$y][stripslashes($Ce)];}else$eh[$y][stripslashes($Ce)]=($cd?$W:stripslashes($W));}}}}function
bracket_escape($v,$Ea=false){static$gj=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($v,($Ea?array_flip($gj):$gj));}function
min_version($Pj,$af="",$h=null){$h=connection($h);$Zh=$h->server_info;if($af&&preg_match('~([\d.]+)-MariaDB~',$Zh,$A)){$Zh=$A[1];$Pj=$af;}return$Pj&&version_compare($Zh,$Pj)>=0;}function
charset(Db$g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function
ini_bool($me){$X=ini_get($me);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
ini_bytes($me){$X=ini_get($me);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
set_password($Oj,$N,$V,$F){$_SESSION["pwds"][$Oj][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function
get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function
get_val($H,$n=0,$vb=null){$vb=connection($vb);$I=$vb->query($H);if(!is_object($I))return
false;$K=$I->fetch_row();return($K?$K[$n]:false);}function
get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function
get_key_vals($H,$h=null,$ci=true){$h=connection($h);$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($ci)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
get_rows($H,$h=null,$m="<p class='error'>"){$vb=connection($h);$J=array();$I=$vb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$h&&$m&&(defined('Adminer\PAGE_HEADER')||$m=="-- "))echo$m.error()."\n";return$J;}function
unique_array($K,array$x){foreach($x
as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$J=array();foreach($w["columns"]as$y){if(!isset($K[$y]))continue
2;$J[$y]=$K[$y];}return$J;}}}function
escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
idf_escape($y);}function
where(array$Z,array$o=array()){$J=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,true);$d=escape_key($y);$n=idx($o,$y,array());$Zc=$n["type"];$J[]=$d.(JUSH=="sql"&&$Zc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^json~',$Zc)?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Zc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($n,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Zc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$y)$J[]=escape_key($y)." IS NULL";return
implode(" AND ",$J);}function
where_check($X,array$o=array()){parse_str($X,$Ya);remove_slashes(array(&$Ya));return
where($Ya,$o);}function
where_link($t,$d,$Y,$bg="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$bg:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
convert_fields(array$e,array$o,array$M=array()){$J="";foreach($e
as$y=>$X){if($M&&!in_array(idf_escape($y),$M))continue;$ya=convert_field($o[$y]);if($ya)$J
.=", $ya AS ".idf_escape($y);}return$J;}function
cookie($B,$Y,$Te=2592000){header("Set-Cookie: $B=".urlencode($Y).($Te?"; expires=".gmdate("D, d M Y H:i:s",time()+$Te)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
get_settings($Db){parse_str($_COOKIE[$Db],$di);return$di;}function
get_setting($y,$Db="adminer_settings",$l=null){return
idx(get_settings($Db),$y,$l);}function
save_settings(array$di,$Db="adminer_settings"){$Y=http_build_query($di+get_settings($Db));cookie($Db,$Y);$_COOKIE[$Db]=$Y;}function
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
stop_session($kd=false){$Gj=ini_bool("session.use_cookies");if(!$Gj||$kd){session_write_close();if($Gj&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function
set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Oj,$N,$V,$k=null){$Cj=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($k!==null?"db|":"").($Oj=='mssql'||$Oj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Cj,$A);return"$A[1]?".(sid()?SID."&":"").($Oj!="server"||$N!=""?urlencode($Oj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($k!=""?"&db=".urlencode($k):"").($A[2]?"&$A[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($We,$pf=null){if($pf!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($We!==null?$We:$_SERVER["REQUEST_URI"]))][]=$pf;}if($We!==null){if($We=="")$We=".";header("Location: $We");exit;}}function
query_redirect($H,$We,$pf,$nh=true,$Lc=true,$Uc=false,$Ti=""){if($Lc){$si=microtime(true);$Uc=!connection()->query($H);$Ti=format_time($si);}$mi=($H?adminer()->messageQuery($H,$Ti,$Uc):"");if($Uc){adminer()->error
.=error().$mi.script("messagesPrint();")."<br>";return
false;}if($nh)redirect($We,$pf.$mi);return
true;}class
Queries{static$queries=array();static$start=0;}function
queries($H){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return
connection()->query($H);}function
apply_queries($H,array$T,$Hc='Adminer\table'){foreach($T
as$R){if(!queries("$H ".$Hc($R)))return
false;}return
true;}function
queries_redirect($We,$pf,$nh){$ih=implode("\n",Queries::$queries);$Ti=format_time(Queries::$start);return
query_redirect($ih,$We,$pf,$nh,false,!$nh,$Ti);}function
format_time($si){return
lang(0,max(0,microtime(true)-$si));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($yg=""){return
substr(preg_replace("~(?<=[?&])($yg".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_file($y,$Tb=false,$Zb=""){$bd=$_FILES[$y];if(!$bd)return
null;foreach($bd
as$y=>$X)$bd[$y]=(array)$X;$J='';foreach($bd["error"]as$y=>$m){if($m)return$m;$B=$bd["name"][$y];$bj=$bd["tmp_name"][$y];$_b=file_get_contents($Tb&&preg_match('~\.gz$~',$B)?"compress.zlib://$bj":$bj);if($Tb){$si=substr($_b,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$si))$_b=iconv("utf-16","utf-8",$_b);elseif($si=="\xEF\xBB\xBF")$_b=substr($_b,3);}$J
.=$_b;if($Zb)$J
.=(preg_match("($Zb\\s*\$)",$_b)?"":$Zb)."\n\n";}return$J;}function
upload_error($m){$kf=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?lang(1).($kf?" ".lang(2,$kf):""):lang(3));}function
repeat_pattern($Kg,$Re){return
str_repeat("$Kg{0,65535}",$Re/65535)."$Kg{0,".($Re%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
format_number($X){return
strtr(number_format($X,0,".",lang(4)),preg_split('~~u',lang(5),-1,PREG_SPLIT_NO_EMPTY));}function
friendly_url($X){return
preg_replace('~\W~i','-',$X);}function
table_status1($R,$Vc=false){$J=table_status($R,$Vc);return($J?reset($J):array("Name"=>$R));}function
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$q){foreach($q["source"]as$X)$J[$X][]=$q;}return$J;}function
fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$B=bracket_escape($y,true);$J[$B]=array("field"=>$B,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($y==driver()->primary),);}return$J;}function
dump_headers($Sd,$_f=false){$J=adminer()->dumpHeaders($Sd,$_f);$ug=$_POST["output"];if($ug!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Sd).".$J".($ug!="file"&&preg_match('~^[0-9a-z]+$~',$ug)?".$ug":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function
dump_csv(array$K){foreach($K
as$y=>$X){if(preg_match('~["\n,;\t]|^0.|\.\d*0$~',$X)||$X==="")$K[$y]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
apply_sql_function($s,$d){return($s?($s=="unixepoch"?"DATETIME($d, '$s')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$d)"):$d);}function
get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$p=@tempnam("","");if(!$p)return'';$J=dirname($p);unlink($p);}}return$J;}function
file_open_lock($p){if(is_link($p))return;$r=@fopen($p,"c+");if(!$r)return;@chmod($p,0660);if(!flock($r,LOCK_EX)){fclose($r);return;}return$r;}function
file_write_unlock($r,$Nb){rewind($r);fwrite($r,$Nb);ftruncate($r,strlen($Nb));file_unlock($r);}function
file_unlock($r){flock($r,LOCK_UN);fclose($r);}function
first(array$xa){return
reset($xa);}function
password_file($i){$p=get_temp_dir()."/adminer.key";if(!$i&&!file_exists($p))return'';$r=file_open_lock($p);if(!$r)return'';$J=stream_get_contents($r);if(!$J){$J=rand_string();file_write_unlock($r,$J);}else
file_unlock($r);return$J;}function
rand_string(){return
md5(uniqid(strval(mt_rand()),true));}function
select_value($X,$_,array$n,$Si){if(is_array($X)){$J="";foreach($X
as$Ce=>$W)$J
.="<tr>".($X!=array_values($X)?"<th>".h($Ce):"")."<td>".select_value($W,$_,$n,$Si);return"<table>$J</table>";}if(!$_)$_=adminer()->selectLink($X,$n);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=adminer()->editVal($X,$n);if($J!==null){if(!is_utf8($J))$J="\0";elseif($Si!=""&&is_shortable($n))$J=shorten_utf8($J,max(0,+$Si));else$J=h($J);}return
adminer()->selectVal($J,$_,$n,$X);}function
is_blob(array$n){return
preg_match('~blob|bytea|raw|file~',$n["type"])&&!in_array($n["type"],idx(driver()->structuredTypes(),lang(6),array()));}function
is_mail($vc){$za='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ic='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Kg="$za+(\\.$za+)*@($ic?\\.)+$ic";return
is_string($vc)&&preg_match("(^$Kg(,\\s*$Kg)*\$)i",$vc);}function
is_url($Q){$ic='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^(https?)://($ic?\\.)+$ic(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
is_shortable(array$n){return
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea|hstore~',$n["type"]);}function
host_port($N){return(preg_match('~^(\[(.+)]|([^:]+)):([^:]+)$~',$N,$A)?array($A[2].$A[3],$A[4]):array($N,''));}function
count_rows($R,array$Z,$we,array$yd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($we&&(JUSH=="sql"||count($yd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$yd).")$H":"SELECT COUNT(*)".($we?" FROM (SELECT 1$H GROUP BY ".implode(", ",$yd).") x":$H));}function
slow_query($H){$k=adminer()->database();$Ui=adminer()->queryTimeout();$hi=driver()->slowQuery($H,$Ui);$h=null;if(!$hi&&support("kill")){$h=connect();if($h&&($k==""||$h->select_db($k))){$Fe=get_val(connection_id(),0,$h);echo
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Fe&token=".get_token()."'); }, 1000 * $Ui);");}}ob_flush();flush();$J=@get_key_vals(($hi?:$H),$h,false);if($h){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
get_token(){$lh=rand(1,1e6);return($lh^$_SESSION["token"]).":$lh";}function
verify_token(){list($cj,$lh)=explode(":",$_POST["token"]);return($lh^$_SESSION["token"])==$cj;}function
lzw_decompress($Ka){$ec=256;$La=8;$ib=array();$yh=0;$zh=0;for($t=0;$t<strlen($Ka);$t++){$yh=($yh<<8)+ord($Ka[$t]);$zh+=8;if($zh>=$La){$zh-=$La;$ib[]=$yh>>$zh;$yh&=(1<<$zh)-1;$ec++;if($ec>>$La)$La++;}}$dc=range("\0","\xFF");$J="";$Yj="";foreach($ib
as$t=>$hb){$uc=$dc[$hb];if(!isset($uc))$uc=$Yj.$Yj[0];$J
.=$uc;if($t)$dc[]=$Yj.$uc[0];$Yj=$uc;}return$J;}function
script($ji,$fj="\n"){return"<script".nonce().">$ji</script>$fj";}function
script_src($Dj,$Wb=false){return"<script src='".h($Dj)."'".nonce().($Wb?" defer":"")."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
input_hidden($B,$Y=""){return"<input type='hidden' name='".h($B)."' value='".h($Y)."'>\n";}function
input_token(){return
input_hidden("token",get_token());}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($Q){return
str_replace("\0","&#0;",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
nl_br($Q){return
str_replace("\n","<br>",$Q);}function
checkbox($B,$Y,$bb,$He="",$ag="",$fb="",$Je=""){$J="<input type='checkbox' name='$B' value='".h($Y)."'".($bb?" checked":"").($Je?" aria-labelledby='$Je'":"").">".($ag?script("qsl('input').onclick = function () { $ag };",""):"");return($He!=""||$fb?"<label".($fb?" class='$fb'":"").">$J".h($He)."</label>":$J);}function
optionlist($fg,$Rh=null,$Hj=false){$J="";foreach($fg
as$Ce=>$W){$gg=array($Ce=>$W);if(is_array($W)){$J
.='<optgroup label="'.h($Ce).'">';$gg=$W;}foreach($gg
as$y=>$X)$J
.='<option'.($Hj||is_string($y)?' value="'.h($y).'"':'').($Rh!==null&&($Hj||is_string($y)?(string)$y:$X)===$Rh?' selected':'').'>'.h($X);if(is_array($W))$J
.='</optgroup>';}return$J;}function
html_select($B,array$fg,$Y="",$Zf="",$Je=""){static$He=0;$Ie="";if(!$Je&&substr($fg[""],0,1)=="("){$He++;$Je="label-$He";$Ie="<option value='' id='$Je'>".h($fg[""]);unset($fg[""]);}return"<select name='".h($B)."'".($Je?" aria-labelledby='$Je'":"").">".$Ie.optionlist($fg,$Y)."</select>".($Zf?script("qsl('select').onchange = function () { $Zf };",""):"");}function
html_radios($B,array$fg,$Y="",$Vh=""){$J="";foreach($fg
as$y=>$X)$J
.="<label><input type='radio' name='".h($B)."' value='".h($y)."'".($y==$Y?" checked":"").">".h($X)."</label>$Vh";return$J;}function
confirm($pf="",$Sh="qsl('input')"){return
script("$Sh.onclick = () => confirm('".($pf?js_escape($pf):lang(7))."');","");}function
print_fieldset($u,$Qe,$Sj=false){echo"<fieldset><legend>","<a href='#fieldset-$u'>$Qe</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"</legend>","<div id='fieldset-$u'".($Sj?"":" class='hidden'").">\n";}function
bold($Na,$fb=""){return($Na?" class='active $fb'":($fb?" class='$fb'":""));}function
js_escape($Q){return
addcslashes($Q,"\r\n'\\/");}function
pagination($D,$Kb){return" ".($D==$Kb?$D+1:'<a href="'.h(remove_from_uri("page").($D?"&page=$D".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($D+1)."</a>");}function
hidden_fields(array$eh,array$Wd=array(),$Wg=''){$J=false;foreach($eh
as$y=>$X){if(!in_array($y,$Wd)){if(is_array($X))hidden_fields($X,array(),$y);else{$J=true;echo
input_hidden(($Wg?$Wg."[$y]":$y),$X);}}}return$J;}function
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),(SERVER!==null?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
file_input($oe){$ff="max_file_uploads";$gf=ini_get($ff);$Aj="upload_max_filesize";$Bj=ini_get($Aj);return(ini_bool("file_uploads")?$oe.script("qsl('input[type=\"file\"]').onchange = partialArg(fileChange, "."$gf, '".lang(8,"$ff = $gf")."', ".ini_bytes("upload_max_filesize").", '".lang(8,"$Aj = $Bj")."')"):lang(9));}function
enum_input($U,$_a,array$n,$Y,$yc=""){preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$df);$Wg=($n["type"]=="enum"?"val-":"");$bb=(is_array($Y)?in_array("null",$Y):$Y===null);$J=($n["null"]&&$Wg?"<label><input type='$U'$_a value='null'".($bb?" checked":"")."><i>$yc</i></label>":"");foreach($df[1]as$X){$X=stripcslashes(str_replace("''","'",$X));$bb=(is_array($Y)?in_array($Wg.$X,$Y):$Y===$X);$J
.=" <label><input type='$U'$_a value='".h($Wg.$X)."'".($bb?' checked':'').'>'.h(adminer()->editVal($X,$n)).'</label>';}return$J;}function
input(array$n,$Y,$s,$Da=false){$B=h(bracket_escape($n["field"]));echo"<td class='function'>";if(is_array($Y)&&!$s){$Y=json_encode($Y,128|64|256);$s="json";}$xh=(JUSH=="mssql"&&$n["auto_increment"]);if($xh&&!$_POST["save"])$s=null;$td=(isset($_GET["select"])||$xh?array("orig"=>lang(10)):array())+adminer()->editFunctions($n);$Dc=driver()->enumLength($n);if($Dc){$n["type"]="enum";$n["length"]=$Dc;}$fc=stripos($n["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$_a=" name='fields[$B]".($n["type"]=="enum"||$n["type"]=="set"?"[]":"")."'$fc".($Da?" autofocus":"");echo
driver()->unconvertFunction($n)." ";$R=$_GET["edit"]?:$_GET["select"];if($n["type"]=="enum")echo
h($td[""])."<td>".adminer()->editInput($R,$n,$_a,$Y);else{$Fd=(in_array($s,$td)||isset($td[$s]));echo(count($td)>1?"<select name='function[$B]'$fc>".optionlist($td,$s===null||$Fd?$s:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($td))).'<td>';$oe=adminer()->editInput($R,$n,$_a,$Y);if($oe!="")echo$oe;elseif(preg_match('~bool~',$n["type"]))echo"<input type='hidden'$_a value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$_a value='1'>";elseif($n["type"]=="set")echo
enum_input("checkbox",$_a,$n,(is_string($Y)?explode(",",$Y):$Y));elseif(is_blob($n)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$B'>";elseif($s=="json"||preg_match('~^jsonb?$~',$n["type"]))echo"<textarea$_a cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($Qi=preg_match('~text|lob|memo~i',$n["type"]))||preg_match("~\n~",$Y)){if($Qi&&JUSH!="sqlite")$_a
.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$_a
.=" cols='30' rows='$L'";}echo"<textarea$_a>".h($Y).'</textarea>';}else{$rj=driver()->types();$mf=(!preg_match('~int~',$n["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$n["length"],$A)?((preg_match("~binary~",$n["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$n["unsigned"]?1:0)):($rj[$n["type"]]?$rj[$n["type"]]+($n["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$n["type"]))$mf+=7;echo"<input".((!$Fd||$s==="")&&preg_match('~(?<!o)int(?!er)~',$n["type"])&&!preg_match('~\[\]~',$n["full_type"])?" type='number'":"")." value='".h($Y)."'".($mf?" data-maxlength='$mf'":"").(preg_match('~char|binary~',$n["type"])&&$mf>20?" size='".($mf>99?60:40)."'":"")."$_a>";}echo
adminer()->editHint($R,$n,$Y);$dd=0;foreach($td
as$y=>$X){if($y===""||!$X)break;$dd++;}if($dd&&count($td)>1)echo
script("qsl('td').oninput = partial(skipOriginal, $dd);");}}function
process_input(array$n){if(stripos($n["default"],"GENERATED ALWAYS AS ")===0)return;$v=bracket_escape($n["field"]);$s=idx($_POST["function"],$v);$Y=idx($_POST["fields"],$v);if($n["type"]=="enum"||driver()->enumLength($n)){$Y=$Y[0];if($Y=="orig")return
false;if($Y=="null")return"NULL";$Y=substr($Y,4);}if($n["auto_increment"]&&$Y=="")return
null;if($s=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?idf_escape($n["field"]):false);if($s=="NULL")return"NULL";if($n["type"]=="set")$Y=implode(",",(array)$Y);if($s=="json"){$s="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(is_blob($n)&&ini_bool("file_uploads")){$bd=get_file("fields-$v");if(!is_string($bd))return
false;return
driver()->quoteBinary($bd);}return
adminer()->processInput($n,$Y,$s);}function
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Uh="<ul>\n";foreach(table_status('',true)as$R=>$S){$B=adminer()->tableName($S);if(isset($S["Engine"])&&$B!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$ah="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$B</a>";echo"$Uh<li>".($I?$ah:"<p class='error'>$ah: ".error())."\n";$Uh="";}}}echo($Uh?"<p class='message'>".lang(11):"</ul>")."\n";}function
on_help($ob,$fi=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $ob, $fi) }, onmouseout: helpMouseout});","");}function
edit_form($R,array$o,$K,$_j,$m=''){$Di=adminer()->tableName(table_status1($R,true));page_header(($_j?lang(12):lang(13)),$m,array("select"=>array($R,$Di)),$Di);adminer()->editRowPrint($R,$o,$K,$_j);if($K===false){echo"<p class='error'>".lang(14)."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!$o)echo"<p class='error'>".lang(15)."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$Da=!$_POST;foreach($o
as$B=>$n){echo"<tr><th>".adminer()->fieldName($n);$l=idx($_GET["set"],bracket_escape($B));if($l===null){$l=$n["default"];if($n["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$l,$uh))$l=$uh[1];if(JUSH=="sql"&&preg_match('~binary~',$n["type"]))$l=bin2hex($l);}$Y=($K!==null?($K[$B]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$n["type"])&&is_array($K[$B])?implode(",",$K[$B]):(is_bool($K[$B])?+$K[$B]:$K[$B])):(!$_j&&$n["auto_increment"]?"":(isset($_GET["select"])?false:$l)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$n);$s=($_POST["save"]?idx($_POST["function"],$B,""):($_j&&preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$_j&&$Y==$n["default"]&&preg_match('~^[\w.]+\(~',$Y))$s="SQL";if(preg_match("~time~",$n["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$s="now";}if($n["type"]=="uuid"&&$Y=="uuid()"){$Y="";$s="uuid";}if($Da!==false)$Da=($n["auto_increment"]||$s=="now"||$s=="uuid"?null:true);input($n,$Y,$s,$Da);if($Da)$Da=false;echo"\n";}if(!support("table")&&!fields($R))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($o){echo"<input type='submit' value='".lang(16)."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($_j?lang(17):lang(18))."' title='Ctrl+Shift+Enter'>\n",($_j?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".lang(19)."…', this); };"):"");}echo($_j?"<input type='submit' name='delete' value='".lang(20)."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
shorten_utf8($Q,$Re=80,$yi=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$Re).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$Re).")($)?)",$Q,$A);return
h($A[1]).$yi.(isset($A[2])?"":"<i>…</i>");}function
icon($Rd,$B,$Qd,$Wi){return"<button type='submit' name='$B' title='".h($Wi)."' class='icon icon-$Rd'><span>$Qd</span></button>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){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");}@ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgб\"PimcQCa 2 ód<fa:;NBqR;1Lf9u7&)l;3J/CQXr2Mai0)e:LuÝh-923li7mZw4њ<-̴!U,vt2S,a҇FVXaNq)-ǜh:n59Y;j-_9krٓ;.tTqo0{y\rHn GSZh;i^uxWΒC@k= b/A0+(l\\x:\rb8\00!\0F\nB͎(3\r\\Ȅa'I|(i\n\r4Og@4C@@!QB °c¯q,\r1Eh&2PZiGH9G\"v 4rDR\npJ-A|/.cDu: ,= R]U5mVkLLQ@-\\@9%SrMPDIa\r(YY\\@Xp:plLC O,\r2]7?m06pT C;_˗yȴd>bn nܣ3X8\r[ˀ-)i>V[Yy&L3#X| X\\ù`C# H22.#Z`<sÒ\0uM_\niZeO/CӒ_`31>=k3R/;/d\0ڵm7/AXq.sL :\$Fw8߾~Hj\"Գ7gSFLίQ_O'W]c=51X~7;i\r*\nJS1ZctAV86fdy;Y]zI pc3Y]}˜@\$.+1'>ZcpdGL# k8PzYAuv]s9_ Aq :\nKhB;XbAHq,CI`jS[ˌ1Vr;pB)#鐉;4H/*<3L ;lf\ns\$K`}Ք7jx`d%j]4YHbYJ`GG.Kf I)2 ŠMfָXRC̱V,~g\0g6:[j1H:AlIqu3\"q|8<9s'Q]J|\0`pjf Obq\$1J>RH(ǔq\n#r@e(yVJ06P[C:G伞4 ^PZ\\(\n)~9R%Sj{70_s z|8H \"@#9DVL\$H5WJ@zaJ ^ )2\nQv]j (ABB056b˰][kAwvkgƴ+k[jmzc}MyDZi\$5eʷ ACY%.Wb*뮼.q/%}BXZV337ʻawW[LQ޲_2`1Ii,Mf&(s-*DwTNɻjX\$x+ ;F93Jk™S;qR{>l;B1AIb)(6r\r\rڇZR^SOy/M#9{kv\"KCJrEo\0\\,|fa͚hI/o4 k^p1H^phǡVvox@`g&(;~Ǎz68*5EpӘ3ņgrDL)4g{L&>脻Z7\0̊@ff RVh֝Iۈrw)=x^,k2ݓjbl0u\"fp1RIz[]wpN6dIzn.7X{;3-I 7p R#,_-[>3\\WqquhFbLKyVľѕVf{K}SޝM̀.M\\ixb1+α?<3~H\$\\2\$ e6t\$sxxC nSkV=z6NaָhR噣8gw:_ҒIRKÝ.nkVU+dwj%`#,{ Y (oվ.c0gDXOk7K lhx;؏ ݃L \$09*9 hNrM.>\0rP9\$g \0\$\\F*d'L:b429@Hnb-E #ĜrPY t \n5.\$op lX\n@`\r \r    @ @\n  \0j@Q@1\r@ \$p V\0``\n\0\n \n@' \n\0`\r \r \0r \0 ` { ,\"^P 0\n4\n0 .0 p \rp\rppq Q0%1Q8\n \0kȼ \0^\0`@>\no1w,Y h*= P:іVи.q  \r\rp1Q 1 `/17\r^\"y`\n # \0 p\n\n` r Qb13\n## 1\$q\$ѱ%0%q%&&q &'1\rR}16 @b\r``\r  d j\n `` \n `d cсP ,1R\$rIO Q Y32b1&01  f\0\0f \0j\nf ` \n` @\$n=`\0v nI\$P(d' g6--C7R  4 -1&2t\r\"\n H*@ `\n  l2,z\r~ \rFthmz~\0]GF\\I\\}ItC\n T}IEJ\rx>MpIH~fht.bxYEiKoj\nLtr.~dH2U4G\\A4uPtL/P \"G!RMtO-<#APuIR\$cDƊ-GO`Pv^W@tH ;QRę\$gKF<\rR*\$4'[IUmh:+5@/lI2^\0OD\rR'\r[ĪMCMZ4E B\"`euN,䙬]t\r`@h*\r.V%!MBlPF\"&/@v\\C :mMgni8I2\rpvj+Z mTuefv>fИ`DU[ZTVCT\rUvk^Lb/KSev2ubvOVDIm\$%X?ud!W|,\r+cnUeZʖ-~XBGd\$iMv!t#L3oUIOu?ZweRcw.`ȡi\rb%bH\"\"\"h _\$b @z\0f\"rW*B |\$\$Bנ\"@r(\r` C(0&.`Nk9B\n&#(@䂯d^ @` I-{0\nB{4sG{;zb{ {bׯ){BxK Ň5=cڪy&JPrI/ \0 V\r׉ =N\\ئ=K}XV xإˋxd Պی*H'δ{X==\08\0JtOeɋ\rDXŇ}z)y''яI( [l(5`f\\`e.lY(=zה!Y%hO+\"e ėKߚ#SEIY.HJtG`HJ55~ 6Ch XDz\nxyshFKcz jZY8(%|yIߑ؃ eYXu i]cM;ȧQT  [~W~c݂zz\r: \0rYx)!ɡK+z!ӀC+ٮï:ݎ Zg~z4f :sӪ+xš%=GIf3?+Yq@ GyoѴp\r~{W[y:\0\\;eۡYI\"zd˜kZ|[uu+׹9qnR ˮBׁz|\rk^[1%.pA2<=ء\$;5)m!XXYx5vT\\Q%:>ɛ;e|/yWxנ|gC\\<9z\\#.FV;8 NX7\"8&d5P4Gj?\0?\"=HER");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgh0d91S! F!\"-6NbdGg:;Nr)c7\r(Hb81s9k\rc)m8O VAc1c34 Of*-P1r416d2ցo#3Bf# g9Φ،fc\rIb6EC&,bum7aVs#m!hrv\\3\rL:SAdk5naF3e6fSyr!L-K,3L@J ˲*J bc9 9 @H8\\ 6>`Ŏ;A<T'p&qqE4\rlh<5#pR #I%fBIܲ>ʫ29< Cj27j8jc(n ?(a\0@5*3:δ60- Al LP4@ɰ\$H4n311t0͙9WO!rH9Q96F<7\r-xC\n @:\$iضm4Kid {\n6\rxhˋ#^'4V@a<#h0S-c9+pa2cyhBO\$9wiXɔVY9*rHtm @b|@/l\$z+%p2l.7;&{mXC<l96x9m7R0\\ 4P)AoxqO#f[;6~P\r aTGT0uޟ\n3\\ \\ʎJudCGPZ> d8ҨC?VdLL.(ti>,֜R+9iޞC\$#\"AChVb\n6 T2ew\nf6m !1'c;*eLRn\rG\$2S\$0a'l6&~Ad\$J\$s ȃB4 j.RQj\"7\nXs!6=BȀ}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("':̢i11 4Q6a&:OAIe:NFD|!Cym2\"r<̱/C#:DbqSeJ˦\n\nDZS\rZH\$RAܞS+XKvtdg:6EvXŞjmҩej2MBLC3Q0L-x\nDyNaPn:s͐(cL/(5{Qy4g-i4ڃf(bUko7&ä*ACb`.\r\nCh<\r)`إ`7CʒZX<Q1X@0dp9EQfF\r!(h)\np'#ČH(i* r&<#7K~# A:N6l,\rJP3!@2>CrhN](a0M326UE2'!<#3R<XCH7#n+a\$!2P0.wd r:Y E!]<j@\\pl_\rZғTͩZs3\"~9jP)QYbݕDYc`zcѨ'#tBOh *2<ŒOfg-Z#8a^+r2b\\ ~0 Wnp!#`Z612@ky9\rB36<!pG9no6s#F3bA69Z#6%?s\")bJc\rNsih8ݟ:;HތuI5@1APaH^\$Hv@ÛL~b9'S?P-0C\nRm4ȓ:Ը24h(k\njI6\"EY#Wr\rG8@tBS\nc0kC I\rʰ<u`A!)2C \0= P1 ӢK!! pIs,6di1+k<^ \n20Fԉ_\$)f\0C8E^/3W!א)u*&\$2Y\n]EkDV\$JxTse!RY R`=Lޫ\nl_.!V!\r\nHk\$א`{1 |i<jRrPTG|w4b\r4d,E6<h[Nq@Oi>'ѩ\r;]#}0ASIJdA/Q@t\rUG_G <<y-Iz򄤝\"P B\0q`vAa̡JRʮ)JB.TLyCpp\0(7cYYaM1em4crS)opC!ISœb0m(dEH߳X/ PyX85\$+֖gd yϝJ lEur,dCX}em]2̽(-z Z;I\\) , \n>)\rVS\njx* w`ⴷSFid,ZJFM}Њ \\ZP`zZE]dɟOcmԁ] %\"w4\n\$zVSQD:6GwMS0B-s)Zc|^RE8kMsdka)h%\"P0nn/#;g\rd8F<3\$,P);<4`<2\n@w-͗A0LrYhXCa >tL2yto;2Qtfrm:AAN\\\"k5oVɃ=t7r1pAv\\+9{^(if=rut]yޅCgivf+Ø|;]~|\re݂' \0+Wcow6wd Suj3@0!\n .wm[8x<cM\n9'a1>[dux<\"YcB!iw}5Uk]{IךR=f W~](bea'ubm>)\$P-6R*IGu#ƕUKAXt(`_\" p &UI] YG6P]Ar!b *ЙJoӯv*!~_4B _~RBiK`&J\0 N\0\$CK SjZ 0pvMJbN`Le/`RO.0P82` d ˜GxbP-(@ɸ@4H%< & Zp%\0pЄ /\"J\ns_\rg`!kpX :v6p\$' RUeZd\$\nLB.dntm>vj) M\r\0.ʊH\"5*!eZJf(dc(xjg\0\\ Z@|`^r)<()@Ykml3Qyс@ѐfPnTNmRqVmv| ШZȆ(Yp\"&%lP`ĀXx bbdr0Fr5<C z6he!\rdzK;t\n͠HƋQ\$QEnnn\r#T\$ˈѩ|c,-#\rJ{dE\n\$BriT+2PEDBe}&%Rf\n^CZZ RVA,;<\0O1c^\r%\r `n\0y1.\rĂK1M3H\r\"0\0N kXP r {3 } \nSdڗx.ZRTwS;53 .s4sO3F2S~YFpZs'@ّOqR4\n6q6@D h67vEl\"^;-(&b **.! \r!#x'G\"͆w\" 2!\"R(vX|\"Dv)@,zmA wT@ \nЫhдIDP\$m>\r&`>4A#*#<w\$T{\$4@dӴRem6-#Dd%EDT\\\$)@ WC( t\"M#@TF \r,g\rP8~֣J cĹƂ ʎ\"LZ\r+P4=STA)0\"CDhM\n%Fp|fLNlFtDmH5=H\nļ4\$K6\rbZ\r\"pE Q%wJV0M%l\"hPFAA㌮/G6h6]5\$fSCLiRT?RCHUZYbF/.Z\"\"^y6RG n܌\$\\&O(v^ KUѮam(\r \$ _%+KTt.ٖ36\nc:@6 jPAQF/Sk\"<4AgAaU\$'fQO\"k~S;.:k9e]`n-7;+V8W2HUYlBv Ԇ plm\04B)X\0QqFSq4nFx+pESovGW7owKRW\r4`|cqe7,19uucq\"LCth)\rJ\\W@ |D#S\r%5l!%++^k^ʙ`/7(z*񘋀E{S(W-Xė0V0=a ~fB˕2Qru mCtr(\0Q!K;xNW?b<@`X,`0eƂN'‘ &~tu\"| i B 7R lSu8AdF%(?3@A-oQź@|~K^@xb~DTNZC Wix<\0P|\n\0\n`\"&?st|ïw%mduN^8[t9B\$'\">U~98ÔFf u/)9\0Az\"FWAx\$'jG(\" s%THe, M7b Dža ˓ƃ&wYφ3 /\rϖ{\"ݜp{%4b`팤~nE3 93XdՏZ9'@lfQbP*Go`8AB|z @ bZn_h'ѢF\$f`HdDdH% 4\rsAjLR'f9g I,R\\>\nH[\"\rӁ L,%FLl8gzL<0ko\$k`KPv@d'V:VM%@6<\rTLENԀS#.[x4a̭LL\n@\0۫tٲ\n^F5` R7lLu(d \rBf/uCf4cҞ B_nL\0 \$aYƦ ~Ukve˥˲\0ZaZ|Cq/<}سú Z*w\nOz`518cIQ2YsK\n\\\" ðc*B.R1 <3+*S[4m쭛:RhITdevIH-Zw\\%n56\nWi\$ōow+r&Jq+}Djd?U%BBe/MNm=τUb\$HRfwb|x d2NiSg@q@>Sv|krx\0{R=F#r8 Zv8*ʳ{2S+;SӨ+yL\$\"_B8\"E%\npp' 'pw\"8б I\\ @ ʾ LnR#MDqLN\n\\̎\$`~@`\0u~^@l-{5,@bruo[}/y. {6qRp\$+13 +O!D)\nu<,=Jd+}d#0ɞc3U3EY\rtj5ҥ7ewׄǡ^9<\$}kRI-+'_Ne?S Rhd*X4c}\"@vi>;5>Dn \r)bNuP@YG<6 i#PB2A-0d0+gK?nddOci<0\0\\g NTi';imj܈uJ+V~'ol`\",F {CT aNEۃQp p+?\n>'l* tKάp(YC\n-q̔0\"*ɕ,#7\"%+qB=i.@ x7:%GcYI0*Ðkۈ\\Q_{#\r{H[p >7chn.S|&JMǾ8mOh qJ&aݢ'.bOp\$ D@CHB &ݡ|\$Ԭ-6 +p AC\rɓ/0MiZnE͢j*>!Ңu%g0@5}r+3%-mG<T;0DVdg9'lMH F@PuntFB%Mt'G2@2<e;`=LX2 X}oc.L+xӎ &DaɫF2\ngLE .\\xSLx;lwD=0_QV,a 5+L+|\$ijZ\nDE,Bt\\'H0R~(\\\":n*(o1wQrEteF\$Sђ]\rLyF\\Bihhd&ᚇh;foB-y`0JlPxao\$Xq,(C* :/HG\"cCQ \nFԄ#8F:У\0OkD])ϚtT8L𒨔n`|HJ  \"6{?=I<HGc ŤF@ ,C @j\$L(nEʑPjbnΑW \rLqsPHꉝz\\V\$kҏtr5,l<'\0^S020f -5\"ac\"3Up\"ܘ%\0' Zt\"969 _ @Z{0IDZE@Nh`\"`\0 ɹ(GHCh I f`@ZD\$)K;Z\0/CT>r_R@O`1rIb\0*8h\$_p\$Ni^ʪP/O).ŹT6\\ٔ@Trą`)T=n\02e+\\@>PH 1 y#r<aeK/cM@_.\09ˈ B0ia\ndea%|S2#nD\$/+Ed_2P\$s,ok#< Ađr{BA-Q4Ҥ\n\ry!b䱎Ok \"r*݇Y/ ȑ a0%.gE~& 89#@M_ 7K䃸J`X)B\$( :gn*|M6PZHtJtqCxl= \nU3f\\̔JP ,:}TASYH(\nIٲ!t( 2U\"\\X^s  a!\nPr`X3fnbJ&zzQSf t!T?9%(QB}6BkP\0>g&~fhUr, p5HipgVVOgWEJ80Gak@N NMUUxȪSx K@c1yVlϠC2Q^rP6|I^M,j%d F\\#%|C7싢GTNiHQOCyB\$%T*>z\rMM Kp J7O۷4%\$p4͂\"T\0O\0@> rO]x}^I@ źqn0Bbȵ I(M/;}RN\nC<bPԵu?=PeCL^'S?}4)S-1\r5SOESFAOR+ޙ+v5&C)ِKSDB߳N|E\rcUYʾV?H)実+sFkLPW-, U:& t{VoJl'We74Xn GF'`Cc%Ilju6vUZ\0*Nԟ#(n-;|4]Xy';Z) s9 %R+\$ Q(\"_kX\nM#\"!p~:*\$3O6+\nB{1|HK<[ `3#F@ǐ! |؊\0>[nrMM+mO_2Ȇ\0e^ 7Z&BJ褓h7QO%rfp΁ ֞mبÇ4El+ViN SZWt2W[;v\"%\$^-(I\$S@R-&Tzk( %R8uY\0[9-()E8=^G5#)1Vb\r]Ne;&Y`rIֲ\0@P70H؍Rx\0000C|n=`TT\rEhON'&tcK ܕU5P3\\2\"\0y 5V]6>U!@hu(\"E%07B6 dHNij'; @eMzlSfjKY֍-uhH smL@\"rj j'l7 (uuE•ea@+K:ӕ%nzV;[ _Vz_E8<Sb6 g:c7\n%Q K7ܮBwu50֚yncnKT8ʙsW=+=K\n_ [pG C5'D\"M<\":|Mq4fsx qQPaOYE=6nT떒BthC\0p@nD(aP\"'ZN۬\rLNXg<!w[B))~cx vqa@K7sEQdýk ?\"3-\"U||21D>߳]­&\\hTƳ5\0`Tzs -N\"fNLU]n(D (&%\"e\\ONInۿ\0ƕ@V|RMYCTbUHp)Ss qi`Z5vt*OO\n(F58!ax@{^P?eh}\\j^2L,6.N K%uip!?l -5w K\"V\\Is2!\$45v\ngrN};W%D (pWa\0v' 6Vƿ0WE4EUl8LD E<kOH DU `vSL!DTMbnWVCd)Ze:2d8Kބ4-Gb;wQW30\rf\0,`Qhl֍0P0h@\\r8T1`&wX>F?|P*MqZѯ}0k`#իc'[ֱˍ|sIJ\r<OaƼ@WuT:E ^!ka\$>5u_KcCQr'\riC@8SPS_Xg l % n1r.<w_aɺijGh4\nWZaBn,\\\0 DU\nbbZ'72r¢}Y>/w\\Y `^7JjSS.o%Jg\0GD,>7R0 36%i\0S^LA\riO<a phv[{\0E ^xܼgYzWyGa:(>Ce\0])3yt s_a7+BCeTfoP2ECv>wlz*pYqQp\nv[|qҨE[Xi=z( Mn]7F\rCs4|-} Ŀ(NU?, څ q pq~ F%88\$ް[ro!3( gץpJ!qZv?cL76\$ mq8l!5 C;Q,dsF-O\$6%UCf\"e( j\rMtFRx;nB\$ SSx'G陊M 'k~#9eY~뭈;f+jK9pM'X/rt \0\\J%QR\rвO3|ϱ4xFs5EԐ;ԒWRJXʶJ\$wzOzkS\n\nNUP.0bdkP G6+BzhQ>sHv Q٠EpM)\n\\ўPz.s g)a~ȥ!(!Ghr[*բ`~\"!O5G3Ş*qkgB,\$**1c.n 8\$dVSneM iZ7žgA5\n`,2aүmMkʻɯ/-6@?#`)Ԁha†)Vc]_= Rz\\VR=ط(-ot\$ܥ\ndSmyN\rm(t;Dp2ݶZRl)9M̛,/Yixkя).2@S^ud6!>VB x<Kt06@\nGAP(NbDK\n\"cN\ră.p'2Ld\\LyA= Dm3%@ 8qbSP\"ޢƮ/DzC&O\0007fD^1X/,\nvWx%f)' DdQ@I(ҋ7Y|AQDڠe 8ׇ7k)_ @\"\"%} (11؍\re?-ɵH&\rL 'eۮ0T]C!emNz UzɈSܜaf7M^CD(_ #\"dr5981hfȭa_×tZX\0U{2nn];FR!}>sHiy#?\"Ť>{/?7FY?Aj.U!5`‡H\$r\0'\n\":.dԂٙƪqRխoh>{1+>tk%-D=9}C@8 cmHrW n\0Ď<(RR8YV`pp.Ue_`^n^_R|p7/!M5|\n&FVVzOA~ш|ƛ4NȒՔgy h-\nN\"r\"GcsD'Xo٧O{{Y{E=TeZ{\";HXztw*-Uw-\"<A^OT ]D?:<pq[,)&`{xKII``c0Dy8qCYCFJnk[8 :\n^ցT!X*M<5`\06A2oP.aAH#x[ 'o@O0^h|P=+)d[X-W!Æ/:\"0k#XǞ<hCGݠ@F(kl &HF0OSzwQ3z|+\r9bT}'ܬwA\rnF!g0lpl1+|hkzi&uD{K\\\$t(;ìHr|BwD3[M!:({Z(|-Hy0^}*NK5KUjM\"w]%{1qz)]Ů[k\0O4UF \0cmZEGtsDQZ)n;7<qhlXxI^V&ͷC`,ɑ%1\"@1|)RkV}S,#!G]ExYT<%Qѿ@mJcBB iGf2cD=JI_'iA&,{c4oV%d 2xe#s_UHՉW!  = ۷O<(y\0. G'\r57pV(þ:}RRHHy[  1O\")Ll1+<~ \0s?B@d?n~&LЄ?@:@;yQ> f :\0t+jszK,b^pHX ?P\\D?v\"\"& ?t`V?\0JwC1O#Ɛ* @̿\0Ƈ/#8\"O \"\06Ncä[p@Ch \0{\0 pDOFtH/!h@L;@wI~Cˀ¸)E4+)Eb?]d\$<` o?}8b/Jo#I V,Ac3Xa oxi\"CUDkYȊ}\n\r\0,G\0|q NqpNДjBO\$|Cp}ƒ4`\\*4bA+D_X\$@6\n\0\$\0Jb݅ UpXiD\"ێlgt' +x<N51e0`B8q\"O- C!Қ*f@#6ZЛ9ZRǁ HZL e 99 T n?xX\$0%\0002\ny!e :\$QssAnxK l1'Nz!p.Ṇcp1@ )m:@P\0 1\n(CR5D(P1# d7+\nBuhaM a\0>1W\0a4 s-ׂ'jp\nJmQ)");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("v0F==FS _6r:ECIo:CXc\r؄J(:=Ea28x?'iSANNxsNBVl0S Ul(D|҄P>E㩶yH ch-3Eb bpEp9.~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0<d4E'\n#\r.C!^t(bqH.s2N9#{c3nӸ2r:<+9\n<\r`/b\\!H2SڙF#8ЈI78K!+:+&2|: 9:A,Iv4ǢP-\nҸ %>( c(P74c8X`X:\r3 KIAHHs\"N8R0HY5GDW(3Ut P9MVd?4\r CP2*b3T`nVMsb0]pG%n\\E] h7E`@PIjVTz\rC+R8\r\0aRؾ70l_2dYAxPZA@yART o^CK~c⊰{}cZ. ~!`@C.ޒ.y\n l9wt\\C\$pըp8 /媤eyn_H!fwZ%hc5~[H{\$\n\r!4nn6͊cHJ.6|;.ް[pWݪ>\\hWZO7PxApUW) !/pi[~X\nR\$8?BEy!cPC5.\nH]=y*\$st`57 a\r\05j-g \0ͤ#oA\"p;\nH<m!K>+d=p)pP #|<)70 -(ek9HE9 .NJ hL>e<ۿC`KxVA aP A9WIy4Wjp WdER2ip#) CD?ruxsAX+?l<H&T#|РQb -\$}Ah:t0PD9!9SmHi \ro}ƪP_Eaxfu{Ӳv<)/#QC*ܪ\0rNirtGNow>M Ӽ DJ C v``Na@](U S5{=9 N8z3^<  Xc\n=@s3&dAj%\ry\\{<# UgR`^ K4l!t{\0W&|-U/ 7yUC XR6uHVu|IV\nq<鼇*p)&Nq/\nV 83<;}_ph\r ӊpt9#%<2id3R s\nkOf9pA\n9  IYC c,U2^\00\$NqsJ+d*@1:u!4;@zZ&d \n3\$ݠC]QB Vwp .K\\άԌ\$9i<2Zp:a`US3|T!&P,c=0=Nd뛭6nZyiTTJweSu'nm틸In\r;ݔ„*)Ai1yQ\r_8?՞76l1ǽ{cvr{\\.evkۛe~L^7\n@.s8t}ɘ8C-ѻ-4IdO{sջ8f;}Qs^ݹQ2[(@\nL\n)(Aa\"  &P@O\n0(M&}'! 0{6}kʘ@;px6zg|+D+ϤyJL#}~*/}4|Aw<wOX\0 ~\rڏޏZ*\nϧ\0v0 */hD?O\rnBPFo0\\`0fkrO Hphxpq֐PTbOPį8揢POo.0·\0\r PEK ͙\rP)\roTv \roMA(XhCL&\"h\r,N ^qKkb \" }qy\"R`\0n+\rnqH HL\0V%F: ؎\$\rf鬶јjBmQmG\\nk%\"Vd k@ !2+6% ~ Ğ% r.R[ 2?\"̹#\0Ԁw\$U%#!%)\$ \$LmA-W{@ܷ#_&x]\$S'\0\rg@m0`df`G&L\0':xjx*оDL( q,&lNt*\n %f(оkZ %in\".Ļ~\0U@d 4'r\rn#`2H g6&v'\rrS^\$ @Xf>΃k6r7`\\ 5V'W5\rdTb@E2`P( B' 0/w␑s&r.SVsє9JJx&8v!`z4 \$k\0x7pI өA9 ;\r~ 4>~'\nPs0PQA+/7`WOG1Fp暴\n|\0PGGtI\"TiGO@FV~G荔2\$%96,7LLSoLhP5ʼУ\0 P\r\$=%nUjXUkϋN\0\r)F*h@kB5\$56Lbs|Mo8+8\":G4ONS5#j\"NncJtT%(DUS]Mj\$TK`5o@rYSNR1ER\rEXrNJ7bgTUxM5*0r:3 2i1QkF0YZstec\n:oHFExu#4S#  \$t?E(p(R\"|eBX8 4>\r/<\0E, ^D.E{5a܆*\rZg|~\r:moc9Jv*B7rT&nlHPV6mDw)m\rCVw\$uSwS`ADLS6qk)Jkl'LhB9h Jimn<\0 <\0[:\0K(~s\0 K̒Y'ʈgaO(]v:&!`PxV^wnĹ7\0&g|B\0(*,ľ²d7⛬tzwz\nE\",\0 \"fb\$B(h(4ժ5b ?΍wq|@Ƙ+؁޶ ~NⴎחN6<uFxWQ^^;P.#/|Wȃ8k./7K/wQl8~Qψ\\1\\&\"ئWR/)|A5r eE@k\0OwK&f\"'Lml@ۄPZ7\r#ox`]b ̄NzZ@0NR,x[Pc8zX\r?Ǎ?92x}LF'LPyzð\\ƙnjT Ť iNǀTx%xaucw#l,\"Pb*g#Zud,5\$D3]؛ ?h~0\nyN7bz\0a5qkpvQ,D[A\\EyKyP#UZk&)E9q\"7![QMd۔uQJ#\$o]gO\nXD6eXZ:E:OUbz]7sDc0`?\\S{ySihzEiij&׫e'kXy f6V-ZWewŊ;G\${SK7 1n>@izzw9{x; \0\nIyk[7{޻8-~w,[lȌVԘ+Ӌؿjcؤ\\Y'zYݻ˜?aA:Q٭(} \ny#Sy\0[?/]My9=PϫOLs\\sWDػ˱|7jN-E˕+`uƼ\rM}~I~iڴ|lv}YL1l>\r9,oY9}Sgg:u)ÈCR%~|~w0]|\\y \\ج7йe,mu7(T],wθfU=TRW6<g;||1\0Qy\"9vb\$5mwΆo\r\0xbkH|ɚ Z\rh\\Ա.3U\r˽ ؘ\r>?2)/=50@ƅH~<нx_/˾3~I+~l ~HY{Y^]^ae^h^r+>CbB, 2/LR#mRKIK'픕E W1]Fz_]T%4̔\0V=4;\$T 枍{?לּԞ3n\rz X?cp\n?#adX\n:z-^X! `:\0y,DlJ` A)hU+5+~_+<b]<m5~']')ެܺ/Pr4o{_ngHFpBsH1)bb?\"[C<U~<0y:G@}脬z޺w)}[ꖞ<8&X\"`BWw{kU.E;=pQɢR)t\0;Լ*JC^ d,+d-~*xpn@A?Qh{䄳'A5P{dX`H+sSkX/E(3=!004\rZa> m4?og3xƕJW\$EQ ^&\nQEhjqCNƠ,yHβ\$'@\n;\0\\]ϛв(\n6arǩuP/;P#q1\nPB.6`\n͒W3dbZU֜=xa@=fZ;Bk謀mJNg^prٲ (Ilcp*AOU7\\D<Tf+THϠ`RZq[`of\\\"πx|Ef ŰP/S\"_8-CF]\"jhF29!Eb[E*Mx\0`9DU_tюq^(j!tX'EMQd^b|,{4\\MXFf-kN`7,BJG5&*1L4 #-`'\nL?\0)| r X|e\nJ9@ʬȥ6qX\"qE Pm¢NҖ7} <I\nA͌juL+F'CZd&RncIl \$\" )|74hCvcs}sG0~#feB.rO!<]/d[A\$) JP\0Y%F`&B vMIIP*7 ֐2&lX o.\0KZ Bq&<Jp ei;\r0PBHMLİ=TXc1&y-I6fN|&yRn0r %VRKRd H AY\n<JĺL'~V \"l!d'`q>Iit3:Lɲ\\s%ͪE@HC\nf\"@ 11 l /X\\DK ^-n|\" \n8@{)P(P(s f y0M@\0&bQX]3 8<#11<.bf*p'<4)1\0)n~cȁTStI11(\0P,d\"=@6\0w\\fzYLn(O}5 W=2Y͖e@O7INmX\0N:nB\0k|,p>Nxnxh5Θ Gd'3MS\$H1iN0݀8Mvĝ\0P\\NH\0|9@\0!dHNɥL\n؀*MQu@&7i8򓖜)1\0#Ljr3\\ 9HKd?hg: OzvsO|\0F4>ϾpS|<*LBw)<?9@ 3+7 ϲes \0@Ђy\$\n(#B'Rӫ 5CiР 4:C о}4D(i<jPQ\0ADf% >L4T@IOXX (&l')}\$eIfN_% 4i\\UhC=Du'@v8dB-%(T%7f\nX\0m@C0I\rɽw<QhS09@I,t')˦\0J7\r \0!ƷW1\0~_\r2\nf܊@QK9\r\rXi{/~2Z_2'*o\0{e(\$iM4T44}6)mV}A3Q\0l/=@QZ:kN|Q&4JR*iSP5\nt@_)QIMXoޠk19B7=\0ɷ̆l|[aa.Ԩ\n\049Βv@GPO'ZHX 'VZ@Tng7>l3cDXZfjY_mX)ʀzG\"P2|\0NjX{\00dTl \nq;߁:bShfy)Q+jSCQyS0Hq`  `FlpT+yrjZKcWmA:y5\0P&zWZ)D TvDV3VFȭRj֭pv5)'X&@.C@` pTlSw_ #:!/5rrr;F&M@\\C\0\"\$ (TX+\$t+r84XfId#&cIPZḻ(lZ6^3|s\\=Er3w+(, c^|:`h[UahtZԶO;qy v\\A^x!j2VդմEd0رְ4HYHz 0+Rjf_k AJj[,U\\jXX=ZDw5՟n %'}&p& )qX\0+_9C) )R@/!+UAf\0R=A%r3{\0`%z0\$=h]/64\0i_2Ue;:JNuV|@ GhU=Qh'(T>,n?#tsf=cVvu`U 'X)MQpp7פ!aJl0@ZFE=ClJd uAJtȪp0WUwƁFa\niݻXJ*o*6k8N[*/uMCUMaJ޲V!U!+Ŭpxh<@B] ; u_2RL:߈ 4.f1@b%\0!{=Mۿ|`x \nтo!p)_tȾ#pai\\3D.񶕁Y2xFg8'(0BJ@bZn p\"Ee9J0X3b\r; S1[y=(73 Ñ2*l0!Vl rZ@<TKmXiF\nU?fT\$i8GS)L\$ 8BiD!\\B#<4aT+@-7\\x6p?\rN/黰%L+`ht<W>{~(@R06ǞP+{Esö\$*b &#[X̯&bnSUl,0G~}cUf'dCs<m\r;< *4~ljoam4]/02cFxwH;Rqﵾ& kX?AIƠ\"> x?,Pb)c<\\++^n3ő|N'!+PGN5TBK!1\":2bP,Fy*NÓ<a[&3t閇7\$\\qߔ 2ecInTy2c_ @\nup x+XUq<A.ʎ!2?8fr˗8\r8(p^!!Y=q>\rv-πٗ 1gf,[,e'ZX:2\\Hy< 1)[α;D|#H@LS3>;]2Xvj.GEBi+d%,Qr%Ц¶*I5`t-sb8E۾e\0=2/Yq9-eZ1\\^U`&gWJYhK]8W@;p##Bynqĕ\$uY !\$)(rX@/+L8O^ʔp6,Ѱw<%MSS=Z%W\r\nHy/2+e1Eɣ\\Uw (p\n-ISEZiI@1 `\$448>\0iMӈ4QjYyp#x`m'6zaSi&ʒR>z\n{TiP:jZjTtR@:ޭ5hj{\rfr\"x|cx?rkp.r>tqC k5ha\nU:yxW8k)3!ҋk^t}-x5^B(q@Qd]ƴCr\"kw[&usW:ꕝN@d=+Z9N@m{-%>HR0*7K/<~,jsnP\09.͵Sj\n74ݱ,\$;E-m\0*Ȼv7c;u&vֲ37ءy(tn;JAG4hfR@5)V{[Ymb61pJ6;[.Ŋ[rb9V0\rCwVT&=,hzH)8EsIt<@e+0ynjTƮw~dJσ@)c+h,ث8pL K:QAog1o?IZ.?=~nkF!n%/Et0'̔P<ƵGqP䴓FxAq⃫vn`,cW{9K߇{|+s<4Z+צ6PPL(L=ծjfh>)AqpK̆Ҡ~6d0Y#y}tORCS_|bHwsO%UwpN򈍜Y]U\"rMt\0jxoWD[[M yT8@9h!̋r`\\/4u{d8sb\" i;jiǿkj}vi74߽J9=՗540'?(7qg t _[zӌ\\w_>s_g\0V|\$p-Bs.;3gPCDGy1j\0y=M˞;Fm(oD7ykbo=!:.%C%t߿Xm\$6&PbjTu*Tx\nd5Νt^d(S|-q\0(tXYQ!HFk0t4H|oNoN%\\w\"0Bq\$[玙f|q7~EyXqר>| Ob*\nImce6ev˟LnɩKxx~aǜf)9˟]F!sIiNh~ӔR.GF8/zdCf6-#g|tŠ ;4TV)kV/yC 907h@).HqEN}K+Yr\nb3@K1 )l=#HiLʄ5oAB>Y@\n1H!+ȣs0GH~^7ـQrI8\0Ì`\nw=0Ay[Q8HOg m#ʮukHB #oufoݐk^!p{}4Iv?x{CY-ICמȒ>0l\r\0|Q15 L/j3;Lﴷ^{Un(}bW١+>'{WsC~qM;PRƊ:pQG 7 a;_z)|:g\0Y*/kė\n>U0xH@-=\"0H^UE+x+#;1kyTh :G&-!qs3^|xW-lFXt]BXY;QL0cIojAQLGG%\$(wҹEhXKaob5sAt/\rݒ`w7<MP *yYh>Pr=zjW01gdli D/}^V\"b>XRnr.0̙9@ ۮȷ;&^2hYXh(b\0؀/\0l:0܂?t%> CG4@@E< h O0K\0@r[\")AoX4z NR̃`jkP ]Ol 2\n*b5Dn2(\$ <)Hac:ϋ/8i:n6:0;<1LP\$ أY\$:0 jIP\nrL!wN\0>~/`4+\0<^RXU6:\0bN莌*.Npxp_ 8\0XoKb蘖|l\0Ɩ)\0P:<pl\n@ASPP ƚ\\ A03\0006 (.pv}9z@N\$ņ?5i+Av8`y \n; Vp ߀\"jE= x0d\$PV xXg\\ ?\0ePaAJ/`pSLЙ (PYBqОA!.bVs\$ |Pf%gzTAk0l%.l5I+8I+BH*pQ\nG^B rLPUBqhBnB”,b 4 Y` |#`.B.B \$6!*s\$#<B%Q* e NˆrL\0N1!i+\0Ѥ\" 60bCgaN\r PUCq/P\$BNIB,%#-\r+eh&pº/d+ PC-BD;DC}<BB:0Ï\rPCPBi1r 'c[\r ?P *?³+pA,1Q\0L@qDh.YP `0@6Q b\n\rޕ0\r\$1@ =ĺB֔ -tXBC1,+BI % ֳ(KT\0F@/7X\nD``[ ΕpD LDQ\0\0N`3^\n@% 9\0[ LMA믤Q2Q8)HWGDb%\np S(#tDHQq[f]\\'(B@^(CCvV[Ř`(^EZc!7ÑE*Y1mEuY_E\\`Ec,[1e]`E\"䆬86 zq]x@OE\$O6}Qq=!\nŐ<b:QcO'b\nT(|QqFR`&E*1R!L^f` c\0^H!yg|F\rbFlcqeFipF\0]Q hqbƨ4O #\$=\$gFkFp.<\0k`nƦO(J F j1F4\\(3\\TgD-TCA+ \r7Mx \0Z R\0005p\r1E\nVI(;R~[>`36rp %-Ж\0 dCñ(9Ax@2!*`\0002Dz~8S P/ #揩-81nt*\0 #O0=0 '\0d ( xG \$\0H(2\n3fn 7\ñ`7GF@>H.5 >?B><z\$ `>0RtY+ F l@>\0̅10\$VƴK&\0@0 H>4o\0006q81P=9\n17\0D*< #H\"1|#!K3=~= nmH, #,{I#t~) ֓\r b6I!1gE/r\$)\06̎'0v3g@\\@\0! 3!4HdLf_9r,[xebf HHhpf1~D%,a)0֥%<Nc>& K!K0-;H0&܏ଛ.|#. @3!K\0002\0!07ʿeJ9h\\=dT\\\0QDId\r(II 8DrZ~(;bJ8CU!RH\r 3Iė_AN#321@{@J+#=R}2-~H.!`:T^!K)Jл(\\-\"#L0 tʃ)d/!r]8ы.SKҐ\0H\\wG:)Gʘ5+N N\rJt0&(\na!Is!!d10D 2:53)WJ%:0˂#Z*H-k״\rR< -|Z2L\0dxKAty2vLA8\0K3+\\{e\$gI.O#򝂵)>\$g!P؀6KF#q\nWP2NzS{)|/'(kfQ*JdJ>!02\00Rbr4yJ\r <^H@SdWlT\\TTF;q! MCx!\$9_ Ay?z2|I|.2)*cBR+2ԭ`K2\\R˛+BL43d)(G,\"̈Ғ3xS?L3<SAM.t2. !+%8!JH@K%4A3N*d,M4/ſZcO1\r\0\0(M</Q5̭38J75S_=5ܩA-0:)~HRQt͑\0\rsd GsdL.[6@562M̒-/ \0cLΦMe7x q\0003b44`1.j@H46\$W6\0\ri\ny\08h;>Q_<40?RH10G(LfQ5/xXsbL`<8{rSɭ9@B8x6'N\nRQf`8|\n'ԟ6T(2^A*/'0Et*xɇ#dgH RH(BU#`\n\$c\0(#92\r>\n`CrKHP eP7\$6Y6|Thœ,4sNJ* K)DsJVԟ5\nMH?/|\0006@.Lh˨>KvL\"!K (\nIOv)I v6Ü3>d!Of/KLv 0 T\nؑ,,ܹ6M|Od!'U=C/Jd*ǭF<Ӹ!H;ڂ;љA~^<aSe=O1 9L{9 ,:9 ,7-\0`\0` u:1| e1VL#A Ap\r`7)@, {+5\0b`LhU\nЦe\nSΖ}\0JA!2\0A,u\0006PKQ|3O P S68\0%@0ɦ\nL5\0',<)@?(P5J gI\rd9\0)BLA\$cb)\rXCO(\$N JqHV `\"M8t\r;03|QC7XLu1}3X:bO4]UMaE?T=%0␂C!TLH`*P 8K/\\K6{SY+ ͐KQ6@6V͑<eIP6CSzO\0Pf>80a\"gI,gmFᙔrId|FR\$ ȋH!2FܦP HR  8a5Ih.QL(@;\rZ 3%\0=)@B*H?T\0# I\rJpLJU%eR_I&@:R%&ԪRq+*RY?R\"J*R3J\",F5&j6.'KE+ԣ&u)TRML)TLD~ԹRESK ԤK1!L7DcK-34DA/x%T@SVIS^= `\r\n5#0 R 2Q8TI#%Sw ނ|R /E\0~0A/\$ӿ@82L!d tYO|7<a(ʮ64d@\rO;tA?QiIᏐ|&,<w-\$0ۀ+B1P\"*#\0HEJO5\0\r]O ^\rxz:^ _(6M'%[-i]FN\0ĕLN4f#i:SX@4%[ʙ =&#eHc\0€8f p4\0ag/eD,Aڀ@bE \$PJj2\0* : .24ࣨ-P@u=)\n=x )\0򔂀=\n`+H()\0#x&=:ki&)H+>UՇChi\0OZ~@+x \".F?B BmAC[DmQuFjR/4TuK%MDcW!B\0EГ=&L=cϏB(\n̨[0U\n Oό1EUTu]\rU\\D[\rG`1'XdUT?CHsV3WEcuu!Xu\$,B}e5~UP1.'A:>p èi\n SSE\n1\"T@@#lN1[(ñ:PQUl4D[%lЄ%[XuD5b kHbDpqW ]p@9\0[R8Ŋ(-RN..UpTW%\\*U̦)\\Ⴡ@CtU͟j\"\0<WRc}uuu]v3Qs!]}WX]w.mu<I\\ 5׹rdh^usM+ 9Eu\njWy^UW[_E{҄H>WA~U_:k]xٵ\0b(\\B\$89\\dX 4aH8W#es^A?+=u\0`ĵ|\0z)upQu)`]xOu@6ew`q9? W@h v# @m\$X+ <~(f\"jDe1X_=rA=W9\\ 5c=E@l1X̐: ^\0\$=bMsخFVb\$Y b8WCTs6%Y @(-) Tb/DؑdH؜L`@d VG=eUvX\neZWF{MMY9eMѲu2GN(-(+b K_fX#f9dcvnRb%4'-\"\n9\$(JW%fՙ6j@7gvr4d/1g׀[e}Ӈc%cNJ\$aa٬N Y2dSbQ`\0ŠW\rr,H\rhrQ\"i\nFKK;iP+Viupc3]֚Z`8j\0-Ei+d]\"ىh VLϼŕf}1j67dM\"XYjW@١A\re%\0jbtY:Zev(ծ6d AZk\riEK6l*<J]hu 6[#lb;bճvdtt7JtAو8A\nlxҖZ&!~Ҙ[OmHմ~<\0mZm,[Gdui-DqZL66[nE ۇej1[l6ޗJ}s/[me#mJvF7n?Jt[R\\6YoLc`5ovmX-6acZsl%C@[Wa [W[Mog\\/\0o \"sbM9dģ58<v#4m,}نV|MlS\\im;+YQrEȷ%rj7ۯa}ZMrW\"ܝs3؊(B4q76qCo*+qhsv<oՔW-r7?ܧt\r صt->tH)rJ7\"@w]Ŭ7IYpmҷ7XYt\nG]\rp\rQ\n8\n2ѰTezP\0=v NE#ܽu̗Eiu-Ns^.}Cܕd˂2]1f.gr04x>WvE7.]jU\\k4q!twIF]pwq5w)\0qp\0\"\0_az]^7v][-ܗ<vޖL7c]a7?\$-7;^w5v]=vagv k\$w;Z!Vql@;V0l\\[v-`X xW_\"n <^uw^ew=ӷ]ru p*urZ[]G>é5C̻( 0*ɒV0W (\nՂ[z`)^Zkɱ'#\n\n^()BiW \n\nݦ 7<'@ ^:3\0*@\nЏJ&h\n| z\0)_\n=젠_D=h\n5_Z`*\03.(\n'!h'(`«>< -\0{zi /L8`/:IUv@Z]<_{0~=`m{,7E{=+c~l}5W_X&\$Jk1m7O{%8hx`\"'{}7^袍Ѐt@\$z \nVi߱{i&JW|\n UZw_NW(:_RR3}`&\niAh0\0 |ES_%_2֠7߶8|{8%_Y}pc\0}k_k_s}_~Ώ?` ׻{Lpf8;\0^ 8\0_E`\"b<wߍ~@ _-̀_- :fW_~Mia1~~w=&_?ZouU7|XJaUrbdpZ ը<wЙ0f#U{~@&_ *Ԁ{zw_3`#\$(0gUPX?Rk`>+\$.8gÆx lIa8[{X8aI\n\rc~Wx?\r8&L>!^|ڏt=a`=؍߫ %d M}x\nW+|- Ux iaCWa-s߯'f(Z'}צ\"^'b\nxkb=5hdCݏz=6\$ &+~%8\0W`'`v&Y \n&0<< !M\0,8\$ď?EXc\nU&Aha108VF2عeNIbq3>\0V..؀Wɗb#a=BϨ[P*= *踂`7q+H `\$U5k^=Z b=}Xc.(d_3)_3Cb\nF1O,Qyc.#c .A`>5LF9:<+uߋ\"V[(=>X%Ҍ=H\nS9axIvE a[ &2dh=PZVU]U#d^\n7FG\"&T&F?\0 &Hy)bK9)w;P\n\$d#bˉ&JgvK#=nLX㍓H*ا *'Kቍn,`::\0V )&!|VO-ԧ}{b PEe#OcgP+Zrt(O{rByLN22(&U \0XkMf5]VXUU\\<paH#\0=ZXvW ,R`)f6Ucᄝ0,bըf'`%ᛔ^8\0^ .\nX__P\0).B@dva9)'NO+~++XA- j3 MaX]\"f)ـ>y:L\nŅ4VX_p 0=-@§zUYb\0ȸx\n&jX&*ɋ_r{R7Ki+q3kw8f9{6]aVlb>jyfy<)(\nkfjԫ@X \0Q~@F8CL0@*\0`^~rxgD6tT|x# >u e)YϪǝuJky2&eU{M;iUL=u#gX*t+0׾ȁ  'UY^)5VՓ*X-Ua\"dž8`}aוU{gdn-8\0t9<Ldh ,=I0h8\":8 ԣc3h1\0iz86cd81hiֆ'X9|̏_aK)߯Xn9Z05\0ƈx\0<\nX.UWic:: Q&\nZ\r<Yփ9VgR踶bZb*IGkc.rmP\03Y\0\"'…2UjIiI9]W`+L>-c< |\0Z\0e{󀉎NH=h+&@1dS^hy=fWUa3~XN;B+FOva\"Mwg턆G'Gib)@XCf<\0``ڴ:c<p6<ƊcaX^Yc=-ax CRKZ<ƛcf%?n,نg種>h/xH筑VyeYWVZ}l\0-jO8_[0\nY\\Q~#nZ>wyY_[X\r궚ޫ|egUj:Սsˢa\nZ\r`.I`{.n冭\nqƖWd.)a`>gX}8򸋀(\n.͛v{T7,3dg~0ؔ <{<}3\$ϔ)8@R34: 䵥]~6U!<@jZ ֺS^ӈB~ 5ɳ,S,(M9p 3X/Zu':Fp\\)|ƣX\r<Y8Xt脕!`6 4.6+ZP۰n< 0&bw0>Sr<@6d\nzlOFRlO;H5ڝ*L^x0>g6s/qYe\0@<z=\$\n`+'S9X8_/ij h75Y\0&cwa֡EɟXyfub{5ͳvGjgnXd\n{͙~V ?3W}R Ch0>R= 79x>S\"ӂ4zҴ0f\"`1:愸x:x;Zd֔eK;@gTML7N3RkN(iF;)Orn:Ӷ\">^#e;n!Q\0/ԆfU\0\"@Rp6 Bm0 !Yr/T t1VeOQzBr9,@9m!t11;\"cmMu,S<ŮW\"yvK)VmV,bk\"1hxF&9t?܄Iq\0g5MK!,?!PSQGe@a:bHd@(: DdFJ1Ḣ 8w&@⍅'iVmL E/[RR˻ZnfՏٴ_Ghll .3%I[c6 3k,IDX%JSox vKBq[iDanO@۱m/|iK2RjfVrZEJng\0_H;PHDn-iQa))PgL6%lk:sk1SmNFo(SJIe:ԺJ=lF)ﲋ\$xͣ>Æ9Xo<'mHf!D;\0fSAr/;Vl<eػ2JA\$kUY  d\0׻|pP!fZ\r@O'_x6;\\4%Z6[6tKŰ#u1|2XOo&6~DqO<<:Ӷ|p%%ֳR&\r*oʡx\0C[ʸ# :lpw\$KL;sh`aRnz;|8L =OEǥH* )-T/⛲_H._%H7THSD5>S_cr~yE\0*^FS=\0#>@cEMA7o\rRq{Sմ1''m{p0f2/<m:-HƸ˜%N'wdf\n5<t  <n5F3+b*qedƫ0@S;鞒d:;=>؁=#NR2`Fd\"wQݵUNRutvӡ\r'K#O\0ɰ씑r'rH.|;OK.8L܄HT|sr̃IMr/4<<r Ɩ05nln, l?Nࢃafܠ!fo~| @2/<%|1~iL _1 5'}r!16Eo2s. \rr7<2<sn;r5*OlLDF@l[͜;HaGw75Y̚5H \$A\\<t|ARQD!D\\Iqv@}_lh( SKi)|iwT’μO> ,a>T4|sd` #y\nu,\rη@As8=tdYw&  NBhR2t %q,TwM[!O= xNHJ@C6F~a\n.Gq\"'(q\r8CvhJ`9\0/|t&w@&+\0] <bt?DqO:</aX!8YEUEl7G=aLt@1^><ЇQX܀ \0}?CwԜ]=EW\rNR+N#]?1oG}.wG}%6Q#@.h;N <P䐠18tuπIM!]tU֨D7q&0ܛTz\0qH؇tI|`6lIeR M^.5ue^M _\"7_'o+0sQ?FH݋uXR+—J̢O\\\r7`N |EtHwY_ݻOa#b@ GkN0 SUh7=\$_0cx7e2qtDp0umbر*] ^蝍%7N?l/PZwO=gnVŝ veթwn1a^]]<p\\ޜ&AzX4#ݯ7د_=k`Ћ}!E^Kطt2_ \\IX3طѝ:%՝w/PQA?[ݓ'wd\n9p)Ƀr7vj[@!w^R1ڤ7[ e;qm[wkش/5٢r, ?b']r[\r/5ݰׯr.%UZv-l6~BCGhS ougMp,O?Ddmw?]u! R4V_!xIw^H9_=>}0ނ)=HO_= d 3]_6:xDx7B Ӽ\0]/=vIJ<AX΁,Me;G›\0002x|&\ntSc4u}pv]\"9x_Ob'SK(KaDXSmǍ3_<;TMM\rHo*_ -ޘR'NU:׬Hڪ%\05g-t\rik5\n`Hsͯis~qOo\r^m>\rO/f&?w r3*}t󵉏<wO\\eV &d%}!.{Jfם&Fx8+R:,x\r^2uV]qOs]x=#CI}e1bҚotJIwP\$v<Fp<yN \\\0=+5Pl\nSȳӾ\\6탿vi9q4g#|ԤvzK޽t//5j_Io%!7ItQk\nMwLMpu!0K\n/W[﮴jz)}\\X)O>}S8@\01G{?yUaG//K~K-O_7}*Oa{z%/\0#S=`7aZL{H^>p7EO\"/{=TN]G.ԠW?]O߿vLVFʝ{JTmio@xO?z/0OY|.Pb|+ۏ\nJaW/+!? \\V_W|=Oʆ \\FhaboC@Oq|\nzO2j=EQIv07 ͮ7=z2M=)M7[!jJ }^wmhzx9{ݶMA|>o)0\"Bx}40K(\rmݹykߧ1|OnPt{Cqۏ\\da.u]t7cnYDEVd5(}u\r <T\\\$cԫ*T֜;[q{]U}ն _t5udkmq_޾7K>+y{&a?>N,5Q^}ѡ.}aEr> +̧@n?ce|X}'oce_vo{}-x~S_=wn\0;=|'8']{CÏn?[uIֱ4)~=uM=1]>F\$sRO\rMw{/I]?5N6uRyJ tZ\"ptV_ȩfsۇozfɹfVAY\$|z[nP;[ \0[/eO)wUBVW\\ pT]_ G#_v}5^M/ \nDdK\0B\$Qzj MD )5đ4!V\"XU\$\\!W:2Oʦp!V\r9bʰ U1J\$.p@.|\0TY)%؈V\0Jfs\0R%fp4\n\0GVj1A q\neȢAtm4O)Ay ?\r[^tTD@^GyH ה@i%\rY8_(٠E,dW<@WArH_\$;| Q2KX-B˵wPCYD2%WT]2soZT@)jurKo-\\L`'Z/\0nwsazznk hlpUaKW6  \r \ni orV9``:z(.h #-<Nl[PtK5EZxdp\n+%\0 @UtixXpj7aOщZh`NUŁ)ÈQk(M Yb-D\"8%@ G .dbƒ.\nzp W9g&˰C\nв^gi7-XїV\0\n{ӆ,m5j1Uk\n_`-, 5e4y_\nق2й3ɓ@\$lFaߠ2 f\",Ba-0'Fȍ.h-iW~U `ќ!V84̒\r+I5&L/X3_%{EZ%s(6MQ9qYtfغ&\\M:86\r_ A~X\n\nXM!5̑1p<v-eg5Uk3\0%?<-</d<y@M0-& V h \0|c?h6c`+s\r&!0gj_=3P ÃٔCE3P{جB\\&l(7@Q\r'0B'beXlA'N2{m=xc*> lZg4Gg\r)\0 \0APA%j\0\"Gg F/:dyyH6kf2dfKr`B=ź{=F~̗baUt}!B &D2^f[%? F /c Y/B \0(AmB?\rt*plȡY\0+4Y!VIB#w'EI\\^&?(M \"ÄzZZ0\0Mj\r-H W!4BC_  Y;8I %i1a'z];7L e*+la73/_pXAcna}r(:U1&&́a'F3 nK/`SX9Acu\n1_p1c?\nUa(\0hBcu\n3&2lLG\\4xXa!dj4Vg)Ն -!+ \nk7#Xޯ6LݍZFm2(V\"EuX2\0c5&;,X\0Kl`=32VB`gjz4 *\n~y Zh_t5{/`\$*^ Q\"X4dh֤!L<fV@ve[b5!GX^0)<&H/ D0 A.7lFT!9K򧑾~L҂\0My\\=*[0.wZቚZke3WfU +8Ud2_W-SPYPF*mH , +6fRY3a'#<a\nUWB L= 0ɼ\$'Rȭ|TVHIAOzv}L4ن?v 4gN%V.\0D;lz`< ؈DKgQR\"s9WQY4lzνthuz&c&\$cD!04^4M!35%WhlbZ]?bZ{'1 \">iΕt#\$h@IWZR.ҤYA&ҳ_\nɝEeL.YćH,3NtkZ|'i\"f 90H'z0Z)'ԮLk͏ҲBFa1O\0+ V& /*\0XfW 0][x?M)2F!fiI\nܤۙ<0,X]Λ\$tB#tխSHh ~\\\\*J)nDNnTbA R!{u)^mzE!ntf[{6yFƀ/\n\rB:<I\"\\*MhC[o> f #pn CK q<:`6ߎEK4\$,ة@wUQ4T\0mԈ\\ZD1ٸ3%>`J1 oq{/|krckj|qoX&aFY%4~+\$>;^|[1w8vzC @7o: H!Ŕ4`\rJaD|\"MXPp ܻ؋NYhXOR25;8){(>0إ*A\n)L-ba/w0JG8.C\"s1m@*T\$w>L!M}6WU,l=1!Qh/-i\n< _6GFFp:b6-܉*7[VqH:G΁FFqJ\nJR-['Ip\$)%ÌdI vd  q@LSɇ/ Ep1ɀHSNydM#F=Yړ&i_Q\$߱ZAddrƼld\"~ !;ne{ЎQޠj qFΌsFrwRͶRqQq **pJnL7 Y'Fn؆,^GF\\({Vs;LۉhRӂKJ5җ#C;>Sv5[#O~TXe@)4ݬV.8LTULفcdF|8lciT~6k Uqn4|n7jREo2!n)\0!g4@c6',o=6B8^=m20KxF!TȦqXQu!Ndh)?jtB2*(.RAH,Z'QB&\0֛9݆v4çx:=xnޫA&:[gbUtQtN:Zn1Q^[CvpS(禮I8X(* TQ#ݎg/8\"_iq;G?ҋwn\$c>PmU㽀dqۤxIGy̟i PQ9Ysd\0]<DZ)LcAX/[p%D@Ju|ziA;,u\\|~CB>8`K#ƅSPۉzOQ\0W*M~E\ncǸ#>t1cG I}R x5 ST*XM\"n;J\\L+\$X¨̭{1kIJ\$\"Z@u8_{uk .tݏ>2 d PS QNgv 0sjdx_o v\\ ,FQ|v^SY c\$|v}m2ǻmZ9&-B.2H\0=<ؐDd3bn&lJm>q# H\\j 4@xCCz SlqI?\r '6GtG!J\\^Dkŧ@bTu'(ȉ>ܪjR?HQ2˴ڟU']Rl/+1/O֞F%}:iG&Z\0n `)` a \"fQԋw6~*#18'nx/dc`WQ>Ї#KN\$N!O(@GyE\$)F[{!T #J|AX%o޼w|Q4n`Qceus2#\\gIjGjj+TvׯDcI*x02\$}j?[tq_\"h% ;W\n#Dj&LDtS#F@'NKpEm\$cIQۍ/MR,za4bOR{)Ly`s0E#܊)2?tK|gO`:E&f=h \0RR;uvr۶#o\$9Ig#RKd{]yك^Y.IM;\0'P^<#6*|nGYISXtKN{2HbUD 3ii!oMID|Rzޑ'wmG 5)O?ZqP+\nF%?W[\"PhW\$I'?TJ,nJGG\$؟@*T`Rs QG8eF˔T\$y/]^\0R3oi# ))F@ne)/Y=#RR+`c7ȆT`?iBFv %'Q8@/*^4ؤz =\$}\0M<ZO'\$mB 0NA\r>\$gJod+Mdr2ۏ(aZS1q9?좉BNMRtʨ@_U8\$BXb?̫aͯ\0>uBU Wn\0%K >RHN4:I8}\"x!uGI=) cwÝUe(D}@J4cL1lv?W|T^eBiώPٓ)O.SX-'0ДN .Xkb\r_z|aאּb#v@NXt#%ƃTz[Bpz2VdB!Vhu TIJU|xH\0BFBπ@\\\n9Ff I  X!\\c,Z!-CteԔ ՟(UPҴYjRї+LD\\H\0jզ\\V,ZȢFB2VxxQ7PQC|%-q`Hˋ 'r VZ]Kv)_\\)q,6o. uvWw \\݋%Q˓0,vrm;e.y\\v't^?-9 aIit#q2;>{[4+e@^-N^0y`^≯)i 28HE-B`c\0N%6{ȘX9 0il1&p|% pC61[\"uC\\eVXwl4&2\0XI/2e3\015WAa\0aT6V0a0`YLf0U\\i0rLZXB3`y0z6k ѱИ.NY:0sX3ЈA4 ,eY3(Rρ L\$,HlkgsR\"I`o\"0]# Cƃ1S4:hp 6eb41eU؍Z3h\"4GZWW(V1V6!YT5A}k+&9D.U};-* i&\$U~q'bPD(ZF1* =Prq,Y5gzcQ]CdZ&Rv0æV#\rj5eP]CX˰+6 YHH<ajK\"TPX?aA\n\$ę1&i;)7H.2'+iT.\"l\nڡȤVcO36mhD/3n4|>XHR}&soEi\rRׁ+l%!p\$7N0^pM۠OE-zg%1!kGUǧs\0lz9B.K/^=M7fLߵrF| lї )OZR#7r#L0)'\"^aԕS*S/JMbuq!W sҔ&FёƝ83(9|fQk *p5 t*ͩ =3w\nZ OS\\Q5Nh#B-M+Kӕ+K\$=v69!K[NH'ZXVOD;&MBFnTfoҝK0NU2-DQn\$ e%@-\0,\0Չ%-ZYt)f*+>B8f*EwKQ8N<B\\Kv\\;7tM2oLGNe2G@V(@ @\0001\0n0\04\0g8@\0 pZ8P@\rN\$\0l\0+8\04\0dz@NP\0qS'@ml@N6F\0qiӌ@7\0l\0q|Ā @\0007Z9ps=Nr99/79 9S.Zo8sg?N.\0s9q4\0S'GP:.t|Y'N.\0m8Zo 8N:8s @\r6MA:ud3g*NkI9ד'GNg\0`\0gΠ8t03RN8\0d\0rΠ 'aN*:ryS'4\0000\0k;:sssg_Nh;vqyӜ,N:Ns`\rрc6\0st#3(Ŝ:jw9sͳ'8Ρ\0uͳH~i;rYӾN\r:riNa\n\0y\\Yǧ7O -;w\rgb\0jsTٓg#̞9t\0@N:JryS ĀN.+8ڀI۝;r@\r:bst ᓓ'SW9sޓ֧fNC;sڳ0JM=jrsO{6=rI\099z8 'DNܞ9tSOW;|i瓛pE;yl \r'N\0e>sy'Sτk<zx'Ov<}џg:F| gNa>Jr<iIOO<{iN:m<js'n-t9V|Ti䧴N#9g >qy'9Bw4S3;{Dݳ'T[9y\03'Zc9V~)-NI%>:uiNm<D!O\\:s'6-:v3ߧq%h\0}9'P@<{H\nP4A:y\0˳@dk=t 3gO?NuZ SQ=yFN?r9sYι>&s9Q}:xڄ%4 c};u3t=vMHD\0:JrS/Pi:^߳ͭλ;~z-Ӵ0:q(\$N4U<J93/Oơq=j~'LU;<ڄӝrO:*ͳ᧘()>XУ=uZ4&:t\0hSOB\"y˴5'φ9:{\n\0p@sTSg8N-?Vv<ZS ΡY@rY3'P|>6\r蓽'oϪWCRz hO\0M9s|ySP\0m?:)ʴ2j@}zN➛9v\n@N? -gP7!@q])̔='P;~e\0s'U؟Brvy'N9by4\n֧n9BZq*Sg7S9-\0I'/Η;9{DS&OWD|Tj\"P*a;4'7d8 3gѓ=2r93hQ%Frs\0tDώaBx N08- _K4Y>ޅZ,k(UяD\r0hQE:S\n3X= (9O;#;rZ\0gЫ'D۔_OhYGj͓,NnO=bx]9TUPQ @6q\$z~I@^ i(Dʀ})4d)PTT4^\r<)>NFΉ-!:4NP.>{(wCI3'&R!cFS}O>*Y\rhΗXq\rZSgN;IE=!3t:PHDUt=V#Mr\rYTK\0ԡo8ySgNWGmTC`P#E~} ZM>KzCr}\$9sO%9khJQӤgQ/@P#Hʍ\nDPK5F5\0%'Q٠EsOS>Vm;Th^B -4<Qs)>€PB};& NLgDmyt\\K\"vSIiL2@BsE U:tUT(MCS)k=sE)Y۔bvR:*|3)=ˢ:2|\$'PU=:y i9Q L\"\nt((|҂;\"uUsR\0z< /mbʱPze1XG/fb 7)TYZ'~}^,O:b8JiY bى5iYL\"V\"5cR@Jl4<)SiMn;nCf:S bl 5/)LB` U~y@S1%\\8Jla Z4Z֩1_&:6-=#P^SJ:n\r)^_ y7~Wt]*tf \"mINm4i` lw<]pk4~]PZi4%L2FrD 0&KL ,3V-X->6SV <85Z i312eۃTGQKbJ P3ntµQb 4DܱWkf+YSaU͋yvp\0¯&;P16.\rjbb;\0\0Iٕ4`ǡT=&Lf͚6\0\0EmDJр)'\$83;,B[`38iS`n ٻ\0V\"\0sk1@״Os_U f/afWG~}5m#يӧJ&\"\0aj\rTMPҤjw#ؙ6cC!ޯ}#M>\n:!SV_RfR]ße 3U&Tby`U8OC˖\rLBx3i3f&J2'\nj;i<}\0C'8˧@+J,nC0DW\$ǥ>wVXVS|hM V\"I'ĩ:Vh6֎, /f\n3Val^kMOY-/Z)b \rM< 0&a ڣ\0M_?Q'pKCqTŋp ߴvV{TZi5OؗFf!U~CeURCH \n%ShUU*.EM)ǵCRX5P\$&\r\n0QUK7UJ*/jb',(u?_UWkQj4i<g\nfU8^0XI []M5SxSJZɰ<UfǪhCRU9ЪDfpMj#46jd`=Y6abV[dUpU7U\\DVUbqMUW1ąsV֭T* ߩTҝK15e2Y&́[PQ&\0CV~SrcQ&%dL.vQd eX^p!3U\"nBTa}cT\rx@ZcuTƎ*BWV4/uQL]bZhSIՃUF\nUB|UfXUU{깕WZլ fՋ=V cy*ƌjSoY\n-\nl+d<5a}ewM}Z:ua'bVb07Yefj5ej\"(EW/U* /VY­=ek0ց[VZ a}կC0'rc26q ڷYC!f\riգIWug\nlMjͬZZAjUt_WbU3թ6a:v+UU&0kd0\rg\nZYg\nڗV\0&V6\rRj5k{Oxw+aT\n\rB2m<*A1TRÕ؎SFT\rbzxK+xAU:p\nTV3 \ro cӬ{Zڷ5q:VDEMjqZ\nVQfuY\"U~\\fSudVbeV\";7;0gJ0٫;Fa³YQY%tu\n3euh7U֑hƥif~+֚\rZq|K\"i, ռVu5kQC\\\\VeFqzʕ+֓]ik,+3[5t:U*C]⶜\n,*SBk[nm5W3y CkqCh6̙|%`}@@\$׺-X:sOv\0pwWFV9\r30JW&]|\rDPH\0V*00*֌`W\r~Wӕ̪R9:5̱Xa~;p-&_8SɈO{Ne{?V\0N\rp\nmaWgO ݀\0Lɜ\rg`vx,Y Y` )5ZΡ~}yY/\0l1fmC38'}_&:913, .N 4@inO@y`XU= XlGaP<<\nhTCkBu{} ݬXOfl;Yaګ9=u*X&|,@Y+b\">I쪳ay\\)Uu9\nzj&`uLQ, aUS\nv#lH;b6ՊZXbOձ儦1l\\8~& 5Sz޺P042;)~\\Xg~Umu-kX۰caYvPplqXb°V-:Jg% T<tVUf&LO5``H_cSWϨFM؈bcӺv}vs xrȓ3ڋ5 Il\$*Bn@1p'Oa9'lhPm2{64(mOfCVle,zUVuYT?J^+:0\"0'cU(WTh7X>eW}I5eX1jYYzN\r{#vZkA\0\rT5=Mɣ UŮ^L %:;Zf\$&HL\n*9Uh9_Սk[a|A[aUhvU\r\"6*TDeRr3s\r@RLJ}5V7Y=eu\n;,ٻ ` 7o)Qy\nN2~Fj=}-T^gJ\"@JOZ \nj@i;2+Aܲ*{;ꬳC: L\"k\0+D=[L ճd\r2oe`=wjԬ` 2q5BE\nbsR=T:Pl~NKfYYYʦi`{-fblvoc|=t ALrV+ٿjM;XAY;[H\rpͫ-gYm1Ʊ_Tz 9X aw@+2c^\". \nf`{]cجs`O\03nJ2mfڂ&ξ[D-Aj-X֎tU5Cjg%Sbcډ1\n;b YV~a1jݝPv08`L햒dw*| i˵EkVY(Ȣ06 @!Mkͬ-\"G\0(PSQW3s@0 ŭU~9\$#A:;*Yh-n[lsȠ  !5 1ɀ.# 3ֿE<J\\'0l\"40?\0001d\0^\nĴg<\0\\ TV@Y&4%;\"]m\nlr¼/\0kl e!Kl)x{g-\08l٨P6[@\0bཇacQ6AT )Ԑ[XmX7m-Tomnʹe6-hmKnQm[SmKoa{ m-Ֆm[DmhYmmA{)\$@mڐIېI!e[k-ۚnJImomIѭۗn\rj-RnV0V-۟nf-IVm]m-\$-[·Qo&܌+u-RnIS oV[ڷonލ{m-qVmmv-K}ȷo]|Э巧oڽ[zopMk{\05|g[pZvE\0[a7oܵev\r'm6 sD˅\0In\\2Yn;y \0De4Lop59\nr4pf⽿ˁ(Amq*S&[D1p4ۆ7\n%Oo 7-\\O<2n2]q;t2nz\0C&vmɸq8[6hdE mBE{v.L\\?rb]K#n+\\qrrv=W\$g\\r —!r(m\\ nț-nܫkr:k6.e[_s6-ۘW3nbYo>ܭۏ73nK-Ycm>e{o3q\\ qJ}{78i⹫sE{w8nֹrMzHw8n{qU뜗=vsϫw=\"#\09t0C8vLkS.~,pnitҌۥ(+w<.p:7Lg8\\>*;7HN.ssۧ7A t.kL.N:t] ӹDuԋ.NotT.odt{V.N?u*{<M9b+Z.VuL⻮w\\.NUi8=k3zu]w`.Nhv1 ݊Y:Jd.ݒ?vR|˳wf\r(/bdkg\\el˰\$i\0@ivqK&@]&\0ݝkW8vj\nn]wB5k ]ƻ{s+wpe_>=Y3ٻwnt{ӌn]仏Gj{s7Y.P@vݹw~nҲ_tx{v( u2Lk^x6l×g\0 Ht{]tVHsGOOx\ru\$:gl^ uzX u\rWnnx]yJT+-ۻyJ,[c/OxFr;wf]yVk.0wի.T< ˷n.Q;x\0=pz&\0v\$;7xV]CczV}Wn\nޚzzTC#w[woG5w}ީ̷'}z e6 psk_]pK ]k6Ζ}t9lx[\rl:WWC\0Ou\rsXe0~OA_]2s WCT\rHuX\0Kk']Z \0ض]V{XBu}{f\$xy_JtLjL(Y%[2t7VWgFI!PY]%\nv *TBZ.Wš):Zf%YUVZ7:VAfh*ClU\\ʅU|ogׄ)\\;{ڵ|okXMĚ7a`\nh\$)or1k_\n{!>{4@\nрDV^K5Rewcp2^05K7a4Wwf-p\na\\ƫWd-!E*_}.-d۪XGɂ8^0ZJ]7Xp!Tf\rh`͗X|겫+VY\ryk}mmJ1%W>s鷶a1~K۷:Vv+{rdFJ5_0 !?*ڬy9Z Do\nPN8[!U筑Y ve&`F o207g,u-KXꇈ!161 6Ρj,_CQE{\rچTzL[3k{fBRk ijr¨d!YnóES'h<fթV\nt` )mlz%Qƣj\$=zii/4[ ŊJj2Z.o<s6E+_wHZ}Ύ0;0-`mޟe#`r<jp٭g6 HP& &\0005q<\\#~ ͥ-3#\$2_`(S\0'8 .Q`pK̇j&0N~a\$*\"Rl0 qpP7Ւz\0`3^`}%ۺy`x:\$PUS6x<F`+~=AV\0=6߃{Υu_\"r\0¤lN@(D\rp1+@UF7/Mb.\${C0`L6\$.K;]m@gka`P w MT6sۻPp6[^p\0/8-N\nl&AE⚺!\$G\n\$#ATL#}v酌 Ei0;,,pF,Y@?^[H3ø.JH9_\n*T}HFZp fbajQ 0ڟ t~tXxd;h06EӆlgA-C\r5Oad`'6k\\ x8-FVpabe@ɪoQ0Ef\"B;*nAm*p,;u@a6RqdSL.l=cf,Qf!-g2dͣ&Sw;`iN`v \0\"R va!6eHQOO0>!ݾ4Xb+`{;uwbR ȚT;ߎCPV#4)]\r7lcdb|B>ąKHxbď\r@ėlB%,8bYI% 3Ġ a/q!q\rh2^&bt\0Q[+8Êpȍ|YN'\0A6aa,x%\$8hAyqnRAM@RqC\"\n}&bwtptvib|<WBf`?%'tW/dmLObq`H5# ]F\r.+*oB8EŨݣ>W~1O+<#\003غ`X\r@00]ypDë`apR[+uP @;: -γ\0f8ec lUv0e6\0=bӇ4х(\$0yG0<d@ +#AKo#.H1jPg/QGS5%VҎbt\0TLJܱƉ8JppEmr5`9MC\0_'\$#E!\\a)sې1\0rnqe7\nNt#Yf`@FqLz4Լo%[Z Ď\" gqMIV靿f)<]o!'ʗ@VϦ\0");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6\0\0\0000PLTE\0\0\0+NvYtssuIJ/.C\0\0\0tRNS\0@f\0\0\0 pHYs\0\0 \0\0 \0\0\0IDAT8ՔN@El϶p6G.\$=> w5r}z7>P#\$Kj7ݶ?4mt&~3!00^Af0\",*4oEX(*Y 6 PcOW܊mr0~/L\rXj #mjC]Gm\0}ߑuA9X\n8VY+D#iqnKQ8J1Q6Y0`PbQ\\h~>:pSɀGEQ=I{*327\neLB~/R(\$) HQni6J <-.wɪjVmm?SHvƩ\0^q)]U92,;Ǎ'p!X˃LD./wR wdr2Ƥ4[=E5S+c\0\0\0\0IENDB`";}exit;}if($_GET["script"]=="version"){$p=get_temp_dir()."/adminer.version";@unlink($p);$r=file_open_lock($p);if($r)file_write_unlock($r,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}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"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",HTTPS,true);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$cd);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",'15');function
lang($v,$Nf=null){if(is_string($v)){$Rg=array_search($v,get_translations("en"));if($Rg!==false)$v=$Rg;}$wa=func_get_args();$wa[0]=Lang::$translations[$v]?:$v;return
call_user_func_array('Adminer\lang_format',$wa);}function
lang_format($hj,$Nf=null){if(is_array($hj)){$Rg=($Nf==1?0:(LANG=='cs'||LANG=='sk'?($Nf&&$Nf<5?1:2):(LANG=='fr'?(!$Nf?0:1):(LANG=='pl'?($Nf%10>1&&$Nf%10<5&&$Nf/10%10!=1?1:2):(LANG=='sl'?($Nf%100==1?0:($Nf%100==2?1:($Nf%100==3||$Nf%100==4?2:3))):(LANG=='lt'?($Nf%10==1&&$Nf%100!=11?0:($Nf%10>1&&$Nf/10%10!=1?1:2)):(LANG=='lv'?($Nf%10==1&&$Nf%100!=11?0:($Nf?1:2)):(in_array(LANG,array('bs','ru','sr','uk'))?($Nf%10==1&&$Nf%100!=11?0:($Nf%10>1&&$Nf%10<5&&$Nf/10%10!=1?1:2)):1))))))));$hj=$hj[$Rg];}$hj=str_replace("'",'',$hj);$wa=func_get_args();array_shift($wa);$od=str_replace("%d","%s",$hj);if($od!=$hj)$wa[0]=format_number($Nf);return
vsprintf($od,$wa);}function
langs(){return
array('en'=>'English','ar'=>'العربية','bg'=>'Български','bn'=>'বাংলা','bs'=>'Bosanski','ca'=>'Català','cs'=>'Čeština','da'=>'Dansk','de'=>'Deutsch','el'=>'Ελληνικά','es'=>'Español','et'=>'Eesti','fa'=>'فارسی','fi'=>'Suomi','fr'=>'Français','gl'=>'Galego','he'=>'עברית','hi'=>'हिन्दी','hu'=>'Magyar','id'=>'Bahasa Indonesia','it'=>'Italiano','ja'=>'日本語','ka'=>'ქართული','ko'=>'한국어','lt'=>'Lietuvių','lv'=>'Latviešu','ms'=>'Bahasa Melayu','nl'=>'Nederlands','no'=>'Norsk','pl'=>'Polski','pt'=>'Português','pt-br'=>'Português (Brazil)','ro'=>'Limba Română','ru'=>'Русский','sk'=>'Slovenčina','sl'=>'Slovenski','sr'=>'Српски','sv'=>'Svenska','ta'=>'த‌மிழ்','th'=>'ภาษาไทย','tr'=>'Türkçe','uk'=>'Українська','uz'=>'Oʻzbekcha','vi'=>'Tiếng Việt','zh'=>'简体中文','zh-tw'=>'繁體中文',);}function
switch_lang(){echo"<form action='' method='post'>\n<div id='lang'>","<label>".lang(21).": ".html_select("lang",langs(),LANG,"this.form.submit();")."</label>"," <input type='submit' value='".lang(22)."' class='hidden'>\n",input_token(),"</div>\n</form>\n";}if(isset($_POST["lang"])&&verify_token()){cookie("adminer_lang",$_POST["lang"]);$_SESSION["lang"]=$_POST["lang"];redirect(remove_from_uri());}$ba="en";if(idx(langs(),$_COOKIE["adminer_lang"])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ba=$_COOKIE["adminer_lang"];}elseif(idx(langs(),$_SESSION["lang"]))$ba=$_SESSION["lang"];else{$ja=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$df,PREG_SET_ORDER);foreach($df
as$A)$ja[$A[1]]=(isset($A[3])?$A[3]:1);arsort($ja);foreach($ja
as$y=>$hh){if(idx(langs(),$y)){$ba=$y;break;}$y=preg_replace('~-.*~','',$y);if(!isset($ja[$y])&&idx(langs(),$y)){$ba=$y;break;}}}define('Adminer\LANG',$ba);class
Lang{static$translations;}Lang::$translations=(array)$_SESSION["translations"];if($_SESSION["translations_version"]!=LANG.
3043401755){Lang::$translations=array();$_SESSION["translations_version"]=LANG.
3043401755;}if(!Lang::$translations){Lang::$translations=get_translations(LANG);$_SESSION["translations"]=Lang::$translations;}function
get_translations($Ke){switch($Ke){case"en":$f="% (n0Q :\r @a0p(a<MSl\\;\\zNb#FCyfn7Y h5\r1rNQ <ΰC|~\n\$u\rZhsN(fa (L,7&sL \n'CΗt{:Z\rcG 9\0Qf 4N\0;Nl>\"d0!CDFPVG7Efq\nuJ90ar#u™DC,/d\n&sSsu 9GHMw=l8-PȂ!z9#dɍ.\"f)j J\nN,\r:0Cp΂L*<(CX#|SF kzc9!L\r\0# O7t xk\nO@(C\"1ÛR;cBġ#\0@`@#B3:xKȬ,}BC ^&#pˮ3(ơ6 [{?\$X:k+x šV=45#(.\\\n젡*,1-odcxؒKB]#lR⫣-+\\/.0H@; 7\\U\\`P:U&:30)4Nx;\nTC\"}:8.9`PL2+-`#cofފ\"`@N|7rݫz^eg kdJ9r()ِNkP+3-JѸ(6 <o:ƴٱ؄)@8T05lMW0v74- ;ky0*զ}oK, dLƼA06Lı?z. ؓ3`3 P/02hSw\"|u1{h<ܟ\r #PІLyX\0S8rP\r\n2b\rQ=H5*ú\np)@y<! 9STQsW\n\r6JdPIn#}\"Fap82TbR\nIJ)e0%J}PD(q:nyGFQ~D,0b^8e `!f'NHa[P%`zA=d!S\rd\$0Wi`xb` AhGvJ\0P B!8LA5.X0B6n:sNMI 5dY3l 1(I<C(,\rr@lF\0Ny:`ཌྷ2P@ڱ`|\rb:Zfi\" ) kctB `NYߴB#ĀD`H]t%Q2XaW u\$*ړ2B d6 dLCl\r\\|¢y1q4)lPEb{&T#G91Y^64duOCDHO36FK#*KFt[y9dfDU¬0g7\$0p=^KA<'\0 A\nX@(LN`{Ri\nNdhO2f<80 I#ߑfoU5U9gJj/\\2fhM!K̟ɦBOMIJRlI8xK5\$IIқC2C8h2ZXjMR_L]6%2IztlD\\%|\nk#>.lmz!6IZ+L+Qe id& |d0x+!\\rWbIElʺd%v3! p]br.0W9Zȉ٫IXʍq:@k*c\nV\\LM\n!AL x J4)uw@#E \0\n\\d;2-(Q9+ExKPLw` E]M=huw4̻Dya{Ѻw_\06_iALv:ئܦbQrՅW(Ve [}4ep!f T{JW[\n p}{eSBLQdzi\nh lf ^\\WG|!\0gKV!\\\$,+yjg;qA0)r-љS\rWOֻf-`jn-d\\X@@M4\$lݪc; %]g4P| W, nz<{,`7\n|3/l^GBmK3uDV3GmP_O8WOBO^3zkt\nfNyry\ns`~NMy?w1yX\"V3!2>9Cl뺋dMċU/؆8\0K\nȯgm#XhoϚiɦť ł>\n`ne@LL<nϬ#xM\0 Dn_/80JI\$h tcN'f=. I \"(@ddhi2aKPj2NXr!aoDJ4븩¾dlro``n0P pqp񐺒0n \r[dȎ(] Ye\r0k \rpOA0'@WQE.+\$t\nM̴0l?1g тˆ\\\$Cyc\"\n)pi\n)\n; d\$ #Gj^ލ\$Nj\rb6/͑PcXNo\"'{1c qZ>H/\$^X\rV`o#~6g\r ǜ9d2hG\nZ\\8bp;J`ԏwX\$Ri^%pg 8\r2=رB\n9Q 5(<Cm#'EV/&’Z;KF<Ғ(ŰOZ+Y, !!Xb!r!X^.0i\n,/q+A-pFE S0Vm2kQJEt @ 3\\f49 6M~\$*X&R 05ʚ@pPo#ITB3v Fh*ƄTk`(Cn\0";break;case"ar":$f="% )l* C(Xl\"qd+aN.6d^\"(<el V&,lS\nA#RNd|X\n FC1l7`jR[-sa_Nvf|I7FS ;918+[x]š'\$g)EAxDt\n\"3?C,̅Jٷdj=v=I ,΢A7i6LS: h4NF~.5/LZuJ-xk莿bĔ*xB4: I (FS R2P7\rnH7(9\r@\";\"{9#,d8/i ,PB̚R:6rޞG:\n̟h\\ArٰhA\\0b%\\\"BUm Plp-\"<Aqp *+DM0bL*% 6mT\$hBP6eRB,I+X]5NKZm%fW,IL# DA[1Q1n \0cE#VKY\\sC XнD49Ax^;paX4J3(ux\r* (\r#x|[@U*TM=>SAD%UZ34u`U;%vZ \$P0Cu%H!RK:,ҮK%n&9e4(JSP2\" 0:0\n,LR\\ i*0kSԔU\nJJS=UsY@VZ%.6m\r7B&|ͤ˜&pZos]BS/ES:SV[\\ݶM\\)ߴ\rcZ{g;95'ėN4}kX˩Hd(VO.7Z1Q;f \r9%t%k\"yc hAp 3 \"sD7Ceet7-6,`TlfpNH/3\rB)lW+\0PT\r)EAif`o 9p8a CF@u;9Pd[fqt%X\r٠6bCQi@VnDK1p*8w/~J%F*>Q\01JĒU6aIi[JEt \0M/vMVQxкb^+zu\n\"8\"4aa\$6Xtʄ-ua\rl=(BX\\툊3rn:GfP_|bp:P\"T!9l`ѹ:Ԝ e_7yDF\$qLy/!Tr@p\04GM#>4uR\$7J /98*<(7CJ' )*\"-X1SI:\\9 a8H%#N1\0׀ (L@!0VgJVtIR\$شgdTjmQhMIcl\$*I\"hMI=\npj0tviCR@#\"y:8(*2\$\r~Z[Dq/vHMWD\0¡.l<FGq!F@\"\$\\l5Z)l'8H2(<57Y\n=U%|\0uH,&`zP(A֜h*6h_D,*+f%-̉B&\$@\n 8PT B@.uAX~,Ar)!Vm2W<-{`L]2w\r ]'#Xf7UpZ\r%ZCF,ްoselgd+*F%Qj+c+?am \nW;o@>7 !ZwpcHn,ELu yH#Lٔ9Y\"f2>EIl?В6\na=78SAds\naziA07A? Τ ,+ց ;8N\"\r-ÒWC=Hؐ]B^)9g@:)Υx\\\\nd;^ƓO Y fJSꛦFc\$YݪP8c\rd!R<ko.QUת F\">2pV AV\\RQ;/} B) p` @\")EAa `^YK0ҝSzdubo-\0@(XuHBx],O3el3G6`Mq`ٯ#.v-\$\$@\\&^pO sI\"1)(r/\0nfH\n\"K%BΎV%Ie,(B6\"TP^R440&!%bB`%cx')AVNc1/%ĺzpdLNM&XVIM(*g\0yg7\rop\"I.\rAc\r#cNɴg %\0002Q-zP&i\$fVKd0:6alNHBx&DńoeRMdm4LQ\\>FA.Qx»&0 J[\r\r\ro-@?BЮ[0ͪ\rsJ+UT!ݭU0؀G@-xBK1x1dq܁HR'y H@\0V'n`\\톼gOĖvR15)l \"(2brfD&g&&K&~Djj؄~HNIp!@ tC<eLP0fsB\\*/+n 1ш1(\r-*B])G<4\n<rOB[+R6\$\$w%'βBТUǂ˜#'\n2v%.!1@3Pd!Q4q4~ro\$ro5H#.q26(R8eI \n'B w&|cv21 @R>>\r70ܾB\$(3a5=<3tЏ8vs@ԣkS5B\r?\$>0&;~'2 9%sA7tBS<t/?#Ct RP7<jK>B-'AE#/d XB/\0Tf:_FF4z\rtFn.ь [H0%(J3J=V@T)Trg\$j\\tʁCL&G޽SJpθk /Ne+D҇N\n(;Ώ 2#:2F@Sch1Zq4>@ɔ3ϮiЋ!+RCI\$]h,޺bp'U6\rV GVZn# ̌\$\0&f\npK\$\r 1%t>LP ƢK&\$ \r5gl7GZ\";@P`DUɔSQr@挮a[nkZ2(\nOqATBIy2K2Z+_.BWJBeVKJ`%X(p:8D\0 |XnK%eg{/DxpBG uChcb\$bCn\$1sjVKIMY\$VSY^6j\$g8vƸ.3dd\"R\"4.\"Ml^+u:@@FCPG\npM\0@ t\n`";break;case"bg":$f="% )h-Z(6Q\rA| P\rAtX4P) EVLh.du\r4eܞ/-O!AH# 8:ʥ4lcZ2͠.(\nY(\$\$1`(`1 ƃQp9\$+JlYhmrF @#e&a9kG:~drUIzay2ƁѢ^ЦGeS2uJ\\nEW&oI\\qՎ=rBz~̲7Fp0bv%Èk;\rlJK=/\0X+ĺL=\$\n\r\r63L[ʏ;qlq*oYσhA9sr] ˈƹ\0*X7p@2C9&b : #P x9x+P9ȯ&G\$N\\K菸 ;=J&;GmZ7t\$IBҲ-S<o`\"%C ˈ>FRJF̦Yl Ě'm^qskR6YY1>ǔki(S:+^Bf6+2\rH* 284c0c9C8@0߲ܻ/:\rx냄p8NSy\r\r0C@:td 7*Ҹp_dJ|6U3Jl4px!Z3\0W.t,Q\0i(#鮪N\nE7]o=r#\"\n)5,P0Cv\"0Ʒ({Jk~hs6\"^h H.\ròIYPۅ]G&Zҳ1\rr;}qթH]ܒ\n!31Eg'Uj sZ1;vuuݮ֋ ֥5%#>Rzr>/ yB\\)F!\$甃;qK@!/ZkA! ̣1M\rBK5DOP~p6p}Mo6U1'8G1!+D\0d IwXPOlP!C[q1X@b9%CV\0m36iuq,=)8CSjG0|ڈf\r!IY4X _JJ>Ca ])a,\$<FzY(G`tNuM) UU0w%y#?Fk1rS\r28EF\"=r-5MNXϑ yL\\ieА.+lͷFE; N39v)yg1A@OUG\$‘R4^N')'*“S#L@E@I1# 2vRk/f,͚pΙ>L2:5|[i3re*Uf>\$N^xX\n',,\\RK0HgFԨ\\*UL̩24f &vY佗y4hґȉ1Tng# @1Oic^bi/@-ScM\\TQJ=4\rCHl\r1)m 80i}N aa:0<b`1U+P 4&>dox%,m_@P/2u\0(+`\n}:Y/oc4kC=c2J\0Pg9)l\"G^>&f%FsM*U%+Cc8&*Hc\r&Qj8c 2,2%,ChZ1\"8X<t\"4{,q UI'Ps: z W Л:v'2 洝Ӟ.S#O ^VJ^u\n;B5q嘘\rQޟٴla|(zfDJgd{.t h8AFgnhQMK-0B<*H>'қ,b .;ܧsн*\"hSUޛI!F DAX.UTU/j`fZ)t3ScZ \rz!F,h2a60,\rOHJPwsvƞl^HNxƪN,ZCg״861D _8\n{^P;UKIˀ.zNvo:)ٺZ]sˤfޒw\\m{;+\\p3)1p3r*ޥP\nF+|:d81(ukxaFژ(J_v AM.\"uz1yPV7lAFx@yp 4g:oÌzBB f\0\r\nl2m(;\$2E(c><\$XFlxrJڥ*0nkQO72}ĈLvoAb``\rb\ncLKcT@ '9!B6z0HR# R4@.@(RkG}:t+uqU-܇rl(2\0 \n`\0\r%qTLMDeb&\"HځG.r^\0rLrgDD^\$, 6ŽO1lQ@(PJx\rA\rܭ#Us-A)p?\\2n/)19/fr[dVB3qqѤܑ2V6'\"v[hf7[A<,x(oYNQ#.T O \$&*07Ɇ1 K\rL'i\\l\"1VGAg6:(К>D&Pk1Ft~߭lfģbH(+V1ߏ\"\"),tgX\rX=#+BpZ2(8S-R·\r1#1R(In ZB0Y1@͌YwS0x(\0V42\\pÒB6ʌdrں-w#5l|Ѓ(~O>]2\n]#~m bAB BW\\~>Lf . \\I 0Xr0gVq+>c棔ষ01Sh\$524m/92ӧs\"ž?+?+q0BI+!2^D+0E0]C+0#)>tq&83\nEE(!L? ]\"huDG1GoyIGIAIu\"(U@0)1|\\_CBb;c[\nmoK GGG4C1FTv+CHJvHdaKTlK>6M@w:gsW ,*3T Ft+i!zc 2P-r2d*\\Vp hR\\Ҋ0UUMNC-\r'A?TIE\"ʚ[ePyBck3TWF1*oPLȀs?uNq]K^751>_\"9NOYhaV]abb26~s#{z\$@@pJ*\"ot1uNp_#fȫK[vO\$16gaaagi.\\yPyxnAI6] \"֪T'E%lrgFf7o.\"BHZhZYm\$COug ?uwol4ZBVb96{hhǽirI!v3q6wAp)7-c71_+S?u+c\\q2tvkhjRmOalse \0֩cPz_by0yjlLyQ\ny pz`%  p%_q ue ?] [!{/~wa];j~aQx˛]4|3c6QNVNW55Ӏ7| K2\"nr-L:mCVtIDG\n\n-B.ֻ;BɈ:2rG*ZP|ps@y`t8C:Ɍufi\rV-c#H4^;mu Rb*T1\\\0\np).qWcqUҌ]:!B,<y/x%E֯*JIjU ~'Zr)yT+G6(/YfW+3kWaTQ~!,l<p9FcI\0VuU>FːW19Y:4NQ3 /yo؛5X:m\$+!:#VF\\Α l7esT͙v3COрV2=ssWNkɺonH8'0)H!:H|٤pڳe0#ouM( zcoM-hT4ruDS\\xĨb U\"vVcQ\rް Ò";break;case"bn":$f="% )Ut<d sNb\nda\n 6#k:jKD)RA%4}O&S+&e<Jаy#Fj4IjhjV\0B`ULcqؽ2`S4C- dOTSTLZ(JyBHWβt|,G8rgu\$)k2~\n\$g#)eӫf\nVUN(]>uL] q:jtZut*#w=vp=\r?JtH;:B6cz*\n(:O-*X#ps{B PB/j{BZ-INJGED!QY\$IMV.<SPw@H<ٗxm^&Hۼ4Ě6ش|/\"AjU<#*Io>)2,p,6IQI4ϻAQU8\$XGKp\n[+l\\OjxIH<OJK,ƒ9uhCVx3x+u ,7b5VIuk\\9\\;MSB/vBK[ܻe>SzAT\n4Қ\$[cBa*Adި7 F4dNucD{Dݑvbn)uhPqSI.N2Yg:\n-A-}P# 4(`Vch<i\n|.oCfs X@480z\r8a^\\0\rp^88ØΌxDȌ=G5xf:EZAh1\nj7ӿ3?/8ZA:DdVT1&ˋ]9U&QD50J2}8O?[K{\\PDJ&Ҍ ({/}'1Tہ+*|\"FHq|=P\"OE\\%(~t' Zk] Pػ.f f dOl,@Brt@[l|)¨8\r\0 Ne*c\0B`-J1X\"ƊARM*9(2nHt3iޢ,z˵EbM<|{N/4O\$JeXOXZ2Ddlr>Б>Eli͜4F}VeA:+U\rf!Y<>>Ny'R/wcVRJƓ!sGQ-I)e\rʍٺnqX=)s헟U\\ZKzi|]ph2i'2I#n\\S]5HYG0e-:< cRސ_n4%St6b/_\\4\\)o+4@jaoRJ\$ÙVdI\rUc9հ\\B7+kYf.-k}:gFsd\"\rM]䩸7\nKq=ȹ7*ܻq:Dxn !4ۗTJHR(LioRuܾYQ]HuPUvx4O|%[t_WM.vCy\0iD;N+q99'(ŔsnuϺ@v:p\n/5LKqi+Q]+ni\$,5}Yh&=g6&)?5=\\xwJ™%Y>A8-5̗y\0Hȡ' WX0ۖ,]H\n/COiK?! PYMg>R6LR>˦=A[,é5r49^ʣϓΔ`Q|tcW+s\\1뿖S~ws*GNT\np@˜RqF&N\niSd;Ǜ;yjcj#\n?PfO'2!Ar&GW.էWV^ZOcܤ3&{n\n,\\\"⛠鴲nj;\$;\nPÈAb`v/;ȭATh \n<)B6)6\rì\rMAz\"K#Q4XїSK\$@b\n#Dcԣl@ߨp |o9[ /PRQ+#R^fű_,5`goe@CzK3,Z'?'UBZA&N̽,OBn?.ȘC\"ClޫWm(z|NҮIgD\$)JSn]|\nb)ie>tZ/<]\r>_.zie#e2<2\"k.\"Ύ̼fzثHx/>#bPcJwŐ'CxM%N4]J>Dm>BC M)f.E1K@Žj.c@e)8ial(lȰ,ϼݤfEͤ`7#z(ZdTS\0TB+kF* ێI܄DkM.AˇCtL#j/(n\0eDG\0+nad0~&>cz(e,i2񚓨\\+-p^_EB/\\tl}܌,YTJ0 A\r\r,B\0(\$d)Uc~kH2Z FRf\\O \n`6olvddcpe@'OZmjP6A(:ZfnP|\$dLk :>))QxJ/A\r+ \0=b1)РҨW,+B+%2a/,p2J4dFF|\0idP&TNr2nO2RhGRl)?5 , 3c3.sY)2eQʩ\"EB0. Ĥth#*?\$f~`\nNToZsօGCeDg>I|CN1\"Ӭeڔ%>gQ\"01so4Ss\"n}\"'#DZ3 C2CtT>}kC>nPM)CE:BB<CE4wt{Iة<+Hp-Ctx)*1ұI>&t*/\$T ZO(FfE\"P72ԃzNPdvHIlhuNh\\4릾/\n4a5'7P.J'<jQS\$5CJt %د4` LI\"@iBG5H IsHqS1IP̰N č9GRGVVEJiSR{K0UVFMEL74sWWȎu̔[/f9GS^ ޹7eZ\\tl?5RuCi:ø]M#C/raaRHa \\UaҖbbQ+/2v3J6_1TP+d4ZKfdoE[|a6i7UZOcV_)L>Z'd5lZu[uj+!~rVDv&,k\$^1&x߯{k`І/zPE숎:^g2nk܃bj5JFI\\N{;MWRr TKZt.fh{rAJiuH7b{jK#(wpg]wDjn/+_\"5'w*I{Puy7a-o@|7Zbu=n/lFN0dVK0ir7zqBDdyteyuzsj>z,}[џ|`.\$j7I/x3+hbZt#;I0o8_I6P^8ZxM+\0MظlG6Bv<j(0XOm~JvI{C9%&mbG|d{iCAWs}u{xQ^̱X2W/^'U85q M';^ݑ\ruxctg\$D1/9x7[Gd“~dy/2G=sa:Fx)]Uw99+y|9gdۚ˚YEj#ٷheH1ux#8}\$\\2UF)㹑vyxSDI\r#RKُFR9eY0'H*W8DVI3dlSds*c<PhYQse6jyy4ץ0fo:[Q:^*C{\$\ryk*ElvoF:g@r' ϧKg{.{PվiL&`nsxi# \npf_p8eZzK\\#oN6~yUGQb)bdR)4JJIҩKs٭]{ԒmAU\$_\0ZuXzԹtnE Ɣp#l픏`Jv\riv̀j:ߣ@'D\n+Hf0~|bqstRe%J2yq/`Y|ݾIu*#6-ٍK;B-]v5KMʾV-` [#\n\\ 'kB7xwgZgtU6 ka=L; UB(VAW@\n[ͥ?5R|EE\\\rnTGM\$p6<=hmC<JI1+M0tmb<eǓds8\"Vv-(\rSfɄ0R+bJ@";break;case"bs":$f="% (l0FQt7 a Ng).&0M磱 7JdKia20%9IH)7C@i Cf4(o9Nqi :igcH* A\"PCIrDqe0 >m7ݤSqA9!PtBaX. B2w1{=biTe:Eo;i&a1l2̧;F8pȐ3c{1cMYd2wT/cg̒d9\r;P1,&)BM5Қ֍[;\09K (7n\"9X:8;\"@&H\rprҹht*7:8\n0rO㈦)ʃ? :k8찡mx*\"jk>/x&)|0B87㤱4\nk\$6кJ9A\nƚ- Zpl4\n{s-Ir R9%Q q* #i%4P\$R9qhXHпD49Ax^;فpL\\ {TX9 xDB26H7x\$MҬ2[*Tl0:r:24#S 2X p++T^5NBdrM\$hc-Pk^7H:m)H26E\rb^M\$.ì\"1o\0KF4 CJ< &=7(p:sM\" s@:ߩʌR^5NZnhj6CbiB (؄X薬 R6q}5x0 t\$ 2 sQC`)A%=t۲V–yh#H-#)ZMG.+Ӆ+pviʀumx0 \n5d007mސW\0u˫#NC,F?@X1: @C\rʥu2@i ݛ:Cxf Фo1ˠ73êUNMи0\0:g0RH \0nI\0T7D.e8FP S\ni CIS,2YK0;堦֘rZ\\ۓҺ>\0@c-JCYWjR'2`Y%unVT\\+DcV|\\Q9Ld|9C7&ЏkHR `tE倇b:,\$9 f9.(cVA62ⱯG3%8ax\0h0@_\r&v 3DmR Hi\r\0(JI)\0#VJi!\$J*P㜙<;9}VN@ ܦca. u sʧ\\C\$G:&j2cN034Ds#1Ӥ:Z# 5(JYD[YDfwO-āxCc\n\"T13_Èu9h3!g֊:f2!gb9Uؿ4Y€O\naQ{:ks!R\0k<ĵHC1WZ2u`]B`7X \nn@?\n[ HF\n]'Lh9's4%FԈv!Wy\0U\n @B&2KD\r\n `@(L[ a,X䙈m)/SdRSj-_JyMVIhPMzS!yUV dJ-=lT2w\$ӄ% \$<c*j\rptN: 3Z p9#U>_6Ն_wSH M\0:,s{Eh! U#f4 !M K^E 'nx! LK:bڠV}/q!{A75@%<F3.46f;l ,9<jh/xHin?uΰ0OH\0؎b\r%B<mM_w Yq6y.0xẅ<\$T9{#e:CjX9\$Ef\n!AhZz!i N[K) ޜf8/\0)fVmdaً8.&ʻ괼V'Rp \n~CW ԏMٹ;w]w7=׷p3H\rpP͞ \$ v؍_e}Iv~/xz%>'?H_2)\$vH\rP@ICB382eIWAj\$kgL,/V1\rӀa? P>X J ԉ΄!#NC\0\0&&+R|c [/n-έ M4RѢ`4qOv0NƬnHD?\r@R'G\0 B˦-\"C V qn?\"/?zx &\n\\M\0\rݠN- О ]e\n+QpI ҷ d1/ \r70LJ&N\$%AV Z1OI @Vy % l`QT'\"19O*v\",1l1;Bc%~noNN.\0L pL1&d!\$czl\"<1\"-Q_^'&`fBS-K%\"oP7 *!+\"\0Ԅ1\"SCL{&5FMG%\$)leO1?Dɦ1&)\$&aQ3yrx<SqyRw'd1`>f6mRj/(Rz\"l6+ r,YȤG]O-9Q).QqjF\"f8T`nZϣȆ0S0.J7 \"4R%:\ntx=қ/\"\"ǣ*5i?A3r\"A5C3bhp\r-8n*7Y&#\\9J:Α8C:@ʵ\0 ⓲Į?fš#4\"0P//ss0>3\"5F\"ᐦ5d)mB-@&@F S7\0 /| x{2B\"\rxF&\0'xW0Z_E (f`8fB;Nc0p)t\0fMi@r\$s2ZlQ#DP4\nZ@/F>nqzT\"3O1KOFJv|7|u`\r`Ъ) -A4#z?E84I\r\r\rU\"oUdB?4p\rMntfR#GL\"u\$C\"XeUYMrP;lm5T@!5X)rN'h!N{ N̆o1 wȢs *N< Dx8pPκ\0x2̶sb&m+&Tz6J5u9QF.P`P>!o5_Nݣ\nCD\n) ";break;case"ca":$f="% (m8g3IeLa9 t<NBQ0 6Lsk\r@x4d s#q2T\0Bc@n7Ʀ3x Cf4(i8hTC`uADZs2Χ!c9L7)I&ZMQ)B>MΒc:N!i3M`(Q4D9p\r\$Q5 M]YbscL<7N ]WcEY!,\nNxmoF[7n絆^ 4C8)llމ-ޙB26#r*Z;93(0h7\n;hH ;\"H)KS`@:pNȏ\n4\niŪCJ810((<܈hBDB0<7\"8> )NN97jk>rlr!D3 H4cJN ap=<4 Jj0#\"ST1<R7t(ElQ:#IČ ]rQ2GN40#0z\r8a^\\U\\ |(]2\r dɡ^0Ѻ62ҀPQr0NC08;n52N6N*N_+z @1*DѬBDNK0.M\\z\\̌o0q[7əOX3IPi\\\$6/ގ\r\\ܧCv7'OaMV&I:85fPZ،/\rV20!\0(P.j#8=*\"WX*V2029ɕ%N ]lMP 4SD8P3@Ԫ\"\\w ~r\"]ܸ4(B{ÎPPDPa+~G\rx)I+9RL4nYRJ!4T((lN(0Dxf QTRnj3*LkPOcfy?(;\" LW\0\n)pd*2P-H*8Id茬VVZems\$ks^HF`y\$iH&ИT#\0TsjU#+R&L\n6hU[Kqo. Ò\\%B98p!l+.0:\"đ2lF\"Z*\nmGEJLhKH@a0D',i&̸0iT\"! \$%4'KTd5Jb3|jeLHDJP A>FAF%\r+.x]3i#4λ.W +hD[o(\r%<\rؗ!FA\"^e\nIw\rť,\\Hc\r-V^D*j2BS\nATASp tu#n \n2m~Ii/&*H !h䜣@@˥)wvP CIOQ0˜T \"IJ;ҮD4[6ũdb3&n\$ʥ92yW9@O *REPˉ=h3Z:y#Q4&5RAa 1)9\0\0U\n @氀D0\"ekogL-R8C.Jpk b~@у'\n>x{KRtWj\$>5vI)u!M3v2u%!@(+,\n\nĉO3\naKl*\$JQ)\$(\0007C.I._n}MwPF8iMUD՘U 5:g1(*.TIj#\$TCQT@@u(wΏir\0#[ PEER+]lp僓l!.e0Gz0\03}Oh nn!auM9B@̙\n0T! \$lg/\nRP@7b9(XTnY/\0)?Y.|F_cH20!SR>3Pꃠ.0+f@:+knҺLTl0M&e;\"/=K~:;hUGzi;#xML&61|hDȮn<qnr)HWIaJj/!%\$H@0sIq@2-|B\nIVdm\\oB) bWNThLUaK4 06>R?GO/z]0^..5s\06AAcr^)P n@(I2l3@6/; Pi@S΄\n1&pZS\n-(mDm\r'Bg-`O@U-\r\0hrghRp>qуk0poL\0ԩe4Ebv,bo L\rpNE)  xz&P- o ow\n;c\0a24nc/ \$Mq+ˏl5%Q\04Za\rQ^b3@cTu\$i,)^^30G9 FHl 5Lq,ʤ\nO1@٧Q4m8QP:Xgd\000125d/Omّ%9! NGtcqU'0R В7!arB'U\$5\"#R6hLr#\\xOlD#1!q\"zG \rO2S\$8ǰrvv6推2T䲰\\>qi'!zxzʑ\$P-zE(.2SM( .IE+*S /2Q-R2|bw2-}29vsVo34JcHSR޳V5F u3R/#-ʯڞC4L=\$sDC)R 89,..\n[%;#&-/Q<.Nә\$s=\00jg@UkdFbVfNGD@Wb!InFxfvb.4vb;(\n?8KBŠeJUHKb䠆NkhS~䦦038\$yg쵉@\npHp6{ |xc~tC{_I.IdǾ,/ k+S\$y6lPU,BCHMCh,8c2 +VjCI9m`es+H \nhgV6,hbKpwf5`c@C*iO\r.3Ip5@<5Es< S 55;42%-F<6c5Rf`Nu[U&5bK\nGq\"!\np{\nuaPbF1Bjn Ft5nHLgTUFBBr.&\rSaE>I6v^>QTD F P%eh`eV \0@ t\n`";break;case"cs":$f="% (e8̆*dl7 qraNCyo9 D m\r5hv7 e6MflTLJs!Ht PeONY0cAn8Ua:Nf@t< ya;Qhybƨ9:-P2l= bqa27G Ɍ1Wa1M̈vN:[t7I™e!;ɲZ-SDκfUFcga;da1l^ߐe64\$\nch=-\0P#[h<KfI cD 0B\"##&7!R(\02hD(IX6n5-*#7(c@,2a)ڨʑbY T=&Ə#0)02X1P4@))J(62cz 9&۬H b!+CC2h4@s(@ 0!Ԣ2o2\rD!#\$O'%ZF#H@1 W*\0x\"(C@:t 5ET8^1ax.c@21ElM2A i`x!D+.#\rrj\nx6cs-XaXc!42r0,QB%v0\0NS] Y`8 *. P9cFLB 2h^8RY!L|YH:\\ɤxL5~CX\"&+4ڭ3Z9D&\$o\"<f~R#S%<-d(2d#7#dٵC{n8^_B=>].-'#aIv#GgvEL\r[z;A\r\"9/@3lD5 *Jx:>BHb(AD#xyj8@6a z'H4p L9h(Had%dHG̩G(=ZCU)-\$tCm.azDxf  7\nEˊr`_\rDdN+RjURłr9:\ndzyzG4\0K\"95\r*&\"b1TExD]}#2u\rlfVQ\$y_pQbQ0TP/!&ݝ:jFxğêXhujZ+Mj7W1W(>T9 dT52`R,R#C`aX3-J%rIr1BI4_8C'pY!RN\\\$Y )f,場ZȒ_T Hnarw t\r6hA'QC(<0ZyObMDJsa?֮ڜ2RD\\Bv5H bfMPBXU2.pgbd,5Dh%4B@A̤oVLj':5e \0kaUL@PQJ/RD\$51N)v,<2z pIvf !µU\"(jWl'b4\rD5/C TR\"isIS-񸙂\0F2dWprPL3B!\$Dbz.j\$ 5r_O*ɕ\0\n_ēBvPjȵKDUp%rלF\"ضOLCad!75h(j*DrJt EgCp6\\CKO`N `M䊑r3Nkj*XIkp, C\r!_[1&,Etaa\nH lciQvW &!eءΰ9:F bqi~I8 ljJuv+D!X`0cZfW/۾ϐSWV3upm(\n^X+_\rlP™B\rS\r\rxb bhɍ\0T;rrN!'sfڐ^; a3B\"Af[s]LdF(!h2jsi<iV*hϚ#h/!-.|sa-?4)Ɏv\$?^tcO}:\0D)̵!z\0PF]]F56,&Pf\nP 0S2zziP5뇦&yVe򑷆f=!FqZibQ>s,u>C#/w )JRnEeYC/#|d9EMdk97Yx_t)^>WԝN^/gIB L:.oR#oHH\0‚b`̤P&&)l۩YhLI S/6(τ2B N0`*tom(Q :m =7^.<G<(dl1d9\nDB#ȃD\0*Ec B~а&ú&pG#\n<v`mzaPOwE c}MJ<,j@jf&.(\nFr@&Q8{(.qDC!QTk'8.nv*ab]& زlg- lg'QbP%JjMo\r. QļԣPpq/\$;P}f\"#pbP1ܫB\nq.A'yL{\$2 9zb-9\r&2\"1w\"O|um2#!\$No\"bl#x'~ha(آf\0*y\"t&%Z'ʮ%c.\0X\"*q-JЦv>',BZ6mxy@.&`Ʈ*=R'.&Lr\nn\0g|a&(93[*Q*\nt{IR,G! c7Sg|\rOv3r\"_ʇ6Cf.0DhdHg!|{&\r(FAP)![66Vyq\r)c #5qŎy>3,b#gbs6z?5c='g--G&e=R6(z/>8CmCg]?%3B>Tw%EShk4k g\"sӌh4Z6F)Cm>\"E:ο=K HGm ?~\$ ITi=sDgKAQLW)T5vMEH&N@J\$7Po-q(M),D\\P 5T?Fl\r NS<XJ2p\"udK60SǛT RL5<\"5T9UD3/{UY'@\" A&^q8CUa7<8,xp\rU'#2/Y`qY5u%r``c'Fʃc|'e`42'8IS1(,-fj\np2& 5\r%{M#Tam\$'BU! _GPEGhCC@gp7\0^o-ڋlnkJL#nG3Ga\nJrSL.@E2ڬ2\"Ev?' 1N9\$I#?br1sa5%J1vV҃LRKvl{ '0bVlǜ僜F_d>Sd35B5p'Svms Bg\0&*,z\rBtXz7p=Bԍv@\"pd.b6flNԍ:3-NMLu1R\r8Ӣ'`nWem'a*\rhVKb\nD";break;case"da":$f="% (u7I :\r f4is4N2l\"ц9Ü,r Nd(2e7 Lo7C\0(`1 ƃQp9GS<y8MDYCQ\$cf2 )RN17&sIl36Me#)bl51#lg6rY&331@a\rI- rɺ6G2A] !τĝ4z]Nw?t\"3ob)t3˭YESq7\nn5P2\r(?@8.CČڴ61ij(0ɢn.1 9@\0:0\ncd Gs;I[70\"*3)y;\r0ދCBcBnءCs(2\rj B1pr@741AA\04@:c / c44&C0z\r\r9Ax^;r+>Mk3\0_ p8I|6([31-L7^0ج\rB:C8n+WʅH;@P0Lh΂ @1^C(~\n\n%\n=*G\r1˃@(0c;1㬓i֨#!f>\"7c}H{4H*7IXjCJaZ̖\$6C\$H:J&ah1R &\\:AI\n̮r8]6][ P[0PJj9\0]\nTK\\D7&EU:om*( MQXME <ւ7af#=2F023>[_a(r(/>dQK(3 ں6*\r<DQC6Bj#? yZ)\n)|0JPt#aP4\">v uQg]=Bn\$X* @U!U^U\\^ DIK^/2 \$_f\r&FFM3T8JC/)B,2UJW+\0:=@ .p̞MJ'v&\n2 R,`rNJ%(A+n=_}7l'_.L޿K^}\0J\nRV6dB\$=PkI3:'AR,aa-%݂\0-iPNLO7Qشȕ\\He+ѠM@tPZ9 B\$YH@pQ/1J`›WupChv&-T925s˜R:PbТ&/lP#\$#*o13f2ޗ!2*,&'Dl\$0 ֆUL&D*JyA dL\nI@'0Oެ4 fQ\$6 qZ\$62E4H Z b͑x\"DRkZ›c4PH14I--KքbdC!\0~牻8 8PT@-L):Ds2,B?WS\$z1yPWIeahgsNHVlNDHH4VMdս7fIpDž'ʮO-v8g.3عCYmdT6ABN;WFsiI%8?*gPl+\n1Ա#!' R\\Dm.sVua4-87Stb< de\0d4rI\nd3բWS.GPC.\$R˩aȥi<Iua2:Jf\0SbP\0ƥ#8ek'e s+]0b?%@@ 7e@Z *C2}idVwbF k5B05a1i``xKTՐ.`hr!h7<{R/ u\${\r&~W-Zp]\0F\\iI`AI/6ѕb rW ʥv]g9&\$P FܦAm B '[A! yҲ'~HR/t#A8lB}H\rtfR rp\r bo2K*pdJO.yt-)I>\${/]\n(agq,\nT<<+PjI\$'^R Bˆ+/4|L;:N4=8%GW6_a_umNpO6/ ƎG\$Vs(5.,2\r.&*5\0˜#:o\nRXAP`DgP[\0\r( <*lRd=8TXc|c 0v-.\r@<P T&D7(BG0rnЈ\\0n?Ř^]0\r \r\0o-\0^.\"f0\rozh7Ix21t\rNEĈbcCL [,Зh\\fHG=/6qрG\0JQJ>X3\\YQ\"#8\\<aĈ(g'у:rLQ\0]n)q >aQ#qJRK D28,-!_!;\" ʚD(/! hcC#p`\nr/Mb1d%i& dyC'tdP?&\0CͦHk>Lal>j0PB'G\\5bJ#% +^۠/0naLZr3.z -i-e/N6'1>d\rV\rdI!Ь3P8ʐeb~('\n\nxCL#nގ )Btn^56kkb-%#'&kVVC)C9D! 78!\$a2)Ű4,&c f!pd,k+M 68Sg>^O/=?b?l_>R@0L6\$Hr\r@Chq\" ƴPcp/?EfJ<%Bcot.1,@#430b>Ll \rF\"oL,K@42% 0 &`H@!@";break;case"de":$f="% (o1\r! ;C i9 MQ4x4L& :Xg904@i9S\nI5eLn4NA\0(`1 ƃQp9S]\r3jPpv >9M(n1\$\$NқbqX8@a1Gc\\Z\n'X(7[sSa\$NF(X\n\"ڌ5MR\r6e]ͤ<#(@dDM^|z:gCܮDSu6-l\"* ,7m+\râ50 P:c.\"\rc\n\"26J:2<T5q`䠷*A\0D,c>!?ɛh{,?KJB02lr!(H- 1#nlrM6s:?DR@P25B87D216Ip,2<c-9B`3@U3MC 66OGcz=(Hj-3 c?\rCS!H*\n .[3:t!S8^ xD('/3|ƬA2:C:.h+B;%&7C(C*=Bd7>JC,aj {;D-ÃMBPe,xZl:cKW?(H҂7AH\$ϣ4hΜ :+5/p1&\02mS1b+\r\03B:\r;lz7D#8Px3f.5r(hEC ߽p(\r4c9]ۯ}];=c*T:N729?ZۈnSTCűG<{r[Z+!.]k6Aj^@@ P؁ a\0#`ӆ؀ee`P:Y0m;=ҠoIA\\eQ'T\\RG €c .H̼P@\0lV\$ %\no<08l\riQ*@ Bm3Oon<O{9 BA--D6M'OjhԐ#\0rPz3?daZ9\"1 v'9^\"r:]\"A|1\$E\\VHߺ^l-WRuA%!4p!g\$8 \"?&`4tԖC/%\"ؓ U:1s2kߋQkKEâ[qY| J Ð1 {f') 4C3Ik.ȕ6҄x*n+Dx/&78( BXHa40Jw2KwZr8ؠ!w<paͪQ͙\$AϚub!aa JN77~>2֛֘]Z((z\"\"ʨ,2iB5\$4Emr`Lc7UrW 02& j7. ծ5<֛/\0axA\",IS\nA-CE2O2-SɊ{!%FزTJ#XDSK!.x ٢C4KA:/i`+ʌQ09\r[9aCJ!Xy\n0'@˜TjZPNy<JMIG'\$FC+AgTH0!j>ώ19vt\nF0T\n.8e\"+kɪ,n_ \$LJolhf՚\0qD!P\"bhB`Eч¡S֗'5\$46irqJ 'BAj<4n!(T*QјlC',{LNL3\\ۅ YBALt1YD *)?\nDCղ'.qɠ^|_pd\"uR)\rXC+!DY\nlt0mn!({[iu B Ï\"1Լ&:/ R/clsӻWUXPٰg/4 K ^Mm7MgRSԜ:ެ.%bʉd 0eilRz6 Tf'vm Aa!.Z~_ZWungr\$IL<|g Rue'-I`Fo\\YQeJ2 O=bޔ?e=fr)`C8mw/Ig1ٜoB8}_@}#hp%,΅\$R C\nKMCn,B0\$`8\" ^gZo  'GU0?cf?8fV\0؂|T*FPi: )vVJjn-O >t1 \"%nI\n\nPoG's\n0>\n B؝lqjb#\"<q~Gp!<M%L6Pm:PYL\r-0KZh\$<?R}o&DqpQ\0\"CMG\n,B1Y9U\rv[ QcP#&3Lwp7NOg5 Q% CXb\nGKğτ6F1yϟ'@\n%w\n\nq n1xr\$dZ\0ETҪS,\"\$Ԋ\$\"2ÄJ P:~465; e)Ho(||-&@\$K@\$\r&hr|Nf6<2 q\$d?,r|%,?-B,uDZ-0\npz.q F3z.\"r.Sg/B@ \"fd>o},p3CIIj\"20NMNwF8,6Il6sڭ2?7\n-<~H NfgzP}/gtR' 3S;!r93p3hds:8;Y%\n5C 7s8ƀrқ I`?1gS5K\nqy@4<nn QqBI,.B#>Q\n?3D/0bN\n7 0\n,OR',`R;55EYFA`0 ?4\nIg3l _\rLIu bJ44Ȥo&r4p6?r9Y= a`S<60^Ę#R\\~\np J5Hyq[\0ԩc!\${3 \r#<\$.C1 n#O\$Fc,͗NuUL#ObH 6IƴQB!?\05P\"=LB\\ S0^0(0*C\"w9- CJ5)ZB\0ȑ@[p!1a л,fzb|H5@V-''Kȅσ*I8\r8ԵͬsbbVQ:EBⶈ`[v8'l3f.+g.'N7\0!'4P6xb*؀6Wd5\"";break;case"el":$f="% )g-Vrg/x\"ZАzgcLK=[QeDX ŢJF1z#@Cf+Y.SD,ZO.DS\nlΜ/* D+9YXfad3\rFqnFWBWPckx2V'\\Is4ADqe0̶3/tfO j,Q#rDIjI\rQe^DAJuC \"\nΕӗMs7>|w2U:RJ.(E,Z7O\" (b<K42LNpR8:8< ,rZ\$39q!j|RbʒZ\rCMrGnS1˔j ĚdڨQo(!r{Lqvg %|<B5x7(9\rl\" #15-X7AD 8B85#H9@)/=k%\rsA. Y( \\J.bڭZjvĺϢ庞Xs>N14h2\n!Nvi8Vk|23BdX]HgNSŢJ2q0Ċ0N}R IȴAx^)b38☇WQF\$ h7Q7N}B9u(P#Nzx :+K!\04@:P9U`X(ӌD49Ax^;p]Hx79 xDm\"5\"6ңH7x<]}`8H1AtP`WA}!- ܢ×Q x+.j\\0gw_'ϭb9\r\n\0<(}߅; 0׈Ìrav _uP'-dqApE?8A7bϹihEt1\$PxfNR !)&6pHF™)7P2\$#Oʽ픒R :9(+bgQV;ˆL ѡ-jlU\nG91EʬI\0#\$P\0b1,Br*Pdl ,z\0#\$E(@h5:&С\n#B`vx.;-cZ%#bJ\rI'\$R]#+&;,HA#u, \n,6P[˜4:ȣ8r !Ժm8C>n39C,ư4XHsR͵\"CuzͰnl.#.(\n\r92w:T3f2AgY@gE*iOCk5P?oU,<(4ˁ<gISa33mA*L LI:vUFkUj1vSuOx5J)jFEgH*;\nFڃKLjCɰT\rCDl@4c25eo7\nK99'(HttPCpgEKMQHXvK\nWzw\r6\$A-ĔJek7pN8eqȹ7%Dr6¤#H+*K\r\nIxJCH̑_E1٥*Qb.88%\$ٺ=8űuZyN/lh5mv:vC`l}Ƭ8(>C+ !כ\0fH6?[m\r,\r6Yrw0*3\"S.bxs\$_>G>ڮ bhԖբH\n\0@RM^L4U&75\0pNk\r9(g-S)ZQQYe֬VDXV<\$\0*(@(sU\r~~ٷCpnJUHc\rr{8 Vp 3x2xVN2c˜Rg0BLDu?!v,┺RZ=*\$Id:)Z?H4!Ey-V7m>rz5Zp;Tȣ%dL[{'BFC ITu:Xj. j\$K-h;(¬ZE\n<)N'cX)c3\0S/x s3ґBAe<\\ l.8rs&/a'\rC'\\Ffj0H0Tic!^ RDC,^Փ\"p\\dA`}Y9XVQtyrAȱ8\\tGBf4#Fub8L*DDl}10ed ݞfNTTŋJj@v'wg\$GJ!b fVHcz8n@IIJ4L]9͎2ᜄn\"*2\"MJNįV]E*uvGiI\$\")Hn)L!5@&<%322JtOX M*\r45vf|JO#\$ y@\"JN L\rtedȚ'JI\"(J)u<&\0rN qmv\0΢@l& -I0ͧ>7,n\"p?\nOw܃e^|eHMj<R\0`Ǡ8zie\$lԘ ea11qpFD=E`Hd*@@\rb\ncNRV@<F\$8h!\0<, #%mv}\n*!Hª#ki,|ȇVňd( \n`\0.j5e@TEHT͈ghVܣ6 ~^ },?~rZ Hw*\"\\O{X`πJ-4 %/pGB+)+%=2Pb.B.bڦb@\nZmBNJ[\nYL^҂b0C,d\$R0D&~c001 X5i&b+5D)c.{-j>-\$F^I)&S\$?\n8GzJ+pMmsހź+ԫkc/m@ S *zZf- :!3-(2RR{pN!(CP-@0A34~_Ϛ\"\\\\,Hh))EGNY=/0]Fb8n^'7\$FkG+GQ<9C\"&fTt.vGTyI, NdcI ?JJG&HLLo؎?KI Ȃ6##1CYeR\05~h\"S\rx/p\"IC1ȯ6eb)CEysLPz@`&N@\rR&\r \rP\"&X ظtZ\\e47d .ΕY5YMI>ZO”TCFQu*XXkMū\\Ζ. TdU[TTY2ӏ>ISa\0S#()_ /T/m``υ50b4l#+lW2,r-H1HE(vXefB'_UBGbVs*/|8zLv~6gM0&t^LޣO EG2Q'0'\0LZ66E\"ξtT~\nŃbT\0/U5:ъP2n~G)bf\rIo\r@(3wiLqcpf#VyqCiufq #g! abi\0Ȝv =`z{'@z\$9LjlvGfiJvZMuhЊc6'Sv1xc:!<T]uzA7lWgPL{\nOjyW]Q)}<cɍy5ab-zs?)#FFF8\n7>Y)3~dz2(?[`YrtKywc8:k_̈́iV#v^^W{S=EzkJtP#0P\n,HhF7l)H8vg]lPR8UGnGMn{UxUGfyXUMtdk.O\\7qj\\ !\$xݏFyϐw͊n'Jx?{xwTˋ+})s5ɓֶRg&jUʥ[ +6S )qyeـQ YsUa|M]6m{/Gy(ydYT=~S^Z12E7 4!Q<`}GL&XEZb?S9'e-^051j T3\\,\nB81&!~d!pbS#d2\\ezohR,Edǝ~q~_H]BO1cbdgH;%lZd|*ZpD-2j8\rV `9b?n8HL7v١\"\$ChA=\n2åHv:7\\9\0\np&Ib&.DԗH*e%I\"O4KsO2IJ!L7CLԶyGȅ1feI&<lzrbrlyR;_l*챹,ZI7hWǰlHAOO(,Lᳳ>ʦ\"ҝ{r2_{Xȉ%caF&NPFdab e\$4j(=kCgC[kK[utw\0B^oeOl(D5ü)NDݒ95¼V\"{8IC;\\|aBX3xNd28\\f8;Σ(%\"aN5W*fnwse#ܵo'{^2H baG/p dD3!Q*GG1mWFlY;SڠCh7؅o-B[\r\n*IHX@  T3ͻE\$V|P\"EBe\0\$` ";break;case"es":$f="% (oNbi1 gBMi;,la6XkA<M\$N;abS\nFE9͎Q 2NgC,@\n FC1l7AECL653\$:o9FS,i7K_2Χ#xI7FS\rA<MӔia r8MNf Dl4̆gMjE*p2iiN@ :.O~ir2,dQCO&p9H3,0 gKvIyfG{[ <\rℶJ Ӫ P0Β4kR݉-ޔNj,K oǬL*&ʴcc{;;\"F(-\0\n-bsʽZסùi# ¤\nbF'e2@P2 4-!)P\nN{2(9el:'Ѡ \nۚbAI\\!FLgGP7t\n#1K9S 4:(Ds#1T4u ,H; Px C@:tN-8^ x\nj|C4M\\׬jHt;l\r-Mnܣ09 èʜϭC֖c(9`A)-46l!-\0 ; #l.R,:@;5X*S؍&\n޷KM@x K,38P*S&M #SC2`7Uk& UM%0)\"`λ-V7x!TmGHkx#8@!}g]9(n'v/OR*5`6RC<9Pfh+^7b(N}ؽ-v}Ag'-2k,ߍ}}\$`m \n`3 \$e4 L\rLUnBbaeMUKtJ_2f[ x!EUYb5ʫ倎AdLsQ\$jJ\$jO2u<* 1RLQ#\np7)lBZ. 䒕q&gԖ[ in-b\\ks^۔ypGC!N,'VQH D mYHQ3\n\nu @JOI|8a4Zւҍ+]l rKUz]&S Lزh~149VS`@bg J!iFG\n:M\n=`BCRliQ)Q0NJp& 9.%q\r2RB\"ve+18~`n'!eܡ0Y+\0\":-‚\0POI:.„m njif;i<B\rCFTA?\05%O7!TIH '`)j]I\0\$U/9\\\n[pT\r00 ,Aؗ NlkR2J\$n,SƨIxxg%O%Ĕ*b4,ZR9!--&|Ub2斚̎MpeeQJ>C71I\n<)C(  } =RII+!\r!\"-OvXceD0zO,p Ys0\\'{B\0#J0, S,Z6h\$a)pqE'6}C\nW B' \r`m F3t+mB\n_1pA2\0 73jɟky Ά\\I+}~ \\uS A<gҥuY*54A'~]ճA6ʝVB(V-簅%D\\Wri`@C§+7|Ieh'IIa\0ټ䅅l2IfbrDaA*{1m\n\0r\rPi2m))gOsFA'ԌPhb|\r(a\rK#*oi,)e00n&E`UFͦo<\\B%&<\nW>mw-7mc٘y\$\nysz<#,߀ kUP0H*͢~R-a v~Nf@{1:4z꣉+FG5OlU::`r7LhY2=1sGbF̊\nyhNsw_}v&y?瓬{xwzXbHwQ xt2\$I<>cCی)4еSl Eޅ>dNOL31+!L20.:Hբ߰ȺCA)?-JF+v?X4>DDT0eD/KƆB214\"lLRJ Pl~ۍ6n<C٭rBH7 Lfng*Gp#Bǐ*0f|m#?l \0ʬ!c(BFv /Ovdдv(i3 *&o=R7nbN DEK4no9NNm谮0K N(K\n0 \rD^\0\"L z?#4?tC&AED#i&g!&8d” X':&7m?jDe TQbL\r{bP\rވ(\nFݍl# а=5 -,cMyL gF .DAB3 0. ,DPX?C\"O:r^M 4xk\n'zA#\$5\$q Ch\$ qqub#vG&ruRo+pN-y'e2=R\niyRo=&* (2e\"\ng/,bNX-)\0I\nKr訲Y!Ujċ \$n3-2M0`S-312@A3N7bh{!.35[%ϯ5ʤ3diCS##vfRlD`74G)8Q7l^\"#F\"DS K P`jb*3j&.|~~#d'#:@}QPE0.H\npJ;Nʆ4 CX'B!R/ *&) .\$O( 2#tD#(x#c ,*2s7H`Q;\\\r\"&o rN,B^-F&BOl\$(.12q:e,BB&&d*M\nt6o⣤RmKd-\nR!c8Yf zGCC@9֛FTBbP9J g\0g \n,s f2\"(\n5#@OlWg,|CF-IȒ7d3cvkZep%8fp,#5Kv\rLB#zoh2s&sP@l \0@ t\n`";break;case"et":$f="% (a4\r\"e9 &!i7D|<@vabQ\\\n&Mg92 3B!G3u92 apIdCf4(a & \r1Lj:e2\rq!?M3ϦV(6byeWhsygnZhB\n%( i4sYm4'SRNY7D 4n7hI8'S:>NSozZW<,5!Z 6N0~3?r3̾!Ϋ'\n3R% b5 2C, 8#<8+ƳH:lD<\r#+_\0 !/1>#*V91\$p6Lrf@c2ϓ6\"C HNL9BB9\ra\0P<B87@4b _:\n,7T)\rҸ7\"HBH= &{ 5oؔ< :m'J3\r0>8D01hX \0\rdijp4.0zFC9Ax^;r(As3_q4PI|6031j4^08\ru*́BsȢ.n5ɵ&/ˡH\$: (j P+ \"(8 3ⵎCS+tcL9Ap? ^\n:I3Ӎh\" [%a eF,y*BxMюk;HȸZ#-G#Hъr#X֜K8kè1#Ø40&o{*\0s=ִX˃b'vHX5haDִb\"SN8j9=sP+p)HPwt&jbIͨ\n'g\0ºFF+\"C_e.aC3.H#@Fd@Մ9AxnlPȓTXjd711\n#0M@)a\\2\0!uV35s9aN<0ra60j\$2\$I\$j'*7VL!98s` 2@c0ՔnjZ+MjuJ[74Ʌ]\0K3^\n:DEs qߣKqrRNJNڪ\\9hD5YZ`;#hfS=H9\r^De(!.Դug3ԍ+92a29/\0KHa >HblЁ_ aNlI\";} 8Bd@&B6Gj28,1H\nyrvQ;\$ \0ʸSl[9:jHƗVZzmrQ\"lE\n0z z2fB97Duya^E04Ef%,&4rTK.#Q5K63\rJ ˩M,@Ws_EΙu{3! &|-1eztN\$8(j\$iyWHBI\$iZX>y}HDڅa4\0Zit6ɘcU,!7,L) #Jvn[ KVe\$) SXE(AP\nmɄP* E VxnaQ鎍'cmk|p!}R>TI!̎7&͔X 9Tʼa2J¥'RBJXQJkXpȭZ4I]vY\"&?\\Tyƞwr =AԮ0ъ30'*PtB.4ӵ8ھ'fZ3=(U{6b*l -\\d>%\rcVdu:7; 6Z]I ;mc d(ާBk_vĶ%\0RÅ+Ud3IPxc%{5]8kQ%ZABw192FLF`ɨ* 8E\nO7n#̃ !pVd ~;şY8-Ec(ĬXC \0ݘmUƬHc:\"\nIF́x Ef./!9Hyut:#>ji6EvlҸzq3fǼ.j;wH|Qy r\nO؎SK& &@䡒!&X?Ϻ=PUYu&L(c<Ƌ(V|?mZͳ7%W6(uQ:} QQS\$*@9IIUf1{Y=%[7k[POdb,rQRP#=\$DyfB@GBRrmiQ(p.y*QN^>\"J-9/kj9&~h- XX\r *\"-O#>m\0,D<!UM x/ OP\nU OlwkT5gnbм\r\rm\$g <bR4gP#NP\"pot3o3l/q<CB0ajj%d7 (7)rH<FJ+x!Ytx?@.,ɸ>.ڎ\\,JnbqHq15*JF@ZďJ#x?cdD0C#F>d&G Ae!2! C>~lck=!r4Ru\" :B=%{ US\$qc o )na &2Vv#Ntrt|G|\"CR (< (*\"\rf2 RyY\$\ro&b`l,lmuʙ+R~LHAr0p\"s.*Gv+O1 3>2QU&\\ѭ<gњh\$)#8vh83Zh.\0#v,.F33fSj'3nB\n77\n:П8hZqFrM34.` r\\9S;S51h1:s{/s=:Be&Kg QS1+/?>2@Q/2LP mN&,wVV -Bb`ȢЌWD]2 hLFQP-O3.܍zcd\rV\rbJxB!'%D<h@\nZP.iskZIz(ob&Q^QL%\rQ4pFK Ԛ5rEB=C]Wu \"\0m!?``mfj] 'shF&U%ELċg-\"V-@!VWH'#x7Ӓ0~g\".X<F6| x#ڛIc5 P% ,H\0@&Q bjxg0#wHgRp\ncV-W#9k[ǔ@u`\0\r 9&+Z\$g2` \0t @\n`";break;case"fa":$f="% )l)\n@T6PD&چ,\"0@@c\$}\rl,\nB\\\n Nd(z m*[\nl=NCMK(~B% 2ID6MB\0Sm`ێ,k6ѶmkvBhHA9!d+anپ<W-l'Dqe0̳\nXvC-*UeKY\$v⬅5NWf+PdFZ\\aT綷Jė\\VLã#u\r#He)nZ4Į>N(N죂ͺ猪j(l4{\\)#7 lX\$ )SCB5x7(9\r^\" #12,7A 8lz82#YC:ȱdKd.J TBL!E2Z)j:[nӥmT댾λEtl(~C..!hl)N98r\"NrYIJQ2(2t\"Q#hN2'crSs}nS\"6PA1q9G1#3\rq@;#7A\"r4410z\r8a^\\0v,]x7E9 xDlZ4Z6#H7x5Nt!SH#HS;tTMBLA1Q%S\0!ih+#k(Xj\r5f\";El4B0 |!mK;.,;*N50tP/ &nB5΢l*͔%?\\PSG{WCsoU\0(*͏>;E X>f制^IGrW0޶`VR{[\"ƾtJ!+X@mzCgJrs߮vI7L3WZ!\0PDJi=\n&@6PWs1:Hr !厱_C>ll3C,%P CHsFa4ZCt;0ZlʐgDaK@6\$C \$4.0\0ګ|U_SEC&܏5Cb x(FY\nxlKJ\n5\$cy)9yox- T7f]6(Ъ!쐬\n04tŃ \\,%R q04E z/e`B7!э0DBȥjO9єȢ6\rK/H+0S\"Ʊ5iƤs\r]yUW+`\"%M(~; x,:\"VQC*\$y)y5(B~Ic7:2ɭ)i\r#&T\reZkT3Zxgˁqdc:0yCdMxQCf\"'t~U\rE.D3#P BtPQ\$L S)J/\$KXnn!\n8r\r(::+)hմMYFaY#lE/BėC\rQijCTQ]p\\\"v@i a\nBWL a [`F{)5\0zP3΢1\r.N <}RUMsNH#.%yZ#&:nOž2W\"ǘ0v!̋l\\ v(\"[,MV|FZl9Dc'P#(¶t>Ͻ*![Lzs IqC4XK5Jf_\$vG8Y#xF\nsNIZFzt: %RKcMDwrDyA<'\0 A\nYPB`EjzG<ְ#Zx%:sڥIl2CCA*2\"SȣǴ(M{ t H6m>x}ýwr~\n5J=݈V{=8TV\\D/Rh9,ǮhW5cJqE`h,<t:Y7J-m.d풖:/\re?\"GgDQ] .B`o`8\\qu%.0*Y(O~hSkٳ81.o8r/\nR)3#O |*\\amdlqk ǣ'z/o?tqNZxb.oc}Z#Q\rPAa cZIG \$+B\\8j\nm3x/+֧&?jQG*cl4lzc,Rf,B,MV9vjj.\rrlj0I3C9\0:)'LBT:pJ #\rGMM\\l~mTԌLG%\\, 'kGR\$.6P\"Bfv-\n%J.:{+BDtFhbnՎ2<P;p8l- MTX<*-V8Pn`E2~Plod.@*m-;'O pN<.o\rE\r\0HV\"/'6 ›bޅq0 hmHd\0! =qcjZy1zPzڟj(BBP&)2en&/D|,P'm rsa\"bձcw\$7\$i X9%C/*7\$?B (\nv ,KGn.PԌK_&rL7OR0\$o@4/,\r.xr`y] T:2q&㚐+%0ǖ'wi0k.f kAUdQ\nMlC0J˧ҡR4,3P4 5Ff7,x6%+5oF7\\x07T?\$Rk 2/'<.)G:s\r,ѩ6B};ys,ӹ<sR\ri2+࿠\nI1|䖄t\n3?ʿ ح\n?V./g;,(:0CT..F8d,L1UG7H<eEC3nht=< \rEL%*ݢ4‰Ѹ>C&.6RR@6Ps/!T/W+U\0!R)wJON \"B\$O\r-Mv~yr\ns\0\rV>LŦ:UM(J\nZ\n ,[#2/3`055JFFL1sƊ;.ڂ*//3eF<BsO1\\T5UgN(PG-.=!B\$t;KY )ZRDLLpV*zP% -PU*rg'DmK'NUUQ|Gtp^4_]^.r<G]\05\$ubPjp#lJ5\ruNg\0'QhQT\0G\\0<So\nVUn{3v%aJX-]WLQ[EA3'{EN·tܭ4.roƏITgv Tt4ROÝOs4 ";break;case"fi":$f="% (i2\r3 2Dcy6bHyl;MlegSnGgC@tB\\ 72 aR, #!j6 [\rHyWUy8N|=NFI7FS ѧ4y0 &~AHk! 22p2p(MSQRM:\rf(i9׫hCcRJJrTf!7Y4֣I7uz^\rO 6ybkOd{%zMs24*6Z݊: :cД B[P:>/7{\099n!`+TêJ9FPBC .cj&/5(2t Ҋzsj%+Ó \rkv(#\nF \r ҕEqS)Z:\$#ZǏ#\rcM\$+ڈ##N:o1<'lH&LMHf:i899mVD4&xmVЅx38^cq xDҼ6;A^0HK@t%@.k2M#\0ܯ\rcP: EG;NQe .j J7.|& @ʫbݎ.HC~X@ \r:3LLa\rP,Pvp-)8\"2aZ}5P-#\\%%Bem> ax]rccdGG\"9)9J_{B7]9ȏZsփ6<`q5Ih0ufJ@!`x/iSk<Sf3\r#:Z2nF <Tbac@, gb\r<\rq\rEz&fJ\0f 2pY\\TFJcTBͳSa\nAP1 \"dT*<K3t_cAm &h\0na\\-)pRC#\rN7X7CIMy\ntDBxDNTI ,2IQQA0hLPJPqj!q?&) U+|E S <2V[an\n\\ե`\"^!4CFCB`dIHI\\0܇м`IPAɇ5  ZQa) 160DJ5jNI[KqoJyR0ea5b49qpZxd\"ET2n\nt<f(& !PbGcدfK(s61pa01# T^*}|,\"TzƎQДvO >4FE^fCA@\$sR)8b ]7)+MtVeR*sN|!Mt&FII5yL}D0p\"E>-A?_\"_}\$a˳&h ) [yIx\0W2e(e&\\0+fMf\$bዧSI3`%ZiF%%;AHyBIJeXV\r\"\r^ LWWU0 -`4R#TA?%F\$=s#g\"B#,\0_t0d`y,D.ɂ@\r>\"J,!@', 3&Z8=mx@BD!P\"@(LQD0ZTL)JL8&f\$\$oa2S3\na5E;,_AuN~#BsȒWj|j ZJm>І(%OKb֖F^V\$! tVGP+7YRU2=a@BY\nP&wp&B&g?@lC)3\nҦw(W*>sV,Cb\nF*S/~ %`̔iw\rI/\0[\0'EK&!ƏPC/g><Hi##ݷ+H}BA\0b)JWaU ď=_tAC A7%f8 N a5@ui++e=VRoK.m\$7K^`;%Wpޡ|XAx\0;7-RH7:2+D{)I¤eڷ)t{SjRO>\$>Iw uj!\" A=)nJ[;[()/oY\\Q\$?2x̹Ld#hXuJGBJ44'\0c \rŒyl2\"k\nb`=p,5j,5dh:pPXF%pi\"AM W(b Z\"Kբ0ZJ\"@c-P)NBgt 2'5`wo\"X V010u,+\00\rKc1J- P3h\"v11H=!o\$ cOZvnXQ\"nOe#v.q29\0\$xB'*F%\rp8d.0A4cDJZ0p\0ZJz\$T\"p5EL)EJhc,-),qf\"\$Fj\$*\"\$=,X\$܄8v8W;B,1WPvP aɿ&ja\r_ 12\noNoaR-yM;瀇Qbwx1!7RA\$P\"fU#gG%h&d\n \nf%CF8#|QA!cRvo!2 B58\0jGD\r<!+R-+(2-+,ZP#%H!Pr\rgvw!.rc'wCw\$*D/0\$7r-1P.0)qf\"R)2Yr\r32.Nn2 M_g\"%.: ?44lC5sE56s4%0@p.eҔ*\$f#0؊U0\"\$nU9l;h#RC#\"F.:=xq=SPM~:2E0d> *E JD\$ve:cA01w1'3\n&(',IJKARҤPm;t?D N cZPl6xâ`q\n^ 6\"t1N:e^FAnV\0 D&>V,=A?Ը>hG\"^KtlP;#k\"0il#T4eBJ4v.…pxC^2F3PF#-UϤkIc J,p2-x=) R/pV@\rP.&B W& &<\0\0v(6F\"Y\r#pE\$@  zgXETvρS\0B#\$Xq\0\"̲T.\" ";break;case"fr":$f="% (m8g3IeAt2c4c\"Q0 :M&xcC);fSF %9ȄzA\"Oqo:0,X\n FC1l7AECj :%f0u9hZvMqM0Pecqe0:N+MޏR5Mj;g*L'S\$yy=W3Rt\"pv2 LndNhM@m2)@jF~-N\$\"s9 3N78-L?O\n77eKzT7@<o)03 P\rcr\"L;?t\0Ѥ\0Ģ \"ɍhъ(ꕡҵH2A̦F'\rhà\"܈ACDÁB0es^M@:BPN,✑BeCJ.E dOu'1@P2\$y5KL#5cf(ջ(Is^P6ĀHh1#&>1):pGUte %TȅP2\0x 8CC8a^\\0K x7@ xDÀ3\"t\n7x\$ :3Dwo)U\nNM`XlKI;bYjK\0\n6 CCT\"c(\rZϣxX\"ͮJU> ,+T!:N,ɔ##LS-42#^̟ɠϵOCRgrJ@0~qiBb(Xc'n LU‚q2҈\rbC.aVx(\"ή8>kV* fi ml4|,{K{B:;%tϓ\nJɂnl Q\"M5@0}×7!\rz(BUbyE\0zae;‹Cyc,lB0|L\"4>h \$*\rȀ\$v, 81.')4WYAZ&C8My0@P+d&ў0T|Im'E`T\"+5.17u#ReB; c9FH4!c1r\0!,i7l D` Q &iuWz^k{#` -?@S\"l\n.<#x]H&M}%:`mK0Wt^|/!Pr`,\r&S 9020\$IFu  2pv1XT8)t8ïIYɐB3<Cg-&* sgn:\$x:BH&CA5):@;bp;U2\0\n\"sLl!!JI5ZEI8g0ۋIA\\Uz(\$Q@n-PB'\\'s\r'L\"TOX^۱Fxk! ) ʒ)&(2Y(xihSѡÝ^EmDL3\\zPC;I2)ڹďq:Vܪzyxq|M\0KF\";H\\JMO\naPF@41E\n\\/UHYZ׽4:>>L]Ubௌf\n\$Zpo_ ^ `ZTTJk=-ef -y,Z9%9qu2* n'p \n@\"s~q&\\ڣ6\r\0H:\nI]ZS<81wzB\rU?EKCaZ|w(ECp}&ARϬ*\\O>8<g' PAd5\$c\nq+us3RrV :[udcUVjP \\J9qm0?5˛,ddkCc~00\n)R dCSaנWaaiO˃b4%%P9+xm0<=&fLT]YfL@7U3cȏ3T%s1 =0תl0iwre*}b0yv`R46rpi-\nouP*a{u:-uߨSؑZSE!A2l8֥@]-gݤg\nt)-_IAz[.<|(IϮI2}D#Z7'LYdOd2r. ̺O`̐%u6; @\0'(*5DZb2nb\"2E6N38ʚ3/T 4C<Dn6\$\$Hs(#hФ'0 BK\n i*0ءRAd%~P\ri /\r1P/ dhw©P09}\0g!Ɇog\n(c\n^-N:3\r~2;HwNq4LnЄm. B<8bHlDrbN JWN&\rFDm\$.-k? FG-s Uŭ\rOp1Kmq\$PqH:\$\rq0(}Rm}\\\$hp\$J \0)LEK*\$k!'Jm\"O(j%\$l !fZ+\r֩2N̮#P^Fc\rrfT\"Q/M\nFMb[x5 UUʈ\\;6]h'29EnL%U\rpAFD[Ѿm`7\\:\r\$\$%q~{<.|(_\r(&#PCg(1%d\" 8(0 aS4{\ns#\"Y53 ȓJS3NCs?7S[7^iM@%T. EOrA:3,h! \0P##SU33!sc\$Q;!j3G7'b\nbާƪ@f`@:p7BOd2T=0A0q\$DA5(Rret  3%t\rB.?C1+3AN,'3ffC+DC\\%9l @ʶ# `ONGmGZ82 GTO{IStc=T(554UdrLm6QKnmsqFP'M7NtK99+.H8L GL12\\1E/+M uP-En\$CQ'Y%fx\"Ok>MqxuH(ؓU\n 2crk)nR .& 5' X0Xb&aARV)l\r(:C?^;úz\$\$m|.Dw*-*d0jkb\nZ\"3r*jY\0Bj*GDeP vx'z[Dŧx\$C((X;(e4QU/Q8aO^ls2ã8ܴ_«xrG\\6dU &R]`6h'?&֥im%gjdmcQY ndD1\nx'&rlddVzO, MuhLk<\" B8r@p*tx`-R7)hT֍[\\zmV\rAi&<]r \"ˠ.A\0Dm|H\r";break;case"gl":$f="% (o7js4Q9 '!@f4SI.iXjZ<dH\$RI44r6N\$z 2U:c@59 \0(`1 ƃQp9\r0 7Q!y<u9cfx(Y s~\n\$g#) 1s|dc4pMBysB0 2jn0 SvݣF]ɨ9b\rga8ɲ5EA5iÊvUXلA:^Z:n<oU,KVƍPQ<\r /!26 0B J~I@0C( 8#c*2%*#~\"n5Kj8l6)J>);Jʶ9#j~Q:4C+ mKPC*p (/V-%P\n+\r?!76BV)DF\r(ƍ8\"~#~ hE4篢Ƞ([2/QhjұM&;S0[!t\0x\r `C@:t55b~28^scxDk+\r3*h@x!QAc0<P07t6EM7-\r88<0!*Ȝ6(J29^[Z:ҵfGNQLK2a隇RBc pS5#3 ӆ#;33\0 pR6CQ?m&Oj&Xr]SIr94=RJ8yT\0(SH;\$\0BL})L3:C\0݅)tOP7 1CK۴ư<z٣-0\\?s@ )a\0ڼF6]<#\$<Qa0H ! Q24Nl-hD@s%TSpN-LVTѣ#<5He%ғ ^Y(\r&nE\n 6) HD88zh8nDa \$z!(\nSĈ7Ey **-rhm^Dp!`@rY08*Z Ij-eUh\royE6 H }\$Bd4Fc:.p%dպrIU r6\$4n!, Z]l#,\\Y&Ի\"nB}( \$D]@A-6 !h5 \$BFw|!+\0006K8c^e3Vs \\`\0t\r{ a8A/86FB\nxI͐d,I4–Р\rV\nO3) \"DT%\r]N Ⱥ \r9I2m aO|JYpñ346z3EKihQS=pXks@BT}A3&ZE(Qh>zS\nAVCZ8 Y+R؏PCTFM`ܗR&J6(uTB.Ph#9)h /X'i(hI#dd׉\"K483^oSs\n<)BKalH4'!֌S'\"72|iWatr2LRZK;*Se \$PE\nedz)*`ACo e%6OH(TLR PAaP*BA\nUp'@BD!P\"JO\nAK%d̜(LSz/kq8gY6L&BTÆkm_aeL='DX;ЊibteJ9Y2Lmw%Z;ӤRz0(4hQ?2uzL\r8j_CM'uOB\"Ҹ/t/%-T6vډ3j14;Uv1nP<𩅉q0Qf՜\$.zDxN`p\rևc fZ(\n/D\nlCI5M7pqBD6#O!f[Uo5\n%_yc/ԟ{vsM1\niZT5xwT6>ey+LkFpS(.12RɇYʢ{`\nS!@N. #rY#4kUK*gz>P4/ Ŗx Ottx3xSK Ԇ̼ޠdD0sSWg?DO(cSS~vSFv.ss6J9զ=ĉ<YVrZ5PoGАW~T39#;ZX=(BG*bP;>\\8DeR`c4* ֣48RB&\$?&&b\rnȸFH%rT0d&zC\$@> 4`dp.tݰ8ct\\r&,^rCz͇ {&]8&.: (L\"L\n0#\"B\"8##k&<\np]\n#'<,H-\\xR7Dl\0cNJQg(<ΆLڣB©FZdXN\"Kh\"mdqeyX!btP=919'Ljv13V%>uqBă|czcF%140 x` 4DOXx}Z1S4T\",Qcqűs#`% ̍P(54LB~8&\$\\]Vg' K\"]\rȴ g/`wȴHBB֢J\$ gP\ro!\rBC@c5qO%a&)&LU4rW~*҂`q[2RCg_*8P/@m`qdP<@{h W2 \r( &)2\$.2妶y]-php\n.-BRHCgCyjy3-\"qtr]23:ƣ3j0K4' Yh(b3\"=6/gQ6 ؈` GvS@7D 6* q8ӐhdPTbvxPG(KS%<u@l\0hz5Q=qf8/3 \$`ڲ8\$HMfR>\rp':'BbCvk/VV#bfPQ-GogCa\"FP O `4Ʀ2i;5)Ħ'lr#T@HZm\"A&Ħ:\"!ا(|\ny#\0Bd0k83N)4EJZS\rG<JwlKMLC&E0p,Mb'a#Ђ\\-T 3!CU)V\rڌ3[T_x,(bk\rMCWUTLj qURWl\r(m[ !R/nBnާ\"RI\$85Ӄ{R\$T8 6NxBmTcg{Rc~ffmM\n@CCp#(l*";break;case"he":$f="% )kƺAAvUkb*m(]' mu ]2וC!ɘ2\nABE\"ш6\\׎%b1I|:\nh5\r4-\$L#@'b0T#LIRQ\$c9L'3,.N( \\aMGXk1UPtfOn1[ SVqClql{Q/CQD#) g+n^U¤VnBi'̱k\"1hDAb;9QӉuvGJ]/)\$Q)\n*fy 7L\00Ľ 2a: 8@ཎc20D\$C:ziJ\$k/3\$)j:αFM v!DDIz82 ۡܬKHS(3)0K#бHL9 kތI,DNBåI|a*# 4AB\np09B13\rAP`@;#7A\rp><4/#0z\r8a^\\0D@8^2}YWC ^'/@\r@7^0\n1\$N2 %H9650Kd#M\"9\r\nRNrO6ƹ\$3j\$֒(TH4!O<`\rs9%l:_&0^M{T192JzĦRO?!ƴ\$PeB% !H&%)8Ĝފ2^!\0(KMku1LT~h6M\\ۼ)-ף`\n:,mx%*FH 72ϲJ %?NkʑXpZ '\0:pej#S9 #r0w\04AD/09Cb\0p܌fSW)i{҃b'e IH-N )mOLK4<H(=8LS{ \"\$'^ 7fޛT\"(R[jP\$918X̓CV@ZUlҼWaCVJY9EA>\$0(װAi9DVdh !=w\nzj%䴕CQo>DD8ʻW`uaK)f,\"ZKE\"\$@RjDq-%6IҒ|(rPDSA/#ȘA\0h/Z+.FC`lÐm 40gTS!: ;T*b&P /-fE`j3ɃEL\0\0('R@Cr qX7)Xr\r!`P2ZB/}G)YfZ!r,ݧfRp \$r\\TsCjaKCUhq-FHc\r+_ixc .2.J. @Wb =܋!C ,q\"DBJL,dGs(΁r*#1<5-2|H1ډ0a8 T,;QDIdIk %7:R\\(Q9bq/ ¼À˜T\$HU(d\$ݑjV{¢ I]eƋlE 1*OJC<GmʋBbsQrF1Wdݫ#{{c:%V'zۑdl,CCf`#n1h9W\$ӏUsḠ6K[NfбSXyG\n_loE8 , vx#]w\$6|Lѣ!%c)۹sv_=Źf7AM \n#KkK~1\rz#DI!|@6Y(soSG*>eC t7-8HAdMy焎Ve%*^phȺ;\"{ a2 :  q> -C٢P\n<bHV3Ƶڣ#X\\}K)2C }ATPy!`(бȑ/Z\rƷtDe!jokmrTꈩ>FJ8e >޻ʨ:IwDD\"'4hE+P_a\$nq̫%ЙnFM\"(s:Q6(7}\r\n=hr0\$۳Im6hI!yJ Qx#@EI섽d,<rQ^Gߖ70.{`)|\"^^ 8M@fv\"fOe6r<'V%zn瞢^\"\rAۜ;\0ȩb\$#\r[ycX@ۅ묗X9P{gچ'd~NϪR̴~vErd}n lRJ.- ncv\$#JN&Of)84%\0\"#!\r>#ʿl(˜)L%未dʃCޕj𻫺OTkTqpH4\"hXDŒ\"ViL u ,eGf<ΐςJG,\nNO 0O t\"J%U\"oM\" ͬGE >oX qq\"/1!\"DsepZ\r if\$s#[q`Qlsƨb¼,:\$\nB\$3@gVoOLW pF-/o\r 1*bRQo(@QqB)Ι3MU q?ɞR\nĂј&\"p(NKB\"ג:f1#^ nME1ªQaO&?bc '3Cމ!\rp[fk#e\nhL)NO4`@V0!B<O >dP9OJɂl4@U q+/O\"\"gL9l`<_2;bЭcD\rΆF䶖dT\$tÀr;!CT(\$zGlu5bCP̋hJ: \"MD\$n7!HS#o\r,\"&07Bk…0XKsh9Qd/: 3}'&sm7/\\e\r0sưj‹O)2 I&(Ɗph.*jnB)\$_-\ngC!n\"S'c@\r@ \"Fi 6ʂd";break;case"hi":$f="% pRX*\n\nAUpUYAX*\n\"baTBtA4!RO_IQ@q*`j:\n Nd(O)!\"5)RW |`Rő*?RTDyKR!\nDJ\"cU|\nԳu%g\$I-=a<fHQH[M._Dqe0̵GYHsz.K`RC3ue\"#Ir UIB#RE#ɿ҆>+5)\\/bHhjڥOMh\n+)HP4J*\rj-O4@#M-H!&1|H \",LD'H?Dz1Ӹ20c+2s50!H(Rj-ȓH K;\n}'4'2/GSmIC55?DL(+sXK4'!5Uh+\$I/E@H/R\$- &OķK2[rɉ5X2{94OXI޲Vrx\"MKyGoh3_i-T j::KWa'UHRay#E%Ae3F-KV*},:.ngH-պ\$iSU.ӯCT=&U\rdj-S Du <^`@ !\0D49Ax^;p2\rH2Ap9 x7ヒ9XJ}2+*@KS^0tNڐ͸ѷ>M)6\"2\$J=FcbJ:ݹ3]թy\"mN)'a Oޤ\\@At۴0aG zE}KX\nCnSE}MIE#6!w93vD\$uI*;m&0uZaRl;8: GlA|k\\c>*xUMÃvhL~%\0()\"*l'wYLf}Ku fq\r`[ KOX 6>hVdu1ܞ0nnR\")Db\">ph(`mLFcY{&u]*BDJYiQ![SeȨrl _EԨsH*vhͺ|e¡: Hӵ)ۧ2X+NNAaIdLj ,3`:MEm_:2‘`AHbSfȶ;WlȞ`A_x5PxR'6NCo2)Rrh s%O\\F QPuB b2\$uL0MK0qOgR9PTG-4TTJl\rR\"F].6ܛvo\r7\0p!8 o\r:\$'R)Q*zm4\"VX͙.g#n*'bmojZDE~Vj^_]j񞚴g-e=s6Pد2V[}oW\\[q8<G쳐s3n9rd~ vDU>ZՕYkJL] \\(_EӲ6MՀ> Mmf]:+B D\"UP+ҳ*G y!\rJ AkW5%R€H\n!PgAAZ5>@g!G4-zb\rMBm.sQ#+T;릊D8p0qeHڇ;NrXъ:ʫ +l̪lS\nA*`Zl qH,I6RIc+,BcM֫.9?҅K9em+zo|QYюϦ;J;33H'0fqQ1]tZcwRn# S\\p\\i|\0¡1 O.ޢCS9?Ugn~[so IT\\ؿ#!*e;Yрv\"t#=ffҽm\\46uigPN~2R'>&(\\(&ذ}є|'y}#H#5{qM59H37@!>oNtˠzSjf+1mvFuSi4b4_<_K?cs]vd)94qE&zLz,\nLV`3OtsvQۻ 5n7μe[^`o!<z~sNyn>|:Ӄл\\Ǯ(dȐL\0\0϶). Jt/N*0ڤJhDy\"F\"Ĉ0<*H(p\$ \"b?lbymd5,r:o8(6p{{H)w>Ho b8q\0ҾǼ @p@~-J^}P4ox~ZExDD@g}f\0003M Kbn6.]TĈJ̎\r({^v1 jDp|GARpLjQeJjʼB#n;,j3`Bڅ)\"1DffJ}3 ?Q\"UJ *]m@ƪ(Flq#*Y1'QFtY)c\$C Z2NАb4DCaY(l|Ln!7\$m0pwĻ+[>9M\r+^c#4C'DTr)VqwRϰ6C6)(H>R{1\nZ[oD\r3\\Sg* L@d3\$&iiY3D|(,*N.JN76RnNrdw\riSp-G7dhe,L\${IP#y*@#Q^\r(SܑnM:IGP,\"r[ h~N` ܝ\$>ƫ(ʒ2~k\$ &`uVe2ғ9p!8cDitLmFL-7M83I9uOFC39]ުs,ptU;g<HL8>h}\r\rIHy3JZ''4(4+:S8JlAD_=HbT\$d}D]4tyNbl ' nƔ6oLԭL,I F7GeR?NKK4\n#n]BFOSDMQdsA)dMnrvENkk@Wu©@XCJF\\P24(1\\lnY꛵&u+T[\n(/Qb?\n*fyqe7TTP_4+v\rJTQ/TU6aa˭`HTKa/\n\rX1JheJ)THaOU9dDdUYUd6XNlve]iiM6˖]Ast:@YiЪ-+Mzv!6P[VP6I4bTEu9li4jg'l%6)\0gX Ckxh+n>}aVpDĖ<F֔VS6G6eHorOs33nE&79ooori+sltkLwIuv37\nӗ+u7Hw4<YnbsxD_A (+qxDuVu cH7Qa4x]?cWAcyfnw{|A|V9}_~&eԗ{4Yu-7n7[Wo.GowL2Wdb(cҟ6W}|67M*fK}?~C\nܺJe3y1\\QMmkr,S4nT3kpqiaTWww;rn2i틊4l5#h#'hC:͗X 6\$nnwًV͐~ M\$j6\rW5^/,\nZ n_kL/[<xZVSVS|xO4fҕE% P3D\$Vvf&8JXpݓ)1j-Oj!F-My;K?!בuJTZ d-7V#d͘`yyUN1-rk<(?e-(QXS@oqdKWk7c:(h:_ Ď~!gd#\"TZ]7TL#JBgXd&37youw;b8k9;W0I :Cb)蠀sWzH<[n/r<PBjCR<za,7veօrk~1(u\n V/2L\ng4n2X|Oz\$\\X&CiVހ";break;case"hu":$f="% k\rBs7SN2DC3MF6e7D jD!iMNlNFSK5!Je @n\r5Iz4B\0Pb2ar\n#FQis'jbRI;g:ڊlƣjl&虦7C IiMc*)-kC2Q\rZt4Oh97eEyAc;`i;e:؟Pp2i3D&aҙeD67{ɭWăc>O]\rO@,j).3B:9)lr<C\$,2\np9\rT\"<OC\"n9hȕD *ΙA)P=,@5*pݵϠ¨42*\nԠh\" Ȣ%\r##/E\n.R; AYO#xB : H25(cڬ#b#NŘ%#Pm%A<T)CCB( S\nVdh7|qG1@3qb1Fc49IrH4'c0z\r8a^\\0ՊD]z@P2~\rk?C\r#x|\n\r:C֎6,4\$mG\0cT)@M\rH\rP\$0ZN:9d晵455z˂|=v3-4 :*+z0\" 0:a\$6(% DCL13֕:v3>b49XHB@iKNJ[X7Mc\\Z-|77.zf)cH?H@9l(Pܹ2\\t cec˶@B|Ki݈x ۾8(:23#㷊Zk@7Y<x9*c\r(5{KdPc EJI@;6d݉-g.vE2d9 W%P490i ԝ|EN(n\nCN\r}@ DlڜÜo T\n/sR9V35”;Y <0aL)f4\n)5E\$,S`U\n\n6.%iU8V[kt;Cr\\hdy|!8LzPk . 3YJ\rPXDJA]gvQk-bM.xq]t\$!+&IμKM` J'TEcaCldTO=pW+7\$@L?<4b%!=HTi@eAf%وa -+hD`+C]x /l!N4;%\$]2624k3UH\nԆSs\n M}ARPES@&7>ù%C D(\n*NK(\$AfQ5\$+e\rŹC aB%D5*ko\\MaL)bFwb\00l ˲HU;CrVKIy1&dׇE\n'f.^O*/ <hJ:tn bv[s')C&2MQ\0`֯BO\naR BqG9ѕNQ9f&ܥW\$=H\nb@)Jv.*T&IWݺ& P5[O =*F*s6- Lzh2̿)X\$9plm͎EJpܲ ˁ(2aY`~p3^z& AqmPo Fahc 58yc@w^^m?aU'h.Y \\V@*?Y\$(k p::ذ'<+H\$)cJA slP}o*ɛ΄X1C޸ l:BvH5j<JTbvC(wc\"& :?^RxtFE:؝m'W<z)O!3Ypf\0ذn\$3*zxk7|ģCyC`8Ʉ5){&WbD)4T\n!Ax9܉eYZہyڟC^vf 3b1Ѣ)O@e+{r%ۡ?49k;!:9N\\ I׋'_޼|o`x\"CFJ4>\r28,T4\$ycd;ǒP]0h;\0MNu1ѱ(oN)\n1oa1?,b.cB@ip&bWp )!?hAl}s-\0AŒ5C5@51%eM\0:\r02#BJ-X4FOD6Chѐ0\"ML _.l~\$<N#L&#Kzc渢5X/``Fm~T4\r,԰ f lL1%eN4 dcKh\rELH>l\0ڇg\\:J \r&dcOl *<\r`\nz Ёq)sRx'qTlw^G1b=\r|CǺOZ:h/lRb/I)ыg l⃶nj}ULvI.+01Qdd j j@GdN>0P-6r2YI R1h#\"8)/ Ez<\$VEPhe\$pR,0CXs1q F~@G\0LgdwX,'# )6\r)z#2eNªl)c-2l|Ү@R,qO-0gx b \$`##vpBi\"Y2q1002\00Ή`.54Bmp/f//\04S66m@ȧ\$J\rľEAS*5|q235*|sx-~w8]c-\"*3;9gѓjRhf+y<Q&`\nHq,B>?ß@jV<N ~QTs,\"t&U:T\$]3l\n23\0tEC>t/,QD&DBFRh7-oFNF@H83BBj#d8pw# f#?:J4J8iK/KofԽJKC~р-#;2`45m#LcOQQO0SOqOa\0k _Ezkœ\0̌%@ K \np)&\$x-0ޝGUeUVGU2\"\$\",\"M &F2bD\$~r^ \r5.@C (.>bУ'GU>RTS˜2\n3I= ybT eWȅ]W`?ce&?f*RPNQ,c1pFN9Ms\0LqBgr Lb!=a!\0Bf&0T2jcCb)*m\0\rXe5.j 5-[v:m>\n `PD`sA1j#IB&,*`O%am+bD\rc\"eb4\r\r8)\\\\D.f@\r";break;case"id":$f="% (i2MbItL9(g0#)a9D#)rc1M'I>na&ȀJs!H\0Na2)b2ar\n%D2ÄL7ADt&[\nDqegQBe\$i63yiR!s\r6Hqj<PSN|L'f1Ir\"ɼ 4N#q@p9NƓa%kIt4V-K7eLxn5b#q)53򍼈e_Kb)\0AuR`Q-\nmipCx{{p֢v8@H9c2\$Oh \$485mjTJ4\$K Ώz6;Dزj+\r((މHlC1k.cC̺^iެBj@:`T!jȚ2\r;c|)1`̍K\" l'\n`@1B3:xQ8pa} C ^'.I0*87x\$Bh4S &Yz !,*(njcjht+s\"7E,BX6I´N--Z}LA\0:I\n\" 0:0ʺ@#/34! \"ȳ9:L:Kk^5GJ4N,?gCKl\r(܉kB&Cб;j'4[i:޺\rضm\nNja x[\$pBֿgZ!lኁI\"\"kec̓a\\u46.ak0@q(;M+NCx30D%;*\rt<?#6:j9R0_Wv)2SMKkN\nJlK(>` n'u(jSjuOF,U\0U* \"0JYBXLgtHRڒ~}ƂI\"Mf*.Ë-aIX\"T\nR*hUH|}:wR@o]Tp\"a&wi\\ Ar !_#h#.SPQ#(\$ pe 4QDU(()@[>\n (r`_\$n&\0Fg)\"t!8 \r6M\"K '!zy4QA(GUt 9@:ppn=H)b di:u6Jdr l-C C\naH#Kr5Ap a؆ײs8 2e \$:DAE0(QY]BK3&!8XL7u\$LLWtPI\"X)H@eN8 kCR*@(r'Dd@b:gɐsNV&%5r(J_<^҂e\n`٘Ќ%j_uM9NyKu`ϓP*Pe\0D0\"k6bҁ.Y<b[\"#i ̱|SiZ<oSq+l]k6D,O}(V4Kam5oI}ɴ EVԙm}4F\n!^VR;o+X&a> ,7ì ›e1NtC0Aw09lC\0vFE^4U+p C!%\$[M%:5nCj+scbopb%\ry y/NGuxCۣXpqrAa Sbn@ Iq;x د\$lK\rIKTJKe H{+4hs&Ӻ\$x_/!+Lc@!܂F+:C\$Hy,۩ftQ,\r6'NR`i'ue*Z\0)~KC;58ml\rqlB;5lWLk<1(-uKh3[ܙ\rSǍpVCx8(+NaG\" \\S2d;QGc\\ג~bw@ș(rc1r]Du:QA+:\"QX\n9 s.}puρB7GP_V+W;i.i91q-ZLbE2\"|9|jhd<8 :@cJbs=9|=yؔS͒@PKu0᭟(04b@I>76}Y= ү䎂O~\";.JhLbzd\rG20 YU/H\"9&\"p2Ep/&ϦfoP@\"\0a¢K` =ƌi\r;l%VnU V1nPo#G\"5 k\r'c#p fXCd4#PnqF0 6nj!\rλR1) q \"ĎQºC, S ,Q@!gjFN\$͐Nj\r,RJt4# LHDТT.ќ\nq{qC\"@ P26\$r<F67:ݢ^\$@Kv}Z 9'؍mPB\\hd\rVqt!e~b#~zĎǰQBDJt'V\nZf-\"Dկq#@Qdx+pMR \nEL@A2,*T6Hh\"2z:*[']BD :]n-Ât=c'Hx!CKP~b-ghiB\0Wor'gN -,1B&dН 0--fECd\rP4T[@N\$\n f&1HPԠm/ 3<, 3&b#B R4̒#*T1k-='@K GfBG4xED5";break;case"it":$f="% (a9Lfit7 S`i6DyA :fL0č0qL'9t%F#L5@Js!I1Xf7e3M& FC1l7AECI7!li((\n:Q\$c9fq \"1s0C o&5:bb14߆,&DiG3R>i3dx_!'iH@p҈ &|C)yNȃ2bclD8&uLrs<Ix(l̙\nC9.NBD:7Hj:< ;\"M\0-jRӘ%\"tjh@ef:H\"1 @</{4-\nC*O KsJ;4%89 z1/`P!=%r&\r<IܶL ɸ(&:°R0cVs΂!S R4/#0z\r8a^(\\0S28^7~+t2c3 MPx!L+0=QȓY\rb4ىJ9-C3n-\nR):\" 3S @1*h|wꔃ\rb:+j!׋\n3 7C*&xX8@-@/-Bm+EvR'\$Hr'<?ܖ&5<je s3)e٬9\\ aȈb -P;?rt {̂ r\$!6x;m3(ݷ@7S䭙\rs,!@6Ó2|o/Nv6: nγΌ.~\rJ5mH@aة5-[r./=|x;Ź?Ol4Ô=8=:BglSb\\4J~xc!-B)` 7 \\B+pA/&\r)De}#r >_PNsC(f )m#ӶR\rb|elUr=d7p@UJnJP=b' SM>U UXq\\:A\\Yf>MlU0I OػʏKWL b5H DJS15O*D2YV (x-h7+UnÁ0P<^C]\"J3E:ti\\44NF<hEDw`yCy6[X@ P\0azD?hBuOWx=hF^M=.})Ih%Fm\0PJb\0POI*r(LP6tMߡv0ɒA\$gii)ȜJdh֑\"V :&\r\$fnt4Pt%#Rąxk!!0\r-^D\$&o L04+ (WtG \0<4G\rm?RST9A\$p]fXNrBT'O\naRԲ1_QbaY;1\"2`Pgl-{;P\rL+ \$h#Iƕ\r.80eEf/RNKijm\$'@BD!P\" E 8+]W~WD|=hn'JA+-\\an4P\\w5񳑩Rbb\$@EmQ87[A!r>\r\0S!332D1 LJkq\\`\rŤWZ+i!Q˖܈>% %gAA?,!8*q(Cr ãR)&M<45³553FHt63 HJ!lG?U[-nwhh=~S`Gy 1|*^tCMz,ll\$L5ih0=5ye0Qr-ۦC \$GJȁ*j{0\0 \0\n`D0dR# :̄I,Yr ')́)i#w^;w6 1I=3y\$qLuDnms32J`SI(\\B65y4-in\"}^[Jq)0 ̹ZS\r/,\\COk!ўcc+\"̒nkj˒ÿ\\9X1 Llɖ78B '.\nzyP|IAZW% hB`g4g-_UYa0x7`0i19cB>cSsfŘq1ߝ:OBpCUsnko/-Gp\0001 @/C\r, 0 %:@ \r(\"b?M z]9\rޤš䃜aC=B&K\nr<2l\0kG\n Y\\bp;MP5p8+o\nGSab1C\rU pT:Ţ9<e0*\r J2qqo|\0\"0 rFzp@FL\"iԸ(\0\0\0eP3% d ơB-apcE.\"<89g\n< p<j-:¸(,C,--n,/+-/cMq9QXӍj6ǂ:\n cKr&e tC7\"\"#Ϲ\"D@ԃ81L΁-XQ\"u`MW%g D'j(\n%g)Q'\0 fHګ/ ]D`.Nƀ.L>~r RtE\" 3\"24fςE^LN\"(F(^H(r 2rxF0) cn\rV cӮ=)[\0`x#JH_'@\npnbVj3`>`)bib\"@QGQ@W*?mOӜ\\ÐfB\"32B \r%t30\$@0V:i\"4 Nr]\$d`]N57q>s ?l +3s?TMB-Cl#Pe\\̔B3\$悽l&^kn'\r#I\"c Oow+iep\0><4xK.L.L\nt`MƠˍ5\0͢\\h\09^b8";break;case"ja":$f="% :\$\nqҮ4(b*JqTl}!Mn4N I*ADq\$ ]HU)d t'*0N*\$1 )AJ堡`(`1 ƃQp9 b:W&K<^\n2&(z>\n\$g#)eu@xn胐 Qt\"ʊ\\q4\nqCi\"VηT:Shiz1~BAXMWe[WPqI9kG2YaA\"ʅK2zė:\0T9S3P41y_yA A\$#L+DOHU1z_QiL T+DR\$MA_*cƆ6-RHI^ӵ%YW)~NC D8 hBHc|E%qEjs,^g\$fi @G%Br;:4aK +\n+bsKJs)sC)P!/rDT0AW\\!WIU^2L%ɲQrsqP(b}'oƸvZ񜤁ʄbAdRa'#2O}^Aiy`\\B951D{'WȂ2\rH2SMrKԴD 5me6Bs, /L18o@420z\r8a^\\0V\rp^82Ø奈xDARY`|ݖY~\\b9lZ<\\tj6 VAQ%o{t!V!siLr\$PEF!pݑơ6'\\GI\0QgG[@EgI\\Tbt8Xu^Bx:Q@vs~>[ F%U?\rT>@E87MB[I7ˆLu OVIHb\"]!W^ TзF^H=mؿN'}J!t2\"+mg3}ˋ<nJ\r\$VJ\$'Hoe-E H\0#jݻb\n1kBTFB%6\$!\\CJF4 sM\"RDjmexPCh=H|%9TGB{3) &(*eBrm (9PP4S ^Z4WIN\$X̧M3M,3Ô_!kZRH9+%͡\"\nj-rʓ!\\ō!TU,~ȁR@1n]\$4 A! CWfY9gl-i\r)4pa5i N82=vi?d18'ϰUI\$Ab[>\$BRYs%Ѐw1t0ީ4r3@͙:g4&A;Iim5C<i^E\\`EA\rmj5PC|m2>DGVc,R](\\M0-؎RG0P4099,~CRGc\0S&RT|tA2@PN7VʄcDAE1ZHep@%ÜDlBby92GI=+\nLŌr#p^6gG&kN7ҸAeԐ\"s# \$=˒IQ/c'(AU0G#FaڮM<\\ P V l`K{/2TݡTL 4)1FqfSdӃQ1rC=%PD !AyRZ.Nie\$\rM#̓ް¡ YPfp!Ig O+2 ?E &\$\".UuzIUXəJ\0@,g\$a*-MX)r54kFcZƜhALz31,:DmոŗR`\n 8PT+@/tD%\n¸ҟu++,F!p氩E[%t}Yr\$}|9( Flmx]O]0c_V\$\\\\.;zTuͅQpRg2&TsaVR1EQ /\$&ey.QK!<Tt^<\"EVD[A>U \"8T;*+Q:)(/\n)c]+8\r/ӛfB`*E絈+Ȇ#%<9' 29I6!t _.\n^m x+F r`H %/|!hDHC\\ed!./X\"oCc\"\r\r+s#atod0!cj2[.( /\r(DK+;l&)̉x# [g8\0^6smw%0AJ9 o.o\n8h\ncP+\$s&H+ =!:aBH(:Fpp&\"-#*;-DQec8&0PЛ A\\m:\r>AZz<J!~(&%FlvG\0NaX89bquf&oD\" Γѐco=2qg\$:0 m<G.H<niojgiJ1n.Klvlw֑p1C14rE%\"r*\$΋XfnEiG qS;%J1B/~h‚t7 6.NP\\B\nxB!lꎀrT]|2&?*KbBϲ^~Nwhm*q)H;&%q'1`~ d%ap/l<!xJ+hr4x1BB. 0Z8rNE!r-4(Y (S0L<RGs&B/!*GF!)*W 0\\z.\\}z??YszVs8Dt?&%8:SYT@*AS9M64Ax0\$bXзˁ%f3G5jpR! @'\0pSi41A 0hHf*3]&.BCC3N*T.@tUCȰNxN0\rAC^̂F\"@.7224IHvS9.TD(t!4,e,QB+D4ZOZ\n^.\"u*4M*nRJrm\$%0D40t!Νt7U\nYJQ?ooOt4.Pb./C4J[[S/+TTST?u8[hE{B\0\0*U\",u\0P \0%C`XxZCUZX5YP!A5Ia4Z0_X@uύ\\α,ďlx_DaWUEP\n/sT.5`gKRZ2, Io7jD¡%c'v;p3\ng=%TsGu]Ь4Ű_-<b뮯eye=#i\rWC;ENfɱ.*1*\"`\np)4A-ڬ]3K\"b,\\S8x U9@+9!\ngpOː&KlFKl-oK31b:aT#\\>.-IL^&4r6\$ <~oYlVu\ngQfm'uhwm}Oxwz!\0wB1y\\*j\$֑yH2'(nGW;R7nb\0Qǖ©{\\o!6P\n `lyA?uH@1B/(+epg\rE,.m'wvsnOwx3#c@HNBo r%P/%HEULLa";break;case"ka":$f="% )ƒRAt5 BPt2':R>5-%A(:<PSsE,I5AdNi= 2i?cXM\")v@\n FC1l7fT+U ]MJH^x894\${]&?M3s2Ԏuiz3`̞*Z%\"xܢoJitҵTA=D+I? y12EQ~\rux.ue}2T?rNSzhĬ ZԸH:\0'i.o.ķIă[2Hָ3Ђ\0[W-o:\rp \$H<C'€or.+(dɒ.׽\\3)VD+&Ji01Vn\n4 -c+(V@OPS-P2D.:2ֶL\n-KaB<ʺe+Ҡbdq-ULC:zExLSk9=~\\ϓbԵL#1IRʦNsfrc75 dv_;(7j*QWCNiZ1P# 4(Bn0'M[k.\\ݨ=B׉L_i !\0ΌD49Ax^;pÉb\\7C8^2xώc21x? <\$i;_ =djպ)Lđ%uao6L.aji>VzA-+q+hǹWNTk(ձ.JMkkbENO6gR9o\n'IlM\\Ҹo/5|' w>,ceq JHu?@5/Aղi~.)UWn(AtBkgY(Ⱥ6D(0lE\"bIQpoqÿFs~sc)}¾ZE ba}\rbߠ!D\rY2/(wS0i e:d;pݺ\"fV bZY,\0Ce|j{lp\0Ct CnIyk|o\r4y d>4@\$o4őTIҁ]h|}%jP&T̖f+˙&'&+1X :M'PLIN\$e>TrƪlcW,KiM&u,]4{\"h\0;D/و4F*\\UaYIcWuLd8gL4\0ШFi\r)(t\r2vb#& S1)7eqB<``_&A>ڈU+ƙհ2*bV.+D&4:Gʝ'&H~yH;Vj;g6'G;Iim42KiZOZ~JTH*uٰ9V!(S9D\$Qib \nMjH\nn(j&*\n\"ZZWD/)CddF3^jFl * gy*T Zʽx'N >Xy71 \0PTI[!E)<iכZ'(~9uq#'e[R~|u=sƶd1Di)/hQNF(MSR4#/i\"#V*b']=aE28up%T˜Rc':kVF'vk tXVJPVIWsn3շe[pW7kjZթs_WI(Z+JdlQp}9iǥ'LXbc;Լ NP9\\BIO1\n<)K}&\\{nyƧ%1 Xm< Y9{7gͣy{d-_V P(ŭ؊m\r^9:Y`RRV\$2wF\"q͹d/9}\rt\"\r*XКBaNa[_<bUuC`4EAN%\"^lm>+ Y 8&s[\$v0(alFAו4c{L<<19\roR-ZƈJ8}nM⦹<&%W캀cX>d ɗ08w(4s'&q{\\Q]U{C d8ءfp2\0ç|ho.t\nv8M*+1_phb:0@o\r=U\"{hڊΤ]O*(V&G\"TT&ZKG\0@\rb\nc:#B p@\rbd€u&\\mp6`/2 @CK>kC t(&Dzd_\0CJmkBD8F \n`c\rJrQ4uHvh(1DdtRd ^- m^ZUV'꨺oI)^D>% @dL{GLip,YQH, 1hJ&EPm4nntBN䈍q>ר3\n'6NizE>61palpfw Qi1 дϢ~xdѢp%8<SIHX]291\$nc@%@p2S/%V#,etl:^ KF@(LΞoqعCD3\n\"9dRM#rtҮҲ-B}'nGPhrZ^5oI\n0ĮGF\ri\r/\r pSNV(IB\rDr!4r%qο#/jQg&4S7Rk%4O \$ҝ\"q4P«|A5*-q16\r\"V8qo\0tw* 5r54s25+ҘQ !c;\$.+2~K54P+==΅sm(pcOd Cà \0kROq*p[\"TRz|L@K\"64{ANH.d>U-h:9 zS3NXǸxU\$q AFV^9K\ndS838s2^,s1&GOLm>!&EK.\\TnnoH<2=BeOO\\AL \rOQ/kN7eRQO&\0O!S\"EY%?ҳ@2'1G(d%8q\"q%UIU :('-S?S%|^5e5C?mlR4^#0 ~̻Y\$BK[<Y\"ǞU9[SY5uN3N}D u1e)t:Z>s}`.%,5^Oa-%auaт('[a\0ɞ}6C?OU}1HXnYԍ1[a*udȏbY6W/-^+1RfC>\0\$ \0bc6֎i&-iօj jvi\0@L c/k>V0WQeO8}a34PXrf4p\\;d6ւ^gh'xU5 T1P6U4W r\$)8D?n376{loV\"4`Nd{o\\ZK>[F1r'=\$EuX4qrvT [W/Dsy.9<Qpvv#,ȡE P \0qpH}!CO+KwV})\0\nH^<7nQA\$HDMGM.ڕfX\0V[bWR|oM^~?+](s5i{ {QH\"OgGum-\nХ zqucroR\$8w8E8x#Fx\rpNr1\n_pVd<MGxqm6N>j#&2FR]mgL8&eK3hK^N[@&,=>N_Mǹ+%eJ5\"{hUTKjeQGаy6Y4WOTfH<)xS>swB^QyE GL8l[bՐ&(qp1'9HD9XKrnG51qr6\$[`,˙۔aZ˦4A ";break;case"ko":$f="% b\nv\nq֓NU)ЈT2;db4V: \0BapbZ;aا;O)Cf4(s2Cs;jGjYJӑiRAU\"K`I7FS\rzsaV/|XTSɇZvHS^+v&kCi=#qA/iHXEl;Fv(=v!ȉVWj)qss])Kq{fv!i<Ro@Y.H (u3 P0H3kN.\$zKXvEJ7\rcp;9\rV\" #11(@2\rxA\0:c h;#\"LsLJ^ G4T(izO4[M3AV QV7 D**>d\"5/\"p\nm!InӸBZCE%.S/DLArBl<D]LnyNS*u:L Zev(E# -1z9|!Ȳ8@0c9=ƱrH4\r㬂0H%ɡ`@`C3:x\rpFQp_`I|61,3F#lj4px!W^St춂A 15'h\nxv/2׶.Y {?e)%Sb.RR\0PJ2@僪Z;a/4Q%K<dy2 @B 3 # :6!Q: NHq2dLUY@V.\$4DCڥ\ruePܐصdt9c \n\"dU\"esЯ?SUOu.5 AYND|Һ}wvA_^R_2Dm9I- j9Y(\\ZnL\0lk\0ShPƄ'ksM\rR@CsH,!C-zK9 Y9%p9C0i \0002Đ|бFa9u\r.\ry)lCtd+V*Hraȸa%DYg Jb @ :䆻Wxfr@6΅EbYnp /\n)gk@ Y {@'ZTUg\n T9^ nZX0c2.Sa=6*ûcs&>Az<aњ2 D3BXCz!JqυQBr%}%H%+FilS\$ILZN`%6 Ęc jc\\Ǚ\"GNVPʂHm86-_aĨ[.ILp'l&%@Ԩ3R#e\$Jf^#s%r.Wi\r,1#-n3PdO.JtZWk\r<0@bFڔq9R RqP&r{i\n*gD1BD\0P 値u*h6gL@,\\X \09pje8/[t40);v#C-3xF#B'R5sehLb) R2L6#jЌ)b[YOA#38)LW;!2ku!.b\0̌lěk\"%Lr˜T@!(@@ [W<)L9!9XԲea׈Ą\"\0Hђ%#@\\/' VEeйT0 )E/@[`; _ĨtGM&ת^9D\nv,Xt+&.\"?O:#jB+QZR+]o2B•xəm` |2gu~РZ|-4i@ԙ7ro9\nlw٧w,G\n5 Zx\n O55(3oZXz\0CJ9+pBP;6tͦt'(\0Km.lNi\n ZVkqpz.5\\mD?W7u6kerK\r}KqÄO(BCl\"}6ޛ%:\nf-A276B&#FuY1ir588.\"؋\nU&ɨV\nPA\nP 01i\r(0YHrƠ_l t2x#.U9K<mkXCt\\#:1(z+\"@6///g wd%XnT(9TcS\0P<U,M.>(B\\0\".xFDx)!J\$jGrolC.3Z\$tg:lTUʎ\rl̖\$ \"hNTб\n0\\8#\nf6-ݰ:k L6Pب~mi\0j`UA.6NO5 GF\01 (H;iM*/bm}p\ru.o\rF%\r\0@rڑ~1  XPgǂ׍hFA|7G\0G:m1,m\"PCqN~#3Q'L!t8bW#z'1JӢ4~M!\"Q! r\$U1NT5p>bj\"\"lp2%&zTa DЀ2e E%t i)j(0~!#2&X1G5#p,#-Bw\$hR&vy\0@\rq/R-h*o.OH ~D\"i1EDV#b#A6:=rg3̳3DS-5 \nq#g>ҾOC=6w0NLu7:0@{7/ړM5/sL!62:H!:!pnӦ|ӄ8hE#\r:<q6\r6S(%#1%V/|v9: 1 BGq -ĜO/@%ȫ\nr?A@'&\\+B=-9 O4FóWDE/8gӫ=gFC6DR1s~3U0,Jp+4+>4U,EԓH[1rM. D#< @:Ј K>Tnp E#zT-\0BB 2)#JX MMpRaaNlN'PO\nB! p`l~*\0r.GJlh\r ̑e%`Dt j\nZęQ|BWQB48ʎ@A26N(#p\\ƈv9 B#`Rahk#7c{ m]Y)d}R:J07 FL2&/-:ÎOdO )\"1K0uPuLp@DCR/a0!3+jKgXv=I\0ȗGTE [A6E)/4E)a'PuCb'(FM֖9S\"Ds8D5M&c~! \0Yu3.ajV/6&\nb4:.l8߱䣦p'&ƹdhS!\\v04*ʈoGQ@";break;case"lt":$f="% (e8NǓY@W̦á@f0Mp(a5& scb!i DS\n:Fe)zQ:  #!j6 t7\rLU+ 4Y2?M3te>\"K\$s5Ms:o9LtuY),#)gALEuy&C\\MQp7Cj|eVS{/^4L+R:I'S=fPkʼL nx\nO4DXi:zE?FIJC\n *[r;\09LB:\" ,,\n9K7# DDc \rﻎ޲Rؼ\"s2h(֌P\n*B  2C+\n& 5x2lĨڂ2'/(**#)#\nbz_.spܺ\nm+OT 6X7 F8D@0c0uzY x@;Cg5DU\0x\r hC@:t 5J9@}C ^&. `\$7x#\0\roD(C>%:ߦ)V9?LТ̣,\0V\0쌏C#*P++ A 4yv`:+ڄ6 İ4\0P6*PԶNL2)\$_WD#0CXIζ\$79b ӈI%\rI:cc c,KO1sʲu\0\rc0آ&8t\$@T24Ó/bZF_\":?B}mĺQN޲d2aP\n)^H\"?L2} \nhi'DKt҄UP0`!0be\"M09R\$c\\%;2..GE6X<_!Б)Dy\$<8`U  *|Lr\r42\nHJaD S(d9f\r\r% sHMb8d26)f,場amŸ\0n\$Ư)4t\r A/EapiF~j810,BA8;,Rj5gVِr\\9- a|1󣦢eM_2I}DN%MK M%<ȰbaGDc X ry],AQ72nQE7,Fdi)<6C3T%̒:G4!J\ra<\"ܣqBLqdM(QؗGHn'?to\rg3)&'wȱ&\nN7Xww崾BUx84pW#.%yp͒pʋc0e!0q1'8KQ3.u %sGB4r\0DI 1(2B\$]R3@3a,Թ/%@ɳ%eg1%8EШm2USX4\"9(\":1:'0hQ ./-i¾.!ꍮ4:(n|4\0F\n˗ЉUM<9'_Bd#'&0<Wp:KcL+9ϚAt<v4B1lG\$Cc 4:OTB>^DȿDP<*ߗyJ00PBLkv2͖v :MG?U\"ՐsՒaT(eP3O0;B>7_hk<%Mm>%&ccc/|4_DdNR!I.pl4tu asEʇ5}9Yi}Di&ժh;F8g.bu~#bLg nDbKP!M\$J/c\$5 CY1HM'?L0W^ey(1KeC'7V\n!P*~\\Dܕb&.yB/'(m#&lqygU&Nk%wk<6.@'w t5ZxE~SºO+׌HCL/2^*I9LoMHg(gO53{DW~HkV'\n4 zbiKB%KJ\"`<Y8v`\"2qD\"c`un:`\$F4ȃ,HJpP(GnM.*C.*p\rRPb/ͤ/Gpjy̨\$p\"/N8q//\r,l&B.\"IC<F\nJ?c@\nмGt!LG\$3Аgb*9Fh,)\r\rL\r`uL %<J-\$ylvyrN'9Hx7c0fI'N bIEGG:/O6o^Г/&hL/<wGQ~aoN/9pr;D9NJ2q@Ƣ[ aK.L;h9KrCb,8B\">+ދ'!<s&~@L)1&_ @F#\r;42\"'b ^1e1C%%R'\"f(碪ڮ\r]g(&:/Cf0k?G!)1#>hg+g,\" q,P!R% R^@ {SgZ;C'Q|{mM{Q1ѭ0C%)rwO>\"mC2@_122*GS{k\rhIs02e2`KQq&zF~,dQ6q^p1\0&3Ҧ+Nj/2Y\nFE:lz\"(Bj\0S<Sj];*@drĸ#Ni+># :t- J,D*ΰO,d?-O!F3BfE@T0 4#13Lxd4Fh7q|:BviFc l,g w3OGF_c%#hAFhGTRf\\1/D2q,Kte\rV\0=EVkJ\rD?n@\np `#/Qr#Q\"MX ~N\rN@\"<0A@13H<;U-0265h<]nB<: Ȍ%V\np \$LP0*D`F0enmRѐuT0xU%] !0\$u]+d>6ľ3\rpͭ;\$2)mBm3k9C0LHBq-P/\n\"2u%i_&*`I[<t@1f԰L`u`]\$zR'RRش*@V \r25J,J5hm.C<@";break;case"lv":$f="% (e4SsLq: I :SHaa@m0fl:ZiBf3AĀJ2WYCf4(:T|i8AEh2q1M~\n\$g#)e\$:bq[8zLL4r4wa:LP\\@n0=))L\\逆X,Pm@n2e6Sm'2 i ǛfS0ƁM3{q[ܾH=q#\n2\rc7;0\0P֒c~\rx0 2M!Y^\\&KV@LB C9\rR\$I7K:s k\r9Ĩb &pr#J^-Q(N8-cH5H(\r4(*XF!D2h:4\"\$\n5 gRO \0 H\"H`7-B6I#^Žl^.hPEXp D49Ax^;؁pO#\\όx79J|;#5#pϦ\n\" z:xFI2BmMj3C:D8&VG8M@-H% /RrK![-A(EB8>R*-(:{I\r5ݏ |:m^czT\rw;\rI ·k:zH2C[ۧ kôN7A\nP3rMz((#pD]6&U#(90k~9уX]5MbGXU4O~0%ßhIsXS).3l[DƔɂoR5k(1L֒\0006 <\"^ 02:j=Nw?!:1(i~ֶԎO\\e+wC\r4s` >1+& pw3g` :,gQst\nOA̡ :GHRN1;Hr\">ҩ}U#ni A&'TSa%\r0PK>2#Ē aDI58˙ - `\0Ɓ'#Z[78DTPQR<Eh~w%C5qLYB B\rڲC AdY\"ElҼWa,@AJYK1g-l < [\0 y\")\ne4LUn5fd k^;V%,!@[a8-@]1 ]~VXi%t\$m-^h<IIz7f%Yu^);1,tGӱa7srS,Qr0Ia(MC3h 8Kču.<u2Q2Fi\ni\"%!8R<O @P5iTg)2KHPTAC4sIL<:(hz{#PɜniD a,gJ`&m\nī?F44jVU̠7Ahg\" ) v8rz5\$!!qhf1&km\"Ҵ\$VQ}7@ :J' re®fd۝*˙/'2*P؈P \r)M:24+0jN68\".s Gֈ#S1\"XF~ P 5itkFfAEď#96GH!\$d8ɣ⤌07 %U)a? (\$fmf\nH0\nQNrz?\\|][\$!6:IXR 0e\r\n3)|QC^D!nPPy%#6:AXAdH!3 A9\\+{pgGԦk8ycw\r_v]k`o`oXAC)u4=KV!}'ҋI\"ݏ6*AB%\00074\r Xzͦ)0XFܜrRom:ԋ,xC03j @ca5\0QY匿uɍ%fA=bCu<7BcPZ2/>]xu\n,< @BHIa)JXT@}^TiBls#\r<%eT*%2%\nt_~MϪQ;/0Qf =^T}dq]ÈlIi:醼brP\nes8i?:%o}AɗỞsc_1%\r഑f2#ݿS\"(P\$((^l0s O#,}`JC܄>D\$&\"Øn`_T{Cb\"n0>jfB7r7k #/o 5\r~H4r K5 m%~C \n), BZ\"W>if#ކj /Bb(uI,즤Mfz, ǥ\rJ|J ~P0.frR`N\rVB<\rG`-\nH9AGXQ|գfdb. VE1Z0|QFwj% pApU w.&Qgdgl!1b / o|QyK1pm\rQQ1^PiP(%Q)B̑ n׮( \$j\"VcClD1%i62DL!L!`tD('d.#2HmĩrvHR҅bN>׭dqbYґG*22 { jб,a[ỌP`tDt`?*)q?+010)'F& Ǡ11&\rzyk%-sr R\"@azd)QF)rV S5G(evSdLu62?V-FpW[S'2),a0}\".#U_h\07BR@\"\\\$\r`@N <S8S?(S?ί?rg?S-.-@\"I*B\nmlE2BDPRP:,8 )`g4'Rd%&!#23ny4,Zo;,nbgGoQH d\"/b0n.pd>|aqK/%4%7#Dx;@O\0\0V.b&2ތrD焚#N\np,9{l7\\/=K{J:9:*AQ\"0NC;\nZ @D)Kv7,\n0d7T'LL~ԗOUz̑8)j #&\"DdHPze>R<Sæ!0]73'S:dȬ3r35 `AIT\\[D 7H#`бJ\nG-LB!p\$(5(zBb-]3I`.Z\"Rc`.<SNM^J?'=/v6M \\CI@svL[̎JFK .";break;case"ms":$f="% (u0 3CM9*lpB\$ 6Mg3ImL&8i1a#\\@a2M@Js!FHs;MGS\$dX\n FC1l7AD 8Ls0A7Nl~\n\$g#->9`\\64Ԭ\r pa(bAS\\݌Z*fjSi*4\rfZe;fSsW,[\rfv\$d8NJpƹa6Ӯ`&s=2 #*L=<Cm(5x=c9#\"\"02\r*O(8AhS9cI)\0:z9#i~#J { H5@#CH?.\$|ŊL2j38=-#P2iS>'; –,0 ؄>s\n'#&\rkS͡j6, =it+ \ré1\"X|\"H4\r1- F 4.0z\r8a^\\PcsAc8^D9 xDl4x|  &\rm;̋&] p:\"KԔ4c+*X @1/P~ , c|+* O\rPK\n,S#;i\$\"ˢ+93%+0V\":a+72Ibl\$k:Fʼn.Lcz㲋8˜&Nj\$ >?Si C;k)KZYNtϊTg-hܮ\rl:89Ju9`!#[8[N~=UMd.3jZN93\r+\"ÔF`PBba(1xь7\$b6H:BNZ73]#3e.!8Qs0K1:o*i\"\"gfg6\$d\"SO2DHHMl[ov\"X* B%HX\\%~m݆zC0 UU*\\V!D7,eL!\$.cbzRiQjz1i(tǠpЂ,.k.TTZՊV[tEXݡ!y\0Ə_7Tg\riS#IC1\rL% !\"Tz ԉq%'lo#Q86=scyh| H\n\0POLrnNRQL[M<)ss;3%ęʦ((EUWRwJ Z DKX R#hel\0F/օ#\$6T\$͉;Dd!1ɿ.Z:\\]%lL\"t\rʠAḾEn\$C+5zr0W)ț*i+W*Օ<хf<\$xS\nrbatXS.P:sԜx4}H[}!xv91EXcbHG=FlK\n]%qn8\n l(p \n@\"n=&[Ɠ aDBŽ0h'}6'ӡ:!Rz~SfMӑJM]>s0nNBMUvc<!o`fVjRA\r&Hކ afo\nUTW/~noe(=\"\n\\'[`lft&ӆq `ie\"!!i֠iL 4sz\"WʿkOQ0Lr<OߒZ}lMpeg2 4Яd~ Qi-M\$AY=dhBV֏Zq=\rv\$`ci! OCX\nH {5 .G\0ݢg`ydx#,_JPzG{;NKM\n`nh\ncmA K#%dF \n\rAMcCXZ9LD\$]soBb<C~\ng%RBe0\nW rR\n(vЋ\rʓ)7~V~O\\fFqV<᫢}L Ȓ(z 1^FE^t mlF\$܃8g:>)r\r_r ^23Oom@a2}T?2eCa r[[*%\n-cd-pl#8l .eIacJ6`|E%/xK\\ |700^&aOΑt[ξ g)@87ܑN0طԫԋ~8Z#\0K|ڎ&bP<4ĄEV&`n5^cT,K#9 :>o/Z%)b)IaM 90<g&ܽEoL /\njC,T>oqP \r0?<LPqc vD ,(5g-<\$O\n%) p,_c,Ny dc\\+@\nMxC>\n\neª\r;֝ф3/دY#N%Q\rN1!Q P T\"&*Z Cl#1# lugIb2H1A\rb-j=r/ My\rmvLr R&3DXd\r-1 ,D\$=\$~,\nqRA\0`L\r(>`\$}d\$Mcا.D&BmRP\0zH`1Q 8HhlXFJ6RL`ΒH@\np#-(edBl&M;,ND;b3XE@خ].5er-RcpM,k̢^I~\$J<\\ʮ!((tjn@{gX|p z0(\r6NNHF|Ce;0jhmS^i32\0.?.J@,S8q#3ڛbt+Ѵ/=^&\n[3l<,C#g@<XP-H\$;G*@";break;case"nl":$f="% (n6Sak3d o0 p(a<MSlde 1tF'#yNb)̅%!MуqtBK% FC1l7ADs)u4̧)іDf4Xj\\2y8DEs->8 4_F[Q~\n\$g#))UYv?!hv,c4mF\$r47e5čʰ*wEI}Na#fuVlnSoгi@t\r2a 1hl -6FG5!uYq|P+-c1\"̴7H:\$0:( r6A: ;@;C-t@;; h9Øtl(:f1t\"\r`@̺Pݰl#Kh܂{, T h)oh,J9+1\\[-c<(چ\$OHR6cAPhH!r^3:\\ :IQE|Xӌ`@ ,3T:<^h\\r48^9őp^(&0(x!J*IǶ5ij,:[[O -r:#J5CkcA.0\0J C4h< cz?=\n!t\re&\r<V# ]g% P^+y(^C|0O{̏(l2/5iTh훮16 bQ D:7YCP݆>A<00=5.Q+? P2\0 kv\0O(3(6j9kS!O|[\rz*-p<wjKaX7.?O\">+BGQsm7~Z⒉tD}`tO\"WY%kJL\0` B`ׂg\$_xD{9L@_d ǪH2` *(DHbe¢hIBu n9\$PІ9H >Uc*+X%eKP9-e\n3\r%QoN9|*BF孮`@Ylo\$\\(vXr3, ʱ1?1g-C#nZyGd#vyjL:]&*\rrPOmfHY:P9\0x e:h+VGR%nVisN'CI2Mf\$D03b)m^)w-9N8\$ԘG\"H\n4h JgPRIP rD^U F\\\r!4CT_QqE3D`L\"Ĕ?\r!t\r'WNg}ty*\$@= P401.>`R(* |\$%\$Ԕd\\\r&H3[K\\!I7>k,Oy J|L`:x0M<\0 -V\$VvOl=!\rfиϣ\0oMa\r\$(lRE1>R#e5\rm n0\$E\$ʂ\0(E;dMIicNMI5-IF#g *\0BE@\"PpKCdNσ -xTFHO fLt7rH0m<k!s5h~4CpyǼ}oua/f}|M\"T\"/FЉXÉp@8 vґ6cd^&%jݹ C`353`Adsn22|Hi#2vs1cz1\$<\rfL<\0! yR.]@} '5\0`CdA i@5ʹjvڳO8@PP-s6^PUbF?uvsP@LT! \$U3'(+tD\r-C;-Ax L0p\0Qu|Zt:!Yȋ^3Tqj[HIJ\0ޔI}zVCvddN's>O8i܂O>ɹ/4Eyγq\"MF >Y}D_I\$ٻ' CTXC\0(\"h`*͔*PB`)2\$94.\$%TU_`O!h;g,\$R)dsM1svRةhǵ_\\ >wJ[hYğC8֞˝2 yRӱ О,L)6D3\0RD%/#o@\0F0D}Go\\''\nc'*!gr\0-'Ht.>m\\,tt\\Noor\$\0οMv+Oh ِ'#lZJj\rl&\r\\r^p&0`؟DC#i\r|=鬩#2./t&\0\nP #3\rPNjiM KNM6\"@b)mFN?8\0aF1.԰A#i*P\rQ0ƠuzJ>\"0aIA \$\\*\rt[gqLOgg\0001vE PndT\rc0@PD#oK10^LqpF&1J\rQ\0ئiRMa#s6TO`ύ0!gWoQJL2:( GX#r@S r#veQX1(#\"1\"͞t 4/,p2F#\0001l(vXK&@&1̱l=@mP(߱E ҙ(eE)!\r\nTN1veTR2小,m*r \$K`|7\$o1(0d(vu\"\01|o0\$42tb0TF僚1‚tNbD(r@kvFφi.r6/֓\nZDc%j!<&C\$o0!aw nn31`\09: m(\r^\"gss\\lRF \r`NTsV:R2 !4JaE.\"dR @gDDDdhD\"`-\"l:h&T5:-b=A4@30L(R&E#4>6T5Eb0\"Tj:400\rJ .jVrg/|NfI8g<.9OLD:!1FL PN6\"#CZ\04J&b*I%Nv,%E\"jE4Lh<odb2@ZBF";break;case"no":$f="% (u7I 6NgHYp&p(a5@tNHn&\\FSae92t2Y '8C!X0cAn8G#<t<'\0,uCkQ\$cġsn,p&=& %GHi3&m'0te2b,e3, hG# *\n\"Z\rRs3\r ,o&wÜg ahf\$A29: ta3\\ͳ3}u8h韡B>\n)%˂kW?Sq7p900+z8c 2#7\rB&  #Z8l'C%Ld <82>\r҂+KنS:Bs::#ʎ6 Ģjp7E#p(CQAI:('\rZ7<B6jH|# P1prDE<1Ac:\rx!.90XЙD4%cxY-\0As 3_O#I|6Z30ZP7^0h댓`+(#t\"40K%ʅH;˺ҁB9\r΂\$H<M(7NH*,#* Gs4޽i\":5(0c;1c\r8#! h3cۈ> 43n6i8)«nů2!ZŃ;L \r`c]`Z9mc(h׈jxPS7:5 X'# ׻&\n =1+M/{85#rmq(\$JEp2m@q|5~7\$GRͅġ5Bd06|!q } 2,ߨ>޷چ<\"hFb\\&Z4&ˤ,]*3 ™76z?NȄ!%3! ĹFn %5n((`P iJ&<CL70Uu'\n1DRU( TyU*VʫL<7,@}Bytayl&@Q\"O))'#9Հ-l*EL!UYuj*W42Hr'Gh  cLR+F +!adXu 8:\rK5\$,Gk0g<AT\$6@P\$9\"\\ ď\r&-D4ՇMN9UIP-0r#\0PNLqHLB_H9!)|q@/\nպA@bp ʐNP}(Dxn-:кz*aeCK\n^@ PV\"C.[ .aVQS\nA\"88S:C\$BLkK[ ћ&Tުym aDzS tL2\$36ku VoșnXIPA!3rԒ b-H3Nk/&\$zcN31 >C2LiJ0Ԃ\0K,.ȓiN`qt-OIHLL0΍p\n6ó\0U\n @@D0\"SeLk90LHL+U2R@\$@\n\\F\$Bg\"-&KQ78qKdmc6W 9t.` y;N}<Ȃ<.åsfHza!D@H&Jfl4g!uHUSVGHc1y<.޶r\nH]1Eg mӂc#s:a3wL,3f\neĖSˮY#U6IHKS<N.g8w u!bP*~و9`\r2C2{/ t&\$00^S p\"\\SaNp4v\"a\0Ok|/x.w'2R^.Gg1Blʹ `vNLxpKp͸#.N@/ps F4CK'c'QZEiEV27\ras &C8k<f aK;\"sR}]OI'xS<17x-&|9(-s߰^wJ_̲ YHY{DfQsF%4HJOd~\"IGs^m`nFQH\rO)3msM~{H1:tT\r|ϡp^ _@\nk2 *v0\n'\"p\0p8o8ng(N6'&@ p>\r.,NogBF b|\0Mh0\0^fmcBh0\0ԀʋĂJkο dGl<,Ti>IZn(B+] 0\rFH+&6\$P)f7]\nFBga-gb<uR<-X:] mŸ]#:0\"l<\"dm\",:1 b::քDp0onsC< \\\nd+C d XC\$de>Q-RQA2e0~F'V#3Ѳ&3 r#ܐ('ls f,I/:a\r#\0Q<Mn\ro 1.)\"\"S# dBmm#.ג:2H'-|\0+ #<ypcw!qRr,r#(|adj6EL\" o*rFcfcaJ]&b\"R`qQPRSq@TE2 a `d|&828P<Xy.)1oct\rV\rdB!1^~;\0+\nI\\I p}X?ޣ #BFtss6 fR9O0L\";?\";0\0Zj)*<9,XEܻcDdv,ŵ;\nhnLu)&B!o.SlFJ\"2\"o><l,no@DYA>\"%VD'7AlD\"\n\njbu6# LC:TD&q_B@oOD2.=>*c<Y &cA\"\rHjP\"\$;DH\r ";break;case"pl":$f="% (g9MƓ(l4΢劂7!fSi̢Q4k9Ma ;\rmD\"BdJs!I\n0@i9#f(@\n FC1l7AEC :'Ik0geň\$y;¨\rfwS)3 1iz=M0Q\nkr!c:DCyêI#,d CA2eӘFաњd ‘B7N^ qR yW~Xzqu&p7v\nBBR\rh01! `?(=%s1\n*7C.:J4 110Cě.C(3+d==,2a9J ԰:p6OT&ZHޑ3J\\92P&P293`PÎx\rbPIJLk8\$Ep;`?c 4t9O`23L\$]EN,f:>蛌O-Y !`@%Ch3:xg\rI3HAp9 zmEkxD˱2183Z[4x(CzЏH9X:.ʈ.ԈKm18kx9\r; LZ:9&L9, P7\\pp V0~FJJ 0I銛'ij8^\n>è5O CׁC8=!ؘUIX1&\r,\r-pܚ͢T0z/:=>qE`&Cx;8AOck=CF\n8@KPW֯]pb֋e\r,l^,k*Ϙ2`\n3k56ݴrMtBH۬iH\"u`B4bma\\;# Թ8a\$@1u\"\\L`ҊC#_Lk}/P1\"`̂>\r\0=\$(zu8vbs@R12I)B80ET`71vH C풪V]p :lռb396c>7RTv<q=D12HE',9CduL*I<ST%0F]ȑLjqȗUHQ c,rZS9-e`/8ĸ:&KgL²H/+|\"RFBօp]r^ȹs2v]fJXdZUk\rZo0!qB aOC\"5'˱8)h k%mQ+|\$-g}5\$<\$(Jy-%RB\"&bM\"ό5>lA}be#x\n #ͪ!\\Z82/T13`]-R*2>dъ aZ {\rR6q42iD=\"bQ\"_\$62ZU!540lr%S-8j+֒/iGȞCIeO! ) <^#plizcC[2N>rRީ`Ȇ)a .`k~t&jNfLDJ\rzqo~`Ej<fwdR}HT\"eUk7!\"r\\Ka,'`\r<#H\$L i\$;Ž psO\nRsLR&(`m\$-:\0SRGBb-iv6+T i lh͎ޣu)_\n\\ E@C\ra󧖌P\r1֞~.7̋\r/M%^o`jW*y<S/M SfluoJB[At6b첲Kkt:R:Fͬ;hĒp(Om5\\9CDw'(8P.26g 2\ryR݀=h'-gtB3d@9껿؊?((u%-2؆6(\r0f!(;c\\wl՚^x4)zD\\VO:M7W`3[SAB%eRi=_(CZks*@Al;BhB :dy*=1M\\|oίǹacXH`.SGOƤ%?W_jK?!7+‹V(Ψ檎0!O엏?/TF\0P?DkA\n5G\0pO\\\r 0\$.bz@RD0pNb%c1\nҀ'`B2|^<bf#01Ю;`%N\$~No`=).l/6,\r‹ &Nϊ\"x_%\$BcN>Q+n>PKi\r>Saj~%z\$`q=zueq2MJa&\ri84if&0U6%@&1p'\nhfsꑊ=GXipnpqD+L.~ GgFj\rKplkEDB۱(E,LmH%>\\CHۑL,PABER \"'xJ#\0h%\"\$24KR A%0'ރr*,\rڬc\"@'&\$`e'4%*A|!&r})*0d-ű#9\$&N N%ڲВ,r[\$RłHܸ\$URMJnFlv\$H4l2Gx+Wư&\"6\rĜ)D'`d]3Z6\n#dpCXdd.›.C#,q5?0c4jX.abqK-MK) {10(S9s.Q xoa (\0}~#-=̵RGܓގ3!Nb7ͅ<>\"1A.!AC<- js\$q,\0L\0j{q:Rc&ҭ919r_4C(U.?|aE\0=GH{D@S*l<`}\0}CF1+=p\$JsdS!TK ҁ4mt}l@'Lt=:-./vasH-JtiLMPo\rP]!2K\"4\0=0/3KΆ!6QT44RraM/T#MT\$-d}#e{\\,Q\n{B#-ҁ-WU4GV %w'<?_E'8*N|a}Z--p((({\\&OeU,|'G^Jt [cBу7һ\0҆R+5*v\0+D\rV\rbtƢa*1*Z=\"z0\"ncZ^P\n-\np\$cR ,=*vjr\nŶp~lZ(g0\nGKhD!\0QHH!3Z\"BvpgcXf\"c]qj01nb\\9\na`fn0AD-@Fov~U)8#)+4#j8ssqh:Aq#r}sGt,<f;W>;#8;g\$= \r\n6ltgdcTW\"Ph \rG|?\0¢_\0APj\rmuQmCT#tg\\k|q5M#hVd2V}ft:%vi:q yK,?6";break;case"pt":$f="% (Q 5Ho9 2Ɠ A\n3Lf)oihXj\n2H\$RI4* R4K',t2D\0d3\rFqTiC,i؎hQi6OFTe6 \"PDqe0̴m,5=.Nj o;] 2yg4&6ZiC -MCNf;7bh<&1N^p|BRY7D V\n8if)b:[NL,hlI]bo7[2XOԸI2>\$P#8\"#kR߉-ޖB<\np7\r܌I8䔈jıi˾뎈 821ĎcJ2%\"J ά:A\0ꖬlK8&k*\"Rf\nRCjQkh&kK5MJf\rP\rM5O\n<`ɫL#k\r>Q r.-=QB+5.jҏP2BrIqr k#Rkh1P11\n400z\r8a^\\U\\Ҍz2~J|R34jx%\",2cKӓ#tP7<f7X7T< P @1*6\r`+~q1?302\n\rkx:(:CO7k2 U;n(\$ߎ/xٶ`1`P-ɢk<<ij^!J0\nkb/_&7grr\nb63;=CI4*C}\"#НdcV4hcQ2mh%eS\n **̌|r߈Ǿv=_( ˳\"\rDkg]8rCy_+씿\$.0|c'Jy NV SRs`G:AZv:H1qUĤ*Z}LQ@AP7\\RQ0r5f'C8a50D2Z[((`~S,T7<ܼUtA*:/B<\\!f4Zz:kEiUV}VĹ0n/y3FEtqhp\$Ɖfxg]r<YLLc Qk-ȮD.x@Fa]ƀ tLK4ZZ!ؗ4rRK9\"MˑR4&65p XNIrbe3J9QMasfI!,1m8'!!A-rIo'P鶌€H\nB\n\n)aA-C9\r]:H;/ C(t,GY\$ey8jC3.'EzK'Ez tY(uF\r:՝3\r|D ) jHd)6}IjuJJHQ=NdM @N,[I/G+!?-yHy:%#ENi,FIru6O9Ggy %J\0ΚAQ 2RGS&,YMy(19ˤ܋ F9MAw*Q4a^H3[N+MP&)r =I3݂p \n@\"p &\\.M>1Bbe\nKv\rƸjwOeJj/'w\0i ;|`Th0,Nȑgj]kp.eSOEBdΡ\")+WfEM6bD1AP@Ϧ*rqs\0Q6P@S.m} 5j&e\\y+6x2`I\n-\0ȝO 72bYo`\0pSF\nq >ݧ509a`4GWMڙXNy*mC/÷\0\rd_ c\rdrI6|\rƚēSy<AzsLo-Ĺ,C \0dg m2G栄TRBUVU5@^T٣9͗t#ÿ;L59AF!S>P\\ioJ]7=N,]S=\rDΕsG`m04h/;y>觪r9T6g~hOӿ˳EWNO'4\"TE3IaАøe F1 !{\r,\$7HТ \r`S HK4\"M:7kHS؟9GPo#~/O\r\r#G0ecU0~aj4M}5fL\$1fC\"x:-hΦ0\n-FbnF貦z',lO \rTg@8 `Ng\r̲u3Lvb2OD%0Q#8)Fou0w0wę O\n ﰍ-%~/Μ<9 Ϊ؎0\rN\rʜ:eB? pކ \nl0 fvITD)ԛd8E`~&f,\0YÐAD!a[b0B&sc)N,#&RޑVQMoλHt<7*٦;P>\0K*Xv&{f\n\n&/qz\"O݃{GMG8&k &4G\"ҫy&zqr y\"# H<k\n s#y#1|ĈlL\"%R\$djPQgzу\"|z) rDT2Z\0*g2\ni'@71uQJgd- :d62,p-dm-B-j.-R蝲h.0N4N4\r+qچ#;\n\n\$2>%1n3 `e(.;4JHs S4'5=+ \r\rMjZn{Ǟ.h(q(m+8Ȋ3\nnLpFhDg7c~f/.\0pc\rOkl\r& Df\0^\"'Lr0`J*~\\\nZbixeBR\n:% @B!„JTTk{rN \r=^W6h\\E)CV:h-#F\"xfdatj (Cr&I*0\0QI*UBh4X7ڃdfrޓJgԄKlL#,T.>B.4>8n\$w*Pg^)\$KGN,^pxe }v2p 09\nΦIfO-8LbET5NH72FvݣtPl|D@/4 UQ2aK/9tRM@";break;case"pt-br":$f="% (Q 5Ho9 2Ɠ A\nN\\\n*MqmaOl( 9Hm4\r3x\\4Js!I3@nB3'h5\rAs cIEGSbr4EcyUz0Dqe0̢\n<mii Qb4(&!Nod?S4L<ي-Lq`S 쪧(o:\r>yx s-s8kjFI{Ct6}c3ܡ\rê:8lܛɭ@ҏ;cp͸K7`P85x7#9\$ ޲,nâ: t82# 83\$.ꕭ,8k2R)Rb*NCj|CŒ;MKh΂KjBʵB8Ck)-#iJЦ`Pn {e'XȠ\r7Ltǭt0l*#9[҃ c410z\r8a^\\U \\ z22&x@͂V?^0ϔ41#tPBP[`ܴ6*L HJ 7ӥ /B:B(J29>SP7\0Ѯ3ԈP` X:~6lو\n(:\$MEU\rh 22-Y¿(:R&<cZ؋1\nb4H?/)t%JG7a<B!](CB(WL=F\$JM\0002:D0C/>(8B870!uWO>8@6Օu%\\07}|e Amܟ&Co N*TҠs_̓rXa:d01U'0Py, UjyCfi+ !˕B 9HDk)7hœ3ZI¡DxK rQY=h5w[jp/&zGD3NO}ny + ̤G}TI8M2,5adsCO`dƴZam-ڌ#zf ҺY@Ɔs(<0|T+#BA!Y-T8v95d(B W%S3( !JBm a5J:d2f0<8 92I)O\$ׁ\0P AZZAG\$`yP\"XS6ĻԞ4C-\n\\tU&\\(E8B[C15Q<Me{]V1 HR\\;;\0gZ3vFdoȰ!0yEN)6Ti4HHUPQ@Sـ2`L`*P͉\nP)irϐ@-%\r̄{qlU\$Ce<E{H<)Df+Nu6ʸ OA:>{.#q'sdI\$Qu1*m\0Tȱ6Yq@gD&\$ RPMGALEQ2;dTLny\$ ?=P\0\0U\n @0\0D0\"f7<Mfɼ'(*ITK sl\ru7#VR8+ CzOD)%(Zp@4S j{\$dBA^Հka)} +LH{&mb|HQGRr*fZk~<(<X\r&!C8g)7@YMIySk\r?:=aXiȡd#2}=]'#a;rTpM2gP4fٛ9ZIU-ѰMr wɺ\n,A1c۴+[ob|q.e((LFm\rh&\$&zFL,F] xہP*g/U`EE)C]Xboe㢘N-e-A,lx mgA6H3)G=-)t@箦ؐ'ewTEh\\tӻ_/)I(t}\$4xGGP;W'iiar6 h0r<1@[[4|d[-Bl 0Y>:\$&V^Cw35jYd '&ś5c'dfQMAm\$o5J(yOϥ?Is~gW&Ҁ&8m#- D0:,3/XH v#6`f -\rdpT:p-Ƣb6~ff83k/P6gM. ,,ɣE\$ #C] b6u_ 0 A .Pп:;bV8|xCW.#gn5. ;А/ pM\r1,7f,&;̾/\r̊- \$b#\$4\0o*0cbj0\"\r&7\r-441\\f'#@DRM珖Y|#%L)@Ͷ4&\0 0\nq * p  r2\r2# ֆ@`\"&du2,h#\"g@&dD!MΘ0Q4GQ7&'q W 7\"<B\r(l\$&I +b\nRI }#`E/(QG\rB`,#,P(Bzr.r!3!0r\$0ۤ(Fs /M֚݀7i@Ga2mds>;s. hgm4S)0M( N\06r\rq7R#\")r(#ӆ \nvg2?\$'3x%\"7r+:S11Xր2 O2nfyr8]*&RB# 76nfF\0eѪ<66\$|+9n>8Sc\$\rVl\r]+R5`Zm\"O%'|87 Z018d,Q!>nBEޯ5B!Bb.{\$\r \$72R\0(ODJ\"k#aDH*\r]j3mNpB&%>MF&t<dA&\"ԇd\$fQ#N70lx(c#-;3 G3`Ҧ&ҕ*F_!SDqSTE6(BKQD PBMpHB\n`p~&olA[H:!FK4&IVM>/8_TDL75>Ƶ̸f\nhf\0T<b]\">3MvM";break;case"ro":$f="% (uM0r1DcK!2i2a !;HE4v?!\ra2M'1\0@%9dtˤ!eұ`(`1 ƃQp9\r@dC&It7AE3ed&3IrE#Q&(r2NrjEDj9M 4ݤ'LqL&V< 1my1&A.Ś2ȦCMe›yS\"Dbg3BiMASM7,kYF\\S>t4N;gsgA @1B:޲IйlKp9<P6 P\"5xפ#{|6{8.*@c2%b0̺ͯN#^8 CJƥR`* .F)CJD(0pʰmT9BM P2h::˜2Pí%>KbܸQ)% PJ-nҎ@7J9&cpʻ9\nrФ+<tG JE\0k44;vR\"4410z\r8a^\\'U.#8_]nxDj4#2♎L\n|n W\"h#\0޷bFdY ӓ @UFΣ<C+sB3(\rF/'B7#s#2H먱 (u#b 3lb;5c.4;Z,K\r ­ҍTlKΛ1/J['.C##r(\0Cƌo99,ضkE{㝭1TndE0\n~Rf6C*=񼼾#(ȿͼh#WE^*1#r2E\"DaCjL\"e)!7L[u8\\ Qa` #^HHrcA1\"V#R\rpJ<40c Wp\\ڻ/9FQnQh+`1lWD\$>Bo<*<Co.rZ8fW 9V8 #QXT;0 WԐKAL\\@r6κWZ];5~ _aD\n[t@SP|NŗPd\" &GUcRg&>GKR\$3%,]Kw/_2}*X 0\" > ŰBB\$*1BךR1RA0P\$!yJ+TC~2h3L kDŸ:WT靉 i.s&;Ը1Ѓf<1.d}\0@ ;5ܮ=L4DPbAK7My,%B[Kyw!! F oB i ^|@n! nM |]2/k\0aL)i>\rzv\r\\Rrf~:\$&dԅ\"\$rK{d 4+;NݛYL4Y/P0v8ihņ|ux\"\"\r'Wh\r&XO0bxS\nϳ72LE\nx`uIfLu);R,,d 9\\DJ_1?%0fЧ\0)’!P(h \nA4 3]bNJj/HD<%oIҝ4qp89[QN'FWatjYg*&oEТclC: ak 10Ap*\rUZ\r~n2lYUq* 6\"BbW{@7^Hf`qAY\\پ̔\0uCOt\0J&J(ʽgtֱ *Z1MA'̇!D*̜U/\nq lHu~@>nYMYm2uos5.b (tX䖀.AA&p@e;.a@*f~ apս x`A63zZ\$#դ9-X N_j'j#ӁIJ෧gTzh @BHuWysAJ93in4^;kG̴tAEEҡ1 t\\\r7y9'<DvYC%6 ;\"}-໻u _BZFTL /VV\nk02\"Ka3 =ϤA? {5\"#Ȕvv3Re1]7QC/XOƹf4 Ȧ'o<V ^E :K4+r(\$&А-eBI\0bR&00&G@5+nDDs&Q:Fk-8 4,m\$db0t~g@hPVSZIELcLk tO2e6P \$N P>2jFT\rFT\$U\"T%TU0>(\${Ђw \rPN@pR{pCLzlOf(JWmyq>'@#noF\$|4o*OH1d|Aäd!\"xLh ̃!286%n2{QC/P@1E*\\C?- ƨWP)` Q(V>,f1 .1Lg\\\rd N  sc4 [!mh4\$,j*N/WLcQMkx4TfXs1Vr[q#G@e&RtPgWgsOp)]0RhR~'VT᧐@\0)l+CZ2b @3\r%pw/|ppw|fd&5_FR0+}d2f'72@3/?f&(8/.,~#~v/ 3&M5~a6S1-6\\~76!w1/S\$A3}76\"4 93_9a9,rR9i\$NNVP i\ri(1K`Is'~cVPS3; D\0,\"寙&4ӋK/y)2WA9<FOC,Hr.\nTNiA30P7DRIE/WFFBF%`1G |h9\0nrVFeCƛh tI \\31C6WF55o(,4W%B\$gcJԱBKnðj%(\rV&_=<,jx\"\$EsI#ʂ0f\nZ:\"COLh掳Eo[S'&5Bb!K!zb gXdQM 8 f1M&Fj,lœs@~1'9vƨh gU-JD6TU\"Faf,*f U-\nG6U]C]\$#^D\n0j]^0+_5n^n';5S_\\\"fʀqMkjG3dx8#Hg@QSsO\r6P\0S rfjnTRDT2u:FX!!&wѶff\rb{\nίf\$R1L \0@ t\n`";break;case"ru":$f="% )h-D\rAhX4mEF xAf@C#mE#i{a2fAZH^GWqh.ahhh)-IhyL%0q )̅9h(HRDLD)Cf4Ըh/ 4&Y9ڡLQcQ\$c9L'3-hKclqu0hʮsizxr#^3KB! A%X֡PTB/G\n >#=Ii\\\"\"\$ =i9*JQI`=I3(@n:4<){)h4@F:PD0\r\",fƨI o#4cA %!1c)x%\$*J)G1ۧFƁ^\00Ŀ̂8@+hڢ-*IO2=L9R+!',' A02!\r5=!q+HNȹ&\"]hlK-<.H1(Ռ(ғ-qg3lJCDP2<(3bhHhFT@ ū@,FBSR%k9NMLF< -3\0\rvB6#p9R8 4LBt<X=1S<[TG\0x0Cb3:x﭅Oap9 x7f9K(}TDe\n2T &C'x!Γ\r4/D.ݱ!oˣ̯#*z@lZ'9Et1it.c^!(ɞ. 0x\nL85Bϱ~Kb@Il u}bIkcVaWIQ\\JGNqWE!\"%43@V–>^PcO:~#]\n'Rһl\nU9Ը,T4@dWc.+x9Ȁ4QhAL(Z)\"zHDZw'ɕ*\nr)86|UO8tm9g חchitYN1!U،W •3R94\"\$S& Iq!*!>D ;<e3]GUz < 0d[p a>l#DQ8 JUN啈HTuPanG,e&J]RrBeI\$b19AB&ش1FTP\"J)#jB+eN[a:\$fB\"h !v9Wbđ)LufodŵRCf/G/\"\0A[T\"!\"3DxmrN p Ғ e-%!:d 2T{S&uil}pR5J5Mdl<\\U.HªR1UeYBUM+&IuV OeBƸ\n*Uv'ydQr/ UQ mW:`ժ<N6sVy:əC*M&\"^ҧ[`Mtc;Ki=6[uۦ3h 7npno=_{\n`v(DIʠi6?Z''%C A;iD5;Lf\\ZRjY5׭alm`8s\r6}\r*CIJ6CبMerf24ED|h*.&_^F2lo\rr\\%gæ4AR֌:]!\n E`Kq}5wN;Sc2dii_gN. 2 @\\q\r2*/VJ҄7^̎{\n ()-偣@<w)yե5^xHy2YE~‰:0b(bZ0F8yi|DHS}%khF]]mA9Wt*DvzmH\0C\naH#oM<ڟچɦx#I4䁖qR}[3B?j]jG3\n3ʘ퓡@J欠_c.\$\\+O⭰9I\nnRm [\\NuPhT'Q\0P L*D8TPs¬ݴQXDE:S#il3މXSJVR&I\\JCP7–ObV}&Dギߠ P(*F2\\\\K &J2\$;[e6cr+'j-u\"RD?{b?r#?!C.;chqD6_f'\0M\0H>Ġ ĔA )`QE\n-bE#ENt2B \\HD\" &GtMVbN\njB \04LH0,.[KG@t60hJ\rFϠn3oB#:H4_QY;g7H<W\$c` R\r\06F3@(oZ2 dHuS\r\"m\rd\r܈\0\\\rV\r `@ \rr^whl(o+S\"d'NMFMNtl \\?[P^O'1Ǵ-KĎKn5@w1eB\"e Nj>Q WF|L[ژm`C0|^ \n v*@.jh&d&BN Pj Gxn[\" y*q*Rq 7.Ap *BOQLrhYb01+k+n*.,M<\$B5/:y2Ң!q-2.rƸ# AhjC <) ̫gx'3-+0,2ͯ\"3s\0Z3>0UK>`,ܐO/Sx&*SB-^2bCC2AeЅHҧ+#\n\$oWdB_do:*eu:):nnNd_MD}iTsc)\"\$cU 0֥% bn>%E낖F30qpIO6 21R#0G\$BP1b.G /BSA¾奍T:-Qjn<\"8 t#DţC.EDYFtV9oBOҔQ2sHYI`H\$M(gsHUF5+L G \$lI\naF\"mFЁ/Fъ3l\rlqx\r`\r\r Ȇ#O5MGYQ@ xe+N[>~IG6b/F7M8BOT=!TTjtb4%U?UJEN3\r7t\$*>Y#2ɣ5H 2XIO(e8/ȄEGrT '/&\"5([\$E5ڣ5;jO\\a]3hArXCO6U^b^5v_Bg`&[S%T.gKc/d1cVKcq VhH\"ftu`DeȬuld 0\$C/cyד@<mCXH\"TP!(~r@%}lڣe20aLiNrIB!\ro(qqqK,mQc\$6+`v.vELEkEG4p'qUq7#Gv|} +swHބEqw/Y՜>Yb54\nئw6etW{1xX1ouRL8 ת\"'uh23?.Vm:ddshag+G91YF7_W0I~5ʒs}yBWoP\"i8v}5G8 *AUt~x ;טZc9o(nzi>0\\33=Eշm)I@񯅦nX'8NXujxxݍ\"1SX=wtŇ uXD+hr{GM})[I##4Gvf. hxrCuTg&yBQ;2WVgVx @EQAcVA/\"-f9\"&+cE9屓y)1yY8\$u\\[\$3%8{ߔ\n|ژW%L#*W{%Y-t%-Kc(AVA}Pu_/Ԑ{Ar9T#|=,I-XjZv2vyaL&C`C|Sy5&-bg4Iս}P+\nG5G@-;/r]Eu2!@a1\\pn\"FxzW/`p56g\0@\nqto)*bץ_F~~\$ؖëy^'OXIt&I=Nc\"'%1qKJV<m⿯K~t.Έ+O3: 7bD##g/P7ZoъLA֒!=?IUDiUFu7]gM4d̷G;>w-vYJۯDlRE79+dFD&c\0uA\0<*kWAdJBlR-h[&(!y \$\\M\n{ -pe?UaPtK((vy9hT!|zzs(Stgd'cxH/lM@";break;case"sk":$f="% (](!@n2\rC l7&P\rl25q\$\"r:\rFQ\0B0y%990cAn8U\rZv0&'(a7&(n1!%iAD9ϡf?BKe|i3fRSzi0\" 75d%Stiы&KuqmNemB~Q%b a6ORj5#'MnqoI{<q\"7)RPcC(p7G)B,CXԦc Ch½7\"T6<m1#Ȝ2M4@1KZ/Jj\$2\"J\r(\$\",jiJ',(Ǎj(椲Hb4*ʐb\"PHsBʏcMP9\"3܈(6*6Jj9B:2е&P#\0Tb Q/!\r#@ؔpL,\nQ\rCQ,+# I1'\"h QDyL !`@!3:xoMnAr3h^80xD͸1\r̅.|˜X<.-\r\$7!\n1@18\rc.(Л+(OP ȫB( KYl<j0bC1 %/ Qȗ&\rx{;r#pb QdeRCX2)k2=tȘ\r#5,Z⧼Cir4\"q`ʘ\rMc\\.&WÒ͕@Vė\"70@XB=cpT\r`a\r1_sNk#sɊjnb(*#J6<p<}1O+aXŒhu*+<0CT\rP9!Z !\0u0P@%e::v)\nWP7s,Q\n E!6D\r3 HBxdTJ\$\"vPq4-gŎ3(sJT2B\nDjhjWR[ Rd*r2Zx \\Hd-FmuQGkȔu2܋Gdc`9q8\"%+ .fLTDdʣPAgT#R\$ )g 0Z4VrG j-e\\ \\.UκCX/ X,mX8F5|`G68,س%Zu)VijDs-2N;.\riUV[pi aBc:r^%0TP2hyWVXoΐ: \0FxfrtO'YA\r6%1\$7N+ƑCIDP5+rBiy/0VC];kӄQz7G,q \\}u@`RH(p*nL=0%',QH3 Pj>Vľn!\0C zI3fIšdYh}@bS\nADJ\\iD_a\0=B%g\0\$dDmrXfRYPZ1ʉ葡\n\rfI6ӣ=mܗ%R D;1Kٛ;IQQ jmf'N x \n<)Frx v]^y0A־jAJ0`3|] 0LP(BYn.E`O\0ø\"@\"6n*\rG\0_/V@1QV쐄0nLk&\"\\`vr|ߡvr4E\0ƅ􋻊밎Ҳ:ӑe_\"<a5|HA<s W=aO\rz0L_Xa2!XLh\"#\rc;p yяCWU>h.iPIU<xP WJa*ףBQPO Rv&=\0ts\n`NS4Cr'gby:ACVq\"{LZj)h2qˆ-&Hhon2p=\"9\0̐Aoa4hU 5\0cԯV7:<vz,,yux%A \$r-O˂i\$vYI(hODaKe\n}\$ZblH\n@BH]Bq}y-\ng 34[=/~N\\nuU^9Zg,fߓ!\\l?R<'N)`eOs X\rv\r(5IPuoH:j/Dr6p%j/FIY0Oq\0\$DJ&qen81\":\")f,aUI~ IJæR0p\" LK(D*#d\",EhY\$0a:bx\r&k\nF.Ke`|r6lA A'.eBd \$4/CFH\"^G%\r\n:rC@3U\"^!͚PMBh1 9\rH5C*cgHBA\r\\kc6'8 2?\"//& Is.t9 lBBB^/XN)< س.\rv\rNQx..@,p4wQ)@1SgtF6͎ڱg!͋ kP)'EpQ!'P\ra\"/ \0?m{at#2BY͗7xBb&/RN4rUX\"o&rG&<Brp%z|Lr,Ġnd L*W.y+r2> 2+,d0`\rFN.mo., ҤEJ!4'%lچN\"%fg.}0j҆Ā#\"mLwv 6{la/JKb>?,*n-fN1E7'hƐQΆgϩ!{{*23%r!sg3z,G!cӍ;\$\"|ym-s?n';s<C#-#âi\0#|{r@EX5*B@#kq&K8\$RIS{T<\"js\rx\n(F-9b? D#D&b< #*\nQ {Ar,\ng&4{CGt-!0/4H?# IGE8TE8!Ks<-}J\"iTPA4ri'B-M;Ԝ\$4Hq)HCcR4!WNP/P)BCQ-4Ć\$4>U=R..RM:tR}KLR5F-r;QDRuYL4;K:\r<3@k4c(nk#sJ4\n&r6Jbt2fuN@XOu# :srQ\0Y=zo9zΥ\rVB@\rc9cZ>rYzuB@\$9o7ı*S*?#*-fs2`\nq\$ҳUϷYud4O&{e;33e\0\0Q()\"n\"jF>t7Hb6.=0Rv;h ~l\"ip<I R.̎Zlj(Dlb>*?ʚB;B\$Gp玼s똿v#2JgP \"qjR!HʮAg%M;71ـ 52W< 3za@Dc@@M ;q;6xH%nGMup /sLto\0O-r\"V\ryk~`5Vdڑ#~i&W&BV\0ܶMb\n: ";break;case"sl":$f="% (eM#)@n0\rUi 'Cyk2QF\" 1k7Αv?5B25fA2dB\0Pb2ar\n*!fPsSYPaDqa9Ύr\"tDgNfoBAoB&sL@ Vdk1:0v9L&9du 2hyr4\rS9 դh4Ε܈h9\\,xAcFQ =ptgtfYyS=bX,ģ)^+Nij\npǎ`9HZ|2\rjn ;c\"D(A6\"C%cxȌH`; #IP#'; z\n?Pʌ# b)+(6J⛒<D_+\\\0D(.h0R<H4M\" ;\nԈ6g## q,#Dp%n,\",45D[2D49Ax^;sG\\{ã?v!Hc3!cj64^0h´\0P7H0= 1\rޢ0:݌0^t\nO ,f1\$*4+8 *\r#%s9>HP21;:|6}\0P:; C :*% I\\M C87uFq 9@1\n„bFKh93-|Cɺ܂z| G6!^(=N#MI88,K:>.\0Ō;\rJ<W!t4ܚjvAXhd+Td6z|!3&:}u\$9<!ay2܉A{vA(Y6 T`K!\" @y[A<' #(Jb0܌ u#9Fn +z,D\r7`9%:jAh1*6\$1ZurX+\rH,ep/B@SϨ7 B\nA\r(\"Bbz)+F<;`\$A4芳Vz~\\ՔTV]+|Quc%i> C`?4At82Dn4V^LtX%n?tJ1c_eDf)&;\n \n`2pD0EqF1rEB4>P\0('`O7I}%7Fv.MTD7y_)-P%ۺB9*!6z12*Qw9ή8!=^AQdpFZ&DJ\" tC|\$𔐂CIF@V80Cd#%郒qK aבnFg^fA:\$r{T{\rI%Do/O\naRG6W%΍=#\\DrENڦ\rOX+4#J\\'CrڰY2egxZ\n>홾<Ѩb;:@~2` CFWG M6:QO3C#-\"GKd[S~O)=mD40J>/MȏbW-\r+ J`:~kܘP\$lJ(P^Oa0h2AiRrѻ,1;>IQ S3l0PlÒQ QRa9pd09:A}+mH26H|Ff2wZif\n#JbE.vH70F 7\rp]ߐ'\\CR_ Cw; Ǯw-5웅+mbmzBpfPʦƪh,Fj@ 4T`T\n!Ae*A 7I(D<L31T\"KFy/uZvH`e=qxvîqLjP ]|y^t\nB9|'.Tos.9ab#mϸ!gF׺_57;]wheWph/YNwB n-ϩq^zۨO+]d47ߞS2#X ǖfޣɚ\rM &=;4݇CZm6C0q~A9j\$YZ\"tb!Ě`T)SG_۞f\00f0B(J^yF lhe\0px!xdLLN1 P-#PÌ,I.E: f\\[p\"Mj=Txd\n>1.tDC:efZ=pQąN<i\0B\" \$c&1[ư:tɓ\r^ƀn?P.9KCӐCqМh\"\\ %=@f\0'^#B.\n%n5o:1Q.<\rQ\$^1jSn+j}%1H%K\r\rÿQ.\0\0w @2R!)zN.:T:ȑG)\nf;&FҠ#(%R+fAcLQ1!BV9p8Nl3!Ne-N`Ivf0P rg&+\rrhp#0(`&1) PߑɲRF'# #(&^1]Ihu,pB\rc`\r\"]&(w!).҉'q`0fP.k/xG\rfmr1{Ҽed\rghp;3gf1o1DƓs3R.13T^YR72R3seҖ6C~_ij|eD٭6\")\") :; @N &R-0\r]% z=r41=C8@4\0M(De+0=3VN2pQBB8z`4^̂pT!fTю1QTf7OF``)]F)GkE\nrCbREI%In>p9teK×LHoL.Ha)^`Dd\rVu`}âD˲zc\nZ6C@S:w%KD#Rnwl)k/TBu>xc@ \nC6S%\0gcP@M\0<\0r!\n +XʔT5BDkZ&B\0Z\">p H3r0O(p\re ,y]/KTe͓]J2o(p#~6Ci9.QQ:u` &mF6MW`\\&\\d<g#OZ!T\n2a'J\"#-g&]b>b]H-B:pjEl\n@7<+BIH";break;case"sr":$f="% )h. i4 |Ez\\4S֊\rh/P HPn v0G h\r\n)EȄ:%9>/M}H`(`1 ƃQp9C\nD?!G: 'a%e|Dqe0̢\nm=c/\" mF: D\"Uj8k:]\nHr9a (h_(әHY7D Fn7#Il2̧1: :4c41?\n4I(k+<F\$70)pE0k/쒎x)H3Σ˩ChH2xKʾ\$1*[;\09Cxдc @5\r;\"N5hS ^\"((9\"))96[xQj)R1)-)HȋM\$P(#R|N H NUFlĚ4Fr\"BU\0;qQk\"R?GJ[&Ԗ1wR!t OJ^\nCbB`P2\rLD6p5#q 71L\04NNS2\0y C@:t\\ 7/8^2|9s^+/4q/\r7^0Κwr\\LhȪ\\+]U/ H,@\$r&G ;YI{W\r2Hn7aH(J2\".(<?o\nh/J:tUYgjˠă,MҾ!GG\n(0d; #`2:H1I #) 6Sť7atD/Yؼ \".\"&Zziˆ2t9DGF'wFwYFtalY%D)eBHێ\naD&'Vj*|d<1mP8IZˆ+-v78HRIn\"C\"񸊂5!3S7K\"W\rY<'܃\nNq^00\$rN! |X7#ʶJ-<bNcT%m\"\"\r[يqhui>ae ZsP%90i 2Ȑ|i>  &^KAO8(e706X#zXa!3i^P7 :f \r3Cr!35&r\r\nJs%ebf%P%SÔa(/yĖc2/>z\$2\\ك2\rl3VnS4- }FZR?n-bVY]F̲K2mJĤ\$mY& >Y=cih<\0d%vRk/f3&lgC\r:IiAXث?0Ǭ.Ct\rY&պa\\h2<A`m1#\0b4afg3ɡd&K,MA\rcx2PF̰;(B RPk(r%\nf |WpdP@@P)P@\n\n)QVW(%<7Q0Fk>gZ||?0kJ0(9]_r:!-SCq`M fc 8hIY i4Wč_DrS\nA (\\D^fo\rȷjtO 4aPdF ?&Nq\nF yA)䓀DSZg*UI a\\JCzk4A s`3%?hd13EiC?X\\SP L*\\E'Ewִ\$4ٻhw uRAd\rĥ0h#(ȣ0lbH(n[2Pf,2 Aن`rd7DכC~o4A%Cld ;YDRp \n@\"n}2)ijsE8X\0D0\"K*XPwdjzQQĖزk1XbߴP{&j/Z00h'4jŻ'uCȾ%;SЭJ-oK8=0O8m3桩.)αoI\rCR\"cW6#TtBȯS^\rpI\nU\"\$v5D`M‹r)\"i }<?}zJvr;Oߵ\"\$S{1:\"\ne[\r7_ES~2w1[ۙbOtޑ<.#P(~Y@S2oƲ&&z˲n۠k ` 34l\"  N0K)H똇#WG(%ZѢF\\Z.\$8M\"V.pG`\\\n` K`M=`@WT%eJ@Gmg\$<0n{# *F0d&\"'(&:q\r80D`c,p,em>m sN,=Qʝ aGLBZbvlzbP]g]Kq:? cP0oI̔8,&#iQF\".뱧  _\$K (v)7{\$Y1E ?>(41?'.\"\0GH.{\$,(>t%2K#na%\"0)\"0x:ŤFŠB&o((.#''Q;s2o<,+oXz(%ڎ'E*R6b4Å)n4BYa \09x\$7Q\0-BJC 03R21O..M@,dZ1)Bs 1\rK(\r\0`w@ڕ B\$e[ΔҮ'qR|\\0s,(')A93h(u,Ӥ~9S;=,+Hjs\$s,s->S+ë=od?Ʀ\$bCMoq.(15@H(;@ ACI01<1BS@ltTSAAO۳PFKF\$F'kH)CPFv\"?;\"pX09%h3F!f;Jb\"KGXqC HN|T\n\$1.6˄+;<(×LιHͳI~)\" CLOQ&s@>rn48XQ3HrRSHSuI!L<t,-NDT:(\0CU++p<1ZCuC3VX.U8{\0pCXB\\V#X`/0XEE0B\r\"'H+(q#'7QG3O^U?BHNnM%RUBxlfV EJvYa1b D8omsuUZYeՙGVW5YuG`h^qnU\"D%6['T/4YtUv7vS4e\$YmL~\$jbSp\rc4,,g0)\nּ=Vw*~mm`lKYp'l_p+D7hi6DWHUp2)pGU6y\0\$:'W B8/<CqV (G1%W>/Rauq+duQir i/^C0#슄E V@O46 d\"h8BC3zzNJEccWж1lBQ9p,0~6A:y~(UEK nui/q0\"+]t+b\\ʏMk\$\nZ FLG{CU]Z4!\r1%zZTTBw^ÃtcYKOW\$-\r Uo'0\$rhWXTʢwKmGE/*Sc `p92쥂0[&EF0\r( SNVh{/(dW.n-I3~mH+oF8EVőGBKy9*\\1xRǝA(ljpדƥkS\nl9\$Rnn&渇}'E6iN%^TàQ3{!A\0000@`_oRZo\$/1@tޏ h\$%I~xLmHsF\"qDyqϒ2V5Y4;\0ڠ'y_ɨH;8\$U7@zT";break;case"sv":$f="% (e: 5)@i7  6ELp&)\\\n\$0s8t!CtrZo9I\rb%9iC7,X\n FC1l7ADqzn\na!CzkDqe0t\n<pō9=N7'L nˆ%#)HrL×3|+f-5/2p9N\\C*ĝ!7K\\ 2Qч9g 6f s+ϦuCS7OenTޝ Zb0 \"0/Crp2\$Ⲿ64r)\0\0@1J:e#b9&(\$D\rH@)0'dlcưP1~3#|'\r/H򖌣kҳK+:E2j6P \$܋cT̢\0P\rJd\n6\r`&p16tD/(]&E3\r\0x\r CC8a^\\уs` zJ;axDm\$ԎT\n`7^0z6\rNDӊH::Ұ8:]c#;1 /70JC\$ XLN\0PXTA\"\r3/Av D MF`PInFs6 :s?Tʍ=6˛+A BZ}í9w3Ø☢&\\@zK#%؎S4O3L;s+\0N3)S4j)\\Ȃ/7+ #h5P<tk){w4fXhC\rFMpk[ =WfvD3#/FJR!CެN!Hgwqx;#0W<HFܐ0Gb\r13R35dl\0'hdE\$#@@ R25\nrA6y^)`Ai\rŵL\npaX؈a`7Eh+Q8\$,v|oa U`VU^UV;XAEV8t*f(Jt~Db8 ' ;PȩU;'!yce:+ElҼr9,6DLYK1Иʠ3|//\r !GIʴT:ED C7МR@@rQjbq5QL\\R1SbX! ù4k!H\0s/L3bN]9 }d8`xP @1HQsH@2PPKI9\\Re)\r7@RK;BNR\$ 8O2mOia'IpA HfyKNjEMrF\\KcDS`HDTF`@L\r#A\"CĒ%DMD9I1ȿY942X['L k0u)FEEzo\0hL2h|xS\nO#9#4\0&1HK!Fɇ;xK0K4 ZzF#󬛐 '7dp#@kt IJ>vz @a,3aHI*\0TH\$pB H*@v\r)#BvDSjT@eי&YK5i݁WԈ~1t򧷒fF23Kekw#WX\\.Uqjh\"L0i9}\$b\nLZCuBeE\0/Dnl΁2\"7*\$ȓI:JE%@?E9^E\0u2e\$2I(s\r+d:BtP\$&eW-+/]\n 79>ϥ.rCun/`1F@PM!/#Oj{뽤L\nnP]p p04d;KrD\\NI/T2BP贚xF' [ o\nm\\UEJY(fvq\"hSs\\'&5{? G\$9V A M09>Z}3snUfkVBԘH K:\r@6 ǭ\\𓄳b%\\h,_R4Ƚ4{Y \\=I\\=teC2&h-]9FN)ZN_*Nb5|/q.9'Cy|r\$NzYotӈmԏ& f%9@ 10Ds_}&gJAKމt+؀A\rS]pj9-\r#9q- \\O9Cjl`!/~[\0jV\ngh26;åxmTU2Nb&o+lkv nhg(&djrKN(kmM B&pWpi pLne`ЀK FԚh[\\,`؆ \rH(F#Gh,dS \rpMJ݅9֯WНcFR^JN\n^Ls=\0e\$=S8s\rOҀS_`Bd\r#89pּD !ac\ngo6S\\fÎ7 -.94e-M0L41 6)Qwg3 lWm!mC'\n/Rӆ\$ \n#I2 #/]r^b3F `ʉchm@S\r>4bO%\\T#8Eȑ'A'RbMފC'c-M\"qGQM)lb!p2)G\$)rR1RFIqh\"\$\0\"*j D@7b}2ɒK /\$/r.o`0L\0/#h@qN &\"fG24 ɠpRg7̙3qP~\"\\h(>ܳ9208C>\\bs /ș7\"D\rV\rd@O&L뀌0Ð!3\"j\n\"d\$n̘\r+uR3O4k<^4ȋ\\Rgl\rG\\ϕ\"3\0<\"4D\0<%:Ț\"7>\$r4%Q?FĬS!.mB5fuǰ[D}rh r@hh&G4eHvP;PHg[hNO ȥoIz#d= 82=D>)T4DP=N4dGqxR}V\\\".(`@e|\r@";break;case"ta":$f="% )J:‘:u>8@#\"\0p6&ALQ\\!_ FKh3Xҽ.B!Pt9_`\$ RTmq?5MN%urι@WDS\n4;(pP0cAn8UUɼ_AZ.(qg+S \\+5~\n\$g#)eGKN@r|,F,u]FdXGiSTrP+_5ȕʙa^i6OCq)Jj^E.Q@+W@J,W(I{\$ #x\r\rx@8CH4(2a\0\$ :74#1EH%!p#%9nҗ@P#x;j\"r\\K<<2Jj2t81Pd 2Nx)CH3(Q*ڒŢ2(7L(\npp@2C9)\$o7J: 8Ql9\0 4xq\$Қ~Bp7bJ29#xܖIp,37k,)u*L@dr2R\n8㘨934NE_Xa(P)M\n2 Q>a>\\ʻ+Oe 87.*<2\\&Ճc\r03AZ3e{Tc*M\\3H45\"Ɍ\"Fа]P a0t5-^L{8l. mP][W#f9V1 <mN1U!\04P+2\0\rC@:t|%|PPp_[utK`|6m3Tclol^0ҳܨY*лB}JnQ<اKVW_\"`?CWÃRjJJ) D´˗rLoܯ(CnPAPKs)&C% cmG@[\$JDfc9U#r2 m\0C0aX`e/LIGAR[v3ѕ_9 mm4dN)I^¹OR'bť2Yc=#7~MNE\nY[zGCb2G贂0Q \\όiBJIt“BFpӺă\nA cA9&F4o3R-Fy{~A;>83\\5ͣ~μކ/ak1dAk6l\r<r8:e(psvuT+ۛd,9ȹ%OT\0JU;В\\thBk0IMfP \$AsD ؜t47}0\n3Vm\rmu.qOBC|0i 2 |nA7*K3p\rX[FBSD=!?\n\ro 68vZe*n 60f`uk7sX(j8yW8e &Q0m\\ȉqIIH\nM# <%@C\r!:@읣w;KT<Wbrz\0_rFA_VO&\0+(efa'7 9iH ^Z4EwYoX.ܻzx^MyOD9nJ+5\rҿXjaz3h5ej-F\n&e0XI6+Ke1;DfSU[n SΎX\0n͍UyX2\r9j\rel4)!*C(\\Y[&H\n9\"·T肂ٮIC`*sH\"]:F(W+,xwI Z5|L=\n&:ճ*y=`.KytvFcNG#G\"ѷ) ) KLP8ՅEv5h<Crytg*pKΩBCs1Ä͟QsXrYCӶsJyyG\nEzz4}1_.z7}NA5' @qrn\n;F&8mގ\n)6r+d^n+,qƓ8NBO\naSOnfq5:oxre~|*x)E\rͦEA]HzRO2UtuzN]\n-[Sax^i´*3B\$Fopj_lÔa @\n\nP\0 mf4jڕfGF2J\nPlT\rv)k0Ja)NCIRÏh*|<K'j7Qc(a5^h\\npcə h. NFiL>_R(ڂ0\r\$2PN=I \nLM 'h 蠮bKF}J\0ʿmd논Y) Ov0\0i\rΚPR5kقJ\nF4Qn2S Ġ|&GҹſK\0GED-mhZ7+*Rl(T}1-:^nI~\$h`h?w\0rʆ>~&\n`p(\n`EFN@%mR ʤO*eݬ9Dz5P6(^\nn ¹ljիK ^E`겂h68樊6-FE \"Q\$O\$6+[)(K*E\$>JE ϭ,Do< nFzmF ` 6n7_/J,q\$p_-0nk0.)24TH\0*L&!`?KS0\"d5p,٠{\$n'^J1FL` \0@,U@\"-Dl0B`(`4xOjі/N)t:p10X,\\e\rpQΜFuk<r1hRQN^ 76>0E\$7^L?Έ49;D t\r>3Η3?mГ@ͧ?B<sEPFLN-DjAT|=QD4 ʹ?T(BT=T͐g>BHD7֛n8-HJbL%*\0+T DFDdE;CKC.).AT\"wr ApB\\HZp 1I*5:JZ-RVUL]< B&\0EPhN )GDJʔu)K!Q'D)EY?#ԛD@5[%[qI\\ƈON\\m]?t(Zoru_LG_4)KY_g\na] \\`<v~sVb4b=BHmJhBW^ B^onJ貋jt`.J*\n<Dr5=3бh3i0KVvJKS]5ni19)EgRKWc@QcNY*C%6\0@\n&0 Ft\r\r\r!pSbLvn\r H{ԅI),l`7qA23x`j1+ltlCa7srWB2+S4E^s>v4E+Qvcҟg)̠Nr]s`r7y6#7ecs7YxLuĝWtJ7SKI,)%,Q J;kŷ}\$DeW&8ָ̧f <gPAj~NlU`7sx^,('OUVÁP#yL0uNЃ1Cyv3x ˵-푀xwW[7`w[{u{A#w,ҞiJꗀp?.,k ʯ\\q uW @y'08vpyvPTh.w~m壯0~a\\cQVw_/++)H/^h6 vYONwoX`8e6;_iDxcTX Ω R{p'Iٔءux|% u{1ms'\re85񝘀9ՑvKJV4`iDlwٿ3ougڥZ kK8q[Y lfulwg{W.\$7ٝz7RF 8I-#գO:V-*2hp-,dqI,#͔kKoI\0]\rMV:(\n1_QZ5~/|x\$GKzQzH֍i>TW>@EiʜT&Izb]WV!<hղ_5|%\nFDZ0yVyrA =m xY=yb\0ne3];AmnOv:W{u?#5!/ Dl⧒qz%w /[F-Ƴ/dC\0˾S/o\r10 1\nxټ;|@S Y~gx{Q{U>?/Uzw×vKRCMOQ1-c ISjQ>1^7pi57 U\r9f'}#wɱ4b5sx}<aw] 6F !X!0tLnI[&;\n\$:T+<pc‹v\$Bhi:\$#vj(fX%J/fkcY)\n<;ݣ#P7\\Z{66bo2\r;;%hFK`\r ftͼjV\rp\npKq)N)%/rwG\\=T4Ψ+Hk~cib\\84A0WظF \r=[~+iR-mz{{v\$'[Y~7RAWpREOu}!Vgs|^E w)-Л*nj\rdǪG(>Gc'e\r?*lGYW5հIQY\\X)ׅ,( 7^Oʼ77\n F\$BD{SqRqYqk5UQxETO}C\r)K6HMZ٠Pg6! WnnYpT|\06Ÿ{;f@o՝`\$ ˜f<eoBeKƐ;iY^b'%hDg?y֮\$sPT0T7Wˆ\rPR?ղ4,'fFZ r2( \$ @Mh0";break;case"th":$f="% OZAS0U/Z \$CDAUPȴqp*\n*\nW lM1\"T!R 4\\K3umpPUq\\-c8UR\n%bh9\\EY*uq2[S\ny8\\E1BH#'\0Pb2as=G\nASZg\\Zsf{2q4\rvuTq,..+h(n1s6t9K'vK֗!AvyOS.lUشt.}pTkp+nC>>Bi\"X *~-h+#\0,@4 #7\r\09\r#6 89R: :8à1FK=\n[;I쎷+c:lִp,,C \$450=9s?B.jQ@o뚑B`P#pΞϓ.(cOs̅B5 7In#2\rA\0%b88R Kf-Z- R66\$9# O=ր@ldsg ٫ 3ֶ7(00 wڨ,s{j3F+m\$L+A\rY'CCgH:j KoC>,lľcݥ{cj~VJk(8Nx)iM ӳ,ҏ+KRB{?\nTˮʓor3e5QlH)g>Ù0zFN# D!YWVi[1c3P1UA\04\rb0Uv9 `@sC3:xׅT p_\\uxK|6Ԏ53Tlv4px!0m*E~9e?#F\r0&=e?Ջ\\vعl6u?S[X܎r\r,9J!?D=RdjHB)F3wD=]\$yhpN1vwA|EY{JIZ\0C0aX`ec5\$Ҏ|KbX)sM9PrPM 3\"ԥfK[ [l7l^ d^؞nlfBrm9>AFO[#gmEB4K\r!dnPܧEҢQ ;ZR2 \\jH7BG_I!8h (v+ØcSP)ͩܓ- ='1,AI(\\ M_+0bFl~)M qgo^u3Ƶ\$4.*3v]\0mXpuNOCz\$0|hf\r!Zd8 Q+#\$ JqTH(xG ;hd *&\$>\\)3`Jz넏+T\rTĆh`o \$9a 8/HTHuG9Gatlu^.?ITDm<^R\rBV\r!F+u.ֺ]vۻ^*`tyU?'5\nOezӧf mTo5\rgSUOs9< Zx4%z\rtΡ:\\T ;uTjU\$k+! !+uC]qjMsԬ<;S4(cO5\"F0pT6J;`G 0ÈA 7](U ,rS疨34TAYpp1H\n\0@Rg )?@bE3Q/pBqhZюcEJ\$^ܸl!1WA-@%fzJ#G0ÈJ}<`,wn t6gt\$eÍ*)ezpz26v ) u֩\\m)|:+}˙K [/6I\"IQ!jK=[ g'o<+\r:Nk\$\$-ާV'7b~Fj3*0lK}ت|152FZҗbtIfIA(e kW!KdP!<vZZ1nzLtPvตE~–ۋH\"E*8.Ɔ*w,% R948G)⹲T(RȫDa);6pp \n@\"}&_o C}#] V/ vʂ<?#Лo#\r_q\nzޟG.-@LW\\\"eTTc5c,mf)M/֟ڜCNބ(.F _h&6pjN\n</֜oP4r7+i<<*ʶ[\08hD tpiI.\"~\r8`elUb>b~74\r'>9k20L\0?<\n`H <H`L# vMD*#w \r\rPIi>C҉D\\ '07E赮lg\")|Q؏og:BܜoPd+J,@\rh*cGm'Yvq,FX d4T'(@0;\"ftbf1djľ%{j[86C>hl\n`dE\\\$NjDxWV[\\(,\0^0~\0}\raF:bdi(K`E]H2i8-в@2FКl@fc\"k&Pz%y%oC&B-*\n2r Ó**B2 (F*gdЦAnmF HJ\n CO8MA ֆ.I2.O5& 3L-9ԭH9Jƃb<a\n3F2 (!>&Iz~!\"d'+0Ds-ƭ&i,aO,l̍\$O2ӌ] 9[2mHfN9%nNZs7 ¢3|0\"6=GC63N#g6C O(cO{RdNmQO~=LFz\0c\\'T+,B+2Mo?idDO`ZQtgQw>?)FZ\"\rT(\r\0ފ\0ڪ]?DINZri?/'?c~<gp/m:u,p=@sQJ:tF@piNp<S8pNPiPb{LUyUԙT=`5M@.);+@A!Nj2v\"z#g%pVOÓkL)eHSQSC|m)%UStgSHS8=WXM2R U#Gg\nӸXs5}t(@& E L\0,gcAcl(-G&.fu\0bINwNO:oSBoRWuT~_5Nƶ;]Q6 71\\.(cmY^yZU镪91*u<5M―k[=\\Sg )6jSjk5kc}gj'klU֙bU;lyZ'mR:H`Csk4Rm\n\"N[)K c#DB/9E0\nG,o*O<HWMlvUl{o4kuWJNpVwd @#iUO6wɁxV\r {p\$;x*GzEEGy~&mC0~ ,60fIvh})Vw3kw7n1g3wi~ulWP~#~u~%ӗ]W+8%A+LV\\K3s{{XO ;!&!f`F8 ro\"R<q\$hzոmIx瑣#x(o\nwXJw oWy74wo=[ww_x_QDžXeBcWj>hҫ!B)nwci83~ u[\"'8Ы 侯8.\"(fa8ivbO?N85+nakM9p =g\$]w{rNbs9A 5()7WXf]`nz\r8pdsg6|dBxJIm@Z\n.PQR'ĩVknvX7-z/:&M(@\rP 4œ^i&͜\nRe=ebdM'4Βs7|O^yOxGDZu:IRO#r(261M6<vӂ-K-Q+ OZ9y)Aq?WM4 XYu8hDMxz\rF =j%hi1-A<bGGQ## _\$&Z/~+4>; |_o\n I9jD#e;{[ D0Vn9f//Cff%C'N4Ks6;@\r88Dp(3+k<49u\\6{-R \0@ t\n`";break;case"tr":$f="% (o9L\";\rln2NFai<BS`z4hP\"2B!Bu:`Ehr2r LcAb'\0(`1 ƃQp9Φal1N5+b(Bi=Dqe0̳U 18t5hZM,4&`(a1\rɮ}d=Iⶓ^a<~xB3|2u2\"SXS8|Ii1gQ̑̚\r;Mno+\$#ӆҙAE>yFqH7ҵ\\Y;H' d1/.2aՎc8#MX༎c42#@:J+j2+\0֭ܿ(B:\$&Ԗ1+,0cC;OȈ R<čH P2\ncH\rX7*XB7P XbzN2o8#\"։(\\(95c1p3\\Q!\04@ޣ!p a`@!cB3:x]\r Ar438_SUI|6KB3#Cl 4A^0+ #H\rm/R2&JB>\\M6[z^5\rSDJ2%@xh,W\"4:\"x,H&9 Sy]SB35! wro 478\")1&\r(&Px&(a>\" .@<=bK) 7NFI=2bȶS^{pA3llX͈Aݢ6HRZ@Bz<H:#^ȃ&|q|n2\"@WkK\rU6rIS\"<͵n#e!C03//Df 7| p7-H6K`Q! OG0W5G!h =8 v[D X !\r-2YPt2],;h!\"gPBÙF0(U y\"ФHoGX50aUWU`W\n^+莰/Sij>BൗI} qd9yHl U29Ȇ'B95ʔ]1\"CAp 45ىA1Qn.fUWa^<F\rw0hs.M i8(6-iX,a!kMp*PWsQJ&I/pO1c༃;mS8l<0:RCr#rt `E`\"\n (0K9!\"\$S C\\\"(yDJJ1H8֛\$K\\r<b% \"fq%wVpz!u<I\n-\$|M> QBYJy4E:%Ph)œU@\nS\nAx@ fA3y%#jZ0*Q20S&H\"k,,ĕJ\$&OA\0ru\$Pxy/G\"d]- +bb,Р˜T:\$L*F<2:rBD3:_,yèy{8\$C!^18`GlH^]Ay; SmJ\$Y zNhB A/gT!>e+4r,zwp \n@\"kH=zsj\0Da\n].1&\\oqN5P %W mKEL\n`u\rgsx\rE1QsTr8)(*l[6\nw܊w&x~ vX=1p7r𙃐8 Ev*k:}\0=(ȼ\r*=Fo\$m\\o7xDb\"C4&\"bEin`( ŗEL\r\rg{x%2eDsk}8Yk).#w!}4\\u\\\"a֭4t{:B2\"9O5\";o: Hq43@(!9aw\0^^ec!Sn• AMN*\"m,Xanɞ%J9]S\nP 0xcI[DEvR!XaE ؈/)Ew!)WD8גEgy`mb!V@O}=z)&a0fSNM47:XdAs{O7բ{'=dhK=>=j hF?%f1/l?(x;Pģp^%b}c's((|Ġiz0+ײ.Op\"*=@_h(s\"Jl!Rt8b>,6oj\":6c6Ө0 mcdRF'\"GH.L\n!CFP_leB\"E /I\nN0, T\${ \rD m\n=\rN7%4rF&|c \n(nΰ+i-rn1\0w'~!pTpY (c'<YC)/6&:N/\r&1FE?!bZ5oEF+PlDN1\nMı.6>m4fԜr,n\")THH=6%LqrR\nX(^𑎎-&\rB&2˱ep2&QR)GJt*L5!I\$R52J,C\$@@kHfD%tmqKoI(÷u#kfb[\$D_\nc*\ny+ME\$\\!Ȏ#\$G*\r*R+Q\"2\$m+.\0.jW&/Ay0r@l7AݢP@d&=92N^-32CX(/*G-L3Hnjx^{)6W+N{1297I)q6I0%F.0Ӛrn){:\"#Hzf)E@@[1 |2o/t<5sL=qN&>qJanNʱ^\$b?t.kU/NDEb7d\$CEd\rVCJe+bB\nZ (/`\\EÉM>QYAp']Gm0\$ˀ04b<J\$JڏCCP).%7nH r3B h*!mF +Pgb;lڄJ%vGPEOdt OY?9HQOqQC5Or+*RH!Є]N@\re%o\r\" dP\r-\0H@<8N \0BH=WP\0hWi_&ST+bjmQ\rZJFxFP\$@";break;case"uk":$f="% )h-Z Ƃh.  h- mhĆ& h .(.<h#v_Ps94R\\h%p Nmc L4\0(`1 ƃQp9(;Au\r*u`Cd-|EX~\n\$g#)exZ9 G\"HESXj8R9ֽ|_b#rk:-HB!PńRDiyA ǖx]5KOcJvf[5{ftk,TIjh0'\rz~\$\ry*.4nNƃ4ê*0(r}48죎'plA\rDn<@#)یF^ƭs X ?V /傼Hʹ,)\nZ\$,\n\$÷H,,F#M!d|#eEMj)Dm+)Z+;QH1(1;Eҟ/!Y&X⢪z_\r(hn?!T1CW\"6Nh14 \$f1>)B[l`H1GbtwNH1rh\n# 4(:E!s2ԠM0#{&#3SApx0C83:xbAp9 x7<9XJ}-w<ITndT^0rjX˒\$֒ry*,*euon6yK\n6ShfI_#hyz*Cj/)!̄^IdV=GT=oS\rv #s'v#kY^ i!b^ԋkξFrv]Ͳm#7\\֑\\n\n_*șB\ru*6w\$FA3PU}e\0Gqh-\"'X=t(B|pJj::dBNqAL(ǹ ( ^)\$FSJ=\"BM}|g *< h\nLE\$F>B8G#n\"x\"rz_(tSG \nt\n1N`a M}cu/ R!Z]tCxsгaa!I8|on(|̟Z%ىmMJBR8oEB',%aR>rl_̪yTǎ8Dw Q \n(^-%T.T*E,U\n^S*qzۊDC|p@2'h%7Y4xGI \\F'a)t)X8H rb:J\0ɌzB;?W).\n <D:/FOeg]FIN4vy H\${UL΅-'Кaiun%Q:{ED]DwΪNMR|)TG+\"p\$HƏDQ 5\\Fg2\$L3fݜz CfsP 7m#XkfI\rB.^Z!jCsk^iQV\nPN*uX\nX2V(}\\%3c!/Mi\"3`<g4FaZKKi=Ýj\rf[B\nTL j5Z,!V{H VX&鄳#O?sn'&/[va0PSC\nU*_ry9q)[F)b92r<yL†Z@PYOͧAZ8,cZqC(3(+3/L s{)5\"P ݱo(j,X/ʥi\n >ExQD3w(>zku&%t\0R%\ny32N+02.˙ '&,Qr\0Y\\O;yAI#<B(tv=B-;g!\0'Y^?(OAnCh!SvX{m(::Vd}Ө֓Fġl\rY@xS\n3*bY(X3tz\nF)驽z\\&D21ǘN(WC5=B,BF6\n]i\r*YD/{X9q &!ccv뉂0i !\r,4 hWh #G<qגGJ [;F8bѢxױ\"p(o!-U,2-5(A}s(\\ nFgƜ3tR(Sq6Njʤ\"2_*(\"Âᢈv蜈*%hO>'+@tj, ̅@ⴝI_P/!KJrE~H\":H2q(bX)2*\0K\$(\$}484dLBr<3`ʿ\0\re0.H>9&Dc#f#Mmhrg*@/ 0Wg}.I2\r\$\r@\r 'b| bppEAązfBwB HE2R#qnL#deR)j/(rrWg\\ZBkB3\0u (X \0Q\"IЊeMNh#BڥhPxI*H]1 V\n  yOOl΄LM+n\"vu^-~ZgLatvC!'xodF9 . ꊌA p&jkpz7\$ta#,`|i(r=d\$HE w!Ts%&:N͡\$'7&/\$=C=<\0<Rd2wqRvq2#h&R\$]*1d4Kr!O#+## % !RVCP\$l D\nTG/}G6. %Ko)sRV(2d(\\*0d@0:r#ưM\\d〼OoQ2LR&ÄFC rET6UAIroH3\"œ(awJg'a.9:-AƛbӺ›:=qd\r>,ob6X4^&nFHso(n!\r|В*~D´2v!4\"W0yCäd@IcIAmaCBI9s>nA;|\"~f;jp@\rip\r`\r\r DjK\r^b\nS=LGK¯6h-/TΉ+W>)?LMGyGRI=<9LP:\rMsGu /R |W*A\0!HK,&uR-0T59TjW\0퀏-5ZH:\n=Sg-6\"2gTUyUfUXPRLPMWQU4\$PPCy\\(6n[,<<PA/\n3V>>q~'UFLGeJBBRoa@m- @-rE(FU\rY\n1 0Nn7iζ#_BU\"O&*QNQ/6@t>Qp16:=Ai]2G]rƘ!5Q)uL֑j\"{UOu35\"O,Ljtj2v<]U5lOU%S1745v,U'n\\Ӯl\\,l@o3%>{D \nbYQeLpL;T?iZJ0NOSn`v}hA}~'o(5W9W'owt~xcbMxW?G͔ؕCvO1\02VXu-=UvV \\fݕkvu]uUv}.}ڙ7yV6|b,z\rZumU/T}kVv~e`ք<bD_|wi0MX0T845!^͂AZE+{;f1B{Lu8k}8?#\\_Wi\\Wlq\$>CQӃk\nCymILevx+JCe?\rBwT`Jd%cpҶSػrp'rK,P#\r#w(\$ْg8gpwEW8Hvpb'L' 7#)+R|s4Y%uis'sZ1n5)\0u6it]X\n[NEM46R׃)b[j^F&\nZ]'RMVUN2ȣW!5SZZp\rv5B.h#'Su7{ F|4F;V\\\"rkR>VF~Jnz0П1/4<0V@M\" ceFUdzCRPm=\n5803<B~tSa㫖vxXYv:t6j<<xdB!\rծ> viZHPo,e WBzO`c]b#h(W2w\"#0yos8SI-HyQM9S}KOv l&8\$&ML:<}}Z;DT8=lAp\"2";break;case"uz":$f="% (a<\rƑk6LBNl6Lp(a51`u<'Ai6&%4MF`B\"u2Kc'80cAn8!\"n:far Io7X&9 5瑃Hq9L'3(}Aap-rLfqJ֘lX*MF \n%mRp(+7NY>|B:\rY.3\r4Asҙuzah@ti8[-:KZ aO7;|kul7*'֊Ӊ‹h@<6`5(0L8 #ޅ!,6\"#ZB0*8\r{9\$R'ɪNp)3C%ct\$o45M P2Ir<3j쑻#(;O\\+@7/KXs\$>7GMCֈzF4+.ӈ#\"x7OQ\rJ !D2eO=cC}\"fȌr!ь0z\rH9Ax^;r5Qsb3(;# ^'PUx!;VUԋ|L4:IÒTXd9=P{QwaQN֋.2(mLbx7\n/ PJch.\n7_c=dP;zE|+`@8ӈ-h4#;\r(j'#j2I˪9Ah!z(>k!* 7 _<4\$7[v23I(ԍ+(<8NZ;ml=V)O#=u8^OقtwM r#j^RkB\\Z]5˂S8863f +ݲW hWñ&W*\\Mx;d8ʃ'4#C>aaa ҂5\$6\\Q:M0%\nG)cy\rtXpJ)sXCf&1<5\\Y؉n-)֘H3 Z\n\\|\"A &{B:Z#xY)19;\"=#D%hh\$} T+PBZBNA|E14m,`V2YK1g-\0sZ]l\\9p\\` 9n!p=\$<! P2^JA]%|:% >\r9i kʙFY&eh\0y<S1\rӊsIM:|dX\$:,֊ӔAk%xhJ[1Ź%x/%xih]#Ezid#&5wI\$P!r`\"E4\$|?\nDOhJe:2S]EF/8@PHU \"v#AA>'02:HZYF)(ׂd||*EY['%\$'`FdiB-FWii\"hY\"ƆÒA F\"2'b)d~! ) ]ILnQI`03FⒿ.rvHl\0IˉPfϘ[r>ITr4 \rL Mo.W3O\naR;q]˥E'ݸ2C\r4wboDf'sK)BjM@F\nHC&'\"Ikf@yg 40 d;d Bf=\" H !K d0@S5fDt6j e\n\nšVZ1lp,<1(l:5=\r3{2X\nRY^v:l;Cwəؿ4I+.9E\$\"ҴT (-h(RQY+*5bD JGp6;0ӓ \nc9v F \$B\r5 L>z4u_,93A zcUB;^^S:ݝY.4W\0C2*&i!-6'XGr#LĕL-ѷX3i\n;:hu-8z:~KSg !<(@RSjtb\"s7ei7-7\nB3i+6BT9&颠ZQmHFTZ~›o.\"AyNf1A&`R{K?YiEݙ́b[;5.4ĆxLLDy6,~}D˸96u3m|=/~+* eosx̼i0~_x ,m\"KSO\$f ʌ.&bnoz,@օ`r_D!t3~f`l97pJ;\rlL^5C:c%\r'F<d~قg0d8Gn|qbE:#qc,\nfb`&K D'G1>gqJ<\r 4B̸-`igN +V/\$)-F|&,(@Ed*\r\np\$\$\"˰Άc\r\"ҋӧN GnZ +'κ/SxW@w0'j\nq,laolgRyf؏ri*GKV1Fy1L>P;6Q_&@m\n1~oq{ldq0&dF=V48lpGLD\"ZVk0Ă#1))f9b \0Κ#81ӊJn:7F pZCk#N8q;#HpU\$f 2L#ZzDZq#\\@`dzi0&bTllrxT5fڥ\$5M\$HhfJl@;gPE*+2;+g+Oj`j'+\r Fj(RX4tVyʪz'Cr j0+Mru\$g 3D3 +\r1Mr\"R320(%&0D\n1q~,.3G3T?0##w6e4k5k4X\n]zT%5rO8S~Oxls|K5L:(%A,K5\$M&)Pbsg#ӼPsP Q* -j6(6,VabH&<cc\"?P\rJDp'<\n\r?)&9po~4+8'\n0pL'*l\rV\"o(`\nphlt4k5*BeOGR{TGtiQHF7)ntCb%\ng\0\$4q9J-04jKcl( δAK#@ O_M.@:&\r5G7 \rΤO0PDL'4Q*V1 3d1U\$P@Q\$|3cM6YRjV;\$Vubc Br'g(W,  (RmN @\$uDAtDCBKBbyKoQnkKv M\$L\\ u._HLjM>KRhL+O/h";break;case"vi":$f="% (ha\rq]Ҍ]c\rTnAjhc,\" b5H؉ q Nd) R!/5!PäA&n&0cAn810Lthb*L QCH1b ,Q^cM3s2Nr=v8]&-.c\rF 1XE)C  nz477JqmU`-M@daH9[׵\rH!y i=Yd\$IXWxmmtWjYoqwD:<6\nc4`P7e' @@#hߢ,*X7@9Cx䐈0K2\r( :M ;#@\\j LäJޔ)l\")qvOƎc0I~lK&B#%\0 A:0 K P5\rhA98*\rs)'BB~MPvSh򐅥(;%re&llK!\nK!v\rAIhCbTrԡJu4#p lgÜqQ1q!Ep@;(p:z9XоD49Ax^;plq<L3(w2t\r3 0\r#x|,[W\$WK8JFt6o5Vڄ\n`eeۿP0Cu؂#0<(P93:<j@N]3(1\r0fLD'dh*j0\0@R TD6e^<b9/\$-*P\"~iE\n#T0a@3;BD\r)\"`<pcE d.!b'ۯԂ\$l\rlJB%\0v!뙱tPR^mPeNm9w UW A>)O#eo}“@CsFZ Z >f`̉ <`!C<@  @(\n0 `a& iEe\r7.\\`\$ÆC\n +\"2\r([Am)FaRHt&\\Zu^R,%Bw!]춹W!I\nMK`˃<Z! amH0o\r!n0@a )0 ؓ6s,ēNXB!\nOa@9?%ˤ~\$2e\"[\$*C=P6v0& 4K a=9rc iƶ5\"f Iԉ:nfӓu,!*A4\n.ZH!\\Q/0a0!Za ͆_0u!7q'0)B3tpӔ4\\ҽ6K*.\"qw<] tl@P\$`a/ȁ\$F] 1\0P<_ A}#g&d3ۢ6NɨsG+pp_ \$>ݹ%AT]\$* \"5}H#Z(P!#\0\rȠ#iJD5r \0(F\\;*v(ѵ.vS<H}4ȚI\r*YJd1g#`wNW@| .׈u/Y#`̉PbU`њ=hr~)6#(\$\rbMLJvarK mBܖFzj/;wRJY§:ED*I&H\$?ef`]Khbna=L3l72ޫ?UV&直)|\r\0zQi]54#Zaac1ն\$}rRƤ''` Lz*\rA\0zNCC\r63}hTRc'@'YeSK,:L; 2C`Q`,jv@dפ5OoSMZvG9(QF,-\$D&U Ô\rP;ibvp88AC| ~C6 ѭFW! pOYD!fF^K/1qQv\"ohwO OT7: ! c {\nvԔe?.ZbP3t0Bi\\P%:cxrEkKz\0*EL T! \$Ib\\HW \\ȻP.\\&G? \0lpk@XܼFuĸ_phcK'-{E.hDVRy!\$2SI4*QICCzyJFȔ;XTcϑ/͑iR\"2IP06qpP2aV1ѣ|%\0ΐbp2 ƸC&svҁB.L\0 fKϐ2.z-Bw}'!&kl L2n l.#JD*X M\na\"HJ#bt!D.nht\$gD) R)Fr&HBn0VPp4#Cj<n\0C\" Ю\rt\rzGvP0M͘Al2)1^ZnBfW''g\"ep\0dJ__x\"Rr7m˸QY x2>\$\"q֔Ж1Ć\$4Zm0Y1#* ʬ2fpÒ\$@J\n\"I\rNP\"gMU\" t,QhM&&3Q&jRq19UQ'xZ~C샦{Q**r+n/+R+˜,l!N<\n=䢕bUTP\"\0?Ɔ_ȁr2\\K&[r\"I 0qm0Ѱiu1Gt~,#\r231,)+ \";/5rٳ!)-C6IF]S+%n#I4D*%d»+'9K,2Ȼ2w8v\ri/cC HSSF`bp\n ;3;\$1(3 p-t?b9?@3@AC?T AC ZDZ+R?%@sv0ϝ6BED¹ҧ XJ#cQl%f;%((@MjOmq@\$,\"Ƽ*nQ3bB ĐCMJJg6 O0M}%7d\0\"\rE%d4:`ЄR)\0\nq!\r\rB,g,7c&f#S 0Sv5YkL93eL#49cp&3gNZ\$ muGz\r@RVMQX\$\0M/D5m (t!R\r%(0mXK \"XpiҊjg++ugOXJ \$\n 5!^kFo\"/\0 viK\"'&`@|`ˠBE \0TA-\\0pVCVPpj&eH\rI Fpm>(Z Zp'Ц`B";break;case"zh":$f="% :\$\nr.r/dȻ[8 S8rNT*Ю\\9HHZ1!SVJ@%9Ql]m FU*qQ; Cf4)ΔT9 w:vO\"%CBrixM3s2bV}\n%[L`*9>S؜% yP⣎uYоHQ)\":VdjdK:tRd(t/0Vc5_hIG*\\?M[h9ͣQpCqH\nt+ծB_cS>R\$2{T-&ġ^s W9@@nr? JHkIRr\$M'\rzK*<OĹltV9XS!%] 6r^.88J|rYn(\$QBr%B+EHd) (֜RL* E0Pb6#p9%0dBW6L'\nRY=\$F@4.0z\r8a^\\0tm\rp^8.`xDωLsd)SCx)I\0ڑeIR#|sӦISr^mS|usmkV)\"EA(FAJº(fT[xaCG)T=mU#I!@Us\\{eDH Nċg1i^YKr/Z5vM!(JYQJ!PD[b!g)xK|\$>|rsYy~qYO>AG1LA ::R s\\j8xG)]=|qu|ru*;Zg\0:cAT :Cp@0C9 #yo97 H j0B+DW?aK}4PJ6YE2eBr R:u@H,G@GBʚ!Th!H1@G-++ME Wy|t DXQJ1G(6+Ÿ t \"MJGbTZՊV\\uvaXKcGCi{k8v+nEZ:E\"tQ\"\"hc?RI_N\\r~!;2`W\n^C~VX:,P2{itS`pJtN+r \n9D`\"B\$Xq\"khLFdJ4+dB~&s\n!sȔS܎i3T*@\$\0A<H\$TFqA\n\$<9pJsm8QPDA!E,bdF.`b^A@y fbxŢ\"LNCE5\" 00 \"6 F<H\"LfG(\$pt e# \$T,V04D\"u'\r\$:*tqrUt@h9DY 4cr ('\$,R\nzp&BEھ؅/5z|B*\$d \$xF\n@\"`X[q  kMM҇)iP&^.@PO *\0BE7\"PoJCZ4@̨J)Iw%(!EQw^*œ]ORݫ((34\n\\.sb\nG+_@@_L2\"â]2!ұ?\0(rs=bߑۺ3ɔqB9r8qz ^V`u 7)2e0h\rѕ -`u_̗xi3 JBoJ\rQrE#Ha6\0pt[( \r4!\0C.=lK 7bؚ;H-%\0b&0M&H@Rg\\.qi邴݌[b6|!C Dk.\0x w(d-\"0sBKb9f6b&7cۄLE#c+څ'®C[d@D|U]ղ¸e \\^-a€\nֆ.+^]k~C#IC\\L\\>UB=as|RoMslY`Kޅr-4nhD;/Y+t1J1ʔeZ\\C0͘cp#MyF/l I0m\rH6,PANX\0&f3\\&n>{; 77q_pG` Bsj>0-bOovPxԆ*\$mN0\$6! bVvn,%N(mRb&p<`O(;6RPAf8&PC-^tM _=ЪK\"MoRtu2/_H \r`P'\re'Rl2]lL^q\\lhH\"9! G/j0ZgErun搨^v/Fp/6V,QGJ12tf+Qq \rO g1qP`Q֠V. ,\0Q\r QygQy ׀/r\rm1щM Df!H1,+r#!oM# \0s\$j n1t,I^J# BrlLR`\0'\02Az;Kh>dEm\nZOI\0n% |4!b̦h#m (2;#C,#@-0\$fn72v2,2dĭ)#-<m\$b\nd2Xa I'!m6 2x( 780I_\\8ZgA3M6Aҿ-B򓦿tTDINf @ \r!~,#G4%ԭ:\$\$5\\vdҒ>{6l(1nl*s \"dAL";break;case"zh-tw":$f="% :\$\ns.eUȸE9PK72(Ph)ʅ@ :i aJe R)ܫ{ Nd(vQDCѮUjaʜTOABPb2ar\nr/WtЀBT)*yX^\\r|I7FS 99STB\$rNuMТUP)&9G'ܪ{;ds'.̖L9ho^^+ieD:=.RFR%F{A,\\{Xs&֚u\0rzM6U!TDLJEtl6N_'zV~NZRZRGATO\$DЭ8UJt|R)N|rEZsiZy V+Lr>[!kg1')T'9jB0,1/:8Dp.R\$LGI,Ii.JJő[e|kzDYYrQbB%B<\\gA2EyD^ONv`\\\nsT h7 P |\\DTZ\$EQJ3wH ) O*F@4/c0z\r8a^\\05]Z\rp^8/pxDARd)SnRQ!^0Q@b RW!u%39As;,W-\r_QetV)\"EA( C2R\$݅,k*ΑgANQ=tEUdҘ\nI^d1H  N&k9]g1G9{q%kijCA\0Q7z\n(:I*[ą2=+\$<B~Gb&Q{1IK;)cD/Oo_K;%x|g5}'O:(APEtG]?lC1-xTxXV e@6d :Cp@09 # `!Hg~\0Y0CS+0Ort Ȗ d!Jyd6@` b !RSoeL8! TK&icfNYz8äHa|#HS!KTTdA>:`+(PT*TMwbQ\\M0'dHVzZkUkp\\ r.`t\r0w#XD1W\"`iJ\na99&IKJ!m# b Dr]'fUZam-޷\n\\îY]%| +`\$0J\\\$sSBq-* :d 8BR\$!I(/X̨i\\HL90HBjC(rB\"EH%%\"[8O\n͋EH\njH!\$:ZBHΰn\" \"gϣ\"\"#Vq@JR%Ghs (_G-1z9&b8ttX drGp00 5R{6ʵ6^bBj(Ȅ[OM^LØW X.\"5p@d g\ne(CO Æ*4T\\OFcX)h:DLB\$sOJ:D)A@'0\0WDĞ6Lꛖ%~v{kO-B؀Q\$#@J=gx&q\"PD9sn )j`\0&i'@BD!P\": E 3t/J撳_x8t㚓#6f۟ + @eQ|]%D9dȘp|Q\\AdJq ;tf@Bx?QAMA#M0T\"ShP`!?HYVDJg\rS|p4A\n/A޷+/:uVPs/AkEk\rjL9\"w1%cG]phU:>xm!Q59ußrnb0!v7Pv<+ a\\2\$KcAqqe0bq v[sX\0,Aա4ؼk-mfw#eɪFC \r/+eP 8R eZTs@Ztp壡z,GH\ni\"ؤfTb{^3NU<΢Q D?X(N((. P7]!ߎjdDyz\$G@@- !*_Vk\"\rE/)H( J&<Ƞő:fёЫ7n S!5~bdQif Vb{O_;ccEiT\n֡Y!`gt<<-bܡx\",B\0 \r\\-\r\rĀh\r zq<j <X<oDl6DL&wu~xPxnvo|+p.TƇyopj& \$Н]\r\rk ,.%r\$>\r)U#n7ja,gŎoǚ Z(!p̡\"Lx7bhT߰/ͮà:M6J0c<;yqڑ\r/<z gz!m-fzIuAsgFǐbgl^kj-\"^( F,(!_ .NkvE^% \\Frr&_%`<\$\"q'\0\$\rLDs ) K\$/!1%\rNY2D>1o%]&/' Ybf\rx~\0\rb0R(`(([))(*e\rv\00P2f`,&fhN.TQ1N--#\$÷.r<-.P/\"0dLDCDj+.11\",2. @xжkf#{aDAn\r i X+2oDD!H`Fb!k6Fdtk 8Az>?^;FM9 W2AP\nZFxz8!`|aKZBjbmӼ20Sn[@G\$,?J0acDv{&Tjjz,D:|d!6a6*EgWAc<QqΊ̡lf#\"0^0JqpLa\n, \\8\n `ڔ\"+#FNxmRT<{TEDv,AFW6l^ &3 B<)-=0N";break;}$ij=array();foreach(explode("\n",lzw_decompress($f))as$X)$ij[]=(strpos($X,"\t")?explode("\t",$X):$X);return$ij;}abstract
class
SqlDb{static$instance;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
function
attach($N,$V,$F);abstract
function
quote($Q);abstract
function
select_db($Pb);abstract
function
query($H,$sj=false);function
multi_query($H){return$this->multi=$this->query($H);}function
store_result(){return$this->multi;}function
next_result(){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoDb
extends
SqlDb{protected$pdo;function
dsn($pc,$V,$F,array$fg=array()){$fg[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$fg[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($pc,$V,$F,$fg);}catch(\Exception$Jc){return$Jc->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($Q){return$this->pdo->quote($Q);}function
query($H,$sj=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(23);return
false;}$this->store_result($I);return$I;}function
store_result($I=null){if(!$I){$I=$this->multi;if(!$I)return
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
true;}function
next_result(){$I=$this->multi;if(!is_object($I))return
false;$I->_offset=0;return@$I->nextRowset();}}class
PdoResult
extends
\PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
function
fetch_array($xf){$J=$this->fetch($xf);return($J?array_map(array($this,'unresource'),$J):$J);}private
function
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
seek($C){for($t=0;$t<$C;$t++)$this->fetch();}}}function
add_driver($u,$B){SqlDriver::$drivers[$u]=$B;}function
get_driver($u){return
SqlDriver::$drivers[$u];}abstract
class
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
function
connect($N,$V,$F){$g=new
Db;return($g->attach($N,$V,$F)?:$g);}function
__construct(Db$g){$this->conn=$g;}function
types(){return
call_user_func_array('array_merge',array_values($this->types));}function
structuredTypes(){return
array_map('array_keys',$this->types);}function
enumLength(array$n){}function
unconvertFunction(array$n){}function
select($R,array$M,array$Z,array$yd,array$hg=array(),$z=1,$D=0,$ah=false){$we=(count($yd)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$yd,$hg,$z,$D);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$yd&&$we&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($yd&&$we?"\nGROUP BY ".implode(", ",$yd):"").($hg?"\nORDER BY ".implode(", ",$hg):""),$z,($D?$z*$D:0),"\n");$si=microtime(true);$J=$this->conn->query($H);if($ah)echo
adminer()->selectQuery($H,$si,!$J);return$J;}function
delete($R,$jh,$z=0){$H="FROM ".table($R);return
queries("DELETE".($z?limit1($R,$H,$jh):" $H$jh"));}function
update($R,array$O,$jh,$z=0,$Vh="\n"){$Mj=array();foreach($O
as$y=>$X)$Mj[]="$y = $X";$H=table($R)." SET$Vh".implode(",$Vh",$Mj);return
queries("UPDATE".($z?limit1($R,$H,$jh,$Vh):" $H$jh"));}function
insert($R,array$O){return
queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES").$this->insertReturning($R));}function
insertReturning($R){return"";}function
insertUpdate($R,array$L,array$G){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($H,$Ui){}function
convertSearch($v,array$X,array$n){return$v;}function
value($X,array$n){return(method_exists($this->conn,'value')?$this->conn->value($X,$n):$X);}function
quoteBinary($Hh){return
q($Hh);}function
warnings(){}function
tableHelp($B,$_e=false){}function
inheritsFrom($R){return
array();}function
inheritedTables($R){return
array();}function
partitionsInfo($R){return
array();}function
hasCStyleEscapes(){return
false;}function
engines(){return
array();}function
supportsIndex(array$S){return!is_view($S);}function
indexAlgorithms(array$Bi){return
array();}function
checkConstraints($R){return
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($R)."
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'",$this->conn);}function
allFields(){$J=array();if(DB!=""){foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}}return$J;}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
class
SqliteDb
extends
SqlDb{var$extension="SQLite3";private$link;function
attach($p,$V,$F){$this->link=new
\SQLite3($p);$Pj=$this->link->version();$this->server_info=$Pj["versionString"];return'';}function
query($H,$sj=false){$I=@$this->link->query($H);$this->error="";if(!$I){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
false;}elseif($I->numColumns())return
new
Result($I);$this->affected_rows=$this->link->changes();return
true;}function
quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".first(unpack('H*',$Q))."'");}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;}function
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($U==SQLITE3_TEXT?15:0),"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
__destruct(){$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){abstract
class
SqliteDb
extends
PdoDb{var$extension="PDO_SQLite";function
attach($p,$V,$F){return$this->dsn(DRIVER.":$p","","");}}}if(class_exists('Adminer\SqliteDb')){class
Db
extends
SqliteDb{function
attach($p,$V,$F){parent::attach($p,$V,$F);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
select_db($p){if(is_readable($p)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$p)?$p:dirname($_SERVER["SCRIPT_FILENAME"])."/$p")." AS a"))return!self::attach($p,'','');return
false;}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($N,$V,$F){if($F!="")return
lang(24);return
parent::connect(":memory:","","");}function
__construct(Db$g){parent::__construct($g);if(min_version(3.31,0,$g))$this->generated=array("STORED","VIRTUAL");}function
structuredTypes(){return
array_keys($this->types[0]);}function
insertUpdate($R,array$L,array$G){$Mj=array();foreach($L
as$O)$Mj[]="(".implode(", ",$O).")";return
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Mj));}function
tableHelp($B,$_e=false){if($B=="sqlite_sequence")return"fileformat2.html#seqtab";if($B=="sqlite_master")return"fileformat2.html#$B";}function
checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$df);return
array_combine($df[2],$df[2]);}function
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$n)$J[$R][]=$n;}return$J;}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
get_databases($jd){return
array();}function
limit($H,$Z,$z,$C=0,$Vh=" "){return" $H$Z".($z?$Vh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Vh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$Vh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$Vh."LIMIT 1)");}function
db_collation($k,$lb){return
get_val("PRAGMA encoding");}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($j){return
array();}function
table_status($B=""){$J=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') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K){$K["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence".($B!=""?" WHERE name = ".q($B):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fields($R){$J=array();$G="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$B=$K["name"];$U=strtolower($K["type"]);$l=$K["dflt_value"];$J[$B]=array("field"=>$B,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$l,$A)?str_replace("''","'",$A[1]):($l=="NULL"?null:$l)),"null"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($G!="")$J[$G]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$J[$B]["auto_increment"]=true;$G=$B;}}$mi=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$v='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$v.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$mi,$df,PREG_SET_ORDER);foreach($df
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($J[$B])$J[$B]["collation"]=trim($A[3],"'");}preg_match_all('~'.$v.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$mi,$df,PREG_SET_ORDER);foreach($df
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));$J[$B]["default"]=$A[3];$J[$B]["generated"]=strtoupper($A[4]);}return$J;}function
indexes($R,$h=null){$h=connection($h);$J=array();$mi=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$h);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$mi,$A)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$df,PREG_SET_ORDER);foreach($df
as$A){$J[""]["columns"][]=idf_unescape($A[2]).$A[4];$J[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$J){foreach(fields($R)as$B=>$n){if($n["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($B),"lengths"=>array(),"descs"=>array(null));}}$qi=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$h);foreach(get_rows("PRAGMA index_list(".table($R).")",$h)as$K){$B=$K["name"];$w=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$w["lengths"]=array();$w["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($B).")",$h)as$Gh){$w["columns"][]=$Gh["name"];$w["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($B).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$qi[$B],$uh)){preg_match_all('/("[^"]*+")+( DESC)?/',$uh[2],$df);foreach($df[2]as$y=>$X){if($X)$w["descs"][$y]='1';}}if(!$J[""]||$w["type"]!="UNIQUE"||$w["columns"]!=$J[""]["columns"]||$w["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$B))$J[$B]=$w;}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$q=&$J[$K["id"]];if(!$q)$q=$K;$q["source"][]=$K["from"];$q["target"][]=$K["to"];}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($B))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($k){return
false;}function
error(){return
h(connection()->error);}function
check_sqlite_name($B){$Rc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Rc)\$~",$B)){connection()->error=lang(25,str_replace("|",", ",$Rc));return
false;}return
true;}function
create_database($k,$c){if(file_exists($k)){connection()->error=lang(26);return
false;}if(!check_sqlite_name($k))return
false;try{$_=new
Db();$_->attach($k,'','');}catch(\Exception$Jc){connection()->error=$Jc->getMessage();return
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
true;}function
drop_databases($j){connection()->attach(":memory:",'','');foreach($j
as$k){if(!@unlink($k)){connection()->error=lang(26);return
false;}}return
true;}function
rename_database($B,$c){if(!check_sqlite_name($B))return
false;connection()->attach(":memory:",'','');connection()->error=lang(26);return@rename(DB,$B);}function
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
alter_table($R,$B,$o,$ld,$qb,$zc,$c,$Ba,$E){$Fj=($R==""||$ld);foreach($o
as$n){if($n[0]!=""||!$n[1]||$n[2]){$Fj=true;break;}}$b=array();$sg=array();foreach($o
as$n){if($n[1]){$b[]=($Fj?$n[1]:"ADD ".implode($n[1]));if($n[0]!="")$sg[$n[0]]=$n[1][0];}}if(!$Fj){foreach($b
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
false;}if($R!=$B&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)))return
false;}elseif(!recreate_table($R,$B,$b,$sg,$ld,$Ba))return
false;if($Ba){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $Ba WHERE name = ".q($B));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($B).", $Ba)");queries("COMMIT");}return
true;}function
recreate_table($R,$B,array$o,array$sg,array$ld,$Ba="",$x=array(),$lc="",$la=""){if($R!=""){if(!$o){foreach(fields($R)as$y=>$n){if($x)$n["auto_increment"]=0;$o[]=process_field($n,$n);$sg[$y]=idf_escape($y);}}$Zg=false;foreach($o
as$n){if($n[6])$Zg=true;}$nc=array();foreach($x
as$y=>$X){if($X[2]=="DROP"){$nc[$X[1]]=true;unset($x[$y]);}}foreach(indexes($R)as$De=>$w){$e=array();foreach($w["columns"]as$y=>$d){if(!$sg[$d])continue
2;$e[]=$sg[$d].($w["descs"][$y]?" DESC":"");}if(!$nc[$De]){if($w["type"]!="PRIMARY"||!$Zg)$x[]=array($w["type"],$De,$e);}}foreach($x
as$y=>$X){if($X[0]=="PRIMARY"){unset($x[$y]);$ld[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$De=>$q){foreach($q["source"]as$y=>$d){if(!$sg[$d])continue
2;$q["source"][$y]=idf_unescape($sg[$d]);}if(!isset($ld[" $De"]))$ld[]=" ".format_foreign_key($q);}queries("BEGIN");}$Wa=array();foreach($o
as$n){if(preg_match('~GENERATED~',$n[3]))unset($sg[array_search($n[0],$sg)]);$Wa[]=" ".implode($n);}$Wa=array_merge($Wa,array_filter($ld));foreach(driver()->checkConstraints($R)as$Ya){if($Ya!=$lc)$Wa[]=" CHECK ($Ya)";}if($la)$Wa[]=" CHECK ($la)";$Oi=($R==$B?"adminer_$B":$B);if(!queries("CREATE TABLE ".table($Oi)." (\n".implode(",\n",$Wa)."\n)"))return
false;if($R!=""){if($sg&&!queries("INSERT INTO ".table($Oi)." (".implode(", ",$sg).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($sg)))." FROM ".table($R)))return
false;$oj=array();foreach(triggers($R)as$mj=>$Vi){$lj=trigger($mj,$R);$oj[]="CREATE TRIGGER ".idf_escape($mj)." ".implode(" ",$Vi)." ON ".table($B)."\n$lj[Statement]";}$Ba=$Ba?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$B&&!queries("ALTER TABLE ".table($Oi)." RENAME TO ".table($B)))||!alter_indexes($B,$x))return
false;if($Ba)queries("UPDATE sqlite_sequence SET seq = $Ba WHERE name = ".q($B));foreach($oj
as$lj){if(!queries($lj))return
false;}queries("COMMIT");}return
true;}function
index_sql($R,$U,$B,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($B!=""?$B:uniqid($R."_"))." ON ".table($R)." $e";}function
alter_indexes($R,$b){foreach($b
as$G){if($G[0]=="PRIMARY")return
recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
false;}return
true;}function
truncate_tables($T){return
apply_queries("DELETE FROM",$T);}function
drop_views($Rj){return
apply_queries("DROP VIEW",$Rj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
move_tables($T,$Rj,$Mi){return
false;}function
trigger($B,$R){if($B=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$v='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$nj=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$v\\s*(".implode("|",$nj["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($v))?\\s+ON\\s*$v\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($B)),$A);$Pf=$A[3];return
array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($Pf?" OF":""),"Of"=>idf_unescape($Pf),"Trigger"=>$B,"Statement"=>$A[4],);}function
triggers($R){$J=array();$nj=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$nj["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$A);$J[$K["name"]]=array($A[1],$A[2]);}return$J;}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($I){return
get_val("SELECT LAST_INSERT_ROWID()");}function
explain($g,$H){return$g->query("EXPLAIN QUERY PLAN $H");}function
found_rows($S,$Z){}function
types(){return
array();}function
create_sql($R,$Ba,$wi){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$B=>$w){if($B=='')continue;$J
.=";\n\n".index_sql($R,$w['type'],$B,"(".implode(", ",array_map('Adminer\idf_escape',$w['columns'])).")");}return$J;}function
truncate_sql($R){return"DELETE FROM ".table($R);}function
use_sql($Pb,$wi=""){}function
trigger_sql($R){return
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
show_variables(){$J=array();foreach(get_rows("PRAGMA pragma_list")as$K){$B=$K["name"];if($B!="pragma_list"&&$B!="compile_options"){$J[$B]=array($B,'');foreach(get_rows("PRAGMA $B")as$K)$J[$B][1].=implode(", ",$K)."\n";}}return$J;}function
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$eg)$J[]=explode("=",$eg,2)+array('','');return$J;}function
convert_field($n){}function
unconvert_field($n,$J){return$J;}function
support($Wc){return
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Wc);}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
PgsqlDb
extends
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
_error($Ec,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}function
attach($N,$V,$F){$k=adminer()->database();set_error_handler(array($this,'_error'));list($Od,$Qg)=host_port(addcslashes($N,"'\\"));$this->string="host='$Od'".($Qg?" port='$Qg'":"")." user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$ri=adminer()->connectSsl();if(isset($ri["mode"]))$this->string
.=" sslmode='".$ri["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$k!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function
quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function
value($X,array$n){return($n["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
select_db($Pb){if($Pb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Pb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
query($H,$sj=false){$I=@pg_query($this->link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
warnings(){return
h(pg_last_notice($this->link));}function
copyFrom($R,array$L){$this->error='';set_error_handler(function($Ec,$m){$this->error=(ini_bool('html_errors')?html_entity_decode($m):$m);return
true;});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
fetch_assoc(){return
pg_fetch_assoc($this->result);}function
fetch_row(){return
pg_fetch_row($this->result);}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$U=pg_field_type($this->result,$d);$J->type=(preg_match(number_type(),$U)?0:15);$J->charsetnr=($U=="bytea"?63:0);return$J;}function
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
PgsqlDb
extends
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
attach($N,$V,$F){$k=adminer()->database();list($Od,$Qg)=host_port(addcslashes($N,"'\\"));$pc="pgsql:host='$Od'".($Qg?" port='$Qg'":"")." client_encoding=utf8 dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'";$ri=adminer()->connectSsl();if(isset($ri["mode"]))$pc
.=" sslmode='".$ri["mode"]."'";return$this->dsn($pc,$V,$F);}function
select_db($Pb){return(adminer()->database()==$Pb);}function
query($H,$sj=false){$J=parent::query($H,$sj);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
warnings(){}function
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
Db
extends
PgsqlDb{function
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$A)){$L=explode("\n",$A[2]);$this->affected_rows=count($L);return$this->copyFrom($A[1],$L);}return
parent::multi_query($H);}}}class
Driver
extends
SqlDriver{static$extensions=array("PgSQL","PDO_PgSQL");static$jush="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT ILIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$nsOid="(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";static
function
connect($N,$V,$F){$g=parent::connect($N,$V,$F);if(is_string($g))return$g;$Pj=get_val("SELECT version()",0,$g);$g->flavor=(preg_match('~CockroachDB~',$Pj)?'cockroach':'');$g->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$Pj);if(min_version(9,0,$g))$g->query("SET application_name = 'Adminer'");if($g->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$g;}function
__construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(28)=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),lang(29)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(30)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(31)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),lang(32)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$g)){$this->types[lang(29)]["json"]=4294967295;if(min_version(9.4,0,$g))$this->types[lang(29)]["jsonb"]=4294967295;}$this->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$g))$this->generated=array("STORED");$this->partitionBy=array("RANGE","LIST");if(!$g->flavor)$this->partitionBy[]="HASH";}function
enumLength(array$n){$Ac=$this->types[lang(6)][$n["type"]];return($Ac?type_values($Ac):"");}function
setUserTypes($rj){$this->types[lang(6)]=array_flip($rj);}function
insertReturning($R){$Ba=array_filter(fields($R),function($n){return$n['auto_increment'];});return(count($Ba)==1?" RETURNING ".idf_escape(key($Ba)):"");}function
insertUpdate($R,array$L,array$G){foreach($L
as$O){$_j=array();$Z=array();foreach($O
as$y=>$X){$_j[]="$y = $X";if(isset($G[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$_j)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
slowQuery($H,$Ui){$this->conn->query("SET statement_timeout = ".(1000*$Ui));$this->conn->timeout=1000*$Ui;return$H;}function
convertSearch($v,array$X,array$n){$Ri="char|text";if(strpos($X["op"],"LIKE")===false)$Ri
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Ri~",$n["type"])?$v:"CAST($v AS text)");}function
quoteBinary($Hh){return"'\\x".bin2hex($Hh)."'";}function
warnings(){return$this->conn->warnings();}function
tableHelp($B,$_e=false){$Ve=array("information_schema"=>"infoschema","pg_catalog"=>($_e?"view":"catalog"),);$_=$Ve[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$B).".html";}function
inheritsFrom($R){return
get_vals("SELECT relname FROM pg_class JOIN pg_inherits ON inhparent = oid WHERE inhrelid = ".$this->tableOid($R)." ORDER BY 1");}function
inheritedTables($R){return
get_vals("SELECT relname FROM pg_inherits JOIN pg_class ON inhrelid = oid WHERE inhparent = ".$this->tableOid($R)." ORDER BY 1");}function
partitionsInfo($R){$K=(min_version(10)?$this->conn->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".$this->tableOid($R))->fetch_assoc():null);if($K){$_a=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $K[partrelid] AND attnum IN (".str_replace(" ",", ",$K["partattrs"]).")");$Qa=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return
array("partition_by"=>$Qa[$K["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$_a)),);}return
array();}function
tableOid($R){return"(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = ".q($R)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function
indexAlgorithms(array$Bi){static$J=array();if(!$J)$J=get_vals("SELECT amname FROM pg_am".(min_version(9.6)?" WHERE amtype = 'i'":"")." ORDER BY amname = '".($this->conn->flavor=='cockroach'?"prefix":"btree")."' DESC, amname");return$J;}function
supportsIndex(array$S){return$S["Engine"]!="view";}function
hasCStyleEscapes(){static$Sa;if($Sa===null)$Sa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Sa;}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
get_databases($jd){return
get_vals("SELECT datname FROM pg_database
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
ORDER BY datname");}function
limit($H,$Z,$z,$C=0,$Vh=" "){return" $H$Z".($z?$Vh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Vh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$Vh):" $H".(is_view(table_status1($R))?$Z:$Vh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$Vh."LIMIT 1)"));}function
db_collation($k,$lb){return
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($k));}function
logged_user(){return
get_val("SELECT user");}function
tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$H
.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";$H
.="
ORDER BY 1";return
get_key_vals($H);}function
count_tables($j){$J=array();foreach($j
as$k){if(connection()->select_db($k))$J[$k]=count(tables_list());}return$J;}function
table_status($B=""){static$Hd;if($Hd===null)$Hd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
relname AS \"Name\",
CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($Hd?",
pg_table_size(c.oid) AS \"Data_length\",
pg_indexes_size(c.oid) AS \"Index_length\"":"").",
obj_description(c.oid, 'pg_class') AS \"Comment\",
".(min_version(12)?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
reltuples AS \"Rows\",
".(min_version(10)?"relispartition::int AS partition,":"")."
current_schema() AS nspname
FROM pg_class c
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
AND relnamespace = ".driver()->nsOid."
".($B!=""?"AND relname = ".q($B):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return
in_array($S["Engine"],array("view","materialized view"));}function
fk_support($S){return
true;}function
fields($R){$J=array();$ta=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(a.attrelid, a.attnum) AS comment".(min_version(10)?",
a.attidentity".(min_version(12)?",
a.attgenerated":""):"")."
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = ".driver()->tableOid($R)."
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$A);list(,$U,$Re,$K["length"],$ma,$xa)=$A;$K["length"].=$xa;$ab=$U.$ma;if(isset($ta[$ab])){$K["type"]=$ta[$ab];$K["full_type"]=$K["type"].$Re.$xa;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$Re.$ma.$xa;}if(in_array($K['attidentity'],array('a','d')))$K['default']='GENERATED '.($K['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$K["generated"]=($K["attgenerated"]=="s"?"STORED":"");$K["null"]=!$K["attnotnull"];$K["auto_increment"]=$K['attidentity']||preg_match('~^nextval\(~i',$K["default"])||preg_match('~^unique_rowid\(~',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(preg_match('~(.+)::[^,)]+(.*)~',$K["default"],$A))$K["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$J[$K["field"]]=$K;}return$J;}function
indexes($R,$h=null){$h=connection($h);$J=array();$Ei=driver()->tableOid($R);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Ei AND attnum > 0",$h);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, amname, pg_get_expr(indpred, indrelid, true) AS partial, pg_get_expr(indexprs, indrelid) AS indexpr
FROM pg_index
JOIN pg_class ON indexrelid = oid
JOIN pg_am ON pg_am.oid = pg_class.relam
WHERE indrelid = $Ei
ORDER BY indisprimary DESC, indisunique DESC",$h)as$K){$vh=$K["relname"];$J[$vh]["type"]=($K["partial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$vh]["columns"]=array();$J[$vh]["descs"]=array();$J[$vh]["algorithm"]=$K["amname"];$J[$vh]["partial"]=$K["partial"];$ge=preg_split('~(?<=\)), (?=\()~',$K["indexpr"]);foreach(explode(" ",$K["indkey"])as$he)$J[$vh]["columns"][]=($he?$e[$he]:array_shift($ge));foreach(explode(" ",$K["indoption"])as$ie)$J[$vh]["descs"][]=(intval($ie)&1?'1':null);$J[$vh]["lengths"]=array();}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = ".driver()->tableOid($R)."
AND contype = 'f'::char
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$A)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$bf)){$K['ns']=idf_unescape($bf[2]);$K['table']=idf_unescape($bf[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$A[4],$bf)?$bf[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$A[4],$bf)?$bf[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
view($B){return
array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($B).")")));}function
collations(){return
array();}function
information_schema($k){return
get_schema()=="information_schema";}function
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$A))$J=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1<b>\2</b>',$A[2]).$A[4];return
nl_br($J);}function
create_database($k,$c){return
queries("CREATE DATABASE ".idf_escape($k).($c?" ENCODING ".idf_escape($c):""));}function
drop_databases($j){connection()->close();return
apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');}function
rename_database($B,$c){connection()->close();return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($B));}function
auto_increment(){return"";}function
alter_table($R,$B,$o,$ld,$qb,$zc,$c,$Ba,$E){$b=array();$ih=array();if($R!=""&&$R!=$B)$ih[]="ALTER TABLE ".table($R)." RENAME TO ".table($B);$Wh="";foreach($o
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$b[]="DROP $d";else{$Lj=$X[5];unset($X[5]);if($n[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$b[]=($R!=""?"ADD ":" ").implode($X);if(isset($X[6]))$b[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$ih[]="ALTER TABLE ".table($B)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$Xh=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($Xh).")":"DROP DEFAULT"));if(isset($X[6]))$Wh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Xh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($n[0]!=""||$Lj!="")$ih[]="COMMENT ON COLUMN ".table($B).".$X[0] IS ".($Lj!=""?substr($Lj,9):"''");}}$b=array_merge($b,$ld);if($R==""){$P="";if($E){$gb=(connection()->flavor=='cockroach');$P=" PARTITION BY $E[partition_by]($E[partition])";if($E["partition_by"]=='HASH'){$Gg=+$E["partitions"];for($t=0;$t<$Gg;$t++)$ih[]="CREATE TABLE ".idf_escape($B."_$t")." PARTITION OF ".idf_escape($B)." FOR VALUES WITH (MODULUS $Gg, REMAINDER $t)";}else{$Yg="MINVALUE";foreach($E["partition_names"]as$t=>$X){$Y=$E["partition_values"][$t];$Cg=" VALUES ".($E["partition_by"]=='LIST'?"IN ($Y)":"FROM ($Yg) TO ($Y)");if($gb)$P
.=($t?",":" (")."\n PARTITION ".(preg_match('~^DEFAULT$~i',$X)?$X:idf_escape($X))."$Cg";else$ih[]="CREATE TABLE ".idf_escape($B."_$X")." PARTITION OF ".idf_escape($B)." FOR$Cg";$Yg=$Y;}$P
.=($gb?"\n)":"");}}array_unshift($ih,"CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");}elseif($b)array_unshift($ih,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($Wh)array_unshift($ih,$Wh);if($qb!==null)$ih[]="COMMENT ON TABLE ".table($B)." IS ".q($qb);foreach($ih
as$H){if(!queries($H))return
false;}return
true;}function
alter_indexes($R,$b){$i=array();$kc=array();$ih=array();foreach($b
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")$kc[]=idf_escape($X[1]);else$ih[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R).($X[3]?" USING $X[3]":"")." (".implode(", ",$X[2]).")".($X[4]?" WHERE $X[4]":"");}if($i)array_unshift($ih,"ALTER TABLE ".table($R).implode(",",$i));if($kc)array_unshift($ih,"DROP INDEX ".implode(", ",$kc));foreach($ih
as$H){if(!queries($H))return
false;}return
true;}function
truncate_tables($T){return
queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$T)));}function
drop_views($Rj){return
drop_tables($Rj);}function
drop_tables($T){foreach($T
as$R){$P=table_status1($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
false;}return
true;}function
move_tables($T,$Rj,$Mi){foreach(array_merge($T,$Rj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Mi)))return
false;}return
true;}function
trigger($B,$R){if($B=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($B);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$K)$e[]=$K["event_object_column"];$J=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$K){if($e&&$K["Event"]=="UPDATE")$K["Event"].=" OF";$K["Of"]=implode(", ",$e);if($J)$K["Event"].=" OR $J[Event]";$J=$K;}return$J;}function
triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$K){$lj=trigger($K["trigger_name"],$R);$J[$lj["Trigger"]]=array($lj["Timing"],$lj["Event"]);}return$J;}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($B,$U){$L=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($B));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT COALESCE(parameter_name, ordinal_position::text) 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($B).'
ORDER BY ordinal_position');return$J;}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($B,$K){$J=array();foreach($K["fields"]as$n){$Re=$n["length"];$J[]=$n["type"].($Re?"($Re)":"");}return
idf_escape($B)."(".implode(", ",$J).")";}function
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
explain($g,$H){return$g->query("EXPLAIN $H");}function
found_rows($S,$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$uh))return$uh[1];}function
types(){return
get_key_vals("SELECT oid, typname
FROM pg_type
WHERE typnamespace = ".driver()->nsOid."
AND typtype IN ('b','d','e')
AND typelem = 0");}function
type_values($u){$Dc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $u ORDER BY enumsortorder");return($Dc?"'".implode("', '",array_map('addslashes',$Dc))."'":"");}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){return
get_val("SELECT current_schema()");}function
set_schema($Jh,$h=null){if(!$h)$h=connection();$J=$h->query("SET search_path TO ".idf_escape($Jh));driver()->setUserTypes(types());return$J;}function
foreign_keys_sql($R){$J="";$P=table_status1($R);$hd=foreign_keys($R);ksort($hd);foreach($hd
as$gd=>$fd)$J
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($gd)." $fd[definition] ".($fd['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
create_sql($R,$Ba,$wi){$_h=array();$Yh=array();$P=table_status1($R);if(is_view($P)){$Qj=view($R);return
rtrim("CREATE VIEW ".idf_escape($R)." AS $Qj[select]",";");}$o=fields($R);if(count($P)<2||empty($o))return
false;$J="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($o
as$n){$Ag=idf_escape($n['field']).' '.$n['full_type'].default_value($n).($n['null']?"":" NOT NULL");$_h[]=$Ag;if(preg_match('~nextval\(\'([^\']+)\'\)~',$n['default'],$df)){$Xh=$df[1];$li=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Xh)):"SELECT * FROM $Xh"),null,"-- "));$Yh[]=($wi=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Xh;\n":"")."CREATE SEQUENCE $Xh INCREMENT $li[increment_by] MINVALUE $li[min_value] MAXVALUE $li[max_value]".($Ba&&$li['last_value']?" START ".($li["last_value"]+1):"")." CACHE $li[cache_value];";}}if(!empty($Yh))$J=implode("\n\n",$Yh)."\n\n$J";$G="";foreach(indexes($R)as$ee=>$w){if($w['type']=='PRIMARY'){$G=$ee;$_h[]="CONSTRAINT ".idf_escape($ee)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$w['columns'])).")";}}foreach(driver()->checkConstraints($R)as$wb=>$yb)$_h[]="CONSTRAINT ".idf_escape($wb)." CHECK $yb";$J
.=implode(",\n ",$_h)."\n)";$Cg=driver()->partitionsInfo($P['Name']);if($Cg)$J
.="\nPARTITION BY $Cg[partition_by]($Cg[partition])";$J
.="\nWITH (oids = ".($P['Oid']?'true':'false').");";if($P['Comment'])$J
.="\n\nCOMMENT ON TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($o
as$Yc=>$n){if($n['comment'])$J
.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Yc)." IS ".q($n['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($G?" AND indexname != ".q($G):""),null,"-- ")as$K)$J
.="\n\n$K[indexdef];";return
rtrim($J,';');}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
trigger_sql($R){$P=table_status1($R);$J="";foreach(triggers($R)as$kj=>$jj){$lj=trigger($kj,$P['Name']);$J
.="\nCREATE TRIGGER ".idf_escape($lj['Trigger'])." $lj[Timing] $lj[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $lj[Type] $lj[Statement];;\n";}return$J;}function
use_sql($Pb,$wi=""){$B=idf_escape($Pb);$J="";if(preg_match('~CREATE~',$wi)){if($wi=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $B;\n";$J
.="CREATE DATABASE $B;\n";}return"$J\\connect $B";}function
show_variables(){return
get_rows("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
convert_field($n){}function
unconvert_field($n,$J){return$J;}function
support($Wc){return
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$Wc);}function
kill_process($X){return
queries("SELECT pg_terminate_backend(".number($X).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){return
get_val("SHOW max_connections");}}add_driver("oracle","Oracle (beta)");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="oci8";var$_current_db;private$link;function
_error($Ec,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}function
attach($N,$V,$F){$this->link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$m=oci_error();return$m["message"];}function
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
select_db($Pb){$this->_current_db=$Pb;return
true;}function
query($H,$sj=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$m=oci_error($this->link);$this->errno=$m["code"];$this->error=$m["message"];return
false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
new
Result($I);$this->affected_rows=oci_num_rows($I);oci_free_statement($I);}return$J;}function
timeout($yf){return
oci_set_call_timeout($this->link,$yf);}}class
Result{var$num_rows;private$result,$offset=1;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$y=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$y]=$X->load();}return$K;}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(){$d=$this->offset++;$J=new
\stdClass;$J->name=oci_field_name($this->result,$d);$J->type=oci_field_type($this->result,$d);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
__destruct(){oci_free_statement($this->result);}}}elseif(extension_loaded("pdo_oci")){class
Db
extends
PdoDb{var$extension="PDO_OCI";var$_current_db;function
attach($N,$V,$F){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);}function
select_db($Pb){$this->_current_db=$Pb;return
true;}}}class
Driver
extends
SqlDriver{static$extensions=array("OCI8","PDO_OCI");static$jush="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
__construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(28)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(29)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(30)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
begin(){return
true;}function
insertUpdate($R,array$L,array$G){foreach($L
as$O){$_j=array();$Z=array();foreach($O
as$y=>$X){$_j[]="$y = $X";if(isset($G[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$_j)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
hasCStyleEscapes(){return
true;}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
get_databases($jd){return
get_vals("SELECT DISTINCT tablespace_name FROM (
SELECT tablespace_name FROM user_tablespaces
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
)
ORDER BY 1");}function
limit($H,$Z,$z,$C=0,$Vh=" "){return($C?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$C).") WHERE rnum > $C":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$C):" $H$Z"));}function
limit1($R,$H,$Z,$Vh="\n"){return" $H$Z";}function
db_collation($k,$lb){return
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
logged_user(){return
get_val("SELECT USER FROM DUAL");}function
get_current_db(){$k=connection()->_current_db?:DB;unset(connection()->_current_db);return$k;}function
where_owner($Wg,$vg="owner"){if(!$_GET["ns"])return'';return"$Wg$vg = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$vg=where_owner('');return"(SELECT $e FROM all_views WHERE ".($vg?:"rownum < 0").")";}function
tables_list(){$Qj=views_table("view_name");$vg=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$vg
UNION SELECT view_name, 'view' FROM $Qj
ORDER BY 1");}function
count_tables($j){$J=array();foreach($j
as$k)$J[$k]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($k));return$J;}function
table_status($B=""){$J=array();$Oh=q($B);$k=get_current_db();$Qj=views_table("view_name");$vg=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($k).$vg.($B!=""?" AND table_name = $Oh":"")."
UNION SELECT view_name, 'view', 0, 0 FROM $Qj".($B!=""?" WHERE view_name = $Oh":"")."
ORDER BY 1")as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return
true;}function
fields($R){$J=array();$vg=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$vg ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$Re="$K[DATA_PRECISION],$K[DATA_SCALE]";if($Re==",")$Re=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($Re?"($Re)":""),"type"=>strtolower($U),"length"=>$Re,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$J;}function
indexes($R,$h=null){$J=array();$vg=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($R)."$vg
ORDER BY ac.constraint_type, aic.column_position",$h)as$K){$ee=$K["INDEX_NAME"];$nb=$K["DATA_DEFAULT"];$nb=($nb?trim($nb,'"'):$K["COLUMN_NAME"]);$J[$ee]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$ee]["columns"][]=$nb;$J[$ee]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$ee]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
view($B){$Qj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$Qj.' WHERE view_name = '.q($B));return
reset($L);}function
collations(){return
array();}function
information_schema($k){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
h(connection()->error);}function
explain($g,$H){$g->query("EXPLAIN PLAN FOR $H");return$g->query("SELECT * FROM plan_table");}function
found_rows($S,$Z){}function
auto_increment(){return"";}function
alter_table($R,$B,$o,$ld,$qb,$zc,$c,$Ba,$E){$b=$kc=array();$og=($R?fields($R):array());foreach($o
as$n){$X=$n[1];if($X&&$n[0]!=""&&idf_escape($n[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($n[0])." TO $X[0]");$ng=$og[$n[0]];if($X&&$ng){$Rf=process_field($ng,$ng);if($X[2]==$Rf[2])$X[2]="";}if($X)$b[]=($R!=""?($n[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$kc[]=idf_escape($n[0]);}if($R=="")return
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$kc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$kc).")"))&&($R==$B||queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)));}function
alter_indexes($R,$b){$kc=array();$ih=array();foreach($b
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($ih,"ALTER TABLE ".table($R).$i);}elseif($X[2]=="DROP")$kc[]=idf_escape($X[1]);else$ih[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($kc)array_unshift($ih,"DROP INDEX ".implode(", ",$kc));foreach($ih
as$H){if(!queries($H))return
false;}return
true;}function
foreign_keys($R){$J=array();$H="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($R);foreach(get_rows($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Rj){return
apply_queries("DROP VIEW",$Rj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
last_id($I){return
0;}function
schemas(){$J=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($J?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
get_schema(){return
get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
set_schema($Lh,$h=null){if(!$h)$h=connection();return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Lh));}function
show_variables(){return
get_rows('SELECT name, display_value FROM v$parameter');}function
show_status(){$J=array();$L=get_rows('SELECT * FROM v$instance');foreach(reset($L)as$y=>$X)$J[]=array($y,$X);return$J;}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
convert_field($n){}function
unconvert_field($n,$J){return$J;}function
support($Wc){return
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Wc);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class
Db
extends
SqlDb{var$extension="sqlsrv";private$link,$result;private
function
get_error(){$this->error="";foreach(sqlsrv_errors()as$m){$this->errno=$m["code"];$this->error
.="$m[message]\n";}$this->error=rtrim($this->error);}function
attach($N,$V,$F){$xb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$ri=adminer()->connectSsl();if(isset($ri["Encrypt"]))$xb["Encrypt"]=$ri["Encrypt"];if(isset($ri["TrustServerCertificate"]))$xb["TrustServerCertificate"]=$ri["TrustServerCertificate"];$k=adminer()->database();if($k!="")$xb["Database"]=$k;list($Od,$Qg)=host_port($N);$this->link=@sqlsrv_connect($Od.($Qg?",$Qg":""),$xb);if($this->link){$je=sqlsrv_server_info($this->link);$this->server_info=$je['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
quote($Q){$tj=strlen($Q)!=strlen(utf8_decode($Q));return($tj?"N":"")."'".str_replace("'","''",$Q)."'";}function
select_db($Pb){return$this->query(use_sql($Pb));}function
query($H,$sj=false){$I=sqlsrv_query($this->link,$H);$this->error="";if(!$I){$this->get_error();return
false;}return$this->store_result($I);}function
multi_query($H){$this->result=sqlsrv_query($this->link,$H);$this->error="";if(!$this->result){$this->get_error();return
false;}return
true;}function
store_result($I=null){if(!$I)$I=$this->result;if(!$I)return
false;if(sqlsrv_field_metadata($I))return
new
Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
true;}function
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
Result{var$num_rows;private$result,$offset=0,$fields;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$y=>$X){if(is_a($X,'DateTime'))$K[$y]=$X->format("Y-m-d H:i:s");}return$K;}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);$n=$this->fields[$this->offset++];$J=new
\stdClass;$J->name=$n["Name"];$J->type=($n["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
seek($C){for($t=0;$t<$C;$t++)sqlsrv_fetch($this->result);}function
__destruct(){sqlsrv_free_stmt($this->result);}}function
last_id($I){return
get_val("SELECT SCOPE_IDENTITY()");}function
explain($g,$H){$g->query("SET SHOWPLAN_ALL ON");$J=$g->query($H);$g->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
class
MssqlDb
extends
PdoDb{function
select_db($Pb){return$this->query(use_sql($Pb));}function
lastInsertId(){return$this->pdo->lastInsertId();}}function
last_id($I){return
connection()->lastInsertId();}function
explain($g,$H){}if(extension_loaded("pdo_sqlsrv")){class
Db
extends
MssqlDb{var$extension="PDO_SQLSRV";function
attach($N,$V,$F){list($Od,$Qg)=host_port($N);return$this->dsn("sqlsrv:Server=$Od".($Qg?",$Qg":""),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
Db
extends
MssqlDb{var$extension="PDO_DBLIB";function
attach($N,$V,$F){list($Od,$Qg)=host_port($N);return$this->dsn("dblib:charset=utf8;host=$Od".($Qg?(is_numeric($Qg)?";port=":";unix_socket=").$Qg:""),$V,$F);}}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$jush="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
function
connect($N,$V,$F){if($N=="")$N="localhost:1433";return
parent::connect($N,$V,$F);}function
__construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(28)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(29)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(30)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
insertUpdate($R,array$L,array$G){$o=fields($R);$_j=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Ra=0;$pe=array();foreach($O
as$y=>$X){$Ra++;$B=idf_unescape($y);if(!$o[$B]["auto_increment"])$pe[$y]="c$Ra";if(isset($G[$B]))$Z[]="$y = c$Ra";else$_j[]="$y = c$Ra";}$Mj=array();foreach($L
as$O)$Mj[]="(".implode(", ",$O).")";if($Z){$Td=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$Mj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($_j?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$_j):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Td?$O:$pe)).") VALUES (".($Td?$e:implode(", ",$pe)).");");if($Td)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$Mj));return$J;}function
begin(){return
queries("BEGIN TRANSACTION");}function
tableHelp($B,$_e=false){$Ve=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Ve[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($B))."-transact-sql";}}function
idf_escape($v){return"[".str_replace("]","]]",$v)."]";}function
table($v){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($v);}function
get_databases($jd){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
limit($H,$Z,$z,$C=0,$Vh=" "){return($z?" TOP (".($z+$C).")":"")." $H$Z";}function
limit1($R,$H,$Z,$Vh="\n"){return
limit($H,$Z,1,0,$Vh);}function
db_collation($k,$lb){return
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($k));}function
logged_user(){return
get_val("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($j){$J=array();foreach($j
as$k){connection()->select_db($k);$J[$k]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
table_status($B=""){$J=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') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="VIEW";}function
fk_support($S){return
true;}function
fields($R){$sb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$J=array();$Ci=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($R));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, d.definition [default], d.name default_constraint, i.is_primary_key
FROM sys.all_columns c
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.object_id
LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE c.object_id = ".q($Ci))as$K){$U=$K["type"];$Re=(preg_match("~char|binary~",$U)?intval($K["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($Re?"($Re)":""),"type"=>$U,"length"=>$Re,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$A)?str_replace("''","'",$A[1]):$K["default"]),"default_constraint"=>$K["default_constraint"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["is_primary_key"],"comment"=>$sb[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($Ci))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
indexes($R,$h=null){$J=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($R),$h)as$K){$B=$K["name"];$J[$B]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$B]["lengths"]=array();$J[$B]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$B]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($B))));}function
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
information_schema($k){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
create_database($k,$c){return
queries("CREATE DATABASE ".idf_escape($k).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
drop_databases($j){return
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$j)));}function
rename_database($B,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($B));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($R,$B,$o,$ld,$qb,$zc,$c,$Ba,$E){$b=array();$sb=array();$og=fields($R);foreach($o
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$sb[$n[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($n[0]=="")$b["ADD"][]="\n ".implode("",$X).($R==""?substr($ld[$X[0]],16+strlen($X[0])):"");else{$l=$X[3];unset($X[3]);unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$X)][]="";$ng=$og[$n[0]];if(default_value($ng)!=$l){if($ng["default"]!==null)$b["DROP"][]=" ".idf_escape($ng["default_constraint"]);if($l)$b["ADD"][]="\n $l FOR $d";}}}}if($R=="")return
queries("CREATE TABLE ".table($B)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$B)queries("EXEC sp_rename ".q(table($R)).", ".q($B));if($ld)$b[""]=$ld;foreach($b
as$y=>$X){if(!queries("ALTER TABLE ".table($B)." $y".implode(",",$X)))return
false;}foreach($sb
as$y=>$X){$qb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($B).", @level2type = N'Column', @level2name = ".q($y));queries("EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = $qb,
@level0type = N'Schema',
@level0name = ".q(get_schema()).",
@level1type = N'Table',
@level1name = ".q($B).",
@level2type = N'Column',
@level2name = ".q($y));}return
true;}function
alter_indexes($R,$b){$w=array();$kc=array();foreach($b
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$kc[]=idf_escape($X[1]);else$w[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
false;}return(!$w||queries("DROP INDEX ".implode(", ",$w)))&&(!$kc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$kc)));}function
found_rows($S,$Z){}function
foreign_keys($R){$J=array();$Yf=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R).", @fktable_owner = ".q(get_schema()))as$K){$q=&$J[$K["FK_NAME"]];$q["db"]=$K["PKTABLE_QUALIFIER"];$q["ns"]=$K["PKTABLE_OWNER"];$q["table"]=$K["PKTABLE_NAME"];$q["on_update"]=$Yf[$K["UPDATE_RULE"]];$q["on_delete"]=$Yf[$K["DELETE_RULE"]];$q["source"][]=$K["FKCOLUMN_NAME"];$q["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Rj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Rj)));}function
drop_tables($T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables($T,$Rj,$Mi){return
apply_queries("ALTER SCHEMA ".idf_escape($Mi)." TRANSFER",array_merge($T,$Rj));}function
trigger($B,$R){if($B=="")return
array();$L=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($B));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
triggers($R){$J=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($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}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(){if($_GET["ns"]!="")return$_GET["ns"];return
get_val("SELECT SCHEMA_NAME()");}function
set_schema($Jh){$_GET["ns"]=$Jh;return
true;}function
create_sql($R,$Ba,$wi){if(is_view(table_status1($R))){$Qj=view($R);return"CREATE VIEW ".table($R)." AS $Qj[select]";}$o=array();$G=false;foreach(fields($R)as$B=>$n){$X=process_field($n,$n);if($X[6])$G=true;$o[]=implode("",$X);}foreach(indexes($R)as$B=>$w){if(!$G||$w["type"]!="PRIMARY"){$e=array();foreach($w["columns"]as$y=>$X)$e[]=idf_escape($X).($w["descs"][$y]?" DESC":"");$B=idf_escape($B);$o[]=($w["type"]=="INDEX"?"INDEX $B":"CONSTRAINT $B ".($w["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$B=>$Ya)$o[]="CONSTRAINT ".idf_escape($B)." CHECK ($Ya)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$o)."\n)";}function
foreign_keys_sql($R){$o=array();foreach(foreign_keys($R)as$ld)$o[]=ltrim(format_foreign_key($ld));return($o?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$o).";\n\n":"");}function
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
use_sql($Pb,$wi=""){return"USE ".idf_escape($Pb);}function
trigger_sql($R){$J="";foreach(triggers($R)as$B=>$lj)$J
.=create_trigger(" ON ".table($R),trigger($B,$R)).";";return$J;}function
convert_field($n){}function
unconvert_field($n,$J){return$J;}function
support($Wc){return
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Wc);}}class
Adminer{static$instance;var$error='';function
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.1")."' width='24' height='24' alt='' id='logo'>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($N){return
h($N);}function
database(){return
DB;}function
databases($jd=true){return
get_databases($jd);}function
pluginsLinks(){}function
operators(){return
driver()->operators;}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
afterConnect(){}function
headers(){}function
csp(array$Ib){return$Ib;}function
head($Mb=null){return
true;}function
bodyClass(){echo" adminer";}function
css(){$J=array();foreach(array("","-dark")as$xf){$p="adminer$xf.css";if(file_exists($p)){$bd=file_get_contents($p);$J["$p?v=".crc32($bd)]=($xf?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$bd)?'':'light'));}}return$J;}function
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.lang(33).'<td>',html_select("auth[driver]",SqlDriver::$drivers,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server','<tr><th>'.lang(34).'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.lang(35).'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("const authDriver = qs('#username').form['auth[driver]']; authDriver && authDriver.onchange();")),adminer()->loginFormField('password','<tr><th>'.lang(36).'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->loginFormField('db','<tr><th>'.lang(37).'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".lang(38)."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(39))."\n";}function
loginFormField($B,$Jd,$Y){return$Jd.$Y."\n";}function
login($Xe,$F){if($F=="")return
lang(40,target_blank());return
true;}function
tableName(array$Bi){return
h($Bi["Name"]);}function
fieldName(array$n,$hg=0){$U=$n["full_type"];$qb=$n["comment"];return'<span title="'.h($U.($qb!=""?($U?": ":"").$qb:'')).'">'.h($n["field"]).'</span>';}function
selectLinks(array$Bi,$O=""){$B=$Bi["Name"];echo'<p class="links">';$Ve=array("select"=>lang(41));if(support("table")||support("indexes"))$Ve["table"]=lang(42);$_e=false;if(support("table")){$_e=is_view($Bi);if(!$_e)$Ve["create"]=lang(43);elseif(support("view"))$Ve["view"]=lang(44);}if($O!==null)$Ve["edit"]=lang(45);foreach($Ve
as$y=>$X)echo" <a href='".h(ME)."$y=".urlencode($B).($y=="edit"?$O:"")."'".bold(isset($_GET[$y])).">$X</a>";echo
doc_link(array(JUSH=>driver()->tableHelp($B,$_e)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$Ai){return
array();}function
backwardKeysPrint(array$Fa,array$K){}function
selectQuery($H,$si,$Uc=false){$J="</p>\n";if(!$Uc&&($Uj=driver()->warnings())){$u="warnings";$J=", <a href='#$u'>".lang(46)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."$J<div id='$u' class='hidden'>\n$Uj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($si).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".lang(12)."</a>":"").$J;}function
sqlCommandQuery($H){return
shorten_utf8(trim($H),1000);}function
sqlPrintAfter(){}function
rowDescription($R){return"";}function
rowDescriptions(array$L,array$md){return$L;}function
selectLink($X,array$n){}function
selectVal($X,$_,array$n,$rg){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$n["type"])&&!preg_match("~var~",$n["type"])?"<code>$X</code>":(preg_match('~json~',$n["type"])?"<code class='jush-js'>$X</code>":$X)));if(is_blob($n)&&!is_utf8($X))$J="<i>".lang(47,strlen($rg))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$J</a>":$J);}function
editVal($X,array$n){return$X;}function
config(){return
array();}function
tableStructurePrint(array$o,$Bi=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".lang(48)."<td>".lang(49).(support("comment")?"<td>".lang(50):"")."</thead>\n";$vi=driver()->structuredTypes();foreach($o
as$n){echo"<tr><th>".h($n["field"]);$U=h($n["full_type"]);$c=h($n["collation"]);echo"<td><span title='$c'>".(in_array($U,(array)$vi[lang(6)])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($Bi["Collation"])&&$c!=$Bi["Collation"]?" $c":""))."</span>",($n["null"]?" <i>NULL</i>":""),($n["auto_increment"]?" <i>".lang(51)."</i>":"");$l=h($n["default"]);echo(isset($n["default"])?" <span title='".lang(52)."'>[<b>".($n["generated"]?"<code class='jush-".JUSH."'>$l</code>":$l)."</b>]</span>":""),(support("comment")?"<td>".h($n["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint(array$x,array$Bi){$Bg=false;foreach($x
as$B=>$w)$Bg|=!!$w["partial"];echo"<table>\n";$Ub=first(driver()->indexAlgorithms($Bi));foreach($x
as$B=>$w){ksort($w["columns"]);$ah=array();foreach($w["columns"]as$y=>$X)$ah[]="<i>".h($X)."</i>".($w["lengths"][$y]?"(".$w["lengths"][$y].")":"").($w["descs"][$y]?" DESC":"");echo"<tr title='".h($B)."'>","<th>$w[type]".($Ub&&$w['algorithm']!=$Ub?" ($w[algorithm])":""),"<td>".implode(", ",$ah);if($Bg)echo"<td>".($w['partial']?"<code class='jush-".JUSH."'>WHERE ".h($w['partial']):"");echo"\n";}echo"</table>\n";}function
selectColumnsPrint(array$M,array$e){print_fieldset("select",lang(53),$M);$t=0;$M[""]=array();foreach($M
as$y=>$X){$X=idx($_GET["columns"],$y,array());$d=select_input(" name='columns[$t][col]'",$e,$X["col"],($y!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$t][fun]",array(-1=>"")+array_filter(array(lang(54)=>driver()->functions,lang(55)=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($y!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
selectSearchPrint(array$Z,array$e,array$x){print_fieldset("search",lang(56),$Z);foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$w["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h(idx($_GET["fulltext"],$t))."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"</div>\n";}$Va="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"],adminer()->operators())))echo"<div>".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(57).")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$Va),"<input type='search' name='where[$t][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Va }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
selectOrderPrint(array$hg,array$e,array$x){print_fieldset("sort",lang(58),$hg);$t=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$y]),lang(59))."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(59))."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($z){echo"<fieldset><legend>".lang(60)."</legend><div>","<input type='number' name='limit' class='size' value='".intval($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($Si){if($Si!==null)echo"<fieldset><legend>".lang(61)."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Si)."'>","</div></fieldset>\n";}function
selectActionPrint(array$x){echo"<fieldset><legend>".lang(62)."</legend><div>","<input type='submit' value='".lang(53)."'>"," <span id='noindex' title='".lang(63)."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($x
as$w){$Lb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$Lb)$e[$Lb]=1;}$e[""]=1;foreach($e
as$y=>$X)json_row($y);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(array$wc,array$e){}function
selectColumnsProcess(array$e,array$x){$M=array();$yd=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$yd[]=$M[$y];}}return
array($M,$yd);}function
selectSearchProcess(array$o,array$x){$J=array();foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$t)!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$y=>$X){$jb=$X["col"];if("$jb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$ub=array();foreach(($jb!=""?array($jb=>$o[$jb]):$o)as$B=>$n){$Wg="";$tb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Yd=process_length($X["val"]);$tb
.=" ".($Yd!=""?$Yd:"(NULL)");}elseif($X["op"]=="SQL")$tb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$tb=" $A[1] ".adminer()->processInput($n,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Wg="$X[op](".q($X["val"]).", ";$tb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$tb
.=" ".adminer()->processInput($n,$X["val"]);if($jb!=""||(isset($n["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$n["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$n["type"]))&&(!preg_match('~date|timestamp~',$n["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$ub[]=$Wg.driver()->convertSearch(idf_escape($B),$X,$n).$tb;}$J[]=(count($ub)==1?$ub[0]:($ub?"(".implode(" OR ",$ub).")":"1 = 0"));}}return$J;}function
selectOrderProcess(array$o,array$x){$J=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$J;}function
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function
selectEmailProcess(array$Z,array$md){return
false;}function
selectQueryBuild(array$M,array$Z,array$yd,array$hg,$z,$D){return"";}function
messageQuery($H,$Ti,$Uc=false){restart_session();$Ld=&get_session("queries");if(!idx($Ld,$_GET["db"]))$Ld[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Ld[$_GET["db"]][]=array($H,time(),$Ti);$oi="sql-".count($Ld[$_GET["db"]]);$J="<a href='#$oi' class='toggle'>".lang(64)."</a> <a href='' class='jsonly copy'>🗐</a>\n";if(!$Uc&&($Uj=driver()->warnings())){$u="warnings-".count($Ld[$_GET["db"]]);$J="<a href='#$u' class='toggle'>".lang(46)."</a>, $J<div id='$u' class='hidden'>\n$Uj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$oi' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1000)."</code></pre>".($Ti?" <span class='time'>($Ti)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ld[$_GET["db"]])-1)).'">'.lang(12).'</a>':'').'</div>';}function
editRowPrint($R,array$o,$K,$_j){}function
editFunctions(array$n){$J=($n["null"]?"NULL/":"");$_j=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$y=>$td){if(!$y||(!isset($_GET["call"])&&$_j)){foreach($td
as$Kg=>$X){if(!$Kg||preg_match("~$Kg~",$n["type"]))$J
.="/$X";}}if($y&&$td&&!preg_match('~set|bool~',$n["type"])&&!is_blob($n))$J
.="/SQL";}if($n["auto_increment"]&&!$_j)$J=lang(51);return
explode("/",$J);}function
editInput($R,array$n,$_a,$Y){if($n["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$_a value='orig' checked><i>".lang(10)."</i></label> ":"").enum_input("radio",$_a,$n,$Y,"NULL");return"";}function
editHint($R,array$n,$Y){return"";}function
processInput(array$n,$Y,$s=""){if($s=="SQL")return$Y;$B=$n["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$s))$J="$s()";elseif(preg_match('~^current_(date|timestamp)$~',$s))$J=$s;elseif(preg_match('~^([+-]|\|\|)$~',$s))$J=idf_escape($B)." $s $J";elseif(preg_match('~^[+-] interval$~',$s))$J=idf_escape($B)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$J="$s(".idf_escape($B).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$J="$s($J)";return
unconvert_field($n,$J);}function
dumpOutput(){$J=array('text'=>lang(65),'file'=>lang(66));if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($k){}function
dumpTable($R,$wi,$_e=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($wi)dump_csv(array_keys(fields($R)));}else{if($_e==2){$o=array();foreach(fields($R)as$B=>$n)$o[]=idf_escape($B)." $n[full_type]";$i="CREATE TABLE ".table($R)." (".implode(", ",$o).")";}else$i=create_sql($R,$_POST["auto_increment"],$wi);set_utf8mb4($i);if($wi&&$i){if($wi=="DROP+CREATE"||$_e==1)echo"DROP ".($_e==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($_e==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
dumpData($R,$wi,$H){if($wi){$hf=(JUSH=="sqlite"?0:1048576);$o=array();$Ud=false;if($_POST["format"]=="sql"){if($wi=="TRUNCATE+INSERT")echo
truncate_sql($R).";\n";$o=fields($R);if(JUSH=="mssql"){foreach($o
as$n){if($n["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Ud=true;break;}}}}$I=connection()->query($H,1);if($I){$pe="";$Pa="";$Ee=array();$ud=array();$yi="";$Xc=($R!=''?'fetch_assoc':'fetch_row');$Eb=0;while($K=$I->$Xc()){if(!$Ee){$Mj=array();foreach($K
as$X){$n=$I->fetch_field();if(idx($o[$n->name],'generated')){$ud[$n->name]=true;continue;}$Ee[]=$n->name;$y=idf_escape($n->name);$Mj[]="$y = VALUES($y)";}$yi=($wi=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Mj):"").";\n";}if($_POST["format"]!="sql"){if($wi=="table"){dump_csv($Ee);$wi="INSERT";}dump_csv($K);}else{if(!$pe)$pe="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Ee)).") VALUES";foreach($K
as$y=>$X){if($ud[$y]){unset($K[$y]);continue;}$n=$o[$y];$K[$y]=($X!==null?unconvert_field($n,preg_match(number_type(),$n["type"])&&!preg_match('~\[~',$n["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Hh=($hf?"\n":" ")."(".implode(",\t",$K).")";if(!$Pa)$Pa=$pe.$Hh;elseif(JUSH=='mssql'?$Eb%1000!=0:strlen($Pa)+4+strlen($Hh)+strlen($yi)<$hf)$Pa
.=",$Hh";else{echo$Pa.$yi;$Pa=$pe.$Hh;}}$Eb++;}if($Pa)echo$Pa.$yi;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Ud)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
dumpFilename($Sd){return
friendly_url($Sd!=""?$Sd:(SERVER?:"localhost"));}function
dumpHeaders($Sd,$_f=false){$ug=$_POST["output"];$Pc=(preg_match('~sql~',$_POST["format"])?"sql":($_f?"tar":"csv"));header("Content-Type: ".($ug=="gz"?"application/x-gzip":($Pc=="tar"?"application/x-tar":($Pc=="sql"||$ug!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($ug=="gz"){ob_start(function($Q){return
gzencode($Q);},1e6);}return$Pc;}function
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
importServerPath(){return"adminer.sql";}function
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.lang(67)."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(68):lang(69))."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.lang(70)."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".lang(71)."</a>\n":"");if($_GET["ns"]!=="")echo(support("routine")?"<a href='#routines'>".lang(72)."</a>\n":""),(support("sequence")?"<a href='#sequences'>".lang(73)."</a>\n":""),(support("type")?"<a href='#user-types'>".lang(6)."</a>\n":""),(support("event")?"<a href='#events'>".lang(74)."</a>\n":"");return
true;}function
navigation($wf){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$Hf=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$Hf)<0?h($Hf):"")."</a>","</span></h1>\n";switch_lang();if($wf=="auth"){$ug="";foreach((array)$_SESSION["pwds"]as$Oj=>$ai){foreach($ai
as$N=>$Jj){$B=h(get_setting("vendor-$Oj-$N")?:get_driver($Oj));foreach($Jj
as$V=>$F){if($F!==null){$Sb=$_SESSION["db"][$Oj][$N][$V];foreach(($Sb?array_keys($Sb):array(""))as$k)$ug
.="<li><a href='".h(auth_url($Oj,$N,$V,$k))."'>($B) ".h("$V@".($N!=""?adminer()->serverName($N):"").($k!=""?" - $k":""))."</a>\n";}}}}if($ug)echo"<ul id='logins'>\n$ug</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$wf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($wf);$ka=array();if(DB==""||!$wf){if(support("sql")){$ka[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(64)."</a>";$ka[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".lang(75)."</a>";}$ka[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(76)."</a>";}$Zd=$_GET["ns"]!==""&&!$wf&&DB!="";if($Zd)$ka[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(77)."</a>";echo($ka?"<p class='links'>\n".implode("\n",$ka)."\n":"");if($Zd){if($T)adminer()->tablesPrint($T);else
echo"<p class='message'>".lang(11)."</p>\n";}}}function
syntaxHighlighting(array$T){echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.4.1",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$Ve=array();foreach($T
as$R=>$U)$Ve[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$Ve).')\b/g',false);if(support('routine')){foreach(routines()as$K)json_row(js_escape(ME).'function='.urlencode($K["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($K["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Ii=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$o){foreach($o
as$n)$Ii[$R][]=$n["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Ii)."); });\n";}}echo"</script>\n";}echo
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
databasesPrint($wf){$j=adminer()->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Qb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".lang(37)."'>".lang(78).": ".($j?html_select("db",array(""=>"")+$j,DB).$Qb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n")."</label>","<input type='submit' value='".lang(22)."'".($j?" class='hidden'":"").">\n";if(support("scheme")){if($wf!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><label>".lang(79).": ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"])."$Qb</label>";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo
input_hidden($X);break;}}echo"</p></form>\n";}function
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$P){$R="$R";$B=adminer()->tableName($P);if($B!=""&&!$P["partition"])echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".lang(41)."'>".lang(80)."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"])),(is_view($P)?"view":"structure"))." title='".lang(42)."'>$B</a>":"<span>$B</span>")."\n";}echo"</ul>\n";}function
processList(){return
process_list();}function
killProcess($u){return
kill_process($u);}}class
Plugins{private
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
__construct($Pg){if($Pg===null){$Pg=array();$Ja="adminer-plugins";if(is_dir($Ja)){foreach(glob("$Ja/*.php")as$p)$ae=include_once"./$p";}$Kd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ja.php")){$ae=include_once"./$Ja.php";if(is_array($ae)){foreach($ae
as$Og)$Pg[get_class($Og)]=$Og;}else$this->error
.=lang(81,"<b>$Ja.php</b>",$Kd)."<br>";}foreach(get_declared_classes()as$fb){if(!$Pg[$fb]&&preg_match('~^Adminer\w~i',$fb)){$sh=new
\ReflectionClass($fb);$zb=$sh->getConstructor();if($zb&&$zb->getNumberOfRequiredParameters())$this->error
.=lang(82,$Kd,"<b>$fb</b>","<b>$Ja.php</b>")."<br>";else$Pg[$fb]=new$fb;}}}$this->plugins=$Pg;$na=new
Adminer;$Pg[]=$na;$sh=new
\ReflectionObject($na);foreach($sh->getMethods()as$uf){foreach($Pg
as$Og){$B=$uf->getName();if(method_exists($Og,$B))$this->hooks[$B][]=$Og;}}}function
__call($B,array$zg){$wa=array();foreach($zg
as$y=>$X)$wa[]=&$zg[$y];$J=null;foreach($this->hooks[$B]as$Og){$Y=call_user_func_array(array($Og,$B),$wa);if($Y!==null){if(!self::$append[$B])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
class
Plugin{protected$translations=array();function
description(){return$this->lang('');}function
screenshot(){return"";}protected
function
lang($v,$Nf=null){$wa=func_get_args();$wa[0]=idx($this->translations[LANG],$v)?:$v;return
call_user_func_array('Adminer\lang_format',$wa);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
Plugins(null):new
Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
Db
extends
\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function
__construct(){parent::init();}function
attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Od,$Qg)=host_port($N);$ri=adminer()->connectSsl();if($ri)$this->ssl_set($ri['key'],$ri['cert'],$ri['ca'],'','');$J=@$this->real_connect(($N!=""?$Od:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),null,(is_numeric($Qg)?intval($Qg):ini_get("mysqli.default_port")),(is_numeric($Qg)?null:$Qg),($ri?($ri['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($J?'':$this->error);}function
set_charset($Xa){if(parent::set_charset($Xa))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Xa");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Db
extends
SqlDb{private$link;function
attach($N,$V,$F){if(ini_bool("mysql.allow_local_infile"))return
lang(83,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),($N.$V!=""?$V:ini_get("mysql.default_user")),($N.$V.$F!=""?$F:ini_get("mysql.default_password")),true,131072);if(!$this->link)return
mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function
set_charset($Xa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Xa,$this->link))return
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Xa");}function
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
select_db($Pb){return
mysql_select_db($Pb,$this->link);}function
query($H,$sj=false){$I=@($sj?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($I);}}class
Result{var$num_rows;private$result;private$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
attach($N,$V,$F){$fg=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$ri=adminer()->connectSsl();if($ri){if($ri['key'])$fg[\PDO::MYSQL_ATTR_SSL_KEY]=$ri['key'];if($ri['cert'])$fg[\PDO::MYSQL_ATTR_SSL_CERT]=$ri['cert'];if($ri['ca'])$fg[\PDO::MYSQL_ATTR_SSL_CA]=$ri['ca'];if(isset($ri['verify']))$fg[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$ri['verify'];}list($Od,$Qg)=host_port($N);return$this->dsn("mysql:charset=utf8;host=$Od".($Qg?(is_numeric($Qg)?";port=":";unix_socket=").$Qg:""),$V,$F,$fg);}function
set_charset($Xa){return$this->query("SET NAMES $Xa");}function
select_db($Pb){return$this->query("USE ".idf_escape($Pb));}function
query($H,$sj=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$sj);return
parent::query($H,$sj);}}}class
Driver
extends
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($N,$V,$F){$g=parent::connect($N,$V,$F);if(is_string($g)){if(function_exists('iconv')&&!is_utf8($g)&&strlen($Hh=iconv("windows-1250","utf-8",$g))>strlen($g))$g=$Hh;return$g;}$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");$g->flavor=(preg_match('~MariaDB~',$g->server_info)?'maria':'mysql');add_driver(DRIVER,($g->flavor=='maria'?"MariaDB":"MySQL"));return$g;}function
__construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(28)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(29)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(84)=>array("enum"=>65535,"set"=>64),lang(30)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(32)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$g))$this->types[lang(29)]["json"]=4294967295;if(min_version('',10.7,$g)){$this->types[lang(29)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$g)){$this->types[lang(27)]["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$g))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$g))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction(array$n){return(preg_match("~binary~",$n["type"])?"<code class='jush-sql'>UNHEX</code>":($n["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$n["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,array$L,array$G){$e=array_keys(reset($L));$Wg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Mj=array();foreach($e
as$y)$Mj[$y]="$y = VALUES($y)";$yi="\nON DUPLICATE KEY UPDATE ".implode(", ",$Mj);$Mj=array();$Re=0;foreach($L
as$O){$Y="(".implode(", ",$O).")";if($Mj&&(strlen($Wg)+$Re+strlen($Y)+strlen($yi)>1e6)){if(!queries($Wg.implode(",\n",$Mj).$yi))return
false;$Mj=array();$Re=0;}$Mj[]=$Y;$Re+=strlen($Y)+2;}return
queries($Wg.implode(",\n",$Mj).$yi);}function
slowQuery($H,$Ui){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Ui FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($Ui*1000).") */ $A[2]";}}function
convertSearch($v,array$X,array$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return
ob_get_clean();}}function
tableHelp($B,$_e=false){$Ze=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower("information-schema-".($Ze?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($Ze?"mysql$B-table/":"system-schema.html");}function
partitionsInfo($R){$rd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $rd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$Gg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $rd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($Gg);$J["partition_values"]=array_values($Gg);return$J;}function
hasCStyleEscapes(){static$Sa;if($Sa===null){$pi=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Sa=(strpos($pi,'NO_BACKSLASH_ESCAPES')===false);}return$Sa;}function
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
indexAlgorithms(array$Bi){return(preg_match('~^(MEMORY|NDB)$~',$Bi["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
table($v){return
idf_escape($v);}function
get_databases($jd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($jd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
limit($H,$Z,$z,$C=0,$Vh=" "){return" $H$Z".($z?$Vh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Vh="\n"){return
limit($H,$Z,1,0,$Vh);}function
db_collation($k,array$lb){$J=null;$i=get_val("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$A))$J=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$A))$J=$lb[$A[1]][-1];return$J;}function
logged_user(){return
get_val("SELECT USER()");}function
tables_list(){return
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
count_tables(array$j){$J=array();foreach($j
as$k)$J[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$J;}function
table_status($B="",$Vc=false){$J=array();foreach(get_rows($Vc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name"):"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($B!="")$K["Name"]=$B;$J[$K["Name"]]=$K;}return$J;}function
is_view(array$S){return$S["Engine"]===null;}function
fk_support(array$S){return
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
fields($R){$Ze=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$n=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$vd=$K["GENERATION_EXPRESSION"];$Sc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Sc,$ud);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$cf);$l=$K["COLUMN_DEFAULT"];if($l!=""){$ze=preg_match('~text|json~',$cf[1]);if(!$Ze&&$ze)$l=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($l));if($Ze||$ze){$l=($l=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return
stripslashes(str_replace("''","'",$A[1]));},$l));}if(!$Ze&&preg_match('~binary~',$cf[1])&&preg_match('~^0x(\w*)$~',$l,$A))$l=pack("H*",$A[1]);}$J[$n]=array("field"=>$n,"full_type"=>$U,"type"=>$cf[1],"length"=>$cf[2],"unsigned"=>ltrim($cf[3].$cf[4]),"default"=>($ud?($Ze?$vd:stripslashes($vd)):$l),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Sc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Sc,$A)?$A[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($ud[1]=="PERSISTENT"?"STORED":$ud[1]),);}return$J;}function
indexes($R,$h=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$K){$B=$K["Key_name"];$J[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$B]["columns"][]=$K["Column_name"];$J[$B]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$B]["descs"][]=null;$J[$B]["algorithm"]=$K["Index_type"];}return$J;}function
foreign_keys($R){static$Kg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Fb=get_val("SHOW CREATE TABLE ".table($R),1);if($Fb){preg_match_all("~CONSTRAINT ($Kg) FOREIGN KEY ?\\(((?:$Kg,? ?)+)\\) REFERENCES ($Kg)(?:\\.($Kg))? \\(((?:$Kg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Fb,$df,PREG_SET_ORDER);foreach($df
as$A){preg_match_all("~$Kg~",$A[2],$ji);preg_match_all("~$Kg~",$A[5],$Mi);$J[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$ji[0]),"target"=>array_map('Adminer\idf_unescape',$Mi[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1)));}function
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
as$y=>$X)sort($J[$y]);return$J;}function
information_schema($k){return($k=="information_schema")||(min_version(5.5)&&$k=="performance_schema");}function
error(){return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
create_database($k,$c){return
queries("CREATE DATABASE ".idf_escape($k).($c?" COLLATE ".q($c):""));}function
drop_databases(array$j){$J=apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
rename_database($B,$c){$J=false;if(create_database($B,$c)){$T=array();$Rj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Rj[]=$R;else$T[]=$R;}$J=(!$T&&!$Rj)||move_tables($T,$Rj,$B);drop_databases($J?array(DB):array());}return$J;}function
auto_increment(){$Ca=" 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)){$Ca="";break;}if($w["type"]=="PRIMARY")$Ca=" UNIQUE";}}return" AUTO_INCREMENT$Ca";}function
alter_table($R,$B,array$o,array$ld,$qb,$zc,$c,$Ba,$E){$b=array();foreach($o
as$n){if($n[1]){$l=$n[1][3];if(preg_match('~ GENERATED~',$l)){$n[1][3]=(connection()->flavor=='maria'?"":$n[1][2]);$n[1][2]=$l;}$b[]=($R!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($R!=""?$n[2]:"");}else$b[]="DROP ".idf_escape($n[0]);}$b=array_merge($b,$ld);$P=($qb!==null?" COMMENT=".q($qb):"").($zc?" ENGINE=".q($zc):"").($c?" COLLATE ".q($c):"").($Ba!=""?" AUTO_INCREMENT=$Ba":"");if($E){$Gg=array();if($E["partition_by"]=='RANGE'||$E["partition_by"]=='LIST'){foreach($E["partition_names"]as$y=>$X){$Y=$E["partition_values"][$y];$Gg[]="\n PARTITION ".idf_escape($X)." VALUES ".($E["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P
.="\nPARTITION BY $E[partition_by]($E[partition])";if($Gg)$P
.=" (".implode(",",$Gg)."\n)";elseif($E["partitions"])$P
.=" PARTITIONS ".(+$E["partitions"]);}elseif($E===null)$P
.="\nREMOVE PARTITIONING";if($R=="")return
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");if($R!=$B)$b[]="RENAME TO ".table($B);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function
alter_indexes($R,$b){$Wa=array();foreach($b
as$X)$Wa[]=($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($R).implode(",",$Wa));}function
truncate_tables(array$T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views(array$Rj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Rj)));}function
drop_tables(array$T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables(array$T,array$Rj,$Mi){$wh=array();foreach($T
as$R)$wh[]=table($R)." TO ".idf_escape($Mi).".".table($R);if(!$wh||queries("RENAME TABLE ".implode(", ",$wh))){$Yb=array();foreach($Rj
as$R)$Yb[table($R)]=view($R);connection()->select_db($Mi);$k=idf_escape(DB);foreach($Yb
as$B=>$Qj){if(!queries("CREATE VIEW $B AS ".str_replace(" $k."," ",$Qj["select"]))||!queries("DROP VIEW $k.$B"))return
false;}return
true;}return
false;}function
copy_tables(array$T,array$Rj,$Mi){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$B=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$lj=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Mi==DB?idf_escape("copy_$lj"):idf_escape($Mi).".".idf_escape($lj))." $K[Timing] $K[Event] ON $B FOR EACH ROW\n$K[Statement];"))return
false;}}foreach($Rj
as$R){$B=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));$Qj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $Qj[select]"))return
false;}return
true;}function
trigger($B,$R){if($B=="")return
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return
reset($L);}function
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($B,$U){$ta=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ki="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Ac=driver()->enumLength;$qj="((".implode("|",array_merge(array_keys(driver()->types()),$ta)).")\\b(?:\\s*\\(((?:[^'\")]|$Ac)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?(?:\\s*COLLATE\\s*['\"]?[^'\"\\s,]+['\"]?)?";$Kg="$ki*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$qj";$i=get_val("SHOW CREATE $U ".idf_escape($B),2);preg_match("~\\(((?:$Kg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$qj\\s+":"")."(.*)~is",$i,$A);$o=array();preg_match_all("~$Kg\\s*,?~is",$A[1],$df,PREG_SET_ORDER);foreach($df
as$yg)$o[]=array("field"=>str_replace("``","`",$yg[2]).$yg[3],"type"=>strtolower($yg[5]),"length"=>preg_replace_callback("~$Ac~s",'Adminer\normalize_enum',$yg[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$yg[8] $yg[7]"))),"null"=>true,"full_type"=>$yg[4],"inout"=>strtoupper($yg[1]),"collation"=>strtolower($yg[9]),);return
array("fields"=>$o,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($B)),)+($U!="FUNCTION"?array("definition"=>$A[11]):array("returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",));}function
routines(){return
get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($B,array$K){return
idf_escape($B);}function
last_id($I){return
get_val("SELECT LAST_INSERT_ID()");}function
explain(Db$g,$H){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
create_sql($R,$Ba,$wi){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Ba)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
use_sql($Pb,$wi=""){$B=idf_escape($Pb);$J="";if(preg_match('~CREATE~',$wi)&&($i=get_val("SHOW CREATE DATABASE $B",1))){set_utf8mb4($i);if($wi=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $B;\n";$J
.="$i;\n";}return$J."USE $B";}function
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J
.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
show_variables(){return
get_rows("SHOW VARIABLES");}function
show_status(){return
get_rows("SHOW STATUS");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
convert_field(array$n){if(preg_match("~binary~",$n["type"]))return"HEX(".idf_escape($n["field"]).")";if($n["type"]=="bit")return"BIN(".idf_escape($n["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($n["field"]).")";}function
unconvert_field(array$n,$J){if(preg_match("~binary~",$n["type"]))$J="UNHEX($J)";if($n["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"])){$Wg=(min_version(8)?"ST_":"");$J=$Wg."GeomFromText($J, $Wg"."SRID($n[field]))";}return$J;}function
support($Wc){return
preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Wc);}function
kill_process($u){return
queries("KILL ".number($u));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}function
types(){return
array();}function
type_values($u){return"";}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($Jh,$h=null){return
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
page_header($Wi,$m="",$Oa=array(),$Xi=""){page_headers();if(is_ajax()&&$m){page_messages($m);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Yi=$Wi.($Xi!=""?": $Xi":"");$Zi=strip_tags($Yi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
<html lang="',LANG,'" dir="',lang(85),'">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>',$Zi,'</title>
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.4.1"),'">
';$Jb=adminer()->css();if(is_int(key($Jb)))$Jb=array_fill_keys($Jb,'light');$Gd=in_array('light',$Jb)||in_array('',$Jb);$Ed=in_array('dark',$Jb)||in_array('',$Jb);$Mb=($Gd?($Ed?null:false):($Ed?:null));$nf=" media='(prefers-color-scheme: dark)'";if($Mb!==false)echo"<link rel='stylesheet'".($Mb?"":$nf)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.4.1")."'>\n";echo"<meta name='color-scheme' content='".($Mb===null?"light dark":($Mb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.4.1");if(adminer()->head($Mb))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.1")."'>\n";foreach($Jb
as$Dj=>$xf){$_a=($xf=='dark'&&!$Mb?$nf:($xf=='light'&&$Ed?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$_a href='".h($Dj)."'>\n";}echo"\n<body class='".lang(85)." nojs";adminer()->bodyClass();echo"'>\n";$p=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($p)&&filemtime($p)+86400>time()){$Pj=unserialize(file_get_contents($p));$gh="-----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($Pj["version"],base64_decode($Pj["signature"]),$gh)==1)$_COOKIE["adminer_version"]=$Pj["version"];}echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."});
document.body.classList.replace('nojs', 'js');
const offlineMessage = '".js_escape(lang(86))."';
const thousandsSeparator = '".js_escape(lang(4))."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n","<span id='menuopen' class='jsonly'>".icon("move","","menu","")."</span>".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Oa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?:".").'">'.get_driver(DRIVER).'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=adminer()->serverName(SERVER);$N=($N!=""?$N:lang(34));if($Oa===false)echo"$N\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Oa)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Oa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Oa
as$y=>$X){$ac=(is_array($X)?$X[1]:h($X));if($ac!="")echo"<a href='".h(ME."$y=").urlencode(is_array($X)?$X[0]:$X)."'>$ac</a> » ";}}echo"$Wi\n";}}echo"<h2>$Yi</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($m);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
page_headers(){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(adminer()->csp(csp())as$Ib){$Id=array();foreach($Ib
as$y=>$X)$Id[]="$y $X";header("Content-Security-Policy: ".implode("; ",$Id));}adminer()->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$Jf;if(!$Jf)$Jf=base64_encode(rand_string());return$Jf;}function
page_messages($m){$Cj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$tf=idx($_SESSION["messages"],$Cj);if($tf){echo"<div class='message'>".implode("</div>\n<div class='message'>",$tf)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Cj]);}if($m)echo"<div class='error'>$m</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
page_footer($wf=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($wf);echo"</div>\n";if($wf!="auth")echo'<form action="" method="post">
<p class="logout">
<span>',h($_GET["username"])."\n",'</span>
<input type="submit" name="logout" value="',lang(87),'" id="logout">
',input_token(),'</form>
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
int32($Bf){while($Bf>=2147483648)$Bf-=4294967296;while($Bf<=-2147483649)$Bf+=4294967296;return(int)$Bf;}function
long2str(array$W,$Tj){$Hh='';foreach($W
as$X)$Hh
.=pack('V',$X);if($Tj)return
substr($Hh,0,end($W));return$Hh;}function
str2long($Hh,$Tj){$W=array_values(unpack('V*',str_pad($Hh,4*ceil(strlen($Hh)/4),"\0")));if($Tj)$W[]=strlen($Hh);return$W;}function
xxtea_mx($ak,$Zj,$zi,$Ce){return
int32((($ak>>5&0x7FFFFFF)^$Zj<<2)+(($Zj>>3&0x1FFFFFFF)^$ak<<4))^int32(($zi^$Zj)+($Ce^$ak));}function
encrypt_string($ui,$y){if($ui=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($ui,true);$Bf=count($W)-1;$ak=$W[$Bf];$Zj=$W[0];$hh=floor(6+52/($Bf+1));$zi=0;while($hh-->0){$zi=int32($zi+0x9E3779B9);$qc=$zi>>2&3;for($wg=0;$wg<$Bf;$wg++){$Zj=$W[$wg+1];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$ak=int32($W[$wg]+$Af);$W[$wg]=$ak;}$Zj=$W[0];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$ak=int32($W[$Bf]+$Af);$W[$Bf]=$ak;}return
long2str($W,false);}function
decrypt_string($ui,$y){if($ui=="")return"";if(!$y)return
false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($ui,false);$Bf=count($W)-1;$ak=$W[$Bf];$Zj=$W[0];$hh=floor(6+52/($Bf+1));$zi=int32($hh*0x9E3779B9);while($zi){$qc=$zi>>2&3;for($wg=$Bf;$wg>0;$wg--){$ak=$W[$wg-1];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$Zj=int32($W[$wg]-$Af);$W[$wg]=$Zj;}$ak=$W[$Bf];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$Zj=int32($W[0]-$Af);$W[0]=$Zj;$zi=int32($zi-0x9E3779B9);}return
long2str($W,true);}$Mg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Mg[$y]=$X;}}function
add_invalid_login(){$Ha=get_temp_dir()."/adminer.invalid";foreach(glob("$Ha*")?:array($Ha)as$p){$r=file_open_lock($p);if($r)break;}if(!$r)$r=file_open_lock("$Ha-".rand_string());if(!$r)return;$ue=unserialize(stream_get_contents($r));$Ti=time();if($ue){foreach($ue
as$ve=>$X){if($X[0]<$Ti)unset($ue[$ve]);}}$te=&$ue[adminer()->bruteForceKey()];if(!$te)$te=array($Ti+30*60,0);$te[1]++;file_write_unlock($r,serialize($ue));}function
check_invalid_login(array&$Mg){$ue=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$p){$r=file_open_lock($p);if($r){$ue=unserialize(stream_get_contents($r));file_unlock($r);break;}}$te=idx($ue,adminer()->bruteForceKey(),array());$If=($te[1]>29?$te[0]-time():0);if($If>0)auth_error(lang(88,ceil($If/60)),$Mg);}$Aa=$_POST["auth"];if($Aa){session_regenerate_id();$Oj=$Aa["driver"];$N=$Aa["server"];$V=$Aa["username"];$F=(string)$Aa["password"];$k=$Aa["db"];set_password($Oj,$N,$V,$F);$_SESSION["db"][$Oj][$N][$V][$k]=true;if($Aa["permanent"]){$y=implode("-",array_map('base64_encode',array($Oj,$N,$V,$k)));$bh=adminer()->permanentLogin(true);$Mg[$y]="$y:".base64_encode($bh?encrypt_string($F,$bh):"");cookie("adminer_permanent",implode(" ",$Mg));}if(count($_POST)==1||DRIVER!=$Oj||SERVER!=$N||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Oj,$N,$V,$k));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent($Mg);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(89).' '.lang(90));}elseif($Mg&&!$_SESSION["pwds"]){session_regenerate_id();$bh=adminer()->permanentLogin();foreach($Mg
as$y=>$X){list(,$eb)=explode(":",$X);list($Oj,$N,$V,$k)=array_map('base64_decode',explode("-",$y));set_password($Oj,$N,$V,decrypt_string(base64_decode($eb),$bh));$_SESSION["db"][$Oj][$N][$V][$k]=true;}}function
unset_permanent(array&$Mg){foreach($Mg
as$y=>$X){list($Oj,$N,$V,$k)=array_map('base64_decode',explode("-",$y));if($Oj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$k==DB)unset($Mg[$y]);}cookie("adminer_permanent",implode(" ",$Mg));}function
auth_error($m,array&$Mg){$bi=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$bi]||$_GET[$bi])&&!$_SESSION["token"])$m=lang(91);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$m
.=($m?'<br>':'').lang(92,target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Mg);}}if(!$_COOKIE[$bi]&&$_GET[$bi]&&ini_bool("session.use_only_cookies"))$m=lang(93);$zg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$zg["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(38),$m,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".lang(94)."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Mg);page_header(lang(95),lang(96,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$g='';if(isset($_GET["username"])&&is_string(get_password())){list(,$Qg)=host_port(SERVER);if(preg_match('~^\s*([-+]?\d+)~',$Qg,$A)&&($A[1]<1024||$A[1]>65535))auth_error(lang(97),$Mg);check_invalid_login($Mg);$Hb=adminer()->credentials();$g=Driver::connect($Hb[0],$Hb[1],$Hb[2]);if(is_object($g)){Db::$instance=$g;Driver::$instance=new
Driver($g);if($g->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Xe=null;if(!is_object($g)||($Xe=adminer()->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?nl_br(h($g)):(is_string($Xe)?$Xe:lang(98))).(preg_match('~^ | $~',get_password())?'<br>'.lang(99):'');auth_error($m,$Mg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(87),lang(100));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($Aa&&$_POST["token"])$_POST["token"]=get_token();$m='';if($_POST){if(!verify_token()){$me="max_input_vars";$lf=ini_get($me);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$lf||$X<$lf)){$me=$y;$lf=$X;}}}$m=(!$_POST["token"]&&$lf?lang(101,"'$me'"):lang(100).' '.lang(102));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=lang(103,"'post_max_size'");if(isset($_GET["sql"]))$m
.=' '.lang(104);}function
print_select_result($I,$h=null,array$lg=array(),$z=0){$Ve=array();$x=array();$e=array();$Ma=array();$rj=array();$J=array();for($t=0;(!$z||$t<$z)&&($K=$I->fetch_row());$t++){if(!$t){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($Ae=0;$Ae<count($K);$Ae++){$n=$I->fetch_field();$B=$n->name;$kg=(isset($n->orgtable)?$n->orgtable:"");$jg=(isset($n->orgname)?$n->orgname:$B);if($lg&&JUSH=="sql")$Ve[$Ae]=($B=="table"?"table=":($B=="possible_keys"?"indexes=":null));elseif($kg!=""){if(isset($n->table))$J[$n->table]=$kg;if(!isset($x[$kg])){$x[$kg]=array();foreach(indexes($kg,$h)as$w){if($w["type"]=="PRIMARY"){$x[$kg]=array_flip($w["columns"]);break;}}$e[$kg]=$x[$kg];}if(isset($e[$kg][$jg])){unset($e[$kg][$jg]);$x[$kg][$jg]=$Ae;$Ve[$Ae]=$kg;}}if($n->charsetnr==63)$Ma[$Ae]=true;$rj[$Ae]=$n->type;echo"<th".($kg!=""||$n->name!=$jg?" title='".h(($kg!=""?"$kg.":"").$jg)."'":"").">".h($B).($lg?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($B),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
as$y=>$X){$_="";if(isset($Ve[$y])&&!$e[$Ve[$y]]){if($lg&&JUSH=="sql"){$R=$K[array_search("table=",$Ve)];$_=ME.$Ve[$y].urlencode($lg[$R]!=""?$lg[$R]:$R);}else{$_=ME."edit=".urlencode($Ve[$y]);foreach($x[$Ve[$y]]as$jb=>$Ae){if($K[$Ae]===null){$_="";break;}$_
.="&where".urlencode("[".bracket_escape($jb)."]")."=".urlencode($K[$Ae]);}}}elseif(is_url($X))$_=$X;if($X===null)$X="<i>NULL</i>";elseif($Ma[$y]&&!is_utf8($X))$X="<i>".lang(47,strlen($X))."</i>";else{$X=h($X);if($rj[$y]==254)$X="<code>$X</code>";}if($_)$X="<a href='".h($_)."'".(is_url($_)?target_blank():'').">$X</a>";echo"<td".($rj[$y]<=9||$rj[$y]==246?" class='number'":"").">$X";}}echo($t?"</table>\n</div>":"<p class='message'>".lang(14))."\n";return$J;}function
referencable_primary($Th){$J=array();foreach(table_status('',true)as$Di=>$R){if($Di!=$Th&&fk_support($R)){foreach(fields($Di)as$n){if($n["primary"]){if($J[$Di]){unset($J[$Di]);break;}$J[$Di]=$n;}}}}return$J;}function
textarea($B,$Y,$L=10,$mb=80){echo"<textarea name='".h($B)."' rows='$L' cols='$mb' class='sqlarea jush-".JUSH."' 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
select_input($_a,array$fg,$Y="",$Zf="",$Ng=""){$Li=($fg?"select":"input");return"<$Li$_a".($fg?"><option value=''>$Ng".optionlist($fg,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$Ng'>").($Zf?script("qsl('$Li').onchange = $Zf;",""):"");}function
json_row($y,$X=null,$Hc=true){static$dd=true;if($dd)echo"{";if($y!=""){echo($dd?"":",")."\n\t\"".addcslashes($y,"\r\n\t\"\\/").'": '.($X!==null?($Hc?'"'.addcslashes($X,"\r\n\"\\/").'"':$X):'null');$dd=false;}else{echo"\n}\n";$dd=true;}}function
edit_type($y,array$n,array$lb,array$nd=array(),array$Tc=array()){$U=$n["type"];echo"<td><select name='".h($y)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($nd[$U])&&!in_array($U,$Tc))$Tc[]=$U;$vi=driver()->structuredTypes();if($nd)$vi[lang(105)]=$nd;echo
optionlist(array_merge($Tc,$vi),$U),"</select><td>","<input name='".h($y)."[length]' value='".h($n["length"])."' size='3'".(!$n["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($lb?"<input list='collations' name='".h($y)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($n["collation"])."' placeholder='(".lang(106).")'>":''),(driver()->unsigned?"<select name='".h($y)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$n["unsigned"]).'</select>':''),(isset($n['on_update'])?"<select name='".h($y)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".lang(107).")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"CURRENT_TIMESTAMP":$n["on_update"])).'</select>':''),($nd?"<select name='".h($y)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".lang(108).")".optionlist(explode("|",driver()->onActions),$n["on_delete"])."</select> ":" ");}function
process_length($Re){$Cc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$Cc(?:\\s*,\\s*$Cc)*+\\s*\\)?\\s*\$~",$Re)&&preg_match_all("~$Cc~",$Re,$df)?"(".implode(",",$df[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$Re)));}function
process_type(array$n,$kb="COLLATE"){return" $n[type]".process_length($n["length"]).(preg_match(number_type(),$n["type"])&&in_array($n["unsigned"],driver()->unsigned)?" $n[unsigned]":"").(preg_match('~char|text|enum|set~',$n["type"])&&$n["collation"]?" $kb ".(JUSH=="mssql"?$n["collation"]:q($n["collation"])):"");}function
process_field(array$n,array$pj){if($n["on_update"])$n["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$n["on_update"]);return
array(idf_escape(trim($n["field"])),process_type($pj),($n["null"]?" NULL":" NOT NULL"),default_value($n),(preg_match('~timestamp|datetime~',$n["type"])&&$n["on_update"]?" ON UPDATE $n[on_update]":""),(support("comment")&&$n["comment"]!=""?" COMMENT ".q($n["comment"]):""),($n["auto_increment"]?auto_increment():null),);}function
default_value(array$n){$l=$n["default"];$ud=$n["generated"];return($l===null?"":(in_array($ud,driver()->generated)?(JUSH=="mssql"?" AS ($l)".($ud=="VIRTUAL"?"":" $ud")."":" GENERATED ALWAYS AS ($l) $ud"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$l)&&(preg_match('~char|binary|text|json|enum|set~',$n["type"])||preg_match('~^(?![a-z])~i',$l))?(JUSH=="sql"&&preg_match('~text|json~',$n["type"])?"(".q($l).")":q($l)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($l)":$l)))));}function
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$U))return" class='$y'";}}function
edit_fields(array$o,array$lb,$U="TABLE",array$nd=array()){$o=array_values($o);$Vb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$rb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($U=="PROCEDURE"?"<td>":""),"<th id='label-name'>".($U=="TABLE"?lang(109):lang(110)),"<td id='label-type'>".lang(49)."<textarea id='enum-edit' rows='4' cols='12' wrap='off' style='display: none;'></textarea>".script("qs('#enum-edit').onblur = editingLengthBlur;"),"<td id='label-length'>".lang(111),"<td>".lang(112);if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".lang(51)."'>AI</abbr>",doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype-numeric.html#DATATYPE-SERIAL",'mssql'=>"t-sql/statements/create-table-transact-sql-identity-property",)),"<td id='label-default'$Vb>".lang(52),(support("comment")?"<td id='label-comment'$rb>".lang(50):"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($o))."]","+",lang(113)),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($o
as$t=>$n){$t++;$mg=$n[($_POST?"orig":"field")];$gc=(isset($_POST["add"][$t-1])||(isset($n["field"])&&!idx($_POST["drop_col"],$t)))&&(support("drop_col")||$mg=="");echo"<tr".($gc?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",driver()->inout),$n["inout"]):"")."<th>";if($gc)echo"<input name='fields[$t][field]' value='".h($n["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'".(isset($_POST["add"][$t-1])?" autofocus":"").">";echo
input_hidden("fields[$t][orig]",$mg);edit_type("fields[$t]",$n,$lb,$nd);if($U=="TABLE")echo"<td>".checkbox("fields[$t][null]",1,$n["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$t'".($n["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Vb>".(driver()->generated?html_select("fields[$t][generated]",array_merge(array("","DEFAULT"),driver()->generated),$n["generated"])." ":checkbox("fields[$t][generated]",1,$n["generated"],"","","","label-default")),"<input name='fields[$t][default]' value='".h($n["default"])."' aria-labelledby='label-default'>",(support("comment")?"<td$rb><input name='fields[$t][comment]' value='".h($n["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");echo"<td>",(support("move_col")?icon("plus","add[$t]","+",lang(113))." ".icon("up","up[$t]","↑",lang(114))." ".icon("down","down[$t]","↓",lang(115))." ":""),($mg==""||support("drop_col")?icon("cross","drop_col[$t]","x",lang(116)):"");}}function
process_fields(array&$o){$C=0;if($_POST["up"]){$Le=0;foreach($o
as$y=>$n){if(key($_POST["up"])==$y){unset($o[$y]);array_splice($o,$Le,0,array($n));break;}if(isset($n["field"]))$Le=$C;$C++;}}elseif($_POST["down"]){$pd=false;foreach($o
as$y=>$n){if(isset($n["field"])&&$pd){unset($o[key($_POST["down"])]);array_splice($o,$C,0,array($pd));break;}if(key($_POST["down"])==$y)$pd=$n;$C++;}}elseif($_POST["add"]){$o=array_values($o);array_splice($o,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum(array$A){$X=$A[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
grant($wd,array$dh,$e,$Wf){if(!$dh)return
true;if($dh==array("ALL PRIVILEGES","GRANT OPTION"))return($wd=="GRANT"?queries("$wd ALL PRIVILEGES$Wf WITH GRANT OPTION"):queries("$wd ALL PRIVILEGES$Wf")&&queries("$wd GRANT OPTION$Wf"));return
queries("$wd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$dh).$e).$Wf);}function
drop_create($kc,$i,$mc,$Pi,$oc,$We,$sf,$qf,$rf,$Tf,$Ff){if($_POST["drop"])query_redirect($kc,$We,$sf);elseif($Tf=="")query_redirect($i,$We,$rf);elseif($Tf!=$Ff){$Gb=queries($i);queries_redirect($We,$qf,$Gb&&queries($kc));if($Gb)queries($mc);}else
queries_redirect($We,$qf,queries($Pi)&&queries($oc)&&queries($kc)&&queries($i));}function
create_trigger($Wf,array$K){$Vi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$Wf.$Vi:$Vi.$Wf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
create_routine($Dh,array$K){$O=array();$o=(array)$K["fields"];ksort($o);foreach($o
as$n){if($n["field"]!="")$O[]=(preg_match("~^(".driver()->inout.")\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$Xb=rtrim($K["definition"],";");return"CREATE $Dh ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($Dh=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Xb):"\n$Xb;");}function
remove_definer($H){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
format_foreign_key(array$q){$k=$q["db"];$Kf=$q["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$q["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($Kf!=""&&$Kf!=$_GET["ns"]?idf_escape($Kf).".":"").idf_escape($q["table"])." (".implode(", ",array_map('Adminer\idf_escape',$q["target"])).")".(preg_match("~^(".driver()->onActions.")\$~",$q["on_delete"])?" ON DELETE $q[on_delete]":"").(preg_match("~^(".driver()->onActions.")\$~",$q["on_update"])?" ON UPDATE $q[on_update]":"");}function
tar_file($p,$aj){$J=pack("a100a8a8a8a12a12",$p,644,0,0,decoct($aj->size),decoct(time()));$db=8*32;for($t=0;$t<strlen($J);$t++)$db+=ord($J[$t]);$J
.=sprintf("%06o",$db)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$aj->send();echo
str_repeat("\0",511-($aj->size+511)%512);}function
doc_link(array$Jg,$Qi="<sup>?</sup>"){$Zh=connection()->server_info;$Pj=preg_replace('~^(\d\.?\d).*~s','\1',$Zh);$Ej=array('sql'=>"https://dev.mysql.com/doc/refman/$Pj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$Pj)."/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$Zh)."&id=",);if(connection()->flavor=='maria'){$Ej['sql']="https://mariadb.com/kb/en/";$Jg['sql']=(isset($Jg['mariadb'])?$Jg['mariadb']:str_replace(".html","/",$Jg['sql']));}return($Jg[JUSH]?"<a href='".h($Ej[JUSH].$Jg[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Pj":""))."'".target_blank().">$Qi</a>":"");}function
db_size($k){if(!connection()->select_db($k))return"?";$J=0;foreach(table_status()as$S)$J+=$S["Data_length"]+$S["Index_length"];return
format_number($J);}function
set_utf8mb4($i){static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$i)){$O=true;echo"SET NAMES ".charset(connection()).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?connection()->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);}if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(37).": ".h(DB),lang(117),true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),lang(118),drop_databases($_POST["db"]));page_header(lang(119),$m,false);echo"<p class='links'>\n";foreach(array('database'=>lang(120),'privileges'=>lang(71),'processlist'=>lang(121),'variables'=>lang(122),'status'=>lang(123),)as$y=>$X){if(support($y))echo"<a href='".h(ME)."$y='>$X</a>\n";}echo"<p>".lang(124,get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".lang(125,"<b>".h(logged_user())."</b>")."\n";$j=adminer()->databases();if($j){$Lh=support("scheme");$lb=collations();echo"<form action='' method='post'>\n","<table class='checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".lang(37).(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".lang(126)."</a>":"")."<td>".lang(127)."<td>".lang(128)."<td>".lang(129)." - <a href='".h(ME)."dbsize=1'>".lang(130)."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$j=($_GET["dbsize"]?count_tables($j):array_flip($j));foreach($j
as$k=>$T){$Ch=h(ME)."db=".urlencode($k);$u=h("Db-".$k);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$u):""),"<th><a href='$Ch' id='$u'>".h($k)."</a>";$c=h(db_collation($k,$lb));echo"<td>".(support("database")?"<a href='$Ch".($Lh?"&amp;ns=":"")."&amp;database=' title='".lang(67)."'>$c</a>":$c),"<td align='right'><a href='$Ch&amp;schema=' id='tables-".h($k)."' title='".lang(70)."'>".($_GET["dbsize"]?$T:"?")."</a>","<td align='right' id='size-".h($k)."'>".($_GET["dbsize"]?db_size($k):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".lang(131)." <span id='selected'></span></legend><div>\n".input_hidden("all").script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".lang(132)."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),input_token(),"</form>\n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".lang(133)."</h3>\n<ul>\n";foreach(adminer()->plugins
as$Og){$bc=(method_exists($Og,'description')?$Og->description():"");if(!$bc){$sh=new
\ReflectionObject($Og);if(preg_match('~^/[\s*]+(.+)~',$sh->getDocComment(),$A))$bc=$A[1];}$Mh=(method_exists($Og,'screenshot')?$Og->screenshot():"");echo"<li><b>".get_class($Og)."</b>".h($bc?": $bc":"").($Mh?" (<a href='".h($Mh)."'".target_blank().">".lang(134)."</a>)":"")."\n";}echo"</ul>\n";adminer()->pluginsLinks();echo"</div>\n";}}page_footer("db");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(lang(79).": ".h($_GET["ns"]),lang(135),true);page_footer("ns");exit;}}}adminer()->afterConnect();class
TmpFile{private$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Ab){$this->size+=strlen($Ab);fwrite($this->handler,$Ab);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}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"];$o=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=driver()->select($a,$M,array(where($_GET,$o)),$M);$K=($I?$I->fetch_row():array());echo
driver()->value($K[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=error()?:lang(11);$S=table_status1($a);$B=adminer()->tableName($S);page_header(($o&&is_view($S)?$S['Engine']=='materialized view'?lang(136):lang(137):lang(138)).": ".($B!=""?$B:h($a)),$m);$Bh=array();foreach($o
as$y=>$n)$Bh+=$n["privileges"];adminer()->selectLinks($S,(isset($Bh["insert"])||!support("table")?"":null));$qb=$S["Comment"];if($qb!="")echo"<p class='nowrap'>".lang(50).": ".h($qb)."\n";if($o)adminer()->tableStructurePrint($o,$S);function
tables_links(array$T){echo"<ul>\n";foreach($T
as$R)echo"<li><a href='".h(ME."table=".urlencode($R))."'>".h($R)."</a>";echo"</ul>\n";}$le=driver()->inheritsFrom($a);if($le){echo"<h3>".lang(139)."</h3>\n";tables_links($le);}if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".lang(140)."</h3>\n";$x=indexes($a);if($x)adminer()->tableIndexesPrint($x,$S);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.lang(141)."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".lang(105)."</h3>\n";$nd=foreign_keys($a);if($nd){echo"<table>\n","<thead><tr><th>".lang(142)."<td>".lang(143)."<td>".lang(108)."<td>".lang(107)."<td></thead>\n";foreach($nd
as$B=>$q){echo"<tr title='".h($B)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$q["source"]))."</i>";$_=($q["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($q["db"]),ME):($q["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($q["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($q["table"]))."'>".($q["db"]!=""&&$q["db"]!=DB?"<b>".h($q["db"])."</b>.":"").($q["ns"]!=""&&$q["ns"]!=$_GET["ns"]?"<b>".h($q["ns"])."</b>.":"").h($q["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$q["target"]))."</i>)","<td>".h($q["on_delete"]),"<td>".h($q["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($B)).'">'.lang(144).'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.lang(145)."</a>\n";}if(support("check")){echo"<h3 id='checks'>".lang(146)."</h3>\n";$Za=driver()->checkConstraints($a);if($Za){echo"<table>\n";foreach($Za
as$y=>$X)echo"<tr title='".h($y)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($y))."'>".lang(144)."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.lang(147)."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".lang(148)."</h3>\n";$oj=triggers($a);if($oj){echo"<table>\n";foreach($oj
as$y=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($y)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($y))."'>".lang(144)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.lang(149)."</a>\n";}$ke=driver()->inheritedTables($a);if($ke){echo"<h3 id='partitions'>".lang(150)."</h3>\n";$Cg=driver()->partitionsInfo($a);if($Cg)echo"<p><code class='jush-".JUSH."'>BY ".h("$Cg[partition_by]($Cg[partition])")."</code>\n";tables_links($ke);}}elseif(isset($_GET["schema"])){page_header(lang(70),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Fi=array();$Gi=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$df,PREG_SET_ORDER);foreach($df
as$t=>$A){$Fi[$A[1]]=array($A[2],$A[3]);$Gi[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$dj=0;$Ia=-1;$Jh=array();$rh=array();$Pe=array();$ua=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Rg=0;$Jh[$R]["fields"]=array();foreach($ua[$R]as$n){$Rg+=1.25;$n["pos"]=$Rg;$Jh[$R]["fields"][$n["field"]]=$n;}$Jh[$R]["pos"]=($Fi[$R]?:array($dj,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$Ne=$Ia;if(idx($Fi[$R],1)||idx($Fi[$X["table"]],1))$Ne=min(idx($Fi[$R],1,0),idx($Fi[$X["table"]],1,0))-1;else$Ia-=.1;while($Pe[(string)$Ne])$Ne-=.0001;$Jh[$R]["references"][$X["table"]][(string)$Ne]=array($X["source"],$X["target"]);$rh[$X["table"]][$R][(string)$Ne]=$X["target"];$Pe[(string)$Ne]=true;}}$dj=max($dj,$Jh[$R]["pos"][0]+2.5+$Rg);}echo'<div id="schema" style="height: ',$dj,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = () => false;
const tablePos = {',implode(",",$Gi)."\n",'};
const em = qs(\'#schema\').offsetHeight / ',$dj,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($Jh
as$B=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($B).'"><b>'.h($B)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$n){$X='<span'.type_class($n["type"]).' title="'.h($n["type"].($n["length"]?"($n[length])":"").($n["null"]?" NULL":'')).'">'.h($n["field"]).'</span>';echo"<br>".($n["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$Ni=>$th){foreach($th
as$Ne=>$oh){$Oe=$Ne-idx($Fi[$B],1);$t=0;foreach($oh[0]as$ji)echo"\n<div class='references' title='".h($Ni)."' id='refs$Ne-".($t++)."' style='left: $Oe"."em; top: ".$R["fields"][$ji]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$Oe)."em;'></div></div>";}}foreach((array)$rh[$B]as$Ni=>$th){foreach($th
as$Ne=>$e){$Oe=$Ne-idx($Fi[$B],1);$t=0;foreach($e
as$Mi)echo"\n<div class='references arrow' title='".h($Ni)."' id='refd$Ne-".($t++)."' style='left: $Oe"."em; top: ".$R["fields"][$Mi]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$Oe)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Jh
as$B=>$R){foreach((array)$R["references"]as$Ni=>$th){foreach($th
as$Ne=>$oh){$vf=$dj;$jf=-10;foreach($oh[0]as$y=>$ji){$Sg=$R["pos"][0]+$R["fields"][$ji]["pos"];$Tg=$Jh[$Ni]["pos"][0]+$Jh[$Ni]["fields"][$oh[1][$y]]["pos"];$vf=min($vf,$Sg,$Tg);$jf=max($jf,$Sg,$Tg);}echo"<div class='references' id='refl$Ne' style='left: $Ne"."em; top: $vf"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($jf-$vf)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($da)),'" id="schema-link">',lang(151),'</a>
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$m){save_settings(array_intersect_key($_POST,array_flip(array("output","format","db_style","types","routines","events","table_style","auto_increment","triggers","data_style"))),"adminer_export");$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Pc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$ye=preg_match('~sql~',$_POST["format"]);if($ye){echo"-- Adminer ".VERSION." ".get_driver(DRIVER)." ".str_replace("\n"," ",connection()->server_info)." dump\n\n";if(JUSH=="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';
":"")."
";connection()->query("SET time_zone = '+00:00'");connection()->query("SET sql_mode = ''");}}$wi=$_POST["db_style"];$j=array(DB);if(DB==""){$j=$_POST["databases"];if(is_string($j))$j=explode("\n",rtrim(str_replace("\r","",$j),"\n"));}foreach((array)$j
as$k){adminer()->dumpDatabase($k);if(connection()->select_db($k)){if($ye){if($wi)echo
use_sql($k,$wi).";\n\n";$tg="";if($_POST["types"]){foreach(types()as$u=>$U){$Dc=type_values($u);if($Dc)$tg
.=($wi!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($Dc);\n\n";else$tg
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$B=$K["ROUTINE_NAME"];$Dh=$K["ROUTINE_TYPE"];$i=create_routine($Dh,array("name"=>$B)+routine($K["SPECIFIC_NAME"],$Dh));set_utf8mb4($i);$tg
.=($wi!='DROP+CREATE'?"DROP $Dh IF EXISTS ".idf_escape($B).";;\n":"")."$i;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$i=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($i);$tg
.=($wi!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$i;;\n\n";}}echo($tg&&JUSH=='sql'?"DELIMITER ;;\n\n$tg"."DELIMITER ;\n\n":$tg);}if($_POST["table_style"]||$_POST["data_style"]){$Rj=array();foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));$Nb=(DB==""||in_array($B,(array)$_POST["data"]));if($R||$Nb){$aj=null;if($Pc=="tar"){$aj=new
TmpFile;ob_start(array($aj,'write'),1e5);}adminer()->dumpTable($B,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Rj[]=$B;elseif($Nb){$o=fields($B);adminer()->dumpData($B,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($B));}if($ye&&$_POST["triggers"]&&$R&&($oj=trigger_sql($B)))echo"\nDELIMITER ;;\n$oj\nDELIMITER ;\n";if($Pc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$B.csv",$aj);}elseif($ye)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));if($R&&!is_view($S))echo
foreign_keys_sql($B);}}foreach($Rj
as$Qj)adminer()->dumpTable($Qj,$_POST["table_style"],1);if($Pc=="tar")echo
pack("x512");}}}adminer()->dumpFooter();exit;}page_header(lang(76),$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table class="layout">
';$Rb=array('','USE','DROP+CREATE','CREATE');$Hi=array('','DROP+CREATE','CREATE');$Ob=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Ob[]='INSERT+UPDATE';$K=get_settings("adminer_export");if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"<tr><th>".lang(152)."<td>".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","<tr><th>".lang(153)."<td>".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".lang(37)."<td>".html_select('db_style',$Rb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],lang(6)):"").(support("routine")?checkbox("routines",1,$K["routines"],lang(72)):"").(support("event")?checkbox("events",1,$K["events"],lang(74)):"")),"<tr><th>".lang(128)."<td>".html_select('table_style',$Hi,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],lang(51)).(support("trigger")?checkbox("triggers",1,$K["triggers"],lang(148)):""),"<tr><th>".lang(154)."<td>".html_select('data_style',$Ob,$K["data_style"]),'</table>
<p><input type="submit" value="',lang(76),'">
',input_token(),'
<table>
',script("qsl('table').onclick = dumpClick;");$Xg=array();if(DB!=""){$bb=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$bb>".lang(128)."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".lang(154)."<input type='checkbox' id='check-data'$bb></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Rj="";$Ji=tables_list();foreach($Ji
as$B=>$U){$Wg=preg_replace('~_.*~','',$B);$bb=($a==""||$a==(substr($a,-1)=="%"?"$Wg%":$B));$ah="<tr><td>".checkbox("tables[]",$B,$bb,$B,"","block");if($U!==null&&!preg_match('~table~i',$U))$Rj
.="$ah\n";else
echo"$ah<td align='right'><label class='block'><span id='Rows-".h($B)."'></span>".checkbox("data[]",$B,$bb)."</label>\n";$Xg[$Wg]++;}echo$Rj;if($Ji)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":"").">".lang(37)."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$j=adminer()->databases();if($j){foreach($j
as$k){if(!information_schema($k)){$Wg=preg_replace('~_.*~','',$k);echo"<tr><td>".checkbox("databases[]",$k,$a==""||$a=="$Wg%",$k,"","block")."\n";$Xg[$Wg]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$dd=true;foreach($Xg
as$y=>$X){if($y!=""&&$X>1){echo($dd?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$y%")."'>".h($y)."</a>";$dd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(71));echo'<p class="links"><a href="'.h(ME).'user=">'.lang(155)."</a>";$I=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$wd=$I;if(!$I)$I=connection()->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_hidden("db",DB),($wd?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".lang(35)."<th>".lang(34)."<th></thead>\n";while($K=$I->fetch_assoc())echo'<tr><td>'.h($K["User"])."<td>".h($K["Host"]).'<td><a href="'.h(ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.lang(12)."</a>\n";if(!$wd||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".lang(12)."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$Md=&get_session("queries");$Ld=&$Md[DB];if(!$m&&$_POST["clear"]){$Ld=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?lang(75):lang(64)),$m);$Ue='--'.(JUSH=='sql'?' ':'');if(!$m&&$_POST){$r=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$ni=adminer()->importServerPath();$r=@fopen((file_exists($ni)?$ni:"compress.zlib://$ni.gz"),"rb");$H=($r?fread($r,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($of=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($of,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$hh=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Ld||first(end($Ld))!=$hh){restart_session();$Ld[]=array($hh,time());set_session("queries",$Md);stop_session();}}$ki="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$Ue)[^\n]*\n?|--\r?\n)";$Zb=";";$C=0;$yc=true;$h=connect();if($h&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$pb=0;$Fc=array();$_g='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Ue.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ej=microtime(true);$oa=get_settings("adminer_import");while($H!=""){if(!$C&&preg_match("~^$ki*+DELIMITER\\s+(\\S+)~i",$H,$A)){$Zb=preg_quote($A[1]);$H=substr($H,strlen($A[0]));}elseif(!$C&&JUSH=='pgsql'&&preg_match("~^($ki*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$A)){$Zb="\n\\\\\\.\r?\n";$C=strlen($A[0]);}else{preg_match("($Zb\\s*|$_g)",$H,$A,PREG_OFFSET_CAPTURE,$C);list($pd,$Rg)=$A[0];if(!$pd&&$r&&!feof($r))$H
.=fread($r,1e5);else{if(!$pd&&rtrim($H)=="")break;$C=$Rg+strlen($pd);if($pd&&!preg_match("(^$Zb)",$pd)){$Ta=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($Rg>0&&strtolower($H[$Rg-1])=="e"));$Kg=($pd=='/*'?'\*/':($pd=='['?']':(preg_match("~^$Ue|^#~",$pd)?"\n":preg_quote($pd).($Ta?'|\\\\.':''))));while(preg_match("($Kg|\$)s",$H,$A,PREG_OFFSET_CAPTURE,$C)){$Hh=$A[0][0];if(!$Hh&&$r&&!feof($r))$H
.=fread($r,1e5);else{$C=$A[0][1]+strlen($Hh);if(!$Hh||$Hh[0]!="\\")break;}}}else{$yc=false;$hh=substr($H,0,$Rg+($Zb[0]=="\n"?3:0));$pb++;$ah="<pre id='sql-$pb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($hh)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$ki*+ATTACH\\b~i",$hh,$A)){echo$ah,"<p class='error'>".lang(156)."\n";$Fc[]=" <a href='#sql-$pb'>$pb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$ah;ob_flush();flush();}$si=microtime(true);if(connection()->multi_query($hh)&&$h&&preg_match("~^$ki*+USE\\b~i",$hh))$h->query($hh);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$ah:""),"<p class='error'>".lang(157).(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Fc[]=" <a href='#sql-$pb'>$pb</a>";if($_POST["error_stops"])break
2;}else{$Ti=" <span class='time'>(".format_time($si).")</span>".(strlen($hh)<1000?" <a href='".h(ME)."sql=".urlencode(trim($hh))."'>".lang(12)."</a>":"");$qa=connection()->affected_rows;$Uj=($_POST["only_errors"]?"":driver()->warnings());$Vj="warnings-$pb";if($Uj)$Ti
.=", <a href='#$Vj'>".lang(46)."</a>".script("qsl('a').onclick = partial(toggle, '$Vj');","");$Nc=null;$lg=null;$Oc="explain-$pb";if(is_object($I)){$z=$_POST["limit"];$lg=print_select_result($I,$h,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Mf=$I->num_rows;echo"<p class='sql-footer'>".($Mf?($z&&$Mf>$z?lang(158,$z):"").lang(159,$Mf):""),$Ti;if($h&&preg_match("~^($ki|\\()*+SELECT\\b~i",$hh)&&($Nc=explain($h,$hh)))echo", <a href='#$Oc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Oc');","");$u="export-$pb";echo", <a href='#$u'>".lang(76)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."<span id='$u' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$oa["output"])." ".html_select("format",adminer()->dumpFormat(),$oa["format"]).input_hidden("query",$hh)."<input type='submit' name='export' value='".lang(76)."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$ki*+(CREATE|DROP|ALTER)$ki++(DATABASE|SCHEMA)\\b~i",$hh)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang(160,$qa)."$Ti\n";}echo($Uj?"<div id='$Vj' class='hidden'>\n$Uj</div>\n":"");if($Nc){echo"<div id='$Oc' class='hidden explain'>\n";print_select_result($Nc,$h,$lg);echo"</div>\n";}}$si=microtime(true);}while(connection()->next_result());}$H=substr($H,$C);$C=0;}}}}if($yc)echo"<p class='message'>".lang(161)."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang(162,$pb-count($Fc))," <span class='time'>(".format_time($ej).")</span>\n";elseif($Fc&&$pb>1)echo"<p class='error'>".lang(157).": ".implode("",$Fc)."\n";}else
echo"<p class='error'>".upload_error($H)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$Lc="<input type='submit' value='".lang(163)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$hh=$_GET["sql"];if($_POST)$hh=$_POST["query"];elseif($_GET["history"]=="all")$hh=$Ld;elseif($_GET["history"]!="")$hh=idx($Ld[$_GET["history"]],0);echo"<p>";textarea("query",$hh,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>";adminer()->sqlPrintAfter();echo"$Lc\n",lang(164).": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{$Bd=(extension_loaded("zlib")?"[.gz]":"");echo"<fieldset><legend>".lang(165)."</legend><div>",file_input("SQL$Bd: <input type='file' name='sql_file[]' multiple>\n$Lc"),"</div></fieldset>\n";$Xd=adminer()->importServerPath();if($Xd)echo"<fieldset><legend>".lang(166)."</legend><div>",lang(167,"<code>".h($Xd)."$Bd</code>"),' <input type="submit" name="webfile" value="'.lang(168).'">',"</div></fieldset>\n";echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(169))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(170))."\n",input_token();if(!isset($_GET["import"])&&$Ld){print_fieldset("history",lang(171),$_GET["history"]!="");for($X=end($Ld);$X;$X=prev($Ld)){$y=key($Ld);list($hh,$Ti,$tc)=$X;echo'<a href="'.h(ME."sql=&history=$y").'">'.lang(12)."</a>"." <span class='time' title='".@date('Y-m-d',$Ti)."'>".@date("H:i:s",$Ti)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$Ue).*~m",'',$hh)))),80,"</code>").($tc?" <span class='time'>($tc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(172)."'>\n","<a href='".h(ME."sql=&history=all")."'>".lang(173)."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$_j=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
as$B=>$n){if(!isset($n["privileges"][$_j?"update":"insert"])||adminer()->fieldName($n)==""||$n["generated"])unset($o[$B]);}if($_POST&&!$m&&!isset($_GET["select"])){$We=$_POST["referer"];if($_POST["insert"])$We=($_j?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$We))$We=ME."select=".urlencode($a);$x=indexes($a);$vj=unique_array($_GET["where"],$x);$kh="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($We,lang(174),driver()->delete($a,$kh,$vj?0:1));else{$O=array();foreach($o
as$B=>$n){$X=process_input($n);if($X!==false&&$X!==null)$O[idf_escape($B)]=$X;}if($_j){if(!$O)redirect($We);queries_redirect($We,lang(175),driver()->update($a,$O,$kh,$vj?0:1));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$I=driver()->insert($a,$O);$Me=($I?last_id($I):0);queries_redirect($We,lang(176,($Me?" $Me":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($o
as$B=>$n){if(isset($n["privileges"]["select"])){$ya=($_POST["clone"]&&$n["auto_increment"]?"''":convert_field($n));$M[]=($ya?"$ya AS ":"").idf_escape($B);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$m=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$o){if(!$Z){$I=driver()->select($a,array("*"),array(),array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array(driver()->primary=>"");}if($K){foreach($K
as$y=>$X){if(!$Z)$K[$y]=null;$o[$y]=array("field"=>$y,"null"=>($y!=driver()->primary),"auto_increment"=>($y==driver()->primary));}}}edit_form($a,$o,$K,$_j,$m);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Eg=driver()->partitionBy;$Hg=($Eg?driver()->partitionsInfo($a):array());$qh=referencable_primary($a);$nd=array();foreach($qh
as$Di=>$n)$nd[str_replace("`","``",$Di)."`".str_replace("`","``",$n["field"])]=$Di;$og=array();$S=array();if($a!=""){$og=fields($a);$S=table_status1($a);if(count($S)<2)$m=lang(11);}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(177),drop_tables(array($a)));else{$o=array();$ua=array();$Fj=false;$ld=array();$ng=reset($og);$sa=" FIRST";foreach($K["fields"]as$y=>$n){$q=$nd[$n["type"]];$pj=($q!==null?$qh[$q]:$n);if($n["field"]!=""){if(!$n["generated"])$n["default"]=null;$fh=process_field($n,$pj);$ua[]=array($n["orig"],$fh,$sa);if(!$ng||$fh!==process_field($ng,$ng)){$o[]=array($n["orig"],$fh,$sa);if($n["orig"]!=""||$sa)$Fj=true;}if($q!==null)$ld[idf_escape($n["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$nd[$n["type"]],'source'=>array($n["field"]),'target'=>array($pj["field"]),'on_delete'=>$n["on_delete"],));$sa=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Fj=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$ng=next($og);if(!$ng)$sa="";}}$E=array();if(in_array($K["partition_by"],$Eg)){foreach($K
as$y=>$X){if(preg_match('~^partition~',$y))$E[$y]=$X;}foreach($E["partition_names"]as$y=>$B){if($B==""){unset($E["partition_names"][$y]);unset($E["partition_values"][$y]);}}$E["partition_names"]=array_values($E["partition_names"]);$E["partition_values"]=array_values($E["partition_values"]);if($E==$Hg)$E=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$E=null;$pf=lang(178);if($a==""){cookie("adminer_engine",$K["Engine"]);$pf=lang(179);}$B=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($B),$pf,alter_table($a,$B,(JUSH=="sqlite"&&($Fj||$ld)?$ua:$o),$ld,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$S["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$E));}}page_header(($a!=""?lang(43):lang(77)),$m,array("table"=>$a),h($a));if(!$_POST){$rj=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($rj["int"])?"int":(isset($rj["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$K=$S;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($og
as$n){$n["generated"]=$n["generated"]?:(isset($n["default"])?"DEFAULT":"");$K["fields"][]=$n;}if($Eg){$K+=$Hg;$K["partition_names"][]="";$K["partition_values"][]="";}}}$lb=collations();if(is_array(reset($lb)))$lb=call_user_func_array('array_merge',array_values($lb));$_c=driver()->engines();foreach($_c
as$zc){if(!strcasecmp($zc,$K["Engine"])){$K["Engine"]=$zc;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$a==""){echo
lang(180).": <input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($K["name"])."' autocapitalize='off'>\n",($_c?html_select("Engine",array(""=>"(".lang(181).")")+$_c,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($lb)echo"<datalist id='collations'>".optionlist($lb)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".lang(106).")'>\n");echo"<input type='submit' value='".lang(16)."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$lb,"TABLE",$nd);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",lang(51).": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(182),"columnShow(this.checked, 5)","jsonly");$sb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$sb,lang(50),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($sb?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($sb?"":" class='hidden'").'>'):''),'<p>
<input type="submit" value="',lang(16),'">
';}echo'
';if($a!="")echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,$a));if($Eg&&(JUSH=='sql'||$a=="")){$Fg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",lang(184),$K["partition_by"]);echo"<p>".html_select("partition_by",array_merge(array(""),$Eg),$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($K["partition"])."'>)\n",lang(185).": <input type='number' name='partitions' class='size".($Fg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($Fg?"":" class='hidden'").">\n","<thead><tr><th>".lang(186)."<th>".lang(187)."</thead>\n";foreach($K["partition_names"]as$y=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($y==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($K["partition_values"],$y)).'">';echo"</table>\n</div></fieldset>\n";}echo
input_token(),'</form>
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$fe=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$ce=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$fe[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$fe[]="SPATIAL";$x=indexes($a);$o=fields($a);$G=array();if(JUSH=="mongo"){$G=$x["_id_"];unset($fe[0]);unset($x["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$w){$B=$w["name"];if(in_array($w["type"],$fe)){$e=array();$Se=array();$cc=array();$de=(support("partial_indexes")?$w["partial"]:"");$be=(in_array($w["algorithm"],$ce)?$w["algorithm"]:"");$O=array();ksort($w["columns"]);foreach($w["columns"]as$y=>$d){if($d!=""){$Re=idx($w["lengths"],$y);$ac=idx($w["descs"],$y);$O[]=($o[$d]?idf_escape($d):$d).($Re?"(".(+$Re).")":"").($ac?" DESC":"");$e[]=$d;$Se[]=($Re?:null);$cc[]=$ac;}}$Mc=$x[$B];if($Mc){ksort($Mc["columns"]);ksort($Mc["lengths"]);ksort($Mc["descs"]);if($w["type"]==$Mc["type"]&&array_values($Mc["columns"])===$e&&(!$Mc["lengths"]||array_values($Mc["lengths"])===$Se)&&array_values($Mc["descs"])===$cc&&$Mc["partial"]==$de&&(!$ce||$Mc["algorithm"]==$be)){unset($x[$B]);continue;}}if($e)$b[]=array($w["type"],$B,$O,$be,$de);}}foreach($x
as$B=>$Mc)$b[]=array($Mc["type"],$B,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(188),alter_indexes($a,$b));}page_header(lang(140),$m,array("table"=>$a),h($a));$ad=array_keys($o);if($_POST["add"]){foreach($K["indexes"]as$y=>$w){if($w["columns"][count($w["columns"])]!="")$K["indexes"][$y]["columns"][]="";}$w=end($K["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($x
as$y=>$w){$x[$y]["name"]=$y;$x[$y]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$K["indexes"]=$x;}$Se=(JUSH=="sql"||JUSH=="mssql");$ei=($_POST?$_POST["options"]:get_setting("index_options"));echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap">
<thead><tr>
<th id="label-type">',lang(189);$Vd=" class='idxopts".($ei?"":" hidden")."'";if($ce)echo"<th id='label-algorithm'$Vd>".lang(190).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'<th><input type="submit" class="wayoff">',lang(191).($Se?"<span$Vd> (".lang(192).")</span>":"");if($Se||support("descidx"))echo
checkbox("options",1,$ei,lang(112),"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">',lang(193);if(support("partial_indexes"))echo"<th id='label-condition'$Vd>".lang(194);echo'<th><noscript>',icon("plus","add[0]","+",lang(113)),'</noscript>
</thead>
';if($G){echo"<tr><td>PRIMARY<td>";foreach($G["columns"]as$y=>$d)echo
select_input(" disabled",$ad,$d),"<label><input disabled type='checkbox'>".lang(59)."</label> ";echo"<td><td>\n";}$Ae=1;foreach($K["indexes"]as$w){if(!$_POST["drop_col"]||$Ae!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$Ae][type]",array(-1=>"")+$fe,$w["type"],($Ae==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($ce)echo"<td$Vd>".html_select("indexes[$Ae][algorithm]",array_merge(array(""),$ce),$w['algorithm'],"label-algorithm");echo"<td>";ksort($w["columns"]);$t=1;foreach($w["columns"]as$y=>$d){echo"<span>".select_input(" name='indexes[$Ae][columns][$t]' title='".lang(48)."'",($o&&($d==""||$o[$d])?array_combine($ad,$ad):array()),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span$Vd>",($Se?"<input type='number' name='indexes[$Ae][lengths][$t]' class='size' value='".h(idx($w["lengths"],$y))."' title='".lang(111)."'>":""),(support("descidx")?checkbox("indexes[$Ae][descs][$t]",1,idx($w["descs"],$y),lang(59)):""),"</span> </span>";$t++;}echo"<td><input name='indexes[$Ae][name]' value='".h($w["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n";if(support("partial_indexes"))echo"<td$Vd><input name='indexes[$Ae][partial]' value='".h($w["partial"])."' autocapitalize='off' aria-labelledby='label-condition'>\n";echo"<td>".icon("cross","drop_col[$Ae]","x",lang(116)).script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$Ae++;}echo'</table>
</div>
<p>
<input type="submit" value="',lang(16),'">
',input_token(),'</form>
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$m&&!$_POST["add"]){$B=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(195),drop_databases(array(DB)));}elseif(DB!==$B){if(DB!=""){$_GET["db"]=$B;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($B),lang(196),rename_database($B,$K["collation"]));}else{$j=explode("\n",str_replace("\r","",$B));$xi=true;$Le="";foreach($j
as$k){if(count($j)==1||$k!=""){if(!create_database($k,$K["collation"]))$xi=false;$Le=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Le),lang(197),$xi);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($B).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),lang(198));}}page_header(DB!=""?lang(67):lang(120),$m,array(),h(DB));$lb=collations();$B=DB;if($_POST)$B=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$lb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$wd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$wd,$A)&&$A[1]){$B=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add"]||strpos($B,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($B).'</textarea><br>':'<input name="name" autofocus value="'.h($B).'" data-maxlength="64" autocapitalize="off">')."\n".($lb?html_select("collation",array(""=>"(".lang(106).")")+$lb,$K["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):""),'<input type="submit" value="',lang(16),'">
';if(DB!="")echo"<input type='submit' name='drop' value='".lang(132)."'>".confirm(lang(183,DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo
icon("plus","add[0]","+",lang(113))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$m){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(199));else{$B=trim($K["name"]);$_
.=urlencode($B);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($B),$_,lang(200));elseif($_GET["ns"]!=$B)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($B),$_,lang(201));else
redirect($_);}}page_header($_GET["ns"]!=""?lang(68):lang(69),$m);if(!$K)$K["name"]=$_GET["ns"];echo'
<form action="" method="post">
<p><input name="name" autofocus value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(16),'">
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".lang(132)."'>".confirm(lang(183,$_GET["ns"]))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(202).": ".h($ca),$m);$Dh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Yd=array();$tg=array();foreach($Dh["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT"&&JUSH=='sql')$tg[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Yd[]=$t;}if(!$m&&$_POST){$Ua=array();foreach($Dh["fields"]as$y=>$n){$X="";if(in_array($y,$Yd)){$X=process_input($n);if($X===false)$X="''";if(isset($tg[$y]))connection()->query("SET @".idf_escape($n["field"])." = $X");}if(isset($tg[$y]))$Ua[]="@".idf_escape($n["field"]);elseif(in_array($y,$Yd))$Ua[]=$X;}$H=(isset($_GET["callf"])?"SELECT ":"CALL ").($Dh["returns"]["type"]=="record"?"* FROM ":"").table($ca)."(".implode(", ",$Ua).")";$si=microtime(true);$I=connection()->multi_query($H);$qa=connection()->affected_rows;echo
adminer()->selectQuery($H,$si,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$h=connect();if($h)$h->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$h);else
echo"<p class='message'>".lang(203,$qa)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($tg)print_select_result(connection()->query("SELECT ".implode(", ",$tg)));}}echo'
<form action="" method="post">
';if($Yd){echo"<table class='layout'>\n";foreach($Yd
as$y){$n=$Dh["fields"][$y];$B=$n["field"];echo"<tr><th>".adminer()->fieldName($n);$Y=idx($_POST["fields"],$B);if($Y!=""){if($n["type"]=="set")$Y=implode(",",$Y);}input($n,$Y,idx($_POST["function"],$B,""));echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',lang(202),'">
',input_token(),'</form>
<pre>
';function
pre_tr($Hh){return
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Hh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($A){$ed=pre_tr($A[2]);return"<table>\n".($A[1]?"<thead>$ed</thead>\n":$ed).pre_tr($A[4])."\n</table>";},preg_replace('~(\n( -|mysql)&gt; )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Dh['comment']))));echo'</pre>
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$B=$_GET["name"];$K=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$Mi=array();foreach($K["source"]as$y=>$X)$Mi[$y]=$K["target"][$y];$K["target"]=$Mi;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $B"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($B==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($B)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(204):($B!=""?lang(205):lang(206))),$I);if(!$K["drop"])$m=lang(207);}page_header(lang(208),$m,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($B!=""){$nd=foreign_keys($a);$K=$nd[$B];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
<form action="" method="post">
';$ji=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$pg=get_schema();set_schema($K["ns"]);}$ph=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Mi=array_keys(fields(in_array($K["table"],$ph)?$K["table"]:reset($ph)));$Zf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".lang(209).": ".html_select("table",$ph,$K["table"],$Zf)."</label>\n";if(support("scheme")){$Kh=array_filter(adminer()->schemas(),function($Jh){return!preg_match('~^information_schema$~i',$Jh);});echo"<label>".lang(79).": ".html_select("ns",$Kh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$Zf)."</label>";if($K["ns"]!="")set_schema($pg);}elseif(JUSH!="sqlite"){$Sb=array();foreach(adminer()->databases()as$k){if(!information_schema($k))$Sb[]=$k;}echo"<label>".lang(78).": ".html_select("db",$Sb,$K["db"]!=""?$K["db"]:$_GET["db"],$Zf)."</label>";}echo
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="',lang(210),'"></noscript>
<table>
<thead><tr><th id="label-source">',lang(142),'<th id="label-target">',lang(143),'</thead>
';$Ae=0;foreach($K["source"]as$y=>$X){echo"<tr>","<td>".html_select("source[".(+$y)."]",array(-1=>"")+$ji,$X,($Ae==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$y)."]",$Mi,idx($K["target"],$y),"","label-target");$Ae++;}echo'</table>
<p>
<label>',lang(108),': ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$K["on_delete"]),'</label>
<label>',lang(107),': ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$K["on_update"]),'</label>
',doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'<p>
<input type="submit" value="',lang(16),'">
<noscript><p><input type="submit" name="add" value="',lang(211),'"></noscript>
';if($B!="")echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,$B));echo
input_token(),'</form>
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$qg="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$qg=strtoupper($P["Engine"]);}if($_POST&&!$m){$B=trim($K["name"]);$ya=" AS\n$K[select]";$We=ME."table=".urlencode($B);$pf=lang(212);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$B&&JUSH!="sqlite"&&$U=="VIEW"&&$qg=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($B).$ya,$We,$pf);else{$Oi=$B."_adminer_".uniqid();drop_create("DROP $qg ".table($a),"CREATE $U ".table($B).$ya,"DROP $U ".table($B),"CREATE $U ".table($Oi).$ya,"DROP $U ".table($Oi),($_POST["drop"]?substr(ME,0,-1):$We),lang(213),$pf,lang(214),$a,$B);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($qg!="VIEW");if(!$m)$m=error();}page_header(($a!=""?lang(44):lang(215)),$m,array("table"=>$a),h($a));echo'
<form action="" method="post">
<p>',lang(193),': <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],lang(136)):""),'<p>';textarea("select",$K["select"]);echo'<p>
<input type="submit" value="',lang(16),'">
';if($a!="")echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,$a));echo
input_token(),'</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$se=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$ti=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(216));elseif(in_array($K["INTERVAL_FIELD"],$se)&&isset($ti[$K["STATUS"]])){$Ih="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(217):lang(218)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Ih.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Ih)."\n".$ti[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(219).": ".h($aa):lang(220)),$m);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
<form action="" method="post">
<table class="layout">
<tr><th>',lang(193),'<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">',lang(221),'<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
<tr><th title="datetime">',lang(222),'<td><input name="ENDS" value="',h($K["ENDS"]),'">
<tr><th>',lang(223),'<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$se,$K["INTERVAL_FIELD"]),'<tr><th>',lang(123),'<td>',html_select("STATUS",$ti,$K["STATUS"]),'<tr><th>',lang(50),'<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" data-maxlength="64">
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",lang(224)),'</table>
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',lang(16),'">
';if($aa!="")echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,$aa));echo
input_token(),'</form>
';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$Dh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$m){$mg=routine($_GET["procedure"],$Dh);$Oi="$K[name]_adminer_".uniqid();foreach($K["fields"]as$y=>$n){if($n["field"]=="")unset($K["fields"][$y]);}drop_create("DROP $Dh ".routine_id($ca,$mg),create_routine($Dh,$K),"DROP $Dh ".routine_id($K["name"],$K),create_routine($Dh,array("name"=>$Oi)+$K),"DROP $Dh ".routine_id($Oi,$K),substr(ME,0,-1),lang(225),lang(226),lang(227),$ca,$K["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(228):lang(229)).": ".h($ca):(isset($_GET["function"])?lang(230):lang(231))),$m);if(!$_POST){if($ca=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$Dh);$K["name"]=$ca;}}$lb=get_vals("SHOW CHARACTER SET");sort($lb);$Eh=routine_languages();echo($lb?"<datalist id='collations'>".optionlist($lb)."</datalist>":""),'
<form action="" method="post" id="form">
<p>',lang(193),': <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',($Eh?"<label>".lang(21).": ".html_select("language",$Eh,$K["language"])."</label>\n":""),'<input type="submit" value="',lang(16),'">
<div class="scrollable">
<table class="nowrap">
';edit_fields($K["fields"],$lb,$Dh);if(isset($_GET["function"])){echo"<tr><td>".lang(232);edit_type("returns",(array)$K["returns"],$lb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
',script("editFields();"),'</div>
<p>';textarea("definition",$K["definition"],20);echo'<p>
<input type="submit" value="',lang(16),'">
';if($ca!="")echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,$ca));echo
input_token(),'</form>
';}elseif(isset($_GET["sequence"])){$ea=$_GET["sequence"];$K=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);$B=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($ea),$_,lang(233));elseif($ea=="")query_redirect("CREATE SEQUENCE ".idf_escape($B),$_,lang(234));elseif($ea!=$B)query_redirect("ALTER SEQUENCE ".idf_escape($ea)." RENAME TO ".idf_escape($B),$_,lang(235));else
redirect($_);}page_header($ea!=""?lang(236).": ".h($ea):lang(237),$m);if(!$K)$K["name"]=$ea;echo'
<form action="" method="post">
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(16),'">
';if($ea!="")echo"<input type='submit' name='drop' value='".lang(132)."'>".confirm(lang(183,$ea))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["type"])){$fa=$_GET["type"];$K=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($fa),$_,lang(238));else
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,lang(239));}page_header($fa!=""?lang(240).": ".h($fa):lang(241),$m);if(!$K)$K["as"]="AS ";echo'
<form action="" method="post">
<p>
';if($fa!=""){$rj=driver()->types();$Dc=type_values($rj[$fa]);if($Dc)echo"<code class='jush-".JUSH."'>ENUM (".h($Dc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".lang(132)."'>".confirm(lang(183,$fa))."\n";}else{echo
lang(193).": <input name='name' value='".h($K['name'])."' autocapitalize='off'>\n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$K["as"]);echo"<p><input type='submit' value='".lang(16)."'>\n";}echo
input_token(),'</form>
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$B=$_GET["name"];$K=$_POST;if($K&&!$m){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$B",($K["drop"]?"":$K["clause"]));else{$I=($B==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($B)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(242):($B!=""?lang(243):lang(244))),$I);}page_header(($B!=""?lang(245).": ".h($B):lang(147)),$m,array("table"=>$a));if(!$K){$cb=driver()->checkConstraints($a);$K=array("name"=>$B,"clause"=>$cb[$B]);}echo'
<form action="" method="post">
<p>';if(JUSH!="sqlite")echo
lang(193).': <input name="name" value="'.h($K["name"]).'" data-maxlength="64" autocapitalize="off"> ';echo
doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'<p>';textarea("clause",$K["clause"]);echo'<p><input type="submit" value="',lang(16),'">
';if($B!="")echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,$B));echo
input_token(),'</form>
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$B="$_GET[name]";$nj=trigger_options();$K=(array)trigger($B,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$nj["Timing"])&&in_array($_POST["Event"],$nj["Event"])&&in_array($_POST["Type"],$nj["Type"])){$Wf=" ON ".table($a);$kc="DROP TRIGGER ".idf_escape($B).(JUSH=="pgsql"?$Wf:"");$We=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($kc,$We,lang(246));else{if($B!="")queries($kc);queries_redirect($We,($B!=""?lang(247):lang(248)),queries(create_trigger($Wf,$_POST)));if($B!="")queries(create_trigger($Wf,$K+array("Type"=>reset($nj["Type"]))));}}$K=$_POST;}page_header(($B!=""?lang(249).": ".h($B):lang(250)),$m,array("table"=>$a));echo'
<form action="" method="post" id="form">
<table class="layout">
<tr><th>',lang(251),'<td>',html_select("Timing",$nj["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>',lang(252),'<td>',html_select("Event",$nj["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$nj["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>',lang(49),'<td>',html_select("Type",$nj["Type"],$K["Type"]),'</table>
<p>',lang(193),': <input name="Trigger" value="',h($K["Trigger"]),'" data-maxlength="64" autocapitalize="off">
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$K["Statement"]);echo'<p>
<input type="submit" value="',lang(16),'">
';if($B!="")echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,$B));echo
input_token(),'</form>
';}elseif(isset($_GET["user"])){$ga=$_GET["user"];$dh=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$Bb)$dh[$Bb][$K["Privilege"]]=$K["Comment"];}$dh["Server Admin"]+=$dh["File access on server"];$dh["Databases"]["Create routine"]=$dh["Procedures"]["Create routine"];unset($dh["Procedures"]["Create routine"]);$dh["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$dh["Columns"][$X]=$dh["Tables"][$X];unset($dh["Server Admin"]["Usage"]);foreach($dh["Tables"]as$y=>$X)unset($dh["Databases"][$y]);$Ef=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Ef[$X]=(array)$Ef[$X]+idx($_POST["grants"],$y,array());}$xd=array();$Uf="";if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($ga)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$df,PREG_SET_ORDER)){foreach($df
as$X){if($X[1]!="USAGE")$xd["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$xd["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$A))$Uf=$A[1];}}if($_POST&&!$m){$Vf=(isset($_GET["host"])?q($ga)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Vf",ME."privileges=",lang(253));else{$Gf=q($_POST["user"])."@".q($_POST["host"]);$Ig=$_POST["pass"];if($Ig!=''&&!$_POST["hashed"]&&!min_version(8)){$Ig=get_val("SELECT PASSWORD(".q($Ig).")");$m=!$Ig;}$Gb=false;if(!$m){if($Vf!=$Gf){$Gb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Gf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Ig));$m=!$Gb;}elseif($Ig!=$Uf)queries("SET PASSWORD FOR $Gf = ".q($Ig));}if(!$m){$Ah=array();foreach($Ef
as$Of=>$wd){if(isset($_GET["grant"]))$wd=array_filter($wd);$wd=array_keys($wd);if(isset($_GET["grant"]))$Ah=array_diff(array_keys(array_filter($Ef[$Of],'strlen')),$wd);elseif($Vf==$Gf){$Sf=array_keys((array)$xd[$Of]);$Ah=array_diff($Sf,$wd);$wd=array_diff($wd,$Sf);unset($xd[$Of]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$Of,$A)&&(!grant("REVOKE",$Ah,$A[2]," ON $A[1] FROM $Gf")||!grant("GRANT",$wd,$A[2]," ON $A[1] TO $Gf"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($Vf!=$Gf)queries("DROP USER $Vf");elseif(!isset($_GET["grant"])){foreach($xd
as$Of=>$Ah){if(preg_match('~^(.+)(\(.*\))?$~U',$Of,$A))grant("REVOKE",array_keys($Ah),$A[2]," ON $A[1] FROM $Gf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(254):lang(255)),!$m);if($Gb)connection()->query("DROP USER $Gf");}}page_header((isset($_GET["host"])?lang(35).": ".h("$ga@$_GET[host]"):lang(155)),$m,array("privileges"=>array('',lang(71))));$K=$_POST;if($K)$xd=$Ef;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Uf;if($Uf!="")$K["hashed"]=true;$xd[(DB==""||$xd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
<table class="layout">
<tr><th>',lang(34),'<td><input name="host" data-maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
<tr><th>',lang(35),'<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
<tr><th>',lang(36),'<td><input name="pass" id="pass" value="',h($K["pass"]),'" autocomplete="new-password">
',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$K["hashed"],lang(256),"typePassword(this.form['pass'], this.checked);")),'</table>
',"<table class='odds'>\n","<thead><tr><th colspan='2'>".lang(71).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($xd
as$Of=>$wd){echo'<th>'.($Of!="*.*"?"<input name='objects[$t]' value='".h($Of)."' size='10' autocapitalize='off'>":input_hidden("objects[$t]","*.*")."*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(34),"Databases"=>lang(37),"Tables"=>lang(138),"Columns"=>lang(48),"Procedures"=>lang(257),)as$Bb=>$ac){foreach((array)$dh[$Bb]as$ch=>$qb){echo"<tr><td".($ac?">$ac<td":" colspan='2'").' lang="en" title="'.h($qb).'">'.h($ch);$t=0;foreach($xd
as$Of=>$wd){$B="'grants[$t][".h(strtoupper($ch))."]'";$Y=$wd[strtoupper($ch)];if($Bb=="Server Admin"&&$Of!=(isset($xd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$B><option><option value='1'".($Y?" selected":"").">".lang(258)."<option value='0'".($Y=="0"?" selected":"").">".lang(259)."</select>";else
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$B value='1'".($Y?" checked":"").($ch=="All privileges"?" id='grants-$t-all'>":">".($ch=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$t-all'); };"))),"</label>";$t++;}}}echo"</table>\n",'<p>
<input type="submit" value="',lang(16),'">
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="',lang(132),'">',confirm(lang(183,"$ga@$_GET[host]"));echo
input_token(),'</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$Ge=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Ge++;}queries_redirect(ME."processlist=",lang(260,$Ge),$Ge||!$_POST["kill"]);}}page_header(lang(121),$m);echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap checkable odds">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(adminer()->processList()as$t=>$K){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
as$y=>$X)echo"<th>$y".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($y),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$K[JUSH=="sql"?"Id":"pid"],0):"");foreach($K
as$y=>$X)echo"<td>".((JUSH=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$y=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$y=="sql_text"&&$X!="")?"<code class='jush-".JUSH."'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($K["db"]!=""?"db=".urlencode($K["db"])."&":"")."sql=".urlencode($X)).'">'.lang(261).'</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
';if(support("kill"))echo($t+1)."/".lang(262,max_connections()),"<p><input type='submit' value='".lang(263)."'>\n";echo
input_token(),'</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$o=fields($a);$nd=column_foreign_keys($a);$Qf=$S["Oid"];$pa=get_settings("adminer_import");$Bh=array();$e=array();$Ph=array();$ig=array();$Si="";foreach($o
as$y=>$n){$B=adminer()->fieldName($n);$Cf=html_entity_decode(strip_tags($B),ENT_QUOTES);if(isset($n["privileges"]["select"])&&$B!=""){$e[$y]=$Cf;if(is_shortable($n))$Si=adminer()->selectLengthProcess();}if(isset($n["privileges"]["where"])&&$B!="")$Ph[$y]=$Cf;if(isset($n["privileges"]["order"])&&$B!="")$ig[$y]=$Cf;$Bh+=$n["privileges"];}list($M,$yd)=adminer()->selectColumnsProcess($e,$x);$M=array_unique($M);$yd=array_unique($yd);$we=count($yd)<count($M);$Z=adminer()->selectSearchProcess($o,$x);$hg=adminer()->selectOrderProcess($o,$x);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$wj=>$K){$ya=convert_field($o[key($K)]);$M=array($ya?:idf_escape(key($K)));$Z[]=where_check($wj,$o);$J=driver()->select($a,$M,$Z,$M);if($J)echo
first($J->fetch_row());}exit;}$G=$yj=array();foreach($x
as$w){if($w["type"]=="PRIMARY"){$G=array_flip($w["columns"]);$yj=($M?$G:array());foreach($yj
as$y=>$X){if(in_array(idf_escape($y),$M))unset($yj[$y]);}break;}}if($Qf&&!$G){$G=$yj=array($Qf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($Qf));}if($_POST&&!$m){$Xj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$cb=array();foreach($_POST["check"]as$Ya)$cb[]=where_check($Ya,$o);$Xj[]="((".implode(") OR (",$cb)."))";}$Xj=($Xj?"\nWHERE ".implode(" AND ",$Xj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$rd=($M?implode(", ",$M):"*").convert_fields($e,$o,$M)."\nFROM ".table($a);$_d=($yd&&$we?"\nGROUP BY ".implode(", ",$yd):"").($hg?"\nORDER BY ".implode(", ",$hg):"");$H="SELECT $rd$Xj$_d";if(is_array($_POST["check"])&&!$G){$uj=array();foreach($_POST["check"]as$X)$uj[]="(SELECT".limit($rd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$_d,1).")";$H=implode(" UNION ALL ",$uj);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$nd)){if($_POST["save"]||$_POST["delete"]){$I=true;$qa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$B=>$X){$X=process_input($o[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($G&&is_array($_POST["check"]))||$we){$I=($_POST["delete"]?driver()->delete($a,$Xj):($_POST["clone"]?queries("INSERT $H$Xj".driver()->insertReturning($a)):driver()->update($a,$O,$Xj)));$qa=connection()->affected_rows;if(is_object($I))$qa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$Wj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$I=($_POST["delete"]?driver()->delete($a,$Wj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Wj)):driver()->update($a,$O,$Wj,1)));if(!$I)break;$qa+=connection()->affected_rows;}}}$pf=lang(264,$qa);if($_POST["clone"]&&$I&&$qa==1){$Me=last_id($I);if($Me)$pf=lang(176," $Me");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$pf,$I);if(!$_POST["delete"]){$Ug=(array)$_POST["fields"];edit_form($a,array_intersect_key($o,$Ug),$Ug,!$_POST["clone"],$m);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(265);else{$I=true;$qa=0;foreach($_POST["val"]as$wj=>$K){$O=array();foreach($K
as$y=>$X){$y=bracket_escape($y,true);$O[idf_escape($y)]=(preg_match('~char|text~',$o[$y]["type"])||$X!=""?adminer()->processInput($o[$y],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($wj,$o),($we||$G?0:1)," ");if(!$I)break;$qa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang(264,$qa),$I);}}elseif(!is_string($bd=get_file("csv_file",true)))$m=upload_error($bd);elseif(!preg_match('~~u',$bd))$m=lang(266);else{save_settings(array("output"=>$pa["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$mb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$bd,$df);$qa=count($df[0]);driver()->begin();$Vh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($df[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Vh]*)$Vh~",$X.$Vh,$ef);if(!$y&&!array_diff($ef[1],$mb)){$mb=$ef[1];$qa--;}else{$O=array();foreach($ef[1]as$t=>$jb)$O[idf_escape($mb[$t])]=($jb==""&&$o[$mb[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$jb)?str_replace('""','"',substr($jb,1,-1)):$jb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$G));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang(267,$qa),$I);driver()->rollback();}}}$Di=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(53).": $Di",$m);$O=null;if(isset($Bh["insert"])||!support("table")){$zg=array();foreach((array)$_GET["where"]as$X){if(isset($nd[$X["col"]])&&count($nd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$zg["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$zg?"&".http_build_query($zg):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".lang(268).($o?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Ph,$x);adminer()->selectOrderPrint($hg,$ig,$x);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($Si);adminer()->selectActionPrint($x);echo"</form>\n";$D=$_GET["page"];$qd=null;if($D=="last"){$qd=get_val(count_rows($a,$Z,$we,$yd));$D=floor(max(0,intval($qd)-1)/$z);}$Qh=$M;$zd=$yd;if(!$Qh){$Qh[]="*";$Cb=convert_fields($e,$o,$M);if($Cb)$Qh[]=substr($Cb,2);}foreach($M
as$y=>$X){$n=$o[idf_unescape($X)];if($n&&($ya=convert_field($n)))$Qh[$y]="$ya AS $X";}if(!$we&&$yj){foreach($yj
as$y=>$X){$Qh[]=idf_escape($y);if($zd)$zd[]=idf_escape($y);}}$I=driver()->select($a,$Qh,$Z,$zd,$hg,$z,$D,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$D)$I->seek($z*$D);$xc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($D&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$yd&&$we&&JUSH=="sql")$qd=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".lang(14)."\n";else{$Ga=adminer()->backwardKeys($a,$Di);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$yd&&$M?"":"<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")."'>".lang(269)."</a>");$Df=array();$td=array();reset($M);$mh=1;foreach($L[0]as$y=>$X){if(!isset($yj[$y])){$X=idx($_GET["columns"],key($M))?:array();$n=$o[$M?($X?$X["col"]:current($M)):$y];$B=($n?adminer()->fieldName($n,$mh):($X["fun"]?"*":h($y)));if($B!=""){$mh++;$Df[$y]=$B;$d=idf_escape($y);$Pd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$ac="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($y))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$sd=apply_sql_function($X["fun"],$B);$ii=isset($n["privileges"]["order"])||$sd;echo($ii?"<a href='".h($Pd.($hg[0]==$d||$hg[0]==$y?$ac:''))."'>$sd</a>":$sd),"<span class='column hidden'>";if($ii)echo"<a href='".h($Pd.$ac)."' title='".lang(59)."' class='text'> ↓</a>";if(!$X["fun"]&&isset($n["privileges"]["where"]))echo'<a href="#fieldset-search" title="'.lang(56).'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($y)."');");echo"</span>";}$td[$y]=$X["fun"];next($M);}}$Se=array();if($_GET["modify"]){foreach($L
as$K){foreach($K
as$y=>$X)$Se[$y]=max($Se[$y],min(40,strlen(utf8_decode($X))));}}echo($Ga?"<th>".lang(270):"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$nd)as$Bf=>$K){$vj=unique_array($L[$Bf],$x);if(!$vj){$vj=array();reset($M);foreach($L[$Bf]as$y=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$vj[$y]=$X;next($M);}}$wj="";foreach($vj
as$y=>$X){$n=(array)$o[$y];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$n["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$n["collation"])?$y:"CONVERT($y USING ".charset(connection()).")").")";$X=md5($X);}$wj
.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($y));}echo"<tr>".(!$yd&&$M?"":"<td>".checkbox("check[]",substr($wj,1),in_array(substr($wj,1),(array)$_POST["check"])).($we||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$wj)."' class='edit'>".lang(271)."</a>"));reset($M);foreach($K
as$y=>$X){if(isset($Df[$y])){$d=current($M);$n=(array)$o[$y];$X=driver()->value($X,$n);if($X!=""&&(!isset($xc[$y])||$xc[$y]!=""))$xc[$y]=(is_mail($X)?$Df[$y]:"");$_="";if(is_blob($n)&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$wj;if(!$_&&$X!==null){foreach((array)$nd[$y]as$q){if(count($nd[$y])==1||end($q["source"])==$y){$_="";foreach($q["source"]as$t=>$ji)$_
.=where_link($t,$q["target"][$t],$L[$Bf][$ji]);$_=($q["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($q["db"]),ME):ME).'select='.urlencode($q["table"]).$_;if($q["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($q["ns"]),$_);if(count($q["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$vj))$_
.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($vj
as$Ce=>$W)$_
.=where_link($t++,$Ce,$W);}$Qd=select_value($X,$_,$n,$Si);$u=h("val[$wj][".bracket_escape($y)."]");$Vg=idx(idx($_POST["val"],$wj),bracket_escape($y));$sc=!is_array($K[$y])&&is_utf8($Qd)&&$L[$Bf][$y]==$K[$y]&&!$td[$y]&&!$n["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$o[idf_unescape($A[2])]["type"]:$n["type"]);$Qi=preg_match('~text|json|lob~',$U);$xe=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$u'".($xe&&($X===null||is_numeric(strip_tags($Qd))||$U=="money")?" class='number'":"");if(($_GET["modify"]&&$sc&&$X!==null)||$Vg!==null){$Cd=h($Vg!==null?$Vg:$K[$y]);echo">".($Qi?"<textarea name='$u' cols='30' rows='".(substr_count($K[$y],"\n")+1)."'>$Cd</textarea>":"<input name='$u' value='$Cd' size='$Se[$y]'>");}else{$Ye=strpos($Qd,"<i>…</i>");echo" data-text='".($Ye?2:($Qi?1:0))."'".($sc?"":" data-warning='".h(lang(272))."'").">$Qd";}}next($M);}if($Ga)echo"<td>";adminer()->backwardKeysPrint($Ga,$L[$Bf]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$D){$Kc=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$D)))$qd=($D?$D*$z:0)+count($L);elseif(JUSH!="sql"||!$we){$qd=($we?false:found_rows($S,$Z));if(intval($qd)<max(1e4,2*($D+1)*$z))$qd=first(slow_query(count_rows($a,$Z,$we,$yd)));else$Kc=false;}}$xg=($z&&($qd===false||$qd>$z||$D));if($xg)echo(($qd===false?count($L)+1:$qd-$D*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($D+1)).'" class="loadmore">'.lang(273).'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $z, '".lang(274)."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($xg){$if=($qd===false?$D+(count($L)>=$z?2:1):floor(($qd-1)/$z));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".lang(275)."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".lang(275)."', '".($D+1)."')); return false; };"),pagination(0,$D).($D>5?" …":"");for($t=max(1,$D-4);$t<min($if,$D+5);$t++)echo
pagination($t,$D);if($if>0)echo($D+5<$if?" …":""),($Kc&&$qd!==false?pagination($if,$D):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$if'>".lang(276)."</a>");}else
echo"<legend>".lang(275)."</legend>",pagination(0,$D).($D>1?" …":""),($D?pagination($D,$D):""),($if>$D?pagination($D+1,$D).($if>$D+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".lang(277)."</legend>";$hc=($Kc?"":"~ ").$qd;$ag="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hc' : checked); selectCount('selected2', this.checked || !checked ? '$hc' : checked);";echo
checkbox("all",1,0,($qd!==false?($Kc?"":"~ ").lang(159,$qd):""),$ag)."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>',lang(269),'</legend><div>
<input type="submit" value="',lang(16),'"',($_GET["modify"]?'':' title="'.lang(265).'"'),'>
</div></fieldset>
<fieldset><legend>',lang(131),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',lang(12),'">
<input type="submit" name="clone" value="',lang(261),'">
<input type="submit" name="delete" value="',lang(20),'">',confirm(),'</div></fieldset>
';$od=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($od['sql']);break;}}if($od){print_fieldset("export",lang(76)." <span id='selected2'></span>");$ug=adminer()->dumpOutput();echo($ug?html_select("output",$ug,$pa["output"])." ":""),html_select("format",$od,$pa["format"])," <input type='submit' name='export' value='".lang(76)."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($xc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import'>".lang(75)."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ",file_input("<input type='file' name='csv_file'> ".html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$pa["format"])." <input type='submit' name='import' value='".lang(75)."'>"),"</span>";echo
input_token(),"</form>\n",(!$yd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(123):lang(122));$Nj=($P?show_status():show_variables());if(!$Nj)echo"<p class='message'>".lang(14)."\n";else{echo"<table>\n";foreach($Nj
as$K){echo"<tr>";$y=array_shift($K);echo"<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($y)."</code>";foreach($K
as$X)echo"<td>".nl_br(h($X));}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$_i=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$B=>$S){json_row("Comment-$B",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$y)json_row("$y-$B",h($S[$y]));foreach($_i+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=format_number($S[$y]);if($X>=0)json_row("$y-$B",($y=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($_i[$y]))$_i[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))json_row("$y-$B","?");}}}foreach($_i
as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Ki=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Ki&&!$m&&!$_POST["search"]){$I=true;$pf="";if(JUSH=="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"])$I=truncate_tables($_POST["tables"]);$pf=lang(278);}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$pf=lang(279);}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$pf=lang(280);}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$pf=lang(281);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$pf
.="<b>".h($R)."</b>: ".h($K["integrity_check"])."<br>";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$pf=lang(282);}elseif(!$_POST["tables"])$pf=lang(11);elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$pf
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$pf,$I);}page_header(($_GET["ns"]==""?lang(37).": ".h(DB):lang(79).": ".h($_GET["ns"])),$m,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".lang(283)."</h3>\n";$Ji=tables_list();if(!$Ji)echo"<p class='message'>".lang(11)."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".lang(284)." <span id='selected2'></span></legend><div>",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," <input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".lang(56)."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'>\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>'.lang(138),'<td>'.lang(285).doc_link(array('sql'=>'storage-engines.html')),'<td>'.lang(127).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.lang(286).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.lang(287).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.lang(288).doc_link(array('sql'=>'show-table-status.html')),'<td>'.lang(51).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.lang(289).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.lang(50).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$T=0;foreach($Ji
as$B=>$U){$Qj=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$B);echo'<tr><td>'.checkbox(($Qj?"views[]":"tables[]"),$B,in_array("$B",$Ki,true),"","","",$u),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($B)."' title='".lang(42)."' id='$u'>".h($B).'</a>':h($B));if($Qj&&!preg_match('~materialized~i',$U)){$Wi=lang(137);echo'<td colspan="6">'.(support("view")?"<a href='".h(ME)."view=".urlencode($B)."' title='".lang(44)."'>$Wi</a>":$Wi),'<td align="right"><a href="'.h(ME)."select=".urlencode($B).'" title="'.lang(41).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(43)),"Index_length"=>array("indexes",lang(141)),"Data_free"=>array("edit",lang(45)),"Auto_increment"=>array("auto_increment=1&create",lang(43)),"Rows"=>array("select",lang(41)),)as$y=>$_){$u=" id='$y-".h($B)."'";echo($_?"<td align='right'>".(support("table")||$y=="Rows"||(support("indexes")&&$y!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($B)."'$u title='$_[1]'>?</a>":"<span$u>?</span>"):"<td id='$y-".h($B)."'>");}$T++;}echo(support("comment")?"<td id='Comment-".h($B)."'>":""),"\n";}echo"<tr><td><th>".lang(262,count($Ji)),"<td>".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo"<td align='right' id='sum-$y'>";echo"\n","</table>\n",script("ajaxSetHtml('".js_escape(ME)."script=db');"),"</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$Kj="<input type='submit' value='".lang(290)."'> ".on_help("'VACUUM'");$dg="<input type='submit' name='optimize' value='".lang(291)."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".lang(131)." <span id='selected'></span></legend><div>".(JUSH=="sqlite"?$Kj."<input type='submit' name='check' value='".lang(292)."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Kj.$dg:(JUSH=="sql"?"<input type='submit' value='".lang(293)."'> ".on_help("'ANALYZE TABLE'").$dg."<input type='submit' name='check' value='".lang(292)."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".lang(294)."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".lang(295)."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".lang(132)."'>".on_help("'DROP TABLE'").confirm()."\n";$j=(support("scheme")?adminer()->schemas():adminer()->databases());echo"</div></fieldset>\n";$Nh="";if(count($j)!=1&&JUSH!="sqlite"){echo"<fieldset><legend>".lang(296)." <span id='selected3'></span></legend><div>";$k=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo($j?html_select("target",$j,$k):'<input name="target" value="'.h($k).'" autocapitalize="off">'),"</label> <input type='submit' name='move' value='".lang(297)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(298)."'> ".checkbox("overwrite",1,$_POST["overwrite"],lang(299)):""),"</div></fieldset>\n";$Nh=" selectCount('selected3', formChecked(this, /^(tables|views)\[/));";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")."$Nh }"),input_token(),"</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo"<p class='links'><a href='".h(ME)."create='>".lang(77)."</a>\n",(support("view")?"<a href='".h(ME)."view='>".lang(215)."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".lang(72)."</h3>\n";$Fh=routines();if($Fh){echo"<table class='odds'>\n",'<thead><tr><th>'.lang(193).'<td>'.lang(49).'<td>'.lang(232)."<td></thead>\n";foreach($Fh
as$K){$B=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["SPECIFIC_NAME"]).$B).'">'.h($K["ROUTINE_NAME"]).'</a>','<td>'.h($K["ROUTINE_TYPE"]),'<td>'.h($K["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["SPECIFIC_NAME"]).$B).'">'.lang(144)."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.lang(231).'</a>':'').'<a href="'.h(ME).'function=">'.lang(230)."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".lang(73)."</h3>\n";$Yh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Yh){echo"<table class='odds'>\n","<thead><tr><th>".lang(193)."</thead>\n";foreach($Yh
as$X)echo"<tr><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".lang(237)."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".lang(6)."</h3>\n";$Ij=types();if($Ij){echo"<table class='odds'>\n","<thead><tr><th>".lang(193)."</thead>\n";foreach($Ij
as$X)echo"<tr><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."type='>".lang(241)."</a>\n";}if(support("event")){echo"<h3 id='events'>".lang(74)."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".lang(193)."<td>".lang(300)."<td>".lang(221)."<td>".lang(222)."<td></thead>\n";foreach($L
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?lang(301)."<td>".$K["Execute at"]:lang(223)." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.lang(144).'</a>';echo"</table>\n";$Ic=get_val("SELECT @@event_scheduler");if($Ic&&$Ic!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Ic)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.lang(220)."</a>\n";}}}}page_footer();