diff --git a/srcs/configs/wordpress/entry/configure-redis.sh b/srcs/configs/wordpress/entry/configure-redis.sh deleted file mode 100755 index 1a24852..0000000 --- a/srcs/configs/wordpress/entry/configure-redis.sh +++ /dev/null @@ -1 +0,0 @@ -#!/bin/sh diff --git a/srcs/configs/wordpress/entry/configure-wp_redis.sh b/srcs/configs/wordpress/entry/configure-wp_redis.sh new file mode 100755 index 0000000..966001f --- /dev/null +++ b/srcs/configs/wordpress/entry/configure-wp_redis.sh @@ -0,0 +1,16 @@ +#!/bin/sh + + +echo ${REDIS_HOSTNAME} +if [ -f "/redis.ok" ]; then + echo "[*] redis-cache already installed and configured" +else + echo "[*] Installing redis-cache plugin" + wp --allow-root config set WP_REDIS_HOST ${REDIS_HOSTNAME} + wp --allow-root config set WP_REDIS_PORT ${REDIS_PORT} + wp --allow-root config set WP_CACHE_KEY_SALT ${WP_URL} + wp --allow-root plugin install redis-cache --activate + wp --allow-root plugin update --all + wp --allow-root redis enable + touch /redis.ok +fi diff --git a/srcs/docker-compose.yml b/srcs/docker-compose.yml index aec16f0..f92b18e 100644 --- a/srcs/docker-compose.yml +++ b/srcs/docker-compose.yml @@ -61,6 +61,8 @@ services: - PHP_MEMORY_LIMIT="512M" - PHP_MAX_UPLOAD="50M" - PHP_PORT=9000 + - REDIS_HOSTNAME=redis + - REDIS_PORT=6379 - TZ=Europe/Paris volumes: - wp-site:/var/www/wordpress @@ -86,6 +88,7 @@ services: static-site: build: docker/bonus/static-site + container_name: inception-kanel-supremacy ports: - 8080:443 depends_on: @@ -100,6 +103,7 @@ services: build: context: . dockerfile: docker/bonus/borg-backup/Dockerfile + container_name: inception-backup networks: - inception environment: @@ -121,3 +125,43 @@ services: - wp-site:/source/wordpress - backup:/backup restart: unless-stopped + + adminer: + build: + context: . + dockerfile: docker/bonus/adminer/Dockerfile + container_name: inception-adminer + networks: + - inception + ports: + - 8090:8080 + depends_on: + db: + condition: service_healthy + restart: unless-stopped + + redis: + build: + context: . + dockerfile: docker/bonus/redis/Dockerfile + container_name: inception-redis + networks: + - inception + restart: unless-stopped + + ftp: + build: + context: . + dockerfile: docker/bonus/vsftpd/Dockerfile + container_name: inception-ftp + networks: + - inception + environment: + - VSFTPD_USER=kanel + - VSFTPD_PASS=alpine + volumes: + - wp-site:/var/ftp + ports: + - 21:21 + - 30000-30100:30000-30100 + restart: unless-stopped diff --git a/srcs/docker/bonus/adminer/Dockerfile b/srcs/docker/bonus/adminer/Dockerfile new file mode 100644 index 0000000..1a80c76 --- /dev/null +++ b/srcs/docker/bonus/adminer/Dockerfile @@ -0,0 +1,31 @@ +FROM scratch +ADD docker/alpine/alpine-minirootfs-3.21.2-x86_64.tar.gz / + +LABEL version="0.1" +LABEL maintainer="KeyZox" + +VOLUME /var/www/adminer + +COPY docker/bonus/adminer/adminer-4.17.1-mysql.php /var/www/adminer/index.php + +RUN apk update \ + && apk add php84 php84-mysqli php84-session curl \ + && addgroup -S adminer \ + && adduser -S -G adminer adminer \ + && chown -R adminer:adminer /var/www/adminer \ + && chmod 755 /var/www/adminer/index.php + +RUN echo "upload_max_filesize = 128M" >> /etc/php84/conf.d/0-upload_large_dumps.ini \ + && echo "post_max_size = 128M" >> /etc/php84/conf.d/0-upload_large_dumps.ini \ + && echo "memory_limit = 1G" >> /etc/php84/conf.d/0-upload_large_dumps.ini \ + && echo "max_execution_time = 600" >> /etc/php84/conf.d/0-upload_large_dumps.ini \ + && echo "max_input_vars = 5000" >> /etc/php84/conf.d/0-upload_large_dumps.ini + +WORKDIR "/var/www/adminer" + +EXPOSE 8080 +STOPSIGNAL SIGINT + +USER adminer +CMD [ "php84", "-S", "0.0.0.0:8080", "-t", "/var/www/adminer"] +HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=1s --start-interval=2s CMD curl -f "http://localhost:8080" diff --git a/srcs/docker/bonus/adminer/adminer-4.17.1-mysql.php b/srcs/docker/bonus/adminer/adminer-4.17.1-mysql.php new file mode 100644 index 0000000..b8d20df --- /dev/null +++ b/srcs/docker/bonus/adminer/adminer-4.17.1-mysql.php @@ -0,0 +1,909 @@ +$W){unset($vf[$z][$yd]);if(is_array($W)){$vf[$z][stripslashes($yd)]=$W;$vf[]=&$vf[$z][stripslashes($yd)];}else$vf[$z][stripslashes($yd)]=($Cc?$W:stripslashes($W));}}}}function +bracket_escape($v,$Aa=false){static$fh=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return +strtr($v,($Aa?array_flip($fh):$fh));}function +min_version($Gh,$Sd="",$h=null){global$g;if(!$h)$h=$g;$dg=$h->server_info;if($Sd&&preg_match('~([\d.]+)-MariaDB~',$dg,$C)){$dg=$C[1];$Gh=$Sd;}return$Gh&&version_compare($dg,$Gh)>=0;}function +charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function +script($ng,$eh="\n"){return"$ng$eh";}function +script_src($xh){return"\n";}function +nonce(){return' nonce="'.get_nonce().'"';}function +target_blank(){return' target="_blank" rel="noreferrer noopener"';}function +h($yg){return +str_replace("\0","�",htmlspecialchars($yg,ENT_QUOTES,'utf-8'));}function +nl_br($yg){return +str_replace("\n","
",$yg);}function +checkbox($E,$Y,$Ra,$Bd="",$Ce="",$Va="",$Cd=""){$K="".($Ce?script("qsl('input').onclick = function () { $Ce };",""):"");return($Bd!=""||$Va?"$K".h($Bd)."":$K);}function +optionlist($Ge,$Yf=null,$Ah=false){$K="";foreach($Ge +as$yd=>$W){$He=array($yd=>$W);if(is_array($W)){$K.='';$He=$W;}foreach($He +as$z=>$X)$K.=''.h($X);if(is_array($W))$K.='';}return$K;}function +html_select($E,$Ge,$Y="",$Be=true,$Cd=""){if($Be)return"".(is_string($Be)?script("qsl('select').onchange = function () { $Be };",""):"");$K="";foreach($Ge +as$z=>$X)$K.="";return$K;}function +confirm($D="",$Zf="qsl('input')"){return +script("$Zf.onclick = function () { return confirm('".($D?js_escape($D):lang(0))."'); };","");}function +print_fieldset($u,$Kd,$Jh=false){echo"
","$Kd",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"","
\n";}function +selectSearchPrint($Z,$e,$x){print_fieldset("search",lang(46),$Z);foreach($x +as$t=>$w){if($w["type"]=="FULLTEXT"){echo"
(".implode(", ",array_map('h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"
\n";}}$Na="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(47).")"),html_select("where[$t][op]",$this->operators,$X["op"],$Na),"",script("mixin(qsl('input'), {oninput: function () { $Na }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}}echo"\n";}function +selectOrderPrint($Ie,$e,$x){print_fieldset("sort",lang(48),$Ie);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"
".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),lang(49))."
\n";$t++;}}echo"
".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(49))."
\n","\n";}function +selectLimitPrint($_){echo"
".lang(50)."
";echo"",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function +selectLengthPrint($Sg){if($Sg!==null){echo"
".lang(51)."
","","
\n";}}function +selectActionPrint($x){echo"
".lang(52)."
",""," ","\n","var indexColumns = ";$e=array();foreach($x +as$w){$wb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$wb)$e[$wb]=1;}$e[""]=1;foreach($e +as$z=>$X)json_row($z);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function +selectCommandPrint(){return!information_schema(DB);}function +selectImportPrint(){return!information_schema(DB);}function +selectEmailPrint($cc,$e){}function +selectColumnsProcess($e,$x){global$Oc,$Uc;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$Oc)||in_array($X["fun"],$Uc)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$Uc))$s[]=$N[$z];}}return +array($N,$s);}function +selectSearchProcess($o,$x){global$g,$l;$K=array();foreach($x +as$t=>$w){if($w["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$of="";$ib=" $X[op]";if(preg_match('~IN$~',$X["op"])){$jd=process_length($X["val"]);$ib.=" ".($jd!=""?$jd:"(NULL)");}elseif($X["op"]=="SQL")$ib=" $X[val]";elseif($X["op"]=="LIKE %%")$ib=" LIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$ib=" ILIKE ".$this->processInput($o[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$of="$X[op](".q($X["val"]).", ";$ib=")";}elseif(!preg_match('~NULL$~',$X["op"]))$ib.=" ".$this->processInput($o[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=$of.$l->convertSearch(idf_escape($X["col"]),$X,$o[$X["col"]]).$ib;else{$cb=array();foreach($o +as$E=>$n){if((preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$n["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$n["type"]))&&(!preg_match('~date|timestamp~',$n["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$cb[]=$of.$l->convertSearch(idf_escape($E),$X,$n).$ib;}$K[]=($cb?"(".implode(" OR ",$cb).")":"1 = 0");}}}return$K;}function +selectOrderProcess($o,$x){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function +selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function +selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function +selectEmailProcess($Z,$Ic){return +false;}function +selectQueryBuild($N,$Z,$s,$Ie,$_,$G){return"";}function +messageQuery($I,$Tg,$xc=false){global$y,$l;restart_session();$cd=&get_session("queries");if(!$cd[$_GET["db"]])$cd[$_GET["db"]]=array();if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n…";$cd[$_GET["db"]][]=array($I,time(),$Tg);$rg="sql-".count($cd[$_GET["db"]]);$K="".lang(54)."\n";if(!$xc&&($Lh=$l->warnings())){$u="warnings-".count($cd[$_GET["db"]]);$K="".lang(36).", $K\n";}return" ".@date("H:i:s").""." $K';}function +editRowPrint($Q,$o,$L,$vh){}function +editFunctions($n){global$Xb;$K=($n["null"]?"NULL/":"");$vh=isset($_GET["select"])||where($_GET);foreach($Xb +as$z=>$Oc){if(!$z||(!isset($_GET["call"])&&$vh)){foreach($Oc +as$ff=>$X){if(!$ff||preg_match("~$ff~",$n["type"]))$K.="/$X";}}if($z&&!preg_match('~set|blob|bytea|raw|file|bool~',$n["type"]))$K.="/SQL";}if($n["auto_increment"]&&!$vh)$K=lang(41);return +explode("/",$K);}function +editInput($Q,$n,$xa,$Y){if($n["type"]=="enum")return(isset($_GET["select"])?" ":"").($n["null"]?" ":"").enum_input("radio",$xa,$n,$Y,$Y===0?0:null);return"";}function +editHint($Q,$n,$Y){return"";}function +processInput($n,$Y,$r=""){if($r=="SQL")return$Y;$E=$n["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$K="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$K=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$K=idf_escape($E)." $r $K";elseif(preg_match('~^[+-] interval$~',$r))$K=idf_escape($E)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$K="$r(".idf_escape($E).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$K="$r($K)";return +unconvert_field($n,$K);}function +dumpOutput(){$K=array('text'=>lang(55),'file'=>lang(56));if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function +dumpFormat(){return +array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function +dumpDatabase($k){}function +dumpTable($Q,$_g,$wd=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($_g)dump_csv(array_keys(fields($Q)));}else{if($wd==2){$o=array();foreach(fields($Q)as$E=>$n)$o[]=idf_escape($E)." $n[full_type]";$i="CREATE TABLE ".table($Q)." (".implode(", ",$o).")";}else$i=create_sql($Q,$_POST["auto_increment"],$_g);set_utf8mb4($i);if($_g&&$i){if($_g=="DROP+CREATE"||$wd==1)echo"DROP ".($wd==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($wd==1)$i=remove_definer($i);echo"$i;\n\n";}}}function +dumpData($Q,$_g,$I){global$g,$y;if($_g){$Vd=($y=="sqlite"?0:1048576);$o=array();if($_POST["format"]=="sql"){if($_g=="TRUNCATE+INSERT")echo +truncate_sql($Q).";\n";$o=fields($Q);}$J=$g->query($I,1);if($J){$pd="";$Ja="";$zd=array();$Pc=array();$Bg="";$_c=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$_c()){if(!$zd){$Dh=array();foreach($L +as$X){$n=$J->fetch_field();if($o[$n->name]['generated']){$Pc[$n->name]=true;continue;}$zd[]=$n->name;$z=idf_escape($n->name);$Dh[]="$z = VALUES($z)";}$Bg=($_g=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Dh):"").";\n";}if($_POST["format"]!="sql"){if($_g=="table"){dump_csv($zd);$_g="INSERT";}dump_csv($L);}else{if(!$pd)$pd="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$zd)).") VALUES";foreach($L +as$z=>$X){if($Pc[$z]){unset($L[$z]);continue;}$n=$o[$z];$L[$z]=($X!==null?unconvert_field($n,preg_match(number_type(),$n["type"])&&!preg_match('~\[~',$n["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Tf=($Vd?"\n":" ")."(".implode(",\t",$L).")";if(!$Ja)$Ja=$pd.$Tf;elseif(strlen($Ja)+4+strlen($Tf)+strlen($Bg)<$Vd)$Ja.=",$Tf";else{echo$Ja.$Bg;$Ja=$pd.$Tf;}}}if($Ja)echo$Ja.$Bg;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function +dumpFilename($gd){return +friendly_url($gd!=""?$gd:(SERVER!=""?SERVER:"localhost"));}function +dumpHeaders($gd,$ie=false){$Se=$_POST["output"];$uc=(preg_match('~sql~',$_POST["format"])?"sql":($ie?"tar":"csv"));header("Content-Type: ".($Se=="gz"?"application/x-gzip":($uc=="tar"?"application/x-tar":($uc=="sql"||$Se!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Se=="gz")ob_start('ob_gzencode',1e6);return$uc;}function +importServerPath(){return"adminer.sql";}function +homepage(){echo'

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

+';switch_lang();if($he=="auth"){$Se="";foreach((array)$_SESSION["pwds"]as$Fh=>$eg){foreach($eg +as$O=>$Bh){foreach($Bh +as$V=>$df){if($df!==null){$Bb=$_SESSION["db"][$Fh][$O][$V];foreach(($Bb?array_keys($Bb):array(""))as$k)$Se.="
  • ($Qb[$Fh]) ".h($V.($O!=""?"@".$this->serverName($O):"").($k!=""?" - $k":""))."\n";}}}}if($Se)echo"
      \n$Se
    \n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$S=array();if($_GET["ns"]!==""&&!$he&&DB!=""){$g->select_db(DB);$S=table_status('',true);}echo +script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.17.1");if(support("sql")){echo' +';if($S){$Od=array();foreach($S +as$Q=>$U)$Od[]=preg_quote($Q,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$Od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}$dg=$g->server_info;echo'bodyLoad(\'',(is_object($g)?preg_replace('~^(\d\.?\d).*~s','\1',$dg):""),'\'',(preg_match('~MariaDB~',$dg)?", true":""),'); + +';}$this->databasesPrint($he);$la=array();if(DB==""||!$he){if(support("sql")){$la[]="".lang(54)."";$la[]="".lang(62)."";}if(support("dump"))$la[]="".lang(63)."";}$kd=$_GET["ns"]!==""&&!$he&&DB!="";if($kd)$la[]='".lang(64)."";echo($la?"

    ".lang(10)."

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

    +';hidden_fields_get();$_b=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"".lang(65).": ".($j?"$_b":"\n"),"\n";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"";break;}}echo"

    \n";}function +tablesPrint($S){echo"
      ".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($S +as$Q=>$vg){$E=$this->tableName($vg);if($E!=""){echo'
    • ".lang(66)." ",(support("table")||support("indexes")?'$E":"$E")."\n";}}echo"
    \n";}}$c=(function_exists('adminer_object')?adminer_object():new +Adminer);$Qb=array("server"=>"MySQL")+$Qb;if(!defined("DRIVER")){define("DRIVER","server");if(extension_loaded("mysqli")){class +Min_DB +extends +MySQLi{var$extension="MySQLi";function +__construct(){parent::init();}function +connect($O="",$V="",$df="",$zb=null,$jf=null,$mg=null){global$c;mysqli_report(MYSQLI_REPORT_OFF);list($ed,$jf)=explode(":",$O,2);$tg=$c->connectSsl();if($tg)$this->ssl_set($tg['key'],$tg['cert'],$tg['ca'],'','');$K=@$this->real_connect(($O!=""?$ed:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$df!=""?$df:ini_get("mysqli.default_pw")),$zb,(is_numeric($jf)?$jf:ini_get("mysqli.default_port")),(!is_numeric($jf)?$jf:$mg),($tg?(empty($tg['cert'])?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$K;}function +set_charset($Oa){if(parent::set_charset($Oa))return +true;parent::set_charset('utf8');return$this->query("SET NAMES $Oa");}function +result($I,$n=0){$J=$this->query($I);if(!$J)return +false;$L=$J->fetch_array();return$L[$n];}function +quote($yg){return"'".$this->escape_string($yg)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class +Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function +connect($O,$V,$df){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(67,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return +false;}$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$df"!=""?$df: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($Oa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Oa,$this->_link))return +true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Oa");}function +quote($yg){return"'".mysql_real_escape_string($yg,$this->_link)."'";}function +select_db($zb){return +mysql_select_db($zb,$this->_link);}function +query($I,$oh=false){$J=@($oh?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return +false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return +true;}return +new +Min_Result($J);}function +multi_query($I){return$this->_result=$this->query($I);}function +store_result(){return$this->_result;}function +next_result(){return +false;}function +result($I,$n=0){$J=$this->query($I);if(!$J||!$J->num_rows)return +false;return +mysql_result($J->_result,0,$n);}}class +Min_Result{var$num_rows,$_result,$_offset=0;function +__construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function +fetch_assoc(){return +mysql_fetch_assoc($this->_result);}function +fetch_row(){return +mysql_fetch_row($this->_result);}function +fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function +__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class +Min_DB +extends +Min_PDO{var$extension="PDO_MySQL";function +connect($O,$V,$df){global$c;$Ge=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$tg=$c->connectSsl();if($tg){if(!empty($tg['key']))$Ge[PDO::MYSQL_ATTR_SSL_KEY]=$tg['key'];if(!empty($tg['cert']))$Ge[PDO::MYSQL_ATTR_SSL_CERT]=$tg['cert'];if(!empty($tg['ca']))$Ge[PDO::MYSQL_ATTR_SSL_CA]=$tg['ca'];if(!empty($tg['verify']))$Ge[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$tg['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$O)),$V,$df,$Ge);return +true;}function +set_charset($Oa){$this->query("SET NAMES $Oa");}function +select_db($zb){return$this->query("USE ".idf_escape($zb));}function +query($I,$oh=false){$this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$oh);return +parent::query($I,$oh);}}}class +Min_Driver +extends +Min_SQL{function +insert($Q,$P){return($P?parent::insert($Q,$P):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function +insertUpdate($Q,$M,$qf){$e=array_keys(reset($M));$of="INSERT INTO ".table($Q)." (".implode(", ",$e).") VALUES\n";$Dh=array();foreach($e +as$z)$Dh[$z]="$z = VALUES($z)";$Bg="\nON DUPLICATE KEY UPDATE ".implode(", ",$Dh);$Dh=array();$Ld=0;foreach($M +as$P){$Y="(".implode(", ",$P).")";if($Dh&&(strlen($of)+$Ld+strlen($Y)+strlen($Bg)>1e6)){if(!queries($of.implode(",\n",$Dh).$Bg))return +false;$Dh=array();$Ld=0;}$Dh[]=$Y;$Ld+=strlen($Y)+2;}return +queries($of.implode(",\n",$Dh).$Bg);}function +slowQuery($I,$Ug){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$Ug FOR $I";elseif(preg_match('~^(SELECT\b)(.+)~is',$I,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($Ug*1000).") */ $C[2]";}}function +convertSearch($v,$X,$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->_conn).")":$v);}function +warnings(){$J=$this->_conn->query("SHOW WARNINGS");if($J&&$J->num_rows){ob_start();select($J);return +ob_get_clean();}}function +tableHelp($E){$Rd=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return +strtolower("information-schema-".($Rd?"$E-table/":str_replace("_","-",$E)."-table.html"));if(DB=="mysql")return($Rd?"mysql$E-table/":"system-schema.html");}function +hasCStyleEscapes(){static$Ka;if($Ka===null){$sg=$this->_conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Ka=(strpos($sg,'NO_BACKSLASH_ESCAPES')===false);}return$Ka;}}function +idf_escape($v){return"`".str_replace("`","``",$v)."`";}function +table($v){return +idf_escape($v);}function +connect(){global$c,$nh,$zg,$Xb;$g=new +Min_DB;$sb=$c->credentials();if($g->connect($sb[0],$sb[1],$sb[2])){$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");if(min_version('5.7.8',10.2,$g)){$zg[lang(68)][]="json";$nh["json"]=4294967295;}if(min_version('',10.7,$g)){$zg[lang(68)][]="uuid";$nh["uuid"]=128;$Xb[0]['uuid']='uuid';}if(min_version(9,'',$g)){$zg[lang(69)][]="vector";$nh["vector"]=16383;$Xb[0]['vector']='string_to_vector';}return$g;}$K=$g->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Tf=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Tf;return$K;}function +get_databases($Fc){$K=get_session("dbs");if($K===null){$I=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$K=($Fc?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function +limit($I,$Z,$_,$ue=0,$cg=" "){return" $I$Z".($_!==null?$cg."LIMIT $_".($ue?" OFFSET $ue":""):"");}function +limit1($Q,$I,$Z,$cg="\n"){return +limit($I,$Z,1,0,$cg);}function +db_collation($k,$bb){global$g;$K=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$C))$K=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$C))$K=$bb[$C[1]][-1];return$K;}function +engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function +logged_user(){global$g;return$g->result("SELECT USER()");}function +tables_list(){return +get_key_vals(min_version(5)?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function +count_tables($j){$K=array();foreach($j +as$k)$K[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$K;}function +table_status($E="",$yc=false){$K=array();foreach(get_rows($yc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".q(addcslashes($E,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($E!=""){$L["Name"]=$E;return$L;}$K[$L["Name"]]=$L;}return$K;}function +is_view($R){return$R["Engine"]===null;}function +fk_support($R){return +preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&min_version(5.6));}function +fields($Q){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$L){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$L["Type"],$C);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$C[1],"length"=>$C[2],"unsigned"=>ltrim($C[3].$C[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$C[1])?(preg_match('~text~',$C[1])?stripslashes(preg_replace("~^'(.*)'\$~",'\1',$L["Default"])):$L["Default"]):null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$C)?$C[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),"generated"=>preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$L["Extra"]),);}return$K;}function +indexes($Q,$h=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$h)as$L){$E=$L["Key_name"];$K[$E]["type"]=($E=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?($L["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$K[$E]["columns"][]=$L["Column_name"];$K[$E]["lengths"][]=($L["Index_type"]=="SPATIAL"?null:$L["Sub_part"]);$K[$E]["descs"][]=null;}return$K;}function +foreign_keys($Q){global$g,$Ae;static$ff='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$K=array();$qb=$g->result("SHOW CREATE TABLE ".table($Q),1);if($qb){preg_match_all("~CONSTRAINT ($ff) FOREIGN KEY ?\\(((?:$ff,? ?)+)\\) REFERENCES ($ff)(?:\\.($ff))? \\(((?:$ff,? ?)+)\\)(?: ON DELETE ($Ae))?(?: ON UPDATE ($Ae))?~",$qb,$Td,PREG_SET_ORDER);foreach($Td +as$C){preg_match_all("~$ff~",$C[2],$ng);preg_match_all("~$ff~",$C[5],$Ng);$K[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('idf_unescape',$ng[0]),"target"=>array_map('idf_unescape',$Ng[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$K;}function +view($E){global$g;return +array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$g->result("SHOW CREATE VIEW ".table($E),1)));}function +collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K +as$z=>$X)asort($K[$z]);return$K;}function +information_schema($k){return(min_version(5)&&$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,$ab){return +queries("CREATE DATABASE ".idf_escape($k).($ab?" COLLATE ".q($ab):""));}function +drop_databases($j){$K=apply_queries("DROP DATABASE",$j,'idf_escape');restart_session();set_session("dbs",null);return$K;}function +rename_database($E,$ab){$K=false;if(create_database($E,$ab)){$S=array();$Ih=array();foreach(tables_list()as$Q=>$U){if($U=='VIEW')$Ih[]=$Q;else$S[]=$Q;}$K=(!$S&&!$Ih)||move_tables($S,$Ih,$E);drop_databases($K?array(DB):array());}return$K;}function +auto_increment(){$_a=" 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)){$_a="";break;}if($w["type"]=="PRIMARY")$_a=" UNIQUE";}}return" AUTO_INCREMENT$_a";}function +alter_table($Q,$E,$o,$Hc,$fb,$fc,$ab,$za,$af){$ta=array();foreach($o +as$n)$ta[]=($n[1]?($Q!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($Q!=""?$n[2]:""):"DROP ".idf_escape($n[0]));$ta=array_merge($ta,$Hc);$vg=($fb!==null?" COMMENT=".q($fb):"").($fc?" ENGINE=".q($fc):"").($ab?" COLLATE ".q($ab):"").($za!=""?" AUTO_INCREMENT=$za":"");if($Q=="")return +queries("CREATE TABLE ".table($E)." (\n".implode(",\n",$ta)."\n)$vg$af");if($Q!=$E)$ta[]="RENAME TO ".table($E);if($vg)$ta[]=ltrim($vg);return($ta||$af?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$ta).$af):true);}function +alter_indexes($Q,$ta){foreach($ta +as$z=>$X)$ta[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return +queries("ALTER TABLE ".table($Q).implode(",",$ta));}function +truncate_tables($S){return +apply_queries("TRUNCATE TABLE",$S);}function +drop_views($Ih){return +queries("DROP VIEW ".implode(", ",array_map('table',$Ih)));}function +drop_tables($S){return +queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function +move_tables($S,$Ih,$Ng){global$g;$Jf=array();foreach($S +as$Q)$Jf[]=table($Q)." TO ".idf_escape($Ng).".".table($Q);if(!$Jf||queries("RENAME TABLE ".implode(", ",$Jf))){$Gb=array();foreach($Ih +as$Q)$Gb[table($Q)]=view($Q);$g->select_db($Ng);$k=idf_escape(DB);foreach($Gb +as$E=>$Hh){if(!queries("CREATE VIEW $E AS ".str_replace(" $k."," ",$Hh["select"]))||!queries("DROP VIEW $k.$E"))return +false;}return +true;}return +false;}function +copy_tables($S,$Ih,$Ng){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S +as$Q){$E=($Ng==DB?table("copy_$Q"):idf_escape($Ng).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $E"))||!queries("CREATE TABLE $E LIKE ".table($Q))||!queries("INSERT INTO $E SELECT * FROM ".table($Q)))return +false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L){$ih=$L["Trigger"];if(!queries("CREATE TRIGGER ".($Ng==DB?idf_escape("copy_$ih"):idf_escape($Ng).".".idf_escape($ih))." $L[Timing] $L[Event] ON $E FOR EACH ROW\n$L[Statement];"))return +false;}}foreach($Ih +as$Q){$E=($Ng==DB?table("copy_$Q"):idf_escape($Ng).".".table($Q));$Hh=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $E"))||!queries("CREATE VIEW $E AS $Hh[select]"))return +false;}return +true;}function +trigger($E){if($E=="")return +array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($E));return +reset($M);}function +triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function +trigger_options(){return +array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function +routine($E,$U){global$g,$hc,$nd,$nh;$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$og="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$mh="((".implode("|",array_merge(array_keys($nh),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$hc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ff="$og*(".($U=="FUNCTION"?"":$nd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$mh";$i=$g->result("SHOW CREATE $U ".idf_escape($E),2);preg_match("~\\(((?:$ff\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$mh\\s+":"")."(.*)~is",$i,$C);$o=array();preg_match_all("~$ff\\s*,?~is",$C[1],$Td,PREG_SET_ORDER);foreach($Td +as$Ve)$o[]=array("field"=>str_replace("``","`",$Ve[2]).$Ve[3],"type"=>strtolower($Ve[5]),"length"=>preg_replace_callback("~$hc~s",'normalize_enum',$Ve[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Ve[8] $Ve[7]"))),"null"=>1,"full_type"=>$Ve[4],"inout"=>strtoupper($Ve[1]),"collation"=>strtolower($Ve[9]),);return +array("fields"=>$o,"comment"=>$g->result("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB)." AND ROUTINE_NAME = ".q($E)),)+($U!="FUNCTION"?array("definition"=>$C[11]):array("returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",));}function +routines(){return +get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function +routine_languages(){return +array();}function +routine_id($E,$L){return +idf_escape($E);}function +last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function +explain($g,$I){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$I);}function +found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function +types(){return +array();}function +schemas(){return +array();}function +get_schema(){return"";}function +set_schema($Vf,$h=null){return +true;}function +create_sql($Q,$za,$_g){global$g;$K=$g->result("SHOW CREATE TABLE ".table($Q),1);if(!$za)$K=preg_replace('~ AUTO_INCREMENT=\d+~','',$K);return$K;}function +truncate_sql($Q){return"TRUNCATE ".table($Q);}function +use_sql($zb){return"USE ".idf_escape($zb);}function +trigger_sql($Q){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L)$K.="\nCREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}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($n){if(preg_match("~binary~",$n["type"]))return"HEX(".idf_escape($n["field"]).")";if($n["type"]=="bit")return"BIN(".idf_escape($n["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($n["field"]).")";}function +unconvert_field($n,$K){if(preg_match("~binary~",$n["type"]))$K="UNHEX($K)";if($n["type"]=="bit")$K="CONVERT(b$K, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"])){$of=(min_version(8)?"ST_":"");$K=$of."GeomFromText($K, $of"."SRID($n[field]))";}return$K;}function +support($zc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view"))).(min_version('8.0.16','10.2.1')?"":"|check")."~",$zc);}function +kill_process($X){return +queries("KILL ".number($X));}function +connection_id(){return"SELECT CONNECTION_ID()";}function +max_connections(){global$g;return$g->result("SELECT @@max_connections");}function +driver_config(){$nh=array();$zg=array();foreach(array(lang(69)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(70)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(68)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(71)=>array("enum"=>65535,"set"=>64),lang(72)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(73)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$nh+=$X;$zg[$z]=array_keys($X);}return +array('possible_drivers'=>array("MySQLi","MySQL","PDO_MySQL"),'jush'=>"sql",'types'=>$nh,'structured_types'=>$zg,'unsigned'=>array("unsigned","zerofill","unsigned zerofill"),'operators'=>array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"),'functions'=>array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper"),'grouping'=>array("avg","count","count distinct","group_concat","max","min","sum"),'edit_functions'=>array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",)),);}}$jb=driver_config();$nf=$jb['possible_drivers'];$y=$jb['jush'];$nh=$jb['types'];$zg=$jb['structured_types'];$uh=$jb['unsigned'];$Ee=$jb['operators'];$Oc=$jb['functions'];$Uc=$jb['grouping'];$Xb=$jb['edit_functions'];if($c->operators===null)$c->operators=$Ee;define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function +page_header($Wg,$m="",$Ia=array(),$Xg=""){global$a,$fa,$c,$Qb,$y;page_headers();if(is_ajax()&&$m){page_messages($m);exit;}$Yg=$Wg.($Xg!=""?": $Xg":"");$Zg=strip_tags($Yg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$c->name());echo' + + + + +',$Zg,' + +',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.17.1");if($c->head()){echo' + +';foreach($c->css()as$ub){echo' +';}}echo' + +';$Bc=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($Bc)&&filemtime($Bc)+86400>time()){$Gh=unserialize(file_get_contents($Bc));$xf="-----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($Gh["version"],base64_decode($Gh["signature"]),$xf)==1)$_COOKIE["adminer_version"]=$Gh["version"];}echo' +mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$fa', '".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($Ia!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $Yg

    \n","\n";restart_session();page_messages($m);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define("PAGE_HEADER",1);}function +page_headers(){global$c;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($c->csp()as$tb){$ad=array();foreach($tb +as$z=>$X)$ad[]="$z $X";header("Content-Security-Policy: ".implode("; ",$ad));}$c->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$qe;if(!$qe)$qe=base64_encode(rand_string());return$qe;}function +page_messages($m){$wh=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$fe=$_SESSION["messages"][$wh];if($fe){echo"
    ".implode("
    \n
    ",$fe)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$wh]);}if($m)echo"
    $m
    \n";}function +page_footer($he=""){global$c,$T;echo'
    + + + +';if($he!="auth"){echo'
    +

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

    +
    +';}echo +script("setupSubmitHighlight(document);");}function +int32($ke){while($ke>=2147483648)$ke-=4294967296;while($ke<=-2147483649)$ke+=4294967296;return(int)$ke;}function +long2str($W,$Kh){$Tf='';foreach($W +as$X)$Tf.=pack('V',$X);if($Kh)return +substr($Tf,0,end($W));return$Tf;}function +str2long($Tf,$Kh){$W=array_values(unpack('V*',str_pad($Tf,4*ceil(strlen($Tf)/4),"\0")));if($Kh)$W[]=strlen($Tf);return$W;}function +xxtea_mx($Rh,$Qh,$Cg,$yd){return +int32((($Rh>>5&0x7FFFFFF)^$Qh<<2)+(($Qh>>3&0x1FFFFFFF)^$Rh<<4))^int32(($Cg^$Qh)+($yd^$Rh));}function +encrypt_string($xg,$z){if($xg=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($xg,true);$ke=count($W)-1;$Rh=$W[$ke];$Qh=$W[0];$H=floor(6+52/($ke+1));$Cg=0;while($H-->0){$Cg=int32($Cg+0x9E3779B9);$Wb=$Cg>>2&3;for($Te=0;$Te<$ke;$Te++){$Qh=$W[$Te+1];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Rh=int32($W[$Te]+$je);$W[$Te]=$Rh;}$Qh=$W[0];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Rh=int32($W[$ke]+$je);$W[$ke]=$Rh;}return +long2str($W,false);}function +decrypt_string($xg,$z){if($xg=="")return"";if(!$z)return +false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($xg,false);$ke=count($W)-1;$Rh=$W[$ke];$Qh=$W[0];$H=floor(6+52/($ke+1));$Cg=int32($H*0x9E3779B9);while($Cg){$Wb=$Cg>>2&3;for($Te=$ke;$Te>0;$Te--){$Rh=$W[$Te-1];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Qh=int32($W[$Te]-$je);$W[$Te]=$Qh;}$Rh=$W[$ke];$je=xxtea_mx($Rh,$Qh,$Cg,$z[$Te&3^$Wb]);$Qh=int32($W[0]-$je);$W[0]=$Qh;$Cg=int32($Cg-0x9E3779B9);}return +long2str($W,true);}$g='';$Zc=$_SESSION["token"];if(!$Zc)$_SESSION["token"]=rand(1,1e6);$T=get_token();$hf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$hf[$z]=$X;}}function +add_invalid_login(){global$c;$q=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$q)return;$sd=unserialize(stream_get_contents($q));$Tg=time();if($sd){foreach($sd +as$td=>$X){if($X[0]<$Tg)unset($sd[$td]);}}$rd=&$sd[$c->bruteForceKey()];if(!$rd)$rd=array($Tg+30*60,0);$rd[1]++;file_write_unlock($q,serialize($sd));}function +check_invalid_login(){global$c;$sd=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$rd=($sd?$sd[$c->bruteForceKey()]:array());$pe=($rd[1]>29?$rd[0]-time():0);if($pe>0)auth_error(lang(77,ceil($pe/60)));}$ya=$_POST["auth"];if($ya){session_regenerate_id();$Fh=$ya["driver"];$O=$ya["server"];$V=$ya["username"];$df=(string)$ya["password"];$k=$ya["db"];set_password($Fh,$O,$V,$df);$_SESSION["db"][$Fh][$O][$V][$k]=true;if($ya["permanent"]){$z=base64_encode($Fh)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($k);$sf=$c->permanentLogin(true);$hf[$z]="$z:".base64_encode($sf?encrypt_string($df,$sf):"");cookie("adminer_permanent",implode(" ",$hf));}if(count($_POST)==1||DRIVER!=$Fh||SERVER!=$O||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Fh,$O,$V,$k));}elseif($_POST["logout"]&&(!$Zc||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(78).' '.lang(79));}elseif($hf&&!$_SESSION["pwds"]){session_regenerate_id();$sf=$c->permanentLogin();foreach($hf +as$z=>$X){list(,$Ua)=explode(":",$X);list($Fh,$O,$V,$k)=array_map('base64_decode',explode("-",$z));set_password($Fh,$O,$V,decrypt_string(base64_decode($Ua),$sf));$_SESSION["db"][$Fh][$O][$V][$k]=true;}}function +unset_permanent(){global$hf;foreach($hf +as$z=>$X){list($Fh,$O,$V,$k)=array_map('base64_decode',explode("-",$z));if($Fh==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$k==DB)unset($hf[$z]);}cookie("adminer_permanent",implode(" ",$hf));}function +auth_error($m){global$c,$Zc;$fg=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$fg]||$_GET[$fg])&&!$Zc)$m=lang(80);else{restart_session();add_invalid_login();$df=get_password();if($df!==null){if($df===false)$m.=($m?'
    ':'').lang(81,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$fg]&&$_GET[$fg]&&ini_bool("session.use_only_cookies"))$m=lang(82);$We=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$We["lifetime"]);page_header(lang(28),$m,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

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

    \n";$c->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(84),lang(85,implode(", ",$nf)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($ed,$jf)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$jf,$C)&&($C[1]<1024||$C[1]>65535))auth_error(lang(86));check_invalid_login();$g=connect();$l=new +Min_Driver($g);}$Pd=null;if(!is_object($g)||($Pd=$c->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?nl_br(h($g)):(is_string($Pd)?$Pd:lang(87)));auth_error($m.(preg_match('~^ | $~',get_password())?'
    '.lang(88):''));}if($_POST["logout"]&&$Zc&&!verify_token()){page_header(lang(76),lang(89));page_footer("db");exit;}if($ya&&$_POST["token"])$_POST["token"]=$T;$m='';if($_POST){if(!verify_token()){$md="max_input_vars";$Zd=ini_get($md);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Zd||$X<$Zd)){$md=$z;$Zd=$X;}}}$m=(!$_POST["token"]&&$Zd?lang(90,"'$md'"):lang(89).' '.lang(91));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=lang(92,"'post_max_size'");if(isset($_GET["sql"]))$m.=' '.lang(93);}function +select($J,$h=null,$Le=array(),$_=0){global$y;$Od=array();$x=array();$e=array();$Ga=array();$nh=array();$K=array();for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"
    \n","\n","";for($xd=0;$xdfetch_field();$E=$n->name;$Ke=$n->orgtable;$Je=$n->orgname;$K[$n->table]=$Ke;if($Le&&$y=="sql")$Od[$xd]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));elseif($Ke!=""){if(!isset($x[$Ke])){$x[$Ke]=array();foreach(indexes($Ke,$h)as$w){if($w["type"]=="PRIMARY"){$x[$Ke]=array_flip($w["columns"]);break;}}$e[$Ke]=$x[$Ke];}if(isset($e[$Ke][$Je])){unset($e[$Ke][$Je]);$x[$Ke][$Je]=$xd;$Od[$xd]=$Ke;}}if($n->charsetnr==63)$Ga[$xd]=true;$nh[$xd]=$n->type;echo"name!=$Je?" title='".h(($Ke!=""?"$Ke.":"").$Je)."'":"").">".h($E).($Le?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($L +as$z=>$X){$A="";if(isset($Od[$z])&&!$e[$Od[$z]]){if($Le&&$y=="sql"){$Q=$L[array_search("table=",$Od)];$A=ME.$Od[$z].urlencode($Le[$Q]!=""?$Le[$Q]:$Q);}else{$A=ME."edit=".urlencode($Od[$z]);foreach($x[$Od[$z]]as$Ya=>$xd)$A.="&where".urlencode("[".bracket_escape($Ya)."]")."=".urlencode($L[$xd]);}}elseif(is_url($X))$A=$X;if($X===null)$X="NULL";elseif($Ga[$z]&&!is_utf8($X))$X="".lang(37,strlen($X))."";else{$X=h($X);if($nh[$z]==254)$X="$X";}if($A)$X="$X";echo"
    $X";}}echo($t?"
    \n
    ":"

    ".lang(13))."\n";return$K;}function +referencable_primary($ag){$K=array();foreach(table_status('',true)as$Gg=>$Q){if($Gg!=$ag&&fk_support($Q)){foreach(fields($Gg)as$n){if($n["primary"]){if($K[$Gg]){unset($K[$Gg]);break;}$K[$Gg]=$n;}}}}return$K;}function +adminer_settings(){parse_str($_COOKIE["adminer_settings"],$hg);return$hg;}function +adminer_setting($z){$hg=adminer_settings();return$hg[$z];}function +set_adminer_settings($hg){return +cookie("adminer_settings",http_build_query($hg+adminer_settings()));}function +textarea($E,$Y,$M=10,$cb=80){global$y;echo"";}function +select_input($xa,$Ge,$Y="",$Be="",$if=""){$Mg=($Ge?"select":"input");return"<$Mg$xa".($Ge?">

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

    ".lang(114,"".h(logged_user())."")."\n";$j=$c->databases();if($j){$Wf=support("scheme");$bb=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=>$S){$Pf=h(ME)."db=".urlencode($k);$u=h("Db-".$k);echo"".(support("database")?"
    ":"")."".lang(27)." - ".lang(115).""."".lang(116)."".lang(117)."".lang(118)." - ".lang(119)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$u):""),"".h($k)."";$ab=h(db_collation($k,$bb));echo"".(support("database")?"$ab":$ab),"".($_GET["dbsize"]?$S:"?")."","".($_GET["dbsize"]?db_size($k):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),"\n","
    \n",script("tableCheck();");}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$g->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Ae="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class +TmpFile{var$handler;var$size;function +__construct(){$this->handler=tmpfile();}function +write($mb){$this->size+=strlen($mb);fwrite($this->handler,$mb);}function +send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$hc="'(?:''|[^'\\\\]|\\\\.)*'";$nd="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$b=$_GET["download"];$o=fields($b);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$b-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$l->select($b,$N,array(where($_GET,$o)),$N);$L=($J?$J->fetch_row():array());echo$l->value($L[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$b=$_GET["table"];$o=fields($b);if(!$o)$m=error();$R=table_status1($b,true);$E=$c->tableName($R);page_header(($o&&is_view($R)?$R['Engine']=='materialized view'?lang(122):lang(123):lang(124)).": ".($E!=""?$E:h($b)),$m);$Of=array();foreach($o +as$z=>$n)$Of+=$n["privileges"];$c->selectLinks($R,(isset($Of["insert"])||!support("table")?"":null));$fb=$R["Comment"];if($fb!="")echo"

    ".lang(40).": ".h($fb)."\n";if($o)$c->tableStructurePrint($o);if(!is_view($R)){if(support("indexes")){echo"

    ".lang(125)."

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

    ".lang(94)."

    \n";$Jc=foreign_keys($b);if($Jc){echo"\n","\n";foreach($Jc +as$E=>$p){echo"","
    ".lang(127)."".lang(128)."".lang(97)."".lang(96)."
    ".implode(", ",array_map('h',$p["source"]))."","".($p["db"]!=""?"".h($p["db"]).".":"").($p["ns"]!=""?"".h($p["ns"]).".":"").h($p["table"])."","(".implode(", ",array_map('h',$p["target"])).")","".h($p["on_delete"]),"".h($p["on_update"]),''.lang(129).'',"\n";}echo"
    \n";}echo'

    ".lang(131)."

    \n";$Qa=check_constraints($b);if($Qa){echo"\n";foreach($Qa +as$z=>$X){echo"","
    ".h($X),"".lang(129)."","\n";}echo"
    \n";}echo'

    ".lang(133)."

    \n";$kh=triggers($b);if($kh){echo"\n";foreach($kh +as$z=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($z)."".lang(129)."\n";echo"
    \n";}echo'
    + +qs(\'#schema\').onselectstart = function () { return false; }; +var tablePos = {',implode(",",$Ig)."\n",'}; +var em = qs(\'#schema\').offsetHeight / ',$ch,'; +document.onmousemove = schemaMousemove; +document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); + +';foreach($Vf +as$E=>$Q){echo"
    ",''.h($E)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($Q["fields"]as$n){$X=''.h($n["field"]).'';echo"
    ".($n["primary"]?"$X":$X);}foreach((array)$Q["references"]as$Og=>$Hf){foreach($Hf +as$Hd=>$Df){$Id=$Hd-$Hg[$E][1];$t=0;foreach($Df[0]as$ng)echo"\n
    ";}}foreach((array)$Gf[$E]as$Og=>$Hf){foreach($Hf +as$Hd=>$e){$Id=$Hd-$Hg[$E][1];$t=0;foreach($e +as$Ng)echo"\n
    ";}}echo"\n
    \n";}foreach($Vf +as$E=>$Q){foreach((array)$Q["references"]as$Og=>$Hf){foreach($Hf +as$Hd=>$Df){$ge=$ch;$Xd=-10;foreach($Df[0]as$z=>$ng){$lf=$Q["pos"][0]+$Q["fields"][$ng]["pos"];$mf=$Vf[$Og]["pos"][0]+$Vf[$Og]["fields"][$Df[1][$z]]["pos"];$ge=min($ge,$lf,$mf);$Xd=max($Xd,$lf,$mf);}echo"
    \n";}}}echo'
    +
    + +';$Ab=array('','USE','DROP+CREATE','CREATE');$Jg=array('','DROP+CREATE','CREATE');$yb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$yb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"
    ".lang(136)."".html_select("output",$c->dumpOutput(),$L["output"],0)."\n";echo"
    ".lang(137)."".html_select("format",$c->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"
    ".lang(27)."".html_select('db_style',$Ab,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],lang(138)):"").(support("event")?checkbox("events",1,$L["events"],lang(139)):"")),"
    ".lang(117)."".html_select('table_style',$Jg,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],lang(41)).(support("trigger")?checkbox("triggers",1,$L["triggers"],lang(133)):""),"
    ".lang(140)."".html_select('data_style',$yb,$L["data_style"]),'
    +

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

    +';$Dc=true;foreach($pf +as$z=>$X){if($z!=""&&$X>1){echo($Dc?"

    ":" ")."".h($z)."";$Dc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(61));echo'

    \n";hidden_fields_get();echo"\n",($Qc?"":"\n"),"\n","\n";while($L=$J->fetch_assoc())echo'
    ".lang(25)."".lang(24)."
    '.h($L["User"])."".h($L["Host"]).''.lang(11)."\n";if(!$Qc||DB!="")echo"
    \n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){dump_headers("sql");$c->dumpTable("","");$c->dumpData("","table",$_POST["query"]);exit;}restart_session();$dd=&get_session("queries");$cd=&$dd[DB];if(!$m&&$_POST["clear"]){$cd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(62):lang(54)),$m);if(!$m&&$_POST){$q=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$qg=$c->importServerPath();$q=@fopen((file_exists($qg)?$qg:"compress.zlib://$qg.gz"),"rb");$I=($q?fread($q,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage')&&($be=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($be,2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$cd||reset(end($cd))!=$H){restart_session();$cd[]=array($H,time());set_session("queries",$dd);stop_session();}}$og="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Hb=";";$ue=0;$ec=true;$h=connect();if(is_object($h)&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$eb=0;$kc=array();$Xe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\*|-- |$'.($y=="pgsql"?'|\$[^$]*\$':'');$dh=microtime(true);parse_str($_COOKIE["adminer_export"],$ma);$Vb=$c->dumpFormat();unset($Vb["sql"]);while($I!=""){if(!$ue&&preg_match("~^$og*+DELIMITER\\s+(\\S+)~i",$I,$C)){$Hb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($Hb)."\\s*|$Xe)",$I,$C,PREG_OFFSET_CAPTURE,$ue);list($Lc,$kf)=$C[0];if(!$Lc&&$q&&!feof($q))$I.=fread($q,1e5);else{if(!$Lc&&rtrim($I)=="")break;$ue=$kf+strlen($Lc);if($Lc&&rtrim($Lc)!=$Hb){$La=$l->hasCStyleEscapes()||($y=="pgsql"&&($kf>0&&strtolower($I[$kf-1])=="e"));$ff=($Lc=='/*'?'\*/':($Lc=='['?']':(preg_match('~^-- |^#~',$Lc)?"\n":preg_quote($Lc).($La?"|\\\\.":""))));while(preg_match("($ff|\$)s",$I,$C,PREG_OFFSET_CAPTURE,$ue)){$Tf=$C[0][0];if(!$Tf&&$q&&!feof($q))$I.=fread($q,1e5);else{$ue=$C[0][1]+strlen($Tf);if(!$Tf||$Tf[0]!="\\")break;}}}else{$ec=false;$H=substr($I,0,$kf);$eb++;$rf="
    ".$c->sqlCommandQuery($H)."
    \n";if($y=="sqlite"&&preg_match("~^$og*+ATTACH\\b~i",$H,$C)){echo$rf,"

    ".lang(142)."\n";$kc[]=" $eb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$rf;ob_flush();flush();}$ug=microtime(true);if($g->multi_query($H)&&is_object($h)&&preg_match("~^$og*+USE\\b~i",$H))$h->query($H);do{$J=$g->store_result();if($g->error){echo($_POST["only_errors"]?$rf:""),"

    ".lang(143).($g->errno?" ($g->errno)":"").": ".error()."\n";$kc[]=" $eb";if($_POST["error_stops"])break +2;}else{$Tg=" (".format_time($ug).")".(strlen($H)<1000?" ".lang(11)."":"");$oa=$g->affected_rows;$Lh=($_POST["only_errors"]?"":$l->warnings());$Mh="warnings-$eb";if($Lh)$Tg.=", ".lang(36)."".script("qsl('a').onclick = partial(toggle, '$Mh');","");$sc=null;$tc="explain-$eb";if(is_object($J)){$_=$_POST["limit"];$Le=select($J,$h,array(),$_);if(!$_POST["only_errors"]){echo"

    \n";$se=$J->num_rows;echo"

    ".($se?($_&&$se>$_?lang(144,$_):"").lang(145,$se):""),$Tg;if($h&&preg_match("~^($og|\\()*+SELECT\\b~i",$H)&&($sc=explain($h,$H)))echo", Explain".script("qsl('a').onclick = partial(toggle, '$tc');","");$u="export-$eb";echo", ".lang(63)."".script("qsl('a').onclick = partial(toggle, '$u');","")."\n"."

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

    ".lang(146,$oa)."$Tg\n";}echo($Lh?"

    \n":"");if($sc){echo"\n";}}$ug=microtime(true);}while($g->next_result());}$I=substr($I,$ue);$ue=0;}}}}if($ec)echo"

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

    ".lang(148,$eb-count($kc))," (".format_time($dh).")\n";}elseif($kc&&$eb>1)echo"

    ".lang(143).": ".implode("",$kc)."\n";}else +echo"

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

    +';$qc="";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$cd;elseif($_GET["history"]!="")$H=$cd[$_GET["history"]][0];echo"

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

    $qc\n",lang(150).": \n";}else{echo"

    ".lang(151)."
    ";$Vc=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$Vc (< ".ini_get("upload_max_filesize")."B): \n$qc":lang(152)),"
    \n";$id=$c->importServerPath();if($id){echo"
    ".lang(153)."
    ",lang(154,"".h($id)."$Vc"),' ',"
    \n";}echo"

    ";}echo +checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(156))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(157))."\n","\n";if(!isset($_GET["import"])&&$cd){print_fieldset("history",lang(158),$_GET["history"]!="");for($X=end($cd);$X;$X=prev($cd)){$z=key($cd);list($H,$Tg,$Zb)=$X;echo''.lang(11).""." ".@date("H:i:s",$Tg).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"").($Zb?" ($Zb)":"")."
    \n";}echo"\n","".lang(160)."\n","\n";}echo'

    +';}elseif(isset($_GET["edit"])){$b=$_GET["edit"];$o=fields($b);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$vh=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o +as$E=>$n){if(!isset($n["privileges"][$vh?"update":"insert"])||$c->fieldName($n)==""||$n["generated"])unset($o[$E]);}if($_POST&&!$m&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($vh?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($b);$x=indexes($b);$qh=unique_array($_GET["where"],$x);$_f="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,lang(161),$l->delete($b,$_f,!$qh));else{$P=array();foreach($o +as$E=>$n){$X=process_input($n);if($X!==false&&$X!==null)$P[idf_escape($E)]=$X;}if($vh){if(!$P)redirect($B);queries_redirect($B,lang(162),$l->update($b,$P,$_f,!$qh));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$J=$l->insert($b,$P);$Gd=($J?last_id():0);queries_redirect($B,lang(163,($Gd?" $Gd":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($o +as$E=>$n){if(isset($n["privileges"]["select"])){$va=convert_field($n);if($_POST["clone"]&&$n["auto_increment"])$va="''";if($y=="sql"&&preg_match("~enum|set~",$n["type"]))$va="1*".idf_escape($E);$N[]=($va?"$va AS ":"").idf_escape($E);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$l->select($b,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));if(!$J)$m=error();else{$L=$J->fetch_assoc();if(!$L)$L=false;}if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$o){if(!$Z){$J=$l->select($b,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($l->primary=>"");}if($L){foreach($L +as$z=>$X){if(!$Z)$L[$z]=null;$o[$z]=array("field"=>$z,"null"=>($z!=$l->primary),"auto_increment"=>($z==$l->primary));}}}edit_form($b,$o,$L,$vh);}elseif(isset($_GET["create"])){$b=$_GET["create"];$Ye=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$Ye[$z]=$z;$Ff=referencable_primary($b);$Jc=array();foreach($Ff +as$Gg=>$n)$Jc[str_replace("`","``",$Gg)."`".str_replace("`","``",$n["field"])]=$Gg;$Oe=array();$R=array();if($b!=""){$Oe=fields($b);$R=table_status($b);if(!$R)$m=lang(10);}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($L["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(164),drop_tables(array($b)));else{$o=array();$sa=array();$zh=false;$Hc=array();$Ne=reset($Oe);$qa=" FIRST";foreach($L["fields"]as$z=>$n){$p=$Jc[$n["type"]];$lh=($p!==null?$Ff[$p]:$n);if($n["field"]!=""){if(!$n["has_default"])$n["default"]=null;$wf=process_field($n,$lh);$sa[]=array($n["orig"],$wf,$qa);if(!$Ne||$wf!==process_field($Ne,$Ne)){$o[]=array($n["orig"],$wf,$qa);if($n["orig"]!=""||$qa)$zh=true;}if($p!==null)$Hc[idf_escape($n["field"])]=($b!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Jc[$n["type"]],'source'=>array($n["field"]),'target'=>array($lh["field"]),'on_delete'=>$n["on_delete"],));$qa=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$zh=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$Ne=next($Oe);if(!$Ne)$qa="";}}$af="";if(support("partitioning")){if(isset($Ye[$L["partition_by"]])){$We=array_filter($L,function($z){return +preg_match('~^partition~',$z);},ARRAY_FILTER_USE_KEY);foreach($We["partition_names"]as$z=>$E){if($E==""){unset($We["partition_names"][$z]);unset($We["partition_values"][$z]);}}if($We!=get_partitions_info($b)){$bf=array();if($We["partition_by"]=='RANGE'||$We["partition_by"]=='LIST'){foreach($We["partition_names"]as$z=>$E){$Y=$We["partition_values"][$z];$bf[]="\n PARTITION ".idf_escape($E)." VALUES ".($We["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$af.="\nPARTITION BY $We[partition_by]($We[partition])";if($bf)$af.=" (".implode(",",$bf)."\n)";elseif($We["partitions"])$af.=" PARTITIONS ".(+$We["partitions"]);}}elseif(preg_match("~partitioned~",$R["Create_options"]))$af.="\nREMOVE PARTITIONING";}$D=lang(165);if($b==""){cookie("adminer_engine",$L["Engine"]);$D=lang(166);}$E=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($E),$D,alter_table($b,$E,($y=="sqlite"&&($zh||$Hc)?$sa:$o),$Hc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$af));}}page_header(($b!=""?lang(34):lang(64)),$m,array("table"=>$b),h($b));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($nh["int"])?"int":(isset($nh["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($b!=""){$L=$R;$L["name"]=$b;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($Oe +as$n){$n["has_default"]=isset($n["default"]);$L["fields"][]=$n;}if(support("partitioning")){$L+=get_partitions_info($b);$L["partition_names"][]="";$L["partition_values"][]="";}}}$bb=collations();$gc=engines();foreach($gc +as$fc){if(!strcasecmp($fc,$L["Engine"])){$L["Engine"]=$fc;break;}}echo' +
    +

    +';if(support("columns")||$b==""){echo +lang(167),': +',($gc?"".on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ',($bb&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".lang(95).")")+$bb,$L["Collation"]):""),' +';}echo' +';if(support("columns")){echo'

    + +';edit_fields($L["fields"],$bb,"TABLE",$Jc);echo'
    +',script("editFields();"),'
    +

    +',lang(41),': +',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),lang(169),"columnShow(this.checked, 5)","jsonly");$hb=($_POST?$_POST["comments"]:adminer_setting("comments"));echo(support("comment")?checkbox("comments",1,$hb,lang(40),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$L["Comment"])?"":''):''),'

    + +';}echo' +';if($b!=""){echo'',confirm(lang(170,$b));}if(support("partitioning")){$Ze=preg_match('~RANGE|LIST~',$L["partition_by"]);print_fieldset("partition",lang(171),$L["partition_by"]);echo'

    +',"".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),'() +',lang(172),': + + +';foreach($L["partition_names"]as$z=>$X){echo'',' + +';}echo' +

    +';}elseif(isset($_GET["indexes"])){$b=$_GET["indexes"];$ld=array("PRIMARY","UNIQUE","INDEX");$R=table_status($b,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$R["Engine"]))$ld[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$R["Engine"]))$ld[]="SPATIAL";$x=indexes($b);$qf=array();if($y=="mongo"){$qf=$x["_id_"];unset($ld[0]);unset($x["_id_"]);}$L=$_POST;if($L)set_adminer_settings(array("index_options"=>$L["options"]));if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$ta=array();foreach($L["indexes"]as$w){$E=$w["name"];if(in_array($w["type"],$ld)){$e=array();$Md=array();$Jb=array();$P=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$d){if($d!=""){$Ld=$w["lengths"][$z];$Ib=$w["descs"][$z];$P[]=idf_escape($d).($Ld?"(".(+$Ld).")":"").($Ib?" DESC":"");$e[]=$d;$Md[]=($Ld?$Ld:null);$Jb[]=$Ib;}}if($e){$rc=$x[$E];if($rc){ksort($rc["columns"]);ksort($rc["lengths"]);ksort($rc["descs"]);if($w["type"]==$rc["type"]&&array_values($rc["columns"])===$e&&(!$rc["lengths"]||array_values($rc["lengths"])===$Md)&&array_values($rc["descs"])===$Jb){unset($x[$E]);continue;}}$ta[]=array($w["type"],$E,$P);}}}foreach($x +as$E=>$rc)$ta[]=array($rc["type"],$E,"DROP");if(!$ta)redirect(ME."table=".urlencode($b));queries_redirect(ME."table=".urlencode($b),lang(175),alter_indexes($b,$ta));}page_header(lang(125),$m,array("table"=>$b),h($b));$o=array_keys(fields($b));if($_POST["add"]){foreach($L["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$w=end($L["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($x +as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$L["indexes"]=$x;}$Md=($y=="sql"||$y=="mssql");$ig=($_POST?$_POST["options"]:adminer_setting("index_options"));echo' +
    +
    + + + +';if($qf){echo"
    ',lang(176),'',lang(38).($Md?" (".lang(177).")":"");if($Md||support("descidx"))echo +checkbox("options",1,$ig,lang(101),"indexOptionsShow(this.checked)","jsonly")."\n";echo'',lang(178),' +
    PRIMARY";foreach($qf["columns"]as$z=>$d){echo +select_input(" disabled",$o,$d)," ";}echo"\n";}$xd=1;foreach($L["indexes"]as$w){if(!$_POST["drop_col"]||$xd!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$xd][type]",array(-1=>"")+$ld,$w["type"],($xd==count($L["indexes"])?"indexesAddRow.call(this);":1),"label-type"),"";ksort($w["columns"]);$t=1;foreach($w["columns"]as$z=>$d){echo"".select_input(" name='indexes[$xd][columns][$t]' title='".lang(38)."'",($o?array_combine($o,$o):$o),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape($y=="sql"?"":$_GET["indexes"]."_")."')"),"",($Md?"":""),(support("descidx")?checkbox("indexes[$xd][descs][$t]",1,$w["descs"][$z],lang(49)):"")," ";$t++;}echo"\n","".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$xd++;}echo'
    +
    +

    + + +

    +';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$m&&!isset($_POST["add_x"])){$E=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(179),drop_databases(array(DB)));}elseif(DB!==$E){if(DB!=""){$_GET["db"]=$E;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($E),lang(180),rename_database($E,$L["collation"]));}else{$j=explode("\n",str_replace("\r","",$E));$Ag=true;$Fd="";foreach($j +as$k){if(count($j)==1||$k!=""){if(!create_database($k,$L["collation"]))$Ag=false;$Fd=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Fd),lang(181),$Ag);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($E).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),lang(182));}}page_header(DB!=""?lang(57):lang(109),$m,array(),h(DB));$bb=collations();$E=DB;if($_POST)$E=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$bb);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$Qc){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$Qc,$C)&&$C[1]){$E=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo' +
    +

    +',($_POST["add_x"]||strpos($E,"\n")?'
    ':'')."\n".($bb?html_select("collation",array(""=>"(".lang(95).")")+$bb,$L["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",)):""),' +';if(DB!="")echo"".confirm(lang(170,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"\n";echo' +

    +';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header(lang(183).": ".h($ca),$m);$Qf=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$jd=array();$Re=array();foreach($Qf["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT")$Re[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$jd[]=$t;}if(!$m&&$_POST){$Ma=array();foreach($Qf["fields"]as$z=>$n){if(in_array($z,$jd)){$X=process_input($n);if($X===false)$X="''";if(isset($Re[$z]))$g->query("SET @".idf_escape($n["field"])." = $X");}$Ma[]=(isset($Re[$z])?"@".idf_escape($n["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ca)."(".implode(", ",$Ma).")";$ug=microtime(true);$J=$g->multi_query($I);$oa=$g->affected_rows;echo$c->selectQuery($I,$ug,!$J);if(!$J)echo"

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

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

    +';if($jd){echo"\n";foreach($jd +as$z){$n=$Qf["fields"][$z];$E=$n["field"];echo"
    ".$c->fieldName($n);$Y=$_POST["fields"][$E];if($Y!=""){if($n["type"]=="enum")$Y=+$Y;if($n["type"]=="set")$Y=array_sum($Y);}input($n,$Y,(string)$_POST["function"][$E]);echo"\n";}echo"
    \n";}echo'

    + + +

    + +
    +';function
    +pre_tr($Tf){return
    +preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($Tf))));}$Q='(\+--[-+]+\+\n)';$L='(\| .* \|\n)';echo
    +preg_replace_callback("~^$Q?$L$Q?($L*)$Q?~m",function($C){$Ec=pre_tr($C[2]);return"\n".($C[1]?"$Ec\n":$Ec).pre_tr($C[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($Qf['comment']))));echo'
    +';}elseif(isset($_GET["foreign"])){$b=$_GET["foreign"];$E=$_GET["name"];$L=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?lang(185):($E!=""?lang(186):lang(187)));$B=ME."table=".urlencode($b);if(!$_POST["drop"]){$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Ng=array();foreach($L["source"]as$z=>$X)$Ng[$z]=$L["target"][$z];$L["target"]=$Ng;}if($y=="sqlite")queries_redirect($B,$D,recreate_table($b,$b,array(),array(),array(" $E"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$ta="ALTER TABLE ".table($b);$Rb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($E);if($_POST["drop"])query_redirect($ta.$Rb,$B,$D);else{query_redirect($ta.($E!=""?"$Rb,":"")."\nADD".format_foreign_key($L),$B,$D);$m=lang(188)."
    $m";}}}page_header(lang(189),$m,array("table"=>$b),h($b));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($E!=""){$Jc=foreign_keys($b);$L=$Jc[$E];$L["source"][]="";}else{$L["table"]=$b;$L["source"]=array("");}echo' +
    +';$ng=array_keys(fields($b));if($L["db"]!="")$g->select_db($L["db"]);if($L["ns"]!="")set_schema($L["ns"]);$Ef=array_keys(array_filter(table_status('',true),'fk_support'));$Ng=array_keys(fields(in_array($L["table"],$Ef)?$L["table"]:reset($Ef)));$Be="this.form['change-js'].value = '1'; this.form.submit();";echo"

    ".lang(190).": ".html_select("table",$Ef,$L["table"],$Be)."\n";if($y=="pgsql")echo +lang(191).": ".html_select("ns",$c->schemas(),$L["ns"]!=""?$L["ns"]:$_GET["ns"],$Be);elseif($y!="sqlite"){$Bb=array();foreach($c->databases()as$k){if(!information_schema($k))$Bb[]=$k;}echo +lang(65).": ".html_select("db",$Bb,$L["db"]!=""?$L["db"]:$_GET["db"],$Be);}echo' +

    + + +';$xd=0;foreach($L["source"]as$z=>$X){echo"","
    ',lang(127),'',lang(128),'
    ".html_select("source[".(+$z)."]",array(-1=>"")+$ng,$X,($xd==count($L["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"".html_select("target[".(+$z)."]",$Ng,$L["target"][$z],1,"label-target");$xd++;}echo'
    +

    +',lang(97),': ',html_select("on_delete",array(-1=>"")+explode("|",$Ae),$L["on_delete"]),' ',lang(96),': ',html_select("on_update",array(-1=>"")+explode("|",$Ae),$L["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",)),'

    + +

    +';if($E!=""){echo'',confirm(lang(170,$E));}echo' +

    +';}elseif(isset($_GET["view"])){$b=$_GET["view"];$L=$_POST;$Pe="VIEW";if($y=="pgsql"&&$b!=""){$vg=table_status($b);$Pe=strtoupper($vg["Engine"]);}if($_POST&&!$m){$E=trim($L["name"]);$va=" AS\n$L[select]";$B=ME."table=".urlencode($E);$D=lang(194);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$b==$E&&$y!="sqlite"&&$U=="VIEW"&&$Pe=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($E).$va,$B,$D);else{$Pg=$E."_adminer_".uniqid();drop_create("DROP $Pe ".table($b),"CREATE $U ".table($E).$va,"DROP $U ".table($E),"CREATE $U ".table($Pg).$va,"DROP $U ".table($Pg),($_POST["drop"]?substr(ME,0,-1):$B),lang(195),$D,lang(196),$b,$E);}}if(!$_POST&&$b!=""){$L=view($b);$L["name"]=$b;$L["materialized"]=($Pe!="VIEW");if(!$m)$m=error();}page_header(($b!=""?lang(33):lang(197)),$m,array("table"=>$b),h($b));echo' +
    +

    ',lang(178),': +',(support("materializedview")?" ".checkbox("materialized",1,$L["materialized"],lang(122)):""),'

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

    + +';if($b!=""){echo'',confirm(lang(170,$b));}echo' +

    +';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$qd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$wg=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(198));elseif(in_array($L["INTERVAL_FIELD"],$qd)&&isset($wg[$L["STATUS"]])){$Uf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(199):lang(200)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Uf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$Uf)."\n".$wg[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(201).": ".h($aa):lang(202)),$m);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo' +
    + +
    ',lang(178),' +
    ',lang(203),' +
    ',lang(204),' +
    ',lang(205),' ',html_select("INTERVAL_FIELD",$qd,$L["INTERVAL_FIELD"]),'
    ',lang(112),'',html_select("STATUS",$wg,$L["STATUS"]),'
    ',lang(40),' +
    ',checkbox("ON_COMPLETION","PRESERVE",$L["ON_COMPLETION"]=="PRESERVE",lang(206)),'
    +

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

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

    +';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Qf=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$m){$Me=routine($_GET["procedure"],$Qf);$Pg="$L[name]_adminer_".uniqid();drop_create("DROP $Qf ".routine_id($ca,$Me),create_routine($Qf,$L),"DROP $Qf ".routine_id($L["name"],$L),create_routine($Qf,array("name"=>$Pg)+$L),"DROP $Qf ".routine_id($Pg,$L),substr(ME,0,-1),lang(207),lang(208),lang(209),$ca,$L["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(210):lang(211)).": ".h($ca):(isset($_GET["function"])?lang(212):lang(213))),$m);if(!$_POST&&$ca!=""){$L=routine($_GET["procedure"],$Qf);$L["name"]=$ca;}$bb=get_vals("SHOW CHARACTER SET");sort($bb);$Rf=routine_languages();echo' +
    +

    ',lang(178),': +',($Rf?lang(20).": ".html_select("language",$Rf,$L["language"])."\n":""),' +

    + +';edit_fields($L["fields"],$bb,$Qf);if(isset($_GET["function"])){echo"
    ".lang(214);edit_type("returns",$L["returns"],$bb,array(),($y=="pgsql"?array("void","trigger"):array()));}echo'
    +',script("editFields();"),'
    +

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

    + +';if($ca!=""){echo'',confirm(lang(170,$ca));}echo' +

    +';}elseif(isset($_GET["check"])){$b=$_GET["check"];$E=$_GET["name"];$L=$_POST;if($L&&!$m){$J=($E==""||queries("ALTER TABLE ".table($b)." DROP CONSTRAINT ".idf_escape($E)));if(!$L["drop"])$J=queries("ALTER TABLE ".table($b)." ADD".($L["name"]!=""?" CONSTRAINT ".idf_escape($L["name"])."":"")." CHECK ($L[clause])");queries_redirect(ME."table=".urlencode($b),($L["drop"]?lang(215):($E!=""?lang(216):lang(217))),$J);}page_header(($E!=""?lang(218).": ".h($E):lang(132)),$m,array("table"=>$b));if(!$L){$Sa=check_constraints($b);$L=array("name"=>$E,"clause"=>$Sa[$E]);}echo' +
    +

    ',lang(178),': ',doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",)),'

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

    +';if($E!=""){echo'',confirm(lang(170,$E));}echo' +

    +';}elseif(isset($_GET["trigger"])){$b=$_GET["trigger"];$E=$_GET["name"];$jh=trigger_options();$L=(array)trigger($E,$b)+array("Trigger"=>$b."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$jh["Timing"])&&in_array($_POST["Event"],$jh["Event"])&&in_array($_POST["Type"],$jh["Type"])){$_e=" ON ".table($b);$Rb="DROP TRIGGER ".idf_escape($E).($y=="pgsql"?$_e:"");$B=ME."table=".urlencode($b);if($_POST["drop"])query_redirect($Rb,$B,lang(219));else{if($E!="")queries($Rb);queries_redirect($B,($E!=""?lang(220):lang(221)),queries(create_trigger($_e,$_POST)));if($E!="")queries(create_trigger($_e,$L+array("Type"=>reset($jh["Type"]))));}}$L=$_POST;}page_header(($E!=""?lang(222).": ".h($E):lang(223)),$m,array("table"=>$b));echo' +
    + +
    ',lang(224),'',html_select("Timing",$jh["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($b,"/")."_[ba][iud]$/, '".js_escape($b)."', this.form);"),'
    ',lang(225),'',html_select("Event",$jh["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$jh["Event"])?" ":""),'
    ',lang(39),'',html_select("Type",$jh["Type"],$L["Type"]),'
    +

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

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

    + +';if($E!=""){echo'',confirm(lang(170,$E));}echo' +

    +';}elseif(isset($_GET["user"])){$ea=$_GET["user"];$uf=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$nb)$uf[$nb][$L["Privilege"]]=$L["Comment"];}$uf["Server Admin"]+=$uf["File access on server"];$uf["Databases"]["Create routine"]=$uf["Procedures"]["Create routine"];unset($uf["Procedures"]["Create routine"]);$uf["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$uf["Columns"][$X]=$uf["Tables"][$X];unset($uf["Server Admin"]["Usage"]);foreach($uf["Tables"]as$z=>$X)unset($uf["Databases"][$z]);$me=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$me[$X]=(array)$me[$X]+(array)$_POST["grants"][$z];}$Rc=array();$ye="";if(isset($_GET["host"])&&($J=$g->query("SHOW GRANTS FOR ".q($ea)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$Td,PREG_SET_ORDER)){foreach($Td +as$X){if($X[1]!="USAGE")$Rc["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$Rc["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C))$ye=$C[1];}}if($_POST&&!$m){$ze=(isset($_GET["host"])?q($ea)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $ze",ME."privileges=",lang(226));else{$oe=q($_POST["user"])."@".q($_POST["host"]);$cf=$_POST["pass"];if($cf!=''&&!$_POST["hashed"]&&!min_version(8)){$cf=$g->result("SELECT PASSWORD(".q($cf).")");$m=!$cf;}$rb=false;if(!$m){if($ze!=$oe){$rb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $oe IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($cf));$m=!$rb;}elseif($cf!=$ye)queries("SET PASSWORD FOR $oe = ".q($cf));}if(!$m){$Nf=array();foreach($me +as$te=>$Qc){if(isset($_GET["grant"]))$Qc=array_filter($Qc);$Qc=array_keys($Qc);if(isset($_GET["grant"]))$Nf=array_diff(array_keys(array_filter($me[$te],'strlen')),$Qc);elseif($ze==$oe){$we=array_keys((array)$Rc[$te]);$Nf=array_diff($we,$Qc);$Qc=array_diff($Qc,$we);unset($Rc[$te]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$te,$C)&&(!grant("REVOKE",$Nf,$C[2]," ON $C[1] FROM $oe")||!grant("GRANT",$Qc,$C[2]," ON $C[1] TO $oe"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($ze!=$oe)queries("DROP USER $ze");elseif(!isset($_GET["grant"])){foreach($Rc +as$te=>$Nf){if(preg_match('~^(.+)(\(.*\))?$~U',$te,$C))grant("REVOKE",array_keys($Nf),$C[2]," ON $C[1] FROM $oe");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(227):lang(228)),!$m);if($rb)$g->query("DROP USER $oe");}}page_header((isset($_GET["host"])?lang(25).": ".h("$ea@$_GET[host]"):lang(141)),$m,array("privileges"=>array('',lang(61))));if($_POST){$L=$_POST;$Rc=$me;}else{$L=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$ye;if($ye!="")$L["hashed"]=true;$Rc[(DB==""||$Rc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    + +
    ',lang(24),' +
    ',lang(25),' +
    ',lang(26),' +';if(!$L["hashed"])echo +script("typePassword(qs('#pass'));");echo(min_version(8)?"":checkbox("hashed",1,$L["hashed"],lang(229),"typePassword(this.form['pass'], this.checked);")),'
    + +';echo"\n","\n";foreach(array(""=>"","Server Admin"=>lang(24),"Databases"=>lang(27),"Tables"=>lang(124),"Columns"=>lang(38),"Procedures"=>lang(230),)as$nb=>$Ib){foreach((array)$uf[$nb]as$tf=>$fb){echo"$Ib'.h($tf);$t=0;foreach($Rc +as$te=>$Qc){$E="'grants[$t][".h(strtoupper($tf))."]'";$Y=$Qc[strtoupper($tf)];if($nb=="Server Admin"&&$te!=(isset($Rc["*.*"])?"*.*":".*"))echo"
    ".lang(61).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($Rc +as$te=>$Qc){echo''.($te!="*.*"?"":"*.*");$t++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else{echo"";}$t++;}}}echo"
    \n",'

    + +';if(isset($_GET["host"])){echo'',confirm(lang(170,"$ea@$_GET[host]"));}echo' +

    +';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$Ad=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$Ad++;}queries_redirect(ME."processlist=",lang(233,$Ad),$Ad||!$_POST["kill"]);}}page_header(lang(110),$m);echo' +
    +
    + +',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(process_list()as$t=>$L){if(!$t){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($L +as$z=>$X)echo"$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),));echo"
    ".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L +as$z=>$X)echo"".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.lang(234).'':h($X));echo"\n";}echo'
    +
    +

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

    \n";}echo' +

    +',script("tableCheck();");}elseif(isset($_GET["select"])){$b=$_GET["select"];$R=table_status1($b);$x=indexes($b);$o=fields($b);$Jc=column_foreign_keys($b);$ve=$R["Oid"];parse_str($_COOKIE["adminer_import"],$na);$Of=array();$e=array();$Sg=null;foreach($o +as$z=>$n){$E=$c->fieldName($n);if(isset($n["privileges"]["select"])&&$E!=""){$e[$z]=html_entity_decode(strip_tags($E),ENT_QUOTES);if(is_shortable($n))$Sg=$c->selectLengthProcess();}$Of+=$n["privileges"];}list($N,$s)=$c->selectColumnsProcess($e,$x);$ud=count($s)selectSearchProcess($o,$x);$Ie=$c->selectOrderProcess($o,$x);$_=$c->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$rh=>$L){$va=convert_field($o[key($L)]);$N=array($va?$va:idf_escape(key($L)));$Z[]=where_check($rh,$o);$K=$l->select($b,$N,$Z,$N);if($K)echo +reset($K->fetch_row());}exit;}$qf=$th=null;foreach($x +as$w){if($w["type"]=="PRIMARY"){$qf=array_flip($w["columns"]);$th=($N?$qf:array());foreach($th +as$z=>$X){if(in_array(idf_escape($z),$N))unset($th[$z]);}break;}}if($ve&&!$qf){$qf=$th=array($ve=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($ve));}if($_POST&&!$m){$Oh=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Sa=array();foreach($_POST["check"]as$Pa)$Sa[]=where_check($Pa,$o);$Oh[]="((".implode(") OR (",$Sa)."))";}$Oh=($Oh?"\nWHERE ".implode(" AND ",$Oh):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($b);$c->dumpTable($b,"");$Nc=($N?implode(", ",$N):"*").convert_fields($e,$o,$N)."\nFROM ".table($b);$Tc=($s&&$ud?"\nGROUP BY ".implode(", ",$s):"").($Ie?"\nORDER BY ".implode(", ",$Ie):"");if(!is_array($_POST["check"])||$qf)$I="SELECT $Nc$Oh$Tc";else{$ph=array();foreach($_POST["check"]as$X)$ph[]="(SELECT".limit($Nc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$Tc,1).")";$I=implode(" UNION ALL ",$ph);}$c->dumpData($b,"table",$I);exit;}if(!$c->selectEmailProcess($Z,$Jc)){if($_POST["save"]||$_POST["delete"]){$J=true;$oa=0;$P=array();if(!$_POST["delete"]){foreach($e +as$E=>$X){$X=process_input($o[$E]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($E)]=($X!==false?$X:idf_escape($E));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($b)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($b);if($_POST["all"]||($qf&&is_array($_POST["check"]))||$ud){$J=($_POST["delete"]?$l->delete($b,$Oh):($_POST["clone"]?queries("INSERT $I$Oh"):$l->update($b,$P,$Oh)));$oa=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Nh="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$J=($_POST["delete"]?$l->delete($b,$Nh,1):($_POST["clone"]?queries("INSERT".limit1($b,$I,$Nh)):$l->update($b,$P,$Nh,1)));if(!$J)break;$oa+=$g->affected_rows;}}}$D=lang(237,$oa);if($_POST["clone"]&&$J&&$oa==1){$Gd=last_id();if($Gd)$D=lang(163," $Gd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($b,$o,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(238);else{$J=true;$oa=0;foreach($_POST["val"]as$rh=>$L){$P=array();foreach($L +as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$o[$z]["type"])||$X!=""?$c->processInput($o[$z],$X):"NULL");}$J=$l->update($b,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($rh,$o),!$ud&&!$qf," ");if(!$J)break;$oa+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(237,$oa),$J);}}elseif(!is_string($Ac=get_file("csv_file",true)))$m=upload_error($Ac);elseif(!preg_match('~~u',$Ac))$m=lang(239);else{cookie("adminer_import","output=".urlencode($na["output"])."&format=".urlencode($_POST["separator"]));$J=true;$cb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Ac,$Td);$oa=count($Td[0]);$l->begin();$cg=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Td[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$cg]*)$cg~",$X.$cg,$Ud);if(!$z&&!array_diff($Ud[1],$cb)){$cb=$Ud[1];$oa--;}else{$P=array();foreach($Ud[1]as$t=>$Ya)$P[idf_escape($cb[$t])]=($Ya==""&&$o[$cb[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ya))));$M[]=$P;}}$J=(!$M||$l->insertUpdate($b,$M,$qf));if($J)$J=$l->commit();queries_redirect(remove_from_uri("page"),lang(240,$oa),$J);$l->rollback();}}}$Gg=$c->tableName($R);if(is_ajax()){page_headers();ob_start();}else +page_header(lang(43).": $Gg",$m);$P=null;if(isset($Of["insert"])||!support("table")){$We=array();foreach((array)$_GET["where"]as$X){if(isset($Jc[$X["col"]])&&count($Jc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$We["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$P=$We?"&".http_build_query($We):"";}$c->selectLinks($R,$P);if(!$e&&support("table"))echo"

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

    \n","
    ";hidden_fields_get();echo(DB!=""?''.(isset($_GET["ns"])?'':""):"");echo'',"
    \n";$c->selectColumnsPrint($N,$e);$c->selectSearchPrint($Z,$e,$x);$c->selectOrderPrint($Ie,$e,$x);$c->selectLimitPrint($_);$c->selectLengthPrint($Sg);$c->selectActionPrint($x);echo"
    \n";$G=$_GET["page"];if($G=="last"){$Mc=$g->result(count_rows($b,$Z,$ud,$s));$G=floor(max(0,$Mc-1)/$_);}$Xf=$N;$Sc=$s;if(!$Xf){$Xf[]="*";$ob=convert_fields($e,$o,$N);if($ob)$Xf[]=substr($ob,2);}foreach($N +as$z=>$X){$n=$o[idf_unescape($X)];if($n&&($va=convert_field($n)))$Xf[$z]="$va AS $X";}if(!$ud&&$th){foreach($th +as$z=>$X){$Xf[]=idf_escape($z);if($Sc)$Sc[]=idf_escape($z);}}$J=$l->select($b,$Xf,$Z,$Sc,$Ie,$_,$G,true);if(!$J)echo"

    ".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$dc=array();echo"

    \n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&$_!=""&&$s&&$ud&&$y=="sql")$Mc=$g->result(" SELECT FOUND_ROWS()");if(!$M)echo"

    ".lang(13)."\n";else{$Ca=$c->backwardKeys($b,$Gg);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$s&&$N?"":"\n";if(is_ajax())ob_end_clean();foreach($c->rowDescriptions($M,$Jc)as$ke=>$L){$qh=unique_array($M[$ke],$x);if(!$qh){$qh=array();foreach($M[$ke]as$z=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$z))$qh[$z]=$X;}}$rh="";foreach($qh +as$z=>$X){if(($y=="sql"||$y=="pgsql")&&preg_match('~char|text|enum|set~',$o[$z]["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y!='sql'||preg_match("~^utf8~",$o[$z]["collation"])?$z:"CONVERT($z USING ".charset($g).")").")";$X=md5($X);}$rh.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($z));}echo"".(!$s&&$N?"":"";}}}if($Ca)echo"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(242)."");$le=array();$Oc=array();reset($N);$Bf=1;foreach($M[0]as$z=>$X){if(!isset($th[$z])){$X=$_GET["columns"][key($N)];$n=$o[$N?($X?$X["col"]:current($N)):$z];$E=($n?$c->fieldName($n,$Bf):($X["fun"]?"*":h($z)));if($E!=""){$Bf++;$le[$z]=$E;$d=idf_escape($z);$fd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$Ib="&desc%5B0%5D=1";echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'';echo +apply_sql_function($X["fun"],$E)."";echo"";}$Oc[$z]=$X["fun"];next($N);}}$Md=array();if($_GET["modify"]){foreach($M +as$L){foreach($L +as$z=>$X)$Md[$z]=max($Md[$z],min(40,strlen(utf8_decode($X))));}}echo($Ca?"".lang(243):"")."
    ".checkbox("check[]",substr($rh,1),in_array(substr($rh,1),(array)$_POST["check"])).($ud||information_schema(DB)?"":" ".lang(244).""));foreach($L +as$z=>$X){if(isset($le[$z])){$n=$o[$z];$X=$l->value($X,$n);if($X!=""&&(!isset($dc[$z])||$dc[$z]!=""))$dc[$z]=(is_mail($X)?$le[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$n["type"])&&$X!="")$A=ME.'download='.urlencode($b).'&field='.urlencode($z).$rh;if(!$A&&$X!==null){foreach((array)$Jc[$z]as$p){if(count($Jc[$z])==1||end($p["source"])==$z){$A="";foreach($p["source"]as$t=>$ng)$A.=where_link($t,$p["target"][$t],$M[$ke][$ng]);$A=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$A;if($p["ns"])$A=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$A);if(count($p["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($b);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$qh))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($qh +as$yd=>$W)$A.=where_link($t++,$yd,$W);}$X=select_value($X,$A,$n,$Sg);$u=h("val[$rh][".bracket_escape($z)."]");$Y=$_POST["val"][$rh][bracket_escape($z)];$Yb=!is_array($L[$z])&&is_utf8($X)&&$M[$ke][$z]==$L[$z]&&!$Oc[$z];$Rg=preg_match('~text|lob~',$n["type"]);echo"".($Rg?"":"");}else{$Qd=strpos($X,"");echo" data-text='".($Qd?2:($Rg?1:0))."'".($Yb?"":" data-warning='".h(lang(245))."'").">$X";$c->backwardKeysPrint($Ca,$M[$ke]);echo"
    \n","
    \n";}if(!is_ajax()){if($M||$G){$pc=true;if($_GET["page"]!="last"){if($_==""||(count($M)<$_&&($M||!$G)))$Mc=($G?$G*$_:0)+count($M);elseif($y!="sql"||!$ud){$Mc=($ud?false:found_rows($R,$Z));if($Mc$_||$G));if($Ue){echo(($Mc===false?count($M)+1:$Mc-$G*$_)>$_?'

    '.lang(246).''.script("qsl('a').onclick = partial(selectLoadMore, ".(+$_).", '".lang(247)."…');",""):''),"\n";}}echo"

    \n";if($c->selectImportPrint()){echo"
    ","".lang(62)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"","
    ";}echo"\n","\n",(!$s&&$N?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$vg=isset($_GET["status"]);page_header($vg?lang(112):lang(111));$Eh=($vg?show_status():show_variables());if(!$Eh)echo"

    ".lang(13)."\n";else{echo"\n";foreach($Eh +as$z=>$X){echo"","
    ".h($z)."","".h($X);}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Dg=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$E=>$R){json_row("Comment-$E",h($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$E",h($R[$z]));foreach($Dg+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$E",($z=="Rows"&&$X&&$R["Engine"]==($y=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Dg[$z]))$Dg[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$E");}}}foreach($Dg +as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($c->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Lg=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Lg&&!$m&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$D=lang(251);}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(252);}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(253);}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D=lang(254);}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D=lang(255);}elseif(!$_POST["tables"])$D=lang(10);elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="".h($L["Table"]).": ".h($L["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?lang(27).": ".h(DB):lang(191).": ".h($_GET["ns"])),$m,true);if($c->homepage()){if($_GET["ns"]!==""){echo"

    ".lang(256)."

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

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

    \n";if(support("table")){echo"
    ".lang(257)."
    ","",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$l->convertOperator("LIKE %%");search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$S=0;foreach($Kg +as$E=>$U){$Hh=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$E);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(124),''.lang(258).doc_link(array('sql'=>'storage-engines.html')),''.lang(116).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),''.lang(259).doc_link(array('sql'=>'show-table-status.html',)),''.lang(260).doc_link(array('sql'=>'show-table-status.html',)),''.lang(261).doc_link(array('sql'=>'show-table-status.html')),''.lang(41).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),''.lang(262).doc_link(array('sql'=>'show-table-status.html',)),(support("comment")?''.lang(40).doc_link(array('sql'=>'show-table-status.html',)):''),"
    '.checkbox(($Hh?"views[]":"tables[]"),$E,in_array($E,$Lg,true),"","","",$u),''.(support("table")||support("indexes")?"".h($E).'':h($E));if($Hh){echo''.(preg_match('~materialized~i',$U)?lang(122):lang(123)).'','?';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(34)),"Index_length"=>array("indexes",lang(126)),"Data_free"=>array("edit",lang(35)),"Auto_increment"=>array("auto_increment=1&create",lang(34)),"Rows"=>array("select",lang(31)),)as$z=>$A){$u=" id='$z-".h($E)."'";echo($A?"".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"?":"?"):"");}$S++;}echo(support("comment")?"":""),"\n";}echo"
    ".lang(235,count($Kg)),"".h($y=="sql"?$g->result("SELECT @@default_storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"";echo"\n","
    \n","
    \n";if(!information_schema(DB)){echo"\n";}echo"
    \n",script("tableCheck();");}echo'

    ".lang(138)."

    \n";$Sf=routines();if($Sf){echo"\n",'\n";foreach($Sf +as$L){$E=($L["SPECIFIC_NAME"]==$L["ROUTINE_NAME"]?"":"&name=".urlencode($L["ROUTINE_NAME"]));echo'','
    '.lang(178).''.lang(39).''.lang(214)."
    '.h($L["ROUTINE_NAME"]).'',''.h($L["ROUTINE_TYPE"]),''.h($L["DTD_IDENTIFIER"]),''.lang(129)."";}echo"
    \n";}echo'

    ".lang(139)."

    \n";$M=get_rows("SHOW EVENTS");if($M){echo"\n","\n";foreach($M +as$L){echo"","
    ".lang(178)."".lang(273)."".lang(203)."".lang(204)."
    ".h($L["Name"]),"".($L["Execute at"]?lang(274)."".$L["Execute at"]:lang(205)." ".$L["Interval value"]." ".$L["Interval field"]."$L[Starts]"),"$L[Ends]",''.lang(129).'';}echo"
    \n";$nc=$g->result("SELECT @@event_scheduler");if($nc&&$nc!="ON")echo"

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