\n";}function
-bold($Va,$jb=""){return($Va?" class='active $jb'":($jb?" class='$jb'":""));}function
-odd($I=' class="odd"'){static$s=0;if(!$I)$s=-1;return($s++%2?$I:'');}function
-js_escape($Q){return
-addcslashes($Q,"\r\n'\\/");}function
-json_row($y,$X=null){static$Vc=true;if($Vc)echo"{";if($y!=""){echo($Vc?"":",")."\n\t\"".addcslashes($y,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Vc=false;}else{echo"\n}\n";$Vc=true;}}function
-ini_bool($Nd){$X=ini_get($Nd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
-sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function
-set_password($Qi,$N,$V,$F){$_SESSION["pwds"][$Qi][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function
-get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function
-q($Q){global$g;return$g->quote($Q);}function
-get_vals($G,$e=0){global$g;$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$e];}return$I;}function
-get_key_vals($G,$h=null,$ih=true){global$g;if(!is_object($h))$h=$g;$I=array();$H=$h->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($ih)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function
-get_rows($G,$h=null,$n="
"){global$g;$wb=(is_object($h)?$h:$g);$I=array();$H=$wb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!is_object($h)&&$n&&defined("PAGE_HEADER"))echo$n.error()."\n";return$I;}function
-unique_array($J,$w){foreach($w
-as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$I=array();foreach($v["columns"]as$y){if(!isset($J[$y]))continue
-2;$I[$y]=$J[$y];}return$I;}}}function
-escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return
-idf_escape($y);}function
-where($Z,$p=array()){global$g,$x;$I=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,1);$e=escape_key($y);$I[]=$e.($x=="sql"&&preg_match('~^[0-9]*\.[0-9]*$~',$X)?" LIKE ".q(addcslashes($X,"%_\\")):($x=="mssql"?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($p[$y],q($X))));if($x=="sql"&&preg_match('~char|text~',$p[$y]["type"])&&preg_match("~[^ -@]~",$X))$I[]="$e = ".q($X)." COLLATE ".charset($g)."_bin";}foreach((array)$Z["null"]as$y)$I[]=escape_key($y)." IS NULL";return
-implode(" AND ",$I);}function
-where_check($X,$p=array()){parse_str($X,$cb);remove_slashes(array(&$cb));return
-where($cb,$p);}function
-where_link($s,$e,$Y,$of="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($e)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$of:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
-convert_fields($f,$p,$L=array()){$I="";foreach($f
-as$y=>$X){if($L&&!in_array(idf_escape($y),$L))continue;$Ga=convert_field($p[$y]);if($Ga)$I.=", $Ga AS ".idf_escape($y);}return$I;}function
-cookie($C,$Y,$se=2592000){global$ba;return
-header("Set-Cookie: $C=".urlencode($Y).($se?"; expires=".gmdate("D, d M Y H:i:s",time()+$se)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
-restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
-stop_session($ad=false){if(!ini_bool("session.use_cookies")||($ad&&@ini_set("session.use_cookies",false)!==false))session_write_close();}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function
-set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function
-auth_url($Qi,$N,$V,$l=null){global$dc;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($dc))."|username|".($l!==null?"db|":"").session_name()),$B);return"$B[1]?".(sid()?SID."&":"").($Qi!="server"||$N!=""?urlencode($Qi)."=".urlencode($N)."&":"")."username=".urlencode($V).($l!=""?"&db=".urlencode($l):"").($B[2]?"&$B[2]":"");}function
-is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
-redirect($A,$He=null){if($He!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$He;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function
-query_redirect($G,$A,$He,$wg=true,$Bc=true,$Mc=false,$Xh=""){global$g,$n,$b;if($Bc){$xh=microtime(true);$Mc=!$g->query($G);$Xh=format_time($xh);}$sh="";if($G)$sh=$b->messageQuery($G,$Xh,$Mc);if($Mc){$n=error().$sh.script("messagesPrint();");return
-false;}if($wg)redirect($A,$He.$sh);return
-true;}function
-queries($G){global$g;static$pg=array();static$xh;if(!$xh)$xh=microtime(true);if($G===null)return
-array(implode("\n",$pg),format_time($xh));$pg[]=(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";";return$g->query($G);}function
-apply_queries($G,$T,$yc='table'){foreach($T
-as$R){if(!queries("$G ".$yc($R)))return
-false;}return
-true;}function
-queries_redirect($A,$He,$wg){list($pg,$Xh)=queries(null);return
-query_redirect($pg,$A,$He,$wg,false,!$wg,$Xh);}function
-format_time($xh){return
-sprintf('%.3f s',max(0,microtime(true)-$xh));}function
-remove_from_uri($Hf=""){return
-substr(preg_replace("~(?<=[?&])($Hf".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
-pagination($E,$Ib){return" ".($E==$Ib?$E+1:''.($E+1)."");}function
-get_file($y,$Qb=false){$Sc=$_FILES[$y];if(!$Sc)return
-null;foreach($Sc
-as$y=>$X)$Sc[$y]=(array)$X;$I='';foreach($Sc["error"]as$y=>$n){if($n)return$n;$C=$Sc["name"][$y];$fi=$Sc["tmp_name"][$y];$yb=file_get_contents($Qb&&preg_match('~\.gz$~',$C)?"compress.zlib://$fi":$fi);if($Qb){$xh=substr($yb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$xh,$Bg))$yb=iconv("utf-16","utf-8",$yb);elseif($xh=="\xEF\xBB\xBF")$yb=substr($yb,3);$I.=$yb."\n\n";}else$I.=$yb;}return$I;}function
-upload_error($n){$Ee=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($n?'Unable to upload a file.'.($Ee?" ".sprintf('Maximum allowed file size is %sB.',$Ee):""):'File does not exist.');}function
-repeat_pattern($Uf,$qe){return
-str_repeat("$Uf{0,65535}",$qe/65535)."$Uf{0,".($qe%65535)."}";}function
-is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
-shorten_utf8($Q,$qe=80,$Dh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$qe).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$qe).")($)?)",$Q,$B);return
-h($B[1]).$Dh.(isset($B[2])?"":"...");}function
-format_number($X){return
-strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
-friendly_url($X){return
-preg_replace('~[^a-z0-9_]~i','-',$X);}function
-hidden_fields($kg,$Dd=array()){$I=false;while(list($y,$X)=each($kg)){if(!in_array($y,$Dd)){if(is_array($X)){foreach($X
-as$ae=>$W)$kg[$y."[$ae]"]=$W;}else{$I=true;echo'';}}}return$I;}function
-hidden_fields_get(){echo(sid()?'':''),(SERVER!==null?'':""),'';}function
-table_status1($R,$Nc=false){$I=table_status($R,$Nc);return($I?$I:array("Name"=>$R));}function
-column_foreign_keys($R){global$b;$I=array();foreach($b->foreignKeys($R)as$q){foreach($q["source"]as$X)$I[$X][]=$q;}return$I;}function
-enum_input($U,$Ja,$o,$Y,$sc=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$_e);$I=($sc!==null?"":"");foreach($_e[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$eb=(is_int($Y)?$Y==$s+1:(is_array($Y)?in_array($s+1,$Y):$Y===$X));$I.=" ';}return$I;}function
-input($o,$Y,$r){global$wi,$b,$x;$C=h(bracket_escape($o["field"]));echo"
".($X!=array_values($X)?"| ".h($ae):"")." | ".select_value($W,$_,$o,$Wh);return"";}if(!$_)$_=$b->selectLink($X,$o);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$I=$b->editVal($X,$o);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Wh!=""&&is_shortable($o))$I=shorten_utf8($I,max(0,+$Wh));else$I=h($I);}return$b->selectVal($I,$_,$o,$X);}function
-is_mail($pc){$Ha='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$cc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Uf="$Ha+(\\.$Ha+)*@($cc?\\.)+$cc";return
-is_string($pc)&&preg_match("(^$Uf(,\\s*$Uf)*\$)i",$pc);}function
-is_url($Q){$cc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
-preg_match("~^(https?)://($cc?\\.)+$cc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
-is_shortable($o){return
-preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$o["type"]);}function
-count_rows($R,$Z,$Vd,$md){global$x;$G=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Vd&&($x=="sql"||count($md)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$md).")$G":"SELECT COUNT(*)".($Vd?" FROM (SELECT 1$G GROUP BY ".implode(", ",$md).") x":$G));}function
-slow_query($G){global$b,$hi,$m;$l=$b->database();$Yh=$b->queryTimeout();$mh=$m->slowQuery($G,$Yh);if(!$mh&&support("kill")&&is_object($h=connect())&&($l==""||$h->select_db($l))){$fe=$h->result(connection_id());echo'
-';}else$h=null;ob_flush();flush();$I=@get_key_vals(($mh?$mh:$G),$h,false);if($h){echo
-script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function
-get_token(){$sg=rand(1,1e6);return($sg^$_SESSION["token"]).":$sg";}function
-verify_token(){list($hi,$sg)=explode(":",$_POST["token"]);return($sg^$_SESSION["token"])==$hi;}function
-lzw_decompress($Ra){$Yb=256;$Sa=8;$lb=array();$Hg=0;$Ig=0;for($s=0;$s=$Sa){$Ig-=$Sa;$lb[]=$Hg>>$Ig;$Hg&=(1<<$Ig)-1;$Yb++;if($Yb>>$Sa)$Sa++;}}$Xb=range("\0","\xFF");$I="";foreach($lb
-as$s=>$kb){$oc=$Xb[$kb];if(!isset($oc))$oc=$fj.$fj[0];$I.=$oc;if($s)$Xb[]=$fj.$oc[0];$fj=$oc;}return$I;}function
-on_help($rb,$jh=0){return
-script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $rb, $jh) }, onmouseout: helpMouseout});","");}function
-edit_form($a,$p,$J,$Di){global$b,$x,$hi,$n;$Ih=$b->tableName(table_status1($a,true));page_header(($Di?'Edit':'Insert'),$n,array("select"=>array($a,$Ih)),$Ih);if($J===false)echo" ".'No rows.'."\n";echo'
-';}if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
-lzw_decompress("\0\0\0` \0\0\n @\0C\"\0`EQ?tvM'Jdd\\b0\0\"fӈs5AXPaJ08#RTz`#.cXȀ?-\0Im?.M\0ȯ(̉/(%\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
-lzw_decompress("\n1ٌ̇l7B14vb0fsn2Bѱ٘n:#(b.\rDc)a7Elñi1̎s-4f i7Févt2!r0t~U'3MWB'cP:6T\rcAzr_WK\r-VNFS%~c&\\^ruŎÞً4'7kQh'g\rFB\ryT7SSP1=ǤcI:dm>S8LJt.M ϋ`'C889 Q2#8А6mjh<9/:J)ʂ\0d>!\0Zvno(k7s>!R\"*nS\0@P\"(#[@gozn9k8n1I*=n0c(;à!*c>ΎE7DLJ1`8(3M\"39?Ee=Ҭ~Ӹ7;CE\rd!)a*5ajo\0#`38\0]e2 mke]AZsStZZ!)BRG+#Jv2(c4<#sB06YL\r=[73<:bxJ= m_ fltIH3x*6`t6%ULeق<\0AQ-xJ͍QH\njL+jz7`\nk'NvX>C-T˩4*L%Cj>7ߨި`;yqr3#} :#n\r^=CAܸƎs&8K&*0tS=[:\\]E/O>^]ø,В\$ZkDm,G\0\\i%ʹ ngb y`ԆW 䗗_CT\niH%dai7At,JX4n0o9g\nzmM%`'IО-7:p3pQrEDb2]PF>e3j\n߰t!?4ftK;\rΞи!ou?Ph0uIC}'~2vQ8)7DI=y&eas*hɕjlA(\"\\m^iM)^ |~l#!Yf81RS!62PCl&xd!|9`_OY=G[E-eLCvT )@j-5pSg.G=ZE\$\0цKjU\$G'IP~ځ ;hNێG%*RjX[XPf^|T!*NІ\rU^q1V!Uz,I|77r,7ľB;+ߕAp^~ؼW!3PI8]vJfq|,9Wf`\0qZp}[JdhyNY|Cy,az-2.bz#UᓍL7-wt3ɵeD\$#j@G8 7pRYC~:@EUJ;67v]J'q1ϳElQІi/{k<֡Mpo}rq؞cä_mw^uln _~Gn{kܞw\rj~K\0-B;b`}CC,-L8\r,klnjn}-53ugmŸ*/``#x+B?#ۏN;OR\r\$kϙ\01\0k\08a/t#(&l&p삅iM{zp*-gv6k d؋A`6lX)+d 7 \r ځcj6\rp\r\r\"oP7\r\0\0yP\rQ7Z4Qڍp/y\r##D;r\r=3^&Q;ѣ?q0\"0HЙ|ʖSi@*T2T# \0C07]?&ED;:/3E5EQeT\"m5E;#=48*LS5HrJE TO\rԅJJJeG)8B8,&G +Mɲ^*G146\$.\"拢I4w!\$L 8bA2L'M?MF\$,Nr/4BJ¨");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
-lzw_decompress("f:gCI\n83)781x:\nOg#)r7\n\"`|2gSiH)NS\r\"0@)`(\$s6O!V/=' T4=iS6IOerx9*źn3\rщvC`2G%Y1fȂl1\ny*pC\r\$nT3=\\r9O\" l<\r\\I,s\nAeh+M!q0f`(N{c+wYp٧33+Ijknqzi#^r3[o;(6#Ґ\":cz>ߣC2vCXǺ~̌6Ȉh=-A7Xև\\\rQ<蚧q'!XΓ2T !D\r,K\"%HqR\r̠C =<c\n#<5M Eyo\"cJKL2&eRWAΐTwё;J\\`)5ޜBqhT3R '\r+\":8tVA+]S72YFZ85c,J/+SnBpoWd\"QaZKpާy\$4I@L'@xCdf~}Q*ҺAQ\"B*2\0.kF\"\r o\\ԢVijYMO\$2ThH0XH5~kLT*:~P2tB\0YjvDs.9s̤P*xboP\$W/*z';\$*dmÃ'b\rn%47W-K@վD>eӾ\"t+poW\$Q@3t`-k7g]lE^dW>nvtlzPHFvWV\nh;BDس/:J\\+ %]ъwaݫ=XN/wJ_[t)5QR2l-:Y9&l R;u#S htkE!l>SHX<,OYyЃ%L]\0 ^dw3,ScQte=M:42]PTsn:u>/d a'%qҨ&@HG@w8pZ\n{[t2a> wJ^+u~oµXkզBZk˱X=0>tlŃ)Wbܦ'A,mY,Ae#V+n1IE+[[-RmK9~L-3O`_0sL;]6|hVT:ޞerMa\$~e9>Д\r\\J1Ú%=0{ |ޗtڼ=Q|\0?[g@u?ɝ|4*c-74\ri'^n;({KhnfZϝ}l]\rpJ>,gp{;\0u)sN'HC9M5*`k㬎AhY*jJDžPN+^ D*ÀDPLQ`O&\0}\$6Zn>0 e\n trp!hV'Py^*|r%|\nr\r#@wT.Rv8j\nmBp Y0Ϣm\0@P\r8Y\rGd QGP%E/@]\r{\0QbR M\rF|%0SDrf/\":moރ%@3Hx\0l\0 W\n8\r\0}@D`#t.jEoDrǢlbtf40%0kz2\r W@%\r\n~1XD2!O*{0R-d=\$S\$2}7Sf[}\"@][6S|SE_>q-@z`;0ƻC*[{DjC\nfsP6'ȕ QEN\\%ro7oG+dW4A*#TqEf%DZ32.Rkz@@ED`CV!Cŕ\0I)38M3@3LZB1F@Lh~G1M64Xє}ƞfˢIN34XBtd8\nbtNQb;ܑDL\0\"\nV6]UcVfD`M6O44sJ555\\x <5[Fߵy7m)@SVĞ#x8 ոы`\\`-v2p+vULxY.\0005(@ⰵ[U@#VJuX4u_\"JO(Dt_ 5s^5^^VI\rg&]\r\"ZCI6#\rܓ]7q06}o`uab(XDfMN)VUUFо=jSWi\"\\B1ĞE0 amP&ݭp(0cPom\0Rp&w+KQs6}5[sJ2/O V*)R.Du33F\r;v4H _!2k+%:_,eoFAJO\"%\nk5`z %|%Ϋg|}lv2n7~\0 YRH@rxN-Jp\0f#@ˀmvx\r2WMO/\nD7}2VWWwɀ7Hk]\$Mz\\e.fRZaBQdKZvtw4\0Z@ Bc;b>B 3mn\noJ3k(܍\"yG\$:\rņݎG6ɲJyQ\\Qif(m)/r\$J/H]*gZODѬ]1g22f=HT]N&M\0[8xȮE8&LVmvjטF\\ &s@Q \\\"b \rBsIw YɜN 7C/&٫`\n\n[k*ATV*UZtz{.yS#3ipzW@yC\nKT1@|z#_CJz(B,V(K_dOP@XtЅc;WZzW_٠\0ފCFxR \nPA&,pfV|@N\"\$[iZ\0Zd\\\"|W`]tzo\$\0[ueəbhU-,r Lk8֫V&ald2; '-Jyua\0a{s[9V\0FR VB0S;D>L4&ZHO1\0wgStKRzi+3wzX](G\$D+tչ(#oc: Y6\0& @ )!w# txND)CFZpa*Fb ͼģSi/S!zUH*40K-/-k`nLiJ~wJn\"`=V3Oį8t>voE.Rz`pPE\\ɧ3Llѥs]ToV\n *\r@7)Dm0W5Ӏǰwb| JV\"ur\r&N0NBdd8D_ͫ^TH#]d+v~U,PR%xfACmcyŜD)uHpp^u\0}{ѡ\rgsQMY2j\r|0\0X@qI`5F6NV@ӔsEp#\rPTDeWؼz!û:DMV(~X9\0@40Nܽ~Q[TeqSv\"\"h\0R-hZdF5P`9D&xs9W֗5Er@owkb1PO-OOxlHD6/ֿmޠ37TK~54 p#I>YIN\\5NӃMpr&GxMsq.F8Cs he5*b)Sڪ̭e0-X {5|i֢aȕ6z/YێM ƃ \nR*8r o @78BfzKrA\$˰ p\0?dk|45}AɶWJ2k Gi\0\"d8\0>m `8w7o4cGhQ(퀨8@\$<\0p0LeX+Ja{Bh8CyP2Ӯ*EH2DqSۘp0Ik`S\n:B7{-`6AWܖ\rpW#?{\0cD[<f--pԌ*B]nW^R70\r+NGN\$(\0#+y@@iD(8@\rhHHezz{1hW1FWho&aɜd6jw`h{v`RE\nj`ܷ*ʸ}Y \rYH6#\0廆a QHEl4dp#obr+_)\r`!|dQ>=QʡζEOB'>PӶ A\rnKi %< o;S@! x:A+\\1d\$jO7% /guz*GH5\"8,]raq/h#\$ /tn8y-OHb<Z!1`.(uo|`GːSBaM ڂ9ƞD@1BtDʡ@?o(HqC8ETcncR6N%rHj2G\0aq rz9b>(Px<)x#8誹th2vWo2Ut+=l#jD 0&Rc\$*̑-Z`\r;|Ap=1 1ƈbEv(^XP2=\0}WG<GR#PHܮr9 Y!LB4NCZICMLm,f@eYxBS(+<4Y)-\rz?\$\"\" 6E\r)z@ȑr*J윋%\$eJ\0A\$ڰ/5B0SxIQ)<4YS&{b+IG=>\rPY`ZD`UF14d8X(C%`㜭0I\$7Wpǁ,Ac&Ԍp\$:>].VY\$p ]`;e\00\nK+@DLSr(onM\0@9%\"WS\" 䥙ٍػj_J-rʜ5\\25>Ze\"0%9y^WMax&a)DL2Qt?=,/of3IJ\$\r;7}\rW@ҰM|\rY]5\\*s:FV!kنRL3L 52Msb\$7\0ly& 9|m!0J4TSdGnKV:lD'/:Zs\ny%i,@ҲLj1<3ĨD2/;'Pݻ`qKȰfIL Dݬ43 OHJ q&X!r)FXx^QwOPh՞-_>a( x%Kbޅwe'?B9x>:\"73xT\0ej [tҜ\"(\\Kezre> \0002hʇXaE\02f{!JQJؘ9(2#\\Z,Qܥ3?8` bwR6\n*㋀ƒ(tL*Sd\0x)(*wH]7ONv(Гdgq \nLpLNH@1M nze4!! '槝-tAQPL,7\\i^\$,|Z(S9\n* +TDz?(T>LæR\$zдi̼WͨDs{)@ vPgqIVҨ\n )!8|\$pZ*!7ANjNWUQ)eFUASx\0[N2X :ST~S*T4 3]9F]:KUg;*Aya1j|8ΫIMRVh7uUr,h%v{@{QP]hl62GeNn='~ÞPҀ%0zur\09uEs\"\\ט^(3ՑS%<+9Ծ\0~'̞֓<+,i:@N\$o ]Z!]n,x>_fW\0006%}I\nh߀wǃ -H@_Vi{R^۔}5b,!5Hp/k<jiN\$#E/0s\nB\r*zoyn[Ι 6ag8qC⼜IrNFȫ170/i(B0Z(+SJ,91/Y+jxӱFAkfJee\rCͳrzmh@9O ؝GKAdOH=<&`KPA!WO;-XLmKz7-e[upqo/`CKXfiY7=M/FR۔TdY\"=`1k1Տh\rf@Nz(@ h\0I}PJKrpR`xfo(A[19(&jo<I@p @,y nIs^Ўѫ:Yvc؏9q.C8bWV?҅9\$u@5#S(4YK6!N6<|v13ʊ:!`Mlf`ZJ=GXY)_lАT)P`%:!Z\"lYSUؤ(Y1Z니rv)F`K~=Y>Sc!lDBrF\$RA:\\P4VR6`)%(|f<Κ_ޯ_G<_ ˟[:6G8l#J(JC`wFw\"b!,!r@K(\n@AsVSֹ4_\ns٠eڋj)&3{kQGcX^L{C\nmAD1O?((2\"UL+#o@X\0٭^n_peQ˙X}%*em{GNXlq]R\\Zv!) xd,cK鮇mI~K{+Gݥ=@Q,1!aEOc#6<urB\nȲdHt {C5Ӷu2n`YqDxwMBn2>GڄYaKw(2`w1m-:&LD8U8l\\< za:,K'%7:MU[*;Kj;/wG\n^eV',;B6G1OKW(iX\npCکc6^㷀=^ûcQRp`\$ D(\0D>{ETcI\r{\$oR ZZ4*??+jnQ`X3 \$M\nw\"dW~@'I᭫0+-wy6vȽ'Ԇ:Y)Y0\0*)?'ǞvfI\nz9.b!cE[F麙ks}Bvg5V,)J\$jZJ\$Yח9\0\n.^JڋbmI0:g˗ATPI]~!;D zm`?%YT\n\0D\0\0'H@0`<10(m-ɞ7A\0~~ꁡĤ?thє.w%)0 #c\"cjfW\0\0pCkC885+i:[8bl[\"5Sy\0*Q6Vs97!;\"c)OQ,Ա\r7,*0aQu?_C|R(o(A6ɭ7- WW9O,o'v2<3\0h@` 3TXϚ|\"FC_~x`'fQ-4/`'=A\$>`P_G(E&/JIv'm餧zpޞFo /[i؋G*y(<7qY.眪B\rlr\nUnƧT> Q_|K8ډe_xzxLp14dU#4tK\$!pwZx_i5T?}C{h/Gzj\$.BҨ=#Ϗ|*Iw/ax`**]>a?'}FJSԖA0'ʟ0:63лn'U/r|=slb0\0WrBʤ@T~\$H D\\-(ᩖBMz+%(i㹃I5/.y/\${Q}pܻdI\\ՎB\0V0B9{T\$n8\$ZePij%9&Vbx}g\"%h*ٸvOw˾/oL,=V5Bg ϶3>~`\nxi\"v@nףϳyacG'%[4`n47!5ހrɉ>z(Yt0VPZXT`2~Cl[ont8jB\0d\0000Vg@V!h\0006d<=[Wf@pbaټs;G<~a?NL\"(?%x#7|SOƓ)B4+*!)6#+?'(XJO\0");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
-lzw_decompress("v0F==FS _6MƳr:ECIo:CXc\rJ(:=Ea28x?'iSANNxsNBVl0S Ul(D|҄P>E㩶yHch-3Eb bpEp9.~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0\0Dbc!Q7Шd8~N)Eг`Ns`S)O/<x9o3n2!r:;+9CȨ\n<`b\\?`4\r#`8\$c1cc{n7ANRLi\r1!(j´+62X8+.\r!xh'6S\0RO\n1(W07q:NE:68n+մ5_(s\r/m6P@EQ9\nV-\".:J8weq|؇X]Y XezW 7Z1hQfuj4Z{p\\AUJ<k@ɍ@}&L7UwuYh2@u P7Ah3ÛXEͅZ]l@Mplv) HWy>Y-Y/hC[*F#~!`\r#0PC˝f\\^%B<\\fޱ&/OL\\jFjZ1\\:ƴ>NXaFAfh{\"s\n64?8^p\"띰ȸ\\e(PNq[gr&}PhW*r_sPh\nom#.\0@pdW \$ҺQ۽Tl0 HdH)ۏ)PHgUBe\rt:\0)\"t,[(DO\nR8!Ƭ֚lAV4hSq<@}gK]]=90'wA<a~WD|A2XU2yŊ=p)\0P sn3rf\0FvGI@%+_I`\r.NKI[ʖSJaUfSzM%\"Q|9Bcaq\08#Zle5#U@iUGn%Ұs;gxLpP?BQ\\b龒Q=7:ݡQ\r:t:y( \nd)\nX;CaA\rPGH!@9\n\nAl~HV\nsիƯbBr3\rP%ф\r}b/Α\$5PC\"wB_UgAt夅^QUjBvh졄4)+)\$`^69#4Xmh8:c0;/ԉ;\\'(t'+̷^]Nv#,vOiϖ>@W* =\0Nm1\0I@9T34+ԙ@eGFMC\rE3Etm!#1D @H(n ZQj\"iMsSS\$Ib fu:SB|iY¦8 v#D4`.^HM_ռuUz`ZJ e@Cea\"mb6ԯJRT?ԣXMZІpQvjjV{C\r7Tʞ 5{P]\r?QAA2V)Ji-N99fl Jm;u@Վ\r@P\rxFEȭ%=5N֜?7NÅw`hX98 qzd%6̂t/Ll,KaN~,'ǀM\rf9w!xx[ϑG8;xA-I&5\$D\$%xѬ´]&o-39Lzy6;uzZ 8_ɐx\0D?X7yOY.#38ǀeQ=*Gwm Y]YOYF)z#\$e)/z?z;^FZg`^e#?eM3u偃0>\"?@חXv\"*Ԣ\r6v~OV~&ר^gđٞ'f6:-Z~O6;zx;&!+{9Mٳd \r,9Wݭ:\rٜ@睂+]-[gۇ[s[iiqyx+|7{7|w}EWWk|Jxmq xwyj#e(ߞþ {ڏyM@ɂY(g͚-J(@;y#SYp@%so9;+ ;ZNٯº kVu[x|qON? `u6||Xس|Ox!:ϗY]c\rh9n8'\rS.1USȸX+z]ɵ?C\r\\\$`)U|ˤ|Ѩx'՜<̙e|ͳLMy(ۧlкO]{ѾFD}yuĒ,XL\\x;UWtv\\OxWJ9ȒR5WiMi[Kf(\0dĚ迩\rM7;6KʦI\rxv\rV3ɱ.R|^2^0߾\$Q[Dܣ>1'^X~t1\"6L+AeI~@pM>m2Sb\$C[()%Q#G`uGwp\rkKezhjzi(rOT=7~4\"ef~dVZU-b'VJZ7)T8.2j;=ڬdA=pVL)X\n¦`e\$TƦQJlJyI :BbPZnU;>_\n `uM֍mLwB\0\\b8M[z&1\0 \rT+\\3Plb4-)%Wd#\nrMX\"ϡ(Ei11(b`@fSjDbf}rDR1bAIy\"WvgCIJ8z\"P\\i\\m~ZRv1ZB5Ii@x-uM\njKUh\$oJϤ!L\"#p7\0 P\0D\$ GK4e\$\nG?3EAJF4Ip\0F4@9\0TGB7-G:8qХ OXFQ,\"9p*66A',yIFRT\"HR!j#kyFezG\0paJ`Ci@T|\nIxK\"*Tk\$cƔaAh!\"E\0OdSx\0T \0!F\nU|#S& IvL\"\$hEAN\$%%/\nP1{) <L-R16<@O*\0J@qԪ#@ǵ0\$t|]`ĊA]PᑀCp\\pҤ\07@9bmroC+]Jrf\r)d^hI\\. g>8'HfrJ[ro.v##yR+y^F\0᱁]!ɕޔ++_,\0<@M-2WR,ce2*@\0P ca0\\PO`I_2Qs\$w=:z\0)`h\nJ@@ʫ\0 6qT4J%N-m.ɋ%*cnN6\"\r͑fApMۀI7\0M>lO4S 7c\"ߧ\06psy. RKPAo1FtIb*<@7˂p,0N:Nm,xO%!vgz(MI ~yh\0U:OZyA8<2us~lEO00]'>ɍ:;/w'~3GΖ~ӭc. vT\0ct';P\$\$-se|!@dObwc'@`P\"x0O5/|U{:bR\"0шk`BD\nkPc4^ p6S`\$f;7?ls߆gD'4Xja AE% 86b:qr\r]C8cF\n'ьf_9%(*~iS@(85T[Jڍ4Il=Q\$dh@D -!_]HƊk6:\\M-\rFJ>\n.qeG5QZ' ɢہ0zP#rtˎ:Z>L`nض7VLZueXBBZ`;J]S8f \nڶ#\$jM(ޡaG+A!xL/\0) C\nW@4۩ RZ=8`8~hP \r D-FyX+fQSj+X|9-sx+Vcbp쿔o6Hq@.l8gYMWMPUYL3PaH29:a`d\0&YY0٘S-%;/TBSP%f@F(֍*q +[Z:QY\0JUY֓/pkzȈ,𪇃jꀥW״eJFVBI\rpFNقֶ*ը3k0D{`qҲBqeDcVEnFGE>j0ga|Sh7u݄\$;a7&R[WX(q#Pזc8!HVXĎjZQ,DUaQX0ըGblBt9-oZLpˇx6&MysҐ\"̀RIWU`c}l<|~w\"vI%r+R\n\\][6&ȭaӺj(ړTѓC' '%de,\nFCэe9CNЍ-6UeȵCXV+R+3BڌJ虜T2]\0Pat29(i#aƮ1\"S:oF)kfЪ\0ӿ,wJ@Vq.e}KmZXnZ{G-ZQ}6ɸ_Չ\n@7` C\0]_ ʵ}GWW: fCYk+b۶2S, ڋ9\0﯁+WZ!e2k.Oc(v̮8DeG`ۇL,d\"CB-İ(pp=!k}(Bkr_Rܼ08a%ۘL \0b@\"r,0TrV>Q\"rP&3bP-xuW~\"*舞Nh%7KY^ACp\0..`c+ϊGJHEl@|I#AcD|+<[c2+*WSi݀!`f8(cQ=f\n2ch4+q8\naRB|Rm\\qgXώ0X`nFO pHCjdfEuDVbJɦ:\\!mɱ?,TIaaT.L],J??FMct!a٧RFG!Arr-pX\rC^7&R\0f*A\n՛HyY=l˂-BhkR`-awxEjr8\0\\\\Uhm (mH3̴Sq\0NVhHy 5M͎e\\g\nIP:Sjۡٶ<x&L;nfͶcq\$f&li0%yΞt/gU̳d\0e:hZ ^@1m#Nw@OzG\$m66}ҋX'Ii\\QY4k-.:yzH]xG3M\0@z76-DO34ދ\0Κΰt\"\"vC\"JfRʞku3M~5V j/3@gG}DBNq=]\$IӞ3x=_jX٨fk(C]^jMFաϣCzV=]&\rA< 6Ԯ״`jk7:g4ծYZqftu|hZ6i〰0?骭{-7_:ސtѯck`Y&IlP`: j{h=f [byʀoЋBRSB6^@'41UDq}N(X6j}c{@8, PFCB\$mvP\"LCS]ElUfwh{o()\0@*a1G (D4-cP8N|RVMn8G`e}!}p@_nCt9\0]us~r#Cnp;%>wunwݞ.[hT{值 ˁJƗiJ6O=EٴImV'@&{;op;^6Ŷ@2lNMr_ܰÍ` ( y67ǂ7/pe>| =]oc&xNm烻oGN pxýy\\3'I`rG]ľ7\\749]^p{qA:bY@8d>r/)B4(`|:t!?<@/SP\0>\\ |3:Vuwx(4ZjD^L'C['jº[E u{KZ[s6S1z%1cB4B\n3M`0;3.&?!YAI,)lW['ITj>FSBбPcanjuNH LS0Y`\"il\rB/%PNG0JX\n?a!3@MF&ó,\"lb:KJ\r`k_bAį1I,;B,:Y%J#v'{ wx:\ni}ceN`!w\0BRU#S!<`&v<&qO+ΣsfL9QBʇb_+*Su>%08@l?L1po.C&ɠBqhz\0`1_9\"!\$~~-.*3r?òds\0>z\n\001~J|Sޜk7g\0KԠdaPg%wDzm)j`kQ^1+>/wbGwOk_'-CJ7&E\0L\r>!q́7o`9O`+!}P~ENcQ)##Jz_u{K%\0=OX߶C>\n|w?FaϩUb NYh/)G2K|y/\0Z{PYG;?Z}T!0=mNf\"%4a\"!ޟ\0}[ܾbU}ڕm2/t%#.ؖseBp&}[˟7W/[qk~CӋ4G:XGr\0L%VFLUc䑢HybP'# \0п`99~_0q5K-E0bϭt`lmbƘ; ,='S.bSCcʍAR,X@'8Z0&Xnc<<ȣ3\0(+*3@&\r+@h, \$O\0Œt+>bʰ\r><]#%;NsŎ*c0-@L >Yp#-f0ʱa,>`P:9oovR)e\0ڢ\\\nr{îX:A*.D7#,N\rEhQK2ݩz>P@ T<=:XGJ PϐW>KOV/U\n<\0\nIk@㦃[Ϧ²#?%.\0001\0k`1T ɐlp< .>5\0 O>k@Bn<\"i%>z3P!\r\"\r >adU?ǔ3Pj3䰑>;>t62[M\r>\0PBOe*Rny; 8\0o0i3ʀ2@?x[Law\nsAx\r[a6clc=ʼX0z/>+W[o2)e2HQPDYzG4#YDp) Hp&4*@/: T aH5h.A>`;.Ya t/ =3BnhD?(\n!Bs\0D&DJ)\0jQyhDh(K/!>h,=tJ+S,\"MĿN1[;Т+#<IZğP)LJDP1\$Q>dOv#/mh8881N:Z0ZT BCq3%@\0\"XD 3\0!\\8#hvibT!dV\\2SŒ\nA+ͽpxiD((<*+ETBSCȿT eA\"|uv8T\0002@8D^oo|NJ8[3Jz׳WL\0\0Ȇ8:y,6&@ Eʯݑh;!f.B;:[Z3nȑAqP4,Xc8^`׃l.ShޔO+%P#Ρ\n?IBeˑO\\]6#۽(!c)N?EB##D DdoPA\0:nƟ` Q>!\r6\0V%cbHF)m&\0B2I5#]D>3<\n:ML9C0\0(ᏩH\nM\"GR\n@`[\ni*\0)u)Hp\0N \"N:9q.\r!J{,'4BlqXc4N1ɨ5Wm3\nF`'Ҋx&>z>N\$4?(\n쀨> ϵP!Cq͌pqGLqqGyH.^\0z\$AT9FsЅD{acc_Gz) }QhHBָ662hJ7{nq8H#cH#\r:78܀ZZrD߲`rG\0l\nIi\0<\0Lg~E\$P\$@PƼT03HGHlQ%*\"N?% \nCrWC\$p%uR`%R\$<`Ifx\$/\$\$O(\0\0RY*/ \rܜC9&hh=I'\$RRI'\\a=Eu·'̙wI'TK9%d!j&v̟\\=<,E`Y\\*b0>r,dpd0DD ̖`,T 1% P/\rb(JT0``ƾJtʟ((dʪh+ <Ɉ+H%i#` 'B>tJZ\\`\$l\0+}-tͅ*R\$ߔK.JHʉ2\rB(P6\"nf\0#Ї %\$[\nnoLJe'<1KyY1s0&zLf#Ƴ/%y-ˣ3-KL0[,̵,0(.D@2L+.|2(L*S:\03G3laːl@L3z4ǽ%̒L3!033=L4|ȗ+\"47,\$SPM\\?JY̡+(a=K4C̤<Ё=\$,UJ]5hW&tI%5ҳ\\M38ǵ5HN?W1H^ԸY͗ؠ͏.N3M4Å`i/P7dM>d/LR=K60>I\0[\0\r2Z@1279FG+Ҝ\r)hQtL}8\$BeC#r*H۫-H/6\$RC9ب!7k/P0Xr53D?7O;ܠ`OA9ϻ\$O;`9nIAxpE=O<52O?d`NiO>3P ?OmSMˬ=(dAȭ9\0#@9D&?i9\n/AȭASPo?kuN5~46=*@(N\0\\۔dGp#>0\$24z )`W+\080菦z\"T0:\0\ne \$rM=r\nNPCmt80 #J=&3\0*B6\"#> (Q\n81C\rt2EC\n`(x?j8N\0[QN>'\0x c\n3Ch`&\08\0\nO`/A`#XcD tR\n>dBDLDt4jpGAoQoG8,-sK#);E5TQG4Ao\0>tMD8yRG@'PC RgIQJU)EmTZE'iEqFzA>)TQ3H#TLqIjNT&ChX\nTK\00005JH\0FE@'љFphS5F\"oѮe%aoS E) DUQFmѣMѲe(tn U1ܣ~>\$ǂ(hǑGy`\0 G35Sp(PG\$# N\nV\$]ԜP=\"RӨ?Lzt1L\$\0G~,KN=GMNS)O]:ԊS}81RGe@C\0OPSN1T!P@SSG`\n:Pj7R @3\n DӠL \0Q5CPSMPv4?h hTD0֏>&ITxO?@UR8@%ԖKNKRyEE# @%LQQ?N5\0R\0ԁTFԔRS!oTEC(ĵ\0?3iSS@UQeM K\n4PCeS\0NCPO!\"RTSNU5OU>UiIPU#UnKPUYT*CU/\0+):ReA\$\0xWD3`U5IHUY:P e\0MJiQ>@TC{u?^v\0WR]U}C1-5+U?\rW5JU-SXL \\t?sMbՃV܁tT>MU+ Ec9Nm\rRǃC8SX'RXjCI#G|!QGhtQ )gչTVoUTZN*T\\*S-pSVqM(Q=\\-UUUVCZ\nuV\$?M@UWJ\r\rU\\'UW]WW8N'#h=oCF(:9YuV-U9]C:U\\\nqW(TT?5P\$ R3⺟C}`>\0E]#R #R)W:`#G)4R;ViD%8)Ǔ^Q#h HX \$Nx#i xԒXR'9`m\\\nEQ`bu@NdT#YYGV]j5#?Lxt/##酽OPQ6^ M\\R5tӚp*XV\"WD oRALm\rdGN 6p\$P废E5Tx\n+C[V8UDu}ػF\$.Q-;4ȀNX\n.Xb͐\0b)#NG4KZS^״M8d\"C>dHe\nY8. ҏFDW1cZ6QKH@*\0^\\QF4U3Y|=ӤEۤ?-47YPmhYw_\rVeױMُe(0F\r!PUIu7QCю?0gu\rqधY-Q=g\0\0M#US5Zt֟ae^\$>ArV_\r;tHWZ@HhzD\0S2J HIO'ǁeg6[R /KM\n>HZ!iTX6iC !ӛg G }Q64>w!ڙC}VB>UQڑj8cUT'<>HC]V7jj3v`023x@Uk\n:Si5#Y-wM?cMQGQуb`\0@ҧ\0M)ZrKX֟WllTMD\r4QsS40sQ́mYhdC`{VgE\nXkՁ',4^6#<4NXnM):OM_6d[\"KUn?lx\0&\0R56T~>ո?Jn Z/i6glͦUF}.JLCTbM4cLTjSD}JtZ:Ld:Ezʤ>V\$2>[p6R9uW.?1RHuR?58ԮDupcZ?r Eaf}5wYϒWwT[Sp7'_aEk\"[/i#\$;mfأWOF\r%\$ju-t#<!\n:KEA]\nUQKE#X5[>`/D֭VEp)I%qnx):le[e\\eV[j7 -+GWEwtWkE~uQ/m#ԐW`yuǣDA'ױ\rՙOD )ZM^u-|v8]ghLW\06X=YdQ7ϓ9r <֏DB`c9`D=wxI%,ᄬj[њO ``|. AO @@ 0h2\\ЀM{e9^>@7\0˂W\$,Ś@w^fm,\0yD,ם^X.ֆ72f;6\n^zCקmzn^&LFF,[eaXy9h!:z9cQ9b !Gw_Wg9S+tptɃ\nm+_ \\k5]4_h9 N]%|7֜];|X9|G[\0}UMCI:qOVԃa\0\rR6π\0@HP+rSWp7I~p/H^E-%̻&.+Jђ;:!N ~/W!BL+\$q=+`/Ƅe\\xpElpSJSݢ6_(ůb\\O&\\59\09nD{\$Kv2 d]vC?tf|W:p&Ln賞{;GR9T.yI8\rl Tn3T.93ZsG: 0z.]ģQ?gT%xՌ.n<-8B˳,BrgQɎ`2:{gsgZ <w{bU9 `5`4\0BxMp8qnah@ؼ-(>S|038h\0CzLQ@\n?`A>2,N&xl8sah1|BɇDxB#VV`Wa'@ X_?\n _. Pr2bUarI~S\0ׅ\"2>b;vPh{[7a`\0˲jo~v|fv4[\${P\rvBKGbpO5ݠ2\0jلL)mVejBB.'R{CV'` %ǀ\$O\0`4 N>;4/π*\\5!`X*%N3SAMƔ,1\\caϧ @˃B/0`v2`hDJO\$@p!9!\n17pB,>8F4fπ:733T8=+~n\\e 6ONn!;@tw^FL;,^a\ra\"ڮ':vJe4א;_d\r4\r:S2[cXʦPl\$ޣiwd#Bb`:~ <\02RP\rJ8Dt@E\0\r͜67Y\"\r3.+z3;_ʟvLwJ94IJa,A;s?N\nR!ݐOms_-zۭwzܭ7zMo\0aݹ48PfY?ieBS1\0jDTeKUYS?66R c6Ry[c5]B͔R_eA)&[凕XYRW6VYaeUfYewUbwEʆ;z^W9קݖ\0<ޘe9Sda _-L8DžQTH[!Aa\ry0iJ}z:\r)S@h@YmCEgcyφ&F)}biOi:dAnc=L9Oh{ 8hY.\rև1QU CheO+2oNzp(]hZ|OczD;T\0j\08#>Ύ=bZ8Fj;T酡w)N`ÅB{z\rc|dTGi/!i0'`Z:CH(8`V\0ꧩWǪzgG-[ iN\rqno ƥfEJapb}6=o,tY+EC\rPx4=@.F[zqX6:FG#\$@&abhE:`S11g12uhY_:Bߡdc*\0ƗFYF:n=ۨH*ZMhk/냡zٹ]h@1\0ZK^+,vfs>O|s\0֜5XѯFnAr]|Ii4 C h@عcߥ6smOgXV26g?~YѰscl \\R\0cA+1\n(^368cz:=z( ;裨sF@`;,>yT&dLן%-CHL8\rbMj]4Ym9ZBP}<X̥+g^M + B_FdXlw~\r⽋\":qA1X3ΓEh4ZZ&1~!Nfo\nMeXI΄G@V*X;Y5{V\nTz\rF3}mp1[>tew@Vz#2 i{9p̝gh+[elUAٶӼi1!omm*K}!Ƴ{mef`mCz=n:}g TmLu1F}=8ZOmFFMfOO/ޓVoqjn!+ZI.9!nG\\3a~O+::K@\n@Hph\\BdmfvCP\" .nW&nHY+\rzi>MfqۤQc[H+o*1'#āEwD_X)>s-~\rT=- ym{hjM)^'@V+i;FD[b!B :MPۭoCvAE?CIiY#pP\$kJq.07xlsC|bo2X>M\rl&:2~cQod-URoYnM;n#\0PfPo(Cv<[o۸fѿ;ẖ[Y.oUppU.B!'\0@DY`o<>pķq,Y1Q߸/qg\0+\0D? k:\$ץ6~I=@!vzO+9iag?0Gnq]{Ҹ,FO <_>f+, &·yǩO:U¯L\núI:2-;_Ģ|%崿!f\$Xr\"Kni\$8#gt-r@L圏@S#3268sh٠ƑI1Sn20-42As(4˶\0#rK'ͷG'7&\n>xJGO8,08\0W9I?:3n\r-w:;3ȉ!;ꃘZRM+>0/=R'148m%ȥ}χ9;=nQ=hhLGkW\r %4ҜsΖJ3s4@U%\$N;?4N2|Z3h\035^xi2d\r|Mʣbh|#v` \0ꐮ\$\r2h#?I\n+o-?6`ṽ.\$KY%J?cRN#K:KEL>:@jPn_t&slm'ЩɸӜ;6ۗHU5#Q7UWYU bNW_;TC[<ږ>WCU6X#`MI:tӵ u#`fu\$tX`f<;bgh97S58#^-\0չR*'(qZ壣XQFUvW GWTW~ڭ^WJ=_ؗbmbV\\l/MTmTOXu=_ITvvua\rL_qR/]]msu=H=ug o\\UՅgM XVU%h53U\\=QMvgmuehbMGCeO5ԁO5Yi=e GTURvOa*ivWXJ5NUdk5hPmu[\0_[Y-r(CrMeJ!h?QrX3 x#x<{u5~-uYyQ\r-\0uգuuٿpUڅ)P\rU7mӂz=1+mI,>X7].* ^N./\") s|ӟl}!5npjh}mEzHaO0d=A|w߳uvGx#bcSo-tOm`C^M@hn\$k``HD^PE[]rRm=.ه>Ayi \" o-,.\nq+fXd*߽K' %a9pKLM!,zX#VuH%!63JryՁq_u W|@3b17|~wﱳA7 9cS&{%VxkZOwUr?N |C#Űկ /9ftEwCa^\0O9GjczA͎:an0bJ{o!3!'K}\\3W5xL;2ζna;Xӛ]ox{5ޙjXvӚqEE{р4{ \n>aﯷL'{\n>JߌӗY\rOʽt-O49F;GIF1oOa{w0Ư;loJTb\rw2J=D#n:yS^,.?(I\$Ư3s4MaCRG̑I߰n^\\{n\\7ٟic1hoo?j[WX{qaϤ.&N3]HY[&8?3݆#Be6@[G\r+}_7|N4~(z~%?[1S]xkKxO^ArZ+*WkwD(R:\0'm!O\nu.[ P!}m 1pu,TL 0}&P٥\n=D=\rA/o@2t6DK\0q7lB(;[kr\r;#lŔ\r<}zb+O[WrX`Z ţPm'FnSp-\0005`dPǾ;n\05fPEJw .?;Nޥ,;Ʀ-[7ei-dَ<[~6k:&.7]\0/59 @eT:煘3dsݝ5䏜5f\0PHB8JLS\0vI\07Dma3e?B\$.Ef@nbGbq3|PaˈϯX7Tg>.p5AHŵ3S,@#&w3m[Iѥ^̤J1?gTၽ#S=__ Vq/C۾݀|D g>܄ 6\r7}qŤJGB^\\g&%[2Ixì6\03]3{@RUMv<1szuP5F:i|`qV| \nk}'|gd!8 <,P7m||IA]BB F0X D`WqmOL .(pҁ\"!\0AV7kM\$N0\\\"f\0uq,5A6p\nΐjY7[pK4;l5n@\\fl MP3CHbЌcEpP4eooe{\r-2.֥P50uG}\0<\r!~\n7Fd>a%c6ԞM|dO_?JC0>Ё&7kM4`%flΘB~wxZGP20=*p@BeȔ|2\r?q8Њ(yr0>>E?w|r]%Av@+XAgsCAXmNҝ4\0\r8JJǸDҚ:= S4F; \\&P!6%\$ixi4c0B;62=1̈PCmdpc+5\$/rCR`MQ6(\\2A\\lGl\0BqPrBт_6Ll!BQIGXRbs]BHr`X\$p8 nbR,±L\"E%\0aYBsD,!ϛpN9RbG4MtjUy\0%\$.iL!xғ(.)6T(Ia%K]mt&G7ITMB\rza])va%41Tj(!\\\\W\\t\$0%\0aK\$TF(YC@HHnDdWphZ'ZC,/\$JFBuܬQ:ΥA:-a#=jblUg;{RUEWnUaVNjuG*yֹ%@*Yx_z])v\"RLVIv=`'U) S\r~R\ni)5SD49~b;)3,9M3HsJkTÜ(uJ][\$ufob\n.,Yܵ9j1'!1\$Jgڤ՟ĆU0ZuahcH,YtKb55/dYAU҅[W>_V\r*j-T zYdcmҹ:[Ut-{l i+a).[_:5hW§m%JI[Th>;X̺dSdV;\rƱ!NK&AJu4Bdg.Vpmb)V!U\0G丨`\\q7QbVL:ՂZ.N*ԏU]ZlzR D1I£r:\0<1~;#JbMy+۔/\"ϛj<3#̌:P.}eD\"qyJGsopX\rd\rxJ%ƼO:%yy,%{3\"-:FIك*@ԟyT\\UY~3Df,s8HV't9v(:B9\\Z(&E8W\$X\0\n9WBb66j9 ʈ?,| ag1\nPs\0@%#K\r\0ŧ\00?š,\0hh\08\0l\0-ZjbŬ\0p\0-f`ql0\0i-\\ps7e\"-ZlbE,\0]P Eb\0/,Z\r\0000[f-@\rӯEڋ/Z8~\"ڋ.^Qwϋ\0/t_ȼE\00d]bŤ|\0\\ؼE\0af0tZnJ\0l\00L^Qj@J^q#F(1/[1I.^8\0[q[Ñl\" \00,d\rc{cE\0o0]\0\rc%ۋ8wZ-\\{G/\\bp@1\0a1s!Ũ//]8~c\"ۋ2cΑm\"9q/\\^fQ~c_-\$i\"\0003fXqx#\09Z.i@F3tZH \rcKb\0j/Dj1IhavƩOZ4Zт#YE\0i.hHsX/F<.jb\0mV/d\\bE3T^(шcKFR]Xq6]hc6Eċ66hn\0005sn/dn`\r\"F-D`ՑN2Ybx#\\닇V3x1xFx\06bq!8|^ub-rq:%0pp#\06fǢŬd0qH\$@q-^B4\"\081/lnxϑG3:0tjh~@Ƽ3vHbG(e4gغq21-nX\"F4i\n<{㑍ƉJ;]1#0J;4^DǮ4i(H#Ex/n1/ǡj6,l1t/\0005%0]xGG5!0rq2ޑNFPo\"4_1d%e 3s8G5 6[HcHjY;[辑b! y@\\q#WHN;cQ:-%.kXƑG͌1DfߑcWFl!0c Eܐ;lq\"F7\\\\Oq.T|\"?Ef9TyYѩSG1A\$f9R\n\"x>BHߤ\0:\$e1F?=3Tu)\nqb~Y4^QjcK1\"8|6c\"B\"b4%G\0e\"/t1r1e!v2y<Ǡ8\\oђ#tѐ\rz@}Hby 1\\deGZ3~r)1ȿBl~H:dF-?k8qc(F͋K5|myc1<*@j1ž>IZQj2\$0hQVFT \$Al~qڣȱ\$>\\p\rq\$/u%!Jq \$tEGN-Tq)\"Hʌ=X2-H8\\nRW\$H\"C\\_\0d\$f\".Du 'QzE&0toqjƿR@du##LLk*q\$*Gđi@TilE5r\\dI\"/Z0j\$Tz5Ld3o.Tq!1{9ZQbFwJ94n{(-82hu;\$-DkrsH#Y7\"/E \$j^-]7[\"N\$W/]\$+1Ga/&IDn@\$!\$-k!Q)(N/\$tOKzPtX[\0Gw(*K\$v1c'G̞Ixd\nA8\\rXaIiNI%\$_6fQ#I5#Fغ#E⒕\"3\$IcHvR|QcE:RehEΏfK`8r.#Es0LRF!\nC\$`\$H?nPe!@F'/%N,hrF\$3tҀ!1µa-'U%w*#>@̬eJ;Pw/+5E\rjnd^[cΰuz\\ؐ1mi\"xp;P)#ؒ!A; 4a{`aV{KU8㨟0''o2yc̸9]K@җ^lBOr,du8?%gBYn+%ce\0ऱYr@f(]ּ\nbiznSS2GdBPj@(ȥ!-ve*c\04J炒,U dej'TH]ԊG!)u֯үZB5̓W0\nRW\\Q j^r%l3,Yyf3&Q:ϵ2mR)T(KR0ʔ@YY:e3\r%T%XST.J\\0hąD!:uU\"Ło+7\"f'R\0J2S2#nm I劜\"X[ր} Jc9p0Q(U\0xDEW.L=ti'Gl%\08VBU1ye\0KT4mV2)\r]I/\rFXߨaG¹*>ERZ-)I\$:a\0Fybagw(_@v}iʳS^25DԳ UROJH\\isfKNqiSgO\nF~|*@gR_Q<9sܬ3i+ؗ.Cw|y6aOY9ɖ\nԽ-([_}S]cS=YU-><\n\\ZY췢wEJ%sLdy+\rCߡ'Al,y3͗` _*P ThKDV~5 0+,-?]3֍K`^I42(]w.r]\nYƨB }ЋR g}:HJWP\"V\\ >ܬ݆=:\n0\\+SfUU,WCֈOn΅.e9|RI'[/2QBn:I\ng9\r,R6Q\$X+>`\n)/_8Qi=v?5v\0 \nLGDmw\\FѢdꟵ}s\"Yv|J*9h@XEU*(oQ]\$B,KTvAptCɃ\nC,/<ڙEW-VP=W*%K-Q`9 (59Ӏm)X@2T@\nSbdEδa+DX|U F 2%5\njmW+xKV3#CTek&,ljbd7)ӓ\"\n+PbI@3ܵjUEs)Df뒃PZ3AΌ\nwTh𗲪ۘ4Z+J[6J\0֗\\,K3.]a_\0RJ Ɨ`^ԶClRIK\n\$nŏKj\n~/mn].`ij#Kf:`\0錀67K▨zc\0/K/dFE\0aLdZ`JSʙ24@/(L0`ĩ_L]4ZhЩSDM4:cSRME4iSGEMj4zdթSFKL%4e%\$lKM21ڔiMV.ڔiLz/ۣӄM,`_imSgMƜjg59.9j_S.9_S.7r)%[2m8uTS3M:]3qnӱKN1|^kt\"HgKj-;zciӚ\r<_-iӸ\"֞U.iRڑkOF=:\\\$ZөMLE5xӻ_\"֜=<\0tS9OҞ1~iO>~q)F=6:~JP:=T)ƫPJ8@w*O5]>tT\n!\"6Y )H/P3 /P~ Ӯ!\"Cj eNJ*%41QCZQjTBQ.\rE)\0004\$2SM+gSD5MRHwU\"K8RڌU*-U*n¾TIR,tZYIUF51W)vk_KƫpJ5ZjůR4r\n^jICK}Uʓ_ԛO=NR*F-R%Wc\\aV>EYjdëUάWX5*ՋUyZ1kը7VR\\H5h*UUƧM[kvո3V}[(5WzոiBO1TV;[pRGu;T@0>\0/IW`]\08P]1m*ǍyUzmW|ݓ[֯]JшUZ*5\\jZ`Z5~EW4Z5hQ^cXZS1oVU&T5}cU^Xdm*kUuSfG=[jsտXKc\niRHi#uWtXcĹUrڢUZՇNEX4udEeV^KnV8sX¥f/hJ-J]ӂzON\")]b +z.cS.iF QNQV*O[XnxP koN}gڜϦVTZjhYjkD*!h&Xzi+GV\"Z:Ҥ+NoGZjji]ʞkO_֬ԐmjIt#[j\rnnZ_,gĚ:9[L2W=T0f\0PU6\ns%7isY?u3nb5X|G~l&kMyS)]ܭrٸ?}u'n0W-ιbǪk?vQ7}p\nٮZ*9)5ޕZW-ZB:㫊W\0WZfpGpٮ:FpUSN/\\%s9S{ 8Zasۓ+N^9M{P5 QJy;zYV 3:DI+19M;V\rQ{ծ+FCLĹNԈ\\)\$iN'\0P]X^s1f&\"'`/fPEi\0kv\0fhS0&¦lͼ#fu5 i%:Fd9G< {}s[7\0Ξ3ft:+.Ȕp>ձ@!Pas6q,1bǬŋZK-ar`?RxX鑡V#Ĥz; DH16D`Y`RP>-!\$~π`>h01&\0hIwlZ\$\\\r8~,\no_B2Da1ǩ=v*Y\n\n![mj0,muW@ FX=(b@Wr!LHk\rE\nW\r'FH\$m=ۥ{LY&_\0#䔀[9\0\"@8iK0lp\ng'qbFycl@9(#JUݲ{io.{ͳ4V́VnFxz Qޞ\$kSa~ʨ0s@%y@5HNͦ@x# ܫ /\\?$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$g,$m,$dc,$lc,$vc,$n,$jd,$pd,$ba,$Od,$x,$ca,$je,$kf,$Vf,$Ah,$ud,$hi,$ni,$wi,$Ci,$ia;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$ba=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");$If=array(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$If[]=true;call_user_func_array('session_set_cookie_params',$If);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Uc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",15);function
-get_lang(){return'en';}function
-lang($mi,$bf=null){if(is_array($mi)){$Yf=($bf==1?0:1);$mi=$mi[$Yf];}$mi=str_replace("%d","%s",$mi);$bf=format_number($bf);return
-sprintf($mi,$bf);}if(extension_loaded('pdo')){class
-Min_PDO
-extends
-PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
-__construct(){global$b;$Yf=array_search("SQL",$b->operators);if($Yf!==false)unset($b->operators[$Yf]);}function
-dsn($ic,$V,$F,$sf=array()){try{parent::__construct($ic,$V,$F,$sf);}catch(Exception$_c){auth_error(h($_c->getMessage()));}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=@$this->getAttribute(4);}function
-query($G,$xi=false){$H=parent::query($G);$this->error="";if(!$H){list(,$this->errno,$this->error)=$this->errorInfo();if(!$this->error)$this->error='Unknown error.';return
-false;}$this->store_result($H);return$H;}function
-multi_query($G){return$this->_result=$this->query($G);}function
-store_result($H=null){if(!$H){$H=$this->_result;if(!$H)return
-false;}if($H->columnCount()){$H->num_rows=$H->rowCount();return$H;}$this->affected_rows=$H->rowCount();return
-true;}function
-next_result(){if(!$this->_result)return
-false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
-result($G,$o=0){$H=$this->query($G);if(!$H)return
-false;$J=$H->fetch();return$J[$o];}}class
-Min_PDOStatement
-extends
-PDOStatement{var$_offset=0,$num_rows;function
-fetch_assoc(){return$this->fetch(2);}function
-fetch_row(){return$this->fetch(3);}function
-fetch_field(){$J=(object)$this->getColumnMeta($this->_offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$J->charsetnr=(in_array("blob",(array)$J->flags)?63:0);return$J;}}}$dc=array();class
-Min_SQL{var$_conn;function
-__construct($g){$this->_conn=$g;}function
-select($R,$L,$Z,$md,$uf=array(),$z=1,$E=0,$gg=false){global$b,$x;$Vd=(count($md)selectQueryBuild($L,$Z,$md,$uf,$z,$E);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$z!=""&&$md&&$Vd&&$x=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($md&&$Vd?"\nGROUP BY ".implode(", ",$md):"").($uf?"\nORDER BY ".implode(", ",$uf):""),($z!=""?+$z:null),($E?$z*$E:0),"\n");$xh=microtime(true);$I=$this->_conn->query($G);if($gg)echo$b->selectQuery($G,$xh,!$I);return$I;}function
-delete($R,$qg,$z=0){$G="FROM ".table($R);return
-queries("DELETE".($z?limit1($R,$G,$qg):" $G$qg"));}function
-update($R,$O,$qg,$z=0,$M="\n"){$Oi=array();foreach($O
-as$y=>$X)$Oi[]="$y = $X";$G=table($R)." SET$M".implode(",$M",$Oi);return
-queries("UPDATE".($z?limit1($R,$G,$qg,$M):" $G$qg"));}function
-insert($R,$O){return
-queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES"));}function
-insertUpdate($R,$K,$eg){return
-false;}function
-begin(){return
-queries("BEGIN");}function
-commit(){return
-queries("COMMIT");}function
-rollback(){return
-queries("ROLLBACK");}function
-slowQuery($G,$Yh){}function
-convertSearch($u,$X,$o){return$u;}function
-value($X,$o){return(method_exists($this->_conn,'value')?$this->_conn->value($X,$o):(is_resource($X)?stream_get_contents($X):$X));}function
-quoteBinary($Sg){return
-q($Sg);}function
-warnings(){return'';}function
-tableHelp($C){}}$dc["sqlite"]="SQLite 3";$dc["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){$bg=array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite");define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(class_exists(isset($_GET["sqlite"])?"SQLite3":"SQLiteDatabase")){if(isset($_GET["sqlite"])){class
-Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function
-__construct($Tc){$this->_link=new
-SQLite3($Tc);$Ri=$this->_link->version();$this->server_info=$Ri["versionString"];}function
-query($G){$H=@$this->_link->query($G);$this->error="";if(!$H){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return
-false;}elseif($H->numColumns())return
-new
-Min_Result($H);$this->affected_rows=$this->_link->changes();return
-true;}function
-quote($Q){return(is_utf8($Q)?"'".$this->_link->escapeString($Q)."'":"x'".reset(unpack('H*',$Q))."'");}function
-store_result(){return$this->_result;}function
-result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
-false;$J=$H->_result->fetchArray();return$J[$o];}}class
-Min_Result{var$_result,$_offset=0,$num_rows;function
-__construct($H){$this->_result=$H;}function
-fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
-fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
-fetch_field(){$e=$this->_offset++;$U=$this->_result->columnType($e);return(object)array("name"=>$this->_result->columnName($e),"type"=>$U,"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
-__desctruct(){return$this->_result->finalize();}}}else{class
-Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
-__construct($Tc){$this->server_info=sqlite_libversion();$this->_link=new
-SQLiteDatabase($Tc);}function
-query($G,$xi=false){$Ne=($xi?"unbufferedQuery":"query");$H=@$this->_link->$Ne($G,SQLITE_BOTH,$n);$this->error="";if(!$H){$this->error=$n;return
-false;}elseif($H===true){$this->affected_rows=$this->changes();return
-true;}return
-new
-Min_Result($H);}function
-quote($Q){return"'".sqlite_escape_string($Q)."'";}function
-store_result(){return$this->_result;}function
-result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
-false;$J=$H->_result->fetch();return$J[$o];}}class
-Min_Result{var$_result,$_offset=0,$num_rows;function
-__construct($H){$this->_result=$H;if(method_exists($H,'numRows'))$this->num_rows=$H->numRows();}function
-fetch_assoc(){$J=$this->_result->fetch(SQLITE_ASSOC);if(!$J)return
-false;$I=array();foreach($J
-as$y=>$X)$I[($y[0]=='"'?idf_unescape($y):$y)]=$X;return$I;}function
-fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
-fetch_field(){$C=$this->_result->fieldName($this->_offset++);$Uf='(\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($Uf\\.)?$Uf\$~",$C,$B)){$R=($B[3]!=""?$B[3]:idf_unescape($B[2]));$C=($B[5]!=""?$B[5]:idf_unescape($B[4]));}return(object)array("name"=>$C,"orgname"=>$C,"orgtable"=>$R,);}}}}elseif(extension_loaded("pdo_sqlite")){class
-Min_SQLite
-extends
-Min_PDO{var$extension="PDO_SQLite";function
-__construct($Tc){$this->dsn(DRIVER.":$Tc","","");}}}if(class_exists("Min_SQLite")){class
-Min_DB
-extends
-Min_SQLite{function
-__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
-select_db($Tc){if(is_readable($Tc)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$Tc)?$Tc:dirname($_SERVER["SCRIPT_FILENAME"])."/$Tc")." AS a")){parent::__construct($Tc);$this->query("PRAGMA foreign_keys = 1");return
-true;}return
-false;}function
-multi_query($G){return$this->_result=$this->query($G);}function
-next_result(){return
-false;}}}class
-Min_Driver
-extends
-Min_SQL{function
-insertUpdate($R,$K,$eg){$Oi=array();foreach($K
-as$O)$Oi[]="(".implode(", ",$O).")";return
-queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($K))).") VALUES\n".implode(",\n",$Oi));}function
-tableHelp($C){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if($C=="sqlite_master")return"fileformat2.html#$C";}}function
-idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
-table($u){return
-idf_escape($u);}function
-connect(){global$b;list(,,$F)=$b->credentials();if($F!="")return'Database does not support password.';return
-new
-Min_DB;}function
-get_databases(){return
-array();}function
-limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z".($D?" OFFSET $D":""):"");}function
-limit1($R,$G,$Z,$M="\n"){global$g;return(preg_match('~^INTO~',$G)||$g->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($G,$Z,1,0,$M):" $G WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$M."LIMIT 1)");}function
-db_collation($l,$ob){global$g;return$g->result("PRAGMA encoding");}function
-engines(){return
-array();}function
-logged_user(){return
-get_current_user();}function
-tables_list(){return
-get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
-count_tables($k){return
-array();}function
-table_status($C=""){global$g;$I=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$J){$J["Rows"]=$g->result("SELECT COUNT(*) FROM ".idf_escape($J["Name"]));$I[$J["Name"]]=$J;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$J)$I[$J["name"]]["Auto_increment"]=$J["seq"];return($C!=""?$I[$C]:$I);}function
-is_view($S){return$S["Engine"]=="view";}function
-fk_support($S){global$g;return!$g->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
-fields($R){global$g;$I=array();$eg="";foreach(get_rows("PRAGMA table_info(".table($R).")")as$J){$C=$J["name"];$U=strtolower($J["type"]);$Rb=$J["dflt_value"];$I[$C]=array("field"=>$C,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~'(.*)'~",$Rb,$B)?str_replace("''","'",$B[1]):($Rb=="NULL"?null:$Rb)),"null"=>!$J["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$J["pk"],);if($J["pk"]){if($eg!="")$I[$eg]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$I[$C]["auto_increment"]=true;$eg=$C;}}$sh=$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$sh,$_e,PREG_SET_ORDER);foreach($_e
-as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($I[$C])$I[$C]["collation"]=trim($B[3],"'");}return$I;}function
-indexes($R,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$sh=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$sh,$B)){$I[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$_e,PREG_SET_ORDER);foreach($_e
-as$B){$I[""]["columns"][]=idf_unescape($B[2]).$B[4];$I[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$I){foreach(fields($R)as$C=>$o){if($o["primary"])$I[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$vh=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$h);foreach(get_rows("PRAGMA index_list(".table($R).")",$h)as$J){$C=$J["name"];$v=array("type"=>($J["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$h)as$Rg){$v["columns"][]=$Rg["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$vh[$C],$Bg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Bg[2],$_e);foreach($_e[2]as$y=>$X){if($X)$v["descs"][$y]='1';}}if(!$I[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$I[""]["columns"]||$v["descs"]!=$I[""]["descs"]||!preg_match("~^sqlite_~",$C))$I[$C]=$v;}return$I;}function
-foreign_keys($R){$I=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$J){$q=&$I[$J["id"]];if(!$q)$q=$J;$q["source"][]=$J["from"];$q["target"][]=$J["to"];}return$I;}function
-view($C){global$g;return
-array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',$g->result("SELECT sql FROM sqlite_master WHERE name = ".q($C))));}function
-collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
-information_schema($l){return
-false;}function
-error(){global$g;return
-h($g->error);}function
-check_sqlite_name($C){global$g;$Jc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Jc)\$~",$C)){$g->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Jc));return
-false;}return
-true;}function
-create_database($l,$d){global$g;if(file_exists($l)){$g->error='File exists.';return
-false;}if(!check_sqlite_name($l))return
-false;try{$_=new
-Min_SQLite($l);}catch(Exception$_c){$g->error=$_c->getMessage();return
-false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
-true;}function
-drop_databases($k){global$g;$g->__construct(":memory:");foreach($k
-as$l){if(!@unlink($l)){$g->error='File exists.';return
-false;}}return
-true;}function
-rename_database($C,$d){global$g;if(!check_sqlite_name($C))return
-false;$g->__construct(":memory:");$g->error='File exists.';return@rename(DB,$C);}function
-auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){$Ii=($R==""||$bd);foreach($p
-as$o){if($o[0]!=""||!$o[1]||$o[2]){$Ii=true;break;}}$c=array();$Cf=array();foreach($p
-as$o){if($o[1]){$c[]=($Ii?$o[1]:"ADD ".implode($o[1]));if($o[0]!="")$Cf[$o[0]]=$o[1][0];}}if(!$Ii){foreach($c
-as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
-false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return
-false;}elseif(!recreate_table($R,$C,$c,$Cf,$bd))return
-false;if($La)queries("UPDATE sqlite_sequence SET seq = $La WHERE name = ".q($C));return
-true;}function
-recreate_table($R,$C,$p,$Cf,$bd,$w=array()){if($R!=""){if(!$p){foreach(fields($R)as$y=>$o){if($w)$o["auto_increment"]=0;$p[]=process_field($o,$o);$Cf[$y]=idf_escape($y);}}$fg=false;foreach($p
-as$o){if($o[6])$fg=true;}$gc=array();foreach($w
-as$y=>$X){if($X[2]=="DROP"){$gc[$X[1]]=true;unset($w[$y]);}}foreach(indexes($R)as$de=>$v){$f=array();foreach($v["columns"]as$y=>$e){if(!$Cf[$e])continue
-2;$f[]=$Cf[$e].($v["descs"][$y]?" DESC":"");}if(!$gc[$de]){if($v["type"]!="PRIMARY"||!$fg)$w[]=array($v["type"],$de,$f);}}foreach($w
-as$y=>$X){if($X[0]=="PRIMARY"){unset($w[$y]);$bd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$de=>$q){foreach($q["source"]as$y=>$e){if(!$Cf[$e])continue
-2;$q["source"][$y]=idf_unescape($Cf[$e]);}if(!isset($bd[" $de"]))$bd[]=" ".format_foreign_key($q);}queries("BEGIN");}foreach($p
-as$y=>$o)$p[$y]=" ".implode($o);$p=array_merge($p,array_filter($bd));if(!queries("CREATE TABLE ".table($R!=""?"adminer_$C":$C)." (\n".implode(",\n",$p)."\n)"))return
-false;if($R!=""){if($Cf&&!queries("INSERT INTO ".table("adminer_$C")." (".implode(", ",$Cf).") SELECT ".implode(", ",array_map('idf_escape',array_keys($Cf)))." FROM ".table($R)))return
-false;$ti=array();foreach(triggers($R)as$ri=>$Zh){$qi=trigger($ri);$ti[]="CREATE TRIGGER ".idf_escape($ri)." ".implode(" ",$Zh)." ON ".table($C)."\n$qi[Statement]";}if(!queries("DROP TABLE ".table($R)))return
-false;queries("ALTER TABLE ".table("adminer_$C")." RENAME TO ".table($C));if(!alter_indexes($C,$w))return
-false;foreach($ti
-as$qi){if(!queries($qi))return
-false;}queries("COMMIT");}return
-true;}function
-index_sql($R,$U,$C,$f){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $f";}function
-alter_indexes($R,$c){foreach($c
-as$eg){if($eg[0]=="PRIMARY")return
-recreate_table($R,$R,array(),array(),array(),$c);}foreach(array_reverse($c)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
-false;}return
-true;}function
-truncate_tables($T){return
-apply_queries("DELETE FROM",$T);}function
-drop_views($Ti){return
-apply_queries("DROP VIEW",$Ti);}function
-drop_tables($T){return
-apply_queries("DROP TABLE",$T);}function
-move_tables($T,$Ti,$Qh){return
-false;}function
-trigger($C){global$g;if($C=="")return
-array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$si=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$si["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$g->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$df=$B[3];return
-array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($df?" OF":""),"Of"=>($df[0]=='`'||$df[0]=='"'?idf_unescape($df):$df),"Trigger"=>$C,"Statement"=>$B[4],);}function
-triggers($R){$I=array();$si=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$J){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$si["Timing"]).')\s*(.*)\s+ON\b~iU',$J["sql"],$B);$I[$J["name"]]=array($B[1],$B[2]);}return$I;}function
-trigger_options(){return
-array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
-begin(){return
-queries("BEGIN");}function
-last_id(){global$g;return$g->result("SELECT LAST_INSERT_ROWID()");}function
-explain($g,$G){return$g->query("EXPLAIN QUERY PLAN $G");}function
-found_rows($S,$Z){}function
-types(){return
-array();}function
-schemas(){return
-array();}function
-get_schema(){return"";}function
-set_schema($Vg){return
-true;}function
-create_sql($R,$La,$Bh){global$g;$I=$g->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$v){if($C=='')continue;$I.=";\n\n".index_sql($R,$v['type'],$C,"(".implode(", ",array_map('idf_escape',$v['columns'])).")");}return$I;}function
-truncate_sql($R){return"DELETE FROM ".table($R);}function
-use_sql($j){}function
-trigger_sql($R){return
-implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
-show_variables(){global$g;$I=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$y)$I[$y]=$g->result("PRAGMA $y");return$I;}function
-show_status(){$I=array();foreach(get_vals("PRAGMA compile_options")as$rf){list($y,$X)=explode("=",$rf,2);$I[$y]=$X;}return$I;}function
-convert_field($o){}function
-unconvert_field($o,$I){return$I;}function
-support($Oc){return
-preg_match('~^(columns|database|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Oc);}$x="sqlite";$wi=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$Ah=array_keys($wi);$Ci=array();$pf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");$jd=array("hex","length","lower","round","unixepoch","upper");$pd=array("avg","count","count distinct","group_concat","max","min","sum");$lc=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}$dc["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){$bg=array("PgSQL","PDO_PgSQL");define("DRIVER","pgsql");if(extension_loaded("pgsql")){class
-Min_DB{var$extension="PgSQL",$_link,$_result,$_string,$_database=true,$server_info,$affected_rows,$error,$timeout;function
-_error($wc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
-connect($N,$V,$F){global$b;$l=$b->database();set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$this->_link=@pg_connect("$this->_string dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$l!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Ri=pg_version($this->_link);$this->server_info=$Ri["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function
-quote($Q){return"'".pg_escape_string($this->_link,$Q)."'";}function
-value($X,$o){return($o["type"]=="bytea"?pg_unescape_bytea($X):$X);}function
-quoteBinary($Q){return"'".pg_escape_bytea($this->_link,$Q)."'";}function
-select_db($j){global$b;if($j==$b->database())return$this->_database;$I=@pg_connect("$this->_string dbname='".addcslashes($j,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->_link=$I;return$I;}function
-close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}function
-query($G,$xi=false){$H=@pg_query($this->_link,$G);$this->error="";if(!$H){$this->error=pg_last_error($this->_link);$I=false;}elseif(!pg_num_fields($H)){$this->affected_rows=pg_affected_rows($H);$I=true;}else$I=new
-Min_Result($H);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$I;}function
-multi_query($G){return$this->_result=$this->query($G);}function
-store_result(){return$this->_result;}function
-next_result(){return
-false;}function
-result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
-false;return
-pg_fetch_result($H->_result,0,$o);}function
-warnings(){return
-h(pg_last_notice($this->_link));}}class
-Min_Result{var$_result,$_offset=0,$num_rows;function
-__construct($H){$this->_result=$H;$this->num_rows=pg_num_rows($H);}function
-fetch_assoc(){return
-pg_fetch_assoc($this->_result);}function
-fetch_row(){return
-pg_fetch_row($this->_result);}function
-fetch_field(){$e=$this->_offset++;$I=new
-stdClass;if(function_exists('pg_field_table'))$I->orgtable=pg_field_table($this->_result,$e);$I->name=pg_field_name($this->_result,$e);$I->orgname=$I->name;$I->type=pg_field_type($this->_result,$e);$I->charsetnr=($I->type=="bytea"?63:0);return$I;}function
-__destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class
-Min_DB
-extends
-Min_PDO{var$extension="PDO_PgSQL",$timeout;function
-connect($N,$V,$F){global$b;$l=$b->database();$Q="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' options='-c client_encoding=utf8'";$this->dsn("$Q dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",$V,$F);return
-true;}function
-select_db($j){global$b;return($b->database()==$j);}function
-quoteBinary($Sg){return
-q($Sg);}function
-query($G,$xi=false){$I=parent::query($G,$xi);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$I;}function
-warnings(){return'';}function
-close(){}}}class
-Min_Driver
-extends
-Min_SQL{function
-insertUpdate($R,$K,$eg){global$g;foreach($K
-as$O){$Di=array();$Z=array();foreach($O
-as$y=>$X){$Di[]="$y = $X";if(isset($eg[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Di)." WHERE ".implode(" AND ",$Z))&&$g->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
-false;}return
-true;}function
-slowQuery($G,$Yh){$this->_conn->query("SET statement_timeout = ".(1000*$Yh));$this->_conn->timeout=1000*$Yh;return$G;}function
-convertSearch($u,$X,$o){return(preg_match('~char|text'.(!preg_match('~LIKE~',$X["op"])?'|date|time(stamp)?|boolean|uuid|'.number_type():'').'~',$o["type"])?$u:"CAST($u AS text)");}function
-quoteBinary($Sg){return$this->_conn->quoteBinary($Sg);}function
-warnings(){return$this->_conn->warnings();}function
-tableHelp($C){$te=array("information_schema"=>"infoschema","pg_catalog"=>"catalog",);$_=$te[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$C).".html";}}function
-idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
-table($u){return
-idf_escape($u);}function
-connect(){global$b,$wi,$Ah;$g=new
-Min_DB;$Fb=$b->credentials();if($g->connect($Fb[0],$Fb[1],$Fb[2])){if(min_version(9,0,$g)){$g->query("SET application_name = 'Adminer'");if(min_version(9.2,0,$g)){$Ah['Strings'][]="json";$wi["json"]=4294967295;if(min_version(9.4,0,$g)){$Ah['Strings'][]="jsonb";$wi["jsonb"]=4294967295;}}}return$g;}return$g->error;}function
-get_databases(){return
-get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname");}function
-limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z".($D?" OFFSET $D":""):"");}function
-limit1($R,$G,$Z,$M="\n"){return(preg_match('~^INTO~',$G)?limit($G,$Z,1,0,$M):" $G".(is_view(table_status1($R))?$Z:" WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$M."LIMIT 1)"));}function
-db_collation($l,$ob){global$g;return$g->result("SHOW LC_COLLATE");}function
-engines(){return
-array();}function
-logged_user(){global$g;return$g->result("SELECT user");}function
-tables_list(){$G="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support('materializedview'))$G.="
-UNION ALL
-SELECT matviewname, 'MATERIALIZED VIEW'
-FROM pg_matviews
-WHERE schemaname = current_schema()";$G.="
-ORDER BY 1";return
-get_key_vals($G);}function
-count_tables($k){return
-array();}function
-table_status($C=""){$I=array();foreach(get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", CASE WHEN c.relhasoids THEN 'oid' ELSE '' END AS \"Oid\", c.reltuples as \"Rows\", n.nspname
-FROM pg_class c
-JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
-WHERE relkind IN ('r', 'm', 'v', 'f')
-".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return($C!=""?$I[$C]:$I);}function
-is_view($S){return
-in_array($S["Engine"],array("view","materialized view"));}function
-fk_support($S){return
-true;}function
-fields($R){$I=array();$Ca=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment
-FROM pg_class c
-JOIN pg_namespace n ON c.relnamespace = n.oid
-JOIN pg_attribute a ON c.oid = a.attrelid
-LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
-WHERE c.relname = ".q($R)."
-AND n.nspname = current_schema()
-AND NOT a.attisdropped
-AND a.attnum > 0
-ORDER BY a.attnum")as$J){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$J["full_type"],$B);list(,$U,$qe,$J["length"],$wa,$Fa)=$B;$J["length"].=$Fa;$db=$U.$wa;if(isset($Ca[$db])){$J["type"]=$Ca[$db];$J["full_type"]=$J["type"].$qe.$Fa;}else{$J["type"]=$U;$J["full_type"]=$J["type"].$qe.$wa.$Fa;}$J["null"]=!$J["attnotnull"];$J["auto_increment"]=preg_match('~^nextval\(~i',$J["default"]);$J["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match('~(.+)::[^)]+(.*)~',$J["default"],$B))$J["default"]=($B[1]=="NULL"?null:(($B[1][0]=="'"?idf_unescape($B[1]):$B[1]).$B[2]));$I[$J["field"]]=$J;}return$I;}function
-indexes($R,$h=null){global$g;if(!is_object($h))$h=$g;$I=array();$Jh=$h->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R));$f=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Jh AND attnum > 0",$h);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption , (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $Jh AND ci.oid = i.indexrelid",$h)as$J){$Cg=$J["relname"];$I[$Cg]["type"]=($J["indispartial"]?"INDEX":($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX")));$I[$Cg]["columns"]=array();foreach(explode(" ",$J["indkey"])as$Kd)$I[$Cg]["columns"][]=$f[$Kd];$I[$Cg]["descs"]=array();foreach(explode(" ",$J["indoption"])as$Ld)$I[$Cg]["descs"][]=($Ld&1?'1':null);$I[$Cg]["lengths"]=array();}return$I;}function
-foreign_keys($R){global$kf;$I=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
-FROM pg_constraint
-WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($R)." AND pn.nspname = current_schema())
-AND contype = 'f'::char
-ORDER BY conkey, conname")as$J){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$J['definition'],$B)){$J['source']=array_map('trim',explode(',',$B[1]));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$B[2],$ze)){$J['ns']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$ze[2]));$J['table']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$ze[4]));}$J['target']=array_map('trim',explode(',',$B[3]));$J['on_delete']=(preg_match("~ON DELETE ($kf)~",$B[4],$ze)?$ze[1]:'NO ACTION');$J['on_update']=(preg_match("~ON UPDATE ($kf)~",$B[4],$ze)?$ze[1]:'NO ACTION');$I[$J['conname']]=$J;}}return$I;}function
-view($C){global$g;return
-array("select"=>trim($g->result("SELECT view_definition
-FROM information_schema.views
-WHERE table_schema = current_schema() AND table_name = ".q($C))));}function
-collations(){return
-array();}function
-information_schema($l){return($l=="information_schema");}function
-error(){global$g;$I=h($g->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$I,$B))$I=$B[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($B[3]).'})(.*)~','\1\2',$B[2]).$B[4];return
-nl_br($I);}function
-create_database($l,$d){return
-queries("CREATE DATABASE ".idf_escape($l).($d?" ENCODING ".idf_escape($d):""));}function
-drop_databases($k){global$g;$g->close();return
-apply_queries("DROP DATABASE",$k,'idf_escape');}function
-rename_database($C,$d){return
-queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
-auto_increment(){return"";}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){$c=array();$pg=array();foreach($p
-as$o){$e=idf_escape($o[0]);$X=$o[1];if(!$X)$c[]="DROP $e";else{$Ni=$X[5];unset($X[5]);if(isset($X[6])&&$o[0]=="")$X[1]=($X[1]=="bigint"?" big":" ")."serial";if($o[0]=="")$c[]=($R!=""?"ADD ":" ").implode($X);else{if($e!=$X[0])$pg[]="ALTER TABLE ".table($R)." RENAME $e TO $X[0]";$c[]="ALTER $e TYPE$X[1]";if(!$X[6]){$c[]="ALTER $e ".($X[3]?"SET$X[3]":"DROP DEFAULT");$c[]="ALTER $e ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}}if($o[0]!=""||$Ni!="")$pg[]="COMMENT ON COLUMN ".table($R).".$X[0] IS ".($Ni!=""?substr($Ni,9):"''");}}$c=array_merge($c,$bd);if($R=="")array_unshift($pg,"CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($pg,"ALTER TABLE ".table($R)."\n".implode(",\n",$c));if($R!=""&&$R!=$C)$pg[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);if($R!=""||$tb!="")$pg[]="COMMENT ON TABLE ".table($C)." IS ".q($tb);if($La!=""){}foreach($pg
-as$G){if(!queries($G))return
-false;}return
-true;}function
-alter_indexes($R,$c){$i=array();$ec=array();$pg=array();foreach($c
-as$X){if($X[0]!="INDEX")$i[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$ec[]=idf_escape($X[1]);else$pg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($i)array_unshift($pg,"ALTER TABLE ".table($R).implode(",",$i));if($ec)array_unshift($pg,"DROP INDEX ".implode(", ",$ec));foreach($pg
-as$G){if(!queries($G))return
-false;}return
-true;}function
-truncate_tables($T){return
-queries("TRUNCATE ".implode(", ",array_map('table',$T)));return
-true;}function
-drop_views($Ti){return
-drop_tables($Ti);}function
-drop_tables($T){foreach($T
-as$R){$P=table_status($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
-false;}return
-true;}function
-move_tables($T,$Ti,$Qh){foreach(array_merge($T,$Ti)as$R){$P=table_status($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Qh)))return
-false;}return
-true;}function
-trigger($C,$R=null){if($C=="")return
-array("Statement"=>"EXECUTE PROCEDURE ()");if($R===null)$R=$_GET['trigger'];$K=get_rows('SELECT t.trigger_name AS "Trigger", t.action_timing AS "Timing", (SELECT STRING_AGG(event_manipulation, \' OR \') FROM information_schema.triggers WHERE event_object_table = t.event_object_table AND trigger_name = t.trigger_name ) AS "Events", t.event_manipulation AS "Event", \'FOR EACH \' || t.action_orientation AS "Type", t.action_statement AS "Statement" FROM information_schema.triggers t WHERE t.event_object_table = '.q($R).' AND t.trigger_name = '.q($C));return
-reset($K);}function
-triggers($R){$I=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = ".q($R))as$J)$I[$J["trigger_name"]]=array($J["action_timing"],$J["event_manipulation"]);return$I;}function
-trigger_options(){return
-array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
-routine($C,$U){$K=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
-FROM information_schema.routines
-WHERE routine_schema = current_schema() AND specific_name = '.q($C));$I=$K[0];$I["returns"]=array("type"=>$I["type_udt_name"]);$I["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
-FROM information_schema.parameters
-WHERE specific_schema = current_schema() AND specific_name = '.q($C).'
-ORDER BY ordinal_position');return$I;}function
-routines(){return
-get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
-FROM information_schema.routines
-WHERE routine_schema = current_schema()
-ORDER BY SPECIFIC_NAME');}function
-routine_languages(){return
-get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
-routine_id($C,$J){$I=array();foreach($J["fields"]as$o)$I[]=$o["type"];return
-idf_escape($C)."(".implode(", ",$I).")";}function
-last_id(){return
-0;}function
-explain($g,$G){return$g->query("EXPLAIN $G");}function
-found_rows($S,$Z){global$g;if(preg_match("~ rows=([0-9]+)~",$g->result("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Bg))return$Bg[1];return
-false;}function
-types(){return
-get_vals("SELECT typname
-FROM pg_type
-WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
-AND typtype IN ('b','d','e')
-AND typelem = 0");}function
-schemas(){return
-get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
-get_schema(){global$g;return$g->result("SELECT current_schema()");}function
-set_schema($Ug){global$g,$wi,$Ah;$I=$g->query("SET search_path TO ".idf_escape($Ug));foreach(types()as$U){if(!isset($wi[$U])){$wi[$U]=0;$Ah['User types'][]=$U;}}return$I;}function
-create_sql($R,$La,$Bh){global$g;$I='';$Kg=array();$eh=array();$P=table_status($R);$p=fields($R);$w=indexes($R);ksort($w);$Yc=foreign_keys($R);ksort($Yc);if(!$P||empty($p))return
-false;$I="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($p
-as$Qc=>$o){$Lf=idf_escape($o['field']).' '.$o['full_type'].default_value($o).($o['attnotnull']?" NOT NULL":"");$Kg[]=$Lf;if(preg_match('~nextval\(\'([^\']+)\'\)~',$o['default'],$_e)){$dh=$_e[1];$rh=reset(get_rows(min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q($dh):"SELECT * FROM $dh"));$eh[]=($Bh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $dh;\n":"")."CREATE SEQUENCE $dh INCREMENT $rh[increment_by] MINVALUE $rh[min_value] MAXVALUE $rh[max_value] START ".($La?$rh['last_value']:1)." CACHE $rh[cache_value];";}}if(!empty($eh))$I=implode("\n\n",$eh)."\n\n$I";foreach($w
-as$Fd=>$v){switch($v['type']){case'UNIQUE':$Kg[]="CONSTRAINT ".idf_escape($Fd)." UNIQUE (".implode(', ',array_map('idf_escape',$v['columns'])).")";break;case'PRIMARY':$Kg[]="CONSTRAINT ".idf_escape($Fd)." PRIMARY KEY (".implode(', ',array_map('idf_escape',$v['columns'])).")";break;}}foreach($Yc
-as$Xc=>$Wc)$Kg[]="CONSTRAINT ".idf_escape($Xc)." $Wc[definition] ".($Wc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE');$I.=implode(",\n ",$Kg)."\n) WITH (oids = ".($P['Oid']?'true':'false').");";foreach($w
-as$Fd=>$v){if($v['type']=='INDEX')$I.="\n\nCREATE INDEX ".idf_escape($Fd)." ON ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." USING btree (".implode(', ',array_map('idf_escape',$v['columns'])).");";}if($P['Comment'])$I.="\n\nCOMMENT ON TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($p
-as$Qc=>$o){if($o['comment'])$I.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Qc)." IS ".q($o['comment']).";";}return
-rtrim($I,';');}function
-truncate_sql($R){return"TRUNCATE ".table($R);}function
-trigger_sql($R){$P=table_status($R);$I="";foreach(triggers($R)as$pi=>$oi){$qi=trigger($pi,$P['Name']);$I.="\nCREATE TRIGGER ".idf_escape($qi['Trigger'])." $qi[Timing] $qi[Events] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $qi[Type] $qi[Statement];;\n";}return$I;}function
-use_sql($j){return"\connect ".idf_escape($j);}function
-show_variables(){return
-get_key_vals("SHOW ALL");}function
-process_list(){return
-get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
-show_status(){}function
-convert_field($o){}function
-unconvert_field($o,$I){return$I;}function
-support($Oc){return
-preg_match('~^(database|table|columns|sql|indexes|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~',$Oc);}function
-kill_process($X){return
-queries("SELECT pg_terminate_backend(".number($X).")");}function
-connection_id(){return"SELECT pg_backend_pid()";}function
-max_connections(){global$g;return$g->result("SHOW max_connections");}$x="pgsql";$wi=array();$Ah=array();foreach(array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$y=>$X){$wi+=$X;$Ah[$y]=array_keys($X);}$Ci=array();$pf=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$jd=array("char_length","lower","round","to_hex","to_timestamp","upper");$pd=array("avg","count","count distinct","max","min","sum");$lc=array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));}$dc["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){$bg=array("OCI8","PDO_OCI");define("DRIVER","oracle");if(extension_loaded("oci8")){class
-Min_DB{var$extension="oci8",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
-_error($wc,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
-connect($N,$V,$F){$this->_link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return
-true;}$n=oci_error();$this->error=$n["message"];return
-false;}function
-quote($Q){return"'".str_replace("'","''",$Q)."'";}function
-select_db($j){return
-true;}function
-query($G,$xi=false){$H=oci_parse($this->_link,$G);$this->error="";if(!$H){$n=oci_error($this->_link);$this->errno=$n["code"];$this->error=$n["message"];return
-false;}set_error_handler(array($this,'_error'));$I=@oci_execute($H);restore_error_handler();if($I){if(oci_num_fields($H))return
-new
-Min_Result($H);$this->affected_rows=oci_num_rows($H);}return$I;}function
-multi_query($G){return$this->_result=$this->query($G);}function
-store_result(){return$this->_result;}function
-next_result(){return
-false;}function
-result($G,$o=1){$H=$this->query($G);if(!is_object($H)||!oci_fetch($H->_result))return
-false;return
-oci_result($H->_result,$o);}}class
-Min_Result{var$_result,$_offset=1,$num_rows;function
-__construct($H){$this->_result=$H;}function
-_convert($J){foreach((array)$J
-as$y=>$X){if(is_a($X,'OCI-Lob'))$J[$y]=$X->load();}return$J;}function
-fetch_assoc(){return$this->_convert(oci_fetch_assoc($this->_result));}function
-fetch_row(){return$this->_convert(oci_fetch_row($this->_result));}function
-fetch_field(){$e=$this->_offset++;$I=new
-stdClass;$I->name=oci_field_name($this->_result,$e);$I->orgname=$I->name;$I->type=oci_field_type($this->_result,$e);$I->charsetnr=(preg_match("~raw|blob|bfile~",$I->type)?63:0);return$I;}function
-__destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class
-Min_DB
-extends
-Min_PDO{var$extension="PDO_OCI";function
-connect($N,$V,$F){$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);return
-true;}function
-select_db($j){return
-true;}}}class
-Min_Driver
-extends
-Min_SQL{function
-begin(){return
-true;}}function
-idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
-table($u){return
-idf_escape($u);}function
-connect(){global$b;$g=new
-Min_DB;$Fb=$b->credentials();if($g->connect($Fb[0],$Fb[1],$Fb[2]))return$g;return$g->error;}function
-get_databases(){return
-get_vals("SELECT tablespace_name FROM user_tablespaces");}function
-limit($G,$Z,$z,$D=0,$M=" "){return($D?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $G$Z) t WHERE rownum <= ".($z+$D).") WHERE rnum > $D":($z!==null?" * FROM (SELECT $G$Z) WHERE rownum <= ".($z+$D):" $G$Z"));}function
-limit1($R,$G,$Z,$M="\n"){return" $G$Z";}function
-db_collation($l,$ob){global$g;return$g->result("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
-engines(){return
-array();}function
-logged_user(){global$g;return$g->result("SELECT USER FROM DUAL");}function
-tables_list(){return
-get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."
-UNION SELECT view_name, 'view' FROM user_views
-ORDER BY 1");}function
-count_tables($k){return
-array();}function
-table_status($C=""){$I=array();$Wg=q($C);foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q(DB).($C!=""?" AND table_name = $Wg":"")."
-UNION SELECT view_name, 'view', 0, 0 FROM user_views".($C!=""?" WHERE view_name = $Wg":"")."
-ORDER BY 1")as$J){if($C!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
-is_view($S){return$S["Engine"]=="view";}function
-fk_support($S){return
-true;}function
-fields($R){$I=array();foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)." ORDER BY column_id")as$J){$U=$J["DATA_TYPE"];$qe="$J[DATA_PRECISION],$J[DATA_SCALE]";if($qe==",")$qe=$J["DATA_LENGTH"];$I[$J["COLUMN_NAME"]]=array("field"=>$J["COLUMN_NAME"],"full_type"=>$U.($qe?"($qe)":""),"type"=>strtolower($U),"length"=>$qe,"default"=>$J["DATA_DEFAULT"],"null"=>($J["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$I;}function
-indexes($R,$h=null){$I=array();foreach(get_rows("SELECT uic.*, uc.constraint_type
-FROM user_ind_columns uic
-LEFT JOIN user_constraints uc ON uic.index_name = uc.constraint_name AND uic.table_name = uc.table_name
-WHERE uic.table_name = ".q($R)."
-ORDER BY uc.constraint_type, uic.column_position",$h)as$J){$Fd=$J["INDEX_NAME"];$I[$Fd]["type"]=($J["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($J["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$I[$Fd]["columns"][]=$J["COLUMN_NAME"];$I[$Fd]["lengths"][]=($J["CHAR_LENGTH"]&&$J["CHAR_LENGTH"]!=$J["COLUMN_LENGTH"]?$J["CHAR_LENGTH"]:null);$I[$Fd]["descs"][]=($J["DESCEND"]?'1':null);}return$I;}function
-view($C){$K=get_rows('SELECT text "select" FROM user_views WHERE view_name = '.q($C));return
-reset($K);}function
-collations(){return
-array();}function
-information_schema($l){return
-false;}function
-error(){global$g;return
-h($g->error);}function
-explain($g,$G){$g->query("EXPLAIN PLAN FOR $G");return$g->query("SELECT * FROM plan_table");}function
-found_rows($S,$Z){}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){$c=$ec=array();foreach($p
-as$o){$X=$o[1];if($X&&$o[0]!=""&&idf_escape($o[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($o[0])." TO $X[0]");if($X)$c[]=($R!=""?($o[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$ec[]=idf_escape($o[0]);}if($R=="")return
-queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($R)."\n".implode("\n",$c)))&&(!$ec||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$ec).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function
-foreign_keys($R){$I=array();$G="SELECT c_list.CONSTRAINT_NAME as NAME,
-c_src.COLUMN_NAME as SRC_COLUMN,
-c_dest.OWNER as DEST_DB,
-c_dest.TABLE_NAME as DEST_TABLE,
-c_dest.COLUMN_NAME as DEST_COLUMN,
-c_list.DELETE_RULE as ON_DELETE
-FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
-WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
-AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
-AND c_list.CONSTRAINT_TYPE = 'R'
-AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($G)as$J)$I[$J['NAME']]=array("db"=>$J['DEST_DB'],"table"=>$J['DEST_TABLE'],"source"=>array($J['SRC_COLUMN']),"target"=>array($J['DEST_COLUMN']),"on_delete"=>$J['ON_DELETE'],"on_update"=>null,);return$I;}function
-truncate_tables($T){return
-apply_queries("TRUNCATE TABLE",$T);}function
-drop_views($Ti){return
-apply_queries("DROP VIEW",$Ti);}function
-drop_tables($T){return
-apply_queries("DROP TABLE",$T);}function
-last_id(){return
-0;}function
-schemas(){return
-get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))");}function
-get_schema(){global$g;return$g->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
-set_schema($Vg){global$g;return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Vg));}function
-show_variables(){return
-get_key_vals('SELECT name, display_value FROM v$parameter');}function
-process_list(){return
-get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
-FROM v$session sess LEFT OUTER JOIN v$sql sql
-ON sql.sql_id = sess.sql_id
-WHERE sess.type = \'USER\'
-ORDER BY PROCESS
-');}function
-show_status(){$K=get_rows('SELECT * FROM v$instance');return
-reset($K);}function
-convert_field($o){}function
-unconvert_field($o,$I){return$I;}function
-support($Oc){return
-preg_match('~^(columns|database|drop_col|indexes|processlist|scheme|sql|status|table|variables|view|view_trigger)$~',$Oc);}$x="oracle";$wi=array();$Ah=array();foreach(array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$y=>$X){$wi+=$X;$Ah[$y]=array_keys($X);}$Ci=array();$pf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$jd=array("length","lower","round","upper");$pd=array("avg","count","count distinct","max","min","sum");$lc=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",));}$dc["mssql"]="MS SQL (beta)";if(isset($_GET["mssql"])){$bg=array("SQLSRV","MSSQL","PDO_DBLIB");define("DRIVER","mssql");if(extension_loaded("sqlsrv")){class
-Min_DB{var$extension="sqlsrv",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
-_get_error(){$this->error="";foreach(sqlsrv_errors()as$n){$this->errno=$n["code"];$this->error.="$n[message]\n";}$this->error=rtrim($this->error);}function
-connect($N,$V,$F){$this->_link=@sqlsrv_connect(preg_replace('~:~',',',$N),array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8"));if($this->_link){$Md=sqlsrv_server_info($this->_link);$this->server_info=$Md['SQLServerVersion'];}else$this->_get_error();return(bool)$this->_link;}function
-quote($Q){return"'".str_replace("'","''",$Q)."'";}function
-select_db($j){return$this->query("USE ".idf_escape($j));}function
-query($G,$xi=false){$H=sqlsrv_query($this->_link,$G);$this->error="";if(!$H){$this->_get_error();return
-false;}return$this->store_result($H);}function
-multi_query($G){$this->_result=sqlsrv_query($this->_link,$G);$this->error="";if(!$this->_result){$this->_get_error();return
-false;}return
-true;}function
-store_result($H=null){if(!$H)$H=$this->_result;if(!$H)return
-false;if(sqlsrv_field_metadata($H))return
-new
-Min_Result($H);$this->affected_rows=sqlsrv_rows_affected($H);return
-true;}function
-next_result(){return$this->_result?sqlsrv_next_result($this->_result):null;}function
-result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
-false;$J=$H->fetch_row();return$J[$o];}}class
-Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
-__construct($H){$this->_result=$H;}function
-_convert($J){foreach((array)$J
-as$y=>$X){if(is_a($X,'DateTime'))$J[$y]=$X->format("Y-m-d H:i:s");}return$J;}function
-fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC));}function
-fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC));}function
-fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$o=$this->_fields[$this->_offset++];$I=new
-stdClass;$I->name=$o["Name"];$I->orgname=$o["Name"];$I->type=($o["Type"]==1?254:0);return$I;}function
-seek($D){for($s=0;$s<$D;$s++)sqlsrv_fetch($this->_result);}function
-__destruct(){sqlsrv_free_stmt($this->_result);}}}elseif(extension_loaded("mssql")){class
-Min_DB{var$extension="MSSQL",$_link,$_result,$server_info,$affected_rows,$error;function
-connect($N,$V,$F){$this->_link=@mssql_connect($N,$V,$F);if($this->_link){$H=$this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");if($H){$J=$H->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$J[0]] $J[1]";}}else$this->error=mssql_get_last_message();return(bool)$this->_link;}function
-quote($Q){return"'".str_replace("'","''",$Q)."'";}function
-select_db($j){return
-mssql_select_db($j);}function
-query($G,$xi=false){$H=@mssql_query($G,$this->_link);$this->error="";if(!$H){$this->error=mssql_get_last_message();return
-false;}if($H===true){$this->affected_rows=mssql_rows_affected($this->_link);return
-true;}return
-new
-Min_Result($H);}function
-multi_query($G){return$this->_result=$this->query($G);}function
-store_result(){return$this->_result;}function
-next_result(){return
-mssql_next_result($this->_result->_result);}function
-result($G,$o=0){$H=$this->query($G);if(!is_object($H))return
-false;return
-mssql_result($H->_result,0,$o);}}class
-Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
-__construct($H){$this->_result=$H;$this->num_rows=mssql_num_rows($H);}function
-fetch_assoc(){return
-mssql_fetch_assoc($this->_result);}function
-fetch_row(){return
-mssql_fetch_row($this->_result);}function
-num_rows(){return
-mssql_num_rows($this->_result);}function
-fetch_field(){$I=mssql_fetch_field($this->_result);$I->orgtable=$I->table;$I->orgname=$I->name;return$I;}function
-seek($D){mssql_data_seek($this->_result,$D);}function
-__destruct(){mssql_free_result($this->_result);}}}elseif(extension_loaded("pdo_dblib")){class
-Min_DB
-extends
-Min_PDO{var$extension="PDO_DBLIB";function
-connect($N,$V,$F){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);return
-true;}function
-select_db($j){return$this->query("USE ".idf_escape($j));}}}class
-Min_Driver
-extends
-Min_SQL{function
-insertUpdate($R,$K,$eg){foreach($K
-as$O){$Di=array();$Z=array();foreach($O
-as$y=>$X){$Di[]="$y = $X";if(isset($eg[idf_unescape($y)]))$Z[]="$y = $X";}if(!queries("MERGE ".table($R)." USING (VALUES(".implode(", ",$O).")) AS source (c".implode(", c",range(1,count($O))).") ON ".implode(" AND ",$Z)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$Di)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).");"))return
-false;}return
-true;}function
-begin(){return
-queries("BEGIN TRANSACTION");}}function
-idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
-table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
-connect(){global$b;$g=new
-Min_DB;$Fb=$b->credentials();if($g->connect($Fb[0],$Fb[1],$Fb[2]))return$g;return$g->error;}function
-get_databases(){return
-get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
-limit($G,$Z,$z,$D=0,$M=" "){return($z!==null?" TOP (".($z+$D).")":"")." $G$Z";}function
-limit1($R,$G,$Z,$M="\n"){return
-limit($G,$Z,1,0,$M);}function
-db_collation($l,$ob){global$g;return$g->result("SELECT collation_name FROM sys.databases WHERE name = ".q($l));}function
-engines(){return
-array();}function
-logged_user(){global$g;return$g->result("SELECT SUSER_NAME()");}function
-tables_list(){return
-get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
-count_tables($k){global$g;$I=array();foreach($k
-as$l){$g->select_db($l);$I[$l]=$g->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$I;}function
-table_status($C=""){$I=array();foreach(get_rows("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$J){if($C!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
-is_view($S){return$S["Engine"]=="VIEW";}function
-fk_support($S){return
-true;}function
-fields($R){$I=array();foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default]
-FROM sys.all_columns c
-JOIN sys.all_objects o ON c.object_id = o.object_id
-JOIN sys.types t ON c.user_type_id = t.user_type_id
-LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id
-WHERE o.schema_id = SCHEMA_ID(".q(get_schema()).") AND o.type IN ('S', 'U', 'V') AND o.name = ".q($R))as$J){$U=$J["type"];$qe=(preg_match("~char|binary~",$U)?$J["max_length"]:($U=="decimal"?"$J[precision],$J[scale]":""));$I[$J["name"]]=array("field"=>$J["name"],"full_type"=>$U.($qe?"($qe)":""),"type"=>$U,"length"=>$qe,"default"=>$J["default"],"null"=>$J["is_nullable"],"auto_increment"=>$J["is_identity"],"collation"=>$J["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$J["is_identity"],);}return$I;}function
-indexes($R,$h=null){$I=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
-FROM sys.indexes i
-INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
-INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
-WHERE OBJECT_NAME(i.object_id) = ".q($R),$h)as$J){$C=$J["name"];$I[$C]["type"]=($J["is_primary_key"]?"PRIMARY":($J["is_unique"]?"UNIQUE":"INDEX"));$I[$C]["lengths"]=array();$I[$C]["columns"][$J["key_ordinal"]]=$J["column_name"];$I[$C]["descs"][$J["key_ordinal"]]=($J["is_descending_key"]?'1':null);}return$I;}function
-view($C){global$g;return
-array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',$g->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($C))));}function
-collations(){$I=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$d)$I[preg_replace('~_.*~','',$d)][]=$d;return$I;}function
-information_schema($l){return
-false;}function
-error(){global$g;return
-nl_br(h(preg_replace('~^(\[[^]]*])+~m','',$g->error)));}function
-create_database($l,$d){return
-queries("CREATE DATABASE ".idf_escape($l).(preg_match('~^[a-z0-9_]+$~i',$d)?" COLLATE $d":""));}function
-drop_databases($k){return
-queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$k)));}function
-rename_database($C,$d){if(preg_match('~^[a-z0-9_]+$~i',$d))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $d");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return
-true;}function
-auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){$c=array();foreach($p
-as$o){$e=idf_escape($o[0]);$X=$o[1];if(!$X)$c["DROP"][]=" COLUMN $e";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);if($o[0]=="")$c["ADD"][]="\n ".implode("",$X).($R==""?substr($bd[$X[0]],16+strlen($X[0])):"");else{unset($X[6]);if($e!=$X[0])queries("EXEC sp_rename ".q(table($R).".$e").", ".q(idf_unescape($X[0])).", 'COLUMN'");$c["ALTER COLUMN ".implode("",$X)][]="";}}}if($R=="")return
-queries("CREATE TABLE ".table($C)." (".implode(",",(array)$c["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($bd)$c[""]=$bd;foreach($c
-as$y=>$X){if(!queries("ALTER TABLE ".idf_escape($C)." $y".implode(",",$X)))return
-false;}return
-true;}function
-alter_indexes($R,$c){$v=array();$ec=array();foreach($c
-as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$ec[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
-false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$ec||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$ec)));}function
-last_id(){global$g;return$g->result("SELECT SCOPE_IDENTITY()");}function
-explain($g,$G){$g->query("SET SHOWPLAN_ALL ON");$I=$g->query($G);$g->query("SET SHOWPLAN_ALL OFF");return$I;}function
-found_rows($S,$Z){}function
-foreign_keys($R){$I=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R))as$J){$q=&$I[$J["FK_NAME"]];$q["table"]=$J["PKTABLE_NAME"];$q["source"][]=$J["FKCOLUMN_NAME"];$q["target"][]=$J["PKCOLUMN_NAME"];}return$I;}function
-truncate_tables($T){return
-apply_queries("TRUNCATE TABLE",$T);}function
-drop_views($Ti){return
-queries("DROP VIEW ".implode(", ",array_map('table',$Ti)));}function
-drop_tables($T){return
-queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function
-move_tables($T,$Ti,$Qh){return
-apply_queries("ALTER SCHEMA ".idf_escape($Qh)." TRANSFER",array_merge($T,$Ti));}function
-trigger($C){if($C=="")return
-array();$K=get_rows("SELECT s.name [Trigger],
-CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
-CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
-c.text
-FROM sysobjects s
-JOIN syscomments c ON s.id = c.id
-WHERE s.xtype = 'TR' AND s.name = ".q($C));$I=reset($K);if($I)$I["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$I["text"]);return$I;}function
-triggers($R){$I=array();foreach(get_rows("SELECT sys1.name,
-CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
-CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
-FROM sysobjects sys1
-JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
-WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$J)$I[$J["name"]]=array($J["Timing"],$J["Event"]);return$I;}function
-trigger_options(){return
-array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
-schemas(){return
-get_vals("SELECT name FROM sys.schemas");}function
-get_schema(){global$g;if($_GET["ns"]!="")return$_GET["ns"];return$g->result("SELECT SCHEMA_NAME()");}function
-set_schema($Ug){return
-true;}function
-use_sql($j){return"USE ".idf_escape($j);}function
-show_variables(){return
-array();}function
-show_status(){return
-array();}function
-convert_field($o){}function
-unconvert_field($o,$I){return$I;}function
-support($Oc){return
-preg_match('~^(columns|database|drop_col|indexes|scheme|sql|table|trigger|view|view_trigger)$~',$Oc);}$x="mssql";$wi=array();$Ah=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$y=>$X){$wi+=$X;$Ah[$y]=array_keys($X);}$Ci=array();$pf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$jd=array("len","lower","round","upper");$pd=array("avg","count","count distinct","max","min","sum");$lc=array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",));}$dc['firebird']='Firebird (alpha)';if(isset($_GET["firebird"])){$bg=array("interbase");define("DRIVER","firebird");if(extension_loaded("interbase")){class
-Min_DB{var$extension="Firebird",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
-connect($N,$V,$F){$this->_link=ibase_connect($N,$V,$F);if($this->_link){$Gi=explode(':',$N);$this->service_link=ibase_service_attach($Gi[0],$V,$F);$this->server_info=ibase_server_info($this->service_link,IBASE_SVC_SERVER_VERSION);}else{$this->errno=ibase_errcode();$this->error=ibase_errmsg();}return(bool)$this->_link;}function
-quote($Q){return"'".str_replace("'","''",$Q)."'";}function
-select_db($j){return($j=="domain");}function
-query($G,$xi=false){$H=ibase_query($G,$this->_link);if(!$H){$this->errno=ibase_errcode();$this->error=ibase_errmsg();return
-false;}$this->error="";if($H===true){$this->affected_rows=ibase_affected_rows($this->_link);return
-true;}return
-new
-Min_Result($H);}function
-multi_query($G){return$this->_result=$this->query($G);}function
-store_result(){return$this->_result;}function
-next_result(){return
-false;}function
-result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
-false;$J=$H->fetch_row();return$J[$o];}}class
-Min_Result{var$num_rows,$_result,$_offset=0;function
-__construct($H){$this->_result=$H;}function
-fetch_assoc(){return
-ibase_fetch_assoc($this->_result);}function
-fetch_row(){return
-ibase_fetch_row($this->_result);}function
-fetch_field(){$o=ibase_field_info($this->_result,$this->_offset++);return(object)array('name'=>$o['name'],'orgname'=>$o['name'],'type'=>$o['type'],'charsetnr'=>$o['length'],);}function
-__destruct(){ibase_free_result($this->_result);}}}class
-Min_Driver
-extends
-Min_SQL{}function
-idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
-table($u){return
-idf_escape($u);}function
-connect(){global$b;$g=new
-Min_DB;$Fb=$b->credentials();if($g->connect($Fb[0],$Fb[1],$Fb[2]))return$g;return$g->error;}function
-get_databases($Zc){return
-array("domain");}function
-limit($G,$Z,$z,$D=0,$M=" "){$I='';$I.=($z!==null?$M."FIRST $z".($D?" SKIP $D":""):"");$I.=" $G$Z";return$I;}function
-limit1($R,$G,$Z,$M="\n"){return
-limit($G,$Z,1,0,$M);}function
-db_collation($l,$ob){}function
-engines(){return
-array();}function
-logged_user(){global$b;$Fb=$b->credentials();return$Fb[1];}function
-tables_list(){global$g;$G='SELECT RDB$RELATION_NAME FROM rdb$relations WHERE rdb$system_flag = 0';$H=ibase_query($g->_link,$G);$I=array();while($J=ibase_fetch_assoc($H))$I[$J['RDB$RELATION_NAME']]='table';ksort($I);return$I;}function
-count_tables($k){return
-array();}function
-table_status($C="",$Nc=false){global$g;$I=array();$Kb=tables_list();foreach($Kb
-as$v=>$X){$v=trim($v);$I[$v]=array('Name'=>$v,'Engine'=>'standard',);if($C==$v)return$I[$v];}return$I;}function
-is_view($S){return
-false;}function
-fk_support($S){return
-preg_match('~InnoDB|IBMDB2I~i',$S["Engine"]);}function
-fields($R){global$g;$I=array();$G='SELECT r.RDB$FIELD_NAME AS field_name,
-r.RDB$DESCRIPTION AS field_description,
-r.RDB$DEFAULT_VALUE AS field_default_value,
-r.RDB$NULL_FLAG AS field_not_null_constraint,
-f.RDB$FIELD_LENGTH AS field_length,
-f.RDB$FIELD_PRECISION AS field_precision,
-f.RDB$FIELD_SCALE AS field_scale,
-CASE f.RDB$FIELD_TYPE
-WHEN 261 THEN \'BLOB\'
-WHEN 14 THEN \'CHAR\'
-WHEN 40 THEN \'CSTRING\'
-WHEN 11 THEN \'D_FLOAT\'
-WHEN 27 THEN \'DOUBLE\'
-WHEN 10 THEN \'FLOAT\'
-WHEN 16 THEN \'INT64\'
-WHEN 8 THEN \'INTEGER\'
-WHEN 9 THEN \'QUAD\'
-WHEN 7 THEN \'SMALLINT\'
-WHEN 12 THEN \'DATE\'
-WHEN 13 THEN \'TIME\'
-WHEN 35 THEN \'TIMESTAMP\'
-WHEN 37 THEN \'VARCHAR\'
-ELSE \'UNKNOWN\'
-END AS field_type,
-f.RDB$FIELD_SUB_TYPE AS field_subtype,
-coll.RDB$COLLATION_NAME AS field_collation,
-cset.RDB$CHARACTER_SET_NAME AS field_charset
-FROM RDB$RELATION_FIELDS r
-LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
-LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
-LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
-WHERE r.RDB$RELATION_NAME = '.q($R).'
-ORDER BY r.RDB$FIELD_POSITION';$H=ibase_query($g->_link,$G);while($J=ibase_fetch_assoc($H))$I[trim($J['FIELD_NAME'])]=array("field"=>trim($J["FIELD_NAME"]),"full_type"=>trim($J["FIELD_TYPE"]),"type"=>trim($J["FIELD_SUB_TYPE"]),"default"=>trim($J['FIELD_DEFAULT_VALUE']),"null"=>(trim($J["FIELD_NOT_NULL_CONSTRAINT"])=="YES"),"auto_increment"=>'0',"collation"=>trim($J["FIELD_COLLATION"]),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"comment"=>trim($J["FIELD_DESCRIPTION"]),);return$I;}function
-indexes($R,$h=null){$I=array();return$I;}function
-foreign_keys($R){return
-array();}function
-collations(){return
-array();}function
-information_schema($l){return
-false;}function
-error(){global$g;return
-h($g->error);}function
-types(){return
-array();}function
-schemas(){return
-array();}function
-get_schema(){return"";}function
-set_schema($Ug){return
-true;}function
-support($Oc){return
-preg_match("~^(columns|sql|status|table)$~",$Oc);}$x="firebird";$pf=array("=");$jd=array();$pd=array();$lc=array();}$dc["simpledb"]="SimpleDB";if(isset($_GET["simpledb"])){$bg=array("SimpleXML + allow_url_fopen");define("DRIVER","simpledb");if(class_exists('SimpleXMLElement')&&ini_bool('allow_url_fopen')){class
-Min_DB{var$extension="SimpleXML",$server_info='2009-04-15',$error,$timeout,$next,$affected_rows,$_result;function
-select_db($j){return($j=="domain");}function
-query($G,$xi=false){$If=array('SelectExpression'=>$G,'ConsistentRead'=>'true');if($this->next)$If['NextToken']=$this->next;$H=sdb_request_all('Select','Item',$If,$this->timeout);$this->timeout=0;if($H===false)return$H;if(preg_match('~^\s*SELECT\s+COUNT\(~i',$G)){$Eh=0;foreach($H
-as$Yd)$Eh+=$Yd->Attribute->Value;$H=array((object)array('Attribute'=>array((object)array('Name'=>'Count','Value'=>$Eh,))));}return
-new
-Min_Result($H);}function
-multi_query($G){return$this->_result=$this->query($G);}function
-store_result(){return$this->_result;}function
-next_result(){return
-false;}function
-quote($Q){return"'".str_replace("'","''",$Q)."'";}}class
-Min_Result{var$num_rows,$_rows=array(),$_offset=0;function
-__construct($H){foreach($H
-as$Yd){$J=array();if($Yd->Name!='')$J['itemName()']=(string)$Yd->Name;foreach($Yd->Attribute
-as$Ia){$C=$this->_processValue($Ia->Name);$Y=$this->_processValue($Ia->Value);if(isset($J[$C])){$J[$C]=(array)$J[$C];$J[$C][]=$Y;}else$J[$C]=$Y;}$this->_rows[]=$J;foreach($J
-as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=count($this->_rows);}function
-_processValue($oc){return(is_object($oc)&&$oc['encoding']=='base64'?base64_decode($oc):(string)$oc);}function
-fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$y=>$X)$I[$y]=$J[$y];next($this->_rows);return$I;}function
-fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
-array_values($I);}function
-fetch_field(){$ee=array_keys($this->_rows[0]);return(object)array('name'=>$ee[$this->_offset++]);}}}class
-Min_Driver
-extends
-Min_SQL{public$eg="itemName()";function
-_chunkRequest($Cd,$va,$If,$Dc=array()){global$g;foreach(array_chunk($Cd,25)as$hb){$Jf=$If;foreach($hb
-as$s=>$t){$Jf["Item.$s.ItemName"]=$t;foreach($Dc
-as$y=>$X)$Jf["Item.$s.$y"]=$X;}if(!sdb_request($va,$Jf))return
-false;}$g->affected_rows=count($Cd);return
-true;}function
-_extractIds($R,$qg,$z){$I=array();if(preg_match_all("~itemName\(\) = (('[^']*+')+)~",$qg,$_e))$I=array_map('idf_unescape',$_e[1]);else{foreach(sdb_request_all('Select','Item',array('SelectExpression'=>'SELECT itemName() FROM '.table($R).$qg.($z?" LIMIT 1":"")))as$Yd)$I[]=$Yd->Name;}return$I;}function
-select($R,$L,$Z,$md,$uf=array(),$z=1,$E=0,$gg=false){global$g;$g->next=$_GET["next"];$I=parent::select($R,$L,$Z,$md,$uf,$z,$E,$gg);$g->next=0;return$I;}function
-delete($R,$qg,$z=0){return$this->_chunkRequest($this->_extractIds($R,$qg,$z),'BatchDeleteAttributes',array('DomainName'=>$R));}function
-update($R,$O,$qg,$z=0,$M="\n"){$Tb=array();$Qd=array();$s=0;$Cd=$this->_extractIds($R,$qg,$z);$t=idf_unescape($O["`itemName()`"]);unset($O["`itemName()`"]);foreach($O
-as$y=>$X){$y=idf_unescape($y);if($X=="NULL"||($t!=""&&array($t)!=$Cd))$Tb["Attribute.".count($Tb).".Name"]=$y;if($X!="NULL"){foreach((array)$X
-as$ae=>$W){$Qd["Attribute.$s.Name"]=$y;$Qd["Attribute.$s.Value"]=(is_array($X)?$W:idf_unescape($W));if(!$ae)$Qd["Attribute.$s.Replace"]="true";$s++;}}}$If=array('DomainName'=>$R);return(!$Qd||$this->_chunkRequest(($t!=""?array($t):$Cd),'BatchPutAttributes',$If,$Qd))&&(!$Tb||$this->_chunkRequest($Cd,'BatchDeleteAttributes',$If,$Tb));}function
-insert($R,$O){$If=array("DomainName"=>$R);$s=0;foreach($O
-as$C=>$Y){if($Y!="NULL"){$C=idf_unescape($C);if($C=="itemName()")$If["ItemName"]=idf_unescape($Y);else{foreach((array)$Y
-as$X){$If["Attribute.$s.Name"]=$C;$If["Attribute.$s.Value"]=(is_array($Y)?$X:idf_unescape($Y));$s++;}}}}return
-sdb_request('PutAttributes',$If);}function
-insertUpdate($R,$K,$eg){foreach($K
-as$O){if(!$this->update($R,$O,"WHERE `itemName()` = ".q($O["`itemName()`"])))return
-false;}return
-true;}function
-begin(){return
-false;}function
-commit(){return
-false;}function
-rollback(){return
-false;}function
-slowQuery($G,$Yh){$this->_conn->timeout=$Yh;return$G;}}function
-connect(){global$b;list(,,$F)=$b->credentials();if($F!="")return'Database does not support password.';return
-new
-Min_DB;}function
-support($Oc){return
-preg_match('~sql~',$Oc);}function
-logged_user(){global$b;$Fb=$b->credentials();return$Fb[1];}function
-get_databases(){return
-array("domain");}function
-collations(){return
-array();}function
-db_collation($l,$ob){}function
-tables_list(){global$g;$I=array();foreach(sdb_request_all('ListDomains','DomainName')as$R)$I[(string)$R]='table';if($g->error&&defined("PAGE_HEADER"))echo"".error()."\n";return$I;}function
-table_status($C="",$Nc=false){$I=array();foreach(($C!=""?array($C=>true):tables_list())as$R=>$U){$J=array("Name"=>$R,"Auto_increment"=>"");if(!$Nc){$Me=sdb_request('DomainMetadata',array('DomainName'=>$R));if($Me){foreach(array("Rows"=>"ItemCount","Data_length"=>"ItemNamesSizeBytes","Index_length"=>"AttributeValuesSizeBytes","Data_free"=>"AttributeNamesSizeBytes",)as$y=>$X)$J[$y]=(string)$Me->$X;}}if($C!="")return$J;$I[$R]=$J;}return$I;}function
-explain($g,$G){}function
-error(){global$g;return
-h($g->error);}function
-information_schema(){}function
-is_view($S){}function
-indexes($R,$h=null){return
-array(array("type"=>"PRIMARY","columns"=>array("itemName()")),);}function
-fields($R){return
-fields_from_edit();}function
-foreign_keys($R){return
-array();}function
-table($u){return
-idf_escape($u);}function
-idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
-limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z":"");}function
-unconvert_field($o,$I){return$I;}function
-fk_support($S){}function
-engines(){return
-array();}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){return($R==""&&sdb_request('CreateDomain',array('DomainName'=>$C)));}function
-drop_tables($T){foreach($T
-as$R){if(!sdb_request('DeleteDomain',array('DomainName'=>$R)))return
-false;}return
-true;}function
-count_tables($k){foreach($k
-as$l)return
-array($l=>count(tables_list()));}function
-found_rows($S,$Z){return($Z?null:$S["Rows"]);}function
-last_id(){}function
-hmac($Ba,$Kb,$y,$ug=false){$Ua=64;if(strlen($y)>$Ua)$y=pack("H*",$Ba($y));$y=str_pad($y,$Ua,"\0");$be=$y^str_repeat("\x36",$Ua);$ce=$y^str_repeat("\x5C",$Ua);$I=$Ba($ce.pack("H*",$Ba($be.$Kb)));if($ug)$I=pack("H*",$I);return$I;}function
-sdb_request($va,$If=array()){global$b,$g;list($_d,$If['AWSAccessKeyId'],$Xg)=$b->credentials();$If['Action']=$va;$If['Timestamp']=gmdate('Y-m-d\TH:i:s+00:00');$If['Version']='2009-04-15';$If['SignatureVersion']=2;$If['SignatureMethod']='HmacSHA1';ksort($If);$G='';foreach($If
-as$y=>$X)$G.='&'.rawurlencode($y).'='.rawurlencode($X);$G=str_replace('%7E','~',substr($G,1));$G.="&Signature=".urlencode(base64_encode(hmac('sha1',"POST\n".preg_replace('~^https?://~','',$_d)."\n/\n$G",$Xg,true)));@ini_set('track_errors',1);$Sc=@file_get_contents((preg_match('~^https?://~',$_d)?$_d:"http://$_d"),false,stream_context_create(array('http'=>array('method'=>'POST','content'=>$G,'ignore_errors'=>1,))));if(!$Sc){$g->error=$php_errormsg;return
-false;}libxml_use_internal_errors(true);$gj=simplexml_load_string($Sc);if(!$gj){$n=libxml_get_last_error();$g->error=$n->message;return
-false;}if($gj->Errors){$n=$gj->Errors->Error;$g->error="$n->Message ($n->Code)";return
-false;}$g->error='';$Ph=$va."Result";return($gj->$Ph?$gj->$Ph:true);}function
-sdb_request_all($va,$Ph,$If=array(),$Yh=0){$I=array();$xh=($Yh?microtime(true):0);$z=(preg_match('~LIMIT\s+(\d+)\s*$~i',$If['SelectExpression'],$B)?$B[1]:0);do{$gj=sdb_request($va,$If);if(!$gj)break;foreach($gj->$Ph
-as$oc)$I[]=$oc;if($z&&count($I)>=$z){$_GET["next"]=$gj->NextToken;break;}if($Yh&µtime(true)-$xh>$Yh)return
-false;$If['NextToken']=$gj->NextToken;if($z)$If['SelectExpression']=preg_replace('~\d+\s*$~',$z-count($I),$If['SelectExpression']);}while($gj->NextToken);return$I;}$x="simpledb";$pf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","IS NOT NULL");$jd=array();$pd=array("count");$lc=array(array("json"));}$dc["mongo"]="MongoDB";if(isset($_GET["mongo"])){$bg=array("mongo","mongodb");define("DRIVER","mongo");if(class_exists('MongoDB')){class
-Min_DB{var$extension="Mongo",$server_info=MongoClient::VERSION,$error,$last_id,$_link,$_db;function
-connect($Ei,$sf){return@new
-MongoClient($Ei,$sf);}function
-query($G){return
-false;}function
-select_db($j){try{$this->_db=$this->_link->selectDB($j);return
-true;}catch(Exception$_c){$this->error=$_c->getMessage();return
-false;}}function
-quote($Q){return$Q;}}class
-Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
-__construct($H){foreach($H
-as$Yd){$J=array();foreach($Yd
-as$y=>$X){if(is_a($X,'MongoBinData'))$this->_charset[$y]=63;$J[$y]=(is_a($X,'MongoId')?'ObjectId("'.strval($X).'")':(is_a($X,'MongoDate')?gmdate("Y-m-d H:i:s",$X->sec)." GMT":(is_a($X,'MongoBinData')?$X->bin:(is_a($X,'MongoRegex')?strval($X):(is_object($X)?get_class($X):$X)))));}$this->_rows[]=$J;foreach($J
-as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=count($this->_rows);}function
-fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$y=>$X)$I[$y]=$J[$y];next($this->_rows);return$I;}function
-fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
-array_values($I);}function
-fetch_field(){$ee=array_keys($this->_rows[0]);$C=$ee[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class
-Min_Driver
-extends
-Min_SQL{public$eg="_id";function
-select($R,$L,$Z,$md,$uf=array(),$z=1,$E=0,$gg=false){$L=($L==array("*")?array():array_fill_keys($L,true));$oh=array();foreach($uf
-as$X){$X=preg_replace('~ DESC$~','',$X,1,$Cb);$oh[$X]=($Cb?-1:1);}return
-new
-Min_Result($this->_conn->_db->selectCollection($R)->find(array(),$L)->sort($oh)->limit($z!=""?+$z:0)->skip($E*$z));}function
-insert($R,$O){try{$I=$this->_conn->_db->selectCollection($R)->insert($O);$this->_conn->errno=$I['code'];$this->_conn->error=$I['err'];$this->_conn->last_id=$O['_id'];return!$I['err'];}catch(Exception$_c){$this->_conn->error=$_c->getMessage();return
-false;}}}function
-get_databases($Zc){global$g;$I=array();$Pb=$g->_link->listDBs();foreach($Pb['databases']as$l)$I[]=$l['name'];return$I;}function
-count_tables($k){global$g;$I=array();foreach($k
-as$l)$I[$l]=count($g->_link->selectDB($l)->getCollectionNames(true));return$I;}function
-tables_list(){global$g;return
-array_fill_keys($g->_db->getCollectionNames(true),'table');}function
-drop_databases($k){global$g;foreach($k
-as$l){$Gg=$g->_link->selectDB($l)->drop();if(!$Gg['ok'])return
-false;}return
-true;}function
-indexes($R,$h=null){global$g;$I=array();foreach($g->_db->selectCollection($R)->getIndexInfo()as$v){$Wb=array();foreach($v["key"]as$e=>$U)$Wb[]=($U==-1?'1':null);$I[$v["name"]]=array("type"=>($v["name"]=="_id_"?"PRIMARY":($v["unique"]?"UNIQUE":"INDEX")),"columns"=>array_keys($v["key"]),"lengths"=>array(),"descs"=>$Wb,);}return$I;}function
-fields($R){return
-fields_from_edit();}function
-found_rows($S,$Z){global$g;return$g->_db->selectCollection($_GET["select"])->count($Z);}$pf=array("=");}elseif(class_exists('MongoDB\Driver\Manager')){class
-Min_DB{var$extension="MongoDB",$server_info=MONGODB_VERSION,$error,$last_id;var$_link;var$_db,$_db_name;function
-connect($Ei,$sf){$jb='MongoDB\Driver\Manager';return
-new$jb($Ei,$sf);}function
-query($G){return
-false;}function
-select_db($j){$this->_db_name=$j;return
-true;}function
-quote($Q){return$Q;}}class
-Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
-__construct($H){foreach($H
-as$Yd){$J=array();foreach($Yd
-as$y=>$X){if(is_a($X,'MongoDB\BSON\Binary'))$this->_charset[$y]=63;$J[$y]=(is_a($X,'MongoDB\BSON\ObjectID')?'MongoDB\BSON\ObjectID("'.strval($X).'")':(is_a($X,'MongoDB\BSON\UTCDatetime')?$X->toDateTime()->format('Y-m-d H:i:s'):(is_a($X,'MongoDB\BSON\Binary')?$X->bin:(is_a($X,'MongoDB\BSON\Regex')?strval($X):(is_object($X)?json_encode($X,256):$X)))));}$this->_rows[]=$J;foreach($J
-as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=$H->count;}function
-fetch_assoc(){$J=current($this->_rows);if(!$J)return$J;$I=array();foreach($this->_rows[0]as$y=>$X)$I[$y]=$J[$y];next($this->_rows);return$I;}function
-fetch_row(){$I=$this->fetch_assoc();if(!$I)return$I;return
-array_values($I);}function
-fetch_field(){$ee=array_keys($this->_rows[0]);$C=$ee[$this->_offset++];return(object)array('name'=>$C,'charsetnr'=>$this->_charset[$C],);}}class
-Min_Driver
-extends
-Min_SQL{public$eg="_id";function
-select($R,$L,$Z,$md,$uf=array(),$z=1,$E=0,$gg=false){global$g;$L=($L==array("*")?array():array_fill_keys($L,1));if(count($L)&&!isset($L['_id']))$L['_id']=0;$Z=where_to_query($Z);$oh=array();foreach($uf
-as$X){$X=preg_replace('~ DESC$~','',$X,1,$Cb);$oh[$X]=($Cb?-1:1);}if(isset($_GET['limit'])&&is_numeric($_GET['limit'])&&$_GET['limit']>0)$z=$_GET['limit'];$z=min(200,max(1,(int)$z));$lh=$E*$z;$jb='MongoDB\Driver\Query';$G=new$jb($Z,array('projection'=>$L,'limit'=>$z,'skip'=>$lh,'sort'=>$oh));$Jg=$g->_link->executeQuery("$g->_db_name.$R",$G);return
-new
-Min_Result($Jg);}function
-update($R,$O,$qg,$z=0,$M="\n"){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($qg);$jb='MongoDB\Driver\BulkWrite';$Ya=new$jb(array());if(isset($O['_id']))unset($O['_id']);$Dg=array();foreach($O
-as$y=>$Y){if($Y=='NULL'){$Dg[$y]=1;unset($O[$y]);}}$Di=array('$set'=>$O);if(count($Dg))$Di['$unset']=$Dg;$Ya->update($Z,$Di,array('upsert'=>false));$Jg=$g->_link->executeBulkWrite("$l.$R",$Ya);$g->affected_rows=$Jg->getModifiedCount();return
-true;}function
-delete($R,$qg,$z=0){global$g;$l=$g->_db_name;$Z=sql_query_where_parser($qg);$jb='MongoDB\Driver\BulkWrite';$Ya=new$jb(array());$Ya->delete($Z,array('limit'=>$z));$Jg=$g->_link->executeBulkWrite("$l.$R",$Ya);$g->affected_rows=$Jg->getDeletedCount();return
-true;}function
-insert($R,$O){global$g;$l=$g->_db_name;$jb='MongoDB\Driver\BulkWrite';$Ya=new$jb(array());if(isset($O['_id'])&&empty($O['_id']))unset($O['_id']);$Ya->insert($O);$Jg=$g->_link->executeBulkWrite("$l.$R",$Ya);$g->affected_rows=$Jg->getInsertedCount();return
-true;}}function
-get_databases($Zc){global$g;$I=array();$jb='MongoDB\Driver\Command';$rb=new$jb(array('listDatabases'=>1));$Jg=$g->_link->executeCommand('admin',$rb);foreach($Jg
-as$Pb){foreach($Pb->databases
-as$l)$I[]=$l->name;}return$I;}function
-count_tables($k){$I=array();return$I;}function
-tables_list(){global$g;$jb='MongoDB\Driver\Command';$rb=new$jb(array('listCollections'=>1));$Jg=$g->_link->executeCommand($g->_db_name,$rb);$pb=array();foreach($Jg
-as$H)$pb[$H->name]='table';return$pb;}function
-drop_databases($k){return
-false;}function
-indexes($R,$h=null){global$g;$I=array();$jb='MongoDB\Driver\Command';$rb=new$jb(array('listIndexes'=>$R));$Jg=$g->_link->executeCommand($g->_db_name,$rb);foreach($Jg
-as$v){$Wb=array();$f=array();foreach(get_object_vars($v->key)as$e=>$U){$Wb[]=($U==-1?'1':null);$f[]=$e;}$I[$v->name]=array("type"=>($v->name=="_id_"?"PRIMARY":(isset($v->unique)?"UNIQUE":"INDEX")),"columns"=>$f,"lengths"=>array(),"descs"=>$Wb,);}return$I;}function
-fields($R){$p=fields_from_edit();if(!count($p)){global$m;$H=$m->select($R,array("*"),null,null,array(),10);while($J=$H->fetch_assoc()){foreach($J
-as$y=>$X){$J[$y]=null;$p[$y]=array("field"=>$y,"type"=>"string","null"=>($y!=$m->primary),"auto_increment"=>($y==$m->primary),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,),);}}}return$p;}function
-found_rows($S,$Z){global$g;$Z=where_to_query($Z);$jb='MongoDB\Driver\Command';$rb=new$jb(array('count'=>$S['Name'],'query'=>$Z));$Jg=$g->_link->executeCommand($g->_db_name,$rb);$gi=$Jg->toArray();return$gi[0]->n;}function
-sql_query_where_parser($qg){$qg=trim(preg_replace('/WHERE[\s]?[(]?\(?/','',$qg));$qg=preg_replace('/\)\)\)$/',')',$qg);$dj=explode(' AND ',$qg);$ej=explode(') OR (',$qg);$Z=array();foreach($dj
-as$bj)$Z[]=trim($bj);if(count($ej)==1)$ej=array();elseif(count($ej)>1)$Z=array();return
-where_to_query($Z,$ej);}function
-where_to_query($Zi=array(),$aj=array()){global$b;$Kb=array();foreach(array('and'=>$Zi,'or'=>$aj)as$U=>$Z){if(is_array($Z)){foreach($Z
-as$Gc){list($mb,$nf,$X)=explode(" ",$Gc,3);if($mb=="_id"){$X=str_replace('MongoDB\BSON\ObjectID("',"",$X);$X=str_replace('")',"",$X);$jb='MongoDB\BSON\ObjectID';$X=new$jb($X);}if(!in_array($nf,$b->operators))continue;if(preg_match('~^\(f\)(.+)~',$nf,$B)){$X=(float)$X;$nf=$B[1];}elseif(preg_match('~^\(date\)(.+)~',$nf,$B)){$Mb=new
-DateTime($X);$jb='MongoDB\BSON\UTCDatetime';$X=new$jb($Mb->getTimestamp()*1000);$nf=$B[1];}switch($nf){case'=':$nf='$eq';break;case'!=':$nf='$ne';break;case'>':$nf='$gt';break;case'<':$nf='$lt';break;case'>=':$nf='$gte';break;case'<=':$nf='$lte';break;case'regex':$nf='$regex';break;default:continue;}if($U=='and')$Kb['$and'][]=array($mb=>array($nf=>$X));elseif($U=='or')$Kb['$or'][]=array($mb=>array($nf=>$X));}}}return$Kb;}$pf=array("=","!=",">","<",">=","<=","regex","(f)=","(f)!=","(f)>","(f)<","(f)>=","(f)<=","(date)=","(date)!=","(date)>","(date)<","(date)>=","(date)<=",);}function
-table($u){return$u;}function
-idf_escape($u){return$u;}function
-table_status($C="",$Nc=false){$I=array();foreach(tables_list()as$R=>$U){$I[$R]=array("Name"=>$R);if($C==$R)return$I[$R];}return$I;}function
-create_database($l,$d){return
-true;}function
-last_id(){global$g;return$g->last_id;}function
-error(){global$g;return
-h($g->error);}function
-collations(){return
-array();}function
-logged_user(){global$b;$Fb=$b->credentials();return$Fb[1];}function
-connect(){global$b;$g=new
-Min_DB;list($N,$V,$F)=$b->credentials();$sf=array();if($V.$F!=""){$sf["username"]=$V;$sf["password"]=$F;}$l=$b->database();if($l!="")$sf["db"]=$l;try{$g->_link=$g->connect("mongodb://$N",$sf);if($F!=""){$sf["password"]="";try{$g->connect("mongodb://$N",$sf);return'Database does not support password.';}catch(Exception$_c){}}return$g;}catch(Exception$_c){return$_c->getMessage();}}function
-alter_indexes($R,$c){global$g;foreach($c
-as$X){list($U,$C,$O)=$X;if($O=="DROP")$I=$g->_db->command(array("deleteIndexes"=>$R,"index"=>$C));else{$f=array();foreach($O
-as$e){$e=preg_replace('~ DESC$~','',$e,1,$Cb);$f[$e]=($Cb?-1:1);}$I=$g->_db->selectCollection($R)->ensureIndex($f,array("unique"=>($U=="UNIQUE"),"name"=>$C,));}if($I['errmsg']){$g->error=$I['errmsg'];return
-false;}}return
-true;}function
-support($Oc){return
-preg_match("~database|indexes~",$Oc);}function
-db_collation($l,$ob){}function
-information_schema(){}function
-is_view($S){}function
-convert_field($o){}function
-unconvert_field($o,$I){return$I;}function
-foreign_keys($R){return
-array();}function
-fk_support($S){}function
-engines(){return
-array();}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){global$g;if($R==""){$g->_db->createCollection($C);return
-true;}}function
-drop_tables($T){global$g;foreach($T
-as$R){$Gg=$g->_db->selectCollection($R)->drop();if(!$Gg['ok'])return
-false;}return
-true;}function
-truncate_tables($T){global$g;foreach($T
-as$R){$Gg=$g->_db->selectCollection($R)->remove();if(!$Gg['ok'])return
-false;}return
-true;}$x="mongo";$jd=array();$pd=array();$lc=array(array("json"));}$dc["elastic"]="Elasticsearch (beta)";if(isset($_GET["elastic"])){$bg=array("json + allow_url_fopen");define("DRIVER","elastic");if(function_exists('json_decode')&&ini_bool('allow_url_fopen')){class
-Min_DB{var$extension="JSON",$server_info,$errno,$error,$_url;function
-rootQuery($Sf,$yb=array(),$Ne='GET'){@ini_set('track_errors',1);$Sc=@file_get_contents("$this->_url/".ltrim($Sf,'/'),false,stream_context_create(array('http'=>array('method'=>$Ne,'content'=>$yb===null?$yb:json_encode($yb),'header'=>'Content-Type: application/json','ignore_errors'=>1,))));if(!$Sc){$this->error=$php_errormsg;return$Sc;}if(!preg_match('~^HTTP/[0-9.]+ 2~i',$http_response_header[0])){$this->error=$Sc;return
-false;}$I=json_decode($Sc,true);if($I===null){$this->errno=json_last_error();if(function_exists('json_last_error_msg'))$this->error=json_last_error_msg();else{$xb=get_defined_constants(true);foreach($xb['json']as$C=>$Y){if($Y==$this->errno&&preg_match('~^JSON_ERROR_~',$C)){$this->error=$C;break;}}}}return$I;}function
-query($Sf,$yb=array(),$Ne='GET'){return$this->rootQuery(($this->_db!=""?"$this->_db/":"/").ltrim($Sf,'/'),$yb,$Ne);}function
-connect($N,$V,$F){preg_match('~^(https?://)?(.*)~',$N,$B);$this->_url=($B[1]?$B[1]:"http://")."$V:$F@$B[2]";$I=$this->query('');if($I)$this->server_info=$I['version']['number'];return(bool)$I;}function
-select_db($j){$this->_db=$j;return
-true;}function
-quote($Q){return$Q;}}class
-Min_Result{var$num_rows,$_rows;function
-__construct($K){$this->num_rows=count($this->_rows);$this->_rows=$K;reset($this->_rows);}function
-fetch_assoc(){$I=current($this->_rows);next($this->_rows);return$I;}function
-fetch_row(){return
-array_values($this->fetch_assoc());}}}class
-Min_Driver
-extends
-Min_SQL{function
-select($R,$L,$Z,$md,$uf=array(),$z=1,$E=0,$gg=false){global$b;$Kb=array();$G="$R/_search";if($L!=array("*"))$Kb["fields"]=$L;if($uf){$oh=array();foreach($uf
-as$mb){$mb=preg_replace('~ DESC$~','',$mb,1,$Cb);$oh[]=($Cb?array($mb=>"desc"):$mb);}$Kb["sort"]=$oh;}if($z){$Kb["size"]=+$z;if($E)$Kb["from"]=($E*$z);}foreach($Z
-as$X){list($mb,$nf,$X)=explode(" ",$X,3);if($mb=="_id")$Kb["query"]["ids"]["values"][]=$X;elseif($mb.$X!=""){$Th=array("term"=>array(($mb!=""?$mb:"_all")=>$X));if($nf=="=")$Kb["query"]["filtered"]["filter"]["and"][]=$Th;else$Kb["query"]["filtered"]["query"]["bool"]["must"][]=$Th;}}if($Kb["query"]&&!$Kb["query"]["filtered"]["query"]&&!$Kb["query"]["ids"])$Kb["query"]["filtered"]["query"]=array("match_all"=>array());$xh=microtime(true);$Wg=$this->_conn->query($G,$Kb);if($gg)echo$b->selectQuery("$G: ".print_r($Kb,true),$xh,!$Wg);if(!$Wg)return
-false;$I=array();foreach($Wg['hits']['hits']as$zd){$J=array();if($L==array("*"))$J["_id"]=$zd["_id"];$p=$zd['_source'];if($L!=array("*")){$p=array();foreach($L
-as$y)$p[$y]=$zd['fields'][$y];}foreach($p
-as$y=>$X){if($Kb["fields"])$X=$X[0];$J[$y]=(is_array($X)?json_encode($X):$X);}$I[]=$J;}return
-new
-Min_Result($I);}function
-update($U,$vg,$qg,$z=0,$M="\n"){$Qf=preg_split('~ *= *~',$qg);if(count($Qf)==2){$t=trim($Qf[1]);$G="$U/$t";return$this->_conn->query($G,$vg,'POST');}return
-false;}function
-insert($U,$vg){$t="";$G="$U/$t";$Gg=$this->_conn->query($G,$vg,'POST');$this->_conn->last_id=$Gg['_id'];return$Gg['created'];}function
-delete($U,$qg,$z=0){$Cd=array();if(is_array($_GET["where"])&&$_GET["where"]["_id"])$Cd[]=$_GET["where"]["_id"];if(is_array($_POST['check'])){foreach($_POST['check']as$cb){$Qf=preg_split('~ *= *~',$cb);if(count($Qf)==2)$Cd[]=trim($Qf[1]);}}$this->_conn->affected_rows=0;foreach($Cd
-as$t){$G="{$U}/{$t}";$Gg=$this->_conn->query($G,'{}','DELETE');if(is_array($Gg)&&$Gg['found']==true)$this->_conn->affected_rows++;}return$this->_conn->affected_rows;}}function
-connect(){global$b;$g=new
-Min_DB;list($N,$V,$F)=$b->credentials();if($F!=""&&$g->connect($N,$V,""))return'Database does not support password.';if($g->connect($N,$V,$F))return$g;return$g->error;}function
-support($Oc){return
-preg_match("~database|table|columns~",$Oc);}function
-logged_user(){global$b;$Fb=$b->credentials();return$Fb[1];}function
-get_databases(){global$g;$I=$g->rootQuery('_aliases');if($I){$I=array_keys($I);sort($I,SORT_STRING);}return$I;}function
-collations(){return
-array();}function
-db_collation($l,$ob){}function
-engines(){return
-array();}function
-count_tables($k){global$g;$I=array();$H=$g->query('_stats');if($H&&$H['indices']){$Jd=$H['indices'];foreach($Jd
-as$Id=>$yh){$Hd=$yh['total']['indexing'];$I[$Id]=$Hd['index_total'];}}return$I;}function
-tables_list(){global$g;$I=$g->query('_mapping');if($I)$I=array_fill_keys(array_keys($I[$g->_db]["mappings"]),'table');return$I;}function
-table_status($C="",$Nc=false){global$g;$Wg=$g->query("_search",array("size"=>0,"aggregations"=>array("count_by_type"=>array("terms"=>array("field"=>"_type")))),"POST");$I=array();if($Wg){$T=$Wg["aggregations"]["count_by_type"]["buckets"];foreach($T
-as$R){$I[$R["key"]]=array("Name"=>$R["key"],"Engine"=>"table","Rows"=>$R["doc_count"],);if($C!=""&&$C==$R["key"])return$I[$C];}}return$I;}function
-error(){global$g;return
-h($g->error);}function
-information_schema(){}function
-is_view($S){}function
-indexes($R,$h=null){return
-array(array("type"=>"PRIMARY","columns"=>array("_id")),);}function
-fields($R){global$g;$H=$g->query("$R/_mapping");$I=array();if($H){$we=$H[$R]['properties'];if(!$we)$we=$H[$g->_db]['mappings'][$R]['properties'];if($we){foreach($we
-as$C=>$o){$I[$C]=array("field"=>$C,"full_type"=>$o["type"],"type"=>$o["type"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);if($o["properties"]){unset($I[$C]["privileges"]["insert"]);unset($I[$C]["privileges"]["update"]);}}}}return$I;}function
-foreign_keys($R){return
-array();}function
-table($u){return$u;}function
-idf_escape($u){return$u;}function
-convert_field($o){}function
-unconvert_field($o,$I){return$I;}function
-fk_support($S){}function
-found_rows($S,$Z){return
-null;}function
-create_database($l){global$g;return$g->rootQuery(urlencode($l),null,'PUT');}function
-drop_databases($k){global$g;return$g->rootQuery(urlencode(implode(',',$k)),array(),'DELETE');}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){global$g;$mg=array();foreach($p
-as$Lc){$Qc=trim($Lc[1][0]);$Rc=trim($Lc[1][1]?$Lc[1][1]:"text");$mg[$Qc]=array('type'=>$Rc);}if(!empty($mg))$mg=array('properties'=>$mg);return$g->query("_mapping/{$C}",$mg,'PUT');}function
-drop_tables($T){global$g;$I=true;foreach($T
-as$R)$I=$I&&$g->query(urlencode($R),array(),'DELETE');return$I;}function
-last_id(){global$g;return$g->last_id;}$x="elastic";$pf=array("=","query");$jd=array();$pd=array();$lc=array(array("json"));$wi=array();$Ah=array();foreach(array('Numbers'=>array("long"=>3,"integer"=>5,"short"=>8,"byte"=>10,"double"=>20,"float"=>66,"half_float"=>12,"scaled_float"=>21),'Date and time'=>array("date"=>10),'Strings'=>array("string"=>65535,"text"=>65535),'Binary'=>array("binary"=>255),)as$y=>$X){$wi+=$X;$Ah[$y]=array_keys($X);}}$dc=array("server"=>"MySQL")+$dc;if(!defined("DRIVER")){$bg=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class
-Min_DB
-extends
-MySQLi{var$extension="MySQLi";function
-__construct(){parent::init();}function
-connect($N="",$V="",$F="",$j=null,$Xf=null,$nh=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($_d,$Xf)=explode(":",$N,2);$wh=$b->connectSsl();if($wh)$this->ssl_set($wh['key'],$wh['cert'],$wh['ca'],'','');$I=@$this->real_connect(($N!=""?$_d:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),$j,(is_numeric($Xf)?$Xf:ini_get("mysqli.default_port")),(!is_numeric($Xf)?$Xf:$nh),($wh?64:0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$I;}function
-set_charset($bb){if(parent::set_charset($bb))return
-true;parent::set_charset('utf8');return$this->query("SET NAMES $bb");}function
-result($G,$o=0){$H=$this->query($G);if(!$H)return
-false;$J=$H->fetch_array();return$J[$o];}function
-quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
-Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
-connect($N,$V,$F){if(ini_bool("mysql.allow_local_infile")){$this->error=sprintf('Disable %s or enable %s or %s extensions.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
-false;}$this->_link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$F"!=""?$F:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
-set_charset($bb){if(function_exists('mysql_set_charset')){if(mysql_set_charset($bb,$this->_link))return
-true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $bb");}function
-quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function
-select_db($j){return
-mysql_select_db($j,$this->_link);}function
-query($G,$xi=false){$H=@($xi?mysql_unbuffered_query($G,$this->_link):mysql_query($G,$this->_link));$this->error="";if(!$H){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
-false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
-true;}return
-new
-Min_Result($H);}function
-multi_query($G){return$this->_result=$this->query($G);}function
-store_result(){return$this->_result;}function
-next_result(){return
-false;}function
-result($G,$o=0){$H=$this->query($G);if(!$H||!$H->num_rows)return
-false;return
-mysql_result($H->_result,0,$o);}}class
-Min_Result{var$num_rows,$_result,$_offset=0;function
-__construct($H){$this->_result=$H;$this->num_rows=mysql_num_rows($H);}function
-fetch_assoc(){return
-mysql_fetch_assoc($this->_result);}function
-fetch_row(){return
-mysql_fetch_row($this->_result);}function
-fetch_field(){$I=mysql_fetch_field($this->_result,$this->_offset++);$I->orgtable=$I->table;$I->orgname=$I->name;$I->charsetnr=($I->blob?63:0);return$I;}function
-__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
-Min_DB
-extends
-Min_PDO{var$extension="PDO_MySQL";function
-connect($N,$V,$F){global$b;$sf=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$wh=$b->connectSsl();if($wh)$sf+=array(PDO::MYSQL_ATTR_SSL_KEY=>$wh['key'],PDO::MYSQL_ATTR_SSL_CERT=>$wh['cert'],PDO::MYSQL_ATTR_SSL_CA=>$wh['ca'],);$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$sf);return
-true;}function
-set_charset($bb){$this->query("SET NAMES $bb");}function
-select_db($j){return$this->query("USE ".idf_escape($j));}function
-query($G,$xi=false){$this->setAttribute(1000,!$xi);return
-parent::query($G,$xi);}}}class
-Min_Driver
-extends
-Min_SQL{function
-insert($R,$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
-insertUpdate($R,$K,$eg){$f=array_keys(reset($K));$cg="INSERT INTO ".table($R)." (".implode(", ",$f).") VALUES\n";$Oi=array();foreach($f
-as$y)$Oi[$y]="$y = VALUES($y)";$Dh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Oi);$Oi=array();$qe=0;foreach($K
-as$O){$Y="(".implode(", ",$O).")";if($Oi&&(strlen($cg)+$qe+strlen($Y)+strlen($Dh)>1e6)){if(!queries($cg.implode(",\n",$Oi).$Dh))return
-false;$Oi=array();$qe=0;}$Oi[]=$Y;$qe+=strlen($Y)+2;}return
-queries($cg.implode(",\n",$Oi).$Dh);}function
-slowQuery($G,$Yh){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$Yh FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($Yh*1000).") */ $B[2]";}}function
-convertSearch($u,$X,$o){return(preg_match('~char|text|enum|set~',$o["type"])&&!preg_match("~^utf8~",$o["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->_conn).")":$u);}function
-warnings(){$H=$this->_conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();select($H);return
-ob_get_clean();}}function
-tableHelp($C){$xe=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return
-strtolower(($xe?"information-schema-$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($xe?"mysql$C-table/":"system-database.html");}}function
-idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
-table($u){return
-idf_escape($u);}function
-connect(){global$b,$wi,$Ah;$g=new
-Min_DB;$Fb=$b->credentials();if($g->connect($Fb[0],$Fb[1],$Fb[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)){$Ah['Strings'][]="json";$wi["json"]=4294967295;}return$g;}$I=$g->error;if(function_exists('iconv')&&!is_utf8($I)&&strlen($Sg=iconv("windows-1250","utf-8",$I))>strlen($I))$I=$Sg;return$I;}function
-get_databases($Zc){$I=get_session("dbs");if($I===null){$G=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$I=($Zc?slow_query($G):get_vals($G));restart_session();set_session("dbs",$I);stop_session();}return$I;}function
-limit($G,$Z,$z,$D=0,$M=" "){return" $G$Z".($z!==null?$M."LIMIT $z".($D?" OFFSET $D":""):"");}function
-limit1($R,$G,$Z,$M="\n"){return
-limit($G,$Z,1,0,$M);}function
-db_collation($l,$ob){global$g;$I=null;$i=$g->result("SHOW CREATE DATABASE ".idf_escape($l),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$B))$I=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$B))$I=$ob[$B[1]][-1];return$I;}function
-engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}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($k){$I=array();foreach($k
-as$l)$I[$l]=count(get_vals("SHOW TABLES IN ".idf_escape($l)));return$I;}function
-table_status($C="",$Nc=false){$I=array();foreach(get_rows($Nc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($C!="")return$J;$I[$J["Name"]]=$J;}return$I;}function
-is_view($S){return$S["Engine"]===null;}function
-fk_support($S){return
-preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function
-fields($R){$I=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($R))as$J){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$J["Type"],$B);$I[$J["Field"]]=array("field"=>$J["Field"],"full_type"=>$J["Type"],"type"=>$B[1],"length"=>$B[2],"unsigned"=>ltrim($B[3].$B[4]),"default"=>($J["Default"]!=""||preg_match("~char|set~",$B[1])?$J["Default"]:null),"null"=>($J["Null"]=="YES"),"auto_increment"=>($J["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$J["Extra"],$B)?$B[1]:""),"collation"=>$J["Collation"],"privileges"=>array_flip(preg_split('~, *~',$J["Privileges"])),"comment"=>$J["Comment"],"primary"=>($J["Key"]=="PRI"),);}return$I;}function
-indexes($R,$h=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$J){$C=$J["Key_name"];$I[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?($J["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$I[$C]["columns"][]=$J["Column_name"];$I[$C]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$C]["descs"][]=null;}return$I;}function
-foreign_keys($R){global$g,$kf;static$Uf='`(?:[^`]|``)+`';$I=array();$Db=$g->result("SHOW CREATE TABLE ".table($R),1);if($Db){preg_match_all("~CONSTRAINT ($Uf) FOREIGN KEY ?\\(((?:$Uf,? ?)+)\\) REFERENCES ($Uf)(?:\\.($Uf))? \\(((?:$Uf,? ?)+)\\)(?: ON DELETE ($kf))?(?: ON UPDATE ($kf))?~",$Db,$_e,PREG_SET_ORDER);foreach($_e
-as$B){preg_match_all("~$Uf~",$B[2],$ph);preg_match_all("~$Uf~",$B[5],$Qh);$I[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('idf_unescape',$ph[0]),"target"=>array_map('idf_unescape',$Qh[0]),"on_delete"=>($B[6]?$B[6]:"RESTRICT"),"on_update"=>($B[7]?$B[7]:"RESTRICT"),);}}return$I;}function
-view($C){global$g;return
-array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$g->result("SHOW CREATE VIEW ".table($C),1)));}function
-collations(){$I=array();foreach(get_rows("SHOW COLLATION")as$J){if($J["Default"])$I[$J["Charset"]][-1]=$J["Collation"];else$I[$J["Charset"]][]=$J["Collation"];}ksort($I);foreach($I
-as$y=>$X)asort($I[$y]);return$I;}function
-information_schema($l){return(min_version(5)&&$l=="information_schema")||(min_version(5.5)&&$l=="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($l,$d){return
-queries("CREATE DATABASE ".idf_escape($l).($d?" COLLATE ".q($d):""));}function
-drop_databases($k){$I=apply_queries("DROP DATABASE",$k,'idf_escape');restart_session();set_session("dbs",null);return$I;}function
-rename_database($C,$d){$I=false;if(create_database($C,$d)){$Eg=array();foreach(tables_list()as$R=>$U)$Eg[]=table($R)." TO ".idf_escape($C).".".table($R);$I=(!$Eg||queries("RENAME TABLE ".implode(", ",$Eg)));if($I)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$I;}function
-auto_increment(){$Ma=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Ma="";break;}if($v["type"]=="PRIMARY")$Ma=" UNIQUE";}}return" AUTO_INCREMENT$Ma";}function
-alter_table($R,$C,$p,$bd,$tb,$tc,$d,$La,$Of){$c=array();foreach($p
-as$o)$c[]=($o[1]?($R!=""?($o[0]!=""?"CHANGE ".idf_escape($o[0]):"ADD"):" ")." ".implode($o[1]).($R!=""?$o[2]:""):"DROP ".idf_escape($o[0]));$c=array_merge($c,$bd);$P=($tb!==null?" COMMENT=".q($tb):"").($tc?" ENGINE=".q($tc):"").($d?" COLLATE ".q($d):"").($La!=""?" AUTO_INCREMENT=$La":"");if($R=="")return
-queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$c)."\n)$P$Of");if($R!=$C)$c[]="RENAME TO ".table($C);if($P)$c[]=ltrim($P);return($c||$Of?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$Of):true);}function
-alter_indexes($R,$c){foreach($c
-as$y=>$X)$c[$y]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
-queries("ALTER TABLE ".table($R).implode(",",$c));}function
-truncate_tables($T){return
-apply_queries("TRUNCATE TABLE",$T);}function
-drop_views($Ti){return
-queries("DROP VIEW ".implode(", ",array_map('table',$Ti)));}function
-drop_tables($T){return
-queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function
-move_tables($T,$Ti,$Qh){$Eg=array();foreach(array_merge($T,$Ti)as$R)$Eg[]=table($R)." TO ".idf_escape($Qh).".".table($R);return
-queries("RENAME TABLE ".implode(", ",$Eg));}function
-copy_tables($T,$Ti,$Qh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
-as$R){$C=($Qh==DB?table("copy_$R"):idf_escape($Qh).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $C")||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return
-false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){$qi=$J["Trigger"];if(!queries("CREATE TRIGGER ".($Qh==DB?idf_escape("copy_$qi"):idf_escape($Qh).".".idf_escape($qi))." $J[Timing] $J[Event] ON $C FOR EACH ROW\n$J[Statement];"))return
-false;}}foreach($Ti
-as$R){$C=($Qh==DB?table("copy_$R"):idf_escape($Qh).".".table($R));$Si=view($R);if(!queries("DROP VIEW IF EXISTS $C")||!queries("CREATE VIEW $C AS $Si[select]"))return
-false;}return
-true;}function
-trigger($C){if($C=="")return
-array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));return
-reset($K);}function
-triggers($R){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J)$I[$J["Trigger"]]=array($J["Timing"],$J["Event"]);return$I;}function
-trigger_options(){return
-array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
-routine($C,$U){global$g,$vc,$Od,$wi;$Ca=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$qh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$vi="((".implode("|",array_merge(array_keys($wi),$Ca)).")\\b(?:\\s*\\(((?:[^'\")]|$vc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Uf="$qh*(".($U=="FUNCTION"?"":$Od).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$vi";$i=$g->result("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$Uf\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$vi\\s+":"")."(.*)~is",$i,$B);$p=array();preg_match_all("~$Uf\\s*,?~is",$B[1],$_e,PREG_SET_ORDER);foreach($_e
-as$Hf){$C=str_replace("``","`",$Hf[2]).$Hf[3];$p[]=array("field"=>$C,"type"=>strtolower($Hf[5]),"length"=>preg_replace_callback("~$vc~s",'normalize_enum',$Hf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Hf[8] $Hf[7]"))),"null"=>1,"full_type"=>$Hf[4],"inout"=>strtoupper($Hf[1]),"collation"=>strtolower($Hf[9]),);}if($U!="FUNCTION")return
-array("fields"=>$p,"definition"=>$B[11]);return
-array("fields"=>$p,"returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",);}function
-routines(){return
-get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
-routine_languages(){return
-array();}function
-routine_id($C,$J){return
-idf_escape($C);}function
-last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
-explain($g,$G){return$g->query("EXPLAIN ".(min_version(5.1)?"PARTITIONS ":"").$G);}function
-found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
-types(){return
-array();}function
-schemas(){return
-array();}function
-get_schema(){return"";}function
-set_schema($Ug){return
-true;}function
-create_sql($R,$La,$Bh){global$g;$I=$g->result("SHOW CREATE TABLE ".table($R),1);if(!$La)$I=preg_replace('~ AUTO_INCREMENT=\d+~','',$I);return$I;}function
-truncate_sql($R){return"TRUNCATE ".table($R);}function
-use_sql($j){return"USE ".idf_escape($j);}function
-trigger_sql($R){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$J)$I.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}function
-show_variables(){return
-get_key_vals("SHOW VARIABLES");}function
-process_list(){return
-get_rows("SHOW FULL PROCESSLIST");}function
-show_status(){return
-get_key_vals("SHOW STATUS");}function
-convert_field($o){if(preg_match("~binary~",$o["type"]))return"HEX(".idf_escape($o["field"]).")";if($o["type"]=="bit")return"BIN(".idf_escape($o["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($o["field"]).")";}function
-unconvert_field($o,$I){if(preg_match("~binary~",$o["type"]))$I="UNHEX($I)";if($o["type"]=="bit")$I="CONV($I, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))$I=(min_version(8)?"ST_":"")."GeomFromText($I)";return$I;}function
-support($Oc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view"))."~",$Oc);}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");}$x="sql";$wi=array();$Ah=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$y=>$X){$wi+=$X;$Ah[$y]=array_keys($X);}$Ci=array("unsigned","zerofill","unsigned zerofill");$pf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$jd=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");$pd=array("avg","count","count distinct","group_concat","max","min","sum");$lc=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",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\1',$_SERVER["REQUEST_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"])."&":""):''));$ia="4.6.3";class
-Adminer{var$operators;function
-name(){return"Adminer";}function
-credentials(){return
-array(SERVER,$_GET["username"],get_password());}function
-connectSsl(){}function
-permanentLogin($i=false){return
-password_file($i);}function
-bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
-serverName($N){return
-h($N);}function
-database(){return
-DB;}function
-databases($Zc=true){return
-get_databases($Zc);}function
-schemas(){return
-schemas();}function
-queryTimeout(){return
-2;}function
-headers(){}function
-csp(){return
-csp();}function
-head(){return
-true;}function
-css(){$I=array();$Tc="adminer.css";if(file_exists($Tc))$I[]=$Tc;return$I;}function
-loginForm(){global$dc;echo" \n",$this->loginFormField('driver','| '.'System'.' | ',html_select("auth[driver]",$dc,DRIVER)."\n"),$this->loginFormField('server',' |
|---|
| '.'Server'.' | ',''."\n"),$this->loginFormField('username',' |
|---|
| '.'Username'.' | ',''.script("focus(qs('#username'));")),$this->loginFormField('password',' |
|---|
| '.'Password'.' | ',''."\n"),$this->loginFormField('db',' |
|---|
| '.'Database'.' | ',''."\n")," |
|---|
\n","\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
-loginFormField($C,$wd,$Y){return$wd.$Y;}function
-login($ue,$F){if($F=="")return
-sprintf('Adminer does not support accessing a database without a password, more information.',target_blank());return
-true;}function
-tableName($Hh){return
-h($Hh["Name"]);}function
-fieldName($o,$uf=0){return''.h($o["field"]).'';}function
-selectLinks($Hh,$O=""){global$x,$m;echo' ';$te=array("select"=>'Select data');if(support("table")||support("indexes"))$te["table"]='Show structure';if(support("table")){if(is_view($Hh))$te["view"]='Alter view';else$te["create"]='Alter table';}if($O!==null)$te["edit"]='New item';$C=$Hh["Name"];foreach($te
-as$y=>$X)echo" $X";echo
-doc_link(array($x=>$m->tableHelp($C)),"?"),"\n";}function
-foreignKeys($R){return
-foreign_keys($R);}function
-backwardKeys($R,$Gh){return
-array();}function
-backwardKeysPrint($Oa,$J){}function
-selectQuery($G,$xh,$Mc=false){global$x,$m;$I=" \n";if(!$Mc&&($Wi=$m->warnings())){$t="warnings";$I=", ".'Warnings'."".script("qsl('a').onclick = partial(toggle, '$t');","")."$I\n$Wi \n";}return"".h(str_replace("\n"," ",$G))." (".format_time($xh).")".(support("sql")?" ".'Edit'."":"").$I;}function
-sqlCommandQuery($G){return
-shorten_utf8(trim($G),1000);}function
-rowDescription($R){return"";}function
-rowDescriptions($K,$cd){return$K;}function
-selectLink($X,$o){}function
-selectVal($X,$_,$o,$Bf){$I=($X===null?"NULL":(preg_match("~char|binary|boolean~",$o["type"])&&!preg_match("~var~",$o["type"])?"$X":$X));if(preg_match('~blob|bytea|raw|file~',$o["type"])&&!is_utf8($X))$I="".lang(array('%d byte','%d bytes'),strlen($Bf))."";if(preg_match('~json~',$o["type"]))$I="$I";return($_?"$I":$I);}function
-editVal($X,$o){return$X;}function
-tableStructurePrint($p){echo"
\n","| ".'Column'." | ".'Type'.(support("comment")?" | ".'Comment':"")." | \n";foreach($p
-as$o){echo"| ".h($o["field"])," | ".h($o["full_type"])."",($o["null"]?" NULL":""),($o["auto_increment"]?" ".'Auto Increment'."":""),(isset($o["default"])?" [".h($o["default"])."]":""),(support("comment")?" | ".h($o["comment"]):""),"\n";}echo" |
|---|
\n";}function
-tableIndexesPrint($w){echo"\n";foreach($w
-as$C=>$v){ksort($v["columns"]);$gg=array();foreach($v["columns"]as$y=>$X)$gg[]="".h($X)."".($v["lengths"][$y]?"(".$v["lengths"][$y].")":"").($v["descs"][$y]?" DESC":"");echo"| $v[type] | ".implode(", ",$gg)."\n";}echo" |
|---|
\n";}function
-selectColumnsPrint($L,$f){global$jd,$pd;print_fieldset("select",'Select',$L);$s=0;$L[""]=array();foreach($L
-as$y=>$X){$X=$_GET["columns"][$y];$e=select_input(" name='columns[$s][col]'",$f,$X["col"],($y!==""?"selectFieldChange":"selectAddRow"));echo"".($jd||$pd?"".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($y!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($e)":$e)." \n";$s++;}echo"\n";}function
-selectSearchPrint($Z,$f,$w){print_fieldset("search",'Search',$Z);foreach($w
-as$s=>$v){if($v["type"]=="FULLTEXT"){echo"(".implode(", ",array_map('h',$v["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL")," \n";}}$ab="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"".select_input(" name='where[$s][col]'",$f,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$s][op]",$this->operators,$X["op"],$ab),"",script("mixin(qsl('input'), {oninput: function () { $ab }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});","")," \n";}}echo"\n";}function
-selectOrderPrint($uf,$f,$w){print_fieldset("sort",'Sort',$uf);$s=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"".select_input(" name='order[$s]'",$f,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$y]),'descending')." \n";$s++;}}echo"".select_input(" name='order[$s]'",$f,"","selectAddRow"),checkbox("desc[$s]",1,false,'descending')." \n","\n";}function
-selectLimitPrint($z){echo"\n";}function
-selectLengthPrint($Wh){if($Wh!==null){echo"\n";}}function
-selectActionPrint($w){echo"\n";}function
-selectCommandPrint(){return!information_schema(DB);}function
-selectImportPrint(){return!information_schema(DB);}function
-selectEmailPrint($qc,$f){}function
-selectColumnsProcess($f,$w){global$jd,$pd;$L=array();$md=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$jd)||in_array($X["fun"],$pd)))){$L[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$pd))$md[]=$L[$y];}}return
-array($L,$md);}function
-selectSearchProcess($p,$w){global$g,$m;$I=array();foreach($w
-as$s=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$s]!="")$I[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$y=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$cg="";$vb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Ed=process_length($X["val"]);$vb.=" ".($Ed!=""?$Ed:"(NULL)");}elseif($X["op"]=="SQL")$vb=" $X[val]";elseif($X["op"]=="LIKE %%")$vb=" LIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$vb=" ILIKE ".$this->processInput($p[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$cg="$X[op](".q($X["val"]).", ";$vb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$vb.=" ".$this->processInput($p[$X["col"]],$X["val"]);if($X["col"]!="")$I[]=$cg.$m->convertSearch(idf_escape($X["col"]),$X,$p[$X["col"]]).$vb;else{$qb=array();foreach($p
-as$C=>$o){if((preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$o["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$o["type"])))$qb[]=$cg.$m->convertSearch(idf_escape($C),$X,$o).$vb;}$I[]=($qb?"(".implode(" OR ",$qb).")":"1 = 0");}}}return$I;}function
-selectOrderProcess($p,$w){$I=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$I;}function
-selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
-selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
-selectEmailProcess($Z,$cd){return
-false;}function
-selectQueryBuild($L,$Z,$md,$uf,$z,$E){return"";}function
-messageQuery($G,$Xh,$Mc=false){global$x,$m;restart_session();$xd=&get_session("queries");if(!$xd[$_GET["db"]])$xd[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n...";$xd[$_GET["db"]][]=array($G,time(),$Xh);$uh="sql-".count($xd[$_GET["db"]]);$I="".'SQL command'."\n";if(!$Mc&&($Wi=$m->warnings())){$t="warnings-".count($xd[$_GET["db"]]);$I="".'Warnings'.", $I\n$Wi \n";}return" ".@date("H:i:s").""." $I".shorten_utf8($G,1000)."
".($Xh?" ($Xh)":'').(support("sql")?' '.'Edit'.'':'').' ';}function
-editFunctions($o){global$lc;$I=($o["null"]?"NULL/":"");foreach($lc
-as$y=>$jd){if(!$y||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($jd
-as$Uf=>$X){if(!$Uf||preg_match("~$Uf~",$o["type"]))$I.="/$X";}if($y&&!preg_match('~set|blob|bytea|raw|file~',$o["type"]))$I.="/SQL";}}if($o["auto_increment"]&&!isset($_GET["select"])&&!where($_GET))$I='Auto Increment';return
-explode("/",$I);}function
-editInput($R,$o,$Ja,$Y){if($o["type"]=="enum")return(isset($_GET["select"])?" ":"").($o["null"]?" ":"").enum_input("radio",$Ja,$o,$Y,0);return"";}function
-editHint($R,$o,$Y){return"";}function
-processInput($o,$Y,$r=""){if($r=="SQL")return$Y;$C=$o["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$I="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$I=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$I=idf_escape($C)." $r $I";elseif(preg_match('~^[+-] interval$~',$r))$I=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$I="$r(".idf_escape($C).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$I="$r($I)";return
-unconvert_field($o,$I);}function
-dumpOutput(){$I=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function
-dumpFormat(){return
-array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
-dumpDatabase($l){}function
-dumpTable($R,$Bh,$Xd=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Bh)dump_csv(array_keys(fields($R)));}else{if($Xd==2){$p=array();foreach(fields($R)as$C=>$o)$p[]=idf_escape($C)." $o[full_type]";$i="CREATE TABLE ".table($R)." (".implode(", ",$p).")";}else$i=create_sql($R,$_POST["auto_increment"],$Bh);set_utf8mb4($i);if($Bh&&$i){if($Bh=="DROP+CREATE"||$Xd==1)echo"DROP ".($Xd==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($Xd==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
-dumpData($R,$Bh,$G){global$g,$x;$Be=($x=="sqlite"?0:1048576);if($Bh){if($_POST["format"]=="sql"){if($Bh=="TRUNCATE+INSERT")echo
-truncate_sql($R).";\n";$p=fields($R);}$H=$g->query($G,1);if($H){$Qd="";$Xa="";$ee=array();$Dh="";$Pc=($R!=''?'fetch_assoc':'fetch_row');while($J=$H->$Pc()){if(!$ee){$Oi=array();foreach($J
-as$X){$o=$H->fetch_field();$ee[]=$o->name;$y=idf_escape($o->name);$Oi[]="$y = VALUES($y)";}$Dh=($Bh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Oi):"").";\n";}if($_POST["format"]!="sql"){if($Bh=="table"){dump_csv($ee);$Bh="INSERT";}dump_csv($J);}else{if(!$Qd)$Qd="INSERT INTO ".table($R)." (".implode(", ",array_map('idf_escape',$ee)).") VALUES";foreach($J
-as$y=>$X){$o=$p[$y];$J[$y]=($X!==null?unconvert_field($o,preg_match(number_type(),$o["type"])&&$X!=''?$X:q(($X===false?0:$X))):"NULL");}$Sg=($Be?"\n":" ")."(".implode(",\t",$J).")";if(!$Xa)$Xa=$Qd.$Sg;elseif(strlen($Xa)+4+strlen($Sg)+strlen($Dh)<$Be)$Xa.=",$Sg";else{echo$Xa.$Dh;$Xa=$Qd.$Sg;}}}if($Xa)echo$Xa.$Dh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$g->error)."\n";}}function
-dumpFilename($Bd){return
-friendly_url($Bd!=""?$Bd:(SERVER!=""?SERVER:"localhost"));}function
-dumpHeaders($Bd,$Qe=false){$Ef=$_POST["output"];$Hc=(preg_match('~sql~',$_POST["format"])?"sql":($Qe?"tar":"csv"));header("Content-Type: ".($Ef=="gz"?"application/x-gzip":($Hc=="tar"?"application/x-tar":($Hc=="sql"||$Ef!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Ef=="gz")ob_start('ob_gzencode',1e6);return$Hc;}function
-importServerPath(){return"adminer.sql";}function
-homepage(){echo''.($_GET["ns"]==""&&support("database")?''.'Alter database'."\n":""),(support("scheme")?"".($_GET["ns"]!=""?'Alter schema':'Create schema')."\n":""),($_GET["ns"]!==""?''.'Database schema'."\n":""),(support("privileges")?"".'Privileges'."\n":"");return
-true;}function
-navigation($Pe){global$ia,$x,$dc,$g;echo'
-';if($Pe=="auth"){$Vc=true;foreach((array)$_SESSION["pwds"]as$Qi=>$gh){foreach($gh
-as$N=>$Li){foreach($Li
-as$V=>$F){if($F!==null){if($Vc){echo"".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");$Vc=false;}$Pb=$_SESSION["db"][$Qi][$N][$V];foreach(($Pb?array_keys($Pb):array(""))as$l)echo"($dc[$Qi]) ".h($V.($N!=""?"@".$this->serverName($N):"").($l!=""?" - $l":""))." \n";}}}}}else{if($_GET["ns"]!==""&&!$Pe&&DB!=""){$g->select_db(DB);$T=table_status('',true);}echo
-script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.6.3");if(support("sql")){echo'
-';}$this->databasesPrint($Pe);if(DB==""||!$Pe){echo" ".(support("sql")?"".'SQL command'."\n".'Import'."\n":"")."";if(support("dump"))echo"".'Export'."\n";}if($_GET["ns"]!==""&&!$Pe&&DB!=""){echo'".'Create table'."\n";if(!$T)echo" ".'No tables.'."\n";else$this->tablesPrint($T);}}}function
-databasesPrint($Pe){global$b,$g;$k=$this->databases();if($k&&!in_array(DB,$k))array_unshift($k,DB);echo' \n";}function
-tablesPrint($T){echo"".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
-as$R=>$P){$C=$this->tableName($P);if($C!=""){echo'- ".'select'." ",(support("table")||support("indexes")?'$C":"$C")."\n";}}echo"
\n";}}$b=(function_exists('adminer_object')?adminer_object():new
-Adminer);if($b->operators===null)$b->operators=$pf;function
-page_header($ai,$n="",$Wa=array(),$bi=""){global$ca,$ia,$b,$dc,$x;page_headers();if(is_ajax()&&$n){page_messages($n);exit;}$ci=$ai.($bi!=""?": $bi":"");$di=strip_tags($ci.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'
-
-
-
-',$di,'
-
-',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.6.3");if($b->head()){echo'
-
-';foreach($b->css()as$Hb){echo'
-';}}echo'
-
-';$Tc=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($Tc)&&filemtime($Tc)+86400>time()){$Ri=unserialize(file_get_contents($Tc));$ng="-----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($Ri["version"],base64_decode($Ri["signature"]),$ng)==1)$_COOKIE["adminer_version"]=$Ri["version"];}echo'
-
-
-',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
-
-';if($Wa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo' '.$dc[DRIVER].' » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=$b->serverName(SERVER);$N=($N!=""?$N:'Server');if($Wa===false)echo"$N\n";else{echo"$N » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Wa)))echo''.h(DB).' » ';if(is_array($Wa)){if($_GET["ns"]!="")echo''.h($_GET["ns"]).' » ';foreach($Wa
-as$y=>$X){$Vb=(is_array($X)?$X[1]:h($X));if($Vb!="")echo"$Vb » ";}}echo"$ai\n";}}echo" $ci\n"," \n";restart_session();page_messages($n);$k=&get_session("dbs");if(DB!=""&&$k&&!in_array(DB,$k,true))$k=null;stop_session();define("PAGE_HEADER",1);}function
-page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$Gb){$vd=array();foreach($Gb
-as$y=>$X)$vd[]="$y $X";header("Content-Security-Policy: ".implode("; ",$vd));}$b->headers();}function
-csp(){return
-array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
-get_nonce(){static$Ze;if(!$Ze)$Ze=base64_encode(rand_string());return$Ze;}function
-page_messages($n){$Ei=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Le=$_SESSION["messages"][$Ei];if($Le){echo" ".implode(" \n ",$Le)." ".script("messagesPrint();");unset($_SESSION["messages"][$Ei]);}if($n)echo" $n \n";}function
-page_footer($Pe=""){global$b,$hi;echo'
-
-';if($Pe!="auth"){echo'
-';}echo'
-',script("setupSubmitHighlight(document);");}function
-int32($Se){while($Se>=2147483648)$Se-=4294967296;while($Se<=-2147483649)$Se+=4294967296;return(int)$Se;}function
-long2str($W,$Vi){$Sg='';foreach($W
-as$X)$Sg.=pack('V',$X);if($Vi)return
-substr($Sg,0,end($W));return$Sg;}function
-str2long($Sg,$Vi){$W=array_values(unpack('V*',str_pad($Sg,4*ceil(strlen($Sg)/4),"\0")));if($Vi)$W[]=strlen($Sg);return$W;}function
-xxtea_mx($ij,$hj,$Eh,$ae){return
-int32((($ij>>5&0x7FFFFFF)^$hj<<2)+(($hj>>3&0x1FFFFFFF)^$ij<<4))^int32(($Eh^$hj)+($ae^$ij));}function
-encrypt_string($_h,$y){if($_h=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($_h,true);$Se=count($W)-1;$ij=$W[$Se];$hj=$W[0];$og=floor(6+52/($Se+1));$Eh=0;while($og-->0){$Eh=int32($Eh+0x9E3779B9);$kc=$Eh>>2&3;for($Ff=0;$Ff<$Se;$Ff++){$hj=$W[$Ff+1];$Re=xxtea_mx($ij,$hj,$Eh,$y[$Ff&3^$kc]);$ij=int32($W[$Ff]+$Re);$W[$Ff]=$ij;}$hj=$W[0];$Re=xxtea_mx($ij,$hj,$Eh,$y[$Ff&3^$kc]);$ij=int32($W[$Se]+$Re);$W[$Se]=$ij;}return
-long2str($W,false);}function
-decrypt_string($_h,$y){if($_h=="")return"";if(!$y)return
-false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($_h,false);$Se=count($W)-1;$ij=$W[$Se];$hj=$W[0];$og=floor(6+52/($Se+1));$Eh=int32($og*0x9E3779B9);while($Eh){$kc=$Eh>>2&3;for($Ff=$Se;$Ff>0;$Ff--){$ij=$W[$Ff-1];$Re=xxtea_mx($ij,$hj,$Eh,$y[$Ff&3^$kc]);$hj=int32($W[$Ff]-$Re);$W[$Ff]=$hj;}$ij=$W[$Se];$Re=xxtea_mx($ij,$hj,$Eh,$y[$Ff&3^$kc]);$hj=int32($W[0]-$Re);$W[0]=$hj;$Eh=int32($Eh-0x9E3779B9);}return
-long2str($W,true);}$g='';$ud=$_SESSION["token"];if(!$ud)$_SESSION["token"]=rand(1,1e6);$hi=get_token();$Vf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Vf[$y]=$X;}}function
-add_invalid_login(){global$b;$hd=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$hd)return;$Td=unserialize(stream_get_contents($hd));$Xh=time();if($Td){foreach($Td
-as$Ud=>$X){if($X[0]<$Xh)unset($Td[$Ud]);}}$Sd=&$Td[$b->bruteForceKey()];if(!$Sd)$Sd=array($Xh+30*60,0);$Sd[1]++;file_write_unlock($hd,serialize($Td));}function
-check_invalid_login(){global$b;$Td=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Sd=$Td[$b->bruteForceKey()];$Ye=($Sd[1]>29?$Sd[0]-time():0);if($Ye>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Ye/60)));}$Ka=$_POST["auth"];if($Ka){session_regenerate_id();$Qi=$Ka["driver"];$N=$Ka["server"];$V=$Ka["username"];$F=(string)$Ka["password"];$l=$Ka["db"];set_password($Qi,$N,$V,$F);$_SESSION["db"][$Qi][$N][$V][$l]=true;if($Ka["permanent"]){$y=base64_encode($Qi)."-".base64_encode($N)."-".base64_encode($V)."-".base64_encode($l);$hg=$b->permanentLogin(true);$Vf[$y]="$y:".base64_encode($hg?encrypt_string($F,$hg):"");cookie("adminer_permanent",implode(" ",$Vf));}if(count($_POST)==1||DRIVER!=$Qi||SERVER!=$N||$_GET["username"]!==$V||DB!=$l)redirect(auth_url($Qi,$N,$V,$l));}elseif($_POST["logout"]){if($ud&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.sprintf('Thanks for using Adminer, consider donating.','https://sourceforge.net/donate/index.php?group_id=264133'));}}elseif($Vf&&!$_SESSION["pwds"]){session_regenerate_id();$hg=$b->permanentLogin();foreach($Vf
-as$y=>$X){list(,$ib)=explode(":",$X);list($Qi,$N,$V,$l)=array_map('base64_decode',explode("-",$y));set_password($Qi,$N,$V,decrypt_string(base64_decode($ib),$hg));$_SESSION["db"][$Qi][$N][$V][$l]=true;}}function
-unset_permanent(){global$Vf;foreach($Vf
-as$y=>$X){list($Qi,$N,$V,$l)=array_map('base64_decode',explode("-",$y));if($Qi==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$l==DB)unset($Vf[$y]);}cookie("adminer_permanent",implode(" ",$Vf));}function
-auth_error($n){global$b,$ud;$hh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$hh]||$_GET[$hh])&&!$ud)$n='Session expired, please login again.';else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$n.=' '.sprintf('Master password expired. Implement %s method to make it permanent.',target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$hh]&&$_GET[$hh]&&ini_bool("session.use_only_cookies"))$n='Session support must be enabled.';$If=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$If["lifetime"]);page_header('Login',$n,null);echo"\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$bg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])){list($_d,$Xf)=explode(":",SERVER,2);if(is_numeric($Xf)&&$Xf<1024)auth_error('Connecting to privileged ports is not allowed.');check_invalid_login();$g=connect();$m=new
-Min_Driver($g);}$ue=null;if(!is_object($g)||($ue=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($g)?h($g):(is_string($ue)?$ue:'Invalid credentials.')));if($Ka&&$_POST["token"])$_POST["token"]=$hi;$n='';if($_POST){if(!verify_token()){$Nd="max_input_vars";$Fe=ini_get($Nd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$Fe||$X<$Fe)){$Nd=$y;$Fe=$X;}}}$n=(!$_POST["token"]&&$Fe?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Nd'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$n.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
-select($H,$h=null,$xf=array(),$z=0){global$x;$te=array();$w=array();$f=array();$Ta=array();$wi=array();$I=array();odd('');for($s=0;(!$z||$s<$z)&&($J=$H->fetch_row());$s++){if(!$s){echo"\n","";for($Zd=0;$Zdfetch_field();$C=$o->name;$wf=$o->orgtable;$vf=$o->orgname;$I[$o->table]=$wf;if($xf&&$x=="sql")$te[$Zd]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($wf!=""){if(!isset($w[$wf])){$w[$wf]=array();foreach(indexes($wf,$h)as$v){if($v["type"]=="PRIMARY"){$w[$wf]=array_flip($v["columns"]);break;}}$f[$wf]=$w[$wf];}if(isset($f[$wf][$vf])){unset($f[$wf][$vf]);$w[$wf][$vf]=$Zd;$te[$Zd]=$wf;}}if($o->charsetnr==63)$Ta[$Zd]=true;$wi[$Zd]=$o->type;echo"| name!=$vf?" title='".h(($wf!=""?"$wf.":"").$vf)."'":"").">".h($C).($xf?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo" | \n";}echo"";foreach($J
-as$y=>$X){if($X===null)$X="NULL";elseif($Ta[$y]&&!is_utf8($X))$X="".lang(array('%d byte','%d bytes'),strlen($X))."";else{$X=h($X);if($wi[$y]==254)$X="$X";}if(isset($te[$y])&&!$f[$te[$y]]){if($xf&&$x=="sql"){$R=$J[array_search("table=",$te)];$_=$te[$y].urlencode($xf[$R]!=""?$xf[$R]:$R);}else{$_="edit=".urlencode($te[$y]);foreach($w[$te[$y]]as$mb=>$Zd)$_.="&where".urlencode("[".bracket_escape($mb)."]")."=".urlencode($J[$Zd]);}$X="$X";}echo"$X";}}echo($s?" | ":"".'No rows.')."\n";return$I;}function
-referencable_primary($bh){$I=array();foreach(table_status('',true)as$Ih=>$R){if($Ih!=$bh&&fk_support($R)){foreach(fields($Ih)as$o){if($o["primary"]){if($I[$Ih]){unset($I[$Ih]);break;}$I[$Ih]=$o;}}}}return$I;}function
-textarea($C,$Y,$K=10,$qb=80){global$x;echo"";}function
-edit_type($y,$o,$ob,$dd=array(),$Kc=array()){global$Ah,$wi,$Ci,$kf;$U=$o["type"];echo'
-',on_help("getTarget(event).value",1),script("mixin(qsl('select'), {onfocus: function () { lastType = selectValue(this); }, onchange: editingTypeChange});",""),' | ',script("mixin(qsl('input'), {onfocus: editingLengthFocus, oninput: editingLengthChange});",""),' | ',"',($Ci?"':''),(isset($o['on_update'])?"':''),($dd?" ":" ");}function
-process_length($qe){global$vc;return(preg_match("~^\\s*\\(?\\s*$vc(?:\\s*,\\s*$vc)*+\\s*\\)?\\s*\$~",$qe)&&preg_match_all("~$vc~",$qe,$_e)?"(".implode(",",$_e[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$qe)));}function
-process_type($o,$nb="COLLATE"){global$Ci;return" $o[type]".process_length($o["length"]).(preg_match(number_type(),$o["type"])&&in_array($o["unsigned"],$Ci)?" $o[unsigned]":"").(preg_match('~char|text|enum|set~',$o["type"])&&$o["collation"]?" $nb ".q($o["collation"]):"");}function
-process_field($o,$ui){return
-array(idf_escape(trim($o["field"])),process_type($ui),($o["null"]?" NULL":" NOT NULL"),default_value($o),(preg_match('~timestamp|datetime~',$o["type"])&&$o["on_update"]?" ON UPDATE $o[on_update]":""),(support("comment")&&$o["comment"]!=""?" COMMENT ".q($o["comment"]):""),($o["auto_increment"]?auto_increment():null),);}function
-default_value($o){$Rb=$o["default"];return($Rb===null?"":" DEFAULT ".(preg_match('~char|binary|text|enum|set~',$o["type"])||preg_match('~^(?![a-z])~i',$Rb)?q($Rb):$Rb));}function
-type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$U))return" class='$y'";}}function
-edit_fields($p,$ob,$U="TABLE",$dd=array(),$ub=false){global$Od;$p=array_values($p);echo'
-';if($U=="PROCEDURE"){echo'| ';}echo' | ',($U=="TABLE"?'Column name':'Parameter name'),' | Type',script("qs('#enum-edit').onblur = editingLengthBlur;"),' | Length
- | ','Options';if($U=="TABLE"){echo' | NULL
- | AI',doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),' | Default value
-',(support("comment")?" | ',"".script("row_count = ".count($p).";"),' |
- |
-',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($p
-as$s=>$o){$s++;$yf=$o[($_POST?"orig":"field")];$Zb=(isset($_POST["add"][$s-1])||(isset($o["field"])&&!$_POST["drop_col"][$s]))&&(support("drop_col")||$yf=="");echo'
-',($U=="PROCEDURE"?"| ".html_select("fields[$s][inout]",explode("|",$Od),$o["inout"]):""),' | ';if($Zb){echo'',script("qsl('input').oninput = function () { editingNameChange.call(this);".($o["field"]!=""||count($p)>1?"":" editingAddRow.call(this);")." };","");}echo'
-';edit_type("fields[$s]",$o,$ob,$dd);if($U=="TABLE"){echo' | ',checkbox("fields[$s][null]",1,$o["null"],"","","block","label-null"),' | | ',checkbox("fields[$s][has_default]",1,$o["has_default"],"","","","label-default"),'',(support("comment")?" | ":"");}echo" | ",(support("move_col")?" "." "." ":""),($yf==""||support("drop_col")?"":"");}}function
-process_fields(&$p){$D=0;if($_POST["up"]){$ke=0;foreach($p
-as$y=>$o){if(key($_POST["up"])==$y){unset($p[$y]);array_splice($p,$ke,0,array($o));break;}if(isset($o["field"]))$ke=$D;$D++;}}elseif($_POST["down"]){$fd=false;foreach($p
-as$y=>$o){if(isset($o["field"])&&$fd){unset($p[key($_POST["down"])]);array_splice($p,$D,0,array($fd));break;}if(key($_POST["down"])==$y)$fd=$o;$D++;}}elseif($_POST["add"]){$p=array_values($p);array_splice($p,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
-false;return
-true;}function
-normalize_enum($B){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($B[0][0].$B[0][0],$B[0][0],substr($B[0],1,-1))),'\\'))."'";}function
-grant($kd,$jg,$f,$jf){if(!$jg)return
-true;if($jg==array("ALL PRIVILEGES","GRANT OPTION"))return($kd=="GRANT"?queries("$kd ALL PRIVILEGES$jf WITH GRANT OPTION"):queries("$kd ALL PRIVILEGES$jf")&&queries("$kd GRANT OPTION$jf"));return
-queries("$kd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$f, ",$jg).$f).$jf);}function
-drop_create($ec,$i,$fc,$Uh,$hc,$A,$Ke,$Ie,$Je,$gf,$Ve){if($_POST["drop"])query_redirect($ec,$A,$Ke);elseif($gf=="")query_redirect($i,$A,$Je);elseif($gf!=$Ve){$Eb=queries($i);queries_redirect($A,$Ie,$Eb&&queries($ec));if($Eb)queries($fc);}else
-queries_redirect($A,$Ie,queries($Uh)&&queries($hc)&&queries($ec)&&queries($i));}function
-create_trigger($jf,$J){global$x;$Zh=" $J[Timing] $J[Event]".($J["Event"]=="UPDATE OF"?" ".idf_escape($J["Of"]):"");return"CREATE TRIGGER ".idf_escape($J["Trigger"]).($x=="mssql"?$jf.$Zh:$Zh.$jf).rtrim(" $J[Type]\n$J[Statement]",";").";";}function
-create_routine($Og,$J){global$Od,$x;$O=array();$p=(array)$J["fields"];ksort($p);foreach($p
-as$o){if($o["field"]!="")$O[]=(preg_match("~^($Od)\$~",$o["inout"])?"$o[inout] ":"").idf_escape($o["field"]).process_type($o,"CHARACTER SET");}$Sb=rtrim("\n$J[definition]",";");return"CREATE $Og ".idf_escape(trim($J["name"]))." (".implode(", ",$O).")".(isset($_GET["function"])?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").($x=="pgsql"?" AS ".q($Sb):"$Sb;");}function
-remove_definer($G){return
-preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
-format_foreign_key($q){global$kf;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$q["source"])).") REFERENCES ".table($q["table"])." (".implode(", ",array_map('idf_escape',$q["target"])).")".(preg_match("~^($kf)\$~",$q["on_delete"])?" ON DELETE $q[on_delete]":"").(preg_match("~^($kf)\$~",$q["on_update"])?" ON UPDATE $q[on_update]":"");}function
-tar_file($Tc,$ei){$I=pack("a100a8a8a8a12a12",$Tc,644,0,0,decoct($ei->size),decoct(time()));$gb=8*32;for($s=0;$ssend();echo
-str_repeat("\0",511-($ei->size+511)%512);}function
-ini_bytes($Nd){$X=ini_get($Nd);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
-doc_link($Tf,$Vh="?"){global$x,$g;$fh=$g->server_info;$Ri=preg_replace('~^(\d\.?\d).*~s','\1',$fh);$Hi=array('sql'=>"https://dev.mysql.com/doc/refman/$Ri/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Ri/static/",'mssql'=>"https://msdn.microsoft.com/library/",'oracle'=>"https://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);if(preg_match('~MariaDB~',$fh)){$Hi['sql']="https://mariadb.com/kb/en/library/";$Tf['sql']=(isset($Tf['mariadb'])?$Tf['mariadb']:str_replace(".html","/",$Tf['sql']));}return($Tf[$x]?"$Vh":"");}function
-ob_gzencode($Q){return
-gzencode($Q);}function
-db_size($l){global$g;if(!$g->select_db($l))return"?";$I=0;foreach(table_status()as$S)$I+=$S["Data_length"]+$S["Index_length"];return
-format_number($I);}function
-set_utf8mb4($i){global$g;static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$i)){$O=true;echo"SET NAMES ".charset($g).";\n\n";}}function
-connect_error(){global$b,$g,$hi,$n,$dc;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$n)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$n,false);echo" \n";foreach(array('database'=>'Create database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$y=>$X){if(support($y))echo"$X\n";}echo" ".sprintf('%s version: %s through PHP extension %s',$dc[DRIVER],"".h($g->server_info)."","$g->extension")."\n"," ".sprintf('Logged as: %s',"".h(logged_user())."")."\n";$k=$b->databases();if($k){$Vg=support("scheme");$ob=collations();echo" \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;}if(support("scheme")&&DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header('Schema'.": ".h($_GET["ns"]),'Invalid schema.',true);page_footer("ns");exit;}}$kf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
-TmpFile{var$handler;var$size;function
-__construct(){$this->handler=tmpfile();}function
-write($zb){$this->size+=strlen($zb);fwrite($this->handler,$zb);}function
-send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$vc="'(?:''|[^'\\\\]|\\\\.)*'";$Od="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"])){$a=$_GET["download"];$p=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=$m->select($a,$L,array(where($_GET,$p)),$L);$J=($H?$H->fetch_row():array());echo$m->value($J[0],$p[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$p=fields($a);if(!$p)$n=error();$S=table_status1($a,true);$C=$b->tableName($S);page_header(($p&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($C!=""?$C:h($a)),$n);$b->selectLinks($S);$tb=$S["Comment"];if($tb!="")echo"".'Comment'.": ".h($tb)."\n";if($p)$b->tableStructurePrint($p);if(!is_view($S)){if(support("indexes")){echo" ".'Indexes'."\n";$w=indexes($a);if($w)$b->tableIndexesPrint($w);echo''.'Alter indexes'."\n";}if(fk_support($S)){echo" ".'Foreign keys'."\n";$dd=foreign_keys($a);if($dd){echo"\n","| ".'Source'." | ".'Target'." | ".'ON DELETE'." | ".'ON UPDATE'." | | \n";foreach($dd
-as$C=>$q){echo"","| ".implode(", ",array_map('h',$q["source"])).""," | ".($q["db"]!=""?"".h($q["db"]).".":"").($q["ns"]!=""?"".h($q["ns"]).".":"").h($q["table"])."","(".implode(", ",array_map('h',$q["target"])).")"," | ".h($q["on_delete"])."\n"," | ".h($q["on_update"])."\n",' | '.'Alter'.'';}echo" | \n";}echo''.'Add foreign key'."\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo" ".'Triggers'."\n";$ti=triggers($a);if($ti){echo"\n";foreach($ti
-as$y=>$X)echo"| ".h($X[0])." | ".h($X[1])." | ".h($y)." | ".'Alter'."\n";echo" |
|---|
\n";}echo''.'Add trigger'."\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Kh=array();$Lh=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$_e,PREG_SET_ORDER);foreach($_e
-as$s=>$B){$Kh[$B[1]]=array($B[2],$B[3]);$Lh[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$ii=0;$Qa=-1;$Ug=array();$_g=array();$oe=array();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Yf=0;$Ug[$R]["fields"]=array();foreach(fields($R)as$C=>$o){$Yf+=1.25;$o["pos"]=$Yf;$Ug[$R]["fields"][$C]=$o;}$Ug[$R]["pos"]=($Kh[$R]?$Kh[$R]:array($ii,0));foreach($b->foreignKeys($R)as$X){if(!$X["db"]){$me=$Qa;if($Kh[$R][1]||$Kh[$X["table"]][1])$me=min(floatval($Kh[$R][1]),floatval($Kh[$X["table"]][1]))-1;else$Qa-=.1;while($oe[(string)$me])$me-=.0001;$Ug[$R]["references"][$X["table"]][(string)$me]=array($X["source"],$X["target"]);$_g[$X["table"]][$R][(string)$me]=$X["target"];$oe[(string)$me]=true;}}$ii=max($ii,$Ug[$R]["pos"][0]+2.5+$Yf);}echo'
-
-';foreach($Ug
-as$C=>$R){echo" ",' '.h($C)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$o){$X=' '.h($o["field"]).'';echo" ".($o["primary"]?" $X":$X);}foreach((array)$R["references"]as$Rh=>$Ag){foreach($Ag
-as$me=>$xg){$ne=$me-$Kh[$C][1];$s=0;foreach($xg[0]as$ph)echo"\n ";}}foreach((array)$_g[$C]as$Rh=>$Ag){foreach($Ag
-as$me=>$f){$ne=$me-$Kh[$C][1];$s=0;foreach($f
-as$Qh)echo"\n ";}}echo"\n \n";}foreach($Ug
-as$C=>$R){foreach((array)$R["references"]as$Rh=>$Ag){foreach($Ag
-as$me=>$xg){$Oe=$ii;$De=-10;foreach($xg[0]as$y=>$ph){$Zf=$R["pos"][0]+$R["fields"][$ph]["pos"];$ag=$Ug[$Rh]["pos"][0]+$Ug[$Rh]["fields"][$xg[1][$y]]["pos"];$Oe=min($Oe,$Zf,$ag);$De=max($De,$Zf,$ag);}echo" \n";}}}echo'
-Permanent link
-';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$n){$Bb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$y)$Bb.="&$y=".urlencode($_POST[$y]);cookie("adminer_export",substr($Bb,1));$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Hc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$Wd=preg_match('~sql~',$_POST["format"]);if($Wd){echo"-- Adminer $ia ".$dc[DRIVER]." dump\n\n";if($x=="sql"){echo"SET NAMES utf8;
-SET time_zone = '+00:00';
-".($_POST["data_style"]?"SET foreign_key_checks = 0;
-SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
-":"")."
-";$g->query("SET time_zone = '+00:00';");}}$Bh=$_POST["db_style"];$k=array(DB);if(DB==""){$k=$_POST["databases"];if(is_string($k))$k=explode("\n",rtrim(str_replace("\r","",$k),"\n"));}foreach((array)$k
-as$l){$b->dumpDatabase($l);if($g->select_db($l)){if($Wd&&preg_match('~CREATE~',$Bh)&&($i=$g->result("SHOW CREATE DATABASE ".idf_escape($l),1))){set_utf8mb4($i);if($Bh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($l).";\n";echo"$i;\n";}if($Wd){if($Bh)echo
-use_sql($l).";\n\n";$Df="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$Og){foreach(get_rows("SHOW $Og STATUS WHERE Db = ".q($l),null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE $Og ".idf_escape($J["Name"]),2));set_utf8mb4($i);$Df.=($Bh!='DROP+CREATE'?"DROP $Og IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$J){$i=remove_definer($g->result("SHOW CREATE EVENT ".idf_escape($J["Name"]),3));set_utf8mb4($i);$Df.=($Bh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$i;;\n\n";}}if($Df)echo"DELIMITER ;;\n\n$Df"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Ti=array();foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));$Kb=(DB==""||in_array($C,(array)$_POST["data"]));if($R||$Kb){if($Hc=="tar"){$ei=new
-TmpFile;ob_start(array($ei,'write'),1e5);}$b->dumpTable($C,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Ti[]=$C;elseif($Kb){$p=fields($C);$b->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($p,$p)." FROM ".table($C));}if($Wd&&$_POST["triggers"]&&$R&&($ti=trigger_sql($C)))echo"\nDELIMITER ;;\n$ti\nDELIMITER ;\n";if($Hc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$l/")."$C.csv",$ei);}elseif($Wd)echo"\n";}}foreach($Ti
-as$Si)$b->dumpTable($Si,$_POST["table_style"],1);if($Hc=="tar")echo
-pack("x512");}}}if($Wd)echo"-- ".$g->result("SELECT NOW()")."\n";exit;}page_header('Export',$n,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
-
-';$Vc=true;foreach($dg
-as$y=>$X){if($y!=""&&$X>1){echo($Vc?"":" ")."".h($y)."";$Vc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');echo' '.'Create user'."";$H=$g->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$kd=$H;if(!$H)$H=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo" \n";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$yd=&get_session("queries");$xd=&$yd[DB];if(!$n&&$_POST["clear"]){$xd=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$n);if(!$n&&$_POST){$hd=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$th=$b->importServerPath();$hd=@fopen((file_exists($th)?$th:"compress.zlib://$th.gz"),"rb");$G=($hd?fread($hd,1e6):false);}else$G=get_file("sql_file",true);if(is_string($G)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($G)+memory_get_usage()+8e6));if($G!=""&&strlen($G)<1e6){$og=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$xd||reset(end($xd))!=$og){restart_session();$xd[]=array($og,time());set_session("queries",$yd);stop_session();}}$qh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Ub=";";$D=0;$sc=true;$h=connect();if(is_object($h)&&DB!="")$h->select_db(DB);$sb=0;$xc=array();$Kf='[\'"'.($x=="sql"?'`#':($x=="sqlite"?'`[':($x=="mssql"?'[':''))).']|/\*|-- |$'.($x=="pgsql"?'|\$[^$]*\$':'');$ji=microtime(true);parse_str($_COOKIE["adminer_export"],$xa);$jc=$b->dumpFormat();unset($jc["sql"]);while($G!=""){if(!$D&&preg_match("~^$qh*+DELIMITER\\s+(\\S+)~i",$G,$B)){$Ub=$B[1];$G=substr($G,strlen($B[0]));}else{preg_match('('.preg_quote($Ub)."\\s*|$Kf)",$G,$B,PREG_OFFSET_CAPTURE,$D);list($fd,$Yf)=$B[0];if(!$fd&&$hd&&!feof($hd))$G.=fread($hd,1e5);else{if(!$fd&&rtrim($G)=="")break;$D=$Yf+strlen($fd);if($fd&&rtrim($fd)!=$Ub){while(preg_match('('.($fd=='/*'?'\*/':($fd=='['?']':(preg_match('~^-- |^#~',$fd)?"\n":preg_quote($fd)."|\\\\."))).'|$)s',$G,$B,PREG_OFFSET_CAPTURE,$D)){$Sg=$B[0][0];if(!$Sg&&$hd&&!feof($hd))$G.=fread($hd,1e5);else{$D=$B[0][1]+strlen($Sg);if($Sg[0]!="\\")break;}}}else{$sc=false;$og=substr($G,0,$Yf);$sb++;$gg="".$b->sqlCommandQuery($og)." \n";if($x=="sqlite"&&preg_match("~^$qh*+ATTACH\\b~i",$og,$B)){echo$gg,"".'ATTACH queries are not supported.'."\n";$xc[]=" $sb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$gg;ob_flush();flush();}$xh=microtime(true);if($g->multi_query($og)&&is_object($h)&&preg_match("~^$qh*+USE\\b~i",$og))$h->query($og);do{$H=$g->store_result();if($g->error){echo($_POST["only_errors"]?$gg:"")," ".'Error in query'.($g->errno?" ($g->errno)":"").": ".error()."\n";$xc[]=" $sb";if($_POST["error_stops"])break
-2;}else{$Xh=" (".format_time($xh).")".(strlen($og)<1000?" ".'Edit'."":"");$za=$g->affected_rows;$Wi=($_POST["only_errors"]?"":$m->warnings());$Xi="warnings-$sb";if($Wi)$Xh.=", ".'Warnings'."".script("qsl('a').onclick = partial(toggle, '$Xi');","");$Ec=null;$Fc="explain-$sb";if(is_object($H)){$z=$_POST["limit"];$xf=select($H,$h,array(),$z);if(!$_POST["only_errors"]){echo" \n";}}else{if(preg_match("~^$qh*+(CREATE|DROP|ALTER)$qh++(DATABASE|SCHEMA)\\b~i",$og)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$za)."$Xh\n";}echo($Wi?" \n$Wi \n":"");if($Ec){echo"\n";select($Ec,$h,$xf);echo" \n";}}$xh=microtime(true);}while($g->next_result());}$G=substr($G,$D);$D=0;}}}}if($sc)echo"".'No commands to execute.'."\n";elseif($_POST["only_errors"]){echo" ".lang(array('%d query executed OK.','%d queries executed OK.'),$sb-count($xc))," (".format_time($ji).")\n";}elseif($xc&&$sb>1)echo" ".'Error in query'.": ".implode("",$xc)."\n";}else
-echo" ".upload_error($G)."\n";}echo'
-
-';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Di=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p
-as$C=>$o){if(!isset($o["privileges"][$Di?"update":"insert"])||$b->fieldName($o)=="")unset($p[$C]);}if($_POST&&!$n&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($Di?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$w=indexes($a);$zi=unique_array($_GET["where"],$w);$rg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,'Item has been deleted.',$m->delete($a,$rg,!$zi));else{$O=array();foreach($p
-as$C=>$o){$X=process_input($o);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Di){if(!$O)redirect($A);queries_redirect($A,'Item has been updated.',$m->update($a,$O,$rg,!$zi));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$H=$m->insert($a,$O);$le=($H?last_id():0);queries_redirect($A,sprintf('Item%s has been inserted.',($le?" $le":"")),$H);}}}$J=null;if($_POST["save"])$J=(array)$_POST["fields"];elseif($Z){$L=array();foreach($p
-as$C=>$o){if(isset($o["privileges"]["select"])){$Ga=convert_field($o);if($_POST["clone"]&&$o["auto_increment"])$Ga="''";if($x=="sql"&&preg_match("~enum|set~",$o["type"]))$Ga="1*".idf_escape($C);$L[]=($Ga?"$Ga AS ":"").idf_escape($C);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=$m->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$n=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!support("table")&&!$p){if(!$Z){$H=$m->select($a,array("*"),$Z,array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array($m->primary=>"");}if($J){foreach($J
-as$y=>$X){if(!$Z)$J[$y]=null;$p[$y]=array("field"=>$y,"null"=>($y!=$m->primary),"auto_increment"=>($y==$m->primary));}}}edit_form($a,$p,$J,$Di);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Mf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$Mf[$y]=$y;$zg=referencable_primary($a);$dd=array();foreach($zg
-as$Ih=>$o)$dd[str_replace("`","``",$Ih)."`".str_replace("`","``",$o["field"])]=$Ih;$_f=array();$S=array();if($a!=""){$_f=fields($a);$S=table_status($a);if(!$S)$n='No tables.';}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($J["fields"])&&!$n){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$p=array();$Da=array();$Ii=false;$bd=array();$zf=reset($_f);$Aa=" FIRST";foreach($J["fields"]as$y=>$o){$q=$dd[$o["type"]];$ui=($q!==null?$zg[$q]:$o);if($o["field"]!=""){if(!$o["has_default"])$o["default"]=null;if($y==$J["auto_increment_col"])$o["auto_increment"]=true;$lg=process_field($o,$ui);$Da[]=array($o["orig"],$lg,$Aa);if($lg!=process_field($zf,$zf)){$p[]=array($o["orig"],$lg,$Aa);if($o["orig"]!=""||$Aa)$Ii=true;}if($q!==null)$bd[idf_escape($o["field"])]=($a!=""&&$x!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$dd[$o["type"]],'source'=>array($o["field"]),'target'=>array($ui["field"]),'on_delete'=>$o["on_delete"],));$Aa=" AFTER ".idf_escape($o["field"]);}elseif($o["orig"]!=""){$Ii=true;$p[]=array($o["orig"]);}if($o["orig"]!=""){$zf=next($_f);if(!$zf)$Aa="";}}$Of="";if($Mf[$J["partition_by"]]){$Pf=array();if($J["partition_by"]=='RANGE'||$J["partition_by"]=='LIST'){foreach(array_filter($J["partition_names"])as$y=>$X){$Y=$J["partition_values"][$y];$Pf[]="\n PARTITION ".idf_escape($X)." VALUES ".($J["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Of.="\nPARTITION BY $J[partition_by]($J[partition])".($Pf?" (".implode(",",$Pf)."\n)":($J["partitions"]?" PARTITIONS ".(+$J["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$S["Create_options"]))$Of.="\nREMOVE PARTITIONING";$He='Table has been altered.';if($a==""){cookie("adminer_engine",$J["Engine"]);$He='Table has been created.';}$C=trim($J["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$He,alter_table($a,$C,($x=="sqlite"&&($Ii||$bd)?$Da:$p),$bd,($J["Comment"]!=$S["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$S["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$S["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Of));}}page_header(($a!=""?'Alter table':'Create table'),$n,array("table"=>$a),h($a));if(!$_POST){$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($wi["int"])?"int":(isset($wi["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$S;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($_f
-as$o){$o["has_default"]=isset($o["default"]);$J["fields"][]=$o;}if(support("partitioning")){$id="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$H=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $id ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($J["partition_by"],$J["partitions"],$J["partition"])=$H->fetch_row();$Pf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $id AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$Pf[""]="";$J["partition_names"]=array_keys($Pf);$J["partition_values"]=array_values($Pf);}}}$ob=collations();$uc=engines();foreach($uc
-as$tc){if(!strcasecmp($tc,$J["Engine"])){$J["Engine"]=$tc;break;}}echo'
-
-',script("qs('#form')['defaults'].onclick();".(support("comment")?" editingCommentsClick.call(qs('#form')['comments']);":""));}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Gd=array("PRIMARY","UNIQUE","INDEX");$S=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Gd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Gd[]="SPATIAL";$w=indexes($a);$eg=array();if($x=="mongo"){$eg=$w["_id_"];unset($Gd[0]);unset($w["_id_"]);}$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($J["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$Gd)){$f=array();$re=array();$Wb=array();$O=array();ksort($v["columns"]);foreach($v["columns"]as$y=>$e){if($e!=""){$qe=$v["lengths"][$y];$Vb=$v["descs"][$y];$O[]=idf_escape($e).($qe?"(".(+$qe).")":"").($Vb?" DESC":"");$f[]=$e;$re[]=($qe?$qe:null);$Wb[]=$Vb;}}if($f){$Cc=$w[$C];if($Cc){ksort($Cc["columns"]);ksort($Cc["lengths"]);ksort($Cc["descs"]);if($v["type"]==$Cc["type"]&&array_values($Cc["columns"])===$f&&(!$Cc["lengths"]||array_values($Cc["lengths"])===$re)&&array_values($Cc["descs"])===$Wb){unset($w[$C]);continue;}}$c[]=array($v["type"],$C,$O);}}}foreach($w
-as$C=>$Cc)$c[]=array($Cc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$c));}page_header('Indexes',$n,array("table"=>$a),h($a));$p=array_keys(fields($a));if($_POST["add"]){foreach($J["indexes"]as$y=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$y]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($w
-as$y=>$v){$w[$y]["name"]=$y;$w[$y]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$J["indexes"]=$w;}echo'
-
-';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$n&&!isset($_POST["add_x"])){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),'Database has been renamed.',rename_database($C,$J["collation"]));}else{$k=explode("\n",str_replace("\r","",$C));$Ch=true;$ke="";foreach($k
-as$l){if(count($k)==1||$l!=""){if(!create_database($l,$J["collation"]))$Ch=false;$ke=$l;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($ke),'Database has been created.',$Ch);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$n,array(),h(DB));$ob=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$ob);elseif($x=="sql"){foreach(get_vals("SHOW GRANTS")as$kd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$kd,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
-
-';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$n){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,'Schema has been dropped.');else{$C=trim($J["name"]);$_.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,'Schema has been created.');elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,'Schema has been altered.');else
-redirect($_);}}page_header($_GET["ns"]!=""?'Alter schema':'Create schema',$n);if(!$J)$J["name"]=$_GET["ns"];echo'
-
-';}elseif(isset($_GET["call"])){$da=($_GET["name"]?$_GET["name"]:$_GET["call"]);page_header('Call'.": ".h($da),$n);$Og=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Ed=array();$Df=array();foreach($Og["fields"]as$s=>$o){if(substr($o["inout"],-3)=="OUT")$Df[$s]="@".idf_escape($o["field"])." AS ".idf_escape($o["field"]);if(!$o["inout"]||substr($o["inout"],0,2)=="IN")$Ed[]=$s;}if(!$n&&$_POST){$Za=array();foreach($Og["fields"]as$y=>$o){if(in_array($y,$Ed)){$X=process_input($o);if($X===false)$X="''";if(isset($Df[$y]))$g->query("SET @".idf_escape($o["field"])." = $X");}$Za[]=(isset($Df[$y])?"@".idf_escape($o["field"]):$X);}$G=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Za).")";$xh=microtime(true);$H=$g->multi_query($G);$za=$g->affected_rows;echo$b->selectQuery($G,$xh,!$H);if(!$H)echo"".error()."\n";else{$h=connect();if(is_object($h))$h->select_db(DB);do{$H=$g->store_result();if(is_object($H))select($H,$h);else
-echo" ".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$za)."\n";}while($g->next_result());if($Df)select($g->query("SELECT ".implode(", ",$Df)));}}echo'
-
-';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$He=($_POST["drop"]?'Foreign key has been dropped.':($C!=""?'Foreign key has been altered.':'Foreign key has been created.'));$A=ME."table=".urlencode($a);if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Qh=array();foreach($J["source"]as$y=>$X)$Qh[$y]=$J["target"][$y];$J["target"]=$Qh;}if($x=="sqlite")queries_redirect($A,$He,recreate_table($a,$a,array(),array(),array(" $C"=>($_POST["drop"]?"":" ".format_foreign_key($J)))));else{$c="ALTER TABLE ".table($a);$ec="\nDROP ".($x=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C);if($_POST["drop"])query_redirect($c.$ec,$A,$He);else{query_redirect($c.($C!=""?"$ec,":"")."\nADD".format_foreign_key($J),$A,$He);$n='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'." $n";}}}page_header('Foreign key',$n,array("table"=>$a),h($a));if($_POST){ksort($J["source"]);if($_POST["add"])$J["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$J["target"]=array();}elseif($C!=""){$dd=foreign_keys($a);$J=$dd[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}$ph=array_keys(fields($a));$Qh=($a===$J["table"]?$ph:array_keys(fields($J["table"])));$yg=array_keys(array_filter(table_status('',true),'fk_support'));echo'
-
-';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Af="VIEW";if($x=="pgsql"&&$a!=""){$P=table_status($a);$Af=strtoupper($P["Engine"]);}if($_POST&&!$n){$C=trim($J["name"]);$Ga=" AS\n$J[select]";$A=ME."table=".urlencode($C);$He='View has been altered.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&$x!="sqlite"&&$U=="VIEW"&&$Af=="VIEW")query_redirect(($x=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ga,$A,$He);else{$Sh=$C."_adminer_".uniqid();drop_create("DROP $Af ".table($a),"CREATE $U ".table($C).$Ga,"DROP $U ".table($C),"CREATE $U ".table($Sh).$Ga,"DROP $U ".table($Sh),($_POST["drop"]?substr(ME,0,-1):$A),'View has been dropped.',$He,'View has been created.',$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Af!="VIEW");if(!$n)$n=error();}page_header(($a!=""?'Alter view':'Create view'),$n,array("table"=>$a),h($a));echo'
-
-';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Rd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$zh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$n){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($J["INTERVAL_FIELD"],$Rd)&&isset($zh[$J["STATUS"]])){$Tg="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Tg.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$Tg)."\n".$zh[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$n);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo'
-
-';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?$_GET["name"]:$_GET["procedure"]);$Og=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$n){$yf=routine($_GET["procedure"],$Og);$Sh="$J[name]_adminer_".uniqid();drop_create("DROP $Og ".routine_id($da,$yf),create_routine($Og,$J),"DROP $Og ".routine_id($J["name"],$J),create_routine($Og,array("name"=>$Sh)+$J),"DROP $Og ".routine_id($Sh,$J),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$J["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$n);if(!$_POST&&$da!=""){$J=routine($_GET["procedure"],$Og);$J["name"]=$da;}$ob=get_vals("SHOW CHARACTER SET");sort($ob);$Pg=routine_languages();echo'
-
-';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$J=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$_,'Sequence has been dropped.');elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,'Sequence has been created.');elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$_,'Sequence has been altered.');else
-redirect($_);}page_header($fa!=""?'Alter sequence'.": ".h($fa):'Create sequence',$n);if(!$J)$J["name"]=$fa;echo'
-
-';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$J=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$_,'Type has been dropped.');else
-query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$_,'Type has been created.');}page_header($ga!=""?'Alter type'.": ".h($ga):'Create type',$n);if(!$J)$J["as"]="AS ";echo'
-
-';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$si=trigger_options();$J=(array)trigger($C)+array("Trigger"=>$a."_bi");if($_POST){if(!$n&&in_array($_POST["Timing"],$si["Timing"])&&in_array($_POST["Event"],$si["Event"])&&in_array($_POST["Type"],$si["Type"])){$jf=" ON ".table($a);$ec="DROP TRIGGER ".idf_escape($C).($x=="pgsql"?$jf:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($ec,$A,'Trigger has been dropped.');else{if($C!="")queries($ec);queries_redirect($A,($C!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($jf,$_POST)));if($C!="")queries(create_trigger($jf,$J+array("Type"=>reset($si["Type"]))));}}$J=$_POST;}page_header(($C!=""?'Alter trigger'.": ".h($C):'Create trigger'),$n,array("table"=>$a));echo'
-
-';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$jg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$_b)$jg[$_b][$J["Privilege"]]=$J["Comment"];}$jg["Server Admin"]+=$jg["File access on server"];$jg["Databases"]["Create routine"]=$jg["Procedures"]["Create routine"];unset($jg["Procedures"]["Create routine"]);$jg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$jg["Columns"][$X]=$jg["Tables"][$X];unset($jg["Server Admin"]["Usage"]);foreach($jg["Tables"]as$y=>$X)unset($jg["Databases"][$y]);$Ue=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Ue[$X]=(array)$Ue[$X]+(array)$_POST["grants"][$y];}$ld=array();$hf="";if(isset($_GET["host"])&&($H=$g->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$_e,PREG_SET_ORDER)){foreach($_e
-as$X){if($X[1]!="USAGE")$ld["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$ld["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$J[0],$B))$hf=$B[1];}}if($_POST&&!$n){$if=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $if",ME."privileges=",'User has been dropped.');else{$We=q($_POST["user"])."@".q($_POST["host"]);$Rf=$_POST["pass"];if($Rf!=''&&!$_POST["hashed"]){$Rf=$g->result("SELECT PASSWORD(".q($Rf).")");$n=!$Rf;}$Eb=false;if(!$n){if($if!=$We){$Eb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $We IDENTIFIED BY PASSWORD ".q($Rf));$n=!$Eb;}elseif($Rf!=$hf)queries("SET PASSWORD FOR $We = ".q($Rf));}if(!$n){$Lg=array();foreach($Ue
-as$cf=>$kd){if(isset($_GET["grant"]))$kd=array_filter($kd);$kd=array_keys($kd);if(isset($_GET["grant"]))$Lg=array_diff(array_keys(array_filter($Ue[$cf],'strlen')),$kd);elseif($if==$We){$ff=array_keys((array)$ld[$cf]);$Lg=array_diff($ff,$kd);$kd=array_diff($kd,$ff);unset($ld[$cf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$cf,$B)&&(!grant("REVOKE",$Lg,$B[2]," ON $B[1] FROM $We")||!grant("GRANT",$kd,$B[2]," ON $B[1] TO $We"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($if!=$We)queries("DROP USER $if");elseif(!isset($_GET["grant"])){foreach($ld
-as$cf=>$Lg){if(preg_match('~^(.+)(\(.*\))?$~U',$cf,$B))grant("REVOKE",array_keys($Lg),$B[2]," ON $B[1] FROM $We");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$n);if($Eb)$g->query("DROP USER $We");}}page_header((isset($_GET["host"])?'Username'.": ".h("$ha@$_GET[host]"):'Create user'),$n,array("privileges"=>array('','Privileges')));if($_POST){$J=$_POST;$ld=$Ue;}else{$J=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$J["pass"]=$hf;if($hf!="")$J["hashed"]=true;$ld[(DB==""||$ld?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
-';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$n){$ge=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ge++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$ge),$ge||!$_POST["kill"]);}page_header('Process list',$n);echo'
-
-',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$p=fields($a);$dd=column_foreign_keys($a);$ef=$S["Oid"];parse_str($_COOKIE["adminer_import"],$ya);$Mg=array();$f=array();$Wh=null;foreach($p
-as$y=>$o){$C=$b->fieldName($o);if(isset($o["privileges"]["select"])&&$C!=""){$f[$y]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($o))$Wh=$b->selectLengthProcess();}$Mg+=$o["privileges"];}list($L,$md)=$b->selectColumnsProcess($f,$w);$Vd=count($md)selectSearchProcess($p,$w);$uf=$b->selectOrderProcess($p,$w);$z=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_i=>$J){$Ga=convert_field($p[key($J)]);$L=array($Ga?$Ga:idf_escape(key($J)));$Z[]=where_check($_i,$p);$I=$m->select($a,$L,$Z,$L);if($I)echo
-reset($I->fetch_row());}exit;}$eg=$Bi=null;foreach($w
-as$v){if($v["type"]=="PRIMARY"){$eg=array_flip($v["columns"]);$Bi=($L?$eg:array());foreach($Bi
-as$y=>$X){if(in_array(idf_escape($y),$L))unset($Bi[$y]);}break;}}if($ef&&!$eg){$eg=$Bi=array($ef=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($ef));}if($_POST&&!$n){$cj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$fb=array();foreach($_POST["check"]as$cb)$fb[]=where_check($cb,$p);$cj[]="((".implode(") OR (",$fb)."))";}$cj=($cj?"\nWHERE ".implode(" AND ",$cj):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$id=($L?implode(", ",$L):"*").convert_fields($f,$p,$L)."\nFROM ".table($a);$od=($md&&$Vd?"\nGROUP BY ".implode(", ",$md):"").($uf?"\nORDER BY ".implode(", ",$uf):"");if(!is_array($_POST["check"])||$eg)$G="SELECT $id$cj$od";else{$yi=array();foreach($_POST["check"]as$X)$yi[]="(SELECT".limit($id,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$od,1).")";$G=implode(" UNION ALL ",$yi);}$b->dumpData($a,"table",$G);exit;}if(!$b->selectEmailProcess($Z,$dd)){if($_POST["save"]||$_POST["delete"]){$H=true;$za=0;$O=array();if(!$_POST["delete"]){foreach($f
-as$C=>$X){$X=process_input($p[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a);if($_POST["all"]||($eg&&is_array($_POST["check"]))||$Vd){$H=($_POST["delete"]?$m->delete($a,$cj):($_POST["clone"]?queries("INSERT $G$cj"):$m->update($a,$O,$cj)));$za=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Yi="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$H=($_POST["delete"]?$m->delete($a,$Yi,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$Yi)):$m->update($a,$O,$Yi,1)));if(!$H)break;$za+=$g->affected_rows;}}}$He=lang(array('%d item has been affected.','%d items have been affected.'),$za);if($_POST["clone"]&&$H&&$za==1){$le=last_id();if($le)$He=sprintf('Item%s has been inserted.'," $le");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$He,$H);if(!$_POST["delete"]){edit_form($a,$p,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n='Ctrl+click on a value to modify it.';else{$H=true;$za=0;foreach($_POST["val"]as$_i=>$J){$O=array();foreach($J
-as$y=>$X){$y=bracket_escape($y,1);$O[idf_escape($y)]=(preg_match('~char|text~',$p[$y]["type"])||$X!=""?$b->processInput($p[$y],$X):"NULL");}$H=$m->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($_i,$p),!$Vd&&!$eg," ");if(!$H)break;$za+=$g->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$za),$H);}}elseif(!is_string($Sc=get_file("csv_file",true)))$n=upload_error($Sc);elseif(!preg_match('~~u',$Sc))$n='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ya["output"])."&format=".urlencode($_POST["separator"]));$H=true;$qb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Sc,$_e);$za=count($_e[0]);$m->begin();$M=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$K=array();foreach($_e[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$M]*)$M~",$X.$M,$Ae);if(!$y&&!array_diff($Ae[1],$qb)){$qb=$Ae[1];$za--;}else{$O=array();foreach($Ae[1]as$s=>$mb)$O[idf_escape($qb[$s])]=($mb==""&&$p[$qb[$s]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$mb))));$K[]=$O;}}$H=(!$K||$m->insertUpdate($a,$K,$eg));if($H)$H=$m->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$za),$H);$m->rollback();}}}$Ih=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
-page_header('Select'.": $Ih",$n);$O=null;if(isset($Mg["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){if($dd[$X["col"]]&&count($dd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$O.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$O);if(!$f&&support("table"))echo"".'Unable to select the table'.($p?".":": ".error())."\n";else{echo" \n";$E=$_GET["page"];if($E=="last"){$gd=$g->result(count_rows($a,$Z,$Vd,$md));$E=floor(max(0,$gd-1)/$z);}$Yg=$L;$nd=$md;if(!$Yg){$Yg[]="*";$Ab=convert_fields($f,$p,$L);if($Ab)$Yg[]=substr($Ab,2);}foreach($L
-as$y=>$X){$o=$p[idf_unescape($X)];if($o&&($Ga=convert_field($o)))$Yg[$y]="$Ga AS $X";}if(!$Vd&&$Bi){foreach($Bi
-as$y=>$X){$Yg[]=idf_escape($y);if($nd)$nd[]=idf_escape($y);}}$H=$m->select($a,$Yg,$Z,$nd,$uf,$z,$E,true);if(!$H)echo"".error()."\n";else{if($x=="mssql"&&$E)$H->seek($z*$E);$rc=array();echo" \n",(!$md&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?'Status':'Variables');$Pi=($P?show_status():show_variables());if(!$Pi)echo"".'No rows.'."\n";else{echo" \n";foreach($Pi
-as$y=>$X){echo"","".h($y).""," | ".h($X);}echo" | \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Fh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$y)json_row("$y-$C",h($S[$y]));foreach($Fh+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=format_number($S[$y]);json_row("$y-$C",($y=="Rows"&&$X&&$S["Engine"]==($sh=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Fh[$y]))$Fh[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))json_row("$y-$C");}}}foreach($Fh
-as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$l=>$X){json_row("tables-$l",$X);json_row("size-$l",db_size($l));}json_row("");}exit;}else{$Oh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Oh&&!$n&&!$_POST["search"]){$H=true;$He="";if($x=="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"])$H=truncate_tables($_POST["tables"]);$He='Tables have been truncated.';}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$He='Tables have been moved.';}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$He='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$He='Tables have been dropped.';}elseif($x!="sql"){$H=($x=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$He='Tables have been optimized.';}elseif(!$_POST["tables"])$He='No tables.';elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$He.="".h($J["Table"]).": ".h($J["Msg_text"])." ";}queries_redirect(substr(ME,0,-1),$He,$H);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$n,true);if($b->homepage()){if($_GET["ns"]!==""){echo"".'Tables and views'."\n";$Nh=tables_list();if(!$Nh)echo"".'No tables.'."\n";else{echo" \n",script("tableCheck();");}echo''.'Create table'."\n",(support("view")?''.'Create view'."\n":"");if(support("routine")){echo" ".'Routines'."\n";$Qg=routines();if($Qg){echo"\n",'| '.'Name'.' | '.'Type'.' | '.'Return type'." | | \n";odd('');foreach($Qg
-as$J){$C=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo'','| '.h($J["ROUTINE_NAME"]).'',' | '.h($J["ROUTINE_TYPE"]),' | '.h($J["DTD_IDENTIFIER"]),' | '.'Alter'."";}echo" | \n";}echo''.(support("procedure")?''.'Create procedure'.'':'').''.'Create function'."\n";}if(support("sequence")){echo" ".'Sequences'."\n";$eh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($eh){echo"\n","| ".'Name'." | \n";odd('');foreach($eh
-as$X)echo"| ".h($X)."\n";echo" |
|---|
\n";}echo"".'Create sequence'."\n";}if(support("type")){echo" ".'User types'."\n";$Ki=types();if($Ki){echo"\n","| ".'Name'." | \n";odd('');foreach($Ki
-as$X)echo"| ".h($X)."\n";echo" |
|---|
\n";}echo"".'Create type'."\n";}if(support("event")){echo" ".'Events'."\n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","| ".'Name'." | ".'Schedule'." | ".'Start'." | ".'End'." | | \n";foreach($K
-as$J){echo"","| ".h($J["Name"])," | ".($J["Execute at"]?'At given time'." | ".$J["Execute at"]:'Every'." ".$J["Interval value"]." ".$J["Interval field"]." | $J[Starts]")," | $J[Ends]",' | '.'Alter'.'';}echo" | \n";$zc=$g->result("SELECT @@event_scheduler");if($zc&&$zc!="ON")echo"event_scheduler: ".h($zc)."\n";}echo'
'.'Create event'."\n";}if($Nh)echo
-script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer();
\ No newline at end of file
diff --git a/etc/apps/laragon/extras/Changelog.md b/etc/apps/laragon/extras/Changelog.md
deleted file mode 100644
index 3890a134..00000000
--- a/etc/apps/laragon/extras/Changelog.md
+++ /dev/null
@@ -1,198 +0,0 @@
-Change Log
-============================
-### Version 2.0 ###
-
-SimpleAjaxUploader.js:
-
-* Added support for drag and drop file uploads
-* Added `ss.uploadSetup()` method to set default uploader option values (useful for multiple uploader instances)
-* Added `noParams` option to disable the default behavior of appending the file name to the URL query string
-* Numerous code improvements throughout -- bug fixes, memory usage, etc.
-
-Uploader.php
-* Refactored into a single class in accordance with one class, one file
-* Made improvements to error detection and handling
-* Added support for reading the `X-File-Name` header as an alternative to query string parameters for sending file names to the server
-* Set default value of the `$uploadName` property to be `"uploadfile"` for consistency with the examples - 72
-
-### Version 1.11 ###
-* Added support for PHP Session Upload Progress for PHP 5.4+ (APC was deprecated in 5.3)
-* Added `clearQueue()` method which gives the user the ability to clear all files in queue - #62 - (Special thanks to mouse0270 for this one)
-* Fixed multiple file selection bug - #67 - (Special thanks to genintho for this)
-* Fixed bug which could allow form/input elements to be created with invalid name/ID attributes in IE7-9
-
-### Version 1.10.1 ###
-* `iframe` and `form` elements are now created with `document.createElement()` rather than the much slower HTML injection method
-* Removed unused variable from `_uploadIframe()`
-
-### Version 1.10 ###
-* Added `setOptions()` method for setting or changing upload options - #54 - (special thanks to hauru for this)
-* Added `customHeader` option for sending custom request headers - #47 (special thanks to cillosis for this)
-* Updated `ss.parseJSON()` to use a more secure method of manually parsing JSON
-
-### Version 1.9.1 ###
-* `onError()` callback now receives server response as an argument, if it exists, or `false` if it does not - #37 (special thanks to KSDaemon for this)
-
-
-API Change Note: For consistency with the other callbacks, the server response is passed to `onError()` as the next to last argument, directly before the upload button. Therefore, if you use the upload button parameter in `onError()`, you will need to update your code when upgrading.
-
-
-* Switched from Google Closure Compiler to YUI Compressor for minification
-
-### Version 1.9 ###
-* Added CORS support - Learn more
-* Query string parameters for Nginx Upload Progress Module in `_uploadIframe()` are now encoded with `encodeURIComponent()`
-* Upload progress ID keys are now generated prior to each upload instead of on page load
-* Query string parameters passed to `url` are now preserved - #34 (special thanks to Deefjuh for this)
-
-### Version 1.8.2 ###
-* A reference to the button which triggers an upload is now passed as the last argument to the following callbacks: `onAbort()`, `onChange()`, `onSubmit()`, `onComplete()`, `onError()`, `startXHR()`, `endXHR()`, `startNonXHR()`, `endNonXHR()` (can be useful when using multiple upload buttons)
-* Fixed bug which caused some methods to not work if called inside of `startXHR()` or `startNonXHR()`
-* Fixed bug causing undefined variable in IE9 and older if `progressUrl` and `nginxProgressUrl` are not set
-
-### Version 1.8.1 ###
-* Added `destroy()` method for completely removing upload functionality
-* Removed redundant call to `ss.verifyElem()` inside of `rerouteClicks()`
-* Moved browser-specific checks to top of IIFE, as they only need to execute once
-
-### Version 1.8 ###
-SimpleAjaxUploader.js:
-* Added support for Nginx Upload Progress Module
-* Added `setAbortBtn()` method to designate an element as "cancel" button
-* Added `onAbort()` callback function to specify behavior upon manual abort
-* Added `setPctBox()` method to designate an element to be injected with upload progress percentage
-* Switched to a unique ID function that is RFC 4122 version 4 compliant
-* The `button` option now accepts either a single button (element ID string, element, or jQuery object), or an array of buttons. If an array is passed, each element in the array will work as an upload button
-* Upload progress update request keys are now locally generated
-* Fixed bug that was causing `onError()` to be fired twice
-* For consistency with jQuery behavior, any 2xx status code is now handled as a successful response (previously, only `200` and `201` were successful)
-* Upload buttons are now being properly disabled/enabled at correct points
-* Made significant improvements to error handling, particularly with iframe uploads and retrieving server provided progress updates
-* Fixed a number of potential memory leaks for Internet Explorer
-* Regular expressions are now pre-compiled and cached for better performance
-* For server progress tracking, `sizeBox` and `onUpdateFileSize()` are no longer pointlessly set/called again after first progress update is received
-
-uploadProgress.php:
-* Removed functionality for returning upload keys, as RFC 4122 v4 compliant UUIDs are now generated client side
-
-### Version 1.7 ###
-SimpleAjaxUploader.js:
-* Fixed IE6/IE7 memory leak when removing elements without first removing event listeners (issue #21)
-* Fixed possible race condition in which `removeCurrent()` could potentially delete the wrong file from the upload queue
-* Multiple file inputs are now disabled in Safari due to a browser bug that just screws everything up (see: http://stackoverflow.com/q/7231054/1091949)
-* Switched to a smaller, faster process for cross-browser bounding box calculation
-* Updated to faster methods of checking for, adding, and removing element CSS classes
-* Combined `_checkExtension()` with `_checkFile()` to eliminate a function call/reduce code size
-* Combined `_handleIframeResponse()` with `_uploadIframe()` and switched to a more efficient method of getting iframe contents
-* Removed a number of unnecessary/redundant function calls, along with some unnecessary variable copying
-* Updated `ss.verifyElem()` to use the much faster `charAt()` and `substr()` in place of a regex and `slice()`
-* Added separate feature detection for file input `accept` attribute
-
-Uploader.php:
-* Removed unnecessary check of `$allowedExtensions` for `null` value in `handleUpload()`
-* Added `final` keyword to `FileUploadXHR` and `FileUploadPOSTForm` classes and their respective methods to discourage direct use
-
-### Version 1.6.5 ###
-* When using `multipart`, additional data will now also appended to the multipart form.
-* Cleaned up some messy code -- organization, unnecessary variable copying, etc.
-
-### Version 1.6.4 ###
-* Switched from using `setAttribute` to dot notation for setting element properties (some versions of IE don't handle `setAttribute` well)
-* `ss.removeItem()` now uses the faster countdown method to loop through arrays
-* In accordance with W3 standards, `_uploadXhr()` now accepts either a `200 OK` or `201 Created` as a successful response
-* Uploader.php -- the `handleUpload()` method now checks whether the `allowedExtensions` property is `empty` instead of `null`. This prevents an "Invalid file type" error resulting from passing an empty array
-
-### Version 1.6.3 ###
-* Fixed bug which allowed `onComplete()` to be called after JSON parse error
-
-### Version 1.6.2 ###
-* Overhauled error handling to fix a number of issues.
-* Added consistent error types for `onError()` so that the second parameter will be either:
-`parseerror` (bad JSON from server), `transfererror` (xfer error during XHR upload), `servererror` (server response not `200 OK`)
-* Fixed problem with null file size parameter for `endXHR()` callback
-
-### Version 1.6.1 ###
-* Plugin is now wrapped in an IIFE
-* Leading semicolon added to close any previous statement
-* Code is now in strict mode
-* Cleaned up a few messy areas
-
-### Version 1.6 ###
-If the 1.6 release has a theme, it is flexibility. Nearly every update in this release is intended to allow greater flexibility for developers.
-
-* Submitting a file which exceeds `maxSize` or is not an `allowedExtension` no longer triggers an alert, but will instead fire a callback
-* Added `onSizeError()` callback function which fires when a file exceeds the `maxSize` option, if it is set
-* Added `onExtError()` callback which fires when a file is not permitted by the `allowedExtensions` option, if it is set
-* Removed `messages` option and `_errorMsg()`, both of which are no longer used
-* Added new `accept` option, the value of which will be the value of the `accept` file input attribute in supporting browsers. More info.
-* Added new `method` option to allow specifying an HTTP method other than POST
-
-Special thanks to dleffler, devtrends and urcadox for their ideas and feedback.
-
-### Version 1.5.3 ###
-* Added `autoSubmit` check before submitting in `_cycleQueue()`
-* Added check to ensure upload progress server key doesn't exceed 57 characters (max allowable APC key length)
-* `rerouteClicks(element)` can now be used to add additional elements which can be clicked to open file box
-
-### Version 1.5.2 ###
-(This isn't as much a release as it is a signal to update for anyone who may have downloaded version 1.5.1 in the past few hours)
-* Fixed "bug" from 1.5.1 that broke uploader without multiple option enabled
-* Added `queue` option to disable automatic file queuing
-
-### Version 1.5.1 ###
-* Multiple file inputs are now used in browsers with support for File API, thus allowing multiple file selection if `multiple` option is `true`
-* Removed some unnecessary variable copying
-* Added queue system which allows files to be selected and automatically uploaded as others finish
-* Added `getQueueSize()` function to get current number of files waiting in queue
-* Fixed bug in which active upload counter was not properly updating when returning `false` from `startXHR()` and `startNonXHR()`
-* Error messages now incorporate file names
-
-### Version 1.5 ###
-* Added support for multiple file uploading, along with Gmail-style multiple progress bars for tracking each file.
-* Added new `maxSize` option for file size limits, `allowedExtensions` option for file type restrictions. Custom error messages supported for both.
-* Updated `verifyElem()` to use a better method of detecting if an upload button is a jQuery object.
-* Numerous code enhancements throughout - updated error handling, cleaner organization, performance improvements.
-* Patched some memory leaks created by circular references in event handlers.
-
-### Version 1.4.2 ###
-* SimpleAjaxUploader.js - Added `multipart` option to allow multipart form upload instead of binary stream
-* Uploader.php - The check for form uploads is now first in the constructor to accomodate new `multipart` option
-* Uploader.php - Providing an array of valid file extensions is now optional. If not provided, all file types are allowed
-* Added minified version of JS file
-
-### Version 1.4.1 ###
-* Fixed XHR status check logic that could allow false alarm calls to onError callback
-* Removed redundant XHR status check
-* Returning false from a callback no longer clears the file field. Not sure why it ever did to begin with.
-* A status check now occurs prior to progress update requests to prevent potential loop that could be caused by a server error
-* Parsing JSON in older browsers no longer uses `eval` because it's evil
-
-### Version 1.4 ###
-This release includes a major overhaul that adds functionality for implementing cross-browser upload progress support. Through feature detection and abstraction, it is now possible for the `onProgress` callback function to maintain consistent behavior across browsers.
-
-Currently, only PHP (with APC extension) is supported. To use, set the newly added `progressUrl` option to the URL of the included UploadProgress.php script, and `onProgress` will then return upload progress data in Internet Explorer 9 and below.
-
-Note that this added functionality does not affect the behavior of the plugin for those not using PHP, or just not using the feature.
-
-For those not using PHP, a similar result can still be achieved with the `startXH`/`endXHR` and `startNonXHR`/`endNonXHR` callback functions, which are included specifically for defining behavior based on whether XHR uploads are supported.
-
-Also, adding support for other programming languages would certainly be a welcome addition, if anyone is interested in working on that.
-
-Other items:
-
-* Added `onUpdateFileSize` callback function for getting file size in IE9 and below (When server supported progress is enabled)
-* Removed the unneccessary _handleJSON method
-* Added new ss.newXHR method
-* Added extras folder for non-necessary items (i.e., everything but SimpleAjaxUploader.js)
-* Adjusted request headers for XHR uploads
-* Moved support detection for HTML5 File API to constructor so it only executes once
-* Timestamps now appended to URLs to prevent browsers from caching requests
-
-### Version 1.3 ###
-* Returned to version numbering
-* Updated method for parsing JSON
-* Added PHP class for handling file uploads
-* Cleaned up messy areas
-
-### Earlier versions ###
-Prior to version 1.3, I did a pretty horrible job of documenting changes, and, at one point, entirely dispensed with any notion of version control whatsoever. I have since seen the light.
\ No newline at end of file
diff --git a/etc/apps/laragon/extras/README.md b/etc/apps/laragon/extras/README.md
deleted file mode 100644
index 5d327f45..00000000
--- a/etc/apps/laragon/extras/README.md
+++ /dev/null
@@ -1,258 +0,0 @@
-Simple Ajax Uploader
-============================
-
-A Javascript plugin for cross-browser Ajax file uploading. Supports drag and drop, CORS, and multiple file uploading with progress bars. Works in IE7-9, mobile, and all modern browsers.
-
-```javascript
-var uploader = new ss.SimpleUpload({
- button: 'upload-btn', // HTML element used as upload button
- url: '/PathTo/UploadHandler', // URL of server-side upload handler
- name: 'uploadfile' // Parameter name of the uploaded file
-});
-```
-
-### Features ###
-* Cross-browser -- works in IE7+, Firefox, Chrome, Safari, Opera
-* Supports multiple, concurrent file uploads (even in non-HTML5 browsers)
-* Built-in CORS support
-* Drag and drop file uploads (new in v2.0)
-* No flash or external CSS -- a single 6Kb Javascript file (minified and gzipped)
-* Progress bars in all browsers, including IE9 and older. Built-in support for:
- * Nginx Upload Progress Module
- * PHP APC File Upload Progress
- * PHP Session Upload Progress
-* Use any HTML element as the upload button
-* No dependencies - use it with or without jQuery
-* Provides individual callback functions for XHR-supported browsers and for browsers that do not support XHR uploads
-* Ability to pass custom headers in request such as the Authorization header
-
-### How to Use ###
-
-Live Demo
-API Reference
-Upload progress bars in IE9 (and older)
-CORS — Cross-domain file uploading with Simple Ajax Uploader
-
-There are two main ways to use the plugin:
-
-1. Single file uploading - Only one upload allowed at a time. Progress bar is an element that is re-used for each upload.
-2. Multiple file uploading - Allow multiple, concurrent file uploads. Progress bars are created on the fly before each upload.
-
-#### Method 1: Single file uploading (one file at a time) ####
-
-Before each upload, in the `onSubmit()` callback function, the on-page sizeBox and progress elements are assigned specific roles using these two functions:
-
-`setProgressBar(elem)` - Designates an element as the progress bar for an upload.
-`setFileSizeBox(elem)` - Designates an element as the container in which the file size of an uploading file will be inserted.
-
-As a result, when an upload begins, the file size of the upload is inserted into the sizeBox element and the CSS width of the progress element is set to 0%. As the upload progresses, the CSS width percentage of the progress element will be updated accordingly.
-
-This approach of assigning roles to elements provides developers with a great deal of flexibility -- progress indicators can be styled in any way and placed anywhere on the page.
-
-```javascript
-var sizeBox = document.getElementById('sizeBox'), // container for file size info
- progress = document.getElementById('progress'); // the element we're using for a progress bar
-
-var uploader = new ss.SimpleUpload({
- button: 'uploadButton', // file upload button
- url: 'uploadHandler.php', // server side handler
- name: 'uploadfile', // upload parameter name
- progressUrl: 'uploadProgress.php', // enables cross-browser progress support (more info below)
- responseType: 'json',
- allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],
- maxSize: 1024, // kilobytes
- hoverClass: 'ui-state-hover',
- focusClass: 'ui-state-focus',
- disabledClass: 'ui-state-disabled',
- onSubmit: function(filename, extension) {
- this.setFileSizeBox(sizeBox); // designate this element as file size container
- this.setProgressBar(progress); // designate as progress bar
- },
- onComplete: function(filename, response) {
- if (!response) {
- alert(filename + 'upload failed');
- return false;
- }
- // do something with response...
- }
-});
-```
-
-#### Method 2: Multiple file uploads ####
-
-Below is an example of how to implement multiple file uploading with progress bars. A new progress bar is created for each file upload within the `onSubmit()` callback function.
-
-Like in Method 1, the newly created elements are assigned roles using the `setProgressBar()` and `setFileSizeBox()` functions. Unlike the previous example, however, the progress elements are automatically removed when the upload is completed.
-
-```javascript
-var uploader = new ss.SimpleUpload({
- button: 'uploadButton',
- url: 'uploadHandler.php', // server side handler
- progressUrl: 'uploadProgress.php', // enables cross-browser progress support (more info below)
- responseType: 'json',
- name: 'uploadfile',
- multiple: true,
- allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'], // for example, if we were uploading pics
- hoverClass: 'ui-state-hover',
- focusClass: 'ui-state-focus',
- disabledClass: 'ui-state-disabled',
- onSubmit: function(filename, extension) {
- // Create the elements of our progress bar
- var progress = document.createElement('div'), // container for progress bar
- bar = document.createElement('div'), // actual progress bar
- fileSize = document.createElement('div'), // container for upload file size
- wrapper = document.createElement('div'), // container for this progress bar
- progressBox = document.getElementById('progressBox'); // on page container for progress bars
-
- // Assign each element its corresponding class
- progress.className = 'progress';
- bar.className = 'bar';
- fileSize.className = 'size';
- wrapper.className = 'wrapper';
-
- // Assemble the progress bar and add it to the page
- progress.appendChild(bar);
- wrapper.innerHTML = ' '+filename+' '; // filename is passed to onSubmit()
- wrapper.appendChild(fileSize);
- wrapper.appendChild(progress);
- progressBox.appendChild(wrapper); // just an element on the page to hold the progress bars
-
- // Assign roles to the elements of the progress bar
- this.setProgressBar(bar); // will serve as the actual progress bar
- this.setFileSizeBox(fileSize); // display file size beside progress bar
- this.setProgressContainer(wrapper); // designate the containing div to be removed after upload
- },
-
- // Do something after finishing the upload
- // Note that the progress bar will be automatically removed upon completion because everything
- // is encased in the "wrapper", which was designated to be removed with setProgressContainer()
- onComplete: function(filename, response) {
- if (!response) {
- alert(filename + 'upload failed');
- return false;
- }
- // Stuff to do after finishing an upload...
- }
-});
-```
-
-For multiple file uploads, we use an additional function: `setProgressContainer(elem)`. This function designates an element to be removed from the DOM after the upload is completed.
-
-In the example, the element set to be removed with `setProgressContainer()` is the outer container for the progress elements. As a result, progress bars will be removed from the DOM after each upload is completed.
-
-### Cross-Browser Helper Functions ###
-
-To ease the pain of supporting older browsers, the plugin includes a set of callback functions which allow specific behavior to be defined based on whether the user's browser supports XHR uploads/HTML5 File API:
-
-startXHR(filename, fileSize) - Called prior to upload -- only in browsers that support XHR uploads
-endXHR(filename) - Called after upload is completed -- only in browsers that support XHR uploads
-startNonXHR(filename) - Called prior to upload -- only in browsers that do not support XHR uploads
-endNonXHR(filename) - Called after upload is completed -- only in browsers that do not support XHR uploads
-
-A common use case is to show an upload progress bar in browsers that support the progress event while displaying an animated GIF in older browsers:
-
-```javascript
-
-var progress = document.getElementById('progress'), // progress bar
- loaderImg = document.getElementById('loaderImg'); // "loading" animated GIF
-
-var uploader = new ss.SimpleUpload({
- button: 'uploadButton',
- url: 'uploadHandler.php', // server side handler
- responseType: 'json',
- name: 'uploadfile',
- hoverClass: 'ui-state-hover',
- focusClass: 'ui-state-focus',
- disabledClass: 'ui-state-disabled',
- startXHR: function(filename, size) {
- progress.style.display = 'inline-block'; // show progress bar
- this.setProgressBar(progress); // designate as progress bar
- },
- endXHR: function(filename) {
- progress.style.display = 'none'; // hide progress bar
- },
- startNonXHR: function(filename) {
- loaderImg.style.display = 'inline-block'; // show animated GIF
- },
- endNonXHR: function(filename) {
- loaderImg.style.display = 'none'; // hide animated GIF
- }
-});
-```
-
-Returning false from startXHR() and startNonXHR() will prevent the upload from starting, just as it does with onSubmit() and onChange().
-
-### Server-side file handling ###
-Files are uploaded by POST as either raw form data or regular multipart/form-data, depending on the browser.
-
-### Using Uploader.php ###
-
-Note: This PHP class is included only for convenience. It is not required to use PHP with Simple Ajax Uploader. The plugin is agnostic to server configuration, so use any language you prefer.
-
-```php
-handleUpload($upload_dir, $valid_extensions);
-
-if (!$result) {
- echo json_encode(array('success' => false, 'msg' => $Upload->getErrorMsg()));
-} else {
- echo json_encode(array('success' => true, 'file' => $Upload->getFileName()));
-}
-```
-
-You can also save the uploaded file with a different name by setting the `newFileName` property:
-
-```php
-$Upload = new FileUpload('uploadfile');
-$ext = $Upload->getExtension(); // Get the extension of the uploaded file
-$Upload->newFileName = 'customFileName.'.$ext;
-$result = $Upload->handleUpload($upload_dir, $valid_extensions);
-```
-
-To access the newly uploaded file, use the `getSavedFile()` method to get the file's path after the upload is completed:
-```php
-$Upload = new FileUpload('uploadfile');
-$result = $Upload->handleUpload($upload_dir, $valid_extensions);
-
-if ($result) {
- $path = $Upload->getSavedFile();
- $imgsize = getimagesize($path);
- // image resizing stuff...
-}
-```
-
-### Passing Custom Headers ###
-
-```javascript
-var uploader = new ss.SimpleUpload({
- customHeaders: {'Authorization': 'my-access-token'},
- ...
-});
-
-```
-
-### Drag and Drop ###
-
-Enable drag and drop uploading by passing an element to the `dropzone` option to serve as the drop zone:
-
-```javascript
-var uploader = new ss.SimpleUpload({
- dropzone: 'dragbox', // ID of element to be the drop zone
- url: 'uploadHandler.php',
- name: 'uploadfile',
- responseType: 'json',
- onComplete: function(filename, response) {
- // do something with response...
- }
-});
-```
-
-
-### License ###
-Released under the MIT license.
\ No newline at end of file
diff --git a/etc/apps/laragon/extras/SimpleAjaxUploader.js b/etc/apps/laragon/extras/SimpleAjaxUploader.js
deleted file mode 100644
index f736fbbf..00000000
--- a/etc/apps/laragon/extras/SimpleAjaxUploader.js
+++ /dev/null
@@ -1,1857 +0,0 @@
-/**
- * Simple Ajax Uploader
- * Version 2.0
- * https://github.com/LPology/Simple-Ajax-Uploader
- *
- * Copyright 2012-2015 LPology, LLC
- * Released under the MIT license
- */
-
-;(function( window, document, undefined ) {
-
- var ss = window.ss || {},
-
- // ss.trim()
- rLWhitespace = /^\s+/,
- rTWhitespace = /\s+$/,
-
- // ss.getUID
- uidReplace = /[xy]/g,
-
- // ss.getFilename()
- rPath = /.*(\/|\\)/,
-
- // ss.getExt()
- rExt = /.*[.]/,
-
- // ss.hasClass()
- rHasClass = /[\t\r\n]/g,
-
- // Check for Safari -- it doesn't like multi file uploading. At all.
- // http://stackoverflow.com/a/9851769/1091949
- isSafari = Object.prototype.toString.call( window.HTMLElement ).indexOf( 'Constructor' ) > 0,
-
- isIE7 = ( navigator.userAgent.indexOf('MSIE 7') !== -1 ),
-
- // Check whether XHR uploads are supported
- input = document.createElement( 'input' ),
-
- XhrOk;
-
- input.type = 'file';
-
- XhrOk = ( 'multiple' in input &&
- typeof File !== 'undefined' &&
- typeof ( new XMLHttpRequest() ).upload !== 'undefined' );
-
-
-/**
-* Converts object to query string
-*/
-ss.obj2string = function( obj, prefix ) {
- "use strict";
-
- var str = [];
-
- for ( var prop in obj ) {
- if ( obj.hasOwnProperty( prop ) ) {
- var k = prefix ? prefix + '[' + prop + ']' : prop, v = obj[prop];
- str.push( typeof v === 'object' ?
- ss.obj2string( v, k ) :
- encodeURIComponent( k ) + '=' + encodeURIComponent( v ) );
- }
- }
-
- return str.join( '&' );
-};
-
-/**
-* Copies all missing properties from second object to first object
-*/
-ss.extendObj = function( first, second ) {
- "use strict";
-
- for ( var prop in second ) {
- if ( second.hasOwnProperty( prop ) ) {
- first[prop] = second[prop];
- }
- }
-};
-
-ss.addEvent = function( elem, type, fn ) {
- "use strict";
-
- if ( elem.addEventListener ) {
- elem.addEventListener( type, fn, false );
-
- } else {
- elem.attachEvent( 'on' + type, fn );
- }
- return function() {
- ss.removeEvent( elem, type, fn );
- };
-};
-
-ss.removeEvent = function( elem, type, fn ) {
- "use strict";
-
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, fn, false );
-
- } else {
- elem.detachEvent( 'on' + type, fn );
- }
-};
-
-ss.newXHR = function() {
- "use strict";
-
- if ( typeof XMLHttpRequest !== 'undefined' ) {
- return new window.XMLHttpRequest();
-
- } else if ( window.ActiveXObject ) {
- try {
- return new window.ActiveXObject( 'Microsoft.XMLHTTP' );
- } catch ( err ) {
- return false;
- }
- }
-};
-
-ss.getIFrame = function() {
- "use strict";
-
- var id = ss.getUID(),
- iframe;
-
- // IE7 can only create an iframe this way, all others are the other way
- if ( isIE7 ) {
- iframe = document.createElement(' | |