$W){unset($og[$y][$de]);if(is_array($W)){$og[$y][stripslashes($de)]=$W;$og[]=&$og[$y][stripslashes($de)];}else$og[$y][stripslashes($de)]=($Sc?$W:stripslashes($W));}}}}function bracket_escape($v,$Da=false){static$ni=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return strtr($v,($Da?array_flip($ni):$ni));}function min_version($Ui,$_e="",$h=null){global$g;if(!$h)$h=$g;$gh=$h->server_info;if($_e&&preg_match('~([\d.]+)-MariaDB~',$gh,$A)){$gh=$A[1];$Ui=$_e;}return$Ui&&version_compare($gh,$Ui)>=0;}function charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function script($rh,$mi="\n"){return"$rh$mi";}function script_src($Ii){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}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($C,$Y,$Wa,$ie="",$qf="",$ab="",$je=""){$J="".($qf?script("qsl('input').onclick = function () { $qf };",""):"");return($ie!=""||$ab?"$J".h($ie)."":$J);}function optionlist($vf,$Yg=null,$Mi=false){$J="";foreach($vf as$de=>$W){$wf=array($de=>$W);if(is_array($W)){$J.='';$wf=$W;}foreach($wf as$y=>$X)$J.=''.h($X);if(is_array($W))$J.='';}return$J;}function html_select($C,$vf,$Y="",$pf="",$je=""){return"".($pf?script("qsl('select').onchange = function () { $pf };",""):"");}function html_radios($C,$vf,$Y=""){$J="";foreach($vf as$y=>$X)$J.="";return$J;}function confirm($Ke="",$Zg="qsl('input')"){return script("$Zg.onclick = function () { return confirm('".($Ke?js_escape($Ke):lang(0))."'); };","");}function print_fieldset($u,$re,$Xi=false){echo"
","$re",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"","
\n";}function selectSearchPrint($Z,$e,$x){print_fieldset("search",lang(55),$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";}}$Ra="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"
".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(56).")"),html_select("where[$t][op]",$this->operators,$X["op"],$Ra),"",script("mixin(qsl('input'), {oninput: function () { $Ra }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}}echo"\n";}function selectOrderPrint($xf,$e,$x){print_fieldset("sort",lang(57),$xf);$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(58))."
\n";$t++;}}echo"
".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(58))."
\n","\n";}function selectLimitPrint($z){echo"
".lang(59)."
";echo"",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function selectLengthPrint($Zh){if($Zh!==null){echo"
".lang(60)."
","","
\n";}}function selectActionPrint($x){echo"
".lang(61)."
",""," ","\n","var indexColumns = ";$e=array();foreach($x as$w){$Eb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$Eb)$e[$Eb]=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($mc,$e){}function selectColumnsProcess($e,$x){global$m;$M=array();$nd=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$m->functions)||in_array($X["fun"],$m->grouping)))){$M[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$m->grouping))$nd[]=$M[$y];}}return array($M,$nd);}function selectSearchProcess($p,$x){global$g,$m;$J=array();foreach($x as$t=>$w){if($w["type"]=="FULLTEXT"&&$_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){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$hg="";$ob=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Hd=process_length($X["val"]);$ob.=" ".($Hd!=""?$Hd:"(NULL)");}elseif($X["op"]=="SQL")$ob=" $X[val]";elseif($X["op"]=="LIKE %%")$ob=" LIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$ob=" ILIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$hg="$X[op](".q($X["val"]).", ";$ob=")";}elseif(!preg_match('~NULL$~',$X["op"]))$ob.=" ".$this->processInput($p[$X["col"]],$X["val"]);if($X["col"]!="")$J[]=$hg.$m->convertSearch(idf_escape($X["col"]),$X,$p[$X["col"]]).$ob;else{$hb=array();foreach($p as$C=>$o){if(isset($o["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$o["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$o["type"]))&&(!preg_match('~date|timestamp~',$o["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$hb[]=$hg.$m->convertSearch(idf_escape($C),$X,$o).$ob;}$J[]=($hb?"(".implode(" OR ",$hb).")":"1 = 0");}}}return$J;}function selectOrderProcess($p,$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"])?$_GET["limit"]:"50");}function selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function selectEmailProcess($Z,$bd){return false;}function selectQueryBuild($M,$Z,$nd,$xf,$z,$E){return"";}function messageQuery($H,$ai,$Kc=false){global$m;restart_session();$zd=&get_session("queries");if(!$zd[$_GET["db"]])$zd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$zd[$_GET["db"]][]=array($H,time(),$ai);$wh="sql-".count($zd[$_GET["db"]]);$J="".lang(63)."\n";if(!$Kc&&($Zi=$m->warnings())){$u="warnings-".count($zd[$_GET["db"]]);$J="".lang(45).", $J\n";}return" ".@date("H:i:s").""." $J';}function editRowPrint($R,$p,$K,$Gi){}function editFunctions($o){global$m;$J=($o["null"]?"NULL/":"");$Gi=isset($_GET["select"])||where($_GET);foreach($m->editFunctions as$y=>$id){if(!$y||(!isset($_GET["call"])&&$Gi)){foreach($id as$Xf=>$X){if(!$Xf||preg_match("~$Xf~",$o["type"]))$J.="/$X";}}if($y&&!preg_match('~set|blob|bytea|raw|file|bool~',$o["type"]))$J.="/SQL";}if($o["auto_increment"]&&!$Gi)$J=lang(50);return explode("/",$J);}function editInput($R,$o,$_a,$Y){if($o["type"]=="enum")return(isset($_GET["select"])?" ":"").($o["null"]?" ":"").enum_input("radio",$_a,$o,$Y,$Y===0?0:null);return"";}function editHint($R,$o,$Y){return"";}function processInput($o,$Y,$s=""){if($s=="SQL")return$Y;$C=$o["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($C)." $s $J";elseif(preg_match('~^[+-] interval$~',$s))$J=idf_escape($C)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$J="$s(".idf_escape($C).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$J="$s($J)";return unconvert_field($o,$J);}function dumpOutput(){$J=array('text'=>lang(64),'file'=>lang(65));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,$Dh,$ae=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Dh)dump_csv(array_keys(fields($R)));}else{if($ae==2){$p=array();foreach(fields($R)as$C=>$o)$p[]=idf_escape($C)." $o[full_type]";$i="CREATE TABLE ".table($R)." (".implode(", ",$p).")";}else$i=create_sql($R,$_POST["auto_increment"],$Dh);set_utf8mb4($i);if($Dh&&$i){if($Dh=="DROP+CREATE"||$ae==1)echo"DROP ".($ae==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($ae==1)$i=remove_definer($i);echo"$i;\n\n";}}}function dumpData($R,$Dh,$H){global$g;if($Dh){$De=(JUSH=="sqlite"?0:1048576);$p=array();$Ed=false;if($_POST["format"]=="sql"){if($Dh=="TRUNCATE+INSERT")echo truncate_sql($R).";\n";$p=fields($R);if(JUSH=="mssql"){foreach($p as$o){if($o["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Ed=true;break;}}}}$I=$g->query($H,1);if($I){$Rd="";$Ma="";$fe=array();$jd=array();$Fh="";$Nc=($R!=''?'fetch_assoc':'fetch_row');while($K=$I->$Nc()){if(!$fe){$Ri=array();foreach($K as$X){$o=$I->fetch_field();if($p[$o->name]['generated']){$jd[$o->name]=true;continue;}$fe[]=$o->name;$y=idf_escape($o->name);$Ri[]="$y = VALUES($y)";}$Fh=($Dh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ri):"").";\n";}if($_POST["format"]!="sql"){if($Dh=="table"){dump_csv($fe);$Dh="INSERT";}dump_csv($K);}else{if(!$Rd)$Rd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$fe)).") VALUES";foreach($K as$y=>$X){if($jd[$y]){unset($K[$y]);continue;}$o=$p[$y];$K[$y]=($X!==null?unconvert_field($o,preg_match(number_type(),$o["type"])&&!preg_match('~\[~',$o["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Qg=($De?"\n":" ")."(".implode(",\t",$K).")";if(!$Ma)$Ma=$Rd.$Qg;elseif(strlen($Ma)+4+strlen($Qg)+strlen($Fh)<$De)$Ma.=",$Qg";else{echo$Ma.$Fh;$Ma=$Rd.$Qg;}}}if($Ma)echo$Ma.$Fh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";if($Ed)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function dumpFilename($Cd){return friendly_url($Cd!=""?$Cd:(SERVER!=""?SERVER:"localhost"));}function dumpHeaders($Cd,$Re=false){$Jf=$_POST["output"];$Fc=(preg_match('~sql~',$_POST["format"])?"sql":($Re?"tar":"csv"));header("Content-Type: ".($Jf=="gz"?"application/x-gzip":($Fc=="tar"?"application/x-tar":($Fc=="sql"||$Jf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Jf=="gz"){ob_start(function($Q){return gzencode($Q);},1e6);}return$Fc;}function dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function importServerPath(){return"adminer.sql";}function homepage(){echo'

',$this->name(),' ',$ia,' ',(version_compare($ia,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'

';switch_lang();if($Qe=="auth"){$Jf="";foreach((array)$_SESSION["pwds"]as$Ti=>$hh){foreach($hh as$N=>$Oi){foreach($Oi as$V=>$F){if($F!==null){$Kb=$_SESSION["db"][$Ti][$N][$V];foreach(($Kb?array_keys($Kb):array(""))as$k)$Jf.="
  • ($Yb[$Ti]) ".h($V.($N!=""?"@".$this->serverName($N):"").($k!=""?" - $k":""))."\n";}}}}if($Jf)echo"
      \n$Jf
    \n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Qe&&DB!=""){$g->select_db(DB);$T=table_status('',true);}echo script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.0.5");if(support("sql")){echo' ';if($T){$ve=array();foreach($T as$R=>$U)$ve[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$ve).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";}echo'bodyLoad(\'',(is_object($g)?preg_replace('~^(\d\.?\d).*~s','\1',$g->server_info):""),'\'',($g->maria?", true":""),'); ';}$this->databasesPrint($Qe);$ma=array();if(DB==""||!$Qe){if(support("sql")){$ma[]="".lang(63)."";$ma[]="".lang(71)."";}$ma[]="".lang(72)."";}$Id=$_GET["ns"]!==""&&!$Qe&&DB!="";if($Id)$ma[]='".lang(73)."";echo($ma?"

    ".lang(9)."

    \n";}}}function databasesPrint($Qe){global$b,$g;$j=$this->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo'

    ';hidden_fields_get();$Ib=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"".lang(74).": ".($j?html_select("db",array(""=>"")+$j,DB).$Ib:"\n"),"\n";if(support("scheme")){if($Qe!="db"&&DB!=""&&$g->select_db(DB)){echo"
    ".lang(75).": ".html_select("ns",array(""=>"")+$b->schemas(),$_GET["ns"]).$Ib;if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"";break;}}echo"

    \n";}function tablesPrint($T){echo"
      ".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T as$R=>$P){$C=$this->tableName($P);if($C!=""){echo'
    • ".lang(76)." ",(support("table")||support("indexes")?'$C":"$C")."\n";}}echo"
    \n";}}$b=(function_exists('adminer_object')?adminer_object():new Adminer);$Yb=array("server"=>"MySQL")+$Yb;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")){class Db extends \MySQLi{var$extension="MySQLi";function __construct(){parent::init();}function connect($N="",$V="",$F="",$Hb=null,$bg=null,$ph=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Ad,$bg)=explode(":",$N,2);$zh=$b->connectSsl();if($zh)$this->ssl_set($zh['key'],$zh['cert'],$zh['ca'],'','');$J=@$this->real_connect(($N!=""?$Ad:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$Hb,(is_numeric($bg)?$bg:ini_get("mysqli.default_port")),(!is_numeric($bg)?$bg:$ph),($zh?($zh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$J;}function set_charset($Sa){if(parent::set_charset($Sa))return true;parent::set_charset('utf8');return$this->query("SET NAMES $Sa");}function result($H,$o=0){$I=$this->query($H);if(!$I)return false;$K=$I->fetch_array();return$K[$o];}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{var$extension="MySQL",$server_info,$affected_rows,$errno,$error;private$link,$result;function connect($N,$V,$F){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(77,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return false;}$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)$this->server_info=mysql_get_server_info($this->link);else$this->error=mysql_error();return(bool)$this->link;}function set_charset($Sa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Sa,$this->link))return true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Sa");}function quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function select_db($Hb){return mysql_select_db($Hb,$this->link);}function query($H,$zi=false){$I=@($zi?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);}function multi_query($H){return$this->result=$this->query($H);}function store_result(){return$this->result;}function next_result(){return false;}function result($H,$o=0){$I=$this->query($H);return($I?$I->fetch_column($o):false);}}class Result{var$num_rows;private$result,$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_column($o){return($this->num_rows?mysql_result($this->result,0,$o):false);}function fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$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 connect($N,$V,$F){global$b;$vf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$zh=$b->connectSsl();if($zh){if($zh['key'])$vf[\PDO::MYSQL_ATTR_SSL_KEY]=$zh['key'];if($zh['cert'])$vf[\PDO::MYSQL_ATTR_SSL_CERT]=$zh['cert'];if($zh['ca'])$vf[\PDO::MYSQL_ATTR_SSL_CA]=$zh['ca'];if(isset($zh['verify']))$vf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$zh['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$vf);return true;}function set_charset($Sa){$this->query("SET NAMES $Sa");}function select_db($Hb){return$this->query("USE ".idf_escape($Hb));}function query($H,$zi=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$zi);return parent::query($H,$zi);}}}class Driver extends SqlDriver{static$fg=array("MySQLi","MySQL","PDO_MySQL");static$ce="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");function __construct($g){parent::__construct($g);$this->types=array(lang(25)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(26)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(27)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(78)=>array("enum"=>65535,"set"=>64),lang(28)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(30)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->editFunctions=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));if(min_version('5.7.8',10.2,$g))$this->types[lang(27)]["json"]=4294967295;if(min_version('',10.7,$g)){$this->types[lang(27)]["uuid"]=128;$this->editFunctions[0]['uuid']='uuid';}if(min_version(9,'',$g)){$this->types[lang(25)]["vector"]=16383;$this->editFunctions[0]['vector']='string_to_vector';}if(min_version(5.7,10.2,$g))$this->generated=array("STORED","VIRTUAL");}function unconvertFunction($o){return(preg_match("~binary~",$o["type"])?"UNHEX":($o["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$o["type"])?"GeomFromText":"")));}function insert($R,$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function insertUpdate($R,$L,$G){$e=array_keys(reset($L));$hg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ri=array();foreach($e as$y)$Ri[$y]="$y = VALUES($y)";$Fh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ri);$Ri=array();$se=0;foreach($L as$O){$Y="(".implode(", ",$O).")";if($Ri&&(strlen($hg)+$se+strlen($Y)+strlen($Fh)>1e6)){if(!queries($hg.implode(",\n",$Ri).$Fh))return false;$Ri=array();$se=0;}$Ri[]=$Y;$se+=strlen($Y)+2;}return queries($hg.implode(",\n",$Ri).$Fh);}function slowQuery($H,$bi){if(min_version('5.7.8','10.1.2')){if($this->conn->maria)return"SET STATEMENT max_statement_time=$bi FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($bi*1000).") */ $A[2]";}}function convertSearch($v,$X,$o){return(preg_match('~char|text|enum|set~',$o["type"])&&!preg_match("~^utf8~",$o["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();select($I);return ob_get_clean();}}function tableHelp($C,$ae=false){$ze=$this->conn->maria;if(information_schema(DB))return strtolower("information-schema-".($ze?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($ze?"mysql$C-table/":"system-schema.html");}function hasCStyleEscapes(){static$Oa;if($Oa===null){$xh=$this->conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Oa=(strpos($xh,'NO_BACKSLASH_ESCAPES')===false);}return$Oa;}}function idf_escape($v){return"`".str_replace("`","``",$v)."`";}function table($v){return idf_escape($v);}function connect($Ab){$g=new Db;if($g->connect($Ab[0],$Ab[1],$Ab[2])){$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");$g->maria=preg_match('~MariaDB~',$g->server_info);return$g;}$J=$g->error;if(function_exists('iconv')&&!is_utf8($J)&&strlen($Qg=iconv("windows-1250","utf-8",$J))>strlen($J))$J=$Qg;return$J;}function get_databases($Yc){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($Yc?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function limit($H,$Z,$z,$D=0,$ch=" "){return" $H$Z".($z!==null?$ch."LIMIT $z".($D?" OFFSET $D":""):"");}function limit1($R,$H,$Z,$ch="\n"){return limit($H,$Z,1,0,$ch);}function db_collation($k,$gb){$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=$gb[$A[1]][-1];return$J;}function engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}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($j){$J=array();foreach($j as$k)$J[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$J;}function table_status($C="",$Lc=false){$J=array();foreach(get_rows($Lc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($C!=""){$K["Name"]=$C;return$K;}$J[$K["Name"]]=$K;}return$J;}function is_view($S){return$S["Engine"]===null;}function fk_support($S){return preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function fields($R){global$g;$ze=$g->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){$o=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$kd=$K["GENERATION_EXPRESSION"];$Ic=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Ic,$jd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Be);$l=$K["COLUMN_DEFAULT"];if($l!=""){$Zd=preg_match('~text|json~',$Be[1]);if(!$ze&&$Zd)$l=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($l));if($ze||$Zd){$l=($l=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return stripslashes(str_replace("''","'",$A[1]));},$l));}if(!$ze&&preg_match('~binary~',$Be[1])&&preg_match('~^0x(\w*)$~',$l,$A))$l=pack("H*",$A[1]);}$J[$o]=array("field"=>$o,"full_type"=>$U,"type"=>$Be[1],"length"=>$Be[2],"unsigned"=>ltrim($Be[3].$Be[4]),"default"=>($jd?($ze?$kd:stripslashes($kd)):$l),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Ic=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Ic,$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"=>($jd[1]=="PERSISTENT"?"STORED":$jd[1]),);}return$J;}function indexes($R,$h=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$K){$C=$K["Key_name"];$J[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$C]["columns"][]=$K["Column_name"];$J[$C]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$C]["descs"][]=null;}return$J;}function foreign_keys($R){global$m;static$Xf='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$zb=get_val("SHOW CREATE TABLE ".table($R),1);if($zb){preg_match_all("~CONSTRAINT ($Xf) FOREIGN KEY ?\\(((?:$Xf,? ?)+)\\) REFERENCES ($Xf)(?:\\.($Xf))? \\(((?:$Xf,? ?)+)\\)(?: ON DELETE ($m->onActions))?(?: ON UPDATE ($m->onActions))?~",$zb,$B,PREG_SET_ORDER);foreach($B as$A){preg_match_all("~$Xf~",$A[2],$rh);preg_match_all("~$Xf~",$A[5],$Th);$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',$rh[0]),"target"=>array_map('Adminer\idf_unescape',$Th[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$J;}function view($C){return array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),1)));}function collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J as$y=>$X)asort($J[$y]);return$J;}function information_schema($k){return($k=="information_schema")||(min_version(5.5)&&$k=="performance_schema");}function error(){global$g;return h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function create_database($k,$fb){return queries("CREATE DATABASE ".idf_escape($k).($fb?" COLLATE ".q($fb):""));}function drop_databases($j){$J=apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function rename_database($C,$fb){$J=false;if(create_database($C,$fb)){$T=array();$Wi=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Wi[]=$R;else$T[]=$R;}$J=(!$T&&!$Wi)||move_tables($T,$Wi,$C);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,$C,$p,$ad,$lb,$pc,$fb,$Ba,$Tf){global$g;$c=array();foreach($p as$o){if($o[1]){$l=$o[1][3];if(preg_match('~ GENERATED~',$l)){$o[1][3]=($g->maria?"":$o[1][2]);$o[1][2]=$l;}$c[]=($R!=""?($o[0]!=""?"CHANGE ".idf_escape($o[0]):"ADD"):" ")." ".implode($o[1]).($R!=""?$o[2]:"");}else$c[]="DROP ".idf_escape($o[0]);}$c=array_merge($c,$ad);$P=($lb!==null?" COMMENT=".q($lb):"").($pc?" ENGINE=".q($pc):"").($fb?" COLLATE ".q($fb):"").($Ba!=""?" AUTO_INCREMENT=$Ba":"");if($R=="")return queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)$P$Tf");if($R!=$C)$c[]="RENAME TO ".table($C);if($P)$c[]=ltrim($P);return($c||$Tf?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$Tf):true);}function alter_indexes($R,$c){foreach($c as$y=>$X)$c[$y]=($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(",",$c));}function truncate_tables($T){return apply_queries("TRUNCATE TABLE",$T);}function drop_views($Wi){return queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Wi)));}function drop_tables($T){return queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function move_tables($T,$Wi,$Th){global$g;$Eg=array();foreach($T as$R)$Eg[]=table($R)." TO ".idf_escape($Th).".".table($R);if(!$Eg||queries("RENAME TABLE ".implode(", ",$Eg))){$Ob=array();foreach($Wi as$R)$Ob[table($R)]=view($R);$g->select_db($Th);$k=idf_escape(DB);foreach($Ob as$C=>$Vi){if(!queries("CREATE VIEW $C AS ".str_replace(" $k."," ",$Vi["select"]))||!queries("DROP VIEW $k.$C"))return false;}return true;}return false;}function copy_tables($T,$Wi,$Th){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T as$R){$C=($Th==DB?table("copy_$R"):idf_escape($Th).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$si=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Th==DB?idf_escape("copy_$si"):idf_escape($Th).".".idf_escape($si))." $K[Timing] $K[Event] ON $C FOR EACH ROW\n$K[Statement];"))return false;}}foreach($Wi as$R){$C=($Th==DB?table("copy_$R"):idf_escape($Th).".".table($R));$Vi=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $Vi[select]"))return false;}return true;}function trigger($C){if($C=="")return array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));return reset($L);}function triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function trigger_options(){return array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function routine($C,$U){global$m;$ua=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$sh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$rc=$m->enumLength;$xi="((".implode("|",array_merge(array_keys($m->types()),$ua)).")\\b(?:\\s*\\(((?:[^'\")]|$rc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Xf="$sh*(".($U=="FUNCTION"?"":$m->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$xi";$i=get_val("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$Xf\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$xi\\s+":"")."(.*)~is",$i,$A);$p=array();preg_match_all("~$Xf\\s*,?~is",$A[1],$B,PREG_SET_ORDER);foreach($B as$Nf)$p[]=array("field"=>str_replace("``","`",$Nf[2]).$Nf[3],"type"=>strtolower($Nf[5]),"length"=>preg_replace_callback("~$rc~s",'Adminer\normalize_enum',$Nf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Nf[8] $Nf[7]"))),"null"=>1,"full_type"=>$Nf[4],"inout"=>strtoupper($Nf[1]),"collation"=>strtolower($Nf[9]),);return array("fields"=>$p,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($C)),)+($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 ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function routine_languages(){return array();}function routine_id($C,$K){return idf_escape($C);}function last_id(){return get_val("SELECT LAST_INSERT_ID()");}function explain($g,$H){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function create_sql($R,$Ba,$Dh){$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($Hb){return"USE ".idf_escape($Hb);}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_key_vals("SHOW VARIABLES");}function process_list(){return get_rows("SHOW FULL PROCESSLIST");}function show_status(){return get_key_vals("SHOW STATUS");}function convert_field($o){if(preg_match("~binary~",$o["type"]))return"HEX(".idf_escape($o["field"]).")";if($o["type"]=="bit")return"BIN(".idf_escape($o["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($o["field"]).")";}function unconvert_field($o,$J){if(preg_match("~binary~",$o["type"]))$J="UNHEX($J)";if($o["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"])){$hg=(min_version(8)?"ST_":"");$J=$hg."GeomFromText($J, $hg"."SRID($o[field]))";}return$J;}function support($Mc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning")).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Mc);}function kill_process($X){return queries("KILL ".number($X));}function connection_id(){return"SELECT CONNECTION_ID()";}function max_connections(){return get_val("SELECT @@max_connections");}}define('Adminer\JUSH',Driver::$ce);define('Adminer\SERVER',$_GET[DRIVER]);define('Adminer\DB',$_GET["db"]);define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));if(!ob_get_level())ob_start(null,4096);function page_header($di,$n="",$La=array(),$ei=""){global$ca,$ia,$b,$Yb;page_headers();if(is_ajax()&&$n){page_messages($n);exit;}$fi=$di.($ei!=""?": $ei":"");$gi=strip_tags($fi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo' ',$gi,' ';$Cb=$b->css();if($Cb){foreach($Cb as$X)echo"\n";}else echo"\n";echo script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.0.5");if($b->head()){echo' ';}echo' ';$Rc=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($Rc)&&filemtime($Rc)+86400>time()){$Ui=unserialize(file_get_contents($Rc));$qg="-----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($Ui["version"],base64_decode($Ui["signature"]),$qg)==1)$_COOKIE["adminer_version"]=$Ui["version"];}echo' mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ia', '".js_escape(ME)."', '".get_token()."')");?>}); document.body.className = document.body.className.replace(/ nojs/, ' js'); var offlineMessage = ' ',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
    ';if($La!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $fi

    \n","\n";restart_session();page_messages($n);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define('Adminer\PAGE_HEADER',1);}function page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$Bb){$xd=array();foreach($Bb as$y=>$X)$xd[]="$y $X";header("Content-Security-Policy: ".implode("; ",$xd));}$b->headers();}function csp(){return array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function get_nonce(){static$af;if(!$af)$af=base64_encode(rand_string());return$af;}function page_messages($n){$Hi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Oe=$_SESSION["messages"][$Hi];if($Oe){echo"
    ".implode("
    \n
    ",$Oe)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Hi]);}if($n)echo"
    $n
    \n";}function page_footer($Qe=""){global$b,$ji;echo'
    ';if($Qe!="auth"){echo'

    ',h($_GET["username"])."\n",'

    ';}echo script("setupSubmitHighlight(document);");}function int32($Te){while($Te>=2147483648)$Te-=4294967296;while($Te<=-2147483649)$Te+=4294967296;return(int)$Te;}function long2str($W,$Yi){$Qg='';foreach($W as$X)$Qg.=pack('V',$X);if($Yi)return substr($Qg,0,end($W));return$Qg;}function str2long($Qg,$Yi){$W=array_values(unpack('V*',str_pad($Qg,4*ceil(strlen($Qg)/4),"\0")));if($Yi)$W[]=strlen($Qg);return$W;}function xxtea_mx($fj,$ej,$Gh,$de){return int32((($fj>>5&0x7FFFFFF)^$ej<<2)+(($ej>>3&0x1FFFFFFF)^$fj<<4))^int32(($Gh^$ej)+($de^$fj));}function encrypt_string($Bh,$y){if($Bh=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Bh,true);$Te=count($W)-1;$fj=$W[$Te];$ej=$W[0];$rg=floor(6+52/($Te+1));$Gh=0;while($rg-->0){$Gh=int32($Gh+0x9E3779B9);$gc=$Gh>>2&3;for($Lf=0;$Lf<$Te;$Lf++){$ej=$W[$Lf+1];$Se=xxtea_mx($fj,$ej,$Gh,$y[$Lf&3^$gc]);$fj=int32($W[$Lf]+$Se);$W[$Lf]=$fj;}$ej=$W[0];$Se=xxtea_mx($fj,$ej,$Gh,$y[$Lf&3^$gc]);$fj=int32($W[$Te]+$Se);$W[$Te]=$fj;}return long2str($W,false);}function decrypt_string($Bh,$y){if($Bh=="")return"";if(!$y)return false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Bh,false);$Te=count($W)-1;$fj=$W[$Te];$ej=$W[0];$rg=floor(6+52/($Te+1));$Gh=int32($rg*0x9E3779B9);while($Gh){$gc=$Gh>>2&3;for($Lf=$Te;$Lf>0;$Lf--){$fj=$W[$Lf-1];$Se=xxtea_mx($fj,$ej,$Gh,$y[$Lf&3^$gc]);$ej=int32($W[$Lf]-$Se);$W[$Lf]=$ej;}$fj=$W[$Te];$Se=xxtea_mx($fj,$ej,$Gh,$y[$Lf&3^$gc]);$ej=int32($W[0]-$Se);$W[0]=$ej;$Gh=int32($Gh-0x9E3779B9);}return long2str($W,true);}$g='';$wd=$_SESSION["token"];if(!$wd)$_SESSION["token"]=rand(1,1e6);$ji=get_token();$Zf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Zf[$y]=$X;}}function add_invalid_login(){global$b;$r=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$r)return;$Ud=unserialize(stream_get_contents($r));$ai=time();if($Ud){foreach($Ud as$Vd=>$X){if($X[0]<$ai)unset($Ud[$Vd]);}}$Td=&$Ud[$b->bruteForceKey()];if(!$Td)$Td=array($ai+30*60,0);$Td[1]++;file_write_unlock($r,serialize($Ud));}function check_invalid_login(){global$b;$Ud=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Td=($Ud?$Ud[$b->bruteForceKey()]:array());$Ze=($Td[1]>29?$Td[0]-time():0);if($Ze>0)auth_error(lang(82,ceil($Ze/60)));}$Aa=$_POST["auth"];if($Aa){session_regenerate_id();$Ti=$Aa["driver"];$N=$Aa["server"];$V=$Aa["username"];$F=(string)$Aa["password"];$k=$Aa["db"];set_password($Ti,$N,$V,$F);$_SESSION["db"][$Ti][$N][$V][$k]=true;if($Aa["permanent"]){$y=base64_encode($Ti)."-".base64_encode($N)."-".base64_encode($V)."-".base64_encode($k);$lg=$b->permanentLogin(true);$Zf[$y]="$y:".base64_encode($lg?encrypt_string($F,$lg):"");cookie("adminer_permanent",implode(" ",$Zf));}if(count($_POST)==1||DRIVER!=$Ti||SERVER!=$N||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Ti,$N,$V,$k));}elseif($_POST["logout"]&&(!$wd||verify_token())){foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(83).' '.lang(84));}elseif($Zf&&!$_SESSION["pwds"]){session_regenerate_id();$lg=$b->permanentLogin();foreach($Zf as$y=>$X){list(,$Za)=explode(":",$X);list($Ti,$N,$V,$k)=array_map('base64_decode',explode("-",$y));set_password($Ti,$N,$V,decrypt_string(base64_decode($Za),$lg));$_SESSION["db"][$Ti][$N][$V][$k]=true;}}function unset_permanent(){global$Zf;foreach($Zf as$y=>$X){list($Ti,$N,$V,$k)=array_map('base64_decode',explode("-",$y));if($Ti==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$k==DB)unset($Zf[$y]);}cookie("adminer_permanent",implode(" ",$Zf));}function auth_error($n){global$b,$wd;$ih=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$ih]||$_GET[$ih])&&!$wd)$n=lang(85);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$n.=($n?'
    ':'').lang(86,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$ih]&&$_GET[$ih]&&ini_bool("session.use_only_cookies"))$n=lang(87);$Of=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Of["lifetime"]);page_header(lang(37),$n,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

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

    \n";$b->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(89),lang(90,implode(", ",Driver::$fg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Ad,$bg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$bg,$A)&&($A[1]<1024||$A[1]>65535))auth_error(lang(91));check_invalid_login();$g=connect($b->credentials());if(is_object($g)){$m=new Driver($g);if($b->operators===null)$b->operators=$m->operators;}}$xe=null;if(!is_object($g)||($xe=$b->login($_GET["username"],get_password()))!==true){$n=(is_string($g)?nl_br(h($g)):(is_string($xe)?$xe:lang(92)));auth_error($n.(preg_match('~^ | $~',get_password())?'
    '.lang(93):''));}if($_POST["logout"]&&$wd&&!verify_token()){page_header(lang(81),lang(94));page_footer("db");exit;}if($Aa&&$_POST["token"])$_POST["token"]=$ji;$n='';if($_POST){if(!verify_token()){$Od="max_input_vars";$He=ini_get($Od);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$He||$X<$He)){$Od=$y;$He=$X;}}}$n=(!$_POST["token"]&&$He?lang(95,"'$Od'"):lang(94).' '.lang(96));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=lang(97,"'post_max_size'");if(isset($_GET["sql"]))$n.=' '.lang(98);}function select($I,$h=null,$Af=array(),$z=0){$ve=array();$x=array();$e=array();$Ja=array();$yi=array();$J=array();for($t=0;(!$z||$t<$z)&&($K=$I->fetch_row());$t++){if(!$t){echo"
    \n","\n","";for($be=0;$befetch_field();$C=$o->name;$_f=$o->orgtable;$zf=$o->orgname;$J[$o->table]=$_f;if($Af&&JUSH=="sql")$ve[$be]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($_f!=""){if(!isset($x[$_f])){$x[$_f]=array();foreach(indexes($_f,$h)as$w){if($w["type"]=="PRIMARY"){$x[$_f]=array_flip($w["columns"]);break;}}$e[$_f]=$x[$_f];}if(isset($e[$_f][$zf])){unset($e[$_f][$zf]);$x[$_f][$zf]=$be;$ve[$be]=$_f;}}if($o->charsetnr==63)$Ja[$be]=true;$yi[$be]=$o->type;echo"name!=$zf?" title='".h(($_f!=""?"$_f.":"").$zf)."'":"").">".h($C).($Af?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($K as$y=>$X){$_="";if(isset($ve[$y])&&!$e[$ve[$y]]){if($Af&&JUSH=="sql"){$R=$K[array_search("table=",$ve)];$_=ME.$ve[$y].urlencode($Af[$R]!=""?$Af[$R]:$R);}else{$_=ME."edit=".urlencode($ve[$y]);foreach($x[$ve[$y]]as$db=>$be)$_.="&where".urlencode("[".bracket_escape($db)."]")."=".urlencode($K[$be]);}}elseif(is_url($X))$_=$X;if($X===null)$X="NULL";elseif($Ja[$y]&&!is_utf8($X))$X="".lang(46,strlen($X))."";else{$X=h($X);if($yi[$y]==254)$X="$X";}if($_)$X="$X";echo"
    $X";}}echo($t?"
    \n
    ":"

    ".lang(12))."\n";return$J;}function referencable_primary($ah){$J=array();foreach(table_status('',true)as$Lh=>$R){if($Lh!=$ah&&fk_support($R)){foreach(fields($Lh)as$o){if($o["primary"]){if($J[$Lh]){unset($J[$Lh]);break;}$J[$Lh]=$o;}}}}return$J;}function adminer_settings(){parse_str($_COOKIE["adminer_settings"],$kh);return$kh;}function adminer_setting($y){$kh=adminer_settings();return$kh[$y];}function set_adminer_settings($kh){return cookie("adminer_settings",http_build_query($kh+adminer_settings()));}function textarea($C,$Y,$L=10,$hb=80){echo"";}function select_input($_a,$vf,$Y="",$pf="",$ag=""){$Sh=($vf?"select":"input");return"<$Sh$_a".($vf?">

    ".lang(118,$Yb[DRIVER],"".h($g->server_info)."","$g->extension")."\n","

    ".lang(119,"".h(logged_user())."")."\n";$j=$b->databases();if($j){$Ug=support("scheme");$gb=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){$Lg=h(ME)."db=".urlencode($k);$u=h("Db-".$k);echo"".(support("database")?"
    ":"")."".lang(36).(get_session("dbs")!==null?" - ".lang(120)."":"")."".lang(121)."".lang(122)."".lang(123)." - ".lang(124)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$u):""),"".h($k)."";$fb=h(db_collation($k,$gb));echo"".(support("database")?"$fb":$fb),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($k):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),"\n","
    \n",script("tableCheck();");}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(75).": ".h($_GET["ns"]),lang(127),true);page_footer("ns");exit;}}}class TmpFile{private$handler,$size;function __construct(){$this->handler=tmpfile();}function write($ub){$this->size+=strlen($ub);fwrite($this->handler,$ub);}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"];$p=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=$m->select($a,$M,array(where($_GET,$p)),$M);$K=($I?$I->fetch_row():array());echo$m->value($K[0],$p[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$p=fields($a);if(!$p)$n=error();$S=table_status1($a,true);$C=$b->tableName($S);page_header(($p&&is_view($S)?$S['Engine']=='materialized view'?lang(128):lang(129):lang(130)).": ".($C!=""?$C:h($a)),$n);$Kg=array();foreach($p as$y=>$o)$Kg+=$o["privileges"];$b->selectLinks($S,(isset($Kg["insert"])||!support("table")?"":null));$lb=$S["Comment"];if($lb!="")echo"

    ".lang(49).": ".h($lb)."\n";if($p)$b->tableStructurePrint($p);if(support("indexes")&&$m->supportsIndex($S)){echo"

    ".lang(131)."

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

    ".lang(99)."

    \n";$cd=foreign_keys($a);if($cd){echo"\n","\n";foreach($cd as$C=>$q){echo"","
    ".lang(133)."".lang(134)."".lang(102)."".lang(101)."
    ".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(135).'',"\n";}echo"
    \n";}echo'

    ".lang(137)."

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

    ".lang(139)."

    \n";$vi=triggers($a);if($vi){echo"\n";foreach($vi as$y=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($y)."".lang(135)."\n";echo"
    \n";}echo'
    qs(\'#schema\').onselectstart = function () { return false; }; var tablePos = {',implode(",",$Oh)."\n",'}; var em = qs(\'#schema\').offsetHeight / ',$ki,'; document.onmousemove = schemaMousemove; document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); ';foreach($Sg as$C=>$R){echo"
    ",''.h($C)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$o){$X=''.h($o["field"]).'';echo"
    ".($o["primary"]?"$X":$X);}foreach((array)$R["references"]as$Uh=>$Bg){foreach($Bg as$oe=>$yg){$pe=$oe-$Nh[$C][1];$t=0;foreach($yg[0]as$rh)echo"\n
    "."
    ";}}foreach((array)$Ag[$C]as$Uh=>$Bg){foreach($Bg as$oe=>$e){$pe=$oe-$Nh[$C][1];$t=0;foreach($e as$Th)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($Sg as$C=>$R){foreach((array)$R["references"]as$Uh=>$Bg){foreach($Bg as$oe=>$yg){$Pe=$ki;$Fe=-10;foreach($yg[0]as$y=>$rh){$dg=$R["pos"][0]+$R["fields"][$rh]["pos"];$eg=$Sg[$Uh]["pos"][0]+$Sg[$Uh]["fields"][$yg[1][$y]]["pos"];$Pe=min($Pe,$dg,$eg);$Fe=max($Fe,$dg,$eg);}echo"
    \n";}}}echo'
    ';$Jb=array('','USE','DROP+CREATE','CREATE');$Ph=array('','DROP+CREATE','CREATE');$Gb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Gb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$K);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(142)."".html_radios("output",$b->dumpOutput(),$K["output"])."\n","
    ".lang(143)."".html_radios("format",$b->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(36)."".html_select('db_style',$Jb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],lang(31)):"").(support("routine")?checkbox("routines",1,$K["routines"],lang(144)):"").(support("event")?checkbox("events",1,$K["events"],lang(145)):"")),"
    ".lang(122)."".html_select('table_style',$Ph,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],lang(50)).(support("trigger")?checkbox("triggers",1,$K["triggers"],lang(139)):""),"
    ".lang(146)."".html_select('data_style',$Gb,$K["data_style"]),'

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

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

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

    \n";hidden_fields_get();echo"\n",($ld?"":"\n"),"\n","\n";while($K=$I->fetch_assoc())echo'
    ".lang(34)."".lang(33)."
    '.h($K["User"])."".h($K["Host"]).''.lang(10)."\n";if(!$ld||DB!="")echo"
    \n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);$b->dumpFooter();exit;}restart_session();$_d=&get_session("queries");$zd=&$_d[DB];if(!$n&&$_POST["clear"]){$zd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(71):lang(63)),$n);if(!$n&&$_POST){$r=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$vh=$b->importServerPath();$r=@fopen((file_exists($vh)?$vh:"compress.zlib://$vh.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')&&($Je=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Je,2*strlen($H)+memory_get_usage()+8e6));if($H!=""&&strlen($H)<1e6){$rg=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$zd||reset(end($zd))!=$rg){restart_session();$zd[]=array($rg,time());set_session("queries",$_d);stop_session();}}$sh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Pb=";";$D=0;$oc=true;$h=connect($b->credentials());if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$kb=0;$wc=array();$Pf='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|-- |$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$li=microtime(true);parse_str($_COOKIE["adminer_export"],$pa);$fc=$b->dumpFormat();unset($fc["sql"]);while($H!=""){if(!$D&&preg_match("~^$sh*+DELIMITER\\s+(\\S+)~i",$H,$A)){$Pb=$A[1];$H=substr($H,strlen($A[0]));}else{preg_match('('.preg_quote($Pb)."\\s*|$Pf)",$H,$A,PREG_OFFSET_CAPTURE,$D);list($ed,$cg)=$A[0];if(!$ed&&$r&&!feof($r))$H.=fread($r,1e5);else{if(!$ed&&rtrim($H)=="")break;$D=$cg+strlen($ed);if($ed&&rtrim($ed)!=$Pb){$Pa=$m->hasCStyleEscapes()||(JUSH=="pgsql"&&($cg>0&&strtolower($H[$cg-1])=="e"));$Xf=($ed=='/*'?'\*/':($ed=='['?']':(preg_match('~^-- |^#~',$ed)?"\n":preg_quote($ed).($Pa?"|\\\\.":""))));while(preg_match("($Xf|\$)s",$H,$A,PREG_OFFSET_CAPTURE,$D)){$Qg=$A[0][0];if(!$Qg&&$r&&!feof($r))$H.=fread($r,1e5);else{$D=$A[0][1]+strlen($Qg);if(!$Qg||$Qg[0]!="\\")break;}}}else{$oc=false;$rg=substr($H,0,$cg);$kb++;$kg="
    ".$b->sqlCommandQuery($rg)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$sh*+ATTACH\\b~i",$rg,$A)){echo$kg,"

    ".lang(148)."\n";$wc[]=" $kb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$kg;ob_flush();flush();}$_h=microtime(true);if($g->multi_query($rg)&&is_object($h)&&preg_match("~^$sh*+USE\\b~i",$rg))$h->query($rg);do{$I=$g->store_result();if($g->error){echo($_POST["only_errors"]?$kg:""),"

    ".lang(149).($g->errno?" ($g->errno)":"").": ".error()."\n";$wc[]=" $kb";if($_POST["error_stops"])break 2;}else{$ai=" (".format_time($_h).")".(strlen($rg)<1000?" ".lang(10)."":"");$ra=$g->affected_rows;$Zi=($_POST["only_errors"]?"":$m->warnings());$aj="warnings-$kb";if($Zi)$ai.=", ".lang(45)."".script("qsl('a').onclick = partial(toggle, '$aj');","");$Dc=null;$Ec="explain-$kb";if(is_object($I)){$z=$_POST["limit"];$Af=select($I,$h,array(),$z);if(!$_POST["only_errors"]){echo"

    \n";$cf=$I->num_rows;echo"

    ".($cf?($z&&$cf>$z?lang(150,$z):"").lang(151,$cf):""),$ai;if($h&&preg_match("~^($sh|\\()*+SELECT\\b~i",$rg)&&($Dc=explain($h,$rg)))echo", Explain".script("qsl('a').onclick = partial(toggle, '$Ec');","");$u="export-$kb";echo", ".lang(72)."".script("qsl('a').onclick = partial(toggle, '$u');","")."\n"."

    \n";}}else{if(preg_match("~^$sh*+(CREATE|DROP|ALTER)$sh++(DATABASE|SCHEMA)\\b~i",$rg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

    ".lang(152,$ra)."$ai\n";}echo($Zi?"

    \n":"");if($Dc){echo"\n";}}$_h=microtime(true);}while($g->next_result());}$H=substr($H,$D);$D=0;}}}}if($oc)echo"

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

    ".lang(154,$kb-count($wc))," (".format_time($li).")\n";}elseif($wc&&$kb>1)echo"

    ".lang(149).": ".implode("",$wc)."\n";}else echo"

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

    ';$Bc="";if(!isset($_GET["import"])){$rg=$_GET["sql"];if($_POST)$rg=$_POST["query"];elseif($_GET["history"]=="all")$rg=$zd;elseif($_GET["history"]!="")$rg=$zd[$_GET["history"]][0];echo"

    ";textarea("query",$rg,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"))."');"),"

    $Bc\n",lang(156).": \n";}else{echo"

    ".lang(157)."
    ";$rd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$rd (< ".ini_get("upload_max_filesize")."B): \n$Bc":lang(158)),"
    \n";$Gd=$b->importServerPath();if($Gd){echo"
    ".lang(159)."
    ",lang(160,"".h($Gd)."$rd"),' ',"
    \n";}echo"

    ";}echo checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(162))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(163))."\n","\n";if(!isset($_GET["import"])&&$zd){print_fieldset("history",lang(164),$_GET["history"]!="");for($X=end($zd);$X;$X=prev($zd)){$y=key($zd);list($rg,$ai,$jc)=$X;echo''.lang(10).""." ".@date("H:i:s",$ai).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$rg)))),80,"").($jc?" ($jc)":"")."
    \n";}echo"\n","".lang(166)."\n","\n";}echo'

    ';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Gi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p as$C=>$o){if(!isset($o["privileges"][$Gi?"update":"insert"])||$b->fieldName($o)==""||$o["generated"])unset($p[$C]);}if($_POST&&!$n&&!isset($_GET["select"])){$we=$_POST["referer"];if($_POST["insert"])$we=($Gi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$we))$we=ME."select=".urlencode($a);$x=indexes($a);$Bi=unique_array($_GET["where"],$x);$ug="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($we,lang(167),$m->delete($a,$ug,!$Bi));else{$O=array();foreach($p as$C=>$o){$X=process_input($o);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Gi){if(!$O)redirect($we);queries_redirect($we,lang(168),$m->update($a,$O,$ug,!$Bi));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$I=$m->insert($a,$O);$ne=($I?last_id():0);queries_redirect($we,lang(169,($ne?" $ne":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($p as$C=>$o){if(isset($o["privileges"]["select"])){$ya=($_POST["clone"]&&$o["auto_increment"]?"''":convert_field($o));$M[]=($ya?"$ya AS ":"").idf_escape($C);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=$m->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$n=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$p){if(!$Z){$I=$m->select($a,array("*"),$Z,array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array($m->primary=>"");}if($K){foreach($K as$y=>$X){if(!$Z)$K[$y]=null;$p[$y]=array("field"=>$y,"null"=>($y!=$m->primary),"auto_increment"=>($y==$m->primary));}}}edit_form($a,$p,$K,$Gi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Rf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$Rf[$y]=$y;$_g=referencable_primary($a);$cd=array();foreach($_g as$Lh=>$o)$cd[str_replace("`","``",$Lh)."`".str_replace("`","``",$o["field"])]=$Lh;$Df=array();$S=array();if($a!=""){$Df=fields($a);$S=table_status($a);if(!$S)$n=lang(9);}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$n){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(170),drop_tables(array($a)));else{$p=array();$va=array();$Ki=false;$ad=array();$Cf=reset($Df);$ta=" FIRST";foreach($K["fields"]as$y=>$o){$q=$cd[$o["type"]];$wi=($q!==null?$_g[$q]:$o);if($o["field"]!=""){if(!$o["generated"])$o["default"]=null;$pg=process_field($o,$wi);$va[]=array($o["orig"],$pg,$ta);if(!$Cf||$pg!==process_field($Cf,$Cf)){$p[]=array($o["orig"],$pg,$ta);if($o["orig"]!=""||$ta)$Ki=true;}if($q!==null)$ad[idf_escape($o["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$cd[$o["type"]],'source'=>array($o["field"]),'target'=>array($wi["field"]),'on_delete'=>$o["on_delete"],));$ta=" AFTER ".idf_escape($o["field"]);}elseif($o["orig"]!=""){$Ki=true;$p[]=array($o["orig"]);}if($o["orig"]!=""){$Cf=next($Df);if(!$Cf)$ta="";}}$Tf="";if(support("partitioning")){if(isset($Rf[$K["partition_by"]])){$Of=array();foreach($K as$y=>$X){if(preg_match('~^partition~',$y))$Of[$y]=$X;}foreach($Of["partition_names"]as$y=>$C){if($C==""){unset($Of["partition_names"][$y]);unset($Of["partition_values"][$y]);}}if($Of!=get_partitions_info($a)){$Uf=array();if($Of["partition_by"]=='RANGE'||$Of["partition_by"]=='LIST'){foreach($Of["partition_names"]as$y=>$C){$Y=$Of["partition_values"][$y];$Uf[]="\n PARTITION ".idf_escape($C)." VALUES ".($Of["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Tf.="\nPARTITION BY $Of[partition_by]($Of[partition])";if($Uf)$Tf.=" (".implode(",",$Uf)."\n)";elseif($Of["partitions"])$Tf.=" PARTITIONS ".(+$Of["partitions"]);}}elseif(preg_match("~partitioned~",$S["Create_options"]))$Tf.="\nREMOVE PARTITIONING";}$Ke=lang(171);if($a==""){cookie("adminer_engine",$K["Engine"]);$Ke=lang(172);}$C=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Ke,alter_table($a,$C,(JUSH=="sqlite"&&($Ki||$ad)?$va:$p),$ad,($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"]):""),$Tf));}}page_header(($a!=""?lang(43):lang(73)),$n,array("table"=>$a),h($a));if(!$_POST){$yi=$m->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($yi["int"])?"int":(isset($yi["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($Df as$o){$o["generated"]=$o["generated"]?:(isset($o["default"])?"DEFAULT":"");$K["fields"][]=$o;}if(support("partitioning")){$K+=get_partitions_info($a);$K["partition_names"][]="";$K["partition_values"][]="";}}}$gb=collations();$qc=engines();foreach($qc as$pc){if(!strcasecmp($pc,$K["Engine"])){$K["Engine"]=$pc;break;}}echo'

    ';if(support("columns")||$a==""){echo lang(173),': ',($qc?html_select("Engine",array(""=>"(".lang(174).")")+$qc,$K["Engine"]).on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ';if($gb){echo"".optionlist($gb)."",(preg_match("~sqlite|mssql~",JUSH)?"":"");}echo' ';}echo' ';if(support("columns")){echo'

    ';edit_fields($K["fields"],$gb,"TABLE",$cd);echo'
    ',script("editFields();"),'

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

    ';}echo' ';if($a!=""){echo'',confirm(lang(176,$a));}if(support("partitioning")){$Sf=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",lang(177),$K["partition_by"]);echo'

    ',html_select("partition_by",array(""=>"")+$Rf,$K["partition_by"]).on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),'() ',lang(178),': ';foreach($K["partition_names"]as$y=>$X){echo'',' ';}echo'

    ';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Kd=array("PRIMARY","UNIQUE","INDEX");$S=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Kd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Kd[]="SPATIAL";$x=indexes($a);$G=array();if(JUSH=="mongo"){$G=$x["_id_"];unset($Kd[0]);unset($x["_id_"]);}$K=$_POST;if($K)set_adminer_settings(array("index_options"=>$K["options"]));if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($K["indexes"]as$w){$C=$w["name"];if(in_array($w["type"],$Kd)){$e=array();$te=array();$Rb=array();$O=array();ksort($w["columns"]);foreach($w["columns"]as$y=>$d){if($d!=""){$se=$w["lengths"][$y];$Qb=$w["descs"][$y];$O[]=idf_escape($d).($se?"(".(+$se).")":"").($Qb?" DESC":"");$e[]=$d;$te[]=($se?:null);$Rb[]=$Qb;}}$Cc=$x[$C];if($Cc){ksort($Cc["columns"]);ksort($Cc["lengths"]);ksort($Cc["descs"]);if($w["type"]==$Cc["type"]&&array_values($Cc["columns"])===$e&&(!$Cc["lengths"]||array_values($Cc["lengths"])===$te)&&array_values($Cc["descs"])===$Rb){unset($x[$C]);continue;}}if($e)$c[]=array($w["type"],$C,$O);}}foreach($x as$C=>$Cc)$c[]=array($Cc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(181),alter_indexes($a,$c));}page_header(lang(131),$n,array("table"=>$a),h($a));$p=array_keys(fields($a));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;}$te=(JUSH=="sql"||JUSH=="mssql");$lh=($_POST?$_POST["options"]:adminer_setting("index_options"));echo'
    ';if($G){echo"
    ',lang(182),'',lang(47).($te?" (".lang(183).")":"");if($te||support("descidx"))echo checkbox("options",1,$lh,lang(106),"indexOptionsShow(this.checked)","jsonly")."\n";echo'',lang(184),'
    PRIMARY";foreach($G["columns"]as$y=>$d){echo select_input(" disabled",$p,$d)," ";}echo"\n";}$be=1;foreach($K["indexes"]as$w){if(!$_POST["drop_col"]||$be!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$be][type]",array(-1=>"")+$Kd,$w["type"],($be==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"";ksort($w["columns"]);$t=1;foreach($w["columns"]as$y=>$d){echo"".select_input(" name='indexes[$be][columns][$t]' title='".lang(47)."'",($p?array_combine($p,$p):$p),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"",($te?"":""),(support("descidx")?checkbox("indexes[$be][descs][$t]",1,$w["descs"][$y],lang(58)):"")," ";$t++;}echo"\n","".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$be++;}echo'

    ';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$n&&!isset($_POST["add_x"])){$C=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(185),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(186),rename_database($C,$K["collation"]));}else{$j=explode("\n",str_replace("\r","",$C));$Eh=true;$me="";foreach($j as$k){if(count($j)==1||$k!=""){if(!create_database($k,$K["collation"]))$Eh=false;$me=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($me),lang(187),$Eh);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),lang(188));}}page_header(DB!=""?lang(66):lang(114),$n,array(),h(DB));$gb=collations();$C=DB;if($_POST)$C=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$gb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$ld){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$ld,$A)&&$A[1]){$C=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'

    ',($_POST["add_x"]||strpos($C,"\n")?'
    ':'')."\n".($gb?html_select("collation",array(""=>"(".lang(100).")")+$gb,$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(176,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"\n";echo'

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

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

    ';}elseif(isset($_GET["call"])){$da=($_GET["name"]?:$_GET["call"]);page_header(lang(192).": ".h($da),$n);$Mg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Hd=array();$If=array();foreach($Mg["fields"]as$t=>$o){if(substr($o["inout"],-3)=="OUT")$If[$t]="@".idf_escape($o["field"])." AS ".idf_escape($o["field"]);if(!$o["inout"]||substr($o["inout"],0,2)=="IN")$Hd[]=$t;}if(!$n&&$_POST){$Qa=array();foreach($Mg["fields"]as$y=>$o){if(in_array($y,$Hd)){$X=process_input($o);if($X===false)$X="''";if(isset($If[$y]))$g->query("SET @".idf_escape($o["field"])." = $X");}$Qa[]=(isset($If[$y])?"@".idf_escape($o["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Qa).")";$_h=microtime(true);$I=$g->multi_query($H);$ra=$g->affected_rows;echo$b->selectQuery($H,$_h,!$I);if(!$I)echo"

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

    ".lang(193,$ra)." ".@date("H:i:s")."\n";}while($g->next_result());if($If)select($g->query("SELECT ".implode(", ",$If)));}}echo'

    ';if($Hd){echo"\n";foreach($Hd as$y){$o=$Mg["fields"][$y];$C=$o["field"];echo"
    ".$b->fieldName($o);$Y=$_POST["fields"][$C];if($Y!=""){if($o["type"]=="set")$Y=implode(",",$Y);}input($o,$Y,(string)$_POST["function"][$C]);echo"\n";}echo"
    \n";}echo'

    ';function
    pre_tr($Qg){return
    preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($Qg))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
    preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($A){$Uc=pre_tr($A[2]);return"\n".($A[1]?"$Uc\n":$Uc).pre_tr($A[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($Mg['comment']))));echo'
    ';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$K=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$Th=array();foreach($K["source"]as$y=>$X)$Th[$y]=$K["target"][$y];$K["target"]=$Th;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $C"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$c="ALTER TABLE ".table($a);$I=($C==""||queries("$c DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$K["drop"])$I=queries("$c ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(194):($C!=""?lang(195):lang(196))),$I);if(!$K["drop"])$n="$n
    ".lang(197);}page_header(lang(198),$n,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($C!=""){$cd=foreign_keys($a);$K=$cd[$C];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
    ';$rh=array_keys(fields($a));if($K["db"]!="")$g->select_db($K["db"]);if($K["ns"]!=""){$Ef=get_schema();set_schema($K["ns"]);}$zg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Th=array_keys(fields(in_array($K["table"],$zg)?$K["table"]:reset($zg)));$pf="this.form['change-js'].value = '1'; this.form.submit();";echo"

    ".lang(199).": ".html_select("table",$zg,$K["table"],$pf)."\n";if(support("scheme")){$Tg=array_filter($b->schemas(),function($Sg){return!preg_match('~^information_schema$~i',$Sg);});echo lang(75).": ".html_select("ns",$Tg,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$pf);if($K["ns"]!="")set_schema($Ef);}elseif(JUSH!="sqlite"){$Kb=array();foreach($b->databases()as$k){if(!information_schema($k))$Kb[]=$k;}echo lang(74).": ".html_select("db",$Kb,$K["db"]!=""?$K["db"]:$_GET["db"],$pf);}echo'

    ';$be=0;foreach($K["source"]as$y=>$X){echo"","
    ',lang(133),'',lang(134),'
    ".html_select("source[".(+$y)."]",array(-1=>"")+$rh,$X,($be==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"".html_select("target[".(+$y)."]",$Th,$K["target"][$y],"","label-target");$be++;}echo'

    ',lang(102),': ',html_select("on_delete",array(-1=>"")+explode("|",$m->onActions),$K["on_delete"]),' ',lang(101),': ',html_select("on_update",array(-1=>"")+explode("|",$m->onActions),$K["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'

    ';if($C!=""){echo'',confirm(lang(176,$C));}echo'

    ';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$Ff="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status($a);$Ff=strtoupper($P["Engine"]);}if($_POST&&!$n){$C=trim($K["name"]);$ya=" AS\n$K[select]";$we=ME."table=".urlencode($C);$Ke=lang(202);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$Ff=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$ya,$we,$Ke);else{$Vh=$C."_adminer_".uniqid();drop_create("DROP $Ff ".table($a),"CREATE $U ".table($C).$ya,"DROP $U ".table($C),"CREATE $U ".table($Vh).$ya,"DROP $U ".table($Vh),($_POST["drop"]?substr(ME,0,-1):$we),lang(203),$Ke,lang(204),$a,$C);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($Ff!="VIEW");if(!$n)$n=error();}page_header(($a!=""?lang(42):lang(205)),$n,array("table"=>$a),h($a));echo'

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

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

    ';if($a!=""){echo'',confirm(lang(176,$a));}echo'

    ';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Sd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ah=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$n){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(206));elseif(in_array($K["INTERVAL_FIELD"],$Sd)&&isset($Ah[$K["STATUS"]])){$Rg="\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(207):lang(208)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Rg.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Rg)."\n".$Ah[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(209).": ".h($aa):lang(210)),$n);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(184),'
    ',lang(211),'
    ',lang(212),'
    ',lang(213),' ',html_select("INTERVAL_FIELD",$Sd,$K["INTERVAL_FIELD"]),'
    ',lang(117),'',html_select("STATUS",$Ah,$K["STATUS"]),'
    ',lang(49),'
    ',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",lang(214)),'

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

    ';if($aa!=""){echo'',confirm(lang(176,$aa));}echo'

    ';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?:$_GET["procedure"]);$Mg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$n){$Bf=routine($_GET["procedure"],$Mg);$Vh="$K[name]_adminer_".uniqid();drop_create("DROP $Mg ".routine_id($da,$Bf),create_routine($Mg,$K),"DROP $Mg ".routine_id($K["name"],$K),create_routine($Mg,array("name"=>$Vh)+$K),"DROP $Mg ".routine_id($Vh,$K),substr(ME,0,-1),lang(215),lang(216),lang(217),$da,$K["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(218):lang(219)).": ".h($da):(isset($_GET["function"])?lang(220):lang(221))),$n);if(!$_POST&&$da!=""){$K=routine($_GET["procedure"],$Mg);$K["name"]=$da;}$gb=get_vals("SHOW CHARACTER SET");sort($gb);$Ng=routine_languages();echo($gb?"".optionlist($gb)."":""),'

    ',lang(184),': ',($Ng?lang(19).": ".html_select("language",$Ng,$K["language"])."\n":""),'

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

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

    ';if($da!=""){echo'',confirm(lang(176,$da));}echo'

    ';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$K=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);$C=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$_,lang(223));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,lang(224));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$_,lang(225));else redirect($_);}page_header($fa!=""?lang(226).": ".h($fa):lang(227),$n);if(!$K)$K["name"]=$fa;echo'

    ';if($fa!="")echo"".confirm(lang(176,$fa))."\n";echo'

    ';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$K=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$_,lang(228));else query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,lang(229));}page_header($ga!=""?lang(230).": ".h($ga):lang(231),$n);if(!$K)$K["as"]="AS ";echo'

    ';if($ga!=""){$yi=$m->types();$uc=type_values($yi[$ga]);if($uc)echo"ENUM (".h($uc).")\n

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

    \n";}echo'

    ';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$K=$_POST;if($K&&!$n){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),0,array(),$C,($K["drop"]?"":$K["clause"]));else{$I=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(232):($C!=""?lang(233):lang(234))),$I);}page_header(($C!=""?lang(235).": ".h($C):lang(138)),$n,array("table"=>$a));if(!$K){$Xa=$m->checkConstraints($a);$K=array("name"=>$C,"clause"=>$Xa[$C]);}echo'

    ';if(JUSH!="sqlite")echo lang(184).': ';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($C!=""){echo'',confirm(lang(176,$C));}echo'

    ';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$ui=trigger_options();$K=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$n&&in_array($_POST["Timing"],$ui["Timing"])&&in_array($_POST["Event"],$ui["Event"])&&in_array($_POST["Type"],$ui["Type"])){$mf=" ON ".table($a);$Zb="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$mf:"");$we=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Zb,$we,lang(236));else{if($C!="")queries($Zb);queries_redirect($we,($C!=""?lang(237):lang(238)),queries(create_trigger($mf,$_POST)));if($C!="")queries(create_trigger($mf,$K+array("Type"=>reset($ui["Type"]))));}}$K=$_POST;}page_header(($C!=""?lang(239).": ".h($C):lang(240)),$n,array("table"=>$a));echo'
    ',lang(241),'',html_select("Timing",$ui["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
    ',lang(242),'',html_select("Event",$ui["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$ui["Event"])?" ":""),'
    ',lang(48),'',html_select("Type",$ui["Type"],$K["Type"]),'

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

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

    ';if($C!=""){echo'',confirm(lang(176,$C));}echo'

    ';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$ng=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$vb)$ng[$vb][$K["Privilege"]]=$K["Comment"];}$ng["Server Admin"]+=$ng["File access on server"];$ng["Databases"]["Create routine"]=$ng["Procedures"]["Create routine"];unset($ng["Procedures"]["Create routine"]);$ng["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$ng["Columns"][$X]=$ng["Tables"][$X];unset($ng["Server Admin"]["Usage"]);foreach($ng["Tables"]as$y=>$X)unset($ng["Databases"][$y]);$We=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$We[$X]=(array)$We[$X]+(array)$_POST["grants"][$y];}$md=array();$kf="";if(isset($_GET["host"])&&($I=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$B,PREG_SET_ORDER)){foreach($B as$X){if($X[1]!="USAGE")$md["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$md["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$A))$kf=$A[1];}}if($_POST&&!$n){$lf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $lf",ME."privileges=",lang(243));else{$Ye=q($_POST["user"])."@".q($_POST["host"]);$Vf=$_POST["pass"];if($Vf!=''&&!$_POST["hashed"]&&!min_version(8)){$Vf=get_val("SELECT PASSWORD(".q($Vf).")");$n=!$Vf;}$_b=false;if(!$n){if($lf!=$Ye){$_b=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Ye IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Vf));$n=!$_b;}elseif($Vf!=$kf)queries("SET PASSWORD FOR $Ye = ".q($Vf));}if(!$n){$Jg=array();foreach($We as$ef=>$ld){if(isset($_GET["grant"]))$ld=array_filter($ld);$ld=array_keys($ld);if(isset($_GET["grant"]))$Jg=array_diff(array_keys(array_filter($We[$ef],'strlen')),$ld);elseif($lf==$Ye){$if=array_keys((array)$md[$ef]);$Jg=array_diff($if,$ld);$ld=array_diff($ld,$if);unset($md[$ef]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$ef,$A)&&(!grant("REVOKE",$Jg,$A[2]," ON $A[1] FROM $Ye")||!grant("GRANT",$ld,$A[2]," ON $A[1] TO $Ye"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($lf!=$Ye)queries("DROP USER $lf");elseif(!isset($_GET["grant"])){foreach($md as$ef=>$Jg){if(preg_match('~^(.+)(\(.*\))?$~U',$ef,$A))grant("REVOKE",array_keys($Jg),$A[2]," ON $A[1] FROM $Ye");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(244):lang(245)),!$n);if($_b)$g->query("DROP USER $Ye");}}page_header((isset($_GET["host"])?lang(34).": ".h("$ha@$_GET[host]"):lang(147)),$n,array("privileges"=>array('',lang(70))));$K=$_POST;if($K)$md=$We;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$kf;if($kf!="")$K["hashed"]=true;$md[(DB==""||$md?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    ',lang(33),'
    ',lang(34),'
    ',lang(35),' ',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$K["hashed"],lang(246),"typePassword(this.form['pass'], this.checked);")),'
    ';echo"\n","\n";foreach(array(""=>"","Server Admin"=>lang(33),"Databases"=>lang(36),"Tables"=>lang(130),"Columns"=>lang(47),"Procedures"=>lang(247),)as$vb=>$Qb){foreach((array)$ng[$vb]as$mg=>$lb){echo"$Qb'.h($mg);$t=0;foreach($md as$ef=>$ld){$C="'grants[$t][".h(strtoupper($mg))."]'";$Y=$ld[strtoupper($mg)];if($vb=="Server Admin"&&$ef!=(isset($md["*.*"])?"*.*":".*"))echo"
    ".lang(70).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($md as$ef=>$ld){echo''.($ef!="*.*"?"":"*.*");$t++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else{echo"";}$t++;}}}echo"
    \n",'

    ';if(isset($_GET["host"])){echo'',confirm(lang(176,"$ha@$_GET[host]"));}echo'

    ';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$n){$he=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$he++;}queries_redirect(ME."processlist=",lang(250,$he),$he||!$_POST["kill"]);}}page_header(lang(115),$n);echo'
    ',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()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(251).'':h($X));echo"\n";}echo'

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

    \n";}echo'

    ',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$p=fields($a);$cd=column_foreign_keys($a);$gf=$S["Oid"];parse_str($_COOKIE["adminer_import"],$qa);$Kg=array();$e=array();$Wg=array();$yf=array();$Zh=null;foreach($p as$y=>$o){$C=$b->fieldName($o);$Ue=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($o["privileges"]["select"])&&$C!=""){$e[$y]=$Ue;if(is_shortable($o))$Zh=$b->selectLengthProcess();}if(isset($o["privileges"]["where"])&&$C!="")$Wg[$y]=$Ue;if(isset($o["privileges"]["order"])&&$C!="")$yf[$y]=$Ue;$Kg+=$o["privileges"];}list($M,$nd)=$b->selectColumnsProcess($e,$x);$M=array_unique($M);$nd=array_unique($nd);$Xd=count($nd)selectSearchProcess($p,$x);$xf=$b->selectOrderProcess($p,$x);$z=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Ci=>$K){$ya=convert_field($p[key($K)]);$M=array($ya?:idf_escape(key($K)));$Z[]=where_check($Ci,$p);$J=$m->select($a,$M,$Z,$M);if($J)echo reset($J->fetch_row());}exit;}$G=$Ei=null;foreach($x as$w){if($w["type"]=="PRIMARY"){$G=array_flip($w["columns"]);$Ei=($M?$G:array());foreach($Ei as$y=>$X){if(in_array(idf_escape($y),$M))unset($Ei[$y]);}break;}}if($gf&&!$G){$G=$Ei=array($gf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($gf));}if($_POST&&!$n){$cj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Xa=array();foreach($_POST["check"]as$Ta)$Xa[]=where_check($Ta,$p);$cj[]="((".implode(") OR (",$Xa)."))";}$cj=($cj?"\nWHERE ".implode(" AND ",$cj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$gd=($M?implode(", ",$M):"*").convert_fields($e,$p,$M)."\nFROM ".table($a);$pd=($nd&&$Xd?"\nGROUP BY ".implode(", ",$nd):"").($xf?"\nORDER BY ".implode(", ",$xf):"");$H="SELECT $gd$cj$pd";if(is_array($_POST["check"])&&!$G){$Ai=array();foreach($_POST["check"]as$X)$Ai[]="(SELECT".limit($gd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$pd,1).")";$H=implode(" UNION ALL ",$Ai);}$b->dumpData($a,"table",$H);$b->dumpFooter();exit;}if(!$b->selectEmailProcess($Z,$cd)){if($_POST["save"]||$_POST["delete"]){$I=true;$ra=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$C=>$X){$X=process_input($p[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){if($_POST["clone"])$H="INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a);if($_POST["all"]||($G&&is_array($_POST["check"]))||$Xd){$I=($_POST["delete"]?$m->delete($a,$cj):($_POST["clone"]?queries("INSERT $H$cj"):$m->update($a,$O,$cj)));$ra=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$bj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$I=($_POST["delete"]?$m->delete($a,$bj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$bj)):$m->update($a,$O,$bj,1)));if(!$I)break;$ra+=$g->affected_rows;}}}$Ke=lang(254,$ra);if($_POST["clone"]&&$I&&$ra==1){$ne=last_id();if($ne)$Ke=lang(169," $ne");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Ke,$I);if(!$_POST["delete"]){$gg=(array)$_POST["fields"];edit_form($a,array_intersect_key($p,$gg),$gg,!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n=lang(255);else{$I=true;$ra=0;foreach($_POST["val"]as$Ci=>$K){$O=array();foreach($K as$y=>$X){$y=bracket_escape($y,1);$O[idf_escape($y)]=(preg_match('~char|text~',$p[$y]["type"])||$X!=""?$b->processInput($p[$y],$X):"NULL");}$I=$m->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Ci,$p),!$Xd&&!$G," ");if(!$I)break;$ra+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(254,$ra),$I);}}elseif(!is_string($Qc=get_file("csv_file",true)))$n=upload_error($Qc);elseif(!preg_match('~~u',$Qc))$n=lang(256);else{cookie("adminer_import","output=".urlencode($qa["output"])."&format=".urlencode($_POST["separator"]));$I=true;$hb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Qc,$B);$ra=count($B[0]);$m->begin();$ch=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($B[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$ch]*)$ch~",$X.$ch,$Ce);if(!$y&&!array_diff($Ce[1],$hb)){$hb=$Ce[1];$ra--;}else{$O=array();foreach($Ce[1]as$t=>$db)$O[idf_escape($hb[$t])]=($db==""&&$p[$hb[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$db)?str_replace('""','"',substr($db,1,-1)):$db));$L[]=$O;}}$I=(!$L||$m->insertUpdate($a,$L,$G));if($I)$m->commit();queries_redirect(remove_from_uri("page"),lang(257,$ra),$I);$m->rollback();}}}$Lh=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else page_header(lang(52).": $Lh",$n);$O=null;if(isset($Kg["insert"])||!support("table")){$Of=array();foreach((array)$_GET["where"]as$X){if(isset($cd[$X["col"]])&&count($cd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Of["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$Of?"&".http_build_query($Of):"";}$b->selectLinks($S,$O);if(!$e&&support("table"))echo"

    ".lang(258).($p?".":": ".error())."\n";else{echo"

    \n","
    ";hidden_fields_get();echo(DB!=""?''.(isset($_GET["ns"])?'':""):"");echo'',"
    \n";$b->selectColumnsPrint($M,$e);$b->selectSearchPrint($Z,$Wg,$x);$b->selectOrderPrint($xf,$yf,$x);$b->selectLimitPrint($z);$b->selectLengthPrint($Zh);$b->selectActionPrint($x);echo"
    \n";$E=$_GET["page"];if($E=="last"){$fd=get_val(count_rows($a,$Z,$Xd,$nd));$E=floor(max(0,$fd-1)/$z);}$Xg=$M;$od=$nd;if(!$Xg){$Xg[]="*";$wb=convert_fields($e,$p,$M);if($wb)$Xg[]=substr($wb,2);}foreach($M as$y=>$X){$o=$p[idf_unescape($X)];if($o&&($ya=convert_field($o)))$Xg[$y]="$ya AS $X";}if(!$Xd&&$Ei){foreach($Ei as$y=>$X){$Xg[]=idf_escape($y);if($od)$od[]=idf_escape($y);}}$I=$m->select($a,$Xg,$Z,$od,$xf,$z,$E,true);if(!$I)echo"

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

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

    ".lang(12)."\n";else{$Fa=$b->backwardKeys($a,$Lh);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$nd&&$M?"":"\n";if(is_ajax())ob_end_clean();foreach($b->rowDescriptions($L,$cd)as$Te=>$K){$Bi=unique_array($L[$Te],$x);if(!$Bi){$Bi=array();foreach($L[$Te]as$y=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$y))$Bi[$y]=$X;}}$Ci="";foreach($Bi as$y=>$X){if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$p[$y]["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$p[$y]["collation"])?$y:"CONVERT($y USING ".charset($g).")").")";$X=md5($X);}$Ci.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($y));}echo"".(!$nd&&$M?"":"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(259)."");$Ve=array();$id=array();reset($M);$wg=1;foreach($L[0]as$y=>$X){if(!isset($Ei[$y])){$X=$_GET["columns"][key($M)];$o=$p[$M?($X?$X["col"]:current($M)):$y];$C=($o?$b->fieldName($o,$wg):($X["fun"]?"*":h($y)));if($C!=""){$wg++;$Ve[$y]=$C;$d=idf_escape($y);$Bd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$Qb="&desc%5B0%5D=1";$qh=isset($o["privileges"]["order"]);echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$hd=apply_sql_function($X["fun"],$C);echo($qh?''."$hd":$hd);echo"";}$id[$y]=$X["fun"];next($M);}}$te=array();if($_GET["modify"]){foreach($L as$K){foreach($K as$y=>$X)$te[$y]=max($te[$y],min(40,strlen(utf8_decode($X))));}}echo($Fa?"".lang(260):"")."
    ".checkbox("check[]",substr($Ci,1),in_array(substr($Ci,1),(array)$_POST["check"])).($Xd||information_schema(DB)?"":" ".lang(261).""));foreach($K as$y=>$X){if(isset($Ve[$y])){$o=$p[$y];$X=$m->value($X,$o);if($X!=""&&(!isset($nc[$y])||$nc[$y]!=""))$nc[$y]=(is_mail($X)?$Ve[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$o["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$Ci;if(!$_&&$X!==null){foreach((array)$cd[$y]as$q){if(count($cd[$y])==1||end($q["source"])==$y){$_="";foreach($q["source"]as$t=>$rh)$_.=where_link($t,$q["target"][$t],$L[$Te][$rh]);$_=($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($y=="COUNT(*)"){$_=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Bi))$_.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($Bi as$de=>$W)$_.=where_link($t++,$de,$W);}$X=select_value($X,$_,$o,$Zh);$u=h("val[$Ci][".bracket_escape($y)."]");$Y=$_POST["val"][$Ci][bracket_escape($y)];$ic=!is_array($K[$y])&&is_utf8($X)&&$L[$Te][$y]==$K[$y]&&!$id[$y]&&!$o["generated"];$Xh=preg_match('~text|json|lob~',$o["type"]);echo"".($Xh?"":"");}else{$ye=strpos($X,"");echo" data-text='".($ye?2:($Xh?1:0))."'".($ic?"":" data-warning='".h(lang(262))."'").">$X";}}}if($Fa)echo"";$b->backwardKeysPrint($Fa,$L[$Te]);echo"
    \n","
    \n";}if(!is_ajax()){if($L||$E){$Ac=true;if($_GET["page"]!="last"){if($z==""||(count($L)<$z&&($L||!$E)))$fd=($E?$E*$z:0)+count($L);elseif(JUSH!="sql"||!$Xd){$fd=($Xd?false:found_rows($S,$Z));if($fd$z||$E));if($Mf){echo(($fd===false?count($L)+1:$fd-$E*$z)>$z?'

    '.lang(263).''.script("qsl('a').onclick = partial(selectLoadMore, ".(+$z).", '".lang(264)."…');",""):''),"\n";}}echo"

    \n";if($b->selectImportPrint()){echo"
    ","".lang(71)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"","
    ";}echo"\n","\n",(!$nd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(117):lang(116));$Si=($P?show_status():show_variables());if(!$Si)echo"

    ".lang(12)."\n";else{echo"\n";foreach($Si as$y=>$X){echo"","
    ".h($y)."","".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Hh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$y)json_row("$y-$C",h($S[$y]));foreach($Hh+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=format_number($S[$y]);if($X>=0)json_row("$y-$C",($y=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Hh[$y]))$Hh[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))json_row("$y-$C","?");}}}foreach($Hh as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Rh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Rh&&!$n&&!$_POST["search"]){$I=true;$Ke="";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"]);$Ke=lang(268);}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ke=lang(269);}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Ke=lang(270);}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$Ke=lang(271);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$Ke.="".h($R).": ".h($K["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Ke=lang(272);}elseif(!$_POST["tables"])$Ke=lang(9);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())$Ke.="".h($K["Table"]).": ".h($K["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$Ke,$I);}page_header(($_GET["ns"]==""?lang(36).": ".h(DB):lang(75).": ".h($_GET["ns"])),$n,true);if($b->homepage()){if($_GET["ns"]!==""){echo"

    ".lang(273)."

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

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

    \n";if(support("table")){echo"
    ".lang(274)."
    ","",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$m->convertOperator("LIKE %%");search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($Qh as$C=>$U){$Vi=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$C);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(130),''.lang(275).doc_link(array('sql'=>'storage-engines.html')),''.lang(121).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),''.lang(276).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),''.lang(277).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),''.lang(278).doc_link(array('sql'=>'show-table-status.html')),''.lang(50).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),''.lang(279).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?''.lang(49).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"
    '.checkbox(($Vi?"views[]":"tables[]"),$C,in_array($C,$Rh,true),"","","",$u),''.(support("table")||support("indexes")?"".h($C).'':h($C));if($Vi){echo''.(preg_match('~materialized~i',$U)?lang(128):lang(129)).'','?';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(43)),"Index_length"=>array("indexes",lang(132)),"Data_free"=>array("edit",lang(44)),"Auto_increment"=>array("auto_increment=1&create",lang(43)),"Rows"=>array("select",lang(40)),)as$y=>$_){$u=" id='$y-".h($C)."'";echo($_?"".(support("table")||$y=="Rows"||(support("indexes")&&$y!="Data_length")?"?":"?"):"");}$T++;}echo(support("comment")?"":""),"\n";}echo"
    ".lang(252,count($Qh)),"".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","
    \n";if(!information_schema(DB)){echo"\n";}echo"
    \n",script("tableCheck();");}echo'

    ".lang(144)."

    \n";$Og=routines();if($Og){echo"\n",'\n";foreach($Og as$K){$C=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'','
    '.lang(184).''.lang(48).''.lang(222)."
    '.h($K["ROUTINE_NAME"]).'',''.h($K["ROUTINE_TYPE"]),''.h($K["DTD_IDENTIFIER"]),''.lang(135)."";}echo"
    \n";}echo'

    ".lang(290)."

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

    ".lang(31)."

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

    ".lang(145)."

    \n";$L=get_rows("SHOW EVENTS");if($L){echo"\n","\n";foreach($L as$K){echo"","
    ".lang(184)."".lang(291)."".lang(211)."".lang(212)."
    ".h($K["Name"]),"".($K["Execute at"]?lang(292)."".$K["Execute at"]:lang(213)." ".$K["Interval value"]." ".$K["Interval field"]."$K[Starts]"),"$K[Ends]",''.lang(135).'';}echo"
    \n";$zc=get_val("SELECT @@event_scheduler");if($zc&&$zc!="ON")echo"

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