1677 lines
No EOL
309 KiB
PHP
1677 lines
No EOL
309 KiB
PHP
<?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.1.1
|
||
*/namespace
|
||
Adminer;const
|
||
VERSION="5.1.1";error_reporting(24575);set_error_handler(function($xc,$zc){return!!preg_match('~^Undefined (array key|offset|index)~',$zc);},E_WARNING|E_NOTICE);$Tc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Tc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Oi=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Oi)$$X=$Oi;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
|
||
connection($g=null){return($g?:Db::$be);}function
|
||
adminer(){return
|
||
Adminer::$be;}function
|
||
driver(){return
|
||
Driver::$be;}function
|
||
connect(array$Bb){$J=Driver::connect($Bb[0],$Bb[1],$Bb[2]);return(is_object($J)?$J:null);}function
|
||
idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$te=substr($u,-1);return
|
||
str_replace($te.$te,$te,substr($u,1,-1));}function
|
||
q($Q){return
|
||
connection()->quote($Q);}function
|
||
escape_string($X){return
|
||
substr(q($X),1,-1);}function
|
||
idx($va,$x,$k=null){return($va&&array_key_exists($x,$va)?$va[$x]:$k);}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$_g,$Tc=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($x,$X)=each($_g)){foreach($X
|
||
as$me=>$W){unset($_g[$x][$me]);if(is_array($W)){$_g[$x][stripslashes($me)]=$W;$_g[]=&$_g[$x][stripslashes($me)];}else$_g[$x][stripslashes($me)]=($Tc?$W:stripslashes($W));}}}}function
|
||
bracket_escape($u,$Ca=false){static$zi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
|
||
strtr($u,($Ca?array_flip($zi):$zi));}function
|
||
min_version($fj,$Ee="",$g=null){$g=connection($g);$th=$g->server_info;if($Ee&&preg_match('~([\d.]+)-MariaDB~',$th,$B)){$th=$B[1];$fj=$Ee;}return$fj&&version_compare($th,$fj)>=0;}function
|
||
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
|
||
ini_bool($Wd){$X=ini_get($Wd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
|
||
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
|
||
set_password($ej,$N,$V,$F){$_SESSION["pwds"][$ej][$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,$m=0,$qb=null){$qb=connection($qb);$I=$qb->query($H);if(!is_object($I))return
|
||
false;$K=$I->fetch_row();return($K?$K[$m]: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,$g=null,$wh=true){$g=connection($g);$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($wh)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
|
||
get_rows($H,$g=null,$l="<p class='error'>"){$qb=connection($g);$J=array();$I=$qb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$J;}function
|
||
unique_array($K,array$w){foreach($w
|
||
as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$J=array();foreach($v["columns"]as$x){if(!isset($K[$x]))continue
|
||
2;$J[$x]=$K[$x];}return$J;}}}function
|
||
escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return
|
||
idf_escape($x);}function
|
||
where(array$Z,array$n=array()){$J=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$Rc=$m["type"];$J[]=$d.(JUSH=="sql"&&$Rc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Rc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Rc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$J[]=escape_key($x)." IS NULL";return
|
||
implode(" AND ",$J);}function
|
||
where_check($X,array$n=array()){parse_str($X,$Va);remove_slashes(array(&$Va));return
|
||
where($Va,$n);}function
|
||
where_link($s,$d,$Y,$Bf="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($d)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$Bf:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
|
||
convert_fields(array$e,array$n,array$M=array()){$J="";foreach($e
|
||
as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$wa=convert_field($n[$x]);if($wa)$J
|
||
.=", $wa AS ".idf_escape($x);}return$J;}function
|
||
cookie($C,$Y,$_e=2592000){header("Set-Cookie: $C=".urlencode($Y).($_e?"; expires=".gmdate("D, d M Y H:i:s",time()+$_e)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
|
||
get_settings($zb){parse_str($_COOKIE[$zb],$xh);return$xh;}function
|
||
get_setting($x,$zb="adminer_settings"){$xh=get_settings($zb);return$xh[$x];}function
|
||
save_settings(array$xh,$zb="adminer_settings"){cookie($zb,http_build_query($xh+get_settings($zb)));}function
|
||
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
|
||
stop_session($bd=false){$Wi=ini_bool("session.use_cookies");if(!$Wi||$bd){session_write_close();if($Wi&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
|
||
set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function
|
||
auth_url($ej,$N,$V,$j=null){$Si=remove_from_uri(implode("|",array_keys(SqlDriver::$ac))."|username|ext|".($j!==null?"db|":"").($ej=='mssql'||$ej=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Si,$B);return"$B[1]?".(sid()?SID."&":"").($ej!="server"||$N!=""?urlencode($ej)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($B[2]?"&$B[2]":"");}function
|
||
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
redirect($A,$Re=null){if($Re!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$Re;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function
|
||
query_redirect($H,$A,$Re,$Ig=true,$Dc=true,$Mc=false,$mi=""){if($Dc){$Lh=microtime(true);$Mc=!connection()->query($H);$mi=format_time($Lh);}$Fh=($H?adminer()->messageQuery($H,$mi,$Mc):"");if($Mc){adminer()->error
|
||
.=error().$Fh.script("messagesPrint();")."<br>";return
|
||
false;}if($Ig)redirect($A,$Re.$Fh);return
|
||
true;}class
|
||
Queries{static$Dg=array();static$Lh=0;}function
|
||
queries($H){if(!Queries::$Lh)Queries::$Lh=microtime(true);Queries::$Dg[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return
|
||
connection()->query($H);}function
|
||
apply_queries($H,array$T,$_c='Adminer\table'){foreach($T
|
||
as$R){if(!queries("$H ".$_c($R)))return
|
||
false;}return
|
||
true;}function
|
||
queries_redirect($A,$Re,$Ig){$Dg=implode("\n",Queries::$Dg);$mi=format_time(Queries::$Lh);return
|
||
query_redirect($Dg,$A,$Re,$Ig,false,!$Ig,$mi);}function
|
||
format_time($Lh){return
|
||
sprintf('%.3f s',max(0,microtime(true)-$Lh));}function
|
||
relative_uri(){return
|
||
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
|
||
remove_from_uri($Yf=""){return
|
||
substr(preg_replace("~(?<=[?&])($Yf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
|
||
get_file($x,$Nb=false,$Rb=""){$Sc=$_FILES[$x];if(!$Sc)return
|
||
null;foreach($Sc
|
||
as$x=>$X)$Sc[$x]=(array)$X;$J='';foreach($Sc["error"]as$x=>$l){if($l)return$l;$C=$Sc["name"][$x];$ui=$Sc["tmp_name"][$x];$vb=file_get_contents($Nb&&preg_match('~\.gz$~',$C)?"compress.zlib://$ui":$ui);if($Nb){$Lh=substr($vb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Lh))$vb=iconv("utf-16","utf-8",$vb);elseif($Lh=="\xEF\xBB\xBF")$vb=substr($vb,3);}$J
|
||
.=$vb;if($Rb)$J
|
||
.=(preg_match("($Rb\\s*\$)",$vb)?"":$Rb)."\n\n";}return$J;}function
|
||
upload_error($l){$Me=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?'Unable to upload a file.'.($Me?" ".sprintf('Maximum allowed file size is %sB.',$Me):""):'File does not exist.');}function
|
||
repeat_pattern($ig,$y){return
|
||
str_repeat("$ig{0,65535}",$y/65535)."$ig{0,".($y%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,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
|
||
friendly_url($X){return
|
||
preg_replace('~\W~i','-',$X);}function
|
||
table_status1($R,$Nc=false){$J=table_status($R,$Nc);return($J?reset($J):array("Name"=>$R));}function
|
||
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$J[$X][]=$p;}return$J;}function
|
||
fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,true);$J[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($x==driver()->primary),);}return$J;}function
|
||
dump_headers($Jd,$bf=false){$J=adminer()->dumpHeaders($Jd,$bf);$Uf=$_POST["output"];if($Uf!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Jd).".$J".($Uf!="file"&&preg_match('~^[0-9a-z]+$~',$Uf)?".$Uf":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function
|
||
dump_csv(array$K){foreach($K
|
||
as$x=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$K[$x]='"'.str_replace('"','""',$X).'"';}echo
|
||
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
|
||
apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$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{$o=@tempnam("","");if(!$o)return'';$J=dirname($o);unlink($o);}}return$J;}function
|
||
file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function
|
||
file_write_unlock($q,$Hb){rewind($q);fwrite($q,$Hb);ftruncate($q,strlen($Hb));file_unlock($q);}function
|
||
file_unlock($q){flock($q,LOCK_UN);fclose($q);}function
|
||
first(array$va){return
|
||
reset($va);}function
|
||
password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$J=stream_get_contents($q);if(!$J){$J=rand_string();file_write_unlock($q,$J);}else
|
||
file_unlock($q);return$J;}function
|
||
rand_string(){return
|
||
md5(uniqid(strval(mt_rand()),true));}function
|
||
select_value($X,$_,array$m,$li){if(is_array($X)){$J="";foreach($X
|
||
as$me=>$W)$J
|
||
.="<tr>".($X!=array_values($X)?"<th>".h($me):"")."<td>".select_value($W,$_,$m,$li);return"<table>$J</table>";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=adminer()->editVal($X,$m);if($J!==null){if(!is_utf8($J))$J="\0";elseif($li!=""&&is_shortable($m))$J=shorten_utf8($J,max(0,+$li));else$J=h($J);}return
|
||
adminer()->selectVal($J,$_,$m,$X);}function
|
||
is_mail($nc){$xa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Zb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ig="$xa+(\\.$xa+)*@($Zb?\\.)+$Zb";return
|
||
is_string($nc)&&preg_match("(^$ig(,\\s*$ig)*\$)i",$nc);}function
|
||
is_url($Q){$Zb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
|
||
preg_match("~^(https?)://($Zb?\\.)+$Zb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
|
||
is_shortable(array$m){return
|
||
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$m["type"]);}function
|
||
count_rows($R,array$Z,$ge,array$pd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($ge&&(JUSH=="sql"||count($pd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$pd).")$H":"SELECT COUNT(*)".($ge?" FROM (SELECT 1$H GROUP BY ".implode(", ",$pd).") x":$H));}function
|
||
slow_query($H){$j=adminer()->database();$ni=adminer()->queryTimeout();$Ah=driver()->slowQuery($H,$ni);$g=null;if(!$Ah&&support("kill")){$g=connect(adminer()->credentials());if($g&&($j==""||$g->select_db($j))){$pe=get_val(connection_id(),0,$g);echo
|
||
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$pe&token=".get_token()."'); }, 1000 * $ni);");}}ob_flush();flush();$J=@get_key_vals(($Ah?:$H),$g,false);if($g){echo
|
||
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
|
||
get_token(){$Gg=rand(1,1e6);return($Gg^$_SESSION["token"]).":$Gg";}function
|
||
verify_token(){list($vi,$Gg)=explode(":",$_POST["token"]);return($Gg^$_SESSION["token"])==$vi;}function
|
||
lzw_decompress($Ia){$Vb=256;$Ja=8;$eb=array();$Tg=0;$Ug=0;for($s=0;$s<strlen($Ia);$s++){$Tg=($Tg<<8)+ord($Ia[$s]);$Ug+=8;if($Ug>=$Ja){$Ug-=$Ja;$eb[]=$Tg>>$Ug;$Tg&=(1<<$Ug)-1;$Vb++;if($Vb>>$Ja)$Ja++;}}$Ub=range("\0","\xFF");$J="";$oj="";foreach($eb
|
||
as$s=>$db){$mc=$Ub[$db];if(!isset($mc))$mc=$oj.$oj[0];$J
|
||
.=$mc;if($s)$Ub[]=$oj.$mc[0];$oj=$mc;}return$J;}function
|
||
script($Ch,$yi="\n"){return"<script".nonce().">$Ch</script>$yi";}function
|
||
script_src($Ti){return"<script src='".h($Ti)."'".nonce()."></script>\n";}function
|
||
nonce(){return' nonce="'.get_nonce().'"';}function
|
||
input_hidden($C,$Y=""){return"<input type='hidden' name='".h($C)."' 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","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
|
||
nl_br($Q){return
|
||
str_replace("\n","<br>",$Q);}function
|
||
checkbox($C,$Y,$Ya,$re="",$Af="",$cb="",$se=""){$J="<input type='checkbox' name='$C' value='".h($Y)."'".($Ya?" checked":"").($se?" aria-labelledby='$se'":"").">".($Af?script("qsl('input').onclick = function () { $Af };",""):"");return($re!=""||$cb?"<label".($cb?" class='$cb'":"").">$J".h($re)."</label>":$J);}function
|
||
optionlist($Ff,$lh=null,$Xi=false){$J="";foreach($Ff
|
||
as$me=>$W){$Gf=array($me=>$W);if(is_array($W)){$J
|
||
.='<optgroup label="'.h($me).'">';$Gf=$W;}foreach($Gf
|
||
as$x=>$X)$J
|
||
.='<option'.($Xi||is_string($x)?' value="'.h($x).'"':'').($lh!==null&&($Xi||is_string($x)?(string)$x:$X)===$lh?' selected':'').'>'.h($X);if(is_array($W))$J
|
||
.='</optgroup>';}return$J;}function
|
||
html_select($C,array$Ff,$Y="",$_f="",$se=""){return"<select name='".h($C)."'".($se?" aria-labelledby='$se'":"").">".optionlist($Ff,$Y)."</select>".($_f?script("qsl('select').onchange = function () { $_f };",""):"");}function
|
||
html_radios($C,array$Ff,$Y=""){$J="";foreach($Ff
|
||
as$x=>$X)$J
|
||
.="<label><input type='radio' name='".h($C)."' value='".h($x)."'".($x==$Y?" checked":"").">".h($X)."</label>";return$J;}function
|
||
confirm($Re="",$mh="qsl('input')"){return
|
||
script("$mh.onclick = () => confirm('".($Re?js_escape($Re):'Are you sure?')."');","");}function
|
||
print_fieldset($t,$ye,$ij=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$ye</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($ij?"":" class='hidden'").">\n";}function
|
||
bold($La,$cb=""){return($La?" class='active $cb'":($cb?" class='$cb'":""));}function
|
||
js_escape($Q){return
|
||
addcslashes($Q,"\r\n'\\/");}function
|
||
pagination($E,$Eb){return" ".($E==$Eb?$E+1:'<a href="'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function
|
||
hidden_fields(array$_g,array$Md=array(),$tg=''){$J=false;foreach($_g
|
||
as$x=>$X){if(!in_array($x,$Md)){if(is_array($X))hidden_fields($X,array(),$x);else{$J=true;echo
|
||
input_hidden(($tg?$tg."[$x]":$x),$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
|
||
enum_input($U,$ya,array$m,$Y,$qc=null){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$He);$J=($qc!==null?"<label><input type='$U'$ya value='$qc'".((is_array($Y)?in_array($qc,$Y):$Y===$qc)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($He[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=(is_array($Y)?in_array($X,$Y):$Y===$X);$J
|
||
.=" <label><input type='$U'$ya value='".h($X)."'".($Ya?' checked':'').'>'.h(adminer()->editVal($X,$m)).'</label>';}return$J;}function
|
||
input(array$m,$Y,$r,$Ba=false){$C=h(bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$Y=json_encode($Y,128|64|256);$r="json";}$Sg=(JUSH=="mssql"&&$m["auto_increment"]);if($Sg&&!$_POST["save"])$r=null;$kd=(isset($_GET["select"])||$Sg?array("orig"=>'original'):array())+adminer()->editFunctions($m);$Wb=stripos($m["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$ya=" name='fields[$C]'$Wb".($Ba?" autofocus":"");$wc=driver()->enumLength($m);if($wc){$m["type"]="enum";$m["length"]=$wc;}echo
|
||
driver()->unconvertFunction($m)." ";$R=$_GET["edit"]?:$_GET["select"];if($m["type"]=="enum")echo
|
||
h($kd[""])."<td>".adminer()->editInput($R,$m,$ya,$Y);else{$xd=(in_array($r,$kd)||isset($kd[$r]));echo(count($kd)>1?"<select name='function[$C]'$Wb>".optionlist($kd,$r===null||$xd?$r:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($kd))).'<td>';$Yd=adminer()->editInput($R,$m,$ya,$Y);if($Yd!="")echo$Yd;elseif(preg_match('~bool~',$m["type"]))echo"<input type='hidden'$ya value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$ya value='1'>";elseif($m["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$He);foreach($He[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=in_array($X,explode(",",$Y),true);echo" <label><input type='checkbox' name='fields[$C][$s]' value='".h($X)."'".($Ya?' checked':'').">".h(adminer()->editVal($X,$m)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif($r=="json"||preg_match('~^jsonb?$~',$m["type"]))echo"<textarea$ya cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($ji=preg_match('~text|lob|memo~i',$m["type"]))||preg_match("~\n~",$Y)){if($ji&&JUSH!="sqlite")$ya
|
||
.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$ya
|
||
.=" cols='30' rows='$L'";}echo"<textarea$ya>".h($Y).'</textarea>';}else{$Ii=driver()->types();$Oe=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$B)?((preg_match("~binary~",$m["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$m["unsigned"]?1:0)):($Ii[$m["type"]]?$Ii[$m["type"]]+($m["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$m["type"]))$Oe+=7;echo"<input".((!$xd||$r==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".h($Y)."'".($Oe?" data-maxlength='$Oe'":"").(preg_match('~char|binary~',$m["type"])&&$Oe>20?" size='".($Oe>99?60:40)."'":"")."$ya>";}echo
|
||
adminer()->editHint($R,$m,$Y);$Uc=0;foreach($kd
|
||
as$x=>$X){if($x===""||!$X)break;$Uc++;}if($Uc&&count($kd)>1)echo
|
||
script("qsl('td').oninput = partial(skipOriginal, $Uc);");}}function
|
||
process_input(array$m){if(stripos($m["default"],"GENERATED ALWAYS AS ")===0)return;$u=bracket_escape($m["field"]);$r=idx($_POST["function"],$u);$Y=$_POST["fields"][$u];if($m["type"]=="enum"||driver()->enumLength($m)){if($Y==-1)return
|
||
false;if($Y=="")return"NULL";}if($m["auto_increment"]&&$Y=="")return
|
||
null;if($r=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?idf_escape($m["field"]):false);if($r=="NULL")return"NULL";if($m["type"]=="set")$Y=implode(",",(array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
|
||
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads")){$Sc=get_file("fields-$u");if(!is_string($Sc))return
|
||
false;return
|
||
driver()->quoteBinary($Sc);}return
|
||
adminer()->processInput($m,$Y,$r);}function
|
||
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$oh="<ul>\n";foreach(table_status('',true)as$R=>$S){$C=adminer()->tableName($S);if(isset($S["Engine"])&&$C!=""&&(!$_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()){$wg="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$C</a>";echo"$oh<li>".($I?$wg:"<p class='error'>$wg: ".error())."\n";$oh="";}}}echo($oh?"<p class='message'>".'No tables.':"</ul>")."\n";}function
|
||
on_help($kb,$zh=0){return
|
||
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $kb, $zh) }, onmouseout: helpMouseout});","");}function
|
||
edit_form($R,array$n,$K,$Ri,$l=''){$Xh=adminer()->tableName(table_status1($R,true));page_header(($Ri?'Edit':'Insert'),$l,array("select"=>array($R,$Xh)),$Xh);adminer()->editRowPrint($R,$n,$K,$Ri);if($K===false){echo"<p class='error'>".'No rows.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!$n)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$Ba=!$_POST;foreach($n
|
||
as$C=>$m){echo"<tr><th>".adminer()->fieldName($m);$k=idx($_GET["set"],bracket_escape($C));if($k===null){$k=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$Pg))$k=$Pg[1];if(JUSH=="sql"&&preg_match('~binary~',$m["type"]))$k=bin2hex($k);}$Y=($K!==null?($K[$C]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$m["type"])&&is_array($K[$C])?implode(",",$K[$C]):(is_bool($K[$C])?+$K[$C]:$K[$C])):(!$Ri&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$k)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$m);$r=($_POST["save"]?idx($_POST["function"],$C,""):($Ri&&preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$Ri&&$Y==$m["default"]&&preg_match('~^[\w.]+\(~',$Y))$r="SQL";if(preg_match("~time~",$m["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$r="now";}if($m["type"]=="uuid"&&$Y=="uuid()"){$Y="";$r="uuid";}if($Ba!==false)$Ba=($m["auto_increment"]||$r=="now"||$r=="uuid"?null:true);input($m,$Y,$r,$Ba);if($Ba)$Ba=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($n){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Ri?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($Ri?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."…', this); };"):"");}echo($Ri?"<input type='submit' name='delete' value='".'Delete'."'>".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,$y=80,$Rh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$y).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$y).")($)?)",$Q,$B);return
|
||
h($B[1]).$Rh.(isset($B[2])?"":"<i>…</i>");}function
|
||
icon($Id,$C,$Hd,$pi){return"<button type='submit' name='$C' title='".h($pi)."' class='icon icon-$Id'><span>$Hd</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");}if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
|
||
lzw_decompress("\0\0\0` \0<EFBFBD>\0\n @\0<EFBFBD>C<><10>\"\0`E<>Q<EFBFBD><51><01><1F>?<3F>tvM'<27>Jd<4A>d\\<19>b0\0<08>\"<13><>fӈ<66><D388>s5<73><35><EFBFBD><EFBFBD>A<EFBFBD>XPaJ<>0<18><><EFBFBD>8<>#R<>T<EFBFBD><54>z`<60>#.<2E><>c<EFBFBD>X<EFBFBD><58>Ȁ?<3F>-\0<05>Im?<3F>.<16>M<EFBFBD><16>\0ȯ(̉<><1E>/(%<25>\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08>б<EFBFBD><14><11>\"C<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<<3C><>f<EFBFBD>a<EFBFBD><61>:;NB<4E>q<EFBFBD>R;1Lf<4C>9<EFBFBD><39>u7\$)\$L;3<1B><>A<EFBFBD><41>`%<17>E<EFBFBD>!<21><><EFBFBD>e9&<26><08><>r4<72>M<EFBFBD><4D>A<EFBFBD><41>v2<76>\r&:iΖs<16><><06>0<EFBFBD><30>\"3<EFBFBD>Má<EFBFBD><EFBFBD><EFBFBD>-;<3B>L<EFBFBD>C@<40><>i:cs<63>,<2C>(a<>G#ã<11><>e<1D><0C><>ɐ<EFBFBD>9kS<6B>Ѻu<D1BA>><3E>d<06><><EFBFBD><EFBFBD>d<EFBFBD><64>c<EFBFBD>ñ<EFBFBD><C3B1>:6Z<36>c<EFBFBD>A<EFBFBD><41>rf<><66><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>Y<EFBFBD>N/<1B><>d<EFBFBD>9I<39>8<EFBFBD><38>7f\"<EFBFBD>V3Y<EFBFBD><EFBFBD><1E><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>-4U<34><1C><>oD:<3A>xjH<><48>b{<EFBFBD><EFBFBD><EFBFBD>&<26>єt1<1A><>U<D68B>v8# ȵ!pp2<70><32>\0c%<08><><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><<03>8<EFBFBD>s<0F> <09><>;<3B><>H2<CE80><32><EFBFBD>6o3<11><><EFBFBD>P<EFBFBD>%<25>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>><13><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><4A>KJ<4B>@dB<>\0Z<18><10><>\0<EFBFBD>ct<03>0X<30><06>*D! B<><42>1\r5# @<40><>i*N<><4E>q,N<>2ÔW<19>ij^<5E><>0<12>><3E><01>z<EFBFBD>D<EFBFBD>4Q8<51>sd~<7E>!<21><><EFBFBD>ȯ<EFBFBD><C8AF>\$<EFBFBD>(<28>s9td<74><64><0F><><EFBFBD>:,(<28>=<3D>+<2B><><18>R,<2C><><EFBFBD><EFBFBD>:6S<36>:<3A>G<EFBFBD>rl<72><6C><EFBFBD><EFBFBD>쀟Hh<48><68>9,0\0<EFBFBD>?<3F><>P<><50>!\$2<>UO<05>՚4v<14>#<23><>AiW<69><57><EFBFBD><Ձ<>ȹ\"<EFBFBD>r<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<>-<2D>`(p@@pe]L\\iL<EFBFBD>Or<>:aj<61>-u`<60><>S/=<3D>{:ɭvҶ5<D2B6>Л<EFBFBD>T<EFBFBD><54>,\\x3<>c<1A><>R<><52>+W<><06>f<13>Sc%<25><>c<EFBFBD><63><EFBFBD><1A><><EFBFBD>G=RCJ<43>2,C<><43><01>c<EFBFBD><63>0<EFBFBD>/@<40><>1\rz<EFBFBD><EFBFBD>\r<EFBFBD>S<>X<>M*<2A><>nW,H<><48>\rye<EFBFBD><EFBFBD>g.8<EFBFBD>5<EFBFBD>3Z<EFBFBD><EFBFBD>(8R<38><52>ׯ<EFBFBD>5<EFBFBD><35>H<EFBFBD><48>H<EFBFBD>3<EFBFBD>zr<7A><72>jX t6<74>C%Y<>)<17>ͻo8<><38>.V,<2C>&<0F><16><>I<EFBFBD>e<0E><>1<EFBFBD>#<23><><EFBFBD><EFBFBD>f\\<EFBFBD>.<<3C><>'?|Ɠ<>oGC<47>6<EFBFBD>O<EFBFBD><4F>mDT<44>ݬX<DDAC><58><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD>{mW<>[<5B>4\r<EFBFBD>T<EFBFBD>#-<2D><>\$X<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_3k<><6B><EFBFBD><EFBFBD>M<EFBFBD><4D>M <09><0E><><EFBFBD>hA<68><41><EFBFBD>&<26><>0<EFBFBD><30>W<10>]<5D><>R<EFBFBD><52>P<EFBFBD>:<3A><>{<18>Lqj<71>`-<2D> <20>[<5B>no<7F><6F>*<2A><>Л<EFBFBD>Po<50>Q<EFBFBD> '`X[[a<>2<EFBFBD><32>DdPoAu<41><75><EFBFBD><EFBFBD><EFBFBD><18>k`\$Y0%<25>0<EFBFBD>q<><0C><>:<3A>ƅ\0<EFBFBD>h@!<21>;<3B>eւ<65>j0FP<46>:<02>vC<>i7l<37><6C>C<14><12><>\r<EFBFBD>Hy<0F>RM<52>o<EFBFBD>C\0<EFBFBD><EFBFBD>yl<18>\$<EFBFBD>\$<EFBFBD><0F>/<0C><><EFBFBD><EFBFBD><EFBFBD><0C>.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>38<EFBFBD><EFBFBD>Ls~a<><1A>:N<><4E><EFBFBD>F <20><>;#<23>}<7D><>2Hq<48>55<> }<05><><EFBFBD>H<EFBFBD><48>#I<>l#/<2F><><EFBFBD><EFBFBD><EFBFBD>d<>.<<3C><>6<EFBFBD><36><1A><>:<3A><>r8'Fp<46><70><EFBFBD><EFBFBD>^\0<EFBFBD><1B>\$<16><17>bk<62><6B><EFBFBD><03>ZP<5A><50>.<2E><><EFBFBD>ȇA\$̰w<EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>I<EFBFBD>2<EFBFBD>p<05><>g<EFBFBD>UA\$R<>%G<><47><EFBFBD>@]4&2<><32><EFBFBD>zm2\$R<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<04>9Hu<16><><EFBFBD>!!<21>ւ<EFBFBD><D682>G<EFBFBD>\0bZ/<2F><><EFBFBD>4<EFBFBD>M<EFBFBD>Z>P)<29>s<EFBFBD>8<EFBFBD>C(s+<2B><>O<EFBFBD>@tKQ<4B>n<EFBFBD><6E><EFBFBD><EFBFBD>Y<>7<EFBFBD>E\n41<34>*<2A>`<60><><EFBFBD>MTNyR*:<3A><><EFBFBD><EFBFBD>tf<74><66><EFBFBD>d<EFBFBD>[^<><CDB8>&<26><><EFBFBD><EFBFBD>c<EFBFBD>S<EFBFBD><53>`\r<EFBFBD>1<13><>(<28>N<EFBFBD>aPi<50>F<EFBFBD>A<EFBFBD>RTb%P*<04>E<><45><11><16><>hq<>:@<40>hˡz<CBA1><01>2<02>d<1B>L<EFBFBD>_s<5F><11>`k[<5B>tޔ4<DE94>dž<EFBFBD><<3C><><EFBFBD>+3<><1C><><EFBFBD>DxI]w<><77>ֽ<EFBFBD><D6BD><EFBFBD>,\"{9<EFBFBD>ڏ<EFBFBD>s:U<>D<EFBFBD>P<EFBFBD><50><1B><><EFBFBD><19><><0F><>\"R\"<EFBFBD>\$<EFBFBD>!Y<><59>H<EFBFBD>A2<41>T|ރj}s<>7<>xpb:<06><><EFBFBD><0B><><EFBFBD>5<>Zԗk<D497><6B><EFBFBD><0C><>ؖ<15><>K<EFBFBD>sx<73><15><>qh(\"Ւo0<><30><EFBFBD>ـ<EFBFBD><D980><EFBFBD>H<>]u<><75>9B'EW%<25>&<26>A<EFBFBD>1<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD>:<3A><><1C>h<EFBFBD>lM<><4D>V<EFBFBD><05>J I<>PK<50><4B>g<EFBFBD>9/T<>ʆJ<><08>m<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>*࣍<>\r<EFBFBD>e\0Ji8<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>v<EFBFBD><13><><EFBFBD>=X<><58>P8<50><38>-`@.<!<21><>0<><1C>ӝ<Sz<53>2IN<49><4E>b<EFBFBD>i<EFBFBD>Q<06><><EFBFBD>ymB(<05><><02>{M<EFBFBD>8 H<><48>b\\<EFBFBD>i3<EFBFBD><EFBFBD>@<40>3ϐ@ט7\$<EFBFBD><19>Q<EFBFBD><51><EFBFBD> -%<25><05><13>Q<EFBFBD><51>nOL<4F>Ђ<EFBFBD> <20><>2<EFBFBD>X(`<60>eL\nPR<EFBFBD>n<EFBFBD><EFBFBD><1A><>|v<>R<EFBFBD><gbOK<4F>B<EFBFBD>^mk<06>Ǜ˻?h/ #dkb<6B>q<>\rr:<3A>M<EFBFBD><4D>9O<39>ɘ<EFBFBD><C998>7܂<><DC82>D|#<23><><EFBFBD><EFBFBD>+<2B>/oS\r<EFBFBD>RU<52>cbt<62>m<EFBFBD><6D>`<60><><17><><EFBFBD>p-<2D><><EFBFBD>:S1<53>kց<6B>7<EFBFBD>u<EFBFBD><75><15><><EFBFBD><EFBFBD>3a<33><61><EFBFBD>Yv<59>/<2F><><EFBFBD><02>G<EFBFBD><47>Ps<50><73>qO6<18><17>XAT<41><54><EFBFBD>ʯ!e<>l<EFBFBD>m<EFBFBD>=<3D>E6<45>oH<6F>8<EFBFBD><38>:=<3D>Lc3<63><33><EFBFBD><EFBFBD>/<2F>&<26>g@9b;d<>/<2F><>p<06><><08>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>OjS8<01><0C><>_<EFBFBD><5F><EFBFBD>\$w<><77>7<>o<EFBFBD>W<EFBFBD><57>.)z<0E>O<EFBFBD><4F>M<EFBFBD>A{1D<EFBFBD>J<1F>d<EFBFBD>RRZj<5A>h!<21>oM<6F>N<EFBFBD>)m<>Yl<59>۳%f<><66><EFBFBD>m<>E<EFBFBD><45><EFBFBD><EFBFBD><14>z<EFBFBD><7A><EFBFBD><EFBFBD>í<EFBFBD>/<2F>٢<EFBFBD><D9A2>Rvy@b<>!<21>1<EFBFBD>+;|t<><74><EFBFBD>ڊhƝg<C69D><67>k\0<EFBFBD> <20>a<EFBFBD>.<2E><><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xr((MsD<16>֖<EFBFBD>Z<EFBFBD>I<EFBFBD><49>|<1E><> <20><><EFBFBD><05>8<EFBFBD>ʜ2<CA9C>x)<29>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'uXaκ~{<EFBFBD>v6<>6T<36><54><EFBFBD>s<EFBFBD>A<EFBFBD>K<EFBFBD><4B><07>s\\(b\re<EFBFBD><16><><EFBFBD>U<EFBFBD><55><EFBFBD><EFBFBD><1E><><EFBFBD>u<EFBFBD><75>T<EFBFBD><54><EFBFBD>i<EFBFBD><0C><> <20>|jJJX<4A>7<>V;<3B>N<EFBFBD>]C[<19>W<EFBFBD>C\n<EFBFBD>7s<EFBFBD>݆<EFBFBD>E<EFBFBD><EFBFBD><EFBFBD>9ֲ<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>v_y<EFBFBD>M6<>H<EFBFBD><48>~<7E><>jJE<0C>g\0<EFBFBD>F<EFBFBD>{N<EFBFBD>1\0<EFBFBD><05><>1<EFBFBD><31>><3E>4/o<>m<EFBFBD>\0<0C>,<2C>L^\r<EFBFBD>P<EFBFBD><EFBFBD>4˪<05><>,<2C>R,@l<06>X\n@`\r<EFBFBD><EFBFBD> <09><>\r<EFBFBD><EFBFBD><08><> <20> <20><08><> <09><><06><><06>j <20> @<40>@<40>\n <20> <20> \0j@<40>P<>@<40> 0<><06><>@<40> <20> \$N V\0<EFBFBD>``\n\0<EFBFBD>\n <20>\n@<40>%<25><><0C><>\n\0`\r<EFBFBD><EFBFBD><08><> <09><>\r<EFBFBD><EFBFBD><0C><>\0<EFBFBD>R<0E>v<0C><> \0<EFBFBD>`<60> <09><><07>z}\0\\<EFBFBD>O6<EFBFBD><EFBFBD>M<02>2<EFBFBD><32>88<38>>2PC@<40><04><>FpQPY<05>aPi\n<EFBFBD>sp{<07><>p<><08><> p<> <09><>\nP<EFBFBD> 0o<10><0B><><0B><>P<>\n <20>\0<EFBFBD>kb<0E>l\0^<5E>@<40>\0`<0E><>@<40><0E><>\"\n<EFBFBD><EFBFBD>1<10>0&'@Zhú<68><C3BA><EFBFBD>07<03>*S<><53>5<04><><13>W<05>_0g<06>o<14>yЁ 1UБ P<> С<10>qk <20>`<60>0<>0<><0C>1<>\r<EFBFBD>^<06><>\"Y `<60>\n<EFBFBD><EFBFBD> <20>5 <20>\0<EFBFBD> p\n<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>`<60> <20>q<><71><EFBFBD>(<28><><1C><>!C<><1C>A<1C><>18<0C>S<1D>AGpu<1E>Q<10>Q[<1F>a\n <20> 0<> qn\rRp<> <20>@b\r`<60>\r`<60>\r<EFBFBD><EFBFBD> <09><><08><><0C>d<08><><06><> ,\n<EFBFBD><EFBFBD>``<0C><>\n<EFBFBD><EFBFBD>`d<11><10>Q<18><EFBFBD>?&Q'<03>k&Rq<04>u<13><>1<>\n<EFBFBD><EFBFBD>\n\0<EFBFBD>Ђ2<><15><><15><>R\n<EFBFBD> \0<EFBFBD>*0<>`<60><0C><>\n<EFBFBD>`\n@<40><0C>fd\0<EFBFBD><06><>`<60> <20>\n<EFBFBD><EFBFBD>@<40> <09><>Dø`p<0C><> <20><><EFBFBD>O<EFBFBD><4F><05>\$B\\<EFBFBD><EFBFBD>'<27><>(<28><02><><1C>/&<26>K'2w<13><>@<40> <20><10> 3<><0C><><05><>3)2<>s<> <20>; <20>\0<EFBFBD>h<EFBFBD><EFBFBD><08><><EFBFBD>@<40>\n@<40><0E><> f<><10>%1,<2C><>ʃ<EFBFBD>\$<EFBFBD>G*}fF<66>(<28>@<40>\r<EFBFBD>@\rx<>\$<EFBFBD>J.<2E>r<0C>A<14>H<EFBFBD>A+<2B>U<EFBFBD>'B<><42><EFBFBD><EFBFBD>aB<61><05>X<EFBFBD><58>^<5E><><12>L<EFBFBD>@<40>0<EFBFBD>-<2D>ը<EFBFBD><D5A8><03><>hhBi<42>C<EFBFBD>F<EFBFBD>FGD<47>\n<0E><><0E>e<0E>R<0E><>4@C<><43>f<0E><><EFBFBD><EFBFBD>F`<60>mwG<77> <20><><EFBFBD>A<EFBFBD><41>U4<55><05>\0<EFBFBD><EFBFBD><EFBFBD>Ig<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD>TUAKx<EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>F<EFBFBD>v<EFBFBD><EFBFBD>\$YT<EFBFBD><EFBFBD>D<EFBFBD>Ct0<EFBFBD>M<EFBFBD>L<EFBFBD><EFBFBD>r<EFBFBD>1C<EFBFBD><EFBFBD>N}<7D><>7k42<34>ld<6C><64>\n@o<>*T)d<>q<>D@p <20>4<EFBFBD><34>ԷF<14><><EFBFBD>WE<57><1A>Iz<49><7A><EFBFBD><EFBFBD>KQ<4B>39M<0C>h~<7E>*L!<21><>F<EFBFBD>EG+<2B><>n<EFBFBD>⎖<EFBFBD>)R[C<><43><EFBFBD>GH<47>I ڟM<DA9F><06> <20>J<EFBFBD>Ʈȏ<0F><><EFBFBD>NN<4E>,<2C><>̏@<40><>)R<>n<EFBFBD><6E><EFBFBD>fJOcM<63>*<2A><>6<36><7F>\r<EFBFBD>-Y<>l<EFBFBD>5pi<70>kEt<45><74> <20>FT<46>]4U<><55>猁N<E78C81>gL4<4C><34>u|<7C>U<EFBFBD>F<EFBFBD><46>Pu\n*'<27>*yM<79><4D><EFBFBD><EFBFBD>D<EFBFBD><44><<3C><>sU<73><55><EFBFBD>5d<35>5x<35><78><EFBFBD>W<EFBFBD>^`<60>L<EFBFBD><4C><EFBFBD><EFBFBD>&d<><64><EFBFBD><EFBFBD><EFBFBD>5c<35><63><EFBFBD><EFBFBD><EFBFBD>j\n<EFBFBD>5<EFBFBD>{<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>z<EFBFBD><7A>&<26>@E<>,<2C>@<40>fe<66>\"@gf%<25>`<60><>gJ7n& <20>~@<40><>h<EFBFBD><68>e<EFBFBD>`*<2A>f <20><0C><><0E>hCH4<48>\n.FF,<2C>|W<><57>7<EFBFBD>\n\$#<0C><>`<60>h<EFBFBD>~<05><>W<EFBFBD><57><EFBFBD><EFBFBD>|<7C>\n<EFBFBD> <20>\$<EFBFBD><EFBFBD><EFBFBD>H<>hC<14>\"\n<EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>-<2D><>f<EFBFBD><66><EFBFBD>V<EFBFBD>m<EFBFBD>j<EFBFBD><6A><EFBFBD>f<EFBFBD><66>g\"hB!wf6p,+<2B>p<EFBFBD><70>q<EFBFBD><71>s4<73>;<3B>V<EFBFBD><56>L`%<25>W8;<3B>\0\r<EFBFBD><EFBFBD>#`ڒwF<77>wSeC<65>uN\"<EFBFBD><EFBFBD>u<EFBFBD>Z2<EFBFBD>T|<11>q`<60><><EFBFBD><EFBFBD>v<EFBFBD><76>w <20>v7[uvp<0B>mv<6D>xÓwÿy7x<37><78><EFBFBD>4<EFBFBD>wqy<71><79><0B><><0E><>x<EFBFBD>0<EFBFBD><30><͗<>gL<67>/<2F>chJMrwt*<2A>z<EFBFBD>t<EFBFBD>\0<EFBFBD>z<EFBFBD><EFBFBD>~<0E>yWgx<67>t<0C>#zɣ}<7D>h<EFBFBD>\0<EFBFBD>w<EFBFBD><EFBFBD>=<><1B>+<2B><0B><><EFBFBD><06>{<EFBFBD><EFBFBD>h<EFBFBD><EFBFBD>|W<>w<EFBFBD><77>iܤ<69>!h+<2B>Է<EFBFBD>zx)}<7D><>M<17>wXE<58>@<40><0B>и<EFBFBD><D0B8>[<5B><><EFBFBD>/I<>c<EFBFBD><63><EFBFBD><1A><><EFBFBD>x7݅E<>w<EFBFBD>xi<78><69><EFBFBD><EFBFBD>/A<><41>NE<4E>=<3D>7t<37>HlG<6C>!<21><>o<EFBFBD>X<EFBFBD> <20>@<40>Ew8<0C>N<EFBFBD>W<EFBFBD>BX<42><58><EFBFBD>Wnx<10>8<EFBFBD><0E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<><76>j<15><><05>Vł<56><C582><EFBFBD>#E|k|<7C><>pb<70>}8<><38><0C><>`<60><><EFBFBD>Ï<EFBFBD><C38F>w<18><>8<EFBFBD><38>IC<49><43>Ō<EFBFBD><15>Xً<58><D98B>z<EFBFBD><7A>y<05> <09><>B=<3D><> <18>o<EFBFBD><6F><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD><0B><><EFBFBD><EFBFBD>kj6<6A>j<EFBFBD>;<3B>%<25>yKny<03>]<5D>Y'<27>\"\0<0E>Z<EFBFBD><5A>Mnb<6E>nɳ<6E><C9B3><1B><> <09>Y<19><>ō<EFBFBD><C58D>lC<0F>X<EFBFBD><05>s<EFBFBD>b<EFBFBD><62><EFBFBD><EFBFBD>w<17><>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77>t<EFBFBD><74>a<EFBFBD>Ql9<6C>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>7f<37><66><EFBFBD>Uj<55><6A><EFBFBD><EFBFBD>ix<69><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x9<78><39>7u<37><75>|<0B>1Y<31><59><17>~<7E><><EFBFBD><EFBFBD>=<3D>8w<38><77><EFBFBD>x <20><0C><EFBFBD>xj<0B><1B><>'<27><><EFBFBD><0B>ڡK<DAA1><4B>#<23>Z5<5A><35>C<EFBFBD>1z<31><7A>eY<65><59><EFBFBD><EFBFBD><EFBFBD>#<23>\0ˣ<EFBFBD>-<2D>yy|&<26>-<2D>8<EFBFBD>_ZA<5A>Wh<57>B<EFBFBD>v<EFBFBD>7<37>}<7D><>R1Z#<23>p<1C>´<EFBFBD>6<EFBFBD><36><EFBFBD>imy\$\r<EFBFBD>y<EFBFBD>i<EFBFBD>mk=<3D><>A<EFBFBD><41>W<EFBFBD>ە<><DB95>tnWv<57><76>#L^<5E>#X<>y<EFBFBD><79>zuw<75>}<7D>_<EFBFBD><5F><0F>w<EFBFBD><77><EFBFBD>;<3B>W<57>:<3A>z<EFBFBD>O<EFBFBD>:<3A>;<3B>:\r<EFBFBD><EFBFBD><EFBFBD>:<3A>Pˢ'<27><><0C><><EFBFBD>Z;<3B>z#<23><>!<21><><EFBFBD><EFBFBD><EFBFBD><01><>NUei<><69><1D>7w<37>%~@߳<>3<EFBFBD><33>}<7D>Ez<45>Z<><5A><EFBFBD><EFBFBD>,f9wV<77>ŴL-467i<37>M<EFBFBD>6f3롲<33><EBA1B2>E<EFBFBD> <09><>׆<07>D<EFBFBD>R");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08><01><>h0<1D>LЁ<18>d91<18><07> <09><>o6<1B>P<EFBFBD><50><EFBFBD>nf0<66>q<><71><EFBFBD><EFBFBD>s4<73><0C>H<EFBFBD><48>E\$<EFBFBD>J%R<>a<EFBFBD><61>k\r<EFBFBD>c)<29>Xa<58><61><EFBFBD>3:\r<0E>5<EFBFBD><35><EFBFBD>q<EFBFBD><18><>1<EFBFBD><31>'<27><14><>E<16><>2C(<28>hc<68>X<EFBFBD><58>31<33><31>d1<19>f# <09><>g9Φ<>\$\$b5<0C>Ú<EFBFBD>ʹ^<5E>Z<EFBFBD>F<11><><EFBFBD>3<1D><>0<EFBFBD><30><EFBFBD><EFBFBD>x<EFBFBD>_!#3<18>n82JΆ<11><>,:5<06>9ʾr<CABE>ͪUa<55><61>m<EFBFBD>><3E>5<EFBFBD>k<EFBFBD><6B><EFBFBD>}<11>F#1<><31>â4L&A<06>W<EFBFBD><57>n<EFBFBD><16>Lhkr<6B>f7<66>><11>f5<66>t9<74><39>w\$#<23><>:<3A><>1<EFBFBD><31>l2̧Mn<4D>cc<63><63><EFBFBD><03>9<EFBFBD>><3E><><EFBFBD><EFBFBD>z̸<13><>4J<34><4A><<3C><><1A><>NkT:AP`<60>)Ћ<><D08B><EFBFBD><EFBFBD>ӂ<19><><EFBFBD> ><3E><03><>\rC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>=8<><38>|8<0E><>\\<EFBFBD><EFBFBD><03><><EFBFBD>+<2B><>[<15>cx<63>#<23><>H<><<3C>\"<EFBFBD><EFBFBD>wơtL8<4C><38>LL<4C>J<11><>0<EFBFBD>\r0<EFBFBD>3<EFBFBD>c|} <0C><14>#ID<>+<2B>at <20>\r<EFBFBD>s<EFBFBD><EFBFBD>I<EFBFBD><EFBFBD>P9<EFBFBD>r<>:<3A><><EFBFBD>9;<3B><><EFBFBD><EFBFBD><0F>r<EFBFBD><72><EFBFBD>S<EFBFBD>u6O<36><4F>F2<46><32>[<5B><><EFBFBD><EFBFBD>,<2C>#<23>i\0<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>l3S<EFBFBD>m<0E><02>î <20>9Sh<53>2<EFBFBD>c<EFBFBD><63>3<EFBFBD><33>R1<01>`1.qmR<6D><52>k<EFBFBD><10><>t<EFBFBD>{N\$<EFBFBD>rO6<EFBFBD>c@<40>D<EFBFBD><44>\n<EFBFBD><1C>Sh<53>0<EFBFBD>U<EFBFBD>j<1C><16>D7O<37><4F><EFBFBD><1A><><1D>6<EFBFBD>I<EFBFBD><49><<3C>ʢ<EFBFBD><CAA2>P<EFBFBD>z<EFBFBD><B<><42>,<2C><><EFBFBD><EFBFBD><EFBFBD>4\r/<2F>P\r<EFBFBD>MO<01><><EFBFBD><02>^<13><>f<EFBFBD><66><EFBFBD>H<EFBFBD>anJ<6E><4A><EFBFBD>Af=bC^2<>8hCu<43>\0<EFBFBD><EFBFBD><01>ss<73><73><EFBFBD><EFBFBD>4&/<2F>a<EFBFBD>.9<EFBFBD>c<EFBFBD>d<1E><><EFBFBD>~3<>㸚<EFBFBD><E3B89A><EFBFBD>QeQ<65><51>qG<>c<EFBFBD><63>i<EFBFBD><<3C><>U<EFBFBD>e<EFBFBD>J?9=<3D><>,<2C>B<03>P<18>5<EFBFBD><35>߾<EFBFBD>X`0L۩N*l!<21><><EFBFBD>&©<0C><1A>2<EFBFBD>a_p><3E>Kd<4B><64><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>@8<05>B3<42>ß\n<EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><<3C><>1[<5B><><EFBFBD>9c<18>>T<>l^<5E>0L <20><11>U<EFBFBD>ڷ<EFBFBD>;<3B><>4<EFBFBD>7d1d<31><64><EFBFBD>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>~<7E>ɇ!<21>iotnH<6E>8wYHlk<>\$<1<><31>(h3n<33>h<><68><EFBFBD> <20>;<05><>8<EFBFBD>oa8<1B>1<1E>2<EFBFBD><13><>:z<><7A>\"<1C>A<><41>i<EFBFBD>Z<EFBFBD><5A>\n<EFBFBD><EFBFBD>Vp<EFBFBD>Q<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>^<5E><><0B><><EFBFBD><EFBFBD><15><>J|<1C><>P<EFBFBD><50>a&A<><41><EFBFBD>p<EFBFBD>ȉ<0C><><EFBFBD><EFBFBD>(2@p<><70>\\<EFBFBD>P<><50><EFBFBD><EFBFBD><<3C><>7HM\n<12>-<01>0<EFBFBD><30>9!p-c<><63>;<3B><>8]K<>So<53><6F>?G <20>C2N<32>!<21>0<EFBFBD><30><EFBFBD>a<>-<2D>+<2B>6<EFBFBD>&<26>~<01>U<EFBFBD>+b\$k<1C> <20><>9<EFBFBD><39>8<EFBFBD>^Aj<>3rC<>\\<1F>1<EFBFBD><31><EFBFBD>PdD, <20>A<EFBFBD>8<EFBFBD><38><EFBFBD>~#y<>%`");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("':<3A>̢<03><><EFBFBD>i1<69><04><>1<EFBFBD><31> 4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q6a&<26><><EFBFBD><EFBFBD>:OAI<41><49>e:NF<4E>D|<7C>!<21><><0F>Cy<43><79>m2<6D><32>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<<3C>̱<EFBFBD><CCB1><EFBFBD>/C<>#<23><><EFBFBD><EFBFBD>:DbqSe<1E>J<EFBFBD>˦Cܺ\n\n<EFBFBD><EFBFBD>DZS\rZ<EFBFBD><1C>H\$RAܞS+XKvtd<74>g:<05><12>6<EFBFBD><10>EvXŞ<58>j<EFBFBD><6A>mҩej<65>2<EFBFBD>M<EFBFBD><13><><EFBFBD><EFBFBD>B<EFBFBD><42>&ʮ<16>L<EFBFBD>C<EFBFBD>3<><33><EFBFBD>Q0<51>L<EFBFBD><4C>-x<>\n<EFBFBD><19>D<13><><EFBFBD>yNa<>Pn:<3A><05><19><><EFBFBD>s<EFBFBD><73>͐<EFBFBD>(<28>cL<63><4C>/<2F><18><>(<28>5{<EFBFBD><EFBFBD><EFBFBD>Qy4<EFBFBD><EFBFBD>g-<2D><><EFBFBD><EFBFBD><EFBFBD>i4ڃf<DA83><66>(<28><>bU<62><55><EFBFBD>k<EFBFBD><6B>o7<6F>&<26><>ä<>*ACb<43><62><EFBFBD><EFBFBD>`.<2E><><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>Ch<43><\r)`<60>إ`<60>7<EFBFBD>Cʒ<><CA92><EFBFBD>Z<EFBFBD><5A><EFBFBD>X<EFBFBD><<3C>Q<13>1X<31><11><>@<40>0dp9EQ<45>f<EFBFBD><66><EFBFBD><EFBFBD>F<EFBFBD>\r<EFBFBD><08>!<21><><08><>(h<><68>)<29><>\np'#Č<><C48C>H<EFBFBD>(i*<2A>r<><72>&<#<23><>7K<37><4B>~<13># <20><13>A:N6<4E><36><EFBFBD><EFBFBD><13><>l<EFBFBD>,<2C>\r<04><><EFBFBD>JP<4A>3<EFBFBD>!@<40>2>Cr<43><72><EFBFBD>h<EFBFBD>N<11><>]<1E>(a0M3<4D>2<EFBFBD><32>6<EFBFBD><36>U<18><><EFBFBD>E2'!<<02><>#3R<33><<3C><><02><><EFBFBD>X<EFBFBD><58><EFBFBD>CH<43>7<05>#n<>+<2B><>a\$!<21><>2<EFBFBD><32>P<EFBFBD>0<EFBFBD>.<2E>wd<0C>r:Y<><59><EFBFBD><0C>E<EFBFBD><45><EFBFBD>!]<5D><<3C><16>j<EFBFBD><6A><EFBFBD>@<40>\\<EFBFBD>pl<EFBFBD>_\r<EFBFBD>Z<16><><03>ғ<EFBFBD>TͩZ<CDA9>s<EFBFBD>3\"<EFBFBD>~9<><39><EFBFBD>j<EFBFBD><05>P<EFBFBD>)Q<>YbݕD<DD95>Yc<59><63>`<60><>z<04>c<EFBFBD><1D>Ѩ<EFBFBD><D1A8>'<01>#t<0E>BOh<0C>*2<><32><ŒO<C592>fg-Z<><5A><EFBFBD><1E>#<23><>8a<>^<17><>+r2b<32><62>\\<EFBFBD><0C>~0<><05><><0C><><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD>n<EFBFBD><05>p!#<23>`<60><><EFBFBD>Z<EFBFBD><5A>6<EFBFBD>1<08>2<EFBFBD><32>@<40><>ky<6B><79>9\r<EFBFBD><EFBFBD>B3<EFBFBD><EFBFBD>pޅ<EFBFBD>6<EFBFBD><EFBFBD><<3C>!p<>G<EFBFBD>9<EFBFBD>n<EFBFBD>o<EFBFBD>6s<36><73>#F<>3<EFBFBD><33><EFBFBD>bA<><41>6<EFBFBD>9<EFBFBD><39><EFBFBD>Z<EFBFBD>#<23><>6<EFBFBD><36>%?<3F>s<EFBFBD><73>\"<EFBFBD><EFBFBD>|<>)<29>b<EFBFBD>Jc\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>s<14><>ih8<68><10><><EFBFBD>ݟ<EFBFBD>:<1E>;<3B><>H<EFBFBD>ތ<EFBFBD>u<EFBFBD>I5<49>@<40>1<EFBFBD><>A<EFBFBD>PaH^\$H<EFBFBD>v<EFBFBD><05>@ÛL~<7E><><EFBFBD>b9<62>'<10><><EFBFBD><EFBFBD><EFBFBD>S?P<>-<2D><><EFBFBD><EFBFBD>0<EFBFBD>C<08>\nR<>m<>4<EFBFBD><06><>ȓ:<3A><><EFBFBD>Ը<>2<><04>4<EFBFBD><34>h(k\njI<05><>6\"<EFBFBD>EY<EFBFBD>#<23><01>W<1F>r<1A>\r<EFBFBD><EFBFBD>G8<EFBFBD>@t<><74><EFBFBD><0E>Xԓ<58><D493>BS\nc0<>k<14>C I\rʰ<u`A!<21>)<0E><>2<EFBFBD><32>C<0C>\0=<3D><><EFBFBD> <20><16><>P<EFBFBD>1<0C>ӢK!<21>!<0C><><EFBFBD>p<>Is<05>,6<13>d<1E><><EFBFBD>i1+<2B><><0F><>k<EFBFBD><6B><EFBFBD><<3C><>^<5E> <09>\n<EFBFBD><EFBFBD>20<EFBFBD>Fԉ_\$<EFBFBD>)f\0<EFBFBD><EFBFBD>C8E^<5E><>/3W!א)<04>u<EFBFBD>*<2A><11><>&\$<EFBFBD><EFBFBD>2<EFBFBD>Y\n<EFBFBD>]<5D><>Ek<45>DV<>\$<19>J<EFBFBD><1C><>xTse!<21>RY<> R<><52>`=L<><4C><EFBFBD><04>ޫ\nl_.!<21>V!<21>\r\nH<EFBFBD>k<EFBFBD><EFBFBD>\$א`{1 |<7C><><EFBFBD><EFBFBD><13>i<jRrPTG|<7C><>w<EFBFBD>4b<03>\r<EFBFBD><EFBFBD><EFBFBD>4d<34>,<2C>E<EFBFBD><45>6<EFBFBD><36><EFBFBD><<3C>h[N<>q@Oi<4F>>'ѩ\r<EFBFBD><01><><EFBFBD><EFBFBD>;<3B>]#<23><>}<7D>0<EFBFBD>ASI<08>Jd<10>A/Q<><51><EFBFBD><EFBFBD>⸵<EFBFBD>@t\r<EFBFBD>UG<EFBFBD><EFBFBD>_G<EFBFBD><<04><><y-I<>z<7A>\"<EFBFBD>P<0B><>B\0<EFBFBD><EFBFBD><05><><1E><>q`<60><>vA<><41>a̡J<CCA1><4A>R<EFBFBD>ʮ)<29><>JB.<2E>T<EFBFBD><54>L<EFBFBD><4C>y<EFBFBD><79><EFBFBD><EFBFBD>Cpp<70>\0(7<>cYY<59>a<EFBFBD><13>M<><4D>1<EFBFBD>em4<6D>c<><63>r<EFBFBD><72>S)o<><6F><EFBFBD><EFBFBD>p<EFBFBD>C!I<><49><EFBFBD>Sb<C29C>0m<30><6D><EFBFBD>(d<>EH<45><48><EFBFBD><13>߳<EFBFBD>X<EFBFBD><58><EFBFBD>/<2F><><EFBFBD>P<><50><EFBFBD>y<>X<EFBFBD><58>85<38><35>\$+<2B>֖<><07><>gd<67><0C><><EFBFBD><EFBFBD>y<EFBFBD><01>ϝ<EFBFBD>J<EFBFBD><4A><EFBFBD> <20>lE<6C><45>ur<75>,dCX<43>}e<><65><EFBFBD><11><><EFBFBD>m<EFBFBD>]<5D><01>2<03>̽<EFBFBD>(-z<><7A><15><0B>Z<EFBFBD><5A>;I<><49><EFBFBD>\\<EFBFBD>) ,<2C>\n<EFBFBD>><3E>)<29><><EFBFBD><EFBFBD>\rVS\njx*w`ⴷSFi<46><69>d<><64>,<2C><><EFBFBD>Z<>JFM}Њ <20><>\\Z<EFBFBD>P<EFBFBD><EFBFBD>`<60>z<>Z<EFBFBD>E]<5D>d<EFBFBD><64>ɟO<>cmԁ]<5D> <20><15><><EFBFBD><EFBFBD><EFBFBD>%<25>\"w4<EFBFBD><EFBFBD>\n\$<EFBFBD><EFBFBD>zV<EFBFBD>SQD<EFBFBD>:<3A>6<EFBFBD><36><EFBFBD>G<EFBFBD>wM<><4D>S0B<30>-s<><73>)<29><>Z<EFBFBD><5A>cǁ2<><32>δA;<3B><05>n<EFBFBD>Wz/A<>Zh<5A>G~<7E>c<EFBFBD>c%<25>[<0C>D<EFBFBD>&l<>FR<0E><>77|<7C>I<EFBFBD><49><19>3<EFBFBD><33>g0<67>L<EFBFBD><0B><>a<EFBFBD><61>c<EFBFBD>0RJ<52>2<EFBFBD><32>%<02><><EFBFBD>F<0C><> S<> <20>L<EFBFBD>^<5E> tr<><72><1C>t<1C><><0B><>ʩ;<3B><>.喚Ł<E5969A>><10><><EFBFBD><EFBFBD>[<5B>a<EFBFBD>N<EFBFBD><4E><EFBFBD>^<5E>(!g<>@1<06><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>z<EFBFBD><b<>ݖ<EFBFBD><DD96><EFBFBD><EFBFBD><EFBFBD>O,<03><>Cu<EE8E9D><75>D<EFBFBD>tjI;)<29>݀<EFBFBD>\nn<EFBFBD>c<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>W<s<> <09>\0<EFBFBD>hN<EFBFBD>P<0E>9<12><>{ue<EFBFBD><EFBFBD>ut뵕<74><EBB595><05><><EFBFBD><EFBFBD><EFBFBD><0B>3<EFBFBD><33><EFBFBD>=<3D><>g<EFBFBD><67><EFBFBD><0F><><02>J<EFBFBD><4A><03><05>WQ<57>0<EFBFBD><1D><>w9p-<2D><><EFBFBD> <1E><><EFBFBD><EFBFBD><1A><><1B>'5<><05>\nO<07><>e)M<>)_k<5F>z\0V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;j<>l<><06>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<1C>Pf<0E>-<19>`C<>.@&]#\0ڶp<EFBFBD>y͖ƛ<EFBFBD>t<>d<0F><> <20><><EFBFBD>b}<7D> G1<47>m<EFBFBD>ru<72><75><EFBFBD>*<2A>_<EFBFBD>xD<78>3<06>q<EFBFBD><71>B<EFBFBD>sQ<73><51>u<EFBFBD><75>s%<25>\n<EFBFBD>5s<EFBFBD>ut<1B><><EFBFBD>{<EFBFBD>s<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD>4<EFBFBD>,J{4@<40><>\0<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD><EFBFBD>^<5E><>=<3D><>l<EFBFBD><6C><EFBFBD>`<60>e~F١h3o<33>\"<EFBFBD><EFBFBD>q<EFBFBD>R<iUT<55>[Q<><51>U<><55>M<12>6<05>T. <20><0B>0'<0B>pe\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><15>pCe ٕ<>\"*<02>M <09><><EFBFBD><EFBFBD>D<><44><EFBFBD>?<3F>h<1E><>2<EFBFBD><32><EFBFBD>zU<7A>@7<>C<EFBFBD>4<EFBFBD>a<1F><>iE!f<16>\$<EFBFBD>B<EFBFBD><EFBFBD><<3C>9o*\$<EFBFBD><EFBFBD>lH<6C>\$ <06>@<14><><EFBFBD><EFBFBD><EFBFBD>P\rN<0C>Y<01>n<\$<EFBFBD> <09>Q<02>=<02>F&<26><>*@]\0<EFBFBD><0C><> W'd<> z\$<EFBFBD><04>j<>P[<5B><>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0#&<0E><>_<EFBFBD>`+<2B>B)<29>w<EFBFBD>v% <09><><0C><>LcJ<63><4A>RS<52><53>i`<60>Ů <09>F<0E>W <09><>\nBP\n<EFBFBD>\r\0} 瑩0<EFA6AE>Z<EFBFBD><5A><0C><>/`j\$<EFBFBD>: <20>8ie<69><0C><>φx<CF86><08><><16><>a <20><><03>Gn<47>sgO<><10>U%VU<56><14>@<40>N<EFBFBD><4E>ϐ<EFBFBD>d+<2B>(oJ<6F><4A>@X<><58><0E>zM'F٣<46>WhV<68>I^٢<>1><3E>@<40>\"<EFBFBD><0C><><EFBFBD> <20><13>Q<14>R!<21>\\<EFBFBD>`[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>0fb<66>F;<12><EFBFBD><C287>Fp<05>p/t`<60><05><><0B>(<28><>V<05><><EFBFBD><EFBFBD>b<EFBFBD>Ȳ<EFBFBD>(<28><>H<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD>ԯ1v<31><0E><05><><EFBFBD>H<EFBFBD><48>1T<31>3<18><>q<><19><>1<>Ѫf<D1AA>\nT\$<EFBFBD><EFBFBD><EFBFBD>Nq+<2B><1C>`ލv<DE8D>ǜ<EFBFBD>\r<EFBFBD>Vm<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>'ϸ<><CFB8>g%<25>\"L<>m<EFBFBD><6D><EFBFBD><EFBFBD>(<28>(CLz<4C><7A>\"h<0E>X<EFBFBD>m=<07>\\H\n0U<EFBFBD><EFBFBD> f&M\$<EFBFBD>g\$<EFBFBD>U`a\rP<EFBFBD>>`<60>#g<><67>h<1A><>`<60>R4H<34><48>'<27><><0F><><EFBFBD><EFBFBD>GK;\"M<EFBFBD>ۨT<EFBFBD>h<EFBFBD>BE<1B>n\"b><3E><><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>#<23>\0<EFBFBD><EFBFBD>N:<3A>#_ QQ1{ f:B<><42><EFBFBD>R<EFBFBD>&<26><><EFBFBD>)J<><12>Br<42>+<2B>K.\$<EFBFBD>Pq<EFBFBD>-r<>S%TIT&Q<><51><EFBFBD>{#2o(*P<><50>5<EFBFBD>`<60>1H<0C><><05>' <T<12>d<EFBFBD><64><12><>s<EFBFBD><73>,N<><4E> <20><0E><><EFBFBD>^\r%<25>3<EFBFBD><33>\r&<26><07>4<EFBFBD>B<EFBFBD>/\0<EFBFBD>kLH\$<EFBFBD>4d<EFBFBD>><3E><><EFBFBD>/<2F>ඵ<>H<EFBFBD><48><EFBFBD>*<2A><><EFBFBD>3J<0E>А<EFBFBD><<3C>Hh<48><68>p<EFBFBD>'<27><>O/&<26>2I.<2E>x3V.<2E>s5<73>e3<65><33>ێZ<DB8E>(<28>9E<39>g<05>;R<>;<3B>J<EFBFBD><4A>Q<16>@<40><>vgz@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'dZ&<26>,U<><55><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46>b*<2A>D<EFBFBD><44>H! <20>\r<EFBFBD>;%<25>x'G#<23><>͠w<CDA0><77>#<23>֠<>2;#<23>Bv<42>X<EFBFBD><58><EFBFBD>a<EFBFBD>\nb<EFBFBD>{4K<EFBFBD>G<EFBFBD><EFBFBD>%<25><><EFBFBD>GuE`\\\rB\r\0<EFBFBD>-mW\rM\"<EFBFBD><EFBFBD>#E<>cFbF<62>nz<6E><7A><EFBFBD>@4J<34><4A>[\$<EFBFBD><EFBFBD>%2V<0F><>%<25><>&T<08>V<EFBFBD><56>d<EFBFBD>4hemN<6D>-;Eľ%E<>E<EFBFBD>r<EFBFBD><\"@<40>F<EFBFBD>P<50>L <20>߭<EFBFBD>4E<><45><EFBFBD><EFBFBD><EFBFBD>z`<60>u<03>7<EFBFBD>N<>4<EFBFBD><34>\0<EFBFBD>F:h<>K<>h/:<3A>\"<EFBFBD>M<EFBFBD>Z<><5A>\r+P4\r?<05><>S<EFBFBD><53>O;B<><42>0\$FCEp<EFBFBD><EFBFBD>M\"<EFBFBD>%H4D<>|<7C><>LN<4C>FtE<><45>g<EFBFBD><67><EFBFBD>5<04>=J\r\"<EFBFBD><EFBFBD>5<0C><>4<04><>K<EFBFBD>P\rbZ<><5A>\r\"pEQ'DwK<77>W0<57><05>g'<27>l\"h<EFBFBD>QF<EFBFBD>C,<2C>Cc<43><63><EFBFBD>IH<49>P<07>hF]5<>& f<14>T<04><>iSTUS<55><53><EFBFBD><EFBFBD><EFBFBD>[4<>[u<>Ne<4E>\$o<EFBFBD>K<EFBFBD><EFBFBD>O <20><>b\" 5<>\0<07>D<EFBFBD>)E<>%\"<08>]<5D><>/<2F><><EFBFBD>ЌJ<D08C>6U<36>d<EFBFBD><02>`<60><>a)V-0<><30>DӔbM<62>)<29><><EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD>`<60><>%<25>ELt<4C><74>+<2B><>6C7j<37>d<EFBFBD><64>:<3A>V4ơ3<C6A1> -<2D>R\rG<EFBFBD>IT<EFBFBD><EFBFBD>#<23><4-CgCP{V<EFBFBD>\$'<27><06><><EFBFBD>g<EFBFBD><67>R@<40>'<27><14>S=%<25><><EFBFBD>F<EFBFBD>k:<3A><0E>k<EFBFBD><6B>9<EFBFBD><16><11><04>e]aO<14><>G9<08>;<3B><>-6<><1C>8W<38><57>*<2A>x\"U<><55>YlB<6C><16><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06><><EFBFBD> <09><>\n<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<11>m\0<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Oq̨<><CCA8>b<>W1s@<40><>K<1F><>-p<><70><EFBFBD>E<1F>Spw\nGWoQ<6F>qG}vp<76>w}q<><71>q<EFBFBD>\\<07>7<1C>RZ<52>@<40><><EFBFBD>t<EFBFBD><74>t<EFBFBD>;pG}w׀/%\"L<15>E\0t<EFBFBD>h<EFBFBD>)<29>\r<EFBFBD><EFBFBD>J<0F>\\W@<40> <09>|D#S<13><>ƃV<C683><56>R<>z<EFBFBD>2<EFBFBD><0F><>v<EFBFBD><76><EFBFBD><EFBFBD><10> <09>}<7D><><EFBFBD><EFBFBD><EFBFBD>(<28>\0y<<3C>X\r<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><<3C><>Isk1S<11>-Q4Yq8<71>#<23><>v<1E><><EFBFBD>d.ֹS;q<>!,'(<28><1B><16><.<2E><>J7H<37>\"<EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>u<EFBFBD><0F><><7F><EFBFBD>#<23>Q<>\re<EFBFBD>r<EFBFBD>Xv[<5B>h\$<EFBFBD>{-<2D>Y<><59><EFBFBD>JBg<42><1F>iM8<4D><38>'<27>\nƘtDZ~/<2F>b<0B><><EFBFBD>8<EFBFBD><38>\$<><7F>DbR<62>O<EFBFBD>O<><4F>`O5S><12><><EFBFBD><EFBFBD>[<5B>D<07>ꔸ<EFBFBD><0C><><07>_3X<33>)<29><>'<27><>Jd\r<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UD<EFBFBD>U<EFBFBD>X8<><38>x<EFBFBD>-旅<>P<07>N`<60> <09><>\n<EFBFBD>Z<08><><EFBFBD>@Ra48<><38>:<3A><><EFBFBD>\0<EFBFBD><EFBFBD>x<EFBFBD><0E><>N<EFBFBD>\\<04>0%<25><><05>f<EFBFBD><66>\\<EFBFBD><EFBFBD>>\"@^\0Zx<EFBFBD>Z<EFBFBD>\0ZaBr#<23>X<EFBFBD><58>\r<EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>˕<EFBFBD>flFb\0[<5B>ވ\0[<0B>6<EFBFBD><36><EFBFBD> <09><><19> <20>=<3D><>\n<EFBFBD><EFBFBD>WB<EFBFBD><EFBFBD>\$'<27>kG<6B>(\$y<EFBFBD>e9<EFBFBD>(8<>& h<><68>Rܔ<52><DC94>o<EFBFBD>ȼ LJ<><C787><EFBFBD>Y<EFBFBD><59>4<EFBFBD><34>7_<37><5F>d<EFBFBD><64>9<EFBFBD>'<27><><EFBFBD><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z\r<EFBFBD><EFBFBD><EFBFBD> <><7F><EFBFBD><EFBFBD>v<EFBFBD>G<EFBFBD><47>O8<4F><0E><>MOh'<27><>X<>S0<53>\0\0<EFBFBD> <09><>9<03>s?<3F><><EFBFBD>I<EFBFBD>MY<17>8<EFBFBD> 9<10><><EFBFBD><EFBFBD><1F>HO<48><4F>,4 <09><>xs<78><73>P<EFBFBD>*G<><47><EFBFBD><EFBFBD>c8<><38>Qɠ<51><C9A0>wB|<7C>z @<40> <09><><05>9c<18>K<EFBFBD><05>QG<1B>bFj<46>X<EFBFBD><58>oS<6F>\$<EFBFBD><EFBFBD>dFHĂP<EFBFBD>@ѧ<嶴<>,<2C>}<7D><>m<EFBFBD><6D>r<04><>\"<EFBFBD>'k<6B>`<60><>c<EFBFBD><63>x<EFBFBD><78>e<EFBFBD>C<EFBFBD><43>C<EFBFBD><0E>:<3A><><EFBFBD>:X<> <20>T<EFBFBD><54><EFBFBD>^<5E>d<EFBFBD>Æqh<71><68>s<EFBFBD><06><>Lv<4C>Ү0\r,4<>\r_v<EFBFBD>L<><4C>j<03>jM<6A><4D>b[ <20><0F>ls<6C><73><0F>Z<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>;f<><66>`2Yc<59>e<EFBFBD>'<27>Mer<65><72>F\$<EFBFBD>!<21><>\n<EFBFBD><EFBFBD> *0\r<EFBFBD>AN<EFBFBD>LP<EFBFBD><EFBFBD>jٓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;ƣV<1A>Q|(<28><>3<EFBFBD><33><EFBFBD><EFBFBD>[p<><70>8<EFBFBD><38><EFBFBD>|<7C>^\r<EFBFBD>Bf/<2F>D<EFBFBD><14><>Ҟ B<05><0E>_<EFBFBD>N5M<35><18> \$<EFBFBD>\naZЦ<EFBFBD><EFBFBD><0B>~<05>Ule<EF8EA5>rŧr<C5A7><1A>Z<EFBFBD>aZ<61><5A><EFBFBD><EFBFBD><07>գs8R<38>G<EFBFBD>Z<5A><7F>w<EFBFBD><77><EFBFBD>N<EFBFBD>_Ʊ<C6B1>Yϣ<59>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>]<5D><>;ƚL<><4C><EFBFBD><05><>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0>I<EFBFBD>Q3<51><33>O<EFBFBD><4F><EFBFBD>|<7C>y*`<60> <20>5<EFBFBD><18>4<1A>;&v8<76>#<02>R<EFBFBD>8+`X<>bV<62>6<EFBFBD>ƫi<12>3F<33><46>E<14><><EFBFBD><EFBFBD>oc82<38>M<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><14>G<EFBFBD>Wb\rO<EFBFBD>C<EFBFBD>Vd<EFBFBD>ӭ<EFBFBD>w\\<EFBFBD>ͯ*cSi<53>Qү<02><><EFBFBD>R`<60>d7} <09><><EFBFBD>)<29>ϴ<EFBFBD>,<2C>+bd<62>۹<>FN<0F>3<11><>L\\<EFBFBD><EFBFBD>eRn\$&\\r<EFBFBD><EFBFBD>+d<><64>]O5kq,&\"D<EFBFBD>CU6j<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>\\'<27>@o<>~<7E>5N=<3D>|<7C>&<26><>!<21><>B<EFBFBD>w<EFBFBD>H<>yyz7<7A><10>(Ǎ<><C78D><07>b5(3փ_\0`z<>b<EFBFBD>Уr<D0A3><72>8 <09><>Z<EFBFBD>v<EFBFBD>8L˓<4C>)<29><>S<EFBFBD>M<<3C>*7\$<EFBFBD><EFBFBD>\rR<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>B%<25><>ƴDs<44>z<EFBFBD>R>[<5B>Q<EFBFBD><51><EFBFBD><0C>&Q<><51><EFBFBD><EFBFBD><EFBFBD><1E>'\r<EFBFBD>pp<70>z<EFBFBD>/<<3C><>}L<>#<23><0C>Ε<EFBFBD><08><>Z<0C><><EFBFBD>\"t<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>.4<>g<EFBFBD><67>P<EFBFBD><50>p<EFBFBD>D<EFBFBD>n<EFBFBD><6E>ʹN<CAB9><4E>F<07>d\0`^<5E><><EFBFBD><EFBFBD>\rnȂ׳#_<12><> w(<28>2<EFBFBD><7-<2D><>X\0<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>,^<5E>hC,<2C>!:<3A>\rK<><4B>.<2E><>Ӣ<EFBFBD>Ţ<EFBFBD><C5A2><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>+v<02>Z<EFBFBD><5A>\0<EFBFBD>Q9eʛ˞E<1C>w?><3E>\$}<7D><>D#<23><><EFBFBD><EFBFBD>c<EFBFBD>0MV3<>%Y<><59><EFBFBD>\r<EFBFBD><EFBFBD>tj5<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>{ŝ<EFBFBD>Lz=<3D><<3C><>8I<1C>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>L<7F>\$<EFBFBD><EFBFBD>2<14><>{(<28>pe?u<>,R<>d*X<>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\"@<40><><EFBFBD>}<.@<40><08> <09><>N<EFBFBD><4E>\$<EFBFBD><EFBFBD>XU<05>js<6A>/<07><><>\"* <20>#\$<1B><><EFBFBD><EFBFBD>&CPI <09><>t<EFBFBD><74><EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD>?<3F> <20><> <09>O<EFBFBD><4F>\\<EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>Q5Y<35>H@<40><><EFBFBD>b<EFBFBD><62>c<01>h<EFBFBD><68><0C><><06>뱖<EFBFBD><EBB196>O0T<>'<27>8<EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>j+H<>v_#<23><><EFBFBD><EFBFBD><EFBFBD>06<30>w֎<77>X<0F><><EFBFBD>d+<1A>ܓ\\<03><><EFBFBD>\n\0 \\<EFBFBD><EFBFBD><EFBFBD>>s<73><0F>A PF<50>d8m'@<40>\nH<02>\0<EFBFBD>c<EFBFBD>OwS<EFBFBD><1F><11><0C><>Y<EFBFBD>`<1D><><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><1C>Dna\"<EFBFBD><EFBFBD><EFBFBD>~<12>?<3F>m<EFBFBD><6D><EFBFBD>|@6<><12>+<2B>GxV<78><56>\0<EFBFBD><EFBFBD>W<>Ӱ<EFBFBD>nw<05><><EFBFBD>.<2E>b<D883><62>9Í<><C38D>E<EFBFBD>|E<06><><EFBFBD>\rЈr<EFBFBD>\"<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><03><>\rN6<EFBFBD>n<EFBFBD>\$Ҭ<EFBFBD>-B<>H<EFBFBD>^<11>)<29><14>y&<26><>ךW<D79A>ǧ<EFBFBD>bv<62>R<EFBFBD> <09><><EFBFBD>N\0<EFBFBD><EFBFBD>n<EFBFBD> T<16><>`8X<38><58>A\r:{O<16>@\" <20>!<21><03>\$K<>qo<71><6F>jY֪J<D6AA><4A><EFBFBD><EFBFBD><EFBFBD>h}d<1I<31>xd<78><64><19><>TT4NeeC0䥿<30>:D<>F<>5L<35>*::H<>jZ<6A><5A><13>F<10>R<EFBFBD>MրnS\n>PO<0B>[<5B>\$V8;#<23>K\\'<27>B<EFBFBD><42><EFBFBD>R<>د<EFBFBD><D8AF>R<>_<EFBFBD>8<EFBFBD>j<EFBFBD><6A>*Ej<45>\\~v<><76><EFBFBD>v<EFBFBD><76>p@T<>X<EFBFBD>\0002dE <09>H<EFBFBD><48>V<EFBFBD><56><EFBFBD>D<EFBFBD>\"Q'EDJB~A<><41>A<EFBFBD>Il*'\n<EFBFBD>Y<EFBFBD><1F>.<2E><>+<2B>9<0E><>pg<70><03><>/<2F>\"<EFBFBD>1<EFBFBD>8<EFBFBD>0<EFBFBD>IA<>FCȨ<>V*a<><08>P<EFBFBD>d<EFBFBD>У5H\"<EFBFBD>A<EFBFBD><05>6<03>s<EFBFBD>Y<EFBFBD><59>;訞<>/<2F><>0<><1A>v}y<>\r<EFBFBD><02><><EFBFBD>ץ1<D7A5>u\"ˋ<EFBFBD>m<EFBFBD><16>_<0C>0焄`<60><18><>\\B1^\nk\r]lh<6C>}]HBW`<60><>0<EFBFBD>rFf<46>)<29>W,<02>ҧ]sm9'O<14>xԽ<78>,<2C>9J8<4A><38>?<1A>4<1A><><EFBFBD><04><>\"҅<EFBFBD>۽<EFBFBD><<3C>-S<><53><EFBFBD><EFBFBD>M<EFBFBD>;<0E>v<EFBFBD><76>6y|<7C>Z<06><><EFBFBD><EFBFBD>%<25>a<08>#8<><38>TC<11>!<16>p<EFBFBD><70>\n<EFBFBD><EFBFBD>CZ(<28><>9|<1A><>0<BL\r<10>\n<EFBFBD>]<5D>PB0<0E>&<26>+IŌ<>G<><01>`hu<68><75>\0<EFBFBD><EFBFBD>\0005<EFBFBD><EFBFBD>S@\"Uؔ@<40><06>\0<EFBFBD>\$<EFBFBD><EFBFBD>ސ\"Ҡ<EFBFBD><EFBFBD>]l/ <09><>I<EFBFBD>B4<42><34>.<2E>6<EFBFBD><36><0B>,C <20><>@j<01><>d>dE<64>*D@j<><01><><EFBFBD>f`<60><>:En<45><6E>bĀ71<><31>)C<@A<>Y!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>\\o<EFBFBD><EFBFBD>Y<15><>F<EFBFBD>,M<>\nlt<10><><EFBFBD><EFBFBD>/)<29>\\43)<29><>2<11><19>ɸ<02>)<1A><><EFBFBD>N[ ppp1<70><31><EFBFBD>#<23><>Ð<>p\0<EFBFBD><05>Œ<EFBFBD><C592><EFBFBD>^{<EFBFBD><EFBFBD>A<EFBFBD><05>TH<1C><>6<EFBFBD><36><01><13><>\n\0P<>H<EFBFBD>.\r<0C><>x|<7C>T<EFBFBD>FD0<16><>P<EFBFBD>y<EFBFBD>0<1B><>%<25><><01><05>K<EFBFBD><4B><EFBFBD>d<EFBFBD><13><><EFBFBD><EFBFBD>B<><42><EFBFBD>C<>%E)<04>T<EFBFBD>s He5)<29>4<EFBFBD> r<><72>!ۚ*Lp1<<3C>f<EFBFBD>N<EFBFBD><4E>'<0F>+<2B>LJ<4C>Sa<53><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>l<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>,<2C>>H<0B>m HV<02>/<2F>lC<>&<26><08>H)c<>&Y2<59><03><>%<25><><EFBFBD>n\n^N(6<03><>D<EFBFBD> <20><><EFBFBD><EFBFBD>Gq<47><71>!<21>\0.<2E>#<23><>\0vr,<2C>M<EFBFBD><4D>&A<><41><05><><03><><EFBFBD>9#<23>X<EFBFBD><58>B<>h<0B><>!W\0<EFBFBD>_\r{<EFBFBD><EFBFBD><EFBFBD>@<40>09IL22wA<18><12>)<29>H^^@r<>pG<70><47>7Dd.<2E>I5<>|<7C><>1P<31><50><EFBFBD>k/<2F><>Mez<02><><EFBFBD>}҂!x<>~<7E><> qbHu?Jl<6C>C <12><>g<EFBFBD>\nl<EFBFBD>EU F<>|<7C><>1r<31><72>U<EFBFBD><55>&8F<'<27><> dӣ5%<25><07>Y<EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD>Ⱥ<EFBFBD>EA<45>!<21>/@<17><><05><>G<EFBFBD><05><>tx<19><><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD>~<7E>I:)&<26>RZ<13>~<7E><> L!K<1E><>BX<42><13>-<2D><><EFBFBD>h<EFBFBD><68>c/<2F>o<EFBFBD><6F>P<>I<0E><><EFBFBD>NJ2<4A>|<10><><EFBFBD><EFBFBD>O<EFBFBD>V<EFBFBD>I<EFBFBD>\$<EFBFBD>0)e<><65> <20><>M릒:H<>\$<EFBFBD>y<EFBFBD><EFBFBD>1\n<EFBFBD>7<EFBFBD>m<EFBFBD>@sX@T@w 6<>TX<54>5+<2B>'\\<EFBFBD>`<60><>_S<5F> <09>_0<5F>1!<21>n_s<08>g9<>x\r<EFBFBD>g,<2C><>O9\$ݥ&<26>z<EFBFBD>bQSf!<21><03>D*<2A><08><>U<EFBFBD>\n0s<EFBFBD>|(<28>C<EFBFBD><43><08>A<>'<27><13>t<EFBFBD>r|<7C><>&<26><><EFBFBD>?rn<72><6E>Tkx<6B><78><EFBFBD>X=i<><69>,\$3t[<5B>r<EFBFBD>9?<3F><>Ʊ<EFBFBD>d<EFBFBD>1<15><><EFBFBD>fH<66><48>4<EFBFBD><34><08><(:?<3F><><EFBFBD><EFBFBD>ס<EFBFBD><03><10><>KUJع<02>QC<51>BT<42>P<EFBFBD><50>\0}2\0<EFBFBD>z<06><><EFBFBD>+<2B>*HH<>Q%<25>)+!(<15>g<0B>UD<55>:y<>\0<EFBFBD>\0*%<25>@\"|<7C>Sh|<7C><1E>y\\<EFBFBD><EFBFBD>'<27>¨<EFBFBD><EFBFBD><7F><EFBFBD>ml e`V<><56>1<EFBFBD><18><><EFBFBD><EFBFBD>*M<1A><>Z<EFBFBD>%<18><><EFBFBD><10><0F>j<EFBFBD><6A><EFBFBD>Q}<7D>(~ <09> P<><50><EFBFBD>HW<>wZ<77><5A><EFBFBD>(-*F<><46>F闤<18>~<06>OQΈ<51>i<EFBFBD>XMeF<65><46><EFBFBD>J<EFBFBD><4A>ja5&<26><>EzN<7A>N<EFBFBD>Tt<54><74><1D>p <20>PQƏ<51>Eb+<2B><><EFBFBD><EFBFBD>H-<2D>\$j'<27>S<EFBFBD><53>=<3D>cM<63>ֱ+3bO<><4F><EFBFBD><EFBFBD>6<EFBFBD>&[)<29><02>7DuM<75>j<EFBFBD>VL<>i:<3A><>*<2A>fA8<>\nle<EFBFBD><EFBFBD>\\n<EFBFBD>l鄖]D%~!W<18>2<0E>7TU<54>]<5D><><EFBFBD>!<21><><EFBFBD><EFBFBD>=bJ<62><4A>'<27><><1E>p<07>>1<><31>f<16><><EFBFBD><EFBFBD>\nx<EFBFBD>&<26>s<EFBFBD>'<27><><EFBFBD>P/\"*<1B>Lo#c<><63><EFBFBD><05><><05>^I<>(#<23><><EFBFBD>7V<37><56><EFBFBD>\$F<EFBFBD><EFBFBD>!р^<04>\$<EFBFBD>,<08>|<02>YH<05>(MЊ<4D>\nA\n<EFBFBD>R<EFBFBD><EFBFBD>*<2A><04>l'`i<><69><02><>ȸ<04>o<EFBFBD><6F>A<EFBFBD>Q<>6ȍ<>H<EFBFBD><48>ԍ<EFBFBD>&0Sݷ<53>z<14><>\0R<14>ߏ<EFBFBD><03>F <20>f<EFBFBD>IP0<50><30><0C>|<08>G<EFBFBD><47>Q<EFBFBD>:\0<EFBFBD><EFBFBD>Q<EFBFBD>H)<29>\"<EFBFBD>8|%Ϙ<03><>*<2A>\"<16>ܓStJ<74>xj<78>M<EFBFBD>P<0C><><EFBFBD>!<21>@*2<05>y'\0P ŪX<C5AA>R<EFBFBD>)\$ߍ<EFBFBD>S<EFBFBD>U<EFBFBD>-ZD'<27><> <20><>5H<14><><EFBFBD><EFBFBD><13>\n/<2F>㐙|<7C><>mR#^Ӎ*<2A>Ȫe8B<14>灅:5OE_<45><5F>=<3D><><EFBFBD>U<EFBFBD>5Tm \n\0CZZ<EFBFBD><EFBFBD><06><><EFBFBD>/<08>k\\+Cϓ(W!MH<><48>p3<11>V<EFBFBD><56>B<EFBFBD>)`<60>@BU#<23><1D>t<EFBFBD>Q<EFBFBD><51>/<2F><>Q<EFBFBD><51>Q Q<02><>ʢ<EFBFBD>~P<><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><50>#<23><1A><><EFBFBD><EFBFBD>^@_<14><18><>_<06><><EFBFBD><EFBFBD><0F><>|<7C><16><>9T<39>&s<><02>n<EFBFBD>%!pW<70>Q\0b<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>[<5B>G<EFBFBD><47><08>\r<EFBFBD>=\"F<>P<EFBFBD><50>g\0!<21>sh<><68>t\$+O<><4F><EFBFBD><EFBFBD> <09>ө7I<37>M<EFBFBD>cS<63>i<EFBFBD>t<EFBFBD>Y<EFBFBD>ŐC<C590><43>F<EFBFBD>J<EFBFBD>[<5B>}spQga<67><0C>y<EFBFBD>)ZAwDX<<3C><><EFBFBD>-<0E>F<EFBFBD>Q<EFBFBD>36t<36><74><EFBFBD>=<3D>[]5<><35><EFBFBD>!<21>\$<EFBFBD>a`{<08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!<21><><EFBFBD>H<EFBFBD>lx<>R<EFBFBD>{vM<EFBFBD>;g<><67>{(<28><><EFBFBD>f<EFBFBD><66><EFBFBD>Il<49><6C>*<2A>p\r<EFBFBD>^<5E><><EFBFBD>ĤK<08>V9<>K r)<29><>e<EFBFBD>!<21>vԷ`D<><44>D<EFBFBD>AȺ<><C8BA><EFBFBD><02>@<40>D<EFBFBD><44>ZF<5A>P<EFBFBD> x<><1C>c<EFBFBD><63><01>AM<41>h<1B>i<>4\0<EFBFBD><EFBFBD>֘*<2A>,֟<>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>LM<4C>(cG\\ǐ<EFBFBD>l<EFBFBD>S<><13>cͼ<><CDBC>mp<17>LqI<71>V<EFBFBD><56>6E<36>=<3D>Ī1<C4AA><31> u<>|-<2D><1B>l<EFBFBD>0<05>+\"~<7E>m<EFBFBD>T0<>h.<2E><>@^Pյ<50>5m<35>D<EFBFBD>l<0C><>2<EFBFBD><32>m<EFBFBD>[iېn<DB90>qJ<71><4A><EFBFBD>ޘr<DE98><72>đ<EFBFBD><02>\\}<7D><>M<EFBFBD><4D>\"<EFBFBD>rq<>J<EFBFBD><4A>מ<EFBFBD><D79E>f<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><02><><EFBFBD>X<EFBFBD>7<04> <20><>N\"<EFBFBD>*<2A>8<EFBFBD><38>|<7C>:<3A><08>I<EFBFBD>-%D<>F<EFBFBD>7<EFBFBD>|D0<0F>\\<EFBFBD><EFBFBD><<3C>H\"<EFBFBD>(E\0<EFBFBD>\n\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>^@]<5D>*+<2B>\$<EFBFBD><EFBFBD><EFBFBD>ڄE<EFBFBD><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>t2<><32><EFBFBD>念<EFBFBD><E5BFB5><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD>DŽ<>)<29><16>~\$Ӌ<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>&+\0<EFBFBD>B<EFBFBD><EFBFBD>+<2B>n<EFBFBD>[\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD><EFBFBD><EFBFBD>j<19><>~<7E><0F><14><17><><EFBFBD>s<04>_<EFBFBD>)<29><><12><><05><><EFBFBD>b<EFBFBD>ݨ<EFBFBD><DDA8>\$<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*<2A><><EFBFBD>\\5<EFBFBD><EFBFBD><EFBFBD><1A>G<>)<29>WL<02><1B>N1<12>+<2B><>aI҄<49>^Tj]<5D><><EFBFBD>\$U<EFBFBD>><05><><0C><><EFBFBD><EFBFBD>N<EFBFBD><4E>2!<21><e<><14><><1E><>v<EFBFBD><76>;<3B><>ɬ<EFBFBD><C9AC>րZ<02><1D>ҪC<D2AA><1E>/x=<3D><><0F><>1r<31><13><><EFBFBD>y8<79>ި\$*<2A>\r<EFBFBD>c~<02>\nz<EFBFBD><EFBFBD><EFBFBD>:o<><6F>-B<><42><EFBFBD><EFBFBD>#ܰ<>7\\)<29><><EFBFBD><EFBFBD>Ĕ(5<><35>@<40>[茅<><01>a<EFBFBD>#UK<55><4B>~<7E>2<EFBFBD><32>A<EFBFBD>FY<46>3<EFBFBD>!C<><08><><0B><06>S߬Z<DFAC>%,<11>_N<5F><4E><EFBFBD>>q<><71> :lמ<6C>!U<>Y<EFBFBD><59><EFBFBD>X<EFBFBD><58>W<EFBFBD> r<>@k<><1A><0B><>a<EFBFBD><61><EFBFBD>E<EFBFBD>E<EFBFBD>E<EFBFBD>P<EFBFBD>\\e<EFBFBD>a<01><><0F>w<EFBFBD><04>\rK<EFBFBD><EFBFBD><EFBFBD>\0<11>z<EFBFBD><7A><0B><>v<EFBFBD>`<60><><EFBFBD>9l<39>F\"9<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>\n<EFBFBD><EFBFBD>p<05>H<01>?<3F><>P5<>|+<2B>x<EFBFBD><78><EFBFBD><EFBFBD>j<EFBFBD>z<EFBFBD>_<EFBFBD><07><>Jq`,<1B><><EFBFBD><EFBFBD><EFBFBD><06>\\ Ѫ<>K<>L<EFBFBD>r;<3B><>9<><39>>E'<27><>H<EFBFBD><48>I*u<>&QL<02>+<2B>ua<>()<29>!<21><1E>Y<EFBFBD><59>^Љ<12><>*<2A><>b<EFBFBD><03>;<3B>\r)<29>V8l<38>e|G<><0E>6<EFBFBD>G\\<EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>\0<EFBFBD> .<2E>B4<42><34>8<EFBFBD>K_)<29><1E><>kj:<3A><><11><>þ&,<03><><EFBFBD><EFBFBD>I<EFBFBD><49>\"\"<EFBFBD>15<15><15><1C>|T.&<26>va<>\nK]u<> <20>k{ <09><>?3<>Ĝ[<14>,[<1D><><EFBFBD>J<EFBFBD>PC<50><43>k<>\rFة<EFBFBD>k <09><><EFBFBD><EFBFBD>9<EFBFBD>^I<><05>I)SQ<53>B<EFBFBD>Ugh<68>g<0E><>M<EFBFBD>X<><58><EFBFBD>3<EFBFBD><33><EFBFBD><07><><EFBFBD>x<><18><>!<21><>Mcd<63><64><EFBFBD>7<EFBFBD><37>k<EFBFBD>y<EFBFBD>Z<EFBFBD>,<2C><><EFBFBD><EFBFBD><08>)n<16><><EFBFBD>J:<3A>N<08>8<1C>E<EFBFBD>y\n<EFBFBD><EFBFBD>Z<EFBFBD>W<EFBFBD>;<3B>!<21><>v62#A0<41><30>{<EFBFBD>-i<><69><EFBFBD>7~\0VX<EFBFBD><EFBFBD><EFBFBD>^<5E>11-<2D>+<2B>t̗<74><CC97>VG<56><47><EFBFBD>.eyY<79>RD\r<EFBFBD><EFBFBD>;<3B>1l2<05>/<1B><04>VF<56><46>d<>\$PЮ0=@kS<14>0h<30><68>Ɉ@<07><>/'(O<>P-Ӕ4G><15>(r<>X6<58><36><EFBFBD><05><><EFBFBD>%XZ@<14>:<3A><>'#0<>6kE|<7C><><EFBFBD>\$|H;<3B><><EFBFBD>e<EFBFBD><65> g<01>%<25>W<EFBFBD><57><EFBFBD>fO1<4F>#<23>ï<EFBFBD><C3AF>v̒fI9<7F><39>(O<><4F>d<EFBFBD><64><EFBFBD><EFBFBD>w 9]<5D><>f}̷G<CCB7><47>Ds<44><73><EFBFBD><02><><EFBFBD><EFBFBD><0C><>X40<34><30>B<EFBFBD><01>f<EFBFBD><18><><01>2̄<32>+A}<7D>͝0}<7D>K9<4B>F<EFBFBD>ݪ<EFBFBD><DDAA><EFBFBD>Nh<4E>/7eT<65><54><EFBFBD><EFBFBD>sl<73><04><><EFBFBD>\n<EFBFBD><EFBFBD>4勳P~wO()Ig|9<>ţ<EFBFBD>ji6<69><36><EFBFBD>ݸ<EFBFBD>(<28>e<EFBFBD><65><EFBFBD><EFBFBD>jηo>B<>ϩ)<29><>K<EFBFBD><4B><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>(<28>}q<>1<EFBFBD><31>od<6F>V[Ĵ\n<EFBFBD>gRvL<EFBFBD>Mзr\nF#{<EFBFBD>t*#<23>x<><1E>ܤ<10>9Ds<44><73>k/7up:^z<>F<EFBFBD><46>q<EFBFBD><71>ϋĨ<CF8B>2<EFBFBD><32><12>2n<32><6E>%<10><>y<EFBFBD><11>i<EFBFBD>Ù *<2A>8-<2D><><EFBFBD>tH<14>&l<><6C><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>4i<EFBFBD>d<EFBFBD>8`<60><>\"<06><><EFBFBD><1D><>h<EFBFBD><68>ZB<5A>vT\0ަ9<EFBFBD><14><>+䙂~<10><>\$ީ(<28><16>L<EFBFBD>P\\<EFBFBD>{<EFBFBD><EFBFBD>XA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i:<3A>gzѨ<16>\$<05><><EFBFBD>`y<>W<EFBFBD>馴<EFBFBD><E9A6B4><17>oA<6F><41> <09><>5<15><>Ğ\$<EFBFBD>tU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12>6jG<><47><EFBFBD><EFBFBD>P<EFBFBD>:<3A><>\r<EFBFBD>3O\"I<EFBFBD><EFBFBD><EFBFBD><1A><13>DZ<44><5A>7<EFBFBD><37>kh9<68>f+<2B>ܝ,<2C><>pO<70>Y<7F>Ni=<12><><EFBFBD>\\<1B><><14><><10><>u_<75>d<EFBFBD><02>g\n<EFBFBD><EFBFBD><07>/<2F><05><>lMTI<54>\"T<><54>t<><74><EFBFBD>0<EFBFBD>-<2D><><EFBFBD>?<3F><>3Pm<50>\09<EFBFBD><EFBFBD>,`|e5bɵ<><C9B5>\$5<<3C>-<2D>RU<52><55><EFBFBD><EFBFBD>,<2C><15>U\n<EFBFBD><EFBFBD><EFBFBD>ts<74>Q<EFBFBD>@ <09><><EFBFBD><EFBFBD>tk<74>_9f<39><66>R<EFBFBD><52><EFBFBD>\0<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>`uͮ<75><CDAE><EFBFBD>%Sl<53>p\0S7\0<14>P><18>&߄<>>&[g<><03><><EFBFBD>φ<EFBFBD>R<EFBFBD>0<07><><EFBFBD><0B><>P6C <20><><EFBFBD>d<EFBFBD>d<EFBFBD>=<3D>GP\r<EFBFBD><EFBFBD>=a(5<><35><EFBFBD>)<29><>?a\0<EFBFBD>kvN<76>U<1B>n<><6E><EFBFBD>)r<><0F>=<3D><><EFBFBD>L2߮<32><DFAE>Э<EFBFBD>Q<EFBFBD>P<EFBFBD>H<EFBFBD>S<10>Mv\\X<EFBFBD><EFBFBD>=ͣ<>)<29>(<1A>\0<12><>!0<><30><EFBFBD><EFBFBD>v<EFBFBD>#q<0B><>eT<><54><EFBFBD>ʳN<CAB3>T<EFBFBD>ޱԨ~<15>]<5D>p<EFBFBD><70>x<0B>i<17><><EFBFBD>5T<35><1F><>Dl<14><>@E3<45><33><EFBFBD><EFBFBD>peC<65><06><0F><02>ڀ<EFBFBD><DA80><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>O<EFBFBD><4F><EFBFBD>Pbz\\N<EFBFBD>ܹ<EFBFBD>I<EFBFBD>E<EFBFBD><15>9h<><68>j<>ϰm<CFB0><16>_e<>v<EFBFBD>u<EFBFBD>:4;<3B><><EFBFBD><EFBFBD>S*@<1D>~[,<10>^<5E><19><03><>ɼ<02><>X<EFBFBD><58><EFBFBD>3~<7E> ƙ<><C699>CX5<><35>xZ<>BO<><4F>a<EFBFBD><13>@<13>L)-<2D>\";{V&u<16><><EFBFBD>(<28><^<5E>ӻ<EFBFBD>dT<64>bgB\r od<6F>;<3B>@\\<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>ژЕ<EFBFBD><EFBFBD>\n<EFBFBD> ˜=`) ̤<03>JCZyknt<1A><>\"<EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RB<EFBFBD><EFBFBD>`<60>~ o<>#&xC[b7<62><37>,˂!<21>2<EFBFBD><02>+<2B><><11><>x\0;<3B>*uN<75><4E><14>K&8=s<>p<>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>aЏ<EFBFBD><EFBFBD><EFBFBD>?<3F><>1<EFBFBD>|9P<><02>y<EFBFBD><79><05>3I<33>K<06><>tZż4,T<><54><EFBFBD>SN,z<><1A>f<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD>(J<>?|;<3B>/<2F><>3<EFBFBD>:]M<>(#<23>Y1<59><31>4<EFBFBD><34>S'<15><><1E><1A>s<EFBFBD>M<EFBFBD><01>&<26><>7rH<72>LZ|D<>'<27><><EFBFBD>m~<7E>4<EFBFBD><34>y<EFBFBD>c!<21><>U<EFBFBD>)u<><75><EFBFBD><06>d<EFBFBD><64>9<EFBFBD><39><EFBFBD>kÚ[8af<61>8\0N^C<><43>D<05><><EFBFBD>H_<05><><0B>و<EFBFBD>˚&8n*<2A>8<EFBFBD><38>\r<EFBFBD>:<3A><1E><><0B><>n<EFBFBD><6E><EFBFBD>,8<>8<EFBFBD><38><EFBFBD>f<EFBFBD><66>\"<EFBFBD>\$H<EFBFBD><EFBFBD><11>껀=<3D><1E><07>&<26><><EFBFBD><06>u<EFBFBD><75><EFBFBD>\n<EFBFBD>2<EFBFBD>#\n<EFBFBD><EFBFBD><EFBFBD>>%h<>\"<EFBFBD><EFBFBD>` )yW<79><57>V<EFBFBD>f0q=<3D><> I<><49>%<25>r؍\\<EFBFBD>EW9zC)<29><> <09>|ǨHBQ<42><EFBFBD><7F><12><08>:5<11><>b<>F\\<EFBFBD>`<60>01<30><10>a<EFBFBD>a,.'d<>ϐ9<CF90><39>N<08>]C r\0<EFBFBD>~j<>#,-<2D>K<EFBFBD>y<EFBFBD>an<><6E><EFBFBD><EFBFBD><EFBFBD> b<>K<EFBFBD><11><><0C>,M<><4D><EFBFBD>!<21><><07><>/<2F>@1<><31>B<EFBFBD>fG<1D><1A><>d\$?<05>d<EFBFBD><64><EFBFBD>oG\\9<02><>VN5UJ<55><4A>ф<EFBFBD>ɪ<EFBFBD>c<1B><07><><11><>[Gm<47><6D><EFBFBD>L<EFBFBD><4C><EFBFBD>^<1F>v({<EFBFBD>ɹs<EFBFBD><-<2D>]}&<10>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[腑zH<7A><48><08>nD+<2B><>R<08>ldY<64><02>=<0E><>WV<57>s<EFBFBD>:-<2D><>H<EFBFBD>_<EFBFBD><5F><EFBFBD>8jzj<7A><6A><EFBFBD><EFBFBD>5<EFBFBD><08><><04>\"\0\"N?@;<11>O{<EFBFBD>aN<EFBFBD>];,<14><04><>SOFH<>Ӫ<EFBFBD><01><>QD<51><44><EFBFBD>R!<13><><EFBFBD>\\<EFBFBD><EFBFBD>l ¯оc<D0BE><63><19>G<>D<EFBFBD><44><EFBFBD><0E><>I<1B>H<EFBFBD>/.x\"<EFBFBD><EFBFBD><EFBFBD>Rߤ<EFBFBD><13><>)<29> ^<5E>A<EFBFBD>]<5D><>WB颶.d<><64><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>L<EFBFBD><4C> }<7D>x<1E><07>&4<><34>?<3F><><EFBFBD>z<EFBFBD><7A>t<74><F3B3B7B4><EFBFBD><EFBFBD><*<19>8<EFBFBD><15><><EFBFBD>e}{HZ<48><5A>1,(o<>o<EFBFBD>xW<>t<>2<>P<EFBFBD>#<23>A*<08><><EFBFBD><EFBFBD><EFBFBD>o[<5B><><EFBFBD><EFBFBD>.x>NP<4E>jO<><4F><EFBFBD>*<2A>\$LAo<EFBFBD>F<EFBFBD>\0<EFBFBD><15><><EFBFBD>> <09>\r|=sF<73>p<0B>\"<EFBFBD>ڲuuXx<58>b<EFBFBD>4\n<EFBFBD>Z|<0F><>\"A<EFBFBD><02><><EFBFBD>mvB;<3B><><EFBFBD>`y<>(mB8<42><38><1F><><EFBFBD>dE<64><45>FH<46><11>8<EFBFBD>qs<>>!U<>R<19><>搪<EFBFBD>Y<EFBFBD>H<>qp\n<EFBFBD><EFBFBD><16><><G<><47><13><>b<EFBFBD><62>o<EFBFBD>Tj:<3A><><EFBFBD>974V<08><07><>:<3A><><04> 3<>IB<49>U<EFBFBD><12>{<EFBFBD><EFBFBD><03><><EFBFBD>^<5E>4<>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><1B>\0'<27>n<>^WEvI<76><49>s<01><05>y<EFBFBD>I<>6<EFBFBD>V-)\$C<EFBFBD>I!<21><07><><EFBFBD><EFBFBD><EFBFBD>Y%)4<16>]p<><70>ח<04><><EFBFBD>4<EFBFBD><34><EFBFBD>\r%<25><>\\,8<>Y2<59>Mv<4D>B*R<>\"dw<><12>o<EFBFBD>( <09>/\"<EFBFBD>hm,W\0c@<40><>{^<5E>߮<>ZDP<17>]<5D>u6P/<2F><>_<EFBFBD>L<EFBFBD><4C><EFBFBD>\r<EFBFBD>i<>P<EFBFBD><50>Nh<4E>&jl<6A><6C>_<EFBFBD><5F>\"<1E><><EFBFBD><EFBFBD>N%<25><>uFc <20><><08><><EFBFBD>4L<34>1<EFBFBD>b{\"ٞ<EFBFBD><04>@<40><>ۛ<EFBFBD><DB9B>M<EFBFBD><4D>\"w<13><>O<EFBFBD><4F>.<2E>2<EFBFBD>L<EFBFBD>>E<><45>P<EFBFBD>GG<47>9d<39>VN<56><15><>/<2F><01>[u+y<>6<EFBFBD><36><EFBFBD>8{<EFBFBD>Y<EFBFBD>9Z@bн<>D<EFBFBD><18><><17>\"<02>߀<EFBFBD>{<EFBFBD>p<EFBFBD><EFBFBD> S<><53>Y|刢?<3F>оow\"<EFBFBD>8<11>D<EFBFBD><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>`~<7E><>\0b/!˄/<2F>`8<><38><<3C><0C>!<21><>Å<EFBFBD><C385>Ӿ<EFBFBD>9<EFBFBD>v!V(?P<18><><EFBFBD><EFBFBD>ߪr<DFAA><72>?J<><4A>@{<EFBFBD><EFBFBD>}<7D><>I<EFBFBD><49>_<EFBFBD>\"<EFBFBD>o<><6F><EFBFBD>,<2C>k<1E><>@<40><><13><><1F><><11><><EFBFBD>2<16>1<EFBFBD><31><07><17>v<EFBFBD><1F><>~<7E><>V<><16>%<16>06K<36><0C><><EFBFBD>2<EFBFBD><32>n<EFBFBD>1q'k<><6B>T<EFBFBD>U鉪EH<45><48><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/Ϥ&<26><>_K+<2B><1A>q<EFBFBD><EFBFBD>,<2C>~<7E>i<EFBFBD>eB~î<>3<EFBFBD><33>Ch㜪ߨ {]<5D>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23><0F><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><>a<EFBFBD><61>_<EFBFBD><5F><1A><><EFBFBD>-<0B>8<07><><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A7~X<><58><EFBFBD>??<3F><EFBFBD>+<2B><><EFBFBD><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>X|)ii<69>\n<EFBFBD><EFBFBD><EFBFBD>ڢ.)B1<08>o<EFBFBD><6F>\n<EFBFBD>X<><58><EFBFBD>80A<30><41><EFBFBD><EFBFBD><EFBFBD><05>t<EFBFBD>.)4oo=<3D><1C>/<2F><>(<28>\0<EFBFBD><EFBFBD>C <20><><EFBFBD>: <20>\r<EFBFBD>V,Ad<41><64><EFBFBD>n<EFBFBD>Pa <05><13>o<>)<29>\"<1B> <20><>F<EFBFBD>z<EFBFBD><7A>2<EFBFBD>o<0B>c\n2!d#<23><>\0<EFBFBD>@4\0<EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>Z<EFBFBD><5A><EFBFBD>=ؚ;\\<EFBFBD>f.FZ@O\$\0<EFBFBD>!<04>3<EFBFBD><33><EFBFBD><EFBFBD>*\0<1E><10>0<EFBFBD><30><EFBFBD>p<15>bA<62><07><><EFBFBD><01>Q<EFBFBD><51><11>\0<15><><01>Y<EFBFBD>j<EFBFBD>´<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>N\n\0\$<EFBFBD>~<7E><>Ԡ<EFBFBD><D4A0>VJ<56><4A>%<25><><EFBFBD> U<>t<EFBFBD><74><EFBFBD><EFBFBD><08><><EFBFBD>`<60>i|#w<><77>><3E><>#<23>:2<><32>E\$5 <20>#<23>\rdY<EFBFBD>\$<EFBFBD>B^<5E><><EFBFBD>pD5ȴ<35><C8B4><EFBFBD>K B<><42><EFBFBD>i<EFBFBD>&<26>rl\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>,<2C><><EFBFBD>框B 9}<7D><>Po<><6F><EFBFBD>\\0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QR<51>\nP)<29>\0<EFBFBD>2<EFBFBD><EFBFBD>d?<3F>Ah<41>k<06><1B>\r<EFBFBD><EFBFBD>\0W@<40>B*\$<EFBFBD><04><0C><1F><06>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>)L<>x<EFBFBD>p{<EFBFBD>-U<07>k<EFBFBD>yz<><04><><05><><EFBFBD>mA<6D>T<EFBFBD>A<>8<><38>ओ<>:aG<61><47><05>jǘ\0<EFBFBD><01><1D><><10>B<EFBFBD><0E><>A<EFBFBD><41>\"<EFBFBD>.<2E><> Oe\0z<>>Ep<><70>AKX<>hh\rd<EFBFBD>-<2D>`4V!<21>fxV<><56>%<25><><EFBFBD>8<EFBFBD>x<EFBFBD>ǧ<EFBFBD>-<2D>'<27><><EFBFBD><EFBFBD>r<EFBFBD><72>PZ!<21><>:<Hl\0");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("v0<EFBFBD><EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==<3D><>FS <09><>_6MƳ<4D><C6B3><EFBFBD>r:<3A>E<EFBFBD>CI<43><49>o:<3A>C<11><>Xc<58><63>\r<EFBFBD>J(:=<3D>E<EFBFBD><13><>a28<03>x<EFBFBD><78>?<0F>'<27>i<EFBFBD>SANN<02><><EFBFBD>xs<78>NB<><42>Vl0<6C><30><EFBFBD>S <09><>Ul<14>(D|҄<><D284>P<EFBFBD><50>><17>E<EFBFBD>㩶yHch<><68>-3Eb<45><62> <20>b<EFBFBD><62>pE<70>p<EFBFBD>9.<2E><><EFBFBD><EFBFBD>~\n<EFBFBD>?Kb<4B>iw|<7C>`<60><>d.<2E>x8EN<45><4E>!<21><>2<><05>3<EFBFBD><33><EFBFBD>\r<EFBFBD><1C><>Y<EFBFBD><59><EFBFBD>y6GFmY<6D>8o7\n\r<10>0<EFBFBD><d4<64>E'<27>\n#<1E>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>C!<21>^t<>(<13><>bqH<71><48>.<2E><><07>s<EFBFBD><73><EFBFBD>2<>N<EFBFBD>q٤<71>9<39><EE8BA6>#{<02>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3nӸ2<D3B8><32>r<EFBFBD>:<<3C>+<2B>9<EFBFBD>CȨ<43><C8A8><EFBFBD>\n<<3C>\r`<60><>/b<>\\<EFBFBD><10><>!<21>H<>2SڙF#8Ј<38>I<13>78<37>K<EFBFBD><1A>*ں<>!<21><><EFBFBD>鎑<EFBFBD><E98E91>+<0F><>:+<2B><><EFBFBD>&<26>2|<7C>:<0B><1C>9<EFBFBD><39><EFBFBD>:<0E><>N<EFBFBD><4E><EFBFBD>pA/#<23><> <20>0D<04>\\<EFBFBD>'<27>1<EFBFBD><31><1E><><EFBFBD>2<>a@<40><>+J<><4A>.<2E>c,<2C><><0C><><EFBFBD>1<EFBFBD><31>@^.B<><42>ь<EFBFBD>`OK=<3D>`B<17><>P<EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD>>(<28>eK%! ^!Ϭ<>B<EFBFBD><42>HS<14>s8^9<>3<EFBFBD>O1<4F><31>.Xj+<2B><><EFBFBD><EFBFBD>M #+<2B>F<>:<3A>7<>S<EFBFBD>\$0<EFBFBD>V(<28>FQ<46>\r!I<07><10>*<2A>X<EFBFBD>/̊<><CC8A><0C><>67=<3D>۪X3݆؇<DD86><D887><EFBFBD>^<5E><>gf#W<><57>g<EFBFBD><67><EFBFBD>8ߋ<38>h<EFBFBD>7<EFBFBD><37>E<EFBFBD>k\r<EFBFBD>ŹG<EFBFBD>)<29><>t<EFBFBD>We4<65>V؝<56><D89D><EFBFBD><02>&7<0F>\0R<05><>N!0<>1W<31><57><EFBFBD>y<EFBFBD>CP<43><50>!<03><>i|<7C>gn<67><6E>.\r<EFBFBD>0<EFBFBD>9<EFBFBD>Aݸ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD>^<04>8v<38>l\"<EFBFBD>b<>|<14>yHY<1F>2<1B>9<05>0<EFBFBD>߅<EFBFBD>.<2E><>:y<><79><1E><>6<EFBFBD>:<05>ؿ<EFBFBD>n<EFBFBD>\0Q<EFBFBD>7<EFBFBD><EFBFBD>bk<><\0<EFBFBD><EFBFBD>湸<EFBFBD>-<2D>B<EFBFBD>{<EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><10><>&<26>/n<><6E>w<><77>2A<41><D7B5><0C><><EFBFBD>A<0B>0yu)<1A><><EFBFBD>kLƹtk<74>\0<EFBFBD>;<16>d<EFBFBD>=%m.<2E><>ŏc5<63>f<><66><EFBFBD><EFBFBD><EFBFBD>*<2A>@4<><34> <20><16><>c<EFBFBD>Ƹ܆|<15>\"맳<EFBFBD>h<EFBFBD>\\<EFBFBD>f<08>P<05>N<EFBFBD><4E>q<EFBFBD><71><EFBFBD><EFBFBD>s<EFBFBD>f<EFBFBD>~P<><50>pHp\n~<7E><><EFBFBD>>T_<><5F>QOQ<4F>\$<EFBFBD>V<EFBFBD><EFBFBD>S<EFBFBD>pn1<1F>ʚ<EFBFBD><CA9A>}=<3D><><0B>L<><15>Jeuc<75><07><><EFBFBD><EFBFBD>aA|;<3B><>ȓN<C893><4E>-<2D><1B>Z<EFBFBD>@R<><07>ͳ<EFBFBD> <20> <09><>.<2E><1F>2<EFBFBD><32><EFBFBD><0C><><11>`RE<52><45><EFBFBD>^iP1&<17><>ވ(<28><><EFBFBD>\$<EFBFBD>C<0E>Y<EFBFBD>5<EFBFBD><35><EFBFBD><D883>axh@<40><>=Ʋ<1E><>+>`<60><>ע<><17><07>\r!<1C>b<EFBFBD><62><EFBFBD>r<0E><>2p<13>(=<3D><><18><17>!<21>es<65>X4G<34>Hhc <20>M<EFBFBD>S.<0E><>|YjH<><48>zB<>SV<53><56>0<>j<>\nf\r<EFBFBD><EFBFBD><EFBFBD><14><>D<EFBFBD>o<><6F>%<25><>\\1<EFBFBD><EFBFBD><01>MI`(<28>:<07>!<21>-<2D>3=0<><30><EFBFBD><0B><><13>S<EFBFBD><53><EFBFBD>gW<67>e5<65><35>z<EFBFBD>(h<05><>d<15>r<EFBFBD>ӫ<02>Ki<69>@Y.<2E><><12><><EFBFBD>\$@<40>s<0B>ѱEI&<26><>Df<44>SR}<7D><>rڽ?<3F>x\"<EFBFBD>@ng<6E><67><04><>PI\\U<><55><<3C>5X\"E0<1B><0B>t8<74><38>Y<EFBFBD>=<3D>`=<3D><>><3E>Q<19>4B<>k<EFBFBD><6B><EFBFBD>+p`<60>(8/N<>qSK<53>r<EFBFBD><72><EFBFBD><EFBFBD>i<01><>O*[J<1C><>RJY<4A>&u<><75><13>7<0F><><15><><EFBFBD><EFBFBD>#<23>><3E><><EFBFBD>Xû<>?AP<41><50><EFBFBD>CD<43>D<EFBFBD><44><EFBFBD>\$<14><><02><><EFBFBD>Y<EFBFBD><59><<3C><><EFBFBD><EFBFBD>X[<5B>d<EFBFBD>d<EFBFBD><64>:<3A><>a\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>Π<><CEA0>W<EFBFBD><57>/ɂ<><C982>!+eYIw=9<><39><EFBFBD>i<EFBFBD>;q\r\n<EFBFBD><14><11>1<EFBFBD><31><01>x<EFBFBD>0]Q<><<3C>zI9~W<><57>9RD<0B>KI6<49><36>L<EFBFBD><4C><01>C<EFBFBD>z<EFBFBD>\"0NW<>WzH4<48><34>x<EFBFBD>g<EFBFBD>ת<EFBFBD>x&<26>F<EFBFBD>aӃ<61><D383>\\<EFBFBD>x<EFBFBD><EFBFBD>=<3D>^ԓ<><D493><EFBFBD>KH<4B><48>x<EFBFBD><78>ٓ0<D993>EÝ҂ɚ<D282><C99A>X<EFBFBD>k,<2C><0E>R<><52><EFBFBD>~ <09><>̛<EFBFBD><CC9B><EFBFBD>Ny<4E><79>Sz<53><05><>6\0D <09><><EFBFBD><EFBFBD><EFBFBD>؏<EFBFBD>hs|.<2E><>=I<>x}/<2F>uN<75><4E><08><>'R<><02><05>n'<27>|so8r<38><72><EFBFBD>t<><74><EFBFBD><EFBFBD>a<EFBFBD>\0<EFBFBD>5<EFBFBD>P<EFBFBD>֠dẘ<77><CC8A>̕q<><71><EFBFBD><EFBFBD>5(X<>Hp|K<>2`<02>]FU<46>~!<21><>=<3D> <20>|<7C>,up<75><70>\\<EFBFBD><EFBFBD><EFBFBD>C<>o<0B>T<EFBFBD>e╙C<E29599>}*<2A><>f<EFBFBD>#<23>shp<0C><>5<EFBFBD><35><1A><><EFBFBD>mZ<6D>x<EFBFBD><78>fn~v)DH4<48>e<EFBFBD><03>v<EFBFBD><08>V<EFBFBD><56>by<62><79>T<EFBFBD><54>̥,<2C><EFBFBD><7F><<3C>y,̫֞<D69E>2<EFBFBD><32><EFBFBD>z^<5E><><EFBFBD><EFBFBD>K<EFBFBD><4B>2<EFBFBD>xo <09> <20><><EFBFBD>2<EFBFBD> I<><49>a<EFBFBD>h<1C>~<7E><0B>c<><63>ej<65>6<EFBFBD><36>)<29>]<5D><04><><18>5<EFBFBD>͍dGE<D78A>t<EFBFBD>'N<>=V<><56>ɜ@<40><><EFBFBD><EFBFBD>b^<5E><><EFBFBD><EFBFBD>p:k<><6B>1<EFBFBD>StTԙ<>F<>F<EFBFBD><46>`<60><18>`<60><0E>{{<EFBFBD><1F><><EFBFBD>4<EFBFBD><34>7<EFBFBD>pcP<63>ط<EFBFBD><D8B7>V<EFBFBD><56>9<EFBFBD>ىLt<4C> M<><4D><EFBFBD><03><>{<EFBFBD>C<1F>l<EFBFBD><6C>n47s<37>PL<50><14>!<21>9{l a<><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!pG%<25><0F>)<29><<3C><>2*<2A><<3C>9rV<72><56><EFBFBD><EFBFBD>)<29>|<7C>A<EFBFBD><41><EFBFBD><EFBFBD>Ip=<3D>\n7d<EFBFBD>>j<14>^6<>\09<EFBFBD>#<19>7<D597>T<EFBFBD>[<03><><EFBFBD>i:<3A><><EFBFBD>X<06>D<1D>'&8<>/<2F><><EFBFBD><EFBFBD><EFBFBD>;<3B><>#<23>f<EFBFBD>%<25><0E>Kj3<6A><33><EFBFBD>;<3B><>Z<EFBFBD>^<0B>]<5D><>NQw<51>tȬ\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǎ<EFBFBD>-<2D><>;<3B>L<EFBFBD>X<EFBFBD>+<2B><>P<0B>̄<>:<3A>N<EFBFBD><4E><1E><> \0Dz<EFBFBD>P<EFBFBD><EFBFBD>y<EFBFBD>jt><1E><>.[<5B><w<>\"|<7C><>so-<2D>;';<3B>ǟ<><11><><EFBFBD>t\r<EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> <09>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54>\nL\n<EFBFBD>)<07><><14>(A<>a<EFBFBD>\" <20><03><> <09>&<26>P<EFBFBD><14>@O\n師0<>(M&<11><>b\0<EFBFBD><EFBFBD>@<40>@<40>\n`<60>=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*̔<><CC94>8<EFBFBD>/<2F><>kH<6B>F<EFBFBD><46><EFBFBD>\"<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B&<26>,<2C><<3C><><EFBFBD><EFBFBD>4b<34><62>eN<65>)<29>FEO<45><05>NSN<53><4E>O<EFBFBD><4F>\r<EFBFBD>.x<><78>\"<EFBFBD><EFBFBD>k<02>D\r<EFBFBD><EFBFBD> <20>0<EFBFBD>p[<03>2RI0Z<30><5A><0C><><EFBFBD><03><>'<27><><EFBFBD>f<EFBFBD>ix<69>P0d<30><64><EFBFBD>|<7C>h<EFBFBD>O<EFBFBD><02><>mkH<6B>Β<EFBFBD><CE92>7<08><><0E>\nn<EFBFBD><06><><01><>eP\"<EFBFBD>0x<EFBFBD>P<EFBFBD><02><><EFBFBD>02<30>n6<6E>Wχ<0E>N[<0E>!<21><><0E><0C>6ﰣ\r.u\rp<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>.(<28>mGt\rox<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1!\n<EFBFBD>\r<EFBFBD>:<3A><>z+<2B><>lV<>'<0B><><12>|?P<>P<><11>:<3A>0<EFBFBD><05> <20>bT<62><54>au<0B>x`<60><0C>co}<16><>O<>1W<07><><14>q8<71>l<><6C>\\<EFBFBD><EFBFBD>u<17><0C>@<40><0E><>\$NePKq<><71>g<EFBFBD>A(<28>mc<6D>L'`Bh\r-<2D>!<21>b`<60><><1D>k <20><0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`N<>0<EFBFBD> <09><0F><>nN<6E>`<60><>D\0<EFBFBD>@~<7E><06><><EFBFBD>`K<><4B><EFBFBD>]<03><><0C><>|<7C><><1E>ʾ<EFBFBD>A#<23><>i<>Y<EFBFBD>xf<78><66>\r<EFBFBD>4 ,v<>\0ދQ<EFBFBD>ɠN<EFBFBD><EFBFBD>Ro<EFBFBD><EFBFBD><EFBFBD>m<EFBFBD><05><> 1<>&Ǫ<>p<>r <20><>np<6E>6%<03>%ly\rb<EFBFBD>ʕ(<28>S)')@<40>ޯD<DEAF>M<EFBFBD>I<>s {&<26>KH<1A>@d<>l<EFBFBD>wf0<66><30>x<><78>6<EFBFBD><36>~3OP<4F>h0\"<EFBFBD><12>D<EFBFBD>+<2B>A<EFBFBD>\$I<EFBFBD>`b<>\$<EFBFBD><EFBFBD>\$<EFBFBD>R<EFBFBD>L<EFBFBD><EFBFBD> Q\"R<EFBFBD>%<25><><EFBFBD>R<>FV<04>Ny+F\n<EFBFBD><EFBFBD> <20>%fz<66><7A><EFBFBD>*<2A>T<EFBFBD><54><EFBFBD>Mɾ<4D>R<EFBFBD>%@ڝ6\"<EFBFBD>bN<EFBFBD>5.r<>\0<EFBFBD>W<EFBFBD><EFBFBD><0E>d<0C><>4<EFBFBD>'l|9.#`<60><><EFBFBD>憀<EFBFBD>أj6<6A>Τ<EFBFBD>v<07><><EFBFBD><EFBFBD>vڥ<76>\rh\r<EFBFBD>s7i<EFBFBD>\"@<40>\\DŰi8#q8<71><38> <09>\0ֶbL. <20>\rdTb@E <20>c2`P( B'<27><0B><><0F><>0<EFBFBD><30>/<2F><>|<>3<EFBFBD><05><><EFBFBD><EFBFBD>R.So*<2A><><EFBFBD><EFBFBD>cA)4K<>}<06>:S<><53><EFBFBD><EFBFBD><EFBFBD>\0O8<EFBFBD><EFBFBD>B@<40>@<40>CC@<40>A'B\0N=<07>;S<>7S<37>;<3B><>D <09><>MW7s<37>ED<45>\rŨ<0C>p<EFBFBD><70><<3C>DȺ<44>9 <20>}4<><34><EFBFBD><EFBFBD>_o.<2E><>rԉI\r<EFBFBD>HQz<EFBFBD>EsB<EFBFBD><1E>\0e<14><>J<EFBFBD><4A> <20><>KwHt<48>J4,^25h2<68>i%;<3B>=<03><><03>LL6}<7D><>7#w<<3C>lrT<72>;tPl76<37>P<EFBFBD>rJ<72>\n@<40><0C><>5\0P!`\\\r@<40>\"C<EFBFBD>-\0RSH~F倵ņO<C586>@ǭ<><C7AD><EFBFBD><EFBFBD>g<><67><13>)F<>*h<>\0<EFBFBD>p<EFBFBD>COu6<>ҎYO<59>Rg w9B<04>Ӛ<EFBFBD><D39A>L\"䘵<EFBFBD>_63gU5\r7,6\"<EFBFBD><EFBFBD>1<><0F><><15><>y<EFBFBD><79>V<EFBFBD>%VğWX<><58>]O<><4F>J<06> #XQGIXɰ<58><07>Sq<53>+<2B>(<28><><EFBFBD>q<15>R<>GH.l6[R<>0\0<EFBFBD>%H<><48>C}Sr7<><37>7<EFBFBD>cYK<59><14><>)<29>.<2E>C<EFBFBD><43>r<EFBFBD>;<3B>Ц)<29>M+<2B>3<EFBFBD><33> <20><>4<EFBFBD><34>|<7C>Ϊ1<CEAA>ZJ`5W<35><57>L<15><>-Smx<6D><78>H<EFBFBD><48>dR*<2A><07><><EFBFBD>JЦ\r<EFBFBD><EFBFBD><EFBFBD>|52<35><32><EFBFBD><EFBFBD><EFBFBD>-C-1R<31>R<EFBFBD><52><EFBFBD>T`N<>e@'Ʀ*<05>*`<60>><3E><><EFBFBD>\0|<7C><>C!nE,<2C>ag<61>.<2E><>b<EFBFBD>f<EFBFBD>Ý8ӓ_<D393><04><>a`G<><05><>p<EFBFBD>`<60>m<EFBFBD>6<><36>Rz<52>\0<EFBFBD><EFBFBD><EFBFBD>[-#mO<14>1H\rd<EFBFBD>M<>MNMqnM<6E><4D>nq<><71><0F><>R6<52>m<EFBFBD>On-t<>v<EFBFBD><76>æ\r<EFBFBD>]`<60><><EFBFBD>-<2D>`j<><0F><>X<EFBFBD>Mo<4D>]`OU<4F>AF<41><46><07><>37<>p<>>'J'm<>('M=j9jV<6A>ZbBn<42><<15>@<40><<3C><1F><>fe<66>:\0<EFBFBD>K(<28><>N<1E><><EFBFBD>uN<75><0B><><1B>-!<21><>1vҍH(<28>Qg<51><67>µ<1F><05><>xC<78><@<14> <20>c<EFBFBD>[<5B>c\\2o,5<>˃q0m}<7D>i~+<2B><>e<EFBFBD>Ѷ<EFBFBD><D1B6>*<2A>}<7D><>Ƞ<EFBFBD>}<7D><>M<EFBFBD><4D>~<7E><><12>|<7C>̘\r<EFBFBD><EFBFBD> <20>@<40>\"hB<68>\$B<EFBFBD>2<EFBFBD>c\$g<EFBFBD>\$<EFBFBD>5b?<3F>6!w<><77>+~<7E>l1<6C><31><EFBFBD><EFBFBD>`<60><> s<><1F><><EFBFBD><0B><> <09><>.<16>v7m<37>Ec`Q<>ecb6<62><36><EFBFBD>`<60>\"&f<><66>x<EFBFBD>\"<EFBFBD>2<EFBFBD>E~Fz<46><15>\$<EFBFBD>[/<2F><>0,w~`u<1F><>>w<>%<25><><EFBFBD>X<EFBFBD>\$دv<EFBFBD>V<EFBFBD>\"-<2D>R<EFBFBD><52><EFBFBD><EFBFBD>%W<><0B><>D<12>@ʀVo<1F><><EFBFBD><0C><><EFBFBD>E@<40>y<EFBFBD><79><02>h<EFBFBD><68><EFBFBD>1<EFBFBD><31>\"tЙ<07>O<EFBFBD><4F><EFBFBD>/<2F><><07><><EFBFBD><EFBFBD><EFBFBD>!<21>[<5B><><EFBFBD><02>`:x}<7D>@]<5D><>b<0C> <20>@<0B><><0B><04><><0C><>5<EFBFBD>U(K<>y<EFBFBD><79><EFBFBD>S<EFBFBD><53><EFBFBD><18><15><>>8D<44><CDB8><EFBFBD><EFBFBD>yw<79>=<3D>|T,<2C>'L<><4C>Y<EFBFBD><0B><><EFBFBD><EFBFBD>\\<EFBFBD>L<EFBFBD>͌<EFBFBD><EFBFBD>d<EFBFBD><0C><05>.<2E><><EFBFBD><02>@<40>ђ<EFBFBD><D192><10>9<<3C><>`9E<39><45>Z<0C>C<EFBFBD>ײ\\h<EFBFBD>=<3D>qR<71>`GGW<47>X{<EFBFBD><EFBFBD>5<EFBFBD>-L<><4C>RJ\$JP+<2B>7X<37><58><EFBFBD><EFBFBD>ulӘh̵<68><CCB5><EFBFBD>Y<EFBFBD>P<18>g<EFBFBD><67><EFBFBD><EFBFBD>z<1B><><EFBFBD><EFBFBD>u<EFBFBD>iwyL<79>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>cY<63>7yF<<3C>v\r<EFBFBD><EFBFBD><EFBFBD>57<EFBFBD>d<EFBFBD>O<EFBFBD>g<EFBFBD>k<>Yq<59>8<EFBFBD>p<EFBFBD> <09><18><>\n<04><>*'<27>9\"<EFBFBD>`<60><><1E>w[<5B>G<><47>HD<48>y<EFBFBD>_]<5D>c<EFBFBD><63>iR<69>˖<EFBFBD>o<EFBFBD><6F>w<EFBFBD><77><EFBFBD><EFBFBD>9 <09>{<EFBFBD><EFBFBD>]<5D>Oݍ8<DD8D><38>C<EFBFBD>67<36>:I<>v<>S<><53><EFBFBD><EFBFBD>:_<>U7<55><37>1<EFBFBD>z<EFBFBD><7A>ڵyy<79><7F><EFBFBD><EFBFBD><CDB9><EFBFBD>M<EFBFBD>0ͬ<30><CDAC>c0<>z<EFBFBD><7A>?<3F><>z<04>7}W<>'<27><><EFBFBD><EFBFBD>5<EFBFBD><13>_eƸ<65><C6B8>zm<7A>l\nC<EFBFBD>X_<EFBFBD>(<0C><>Ý<EFBFBD><C39D>{@<40>}<7D>X`SgBլD<><44>u<EFBFBD><75>ñ<EFBFBD>!<21>k~<7E><><EFBFBD>Y<EFBFBD>O<EFBFBD>vK<76>\0<EFBFBD>c<EFBFBD>r<EFBFBD>r<EFBFBD>(<28>^`<60>n<EFBFBD><16>;y<>7<EFBFBD>z+<2B>{<EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>:\$<0C>M<><4D><EFBFBD><EFBFBD>\"I<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%<25>om<6F><6D><EFBFBD><EFBFBD>Š <09><>,PK<50><4B><EFBFBD><05>9<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʅ<EFBFBD><0C><>g\n<EFBFBD>a~<7E><><EFBFBD><04><>x<EFBFBD>%<18>~<1B><><EFBFBD>W<EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD>R<EFBFBD><07>ٌ<EFBFBD>X<DD8B><58>x<EFBFBD><78><EFBFBD><EFBFBD>%<25><><EFBFBD>z<EFBFBD>SzթX?<3F>y#}<7D><1F>L);<3B>!<21><>yߕ<79>s<EFBFBD><19><><EFBFBD><EFBFBD><EFBFBD><1A><><EFBFBD>و<EFBFBD><0F><><15>:<03><><EFBFBD>x<EFBFBD>z+UԺ<55><D4BA><EFBFBD>|<7C><0C>1<EFBFBD><31>u<EFBFBD><75>HO<48>'<27><>c<EFBFBD><63><EFBFBD><EFBFBD>ϩ{<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><g<><67>/<2F><><EFBFBD>V:퉠<>Ɋ<EFBFBD><<3C><><EFBFBD>\\3<EFBFBD><18><><19>e\0<EFBFBD><EFBFBD>Z<07><>Tx<54>Zq\nl<><6C><EFBFBD><EFBFBD>_<EFBFBD><1C><><EFBFBD><EFBFBD><EFBFBD>I_<49>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>y<03><19><>,ۙ]<1F><><EFBFBD><EFBFBD>9<EFBFBD>ۚ͠,회<><ED9A8C><EFBFBD><01><>k<EFBFBD>:;<3B>}-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><>E\0S~2<11><><EFBFBD><EFBFBD>\\ <09><>UͺTV3<56>o<EFBFBD>E<EFBFBD>|<7C>E<EFBFBD><45><EFBFBD> C<>m<EFBFBD>Ϡ<EFBFBD><CFA0><EFBFBD>I<EFBFBD>=<04>\0<EFBFBD>Н<12>z<EFBFBD><7A>kGٹ\0<EFBFBD><18>ّ<EFBFBD>9<EFBFBD><39>1 <09>y<EFBFBD><79><0C><><EFBFBD><EFBFBD><EFBFBD>=5ۛ<35><DB9B><EFBFBD><Й<><D099>]G<>Й<EFBFBD><D099>S<EFBFBD><53>cՇ<63>!\r<EFBFBD><EFBFBD>DR<EFBFBD>]<5D>P'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pLtǚ<08>H+`Ӿ<>=<3D>e9ڇ<39>Q{<EFBFBD><EFBFBD>9_b\$5<EFBFBD><EFBFBD>l<EFBFBD>Uzy<EFBFBD>n<EFBFBD>z`xb<>k<>M <09>3<EFBFBD><02> Z\r<EFBFBD><0C><>q]<5D>)ֽ{#<23>c<EFBFBD><63><EFBFBD>WI<57>\r<EFBFBD><EFBFBD>8<>\r<EFBFBD><EFBFBD>3<EFBFBD>䩽a<E4A9BD><61><EFBFBD>SI<53><49>'<27>^a<>~e<>D稟<><E7A89F><14>>o<>2 N<><4E><EFBFBD>ސP>cΞ<63><CE9E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^G<><47><17><><1D><>Y<EFBFBD><59><EFBFBD>͞<EFBFBD><CD9E>~x<><78><EFBFBD><EFBFBD>^<5E><>Rg\\<EFBFBD><EFBFBD>\$+<2B>ՍP<D58D>kY*4<><34>~<7E><>,<2C><0B>Mݶ<4D>W-<2D>hhG<68>_Iԉv-<2D><>?iv<69><76>e>T\"\$<EFBFBD><EFBFBD>[Ը+,<2C>)<29>K<><4B><EFBFBD><EFBFBD>u<EFBFBD>q?KW<4B>\rk<EFBFBD>L%<25>}<7D>tԻ<74>~<7E>0<EFBFBD><30>|Pk<50><04>՟T<>=<3D>?hE<68>n=Es<45>~<7E><><EFBFBD><EFBFBD><EFBFBD>xJH<4A><48>K<EFBFBD>Vuk<75><6B>?X?<3F><>7<1F>B)<29><>ci<69><7F>D<EFBFBD><44><08><>\rא>D'<27>,ʟ<>>v<1F>@<40>X<7F>+\rr<EFBFBD><EFBFBD><EFBFBD>@\r<EFBFBD><EFBFBD>U<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ׯ<EFBFBD><EFBFBD><EFBFBD><05><EFBFBD>Ӏ<EFBFBD><D380>1P>U,<2C><>3<>G<EFBFBD><1B>>>tѥ}<01><><14><>\"=<17>D}<T<><54><EFBFBD><1B><><EFBFBD>%<25>9<><39><EFBFBD>i<EFBFBD>ʫ<18>o<EFBFBD>1<EFBFBD>e]<5D><><EFBFBD>h<EFBFBD>i<EFBFBD><69>&]<5D>|<7C><>*<11><01><0C>l<08><><EFBFBD><06>1<EFBFBD>D\r)XZRY<52>l<03><>\"<EFBFBD>E<EFBFBD><EFBFBD>/<2F><><EFBFBD>8<EFBFBD>ײ<EFBFBD>*<06>ByK<79><4B>4<EFBFBD><34>5<EFBFBD><35><EFBFBD>Nrz\\<1E>p<EFBFBD>ӽ9<D3BD><39>Yz<59>JH<4A><48>S<0E><>>/<2F>4C<34><43><04><1F><><EFBFBD>&<26><03><0F><>sC<73><18>I<>;Z,ۆb3<62><33><EFBFBD>\rϖ<EFBFBD><EFBFBD>{<EFBFBD>|v<>D\nٟNpÁ^<5E><><EFBFBD><EFBFBD>Ay<41>0az<61><<08><>Ԝ<EFBFBD><D49C>MPS0ڠ<>jew=<3D>Ooz<6F>4<EFBFBD><34>>h1<68><31>L%R<1A>S<EFBFBD> <09><><EFBFBD>}<7D>u82<38><32>𦴮9o<39><6F>n<EFBFBD>cM<<3C>uƶ0\r<EFBFBD>p<17>~<7E>A<>\nj<14>Q<EFBFBD><51><EFBFBD>3z<33><7A>(<28>;<01>3E<33>a<EFBFBD>]<5D>eU<65><55>l40<34>,u<05><><EFBFBD><EFBFBD>f<0F><>f<><66><EFBFBD>H0݆\$1<EFBFBD><EFBFBD><0E><>C<EFBFBD>A<EFBFBD>fi<66><1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嬇<>><1B>Xc<58><63><EFBFBD>ʂT\"<EFBFBD><EFBFBD>6pHg<EFBFBD>D<EFBFBD>H<EFBFBD>?<3F>\"p<>l&<26>K/<2F><>?<3F><><EFBFBD><EFBFBD>`2l<32>m<EFBFBD>*<2A><>TB<54>K\"<EFBFBD><EFBFBD>ϋ<12>ɠ<EFBFBD><06><>\$P\"o<EFBFBD>eV<>k<EFBFBD><<18><>o<EFBFBD><12>I<EFBFBD>r<02>:<3A>=<3D>(<28>x2<78><32><10><><EFBFBD>*Ȁ@=hCE<43><06>F6u+<2B>,Z<>Y<EFBFBD><02>i<EFBFBD><69><EFBFBD><05>r<EFBFBD>^lP<6C>x,g<><67>*<2A>Ȗ<EFBFBD><C896>QE)1i<31>hJ<68><4A>\"<EFBFBD>IF<EFBFBD><EFBFBD><0F><>l<EFBFBD>Y<EFBFBD>|<7C><>T<06>f<06>V<EFBFBD>}U<><55>eo<65> 5Q?)<29><><EFBFBD>\0c<EFBFBD><1D>M<EFBFBD><4D>F<EFBFBD>ʼ<EFBFBD>ڑj<DA91>l<EFBFBD><6C><EFBFBD>lP<6C><50>m<EFBFBD>4<EFBFBD><01>\r<EFBFBD>*<2A>`⨸<><E2A8B8><EFBFBD><EFBFBD>LMiqb<><62><05>V<EFBFBD>)Q<>W<><57>R^a.><3E><><EFBFBD>g <09>o<EFBFBD>x<06><16>\n\0P`@<40><>`\$<EFBFBD>4鏍r<E98F8D><72>Z<04>#H<><48>&<26>ncv)<29>lF<6C> N<02>coX<>F<EFBFBD>9 g<><67><13><><04>\"<EFBFBD>9<>'<27>4t<34>^<02>!<21>< <09><02>#<23><1B><><EFBFBD>0<08><><02>#<23>h<>G|\n<EFBFBD>Bx\0<EFBFBD><1E><><EFBFBD>P<05>T0<13><><1D><><EFBFBD><EFBFBD>6\0TD~#<23><1B><1F><<3C>Ԑ<0C><><EFBFBD>@)H<04>b1<62>I<EFBFBD>[h<>Gj7<11><14>_<EFBFBD><02>!0 <09>CX@<40><1F><>\0<EFBFBD>\n1<EFBFBD><EFBFBD><EFBFBD>@Z@\"ǎ8<EFBFBD>N<02><>\0<EFBFBD><06>jH<6A>\0<EFBFBD>E<EFBFBD><EFBFBD><13><>#<23>ۊi:<><C290><01><><EFBFBD>i#<23>hD<68><EFBFBD><7F>s#<23>!<21><><EFBFBD>T<0C>L<EFBFBD><0C>\$\$<EFBFBD>)<29><>B<EFBFBD><EFBFBD>v<EFBFBD><76>)<29><><01><EFBFBD>-?h<13><><EFBFBD>c<EFBFBD><63>P Oto\$p<15>օB7<42><37><EFBFBD><1C>#<23>~<7E><>D#<23>-0dbDH<> <09>Rl<>J?<1F>\"<EFBFBD>`\n<EFBFBD>A?\0T,(<28>RM<52><4D><EFBFBD><EFBFBD>p\$<EFBFBD>\"<EFBFBD>:I<>SRz<52>t<EFBFBD>\$<EFBFBD><1B>'I><3E>쓜<EFBFBD><EC939C><EFBFBD>'QM262<36>P<EFBFBD><50><EFBFBD>R<07><16><> <09><>\\<EFBFBD>cxF<EFBFBD>&<26>69<36>^<5E><> <09>pN)OHj:Q<><51>~<7E>y\0<EFBFBD>G<0E>yz<79>Fc<46>Ĺ)s*<mQ<6D>\n(2<><08>2<><32>8<EFBFBD>zT<7A>#~[<5B> <18><>G?-<2D><10>1<EFBFBD>.P;<3B>\\<EFBFBD>&<26><><EFBFBD>5֍\0mT<EFBFBD>Qn)p\$<EFBFBD><0E><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><EFBFBD>Zr<EFBFBD>K<EFBFBD>(c\n<EFBFBD>Yw<18><04><><0C>s/<2F>gK<67>]nb<><62>e<EFBFBD>.<2E>K<><4B>P<EFBFBD>p:K<12>C<EFBFBD>{6arؘl<D898><6C><EFBFBD>1<1C>)<29><><EFBFBD>/<11><><EFBFBD>04<30>KU<05><><EFBFBD><EFBFBD>S@x<><78><EFBFBD>˜<EFBFBD><CB9C>Q<EFBFBD><51><EFBFBD><EFBFBD>vT<76>̄<>c.<19><>ʚ<05>:<3A><> 0<>ķ<EFBFBD>L1چT0b<30>h<02>ZL<5A>]<5D>A<EFBFBD>q<EFBFBD>VN<56>L<>\nr<EFBFBD>0<1C>V#\0<EFBFBD><EFBFBD>Ta<EFBFBD><EFBFBD><01><><EFBFBD><C292>2<EFBFBD>`<60>`2,\r<EFBFBD><EFBFBD>-imMhSI<53>T<EFBFBD>xC<78>,<2C><>L<EFBFBD><4C>.IOt<4F><74> 7<>_<EFBFBD><5F><EFBFBD><EFBFBD>T<>rg<04>I<EFBFBD>Kxq8gI<><04>qM<71>cDŦA3 <09> <20>r`\\<14><>U<10><>L<EFBFBD><4C><EFBFBD>Ӝ<EFBFBD><D39C>'A9[<5B>8PQ08<30><38><EFBFBD>2<EFBFBD>1<0C><> rBK`<14>P%<25>Tq <09>C<EFBFBD>F<05><><EFBFBD><EFBFBD>_<13>h<EFBFBD>Qu<<10>C\n<EFBFBD><1C>@<40><y<><79>,&C<0B><><EFBFBD>v0%PO\"x<EFBFBD>*<2A><>綔<>2<07>&<13><02><>X)=p.\0<EFBFBD>{<13><>(N'<27>y<><79><EFBFBD>.2<>\$<EFBFBD><1F>>a<><61><EFBFBD>&<13><1A>)<29><>@\0<EFBFBD>Ov<EFBFBD><EFBFBD><EFBFBD><EFBFBD>#X<><07><>\nNz<EFBFBD>,<02>xbi<62><69>ꁦ<EFBFBD><EA81A6><EFBFBD><02>=i<><69>ZyR<79><52><EFBFBD><EFBFBD>g<EFBFBD>3M<33>V<EFBFBD>s<EFBFBD>\n\nq<EFBFBD><EFBFBD><05>\0<EFBFBD>?<3F>Ah<16>A;`<60>;m<><6D><EFBFBD><EFBFBD>(KAz\r<EFBFBD><EFBFBD>!<21><1D><>O\0EBJP<>BޡXO\0<EFBFBD>@<04>Q4<05><>V0<0E>kuX<08>tYK٫h<D9AB>=<11><><EFBFBD>@<40>(P9<50>'\0<EFBFBD>1<EFBFBD><EFBFBD>\nc<EFBFBD><02>ϙ<EFBFBD>Lh<1C><>B<EFBFBD>k\nU<EFBFBD><EFBFBD><03><> F<> <0E>1<EFBFBD>6<15>+<2B><>B<EFBFBD>R<EFBFBD><52><EFBFBD>Gަe<1D><><EFBFBD>4m:<3A><> \"Z=<0F>J<EFBFBD><4A>L<EFBFBD>w<EFBFBD><77>O:HR<02>A<03><13><>7<03>ލ<15>`<60>͜?<3F><><EFBFBD> J<><4A>B[_<>:2<><0C>p<EFBFBD>:<3A>XϩL<1C>A<04><>B<EFBFBD><42>B<EFBFBD><42>.Ra<52><61>|<7C>r<>AF<><46>џ&<26>T<EFBFBD><54>iir&S<><53><EFBFBD><EFBFBD>4<EFBFBD><34>e0F<30>L1<4C>1<><31>.Q<>k@<40>+<06><><EFBFBD>T<EFBFBD><54>a<EFBFBD><0E>}J<><4A><EFBFBD><EFBFBD><EFBFBD>s<1C><><EFBFBD>:<3A>q<04><1C>4<EFBFBD><1E>%B!V<>4їt<D197>-<2D>*<2A>~<7E><>d<EFBFBD>a_<61>@<40><>;c*mJRR<52>Y4ϥۘf<>d8ɇ9<C987><39>*<2A>09<30>w<EFBFBD>f/t<>k<EFBFBD>.J<><4A>P<0B>@v<><76><EFBFBD><EFBFBD><EFBFBD>[ҐR<D290>;<3B><>\\<EFBFBD>c<EFBFBD><EFBFBD>M<EFBFBD>TJN+^X <20><><EFBFBD>Kp7T2<54>,䨀<><E4A880>d(<02><>V<EFBFBD><56><EFBFBD><1B>FK<46>1<EFBFBD>x.X?<3F><15>)<29>*ND<4E><44><EFBFBD>R<EFBFBD>U,,=2<>+I<>k<EFBFBD><6B>\r<EFBFBD>F<EFBFBD><EFBFBD>j<>7z<37>R<EFBFBD><52>u*\nHϓRګ<06><><EFBFBD><EFBFBD><EFBFBD>\rC<EFBFBD>eLJqպ<EFBFBD><EFBFBD>L<EFBFBD><EFBFBD><EFBFBD>HwN!<21><>Ёt<D081>\"\"<EFBFBD>dzU5U<EFBFBD>h!4<><34>`<0E><>9<EFBFBD><39>Ԭc: E:<3A><><02><>T<54><F29EB4AA>Y]aR<61><52>\0<EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>#!<21>x\\UM<15>f<EFBFBD>#Q3<51>T<EFBFBD>fÈ<66><04><>MBy<42><19><>D<0F><0E><>X<EFBFBD><58><11>TՀ(<28>)+MSꉤ<53><EA89A4><EFBFBD><EFBFBD><EFBFBD>=lkL*<2A>V1<56>\n<EFBFBD>\r<EFBFBD>7<EFBFBD><EFBFBD>UzaU<EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD>Pi<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>4Is0<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD><02>cR<63><52>\$gJ<67>G<EFBFBD>Ct >`tQB<51><42><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><0C>l<6C><7F> 8J<38>O<EFBFBD><4F><EFBFBD>m%<25>`<60>^<5E><>t<EFBFBD>\$<EFBFBD> T ]<18>z`_<><5F>Yo&Z<><16><>jXF<58>yx<>f\n<EFBFBD><>vhHtͅıA<C4B1><41><EFBFBD><EFBFBD><EFBFBD>گ0<DAAF><30>o^ <20>X<EFBFBD><58><EFBFBD>\$<1E>W\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><14>A<EFBFBD><41><01>\$b<EFBFBD>KX<><58>%(<28><><EFBFBD><05>`A%X<19>a^<5E><><EFBFBD>M<><4D>,<2C><><EFBFBD>¯-u<>?I<>?Q<><51>B,<2C><>i H<08>RDn<44>c<EFBFBD><63><EFBFBD><03>\\Z`<15><05>mY<08><><EFBFBD><1F>:8<><38><EFBFBD><1F><>\0<EFBFBD><06>;<01> le<>¼(6m<>vv<14>¼U*<2A>Q<EFBFBD><51><EFBFBD>wK:<3A>n 1<><31><EFBFBD>aS#<23>g<EFBFBD><67>8{CUy@A<03>ـ<EFBFBD>B<><0B>:bTG<18><>j(<28>MtR<03>i<EFBFBD>m<EFBFBD><6D>Y6<59>'<12><>PV*:<3A><><EFBFBD>+<2B>6<EFBFBD>;<3B><><EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD>q<><71>C<>iKK<1E><>֯<EFBFBD><D6AF>q<EFBFBD>@<40>x<EFBFBD>EԠa<03>k-<2D>?<3F>O<EFBFBD><4F><EFBFBD>f<EFBFBD><66>-<2D><>_Q<5F>z<EFBFBD><7A>ׁ<EFBFBD>^P<04>i<EFBFBD>;<3B>hvϵ<76><CFB5><EFBFBD><EFBFBD>j8<6A><38>2<EFBFBD><32><EFBFBD><EFBFBD>mp<6D>gh<67>m<EFBFBD><16>K<EFBFBD>]<5D>\0<EFBFBD><07>\\<1E>:<3A><EFBFBD><EFBFBD>#m<>_\0<EFBFBD><EFBFBD><EFBFBD>^<5E><15><><EFBFBD>kh<><68><EFBFBD>6<EFBFBD>\$ųG<EFBFBD>nK<EFBFBD><EFBFBD><05><><EFBFBD>ŵik<>l2<6C>ˀE<0E>I<EFBFBD><49>!<21>1<01>g<>3<><33><EFBFBD>o<EFBFBD>>%T<><54>)0\0<EFBFBD><10><>X<EFBFBD><0B>q<>.P<>U<EFBFBD><55><EFBFBD><14>71<37>5<08>p<EFBFBD>}\\aX<EFBFBD><EFBFBD><01><><EFBFBD><EFBFBD>Wb<57><12><>jz-e<><65>36<33>+<2B><>7PW-<2D><><EFBFBD>h:<3A>,<2C><><EFBFBD><EFBFBD>@G<><47>u<EFBFBD>žb<C5BE><02><03><><13>0*<2A>|n<>R<EFBFBD><52><0E>r<EFBFBD>R<EFBFBD><01>PAڻ]<5D><>Rck<63><6B><EFBFBD>\097<EFBFBD>խ{u3&]<5D><13>C<EFBFBD><43><EFBFBD>ޱ,ݤ;F<><12><><EFBFBD>/WƆ<><C686><EFBFBD>D-`<60><><06>F8-e<17>'\r<EFBFBD>ʹ<EFBFBD><EFBFBD>'<27>X<EFBFBD><58><EFBFBD>*<2A><><EFBFBD><EFBFBD><06><>ވ;J<><4A><EFBFBD>A<EFBFBD>/H<>b<EFBFBD><62><EFBFBD><EFBFBD>we<><65>2<<3C><>X<EFBFBD><58>nM<6E>}<7D>@<40>z<EFBFBD><7A>dp<64>1<EFBFBD><15><>F3<46>7^<5E><>F<1B>P<1B>Xjk<6A><6B><EFBFBD><EFBFBD><EFBFBD>{тU:`<60><>W<EFBFBD>IO<49><4F><EFBFBD>W<EFBFBD>nX<0B>^t<><74>Ͻ\r<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>z<EFBFBD>l<EFBFBD>JEM]<5D>ӱ{<EFBFBD>3<EFBFBD><EFBFBD> <09>C<EFBFBD>c슥J#<23><01>v<>d<EFBFBD>r<03>\0<EFBFBD><EFBFBD><07><><EFBFBD>_<08>.<2E>u˻]x7fW-<2D>ѿ<EFBFBD>p<EFBFBD><70><06><>v<EFBFBD>1<1C>908%<25>t%S<>p~<7E>\$a`3<>xEh<45><68><EFBFBD>@ہ<>`<60>KK<4B><4B>bn<62><6E><EFBFBD>!x\"<EFBFBD><EFBFBD><14> <20>{<EFBFBD>\\ <09>yW?2<>ʄ)r<>\r<EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD>H\0<EFBFBD><EFBFBD><EFBFBD>>[\0<EFBFBD>\0L\rp0<>iR<69>H<><48>|@J٭q<D9AD>2<01><>&<26><1D><><16><>\r#&<26>BH<0E><0B>ڢ<EFBFBD>f<EFBFBD>0<EFBFBD>JKr<4B>ky<0B><><EFBFBD>W<01><0E><>e3<65>)xe<78><19><><EFBFBD>J<1F>;<3B><05>z<EFBFBD>Q<EFBFBD><51><EFBFBD>\$\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><01><0F>V4<56>Aa<41><03>3<EFBFBD>)<29>Dnw,0<><30><EFBFBD><18><>ch<63>F<EFBFBD>.8<>&L~<7E><>L<EFBFBD><1D>a<>+D<03><>#\0>@<40>\r<EFBFBD><15>7p?Z<><5A><EFBFBD>< <20><><EFBFBD>8<EFBFBD><38>l<7F><6C><EFBFBD>Hd5<64>0<10>\0<EFBFBD>_<EFBFBD><EFBFBD><01>Ą2b<32>`z<1D>7<EFBFBD>l7X<37><58>q4l <20>@<40>=9<>>v\$<EFBFBD><EFBFBD><EFBFBD>\"H<EFBFBD><EFBFBD>gؚ<EFBFBD> <09>(<1E>4<01>Tq<54><71><EFBFBD>(<28><0B>6<EFBFBD><36><EFBFBD>a<EFBFBD><61><EFBFBD>:@<15>!<21>ٶ<EFBFBD>t<EFBFBD>]<5D>:/<2F><><EFBFBD><EFBFBD>₍<EFBFBD>n<EFBFBD> ܱ<><DCB1><EFBFBD>ob<6F><62>\n<EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD><EFBFBD>Oj<EFBFBD><EFBFBD><EFBFBD><15><>Hҷ<><D2B7>o<EFBFBD><6F><EFBFBD>ﱀ<1B><>d\0<EFBFBD><EFBFBD>5{c<EFBFBD><EFBFBD>&G \$Z<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><EFBFBD>!<21><16><><EFBFBD>5\0|SS<53><53>X<EFBFBD>xk<>\\<EFBFBD>c<EFBFBD>݁<EFBFBD><EFBFBD>Xy<EFBFBD><EFBFBD>Y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><04>C<EFBFBD><43>Ҵ-<2D>-<2D><><EFBFBD>yLu<>̯NܪL<07>=õ<><C3B5>X\"<EFBFBD><EFBFBD>Z1|\" <09><><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C>cؒ4<D892>\$<1D><>.*>@+@C<08><><EFBFBD><EFBFBD>X<EFBFBD>\0\0(*T@<40>p<EFBFBD><70>@<15>s/ y<><79>\$<EFBFBD>2G<>f <20><><EFBFBD>V<<3C><EFBFBD>\"^<5E> <0C>|<7C><> \0dV :Yp<59>Y<0C><>[<5B>!M\\<EFBFBD><15><>cx<63>&^B3<><33><0E>p# <0F><><06><>8<>C<EFBFBD><43>8w<38><77>5<>\0<EFBFBD>6<EFBFBD>.<03>r<>8<EFBFBD><38>\0<EFBFBD>ۀy#<23>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><05><>6<EFBFBD>qβ<><07><>H1pu<70>g@%@p<1B>q\0d8Q\\<EFBFBD><EFBFBD>:<3A>]<5D><>\0\\^c0<63>&,>6K%<25>L<>{؝<><1D><><EFBFBD>j<EFBFBD><6A>g<<3C>Y<EFBFBD><16>z<EFBFBD>hFB:҉<>w-ϖkʹ<6B><CAB9><0C><>ᬣ<EFBFBD><E1ACA3>r<0B>m<01> +y<><79><12><><EFBFBD>o7<6F><1C><>qM1<4D>b<EFBFBD><62><EFBFBD><EFBFBD>z<EFBFBD>R<EFBFBD>i<EFBFBD><69><EFBFBD>;<3B>0(<28>e[C<><43><EFBFBD>Վ<EFBFBD><Rl<52>6hR\0N<EFBFBD><15>ǥQ<C7A5><51>8<EFBFBD>S<EFBFBD>*<2A><>k+<1E><><EFBFBD>\\<EFBFBD><EFBFBD>Bv ^<5E><1D>Q<EFBFBD>hD<68><44><EFBFBD><EFBFBD>&74<0B>L<EFBFBD><4C><EFBFBD>Y8뿕<38>2<10><>X<EFBFBD>Kt<4B>!<21>H<><1A><>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>ނ<EFBFBD><06>i`<60><><EFBFBD><16><><EFBFBD>k|<7C><>҈<EFBFBD>8<EFBFBD><38>NC<4E>czFX<46>L<EFBFBD>V<06><><EFBFBD>^X<><58>Z.'<27>K<EFBFBD>˨ &KCC)q1<71>]<5D><>5dP9<05>@ubp<><70><07><>ZLƾ<02><>\r v<1A>|<7C><><EFBFBD>Y<EFBFBD> [[<5B><>v<EFBFBD> <1A>鈹o<E988B9><6F><EFBFBD>h<EFBFBD>t<EFBFBD><74>mB<6D>#R<>-<01>H@<40>R0<52> w<><19>@<40>暋y<E69A8B><0C><1A><03>\0<EFBFBD>q<><71><EFBFBD>w<18><>\0<EFBFBD>q<><71>d<EFBFBD><64>N־<4E><D6BE>05<30>b<EFBFBD>sZ<73><5A><EFBFBD>L<EFBFBD><4C><EFBFBD>*<2A>3<EFBFBD><33>ć<0C><><EFBFBD><EFBFBD>cj<63><6A>tB<74>C<EFBFBD>H&<26>T۟לtV><3E>0͵<>{菎2<01>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>yu<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD>µ<EFBFBD>9\r~_<1A><>>P<><50><EFBFBD><17><><EFBFBD>;bZ<62>\\q<16><>IX<49><58><EFBFBD><EFBFBD>ʨ<EFBFBD><18>V<EFBFBD><d:<3A><>[<5B>(ti<74>r<EFBFBD><72><EFBFBD>[: fu`<60><><EFBFBD>^<5E><><EFBFBD>V*<2A><>v_<76>k<EFBFBD>Z<EFBFBD><5A><EFBFBD>9<EFBFBD><39><EFBFBD>6C<36><43><EFBFBD>_`<03>C6J<06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD>.ζ&=<3D><><EFBFBD>衬<EFBFBD><E8A1AC><19>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>\"w<EFBFBD>=<19>nZ^[oV6ۺ-<2D><><EFBFBD><EFBFBD>[<5B><><EFBFBD><01>v<12>T<EFBFBD>(2 J<><4A>Ҩ}o<><6F>Er<45>(<28><>L<EFBFBD>K#@<13>(<28>ɏ<EFBFBD>&4<><34><EFBFBD>m<EFBFBD>\" pۻ<70><DBBB><EFBFBD><1C>n\\=<03><18><>.P<>A<EFBFBD>5<><35>F<EFBFBD>b<EFBFBD>Ѧݗi<DD97><69><EFBFBD>Iґs<>\0005<EFBFBD><0C><>]<5D>.<2E><1F><05>+\"<15><><EFBFBD>ˠ<1A><><EFBFBD>s<0B><><0F><><EFBFBD><EFBFBD>@|<7C><>D=ئ<>.'ψ<>M<EFBFBD><4D><EFBFBD>ˠ<EFBFBD>=K<>U<EFBFBD><55><EFBFBD>c>a<>.`n<>Vv<>ď<EFBFBD><C48F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P\r<EFBFBD><EFBFBD>g\"<EFBFBD><EFBFBD><EFBFBD>=<Hi<48>+<2B><>w\r<EFBFBD><EFBFBD>X<>ll<6C><6C><EFBFBD>:TG]<7<>K<EFBFBD><4B><EFBFBD>[o&)<29>~<05><1F>gd<67>RxI<><49><1C>\0<EFBFBD>@k<><18>-<2D><>Dp(ҿ<>/s`<1D>+<2B>t\r<19><>s<>\$<EFBFBD><1E>wn<77>D<>E<EFBFBD><45>NK<>A<EFBFBD>n<EFBFBD><0F><><<3C>pƒX<C692><58><EFBFBD>I<EFBFBD><49>#<23>;<3B>z<EFBFBD>:<3A><>vm<76>j\n 6<><36>Z<EFBFBD>چ<EFBFBD>ೡ<EFBFBD>{<EFBFBD>Y C<><43><EFBFBD>CP<43>D<05>C <09>vs<76>\n1pjZ<6A>Z<EFBFBD><18>7<EFBFBD><37>zj<7A><6A><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD>,l<1C>5<EFBFBD><35><07>qտm<6D>9<EFBFBD><39>[|o:0<1B><><EFBFBD>n?<04><><EFBFBD>~<19><><EFBFBD><10>A<EFBFBD><41>E<><45>Ia<49>m<EFBFBD><6D><EFBFBD><08>6/,<2C>Q<EFBFBD>'<27>\n<EFBFBD><EFBFBD>3*<2A>Ӟ<><D39E>!o<16>ГC7<y<0E><>=<3D>W<>\"<18>H<EFBFBD>RK<52>!<12>/h,<2C>t<><74><EFBFBD>)<1C>ٷ<EFBFBD><D9B7>5.m<><1B>ʱ<15><06>8o<38><6F><EFBFBD><EFBFBD>B<02><>%6a<36>H<><48>6<07>'o<>JjV6~<7E><>J<EFBFBD>3<EFBFBD>=2<>%<25>V(<28><>p<EFBFBD>\0<EFBFBD>ͼ<1A><>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>M[ʬ`Q<><51>;<3B>X (!<13><>\0N<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><17>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>i<><69>6z<36><7A><EFBFBD><EFBFBD><0B>U;m<><18>\r<EFBFBD>0<EFBFBD><0C>\0<EFBFBD>b3<EFBFBD>̰jc<EFBFBD><EFBFBD><EFBFBD><14><><1B><>zz<02>U倫b6-Pk<50>#{<EFBFBD><10><>M<EFBFBD><1D>Jx<4A><78><EFBFBD>\$<EFBFBD><EFBFBD>Rn<>O<EFBFBD><4F>t <09><>7<02><>7g<37>8.<2E><>GNIJq`70(<28>\\<EFBFBD>gH<EFBFBD><EFBFBD>ӳ<EFBFBD><16><>e3F<>Z<EFBFBD><5A><EFBFBD>RP <09>GS<47>Z<EFBFBD><5A>ru<0B>3<0B>:<3A>+<2B><><EFBFBD>L(<28><><0B><05><02>.<0F><0F>\$<02>«EJ+s<><73><EFBFBD><EFBFBD>j'><3E><>< <20>t<EFBFBD><74><02><>@C<>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2`]<5D>)<29><1E>*\$<EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>MUA<EFBFBD><EFBFBD>A<EFBFBD>7<EFBFBD>aB<EFBFBD>B<14>N<EFBFBD>P3<50><33><EFBFBD><EFBFBD><EFBFBD>];Y<><59>s<EFBFBD><05><1E>'Hf<17><<3C>t<EFBFBD>|<7C>/<2F>WK<57>h0*<04>ᨓ<EFBFBD><14>\0e<S<><53><EFBFBD><EFBFBD>]j<>g[<5B><>>n<>vs<76>n<EFBFBD>3Ih<49><1B>.<2E>t<EFBFBD><74>\"<_jzb<02><11>s<EFBFBD><73>3<0B>M{c<EFBFBD>p<EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><14>ng<6E>.~<7E><><EFBFBD><EFBFBD>}m<>p9<70><39><EFBFBD>2w<1F>Ӡ!S()<29><><EFBFBD><EFBFBD>x\\<EFBFBD>`Z<18><>Q<EFBFBD>N<EFBFBD>ë<EFBFBD>J<EFBFBD>o<EFBFBD>h{<EFBFBD>=Ju<>Pi<50>P<EFBFBD><50>@<40>A<EFBFBD><41><EFBFBD>?<3F><><EFBFBD><EFBFBD>p{<EFBFBD><EFBFBD>\0003<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?A*<0C>ü<EFBFBD>)<0E>B;<3B>>N<>w糬p<E7B3AC><70>z<EFBFBD>+מ<><D79E>Ϲ}<7D><>@p<><70><EFBFBD><10><>L.}<7D><><EFBFBD>M<EFBFBD>9x<1B>{<EFBFBD>`<60><>C<>)<29><><EFBFBD>]<5D><>X<1A>M<EFBFBD>μ<EFBFBD><CEBC><EFBFBD>]'<27>g_<A<>.<2E><>'<27><<3C>\0X\0<EFBFBD>㳃v<1B>]<5D><[p<><70>=.ѱ<><D1B1><EFBFBD>*};Q<>Y<EFBFBD>wCɳ<43><C9B3>w<EFBFBD><12><>v,<2C>W<EFBFBD>]<5D><><EFBFBD><@@<14><><1A><>p<EFBFBD><70><EFBFBD><EFBFBD>\ny\"z~)<29>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD>t<>͝<EFBFBD><0B><>u<EFBFBD>@<40>Sl@}<7D>ǃ<EFBFBD>o߾<6F><07>A<xkl<6B>#<23><>Z<EFBFBD>\r<EFBFBD>z<11>V,<2C>y`<17>Sӡ<53><03><0B><><04>&<26><><EFBFBD><EFBFBD>6<EFBFBD><36>p<EFBFBD><70>Ex<45>wﱍm\rO<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>g|<7C>\0^<05>{<EFBFBD>!<21>*<2A><>h}@^1&ȸ<04><>o<><6F><EFBFBD><EFBFBD>t<EFBFBD><74>_<EFBFBD>I<EFBFBD><49><EFBFBD>t=<?<3F>)<06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><05><>OU{Z7<EFBFBD>J`<60>@<40><>~*<0C>&<10><>\0^yQ-<2D>9/ɉ<>}du<><75><EFBFBD><EFBFBD><EFBFBD><><7F><EFBFBD>\$\0002<EFBFBD><EFBFBD>\"9ǿ<39><0F><>O<4F>?<3F><>!<21>U<EFBFBD><55><EFBFBD>K<EFBFBD><4B><EFBFBD><7F><EFBFBD><EFBFBD>?y<>/<2F>\n5<07><03><><EFBFBD>[\"<EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>>+<2B><><EFBFBD><EFBFBD>4\"<EFBFBD>y<EFBFBD>A<EFBFBD><1F><><EFBFBD><EFBFBD><1B>^<5E>y<>-OV<4F>]<5D>?<>c<EFBFBD> <09>}<17><1E><>hw<68><77><>z<EFBFBD><7A><EFBFBD>O<EFBFBD><4F><15><19>O<EFBFBD><4F><EFBFBD><EFBFBD>_X<5F><58><EFBFBD><EFBFBD>c<EFBFBD> %?<3F><><EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD><EFBFBD>P){<1F>><3E><>`F}<7D><><EFBFBD><EFBFBD>|<7C> <09><>BŰ<05>~;ն<><0F>><3E><>ψ|<7C><><EFBFBD>;<3B><><EFBFBD>~<7E><><EFBFBD><EFBFBD>}<7D>ҿ}<7D><><EFBFBD><EFBFBD><05><1F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɇ\\'<27><><EFBFBD><07>?<3F><><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD>\$<05>F<EFBFBD>o<EFBFBD>~=<3D><><EFBFBD>|<7C><>߇<EFBFBD><0F><><EFBFBD>Y1<01><><EFBFBD>,<2C><><EFBFBD>?U<>?<3F>{<EFBFBD>ձ<04>W<EFBFBD><57><1F><><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD>gpk<EFBFBD>\\ <20><>bN7<4E>+<2B>ہ<>\r<EFBFBD>g΄<EFBFBD>\0^\0<17>B@- T<><54><EFBFBD>6<EFBFBD><17><><EFBFBD><EFBFBD><EFBFBD>\nﺅ5<EFBFBD><EFBFBD>o(m<><02><>~<7E>Nq<1B><><EFBFBD>8<EFBFBD><38><EFBFBD>_8<1E>Oʳs<><73>|<7C><>:<3A>s<>/<2F><>d!\0<13><>4\0D<EFBFBD><EFBFBD> p<>[٫Lꋩa^/<2F>+<2B>\r\0<08><><EFBFBD>\0z<1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bl<62><6C><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD>?<3F>\n@6<>]<5D><><EFBFBD>p`<60>-<2D>83<03>\0<EFBFBD>p@>@f \$<06>'<27><><01>PH?p\n\0\$<EFBFBD><EFBFBD><02>\n@*\0b<EFBFBD>4p\"<EFBFBD>j!Q<>ᅜ<EFBFBD>:<3A>d<EFBFBD><64><EFBFBD><EFBFBD>`+0<1A> <11><>a<EFBFBD>\0<EFBFBD>M<EFBFBD><0F><1F><><EFBFBD><EFBFBD>GS<><03><><EFBFBD><EFBFBD>\n<EFBFBD><03><><EFBFBD><EFBFBD>H<>0<EFBFBD>%<25><>\$Z(\"AJ\n<EFBFBD>0<EFBFBD><EFBFBD>\0<EFBFBD><03>. <1B>#oL+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m\0<EFBFBD><EFBFBD>\00;A<06>k.<2E>\0A<03>'A<08><>A#<23><><EFBFBD>@<0F>׀<EFBFBD><D780><EFBFBD><0F>F<EFBFBD>b<EFBFBD><62>H<EFBFBD>W<EFBFBD>x\r@<40><><EFBFBD>\0<EFBFBD>V<EFBFBD><EFBFBD>a<EFBFBD><EFBFBD><02>M<EFBFBD>J<EFBFBD><4A>p<0F>?4<><03><08>?<3F>`n)<29>5~<7E><><16>j<0F><><EFBFBD>R\\<EFBFBD>~<02>*K\0<EFBFBD><05><><EFBFBD>pA<70>L<EFBFBD>O<EFBFBD>Yz\rl<08><>a2m.<2E><>ޣ&A<><06><04>,̐;<3B>-<2D><><03>K #\r2HK!<10>YHi\0#\$pj<07>]<5D><>(<28>P,<2C><><08><0B>]oA.<05><>\$<EFBFBD>T<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3!p/<2F><06>\$<EFBFBD>0<EFBFBD><EFBFBD><06><0F>dW<64><57><EFBFBD><EFBFBD><EFBFBD>be<62><65><16><EFBFBD><CE81>\n<EFBFBD><EFBFBD><1C><>6<12><><01><><EFBFBD>\$,<1F>,<2C>J<EFBFBD>#@;<16>@0<><30><EFBFBD>&L<>G\r_<EFBFBD><EFBFBD>l<EFBFBD><EFBFBD>E<EFBFBD><EFBFBD>^ \0<EFBFBD><EFBFBD>1\0<EFBFBD> DI\n\0<EFBFBD><03>0!or<>[ <09>hɐy)<29><03><><EFBFBD>k{<EFBFBD><EFBFBD>k<11><><EFBFBD>\n<EFBFBD><EFBFBD>\0<EFBFBD>p<><70><EFBFBD>B<EFBFBD>\rj <20><>\n<EFBFBD>ʎV><06>\rJK<EFBFBD><EFBFBD><04>6\"W<EFBFBD><EFBFBD> <09>F<EFBFBD>{<05>t<EFBFBD><0F><05>\0<EFBFBD>;<3B><><EFBFBD><EFBFBD><<3C><><EFBFBD><EFBFBD>%hp<68><70><EFBFBD>̓ <20>Bi\0<EFBFBD>\0<EFBFBD>6<EFBFBD>h<>譯<EFBFBD><E8ADAF><EFBFBD><0F><><16><><EFBFBD>@)<29>JЕ<><D095>J<><4A><1B><>CL<> <09>>\0<EFBFBD><0B>,<2C>_<EFBFBD>~vX8 <20><><EFBFBD>0<EFBFBD>w#^2I\"kLB<EFBFBD>1Co<43>A<EFBFBD>H<EFBFBD>\r<EFBFBD>ϰ<EFBFBD><EFBFBD>jF<EFBFBD><EFBFBD>><3E>q\"iOP\r<EFBFBD>8<EFBFBD>~H<>ϐ<EFBFBD><1C><>(.K<>(\n<EFBFBD>lj<><6A><EFBFBD>M<EFBFBD><04><02>f`1<>\n<EFBFBD>8<0F><>><3E><10> ,,å\n<EFBFBD>ܡ<0E>xZ<78>:C X<0C>'<27>t<EFBFBD>P<0F><><EFBFBD><EFBFBD><EFBFBD>p<><70><EFBFBD>ȸ<EFBFBD><C8B8>@ళ4=\ríB\r<EFBFBD>T<EFBFBD><EFBFBD>C<EFBFBD>S<>p<EFBFBD><70>3<><3E><>\0<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD><14><>\rPe<>8<EFBFBD><38>3<EFBFBD>\n?<0C><><EFBFBD>0<><30>X;̿<>z˨;<3B><>\r<10><0E><10>҂W<>T<D78C>y<EFBFBD><79>p0<70><30>D.<2E><>B<EFBFBD><0F><>A<19>D<0E>[<10><>9أ<>m<EFBFBD>!h<><68>%\0<EFBFBD>8:<3A>S<EFBFBD>m<11><><EFBFBD>pB62d?<3F><><19>˅<>)<29><><EFBFBD>h<0F>̿ҁ<CCBF>0<EFBFBD><30>D<EFBFBD><44>C<>&Ě<><08><><EFBFBD>\r<EFBFBD>h`<60><> \"\rx\0<EFBFBD>@ <20><1D><><11>h<EFBFBD><68>\$ndI!<1E>қ2ΑD<>\\CQ9<EFBFBD><EFBFBD><12>\rB<16><03>KY<4B>檀#<23>R<EFBFBD><52><EFBFBD><EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09>,<2C><><EFBFBD><EFBFBD><EFBFBD><17>K8L<38>1<0C>2P<32>3<EFBFBD>&\\P<EFBFBD>9<>,: <20>CB<16>AN<>]4A/<14>@<40><><EFBFBD> <T<>U<0C>0<>Ϧ<EFBFBD>v\"T;p눐-<2D>P\r<EFBFBD>\0<EFBFBD>HM<48>TEBW<42>q_EU<15>Xac<15>q<16><>cI@!\\Q<EFBFBD>\0<EFBFBD>HQ<48>BL\"<EFBFBD><EFBFBD>7<><37>1<><31><EFBFBD>Ŵ<EFBFBD><C5B4>U<EFBFBD><55>Cc<16><><EFBFBD>nC \"<EFBFBD>1eE<EFBFBD><EFBFBD><EFBFBD>S1\n<EFBFBD><10><><EFBFBD><EFBFBD>E<EFBFBD>ZMi<4D>\0<EFBFBD>\nj E<><45>= <09><><EFBFBD><EFBFBD><EFBFBD><15>_<EFBFBD>~C 4QW[\r<EFBFBD>6<EFBFBD><EFBFBD>ú%x9H5~A%*@D<><44>Cv<11><><EFBFBD>IC<49><43><EFBFBD><EFBFBD>7`\"c- <18><><EFBFBD>H<EFBFBD><04><>+<2B>F&<26>x <20><>-<2D>8\$<01>E<EFBFBD>de'=<3D><>@i<1E>tf<74>2<EFBFBD>LC<>ˊ<EFBFBD>J<EFBFBD>z<EFBFBD>d׀<64><A0тT 叄\0<EFBFBD>6<><36>BT=<3D><>D0<03><02><>l<02><0E><><EFBFBD>P<EFBFBD>\r<EFBFBD><0F><19>U<EFBFBD>T<EFBFBD><54>\n`<19>M<EFBFBD>!<21><><EFBFBD><16>i<EFBFBD>l><<3C>l,<2C><>F<EFA293><46>P<EFBFBD>Ѭ0<14>8i<38><69>F<EFBFBD><10><07><>F<EFBFBD>\r<EFBFBD>+Ѭ<03><13><0C><><EFBFBD><EFBFBD>Z? 7F<37>`B<><42>/<0C><>x<EFBFBD>'\n<EFBFBD>*ˌ<13>>l2Ч?<3F><11><1F>q<EFBFBD><71><EFBFBD>tk<>GG\0<EFBFBD><EFBFBD>:B<>Lt<4C>q<EFBFBD><71><EFBFBD><EFBFBD>mģ<6D><C4A3><EFBFBD>4p<34><70><03><12><><EFBFBD><13><><EFBFBD>kKh7<11>P!o \n<EFBFBD>na<EFBFBD><EFBFBD><EFBFBD>,<2C>bD<><06><><EFBFBD>2<03>\0Ah<EFBFBD>ڢ<EFBFBD><EFBFBD>r<EFBFBD>!<21>0\" <09>Y!R<><52>(<08><>G<EFBFBD>+1<><31><03>J:a<>Be<0B><0F>:<3A>vX<58>4hR:8<><16>y<EFBFBD><79><EFBFBD><08>><3E><><EFBFBD><EFBFBD>< Q<0F>/<1E><><EFBFBD>\$47<34>2<EFBFBD><32><1E>˙<><0E><1C><><EFBFBD><EFBFBD>+ K<03>G<><47>P\nP3<EFBFBD>t<><74>;<3B><><EFBFBD><EFBFBD>5lL<6C><4C>]tN\0<EFBFBD><EFBFBD>ZRV\0<EFBFBD>A<EFBFBD><1D><1B>P<EFBFBD>8<0E>6<EFBFBD><36><EFBFBD><12>\\<0B><>\0<EFBFBD>\rl~<7E><> ^p%Q<>,b<>tt<74><17><><13>E<EFBFBD><45>B<EFBFBD><42>ĈQ<C488><51><<0E>6<EFBFBD><36>Df<18>x 3<>xE<78>yĚ)(<28><>H<>\r̈<11>\0<EFBFBD><02>4q<34><71><EFBFBD>̋<><14>|=<3D>=A<>(<28><><EFBFBD>\0005<EFBFBD><01>17<31>_<> D<><44>hFQ9H<39>d<><64>;Ȁ\\%-<2D><02><13>-L'<03>e -<2D>4<EFBFBD>fd<><64>+3<><1F>J<EFBFBD>z,<2C>#8<><38>G\0؊(<11><>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>I.d<><64><10>\$<1F>c<><63>[#9<><39>N~<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%#{<EFBFBD><EFBFBD><EFBFBD>D<EFBFBD>s<EFBFBD>됨<EFBFBD><14>@<40>\0<EFBFBD>h*a2<61>f<EFBFBD>ؕ<EFBFBD>j<EFBFBD><02><><EFBFBD><EFBFBD>o<EFBFBD>|<03><>B<EFBFBD>D.<2E>QH .<2E>D<EFBFBD>cx5<78>z<EFBFBD><7A><03>oQCBTv<54><0B><><EFBFBD><EFBFBD>lq=<3D>³Tv<54>@E<16>C<EFBFBD>28z<38>DI<44>(<28><><10><08><><EFBFBD><EFBFBD>\"L'T<><z<>h'<18><><EFBFBD><EFBFBD><EFBFBD>',<2C>RtI%<13>ip;<3B>\$<10>Q)<29><>\0<10><>q<04>%'<27>?R`\0<EFBFBD><06><>\"<EFBFBD><EFBFBD>Cr<><0C>*<2A><06>vPV<50>҂<EFBFBD><15>8\0<EFBFBD><13>?<3F>F&!T;<3B><><EFBFBD><EFBFBD>&@9\0002CS)TJL<4A>AdD<<11><>o'<27>bq개<71><EAB09C><EFBFBD>q<EFBFBD><71><EFBFBD>)<29>zA<7A><41>&\r\\<<01>=<3D>c<>CD=<3D><>pI`4<C29E>0<>*<2A>tp<74>0|CtAh<41><68><EFBFBD><EFBFBD>)+=( <19>r<EFBFBD>'<27><>A؍d<><64>J<EFBFBD>ԩ<><0B><><10>;<3B>.<2E>\",<2C><18><>B<EFBFBD>*<2A><> <09>R<EFBFBD><52>b@5<>W<EFBFBD>/+<2B>.<2E>c<EFBFBD><63><EFBFBD>TO,v<><76>)B<>b<EFBFBD>E&(L<>H<EFBFBD><10><05><><EFBFBD><02>r<><72>Ed<><64>6J<36><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B>?PJ곤<4A><EAB3A4><EFBFBD><EFBFBD>8<03><><EFBFBD><EFBFBD>\nK-<1C><><EFBFBD>K',<2C><>r<EFBFBD>E<EFBFBD><03><><EFBFBD><EFBFBD><EFBFBD>+,<2C>1<14>7-|<7C><><EFBFBD><EFBFBD><EFBFBD>-pn<70><6E>KO-ĵK-<2D><>)<14>1@<40><>,l9r<39><72>!-<2D><><EFBFBD><EFBFBD><EFBFBD>Y+<2B>%<25><>\0<EFBFBD>-̴2<CCB4><32>#,<2C><><12>E<EFBFBD>.<2E>(\0<EFBFBD>D<EFBFBD>.<2E><><EFBFBD><EFBFBD>C<03><03><><EFBFBD>v9`82<38>AE/8[\n<EFBFBD>/,E@<40>I<EFBFBD>/<2F>T<EFBFBD>]<5D>X<EFBFBD><58><EFBFBD><EFBFBD><02>`\r<EFBFBD><EFBFBD>5V<15><><EFBFBD><EFBFBD>0 RPn8<16>1<EFBFBD>qf<><66>%@(3N_<03>2<EFBFBD><32><EFBFBD><EFBFBD>P@<40><>\0\$<EFBFBD>J<EFBFBD>]<5D>AI<41><49><EFBFBD>0<EFBFBD>j<0F>GPx<50><78><EFBFBD><15>赜IJ\"K<EFBFBD><06><07>2B<<3C>_@<40><><EFBFBD>+R<05><>)<29><><EFBFBD><EFBFBD><EFBFBD>ږ<EFBFBD>1<EFBFBD><31>K<EFBFBD>)DL{<11>8(\r<EFBFBD><EFBFBD>22<>HB<48>Ar:@w<>h<EFBFBD><68>\0<EFBFBD><EFBFBD>o<EFBFBD> 8<02>}<7D>\", <09><><EFBFBD><EFBFBD><EFBFBD>!U<><55>/<2F><0E><>\r<EFBFBD>_<EFBFBD>\$#@5~<7E>b<EFBFBD><62>^<5E><><07>O<EFBFBD>ձ<EFBFBD><08>8<EFBFBD>]1<>3<EFBFBD><33>𥑿p<>/<2F>c\n<EFBFBD><EFBFBD><10><><EFBFBD>R[C><3E>^<1F> ׃<><14>1<EFBFBD>A<EFBFBD>Q<EFBFBD>Z<02> Dp<><70><EFBFBD>B<EFBFBD><03>IJ%<25>j<EFBFBD><6A><1D>I<>\0<EFBFBD><11>.[<03>;<3B>3<EFBFBD><33><07><>!<21>.Ժ<>~<7E>%1<><31>SS<53><53>3lsfkJ<6B><4A>0<> <0E><1A><05>)+ ` l<>S)9<>>P!<0E><07>\0<0F><11>`%<25><><EFBFBD><EFBFBD>5N<35>y<EFBFBD><79>ֺ<EFBFBD><D6BA><EFBFBD>2S/<<3C>.<2E>d႓'\0T\n:P.<2E><>>C<><43><EFBFBD><02>0<EFBFBD><30>\0<EFBFBD><EFBFBD>`(<28><0F>7h\n<02><><02>P`\"M<EFBFBD>\n@<08>`\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><02>\ni5<EFBFBD><EFBFBD>()<29>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)5\$<EFBFBD>7hs<><73>O<EFBFBD> <09>\"<EFBFBD><EFBFBD>Oz<S}@\r!<21><>̻68<36>n<EFBFBD><0C>4<EFBFBD>Ъr<>L<EFBFBD>j'G6P<05>fM<66>ⅡKL<4B><4C>LڳnͮT<>/=&F;<3B>麀<EFBFBD><1D>&><3E>A0V\$b@4#<23><><EFBFBD>(\n<03><><EFBFBD>? <09>`<60><><EFBFBD>H3o<33><6F><1B><>.<2E>͗6l<36><6C><EFBFBD>ͤ=ۏE<DB8F>L<1B>~<7E>6y\0<EFBFBD><EFBFBD><13>@\0<EFBFBD>p}SpN<70>B<><42><15>Fdl<64>\n&\0^<5E>z<EFBFBD>/N<>9|<7C>\0<EFBFBD>N<EFBFBD>9<EFBFBD>۪<0C>X<EFBFBD>;<3B><><17><>:<13>Ӭ<07>:<3A>i*y;|<7C><0C>+<2B><>O(<28>}<7D><>(8<><38>/\\δEx<EFBFBD>o<EFBFBD>=8<><38>Ԡ<<3C><>\0%oU<6F><55>x\r<EFBFBD><EFBFBD><0C><>Jïu=-=<10>o潺<6F><E6BDBA><EFBFBD>S<EFBFBD><53>V<EFBFBD><56>BS<42>Odd<><64>Y<0C><>7 <16>P<16><> ><3E>p<EFBFBD><70><EFBFBD>9\0Z^\n S<>#<23>p+|?<3F><1A><><EFBFBD><13>'>R<><52><EFBFBD>\$:0<>0 <09>ϻ><3E><>AHI<48>TD<54>S<EFBFBD>Oȋ\0<13><><EFBFBD>>|<7C><><EFBFBD><EFBFBD>T)4<>H<EFBFBD>ϧ\nt<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>l<><13><>i><3E>h<EFBFBD><68><EFBFBD><EFBFBD>l<>@<40>O<EFBFBD><4F>b)<13>O<EFBFBD>z7<7A><37><19>><3E>ࢣx<1B><><EFBFBD>?<3F><> Џ<><D08F><EFBFBD>+\0<05>><02>\r<EFBFBD><03>@\0<EFBFBD>@Hi<48>@PKA\0003<EFBFBD><EFBFBD>?A<<3C>!@J<><0F>t<13>OA<4F>\0<EFBFBD><EFBFBD><EFBFBD>p<0E>:1<>!>[<5B><><EFBFBD>O<EFBFBD>`<60>ϒ<EFBFBD><CF92>?h?<3F>\"<EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><03>BTZT#<23> <20>H# <04>AȒS<C892><53>W<1E><03>TX<54>S<EFBFBD>Ȉ]<1F>Xc0?T<10><># <20>SyJ6fLo3<6F><33><EFBFBD><EFBFBD>,<2C><1E><>ҷ<EFBFBD>5><3E>Ќ<EFBFBD><D08C>&<26><>\0 E<>B<EFBFBD><02><0E>,K <20> <20>)4<><34><1F>F<EFBFBD><0C><>/<2F><> <09>Z<EFBFBD>2<EFBFBD>P܇4GoD<6F><44>߀<><DF80>8\"B<EFBFBD>0<EFBFBD>+p6<70><36>3aC2> 6QH<14>O<>TQ@9<>&\r`<05><>O<EFBFBD><03>4U<34>[E@<04>3<EFBFBD><33>?<3F>L<><4C><EFBFBD><0E><><EFBFBD>P<mT<6D><54>mQD<><44>4NP/FE<12>D<EFBFBD>`M<>o<>Q<EFBFBD><51>yU<79><08>F<>Z<EFBFBD>g5F<35>[Tm<54>FiU<69>7?<3F><>\0[K<>F<><19>n<EFBFBD>&<26>TN\0<EFBFBD>8<EFBFBD>FH<EFBFBD>Tj<EFBFBD><EFBFBD>Gu<13>D<04><><EFBFBD>z-WGe<1B>9Q<39>><3E>ht-<2D>G\r<1D><>><3E>(<28>C<EFBFBD><43>?<3F>+- <20><>Q<EFBFBD>D<EFBFBD>!t+<2B><1C>\"4Q<>D<EFBFBD>!<21><16><>O\"!<21><><1B><>p\n<EFBFBD>J<><4A><EFBFBD><EFBFBD>H<EFBFBD>`2R<1E><>U@9<>P<EFBFBD>e<18>h<EFBFBD>J<EFBFBD><4A>&PaO<61>=<3D><>B<EFBFBD><13>I8<05><><1A><17>a<EFBFBD>J&UQ<55>H<EFBFBD>q<EFBFBD><71><EFBFBD>\$<EFBFBD><EFBFBD>v<EFBFBD>i<EFBFBD>D<>)<29><>ЈJ<5)<\r<EFBFBD>'b<><02>B(<28>t<EFBFBD>Ҷ#\$<EFBFBD><EFBFBD><14>#<23><><EFBFBD><16>!?m,ʜR<CA9C>-<2D>;<3B><>)9Kp+T56<35>m#T)<29><>K<EFBFBD>Y4<59>ŀ<17>.BAR<41>8o <20>0<19><><EFBFBD><EFBFBD><EFBFBD>KE.<2E><>д<EFBFBD>=KRJ<>T<><54>@<40><>TR<>H<EFBFBD>*<2A>N<EFBFBD><4E>H<EFBFBD>2<EFBFBD><32>RL<>4KS6xt<>Q;J0CP<43>K<EFBFBD>M)<29><><EFBFBD>+Hm<16><>SN\n-54ΤYH-6<>6SsM<73><13>T<EFBFBD>aL<61>8<08>\0<EFBFBD>]8t<38>ST<53><54>ް<EFBFBD><DEB0>+NM7<14><>5J|,<2C><>ӡM<D3A1>:P<04><1F>P<EFBFBD><50>QeM<65>7<EFBFBD><37>><3E>E<EFBFBD>\$`3<>O;4j?<3F>}\r@7Ct<1B>+<2B>+,\0<05>1\0<EFBFBD>;@B<><42>S<EFBFBD>7-64<36><04>N8b0<62><30>yOP%T<><54><EFBFBD>m>+<2B><05>O<EFBFBD>><3E><>Q<EFBFBD>O<EFBFBD>4!d<><64><EFBFBD>B<EFBFBD><42>!R<>O<EFBFBD><02><>R<EFBFBD>&<26><><EFBFBD>UG<0E>]><3E><>TP@#<23>Q<><51>+<2B>T<EFBFBD><54>\$<EFBFBD>}@<40>x<EFBFBD><78>><3E><><EFBFBD>S<>P];<3B><>\0<EFBFBD>E<EFBFBD>QT<EFBFBD><EFBFBD>%P<><50><EFBFBD><EFBFBD><EFBFBD><0F><<3C><>=<3D>\r<EFBFBD>:<3A><><EFBFBD>WD<57>]<5D>Y\0<EFBFBD>Xo<14>R<EFBFBD><0F>ڴN<DAB4>-E<>?tS<74><53>F<EFBFBD><1B><05><>1<EFBFBD>0<14>R<EFBFBD>)<29>r<EFBFBD>ۿ<EFBFBD>7<04>O<EFBFBD>=<3D>=<3D>'<27>5<EFBFBD>Xl<><6C><EFBFBD><0F>>+<2B><>IJ<`L<>(<28>74GRd<03>:<3A><><EFBFBD><EFBFBD>EPK<50><4B><EFBFBD>,aU<17> <20>QO<><4F><EFBFBD>Ш<><D0A8><EFBFBD><EFBFBD>d<EFBFBD>}O<><10><><EFBFBD>D<EFBFBD>CdQ<64>M=<3D><1F><>»,?<05>HBUD<55><44>>RUAU*:eR<65>><3E><><EFBFBD><18><14><>IT\rR<EFBFBD><EFBFBD>UQ\"*6<02><>}Uu'<27>XO<58>S<EFBFBD>ZS<5A><53><1A>OS<4F>T<EFBFBD>F<EFBFBD>Vt<56>3<EFBFBD>O<EFBFBD>Z<EFBFBD> <20><>UG<>QU<51>C<EFBFBD>X<EFBFBD>\n<EFBFBD>eP\0 ,<2C>G\rOuaԥV-Sc<>1T<31>Ul<55>HR<>ZU<0E>h<EFBFBD><68><EFBFBD>,<2C>V`9F<><46>M<EFBFBD>5tмj<>T<EFBFBD><54>MF<4D>[<5B>UU<55>oE]uE<75>CTu\\<EFBFBD>|<7C>W<>]T,<2C>QW!UmաV<D5A1>ZUv\0<EFBFBD>Wp<EFBFBD>uG<EFBFBD>=&\nB<EFBFBD><EFBFBD><EFBFBD>X<><58>4<EFBFBD><34><08><>^<5E><>V)><3E>b<EFBFBD>U<7F>X<03><>HCuI;m<1B>yV\\5aU<EFBFBD>Y-c<><63>U{Y]Ֆ<><D596>W<1B><14><>xaz<>7@<40>f5^5U<35> <15>ձYu K<><4B><EFBFBD>C\0O<EFBFBD>#ց(zBաVUU<55>hՃ֑M<19><>s<EFBFBD>%Y]<5D><> <09><><EFBFBD><EFBFBD>/䄞@<40><><EFBFBD><EFBFBD>OMS8<0E><>T<EFBFBD>>\0;u7Of<4F>L<EFBFBD><4C>MVMZ<4D>l<EFBFBD><6C>P{A<EFBFBD>[ T<><54>(<0B><V<>Z}d<>S<EFBFBD><53>Yeo <20>յS\n<EFBFBD>CTOq<>L<EFBFBD><4C>P02<30> <09><1F><0F>/6D<03>b<EFBFBD><62>><3E><><EFBFBD><EFBFBD><02><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>\0,N<> f\n`\\<EFBFBD>\"<EFBFBD><EFBFBD>*G<><EFBFBD>><3E>\nU<EFBFBD>\0V<EFBFBD>bVs<EFBFBD><EFBFBD>]]<5D><08>#Wj()<29><>\0<EFBFBD>8 <09>A<EFBFBD>x<EFBFBD><78>*<2A>E<EFBFBD>C]<5D>u<EFBFBD><75>Wb<0C>\\<EFBFBD>쀎<EFBFBD> )\0<EFBFBD>] ,`<60>\0<EFBFBD>ut倊\$c<>\0<EFBFBD>?p<>`&<26><>^26<32><36><EFBFBD>e^<5E>tU<74>WL\rv@)<29><>8\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02>!r<><72>_@<40><>Q<EFBFBD><51><02> <09>%<25><>:<3A>\\<EFBFBD>+\$<EFBFBD>?<3F>u<EFBFBD><75><EFBFBD><EFBFBD><02>@\"<EFBFBD>e^<0B>+<2B>&><3E><0B>I\0<EFBFBD>9i\0<EFBFBD>]<5D>D@!<21><>]Ex<45><01><>(<28><><EFBFBD>X^es<65>W<>]<19><>ҧ<EFBFBD>]=x<><15>U]`\n<EFBFBD><EFBFBD>XB?<15>`<05>_Ņ\0<EFBFBD>̻a`\\<EFBFBD>#W<><57><EFBFBD><EFBFBD><EFBFBD>%><3E>|<7C>W<>aM<61>`<60><05>ŒDu<44><75>%^@؉a%v`'Ww]<5D> <09><><EFBFBD>w]튕뀒<ED8A95>0<EFBFBD><30><1E><>es<65>EWn<02>ީ5X7aj9i\0<EFBFBD>b<15>U<EFBFBD>W<EFBFBD><02>PiF\0<EFBFBD>`<60>u<>X<EFBFBD>b<EFBFBD><62><EFBFBD>؍7<D88D><37><15><><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>c<EF80A5><63><EFBFBD><EFBFBD>%(<28><08>M<EFBFBD>^vU<76>W<EFBFBD>^<5E>}C<>W<EFBFBD>^ŏ<><C58F><0F><02>{돏<EFBFBD>_<1D><><EFBFBD>X<EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD><EFBFBD>aՐ@<40>X<EFBFBD>_u~\0<15>~u<><75><EFBFBD>_<EFBFBD><5F><EFBFBD>_<EEA397><EFBFBD>C<EFBFBD><43>`<14><><EFBFBD><0F>?=<3D>V+W<>bŋU<C58B>X<EFBFBD>cjQ6_<0F><02><>VO<56><4F><02><><EFBFBD><16><><1A>u<EFBFBD>\"<06><>J7 \$<EFBFBD>`X <09><06>-<2D>6n<36>)b<>V\$GcX\\<EFBFBD>i<EFBFBD>dh \$חe vX^<5E><> Y<>`<60><><EFBFBD>\r\0<EFBFBD>d<1D>!<21>%]<5D>ߨ<EFBFBD><0F>c<<3C>s<EFBFBD><73><EFBFBD>d8S<38>X<EFBFBD>8x*<2A>\$<EFBFBD>P`<60>S<EFBFBD>ʍ<>uv}<7D>\n?<3F><>U<EFBFBD>X}c%<25><08><><EFBFBD>jF<6A><0F><02>}<7D>I#<23>^<5E><><15>\0<EFBFBD>^ЕV<D095><56>G_<47>3dF<64>i<EFBFBD><69>`>W<>ȕV<C895>Z3b<33><62>v}<7D>[b`v<><76>f<02><>6<EFBFBD>Zwg<77><67>3<33> 8%<25>6ڈ?\n<EFBFBD><EFBFBD><EFBFBD>QhŤ<EFBFBD><EFBFBD>X<EFBFBD>i<EFBFBD><EFBFBD>6Pڥj<EFBFBD><EFBFBD>Z)\0֦Zah\n<EFBFBD>F\0<EFBFBD>j<EFBFBD>kU<EFBFBD><EFBFBD>\0 x3\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E><>Z'<01>O<EFBFBD>څʏX <09><><EFBFBD><EFBFBD>k<EFBFBD>~ )WV><3E><>VX<>j<EFBFBD><EFBFBD><DEB6><EFBFBD>7<EFBFBD> h<>ڳ^8<><38>x<EFBFBD><78>-<2D>V<EFBFBD><56><EFBFBD>7t<37>u<EFBFBD><75><EFBFBD>?ը<><D5A8><EFBFBD>%7r; %<25><1E><><EFBFBD> \0<EFBFBD>h<EFBFBD><EFBFBD>c<EFBFBD>X<EFBFBD>i<EFBFBD>V<>k<><6B><EFBFBD><EFBFBD><0F>%<25>`<60>X-k<><08><><EFBFBD><EFBFBD>?E<><45>W<0F>l<18><>!<21>s`<60>x<EFBFBD>4Yn\r<EFBFBD>Arڣ_<EFBFBD>FڏƑ<DA8F><C691><EFBFBD>ɀ<EFBFBD>?s<><73><EFBFBD>Y<EFBFBD>me<6D><65>N<>m<EFBFBD><6D>`<60>Y~<02>u5<75><35>[n<><6E>@'Ze<><65><EFBFBD>Z<EFBFBD>bp<62><16><0F>k<EFBFBD><08><>[uk<75><6B><16><>}l<15><><EFBFBD>ۈ<EFBFBD><DB88><EFBFBD><EFBFBD><EFBFBD>[<5B>d <08>C[<5B>o\0*<2A>叻o<E58FBB><6F><EFBFBD>+<2B>`ő<><C591><EFBFBD><EFBFBD>]ժ \$\0<EFBFBD><EFBFBD>\\<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>^<5E>6<EFBFBD><36><EFBFBD><EFBFBD>`<60><08><>\r-V<7F><56><EFBFBD>bX <09>*<2A>W` @'<27>X 6ˤD<0C>Uϐa<><61><EFBFBD>邭l<E982AD>v<1C>aa<61>\0W\\b]<5D><><17>*\$<EFBFBD>[5q<35>\0<EFBFBD><EFBFBD>[<5B><15><>H<EFBFBD>۰@<15>C<EFBFBD>[<5B>m<EFBFBD><6D><EFBFBD>u[<5B>l=<3D>&<26><>nU<6E><55><EFBFBD><EFBFBD>lP<6C> @<40>7rM70<37>mk<05><15>Ο8-x<16><><EFBFBD>i5<69><35>=N<>e<EFBFBD><65>I<18><>8\n<EFBFBD>%<25><>7<EFBFBD>\nU<EFBFBD>Z<EFBFBD>^j9<6A><39><EFBFBD><EFBFBD><15><><EFBFBD><EFBFBD>Y<EFBFBD>c<EFBFBD><63>c<EFBFBD><63>_t5<74><35>[<5B>a<EFBFBD>ЗE<D097>V?<3F><>y[<0C>\r<EFBFBD>C<EFBFBD>ʏM<CA8F><13>AYt-<2D>i6Y<08><><EFBFBD><EFBFBD>H<EFBFBD>4\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡm<EFBFBD><EFBFBD>W*]Am<41><6D>WWۅ`\r<EFBFBD>wL<EFBFBD>/e<><65><EFBFBD>U۷um<75><6D>S]oap <09>ܥt<DCA5><74><EFBFBD><EFBFBD>]u<><75>W\n<EFBFBD>}s<1D><>K<EFBFBD><02><>7d<02>?=u<><75>ݗoUķݮ[@\$<EFBFBD><04><>{<EFBFBD>m۸%<25>v<EFBFBD>ڟv<DA9F><76>W4ܮ?<3F><><EFBFBD>t<EFBFBD><74>]]<5D>gݣu<05>Wxڡv<DAA1><76>C]<5D><02>Q<EFBFBD>'#<23>=<3D><><EFBFBD><EFBFBD>`0<><30>E<EFBFBD><45>sE<73><45>)%%p%<25><>u@Ww<57>F<EFBFBD>E<EFBFBD>Gv<47><76><EFBFBD>X<>J=<3D><><0F>nXkIN<><4E><EFBFBD><EFBFBD>0Q<30>aa<61><0F>+<2B><>qm<71><08>A`a\0<EFBFBD><EFBFBD><06>dl<64>W<EFBFBD><57><EFBFBD>h<EFBFBD> XdM<64><4D>i<EFBFBD>g<7F><67><EFBFBD><hH\ns<EFBFBD><EFBFBD>\r<03><08><13><><EFBFBD><EFBFBD> <09><><EFBFBD>ҏ <09>\$Ig<EFBFBD><EFBFBD>6:#<23>:<3A><><EFBFBD>2^<5E>mx<>'<27><>z<EFBFBD><7A>I<06>\nEz<EFBFBD><EFBFBD>X3z<EFBFBD><EFBFBD><16>^wh<77><68><EFBFBD><EFBFBD>\\<EFBFBD>t%<25>7I<37>ގ<15>ְ#mf<6D><66><EFBFBD>ϣڕ<CFA3><DA95>C<EFBFBD><43><EFBFBD>i<EFBFBD><69>@(^4<1A>9ar<61><72><EFBFBD><10>7<EFBFBD><37>Vj><3E><>_{U<EFBFBD><08>Y[h<><68> *<2A><>r=<3D><><EFBFBD><EFBFBD>K^<5E> r<><72>f<EFBFBD>u7Nh0 ִ<><D6B4>f<EFBFBD>9v<10><>j(<16>AG7e<37>V<EFBFBD><56><EFBFBD>n<EFBFBD>\n<EFBFBD>+<2B><>]d<12><><EFBFBD><04><><EFBFBD>W<EFBFBD>\\^\r<EFBFBD><EFBFBD> _C`,kT<0F>kM<6B><4D>¥hp\n<EFBFBD>]<5D>y|<7C><><16>\0<EFBFBD>|ő<><C591>#<23>g<EFBFBD><67><EFBFBD><EFBFBD>_XZVu<56>^:M<4D><7F><EFBFBD>{~͊催?{<EFBFBD>N<>(\n<17><><EFBFBD><1A><><EFBFBD>\$ױ<04><><EFBFBD>.YaGv_]<5D>}z9v;XdL<64><4C>@*\0<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Xa`<60>76<37>`<04><>\0<EFBFBD>u<EFBFBD>_6}\$<EFBFBD>?n<01><><EFBFBD>j~<01>_<>y&<02><07>7,<2C>3<><33>H0<48><30><EFBFBD>`<60>u<EFBFBD>!ڃje<6A>W<>l-<2D><><EFBFBD><EFBFBD>?q\0<EFBFBD>\$<EFBFBD>큕u<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sU<EFBFBD>h<EFBFBD><EFBFBD>ڏ<EFBFBD>@<40><F<>`<60><><EFBFBD>[Up<55><70><EFBFBD>J^<5E>qͮI<0F><><14><>N^Ih<49><68><17>ױ^<5E><>h<EFBFBD><68>\"<EFBFBD><15>x)\$ԓ5<EFBFBD>I6[:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8&\0007A<EFBFBD>?%<25>V<EFBFBD>`<60><15>\0 ,<2C><>?<3F>2X4`<60>zH<7A><48>1<EFBFBD><31><EFBFBD>e{<EFBFBD>6<EFBFBD><EFBFBD>zJL<EFBFBD>瀃<EFBFBD>u<EFBFBD><EFBFBD><Ȏ͢<16><>@\r<EFBFBD>s<EFBFBD>ۛ<EFBFBD><EFBFBD>{xA<EFBFBD>f<EFBFBD><EFBFBD>v>_<>L<EFBFBD><4C><EFBFBD>I<EFBFBD>̈́V<12><><0F>pU<70><55><EFBFBD>_%<0C><>#<23><>W:eu<65>!<21><><EFBFBD>l<EFBFBD>v\rN<EFBFBD>^<5E><>><3E><><EFBFBD>##m<>w@'<27><><01><><EFBFBD><17><><01><><EFBFBD>3<EFBFBD>ulV@\"<EFBFBD>p}Ʒڮ>־Z<D6BE>7}<7D>W`<60><>]<5D> \0/ݻd<DDBB>k8\0<EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>a~<1A>l`<60>?v<1B>mxxU<78>X<EFBFBD>_շ<15>WE_կ<5F><D5AF><EFBFBD>=<3D><>\n<EFBFBD>5^<5E>#m<>pަ<01>@*aqz<71><17><><EFBFBD><EFBFBD>i<EFBFBD><08><>Zo<15><>\0\"]<5D><01>G<EFBFBD><47><EFBFBD>gzN!U<>%<01><><EFBFBD>`\\8g\$D<02>D<><44><EFBFBD><04>̘k<CC98>`<0B><><EFBFBD><EFBFBD><EFBFBD><05><><EFBFBD>\0<EFBFBD>j\r<EFBFBD><03>K!p<><70> \"\0<EFBFBD><EFBFBD><EFBFBD>8>#<23>g<0E>m`<60>~&Va<><04>><3E><>\$<EFBFBD>~U<><55><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><66>6 <09>`<60>L<EFBFBD><4C>ز5<>Tݩe<><17><><04>|w<>ٰ<EFBFBD>`<60>6<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>3<EFBFBD><33>+<2B><>a<EFBFBD>Œ;6<>^<5E>v<EFBFBD><76>Vh1b?5<>7r[ڎm<DA8E><6D><EFBFBD>Zd<>Q<EFBFBD><51>b<EFBFBD>rbAVoY<6F>:~C<>`O:}<7D><13>\\<EFBFBD><EFBFBD><EFBFBD><08>Y%<25><>hި<68><DEA8>2PV&8<><38><EFBFBD><EFBFBD>d2V<32><56>ق<EFBFBD><08>l`<60><><EFBFBD>\0<EFBFBD>a<>s<EFBFBD>ި<EFBFBD>ZL?}<7D>6<EFBFBD><36>+cF,<2C>><3E><>4<><34><EFBFBD>j*<2A>T<EFBFBD>Yw=<3D>U<EFBFBD><55><EFBFBD><02><><0B>Y<EFBFBD>0<08>/<2F>ÄN5<4E><35><EFBFBD><EFBFBD><0B><>ׯ<EFBFBD><D7AF>wBW<42><02>\nc<EFBFBD>Xɍ<EFBFBD><EFBFBD>x<EFBFBD>b?x*Q<>-<2D>u8V<17>\\Spu<EFBFBD>XH<EFBFBD><EFBFBD>><3E>{<EFBFBD><EFBFBD><EFBFBD>?<3F><>;<15><>/w<>7<7F>^7^<5E><1F>/X<>x}<7D>w<EFBFBD><77><EFBFBD>8<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>'x<><78><EFBFBD>gZ<67>q-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><02> <20><>_i<5F>5<EFBFBD><35><EFBFBD><EFBFBD>{g<EFBFBD><EFBFBD>w<EFBFBD>\0<EFBFBD><02><>8k<38><10><><EFBFBD>V<04><>k͟m`<60><><EFBFBD>!><3E><>ӏ<1C>\"@<<3C>h<EFBFBD><68>F<EFBFBD><46><EFBFBD>!<03>h<EFBFBD>k<03><>p@ <20><>i<EFBFBD>z<EFBFBD><7A>G<><18> <09>/A<><0E>6<EFBFBD><36><EFBFBD><EFBFBD>3<EFBFBD><33><10><>s<16>!<21>U<08><><01>B7I<14><>0L<30>x|9t<39><74>.(<28><>?G5<47>x2<><32>6]<5D>2<EFBFBD>.C=V<><EFBFBD><7F><EFBFBD><EFBFBD><03>u<EFBFBD><<3C><><EFBFBD>^JO<><4F>K<>1A<04>p:<0F>dӑh\r<EFBFBD>3<EFBFBD><EFBFBD>>Lk<4C><6B><EFBFBD><EFBFBD>8B<38><42><EFBFBD>^<1A>G<EFBFBD><47>{)<29>:<3A><>Lx쿠3<ECBFA0>nj<><6A><EFBFBD>P<EFBFBD><50>fQ9@<40><>&Q9B\0<EFBFBD><EFBFBD>0d<EFBFBD>><3E><>#<23>|E<><45>F<1D>`)_<><02><><EFBFBD><EFBFBD>T<EFBFBD> PI<50><49>hp<68><70><EFBFBD><EFBFBD><11>P`)<29><><EFBFBD>N?<3F><><EFBFBD>qh<71>D<EFBFBD><44><EFBFBD>Idݓ<64>Yb<59>a<EFBFBD><61><EFBFBD><EFBFBD>d<EFBFBD>ySނhkXФ<58>t<EFBFBD><74>VY\0W<EFBFBD><EFBFBD><EFBFBD>c`<60>h``!e<>j<1D>ge<67>t6YX(ZB.Z։e<D689>,<2C><><EFBFBD>e<EFBFBD><65><EFBFBD>Y<EFBFBD><59>e<EFBFBD>h<EFBFBD>!<21><>e<EFBFBD>F\\p\"<EFBFBD>˖MvUݥcŦ<63>[M<>9<><39>7<EFBFBD><37>\n<EFBFBD><EFBFBD><EFBFBD>_\"R<0F>\09<EFBFBD>賤u\0<EFBFBD><EFBFBD><EFBFBD><0C>`<01> v<0F>`aUf<0F>kA6<41><36>4-@<19><>^<5E>ðݗn<08>+<2B><><EFBFBD>t)6c<36>JA<4A>1<14> <20><>Y%<25>9\0;B<12>q6<71><36><EFBFBD><EFBFBD><04><>(<28><02>:Q<>R<EFBFBD><52>pD<70>0<EFBFBD><30>@l<>Q)4<><34><EFBFBD><EFBFBD>C<EFBFBD><02><>FkLT2K<32><0B>\nBH<EFBFBD>CH\$<EFBFBD>ƹ<EFBFBD><EFBFBD>X!tI<74><49>f<EFBFBD>vb<76><62><EFBFBD>s2<><32>ۥ<EFBFBD><DBA5>\0E<EFBFBD>vL`a\0<EFBFBD>ҪF<EFBFBD>XN@њt<D19A><74>/<2F><>OP<4F>(<28><><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75>\$AS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>R<EFBFBD><EFBFBD> <0E><><EFBFBD>W<EFBFBD>̣<EFBFBD><CCA3><06>8l<13>\"<19>x<EFBFBD>-<04>|\nP(<28>1<02>JaU@<40>D <09>,<2C>zO`p<1A>[<5B><>A0.@<40><05><><EFBFBD><17>O<06>0<EFBFBD>p <09>Ч<>z>\r\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r042<EFBFBD>r:<3A>7J<37><03>r<EFBFBD>)<29><>B<EFBFBD><42>p<EFBFBD><70><EFBFBD>H<EFBFBD><EFBFBD><7F>d<EFBFBD>Z<EFBFBD>=<3D>)<29><>vXL<58><4C>)u<>~x<><78>ш<EFBFBD><D188>#<23>8<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>}<7D><>@<40>(<28>1<07><>*<2A><><EFBFBD>g<EFBFBD>-?\0005<EFBFBD><EFBFBD>6J<36><4A>P<>j<EFBFBD><10>Y<EFBFBD>,U\0<EFBFBD>\r\\<EFBFBD><EFBFBD>'<27>/<2F>%?p<><70><EFBFBD>10a/<2F><>\\1<EFBFBD>x<EFBFBD><EFBFBD><03>+,<0C> &<26>-ܥ:<04><>f<EFBFBD>|<7C>+h\"D<>p3<70>`6F<36><46><EFBFBD>)6<><01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\nN.=<3D>d<EFBFBD>2݄<32>3I<><49><EFBFBD>O<EFBFBD><08>!<21>g<EFBFBD>f<>3<EFBFBD>g<EFBFBD><67>|r<><72><EFBFBD><EFBFBD>!<21>J<EFBFBD>)䣡ˆ<E4A3A1>hv<68>ֆ<EFBFBD><D686><EFBFBD><EFBFBD><16><1D>!U<>z:#<23><>~<7E><12>g<EFBFBD><03>Jz<1F>5<EFBFBD>K<EFBFBD><4B><EFBFBD><EFBFBD>ן<06><>2<EFBFBD><32>.}<7D>_<EFBFBD><5F>拹<><E68BB9>6T<><54>zV~\0:2<>(<28>#<23>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD>lzf\"hu9<EFBFBD><12><>hpaT<61>J<EFBFBD><4A>:<3A>'<27>A<EFBFBD>8H<10><><EFBFBD><EFBFBD>^<5E>P<EFBFBD><18>!!h<>:<3A><>h<0C>Ě`<60>l<EFBFBD><6C>淤<EFBFBD>'<27><><EFBFBD>n026<32><36>L<EFBFBD><4C><EFBFBD><EFBFBD>09<30><39>69<36><39><01>{ޠ4<10><>Q<EFBFBD><11>)1/<2F><><EFBFBD><EFBFBD> <09>Mt<4D><74><EFBFBD>CeBY<42>R<EFBFBD><52>\\<EFBFBD><EFBFBD>ЃXM<EFBFBD>|\0004<EFBFBD><EFBFBD><EFBFBD>+Kh<4B>(<28>U<EFBFBD>K<EFBFBD>eQ<65>e0<65>OU<16>~<7E>HA[<5B>t<EFBFBD><74>M<1E><1A><>Q <0E>}@<40><04><><EFBFBD>\"<EFBFBD>2<04><0E>_Y<5F><59><EFBFBD><1E><>I<EFBFBD><49><EFBFBD>n<EFBFBD>41<34>]T<><54>!<21>Xf<58> <09>N<0C><>d<19>=<3D><>h<EFBFBD><68><EFBFBD>i6,<2C><><EFBFBD><EFBFBD>O<EFBFBD>50<35>ʰ<EFBFBD>0<EFBFBD><30><EFBFBD>><3E><10>f,<1B><>a<EFBFBD><61><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>><3E>W<EFBFBD><57>O\"<EFBFBD>Zy<EFBFBD>E,`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<1B>m+z<>=<<13>[Q<>d<EFBFBD>H<16><>><3E>7<1C>eo<65>f#%EY0;<3B><>R\\ذ<EFBFBD><EFBFBD>)%<25><><EFBFBD>&<06><04>=<3D><> !<21>=<12>dX,&<26>!Uj<55>'<27>l<EFBFBD><6C>@<40>f<><66>S<>x<EFBFBD>@<40>9G4<47>\\C<EFBFBD>cF<>R^<5E>A<><41>,<2C><>ީ\"W꘥<EFBFBD><EFBFBD>1&<26><> <09>1<EFBFBD><31><19>K*B<03>hˏg<CB8F>P\r, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E&ZFh><3E>xk@<40><03>x<EFBFBD>d<EFBFBD>\n=><3E><>S<EFBFBD><19><>\n<EFBFBD>aj<61><6A><EFBFBD><EFBFBD><EFBFBD>5j<35><10>*p;<3B><>:<3A>>aTh<54>H<0C>?<3F><><EFBFBD><EFBFBD>c<EFBFBD><04>E3><3E><><EFBFBD><EFBFBD><1D>>`3S<> <20><EFBFBD><7F>C<EFBFBD>\r<EFBFBD>HKJǛ<EFBFBD>><3E><>h<EFBFBD>H<EFBFBD>N<EFBFBD>j%<25>%<25>`ɳf<C9B3><66><EFBFBD>9#<23>۔<EFBFBD><14>>TK<54><4B>~Y3<59><13>h<EFBFBD>bQa<><61>M`<60><><EFBFBD>Q<EFBFBD>L<EFBFBD><13><17><>E<EFBFBD>Ik<49>4<>:<3A>뽮ƺ 1\0ɮԿ<EFBFBD><EFBFBD><EFBFBD>ͯ%z<>k<EFBFBD>^~Z<>kn<> 5<><35><EFBFBD><EFBFBD>%z<>k<EFBFBD>#&<26><><EFBFBD>뵯\rF<EFBFBD><EFBFBD>k<EFBFBD>n<>Z<EFBFBD><5A><EFBFBD>6<>;\0<EFBFBD><EFBFBD>N<><4E><01><><EFBFBD>ZF<5A><<3C><0F>&SpI<>tYDC#<23><>Ǜ\r9<>f<EFBFBD><66>Ee<1D><><EFBFBD>Ie(<1A><>ڟ<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>M̟\$<EFBFBD>\rS<EFBFBD><EFBFBD>2<EFBFBD>r<EFBFBD><EFBFBD>ι\\<EFBFBD>(<28>HN<>\"E<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"yT鞴{\rQ<EFBFBD>K<>o<EFBFBD><6F>GQ<47>z<><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>oZl[!<10>c<EFBFBD><63>_iw5}pn<70><6E>![<04>W<EFBFBD><57>}efkl<6B><6C>毛)r<08>Ƅ4,n<>59<35><39>M~<7E>!<21><><EFBFBD>:<3A>ʻ9V<><56>zz<7A><04><>[=l<><6C><EFBFBD>ަ#8<>T1<54>%<25><>Jh<><68><EFBFBD>R<EFBFBD>6<EFBFBD>[+<2B>'!<21>m\"!^G<11>?<3F><>9:<3A>) c<>NmJa<10><>6<EFBFBD>Y<EFBFBD><59>S<EFBFBD><03>[K<><4B>T<EFBFBD>\rk<>#<23>0\"<EFBFBD>(l<>)<29>ӛXl<58>ha<68>W6ZU<5A>ap<61>m<03>c<EFBFBD>lEiF<><46>1<EFBFBD>ߨtr<74>=퓦<><ED93A6>f\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD>%<0E><>0<EFBFBD>H\$փ<EFBFBD>_ퟵ<EFBFBD>=<3D><18><><EFBFBD><EFBFBD><EFBFBD>{4>C<><43><EFBFBD><EFBFBD>Am<41><6D>V<EFBFBD>t왷Yd<59><1D><><EFBFBD><EFBFBD><EFBFBD>;o<><6F><EFBFBD><EFBFBD>y<EFBFBD>+m<><6D>uiR\"<EFBFBD><EFBFBD>`8f<38><66>=iD<69>F<EFBFBD><08>+<2B>~ <20><05><>;r<><72><EFBFBD>FɌnm<1F><><EFBFBD><10>f}e]<5D>f<EFBFBD>'<27>8<EFBFBD>N<EFBFBD>V<1E>U([WF<19><>U<EFBFBD><55>o<EFBFBD><6F> 1<><31>t<EFBFBD><74><EFBFBD><EFBFBD>n!<21><1B>[1<>_<EFBFBD><5F><EFBFBD>am<07><06>ۚ<EFBFBD><DB9A><13><>C<EFBFBD><07><><16><><EFBFBD><EFBFBD>9\"pf#Xx\"<01><><EFBFBD>fP<66>\$iL(5<><35>\0ZeR<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><02>ݡ<EFBFBD>n<EFBFBD><02><><EFBFBD>0<EFBFBD><30>eUg<55><67>n<EFBFBD><02><>۫<EFBFBD><DBAB><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59>=C<><43><EFBFBD><EFBFBD><EEB5B2>A<EFBFBD>gX.<2E>mU<6D><55><EFBFBD>ꥌ<><EAA58C>)^+8<><38>BUWK<57>lBM<42><4D>Za<5A>㲾<EFBFBD>4AC<41>Y<EFBFBD><EFBFBD><E28387><EFBFBD>^<5E><03>9F<12><>'<27>d<EFBFBD><64>F}<7D>0<EFBFBD>dlG<6C>+<2B>~D<>;<3B>n<EFBFBD>X<02><>X7\"Ɲ<>i<01><><EFBFBD> <09><>Ѝ<EFBFBD><D08D>&<26><>Ũih\r<EFBFBD>k[<5B>n<EFBFBD>P<06>f&<03><>6<><36><EFBFBD><EFBFBD><EFBFBD>tۼ%<25>~<7E><>r<EFBFBD>\$.<2E>h<>P<06>[<5B><><1F>n<EFBFBD><6E>k\0ݶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><EFBFBD>a<EFBFBD><EFBFBD>< <20>o<EFBFBD><6F><EFBFBD><EFBFBD><1B>칼Y-<2D><>n<EFBFBD><6E>.<2E><01>P<EFBFBD>\$֠<EFBFBD><1A><><EFBFBD>_<><5F>n<EFBFBD><6E><0C>t/<2F><05><18><>z<EFBFBD>H~<7E><>Jf<4A><1A>;<3B><><EFBFBD><EFBFBD><07><><EFBFBD><EFBFBD>铧<EFBFBD>۱齽<DBB1><E9BDBD>L'o뿣<6F><EBBFA3>8n<38>)4<16><><EFBFBD>ǹ<EFBFBD><0B>4<1D>f<>#(<28><>V<EFBFBD><56>%<25><>A<EFBFBD><41>&0<>W<04><>\n<04><><EFBFBD><EFBFBD>@<40>4A1<41>i<03>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e6<65>)]ݞ+<2B>b<EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><04>KV<4B><56> <09>Bg4<>c[<5B><03><>x<EFBFBD>{KV5<EFBFBD><EFBFBD>Xﯿ<><EFAFBF><EFBFBD><EFBFBD>e1J<31><4A><EFBFBD><EFBFBD>緝<EFBFBD>W<EFBFBD>Q<EFBFBD><51> Kﻱ<4B>\r<EFBFBD><1B>t<EFBFBD><74><EFBFBD>eT<65>j<EFBFBD>p'c<><EFBFBD><7F><EFBFBD><1C><>E;Z<>\r<EFBFBD>#I<> <09><><EFBFBD>&n<><0F><>x<><78><10>c<EFBFBD>@<40><><EFBFBD><01>\\%<25>\r<EFBFBD>c\\n<EFBFBD><EFBFBD><EFBFBD>|B<><42>-<2D>.<2E><>p\r<04><><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>'<0B>U\n<1E><13>UQw<51>r|@<40>><3E>s<EFBFBD>D<13><><11> n<>E<EFBFBD><14>.ɨ\rЇ<EFBFBD>W<EFBFBD><EFBFBD>ŗ\0005<EFBFBD><EFBFBD><EFBFBD><03>[<5B>ŏ4<C58F><34>KSp/<2F>z<EFBFBD><7A><EFBFBD><EFBFBD>ƴ<EFBFBD><08><><EFBFBD>|<7C><><0C>M<EFBFBD><4D><EFBFBD><EFBFBD>a<EFBFBD>(<28>,<2C><06><>gI<67>!w<1A>3@<40>@<40><>{<EFBFBD>PM<EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>L<EFBFBD><EFBFBD><<3C>\\k<EFBFBD><16>e@9<>+<2B>9NAlp<6C><70>Ty<54>y<02><>uDAj?<3F>W\\n<>A<1C>)iq<17><17>SC<53><43><06><>w<EFBFBD>մGC5<43>dz(T<>\$<EFBFBD><EFBFBD><0C>l<EFBFBD>\\<0B><><EFBFBD>zp-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><19><>86<38><36>Rj<52>\ri<EFBFBD><EFBFBD><EFBFBD>.[<5B><06><>!<04><><EFBFBD><EFBFBD>SEG<45>ɈFB<17>PZ<50>#o<>Ne<4E><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i\0<EFBFBD><EFBFBD>j<EFBFBD>v<EFBFBD><EFBFBD><1D><1B><><EFBFBD><EFBFBD><08><>\$<EFBFBD>\n<1A>mή<6D><CEAE>fF<66><46><EFBFBD><EFBFBD>*[r<><72><EFBFBD>F<EFBFBD>[<5B>r<EFBFBD>\\<EFBFBD><EFBFBD>JÞ<><04>.<2E>;<3B>G\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><[<5B><>3<EFBFBD><33><EFBFBD><EFBFBD>jS<6A>é<EFBFBD><C3A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <<3C><>\r<EFBFBD>y<EFBFBD>5<EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>,jٕ<6A><D995>j<EFBFBD>><3E><><EFBFBD>S]<5D>]gMQ<4D>Kv<><76>YG<59>F<EFBFBD><46><EFBFBD>_<EFBFBD><5F><EFBFBD>><3E><>/<2F>%<25><><EFBFBD><EFBFBD>,<2C><>P<EFBFBD><1C><>7<EFBFBD>Q<EFBFBD>*<2A><10><>6o<36>HJ<48><4A>x8<78>(<28><><EFBFBD>vz<76><7A>d<EFBFBD>+.<2E>ba<62>N<EFBFBD> K<><4B><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD>*<2A>e<EFBFBD><65>\"<<3C><>;<1B>7|<7C>sU&7\r<1C><19><>n#<23>G<EFBFBD>a/<2F><>o<EFBFBD><0E>9<EFBFBD><39><EFBFBD>w<0B>/<2F><>ŵ<EFBFBD><0B>]d<>e!:y<13><><13>&q0<71><30>ZS'<27><><EFBFBD><EFBFBD><EFBFBD>I:\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?8<><38><EFBFBD>\\O9<4F><39><EFBFBD>}<7D><>v\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><11><><EFBFBD><EFBFBD>Ͼ<EFBFBD><19><>S<EFBFBD>={<EFBFBD><EFBFBD>R<><52><EFBFBD>^n<>;C@<03>b%=<1A><><EFBFBD>]rţ<72>@A.<2E><>Д&<26>= <20><><EFBFBD>vQt+C<><03>aГ<61>n<EFBFBD><6E><EFBFBD><EFBFBD>wBZ<42>t%<25><>Ez<45><7A>\$<08><><EFBFBD>t*<2A><>M<EFBFBD>Ut+Km/<2F>P<><50>n<EFBFBD><6E>oKБCy<43>t+<2B> <20><>U˥<55>H`<60><><EFBFBD><EFBFBD><18><><1B>wѯBZ<42><5A>՟<EFBFBD>><3E><19><01>L<EFBFBD>q<1F>K45<34>3ҿK<D2BF><4B>hX!W<1C>0R;G*3<>͚<EFBFBD><<15><>Q<EFBFBD><51>Kہ<4B>;<3B>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>+<06><>.s<>1<EFBFBD>Q<EFBFBD><51><EFBFBD>Wi\"`>rI̟OQlrI<72><49><EFBFBD>\0<EFBFBD>mJ<EFBFBD><EFBFBD>AL,<2C><0F><>!<21>1<EFBFBD><15>oQ<6F>ɞ!Q<>>RAF<41><46>Q[<5B>Q<>}<7D><1A><><14><><EFBFBD> <20><>Jyd<79> <20> <09><><EFBFBD><EFBFBD>7<EFBFBD><37>ʜ\r<EFBFBD>9<EFBFBD>y<EFBFBD>E<>ᄺ8<E184BA>O<EFBFBD>6ťծd\np<EFBFBD>zS<7A>J<EFBFBD><03><><EFBFBD><04>0h1<68>E<EFBFBD><45><EFBFBD>1<EFBFBD>O<13><>֕<EFBFBD>Z<EFBFBD>{<EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>R<EFBFBD>V<EFBFBD><EFBFBD>n<EFBFBD>5<EFBFBD>J <09>W<EFBFBD><57>֕<EFBFBD><D695>ZzP<7A><50><EFBFBD><16><o<>ZQz{j<EFBFBD>չ.<2E>;<3B><>\$Y<><59>8<EFBFBD><38><EFBFBD>p<>#o<><6F>Ui\\<EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ך<EFBFBD>d]|<7C><><EFBFBD>:<3A><1E>[#<23><><EFBFBD>Q<EFBFBD><51>X<EFBFBD><58><EFBFBD>d<EFBFBD>祢ѻ<E7A5A2><D1BB>}<7D>[9j_<6A><1E><><EFBFBD><EFBFBD><EFBFBD>ذD\\<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD>W=s<>8 c4<63><34><06>V<EFBFBD><0C><><EFBFBD>{)<29> ]q<>R<12>c<EFBFBD><63>u <09>?_<1D>n;<3B><>z<13><>` f<>P<EFBFBD><50><12><>X<EFBFBD><58><19><><EFBFBD>O4<4F>f1<66> <20><><EFBFBD>n5<6E><35>L\\n<><6E><EFBFBD>#}1v'<27>_j0<6A><30><EFBFBD>'H<>N#<23>YB<59><42><EFBFBD>CU@gkY<6B>Ըb?a<1D>-<2D><><q<<3C>3):[K #<23>f{<EFBFBD><EFBFBD>##^(<28><><EFBFBD><EFBFBD>R<EFBFBD>'<1C><> 51<35><03><>^<5E>٪C<D9AA><43>\\<EFBFBD><EFBFBD><EFBFBD>핾<EFBFBD>p}Du3Ф<><1E>&<26>1W<31>h<EFBFBD>S<EFBFBD>g=<3D>Dw<11>_V<5F><56>¯<EFBFBD>ORm<><08><>bC<><43><18>;<3B>nU<6E><55><EFBFBD><EFBFBD><EFBFBD>w\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>Ҙ@<40><>p7D<37>v<EFBFBD><76><EFBFBD>7;<3B><>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><11>\"<EFBFBD><EFBFBD><EFBFBD>1ׇU<EFBFBD><EFBFBD><EFBFBD>-<2D>\$<EFBFBD>ܜ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ff<EFBFBD>\n<EFBFBD><EFBFBD>@8<>X<EFBFBD>SY<53>p{x<0C>ٗ)<29>B<EFBFBD><42>4<EFBFBD><34>@<40><><EFBFBD>!<21>H<EFBFBD><08>Z.<2E>:q<>IZ<49>T<12><>ǹ<EFBFBD><C7B9>Q>t#u<1E>۹<EFBFBD><DBB9>[<5B><04>ڦ<EFBFBD>;<3B>w<EFBFBD><1A>Jq!u<><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77>Ё d<><64>16Ex<45>YG<47>?E'<27>{Z!w<>f<EFBFBD><66><EFBFBD>ƊJY<4A>1<EFBFBD><13><><EFBFBD>TU<><55>WRG<52>x9<78><39><EFBFBD>Շ<EFBFBD>J<EFBFBD><4A>;{<EFBFBD><EFBFBD>ٙ<EFBFBD>7Yn<59><6E><EFBFBD><EFBFBD><EFBFBD>;<3B><>{ҟv<EFBFBD><EFBFBD>0<܌Uߑ2<DF91>G 1<><31><EFBFBD>܌<EFBFBD><01><>Ap-w<>ӱ<EFBFBD>F<EFBFBD>)<29><16><>%<25><>s<EFBFBD><73>ih<69>'p<>\n<EFBFBD>D<EFBFBD><EFBFBD>x<EFBFBD><02><>\$<EFBFBD><EFBFBD><EFBFBD><1E>Z<02>h<08>r<EFBFBD><72><EFBFBD><EFBFBD>\0ؑV(<28><>p`<60><><EFBFBD>%[Z 4<><34><EFBFBD>YӺNI;<3B><><EFBFBD>I<EFBFBD>R<EFBFBD><52>e(a<><61>t<07>9<EFBFBD>}<7D>x<>aI<15><><EFBFBD>w\\ժ<EFBFBD><M̯<4D>.N<4E><0B><><EFBFBD>C<EFBFBD><1A><>\"Ə<EFBFBD><EFBFBD><03>|<7C>@O><3E><><EFBFBD>^K!<21><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43>:<3A><>{5<EFBFBD><EFBFBD><EFBFBD>~L<><4C>9\\<EFBFBD><EFBFBD><16>(<28><>^I'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><>q<EFBFBD>\"<EFBFBD>e<EFBFBD><03><>SyMl<4D><6C><EFBFBD><EFBFBD><1B><0E>OV<4F>8BOVƸ0Wc <20>>0<><30>l'<27><><0F><>nT<6E><54>0<EFBFBD>>dy<64>SW<53><57>V\0_<EFBFBD>x;<3B>h<EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><0C>R<EFBFBD><03>u<EFBFBD>Y<EFBFBD>mK<>\nLyQ<EFBFBD><EFBFBD>xPB0/<2F><>?<3F><>#\0T<EFBFBD>FU(!?<3F>/<2F><><1E>@<40><><EFBFBD>%D0ғ<30>E]҃<><D283>b<EFBFBD><62><16>aU<61><55><EFBFBD><EFBFBD>p<EFBFBD>Hb^<5E><>.d><1E>w<><77><EFBFBD>^<5E>z\0<EFBFBD>'<27>^<5E><><EFBFBD><EFBFBD>%/T<>fn]x<0C><>Qe<51>x#ޗTePS枒<53>A<EFBFBD><41><EFBFBD>A<EFBFBD>:<3A><>G<EFBFBD>O><3E><><EFBFBD> <20><04><><EFBFBD>@3zeN<65><4E><EFBFBD><EFBFBD><EFBFBD>%><3E><>п<><D0BF>9_>b<><EFBFBD><7F>g<EFBFBD>d<EFBFBD><64><EFBFBD><03>f<><66><EFBFBD><1F><>X<EFBFBD>_B<5F>#<05>_L#<23><>m\0<EFBFBD><02>u(<28><><EFBFBD><EFBFBD> \0<EFBFBD><02><>djiS <08>h<EFBFBD>sPJE<4A>ãx<C3A3><78><EFBFBD><02>TY(o1-WG6<47><36>s0B0<42>SQ<53>`<14>><08>\0O[<06><>y<EFBFBD><79><EFBFBD><EFBFBD>)[<5B><>\\B<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>\\i<07>j<EFBFBD><6A>><3E>r~P\rZ\\o<EFBFBD><EFBFBD>X<>zEz6%<25><>?6<>Wf<02>><3E><>Π<EFBFBD>e<EFBFBD>7<EFBFBD>^<5E>JQ<4A><51>W<EFBFBD>(<28>^؏<><D88F>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Wz<EFBFBD>u<EFBFBD><EFBFBD>ޛlg<EFBFBD>^<5E><>Yz]<5D><><EFBFBD>^<5E>s<EFBFBD><73>i6cgjG_{z<EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>}<05> W<>բ8<D5A2>^<5E>8U<38>WOc<4F>x=<3D><><EFBFBD><EFBFBD>o`<60><08>\\Al-y<>\0<EFBFBD><EFBFBD>y'<27>T`<60>><3E><><16>ܕq<DC95><71><EFBFBD><EFBFBD>{<EFBFBD>[<5B><><EFBFBD>{<EFBFBD>k]<5D><>Kއ<4B><DE87>C<>{<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>zϏ<EFBFBD><EFBFBD>v<EFBFBD>]<5D><><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^|1_<31><5F><16>`al<05><><0F><><EFBFBD>\r<EFBFBD><EFBFBD>[=<3D>}<7D>^<5E><><EFBFBD>:<3A><>`<15>\r<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD>ۧz6 %<25><><EFBFBD><14>%ڣ<>E<EFBFBD>^<5E>n!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<60>_&<26>]<5D><>'<27><>t<EFBFBD><74>6<EFBFBD>Xi<58><69>\n<EFBFBD><EFBFBD>`<60><>^\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD><EFBFBD>6<EFBFBD>|<7C><><EFBFBD><EFBFBD>V<EFBFBD><56>o?<3F><02><>O<EFBFBD>7+<2B>+m<><6D><EFBFBD><EFBFBD>`<60><>_<EFBFBD>c<EFBFBD>`<60>m<EFBFBD><6D><EFBFBD>8]<5D><>/<2F>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>R<EFBFBD>U<EFBFBD>]<5D>WXYC^lW?[<5B>lO<6C>v<EFBFBD><76>d-7X\0<EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><17>{pNx<><78><EFBFBD>n~<10><>anu<6E><75><EFBFBD>|<7C><EFBFBD><EF9DB9>`<60><>W<EFBFBD><57><EFBFBD><EFBFBD>z<1D><>,Ι<>/˗[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>o<EFBFBD><6F><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>Go<47><6F><EFBFBD>\\|<7C>o<EFBFBD><6F>x<EFBFBD>}y<>/<2F>?\\mO<6D>v<EFBFBD><76><07>'ض<<3C>Qoͽ<6F><CDBD><EFBFBD><17><>ٿ\\<EFBFBD>pEֶj<EFBFBD>_<><5F>iD<69>fX<><58>'hN<1D><0F><>m<EFBFBD><6D>V\\<EFBFBD><EFBFBD><EFBFBD>'<27>5_y<5F><1F>X<EFBFBD><58> l<><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67>%{<EFBFBD>:<3A>볩<EFBFBD><0C><>;S<>}<7D>}<7D>ˏ<><CB8F>y<EFBFBD><79>u<EFBFBD><75><EFBFBD>}<7D><>7<EFBFBD>Z<EFBFBD>e<EFBFBD><65><EFBFBD>>c<><63>ͪ^<5E><>md]<5D><16>N dG<64>U<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD>SM<53>fW<66>?<3F><>;<3B><><EFBFBD>^r<04><>w<EFBFBD><77><EFBFBD><EFBFBD><11>78y)\r1T21@<40>a<1C><><EFBFBD>\$<EFBFBD>{<EFBFBD><EFBFBD>\\<EFBFBD>-\$<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><05><><EFBFBD>wzd<7A><64>}<7D><>A<EFBFBD>_}<7D><>w߀Q<05>W<EFBFBD><57>gL<67><4C><EFBFBD>N<EFBFBD><4E>4<15><>N<EFBFBD>?pay}<7D>k<EFBFBD>zy7\$!<21>_<><02><><EFBFBD><EFBFBD>_<EFBFBD>~<0B><0F>3<EFBFBD><33><EFBFBD><EFBFBD>&<1D>'<27><><EFBFBD><EFBFBD>ɬEY<45>Æ%~tIgI<67><49><EFBFBD><EFBFBD>a<EFBFBD><0B>l^9<>pg<70><67><EFBFBD><EFBFBD>5<EFBFBD>n<1B>(:<3A><>g<03>Yߠ<59><DFA0><EFBFBD>ǜ<EFBFBD>g~r<10>@<40>t\n<EFBFBD>-<17><>\r<EFBFBD><EFBFBD>*C<>vc<04><>E<12><><EFBFBD>9f<39>z<>݀\n<01>P<EFBFBD><50><EFBFBD><06><><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD>,Q<><51>\0Ә<EFBFBD>m<EFBFBD>Mpˣ<EFBFBD>y'h<><68>s<EFBFBD><73>y<EFBFBD>f<EFBFBD><0B>m<EFBFBD>Fi3<>K<EFBFBD><4B><EFBFBD>dy<64><79>送<EFBFBD><E98081><EFBFBD>!6QUݕ<55>)<29>@<\\<><7F>Ni<4E>Ag*<2A>K<EFBFBD><4B> <09>LS菘<><E88F98><EFBFBD>&g <09><>7`<60>g<EFBFBD>Fy<0F><>F<0E><>1<31>;G<><47>iX<>D<EFBFBD><44><EFBFBD><EFBFBD><EFBFBD>3@<40>\rߚ4<f\"<EFBFBD><EFBFBD>);<3B>8\0<EFBFBD>JY<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD>9<EFBFBD><EFBFBD>F<EFBFBD>`()C\$<EFBFBD>q8ϱ<38>\nz<EFBFBD><EFBFBD> J@<40>F\r\0<EFBFBD><EFBFBD>\0<EFBFBD><01>o<EFBFBD><6F><EFBFBD>\n4B<EFBFBD><EFBFBD>A<EFBFBD>\$\0<EFBFBD><EFBFBD>AV<EFBFBD>34X<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><02>)hIZ<49>:<3A>rA S<>q<EFBFBD><71>,<2C>R<EFBFBD><52>HDN'<27>'Q<><51>Qh``<1E><>1<EFBFBD><31>œhJ<68>3d<33>0<><13><>\\@*q8NڙE<DA99>e&<26>H!PXFeMT\$<EFBFBD>sdj<08><11>v<><76><EFBFBD>Q<>mgԫ|[<5B><><EFBFBD><EFBFBD><1D><><EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD><03>'=l<><6C><EFBFBD>\$l<><6C>}<11>F<EFBFBD><46>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?1k[Cn<43>RX@h<<3C><><EFBFBD><EFBFBD><EFBFBD>`<60><> <20><>;s]1<>0f&Q<>\"[<5B><07><EFBFBD><7F><EFBFBD><EFBFBD><<07>b-Aڅ<41>\nh<EFBFBD><EFBFBD><EFBFBD><0C><><04>,<2C><1C>1<><31>y<EFBFBD>k|<7C><><EFBFBD>J<EFBFBD><4A><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>+l\\mK<EFBFBD>D<EFBFBD><EFBFBD>R0@:&<16><1A><><EFBFBD><06>\\\nxmY<6D><59><EFBFBD><EFBFBD>Q|&<26><01><0B>y<EFBFBD><79> e+~A<><03><07><17>4\0<<3C>\0<EFBFBD>ԍnj\rv<EFBFBD><EFBFBD>IZ<EFBFBD>\r<EFBFBD>jR<EFBFBD><EFBFBD>1<EFBFBD>JMK<4D>m5<6D>V<EFBFBD><56>q<EFBFBD><71>(<0E>_<><5F>t<><74><EFBFBD><13>LVy<56>; x<>Gڎ<><DA8E>!<21>ɭ<EFBFBD><C9AD><EFBFBD>@<40>p<0E>i<EFBFBD>z<EFBFBD><16>v<EFBFBD>~:bp<62>ӵ<03><><EFBFBD><EFBFBD> <20><><EFBFBD>@<40>SZ<05><><EFBFBD>Nro`<60><<02><03><08>N<EFBFBD>><3E><><EFBFBD>,uh<75><68>C<>7 <20>bE<62><45><EFBFBD>wx<77><01>\"<EFBFBD><EFBFBD>/pIET<45>!a<04><>X<EFBFBD>h%E<><45><EFBFBD>0<EFBFBD>M<04>k<><6B>%pL`<60><>8<><04> k<><6B>%<08>I<>J<7F>9<EFBFBD>8<EFBFBD><10><>ӟ<EFBFBD>(<28><><EFBFBD>/\n\na<EFBFBD>!/1<>P7I<>%<25>*<2A>R<EFBFBD>AEu<45>>\n\\w<77><7F>`<60><>V<19><><EFBFBD><15>i<7F><69>K<EFBFBD><4B>]e<>؛T<D89B><07>Y<EFBFBD><59><EFBFBD><08><05><>h<EFBFBD><68>60[<5B><>3<EFBFBD>1 \$<EFBFBD><EFBFBD>{Ӵư_]1'<27>8@<40> %ƙ*0\\<EFBFBD>Att<EFBFBD><EFBFBD><EFBFBD><0B><><EFBFBD>'<27><><EFBFBD><EFBFBD>fP8䓊hv<><76>F#<23>H<1E>|Ʉ<19>3M\\<EFBFBD><EFBFBD>wzY<01><>'<27>#(<28>Q<EFBFBD><51><EFBFBD>m<10>E<EFBFBD>@_Bl<42><6C>A&<26><1A><><EFBFBD><EFBFBD>w<EFBFBD>[<5B><>\0kFM<06><><EFBFBD><1B>7<EFBFBD>R<EFBFBD><52><EFBFBD>}m<><6D>!<21>`<07><>L<EFBFBD>й<EFBFBD>ȁ<EFBFBD>)<29>+<2B>ǰPsO<08><>\0<EFBFBD>ک<EFBFBD><EFBFBD>9<EFBFBD>#0u<30><75>\"<0F><>a<EFBFBD>K÷#<23>.g\\<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>P<EFBFBD>}H7g<11><><05>MHxF<0C>)<M <09>*9T><3E><>Q<>;<><CDBE><EFBFBD>;<3B>t<EFBFBD>(2<03><>#\"`<60>;<3B>i<EFBFBD><69>\"\"<EFBFBD><EFBFBD>=<3D><><EFBFBD>ۦ<DBA6>\$<EFBFBD><EFBFBD>K<><4B>H<><48><07><>\0<EFBFBD>[<5B><>xp<78><70>Y<EFBFBD><17>1*O<>A<10><> 3<>p<EFBFBD><70>Nم<>Dp<44>!B'X<><58><EFBFBD>y<EFBFBD>D<EFBFBD>m<EFBFBD><6D>Ķ5z<35>\r<EFBFBD>1<EFBFBD>W<EFBFBD><EFBFBD>?<3F>R6ڄtz<11>X<EFBFBD>m<EFBFBD><6D>ZYB?z<><04><>#<23><>l<EFBFBD><6C>\0<EFBFBD>B;<02>ꄴb<<17><><EFBFBD>!'<27>NX<><58>@<40>\"<EFBFBD>HА@<40><><EFBFBD>O<EFBFBD>>è<>I<EFBFBD><49>!*,<2C><><03>/k4D'H.<2E>-<2D>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&<26>Ad<41><64><1C>c<EFBFBD><63>M<EFBFBD><0F>'iH\$<EFBFBD>6<EFBFBD>f<EFBFBD><EFBFBD>,<12><>8NП<4E>3<EFBFBD>Nf.<2E>hlR<6C><52><EFBFBD>0<14>ٕ<EFBFBD>u~<7E><13><>>(<28>[b<><62>Q6<51><36>E<(<28><1B><><EFBFBD><0E><>Q<12><><0B>g<EFBFBD>~<7E><>U ;<3B>wd<77><64>r<><72>H<EFBFBD><48>P=\r~o<16>R<13>8N-<2D>PIB<49><42><EFBFBD>=܂ U,<2C><>TE2<45><32>l(<28>'<27><><EFBFBD>p<EFBFBD>9mx'̐<>hh<68>Ԩ<EFBFBD>xh<78><68>i<EFBFBD><69><EFBFBD>pZΚ<5A><CE9A>#<23>DT<44>}!<21><><EFBFBD>-ж<0C><14>@<40><>|<7C>KA<4B>.<2E><><EFBFBD>4ԅ6M<>n<16>oX<6F><08><>\"<EFBFBD>ܨ<08><>G=У<01><>)\0<EFBFBD><01><><EFBFBD>(<28><><EFBFBD> <20>\"7<EFBFBD>f<EFBFBD><0B>PڣFb#v<>!B<>oN<6F><4E><04>><3E>KLL\r<EFBFBD>/<2F>2L* <20><><EFBFBD>A<EFBFBD><41>.~<7E>=(T<>-<16><>.\n|m^0A<05><><EFBFBD>\"OA<><41>+E<><45>a(<28><>(]hYܛII\"ܥ<07>thN/N<>Q<10>^}ZQg@`<60>Y[ܢ<>V4-<2D><14><><EFBFBD><EFBFBD>8<EFBFBD><38>F<14><>r=Ujm!<21><>h<> <09><>æ\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>COr<1E>!<21><><EFBFBD><EFBFBD><EFBFBD>I!<21><>9mV<6D>U<EFBFBD>۱B<><1B>EeuB<75>& f<>O<EFBFBD>m<EFBFBD><6D><EFBFBD>qm<71><01>3<EFBFBD>6<EFBFBD>I<EFBFBD><49>H<EFBFBD><48>n<EFBFBD>F<EFBFBD>0D7(mp<6D>F<EFBFBD>@<40>E\n<EFBFBD><EFBFBD>R<>G<EFBFBD><04><><U<><55><EFBFBD><EFBFBD><EFBFBD>2`uBN<42><4E><1A>]x<> -<2D>2<><32>H<EFBFBD>@5<>rW83<38>xr<78><72>҇<EFBFBD>3<EFBFBD>6<EFBFBD><36>@<40><><EFBFBD>K[+<2B>u<>qb<03><>xO<78><4F>]<05>&<26>Ԍ<EFBFBD>Y˾<59><CBBE>*0<>? <09>mf <09><>k<EFBFBD><16>M<EFBFBD><4D>C<EFBFBD>,q]\r<12><><EFBFBD><EFBFBD>0<EFBFBD><30>H<EFBFBD>X<EFBFBD>)\n <09><>!s<>Y<>A<EFBFBD>u<EFBFBD><75><EFBFBD><0C>Xv<58><1D><>bJ><3E><><EFBFBD>J ְ<><14>n<EFBFBD>TG<54><06><><EFBFBD><EFBFBD>p\r<12>.sH<73><48>5<EFBFBD><1B><><EFBFBD>MD<4D>3Ek\n<08><>S<EFBFBD>G]\r<EFBFBD>!<21>xHI<><49>nRN\"<EFBFBD><EFBFBD>Y ao8,<2C><>=<3D>t<EFBFBD><74>S:<3A><>s<EFBFBD>,<2C><11>m<EFBFBD>6<EFBFBD>T]D<>Fm<46>.K<><4B><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>S<EFBFBD>n<EFBFBD>~<7E>+<2B><>;\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=R5(p_<70>;<3B><><EFBFBD><EFBFBD>q<EFBFBD><71>BeQ\n<1B>9CtHP<48>l-<2D>ܮ<EFBFBD>l@(A<><10><1A><>?\n<11><1B><>o*֝<><D69D>|<7C>i<EFBFBD><69><EFBFBD><01><>u<EFBFBD><75>E<EFBFBD><45>~<7E><EFBFBD><7F>[<5B><> m<><6D><05>b&<08>n<EFBFBD>ZxDA<44>\0<EFBFBD>,<2C><>A8!<21><>b+9<>x&ѽ<>;<3B><><EFBFBD><EFBFBD><08>4Hl<48><6C> <03><>h<EFBFBD>ʀ<EFBFBD>\"BV<EFBFBD><EFBFBD>l6<EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>D<EFBFBD><EFBFBD>|^;<3B><>P[<5B>7<EFBFBD>V><3E>,˓7<CB93><37><EFBFBD>H <20><>7(A<>\\\"<EFBFBD>9I5<15>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(!G<47><7F><EFBFBD><EFBFBD><EFBFBD>5G<35><47><EFBFBD>K<EFBFBD><15>T<EFBFBD>\$<EFBFBD><EFBFBD><0B><1B><><EFBFBD>\$<EFBFBD>I<EFBFBD><EFBFBD>%<25>N:t`z%JWXF<><46>\$<EFBFBD>#v<19>4<EFBFBD><34>.<2E><><EFBFBD>Īh<C4AA><18>%<25>ӧS<D3A7><53>ـ i<12><>j<13>;<3B><><EFBFBD><EFBFBD>C<EFBFBD>z<EFBFBD>;.&<08><><EFBFBD>aCD<43>\0<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><08><>k<EFBFBD>y<EFBFBD><79><1A><>u<EFBFBD><75><15>!<21>bm4( e<0E><><EFBFBD><EFBFBD>Q5<12><><EFBFBD>l<EFBFBD><6C>6'2<><32>n<>bs<16>Tz<54><07>1\$<EFBFBD>/e<1D><>L<EFBFBD><4C><EFBFBD>'<27>z<EFBFBD>V\\<EFBFBD>]:뉗 <09>Ӣ;v~QZ<>;<3B>J|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_l<5F><6C><06><>w<EFBFBD><77><EFBFBD><16>f<EFBFBD>fq<1C><><EFBFBD>=v<>\n<EFBFBD>؈<EFBFBD>̎\"E<><45><EFBFBD>L<10><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F>I<>h\$<EFBFBD>\"<EFBFBD>?U#\0<EFBFBD><14><><EFBFBD>f<04><17>)<29>P<EFBFBD>UF#<23><><EFBFBD>f J&\0#<16>p<EFBFBD><70>CD<43><44>\n<12>)<29><>|-<2D><>;<3B>A<EFBFBD><41><EFBFBD><EFBFBD>9<><39> P<><50><EFBFBD>EJ a<><61>p<08>S<>6EPlB<6C>ܸ<EFBFBD>MB<4D>MߛR<m\0<EFBFBD>-<2D><>\"<EFBFBD><EFBFBD>E)<29><04>Ɋ<EFBFBD>p^0<>po<08>I<EFBFBD>~L<><15> J<><4A><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD>^5<>'<27><10>jqP<>do<64><6F><EFBFBD>3e<><12>D<EFBFBD>s<EFBFBD> <01><>k<EFBFBD>Îb`><3E><>}<7D>(<28>H<EFBFBD><48>Р<EFBFBD>[<5B>'sr<73>d<EFBFBD>3P<33>,..Q<1C>kN̽32K؇<4B><D887><EFBFBD><EFBFBD>ŝ1}<7D><>q<EFBFBD>k<EFBFBD>Ob<4F><62><EFBFBD>rԏ5<D48F>#w<>\"<EFBFBD>l]<07><>I<EFBFBD><16>J<><4A>0<EFBFBD>!<21><>x<EFBFBD>Qn<><6E>'<27><><EFBFBD><EFBFBD>Q&xbr<62><72>o,<13><<3C><<3C>t<EFBFBD>;<3B>B<EFBFBD> OI\0@\0HNY<EFBFBD><EFBFBD>=<3D><>O\"<EFBFBD><EFBFBD><18>_&<26><>2s<32><03>g<EFBFBD>^I<>mOP<>v<EFBFBD>ʂ<EFBFBD>I<EFBFBD>b<EFBFBD><62>e<<3C>O<>b8<62>I<EFBFBD><13>'<27>N<EFBFBD><4E><EFBFBD><17>˂y)<29><><EFBFBD><EFBFBD><EFBFBD>O\"<EFBFBD><EFBFBD><<3C>ؘ<EFBFBD>/<19><><<3C>;<3B>z^/D_<44><5F><EFBFBD><EFBFBD>ީ<EFBFBD><DEA9><10>{\r<EFBFBD>C<EFBFBD>`_q<5F>I*e <20>}<7D>+<2B><>(<28>\n<EFBFBD>Ae<EFBFBD><EFBFBD>P<EFBFBD> <15><12><0E>?<3F><><EFBFBD><1D>^<5E><>0<EFBFBD>zq\"jT<>F&<26>UB\0<1E><><11>Ѷ+<2B>K<18>0<EFBFBD><30><14><><EFBFBD><EFBFBD>ArQ<72>}>1p<31>Pl<50><6C><EFBFBD>N<EFBFBD>R;\rGd<08>&<26>\$)<29>V<EFBFBD><56>9[`<60><>ǯN<C7AF>F\r<1D>@!<21><15>U<EFBFBD><55>U<EFBFBD><55>iCRaFs<46>ך<EFBFBD><D79A>\n!\$<EFBFBD><EFBFBD><EFBFBD>=<3D><>`<60>Ň<EFBFBD><C587>%<25>v2y=<10><><EFBFBD>c2<63><32><EFBFBD><EFBFBD>h<><68>|Ǵ*<2A>^2Fj<0C><><EFBFBD><EFBFBD>R<EFBFBD><17>ߛ<12>aDG<44><47><1B>r6<72>u<08>-<2D>}<7D><><EFBFBD><EFBFBD>r<EFBFBD>%<25><><EFBFBD><EFBFBD><03><>} <20>ih<69><68><EFBFBD><1D><>++<2B>(<28>-<2D><>uV<><56>_<5F>+^<5E><><EFBFBD><EFBFBD>\"<EFBFBD><17><0F><>*<2A>\rX<EFBFBD><EFBFBD>-`V<13>j_<6A><5F>4{P<EFBFBD>Qzb<EFBFBD>w<EFBFBD>W<02><>X<EFBFBD><58>d<><64><EFBFBD><EFBFBD>p<>f<EFBFBD>Yҳ8<D2B3><12><05><><EFBFBD><EFBFBD>]<5D><><0F>_<12><><EFBFBD>+:cJF<4A>^r<>}]<5D><>8<EFBFBD>K.<2E><01>i{ܝM<EFBFBD>Y<EFBFBD><EFBFBD>%<25>@#.9b<EFBFBD><EFBFBD>Ɂ<EFBFBD><1A><04><>҇<EFBFBD>_N<5F><11><03><>,LX>5^<5E><><EFBFBD><EFBFBD><EFBFBD>g<>lX;<58>`<0E><><EFBFBD><02>S<>\0<EFBFBD>\r0ee><3E>i<EFBFBD><69><EFBFBD>V\r, <20>W<EFBFBD><57>W@<40>4p<><70>lXT<58><54>Z<EFBFBD><5A><EFBFBD>:<3A>\n<15>O<EFBFBD><4F>קP<D7A7>2a<>2<EFBFBD><15><><EFBFBD><EFBFBD>W<EFBFBD>-azu<>28'<27>c-<2D>|<7C><>1<EFBFBD>:<3A><><1C>{H܇<EFBFBD>b<0C><>i<EFBFBD>5<><35><1A>2#X#<23>íp<C3AD>}<7D><>>^<5E>.w~<02><><EFBFBD><EFBFBD>\nŦ<EFBFBD>B#r<>|<7C><1F>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1IC+Y<04>h<>,S<08> <20>b<EFBFBD><62><EFBFBD>_<EFBFBD><0E>+#<23>VE<56>\0<EFBFBD><1F><>Y<1B><><EFBFBD>ͣX`<60><><08><>}<7D><>L^<1E>.U#<23><><EFBFBD>d#<23><>1<EFBFBD>dXM<58><4D>^<5E><>et<65>m<EFBFBD><6D>(<28>ϯAXǹ<58><C7B9><02>?+߇<>5d<10>@<08>7C<37><43><EFBFBD>W&.<1E>l<EFBFBD>@%<25>(<28><><EFBFBD>a<EFBFBD>GT<1A><>E<EFBFBD>T<><54>9<EFBFBD>FA<><1E>c<EFBFBD><10>`e<>t<EFBFBD><74>I<EFBFBD><49><EFBFBD>\\<EFBFBD>/b<>,<2C><1F>?Y<03><><EFBFBD><<3C>d<0C>Q<EFBFBD><51>zi~ZY<5A><59>4&nq<03><><EFBFBD>Zk<10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?D0<44>n<EFBFBD><6E>V<>S'Vv<56>Y<>3}(u<10>BkT#E<><45>K2L<0C><>A<EFBFBD>@<40> <20>DP<44>4<06>2<EFBFBD>+, <09>T<EFBFBD>[<5B>U em<65><6D>><0F>[<5B><><EFBFBD><EFBFBD><EFBFBD>9B5<42><35><17>L#<23><><EFBFBD><F0959086>s*<2A><><EFBFBD>L<><4C><EFBFBD><EFBFBD>P<EFBFBD>5o(Q<><51><EFBFBD>B<EFBFBD>&<26>6<1C>7<EFBFBD>pD\nr^<5E><>p<EFBFBD>_<5F>DT䄎<54>G<EFBFBD>,J<>\"\0(#<23>Έ&,X4v<34>(<28><1B><>><3E><1F>,><3E><>.E\$<14>Nm<4E> 0-<2D><>ͪ<EFBFBD><CDAA>(crl<72>R&<03>w010#<23>;<3B>i7dNLf<><66>[<5B>A<EFBFBD>I<EFBFBD>Z<18><>\"bB<EFBFBD><EFBFBD><1C><><EFBFBD>lv<6C>]<17>P)<03>x]`ŀt!l)<11>I^\nA\rR<EFBFBD><EFBFBD>U5TW<EFBFBD>3P<EFBFBD>v<>pp<70><04>C4<43><34>a<EFBFBD>I\$4<EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>&R<>D<EFBFBD>`<60><><EFBFBD><EFBFBD>\0<EFBFBD>x<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>(&<26><> <20>Fmx<6D><78><EFBFBD>#<1B><>.L<><4C>T<EFBFBD>mo*<2A><>Ą?h\"<12>03<30>Mm\"2C<EFBFBD><EFBFBD><EFBFBD>؏^1<> <20>\"<01>0<EFBFBD><30>`<60><0F>9<EFBFBD>;<3B>=<3D>ʑ<EFBFBD>q{I<<3C><17>.y<> <03>b<EFBFBD>Eȋ<45>t<EFBFBD>/3<>2ԣ4O '<27>xv.<2E>@C<>Q<EFBFBD>\$Y<EFBFBD><EFBFBD>y<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>p<0C><1B>R<EFBFBD>\n|\r<14><>z<EFBFBD>`\n<EFBFBD>^t+xgX<14><>p \0<18>7JF<4A>F<EFBFBD>p\0\r@\0003<EFBFBD><EFBFBD><01>F<EFBFBD><03>`\r<EFBFBD>o<EFBFBD><06><>]<5D><01> <06>7<EFBFBD>i<EFBFBD>6\0p\0<EFBFBD><01><><EFBFBD>@\rdmH<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><01><><EFBFBD><EFBFBD><EFBFBD><0C>q<EFBFBD><71>\0`\0<EFBFBD>GĎ<EFBFBD>\0\$<EFBFBD>\0o#<23>G̍<1C>8<EFBFBD>w<EFBFBD>.<2E>\0<EFBFBD>̐` <0C>r<EFBFBD><72>\0q#<23><01><>Y\0\r<EFBFBD><1B>6\0a#zHT<48>0 <0C><1B><><EFBFBD>\0<EFBFBD>G<EFBFBD><EFBFBD>)<1A>Jd<4A><64><EFBFBD><EFBFBD>P\0<EFBFBD>G<EFBFBD><EFBFBD><EFBFBD><EFBFBD>rC<EFBFBD><1B>\0<EFBFBD><EFBFBD>\0<EFBFBD>H<EFBFBD><EFBFBD>%<25>C\$<EFBFBD><EFBFBD>摪\0<EFBFBD><01>9&Kdn<64>9<EFBFBD>M#VGx)(rO<72><4F><EFBFBD><10>u\$<EFBFBD>F<EFBFBD><EFBFBD>i)r6dn<64>6<EFBFBD><36>\ni`rNd<4E>Hӑ<48>\0<EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>@\r<EFBFBD><EFBFBD>H<EFBFBD><EFBFBD><EFBFBD>%fJܔ<4A>,2T\$<EFBFBD><EFBFBD>]<5D><>\$<EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>\"rOd<EFBFBD>\0000\0b\0<EFBFBD>K\\<EFBFBD>`28<32><38><EFBFBD><16><>%\nH<03>&<26>T<EFBFBD>s<EFBFBD>2\0k\$Il<49>@\\dl<EFBFBD><1E><>#<23><01><><EFBFBD>(<28>E<EFBFBD>\0005<EFBFBD><EFBFBD>\$<EFBFBD><EFBFBD>쒩%[<5B><>Ɍ<EFBFBD><C98C>%<25>GL<47>)!H\$<EFBFBD>I<07><>%vH䕠<06><>\0001<EFBFBD>J\0a\$vK<EFBFBD><EFBFBD>i5<EFBFBD>@\$<EFBFBD>I<1B><>&<26>Iܑ<49>6<EFBFBD>4<EFBFBD><34>I<17>%\$<EFBFBD>M,<2C><> <20>@<40><>\09<EFBFBD><EFBFBD>%fH<66><48>i<>Kd<4B>I<EFBFBD><49>\$<EFBFBD>F<EFBFBD><EFBFBD> <1D>j\$n<EFBFBD>3<EFBFBD>/%zI<7A><49>y2<79>D\$<EFBFBD>\09<EFBFBD><EFBFBD>\$H<<3C><>*Y\0I<><49><EFBFBD><04>K<EFBFBD><4B>)/`\rd<EFBFBD><EFBFBD>b\0j<04>H̝<48>/`\$<EFBFBD>I{<EFBFBD>w#<23>J<0C><><1C>@I<><49>%%G<><47><EFBFBD><RU\$<EFBFBD><EFBFBD><EFBFBD>\0i'G<>9<EFBFBD>3<EFBFBD>J\$<EFBFBD><EFBFBD><0C><>&FO,<2C><06>\r<EFBFBD><EFBFBD><EFBFBD><1D><>&<26>GI RV<52><56>I<12>5\$<EFBFBD>I<EFBFBD><EFBFBD>i0<EFBFBD>R\$<EFBFBD>In<EFBFBD><EFBFBD>(<28>M<<3C><>D<12><><EFBFBD>ɉ<EFBFBD>S\$:G<1C><>?<3F><><EFBFBD><EFBFBD>\0004<EFBFBD>_(\$<01><><EFBFBD>2p<32><70><EFBFBD>4<EFBFBD><34>\$<EFBFBD>L\\<EFBFBD>i2P<32><50>Ib<49><62>\0<EFBFBD>F<EFBFBD><EFBFBD>)+RM<52><4D>J:<3A>9#<23>P<1C><>:<3A><>\0004<EFBFBD>Q&D<01><>I\"<EFBFBD>A<EFBFBD><EFBFBD>I-<2D><>%ZQ<5A><51> 9<>r<EFBFBD><72>H<EFBFBD><48>(^G<><47><EFBFBD>Jғ%<0F><><EFBFBD>='<27>Gt<47> K<>P\$<EFBFBD><EFBFBD>\$<EFBFBD>}\$<EFBFBD>P<<3C>9;Ғ\${HݓčJ<0C><><1A>A<EFBFBD><41>J#<23><>%*L<0C><><1C>r\$<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD>\$nH<EFBFBD><EFBFBD>I5<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><EFBFBD>)<29>Q<04>i8E<><18><><EFBFBD><EFBFBD>'<27>M\$<EFBFBD><EFBFBD>-R<>L<EFBFBD><4C>e<EFBFBD><65>HvMl<4D>IF<49>v<EFBFBD><76>I<EFBFBD><49>w#jRԟ<52>22<32>d{<EFBFBD>&<26>k*>J<><4A>I5z<>\\H<EFBFBD><EFBFBD>'(<28><>|<7C>y;<3B><><EFBFBD><EFBFBD>#C<><43><EFBFBD>vOԕ<4F>(2<><32>w<EFBFBD>5<EFBFBD>9)RT<52>Y6R<36><52>.<2E>ޕS&<26>K\$<EFBFBD><EFBFBD>32ne9Il<EFBFBD><EFBFBD>&<26>RxIW<12>d<EFBFBD>I<EFBFBD><49><EFBFBD>+&L<>Y\\\0<0C> ʱ<><CAB1>(<28>N0)P e <09>1K+&G|<7C><>\\<12><>}<7D><><EFBFBD>{\$2Oh<03><<3C>9%CIƓ(Nt<4E><74>?<3F><><EFBFBD><EFBFBD><EFBFBD>e\0a+<2B>Gx4<><34><EFBFBD><0B>풵)NW<4E><57><EFBFBD><06>}<7D>N<EFBFBD>\r<EFBFBD>W(<28>V,<2C>9-2=\$<EFBFBD>J6<EFBFBD><EFBFBD>*8<>t<EFBFBD>9Z<39>@\$<EFBFBD><EFBFBD>M.<2E>\$<EFBFBD>#d<><64> <20>H<EFBFBD><48>I<EFBFBD><49>'%<25>TD<54><44>I<EFBFBD><49>\$<EFBFBD><EFBFBD><07><>,\nVL<EFBFBD> <20>d\0<1A><0E><>%HD<48><44>@<40>o<EFBFBD><6F>K><3E><>%Y<><59>9RrA<0B><>k<EFBFBD>)&:Y<><59><EFBFBD>9<EFBFBD>`<60>pI8<49>%BGT<47><54>k2<6B><32>q<EFBFBD>Z<EFBFBD>K+<2B>L<14><>F<EFBFBD>¥n<C2A5>C<EFBFBD>*.W<><57><EFBFBD>Y<EFBFBD><59><EFBFBD>j<EFBFBD>~.<2E>)FGl<47>Y2rA<72>6Je<4A><65>-G<><47><EFBFBD>FR{<EFBFBD><EFBFBD><EFBFBD><13>C,6H<<3C><>Er<45>e<EFBFBD><65>A<EFBFBD><41>,<2C>H<EFBFBD><48>99<39>?%<25>K<17>_+<2B>N<EFBFBD><4E> o<><6F>\$<EFBFBD>H<EFBFBD><EFBFBD>o,\nO<EFBFBD><EFBFBD><EFBFBD>FR}%Ix<49><78>,<2C>Wd<57><64>+r<>\$<EFBFBD><EFBFBD><1B><>\$fU\$<EFBFBD>#<23><><EFBFBD><EFBFBD>J<EFBFBD><4A><EFBFBD>.]<5D><><EFBFBD>Nr<4E><72>-<2D>֕<EFBFBD>)rR̸<52>G2ʤ<32>Iӕ<49>.*J<><4A>)FR<46><52><EFBFBD>IM<49>[&<26>S|<7C><>R2<52>\$<EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>+T<><54><EFBFBD>tr5<72>II<49><49>&\nZt<EFBFBD>YMR<EFBFBD><EFBFBD><EFBFBD>Kԓ#'<27>IT<49>yA<79><41>eD<65>0<EFBFBD><30>pZH̐y@Kdj<64>֖<EFBFBD>#nW<1C>)]r6<72>^<5E>@<40>s%BKܣ<4B>u<12><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>vY<<3C>Yd<59>`<60><>Ir<49>K\$<EFBFBD>GܾR><3E><><EFBFBD>4<EFBFBD><34>&<26>Qd<51>9@<40>;<3B>\r<EFBFBD>ȕ<EFBFBD>#<23>RD<52><44>-<2D>b&\0J<16><>\$<EFBFBD>Nԝ<EFBFBD>]<5D>C<EFBFBD><43>J<EFBFBD><4A>(VOd<4F><64><EFBFBD>G<>S<EFBFBD>֗<EFBFBD>(<28>QD<51>y42<34><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q'JX|<7C>i]G<> H瓧.<2E>Wd<57><64><r5%|I<><49><EFBFBD>#ؘt<D898><74>\\S<03><>I<EFBFBD><49><EFBFBD>0<EFBFBD>W4<57>Y;<3B><>\$<EFBFBD>Kk<EFBFBD><EFBFBD>\$zL<EFBFBD><EFBFBD><EFBFBD>J2J\$nLT<EFBFBD>-&\\ܗ \$<EFBFBD><EFBFBD>e<1C>d<EFBFBD><64>'jG<6A>ũks<0F><><EFBFBD>٘1(2QĮ <1D><>\$<EFBFBD>I9<EFBFBD>\r\$<EFBFBD>Kģ lR<6C>e<1C><>J\0<EFBFBD>P<EFBFBD><EFBFBD>B<>z<EFBFBD>:ɋ<>\$<EFBFBD>NԱ)F<>E<EFBFBD><45>KC<4B>A\$<EFBFBD>Y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҍ<EFBFBD>\n<EFBFBD>ۙ(nFԨiM<4D>;<3B><>#<23>a<14><><EFBFBD>D<EFBFBD><44><EFBFBD>̜<EFBFBD>{#NL4<4C><34>#Ҍ\$qJi<EFBFBD><EFBFBD>+F<><46>=<3D>b<EFBFBD>J[<5B>&Uԧ<55>S<EFBFBD>&\\L<EFBFBD><EFBFBD>K\$<EFBFBD>f4<EFBFBD><EFBFBD>(\ndqJ<EFBFBD><EFBFBD><EFBFBD>,<2C>NL<4E> <1B><>\$<EFBFBD>I<EFBFBD><EFBFBD>o%<25>W<EFBFBD><57>9u뤢3<EBA4A2><33><EFBFBD>)<29>]썹BR<42>%TI<54><49><EFBFBD>2<EFBFBD>Q<04>i(<28>><3E>\"̧<EFBFBD><EFBFBD>\$<EFBFBD>I<1C>iu2<75><32><EFBFBD>J6<4A><36>'<27>O<EFBFBD><4F><EFBFBD><EFBFBD>rQ<72><51><EFBFBD>Ƙ<EFBFBD>+<2B>H4<48>Id<49>:<3A><><EFBFBD><13>[(<28>FԤ<46>=<3D><>&t<>9<EFBFBD><39>,>^l<><6C><EFBFBD>%\$<EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><EFBFBD>vG<EFBFBD><EFBFBD>9R\0I&8<0E><>'<27>Vd<56><64>\$<EFBFBD><EFBFBD>e<EFBFBD>K[<5B>W+aT<61>9?r<><72><EFBFBD>%<25><><01>a<04>i'se\r<EFBFBD>F<EFBFBD>S4.G<><47>I<EFBFBD><49>8<EFBFBD><38>\rړ<EFBFBD>\$<EFBFBD>H<EFBFBD>װ<0C>O<EFBFBD><4F>K0<4B>)<29>S\\<EFBFBD>I<EFBFBD>3:e\nKԚ<EFBFBD>0T<><54>i`R<><52>H<EFBFBD><48><EFBFBD><EFBFBD>.<2E>Q\\<EFBFBD>)d<>IeKD<4B>/#fP<14><>K<EFBFBD><4B>%<25><>ݒ<EFBFBD>2<EFBFBD>S<EFBFBD><53> <09><><0C>DLR&):L<><4C>I<EFBFBD>z%\r<EFBFBD><10>C)Za<14> <09>D<>T<EFBFBD><08><>*:H<><48>I|Re<52><65>\$<EFBFBD>\r*j]<5D><>ɢ2<C9A2><32>q<EFBFBD>2<EFBFBD>E)<29>]<0C><><EFBFBD>`<60><><EFBFBD>k<EFBFBD>/#<23>Q4<51>=RE<52><45>JV<4A>{*<2A>W<14>r<><1C>VLϘW3<57>O<EFBFBD><4F>yr<79>V<EFBFBD><56>J<EFBFBD><4A><EFBFBD>&>kd<6B>و<EFBFBD>E<EFBFBD>\nʑ<EFBFBD>s&nm<14><>:<3A>s<EFBFBD><73>I*<2A>34\"l<14><>GҾ\0<EFBFBD><EFBFBD>i<EFBFBD>{42O<<3C>YU<59>i<EFBFBD><Jb<4A><62>%<25>W<EFBFBD>é<EFBFBD><C3A9>'<27><>ME<4D>Q4<51>gt<67><74>+RĞ<52>Fr@3\"<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD>J<><4A><EFBFBD><EFBFBD><EFBFBD>W`<60>Ꮪ<EFBFBD><E18F9A><EFBFBD><EFBFBD><EFBFBD>ך'ez`r<>p0<70><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<18>9uC<75>6'<27><>V(M<>^<18><>k[/Y<>ĉ&<26>-<2D>X<04>vc<76>9<EFBFBD>@\n<19>ˍj<CB8D>-u\n<EFBFBD><EFBFBD><EFBFBD>xW<78>0_<>81z,<2C><08><><05><07><>b<0C>\$J<>E{kk#T<><54>{Ș^pj<70>`)<13>_0N'~<7E><><EFBFBD><EFBFBD>J<EFBFBD><4A>3\0u@<40>2_o<5F><6F>&pa(<28> k<><6B>1<EFBFBD>d<EFBFBD>6<EFBFBD><36><EFBFBD>ǰ<>A<EFBFBD><41>\0:<3A>h\0<EFBFBD>L\n<EFBFBD> <20><04><1B>2aO99<39><39><EFBFBD><EFBFBD><EFBFBD>,@g([XL<02><>6<>4W<34><57>Z<><5A><EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD>3<EFBFBD>V<EFBFBD>&`<60>ma<6D>ky<6B>/<2F>Ԯ<>\0u8<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><07> ]<5D>{]DG-<2D><>=<3D><><EFBFBD>LGވ<47><01>PrX<>0\nk<EFBFBD><EFBFBD>±<><C2B1><EFBFBD><EFBFBD>Hh<48><68><EFBFBD>B<EFBFBD><42><0C>xŘRF<13>+<2B>AQ8]nlh<6C><68><EFBFBD>|W<>/AW<41>Q<>D<EFBFBD>w<EFBFBD><77>5<03>Ο}<0E>_<><5F>e{<13><1F>U<EFBFBD>&<26>yf<79>r<08><><EFBFBD>A<>]<5D>b<EFBFBD>`?q(<28>;3<>g],<2C>}<7D>bu<62><75> <09>+<2B>A<EFBFBD>>ݜ<><16><0F>~<7E>aXN<>\\j<EFBFBD>(<28><><EFBFBD><EFBFBD>\r_Z<5F>ZW<5A><57><EFBFBD>ur<75>9|<7C><><EFBFBD>(W<>;X<><58><EFBFBD><19>ϸ'k-<2D>e<EFBFBD>\rj9<EFBFBD><EFBFBD>k@<40>TF6<46>dD<64><44>}I#G<><47>f<EFBFBD>/<2F>\0<EFBFBD><EFBFBD><01>T<EFBFBD><54>Ȫƙ<14><>d<EFBFBD>,<01>O<19><04><><EFBFBD>\0SY<EFBFBD><EFBFBD><EFBFBD>alu`kK<6B><17><>(<28><18><>;h.W<>lj<6C>m<EFBFBD><6D>\0<EFBFBD> n<><04>6/ҧ<><D2A7><EFBFBD>_<EFBFBD><0B>qH%<25>k<EFBFBD><6B>_+<2B>X<EFBFBD> <03>\"<EFBFBD><EFBFBD>Fd<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD>\r<EFBFBD><1F>)<29>d<EFBFBD>%`*<2A><><EFBFBD>P<1A><>D,<2C><15>z<EFBFBD>t<EFBFBD>+<2B><>\0-<2D><><16>=k<04><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OG<4F>6<EFBFBD>^p<>o<EFBFBD><6F>l<EFBFBD><6C>k<EFBFBD><6B>%v<>]l,Q2kזu<D796>W<><57><EFBFBD>z<EFBFBD>~ <09>Sѧ*O]Z<><5A> {<EFBFBD><EFBFBD>!2<><32><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64>E<>P~<0B><>://<2F>r<EFBFBD>9<EFBFBD>Sޥ<53><DEA5>ݞ<EFBFBD><DD9E>\$ʹ<>q<EFBFBD>R<><52><EFBFBD>רO/<2F><><EFBFBD><EFBFBD>b\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>jό_P<1F><>q<EFBFBD><71><EFBFBD><0C><>N|_<><5F>A8\\<EFBFBD>T窯<EFBFBD>><3E><>G.\rix\\<EFBFBD><08>@aW<61>-<2D>|<7C><><1A>x`kN\\\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>y<EFBFBD><02><>3<EFBFBD>\0<EFBFBD>ϳ{<EFBFBD><EFBFBD>=<3D><>*<2A><>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>_P<5F>p+<1F>kK<6B><15><><EFBFBD>>~<1A>u<EFBFBD><75>\n2쟎<32>@\n<EFBFBD>T5<EFBFBD>o<EFBFBD><17>,ߟ|<7C> 8k<1C><><EFBFBD><1E>%<25><>|<7C>><3E>5{<EFBFBD>`dl<64><6C> <09><>*<2A>-|\$k<EFBFBD><EFBFBD><01>&<26>!<21><><EFBFBD><EFBFBD>@,<2C><><EFBFBD>be'<27>Fß<46>?2˗<32>D<EFBFBD><44><07><>|<7C>7<EFBFBD>x<EFBFBD><78><05><><15><>ڟԺ<DA9F><D4BA>b<EFBFBD>4<><01>I<EFBFBD><49>Wƀ<57><C680><05><><10><>\0OX<04>r<EFBFBD>c<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD>\r.<2E>b<0C>i:<3A>9<>s<EFBFBD>(<0C>iWR<57><52><EFBFBD>s-ps<><73>,<aj<>b<EFBFBD>Yɳ<59><C9B3>Ӭ.[ľ<>x<EFBFBD><78>i<EFBFBD>s<EFBFBD>h<1A>/\$|<7C><>k<13><><EFBFBD><EFBFBD>1<EFBFBD>D<EFBFBD><44>8r<38><72><EFBFBD><F195A7B3><EFBFBD>F<EFBFBD><46>A.<2E>*<2A><10><><EFBFBD>('<27>?<3F>v<EFBFBD><76>]<5D>x<EFBFBD>xtV7PX-8:<3A>L<EFBFBD><4C>#<23><>h?Mֽ|<7C><><EFBFBD>t\rYn<EFBFBD><EFBFBD>}Y>&<26>*<2A>z\r<EFBFBD><EFBFBD><EFBFBD>)<29>k~2<><32><EFBFBD>ue<><65>'<<3C>aY<1F><>D<EFBFBD><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><06><>A<EFBFBD>p5<70><35><EFBFBD>9<11>^h<><68>M<08><>L<>?<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>`<60>+ѡ4ĕl3<08><03>X(<10>#<23><><EFBFBD>.<2E><><EFBFBD><EFBFBD>S<>#<23>Ϻ<EFBFBD>%9<>z\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h8<EFBFBD>IW<EFBFBD>7Ŗ% %<25>T-gS<67><53><EFBFBD>A<><41>c*K<>hO<>\\<EFBFBD>;q<><0B>iP<69>:<3A>s{<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><05><><EFBFBD><EFBFBD>#<23>4~@<40>2\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>v(k<><6B><0F>?<3F><><EFBFBD><EFBFBD>j<13><>\nP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿խl4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]'@<02><><EFBFBD><05><>#<23><>XC;<3B>9<EFBFBD>j4<08>P<13>+@^uH<02>ԬhwP|<7C>V<>Z<14>\0hi=<3D><><0C>\0><3E><><EFBFBD>S<><53>R<EFBFBD>.aC<><43><EFBFBD><EFBFBD><EFBFBD>#\r<EFBFBD><EFBFBD><11><>MD5<44><35><03><>KAh<41>/<0C><>J)t<>tT;<3B><><EFBFBD>\0<EFBFBD><EFBFBD>:I<>u<12>\nS<EFBFBD>V<EFBFBD>Q,<2C><>D<EFBFBD><44><EFBFBD>̚&<0F>h/<2F>J[<5B>=<3D><>5<0E><0C>}<7D>t<EFBFBD>ϡ<EFBFBD>A<EFBFBD>o,<2C><>'k<>(<28><07>][C<><43>u<07><><EFBFBD>;<3B>>QP}<7D><1B><>\n<EFBFBD>k<><6B>6<EFBFBD><36><EFBFBD>ܹ<EFBFBD><DCB9>\\<EFBFBD><EFBFBD><EFBFBD>T#<23><>Б<EFBFBD><04><><EFBFBD>d<EFBFBD><07>S<EFBFBD><53>^.<2E><><EFBFBD>Bmk]\n*<13>R<EFBFBD>AQq<51>9<>eu<10>TN(<28>P<EFBFBD><50><EFBFBD><1F>xު-<2D>+ 5P<35><50><EFBFBD><EFBFBD>F<EFBFBD><1C><>t-^\0Y<EFBFBD>o9f<EFBFBD>u<0B><>s<EFBFBD>h<EFBFBD><68>F<EFBFBD><46><EFBFBD>J<EFBFBD><0B>E<EFBFBD><45>e<EFBFBD>c0<63>\\~<7E>&<26>u<0C>)<29>d<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><17>Z7<15><>#M<>C}`:<3A>J5<4A>bhYQ<59><51><EFBFBD>F<EFBFBD>t<0B><><04>kg<6B><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>m<1B><><EFBFBD><&<26>Q<EFBFBD>Z<EFBFBD>CހSEso<73><6F><EFBFBD><EFBFBD>\\)@J<4A>ޠ<EFBFBD><DEA0>@'<0B><><EFBFBD>5Gl5<10>.T<18>Ѫ~<7E>GZ<47>0f<14>\nYoQ<EFBFBD><EFBFBD><EFBFBD>@<40>%:9kZ<6B><5A>P@_AG<41>\n<EFBFBD>%<25>J<>#<23><>\0WG<EFBFBD>}<7D><05>8K<18>2PL<0F><>.<2E><><1F>>4Mփ<4D><02><>D<EFBFBD><44>Z<EFBFBD>j'<27>}<7D><>Q<EFBFBD><51>\rE<0E>MjA+<2B><>wP*<2A><>H<16><>ަ\\<EFBFBD>\n<EFBFBD>:<3A><><EFBFBD><EFBFBD>:F<><46><02>*<2A>}<7D><>?<19>SE<53><45><EFBFBD><15><10><>h<EFBFBD> <09><>P<EFBFBD>=l<1A>:<3A><>)ЌX<D08C>E<EFBFBD><45>5<1A>E<EFBFBD>ب<EFBFBD>P<EFBFBD><50>\rE
\ru<><> P<><50><EFBFBD>@<40><>e!<21>H<EFBFBD>o<EFBFBD><6F>R!<21>OA<4F>vmJH<4A><48><EFBFBD><EFBFBD>N<0B>2<>3<1E>Fo<46><6F>aR!<21><>H<1A><><EFBFBD><EFBFBD><EFBFBD>kn<6B><6E>Q<EFBFBD>Y\\<EFBFBD><EFBFBD><EFBFBD>-\r<15><>S|Ev`<60><0B>6k<36><6B>=<3D><>Z<EFBFBD>Ȋ<04><>,<07>;<3B>P\0<EFBFBD><EFBFBD>YkH` i@<40>`<0F><><12><>赙o<E8B599><6F><EFBFBD><EFBFBD>aZn|L<><4C><EFBFBD> V<><56>L~6<><36>kI(<28>;<3B>-i\0<EFBFBD>G<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<>%<25>K[N43<>&<0F><> 0<>c̰ȹj`<60>Hq_@!<21>+<2B>#9)<29><><EFBFBD><05><>L<EFBFBD>%-<2D><>OJ<4F>m2<6D><32><0B><><EFBFBD>4<EFBFBD><34>aS9<53>c\$<EFBFBD>JRԣ'4<> #j<><04>%,<2C>O<EFBFBD>p<EFBFBD>f<EFBFBD>#<23>J-,<2C><><T<><54>)<29><><EFBFBD>x<EFBFBD>nsH<04><><EFBFBD>y<EFBFBD>e<EFBFBD>٥<EFBFBD>J-p<>.w<><77>S<EFBFBD>,=<3D>\$}A<16><><04>?<3F><>g<EFBFBD><67>sZ<73>G<EFBFBD>r<02>Z_3y<33><79>,B<>\$}^<5E><04>7<EFBFBD>{<EFBFBD>X2<EFBFBD>e><1F>c<02>JR{<EFBFBD><EFBFBD>G`&<26>~<7E>3\0:K<><4B><EFBFBD>A<EFBFBD><41>]<5D><><EFBFBD><EFBFBD>K<11><><EFBFBD>ƃ<EFBFBD><C683><0B>0<EFBFBD><30>:<3A>-<2D>S<13><>4<EFBFBD><34>W<EFBFBD>H!mu,<2C><08><>i<EFBFBD>GBb]L}^<5E> <09><><EFBFBD>U<EFBFBD>RԦh<D4A6><1A><>pTǧIS;<3B>L<><4C>4<EFBFBD><34>,<2C><>I<EFBFBD>#<23>M<02><12><><13><><EFBFBD>SF<53><46>G<EFBFBD><02><>x<EFBFBD>l-<2D>GQ<47><51><EFBFBD>DI<44><49>5%<25>tҩ<74>SX}<16>ڀ<EFBFBD>!\0ӡ<EFBFBD>\$'<03>6 <1A><04><>4@<40><>Gr|=:<3A><>}4Jj<4A><6A>h<EFBFBD><68>^<5E><>:<3A><><EFBFBD>5<16><>U<EFBFBD><55><EFBFBD>M<EFBFBD><4D><12>\n<EFBFBD>U<EFBFBD>̧<EFBFBD><EFBFBD><EFBFBD>[<5B><06><19><><EFBFBD>V><3E>5)<29>0<EFBFBD>\$<EFBFBD>?<3F><>\n<EFBFBD>Zb<EFBFBD><EFBFBD><EFBFBD>(S<>b<<3C><><EFBFBD><02>r<EFBFBD>ŧ<EFBFBD>Q\"[]:ƆJۊg<DB8A>\n)<29>R<EFBFBD><52>N<><4E><EFBFBD>:E<><0F>iѭ<69><D1AD>YN<59><4E>rۺdӽV<D3BD>S<EFBFBD><53><EFBFBD><EFBFBD>zp<7A><03>%T<>(<11>_g?^v`~<08>d<EFBFBD><64>]<5D>-^<5E>e<01>;iٔ ERO<52><4F>;x<><78>U<>bC<62><43>MX\"<EFBFBD><EFBFBD>o;u<>TgkSэR<D18D>&<26>\r9Ū4<EFBFBD>iM1<EFBFBD>_\\v<><76><EFBFBD>}c<12>S<EFBFBD><53>ƷҊ<C6B7>><3E><>k<EFBFBD><6B>Ѳ<EFBFBD>_<EFBFBD><5F>9<EFBFBD>:<3A>*~<7E><><EFBFBD>&<26><>e<EFBFBD>KM~V]l<><6C><EFBFBD><EFBFBD><EFBFBD>`ƿ<><C6BF><EFBFBD>@*<2A><>\0<17><><EFBFBD>bO<1B>|@<40>ݵX<01><06><><EFBFBD><EFBFBD>6\r(<28>y<EFBFBD>L<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hu8<EFBFBD>r<13><><10><>_<EFBFBD><5F><0E><><EFBFBD><EFBFBD>[<5B><14><>=<3D><0F>P<EFBFBD>x-><3E><><EFBFBD><10>S<EFBFBD>pL<70><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><11><><EFBFBD>.<2E>N<EFBFBD><4E>}:<3A>6<EFBFBD><36>W<EFBFBD><57><EFBFBD>^;D<>*<2A>`\$<EFBFBD><11><13><>b/D>Й: \n<03>F¨<46>J<19><>,5<>\n<EFBFBD><EFBFBD><EFBFBD><07>|<7C>A<EFBFBD><41><EFBFBD>2<EFBFBD>y<><79><EFBFBD><EFBFBD>N-P&<26>qa\0χc<EFBFBD>Th<EFBFBD><EFBFBD>?.:<3A><><EFBFBD><EFBFBD><04><08>/<2F>X<EFBFBD>˕f<CB95>GJ<47>{<EFBFBD>T<0C><>He<65><7F>ڏ<EFBFBD><1C>@SϨMNΐC<14><><EFBFBD>*),Pb<50><1D>z<12><>9+<2B><><EFBFBD>OCJ<43>=A]<5D><><EFBFBD>\$<0C>*A<>(W<><57><EFBFBD><EFBFBD><EFBFBD> <20>[<5B><><18><>6\0P[xi`<60><>l<16><>T<EFBFBD><0F>O<EFBFBD>}<02>\$,<2C>C<EFBFBD>Q#<23>H<EFBFBD>hr<68>u<EFBFBD>4<EFBFBD>)ԀP\0<EFBFBD><10>\n<EFBFBD>'<27><><EFBFBD>j_<6A>|_PH<50><48>E:<3A>8Q<38><51>m<EFBFBD>(<28><>NYy|<7C><><EFBFBD>4ڧ<34>.0<EFBFBD><EFBFBD>S8<EFBFBD><EFBFBD>%us<75>#N<><4E><EFBFBD><EFBFBD>=ur<75><72><05><>6<EFBFBD><36>Or<4F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f8<66>ݘ<EFBFBD>S<EFBFBD>[<5B>8]<5D><><EFBFBD>V)PT<50>Y QN<51>F<><46>T<EFBFBD>C<EFBFBD>.Ԧ@*<2A><1A>:<14><><EFBFBD><EFBFBD>e@<40>~|e<1A><>c*<2A>-^<06><>Q<EFBFBD>!<21>-`K<>-<17>\"]L<>j<EFBFBD><6A>P<EFBFBD>#(<28><>S}<08><><EFBFBD>[<1F><><EFBFBD>*<2A> D<>H<><48><1A>u<EFBFBD><75><EFBFBD>i<EFBFBD>-D\$`Yy<59>R<EFBFBD>,bW<62>\0UWr<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD>\nEt<EFBFBD><EFBFBD><06>F<EFBFBD><46>p<EFBFBD>IڨI<><49><EFBFBD>惘<EFBFBD>z<EFBFBD><7A> <20><><EFBFBD>R<EFBFBD>r<EFBFBD>Zp<5A>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\rUL<EFBFBD>(<28>Nr<4E>)ZdS<64>g,-<2D><><EFBFBD>UQ<55>-U%<25><><EFBFBD><EFBFBD>.Қ<>A7<41>c<EFBFBD><63><EFBFBD>Ld<17><>g%<14><>p<EFBFBD><70><EFBFBD>?u IUP`UY}E%<25>O<EFBFBD><07><>1<>@<40>><3E><06><><EFBFBD><1A><><EFBFBD>^1^<5E>B}<7D><><EFBFBD><EFBFBD>s<EFBFBD>j<EFBFBD>ϲ<EFBFBD><CFB2>Q<EFBFBD><51><EFBFBD>:<3A>?<3F>2@+4g؈쎠C<><43>K<EFBFBD><4B><EFBFBD><EFBFBD>,<01><><EFBFBD>F@<0C>D<EFBFBD><44><0B>\nѺ<EFBFBD>8X!ј!Ӄ<06><>A<EFBFBD><41>#<16>2%x<0E><>\"<EFBFBD><EFBFBD>X)ra`\\<EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><EFBFBD><EFBFBD>\n.rvX<76>x<><78><EFBFBD><EFBFBD>P<>X<18>3<EFBFBD><33>\0ɀ.&<26>|<0C><19>3<EFBFBD>s<EFBFBD><73>@-<<3C>]S\$<EFBFBD><EFBFBD><EFBFBD>/<2F>*<1E>-<><C287>8g<38><67>J<EFBFBD>\0<EFBFBD><EFBFBD>\0<EFBFBD>\0<EFBFBD><14> +`\r<EFBFBD>\n<EFBFBD><EFBFBD>p<EFBFBD>\0<EFBFBD> <05><18>%<25>\"<EFBFBD>J\"<EFBFBD>[<5B>y!ľ(ϫ<><1B><><EFBFBD><DC8F><EFBFBD>~(<28><>\0ְH<><48><EFBFBD><02>\0006<EFBFBD>ڰd<DAB0><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1D><>\0qXN<EFBFBD><EFBFBD>aY^<5E><>+<02>IXq<0E>c<EFBFBD>;<3B>]<5D>!<21><04≯Mj<4D><6A><EFBFBD>k<13><1F>J<1C><>hJ<><4A>~<7E><11><08>UX*<2A><>b<EFBFBD><62>Ս<EFBFBD>V\"<EFBFBD>%X<><58><EFBFBD>b<EFBFBD><62><EFBFBD><EFBFBD>+<1C>#\0sXΰ<01><><EFBFBD><EFBFBD><EFBFBD>+<0E>>H<>Y\"<EFBFBD>ub<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>VJ=<3D>Y2<59>d<EFBFBD><64>ĕ<EFBFBD>+VZ<56><5A><EFBFBD><7F><EFBFBD>d<EFBFBD><0B>=<3D>!VS<56><53>X<EFBFBD>g<EFBFBD>e<EFBFBD><65><EFBFBD>{VW<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><1C><><EFBFBD><15>d<EFBFBD><64>s<EFBFBD><73>X<EFBFBD><58>}d<19><>\r<EFBFBD>;%<25><>Y<EFBFBD><59><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>+L<>\0aY<EFBFBD>PfZ<66><15>%Vj<56><6A>X<EFBFBD>k\rh<EFBFBD><EFBFBD>U<EFBFBD>*<2A>J<02>mZ<02><14>*<2A><15><> <20><02><>ZR<5A><04>*<2A><><EFBFBD>+<1C><02>Zb<5A>d<EFBFBD><64><EFBFBD>u<EFBFBD>+V<><56>Y<><59>L<EFBFBD>j<EFBFBD>ՙ<EFBFBD>I<1E><>Z<EFBFBD><5A><EFBFBD>kj<6B>u<EFBFBD>+[Vn<56>IY<49><59><EFBFBD>c*<2A><01><>[V<><56>X<7F><58><EFBFBD>i<EFBFBD><69><15>kָ<><D6B8>Zڵl<><6C>5<EFBFBD><35>a<EFBFBD>_<EFBFBD><5F>Z<1E><><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>gֲ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>m*۲<>+oɠ<6F><C9A0>%<><DEB3>j<EFBFBD><6A><EFBFBD><EFBFBD>V<><56>wY<06>Unە<>+uV<56>XH%n<><6E>U<EFBFBD>+Vs<56><73>[ʵ<>c\n<EFBFBD>5<EFBFBD><EFBFBD>vW<02><>[<5B>iup<75>5<EFBFBD>«h<C2AB><68>w[<5B><>=pZ<70>R<EFBFBD><52>lV<6C><56>%ڶ<>p<1A>u<EFBFBD><75>j<EFBFBD>3<EFBFBD>Y<>Y<EFBFBD>pJ<70>u<EFBFBD><75>N<EFBFBD><08><>\\vK<EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><17><><EFBFBD>\r<EFBFBD>5[<5B>Kp<>;<3B>̫<EFBFBD><CCAB> <20><>[<5B><>̫<EFBFBD><CCAB><EFBFBD><EFBFBD>ebW2<57><32>\\<EFBFBD><EFBFBD>d<EFBFBD>:<3A>Uë<55><C3AB>\$<EFBFBD>e\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>z浐e<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD>-<>c<EFBFBD>n<EFBFBD>ȫ<EFBFBD>Kw<4B>]V<>MmYn<59>ʫ<EFBFBD>V\0<EFBFBD><EFBFBD>]\"<EFBFBD>emJ<EFBFBD>e<EFBFBD><EFBFBD>U<EFBFBD>]w]<5D><>]u*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73>]R<>}vz<76><7A>֤<EFBFBD>WC<57><43>~<7E>%u<><75><15>+<2B>Wj<57>c]ҹ<>x\n<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><EFBFBD><EFBFBD>^<16>ub<75><62><EFBFBD><EFBFBD>k<EFBFBD>%<25>[V<>-uz<75><7A><EFBFBD>k<EFBFBD>Vp<56>]<5D>P<EFBFBD><50><EFBFBD>ߵ<EFBFBD><DFB5>jU<6A><55>8<EFBFBD>N<EFBFBD><4E>fj<66><6A><EFBFBD>k<EFBFBD>ך<EFBFBD>X&<26>y<><04><><EFBFBD><EFBFBD>W<EFBFBD><57>\"<EFBFBD><0E>vZ<76><15><>'ץQ<D7A5>]<5D><>y<>bU<62>+<2B><>p<EFBFBD>u^J<><4A>wj<77>U<EFBFBD><55><EFBFBD>W<EFBFBD><57>c^<5E><><EFBFBD>{z<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>\0002<EFBFBD>3^vH<76>{<EFBFBD><EFBFBD>R<EFBFBD>k<EFBFBD>Wʯ}_6<5F>|<7C><>U<EFBFBD>k<EFBFBD>Wͯ<57>_N<5F><4E>0\r2H<EFBFBD>B<EFBFBD>ԯg_*<2A>\r~9)R]<5D>'<27><>-W\$~<7E><>{<EFBFBD><EFBFBD>\"+<2B><><EFBFBD>g;_Դl<D4B4><6C><EFBFBD><15>evW<76>/<2F>\$<EFBFBD><EFBFBD><EFBFBD><1B>vv\0@9ɺ<39> .F<>90<39>\0<EFBFBD><EFBFBD><EFBFBD><05>ϯA)Z<>]<><01><><EFBFBD><EFBFBD>I<EFBFBD><49>_n<5F><6E>}<7D><02><><EFBFBD><EFBFBD><EFBFBD><07>\$<EFBFBD><EFBFBD><EFBFBD>k:<3A><><EFBFBD>l<0F><14>o&Z<><5A><EFBFBD><EFBFBD><04><06><13><1C><>'<27><><<3C><>6<03><>I<19>c`J<><4A><EFBFBD>j<EFBFBD><6A><,<18>*<2A>w`<60><>݂<EFBFBD><DD82>2^,<03>ְ<EFBFBD>`ҽ<><D2BD>K<08>,\$<EFBFBD>:<3A><>&F<>-<2D><> <09>,'<27>B<EFBFBD><42>%<02><<3C>K6+<2B><><EFBFBD><EFBFBD><EFBFBD>a2<61><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>,<2C>R<EFBFBD><52>aR<61><1D>k\0E<EFBFBD><EFBFBD><03>o<EFBFBD><6F>ar<61>̑;\r<EFBFBD>,8<>b<EFBFBD>'z<>m<EFBFBD>k<0E>,;<3B>j<EFBFBD>'<1A> X+5<><35>թS<D5A9><53>bá<C3A1>\$<EFBFBD><1D>pW<70><57><EFBFBD><EFBFBD>*O<><4F>;<0F>#l?\$<EFBFBD><EFBFBD>bą{*<2A>ţR6Xp<58>\$<EFBFBD><EFBFBD>\r{<EFBFBD><EFBFBD>Ū<EFBFBD>6X<EFBFBD>H<EFBFBD>_f<EFBFBD>͇<EFBFBD>5lPؕ<50><D895>b=G<><47>:<3A>5<EFBFBD><35>RWα_F<5F><1D><><EFBFBD><EFBFBD>.lEJH<4A>ob<6F>Ō<EFBFBD><C58C><16>\$<EFBFBD><EFBFBD>ؕ<EFBFBD>!bJ<4A><13>n<EFBFBD><6E>X\"<EFBFBD>\r#<23><>E<EFBFBD>i:<3A>2,bIB<49><42>b]F<><46>Kv&<26>EJ><3E>`B<><42><EFBFBD><EFBFBD><1B>7<EFBFBD>SX<16><>#<23>P<EFBFBD><50><EFBFBD><18>@,o<>ر\r`<60><><<3C><>r8\$t<EFBFBD>Ic<EFBFBD>F<EFBFBD><EFBFBD>k)%<1C><><EFBFBD><EFBFBD>\0<EFBFBD><0F> <20><><EFBFBD>,lnX̑<58>%<25><>sP<0C>@<40><><EFBFBD>ٲ<16>M<EFBFBD>+<19>-,NI<4E><49><EFBFBD>c<EFBFBD>ą<EFBFBD>+2<>,@<40>6<EFBFBD>7b&<26>d<EFBFBD>[#<23>><3E>NIV<49>;cGu<47><75>#,l#X<><58>Kb<06>U<EFBFBD><55>\$F<>SXP<58>]b<>I<EFBFBD><49><12>,x<>^<5E>{d<EFBFBD>F<EFBFBD><EFBFBD>k<0C>Ol<4F>H<EFBFBD><48>a<>nj<EFBFBD>k(<28>3<EFBFBD>HIA<49><41>b<EFBFBD><62>Ŕ<EFBFBD>'^<5E><><EFBFBD>+-WX<57><58>!<21><>)<29>=L<><4C>33<33>b0<62><30><EFBFBD>B<EFBFBD><42>w<EFBFBD>U߱&g~<7E><><EFBFBD><EFBFBD>*ţk<C5A3>X۱1er<65><72><EFBFBD>*<2A>(,s<>β<EFBFBD>[<5B>˭r[/6YlVYy<59><79>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>[<5B>jI<14><>\$R<EFBFBD>ݕ{v\\<EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD>&<1A>͌+1<>Y<EFBFBD><59>Y<EFBFBD><59>_<19><17><>:<3A>ѠG!]<5D>H<1A><><EFBFBD>\0<EFBFBD>g<EFBFBD>%> <20>>.<2E> jB<6A>w<EFBFBD>R<><52><0C>ʆ ` K<>ֺRXh&L><3E>ͩ<EFBFBD>`U<>/<2F>!bUP<55><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>Q<EFBFBD>~Eg<18>u8jD+b@%Ӌ<>\rNR<EFBFBD><EFBFBD>!u<><14>(ET<45>{<EFBFBD>D֑<EFBFBD>g<><67><EFBFBD><EFBFBD><EFBFBD>+<2B><>ΰ<CEB0><C291><07>Vxh <20>=Zp<5A><70><EFBFBD><EFBFBD><0B>J<EFBFBD>*<2A><>Y<EFBFBD><59>If<49><66><EFBFBD><EFBFBD>K<EFBFBD><EFBFBD>ާ`\\<EFBFBD>&<26>\n\n<EFBFBD>T\rWsϹ~#I a<><15><>k<EFBFBD><6B><01>s<EFBFBD><73>fzo= *\0<EFBFBD><EFBFBD>-.<2E>^<5E><><EFBFBD><EFBFBD>-2B+k<>+-<2D>%i@f<><1E>LA<4C><41><11>%?<3F><><EFBFBD><EFBFBD><EFBFBD>5<14>(IY<49><59>f<><66>U<EFBFBD>\nBKol٭e<EFBFBD><EFBFBD>8<EFBFBD><\0<EFBFBD>7<EFBFBD>n Y<><59>]iFn<46>U<EFBFBD>64<36>n<EFBFBD><6E><EFBFBD><03><>BJ<42>=<3D>9+1<>IY̳<59>C*<2A>2<EFBFBD>B><3E>}<7D>\0P<EFBFBD>!i<15>b<EFBFBD><62>Tm'<27><>\\<EFBFBD>=<3D><><1A>:<12>Y<EFBFBD>HO}^<5E> <1A><><EFBFBD><EFBFBD>T<><54>1<EFBFBD><31><EFBFBD><EFBFBD>B<EFBFBD><42>u<EFBFBD>:<15>c<EFBFBD>6Q<36><51>t<EFBFBD><74><EFBFBD>{<EFBFBD>5<EFBFBD><EFBFBD>/<2F><><EFBFBD>ʳci<63><69>z<EFBFBD>\"><3E><>(<1A><13>avt<76><74>j-L<><13>#Z<>H<EFBFBD><48> <20>E<EFBFBD>T<<3C><12>͡<EFBFBD>Ol<4F>UZ <20>e臫<65><E887AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><17><>a<>O<><4F><0E>2<EFBFBD>=<3D><>S<EFBFBD>Rh<1D><><EFBFBD>;j<>cu<63>u<EFBFBD>l<D68B>ڣ<EFBFBD>-?<3F><EFBFBD>{GVpl݀+<2B>{D<EFBFBD>ͽ<EFBFBD><EFBFBD>F<EFBFBD>o--<2D><><EFBFBD>j<EFBFBD><6A><EFBFBD>}<7D><>Ӧ<1E>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mj)<29><>h<<3C>G<EFBFBD><47>E<EFBFBD><45>D<EFBFBD><11><><EFBFBD><EFBFBD><EFBFBD>:}qgr<67><72><EFBFBD>[@<40>e<EFBFBD>5<EFBFBD><35>Z<EFBFBD>E<EFBFBD><45>e<0B>26<32>-`,z|KFFӪ<46><D3AA>BV<42><56><EFBFBD><EFBFBD>z<EFBFBD><7A>F^<5E><><19><><EFBFBD><EFBFBD><EFBFBD>F<>_\r<1D><><EFBFBD><EFBFBD>P <0B><>Z<12><><EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>k<>-1N<31><4E><EFBFBD>I<EFBFBD>5<EFBFBD><35>V.+<2B>[Z\0e<EFBFBD><EFBFBD><1A>3Z<33>56'<27><>뵱><15>ŭJ<C5AD>S<EFBFBD>״N<D7B4>{<EFBFBD><EFBFBD>a<EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>Ou<EFBFBD><EFBFBD>.b{<EFBFBD>>\"<EFBFBD><EFBFBD><EFBFBD>Z8<EFBFBD><EFBFBD>io<EFBFBD><EFBFBD>o<EFBFBD>x<><78><!6M헊CX0<58><30>@\\<EFBFBD><EFBFBD>Ȣ<EFBFBD>ؿ<EFBFBD><07><><EFBFBD><EFBFBD>: T<0E>П<EFBFBD>G<EFBFBD>h<EFBFBD><68><14><>|<7C>a<EFBFBD><11><04>7C<37>э<EFBFBD>@4<>ym߱=g*<2A>\\<EFBFBD><EFBFBD>-@<40><13><08><>H6<48>M<EFBFBD>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><19>*(<28>Һڙ<D2BA>l<><6C><EFBFBD><EFBFBD>2<EFBFBD>~<7E>9<EFBFBD><39><EFBFBD>d<>h6<68><36>[sg<73>m٣1<D9A3><16><><EFBFBD><EFBFBD>J<EFBFBD>}<7D><><EFBFBD>O\r<EFBFBD><EFBFBD><EFBFBD>(<13><>2<EFBFBD>h<EFBFBD>m<EFBFBD>6_09<19><08><>Rq<52><71><EFBFBD>#<23>:Ѯ<>-<2D>`D<>\"T<><54>Yb/<2F>G<0F><><EFBFBD><EFBFBD>8}<7D><>휹(oZ<6F><5A>zG<7A>}<7D>tP<74><50><EFBFBD>Gz<47><7A>b0<05>@<18>.<2E><>h<68>ųF{qM<EFBFBD>m<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD><18><><EFBFBD><EFBFBD><I.<2E>`Z=<3D>\"<19><>7<EFBFBD>xV<78>\0<EFBFBD><EFBFBD><EFBFBD>(<28>Aڪ\" JV<4A><56><EFBFBD>ϱ<EFBFBD><01><03>'<27>ö<EFBFBD>[|[bm<62>L<EFBFBD>-<2D><><EFBFBD><EFBFBD>ؙ<EFBFBD><D899><EFBFBD>H4<15><>D <20>K<EFBFBD><4B>E<><45><EFBFBD><EFBFBD><15>,<2C>K<16><0C>O<EFBFBD><10><10>Wl\0'<07><>%%J<06><><EFBFBD>|c><0B><16><>\0007<EFBFBD>Mp<1A><>T<EFBFBD>+<2B><>Z<EFBFBD><1F>S<EFBFBD>*RdHP<>m<EFBFBD><6D><EFBFBD><0F><><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>i͊<EFBFBD><EFBFBD>۬fݔ<66>vmO<6D><4F><EFBFBD>\0<18><>,\0c<EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B>YC.<2E>i<EFBFBD><69>u<EFBFBD> Np<4E>J<>2<EFBFBD>j<0F>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8wp<77><70>+u<0B>*o<>Q<EFBFBD><51><EFBFBD><EFBFBD>H<>+<2B><>5<EFBFBD><0B>Gu<47>q.>忰y@p[<5B>*Xf <20>@<0B><12><>P<EFBFBD><50>e<EFBFBD>i<EFBFBD><69><01><03>jh<04><02><>/n<><6E>^t0<>Cq'<27><>Z<><5A>q<EFBFBD><71>c<EFBFBD>Ku\0aC<EFBFBD>@6m.<2E>〞<EFBFBD>mN<6D><4E><EFBFBD><EFBFBD>nyq<79>>byFK.@<40><><EFBFBD><7F><EFBFBD>ډ<1C>7<EFBFBD><1B>x*<2A>r4D<0E><>(P<>#.)<29>Z<><5A><EFBFBD><EFBFBD><EFBFBD><0B>ʻm<CABB>*rkr.<2E><><EFBFBD><EFBFBD>4W <20><><01>2=ndgKz<06>W%<05><>-lPf<> <09><>8<EFBFBD>\n<EFBFBD>U<>2<01> S3<53><33><EFBFBD>.\0<EFBFBD>\\<EFBFBD><EFBFBD>o<02><><EFBFBD>@\r<EFBFBD>/<2F>C<EFBFBD>/sJ*<2A><><EFBFBD>'<27><>k<EFBFBD>d<EFBFBD><64><04>F!<21>D<0B><0B><><1E><>~<7E><>-A<><04><><EFBFBD><EFBFBD>`\\%<02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GN<47><4E><EFBFBD><0E>ؠˍ<0E>K<C293><4B><08>l]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.xς<78>3>\n<EFBFBD><EFBFBD>ءM\n<EFBFBD> <>RR<52><52><EFBFBD><EFBFBD>&p<><70>P<EFBFBD><50>r@<40><>8s. <20><>'ܶvn<76>\0 \\\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD> \\?j<>R<><52><10><>c<><EE898D>*<2A><>+͵Wf<57><66>n<EFBFBD><6E>\0l 2<><15><>Y)5 @\n4t<>'<27>Ҁh<D280>.<2E>S<>d<EFBFBD>=5T<35>f<><66>6I<01><><13>w<EFBFBD>N<EFBFBD>B<EFBFBD>]<14><>u<06><><EFBFBD><EFBFBD>7<>ƃŹ<C683>6(<0B>8t<38>N<EFBFBD><4E><EFBFBD> <09><18>q<EFBFBD>lU<6C>3\0<EFBFBD>.<2E><>)^<5E><><EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD>`<60>ĺ<><18>\nݶ%OpZn<5A>]SSj<>:<3A><>(<28><EFBFBD>ۓ<EFBFBD><DB93>s<EFBFBD>\"մ;<3B> <1B><><EFBFBD>2hVA<><41>DvK<76><4B><1F><>o<EFBFBD><6F>U<EFBFBD>{/<2F><>\r<11>\$Ϟ<EFBFBD>n<EFBFBD><EFBFBD>tF[<5B><><16>9<EFBFBD>}<7D>#v@\"<EFBFBD>f&<26>o<EFBFBD>n<EFBFBD>E<EFBFBD>vu);S<><53>7;<0F>݆qV<71>.<2E><><EFBFBD><1B>);<0B><>vF<76>\r<EFBFBD>ˌ<EFBFBD><0B>5E`<03><15><08>V\08<EFBFBD>B<EFBFBD>={)<29>><3E><>?<3F>l<EFBFBD><6C><EFBFBD>a<02><><EFBFBD><16><><EFBFBD><17>WrH5<48><06>o:<3A>M<EFBFBD><4D>p9@<40><><EFBFBD><EFBFBD><EFBFBD>ٺ<>W<>k܈Z<><5A>`<60><><EFBFBD>PjP<6A><50><EFBFBD>(\$n<06><><EFBFBD><02>U-<2D>Cթ<43><D5A9>m<EFBFBD><6D>r;뽷z<EBBDB7><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>D<>ۿ<16><><EFBFBD>\0lC<EFBFBD>w<EFBFBD><EFBFBD>1;<3B><>N<EFBFBD><4E><EFBFBD>2<EFBFBD><32><05><>J3뿧֮<EBBFA7><D6AE>7B<37><16>6+<2B>\$<EFBFBD><EFBFBD>GL<0E>J<EFBFBD>n<17>E\$\\<04>\$<EFBFBD>b<EFBFBD><EFBFBD>OExQpEZ<45><5A><EFBFBD>f<>+xd<08>\$þ<EFBFBD>M`<0B> <20>)<03><><EFBFBD>ϛ*@<05><1A>g<1B>k<1E>;O<><4F>/YS<59><53>Qr<51><10><02><17>e<>@<40><11>*c<>!<21><>{Ȁ~<7E>M\0SC<EFBFBD>y%<02><><EFBFBD>7<EFBFBD><37><0E>><3E><>y<0C>1<1B>\n<EFBFBD>*<2A>%<25>=<3D><><EFBFBD>t<EFBFBD><74>\$P#7<><37>^R7f`5;cV<63><56><EFBFBD>B*<2A><>Jv<4A>.<2E>4<EFBFBD>ۍGU<47>r<EFBFBD><72><17>A4\0005<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʐ<EFBFBD>\"H<EFBFBD> <11>\n:<3A>w<EFBFBD><77><EFBFBD><EFBFBD>BloB<6F>2Dy<44>Nin<69>d<EFBFBD><10>(");}exit;}if($_GET["script"]=="version"){$o=get_temp_dir()."/adminer.version";@unlink($o);$q=file_open_lock($o);if($q)file_write_unlock($q,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),$Tc);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
|
||
get_lang(){return'en';}function
|
||
lang($_i,$of=null){if(is_array($_i)){$pg=($of==1?0:1);$_i=$_i[$pg];}$_i=str_replace("%d","%s",$_i);$of=format_number($of);return
|
||
sprintf($_i,$of);}abstract
|
||
class
|
||
SqlDb{static$be;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($Jb);abstract
|
||
function
|
||
query($H,$Ji=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($gc,$V,$F,array$Ff=array()){$Ff[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$Ff[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
|
||
\PDO($gc,$V,$F,$Ff);}catch(\Exception$Bc){return$Bc->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
|
||
quote($Q){return$this->pdo->quote($Q);}function
|
||
query($H,$Ji=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unknown error.';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(\PDO::FETCH_ASSOC);}function
|
||
fetch_row(){return$this->fetch(\PDO::FETCH_NUM);}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($D){for($s=0;$s<$D;$s++)$this->fetch();}}}function
|
||
add_driver($t,$C){SqlDriver::$ac[$t]=$C;}function
|
||
get_driver($t){return
|
||
SqlDriver::$ac[$t];}abstract
|
||
class
|
||
SqlDriver{static$be;static$ac=array();static$Jc=array();static$le;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$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
|
||
function
|
||
connect($N,$V,$F){$f=new
|
||
Db;return($f->attach($N,$V,$F)?:$f);}function
|
||
__construct(Db$f){$this->conn=$f;}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$m){}function
|
||
unconvertFunction(array$m){}function
|
||
select($R,array$M,array$Z,array$pd,array$Hf=array(),$z=1,$E=0,$wg=false){$ge=(count($pd)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$pd,$Hf,$z,$E);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$pd&&$ge&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($pd&&$ge?"\nGROUP BY ".implode(", ",$pd):"").($Hf?"\nORDER BY ".implode(", ",$Hf):""),$z,($E?$z*$E:0),"\n");$Lh=microtime(true);$J=$this->conn->query($H);if($wg)echo
|
||
adminer()->selectQuery($H,$Lh,!$J);return$J;}function
|
||
delete($R,$Eg,$z=0){$H="FROM ".table($R);return
|
||
queries("DELETE".($z?limit1($R,$H,$Eg):" $H$Eg"));}function
|
||
update($R,array$O,$Eg,$z=0,$ph="\n"){$cj=array();foreach($O
|
||
as$x=>$X)$cj[]="$x = $X";$H=table($R)." SET$ph".implode(",$ph",$cj);return
|
||
queries("UPDATE".($z?limit1($R,$H,$Eg,$ph):" $H$Eg"));}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,$ni){}function
|
||
convertSearch($u,array$X,array$m){return$u;}function
|
||
convertOperator($Bf){return$Bf;}function
|
||
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):(is_resource($X)?stream_get_contents($X):$X));}function
|
||
quoteBinary($dh){return
|
||
q($dh);}function
|
||
warnings(){}function
|
||
tableHelp($C,$je=false){}function
|
||
hasCStyleEscapes(){return
|
||
false;}function
|
||
engines(){return
|
||
array();}function
|
||
supportsIndex(array$S){return!is_view($S);}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();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($o,$V,$F){$this->link=new
|
||
\SQLite3($o);$fj=$this->link->version();$this->server_info=$fj["versionString"];return'';}function
|
||
query($H,$Ji=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($o,$V,$F){$this->dsn(DRIVER.":$o","","");$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}}}if(class_exists('Adminer\SqliteDb')){class
|
||
Db
|
||
extends
|
||
SqliteDb{function
|
||
attach($o,$V,$F){parent::attach($o,$V,$F);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
|
||
select_db($o){if(is_readable($o)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a"))return!self::attach($o,'','');return
|
||
false;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Jc=array("SQLite3","PDO_SQLite");static$le="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'Database does not support password.';return
|
||
parent::connect(":memory:","","");}function
|
||
__construct(Db$f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
structuredTypes(){return
|
||
array_keys($this->types[0]);}function
|
||
insertUpdate($R,array$L,array$G){$cj=array();foreach($L
|
||
as$O)$cj[]="(".implode(", ",$O).")";return
|
||
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$cj));}function
|
||
tableHelp($C,$je=false){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if($C=="sqlite_master")return"fileformat2.html#$C";}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),$He);return
|
||
array_combine($He[2],$He[2]);}function
|
||
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$m)$J[$R][]=$m;}return$J;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ad){return
|
||
array();}function
|
||
limit($H,$Z,$z,$D=0,$ph=" "){return" $H$Z".($z?$ph."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$ph="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$ph):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$ph."LIMIT 1)");}function
|
||
db_collation($j,$hb){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($i){return
|
||
array();}function
|
||
table_status($C=""){$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') ".($C!=""?"AND name = ".q($C):"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".($C!=""?" WHERE name = ".q($C):""),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){$C=$K["name"];$U=strtolower($K["type"]);$k=$K["dflt_value"];$J[$C]=array("field"=>$C,"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("~^'(.*)'$~",$k,$B)?str_replace("''","'",$B[1]):($k=="NULL"?null:$k)),"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[$C]["auto_increment"]=true;$G=$C;}}$Fh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$u='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$u.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Fh,$He,PREG_SET_ORDER);foreach($He
|
||
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($J[$C])$J[$C]["collation"]=trim($B[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$Fh,$He,PREG_SET_ORDER);foreach($He
|
||
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));$J[$C]["default"]=$B[3];$J[$C]["generated"]=strtoupper($B[4]);}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$Fh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Fh,$B)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$He,PREG_SET_ORDER);foreach($He
|
||
as$B){$J[""]["columns"][]=idf_unescape($B[2]).$B[4];$J[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$J){foreach(fields($R)as$C=>$m){if($m["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$Jh=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$K){$C=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$g)as$ch){$v["columns"][]=$ch["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$Jh[$C],$Pg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Pg[2],$He);foreach($He[2]as$x=>$X){if($X)$v["descs"][$x]='1';}}if(!$J[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$J[""]["columns"]||$v["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$C))$J[$C]=$v;}return$J;}function
|
||
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$p=&$J[$K["id"]];if(!$p)$p=$K;$p["source"][]=$K["from"];$p["target"][]=$K["to"];}return$J;}function
|
||
view($C){return
|
||
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($C))));}function
|
||
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
|
||
information_schema($j){return
|
||
false;}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
check_sqlite_name($C){$Jc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Jc)\$~",$C)){connection()->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Jc));return
|
||
false;}return
|
||
true;}function
|
||
create_database($j,$c){if(file_exists($j)){connection()->error='File exists.';return
|
||
false;}if(!check_sqlite_name($j))return
|
||
false;try{$_=new
|
||
Db();$_->attach($j,'','');}catch(\Exception$Bc){connection()->error=$Bc->getMessage();return
|
||
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
|
||
true;}function
|
||
drop_databases($i){connection()->attach(":memory:",'','');foreach($i
|
||
as$j){if(!@unlink($j)){connection()->error='File exists.';return
|
||
false;}}return
|
||
true;}function
|
||
rename_database($C,$c){if(!check_sqlite_name($C))return
|
||
false;connection()->attach(":memory:",'','');connection()->error='File exists.';return@rename(DB,$C);}function
|
||
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
|
||
alter_table($R,$C,$n,$cd,$mb,$rc,$c,$_a,$eg){$Vi=($R==""||$cd);foreach($n
|
||
as$m){if($m[0]!=""||!$m[1]||$m[2]){$Vi=true;break;}}$b=array();$Sf=array();foreach($n
|
||
as$m){if($m[1]){$b[]=($Vi?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$Sf[$m[0]]=$m[1][0];}}if(!$Vi){foreach($b
|
||
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
|
||
false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return
|
||
false;}elseif(!recreate_table($R,$C,$b,$Sf,$cd,$_a))return
|
||
false;if($_a){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($C));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($C).", $_a)");queries("COMMIT");}return
|
||
true;}function
|
||
recreate_table($R,$C,array$n,array$Sf,array$cd,$_a="",$w=array(),$cc="",$ja=""){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$Sf[$x]=idf_escape($x);}}$vg=false;foreach($n
|
||
as$m){if($m[6])$vg=true;}$ec=array();foreach($w
|
||
as$x=>$X){if($X[2]=="DROP"){$ec[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$ne=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$Sf[$d])continue
|
||
2;$e[]=$Sf[$d].($v["descs"][$x]?" DESC":"");}if(!$ec[$ne]){if($v["type"]!="PRIMARY"||!$vg)$w[]=array($v["type"],$ne,$e);}}foreach($w
|
||
as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$cd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$ne=>$p){foreach($p["source"]as$x=>$d){if(!$Sf[$d])continue
|
||
2;$p["source"][$x]=idf_unescape($Sf[$d]);}if(!isset($cd[" $ne"]))$cd[]=" ".format_foreign_key($p);}queries("BEGIN");}$Ta=array();foreach($n
|
||
as$m){if(preg_match('~GENERATED~',$m[3]))unset($Sf[array_search($m[0],$Sf)]);$Ta[]=" ".implode($m);}$Ta=array_merge($Ta,array_filter($cd));foreach(driver()->checkConstraints($R)as$Va){if($Va!=$cc)$Ta[]=" CHECK ($Va)";}if($ja)$Ta[]=" CHECK ($ja)";$hi=($R==$C?"adminer_$C":$C);if(!queries("CREATE TABLE ".table($hi)." (\n".implode(",\n",$Ta)."\n)"))return
|
||
false;if($R!=""){if($Sf&&!queries("INSERT INTO ".table($hi)." (".implode(", ",$Sf).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($Sf)))." FROM ".table($R)))return
|
||
false;$Fi=array();foreach(triggers($R)as$Di=>$oi){$Ci=trigger($Di,$R);$Fi[]="CREATE TRIGGER ".idf_escape($Di)." ".implode(" ",$oi)." ON ".table($C)."\n$Ci[Statement]";}$_a=$_a?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$C&&!queries("ALTER TABLE ".table($hi)." RENAME TO ".table($C)))||!alter_indexes($C,$w))return
|
||
false;if($_a)queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($C));foreach($Fi
|
||
as$Ci){if(!queries($Ci))return
|
||
false;}queries("COMMIT");}return
|
||
true;}function
|
||
index_sql($R,$U,$C,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C: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($hj){return
|
||
apply_queries("DROP VIEW",$hj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
move_tables($T,$hj,$fi){return
|
||
false;}function
|
||
trigger($C,$R){if($C=="")return
|
||
array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$Ei=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$Ei["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$qf=$B[3];return
|
||
array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($qf?" OF":""),"Of"=>idf_unescape($qf),"Trigger"=>$C,"Statement"=>$B[4],);}function
|
||
triggers($R){$J=array();$Ei=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("|",$Ei["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$B);$J[$K["name"]]=array($B[1],$B[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($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function
|
||
found_rows($S,$Z){}function
|
||
types(){return
|
||
array();}function
|
||
create_sql($R,$_a,$Ph){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$v){if($C=='')continue;$J
|
||
.=";\n\n".index_sql($R,$v['type'],$C,"(".implode(", ",array_map('Adminer\idf_escape',$v['columns'])).")");}return$J;}function
|
||
truncate_sql($R){return"DELETE FROM ".table($R);}function
|
||
use_sql($Jb){}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){$C=$K["name"];if($C!="pragma_list"&&$C!="compile_options"){$J[$C]=array($C,'');foreach(get_rows("PRAGMA $C")as$K)$J[$C][1].=implode(", ",$K)."\n";}}return$J;}function
|
||
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$Ef)$J[]=explode("=",$Ef,2);return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Oc){return
|
||
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Oc);}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
|
||
_error($xc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
|
||
attach($N,$V,$F){$j=adminer()->database();set_error_handler(array($this,'_error'));$this->string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$Kh=adminer()->connectSsl();if(isset($Kh["mode"]))$this->string
|
||
.=" sslmode='".$Kh["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$j!=""){$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$m){return($m["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
|
||
select_db($Jb){if($Jb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Jb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
|
||
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
|
||
query($H,$Ji=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));}}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);$J->type=pg_field_type($this->result,$d);$J->charsetnr=($J->type=="bytea"?63:0);return$J;}function
|
||
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
|
||
attach($N,$V,$F){$j=adminer()->database();$gc="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$Kh=adminer()->connectSsl();if(isset($Kh["mode"]))$gc
|
||
.=" sslmode='".$Kh["mode"]."'";return$this->dsn($gc,$V,$F);}function
|
||
select_db($Jb){return(adminer()->database()==$Jb);}function
|
||
query($H,$Ji=false){$J=parent::query($H,$Ji);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
|
||
warnings(){}function
|
||
close(){}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Jc=array("PgSQL","PDO_PgSQL");static$le="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f))return$f;$fj=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$fj)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$fj);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types['Strings']["json"]=4294967295;if(min_version(9.4,0,$f))$this->types['Strings']["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,$f))$this->generated=array("STORED");}function
|
||
enumLength(array$m){$tc=$this->types['User types'][$m["type"]];return($tc?type_values($tc):"");}function
|
||
setUserTypes($Ii){$this->types['User types']=array_flip($Ii);}function
|
||
insertReturning($R){$_a=array_filter(fields($R),function($m){return$m['auto_increment'];});return(count($_a)==1?" RETURNING ".idf_escape(key($_a)):"");}function
|
||
insertUpdate($R,array$L,array$G){foreach($L
|
||
as$O){$Ri=array();$Z=array();foreach($O
|
||
as$x=>$X){$Ri[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Ri)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
slowQuery($H,$ni){$this->conn->query("SET statement_timeout = ".(1000*$ni));$this->conn->timeout=1000*$ni;return$H;}function
|
||
convertSearch($u,array$X,array$m){$ki="char|text";if(strpos($X["op"],"LIKE")===false)$ki
|
||
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$ki~",$m["type"])?$u:"CAST($u AS text)");}function
|
||
quoteBinary($dh){return"'\\x".bin2hex($dh)."'";}function
|
||
warnings(){return$this->conn->warnings();}function
|
||
tableHelp($C,$je=false){$Ae=array("information_schema"=>"infoschema","pg_catalog"=>($je?"view":"catalog"),);$_=$Ae[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$C).".html";}function
|
||
supportsIndex(array$S){return$S["Engine"]!="view";}function
|
||
hasCStyleEscapes(){static$Pa;if($Pa===null)$Pa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Pa;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ad){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,$D=0,$ph=" "){return" $H$Z".($z?$ph."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$ph="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$ph):" $H".(is_view(table_status1($R))?$Z:$ph."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$ph."LIMIT 1)"));}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}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($i){$J=array();foreach($i
|
||
as$j){if(connection()->select_db($j))$J[$j]=count(tables_list());}return$J;}function
|
||
table_status($C=""){static$zd;if($zd===null)$zd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
|
||
c.relname AS \"Name\",
|
||
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\"".($zd?",
|
||
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 c.relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
|
||
c.reltuples as \"Rows\",
|
||
n.nspname
|
||
FROM pg_class c
|
||
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
|
||
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
|
||
".($C!=""?"AND relname = ".q($C):"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();$ra=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT
|
||
a.attname AS field,
|
||
format_type(a.atttypid, a.atttypmod) AS full_type,
|
||
pg_get_expr(d.adbin, d.adrelid) AS default,
|
||
a.attnotnull::int,
|
||
col_description(c.oid, a.attnum) AS comment".(min_version(10)?",
|
||
a.attidentity".(min_version(12)?",
|
||
a.attgenerated":""):"")."
|
||
FROM pg_class c
|
||
JOIN pg_namespace n ON c.relnamespace = n.oid
|
||
JOIN pg_attribute a ON c.oid = a.attrelid
|
||
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
|
||
WHERE c.relname = ".q($R)."
|
||
AND n.nspname = current_schema()
|
||
AND NOT a.attisdropped
|
||
AND a.attnum > 0
|
||
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$B);list(,$U,$y,$K["length"],$ka,$va)=$B;$K["length"].=$va;$Xa=$U.$ka;if(isset($ra[$Xa])){$K["type"]=$ra[$Xa];$K["full_type"]=$K["type"].$y.$va;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$y.$ka.$va;}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"],$B))$K["default"]=($B[1]=="NULL"?null:idf_unescape($B[1]).$B[2]);$J[$K["field"]]=$K;}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$Yh=get_val("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R),0,$g);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Yh AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial
|
||
FROM pg_index i, pg_class ci
|
||
WHERE i.indrelid = $Yh AND ci.oid = i.indexrelid
|
||
ORDER BY indisprimary DESC, indisunique DESC",$g)as$K){$Qg=$K["relname"];$J[$Qg]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$Qg]["columns"]=array();$J[$Qg]["descs"]=array();if($K["indkey"]){foreach(explode(" ",$K["indkey"])as$Td)$J[$Qg]["columns"][]=$e[$Td];foreach(explode(" ",$K["indoption"])as$Ud)$J[$Qg]["descs"][]=(intval($Ud)&1?'1':null);}$J[$Qg]["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 = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($R)." AND pn.nspname = current_schema())
|
||
AND contype = 'f'::char
|
||
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$B)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$B[2],$Fe)){$K['ns']=idf_unescape($Fe[2]);$K['table']=idf_unescape($Fe[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[3])));$K['on_delete']=(preg_match("~ON DELETE (driver()->onActions)~",$B[4],$Fe)?$Fe[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (driver()->onActions)~",$B[4],$Fe)?$Fe[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
|
||
view($C){return
|
||
array("select"=>trim(get_val("SELECT pg_get_viewdef(".get_val("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($C)).")")));}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="information_schema";}function
|
||
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$B))$J=$B[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($B[3]).'})(.*)~','\1<b>\2</b>',$B[2]).$B[4];return
|
||
nl_br($J);}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" ENCODING ".idf_escape($c):""));}function
|
||
drop_databases($i){connection()->close();return
|
||
apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function
|
||
rename_database($C,$c){connection()->close();return
|
||
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$C,$n,$cd,$mb,$rc,$c,$_a,$eg){$b=array();$Dg=array();if($R!=""&&$R!=$C)$Dg[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);$qh="";foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$bj=$X[5];unset($X[5]);if($m[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])$Dg[]="ALTER TABLE ".table($C)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$rh=$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($rh).")":"DROP DEFAULT"));if(isset($X[6]))$qh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($rh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$bj!="")$Dg[]="COMMENT ON COLUMN ".table($C).".$X[0] IS ".($bj!=""?substr($bj,9):"''");}}$b=array_merge($b,$cd);if($R=="")array_unshift($Dg,"CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)");elseif($b)array_unshift($Dg,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($qh)array_unshift($Dg,$qh);if($mb!==null)$Dg[]="COMMENT ON TABLE ".table($C)." IS ".q($mb);foreach($Dg
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
alter_indexes($R,$b){$h=array();$bc=array();$Dg=array();foreach($b
|
||
as$X){if($X[0]!="INDEX")$h[]=($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")$bc[]=idf_escape($X[1]);else$Dg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($h)array_unshift($Dg,"ALTER TABLE ".table($R).implode(",",$h));if($bc)array_unshift($Dg,"DROP INDEX ".implode(", ",$bc));foreach($Dg
|
||
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($hj){return
|
||
drop_tables($hj);}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,$hj,$fi){foreach(array_merge($T,$hj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($fi)))return
|
||
false;}return
|
||
true;}function
|
||
trigger($C,$R){if($C=="")return
|
||
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($C);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){$Ci=trigger($K["trigger_name"],$R);$J[$Ci["Trigger"]]=array($Ci["Timing"],$Ci["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($C,$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($C));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
|
||
FROM information_schema.parameters
|
||
WHERE specific_schema = current_schema() AND specific_name = '.q($C).'
|
||
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($C,$K){$J=array();foreach($K["fields"]as$m){$y=$m["length"];$J[]=$m["type"].($y?"($y)":"");}return
|
||
idf_escape($C)."(".implode(", ",$J).")";}function
|
||
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
|
||
explain($f,$H){return$f->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):"")),$Pg))return$Pg[1];}function
|
||
types(){return
|
||
get_key_vals("SELECT oid, typname
|
||
FROM pg_type
|
||
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
|
||
AND typtype IN ('b','d','e')
|
||
AND typelem = 0");}function
|
||
type_values($t){$wc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($wc?"'".implode("', '",array_map('addslashes',$wc))."'":"");}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($fh,$g=null){if(!$g)$g=connection();$J=$g->query("SET search_path TO ".idf_escape($fh));driver()->setUserTypes(types());return$J;}function
|
||
foreign_keys_sql($R){$J="";$P=table_status1($R);$Yc=foreign_keys($R);ksort($Yc);foreach($Yc
|
||
as$Xc=>$Wc)$J
|
||
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($Xc)." $Wc[definition] ".($Wc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
|
||
create_sql($R,$_a,$Ph){$Vg=array();$sh=array();$P=table_status1($R);if(is_view($P)){$gj=view($R);return
|
||
rtrim("CREATE VIEW ".idf_escape($R)." AS $gj[select]",";");}$n=fields($R);if(count($P)<2||empty($n))return
|
||
false;$J="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($n
|
||
as$m){$bg=idf_escape($m['field']).' '.$m['full_type'].default_value($m).($m['null']?"":" NOT NULL");$Vg[]=$bg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$He)){$rh=$He[1];$Eh=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($rh)):"SELECT * FROM $rh"),null,"-- "));$sh[]=($Ph=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $rh;\n":"")."CREATE SEQUENCE $rh INCREMENT $Eh[increment_by] MINVALUE $Eh[min_value] MAXVALUE $Eh[max_value]".($_a&&$Eh['last_value']?" START ".($Eh["last_value"]+1):"")." CACHE $Eh[cache_value];";}}if(!empty($sh))$J=implode("\n\n",$sh)."\n\n$J";$G="";foreach(indexes($R)as$Rd=>$v){if($v['type']=='PRIMARY'){$G=$Rd;$Vg[]="CONSTRAINT ".idf_escape($Rd)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$rb=>$tb)$Vg[]="CONSTRAINT ".idf_escape($rb)." CHECK $tb";$J
|
||
.=implode(",\n ",$Vg)."\n) WITH (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($n
|
||
as$Qc=>$m){if($m['comment'])$J
|
||
.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Qc)." IS ".q($m['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$Bi=>$Ai){$Ci=trigger($Bi,$P['Name']);$J
|
||
.="\nCREATE TRIGGER ".idf_escape($Ci['Trigger'])." $Ci[Timing] $Ci[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $Ci[Type] $Ci[Statement];;\n";}return$J;}function
|
||
use_sql($Jb){return"\connect ".idf_escape($Jb);}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($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Oc){return
|
||
preg_match('~^(check|database|table|columns|sql|indexes|descidx|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|'.(min_version(11)?'procedure|':'').'routine|sequence|trigger|type|variables|drop_col'.(connection()->flavor=='cockroach'?'':'|processlist').'|kill|dump)$~',$Oc);}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($xc,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}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'';}$l=oci_error();return$l["message"];}function
|
||
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Jb){$this->_current_db=$Jb;return
|
||
true;}function
|
||
query($H,$Ji=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$l=oci_error($this->link);$this->errno=$l["code"];$this->error=$l["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;}}class
|
||
Result{var$num_rows;private$result,$offset=1;function
|
||
__construct($I){$this->result=$I;}private
|
||
function
|
||
convert($K){foreach((array)$K
|
||
as$x=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$x]=$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($Jb){$this->_current_db=$Jb;return
|
||
true;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Jc=array("OCI8","PDO_OCI");static$le="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$f){parent::__construct($f);$this->types=array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
|
||
begin(){return
|
||
true;}function
|
||
insertUpdate($R,array$L,array$G){foreach($L
|
||
as$O){$Ri=array();$Z=array();foreach($O
|
||
as$x=>$X){$Ri[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Ri)." WHERE ".implode(" AND ",$Z))&&connection()->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($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ad){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,$D=0,$ph=" "){return($D?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$D).") WHERE rnum > $D":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$D):" $H$Z"));}function
|
||
limit1($R,$H,$Z,$ph="\n"){return" $H$Z";}function
|
||
db_collation($j,$hb){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(){$j=connection()->_current_db?:DB;unset(connection()->_current_db);return$j;}function
|
||
where_owner($tg,$Vf="owner"){if(!$_GET["ns"])return'';return"$tg$Vf = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
|
||
views_table($e){$Vf=where_owner('');return"(SELECT $e FROM all_views WHERE ".($Vf?:"rownum < 0").")";}function
|
||
tables_list(){$gj=views_table("view_name");$Vf=where_owner(" AND ");return
|
||
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$Vf
|
||
UNION SELECT view_name, 'view' FROM $gj
|
||
ORDER BY 1");}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j)$J[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$J;}function
|
||
table_status($C=""){$J=array();$ih=q($C);$j=get_current_db();$gj=views_table("view_name");$Vf=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($j).$Vf.($C!=""?" AND table_name = $ih":"")."
|
||
UNION SELECT view_name, 'view', 0, 0 FROM $gj".($C!=""?" WHERE view_name = $ih":"")."
|
||
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();$Vf=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$Vf ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$y="$K[DATA_PRECISION],$K[DATA_SCALE]";if($y==",")$y=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($y?"($y)":""),"type"=>strtolower($U),"length"=>$y,"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,$g=null){$J=array();$Vf=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)."$Vf
|
||
ORDER BY ac.constraint_type, aic.column_position",$g)as$K){$Rd=$K["INDEX_NAME"];$jb=$K["DATA_DEFAULT"];$jb=($jb?trim($jb,'"'):$K["COLUMN_NAME"]);$J[$Rd]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$Rd]["columns"][]=$jb;$J[$Rd]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$Rd]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
|
||
view($C){$gj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$gj.' WHERE view_name = '.q($C));return
|
||
reset($L);}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
explain($f,$H){$f->query("EXPLAIN PLAN FOR $H");return$f->query("SELECT * FROM plan_table");}function
|
||
found_rows($S,$Z){}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$C,$n,$cd,$mb,$rc,$c,$_a,$eg){$b=$bc=array();$Of=($R?fields($R):array());foreach($n
|
||
as$m){$X=$m[1];if($X&&$m[0]!=""&&idf_escape($m[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($m[0])." TO $X[0]");$Nf=$Of[$m[0]];if($X&&$Nf){$sf=process_field($Nf,$Nf);if($X[2]==$sf[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$bc[]=idf_escape($m[0]);}if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$bc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$bc).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function
|
||
alter_indexes($R,$b){$bc=array();$Dg=array();foreach($b
|
||
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$h=($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($Dg,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$bc[]=idf_escape($X[1]);else$Dg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($bc)array_unshift($Dg,"DROP INDEX ".implode(", ",$bc));foreach($Dg
|
||
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($hj){return
|
||
apply_queries("DROP VIEW",$hj);}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($hh,$g=null){if(!$g)$g=connection();return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($hh));}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$x=>$X)$J[]=array($x,$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($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Oc){return
|
||
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Oc);}}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$l){$this->errno=$l["code"];$this->error
|
||
.="$l[message]\n";}$this->error=rtrim($this->error);}function
|
||
attach($N,$V,$F){$sb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$Kh=adminer()->connectSsl();if(isset($Kh["Encrypt"]))$sb["Encrypt"]=$Kh["Encrypt"];if(isset($Kh["TrustServerCertificate"]))$sb["TrustServerCertificate"]=$Kh["TrustServerCertificate"];$j=adminer()->database();if($j!="")$sb["Database"]=$j;$this->link=@sqlsrv_connect(preg_replace('~:~',',',$N),$sb);if($this->link){$Vd=sqlsrv_server_info($this->link);$this->server_info=$Vd['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
|
||
quote($Q){$Ki=strlen($Q)!=strlen(utf8_decode($Q));return($Ki?"N":"")."'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Jb){return$this->query(use_sql($Jb));}function
|
||
query($H,$Ji=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$x=>$X){if(is_a($X,'DateTime'))$K[$x]=$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);$m=$this->fields[$this->offset++];$J=new
|
||
\stdClass;$J->name=$m["Name"];$J->type=($m["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
|
||
seek($D){for($s=0;$s<$D;$s++)sqlsrv_fetch($this->result);}function
|
||
__destruct(){sqlsrv_free_stmt($this->result);}}function
|
||
last_id($I){return
|
||
get_val("SELECT SCOPE_IDENTITY()");}function
|
||
explain($f,$H){$f->query("SET SHOWPLAN_ALL ON");$J=$f->query($H);$f->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
|
||
class
|
||
MssqlDb
|
||
extends
|
||
PdoDb{function
|
||
select_db($Jb){return$this->query(use_sql($Jb));}function
|
||
lastInsertId(){return$this->pdo->lastInsertId();}}function
|
||
last_id($I){return
|
||
connection()->lastInsertId();}function
|
||
explain($f,$H){}if(extension_loaded("pdo_sqlsrv")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_SQLSRV";function
|
||
attach($N,$V,$F){return$this->dsn("sqlsrv:Server=".str_replace(":",",",$N),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_DBLIB";function
|
||
attach($N,$V,$F){return$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);}}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Jc=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$le="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$f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
|
||
insertUpdate($R,array$L,array$G){$n=fields($R);$Ri=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Oa=0;$Zd=array();foreach($O
|
||
as$x=>$X){$Oa++;$C=idf_unescape($x);if(!$n[$C]["auto_increment"])$Zd[$x]="c$Oa";if(isset($G[$C]))$Z[]="$x = c$Oa";else$Ri[]="$x = c$Oa";}$cj=array();foreach($L
|
||
as$O)$cj[]="(".implode(", ",$O).")";if($Z){$Kd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$cj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($Ri?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$Ri):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Kd?$O:$Zd)).") VALUES (".($Kd?$e:implode(", ",$Zd)).");");if($Kd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$cj));return$J;}function
|
||
begin(){return
|
||
queries("BEGIN TRANSACTION");}function
|
||
tableHelp($C,$je=false){$Ae=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Ae[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($C))."-transact-sql";}}function
|
||
idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
|
||
table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
|
||
get_databases($ad){return
|
||
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
|
||
limit($H,$Z,$z,$D=0,$ph=" "){return($z?" TOP (".($z+$D).")":"")." $H$Z";}function
|
||
limit1($R,$H,$Z,$ph="\n"){return
|
||
limit($H,$Z,1,0,$ph);}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}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($i){$J=array();foreach($i
|
||
as$j){connection()->select_db($j);$J[$j]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
|
||
table_status($C=""){$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') ".($C!=""?"AND name = ".q($C):"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){$ob=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();$Wh=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($Wh))as$K){$U=$K["type"];$y=(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.($y?"($y)":""),"type"=>$U,"length"=>$y,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$B)?str_replace("''","'",$B[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"=>$ob[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($Wh))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
|
||
indexes($R,$g=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),$g)as$K){$C=$K["name"];$J[$C]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$C]["lengths"]=array();$J[$C]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$C]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
|
||
view($C){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($C))));}function
|
||
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
|
||
drop_databases($i){return
|
||
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function
|
||
rename_database($C,$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($C));return
|
||
true;}function
|
||
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
|
||
alter_table($R,$C,$n,$cd,$mb,$rc,$c,$_a,$eg){$b=array();$ob=array();$Of=fields($R);foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$ob[$m[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($m[0]=="")$b["ADD"][]="\n ".implode("",$X).($R==""?substr($cd[$X[0]],16+strlen($X[0])):"");else{$k=$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)][]="";$Nf=$Of[$m[0]];if(default_value($Nf)!=$k){if($Nf["default"]!==null)$b["DROP"][]=" ".idf_escape($Nf["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($cd)$b[""]=$cd;foreach($b
|
||
as$x=>$X){if(!queries("ALTER TABLE ".table($C)." $x".implode(",",$X)))return
|
||
false;}foreach($ob
|
||
as$x=>$X){$mb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = $mb,
|
||
@level0type = N'Schema',
|
||
@level0name = ".q(get_schema()).",
|
||
@level1type = N'Table',
|
||
@level1name = ".q($C).",
|
||
@level2type = N'Column',
|
||
@level2name = ".q($x));}return
|
||
true;}function
|
||
alter_indexes($R,$b){$v=array();$bc=array();foreach($b
|
||
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$bc[]=idf_escape($X[1]);else$v[]=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(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$bc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$bc)));}function
|
||
found_rows($S,$Z){}function
|
||
foreign_keys($R){$J=array();$zf=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){$p=&$J[$K["FK_NAME"]];$p["db"]=$K["PKTABLE_QUALIFIER"];$p["ns"]=$K["PKTABLE_OWNER"];$p["table"]=$K["PKTABLE_NAME"];$p["on_update"]=$zf[$K["UPDATE_RULE"]];$p["on_delete"]=$zf[$K["DELETE_RULE"]];$p["source"][]=$K["FKCOLUMN_NAME"];$p["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
|
||
truncate_tables($T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views($hj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$hj)));}function
|
||
drop_tables($T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables($T,$hj,$fi){return
|
||
apply_queries("ALTER SCHEMA ".idf_escape($fi)." TRANSFER",array_merge($T,$hj));}function
|
||
trigger($C,$R){if($C=="")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($C));$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($fh){$_GET["ns"]=$fh;return
|
||
true;}function
|
||
create_sql($R,$_a,$Ph){if(is_view(table_status1($R))){$gj=view($R);return"CREATE VIEW ".table($R)." AS $gj[select]";}$n=array();$G=false;foreach(fields($R)as$C=>$m){$X=process_field($m,$m);if($X[6])$G=true;$n[]=implode("",$X);}foreach(indexes($R)as$C=>$v){if(!$G||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$C=idf_escape($C);$n[]=($v["type"]=="INDEX"?"INDEX $C":"CONSTRAINT $C ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$C=>$Va)$n[]="CONSTRAINT ".idf_escape($C)." CHECK ($Va)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function
|
||
foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$cd)$n[]=ltrim(format_foreign_key($cd));return($n?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$n).";\n\n":"");}function
|
||
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
|
||
use_sql($Jb){return"USE ".idf_escape($Jb);}function
|
||
trigger_sql($R){$J="";foreach(triggers($R)as$C=>$Ci)$J
|
||
.=create_trigger(" ON ".table($R),trigger($C,$R)).";";return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Oc){return
|
||
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Oc);}}class
|
||
Adminer{static$be;var$error='';function
|
||
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'>Adminer</a>";}function
|
||
credentials(){return
|
||
array(SERVER,$_GET["username"],get_password());}function
|
||
connectSsl(){}function
|
||
permanentLogin($h=false){return
|
||
password_file($h);}function
|
||
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
|
||
serverName($N){return
|
||
h($N);}function
|
||
database(){return
|
||
DB;}function
|
||
databases($ad=true){return
|
||
get_databases($ad);}function
|
||
operators(){return
|
||
driver()->operators;}function
|
||
schemas(){return
|
||
schemas();}function
|
||
queryTimeout(){return
|
||
2;}function
|
||
headers(){}function
|
||
csp(array$Cb){return$Cb;}function
|
||
head($Gb=null){return
|
||
true;}function
|
||
css(){$J=array();foreach(array("","-dark")as$Ze){$o="adminer$Ze.css";if(file_exists($o))$J[]="$o?v=".crc32(file_get_contents($o));}return$J;}function
|
||
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.'System'.'<td>',html_select("auth[driver]",SqlDriver::$ac,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server','<tr><th>'.'Server'.'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.'Username'.'<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>'.'Password'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->loginFormField('db','<tr><th>'.'Database'.'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
|
||
loginFormField($C,$Ad,$Y){return$Ad.$Y."\n";}function
|
||
login($Be,$F){if($F=="")return
|
||
sprintf('Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.',target_blank());return
|
||
true;}function
|
||
tableName(array$Vh){return
|
||
h($Vh["Name"]);}function
|
||
fieldName(array$m,$Hf=0){$U=$m["full_type"];$mb=$m["comment"];return'<span title="'.h($U.($mb!=""?($U?": ":"").$mb:'')).'">'.h($m["field"]).'</span>';}function
|
||
selectLinks(array$Vh,$O=""){echo'<p class="links">';$Ae=array("select"=>'Select data');if(support("table")||support("indexes"))$Ae["table"]='Show structure';$je=false;if(support("table")){$je=is_view($Vh);if($je)$Ae["view"]='Alter view';else$Ae["create"]='Alter table';}if($O!==null)$Ae["edit"]='New item';$C=$Vh["Name"];foreach($Ae
|
||
as$x=>$X)echo" <a href='".h(ME)."$x=".urlencode($C).($x=="edit"?$O:"")."'".bold(isset($_GET[$x])).">$X</a>";echo
|
||
doc_link(array(JUSH=>driver()->tableHelp($C,$je)),"?"),"\n";}function
|
||
foreignKeys($R){return
|
||
foreign_keys($R);}function
|
||
backwardKeys($R,$Uh){return
|
||
array();}function
|
||
backwardKeysPrint(array$Da,array$K){}function
|
||
selectQuery($H,$Lh,$Mc=false){$J="</p>\n";if(!$Mc&&($kj=driver()->warnings())){$t="warnings";$J=", <a href='#$t'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."$J<div id='$t' class='hidden'>\n$kj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($Lh).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".'Edit'."</a>":"").$J;}function
|
||
sqlCommandQuery($H){return
|
||
shorten_utf8(trim($H),1000);}function
|
||
sqlPrintAfter(){}function
|
||
rowDescription($R){return"";}function
|
||
rowDescriptions(array$L,array$dd){return$L;}function
|
||
selectLink($X,array$m){}function
|
||
selectVal($X,$_,array$m,$Rf){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"<code>$X</code>":(preg_match('~json~',$m["type"])?"<code class='jush-js'>$X</code>":$X)));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!is_utf8($X))$J="<i>".lang(array('%d byte','%d bytes'),strlen($Rf))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$J</a>":$J);}function
|
||
editVal($X,array$m){return$X;}function
|
||
tableStructurePrint(array$n,$Vh=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";$Oh=driver()->structuredTypes();foreach($n
|
||
as$m){echo"<tr><th>".h($m["field"]);$U=h($m["full_type"]);$c=h($m["collation"]);echo"<td><span title='$c'>".(in_array($U,(array)$Oh['User types'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($Vh["Collation"])&&$c!=$Vh["Collation"]?" $c":""))."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".'Auto Increment'."</i>":"");$k=h($m["default"]);echo(isset($m["default"])?" <span title='".'Default value'."'>[<b>".($m["generated"]?"<code class='jush-".JUSH."'>$k</code>":$k)."</b>]</span>":""),(support("comment")?"<td>".h($m["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
|
||
tableIndexesPrint(array$w){echo"<table>\n";foreach($w
|
||
as$C=>$v){ksort($v["columns"]);$wg=array();foreach($v["columns"]as$x=>$X)$wg[]="<i>".h($X)."</i>".($v["lengths"][$x]?"(".$v["lengths"][$x].")":"").($v["descs"][$x]?" DESC":"");echo"<tr title='".h($C)."'><th>$v[type]<td>".implode(", ",$wg)."\n";}echo"</table>\n";}function
|
||
selectColumnsPrint(array$M,array$e){print_fieldset("select",'Select',$M);$s=0;$M[""]=array();foreach($M
|
||
as$x=>$X){$X=idx($_GET["columns"],$x,array());$d=select_input(" name='columns[$s][col]'",$e,$X["col"],($x!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$s][fun]",array(-1=>"")+array_filter(array('Functions'=>driver()->functions,'Aggregation'=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($x!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$s++;}echo"</div></fieldset>\n";}function
|
||
selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",'Search',$Z);foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$s]' value='".h($_GET["fulltext"][$s])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"</div>\n";}$Sa="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"<div>".select_input(" name='where[$s][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$s][op]",adminer()->operators(),$X["op"],$Sa),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Sa }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
|
||
selectOrderPrint(array$Hf,array$e,array$w){print_fieldset("sort",'Sort',$Hf);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"<div>".select_input(" name='order[$s]'",$e,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),'descending')."</div>\n";$s++;}}echo"<div>".select_input(" name='order[$s]'",$e,"","selectAddRow"),checkbox("desc[$s]",1,false,'descending')."</div>\n","</div></fieldset>\n";}function
|
||
selectLimitPrint($z){echo"<fieldset><legend>".'Limit'."</legend><div>","<input type='number' name='limit' class='size' value='".intval($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
|
||
selectLengthPrint($li){if($li!==null)echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($li)."'>","</div></fieldset>\n";}function
|
||
selectActionPrint(array$w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($w
|
||
as$v){$Fb=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$Fb)$e[$Fb]=1;}$e[""]=1;foreach($e
|
||
as$x=>$X)json_row($x);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$oc,array$e){}function
|
||
selectColumnsProcess(array$e,array$w){$M=array();$pd=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$pd[]=$M[$x];}}return
|
||
array($M,$pd);}function
|
||
selectSearchProcess(array$n,array$w){$J=array();foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$s]!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$x=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$tg="";$pb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Od=process_length($X["val"]);$pb
|
||
.=" ".($Od!=""?$Od:"(NULL)");}elseif($X["op"]=="SQL")$pb=" $X[val]";elseif($X["op"]=="LIKE %%")$pb=" LIKE ".adminer()->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$pb=" ILIKE ".adminer()->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$tg="$X[op](".q($X["val"]).", ";$pb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$pb
|
||
.=" ".adminer()->processInput($n[$X["col"]],$X["val"]);if($X["col"]!="")$J[]=$tg.driver()->convertSearch(idf_escape($X["col"]),$X,$n[$X["col"]]).$pb;else{$ib=array();foreach($n
|
||
as$C=>$m){if(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$ib[]=$tg.driver()->convertSearch(idf_escape($C),$X,$m).$pb;}$J[]=($ib?"(".implode(" OR ",$ib).")":"1 = 0");}}}return$J;}function
|
||
selectOrderProcess(array$n,array$w){$J=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" 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$dd){return
|
||
false;}function
|
||
selectQueryBuild(array$M,array$Z,array$pd,array$Hf,$z,$E){return"";}function
|
||
messageQuery($H,$mi,$Mc=false){restart_session();$Cd=&get_session("queries");if(!idx($Cd,$_GET["db"]))$Cd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Cd[$_GET["db"]][]=array($H,time(),$mi);$Hh="sql-".count($Cd[$_GET["db"]]);$J="<a href='#$Hh' class='toggle'>".'SQL command'."</a>\n";if(!$Mc&&($kj=driver()->warnings())){$t="warnings-".count($Cd[$_GET["db"]]);$J="<a href='#$t' class='toggle'>".'Warnings'."</a>, $J<div id='$t' class='hidden'>\n$kj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$Hh' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1000)."</code></pre>".($mi?" <span class='time'>($mi)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Cd[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
|
||
editRowPrint($R,array$n,$K,$Ri){}function
|
||
editFunctions(array$m){$J=($m["null"]?"NULL/":"");$Ri=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$kd){if(!$x||(!isset($_GET["call"])&&$Ri)){foreach($kd
|
||
as$ig=>$X){if(!$ig||preg_match("~$ig~",$m["type"]))$J
|
||
.="/$X";}}if($x&&$kd&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$J
|
||
.="/SQL";}if($m["auto_increment"]&&!$Ri)$J='Auto Increment';return
|
||
explode("/",$J);}function
|
||
editInput($R,array$m,$ya,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$ya value='-1' checked><i>".'original'."</i></label> ":"").($m["null"]?"<label><input type='radio'$ya value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$ya,$m,$Y,$Y===0?0:null);return"";}function
|
||
editHint($R,array$m,$Y){return"";}function
|
||
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$C=$m["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$J="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$J=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$J=idf_escape($C)." $r $J";elseif(preg_match('~^[+-] interval$~',$r))$J=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$J="$r(".idf_escape($C).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$J="$r($J)";return
|
||
unconvert_field($m,$J);}function
|
||
dumpOutput(){$J=array('text'=>'open','file'=>'save');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($j){}function
|
||
dumpTable($R,$Ph,$je=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Ph)dump_csv(array_keys(fields($R)));}else{if($je==2){$n=array();foreach(fields($R)as$C=>$m)$n[]=idf_escape($C)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$Ph);set_utf8mb4($h);if($Ph&&$h){if($Ph=="DROP+CREATE"||$je==1)echo"DROP ".($je==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($je==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
|
||
dumpData($R,$Ph,$H){if($Ph){$Je=(JUSH=="sqlite"?0:1048576);$n=array();$Ld=false;if($_POST["format"]=="sql"){if($Ph=="TRUNCATE+INSERT")echo
|
||
truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n
|
||
as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Ld=true;break;}}}}$I=connection()->query($H,1);if($I){$Zd="";$Na="";$oe=array();$ld=array();$Rh="";$Pc=($R!=''?'fetch_assoc':'fetch_row');while($K=$I->$Pc()){if(!$oe){$cj=array();foreach($K
|
||
as$X){$m=$I->fetch_field();if(idx($n[$m->name],'generated')){$ld[$m->name]=true;continue;}$oe[]=$m->name;$x=idf_escape($m->name);$cj[]="$x = VALUES($x)";}$Rh=($Ph=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$cj):"").";\n";}if($_POST["format"]!="sql"){if($Ph=="table"){dump_csv($oe);$Ph="INSERT";}dump_csv($K);}else{if(!$Zd)$Zd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$oe)).") VALUES";foreach($K
|
||
as$x=>$X){if($ld[$x]){unset($K[$x]);continue;}$m=$n[$x];$K[$x]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$dh=($Je?"\n":" ")."(".implode(",\t",$K).")";if(!$Na)$Na=$Zd.$dh;elseif(strlen($Na)+4+strlen($dh)+strlen($Rh)<$Je)$Na
|
||
.=",$dh";else{echo$Na.$Rh;$Na=$Zd.$dh;}}}if($Na)echo$Na.$Rh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Ld)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
|
||
dumpFilename($Jd){return
|
||
friendly_url($Jd!=""?$Jd:(SERVER!=""?SERVER:"localhost"));}function
|
||
dumpHeaders($Jd,$bf=false){$Uf=$_POST["output"];$Hc=(preg_match('~sql~',$_POST["format"])?"sql":($bf?"tar":"csv"));header("Content-Type: ".($Uf=="gz"?"application/x-gzip":($Hc=="tar"?"application/x-tar":($Hc=="sql"||$Uf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Uf=="gz"){ob_start(function($Q){return
|
||
gzencode($Q);},1e6);}return$Hc;}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=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return
|
||
true;}function
|
||
navigation($Ye){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$jf=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$jf)<0?h($jf):"")."</a>","</span></h1>\n";if($Ye=="auth"){$Uf="";foreach((array)$_SESSION["pwds"]as$ej=>$uh){foreach($uh
|
||
as$N=>$Zi){$C=h(get_setting("vendor-$ej-$N")?:get_driver($ej));foreach($Zi
|
||
as$V=>$F){if($F!==null){$Mb=$_SESSION["db"][$ej][$N][$V];foreach(($Mb?array_keys($Mb):array(""))as$j)$Uf
|
||
.="<li><a href='".h(auth_url($ej,$N,$V,$j))."'>($C) ".h($V.($N!=""?"@".adminer()->serverName($N):"").($j!=""?" - $j":""))."</a>\n";}}}}if($Uf)echo"<ul id='logins'>\n$Uf</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Ye&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Ye);$ia=array();if(DB==""||!$Ye){if(support("sql")){$ia[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>";$ia[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>";}$ia[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>";}$Pd=$_GET["ns"]!==""&&!$Ye&&DB!="";if($Pd)$ia[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>";echo($ia?"<p class='links'>\n".implode("\n",$ia)."\n":"");if($Pd){if($T)adminer()->tablesPrint($T);else
|
||
echo"<p class='message'>".'No tables.'."</p>\n";}}}function
|
||
syntaxHighlighting(array$T){echo
|
||
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.1.1");if(support("sql")){echo"<script".nonce().">\n";if($T){$Ae=array();foreach($T
|
||
as$R=>$U)$Ae[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$Ae).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";}echo"</script>\n";}echo
|
||
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."'".(connection()->flavor=='maria'?", 'maria'":(connection()->flavor=='cockroach'?", 'cockroach'":"")).");");}function
|
||
databasesPrint($Ye){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Kb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<span title='".'Database'."'>".'DB'.":</span> ".($i?html_select("db",array(""=>"")+$i,DB).$Kb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n"),"<input type='submit' value='".'Use'."'".($i?" class='hidden'":"").">\n";if(support("scheme")){if($Ye!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><span>".'Schema'.":</span> ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"]).$Kb;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){$C=adminer()->tableName($P);if($C!="")echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".'Select data'."'>".'select'."</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"])),(is_view($P)?"view":"structure"))." title='".'Show structure'."'>$C</a>":"<span>$C</span>")."\n";}echo"</ul>\n";}}class
|
||
Plugins{private
|
||
static$ta=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true);var$plugins;var$error='';private$hooks=array();function
|
||
__construct($ng){if($ng===null){$ng=array();$Ha="adminer-plugins";if(is_dir($Ha)){foreach(glob("$Ha/*.php")as$o)$Qd=include_once"./$o";}$Bd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ha.php")){$Qd=include_once"./$Ha.php";if(is_array($Qd)){foreach($Qd
|
||
as$mg)$ng[get_class($mg)]=$mg;}else$this->error
|
||
.=sprintf('%s must <a%s>return an array</a>.',"<b>$Ha.php</b>",$Bd)."<br>";}foreach(get_declared_classes()as$cb){if(!$ng[$cb]&&preg_match('~^Adminer\w~i',$cb)){$Ng=new
|
||
\ReflectionClass($cb);$ub=$Ng->getConstructor();if($ub&&$ub->getNumberOfRequiredParameters())$this->error
|
||
.=sprintf('<a%s>Configure</a> %s in %s.',$Bd,"<b>$cb</b>","<b>$Ha.php</b>")."<br>";else$ng[$cb]=new$cb;}}}$this->plugins=$ng;$la=new
|
||
Adminer;$ng[]=$la;$Ng=new
|
||
\ReflectionObject($la);foreach($Ng->getMethods()as$We){foreach($ng
|
||
as$mg){$C=$We->getName();if(method_exists($mg,$C))$this->hooks[$C][]=$mg;}}}function
|
||
__call($C,array$Zf){$ua=array();foreach($Zf
|
||
as$x=>$X)$ua[]=&$Zf[$x];$J=null;foreach($this->hooks[$C]as$mg){$Y=call_user_func_array(array($mg,$C),$ua);if($Y!==null){if(!self::$ta[$C])return$Y;$J=$Y+(array)$J;}}return$J;}}if(function_exists('adminer_object'))Adminer::$be=adminer_object();elseif(is_dir("adminer-plugins")||file_exists("adminer-plugins.php"))Adminer::$be=new
|
||
Plugins(null);else
|
||
Adminer::$be=new
|
||
Adminer;SqlDriver::$ac=array("server"=>"MySQL / MariaDB")+SqlDriver::$ac;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
\MySQLi{static$be;var$extension="MySQLi",$flavor='';function
|
||
__construct(){parent::init();}function
|
||
attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Fd,$og)=explode(":",$N,2);$Kh=adminer()->connectSsl();if($Kh)$this->ssl_set($Kh['key'],$Kh['cert'],$Kh['ca'],'','');$J=@$this->real_connect(($N!=""?$Fd: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($og)?intval($og):ini_get("mysqli.default_port")),(is_numeric($og)?$og:null),($Kh?($Kh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return($J?'':$this->error);}function
|
||
set_charset($Ua){if(parent::set_charset($Ua))return
|
||
true;parent::set_charset('utf8');return$this->query("SET NAMES $Ua");}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
|
||
sprintf('Disable %s or enable %s or %s extensions.',"'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($Ua){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ua,$this->link))return
|
||
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ua");}function
|
||
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
|
||
select_db($Jb){return
|
||
mysql_select_db($Jb,$this->link);}function
|
||
query($H,$Ji=false){$I=@($Ji?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){$Ff=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Kh=adminer()->connectSsl();if($Kh){if($Kh['key'])$Ff[\PDO::MYSQL_ATTR_SSL_KEY]=$Kh['key'];if($Kh['cert'])$Ff[\PDO::MYSQL_ATTR_SSL_CERT]=$Kh['cert'];if($Kh['ca'])$Ff[\PDO::MYSQL_ATTR_SSL_CA]=$Kh['ca'];if(isset($Kh['verify']))$Ff[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$Kh['verify'];}return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$Ff);}function
|
||
set_charset($Ua){return$this->query("SET NAMES $Ua");}function
|
||
select_db($Jb){return$this->query("USE ".idf_escape($Jb));}function
|
||
query($H,$Ji=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ji);return
|
||
parent::query($H,$Ji);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Jc=array("MySQLi","MySQL","PDO_MySQL");static$le="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){$f=parent::connect($N,$V,$F);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($dh=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$dh;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$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,$f))$this->types['Strings']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Strings']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types['Numbers']["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"<code class='jush-sql'>UNHEX</code>":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$m["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));$tg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$cj=array();foreach($e
|
||
as$x)$cj[$x]="$x = VALUES($x)";$Rh="\nON DUPLICATE KEY UPDATE ".implode(", ",$cj);$cj=array();$y=0;foreach($L
|
||
as$O){$Y="(".implode(", ",$O).")";if($cj&&(strlen($tg)+$y+strlen($Y)+strlen($Rh)>1e6)){if(!queries($tg.implode(",\n",$cj).$Rh))return
|
||
false;$cj=array();$y=0;}$cj[]=$Y;$y+=strlen($Y)+2;}return
|
||
queries($tg.implode(",\n",$cj).$Rh);}function
|
||
slowQuery($H,$ni){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$ni FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($ni*1000).") */ $B[2]";}}function
|
||
convertSearch($u,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u);}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($C,$je=false){$De=($this->conn->flavor=='maria');if(information_schema(DB))return
|
||
strtolower("information-schema-".($De?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($De?"mysql$C-table/":"system-schema.html");}function
|
||
hasCStyleEscapes(){static$Pa;if($Pa===null){$Ih=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Pa=(strpos($Ih,'NO_BACKSLASH_ESCAPES')===false);}return$Pa;}function
|
||
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}}function
|
||
idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ad){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($ad?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
|
||
limit($H,$Z,$z,$D=0,$ph=" "){return" $H$Z".($z?$ph."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$ph="\n"){return
|
||
limit($H,$Z,1,0,$ph);}function
|
||
db_collation($j,array$hb){$J=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$B))$J=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$B))$J=$hb[$B[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$i){$J=array();foreach($i
|
||
as$j)$J[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$J;}function
|
||
table_status($C="",$Nc=false){$J=array();foreach(get_rows($Nc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($C!="")$K["Name"]=$C;$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){$De=(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){$m=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$md=$K["GENERATION_EXPRESSION"];$Kc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Kc,$ld);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Ge);$k=$K["COLUMN_DEFAULT"];if($k!=""){$ie=preg_match('~text|json~',$Ge[1]);if(!$De&&$ie)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($De||$ie){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($B){return
|
||
stripslashes(str_replace("''","'",$B[1]));},$k));}if(!$De&&preg_match('~binary~',$Ge[1])&&preg_match('~^0x(\w*)$~',$k,$B))$k=pack("H*",$B[1]);}$J[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Ge[1],"length"=>$Ge[2],"unsigned"=>ltrim($Ge[3].$Ge[4]),"default"=>($ld?($De?$md:stripslashes($md)):$k),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Kc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Kc,$B)?$B[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($ld[1]=="PERSISTENT"?"STORED":$ld[1]),);}return$J;}function
|
||
indexes($R,$g=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$K){$C=$K["Key_name"];$J[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$C]["columns"][]=$K["Column_name"];$J[$C]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$C]["descs"][]=null;}return$J;}function
|
||
foreign_keys($R){static$ig='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$_b=get_val("SHOW CREATE TABLE ".table($R),1);if($_b){preg_match_all("~CONSTRAINT ($ig) FOREIGN KEY ?\\(((?:$ig,? ?)+)\\) REFERENCES ($ig)(?:\\.($ig))? \\(((?:$ig,? ?)+)\\)(?: ON DELETE (driver()->onActions))?(?: ON UPDATE (driver()->onActions))?~",$_b,$He,PREG_SET_ORDER);foreach($He
|
||
as$B){preg_match_all("~$ig~",$B[2],$Ch);preg_match_all("~$ig~",$B[5],$fi);$J[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('Adminer\idf_unescape',$Ch[0]),"target"=>array_map('Adminer\idf_unescape',$fi[0]),"on_delete"=>($B[6]?:"RESTRICT"),"on_update"=>($B[7]?:"RESTRICT"),);}}return$J;}function
|
||
view($C){return
|
||
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),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$x=>$X)sort($J[$x]);return$J;}function
|
||
information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function
|
||
error(){return
|
||
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" COLLATE ".q($c):""));}function
|
||
drop_databases(array$i){$J=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
|
||
rename_database($C,$c){$J=false;if(create_database($C,$c)){$T=array();$hj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$hj[]=$R;else$T[]=$R;}$J=(!$T&&!$hj)||move_tables($T,$hj,$C);drop_databases($J?array(DB):array());}return$J;}function
|
||
auto_increment(){$Aa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Aa="";break;}if($v["type"]=="PRIMARY")$Aa=" UNIQUE";}}return" AUTO_INCREMENT$Aa";}function
|
||
alter_table($R,$C,array$n,array$cd,$mb,$rc,$c,$_a,$eg){$b=array();foreach($n
|
||
as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$cd);$P=($mb!==null?" COMMENT=".q($mb):"").($rc?" ENGINE=".q($rc):"").($c?" COLLATE ".q($c):"").($_a!=""?" AUTO_INCREMENT=$_a":"");if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P$eg");if($R!=$C)$b[]="RENAME TO ".table($C);if($P)$b[]=ltrim($P);return($b||$eg?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b).$eg):true);}function
|
||
alter_indexes($R,$b){$Ta=array();foreach($b
|
||
as$X)$Ta[]=($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(",",$Ta));}function
|
||
truncate_tables(array$T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views(array$hj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$hj)));}function
|
||
drop_tables(array$T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables(array$T,array$hj,$fi){$Rg=array();foreach($T
|
||
as$R)$Rg[]=table($R)." TO ".idf_escape($fi).".".table($R);if(!$Rg||queries("RENAME TABLE ".implode(", ",$Rg))){$Qb=array();foreach($hj
|
||
as$R)$Qb[table($R)]=view($R);connection()->select_db($fi);$j=idf_escape(DB);foreach($Qb
|
||
as$C=>$gj){if(!queries("CREATE VIEW $C AS ".str_replace(" $j."," ",$gj["select"]))||!queries("DROP VIEW $j.$C"))return
|
||
false;}return
|
||
true;}return
|
||
false;}function
|
||
copy_tables(array$T,array$hj,$fi){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
|
||
as$R){$C=($fi==DB?table("copy_$R"):idf_escape($fi).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return
|
||
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$Ci=$K["Trigger"];if(!queries("CREATE TRIGGER ".($fi==DB?idf_escape("copy_$Ci"):idf_escape($fi).".".idf_escape($Ci))." $K[Timing] $K[Event] ON $C FOR EACH ROW\n$K[Statement];"))return
|
||
false;}}foreach($hj
|
||
as$R){$C=($fi==DB?table("copy_$R"):idf_escape($fi).".".table($R));$gj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $gj[select]"))return
|
||
false;}return
|
||
true;}function
|
||
trigger($C,$R){if($C=="")return
|
||
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));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($C,$U){$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Dh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$tc=driver()->enumLength;$Hi="((".implode("|",array_merge(array_keys(driver()->types()),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$tc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ig="$Dh*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Hi";$h=get_val("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$ig\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$Hi\\s+":"")."(.*)~is",$h,$B);$n=array();preg_match_all("~$ig\\s*,?~is",$B[1],$He,PREG_SET_ORDER);foreach($He
|
||
as$Yf)$n[]=array("field"=>str_replace("``","`",$Yf[2]).$Yf[3],"type"=>strtolower($Yf[5]),"length"=>preg_replace_callback("~$tc~s",'Adminer\normalize_enum',$Yf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Yf[8] $Yf[7]"))),"null"=>true,"full_type"=>$Yf[4],"inout"=>strtoupper($Yf[1]),"collation"=>strtolower($Yf[9]),);return
|
||
array("fields"=>$n,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($C)),)+($U!="FUNCTION"?array("definition"=>$B[11]):array("returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",));}function
|
||
routines(){return
|
||
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
|
||
routine_languages(){return
|
||
array();}function
|
||
routine_id($C,array$K){return
|
||
idf_escape($C);}function
|
||
last_id($I){return
|
||
get_val("SELECT LAST_INSERT_ID()");}function
|
||
explain(Db$f,$H){return$f->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,$_a,$Ph){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$_a)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
|
||
truncate_sql($R){return"TRUNCATE ".table($R);}function
|
||
use_sql($Jb){return"USE ".idf_escape($Jb);}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$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function
|
||
unconvert_field(array$m,$J){if(preg_match("~binary~",$m["type"]))$J="UNHEX($J)";if($m["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$tg=(min_version(8)?"ST_":"");$J=$tg."GeomFromText($J, $tg"."SRID($m[field]))";}return$J;}function
|
||
support($Oc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning")).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Oc);}function
|
||
kill_process($X){return
|
||
queries("KILL ".number($X));}function
|
||
connection_id(){return"SELECT CONNECTION_ID()";}function
|
||
max_connections(){return
|
||
get_val("SELECT @@max_connections");}function
|
||
types(){return
|
||
array();}function
|
||
type_values($t){return"";}function
|
||
schemas(){return
|
||
array();}function
|
||
get_schema(){return"";}function
|
||
set_schema($fh,$g=null){return
|
||
true;}}define('Adminer\JUSH',Driver::$le);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($pi,$l="",$Ma=array(),$qi=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start(null,4096);$ri=$pi.($qi!=""?": $qi":"");$si=strip_tags($ri.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
|
||
<html lang="en" dir="ltr">
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
<meta name="robots" content="noindex">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>',$si,'</title>
|
||
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.1.1"),'">
|
||
';$Db=adminer()->css();$yd=false;$wd=false;foreach($Db
|
||
as$o){if(strpos($o,"adminer.css")!==false)$yd=true;if(strpos($o,"adminer-dark.css")!==false)$wd=true;}$Gb=($yd?($wd?null:false):($wd?:null));$Pe=" media='(prefers-color-scheme: dark)'";if($Gb!==false)echo"<link rel='stylesheet'".($Gb?"":$Pe)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.1.1")."'>\n";echo"<meta name='color-scheme' content='".($Gb===null?"light dark":($Gb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.1.1");if(adminer()->head($Gb))echo"<link rel='shortcut icon' type='image/x-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=5.1.1")."'>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=5.1.1")."'>\n";foreach($Db
|
||
as$X)echo"<link rel='stylesheet'".(preg_match('~-dark~',$X)&&!$Gb?$Pe:"")." href='".h($X)."'>\n";echo"\n<body class='".'ltr'." nojs'>\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$fj=unserialize(file_get_contents($o));$Bg="-----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($fj["version"],base64_decode($fj["signature"]),$Bg)==1)$_COOKIE["adminer_version"]=$fj["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('You are offline.')."';
|
||
const thousandsSeparator = '".js_escape(',')."';"),"<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($Ma!==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:'Server');if($Ma===false)echo"$N\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ma)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ma)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ma
|
||
as$x=>$X){$Sb=(is_array($X)?$X[1]:h($X));if($Sb!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$Sb</a> » ";}}echo"$pi\n";}}echo"<h2>$ri</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=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$Cb){$_d=array();foreach($Cb
|
||
as$x=>$X)$_d[]="$x $X";header("Content-Security-Policy: ".implode("; ",$_d));}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$lf;if(!$lf)$lf=base64_encode(rand_string());return$lf;}function
|
||
page_messages($l){$Si=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ve=idx($_SESSION["messages"],$Si);if($Ve){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Ve)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Si]);}if($l)echo"<div class='error'>$l</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
|
||
page_footer($Ye=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($Ye);echo"</div>\n";if($Ye!="auth")echo'<form action="" method="post">
|
||
<p class="logout">
|
||
<span>',h($_GET["username"])."\n",'</span>
|
||
<input type="submit" name="logout" value="Logout" id="logout">
|
||
',input_token(),'</form>
|
||
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
|
||
int32($df){while($df>=2147483648)$df-=4294967296;while($df<=-2147483649)$df+=4294967296;return(int)$df;}function
|
||
long2str(array$W,$jj){$dh='';foreach($W
|
||
as$X)$dh
|
||
.=pack('V',$X);if($jj)return
|
||
substr($dh,0,end($W));return$dh;}function
|
||
str2long($dh,$jj){$W=array_values(unpack('V*',str_pad($dh,4*ceil(strlen($dh)/4),"\0")));if($jj)$W[]=strlen($dh);return$W;}function
|
||
xxtea_mx($qj,$pj,$Sh,$me){return
|
||
int32((($qj>>5&0x7FFFFFF)^$pj<<2)+(($pj>>3&0x1FFFFFFF)^$qj<<4))^int32(($Sh^$pj)+($me^$qj));}function
|
||
encrypt_string($Nh,$x){if($Nh=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Nh,true);$df=count($W)-1;$qj=$W[$df];$pj=$W[0];$Cg=floor(6+52/($df+1));$Sh=0;while($Cg-->0){$Sh=int32($Sh+0x9E3779B9);$ic=$Sh>>2&3;for($Wf=0;$Wf<$df;$Wf++){$pj=$W[$Wf+1];$cf=xxtea_mx($qj,$pj,$Sh,$x[$Wf&3^$ic]);$qj=int32($W[$Wf]+$cf);$W[$Wf]=$qj;}$pj=$W[0];$cf=xxtea_mx($qj,$pj,$Sh,$x[$Wf&3^$ic]);$qj=int32($W[$df]+$cf);$W[$df]=$qj;}return
|
||
long2str($W,false);}function
|
||
decrypt_string($Nh,$x){if($Nh=="")return"";if(!$x)return
|
||
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Nh,false);$df=count($W)-1;$qj=$W[$df];$pj=$W[0];$Cg=floor(6+52/($df+1));$Sh=int32($Cg*0x9E3779B9);while($Sh){$ic=$Sh>>2&3;for($Wf=$df;$Wf>0;$Wf--){$qj=$W[$Wf-1];$cf=xxtea_mx($qj,$pj,$Sh,$x[$Wf&3^$ic]);$pj=int32($W[$Wf]-$cf);$W[$Wf]=$pj;}$qj=$W[$df];$cf=xxtea_mx($qj,$pj,$Sh,$x[$Wf&3^$ic]);$pj=int32($W[0]-$cf);$W[0]=$pj;$Sh=int32($Sh-0x9E3779B9);}return
|
||
long2str($W,true);}$kg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$kg[$x]=$X;}}function
|
||
add_invalid_login(){$Fa=get_temp_dir()."/adminer.invalid";foreach(glob("$Fa*")?:array($Fa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Fa-".rand_string());if(!$q)return;$ee=unserialize(stream_get_contents($q));$mi=time();if($ee){foreach($ee
|
||
as$fe=>$X){if($X[0]<$mi)unset($ee[$fe]);}}$de=&$ee[adminer()->bruteForceKey()];if(!$de)$de=array($mi+30*60,0);$de[1]++;file_write_unlock($q,serialize($ee));}function
|
||
check_invalid_login(array&$kg){$ee=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$ee=unserialize(stream_get_contents($q));file_unlock($q);break;}}$de=idx($ee,adminer()->bruteForceKey(),array());$kf=($de[1]>29?$de[0]-time():0);if($kf>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($kf/60)),$kg);}$za=$_POST["auth"];if($za){session_regenerate_id();$ej=$za["driver"];$N=$za["server"];$V=$za["username"];$F=(string)$za["password"];$j=$za["db"];set_password($ej,$N,$V,$F);$_SESSION["db"][$ej][$N][$V][$j]=true;if($za["permanent"]){$x=implode("-",array_map('base64_encode',array($ej,$N,$V,$j)));$xg=adminer()->permanentLogin(true);$kg[$x]="$x:".base64_encode($xg?encrypt_string($F,$xg):"");cookie("adminer_permanent",implode(" ",$kg));}if(count($_POST)==1||DRIVER!=$ej||SERVER!=$N||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($ej,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($kg);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.');}elseif($kg&&!$_SESSION["pwds"]){session_regenerate_id();$xg=adminer()->permanentLogin();foreach($kg
|
||
as$x=>$X){list(,$bb)=explode(":",$X);list($ej,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($ej,$N,$V,decrypt_string(base64_decode($bb),$xg));$_SESSION["db"][$ej][$N][$V][$j]=true;}}function
|
||
unset_permanent(array&$kg){foreach($kg
|
||
as$x=>$X){list($ej,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($ej==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($kg[$x]);}cookie("adminer_permanent",implode(" ",$kg));}function
|
||
auth_error($l,array&$kg){$vh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$vh]||$_GET[$vh])&&!$_SESSION["token"])$l='Session expired, please login again.';else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$l
|
||
.=($l?'<br>':'').sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($kg);}}if(!$_COOKIE[$vh]&&$_GET[$vh]&&ini_bool("session.use_only_cookies"))$l='Session support must be enabled.';$Zf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Zf["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Login',$l,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'The action will be performed after successful login with the same credentials.'."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($kg);page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",Driver::$Jc)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($Fd,$og)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$og,$B)&&($B[1]<1024||$B[1]>65535))auth_error('Connecting to privileged ports is not allowed.',$kg);check_invalid_login($kg);$Bb=adminer()->credentials();$f=Driver::connect($Bb[0],$Bb[1],$Bb[2]);if(is_object($f)){Db::$be=$f;Driver::$be=new
|
||
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Be=null;if(!is_object($f)||($Be=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($Be)?$Be:'Invalid credentials.')).(preg_match('~^ | $~',get_password())?'<br>'.'There is a space in the input password which might be the cause.':'');auth_error($l,$kg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($za&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$Wd="max_input_vars";$Ne=ini_get($Wd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$Ne||$X<$Ne)){$Wd=$x;$Ne=$X;}}}$l=(!$_POST["token"]&&$Ne?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Wd'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$l
|
||
.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
|
||
print_select_result($I,$g=null,array$Lf=array(),$z=0){$Ae=array();$w=array();$e=array();$Ka=array();$Ii=array();$J=array();for($s=0;(!$z||$s<$z)&&($K=$I->fetch_row());$s++){if(!$s){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($ke=0;$ke<count($K);$ke++){$m=$I->fetch_field();$C=$m->name;$Kf=(isset($m->orgtable)?$m->orgtable:"");$Jf=(isset($m->orgname)?$m->orgname:$C);if($Lf&&JUSH=="sql")$Ae[$ke]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Kf!=""){if(isset($m->table))$J[$m->table]=$Kf;if(!isset($w[$Kf])){$w[$Kf]=array();foreach(indexes($Kf,$g)as$v){if($v["type"]=="PRIMARY"){$w[$Kf]=array_flip($v["columns"]);break;}}$e[$Kf]=$w[$Kf];}if(isset($e[$Kf][$Jf])){unset($e[$Kf][$Jf]);$w[$Kf][$Jf]=$ke;$Ae[$ke]=$Kf;}}if($m->charsetnr==63)$Ka[$ke]=true;$Ii[$ke]=$m->type;echo"<th".($Kf!=""||$m->name!=$Jf?" title='".h(($Kf!=""?"$Kf.":"").$Jf)."'":"").">".h($C).($Lf?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
|
||
as$x=>$X){$_="";if(isset($Ae[$x])&&!$e[$Ae[$x]]){if($Lf&&JUSH=="sql"){$R=$K[array_search("table=",$Ae)];$_=ME.$Ae[$x].urlencode($Lf[$R]!=""?$Lf[$R]:$R);}else{$_=ME."edit=".urlencode($Ae[$x]);foreach($w[$Ae[$x]]as$fb=>$ke)$_
|
||
.="&where".urlencode("[".bracket_escape($fb)."]")."=".urlencode($K[$ke]);}}elseif(is_url($X))$_=$X;if($X===null)$X="<i>NULL</i>";elseif($Ka[$x]&&!is_utf8($X))$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";else{$X=h($X);if($Ii[$x]==254)$X="<code>$X</code>";}if($_)$X="<a href='".h($_)."'".(is_url($_)?target_blank():'').">$X</a>";echo"<td".($Ii[$x]<=9||$Ii[$x]==246?" class='number'":"").">$X";}}echo($s?"</table>\n</div>":"<p class='message'>".'No rows.')."\n";return$J;}function
|
||
referencable_primary($nh){$J=array();foreach(table_status('',true)as$Xh=>$R){if($Xh!=$nh&&fk_support($R)){foreach(fields($Xh)as$m){if($m["primary"]){if($J[$Xh]){unset($J[$Xh]);break;}$J[$Xh]=$m;}}}}return$J;}function
|
||
textarea($C,$Y,$L=10,$ib=80){echo"<textarea name='".h($C)."' rows='$L' cols='$ib' 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($ya,array$Ff,$Y="",$_f="",$lg=""){$ei=($Ff?"select":"input");return"<$ei$ya".($Ff?"><option value=''>$lg".optionlist($Ff,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$lg'>").($_f?script("qsl('$ei').onchange = $_f;",""):"");}function
|
||
json_row($x,$X=null){static$Uc=true;if($Uc)echo"{";if($x!=""){echo($Uc?"":",")."\n\t\"".addcslashes($x,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Uc=false;}else{echo"\n}\n";$Uc=true;}}function
|
||
edit_type($x,array$m,array$hb,array$ed=array(),array$Lc=array()){$U=$m["type"];echo"<td><select name='".h($x)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($ed[$U])&&!in_array($U,$Lc))$Lc[]=$U;$Oh=driver()->structuredTypes();if($ed)$Oh['Foreign keys']=$ed;echo
|
||
optionlist(array_merge($Lc,$Oh),$U),"</select><td>","<input name='".h($x)."[length]' value='".h($m["length"])."' size='3'".(!$m["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($hb?"<input list='collations' name='".h($x)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($m["collation"])."' placeholder='(".'collation'.")'>":''),(driver()->unsigned?"<select name='".h($x)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='".h($x)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"CURRENT_TIMESTAMP":$m["on_update"])).'</select>':''),($ed?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",driver()->onActions),$m["on_delete"])."</select> ":" ");}function
|
||
get_partitions_info($R){$id="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=connection()->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $id ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$fg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $id AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($fg);$J["partition_values"]=array_values($fg);return$J;}function
|
||
process_length($y){$vc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$vc(?:\\s*,\\s*$vc)*+\\s*\\)?\\s*\$~",$y)&&preg_match_all("~$vc~",$y,$He)?"(".implode(",",$He[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$y)));}function
|
||
process_type(array$m,$gb="COLLATE"){return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],driver()->unsigned)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $gb ".(JUSH=="mssql"?$m["collation"]:q($m["collation"])):"");}function
|
||
process_field(array$m,array$Gi){if($m["on_update"])$m["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$m["on_update"]);return
|
||
array(idf_escape(trim($m["field"])),process_type($Gi),($m["null"]?" NULL":" NOT NULL"),default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(support("comment")&&$m["comment"]!=""?" COMMENT ".q($m["comment"]):""),($m["auto_increment"]?auto_increment():null),);}function
|
||
default_value(array$m){$k=$m["default"];$ld=$m["generated"];return($k===null?"":(in_array($ld,driver()->generated)?(JUSH=="mssql"?" AS ($k)".($ld=="VIRTUAL"?"":" $ld")."":" GENERATED ALWAYS AS ($k) $ld"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$k)&&(preg_match('~char|binary|text|json|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$k))?(JUSH=="sql"&&preg_match('~text|json~',$m["type"])?"(".q($k).")":q($k)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($k)":$k)))));}function
|
||
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}function
|
||
edit_fields(array$n,array$hb,$U="TABLE",array$ed=array()){$n=array_values($n);$Ob=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$nb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($U=="PROCEDURE"?"<td>":""),"<th id='label-name'>".($U=="TABLE"?'Column name':'Parameter name'),"<td id='label-type'>".'Type'."<textarea id='enum-edit' rows='4' cols='12' wrap='off' style='display: none;'></textarea>".script("qs('#enum-edit').onblur = editingLengthBlur;"),"<td id='label-length'>".'Length',"<td>".'Options';if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".'Auto Increment'."'>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'$Ob>".'Default value',(support("comment")?"<td id='label-comment'$nb>".'Comment':"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($n))."]","+",'Add next'),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n
|
||
as$s=>$m){$s++;$Mf=$m[($_POST?"orig":"field")];$Xb=(isset($_POST["add"][$s-1])||(isset($m["field"])&&!idx($_POST["drop_col"],$s)))&&(support("drop_col")||$Mf=="");echo"<tr".($Xb?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$s][inout]",explode("|",driver()->inout),$m["inout"]):"")."<th>";if($Xb)echo"<input name='fields[$s][field]' value='".h($m["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'>";echo
|
||
input_hidden("fields[$s][orig]",$Mf);edit_type("fields[$s]",$m,$hb,$ed);if($U=="TABLE")echo"<td>".checkbox("fields[$s][null]",1,$m["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$s'".($m["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Ob>".(driver()->generated?html_select("fields[$s][generated]",array_merge(array("","DEFAULT"),driver()->generated),$m["generated"])." ":checkbox("fields[$s][generated]",1,$m["generated"],"","","","label-default")),"<input name='fields[$s][default]' value='".h($m["default"])."' aria-labelledby='label-default'>",(support("comment")?"<td$nb><input name='fields[$s][comment]' value='".h($m["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");echo"<td>",(support("move_col")?icon("plus","add[$s]","+",'Add next')." ".icon("up","up[$s]","↑",'Move up')." ".icon("down","down[$s]","↓",'Move down')." ":""),($Mf==""||support("drop_col")?icon("cross","drop_col[$s]","x",'Remove'):"");}}function
|
||
process_fields(array&$n){$D=0;if($_POST["up"]){$te=0;foreach($n
|
||
as$x=>$m){if(key($_POST["up"])==$x){unset($n[$x]);array_splice($n,$te,0,array($m));break;}if(isset($m["field"]))$te=$D;$D++;}}elseif($_POST["down"]){$gd=false;foreach($n
|
||
as$x=>$m){if(isset($m["field"])&&$gd){unset($n[key($_POST["down"])]);array_splice($n,$D,0,array($gd));break;}if(key($_POST["down"])==$x)$gd=$m;$D++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
|
||
false;return
|
||
true;}function
|
||
normalize_enum(array$B){$X=$B[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
|
||
grant($nd,array$zg,$e,$xf){if(!$zg)return
|
||
true;if($zg==array("ALL PRIVILEGES","GRANT OPTION"))return($nd=="GRANT"?queries("$nd ALL PRIVILEGES$xf WITH GRANT OPTION"):queries("$nd ALL PRIVILEGES$xf")&&queries("$nd GRANT OPTION$xf"));return
|
||
queries("$nd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$zg).$e).$xf);}function
|
||
drop_create($bc,$h,$dc,$ii,$fc,$A,$Ue,$Se,$Te,$uf,$hf){if($_POST["drop"])query_redirect($bc,$A,$Ue);elseif($uf=="")query_redirect($h,$A,$Te);elseif($uf!=$hf){$Ab=queries($h);queries_redirect($A,$Se,$Ab&&queries($bc));if($Ab)queries($dc);}else
|
||
queries_redirect($A,$Se,queries($ii)&&queries($fc)&&queries($bc)&&queries($h));}function
|
||
create_trigger($xf,array$K){$oi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$xf.$oi:$oi.$xf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
|
||
create_routine($Zg,array$K){$O=array();$n=(array)$K["fields"];ksort($n);foreach($n
|
||
as$m){if($m["field"]!="")$O[]=(preg_match("~^(driver()->inout)\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$Pb=rtrim($K["definition"],";");return"CREATE $Zg ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($Zg=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Pb):"\n$Pb;");}function
|
||
remove_definer($H){return
|
||
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
|
||
format_foreign_key(array$p){$j=$p["db"];$mf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($mf!=""&&$mf!=$_GET["ns"]?idf_escape($mf).".":"").idf_escape($p["table"])." (".implode(", ",array_map('Adminer\idf_escape',$p["target"])).")".(preg_match("~^(driver()->onActions)\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^(driver()->onActions)\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
|
||
tar_file($o,$ti){$J=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($ti->size),decoct(time()));$ab=8*32;for($s=0;$s<strlen($J);$s++)$ab+=ord($J[$s]);$J
|
||
.=sprintf("%06o",$ab)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$ti->send();echo
|
||
str_repeat("\0",511-($ti->size+511)%512);}function
|
||
ini_bytes($Wd){$X=ini_get($Wd);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
|
||
doc_link(array$hg,$ji="<sup>?</sup>"){$th=connection()->server_info;$fj=preg_replace('~^(\d\.?\d).*~s','\1',$th);$Ui=array('sql'=>"https://dev.mysql.com/doc/refman/$fj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$fj)."/",'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',$th)."&id=",);if(connection()->flavor=='maria'){$Ui['sql']="https://mariadb.com/kb/en/";$hg['sql']=(isset($hg['mariadb'])?$hg['mariadb']:str_replace(".html","/",$hg['sql']));}return($hg[JUSH]?"<a href='".h($Ui[JUSH].$hg[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$fj":""))."'".target_blank().">$ji</a>":"");}function
|
||
db_size($j){if(!connection()->select_db($j))return"?";$J=0;foreach(table_status()as$S)$J+=$S["Data_length"]+$S["Index_length"];return
|
||
format_number($J);}function
|
||
set_utf8mb4($h){static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$h)){$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('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$l)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$l,false);echo"<p class='links'>\n";foreach(array('database'=>'Create database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$x=>$X){if(support($x))echo"<a href='".h(ME)."$x='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";if(isset(adminer()->plugins)&&is_array(adminer()->plugins)){echo"<p>".'Loaded plugins'.":\n<ul>\n";foreach(adminer()->plugins
|
||
as$mg){$Ng=new
|
||
\ReflectionObject($mg);echo"<li><b>".get_class($mg)."</b>".h(preg_match('~^/[\s*]+(.+)~',$Ng->getDocComment(),$B)?": $B[1]":"")."\n";}echo"</ul>\n";}$i=adminer()->databases();if($i){$hh=support("scheme");$hb=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>".'Database'.(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>":"")."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1'>".'Compute'."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i
|
||
as$j=>$T){$Yg=h(ME)."db=".urlencode($j);$t=h("Db-".$j);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"<th><a href='$Yg' id='$t'>".h($j)."</a>";$c=h(db_collation($j,$hb));echo"<td>".(support("database")?"<a href='$Yg".($hh?"&ns=":"")."&database=' title='".'Alter database'."'>$c</a>":$c),"<td align='right'><a href='$Yg&schema=' id='tables-".h($j)."' title='".'Database schema'."'>".($_GET["dbsize"]?$T:"?")."</a>","<td align='right' id='size-".h($j)."'>".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".'Selected'." <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='".'Drop'."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),input_token(),"</form>\n",script("tableCheck();");}}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('Schema'.": ".h($_GET["ns"]),'Invalid schema.',true);page_footer("ns");exit;}}}class
|
||
TmpFile{private$handler;var$size;function
|
||
__construct(){$this->handler=tmpfile();}function
|
||
write($wb){$this->size+=strlen($wb);fwrite($this->handler,$wb);}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"];$n=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,$n)),$M);$K=($I?$I->fetch_row():array());echo
|
||
driver()->value($K[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:'No tables.';$S=table_status1($a);$C=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($C!=""?$C:h($a)),$l);$Xg=array();foreach($n
|
||
as$x=>$m)$Xg+=$m["privileges"];adminer()->selectLinks($S,(isset($Xg["insert"])||!support("table")?"":null));$mb=$S["Comment"];if($mb!="")echo"<p class='nowrap'>".'Comment'.": ".h($mb)."\n";if($n)adminer()->tableStructurePrint($n,$S);if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$ed=foreign_keys($a);if($ed){echo"<table>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td></thead>\n";foreach($ed
|
||
as$C=>$p){echo"<tr title='".h($C)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$p["source"]))."</i>";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($p["table"]))."'>".($p["db"]!=""&&$p["db"]!=DB?"<b>".h($p["db"])."</b>.":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"<b>".h($p["ns"])."</b>.":"").h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$p["target"]))."</i>)","<td>".h($p["on_delete"]),"<td>".h($p["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($C)).'">'.'Alter'.'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}if(support("check")){echo"<h3 id='checks'>".'Checks'."</h3>\n";$Wa=driver()->checkConstraints($a);if($Wa){echo"<table>\n";foreach($Wa
|
||
as$x=>$X)echo"<tr title='".h($x)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($x))."'>".'Alter'."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.'Create check'."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$Fi=triggers($a);if($Fi){echo"<table>\n";foreach($Fi
|
||
as$x=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($x)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($x))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Zh=array();$ai=array();$ca=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$He,PREG_SET_ORDER);foreach($He
|
||
as$s=>$B){$Zh[$B[1]]=array($B[2],$B[3]);$ai[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$wi=0;$Ga=-1;$fh=array();$Mg=array();$xe=array();$sa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$pg=0;$fh[$R]["fields"]=array();foreach($sa[$R]as$m){$pg+=1.25;$m["pos"]=$pg;$fh[$R]["fields"][$m["field"]]=$m;}$fh[$R]["pos"]=($Zh[$R]?:array($wi,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$ve=$Ga;if(idx($Zh[$R],1)||idx($Zh[$X["table"]],1))$ve=min(idx($Zh[$R],1,0),idx($Zh[$X["table"]],1,0))-1;else$Ga-=.1;while($xe[(string)$ve])$ve-=.0001;$fh[$R]["references"][$X["table"]][(string)$ve]=array($X["source"],$X["target"]);$Mg[$X["table"]][$R][(string)$ve]=$X["target"];$xe[(string)$ve]=true;}}$wi=max($wi,$fh[$R]["pos"][0]+2.5+$pg);}echo'<div id="schema" style="height: ',$wi,'em;">
|
||
<script',nonce(),'>
|
||
qs(\'#schema\').onselectstart = () => false;
|
||
const tablePos = {',implode(",",$ai)."\n",'};
|
||
const em = qs(\'#schema\').offsetHeight / ',$wi,';
|
||
document.onmousemove = schemaMousemove;
|
||
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
|
||
</script>
|
||
';foreach($fh
|
||
as$C=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($C).'"><b>'.h($C)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X='<span'.type_class($m["type"]).' title="'.h($m["type"].($m["length"]?"($m[length])":"").($m["null"]?" NULL":'')).'">'.h($m["field"]).'</span>';echo"<br>".($m["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$gi=>$Og){foreach($Og
|
||
as$ve=>$Jg){$we=$ve-idx($Zh[$C],1);$s=0;foreach($Jg[0]as$Ch)echo"\n<div class='references' title='".h($gi)."' id='refs$ve-".($s++)."' style='left: $we"."em; top: ".$R["fields"][$Ch]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$we)."em;'></div></div>";}}foreach((array)$Mg[$C]as$gi=>$Og){foreach($Og
|
||
as$ve=>$e){$we=$ve-idx($Zh[$C],1);$s=0;foreach($e
|
||
as$fi)echo"\n<div class='references arrow' title='".h($gi)."' id='refd$ve-".($s++)."' style='left: $we"."em; top: ".$R["fields"][$fi]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$we)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($fh
|
||
as$C=>$R){foreach((array)$R["references"]as$gi=>$Og){foreach($Og
|
||
as$ve=>$Jg){$Xe=$wi;$Le=-10;foreach($Jg[0]as$x=>$Ch){$qg=$R["pos"][0]+$R["fields"][$Ch]["pos"];$rg=$fh[$gi]["pos"][0]+$fh[$gi]["fields"][$Jg[1][$x]]["pos"];$Xe=min($Xe,$qg,$rg);$Le=max($Le,$qg,$rg);}echo"<div class='references' id='refl$ve' style='left: $ve"."em; top: $Xe"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($Le-$Xe)."em;'></div></div>\n";}}}echo'</div>
|
||
<p class="links"><a href="',h(ME."schema=".urlencode($ca)),'" id="schema-link">Permanent link</a>
|
||
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$l){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"]);$Hc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$he=preg_match('~sql~',$_POST["format"]);if($he){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 = ''");}}$Ph=$_POST["db_style"];$i=array(DB);if(DB==""){$i=$_POST["databases"];if(is_string($i))$i=explode("\n",rtrim(str_replace("\r","",$i),"\n"));}foreach((array)$i
|
||
as$j){adminer()->dumpDatabase($j);if(connection()->select_db($j)){if($he&&preg_match('~CREATE~',$Ph)&&($h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1))){set_utf8mb4($h);if($Ph=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($j).";\n";echo"$h;\n";}if($he){if($Ph)echo
|
||
use_sql($j).";\n\n";$Tf="";if($_POST["types"]){foreach(types()as$t=>$U){$wc=type_values($t);if($wc)$Tf
|
||
.=($Ph!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($wc);\n\n";else$Tf
|
||
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$C=$K["ROUTINE_NAME"];$Zg=$K["ROUTINE_TYPE"];$h=create_routine($Zg,array("name"=>$C)+routine($K["SPECIFIC_NAME"],$Zg));set_utf8mb4($h);$Tf
|
||
.=($Ph!='DROP+CREATE'?"DROP $Zg IF EXISTS ".idf_escape($C).";;\n":"")."$h;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$h=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($h);$Tf
|
||
.=($Ph!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}echo($Tf&&JUSH=='sql'?"DELIMITER ;;\n\n$Tf"."DELIMITER ;\n\n":$Tf);}if($_POST["table_style"]||$_POST["data_style"]){$hj=array();foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));$Hb=(DB==""||in_array($C,(array)$_POST["data"]));if($R||$Hb){$ti=null;if($Hc=="tar"){$ti=new
|
||
TmpFile;ob_start(array($ti,'write'),1e5);}adminer()->dumpTable($C,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$hj[]=$C;elseif($Hb){$n=fields($C);adminer()->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($C));}if($he&&$_POST["triggers"]&&$R&&($Fi=trigger_sql($C)))echo"\nDELIMITER ;;\n$Fi\nDELIMITER ;\n";if($Hc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$C.csv",$ti);}elseif($he)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));if($R&&!is_view($S))echo
|
||
foreign_keys_sql($C);}}foreach($hj
|
||
as$gj)adminer()->dumpTable($gj,$_POST["table_style"],1);if($Hc=="tar")echo
|
||
pack("x512");}}}adminer()->dumpFooter();exit;}page_header('Export',$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
';$Lb=array('','USE','DROP+CREATE','CREATE');$bi=array('','DROP+CREATE','CREATE');$Ib=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Ib[]='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>".'Output'."<td>".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","<tr><th>".'Format'."<td>".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$Lb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],'User types'):"").(support("routine")?checkbox("routines",1,$K["routines"],'Routines'):"").(support("event")?checkbox("events",1,$K["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$bi,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$K["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$Ib,$K["data_style"]),'</table>
|
||
<p><input type="submit" value="Export">
|
||
',input_token(),'
|
||
<table>
|
||
',script("qsl('table').onclick = dumpClick;");$ug=array();if(DB!=""){$Ya=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Ya>".'Tables'."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Ya></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$hj="";$ci=tables_list();foreach($ci
|
||
as$C=>$U){$tg=preg_replace('~_.*~','',$C);$Ya=($a==""||$a==(substr($a,-1)=="%"?"$tg%":$C));$wg="<tr><td>".checkbox("tables[]",$C,$Ya,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$hj
|
||
.="$wg\n";else
|
||
echo"$wg<td align='right'><label class='block'><span id='Rows-".h($C)."'></span>".checkbox("data[]",$C,$Ya)."</label>\n";$ug[$tg]++;}echo$hj;if($ci)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"<thead><tr><th style='text-align: left;'>","<label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"").">".'Database'."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$i=adminer()->databases();if($i){foreach($i
|
||
as$j){if(!information_schema($j)){$tg=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$tg%",$j,"","block")."\n";$ug[$tg]++;}}}else
|
||
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
</form>
|
||
';$Uc=true;foreach($ug
|
||
as$x=>$X){if($x!=""&&$X>1){echo($Uc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$Uc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');echo'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";$I=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$nd=$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),($nd?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<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"])).'">'.'Edit'."</a>\n";if(!$nd||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();exit;}restart_session();$Dd=&get_session("queries");$Cd=&$Dd[DB];if(!$l&&$_POST["clear"]){$Cd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?'Import':'SQL command'),$l);if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$Gh=adminer()->importServerPath();$q=@fopen((file_exists($Gh)?$Gh:"compress.zlib://$Gh.gz"),"rb");$H=($q?fread($q,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($Qe=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Qe,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$Cg=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Cd||first(end($Cd))!=$Cg){restart_session();$Cd[]=array($Cg,time());set_session("queries",$Dd);stop_session();}}$Dh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Rb=";";$D=0;$qc=true;$g=connect(adminer()->credentials());if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$lb=0;$yc=array();$ag='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|-- |$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$xi=microtime(true);$ma=get_settings("adminer_import");$hc=adminer()->dumpFormat();unset($hc["sql"]);while($H!=""){if(!$D&&preg_match("~^$Dh*+DELIMITER\\s+(\\S+)~i",$H,$B)){$Rb=$B[1];$H=substr($H,strlen($B[0]));}else{preg_match('('.preg_quote($Rb)."\\s*|$ag)",$H,$B,PREG_OFFSET_CAPTURE,$D);list($gd,$pg)=$B[0];if(!$gd&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{if(!$gd&&rtrim($H)=="")break;$D=$pg+strlen($gd);if($gd&&rtrim($gd)!=$Rb){$Qa=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($pg>0&&strtolower($H[$pg-1])=="e"));$ig=($gd=='/*'?'\*/':($gd=='['?']':(preg_match('~^-- |^#~',$gd)?"\n":preg_quote($gd).($Qa?"|\\\\.":""))));while(preg_match("($ig|\$)s",$H,$B,PREG_OFFSET_CAPTURE,$D)){$dh=$B[0][0];if(!$dh&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{$D=$B[0][1]+strlen($dh);if(!$dh||$dh[0]!="\\")break;}}}else{$qc=false;$Cg=substr($H,0,$pg);$lb++;$wg="<pre id='sql-$lb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($Cg)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$Dh*+ATTACH\\b~i",$Cg,$B)){echo$wg,"<p class='error'>".'ATTACH queries are not supported.'."\n";$yc[]=" <a href='#sql-$lb'>$lb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$wg;ob_flush();flush();}$Lh=microtime(true);if(connection()->multi_query($Cg)&&$g&&preg_match("~^$Dh*+USE\\b~i",$Cg))$g->query($Cg);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$wg:""),"<p class='error'>".'Error in query'.(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$yc[]=" <a href='#sql-$lb'>$lb</a>";if($_POST["error_stops"])break
|
||
2;}else{$mi=" <span class='time'>(".format_time($Lh).")</span>".(strlen($Cg)<1000?" <a href='".h(ME)."sql=".urlencode(trim($Cg))."'>".'Edit'."</a>":"");$oa=connection()->affected_rows;$kj=($_POST["only_errors"]?"":driver()->warnings());$lj="warnings-$lb";if($kj)$mi
|
||
.=", <a href='#$lj'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$lj');","");$Fc=null;$Lf=null;$Gc="explain-$lb";if(is_object($I)){$z=$_POST["limit"];$Lf=print_select_result($I,$g,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$nf=$I->num_rows;echo"<p class='sql-footer'>".($nf?($z&&$nf>$z?sprintf('%d / ',$z):"").lang(array('%d row','%d rows'),$nf):""),$mi;if($g&&preg_match("~^($Dh|\\()*+SELECT\\b~i",$Cg)&&($Fc=explain($g,$Cg)))echo", <a href='#$Gc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Gc');","");$t="export-$lb";echo", <a href='#$t'>".'Export'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."<span id='$t' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$ma["output"])." ".html_select("format",$hc,$ma["format"]).input_hidden("query",$Cg)."<input type='submit' name='export' value='".'Export'."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$Dh*+(CREATE|DROP|ALTER)$Dh++(DATABASE|SCHEMA)\\b~i",$Cg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$oa)."$mi\n";}echo($kj?"<div id='$lj' class='hidden'>\n$kj</div>\n":"");if($Fc){echo"<div id='$Gc' class='hidden explain'>\n";print_select_result($Fc,$g,$Lf);echo"</div>\n";}}$Lh=microtime(true);}while(connection()->next_result());}$H=substr($H,$D);$D=0;}}}}if($qc)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$lb-count($yc))," <span class='time'>(".format_time($xi).")</span>\n";elseif($yc&&$lb>1)echo"<p class='error'>".'Error in query'.": ".implode("",$yc)."\n";}else
|
||
echo"<p class='error'>".upload_error($H)."\n";}echo'
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';$Dc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$Cg=$_GET["sql"];if($_POST)$Cg=$_POST["query"];elseif($_GET["history"]=="all")$Cg=$Cd;elseif($_GET["history"]!="")$Cg=idx($Cd[$_GET["history"]],0);echo"<p>";textarea("query",$Cg,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"$Dc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>";$td=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$td (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Dc":'File uploads are disabled.'),"</div></fieldset>\n";$Nd=adminer()->importServerPath();if($Nd)echo"<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>".h($Nd)."$td</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n";echo"<p>";}echo
|
||
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),'Show only errors')."\n",input_token();if(!isset($_GET["import"])&&$Cd){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Cd);$X;$X=prev($Cd)){$x=key($Cd);list($Cg,$mi,$lc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$mi)."'>".@date("H:i:s",$mi)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$Cg)))),80,"</code>").($lc?" <span class='time'>($lc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form>
|
||
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$Ri=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
|
||
as$C=>$m){if(!isset($m["privileges"][$Ri?"update":"insert"])||adminer()->fieldName($m)==""||$m["generated"])unset($n[$C]);}if($_POST&&!$l&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($Ri?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$w=indexes($a);$Mi=unique_array($_GET["where"],$w);$Fg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,'Item has been deleted.',driver()->delete($a,$Fg,$Mi?0:1));else{$O=array();foreach($n
|
||
as$C=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Ri){if(!$O)redirect($A);queries_redirect($A,'Item has been updated.',driver()->update($a,$O,$Fg,$Mi?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$I=driver()->insert($a,$O);$ue=($I?last_id($I):0);queries_redirect($A,sprintf('Item%s has been inserted.',($ue?" $ue":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($n
|
||
as$C=>$m){if(isset($m["privileges"]["select"])){$wa=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$M[]=($wa?"$wa AS ":"").idf_escape($C);}}$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)$l=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$n){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$x=>$X){if(!$Z)$K[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}edit_form($a,$n,$K,$Ri,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$cg=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$x)$cg[$x]=$x;$Lg=referencable_primary($a);$ed=array();foreach($Lg
|
||
as$Xh=>$m)$ed[str_replace("`","``",$Xh)."`".str_replace("`","``",$m["field"])]=$Xh;$Of=array();$S=array();if($a!=""){$Of=fields($a);$S=table_status1($a);if(count($S)<2)$l='No tables.';}$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"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$n=array();$sa=array();$Vi=false;$cd=array();$Nf=reset($Of);$qa=" FIRST";foreach($K["fields"]as$x=>$m){$p=$ed[$m["type"]];$Gi=($p!==null?$Lg[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$Ag=process_field($m,$Gi);$sa[]=array($m["orig"],$Ag,$qa);if(!$Nf||$Ag!==process_field($Nf,$Nf)){$n[]=array($m["orig"],$Ag,$qa);if($m["orig"]!=""||$qa)$Vi=true;}if($p!==null)$cd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$ed[$m["type"]],'source'=>array($m["field"]),'target'=>array($Gi["field"]),'on_delete'=>$m["on_delete"],));$qa=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Vi=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Nf=next($Of);if(!$Nf)$qa="";}}$eg="";if(support("partitioning")){if(isset($cg[$K["partition_by"]])){$Zf=array();foreach($K
|
||
as$x=>$X){if(preg_match('~^partition~',$x))$Zf[$x]=$X;}foreach($Zf["partition_names"]as$x=>$C){if($C==""){unset($Zf["partition_names"][$x]);unset($Zf["partition_values"][$x]);}}if($Zf!=get_partitions_info($a)){$fg=array();if($Zf["partition_by"]=='RANGE'||$Zf["partition_by"]=='LIST'){foreach($Zf["partition_names"]as$x=>$C){$Y=$Zf["partition_values"][$x];$fg[]="\n PARTITION ".idf_escape($C)." VALUES ".($Zf["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$eg
|
||
.="\nPARTITION BY $Zf[partition_by]($Zf[partition])";if($fg)$eg
|
||
.=" (".implode(",",$fg)."\n)";elseif($Zf["partitions"])$eg
|
||
.=" PARTITIONS ".(+$Zf["partitions"]);}}elseif(preg_match("~partitioned~",$S["Create_options"]))$eg
|
||
.="\nREMOVE PARTITIONING";}$Re='Table has been altered.';if($a==""){cookie("adminer_engine",$K["Engine"]);$Re='Table has been created.';}$C=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Re,alter_table($a,$C,(JUSH=="sqlite"&&($Vi||$cd)?$sa:$n),$cd,($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"]):""),$eg));}}page_header(($a!=""?'Alter table':'Create table'),$l,array("table"=>$a),h($a));if(!$_POST){$Ii=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Ii["int"])?"int":(isset($Ii["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($Of
|
||
as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$K["fields"][]=$m;}if(support("partitioning")){$K+=get_partitions_info($a);$K["partition_names"][]="";$K["partition_values"][]="";}}}$hb=collations();if(is_array(reset($hb)))$hb=call_user_func_array('array_merge',array_values($hb));$sc=driver()->engines();foreach($sc
|
||
as$rc){if(!strcasecmp($rc,$K["Engine"])){$K["Engine"]=$rc;break;}}echo'
|
||
<form action="" method="post" id="form">
|
||
<p>
|
||
';if(support("columns")||$a==""){echo'Table name'.": <input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($K["name"])."' autocapitalize='off'>\n",($sc?html_select("Engine",array(""=>"(".'engine'.")")+$sc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($hb)echo"<datalist id='collations'>".optionlist($hb)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".'collation'.")'>");echo"<input type='submit' value='".'Save'."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$hb,"TABLE",$ed);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",'Auto Increment'.": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),'Default values',"columnShow(this.checked, 5)","jsonly");$ob=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$ob,'Comment',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($ob?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($ob?"":" class='hidden'").'>'):''),'<p>
|
||
<input type="submit" value="Save">
|
||
';}echo'
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));if(support("partitioning")){$dg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",'Partition by',$K["partition_by"]);echo"<p>".html_select("partition_by",array(""=>"")+$cg,$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",'Partitions'.": <input type='number' name='partitions' class='size".($dg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($dg?"":" class='hidden'").">\n","<thead><tr><th>".'Partition name'."<th>".'Values'."</thead>\n";foreach($K["partition_names"]as$x=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($x==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($K["partition_values"],$x)).'">';echo"</table>\n</div></fieldset>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Sd=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Sd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Sd[]="SPATIAL";$w=indexes($a);$G=array();if(JUSH=="mongo"){$G=$w["_id_"];unset($Sd[0]);unset($w["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$Sd)){$e=array();$ze=array();$Tb=array();$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$Sb=idx($v["descs"],$x);$O[]=idf_escape($d).($y?"(".(+$y).")":"").($Sb?" DESC":"");$e[]=$d;$ze[]=($y?:null);$Tb[]=$Sb;}}$Ec=$w[$C];if($Ec){ksort($Ec["columns"]);ksort($Ec["lengths"]);ksort($Ec["descs"]);if($v["type"]==$Ec["type"]&&array_values($Ec["columns"])===$e&&(!$Ec["lengths"]||array_values($Ec["lengths"])===$ze)&&array_values($Ec["descs"])===$Tb){unset($w[$C]);continue;}}if($e)$b[]=array($v["type"],$C,$O);}}foreach($w
|
||
as$C=>$Ec)$b[]=array($Ec["type"],$C,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$b));}page_header('Indexes',$l,array("table"=>$a),h($a));$n=array_keys(fields($a));if($_POST["add"]){foreach($K["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$K["indexes"][$x]["columns"][]="";}$v=end($K["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($w
|
||
as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$K["indexes"]=$w;}$ze=(JUSH=="sql"||JUSH=="mssql");$yh=($_POST?$_POST["options"]:get_setting("index_options"));echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
<thead><tr>
|
||
<th id="label-type">Index Type
|
||
<th><input type="submit" class="wayoff">','Column'.($ze?"<span class='idxopts".($yh?"":" hidden")."'> (".'length'.")</span>":"");if($ze||support("descidx"))echo
|
||
checkbox("options",1,$yh,'Options',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Name
|
||
<th><noscript>',icon("plus","add[0]","+",'Add next'),'</noscript>
|
||
</thead>
|
||
';if($G){echo"<tr><td>PRIMARY<td>";foreach($G["columns"]as$x=>$d)echo
|
||
select_input(" disabled",$n,$d),"<label><input disabled type='checkbox'>".'descending'."</label> ";echo"<td><td>\n";}$ke=1;foreach($K["indexes"]as$v){if(!$_POST["drop_col"]||$ke!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$ke][type]",array(-1=>"")+$Sd,$v["type"],($ke==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"<td>";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"<span>".select_input(" name='indexes[$ke][columns][$s]' title='".'Column'."'",($n?array_combine($n,$n):$n),$d,"partial(".($s==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span class='idxopts".($yh?"":" hidden")."'>",($ze?"<input type='number' name='indexes[$ke][lengths][$s]' class='size' value='".h(idx($v["lengths"],$x))."' title='".'Length'."'>":""),(support("descidx")?checkbox("indexes[$ke][descs][$s]",1,idx($v["descs"],$x),'descending'):""),"</span> </span>";$s++;}echo"<td><input name='indexes[$ke][name]' value='".h($v["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td>".icon("cross","drop_col[$ke]","x",'Remove').script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$ke++;}echo'</table>
|
||
</div>
|
||
<p>
|
||
<input type="submit" value="Save">
|
||
',input_token(),'</form>
|
||
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$l&&!$_POST["add"]){$C=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),'Database has been renamed.',rename_database($C,$K["collation"]));}else{$i=explode("\n",str_replace("\r","",$C));$Qh=true;$te="";foreach($i
|
||
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$K["collation"]))$Qh=false;$te=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($te),'Database has been created.',$Qh);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$l,array(),h(DB));$hb=collations();$C=DB;if($_POST)$C=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$hb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$nd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$nd,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
',($_POST["add"]||strpos($C,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($C).'</textarea><br>':'<input name="name" autofocus value="'.h($C).'" data-maxlength="64" autocapitalize="off">')."\n".($hb?html_select("collation",array(""=>"(".'collation'.")")+$hb,$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="Save">
|
||
';if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo
|
||
icon("plus","add[0]","+",'Add next')."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,'Schema has been dropped.');else{$C=trim($K["name"]);$_
|
||
.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,'Schema has been created.');elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,'Schema has been altered.');else
|
||
redirect($_);}}page_header($_GET["ns"]!=""?'Alter schema':'Create schema',$l);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="Save">
|
||
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$_GET["ns"]))."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["call"])){$ba=($_GET["name"]?:$_GET["call"]);page_header('Call'.": ".h($ba),$l);$Zg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Od=array();$Tf=array();foreach($Zg["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT")$Tf[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Od[]=$s;}if(!$l&&$_POST){$Ra=array();foreach($Zg["fields"]as$x=>$m){$X="";if(in_array($x,$Od)){$X=process_input($m);if($X===false)$X="''";if(isset($Tf[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}$Ra[]=(isset($Tf[$x])?"@".idf_escape($m["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ba)."(".implode(", ",$Ra).")";$Lh=microtime(true);$I=connection()->multi_query($H);$oa=connection()->affected_rows;echo
|
||
adminer()->selectQuery($H,$Lh,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$g=connect(adminer()->credentials());if($g)$g->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$g);else
|
||
echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$oa)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($Tf)print_select_result(connection()->query("SELECT ".implode(", ",$Tf)));}}echo'
|
||
<form action="" method="post">
|
||
';if($Od){echo"<table class='layout'>\n";foreach($Od
|
||
as$x){$m=$Zg["fields"][$x];$C=$m["field"];echo"<tr><th>".adminer()->fieldName($m);$Y=idx($_POST["fields"],$C);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$C,""));echo"\n";}echo"</table>\n";}echo'<p>
|
||
<input type="submit" value="Call">
|
||
',input_token(),'</form>
|
||
|
||
<pre>
|
||
';function
|
||
pre_tr($dh){return
|
||
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($dh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
|
||
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($B){$Vc=pre_tr($B[2]);return"<table>\n".($B[1]?"<thead>$Vc</thead>\n":$Vc).pre_tr($B[4])."\n</table>";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Zg['comment']))));echo'</pre>
|
||
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$K=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$fi=array();foreach($K["source"]as$x=>$X)$fi[$x]=$K["target"][$x];$K["target"]=$fi;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $C"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($C==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Foreign key has been dropped.':($C!=""?'Foreign key has been altered.':'Foreign key has been created.')),$I);if(!$K["drop"])$l="$l<br>".'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.';}page_header('Foreign key',$l,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($C!=""){$ed=foreign_keys($a);$K=$ed[$C];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
|
||
<form action="" method="post">
|
||
';$Ch=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$Pf=get_schema();set_schema($K["ns"]);}$Kg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$fi=array_keys(fields(in_array($K["table"],$Kg)?$K["table"]:reset($Kg)));$_f="this.form['change-js'].value = '1'; this.form.submit();";echo"<p>".'Target table'.": ".html_select("table",$Kg,$K["table"],$_f)."\n";if(support("scheme")){$gh=array_filter(adminer()->schemas(),function($fh){return!preg_match('~^information_schema$~i',$fh);});echo'Schema'.": ".html_select("ns",$gh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$_f);if($K["ns"]!="")set_schema($Pf);}elseif(JUSH!="sqlite"){$Mb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Mb[]=$j;}echo'DB'.": ".html_select("db",$Mb,$K["db"]!=""?$K["db"]:$_GET["db"],$_f);}echo
|
||
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="Change"></noscript>
|
||
<table>
|
||
<thead><tr><th id="label-source">Source<th id="label-target">Target</thead>
|
||
';$ke=0;foreach($K["source"]as$x=>$X){echo"<tr>","<td>".html_select("source[".(+$x)."]",array(-1=>"")+$Ch,$X,($ke==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$x)."]",$fi,idx($K["target"],$x),"","label-target");$ke++;}echo'</table>
|
||
<p>
|
||
ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$K["on_delete"]),' ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$K["on_update"]),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="Save">
|
||
<noscript><p><input type="submit" name="add" value="Add column"></noscript>
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$Qf="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$Qf=strtoupper($P["Engine"]);}if($_POST&&!$l){$C=trim($K["name"]);$wa=" AS\n$K[select]";$A=ME."table=".urlencode($C);$Re='View has been altered.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$Qf=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$wa,$A,$Re);else{$hi=$C."_adminer_".uniqid();drop_create("DROP $Qf ".table($a),"CREATE $U ".table($C).$wa,"DROP $U ".table($C),"CREATE $U ".table($hi).$wa,"DROP $U ".table($hi),($_POST["drop"]?substr(ME,0,-1):$A),'View has been dropped.',$Re,'View has been created.',$a,$C);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($Qf!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'Alter view':'Create view'),$l,array("table"=>$a),h($a));echo'
|
||
<form action="" method="post">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],'Materialized view'):""),'<p>';textarea("select",$K["select"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$ce=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Mh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($K["INTERVAL_FIELD"],$ce)&&isset($Mh[$K["STATUS"]])){$eh="\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!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$eh.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$eh)."\n".$Mh[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$l);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>Name<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
|
||
<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
|
||
<tr><th title="datetime">End<td><input name="ENDS" value="',h($K["ENDS"]),'">
|
||
<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$ce,$K["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$Mh,$K["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" data-maxlength="64">
|
||
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table>
|
||
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($aa!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$aa));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["procedure"])){$ba=($_GET["name"]?:$_GET["procedure"]);$Zg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$l){$Mf=routine($_GET["procedure"],$Zg);$hi="$K[name]_adminer_".uniqid();foreach($K["fields"]as$x=>$m){if($m["field"]=="")unset($K["fields"][$x]);}drop_create("DROP $Zg ".routine_id($ba,$Mf),create_routine($Zg,$K),"DROP $Zg ".routine_id($K["name"],$K),create_routine($Zg,array("name"=>$hi)+$K),"DROP $Zg ".routine_id($hi,$K),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$ba,$K["name"]);}page_header(($ba!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($ba):(isset($_GET["function"])?'Create function':'Create procedure')),$l);if(!$_POST){if($ba=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$Zg);$K["name"]=$ba;}}$hb=get_vals("SHOW CHARACTER SET");sort($hb);$ah=routine_languages();echo($hb?"<datalist id='collations'>".optionlist($hb)."</datalist>":""),'
|
||
<form action="" method="post" id="form">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',($ah?'Language'.": ".html_select("language",$ah,$K["language"])."\n":""),'<input type="submit" value="Save">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
';edit_fields($K["fields"],$hb,$Zg);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",$K["returns"],$hb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
|
||
',script("editFields();"),'</div>
|
||
<p>';textarea("definition",$K["definition"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($ba!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$ba));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["sequence"])){$da=$_GET["sequence"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$C=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($da),$_,'Sequence has been dropped.');elseif($da=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,'Sequence has been created.');elseif($da!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($da)." RENAME TO ".idf_escape($C),$_,'Sequence has been altered.');else
|
||
redirect($_);}page_header($da!=""?'Alter sequence'.": ".h($da):'Create sequence',$l);if(!$K)$K["name"]=$da;echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
|
||
<input type="submit" value="Save">
|
||
';if($da!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$da))."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["type"])){$ea=$_GET["type"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ea),$_,'Type has been dropped.');else
|
||
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,'Type has been created.');}page_header($ea!=""?'Alter type'.": ".h($ea):'Create type',$l);if(!$K)$K["as"]="AS ";echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
';if($ea!=""){$Ii=driver()->types();$wc=type_values($Ii[$ea]);if($wc)echo"<code class='jush-".JUSH."'>ENUM (".h($wc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$ea))."\n";}else{echo'Name'.": <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='".'Save'."'>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$K=$_POST;if($K&&!$l){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$C",($K["drop"]?"":$K["clause"]));else{$I=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));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"]?'Check has been dropped.':($C!=""?'Check has been altered.':'Check has been created.')),$I);}page_header(($C!=""?'Alter check'.": ".h($C):'Create check'),$l,array("table"=>$a));if(!$K){$Za=driver()->checkConstraints($a);$K=array("name"=>$C,"clause"=>$Za[$C]);}echo'
|
||
<form action="" method="post">
|
||
<p>';if(JUSH!="sqlite")echo'Name'.': <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="Save">
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C="$_GET[name]";$Ei=trigger_options();$K=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$Ei["Timing"])&&in_array($_POST["Event"],$Ei["Event"])&&in_array($_POST["Type"],$Ei["Type"])){$xf=" ON ".table($a);$bc="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$xf:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($bc,$A,'Trigger has been dropped.');else{if($C!="")queries($bc);queries_redirect($A,($C!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($xf,$_POST)));if($C!="")queries(create_trigger($xf,$K+array("Type"=>reset($Ei["Type"]))));}}$K=$_POST;}page_header(($C!=""?'Alter trigger'.": ".h($C):'Create trigger'),$l,array("table"=>$a));echo'
|
||
<form action="" method="post" id="form">
|
||
<table class="layout">
|
||
<tr><th>Time<td>',html_select("Timing",$Ei["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$Ei["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$Ei["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$Ei["Type"],$K["Type"]),'</table>
|
||
<p>Name: <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="Save">
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$zg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$xb)$zg[$xb][$K["Privilege"]]=$K["Comment"];}$zg["Server Admin"]+=$zg["File access on server"];$zg["Databases"]["Create routine"]=$zg["Procedures"]["Create routine"];unset($zg["Procedures"]["Create routine"]);$zg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$zg["Columns"][$X]=$zg["Tables"][$X];unset($zg["Server Admin"]["Usage"]);foreach($zg["Tables"]as$x=>$X)unset($zg["Databases"][$x]);$gf=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$gf[$X]=(array)$gf[$X]+idx($_POST["grants"],$x,array());}$od=array();$vf="";if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$He,PREG_SET_ORDER)){foreach($He
|
||
as$X){if($X[1]!="USAGE")$od["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$od["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$B))$vf=$B[1];}}if($_POST&&!$l){$wf=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $wf",ME."privileges=",'User has been dropped.');else{$if=q($_POST["user"])."@".q($_POST["host"]);$gg=$_POST["pass"];if($gg!=''&&!$_POST["hashed"]&&!min_version(8)){$gg=get_val("SELECT PASSWORD(".q($gg).")");$l=!$gg;}$Ab=false;if(!$l){if($wf!=$if){$Ab=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $if IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($gg));$l=!$Ab;}elseif($gg!=$vf)queries("SET PASSWORD FOR $if = ".q($gg));}if(!$l){$Wg=array();foreach($gf
|
||
as$pf=>$nd){if(isset($_GET["grant"]))$nd=array_filter($nd);$nd=array_keys($nd);if(isset($_GET["grant"]))$Wg=array_diff(array_keys(array_filter($gf[$pf],'strlen')),$nd);elseif($wf==$if){$tf=array_keys((array)$od[$pf]);$Wg=array_diff($tf,$nd);$nd=array_diff($nd,$tf);unset($od[$pf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$pf,$B)&&(!grant("REVOKE",$Wg,$B[2]," ON $B[1] FROM $if")||!grant("GRANT",$nd,$B[2]," ON $B[1] TO $if"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($wf!=$if)queries("DROP USER $wf");elseif(!isset($_GET["grant"])){foreach($od
|
||
as$pf=>$Wg){if(preg_match('~^(.+)(\(.*\))?$~U',$pf,$B))grant("REVOKE",array_keys($Wg),$B[2]," ON $B[1] FROM $if");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$l);if($Ab)connection()->query("DROP USER $if");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$l,array("privileges"=>array('','Privileges')));$K=$_POST;if($K)$od=$gf;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$vf;if($vf!="")$K["hashed"]=true;$od[(DB==""||$od?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
|
||
<table class="layout">
|
||
<tr><th>Server<td><input name="host" data-maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
|
||
<tr><th>Username<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
|
||
<tr><th>Password<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"],'Hashed',"typePassword(this.form['pass'], this.checked);")),'</table>
|
||
|
||
',"<table class='odds'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($od
|
||
as$pf=>$nd){echo'<th>'.($pf!="*.*"?"<input name='objects[$s]' value='".h($pf)."' size='10' autocapitalize='off'>":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$xb=>$Sb){foreach((array)$zg[$xb]as$yg=>$mb){echo"<tr><td".($Sb?">$Sb<td":" colspan='2'").' lang="en" title="'.h($mb).'">'.h($yg);$s=0;foreach($od
|
||
as$pf=>$nd){$C="'grants[$s][".h(strtoupper($yg))."]'";$Y=$nd[strtoupper($yg)];if($xb=="Server Admin"&&$pf!=(isset($od["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$C><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else
|
||
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$C value='1'".($Y?" checked":"").($yg=="All privileges"?" id='grants-$s-all'>":">".($yg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$s-all'); };"))),"</label>";$s++;}}}echo"</table>\n",'<p>
|
||
<input type="submit" value="Save">
|
||
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',"$fa@$_GET[host]"));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$qe=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$qe++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$qe),$qe||!$_POST["kill"]);}}page_header('Process list',$l);echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap checkable odds">
|
||
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$s=-1;foreach(process_list()as$s=>$K){if(!$s){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
|
||
as$x=>$X)echo"<th>$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'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$x=>$X)echo"<td>".((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$x=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$x=="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)).'">'.'Clone'.'</a>':h($X));echo"\n";}echo'</table>
|
||
</div>
|
||
<p>
|
||
';if(support("kill"))echo($s+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";echo
|
||
input_token(),'</form>
|
||
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$ed=column_foreign_keys($a);$rf=$S["Oid"];$na=get_settings("adminer_import");$Xg=array();$e=array();$jh=array();$If=array();$li="";foreach($n
|
||
as$x=>$m){$C=adminer()->fieldName($m);$ef=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$C!=""){$e[$x]=$ef;if(is_shortable($m))$li=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$C!="")$jh[$x]=$ef;if(isset($m["privileges"]["order"])&&$C!="")$If[$x]=$ef;$Xg+=$m["privileges"];}list($M,$pd)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$pd=array_unique($pd);$ge=count($pd)<count($M);$Z=adminer()->selectSearchProcess($n,$w);$Hf=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Ni=>$K){$wa=convert_field($n[key($K)]);$M=array($wa?:idf_escape(key($K)));$Z[]=where_check($Ni,$n);$J=driver()->select($a,$M,$Z,$M);if($J)echo
|
||
first($J->fetch_row());}exit;}$G=$Pi=null;foreach($w
|
||
as$v){if($v["type"]=="PRIMARY"){$G=array_flip($v["columns"]);$Pi=($M?$G:array());foreach($Pi
|
||
as$x=>$X){if(in_array(idf_escape($x),$M))unset($Pi[$x]);}break;}}if($rf&&!$G){$G=$Pi=array($rf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($rf));}if($_POST&&!$l){$nj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Za=array();foreach($_POST["check"]as$Va)$Za[]=where_check($Va,$n);$nj[]="((".implode(") OR (",$Za)."))";}$nj=($nj?"\nWHERE ".implode(" AND ",$nj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$id=($M?implode(", ",$M):"*").convert_fields($e,$n,$M)."\nFROM ".table($a);$rd=($pd&&$ge?"\nGROUP BY ".implode(", ",$pd):"").($Hf?"\nORDER BY ".implode(", ",$Hf):"");$H="SELECT $id$nj$rd";if(is_array($_POST["check"])&&!$G){$Li=array();foreach($_POST["check"]as$X)$Li[]="(SELECT".limit($id,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$rd,1).")";$H=implode(" UNION ALL ",$Li);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$ed)){if($_POST["save"]||$_POST["delete"]){$I=true;$oa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$C=>$X){$X=process_input($n[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}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"]))||$ge){$I=($_POST["delete"]?driver()->delete($a,$nj):($_POST["clone"]?queries("INSERT $H$nj".driver()->insertReturning($a)):driver()->update($a,$O,$nj)));$oa=connection()->affected_rows;if(is_object($I))$oa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$mj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$I=($_POST["delete"]?driver()->delete($a,$mj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$mj)):driver()->update($a,$O,$mj,1)));if(!$I)break;$oa+=connection()->affected_rows;}}}$Re=lang(array('%d item has been affected.','%d items have been affected.'),$oa);if($_POST["clone"]&&$I&&$oa==1){$ue=last_id($I);if($ue)$Re=sprintf('Item%s has been inserted.'," $ue");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Re,$I);if(!$_POST["delete"]){$sg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$sg),$sg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+click on a value to modify it.';else{$I=true;$oa=0;foreach($_POST["val"]as$Ni=>$K){$O=array();foreach($K
|
||
as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Ni,$n),($ge||$G?0:1)," ");if(!$I)break;$oa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$oa),$I);}}elseif(!is_string($Sc=get_file("csv_file",true)))$l=upload_error($Sc);elseif(!preg_match('~~u',$Sc))$l='File must be in UTF-8 encoding.';else{save_settings(array("output"=>$na["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$ib=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Sc,$He);$oa=count($He[0]);driver()->begin();$ph=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($He[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$ph]*)$ph~",$X.$ph,$Ie);if(!$x&&!array_diff($Ie[1],$ib)){$ib=$Ie[1];$oa--;}else{$O=array();foreach($Ie[1]as$s=>$fb)$O[idf_escape($ib[$s])]=($fb==""&&$n[$ib[$s]]["null"]?"NULL":q(preg_match('~^".*"$~s',$fb)?str_replace('""','"',substr($fb,1,-1)):$fb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$G));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$oa),$I);driver()->rollback();}}}$Xh=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
|
||
page_header('Select'.": $Xh",$l);$O=null;if(isset($Xg["insert"])||!support("table")){$Zf=array();foreach((array)$_GET["where"]as$X){if(isset($ed[$X["col"]])&&count($ed[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Zf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$Zf?"&".http_build_query($Zf):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($n?".":": ".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,$jh,$w);adminer()->selectOrderPrint($Hf,$If,$w);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($li);adminer()->selectActionPrint($w);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$hd=get_val(count_rows($a,$Z,$ge,$pd));$E=floor(max(0,intval($hd)-1)/$z);}$kh=$M;$qd=$pd;if(!$kh){$kh[]="*";$yb=convert_fields($e,$n,$M);if($yb)$kh[]=substr($yb,2);}foreach($M
|
||
as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($wa=convert_field($m)))$kh[$x]="$wa AS $X";}if(!$ge&&$Pi){foreach($Pi
|
||
as$x=>$X){$kh[]=idf_escape($x);if($qd)$qd[]=idf_escape($x);}}$I=driver()->select($a,$kh,$Z,$qd,$Hf,$z,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$E)$I->seek($z*$E);$pc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($E&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$pd&&$ge&&JUSH=="sql")$hd=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'No rows.'."\n";else{$Ea=adminer()->backwardKeys($a,$Xh);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>".(!$pd&&$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")."'>".'Modify'."</a>");$ff=array();$kd=array();reset($M);$Hg=1;foreach($L[0]as$x=>$X){if(!isset($Pi[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$C=($m?adminer()->fieldName($m,$Hg):($X["fun"]?"*":h($x)));if($C!=""){$Hg++;$ff[$x]=$C;$d=idf_escape($x);$Gd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$Sb="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($x))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$jd=apply_sql_function($X["fun"],$C);$Bh=isset($m["privileges"]["order"])||$jd;echo($Bh?'<a href="'.h($Gd.($Hf[0]==$d||$Hf[0]==$x||(!$Hf&&$ge&&$pd[0]==$d)?$Sb:'')).'">'."$jd</a>":$jd),"<span class='column hidden'>";if($Bh)echo"<a href='".h($Gd.$Sb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]&&isset($m["privileges"]["where"]))echo'<a href="#fieldset-search" title="'.'Search'.'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($x)."');");echo"</span>";}$kd[$x]=$X["fun"];next($M);}}$ze=array();if($_GET["modify"]){foreach($L
|
||
as$K){foreach($K
|
||
as$x=>$X)$ze[$x]=max($ze[$x],min(40,strlen(utf8_decode($X))));}}echo($Ea?"<th>".'Relations':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$ed)as$df=>$K){$Mi=unique_array($L[$df],$w);if(!$Mi){$Mi=array();foreach($L[$df]as$x=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$x))$Mi[$x]=$X;}}$Ni="";foreach($Mi
|
||
as$x=>$X){$m=(array)$n[$x];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($X);}$Ni
|
||
.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($x));}echo"<tr>".(!$pd&&$M?"":"<td>".checkbox("check[]",substr($Ni,1),in_array(substr($Ni,1),(array)$_POST["check"])).($ge||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Ni)."' class='edit'>".'edit'."</a>"));foreach($K
|
||
as$x=>$X){if(isset($ff[$x])){$m=(array)$n[$x];$X=driver()->value($X,$m);if($X!=""&&(!isset($pc[$x])||$pc[$x]!=""))$pc[$x]=(is_mail($X)?$ff[$x]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($x).$Ni;if(!$_&&$X!==null){foreach((array)$ed[$x]as$p){if(count($ed[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$Ch)$_
|
||
.=where_link($s,$p["target"][$s],$L[$df][$Ch]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($x=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Mi))$_
|
||
.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Mi
|
||
as$me=>$W)$_
|
||
.=where_link($s++,$me,$W);}$X=select_value($X,$_,$m,$li);$t=h("val[$Ni][".bracket_escape($x)."]");$Y=idx(idx($_POST["val"],$Ni),bracket_escape($x));$kc=!is_array($K[$x])&&is_utf8($X)&&$L[$df][$x]==$K[$x]&&!$kd[$x]&&!$m["generated"];$ji=preg_match('~text|json|lob~',$m["type"]);echo"<td id='$t'".(preg_match(number_type(),$m["type"])&&($X=='<i>NULL</i>'||is_numeric(strip_tags($X)))?" class='number'":"");if(($_GET["modify"]&&$kc)||$Y!==null){$ud=h($Y!==null?$Y:$K[$x]);echo">".($ji?"<textarea name='$t' cols='30' rows='".(substr_count($K[$x],"\n")+1)."'>$ud</textarea>":"<input name='$t' value='$ud' size='$ze[$x]'>");}else{$Ce=strpos($X,"<i>…</i>");echo" data-text='".($Ce?2:($ji?1:0))."'".($kc?"":" data-warning='".h('Use edit link to modify this value.')."'").">$X";}}}if($Ea)echo"<td>";adminer()->backwardKeysPrint($Ea,$L[$df]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$E){$Cc=true;$hd=null;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$E)))$hd=($E?$E*$z:0)+count($L);elseif(JUSH!="sql"||!$ge){$hd=($ge?false:found_rows($S,$Z));if(intval($hd)<max(1e4,2*($E+1)*$z))$hd=first(slow_query(count_rows($a,$Z,$ge,$pd)));else$Cc=false;}}$Xf=($z&&($hd===false||$hd>$z||$E));if($Xf)echo(($hd===false?count($L)+1:$hd-$E*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" class="loadmore">'.'Load more data'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $z, '".'Loading'."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($Xf){$Ke=($hd===false?$E+(count($L)>=$z?2:1):floor(($hd-1)/$z));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".'Page'."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".'Page'."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" …":"");for($s=max(1,$E-4);$s<min($Ke,$E+5);$s++)echo
|
||
pagination($s,$E);if($Ke>0)echo($E+5<$Ke?" …":""),($Cc&&$hd!==false?pagination($Ke,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Ke'>".'last'."</a>");}else
|
||
echo"<legend>".'Page'."</legend>",pagination(0,$E).($E>1?" …":""),($E?pagination($E,$E):""),($Ke>$E?pagination($E+1,$E).($Ke>$E+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Whole result'."</legend>";$Yb=($Cc?"":"~ ").$hd;$Af="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Yb' : checked); selectCount('selected2', this.checked || !checked ? '$Yb' : checked);";echo
|
||
checkbox("all",1,0,($hd!==false?($Cc?"":"~ ").lang(array('%d row','%d rows'),$hd):""),$Af)."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
|
||
<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
|
||
</div></fieldset>
|
||
<fieldset><legend>Selected <span id="selected"></span></legend><div>
|
||
<input type="submit" name="edit" value="Edit">
|
||
<input type="submit" name="clone" value="Clone">
|
||
<input type="submit" name="delete" value="Delete">',confirm(),'</div></fieldset>
|
||
';$fd=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($fd['sql']);break;}}if($fd){print_fieldset("export",'Export'." <span id='selected2'></span>");$Uf=adminer()->dumpOutput();echo($Uf?html_select("output",$Uf,$na["output"])." ":""),html_select("format",$fd,$na["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($pc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<div>","<a href='#import'>".'Import'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$na["format"])," <input type='submit' name='import' value='".'Import'."'>","</span>","</div>";echo
|
||
input_token(),"</form>\n",(!$pd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?'Status':'Variables');$dj=($P?show_status():show_variables());if(!$dj)echo"<p class='message'>".'No rows.'."\n";else{echo"<table>\n";foreach($dj
|
||
as$K){echo"<tr>";$x=array_shift($K);echo"<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($x)."</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"){$Th=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($S[$x]));foreach($Th+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($S[$x]!=""){$X=format_number($S[$x]);if($X>=0)json_row("$x-$C",($x=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Th[$x]))$Th[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}elseif(array_key_exists($x,$S))json_row("$x-$C","?");}}}foreach($Th
|
||
as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$di=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($di&&!$l&&!$_POST["search"]){$I=true;$Re="";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"]);$Re='Tables have been truncated.';}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Re='Tables have been moved.';}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Re='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$Re='Tables have been dropped.';}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$Re
|
||
.="<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"]));$Re='Tables have been optimized.';}elseif(!$_POST["tables"])$Re='No tables.';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())$Re
|
||
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Re,$I);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$ci=tables_list();if(!$ci)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=driver()->convertOperator("LIKE %%");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>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.'Data Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.'Index Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.'Data Free'.doc_link(array('sql'=>'show-table-status.html')),'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.'Rows'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.'Comment'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$T=0;foreach($ci
|
||
as$C=>$U){$gj=($U!==null&&!preg_match('~table|sequence~i',$U));$t=h("Table-".$C);echo'<tr><td>'.checkbox(($gj?"views[]":"tables[]"),$C,in_array("$C",$di,true),"","","",$t),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($C)."' title='".'Show structure'."' id='$t'>".h($C).'</a>':h($C));if($gj)echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($C).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized view':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($C).'" title="'.'Select data'.'">?</a>';else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$x=>$_){$t=" id='$x-".h($C)."'";echo($_?"<td align='right'>".(support("table")||$x=="Rows"||(support("indexes")&&$x!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($C)."'$t title='$_[1]'>?</a>":"<span$t>?</span>"):"<td id='$x-".h($C)."'>");}$T++;}echo(support("comment")?"<td id='Comment-".h($C)."'>":""),"\n";}echo"<tr><td><th>".sprintf('%d in total',count($ci)),"<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$x)echo"<td align='right' id='sum-$x'>";echo"\n","</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$aj="<input type='submit' value='".'Vacuum'."'> ".on_help("'VACUUM'");$Df="<input type='submit' name='optimize' value='".'Optimize'."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".(JUSH=="sqlite"?$aj."<input type='submit' name='check' value='".'Check'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$aj.$Df:(JUSH=="sql"?"<input type='submit' value='".'Analyze'."'> ".on_help("'ANALYZE TABLE'").$Df."<input type='submit' name='check' value='".'Check'."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".'Repair'."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".'Truncate'."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".'Drop'."'>".on_help("'DROP TABLE'").confirm()."\n";$i=(support("scheme")?adminer()->schemas():adminer()->databases());if(count($i)!=1&&JUSH!="sqlite"){$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'> ".checkbox("overwrite",1,$_POST["overwrite"],'overwrite'):""),"\n";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")." }"),input_token(),"</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo"<p class='links'><a href='".h(ME)."create='>".'Create table'."</a>\n",(support("view")?"<a href='".h(ME)."view='>".'Create view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$bh=routines();if($bh){echo"<table class='odds'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td></thead>\n";foreach($bh
|
||
as$K){$C=($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"]).$C).'">'.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"]).$C).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".'Sequences'."</h3>\n";$sh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($sh){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($sh
|
||
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='>".'Create sequence'."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".'User types'."</h3>\n";$Yi=types();if($Yi){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($Yi
|
||
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='>".'Create type'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($L
|
||
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?'At given time'."<td>".$K["Execute at"]:'Every'." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.'Alter'.'</a>';echo"</table>\n";$Ac=get_val("SELECT @@event_scheduler");if($Ac&&$Ac!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Ac)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($ci)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer(); |