credentials();$J=Driver::connect($Hb[0],$Hb[1],$Hb[2]);return(is_object($J)?$J:null);}function idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$Le=substr($v,-1);return str_replace($Le.$Le,$Le,substr($v,1,-1));}function q($Q){return connection()->quote($Q);}function escape_string($X){return substr(q($X),1,-1);}function idx($xa,$y,$l=null){return($xa&&array_key_exists($y,$xa)?$xa[$y]:$l);}function number($X){return preg_replace('~[^0-9]+~','',$X);}function number_type(){return'((?$W){unset($eh[$y][$Ce]);if(is_array($W)){$eh[$y][stripslashes($Ce)]=$W;$eh[]=&$eh[$y][stripslashes($Ce)];}else$eh[$y][stripslashes($Ce)]=($cd?$W:stripslashes($W));}}}}function bracket_escape($v,$Ea=false){static$gj=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return strtr($v,($Ea?array_flip($gj):$gj));}function min_version($Pj,$af="",$h=null){$h=connection($h);$Zh=$h->server_info;if($af&&preg_match('~([\d.]+)-MariaDB~',$Zh,$A)){$Zh=$A[1];$Pj=$af;}return$Pj&&version_compare($Zh,$Pj)>=0;}function charset(Db$g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function ini_bool($me){$X=ini_get($me);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function ini_bytes($me){$X=ini_get($me);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function set_password($Oj,$N,$V,$F){$_SESSION["pwds"][$Oj][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function get_val($H,$n=0,$vb=null){$vb=connection($vb);$I=$vb->query($H);if(!is_object($I))return false;$K=$I->fetch_row();return($K?$K[$n]:false);}function get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function get_key_vals($H,$h=null,$ci=true){$h=connection($h);$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($ci)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function get_rows($H,$h=null,$m="

"){$vb=connection($h);$J=array();$I=$vb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$h&&$m&&(defined('Adminer\PAGE_HEADER')||$m=="-- "))echo$m.error()."\n";return$J;}function unique_array($K,array$x){foreach($x as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$J=array();foreach($w["columns"]as$y){if(!isset($K[$y]))continue 2;$J[$y]=$K[$y];}return$J;}}}function escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return idf_escape($y);}function where(array$Z,array$o=array()){$J=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,true);$d=escape_key($y);$n=idx($o,$y,array());$Zc=$n["type"];$J[]=$d.(JUSH=="sql"&&$Zc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^json~',$Zc)?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Zc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($n,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Zc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$y)$J[]=escape_key($y)." IS NULL";return implode(" AND ",$J);}function where_check($X,array$o=array()){parse_str($X,$Ya);remove_slashes(array(&$Ya));return where($Ya,$o);}function where_link($t,$d,$Y,$bg="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$bg:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function convert_fields(array$e,array$o,array$M=array()){$J="";foreach($e as$y=>$X){if($M&&!in_array(idf_escape($y),$M))continue;$ya=convert_field($o[$y]);if($ya)$J .=", $ya AS ".idf_escape($y);}return$J;}function cookie($B,$Y,$Te=2592000){header("Set-Cookie: $B=".urlencode($Y).($Te?"; expires=".gmdate("D, d M Y H:i:s",time()+$Te)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function get_settings($Db){parse_str($_COOKIE[$Db],$di);return$di;}function get_setting($y,$Db="adminer_settings",$l=null){return idx(get_settings($Db),$y,$l);}function save_settings(array$di,$Db="adminer_settings"){$Y=http_build_query($di+get_settings($Db));cookie($Db,$Y);$_COOKIE[$Db]=$Y;}function restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function stop_session($kd=false){$Gj=ini_bool("session.use_cookies");if(!$Gj||$kd){session_write_close();if($Gj&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function auth_url($Oj,$N,$V,$k=null){$Cj=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($k!==null?"db|":"").($Oj=='mssql'||$Oj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Cj,$A);return"$A[1]?".(sid()?SID."&":"").($Oj!="server"||$N!=""?urlencode($Oj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($k!=""?"&db=".urlencode($k):"").($A[2]?"&$A[2]":"");}function is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function redirect($We,$pf=null){if($pf!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($We!==null?$We:$_SERVER["REQUEST_URI"]))][]=$pf;}if($We!==null){if($We=="")$We=".";header("Location: $We");exit;}}function query_redirect($H,$We,$pf,$nh=true,$Lc=true,$Uc=false,$Ti=""){if($Lc){$si=microtime(true);$Uc=!connection()->query($H);$Ti=format_time($si);}$mi=($H?adminer()->messageQuery($H,$Ti,$Uc):"");if($Uc){adminer()->error .=error().$mi.script("messagesPrint();")."
";return false;}if($nh)redirect($We,$pf.$mi);return true;}class Queries{static$queries=array();static$start=0;}function queries($H){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return connection()->query($H);}function apply_queries($H,array$T,$Hc='Adminer\table'){foreach($T as$R){if(!queries("$H ".$Hc($R)))return false;}return true;}function queries_redirect($We,$pf,$nh){$ih=implode("\n",Queries::$queries);$Ti=format_time(Queries::$start);return query_redirect($ih,$We,$pf,$nh,false,!$nh,$Ti);}function format_time($si){return lang(0,max(0,microtime(true)-$si));}function relative_uri(){return str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function remove_from_uri($yg=""){return substr(preg_replace("~(?<=[?&])($yg".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function get_file($y,$Tb=false,$Zb=""){$bd=$_FILES[$y];if(!$bd)return null;foreach($bd as$y=>$X)$bd[$y]=(array)$X;$J='';foreach($bd["error"]as$y=>$m){if($m)return$m;$B=$bd["name"][$y];$bj=$bd["tmp_name"][$y];$_b=file_get_contents($Tb&&preg_match('~\.gz$~',$B)?"compress.zlib://$bj":$bj);if($Tb){$si=substr($_b,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$si))$_b=iconv("utf-16","utf-8",$_b);elseif($si=="\xEF\xBB\xBF")$_b=substr($_b,3);}$J .=$_b;if($Zb)$J .=(preg_match("($Zb\\s*\$)",$_b)?"":$Zb)."\n\n";}return$J;}function upload_error($m){$kf=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?lang(1).($kf?" ".lang(2,$kf):""):lang(3));}function repeat_pattern($Kg,$Re){return str_repeat("$Kg{0,65535}",$Re/65535)."$Kg{0,".($Re%65535)."}";}function is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function format_number($X){return strtr(number_format($X,0,".",lang(4)),preg_split('~~u',lang(5),-1,PREG_SPLIT_NO_EMPTY));}function friendly_url($X){return preg_replace('~\W~i','-',$X);}function table_status1($R,$Vc=false){$J=table_status($R,$Vc);return($J?reset($J):array("Name"=>$R));}function column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$q){foreach($q["source"]as$X)$J[$X][]=$q;}return$J;}function fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$B=bracket_escape($y,true);$J[$B]=array("field"=>$B,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($y==driver()->primary),);}return$J;}function dump_headers($Sd,$_f=false){$J=adminer()->dumpHeaders($Sd,$_f);$ug=$_POST["output"];if($ug!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Sd).".$J".($ug!="file"&&preg_match('~^[0-9a-z]+$~',$ug)?".$ug":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function dump_csv(array$K){foreach($K as$y=>$X){if(preg_match('~["\n,;\t]|^0.|\.\d*0$~',$X)||$X==="")$K[$y]='"'.str_replace('"','""',$X).'"';}echo implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function apply_sql_function($s,$d){return($s?($s=="unixepoch"?"DATETIME($d, '$s')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$d)"):$d);}function get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$p=@tempnam("","");if(!$p)return'';$J=dirname($p);unlink($p);}}return$J;}function file_open_lock($p){if(is_link($p))return;$r=@fopen($p,"c+");if(!$r)return;@chmod($p,0660);if(!flock($r,LOCK_EX)){fclose($r);return;}return$r;}function file_write_unlock($r,$Nb){rewind($r);fwrite($r,$Nb);ftruncate($r,strlen($Nb));file_unlock($r);}function file_unlock($r){flock($r,LOCK_UN);fclose($r);}function first(array$xa){return reset($xa);}function password_file($i){$p=get_temp_dir()."/adminer.key";if(!$i&&!file_exists($p))return'';$r=file_open_lock($p);if(!$r)return'';$J=stream_get_contents($r);if(!$J){$J=rand_string();file_write_unlock($r,$J);}else file_unlock($r);return$J;}function rand_string(){return md5(uniqid(strval(mt_rand()),true));}function select_value($X,$_,array$n,$Si){if(is_array($X)){$J="";foreach($X as$Ce=>$W)$J .="".($X!=array_values($X)?"".h($Ce):"")."".select_value($W,$_,$n,$Si);return"$J
";}if(!$_)$_=adminer()->selectLink($X,$n);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=adminer()->editVal($X,$n);if($J!==null){if(!is_utf8($J))$J="\0";elseif($Si!=""&&is_shortable($n))$J=shorten_utf8($J,max(0,+$Si));else$J=h($J);}return adminer()->selectVal($J,$_,$n,$X);}function is_blob(array$n){return preg_match('~blob|bytea|raw|file~',$n["type"])&&!in_array($n["type"],idx(driver()->structuredTypes(),lang(6),array()));}function is_mail($vc){$za='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ic='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Kg="$za+(\\.$za+)*@($ic?\\.)+$ic";return is_string($vc)&&preg_match("(^$Kg(,\\s*$Kg)*\$)i",$vc);}function is_url($Q){$ic='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return preg_match("~^(https?)://($ic?\\.)+$ic(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function is_shortable(array$n){return preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea|hstore~',$n["type"]);}function host_port($N){return(preg_match('~^(\[(.+)]|([^:]+)):([^:]+)$~',$N,$A)?array($A[2].$A[3],$A[4]):array($N,''));}function count_rows($R,array$Z,$we,array$yd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($we&&(JUSH=="sql"||count($yd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$yd).")$H":"SELECT COUNT(*)".($we?" FROM (SELECT 1$H GROUP BY ".implode(", ",$yd).") x":$H));}function slow_query($H){$k=adminer()->database();$Ui=adminer()->queryTimeout();$hi=driver()->slowQuery($H,$Ui);$h=null;if(!$hi&&support("kill")){$h=connect();if($h&&($k==""||$h->select_db($k))){$Fe=get_val(connection_id(),0,$h);echo script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Fe&token=".get_token()."'); }, 1000 * $Ui);");}}ob_flush();flush();$J=@get_key_vals(($hi?:$H),$h,false);if($h){echo script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function get_token(){$lh=rand(1,1e6);return($lh^$_SESSION["token"]).":$lh";}function verify_token(){list($cj,$lh)=explode(":",$_POST["token"]);return($lh^$_SESSION["token"])==$cj;}function lzw_decompress($Ka){$ec=256;$La=8;$ib=array();$yh=0;$zh=0;for($t=0;$t=$La){$zh-=$La;$ib[]=$yh>>$zh;$yh&=(1<<$zh)-1;$ec++;if($ec>>$La)$La++;}}$dc=range("\0","\xFF");$J="";$Yj="";foreach($ib as$t=>$hb){$uc=$dc[$hb];if(!isset($uc))$uc=$Yj.$Yj[0];$J .=$uc;if($t)$dc[]=$Yj.$uc[0];$Yj=$uc;}return$J;}function script($ji,$fj="\n"){return"$ji$fj";}function script_src($Dj,$Wb=false){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}function input_hidden($B,$Y=""){return"\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","
",$Q);}function checkbox($B,$Y,$bb,$He="",$ag="",$fb="",$Je=""){$J="".($ag?script("qsl('input').onclick = function () { $ag };",""):"");return($He!=""||$fb?"$J".h($He)."":$J);}function optionlist($fg,$Rh=null,$Hj=false){$J="";foreach($fg as$Ce=>$W){$gg=array($Ce=>$W);if(is_array($W)){$J .='';$gg=$W;}foreach($gg as$y=>$X)$J .=''.h($X);if(is_array($W))$J .='';}return$J;}function html_select($B,array$fg,$Y="",$Zf="",$Je=""){static$He=0;$Ie="";if(!$Je&&substr($fg[""],0,1)=="("){$He++;$Je="label-$He";$Ie="

","$Qe",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"","
\n";}function selectSearchPrint(array$Z,array$e,array$x){print_fieldset("search",lang(56),$Z);foreach($x as$t=>$w){if($w["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"
\n";}$Va="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"
".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(57).")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$Va),"",script("mixin(qsl('input'), {oninput: function () { $Va }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function selectOrderPrint(array$hg,array$e,array$x){print_fieldset("sort",lang(58),$hg);$t=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"
".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$y]),lang(59))."
\n";$t++;}}echo"
".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(59))."
\n","\n";}function selectLimitPrint($z){echo"
".lang(60)."
","",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function selectLengthPrint($Si){if($Si!==null)echo"
".lang(61)."
","","
\n";}function selectActionPrint(array$x){echo"
".lang(62)."
",""," ","\n","const indexColumns = ";$e=array();foreach($x as$w){$Lb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$Lb)$e[$Lb]=1;}$e[""]=1;foreach($e as$y=>$X)json_row($y);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function selectCommandPrint(){return!information_schema(DB);}function selectImportPrint(){return!information_schema(DB);}function selectEmailPrint(array$wc,array$e){}function selectColumnsProcess(array$e,array$x){$M=array();$yd=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$yd[]=$M[$y];}}return array($M,$yd);}function selectSearchProcess(array$o,array$x){$J=array();foreach($x as$t=>$w){if($w["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$t)!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$y=>$X){$jb=$X["col"];if("$jb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$ub=array();foreach(($jb!=""?array($jb=>$o[$jb]):$o)as$B=>$n){$Wg="";$tb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Yd=process_length($X["val"]);$tb .=" ".($Yd!=""?$Yd:"(NULL)");}elseif($X["op"]=="SQL")$tb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$tb=" $A[1] ".adminer()->processInput($n,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Wg="$X[op](".q($X["val"]).", ";$tb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$tb .=" ".adminer()->processInput($n,$X["val"]);if($jb!=""||(isset($n["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$n["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$n["type"]))&&(!preg_match('~date|timestamp~',$n["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$ub[]=$Wg.driver()->convertSearch(idf_escape($B),$X,$n).$tb;}$J[]=(count($ub)==1?$ub[0]:($ub?"(".implode(" OR ",$ub).")":"1 = 0"));}}return$J;}function selectOrderProcess(array$o,array$x){$J=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$J;}function selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function selectEmailProcess(array$Z,array$md){return false;}function selectQueryBuild(array$M,array$Z,array$yd,array$hg,$z,$D){return"";}function messageQuery($H,$Ti,$Uc=false){restart_session();$Ld=&get_session("queries");if(!idx($Ld,$_GET["db"]))$Ld[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Ld[$_GET["db"]][]=array($H,time(),$Ti);$oi="sql-".count($Ld[$_GET["db"]]);$J="".lang(64)." 🗐\n";if(!$Uc&&($Uj=driver()->warnings())){$u="warnings-".count($Ld[$_GET["db"]]);$J="".lang(46).", $J\n";}return" ".@date("H:i:s").""." $J';}function editRowPrint($R,array$o,$K,$_j){}function editFunctions(array$n){$J=($n["null"]?"NULL/":"");$_j=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$y=>$td){if(!$y||(!isset($_GET["call"])&&$_j)){foreach($td as$Kg=>$X){if(!$Kg||preg_match("~$Kg~",$n["type"]))$J .="/$X";}}if($y&&$td&&!preg_match('~set|bool~',$n["type"])&&!is_blob($n))$J .="/SQL";}if($n["auto_increment"]&&!$_j)$J=lang(51);return explode("/",$J);}function editInput($R,array$n,$_a,$Y){if($n["type"]=="enum")return(isset($_GET["select"])?" ":"").enum_input("radio",$_a,$n,$Y,"NULL");return"";}function editHint($R,array$n,$Y){return"";}function processInput(array$n,$Y,$s=""){if($s=="SQL")return$Y;$B=$n["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$s))$J="$s()";elseif(preg_match('~^current_(date|timestamp)$~',$s))$J=$s;elseif(preg_match('~^([+-]|\|\|)$~',$s))$J=idf_escape($B)." $s $J";elseif(preg_match('~^[+-] interval$~',$s))$J=idf_escape($B)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$J="$s(".idf_escape($B).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$J="$s($J)";return unconvert_field($n,$J);}function dumpOutput(){$J=array('text'=>lang(65),'file'=>lang(66));if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function dumpDatabase($k){}function dumpTable($R,$wi,$_e=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($wi)dump_csv(array_keys(fields($R)));}else{if($_e==2){$o=array();foreach(fields($R)as$B=>$n)$o[]=idf_escape($B)." $n[full_type]";$i="CREATE TABLE ".table($R)." (".implode(", ",$o).")";}else$i=create_sql($R,$_POST["auto_increment"],$wi);set_utf8mb4($i);if($wi&&$i){if($wi=="DROP+CREATE"||$_e==1)echo"DROP ".($_e==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($_e==1)$i=remove_definer($i);echo"$i;\n\n";}}}function dumpData($R,$wi,$H){if($wi){$hf=(JUSH=="sqlite"?0:1048576);$o=array();$Ud=false;if($_POST["format"]=="sql"){if($wi=="TRUNCATE+INSERT")echo truncate_sql($R).";\n";$o=fields($R);if(JUSH=="mssql"){foreach($o as$n){if($n["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Ud=true;break;}}}}$I=connection()->query($H,1);if($I){$pe="";$Pa="";$Ee=array();$ud=array();$yi="";$Xc=($R!=''?'fetch_assoc':'fetch_row');$Eb=0;while($K=$I->$Xc()){if(!$Ee){$Mj=array();foreach($K as$X){$n=$I->fetch_field();if(idx($o[$n->name],'generated')){$ud[$n->name]=true;continue;}$Ee[]=$n->name;$y=idf_escape($n->name);$Mj[]="$y = VALUES($y)";}$yi=($wi=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Mj):"").";\n";}if($_POST["format"]!="sql"){if($wi=="table"){dump_csv($Ee);$wi="INSERT";}dump_csv($K);}else{if(!$pe)$pe="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Ee)).") VALUES";foreach($K as$y=>$X){if($ud[$y]){unset($K[$y]);continue;}$n=$o[$y];$K[$y]=($X!==null?unconvert_field($n,preg_match(number_type(),$n["type"])&&!preg_match('~\[~',$n["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Hh=($hf?"\n":" ")."(".implode(",\t",$K).")";if(!$Pa)$Pa=$pe.$Hh;elseif(JUSH=='mssql'?$Eb%1000!=0:strlen($Pa)+4+strlen($Hh)+strlen($yi)<$hf)$Pa .=",$Hh";else{echo$Pa.$yi;$Pa=$pe.$Hh;}}$Eb++;}if($Pa)echo$Pa.$yi;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Ud)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function dumpFilename($Sd){return friendly_url($Sd!=""?$Sd:(SERVER?:"localhost"));}function dumpHeaders($Sd,$_f=false){$ug=$_POST["output"];$Pc=(preg_match('~sql~',$_POST["format"])?"sql":($_f?"tar":"csv"));header("Content-Type: ".($ug=="gz"?"application/x-gzip":($Pc=="tar"?"application/x-tar":($Pc=="sql"||$ug!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($ug=="gz"){ob_start(function($Q){return gzencode($Q);},1e6);}return$Pc;}function dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function importServerPath(){return"adminer.sql";}function homepage(){echo'

".adminer()->name()." ".VERSION;$Hf=$_COOKIE["adminer_version"];echo" ".(version_compare(VERSION,$Hf)<0?h($Hf):"")."","

\n";switch_lang();if($wf=="auth"){$ug="";foreach((array)$_SESSION["pwds"]as$Oj=>$ai){foreach($ai as$N=>$Jj){$B=h(get_setting("vendor-$Oj-$N")?:get_driver($Oj));foreach($Jj as$V=>$F){if($F!==null){$Sb=$_SESSION["db"][$Oj][$N][$V];foreach(($Sb?array_keys($Sb):array(""))as$k)$ug .="
  • ($B) ".h("$V@".($N!=""?adminer()->serverName($N):"").($k!=""?" - $k":""))."\n";}}}}if($ug)echo"
      \n$ug
    \n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$wf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($wf);$ka=array();if(DB==""||!$wf){if(support("sql")){$ka[]="".lang(64)."";$ka[]="".lang(75)."";}$ka[]="".lang(76)."";}$Zd=$_GET["ns"]!==""&&!$wf&&DB!="";if($Zd)$ka[]='".lang(77)."";echo($ka?"

    ".lang(11)."

    \n";}}}function syntaxHighlighting(array$T){echo script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.4.1",true);if(support("sql")){echo"\n";if($T){$Ve=array();foreach($T as$R=>$U)$Ve[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$Ve).')\b/g',false);if(support('routine')){foreach(routines()as$K)json_row(js_escape(ME).'function='.urlencode($K["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($K["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Ii=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$o){foreach($o as$n)$Ii[$R][]=$n["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Ii)."); });\n";}}echo"\n";}echo script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function databasesPrint($wf){$j=adminer()->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo"
    \n

    \n";hidden_fields_get();$Qb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"","\n";if(support("scheme")){if($wf!="db"&&DB!=""&&connection()->select_db(DB)){echo"
    ";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"

    \n";}function tablesPrint(array$T){echo"
      ".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T as$R=>$P){$R="$R";$B=adminer()->tableName($P);if($B!=""&&!$P["partition"])echo'
    • ".lang(80)." ",(support("table")||support("indexes")?'$B":"$B")."\n";}echo"
    \n";}function processList(){return process_list();}function killProcess($u){return kill_process($u);}}class Plugins{private static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function __construct($Pg){if($Pg===null){$Pg=array();$Ja="adminer-plugins";if(is_dir($Ja)){foreach(glob("$Ja/*.php")as$p)$ae=include_once"./$p";}$Kd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ja.php")){$ae=include_once"./$Ja.php";if(is_array($ae)){foreach($ae as$Og)$Pg[get_class($Og)]=$Og;}else$this->error .=lang(81,"$Ja.php",$Kd)."
    ";}foreach(get_declared_classes()as$fb){if(!$Pg[$fb]&&preg_match('~^Adminer\w~i',$fb)){$sh=new \ReflectionClass($fb);$zb=$sh->getConstructor();if($zb&&$zb->getNumberOfRequiredParameters())$this->error .=lang(82,$Kd,"$fb","$Ja.php")."
    ";else$Pg[$fb]=new$fb;}}}$this->plugins=$Pg;$na=new Adminer;$Pg[]=$na;$sh=new \ReflectionObject($na);foreach($sh->getMethods()as$uf){foreach($Pg as$Og){$B=$uf->getName();if(method_exists($Og,$B))$this->hooks[$B][]=$Og;}}}function __call($B,array$zg){$wa=array();foreach($zg as$y=>$X)$wa[]=&$zg[$y];$J=null;foreach($this->hooks[$B]as$Og){$Y=call_user_func_array(array($Og,$B),$wa);if($Y!==null){if(!self::$append[$B])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract class Plugin{protected$translations=array();function description(){return$this->lang('');}function screenshot(){return"";}protected function lang($v,$Nf=null){$wa=func_get_args();$wa[0]=idx($this->translations[LANG],$v)?:$v;return call_user_func_array('Adminer\lang_format',$wa);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new Plugins(null):new Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class Db extends \MySQLi{static$instance;var$extension="MySQLi",$flavor='';function __construct(){parent::init();}function attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Od,$Qg)=host_port($N);$ri=adminer()->connectSsl();if($ri)$this->ssl_set($ri['key'],$ri['cert'],$ri['ca'],'','');$J=@$this->real_connect(($N!=""?$Od:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),null,(is_numeric($Qg)?intval($Qg):ini_get("mysqli.default_port")),(is_numeric($Qg)?null:$Qg),($ri?($ri['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($J?'':$this->error);}function set_charset($Xa){if(parent::set_charset($Xa))return true;parent::set_charset('utf8');return$this->query("SET NAMES $Xa");}function next_result(){return self::more_results()&&parent::next_result();}function quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class Db extends SqlDb{private$link;function attach($N,$V,$F){if(ini_bool("mysql.allow_local_infile"))return lang(83,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),($N.$V!=""?$V:ini_get("mysql.default_user")),($N.$V.$F!=""?$F:ini_get("mysql.default_password")),true,131072);if(!$this->link)return mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function set_charset($Xa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Xa,$this->link))return true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Xa");}function quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function select_db($Pb){return mysql_select_db($Pb,$this->link);}function query($H,$sj=false){$I=@($sj?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return true;}return new Result($I);}}class Result{var$num_rows;private$result;private$offset=0;function __construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function fetch_assoc(){return mysql_fetch_assoc($this->result);}function fetch_row(){return mysql_fetch_row($this->result);}function fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function __destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class Db extends PdoDb{var$extension="PDO_MySQL";function attach($N,$V,$F){$fg=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$ri=adminer()->connectSsl();if($ri){if($ri['key'])$fg[\PDO::MYSQL_ATTR_SSL_KEY]=$ri['key'];if($ri['cert'])$fg[\PDO::MYSQL_ATTR_SSL_CERT]=$ri['cert'];if($ri['ca'])$fg[\PDO::MYSQL_ATTR_SSL_CA]=$ri['ca'];if(isset($ri['verify']))$fg[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$ri['verify'];}list($Od,$Qg)=host_port($N);return$this->dsn("mysql:charset=utf8;host=$Od".($Qg?(is_numeric($Qg)?";port=":";unix_socket=").$Qg:""),$V,$F,$fg);}function set_charset($Xa){return$this->query("SET NAMES $Xa");}function select_db($Pb){return$this->query("USE ".idf_escape($Pb));}function query($H,$sj=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$sj);return parent::query($H,$sj);}}}class Driver extends SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static function connect($N,$V,$F){$g=parent::connect($N,$V,$F);if(is_string($g)){if(function_exists('iconv')&&!is_utf8($g)&&strlen($Hh=iconv("windows-1250","utf-8",$g))>strlen($g))$g=$Hh;return$g;}$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");$g->flavor=(preg_match('~MariaDB~',$g->server_info)?'maria':'mysql');add_driver(DRIVER,($g->flavor=='maria'?"MariaDB":"MySQL"));return$g;}function __construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(28)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(29)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(84)=>array("enum"=>65535,"set"=>64),lang(30)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(32)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$g))$this->types[lang(29)]["json"]=4294967295;if(min_version('',10.7,$g)){$this->types[lang(29)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$g)){$this->types[lang(27)]["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$g))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$g))$this->generated=array("STORED","VIRTUAL");}function unconvertFunction(array$n){return(preg_match("~binary~",$n["type"])?"UNHEX":($n["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$n["type"])?"GeomFromText":"")));}function insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function insertUpdate($R,array$L,array$G){$e=array_keys(reset($L));$Wg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Mj=array();foreach($e as$y)$Mj[$y]="$y = VALUES($y)";$yi="\nON DUPLICATE KEY UPDATE ".implode(", ",$Mj);$Mj=array();$Re=0;foreach($L as$O){$Y="(".implode(", ",$O).")";if($Mj&&(strlen($Wg)+$Re+strlen($Y)+strlen($yi)>1e6)){if(!queries($Wg.implode(",\n",$Mj).$yi))return false;$Mj=array();$Re=0;}$Mj[]=$Y;$Re+=strlen($Y)+2;}return queries($Wg.implode(",\n",$Mj).$yi);}function slowQuery($H,$Ui){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Ui FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($Ui*1000).") */ $A[2]";}}function convertSearch($v,array$X,array$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return ob_get_clean();}}function tableHelp($B,$_e=false){$Ze=($this->conn->flavor=='maria');if(information_schema(DB))return strtolower("information-schema-".($Ze?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($Ze?"mysql$B-table/":"system-schema.html");}function partitionsInfo($R){$rd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $rd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$Gg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $rd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($Gg);$J["partition_values"]=array_values($Gg);return$J;}function hasCStyleEscapes(){static$Sa;if($Sa===null){$pi=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Sa=(strpos($pi,'NO_BACKSLASH_ESCAPES')===false);}return$Sa;}function engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function indexAlgorithms(array$Bi){return(preg_match('~^(MEMORY|NDB)$~',$Bi["Engine"])?array("HASH","BTREE"):array());}}function idf_escape($v){return"`".str_replace("`","``",$v)."`";}function table($v){return idf_escape($v);}function get_databases($jd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($jd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function limit($H,$Z,$z,$C=0,$Vh=" "){return" $H$Z".($z?$Vh."LIMIT $z".($C?" OFFSET $C":""):"");}function limit1($R,$H,$Z,$Vh="\n"){return limit($H,$Z,1,0,$Vh);}function db_collation($k,array$lb){$J=null;$i=get_val("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$A))$J=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$A))$J=$lb[$A[1]][-1];return$J;}function logged_user(){return get_val("SELECT USER()");}function tables_list(){return get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function count_tables(array$j){$J=array();foreach($j as$k)$J[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$J;}function table_status($B="",$Vc=false){$J=array();foreach(get_rows($Vc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name"):"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($B!="")$K["Name"]=$B;$J[$K["Name"]]=$K;}return$J;}function is_view(array$S){return$S["Engine"]===null;}function fk_support(array$S){return preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function fields($R){$Ze=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$n=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$vd=$K["GENERATION_EXPRESSION"];$Sc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Sc,$ud);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$cf);$l=$K["COLUMN_DEFAULT"];if($l!=""){$ze=preg_match('~text|json~',$cf[1]);if(!$Ze&&$ze)$l=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($l));if($Ze||$ze){$l=($l=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return stripslashes(str_replace("''","'",$A[1]));},$l));}if(!$Ze&&preg_match('~binary~',$cf[1])&&preg_match('~^0x(\w*)$~',$l,$A))$l=pack("H*",$A[1]);}$J[$n]=array("field"=>$n,"full_type"=>$U,"type"=>$cf[1],"length"=>$cf[2],"unsigned"=>ltrim($cf[3].$cf[4]),"default"=>($ud?($Ze?$vd:stripslashes($vd)):$l),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Sc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Sc,$A)?$A[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($ud[1]=="PERSISTENT"?"STORED":$ud[1]),);}return$J;}function indexes($R,$h=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$K){$B=$K["Key_name"];$J[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$B]["columns"][]=$K["Column_name"];$J[$B]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$B]["descs"][]=null;$J[$B]["algorithm"]=$K["Index_type"];}return$J;}function foreign_keys($R){static$Kg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Fb=get_val("SHOW CREATE TABLE ".table($R),1);if($Fb){preg_match_all("~CONSTRAINT ($Kg) FOREIGN KEY ?\\(((?:$Kg,? ?)+)\\) REFERENCES ($Kg)(?:\\.($Kg))? \\(((?:$Kg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Fb,$df,PREG_SET_ORDER);foreach($df as$A){preg_match_all("~$Kg~",$A[2],$ji);preg_match_all("~$Kg~",$A[5],$Mi);$J[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$ji[0]),"target"=>array_map('Adminer\idf_unescape',$Mi[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$J;}function view($B){return array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1)));}function collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J as$y=>$X)sort($J[$y]);return$J;}function information_schema($k){return($k=="information_schema")||(min_version(5.5)&&$k=="performance_schema");}function error(){return h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function create_database($k,$c){return queries("CREATE DATABASE ".idf_escape($k).($c?" COLLATE ".q($c):""));}function drop_databases(array$j){$J=apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function rename_database($B,$c){$J=false;if(create_database($B,$c)){$T=array();$Rj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Rj[]=$R;else$T[]=$R;}$J=(!$T&&!$Rj)||move_tables($T,$Rj,$B);drop_databases($J?array(DB):array());}return$J;}function auto_increment(){$Ca=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$Ca="";break;}if($w["type"]=="PRIMARY")$Ca=" UNIQUE";}}return" AUTO_INCREMENT$Ca";}function alter_table($R,$B,array$o,array$ld,$qb,$zc,$c,$Ba,$E){$b=array();foreach($o as$n){if($n[1]){$l=$n[1][3];if(preg_match('~ GENERATED~',$l)){$n[1][3]=(connection()->flavor=='maria'?"":$n[1][2]);$n[1][2]=$l;}$b[]=($R!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($R!=""?$n[2]:"");}else$b[]="DROP ".idf_escape($n[0]);}$b=array_merge($b,$ld);$P=($qb!==null?" COMMENT=".q($qb):"").($zc?" ENGINE=".q($zc):"").($c?" COLLATE ".q($c):"").($Ba!=""?" AUTO_INCREMENT=$Ba":"");if($E){$Gg=array();if($E["partition_by"]=='RANGE'||$E["partition_by"]=='LIST'){foreach($E["partition_names"]as$y=>$X){$Y=$E["partition_values"][$y];$Gg[]="\n PARTITION ".idf_escape($X)." VALUES ".($E["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P .="\nPARTITION BY $E[partition_by]($E[partition])";if($Gg)$P .=" (".implode(",",$Gg)."\n)";elseif($E["partitions"])$P .=" PARTITIONS ".(+$E["partitions"]);}elseif($E===null)$P .="\nREMOVE PARTITIONING";if($R=="")return queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");if($R!=$B)$b[]="RENAME TO ".table($B);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function alter_indexes($R,$b){$Wa=array();foreach($b as$X)$Wa[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return queries("ALTER TABLE ".table($R).implode(",",$Wa));}function truncate_tables(array$T){return apply_queries("TRUNCATE TABLE",$T);}function drop_views(array$Rj){return queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Rj)));}function drop_tables(array$T){return queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function move_tables(array$T,array$Rj,$Mi){$wh=array();foreach($T as$R)$wh[]=table($R)." TO ".idf_escape($Mi).".".table($R);if(!$wh||queries("RENAME TABLE ".implode(", ",$wh))){$Yb=array();foreach($Rj as$R)$Yb[table($R)]=view($R);connection()->select_db($Mi);$k=idf_escape(DB);foreach($Yb as$B=>$Qj){if(!queries("CREATE VIEW $B AS ".str_replace(" $k."," ",$Qj["select"]))||!queries("DROP VIEW $k.$B"))return false;}return true;}return false;}function copy_tables(array$T,array$Rj,$Mi){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T as$R){$B=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$lj=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Mi==DB?idf_escape("copy_$lj"):idf_escape($Mi).".".idf_escape($lj))." $K[Timing] $K[Event] ON $B FOR EACH ROW\n$K[Statement];"))return false;}}foreach($Rj as$R){$B=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));$Qj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $Qj[select]"))return false;}return true;}function trigger($B,$R){if($B=="")return array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return reset($L);}function triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function trigger_options(){return array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function routine($B,$U){$ta=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ki="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Ac=driver()->enumLength;$qj="((".implode("|",array_merge(array_keys(driver()->types()),$ta)).")\\b(?:\\s*\\(((?:[^'\")]|$Ac)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?(?:\\s*COLLATE\\s*['\"]?[^'\"\\s,]+['\"]?)?";$Kg="$ki*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$qj";$i=get_val("SHOW CREATE $U ".idf_escape($B),2);preg_match("~\\(((?:$Kg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$qj\\s+":"")."(.*)~is",$i,$A);$o=array();preg_match_all("~$Kg\\s*,?~is",$A[1],$df,PREG_SET_ORDER);foreach($df as$yg)$o[]=array("field"=>str_replace("``","`",$yg[2]).$yg[3],"type"=>strtolower($yg[5]),"length"=>preg_replace_callback("~$Ac~s",'Adminer\normalize_enum',$yg[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$yg[8] $yg[7]"))),"null"=>true,"full_type"=>$yg[4],"inout"=>strtoupper($yg[1]),"collation"=>strtolower($yg[9]),);return array("fields"=>$o,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($B)),)+($U!="FUNCTION"?array("definition"=>$A[11]):array("returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",));}function routines(){return get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function routine_languages(){return array();}function routine_id($B,array$K){return idf_escape($B);}function last_id($I){return get_val("SELECT LAST_INSERT_ID()");}function explain(Db$g,$H){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function create_sql($R,$Ba,$wi){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Ba)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function truncate_sql($R){return"TRUNCATE ".table($R);}function use_sql($Pb,$wi=""){$B=idf_escape($Pb);$J="";if(preg_match('~CREATE~',$wi)&&($i=get_val("SHOW CREATE DATABASE $B",1))){set_utf8mb4($i);if($wi=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $B;\n";$J .="$i;\n";}return$J."USE $B";}function trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J .="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function show_variables(){return get_rows("SHOW VARIABLES");}function show_status(){return get_rows("SHOW STATUS");}function process_list(){return get_rows("SHOW FULL PROCESSLIST");}function convert_field(array$n){if(preg_match("~binary~",$n["type"]))return"HEX(".idf_escape($n["field"]).")";if($n["type"]=="bit")return"BIN(".idf_escape($n["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($n["field"]).")";}function unconvert_field(array$n,$J){if(preg_match("~binary~",$n["type"]))$J="UNHEX($J)";if($n["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"])){$Wg=(min_version(8)?"ST_":"");$J=$Wg."GeomFromText($J, $Wg"."SRID($n[field]))";}return$J;}function support($Wc){return preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Wc);}function kill_process($u){return queries("KILL ".number($u));}function connection_id(){return"SELECT CONNECTION_ID()";}function max_connections(){return get_val("SELECT @@max_connections");}function types(){return array();}function type_values($u){return"";}function schemas(){return array();}function get_schema(){return"";}function set_schema($Jh,$h=null){return true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function page_header($Wi,$m="",$Oa=array(),$Xi=""){page_headers();if(is_ajax()&&$m){page_messages($m);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Yi=$Wi.($Xi!=""?": $Xi":"");$Zi=strip_tags($Yi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' ',$Zi,' ';$Jb=adminer()->css();if(is_int(key($Jb)))$Jb=array_fill_keys($Jb,'light');$Gd=in_array('light',$Jb)||in_array('',$Jb);$Ed=in_array('dark',$Jb)||in_array('',$Jb);$Mb=($Gd?($Ed?null:false):($Ed?:null));$nf=" media='(prefers-color-scheme: dark)'";if($Mb!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.4.1");if(adminer()->head($Mb))echo"\n","\n";foreach($Jb as$Dj=>$xf){$_a=($xf=='dark'&&!$Mb?$nf:($xf=='light'&&$Ed?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n";$p=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($p)&&filemtime($p)+86400>time()){$Pj=unserialize(file_get_contents($p));$gh="-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8 h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ fQIDAQAB -----END PUBLIC KEY----- ";if(openssl_verify($Pj["version"],base64_decode($Pj["signature"]),$gh)==1)$_COOKIE["adminer_version"]=$Pj["version"];}echo script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."}); document.body.classList.replace('nojs', 'js'); const offlineMessage = '".js_escape(lang(86))."'; const thousandsSeparator = '".js_escape(lang(4))."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"
    \n","".icon("move","","menu","")."".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Oa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $Yi

    \n","\n";restart_session();page_messages($m);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define('Adminer\PAGE_HEADER',1);}function page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$Ib){$Id=array();foreach($Ib as$y=>$X)$Id[]="$y $X";header("Content-Security-Policy: ".implode("; ",$Id));}adminer()->headers();}function csp(){return array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function get_nonce(){static$Jf;if(!$Jf)$Jf=base64_encode(rand_string());return$Jf;}function page_messages($m){$Cj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$tf=idx($_SESSION["messages"],$Cj);if($tf){echo"
    ".implode("
    \n
    ",$tf)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Cj]);}if($m)echo"
    $m
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function page_footer($wf=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function int32($Bf){while($Bf>=2147483648)$Bf-=4294967296;while($Bf<=-2147483649)$Bf+=4294967296;return(int)$Bf;}function long2str(array$W,$Tj){$Hh='';foreach($W as$X)$Hh .=pack('V',$X);if($Tj)return substr($Hh,0,end($W));return$Hh;}function str2long($Hh,$Tj){$W=array_values(unpack('V*',str_pad($Hh,4*ceil(strlen($Hh)/4),"\0")));if($Tj)$W[]=strlen($Hh);return$W;}function xxtea_mx($ak,$Zj,$zi,$Ce){return int32((($ak>>5&0x7FFFFFF)^$Zj<<2)+(($Zj>>3&0x1FFFFFFF)^$ak<<4))^int32(($zi^$Zj)+($Ce^$ak));}function encrypt_string($ui,$y){if($ui=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($ui,true);$Bf=count($W)-1;$ak=$W[$Bf];$Zj=$W[0];$hh=floor(6+52/($Bf+1));$zi=0;while($hh-->0){$zi=int32($zi+0x9E3779B9);$qc=$zi>>2&3;for($wg=0;$wg<$Bf;$wg++){$Zj=$W[$wg+1];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$ak=int32($W[$wg]+$Af);$W[$wg]=$ak;}$Zj=$W[0];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$ak=int32($W[$Bf]+$Af);$W[$Bf]=$ak;}return long2str($W,false);}function decrypt_string($ui,$y){if($ui=="")return"";if(!$y)return false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($ui,false);$Bf=count($W)-1;$ak=$W[$Bf];$Zj=$W[0];$hh=floor(6+52/($Bf+1));$zi=int32($hh*0x9E3779B9);while($zi){$qc=$zi>>2&3;for($wg=$Bf;$wg>0;$wg--){$ak=$W[$wg-1];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$Zj=int32($W[$wg]-$Af);$W[$wg]=$Zj;}$ak=$W[$Bf];$Af=xxtea_mx($ak,$Zj,$zi,$y[$wg&3^$qc]);$Zj=int32($W[0]-$Af);$W[0]=$Zj;$zi=int32($zi-0x9E3779B9);}return long2str($W,true);}$Mg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Mg[$y]=$X;}}function add_invalid_login(){$Ha=get_temp_dir()."/adminer.invalid";foreach(glob("$Ha*")?:array($Ha)as$p){$r=file_open_lock($p);if($r)break;}if(!$r)$r=file_open_lock("$Ha-".rand_string());if(!$r)return;$ue=unserialize(stream_get_contents($r));$Ti=time();if($ue){foreach($ue as$ve=>$X){if($X[0]<$Ti)unset($ue[$ve]);}}$te=&$ue[adminer()->bruteForceKey()];if(!$te)$te=array($Ti+30*60,0);$te[1]++;file_write_unlock($r,serialize($ue));}function check_invalid_login(array&$Mg){$ue=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$p){$r=file_open_lock($p);if($r){$ue=unserialize(stream_get_contents($r));file_unlock($r);break;}}$te=idx($ue,adminer()->bruteForceKey(),array());$If=($te[1]>29?$te[0]-time():0);if($If>0)auth_error(lang(88,ceil($If/60)),$Mg);}$Aa=$_POST["auth"];if($Aa){session_regenerate_id();$Oj=$Aa["driver"];$N=$Aa["server"];$V=$Aa["username"];$F=(string)$Aa["password"];$k=$Aa["db"];set_password($Oj,$N,$V,$F);$_SESSION["db"][$Oj][$N][$V][$k]=true;if($Aa["permanent"]){$y=implode("-",array_map('base64_encode',array($Oj,$N,$V,$k)));$bh=adminer()->permanentLogin(true);$Mg[$y]="$y:".base64_encode($bh?encrypt_string($F,$bh):"");cookie("adminer_permanent",implode(" ",$Mg));}if(count($_POST)==1||DRIVER!=$Oj||SERVER!=$N||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Oj,$N,$V,$k));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent($Mg);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(89).' '.lang(90));}elseif($Mg&&!$_SESSION["pwds"]){session_regenerate_id();$bh=adminer()->permanentLogin();foreach($Mg as$y=>$X){list(,$eb)=explode(":",$X);list($Oj,$N,$V,$k)=array_map('base64_decode',explode("-",$y));set_password($Oj,$N,$V,decrypt_string(base64_decode($eb),$bh));$_SESSION["db"][$Oj][$N][$V][$k]=true;}}function unset_permanent(array&$Mg){foreach($Mg as$y=>$X){list($Oj,$N,$V,$k)=array_map('base64_decode',explode("-",$y));if($Oj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$k==DB)unset($Mg[$y]);}cookie("adminer_permanent",implode(" ",$Mg));}function auth_error($m,array&$Mg){$bi=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$bi]||$_GET[$bi])&&!$_SESSION["token"])$m=lang(91);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$m .=($m?'
    ':'').lang(92,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Mg);}}if(!$_COOKIE[$bi]&&$_GET[$bi]&&ini_bool("session.use_only_cookies"))$m=lang(93);$zg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$zg["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(38),$m,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".lang(94)."\n";echo"

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Mg);page_header(lang(95),lang(96,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$g='';if(isset($_GET["username"])&&is_string(get_password())){list(,$Qg)=host_port(SERVER);if(preg_match('~^\s*([-+]?\d+)~',$Qg,$A)&&($A[1]<1024||$A[1]>65535))auth_error(lang(97),$Mg);check_invalid_login($Mg);$Hb=adminer()->credentials();$g=Driver::connect($Hb[0],$Hb[1],$Hb[2]);if(is_object($g)){Db::$instance=$g;Driver::$instance=new Driver($g);if($g->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Xe=null;if(!is_object($g)||($Xe=adminer()->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?nl_br(h($g)):(is_string($Xe)?$Xe:lang(98))).(preg_match('~^ | $~',get_password())?'
    '.lang(99):'');auth_error($m,$Mg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(87),lang(100));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($Aa&&$_POST["token"])$_POST["token"]=get_token();$m='';if($_POST){if(!verify_token()){$me="max_input_vars";$lf=ini_get($me);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$lf||$X<$lf)){$me=$y;$lf=$X;}}}$m=(!$_POST["token"]&&$lf?lang(101,"'$me'"):lang(100).' '.lang(102));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=lang(103,"'post_max_size'");if(isset($_GET["sql"]))$m .=' '.lang(104);}function print_select_result($I,$h=null,array$lg=array(),$z=0){$Ve=array();$x=array();$e=array();$Ma=array();$rj=array();$J=array();for($t=0;(!$z||$t<$z)&&($K=$I->fetch_row());$t++){if(!$t){echo"
    \n","\n","";for($Ae=0;$Aefetch_field();$B=$n->name;$kg=(isset($n->orgtable)?$n->orgtable:"");$jg=(isset($n->orgname)?$n->orgname:$B);if($lg&&JUSH=="sql")$Ve[$Ae]=($B=="table"?"table=":($B=="possible_keys"?"indexes=":null));elseif($kg!=""){if(isset($n->table))$J[$n->table]=$kg;if(!isset($x[$kg])){$x[$kg]=array();foreach(indexes($kg,$h)as$w){if($w["type"]=="PRIMARY"){$x[$kg]=array_flip($w["columns"]);break;}}$e[$kg]=$x[$kg];}if(isset($e[$kg][$jg])){unset($e[$kg][$jg]);$x[$kg][$jg]=$Ae;$Ve[$Ae]=$kg;}}if($n->charsetnr==63)$Ma[$Ae]=true;$rj[$Ae]=$n->type;echo"name!=$jg?" title='".h(($kg!=""?"$kg.":"").$jg)."'":"").">".h($B).($lg?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($B),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($K as$y=>$X){$_="";if(isset($Ve[$y])&&!$e[$Ve[$y]]){if($lg&&JUSH=="sql"){$R=$K[array_search("table=",$Ve)];$_=ME.$Ve[$y].urlencode($lg[$R]!=""?$lg[$R]:$R);}else{$_=ME."edit=".urlencode($Ve[$y]);foreach($x[$Ve[$y]]as$jb=>$Ae){if($K[$Ae]===null){$_="";break;}$_ .="&where".urlencode("[".bracket_escape($jb)."]")."=".urlencode($K[$Ae]);}}}elseif(is_url($X))$_=$X;if($X===null)$X="NULL";elseif($Ma[$y]&&!is_utf8($X))$X="".lang(47,strlen($X))."";else{$X=h($X);if($rj[$y]==254)$X="$X";}if($_)$X="$X";echo"$X";}}echo($t?"
    \n
    ":"

    ".lang(14))."\n";return$J;}function referencable_primary($Th){$J=array();foreach(table_status('',true)as$Di=>$R){if($Di!=$Th&&fk_support($R)){foreach(fields($Di)as$n){if($n["primary"]){if($J[$Di]){unset($J[$Di]);break;}$J[$Di]=$n;}}}}return$J;}function textarea($B,$Y,$L=10,$mb=80){echo"";}function select_input($_a,array$fg,$Y="",$Zf="",$Ng=""){$Li=($fg?"select":"input");return"<$Li$_a".($fg?">

    ".lang(124,get_driver(DRIVER),"".h(connection()->server_info)."","".connection()->extension."")."\n","

    ".lang(125,"".h(logged_user())."")."\n";$j=adminer()->databases();if($j){$Lh=support("scheme");$lb=collations();echo"

    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"".(support("database")?"\n";$j=($_GET["dbsize"]?count_tables($j):array_flip($j));foreach($j as$k=>$T){$Ch=h(ME)."db=".urlencode($k);$u=h("Db-".$k);echo"".(support("database")?"
    ":"")."".lang(37).(get_session("dbs")!==null?" - ".lang(126)."":"")."".lang(127)."".lang(128)."".lang(129)." - ".lang(130)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$u):""),"".h($k)."";$c=h(db_collation($k,$lb));echo"".(support("database")?"$c":$c),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($k):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"
    \n","

    ".lang(133)."

    \n
      \n";foreach(adminer()->plugins as$Og){$bc=(method_exists($Og,'description')?$Og->description():"");if(!$bc){$sh=new \ReflectionObject($Og);if(preg_match('~^/[\s*]+(.+)~',$sh->getDocComment(),$A))$bc=$A[1];}$Mh=(method_exists($Og,'screenshot')?$Og->screenshot():"");echo"
    • ".get_class($Og)."".h($bc?": $bc":"").($Mh?" (".lang(134).")":"")."\n";}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(79).": ".h($_GET["ns"]),lang(135),true);page_footer("ns");exit;}}}adminer()->afterConnect();class TmpFile{private$handler;var$size;function __construct(){$this->handler=tmpfile();}function write($Ab){$this->size+=strlen($Ab);fwrite($this->handler,$Ab);}function send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$o=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=driver()->select($a,$M,array(where($_GET,$o)),$M);$K=($I?$I->fetch_row():array());echo driver()->value($K[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=error()?:lang(11);$S=table_status1($a);$B=adminer()->tableName($S);page_header(($o&&is_view($S)?$S['Engine']=='materialized view'?lang(136):lang(137):lang(138)).": ".($B!=""?$B:h($a)),$m);$Bh=array();foreach($o as$y=>$n)$Bh+=$n["privileges"];adminer()->selectLinks($S,(isset($Bh["insert"])||!support("table")?"":null));$qb=$S["Comment"];if($qb!="")echo"

    ".lang(50).": ".h($qb)."\n";if($o)adminer()->tableStructurePrint($o,$S);function tables_links(array$T){echo"

    \n";}$le=driver()->inheritsFrom($a);if($le){echo"

    ".lang(139)."

    \n";tables_links($le);}if(support("indexes")&&driver()->supportsIndex($S)){echo"

    ".lang(140)."

    \n";$x=indexes($a);if($x)adminer()->tableIndexesPrint($x,$S);echo'

    ".lang(105)."

    \n";$nd=foreign_keys($a);if($nd){echo"\n","\n";foreach($nd as$B=>$q){echo"","
    ".lang(142)."".lang(143)."".lang(108)."".lang(107)."
    ".implode(", ",array_map('Adminer\h',$q["source"]))."";$_=($q["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($q["db"]),ME):($q["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($q["ns"]),ME):ME));echo"".($q["db"]!=""&&$q["db"]!=DB?"".h($q["db"]).".":"").($q["ns"]!=""&&$q["ns"]!=$_GET["ns"]?"".h($q["ns"]).".":"").h($q["table"])."","(".implode(", ",array_map('Adminer\h',$q["target"])).")","".h($q["on_delete"]),"".h($q["on_update"]),''.lang(144).'',"\n";}echo"
    \n";}echo'

    ".lang(146)."

    \n";$Za=driver()->checkConstraints($a);if($Za){echo"\n";foreach($Za as$y=>$X)echo"","
    ".h($X),"".lang(144)."","\n";echo"
    \n";}echo'

    ".lang(148)."

    \n";$oj=triggers($a);if($oj){echo"\n";foreach($oj as$y=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($y)."".lang(144)."\n";echo"
    \n";}echo'

    ".lang(150)."

    \n";$Cg=driver()->partitionsInfo($a);if($Cg)echo"

    BY ".h("$Cg[partition_by]($Cg[partition])")."\n";tables_links($ke);}}elseif(isset($_GET["schema"])){page_header(lang(70),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Fi=array();$Gi=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$df,PREG_SET_ORDER);foreach($df as$t=>$A){$Fi[$A[1]]=array($A[2],$A[3]);$Gi[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$dj=0;$Ia=-1;$Jh=array();$rh=array();$Pe=array();$ua=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Rg=0;$Jh[$R]["fields"]=array();foreach($ua[$R]as$n){$Rg+=1.25;$n["pos"]=$Rg;$Jh[$R]["fields"][$n["field"]]=$n;}$Jh[$R]["pos"]=($Fi[$R]?:array($dj,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$Ne=$Ia;if(idx($Fi[$R],1)||idx($Fi[$X["table"]],1))$Ne=min(idx($Fi[$R],1,0),idx($Fi[$X["table"]],1,0))-1;else$Ia-=.1;while($Pe[(string)$Ne])$Ne-=.0001;$Jh[$R]["references"][$X["table"]][(string)$Ne]=array($X["source"],$X["target"]);$rh[$X["table"]][$R][(string)$Ne]=$X["target"];$Pe[(string)$Ne]=true;}}$dj=max($dj,$Jh[$R]["pos"][0]+2.5+$Rg);}echo'

    qs(\'#schema\').onselectstart = () => false; const tablePos = {',implode(",",$Gi)."\n",'}; const em = qs(\'#schema\').offsetHeight / ',$dj,'; document.onmousemove = schemaMousemove; document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); ';foreach($Jh as$B=>$R){echo"
    ",''.h($B)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$n){$X=''.h($n["field"]).'';echo"
    ".($n["primary"]?"$X":$X);}foreach((array)$R["references"]as$Ni=>$th){foreach($th as$Ne=>$oh){$Oe=$Ne-idx($Fi[$B],1);$t=0;foreach($oh[0]as$ji)echo"\n
    "."
    ";}}foreach((array)$rh[$B]as$Ni=>$th){foreach($th as$Ne=>$e){$Oe=$Ne-idx($Fi[$B],1);$t=0;foreach($e as$Mi)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($Jh as$B=>$R){foreach((array)$R["references"]as$Ni=>$th){foreach($th as$Ne=>$oh){$vf=$dj;$jf=-10;foreach($oh[0]as$y=>$ji){$Sg=$R["pos"][0]+$R["fields"][$ji]["pos"];$Tg=$Jh[$Ni]["pos"][0]+$Jh[$Ni]["fields"][$oh[1][$y]]["pos"];$vf=min($vf,$Sg,$Tg);$jf=max($jf,$Sg,$Tg);}echo"
    \n";}}}echo'
    ';$Rb=array('','USE','DROP+CREATE','CREATE');$Hi=array('','DROP+CREATE','CREATE');$Ob=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Ob[]='INSERT+UPDATE';$K=get_settings("adminer_export");if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"
    ".lang(152)."".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","
    ".lang(153)."".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(37)."".html_select('db_style',$Rb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],lang(6)):"").(support("routine")?checkbox("routines",1,$K["routines"],lang(72)):"").(support("event")?checkbox("events",1,$K["events"],lang(74)):"")),"
    ".lang(128)."".html_select('table_style',$Hi,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],lang(51)).(support("trigger")?checkbox("triggers",1,$K["triggers"],lang(148)):""),"
    ".lang(154)."".html_select('data_style',$Ob,$K["data_style"]),'

    ',input_token(),' ',script("qsl('table').onclick = dumpClick;");$Xg=array();if(DB!=""){$bb=($a!=""?"":" checked");echo"","\n";$Rj="";$Ji=tables_list();foreach($Ji as$B=>$U){$Wg=preg_replace('~_.*~','',$B);$bb=($a==""||$a==(substr($a,-1)=="%"?"$Wg%":$B));$ah="\n";$j=adminer()->databases();if($j){foreach($j as$k){if(!information_schema($k)){$Wg=preg_replace('~_.*~','',$k);echo"
    ".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"
    ".checkbox("tables[]",$B,$bb,$B,"","block");if($U!==null&&!preg_match('~table~i',$U))$Rj .="$ah\n";else echo"$ah\n";$Xg[$Wg]++;}echo$Rj;if($Ji)echo script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"
    ","",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"
    ".checkbox("databases[]",$k,$a==""||$a=="$Wg%",$k,"","block")."\n";$Xg[$Wg]++;}}}else echo"
    ";}echo'

    ';$dd=true;foreach($Xg as$y=>$X){if($y!=""&&$X>1){echo($dd?"

    ":" ")."".h($y)."";$dd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(71));echo'

    \n";hidden_fields_get();echo input_hidden("db",DB),($wd?"":input_hidden("grant")),"\n","\n";while($K=$I->fetch_assoc())echo'
    ".lang(35)."".lang(34)."
    '.h($K["User"])."".h($K["Host"]).''.lang(12)."\n";if(!$wd||DB!="")echo"
    \n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$Md=&get_session("queries");$Ld=&$Md[DB];if(!$m&&$_POST["clear"]){$Ld=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?lang(75):lang(64)),$m);$Ue='--'.(JUSH=='sql'?' ':'');if(!$m&&$_POST){$r=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$ni=adminer()->importServerPath();$r=@fopen((file_exists($ni)?$ni:"compress.zlib://$ni.gz"),"rb");$H=($r?fread($r,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($of=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($of,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$hh=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Ld||first(end($Ld))!=$hh){restart_session();$Ld[]=array($hh,time());set_session("queries",$Md);stop_session();}}$ki="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$Ue)[^\n]*\n?|--\r?\n)";$Zb=";";$C=0;$yc=true;$h=connect();if($h&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$pb=0;$Fc=array();$_g='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Ue.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ej=microtime(true);$oa=get_settings("adminer_import");while($H!=""){if(!$C&&preg_match("~^$ki*+DELIMITER\\s+(\\S+)~i",$H,$A)){$Zb=preg_quote($A[1]);$H=substr($H,strlen($A[0]));}elseif(!$C&&JUSH=='pgsql'&&preg_match("~^($ki*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$A)){$Zb="\n\\\\\\.\r?\n";$C=strlen($A[0]);}else{preg_match("($Zb\\s*|$_g)",$H,$A,PREG_OFFSET_CAPTURE,$C);list($pd,$Rg)=$A[0];if(!$pd&&$r&&!feof($r))$H .=fread($r,1e5);else{if(!$pd&&rtrim($H)=="")break;$C=$Rg+strlen($pd);if($pd&&!preg_match("(^$Zb)",$pd)){$Ta=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($Rg>0&&strtolower($H[$Rg-1])=="e"));$Kg=($pd=='/*'?'\*/':($pd=='['?']':(preg_match("~^$Ue|^#~",$pd)?"\n":preg_quote($pd).($Ta?'|\\\\.':''))));while(preg_match("($Kg|\$)s",$H,$A,PREG_OFFSET_CAPTURE,$C)){$Hh=$A[0][0];if(!$Hh&&$r&&!feof($r))$H .=fread($r,1e5);else{$C=$A[0][1]+strlen($Hh);if(!$Hh||$Hh[0]!="\\")break;}}}else{$yc=false;$hh=substr($H,0,$Rg+($Zb[0]=="\n"?3:0));$pb++;$ah="
    ".adminer()->sqlCommandQuery($hh)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$ki*+ATTACH\\b~i",$hh,$A)){echo$ah,"

    ".lang(156)."\n";$Fc[]=" $pb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$ah;ob_flush();flush();}$si=microtime(true);if(connection()->multi_query($hh)&&$h&&preg_match("~^$ki*+USE\\b~i",$hh))$h->query($hh);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$ah:""),"

    ".lang(157).(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Fc[]=" $pb";if($_POST["error_stops"])break 2;}else{$Ti=" (".format_time($si).")".(strlen($hh)<1000?" ".lang(12)."":"");$qa=connection()->affected_rows;$Uj=($_POST["only_errors"]?"":driver()->warnings());$Vj="warnings-$pb";if($Uj)$Ti .=", ".lang(46)."".script("qsl('a').onclick = partial(toggle, '$Vj');","");$Nc=null;$lg=null;$Oc="explain-$pb";if(is_object($I)){$z=$_POST["limit"];$lg=print_select_result($I,$h,array(),$z);if(!$_POST["only_errors"]){echo"

    \n";$Mf=$I->num_rows;echo"
    \n";}}else{if(preg_match("~^$ki*+(CREATE|DROP|ALTER)$ki++(DATABASE|SCHEMA)\\b~i",$hh)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

    ".lang(160,$qa)."$Ti\n";}echo($Uj?"

    \n":"");if($Nc){echo"\n";}}$si=microtime(true);}while(connection()->next_result());}$H=substr($H,$C);$C=0;}}}}if($yc)echo"

    ".lang(161)."\n";elseif($_POST["only_errors"])echo"

    ".lang(162,$pb-count($Fc))," (".format_time($ej).")\n";elseif($Fc&&$pb>1)echo"

    ".lang(157).": ".implode("",$Fc)."\n";}else echo"

    ".upload_error($H)."\n";}echo'

    ';$Lc="";if(!isset($_GET["import"])){$hh=$_GET["sql"];if($_POST)$hh=$_POST["query"];elseif($_GET["history"]=="all")$hh=$Ld;elseif($_GET["history"]!="")$hh=idx($Ld[$_GET["history"]],0);echo"

    ";textarea("query",$hh,20);echo script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"

    ";adminer()->sqlPrintAfter();echo"$Lc\n",lang(164).": \n";}else{$Bd=(extension_loaded("zlib")?"[.gz]":"");echo"

    ".lang(165)."
    ",file_input("SQL$Bd: \n$Lc"),"
    \n";$Xd=adminer()->importServerPath();if($Xd)echo"
    ".lang(166)."
    ",lang(167,"".h($Xd)."$Bd"),' ',"
    \n";echo"

    ";}echo checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(169))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(170))."\n",input_token();if(!isset($_GET["import"])&&$Ld){print_fieldset("history",lang(171),$_GET["history"]!="");for($X=end($Ld);$X;$X=prev($Ld)){$y=key($Ld);list($hh,$Ti,$tc)=$X;echo''.lang(12).""." ".@date("H:i:s",$Ti).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$Ue).*~m",'',$hh)))),80,"").($tc?" ($tc)":"")."
    \n";}echo"\n","".lang(173)."\n","\n";}echo'

    ';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$_j=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o as$B=>$n){if(!isset($n["privileges"][$_j?"update":"insert"])||adminer()->fieldName($n)==""||$n["generated"])unset($o[$B]);}if($_POST&&!$m&&!isset($_GET["select"])){$We=$_POST["referer"];if($_POST["insert"])$We=($_j?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$We))$We=ME."select=".urlencode($a);$x=indexes($a);$vj=unique_array($_GET["where"],$x);$kh="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($We,lang(174),driver()->delete($a,$kh,$vj?0:1));else{$O=array();foreach($o as$B=>$n){$X=process_input($n);if($X!==false&&$X!==null)$O[idf_escape($B)]=$X;}if($_j){if(!$O)redirect($We);queries_redirect($We,lang(175),driver()->update($a,$O,$kh,$vj?0:1));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$I=driver()->insert($a,$O);$Me=($I?last_id($I):0);queries_redirect($We,lang(176,($Me?" $Me":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($o as$B=>$n){if(isset($n["privileges"]["select"])){$ya=($_POST["clone"]&&$n["auto_increment"]?"''":convert_field($n));$M[]=($ya?"$ya AS ":"").idf_escape($B);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$m=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$o){if(!$Z){$I=driver()->select($a,array("*"),array(),array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array(driver()->primary=>"");}if($K){foreach($K as$y=>$X){if(!$Z)$K[$y]=null;$o[$y]=array("field"=>$y,"null"=>($y!=driver()->primary),"auto_increment"=>($y==driver()->primary));}}}edit_form($a,$o,$K,$_j,$m);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Eg=driver()->partitionBy;$Hg=($Eg?driver()->partitionsInfo($a):array());$qh=referencable_primary($a);$nd=array();foreach($qh as$Di=>$n)$nd[str_replace("`","``",$Di)."`".str_replace("`","``",$n["field"])]=$Di;$og=array();$S=array();if($a!=""){$og=fields($a);$S=table_status1($a);if(count($S)<2)$m=lang(11);}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(177),drop_tables(array($a)));else{$o=array();$ua=array();$Fj=false;$ld=array();$ng=reset($og);$sa=" FIRST";foreach($K["fields"]as$y=>$n){$q=$nd[$n["type"]];$pj=($q!==null?$qh[$q]:$n);if($n["field"]!=""){if(!$n["generated"])$n["default"]=null;$fh=process_field($n,$pj);$ua[]=array($n["orig"],$fh,$sa);if(!$ng||$fh!==process_field($ng,$ng)){$o[]=array($n["orig"],$fh,$sa);if($n["orig"]!=""||$sa)$Fj=true;}if($q!==null)$ld[idf_escape($n["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$nd[$n["type"]],'source'=>array($n["field"]),'target'=>array($pj["field"]),'on_delete'=>$n["on_delete"],));$sa=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Fj=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$ng=next($og);if(!$ng)$sa="";}}$E=array();if(in_array($K["partition_by"],$Eg)){foreach($K as$y=>$X){if(preg_match('~^partition~',$y))$E[$y]=$X;}foreach($E["partition_names"]as$y=>$B){if($B==""){unset($E["partition_names"][$y]);unset($E["partition_values"][$y]);}}$E["partition_names"]=array_values($E["partition_names"]);$E["partition_values"]=array_values($E["partition_values"]);if($E==$Hg)$E=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$E=null;$pf=lang(178);if($a==""){cookie("adminer_engine",$K["Engine"]);$pf=lang(179);}$B=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($B),$pf,alter_table($a,$B,(JUSH=="sqlite"&&($Fj||$ld)?$ua:$o),$ld,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$S["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$E));}}page_header(($a!=""?lang(43):lang(77)),$m,array("table"=>$a),h($a));if(!$_POST){$rj=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($rj["int"])?"int":(isset($rj["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$K=$S;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($og as$n){$n["generated"]=$n["generated"]?:(isset($n["default"])?"DEFAULT":"");$K["fields"][]=$n;}if($Eg){$K+=$Hg;$K["partition_names"][]="";$K["partition_values"][]="";}}}$lb=collations();if(is_array(reset($lb)))$lb=call_user_func_array('array_merge',array_values($lb));$_c=driver()->engines();foreach($_c as$zc){if(!strcasecmp($zc,$K["Engine"])){$K["Engine"]=$zc;break;}}echo'

    ';if(support("columns")||$a==""){echo lang(180).": \n",($_c?html_select("Engine",array(""=>"(".lang(181).")")+$_c,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($lb)echo"".optionlist($lb)."\n",(preg_match("~sqlite|mssql~",JUSH)?"":"\n");echo"\n";}if(support("columns")){echo"

    \n","\n";edit_fields($K["fields"],$lb,"TABLE",$nd);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(51).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(182),"columnShow(this.checked, 5)","jsonly");$sb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$sb,lang(50),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"":''):''),'

    ';}echo' ';if($a!="")echo'',confirm(lang(183,$a));if($Eg&&(JUSH=='sql'||$a=="")){$Fg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",lang(184),$K["partition_by"]);echo"

    ".html_select("partition_by",array_merge(array(""),$Eg),$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"()\n",lang(185).": \n","\n","\n";foreach($K["partition_names"]as$y=>$X)echo'','\n\n";}echo input_token(),'

    ';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$fe=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$ce=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$fe[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$fe[]="SPATIAL";$x=indexes($a);$o=fields($a);$G=array();if(JUSH=="mongo"){$G=$x["_id_"];unset($fe[0]);unset($x["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$w){$B=$w["name"];if(in_array($w["type"],$fe)){$e=array();$Se=array();$cc=array();$de=(support("partial_indexes")?$w["partial"]:"");$be=(in_array($w["algorithm"],$ce)?$w["algorithm"]:"");$O=array();ksort($w["columns"]);foreach($w["columns"]as$y=>$d){if($d!=""){$Re=idx($w["lengths"],$y);$ac=idx($w["descs"],$y);$O[]=($o[$d]?idf_escape($d):$d).($Re?"(".(+$Re).")":"").($ac?" DESC":"");$e[]=$d;$Se[]=($Re?:null);$cc[]=$ac;}}$Mc=$x[$B];if($Mc){ksort($Mc["columns"]);ksort($Mc["lengths"]);ksort($Mc["descs"]);if($w["type"]==$Mc["type"]&&array_values($Mc["columns"])===$e&&(!$Mc["lengths"]||array_values($Mc["lengths"])===$Se)&&array_values($Mc["descs"])===$cc&&$Mc["partial"]==$de&&(!$ce||$Mc["algorithm"]==$be)){unset($x[$B]);continue;}}if($e)$b[]=array($w["type"],$B,$O,$be,$de);}}foreach($x as$B=>$Mc)$b[]=array($Mc["type"],$B,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(188),alter_indexes($a,$b));}page_header(lang(140),$m,array("table"=>$a),h($a));$ad=array_keys($o);if($_POST["add"]){foreach($K["indexes"]as$y=>$w){if($w["columns"][count($w["columns"])]!="")$K["indexes"][$y]["columns"][]="";}$w=end($K["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($x as$y=>$w){$x[$y]["name"]=$y;$x[$y]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$K["indexes"]=$x;}$Se=(JUSH=="sql"||JUSH=="mssql");$ei=($_POST?$_POST["options"]:get_setting("index_options"));echo'
    ';if($G){echo"
    ',lang(189);$Vd=" class='idxopts".($ei?"":" hidden")."'";if($ce)echo"".lang(190).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'',lang(191).($Se?" (".lang(192).")":"");if($Se||support("descidx"))echo checkbox("options",1,$ei,lang(112),"indexOptionsShow(this.checked)","jsonly")."\n";echo'',lang(193);if(support("partial_indexes"))echo"".lang(194);echo'
    PRIMARY";foreach($G["columns"]as$y=>$d)echo select_input(" disabled",$ad,$d)," ";echo"\n";}$Ae=1;foreach($K["indexes"]as$w){if(!$_POST["drop_col"]||$Ae!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$Ae][type]",array(-1=>"")+$fe,$w["type"],($Ae==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($ce)echo"".html_select("indexes[$Ae][algorithm]",array_merge(array(""),$ce),$w['algorithm'],"label-algorithm");echo"";ksort($w["columns"]);$t=1;foreach($w["columns"]as$y=>$d){echo"".select_input(" name='indexes[$Ae][columns][$t]' title='".lang(48)."'",($o&&($d==""||$o[$d])?array_combine($ad,$ad):array()),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"",($Se?"":""),(support("descidx")?checkbox("indexes[$Ae][descs][$t]",1,idx($w["descs"],$y),lang(59)):"")," ";$t++;}echo"\n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$Ae]","x",lang(116)).script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$Ae++;}echo'

    ',input_token(),'

    ';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$m&&!$_POST["add"]){$B=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(195),drop_databases(array(DB)));}elseif(DB!==$B){if(DB!=""){$_GET["db"]=$B;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($B),lang(196),rename_database($B,$K["collation"]));}else{$j=explode("\n",str_replace("\r","",$B));$xi=true;$Le="";foreach($j as$k){if(count($j)==1||$k!=""){if(!create_database($k,$K["collation"]))$xi=false;$Le=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Le),lang(197),$xi);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($B).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),lang(198));}}page_header(DB!=""?lang(67):lang(120),$m,array(),h(DB));$lb=collations();$B=DB;if($_POST)$B=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$lb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$wd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$wd,$A)&&$A[1]){$B=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'

    ',($_POST["add"]||strpos($B,"\n")?'
    ':'')."\n".($lb?html_select("collation",array(""=>"(".lang(106).")")+$lb,$K["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):""),' ';if(DB!="")echo"".confirm(lang(183,DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo icon("plus","add[0]","+",lang(113))."\n";echo input_token(),'

    ';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$m){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(199));else{$B=trim($K["name"]);$_ .=urlencode($B);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($B),$_,lang(200));elseif($_GET["ns"]!=$B)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($B),$_,lang(201));else redirect($_);}}page_header($_GET["ns"]!=""?lang(68):lang(69),$m);if(!$K)$K["name"]=$_GET["ns"];echo'

    ';if($_GET["ns"]!="")echo"".confirm(lang(183,$_GET["ns"]))."\n";echo input_token(),'

    ';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(202).": ".h($ca),$m);$Dh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Yd=array();$tg=array();foreach($Dh["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT"&&JUSH=='sql')$tg[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Yd[]=$t;}if(!$m&&$_POST){$Ua=array();foreach($Dh["fields"]as$y=>$n){$X="";if(in_array($y,$Yd)){$X=process_input($n);if($X===false)$X="''";if(isset($tg[$y]))connection()->query("SET @".idf_escape($n["field"])." = $X");}if(isset($tg[$y]))$Ua[]="@".idf_escape($n["field"]);elseif(in_array($y,$Yd))$Ua[]=$X;}$H=(isset($_GET["callf"])?"SELECT ":"CALL ").($Dh["returns"]["type"]=="record"?"* FROM ":"").table($ca)."(".implode(", ",$Ua).")";$si=microtime(true);$I=connection()->multi_query($H);$qa=connection()->affected_rows;echo adminer()->selectQuery($H,$si,!$I);if(!$I)echo"

    ".error()."\n";else{$h=connect();if($h)$h->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$h);else echo"

    ".lang(203,$qa)." ".@date("H:i:s")."\n";}while(connection()->next_result());if($tg)print_select_result(connection()->query("SELECT ".implode(", ",$tg)));}}echo'

    ';if($Yd){echo"\n";foreach($Yd as$y){$n=$Dh["fields"][$y];$B=$n["field"];echo"
    ".adminer()->fieldName($n);$Y=idx($_POST["fields"],$B);if($Y!=""){if($n["type"]=="set")$Y=implode(",",$Y);}input($n,$Y,idx($_POST["function"],$B,""));echo"\n";}echo"
    \n";}echo'

    ',input_token(),'

    ';function
    pre_tr($Hh){return
    preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($Hh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
    preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($A){$ed=pre_tr($A[2]);return"\n".($A[1]?"$ed\n":$ed).pre_tr($A[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($Dh['comment']))));echo'
    ';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$B=$_GET["name"];$K=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$Mi=array();foreach($K["source"]as$y=>$X)$Mi[$y]=$K["target"][$y];$K["target"]=$Mi;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $B"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($B==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($B)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(204):($B!=""?lang(205):lang(206))),$I);if(!$K["drop"])$m=lang(207);}page_header(lang(208),$m,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($B!=""){$nd=foreign_keys($a);$K=$nd[$B];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
    ';$ji=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$pg=get_schema();set_schema($K["ns"]);}$ph=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Mi=array_keys(fields(in_array($K["table"],$ph)?$K["table"]:reset($ph)));$Zf="this.form['change-js'].value = '1'; this.form.submit();";echo"

    \n";if(support("scheme")){$Kh=array_filter(adminer()->schemas(),function($Jh){return!preg_match('~^information_schema$~i',$Jh);});echo"";if($K["ns"]!="")set_schema($pg);}elseif(JUSH!="sqlite"){$Sb=array();foreach(adminer()->databases()as$k){if(!information_schema($k))$Sb[]=$k;}echo"";}echo input_hidden("change-js"),'

    ';$Ae=0;foreach($K["source"]as$y=>$X){echo"","
    ',lang(142),'',lang(143),'
    ".html_select("source[".(+$y)."]",array(-1=>"")+$ji,$X,($Ae==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"".html_select("target[".(+$y)."]",$Mi,idx($K["target"],$y),"","label-target");$Ae++;}echo'

    ',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",)),'

    ';if($B!="")echo'',confirm(lang(183,$B));echo input_token(),'

    ';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$qg="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$qg=strtoupper($P["Engine"]);}if($_POST&&!$m){$B=trim($K["name"]);$ya=" AS\n$K[select]";$We=ME."table=".urlencode($B);$pf=lang(212);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$B&&JUSH!="sqlite"&&$U=="VIEW"&&$qg=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($B).$ya,$We,$pf);else{$Oi=$B."_adminer_".uniqid();drop_create("DROP $qg ".table($a),"CREATE $U ".table($B).$ya,"DROP $U ".table($B),"CREATE $U ".table($Oi).$ya,"DROP $U ".table($Oi),($_POST["drop"]?substr(ME,0,-1):$We),lang(213),$pf,lang(214),$a,$B);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($qg!="VIEW");if(!$m)$m=error();}page_header(($a!=""?lang(44):lang(215)),$m,array("table"=>$a),h($a));echo'

    ',lang(193),': ',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],lang(136)):""),'

    ';textarea("select",$K["select"]);echo'

    ';if($a!="")echo'',confirm(lang(183,$a));echo input_token(),'

    ';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$se=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$ti=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(216));elseif(in_array($K["INTERVAL_FIELD"],$se)&&isset($ti[$K["STATUS"]])){$Ih="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(217):lang(218)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Ih.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Ih)."\n".$ti[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(219).": ".h($aa):lang(220)),$m);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
    ',lang(193),'
    ',lang(221),'
    ',lang(222),'
    ',lang(223),' ',html_select("INTERVAL_FIELD",$se,$K["INTERVAL_FIELD"]),'
    ',lang(123),'',html_select("STATUS",$ti,$K["STATUS"]),'
    ',lang(50),'
    ',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",lang(224)),'

    ';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'

    ';if($aa!="")echo'',confirm(lang(183,$aa));echo input_token(),'

    ';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$Dh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$m){$mg=routine($_GET["procedure"],$Dh);$Oi="$K[name]_adminer_".uniqid();foreach($K["fields"]as$y=>$n){if($n["field"]=="")unset($K["fields"][$y]);}drop_create("DROP $Dh ".routine_id($ca,$mg),create_routine($Dh,$K),"DROP $Dh ".routine_id($K["name"],$K),create_routine($Dh,array("name"=>$Oi)+$K),"DROP $Dh ".routine_id($Oi,$K),substr(ME,0,-1),lang(225),lang(226),lang(227),$ca,$K["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(228):lang(229)).": ".h($ca):(isset($_GET["function"])?lang(230):lang(231))),$m);if(!$_POST){if($ca=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$Dh);$K["name"]=$ca;}}$lb=get_vals("SHOW CHARACTER SET");sort($lb);$Eh=routine_languages();echo($lb?"".optionlist($lb)."":""),'

    ',lang(193),': ',($Eh?"\n":""),'

    ';edit_fields($K["fields"],$lb,$Dh);if(isset($_GET["function"])){echo"
    ".lang(232);edit_type("returns",(array)$K["returns"],$lb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'
    ',script("editFields();"),'

    ';textarea("definition",$K["definition"],20);echo'

    ';if($ca!="")echo'',confirm(lang(183,$ca));echo input_token(),'

    ';}elseif(isset($_GET["sequence"])){$ea=$_GET["sequence"];$K=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);$B=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($ea),$_,lang(233));elseif($ea=="")query_redirect("CREATE SEQUENCE ".idf_escape($B),$_,lang(234));elseif($ea!=$B)query_redirect("ALTER SEQUENCE ".idf_escape($ea)." RENAME TO ".idf_escape($B),$_,lang(235));else redirect($_);}page_header($ea!=""?lang(236).": ".h($ea):lang(237),$m);if(!$K)$K["name"]=$ea;echo'

    ';if($ea!="")echo"".confirm(lang(183,$ea))."\n";echo input_token(),'

    ';}elseif(isset($_GET["type"])){$fa=$_GET["type"];$K=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($fa),$_,lang(238));else query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,lang(239));}page_header($fa!=""?lang(240).": ".h($fa):lang(241),$m);if(!$K)$K["as"]="AS ";echo'

    ';if($fa!=""){$rj=driver()->types();$Dc=type_values($rj[$fa]);if($Dc)echo"ENUM (".h($Dc).")\n

    ";echo"".confirm(lang(183,$fa))."\n";}else{echo lang(193).": \n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$K["as"]);echo"

    \n";}echo input_token(),'

    ';}elseif(isset($_GET["check"])){$a=$_GET["check"];$B=$_GET["name"];$K=$_POST;if($K&&!$m){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$B",($K["drop"]?"":$K["clause"]));else{$I=($B==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($B)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(242):($B!=""?lang(243):lang(244))),$I);}page_header(($B!=""?lang(245).": ".h($B):lang(147)),$m,array("table"=>$a));if(!$K){$cb=driver()->checkConstraints($a);$K=array("name"=>$B,"clause"=>$cb[$B]);}echo'

    ';if(JUSH!="sqlite")echo lang(193).': ';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",),"?"),'

    ';textarea("clause",$K["clause"]);echo'

    ';if($B!="")echo'',confirm(lang(183,$B));echo input_token(),'

    ';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$B="$_GET[name]";$nj=trigger_options();$K=(array)trigger($B,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$nj["Timing"])&&in_array($_POST["Event"],$nj["Event"])&&in_array($_POST["Type"],$nj["Type"])){$Wf=" ON ".table($a);$kc="DROP TRIGGER ".idf_escape($B).(JUSH=="pgsql"?$Wf:"");$We=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($kc,$We,lang(246));else{if($B!="")queries($kc);queries_redirect($We,($B!=""?lang(247):lang(248)),queries(create_trigger($Wf,$_POST)));if($B!="")queries(create_trigger($Wf,$K+array("Type"=>reset($nj["Type"]))));}}$K=$_POST;}page_header(($B!=""?lang(249).": ".h($B):lang(250)),$m,array("table"=>$a));echo'
    ',lang(251),'',html_select("Timing",$nj["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
    ',lang(252),'',html_select("Event",$nj["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$nj["Event"])?" ":""),'
    ',lang(49),'',html_select("Type",$nj["Type"],$K["Type"]),'

    ',lang(193),': ',script("qs('#form')['Timing'].onchange();"),'

    ';textarea("Statement",$K["Statement"]);echo'

    ';if($B!="")echo'',confirm(lang(183,$B));echo input_token(),'

    ';}elseif(isset($_GET["user"])){$ga=$_GET["user"];$dh=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$Bb)$dh[$Bb][$K["Privilege"]]=$K["Comment"];}$dh["Server Admin"]+=$dh["File access on server"];$dh["Databases"]["Create routine"]=$dh["Procedures"]["Create routine"];unset($dh["Procedures"]["Create routine"]);$dh["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$dh["Columns"][$X]=$dh["Tables"][$X];unset($dh["Server Admin"]["Usage"]);foreach($dh["Tables"]as$y=>$X)unset($dh["Databases"][$y]);$Ef=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Ef[$X]=(array)$Ef[$X]+idx($_POST["grants"],$y,array());}$xd=array();$Uf="";if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($ga)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$df,PREG_SET_ORDER)){foreach($df as$X){if($X[1]!="USAGE")$xd["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$xd["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$A))$Uf=$A[1];}}if($_POST&&!$m){$Vf=(isset($_GET["host"])?q($ga)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Vf",ME."privileges=",lang(253));else{$Gf=q($_POST["user"])."@".q($_POST["host"]);$Ig=$_POST["pass"];if($Ig!=''&&!$_POST["hashed"]&&!min_version(8)){$Ig=get_val("SELECT PASSWORD(".q($Ig).")");$m=!$Ig;}$Gb=false;if(!$m){if($Vf!=$Gf){$Gb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Gf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Ig));$m=!$Gb;}elseif($Ig!=$Uf)queries("SET PASSWORD FOR $Gf = ".q($Ig));}if(!$m){$Ah=array();foreach($Ef as$Of=>$wd){if(isset($_GET["grant"]))$wd=array_filter($wd);$wd=array_keys($wd);if(isset($_GET["grant"]))$Ah=array_diff(array_keys(array_filter($Ef[$Of],'strlen')),$wd);elseif($Vf==$Gf){$Sf=array_keys((array)$xd[$Of]);$Ah=array_diff($Sf,$wd);$wd=array_diff($wd,$Sf);unset($xd[$Of]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$Of,$A)&&(!grant("REVOKE",$Ah,$A[2]," ON $A[1] FROM $Gf")||!grant("GRANT",$wd,$A[2]," ON $A[1] TO $Gf"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($Vf!=$Gf)queries("DROP USER $Vf");elseif(!isset($_GET["grant"])){foreach($xd as$Of=>$Ah){if(preg_match('~^(.+)(\(.*\))?$~U',$Of,$A))grant("REVOKE",array_keys($Ah),$A[2]," ON $A[1] FROM $Gf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(254):lang(255)),!$m);if($Gb)connection()->query("DROP USER $Gf");}}page_header((isset($_GET["host"])?lang(35).": ".h("$ga@$_GET[host]"):lang(155)),$m,array("privileges"=>array('',lang(71))));$K=$_POST;if($K)$xd=$Ef;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Uf;if($Uf!="")$K["hashed"]=true;$xd[(DB==""||$xd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    ',lang(34),'
    ',lang(35),'
    ',lang(36),' ',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$K["hashed"],lang(256),"typePassword(this.form['pass'], this.checked);")),'
    ',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(34),"Databases"=>lang(37),"Tables"=>lang(138),"Columns"=>lang(48),"Procedures"=>lang(257),)as$Bb=>$ac){foreach((array)$dh[$Bb]as$ch=>$qb){echo"$ac'.h($ch);$t=0;foreach($xd as$Of=>$wd){$B="'grants[$t][".h(strtoupper($ch))."]'";$Y=$wd[strtoupper($ch)];if($Bb=="Server Admin"&&$Of!=(isset($xd["*.*"])?"*.*":".*"))echo"
    ".lang(71).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($xd as$Of=>$wd){echo''.($Of!="*.*"?"":input_hidden("objects[$t]","*.*")."*.*");$t++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else echo"";$t++;}}}echo"
    \n",'

    ';if(isset($_GET["host"]))echo'',confirm(lang(183,"$ga@$_GET[host]"));echo input_token(),'

    ';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$Ge=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Ge++;}queries_redirect(ME."processlist=",lang(260,$Ge),$Ge||!$_POST["kill"]);}}page_header(lang(121),$m);echo'
    ',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(adminer()->processList()as$t=>$K){if(!$t){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($K as$y=>$X)echo"$y".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($y),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"
    ".checkbox("kill[]",$K[JUSH=="sql"?"Id":"pid"],0):"");foreach($K as$y=>$X)echo"".((JUSH=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$y=="current_query"&&$X!="")||(JUSH=="oracle"&&$y=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.lang(261).'':h($X));echo"\n";}echo'

    ';if(support("kill"))echo($t+1)."/".lang(262,max_connections()),"

    \n";echo input_token(),'

    ',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$o=fields($a);$nd=column_foreign_keys($a);$Qf=$S["Oid"];$pa=get_settings("adminer_import");$Bh=array();$e=array();$Ph=array();$ig=array();$Si="";foreach($o as$y=>$n){$B=adminer()->fieldName($n);$Cf=html_entity_decode(strip_tags($B),ENT_QUOTES);if(isset($n["privileges"]["select"])&&$B!=""){$e[$y]=$Cf;if(is_shortable($n))$Si=adminer()->selectLengthProcess();}if(isset($n["privileges"]["where"])&&$B!="")$Ph[$y]=$Cf;if(isset($n["privileges"]["order"])&&$B!="")$ig[$y]=$Cf;$Bh+=$n["privileges"];}list($M,$yd)=adminer()->selectColumnsProcess($e,$x);$M=array_unique($M);$yd=array_unique($yd);$we=count($yd)selectSearchProcess($o,$x);$hg=adminer()->selectOrderProcess($o,$x);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$wj=>$K){$ya=convert_field($o[key($K)]);$M=array($ya?:idf_escape(key($K)));$Z[]=where_check($wj,$o);$J=driver()->select($a,$M,$Z,$M);if($J)echo first($J->fetch_row());}exit;}$G=$yj=array();foreach($x as$w){if($w["type"]=="PRIMARY"){$G=array_flip($w["columns"]);$yj=($M?$G:array());foreach($yj as$y=>$X){if(in_array(idf_escape($y),$M))unset($yj[$y]);}break;}}if($Qf&&!$G){$G=$yj=array($Qf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($Qf));}if($_POST&&!$m){$Xj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$cb=array();foreach($_POST["check"]as$Ya)$cb[]=where_check($Ya,$o);$Xj[]="((".implode(") OR (",$cb)."))";}$Xj=($Xj?"\nWHERE ".implode(" AND ",$Xj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$rd=($M?implode(", ",$M):"*").convert_fields($e,$o,$M)."\nFROM ".table($a);$_d=($yd&&$we?"\nGROUP BY ".implode(", ",$yd):"").($hg?"\nORDER BY ".implode(", ",$hg):"");$H="SELECT $rd$Xj$_d";if(is_array($_POST["check"])&&!$G){$uj=array();foreach($_POST["check"]as$X)$uj[]="(SELECT".limit($rd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$_d,1).")";$H=implode(" UNION ALL ",$uj);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$nd)){if($_POST["save"]||$_POST["delete"]){$I=true;$qa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$B=>$X){$X=process_input($o[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($G&&is_array($_POST["check"]))||$we){$I=($_POST["delete"]?driver()->delete($a,$Xj):($_POST["clone"]?queries("INSERT $H$Xj".driver()->insertReturning($a)):driver()->update($a,$O,$Xj)));$qa=connection()->affected_rows;if(is_object($I))$qa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$Wj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$I=($_POST["delete"]?driver()->delete($a,$Wj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Wj)):driver()->update($a,$O,$Wj,1)));if(!$I)break;$qa+=connection()->affected_rows;}}}$pf=lang(264,$qa);if($_POST["clone"]&&$I&&$qa==1){$Me=last_id($I);if($Me)$pf=lang(176," $Me");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$pf,$I);if(!$_POST["delete"]){$Ug=(array)$_POST["fields"];edit_form($a,array_intersect_key($o,$Ug),$Ug,!$_POST["clone"],$m);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(265);else{$I=true;$qa=0;foreach($_POST["val"]as$wj=>$K){$O=array();foreach($K as$y=>$X){$y=bracket_escape($y,true);$O[idf_escape($y)]=(preg_match('~char|text~',$o[$y]["type"])||$X!=""?adminer()->processInput($o[$y],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($wj,$o),($we||$G?0:1)," ");if(!$I)break;$qa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang(264,$qa),$I);}}elseif(!is_string($bd=get_file("csv_file",true)))$m=upload_error($bd);elseif(!preg_match('~~u',$bd))$m=lang(266);else{save_settings(array("output"=>$pa["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$mb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$bd,$df);$qa=count($df[0]);driver()->begin();$Vh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($df[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Vh]*)$Vh~",$X.$Vh,$ef);if(!$y&&!array_diff($ef[1],$mb)){$mb=$ef[1];$qa--;}else{$O=array();foreach($ef[1]as$t=>$jb)$O[idf_escape($mb[$t])]=($jb==""&&$o[$mb[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$jb)?str_replace('""','"',substr($jb,1,-1)):$jb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$G));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang(267,$qa),$I);driver()->rollback();}}}$Di=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else page_header(lang(53).": $Di",$m);$O=null;if(isset($Bh["insert"])||!support("table")){$zg=array();foreach((array)$_GET["where"]as$X){if(isset($nd[$X["col"]])&&count($nd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$zg["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$zg?"&".http_build_query($zg):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"

    ".lang(268).($o?".":": ".error())."\n";else{echo"

    \n","
    ";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"
    \n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Ph,$x);adminer()->selectOrderPrint($hg,$ig,$x);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($Si);adminer()->selectActionPrint($x);echo"
    \n";$D=$_GET["page"];$qd=null;if($D=="last"){$qd=get_val(count_rows($a,$Z,$we,$yd));$D=floor(max(0,intval($qd)-1)/$z);}$Qh=$M;$zd=$yd;if(!$Qh){$Qh[]="*";$Cb=convert_fields($e,$o,$M);if($Cb)$Qh[]=substr($Cb,2);}foreach($M as$y=>$X){$n=$o[idf_unescape($X)];if($n&&($ya=convert_field($n)))$Qh[$y]="$ya AS $X";}if(!$we&&$yj){foreach($yj as$y=>$X){$Qh[]=idf_escape($y);if($zd)$zd[]=idf_escape($y);}}$I=driver()->select($a,$Qh,$Z,$zd,$hg,$z,$D,true);if(!$I)echo"

    ".error()."\n";else{if(JUSH=="mssql"&&$D)$I->seek($z*$D);$xc=array();echo"

    \n";$L=array();while($K=$I->fetch_assoc()){if($D&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$yd&&$we&&JUSH=="sql")$qd=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"

    ".lang(14)."\n";else{$Ga=adminer()->backwardKeys($a,$Di);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$yd&&$M?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$nd)as$Bf=>$K){$vj=unique_array($L[$Bf],$x);if(!$vj){$vj=array();reset($M);foreach($L[$Bf]as$y=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$vj[$y]=$X;next($M);}}$wj="";foreach($vj as$y=>$X){$n=(array)$o[$y];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$n["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$n["collation"])?$y:"CONVERT($y USING ".charset(connection()).")").")";$X=md5($X);}$wj .="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($y));}echo"".(!$yd&&$M?"":"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(269)."");$Df=array();$td=array();reset($M);$mh=1;foreach($L[0]as$y=>$X){if(!isset($yj[$y])){$X=idx($_GET["columns"],key($M))?:array();$n=$o[$M?($X?$X["col"]:current($M)):$y];$B=($n?adminer()->fieldName($n,$mh):($X["fun"]?"*":h($y)));if($B!=""){$mh++;$Df[$y]=$B;$d=idf_escape($y);$Pd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$ac="&desc%5B0%5D=1";echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$sd=apply_sql_function($X["fun"],$B);$ii=isset($n["privileges"]["order"])||$sd;echo($ii?"$sd":$sd),"";}$td[$y]=$X["fun"];next($M);}}$Se=array();if($_GET["modify"]){foreach($L as$K){foreach($K as$y=>$X)$Se[$y]=max($Se[$y],min(40,strlen(utf8_decode($X))));}}echo($Ga?"".lang(270):"")."
    ".checkbox("check[]",substr($wj,1),in_array(substr($wj,1),(array)$_POST["check"])).($we||information_schema(DB)?"":" ".lang(271).""));reset($M);foreach($K as$y=>$X){if(isset($Df[$y])){$d=current($M);$n=(array)$o[$y];$X=driver()->value($X,$n);if($X!=""&&(!isset($xc[$y])||$xc[$y]!=""))$xc[$y]=(is_mail($X)?$Df[$y]:"");$_="";if(is_blob($n)&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$wj;if(!$_&&$X!==null){foreach((array)$nd[$y]as$q){if(count($nd[$y])==1||end($q["source"])==$y){$_="";foreach($q["source"]as$t=>$ji)$_ .=where_link($t,$q["target"][$t],$L[$Bf][$ji]);$_=($q["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($q["db"]),ME):ME).'select='.urlencode($q["table"]).$_;if($q["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($q["ns"]),$_);if(count($q["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$vj))$_ .=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($vj as$Ce=>$W)$_ .=where_link($t++,$Ce,$W);}$Qd=select_value($X,$_,$n,$Si);$u=h("val[$wj][".bracket_escape($y)."]");$Vg=idx(idx($_POST["val"],$wj),bracket_escape($y));$sc=!is_array($K[$y])&&is_utf8($Qd)&&$L[$Bf][$y]==$K[$y]&&!$td[$y]&&!$n["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$o[idf_unescape($A[2])]["type"]:$n["type"]);$Qi=preg_match('~text|json|lob~',$U);$xe=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"".($Qi?"":"");}else{$Ye=strpos($Qd,"");echo" data-text='".($Ye?2:($Qi?1:0))."'".($sc?"":" data-warning='".h(lang(272))."'").">$Qd";}}next($M);}if($Ga)echo"";adminer()->backwardKeysPrint($Ga,$L[$Bf]);echo"
    \n","
    \n";}if(!is_ajax()){if($L||$D){$Kc=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$D)))$qd=($D?$D*$z:0)+count($L);elseif(JUSH!="sql"||!$we){$qd=($we?false:found_rows($S,$Z));if(intval($qd)$z||$D));if($xg)echo(($qd===false?count($L)+1:$qd-$D*$z)>$z?'

    '.lang(273).''.script("qsl('a').onclick = partial(selectLoadMore, $z, '".lang(274)."…');",""):''),"\n";echo"

    \n";}if(adminer()->selectImportPrint())echo"

    ","".lang(75)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"";echo input_token(),"

    \n",(!$yd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(123):lang(122));$Nj=($P?show_status():show_variables());if(!$Nj)echo"

    ".lang(14)."\n";else{echo"\n";foreach($Nj as$K){echo"";$y=array_shift($K);echo"
    ".h($y)."";foreach($K as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$_i=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$B=>$S){json_row("Comment-$B",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$y)json_row("$y-$B",h($S[$y]));foreach($_i+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=format_number($S[$y]);if($X>=0)json_row("$y-$B",($y=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($_i[$y]))$_i[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))json_row("$y-$B","?");}}}foreach($_i as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Ki=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Ki&&!$m&&!$_POST["search"]){$I=true;$pf="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$I=truncate_tables($_POST["tables"]);$pf=lang(278);}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$pf=lang(279);}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$pf=lang(280);}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$pf=lang(281);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$pf .="".h($R).": ".h($K["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$pf=lang(282);}elseif(!$_POST["tables"])$pf=lang(11);elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$pf .="".h($K["Table"]).": ".h($K["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$pf,$I);}page_header(($_GET["ns"]==""?lang(37).": ".h(DB):lang(79).": ".h($_GET["ns"])),$m,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"

    ".lang(283)."

    \n";$Ji=tables_list();if(!$Ji)echo"

    ".lang(11)."\n";else{echo"

    \n";if(support("table")){echo"
    ".lang(284)."
    ",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," ",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($Ji as$B=>$U){$Qj=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$B);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(138),''.lang(285).doc_link(array('sql'=>'storage-engines.html')),''.lang(127).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),''.lang(286).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),''.lang(287).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),''.lang(288).doc_link(array('sql'=>'show-table-status.html')),''.lang(51).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),''.lang(289).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?''.lang(50).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"
    '.checkbox(($Qj?"views[]":"tables[]"),$B,in_array("$B",$Ki,true),"","","",$u),''.(support("table")||support("indexes")?"".h($B).'':h($B));if($Qj&&!preg_match('~materialized~i',$U)){$Wi=lang(137);echo''.(support("view")?"$Wi":$Wi),'?';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(43)),"Index_length"=>array("indexes",lang(141)),"Data_free"=>array("edit",lang(45)),"Auto_increment"=>array("auto_increment=1&create",lang(43)),"Rows"=>array("select",lang(41)),)as$y=>$_){$u=" id='$y-".h($B)."'";echo($_?"".(support("table")||$y=="Rows"||(support("indexes")&&$y!="Data_length")?"?":"?"):"");}$T++;}echo(support("comment")?"":""),"\n";}echo"
    ".lang(262,count($Ji)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo"";echo"\n","
    \n",script("ajaxSetHtml('".js_escape(ME)."script=db');"),"
    \n";if(!information_schema(DB)){echo"\n";}echo"
    \n",script("tableCheck();");}echo"

    ".lang(72)."

    \n";$Fh=routines();if($Fh){echo"\n",'\n";foreach($Fh as$K){$B=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'','
    '.lang(193).''.lang(49).''.lang(232)."
    '.h($K["ROUTINE_NAME"]).'',''.h($K["ROUTINE_TYPE"]),''.h($K["DTD_IDENTIFIER"]),''.lang(144)."";}echo"
    \n";}echo'

    ".lang(73)."

    \n";$Yh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Yh){echo"\n","\n";foreach($Yh as$X)echo"
    ".lang(193)."
    ".h($X)."\n";echo"
    \n";}echo"

    ".lang(6)."

    \n";$Ij=types();if($Ij){echo"\n","\n";foreach($Ij as$X)echo"
    ".lang(193)."
    ".h($X)."\n";echo"
    \n";}echo"

    ".lang(74)."

    \n";$L=get_rows("SHOW EVENTS");if($L){echo"\n","\n";foreach($L as$K)echo"","
    ".lang(193)."".lang(300)."".lang(221)."".lang(222)."
    ".h($K["Name"]),"".($K["Execute at"]?lang(301)."".$K["Execute at"]:lang(223)." ".$K["Interval value"]." ".$K["Interval field"]."$K[Starts]"),"$K[Ends]",''.lang(144).'';echo"
    \n";$Ic=get_val("SELECT @@event_scheduler");if($Ic&&$Ic!="ON")echo"

    event_scheduler: ".h($Ic)."\n";}echo'